/*! For license information please see 2.9ab1863c.chunk.js.LICENSE.txt */
(this.webpackJsonptest=this.webpackJsonptest||[]).push([[2],[function(g,I,e){"use strict";g.exports=e(1154)},function(g,I,e){(function(){var g,t,C,Q;for(g in I.EncodeStream=e(1396),I.DecodeStream=e(532),I.Array=e(735),I.LazyArray=e(1414),I.Bitfield=e(1415),I.Boolean=e(1416),I.Buffer=e(1417),I.Enum=e(1418),I.Optional=e(1419),I.Reserved=e(1420),I.String=e(1421),I.Struct=e(736),I.VersionedStruct=e(1422),C=e(287))t=C[g],I[g]=t;for(g in Q=e(1423))t=Q[g],I[g]=t}).call(this)},function(g,I,e){"use strict";e.d(I,"a",(function(){return Q}));var t=e(13);function C(g,I){var e=Object.keys(g);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(g);I&&(t=t.filter((function(I){return Object.getOwnPropertyDescriptor(g,I).enumerable}))),e.push.apply(e,t)}return e}function Q(g){for(var I=1;I<arguments.length;I++){var e=null!=arguments[I]?arguments[I]:{};I%2?C(Object(e),!0).forEach((function(I){Object(t.a)(g,I,e[I])})):Object.getOwnPropertyDescriptors?Object.defineProperties(g,Object.getOwnPropertyDescriptors(e)):C(Object(e)).forEach((function(I){Object.defineProperty(g,I,Object.getOwnPropertyDescriptor(e,I))}))}return g}},function(g,I,e){"use strict";e.d(I,"a",(function(){return A})),e.d(I,"b",(function(){return Y})),e.d(I,"c",(function(){return O})),e.d(I,"d",(function(){return P}));var t=e(0),C=e.n(t),Q=e(4),F=e.n(Q),B=C.a.createContext(null);var n=function(g){g()},U={notify:function(){}};function s(){var g=n,I=[],e=[];return{clear:function(){e=null,I=null},notify:function(){var t=I=e;g((function(){for(var g=0;g<t.length;g++)t[g]()}))},get:function(){return e},subscribe:function(g){var t=!0;return e===I&&(e=I.slice()),e.push(g),function(){t&&null!==I&&(t=!1,e===I&&(e=I.slice()),e.splice(e.indexOf(g),1))}}}}var i=function(){function g(g,I){this.store=g,this.parentSub=I,this.unsubscribe=null,this.listeners=U,this.handleChangeWrapper=this.handleChangeWrapper.bind(this)}var I=g.prototype;return I.addNestedSub=function(g){return this.trySubscribe(),this.listeners.subscribe(g)},I.notifyNestedSubs=function(){this.listeners.notify()},I.handleChangeWrapper=function(){this.onStateChange&&this.onStateChange()},I.isSubscribed=function(){return Boolean(this.unsubscribe)},I.trySubscribe=function(){this.unsubscribe||(this.unsubscribe=this.parentSub?this.parentSub.addNestedSub(this.handleChangeWrapper):this.store.subscribe(this.handleChangeWrapper),this.listeners=s())},I.tryUnsubscribe=function(){this.unsubscribe&&(this.unsubscribe(),this.unsubscribe=null,this.listeners.clear(),this.listeners=U)},g}();function c(g){var I=g.store,e=g.context,Q=g.children,F=Object(t.useMemo)((function(){var g=new i(I);return g.onStateChange=g.notifyNestedSubs,{store:I,subscription:g}}),[I]),n=Object(t.useMemo)((function(){return I.getState()}),[I]);Object(t.useEffect)((function(){var g=F.subscription;return g.trySubscribe(),n!==I.getState()&&g.notifyNestedSubs(),function(){g.tryUnsubscribe(),g.onStateChange=null}}),[F,n]);var U=e||B;return C.a.createElement(U.Provider,{value:F},Q)}c.propTypes={store:F.a.shape({subscribe:F.a.func.isRequired,dispatch:F.a.func.isRequired,getState:F.a.func.isRequired}),context:F.a.object,children:F.a.any};var A=c;function l(){return(l=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}function a(g,I){if(null==g)return{};var e,t,C={},Q=Object.keys(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||(C[e]=g[e]);return C}var r=e(129),o=e.n(r),d=e(220),u=e.n(d),y=e(814),b="undefined"!==typeof window&&"undefined"!==typeof window.document&&"undefined"!==typeof window.document.createElement?t.useLayoutEffect:t.useEffect,Z=[],m=[null,null];function x(g,I){var e=g[1];return[I.payload,e+1]}var R=function(){return[null,0]};function S(g,I){void 0===I&&(I={});var e=I,Q=e.getDisplayName,F=void 0===Q?function(g){return"ConnectAdvanced("+g+")"}:Q,n=e.methodName,U=void 0===n?"connectAdvanced":n,s=e.renderCountProp,c=void 0===s?void 0:s,A=e.shouldHandleStateChanges,r=void 0===A||A,d=e.storeKey,S=void 0===d?"store":d,G=e.withRef,L=void 0!==G&&G,V=e.forwardRef,h=void 0!==V&&V,D=e.context,p=void 0===D?B:D,E=a(e,["getDisplayName","methodName","renderCountProp","shouldHandleStateChanges","storeKey","withRef","forwardRef","context"]);u()(void 0===c,"renderCountProp is removed. render counting is built into the latest React Dev Tools profiling extension"),u()(!L,"withRef is removed. To access the wrapped instance, use a ref on the connected component");u()("store"===S,"storeKey has been removed and does not do anything. To use a custom Redux store for specific components, create a custom React context with React.createContext(), and pass the context object to React Redux's Provider and specific components like: <Provider context={MyContext}><ConnectedComponent context={MyContext} /></Provider>. You may also pass a {context : MyContext} option to connect");var N=p;return function(I){var e=I.displayName||I.name||"Component",Q=F(e),B=l({},E,{getDisplayName:F,methodName:U,renderCountProp:c,shouldHandleStateChanges:r,storeKey:S,displayName:Q,wrappedComponentName:e,WrappedComponent:I}),n=E.pure;var s=n?t.useMemo:function(g){return g()};function A(e){var F=Object(t.useMemo)((function(){var g=e.forwardedRef,I=a(e,["forwardedRef"]);return[e.context,g,I]}),[e]),n=F[0],U=F[1],c=F[2],A=Object(t.useMemo)((function(){return n&&n.Consumer&&Object(y.isContextConsumer)(C.a.createElement(n.Consumer,null))?n:N}),[n,N]),o=Object(t.useContext)(A),d=Boolean(e.store)&&Boolean(e.store.getState)&&Boolean(e.store.dispatch),S=Boolean(o)&&Boolean(o.store);u()(d||S,'Could not find "store" in the context of "'+Q+'". Either wrap the root component in a <Provider>, or pass a custom React context provider to <Provider> and the corresponding React context consumer to '+Q+" in connect options.");var G=d?e.store:o.store,L=Object(t.useMemo)((function(){return function(I){return g(I.dispatch,B)}(G)}),[G]),V=Object(t.useMemo)((function(){if(!r)return m;var g=new i(G,d?null:o.subscription),I=g.notifyNestedSubs.bind(g);return[g,I]}),[G,d,o]),h=V[0],D=V[1],p=Object(t.useMemo)((function(){return d?o:l({},o,{subscription:h})}),[d,o,h]),E=Object(t.useReducer)(x,Z,R),W=E[0][0],f=E[1];if(W&&W.error)throw W.error;var X=Object(t.useRef)(),J=Object(t.useRef)(c),v=Object(t.useRef)(),k=Object(t.useRef)(!1),H=s((function(){return v.current&&c===J.current?v.current:L(G.getState(),c)}),[G,W,c]);b((function(){J.current=c,X.current=H,k.current=!1,v.current&&(v.current=null,D())})),b((function(){if(r){var g=!1,I=null,e=function(){if(!g){var e,t,C=G.getState();try{e=L(C,J.current)}catch(Q){t=Q,I=Q}t||(I=null),e===X.current?k.current||D():(X.current=e,v.current=e,k.current=!0,f({type:"STORE_UPDATED",payload:{error:t}}))}};h.onStateChange=e,h.trySubscribe(),e();return function(){if(g=!0,h.tryUnsubscribe(),h.onStateChange=null,I)throw I}}}),[G,h,L]);var M=Object(t.useMemo)((function(){return C.a.createElement(I,l({},H,{ref:U}))}),[U,I,H]);return Object(t.useMemo)((function(){return r?C.a.createElement(A.Provider,{value:p},M):M}),[A,M,p])}var d=n?C.a.memo(A):A;if(d.WrappedComponent=I,d.displayName=Q,h){var G=C.a.forwardRef((function(g,I){return C.a.createElement(d,l({},g,{forwardedRef:I}))}));return G.displayName=Q,G.WrappedComponent=I,o()(G,I)}return o()(d,I)}}var G=Object.prototype.hasOwnProperty;function L(g,I){return g===I?0!==g||0!==I||1/g===1/I:g!==g&&I!==I}function V(g,I){if(L(g,I))return!0;if("object"!==typeof g||null===g||"object"!==typeof I||null===I)return!1;var e=Object.keys(g),t=Object.keys(I);if(e.length!==t.length)return!1;for(var C=0;C<e.length;C++)if(!G.call(I,e[C])||!L(g[e[C]],I[e[C]]))return!1;return!0}var h=e(169);function D(g){return function(I,e){var t=g(I,e);function C(){return t}return C.dependsOnOwnProps=!1,C}}function p(g){return null!==g.dependsOnOwnProps&&void 0!==g.dependsOnOwnProps?Boolean(g.dependsOnOwnProps):1!==g.length}function E(g,I){return function(I,e){e.displayName;var t=function(g,I){return t.dependsOnOwnProps?t.mapToProps(g,I):t.mapToProps(g)};return t.dependsOnOwnProps=!0,t.mapToProps=function(I,e){t.mapToProps=g,t.dependsOnOwnProps=p(g);var C=t(I,e);return"function"===typeof C&&(t.mapToProps=C,t.dependsOnOwnProps=p(C),C=t(I,e)),C},t}}var N=[function(g){return"function"===typeof g?E(g):void 0},function(g){return g?void 0:D((function(g){return{dispatch:g}}))},function(g){return g&&"object"===typeof g?D((function(I){return Object(h.b)(g,I)})):void 0}];var W=[function(g){return"function"===typeof g?E(g):void 0},function(g){return g?void 0:D((function(){return{}}))}];function f(g,I,e){return l({},e,{},g,{},I)}var X=[function(g){return"function"===typeof g?function(g){return function(I,e){e.displayName;var t,C=e.pure,Q=e.areMergedPropsEqual,F=!1;return function(I,e,B){var n=g(I,e,B);return F?C&&Q(n,t)||(t=n):(F=!0,t=n),t}}}(g):void 0},function(g){return g?void 0:function(){return f}}];function J(g,I,e,t){return function(C,Q){return e(g(C,Q),I(t,Q),Q)}}function v(g,I,e,t,C){var Q,F,B,n,U,s=C.areStatesEqual,i=C.areOwnPropsEqual,c=C.areStatePropsEqual,A=!1;function l(C,A){var l=!i(A,F),a=!s(C,Q);return Q=C,F=A,l&&a?(B=g(Q,F),I.dependsOnOwnProps&&(n=I(t,F)),U=e(B,n,F)):l?(g.dependsOnOwnProps&&(B=g(Q,F)),I.dependsOnOwnProps&&(n=I(t,F)),U=e(B,n,F)):a?function(){var I=g(Q,F),t=!c(I,B);return B=I,t&&(U=e(B,n,F)),U}():U}return function(C,s){return A?l(C,s):(B=g(Q=C,F=s),n=I(t,F),U=e(B,n,F),A=!0,U)}}function k(g,I){var e=I.initMapStateToProps,t=I.initMapDispatchToProps,C=I.initMergeProps,Q=a(I,["initMapStateToProps","initMapDispatchToProps","initMergeProps"]),F=e(g,Q),B=t(g,Q),n=C(g,Q);return(Q.pure?v:J)(F,B,n,g,Q)}function H(g,I,e){for(var t=I.length-1;t>=0;t--){var C=I[t](g);if(C)return C}return function(I,t){throw new Error("Invalid value of type "+typeof g+" for "+e+" argument when connecting component "+t.wrappedComponentName+".")}}function M(g,I){return g===I}var Y=function(g){var I=void 0===g?{}:g,e=I.connectHOC,t=void 0===e?S:e,C=I.mapStateToPropsFactories,Q=void 0===C?W:C,F=I.mapDispatchToPropsFactories,B=void 0===F?N:F,n=I.mergePropsFactories,U=void 0===n?X:n,s=I.selectorFactory,i=void 0===s?k:s;return function(g,I,e,C){void 0===C&&(C={});var F=C,n=F.pure,s=void 0===n||n,c=F.areStatesEqual,A=void 0===c?M:c,r=F.areOwnPropsEqual,o=void 0===r?V:r,d=F.areStatePropsEqual,u=void 0===d?V:d,y=F.areMergedPropsEqual,b=void 0===y?V:y,Z=a(F,["pure","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","areMergedPropsEqual"]),m=H(g,Q,"mapStateToProps"),x=H(I,B,"mapDispatchToProps"),R=H(e,U,"mergeProps");return t(i,l({methodName:"connect",getDisplayName:function(g){return"Connect("+g+")"},shouldHandleStateChanges:Boolean(g),initMapStateToProps:m,initMapDispatchToProps:x,initMergeProps:R,pure:s,areStatesEqual:A,areOwnPropsEqual:o,areStatePropsEqual:u,areMergedPropsEqual:b},Z))}}();function w(){var g=Object(t.useContext)(B);return u()(g,"could not find react-redux context value; please ensure the component is wrapped in a <Provider>"),g}function T(g){void 0===g&&(g=B);var I=g===B?w:function(){return Object(t.useContext)(g)};return function(){return I().store}}var z=T();var O=function(g){void 0===g&&(g=B);var I=g===B?z:T(g);return function(){return I().dispatch}}(),K=function(g,I){return g===I};var j,P=function(g){void 0===g&&(g=B);var I=g===B?w:function(){return Object(t.useContext)(g)};return function(g,e){void 0===e&&(e=K),u()(g,"You must pass a selector to useSelectors");var C=I();return function(g,I,e,C){var Q,F=Object(t.useReducer)((function(g){return g+1}),0)[1],B=Object(t.useMemo)((function(){return new i(e,C)}),[e,C]),n=Object(t.useRef)(),U=Object(t.useRef)(),s=Object(t.useRef)();try{Q=g!==U.current||n.current?g(e.getState()):s.current}catch(A){var c="An error occurred while selecting the store state: "+A.message+".";throw n.current&&(c+="\nThe error may be correlated with this previous error:\n"+n.current.stack+"\n\nOriginal stack trace:"),new Error(c)}return b((function(){U.current=g,s.current=Q,n.current=void 0})),b((function(){function g(){try{var g=U.current(e.getState());if(I(g,s.current))return;s.current=g}catch(A){n.current=A}F({})}return B.onStateChange=g,B.trySubscribe(),g(),function(){return B.tryUnsubscribe()}}),[e,B]),Q}(g,e,C.store,C.subscription)}}(),_=e(42);j=_.unstable_batchedUpdates,n=j},function(g,I,e){g.exports=e(1162)()},function(g,I,e){"use strict";function t(){return(t=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}e.d(I,"a",(function(){return t}))},function(g,I,e){"use strict";function t(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}e.d(I,"a",(function(){return t}))},function(g,I,e){"use strict";function t(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}function C(g,I,e){return I&&t(g.prototype,I),e&&t(g,e),g}e.d(I,"a",(function(){return C}))},function(g,I,e){"use strict";function t(g){return(t=Object.setPrototypeOf?Object.getPrototypeOf:function(g){return g.__proto__||Object.getPrototypeOf(g)})(g)}function C(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(g){return!1}}e.d(I,"a",(function(){return n}));var Q=e(813),F=e(246);function B(g,I){return!I||"object"!==Object(Q.a)(I)&&"function"!==typeof I?Object(F.a)(g):I}function n(g){return function(){var I,e=t(g);if(C()){var Q=t(this).constructor;I=Reflect.construct(e,arguments,Q)}else I=e.apply(this,arguments);return B(this,I)}}},function(g,I,e){"use strict";function t(g,I){return(t=Object.setPrototypeOf||function(g,I){return g.__proto__=I,g})(g,I)}function C(g,I){if("function"!==typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function");g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,writable:!0,configurable:!0}}),I&&t(g,I)}e.d(I,"a",(function(){return C}))},function(g,I,e){g.exports=e(1160)},function(g,I,e){"use strict";e.d(I,"b",(function(){return C})),e.d(I,"a",(function(){return Q})),e.d(I,"d",(function(){return F})),e.d(I,"g",(function(){return B})),e.d(I,"c",(function(){return n})),e.d(I,"e",(function(){return U})),e.d(I,"f",(function(){return s}));var t=function(g,I){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(g,I){g.__proto__=I}||function(g,I){for(var e in I)I.hasOwnProperty(e)&&(g[e]=I[e])})(g,I)};function C(g,I){function e(){this.constructor=g}t(g,I),g.prototype=null===I?Object.create(I):(e.prototype=I.prototype,new e)}var Q=function(){return(Q=Object.assign||function(g){for(var I,e=1,t=arguments.length;e<t;e++)for(var C in I=arguments[e])Object.prototype.hasOwnProperty.call(I,C)&&(g[C]=I[C]);return g}).apply(this,arguments)};function F(g,I){var e={};for(var t in g)Object.prototype.hasOwnProperty.call(g,t)&&I.indexOf(t)<0&&(e[t]=g[t]);if(null!=g&&"function"===typeof Object.getOwnPropertySymbols){var C=0;for(t=Object.getOwnPropertySymbols(g);C<t.length;C++)I.indexOf(t[C])<0&&Object.prototype.propertyIsEnumerable.call(g,t[C])&&(e[t[C]]=g[t[C]])}return e}function B(g){var I="function"===typeof Symbol&&Symbol.iterator,e=I&&g[I],t=0;if(e)return e.call(g);if(g&&"number"===typeof g.length)return{next:function(){return g&&t>=g.length&&(g=void 0),{value:g&&g[t++],done:!g}}};throw new TypeError(I?"Object is not iterable.":"Symbol.iterator is not defined.")}function n(g,I){var e="function"===typeof Symbol&&g[Symbol.iterator];if(!e)return g;var t,C,Q=e.call(g),F=[];try{for(;(void 0===I||I-- >0)&&!(t=Q.next()).done;)F.push(t.value)}catch(B){C={error:B}}finally{try{t&&!t.done&&(e=Q.return)&&e.call(Q)}finally{if(C)throw C.error}}return F}function U(){for(var g=[],I=0;I<arguments.length;I++)g=g.concat(n(arguments[I]));return g}function s(){for(var g=0,I=0,e=arguments.length;I<e;I++)g+=arguments[I].length;var t=Array(g),C=0;for(I=0;I<e;I++)for(var Q=arguments[I],F=0,B=Q.length;F<B;F++,C++)t[C]=Q[F];return t}},function(g,I,e){"use strict";function t(g,I,e,t,C,Q,F){try{var B=g[Q](F),n=B.value}catch(U){return void e(U)}B.done?I(n):Promise.resolve(n).then(t,C)}function C(g){return function(){var I=this,e=arguments;return new Promise((function(C,Q){var F=g.apply(I,e);function B(g){t(F,C,Q,B,n,"next",g)}function n(g){t(F,C,Q,B,n,"throw",g)}B(void 0)}))}}e.d(I,"a",(function(){return C}))},function(g,I,e){"use strict";function t(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}e.d(I,"a",(function(){return t}))},function(g,I,e){"use strict";function t(g){var I,e,C="";if("string"===typeof g||"number"===typeof g)C+=g;else if("object"===typeof g)if(Array.isArray(g))for(I=0;I<g.length;I++)g[I]&&(e=t(g[I]))&&(C&&(C+=" "),C+=e);else for(I in g)g[I]&&(C&&(C+=" "),C+=I);return C}e.r(I),I.default=function(){for(var g,I,e=0,C="";e<arguments.length;)(g=arguments[e++])&&(I=t(g))&&(C&&(C+=" "),C+=I);return C}},function(g,I,e){(function(g){g.exports=function(){"use strict";var I,e;function t(){return I.apply(null,arguments)}function C(g){return g instanceof Array||"[object Array]"===Object.prototype.toString.call(g)}function Q(g){return null!=g&&"[object Object]"===Object.prototype.toString.call(g)}function F(g){return void 0===g}function B(g){return"number"===typeof g||"[object Number]"===Object.prototype.toString.call(g)}function n(g){return g instanceof Date||"[object Date]"===Object.prototype.toString.call(g)}function U(g,I){var e,t=[];for(e=0;e<g.length;++e)t.push(I(g[e],e));return t}function s(g,I){return Object.prototype.hasOwnProperty.call(g,I)}function i(g,I){for(var e in I)s(I,e)&&(g[e]=I[e]);return s(I,"toString")&&(g.toString=I.toString),s(I,"valueOf")&&(g.valueOf=I.valueOf),g}function c(g,I,e,t){return mI(g,I,e,t,!0).utc()}function A(g){return null==g._pf&&(g._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}),g._pf}function l(g){if(null==g._isValid){var I=A(g),t=e.call(I.parsedDateParts,(function(g){return null!=g})),C=!isNaN(g._d.getTime())&&I.overflow<0&&!I.empty&&!I.invalidMonth&&!I.invalidWeekday&&!I.weekdayMismatch&&!I.nullInput&&!I.invalidFormat&&!I.userInvalidated&&(!I.meridiem||I.meridiem&&t);if(g._strict&&(C=C&&0===I.charsLeftOver&&0===I.unusedTokens.length&&void 0===I.bigHour),null!=Object.isFrozen&&Object.isFrozen(g))return C;g._isValid=C}return g._isValid}function a(g){var I=c(NaN);return null!=g?i(A(I),g):A(I).userInvalidated=!0,I}e=Array.prototype.some?Array.prototype.some:function(g){for(var I=Object(this),e=I.length>>>0,t=0;t<e;t++)if(t in I&&g.call(this,I[t],t,I))return!0;return!1};var r=t.momentProperties=[];function o(g,I){var e,t,C;if(F(I._isAMomentObject)||(g._isAMomentObject=I._isAMomentObject),F(I._i)||(g._i=I._i),F(I._f)||(g._f=I._f),F(I._l)||(g._l=I._l),F(I._strict)||(g._strict=I._strict),F(I._tzm)||(g._tzm=I._tzm),F(I._isUTC)||(g._isUTC=I._isUTC),F(I._offset)||(g._offset=I._offset),F(I._pf)||(g._pf=A(I)),F(I._locale)||(g._locale=I._locale),r.length>0)for(e=0;e<r.length;e++)F(C=I[t=r[e]])||(g[t]=C);return g}var d=!1;function u(g){o(this,g),this._d=new Date(null!=g._d?g._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===d&&(d=!0,t.updateOffset(this),d=!1)}function y(g){return g instanceof u||null!=g&&null!=g._isAMomentObject}function b(g){return g<0?Math.ceil(g)||0:Math.floor(g)}function Z(g){var I=+g,e=0;return 0!==I&&isFinite(I)&&(e=b(I)),e}function m(g,I,e){var t,C=Math.min(g.length,I.length),Q=Math.abs(g.length-I.length),F=0;for(t=0;t<C;t++)(e&&g[t]!==I[t]||!e&&Z(g[t])!==Z(I[t]))&&F++;return F+Q}function x(g){!1===t.suppressDeprecationWarnings&&"undefined"!==typeof console&&console.warn&&console.warn("Deprecation warning: "+g)}function R(g,I){var e=!0;return i((function(){if(null!=t.deprecationHandler&&t.deprecationHandler(null,g),e){for(var C,Q=[],F=0;F<arguments.length;F++){if(C="","object"===typeof arguments[F]){for(var B in C+="\n["+F+"] ",arguments[0])C+=B+": "+arguments[0][B]+", ";C=C.slice(0,-2)}else C=arguments[F];Q.push(C)}x(g+"\nArguments: "+Array.prototype.slice.call(Q).join("")+"\n"+(new Error).stack),e=!1}return I.apply(this,arguments)}),I)}var S,G={};function L(g,I){null!=t.deprecationHandler&&t.deprecationHandler(g,I),G[g]||(x(I),G[g]=!0)}function V(g){return g instanceof Function||"[object Function]"===Object.prototype.toString.call(g)}function h(g,I){var e,t=i({},g);for(e in I)s(I,e)&&(Q(g[e])&&Q(I[e])?(t[e]={},i(t[e],g[e]),i(t[e],I[e])):null!=I[e]?t[e]=I[e]:delete t[e]);for(e in g)s(g,e)&&!s(I,e)&&Q(g[e])&&(t[e]=i({},t[e]));return t}function D(g){null!=g&&this.set(g)}t.suppressDeprecationWarnings=!1,t.deprecationHandler=null,S=Object.keys?Object.keys:function(g){var I,e=[];for(I in g)s(g,I)&&e.push(I);return e};var p={};function E(g,I){var e=g.toLowerCase();p[e]=p[e+"s"]=p[I]=g}function N(g){return"string"===typeof g?p[g]||p[g.toLowerCase()]:void 0}function W(g){var I,e,t={};for(e in g)s(g,e)&&(I=N(e))&&(t[I]=g[e]);return t}var f={};function X(g,I){f[g]=I}function J(g,I,e){var t=""+Math.abs(g),C=I-t.length;return(g>=0?e?"+":"":"-")+Math.pow(10,Math.max(0,C)).toString().substr(1)+t}var v=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,k=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,H={},M={};function Y(g,I,e,t){var C=t;"string"===typeof t&&(C=function(){return this[t]()}),g&&(M[g]=C),I&&(M[I[0]]=function(){return J(C.apply(this,arguments),I[1],I[2])}),e&&(M[e]=function(){return this.localeData().ordinal(C.apply(this,arguments),g)})}function w(g,I){return g.isValid()?(I=T(I,g.localeData()),H[I]=H[I]||function(g){var I,e,t,C=g.match(v);for(I=0,e=C.length;I<e;I++)M[C[I]]?C[I]=M[C[I]]:C[I]=(t=C[I]).match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"");return function(I){var t,Q="";for(t=0;t<e;t++)Q+=V(C[t])?C[t].call(I,g):C[t];return Q}}(I),H[I](g)):g.localeData().invalidDate()}function T(g,I){var e=5;function t(g){return I.longDateFormat(g)||g}for(k.lastIndex=0;e>=0&&k.test(g);)g=g.replace(k,t),k.lastIndex=0,e-=1;return g}var z=/\d/,O=/\d\d/,K=/\d{3}/,j=/\d{4}/,P=/[+-]?\d{6}/,_=/\d\d?/,q=/\d\d\d\d?/,$=/\d\d\d\d\d\d?/,gg=/\d{1,3}/,Ig=/\d{1,4}/,eg=/[+-]?\d{1,6}/,tg=/\d+/,Cg=/[+-]?\d+/,Qg=/Z|[+-]\d\d:?\d\d/gi,Fg=/Z|[+-]\d\d(?::?\d\d)?/gi,Bg=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,ng={};function Ug(g,I,e){ng[g]=V(I)?I:function(g,t){return g&&e?e:I}}function sg(g,I){return s(ng,g)?ng[g](I._strict,I._locale):new RegExp(ig(g.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,(function(g,I,e,t,C){return I||e||t||C}))))}function ig(g){return g.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var cg={};function Ag(g,I){var e,t=I;for("string"===typeof g&&(g=[g]),B(I)&&(t=function(g,e){e[I]=Z(g)}),e=0;e<g.length;e++)cg[g[e]]=t}function lg(g,I){Ag(g,(function(g,e,t,C){t._w=t._w||{},I(g,t._w,t,C)}))}function ag(g,I,e){null!=I&&s(cg,g)&&cg[g](I,e._a,e,g)}function rg(g){return og(g)?366:365}function og(g){return g%4===0&&g%100!==0||g%400===0}Y("Y",0,0,(function(){var g=this.year();return g<=9999?""+g:"+"+g})),Y(0,["YY",2],0,(function(){return this.year()%100})),Y(0,["YYYY",4],0,"year"),Y(0,["YYYYY",5],0,"year"),Y(0,["YYYYYY",6,!0],0,"year"),E("year","y"),X("year",1),Ug("Y",Cg),Ug("YY",_,O),Ug("YYYY",Ig,j),Ug("YYYYY",eg,P),Ug("YYYYYY",eg,P),Ag(["YYYYY","YYYYYY"],0),Ag("YYYY",(function(g,I){I[0]=2===g.length?t.parseTwoDigitYear(g):Z(g)})),Ag("YY",(function(g,I){I[0]=t.parseTwoDigitYear(g)})),Ag("Y",(function(g,I){I[0]=parseInt(g,10)})),t.parseTwoDigitYear=function(g){return Z(g)+(Z(g)>68?1900:2e3)};var dg,ug=yg("FullYear",!0);function yg(g,I){return function(e){return null!=e?(Zg(this,g,e),t.updateOffset(this,I),this):bg(this,g)}}function bg(g,I){return g.isValid()?g._d["get"+(g._isUTC?"UTC":"")+I]():NaN}function Zg(g,I,e){g.isValid()&&!isNaN(e)&&("FullYear"===I&&og(g.year())&&1===g.month()&&29===g.date()?g._d["set"+(g._isUTC?"UTC":"")+I](e,g.month(),mg(e,g.month())):g._d["set"+(g._isUTC?"UTC":"")+I](e))}function mg(g,I){if(isNaN(g)||isNaN(I))return NaN;var e,t=(I%(e=12)+e)%e;return g+=(I-t)/12,1===t?og(g)?29:28:31-t%7%2}dg=Array.prototype.indexOf?Array.prototype.indexOf:function(g){var I;for(I=0;I<this.length;++I)if(this[I]===g)return I;return-1},Y("M",["MM",2],"Mo",(function(){return this.month()+1})),Y("MMM",0,0,(function(g){return this.localeData().monthsShort(this,g)})),Y("MMMM",0,0,(function(g){return this.localeData().months(this,g)})),E("month","M"),X("month",8),Ug("M",_),Ug("MM",_,O),Ug("MMM",(function(g,I){return I.monthsShortRegex(g)})),Ug("MMMM",(function(g,I){return I.monthsRegex(g)})),Ag(["M","MM"],(function(g,I){I[1]=Z(g)-1})),Ag(["MMM","MMMM"],(function(g,I,e,t){var C=e._locale.monthsParse(g,t,e._strict);null!=C?I[1]=C:A(e).invalidMonth=g}));var xg=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,Rg="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Sg="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");function Gg(g,I,e){var t,C,Q,F=g.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],t=0;t<12;++t)Q=c([2e3,t]),this._shortMonthsParse[t]=this.monthsShort(Q,"").toLocaleLowerCase(),this._longMonthsParse[t]=this.months(Q,"").toLocaleLowerCase();return e?"MMM"===I?-1!==(C=dg.call(this._shortMonthsParse,F))?C:null:-1!==(C=dg.call(this._longMonthsParse,F))?C:null:"MMM"===I?-1!==(C=dg.call(this._shortMonthsParse,F))||-1!==(C=dg.call(this._longMonthsParse,F))?C:null:-1!==(C=dg.call(this._longMonthsParse,F))||-1!==(C=dg.call(this._shortMonthsParse,F))?C:null}function Lg(g,I){var e;if(!g.isValid())return g;if("string"===typeof I)if(/^\d+$/.test(I))I=Z(I);else if(!B(I=g.localeData().monthsParse(I)))return g;return e=Math.min(g.date(),mg(g.year(),I)),g._d["set"+(g._isUTC?"UTC":"")+"Month"](I,e),g}function Vg(g){return null!=g?(Lg(this,g),t.updateOffset(this,!0),this):bg(this,"Month")}var hg=Bg,Dg=Bg;function pg(){function g(g,I){return I.length-g.length}var I,e,t=[],C=[],Q=[];for(I=0;I<12;I++)e=c([2e3,I]),t.push(this.monthsShort(e,"")),C.push(this.months(e,"")),Q.push(this.months(e,"")),Q.push(this.monthsShort(e,""));for(t.sort(g),C.sort(g),Q.sort(g),I=0;I<12;I++)t[I]=ig(t[I]),C[I]=ig(C[I]);for(I=0;I<24;I++)Q[I]=ig(Q[I]);this._monthsRegex=new RegExp("^("+Q.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+C.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+t.join("|")+")","i")}function Eg(g,I,e,t,C,Q,F){var B;return g<100&&g>=0?(B=new Date(g+400,I,e,t,C,Q,F),isFinite(B.getFullYear())&&B.setFullYear(g)):B=new Date(g,I,e,t,C,Q,F),B}function Ng(g){var I;if(g<100&&g>=0){var e=Array.prototype.slice.call(arguments);e[0]=g+400,I=new Date(Date.UTC.apply(null,e)),isFinite(I.getUTCFullYear())&&I.setUTCFullYear(g)}else I=new Date(Date.UTC.apply(null,arguments));return I}function Wg(g,I,e){var t=7+I-e;return-(7+Ng(g,0,t).getUTCDay()-I)%7+t-1}function fg(g,I,e,t,C){var Q,F,B=1+7*(I-1)+(7+e-t)%7+Wg(g,t,C);return B<=0?F=rg(Q=g-1)+B:B>rg(g)?(Q=g+1,F=B-rg(g)):(Q=g,F=B),{year:Q,dayOfYear:F}}function Xg(g,I,e){var t,C,Q=Wg(g.year(),I,e),F=Math.floor((g.dayOfYear()-Q-1)/7)+1;return F<1?t=F+Jg(C=g.year()-1,I,e):F>Jg(g.year(),I,e)?(t=F-Jg(g.year(),I,e),C=g.year()+1):(C=g.year(),t=F),{week:t,year:C}}function Jg(g,I,e){var t=Wg(g,I,e),C=Wg(g+1,I,e);return(rg(g)-t+C)/7}function vg(g,I){return g.slice(I,7).concat(g.slice(0,I))}Y("w",["ww",2],"wo","week"),Y("W",["WW",2],"Wo","isoWeek"),E("week","w"),E("isoWeek","W"),X("week",5),X("isoWeek",5),Ug("w",_),Ug("ww",_,O),Ug("W",_),Ug("WW",_,O),lg(["w","ww","W","WW"],(function(g,I,e,t){I[t.substr(0,1)]=Z(g)})),Y("d",0,"do","day"),Y("dd",0,0,(function(g){return this.localeData().weekdaysMin(this,g)})),Y("ddd",0,0,(function(g){return this.localeData().weekdaysShort(this,g)})),Y("dddd",0,0,(function(g){return this.localeData().weekdays(this,g)})),Y("e",0,0,"weekday"),Y("E",0,0,"isoWeekday"),E("day","d"),E("weekday","e"),E("isoWeekday","E"),X("day",11),X("weekday",11),X("isoWeekday",11),Ug("d",_),Ug("e",_),Ug("E",_),Ug("dd",(function(g,I){return I.weekdaysMinRegex(g)})),Ug("ddd",(function(g,I){return I.weekdaysShortRegex(g)})),Ug("dddd",(function(g,I){return I.weekdaysRegex(g)})),lg(["dd","ddd","dddd"],(function(g,I,e,t){var C=e._locale.weekdaysParse(g,t,e._strict);null!=C?I.d=C:A(e).invalidWeekday=g})),lg(["d","e","E"],(function(g,I,e,t){I[t]=Z(g)}));var kg="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Hg="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Mg="Su_Mo_Tu_We_Th_Fr_Sa".split("_");function Yg(g,I,e){var t,C,Q,F=g.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],t=0;t<7;++t)Q=c([2e3,1]).day(t),this._minWeekdaysParse[t]=this.weekdaysMin(Q,"").toLocaleLowerCase(),this._shortWeekdaysParse[t]=this.weekdaysShort(Q,"").toLocaleLowerCase(),this._weekdaysParse[t]=this.weekdays(Q,"").toLocaleLowerCase();return e?"dddd"===I?-1!==(C=dg.call(this._weekdaysParse,F))?C:null:"ddd"===I?-1!==(C=dg.call(this._shortWeekdaysParse,F))?C:null:-1!==(C=dg.call(this._minWeekdaysParse,F))?C:null:"dddd"===I?-1!==(C=dg.call(this._weekdaysParse,F))||-1!==(C=dg.call(this._shortWeekdaysParse,F))||-1!==(C=dg.call(this._minWeekdaysParse,F))?C:null:"ddd"===I?-1!==(C=dg.call(this._shortWeekdaysParse,F))||-1!==(C=dg.call(this._weekdaysParse,F))||-1!==(C=dg.call(this._minWeekdaysParse,F))?C:null:-1!==(C=dg.call(this._minWeekdaysParse,F))||-1!==(C=dg.call(this._weekdaysParse,F))||-1!==(C=dg.call(this._shortWeekdaysParse,F))?C:null}var wg=Bg,Tg=Bg,zg=Bg;function Og(){function g(g,I){return I.length-g.length}var I,e,t,C,Q,F=[],B=[],n=[],U=[];for(I=0;I<7;I++)e=c([2e3,1]).day(I),t=this.weekdaysMin(e,""),C=this.weekdaysShort(e,""),Q=this.weekdays(e,""),F.push(t),B.push(C),n.push(Q),U.push(t),U.push(C),U.push(Q);for(F.sort(g),B.sort(g),n.sort(g),U.sort(g),I=0;I<7;I++)B[I]=ig(B[I]),n[I]=ig(n[I]),U[I]=ig(U[I]);this._weekdaysRegex=new RegExp("^("+U.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+n.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+B.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+F.join("|")+")","i")}function Kg(){return this.hours()%12||12}function jg(g,I){Y(g,0,0,(function(){return this.localeData().meridiem(this.hours(),this.minutes(),I)}))}function Pg(g,I){return I._meridiemParse}Y("H",["HH",2],0,"hour"),Y("h",["hh",2],0,Kg),Y("k",["kk",2],0,(function(){return this.hours()||24})),Y("hmm",0,0,(function(){return""+Kg.apply(this)+J(this.minutes(),2)})),Y("hmmss",0,0,(function(){return""+Kg.apply(this)+J(this.minutes(),2)+J(this.seconds(),2)})),Y("Hmm",0,0,(function(){return""+this.hours()+J(this.minutes(),2)})),Y("Hmmss",0,0,(function(){return""+this.hours()+J(this.minutes(),2)+J(this.seconds(),2)})),jg("a",!0),jg("A",!1),E("hour","h"),X("hour",13),Ug("a",Pg),Ug("A",Pg),Ug("H",_),Ug("h",_),Ug("k",_),Ug("HH",_,O),Ug("hh",_,O),Ug("kk",_,O),Ug("hmm",q),Ug("hmmss",$),Ug("Hmm",q),Ug("Hmmss",$),Ag(["H","HH"],3),Ag(["k","kk"],(function(g,I,e){var t=Z(g);I[3]=24===t?0:t})),Ag(["a","A"],(function(g,I,e){e._isPm=e._locale.isPM(g),e._meridiem=g})),Ag(["h","hh"],(function(g,I,e){I[3]=Z(g),A(e).bigHour=!0})),Ag("hmm",(function(g,I,e){var t=g.length-2;I[3]=Z(g.substr(0,t)),I[4]=Z(g.substr(t)),A(e).bigHour=!0})),Ag("hmmss",(function(g,I,e){var t=g.length-4,C=g.length-2;I[3]=Z(g.substr(0,t)),I[4]=Z(g.substr(t,2)),I[5]=Z(g.substr(C)),A(e).bigHour=!0})),Ag("Hmm",(function(g,I,e){var t=g.length-2;I[3]=Z(g.substr(0,t)),I[4]=Z(g.substr(t))})),Ag("Hmmss",(function(g,I,e){var t=g.length-4,C=g.length-2;I[3]=Z(g.substr(0,t)),I[4]=Z(g.substr(t,2)),I[5]=Z(g.substr(C))}));var _g,qg=yg("Hours",!0),$g={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Rg,monthsShort:Sg,week:{dow:0,doy:6},weekdays:kg,weekdaysMin:Mg,weekdaysShort:Hg,meridiemParse:/[ap]\.?m?\.?/i},gI={},II={};function eI(g){return g?g.toLowerCase().replace("_","-"):g}function tI(I){var e=null;if(!gI[I]&&"undefined"!==typeof g&&g&&g.exports)try{e=_g._abbr,!function(){var g=new Error("Cannot find module 'undefined'");throw g.code="MODULE_NOT_FOUND",g}(),CI(e)}catch(t){}return gI[I]}function CI(g,I){var e;return g&&((e=F(I)?FI(g):QI(g,I))?_g=e:"undefined"!==typeof console&&console.warn&&console.warn("Locale "+g+" not found. Did you forget to load it?")),_g._abbr}function QI(g,I){if(null!==I){var e,t=$g;if(I.abbr=g,null!=gI[g])L("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),t=gI[g]._config;else if(null!=I.parentLocale)if(null!=gI[I.parentLocale])t=gI[I.parentLocale]._config;else{if(null==(e=tI(I.parentLocale)))return II[I.parentLocale]||(II[I.parentLocale]=[]),II[I.parentLocale].push({name:g,config:I}),null;t=e._config}return gI[g]=new D(h(t,I)),II[g]&&II[g].forEach((function(g){QI(g.name,g.config)})),CI(g),gI[g]}return delete gI[g],null}function FI(g){var I;if(g&&g._locale&&g._locale._abbr&&(g=g._locale._abbr),!g)return _g;if(!C(g)){if(I=tI(g))return I;g=[g]}return function(g){for(var I,e,t,C,Q=0;Q<g.length;){for(I=(C=eI(g[Q]).split("-")).length,e=(e=eI(g[Q+1]))?e.split("-"):null;I>0;){if(t=tI(C.slice(0,I).join("-")))return t;if(e&&e.length>=I&&m(C,e,!0)>=I-1)break;I--}Q++}return _g}(g)}function BI(g){var I,e=g._a;return e&&-2===A(g).overflow&&(I=e[1]<0||e[1]>11?1:e[2]<1||e[2]>mg(e[0],e[1])?2:e[3]<0||e[3]>24||24===e[3]&&(0!==e[4]||0!==e[5]||0!==e[6])?3:e[4]<0||e[4]>59?4:e[5]<0||e[5]>59?5:e[6]<0||e[6]>999?6:-1,A(g)._overflowDayOfYear&&(I<0||I>2)&&(I=2),A(g)._overflowWeeks&&-1===I&&(I=7),A(g)._overflowWeekday&&-1===I&&(I=8),A(g).overflow=I),g}function nI(g,I,e){return null!=g?g:null!=I?I:e}function UI(g){var I,e,C,Q,F,B=[];if(!g._d){for(C=function(g){var I=new Date(t.now());return g._useUTC?[I.getUTCFullYear(),I.getUTCMonth(),I.getUTCDate()]:[I.getFullYear(),I.getMonth(),I.getDate()]}(g),g._w&&null==g._a[2]&&null==g._a[1]&&function(g){var I,e,t,C,Q,F,B,n;if(null!=(I=g._w).GG||null!=I.W||null!=I.E)Q=1,F=4,e=nI(I.GG,g._a[0],Xg(xI(),1,4).year),t=nI(I.W,1),((C=nI(I.E,1))<1||C>7)&&(n=!0);else{Q=g._locale._week.dow,F=g._locale._week.doy;var U=Xg(xI(),Q,F);e=nI(I.gg,g._a[0],U.year),t=nI(I.w,U.week),null!=I.d?((C=I.d)<0||C>6)&&(n=!0):null!=I.e?(C=I.e+Q,(I.e<0||I.e>6)&&(n=!0)):C=Q}t<1||t>Jg(e,Q,F)?A(g)._overflowWeeks=!0:null!=n?A(g)._overflowWeekday=!0:(B=fg(e,t,C,Q,F),g._a[0]=B.year,g._dayOfYear=B.dayOfYear)}(g),null!=g._dayOfYear&&(F=nI(g._a[0],C[0]),(g._dayOfYear>rg(F)||0===g._dayOfYear)&&(A(g)._overflowDayOfYear=!0),e=Ng(F,0,g._dayOfYear),g._a[1]=e.getUTCMonth(),g._a[2]=e.getUTCDate()),I=0;I<3&&null==g._a[I];++I)g._a[I]=B[I]=C[I];for(;I<7;I++)g._a[I]=B[I]=null==g._a[I]?2===I?1:0:g._a[I];24===g._a[3]&&0===g._a[4]&&0===g._a[5]&&0===g._a[6]&&(g._nextDay=!0,g._a[3]=0),g._d=(g._useUTC?Ng:Eg).apply(null,B),Q=g._useUTC?g._d.getUTCDay():g._d.getDay(),null!=g._tzm&&g._d.setUTCMinutes(g._d.getUTCMinutes()-g._tzm),g._nextDay&&(g._a[3]=24),g._w&&"undefined"!==typeof g._w.d&&g._w.d!==Q&&(A(g).weekdayMismatch=!0)}}var sI=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,iI=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,cI=/Z|[+-]\d\d(?::?\d\d)?/,AI=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],lI=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],aI=/^\/?Date\((\-?\d+)/i;function rI(g){var I,e,t,C,Q,F,B=g._i,n=sI.exec(B)||iI.exec(B);if(n){for(A(g).iso=!0,I=0,e=AI.length;I<e;I++)if(AI[I][1].exec(n[1])){C=AI[I][0],t=!1!==AI[I][2];break}if(null==C)return void(g._isValid=!1);if(n[3]){for(I=0,e=lI.length;I<e;I++)if(lI[I][1].exec(n[3])){Q=(n[2]||" ")+lI[I][0];break}if(null==Q)return void(g._isValid=!1)}if(!t&&null!=Q)return void(g._isValid=!1);if(n[4]){if(!cI.exec(n[4]))return void(g._isValid=!1);F="Z"}g._f=C+(Q||"")+(F||""),bI(g)}else g._isValid=!1}var oI=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/;function dI(g){var I=parseInt(g,10);return I<=49?2e3+I:I<=999?1900+I:I}var uI={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function yI(g){var I=oI.exec(g._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));if(I){var e=function(g,I,e,t,C,Q){var F=[dI(g),Sg.indexOf(I),parseInt(e,10),parseInt(t,10),parseInt(C,10)];return Q&&F.push(parseInt(Q,10)),F}(I[4],I[3],I[2],I[5],I[6],I[7]);if(!function(g,I,e){return!g||Hg.indexOf(g)===new Date(I[0],I[1],I[2]).getDay()||(A(e).weekdayMismatch=!0,e._isValid=!1,!1)}(I[1],e,g))return;g._a=e,g._tzm=function(g,I,e){if(g)return uI[g];if(I)return 0;var t=parseInt(e,10),C=t%100;return(t-C)/100*60+C}(I[8],I[9],I[10]),g._d=Ng.apply(null,g._a),g._d.setUTCMinutes(g._d.getUTCMinutes()-g._tzm),A(g).rfc2822=!0}else g._isValid=!1}function bI(g){if(g._f!==t.ISO_8601)if(g._f!==t.RFC_2822){g._a=[],A(g).empty=!0;var I,e,C,Q,F,B=""+g._i,n=B.length,U=0;for(C=T(g._f,g._locale).match(v)||[],I=0;I<C.length;I++)Q=C[I],(e=(B.match(sg(Q,g))||[])[0])&&((F=B.substr(0,B.indexOf(e))).length>0&&A(g).unusedInput.push(F),B=B.slice(B.indexOf(e)+e.length),U+=e.length),M[Q]?(e?A(g).empty=!1:A(g).unusedTokens.push(Q),ag(Q,e,g)):g._strict&&!e&&A(g).unusedTokens.push(Q);A(g).charsLeftOver=n-U,B.length>0&&A(g).unusedInput.push(B),g._a[3]<=12&&!0===A(g).bigHour&&g._a[3]>0&&(A(g).bigHour=void 0),A(g).parsedDateParts=g._a.slice(0),A(g).meridiem=g._meridiem,g._a[3]=function(g,I,e){var t;return null==e?I:null!=g.meridiemHour?g.meridiemHour(I,e):null!=g.isPM?((t=g.isPM(e))&&I<12&&(I+=12),t||12!==I||(I=0),I):I}(g._locale,g._a[3],g._meridiem),UI(g),BI(g)}else yI(g);else rI(g)}function ZI(g){var I=g._i,e=g._f;return g._locale=g._locale||FI(g._l),null===I||void 0===e&&""===I?a({nullInput:!0}):("string"===typeof I&&(g._i=I=g._locale.preparse(I)),y(I)?new u(BI(I)):(n(I)?g._d=I:C(e)?function(g){var I,e,t,C,Q;if(0===g._f.length)return A(g).invalidFormat=!0,void(g._d=new Date(NaN));for(C=0;C<g._f.length;C++)Q=0,I=o({},g),null!=g._useUTC&&(I._useUTC=g._useUTC),I._f=g._f[C],bI(I),l(I)&&(Q+=A(I).charsLeftOver,Q+=10*A(I).unusedTokens.length,A(I).score=Q,(null==t||Q<t)&&(t=Q,e=I));i(g,e||I)}(g):e?bI(g):function(g){var I=g._i;F(I)?g._d=new Date(t.now()):n(I)?g._d=new Date(I.valueOf()):"string"===typeof I?function(g){var I=aI.exec(g._i);null===I?(rI(g),!1===g._isValid&&(delete g._isValid,yI(g),!1===g._isValid&&(delete g._isValid,t.createFromInputFallback(g)))):g._d=new Date(+I[1])}(g):C(I)?(g._a=U(I.slice(0),(function(g){return parseInt(g,10)})),UI(g)):Q(I)?function(g){if(!g._d){var I=W(g._i);g._a=U([I.year,I.month,I.day||I.date,I.hour,I.minute,I.second,I.millisecond],(function(g){return g&&parseInt(g,10)})),UI(g)}}(g):B(I)?g._d=new Date(I):t.createFromInputFallback(g)}(g),l(g)||(g._d=null),g))}function mI(g,I,e,t,F){var B={};return!0!==e&&!1!==e||(t=e,e=void 0),(Q(g)&&function(g){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(g).length;var I;for(I in g)if(g.hasOwnProperty(I))return!1;return!0}(g)||C(g)&&0===g.length)&&(g=void 0),B._isAMomentObject=!0,B._useUTC=B._isUTC=F,B._l=e,B._i=g,B._f=I,B._strict=t,function(g){var I=new u(BI(ZI(g)));return I._nextDay&&(I.add(1,"d"),I._nextDay=void 0),I}(B)}function xI(g,I,e,t){return mI(g,I,e,t,!1)}t.createFromInputFallback=R("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",(function(g){g._d=new Date(g._i+(g._useUTC?" UTC":""))})),t.ISO_8601=function(){},t.RFC_2822=function(){};var RI=R("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var g=xI.apply(null,arguments);return this.isValid()&&g.isValid()?g<this?this:g:a()})),SI=R("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var g=xI.apply(null,arguments);return this.isValid()&&g.isValid()?g>this?this:g:a()}));function GI(g,I){var e,t;if(1===I.length&&C(I[0])&&(I=I[0]),!I.length)return xI();for(e=I[0],t=1;t<I.length;++t)I[t].isValid()&&!I[t][g](e)||(e=I[t]);return e}var LI=["year","quarter","month","week","day","hour","minute","second","millisecond"];function VI(g){var I=W(g),e=I.year||0,t=I.quarter||0,C=I.month||0,Q=I.week||I.isoWeek||0,F=I.day||0,B=I.hour||0,n=I.minute||0,U=I.second||0,s=I.millisecond||0;this._isValid=function(g){for(var I in g)if(-1===dg.call(LI,I)||null!=g[I]&&isNaN(g[I]))return!1;for(var e=!1,t=0;t<LI.length;++t)if(g[LI[t]]){if(e)return!1;parseFloat(g[LI[t]])!==Z(g[LI[t]])&&(e=!0)}return!0}(I),this._milliseconds=+s+1e3*U+6e4*n+1e3*B*60*60,this._days=+F+7*Q,this._months=+C+3*t+12*e,this._data={},this._locale=FI(),this._bubble()}function hI(g){return g instanceof VI}function DI(g){return g<0?-1*Math.round(-1*g):Math.round(g)}function pI(g,I){Y(g,0,0,(function(){var g=this.utcOffset(),e="+";return g<0&&(g=-g,e="-"),e+J(~~(g/60),2)+I+J(~~g%60,2)}))}pI("Z",":"),pI("ZZ",""),Ug("Z",Fg),Ug("ZZ",Fg),Ag(["Z","ZZ"],(function(g,I,e){e._useUTC=!0,e._tzm=NI(Fg,g)}));var EI=/([\+\-]|\d\d)/gi;function NI(g,I){var e=(I||"").match(g);if(null===e)return null;var t=((e[e.length-1]||[])+"").match(EI)||["-",0,0],C=60*t[1]+Z(t[2]);return 0===C?0:"+"===t[0]?C:-C}function WI(g,I){var e,C;return I._isUTC?(e=I.clone(),C=(y(g)||n(g)?g.valueOf():xI(g).valueOf())-e.valueOf(),e._d.setTime(e._d.valueOf()+C),t.updateOffset(e,!1),e):xI(g).local()}function fI(g){return 15*-Math.round(g._d.getTimezoneOffset()/15)}function XI(){return!!this.isValid()&&this._isUTC&&0===this._offset}t.updateOffset=function(){};var JI=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,vI=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function kI(g,I){var e,t,C,Q=g,F=null;return hI(g)?Q={ms:g._milliseconds,d:g._days,M:g._months}:B(g)?(Q={},I?Q[I]=g:Q.milliseconds=g):(F=JI.exec(g))?(e="-"===F[1]?-1:1,Q={y:0,d:Z(F[2])*e,h:Z(F[3])*e,m:Z(F[4])*e,s:Z(F[5])*e,ms:Z(DI(1e3*F[6]))*e}):(F=vI.exec(g))?(e="-"===F[1]?-1:1,Q={y:HI(F[2],e),M:HI(F[3],e),w:HI(F[4],e),d:HI(F[5],e),h:HI(F[6],e),m:HI(F[7],e),s:HI(F[8],e)}):null==Q?Q={}:"object"===typeof Q&&("from"in Q||"to"in Q)&&(C=function(g,I){var e;return g.isValid()&&I.isValid()?(I=WI(I,g),g.isBefore(I)?e=MI(g,I):((e=MI(I,g)).milliseconds=-e.milliseconds,e.months=-e.months),e):{milliseconds:0,months:0}}(xI(Q.from),xI(Q.to)),(Q={}).ms=C.milliseconds,Q.M=C.months),t=new VI(Q),hI(g)&&s(g,"_locale")&&(t._locale=g._locale),t}function HI(g,I){var e=g&&parseFloat(g.replace(",","."));return(isNaN(e)?0:e)*I}function MI(g,I){var e={};return e.months=I.month()-g.month()+12*(I.year()-g.year()),g.clone().add(e.months,"M").isAfter(I)&&--e.months,e.milliseconds=+I-+g.clone().add(e.months,"M"),e}function YI(g,I){return function(e,t){var C;return null===t||isNaN(+t)||(L(I,"moment()."+I+"(period, number) is deprecated. Please use moment()."+I+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),C=e,e=t,t=C),wI(this,kI(e="string"===typeof e?+e:e,t),g),this}}function wI(g,I,e,C){var Q=I._milliseconds,F=DI(I._days),B=DI(I._months);g.isValid()&&(C=null==C||C,B&&Lg(g,bg(g,"Month")+B*e),F&&Zg(g,"Date",bg(g,"Date")+F*e),Q&&g._d.setTime(g._d.valueOf()+Q*e),C&&t.updateOffset(g,F||B))}kI.fn=VI.prototype,kI.invalid=function(){return kI(NaN)};var TI=YI(1,"add"),zI=YI(-1,"subtract");function OI(g,I){var e=12*(I.year()-g.year())+(I.month()-g.month()),t=g.clone().add(e,"months");return-(e+(I-t<0?(I-t)/(t-g.clone().add(e-1,"months")):(I-t)/(g.clone().add(e+1,"months")-t)))||0}function KI(g){var I;return void 0===g?this._locale._abbr:(null!=(I=FI(g))&&(this._locale=I),this)}t.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",t.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var jI=R("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",(function(g){return void 0===g?this.localeData():this.locale(g)}));function PI(){return this._locale}function _I(g,I){return(g%I+I)%I}function qI(g,I,e){return g<100&&g>=0?new Date(g+400,I,e)-126227808e5:new Date(g,I,e).valueOf()}function $I(g,I,e){return g<100&&g>=0?Date.UTC(g+400,I,e)-126227808e5:Date.UTC(g,I,e)}function ge(g,I){Y(0,[g,g.length],0,I)}function Ie(g,I,e,t,C){var Q;return null==g?Xg(this,t,C).year:(I>(Q=Jg(g,t,C))&&(I=Q),ee.call(this,g,I,e,t,C))}function ee(g,I,e,t,C){var Q=fg(g,I,e,t,C),F=Ng(Q.year,0,Q.dayOfYear);return this.year(F.getUTCFullYear()),this.month(F.getUTCMonth()),this.date(F.getUTCDate()),this}Y(0,["gg",2],0,(function(){return this.weekYear()%100})),Y(0,["GG",2],0,(function(){return this.isoWeekYear()%100})),ge("gggg","weekYear"),ge("ggggg","weekYear"),ge("GGGG","isoWeekYear"),ge("GGGGG","isoWeekYear"),E("weekYear","gg"),E("isoWeekYear","GG"),X("weekYear",1),X("isoWeekYear",1),Ug("G",Cg),Ug("g",Cg),Ug("GG",_,O),Ug("gg",_,O),Ug("GGGG",Ig,j),Ug("gggg",Ig,j),Ug("GGGGG",eg,P),Ug("ggggg",eg,P),lg(["gggg","ggggg","GGGG","GGGGG"],(function(g,I,e,t){I[t.substr(0,2)]=Z(g)})),lg(["gg","GG"],(function(g,I,e,C){I[C]=t.parseTwoDigitYear(g)})),Y("Q",0,"Qo","quarter"),E("quarter","Q"),X("quarter",7),Ug("Q",z),Ag("Q",(function(g,I){I[1]=3*(Z(g)-1)})),Y("D",["DD",2],"Do","date"),E("date","D"),X("date",9),Ug("D",_),Ug("DD",_,O),Ug("Do",(function(g,I){return g?I._dayOfMonthOrdinalParse||I._ordinalParse:I._dayOfMonthOrdinalParseLenient})),Ag(["D","DD"],2),Ag("Do",(function(g,I){I[2]=Z(g.match(_)[0])}));var te=yg("Date",!0);Y("DDD",["DDDD",3],"DDDo","dayOfYear"),E("dayOfYear","DDD"),X("dayOfYear",4),Ug("DDD",gg),Ug("DDDD",K),Ag(["DDD","DDDD"],(function(g,I,e){e._dayOfYear=Z(g)})),Y("m",["mm",2],0,"minute"),E("minute","m"),X("minute",14),Ug("m",_),Ug("mm",_,O),Ag(["m","mm"],4);var Ce=yg("Minutes",!1);Y("s",["ss",2],0,"second"),E("second","s"),X("second",15),Ug("s",_),Ug("ss",_,O),Ag(["s","ss"],5);var Qe,Fe=yg("Seconds",!1);for(Y("S",0,0,(function(){return~~(this.millisecond()/100)})),Y(0,["SS",2],0,(function(){return~~(this.millisecond()/10)})),Y(0,["SSS",3],0,"millisecond"),Y(0,["SSSS",4],0,(function(){return 10*this.millisecond()})),Y(0,["SSSSS",5],0,(function(){return 100*this.millisecond()})),Y(0,["SSSSSS",6],0,(function(){return 1e3*this.millisecond()})),Y(0,["SSSSSSS",7],0,(function(){return 1e4*this.millisecond()})),Y(0,["SSSSSSSS",8],0,(function(){return 1e5*this.millisecond()})),Y(0,["SSSSSSSSS",9],0,(function(){return 1e6*this.millisecond()})),E("millisecond","ms"),X("millisecond",16),Ug("S",gg,z),Ug("SS",gg,O),Ug("SSS",gg,K),Qe="SSSS";Qe.length<=9;Qe+="S")Ug(Qe,tg);function Be(g,I){I[6]=Z(1e3*("0."+g))}for(Qe="S";Qe.length<=9;Qe+="S")Ag(Qe,Be);var ne=yg("Milliseconds",!1);Y("z",0,0,"zoneAbbr"),Y("zz",0,0,"zoneName");var Ue=u.prototype;function se(g){return g}Ue.add=TI,Ue.calendar=function(g,I){var e=g||xI(),C=WI(e,this).startOf("day"),Q=t.calendarFormat(this,C)||"sameElse",F=I&&(V(I[Q])?I[Q].call(this,e):I[Q]);return this.format(F||this.localeData().calendar(Q,this,xI(e)))},Ue.clone=function(){return new u(this)},Ue.diff=function(g,I,e){var t,C,Q;if(!this.isValid())return NaN;if(!(t=WI(g,this)).isValid())return NaN;switch(C=6e4*(t.utcOffset()-this.utcOffset()),I=N(I)){case"year":Q=OI(this,t)/12;break;case"month":Q=OI(this,t);break;case"quarter":Q=OI(this,t)/3;break;case"second":Q=(this-t)/1e3;break;case"minute":Q=(this-t)/6e4;break;case"hour":Q=(this-t)/36e5;break;case"day":Q=(this-t-C)/864e5;break;case"week":Q=(this-t-C)/6048e5;break;default:Q=this-t}return e?Q:b(Q)},Ue.endOf=function(g){var I;if(void 0===(g=N(g))||"millisecond"===g||!this.isValid())return this;var e=this._isUTC?$I:qI;switch(g){case"year":I=e(this.year()+1,0,1)-1;break;case"quarter":I=e(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":I=e(this.year(),this.month()+1,1)-1;break;case"week":I=e(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":I=e(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":I=e(this.year(),this.month(),this.date()+1)-1;break;case"hour":I=this._d.valueOf(),I+=36e5-_I(I+(this._isUTC?0:6e4*this.utcOffset()),36e5)-1;break;case"minute":I=this._d.valueOf(),I+=6e4-_I(I,6e4)-1;break;case"second":I=this._d.valueOf(),I+=1e3-_I(I,1e3)-1}return this._d.setTime(I),t.updateOffset(this,!0),this},Ue.format=function(g){g||(g=this.isUtc()?t.defaultFormatUtc:t.defaultFormat);var I=w(this,g);return this.localeData().postformat(I)},Ue.from=function(g,I){return this.isValid()&&(y(g)&&g.isValid()||xI(g).isValid())?kI({to:this,from:g}).locale(this.locale()).humanize(!I):this.localeData().invalidDate()},Ue.fromNow=function(g){return this.from(xI(),g)},Ue.to=function(g,I){return this.isValid()&&(y(g)&&g.isValid()||xI(g).isValid())?kI({from:this,to:g}).locale(this.locale()).humanize(!I):this.localeData().invalidDate()},Ue.toNow=function(g){return this.to(xI(),g)},Ue.get=function(g){return V(this[g=N(g)])?this[g]():this},Ue.invalidAt=function(){return A(this).overflow},Ue.isAfter=function(g,I){var e=y(g)?g:xI(g);return!(!this.isValid()||!e.isValid())&&("millisecond"===(I=N(I)||"millisecond")?this.valueOf()>e.valueOf():e.valueOf()<this.clone().startOf(I).valueOf())},Ue.isBefore=function(g,I){var e=y(g)?g:xI(g);return!(!this.isValid()||!e.isValid())&&("millisecond"===(I=N(I)||"millisecond")?this.valueOf()<e.valueOf():this.clone().endOf(I).valueOf()<e.valueOf())},Ue.isBetween=function(g,I,e,t){var C=y(g)?g:xI(g),Q=y(I)?I:xI(I);return!!(this.isValid()&&C.isValid()&&Q.isValid())&&("("===(t=t||"()")[0]?this.isAfter(C,e):!this.isBefore(C,e))&&(")"===t[1]?this.isBefore(Q,e):!this.isAfter(Q,e))},Ue.isSame=function(g,I){var e,t=y(g)?g:xI(g);return!(!this.isValid()||!t.isValid())&&("millisecond"===(I=N(I)||"millisecond")?this.valueOf()===t.valueOf():(e=t.valueOf(),this.clone().startOf(I).valueOf()<=e&&e<=this.clone().endOf(I).valueOf()))},Ue.isSameOrAfter=function(g,I){return this.isSame(g,I)||this.isAfter(g,I)},Ue.isSameOrBefore=function(g,I){return this.isSame(g,I)||this.isBefore(g,I)},Ue.isValid=function(){return l(this)},Ue.lang=jI,Ue.locale=KI,Ue.localeData=PI,Ue.max=SI,Ue.min=RI,Ue.parsingFlags=function(){return i({},A(this))},Ue.set=function(g,I){if("object"===typeof g)for(var e=function(g){var I=[];for(var e in g)I.push({unit:e,priority:f[e]});return I.sort((function(g,I){return g.priority-I.priority})),I}(g=W(g)),t=0;t<e.length;t++)this[e[t].unit](g[e[t].unit]);else if(V(this[g=N(g)]))return this[g](I);return this},Ue.startOf=function(g){var I;if(void 0===(g=N(g))||"millisecond"===g||!this.isValid())return this;var e=this._isUTC?$I:qI;switch(g){case"year":I=e(this.year(),0,1);break;case"quarter":I=e(this.year(),this.month()-this.month()%3,1);break;case"month":I=e(this.year(),this.month(),1);break;case"week":I=e(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":I=e(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":I=e(this.year(),this.month(),this.date());break;case"hour":I=this._d.valueOf(),I-=_I(I+(this._isUTC?0:6e4*this.utcOffset()),36e5);break;case"minute":I=this._d.valueOf(),I-=_I(I,6e4);break;case"second":I=this._d.valueOf(),I-=_I(I,1e3)}return this._d.setTime(I),t.updateOffset(this,!0),this},Ue.subtract=zI,Ue.toArray=function(){var g=this;return[g.year(),g.month(),g.date(),g.hour(),g.minute(),g.second(),g.millisecond()]},Ue.toObject=function(){var g=this;return{years:g.year(),months:g.month(),date:g.date(),hours:g.hours(),minutes:g.minutes(),seconds:g.seconds(),milliseconds:g.milliseconds()}},Ue.toDate=function(){return new Date(this.valueOf())},Ue.toISOString=function(g){if(!this.isValid())return null;var I=!0!==g,e=I?this.clone().utc():this;return e.year()<0||e.year()>9999?w(e,I?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):V(Date.prototype.toISOString)?I?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",w(e,"Z")):w(e,I?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},Ue.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var g="moment",I="";this.isLocal()||(g=0===this.utcOffset()?"moment.utc":"moment.parseZone",I="Z");var e="["+g+'("]',t=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",C=I+'[")]';return this.format(e+t+"-MM-DD[T]HH:mm:ss.SSS"+C)},Ue.toJSON=function(){return this.isValid()?this.toISOString():null},Ue.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},Ue.unix=function(){return Math.floor(this.valueOf()/1e3)},Ue.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},Ue.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},Ue.year=ug,Ue.isLeapYear=function(){return og(this.year())},Ue.weekYear=function(g){return Ie.call(this,g,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},Ue.isoWeekYear=function(g){return Ie.call(this,g,this.isoWeek(),this.isoWeekday(),1,4)},Ue.quarter=Ue.quarters=function(g){return null==g?Math.ceil((this.month()+1)/3):this.month(3*(g-1)+this.month()%3)},Ue.month=Vg,Ue.daysInMonth=function(){return mg(this.year(),this.month())},Ue.week=Ue.weeks=function(g){var I=this.localeData().week(this);return null==g?I:this.add(7*(g-I),"d")},Ue.isoWeek=Ue.isoWeeks=function(g){var I=Xg(this,1,4).week;return null==g?I:this.add(7*(g-I),"d")},Ue.weeksInYear=function(){var g=this.localeData()._week;return Jg(this.year(),g.dow,g.doy)},Ue.isoWeeksInYear=function(){return Jg(this.year(),1,4)},Ue.date=te,Ue.day=Ue.days=function(g){if(!this.isValid())return null!=g?this:NaN;var I=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=g?(g=function(g,I){return"string"!==typeof g?g:isNaN(g)?"number"===typeof(g=I.weekdaysParse(g))?g:null:parseInt(g,10)}(g,this.localeData()),this.add(g-I,"d")):I},Ue.weekday=function(g){if(!this.isValid())return null!=g?this:NaN;var I=(this.day()+7-this.localeData()._week.dow)%7;return null==g?I:this.add(g-I,"d")},Ue.isoWeekday=function(g){if(!this.isValid())return null!=g?this:NaN;if(null!=g){var I=function(g,I){return"string"===typeof g?I.weekdaysParse(g)%7||7:isNaN(g)?null:g}(g,this.localeData());return this.day(this.day()%7?I:I-7)}return this.day()||7},Ue.dayOfYear=function(g){var I=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==g?I:this.add(g-I,"d")},Ue.hour=Ue.hours=qg,Ue.minute=Ue.minutes=Ce,Ue.second=Ue.seconds=Fe,Ue.millisecond=Ue.milliseconds=ne,Ue.utcOffset=function(g,I,e){var C,Q=this._offset||0;if(!this.isValid())return null!=g?this:NaN;if(null!=g){if("string"===typeof g){if(null===(g=NI(Fg,g)))return this}else Math.abs(g)<16&&!e&&(g*=60);return!this._isUTC&&I&&(C=fI(this)),this._offset=g,this._isUTC=!0,null!=C&&this.add(C,"m"),Q!==g&&(!I||this._changeInProgress?wI(this,kI(g-Q,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,t.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?Q:fI(this)},Ue.utc=function(g){return this.utcOffset(0,g)},Ue.local=function(g){return this._isUTC&&(this.utcOffset(0,g),this._isUTC=!1,g&&this.subtract(fI(this),"m")),this},Ue.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"===typeof this._i){var g=NI(Qg,this._i);null!=g?this.utcOffset(g):this.utcOffset(0,!0)}return this},Ue.hasAlignedHourOffset=function(g){return!!this.isValid()&&(g=g?xI(g).utcOffset():0,(this.utcOffset()-g)%60===0)},Ue.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},Ue.isLocal=function(){return!!this.isValid()&&!this._isUTC},Ue.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},Ue.isUtc=XI,Ue.isUTC=XI,Ue.zoneAbbr=function(){return this._isUTC?"UTC":""},Ue.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},Ue.dates=R("dates accessor is deprecated. Use date instead.",te),Ue.months=R("months accessor is deprecated. Use month instead",Vg),Ue.years=R("years accessor is deprecated. Use year instead",ug),Ue.zone=R("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",(function(g,I){return null!=g?("string"!==typeof g&&(g=-g),this.utcOffset(g,I),this):-this.utcOffset()})),Ue.isDSTShifted=R("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",(function(){if(!F(this._isDSTShifted))return this._isDSTShifted;var g={};if(o(g,this),(g=ZI(g))._a){var I=g._isUTC?c(g._a):xI(g._a);this._isDSTShifted=this.isValid()&&m(g._a,I.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}));var ie=D.prototype;function ce(g,I,e,t){var C=FI(),Q=c().set(t,I);return C[e](Q,g)}function Ae(g,I,e){if(B(g)&&(I=g,g=void 0),g=g||"",null!=I)return ce(g,I,e,"month");var t,C=[];for(t=0;t<12;t++)C[t]=ce(g,t,e,"month");return C}function le(g,I,e,t){"boolean"===typeof g?(B(I)&&(e=I,I=void 0),I=I||""):(e=I=g,g=!1,B(I)&&(e=I,I=void 0),I=I||"");var C,Q=FI(),F=g?Q._week.dow:0;if(null!=e)return ce(I,(e+F)%7,t,"day");var n=[];for(C=0;C<7;C++)n[C]=ce(I,(C+F)%7,t,"day");return n}ie.calendar=function(g,I,e){var t=this._calendar[g]||this._calendar.sameElse;return V(t)?t.call(I,e):t},ie.longDateFormat=function(g){var I=this._longDateFormat[g],e=this._longDateFormat[g.toUpperCase()];return I||!e?I:(this._longDateFormat[g]=e.replace(/MMMM|MM|DD|dddd/g,(function(g){return g.slice(1)})),this._longDateFormat[g])},ie.invalidDate=function(){return this._invalidDate},ie.ordinal=function(g){return this._ordinal.replace("%d",g)},ie.preparse=se,ie.postformat=se,ie.relativeTime=function(g,I,e,t){var C=this._relativeTime[e];return V(C)?C(g,I,e,t):C.replace(/%d/i,g)},ie.pastFuture=function(g,I){var e=this._relativeTime[g>0?"future":"past"];return V(e)?e(I):e.replace(/%s/i,I)},ie.set=function(g){var I,e;for(e in g)V(I=g[e])?this[e]=I:this["_"+e]=I;this._config=g,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},ie.months=function(g,I){return g?C(this._months)?this._months[g.month()]:this._months[(this._months.isFormat||xg).test(I)?"format":"standalone"][g.month()]:C(this._months)?this._months:this._months.standalone},ie.monthsShort=function(g,I){return g?C(this._monthsShort)?this._monthsShort[g.month()]:this._monthsShort[xg.test(I)?"format":"standalone"][g.month()]:C(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},ie.monthsParse=function(g,I,e){var t,C,Q;if(this._monthsParseExact)return Gg.call(this,g,I,e);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),t=0;t<12;t++){if(C=c([2e3,t]),e&&!this._longMonthsParse[t]&&(this._longMonthsParse[t]=new RegExp("^"+this.months(C,"").replace(".","")+"$","i"),this._shortMonthsParse[t]=new RegExp("^"+this.monthsShort(C,"").replace(".","")+"$","i")),e||this._monthsParse[t]||(Q="^"+this.months(C,"")+"|^"+this.monthsShort(C,""),this._monthsParse[t]=new RegExp(Q.replace(".",""),"i")),e&&"MMMM"===I&&this._longMonthsParse[t].test(g))return t;if(e&&"MMM"===I&&this._shortMonthsParse[t].test(g))return t;if(!e&&this._monthsParse[t].test(g))return t}},ie.monthsRegex=function(g){return this._monthsParseExact?(s(this,"_monthsRegex")||pg.call(this),g?this._monthsStrictRegex:this._monthsRegex):(s(this,"_monthsRegex")||(this._monthsRegex=Dg),this._monthsStrictRegex&&g?this._monthsStrictRegex:this._monthsRegex)},ie.monthsShortRegex=function(g){return this._monthsParseExact?(s(this,"_monthsRegex")||pg.call(this),g?this._monthsShortStrictRegex:this._monthsShortRegex):(s(this,"_monthsShortRegex")||(this._monthsShortRegex=hg),this._monthsShortStrictRegex&&g?this._monthsShortStrictRegex:this._monthsShortRegex)},ie.week=function(g){return Xg(g,this._week.dow,this._week.doy).week},ie.firstDayOfYear=function(){return this._week.doy},ie.firstDayOfWeek=function(){return this._week.dow},ie.weekdays=function(g,I){var e=C(this._weekdays)?this._weekdays:this._weekdays[g&&!0!==g&&this._weekdays.isFormat.test(I)?"format":"standalone"];return!0===g?vg(e,this._week.dow):g?e[g.day()]:e},ie.weekdaysMin=function(g){return!0===g?vg(this._weekdaysMin,this._week.dow):g?this._weekdaysMin[g.day()]:this._weekdaysMin},ie.weekdaysShort=function(g){return!0===g?vg(this._weekdaysShort,this._week.dow):g?this._weekdaysShort[g.day()]:this._weekdaysShort},ie.weekdaysParse=function(g,I,e){var t,C,Q;if(this._weekdaysParseExact)return Yg.call(this,g,I,e);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),t=0;t<7;t++){if(C=c([2e3,1]).day(t),e&&!this._fullWeekdaysParse[t]&&(this._fullWeekdaysParse[t]=new RegExp("^"+this.weekdays(C,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[t]=new RegExp("^"+this.weekdaysShort(C,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[t]=new RegExp("^"+this.weekdaysMin(C,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[t]||(Q="^"+this.weekdays(C,"")+"|^"+this.weekdaysShort(C,"")+"|^"+this.weekdaysMin(C,""),this._weekdaysParse[t]=new RegExp(Q.replace(".",""),"i")),e&&"dddd"===I&&this._fullWeekdaysParse[t].test(g))return t;if(e&&"ddd"===I&&this._shortWeekdaysParse[t].test(g))return t;if(e&&"dd"===I&&this._minWeekdaysParse[t].test(g))return t;if(!e&&this._weekdaysParse[t].test(g))return t}},ie.weekdaysRegex=function(g){return this._weekdaysParseExact?(s(this,"_weekdaysRegex")||Og.call(this),g?this._weekdaysStrictRegex:this._weekdaysRegex):(s(this,"_weekdaysRegex")||(this._weekdaysRegex=wg),this._weekdaysStrictRegex&&g?this._weekdaysStrictRegex:this._weekdaysRegex)},ie.weekdaysShortRegex=function(g){return this._weekdaysParseExact?(s(this,"_weekdaysRegex")||Og.call(this),g?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(s(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Tg),this._weekdaysShortStrictRegex&&g?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},ie.weekdaysMinRegex=function(g){return this._weekdaysParseExact?(s(this,"_weekdaysRegex")||Og.call(this),g?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(s(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=zg),this._weekdaysMinStrictRegex&&g?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},ie.isPM=function(g){return"p"===(g+"").toLowerCase().charAt(0)},ie.meridiem=function(g,I,e){return g>11?e?"pm":"PM":e?"am":"AM"},CI("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(g){var I=g%10;return g+(1===Z(g%100/10)?"th":1===I?"st":2===I?"nd":3===I?"rd":"th")}}),t.lang=R("moment.lang is deprecated. Use moment.locale instead.",CI),t.langData=R("moment.langData is deprecated. Use moment.localeData instead.",FI);var ae=Math.abs;function re(g,I,e,t){var C=kI(I,e);return g._milliseconds+=t*C._milliseconds,g._days+=t*C._days,g._months+=t*C._months,g._bubble()}function oe(g){return g<0?Math.floor(g):Math.ceil(g)}function de(g){return 4800*g/146097}function ue(g){return 146097*g/4800}function ye(g){return function(){return this.as(g)}}var be=ye("ms"),Ze=ye("s"),me=ye("m"),xe=ye("h"),Re=ye("d"),Se=ye("w"),Ge=ye("M"),Le=ye("Q"),Ve=ye("y");function he(g){return function(){return this.isValid()?this._data[g]:NaN}}var De=he("milliseconds"),pe=he("seconds"),Ee=he("minutes"),Ne=he("hours"),We=he("days"),fe=he("months"),Xe=he("years"),Je=Math.round,ve={ss:44,s:45,m:45,h:22,d:26,M:11};function ke(g,I,e,t,C){return C.relativeTime(I||1,!!e,g,t)}var He=Math.abs;function Me(g){return(g>0)-(g<0)||+g}function Ye(){if(!this.isValid())return this.localeData().invalidDate();var g,I,e=He(this._milliseconds)/1e3,t=He(this._days),C=He(this._months);g=b(e/60),I=b(g/60),e%=60,g%=60;var Q=b(C/12),F=C%=12,B=t,n=I,U=g,s=e?e.toFixed(3).replace(/\.?0+$/,""):"",i=this.asSeconds();if(!i)return"P0D";var c=i<0?"-":"",A=Me(this._months)!==Me(i)?"-":"",l=Me(this._days)!==Me(i)?"-":"",a=Me(this._milliseconds)!==Me(i)?"-":"";return c+"P"+(Q?A+Q+"Y":"")+(F?A+F+"M":"")+(B?l+B+"D":"")+(n||U||s?"T":"")+(n?a+n+"H":"")+(U?a+U+"M":"")+(s?a+s+"S":"")}var we=VI.prototype;return we.isValid=function(){return this._isValid},we.abs=function(){var g=this._data;return this._milliseconds=ae(this._milliseconds),this._days=ae(this._days),this._months=ae(this._months),g.milliseconds=ae(g.milliseconds),g.seconds=ae(g.seconds),g.minutes=ae(g.minutes),g.hours=ae(g.hours),g.months=ae(g.months),g.years=ae(g.years),this},we.add=function(g,I){return re(this,g,I,1)},we.subtract=function(g,I){return re(this,g,I,-1)},we.as=function(g){if(!this.isValid())return NaN;var I,e,t=this._milliseconds;if("month"===(g=N(g))||"quarter"===g||"year"===g)switch(I=this._days+t/864e5,e=this._months+de(I),g){case"month":return e;case"quarter":return e/3;case"year":return e/12}else switch(I=this._days+Math.round(ue(this._months)),g){case"week":return I/7+t/6048e5;case"day":return I+t/864e5;case"hour":return 24*I+t/36e5;case"minute":return 1440*I+t/6e4;case"second":return 86400*I+t/1e3;case"millisecond":return Math.floor(864e5*I)+t;default:throw new Error("Unknown unit "+g)}},we.asMilliseconds=be,we.asSeconds=Ze,we.asMinutes=me,we.asHours=xe,we.asDays=Re,we.asWeeks=Se,we.asMonths=Ge,we.asQuarters=Le,we.asYears=Ve,we.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*Z(this._months/12):NaN},we._bubble=function(){var g,I,e,t,C,Q=this._milliseconds,F=this._days,B=this._months,n=this._data;return Q>=0&&F>=0&&B>=0||Q<=0&&F<=0&&B<=0||(Q+=864e5*oe(ue(B)+F),F=0,B=0),n.milliseconds=Q%1e3,g=b(Q/1e3),n.seconds=g%60,I=b(g/60),n.minutes=I%60,e=b(I/60),n.hours=e%24,F+=b(e/24),C=b(de(F)),B+=C,F-=oe(ue(C)),t=b(B/12),B%=12,n.days=F,n.months=B,n.years=t,this},we.clone=function(){return kI(this)},we.get=function(g){return g=N(g),this.isValid()?this[g+"s"]():NaN},we.milliseconds=De,we.seconds=pe,we.minutes=Ee,we.hours=Ne,we.days=We,we.weeks=function(){return b(this.days()/7)},we.months=fe,we.years=Xe,we.humanize=function(g){if(!this.isValid())return this.localeData().invalidDate();var I=this.localeData(),e=function(g,I,e){var t=kI(g).abs(),C=Je(t.as("s")),Q=Je(t.as("m")),F=Je(t.as("h")),B=Je(t.as("d")),n=Je(t.as("M")),U=Je(t.as("y")),s=C<=ve.ss&&["s",C]||C<ve.s&&["ss",C]||Q<=1&&["m"]||Q<ve.m&&["mm",Q]||F<=1&&["h"]||F<ve.h&&["hh",F]||B<=1&&["d"]||B<ve.d&&["dd",B]||n<=1&&["M"]||n<ve.M&&["MM",n]||U<=1&&["y"]||["yy",U];return s[2]=I,s[3]=+g>0,s[4]=e,ke.apply(null,s)}(this,!g,I);return g&&(e=I.pastFuture(+this,e)),I.postformat(e)},we.toISOString=Ye,we.toString=Ye,we.toJSON=Ye,we.locale=KI,we.localeData=PI,we.toIsoString=R("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Ye),we.lang=jI,Y("X",0,0,"unix"),Y("x",0,0,"valueOf"),Ug("x",Cg),Ug("X",/[+-]?\d+(\.\d{1,3})?/),Ag("X",(function(g,I,e){e._d=new Date(1e3*parseFloat(g,10))})),Ag("x",(function(g,I,e){e._d=new Date(Z(g))})),t.version="2.24.0",I=xI,t.fn=Ue,t.min=function(){var g=[].slice.call(arguments,0);return GI("isBefore",g)},t.max=function(){var g=[].slice.call(arguments,0);return GI("isAfter",g)},t.now=function(){return Date.now?Date.now():+new Date},t.utc=c,t.unix=function(g){return xI(1e3*g)},t.months=function(g,I){return Ae(g,I,"months")},t.isDate=n,t.locale=CI,t.invalid=a,t.duration=kI,t.isMoment=y,t.weekdays=function(g,I,e){return le(g,I,e,"weekdays")},t.parseZone=function(){return xI.apply(null,arguments).parseZone()},t.localeData=FI,t.isDuration=hI,t.monthsShort=function(g,I){return Ae(g,I,"monthsShort")},t.weekdaysMin=function(g,I,e){return le(g,I,e,"weekdaysMin")},t.defineLocale=QI,t.updateLocale=function(g,I){if(null!=I){var e,t,C=$g;null!=(t=tI(g))&&(C=t._config),I=h(C,I),(e=new D(I)).parentLocale=gI[g],gI[g]=e,CI(g)}else null!=gI[g]&&(null!=gI[g].parentLocale?gI[g]=gI[g].parentLocale:null!=gI[g]&&delete gI[g]);return gI[g]},t.locales=function(){return S(gI)},t.weekdaysShort=function(g,I,e){return le(g,I,e,"weekdaysShort")},t.normalizeUnits=N,t.relativeTimeRounding=function(g){return void 0===g?Je:"function"===typeof g&&(Je=g,!0)},t.relativeTimeThreshold=function(g,I){return void 0!==ve[g]&&(void 0===I?ve[g]:(ve[g]=I,"s"===g&&(ve.ss=I-1),!0))},t.calendarFormat=function(g,I){var e=g.diff(I,"days",!0);return e<-6?"sameElse":e<-1?"lastWeek":e<0?"lastDay":e<1?"sameDay":e<2?"nextDay":e<7?"nextWeek":"sameElse"},t.prototype=Ue,t.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},t}()}).call(this,e(666)(g))},function(g,I,e){"use strict";e.d(I,"a",(function(){return C}));var t=e(133);function C(g,I){if(null==g)return{};var e,C,Q=Object(t.a)(g,I);if(Object.getOwnPropertySymbols){var F=Object.getOwnPropertySymbols(g);for(C=0;C<F.length;C++)e=F[C],I.indexOf(e)>=0||Object.prototype.propertyIsEnumerable.call(g,e)&&(Q[e]=g[e])}return Q}},,function(g,I,e){"use strict";e.d(I,"a",(function(){return C}));var t=e(299);function C(g,I){return function(g){if(Array.isArray(g))return g}(g)||function(g,I){if("undefined"!==typeof Symbol&&Symbol.iterator in Object(g)){var e=[],t=!0,C=!1,Q=void 0;try{for(var F,B=g[Symbol.iterator]();!(t=(F=B.next()).done)&&(e.push(F.value),!I||e.length!==I);t=!0);}catch(n){C=!0,Q=n}finally{try{t||null==B.return||B.return()}finally{if(C)throw Q}}return e}}(g,I)||Object(t.a)(g,I)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}},,function(g,I,e){"use strict";e.r(I),e.d(I,"F",(function(){return t})),e.d(I,"T",(function(){return C})),e.d(I,"__",(function(){return Q})),e.d(I,"add",(function(){return U})),e.d(I,"addIndex",(function(){return l})),e.d(I,"adjust",(function(){return r})),e.d(I,"all",(function(){return m})),e.d(I,"allPass",(function(){return P})),e.d(I,"always",(function(){return _})),e.d(I,"and",(function(){return q})),e.d(I,"any",(function(){return gg})),e.d(I,"anyPass",(function(){return Ig})),e.d(I,"ap",(function(){return eg})),e.d(I,"aperture",(function(){return Qg})),e.d(I,"append",(function(){return Fg})),e.d(I,"apply",(function(){return Bg})),e.d(I,"applySpec",(function(){return sg})),e.d(I,"applyTo",(function(){return ig})),e.d(I,"ascend",(function(){return cg})),e.d(I,"assoc",(function(){return Ag})),e.d(I,"assocPath",(function(){return rg})),e.d(I,"binary",(function(){return dg})),e.d(I,"bind",(function(){return h})),e.d(I,"both",(function(){return Zg})),e.d(I,"call",(function(){return xg})),e.d(I,"chain",(function(){return Gg})),e.d(I,"clamp",(function(){return Lg})),e.d(I,"clone",(function(){return pg})),e.d(I,"comparator",(function(){return Eg})),e.d(I,"complement",(function(){return Wg})),e.d(I,"compose",(function(){return Mg})),e.d(I,"composeK",(function(){return Yg})),e.d(I,"composeP",(function(){return zg})),e.d(I,"composeWith",(function(){return qg})),e.d(I,"concat",(function(){return dI})),e.d(I,"cond",(function(){return uI})),e.d(I,"construct",(function(){return bI})),e.d(I,"constructN",(function(){return yI})),e.d(I,"contains",(function(){return ZI})),e.d(I,"converge",(function(){return mI})),e.d(I,"countBy",(function(){return SI})),e.d(I,"curry",(function(){return mg})),e.d(I,"curryN",(function(){return A})),e.d(I,"dec",(function(){return GI})),e.d(I,"defaultTo",(function(){return LI})),e.d(I,"descend",(function(){return VI})),e.d(I,"difference",(function(){return pI})),e.d(I,"differenceWith",(function(){return EI})),e.d(I,"dissoc",(function(){return NI})),e.d(I,"dissocPath",(function(){return XI})),e.d(I,"divide",(function(){return JI})),e.d(I,"drop",(function(){return kI})),e.d(I,"dropLast",(function(){return TI})),e.d(I,"dropLastWhile",(function(){return KI})),e.d(I,"dropRepeats",(function(){return $I})),e.d(I,"dropRepeatsWith",(function(){return qI})),e.d(I,"dropWhile",(function(){return Ie})),e.d(I,"either",(function(){return te})),e.d(I,"empty",(function(){return Ce})),e.d(I,"endsWith",(function(){return Fe})),e.d(I,"eqBy",(function(){return Be})),e.d(I,"eqProps",(function(){return ne})),e.d(I,"equals",(function(){return CI})),e.d(I,"evolve",(function(){return Ue})),e.d(I,"filter",(function(){return lI})),e.d(I,"find",(function(){return ie})),e.d(I,"findIndex",(function(){return Ae})),e.d(I,"findLast",(function(){return ae})),e.d(I,"findLastIndex",(function(){return oe})),e.d(I,"flatten",(function(){return de})),e.d(I,"flip",(function(){return ue})),e.d(I,"forEach",(function(){return ye})),e.d(I,"forEachObjIndexed",(function(){return be})),e.d(I,"fromPairs",(function(){return Ze})),e.d(I,"groupBy",(function(){return me})),e.d(I,"groupWith",(function(){return xe})),e.d(I,"gt",(function(){return Re})),e.d(I,"gte",(function(){return Se})),e.d(I,"has",(function(){return Le})),e.d(I,"hasIn",(function(){return Ve})),e.d(I,"hasPath",(function(){return Ge})),e.d(I,"head",(function(){return Kg})),e.d(I,"identical",(function(){return he})),e.d(I,"identity",(function(){return Pg})),e.d(I,"ifElse",(function(){return De})),e.d(I,"inc",(function(){return pe})),e.d(I,"includes",(function(){return Ee})),e.d(I,"indexBy",(function(){return Ne})),e.d(I,"indexOf",(function(){return We})),e.d(I,"init",(function(){return fe})),e.d(I,"innerJoin",(function(){return Xe})),e.d(I,"insert",(function(){return Je})),e.d(I,"insertAll",(function(){return ve})),e.d(I,"intersection",(function(){return Me})),e.d(I,"intersperse",(function(){return Ye})),e.d(I,"into",(function(){return je})),e.d(I,"invert",(function(){return Pe})),e.d(I,"invertObj",(function(){return _e})),e.d(I,"invoker",(function(){return qe})),e.d(I,"is",(function(){return $e})),e.d(I,"isEmpty",(function(){return gt})),e.d(I,"isNil",(function(){return ag})),e.d(I,"join",(function(){return It})),e.d(I,"juxt",(function(){return et})),e.d(I,"keys",(function(){return w})),e.d(I,"keysIn",(function(){return tt})),e.d(I,"last",(function(){return _I})),e.d(I,"lastIndexOf",(function(){return Ct})),e.d(I,"length",(function(){return Ft})),e.d(I,"lens",(function(){return Bt})),e.d(I,"lensIndex",(function(){return nt})),e.d(I,"lensPath",(function(){return Ut})),e.d(I,"lensProp",(function(){return st})),e.d(I,"lift",(function(){return bg})),e.d(I,"liftN",(function(){return yg})),e.d(I,"lt",(function(){return it})),e.d(I,"lte",(function(){return ct})),e.d(I,"map",(function(){return T})),e.d(I,"mapAccum",(function(){return At})),e.d(I,"mapAccumRight",(function(){return lt})),e.d(I,"mapObjIndexed",(function(){return at})),e.d(I,"match",(function(){return rt})),e.d(I,"mathMod",(function(){return ot})),e.d(I,"max",(function(){return x})),e.d(I,"maxBy",(function(){return dt})),e.d(I,"mean",(function(){return yt})),e.d(I,"median",(function(){return bt})),e.d(I,"memoizeWith",(function(){return Zt})),e.d(I,"merge",(function(){return mt})),e.d(I,"mergeAll",(function(){return xt})),e.d(I,"mergeDeepLeft",(function(){return Gt})),e.d(I,"mergeDeepRight",(function(){return Lt})),e.d(I,"mergeDeepWith",(function(){return Vt})),e.d(I,"mergeDeepWithKey",(function(){return St})),e.d(I,"mergeLeft",(function(){return ht})),e.d(I,"mergeRight",(function(){return Dt})),e.d(I,"mergeWith",(function(){return pt})),e.d(I,"mergeWithKey",(function(){return Rt})),e.d(I,"min",(function(){return Et})),e.d(I,"minBy",(function(){return Nt})),e.d(I,"modulo",(function(){return Wt})),e.d(I,"move",(function(){return ft})),e.d(I,"multiply",(function(){return Xt})),e.d(I,"nAry",(function(){return og})),e.d(I,"negate",(function(){return Jt})),e.d(I,"none",(function(){return vt})),e.d(I,"not",(function(){return Ng})),e.d(I,"nth",(function(){return Og})),e.d(I,"nthArg",(function(){return kt})),e.d(I,"o",(function(){return Ht})),e.d(I,"objOf",(function(){return Te})),e.d(I,"of",(function(){return Yt})),e.d(I,"omit",(function(){return wt})),e.d(I,"once",(function(){return Tt})),e.d(I,"or",(function(){return ee})),e.d(I,"otherwise",(function(){return Ot})),e.d(I,"over",(function(){return Kt})),e.d(I,"pair",(function(){return jt})),e.d(I,"partial",(function(){return _t})),e.d(I,"partialRight",(function(){return qt})),e.d(I,"partition",(function(){return $t})),e.d(I,"path",(function(){return z})),e.d(I,"pathEq",(function(){return gC})),e.d(I,"pathOr",(function(){return IC})),e.d(I,"pathSatisfies",(function(){return eC})),e.d(I,"pick",(function(){return tC})),e.d(I,"pickAll",(function(){return CC})),e.d(I,"pickBy",(function(){return QC})),e.d(I,"pipe",(function(){return kg})),e.d(I,"pipeK",(function(){return FC})),e.d(I,"pipeP",(function(){return Tg})),e.d(I,"pipeWith",(function(){return _g})),e.d(I,"pluck",(function(){return K})),e.d(I,"prepend",(function(){return BC})),e.d(I,"product",(function(){return nC})),e.d(I,"project",(function(){return sC})),e.d(I,"prop",(function(){return O})),e.d(I,"propEq",(function(){return iC})),e.d(I,"propIs",(function(){return cC})),e.d(I,"propOr",(function(){return AC})),e.d(I,"propSatisfies",(function(){return lC})),e.d(I,"props",(function(){return aC})),e.d(I,"range",(function(){return rC})),e.d(I,"reduce",(function(){return j})),e.d(I,"reduceBy",(function(){return RI})),e.d(I,"reduceRight",(function(){return oC})),e.d(I,"reduceWhile",(function(){return dC})),e.d(I,"reduced",(function(){return uC})),e.d(I,"reject",(function(){return aI})),e.d(I,"remove",(function(){return WI})),e.d(I,"repeat",(function(){return bC})),e.d(I,"replace",(function(){return ZC})),e.d(I,"reverse",(function(){return Hg})),e.d(I,"scan",(function(){return mC})),e.d(I,"sequence",(function(){return xC})),e.d(I,"set",(function(){return RC})),e.d(I,"slice",(function(){return Jg})),e.d(I,"sort",(function(){return SC})),e.d(I,"sortBy",(function(){return GC})),e.d(I,"sortWith",(function(){return LC})),e.d(I,"split",(function(){return VC})),e.d(I,"splitAt",(function(){return hC})),e.d(I,"splitEvery",(function(){return DC})),e.d(I,"splitWhen",(function(){return pC})),e.d(I,"startsWith",(function(){return EC})),e.d(I,"subtract",(function(){return NC})),e.d(I,"sum",(function(){return ut})),e.d(I,"symmetricDifference",(function(){return WC})),e.d(I,"symmetricDifferenceWith",(function(){return fC})),e.d(I,"tail",(function(){return vg})),e.d(I,"take",(function(){return MI})),e.d(I,"takeLast",(function(){return Qe})),e.d(I,"takeLastWhile",(function(){return XC})),e.d(I,"takeWhile",(function(){return vC})),e.d(I,"tap",(function(){return HC})),e.d(I,"test",(function(){return MC})),e.d(I,"then",(function(){return YC})),e.d(I,"times",(function(){return yC})),e.d(I,"toLower",(function(){return wC})),e.d(I,"toPairs",(function(){return TC})),e.d(I,"toPairsIn",(function(){return zC})),e.d(I,"toString",(function(){return oI})),e.d(I,"toUpper",(function(){return OC})),e.d(I,"transduce",(function(){return KC})),e.d(I,"transpose",(function(){return jC})),e.d(I,"traverse",(function(){return PC})),e.d(I,"trim",(function(){return qC})),e.d(I,"tryCatch",(function(){return $C})),e.d(I,"type",(function(){return hg})),e.d(I,"unapply",(function(){return gQ})),e.d(I,"unary",(function(){return IQ})),e.d(I,"uncurryN",(function(){return eQ})),e.d(I,"unfold",(function(){return tQ})),e.d(I,"union",(function(){return CQ})),e.d(I,"unionWith",(function(){return FQ})),e.d(I,"uniq",(function(){return He})),e.d(I,"uniqBy",(function(){return ke})),e.d(I,"uniqWith",(function(){return QQ})),e.d(I,"unless",(function(){return BQ})),e.d(I,"unnest",(function(){return nQ})),e.d(I,"until",(function(){return UQ})),e.d(I,"update",(function(){return fI})),e.d(I,"useWith",(function(){return UC})),e.d(I,"values",(function(){return ng})),e.d(I,"valuesIn",(function(){return sQ})),e.d(I,"view",(function(){return cQ})),e.d(I,"when",(function(){return AQ})),e.d(I,"where",(function(){return lQ})),e.d(I,"whereEq",(function(){return aQ})),e.d(I,"without",(function(){return rQ})),e.d(I,"xprod",(function(){return oQ})),e.d(I,"zip",(function(){return dQ})),e.d(I,"zipObj",(function(){return uQ})),e.d(I,"zipWith",(function(){return yQ})),e.d(I,"thunkify",(function(){return bQ}));var t=function(){return!1},C=function(){return!0},Q={"@@functional/placeholder":!0};function F(g){return null!=g&&"object"===typeof g&&!0===g["@@functional/placeholder"]}function B(g){return function I(e){return 0===arguments.length||F(e)?I:g.apply(this,arguments)}}function n(g){return function I(e,t){switch(arguments.length){case 0:return I;case 1:return F(e)?I:B((function(I){return g(e,I)}));default:return F(e)&&F(t)?I:F(e)?B((function(I){return g(I,t)})):F(t)?B((function(I){return g(e,I)})):g(e,t)}}}var U=n((function(g,I){return Number(g)+Number(I)}));function s(g,I){var e;I=I||[];var t=(g=g||[]).length,C=I.length,Q=[];for(e=0;e<t;)Q[Q.length]=g[e],e+=1;for(e=0;e<C;)Q[Q.length]=I[e],e+=1;return Q}function i(g,I){switch(g){case 0:return function(){return I.apply(this,arguments)};case 1:return function(g){return I.apply(this,arguments)};case 2:return function(g,e){return I.apply(this,arguments)};case 3:return function(g,e,t){return I.apply(this,arguments)};case 4:return function(g,e,t,C){return I.apply(this,arguments)};case 5:return function(g,e,t,C,Q){return I.apply(this,arguments)};case 6:return function(g,e,t,C,Q,F){return I.apply(this,arguments)};case 7:return function(g,e,t,C,Q,F,B){return I.apply(this,arguments)};case 8:return function(g,e,t,C,Q,F,B,n){return I.apply(this,arguments)};case 9:return function(g,e,t,C,Q,F,B,n,U){return I.apply(this,arguments)};case 10:return function(g,e,t,C,Q,F,B,n,U,s){return I.apply(this,arguments)};default:throw new Error("First argument to _arity must be a non-negative integer no greater than ten")}}function c(g,I,e){return function(){for(var t=[],C=0,Q=g,B=0;B<I.length||C<arguments.length;){var n;B<I.length&&(!F(I[B])||C>=arguments.length)?n=I[B]:(n=arguments[C],C+=1),t[B]=n,F(n)||(Q-=1),B+=1}return Q<=0?e.apply(this,t):i(Q,c(g,t,e))}}var A=n((function(g,I){return 1===g?B(I):i(g,c(g,[],I))})),l=B((function(g){return A(g.length,(function(){var I=0,e=arguments[0],t=arguments[arguments.length-1],C=Array.prototype.slice.call(arguments,0);return C[0]=function(){var g=e.apply(this,s(arguments,[I,t]));return I+=1,g},g.apply(this,C)}))}));function a(g){return function I(e,t,C){switch(arguments.length){case 0:return I;case 1:return F(e)?I:n((function(I,t){return g(e,I,t)}));case 2:return F(e)&&F(t)?I:F(e)?n((function(I,e){return g(I,t,e)})):F(t)?n((function(I,t){return g(e,I,t)})):B((function(I){return g(e,t,I)}));default:return F(e)&&F(t)&&F(C)?I:F(e)&&F(t)?n((function(I,e){return g(I,e,C)})):F(e)&&F(C)?n((function(I,e){return g(I,t,e)})):F(t)&&F(C)?n((function(I,t){return g(e,I,t)})):F(e)?B((function(I){return g(I,t,C)})):F(t)?B((function(I){return g(e,I,C)})):F(C)?B((function(I){return g(e,t,I)})):g(e,t,C)}}}var r=a((function(g,I,e){if(g>=e.length||g<-e.length)return e;var t=(g<0?e.length:0)+g,C=s(e);return C[t]=I(e[t]),C})),o=Array.isArray||function(g){return null!=g&&g.length>=0&&"[object Array]"===Object.prototype.toString.call(g)};function d(g){return null!=g&&"function"===typeof g["@@transducer/step"]}function u(g,I,e){return function(){if(0===arguments.length)return e();var t=Array.prototype.slice.call(arguments,0),C=t.pop();if(!o(C)){for(var Q=0;Q<g.length;){if("function"===typeof C[g[Q]])return C[g[Q]].apply(C,t);Q+=1}if(d(C)){var F=I.apply(null,t);return F(C)}}return e.apply(this,arguments)}}function y(g){return g&&g["@@transducer/reduced"]?g:{"@@transducer/value":g,"@@transducer/reduced":!0}}var b={init:function(){return this.xf["@@transducer/init"]()},result:function(g){return this.xf["@@transducer/result"](g)}},Z=function(){function g(g,I){this.xf=I,this.f=g,this.all=!0}return g.prototype["@@transducer/init"]=b.init,g.prototype["@@transducer/result"]=function(g){return this.all&&(g=this.xf["@@transducer/step"](g,!0)),this.xf["@@transducer/result"](g)},g.prototype["@@transducer/step"]=function(g,I){return this.f(I)||(this.all=!1,g=y(this.xf["@@transducer/step"](g,!1))),g},g}(),m=n(u(["all"],n((function(g,I){return new Z(g,I)})),(function(g,I){for(var e=0;e<I.length;){if(!g(I[e]))return!1;e+=1}return!0}))),x=n((function(g,I){return I>g?I:g}));function R(g,I){for(var e=0,t=I.length,C=Array(t);e<t;)C[e]=g(I[e]),e+=1;return C}function S(g){return"[object String]"===Object.prototype.toString.call(g)}var G=B((function(g){return!!o(g)||!!g&&("object"===typeof g&&(!S(g)&&(1===g.nodeType?!!g.length:0===g.length||g.length>0&&(g.hasOwnProperty(0)&&g.hasOwnProperty(g.length-1)))))})),L=function(){function g(g){this.f=g}return g.prototype["@@transducer/init"]=function(){throw new Error("init not implemented on XWrap")},g.prototype["@@transducer/result"]=function(g){return g},g.prototype["@@transducer/step"]=function(g,I){return this.f(g,I)},g}();function V(g){return new L(g)}var h=n((function(g,I){return i(g.length,(function(){return g.apply(I,arguments)}))}));function D(g,I,e){for(var t=e.next();!t.done;){if((I=g["@@transducer/step"](I,t.value))&&I["@@transducer/reduced"]){I=I["@@transducer/value"];break}t=e.next()}return g["@@transducer/result"](I)}function p(g,I,e,t){return g["@@transducer/result"](e[t](h(g["@@transducer/step"],g),I))}var E="undefined"!==typeof Symbol?Symbol.iterator:"@@iterator";function N(g,I,e){if("function"===typeof g&&(g=V(g)),G(e))return function(g,I,e){for(var t=0,C=e.length;t<C;){if((I=g["@@transducer/step"](I,e[t]))&&I["@@transducer/reduced"]){I=I["@@transducer/value"];break}t+=1}return g["@@transducer/result"](I)}(g,I,e);if("function"===typeof e["fantasy-land/reduce"])return p(g,I,e,"fantasy-land/reduce");if(null!=e[E])return D(g,I,e[E]());if("function"===typeof e.next)return D(g,I,e);if("function"===typeof e.reduce)return p(g,I,e,"reduce");throw new TypeError("reduce: list must be array or iterable")}var W=function(){function g(g,I){this.xf=I,this.f=g}return g.prototype["@@transducer/init"]=b.init,g.prototype["@@transducer/result"]=b.result,g.prototype["@@transducer/step"]=function(g,I){return this.xf["@@transducer/step"](g,this.f(I))},g}(),f=n((function(g,I){return new W(g,I)}));function X(g,I){return Object.prototype.hasOwnProperty.call(I,g)}var J=Object.prototype.toString,v=function(){return"[object Arguments]"===J.call(arguments)?function(g){return"[object Arguments]"===J.call(g)}:function(g){return X("callee",g)}}(),k=!{toString:null}.propertyIsEnumerable("toString"),H=["constructor","valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],M=function(){return arguments.propertyIsEnumerable("length")}(),Y=function(g,I){for(var e=0;e<g.length;){if(g[e]===I)return!0;e+=1}return!1},w="function"!==typeof Object.keys||M?B((function(g){if(Object(g)!==g)return[];var I,e,t=[],C=M&&v(g);for(I in g)!X(I,g)||C&&"length"===I||(t[t.length]=I);if(k)for(e=H.length-1;e>=0;)X(I=H[e],g)&&!Y(t,I)&&(t[t.length]=I),e-=1;return t})):B((function(g){return Object(g)!==g?[]:Object.keys(g)})),T=n(u(["fantasy-land/map","map"],f,(function(g,I){switch(Object.prototype.toString.call(I)){case"[object Function]":return A(I.length,(function(){return g.call(this,I.apply(this,arguments))}));case"[object Object]":return N((function(e,t){return e[t]=g(I[t]),e}),{},w(I));default:return R(g,I)}}))),z=n((function(g,I){for(var e=I,t=0;t<g.length;){if(null==e)return;e=e[g[t]],t+=1}return e})),O=n((function(g,I){return z([g],I)})),K=n((function(g,I){return T(O(g),I)})),j=a(N),P=B((function(g){return A(j(x,0,K("length",g)),(function(){for(var I=0,e=g.length;I<e;){if(!g[I].apply(this,arguments))return!1;I+=1}return!0}))})),_=B((function(g){return function(){return g}})),q=n((function(g,I){return g&&I})),$=function(){function g(g,I){this.xf=I,this.f=g,this.any=!1}return g.prototype["@@transducer/init"]=b.init,g.prototype["@@transducer/result"]=function(g){return this.any||(g=this.xf["@@transducer/step"](g,!1)),this.xf["@@transducer/result"](g)},g.prototype["@@transducer/step"]=function(g,I){return this.f(I)&&(this.any=!0,g=y(this.xf["@@transducer/step"](g,!0))),g},g}(),gg=n(u(["any"],n((function(g,I){return new $(g,I)})),(function(g,I){for(var e=0;e<I.length;){if(g(I[e]))return!0;e+=1}return!1}))),Ig=B((function(g){return A(j(x,0,K("length",g)),(function(){for(var I=0,e=g.length;I<e;){if(g[I].apply(this,arguments))return!0;I+=1}return!1}))})),eg=n((function(g,I){return"function"===typeof I["fantasy-land/ap"]?I["fantasy-land/ap"](g):"function"===typeof g.ap?g.ap(I):"function"===typeof g?function(e){return g(e)(I(e))}:N((function(g,e){return s(g,T(e,I))}),[],g)}));function tg(g,I){for(var e=0,t=I.length-(g-1),C=new Array(t>=0?t:0);e<t;)C[e]=Array.prototype.slice.call(I,e,e+g),e+=1;return C}var Cg=function(){function g(g,I){this.xf=I,this.pos=0,this.full=!1,this.acc=new Array(g)}return g.prototype["@@transducer/init"]=b.init,g.prototype["@@transducer/result"]=function(g){return this.acc=null,this.xf["@@transducer/result"](g)},g.prototype["@@transducer/step"]=function(g,I){return this.store(I),this.full?this.xf["@@transducer/step"](g,this.getCopy()):g},g.prototype.store=function(g){this.acc[this.pos]=g,this.pos+=1,this.pos===this.acc.length&&(this.pos=0,this.full=!0)},g.prototype.getCopy=function(){return s(Array.prototype.slice.call(this.acc,this.pos),Array.prototype.slice.call(this.acc,0,this.pos))},g}(),Qg=n(u([],n((function(g,I){return new Cg(g,I)})),tg)),Fg=n((function(g,I){return s(I,[g])})),Bg=n((function(g,I){return g.apply(this,I)})),ng=B((function(g){for(var I=w(g),e=I.length,t=[],C=0;C<e;)t[C]=g[I[C]],C+=1;return t}));function Ug(g,I){return w(I).reduce((function(e,t){return e[t]=g(I[t]),e}),{})}var sg=B((function g(I){return I=Ug((function(I){return"function"==typeof I?I:g(I)}),I),A(j(x,0,K("length",ng(I))),(function(){var g=arguments;return Ug((function(I){return Bg(I,g)}),I)}))})),ig=n((function(g,I){return I(g)})),cg=a((function(g,I,e){var t=g(I),C=g(e);return t<C?-1:t>C?1:0})),Ag=a((function(g,I,e){var t={};for(var C in e)t[C]=e[C];return t[g]=I,t})),lg=Number.isInteger||function(g){return g<<0===g},ag=B((function(g){return null==g})),rg=a((function g(I,e,t){if(0===I.length)return e;var C=I[0];if(I.length>1){var Q=!ag(t)&&X(C,t)?t[C]:lg(I[1])?[]:{};e=g(Array.prototype.slice.call(I,1),e,Q)}if(lg(C)&&o(t)){var F=[].concat(t);return F[C]=e,F}return Ag(C,e,t)})),og=n((function(g,I){switch(g){case 0:return function(){return I.call(this)};case 1:return function(g){return I.call(this,g)};case 2:return function(g,e){return I.call(this,g,e)};case 3:return function(g,e,t){return I.call(this,g,e,t)};case 4:return function(g,e,t,C){return I.call(this,g,e,t,C)};case 5:return function(g,e,t,C,Q){return I.call(this,g,e,t,C,Q)};case 6:return function(g,e,t,C,Q,F){return I.call(this,g,e,t,C,Q,F)};case 7:return function(g,e,t,C,Q,F,B){return I.call(this,g,e,t,C,Q,F,B)};case 8:return function(g,e,t,C,Q,F,B,n){return I.call(this,g,e,t,C,Q,F,B,n)};case 9:return function(g,e,t,C,Q,F,B,n,U){return I.call(this,g,e,t,C,Q,F,B,n,U)};case 10:return function(g,e,t,C,Q,F,B,n,U,s){return I.call(this,g,e,t,C,Q,F,B,n,U,s)};default:throw new Error("First argument to nAry must be a non-negative integer no greater than ten")}})),dg=B((function(g){return og(2,g)}));function ug(g){return"[object Function]"===Object.prototype.toString.call(g)}var yg=n((function(g,I){var e=A(g,I);return A(g,(function(){return N(eg,T(e,arguments[0]),Array.prototype.slice.call(arguments,1))}))})),bg=B((function(g){return yg(g.length,g)})),Zg=n((function(g,I){return ug(g)?function(){return g.apply(this,arguments)&&I.apply(this,arguments)}:bg(q)(g,I)})),mg=B((function(g){return A(g.length,g)})),xg=mg((function(g){return g.apply(this,Array.prototype.slice.call(arguments,1))}));function Rg(g){return function I(e){for(var t,C,Q,F=[],B=0,n=e.length;B<n;){if(G(e[B]))for(Q=0,C=(t=g?I(e[B]):e[B]).length;Q<C;)F[F.length]=t[Q],Q+=1;else F[F.length]=e[B];B+=1}return F}}var Sg=function(g){var I=function(g){return{"@@transducer/init":b.init,"@@transducer/result":function(I){return g["@@transducer/result"](I)},"@@transducer/step":function(I,e){var t=g["@@transducer/step"](I,e);return t["@@transducer/reduced"]?{"@@transducer/value":t,"@@transducer/reduced":!0}:t}}}(g);return{"@@transducer/init":b.init,"@@transducer/result":function(g){return I["@@transducer/result"](g)},"@@transducer/step":function(g,e){return G(e)?N(I,g,e):N(I,g,[e])}}},Gg=n(u(["fantasy-land/chain","chain"],n((function(g,I){return T(g,Sg(I))})),(function(g,I){return"function"===typeof I?function(e){return g(I(e))(e)}:Rg(!1)(T(g,I))}))),Lg=a((function(g,I,e){if(g>I)throw new Error("min must not be greater than max in clamp(min, max, value)");return e<g?g:e>I?I:e}));function Vg(g){return new RegExp(g.source,(g.global?"g":"")+(g.ignoreCase?"i":"")+(g.multiline?"m":"")+(g.sticky?"y":"")+(g.unicode?"u":""))}var hg=B((function(g){return null===g?"Null":void 0===g?"Undefined":Object.prototype.toString.call(g).slice(8,-1)}));function Dg(g,I,e,t){var C=function(C){for(var Q=I.length,F=0;F<Q;){if(g===I[F])return e[F];F+=1}for(var B in I[F+1]=g,e[F+1]=C,g)C[B]=t?Dg(g[B],I,e,!0):g[B];return C};switch(hg(g)){case"Object":return C({});case"Array":return C([]);case"Date":return new Date(g.valueOf());case"RegExp":return Vg(g);default:return g}}var pg=B((function(g){return null!=g&&"function"===typeof g.clone?g.clone():Dg(g,[],[],!0)})),Eg=B((function(g){return function(I,e){return g(I,e)?-1:g(e,I)?1:0}})),Ng=B((function(g){return!g})),Wg=bg(Ng);function fg(g,I){return function(){return I.call(this,g.apply(this,arguments))}}function Xg(g,I){return function(){var e=arguments.length;if(0===e)return I();var t=arguments[e-1];return o(t)||"function"!==typeof t[g]?I.apply(this,arguments):t[g].apply(t,Array.prototype.slice.call(arguments,0,e-1))}}var Jg=a(Xg("slice",(function(g,I,e){return Array.prototype.slice.call(e,g,I)}))),vg=B(Xg("tail",Jg(1,1/0)));function kg(){if(0===arguments.length)throw new Error("pipe requires at least one argument");return i(arguments[0].length,j(fg,arguments[0],vg(arguments)))}var Hg=B((function(g){return S(g)?g.split("").reverse().join(""):Array.prototype.slice.call(g,0).reverse()}));function Mg(){if(0===arguments.length)throw new Error("compose requires at least one argument");return kg.apply(this,Hg(arguments))}function Yg(){if(0===arguments.length)throw new Error("composeK requires at least one argument");var g=Array.prototype.slice.call(arguments),I=g.pop();return Mg(Mg.apply(this,T(Gg,g)),I)}function wg(g,I){return function(){var e=this;return g.apply(e,arguments).then((function(g){return I.call(e,g)}))}}function Tg(){if(0===arguments.length)throw new Error("pipeP requires at least one argument");return i(arguments[0].length,j(wg,arguments[0],vg(arguments)))}function zg(){if(0===arguments.length)throw new Error("composeP requires at least one argument");return Tg.apply(this,Hg(arguments))}var Og=n((function(g,I){var e=g<0?I.length+g:g;return S(I)?I.charAt(e):I[e]})),Kg=Og(0);function jg(g){return g}var Pg=B(jg),_g=n((function(g,I){if(I.length<=0)return Pg;var e=Kg(I),t=vg(I);return i(e.length,(function(){return N((function(I,e){return g.call(this,e,I)}),e.apply(this,arguments),t)}))})),qg=n((function(g,I){return _g.apply(this,[g,Hg(I)])}));function $g(g){for(var I,e=[];!(I=g.next()).done;)e.push(I.value);return e}function gI(g,I,e){for(var t=0,C=e.length;t<C;){if(g(I,e[t]))return!0;t+=1}return!1}var II="function"===typeof Object.is?Object.is:function(g,I){return g===I?0!==g||1/g===1/I:g!==g&&I!==I};function eI(g,I,e,t){var C=$g(g);function Q(g,I){return tI(g,I,e.slice(),t.slice())}return!gI((function(g,I){return!gI(Q,I,g)}),$g(I),C)}function tI(g,I,e,t){if(II(g,I))return!0;var C=hg(g);if(C!==hg(I))return!1;if(null==g||null==I)return!1;if("function"===typeof g["fantasy-land/equals"]||"function"===typeof I["fantasy-land/equals"])return"function"===typeof g["fantasy-land/equals"]&&g["fantasy-land/equals"](I)&&"function"===typeof I["fantasy-land/equals"]&&I["fantasy-land/equals"](g);if("function"===typeof g.equals||"function"===typeof I.equals)return"function"===typeof g.equals&&g.equals(I)&&"function"===typeof I.equals&&I.equals(g);switch(C){case"Arguments":case"Array":case"Object":if("function"===typeof g.constructor&&"Promise"===function(g){var I=String(g).match(/^function (\w*)/);return null==I?"":I[1]}(g.constructor))return g===I;break;case"Boolean":case"Number":case"String":if(typeof g!==typeof I||!II(g.valueOf(),I.valueOf()))return!1;break;case"Date":if(!II(g.valueOf(),I.valueOf()))return!1;break;case"Error":return g.name===I.name&&g.message===I.message;case"RegExp":if(g.source!==I.source||g.global!==I.global||g.ignoreCase!==I.ignoreCase||g.multiline!==I.multiline||g.sticky!==I.sticky||g.unicode!==I.unicode)return!1}for(var Q=e.length-1;Q>=0;){if(e[Q]===g)return t[Q]===I;Q-=1}switch(C){case"Map":return g.size===I.size&&eI(g.entries(),I.entries(),e.concat([g]),t.concat([I]));case"Set":return g.size===I.size&&eI(g.values(),I.values(),e.concat([g]),t.concat([I]));case"Arguments":case"Array":case"Object":case"Boolean":case"Number":case"String":case"Date":case"Error":case"RegExp":case"Int8Array":case"Uint8Array":case"Uint8ClampedArray":case"Int16Array":case"Uint16Array":case"Int32Array":case"Uint32Array":case"Float32Array":case"Float64Array":case"ArrayBuffer":break;default:return!1}var F=w(g);if(F.length!==w(I).length)return!1;var B=e.concat([g]),n=t.concat([I]);for(Q=F.length-1;Q>=0;){var U=F[Q];if(!X(U,I)||!tI(I[U],g[U],B,n))return!1;Q-=1}return!0}var CI=n((function(g,I){return tI(g,I,[],[])}));function QI(g,I,e){var t,C;if("function"===typeof g.indexOf)switch(typeof I){case"number":if(0===I){for(t=1/I;e<g.length;){if(0===(C=g[e])&&1/C===t)return e;e+=1}return-1}if(I!==I){for(;e<g.length;){if("number"===typeof(C=g[e])&&C!==C)return e;e+=1}return-1}return g.indexOf(I,e);case"string":case"boolean":case"function":case"undefined":return g.indexOf(I,e);case"object":if(null===I)return g.indexOf(I,e)}for(;e<g.length;){if(CI(g[e],I))return e;e+=1}return-1}function FI(g,I){return QI(I,g,0)>=0}function BI(g){return'"'+g.replace(/\\/g,"\\\\").replace(/[\b]/g,"\\b").replace(/\f/g,"\\f").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t").replace(/\v/g,"\\v").replace(/\0/g,"\\0").replace(/"/g,'\\"')+'"'}var nI=function(g){return(g<10?"0":"")+g},UI="function"===typeof Date.prototype.toISOString?function(g){return g.toISOString()}:function(g){return g.getUTCFullYear()+"-"+nI(g.getUTCMonth()+1)+"-"+nI(g.getUTCDate())+"T"+nI(g.getUTCHours())+":"+nI(g.getUTCMinutes())+":"+nI(g.getUTCSeconds())+"."+(g.getUTCMilliseconds()/1e3).toFixed(3).slice(2,5)+"Z"};function sI(g){return function(){return!g.apply(this,arguments)}}function iI(g,I){for(var e=0,t=I.length,C=[];e<t;)g(I[e])&&(C[C.length]=I[e]),e+=1;return C}function cI(g){return"[object Object]"===Object.prototype.toString.call(g)}var AI=function(){function g(g,I){this.xf=I,this.f=g}return g.prototype["@@transducer/init"]=b.init,g.prototype["@@transducer/result"]=b.result,g.prototype["@@transducer/step"]=function(g,I){return this.f(I)?this.xf["@@transducer/step"](g,I):g},g}(),lI=n(u(["filter"],n((function(g,I){return new AI(g,I)})),(function(g,I){return cI(I)?N((function(e,t){return g(I[t])&&(e[t]=I[t]),e}),{},w(I)):iI(g,I)}))),aI=n((function(g,I){return lI(sI(g),I)}));function rI(g,I){var e=function(e){var t=I.concat([g]);return FI(e,t)?"<Circular>":rI(e,t)},t=function(g,I){return R((function(I){return BI(I)+": "+e(g[I])}),I.slice().sort())};switch(Object.prototype.toString.call(g)){case"[object Arguments]":return"(function() { return arguments; }("+R(e,g).join(", ")+"))";case"[object Array]":return"["+R(e,g).concat(t(g,aI((function(g){return/^\d+$/.test(g)}),w(g)))).join(", ")+"]";case"[object Boolean]":return"object"===typeof g?"new Boolean("+e(g.valueOf())+")":g.toString();case"[object Date]":return"new Date("+(isNaN(g.valueOf())?e(NaN):BI(UI(g)))+")";case"[object Null]":return"null";case"[object Number]":return"object"===typeof g?"new Number("+e(g.valueOf())+")":1/g===-1/0?"-0":g.toString(10);case"[object String]":return"object"===typeof g?"new String("+e(g.valueOf())+")":BI(g);case"[object Undefined]":return"undefined";default:if("function"===typeof g.toString){var C=g.toString();if("[object Object]"!==C)return C}return"{"+t(g,w(g)).join(", ")+"}"}}var oI=B((function(g){return rI(g,[])})),dI=n((function(g,I){if(o(g)){if(o(I))return g.concat(I);throw new TypeError(oI(I)+" is not an array")}if(S(g)){if(S(I))return g+I;throw new TypeError(oI(I)+" is not a string")}if(null!=g&&ug(g["fantasy-land/concat"]))return g["fantasy-land/concat"](I);if(null!=g&&ug(g.concat))return g.concat(I);throw new TypeError(oI(g)+' does not have a method named "concat" or "fantasy-land/concat"')})),uI=B((function(g){return i(j(x,0,T((function(g){return g[0].length}),g)),(function(){for(var I=0;I<g.length;){if(g[I][0].apply(this,arguments))return g[I][1].apply(this,arguments);I+=1}}))})),yI=n((function(g,I){if(g>10)throw new Error("Constructor with greater than ten arguments");return 0===g?function(){return new I}:mg(og(g,(function(g,e,t,C,Q,F,B,n,U,s){switch(arguments.length){case 1:return new I(g);case 2:return new I(g,e);case 3:return new I(g,e,t);case 4:return new I(g,e,t,C);case 5:return new I(g,e,t,C,Q);case 6:return new I(g,e,t,C,Q,F);case 7:return new I(g,e,t,C,Q,F,B);case 8:return new I(g,e,t,C,Q,F,B,n);case 9:return new I(g,e,t,C,Q,F,B,n,U);case 10:return new I(g,e,t,C,Q,F,B,n,U,s)}})))})),bI=B((function(g){return yI(g.length,g)})),ZI=n(FI),mI=n((function(g,I){return A(j(x,0,K("length",I)),(function(){var e=arguments,t=this;return g.apply(t,R((function(g){return g.apply(t,e)}),I))}))})),xI=function(){function g(g,I,e,t){this.valueFn=g,this.valueAcc=I,this.keyFn=e,this.xf=t,this.inputs={}}return g.prototype["@@transducer/init"]=b.init,g.prototype["@@transducer/result"]=function(g){var I;for(I in this.inputs)if(X(I,this.inputs)&&(g=this.xf["@@transducer/step"](g,this.inputs[I]))["@@transducer/reduced"]){g=g["@@transducer/value"];break}return this.inputs=null,this.xf["@@transducer/result"](g)},g.prototype["@@transducer/step"]=function(g,I){var e=this.keyFn(I);return this.inputs[e]=this.inputs[e]||[e,this.valueAcc],this.inputs[e][1]=this.valueFn(this.inputs[e][1],I),g},g}(),RI=c(4,[],u([],c(4,[],(function(g,I,e,t){return new xI(g,I,e,t)})),(function(g,I,e,t){return N((function(t,C){var Q=e(C);return t[Q]=g(X(Q,t)?t[Q]:I,C),t}),{},t)}))),SI=RI((function(g,I){return g+1}),0),GI=U(-1),LI=n((function(g,I){return null==I||I!==I?g:I})),VI=a((function(g,I,e){var t=g(I),C=g(e);return t>C?-1:t<C?1:0}));function hI(g,I,e){var t,C=typeof g;switch(C){case"string":case"number":return 0===g&&1/g===-1/0?!!e._items["-0"]||(I&&(e._items["-0"]=!0),!1):null!==e._nativeSet?I?(t=e._nativeSet.size,e._nativeSet.add(g),e._nativeSet.size===t):e._nativeSet.has(g):C in e._items?g in e._items[C]||(I&&(e._items[C][g]=!0),!1):(I&&(e._items[C]={},e._items[C][g]=!0),!1);case"boolean":if(C in e._items){var Q=g?1:0;return!!e._items[C][Q]||(I&&(e._items[C][Q]=!0),!1)}return I&&(e._items[C]=g?[!1,!0]:[!0,!1]),!1;case"function":return null!==e._nativeSet?I?(t=e._nativeSet.size,e._nativeSet.add(g),e._nativeSet.size===t):e._nativeSet.has(g):C in e._items?!!FI(g,e._items[C])||(I&&e._items[C].push(g),!1):(I&&(e._items[C]=[g]),!1);case"undefined":return!!e._items[C]||(I&&(e._items[C]=!0),!1);case"object":if(null===g)return!!e._items.null||(I&&(e._items.null=!0),!1);default:return(C=Object.prototype.toString.call(g))in e._items?!!FI(g,e._items[C])||(I&&e._items[C].push(g),!1):(I&&(e._items[C]=[g]),!1)}}var DI=function(){function g(){this._nativeSet="function"===typeof Set?new Set:null,this._items={}}return g.prototype.add=function(g){return!hI(g,!0,this)},g.prototype.has=function(g){return hI(g,!1,this)},g}(),pI=n((function(g,I){for(var e=[],t=0,C=g.length,Q=I.length,F=new DI,B=0;B<Q;B+=1)F.add(I[B]);for(;t<C;)F.add(g[t])&&(e[e.length]=g[t]),t+=1;return e})),EI=a((function(g,I,e){for(var t=[],C=0,Q=I.length;C<Q;)gI(g,I[C],e)||gI(g,I[C],t)||t.push(I[C]),C+=1;return t})),NI=n((function(g,I){var e={};for(var t in I)e[t]=I[t];return delete e[g],e})),WI=a((function(g,I,e){var t=Array.prototype.slice.call(e,0);return t.splice(g,I),t})),fI=a((function(g,I,e){return r(g,_(I),e)})),XI=n((function g(I,e){switch(I.length){case 0:return e;case 1:return lg(I[0])&&o(e)?WI(I[0],1,e):NI(I[0],e);default:var t=I[0],C=Array.prototype.slice.call(I,1);return null==e[t]?e:lg(t)&&o(e)?fI(t,g(C,e[t]),e):Ag(t,g(C,e[t]),e)}})),JI=n((function(g,I){return g/I})),vI=function(){function g(g,I){this.xf=I,this.n=g}return g.prototype["@@transducer/init"]=b.init,g.prototype["@@transducer/result"]=b.result,g.prototype["@@transducer/step"]=function(g,I){return this.n>0?(this.n-=1,g):this.xf["@@transducer/step"](g,I)},g}(),kI=n(u(["drop"],n((function(g,I){return new vI(g,I)})),(function(g,I){return Jg(Math.max(0,g),1/0,I)}))),HI=function(){function g(g,I){this.xf=I,this.n=g,this.i=0}return g.prototype["@@transducer/init"]=b.init,g.prototype["@@transducer/result"]=b.result,g.prototype["@@transducer/step"]=function(g,I){this.i+=1;var e=0===this.n?g:this.xf["@@transducer/step"](g,I);return this.n>=0&&this.i>=this.n?y(e):e},g}(),MI=n(u(["take"],n((function(g,I){return new HI(g,I)})),(function(g,I){return Jg(0,g<0?1/0:g,I)})));function YI(g,I){return MI(g<I.length?I.length-g:0,I)}var wI=function(){function g(g,I){this.xf=I,this.pos=0,this.full=!1,this.acc=new Array(g)}return g.prototype["@@transducer/init"]=b.init,g.prototype["@@transducer/result"]=function(g){return this.acc=null,this.xf["@@transducer/result"](g)},g.prototype["@@transducer/step"]=function(g,I){return this.full&&(g=this.xf["@@transducer/step"](g,this.acc[this.pos])),this.store(I),g},g.prototype.store=function(g){this.acc[this.pos]=g,this.pos+=1,this.pos===this.acc.length&&(this.pos=0,this.full=!0)},g}(),TI=n(u([],n((function(g,I){return new wI(g,I)})),YI));function zI(g,I){for(var e=I.length-1;e>=0&&g(I[e]);)e-=1;return Jg(0,e+1,I)}var OI=function(){function g(g,I){this.f=g,this.retained=[],this.xf=I}return g.prototype["@@transducer/init"]=b.init,g.prototype["@@transducer/result"]=function(g){return this.retained=null,this.xf["@@transducer/result"](g)},g.prototype["@@transducer/step"]=function(g,I){return this.f(I)?this.retain(g,I):this.flush(g,I)},g.prototype.flush=function(g,I){return g=N(this.xf["@@transducer/step"],g,this.retained),this.retained=[],this.xf["@@transducer/step"](g,I)},g.prototype.retain=function(g,I){return this.retained.push(I),g},g}(),KI=n(u([],n((function(g,I){return new OI(g,I)})),zI)),jI=function(){function g(g,I){this.xf=I,this.pred=g,this.lastValue=void 0,this.seenFirstValue=!1}return g.prototype["@@transducer/init"]=b.init,g.prototype["@@transducer/result"]=b.result,g.prototype["@@transducer/step"]=function(g,I){var e=!1;return this.seenFirstValue?this.pred(this.lastValue,I)&&(e=!0):this.seenFirstValue=!0,this.lastValue=I,e?g:this.xf["@@transducer/step"](g,I)},g}(),PI=n((function(g,I){return new jI(g,I)})),_I=Og(-1),qI=n(u([],PI,(function(g,I){var e=[],t=1,C=I.length;if(0!==C)for(e[0]=I[0];t<C;)g(_I(e),I[t])||(e[e.length]=I[t]),t+=1;return e}))),$I=B(u([],PI(CI),qI(CI))),ge=function(){function g(g,I){this.xf=I,this.f=g}return g.prototype["@@transducer/init"]=b.init,g.prototype["@@transducer/result"]=b.result,g.prototype["@@transducer/step"]=function(g,I){if(this.f){if(this.f(I))return g;this.f=null}return this.xf["@@transducer/step"](g,I)},g}(),Ie=n(u(["dropWhile"],n((function(g,I){return new ge(g,I)})),(function(g,I){for(var e=0,t=I.length;e<t&&g(I[e]);)e+=1;return Jg(e,1/0,I)}))),ee=n((function(g,I){return g||I})),te=n((function(g,I){return ug(g)?function(){return g.apply(this,arguments)||I.apply(this,arguments)}:bg(ee)(g,I)})),Ce=B((function(g){return null!=g&&"function"===typeof g["fantasy-land/empty"]?g["fantasy-land/empty"]():null!=g&&null!=g.constructor&&"function"===typeof g.constructor["fantasy-land/empty"]?g.constructor["fantasy-land/empty"]():null!=g&&"function"===typeof g.empty?g.empty():null!=g&&null!=g.constructor&&"function"===typeof g.constructor.empty?g.constructor.empty():o(g)?[]:S(g)?"":cI(g)?{}:v(g)?function(){return arguments}():void 0})),Qe=n((function(g,I){return kI(g>=0?I.length-g:0,I)})),Fe=n((function(g,I){return CI(Qe(g.length,I),g)})),Be=a((function(g,I,e){return CI(g(I),g(e))})),ne=a((function(g,I,e){return CI(I[g],e[g])})),Ue=n((function g(I,e){var t,C,Q,F=e instanceof Array?[]:{};for(C in e)Q=typeof(t=I[C]),F[C]="function"===Q?t(e[C]):t&&"object"===Q?g(t,e[C]):e[C];return F})),se=function(){function g(g,I){this.xf=I,this.f=g,this.found=!1}return g.prototype["@@transducer/init"]=b.init,g.prototype["@@transducer/result"]=function(g){return this.found||(g=this.xf["@@transducer/step"](g,void 0)),this.xf["@@transducer/result"](g)},g.prototype["@@transducer/step"]=function(g,I){return this.f(I)&&(this.found=!0,g=y(this.xf["@@transducer/step"](g,I))),g},g}(),ie=n(u(["find"],n((function(g,I){return new se(g,I)})),(function(g,I){for(var e=0,t=I.length;e<t;){if(g(I[e]))return I[e];e+=1}}))),ce=function(){function g(g,I){this.xf=I,this.f=g,this.idx=-1,this.found=!1}return g.prototype["@@transducer/init"]=b.init,g.prototype["@@transducer/result"]=function(g){return this.found||(g=this.xf["@@transducer/step"](g,-1)),this.xf["@@transducer/result"](g)},g.prototype["@@transducer/step"]=function(g,I){return this.idx+=1,this.f(I)&&(this.found=!0,g=y(this.xf["@@transducer/step"](g,this.idx))),g},g}(),Ae=n(u([],n((function(g,I){return new ce(g,I)})),(function(g,I){for(var e=0,t=I.length;e<t;){if(g(I[e]))return e;e+=1}return-1}))),le=function(){function g(g,I){this.xf=I,this.f=g}return g.prototype["@@transducer/init"]=b.init,g.prototype["@@transducer/result"]=function(g){return this.xf["@@transducer/result"](this.xf["@@transducer/step"](g,this.last))},g.prototype["@@transducer/step"]=function(g,I){return this.f(I)&&(this.last=I),g},g}(),ae=n(u([],n((function(g,I){return new le(g,I)})),(function(g,I){for(var e=I.length-1;e>=0;){if(g(I[e]))return I[e];e-=1}}))),re=function(){function g(g,I){this.xf=I,this.f=g,this.idx=-1,this.lastIdx=-1}return g.prototype["@@transducer/init"]=b.init,g.prototype["@@transducer/result"]=function(g){return this.xf["@@transducer/result"](this.xf["@@transducer/step"](g,this.lastIdx))},g.prototype["@@transducer/step"]=function(g,I){return this.idx+=1,this.f(I)&&(this.lastIdx=this.idx),g},g}(),oe=n(u([],n((function(g,I){return new re(g,I)})),(function(g,I){for(var e=I.length-1;e>=0;){if(g(I[e]))return e;e-=1}return-1}))),de=B(Rg(!0)),ue=B((function(g){return A(g.length,(function(I,e){var t=Array.prototype.slice.call(arguments,0);return t[0]=e,t[1]=I,g.apply(this,t)}))})),ye=n(Xg("forEach",(function(g,I){for(var e=I.length,t=0;t<e;)g(I[t]),t+=1;return I}))),be=n((function(g,I){for(var e=w(I),t=0;t<e.length;){var C=e[t];g(I[C],C,I),t+=1}return I})),Ze=B((function(g){for(var I={},e=0;e<g.length;)I[g[e][0]]=g[e][1],e+=1;return I})),me=n(Xg("groupBy",RI((function(g,I){return null==g&&(g=[]),g.push(I),g}),null))),xe=n((function(g,I){for(var e=[],t=0,C=I.length;t<C;){for(var Q=t+1;Q<C&&g(I[Q-1],I[Q]);)Q+=1;e.push(I.slice(t,Q)),t=Q}return e})),Re=n((function(g,I){return g>I})),Se=n((function(g,I){return g>=I})),Ge=n((function(g,I){if(0===g.length)return!1;for(var e=I,t=0;t<g.length;){if(!X(g[t],e))return!1;e=e[g[t]],t+=1}return!0})),Le=n((function(g,I){return Ge([g],I)})),Ve=n((function(g,I){return g in I})),he=n(II),De=a((function(g,I,e){return A(Math.max(g.length,I.length,e.length),(function(){return g.apply(this,arguments)?I.apply(this,arguments):e.apply(this,arguments)}))})),pe=U(1),Ee=n(FI),Ne=RI((function(g,I){return I}),null),We=n((function(g,I){return"function"!==typeof I.indexOf||o(I)?QI(I,g,0):I.indexOf(g)})),fe=Jg(0,-1),Xe=a((function(g,I,e){return iI((function(I){return gI(g,I,e)}),I)})),Je=a((function(g,I,e){g=g<e.length&&g>=0?g:e.length;var t=Array.prototype.slice.call(e,0);return t.splice(g,0,I),t})),ve=a((function(g,I,e){return g=g<e.length&&g>=0?g:e.length,[].concat(Array.prototype.slice.call(e,0,g),I,Array.prototype.slice.call(e,g))})),ke=n((function(g,I){for(var e,t,C=new DI,Q=[],F=0;F<I.length;)e=g(t=I[F]),C.add(e)&&Q.push(t),F+=1;return Q})),He=ke(Pg),Me=n((function(g,I){var e,t;return g.length>I.length?(e=g,t=I):(e=I,t=g),He(iI(ue(FI)(e),t))})),Ye=n(Xg("intersperse",(function(g,I){for(var e=[],t=0,C=I.length;t<C;)t===C-1?e.push(I[t]):e.push(I[t],g),t+=1;return e})));var we="function"===typeof Object.assign?Object.assign:function(g){if(null==g)throw new TypeError("Cannot convert undefined or null to object");for(var I=Object(g),e=1,t=arguments.length;e<t;){var C=arguments[e];if(null!=C)for(var Q in C)X(Q,C)&&(I[Q]=C[Q]);e+=1}return I},Te=n((function(g,I){var e={};return e[g]=I,e})),ze={"@@transducer/init":Array,"@@transducer/step":function(g,I){return g.push(I),g},"@@transducer/result":jg},Oe={"@@transducer/init":String,"@@transducer/step":function(g,I){return g+I},"@@transducer/result":jg},Ke={"@@transducer/init":Object,"@@transducer/step":function(g,I){return we(g,G(I)?Te(I[0],I[1]):I)},"@@transducer/result":jg};var je=a((function(g,I,e){return d(g)?N(I(g),g["@@transducer/init"](),e):N(I(function(g){if(d(g))return g;if(G(g))return ze;if("string"===typeof g)return Oe;if("object"===typeof g)return Ke;throw new Error("Cannot create transformer for "+g)}(g)),Dg(g,[],[],!1),e)})),Pe=B((function(g){for(var I=w(g),e=I.length,t=0,C={};t<e;){var Q=I[t],F=g[Q],B=X(F,C)?C[F]:C[F]=[];B[B.length]=Q,t+=1}return C})),_e=B((function(g){for(var I=w(g),e=I.length,t=0,C={};t<e;){var Q=I[t];C[g[Q]]=Q,t+=1}return C})),qe=n((function(g,I){return A(g+1,(function(){var e=arguments[g];if(null!=e&&ug(e[I]))return e[I].apply(e,Array.prototype.slice.call(arguments,0,g));throw new TypeError(oI(e)+' does not have a method named "'+I+'"')}))})),$e=n((function(g,I){return null!=I&&I.constructor===g||I instanceof g})),gt=B((function(g){return null!=g&&CI(g,Ce(g))})),It=qe(1,"join"),et=B((function(g){return mI((function(){return Array.prototype.slice.call(arguments,0)}),g)})),tt=B((function(g){var I,e=[];for(I in g)e[e.length]=I;return e})),Ct=n((function(g,I){if("function"!==typeof I.lastIndexOf||o(I)){for(var e=I.length-1;e>=0;){if(CI(I[e],g))return e;e-=1}return-1}return I.lastIndexOf(g)}));function Qt(g){return"[object Number]"===Object.prototype.toString.call(g)}var Ft=B((function(g){return null!=g&&Qt(g.length)?g.length:NaN})),Bt=n((function(g,I){return function(e){return function(t){return T((function(g){return I(g,t)}),e(g(t)))}}})),nt=B((function(g){return Bt(Og(g),fI(g))})),Ut=B((function(g){return Bt(z(g),rg(g))})),st=B((function(g){return Bt(O(g),Ag(g))})),it=n((function(g,I){return g<I})),ct=n((function(g,I){return g<=I})),At=a((function(g,I,e){for(var t=0,C=e.length,Q=[],F=[I];t<C;)F=g(F[0],e[t]),Q[t]=F[1],t+=1;return[F[0],Q]})),lt=a((function(g,I,e){for(var t=e.length-1,C=[],Q=[I];t>=0;)Q=g(Q[0],e[t]),C[t]=Q[1],t-=1;return[Q[0],C]})),at=n((function(g,I){return N((function(e,t){return e[t]=g(I[t],t,I),e}),{},w(I))})),rt=n((function(g,I){return I.match(g)||[]})),ot=n((function(g,I){return lg(g)?!lg(I)||I<1?NaN:(g%I+I)%I:NaN})),dt=a((function(g,I,e){return g(e)>g(I)?e:I})),ut=j(U,0),yt=B((function(g){return ut(g)/g.length})),bt=B((function(g){var I=g.length;if(0===I)return NaN;var e=2-I%2,t=(I-e)/2;return yt(Array.prototype.slice.call(g,0).sort((function(g,I){return g<I?-1:g>I?1:0})).slice(t,t+e))})),Zt=n((function(g,I){var e={};return i(I.length,(function(){var t=g.apply(this,arguments);return X(t,e)||(e[t]=I.apply(this,arguments)),e[t]}))})),mt=n((function(g,I){return we({},g,I)})),xt=B((function(g){return we.apply(null,[{}].concat(g))})),Rt=a((function(g,I,e){var t,C={};for(t in I)X(t,I)&&(C[t]=X(t,e)?g(t,I[t],e[t]):I[t]);for(t in e)X(t,e)&&!X(t,C)&&(C[t]=e[t]);return C})),St=a((function g(I,e,t){return Rt((function(e,t,C){return cI(t)&&cI(C)?g(I,t,C):I(e,t,C)}),e,t)})),Gt=n((function(g,I){return St((function(g,I,e){return I}),g,I)})),Lt=n((function(g,I){return St((function(g,I,e){return e}),g,I)})),Vt=a((function(g,I,e){return St((function(I,e,t){return g(e,t)}),I,e)})),ht=n((function(g,I){return we({},I,g)})),Dt=n((function(g,I){return we({},g,I)})),pt=a((function(g,I,e){return Rt((function(I,e,t){return g(e,t)}),I,e)})),Et=n((function(g,I){return I<g?I:g})),Nt=a((function(g,I,e){return g(e)<g(I)?e:I})),Wt=n((function(g,I){return g%I})),ft=a((function(g,I,e){var t=e.length,C=e.slice(),Q=g<0?t+g:g,F=I<0?t+I:I,B=C.splice(Q,1);return Q<0||Q>=e.length||F<0||F>=e.length?e:[].concat(C.slice(0,F)).concat(B).concat(C.slice(F,e.length))})),Xt=n((function(g,I){return g*I})),Jt=B((function(g){return-g})),vt=n((function(g,I){return m(sI(g),I)})),kt=B((function(g){return A(g<0?1:g+1,(function(){return Og(g,arguments)}))})),Ht=a((function(g,I,e){return g(I(e))}));function Mt(g){return[g]}var Yt=B(Mt),wt=n((function(g,I){for(var e={},t={},C=0,Q=g.length;C<Q;)t[g[C]]=1,C+=1;for(var F in I)t.hasOwnProperty(F)||(e[F]=I[F]);return e})),Tt=B((function(g){var I,e=!1;return i(g.length,(function(){return e?I:(e=!0,I=g.apply(this,arguments))}))}));function zt(g,I){if(null==I||!ug(I.then))throw new TypeError("`"+g+"` expected a Promise, received "+rI(I,[]))}var Ot=n((function(g,I){return zt("otherwise",I),I.then(null,g)})),Kt=a((function(g,I,e){return g((function(g){return function g(I){return{value:I,map:function(e){return g(e(I))}}}(I(g))}))(e).value})),jt=n((function(g,I){return[g,I]}));function Pt(g){return n((function(I,e){return i(Math.max(0,I.length-e.length),(function(){return I.apply(this,g(e,arguments))}))}))}var _t=Pt(s),qt=Pt(ue(s)),$t=et([lI,aI]),gC=a((function(g,I,e){return CI(z(g,e),I)})),IC=a((function(g,I,e){return LI(g,z(I,e))})),eC=a((function(g,I,e){return I.length>0&&g(z(I,e))})),tC=n((function(g,I){for(var e={},t=0;t<g.length;)g[t]in I&&(e[g[t]]=I[g[t]]),t+=1;return e})),CC=n((function(g,I){for(var e={},t=0,C=g.length;t<C;){var Q=g[t];e[Q]=I[Q],t+=1}return e})),QC=n((function(g,I){var e={};for(var t in I)g(I[t],t,I)&&(e[t]=I[t]);return e}));function FC(){if(0===arguments.length)throw new Error("pipeK requires at least one argument");return Yg.apply(this,Hg(arguments))}var BC=n((function(g,I){return s([g],I)})),nC=j(Xt,1),UC=n((function(g,I){return A(I.length,(function(){for(var e=[],t=0;t<I.length;)e.push(I[t].call(this,arguments[t])),t+=1;return g.apply(this,e.concat(Array.prototype.slice.call(arguments,I.length)))}))})),sC=UC(R,[CC,Pg]),iC=a((function(g,I,e){return CI(I,e[g])})),cC=a((function(g,I,e){return $e(g,e[I])})),AC=a((function(g,I,e){return IC(g,[I],e)})),lC=a((function(g,I,e){return g(e[I])})),aC=n((function(g,I){for(var e=g.length,t=[],C=0;C<e;)t[C]=I[g[C]],C+=1;return t})),rC=n((function(g,I){if(!Qt(g)||!Qt(I))throw new TypeError("Both arguments to range must be numbers");for(var e=[],t=g;t<I;)e.push(t),t+=1;return e})),oC=a((function(g,I,e){for(var t=e.length-1;t>=0;)I=g(e[t],I),t-=1;return I})),dC=c(4,[],(function(g,I,e,t){return N((function(e,t){return g(e,t)?I(e,t):y(e)}),e,t)})),uC=B(y),yC=n((function(g,I){var e,t=Number(I),C=0;if(t<0||isNaN(t))throw new RangeError("n must be a non-negative number");for(e=new Array(t);C<t;)e[C]=g(C),C+=1;return e})),bC=n((function(g,I){return yC(_(g),I)})),ZC=a((function(g,I,e){return e.replace(g,I)})),mC=a((function(g,I,e){for(var t=0,C=e.length,Q=[I];t<C;)I=g(I,e[t]),Q[t+1]=I,t+=1;return Q})),xC=n((function(g,I){return"function"===typeof I.sequence?I.sequence(g):oC((function(g,I){return eg(T(BC,g),I)}),g([]),I)})),RC=a((function(g,I,e){return Kt(g,_(I),e)})),SC=n((function(g,I){return Array.prototype.slice.call(I,0).sort(g)})),GC=n((function(g,I){return Array.prototype.slice.call(I,0).sort((function(I,e){var t=g(I),C=g(e);return t<C?-1:t>C?1:0}))})),LC=n((function(g,I){return Array.prototype.slice.call(I,0).sort((function(I,e){for(var t=0,C=0;0===t&&C<g.length;)t=g[C](I,e),C+=1;return t}))})),VC=qe(1,"split"),hC=n((function(g,I){return[Jg(0,g,I),Jg(g,Ft(I),I)]})),DC=n((function(g,I){if(g<=0)throw new Error("First argument to splitEvery must be a positive integer");for(var e=[],t=0;t<I.length;)e.push(Jg(t,t+=g,I));return e})),pC=n((function(g,I){for(var e=0,t=I.length,C=[];e<t&&!g(I[e]);)C.push(I[e]),e+=1;return[C,Array.prototype.slice.call(I,e)]})),EC=n((function(g,I){return CI(MI(g.length,I),g)})),NC=n((function(g,I){return Number(g)-Number(I)})),WC=n((function(g,I){return dI(pI(g,I),pI(I,g))})),fC=a((function(g,I,e){return dI(EI(g,I,e),EI(g,e,I))})),XC=n((function(g,I){for(var e=I.length-1;e>=0&&g(I[e]);)e-=1;return Jg(e+1,1/0,I)})),JC=function(){function g(g,I){this.xf=I,this.f=g}return g.prototype["@@transducer/init"]=b.init,g.prototype["@@transducer/result"]=b.result,g.prototype["@@transducer/step"]=function(g,I){return this.f(I)?this.xf["@@transducer/step"](g,I):y(g)},g}(),vC=n(u(["takeWhile"],n((function(g,I){return new JC(g,I)})),(function(g,I){for(var e=0,t=I.length;e<t&&g(I[e]);)e+=1;return Jg(0,e,I)}))),kC=function(){function g(g,I){this.xf=I,this.f=g}return g.prototype["@@transducer/init"]=b.init,g.prototype["@@transducer/result"]=b.result,g.prototype["@@transducer/step"]=function(g,I){return this.f(I),this.xf["@@transducer/step"](g,I)},g}(),HC=n(u([],n((function(g,I){return new kC(g,I)})),(function(g,I){return g(I),I})));var MC=n((function(g,I){if(e=g,"[object RegExp]"!==Object.prototype.toString.call(e))throw new TypeError("\u2018test\u2019 requires a value of type RegExp as its first argument; received "+oI(g));var e;return Vg(g).test(I)})),YC=n((function(g,I){return zt("then",I),I.then(g)})),wC=qe(0,"toLowerCase"),TC=B((function(g){var I=[];for(var e in g)X(e,g)&&(I[I.length]=[e,g[e]]);return I})),zC=B((function(g){var I=[];for(var e in g)I[I.length]=[e,g[e]];return I})),OC=qe(0,"toUpperCase"),KC=A(4,(function(g,I,e,t){return N(g("function"===typeof I?V(I):I),e,t)})),jC=B((function(g){for(var I=0,e=[];I<g.length;){for(var t=g[I],C=0;C<t.length;)"undefined"===typeof e[C]&&(e[C]=[]),e[C].push(t[C]),C+=1;I+=1}return e})),PC=a((function(g,I,e){return"function"===typeof e["fantasy-land/traverse"]?e["fantasy-land/traverse"](I,g):xC(g,T(I,e))})),_C="\t\n\v\f\r \xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff",qC=B("function"===typeof String.prototype.trim&&!_C.trim()&&"\u200b".trim()?function(g){return g.trim()}:function(g){var I=new RegExp("^["+_C+"]["+_C+"]*"),e=new RegExp("["+_C+"]["+_C+"]*$");return g.replace(I,"").replace(e,"")}),$C=n((function(g,I){return i(g.length,(function(){try{return g.apply(this,arguments)}catch(e){return I.apply(this,s([e],arguments))}}))})),gQ=B((function(g){return function(){return g(Array.prototype.slice.call(arguments,0))}})),IQ=B((function(g){return og(1,g)})),eQ=n((function(g,I){return A(g,(function(){for(var e,t=1,C=I,Q=0;t<=g&&"function"===typeof C;)e=t===g?arguments.length:Q+C.length,C=C.apply(this,Array.prototype.slice.call(arguments,Q,e)),t+=1,Q=e;return C}))})),tQ=n((function(g,I){for(var e=g(I),t=[];e&&e.length;)t[t.length]=e[0],e=g(e[1]);return t})),CQ=n(Mg(He,s)),QQ=n((function(g,I){for(var e,t=0,C=I.length,Q=[];t<C;)gI(g,e=I[t],Q)||(Q[Q.length]=e),t+=1;return Q})),FQ=a((function(g,I,e){return QQ(g,s(I,e))})),BQ=a((function(g,I,e){return g(e)?e:I(e)})),nQ=Gg(jg),UQ=a((function(g,I,e){for(var t=e;!g(t);)t=I(t);return t})),sQ=B((function(g){var I,e=[];for(I in g)e[e.length]=g[I];return e})),iQ=function(g){return{value:g,"fantasy-land/map":function(){return this}}},cQ=n((function(g,I){return g(iQ)(I).value})),AQ=a((function(g,I,e){return g(e)?I(e):e})),lQ=n((function(g,I){for(var e in g)if(X(e,g)&&!g[e](I[e]))return!1;return!0})),aQ=n((function(g,I){return lQ(T(CI,g),I)})),rQ=n((function(g,I){return aI(ue(FI)(g),I)})),oQ=n((function(g,I){for(var e,t=0,C=g.length,Q=I.length,F=[];t<C;){for(e=0;e<Q;)F[F.length]=[g[t],I[e]],e+=1;t+=1}return F})),dQ=n((function(g,I){for(var e=[],t=0,C=Math.min(g.length,I.length);t<C;)e[t]=[g[t],I[t]],t+=1;return e})),uQ=n((function(g,I){for(var e=0,t=Math.min(g.length,I.length),C={};e<t;)C[g[e]]=I[e],e+=1;return C})),yQ=a((function(g,I,e){for(var t=[],C=0,Q=Math.min(I.length,e.length);C<Q;)t[C]=g(I[C],e[C]),C+=1;return t})),bQ=B((function(g){return A(g.length,(function(){var I=arguments;return function(){return g.apply(this,I)}}))}))},function(g,I,e){"use strict";var t=e(5),C=e(1675),Q=e(196);I.a=function(g,I){return Object(C.a)(g,Object(t.a)({defaultTheme:Q.a},I))}},function(g,I,e){var t=e(50),C=e(121).f,Q=e(135),F=e(126),B=e(482),n=e(617),U=e(328);g.exports=function(g,I){var e,s,i,c,A,l=g.target,a=g.global,r=g.stat;if(e=a?t:r?t[l]||B(l,{}):(t[l]||{}).prototype)for(s in I){if(c=I[s],i=g.noTargetGet?(A=C(e,s))&&A.value:e[s],!U(a?s:l+(r?".":"#")+s,g.forced)&&void 0!==i){if(typeof c===typeof i)continue;n(c,i)}(g.sham||i&&i.sham)&&Q(c,"sham",!0),F(e,s,c,g)}}},,function(g,I){g.exports=function(g){return g&&g.__esModule?g:{default:g}}},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=function(g,I){var e=Q.default.memo(Q.default.forwardRef((function(I,e){return Q.default.createElement(F.default,(0,C.default)({ref:e},I),g)})));0;return e.muiName=F.default.muiName,e};var C=t(e(281)),Q=t(e(0)),F=t(e(235))},function(g,I,e){"use strict";e.d(I,"a",(function(){return Q}));var t=e(364);var C=e(299);function Q(g){return function(g){if(Array.isArray(g))return Object(t.a)(g)}(g)||function(g){if("undefined"!==typeof Symbol&&Symbol.iterator in Object(g))return Array.from(g)}(g)||Object(C.a)(g)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}},,function(g,I,e){"use strict";e.d(I,"Font",(function(){return f})),e.d(I,"PDFDownloadLink",(function(){return k})),e.d(I,"StyleSheet",(function(){return X}));var t=e(372),C=e.n(t),Q=e(53);e.o(Q,"Document")&&e.d(I,"Document",(function(){return Q.Document})),e.o(Q,"Image")&&e.d(I,"Image",(function(){return Q.Image})),e.o(Q,"Page")&&e.d(I,"Page",(function(){return Q.Page})),e.o(Q,"Text")&&e.d(I,"Text",(function(){return Q.Text})),e.o(Q,"View")&&e.d(I,"View",(function(){return Q.View}));var F,B=e(897),n=e.n(B),U=e(0),s=e.n(U),i=e(373),c=e.n(i),A=e(222),l=e.n(A),a=e(898),r=e.n(a),o=e(899),d=e.n(o),u=e(902),y=e.n(u),b=e(568),Z=e(906),m=e.n(Z),x=e(468),R=e.n(x),S=e(907),G=e.n(S),L=e(462),V=["style","children"],h=["style"],D={},p=function(g){var I=g.onChange,e=void 0===I?function(){}:I;return G()({schedulePassiveEffects:L.unstable_scheduleCallback,cancelPassiveEffects:L.unstable_cancelCallback,supportsMutation:!0,isPrimaryRenderer:!1,warnsIfNotActing:!1,appendInitialChild:function(g,I){g.children.push(I)},createInstance:function(g,I){var e=I.style;return I.children,{type:g,box:{},style:e||{},props:R()(I,V)||{},children:[]}},createTextInstance:function(g,I){return{type:"TEXT_INSTANCE",value:g}},finalizeInitialChildren:function(g,I,e){return!1},getPublicInstance:function(g){return g},prepareForCommit:function(){},clearContainer:function(){},prepareUpdate:function(g,I,e,t){return!function g(I,e){var t=Object.keys(I),C=Object.keys(e);if(t.length!==C.length)return!1;for(var Q=0;Q<t.length;Q+=1){var F=t[Q];if("render"===F&&!I[F]!==!e[F])return!1;if("children"!==F&&I[F]!==e[F]){if("object"===typeof I[F]&&"object"===typeof e[F]&&g(I[F],e[F]))continue;return!1}if("children"===F&&("string"===typeof I[F]||"string"===typeof e[F]))return I[F]===e[F]}return!0}(e,t)},resetAfterCommit:e,resetTextContent:function(g){},getRootHostContext:function(){return D},getChildHostContext:function(){return D},shouldSetTextContent:function(g,I){return!1},now:Date.now,useSyncScheduling:!0,appendChild:function(g,I){g.children.push(I)},appendChildToContainer:function(g,I){"ROOT"===g.type?g.document=I:g.children.push(I)},insertBefore:function(g,I,e){var t,C=null===(t=g.children)||void 0===t?void 0:t.indexOf(e);void 0!==C&&-1!==C&&I&&g.children.splice(C,0,I)},removeChild:function(g,I){var e,t=null===(e=g.children)||void 0===e?void 0:e.indexOf(I);void 0!==t&&-1!==t&&g.children.splice(t,1)},removeChildFromContainer:function(g,I){var e,t=null===(e=g.children)||void 0===e?void 0:e.indexOf(I);void 0!==t&&-1!==t&&g.children.splice(t,1)},commitTextUpdate:function(g,I,e){g.value=e},commitUpdate:function(g,I,e,t,C){var Q=C.style,F=R()(C,h);g.props=F,g.style=Q}})},E=new d.a,N={},W=function(g){var I={type:"ROOT",document:null},e=(F=F||p({onChange:function(){for(var g,I=(null===(g=N.change)||void 0===g?void 0:g.slice())||[],e=0;e<I.length;e+=1)I[e]()}})).createContainer(I),t=function(g){F.updateContainer(g,e,null)};g&&t(g);var C=function(){var g=c()(l.a.mark((function g(e){var t,C,Q,F,B;return l.a.wrap((function(g){for(;;)switch(g.prev=g.next){case 0:return void 0===e&&(e=!0),t=I.document.props||{},C=t.pdfVersion,Q=t.language,F=new b.default({compress:e,pdfVersion:C,lang:Q,displayTitle:!0,autoFirstPage:!1}),g.next=6,m()(I.document,E);case 6:return B=g.sent,g.abrupt("return",y()(F,B));case 8:case"end":return g.stop()}}),g)})));return function(I){return g.apply(this,arguments)}}(),Q=function(g){void 0===g&&(g={}),I.document.props.onRender&&I.document.props.onRender(g)};return{on:function(g,I){N[g]||(N[g]=[]),N[g].push(I)},container:I,toBlob:function(){var g=c()(l.a.mark((function g(){var I,e;return l.a.wrap((function(g){for(;;)switch(g.prev=g.next){case 0:return g.next=2,C();case 2:return I=g.sent,e=I.pipe(r()()),g.abrupt("return",new Promise((function(g,I){e.on("finish",(function(){try{var t=e.toBlob("application/pdf");Q({blob:t}),g(t)}catch(C){I(C)}})),e.on("error",I)})));case 5:case"end":return g.stop()}}),g)})));return function(){return g.apply(this,arguments)}}(),toBuffer:function(){var g=c()(l.a.mark((function g(){return l.a.wrap((function(g){for(;;)switch(g.prev=g.next){case 0:return Q(),g.abrupt("return",C());case 2:case"end":return g.stop()}}),g)})));return function(){return g.apply(this,arguments)}}(),toString:function(){var g=c()(l.a.mark((function g(){var I,e;return l.a.wrap((function(g){for(;;)switch(g.prev=g.next){case 0:return I="",g.next=3,C(!1);case 3:return e=g.sent,g.abrupt("return",new Promise((function(g,t){try{e.on("data",(function(g){I+=g})),e.on("end",(function(){Q(),g(I)}))}catch(C){t(C)}})));case 5:case"end":return g.stop()}}),g)})));return function(){return g.apply(this,arguments)}}(),removeListener:function(g,I){if(N[g]){var e=N[g].indexOf(I);e>-1&&N[g].splice(e,1)}},updateContainer:t}},f=E,X={create:function(g){return g}},J=function(g){var I=g.document,e=Object(U.useRef)(null),t=Object(U.useState)({url:null,blob:null,error:null,loading:!1}),Q=t[0],F=t[1];Object(U.useEffect)((function(){var g=n()({autostart:!0,concurrency:1}),t=function(){F((function(g){return C()({},g,{loading:!0})})),g.splice(0,g.length,(function(){return Q.error?Promise.resolve():e.current.toBlob()}))};return e.current=W(),e.current.on("change",t),e.current.updateContainer(I),g.on("error",(function(g){console.error(g),F((function(I){return C()({},I,{error:g})}))})),g.on("success",(function(g){F({blob:g,error:null,loading:!1,url:URL.createObjectURL(g)})})),function(){g.end(),e.current.removeListener("change",t)}}),[]),Object(U.useEffect)((function(){return function(){Q.url&&URL.revokeObjectURL(Q.url)}}),[Q.url]);return[Q,function(){e.current.updateContainer(I)}]},v=["title","style","className","children","innerRef","showToolbar"],k=function(g){var I=g.style,e=g.children,t=g.className,C=g.document,Q=g.fileName,F=void 0===Q?"document.pdf":Q,B=J({document:C}),n=B[0],i=B[1];if(Object(U.useEffect)(i,[e]),!C)return console.warn("You should pass a valid document to PDFDownloadLink"),null;return s.a.createElement("a",{style:I,href:n.url,download:F,className:t,onClick:function(){window.navigator.msSaveBlob&&window.navigator.msSaveBlob(n.blob,F)}},"function"===typeof e?e(n):e)},H=function(g){throw new Error(g+" is a Node specific API. You're either using this method in a browser, or your bundler is not loading react-pdf from the appropriate web build.")};C()({pdf:W,usePDF:J,Font:f,version:"2.1.0",StyleSheet:X,PDFViewer:function(g){var I=g.title,e=g.style,t=g.className,Q=g.children,F=g.innerRef,B=g.showToolbar,n=void 0===B||B,i=R()(g,v),c=J({document:Q}),A=c[0],l=c[1];Object(U.useEffect)(l,[Q]);var a=A.url?A.url+"#toolbar="+(n?1:0):null;return s.a.createElement("iframe",C()({src:a,title:I,ref:F,style:e,className:t},i))},BlobProvider:function(g){var I=g.document,e=g.children,t=J({document:I}),C=t[0],Q=t[1];return Object(U.useEffect)(Q,[I]),I?e(C):(console.warn("You should pass a valid document to BlobProvider"),null)},PDFDownloadLink:k,renderToStream:function(){H("renderToStream")},renderToString:function(){H("renderToString")},renderToFile:function(){H("renderToFile")},render:function(){H("render")}},Q)},function(g,I,e){var t=e(1424);g.exports=function(g,I){var e="undefined"!==typeof Symbol&&g[Symbol.iterator]||g["@@iterator"];if(e)return(e=e.call(g)).next.bind(e);if(Array.isArray(g)||(e=t(g))||I&&g&&"number"===typeof g.length){e&&(g=e);var C=0;return function(){return C>=g.length?{done:!0}:{done:!1,value:g[C++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I,e){"use strict";e.d(I,"a",(function(){return C}));var t=e(427);function C(g){if("string"!==typeof g)throw new Error(Object(t.a)(7));return g.charAt(0).toUpperCase()+g.slice(1)}},function(g,I,e){var t=e(1457).default;function C(g){if("function"!==typeof WeakMap)return null;var I=new WeakMap,e=new WeakMap;return(C=function(g){return g?e:I})(g)}g.exports=function(g,I){if(!I&&g&&g.__esModule)return g;if(null===g||"object"!==t(g)&&"function"!==typeof g)return{default:g};var e=C(I);if(e&&e.has(g))return e.get(g);var Q={},F=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var B in g)if("default"!==B&&Object.prototype.hasOwnProperty.call(g,B)){var n=F?Object.getOwnPropertyDescriptor(g,B):null;n&&(n.get||n.set)?Object.defineProperty(Q,B,n):Q[B]=g[B]}return Q.default=g,e&&e.set(g,Q),Q},g.exports.__esModule=!0,g.exports.default=g.exports},,function(g,I,e){"use strict";function t(g,I){g.prototype=Object.create(I.prototype),g.prototype.constructor=g,g.__proto__=I}e.d(I,"a",(function(){return b})),e.d(I,"b",(function(){return R})),e.d(I,"c",(function(){return r})),e.d(I,"d",(function(){return D})),e.d(I,"e",(function(){return a})),e.d(I,"f",(function(){return x})),e.d(I,"g",(function(){return N})),e.d(I,"h",(function(){return W})),e.d(I,"i",(function(){return p}));var C=e(0),Q=e.n(C),F=(e(4),e(161)),B=e(557),n=e(142);function U(){return(U=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}var s=e(441),i=e.n(s);e(674);function c(g,I){if(null==g)return{};var e,t,C={},Q=Object.keys(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||(C[e]=g[e]);return C}var A=e(129),l=e.n(A),a=function(g){var I=Object(B.default)();return I.displayName=g,I}("Router"),r=function(g){function I(I){var e;return(e=g.call(this,I)||this).state={location:I.history.location},e._isMounted=!1,e._pendingLocation=null,I.staticContext||(e.unlisten=I.history.listen((function(g){e._isMounted?e.setState({location:g}):e._pendingLocation=g}))),e}t(I,g),I.computeRootMatch=function(g){return{path:"/",url:"/",params:{},isExact:"/"===g}};var e=I.prototype;return e.componentDidMount=function(){this._isMounted=!0,this._pendingLocation&&this.setState({location:this._pendingLocation})},e.componentWillUnmount=function(){this.unlisten&&this.unlisten()},e.render=function(){return Q.a.createElement(a.Provider,{children:this.props.children||null,value:{history:this.props.history,location:this.state.location,match:I.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}})},I}(Q.a.Component);Q.a.Component;var o=function(g){function I(){return g.apply(this,arguments)||this}t(I,g);var e=I.prototype;return e.componentDidMount=function(){this.props.onMount&&this.props.onMount.call(this,this)},e.componentDidUpdate=function(g){this.props.onUpdate&&this.props.onUpdate.call(this,this,g)},e.componentWillUnmount=function(){this.props.onUnmount&&this.props.onUnmount.call(this,this)},e.render=function(){return null},I}(Q.a.Component);var d={},u=0;function y(g,I){return void 0===g&&(g="/"),void 0===I&&(I={}),"/"===g?g:function(g){if(d[g])return d[g];var I=i.a.compile(g);return u<1e4&&(d[g]=I,u++),I}(g)(I,{pretty:!0})}function b(g){var I=g.computedMatch,e=g.to,t=g.push,C=void 0!==t&&t;return Q.a.createElement(a.Consumer,null,(function(g){g||Object(n.default)(!1);var t=g.history,B=g.staticContext,s=C?t.push:t.replace,i=Object(F.createLocation)(I?"string"===typeof e?y(e,I.params):U({},e,{pathname:y(e.pathname,I.params)}):e);return B?(s(i),null):Q.a.createElement(o,{onMount:function(){s(i)},onUpdate:function(g,I){var e=Object(F.createLocation)(I.to);Object(F.locationsAreEqual)(e,U({},i,{key:e.key}))||s(i)},to:e})}))}var Z={},m=0;function x(g,I){void 0===I&&(I={}),("string"===typeof I||Array.isArray(I))&&(I={path:I});var e=I,t=e.path,C=e.exact,Q=void 0!==C&&C,F=e.strict,B=void 0!==F&&F,n=e.sensitive,U=void 0!==n&&n;return[].concat(t).reduce((function(I,e){if(!e&&""!==e)return null;if(I)return I;var t=function(g,I){var e=""+I.end+I.strict+I.sensitive,t=Z[e]||(Z[e]={});if(t[g])return t[g];var C=[],Q={regexp:i()(g,C,I),keys:C};return m<1e4&&(t[g]=Q,m++),Q}(e,{end:Q,strict:B,sensitive:U}),C=t.regexp,F=t.keys,n=C.exec(g);if(!n)return null;var s=n[0],c=n.slice(1),A=g===s;return Q&&!A?null:{path:e,url:"/"===e&&""===s?"/":s,isExact:A,params:F.reduce((function(g,I,e){return g[I.name]=c[e],g}),{})}}),null)}var R=function(g){function I(){return g.apply(this,arguments)||this}return t(I,g),I.prototype.render=function(){var g=this;return Q.a.createElement(a.Consumer,null,(function(I){I||Object(n.default)(!1);var e=g.props.location||I.location,t=U({},I,{location:e,match:g.props.computedMatch?g.props.computedMatch:g.props.path?x(e.pathname,g.props):I.match}),C=g.props,F=C.children,B=C.component,s=C.render;return Array.isArray(F)&&0===F.length&&(F=null),Q.a.createElement(a.Provider,{value:t},t.match?F?"function"===typeof F?F(t):F:B?Q.a.createElement(B,t):s?s(t):null:"function"===typeof F?F(t):null)}))},I}(Q.a.Component);function S(g){return"/"===g.charAt(0)?g:"/"+g}function G(g,I){if(!g)return I;var e=S(g);return 0!==I.pathname.indexOf(e)?I:U({},I,{pathname:I.pathname.substr(e.length)})}function L(g){return"string"===typeof g?g:Object(F.createPath)(g)}function V(g){return function(){Object(n.default)(!1)}}function h(){}Q.a.Component;var D=function(g){function I(){return g.apply(this,arguments)||this}return t(I,g),I.prototype.render=function(){var g=this;return Q.a.createElement(a.Consumer,null,(function(I){I||Object(n.default)(!1);var e,t,C=g.props.location||I.location;return Q.a.Children.forEach(g.props.children,(function(g){if(null==t&&Q.a.isValidElement(g)){e=g;var F=g.props.path||g.props.from;t=F?x(C.pathname,U({},g.props,{path:F})):I.match}})),t?Q.a.cloneElement(e,{location:C,computedMatch:t}):null}))},I}(Q.a.Component);function p(g){var I="withRouter("+(g.displayName||g.name)+")",e=function(I){var e=I.wrappedComponentRef,t=c(I,["wrappedComponentRef"]);return Q.a.createElement(a.Consumer,null,(function(I){return I||Object(n.default)(!1),Q.a.createElement(g,U({},t,I,{ref:e}))}))};return e.displayName=I,e.WrappedComponent=g,l()(e,g)}var E=Q.a.useContext;function N(){return E(a).history}function W(){return E(a).location}},function(g,I,e){"use strict";var t=e(48),C=e(292);function Q(g,I){return I&&"string"===typeof I?I.split(".").reduce((function(g,I){return g&&g[I]?g[I]:null}),g):null}I.a=function(g){var I=g.prop,e=g.cssProperty,F=void 0===e?g.prop:e,B=g.themeKey,n=g.transform,U=function(g){if(null==g[I])return null;var e=g[I],U=Q(g.theme,B)||{};return Object(C.b)(g,e,(function(g){var I;return"function"===typeof U?I=U(g):Array.isArray(U)?I=U[g]||g:(I=Q(U,g)||g,n&&(I=n(I))),!1===F?I:Object(t.a)({},F,I)}))};return U.propTypes={},U.filterProps=[I],U}},function(g,I,e){"use strict";e.r(I);var t=e(173);e.d(I,"default",(function(){return t.a}))},,function(g,I){g.exports=function(g){return g&&g.__esModule?g:{default:g}},g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I,e){"use strict";e.d(I,"g",(function(){return Q})),e.d(I,"k",(function(){return F})),e.d(I,"h",(function(){return B})),e.d(I,"b",(function(){return n})),e.d(I,"j",(function(){return U})),e.d(I,"e",(function(){return s})),e.d(I,"f",(function(){return i})),e.d(I,"c",(function(){return c})),e.d(I,"d",(function(){return A})),e.d(I,"a",(function(){return l})),e.d(I,"i",(function(){return a}));var t=e(427);function C(g){var I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return Math.min(Math.max(I,g),e)}function Q(g){g=g.substr(1);var I=new RegExp(".{1,".concat(g.length>=6?2:1,"}"),"g"),e=g.match(I);return e&&1===e[0].length&&(e=e.map((function(g){return g+g}))),e?"rgb".concat(4===e.length?"a":"","(").concat(e.map((function(g,I){return I<3?parseInt(g,16):Math.round(parseInt(g,16)/255*1e3)/1e3})).join(", "),")"):""}function F(g){if(0===g.indexOf("#"))return g;var I=n(g).values;return"#".concat(I.map((function(g){return function(g){var I=g.toString(16);return 1===I.length?"0".concat(I):I}(g)})).join(""))}function B(g){var I=(g=n(g)).values,e=I[0],t=I[1]/100,C=I[2]/100,Q=t*Math.min(C,1-C),F=function(g){var I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(g+e/30)%12;return C-Q*Math.max(Math.min(I-3,9-I,1),-1)},B="rgb",s=[Math.round(255*F(0)),Math.round(255*F(8)),Math.round(255*F(4))];return"hsla"===g.type&&(B+="a",s.push(I[3])),U({type:B,values:s})}function n(g){if(g.type)return g;if("#"===g.charAt(0))return n(Q(g));var I=g.indexOf("("),e=g.substring(0,I);if(-1===["rgb","rgba","hsl","hsla"].indexOf(e))throw new Error(Object(t.a)(3,g));var C=g.substring(I+1,g.length-1).split(",");return{type:e,values:C=C.map((function(g){return parseFloat(g)}))}}function U(g){var I=g.type,e=g.values;return-1!==I.indexOf("rgb")?e=e.map((function(g,I){return I<3?parseInt(g,10):g})):-1!==I.indexOf("hsl")&&(e[1]="".concat(e[1],"%"),e[2]="".concat(e[2],"%")),"".concat(I,"(").concat(e.join(", "),")")}function s(g,I){var e=i(g),t=i(I);return(Math.max(e,t)+.05)/(Math.min(e,t)+.05)}function i(g){var I="hsl"===(g=n(g)).type?n(B(g)).values:g.values;return I=I.map((function(g){return(g/=255)<=.03928?g/12.92:Math.pow((g+.055)/1.055,2.4)})),Number((.2126*I[0]+.7152*I[1]+.0722*I[2]).toFixed(3))}function c(g){var I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.15;return i(g)>.5?l(g,I):a(g,I)}function A(g,I){return g=n(g),I=C(I),"rgb"!==g.type&&"hsl"!==g.type||(g.type+="a"),g.values[3]=I,U(g)}function l(g,I){if(g=n(g),I=C(I),-1!==g.type.indexOf("hsl"))g.values[2]*=1-I;else if(-1!==g.type.indexOf("rgb"))for(var e=0;e<3;e+=1)g.values[e]*=1-I;return U(g)}function a(g,I){if(g=n(g),I=C(I),-1!==g.type.indexOf("hsl"))g.values[2]+=(100-g.values[2])*I;else if(-1!==g.type.indexOf("rgb"))for(var e=0;e<3;e+=1)g.values[e]+=(255-g.values[e])*I;return U(g)}},function(g,I,e){"use strict";function t(g,I){return function(){return null}}e.r(I),e.d(I,"chainPropTypes",(function(){return t})),e.d(I,"deepmerge",(function(){return C.a})),e.d(I,"elementAcceptingRef",(function(){return n})),e.d(I,"elementTypeAcceptingRef",(function(){return U})),e.d(I,"exactProp",(function(){return s})),e.d(I,"formatMuiErrorMessage",(function(){return i.a})),e.d(I,"getDisplayName",(function(){return d})),e.d(I,"HTMLElementType",(function(){return u})),e.d(I,"ponyfillGlobal",(function(){return y})),e.d(I,"refType",(function(){return b}));var C=e(556),Q=e(4),F=e.n(Q);var B=(F.a.element,function(){return null});B.isRequired=(F.a.element.isRequired,function(){return null});var n=B;var U=(Q.elementType,function(){return null});e(48),e(5);function s(g){return g}var i=e(427),c=e(181),A=e(122),l=/^\s*function(?:\s|\s*\/\*.*\*\/\s*)+([^(\s/]*)\s*/;function a(g){var I="".concat(g).match(l);return I&&I[1]||""}function r(g){var I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return g.displayName||g.name||a(g)||I}function o(g,I,e){var t=r(I);return g.displayName||(""!==t?"".concat(e,"(").concat(t,")"):e)}function d(g){if(null!=g){if("string"===typeof g)return g;if("function"===typeof g)return r(g,"Component");if("object"===Object(c.a)(g))switch(g.$$typeof){case A.ForwardRef:return o(g,g.render,"ForwardRef");case A.Memo:return o(g,g.type,"memo");default:return}}}function u(g,I,e,t,C){return null}var y="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),b=F.a.oneOfType([F.a.func,F.a.object])},function(g,I){g.exports=function(g){return g&&g.__esModule?g:{default:g}},g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I){g.exports=function(g){try{return!!g()}catch(I){return!0}}},function(g,I,e){"use strict";!function g(){if("undefined"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE){0;try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(g)}catch(I){console.error(I)}}}(),g.exports=e(1155)},function(g,I,e){var t=e(416).default;function C(g){if("function"!==typeof WeakMap)return null;var I=new WeakMap,e=new WeakMap;return(C=function(g){return g?e:I})(g)}g.exports=function(g,I){if(!I&&g&&g.__esModule)return g;if(null===g||"object"!==t(g)&&"function"!==typeof g)return{default:g};var e=C(I);if(e&&e.has(g))return e.get(g);var Q={},F=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var B in g)if("default"!==B&&Object.prototype.hasOwnProperty.call(g,B)){var n=F?Object.getOwnPropertyDescriptor(g,B):null;n&&(n.get||n.set)?Object.defineProperty(Q,B,n):Q[B]=g[B]}return Q.default=g,e&&e.set(g,Q),Q},g.exports.__esModule=!0,g.exports.default=g.exports},,,function(g,I,e){var t=e(1449).default;function C(g){if("function"!==typeof WeakMap)return null;var I=new WeakMap,e=new WeakMap;return(C=function(g){return g?e:I})(g)}g.exports=function(g,I){if(!I&&g&&g.__esModule)return g;if(null===g||"object"!==t(g)&&"function"!==typeof g)return{default:g};var e=C(I);if(e&&e.has(g))return e.get(g);var Q={},F=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var B in g)if("default"!==B&&Object.prototype.hasOwnProperty.call(g,B)){var n=F?Object.getOwnPropertyDescriptor(g,B):null;n&&(n.get||n.set)?Object.defineProperty(Q,B,n):Q[B]=g[B]}return Q.default=g,e&&e.set(g,Q),Q},g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I,e){"use strict";e.d(I,"a",(function(){return i})),e.d(I,"b",(function(){return o}));var t=e(33);function C(g,I){g.prototype=Object.create(I.prototype),g.prototype.constructor=g,g.__proto__=I}var Q=e(0),F=e.n(Q),B=e(161);e(4);function n(){return(n=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}function U(g,I){if(null==g)return{};var e,t,C={},Q=Object.keys(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||(C[e]=g[e]);return C}var s=e(142),i=function(g){function I(){for(var I,e=arguments.length,t=new Array(e),C=0;C<e;C++)t[C]=arguments[C];return(I=g.call.apply(g,[this].concat(t))||this).history=Object(B.createBrowserHistory)(I.props),I}return C(I,g),I.prototype.render=function(){return F.a.createElement(t.c,{history:this.history,children:this.props.children})},I}(F.a.Component);F.a.Component;var c=function(g,I){return"function"===typeof g?g(I):g},A=function(g,I){return"string"===typeof g?Object(B.createLocation)(g,null,null,I):g},l=function(g){return g},a=F.a.forwardRef;"undefined"===typeof a&&(a=l);var r=a((function(g,I){var e=g.innerRef,t=g.navigate,C=g.onClick,Q=U(g,["innerRef","navigate","onClick"]),B=Q.target,s=n({},Q,{onClick:function(g){try{C&&C(g)}catch(I){throw g.preventDefault(),I}g.defaultPrevented||0!==g.button||B&&"_self"!==B||function(g){return!!(g.metaKey||g.altKey||g.ctrlKey||g.shiftKey)}(g)||(g.preventDefault(),t())}});return s.ref=l!==a&&I||e,F.a.createElement("a",s)}));var o=a((function(g,I){var e=g.component,C=void 0===e?r:e,Q=g.replace,B=g.to,i=g.innerRef,o=U(g,["component","replace","to","innerRef"]);return F.a.createElement(t.e.Consumer,null,(function(g){g||Object(s.default)(!1);var e=g.history,t=A(c(B,g.location),g.location),U=t?e.createHref(t):"",r=n({},o,{href:U,navigate:function(){var I=c(B,g.location);(Q?e.replace:e.push)(I)}});return l!==a?r.ref=I||i:r.innerRef=i,F.a.createElement(C,r)}))})),d=function(g){return g},u=F.a.forwardRef;"undefined"===typeof u&&(u=d);u((function(g,I){var e=g["aria-current"],C=void 0===e?"page":e,Q=g.activeClassName,B=void 0===Q?"active":Q,i=g.activeStyle,l=g.className,a=g.exact,r=g.isActive,y=g.location,b=g.strict,Z=g.style,m=g.to,x=g.innerRef,R=U(g,["aria-current","activeClassName","activeStyle","className","exact","isActive","location","strict","style","to","innerRef"]);return F.a.createElement(t.e.Consumer,null,(function(g){g||Object(s.default)(!1);var e=y||g.location,Q=A(c(m,e),e),U=Q.pathname,S=U&&U.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1"),G=S?Object(t.f)(e.pathname,{path:S,exact:a,strict:b}):null,L=!!(r?r(G,e):G),V=L?function(){for(var g=arguments.length,I=new Array(g),e=0;e<g;e++)I[e]=arguments[e];return I.filter((function(g){return g})).join(" ")}(l,B):l,h=L?n({},Z,{},i):Z,D=n({"aria-current":L&&C||null,className:V,style:h,to:Q},R);return d!==u?D.ref=I||x:D.innerRef=x,F.a.createElement(o,D)}))}))},function(g,I,e){"use strict";function t(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}e.d(I,"a",(function(){return t}))},function(g,I,e){"use strict";e.d(I,"a",(function(){return Q}));var t=e(0),C=e(160);function Q(g,I){return t.useMemo((function(){return null==g&&null==I?null:function(e){Object(C.a)(g,e),Object(C.a)(I,e)}}),[g,I])}},function(g,I,e){(function(I){var e=function(g){return g&&g.Math==Math&&g};g.exports=e("object"==typeof globalThis&&globalThis)||e("object"==typeof window&&window)||e("object"==typeof self&&self)||e("object"==typeof I&&I)||Function("return this")()}).call(this,e(67))},,function(g,I,e){"use strict";e.d(I,"c",(function(){return Q})),e.d(I,"a",(function(){return F})),e.d(I,"b",(function(){return B})),e.d(I,"d",(function(){return n})),e.d(I,"e",(function(){return U}));var t=e(272),C=new RegExp("^[ \\t]*([0-9a-f]{32})?-?([0-9a-f]{16})?-?([01])?[ \\t]*$");function Q(g){var I;return void 0===g&&(g=null===(I=Object(t.b)().getClient())||void 0===I?void 0:I.getOptions()),!!g&&("tracesSampleRate"in g||"tracesSampler"in g)}function F(g){var I=g.match(C);if(I){var e=void 0;return"1"===I[3]?e=!0:"0"===I[3]&&(e=!1),{traceId:I[1],parentSampled:e,parentSpanId:I[2]}}}function B(g){var I,e;return void 0===g&&(g=Object(t.b)()),null===(e=null===(I=g)||void 0===I?void 0:I.getScope())||void 0===e?void 0:e.getTransaction()}function n(g){return g/1e3}function U(g){return 1e3*g}},function(g,I){I.G="G",I.Svg="SVG",I.View="VIEW",I.Text="TEXT",I.Link="LINK",I.Page="PAGE",I.Note="NOTE",I.Path="PATH",I.Rect="RECT",I.Line="LINE",I.Stop="STOP",I.Defs="DEFS",I.Image="IMAGE",I.Tspan="TSPAN",I.Canvas="CANVAS",I.Circle="CIRCLE",I.Ellipse="ELLIPSE",I.Polygon="POLYGON",I.Document="DOCUMENT",I.Polyline="POLYLINE",I.ClipPath="CLIP_PATH",I.TextInstance="TEXT_INSTANCE",I.LinearGradient="LINEAR_GRADIENT",I.RadialGradient="RADIAL_GRADIENT"},function(g,I,e){"use strict";function t(g){return(t="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"===typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g})(g)}Object.defineProperty(I,"__esModule",{value:!0}),I.default=I.ReactGAImplementation=void 0;var C=function(g,I){if(!I&&g&&g.__esModule)return g;if(null===g||"object"!==t(g)&&"function"!==typeof g)return{default:g};var e=Q(I);if(e&&e.has(g))return e.get(g);var C={},F=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var B in g)if("default"!==B&&Object.prototype.hasOwnProperty.call(g,B)){var n=F?Object.getOwnPropertyDescriptor(g,B):null;n&&(n.get||n.set)?Object.defineProperty(C,B,n):C[B]=g[B]}C.default=g,e&&e.set(g,C);return C}(e(1262));function Q(g){if("function"!==typeof WeakMap)return null;var I=new WeakMap,e=new WeakMap;return(Q=function(g){return g?e:I})(g)}var F=C.GA4;I.ReactGAImplementation=F;var B=C.default;I.default=B},,,function(g,I){g.exports=function(g){return"object"===typeof g?null!==g:"function"===typeof g}},,function(g,I,e){"use strict";e.d(I,"a",(function(){return Q}));var t=e(0),C="undefined"!==typeof window?t.useLayoutEffect:t.useEffect;function Q(g){var I=t.useRef(g);return C((function(){I.current=g})),t.useCallback((function(){return I.current.apply(void 0,arguments)}),[])}},function(g,I,e){var t=e(57);g.exports=function(g){if(!t(g))throw TypeError(String(g)+" is not an object");return g}},function(g,I,e){"use strict";e.r(I);var t=e(812);e.d(I,"default",(function(){return t.a}))},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Close");I.default=Q},function(g,I,e){"use strict";g.exports=e(1187)},function(g,I,e){var t=e(50),C=e(484),Q=e(90),F=e(325),B=e(488),n=e(620),U=C("wks"),s=t.Symbol,i=n?s:s&&s.withoutSetter||F;g.exports=function(g){return Q(U,g)||(B&&Q(s,g)?U[g]=s[g]:U[g]=i("Symbol."+g)),U[g]}},function(g,I,e){g.exports=function(g){function I(t){if(e[t])return e[t].exports;var C=e[t]={i:t,l:!1,exports:{}};return g[t].call(C.exports,C,C.exports,I),C.l=!0,C.exports}var e={};return I.m=g,I.c=e,I.i=function(g){return g},I.d=function(g,e,t){I.o(g,e)||Object.defineProperty(g,e,{configurable:!1,enumerable:!0,get:t})},I.n=function(g){var e=g&&g.__esModule?function(){return g.default}:function(){return g};return I.d(e,"a",e),e},I.o=function(g,I){return Object.prototype.hasOwnProperty.call(g,I)},I.p="",I(I.s=1)}([function(g,I,e){"use strict";function t(g){if(Array.isArray(g)){for(var I=0,e=Array(g.length);I<g.length;I++)e[I]=g[I];return e}return Array.from(g)}Object.defineProperty(I,"__esModule",{value:!0});var C=!1,Q=!1,F=function(){return C||console.warn("Pixel not initialized before using call ReactPixel.init with required params"),C},B=function(){for(var g,I=arguments.length,e=Array(I),C=0;C<I;C++)e[C]=arguments[C];(g=console).info.apply(g,t(["[react-facebook-pixel]"].concat(e)))},n={autoConfig:!0,debug:!1};I.default={init:function(g){var I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:n;!function(g,I,e,t,C,Q,F){g.fbq||(C=g.fbq=function(){C.callMethod?C.callMethod.apply(C,arguments):C.queue.push(arguments)},g._fbq||(g._fbq=C),C.push=C,C.loaded=!0,C.version="2.0",C.queue=[],(Q=I.createElement(e)).async=!0,Q.src="https://connect.facebook.net/en_US/fbevents.js",(F=I.getElementsByTagName(e)[0]).parentNode.insertBefore(Q,F))}(window,document,"script"),g?(!1===e.autoConfig&&fbq("set","autoConfig",!1,g),fbq("init",g,I),C=!0,Q=e.debug):console.warn("Please insert pixel id for initializing")},pageView:function(){F()&&(fbq("track","PageView"),Q&&B("called fbq('track', 'PageView');"))},track:function(g,I){F()&&(fbq("track",g,I),Q&&(B("called fbq('track', '"+g+"');"),I&&B("with data",I)))},trackCustom:function(g,I){F()&&(fbq("trackCustom",g,I),Q&&(B("called fbq('trackCustom', '"+g+"');"),I&&B("with data",I)))},fbq:function(g){function I(){return g.apply(this,arguments)}return I.toString=function(){return g.toString()},I}((function(){if(F()){for(var g=arguments.length,I=Array(g),e=0;e<g;e++)I[e]=arguments[e];fbq.apply(void 0,I),Q&&(B("called fbq('"+I.slice(0,2).join("', '")+"')"),I[2]&&B("with data",I[2]))}}))}},function(g,I,e){g.exports=e(0)}])},function(g,I,e){"use strict";e.d(I,"a",(function(){return B}));var t=e(108),C=Object(t.e)(),Q="Sentry Logger ",F=function(){function g(){this._enabled=!1}return g.prototype.disable=function(){this._enabled=!1},g.prototype.enable=function(){this._enabled=!0},g.prototype.log=function(){for(var g=[],I=0;I<arguments.length;I++)g[I]=arguments[I];this._enabled&&Object(t.c)((function(){C.console.log(Q+"[Log]: "+g.join(" "))}))},g.prototype.warn=function(){for(var g=[],I=0;I<arguments.length;I++)g[I]=arguments[I];this._enabled&&Object(t.c)((function(){C.console.warn(Q+"[Warn]: "+g.join(" "))}))},g.prototype.error=function(){for(var g=[],I=0;I<arguments.length;I++)g[I]=arguments[I];this._enabled&&Object(t.c)((function(){C.console.error(Q+"[Error]: "+g.join(" "))}))},g}();C.__SENTRY__=C.__SENTRY__||{};var B=C.__SENTRY__.logger||(C.__SENTRY__.logger=new F)},function(g,I){var e;e=function(){return this}();try{e=e||new Function("return this")()}catch(t){"object"===typeof window&&(e=window)}g.exports=e},function(g,I,e){var t=e(41);g.exports=!t((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},function(g,I,e){var t=e(162),C=Math.min;g.exports=function(g){return g>0?C(t(g),9007199254740991):0}},function(g,I,e){"use strict";var t,C=e(634),Q=e(68),F=e(50),B=e(57),n=e(90),U=e(334),s=e(135),i=e(126),c=e(76).f,A=e(178),l=e(277),a=e(64),r=e(325),o=F.Int8Array,d=o&&o.prototype,u=F.Uint8ClampedArray,y=u&&u.prototype,b=o&&A(o),Z=d&&A(d),m=Object.prototype,x=m.isPrototypeOf,R=a("toStringTag"),S=r("TYPED_ARRAY_TAG"),G=C&&!!l&&"Opera"!==U(F.opera),L=!1,V={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},h=function(g){return B(g)&&n(V,U(g))};for(t in V)F[t]||(G=!1);if((!G||"function"!=typeof b||b===Function.prototype)&&(b=function(){throw TypeError("Incorrect invocation")},G))for(t in V)F[t]&&l(F[t],b);if((!G||!Z||Z===m)&&(Z=b.prototype,G))for(t in V)F[t]&&l(F[t].prototype,Z);if(G&&A(y)!==Z&&l(y,Z),Q&&!n(Z,R))for(t in L=!0,c(Z,R,{get:function(){return B(this)?this[S]:void 0}}),V)F[t]&&s(F[t],S,t);g.exports={NATIVE_ARRAY_BUFFER_VIEWS:G,TYPED_ARRAY_TAG:L&&S,aTypedArray:function(g){if(h(g))return g;throw TypeError("Target is not a typed array")},aTypedArrayConstructor:function(g){if(l){if(x.call(b,g))return g}else for(var I in V)if(n(V,t)){var e=F[I];if(e&&(g===e||x.call(e,g)))return g}throw TypeError("Target is not a typed array constructor")},exportTypedArrayMethod:function(g,I,e){if(Q){if(e)for(var t in V){var C=F[t];C&&n(C.prototype,g)&&delete C.prototype[g]}Z[g]&&!e||i(Z,g,e?I:G&&d[g]||I)}},exportTypedArrayStaticMethod:function(g,I,e){var t,C;if(Q){if(l){if(e)for(t in V)(C=F[t])&&n(C,g)&&delete C[g];if(b[g]&&!e)return;try{return i(b,g,e?I:G&&o[g]||I)}catch(B){}}for(t in V)!(C=F[t])||C[g]&&!e||i(C,g,I)}},isView:function(g){var I=U(g);return"DataView"===I||n(V,I)},isTypedArray:h,TypedArray:b,TypedArrayPrototype:Z}},function(g,I,e){!function(g){"use strict";function I(g){var I,e,t,C;for(e=1,t=arguments.length;e<t;e++)for(I in C=arguments[e])g[I]=C[I];return g}var e=Object.create||function(){function g(){}return function(I){return g.prototype=I,new g}}();function t(g,I){var e=Array.prototype.slice;if(g.bind)return g.bind.apply(g,e.call(arguments,1));var t=e.call(arguments,2);return function(){return g.apply(I,t.length?t.concat(e.call(arguments)):arguments)}}var C=0;function Q(g){return g._leaflet_id=g._leaflet_id||++C,g._leaflet_id}function F(g,I,e){var t,C,Q,F;return F=function(){t=!1,C&&(Q.apply(e,C),C=!1)},Q=function(){t?C=arguments:(g.apply(e,arguments),setTimeout(F,I),t=!0)}}function B(g,I,e){var t=I[1],C=I[0],Q=t-C;return g===t&&e?g:((g-C)%Q+Q)%Q+C}function n(){return!1}function U(g,I){var e=Math.pow(10,void 0===I?6:I);return Math.round(g*e)/e}function s(g){return g.trim?g.trim():g.replace(/^\s+|\s+$/g,"")}function i(g){return s(g).split(/\s+/)}function c(g,I){for(var t in Object.prototype.hasOwnProperty.call(g,"options")||(g.options=g.options?e(g.options):{}),I)g.options[t]=I[t];return g.options}function A(g,I,e){var t=[];for(var C in g)t.push(encodeURIComponent(e?C.toUpperCase():C)+"="+encodeURIComponent(g[C]));return(I&&-1!==I.indexOf("?")?"&":"?")+t.join("&")}var l=/\{ *([\w_-]+) *\}/g;function a(g,I){return g.replace(l,(function(g,e){var t=I[e];if(void 0===t)throw new Error("No value provided for variable "+g);return"function"===typeof t&&(t=t(I)),t}))}var r=Array.isArray||function(g){return"[object Array]"===Object.prototype.toString.call(g)};function o(g,I){for(var e=0;e<g.length;e++)if(g[e]===I)return e;return-1}var d="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=";function u(g){return window["webkit"+g]||window["moz"+g]||window["ms"+g]}var y=0;function b(g){var I=+new Date,e=Math.max(0,16-(I-y));return y=I+e,window.setTimeout(g,e)}var Z=window.requestAnimationFrame||u("RequestAnimationFrame")||b,m=window.cancelAnimationFrame||u("CancelAnimationFrame")||u("CancelRequestAnimationFrame")||function(g){window.clearTimeout(g)};function x(g,I,e){if(!e||Z!==b)return Z.call(window,t(g,I));g.call(I)}function R(g){g&&m.call(window,g)}var S={extend:I,create:e,bind:t,lastId:C,stamp:Q,throttle:F,wrapNum:B,falseFn:n,formatNum:U,trim:s,splitWords:i,setOptions:c,getParamString:A,template:a,isArray:r,indexOf:o,emptyImageUrl:d,requestFn:Z,cancelFn:m,requestAnimFrame:x,cancelAnimFrame:R};function G(){}G.extend=function(g){var t=function(){this.initialize&&this.initialize.apply(this,arguments),this.callInitHooks()},C=t.__super__=this.prototype,Q=e(C);for(var F in Q.constructor=t,t.prototype=Q,this)Object.prototype.hasOwnProperty.call(this,F)&&"prototype"!==F&&"__super__"!==F&&(t[F]=this[F]);return g.statics&&(I(t,g.statics),delete g.statics),g.includes&&(function(g){if("undefined"!==typeof L&&L&&L.Mixin){g=r(g)?g:[g];for(var I=0;I<g.length;I++)g[I]===L.Mixin.Events&&console.warn("Deprecated include of L.Mixin.Events: this property will be removed in future releases, please inherit from L.Evented instead.",(new Error).stack)}}(g.includes),I.apply(null,[Q].concat(g.includes)),delete g.includes),Q.options&&(g.options=I(e(Q.options),g.options)),I(Q,g),Q._initHooks=[],Q.callInitHooks=function(){if(!this._initHooksCalled){C.callInitHooks&&C.callInitHooks.call(this),this._initHooksCalled=!0;for(var g=0,I=Q._initHooks.length;g<I;g++)Q._initHooks[g].call(this)}},t},G.include=function(g){return I(this.prototype,g),this},G.mergeOptions=function(g){return I(this.prototype.options,g),this},G.addInitHook=function(g){var I=Array.prototype.slice.call(arguments,1),e="function"===typeof g?g:function(){this[g].apply(this,I)};return this.prototype._initHooks=this.prototype._initHooks||[],this.prototype._initHooks.push(e),this};var V={on:function(g,I,e){if("object"===typeof g)for(var t in g)this._on(t,g[t],I);else for(var C=0,Q=(g=i(g)).length;C<Q;C++)this._on(g[C],I,e);return this},off:function(g,I,e){if(g)if("object"===typeof g)for(var t in g)this._off(t,g[t],I);else for(var C=0,Q=(g=i(g)).length;C<Q;C++)this._off(g[C],I,e);else delete this._events;return this},_on:function(g,I,e){this._events=this._events||{};var t=this._events[g];t||(t=[],this._events[g]=t),e===this&&(e=void 0);for(var C={fn:I,ctx:e},Q=t,F=0,B=Q.length;F<B;F++)if(Q[F].fn===I&&Q[F].ctx===e)return;Q.push(C)},_off:function(g,I,e){var t,C,Q;if(this._events&&(t=this._events[g]))if(I){if(e===this&&(e=void 0),t)for(C=0,Q=t.length;C<Q;C++){var F=t[C];if(F.ctx===e&&F.fn===I)return F.fn=n,this._firingCount&&(this._events[g]=t=t.slice()),void t.splice(C,1)}}else{for(C=0,Q=t.length;C<Q;C++)t[C].fn=n;delete this._events[g]}},fire:function(g,e,t){if(!this.listens(g,t))return this;var C=I({},e,{type:g,target:this,sourceTarget:e&&e.sourceTarget||this});if(this._events){var Q=this._events[g];if(Q){this._firingCount=this._firingCount+1||1;for(var F=0,B=Q.length;F<B;F++){var n=Q[F];n.fn.call(n.ctx||this,C)}this._firingCount--}}return t&&this._propagateEvent(C),this},listens:function(g,I){var e=this._events&&this._events[g];if(e&&e.length)return!0;if(I)for(var t in this._eventParents)if(this._eventParents[t].listens(g,I))return!0;return!1},once:function(g,I,e){if("object"===typeof g){for(var C in g)this.once(C,g[C],I);return this}var Q=t((function(){this.off(g,I,e).off(g,Q,e)}),this);return this.on(g,I,e).on(g,Q,e)},addEventParent:function(g){return this._eventParents=this._eventParents||{},this._eventParents[Q(g)]=g,this},removeEventParent:function(g){return this._eventParents&&delete this._eventParents[Q(g)],this},_propagateEvent:function(g){for(var e in this._eventParents)this._eventParents[e].fire(g.type,I({layer:g.target,propagatedFrom:g.target},g),!0)}};V.addEventListener=V.on,V.removeEventListener=V.clearAllEventListeners=V.off,V.addOneTimeEventListener=V.once,V.fireEvent=V.fire,V.hasEventListeners=V.listens;var h=G.extend(V);function D(g,I,e){this.x=e?Math.round(g):g,this.y=e?Math.round(I):I}var p=Math.trunc||function(g){return g>0?Math.floor(g):Math.ceil(g)};function E(g,I,e){return g instanceof D?g:r(g)?new D(g[0],g[1]):void 0===g||null===g?g:"object"===typeof g&&"x"in g&&"y"in g?new D(g.x,g.y):new D(g,I,e)}function N(g,I){if(g)for(var e=I?[g,I]:g,t=0,C=e.length;t<C;t++)this.extend(e[t])}function W(g,I){return!g||g instanceof N?g:new N(g,I)}function f(g,I){if(g)for(var e=I?[g,I]:g,t=0,C=e.length;t<C;t++)this.extend(e[t])}function X(g,I){return g instanceof f?g:new f(g,I)}function J(g,I,e){if(isNaN(g)||isNaN(I))throw new Error("Invalid LatLng object: ("+g+", "+I+")");this.lat=+g,this.lng=+I,void 0!==e&&(this.alt=+e)}function v(g,I,e){return g instanceof J?g:r(g)&&"object"!==typeof g[0]?3===g.length?new J(g[0],g[1],g[2]):2===g.length?new J(g[0],g[1]):null:void 0===g||null===g?g:"object"===typeof g&&"lat"in g?new J(g.lat,"lng"in g?g.lng:g.lon,g.alt):void 0===I?null:new J(g,I,e)}D.prototype={clone:function(){return new D(this.x,this.y)},add:function(g){return this.clone()._add(E(g))},_add:function(g){return this.x+=g.x,this.y+=g.y,this},subtract:function(g){return this.clone()._subtract(E(g))},_subtract:function(g){return this.x-=g.x,this.y-=g.y,this},divideBy:function(g){return this.clone()._divideBy(g)},_divideBy:function(g){return this.x/=g,this.y/=g,this},multiplyBy:function(g){return this.clone()._multiplyBy(g)},_multiplyBy:function(g){return this.x*=g,this.y*=g,this},scaleBy:function(g){return new D(this.x*g.x,this.y*g.y)},unscaleBy:function(g){return new D(this.x/g.x,this.y/g.y)},round:function(){return this.clone()._round()},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},floor:function(){return this.clone()._floor()},_floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.clone()._ceil()},_ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},trunc:function(){return this.clone()._trunc()},_trunc:function(){return this.x=p(this.x),this.y=p(this.y),this},distanceTo:function(g){var I=(g=E(g)).x-this.x,e=g.y-this.y;return Math.sqrt(I*I+e*e)},equals:function(g){return(g=E(g)).x===this.x&&g.y===this.y},contains:function(g){return g=E(g),Math.abs(g.x)<=Math.abs(this.x)&&Math.abs(g.y)<=Math.abs(this.y)},toString:function(){return"Point("+U(this.x)+", "+U(this.y)+")"}},N.prototype={extend:function(g){return g=E(g),this.min||this.max?(this.min.x=Math.min(g.x,this.min.x),this.max.x=Math.max(g.x,this.max.x),this.min.y=Math.min(g.y,this.min.y),this.max.y=Math.max(g.y,this.max.y)):(this.min=g.clone(),this.max=g.clone()),this},getCenter:function(g){return new D((this.min.x+this.max.x)/2,(this.min.y+this.max.y)/2,g)},getBottomLeft:function(){return new D(this.min.x,this.max.y)},getTopRight:function(){return new D(this.max.x,this.min.y)},getTopLeft:function(){return this.min},getBottomRight:function(){return this.max},getSize:function(){return this.max.subtract(this.min)},contains:function(g){var I,e;return(g="number"===typeof g[0]||g instanceof D?E(g):W(g))instanceof N?(I=g.min,e=g.max):I=e=g,I.x>=this.min.x&&e.x<=this.max.x&&I.y>=this.min.y&&e.y<=this.max.y},intersects:function(g){g=W(g);var I=this.min,e=this.max,t=g.min,C=g.max,Q=C.x>=I.x&&t.x<=e.x,F=C.y>=I.y&&t.y<=e.y;return Q&&F},overlaps:function(g){g=W(g);var I=this.min,e=this.max,t=g.min,C=g.max,Q=C.x>I.x&&t.x<e.x,F=C.y>I.y&&t.y<e.y;return Q&&F},isValid:function(){return!(!this.min||!this.max)}},f.prototype={extend:function(g){var I,e,t=this._southWest,C=this._northEast;if(g instanceof J)I=g,e=g;else{if(!(g instanceof f))return g?this.extend(v(g)||X(g)):this;if(I=g._southWest,e=g._northEast,!I||!e)return this}return t||C?(t.lat=Math.min(I.lat,t.lat),t.lng=Math.min(I.lng,t.lng),C.lat=Math.max(e.lat,C.lat),C.lng=Math.max(e.lng,C.lng)):(this._southWest=new J(I.lat,I.lng),this._northEast=new J(e.lat,e.lng)),this},pad:function(g){var I=this._southWest,e=this._northEast,t=Math.abs(I.lat-e.lat)*g,C=Math.abs(I.lng-e.lng)*g;return new f(new J(I.lat-t,I.lng-C),new J(e.lat+t,e.lng+C))},getCenter:function(){return new J((this._southWest.lat+this._northEast.lat)/2,(this._southWest.lng+this._northEast.lng)/2)},getSouthWest:function(){return this._southWest},getNorthEast:function(){return this._northEast},getNorthWest:function(){return new J(this.getNorth(),this.getWest())},getSouthEast:function(){return new J(this.getSouth(),this.getEast())},getWest:function(){return this._southWest.lng},getSouth:function(){return this._southWest.lat},getEast:function(){return this._northEast.lng},getNorth:function(){return this._northEast.lat},contains:function(g){g="number"===typeof g[0]||g instanceof J||"lat"in g?v(g):X(g);var I,e,t=this._southWest,C=this._northEast;return g instanceof f?(I=g.getSouthWest(),e=g.getNorthEast()):I=e=g,I.lat>=t.lat&&e.lat<=C.lat&&I.lng>=t.lng&&e.lng<=C.lng},intersects:function(g){g=X(g);var I=this._southWest,e=this._northEast,t=g.getSouthWest(),C=g.getNorthEast(),Q=C.lat>=I.lat&&t.lat<=e.lat,F=C.lng>=I.lng&&t.lng<=e.lng;return Q&&F},overlaps:function(g){g=X(g);var I=this._southWest,e=this._northEast,t=g.getSouthWest(),C=g.getNorthEast(),Q=C.lat>I.lat&&t.lat<e.lat,F=C.lng>I.lng&&t.lng<e.lng;return Q&&F},toBBoxString:function(){return[this.getWest(),this.getSouth(),this.getEast(),this.getNorth()].join(",")},equals:function(g,I){return!!g&&(g=X(g),this._southWest.equals(g.getSouthWest(),I)&&this._northEast.equals(g.getNorthEast(),I))},isValid:function(){return!(!this._southWest||!this._northEast)}},J.prototype={equals:function(g,I){return!!g&&(g=v(g),Math.max(Math.abs(this.lat-g.lat),Math.abs(this.lng-g.lng))<=(void 0===I?1e-9:I))},toString:function(g){return"LatLng("+U(this.lat,g)+", "+U(this.lng,g)+")"},distanceTo:function(g){return H.distance(this,v(g))},wrap:function(){return H.wrapLatLng(this)},toBounds:function(g){var I=180*g/40075017,e=I/Math.cos(Math.PI/180*this.lat);return X([this.lat-I,this.lng-e],[this.lat+I,this.lng+e])},clone:function(){return new J(this.lat,this.lng,this.alt)}};var k={latLngToPoint:function(g,I){var e=this.projection.project(g),t=this.scale(I);return this.transformation._transform(e,t)},pointToLatLng:function(g,I){var e=this.scale(I),t=this.transformation.untransform(g,e);return this.projection.unproject(t)},project:function(g){return this.projection.project(g)},unproject:function(g){return this.projection.unproject(g)},scale:function(g){return 256*Math.pow(2,g)},zoom:function(g){return Math.log(g/256)/Math.LN2},getProjectedBounds:function(g){if(this.infinite)return null;var I=this.projection.bounds,e=this.scale(g);return new N(this.transformation.transform(I.min,e),this.transformation.transform(I.max,e))},infinite:!1,wrapLatLng:function(g){var I=this.wrapLng?B(g.lng,this.wrapLng,!0):g.lng;return new J(this.wrapLat?B(g.lat,this.wrapLat,!0):g.lat,I,g.alt)},wrapLatLngBounds:function(g){var I=g.getCenter(),e=this.wrapLatLng(I),t=I.lat-e.lat,C=I.lng-e.lng;if(0===t&&0===C)return g;var Q=g.getSouthWest(),F=g.getNorthEast();return new f(new J(Q.lat-t,Q.lng-C),new J(F.lat-t,F.lng-C))}},H=I({},k,{wrapLng:[-180,180],R:6371e3,distance:function(g,I){var e=Math.PI/180,t=g.lat*e,C=I.lat*e,Q=Math.sin((I.lat-g.lat)*e/2),F=Math.sin((I.lng-g.lng)*e/2),B=Q*Q+Math.cos(t)*Math.cos(C)*F*F,n=2*Math.atan2(Math.sqrt(B),Math.sqrt(1-B));return this.R*n}}),M={R:6378137,MAX_LATITUDE:85.0511287798,project:function(g){var I=Math.PI/180,e=this.MAX_LATITUDE,t=Math.max(Math.min(e,g.lat),-e),C=Math.sin(t*I);return new D(this.R*g.lng*I,this.R*Math.log((1+C)/(1-C))/2)},unproject:function(g){var I=180/Math.PI;return new J((2*Math.atan(Math.exp(g.y/this.R))-Math.PI/2)*I,g.x*I/this.R)},bounds:function(){var g=6378137*Math.PI;return new N([-g,-g],[g,g])}()};function Y(g,I,e,t){if(r(g))return this._a=g[0],this._b=g[1],this._c=g[2],void(this._d=g[3]);this._a=g,this._b=I,this._c=e,this._d=t}function w(g,I,e,t){return new Y(g,I,e,t)}Y.prototype={transform:function(g,I){return this._transform(g.clone(),I)},_transform:function(g,I){return I=I||1,g.x=I*(this._a*g.x+this._b),g.y=I*(this._c*g.y+this._d),g},untransform:function(g,I){return I=I||1,new D((g.x/I-this._b)/this._a,(g.y/I-this._d)/this._c)}};var T=I({},H,{code:"EPSG:3857",projection:M,transformation:function(){var g=.5/(Math.PI*M.R);return w(g,.5,-g,.5)}()}),z=I({},T,{code:"EPSG:900913"});function O(g){return document.createElementNS("http://www.w3.org/2000/svg",g)}function K(g,I){var e,t,C,Q,F,B,n="";for(e=0,C=g.length;e<C;e++){for(t=0,Q=(F=g[e]).length;t<Q;t++)n+=(t?"L":"M")+(B=F[t]).x+" "+B.y;n+=I?Sg?"z":"x":""}return n||"M0 0"}var j=document.documentElement.style,P="ActiveXObject"in window,_=P&&!document.addEventListener,q="msLaunchUri"in navigator&&!("documentMode"in document),$=Lg("webkit"),gg=Lg("android"),Ig=Lg("android 2")||Lg("android 3"),eg=parseInt(/WebKit\/([0-9]+)|$/.exec(navigator.userAgent)[1],10),tg=gg&&Lg("Google")&&eg<537&&!("AudioNode"in window),Cg=!!window.opera,Qg=!q&&Lg("chrome"),Fg=Lg("gecko")&&!$&&!Cg&&!P,Bg=!Qg&&Lg("safari"),ng=Lg("phantom"),Ug="OTransition"in j,sg=0===navigator.platform.indexOf("Win"),ig=P&&"transition"in j,cg="WebKitCSSMatrix"in window&&"m11"in new window.WebKitCSSMatrix&&!Ig,Ag="MozPerspective"in j,lg=!window.L_DISABLE_3D&&(ig||cg||Ag)&&!Ug&&!ng,ag="undefined"!==typeof orientation||Lg("mobile"),rg=ag&&$,og=ag&&cg,dg=!window.PointerEvent&&window.MSPointerEvent,ug=!(!window.PointerEvent&&!dg),yg=!window.L_NO_TOUCH&&(ug||"ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch),bg=ag&&Cg,Zg=ag&&Fg,mg=(window.devicePixelRatio||window.screen.deviceXDPI/window.screen.logicalXDPI)>1,xg=function(){var g=!1;try{var I=Object.defineProperty({},"passive",{get:function(){g=!0}});window.addEventListener("testPassiveEventSupport",n,I),window.removeEventListener("testPassiveEventSupport",n,I)}catch(e){}return g}(),Rg=!!document.createElement("canvas").getContext,Sg=!(!document.createElementNS||!O("svg").createSVGRect),Gg=!Sg&&function(){try{var g=document.createElement("div");g.innerHTML='<v:shape adj="1"/>';var I=g.firstChild;return I.style.behavior="url(#default#VML)",I&&"object"===typeof I.adj}catch(e){return!1}}();function Lg(g){return navigator.userAgent.toLowerCase().indexOf(g)>=0}var Vg={ie:P,ielt9:_,edge:q,webkit:$,android:gg,android23:Ig,androidStock:tg,opera:Cg,chrome:Qg,gecko:Fg,safari:Bg,phantom:ng,opera12:Ug,win:sg,ie3d:ig,webkit3d:cg,gecko3d:Ag,any3d:lg,mobile:ag,mobileWebkit:rg,mobileWebkit3d:og,msPointer:dg,pointer:ug,touch:yg,mobileOpera:bg,mobileGecko:Zg,retina:mg,passiveEvents:xg,canvas:Rg,svg:Sg,vml:Gg},hg=dg?"MSPointerDown":"pointerdown",Dg=dg?"MSPointerMove":"pointermove",pg=dg?"MSPointerUp":"pointerup",Eg=dg?"MSPointerCancel":"pointercancel",Ng={},Wg=!1;function fg(g,I,e,C){return"touchstart"===I?function(g,I,e){var C=t((function(g){g.MSPOINTER_TYPE_TOUCH&&g.pointerType===g.MSPOINTER_TYPE_TOUCH&&EI(g),kg(g,I)}));g["_leaflet_touchstart"+e]=C,g.addEventListener(hg,C,!1),Wg||(document.addEventListener(hg,Xg,!0),document.addEventListener(Dg,Jg,!0),document.addEventListener(pg,vg,!0),document.addEventListener(Eg,vg,!0),Wg=!0)}(g,e,C):"touchmove"===I?function(g,I,e){var t=function(g){g.pointerType===(g.MSPOINTER_TYPE_MOUSE||"mouse")&&0===g.buttons||kg(g,I)};g["_leaflet_touchmove"+e]=t,g.addEventListener(Dg,t,!1)}(g,e,C):"touchend"===I&&function(g,I,e){var t=function(g){kg(g,I)};g["_leaflet_touchend"+e]=t,g.addEventListener(pg,t,!1),g.addEventListener(Eg,t,!1)}(g,e,C),this}function Xg(g){Ng[g.pointerId]=g}function Jg(g){Ng[g.pointerId]&&(Ng[g.pointerId]=g)}function vg(g){delete Ng[g.pointerId]}function kg(g,I){for(var e in g.touches=[],Ng)g.touches.push(Ng[e]);g.changedTouches=[g],I(g)}var Hg,Mg,Yg,wg,Tg,zg=dg?"MSPointerDown":ug?"pointerdown":"touchstart",Og=dg?"MSPointerUp":ug?"pointerup":"touchend",Kg="_leaflet_",jg=iI(["transform","webkitTransform","OTransform","MozTransform","msTransform"]),Pg=iI(["webkitTransition","transition","OTransition","MozTransition","msTransition"]),_g="webkitTransition"===Pg||"OTransition"===Pg?Pg+"End":"transitionend";function qg(g){return"string"===typeof g?document.getElementById(g):g}function $g(g,I){var e=g.style[I]||g.currentStyle&&g.currentStyle[I];if((!e||"auto"===e)&&document.defaultView){var t=document.defaultView.getComputedStyle(g,null);e=t?t[I]:null}return"auto"===e?null:e}function gI(g,I,e){var t=document.createElement(g);return t.className=I||"",e&&e.appendChild(t),t}function II(g){var I=g.parentNode;I&&I.removeChild(g)}function eI(g){for(;g.firstChild;)g.removeChild(g.firstChild)}function tI(g){var I=g.parentNode;I&&I.lastChild!==g&&I.appendChild(g)}function CI(g){var I=g.parentNode;I&&I.firstChild!==g&&I.insertBefore(g,I.firstChild)}function QI(g,I){if(void 0!==g.classList)return g.classList.contains(I);var e=UI(g);return e.length>0&&new RegExp("(^|\\s)"+I+"(\\s|$)").test(e)}function FI(g,I){if(void 0!==g.classList)for(var e=i(I),t=0,C=e.length;t<C;t++)g.classList.add(e[t]);else if(!QI(g,I)){var Q=UI(g);nI(g,(Q?Q+" ":"")+I)}}function BI(g,I){void 0!==g.classList?g.classList.remove(I):nI(g,s((" "+UI(g)+" ").replace(" "+I+" "," ")))}function nI(g,I){void 0===g.className.baseVal?g.className=I:g.className.baseVal=I}function UI(g){return g.correspondingElement&&(g=g.correspondingElement),void 0===g.className.baseVal?g.className:g.className.baseVal}function sI(g,I){"opacity"in g.style?g.style.opacity=I:"filter"in g.style&&function(g,I){var e=!1,t="DXImageTransform.Microsoft.Alpha";try{e=g.filters.item(t)}catch(C){if(1===I)return}I=Math.round(100*I),e?(e.Enabled=100!==I,e.Opacity=I):g.style.filter+=" progid:"+t+"(opacity="+I+")"}(g,I)}function iI(g){for(var I=document.documentElement.style,e=0;e<g.length;e++)if(g[e]in I)return g[e];return!1}function cI(g,I,e){var t=I||new D(0,0);g.style[jg]=(ig?"translate("+t.x+"px,"+t.y+"px)":"translate3d("+t.x+"px,"+t.y+"px,0)")+(e?" scale("+e+")":"")}function AI(g,I){g._leaflet_pos=I,lg?cI(g,I):(g.style.left=I.x+"px",g.style.top=I.y+"px")}function lI(g){return g._leaflet_pos||new D(0,0)}if("onselectstart"in document)Hg=function(){mI(window,"selectstart",EI)},Mg=function(){RI(window,"selectstart",EI)};else{var aI=iI(["userSelect","WebkitUserSelect","OUserSelect","MozUserSelect","msUserSelect"]);Hg=function(){if(aI){var g=document.documentElement.style;Yg=g[aI],g[aI]="none"}},Mg=function(){aI&&(document.documentElement.style[aI]=Yg,Yg=void 0)}}function rI(){mI(window,"dragstart",EI)}function oI(){RI(window,"dragstart",EI)}function dI(g){for(;-1===g.tabIndex;)g=g.parentNode;g.style&&(uI(),wg=g,Tg=g.style.outline,g.style.outline="none",mI(window,"keydown",uI))}function uI(){wg&&(wg.style.outline=Tg,wg=void 0,Tg=void 0,RI(window,"keydown",uI))}function yI(g){do{g=g.parentNode}while((!g.offsetWidth||!g.offsetHeight)&&g!==document.body);return g}function bI(g){var I=g.getBoundingClientRect();return{x:I.width/g.offsetWidth||1,y:I.height/g.offsetHeight||1,boundingClientRect:I}}var ZI={TRANSFORM:jg,TRANSITION:Pg,TRANSITION_END:_g,get:qg,getStyle:$g,create:gI,remove:II,empty:eI,toFront:tI,toBack:CI,hasClass:QI,addClass:FI,removeClass:BI,setClass:nI,getClass:UI,setOpacity:sI,testProp:iI,setTransform:cI,setPosition:AI,getPosition:lI,disableTextSelection:Hg,enableTextSelection:Mg,disableImageDrag:rI,enableImageDrag:oI,preventOutline:dI,restoreOutline:uI,getSizedParentNode:yI,getScale:bI};function mI(g,I,e,t){if("object"===typeof I)for(var C in I)LI(g,C,I[C],e);else for(var Q=0,F=(I=i(I)).length;Q<F;Q++)LI(g,I[Q],e,t);return this}var xI="_leaflet_events";function RI(g,I,e,t){if("object"===typeof I)for(var C in I)VI(g,C,I[C],e);else if(I)for(var Q=0,F=(I=i(I)).length;Q<F;Q++)VI(g,I[Q],e,t);else{for(var B in g[xI])VI(g,B,g[xI][B]);delete g[xI]}return this}function SI(){if(ug)return!(q||Bg)}var GI={mouseenter:"mouseover",mouseleave:"mouseout",wheel:!("onwheel"in window)&&"mousewheel"};function LI(g,I,e,t){var C=I+Q(e)+(t?"_"+Q(t):"");if(g[xI]&&g[xI][C])return this;var F=function(I){return e.call(t||g,I||window.event)},B=F;ug&&0===I.indexOf("touch")?fg(g,I,F,C):yg&&"dblclick"===I&&!SI()?function(g,I,e){var t,C,Q=!1;function F(g){if(ug){if(!g.isPrimary)return;if("mouse"===g.pointerType)return}else if(g.touches.length>1)return;var I=Date.now(),e=I-(t||I);C=g.touches?g.touches[0]:g,Q=e>0&&e<=250,t=I}function B(g){if(Q&&!C.cancelBubble){if(ug){if("mouse"===g.pointerType)return;var e,F,B={};for(F in C)e=C[F],B[F]=e&&e.bind?e.bind(C):e;C=B}C.type="dblclick",C.button=0,I(C),t=null}}g[Kg+zg+e]=F,g[Kg+Og+e]=B,g[Kg+"dblclick"+e]=I,g.addEventListener(zg,F,!!xg&&{passive:!1}),g.addEventListener(Og,B,!!xg&&{passive:!1}),g.addEventListener("dblclick",I,!1)}(g,F,C):"addEventListener"in g?"touchstart"===I||"touchmove"===I||"wheel"===I||"mousewheel"===I?g.addEventListener(GI[I]||I,F,!!xg&&{passive:!1}):"mouseenter"===I||"mouseleave"===I?(F=function(I){I=I||window.event,HI(g,I)&&B(I)},g.addEventListener(GI[I],F,!1)):g.addEventListener(I,B,!1):"attachEvent"in g&&g.attachEvent("on"+I,F),g[xI]=g[xI]||{},g[xI][C]=F}function VI(g,I,e,t){var C=I+Q(e)+(t?"_"+Q(t):""),F=g[xI]&&g[xI][C];if(!F)return this;ug&&0===I.indexOf("touch")?function(g,I,e){var t=g["_leaflet_"+I+e];"touchstart"===I?g.removeEventListener(hg,t,!1):"touchmove"===I?g.removeEventListener(Dg,t,!1):"touchend"===I&&(g.removeEventListener(pg,t,!1),g.removeEventListener(Eg,t,!1))}(g,I,C):yg&&"dblclick"===I&&!SI()?function(g,I){var e=g[Kg+zg+I],t=g[Kg+Og+I],C=g[Kg+"dblclick"+I];g.removeEventListener(zg,e,!!xg&&{passive:!1}),g.removeEventListener(Og,t,!!xg&&{passive:!1}),g.removeEventListener("dblclick",C,!1)}(g,C):"removeEventListener"in g?g.removeEventListener(GI[I]||I,F,!1):"detachEvent"in g&&g.detachEvent("on"+I,F),g[xI][C]=null}function hI(g){return g.stopPropagation?g.stopPropagation():g.originalEvent?g.originalEvent._stopped=!0:g.cancelBubble=!0,kI(g),this}function DI(g){return LI(g,"wheel",hI),this}function pI(g){return mI(g,"mousedown touchstart dblclick",hI),LI(g,"click",vI),this}function EI(g){return g.preventDefault?g.preventDefault():g.returnValue=!1,this}function NI(g){return EI(g),hI(g),this}function WI(g,I){if(!I)return new D(g.clientX,g.clientY);var e=bI(I),t=e.boundingClientRect;return new D((g.clientX-t.left)/e.x-I.clientLeft,(g.clientY-t.top)/e.y-I.clientTop)}var fI=sg&&Qg?2*window.devicePixelRatio:Fg?window.devicePixelRatio:1;function XI(g){return q?g.wheelDeltaY/2:g.deltaY&&0===g.deltaMode?-g.deltaY/fI:g.deltaY&&1===g.deltaMode?20*-g.deltaY:g.deltaY&&2===g.deltaMode?60*-g.deltaY:g.deltaX||g.deltaZ?0:g.wheelDelta?(g.wheelDeltaY||g.wheelDelta)/2:g.detail&&Math.abs(g.detail)<32765?20*-g.detail:g.detail?g.detail/-32765*60:0}var JI={};function vI(g){JI[g.type]=!0}function kI(g){var I=JI[g.type];return JI[g.type]=!1,I}function HI(g,I){var e=I.relatedTarget;if(!e)return!0;try{for(;e&&e!==g;)e=e.parentNode}catch(t){return!1}return e!==g}var MI={on:mI,off:RI,stopPropagation:hI,disableScrollPropagation:DI,disableClickPropagation:pI,preventDefault:EI,stop:NI,getMousePosition:WI,getWheelDelta:XI,fakeStop:vI,skipped:kI,isExternalTarget:HI,addListener:mI,removeListener:RI},YI=h.extend({run:function(g,I,e,t){this.stop(),this._el=g,this._inProgress=!0,this._duration=e||.25,this._easeOutPower=1/Math.max(t||.5,.2),this._startPos=lI(g),this._offset=I.subtract(this._startPos),this._startTime=+new Date,this.fire("start"),this._animate()},stop:function(){this._inProgress&&(this._step(!0),this._complete())},_animate:function(){this._animId=x(this._animate,this),this._step()},_step:function(g){var I=+new Date-this._startTime,e=1e3*this._duration;I<e?this._runFrame(this._easeOut(I/e),g):(this._runFrame(1),this._complete())},_runFrame:function(g,I){var e=this._startPos.add(this._offset.multiplyBy(g));I&&e._round(),AI(this._el,e),this.fire("step")},_complete:function(){R(this._animId),this._inProgress=!1,this.fire("end")},_easeOut:function(g){return 1-Math.pow(1-g,this._easeOutPower)}}),wI=h.extend({options:{crs:T,center:void 0,zoom:void 0,minZoom:void 0,maxZoom:void 0,layers:[],maxBounds:void 0,renderer:void 0,zoomAnimation:!0,zoomAnimationThreshold:4,fadeAnimation:!0,markerZoomAnimation:!0,transform3DLimit:8388608,zoomSnap:1,zoomDelta:1,trackResize:!0},initialize:function(g,I){I=c(this,I),this._handlers=[],this._layers={},this._zoomBoundLayers={},this._sizeChanged=!0,this._initContainer(g),this._initLayout(),this._onResize=t(this._onResize,this),this._initEvents(),I.maxBounds&&this.setMaxBounds(I.maxBounds),void 0!==I.zoom&&(this._zoom=this._limitZoom(I.zoom)),I.center&&void 0!==I.zoom&&this.setView(v(I.center),I.zoom,{reset:!0}),this.callInitHooks(),this._zoomAnimated=Pg&&lg&&!bg&&this.options.zoomAnimation,this._zoomAnimated&&(this._createAnimProxy(),mI(this._proxy,_g,this._catchTransitionEnd,this)),this._addLayers(this.options.layers)},setView:function(g,e,t){return e=void 0===e?this._zoom:this._limitZoom(e),g=this._limitCenter(v(g),e,this.options.maxBounds),t=t||{},this._stop(),this._loaded&&!t.reset&&!0!==t&&(void 0!==t.animate&&(t.zoom=I({animate:t.animate},t.zoom),t.pan=I({animate:t.animate,duration:t.duration},t.pan)),this._zoom!==e?this._tryAnimatedZoom&&this._tryAnimatedZoom(g,e,t.zoom):this._tryAnimatedPan(g,t.pan))?(clearTimeout(this._sizeTimer),this):(this._resetView(g,e),this)},setZoom:function(g,I){return this._loaded?this.setView(this.getCenter(),g,{zoom:I}):(this._zoom=g,this)},zoomIn:function(g,I){return g=g||(lg?this.options.zoomDelta:1),this.setZoom(this._zoom+g,I)},zoomOut:function(g,I){return g=g||(lg?this.options.zoomDelta:1),this.setZoom(this._zoom-g,I)},setZoomAround:function(g,I,e){var t=this.getZoomScale(I),C=this.getSize().divideBy(2),Q=(g instanceof D?g:this.latLngToContainerPoint(g)).subtract(C).multiplyBy(1-1/t),F=this.containerPointToLatLng(C.add(Q));return this.setView(F,I,{zoom:e})},_getBoundsCenterZoom:function(g,I){I=I||{},g=g.getBounds?g.getBounds():X(g);var e=E(I.paddingTopLeft||I.padding||[0,0]),t=E(I.paddingBottomRight||I.padding||[0,0]),C=this.getBoundsZoom(g,!1,e.add(t));if((C="number"===typeof I.maxZoom?Math.min(I.maxZoom,C):C)===1/0)return{center:g.getCenter(),zoom:C};var Q=t.subtract(e).divideBy(2),F=this.project(g.getSouthWest(),C),B=this.project(g.getNorthEast(),C);return{center:this.unproject(F.add(B).divideBy(2).add(Q),C),zoom:C}},fitBounds:function(g,I){if(!(g=X(g)).isValid())throw new Error("Bounds are not valid.");var e=this._getBoundsCenterZoom(g,I);return this.setView(e.center,e.zoom,I)},fitWorld:function(g){return this.fitBounds([[-90,-180],[90,180]],g)},panTo:function(g,I){return this.setView(g,this._zoom,{pan:I})},panBy:function(g,I){if(I=I||{},!(g=E(g).round()).x&&!g.y)return this.fire("moveend");if(!0!==I.animate&&!this.getSize().contains(g))return this._resetView(this.unproject(this.project(this.getCenter()).add(g)),this.getZoom()),this;if(this._panAnim||(this._panAnim=new YI,this._panAnim.on({step:this._onPanTransitionStep,end:this._onPanTransitionEnd},this)),I.noMoveStart||this.fire("movestart"),!1!==I.animate){FI(this._mapPane,"leaflet-pan-anim");var e=this._getMapPanePos().subtract(g).round();this._panAnim.run(this._mapPane,e,I.duration||.25,I.easeLinearity)}else this._rawPanBy(g),this.fire("move").fire("moveend");return this},flyTo:function(g,I,e){if(!1===(e=e||{}).animate||!lg)return this.setView(g,I,e);this._stop();var t=this.project(this.getCenter()),C=this.project(g),Q=this.getSize(),F=this._zoom;g=v(g),I=void 0===I?F:I;var B=Math.max(Q.x,Q.y),n=B*this.getZoomScale(F,I),U=C.distanceTo(t)||1;function s(g){var I=(n*n-B*B+2.0164*(g?-1:1)*2.0164*U*U)/(2*(g?n:B)*2.0164*U),e=Math.sqrt(I*I+1)-I;return e<1e-9?-18:Math.log(e)}function i(g){return(Math.exp(g)-Math.exp(-g))/2}function c(g){return(Math.exp(g)+Math.exp(-g))/2}var A=s(0);function l(g){return B*(c(A)*(i(I=A+1.42*g)/c(I))-i(A))/2.0164;var I}var a=Date.now(),r=(s(1)-A)/1.42,o=e.duration?1e3*e.duration:1e3*r*.8;return this._moveStart(!0,e.noMoveStart),function e(){var Q=(Date.now()-a)/o,n=function(g){return 1-Math.pow(1-g,1.5)}(Q)*r;Q<=1?(this._flyToFrame=x(e,this),this._move(this.unproject(t.add(C.subtract(t).multiplyBy(l(n)/U)),F),this.getScaleZoom(B/function(g){return B*(c(A)/c(A+1.42*g))}(n),F),{flyTo:!0})):this._move(g,I)._moveEnd(!0)}.call(this),this},flyToBounds:function(g,I){var e=this._getBoundsCenterZoom(g,I);return this.flyTo(e.center,e.zoom,I)},setMaxBounds:function(g){return(g=X(g)).isValid()?(this.options.maxBounds&&this.off("moveend",this._panInsideMaxBounds),this.options.maxBounds=g,this._loaded&&this._panInsideMaxBounds(),this.on("moveend",this._panInsideMaxBounds)):(this.options.maxBounds=null,this.off("moveend",this._panInsideMaxBounds))},setMinZoom:function(g){var I=this.options.minZoom;return this.options.minZoom=g,this._loaded&&I!==g&&(this.fire("zoomlevelschange"),this.getZoom()<this.options.minZoom)?this.setZoom(g):this},setMaxZoom:function(g){var I=this.options.maxZoom;return this.options.maxZoom=g,this._loaded&&I!==g&&(this.fire("zoomlevelschange"),this.getZoom()>this.options.maxZoom)?this.setZoom(g):this},panInsideBounds:function(g,I){this._enforcingBounds=!0;var e=this.getCenter(),t=this._limitCenter(e,this._zoom,X(g));return e.equals(t)||this.panTo(t,I),this._enforcingBounds=!1,this},panInside:function(g,I){var e=E((I=I||{}).paddingTopLeft||I.padding||[0,0]),t=E(I.paddingBottomRight||I.padding||[0,0]),C=this.getCenter(),Q=this.project(C),F=this.project(g),B=this.getPixelBounds(),n=B.getSize().divideBy(2),U=W([B.min.add(e),B.max.subtract(t)]);if(!U.contains(F)){this._enforcingBounds=!0;var s=Q.subtract(F),i=E(F.x+s.x,F.y+s.y);(F.x<U.min.x||F.x>U.max.x)&&(i.x=Q.x-s.x,s.x>0?i.x+=n.x-e.x:i.x-=n.x-t.x),(F.y<U.min.y||F.y>U.max.y)&&(i.y=Q.y-s.y,s.y>0?i.y+=n.y-e.y:i.y-=n.y-t.y),this.panTo(this.unproject(i),I),this._enforcingBounds=!1}return this},invalidateSize:function(g){if(!this._loaded)return this;g=I({animate:!1,pan:!0},!0===g?{animate:!0}:g);var e=this.getSize();this._sizeChanged=!0,this._lastCenter=null;var C=this.getSize(),Q=e.divideBy(2).round(),F=C.divideBy(2).round(),B=Q.subtract(F);return B.x||B.y?(g.animate&&g.pan?this.panBy(B):(g.pan&&this._rawPanBy(B),this.fire("move"),g.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(t(this.fire,this,"moveend"),200)):this.fire("moveend")),this.fire("resize",{oldSize:e,newSize:C})):this},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire("viewreset"),this._stop()},locate:function(g){if(g=this._locateOptions=I({timeout:1e4,watch:!1},g),!("geolocation"in navigator))return this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this;var e=t(this._handleGeolocationResponse,this),C=t(this._handleGeolocationError,this);return g.watch?this._locationWatchId=navigator.geolocation.watchPosition(e,C,g):navigator.geolocation.getCurrentPosition(e,C,g),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(g){var I=g.code,e=g.message||(1===I?"permission denied":2===I?"position unavailable":"timeout");this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:I,message:"Geolocation error: "+e+"."})},_handleGeolocationResponse:function(g){var I=new J(g.coords.latitude,g.coords.longitude),e=I.toBounds(2*g.coords.accuracy),t=this._locateOptions;if(t.setView){var C=this.getBoundsZoom(e);this.setView(I,t.maxZoom?Math.min(C,t.maxZoom):C)}var Q={latlng:I,bounds:e,timestamp:g.timestamp};for(var F in g.coords)"number"===typeof g.coords[F]&&(Q[F]=g.coords[F]);this.fire("locationfound",Q)},addHandler:function(g,I){if(!I)return this;var e=this[g]=new I(this);return this._handlers.push(e),this.options[g]&&e.enable(),this},remove:function(){if(this._initEvents(!0),this.off("moveend",this._panInsideMaxBounds),this._containerId!==this._container._leaflet_id)throw new Error("Map container is being reused by another instance");try{delete this._container._leaflet_id,delete this._containerId}catch(I){this._container._leaflet_id=void 0,this._containerId=void 0}var g;for(g in void 0!==this._locationWatchId&&this.stopLocate(),this._stop(),II(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._resizeRequest&&(R(this._resizeRequest),this._resizeRequest=null),this._clearHandlers(),this._loaded&&this.fire("unload"),this._layers)this._layers[g].remove();for(g in this._panes)II(this._panes[g]);return this._layers=[],this._panes=[],delete this._mapPane,delete this._renderer,this},createPane:function(g,I){var e=gI("div","leaflet-pane"+(g?" leaflet-"+g.replace("Pane","")+"-pane":""),I||this._mapPane);return g&&(this._panes[g]=e),e},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter:this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var g=this.getPixelBounds();return new f(this.unproject(g.getBottomLeft()),this.unproject(g.getTopRight()))},getMinZoom:function(){return void 0===this.options.minZoom?this._layersMinZoom||0:this.options.minZoom},getMaxZoom:function(){return void 0===this.options.maxZoom?void 0===this._layersMaxZoom?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(g,I,e){g=X(g),e=E(e||[0,0]);var t=this.getZoom()||0,C=this.getMinZoom(),Q=this.getMaxZoom(),F=g.getNorthWest(),B=g.getSouthEast(),n=this.getSize().subtract(e),U=W(this.project(B,t),this.project(F,t)).getSize(),s=lg?this.options.zoomSnap:1,i=n.x/U.x,c=n.y/U.y,A=I?Math.max(i,c):Math.min(i,c);return t=this.getScaleZoom(A,t),s&&(t=Math.round(t/(s/100))*(s/100),t=I?Math.ceil(t/s)*s:Math.floor(t/s)*s),Math.max(C,Math.min(Q,t))},getSize:function(){return this._size&&!this._sizeChanged||(this._size=new D(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(g,I){var e=this._getTopLeftPoint(g,I);return new N(e,e.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._pixelOrigin},getPixelWorldBounds:function(g){return this.options.crs.getProjectedBounds(void 0===g?this.getZoom():g)},getPane:function(g){return"string"===typeof g?this._panes[g]:g},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(g,I){var e=this.options.crs;return I=void 0===I?this._zoom:I,e.scale(g)/e.scale(I)},getScaleZoom:function(g,I){var e=this.options.crs;I=void 0===I?this._zoom:I;var t=e.zoom(g*e.scale(I));return isNaN(t)?1/0:t},project:function(g,I){return I=void 0===I?this._zoom:I,this.options.crs.latLngToPoint(v(g),I)},unproject:function(g,I){return I=void 0===I?this._zoom:I,this.options.crs.pointToLatLng(E(g),I)},layerPointToLatLng:function(g){var I=E(g).add(this.getPixelOrigin());return this.unproject(I)},latLngToLayerPoint:function(g){return this.project(v(g))._round()._subtract(this.getPixelOrigin())},wrapLatLng:function(g){return this.options.crs.wrapLatLng(v(g))},wrapLatLngBounds:function(g){return this.options.crs.wrapLatLngBounds(X(g))},distance:function(g,I){return this.options.crs.distance(v(g),v(I))},containerPointToLayerPoint:function(g){return E(g).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(g){return E(g).add(this._getMapPanePos())},containerPointToLatLng:function(g){var I=this.containerPointToLayerPoint(E(g));return this.layerPointToLatLng(I)},latLngToContainerPoint:function(g){return this.layerPointToContainerPoint(this.latLngToLayerPoint(v(g)))},mouseEventToContainerPoint:function(g){return WI(g,this._container)},mouseEventToLayerPoint:function(g){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(g))},mouseEventToLatLng:function(g){return this.layerPointToLatLng(this.mouseEventToLayerPoint(g))},_initContainer:function(g){var I=this._container=qg(g);if(!I)throw new Error("Map container not found.");if(I._leaflet_id)throw new Error("Map container is already initialized.");mI(I,"scroll",this._onScroll,this),this._containerId=Q(I)},_initLayout:function(){var g=this._container;this._fadeAnimated=this.options.fadeAnimation&&lg,FI(g,"leaflet-container"+(yg?" leaflet-touch":"")+(mg?" leaflet-retina":"")+(_?" leaflet-oldie":"")+(Bg?" leaflet-safari":"")+(this._fadeAnimated?" leaflet-fade-anim":""));var I=$g(g,"position");"absolute"!==I&&"relative"!==I&&"fixed"!==I&&(g.style.position="relative"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var g=this._panes={};this._paneRenderers={},this._mapPane=this.createPane("mapPane",this._container),AI(this._mapPane,new D(0,0)),this.createPane("tilePane"),this.createPane("shadowPane"),this.createPane("overlayPane"),this.createPane("markerPane"),this.createPane("tooltipPane"),this.createPane("popupPane"),this.options.markerZoomAnimation||(FI(g.markerPane,"leaflet-zoom-hide"),FI(g.shadowPane,"leaflet-zoom-hide"))},_resetView:function(g,I){AI(this._mapPane,new D(0,0));var e=!this._loaded;this._loaded=!0,I=this._limitZoom(I),this.fire("viewprereset");var t=this._zoom!==I;this._moveStart(t,!1)._move(g,I)._moveEnd(t),this.fire("viewreset"),e&&this.fire("load")},_moveStart:function(g,I){return g&&this.fire("zoomstart"),I||this.fire("movestart"),this},_move:function(g,I,e){void 0===I&&(I=this._zoom);var t=this._zoom!==I;return this._zoom=I,this._lastCenter=g,this._pixelOrigin=this._getNewPixelOrigin(g),(t||e&&e.pinch)&&this.fire("zoom",e),this.fire("move",e)},_moveEnd:function(g){return g&&this.fire("zoomend"),this.fire("moveend")},_stop:function(){return R(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(g){AI(this._mapPane,this._getMapPanePos().subtract(g))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_panInsideMaxBounds:function(){this._enforcingBounds||this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error("Set map center and zoom first.")},_initEvents:function(g){this._targets={},this._targets[Q(this._container)]=this;var I=g?RI:mI;I(this._container,"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress keydown keyup",this._handleDOMEvent,this),this.options.trackResize&&I(window,"resize",this._onResize,this),lg&&this.options.transform3DLimit&&(g?this.off:this.on).call(this,"moveend",this._onMoveEnd)},_onResize:function(){R(this._resizeRequest),this._resizeRequest=x((function(){this.invalidateSize({debounceMoveend:!0})}),this)},_onScroll:function(){this._container.scrollTop=0,this._container.scrollLeft=0},_onMoveEnd:function(){var g=this._getMapPanePos();Math.max(Math.abs(g.x),Math.abs(g.y))>=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(g,I){for(var e,t=[],C="mouseout"===I||"mouseover"===I,F=g.target||g.srcElement,B=!1;F;){if((e=this._targets[Q(F)])&&("click"===I||"preclick"===I)&&!g._simulated&&this._draggableMoved(e)){B=!0;break}if(e&&e.listens(I,!0)){if(C&&!HI(F,g))break;if(t.push(e),C)break}if(F===this._container)break;F=F.parentNode}return t.length||B||C||!HI(F,g)||(t=[this]),t},_handleDOMEvent:function(g){if(this._loaded&&!kI(g)){var I=g.type;"mousedown"!==I&&"keypress"!==I&&"keyup"!==I&&"keydown"!==I||dI(g.target||g.srcElement),this._fireDOMEvent(g,I)}},_mouseEvents:["click","dblclick","mouseover","mouseout","contextmenu"],_fireDOMEvent:function(g,e,t){if("click"===g.type){var C=I({},g);C.type="preclick",this._fireDOMEvent(C,C.type,t)}if(!g._stopped&&(t=(t||[]).concat(this._findEventTargets(g,e))).length){var Q=t[0];"contextmenu"===e&&Q.listens(e,!0)&&EI(g);var F={originalEvent:g};if("keypress"!==g.type&&"keydown"!==g.type&&"keyup"!==g.type){var B=Q.getLatLng&&(!Q._radius||Q._radius<=10);F.containerPoint=B?this.latLngToContainerPoint(Q.getLatLng()):this.mouseEventToContainerPoint(g),F.layerPoint=this.containerPointToLayerPoint(F.containerPoint),F.latlng=B?Q.getLatLng():this.layerPointToLatLng(F.layerPoint)}for(var n=0;n<t.length;n++)if(t[n].fire(e,F,!0),F.originalEvent._stopped||!1===t[n].options.bubblingMouseEvents&&-1!==o(this._mouseEvents,e))return}},_draggableMoved:function(g){return(g=g.dragging&&g.dragging.enabled()?g:this).dragging&&g.dragging.moved()||this.boxZoom&&this.boxZoom.moved()},_clearHandlers:function(){for(var g=0,I=this._handlers.length;g<I;g++)this._handlers[g].disable()},whenReady:function(g,I){return this._loaded?g.call(I||this,{target:this}):this.on("load",g,I),this},_getMapPanePos:function(){return lI(this._mapPane)||new D(0,0)},_moved:function(){var g=this._getMapPanePos();return g&&!g.equals([0,0])},_getTopLeftPoint:function(g,I){return(g&&void 0!==I?this._getNewPixelOrigin(g,I):this.getPixelOrigin()).subtract(this._getMapPanePos())},_getNewPixelOrigin:function(g,I){var e=this.getSize()._divideBy(2);return this.project(g,I)._subtract(e)._add(this._getMapPanePos())._round()},_latLngToNewLayerPoint:function(g,I,e){var t=this._getNewPixelOrigin(e,I);return this.project(g,I)._subtract(t)},_latLngBoundsToNewLayerBounds:function(g,I,e){var t=this._getNewPixelOrigin(e,I);return W([this.project(g.getSouthWest(),I)._subtract(t),this.project(g.getNorthWest(),I)._subtract(t),this.project(g.getSouthEast(),I)._subtract(t),this.project(g.getNorthEast(),I)._subtract(t)])},_getCenterLayerPoint:function(){return this.containerPointToLayerPoint(this.getSize()._divideBy(2))},_getCenterOffset:function(g){return this.latLngToLayerPoint(g).subtract(this._getCenterLayerPoint())},_limitCenter:function(g,I,e){if(!e)return g;var t=this.project(g,I),C=this.getSize().divideBy(2),Q=new N(t.subtract(C),t.add(C)),F=this._getBoundsOffset(Q,e,I);return F.round().equals([0,0])?g:this.unproject(t.add(F),I)},_limitOffset:function(g,I){if(!I)return g;var e=this.getPixelBounds(),t=new N(e.min.add(g),e.max.add(g));return g.add(this._getBoundsOffset(t,I))},_getBoundsOffset:function(g,I,e){var t=W(this.project(I.getNorthEast(),e),this.project(I.getSouthWest(),e)),C=t.min.subtract(g.min),Q=t.max.subtract(g.max);return new D(this._rebound(C.x,-Q.x),this._rebound(C.y,-Q.y))},_rebound:function(g,I){return g+I>0?Math.round(g-I)/2:Math.max(0,Math.ceil(g))-Math.max(0,Math.floor(I))},_limitZoom:function(g){var I=this.getMinZoom(),e=this.getMaxZoom(),t=lg?this.options.zoomSnap:1;return t&&(g=Math.round(g/t)*t),Math.max(I,Math.min(e,g))},_onPanTransitionStep:function(){this.fire("move")},_onPanTransitionEnd:function(){BI(this._mapPane,"leaflet-pan-anim"),this.fire("moveend")},_tryAnimatedPan:function(g,I){var e=this._getCenterOffset(g)._trunc();return!(!0!==(I&&I.animate)&&!this.getSize().contains(e))&&(this.panBy(e,I),!0)},_createAnimProxy:function(){var g=this._proxy=gI("div","leaflet-proxy leaflet-zoom-animated");this._panes.mapPane.appendChild(g),this.on("zoomanim",(function(g){var I=jg,e=this._proxy.style[I];cI(this._proxy,this.project(g.center,g.zoom),this.getZoomScale(g.zoom,1)),e===this._proxy.style[I]&&this._animatingZoom&&this._onZoomTransitionEnd()}),this),this.on("load moveend",this._animMoveEnd,this),this._on("unload",this._destroyAnimProxy,this)},_destroyAnimProxy:function(){II(this._proxy),this.off("load moveend",this._animMoveEnd,this),delete this._proxy},_animMoveEnd:function(){var g=this.getCenter(),I=this.getZoom();cI(this._proxy,this.project(g,I),this.getZoomScale(I,1))},_catchTransitionEnd:function(g){this._animatingZoom&&g.propertyName.indexOf("transform")>=0&&this._onZoomTransitionEnd()},_nothingToAnimate:function(){return!this._container.getElementsByClassName("leaflet-zoom-animated").length},_tryAnimatedZoom:function(g,I,e){if(this._animatingZoom)return!0;if(e=e||{},!this._zoomAnimated||!1===e.animate||this._nothingToAnimate()||Math.abs(I-this._zoom)>this.options.zoomAnimationThreshold)return!1;var t=this.getZoomScale(I),C=this._getCenterOffset(g)._divideBy(1-1/t);return!(!0!==e.animate&&!this.getSize().contains(C))&&(x((function(){this._moveStart(!0,!1)._animateZoom(g,I,!0)}),this),!0)},_animateZoom:function(g,I,e,C){this._mapPane&&(e&&(this._animatingZoom=!0,this._animateToCenter=g,this._animateToZoom=I,FI(this._mapPane,"leaflet-zoom-anim")),this.fire("zoomanim",{center:g,zoom:I,noUpdate:C}),setTimeout(t(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&BI(this._mapPane,"leaflet-zoom-anim"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom),x((function(){this._moveEnd(!0)}),this))}}),TI=G.extend({options:{position:"topright"},initialize:function(g){c(this,g)},getPosition:function(){return this.options.position},setPosition:function(g){var I=this._map;return I&&I.removeControl(this),this.options.position=g,I&&I.addControl(this),this},getContainer:function(){return this._container},addTo:function(g){this.remove(),this._map=g;var I=this._container=this.onAdd(g),e=this.getPosition(),t=g._controlCorners[e];return FI(I,"leaflet-control"),-1!==e.indexOf("bottom")?t.insertBefore(I,t.firstChild):t.appendChild(I),this._map.on("unload",this.remove,this),this},remove:function(){return this._map?(II(this._container),this.onRemove&&this.onRemove(this._map),this._map.off("unload",this.remove,this),this._map=null,this):this},_refocusOnMap:function(g){this._map&&g&&g.screenX>0&&g.screenY>0&&this._map.getContainer().focus()}}),zI=function(g){return new TI(g)};wI.include({addControl:function(g){return g.addTo(this),this},removeControl:function(g){return g.remove(),this},_initControlPos:function(){var g=this._controlCorners={},I="leaflet-",e=this._controlContainer=gI("div",I+"control-container",this._container);function t(t,C){var Q=I+t+" "+I+C;g[t+C]=gI("div",Q,e)}t("top","left"),t("top","right"),t("bottom","left"),t("bottom","right")},_clearControlPos:function(){for(var g in this._controlCorners)II(this._controlCorners[g]);II(this._controlContainer),delete this._controlCorners,delete this._controlContainer}});var OI=TI.extend({options:{collapsed:!0,position:"topright",autoZIndex:!0,hideSingleBase:!1,sortLayers:!1,sortFunction:function(g,I,e,t){return e<t?-1:t<e?1:0}},initialize:function(g,I,e){for(var t in c(this,e),this._layerControlInputs=[],this._layers=[],this._lastZIndex=0,this._handlingClick=!1,g)this._addLayer(g[t],t);for(t in I)this._addLayer(I[t],t,!0)},onAdd:function(g){this._initLayout(),this._update(),this._map=g,g.on("zoomend",this._checkDisabledLayers,this);for(var I=0;I<this._layers.length;I++)this._layers[I].layer.on("add remove",this._onLayerChange,this);return this._container},addTo:function(g){return TI.prototype.addTo.call(this,g),this._expandIfNotCollapsed()},onRemove:function(){this._map.off("zoomend",this._checkDisabledLayers,this);for(var g=0;g<this._layers.length;g++)this._layers[g].layer.off("add remove",this._onLayerChange,this)},addBaseLayer:function(g,I){return this._addLayer(g,I),this._map?this._update():this},addOverlay:function(g,I){return this._addLayer(g,I,!0),this._map?this._update():this},removeLayer:function(g){g.off("add remove",this._onLayerChange,this);var I=this._getLayer(Q(g));return I&&this._layers.splice(this._layers.indexOf(I),1),this._map?this._update():this},expand:function(){FI(this._container,"leaflet-control-layers-expanded"),this._section.style.height=null;var g=this._map.getSize().y-(this._container.offsetTop+50);return g<this._section.clientHeight?(FI(this._section,"leaflet-control-layers-scrollbar"),this._section.style.height=g+"px"):BI(this._section,"leaflet-control-layers-scrollbar"),this._checkDisabledLayers(),this},collapse:function(){return BI(this._container,"leaflet-control-layers-expanded"),this},_initLayout:function(){var g="leaflet-control-layers",I=this._container=gI("div",g),e=this.options.collapsed;I.setAttribute("aria-haspopup",!0),pI(I),DI(I);var t=this._section=gI("section",g+"-list");e&&(this._map.on("click",this.collapse,this),gg||mI(I,{mouseenter:this.expand,mouseleave:this.collapse},this));var C=this._layersLink=gI("a",g+"-toggle",I);C.href="#",C.title="Layers",yg?(mI(C,"click",NI),mI(C,"click",this.expand,this)):mI(C,"focus",this.expand,this),e||this.expand(),this._baseLayersList=gI("div",g+"-base",t),this._separator=gI("div",g+"-separator",t),this._overlaysList=gI("div",g+"-overlays",t),I.appendChild(t)},_getLayer:function(g){for(var I=0;I<this._layers.length;I++)if(this._layers[I]&&Q(this._layers[I].layer)===g)return this._layers[I]},_addLayer:function(g,I,e){this._map&&g.on("add remove",this._onLayerChange,this),this._layers.push({layer:g,name:I,overlay:e}),this.options.sortLayers&&this._layers.sort(t((function(g,I){return this.options.sortFunction(g.layer,I.layer,g.name,I.name)}),this)),this.options.autoZIndex&&g.setZIndex&&(this._lastZIndex++,g.setZIndex(this._lastZIndex)),this._expandIfNotCollapsed()},_update:function(){if(!this._container)return this;eI(this._baseLayersList),eI(this._overlaysList),this._layerControlInputs=[];var g,I,e,t,C=0;for(e=0;e<this._layers.length;e++)t=this._layers[e],this._addItem(t),I=I||t.overlay,g=g||!t.overlay,C+=t.overlay?0:1;return this.options.hideSingleBase&&(g=g&&C>1,this._baseLayersList.style.display=g?"":"none"),this._separator.style.display=I&&g?"":"none",this},_onLayerChange:function(g){this._handlingClick||this._update();var I=this._getLayer(Q(g.target)),e=I.overlay?"add"===g.type?"overlayadd":"overlayremove":"add"===g.type?"baselayerchange":null;e&&this._map.fire(e,I)},_createRadioElement:function(g,I){var e='<input type="radio" class="leaflet-control-layers-selector" name="'+g+'"'+(I?' checked="checked"':"")+"/>",t=document.createElement("div");return t.innerHTML=e,t.firstChild},_addItem:function(g){var I,e=document.createElement("label"),t=this._map.hasLayer(g.layer);g.overlay?((I=document.createElement("input")).type="checkbox",I.className="leaflet-control-layers-selector",I.defaultChecked=t):I=this._createRadioElement("leaflet-base-layers_"+Q(this),t),this._layerControlInputs.push(I),I.layerId=Q(g.layer),mI(I,"click",this._onInputClick,this);var C=document.createElement("span");C.innerHTML=" "+g.name;var F=document.createElement("div");return e.appendChild(F),F.appendChild(I),F.appendChild(C),(g.overlay?this._overlaysList:this._baseLayersList).appendChild(e),this._checkDisabledLayers(),e},_onInputClick:function(){var g,I,e=this._layerControlInputs,t=[],C=[];this._handlingClick=!0;for(var Q=e.length-1;Q>=0;Q--)g=e[Q],I=this._getLayer(g.layerId).layer,g.checked?t.push(I):g.checked||C.push(I);for(Q=0;Q<C.length;Q++)this._map.hasLayer(C[Q])&&this._map.removeLayer(C[Q]);for(Q=0;Q<t.length;Q++)this._map.hasLayer(t[Q])||this._map.addLayer(t[Q]);this._handlingClick=!1,this._refocusOnMap()},_checkDisabledLayers:function(){for(var g,I,e=this._layerControlInputs,t=this._map.getZoom(),C=e.length-1;C>=0;C--)g=e[C],I=this._getLayer(g.layerId).layer,g.disabled=void 0!==I.options.minZoom&&t<I.options.minZoom||void 0!==I.options.maxZoom&&t>I.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this},_expand:function(){return this.expand()},_collapse:function(){return this.collapse()}}),KI=TI.extend({options:{position:"topleft",zoomInText:"+",zoomInTitle:"Zoom in",zoomOutText:"&#x2212;",zoomOutTitle:"Zoom out"},onAdd:function(g){var I="leaflet-control-zoom",e=gI("div",I+" leaflet-bar"),t=this.options;return this._zoomInButton=this._createButton(t.zoomInText,t.zoomInTitle,I+"-in",e,this._zoomIn),this._zoomOutButton=this._createButton(t.zoomOutText,t.zoomOutTitle,I+"-out",e,this._zoomOut),this._updateDisabled(),g.on("zoomend zoomlevelschange",this._updateDisabled,this),e},onRemove:function(g){g.off("zoomend zoomlevelschange",this._updateDisabled,this)},disable:function(){return this._disabled=!0,this._updateDisabled(),this},enable:function(){return this._disabled=!1,this._updateDisabled(),this},_zoomIn:function(g){!this._disabled&&this._map._zoom<this._map.getMaxZoom()&&this._map.zoomIn(this._map.options.zoomDelta*(g.shiftKey?3:1))},_zoomOut:function(g){!this._disabled&&this._map._zoom>this._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(g.shiftKey?3:1))},_createButton:function(g,I,e,t,C){var Q=gI("a",e,t);return Q.innerHTML=g,Q.href="#",Q.title=I,Q.setAttribute("role","button"),Q.setAttribute("aria-label",I),pI(Q),mI(Q,"click",NI),mI(Q,"click",C,this),mI(Q,"click",this._refocusOnMap,this),Q},_updateDisabled:function(){var g=this._map,I="leaflet-disabled";BI(this._zoomInButton,I),BI(this._zoomOutButton,I),(this._disabled||g._zoom===g.getMinZoom())&&FI(this._zoomOutButton,I),(this._disabled||g._zoom===g.getMaxZoom())&&FI(this._zoomInButton,I)}});wI.mergeOptions({zoomControl:!0}),wI.addInitHook((function(){this.options.zoomControl&&(this.zoomControl=new KI,this.addControl(this.zoomControl))}));var jI=TI.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0},onAdd:function(g){var I=gI("div","leaflet-control-scale"),e=this.options;return this._addScales(e,"leaflet-control-scale-line",I),g.on(e.updateWhenIdle?"moveend":"move",this._update,this),g.whenReady(this._update,this),I},onRemove:function(g){g.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(g,I,e){g.metric&&(this._mScale=gI("div",I,e)),g.imperial&&(this._iScale=gI("div",I,e))},_update:function(){var g=this._map,I=g.getSize().y/2,e=g.distance(g.containerPointToLatLng([0,I]),g.containerPointToLatLng([this.options.maxWidth,I]));this._updateScales(e)},_updateScales:function(g){this.options.metric&&g&&this._updateMetric(g),this.options.imperial&&g&&this._updateImperial(g)},_updateMetric:function(g){var I=this._getRoundNum(g),e=I<1e3?I+" m":I/1e3+" km";this._updateScale(this._mScale,e,I/g)},_updateImperial:function(g){var I,e,t,C=3.2808399*g;C>5280?(I=C/5280,e=this._getRoundNum(I),this._updateScale(this._iScale,e+" mi",e/I)):(t=this._getRoundNum(C),this._updateScale(this._iScale,t+" ft",t/C))},_updateScale:function(g,I,e){g.style.width=Math.round(this.options.maxWidth*e)+"px",g.innerHTML=I},_getRoundNum:function(g){var I=Math.pow(10,(Math.floor(g)+"").length-1),e=g/I;return I*(e=e>=10?10:e>=5?5:e>=3?3:e>=2?2:1)}}),PI=TI.extend({options:{position:"bottomright",prefix:'<a href="https://leafletjs.com" title="A JS library for interactive maps">Leaflet</a>'},initialize:function(g){c(this,g),this._attributions={}},onAdd:function(g){for(var I in g.attributionControl=this,this._container=gI("div","leaflet-control-attribution"),pI(this._container),g._layers)g._layers[I].getAttribution&&this.addAttribution(g._layers[I].getAttribution());return this._update(),this._container},setPrefix:function(g){return this.options.prefix=g,this._update(),this},addAttribution:function(g){return g?(this._attributions[g]||(this._attributions[g]=0),this._attributions[g]++,this._update(),this):this},removeAttribution:function(g){return g?(this._attributions[g]&&(this._attributions[g]--,this._update()),this):this},_update:function(){if(this._map){var g=[];for(var I in this._attributions)this._attributions[I]&&g.push(I);var e=[];this.options.prefix&&e.push(this.options.prefix),g.length&&e.push(g.join(", ")),this._container.innerHTML=e.join(" | ")}}});wI.mergeOptions({attributionControl:!0}),wI.addInitHook((function(){this.options.attributionControl&&(new PI).addTo(this)})),TI.Layers=OI,TI.Zoom=KI,TI.Scale=jI,TI.Attribution=PI,zI.layers=function(g,I,e){return new OI(g,I,e)},zI.zoom=function(g){return new KI(g)},zI.scale=function(g){return new jI(g)},zI.attribution=function(g){return new PI(g)};var _I=G.extend({initialize:function(g){this._map=g},enable:function(){return this._enabled||(this._enabled=!0,this.addHooks()),this},disable:function(){return this._enabled?(this._enabled=!1,this.removeHooks(),this):this},enabled:function(){return!!this._enabled}});_I.addTo=function(g,I){return g.addHandler(I,this),this};var qI,$I={Events:V},ge=yg?"touchstart mousedown":"mousedown",Ie={mousedown:"mouseup",touchstart:"touchend",pointerdown:"touchend",MSPointerDown:"touchend"},ee={mousedown:"mousemove",touchstart:"touchmove",pointerdown:"touchmove",MSPointerDown:"touchmove"},te=h.extend({options:{clickTolerance:3},initialize:function(g,I,e,t){c(this,t),this._element=g,this._dragStartTarget=I||g,this._preventOutline=e},enable:function(){this._enabled||(mI(this._dragStartTarget,ge,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(te._dragging===this&&this.finishDrag(),RI(this._dragStartTarget,ge,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(g){if(!g._simulated&&this._enabled&&(this._moved=!1,!QI(this._element,"leaflet-zoom-anim")&&!(te._dragging||g.shiftKey||1!==g.which&&1!==g.button&&!g.touches)&&(te._dragging=this,this._preventOutline&&dI(this._element),rI(),Hg(),!this._moving))){this.fire("down");var I=g.touches?g.touches[0]:g,e=yI(this._element);this._startPoint=new D(I.clientX,I.clientY),this._parentScale=bI(e),mI(document,ee[g.type],this._onMove,this),mI(document,Ie[g.type],this._onUp,this)}},_onMove:function(g){if(!g._simulated&&this._enabled)if(g.touches&&g.touches.length>1)this._moved=!0;else{var I=g.touches&&1===g.touches.length?g.touches[0]:g,e=new D(I.clientX,I.clientY)._subtract(this._startPoint);(e.x||e.y)&&(Math.abs(e.x)+Math.abs(e.y)<this.options.clickTolerance||(e.x/=this._parentScale.x,e.y/=this._parentScale.y,EI(g),this._moved||(this.fire("dragstart"),this._moved=!0,this._startPos=lI(this._element).subtract(e),FI(document.body,"leaflet-dragging"),this._lastTarget=g.target||g.srcElement,window.SVGElementInstance&&this._lastTarget instanceof window.SVGElementInstance&&(this._lastTarget=this._lastTarget.correspondingUseElement),FI(this._lastTarget,"leaflet-drag-target")),this._newPos=this._startPos.add(e),this._moving=!0,R(this._animRequest),this._lastEvent=g,this._animRequest=x(this._updatePosition,this,!0)))}},_updatePosition:function(){var g={originalEvent:this._lastEvent};this.fire("predrag",g),AI(this._element,this._newPos),this.fire("drag",g)},_onUp:function(g){!g._simulated&&this._enabled&&this.finishDrag()},finishDrag:function(){for(var g in BI(document.body,"leaflet-dragging"),this._lastTarget&&(BI(this._lastTarget,"leaflet-drag-target"),this._lastTarget=null),ee)RI(document,ee[g],this._onMove,this),RI(document,Ie[g],this._onUp,this);oI(),Mg(),this._moved&&this._moving&&(R(this._animRequest),this.fire("dragend",{distance:this._newPos.distanceTo(this._startPos)})),this._moving=!1,te._dragging=!1}});function Ce(g,I){if(!I||!g.length)return g.slice();var e=I*I;return g=function(g,I){var e=g.length,t=new(typeof Uint8Array!==void 0+""?Uint8Array:Array)(e);t[0]=t[e-1]=1,function g(I,e,t,C,Q){var F,B,n,U=0;for(B=C+1;B<=Q-1;B++)(n=se(I[B],I[C],I[Q],!0))>U&&(F=B,U=n);U>t&&(e[F]=1,g(I,e,t,C,F),g(I,e,t,F,Q))}(g,t,I,0,e-1);var C,Q=[];for(C=0;C<e;C++)t[C]&&Q.push(g[C]);return Q}(g=function(g,I){for(var e=[g[0]],t=1,C=0,Q=g.length;t<Q;t++)Ue(g[t],g[C])>I&&(e.push(g[t]),C=t);return C<Q-1&&e.push(g[Q-1]),e}(g,e),e)}function Qe(g,I,e){return Math.sqrt(se(g,I,e,!0))}function Fe(g,I,e,t,C){var Q,F,B,n=t?qI:ne(g,e),U=ne(I,e);for(qI=U;;){if(!(n|U))return[g,I];if(n&U)return!1;B=ne(F=Be(g,I,Q=n||U,e,C),e),Q===n?(g=F,n=B):(I=F,U=B)}}function Be(g,I,e,t,C){var Q,F,B=I.x-g.x,n=I.y-g.y,U=t.min,s=t.max;return 8&e?(Q=g.x+B*(s.y-g.y)/n,F=s.y):4&e?(Q=g.x+B*(U.y-g.y)/n,F=U.y):2&e?(Q=s.x,F=g.y+n*(s.x-g.x)/B):1&e&&(Q=U.x,F=g.y+n*(U.x-g.x)/B),new D(Q,F,C)}function ne(g,I){var e=0;return g.x<I.min.x?e|=1:g.x>I.max.x&&(e|=2),g.y<I.min.y?e|=4:g.y>I.max.y&&(e|=8),e}function Ue(g,I){var e=I.x-g.x,t=I.y-g.y;return e*e+t*t}function se(g,I,e,t){var C,Q=I.x,F=I.y,B=e.x-Q,n=e.y-F,U=B*B+n*n;return U>0&&((C=((g.x-Q)*B+(g.y-F)*n)/U)>1?(Q=e.x,F=e.y):C>0&&(Q+=B*C,F+=n*C)),B=g.x-Q,n=g.y-F,t?B*B+n*n:new D(Q,F)}function ie(g){return!r(g[0])||"object"!==typeof g[0][0]&&"undefined"!==typeof g[0][0]}function ce(g){return console.warn("Deprecated use of _flat, please use L.LineUtil.isFlat instead."),ie(g)}var Ae={simplify:Ce,pointToSegmentDistance:Qe,closestPointOnSegment:function(g,I,e){return se(g,I,e)},clipSegment:Fe,_getEdgeIntersection:Be,_getBitCode:ne,_sqClosestPointOnSegment:se,isFlat:ie,_flat:ce};function le(g,I,e){var t,C,Q,F,B,n,U,s,i,c=[1,4,2,8];for(C=0,U=g.length;C<U;C++)g[C]._code=ne(g[C],I);for(F=0;F<4;F++){for(s=c[F],t=[],C=0,Q=(U=g.length)-1;C<U;Q=C++)B=g[C],n=g[Q],B._code&s?n._code&s||((i=Be(n,B,s,I,e))._code=ne(i,I),t.push(i)):(n._code&s&&((i=Be(n,B,s,I,e))._code=ne(i,I),t.push(i)),t.push(B));g=t}return g}var ae={clipPolygon:le},re={project:function(g){return new D(g.lng,g.lat)},unproject:function(g){return new J(g.y,g.x)},bounds:new N([-180,-90],[180,90])},oe={R:6378137,R_MINOR:6356752.314245179,bounds:new N([-20037508.34279,-15496570.73972],[20037508.34279,18764656.23138]),project:function(g){var I=Math.PI/180,e=this.R,t=g.lat*I,C=this.R_MINOR/e,Q=Math.sqrt(1-C*C),F=Q*Math.sin(t),B=Math.tan(Math.PI/4-t/2)/Math.pow((1-F)/(1+F),Q/2);return t=-e*Math.log(Math.max(B,1e-10)),new D(g.lng*I*e,t)},unproject:function(g){for(var I,e=180/Math.PI,t=this.R,C=this.R_MINOR/t,Q=Math.sqrt(1-C*C),F=Math.exp(-g.y/t),B=Math.PI/2-2*Math.atan(F),n=0,U=.1;n<15&&Math.abs(U)>1e-7;n++)I=Q*Math.sin(B),I=Math.pow((1-I)/(1+I),Q/2),B+=U=Math.PI/2-2*Math.atan(F*I)-B;return new J(B*e,g.x*e/t)}},de={LonLat:re,Mercator:oe,SphericalMercator:M},ue=I({},H,{code:"EPSG:3395",projection:oe,transformation:function(){var g=.5/(Math.PI*oe.R);return w(g,.5,-g,.5)}()}),ye=I({},H,{code:"EPSG:4326",projection:re,transformation:w(1/180,1,-1/180,.5)}),be=I({},k,{projection:re,transformation:w(1,0,-1,0),scale:function(g){return Math.pow(2,g)},zoom:function(g){return Math.log(g)/Math.LN2},distance:function(g,I){var e=I.lng-g.lng,t=I.lat-g.lat;return Math.sqrt(e*e+t*t)},infinite:!0});k.Earth=H,k.EPSG3395=ue,k.EPSG3857=T,k.EPSG900913=z,k.EPSG4326=ye,k.Simple=be;var Ze=h.extend({options:{pane:"overlayPane",attribution:null,bubblingMouseEvents:!0},addTo:function(g){return g.addLayer(this),this},remove:function(){return this.removeFrom(this._map||this._mapToAdd)},removeFrom:function(g){return g&&g.removeLayer(this),this},getPane:function(g){return this._map.getPane(g?this.options[g]||g:this.options.pane)},addInteractiveTarget:function(g){return this._map._targets[Q(g)]=this,this},removeInteractiveTarget:function(g){return delete this._map._targets[Q(g)],this},getAttribution:function(){return this.options.attribution},_layerAdd:function(g){var I=g.target;if(I.hasLayer(this)){if(this._map=I,this._zoomAnimated=I._zoomAnimated,this.getEvents){var e=this.getEvents();I.on(e,this),this.once("remove",(function(){I.off(e,this)}),this)}this.onAdd(I),this.getAttribution&&I.attributionControl&&I.attributionControl.addAttribution(this.getAttribution()),this.fire("add"),I.fire("layeradd",{layer:this})}}});wI.include({addLayer:function(g){if(!g._layerAdd)throw new Error("The provided object is not a Layer.");var I=Q(g);return this._layers[I]||(this._layers[I]=g,g._mapToAdd=this,g.beforeAdd&&g.beforeAdd(this),this.whenReady(g._layerAdd,g)),this},removeLayer:function(g){var I=Q(g);return this._layers[I]?(this._loaded&&g.onRemove(this),g.getAttribution&&this.attributionControl&&this.attributionControl.removeAttribution(g.getAttribution()),delete this._layers[I],this._loaded&&(this.fire("layerremove",{layer:g}),g.fire("remove")),g._map=g._mapToAdd=null,this):this},hasLayer:function(g){return!!g&&Q(g)in this._layers},eachLayer:function(g,I){for(var e in this._layers)g.call(I,this._layers[e]);return this},_addLayers:function(g){for(var I=0,e=(g=g?r(g)?g:[g]:[]).length;I<e;I++)this.addLayer(g[I])},_addZoomLimit:function(g){!isNaN(g.options.maxZoom)&&isNaN(g.options.minZoom)||(this._zoomBoundLayers[Q(g)]=g,this._updateZoomLevels())},_removeZoomLimit:function(g){var I=Q(g);this._zoomBoundLayers[I]&&(delete this._zoomBoundLayers[I],this._updateZoomLevels())},_updateZoomLevels:function(){var g=1/0,I=-1/0,e=this._getZoomSpan();for(var t in this._zoomBoundLayers){var C=this._zoomBoundLayers[t].options;g=void 0===C.minZoom?g:Math.min(g,C.minZoom),I=void 0===C.maxZoom?I:Math.max(I,C.maxZoom)}this._layersMaxZoom=I===-1/0?void 0:I,this._layersMinZoom=g===1/0?void 0:g,e!==this._getZoomSpan()&&this.fire("zoomlevelschange"),void 0===this.options.maxZoom&&this._layersMaxZoom&&this.getZoom()>this._layersMaxZoom&&this.setZoom(this._layersMaxZoom),void 0===this.options.minZoom&&this._layersMinZoom&&this.getZoom()<this._layersMinZoom&&this.setZoom(this._layersMinZoom)}});var me=Ze.extend({initialize:function(g,I){var e,t;if(c(this,I),this._layers={},g)for(e=0,t=g.length;e<t;e++)this.addLayer(g[e])},addLayer:function(g){var I=this.getLayerId(g);return this._layers[I]=g,this._map&&this._map.addLayer(g),this},removeLayer:function(g){var I=g in this._layers?g:this.getLayerId(g);return this._map&&this._layers[I]&&this._map.removeLayer(this._layers[I]),delete this._layers[I],this},hasLayer:function(g){return!!g&&("number"===typeof g?g:this.getLayerId(g))in this._layers},clearLayers:function(){return this.eachLayer(this.removeLayer,this)},invoke:function(g){var I,e,t=Array.prototype.slice.call(arguments,1);for(I in this._layers)(e=this._layers[I])[g]&&e[g].apply(e,t);return this},onAdd:function(g){this.eachLayer(g.addLayer,g)},onRemove:function(g){this.eachLayer(g.removeLayer,g)},eachLayer:function(g,I){for(var e in this._layers)g.call(I,this._layers[e]);return this},getLayer:function(g){return this._layers[g]},getLayers:function(){var g=[];return this.eachLayer(g.push,g),g},setZIndex:function(g){return this.invoke("setZIndex",g)},getLayerId:function(g){return Q(g)}}),xe=me.extend({addLayer:function(g){return this.hasLayer(g)?this:(g.addEventParent(this),me.prototype.addLayer.call(this,g),this.fire("layeradd",{layer:g}))},removeLayer:function(g){return this.hasLayer(g)?(g in this._layers&&(g=this._layers[g]),g.removeEventParent(this),me.prototype.removeLayer.call(this,g),this.fire("layerremove",{layer:g})):this},setStyle:function(g){return this.invoke("setStyle",g)},bringToFront:function(){return this.invoke("bringToFront")},bringToBack:function(){return this.invoke("bringToBack")},getBounds:function(){var g=new f;for(var I in this._layers){var e=this._layers[I];g.extend(e.getBounds?e.getBounds():e.getLatLng())}return g}}),Re=G.extend({options:{popupAnchor:[0,0],tooltipAnchor:[0,0]},initialize:function(g){c(this,g)},createIcon:function(g){return this._createIcon("icon",g)},createShadow:function(g){return this._createIcon("shadow",g)},_createIcon:function(g,I){var e=this._getIconUrl(g);if(!e){if("icon"===g)throw new Error("iconUrl not set in Icon options (see the docs).");return null}var t=this._createImg(e,I&&"IMG"===I.tagName?I:null);return this._setIconStyles(t,g),t},_setIconStyles:function(g,I){var e=this.options,t=e[I+"Size"];"number"===typeof t&&(t=[t,t]);var C=E(t),Q=E("shadow"===I&&e.shadowAnchor||e.iconAnchor||C&&C.divideBy(2,!0));g.className="leaflet-marker-"+I+" "+(e.className||""),Q&&(g.style.marginLeft=-Q.x+"px",g.style.marginTop=-Q.y+"px"),C&&(g.style.width=C.x+"px",g.style.height=C.y+"px")},_createImg:function(g,I){return(I=I||document.createElement("img")).src=g,I},_getIconUrl:function(g){return mg&&this.options[g+"RetinaUrl"]||this.options[g+"Url"]}}),Se=Re.extend({options:{iconUrl:"marker-icon.png",iconRetinaUrl:"marker-icon-2x.png",shadowUrl:"marker-shadow.png",iconSize:[25,41],iconAnchor:[12,41],popupAnchor:[1,-34],tooltipAnchor:[16,-28],shadowSize:[41,41]},_getIconUrl:function(g){return Se.imagePath||(Se.imagePath=this._detectIconPath()),(this.options.imagePath||Se.imagePath)+Re.prototype._getIconUrl.call(this,g)},_detectIconPath:function(){var g=gI("div","leaflet-default-icon-path",document.body),I=$g(g,"background-image")||$g(g,"backgroundImage");return document.body.removeChild(g),I=null===I||0!==I.indexOf("url")?"":I.replace(/^url\(["']?/,"").replace(/marker-icon\.png["']?\)$/,"")}}),Ge=_I.extend({initialize:function(g){this._marker=g},addHooks:function(){var g=this._marker._icon;this._draggable||(this._draggable=new te(g,g,!0)),this._draggable.on({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).enable(),FI(g,"leaflet-marker-draggable")},removeHooks:function(){this._draggable.off({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).disable(),this._marker._icon&&BI(this._marker._icon,"leaflet-marker-draggable")},moved:function(){return this._draggable&&this._draggable._moved},_adjustPan:function(g){var I=this._marker,e=I._map,t=this._marker.options.autoPanSpeed,C=this._marker.options.autoPanPadding,Q=lI(I._icon),F=e.getPixelBounds(),B=e.getPixelOrigin(),n=W(F.min._subtract(B).add(C),F.max._subtract(B).subtract(C));if(!n.contains(Q)){var U=E((Math.max(n.max.x,Q.x)-n.max.x)/(F.max.x-n.max.x)-(Math.min(n.min.x,Q.x)-n.min.x)/(F.min.x-n.min.x),(Math.max(n.max.y,Q.y)-n.max.y)/(F.max.y-n.max.y)-(Math.min(n.min.y,Q.y)-n.min.y)/(F.min.y-n.min.y)).multiplyBy(t);e.panBy(U,{animate:!1}),this._draggable._newPos._add(U),this._draggable._startPos._add(U),AI(I._icon,this._draggable._newPos),this._onDrag(g),this._panRequest=x(this._adjustPan.bind(this,g))}},_onDragStart:function(){this._oldLatLng=this._marker.getLatLng(),this._marker.closePopup&&this._marker.closePopup(),this._marker.fire("movestart").fire("dragstart")},_onPreDrag:function(g){this._marker.options.autoPan&&(R(this._panRequest),this._panRequest=x(this._adjustPan.bind(this,g)))},_onDrag:function(g){var I=this._marker,e=I._shadow,t=lI(I._icon),C=I._map.layerPointToLatLng(t);e&&AI(e,t),I._latlng=C,g.latlng=C,g.oldLatLng=this._oldLatLng,I.fire("move",g).fire("drag",g)},_onDragEnd:function(g){R(this._panRequest),delete this._oldLatLng,this._marker.fire("moveend").fire("dragend",g)}}),Le=Ze.extend({options:{icon:new Se,interactive:!0,keyboard:!0,title:"",alt:"",zIndexOffset:0,opacity:1,riseOnHover:!1,riseOffset:250,pane:"markerPane",shadowPane:"shadowPane",bubblingMouseEvents:!1,draggable:!1,autoPan:!1,autoPanPadding:[50,50],autoPanSpeed:10},initialize:function(g,I){c(this,I),this._latlng=v(g)},onAdd:function(g){this._zoomAnimated=this._zoomAnimated&&g.options.markerZoomAnimation,this._zoomAnimated&&g.on("zoomanim",this._animateZoom,this),this._initIcon(),this.update()},onRemove:function(g){this.dragging&&this.dragging.enabled()&&(this.options.draggable=!0,this.dragging.removeHooks()),delete this.dragging,this._zoomAnimated&&g.off("zoomanim",this._animateZoom,this),this._removeIcon(),this._removeShadow()},getEvents:function(){return{zoom:this.update,viewreset:this.update}},getLatLng:function(){return this._latlng},setLatLng:function(g){var I=this._latlng;return this._latlng=v(g),this.update(),this.fire("move",{oldLatLng:I,latlng:this._latlng})},setZIndexOffset:function(g){return this.options.zIndexOffset=g,this.update()},getIcon:function(){return this.options.icon},setIcon:function(g){return this.options.icon=g,this._map&&(this._initIcon(),this.update()),this._popup&&this.bindPopup(this._popup,this._popup.options),this},getElement:function(){return this._icon},update:function(){if(this._icon&&this._map){var g=this._map.latLngToLayerPoint(this._latlng).round();this._setPos(g)}return this},_initIcon:function(){var g=this.options,I="leaflet-zoom-"+(this._zoomAnimated?"animated":"hide"),e=g.icon.createIcon(this._icon),t=!1;e!==this._icon&&(this._icon&&this._removeIcon(),t=!0,g.title&&(e.title=g.title),"IMG"===e.tagName&&(e.alt=g.alt||"")),FI(e,I),g.keyboard&&(e.tabIndex="0"),this._icon=e,g.riseOnHover&&this.on({mouseover:this._bringToFront,mouseout:this._resetZIndex});var C=g.icon.createShadow(this._shadow),Q=!1;C!==this._shadow&&(this._removeShadow(),Q=!0),C&&(FI(C,I),C.alt=""),this._shadow=C,g.opacity<1&&this._updateOpacity(),t&&this.getPane().appendChild(this._icon),this._initInteraction(),C&&Q&&this.getPane(g.shadowPane).appendChild(this._shadow)},_removeIcon:function(){this.options.riseOnHover&&this.off({mouseover:this._bringToFront,mouseout:this._resetZIndex}),II(this._icon),this.removeInteractiveTarget(this._icon),this._icon=null},_removeShadow:function(){this._shadow&&II(this._shadow),this._shadow=null},_setPos:function(g){this._icon&&AI(this._icon,g),this._shadow&&AI(this._shadow,g),this._zIndex=g.y+this.options.zIndexOffset,this._resetZIndex()},_updateZIndex:function(g){this._icon&&(this._icon.style.zIndex=this._zIndex+g)},_animateZoom:function(g){var I=this._map._latLngToNewLayerPoint(this._latlng,g.zoom,g.center).round();this._setPos(I)},_initInteraction:function(){if(this.options.interactive&&(FI(this._icon,"leaflet-interactive"),this.addInteractiveTarget(this._icon),Ge)){var g=this.options.draggable;this.dragging&&(g=this.dragging.enabled(),this.dragging.disable()),this.dragging=new Ge(this),g&&this.dragging.enable()}},setOpacity:function(g){return this.options.opacity=g,this._map&&this._updateOpacity(),this},_updateOpacity:function(){var g=this.options.opacity;this._icon&&sI(this._icon,g),this._shadow&&sI(this._shadow,g)},_bringToFront:function(){this._updateZIndex(this.options.riseOffset)},_resetZIndex:function(){this._updateZIndex(0)},_getPopupAnchor:function(){return this.options.icon.options.popupAnchor},_getTooltipAnchor:function(){return this.options.icon.options.tooltipAnchor}}),Ve=Ze.extend({options:{stroke:!0,color:"#3388ff",weight:3,opacity:1,lineCap:"round",lineJoin:"round",dashArray:null,dashOffset:null,fill:!1,fillColor:null,fillOpacity:.2,fillRule:"evenodd",interactive:!0,bubblingMouseEvents:!0},beforeAdd:function(g){this._renderer=g.getRenderer(this)},onAdd:function(){this._renderer._initPath(this),this._reset(),this._renderer._addPath(this)},onRemove:function(){this._renderer._removePath(this)},redraw:function(){return this._map&&this._renderer._updatePath(this),this},setStyle:function(g){return c(this,g),this._renderer&&(this._renderer._updateStyle(this),this.options.stroke&&g&&Object.prototype.hasOwnProperty.call(g,"weight")&&this._updateBounds()),this},bringToFront:function(){return this._renderer&&this._renderer._bringToFront(this),this},bringToBack:function(){return this._renderer&&this._renderer._bringToBack(this),this},getElement:function(){return this._path},_reset:function(){this._project(),this._update()},_clickTolerance:function(){return(this.options.stroke?this.options.weight/2:0)+this._renderer.options.tolerance}}),he=Ve.extend({options:{fill:!0,radius:10},initialize:function(g,I){c(this,I),this._latlng=v(g),this._radius=this.options.radius},setLatLng:function(g){var I=this._latlng;return this._latlng=v(g),this.redraw(),this.fire("move",{oldLatLng:I,latlng:this._latlng})},getLatLng:function(){return this._latlng},setRadius:function(g){return this.options.radius=this._radius=g,this.redraw()},getRadius:function(){return this._radius},setStyle:function(g){var I=g&&g.radius||this._radius;return Ve.prototype.setStyle.call(this,g),this.setRadius(I),this},_project:function(){this._point=this._map.latLngToLayerPoint(this._latlng),this._updateBounds()},_updateBounds:function(){var g=this._radius,I=this._radiusY||g,e=this._clickTolerance(),t=[g+e,I+e];this._pxBounds=new N(this._point.subtract(t),this._point.add(t))},_update:function(){this._map&&this._updatePath()},_updatePath:function(){this._renderer._updateCircle(this)},_empty:function(){return this._radius&&!this._renderer._bounds.intersects(this._pxBounds)},_containsPoint:function(g){return g.distanceTo(this._point)<=this._radius+this._clickTolerance()}}),De=he.extend({initialize:function(g,e,t){if("number"===typeof e&&(e=I({},t,{radius:e})),c(this,e),this._latlng=v(g),isNaN(this.options.radius))throw new Error("Circle radius cannot be NaN");this._mRadius=this.options.radius},setRadius:function(g){return this._mRadius=g,this.redraw()},getRadius:function(){return this._mRadius},getBounds:function(){var g=[this._radius,this._radiusY||this._radius];return new f(this._map.layerPointToLatLng(this._point.subtract(g)),this._map.layerPointToLatLng(this._point.add(g)))},setStyle:Ve.prototype.setStyle,_project:function(){var g=this._latlng.lng,I=this._latlng.lat,e=this._map,t=e.options.crs;if(t.distance===H.distance){var C=Math.PI/180,Q=this._mRadius/H.R/C,F=e.project([I+Q,g]),B=e.project([I-Q,g]),n=F.add(B).divideBy(2),U=e.unproject(n).lat,s=Math.acos((Math.cos(Q*C)-Math.sin(I*C)*Math.sin(U*C))/(Math.cos(I*C)*Math.cos(U*C)))/C;(isNaN(s)||0===s)&&(s=Q/Math.cos(Math.PI/180*I)),this._point=n.subtract(e.getPixelOrigin()),this._radius=isNaN(s)?0:n.x-e.project([U,g-s]).x,this._radiusY=n.y-F.y}else{var i=t.unproject(t.project(this._latlng).subtract([this._mRadius,0]));this._point=e.latLngToLayerPoint(this._latlng),this._radius=this._point.x-e.latLngToLayerPoint(i).x}this._updateBounds()}}),pe=Ve.extend({options:{smoothFactor:1,noClip:!1},initialize:function(g,I){c(this,I),this._setLatLngs(g)},getLatLngs:function(){return this._latlngs},setLatLngs:function(g){return this._setLatLngs(g),this.redraw()},isEmpty:function(){return!this._latlngs.length},closestLayerPoint:function(g){for(var I,e,t=1/0,C=null,Q=se,F=0,B=this._parts.length;F<B;F++)for(var n=this._parts[F],U=1,s=n.length;U<s;U++){var i=Q(g,I=n[U-1],e=n[U],!0);i<t&&(t=i,C=Q(g,I,e))}return C&&(C.distance=Math.sqrt(t)),C},getCenter:function(){if(!this._map)throw new Error("Must add layer to map before using getCenter()");var g,I,e,t,C,Q,F,B=this._rings[0],n=B.length;if(!n)return null;for(g=0,I=0;g<n-1;g++)I+=B[g].distanceTo(B[g+1])/2;if(0===I)return this._map.layerPointToLatLng(B[0]);for(g=0,t=0;g<n-1;g++)if(C=B[g],Q=B[g+1],(t+=e=C.distanceTo(Q))>I)return F=(t-I)/e,this._map.layerPointToLatLng([Q.x-F*(Q.x-C.x),Q.y-F*(Q.y-C.y)])},getBounds:function(){return this._bounds},addLatLng:function(g,I){return I=I||this._defaultShape(),g=v(g),I.push(g),this._bounds.extend(g),this.redraw()},_setLatLngs:function(g){this._bounds=new f,this._latlngs=this._convertLatLngs(g)},_defaultShape:function(){return ie(this._latlngs)?this._latlngs:this._latlngs[0]},_convertLatLngs:function(g){for(var I=[],e=ie(g),t=0,C=g.length;t<C;t++)e?(I[t]=v(g[t]),this._bounds.extend(I[t])):I[t]=this._convertLatLngs(g[t]);return I},_project:function(){var g=new N;this._rings=[],this._projectLatlngs(this._latlngs,this._rings,g),this._bounds.isValid()&&g.isValid()&&(this._rawPxBounds=g,this._updateBounds())},_updateBounds:function(){var g=this._clickTolerance(),I=new D(g,g);this._pxBounds=new N([this._rawPxBounds.min.subtract(I),this._rawPxBounds.max.add(I)])},_projectLatlngs:function(g,I,e){var t,C,Q=g[0]instanceof J,F=g.length;if(Q){for(C=[],t=0;t<F;t++)C[t]=this._map.latLngToLayerPoint(g[t]),e.extend(C[t]);I.push(C)}else for(t=0;t<F;t++)this._projectLatlngs(g[t],I,e)},_clipPoints:function(){var g=this._renderer._bounds;if(this._parts=[],this._pxBounds&&this._pxBounds.intersects(g))if(this.options.noClip)this._parts=this._rings;else{var I,e,t,C,Q,F,B,n=this._parts;for(I=0,t=0,C=this._rings.length;I<C;I++)for(e=0,Q=(B=this._rings[I]).length;e<Q-1;e++)(F=Fe(B[e],B[e+1],g,e,!0))&&(n[t]=n[t]||[],n[t].push(F[0]),F[1]===B[e+1]&&e!==Q-2||(n[t].push(F[1]),t++))}},_simplifyPoints:function(){for(var g=this._parts,I=this.options.smoothFactor,e=0,t=g.length;e<t;e++)g[e]=Ce(g[e],I)},_update:function(){this._map&&(this._clipPoints(),this._simplifyPoints(),this._updatePath())},_updatePath:function(){this._renderer._updatePoly(this)},_containsPoint:function(g,I){var e,t,C,Q,F,B,n=this._clickTolerance();if(!this._pxBounds||!this._pxBounds.contains(g))return!1;for(e=0,Q=this._parts.length;e<Q;e++)for(t=0,C=(F=(B=this._parts[e]).length)-1;t<F;C=t++)if((I||0!==t)&&Qe(g,B[C],B[t])<=n)return!0;return!1}});pe._flat=ce;var Ee=pe.extend({options:{fill:!0},isEmpty:function(){return!this._latlngs.length||!this._latlngs[0].length},getCenter:function(){if(!this._map)throw new Error("Must add layer to map before using getCenter()");var g,I,e,t,C,Q,F,B,n,U=this._rings[0],s=U.length;if(!s)return null;for(Q=F=B=0,g=0,I=s-1;g<s;I=g++)e=U[g],t=U[I],C=e.y*t.x-t.y*e.x,F+=(e.x+t.x)*C,B+=(e.y+t.y)*C,Q+=3*C;return n=0===Q?U[0]:[F/Q,B/Q],this._map.layerPointToLatLng(n)},_convertLatLngs:function(g){var I=pe.prototype._convertLatLngs.call(this,g),e=I.length;return e>=2&&I[0]instanceof J&&I[0].equals(I[e-1])&&I.pop(),I},_setLatLngs:function(g){pe.prototype._setLatLngs.call(this,g),ie(this._latlngs)&&(this._latlngs=[this._latlngs])},_defaultShape:function(){return ie(this._latlngs[0])?this._latlngs[0]:this._latlngs[0][0]},_clipPoints:function(){var g=this._renderer._bounds,I=this.options.weight,e=new D(I,I);if(g=new N(g.min.subtract(e),g.max.add(e)),this._parts=[],this._pxBounds&&this._pxBounds.intersects(g))if(this.options.noClip)this._parts=this._rings;else for(var t,C=0,Q=this._rings.length;C<Q;C++)(t=le(this._rings[C],g,!0)).length&&this._parts.push(t)},_updatePath:function(){this._renderer._updatePoly(this,!0)},_containsPoint:function(g){var I,e,t,C,Q,F,B,n,U=!1;if(!this._pxBounds||!this._pxBounds.contains(g))return!1;for(C=0,B=this._parts.length;C<B;C++)for(Q=0,F=(n=(I=this._parts[C]).length)-1;Q<n;F=Q++)e=I[Q],t=I[F],e.y>g.y!==t.y>g.y&&g.x<(t.x-e.x)*(g.y-e.y)/(t.y-e.y)+e.x&&(U=!U);return U||pe.prototype._containsPoint.call(this,g,!0)}}),Ne=xe.extend({initialize:function(g,I){c(this,I),this._layers={},g&&this.addData(g)},addData:function(g){var I,e,t,C=r(g)?g:g.features;if(C){for(I=0,e=C.length;I<e;I++)((t=C[I]).geometries||t.geometry||t.features||t.coordinates)&&this.addData(t);return this}var Q=this.options;if(Q.filter&&!Q.filter(g))return this;var F=We(g,Q);return F?(F.feature=Me(g),F.defaultOptions=F.options,this.resetStyle(F),Q.onEachFeature&&Q.onEachFeature(g,F),this.addLayer(F)):this},resetStyle:function(g){return void 0===g?this.eachLayer(this.resetStyle,this):(g.options=I({},g.defaultOptions),this._setLayerStyle(g,this.options.style),this)},setStyle:function(g){return this.eachLayer((function(I){this._setLayerStyle(I,g)}),this)},_setLayerStyle:function(g,I){g.setStyle&&("function"===typeof I&&(I=I(g.feature)),g.setStyle(I))}});function We(g,I){var e,t,C,Q,F="Feature"===g.type?g.geometry:g,B=F?F.coordinates:null,n=[],U=I&&I.pointToLayer,s=I&&I.coordsToLatLng||Xe;if(!B&&!F)return null;switch(F.type){case"Point":return fe(U,g,e=s(B),I);case"MultiPoint":for(C=0,Q=B.length;C<Q;C++)e=s(B[C]),n.push(fe(U,g,e,I));return new xe(n);case"LineString":case"MultiLineString":return t=Je(B,"LineString"===F.type?0:1,s),new pe(t,I);case"Polygon":case"MultiPolygon":return t=Je(B,"Polygon"===F.type?1:2,s),new Ee(t,I);case"GeometryCollection":for(C=0,Q=F.geometries.length;C<Q;C++){var i=We({geometry:F.geometries[C],type:"Feature",properties:g.properties},I);i&&n.push(i)}return new xe(n);default:throw new Error("Invalid GeoJSON object.")}}function fe(g,I,e,t){return g?g(I,e):new Le(e,t&&t.markersInheritOptions&&t)}function Xe(g){return new J(g[1],g[0],g[2])}function Je(g,I,e){for(var t,C=[],Q=0,F=g.length;Q<F;Q++)t=I?Je(g[Q],I-1,e):(e||Xe)(g[Q]),C.push(t);return C}function ve(g,I){return I="number"===typeof I?I:6,void 0!==g.alt?[U(g.lng,I),U(g.lat,I),U(g.alt,I)]:[U(g.lng,I),U(g.lat,I)]}function ke(g,I,e,t){for(var C=[],Q=0,F=g.length;Q<F;Q++)C.push(I?ke(g[Q],I-1,e,t):ve(g[Q],t));return!I&&e&&C.push(C[0]),C}function He(g,e){return g.feature?I({},g.feature,{geometry:e}):Me(e)}function Me(g){return"Feature"===g.type||"FeatureCollection"===g.type?g:{type:"Feature",properties:{},geometry:g}}var Ye={toGeoJSON:function(g){return He(this,{type:"Point",coordinates:ve(this.getLatLng(),g)})}};function we(g,I){return new Ne(g,I)}Le.include(Ye),De.include(Ye),he.include(Ye),pe.include({toGeoJSON:function(g){var I=!ie(this._latlngs);return He(this,{type:(I?"Multi":"")+"LineString",coordinates:ke(this._latlngs,I?1:0,!1,g)})}}),Ee.include({toGeoJSON:function(g){var I=!ie(this._latlngs),e=I&&!ie(this._latlngs[0]),t=ke(this._latlngs,e?2:I?1:0,!0,g);return I||(t=[t]),He(this,{type:(e?"Multi":"")+"Polygon",coordinates:t})}}),me.include({toMultiPoint:function(g){var I=[];return this.eachLayer((function(e){I.push(e.toGeoJSON(g).geometry.coordinates)})),He(this,{type:"MultiPoint",coordinates:I})},toGeoJSON:function(g){var I=this.feature&&this.feature.geometry&&this.feature.geometry.type;if("MultiPoint"===I)return this.toMultiPoint(g);var e="GeometryCollection"===I,t=[];return this.eachLayer((function(I){if(I.toGeoJSON){var C=I.toGeoJSON(g);if(e)t.push(C.geometry);else{var Q=Me(C);"FeatureCollection"===Q.type?t.push.apply(t,Q.features):t.push(Q)}}})),e?He(this,{geometries:t,type:"GeometryCollection"}):{type:"FeatureCollection",features:t}}});var Te=we,ze=Ze.extend({options:{opacity:1,alt:"",interactive:!1,crossOrigin:!1,errorOverlayUrl:"",zIndex:1,className:""},initialize:function(g,I,e){this._url=g,this._bounds=X(I),c(this,e)},onAdd:function(){this._image||(this._initImage(),this.options.opacity<1&&this._updateOpacity()),this.options.interactive&&(FI(this._image,"leaflet-interactive"),this.addInteractiveTarget(this._image)),this.getPane().appendChild(this._image),this._reset()},onRemove:function(){II(this._image),this.options.interactive&&this.removeInteractiveTarget(this._image)},setOpacity:function(g){return this.options.opacity=g,this._image&&this._updateOpacity(),this},setStyle:function(g){return g.opacity&&this.setOpacity(g.opacity),this},bringToFront:function(){return this._map&&tI(this._image),this},bringToBack:function(){return this._map&&CI(this._image),this},setUrl:function(g){return this._url=g,this._image&&(this._image.src=g),this},setBounds:function(g){return this._bounds=X(g),this._map&&this._reset(),this},getEvents:function(){var g={zoom:this._reset,viewreset:this._reset};return this._zoomAnimated&&(g.zoomanim=this._animateZoom),g},setZIndex:function(g){return this.options.zIndex=g,this._updateZIndex(),this},getBounds:function(){return this._bounds},getElement:function(){return this._image},_initImage:function(){var g="IMG"===this._url.tagName,I=this._image=g?this._url:gI("img");FI(I,"leaflet-image-layer"),this._zoomAnimated&&FI(I,"leaflet-zoom-animated"),this.options.className&&FI(I,this.options.className),I.onselectstart=n,I.onmousemove=n,I.onload=t(this.fire,this,"load"),I.onerror=t(this._overlayOnError,this,"error"),(this.options.crossOrigin||""===this.options.crossOrigin)&&(I.crossOrigin=!0===this.options.crossOrigin?"":this.options.crossOrigin),this.options.zIndex&&this._updateZIndex(),g?this._url=I.src:(I.src=this._url,I.alt=this.options.alt)},_animateZoom:function(g){var I=this._map.getZoomScale(g.zoom),e=this._map._latLngBoundsToNewLayerBounds(this._bounds,g.zoom,g.center).min;cI(this._image,e,I)},_reset:function(){var g=this._image,I=new N(this._map.latLngToLayerPoint(this._bounds.getNorthWest()),this._map.latLngToLayerPoint(this._bounds.getSouthEast())),e=I.getSize();AI(g,I.min),g.style.width=e.x+"px",g.style.height=e.y+"px"},_updateOpacity:function(){sI(this._image,this.options.opacity)},_updateZIndex:function(){this._image&&void 0!==this.options.zIndex&&null!==this.options.zIndex&&(this._image.style.zIndex=this.options.zIndex)},_overlayOnError:function(){this.fire("error");var g=this.options.errorOverlayUrl;g&&this._url!==g&&(this._url=g,this._image.src=g)}}),Oe=ze.extend({options:{autoplay:!0,loop:!0,keepAspectRatio:!0,muted:!1},_initImage:function(){var g="VIDEO"===this._url.tagName,I=this._image=g?this._url:gI("video");if(FI(I,"leaflet-image-layer"),this._zoomAnimated&&FI(I,"leaflet-zoom-animated"),this.options.className&&FI(I,this.options.className),I.onselectstart=n,I.onmousemove=n,I.onloadeddata=t(this.fire,this,"load"),g){for(var e=I.getElementsByTagName("source"),C=[],Q=0;Q<e.length;Q++)C.push(e[Q].src);this._url=e.length>0?C:[I.src]}else{r(this._url)||(this._url=[this._url]),!this.options.keepAspectRatio&&Object.prototype.hasOwnProperty.call(I.style,"objectFit")&&(I.style.objectFit="fill"),I.autoplay=!!this.options.autoplay,I.loop=!!this.options.loop,I.muted=!!this.options.muted;for(var F=0;F<this._url.length;F++){var B=gI("source");B.src=this._url[F],I.appendChild(B)}}}}),Ke=ze.extend({_initImage:function(){var g=this._image=this._url;FI(g,"leaflet-image-layer"),this._zoomAnimated&&FI(g,"leaflet-zoom-animated"),this.options.className&&FI(g,this.options.className),g.onselectstart=n,g.onmousemove=n}}),je=Ze.extend({options:{offset:[0,7],className:"",pane:"popupPane"},initialize:function(g,I){c(this,g),this._source=I},onAdd:function(g){this._zoomAnimated=g._zoomAnimated,this._container||this._initLayout(),g._fadeAnimated&&sI(this._container,0),clearTimeout(this._removeTimeout),this.getPane().appendChild(this._container),this.update(),g._fadeAnimated&&sI(this._container,1),this.bringToFront()},onRemove:function(g){g._fadeAnimated?(sI(this._container,0),this._removeTimeout=setTimeout(t(II,void 0,this._container),200)):II(this._container)},getLatLng:function(){return this._latlng},setLatLng:function(g){return this._latlng=v(g),this._map&&(this._updatePosition(),this._adjustPan()),this},getContent:function(){return this._content},setContent:function(g){return this._content=g,this.update(),this},getElement:function(){return this._container},update:function(){this._map&&(this._container.style.visibility="hidden",this._updateContent(),this._updateLayout(),this._updatePosition(),this._container.style.visibility="",this._adjustPan())},getEvents:function(){var g={zoom:this._updatePosition,viewreset:this._updatePosition};return this._zoomAnimated&&(g.zoomanim=this._animateZoom),g},isOpen:function(){return!!this._map&&this._map.hasLayer(this)},bringToFront:function(){return this._map&&tI(this._container),this},bringToBack:function(){return this._map&&CI(this._container),this},_prepareOpen:function(g,I,e){if(I instanceof Ze||(e=I,I=g),I instanceof xe)for(var t in g._layers){I=g._layers[t];break}if(!e)if(I.getCenter)e=I.getCenter();else{if(!I.getLatLng)throw new Error("Unable to get source layer LatLng.");e=I.getLatLng()}return this._source=I,this.update(),e},_updateContent:function(){if(this._content){var g=this._contentNode,I="function"===typeof this._content?this._content(this._source||this):this._content;if("string"===typeof I)g.innerHTML=I;else{for(;g.hasChildNodes();)g.removeChild(g.firstChild);g.appendChild(I)}this.fire("contentupdate")}},_updatePosition:function(){if(this._map){var g=this._map.latLngToLayerPoint(this._latlng),I=E(this.options.offset),e=this._getAnchor();this._zoomAnimated?AI(this._container,g.add(e)):I=I.add(g).add(e);var t=this._containerBottom=-I.y,C=this._containerLeft=-Math.round(this._containerWidth/2)+I.x;this._container.style.bottom=t+"px",this._container.style.left=C+"px"}},_getAnchor:function(){return[0,0]}}),Pe=je.extend({options:{maxWidth:300,minWidth:50,maxHeight:null,autoPan:!0,autoPanPaddingTopLeft:null,autoPanPaddingBottomRight:null,autoPanPadding:[5,5],keepInView:!1,closeButton:!0,autoClose:!0,closeOnEscapeKey:!0,className:""},openOn:function(g){return g.openPopup(this),this},onAdd:function(g){je.prototype.onAdd.call(this,g),g.fire("popupopen",{popup:this}),this._source&&(this._source.fire("popupopen",{popup:this},!0),this._source instanceof Ve||this._source.on("preclick",hI))},onRemove:function(g){je.prototype.onRemove.call(this,g),g.fire("popupclose",{popup:this}),this._source&&(this._source.fire("popupclose",{popup:this},!0),this._source instanceof Ve||this._source.off("preclick",hI))},getEvents:function(){var g=je.prototype.getEvents.call(this);return(void 0!==this.options.closeOnClick?this.options.closeOnClick:this._map.options.closePopupOnClick)&&(g.preclick=this._close),this.options.keepInView&&(g.moveend=this._adjustPan),g},_close:function(){this._map&&this._map.closePopup(this)},_initLayout:function(){var g="leaflet-popup",I=this._container=gI("div",g+" "+(this.options.className||"")+" leaflet-zoom-animated"),e=this._wrapper=gI("div",g+"-content-wrapper",I);if(this._contentNode=gI("div",g+"-content",e),pI(I),DI(this._contentNode),mI(I,"contextmenu",hI),this._tipContainer=gI("div",g+"-tip-container",I),this._tip=gI("div",g+"-tip",this._tipContainer),this.options.closeButton){var t=this._closeButton=gI("a",g+"-close-button",I);t.href="#close",t.innerHTML="&#215;",mI(t,"click",this._onCloseButtonClick,this)}},_updateLayout:function(){var g=this._contentNode,I=g.style;I.width="",I.whiteSpace="nowrap";var e=g.offsetWidth;e=Math.min(e,this.options.maxWidth),e=Math.max(e,this.options.minWidth),I.width=e+1+"px",I.whiteSpace="",I.height="";var t=g.offsetHeight,C=this.options.maxHeight;C&&t>C?(I.height=C+"px",FI(g,"leaflet-popup-scrolled")):BI(g,"leaflet-popup-scrolled"),this._containerWidth=this._container.offsetWidth},_animateZoom:function(g){var I=this._map._latLngToNewLayerPoint(this._latlng,g.zoom,g.center),e=this._getAnchor();AI(this._container,I.add(e))},_adjustPan:function(){if(this.options.autoPan){this._map._panAnim&&this._map._panAnim.stop();var g=this._map,I=parseInt($g(this._container,"marginBottom"),10)||0,e=this._container.offsetHeight+I,t=this._containerWidth,C=new D(this._containerLeft,-e-this._containerBottom);C._add(lI(this._container));var Q=g.layerPointToContainerPoint(C),F=E(this.options.autoPanPadding),B=E(this.options.autoPanPaddingTopLeft||F),n=E(this.options.autoPanPaddingBottomRight||F),U=g.getSize(),s=0,i=0;Q.x+t+n.x>U.x&&(s=Q.x+t-U.x+n.x),Q.x-s-B.x<0&&(s=Q.x-B.x),Q.y+e+n.y>U.y&&(i=Q.y+e-U.y+n.y),Q.y-i-B.y<0&&(i=Q.y-B.y),(s||i)&&g.fire("autopanstart").panBy([s,i])}},_onCloseButtonClick:function(g){this._close(),NI(g)},_getAnchor:function(){return E(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}});wI.mergeOptions({closePopupOnClick:!0}),wI.include({openPopup:function(g,I,e){return g instanceof Pe||(g=new Pe(e).setContent(g)),I&&g.setLatLng(I),this.hasLayer(g)?this:(this._popup&&this._popup.options.autoClose&&this.closePopup(),this._popup=g,this.addLayer(g))},closePopup:function(g){return g&&g!==this._popup||(g=this._popup,this._popup=null),g&&this.removeLayer(g),this}}),Ze.include({bindPopup:function(g,I){return g instanceof Pe?(c(g,I),this._popup=g,g._source=this):(this._popup&&!I||(this._popup=new Pe(I,this)),this._popup.setContent(g)),this._popupHandlersAdded||(this.on({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this.off({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!1,this._popup=null),this},openPopup:function(g,I){return this._popup&&this._map&&(I=this._popup._prepareOpen(this,g,I),this._map.openPopup(this._popup,I)),this},closePopup:function(){return this._popup&&this._popup._close(),this},togglePopup:function(g){return this._popup&&(this._popup._map?this.closePopup():this.openPopup(g)),this},isPopupOpen:function(){return!!this._popup&&this._popup.isOpen()},setPopupContent:function(g){return this._popup&&this._popup.setContent(g),this},getPopup:function(){return this._popup},_openPopup:function(g){var I=g.layer||g.target;this._popup&&this._map&&(NI(g),I instanceof Ve?this.openPopup(g.layer||g.target,g.latlng):this._map.hasLayer(this._popup)&&this._popup._source===I?this.closePopup():this.openPopup(I,g.latlng))},_movePopup:function(g){this._popup.setLatLng(g.latlng)},_onKeyPress:function(g){13===g.originalEvent.keyCode&&this._openPopup(g)}});var _e=je.extend({options:{pane:"tooltipPane",offset:[0,0],direction:"auto",permanent:!1,sticky:!1,interactive:!1,opacity:.9},onAdd:function(g){je.prototype.onAdd.call(this,g),this.setOpacity(this.options.opacity),g.fire("tooltipopen",{tooltip:this}),this._source&&this._source.fire("tooltipopen",{tooltip:this},!0)},onRemove:function(g){je.prototype.onRemove.call(this,g),g.fire("tooltipclose",{tooltip:this}),this._source&&this._source.fire("tooltipclose",{tooltip:this},!0)},getEvents:function(){var g=je.prototype.getEvents.call(this);return yg&&!this.options.permanent&&(g.preclick=this._close),g},_close:function(){this._map&&this._map.closeTooltip(this)},_initLayout:function(){var g="leaflet-tooltip "+(this.options.className||"")+" leaflet-zoom-"+(this._zoomAnimated?"animated":"hide");this._contentNode=this._container=gI("div",g)},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(g){var I,e,t=this._map,C=this._container,Q=t.latLngToContainerPoint(t.getCenter()),F=t.layerPointToContainerPoint(g),B=this.options.direction,n=C.offsetWidth,U=C.offsetHeight,s=E(this.options.offset),i=this._getAnchor();"top"===B?(I=n/2,e=U):"bottom"===B?(I=n/2,e=0):"center"===B?(I=n/2,e=U/2):"right"===B?(I=0,e=U/2):"left"===B?(I=n,e=U/2):F.x<Q.x?(B="right",I=0,e=U/2):(B="left",I=n+2*(s.x+i.x),e=U/2),g=g.subtract(E(I,e,!0)).add(s).add(i),BI(C,"leaflet-tooltip-right"),BI(C,"leaflet-tooltip-left"),BI(C,"leaflet-tooltip-top"),BI(C,"leaflet-tooltip-bottom"),FI(C,"leaflet-tooltip-"+B),AI(C,g)},_updatePosition:function(){var g=this._map.latLngToLayerPoint(this._latlng);this._setPosition(g)},setOpacity:function(g){this.options.opacity=g,this._container&&sI(this._container,g)},_animateZoom:function(g){var I=this._map._latLngToNewLayerPoint(this._latlng,g.zoom,g.center);this._setPosition(I)},_getAnchor:function(){return E(this._source&&this._source._getTooltipAnchor&&!this.options.sticky?this._source._getTooltipAnchor():[0,0])}});wI.include({openTooltip:function(g,I,e){return g instanceof _e||(g=new _e(e).setContent(g)),I&&g.setLatLng(I),this.hasLayer(g)?this:this.addLayer(g)},closeTooltip:function(g){return g&&this.removeLayer(g),this}}),Ze.include({bindTooltip:function(g,I){return g instanceof _e?(c(g,I),this._tooltip=g,g._source=this):(this._tooltip&&!I||(this._tooltip=new _e(I,this)),this._tooltip.setContent(g)),this._initTooltipInteractions(),this._tooltip.options.permanent&&this._map&&this._map.hasLayer(this)&&this.openTooltip(),this},unbindTooltip:function(){return this._tooltip&&(this._initTooltipInteractions(!0),this.closeTooltip(),this._tooltip=null),this},_initTooltipInteractions:function(g){if(g||!this._tooltipHandlersAdded){var I=g?"off":"on",e={remove:this.closeTooltip,move:this._moveTooltip};this._tooltip.options.permanent?e.add=this._openTooltip:(e.mouseover=this._openTooltip,e.mouseout=this.closeTooltip,this._tooltip.options.sticky&&(e.mousemove=this._moveTooltip),yg&&(e.click=this._openTooltip)),this[I](e),this._tooltipHandlersAdded=!g}},openTooltip:function(g,I){return this._tooltip&&this._map&&(I=this._tooltip._prepareOpen(this,g,I),this._map.openTooltip(this._tooltip,I),this._tooltip.options.interactive&&this._tooltip._container&&(FI(this._tooltip._container,"leaflet-clickable"),this.addInteractiveTarget(this._tooltip._container))),this},closeTooltip:function(){return this._tooltip&&(this._tooltip._close(),this._tooltip.options.interactive&&this._tooltip._container&&(BI(this._tooltip._container,"leaflet-clickable"),this.removeInteractiveTarget(this._tooltip._container))),this},toggleTooltip:function(g){return this._tooltip&&(this._tooltip._map?this.closeTooltip():this.openTooltip(g)),this},isTooltipOpen:function(){return this._tooltip.isOpen()},setTooltipContent:function(g){return this._tooltip&&this._tooltip.setContent(g),this},getTooltip:function(){return this._tooltip},_openTooltip:function(g){var I=g.layer||g.target;this._tooltip&&this._map&&this.openTooltip(I,this._tooltip.options.sticky?g.latlng:void 0)},_moveTooltip:function(g){var I,e,t=g.latlng;this._tooltip.options.sticky&&g.originalEvent&&(I=this._map.mouseEventToContainerPoint(g.originalEvent),e=this._map.containerPointToLayerPoint(I),t=this._map.layerPointToLatLng(e)),this._tooltip.setLatLng(t)}});var qe=Re.extend({options:{iconSize:[12,12],html:!1,bgPos:null,className:"leaflet-div-icon"},createIcon:function(g){var I=g&&"DIV"===g.tagName?g:document.createElement("div"),e=this.options;if(e.html instanceof Element?(eI(I),I.appendChild(e.html)):I.innerHTML=!1!==e.html?e.html:"",e.bgPos){var t=E(e.bgPos);I.style.backgroundPosition=-t.x+"px "+-t.y+"px"}return this._setIconStyles(I,"icon"),I},createShadow:function(){return null}});Re.Default=Se;var $e=Ze.extend({options:{tileSize:256,opacity:1,updateWhenIdle:ag,updateWhenZooming:!0,updateInterval:200,zIndex:1,bounds:null,minZoom:0,maxZoom:void 0,maxNativeZoom:void 0,minNativeZoom:void 0,noWrap:!1,pane:"tilePane",className:"",keepBuffer:2},initialize:function(g){c(this,g)},onAdd:function(){this._initContainer(),this._levels={},this._tiles={},this._resetView(),this._update()},beforeAdd:function(g){g._addZoomLimit(this)},onRemove:function(g){this._removeAllTiles(),II(this._container),g._removeZoomLimit(this),this._container=null,this._tileZoom=void 0},bringToFront:function(){return this._map&&(tI(this._container),this._setAutoZIndex(Math.max)),this},bringToBack:function(){return this._map&&(CI(this._container),this._setAutoZIndex(Math.min)),this},getContainer:function(){return this._container},setOpacity:function(g){return this.options.opacity=g,this._updateOpacity(),this},setZIndex:function(g){return this.options.zIndex=g,this._updateZIndex(),this},isLoading:function(){return this._loading},redraw:function(){return this._map&&(this._removeAllTiles(),this._update()),this},getEvents:function(){var g={viewprereset:this._invalidateAll,viewreset:this._resetView,zoom:this._resetView,moveend:this._onMoveEnd};return this.options.updateWhenIdle||(this._onMove||(this._onMove=F(this._onMoveEnd,this.options.updateInterval,this)),g.move=this._onMove),this._zoomAnimated&&(g.zoomanim=this._animateZoom),g},createTile:function(){return document.createElement("div")},getTileSize:function(){var g=this.options.tileSize;return g instanceof D?g:new D(g,g)},_updateZIndex:function(){this._container&&void 0!==this.options.zIndex&&null!==this.options.zIndex&&(this._container.style.zIndex=this.options.zIndex)},_setAutoZIndex:function(g){for(var I,e=this.getPane().children,t=-g(-1/0,1/0),C=0,Q=e.length;C<Q;C++)I=e[C].style.zIndex,e[C]!==this._container&&I&&(t=g(t,+I));isFinite(t)&&(this.options.zIndex=t+g(-1,1),this._updateZIndex())},_updateOpacity:function(){if(this._map&&!_){sI(this._container,this.options.opacity);var g=+new Date,I=!1,e=!1;for(var t in this._tiles){var C=this._tiles[t];if(C.current&&C.loaded){var Q=Math.min(1,(g-C.loaded)/200);sI(C.el,Q),Q<1?I=!0:(C.active?e=!0:this._onOpaqueTile(C),C.active=!0)}}e&&!this._noPrune&&this._pruneTiles(),I&&(R(this._fadeFrame),this._fadeFrame=x(this._updateOpacity,this))}},_onOpaqueTile:n,_initContainer:function(){this._container||(this._container=gI("div","leaflet-layer "+(this.options.className||"")),this._updateZIndex(),this.options.opacity<1&&this._updateOpacity(),this.getPane().appendChild(this._container))},_updateLevels:function(){var g=this._tileZoom,I=this.options.maxZoom;if(void 0!==g){for(var e in this._levels)e=Number(e),this._levels[e].el.children.length||e===g?(this._levels[e].el.style.zIndex=I-Math.abs(g-e),this._onUpdateLevel(e)):(II(this._levels[e].el),this._removeTilesAtZoom(e),this._onRemoveLevel(e),delete this._levels[e]);var t=this._levels[g],C=this._map;return t||((t=this._levels[g]={}).el=gI("div","leaflet-tile-container leaflet-zoom-animated",this._container),t.el.style.zIndex=I,t.origin=C.project(C.unproject(C.getPixelOrigin()),g).round(),t.zoom=g,this._setZoomTransform(t,C.getCenter(),C.getZoom()),t.el.offsetWidth,this._onCreateLevel(t)),this._level=t,t}},_onUpdateLevel:n,_onRemoveLevel:n,_onCreateLevel:n,_pruneTiles:function(){if(this._map){var g,I,e=this._map.getZoom();if(e>this.options.maxZoom||e<this.options.minZoom)this._removeAllTiles();else{for(g in this._tiles)(I=this._tiles[g]).retain=I.current;for(g in this._tiles)if((I=this._tiles[g]).current&&!I.active){var t=I.coords;this._retainParent(t.x,t.y,t.z,t.z-5)||this._retainChildren(t.x,t.y,t.z,t.z+2)}for(g in this._tiles)this._tiles[g].retain||this._removeTile(g)}}},_removeTilesAtZoom:function(g){for(var I in this._tiles)this._tiles[I].coords.z===g&&this._removeTile(I)},_removeAllTiles:function(){for(var g in this._tiles)this._removeTile(g)},_invalidateAll:function(){for(var g in this._levels)II(this._levels[g].el),this._onRemoveLevel(Number(g)),delete this._levels[g];this._removeAllTiles(),this._tileZoom=void 0},_retainParent:function(g,I,e,t){var C=Math.floor(g/2),Q=Math.floor(I/2),F=e-1,B=new D(+C,+Q);B.z=+F;var n=this._tileCoordsToKey(B),U=this._tiles[n];return U&&U.active?(U.retain=!0,!0):(U&&U.loaded&&(U.retain=!0),F>t&&this._retainParent(C,Q,F,t))},_retainChildren:function(g,I,e,t){for(var C=2*g;C<2*g+2;C++)for(var Q=2*I;Q<2*I+2;Q++){var F=new D(C,Q);F.z=e+1;var B=this._tileCoordsToKey(F),n=this._tiles[B];n&&n.active?n.retain=!0:(n&&n.loaded&&(n.retain=!0),e+1<t&&this._retainChildren(C,Q,e+1,t))}},_resetView:function(g){var I=g&&(g.pinch||g.flyTo);this._setView(this._map.getCenter(),this._map.getZoom(),I,I)},_animateZoom:function(g){this._setView(g.center,g.zoom,!0,g.noUpdate)},_clampZoom:function(g){var I=this.options;return void 0!==I.minNativeZoom&&g<I.minNativeZoom?I.minNativeZoom:void 0!==I.maxNativeZoom&&I.maxNativeZoom<g?I.maxNativeZoom:g},_setView:function(g,I,e,t){var C=Math.round(I);C=void 0!==this.options.maxZoom&&C>this.options.maxZoom||void 0!==this.options.minZoom&&C<this.options.minZoom?void 0:this._clampZoom(C);var Q=this.options.updateWhenZooming&&C!==this._tileZoom;t&&!Q||(this._tileZoom=C,this._abortLoading&&this._abortLoading(),this._updateLevels(),this._resetGrid(),void 0!==C&&this._update(g),e||this._pruneTiles(),this._noPrune=!!e),this._setZoomTransforms(g,I)},_setZoomTransforms:function(g,I){for(var e in this._levels)this._setZoomTransform(this._levels[e],g,I)},_setZoomTransform:function(g,I,e){var t=this._map.getZoomScale(e,g.zoom),C=g.origin.multiplyBy(t).subtract(this._map._getNewPixelOrigin(I,e)).round();lg?cI(g.el,C,t):AI(g.el,C)},_resetGrid:function(){var g=this._map,I=g.options.crs,e=this._tileSize=this.getTileSize(),t=this._tileZoom,C=this._map.getPixelWorldBounds(this._tileZoom);C&&(this._globalTileRange=this._pxBoundsToTileRange(C)),this._wrapX=I.wrapLng&&!this.options.noWrap&&[Math.floor(g.project([0,I.wrapLng[0]],t).x/e.x),Math.ceil(g.project([0,I.wrapLng[1]],t).x/e.y)],this._wrapY=I.wrapLat&&!this.options.noWrap&&[Math.floor(g.project([I.wrapLat[0],0],t).y/e.x),Math.ceil(g.project([I.wrapLat[1],0],t).y/e.y)]},_onMoveEnd:function(){this._map&&!this._map._animatingZoom&&this._update()},_getTiledPixelBounds:function(g){var I=this._map,e=I._animatingZoom?Math.max(I._animateToZoom,I.getZoom()):I.getZoom(),t=I.getZoomScale(e,this._tileZoom),C=I.project(g,this._tileZoom).floor(),Q=I.getSize().divideBy(2*t);return new N(C.subtract(Q),C.add(Q))},_update:function(g){var I=this._map;if(I){var e=this._clampZoom(I.getZoom());if(void 0===g&&(g=I.getCenter()),void 0!==this._tileZoom){var t=this._getTiledPixelBounds(g),C=this._pxBoundsToTileRange(t),Q=C.getCenter(),F=[],B=this.options.keepBuffer,n=new N(C.getBottomLeft().subtract([B,-B]),C.getTopRight().add([B,-B]));if(!(isFinite(C.min.x)&&isFinite(C.min.y)&&isFinite(C.max.x)&&isFinite(C.max.y)))throw new Error("Attempted to load an infinite number of tiles");for(var U in this._tiles){var s=this._tiles[U].coords;s.z===this._tileZoom&&n.contains(new D(s.x,s.y))||(this._tiles[U].current=!1)}if(Math.abs(e-this._tileZoom)>1)this._setView(g,e);else{for(var i=C.min.y;i<=C.max.y;i++)for(var c=C.min.x;c<=C.max.x;c++){var A=new D(c,i);if(A.z=this._tileZoom,this._isValidTile(A)){var l=this._tiles[this._tileCoordsToKey(A)];l?l.current=!0:F.push(A)}}if(F.sort((function(g,I){return g.distanceTo(Q)-I.distanceTo(Q)})),0!==F.length){this._loading||(this._loading=!0,this.fire("loading"));var a=document.createDocumentFragment();for(c=0;c<F.length;c++)this._addTile(F[c],a);this._level.el.appendChild(a)}}}}},_isValidTile:function(g){var I=this._map.options.crs;if(!I.infinite){var e=this._globalTileRange;if(!I.wrapLng&&(g.x<e.min.x||g.x>e.max.x)||!I.wrapLat&&(g.y<e.min.y||g.y>e.max.y))return!1}if(!this.options.bounds)return!0;var t=this._tileCoordsToBounds(g);return X(this.options.bounds).overlaps(t)},_keyToBounds:function(g){return this._tileCoordsToBounds(this._keyToTileCoords(g))},_tileCoordsToNwSe:function(g){var I=this._map,e=this.getTileSize(),t=g.scaleBy(e),C=t.add(e);return[I.unproject(t,g.z),I.unproject(C,g.z)]},_tileCoordsToBounds:function(g){var I=this._tileCoordsToNwSe(g),e=new f(I[0],I[1]);return this.options.noWrap||(e=this._map.wrapLatLngBounds(e)),e},_tileCoordsToKey:function(g){return g.x+":"+g.y+":"+g.z},_keyToTileCoords:function(g){var I=g.split(":"),e=new D(+I[0],+I[1]);return e.z=+I[2],e},_removeTile:function(g){var I=this._tiles[g];I&&(II(I.el),delete this._tiles[g],this.fire("tileunload",{tile:I.el,coords:this._keyToTileCoords(g)}))},_initTile:function(g){FI(g,"leaflet-tile");var I=this.getTileSize();g.style.width=I.x+"px",g.style.height=I.y+"px",g.onselectstart=n,g.onmousemove=n,_&&this.options.opacity<1&&sI(g,this.options.opacity),gg&&!Ig&&(g.style.WebkitBackfaceVisibility="hidden")},_addTile:function(g,I){var e=this._getTilePos(g),C=this._tileCoordsToKey(g),Q=this.createTile(this._wrapCoords(g),t(this._tileReady,this,g));this._initTile(Q),this.createTile.length<2&&x(t(this._tileReady,this,g,null,Q)),AI(Q,e),this._tiles[C]={el:Q,coords:g,current:!0},I.appendChild(Q),this.fire("tileloadstart",{tile:Q,coords:g})},_tileReady:function(g,I,e){I&&this.fire("tileerror",{error:I,tile:e,coords:g});var C=this._tileCoordsToKey(g);(e=this._tiles[C])&&(e.loaded=+new Date,this._map._fadeAnimated?(sI(e.el,0),R(this._fadeFrame),this._fadeFrame=x(this._updateOpacity,this)):(e.active=!0,this._pruneTiles()),I||(FI(e.el,"leaflet-tile-loaded"),this.fire("tileload",{tile:e.el,coords:g})),this._noTilesToLoad()&&(this._loading=!1,this.fire("load"),_||!this._map._fadeAnimated?x(this._pruneTiles,this):setTimeout(t(this._pruneTiles,this),250)))},_getTilePos:function(g){return g.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(g){var I=new D(this._wrapX?B(g.x,this._wrapX):g.x,this._wrapY?B(g.y,this._wrapY):g.y);return I.z=g.z,I},_pxBoundsToTileRange:function(g){var I=this.getTileSize();return new N(g.min.unscaleBy(I).floor(),g.max.unscaleBy(I).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var g in this._tiles)if(!this._tiles[g].loaded)return!1;return!0}}),gt=$e.extend({options:{minZoom:0,maxZoom:18,subdomains:"abc",errorTileUrl:"",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1},initialize:function(g,I){this._url=g,(I=c(this,I)).detectRetina&&mg&&I.maxZoom>0&&(I.tileSize=Math.floor(I.tileSize/2),I.zoomReverse?(I.zoomOffset--,I.minZoom++):(I.zoomOffset++,I.maxZoom--),I.minZoom=Math.max(0,I.minZoom)),"string"===typeof I.subdomains&&(I.subdomains=I.subdomains.split("")),gg||this.on("tileunload",this._onTileRemove)},setUrl:function(g,I){return this._url===g&&void 0===I&&(I=!0),this._url=g,I||this.redraw(),this},createTile:function(g,I){var e=document.createElement("img");return mI(e,"load",t(this._tileOnLoad,this,I,e)),mI(e,"error",t(this._tileOnError,this,I,e)),(this.options.crossOrigin||""===this.options.crossOrigin)&&(e.crossOrigin=!0===this.options.crossOrigin?"":this.options.crossOrigin),e.alt="",e.setAttribute("role","presentation"),e.src=this.getTileUrl(g),e},getTileUrl:function(g){var e={r:mg?"@2x":"",s:this._getSubdomain(g),x:g.x,y:g.y,z:this._getZoomForUrl()};if(this._map&&!this._map.options.crs.infinite){var t=this._globalTileRange.max.y-g.y;this.options.tms&&(e.y=t),e["-y"]=t}return a(this._url,I(e,this.options))},_tileOnLoad:function(g,I){_?setTimeout(t(g,this,null,I),0):g(null,I)},_tileOnError:function(g,I,e){var t=this.options.errorTileUrl;t&&I.getAttribute("src")!==t&&(I.src=t),g(e,I)},_onTileRemove:function(g){g.tile.onload=null},_getZoomForUrl:function(){var g=this._tileZoom,I=this.options.maxZoom;return this.options.zoomReverse&&(g=I-g),g+this.options.zoomOffset},_getSubdomain:function(g){var I=Math.abs(g.x+g.y)%this.options.subdomains.length;return this.options.subdomains[I]},_abortLoading:function(){var g,I;for(g in this._tiles)this._tiles[g].coords.z!==this._tileZoom&&((I=this._tiles[g].el).onload=n,I.onerror=n,I.complete||(I.src=d,II(I),delete this._tiles[g]))},_removeTile:function(g){var I=this._tiles[g];if(I)return tg||I.el.setAttribute("src",d),$e.prototype._removeTile.call(this,g)},_tileReady:function(g,I,e){if(this._map&&(!e||e.getAttribute("src")!==d))return $e.prototype._tileReady.call(this,g,I,e)}});function It(g,I){return new gt(g,I)}var et=gt.extend({defaultWmsParams:{service:"WMS",request:"GetMap",layers:"",styles:"",format:"image/jpeg",transparent:!1,version:"1.1.1"},options:{crs:null,uppercase:!1},initialize:function(g,e){this._url=g;var t=I({},this.defaultWmsParams);for(var C in e)C in this.options||(t[C]=e[C]);var Q=(e=c(this,e)).detectRetina&&mg?2:1,F=this.getTileSize();t.width=F.x*Q,t.height=F.y*Q,this.wmsParams=t},onAdd:function(g){this._crs=this.options.crs||g.options.crs,this._wmsVersion=parseFloat(this.wmsParams.version);var I=this._wmsVersion>=1.3?"crs":"srs";this.wmsParams[I]=this._crs.code,gt.prototype.onAdd.call(this,g)},getTileUrl:function(g){var I=this._tileCoordsToNwSe(g),e=this._crs,t=W(e.project(I[0]),e.project(I[1])),C=t.min,Q=t.max,F=(this._wmsVersion>=1.3&&this._crs===ye?[C.y,C.x,Q.y,Q.x]:[C.x,C.y,Q.x,Q.y]).join(","),B=gt.prototype.getTileUrl.call(this,g);return B+A(this.wmsParams,B,this.options.uppercase)+(this.options.uppercase?"&BBOX=":"&bbox=")+F},setParams:function(g,e){return I(this.wmsParams,g),e||this.redraw(),this}});gt.WMS=et,It.wms=function(g,I){return new et(g,I)};var tt=Ze.extend({options:{padding:.1,tolerance:0},initialize:function(g){c(this,g),Q(this),this._layers=this._layers||{}},onAdd:function(){this._container||(this._initContainer(),this._zoomAnimated&&FI(this._container,"leaflet-zoom-animated")),this.getPane().appendChild(this._container),this._update(),this.on("update",this._updatePaths,this)},onRemove:function(){this.off("update",this._updatePaths,this),this._destroyContainer()},getEvents:function(){var g={viewreset:this._reset,zoom:this._onZoom,moveend:this._update,zoomend:this._onZoomEnd};return this._zoomAnimated&&(g.zoomanim=this._onAnimZoom),g},_onAnimZoom:function(g){this._updateTransform(g.center,g.zoom)},_onZoom:function(){this._updateTransform(this._map.getCenter(),this._map.getZoom())},_updateTransform:function(g,I){var e=this._map.getZoomScale(I,this._zoom),t=lI(this._container),C=this._map.getSize().multiplyBy(.5+this.options.padding),Q=this._map.project(this._center,I),F=this._map.project(g,I).subtract(Q),B=C.multiplyBy(-e).add(t).add(C).subtract(F);lg?cI(this._container,B,e):AI(this._container,B)},_reset:function(){for(var g in this._update(),this._updateTransform(this._center,this._zoom),this._layers)this._layers[g]._reset()},_onZoomEnd:function(){for(var g in this._layers)this._layers[g]._project()},_updatePaths:function(){for(var g in this._layers)this._layers[g]._update()},_update:function(){var g=this.options.padding,I=this._map.getSize(),e=this._map.containerPointToLayerPoint(I.multiplyBy(-g)).round();this._bounds=new N(e,e.add(I.multiplyBy(1+2*g)).round()),this._center=this._map.getCenter(),this._zoom=this._map.getZoom()}}),Ct=tt.extend({getEvents:function(){var g=tt.prototype.getEvents.call(this);return g.viewprereset=this._onViewPreReset,g},_onViewPreReset:function(){this._postponeUpdatePaths=!0},onAdd:function(){tt.prototype.onAdd.call(this),this._draw()},_initContainer:function(){var g=this._container=document.createElement("canvas");mI(g,"mousemove",this._onMouseMove,this),mI(g,"click dblclick mousedown mouseup contextmenu",this._onClick,this),mI(g,"mouseout",this._handleMouseOut,this),this._ctx=g.getContext("2d")},_destroyContainer:function(){R(this._redrawRequest),delete this._ctx,II(this._container),RI(this._container),delete this._container},_updatePaths:function(){if(!this._postponeUpdatePaths){for(var g in this._redrawBounds=null,this._layers)this._layers[g]._update();this._redraw()}},_update:function(){if(!this._map._animatingZoom||!this._bounds){tt.prototype._update.call(this);var g=this._bounds,I=this._container,e=g.getSize(),t=mg?2:1;AI(I,g.min),I.width=t*e.x,I.height=t*e.y,I.style.width=e.x+"px",I.style.height=e.y+"px",mg&&this._ctx.scale(2,2),this._ctx.translate(-g.min.x,-g.min.y),this.fire("update")}},_reset:function(){tt.prototype._reset.call(this),this._postponeUpdatePaths&&(this._postponeUpdatePaths=!1,this._updatePaths())},_initPath:function(g){this._updateDashArray(g),this._layers[Q(g)]=g;var I=g._order={layer:g,prev:this._drawLast,next:null};this._drawLast&&(this._drawLast.next=I),this._drawLast=I,this._drawFirst=this._drawFirst||this._drawLast},_addPath:function(g){this._requestRedraw(g)},_removePath:function(g){var I=g._order,e=I.next,t=I.prev;e?e.prev=t:this._drawLast=t,t?t.next=e:this._drawFirst=e,delete g._order,delete this._layers[Q(g)],this._requestRedraw(g)},_updatePath:function(g){this._extendRedrawBounds(g),g._project(),g._update(),this._requestRedraw(g)},_updateStyle:function(g){this._updateDashArray(g),this._requestRedraw(g)},_updateDashArray:function(g){if("string"===typeof g.options.dashArray){var I,e,t=g.options.dashArray.split(/[, ]+/),C=[];for(e=0;e<t.length;e++){if(I=Number(t[e]),isNaN(I))return;C.push(I)}g.options._dashArray=C}else g.options._dashArray=g.options.dashArray},_requestRedraw:function(g){this._map&&(this._extendRedrawBounds(g),this._redrawRequest=this._redrawRequest||x(this._redraw,this))},_extendRedrawBounds:function(g){if(g._pxBounds){var I=(g.options.weight||0)+1;this._redrawBounds=this._redrawBounds||new N,this._redrawBounds.extend(g._pxBounds.min.subtract([I,I])),this._redrawBounds.extend(g._pxBounds.max.add([I,I]))}},_redraw:function(){this._redrawRequest=null,this._redrawBounds&&(this._redrawBounds.min._floor(),this._redrawBounds.max._ceil()),this._clear(),this._draw(),this._redrawBounds=null},_clear:function(){var g=this._redrawBounds;if(g){var I=g.getSize();this._ctx.clearRect(g.min.x,g.min.y,I.x,I.y)}else this._ctx.save(),this._ctx.setTransform(1,0,0,1,0,0),this._ctx.clearRect(0,0,this._container.width,this._container.height),this._ctx.restore()},_draw:function(){var g,I=this._redrawBounds;if(this._ctx.save(),I){var e=I.getSize();this._ctx.beginPath(),this._ctx.rect(I.min.x,I.min.y,e.x,e.y),this._ctx.clip()}this._drawing=!0;for(var t=this._drawFirst;t;t=t.next)g=t.layer,(!I||g._pxBounds&&g._pxBounds.intersects(I))&&g._updatePath();this._drawing=!1,this._ctx.restore()},_updatePoly:function(g,I){if(this._drawing){var e,t,C,Q,F=g._parts,B=F.length,n=this._ctx;if(B){for(n.beginPath(),e=0;e<B;e++){for(t=0,C=F[e].length;t<C;t++)Q=F[e][t],n[t?"lineTo":"moveTo"](Q.x,Q.y);I&&n.closePath()}this._fillStroke(n,g)}}},_updateCircle:function(g){if(this._drawing&&!g._empty()){var I=g._point,e=this._ctx,t=Math.max(Math.round(g._radius),1),C=(Math.max(Math.round(g._radiusY),1)||t)/t;1!==C&&(e.save(),e.scale(1,C)),e.beginPath(),e.arc(I.x,I.y/C,t,0,2*Math.PI,!1),1!==C&&e.restore(),this._fillStroke(e,g)}},_fillStroke:function(g,I){var e=I.options;e.fill&&(g.globalAlpha=e.fillOpacity,g.fillStyle=e.fillColor||e.color,g.fill(e.fillRule||"evenodd")),e.stroke&&0!==e.weight&&(g.setLineDash&&g.setLineDash(I.options&&I.options._dashArray||[]),g.globalAlpha=e.opacity,g.lineWidth=e.weight,g.strokeStyle=e.color,g.lineCap=e.lineCap,g.lineJoin=e.lineJoin,g.stroke())},_onClick:function(g){for(var I,e,t=this._map.mouseEventToLayerPoint(g),C=this._drawFirst;C;C=C.next)(I=C.layer).options.interactive&&I._containsPoint(t)&&("click"!==g.type&&"preclick"===g.type||!this._map._draggableMoved(I))&&(e=I);e&&(vI(g),this._fireEvent([e],g))},_onMouseMove:function(g){if(this._map&&!this._map.dragging.moving()&&!this._map._animatingZoom){var I=this._map.mouseEventToLayerPoint(g);this._handleMouseHover(g,I)}},_handleMouseOut:function(g){var I=this._hoveredLayer;I&&(BI(this._container,"leaflet-interactive"),this._fireEvent([I],g,"mouseout"),this._hoveredLayer=null,this._mouseHoverThrottled=!1)},_handleMouseHover:function(g,I){if(!this._mouseHoverThrottled){for(var e,C,Q=this._drawFirst;Q;Q=Q.next)(e=Q.layer).options.interactive&&e._containsPoint(I)&&(C=e);C!==this._hoveredLayer&&(this._handleMouseOut(g),C&&(FI(this._container,"leaflet-interactive"),this._fireEvent([C],g,"mouseover"),this._hoveredLayer=C)),this._hoveredLayer&&this._fireEvent([this._hoveredLayer],g),this._mouseHoverThrottled=!0,setTimeout(t((function(){this._mouseHoverThrottled=!1}),this),32)}},_fireEvent:function(g,I,e){this._map._fireDOMEvent(I,e||I.type,g)},_bringToFront:function(g){var I=g._order;if(I){var e=I.next,t=I.prev;e&&(e.prev=t,t?t.next=e:e&&(this._drawFirst=e),I.prev=this._drawLast,this._drawLast.next=I,I.next=null,this._drawLast=I,this._requestRedraw(g))}},_bringToBack:function(g){var I=g._order;if(I){var e=I.next,t=I.prev;t&&(t.next=e,e?e.prev=t:t&&(this._drawLast=t),I.prev=null,I.next=this._drawFirst,this._drawFirst.prev=I,this._drawFirst=I,this._requestRedraw(g))}}});function Qt(g){return Rg?new Ct(g):null}var Ft=function(){try{return document.namespaces.add("lvml","urn:schemas-microsoft-com:vml"),function(g){return document.createElement("<lvml:"+g+' class="lvml">')}}catch(g){return function(g){return document.createElement("<"+g+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}}}(),Bt={_initContainer:function(){this._container=gI("div","leaflet-vml-container")},_update:function(){this._map._animatingZoom||(tt.prototype._update.call(this),this.fire("update"))},_initPath:function(g){var I=g._container=Ft("shape");FI(I,"leaflet-vml-shape "+(this.options.className||"")),I.coordsize="1 1",g._path=Ft("path"),I.appendChild(g._path),this._updateStyle(g),this._layers[Q(g)]=g},_addPath:function(g){var I=g._container;this._container.appendChild(I),g.options.interactive&&g.addInteractiveTarget(I)},_removePath:function(g){var I=g._container;II(I),g.removeInteractiveTarget(I),delete this._layers[Q(g)]},_updateStyle:function(g){var I=g._stroke,e=g._fill,t=g.options,C=g._container;C.stroked=!!t.stroke,C.filled=!!t.fill,t.stroke?(I||(I=g._stroke=Ft("stroke")),C.appendChild(I),I.weight=t.weight+"px",I.color=t.color,I.opacity=t.opacity,t.dashArray?I.dashStyle=r(t.dashArray)?t.dashArray.join(" "):t.dashArray.replace(/( *, *)/g," "):I.dashStyle="",I.endcap=t.lineCap.replace("butt","flat"),I.joinstyle=t.lineJoin):I&&(C.removeChild(I),g._stroke=null),t.fill?(e||(e=g._fill=Ft("fill")),C.appendChild(e),e.color=t.fillColor||t.color,e.opacity=t.fillOpacity):e&&(C.removeChild(e),g._fill=null)},_updateCircle:function(g){var I=g._point.round(),e=Math.round(g._radius),t=Math.round(g._radiusY||e);this._setPath(g,g._empty()?"M0 0":"AL "+I.x+","+I.y+" "+e+","+t+" 0,23592600")},_setPath:function(g,I){g._path.v=I},_bringToFront:function(g){tI(g._container)},_bringToBack:function(g){CI(g._container)}},nt=Gg?Ft:O,Ut=tt.extend({getEvents:function(){var g=tt.prototype.getEvents.call(this);return g.zoomstart=this._onZoomStart,g},_initContainer:function(){this._container=nt("svg"),this._container.setAttribute("pointer-events","none"),this._rootGroup=nt("g"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){II(this._container),RI(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_onZoomStart:function(){this._update()},_update:function(){if(!this._map._animatingZoom||!this._bounds){tt.prototype._update.call(this);var g=this._bounds,I=g.getSize(),e=this._container;this._svgSize&&this._svgSize.equals(I)||(this._svgSize=I,e.setAttribute("width",I.x),e.setAttribute("height",I.y)),AI(e,g.min),e.setAttribute("viewBox",[g.min.x,g.min.y,I.x,I.y].join(" ")),this.fire("update")}},_initPath:function(g){var I=g._path=nt("path");g.options.className&&FI(I,g.options.className),g.options.interactive&&FI(I,"leaflet-interactive"),this._updateStyle(g),this._layers[Q(g)]=g},_addPath:function(g){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(g._path),g.addInteractiveTarget(g._path)},_removePath:function(g){II(g._path),g.removeInteractiveTarget(g._path),delete this._layers[Q(g)]},_updatePath:function(g){g._project(),g._update()},_updateStyle:function(g){var I=g._path,e=g.options;I&&(e.stroke?(I.setAttribute("stroke",e.color),I.setAttribute("stroke-opacity",e.opacity),I.setAttribute("stroke-width",e.weight),I.setAttribute("stroke-linecap",e.lineCap),I.setAttribute("stroke-linejoin",e.lineJoin),e.dashArray?I.setAttribute("stroke-dasharray",e.dashArray):I.removeAttribute("stroke-dasharray"),e.dashOffset?I.setAttribute("stroke-dashoffset",e.dashOffset):I.removeAttribute("stroke-dashoffset")):I.setAttribute("stroke","none"),e.fill?(I.setAttribute("fill",e.fillColor||e.color),I.setAttribute("fill-opacity",e.fillOpacity),I.setAttribute("fill-rule",e.fillRule||"evenodd")):I.setAttribute("fill","none"))},_updatePoly:function(g,I){this._setPath(g,K(g._parts,I))},_updateCircle:function(g){var I=g._point,e=Math.max(Math.round(g._radius),1),t="a"+e+","+(Math.max(Math.round(g._radiusY),1)||e)+" 0 1,0 ",C=g._empty()?"M0 0":"M"+(I.x-e)+","+I.y+t+2*e+",0 "+t+2*-e+",0 ";this._setPath(g,C)},_setPath:function(g,I){g._path.setAttribute("d",I)},_bringToFront:function(g){tI(g._path)},_bringToBack:function(g){CI(g._path)}});function st(g){return Sg||Gg?new Ut(g):null}Gg&&Ut.include(Bt),wI.include({getRenderer:function(g){var I=g.options.renderer||this._getPaneRenderer(g.options.pane)||this.options.renderer||this._renderer;return I||(I=this._renderer=this._createRenderer()),this.hasLayer(I)||this.addLayer(I),I},_getPaneRenderer:function(g){if("overlayPane"===g||void 0===g)return!1;var I=this._paneRenderers[g];return void 0===I&&(I=this._createRenderer({pane:g}),this._paneRenderers[g]=I),I},_createRenderer:function(g){return this.options.preferCanvas&&Qt(g)||st(g)}});var it=Ee.extend({initialize:function(g,I){Ee.prototype.initialize.call(this,this._boundsToLatLngs(g),I)},setBounds:function(g){return this.setLatLngs(this._boundsToLatLngs(g))},_boundsToLatLngs:function(g){return[(g=X(g)).getSouthWest(),g.getNorthWest(),g.getNorthEast(),g.getSouthEast()]}});Ut.create=nt,Ut.pointsToPath=K,Ne.geometryToLayer=We,Ne.coordsToLatLng=Xe,Ne.coordsToLatLngs=Je,Ne.latLngToCoords=ve,Ne.latLngsToCoords=ke,Ne.getFeature=He,Ne.asFeature=Me,wI.mergeOptions({boxZoom:!0});var ct=_I.extend({initialize:function(g){this._map=g,this._container=g._container,this._pane=g._panes.overlayPane,this._resetStateTimeout=0,g.on("unload",this._destroy,this)},addHooks:function(){mI(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){RI(this._container,"mousedown",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){II(this._pane),delete this._pane},_resetState:function(){this._resetStateTimeout=0,this._moved=!1},_clearDeferredResetState:function(){0!==this._resetStateTimeout&&(clearTimeout(this._resetStateTimeout),this._resetStateTimeout=0)},_onMouseDown:function(g){if(!g.shiftKey||1!==g.which&&1!==g.button)return!1;this._clearDeferredResetState(),this._resetState(),Hg(),rI(),this._startPoint=this._map.mouseEventToContainerPoint(g),mI(document,{contextmenu:NI,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(g){this._moved||(this._moved=!0,this._box=gI("div","leaflet-zoom-box",this._container),FI(this._container,"leaflet-crosshair"),this._map.fire("boxzoomstart")),this._point=this._map.mouseEventToContainerPoint(g);var I=new N(this._point,this._startPoint),e=I.getSize();AI(this._box,I.min),this._box.style.width=e.x+"px",this._box.style.height=e.y+"px"},_finish:function(){this._moved&&(II(this._box),BI(this._container,"leaflet-crosshair")),Mg(),oI(),RI(document,{contextmenu:NI,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(g){if((1===g.which||1===g.button)&&(this._finish(),this._moved)){this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(t(this._resetState,this),0);var I=new f(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point));this._map.fitBounds(I).fire("boxzoomend",{boxZoomBounds:I})}},_onKeyDown:function(g){27===g.keyCode&&this._finish()}});wI.addInitHook("addHandler","boxZoom",ct),wI.mergeOptions({doubleClickZoom:!0});var At=_I.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick,this)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick,this)},_onDoubleClick:function(g){var I=this._map,e=I.getZoom(),t=I.options.zoomDelta,C=g.originalEvent.shiftKey?e-t:e+t;"center"===I.options.doubleClickZoom?I.setZoom(C):I.setZoomAround(g.containerPoint,C)}});wI.addInitHook("addHandler","doubleClickZoom",At),wI.mergeOptions({dragging:!0,inertia:!Ig,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0});var lt=_I.extend({addHooks:function(){if(!this._draggable){var g=this._map;this._draggable=new te(g._mapPane,g._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),this._draggable.on("predrag",this._onPreDragLimit,this),g.options.worldCopyJump&&(this._draggable.on("predrag",this._onPreDragWrap,this),g.on("zoomend",this._onZoomEnd,this),g.whenReady(this._onZoomEnd,this))}FI(this._map._container,"leaflet-grab leaflet-touch-drag"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){BI(this._map._container,"leaflet-grab"),BI(this._map._container,"leaflet-touch-drag"),this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},moving:function(){return this._draggable&&this._draggable._moving},_onDragStart:function(){var g=this._map;if(g._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity){var I=X(this._map.options.maxBounds);this._offsetLimit=W(this._map.latLngToContainerPoint(I.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(I.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))}else this._offsetLimit=null;g.fire("movestart").fire("dragstart"),g.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(g){if(this._map.options.inertia){var I=this._lastTime=+new Date,e=this._lastPos=this._draggable._absPos||this._draggable._newPos;this._positions.push(e),this._times.push(I),this._prunePositions(I)}this._map.fire("move",g).fire("drag",g)},_prunePositions:function(g){for(;this._positions.length>1&&g-this._times[0]>50;)this._positions.shift(),this._times.shift()},_onZoomEnd:function(){var g=this._map.getSize().divideBy(2),I=this._map.latLngToLayerPoint([0,0]);this._initialWorldOffset=I.subtract(g).x,this._worldWidth=this._map.getPixelWorldBounds().getSize().x},_viscousLimit:function(g,I){return g-(g-I)*this._viscosity},_onPreDragLimit:function(){if(this._viscosity&&this._offsetLimit){var g=this._draggable._newPos.subtract(this._draggable._startPos),I=this._offsetLimit;g.x<I.min.x&&(g.x=this._viscousLimit(g.x,I.min.x)),g.y<I.min.y&&(g.y=this._viscousLimit(g.y,I.min.y)),g.x>I.max.x&&(g.x=this._viscousLimit(g.x,I.max.x)),g.y>I.max.y&&(g.y=this._viscousLimit(g.y,I.max.y)),this._draggable._newPos=this._draggable._startPos.add(g)}},_onPreDragWrap:function(){var g=this._worldWidth,I=Math.round(g/2),e=this._initialWorldOffset,t=this._draggable._newPos.x,C=(t-I+e)%g+I-e,Q=(t+I+e)%g-I-e,F=Math.abs(C+e)<Math.abs(Q+e)?C:Q;this._draggable._absPos=this._draggable._newPos.clone(),this._draggable._newPos.x=F},_onDragEnd:function(g){var I=this._map,e=I.options,t=!e.inertia||this._times.length<2;if(I.fire("dragend",g),t)I.fire("moveend");else{this._prunePositions(+new Date);var C=this._lastPos.subtract(this._positions[0]),Q=(this._lastTime-this._times[0])/1e3,F=e.easeLinearity,B=C.multiplyBy(F/Q),n=B.distanceTo([0,0]),U=Math.min(e.inertiaMaxSpeed,n),s=B.multiplyBy(U/n),i=U/(e.inertiaDeceleration*F),c=s.multiplyBy(-i/2).round();c.x||c.y?(c=I._limitOffset(c,I.options.maxBounds),x((function(){I.panBy(c,{duration:i,easeLinearity:F,noMoveStart:!0,animate:!0})}))):I.fire("moveend")}}});wI.addInitHook("addHandler","dragging",lt),wI.mergeOptions({keyboard:!0,keyboardPanDelta:80});var at=_I.extend({keyCodes:{left:[37],right:[39],down:[40],up:[38],zoomIn:[187,107,61,171],zoomOut:[189,109,54,173]},initialize:function(g){this._map=g,this._setPanDelta(g.options.keyboardPanDelta),this._setZoomDelta(g.options.zoomDelta)},addHooks:function(){var g=this._map._container;g.tabIndex<=0&&(g.tabIndex="0"),mI(g,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.on({focus:this._addHooks,blur:this._removeHooks},this)},removeHooks:function(){this._removeHooks(),RI(this._map._container,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.off({focus:this._addHooks,blur:this._removeHooks},this)},_onMouseDown:function(){if(!this._focused){var g=document.body,I=document.documentElement,e=g.scrollTop||I.scrollTop,t=g.scrollLeft||I.scrollLeft;this._map._container.focus(),window.scrollTo(t,e)}},_onFocus:function(){this._focused=!0,this._map.fire("focus")},_onBlur:function(){this._focused=!1,this._map.fire("blur")},_setPanDelta:function(g){var I,e,t=this._panKeys={},C=this.keyCodes;for(I=0,e=C.left.length;I<e;I++)t[C.left[I]]=[-1*g,0];for(I=0,e=C.right.length;I<e;I++)t[C.right[I]]=[g,0];for(I=0,e=C.down.length;I<e;I++)t[C.down[I]]=[0,g];for(I=0,e=C.up.length;I<e;I++)t[C.up[I]]=[0,-1*g]},_setZoomDelta:function(g){var I,e,t=this._zoomKeys={},C=this.keyCodes;for(I=0,e=C.zoomIn.length;I<e;I++)t[C.zoomIn[I]]=g;for(I=0,e=C.zoomOut.length;I<e;I++)t[C.zoomOut[I]]=-g},_addHooks:function(){mI(document,"keydown",this._onKeyDown,this)},_removeHooks:function(){RI(document,"keydown",this._onKeyDown,this)},_onKeyDown:function(g){if(!(g.altKey||g.ctrlKey||g.metaKey)){var I,e=g.keyCode,t=this._map;if(e in this._panKeys)t._panAnim&&t._panAnim._inProgress||(I=this._panKeys[e],g.shiftKey&&(I=E(I).multiplyBy(3)),t.panBy(I),t.options.maxBounds&&t.panInsideBounds(t.options.maxBounds));else if(e in this._zoomKeys)t.setZoom(t.getZoom()+(g.shiftKey?3:1)*this._zoomKeys[e]);else{if(27!==e||!t._popup||!t._popup.options.closeOnEscapeKey)return;t.closePopup()}NI(g)}}});wI.addInitHook("addHandler","keyboard",at),wI.mergeOptions({scrollWheelZoom:!0,wheelDebounceTime:40,wheelPxPerZoomLevel:60});var rt=_I.extend({addHooks:function(){mI(this._map._container,"wheel",this._onWheelScroll,this),this._delta=0},removeHooks:function(){RI(this._map._container,"wheel",this._onWheelScroll,this)},_onWheelScroll:function(g){var I=XI(g),e=this._map.options.wheelDebounceTime;this._delta+=I,this._lastMousePos=this._map.mouseEventToContainerPoint(g),this._startTime||(this._startTime=+new Date);var C=Math.max(e-(+new Date-this._startTime),0);clearTimeout(this._timer),this._timer=setTimeout(t(this._performZoom,this),C),NI(g)},_performZoom:function(){var g=this._map,I=g.getZoom(),e=this._map.options.zoomSnap||0;g._stop();var t=this._delta/(4*this._map.options.wheelPxPerZoomLevel),C=4*Math.log(2/(1+Math.exp(-Math.abs(t))))/Math.LN2,Q=e?Math.ceil(C/e)*e:C,F=g._limitZoom(I+(this._delta>0?Q:-Q))-I;this._delta=0,this._startTime=null,F&&("center"===g.options.scrollWheelZoom?g.setZoom(I+F):g.setZoomAround(this._lastMousePos,I+F))}});wI.addInitHook("addHandler","scrollWheelZoom",rt),wI.mergeOptions({tap:!0,tapTolerance:15});var ot=_I.extend({addHooks:function(){mI(this._map._container,"touchstart",this._onDown,this)},removeHooks:function(){RI(this._map._container,"touchstart",this._onDown,this)},_onDown:function(g){if(g.touches){if(EI(g),this._fireClick=!0,g.touches.length>1)return this._fireClick=!1,void clearTimeout(this._holdTimeout);var I=g.touches[0],e=I.target;this._startPos=this._newPos=new D(I.clientX,I.clientY),e.tagName&&"a"===e.tagName.toLowerCase()&&FI(e,"leaflet-active"),this._holdTimeout=setTimeout(t((function(){this._isTapValid()&&(this._fireClick=!1,this._onUp(),this._simulateEvent("contextmenu",I))}),this),1e3),this._simulateEvent("mousedown",I),mI(document,{touchmove:this._onMove,touchend:this._onUp},this)}},_onUp:function(g){if(clearTimeout(this._holdTimeout),RI(document,{touchmove:this._onMove,touchend:this._onUp},this),this._fireClick&&g&&g.changedTouches){var I=g.changedTouches[0],e=I.target;e&&e.tagName&&"a"===e.tagName.toLowerCase()&&BI(e,"leaflet-active"),this._simulateEvent("mouseup",I),this._isTapValid()&&this._simulateEvent("click",I)}},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_onMove:function(g){var I=g.touches[0];this._newPos=new D(I.clientX,I.clientY),this._simulateEvent("mousemove",I)},_simulateEvent:function(g,I){var e=document.createEvent("MouseEvents");e._simulated=!0,I.target._simulatedClick=!0,e.initMouseEvent(g,!0,!0,window,1,I.screenX,I.screenY,I.clientX,I.clientY,!1,!1,!1,!1,0,null),I.target.dispatchEvent(e)}});!yg||ug&&!Bg||wI.addInitHook("addHandler","tap",ot),wI.mergeOptions({touchZoom:yg&&!Ig,bounceAtZoomLimits:!0});var dt=_I.extend({addHooks:function(){FI(this._map._container,"leaflet-touch-zoom"),mI(this._map._container,"touchstart",this._onTouchStart,this)},removeHooks:function(){BI(this._map._container,"leaflet-touch-zoom"),RI(this._map._container,"touchstart",this._onTouchStart,this)},_onTouchStart:function(g){var I=this._map;if(g.touches&&2===g.touches.length&&!I._animatingZoom&&!this._zooming){var e=I.mouseEventToContainerPoint(g.touches[0]),t=I.mouseEventToContainerPoint(g.touches[1]);this._centerPoint=I.getSize()._divideBy(2),this._startLatLng=I.containerPointToLatLng(this._centerPoint),"center"!==I.options.touchZoom&&(this._pinchStartLatLng=I.containerPointToLatLng(e.add(t)._divideBy(2))),this._startDist=e.distanceTo(t),this._startZoom=I.getZoom(),this._moved=!1,this._zooming=!0,I._stop(),mI(document,"touchmove",this._onTouchMove,this),mI(document,"touchend",this._onTouchEnd,this),EI(g)}},_onTouchMove:function(g){if(g.touches&&2===g.touches.length&&this._zooming){var I=this._map,e=I.mouseEventToContainerPoint(g.touches[0]),C=I.mouseEventToContainerPoint(g.touches[1]),Q=e.distanceTo(C)/this._startDist;if(this._zoom=I.getScaleZoom(Q,this._startZoom),!I.options.bounceAtZoomLimits&&(this._zoom<I.getMinZoom()&&Q<1||this._zoom>I.getMaxZoom()&&Q>1)&&(this._zoom=I._limitZoom(this._zoom)),"center"===I.options.touchZoom){if(this._center=this._startLatLng,1===Q)return}else{var F=e._add(C)._divideBy(2)._subtract(this._centerPoint);if(1===Q&&0===F.x&&0===F.y)return;this._center=I.unproject(I.project(this._pinchStartLatLng,this._zoom).subtract(F),this._zoom)}this._moved||(I._moveStart(!0,!1),this._moved=!0),R(this._animRequest);var B=t(I._move,I,this._center,this._zoom,{pinch:!0,round:!1});this._animRequest=x(B,this,!0),EI(g)}},_onTouchEnd:function(){this._moved&&this._zooming?(this._zooming=!1,R(this._animRequest),RI(document,"touchmove",this._onTouchMove,this),RI(document,"touchend",this._onTouchEnd,this),this._map.options.zoomAnimation?this._map._animateZoom(this._center,this._map._limitZoom(this._zoom),!0,this._map.options.zoomSnap):this._map._resetView(this._center,this._map._limitZoom(this._zoom))):this._zooming=!1}});wI.addInitHook("addHandler","touchZoom",dt),wI.BoxZoom=ct,wI.DoubleClickZoom=At,wI.Drag=lt,wI.Keyboard=at,wI.ScrollWheelZoom=rt,wI.Tap=ot,wI.TouchZoom=dt,g.version="1.7.1",g.Control=TI,g.control=zI,g.Browser=Vg,g.Evented=h,g.Mixin=$I,g.Util=S,g.Class=G,g.Handler=_I,g.extend=I,g.bind=t,g.stamp=Q,g.setOptions=c,g.DomEvent=MI,g.DomUtil=ZI,g.PosAnimation=YI,g.Draggable=te,g.LineUtil=Ae,g.PolyUtil=ae,g.Point=D,g.point=E,g.Bounds=N,g.bounds=W,g.Transformation=Y,g.transformation=w,g.Projection=de,g.LatLng=J,g.latLng=v,g.LatLngBounds=f,g.latLngBounds=X,g.CRS=k,g.GeoJSON=Ne,g.geoJSON=we,g.geoJson=Te,g.Layer=Ze,g.LayerGroup=me,g.layerGroup=function(g,I){return new me(g,I)},g.FeatureGroup=xe,g.featureGroup=function(g,I){return new xe(g,I)},g.ImageOverlay=ze,g.imageOverlay=function(g,I,e){return new ze(g,I,e)},g.VideoOverlay=Oe,g.videoOverlay=function(g,I,e){return new Oe(g,I,e)},g.SVGOverlay=Ke,g.svgOverlay=function(g,I,e){return new Ke(g,I,e)},g.DivOverlay=je,g.Popup=Pe,g.popup=function(g,I){return new Pe(g,I)},g.Tooltip=_e,g.tooltip=function(g,I){return new _e(g,I)},g.Icon=Re,g.icon=function(g){return new Re(g)},g.DivIcon=qe,g.divIcon=function(g){return new qe(g)},g.Marker=Le,g.marker=function(g,I){return new Le(g,I)},g.TileLayer=gt,g.tileLayer=It,g.GridLayer=$e,g.gridLayer=function(g){return new $e(g)},g.SVG=Ut,g.svg=st,g.Renderer=tt,g.Canvas=Ct,g.canvas=Qt,g.Path=Ve,g.CircleMarker=he,g.circleMarker=function(g,I){return new he(g,I)},g.Circle=De,g.circle=function(g,I,e){return new De(g,I,e)},g.Polyline=pe,g.polyline=function(g,I){return new pe(g,I)},g.Polygon=Ee,g.polygon=function(g,I){return new Ee(g,I)},g.Rectangle=it,g.rectangle=function(g,I){return new it(g,I)},g.Map=wI,g.map=function(g,I){return new wI(g,I)};var ut=window.L;g.noConflict=function(){return window.L=ut,this},window.L=g}(I)},function(g,I,e){window,g.exports=function(g){var I={};function e(t){if(I[t])return I[t].exports;var C=I[t]={i:t,l:!1,exports:{}};return g[t].call(C.exports,C,C.exports,e),C.l=!0,C.exports}return e.m=g,e.c=I,e.d=function(g,I,t){e.o(g,I)||Object.defineProperty(g,I,{enumerable:!0,get:t})},e.r=function(g){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(g,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(g,"__esModule",{value:!0})},e.t=function(g,I){if(1&I&&(g=e(g)),8&I)return g;if(4&I&&"object"==typeof g&&g&&g.__esModule)return g;var t=Object.create(null);if(e.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:g}),2&I&&"string"!=typeof g)for(var C in g)e.d(t,C,function(I){return g[I]}.bind(null,C));return t},e.n=function(g){var I=g&&g.__esModule?function(){return g.default}:function(){return g};return e.d(I,"a",I),I},e.o=function(g,I){return Object.prototype.hasOwnProperty.call(g,I)},e.p="",e(e.s=0)}([function(g,I,e){g.exports=e(1)},function(g,I,e){"use strict";function t(g){return function(g){if(Array.isArray(g))return C(g)}(g)||function(g){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(g))return Array.from(g)}(g)||function(g,I){if(g){if("string"==typeof g)return C(g,I);var e=Object.prototype.toString.call(g).slice(8,-1);return"Object"===e&&g.constructor&&(e=g.constructor.name),"Map"===e||"Set"===e?Array.from(e):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?C(g,I):void 0}}(g)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function C(g,I){(null==I||I>g.length)&&(I=g.length);for(var e=0,t=new Array(I);e<I;e++)t[e]=g[e];return t}e.r(I);var Q=!1,F=!1,B=function(){return Q||console.warn("Pixel not initialized before using call ReactSnapchatPixel.init with required params"),Q},n=function(){for(var g,I=arguments.length,e=new Array(I),C=0;C<I;C++)e[C]=arguments[C];(g=console).info.apply(g,t(["[react-snapchat-pixel]"].concat(e)))},U={debug:!1};I.default={init:function(g){var I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:U;!function(g,I,e){if(!g.snaptr){var t=g.snaptr=function(){t.handleRequest?t.handleRequest.apply(t,arguments):t.queue.push(arguments)};t.queue=[];var C="script",Q=I.createElement(C);Q.async=!0,Q.src="https://sc-static.net/scevent.min.js";var F=I.getElementsByTagName(C)[0];F.parentNode.insertBefore(Q,F)}}(window,document),g?(snaptr("init",g,I),Q=!0,F=e.debug):console.warn("Please insert pixel id for initializing")},pageView:function(){B()&&(snaptr("track","PAGE_VIEW"),F&&n("called snaptr('track', 'PageView');"))},track:function(g,I){B()&&(snaptr("track",g,I),F&&(n("called snaptr('track', '".concat(g,"');")),I&&n("with data",I)))},snaptr:function(g){function I(){return g.apply(this,arguments)}return I.toString=function(){return g.toString()},I}((function(){if(B()){for(var g=arguments.length,I=new Array(g),e=0;e<g;e++)I[e]=arguments[e];snaptr.apply(void 0,I),F&&(n("called snaptr('".concat(I.slice(0,2).join("', '"),"')")),I[2]&&n("with data",I[2]))}}))}}])},function(g,I,e){"use strict";function t(g){return g&&g.ownerDocument||document}e.d(I,"a",(function(){return t}))},function(g,I,e){"use strict";e.r(I),e.d(I,"hexToRgb",(function(){return t.g})),e.d(I,"rgbToHex",(function(){return t.k})),e.d(I,"hslToRgb",(function(){return t.h})),e.d(I,"decomposeColor",(function(){return t.b})),e.d(I,"recomposeColor",(function(){return t.j})),e.d(I,"getContrastRatio",(function(){return t.e})),e.d(I,"getLuminance",(function(){return t.f})),e.d(I,"emphasize",(function(){return t.c})),e.d(I,"fade",(function(){return t.d})),e.d(I,"darken",(function(){return t.a})),e.d(I,"lighten",(function(){return t.i})),e.d(I,"createMuiTheme",(function(){return C.a})),e.d(I,"unstable_createMuiStrictModeTheme",(function(){return F})),e.d(I,"createStyles",(function(){return B.a})),e.d(I,"makeStyles",(function(){return n.a})),e.d(I,"responsiveFontSizes",(function(){return d})),e.d(I,"styled",(function(){return u.a})),e.d(I,"easing",(function(){return y.c})),e.d(I,"duration",(function(){return y.b})),e.d(I,"useTheme",(function(){return b.a})),e.d(I,"withStyles",(function(){return Z.a})),e.d(I,"withTheme",(function(){return R})),e.d(I,"createGenerateClassName",(function(){return S.a})),e.d(I,"jssPreset",(function(){return G.a})),e.d(I,"ServerStyleSheets",(function(){return L.a})),e.d(I,"StylesProvider",(function(){return V.b})),e.d(I,"MuiThemeProvider",(function(){return h.a})),e.d(I,"ThemeProvider",(function(){return h.a}));var t=e(38),C=e(297),Q=e(556);function F(g){for(var I=arguments.length,e=new Array(I>1?I-1:0),t=1;t<I;t++)e[t-1]=arguments[t];return C.a.apply(void 0,[Object(Q.a)({unstable_strictMode:!0},g)].concat(e))}var B=e(676),n=e(677),U=e(5),s=e(427),i=e(48);function c(g){return String(parseFloat(g)).length===String(g).length}function A(g){return parseFloat(g)}function l(g){return function(I,e){var t=String(I).match(/[\d.\-+]*\s*(.*)/)[1]||"";if(t===e)return I;var C=A(I);if("px"!==t)if("em"===t)C=A(I)*A(g);else if("rem"===t)return C=A(I)*A(g),I;var Q=C;if("px"!==e)if("em"===e)Q=C/A(g);else{if("rem"!==e)return I;Q=C/A(g)}return parseFloat(Q.toFixed(5))+e}}function a(g){var I=g.size,e=g.grid,t=I-I%e,C=t+e;return I-t<C-I?t:C}function r(g){var I=g.lineHeight;return g.pixels/(I*g.htmlFontSize)}function o(g){var I=g.cssProperty,e=g.min,t=g.max,C=g.unit,Q=void 0===C?"rem":C,F=g.breakpoints,B=void 0===F?[600,960,1280]:F,n=g.transform,U=void 0===n?null:n,s=Object(i.a)({},I,"".concat(e).concat(Q)),c=(t-e)/B[B.length-1];return B.forEach((function(g){var t=e+c*g;null!==U&&(t=U(t)),s["@media (min-width:".concat(g,"px)")]=Object(i.a)({},I,"".concat(Math.round(1e4*t)/1e4).concat(Q))})),s}function d(g){var I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},e=I.breakpoints,t=void 0===e?["sm","md","lg"]:e,C=I.disableAlign,Q=void 0!==C&&C,F=I.factor,B=void 0===F?2:F,n=I.variants,i=void 0===n?["h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","caption","button","overline"]:n,A=Object(U.a)({},g);A.typography=Object(U.a)({},A.typography);var d=A.typography,u=l(d.htmlFontSize),y=t.map((function(g){return A.breakpoints.values[g]}));return i.forEach((function(g){var I=d[g],e=parseFloat(u(I.fontSize,"rem"));if(!(e<=1)){var t=e,C=1+(t-1)/B,F=I.lineHeight;if(!c(F)&&!Q)throw new Error(Object(s.a)(6));c(F)||(F=parseFloat(u(F,"rem"))/parseFloat(e));var n=null;Q||(n=function(g){return a({size:g,grid:r({pixels:4,lineHeight:F,htmlFontSize:d.htmlFontSize})})}),d[g]=Object(U.a)({},I,o({cssProperty:"fontSize",min:C,max:t,unit:"rem",breakpoints:y,transform:n}))}})),A}var u=e(424),y=e(87),b=e(77),Z=e(21),m=e(401),x=e(196),R=Object(m.b)({defaultTheme:x.a}),S=e(924),G=e(928),L=e(1735),V=e(350),h=e(1736)},function(g,I,e){"use strict";function t(g){switch(Object.prototype.toString.call(g)){case"[object Error]":case"[object Exception]":case"[object DOMException]":return!0;default:return a(g,Error)}}function C(g){return"[object ErrorEvent]"===Object.prototype.toString.call(g)}function Q(g){return"[object DOMError]"===Object.prototype.toString.call(g)}function F(g){return"[object DOMException]"===Object.prototype.toString.call(g)}function B(g){return"[object String]"===Object.prototype.toString.call(g)}function n(g){return null===g||"object"!==typeof g&&"function"!==typeof g}function U(g){return"[object Object]"===Object.prototype.toString.call(g)}function s(g){return"undefined"!==typeof Event&&a(g,Event)}function i(g){return"undefined"!==typeof Element&&a(g,Element)}function c(g){return"[object RegExp]"===Object.prototype.toString.call(g)}function A(g){return Boolean(g&&g.then&&"function"===typeof g.then)}function l(g){return U(g)&&"nativeEvent"in g&&"preventDefault"in g&&"stopPropagation"in g}function a(g,I){try{return g instanceof I}catch(e){return!1}}e.d(I,"d",(function(){return t})),e.d(I,"e",(function(){return C})),e.d(I,"a",(function(){return Q})),e.d(I,"b",(function(){return F})),e.d(I,"k",(function(){return B})),e.d(I,"i",(function(){return n})),e.d(I,"h",(function(){return U})),e.d(I,"f",(function(){return s})),e.d(I,"c",(function(){return i})),e.d(I,"j",(function(){return c})),e.d(I,"m",(function(){return A})),e.d(I,"l",(function(){return l})),e.d(I,"g",(function(){return a}))},function(g,I,e){var t=e(68),C=e(614),Q=e(60),F=e(188),B=Object.defineProperty;I.f=t?B:function(g,I,e){if(Q(g),I=F(I,!0),Q(e),C)try{return B(g,I,e)}catch(t){}if("get"in e||"set"in e)throw TypeError("Accessors not supported");return"value"in e&&(g[I]=e.value),g}},function(g,I,e){"use strict";e.d(I,"a",(function(){return Q}));var t=e(470),C=(e(0),e(196));function Q(){return Object(t.a)()||C.a}},function(g,I,e){"use strict";e.d(I,"a",(function(){return B}));var t=e(5),C=e(0),Q=e.n(C),F=e(247);function B(g,I){var e=function(I,e){return Q.a.createElement(F.a,Object(t.a)({ref:e},I),g)};return e.muiName=F.a.muiName,Q.a.memo(Q.a.forwardRef(e))}},,,,,,,,function(g,I,e){"use strict";e.d(I,"a",(function(){return B}));var t=e(5),C=e(0),Q=e.n(C),F=e(247);function B(g,I){var e=Q.a.memo(Q.a.forwardRef((function(I,e){return Q.a.createElement(F.a,Object(t.a)({ref:e},I),g)})));return e.muiName=F.a.muiName,e}},function(g,I,e){"use strict";e.d(I,"c",(function(){return C})),e.d(I,"b",(function(){return Q}));var t=e(16),C={easeInOut:"cubic-bezier(0.4, 0, 0.2, 1)",easeOut:"cubic-bezier(0.0, 0, 0.2, 1)",easeIn:"cubic-bezier(0.4, 0, 1, 1)",sharp:"cubic-bezier(0.4, 0, 0.6, 1)"},Q={shortest:150,shorter:200,short:250,standard:300,complex:375,enteringScreen:225,leavingScreen:195};function F(g){return"".concat(Math.round(g),"ms")}I.a={easing:C,duration:Q,create:function(){var g=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["all"],I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},e=I.duration,B=void 0===e?Q.standard:e,n=I.easing,U=void 0===n?C.easeInOut:n,s=I.delay,i=void 0===s?0:s;Object(t.a)(I,["duration","easing","delay"]);return(Array.isArray(g)?g:[g]).map((function(g){return"".concat(g," ").concat("string"===typeof B?B:F(B)," ").concat(U," ").concat("string"===typeof i?i:F(i))})).join(",")},getAutoHeightDuration:function(g){if(!g)return 0;var I=g/36;return Math.round(10*(4+15*Math.pow(I,.25)+I/5))}}},,,function(g,I){var e={}.hasOwnProperty;g.exports=function(g,I){return e.call(g,I)}},function(g,I,e){var t=e(134);g.exports=function(g){return Object(t(g))}},function(g,I){var e,t,C=g.exports={};function Q(){throw new Error("setTimeout has not been defined")}function F(){throw new Error("clearTimeout has not been defined")}function B(g){if(e===setTimeout)return setTimeout(g,0);if((e===Q||!e)&&setTimeout)return e=setTimeout,setTimeout(g,0);try{return e(g,0)}catch(I){try{return e.call(null,g,0)}catch(I){return e.call(this,g,0)}}}!function(){try{e="function"===typeof setTimeout?setTimeout:Q}catch(g){e=Q}try{t="function"===typeof clearTimeout?clearTimeout:F}catch(g){t=F}}();var n,U=[],s=!1,i=-1;function c(){s&&n&&(s=!1,n.length?U=n.concat(U):i=-1,U.length&&A())}function A(){if(!s){var g=B(c);s=!0;for(var I=U.length;I;){for(n=U,U=[];++i<I;)n&&n[i].run();i=-1,I=U.length}n=null,s=!1,function(g){if(t===clearTimeout)return clearTimeout(g);if((t===F||!t)&&clearTimeout)return t=clearTimeout,clearTimeout(g);try{t(g)}catch(I){try{return t.call(null,g)}catch(I){return t.call(this,g)}}}(g)}}function l(g,I){this.fun=g,this.array=I}function a(){}C.nextTick=function(g){var I=new Array(arguments.length-1);if(arguments.length>1)for(var e=1;e<arguments.length;e++)I[e-1]=arguments[e];U.push(new l(g,I)),1!==U.length||s||B(A)},l.prototype.run=function(){this.fun.apply(null,this.array)},C.title="browser",C.browser=!0,C.env={},C.argv=[],C.version="",C.versions={},C.on=a,C.addListener=a,C.once=a,C.off=a,C.removeListener=a,C.removeAllListeners=a,C.emit=a,C.prependListener=a,C.prependOnceListener=a,C.listeners=function(g){return[]},C.binding=function(g){throw new Error("process.binding is not supported")},C.cwd=function(){return"/"},C.chdir=function(g){throw new Error("process.chdir is not supported")},C.umask=function(){return 0}},function(g,I,e){"use strict";e.r(I);var t=e(368);e.d(I,"default",(function(){return t.a}))},,function(g,I,e){"use strict";var t=e(0),C=e.n(t),Q=e(4),F=e.n(Q);var B=function(g,I){return g(I={exports:{}},I.exports),I.exports}((function(g){!function(){var I={}.hasOwnProperty;function e(){for(var g=[],t=0;t<arguments.length;t++){var C=arguments[t];if(C){var Q=typeof C;if("string"===Q||"number"===Q)g.push(C);else if(Array.isArray(C)&&C.length){var F=e.apply(null,C);F&&g.push(F)}else if("object"===Q)for(var B in C)I.call(C,B)&&C[B]&&g.push(B)}}return g.join(" ")}g.exports?(e.default=e,g.exports=e):window.classNames=e}()}));function n(g,I,e){var t,C,Q,F,B;function n(){var U=Date.now()-F;U<I&&U>=0?t=setTimeout(n,I-U):(t=null,e||(B=g.apply(Q,C),Q=C=null))}null==I&&(I=100);var U=function(){Q=this,C=arguments,F=Date.now();var U=e&&!t;return t||(t=setTimeout(n,I)),U&&(B=g.apply(Q,C),Q=C=null),B};return U.clear=function(){t&&(clearTimeout(t),t=null)},U.flush=function(){t&&(B=g.apply(Q,C),Q=C=null,clearTimeout(t),t=null)},U}n.debounce=n;var U=n;!function(g,I){void 0===I&&(I={});var e=I.insertAt;if(g&&"undefined"!==typeof document){var t=document.head||document.getElementsByTagName("head")[0],C=document.createElement("style");C.type="text/css","top"===e&&t.firstChild?t.insertBefore(C,t.firstChild):t.appendChild(C),C.styleSheet?C.styleSheet.cssText=g:C.appendChild(document.createTextNode(g))}}(".indiana-scroll-container {\n  overflow: auto;\n}\n  .indiana-scroll-container--dragging > * {\n      pointer-events: none;\n      cursor: -webkit-grab;\n      cursor: grab;\n    }\n  .indiana-scroll-container--hide-scrollbars {\n    overflow: hidden;\n    overflow: -moz-scrollbars-none;\n    -ms-overflow-style: none;\n    scrollbar-width: none;\n  }\n  .indiana-scroll-container--hide-scrollbars::-webkit-scrollbar {\n      display: none !important;\n      height: 0 !important;\n      width: 0 !important;\n      background: transparent !important;\n      -webkit-appearance: none !important;\n    }\n  .indiana-scroll-container--native-scroll {\n    overflow: auto;\n  }\n\n.indiana-dragging {\n  cursor: -webkit-grab !important;\n  cursor: grab !important;\n}\n");var s,i=function(){function g(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}return function(I,e,t){return e&&g(I.prototype,e),t&&g(I,t),I}}(),c=(s="indiana-scroll-container",function(g,I){if(!g)return s;var e;"string"===typeof g?e=g:I=g;var t=s;return e&&(t+="__"+e),t+(I?Object.keys(I).reduce((function(g,e){var C=I[e];return C&&(g+=" "+("boolean"===typeof C?t+"--"+e:t+"--"+e+"_"+C)),g}),""):"")}),A=function(g){function I(g){!function(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}(this,I);var e=function(g,I){if(!g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!I||"object"!==typeof I&&"function"!==typeof I?g:I}(this,(I.__proto__||Object.getPrototypeOf(I)).call(this,g));return e.onEndScroll=function(){e.scrolling=!1,!e.pressed&&e.started&&e.processEnd()},e.onScroll=function(g){var I=e.container.current;I.scrollLeft===e.scrollLeft&&I.scrollTop===e.scrollTop||(e.scrolling=!0,e.processScroll(g),e.onEndScroll())},e.onTouchStart=function(g){var I=e.props.nativeMobileScroll;if(e.isDraggable(g.target))if(I&&e.scrolling)e.pressed=!0;else{var t=g.touches[0];e.processClick(g,t.clientX,t.clientY),I||g.stopPropagation()}},e.onTouchEnd=function(g){var I=e.props.nativeMobileScroll;e.pressed&&(!e.started||e.scrolling&&I?e.pressed=!1:e.processEnd(),e.forceUpdate())},e.onTouchMove=function(g){var I=e.props.nativeMobileScroll;if(e.pressed&&!I){var t=g.touches[0];t&&e.processMove(g,t.clientX,t.clientY),g.preventDefault(),g.stopPropagation()}},e.onMouseDown=function(g){e.isDraggable(g.target)&&(e.processClick(g,g.clientX,g.clientY),g.preventDefault(),g.stopPropagation())},e.onMouseMove=function(g){e.pressed&&(e.processMove(g,g.clientX,g.clientY),g.preventDefault(),g.stopPropagation())},e.onMouseUp=function(g){e.pressed&&(e.started?e.processEnd():(e.pressed=!1,e.forceUpdate()),g.preventDefault(),g.stopPropagation())},e.container=C.a.createRef(),e.onEndScroll=U(e.onEndScroll,300),e.scrolling=!1,e.started=!1,e.pressed=!1,e}return function(g,I){if("function"!==typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function, not "+typeof I);g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,enumerable:!1,writable:!0,configurable:!0}}),I&&(Object.setPrototypeOf?Object.setPrototypeOf(g,I):g.__proto__=I)}(I,g),i(I,[{key:"componentDidMount",value:function(){var g=this.props.nativeMobileScroll,I=this.container.current;window.addEventListener("mouseup",this.onMouseUp),window.addEventListener("mousemove",this.onMouseMove),window.addEventListener("touchmove",this.onTouchMove,{passive:!1}),window.addEventListener("touchend",this.onTouchEnd),I.addEventListener("touchstart",this.onTouchStart,{passive:!1}),I.addEventListener("mousedown",this.onMouseDown,{passive:!1}),g&&(this.isMobile=this.isMobileDevice(),this.isMobile&&this.forceUpdate())}},{key:"componentWillUnmount",value:function(){window.removeEventListener("mouseup",this.onMouseUp),window.removeEventListener("mousemove",this.onMouseMove),window.removeEventListener("touchmove",this.onTouchMove),window.removeEventListener("touchend",this.onTouchEnd)}},{key:"getElement",value:function(){return this.container.current}},{key:"isMobileDevice",value:function(){return"undefined"!==typeof window.orientation||-1!==navigator.userAgent.indexOf("IEMobile")}},{key:"isDraggable",value:function(g){var I=this.props.ignoreElements;if(I){var e=g.closest(I);return null===e||e.contains(this.getElement())}return!0}},{key:"processClick",value:function(g,I,e){var t=this.container.current;this.scrollLeft=t.scrollLeft,this.scrollTop=t.scrollTop,this.clientX=I,this.clientY=e,this.pressed=!0}},{key:"processStart",value:function(g){var I=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],e=this.props.onStartScroll,t=this.container.current;this.started=!0,I&&document.body.classList.add("indiana-dragging"),e&&e(t.scrollLeft,t.scrollTop,t.scrollWidth,t.scrollHeight),this.forceUpdate()}},{key:"processScroll",value:function(g){if(this.started){var I=this.props.onScroll,e=this.container.current;I&&I(e.scrollLeft,e.scrollTop,e.scrollWidth,e.scrollHeight)}else this.processStart(g,!1)}},{key:"processMove",value:function(g,I,e){var t=this.props,C=t.horizontal,Q=t.vertical,F=t.activationDistance,B=t.onScroll,n=this.container.current;this.started?(C&&(n.scrollLeft-=I-this.clientX),Q&&(n.scrollTop-=e-this.clientY),B&&B(n.scrollLeft,n.scrollTop,n.scrollWidth,n.scrollHeight),this.clientX=I,this.clientY=e,this.scrollLeft=n.scrollLeft,this.scrollTop=n.scrollTop):(C&&Math.abs(I-this.clientX)>F||Q&&Math.abs(e-this.clientY)>F)&&(this.clientX=I,this.clientY=e,this.processStart())}},{key:"processEnd",value:function(g){var I=this.props.onEndScroll,e=this.container.current;this.pressed=!1,this.started=!1,this.scrolling=!1,e&&I&&I(e.scrollLeft,e.scrollTop,e.scrollWidth,e.scrollHeight),document.body.classList.remove("indiana-dragging"),this.forceUpdate()}},{key:"render",value:function(){var g=this.props,I=g.children,e=g.className,t=g.style,Q=g.hideScrollbars;return C.a.createElement("div",{className:B(e,c({dragging:this.pressed,"hide-scrollbars":Q,"native-scroll":this.isMobile})),style:t,ref:this.container,onScroll:this.onScroll},I)}}]),I}(t.PureComponent);A.propTypes={vertical:F.a.bool,horizontal:F.a.bool,hideScrollbars:F.a.bool,activationDistance:F.a.number,children:F.a.node,onStartScroll:F.a.func,onScroll:F.a.func,onEndScroll:F.a.func,className:F.a.string,style:F.a.object,ignoreElements:F.a.string,nativeMobileScroll:F.a.bool},A.defaultProps={nativeMobileScroll:!0,hideScrollbars:!0,activationDistance:10,vertical:!0,horizontal:!0,style:{}},I.a=A},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M5.88 4.12L13.76 12l-7.88 7.88L8 22l10-10L8 2z"}),"ArrowForwardIos");I.default=Q},,,function(g,I,e){"use strict";e.d(I,"a",(function(){return F}));var t=e(431);var C=e(300),Q=e(432);function F(g,I){return Object(t.a)(g)||function(g,I){if("undefined"!==typeof Symbol&&Symbol.iterator in Object(g)){var e=[],t=!0,C=!1,Q=void 0;try{for(var F,B=g[Symbol.iterator]();!(t=(F=B.next()).done)&&(e.push(F.value),!I||e.length!==I);t=!0);}catch(n){C=!0,Q=n}finally{try{t||null==B.return||B.return()}finally{if(C)throw Q}}return e}}(g,I)||Object(C.a)(g,I)||Object(Q.a)()}},function(g,I,e){"use strict";function t(g,I){if(null==g)return{};var e,t,C=function(g,I){if(null==g)return{};var e,t,C={},Q=Object.keys(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||(C[e]=g[e]);return C}(g,I);if(Object.getOwnPropertySymbols){var Q=Object.getOwnPropertySymbols(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||Object.prototype.propertyIsEnumerable.call(g,e)&&(C[e]=g[e])}return C}e.d(I,"a",(function(){return t}))},,,function(g,I,e){"use strict";(function(g){var t=e(1351),C=e(1352),Q=e(718);function F(){return n.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function B(g,I){if(F()<I)throw new RangeError("Invalid typed array length");return n.TYPED_ARRAY_SUPPORT?(g=new Uint8Array(I)).__proto__=n.prototype:(null===g&&(g=new n(I)),g.length=I),g}function n(g,I,e){if(!n.TYPED_ARRAY_SUPPORT&&!(this instanceof n))return new n(g,I,e);if("number"===typeof g){if("string"===typeof I)throw new Error("If encoding is specified then the first argument must be a string");return i(this,g)}return U(this,g,I,e)}function U(g,I,e,t){if("number"===typeof I)throw new TypeError('"value" argument must not be a number');return"undefined"!==typeof ArrayBuffer&&I instanceof ArrayBuffer?function(g,I,e,t){if(I.byteLength,e<0||I.byteLength<e)throw new RangeError("'offset' is out of bounds");if(I.byteLength<e+(t||0))throw new RangeError("'length' is out of bounds");I=void 0===e&&void 0===t?new Uint8Array(I):void 0===t?new Uint8Array(I,e):new Uint8Array(I,e,t);n.TYPED_ARRAY_SUPPORT?(g=I).__proto__=n.prototype:g=c(g,I);return g}(g,I,e,t):"string"===typeof I?function(g,I,e){"string"===typeof e&&""!==e||(e="utf8");if(!n.isEncoding(e))throw new TypeError('"encoding" must be a valid string encoding');var t=0|l(I,e),C=(g=B(g,t)).write(I,e);C!==t&&(g=g.slice(0,C));return g}(g,I,e):function(g,I){if(n.isBuffer(I)){var e=0|A(I.length);return 0===(g=B(g,e)).length||I.copy(g,0,0,e),g}if(I){if("undefined"!==typeof ArrayBuffer&&I.buffer instanceof ArrayBuffer||"length"in I)return"number"!==typeof I.length||(t=I.length)!==t?B(g,0):c(g,I);if("Buffer"===I.type&&Q(I.data))return c(g,I.data)}var t;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(g,I)}function s(g){if("number"!==typeof g)throw new TypeError('"size" argument must be a number');if(g<0)throw new RangeError('"size" argument must not be negative')}function i(g,I){if(s(I),g=B(g,I<0?0:0|A(I)),!n.TYPED_ARRAY_SUPPORT)for(var e=0;e<I;++e)g[e]=0;return g}function c(g,I){var e=I.length<0?0:0|A(I.length);g=B(g,e);for(var t=0;t<e;t+=1)g[t]=255&I[t];return g}function A(g){if(g>=F())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+F().toString(16)+" bytes");return 0|g}function l(g,I){if(n.isBuffer(g))return g.length;if("undefined"!==typeof ArrayBuffer&&"function"===typeof ArrayBuffer.isView&&(ArrayBuffer.isView(g)||g instanceof ArrayBuffer))return g.byteLength;"string"!==typeof g&&(g=""+g);var e=g.length;if(0===e)return 0;for(var t=!1;;)switch(I){case"ascii":case"latin1":case"binary":return e;case"utf8":case"utf-8":case void 0:return k(g).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*e;case"hex":return e>>>1;case"base64":return H(g).length;default:if(t)return k(g).length;I=(""+I).toLowerCase(),t=!0}}function a(g,I,e){var t=!1;if((void 0===I||I<0)&&(I=0),I>this.length)return"";if((void 0===e||e>this.length)&&(e=this.length),e<=0)return"";if((e>>>=0)<=(I>>>=0))return"";for(g||(g="utf8");;)switch(g){case"hex":return V(this,I,e);case"utf8":case"utf-8":return S(this,I,e);case"ascii":return G(this,I,e);case"latin1":case"binary":return L(this,I,e);case"base64":return R(this,I,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return h(this,I,e);default:if(t)throw new TypeError("Unknown encoding: "+g);g=(g+"").toLowerCase(),t=!0}}function r(g,I,e){var t=g[I];g[I]=g[e],g[e]=t}function o(g,I,e,t,C){if(0===g.length)return-1;if("string"===typeof e?(t=e,e=0):e>2147483647?e=2147483647:e<-2147483648&&(e=-2147483648),e=+e,isNaN(e)&&(e=C?0:g.length-1),e<0&&(e=g.length+e),e>=g.length){if(C)return-1;e=g.length-1}else if(e<0){if(!C)return-1;e=0}if("string"===typeof I&&(I=n.from(I,t)),n.isBuffer(I))return 0===I.length?-1:d(g,I,e,t,C);if("number"===typeof I)return I&=255,n.TYPED_ARRAY_SUPPORT&&"function"===typeof Uint8Array.prototype.indexOf?C?Uint8Array.prototype.indexOf.call(g,I,e):Uint8Array.prototype.lastIndexOf.call(g,I,e):d(g,[I],e,t,C);throw new TypeError("val must be string, number or Buffer")}function d(g,I,e,t,C){var Q,F=1,B=g.length,n=I.length;if(void 0!==t&&("ucs2"===(t=String(t).toLowerCase())||"ucs-2"===t||"utf16le"===t||"utf-16le"===t)){if(g.length<2||I.length<2)return-1;F=2,B/=2,n/=2,e/=2}function U(g,I){return 1===F?g[I]:g.readUInt16BE(I*F)}if(C){var s=-1;for(Q=e;Q<B;Q++)if(U(g,Q)===U(I,-1===s?0:Q-s)){if(-1===s&&(s=Q),Q-s+1===n)return s*F}else-1!==s&&(Q-=Q-s),s=-1}else for(e+n>B&&(e=B-n),Q=e;Q>=0;Q--){for(var i=!0,c=0;c<n;c++)if(U(g,Q+c)!==U(I,c)){i=!1;break}if(i)return Q}return-1}function u(g,I,e,t){e=Number(e)||0;var C=g.length-e;t?(t=Number(t))>C&&(t=C):t=C;var Q=I.length;if(Q%2!==0)throw new TypeError("Invalid hex string");t>Q/2&&(t=Q/2);for(var F=0;F<t;++F){var B=parseInt(I.substr(2*F,2),16);if(isNaN(B))return F;g[e+F]=B}return F}function y(g,I,e,t){return M(k(I,g.length-e),g,e,t)}function b(g,I,e,t){return M(function(g){for(var I=[],e=0;e<g.length;++e)I.push(255&g.charCodeAt(e));return I}(I),g,e,t)}function Z(g,I,e,t){return b(g,I,e,t)}function m(g,I,e,t){return M(H(I),g,e,t)}function x(g,I,e,t){return M(function(g,I){for(var e,t,C,Q=[],F=0;F<g.length&&!((I-=2)<0);++F)e=g.charCodeAt(F),t=e>>8,C=e%256,Q.push(C),Q.push(t);return Q}(I,g.length-e),g,e,t)}function R(g,I,e){return 0===I&&e===g.length?t.fromByteArray(g):t.fromByteArray(g.slice(I,e))}function S(g,I,e){e=Math.min(g.length,e);for(var t=[],C=I;C<e;){var Q,F,B,n,U=g[C],s=null,i=U>239?4:U>223?3:U>191?2:1;if(C+i<=e)switch(i){case 1:U<128&&(s=U);break;case 2:128===(192&(Q=g[C+1]))&&(n=(31&U)<<6|63&Q)>127&&(s=n);break;case 3:Q=g[C+1],F=g[C+2],128===(192&Q)&&128===(192&F)&&(n=(15&U)<<12|(63&Q)<<6|63&F)>2047&&(n<55296||n>57343)&&(s=n);break;case 4:Q=g[C+1],F=g[C+2],B=g[C+3],128===(192&Q)&&128===(192&F)&&128===(192&B)&&(n=(15&U)<<18|(63&Q)<<12|(63&F)<<6|63&B)>65535&&n<1114112&&(s=n)}null===s?(s=65533,i=1):s>65535&&(s-=65536,t.push(s>>>10&1023|55296),s=56320|1023&s),t.push(s),C+=i}return function(g){var I=g.length;if(I<=4096)return String.fromCharCode.apply(String,g);var e="",t=0;for(;t<I;)e+=String.fromCharCode.apply(String,g.slice(t,t+=4096));return e}(t)}I.Buffer=n,I.SlowBuffer=function(g){+g!=g&&(g=0);return n.alloc(+g)},I.INSPECT_MAX_BYTES=50,n.TYPED_ARRAY_SUPPORT=void 0!==g.TYPED_ARRAY_SUPPORT?g.TYPED_ARRAY_SUPPORT:function(){try{var g=new Uint8Array(1);return g.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===g.foo()&&"function"===typeof g.subarray&&0===g.subarray(1,1).byteLength}catch(I){return!1}}(),I.kMaxLength=F(),n.poolSize=8192,n._augment=function(g){return g.__proto__=n.prototype,g},n.from=function(g,I,e){return U(null,g,I,e)},n.TYPED_ARRAY_SUPPORT&&(n.prototype.__proto__=Uint8Array.prototype,n.__proto__=Uint8Array,"undefined"!==typeof Symbol&&Symbol.species&&n[Symbol.species]===n&&Object.defineProperty(n,Symbol.species,{value:null,configurable:!0})),n.alloc=function(g,I,e){return function(g,I,e,t){return s(I),I<=0?B(g,I):void 0!==e?"string"===typeof t?B(g,I).fill(e,t):B(g,I).fill(e):B(g,I)}(null,g,I,e)},n.allocUnsafe=function(g){return i(null,g)},n.allocUnsafeSlow=function(g){return i(null,g)},n.isBuffer=function(g){return!(null==g||!g._isBuffer)},n.compare=function(g,I){if(!n.isBuffer(g)||!n.isBuffer(I))throw new TypeError("Arguments must be Buffers");if(g===I)return 0;for(var e=g.length,t=I.length,C=0,Q=Math.min(e,t);C<Q;++C)if(g[C]!==I[C]){e=g[C],t=I[C];break}return e<t?-1:t<e?1:0},n.isEncoding=function(g){switch(String(g).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},n.concat=function(g,I){if(!Q(g))throw new TypeError('"list" argument must be an Array of Buffers');if(0===g.length)return n.alloc(0);var e;if(void 0===I)for(I=0,e=0;e<g.length;++e)I+=g[e].length;var t=n.allocUnsafe(I),C=0;for(e=0;e<g.length;++e){var F=g[e];if(!n.isBuffer(F))throw new TypeError('"list" argument must be an Array of Buffers');F.copy(t,C),C+=F.length}return t},n.byteLength=l,n.prototype._isBuffer=!0,n.prototype.swap16=function(){var g=this.length;if(g%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var I=0;I<g;I+=2)r(this,I,I+1);return this},n.prototype.swap32=function(){var g=this.length;if(g%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var I=0;I<g;I+=4)r(this,I,I+3),r(this,I+1,I+2);return this},n.prototype.swap64=function(){var g=this.length;if(g%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var I=0;I<g;I+=8)r(this,I,I+7),r(this,I+1,I+6),r(this,I+2,I+5),r(this,I+3,I+4);return this},n.prototype.toString=function(){var g=0|this.length;return 0===g?"":0===arguments.length?S(this,0,g):a.apply(this,arguments)},n.prototype.equals=function(g){if(!n.isBuffer(g))throw new TypeError("Argument must be a Buffer");return this===g||0===n.compare(this,g)},n.prototype.inspect=function(){var g="",e=I.INSPECT_MAX_BYTES;return this.length>0&&(g=this.toString("hex",0,e).match(/.{2}/g).join(" "),this.length>e&&(g+=" ... ")),"<Buffer "+g+">"},n.prototype.compare=function(g,I,e,t,C){if(!n.isBuffer(g))throw new TypeError("Argument must be a Buffer");if(void 0===I&&(I=0),void 0===e&&(e=g?g.length:0),void 0===t&&(t=0),void 0===C&&(C=this.length),I<0||e>g.length||t<0||C>this.length)throw new RangeError("out of range index");if(t>=C&&I>=e)return 0;if(t>=C)return-1;if(I>=e)return 1;if(this===g)return 0;for(var Q=(C>>>=0)-(t>>>=0),F=(e>>>=0)-(I>>>=0),B=Math.min(Q,F),U=this.slice(t,C),s=g.slice(I,e),i=0;i<B;++i)if(U[i]!==s[i]){Q=U[i],F=s[i];break}return Q<F?-1:F<Q?1:0},n.prototype.includes=function(g,I,e){return-1!==this.indexOf(g,I,e)},n.prototype.indexOf=function(g,I,e){return o(this,g,I,e,!0)},n.prototype.lastIndexOf=function(g,I,e){return o(this,g,I,e,!1)},n.prototype.write=function(g,I,e,t){if(void 0===I)t="utf8",e=this.length,I=0;else if(void 0===e&&"string"===typeof I)t=I,e=this.length,I=0;else{if(!isFinite(I))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");I|=0,isFinite(e)?(e|=0,void 0===t&&(t="utf8")):(t=e,e=void 0)}var C=this.length-I;if((void 0===e||e>C)&&(e=C),g.length>0&&(e<0||I<0)||I>this.length)throw new RangeError("Attempt to write outside buffer bounds");t||(t="utf8");for(var Q=!1;;)switch(t){case"hex":return u(this,g,I,e);case"utf8":case"utf-8":return y(this,g,I,e);case"ascii":return b(this,g,I,e);case"latin1":case"binary":return Z(this,g,I,e);case"base64":return m(this,g,I,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return x(this,g,I,e);default:if(Q)throw new TypeError("Unknown encoding: "+t);t=(""+t).toLowerCase(),Q=!0}},n.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function G(g,I,e){var t="";e=Math.min(g.length,e);for(var C=I;C<e;++C)t+=String.fromCharCode(127&g[C]);return t}function L(g,I,e){var t="";e=Math.min(g.length,e);for(var C=I;C<e;++C)t+=String.fromCharCode(g[C]);return t}function V(g,I,e){var t=g.length;(!I||I<0)&&(I=0),(!e||e<0||e>t)&&(e=t);for(var C="",Q=I;Q<e;++Q)C+=v(g[Q]);return C}function h(g,I,e){for(var t=g.slice(I,e),C="",Q=0;Q<t.length;Q+=2)C+=String.fromCharCode(t[Q]+256*t[Q+1]);return C}function D(g,I,e){if(g%1!==0||g<0)throw new RangeError("offset is not uint");if(g+I>e)throw new RangeError("Trying to access beyond buffer length")}function p(g,I,e,t,C,Q){if(!n.isBuffer(g))throw new TypeError('"buffer" argument must be a Buffer instance');if(I>C||I<Q)throw new RangeError('"value" argument is out of bounds');if(e+t>g.length)throw new RangeError("Index out of range")}function E(g,I,e,t){I<0&&(I=65535+I+1);for(var C=0,Q=Math.min(g.length-e,2);C<Q;++C)g[e+C]=(I&255<<8*(t?C:1-C))>>>8*(t?C:1-C)}function N(g,I,e,t){I<0&&(I=4294967295+I+1);for(var C=0,Q=Math.min(g.length-e,4);C<Q;++C)g[e+C]=I>>>8*(t?C:3-C)&255}function W(g,I,e,t,C,Q){if(e+t>g.length)throw new RangeError("Index out of range");if(e<0)throw new RangeError("Index out of range")}function f(g,I,e,t,Q){return Q||W(g,0,e,4),C.write(g,I,e,t,23,4),e+4}function X(g,I,e,t,Q){return Q||W(g,0,e,8),C.write(g,I,e,t,52,8),e+8}n.prototype.slice=function(g,I){var e,t=this.length;if((g=~~g)<0?(g+=t)<0&&(g=0):g>t&&(g=t),(I=void 0===I?t:~~I)<0?(I+=t)<0&&(I=0):I>t&&(I=t),I<g&&(I=g),n.TYPED_ARRAY_SUPPORT)(e=this.subarray(g,I)).__proto__=n.prototype;else{var C=I-g;e=new n(C,void 0);for(var Q=0;Q<C;++Q)e[Q]=this[Q+g]}return e},n.prototype.readUIntLE=function(g,I,e){g|=0,I|=0,e||D(g,I,this.length);for(var t=this[g],C=1,Q=0;++Q<I&&(C*=256);)t+=this[g+Q]*C;return t},n.prototype.readUIntBE=function(g,I,e){g|=0,I|=0,e||D(g,I,this.length);for(var t=this[g+--I],C=1;I>0&&(C*=256);)t+=this[g+--I]*C;return t},n.prototype.readUInt8=function(g,I){return I||D(g,1,this.length),this[g]},n.prototype.readUInt16LE=function(g,I){return I||D(g,2,this.length),this[g]|this[g+1]<<8},n.prototype.readUInt16BE=function(g,I){return I||D(g,2,this.length),this[g]<<8|this[g+1]},n.prototype.readUInt32LE=function(g,I){return I||D(g,4,this.length),(this[g]|this[g+1]<<8|this[g+2]<<16)+16777216*this[g+3]},n.prototype.readUInt32BE=function(g,I){return I||D(g,4,this.length),16777216*this[g]+(this[g+1]<<16|this[g+2]<<8|this[g+3])},n.prototype.readIntLE=function(g,I,e){g|=0,I|=0,e||D(g,I,this.length);for(var t=this[g],C=1,Q=0;++Q<I&&(C*=256);)t+=this[g+Q]*C;return t>=(C*=128)&&(t-=Math.pow(2,8*I)),t},n.prototype.readIntBE=function(g,I,e){g|=0,I|=0,e||D(g,I,this.length);for(var t=I,C=1,Q=this[g+--t];t>0&&(C*=256);)Q+=this[g+--t]*C;return Q>=(C*=128)&&(Q-=Math.pow(2,8*I)),Q},n.prototype.readInt8=function(g,I){return I||D(g,1,this.length),128&this[g]?-1*(255-this[g]+1):this[g]},n.prototype.readInt16LE=function(g,I){I||D(g,2,this.length);var e=this[g]|this[g+1]<<8;return 32768&e?4294901760|e:e},n.prototype.readInt16BE=function(g,I){I||D(g,2,this.length);var e=this[g+1]|this[g]<<8;return 32768&e?4294901760|e:e},n.prototype.readInt32LE=function(g,I){return I||D(g,4,this.length),this[g]|this[g+1]<<8|this[g+2]<<16|this[g+3]<<24},n.prototype.readInt32BE=function(g,I){return I||D(g,4,this.length),this[g]<<24|this[g+1]<<16|this[g+2]<<8|this[g+3]},n.prototype.readFloatLE=function(g,I){return I||D(g,4,this.length),C.read(this,g,!0,23,4)},n.prototype.readFloatBE=function(g,I){return I||D(g,4,this.length),C.read(this,g,!1,23,4)},n.prototype.readDoubleLE=function(g,I){return I||D(g,8,this.length),C.read(this,g,!0,52,8)},n.prototype.readDoubleBE=function(g,I){return I||D(g,8,this.length),C.read(this,g,!1,52,8)},n.prototype.writeUIntLE=function(g,I,e,t){(g=+g,I|=0,e|=0,t)||p(this,g,I,e,Math.pow(2,8*e)-1,0);var C=1,Q=0;for(this[I]=255&g;++Q<e&&(C*=256);)this[I+Q]=g/C&255;return I+e},n.prototype.writeUIntBE=function(g,I,e,t){(g=+g,I|=0,e|=0,t)||p(this,g,I,e,Math.pow(2,8*e)-1,0);var C=e-1,Q=1;for(this[I+C]=255&g;--C>=0&&(Q*=256);)this[I+C]=g/Q&255;return I+e},n.prototype.writeUInt8=function(g,I,e){return g=+g,I|=0,e||p(this,g,I,1,255,0),n.TYPED_ARRAY_SUPPORT||(g=Math.floor(g)),this[I]=255&g,I+1},n.prototype.writeUInt16LE=function(g,I,e){return g=+g,I|=0,e||p(this,g,I,2,65535,0),n.TYPED_ARRAY_SUPPORT?(this[I]=255&g,this[I+1]=g>>>8):E(this,g,I,!0),I+2},n.prototype.writeUInt16BE=function(g,I,e){return g=+g,I|=0,e||p(this,g,I,2,65535,0),n.TYPED_ARRAY_SUPPORT?(this[I]=g>>>8,this[I+1]=255&g):E(this,g,I,!1),I+2},n.prototype.writeUInt32LE=function(g,I,e){return g=+g,I|=0,e||p(this,g,I,4,4294967295,0),n.TYPED_ARRAY_SUPPORT?(this[I+3]=g>>>24,this[I+2]=g>>>16,this[I+1]=g>>>8,this[I]=255&g):N(this,g,I,!0),I+4},n.prototype.writeUInt32BE=function(g,I,e){return g=+g,I|=0,e||p(this,g,I,4,4294967295,0),n.TYPED_ARRAY_SUPPORT?(this[I]=g>>>24,this[I+1]=g>>>16,this[I+2]=g>>>8,this[I+3]=255&g):N(this,g,I,!1),I+4},n.prototype.writeIntLE=function(g,I,e,t){if(g=+g,I|=0,!t){var C=Math.pow(2,8*e-1);p(this,g,I,e,C-1,-C)}var Q=0,F=1,B=0;for(this[I]=255&g;++Q<e&&(F*=256);)g<0&&0===B&&0!==this[I+Q-1]&&(B=1),this[I+Q]=(g/F>>0)-B&255;return I+e},n.prototype.writeIntBE=function(g,I,e,t){if(g=+g,I|=0,!t){var C=Math.pow(2,8*e-1);p(this,g,I,e,C-1,-C)}var Q=e-1,F=1,B=0;for(this[I+Q]=255&g;--Q>=0&&(F*=256);)g<0&&0===B&&0!==this[I+Q+1]&&(B=1),this[I+Q]=(g/F>>0)-B&255;return I+e},n.prototype.writeInt8=function(g,I,e){return g=+g,I|=0,e||p(this,g,I,1,127,-128),n.TYPED_ARRAY_SUPPORT||(g=Math.floor(g)),g<0&&(g=255+g+1),this[I]=255&g,I+1},n.prototype.writeInt16LE=function(g,I,e){return g=+g,I|=0,e||p(this,g,I,2,32767,-32768),n.TYPED_ARRAY_SUPPORT?(this[I]=255&g,this[I+1]=g>>>8):E(this,g,I,!0),I+2},n.prototype.writeInt16BE=function(g,I,e){return g=+g,I|=0,e||p(this,g,I,2,32767,-32768),n.TYPED_ARRAY_SUPPORT?(this[I]=g>>>8,this[I+1]=255&g):E(this,g,I,!1),I+2},n.prototype.writeInt32LE=function(g,I,e){return g=+g,I|=0,e||p(this,g,I,4,2147483647,-2147483648),n.TYPED_ARRAY_SUPPORT?(this[I]=255&g,this[I+1]=g>>>8,this[I+2]=g>>>16,this[I+3]=g>>>24):N(this,g,I,!0),I+4},n.prototype.writeInt32BE=function(g,I,e){return g=+g,I|=0,e||p(this,g,I,4,2147483647,-2147483648),g<0&&(g=4294967295+g+1),n.TYPED_ARRAY_SUPPORT?(this[I]=g>>>24,this[I+1]=g>>>16,this[I+2]=g>>>8,this[I+3]=255&g):N(this,g,I,!1),I+4},n.prototype.writeFloatLE=function(g,I,e){return f(this,g,I,!0,e)},n.prototype.writeFloatBE=function(g,I,e){return f(this,g,I,!1,e)},n.prototype.writeDoubleLE=function(g,I,e){return X(this,g,I,!0,e)},n.prototype.writeDoubleBE=function(g,I,e){return X(this,g,I,!1,e)},n.prototype.copy=function(g,I,e,t){if(e||(e=0),t||0===t||(t=this.length),I>=g.length&&(I=g.length),I||(I=0),t>0&&t<e&&(t=e),t===e)return 0;if(0===g.length||0===this.length)return 0;if(I<0)throw new RangeError("targetStart out of bounds");if(e<0||e>=this.length)throw new RangeError("sourceStart out of bounds");if(t<0)throw new RangeError("sourceEnd out of bounds");t>this.length&&(t=this.length),g.length-I<t-e&&(t=g.length-I+e);var C,Q=t-e;if(this===g&&e<I&&I<t)for(C=Q-1;C>=0;--C)g[C+I]=this[C+e];else if(Q<1e3||!n.TYPED_ARRAY_SUPPORT)for(C=0;C<Q;++C)g[C+I]=this[C+e];else Uint8Array.prototype.set.call(g,this.subarray(e,e+Q),I);return Q},n.prototype.fill=function(g,I,e,t){if("string"===typeof g){if("string"===typeof I?(t=I,I=0,e=this.length):"string"===typeof e&&(t=e,e=this.length),1===g.length){var C=g.charCodeAt(0);C<256&&(g=C)}if(void 0!==t&&"string"!==typeof t)throw new TypeError("encoding must be a string");if("string"===typeof t&&!n.isEncoding(t))throw new TypeError("Unknown encoding: "+t)}else"number"===typeof g&&(g&=255);if(I<0||this.length<I||this.length<e)throw new RangeError("Out of range index");if(e<=I)return this;var Q;if(I>>>=0,e=void 0===e?this.length:e>>>0,g||(g=0),"number"===typeof g)for(Q=I;Q<e;++Q)this[Q]=g;else{var F=n.isBuffer(g)?g:k(new n(g,t).toString()),B=F.length;for(Q=0;Q<e-I;++Q)this[Q+I]=F[Q%B]}return this};var J=/[^+\/0-9A-Za-z-_]/g;function v(g){return g<16?"0"+g.toString(16):g.toString(16)}function k(g,I){var e;I=I||1/0;for(var t=g.length,C=null,Q=[],F=0;F<t;++F){if((e=g.charCodeAt(F))>55295&&e<57344){if(!C){if(e>56319){(I-=3)>-1&&Q.push(239,191,189);continue}if(F+1===t){(I-=3)>-1&&Q.push(239,191,189);continue}C=e;continue}if(e<56320){(I-=3)>-1&&Q.push(239,191,189),C=e;continue}e=65536+(C-55296<<10|e-56320)}else C&&(I-=3)>-1&&Q.push(239,191,189);if(C=null,e<128){if((I-=1)<0)break;Q.push(e)}else if(e<2048){if((I-=2)<0)break;Q.push(e>>6|192,63&e|128)}else if(e<65536){if((I-=3)<0)break;Q.push(e>>12|224,e>>6&63|128,63&e|128)}else{if(!(e<1114112))throw new Error("Invalid code point");if((I-=4)<0)break;Q.push(e>>18|240,e>>12&63|128,e>>6&63|128,63&e|128)}}return Q}function H(g){return t.toByteArray(function(g){if((g=function(g){return g.trim?g.trim():g.replace(/^\s+|\s+$/g,"")}(g).replace(J,"")).length<2)return"";for(;g.length%4!==0;)g+="=";return g}(g))}function M(g,I,e,t){for(var C=0;C<t&&!(C+e>=I.length||C>=g.length);++C)I[C+e]=g[C];return C}}).call(this,e(67))},function(g,I,e){"use strict";var t=e(1616),C=e(1618),Q=!1,F=null;if(C({},(function(g,I){if(!Q){if(Q=!0,g)throw g;F=I}})),!Q)throw new Error("Failed to load the yoga module - it needed to be loaded synchronously, but didn't");g.exports=t(F.bind,F.lib)},function(g,I,e){"use strict";e(5);var t=e(239);I.a=function(){for(var g=arguments.length,I=new Array(g),e=0;e<g;e++)I[e]=arguments[e];var C=function(g){return I.reduce((function(I,e){var C=e(g);return C?Object(t.a)(I,C):I}),{})};return C.propTypes={},C.filterProps=I.reduce((function(g,I){return g.concat(I.filterProps)}),[]),C}},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M11.67 3.87L9.9 2.1 0 12l9.9 9.9 1.77-1.77L3.54 12z"}),"ArrowBackIos");I.default=Q},function(g,I,e){"use strict";var t;e.d(I,"a",(function(){return t})),function(g){g.Ok="ok",g.DeadlineExceeded="deadline_exceeded",g.Unauthenticated="unauthenticated",g.PermissionDenied="permission_denied",g.NotFound="not_found",g.ResourceExhausted="resource_exhausted",g.InvalidArgument="invalid_argument",g.Unimplemented="unimplemented",g.Unavailable="unavailable",g.InternalError="internal_error",g.UnknownError="unknown_error",g.Cancelled="cancelled",g.AlreadyExists="already_exists",g.FailedPrecondition="failed_precondition",g.Aborted="aborted",g.OutOfRange="out_of_range",g.DataLoss="data_loss"}(t||(t={})),function(g){g.fromHttpCode=function(I){if(I<400)return g.Ok;if(I>=400&&I<500)switch(I){case 401:return g.Unauthenticated;case 403:return g.PermissionDenied;case 404:return g.NotFound;case 409:return g.AlreadyExists;case 413:return g.FailedPrecondition;case 429:return g.ResourceExhausted;default:return g.InvalidArgument}if(I>=500&&I<600)switch(I){case 501:return g.Unimplemented;case 503:return g.Unavailable;case 504:return g.DeadlineExceeded;default:return g.InternalError}return g.UnknownError}}(t||(t={}))},function(g,I,e){"use strict";(function(g){e.d(I,"e",(function(){return Q})),e.d(I,"i",(function(){return F})),e.d(I,"h",(function(){return B})),e.d(I,"d",(function(){return n})),e.d(I,"c",(function(){return U})),e.d(I,"b",(function(){return s})),e.d(I,"a",(function(){return i})),e.d(I,"f",(function(){return c})),e.d(I,"g",(function(){return A}));var t=e(185),C=(e(267),{});function Q(){return Object(t.b)()?g:"undefined"!==typeof window?window:"undefined"!==typeof self?self:C}function F(){var g=Q(),I=g.crypto||g.msCrypto;if(void 0!==I&&I.getRandomValues){var e=new Uint16Array(8);I.getRandomValues(e),e[3]=4095&e[3]|16384,e[4]=16383&e[4]|32768;var t=function(g){for(var I=g.toString(16);I.length<4;)I="0"+I;return I};return t(e[0])+t(e[1])+t(e[2])+t(e[3])+t(e[4])+t(e[5])+t(e[6])+t(e[7])}return"xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx".replace(/[xy]/g,(function(g){var I=16*Math.random()|0;return("x"===g?I:3&I|8).toString(16)}))}function B(g){if(!g)return{};var I=g.match(/^(([^:/?#]+):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/);if(!I)return{};var e=I[6]||"",t=I[8]||"";return{host:I[4],path:I[5],protocol:I[2],relative:I[5]+e+t}}function n(g){if(g.message)return g.message;if(g.exception&&g.exception.values&&g.exception.values[0]){var I=g.exception.values[0];return I.type&&I.value?I.type+": "+I.value:I.type||I.value||g.event_id||"<unknown>"}return g.event_id||"<unknown>"}function U(g){var I=Q();if(!("console"in I))return g();var e=I.console,t={};["debug","info","warn","error","log","assert"].forEach((function(g){g in I.console&&e[g].__sentry_original__&&(t[g]=e[g],e[g]=e[g].__sentry_original__)}));var C=g();return Object.keys(t).forEach((function(g){e[g]=t[g]})),C}function s(g,I,e){g.exception=g.exception||{},g.exception.values=g.exception.values||[],g.exception.values[0]=g.exception.values[0]||{},g.exception.values[0].value=g.exception.values[0].value||I||"",g.exception.values[0].type=g.exception.values[0].type||e||"Error"}function i(g,I){void 0===I&&(I={});try{g.exception.values[0].mechanism=g.exception.values[0].mechanism||{},Object.keys(I).forEach((function(e){g.exception.values[0].mechanism[e]=I[e]}))}catch(e){}}function c(){try{return document.location.href}catch(g){return""}}function A(g,I){if(!I)return 6e4;var e=parseInt(""+I,10);if(!isNaN(e))return 1e3*e;var t=Date.parse(""+I);return isNaN(t)?6e4:t-g}}).call(this,e(67))},,,,function(g,I,e){"use strict";e.d(I,"a",(function(){return O})),e.d(I,"b",(function(){return P})),e.d(I,"c",(function(){return rg})),e.d(I,"d",(function(){return i})),e.d(I,"e",(function(){return lg})),e.d(I,"f",(function(){return ag})),e.d(I,"g",(function(){return A}));var t=e(5),C=e(266),Q=(e(192),e(203)),F=e(365),B=e(366),n=e(133),U={}.constructor;function s(g){if(null==g||"object"!==typeof g)return g;if(Array.isArray(g))return g.map(s);if(g.constructor!==U)return g;var I={};for(var e in g)I[e]=s(g[e]);return I}function i(g,I,e){void 0===g&&(g="unnamed");var t=e.jss,C=s(I),Q=t.plugins.onCreateRule(g,C,e);return Q||(g[0],null)}var c=function(g,I){for(var e="",t=0;t<g.length&&"!important"!==g[t];t++)e&&(e+=I),e+=g[t];return e};function A(g,I){if(void 0===I&&(I=!1),!Array.isArray(g))return g;var e="";if(Array.isArray(g[0]))for(var t=0;t<g.length&&"!important"!==g[t];t++)e&&(e+=", "),e+=c(g[t]," ");else e=c(g,", ");return I||"!important"!==g[g.length-1]||(e+=" !important"),e}function l(g,I){for(var e="",t=0;t<I;t++)e+="  ";return e+g}function a(g,I,e){void 0===e&&(e={});var t="";if(!I)return t;var C=e.indent,Q=void 0===C?0:C,F=I.fallbacks;if(g&&Q++,F)if(Array.isArray(F))for(var B=0;B<F.length;B++){var n=F[B];for(var U in n){var s=n[U];null!=s&&(t&&(t+="\n"),t+=""+l(U+": "+A(s)+";",Q))}}else for(var i in F){var c=F[i];null!=c&&(t&&(t+="\n"),t+=""+l(i+": "+A(c)+";",Q))}for(var a in I){var r=I[a];null!=r&&"fallbacks"!==a&&(t&&(t+="\n"),t+=""+l(a+": "+A(r)+";",Q))}return(t||e.allowEmpty)&&g?(t&&(t="\n"+t+"\n"),l(g+" {"+t,--Q)+l("}",Q)):t}var r=/([[\].#*$><+~=|^:(),"'`\s])/g,o="undefined"!==typeof CSS&&CSS.escape,d=function(g){return o?o(g):g.replace(r,"\\$1")},u=function(){function g(g,I,e){this.type="style",this.key=void 0,this.isProcessed=!1,this.style=void 0,this.renderer=void 0,this.renderable=void 0,this.options=void 0;var t=e.sheet,C=e.Renderer;this.key=g,this.options=e,this.style=I,t?this.renderer=t.renderer:C&&(this.renderer=new C)}return g.prototype.prop=function(g,I,e){if(void 0===I)return this.style[g];var t=!!e&&e.force;if(!t&&this.style[g]===I)return this;var C=I;e&&!1===e.process||(C=this.options.jss.plugins.onChangeValue(I,g,this));var Q=null==C||!1===C,F=g in this.style;if(Q&&!F&&!t)return this;var B=Q&&F;if(B?delete this.style[g]:this.style[g]=C,this.renderable&&this.renderer)return B?this.renderer.removeProperty(this.renderable,g):this.renderer.setProperty(this.renderable,g,C),this;var n=this.options.sheet;return n&&n.attached,this},g}(),y=function(g){function I(I,e,t){var C;(C=g.call(this,I,e,t)||this).selectorText=void 0,C.id=void 0,C.renderable=void 0;var Q=t.selector,F=t.scoped,n=t.sheet,U=t.generateId;return Q?C.selectorText=Q:!1!==F&&(C.id=U(Object(B.a)(Object(B.a)(C)),n),C.selectorText="."+d(C.id)),C}Object(F.a)(I,g);var e=I.prototype;return e.applyTo=function(g){var I=this.renderer;if(I){var e=this.toJSON();for(var t in e)I.setProperty(g,t,e[t])}return this},e.toJSON=function(){var g={};for(var I in this.style){var e=this.style[I];"object"!==typeof e?g[I]=e:Array.isArray(e)&&(g[I]=A(e))}return g},e.toString=function(g){var I=this.options.sheet,e=!!I&&I.options.link?Object(t.a)({},g,{allowEmpty:!0}):g;return a(this.selectorText,this.style,e)},Object(Q.a)(I,[{key:"selector",set:function(g){if(g!==this.selectorText){this.selectorText=g;var I=this.renderer,e=this.renderable;if(e&&I)I.setSelector(e,g)||I.replaceRule(e,this)}},get:function(){return this.selectorText}}]),I}(u),b={onCreateRule:function(g,I,e){return"@"===g[0]||e.parent&&"keyframes"===e.parent.type?null:new y(g,I,e)}},Z={indent:1,children:!0},m=/@([\w-]+)/,x=function(){function g(g,I,e){this.type="conditional",this.at=void 0,this.key=void 0,this.query=void 0,this.rules=void 0,this.options=void 0,this.isProcessed=!1,this.renderable=void 0,this.key=g,this.query=e.name;var C=g.match(m);for(var Q in this.at=C?C[1]:"unknown",this.options=e,this.rules=new O(Object(t.a)({},e,{parent:this})),I)this.rules.add(Q,I[Q]);this.rules.process()}var I=g.prototype;return I.getRule=function(g){return this.rules.get(g)},I.indexOf=function(g){return this.rules.indexOf(g)},I.addRule=function(g,I,e){var t=this.rules.add(g,I,e);return t?(this.options.jss.plugins.onProcessRule(t),t):null},I.toString=function(g){if(void 0===g&&(g=Z),null==g.indent&&(g.indent=Z.indent),null==g.children&&(g.children=Z.children),!1===g.children)return this.query+" {}";var I=this.rules.toString(g);return I?this.query+" {\n"+I+"\n}":""},g}(),R=/@media|@supports\s+/,S={onCreateRule:function(g,I,e){return R.test(g)?new x(g,I,e):null}},G={indent:1,children:!0},L=/@keyframes\s+([\w-]+)/,V=function(){function g(g,I,e){this.type="keyframes",this.at="@keyframes",this.key=void 0,this.name=void 0,this.id=void 0,this.rules=void 0,this.options=void 0,this.isProcessed=!1,this.renderable=void 0;var C=g.match(L);C&&C[1]?this.name=C[1]:this.name="noname",this.key=this.type+"-"+this.name,this.options=e;var Q=e.scoped,F=e.sheet,B=e.generateId;for(var n in this.id=!1===Q?this.name:d(B(this,F)),this.rules=new O(Object(t.a)({},e,{parent:this})),I)this.rules.add(n,I[n],Object(t.a)({},e,{parent:this}));this.rules.process()}return g.prototype.toString=function(g){if(void 0===g&&(g=G),null==g.indent&&(g.indent=G.indent),null==g.children&&(g.children=G.children),!1===g.children)return this.at+" "+this.id+" {}";var I=this.rules.toString(g);return I&&(I="\n"+I+"\n"),this.at+" "+this.id+" {"+I+"}"},g}(),h=/@keyframes\s+/,D=/\$([\w-]+)/g,p=function(g,I){return"string"===typeof g?g.replace(D,(function(g,e){return e in I?I[e]:g})):g},E=function(g,I,e){var t=g[I],C=p(t,e);C!==t&&(g[I]=C)},N={onCreateRule:function(g,I,e){return"string"===typeof g&&h.test(g)?new V(g,I,e):null},onProcessStyle:function(g,I,e){return"style"===I.type&&e?("animation-name"in g&&E(g,"animation-name",e.keyframes),"animation"in g&&E(g,"animation",e.keyframes),g):g},onChangeValue:function(g,I,e){var t=e.options.sheet;if(!t)return g;switch(I){case"animation":case"animation-name":return p(g,t.keyframes);default:return g}}},W=function(g){function I(){for(var I,e=arguments.length,t=new Array(e),C=0;C<e;C++)t[C]=arguments[C];return(I=g.call.apply(g,[this].concat(t))||this).renderable=void 0,I}return Object(F.a)(I,g),I.prototype.toString=function(g){var I=this.options.sheet,e=!!I&&I.options.link?Object(t.a)({},g,{allowEmpty:!0}):g;return a(this.key,this.style,e)},I}(u),f={onCreateRule:function(g,I,e){return e.parent&&"keyframes"===e.parent.type?new W(g,I,e):null}},X=function(){function g(g,I,e){this.type="font-face",this.at="@font-face",this.key=void 0,this.style=void 0,this.options=void 0,this.isProcessed=!1,this.renderable=void 0,this.key=g,this.style=I,this.options=e}return g.prototype.toString=function(g){if(Array.isArray(this.style)){for(var I="",e=0;e<this.style.length;e++)I+=a(this.at,this.style[e]),this.style[e+1]&&(I+="\n");return I}return a(this.at,this.style,g)},g}(),J=/@font-face/,v={onCreateRule:function(g,I,e){return J.test(g)?new X(g,I,e):null}},k=function(){function g(g,I,e){this.type="viewport",this.at="@viewport",this.key=void 0,this.style=void 0,this.options=void 0,this.isProcessed=!1,this.renderable=void 0,this.key=g,this.style=I,this.options=e}return g.prototype.toString=function(g){return a(this.key,this.style,g)},g}(),H={onCreateRule:function(g,I,e){return"@viewport"===g||"@-ms-viewport"===g?new k(g,I,e):null}},M=function(){function g(g,I,e){this.type="simple",this.key=void 0,this.value=void 0,this.options=void 0,this.isProcessed=!1,this.renderable=void 0,this.key=g,this.value=I,this.options=e}return g.prototype.toString=function(g){if(Array.isArray(this.value)){for(var I="",e=0;e<this.value.length;e++)I+=this.key+" "+this.value[e]+";",this.value[e+1]&&(I+="\n");return I}return this.key+" "+this.value+";"},g}(),Y={"@charset":!0,"@import":!0,"@namespace":!0},w=[b,S,N,f,v,H,{onCreateRule:function(g,I,e){return g in Y?new M(g,I,e):null}}],T={process:!0},z={force:!0,process:!0},O=function(){function g(g){this.map={},this.raw={},this.index=[],this.counter=0,this.options=void 0,this.classes=void 0,this.keyframes=void 0,this.options=g,this.classes=g.classes,this.keyframes=g.keyframes}var I=g.prototype;return I.add=function(g,I,e){var C=this.options,Q=C.parent,F=C.sheet,B=C.jss,n=C.Renderer,U=C.generateId,s=C.scoped,c=Object(t.a)({classes:this.classes,parent:Q,sheet:F,jss:B,Renderer:n,generateId:U,scoped:s,name:g},e),A=g;g in this.raw&&(A=g+"-d"+this.counter++),this.raw[A]=I,A in this.classes&&(c.selector="."+d(this.classes[A]));var l=i(A,I,c);if(!l)return null;this.register(l);var a=void 0===c.index?this.index.length:c.index;return this.index.splice(a,0,l),l},I.get=function(g){return this.map[g]},I.remove=function(g){this.unregister(g),delete this.raw[g.key],this.index.splice(this.index.indexOf(g),1)},I.indexOf=function(g){return this.index.indexOf(g)},I.process=function(){var g=this.options.jss.plugins;this.index.slice(0).forEach(g.onProcessRule,g)},I.register=function(g){this.map[g.key]=g,g instanceof y?(this.map[g.selector]=g,g.id&&(this.classes[g.key]=g.id)):g instanceof V&&this.keyframes&&(this.keyframes[g.name]=g.id)},I.unregister=function(g){delete this.map[g.key],g instanceof y?(delete this.map[g.selector],delete this.classes[g.key]):g instanceof V&&delete this.keyframes[g.name]},I.update=function(){var g,I,e;if("string"===typeof(arguments.length<=0?void 0:arguments[0])?(g=arguments.length<=0?void 0:arguments[0],I=arguments.length<=1?void 0:arguments[1],e=arguments.length<=2?void 0:arguments[2]):(I=arguments.length<=0?void 0:arguments[0],e=arguments.length<=1?void 0:arguments[1],g=null),g)this.updateOne(this.map[g],I,e);else for(var t=0;t<this.index.length;t++)this.updateOne(this.index[t],I,e)},I.updateOne=function(I,e,t){void 0===t&&(t=T);var C=this.options,Q=C.jss.plugins,F=C.sheet;if(I.rules instanceof g)I.rules.update(e,t);else{var B=I,n=B.style;if(Q.onUpdate(e,I,F,t),t.process&&n&&n!==B.style){for(var U in Q.onProcessStyle(B.style,B,F),B.style){var s=B.style[U];s!==n[U]&&B.prop(U,s,z)}for(var i in n){var c=B.style[i],A=n[i];null==c&&c!==A&&B.prop(i,null,z)}}}},I.toString=function(g){for(var I="",e=this.options.sheet,t=!!e&&e.options.link,C=0;C<this.index.length;C++){var Q=this.index[C].toString(g);(Q||t)&&(I&&(I+="\n"),I+=Q)}return I},g}(),K=function(){function g(g,I){for(var e in this.options=void 0,this.deployed=void 0,this.attached=void 0,this.rules=void 0,this.renderer=void 0,this.classes=void 0,this.keyframes=void 0,this.queue=void 0,this.attached=!1,this.deployed=!1,this.classes={},this.keyframes={},this.options=Object(t.a)({},I,{sheet:this,parent:this,classes:this.classes,keyframes:this.keyframes}),I.Renderer&&(this.renderer=new I.Renderer(this)),this.rules=new O(this.options),g)this.rules.add(e,g[e]);this.rules.process()}var I=g.prototype;return I.attach=function(){return this.attached||(this.renderer&&this.renderer.attach(),this.attached=!0,this.deployed||this.deploy()),this},I.detach=function(){return this.attached?(this.renderer&&this.renderer.detach(),this.attached=!1,this):this},I.addRule=function(g,I,e){var t=this.queue;this.attached&&!t&&(this.queue=[]);var C=this.rules.add(g,I,e);return C?(this.options.jss.plugins.onProcessRule(C),this.attached?this.deployed?(t?t.push(C):(this.insertRule(C),this.queue&&(this.queue.forEach(this.insertRule,this),this.queue=void 0)),C):C:(this.deployed=!1,C)):null},I.insertRule=function(g){this.renderer&&this.renderer.insertRule(g)},I.addRules=function(g,I){var e=[];for(var t in g){var C=this.addRule(t,g[t],I);C&&e.push(C)}return e},I.getRule=function(g){return this.rules.get(g)},I.deleteRule=function(g){var I="object"===typeof g?g:this.rules.get(g);return!!I&&(this.rules.remove(I),!(this.attached&&I.renderable&&this.renderer)||this.renderer.deleteRule(I.renderable))},I.indexOf=function(g){return this.rules.indexOf(g)},I.deploy=function(){return this.renderer&&this.renderer.deploy(),this.deployed=!0,this},I.update=function(){var g;return(g=this.rules).update.apply(g,arguments),this},I.updateOne=function(g,I,e){return this.rules.updateOne(g,I,e),this},I.toString=function(g){return this.rules.toString(g)},g}(),j=function(){function g(){this.plugins={internal:[],external:[]},this.registry=void 0}var I=g.prototype;return I.onCreateRule=function(g,I,e){for(var t=0;t<this.registry.onCreateRule.length;t++){var C=this.registry.onCreateRule[t](g,I,e);if(C)return C}return null},I.onProcessRule=function(g){if(!g.isProcessed){for(var I=g.options.sheet,e=0;e<this.registry.onProcessRule.length;e++)this.registry.onProcessRule[e](g,I);g.style&&this.onProcessStyle(g.style,g,I),g.isProcessed=!0}},I.onProcessStyle=function(g,I,e){for(var t=0;t<this.registry.onProcessStyle.length;t++)I.style=this.registry.onProcessStyle[t](I.style,I,e)},I.onProcessSheet=function(g){for(var I=0;I<this.registry.onProcessSheet.length;I++)this.registry.onProcessSheet[I](g)},I.onUpdate=function(g,I,e,t){for(var C=0;C<this.registry.onUpdate.length;C++)this.registry.onUpdate[C](g,I,e,t)},I.onChangeValue=function(g,I,e){for(var t=g,C=0;C<this.registry.onChangeValue.length;C++)t=this.registry.onChangeValue[C](t,I,e);return t},I.use=function(g,I){void 0===I&&(I={queue:"external"});var e=this.plugins[I.queue];-1===e.indexOf(g)&&(e.push(g),this.registry=[].concat(this.plugins.external,this.plugins.internal).reduce((function(g,I){for(var e in I)e in g&&g[e].push(I[e]);return g}),{onCreateRule:[],onProcessRule:[],onProcessStyle:[],onProcessSheet:[],onChangeValue:[],onUpdate:[]}))},g}(),P=function(){function g(){this.registry=[]}var I=g.prototype;return I.add=function(g){var I=this.registry,e=g.options.index;if(-1===I.indexOf(g))if(0===I.length||e>=this.index)I.push(g);else for(var t=0;t<I.length;t++)if(I[t].options.index>e)return void I.splice(t,0,g)},I.reset=function(){this.registry=[]},I.remove=function(g){var I=this.registry.indexOf(g);this.registry.splice(I,1)},I.toString=function(g){for(var I=void 0===g?{}:g,e=I.attached,t=Object(n.a)(I,["attached"]),C="",Q=0;Q<this.registry.length;Q++){var F=this.registry[Q];null!=e&&F.attached!==e||(C&&(C+="\n"),C+=F.toString(t))}return C},Object(Q.a)(g,[{key:"index",get:function(){return 0===this.registry.length?0:this.registry[this.registry.length-1].options.index}}]),g}(),_=new P,q="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),$="2f1acc6c3a606b082e5eef5e54414ffb";null==q[$]&&(q[$]=0);var gg=q[$]++,Ig=function(g){void 0===g&&(g={});var I=0;return function(e,t){I+=1;var C="",Q="";return t&&(t.options.classNamePrefix&&(Q=t.options.classNamePrefix),null!=t.options.jss.id&&(C=String(t.options.jss.id))),g.minify?""+(Q||"c")+gg+C+I:Q+e.key+"-"+gg+(C?"-"+C:"")+"-"+I}},eg=function(g){var I;return function(){return I||(I=g()),I}};function tg(g,I){try{return g.attributeStyleMap?g.attributeStyleMap.get(I):g.style.getPropertyValue(I)}catch(e){return""}}function Cg(g,I,e){try{var t=e;if(Array.isArray(e)&&(t=A(e,!0),"!important"===e[e.length-1]))return g.style.setProperty(I,t,"important"),!0;g.attributeStyleMap?g.attributeStyleMap.set(I,t):g.style.setProperty(I,t)}catch(C){return!1}return!0}function Qg(g,I){try{g.attributeStyleMap?g.attributeStyleMap.delete(I):g.style.removeProperty(I)}catch(e){}}function Fg(g,I){return g.selectorText=I,g.selectorText===I}var Bg=eg((function(){return document.querySelector("head")}));function ng(g){var I=_.registry;if(I.length>0){var e=function(g,I){for(var e=0;e<g.length;e++){var t=g[e];if(t.attached&&t.options.index>I.index&&t.options.insertionPoint===I.insertionPoint)return t}return null}(I,g);if(e&&e.renderer)return{parent:e.renderer.element.parentNode,node:e.renderer.element};if((e=function(g,I){for(var e=g.length-1;e>=0;e--){var t=g[e];if(t.attached&&t.options.insertionPoint===I.insertionPoint)return t}return null}(I,g))&&e.renderer)return{parent:e.renderer.element.parentNode,node:e.renderer.element.nextSibling}}var t=g.insertionPoint;if(t&&"string"===typeof t){var C=function(g){for(var I=Bg(),e=0;e<I.childNodes.length;e++){var t=I.childNodes[e];if(8===t.nodeType&&t.nodeValue.trim()===g)return t}return null}(t);if(C)return{parent:C.parentNode,node:C.nextSibling}}return!1}var Ug=eg((function(){var g=document.querySelector('meta[property="csp-nonce"]');return g?g.getAttribute("content"):null})),sg=function(g,I,e){var t=g.cssRules.length;(void 0===e||e>t)&&(e=t);try{if("insertRule"in g)g.insertRule(I,e);else if("appendRule"in g){g.appendRule(I)}}catch(C){return!1}return g.cssRules[e]},ig=function(){function g(g){this.getPropertyValue=tg,this.setProperty=Cg,this.removeProperty=Qg,this.setSelector=Fg,this.element=void 0,this.sheet=void 0,this.hasInsertedRules=!1,g&&_.add(g),this.sheet=g;var I=this.sheet?this.sheet.options:{},e=I.media,t=I.meta,C=I.element;this.element=C||function(){var g=document.createElement("style");return g.textContent="\n",g}(),this.element.setAttribute("data-jss",""),e&&this.element.setAttribute("media",e),t&&this.element.setAttribute("data-meta",t);var Q=Ug();Q&&this.element.setAttribute("nonce",Q)}var I=g.prototype;return I.attach=function(){if(!this.element.parentNode&&this.sheet){!function(g,I){var e=I.insertionPoint,t=ng(I);if(!1!==t&&t.parent)t.parent.insertBefore(g,t.node);else if(e&&"number"===typeof e.nodeType){var C=e,Q=C.parentNode;Q&&Q.insertBefore(g,C.nextSibling)}else Bg().appendChild(g)}(this.element,this.sheet.options);var g=Boolean(this.sheet&&this.sheet.deployed);this.hasInsertedRules&&g&&(this.hasInsertedRules=!1,this.deploy())}},I.detach=function(){var g=this.element.parentNode;g&&g.removeChild(this.element)},I.deploy=function(){var g=this.sheet;g&&(g.options.link?this.insertRules(g.rules):this.element.textContent="\n"+g.toString()+"\n")},I.insertRules=function(g,I){for(var e=0;e<g.index.length;e++)this.insertRule(g.index[e],e,I)},I.insertRule=function(g,I,e){if(void 0===e&&(e=this.element.sheet),g.rules){var t=g,C=e;return("conditional"!==g.type&&"keyframes"!==g.type||!1!==(C=sg(e,t.toString({children:!1}),I)))&&(this.insertRules(t.rules,C),C)}if(g.renderable&&g.renderable.parentStyleSheet===this.element.sheet)return g.renderable;var Q=g.toString();if(!Q)return!1;var F=sg(e,Q,I);return!1!==F&&(this.hasInsertedRules=!0,g.renderable=F,F)},I.deleteRule=function(g){var I=this.element.sheet,e=this.indexOf(g);return-1!==e&&(I.deleteRule(e),!0)},I.indexOf=function(g){for(var I=this.element.sheet.cssRules,e=0;e<I.length;e++)if(g===I[e])return e;return-1},I.replaceRule=function(g,I){var e=this.indexOf(g);return-1!==e&&(this.element.sheet.deleteRule(e),this.insertRule(I,e))},I.getRules=function(){return this.element.sheet.cssRules},g}(),cg=0,Ag=function(){function g(g){this.id=cg++,this.version="10.3.0",this.plugins=new j,this.options={id:{minify:!1},createGenerateId:Ig,Renderer:C.a?ig:null,plugins:[]},this.generateId=Ig({minify:!1});for(var I=0;I<w.length;I++)this.plugins.use(w[I],{queue:"internal"});this.setup(g)}var I=g.prototype;return I.setup=function(g){return void 0===g&&(g={}),g.createGenerateId&&(this.options.createGenerateId=g.createGenerateId),g.id&&(this.options.id=Object(t.a)({},this.options.id,g.id)),(g.createGenerateId||g.id)&&(this.generateId=this.options.createGenerateId(this.options.id)),null!=g.insertionPoint&&(this.options.insertionPoint=g.insertionPoint),"Renderer"in g&&(this.options.Renderer=g.Renderer),g.plugins&&this.use.apply(this,g.plugins),this},I.createStyleSheet=function(g,I){void 0===I&&(I={});var e=I.index;"number"!==typeof e&&(e=0===_.index?0:_.index+1);var C=new K(g,Object(t.a)({},I,{jss:this,generateId:I.generateId||this.generateId,insertionPoint:this.options.insertionPoint,Renderer:this.options.Renderer,index:e}));return this.plugins.onProcessSheet(C),C},I.removeStyleSheet=function(g){return g.detach(),_.remove(g),this},I.createRule=function(g,I,e){if(void 0===I&&(I={}),void 0===e&&(e={}),"object"===typeof g)return this.createRule(void 0,g,I);var C=Object(t.a)({},e,{name:g,jss:this,Renderer:this.options.Renderer});C.generateId||(C.generateId=this.generateId),C.classes||(C.classes={}),C.keyframes||(C.keyframes={});var Q=i(g,I,C);return Q&&this.plugins.onProcessRule(Q),Q},I.use=function(){for(var g=this,I=arguments.length,e=new Array(I),t=0;t<I;t++)e[t]=arguments[t];return e.forEach((function(I){g.plugins.use(I)})),this},g}();function lg(g){var I=null;for(var e in g){var t=g[e],C=typeof t;if("function"===C)I||(I={}),I[e]=t;else if("object"===C&&null!==t&&!Array.isArray(t)){var Q=lg(t);Q&&(I||(I={}),I[e]=Q)}}return I}var ag="undefined"!==typeof CSS&&CSS&&"number"in CSS,rg=function(g){return new Ag(g)};rg()},,function(g,I){g.exports=function(g,I,e,t,C){var Q={};return Object.keys(t).forEach((function(g){Q[g]=t[g]})),Q.enumerable=!!Q.enumerable,Q.configurable=!!Q.configurable,("value"in Q||Q.initializer)&&(Q.writable=!0),Q=e.slice().reverse().reduce((function(e,t){return t(g,I,e)||e}),Q),C&&void 0!==Q.initializer&&(Q.value=Q.initializer?Q.initializer.call(C):void 0,Q.initializer=void 0),void 0===Q.initializer&&(Object.defineProperty(g,I,Q),Q=null),Q},g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I,e){var t=e(1428);g.exports=function(g,I){g.prototype=Object.create(I.prototype),g.prototype.constructor=g,t(g,I)},g.exports.__esModule=!0,g.exports.default=g.exports},,,function(g,I,e){var t=e(231),C=e(324),Q=e(91),F=e(69),B=e(330),n=[].push,U=function(g){var I=1==g,e=2==g,U=3==g,s=4==g,i=6==g,c=5==g||i;return function(A,l,a,r){for(var o,d,u=Q(A),y=C(u),b=t(l,a,3),Z=F(y.length),m=0,x=r||B,R=I?x(A,Z):e?x(A,0):void 0;Z>m;m++)if((c||m in y)&&(d=b(o=y[m],m,u),g))if(I)R[m]=d;else if(d)switch(g){case 3:return!0;case 5:return o;case 6:return m;case 2:n.call(R,o)}else if(s)return!1;return i?-1:U||s?s:R}};g.exports={forEach:U(0),map:U(1),filter:U(2),some:U(3),every:U(4),find:U(5),findIndex:U(6)}},function(g,I,e){"use strict";e.r(I),e.d(I,"createGenerateClassName",(function(){return t.a})),e.d(I,"createStyles",(function(){return C.a})),e.d(I,"getThemeProps",(function(){return Q.a})),e.d(I,"jssPreset",(function(){return F.a})),e.d(I,"makeStyles",(function(){return B.a})),e.d(I,"mergeClasses",(function(){return n.a})),e.d(I,"ServerStyleSheets",(function(){return U.a})),e.d(I,"styled",(function(){return s.a})),e.d(I,"StylesProvider",(function(){return i.b})),e.d(I,"sheetsManager",(function(){return c.b})),e.d(I,"StylesContext",(function(){return c.a})),e.d(I,"ThemeProvider",(function(){return A.a})),e.d(I,"useTheme",(function(){return l.a})),e.d(I,"withStyles",(function(){return a.a})),e.d(I,"withTheme",(function(){return r.a})),e.d(I,"withThemeCreator",(function(){return r.b}));var t=e(924),C=e(1682),Q=e(1676),F=e(928),B=e(599),n=e(1727),U=e(1735),s=e(1683),i=e(350),c=e(338),A=e(1736),l=e(470),a=e(1675),r=e(401)},function(g,I,e){"use strict";e.d(I,"b",(function(){return t})),e.d(I,"a",(function(){return C}));var t=function(g){return g.scrollTop};function C(g,I){var e=g.timeout,t=g.style,C=void 0===t?{}:t;return{duration:C.transitionDuration||"number"===typeof e?e:e[I.mode]||0,delay:C.transitionDelay}}},function(g,I,e){var t=e(68),C=e(382),Q=e(228),F=e(145),B=e(188),n=e(90),U=e(614),s=Object.getOwnPropertyDescriptor;I.f=t?s:function(g,I){if(g=F(g),I=B(I,!0),U)try{return s(g,I)}catch(e){}if(n(g,I))return Q(!C.f.call(g,I),g[I])}},function(g,I,e){"use strict";g.exports=e(1163)},function(g,I,e){g.exports=function(g){var I={};function e(t){if(I[t])return I[t].exports;var C=I[t]={i:t,l:!1,exports:{}};return g[t].call(C.exports,C,C.exports,e),C.l=!0,C.exports}return e.m=g,e.c=I,e.d=function(g,I,t){e.o(g,I)||Object.defineProperty(g,I,{enumerable:!0,get:t})},e.r=function(g){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(g,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(g,"__esModule",{value:!0})},e.t=function(g,I){if(1&I&&(g=e(g)),8&I)return g;if(4&I&&"object"==typeof g&&g&&g.__esModule)return g;var t=Object.create(null);if(e.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:g}),2&I&&"string"!=typeof g)for(var C in g)e.d(t,C,function(I){return g[I]}.bind(null,C));return t},e.n=function(g){var I=g&&g.__esModule?function(){return g.default}:function(){return g};return e.d(I,"a",I),I},e.o=function(g,I){return Object.prototype.hasOwnProperty.call(g,I)},e.p="",e(e.s=182)}([function(g,I,e){g.exports=e(174)()},function(g,I){g.exports=e(0)},function(g,I){var e=Array.isArray;g.exports=e},function(g,I,e){var t=e(40),C="object"==typeof self&&self&&self.Object===Object&&self,Q=t||C||Function("return this")();g.exports=Q},function(g,I,e){var t=e(78),C=e(25),Q=e(27),F=e(28);g.exports=function(g,I,e){return g=F(g),e=null==e?0:t(Q(e),0,g.length),I=C(I),g.slice(e,e+I.length)==I}},function(g,I,e){var t=e(171)(e(12));g.exports=t},function(g,I,e){var t=e(15),C=e(76),Q=e(77),F=t?t.toStringTag:void 0;g.exports=function(g){return null==g?void 0===g?"[object Undefined]":"[object Null]":F&&F in Object(g)?C(g):Q(g)}},function(g,I){g.exports=function(g){return null!=g&&"object"==typeof g}},function(g,I){g.exports=function(g){var I=typeof g;return null!=g&&("object"==I||"function"==I)}},function(g,I,e){var t=e(92),C=e(95);g.exports=function(g,I){var e=C(g,I);return t(e)?e:void 0}},function(g,I,e){var t=e(111),C=e(150),Q=e(157),F=e(2),B=e(158);g.exports=function(g){return"function"==typeof g?g:null==g?Q:"object"==typeof g?F(g)?C(g[0],g[1]):t(g):B(g)}},function(g,I,e){var t=e(44),C=e(34);g.exports=function(g){return null!=g&&C(g.length)&&!t(g)}},function(g,I,e){var t=e(43),C=e(10),Q=e(27),F=Math.max;g.exports=function(g,I,e){var B=null==g?0:g.length;if(!B)return-1;var n=null==e?0:Q(e);return n<0&&(n=F(B+n,0)),t(g,C(I,3),n)}},function(g,I,e){var t=e(133),C=e(140),Q=e(11);g.exports=function(g){return Q(g)?t(g):C(g)}},function(g,I,e){var t=e(26),C=e(10),Q=e(168),F=e(2);g.exports=function(g,I){return(F(g)?t:Q)(g,C(I,3))}},function(g,I,e){var t=e(3).Symbol;g.exports=t},function(g,I,e){var t=e(6),C=e(7);g.exports=function(g){return"symbol"==typeof g||C(g)&&"[object Symbol]"==t(g)}},function(g,I,e){var t=e(9)(Object,"create");g.exports=t},function(g,I,e){var t=e(100),C=e(101),Q=e(102),F=e(103),B=e(104);function n(g){var I=-1,e=null==g?0:g.length;for(this.clear();++I<e;){var t=g[I];this.set(t[0],t[1])}}n.prototype.clear=t,n.prototype.delete=C,n.prototype.get=Q,n.prototype.has=F,n.prototype.set=B,g.exports=n},function(g,I,e){var t=e(31);g.exports=function(g,I){for(var e=g.length;e--;)if(t(g[e][0],I))return e;return-1}},function(g,I,e){var t=e(106);g.exports=function(g,I){var e=g.__data__;return t(I)?e["string"==typeof I?"string":"hash"]:e.map}},function(g,I,e){var t=e(16);g.exports=function(g){if("string"==typeof g||t(g))return g;var I=g+"";return"0"==I&&1/g==-1/0?"-0":I}},function(g,I,e){var t=e(164),C=e(167)(t);g.exports=C},function(g,I,e){var t=e(30);function C(g,I){if("function"!=typeof g||null!=I&&"function"!=typeof I)throw new TypeError("Expected a function");var e=function e(){var t=arguments,C=I?I.apply(this,t):t[0],Q=e.cache;if(Q.has(C))return Q.get(C);var F=g.apply(this,t);return e.cache=Q.set(C,F)||Q,F};return e.cache=new(C.Cache||t),e}C.Cache=t,g.exports=C},function(g,I,e){var t=e(50),C=e(163),Q=e(10),F=e(2);g.exports=function(g,I){return(F(g)?t:C)(g,Q(I,3))}},function(g,I,e){var t=e(15),C=e(26),Q=e(2),F=e(16),B=t?t.prototype:void 0,n=B?B.toString:void 0;g.exports=function g(I){if("string"==typeof I)return I;if(Q(I))return C(I,g)+"";if(F(I))return n?n.call(I):"";var e=I+"";return"0"==e&&1/I==-1/0?"-0":e}},function(g,I){g.exports=function(g,I){for(var e=-1,t=null==g?0:g.length,C=Array(t);++e<t;)C[e]=I(g[e],e,g);return C}},function(g,I,e){var t=e(79);g.exports=function(g){var I=t(g),e=I%1;return I==I?e?I-e:I:0}},function(g,I,e){var t=e(25);g.exports=function(g){return null==g?"":t(g)}},function(g,I,e){var t=e(43),C=e(82),Q=e(83);g.exports=function(g,I,e){return I==I?Q(g,I,e):t(g,C,e)}},function(g,I,e){var t=e(89),C=e(105),Q=e(107),F=e(108),B=e(109);function n(g){var I=-1,e=null==g?0:g.length;for(this.clear();++I<e;){var t=g[I];this.set(t[0],t[1])}}n.prototype.clear=t,n.prototype.delete=C,n.prototype.get=Q,n.prototype.has=F,n.prototype.set=B,g.exports=n},function(g,I){g.exports=function(g,I){return g===I||g!=g&&I!=I}},function(g,I,e){var t=e(9)(e(3),"Map");g.exports=t},function(g,I){var e=/^(?:0|[1-9]\d*)$/;g.exports=function(g,I){var t=typeof g;return!!(I=null==I?9007199254740991:I)&&("number"==t||"symbol"!=t&&e.test(g))&&g>-1&&g%1==0&&g<I}},function(g,I){g.exports=function(g){return"number"==typeof g&&g>-1&&g%1==0&&g<=9007199254740991}},function(g,I,e){var t=e(2),C=e(16),Q=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,F=/^\w*$/;g.exports=function(g,I){if(t(g))return!1;var e=typeof g;return!("number"!=e&&"symbol"!=e&&"boolean"!=e&&null!=g&&!C(g))||F.test(g)||!Q.test(g)||null!=I&&g in Object(I)}},function(g,I,e){var t=e(6),C=e(2),Q=e(7);g.exports=function(g){return"string"==typeof g||!C(g)&&Q(g)&&"[object String]"==t(g)}},function(g,I,e){var t=e(169),C=e(22),Q=e(10),F=e(170),B=e(2);g.exports=function(g,I,e){var n=B(g)?t:F,U=arguments.length<3;return n(g,Q(I,4),e,U,C)}},function(g,I,e){var t=e(49),C=e(10),Q=e(172),F=e(2),B=e(173);g.exports=function(g,I,e){var n=F(g)?t:Q;return e&&B(g,I,e)&&(I=void 0),n(g,C(I,3))}},function(g,I){var e;function t(g,I){var e=Object.keys(g);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(g);I&&(t=t.filter((function(I){return Object.getOwnPropertyDescriptor(g,I).enumerable}))),e.push.apply(e,t)}return e}function C(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}var Q={};function F(g,I,e){I in Q||(Q[I]=[]);var t=e||0;Q[I][t]=g}var B,n=(e=[]).concat.apply(e,function(g){if(Array.isArray(g)){for(var I=0,e=new Array(g.length);I<g.length;I++)e[I]=g[I];return e}}(B=[["Afghanistan",["asia"],"af","93"],["Albania",["europe"],"al","355"],["Algeria",["africa","north-africa"],"dz","213"],["American Samoa",["oceania"],"as","1684"],["Andorra",["europe"],"ad","376"],["Angola",["africa"],"ao","244"],["Anguilla",["america","carribean"],"ai","1264"],["Antigua and Barbuda",["america","carribean"],"ag","1268"],["Argentina",["america","south-america"],"ar","54","+.. (..) ........"],["Armenia",["asia","ex-ussr"],"am","374"],["Aruba",["america","carribean"],"aw","297"],["Australia",["oceania"],"au","61","+.. ... ... ..."],["Austria",["europe","european-union"],"at","43"],["Azerbaijan",["asia","ex-ussr"],"az","994"],["Bahamas",["america","carribean"],"bs","1242"],["Bahrain",["middle-east"],"bh","973"],["Bangladesh",["asia"],"bd","880"],["Barbados",["america","carribean"],"bb","1246"],["Belarus",["europe","ex-ussr"],"by","375","+... (..) ... .. .."],["Belgium",["europe","european-union"],"be","32","+.. ... .. .. .."],["Belize",["america","central-america"],"bz","501"],["Benin",["africa"],"bj","229"],["Bermuda",["america","north-america"],"bm","1441"],["Bhutan",["asia"],"bt","975"],["Bolivia",["america","south-america"],"bo","591"],["Bosnia and Herzegovina",["europe"],"ba","387"],["Botswana",["africa"],"bw","267"],["Brazil",["america","south-america"],"br","55","+.. (..) ........."],["British Indian Ocean Territory",["asia"],"io","246"],["British Virgin Islands",["america","carribean"],"vg","1284"],["Brunei",["asia"],"bn","673"],["Bulgaria",["europe","european-union"],"bg","359"],["Burkina Faso",["africa"],"bf","226"],["Burundi",["africa"],"bi","257"],["Cambodia",["asia"],"kh","855"],["Cameroon",["africa"],"cm","237"],["Canada",["america","north-america"],"ca","1","+. (...) ...-....",1,["204","236","249","250","289","306","343","365","387","403","416","418","431","437","438","450","506","514","519","548","579","581","587","604","613","639","647","672","705","709","742","778","780","782","807","819","825","867","873","902","905"]],["Cape Verde",["africa"],"cv","238"],["Caribbean Netherlands",["america","carribean"],"bq","599","",1],["Cayman Islands",["america","carribean"],"ky","1345"],["Central African Republic",["africa"],"cf","236"],["Chad",["africa"],"td","235"],["Chile",["america","south-america"],"cl","56"],["China",["asia"],"cn","86","+.. ..-........."],["Colombia",["america","south-america"],"co","57"],["Comoros",["africa"],"km","269"],["Congo",["africa"],"cd","243"],["Congo",["africa"],"cg","242"],["Cook Islands",["oceania"],"ck","682"],["Costa Rica",["america","central-america"],"cr","506","+... ....-...."],["C\xf4te d\u2019Ivoire",["africa"],"ci","225"],["Croatia",["europe","european-union"],"hr","385"],["Cuba",["america","carribean"],"cu","53"],["Cura\xe7ao",["america","carribean"],"cw","599","",0],["Cyprus",["europe","european-union"],"cy","357","+... .. ......"],["Czech Republic",["europe","european-union"],"cz","420"],["Denmark",["europe","european-union"],"dk","45","+.. .. .. .. .."],["Djibouti",["africa"],"dj","253"],["Dominica",["america","carribean"],"dm","1767"],["Dominican Republic",["america","carribean"],"do","1","",2,["809","829","849"]],["Ecuador",["america","south-america"],"ec","593"],["Egypt",["africa","north-africa"],"eg","20"],["El Salvador",["america","central-america"],"sv","503","+... ....-...."],["Equatorial Guinea",["africa"],"gq","240"],["Eritrea",["africa"],"er","291"],["Estonia",["europe","european-union","ex-ussr"],"ee","372","+... .... ......"],["Ethiopia",["africa"],"et","251"],["Falkland Islands",["america","south-america"],"fk","500"],["Faroe Islands",["europe"],"fo","298"],["Fiji",["oceania"],"fj","679"],["Finland",["europe","european-union"],"fi","358","+... .. ... .. .."],["France",["europe","european-union"],"fr","33","+.. . .. .. .. .."],["French Guiana",["america","south-america"],"gf","594"],["French Polynesia",["oceania"],"pf","689"],["Gabon",["africa"],"ga","241"],["Gambia",["africa"],"gm","220"],["Georgia",["asia","ex-ussr"],"ge","995"],["Germany",["europe","european-union"],"de","49","+.. .... ........"],["Ghana",["africa"],"gh","233"],["Gibraltar",["europe"],"gi","350"],["Greece",["europe","european-union"],"gr","30"],["Greenland",["america"],"gl","299"],["Grenada",["america","carribean"],"gd","1473"],["Guadeloupe",["america","carribean"],"gp","590","",0],["Guam",["oceania"],"gu","1671"],["Guatemala",["america","central-america"],"gt","502","+... ....-...."],["Guinea",["africa"],"gn","224"],["Guinea-Bissau",["africa"],"gw","245"],["Guyana",["america","south-america"],"gy","592"],["Haiti",["america","carribean"],"ht","509","+... ....-...."],["Honduras",["america","central-america"],"hn","504"],["Hong Kong",["asia"],"hk","852","+... .... ...."],["Hungary",["europe","european-union"],"hu","36"],["Iceland",["europe"],"is","354","+... ... ...."],["India",["asia"],"in","91","+.. .....-....."],["Indonesia",["asia"],"id","62"],["Iran",["middle-east"],"ir","98"],["Iraq",["middle-east"],"iq","964"],["Ireland",["europe","european-union"],"ie","353","+... .. ......."],["Israel",["middle-east"],"il","972","+... ... ... ...."],["Italy",["europe","european-union"],"it","39","+.. ... .......",0],["Jamaica",["america","carribean"],"jm","1876"],["Japan",["asia"],"jp","81","+.. .. .... ...."],["Jordan",["middle-east"],"jo","962"],["Kazakhstan",["asia","ex-ussr"],"kz","7","+. ... ...-..-..",1,["313","327","7172","312","73622","321","324","336","318","315","325","311","326","310"]],["Kenya",["africa"],"ke","254"],["Kiribati",["oceania"],"ki","686"],["Kuwait",["middle-east"],"kw","965"],["Kyrgyzstan",["asia","ex-ussr"],"kg","996"],["Laos",["asia"],"la","856"],["Latvia",["europe","european-union","ex-ussr"],"lv","371"],["Lebanon",["middle-east"],"lb","961"],["Lesotho",["africa"],"ls","266"],["Liberia",["africa"],"lr","231"],["Libya",["africa","north-africa"],"ly","218"],["Liechtenstein",["europe"],"li","423"],["Lithuania",["europe","european-union","ex-ussr"],"lt","370"],["Luxembourg",["europe","european-union"],"lu","352"],["Macau",["asia"],"mo","853"],["Macedonia",["europe"],"mk","389"],["Madagascar",["africa"],"mg","261"],["Malawi",["africa"],"mw","265"],["Malaysia",["asia"],"my","60","+.. ..-....-...."],["Maldives",["asia"],"mv","960"],["Mali",["africa"],"ml","223"],["Malta",["europe","european-union"],"mt","356"],["Marshall Islands",["oceania"],"mh","692"],["Martinique",["america","carribean"],"mq","596"],["Mauritania",["africa"],"mr","222"],["Mauritius",["africa"],"mu","230"],["Mexico",["america","central-america"],"mx","52"],["Micronesia",["oceania"],"fm","691"],["Moldova",["europe"],"md","373","+... (..) ..-..-.."],["Monaco",["europe"],"mc","377"],["Mongolia",["asia"],"mn","976"],["Montenegro",["europe"],"me","382"],["Montserrat",["america","carribean"],"ms","1664"],["Morocco",["africa","north-africa"],"ma","212"],["Mozambique",["africa"],"mz","258"],["Myanmar",["asia"],"mm","95"],["Namibia",["africa"],"na","264"],["Nauru",["africa"],"nr","674"],["Nepal",["asia"],"np","977"],["Netherlands",["europe","european-union"],"nl","31","+.. .. ........"],["New Caledonia",["oceania"],"nc","687"],["New Zealand",["oceania"],"nz","64","+.. ...-...-...."],["Nicaragua",["america","central-america"],"ni","505"],["Niger",["africa"],"ne","227"],["Nigeria",["africa"],"ng","234"],["Niue",["asia"],"nu","683"],["Norfolk Island",["oceania"],"nf","672"],["North Korea",["asia"],"kp","850"],["Northern Mariana Islands",["oceania"],"mp","1670"],["Norway",["europe"],"no","47","+.. ... .. ..."],["Oman",["middle-east"],"om","968"],["Pakistan",["asia"],"pk","92","+.. ...-......."],["Palau",["oceania"],"pw","680"],["Palestine",["middle-east"],"ps","970"],["Panama",["america","central-america"],"pa","507"],["Papua New Guinea",["oceania"],"pg","675"],["Paraguay",["america","south-america"],"py","595"],["Peru",["america","south-america"],"pe","51"],["Philippines",["asia"],"ph","63","+.. .... ......."],["Poland",["europe","european-union"],"pl","48","+.. ...-...-..."],["Portugal",["europe","european-union"],"pt","351"],["Puerto Rico",["america","carribean"],"pr","1","",3,["787","939"]],["Qatar",["middle-east"],"qa","974"],["R\xe9union",["africa"],"re","262"],["Romania",["europe","european-union"],"ro","40"],["Russia",["europe","asia","ex-ussr"],"ru","7","+. (...) ...-..-..",0],["Rwanda",["africa"],"rw","250"],["Saint Barth\xe9lemy",["america","carribean"],"bl","590","",1],["Saint Helena",["africa"],"sh","290"],["Saint Kitts and Nevis",["america","carribean"],"kn","1869"],["Saint Lucia",["america","carribean"],"lc","1758"],["Saint Martin",["america","carribean"],"mf","590","",2],["Saint Pierre and Miquelon",["america","north-america"],"pm","508"],["Saint Vincent and the Grenadines",["america","carribean"],"vc","1784"],["Samoa",["oceania"],"ws","685"],["San Marino",["europe"],"sm","378"],["S\xe3o Tom\xe9 and Pr\xedncipe",["africa"],"st","239"],["Saudi Arabia",["middle-east"],"sa","966"],["Senegal",["africa"],"sn","221"],["Serbia",["europe"],"rs","381"],["Seychelles",["africa"],"sc","248"],["Sierra Leone",["africa"],"sl","232"],["Singapore",["asia"],"sg","65","+.. ....-...."],["Sint Maarten",["america","carribean"],"sx","1721"],["Slovakia",["europe","european-union"],"sk","421"],["Slovenia",["europe","european-union"],"si","386"],["Solomon Islands",["oceania"],"sb","677"],["Somalia",["africa"],"so","252"],["South Africa",["africa"],"za","27"],["South Korea",["asia"],"kr","82","+.. ... .... ...."],["South Sudan",["africa","north-africa"],"ss","211"],["Spain",["europe","european-union"],"es","34","+.. ... ... ..."],["Sri Lanka",["asia"],"lk","94"],["Sudan",["africa"],"sd","249"],["Suriname",["america","south-america"],"sr","597"],["Swaziland",["africa"],"sz","268"],["Sweden",["europe","european-union"],"se","46","+.. (..) ...-..-.."],["Switzerland",["europe"],"ch","41","+.. .. ... .. .."],["Syria",["middle-east"],"sy","963"],["Taiwan",["asia"],"tw","886"],["Tajikistan",["asia","ex-ussr"],"tj","992"],["Tanzania",["africa"],"tz","255"],["Thailand",["asia"],"th","66"],["Timor-Leste",["asia"],"tl","670"],["Togo",["africa"],"tg","228"],["Tokelau",["oceania"],"tk","690"],["Tonga",["oceania"],"to","676"],["Trinidad and Tobago",["america","carribean"],"tt","1868"],["Tunisia",["africa","north-africa"],"tn","216"],["Turkey",["europe"],"tr","90","+.. ... ... .. .."],["Turkmenistan",["asia","ex-ussr"],"tm","993"],["Turks and Caicos Islands",["america","carribean"],"tc","1649"],["Tuvalu",["asia"],"tv","688"],["U.S. Virgin Islands",["america","carribean"],"vi","1340"],["Uganda",["africa"],"ug","256"],["Ukraine",["europe","ex-ussr"],"ua","380","+... (..) ... .. .."],["United Arab Emirates",["middle-east"],"ae","971"],["United Kingdom",["europe","european-union"],"gb","44","+.. .... ......"],["United States",["america","north-america"],"us","1","+. (...) ...-....",0,["907","205","251","256","334","479","501","870","480","520","602","623","928","209","213","310","323","408","415","510","530","559","562","619","626","650","661","707","714","760","805","818","831","858","909","916","925","949","951","303","719","970","203","860","202","302","239","305","321","352","386","407","561","727","772","813","850","863","904","941","954","229","404","478","706","770","912","808","319","515","563","641","712","208","217","309","312","618","630","708","773","815","847","219","260","317","574","765","812","316","620","785","913","270","502","606","859","225","318","337","504","985","413","508","617","781","978","301","410","207","231","248","269","313","517","586","616","734","810","906","989","218","320","507","612","651","763","952","314","417","573","636","660","816","228","601","662","406","252","336","704","828","910","919","701","308","402","603","201","609","732","856","908","973","505","575","702","775","212","315","516","518","585","607","631","716","718","845","914","216","330","419","440","513","614","740","937","405","580","918","503","541","215","412","570","610","717","724","814","401","803","843","864","605","423","615","731","865","901","931","210","214","254","281","325","361","409","432","512","713","806","817","830","903","915","936","940","956","972","979","435","801","276","434","540","703","757","804","802","206","253","360","425","509","262","414","608","715","920","304","307"]],["Uruguay",["america","south-america"],"uy","598"],["Uzbekistan",["asia","ex-ussr"],"uz","998"],["Vanuatu",["oceania"],"vu","678"],["Vatican City",["europe"],"va","39","+.. .. .... ....",1],["Venezuela",["america","south-america"],"ve","58"],["Vietnam",["asia"],"vn","84"],["Wallis and Futuna",["oceania"],"wf","681"],["Yemen",["middle-east"],"ye","967"],["Zambia",["africa"],"zm","260"],["Zimbabwe",["africa"],"zw","263"]].map((function(g){var I=function(g,I){return function(g){if(Array.isArray(g))return g}(g)||function(g,I){if(Symbol.iterator in Object(g)||"[object Arguments]"===Object.prototype.toString.call(g)){var e=[],t=!0,C=!1,Q=void 0;try{for(var F,B=g[Symbol.iterator]();!(t=(F=B.next()).done)&&(e.push(F.value),!I||e.length!==I);t=!0);}catch(g){C=!0,Q=g}finally{try{t||null==B.return||B.return()}finally{if(C)throw Q}}return e}}(g,I)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}(g,7),e=I[0],Q=I[1],B=I[2],n=I[3],U=I[4],s=I[5],i=I[6],c={name:e,regions:Q,iso2:B,dialCode:n,priority:s,format:U||void 0,hasAreaCodes:i},A=[];return c.hasAreaCodes&&i.forEach((function(g){var I=function(g){for(var I=1;I<arguments.length;I++){var e=null!=arguments[I]?arguments[I]:{};I%2?t(e,!0).forEach((function(I){C(g,I,e[I])})):Object.getOwnPropertyDescriptors?Object.defineProperties(g,Object.getOwnPropertyDescriptors(e)):t(e).forEach((function(I){Object.defineProperty(g,I,Object.getOwnPropertyDescriptor(e,I))}))}return g}({},c,{regions:Q,dialCode:"".concat(n).concat(g),isAreaCode:!0});A.push(I),F(B,I.dialCode)})),F(c.iso2,c.dialCode,c.hasAreaCodes),A.length>0?[c].concat(A):[c]})))||function(g){if(Symbol.iterator in Object(g)||"[object Arguments]"===Object.prototype.toString.call(g))return Array.from(g)}(B)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}());g.exports={allCountries:n,allCountryCodes:Q}},function(g,I,e){(function(I){var e="object"==typeof I&&I&&I.Object===Object&&I;g.exports=e}).call(this,e(75))},function(g,I,e){var t=e(8),C=e(16),Q=/^\s+|\s+$/g,F=/^[-+]0x[0-9a-f]+$/i,B=/^0b[01]+$/i,n=/^0o[0-7]+$/i,U=parseInt;g.exports=function(g){if("number"==typeof g)return g;if(C(g))return NaN;if(t(g)){var I="function"==typeof g.valueOf?g.valueOf():g;g=t(I)?I+"":I}if("string"!=typeof g)return 0===g?g:+g;g=g.replace(Q,"");var e=B.test(g);return e||n.test(g)?U(g.slice(2),e?2:8):F.test(g)?NaN:+g}},function(g,I){g.exports=function(g,I,e){var t=-1,C=g.length;I<0&&(I=-I>C?0:C+I),(e=e>C?C:e)<0&&(e+=C),C=I>e?0:e-I>>>0,I>>>=0;for(var Q=Array(C);++t<C;)Q[t]=g[t+I];return Q}},function(g,I){g.exports=function(g,I,e,t){for(var C=g.length,Q=e+(t?1:-1);t?Q--:++Q<C;)if(I(g[Q],Q,g))return Q;return-1}},function(g,I,e){var t=e(6),C=e(8);g.exports=function(g){if(!C(g))return!1;var I=t(g);return"[object Function]"==I||"[object GeneratorFunction]"==I||"[object AsyncFunction]"==I||"[object Proxy]"==I}},function(g,I){var e=Function.prototype.toString;g.exports=function(g){if(null!=g){try{return e.call(g)}catch(g){}try{return g+""}catch(g){}}return""}},function(g,I,e){var t=e(18),C=e(113),Q=e(114),F=e(115),B=e(116),n=e(117);function U(g){var I=this.__data__=new t(g);this.size=I.size}U.prototype.clear=C,U.prototype.delete=Q,U.prototype.get=F,U.prototype.has=B,U.prototype.set=n,g.exports=U},function(g,I,e){var t=e(118),C=e(7);g.exports=function g(I,e,Q,F,B){return I===e||(null==I||null==e||!C(I)&&!C(e)?I!=I&&e!=e:t(I,e,Q,F,g,B))}},function(g,I,e){var t=e(119),C=e(49),Q=e(122);g.exports=function(g,I,e,F,B,n){var U=1&e,s=g.length,i=I.length;if(s!=i&&!(U&&i>s))return!1;var c=n.get(g);if(c&&n.get(I))return c==I;var A=-1,l=!0,a=2&e?new t:void 0;for(n.set(g,I),n.set(I,g);++A<s;){var r=g[A],o=I[A];if(F)var d=U?F(o,r,A,I,g,n):F(r,o,A,g,I,n);if(void 0!==d){if(d)continue;l=!1;break}if(a){if(!C(I,(function(g,I){if(!Q(a,I)&&(r===g||B(r,g,e,F,n)))return a.push(I)}))){l=!1;break}}else if(r!==o&&!B(r,o,e,F,n)){l=!1;break}}return n.delete(g),n.delete(I),l}},function(g,I){g.exports=function(g,I){for(var e=-1,t=null==g?0:g.length;++e<t;)if(I(g[e],e,g))return!0;return!1}},function(g,I){g.exports=function(g,I){for(var e=-1,t=null==g?0:g.length,C=0,Q=[];++e<t;){var F=g[e];I(F,e,g)&&(Q[C++]=F)}return Q}},function(g,I,e){var t=e(135),C=e(7),Q=Object.prototype,F=Q.hasOwnProperty,B=Q.propertyIsEnumerable,n=t(function(){return arguments}())?t:function(g){return C(g)&&F.call(g,"callee")&&!B.call(g,"callee")};g.exports=n},function(g,I,e){(function(g){var t=e(3),C=e(136),Q=I&&!I.nodeType&&I,F=Q&&"object"==typeof g&&g&&!g.nodeType&&g,B=F&&F.exports===Q?t.Buffer:void 0,n=(B?B.isBuffer:void 0)||C;g.exports=n}).call(this,e(53)(g))},function(g,I){g.exports=function(g){return g.webpackPolyfill||(g.deprecate=function(){},g.paths=[],g.children||(g.children=[]),Object.defineProperty(g,"loaded",{enumerable:!0,get:function(){return g.l}}),Object.defineProperty(g,"id",{enumerable:!0,get:function(){return g.i}}),g.webpackPolyfill=1),g}},function(g,I,e){var t=e(137),C=e(138),Q=e(139),F=Q&&Q.isTypedArray,B=F?C(F):t;g.exports=B},function(g,I,e){var t=e(8);g.exports=function(g){return g==g&&!t(g)}},function(g,I){g.exports=function(g,I){return function(e){return null!=e&&e[g]===I&&(void 0!==I||g in Object(e))}}},function(g,I,e){var t=e(58),C=e(21);g.exports=function(g,I){for(var e=0,Q=(I=t(I,g)).length;null!=g&&e<Q;)g=g[C(I[e++])];return e&&e==Q?g:void 0}},function(g,I,e){var t=e(2),C=e(35),Q=e(152),F=e(28);g.exports=function(g,I){return t(g)?g:C(g,I)?[g]:Q(F(g))}},function(g,I){g.exports="data:image/png;base64,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"},function(g,I,e){var t=e(25),C=e(80),Q=e(81),F=e(84),B=e(85),n=e(28),U=/^\s+|\s+$/g;g.exports=function(g,I,e){if((g=n(g))&&(e||void 0===I))return g.replace(U,"");if(!g||!(I=t(I)))return g;var s=B(g),i=B(I),c=F(s,i),A=Q(s,i)+1;return C(s,c,A).join("")}},function(g,I,e){var t=e(8),C=e(110),Q=e(41),F=Math.max,B=Math.min;g.exports=function(g,I,e){var n,U,s,i,c,A,l=0,a=!1,r=!1,o=!0;if("function"!=typeof g)throw new TypeError("Expected a function");function d(I){var e=n,t=U;return n=U=void 0,l=I,i=g.apply(t,e)}function u(g){var e=g-A;return void 0===A||e>=I||e<0||r&&g-l>=s}function y(){var g=C();if(u(g))return b(g);c=setTimeout(y,function(g){var e=I-(g-A);return r?B(e,s-(g-l)):e}(g))}function b(g){return c=void 0,o&&n?d(g):(n=U=void 0,i)}function Z(){var g=C(),e=u(g);if(n=arguments,U=this,A=g,e){if(void 0===c)return function(g){return l=g,c=setTimeout(y,I),a?d(g):i}(A);if(r)return clearTimeout(c),c=setTimeout(y,I),d(A)}return void 0===c&&(c=setTimeout(y,I)),i}return I=Q(I)||0,t(e)&&(a=!!e.leading,s=(r="maxWait"in e)?F(Q(e.maxWait)||0,I):s,o="trailing"in e?!!e.trailing:o),Z.cancel=function(){void 0!==c&&clearTimeout(c),l=0,n=A=U=c=void 0},Z.flush=function(){return void 0===c?i:b(C())},Z}},function(g,I,e){var t=e(42);g.exports=function(g){var I=null==g?0:g.length;return I?t(g,1,I):[]}},function(g,I){g.exports=function(g){return g&&g.length?g[0]:void 0}},function(g,I,e){var t=e(29),C=e(11),Q=e(36),F=e(27),B=e(161),n=Math.max;g.exports=function(g,I,e,U){g=C(g)?g:B(g),e=e&&!U?F(e):0;var s=g.length;return e<0&&(e=n(s+e,0)),Q(g)?e<=s&&g.indexOf(I,e)>-1:!!s&&t(g,I,e)>-1}},function(g,I){g.exports=e(14)},function(g,I){g.exports=e(61)},function(g,I){g.exports=e(137)},function(g,I){g.exports=e(35)},function(g,I){g.exports=e(1281)},function(g,I){g.exports=e(127)},function(g,I){g.exports=e(1282)},function(g,I){g.exports=e(1283)},function(g,I){g.exports=e(179)},function(g,I){g.exports=e(1672)},function(g,I){var e;e=function(){return this}();try{e=e||new Function("return this")()}catch(g){"object"==typeof window&&(e=window)}g.exports=e},function(g,I,e){var t=e(15),C=Object.prototype,Q=C.hasOwnProperty,F=C.toString,B=t?t.toStringTag:void 0;g.exports=function(g){var I=Q.call(g,B),e=g[B];try{g[B]=void 0;var t=!0}catch(g){}var C=F.call(g);return t&&(I?g[B]=e:delete g[B]),C}},function(g,I){var e=Object.prototype.toString;g.exports=function(g){return e.call(g)}},function(g,I){g.exports=function(g,I,e){return g==g&&(void 0!==e&&(g=g<=e?g:e),void 0!==I&&(g=g>=I?g:I)),g}},function(g,I,e){var t=e(41);g.exports=function(g){return g?(g=t(g))===1/0||g===-1/0?17976931348623157e292*(g<0?-1:1):g==g?g:0:0===g?g:0}},function(g,I,e){var t=e(42);g.exports=function(g,I,e){var C=g.length;return e=void 0===e?C:e,!I&&e>=C?g:t(g,I,e)}},function(g,I,e){var t=e(29);g.exports=function(g,I){for(var e=g.length;e--&&t(I,g[e],0)>-1;);return e}},function(g,I){g.exports=function(g){return g!=g}},function(g,I){g.exports=function(g,I,e){for(var t=e-1,C=g.length;++t<C;)if(g[t]===I)return t;return-1}},function(g,I,e){var t=e(29);g.exports=function(g,I){for(var e=-1,C=g.length;++e<C&&t(I,g[e],0)>-1;);return e}},function(g,I,e){var t=e(86),C=e(87),Q=e(88);g.exports=function(g){return C(g)?Q(g):t(g)}},function(g,I){g.exports=function(g){return g.split("")}},function(g,I){var e=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");g.exports=function(g){return e.test(g)}},function(g,I){var e="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",t="\\ud83c[\\udffb-\\udfff]",C="[^\\ud800-\\udfff]",Q="(?:\\ud83c[\\udde6-\\uddff]){2}",F="[\\ud800-\\udbff][\\udc00-\\udfff]",B="(?:"+e+"|"+t+")?",n="[\\ufe0e\\ufe0f]?"+B+"(?:\\u200d(?:"+[C,Q,F].join("|")+")[\\ufe0e\\ufe0f]?"+B+")*",U="(?:"+[C+e+"?",e,Q,F,"[\\ud800-\\udfff]"].join("|")+")",s=RegExp(t+"(?="+t+")|"+U+n,"g");g.exports=function(g){return g.match(s)||[]}},function(g,I,e){var t=e(90),C=e(18),Q=e(32);g.exports=function(){this.size=0,this.__data__={hash:new t,map:new(Q||C),string:new t}}},function(g,I,e){var t=e(91),C=e(96),Q=e(97),F=e(98),B=e(99);function n(g){var I=-1,e=null==g?0:g.length;for(this.clear();++I<e;){var t=g[I];this.set(t[0],t[1])}}n.prototype.clear=t,n.prototype.delete=C,n.prototype.get=Q,n.prototype.has=F,n.prototype.set=B,g.exports=n},function(g,I,e){var t=e(17);g.exports=function(){this.__data__=t?t(null):{},this.size=0}},function(g,I,e){var t=e(44),C=e(93),Q=e(8),F=e(45),B=/^\[object .+?Constructor\]$/,n=Function.prototype,U=Object.prototype,s=n.toString,i=U.hasOwnProperty,c=RegExp("^"+s.call(i).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");g.exports=function(g){return!(!Q(g)||C(g))&&(t(g)?c:B).test(F(g))}},function(g,I,e){var t,C=e(94),Q=(t=/[^.]+$/.exec(C&&C.keys&&C.keys.IE_PROTO||""))?"Symbol(src)_1."+t:"";g.exports=function(g){return!!Q&&Q in g}},function(g,I,e){var t=e(3)["__core-js_shared__"];g.exports=t},function(g,I){g.exports=function(g,I){return null==g?void 0:g[I]}},function(g,I){g.exports=function(g){var I=this.has(g)&&delete this.__data__[g];return this.size-=I?1:0,I}},function(g,I,e){var t=e(17),C=Object.prototype.hasOwnProperty;g.exports=function(g){var I=this.__data__;if(t){var e=I[g];return"__lodash_hash_undefined__"===e?void 0:e}return C.call(I,g)?I[g]:void 0}},function(g,I,e){var t=e(17),C=Object.prototype.hasOwnProperty;g.exports=function(g){var I=this.__data__;return t?void 0!==I[g]:C.call(I,g)}},function(g,I,e){var t=e(17);g.exports=function(g,I){var e=this.__data__;return this.size+=this.has(g)?0:1,e[g]=t&&void 0===I?"__lodash_hash_undefined__":I,this}},function(g,I){g.exports=function(){this.__data__=[],this.size=0}},function(g,I,e){var t=e(19),C=Array.prototype.splice;g.exports=function(g){var I=this.__data__,e=t(I,g);return!(e<0)&&(e==I.length-1?I.pop():C.call(I,e,1),--this.size,!0)}},function(g,I,e){var t=e(19);g.exports=function(g){var I=this.__data__,e=t(I,g);return e<0?void 0:I[e][1]}},function(g,I,e){var t=e(19);g.exports=function(g){return t(this.__data__,g)>-1}},function(g,I,e){var t=e(19);g.exports=function(g,I){var e=this.__data__,C=t(e,g);return C<0?(++this.size,e.push([g,I])):e[C][1]=I,this}},function(g,I,e){var t=e(20);g.exports=function(g){var I=t(this,g).delete(g);return this.size-=I?1:0,I}},function(g,I){g.exports=function(g){var I=typeof g;return"string"==I||"number"==I||"symbol"==I||"boolean"==I?"__proto__"!==g:null===g}},function(g,I,e){var t=e(20);g.exports=function(g){return t(this,g).get(g)}},function(g,I,e){var t=e(20);g.exports=function(g){return t(this,g).has(g)}},function(g,I,e){var t=e(20);g.exports=function(g,I){var e=t(this,g),C=e.size;return e.set(g,I),this.size+=e.size==C?0:1,this}},function(g,I,e){var t=e(3);g.exports=function(){return t.Date.now()}},function(g,I,e){var t=e(112),C=e(149),Q=e(56);g.exports=function(g){var I=C(g);return 1==I.length&&I[0][2]?Q(I[0][0],I[0][1]):function(e){return e===g||t(e,g,I)}}},function(g,I,e){var t=e(46),C=e(47);g.exports=function(g,I,e,Q){var F=e.length,B=F,n=!Q;if(null==g)return!B;for(g=Object(g);F--;){var U=e[F];if(n&&U[2]?U[1]!==g[U[0]]:!(U[0]in g))return!1}for(;++F<B;){var s=(U=e[F])[0],i=g[s],c=U[1];if(n&&U[2]){if(void 0===i&&!(s in g))return!1}else{var A=new t;if(Q)var l=Q(i,c,s,g,I,A);if(!(void 0===l?C(c,i,3,Q,A):l))return!1}}return!0}},function(g,I,e){var t=e(18);g.exports=function(){this.__data__=new t,this.size=0}},function(g,I){g.exports=function(g){var I=this.__data__,e=I.delete(g);return this.size=I.size,e}},function(g,I){g.exports=function(g){return this.__data__.get(g)}},function(g,I){g.exports=function(g){return this.__data__.has(g)}},function(g,I,e){var t=e(18),C=e(32),Q=e(30);g.exports=function(g,I){var e=this.__data__;if(e instanceof t){var F=e.__data__;if(!C||F.length<199)return F.push([g,I]),this.size=++e.size,this;e=this.__data__=new Q(F)}return e.set(g,I),this.size=e.size,this}},function(g,I,e){var t=e(46),C=e(48),Q=e(123),F=e(127),B=e(144),n=e(2),U=e(52),s=e(54),i="[object Arguments]",c="[object Array]",A="[object Object]",l=Object.prototype.hasOwnProperty;g.exports=function(g,I,e,a,r,o){var d=n(g),u=n(I),y=d?c:B(g),b=u?c:B(I),Z=(y=y==i?A:y)==A,m=(b=b==i?A:b)==A,x=y==b;if(x&&U(g)){if(!U(I))return!1;d=!0,Z=!1}if(x&&!Z)return o||(o=new t),d||s(g)?C(g,I,e,a,r,o):Q(g,I,y,e,a,r,o);if(!(1&e)){var R=Z&&l.call(g,"__wrapped__"),S=m&&l.call(I,"__wrapped__");if(R||S){var G=R?g.value():g,L=S?I.value():I;return o||(o=new t),r(G,L,e,a,o)}}return!!x&&(o||(o=new t),F(g,I,e,a,r,o))}},function(g,I,e){var t=e(30),C=e(120),Q=e(121);function F(g){var I=-1,e=null==g?0:g.length;for(this.__data__=new t;++I<e;)this.add(g[I])}F.prototype.add=F.prototype.push=C,F.prototype.has=Q,g.exports=F},function(g,I){g.exports=function(g){return this.__data__.set(g,"__lodash_hash_undefined__"),this}},function(g,I){g.exports=function(g){return this.__data__.has(g)}},function(g,I){g.exports=function(g,I){return g.has(I)}},function(g,I,e){var t=e(15),C=e(124),Q=e(31),F=e(48),B=e(125),n=e(126),U=t?t.prototype:void 0,s=U?U.valueOf:void 0;g.exports=function(g,I,e,t,U,i,c){switch(e){case"[object DataView]":if(g.byteLength!=I.byteLength||g.byteOffset!=I.byteOffset)return!1;g=g.buffer,I=I.buffer;case"[object ArrayBuffer]":return!(g.byteLength!=I.byteLength||!i(new C(g),new C(I)));case"[object Boolean]":case"[object Date]":case"[object Number]":return Q(+g,+I);case"[object Error]":return g.name==I.name&&g.message==I.message;case"[object RegExp]":case"[object String]":return g==I+"";case"[object Map]":var A=B;case"[object Set]":var l=1&t;if(A||(A=n),g.size!=I.size&&!l)return!1;var a=c.get(g);if(a)return a==I;t|=2,c.set(g,I);var r=F(A(g),A(I),t,U,i,c);return c.delete(g),r;case"[object Symbol]":if(s)return s.call(g)==s.call(I)}return!1}},function(g,I,e){var t=e(3).Uint8Array;g.exports=t},function(g,I){g.exports=function(g){var I=-1,e=Array(g.size);return g.forEach((function(g,t){e[++I]=[t,g]})),e}},function(g,I){g.exports=function(g){var I=-1,e=Array(g.size);return g.forEach((function(g){e[++I]=g})),e}},function(g,I,e){var t=e(128),C=Object.prototype.hasOwnProperty;g.exports=function(g,I,e,Q,F,B){var n=1&e,U=t(g),s=U.length;if(s!=t(I).length&&!n)return!1;for(var i=s;i--;){var c=U[i];if(!(n?c in I:C.call(I,c)))return!1}var A=B.get(g);if(A&&B.get(I))return A==I;var l=!0;B.set(g,I),B.set(I,g);for(var a=n;++i<s;){var r=g[c=U[i]],o=I[c];if(Q)var d=n?Q(o,r,c,I,g,B):Q(r,o,c,g,I,B);if(!(void 0===d?r===o||F(r,o,e,Q,B):d)){l=!1;break}a||(a="constructor"==c)}if(l&&!a){var u=g.constructor,y=I.constructor;u!=y&&"constructor"in g&&"constructor"in I&&!("function"==typeof u&&u instanceof u&&"function"==typeof y&&y instanceof y)&&(l=!1)}return B.delete(g),B.delete(I),l}},function(g,I,e){var t=e(129),C=e(131),Q=e(13);g.exports=function(g){return t(g,Q,C)}},function(g,I,e){var t=e(130),C=e(2);g.exports=function(g,I,e){var Q=I(g);return C(g)?Q:t(Q,e(g))}},function(g,I){g.exports=function(g,I){for(var e=-1,t=I.length,C=g.length;++e<t;)g[C+e]=I[e];return g}},function(g,I,e){var t=e(50),C=e(132),Q=Object.prototype.propertyIsEnumerable,F=Object.getOwnPropertySymbols,B=F?function(g){return null==g?[]:(g=Object(g),t(F(g),(function(I){return Q.call(g,I)})))}:C;g.exports=B},function(g,I){g.exports=function(){return[]}},function(g,I,e){var t=e(134),C=e(51),Q=e(2),F=e(52),B=e(33),n=e(54),U=Object.prototype.hasOwnProperty;g.exports=function(g,I){var e=Q(g),s=!e&&C(g),i=!e&&!s&&F(g),c=!e&&!s&&!i&&n(g),A=e||s||i||c,l=A?t(g.length,String):[],a=l.length;for(var r in g)!I&&!U.call(g,r)||A&&("length"==r||i&&("offset"==r||"parent"==r)||c&&("buffer"==r||"byteLength"==r||"byteOffset"==r)||B(r,a))||l.push(r);return l}},function(g,I){g.exports=function(g,I){for(var e=-1,t=Array(g);++e<g;)t[e]=I(e);return t}},function(g,I,e){var t=e(6),C=e(7);g.exports=function(g){return C(g)&&"[object Arguments]"==t(g)}},function(g,I){g.exports=function(){return!1}},function(g,I,e){var t=e(6),C=e(34),Q=e(7),F={};F["[object Float32Array]"]=F["[object Float64Array]"]=F["[object Int8Array]"]=F["[object Int16Array]"]=F["[object Int32Array]"]=F["[object Uint8Array]"]=F["[object Uint8ClampedArray]"]=F["[object Uint16Array]"]=F["[object Uint32Array]"]=!0,F["[object Arguments]"]=F["[object Array]"]=F["[object ArrayBuffer]"]=F["[object Boolean]"]=F["[object DataView]"]=F["[object Date]"]=F["[object Error]"]=F["[object Function]"]=F["[object Map]"]=F["[object Number]"]=F["[object Object]"]=F["[object RegExp]"]=F["[object Set]"]=F["[object String]"]=F["[object WeakMap]"]=!1,g.exports=function(g){return Q(g)&&C(g.length)&&!!F[t(g)]}},function(g,I){g.exports=function(g){return function(I){return g(I)}}},function(g,I,e){(function(g){var t=e(40),C=I&&!I.nodeType&&I,Q=C&&"object"==typeof g&&g&&!g.nodeType&&g,F=Q&&Q.exports===C&&t.process,B=function(){try{return Q&&Q.require&&Q.require("util").types||F&&F.binding&&F.binding("util")}catch(g){}}();g.exports=B}).call(this,e(53)(g))},function(g,I,e){var t=e(141),C=e(142),Q=Object.prototype.hasOwnProperty;g.exports=function(g){if(!t(g))return C(g);var I=[];for(var e in Object(g))Q.call(g,e)&&"constructor"!=e&&I.push(e);return I}},function(g,I){var e=Object.prototype;g.exports=function(g){var I=g&&g.constructor;return g===("function"==typeof I&&I.prototype||e)}},function(g,I,e){var t=e(143)(Object.keys,Object);g.exports=t},function(g,I){g.exports=function(g,I){return function(e){return g(I(e))}}},function(g,I,e){var t=e(145),C=e(32),Q=e(146),F=e(147),B=e(148),n=e(6),U=e(45),s=U(t),i=U(C),c=U(Q),A=U(F),l=U(B),a=n;(t&&"[object DataView]"!=a(new t(new ArrayBuffer(1)))||C&&"[object Map]"!=a(new C)||Q&&"[object Promise]"!=a(Q.resolve())||F&&"[object Set]"!=a(new F)||B&&"[object WeakMap]"!=a(new B))&&(a=function(g){var I=n(g),e="[object Object]"==I?g.constructor:void 0,t=e?U(e):"";if(t)switch(t){case s:return"[object DataView]";case i:return"[object Map]";case c:return"[object Promise]";case A:return"[object Set]";case l:return"[object WeakMap]"}return I}),g.exports=a},function(g,I,e){var t=e(9)(e(3),"DataView");g.exports=t},function(g,I,e){var t=e(9)(e(3),"Promise");g.exports=t},function(g,I,e){var t=e(9)(e(3),"Set");g.exports=t},function(g,I,e){var t=e(9)(e(3),"WeakMap");g.exports=t},function(g,I,e){var t=e(55),C=e(13);g.exports=function(g){for(var I=C(g),e=I.length;e--;){var Q=I[e],F=g[Q];I[e]=[Q,F,t(F)]}return I}},function(g,I,e){var t=e(47),C=e(151),Q=e(154),F=e(35),B=e(55),n=e(56),U=e(21);g.exports=function(g,I){return F(g)&&B(I)?n(U(g),I):function(e){var F=C(e,g);return void 0===F&&F===I?Q(e,g):t(I,F,3)}}},function(g,I,e){var t=e(57);g.exports=function(g,I,e){var C=null==g?void 0:t(g,I);return void 0===C?e:C}},function(g,I,e){var t=e(153),C=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Q=/\\(\\)?/g,F=t((function(g){var I=[];return 46===g.charCodeAt(0)&&I.push(""),g.replace(C,(function(g,e,t,C){I.push(t?C.replace(Q,"$1"):e||g)})),I}));g.exports=F},function(g,I,e){var t=e(23);g.exports=function(g){var I=t(g,(function(g){return 500===e.size&&e.clear(),g})),e=I.cache;return I}},function(g,I,e){var t=e(155),C=e(156);g.exports=function(g,I){return null!=g&&C(g,I,t)}},function(g,I){g.exports=function(g,I){return null!=g&&I in Object(g)}},function(g,I,e){var t=e(58),C=e(51),Q=e(2),F=e(33),B=e(34),n=e(21);g.exports=function(g,I,e){for(var U=-1,s=(I=t(I,g)).length,i=!1;++U<s;){var c=n(I[U]);if(!(i=null!=g&&e(g,c)))break;g=g[c]}return i||++U!=s?i:!!(s=null==g?0:g.length)&&B(s)&&F(c,s)&&(Q(g)||C(g))}},function(g,I){g.exports=function(g){return g}},function(g,I,e){var t=e(159),C=e(160),Q=e(35),F=e(21);g.exports=function(g){return Q(g)?t(F(g)):C(g)}},function(g,I){g.exports=function(g){return function(I){return null==I?void 0:I[g]}}},function(g,I,e){var t=e(57);g.exports=function(g){return function(I){return t(I,g)}}},function(g,I,e){var t=e(162),C=e(13);g.exports=function(g){return null==g?[]:t(g,C(g))}},function(g,I,e){var t=e(26);g.exports=function(g,I){return t(I,(function(I){return g[I]}))}},function(g,I,e){var t=e(22);g.exports=function(g,I){var e=[];return t(g,(function(g,t,C){I(g,t,C)&&e.push(g)})),e}},function(g,I,e){var t=e(165),C=e(13);g.exports=function(g,I){return g&&t(g,I,C)}},function(g,I,e){var t=e(166)();g.exports=t},function(g,I){g.exports=function(g){return function(I,e,t){for(var C=-1,Q=Object(I),F=t(I),B=F.length;B--;){var n=F[g?B:++C];if(!1===e(Q[n],n,Q))break}return I}}},function(g,I,e){var t=e(11);g.exports=function(g,I){return function(e,C){if(null==e)return e;if(!t(e))return g(e,C);for(var Q=e.length,F=I?Q:-1,B=Object(e);(I?F--:++F<Q)&&!1!==C(B[F],F,B););return e}}},function(g,I,e){var t=e(22),C=e(11);g.exports=function(g,I){var e=-1,Q=C(g)?Array(g.length):[];return t(g,(function(g,t,C){Q[++e]=I(g,t,C)})),Q}},function(g,I){g.exports=function(g,I,e,t){var C=-1,Q=null==g?0:g.length;for(t&&Q&&(e=g[++C]);++C<Q;)e=I(e,g[C],C,g);return e}},function(g,I){g.exports=function(g,I,e,t,C){return C(g,(function(g,C,Q){e=t?(t=!1,g):I(e,g,C,Q)})),e}},function(g,I,e){var t=e(10),C=e(11),Q=e(13);g.exports=function(g){return function(I,e,F){var B=Object(I);if(!C(I)){var n=t(e,3);I=Q(I),e=function(g){return n(B[g],g,B)}}var U=g(I,e,F);return U>-1?B[n?I[U]:U]:void 0}}},function(g,I,e){var t=e(22);g.exports=function(g,I){var e;return t(g,(function(g,t,C){return!(e=I(g,t,C))})),!!e}},function(g,I,e){var t=e(31),C=e(11),Q=e(33),F=e(8);g.exports=function(g,I,e){if(!F(e))return!1;var B=typeof I;return!!("number"==B?C(e)&&Q(I,e.length):"string"==B&&I in e)&&t(e[I],g)}},function(g,I,e){"use strict";var t=e(175);function C(){}function Q(){}Q.resetWarningCache=C,g.exports=function(){function g(g,I,e,C,Q,F){if(F!==t){var B=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw B.name="Invariant Violation",B}}function I(){return g}g.isRequired=g;var e={array:g,bool:g,func:g,number:g,object:g,string:g,symbol:g,any:g,arrayOf:I,element:g,elementType:g,instanceOf:I,node:g,objectOf:I,oneOf:I,oneOfType:I,shape:I,exact:I,checkPropTypes:Q,resetWarningCache:C};return e.PropTypes=e,e}},function(g,I,e){"use strict";g.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(g,I,e){var t=e(177);"string"==typeof t&&(t=[[g.i,t,""]]);e(180)(t,{hmr:!0,transform:void 0,insertInto:void 0}),t.locals&&(g.exports=t.locals)},function(g,I,e){I=g.exports=e(178)(!1);var t=e(179)(e(59));I.push([g.i,".flag {\n  width: 16px;\n  height: 11px;\n  background-image: url("+t+") !important;\n}\n.flag.margin {\n  margin-right: 8px;\n}\n.flag.ad {\n  background-position: -16px 0;\n}\n.flag.ae {\n  background-position: -32px 0;\n}\n.flag.af {\n  background-position: -48px 0;\n}\n.flag.ag {\n  background-position: -64px 0;\n}\n.flag.ai {\n  background-position: -80px 0;\n}\n.flag.al {\n  background-position: -96px 0;\n}\n.flag.am {\n  background-position: -112px 0;\n}\n.flag.ao {\n  background-position: -128px 0;\n}\n.flag.ar {\n  background-position: -144px 0;\n}\n.flag.as {\n  background-position: -160px 0;\n}\n.flag.at {\n  background-position: -176px 0;\n}\n.flag.au {\n  background-position: -192px 0;\n}\n.flag.aw {\n  background-position: -208px 0;\n}\n.flag.az {\n  background-position: -224px 0;\n}\n.flag.ba {\n  background-position: -240px 0;\n}\n.flag.bb {\n  background-position: 0 -11px;\n}\n.flag.bd {\n  background-position: -16px -11px;\n}\n.flag.be {\n  background-position: -32px -11px;\n}\n.flag.bf {\n  background-position: -48px -11px;\n}\n.flag.bg {\n  background-position: -64px -11px;\n}\n.flag.bh {\n  background-position: -80px -11px;\n}\n.flag.bi {\n  background-position: -96px -11px;\n}\n.flag.bj {\n  background-position: -112px -11px;\n}\n.flag.bm {\n  background-position: -128px -11px;\n}\n.flag.bn {\n  background-position: -144px -11px;\n}\n.flag.bo {\n  background-position: -160px -11px;\n}\n.flag.br {\n  background-position: -176px -11px;\n}\n.flag.bs {\n  background-position: -192px -11px;\n}\n.flag.bt {\n  background-position: -208px -11px;\n}\n.flag.bw {\n  background-position: -224px -11px;\n}\n.flag.by {\n  background-position: -240px -11px;\n}\n.flag.bz {\n  background-position: 0 -22px;\n}\n.flag.ca {\n  background-position: -16px -22px;\n}\n.flag.cd {\n  background-position: -32px -22px;\n}\n.flag.cf {\n  background-position: -48px -22px;\n}\n.flag.cg {\n  background-position: -64px -22px;\n}\n.flag.ch {\n  background-position: -80px -22px;\n}\n.flag.ci {\n  background-position: -96px -22px;\n}\n.flag.ck {\n  background-position: -112px -22px;\n}\n.flag.cl {\n  background-position: -128px -22px;\n}\n.flag.cm {\n  background-position: -144px -22px;\n}\n.flag.cn {\n  background-position: -160px -22px;\n}\n.flag.co {\n  background-position: -176px -22px;\n}\n.flag.cr {\n  background-position: -192px -22px;\n}\n.flag.cu {\n  background-position: -208px -22px;\n}\n.flag.cv {\n  background-position: -224px -22px;\n}\n.flag.cw {\n  background-position: -240px -22px;\n}\n.flag.cy {\n  background-position: 0 -33px;\n}\n.flag.cz {\n  background-position: -16px -33px;\n}\n.flag.de {\n  background-position: -32px -33px;\n}\n.flag.dj {\n  background-position: -48px -33px;\n}\n.flag.dk {\n  background-position: -64px -33px;\n}\n.flag.dm {\n  background-position: -80px -33px;\n}\n.flag.do {\n  background-position: -96px -33px;\n}\n.flag.dz {\n  background-position: -112px -33px;\n}\n.flag.ec {\n  background-position: -128px -33px;\n}\n.flag.ee {\n  background-position: -144px -33px;\n}\n.flag.eg {\n  background-position: -160px -33px;\n}\n.flag.er {\n  background-position: -176px -33px;\n}\n.flag.es {\n  background-position: -192px -33px;\n}\n.flag.et {\n  background-position: -208px -33px;\n}\n.flag.fi {\n  background-position: -224px -33px;\n}\n.flag.fj {\n  background-position: -240px -33px;\n}\n.flag.fk {\n  background-position: 0 -44px;\n}\n.flag.fm {\n  background-position: -16px -44px;\n}\n.flag.fo {\n  background-position: -32px -44px;\n}\n.flag.fr,\n.flag.bl,\n.flag.mf {\n  background-position: -48px -44px;\n}\n.flag.ga {\n  background-position: -64px -44px;\n}\n.flag.gb {\n  background-position: -80px -44px;\n}\n.flag.gd {\n  background-position: -96px -44px;\n}\n.flag.ge {\n  background-position: -112px -44px;\n}\n.flag.gf {\n  background-position: -128px -44px;\n}\n.flag.gh {\n  background-position: -144px -44px;\n}\n.flag.gi {\n  background-position: -160px -44px;\n}\n.flag.gl {\n  background-position: -176px -44px;\n}\n.flag.gm {\n  background-position: -192px -44px;\n}\n.flag.gn {\n  background-position: -208px -44px;\n}\n.flag.gp {\n  background-position: -224px -44px;\n}\n.flag.gq {\n  background-position: -240px -44px;\n}\n.flag.gr {\n  background-position: 0 -55px;\n}\n.flag.gt {\n  background-position: -16px -55px;\n}\n.flag.gu {\n  background-position: -32px -55px;\n}\n.flag.gw {\n  background-position: -48px -55px;\n}\n.flag.gy {\n  background-position: -64px -55px;\n}\n.flag.hk {\n  background-position: -80px -55px;\n}\n.flag.hn {\n  background-position: -96px -55px;\n}\n.flag.hr {\n  background-position: -112px -55px;\n}\n.flag.ht {\n  background-position: -128px -55px;\n}\n.flag.hu {\n  background-position: -144px -55px;\n}\n.flag.id {\n  background-position: -160px -55px;\n}\n.flag.ie {\n  background-position: -176px -55px;\n}\n.flag.il {\n  background-position: -192px -55px;\n}\n.flag.in {\n  background-position: -208px -55px;\n}\n.flag.io {\n  background-position: -224px -55px;\n}\n.flag.iq {\n  background-position: -240px -55px;\n}\n.flag.ir {\n  background-position: 0 -66px;\n}\n.flag.is {\n  background-position: -16px -66px;\n}\n.flag.it {\n  background-position: -32px -66px;\n}\n.flag.jm {\n  background-position: -48px -66px;\n}\n.flag.jo {\n  background-position: -64px -66px;\n}\n.flag.jp {\n  background-position: -80px -66px;\n}\n.flag.ke {\n  background-position: -96px -66px;\n}\n.flag.kg {\n  background-position: -112px -66px;\n}\n.flag.kh {\n  background-position: -128px -66px;\n}\n.flag.ki {\n  background-position: -144px -66px;\n}\n.flag.km {\n  background-position: -160px -66px;\n}\n.flag.kn {\n  background-position: -176px -66px;\n}\n.flag.kp {\n  background-position: -192px -66px;\n}\n.flag.kr {\n  background-position: -208px -66px;\n}\n.flag.kw {\n  background-position: -224px -66px;\n}\n.flag.ky {\n  background-position: -240px -66px;\n}\n.flag.kz {\n  background-position: 0 -77px;\n}\n.flag.la {\n  background-position: -16px -77px;\n}\n.flag.lb {\n  background-position: -32px -77px;\n}\n.flag.lc {\n  background-position: -48px -77px;\n}\n.flag.li {\n  background-position: -64px -77px;\n}\n.flag.lk {\n  background-position: -80px -77px;\n}\n.flag.lr {\n  background-position: -96px -77px;\n}\n.flag.ls {\n  background-position: -112px -77px;\n}\n.flag.lt {\n  background-position: -128px -77px;\n}\n.flag.lu {\n  background-position: -144px -77px;\n}\n.flag.lv {\n  background-position: -160px -77px;\n}\n.flag.ly {\n  background-position: -176px -77px;\n}\n.flag.ma {\n  background-position: -192px -77px;\n}\n.flag.mc {\n  background-position: -208px -77px;\n}\n.flag.md {\n  background-position: -224px -77px;\n}\n.flag.me {\n  background-position: -112px -154px;\n  height: 12px;\n}\n.flag.mg {\n  background-position: 0 -88px;\n}\n.flag.mh {\n  background-position: -16px -88px;\n}\n.flag.mk {\n  background-position: -32px -88px;\n}\n.flag.ml {\n  background-position: -48px -88px;\n}\n.flag.mm {\n  background-position: -64px -88px;\n}\n.flag.mn {\n  background-position: -80px -88px;\n}\n.flag.mo {\n  background-position: -96px -88px;\n}\n.flag.mp {\n  background-position: -112px -88px;\n}\n.flag.mq {\n  background-position: -128px -88px;\n}\n.flag.mr {\n  background-position: -144px -88px;\n}\n.flag.ms {\n  background-position: -160px -88px;\n}\n.flag.mt {\n  background-position: -176px -88px;\n}\n.flag.mu {\n  background-position: -192px -88px;\n}\n.flag.mv {\n  background-position: -208px -88px;\n}\n.flag.mw {\n  background-position: -224px -88px;\n}\n.flag.mx {\n  background-position: -240px -88px;\n}\n.flag.my {\n  background-position: 0 -99px;\n}\n.flag.mz {\n  background-position: -16px -99px;\n}\n.flag.na {\n  background-position: -32px -99px;\n}\n.flag.nc {\n  background-position: -48px -99px;\n}\n.flag.ne {\n  background-position: -64px -99px;\n}\n.flag.nf {\n  background-position: -80px -99px;\n}\n.flag.ng {\n  background-position: -96px -99px;\n}\n.flag.ni {\n  background-position: -112px -99px;\n}\n.flag.nl,\n.flag.bq {\n  background-position: -128px -99px;\n}\n.flag.no {\n  background-position: -144px -99px;\n}\n.flag.np {\n  background-position: -160px -99px;\n}\n.flag.nr {\n  background-position: -176px -99px;\n}\n.flag.nu {\n  background-position: -192px -99px;\n}\n.flag.nz {\n  background-position: -208px -99px;\n}\n.flag.om {\n  background-position: -224px -99px;\n}\n.flag.pa {\n  background-position: -240px -99px;\n}\n.flag.pe {\n  background-position: 0 -110px;\n}\n.flag.pf {\n  background-position: -16px -110px;\n}\n.flag.pg {\n  background-position: -32px -110px;\n}\n.flag.ph {\n  background-position: -48px -110px;\n}\n.flag.pk {\n  background-position: -64px -110px;\n}\n.flag.pl {\n  background-position: -80px -110px;\n}\n.flag.pm {\n  background-position: -96px -110px;\n}\n.flag.pr {\n  background-position: -112px -110px;\n}\n.flag.ps {\n  background-position: -128px -110px;\n}\n.flag.pt {\n  background-position: -144px -110px;\n}\n.flag.pw {\n  background-position: -160px -110px;\n}\n.flag.py {\n  background-position: -176px -110px;\n}\n.flag.qa {\n  background-position: -192px -110px;\n}\n.flag.re {\n  background-position: -208px -110px;\n}\n.flag.ro {\n  background-position: -224px -110px;\n}\n.flag.rs {\n  background-position: -240px -110px;\n}\n.flag.ru {\n  background-position: 0 -121px;\n}\n.flag.rw {\n  background-position: -16px -121px;\n}\n.flag.sa {\n  background-position: -32px -121px;\n}\n.flag.sb {\n  background-position: -48px -121px;\n}\n.flag.sc {\n  background-position: -64px -121px;\n}\n.flag.sd {\n  background-position: -80px -121px;\n}\n.flag.se {\n  background-position: -96px -121px;\n}\n.flag.sg {\n  background-position: -112px -121px;\n}\n.flag.sh {\n  background-position: -128px -121px;\n}\n.flag.si {\n  background-position: -144px -121px;\n}\n.flag.sk {\n  background-position: -160px -121px;\n}\n.flag.sl {\n  background-position: -176px -121px;\n}\n.flag.sm {\n  background-position: -192px -121px;\n}\n.flag.sn {\n  background-position: -208px -121px;\n}\n.flag.so {\n  background-position: -224px -121px;\n}\n.flag.sr {\n  background-position: -240px -121px;\n}\n.flag.ss {\n  background-position: 0 -132px;\n}\n.flag.st {\n  background-position: -16px -132px;\n}\n.flag.sv {\n  background-position: -32px -132px;\n}\n.flag.sx {\n  background-position: -48px -132px;\n}\n.flag.sy {\n  background-position: -64px -132px;\n}\n.flag.sz {\n  background-position: -80px -132px;\n}\n.flag.tc {\n  background-position: -96px -132px;\n}\n.flag.td {\n  background-position: -112px -132px;\n}\n.flag.tg {\n  background-position: -128px -132px;\n}\n.flag.th {\n  background-position: -144px -132px;\n}\n.flag.tj {\n  background-position: -160px -132px;\n}\n.flag.tk {\n  background-position: -176px -132px;\n}\n.flag.tl {\n  background-position: -192px -132px;\n}\n.flag.tm {\n  background-position: -208px -132px;\n}\n.flag.tn {\n  background-position: -224px -132px;\n}\n.flag.to {\n  background-position: -240px -132px;\n}\n.flag.tr {\n  background-position: 0 -143px;\n}\n.flag.tt {\n  background-position: -16px -143px;\n}\n.flag.tv {\n  background-position: -32px -143px;\n}\n.flag.tw {\n  background-position: -48px -143px;\n}\n.flag.tz {\n  background-position: -64px -143px;\n}\n.flag.ua {\n  background-position: -80px -143px;\n}\n.flag.ug {\n  background-position: -96px -143px;\n}\n.flag.us {\n  background-position: -112px -143px;\n}\n.flag.uy {\n  background-position: -128px -143px;\n}\n.flag.uz {\n  background-position: -144px -143px;\n}\n.flag.va {\n  background-position: -160px -143px;\n}\n.flag.vc {\n  background-position: -176px -143px;\n}\n.flag.ve {\n  background-position: -192px -143px;\n}\n.flag.vg {\n  background-position: -208px -143px;\n}\n.flag.vi {\n  background-position: -224px -143px;\n}\n.flag.vn {\n  background-position: -240px -143px;\n}\n.flag.vu {\n  background-position: 0 -154px;\n}\n.flag.wf {\n  background-position: -16px -154px;\n}\n.flag.ws {\n  background-position: -32px -154px;\n}\n.flag.ye {\n  background-position: -48px -154px;\n}\n.flag.za {\n  background-position: -64px -154px;\n}\n.flag.zm {\n  background-position: -80px -154px;\n}\n.flag.zw {\n  background-position: -96px -154px;\n}\n",""])},function(g,I,e){"use strict";g.exports=function(g){var I=[];return I.toString=function(){return this.map((function(I){var e=function(g,I){var e,t,C,Q=g[1]||"",F=g[3];if(!F)return Q;if(I&&"function"==typeof btoa){var B=(e=F,t=btoa(unescape(encodeURIComponent(JSON.stringify(e)))),C="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(t),"/*# ".concat(C," */")),n=F.sources.map((function(g){return"/*# sourceURL=".concat(F.sourceRoot).concat(g," */")}));return[Q].concat(n).concat([B]).join("\n")}return[Q].join("\n")}(I,g);return I[2]?"@media ".concat(I[2],"{").concat(e,"}"):e})).join("")},I.i=function(g,e){"string"==typeof g&&(g=[[null,g,""]]);for(var t={},C=0;C<this.length;C++){var Q=this[C][0];null!=Q&&(t[Q]=!0)}for(var F=0;F<g.length;F++){var B=g[F];null!=B[0]&&t[B[0]]||(e&&!B[2]?B[2]=e:e&&(B[2]="(".concat(B[2],") and (").concat(e,")")),I.push(B))}},I}},function(g,I,e){"use strict";g.exports=function(g,I){return"string"!=typeof(g=g.__esModule?g.default:g)?g:(/^['"].*['"]$/.test(g)&&(g=g.slice(1,-1)),/["'() \t\n]/.test(g)||I?'"'.concat(g.replace(/"/g,'\\"').replace(/\n/g,"\\n"),'"'):g)}},function(g,I,e){var t,C,Q={},F=(t=function(){return window&&document&&document.all&&!window.atob},function(){return void 0===C&&(C=t.apply(this,arguments)),C}),B=function(g,I){return I?I.querySelector(g):document.querySelector(g)},n=function(g){var I={};return function(g,e){if("function"==typeof g)return g();if(void 0===I[g]){var t=B.call(this,g,e);if(window.HTMLIFrameElement&&t instanceof window.HTMLIFrameElement)try{t=t.contentDocument.head}catch(g){t=null}I[g]=t}return I[g]}}(),U=null,s=0,i=[],c=e(181);function A(g,I){for(var e=0;e<g.length;e++){var t=g[e],C=Q[t.id];if(C){C.refs++;for(var F=0;F<C.parts.length;F++)C.parts[F](t.parts[F]);for(;F<t.parts.length;F++)C.parts.push(u(t.parts[F],I))}else{var B=[];for(F=0;F<t.parts.length;F++)B.push(u(t.parts[F],I));Q[t.id]={id:t.id,refs:1,parts:B}}}}function l(g,I){for(var e=[],t={},C=0;C<g.length;C++){var Q=g[C],F=I.base?Q[0]+I.base:Q[0],B={css:Q[1],media:Q[2],sourceMap:Q[3]};t[F]?t[F].parts.push(B):e.push(t[F]={id:F,parts:[B]})}return e}function a(g,I){var e=n(g.insertInto);if(!e)throw new Error("Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.");var t=i[i.length-1];if("top"===g.insertAt)t?t.nextSibling?e.insertBefore(I,t.nextSibling):e.appendChild(I):e.insertBefore(I,e.firstChild),i.push(I);else if("bottom"===g.insertAt)e.appendChild(I);else{if("object"!=typeof g.insertAt||!g.insertAt.before)throw new Error("[Style Loader]\n\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\n Must be 'top', 'bottom', or Object.\n (https://github.com/webpack-contrib/style-loader#insertat)\n");var C=n(g.insertAt.before,e);e.insertBefore(I,C)}}function r(g){if(null===g.parentNode)return!1;g.parentNode.removeChild(g);var I=i.indexOf(g);I>=0&&i.splice(I,1)}function o(g){var I=document.createElement("style");if(void 0===g.attrs.type&&(g.attrs.type="text/css"),void 0===g.attrs.nonce){var t=e.nc;t&&(g.attrs.nonce=t)}return d(I,g.attrs),a(g,I),I}function d(g,I){Object.keys(I).forEach((function(e){g.setAttribute(e,I[e])}))}function u(g,I){var e,t,C,Q;if(I.transform&&g.css){if(!(Q="function"==typeof I.transform?I.transform(g.css):I.transform.default(g.css)))return function(){};g.css=Q}if(I.singleton){var F=s++;e=U||(U=o(I)),t=Z.bind(null,e,F,!1),C=Z.bind(null,e,F,!0)}else g.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(e=function(g){var I=document.createElement("link");return void 0===g.attrs.type&&(g.attrs.type="text/css"),g.attrs.rel="stylesheet",d(I,g.attrs),a(g,I),I}(I),t=x.bind(null,e,I),C=function(){r(e),e.href&&URL.revokeObjectURL(e.href)}):(e=o(I),t=m.bind(null,e),C=function(){r(e)});return t(g),function(I){if(I){if(I.css===g.css&&I.media===g.media&&I.sourceMap===g.sourceMap)return;t(g=I)}else C()}}g.exports=function(g,I){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");(I=I||{}).attrs="object"==typeof I.attrs?I.attrs:{},I.singleton||"boolean"==typeof I.singleton||(I.singleton=F()),I.insertInto||(I.insertInto="head"),I.insertAt||(I.insertAt="bottom");var e=l(g,I);return A(e,I),function(g){for(var t=[],C=0;C<e.length;C++){var F=e[C];(B=Q[F.id]).refs--,t.push(B)}for(g&&A(l(g,I),I),C=0;C<t.length;C++){var B;if(0===(B=t[C]).refs){for(var n=0;n<B.parts.length;n++)B.parts[n]();delete Q[B.id]}}}};var y,b=(y=[],function(g,I){return y[g]=I,y.filter(Boolean).join("\n")});function Z(g,I,e,t){var C=e?"":t.css;if(g.styleSheet)g.styleSheet.cssText=b(I,C);else{var Q=document.createTextNode(C),F=g.childNodes;F[I]&&g.removeChild(F[I]),F.length?g.insertBefore(Q,F[I]):g.appendChild(Q)}}function m(g,I){var e=I.css,t=I.media;if(t&&g.setAttribute("media",t),g.styleSheet)g.styleSheet.cssText=e;else{for(;g.firstChild;)g.removeChild(g.firstChild);g.appendChild(document.createTextNode(e))}}function x(g,I,e){var t=e.css,C=e.sourceMap,Q=void 0===I.convertToAbsoluteUrls&&C;(I.convertToAbsoluteUrls||Q)&&(t=c(t)),C&&(t+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(C))))+" */");var F=new Blob([t],{type:"text/css"}),B=g.href;g.href=URL.createObjectURL(F),B&&URL.revokeObjectURL(B)}},function(g,I){g.exports=function(g){var I="undefined"!=typeof window&&window.location;if(!I)throw new Error("fixUrls requires window.location");if(!g||"string"!=typeof g)return g;var e=I.protocol+"//"+I.host,t=e+I.pathname.replace(/\/[^\/]*$/,"/");return g.replace(/url\s*\(((?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)\)/gi,(function(g,I){var C,Q=I.trim().replace(/^"(.*)"$/,(function(g,I){return I})).replace(/^'(.*)'$/,(function(g,I){return I}));return/^(#|data:|http:\/\/|https:\/\/|file:\/\/\/|\s*$)/i.test(Q)?g:(C=0===Q.indexOf("//")?Q:0===Q.indexOf("/")?e+Q:t+Q.replace(/^\.\//,""),"url("+JSON.stringify(C)+")")}))}},function(g,I,e){"use strict";e.r(I);var t=e(36),C=e.n(t),Q=e(4),F=e.n(Q),B=e(60),n=e.n(B),U=e(23),s=e.n(U),i=e(61),c=e.n(i),A=e(62),l=e.n(A),a=e(63),r=e.n(a),o=e(12),d=e.n(o),u=e(64),y=e.n(u),b=e(24),Z=e.n(b),m=e(14),x=e.n(m),R=e(37),S=e.n(R),G=e(5),L=e.n(G),V=e(38),h=e.n(V),D=e(1),p=e.n(D),E=e(0),N=e.n(E),W=e(65),f=e.n(W),X=e(66),J=e.n(X),v=e(67),k=e.n(v),H=e(68),M=e.n(H),Y=e(69),w=e.n(Y),T=e(70),z=e.n(T),O=e(71),K=e.n(O),j=e(72),P=e.n(j),_=e(39),q=e.n(_),$=e(73),gg=e.n($),Ig=e(74),eg=e.n(Ig);function tg(g){return(tg="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"==typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g})(g)}function Cg(){return(Cg=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}function Qg(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}function Fg(g,I){return!I||"object"!==tg(I)&&"function"!=typeof I?function(g){if(void 0===g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return g}(g):I}function Bg(g){return(Bg=Object.setPrototypeOf?Object.getPrototypeOf:function(g){return g.__proto__||Object.getPrototypeOf(g)})(g)}function ng(g,I){return(ng=Object.setPrototypeOf||function(g,I){return g.__proto__=I,g})(g,I)}var Ug=function(g){function I(){return function(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}(this,I),Fg(this,Bg(I).apply(this,arguments))}var e,t;return function(g,I){if("function"!=typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function");g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,writable:!0,configurable:!0}}),I&&ng(g,I)}(I,g),e=I,(t=[{key:"render",value:function(){var g=this.props,I=g.name,e=g.iso2,t=g.dialCode,C=g.localization,Q=g.itemRef,F=g.native,B=function(g,I){if(null==g)return{};var e,t,C=function(g,I){if(null==g)return{};var e,t,C={},Q=Object.keys(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||(C[e]=g[e]);return C}(g,I);if(Object.getOwnPropertySymbols){var Q=Object.getOwnPropertySymbols(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||Object.prototype.propertyIsEnumerable.call(g,e)&&(C[e]=g[e])}return C}(g,["name","iso2","dialCode","localization","itemRef","native"]);return F?p.a.createElement("option",Cg({className:"country","data-dial-code":"1","data-country-code":e,value:e},B),C||I," ","+".concat(t)):p.a.createElement(eg.a,{rootRef:function(g){return Q(g)}},p.a.createElement(gg.a,Cg({className:"country","data-dial-code":"1","data-country-code":e},B),p.a.createElement("div",{className:"flag ".concat(e," margin")}),p.a.createElement("span",{className:"country-name"},C||I),p.a.createElement("span",{className:"dial-code"},"+".concat(t))))}}])&&Qg(e.prototype,t),I}(p.a.PureComponent);Ug.propTypes={name:N.a.string.isRequired,iso2:N.a.string.isRequired,dialCode:N.a.string.isRequired,itemRef:N.a.func.isRequired,localization:N.a.string,native:N.a.bool},Ug.defaultProps={localization:null,native:!1};var sg=Ug;function ig(g){return(ig="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"==typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g})(g)}function cg(){return(cg=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}function Ag(g,I){var e=Object.keys(g);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(g);I&&(t=t.filter((function(I){return Object.getOwnPropertyDescriptor(g,I).enumerable}))),e.push.apply(e,t)}return e}function lg(g){for(var I=1;I<arguments.length;I++){var e=null!=arguments[I]?arguments[I]:{};I%2?Ag(e,!0).forEach((function(I){ug(g,I,e[I])})):Object.getOwnPropertyDescriptors?Object.defineProperties(g,Object.getOwnPropertyDescriptors(e)):Ag(e).forEach((function(I){Object.defineProperty(g,I,Object.getOwnPropertyDescriptor(e,I))}))}return g}function ag(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}function rg(g){return(rg=Object.setPrototypeOf?Object.getPrototypeOf:function(g){return g.__proto__||Object.getPrototypeOf(g)})(g)}function og(g){if(void 0===g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return g}function dg(g,I){return(dg=Object.setPrototypeOf||function(g,I){return g.__proto__=I,g})(g,I)}function ug(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}e(176),e(59);var yg=function(g){function I(g){var e;!function(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}(this,I),e=function(g,I){return!I||"object"!==ig(I)&&"function"!=typeof I?og(g):I}(this,rg(I).call(this,g)),ug(og(e),"flags",{}),ug(og(e),"guessSelectedCountry",s()((function(g,I,t){var C=L()(I,{iso2:t})||{};if(""===n()(g))return C;var Q=S()(I,(function(I,e){if(F()(g,e.dialCode)){if(e.dialCode.length>I.dialCode.length)return e;if(e.dialCode.length===I.dialCode.length&&e.priority<I.priority)return e}return I}),{dialCode:"",priority:10001},og(e));return Q.name?Q:C}))),ug(og(e),"getProbableCandidate",s()((function(g){if(!g||0===g.length)return null;var I=e.state.onlyCountries;return Z()(I,(function(I){return F()(I.name.toLowerCase(),g.toLowerCase())}),og(e))[0]}))),ug(og(e),"getOnlyCountries",(function(g,I){return 0===g.length?I:I.filter((function(I){return g.some((function(g){return g===I.iso2}))}))})),ug(og(e),"excludeCountries",(function(g,I){return 0===I.length?g:Z()(g,(function(g){return!y()(I,g.iso2)}))})),ug(og(e),"filterRegions",(function(g,I){if("string"==typeof g){var e=g;return I.filter((function(g){return g.regions.some((function(g){return g===e}))}))}return I.filter((function(I){return g.map((function(g){return I.regions.some((function(I){return I===g}))})).some((function(g){return g}))}))})),ug(og(e),"deleteAreaCodes",(function(g){return g.filter((function(g){return!0!==g.isAreaCode}))})),ug(og(e),"updateDefaultCountry",(function(g){var I=e.state.onlyCountries,t=e.props.disableCountryCode,C=L()(I,{iso2:g});e.setState({defaultCountry:g,selectedCountry:C,formattedNumber:t?"":"+".concat(C.dialCode)})})),ug(og(e),"scrollTo",(function(g){if(g){var I=e.dropdownContainerRef;I&&document.body&&(I.scrollTop=g.offsetTop)}})),ug(og(e),"formatNumber",(function(g,I){var t,C=e.props,Q=C.disableCountryCode,F=C.enableLongNumbers,B=C.autoFormat;if(Q&&I?((t=I.split(" ")).shift(),t=t.join(" ")):t=I,!g||0===g.length)return Q?"":"+";if(g&&g.length<2||!t||!B)return Q?g:"+".concat(g);var n,U=S()(t,(function(g,I){return 0===g.remainingText.length?g:"."!==I?{formattedText:g.formattedText+I,remainingText:g.remainingText}:{formattedText:g.formattedText+r()(g.remainingText),remainingText:l()(g.remainingText)}}),{formattedText:"",remainingText:g.split("")});return(n=F?U.formattedText+U.remainingText.join(""):U.formattedText).includes("(")&&!n.includes(")")&&(n+=")"),n})),ug(og(e),"cursorToEnd",(function(){var g=e.props.isModernBrowser,I=e.inputRef;if(I.focus(),g){var t=I.value.length;I.setSelectionRange(t,t)}})),ug(og(e),"getElement",(function(g){return e.flags["flag_no_".concat(g)]})),ug(og(e),"getCountryData",(function(){var g=e.state.selectedCountry;return g?{name:g.name||"",dialCode:g.dialCode||"",countryCode:g.iso2||""}:{}})),ug(og(e),"handleFlagDropdownClick",(function(){var g=e.state,I=g.anchorEl,t=g.selectedCountry,C=g.preferredCountries,Q=g.onlyCountries,F=e.props.disabled;if(I||!F){var B=C.includes(t)?d()(C,t):d()(Q,t);C.includes(t)?e.setState({highlightCountryIndex:B},(function(){I&&e.scrollTo(e.getElement(B))})):e.setState({highlightCountryIndex:B},(function(){I&&e.scrollTo(e.getElement(B+C.length))}))}})),ug(og(e),"handleInput",(function(g){var I=e.state,t=I.selectedCountry,C=I.freezeSelection,Q=e.state,F=Q.selectedCountry,B=Q.formattedNumber,n=Q.onlyCountries,U=Q.defaultCountry,s=e.props,i=s.disableCountryCode,c=s.countryCodeEditable,A=s.isModernBrowser,l=s.onChange,a=i?"":"+";if(!c){var r="+".concat(t.dialCode);if(g.target.value.length<r.length)return}if(!(g.target.value.replace(/\D/g,"").length>15)&&g.target.value!==B){if(g.preventDefault?g.preventDefault():g.returnValue=!1,g.target.value.length>0){var o=g.target.value.replace(/\D/g,"");(!C||F.dialCode.length>o.length)&&(t=e.guessSelectedCountry(o.substring(0,6),n,U),C=!1),a=e.formatNumber(o,t.format)}var d=g.target.selectionStart,u=a.length-B.length;e.setState({formattedNumber:a,freezeSelection:C,selectedCountry:t.dialCode?t:F},(function(){A&&(u>0&&(d-=u),")"===a.charAt(a.length-1)?e.inputRef.setSelectionRange(a.length-1,a.length-1):d>0&&B.length>=a.length&&e.inputRef.setSelectionRange(d,d)),l&&l(a,e.getCountryData())}))}})),ug(og(e),"handleRefInput",(function(g){var I,t=e.props,C=t.inputRef,Q=t.InputProps;e.inputRef=g,C?I=C:Q&&Q.ref&&(I=Q.ref),I&&("function"==typeof I?I(g):I.current=g)})),ug(og(e),"handleInputClick",(function(g){var I=e.props.onClick;I&&I(g,e.getCountryData())})),ug(og(e),"handleFlagItemClick",(function(g){var I=e.state,t=I.formattedNumber,Q=I.selectedCountry,F=I.onlyCountries,B=e.props.onChange,n=Q,U=C()(g)?L()(F,(function(I){return I.iso2===g})):L()(F,g),s=t.replace(" ","").replace("(","").replace(")","").replace("-",""),i=s.length>1?s.replace(n.dialCode,U.dialCode):U.dialCode,c=e.formatNumber(i.replace(/\D/g,""),U.format);e.setState({anchorEl:null,selectedCountry:U,freezeSelection:!0,formattedNumber:c},(function(){e.cursorToEnd(),B&&B(c,e.getCountryData())}))})),ug(og(e),"handleInputFocus",(function(g){var I=e.state.selectedCountry,t=e.props,C=t.disableCountryCode,Q=t.onFocus;e.inputRef&&"+"===e.inputRef.value&&I&&!C&&e.setState({formattedNumber:"+".concat(I.dialCode)},(function(){return setTimeout(e.cursorToEnd,10)})),e.setState({placeholder:""}),Q&&Q(g,e.getCountryData()),setTimeout(e.cursorToEnd,10)})),ug(og(e),"handleInputBlur",(function(g){var I=e.props,t=I.placeholder,C=I.onBlur;g.target.value||e.setState({placeholder:t}),C&&C(g,e.getCountryData())})),ug(og(e),"getHighlightCountryIndex",(function(g){var I=e.state,t=I.highlightCountryIndex,C=I.onlyCountries,Q=I.preferredCountries,F=t+g;return F<0||F>=C.length+Q.length?F-g:F})),ug(og(e),"searchCountry",(function(){var g=e.state,I=g.queryString,t=g.onlyCountries,C=g.preferredCountries,Q=e.getProbableCandidate(I)||t[0],F=d()(t,Q)+C.length;e.scrollTo(e.getElement(F),!0),e.setState({queryString:"",highlightCountryIndex:F})})),ug(og(e),"handleKeydown",(function(g){var I=e.state,t=I.anchorEl,C=I.highlightCountryIndex,Q=I.preferredCountries,F=I.onlyCountries,B=I.queryString,n=I.debouncedQueryStingSearcher,U=e.props,s=U.keys,i=U.disabled;if(t&&!i){g.preventDefault?g.preventDefault():g.returnValue=!1;var c=function(g){e.setState({highlightCountryIndex:e.getHighlightCountryIndex(g)},(function(){e.scrollTo(e.getElement(C+Q.length),!0)}))};switch(g.which){case s.DOWN:c(1);break;case s.UP:c(-1);break;case s.ENTER:e.handleFlagItemClick(F[C],g);break;case s.ESC:e.setState({anchorEl:null},e.cursorToEnd);break;default:(g.which>=s.A&&g.which<=s.Z||g.which===s.SPACE)&&e.setState({queryString:B+String.fromCharCode(g.which)},n)}}})),ug(og(e),"handleInputKeyDown",(function(g){var I=e.props,t=I.keys,C=I.onEnterKeyPress,Q=I.onKeyDown;g.which===t.ENTER&&C&&C(g),Q&&Q(g)})),ug(og(e),"checkIfValid",(function(){var g=e.state.formattedNumber;return(0,e.props.isValid)(g.replace(/\D/g,""))})),ug(og(e),"updateFormattedNumber",(function(g){var I,t=e.state,C=t.onlyCountries,Q=t.defaultCountry,B=e.props.disableCountryCode,n=g,U=g;if(n.startsWith("+"))n=n.replace(/\D/g,""),I=e.guessSelectedCountry(n.substring(0,6),C,Q),U=e.formatNumber(n,I.format);else{var s=(I=L()(C,{iso2:Q}))&&!F()(n.replace(/\D/g,""),I.dialCode)?I.dialCode:"";U=e.formatNumber((B?"":s)+n.replace(/\D/g,""),I?I.format:void 0)}e.setState({selectedCountry:I,formattedNumber:U})})),ug(og(e),"getDropdownProps",(function(){var g=e.state,I=g.selectedCountry,t=g.anchorEl,C=g.preferredCountries,Q=g.onlyCountries,F=e.props,B=F.classes,n=F.dropdownClass,U=F.localization,s=F.disableDropdown,i=F.native,c="flag ".concat(I.iso2);return s?{}:{startAdornment:p.a.createElement(k.a,{className:B.positionStart,position:"start"},i?p.a.createElement(p.a.Fragment,null,p.a.createElement(K.a,{id:"country-menu",open:Boolean(t),onClose:function(){return e.setState({anchorEl:null})},className:B.native,classes:{root:f()(B.nativeRoot,"native",c),select:B.nativeSelect},onChange:function(g){return e.handleFlagItemClick(g.target.value)},disableUnderline:!0},!!C.length&&x()(C,(function(g,I){return p.a.createElement(sg,{key:"preferred_".concat(g.iso2,"_").concat(I),itemRef:function(g){e.flags["flag_no_".concat(I)]=g},name:g.name,iso2:g.iso2,dialCode:g.dialCode,localization:U&&U[g.name],native:!0})})),x()(Q,(function(g,I){return p.a.createElement(sg,{key:"preferred_".concat(g.iso2,"_").concat(I),itemRef:function(g){e.flags["flag_no_".concat(I)]=g},name:g.name,iso2:g.iso2,dialCode:g.dialCode,localization:U&&U[g.name],native:!0})})))):p.a.createElement(p.a.Fragment,null,p.a.createElement(M.a,{className:B.flagButton,"aria-owns":t?"country-menu":null,"aria-label":"Select country",onClick:function(g){return e.setState({anchorEl:g.currentTarget})},"aria-haspopup":!0},p.a.createElement("div",{className:c})),p.a.createElement(w.a,{className:n,id:"country-menu",anchorEl:t,open:Boolean(t),onClose:function(){return e.setState({anchorEl:null})},onEnter:e.handleFlagDropdownClick,PaperProps:{ref:function(g){e.dropdownContainerRef=g}}},!!C.length&&x()(C,(function(g,I){return p.a.createElement(sg,{key:"preferred_".concat(g.iso2,"_").concat(I),itemRef:function(g){e.flags["flag_no_".concat(I)]=g},onClick:function(){return e.handleFlagItemClick(g)},name:g.name,iso2:g.iso2,dialCode:g.dialCode,localization:U&&U[g.name]})})),!!C.length&&p.a.createElement(z.a,null),x()(Q,(function(g,I){return p.a.createElement(sg,{key:"preferred_".concat(g.iso2,"_").concat(I),itemRef:function(g){e.flags["flag_no_".concat(I)]=g},onClick:function(){return e.handleFlagItemClick(g)},name:g.name,iso2:g.iso2,dialCode:g.dialCode,localization:U&&U[g.name]})})))))}}));var t=q.a.allCountries;g.disableAreaCodes&&(t=e.deleteAreaCodes(t)),g.regions&&(t=e.filterRegions(g.regions,t));var Q,B=e.excludeCountries(e.getOnlyCountries(g.onlyCountries,t),g.excludeCountries),U=Z()(t,(function(I){return h()(g.preferredCountries,(function(g){return g===I.iso2}))})),i=g.value||"";Q=i.length>1?e.guessSelectedCountry(i.replace(/\D/g,"").substring(0,6),B,g.defaultCountry)||0:g.defaultCountry&&L()(B,{iso2:g.defaultCountry})||0;var A=d()(e.allCountries,Q),a=i.length<2&&Q&&!F()(i.replace(/\D/g,""),Q.dialCode)?Q.dialCode:"",o=""===i&&0===Q?"":e.formatNumber((g.disableCountryCode?"":a)+i.replace(/\D/g,""),Q.name?Q.format:void 0);return e.state={formattedNumber:o,placeholder:g.placeholder,onlyCountries:B,preferredCountries:U,defaultCountry:g.defaultCountry,selectedCountry:Q,highlightCountryIndex:A,queryString:"",freezeSelection:!1,debouncedQueryStingSearcher:c()(e.searchCountry,100),anchorEl:null},e}var e,t;return function(g,I){if("function"!=typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function");g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,writable:!0,configurable:!0}}),I&&dg(g,I)}(I,g),e=I,(t=[{key:"componentDidMount",value:function(){document.addEventListener&&document.addEventListener("keydown",this.handleKeydown)}},{key:"componentDidUpdate",value:function(g){var I=g.value,e=this.state,t=e.defaultCountry,C=e.formattedNumber,Q=this.props,F=Q.defaultCountry,B=Q.value;F&&F!==t&&this.updateDefaultCountry(F),"string"==typeof B&&B!==I&&B!==C&&this.updateFormattedNumber(B)}},{key:"componentWillUnmount",value:function(){document.removeEventListener&&document.removeEventListener("keydown",this.handleKeydown)}},{key:"render",value:function(){var g=this.state,I=g.formattedNumber,e=g.placeholder,t=this.props,C=(t.native,t.defaultCountry,t.excludeCountries,t.onlyCountries,t.preferredCountries,t.dropdownClass,t.autoFormat,t.disableAreaCodes,t.isValid,t.disableCountryCode,t.disableDropdown,t.enableLongNumbers,t.countryCodeEditable,t.onEnterKeyPress,t.isModernBrowser,t.classes,t.keys,t.localization,t.placeholder,t.regions,t.onChange,t.value,t.inputClass),Q=t.error,F=t.InputProps,B=function(g,I){if(null==g)return{};var e,t,C=function(g,I){if(null==g)return{};var e,t,C={},Q=Object.keys(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||(C[e]=g[e]);return C}(g,I);if(Object.getOwnPropertySymbols){var Q=Object.getOwnPropertySymbols(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||Object.prototype.propertyIsEnumerable.call(g,e)&&(C[e]=g[e])}return C}(t,["native","defaultCountry","excludeCountries","onlyCountries","preferredCountries","dropdownClass","autoFormat","disableAreaCodes","isValid","disableCountryCode","disableDropdown","enableLongNumbers","countryCodeEditable","onEnterKeyPress","isModernBrowser","classes","keys","localization","placeholder","regions","onChange","value","inputClass","error","InputProps"]),n=this.getDropdownProps();return p.a.createElement(J.a,cg({placeholder:e,value:I,className:C,inputRef:this.handleRefInput,error:Q||!this.checkIfValid(),onChange:this.handleInput,onClick:this.handleInputClick,onFocus:this.handleInputFocus,onBlur:this.handleInputBlur,onKeyDown:this.handleInputKeyDown,type:"tel",InputProps:lg({},n,{},F)},B))}}])&&ag(e.prototype,t),I}(p.a.Component);yg.propTypes={classes:N.a.object,excludeCountries:N.a.arrayOf(N.a.string),onlyCountries:N.a.arrayOf(N.a.string),preferredCountries:N.a.arrayOf(N.a.string),defaultCountry:N.a.string,value:N.a.string,placeholder:N.a.string,disabled:N.a.bool,error:N.a.bool,variant:N.a.string,native:N.a.bool,inputClass:N.a.string,dropdownClass:N.a.string,InputProps:N.a.object,inputProps:N.a.object,inputRef:N.a.func,autoFormat:N.a.bool,disableAreaCodes:N.a.bool,disableCountryCode:N.a.bool,disableDropdown:N.a.bool,enableLongNumbers:N.a.bool,countryCodeEditable:N.a.bool,regions:N.a.oneOfType([N.a.string,N.a.arrayOf(N.a.string)]),localization:N.a.object,onChange:N.a.func,onFocus:N.a.func,onBlur:N.a.func,onClick:N.a.func,onKeyDown:N.a.func,isValid:N.a.func,isModernBrowser:N.a.func,onEnterKeyPress:N.a.func,keys:N.a.object},yg.defaultProps={excludeCountries:[],onlyCountries:[],preferredCountries:[],defaultCountry:"",placeholder:"+1 (702) 123-4567",disabled:!1,error:!1,variant:"standard",native:!1,inputClass:"",dropdownClass:"",autoFormat:!0,disableAreaCodes:!1,isValid:function(g){return h()(q.a.allCountries,(function(I){return F()(g,I.dialCode)||F()(I.dialCode,g)}))},disableCountryCode:!1,disableDropdown:!1,enableLongNumbers:!1,countryCodeEditable:!0,regions:"",localization:{},onEnterKeyPress:function(){},onChange:function(){},isModernBrowser:function(){return!!document.createElement&&Boolean(document.createElement("input").setSelectionRange)},keys:{UP:38,DOWN:40,RIGHT:39,LEFT:37,ENTER:13,ESC:27,PLUS:43,A:65,Z:90,SPACE:32}},yg.displayName="MuiPhoneNumber";var bg=P()((function(){return{flagButton:{minWidth:30,padding:0,height:30},native:{width:30,height:30,padding:8},nativeRoot:{padding:0,"& + svg":{display:"none"}},nativeSelect:{padding:0,lineHeight:0,height:11},positionStart:{position:"relative"}}}))(yg);I.default=bg}])},function(g,I,e){"use strict";e.d(I,"a",(function(){return Q})),e.d(I,"b",(function(){return F}));var t=e(0),C=(e(4),Object(t.createContext)(null)),Q=function(g){var I=g.utils,e=g.children,Q=g.locale,F=g.libInstance,B=Object(t.useMemo)((function(){return new I({locale:Q,instance:F})}),[I,F,Q]);return Object(t.createElement)(C.Provider,{value:B,children:e})};function F(){var g=Object(t.useContext)(C);return function(g){if(!g)throw new Error("Can not find utils in context. You either a) forgot to wrap your component tree in MuiPickersUtilsProvider; or b) mixed named and direct file imports.  Recommendation: use named imports from the module index.")}(g),g}},,function(g,I,e){var t=e(50),C=e(135),Q=e(90),F=e(482),B=e(483),n=e(146),U=n.get,s=n.enforce,i=String(String).split("String");(g.exports=function(g,I,e,B){var n=!!B&&!!B.unsafe,U=!!B&&!!B.enumerable,c=!!B&&!!B.noTargetGet;"function"==typeof e&&("string"!=typeof I||Q(e,"name")||C(e,"name",I),s(e).source=i.join("string"==typeof I?I:"")),g!==t?(n?!c&&g[I]&&(U=!0):delete g[I],U?g[I]=e:C(g,I,e)):U?g[I]=e:F(I,e)})(Function.prototype,"toString",(function(){return"function"==typeof this&&U(this).source||B(this)}))},function(g,I,e){"use strict";e.r(I);var t=e(693);e.d(I,"default",(function(){return t.a}))},function(g,I){g.exports=function(g){return g&&g.__esModule?g:{default:g}},g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I,e){"use strict";var t=e(122),C={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},Q={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},F={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},B={};function n(g){return t.isMemo(g)?F:B[g.$$typeof]||C}B[t.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},B[t.Memo]=F;var U=Object.defineProperty,s=Object.getOwnPropertyNames,i=Object.getOwnPropertySymbols,c=Object.getOwnPropertyDescriptor,A=Object.getPrototypeOf,l=Object.prototype;g.exports=function g(I,e,t){if("string"!==typeof e){if(l){var C=A(e);C&&C!==l&&g(I,C,t)}var F=s(e);i&&(F=F.concat(i(e)));for(var B=n(I),a=n(e),r=0;r<F.length;++r){var o=F[r];if(!Q[o]&&(!t||!t[o])&&(!a||!a[o])&&(!B||!B[o])){var d=c(e,o);try{U(I,o,d)}catch(u){}}}}return I}},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"}),"Search");I.default=Q},,function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M1 21h4V9H1v12zm22-11c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.59 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73v-2z"}),"ThumbUp");I.default=Q},function(g,I,e){"use strict";function t(g,I){if(null==g)return{};var e,t,C={},Q=Object.keys(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||(C[e]=g[e]);return C}e.d(I,"a",(function(){return t}))},function(g,I){g.exports=function(g){if(void 0==g)throw TypeError("Can't call method on "+g);return g}},function(g,I,e){var t=e(68),C=e(76),Q=e(228);g.exports=t?function(g,I,e){return C.f(g,I,Q(1,e))}:function(g,I,e){return g[I]=e,g}},function(g,I,e){var t=e(68),C=e(41),Q=e(90),F=Object.defineProperty,B={},n=function(g){throw g};g.exports=function(g,I){if(Q(B,g))return B[g];I||(I={});var e=[][g],U=!!Q(I,"ACCESSORS")&&I.ACCESSORS,s=Q(I,0)?I[0]:n,i=Q(I,1)?I[1]:void 0;return B[g]=!!e&&!C((function(){if(U&&!t)return!0;var g={length:-1};U?F(g,1,{enumerable:!0,get:n}):g[1]=1,e.call(g,s,i)}))}},function(g,I,e){"use strict";e.r(I);var t=e(689);e.d(I,"default",(function(){return t.a}))},function(g,I,e){"use strict";e.d(I,"a",(function(){return F})),e.d(I,"b",(function(){return B}));var t=e(11),C=e(272);function Q(g){for(var I=[],e=1;e<arguments.length;e++)I[e-1]=arguments[e];var Q=Object(C.b)();if(Q&&Q[g])return Q[g].apply(Q,Object(t.e)(I));throw new Error("No hub defined or "+g+" was not found on the hub, please open a bug report.")}function F(g,I){var e;try{throw new Error("Sentry syntheticException")}catch(g){e=g}return Q("captureException",g,{captureContext:I,originalException:g,syntheticException:e})}function B(g){Q("withScope",g)}},function(g,I,e){"use strict";var t=Object.getOwnPropertySymbols,C=Object.prototype.hasOwnProperty,Q=Object.prototype.propertyIsEnumerable;function F(g){if(null===g||void 0===g)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(g)}g.exports=function(){try{if(!Object.assign)return!1;var g=new String("abc");if(g[5]="de","5"===Object.getOwnPropertyNames(g)[0])return!1;for(var I={},e=0;e<10;e++)I["_"+String.fromCharCode(e)]=e;if("0123456789"!==Object.getOwnPropertyNames(I).map((function(g){return I[g]})).join(""))return!1;var t={};return"abcdefghijklmnopqrst".split("").forEach((function(g){t[g]=g})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},t)).join("")}catch(C){return!1}}()?Object.assign:function(g,I){for(var e,B,n=F(g),U=1;U<arguments.length;U++){for(var s in e=Object(arguments[U]))C.call(e,s)&&(n[s]=e[s]);if(t){B=t(e);for(var i=0;i<B.length;i++)Q.call(e,B[i])&&(n[B[i]]=e[B[i]])}}return n}},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z"}),"ExpandMore");I.default=Q},function(g,I,e){"use strict";e.d(I,"a",(function(){return zI}));var t=e(581),C="".concat("-\u2010-\u2015\u2212\u30fc\uff0d").concat("\uff0f/").concat("\uff0e.").concat(" \xa0\xad\u200b\u2060\u3000").concat("()\uff08\uff09\uff3b\uff3d\\[\\]").concat("~\u2053\u223c\uff5e");function Q(g,I){return g=g||"",new RegExp("^(?:"+I+")$").test(g)}var F=function g(I){!function(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}(this,g),this.name=this.constructor.name,this.message=I,this.stack=new Error(I).stack};function B(g,I){for(var e=g.split("."),t=I.split("."),C=0;C<3;C++){var Q=Number(e[C]),F=Number(t[C]);if(Q>F)return 1;if(F>Q)return-1;if(!isNaN(Q)&&isNaN(F))return 1;if(isNaN(Q)&&!isNaN(F))return-1}return 0}function n(g){return(n="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"===typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g})(g)}function U(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}function s(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}function i(g,I,e){return I&&s(g.prototype,I),e&&s(g,e),g}(F.prototype=Object.create(Error.prototype)).constructor=F;var c=function(){function g(I){U(this,g),function(g){if(!g)throw new Error("[libphonenumber-js] `metadata` argument not passed. Check your arguments.");if(!d(g)||!d(g.countries))throw new Error("[libphonenumber-js] `metadata` argument was passed but it's not a valid metadata. Must be an object having `.countries` child object property. Got ".concat(d(g)?"an object of shape: { "+Object.keys(g).join(", ")+" }":"a "+u(g)+": "+g,"."))}(I),this.metadata=I,Z.call(this,I)}return i(g,[{key:"getCountries",value:function(){return Object.keys(this.metadata.countries).filter((function(g){return"001"!==g}))}},{key:"getCountryMetadata",value:function(g){return this.metadata.countries[g]}},{key:"nonGeographic",value:function(){if(!(this.v1||this.v2||this.v3))return this.metadata.nonGeographic||this.metadata.nonGeographical}},{key:"hasCountry",value:function(g){return void 0!==this.getCountryMetadata(g)}},{key:"hasCallingCode",value:function(g){if(this.getCountryCodesForCallingCode(g))return!0;if(this.nonGeographic()){if(this.nonGeographic()[g])return!0}else{var I=this.countryCallingCodes()[g];if(I&&1===I.length&&"001"===I[0])return!0}}},{key:"isNonGeographicCallingCode",value:function(g){return this.nonGeographic()?!!this.nonGeographic()[g]:!this.getCountryCodesForCallingCode(g)}},{key:"country",value:function(g){return this.selectNumberingPlan(g)}},{key:"selectNumberingPlan",value:function(g,I){if(g&&"001"!==g){if(!this.hasCountry(g))throw new Error("Unknown country: ".concat(g));this.numberingPlan=new A(this.getCountryMetadata(g),this)}else if(I){if(!this.hasCallingCode(I))throw new Error("Unknown calling code: ".concat(I));this.numberingPlan=new A(this.getNumberingPlanMetadata(I),this)}else this.numberingPlan=void 0;return this}},{key:"getCountryCodesForCallingCode",value:function(g){var I=this.countryCallingCodes()[g];if(I){if(1===I.length&&3===I[0].length)return;return I}}},{key:"getCountryCodeForCallingCode",value:function(g){var I=this.getCountryCodesForCallingCode(g);if(I)return I[0]}},{key:"getNumberingPlanMetadata",value:function(g){var I=this.getCountryCodeForCallingCode(g);if(I)return this.getCountryMetadata(I);if(this.nonGeographic()){var e=this.nonGeographic()[g];if(e)return e}else{var t=this.countryCallingCodes()[g];if(t&&1===t.length&&"001"===t[0])return this.metadata.countries["001"]}}},{key:"countryCallingCode",value:function(){return this.numberingPlan.callingCode()}},{key:"IDDPrefix",value:function(){return this.numberingPlan.IDDPrefix()}},{key:"defaultIDDPrefix",value:function(){return this.numberingPlan.defaultIDDPrefix()}},{key:"nationalNumberPattern",value:function(){return this.numberingPlan.nationalNumberPattern()}},{key:"possibleLengths",value:function(){return this.numberingPlan.possibleLengths()}},{key:"formats",value:function(){return this.numberingPlan.formats()}},{key:"nationalPrefixForParsing",value:function(){return this.numberingPlan.nationalPrefixForParsing()}},{key:"nationalPrefixTransformRule",value:function(){return this.numberingPlan.nationalPrefixTransformRule()}},{key:"leadingDigits",value:function(){return this.numberingPlan.leadingDigits()}},{key:"hasTypes",value:function(){return this.numberingPlan.hasTypes()}},{key:"type",value:function(g){return this.numberingPlan.type(g)}},{key:"ext",value:function(){return this.numberingPlan.ext()}},{key:"countryCallingCodes",value:function(){return this.v1?this.metadata.country_phone_code_to_countries:this.metadata.country_calling_codes}},{key:"chooseCountryByCountryCallingCode",value:function(g){this.selectNumberingPlan(null,g)}},{key:"hasSelectedNumberingPlan",value:function(){return void 0!==this.numberingPlan}}]),g}(),A=function(){function g(I,e){U(this,g),this.globalMetadataObject=e,this.metadata=I,Z.call(this,e.metadata)}return i(g,[{key:"callingCode",value:function(){return this.metadata[0]}},{key:"getDefaultCountryMetadataForRegion",value:function(){return this.globalMetadataObject.getNumberingPlanMetadata(this.callingCode())}},{key:"IDDPrefix",value:function(){if(!this.v1&&!this.v2)return this.metadata[1]}},{key:"defaultIDDPrefix",value:function(){if(!this.v1&&!this.v2)return this.metadata[12]}},{key:"nationalNumberPattern",value:function(){return this.v1||this.v2?this.metadata[1]:this.metadata[2]}},{key:"possibleLengths",value:function(){if(!this.v1)return this.metadata[this.v2?2:3]}},{key:"_getFormats",value:function(g){return g[this.v1?2:this.v2?3:4]}},{key:"formats",value:function(){var g=this,I=this._getFormats(this.metadata)||this._getFormats(this.getDefaultCountryMetadataForRegion())||[];return I.map((function(I){return new l(I,g)}))}},{key:"nationalPrefix",value:function(){return this.metadata[this.v1?3:this.v2?4:5]}},{key:"_getNationalPrefixFormattingRule",value:function(g){return g[this.v1?4:this.v2?5:6]}},{key:"nationalPrefixFormattingRule",value:function(){return this._getNationalPrefixFormattingRule(this.metadata)||this._getNationalPrefixFormattingRule(this.getDefaultCountryMetadataForRegion())}},{key:"_nationalPrefixForParsing",value:function(){return this.metadata[this.v1?5:this.v2?6:7]}},{key:"nationalPrefixForParsing",value:function(){return this._nationalPrefixForParsing()||this.nationalPrefix()}},{key:"nationalPrefixTransformRule",value:function(){return this.metadata[this.v1?6:this.v2?7:8]}},{key:"_getNationalPrefixIsOptionalWhenFormatting",value:function(){return!!this.metadata[this.v1?7:this.v2?8:9]}},{key:"nationalPrefixIsOptionalWhenFormattingInNationalFormat",value:function(){return this._getNationalPrefixIsOptionalWhenFormatting(this.metadata)||this._getNationalPrefixIsOptionalWhenFormatting(this.getDefaultCountryMetadataForRegion())}},{key:"leadingDigits",value:function(){return this.metadata[this.v1?8:this.v2?9:10]}},{key:"types",value:function(){return this.metadata[this.v1?9:this.v2?10:11]}},{key:"hasTypes",value:function(){return(!this.types()||0!==this.types().length)&&!!this.types()}},{key:"type",value:function(g){if(this.hasTypes()&&o(this.types(),g))return new r(o(this.types(),g),this)}},{key:"ext",value:function(){return this.v1||this.v2?" ext. ":this.metadata[13]||" ext. "}}]),g}(),l=function(){function g(I,e){U(this,g),this._format=I,this.metadata=e}return i(g,[{key:"pattern",value:function(){return this._format[0]}},{key:"format",value:function(){return this._format[1]}},{key:"leadingDigitsPatterns",value:function(){return this._format[2]||[]}},{key:"nationalPrefixFormattingRule",value:function(){return this._format[3]||this.metadata.nationalPrefixFormattingRule()}},{key:"nationalPrefixIsOptionalWhenFormattingInNationalFormat",value:function(){return!!this._format[4]||this.metadata.nationalPrefixIsOptionalWhenFormattingInNationalFormat()}},{key:"nationalPrefixIsMandatoryWhenFormattingInNationalFormat",value:function(){return this.usesNationalPrefix()&&!this.nationalPrefixIsOptionalWhenFormattingInNationalFormat()}},{key:"usesNationalPrefix",value:function(){return this.nationalPrefixFormattingRule()&&!a.test(this.nationalPrefixFormattingRule())}},{key:"internationalFormat",value:function(){return this._format[5]||this.format()}}]),g}(),a=/^\(?\$1\)?$/,r=function(){function g(I,e){U(this,g),this.type=I,this.metadata=e}return i(g,[{key:"pattern",value:function(){return this.metadata.v1?this.type:this.type[0]}},{key:"possibleLengths",value:function(){if(!this.metadata.v1)return this.type[1]||this.metadata.possibleLengths()}}]),g}();function o(g,I){switch(I){case"FIXED_LINE":return g[0];case"MOBILE":return g[1];case"TOLL_FREE":return g[2];case"PREMIUM_RATE":return g[3];case"PERSONAL_NUMBER":return g[4];case"VOICEMAIL":return g[5];case"UAN":return g[6];case"PAGER":return g[7];case"VOIP":return g[8];case"SHARED_COST":return g[9]}}var d=function(g){return"object"===n(g)},u=function(g){return n(g)};function y(g,I){if((I=new c(I)).hasCountry(g))return I.country(g).countryCallingCode();throw new Error("Unknown country: ".concat(g))}function b(g,I){return void 0!==I.countries[g]}function Z(g){this.v1=!g.version,this.v2=void 0!==g.version&&-1===B(g.version,"1.2.0"),this.v3=void 0!==g.version&&-1===B(g.version,"1.7.35"),this.v4=void 0!==g.version}function m(g){var I="x\uff58#\uff03~\uff5e";switch(g){case"parsing":I=",;"+I}return";ext=([0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9]{1,7})|[ \xa0\\t,]*(?:e?xt(?:ensi(?:o\u0301?|\xf3))?n?|\uff45?\uff58\uff54\uff4e?|\u0434\u043e\u0431|["+I+"]|int|anexo|\uff49\uff4e\uff54)[:\\.\uff0e]?[ \xa0\\t,-]*([0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9]{1,7})#?|[- ]+([0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9]{1,5})#"}var x=m("parsing"),R=(m("matching"),new RegExp("(?:"+x+")$","i"));var S=new RegExp("^[0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9]{2}$|^"+("[+\uff0b]{0,1}(?:["+C+"]*[0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9]){3,}["+C+"0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9]*")+"(?:"+x+")?$","i");function G(g){return g.length>=2&&S.test(g)}var L={0:"0",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9","\uff10":"0","\uff11":"1","\uff12":"2","\uff13":"3","\uff14":"4","\uff15":"5","\uff16":"6","\uff17":"7","\uff18":"8","\uff19":"9","\u0660":"0","\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u06f0":"0","\u06f1":"1","\u06f2":"2","\u06f3":"3","\u06f4":"4","\u06f5":"5","\u06f6":"6","\u06f7":"7","\u06f8":"8","\u06f9":"9"};function V(g){return L[g]}function h(g){var I="",e=g.split(""),t=Array.isArray(e),C=0;for(e=t?e:e[Symbol.iterator]();;){var Q;if(t){if(C>=e.length)break;Q=e[C++]}else{if((C=e.next()).done)break;Q=C.value}var F=V(Q);F&&(I+=F)}return I}function D(g){var I="",e=g.split(""),t=Array.isArray(e),C=0;for(e=t?e:e[Symbol.iterator]();;){var Q;if(t){if(C>=e.length)break;Q=e[C++]}else{if((C=e.next()).done)break;Q=C.value}I+=p(Q,I)||""}return I}function p(g,I){if("+"===g){if(I)return;return"+"}return V(g)}var E=["MOBILE","PREMIUM_RATE","TOLL_FREE","SHARED_COST","VOIP","PERSONAL_NUMBER","PAGER","UAN","VOICEMAIL"];function N(g,I,e){if(I=I||{},g.country){(e=new c(e)).selectNumberingPlan(g.country,g.countryCallingCode);var t=I.v2?g.nationalNumber:g.phone;if(Q(t,e.nationalNumberPattern())){if(W(t,"FIXED_LINE",e))return e.type("MOBILE")&&""===e.type("MOBILE").pattern()?"FIXED_LINE_OR_MOBILE":e.type("MOBILE")?W(t,"MOBILE",e)?"FIXED_LINE_OR_MOBILE":"FIXED_LINE":"FIXED_LINE_OR_MOBILE";for(var C=0,F=E;C<F.length;C++){var B=F[C];if(W(t,B,e))return B}}}}function W(g,I,e){return!(!(I=e.type(I))||!I.pattern())&&(!(I.possibleLengths()&&I.possibleLengths().indexOf(g.length)<0)&&Q(g,I.pattern()))}function f(g,I,e){var t=e.type(I),C=t&&t.possibleLengths()||e.possibleLengths();if(!C)return"IS_POSSIBLE";if("FIXED_LINE_OR_MOBILE"===I){if(!e.type("FIXED_LINE"))return f(g,"MOBILE",e);var Q=e.type("MOBILE");Q&&(C=function(g,I){var e=g.slice(),t=I,C=Array.isArray(t),Q=0;for(t=C?t:t[Symbol.iterator]();;){var F;if(C){if(Q>=t.length)break;F=t[Q++]}else{if((Q=t.next()).done)break;F=Q.value}var B=F;g.indexOf(B)<0&&e.push(B)}return e.sort((function(g,I){return g-I}))}(C,Q.possibleLengths()))}else if(I&&!t)return"INVALID_LENGTH";var F=g.length,B=C[0];return B===F?"IS_POSSIBLE":B>F?"TOO_SHORT":C[C.length-1]<F?"TOO_LONG":C.indexOf(F,1)>=0?"IS_POSSIBLE":"INVALID_LENGTH"}function X(g,I,e){switch(f(g,void 0,e)){case"IS_POSSIBLE":return!0;default:return!1}}var J=new RegExp("([0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9])"),v=/^[\d]+(?:[~\u2053\u223C\uFF5E][\d]+)?$/;function k(g,I,e,t){if(I){var C=new c(t);C.selectNumberingPlan(I,e);var Q=new RegExp(C.IDDPrefix());if(0===g.search(Q)){var F=(g=g.slice(g.match(Q)[0].length)).match(J);if(!(F&&null!=F[1]&&F[1].length>0&&"0"===F[1]))return g}}}function H(g,I){return function(g){if(Array.isArray(g))return g}(g)||function(g,I){var e=[],t=!0,C=!1,Q=void 0;try{for(var F,B=g[Symbol.iterator]();!(t=(F=B.next()).done)&&(e.push(F.value),!I||e.length!==I);t=!0);}catch(n){C=!0,Q=n}finally{try{t||null==B.return||B.return()}finally{if(C)throw Q}}return e}(g,I)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function M(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}var Y={formatExtension:function(g,I,e){return"".concat(g).concat(e.ext()).concat(I)}};function w(g,I,e,t){if(e=e?function(g){for(var I=1;I<arguments.length;I++){var e=null!=arguments[I]?arguments[I]:{},t=Object.keys(e);"function"===typeof Object.getOwnPropertySymbols&&(t=t.concat(Object.getOwnPropertySymbols(e).filter((function(g){return Object.getOwnPropertyDescriptor(e,g).enumerable})))),t.forEach((function(I){M(g,I,e[I])}))}return g}({},Y,e):Y,t=new c(t),g.country&&"001"!==g.country){if(!t.hasCountry(g.country))throw new Error("Unknown country: ".concat(g.country));t.country(g.country)}else{if(!g.countryCallingCode)return g.phone||"";t.chooseCountryByCountryCallingCode(g.countryCallingCode)}var C,Q=t.countryCallingCode(),F=e.v2?g.nationalNumber:g.phone;switch(I){case"NATIONAL":return F?j(C=O(F,"NATIONAL",t,e),g.ext,t,e.formatExtension):"";case"INTERNATIONAL":return F?(C=O(F,"INTERNATIONAL",t,e),j(C="+".concat(Q," ").concat(C),g.ext,t,e.formatExtension)):"+".concat(Q);case"E.164":return"+".concat(Q).concat(F);case"RFC3966":return function(g){var I=g.number,e=g.ext;if(!I)return"";if("+"!==I[0])throw new Error('"formatRFC3966()" expects "number" to be in E.164 format.');return"tel:".concat(I).concat(e?";ext="+e:"")}({number:"+".concat(Q).concat(F),ext:g.ext});case"IDD":if(!e.fromCountry)return;var B=function(g,I,e){var t=new c(e);return t.selectNumberingPlan(g,I),v.test(t.IDDPrefix())?t.IDDPrefix():t.defaultIDDPrefix()}(e.fromCountry,void 0,t.metadata);if(!B)return;if(e.humanReadable){var n=Q&&function(g,I,e,t,C){var Q=new c(t.metadata);if(Q.country(e),I===Q.countryCallingCode())return"1"===I?I+" "+O(g,"NATIONAL",t,C):O(g,"NATIONAL",t,C)}(F,t.countryCallingCode(),e.fromCountry,t,e);return j(C=n||"".concat(B," ").concat(Q," ").concat(O(F,"INTERNATIONAL",t,e)),g.ext,t,e.formatExtension)}return"".concat(B).concat(Q).concat(F);default:throw new Error('Unknown "format" argument passed to "formatNumber()": "'.concat(I,'"'))}}var T=/(\$\d)/;function z(g,I,e,t,C){var Q=g.replace(new RegExp(I.pattern()),e?I.internationalFormat():t&&I.nationalPrefixFormattingRule()?I.format().replace(T,I.nationalPrefixFormattingRule()):I.format());return e?K(Q):Q}function O(g,I,e,t){var C=function(g,I){var e=g,t=Array.isArray(e),C=0;for(e=t?e:e[Symbol.iterator]();;){var F;if(t){if(C>=e.length)break;F=e[C++]}else{if((C=e.next()).done)break;F=C.value}var B=F;if(B.leadingDigitsPatterns().length>0){var n=B.leadingDigitsPatterns()[B.leadingDigitsPatterns().length-1];if(0!==I.search(n))continue}if(Q(I,B.pattern()))return B}}(e.formats(),g);return C?z(g,C,"INTERNATIONAL"===I,!C.nationalPrefixIsOptionalWhenFormattingInNationalFormat()||!1!==t.nationalPrefix):g}function K(g){return g.replace(new RegExp("[".concat(C,"]+"),"g")," ").trim()}function j(g,I,e,t){return I?t(g,I,e):g}function P(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}function _(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}var q=function(){function g(I,e,t){if(function(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}(this,g),!I)throw new TypeError("`country` or `countryCallingCode` not passed");if(!e)throw new TypeError("`nationalNumber` not passed");var C=new c(t);$(I)&&(this.country=I,C.country(I),I=C.countryCallingCode()),this.countryCallingCode=I,this.nationalNumber=e,this.number="+"+this.countryCallingCode+this.nationalNumber,this.metadata=t}var I,e,t;return I=g,(e=[{key:"isPossible",value:function(){return function(g,I,e){if(void 0===I&&(I={}),e=new c(e),I.v2){if(!g.countryCallingCode)throw new Error("Invalid phone number object passed");e.chooseCountryByCountryCallingCode(g.countryCallingCode)}else{if(!g.phone)return!1;if(g.country){if(!e.hasCountry(g.country))throw new Error("Unknown country: ".concat(g.country));e.country(g.country)}else{if(!g.countryCallingCode)throw new Error("Invalid phone number object passed");e.chooseCountryByCountryCallingCode(g.countryCallingCode)}}if(e.possibleLengths())return X(g.phone||g.nationalNumber,0,e);if(g.countryCallingCode&&e.isNonGeographicCallingCode(g.countryCallingCode))return!0;throw new Error('Missing "possibleLengths" in metadata. Perhaps the metadata has been generated before v1.0.18.')}(this,{v2:!0},this.metadata)}},{key:"isValid",value:function(){return g=this,I={v2:!0},e=this.metadata,I=I||{},e=new c(e),!!g.country&&(e.selectNumberingPlan(g.country,g.countryCallingCode),e.hasTypes()?void 0!==N(g,I,e.metadata):Q(I.v2?g.nationalNumber:g.phone,e.nationalNumberPattern()));var g,I,e}},{key:"isNonGeographic",value:function(){return new c(this.metadata).isNonGeographicCallingCode(this.countryCallingCode)}},{key:"isEqual",value:function(g){return this.number===g.number&&this.ext===g.ext}},{key:"getType",value:function(){return N(this,{v2:!0},this.metadata)}},{key:"format",value:function(g,I){return w(this,g,I?function(g){for(var I=1;I<arguments.length;I++){var e=null!=arguments[I]?arguments[I]:{},t=Object.keys(e);"function"===typeof Object.getOwnPropertySymbols&&(t=t.concat(Object.getOwnPropertySymbols(e).filter((function(g){return Object.getOwnPropertyDescriptor(e,g).enumerable})))),t.forEach((function(I){P(g,I,e[I])}))}return g}({},I,{v2:!0}):{v2:!0},this.metadata)}},{key:"formatNational",value:function(g){return this.format("NATIONAL",g)}},{key:"formatInternational",value:function(g){return this.format("INTERNATIONAL",g)}},{key:"getURI",value:function(g){return this.format("RFC3966",g)}}])&&_(I.prototype,e),t&&_(I,t),g}(),$=function(g){return/^[A-Z]{2}$/.test(g)},gg=new RegExp("[+\uff0b0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9]"),Ig=new RegExp("[^0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9]+$");function eg(g,I,e){if(I=I||{},e=new c(e),I.defaultCountry&&!e.hasCountry(I.defaultCountry)){if(I.v2)throw new F("INVALID_COUNTRY");throw new Error("Unknown country: ".concat(I.defaultCountry))}var t=function(g,I){if(g&&0===g.indexOf("tel:"))return function(g){var I,e,t=(g=g.replace(/^tel:/,"tel=")).split(";"),C=Array.isArray(t),Q=0;for(t=C?t:t[Symbol.iterator]();;){var F;if(C){if(Q>=t.length)break;F=t[Q++]}else{if((Q=t.next()).done)break;F=Q.value}var B=H(F.split("="),2),n=B[0],U=B[1];switch(n){case"tel":I=U;break;case"ext":e=U;break;case"phone-context":"+"===U[0]&&(I=U+I)}}if(!G(I))return{};var s={number:I};return e&&(s.ext=e),s}(g);var e=function(g,I){if(!g)return;if(g.length>250){if(I)throw new F("TOO_LONG");return}var e=g.search(gg);if(e<0)return;return g.slice(e).replace(Ig,"")}(g,I);if(!e||!G(e))return{};var t=function(g){var I=g.search(R);if(I<0)return{};for(var e=g.slice(0,I),t=g.match(R),C=1;C<t.length;){if(null!=t[C]&&t[C].length>0)return{number:e,ext:t[C]};C++}}(e);if(t.ext)return t;return{number:e}}(g,I.v2),C=t.number,B=t.ext;if(!C){if(I.v2)throw new F("NOT_A_NUMBER");return{}}var n=function(g,I,e,t){var C,Q=Fg(D(g),I,e,t.metadata),F=Q.countryCallingCode,B=Q.number;if(F)t.chooseCountryByCountryCallingCode(F);else{if(!B||!I&&!e)return{};t.selectNumberingPlan(I,e),I&&(C=I),F=e||y(I,t.metadata)}if(!B)return{countryCallingCode:F};var n=Qg(D(B),t),U=n.nationalNumber,s=n.carrierCode,i=Cg(F,U,t);i&&(C=i,"001"===i||t.country(C));return{country:C,countryCallingCode:F,nationalNumber:U,carrierCode:s}}(C,I.defaultCountry,I.defaultCallingCode,e),U=n.country,s=n.nationalNumber,i=n.countryCallingCode,A=n.carrierCode;if(!e.hasSelectedNumberingPlan()){if(I.v2)throw new F("INVALID_COUNTRY");return{}}if(!s||s.length<2){if(I.v2)throw new F("TOO_SHORT");return{}}if(s.length>17){if(I.v2)throw new F("TOO_LONG");return{}}if(I.v2){var l=new q(i,s,e.metadata);return U&&(l.country=U),A&&(l.carrierCode=A),B&&(l.ext=B),l}var a=!!(I.extended?e.hasSelectedNumberingPlan():U)&&Q(s,e.nationalNumberPattern());return I.extended?{country:U,countryCallingCode:i,carrierCode:A,valid:a,possible:!!a||!(!0!==I.extended||!e.possibleLengths()||!X(s,0,e)),phone:s,ext:B}:a?function(g,I,e){var t={country:g,phone:I};e&&(t.ext=e);return t}(U,s,B):{}}function tg(g,I){if(g&&I.nationalPrefixForParsing()){var e=new RegExp("^(?:"+I.nationalPrefixForParsing()+")"),t=e.exec(g);if(t){var C,F,B=t.length-1;if(I.nationalPrefixTransformRule()&&B>0&&t[B])C=g.replace(e,I.nationalPrefixTransformRule()),B>1&&t[B]&&(F=t[1]);else{var n=t[0];C=g.slice(n.length),B>0&&(F=t[1])}if(!Q(g,I.nationalNumberPattern())||Q(C,I.nationalNumberPattern()))return{nationalNumber:C,carrierCode:F}}}return{nationalNumber:g}}function Cg(g,I,e){var t=e.getCountryCodesForCallingCode(g);if(t)return 1===t.length?t[0]:function(g,I,e){e=new c(e);var t=g,C=Array.isArray(t),Q=0;for(t=C?t:t[Symbol.iterator]();;){var F;if(C){if(Q>=t.length)break;F=t[Q++]}else{if((Q=t.next()).done)break;F=Q.value}var B=F;if(e.country(B),e.leadingDigits()){if(I&&0===I.search(e.leadingDigits()))return B}else if(N({phone:I,country:B},void 0,e.metadata))return B}}(t,I,e.metadata)}function Qg(g,I){var e=tg(D(g),I),t=e.nationalNumber,C=e.carrierCode;if(t.length!==g.length+(C?C.length:0)&&I.possibleLengths())switch(f(t,void 0,I)){case"TOO_SHORT":case"INVALID_LENGTH":return{nationalNumber:g}}return{nationalNumber:t,carrierCode:C}}function Fg(g,I,e,t){if(!g)return{};if("+"!==g[0]){var C=k(g,I,e,t);if(!C||C===g){if(I||e){var Q=Bg(g,I,e,t),F=Q.countryCallingCode,B=Q.number;if(F)return{countryCallingCode:F,number:B}}return{number:g}}g="+"+C}if("0"===g[1])return{};t=new c(t);for(var n=2;n-1<=3&&n<=g.length;){var U=g.slice(1,n);if(t.hasCallingCode(U))return t.selectNumberingPlan(void 0,U),{countryCallingCode:U,number:g.slice(n)};n++}return{}}function Bg(g,I,e,t){var C=I?y(I,t):e;if(0===g.indexOf(C)){(t=new c(t)).selectNumberingPlan(I,e);var F=g.slice(C.length),B=tg(F,t).nationalNumber,n=tg(g,t).nationalNumber;if(!Q(n,t.nationalNumberPattern())&&Q(B,t.nationalNumberPattern())||"TOO_LONG"===f(n,void 0,t))return{countryCallingCode:C,number:F}}return{number:g}}function ng(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}function Ug(g,I,e){return eg(g,function(g){for(var I=1;I<arguments.length;I++){var e=null!=arguments[I]?arguments[I]:{},t=Object.keys(e);"function"===typeof Object.getOwnPropertySymbols&&(t=t.concat(Object.getOwnPropertySymbols(e).filter((function(g){return Object.getOwnPropertyDescriptor(e,g).enumerable})))),t.forEach((function(I){ng(g,I,e[I])}))}return g}({},I,{v2:!0}),e)}function sg(g){return(sg="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"===typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g})(g)}function ig(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}function cg(g,I){return function(g){if(Array.isArray(g))return g}(g)||function(g,I){var e=[],t=!0,C=!1,Q=void 0;try{for(var F,B=g[Symbol.iterator]();!(t=(F=B.next()).done)&&(e.push(F.value),!I||e.length!==I);t=!0);}catch(n){C=!0,Q=n}finally{try{t||null==B.return||B.return()}finally{if(C)throw Q}}return e}(g,I)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function Ag(g){var I,e,t,C=cg(Array.prototype.slice.call(g),4),Q=C[0],F=C[1],B=C[2],n=C[3];if("string"!==typeof Q)throw new TypeError("A text for parsing must be a string.");if(I=Q,F&&"string"!==typeof F){if(!lg(F))throw new Error("Invalid second argument: ".concat(F));B?(e=F,t=B):t=F}else n?(e=B,t=n):(e=void 0,t=B),F&&(e=function(g){for(var I=1;I<arguments.length;I++){var e=null!=arguments[I]?arguments[I]:{},t=Object.keys(e);"function"===typeof Object.getOwnPropertySymbols&&(t=t.concat(Object.getOwnPropertySymbols(e).filter((function(g){return Object.getOwnPropertyDescriptor(e,g).enumerable})))),t.forEach((function(I){ig(g,I,e[I])}))}return g}({defaultCountry:F},e));return{text:I,options:e,metadata:t}}var lg=function(g){return"object"===sg(g)};function ag(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}function rg(g,I,e){I&&I.defaultCountry&&!b(I.defaultCountry,e)&&(I=function(g){for(var I=1;I<arguments.length;I++){var e=null!=arguments[I]?arguments[I]:{},t=Object.keys(e);"function"===typeof Object.getOwnPropertySymbols&&(t=t.concat(Object.getOwnPropertySymbols(e).filter((function(g){return Object.getOwnPropertyDescriptor(e,g).enumerable})))),t.forEach((function(I){ag(g,I,e[I])}))}return g}({},I,{defaultCountry:void 0}));try{return Ug(g,I,e)}catch(t){if(!(t instanceof F))throw t}}function og(){var g=Ag(arguments),I=g.text,e=g.options,t=g.metadata;return rg(I,e,t)}function dg(g,I){if(!g)return!1;var e=og(g,I);return!!e&&e.isValid()}function ug(g){return new c(g).getCountries()}var yg=e(0),bg=e.n(yg),Zg=e(4),mg=e.n(Zg),xg=e(860),Rg=mg.a.shape({country_calling_codes:mg.a.object.isRequired,countries:mg.a.object.isRequired}),Sg=mg.a.objectOf(mg.a.string),Gg=e(194),Lg=e.n(Gg),Vg=e(696),hg=e.n(Vg);function Dg(g){return(Dg="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"===typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g})(g)}function pg(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}var Eg=wg("9",15),Ng=new RegExp("x"),Wg=/[- ]/,fg=function(){return/\[([^\[\]])*\]/g},Xg=function(){return/\d(?=[^,}][^,}])/g},Jg=new RegExp("^["+C+"]*(\\$\\d["+C+"]*)+$"),vg=new RegExp("^"+("["+C+"0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9]+")+"$","i"),kg="(?:[+\uff0b]["+C+"0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9]*|["+C+"0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9]+)",Hg=new RegExp("[^"+C+"0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9]+.*$"),Mg=function(){function g(I,e){var t,C;!function(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}(this,g),function(g,I,e){I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e}(this,"options",{}),this.metadata=new c(e),I&&("object"===Dg(I)?(t=I.defaultCountry,C=I.defaultCallingCode):t=I),t&&this.metadata.hasCountry(t)&&(this.defaultCountry=t),C&&(this.defaultCallingCode=C),this.reset()}var I,e,t;return I=g,(e=[{key:"reset",value:function(){return this.formattedOutput="",this.international=void 0,this.internationalPrefix=void 0,this.countryCallingCode=void 0,this.digits="",this.nationalNumberDigits="",this.nationalPrefix="",this.carrierCode="",this.setCountry(this.defaultCountry,this.defaultCallingCode),this}},{key:"setCountry",value:function(g,I){this.country=g,this.metadata.selectNumberingPlan(g,I),this.metadata.hasSelectedNumberingPlan()?this.initializePhoneNumberFormatsForCountry():this.matchingFormats=[],this.resetFormat()}},{key:"resetFormat",value:function(){this.chosenFormat=void 0,this.template=void 0,this.populatedNationalNumberTemplate=void 0,this.populatedNationalNumberTemplatePosition=-1}},{key:"input",value:function(g){var I=this.extractFormattedDigits(g);return vg.test(I)&&(this.formattedOutput=this.getFullNumber(this.inputDigits(h(I))||this.getNonFormattedNationalNumber())),this.formattedOutput}},{key:"extractFormattedDigits",value:function(g){var I=function(g){var I,e=g.search(kg);if(!(e<0))return"+"===(g=g.slice(e))[0]&&(I=!0,g=g.slice("+".length)),g=g.replace(Hg,""),I&&(g="+"+g),g}(g)||"";return"+"===I[0]&&(I=I.slice("+".length),this.digits||(this.formattedOutput="+",this.startInternationalNumber())),I}},{key:"startInternationalNumber",value:function(){this.international=!0,this.setCountry()}},{key:"inputDigits",value:function(g){if(!this.digits){var I=k(g,this.defaultCountry,this.defaultCallingCode,this.metadata.metadata);I&&I!==g&&(this.internationalPrefix=g.slice(0,g.length-I.length),g=I,this.startInternationalNumber())}if(this.digits+=g,this.isInternational())if(this.countryCallingCode)this.nationalNumberDigits+=g,this.country&&!this.isCountryCallingCodeAmbiguous()||this.determineTheCountry();else{if(!this.extractCountryCallingCode())return;this.nationalNumberDigits=this.digits.slice(this.countryCallingCode.length),this.determineTheCountry()}else{this.nationalNumberDigits+=g,this.country||this.determineTheCountry();var e=this.nationalPrefix;this.nationalNumberDigits=this.nationalPrefix+this.nationalNumberDigits,this.extractNationalPrefix(),this.nationalPrefix!==e&&(this.initializePhoneNumberFormatsForCountry(),this.resetFormat())}return this.nationalNumberDigits&&this.matchFormats(this.nationalNumberDigits),this.formatNationalNumberWithNextDigits(g)}},{key:"formatNationalNumberWithNextDigits",value:function(g){var I=this.attemptToFormatCompletePhoneNumber();if(I)return I;var e=this.chosenFormat,t=this.chooseFormat();return t?t===e?this.formatNextNationalNumberDigits(g):this.reformatNationalNumber():void 0}},{key:"chooseFormat",value:function(){var g=this.matchingFormats,I=Array.isArray(g),e=0;for(g=I?g:g[Symbol.iterator]();;){var t;if(I){if(e>=g.length)break;t=g[e++]}else{if((e=g.next()).done)break;t=e.value}var C=t;if(this.chosenFormat===C)break;if(this.createFormattingTemplate(C)){this.chosenFormat=C,this.populatedNationalNumberTemplatePosition=-1;break}}return this.chosenFormat||this.resetFormat(),this.chosenFormat}},{key:"reformatNationalNumber",value:function(){return this.formatNextNationalNumberDigits(this.nationalPrefix+this.nationalNumberDigits)}},{key:"initializePhoneNumberFormatsForCountry",value:function(){this.matchingFormats=this.metadata.formats().filter((function(g){return Jg.test(g.internationalFormat())}))}},{key:"matchFormats",value:function(g){var I=this,e=g.length-3;e<0&&(e=0),this.matchingFormats=this.matchingFormats.filter((function(t){if(!I.isInternational()&&!I.nationalPrefix&&t.nationalPrefixIsMandatoryWhenFormattingInNationalFormat())return!1;var C=t.leadingDigitsPatterns().length;if(0===C)return!0;if(g.length<3)return!0;e=Math.min(e,C-1);var Q=t.leadingDigitsPatterns()[e];return new RegExp("^(".concat(Q,")")).test(g)})),this.chosenFormat&&-1===this.matchingFormats.indexOf(this.chosenFormat)&&this.resetFormat()}},{key:"getSeparatorAfterNationalPrefix",value:function(g){return"1"===this.metadata.countryCallingCode()||g&&g.nationalPrefixFormattingRule()&&Wg.test(g.nationalPrefixFormattingRule())?" ":""}},{key:"attemptToFormatCompletePhoneNumber",value:function(){var g=this.matchingFormats,I=Array.isArray(g),e=0;for(g=I?g:g[Symbol.iterator]();;){var t;if(I){if(e>=g.length)break;t=g[e++]}else{if((e=g.next()).done)break;t=e.value}var C=t;if(new RegExp("^(?:".concat(C.pattern(),")$")).test(this.nationalNumberDigits)){var Q=z(this.nationalNumberDigits,C,this.isInternational(),!1,this.metadata);if(h(Q)===this.nationalNumberDigits){if(this.nationalPrefix){var F=z(this.nationalNumberDigits,C,this.isInternational(),!0,this.metadata);Q=h(F)===this.nationalPrefix+this.nationalNumberDigits?F:this.nationalPrefix+this.getSeparatorAfterNationalPrefix(C)+Q}return this.resetFormat(),this.chosenFormat=C,this.createFormattingTemplate(C)?this.reformatNationalNumber():(this.template=this.getFullNumber(Q).replace(/[\d\+]/g,"x"),this.populatedNationalNumberTemplate=Q,this.populatedNationalNumberTemplatePosition=this.populatedNationalNumberTemplate.length-1),Q}}}}},{key:"getInternationalPrefix",value:function(g){return this.internationalPrefix?g&&!1===g.spacing?this.internationalPrefix:this.internationalPrefix+" ":"+"}},{key:"getFullNumber",value:function(g){if(this.isInternational()){var I=this.getInternationalPrefix();return this.countryCallingCode?g?"".concat(I).concat(this.countryCallingCode," ").concat(g):"".concat(I).concat(this.countryCallingCode):"".concat(I).concat(this.digits)}return g}},{key:"getNonFormattedNationalNumber",value:function(){return this.nationalPrefix+(this.nationalPrefix&&this.nationalNumberDigits&&this.getSeparatorAfterNationalPrefix())+this.nationalNumberDigits}},{key:"extractCountryCallingCode",value:function(){var g=Fg("+"+this.digits,this.defaultCountry,this.defaultCallingCode,this.metadata.metadata),I=g.countryCallingCode,e=g.number;if(I)return this.nationalNumberDigits=e,this.countryCallingCode=I,this.metadata.chooseCountryByCountryCallingCode(I),this.initializePhoneNumberFormatsForCountry(),this.resetFormat(),this.metadata.hasSelectedNumberingPlan()}},{key:"extractNationalPrefix",value:function(){if(this.nationalPrefix="",this.metadata.hasSelectedNumberingPlan()){var g=tg(this.nationalNumberDigits,this.metadata),I=g.nationalNumber,e=g.carrierCode;if(I){var t=this.nationalNumberDigits.indexOf(I);if(t<0||t!==this.nationalNumberDigits.length-I.length)return}return e&&(this.carrierCode=e),this.nationalPrefix=this.nationalNumberDigits.slice(0,this.nationalNumberDigits.length-I.length),this.nationalNumberDigits=I,this.nationalPrefix}}},{key:"isCountryCallingCodeAmbiguous",value:function(){var g=this.metadata.getCountryCodesForCallingCode(this.countryCallingCode);return g&&g.length>1}},{key:"createFormattingTemplate",value:function(g){if(!(g.pattern().indexOf("|")>=0)){var I=this.getTemplateForNumberFormatPattern(g,this.nationalPrefix);if(I)return this.template=I,this.populatedNationalNumberTemplate=I,this.isInternational()&&(this.template=this.getInternationalPrefix().replace(/[\d\+]/g,"x")+wg("x",this.countryCallingCode.length)+" "+I),this.template}}},{key:"getTemplateForNumberFormatPattern",value:function(g,I){var e=g.pattern();e=e.replace(fg(),"\\d").replace(Xg(),"\\d");var t=Eg.match(e)[0];if(!(this.nationalNumberDigits.length>t.length)){var C=new RegExp("^"+e+"$"),Q=this.nationalNumberDigits.replace(/\d/g,"9");C.test(Q)&&(t=Q);var F,B=this.getFormatFormat(g);if(I&&g.nationalPrefixFormattingRule()){var n=B.replace(T,g.nationalPrefixFormattingRule());if(h(n)===I+h(B)){B=n,F=!0;for(var U=I.length;U>0;)B=B.replace(/\d/,"x"),U--}}var s=t.replace(new RegExp(e),B).replace(new RegExp("9","g"),"x");return I&&(F||(s=wg("x",I.length)+this.getSeparatorAfterNationalPrefix(g)+s)),s}}},{key:"formatNextNationalNumberDigits",value:function(g){var I=g.split(""),e=Array.isArray(I),t=0;for(I=e?I:I[Symbol.iterator]();;){var C;if(e){if(t>=I.length)break;C=I[t++]}else{if((t=I.next()).done)break;C=t.value}var Q=C;if(this.populatedNationalNumberTemplate.slice(this.populatedNationalNumberTemplatePosition+1).search(Ng)<0)return void this.resetFormat();this.populatedNationalNumberTemplatePosition=this.populatedNationalNumberTemplate.search(Ng),this.populatedNationalNumberTemplate=this.populatedNationalNumberTemplate.replace(Ng,Q)}return Yg(this.populatedNationalNumberTemplate,this.populatedNationalNumberTemplatePosition+1)}},{key:"isInternational",value:function(){return this.international}},{key:"getFormatFormat",value:function(g){return this.isInternational()?K(g.internationalFormat()):g.format()}},{key:"determineTheCountry",value:function(){this.country=Cg(this.isInternational()?this.countryCallingCode:this.defaultCallingCode,this.nationalNumberDigits,this.metadata)}},{key:"getNumber",value:function(){if(this.isInternational()){if(!this.countryCallingCode)return}else if(!this.country&&!this.defaultCallingCode)return;if(this.nationalNumberDigits){var g=this.country,I=this.countryCallingCode||this.defaultCallingCode,e=this.nationalNumberDigits,t=this.carrierCode;if(!this.isInternational()&&this.nationalNumberDigits===this.digits){var C=Bg(this.digits,g,I,this.metadata.metadata),Q=C.countryCallingCode,F=C.number;if(Q){var B=Qg(F,this.metadata);e=B.nationalNumber,t=B.carrierCode}}var n=new q(g||I,e,this.metadata.metadata);return t&&(n.carrierCode=t),n}}},{key:"getNationalNumber",value:function(){return this.nationalNumberDigits}},{key:"getNonFormattedTemplate",value:function(){return this.getFullNumber(this.getNonFormattedNationalNumber()).replace(/[\+\d]/g,"x")}},{key:"getTemplate",value:function(){if(!this.template)return this.getNonFormattedTemplate();for(var g=-1,I=0;I<(this.isInternational()?this.getInternationalPrefix({spacing:!1}).length:0)+this.digits.length;)g=this.template.indexOf("x",g+1),I++;return Yg(this.template,g+1)}}])&&pg(I.prototype,e),t&&pg(I,t),g}();function Yg(g,I){return")"===g[I]&&I++,function(g){for(var I=[],e=0;e<g.length;)"("===g[e]?I.push(e):")"===g[e]&&I.pop(),e++;var t=0,C="";I.push(g.length);for(var Q=0,F=I;Q<F.length;Q++){var B=F[Q];C+=g.slice(t,B),t=B+1}return C}(g.slice(0,I))}function wg(g,I){if(I<1)return"";for(var e="";I>1;)1&I&&(e+=g),I>>=1,g+=g;return e+g}function Tg(g,I,e){return g&&I?"+".concat(y(g,e)):""}function zg(g,I){return I&&" "===(g=g.slice(I.length))[0]&&(g=g.slice(1)),g}function Og(){return(Og=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}function Kg(g,I){if(null==g)return{};var e,t,C=function(g,I){if(null==g)return{};var e,t,C={},Q=Object.keys(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||(C[e]=g[e]);return C}(g,I);if(Object.getOwnPropertySymbols){var Q=Object.getOwnPropertySymbols(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||Object.prototype.propertyIsEnumerable.call(g,e)&&(C[e]=g[e])}return C}var jg=function(g){function I(g,I){var e=g.country,t=g.international,C=g.metadata,Q=Kg(g,["country","international","metadata"]),F=Object(yg.useCallback)((function(g){var I=new Mg(e,C),Q=Tg(e,t,C),F=I.input(Q+g),B=I.getTemplate();return Q&&(F=zg(F,Q),B&&(B=zg(B,Q))),{text:F,template:B}}),[e,C]);return bg.a.createElement(hg.a,Og({},Q,{ref:I,parse:p,format:F}))}return(I=bg.a.forwardRef(I)).propTypes={country:mg.a.string,international:mg.a.bool,metadata:mg.a.object.isRequired},I.defaultProps={metadata:g},I}();function Pg(){return(Pg=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}function _g(g,I){if(null==g)return{};var e,t,C=function(g,I){if(null==g)return{};var e,t,C={},Q=Object.keys(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||(C[e]=g[e]);return C}(g,I);if(Object.getOwnPropertySymbols){var Q=Object.getOwnPropertySymbols(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||Object.prototype.propertyIsEnumerable.call(g,e)&&(C[e]=g[e])}return C}var qg=function(g){function I(g,I){var e=g.value,t=g.onChange,C=g.country,Q=g.international,F=g.metadata,B=g.inputComponent,n=_g(g,["value","onChange","country","international","metadata","inputComponent"]),U=Tg(C,Q,F),s=Object(yg.useCallback)((function(g){var I=D(g.target.value);I===e&&(0===$g(U,I,C,F).indexOf(g.target.value)&&(I=I.slice(0,-1)));t(I)}),[U,e,t,C,F]);return bg.a.createElement(B,Pg({},n,{ref:I,value:$g(U,e,C,F),onChange:s}))}return(I=bg.a.forwardRef(I)).propTypes={value:mg.a.string.isRequired,onChange:mg.a.func.isRequired,country:mg.a.string,international:mg.a.bool,metadata:mg.a.object.isRequired,inputComponent:mg.a.elementType.isRequired},I.defaultProps={metadata:g,inputComponent:"input"},I}();function $g(g,I,e,t){return zg(function(g,I,e){return e||(e=I,I=void 0),new Mg(I,e).input(g)}(g+I,e,t),g)}function gI(){return(gI=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}function II(g,I){if(null==g)return{};var e,t,C=function(g,I){if(null==g)return{};var e,t,C={},Q=Object.keys(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||(C[e]=g[e]);return C}(g,I);if(Object.getOwnPropertySymbols){var Q=Object.getOwnPropertySymbols(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||Object.prototype.propertyIsEnumerable.call(g,e)&&(C[e]=g[e])}return C}function eI(g){var I=g.country,e=g.countryName,t=g.flags,C=g.flagUrl,Q=II(g,["country","countryName","flags","flagUrl"]);return t&&t[I]?t[I]({title:e}):bg.a.createElement("img",gI({},Q,{alt:e,src:C.replace("{XX}",I).replace("{xx}",I.toLowerCase())}))}function tI(){return(tI=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}function CI(g,I){if(null==g)return{};var e,t,C=function(g,I){if(null==g)return{};var e,t,C={},Q=Object.keys(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||(C[e]=g[e]);return C}(g,I);if(Object.getOwnPropertySymbols){var Q=Object.getOwnPropertySymbols(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||Object.prototype.propertyIsEnumerable.call(g,e)&&(C[e]=g[e])}return C}function QI(g){var I=g.aspectRatio,e=CI(g,["aspectRatio"]);return 1===I?bg.a.createElement(BI,e):bg.a.createElement(FI,e)}function FI(g){var I=g.title,e=CI(g,["title"]);return bg.a.createElement("svg",tI({},e,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 75 50"}),bg.a.createElement("title",null,I),bg.a.createElement("g",{className:"PhoneInputInternationalIconGlobe",stroke:"currentColor",fill:"none",strokeWidth:"2",strokeMiterlimit:"10"},bg.a.createElement("path",{strokeLinecap:"round",d:"M47.2,36.1C48.1,36,49,36,50,36c7.4,0,14,1.7,18.5,4.3"}),bg.a.createElement("path",{d:"M68.6,9.6C64.2,12.3,57.5,14,50,14c-7.4,0-14-1.7-18.5-4.3"}),bg.a.createElement("line",{x1:"26",y1:"25",x2:"74",y2:"25"}),bg.a.createElement("line",{x1:"50",y1:"1",x2:"50",y2:"49"}),bg.a.createElement("path",{strokeLinecap:"round",d:"M46.3,48.7c1.2,0.2,2.5,0.3,3.7,0.3c13.3,0,24-10.7,24-24S63.3,1,50,1S26,11.7,26,25c0,2,0.3,3.9,0.7,5.8"}),bg.a.createElement("path",{strokeLinecap:"round",d:"M46.8,48.2c1,0.6,2.1,0.8,3.2,0.8c6.6,0,12-10.7,12-24S56.6,1,50,1S38,11.7,38,25c0,1.4,0.1,2.7,0.2,4c0,0.1,0,0.2,0,0.2"})),bg.a.createElement("path",{className:"PhoneInputInternationalIconPhone",stroke:"none",fill:"currentColor",d:"M12.4,17.9c2.9-2.9,5.4-4.8,0.3-11.2S4.1,5.2,1.3,8.1C-2,11.4,1.1,23.5,13.1,35.6s24.3,15.2,27.5,11.9c2.8-2.8,7.8-6.3,1.4-11.5s-8.3-2.6-11.2,0.3c-2,2-7.2-2.2-11.7-6.7S10.4,19.9,12.4,17.9z"}))}function BI(g){var I=g.title,e=CI(g,["title"]);return bg.a.createElement("svg",tI({},e,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 50 50"}),bg.a.createElement("title",null,I),bg.a.createElement("g",{className:"PhoneInputInternationalIconGlobe",stroke:"currentColor",fill:"none",strokeWidth:"2",strokeLinecap:"round"},bg.a.createElement("path",{d:"M8.45,13A21.44,21.44,0,1,1,37.08,41.56"}),bg.a.createElement("path",{d:"M19.36,35.47a36.9,36.9,0,0,1-2.28-13.24C17.08,10.39,21.88.85,27.8.85s10.72,9.54,10.72,21.38c0,6.48-1.44,12.28-3.71,16.21"}),bg.a.createElement("path",{d:"M17.41,33.4A39,39,0,0,1,27.8,32.06c6.62,0,12.55,1.5,16.48,3.86"}),bg.a.createElement("path",{d:"M44.29,8.53c-3.93,2.37-9.86,3.88-16.49,3.88S15.25,10.9,11.31,8.54"}),bg.a.createElement("line",{x1:"27.8",y1:"0.85",x2:"27.8",y2:"34.61"}),bg.a.createElement("line",{x1:"15.2",y1:"22.23",x2:"49.15",y2:"22.23"})),bg.a.createElement("path",{className:"PhoneInputInternationalIconPhone",stroke:"transparent",fill:"currentColor",d:"M9.42,26.64c2.22-2.22,4.15-3.59.22-8.49S3.08,17,.93,19.17c-2.49,2.48-.13,11.74,9,20.89s18.41,11.5,20.89,9c2.15-2.15,5.91-4.77,1-8.71s-6.27-2-8.49.22c-1.55,1.55-5.48-1.69-8.86-5.08S7.87,28.19,9.42,26.64Z"}))}function nI(g,I){return!!b(g,I)||(console.error("Country not found: ".concat(g)),!1)}function UI(g,I){return g&&0===(g=g.filter((function(g){return nI(g,I)}))).length&&(g=void 0),g}function sI(g){var I=g.flags,e=g.flagUrl,t=g.flagComponent,C=g.internationalIcon;function Q(g){var Q=g.country,F=g.label,B=g.aspectRatio,n=C===QI?B:void 0;return bg.a.createElement("div",{className:Lg()("PhoneInputCountryIcon",{"PhoneInputCountryIcon--square":1===n,"PhoneInputCountryIcon--border":Q})},Q?bg.a.createElement(t,{country:Q,countryName:F,flags:I,flagUrl:e,className:"PhoneInputCountryIconImg"}):bg.a.createElement(C,{title:F,aspectRatio:n,className:"PhoneInputCountryIconImg"}))}return Q.propTypes={country:mg.a.string,label:mg.a.string.isRequired,aspectRatio:mg.a.number},Q}eI.propTypes={country:mg.a.string.isRequired,countryName:mg.a.string.isRequired,flags:mg.a.objectOf(mg.a.elementType),flagUrl:mg.a.string.isRequired},QI.propTypes={title:mg.a.string.isRequired,aspectRatio:mg.a.number},FI.propTypes={title:mg.a.string.isRequired},BI.propTypes={title:mg.a.string.isRequired};sI({flagUrl:"https://catamphetamine.github.io/country-flag-icons/3x2/{XX}.svg",flagComponent:eI,internationalIcon:QI});function iI(g,I,e,t,C){return g&&g.country&&(I=g.country),e&&e.indexOf(I)<0&&(I=void 0),!I&&!t&&e&&e.length>0&&(I=e[0]),I}function cI(g,I,e){var t=g.map((function(g){return{value:g,label:I[g]||g}}));return t.sort((function(g,I){return function(g,I){if(String.prototype.localeCompare)return g.localeCompare(I);return g<I?-1:g>I?1:0}(g.label,I.label)})),e&&t.unshift({label:I.ZZ}),t}function AI(g,I){return og(g||"",I)}function lI(g,I,e,t,C){if(!g)return C?"":"+"+y(e,t);if(e){if("+"===g[0]){if(C)return 0===g.indexOf("+"+y(e,t))?function(g,I,e){if(I){var t="+"+y(I,e);if(g.length<t.length){if(0===t.indexOf(g))return""}else if(0===g.indexOf(t))return g.slice(t.length)}for(var C=0,Q=Object.keys(e.country_calling_codes);C<Q.length;C++){var F=Q[C];if(g.indexOf(F)==="+".length)return g.slice("+".length+F.length)}return""}(g,e,t):"";if(I)return y(e,t)===y(I,t)?g:"+".concat(y(e,t));var Q="+".concat(y(e,t));return 0===g.indexOf(Q)?g:Q}}else if("+"!==g[0])return aI(g,I,t)||"";return g}function aI(g,I,e){if(g){if("+"===g[0]){if("+"===g)return;return g}if(I){var t=dI(g,I,e);return t?"+".concat(y(I,e)).concat(t):void 0}}}function rI(g,I,e){var t=dI(g,I,e);if(t){var C=t.length-function(g,I){return(I=new c(I)).country(g),I.possibleLengths()[I.possibleLengths().length-1]}(I,e);if(C>0)return g.slice(0,g.length-C)}return g}function oI(g,I,e,t,C){if("+"===g)return I;var Q=function(g,I){var e=new Mg(null,I);return e.input(g),e.country}(g,C);return Q&&(!e||e.indexOf(Q)>=0)?Q:I&&t&&!function(g,I,e){var t=y(I,e),C=0;for(;C+1<g.length&&C<t.length;){if(g[C+1]!==t[C])return!1;C++}return!0}(g,I,C)?void 0:I}function dI(g,I,e){var t=new Mg(I,e);t.input(g);var C=t.getNumber();return C&&C.nationalNumber}function uI(g,I,e,t){return!g&&e&&I?"+".concat(y(I,t)):g}function yI(g){return(yI="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"===typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g})(g)}function bI(g,I){var e=Object.keys(g);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(g);I&&(t=t.filter((function(I){return Object.getOwnPropertyDescriptor(g,I).enumerable}))),e.push.apply(e,t)}return e}function ZI(g){for(var I=1;I<arguments.length;I++){var e=null!=arguments[I]?arguments[I]:{};I%2?bI(Object(e),!0).forEach((function(I){VI(g,I,e[I])})):Object.getOwnPropertyDescriptors?Object.defineProperties(g,Object.getOwnPropertyDescriptors(e)):bI(Object(e)).forEach((function(I){Object.defineProperty(g,I,Object.getOwnPropertyDescriptor(e,I))}))}return g}function mI(){return(mI=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}function xI(g,I){if(null==g)return{};var e,t,C=function(g,I){if(null==g)return{};var e,t,C={},Q=Object.keys(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||(C[e]=g[e]);return C}(g,I);if(Object.getOwnPropertySymbols){var Q=Object.getOwnPropertySymbols(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||Object.prototype.propertyIsEnumerable.call(g,e)&&(C[e]=g[e])}return C}function RI(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}function SI(g){return(SI=Object.setPrototypeOf?Object.getPrototypeOf:function(g){return g.__proto__||Object.getPrototypeOf(g)})(g)}function GI(g){if(void 0===g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return g}function LI(g,I){return(LI=Object.setPrototypeOf||function(g,I){return g.__proto__=I,g})(g,I)}function VI(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}var hI=function(g){function I(g){var e;!function(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}(this,I),e=function(g,I){return!I||"object"!==yI(I)&&"function"!==typeof I?GI(g):I}(this,SI(I).call(this,g)),VI(GI(e),"inputRef",bg.a.createRef()),VI(GI(e),"isCountrySupportedWithError",(function(g){return nI(g,e.props.metadata)})),VI(GI(e),"onCountryChange",(function(g){var I=e.props,t=I.international,C=I.metadata,Q=I.onChange,F=e.state,B=lI(F.parsedInput,F.country,g,C,!t),n=aI(B,g,C);e.getInputRef().current.focus(),e.setState({country:g,hasUserSelectedACountry:!0,parsedInput:B,value:n},(function(){Q(n)}))})),VI(GI(e),"onChange",(function(g){var I=e.props,t=I.defaultCountry,C=I.onChange,Q=I.addInternationalOption,F=I.international,B=I.limitMaxLength,n=I.metadata,U=function(g,I,e,t,C,Q,F,B,n){var U;return g&&e&&B&&(g=rI(g,e,n)),!g||"+"===g[0]||e&&!F||(g="+"+g),!g&&I&&"+"===I[0]&&(e=F?void 0:t),"+"===g&&I&&"+"===I[0]&&I.length>"+".length&&(e=void 0),g&&("+"===g[0]?"+"!==g&&(U=g):U=aI(g,e,n)),U&&(e=oI(U,e,C,Q,n)),{input:g,country:e,value:U}}(g,e.state.parsedInput,e.state.country,t,e.state.countries,Q,F,B,n),s=U.input,i=U.country,c=U.value;e.setState({parsedInput:s,value:c,country:i},(function(){return C(c)}))})),VI(GI(e),"_onFocus",(function(){return e.setState({isFocused:!0})})),VI(GI(e),"_onBlur",(function(){return e.setState({isFocused:!1})})),VI(GI(e),"onFocus",(function(g){e._onFocus();var I=e.props.onFocus;I&&I(g)})),VI(GI(e),"onBlur",(function(g){var I=e.props.onBlur;e._onBlur(),I&&I(g)})),VI(GI(e),"onCountryFocus",(function(g){e._onFocus();var I=e.props.countrySelectProps;if(I){var t=I.onFocus;t&&t(g)}})),VI(GI(e),"onCountryBlur",(function(g){e._onBlur();var I=e.props.countrySelectProps;if(I){var t=I.onBlur;t&&t(g)}}));var t=e.props,C=t.value,Q=(t.labels,t.addInternationalOption),F=t.metadata,B=(t.countryOptionsOrder,e.props),n=B.defaultCountry,U=B.countries;n&&(e.isCountrySupportedWithError(n)||(n=void 0)),U=UI(U,F);var s=AI(C,F);return e.CountryIcon=sI(e.props),e.state={props:e.props,country:iI(s,n,U||ug(F),Q),countries:U,parsedInput:WI(C,s,e.props),value:C},e}var e,t,C;return function(g,I){if("function"!==typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function");g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,writable:!0,configurable:!0}}),I&&LI(g,I)}(I,g),e=I,C=[{key:"getDerivedStateFromProps",value:function(g,I){I.country;var e=I.hasUserSelectedACountry,t=I.value,C=I.props,Q=C.defaultCountry,F=C.value,B=C.reset,n=g.metadata,U=(g.countries,g.defaultCountry),s=g.value,i=g.reset,c=g.international,A={props:g,hasUserSelectedACountry:e};if(i!==B)return ZI({},A,{parsedInput:void 0,value:void 0,country:U,hasUserSelectedACountry:void 0});if(U!==Q&&!e&&(!t&&!s||c&&t===uI(void 0,Q,c,n)&&t===uI(void 0,U,c,n)))return ZI({},A,{country:nI(U,n)?U:Q,parsedInput:WI(s,void 0,g)});if(s!==F&&s!==t){var l,a=AI(s,n);if(a){var r=UI(g.countries,n);(!r||r.indexOf(a.country)>=0)&&(l=a.country)}return s||(A.hasUserSelectedACountry=void 0),ZI({},A,{parsedInput:WI(s,a,g),value:s,country:s?l:U})}return A}}],(t=[{key:"componentDidMount",value:function(){var g=this.props.onCountryChange,I=this.props.defaultCountry,e=this.state.country;g&&(I&&(this.isCountrySupportedWithError(I)||(I=void 0)),e!==I&&g(e))}},{key:"componentDidUpdate",value:function(g,I){var e=this.props.onCountryChange,t=this.state.country;e&&t!==I.country&&e(t)}},{key:"getInputRef",value:function(){return this.props.inputRef||this.inputRef}},{key:"render",value:function(){var g,I,e=this.props,t=e.name,C=e.disabled,Q=e.autoComplete,F=e.style,B=e.className,n=(e.inputRef,e.inputComponent),U=e.numberInputProps,s=e.smartCaret,i=e.countrySelectComponent,c=e.countrySelectProps,A=(e.defaultCountry,e.countries),l=e.countryOptionsOrder,a=e.labels,r=(e.flags,e.flagComponent,e.flagUrl,e.addInternationalOption),o=(e.internationalIcon,e.displayInitialValueAsLocalNumber,e.onCountryChange,e.limitMaxLength,e.reset,e.metadata),d=(e.international,xI(e,["name","disabled","autoComplete","style","className","inputRef","inputComponent","numberInputProps","smartCaret","countrySelectComponent","countrySelectProps","defaultCountry","countries","countryOptionsOrder","labels","flags","flagComponent","flagUrl","addInternationalOption","internationalIcon","displayInitialValueAsLocalNumber","onCountryChange","limitMaxLength","reset","metadata","international"])),u=this.state,y=u.country,b=u.parsedInput,Z=u.isFocused,m=s?jg:qg,x=(g=function(){return function(g,I){if(!I)return g;var e=[],t=[],C=e,Q=function(){if(B){if(n>=F.length)return"break";U=F[n++]}else{if((n=F.next()).done)return"break";U=n.value}var I=U;if("|"===I)C.push({divider:!0});else if("..."===I||"\u2026"===I)C=t;else{var e=g.indexOf(g.filter((function(g){return g.value===I}))[0]),Q=g[e];g.splice(e,1),C.push(Q)}},F=I,B=Array.isArray(F),n=0;for(F=B?F:F[Symbol.iterator]();;){var U;if("break"===Q())break}return e.concat(g).concat(t)}(cI(A||ug(o),a,r),function(g,I){if(g&&(g=g.filter((function(g){switch(g){case"|":case"...":case"\u2026":return!0;default:return nI(g,I)}}))).length>0)return g}(l,o))},I=[A,l,r,a,o],EI&&function(g,I){if(g.length!==I.length)return!1;for(var e=0;e<g.length;){if(g[e]!==I[e])return!1;e++}return!0}(I,EI)||(pI=g(),EI=I),pI);return bg.a.createElement("div",{style:F,className:Lg()(B,"PhoneInput",{"PhoneInput--focus":Z})},bg.a.createElement(i,mI({name:t?"".concat(t,"Country"):void 0,"aria-label":a.country},c,{value:y,options:x,onChange:this.onCountryChange,onFocus:this.onCountryFocus,onBlur:this.onCountryBlur,disabled:C||c&&c.disabled,iconComponent:this.CountryIcon})),bg.a.createElement(m,mI({ref:this.getInputRef(),type:"tel",autoComplete:Q},U,d,{name:t,metadata:o,country:y,value:b||"",onChange:this.onChange,onFocus:this.onFocus,onBlur:this.onBlur,disabled:C,inputComponent:n,className:Lg()("PhoneInputInput",U&&U.className,d.className)})))}}])&&RI(e.prototype,t),C&&RI(e,C),I}(bg.a.PureComponent),DI=bg.a.forwardRef((function(g,I){return bg.a.createElement(hI,mI({},g,{inputRef:I}))}));DI.propTypes={value:mg.a.string,onChange:mg.a.func.isRequired,onFocus:mg.a.func,onBlur:mg.a.func,onKeyDown:mg.a.func,disabled:mg.a.bool,autoComplete:mg.a.string.isRequired,displayInitialValueAsLocalNumber:mg.a.bool.isRequired,defaultCountry:mg.a.string,countries:mg.a.arrayOf(mg.a.string),labels:Sg.isRequired,flagUrl:mg.a.string.isRequired,flags:mg.a.objectOf(mg.a.elementType),flagComponent:mg.a.elementType.isRequired,addInternationalOption:mg.a.bool.isRequired,internationalIcon:mg.a.elementType.isRequired,countryOptionsOrder:mg.a.arrayOf(mg.a.string),style:mg.a.object,className:mg.a.string,countrySelectComponent:mg.a.elementType.isRequired,countrySelectProps:mg.a.object,inputComponent:mg.a.elementType.isRequired,numberInputProps:mg.a.object,smartCaret:mg.a.bool.isRequired,international:mg.a.bool,limitMaxLength:mg.a.bool.isRequired,metadata:Rg.isRequired,onCountryChange:mg.a.func},DI.defaultProps={autoComplete:"tel",flagComponent:eI,flagUrl:"https://catamphetamine.github.io/country-flag-icons/3x2/{XX}.svg",internationalIcon:QI,inputComponent:"input",reset:mg.a.any,displayInitialValueAsLocalNumber:!1,smartCaret:!0,addInternationalOption:!0,limitMaxLength:!1};var pI,EI,NI=DI;function WI(g,I,e){var t=e.international,C=e.defaultCountry,Q=e.metadata;return e.displayInitialValueAsLocalNumber&&I&&I.country?function(g){return g.formatNational().replace(/\D/g,"")}(I):uI(g,C,t,Q)}function fI(g){return String.fromCodePoint(127397+g.toUpperCase().charCodeAt(0))}function XI(){return(XI=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}function JI(g,I){if(null==g)return{};var e,t,C=function(g,I){if(null==g)return{};var e,t,C={},Q=Object.keys(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||(C[e]=g[e]);return C}(g,I);if(Object.getOwnPropertySymbols){var Q=Object.getOwnPropertySymbols(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||Object.prototype.propertyIsEnumerable.call(g,e)&&(C[e]=g[e])}return C}function vI(g){var I=g.value,e=g.onChange,t=g.options,C=JI(g,["value","onChange","options"]),Q=Object(yg.useCallback)((function(g){var I=g.target.value;e("ZZ"===I?void 0:I)}),[e]);Object(yg.useMemo)((function(){return MI(t,I)}),[t,I]);return bg.a.createElement("select",XI({},C,{value:I||"ZZ",onChange:Q}),t.map((function(g){var I=g.value,e=g.label,t=g.divider;return bg.a.createElement("option",{key:t?"|":I||"ZZ",value:t?"|":I||"ZZ",disabled:!!t,style:t?kI:void 0},e)})))}vI.propTypes={value:mg.a.string,onChange:mg.a.func.isRequired,options:mg.a.arrayOf(mg.a.shape({value:mg.a.string,label:mg.a.string,divider:mg.a.bool})).isRequired};var kI={fontSize:"1px",backgroundColor:"currentColor",color:"inherit"};function HI(g){var I,e=g.value,t=g.options,C=g.className,Q=g.iconComponent,F=(g.getIconAspectRatio,g.arrowComponent),B=g.unicodeFlags,n=JI(g,["value","options","className","iconComponent","getIconAspectRatio","arrowComponent","unicodeFlags"]),U=Object(yg.useMemo)((function(){return MI(t,e)}),[t,e]);return bg.a.createElement("div",{className:"PhoneInputCountry"},bg.a.createElement(vI,XI({},n,{value:e,options:t,className:Lg()("PhoneInputCountrySelect",C)})),B&&e&&bg.a.createElement("div",{className:"PhoneInputCountryIconUnicode"},fI((I=e)[0])+fI(I[1])),!(B&&e)&&bg.a.createElement(Q,{country:e,label:U&&U.label,aspectRatio:B?1:void 0}),bg.a.createElement(F,null))}function MI(g,I){var e=g,t=Array.isArray(e),C=0;for(e=t?e:e[Symbol.iterator]();;){var Q;if(t){if(C>=e.length)break;Q=e[C++]}else{if((C=e.next()).done)break;Q=C.value}var F=Q;if(!F.divider&&F.value===I)return F}}function YI(){return(YI=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}function wI(g){var I=bg.a.forwardRef((function(g,I){return bg.a.createElement(NI,YI({ref:I},g))}));return I.propTypes={metadata:Rg.isRequired,labels:Sg.isRequired,countrySelectComponent:mg.a.elementType.isRequired},I.defaultProps={metadata:g,labels:xg,countrySelectComponent:HI},I}HI.propTypes={iconComponent:mg.a.elementType,arrowComponent:mg.a.elementType.isRequired,unicodeFlags:mg.a.bool},HI.defaultProps={arrowComponent:function(){return bg.a.createElement("div",{className:"PhoneInputCountrySelectArrow"})}};wI();function TI(g,I){var e=Array.prototype.slice.call(I);return e.push(t),g.apply(this,e)}wI(t);function zI(){return TI(dg,arguments)}},function(g,I,e){"use strict";e.r(I);I.default=function(g,I){if(!g)throw new Error("Invariant failed")}},function(g,I,e){"use strict";(function(g){e.d(I,"c",(function(){return U})),e.d(I,"f",(function(){return s})),e.d(I,"e",(function(){return A})),e.d(I,"d",(function(){return r})),e.d(I,"b",(function(){return o})),e.d(I,"a",(function(){return d}));var t=e(11),C=e(582),Q=e(75),F=e(866),B=e(457),n=e(267);function U(g,I,e){if(I in g){var t=g[I],C=e(t);if("function"===typeof C)try{C.prototype=C.prototype||{},Object.defineProperties(C,{__sentry_original__:{enumerable:!1,value:t}})}catch(Q){}g[I]=C}}function s(g){return Object.keys(g).map((function(I){return encodeURIComponent(I)+"="+encodeURIComponent(g[I])})).join("&")}function i(g){if(Object(Q.d)(g)){var I=g,e={message:I.message,name:I.name,stack:I.stack};for(var t in I)Object.prototype.hasOwnProperty.call(I,t)&&(e[t]=I[t]);return e}if(Object(Q.f)(g)){var F=g,B={};B.type=F.type;try{B.target=Object(Q.c)(F.target)?Object(C.a)(F.target):Object.prototype.toString.call(F.target)}catch(n){B.target="<unknown>"}try{B.currentTarget=Object(Q.c)(F.currentTarget)?Object(C.a)(F.currentTarget):Object.prototype.toString.call(F.currentTarget)}catch(n){B.currentTarget="<unknown>"}for(var t in"undefined"!==typeof CustomEvent&&Object(Q.g)(g,CustomEvent)&&(B.detail=F.detail),F)Object.prototype.hasOwnProperty.call(F,t)&&(B[t]=F);return B}return g}function c(g){return function(g){return~-encodeURI(g).split(/%..|./).length}(JSON.stringify(g))}function A(g,I,e){void 0===I&&(I=3),void 0===e&&(e=102400);var t=r(g,I);return c(t)>e?A(g,I-1,e):t}function l(I,e){return"domain"===e&&I&&"object"===typeof I&&I._events?"[Domain]":"domainEmitter"===e?"[DomainEmitter]":"undefined"!==typeof g&&I===g?"[Global]":"undefined"!==typeof window&&I===window?"[Window]":"undefined"!==typeof document&&I===document?"[Document]":Object(Q.l)(I)?"[SyntheticEvent]":"number"===typeof I&&I!==I?"[NaN]":void 0===I?"[undefined]":"function"===typeof I?"[Function: "+Object(B.a)(I)+"]":"symbol"===typeof I?"["+String(I)+"]":"bigint"===typeof I?"[BigInt: "+String(I)+"]":I}function a(g,I,e,t){if(void 0===e&&(e=1/0),void 0===t&&(t=new F.a),0===e)return function(g){var I=Object.prototype.toString.call(g);if("string"===typeof g)return g;if("[object Object]"===I)return"[Object]";if("[object Array]"===I)return"[Array]";var e=l(g);return Object(Q.i)(e)?e:I}(I);if(null!==I&&void 0!==I&&"function"===typeof I.toJSON)return I.toJSON();var C=l(I,g);if(Object(Q.i)(C))return C;var B=i(I),n=Array.isArray(I)?[]:{};if(t.memoize(I))return"[Circular ~]";for(var U in B)Object.prototype.hasOwnProperty.call(B,U)&&(n[U]=a(U,B[U],e-1,t));return t.unmemoize(I),n}function r(g,I){try{return JSON.parse(JSON.stringify(g,(function(g,e){return a(g,e,I)})))}catch(e){return"**non-serializable**"}}function o(g,I){void 0===I&&(I=40);var e=Object.keys(i(g));if(e.sort(),!e.length)return"[object has no keys]";if(e[0].length>=I)return Object(n.d)(e[0],I);for(var t=e.length;t>0;t--){var C=e.slice(0,t).join(", ");if(!(C.length>I))return t===e.length?C:Object(n.d)(C,I)}return""}function d(g){var I,e;if(Object(Q.h)(g)){var C=g,F={};try{for(var B=Object(t.g)(Object.keys(C)),n=B.next();!n.done;n=B.next()){var U=n.value;"undefined"!==typeof C[U]&&(F[U]=d(C[U]))}}catch(s){I={error:s}}finally{try{n&&!n.done&&(e=B.return)&&e.call(B)}finally{if(I)throw I.error}}return F}return Array.isArray(g)?g.map(d):g}}).call(this,e(67))},,function(g,I,e){var t=e(324),C=e(134);g.exports=function(g){return t(C(g))}},function(g,I,e){var t,C,Q,F=e(616),B=e(50),n=e(57),U=e(135),s=e(90),i=e(383),c=e(326),A=B.WeakMap;if(F){var l=new A,a=l.get,r=l.has,o=l.set;t=function(g,I){return o.call(l,g,I),I},C=function(g){return a.call(l,g)||{}},Q=function(g){return r.call(l,g)}}else{var d=i("state");c[d]=!0,t=function(g,I){return U(g,d,I),I},C=function(g){return s(g,d)?g[d]:{}},Q=function(g){return s(g,d)}}g.exports={set:t,get:C,has:Q,enforce:function(g){return Q(g)?C(g):t(g,{})},getterFor:function(g){return function(I){var e;if(!n(I)||(e=C(I)).type!==g)throw TypeError("Incompatible receiver, "+g+" required");return e}}}},function(g,I,e){var t=e(618),C=e(90),Q=e(624),F=e(76).f;g.exports=function(g){var I=t.Symbol||(t.Symbol={});C(I,g)||F(I,g,{value:Q.f(g)})}},function(g,I,e){var t=e(134),C=/"/g;g.exports=function(g,I,e,Q){var F=String(t(g)),B="<"+I;return""!==e&&(B+=" "+e+'="'+String(Q).replace(C,"&quot;")+'"'),B+">"+F+"</"+I+">"}},function(g,I,e){var t=e(41);g.exports=function(g){return t((function(){var I=""[g]('"');return I!==I.toLowerCase()||I.split('"').length>3}))}},function(g,I,e){"use strict";var t=e(658),C=Object.prototype.toString;function Q(g){return"[object Array]"===C.call(g)}function F(g){return"undefined"===typeof g}function B(g){return null!==g&&"object"===typeof g}function n(g){return"[object Function]"===C.call(g)}function U(g,I){if(null!==g&&"undefined"!==typeof g)if("object"!==typeof g&&(g=[g]),Q(g))for(var e=0,t=g.length;e<t;e++)I.call(null,g[e],e,g);else for(var C in g)Object.prototype.hasOwnProperty.call(g,C)&&I.call(null,g[C],C,g)}g.exports={isArray:Q,isArrayBuffer:function(g){return"[object ArrayBuffer]"===C.call(g)},isBuffer:function(g){return null!==g&&!F(g)&&null!==g.constructor&&!F(g.constructor)&&"function"===typeof g.constructor.isBuffer&&g.constructor.isBuffer(g)},isFormData:function(g){return"undefined"!==typeof FormData&&g instanceof FormData},isArrayBufferView:function(g){return"undefined"!==typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(g):g&&g.buffer&&g.buffer instanceof ArrayBuffer},isString:function(g){return"string"===typeof g},isNumber:function(g){return"number"===typeof g},isObject:B,isUndefined:F,isDate:function(g){return"[object Date]"===C.call(g)},isFile:function(g){return"[object File]"===C.call(g)},isBlob:function(g){return"[object Blob]"===C.call(g)},isFunction:n,isStream:function(g){return B(g)&&n(g.pipe)},isURLSearchParams:function(g){return"undefined"!==typeof URLSearchParams&&g instanceof URLSearchParams},isStandardBrowserEnv:function(){return("undefined"===typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!==typeof window&&"undefined"!==typeof document)},forEach:U,merge:function g(){var I={};function e(e,t){"object"===typeof I[t]&&"object"===typeof e?I[t]=g(I[t],e):I[t]=e}for(var t=0,C=arguments.length;t<C;t++)U(arguments[t],e);return I},deepMerge:function g(){var I={};function e(e,t){"object"===typeof I[t]&&"object"===typeof e?I[t]=g(I[t],e):I[t]="object"===typeof e?g({},e):e}for(var t=0,C=arguments.length;t<C;t++)U(arguments[t],e);return I},extend:function(g,I,e){return U(I,(function(I,C){g[C]=e&&"function"===typeof I?t(I,e):I})),g},trim:function(g){return g.replace(/^\s*/,"").replace(/\s*$/,"")}}},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement(C.default.Fragment,null,C.default.createElement("path",{fill:"none",d:"M24 24H0V0h24v24z"}),C.default.createElement("circle",{cx:"12",cy:"12",r:"8"})),"FiberManualRecord");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"}),"NavigateNext");I.default=Q},function(g,I,e){"use strict";e.d(I,"a",(function(){return Q}));var t=e(0),C=e(205);function Q(){return t.useContext(C.a)}},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V5h14v14zM17.99 9l-1.41-1.42-6.59 6.59-2.58-2.57-1.42 1.41 4 3.99z"}),"CheckBoxOutlined");I.default=Q},function(g,I,e){"use strict";e.d(I,"a",(function(){return C}));var t=e(299);function C(g){if("undefined"===typeof Symbol||null==g[Symbol.iterator]){if(Array.isArray(g)||(g=Object(t.a)(g))){var I=0,e=function(){};return{s:e,n:function(){return I>=g.length?{done:!0}:{done:!1,value:g[I++]}},e:function(g){throw g},f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var C,Q,F=!0,B=!1;return{s:function(){C=g[Symbol.iterator]()},n:function(){var g=C.next();return F=g.done,g},e:function(g){B=!0,Q=g},f:function(){try{F||null==C.return||C.return()}finally{if(B)throw Q}}}}},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0}),I.Helpers=I.ScrollElement=I.ScrollLink=I.animateScroll=I.scrollSpy=I.Events=I.scroller=I.Element=I.Button=I.Link=void 0;var t=A(e(1267)),C=A(e(1271)),Q=A(e(1272)),F=A(e(404)),B=A(e(519)),n=A(e(517)),U=A(e(690)),s=A(e(516)),i=A(e(692)),c=A(e(1273));function A(g){return g&&g.__esModule?g:{default:g}}I.Link=t.default,I.Button=C.default,I.Element=Q.default,I.scroller=F.default,I.Events=B.default,I.scrollSpy=n.default,I.animateScroll=U.default,I.ScrollLink=s.default,I.ScrollElement=i.default,I.Helpers=c.default,I.default={Link:t.default,Button:C.default,Element:Q.default,scroller:F.default,Events:B.default,scrollSpy:n.default,animateScroll:U.default,ScrollLink:s.default,ScrollElement:i.default,Helpers:c.default}},function(g,I,e){"use strict";e.d(I,"a",(function(){return Vg})),e.d(I,"b",(function(){return Y})),e.d(I,"c",(function(){return j})),e.d(I,"d",(function(){return $}));var t=e(26),C=e(155),Q=e(246),F=e(9),B=e(8),n=e(6),U=e(7),s=e(13),i=e(5),c=e(133),A=e(0),l=e.n(A),a={arr:Array.isArray,obj:function(g){return"[object Object]"===Object.prototype.toString.call(g)},fun:function(g){return"function"===typeof g},str:function(g){return"string"===typeof g},num:function(g){return"number"===typeof g},und:function(g){return void 0===g},nul:function(g){return null===g},set:function(g){return g instanceof Set},map:function(g){return g instanceof Map},equ:function(g,I){if(typeof g!==typeof I)return!1;if(a.str(g)||a.num(g))return g===I;if(a.obj(g)&&a.obj(I)&&Object.keys(g).length+Object.keys(I).length===0)return!0;var e;for(e in g)if(!(e in I))return!1;for(e in I)if(g[e]!==I[e])return!1;return!a.und(e)||g===I}};function r(){var g=Object(A.useState)(!1)[1];return Object(A.useCallback)((function(){return g((function(g){return!g}))}),[])}function o(g,I){return a.und(g)||a.nul(g)?I:g}function d(g){return a.und(g)?[]:a.arr(g)?g:[g]}function u(g){for(var I=arguments.length,e=new Array(I>1?I-1:0),t=1;t<I;t++)e[t-1]=arguments[t];return a.fun(g)?g.apply(void 0,e):g}function y(g){var I=function(g){return g.to,g.from,g.config,g.onStart,g.onRest,g.onFrame,g.children,g.reset,g.reverse,g.force,g.immediate,g.delay,g.attach,g.destroyed,g.interpolateTo,g.ref,g.lazy,Object(c.a)(g,["to","from","config","onStart","onRest","onFrame","children","reset","reverse","force","immediate","delay","attach","destroyed","interpolateTo","ref","lazy"])}(g);if(a.und(I))return Object(i.a)({to:I},g);var e=Object.keys(g).reduce((function(e,t){return a.und(I[t])?Object(i.a)({},e,Object(s.a)({},t,g[t])):e}),{});return Object(i.a)({to:I},e)}var b,Z,m=function(){function g(){Object(n.a)(this,g),this.payload=void 0,this.children=[]}return Object(U.a)(g,[{key:"getAnimatedValue",value:function(){return this.getValue()}},{key:"getPayload",value:function(){return this.payload||this}},{key:"attach",value:function(){}},{key:"detach",value:function(){}},{key:"getChildren",value:function(){return this.children}},{key:"addChild",value:function(g){0===this.children.length&&this.attach(),this.children.push(g)}},{key:"removeChild",value:function(g){var I=this.children.indexOf(g);this.children.splice(I,1),0===this.children.length&&this.detach()}}]),g}(),x=function(g){Object(F.a)(e,g);var I=Object(B.a)(e);function e(){var g;return Object(n.a)(this,e),(g=I.apply(this,arguments)).payload=[],g.attach=function(){return g.payload.forEach((function(I){return I instanceof m&&I.addChild(Object(Q.a)(g))}))},g.detach=function(){return g.payload.forEach((function(I){return I instanceof m&&I.removeChild(Object(Q.a)(g))}))},g}return e}(m),R=function(g){Object(F.a)(e,g);var I=Object(B.a)(e);function e(){var g;return Object(n.a)(this,e),(g=I.apply(this,arguments)).payload={},g.attach=function(){return Object.values(g.payload).forEach((function(I){return I instanceof m&&I.addChild(Object(Q.a)(g))}))},g.detach=function(){return Object.values(g.payload).forEach((function(I){return I instanceof m&&I.removeChild(Object(Q.a)(g))}))},g}return Object(U.a)(e,[{key:"getValue",value:function(g){void 0===g&&(g=!1);var I={};for(var e in this.payload){var t=this.payload[e];(!g||t instanceof m)&&(I[e]=t instanceof m?t[g?"getAnimatedValue":"getValue"]():t)}return I}},{key:"getAnimatedValue",value:function(){return this.getValue(!0)}}]),e}(m);function S(g,I){b={fn:g,transform:I}}function G(g){Z=g}var L,V=function(g){return"undefined"!==typeof window?window.requestAnimationFrame(g):-1};function h(g){L=g}var D=function(){return Date.now()};function p(g){g}var E,N,W=function(g){return g.current};function f(g){E=g}var X=function(g){Object(F.a)(e,g);var I=Object(B.a)(e);function e(g,t){var C;return Object(n.a)(this,e),(C=I.call(this)).update=void 0,C.payload=g.style?Object(i.a)({},g,{style:E(g.style)}):g,C.update=t,C.attach(),C}return e}(R),J=!1,v=new Set,k=function g(){if(!J)return!1;var I,e=D(),t=Object(C.a)(v);try{for(t.s();!(I=t.n()).done;){for(var Q=I.value,F=!1,B=0;B<Q.configs.length;B++){for(var n=Q.configs[B],U=void 0,s=void 0,i=0;i<n.animatedValues.length;i++){var c=n.animatedValues[i];if(!c.done){var A=n.fromValues[i],l=n.toValues[i],a=c.lastPosition,r=l instanceof m,o=Array.isArray(n.initialVelocity)?n.initialVelocity[i]:n.initialVelocity;if(r&&(l=l.getValue()),n.immediate)c.setValue(l),c.done=!0;else if("string"!==typeof A&&"string"!==typeof l){if(void 0!==n.duration)a=A+n.easing((e-c.startTime)/n.duration)*(l-A),U=e>=c.startTime+n.duration;else if(n.decay)a=A+o/(1-.998)*(1-Math.exp(-(1-.998)*(e-c.startTime))),(U=Math.abs(c.lastPosition-a)<.1)&&(l=a);else{s=void 0!==c.lastTime?c.lastTime:e,o=void 0!==c.lastVelocity?c.lastVelocity:n.initialVelocity,e>s+64&&(s=e);for(var d=Math.floor(e-s),u=0;u<d;++u){a+=1*(o+=1*((-n.tension*(a-l)+-n.friction*o)/n.mass)/1e3)/1e3}var y=!(!n.clamp||0===n.tension)&&(A<l?a>l:a<l),b=Math.abs(o)<=n.precision,Z=0===n.tension||Math.abs(l-a)<=n.precision;U=y||b&&Z,c.lastVelocity=o,c.lastTime=e}r&&!n.toValues[i].done&&(U=!1),U?(c.value!==l&&(a=l),c.done=!0):F=!0,c.setValue(a),c.lastPosition=a}else c.setValue(l),c.done=!0}}Q.props.onFrame&&(Q.values[n.name]=n.interpolation.getValue())}Q.props.onFrame&&Q.props.onFrame(Q.values),F||(v.delete(Q),Q.stop(!0))}}catch(x){t.e(x)}finally{t.f()}return v.size?N?N():V(g):J=!1,J};function H(g,I,e){if("function"===typeof g)return g;if(Array.isArray(g))return H({range:g,output:I,extrapolate:e});if(L&&"string"===typeof g.output[0])return L(g);var t=g,C=t.output,Q=t.range||[0,1],F=t.extrapolateLeft||t.extrapolate||"extend",B=t.extrapolateRight||t.extrapolate||"extend",n=t.easing||function(g){return g};return function(g){var I=function(g,I){for(var e=1;e<I.length-1&&!(I[e]>=g);++e);return e-1}(g,Q);return function(g,I,e,t,C,Q,F,B,n){var U=n?n(g):g;if(U<I){if("identity"===F)return U;"clamp"===F&&(U=I)}if(U>e){if("identity"===B)return U;"clamp"===B&&(U=e)}if(t===C)return t;if(I===e)return g<=I?t:C;I===-1/0?U=-U:e===1/0?U-=I:U=(U-I)/(e-I);U=Q(U),t===-1/0?U=-U:C===1/0?U+=t:U=U*(C-t)+t;return U}(g,Q[I],Q[I+1],C[I],C[I+1],n,F,B,t.map)}}var M=function(g){Object(F.a)(e,g);var I=Object(B.a)(e);function e(g,t,C,Q){var F;return Object(n.a)(this,e),(F=I.call(this)).calc=void 0,F.payload=g instanceof x&&!(g instanceof e)?g.getPayload():Array.isArray(g)?g:[g],F.calc=H(t,C,Q),F}return Object(U.a)(e,[{key:"getValue",value:function(){return this.calc.apply(this,Object(t.a)(this.payload.map((function(g){return g.getValue()}))))}},{key:"updateConfig",value:function(g,I,e){this.calc=H(g,I,e)}},{key:"interpolate",value:function(g,I,t){return new e(this,g,I,t)}}]),e}(x),Y=function(g,I,e){return g&&new M(g,I,e)};var w=function(g){Object(F.a)(e,g);var I=Object(B.a)(e);function e(g){var t,C;return Object(n.a)(this,e),t=I.call(this),C=Object(Q.a)(t),t.animatedStyles=new Set,t.value=void 0,t.startPosition=void 0,t.lastPosition=void 0,t.lastVelocity=void 0,t.startTime=void 0,t.lastTime=void 0,t.done=!1,t.setValue=function(g,I){void 0===I&&(I=!0),C.value=g,I&&C.flush()},t.value=g,t.startPosition=g,t.lastPosition=g,t}return Object(U.a)(e,[{key:"flush",value:function(){0===this.animatedStyles.size&&function g(I,e){"update"in I?e.add(I):I.getChildren().forEach((function(I){return g(I,e)}))}(this,this.animatedStyles),this.animatedStyles.forEach((function(g){return g.update()}))}},{key:"clearStyles",value:function(){this.animatedStyles.clear()}},{key:"getValue",value:function(){return this.value}},{key:"interpolate",value:function(g,I,e){return new M(this,g,I,e)}}]),e}(m),T=function(g){Object(F.a)(e,g);var I=Object(B.a)(e);function e(g){var t;return Object(n.a)(this,e),(t=I.call(this)).payload=g.map((function(g){return new w(g)})),t}return Object(U.a)(e,[{key:"setValue",value:function(g,I){var e=this;void 0===I&&(I=!0),Array.isArray(g)?g.length===this.payload.length&&g.forEach((function(g,t){return e.payload[t].setValue(g,I)})):this.payload.forEach((function(e){return e.setValue(g,I)}))}},{key:"getValue",value:function(){return this.payload.map((function(g){return g.getValue()}))}},{key:"interpolate",value:function(g,I){return new M(this,g,I)}}]),e}(x),z=0,O=function(){function g(){var I=this;Object(n.a)(this,g),this.id=void 0,this.idle=!0,this.hasChanged=!1,this.guid=0,this.local=0,this.props={},this.merged={},this.animations={},this.interpolations={},this.values={},this.configs=[],this.listeners=[],this.queue=[],this.localQueue=void 0,this.getValues=function(){return I.interpolations},this.id=z++}return Object(U.a)(g,[{key:"update",value:function(g){if(!g)return this;var I=y(g),e=I.delay,t=void 0===e?0:e,C=I.to,Q=Object(c.a)(I,["delay","to"]);if(a.arr(C)||a.fun(C))this.queue.push(Object(i.a)({},Q,{delay:t,to:C}));else if(C){var F={};Object.entries(C).forEach((function(g){var I=g[0],e=g[1],C=Object(i.a)({to:Object(s.a)({},I,e),delay:u(t,I)},Q),B=F[C.delay]&&F[C.delay].to;F[C.delay]=Object(i.a)({},F[C.delay],C,{to:Object(i.a)({},B,C.to)})})),this.queue=Object.values(F)}return this.queue=this.queue.sort((function(g,I){return g.delay-I.delay})),this.diff(Q),this}},{key:"start",value:function(g){var I,e=this;if(this.queue.length){this.idle=!1,this.localQueue&&this.localQueue.forEach((function(g){var I=g.from,t=void 0===I?{}:I,C=g.to,Q=void 0===C?{}:C;a.obj(t)&&(e.merged=Object(i.a)({},t,e.merged)),a.obj(Q)&&(e.merged=Object(i.a)({},e.merged,Q))}));var t=this.local=++this.guid,C=this.localQueue=this.queue;this.queue=[],C.forEach((function(I,Q){var F=I.delay,B=Object(c.a)(I,["delay"]),n=function(I){Q===C.length-1&&t===e.guid&&I&&(e.idle=!0,e.props.onRest&&e.props.onRest(e.merged)),g&&g()},U=a.arr(B.to)||a.fun(B.to);F?setTimeout((function(){t===e.guid&&(U?e.runAsync(B,n):e.diff(B).start(n))}),F):U?e.runAsync(B,n):e.diff(B).start(n)}))}else a.fun(g)&&this.listeners.push(g),this.props.onStart&&this.props.onStart(),I=this,v.has(I)||v.add(I),J||(J=!0,V(N||k));return this}},{key:"stop",value:function(g){return this.listeners.forEach((function(I){return I(g)})),this.listeners=[],this}},{key:"pause",value:function(g){var I;return this.stop(!0),g&&(I=this,v.has(I)&&v.delete(I)),this}},{key:"runAsync",value:function(g,I){var e=this,t=this,C=(g.delay,Object(c.a)(g,["delay"])),Q=this.local,F=Promise.resolve(void 0);if(a.arr(C.to))for(var B=function(g){var I=g,t=Object(i.a)({},C,y(C.to[I]));a.arr(t.config)&&(t.config=t.config[I]),F=F.then((function(){if(Q===e.guid)return new Promise((function(g){return e.diff(t).start(g)}))}))},n=0;n<C.to.length;n++)B(n);else if(a.fun(C.to)){var U,s=0;F=F.then((function(){return C.to((function(g){var I=Object(i.a)({},C,y(g));if(a.arr(I.config)&&(I.config=I.config[s]),s++,Q===e.guid)return U=new Promise((function(g){return e.diff(I).start(g)}))}),(function(g){return void 0===g&&(g=!0),t.stop(g)})).then((function(){return U}))}))}F.then(I)}},{key:"diff",value:function(g){var I=this;this.props=Object(i.a)({},this.props,g);var e=this.props,t=e.from,C=void 0===t?{}:t,Q=e.to,F=void 0===Q?{}:Q,B=e.config,n=void 0===B?{}:B,U=e.reverse,c=e.attach,A=e.reset,l=e.immediate;if(U){var r=[F,C];C=r[0],F=r[1]}this.merged=Object(i.a)({},C,this.merged,F),this.hasChanged=!1;var y=c&&c(this);if(this.animations=Object.entries(this.merged).reduce((function(g,e){var t=e[0],Q=e[1],F=g[t]||{},B=a.num(Q),U=a.str(Q)&&!Q.startsWith("#")&&!/\d/.test(Q)&&!Z[Q],c=a.arr(Q),r=!B&&!c&&!U,b=a.und(C[t])?Q:C[t],m=B||c||U?Q:1,x=u(n,t);y&&(m=y.animations[t].parent);var R,S=F.parent,G=F.interpolation,V=d(y?m.getPayload():m),h=Q;r&&(h=L({range:[0,1],output:[Q,Q]})(1));var p=G&&G.getValue(),E=!a.und(S)&&F.animatedValues.some((function(g){return!g.done})),N=!a.equ(h,p),W=!a.equ(h,F.previous),f=!a.equ(x,F.config);if(A||W&&N||f){if(B||U)S=G=F.parent||new w(b);else if(c)S=G=F.parent||new T(b);else if(r){var X=F.interpolation&&F.interpolation.calc(F.parent.value);X=void 0===X||A?b:X,F.parent?(S=F.parent).setValue(0,!1):S=new w(0);var J={output:[X,Q]};F.interpolation?(G=F.interpolation,F.interpolation.updateConfig(J)):G=S.interpolate(J)}return V=d(y?m.getPayload():m),R=d(S.getPayload()),A&&!r&&S.setValue(b,!1),I.hasChanged=!0,R.forEach((function(g){g.startPosition=g.value,g.lastPosition=g.value,g.lastVelocity=E?g.lastVelocity:void 0,g.lastTime=E?g.lastTime:void 0,g.startTime=D(),g.done=!1,g.animatedStyles.clear()})),u(l,t)&&S.setValue(r?m:Q,!1),Object(i.a)({},g,Object(s.a)({},t,Object(i.a)({},F,{name:t,parent:S,interpolation:G,animatedValues:R,toValues:V,previous:h,config:x,fromValues:d(S.getValue()),immediate:u(l,t),initialVelocity:o(x.velocity,0),clamp:o(x.clamp,!1),precision:o(x.precision,.01),tension:o(x.tension,170),friction:o(x.friction,26),mass:o(x.mass,1),duration:x.duration,easing:o(x.easing,(function(g){return g})),decay:x.decay})))}return N?g:(r&&(S.setValue(1,!1),G.updateConfig({output:[h,h]})),S.done=!0,I.hasChanged=!0,Object(i.a)({},g,Object(s.a)({},t,Object(i.a)({},g[t],{previous:h}))))}),this.animations),this.hasChanged)for(var b in this.configs=Object.values(this.animations),this.values={},this.interpolations={},this.animations)this.interpolations[b]=this.animations[b].interpolation,this.values[b]=this.animations[b].interpolation.getValue();return this}},{key:"destroy",value:function(){this.stop(),this.props={},this.merged={},this.animations={},this.interpolations={},this.values={},this.configs=[],this.local=0}}]),g}(),K=function(g,I){var e=Object(A.useRef)(!1),t=Object(A.useRef)(),C=a.fun(I),Q=Object(A.useMemo)((function(){var e;return t.current&&(t.current.map((function(g){return g.destroy()})),t.current=void 0),[new Array(g).fill().map((function(g,t){var Q=new O,F=C?u(I,t,Q):I[t];return 0===t&&(e=F.ref),Q.update(F),e||Q.start(),Q})),e]}),[g]),F=Q[0],B=Q[1];t.current=F;Object(A.useImperativeHandle)(B,(function(){return{start:function(){return Promise.all(t.current.map((function(g){return new Promise((function(I){return g.start(I)}))})))},stop:function(g){return t.current.forEach((function(I){return I.stop(g)}))},get controllers(){return t.current}}}));var n=Object(A.useMemo)((function(){return function(g){return t.current.map((function(I,e){I.update(C?u(g,e,I):g[e]),B||I.start()}))}}),[g]);Object(A.useEffect)((function(){e.current?C||n(I):B||t.current.forEach((function(g){return g.start()}))})),Object(A.useEffect)((function(){return e.current=!0,function(){return t.current.forEach((function(g){return g.destroy()}))}}),[]);var U=t.current.map((function(g){return g.getValues()}));return C?[U,n,function(g){return t.current.forEach((function(I){return I.pause(g)}))}]:U},j=function(g){var I=a.fun(g),e=K(1,I?g:[g]),t=e[0],C=e[1],Q=e[2];return I?[t[0],C,Q]:t},P=0,_=function(g,I){return("function"===typeof I?g.map(I):d(I)).map(String)},q=function(g){var I=g.items,e=g.keys,t=void 0===e?function(g){return g}:e,C=Object(c.a)(g,["items","keys"]);return I=d(void 0!==I?I:null),Object(i.a)({items:I,keys:_(I,t)},C)};function $(g,I,e){var C=Object(i.a)({items:g,keys:I||function(g){return g}},e),Q=q(C),F=Q.lazy,B=void 0!==F&&F,n=(Q.unique,Q.reset),U=void 0!==n&&n,s=(Q.enter,Q.leave,Q.update,Q.onDestroyed),l=(Q.keys,Q.items,Q.onFrame),a=Q.onRest,o=Q.onStart,d=Q.ref,y=Object(c.a)(Q,["lazy","unique","reset","enter","leave","update","onDestroyed","keys","items","onFrame","onRest","onStart","ref"]),b=r(),Z=Object(A.useRef)(!1),m=Object(A.useRef)({mounted:!1,first:!0,deleted:[],current:{},transitions:[],prevProps:{},paused:!!C.ref,instances:!Z.current&&new Map,forceUpdate:b});return Object(A.useImperativeHandle)(C.ref,(function(){return{start:function(){return Promise.all(Array.from(m.current.instances).map((function(g){var I=g[1];return new Promise((function(g){return I.start(g)}))})))},stop:function(g){return Array.from(m.current.instances).forEach((function(I){return I[1].stop(g)}))},get controllers(){return Array.from(m.current.instances).map((function(g){return g[1]}))}}})),m.current=function(g,I){var e=g.first,C=g.prevProps,Q=Object(c.a)(g,["first","prevProps"]),F=q(I),B=F.items,n=F.keys,U=F.initial,s=F.from,A=F.enter,l=F.leave,a=F.update,r=F.trail,o=void 0===r?0:r,d=F.unique,y=F.config,b=F.order,Z=void 0===b?["enter","leave","update"]:b,m=q(C),x=m.keys,R=m.items,S=Object(i.a)({},Q.current),G=Object(t.a)(Q.deleted),L=Object.keys(S),V=new Set(L),h=new Set(n),D=n.filter((function(g){return!V.has(g)})),p=Q.transitions.filter((function(g){return!g.destroyed&&!h.has(g.originalKey)})).map((function(g){return g.originalKey})),E=n.filter((function(g){return V.has(g)})),N=-o;for(;Z.length;){switch(Z.shift()){case"enter":D.forEach((function(g,I){d&&G.find((function(I){return I.originalKey===g}))&&(G=G.filter((function(I){return I.originalKey!==g})));var t=n.indexOf(g),C=B[t],Q=e&&void 0!==U?"initial":"enter";S[g]={slot:Q,originalKey:g,key:d?String(g):P++,item:C,trail:N+=o,config:u(y,C,Q),from:u(e&&void 0!==U?U||{}:s,C),to:u(A,C)}}));break;case"leave":p.forEach((function(g){var I=x.indexOf(g),e=R[I];G.unshift(Object(i.a)({},S[g],{slot:"leave",destroyed:!0,left:x[Math.max(0,I-1)],right:x[Math.min(x.length,I+1)],trail:N+=o,config:u(y,e,"leave"),to:u(l,e)})),delete S[g]}));break;case"update":E.forEach((function(g){var I=n.indexOf(g),e=B[I];S[g]=Object(i.a)({},S[g],{item:e,slot:"update",trail:N+=o,config:u(y,e,"update"),to:u(a,e)})}))}}var W=n.map((function(g){return S[g]}));return G.forEach((function(g){var I,e=g.left,C=(g.right,Object(c.a)(g,["left","right"]));-1!==(I=W.findIndex((function(g){return g.originalKey===e})))&&(I+=1),I=Math.max(0,I),W=[].concat(Object(t.a)(W.slice(0,I)),[C],Object(t.a)(W.slice(I)))})),Object(i.a)({},Q,{changed:D.length||p.length||E.length,first:e&&0===D.length,transitions:W,current:S,deleted:G,prevProps:I})}(m.current,C),m.current.changed&&m.current.transitions.forEach((function(g){var I=g.slot,e=g.from,t=g.to,C=g.config,Q=g.trail,F=g.key,n=g.item;m.current.instances.has(F)||m.current.instances.set(F,new O);var c=m.current.instances.get(F),A=Object(i.a)({},y,{to:t,from:e,config:C,ref:d,onRest:function(e){m.current.mounted&&(g.destroyed&&(d||B||gg(m,F),s&&s(n)),!Array.from(m.current.instances).some((function(g){return!g[1].idle}))&&(d||B)&&m.current.deleted.length>0&&gg(m),a&&a(n,I,e))},onStart:o&&function(){return o(n,I)},onFrame:l&&function(g){return l(n,I,g)},delay:Q,reset:U&&"enter"===I});c.update(A),m.current.paused||c.start()})),Object(A.useEffect)((function(){return m.current.mounted=Z.current=!0,function(){m.current.mounted=Z.current=!1,Array.from(m.current.instances).map((function(g){return g[1].destroy()})),m.current.instances.clear()}}),[]),m.current.transitions.map((function(g){var I=g.item,e=g.slot,t=g.key;return{item:I,key:t,state:e,props:m.current.instances.get(t).getValues()}}))}function gg(g,I){var e,t=g.current.deleted,Q=Object(C.a)(t);try{var F=function(){var t=e.value.key,C=function(g){return g.key!==t};(a.und(I)||I===t)&&(g.current.instances.delete(t),g.current.transitions=g.current.transitions.filter(C),g.current.deleted=g.current.deleted.filter(C))};for(Q.s();!(e=Q.n()).done;)F()}catch(B){Q.e(B)}finally{Q.f()}g.current.forceUpdate()}var Ig=function(g){Object(F.a)(e,g);var I=Object(B.a)(e);function e(g){var t;return Object(n.a)(this,e),void 0===g&&(g={}),t=I.call(this),!g.transform||g.transform instanceof m||(g=b.transform(g)),t.payload=g,t}return e}(R),eg={transparent:0,aliceblue:4042850303,antiquewhite:4209760255,aqua:16777215,aquamarine:2147472639,azure:4043309055,beige:4126530815,bisque:4293182719,black:255,blanchedalmond:4293643775,blue:65535,blueviolet:2318131967,brown:2771004159,burlywood:3736635391,burntsienna:3934150143,cadetblue:1604231423,chartreuse:2147418367,chocolate:3530104575,coral:4286533887,cornflowerblue:1687547391,cornsilk:4294499583,crimson:3692313855,cyan:16777215,darkblue:35839,darkcyan:9145343,darkgoldenrod:3095792639,darkgray:2846468607,darkgreen:6553855,darkgrey:2846468607,darkkhaki:3182914559,darkmagenta:2332068863,darkolivegreen:1433087999,darkorange:4287365375,darkorchid:2570243327,darkred:2332033279,darksalmon:3918953215,darkseagreen:2411499519,darkslateblue:1211993087,darkslategray:793726975,darkslategrey:793726975,darkturquoise:13554175,darkviolet:2483082239,deeppink:4279538687,deepskyblue:12582911,dimgray:1768516095,dimgrey:1768516095,dodgerblue:512819199,firebrick:2988581631,floralwhite:4294635775,forestgreen:579543807,fuchsia:4278255615,gainsboro:3705462015,ghostwhite:4177068031,gold:4292280575,goldenrod:3668254975,gray:2155905279,green:8388863,greenyellow:2919182335,grey:2155905279,honeydew:4043305215,hotpink:4285117695,indianred:3445382399,indigo:1258324735,ivory:4294963455,khaki:4041641215,lavender:3873897215,lavenderblush:4293981695,lawngreen:2096890111,lemonchiffon:4294626815,lightblue:2916673279,lightcoral:4034953471,lightcyan:3774873599,lightgoldenrodyellow:4210742015,lightgray:3553874943,lightgreen:2431553791,lightgrey:3553874943,lightpink:4290167295,lightsalmon:4288707327,lightseagreen:548580095,lightskyblue:2278488831,lightslategray:2005441023,lightslategrey:2005441023,lightsteelblue:2965692159,lightyellow:4294959359,lime:16711935,limegreen:852308735,linen:4210091775,magenta:4278255615,maroon:2147483903,mediumaquamarine:1724754687,mediumblue:52735,mediumorchid:3126187007,mediumpurple:2473647103,mediumseagreen:1018393087,mediumslateblue:2070474495,mediumspringgreen:16423679,mediumturquoise:1221709055,mediumvioletred:3340076543,midnightblue:421097727,mintcream:4127193855,mistyrose:4293190143,moccasin:4293178879,navajowhite:4292783615,navy:33023,oldlace:4260751103,olive:2155872511,olivedrab:1804477439,orange:4289003775,orangered:4282712319,orchid:3664828159,palegoldenrod:4008225535,palegreen:2566625535,paleturquoise:2951671551,palevioletred:3681588223,papayawhip:4293907967,peachpuff:4292524543,peru:3448061951,pink:4290825215,plum:3718307327,powderblue:2967529215,purple:2147516671,rebeccapurple:1714657791,red:4278190335,rosybrown:3163525119,royalblue:1097458175,saddlebrown:2336560127,salmon:4202722047,sandybrown:4104413439,seagreen:780883967,seashell:4294307583,sienna:2689740287,silver:3233857791,skyblue:2278484991,slateblue:1784335871,slategray:1887473919,slategrey:1887473919,snow:4294638335,springgreen:16744447,steelblue:1182971135,tan:3535047935,teal:8421631,thistle:3636451583,tomato:4284696575,turquoise:1088475391,violet:4001558271,wheat:4125012991,white:4294967295,whitesmoke:4126537215,yellow:4294902015,yellowgreen:2597139199},tg="[-+]?\\d*\\.?\\d+";function Cg(){for(var g=arguments.length,I=new Array(g),e=0;e<g;e++)I[e]=arguments[e];return"\\(\\s*("+I.join(")\\s*,\\s*(")+")\\s*\\)"}var Qg=new RegExp("rgb"+Cg(tg,tg,tg)),Fg=new RegExp("rgba"+Cg(tg,tg,tg,tg)),Bg=new RegExp("hsl"+Cg(tg,"[-+]?\\d*\\.?\\d+%","[-+]?\\d*\\.?\\d+%")),ng=new RegExp("hsla"+Cg(tg,"[-+]?\\d*\\.?\\d+%","[-+]?\\d*\\.?\\d+%",tg)),Ug=/^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,sg=/^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,ig=/^#([0-9a-fA-F]{6})$/,cg=/^#([0-9a-fA-F]{8})$/;function Ag(g,I,e){return e<0&&(e+=1),e>1&&(e-=1),e<1/6?g+6*(I-g)*e:e<.5?I:e<2/3?g+(I-g)*(2/3-e)*6:g}function lg(g,I,e){var t=e<.5?e*(1+I):e+I-e*I,C=2*e-t,Q=Ag(C,t,g+1/3),F=Ag(C,t,g),B=Ag(C,t,g-1/3);return Math.round(255*Q)<<24|Math.round(255*F)<<16|Math.round(255*B)<<8}function ag(g){var I=parseInt(g,10);return I<0?0:I>255?255:I}function rg(g){return(parseFloat(g)%360+360)%360/360}function og(g){var I=parseFloat(g);return I<0?0:I>1?255:Math.round(255*I)}function dg(g){var I=parseFloat(g);return I<0?0:I>100?1:I/100}function ug(g){var I=function(g){var I;return"number"===typeof g?g>>>0===g&&g>=0&&g<=4294967295?g:null:(I=ig.exec(g))?parseInt(I[1]+"ff",16)>>>0:eg.hasOwnProperty(g)?eg[g]:(I=Qg.exec(g))?(ag(I[1])<<24|ag(I[2])<<16|ag(I[3])<<8|255)>>>0:(I=Fg.exec(g))?(ag(I[1])<<24|ag(I[2])<<16|ag(I[3])<<8|og(I[4]))>>>0:(I=Ug.exec(g))?parseInt(I[1]+I[1]+I[2]+I[2]+I[3]+I[3]+"ff",16)>>>0:(I=cg.exec(g))?parseInt(I[1],16)>>>0:(I=sg.exec(g))?parseInt(I[1]+I[1]+I[2]+I[2]+I[3]+I[3]+I[4]+I[4],16)>>>0:(I=Bg.exec(g))?(255|lg(rg(I[1]),dg(I[2]),dg(I[3])))>>>0:(I=ng.exec(g))?(lg(rg(I[1]),dg(I[2]),dg(I[3]))|og(I[4]))>>>0:null}(g);if(null===I)return g;var e=(16711680&(I=I||0))>>>16,t=(65280&I)>>>8,C=(255&I)/255;return"rgba(".concat((4278190080&I)>>>24,", ").concat(e,", ").concat(t,", ").concat(C,")")}var yg=/[+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bg=/(#(?:[0-9a-f]{2}){2,4}|(#[0-9a-f]{3})|(rgb|hsl)a?\((-?\d+%?[,\s]+){2,3}\s*[\d\.]+%?\))/gi,Zg=new RegExp("(".concat(Object.keys(eg).join("|"),")"),"g"),mg={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},xg=["Webkit","Ms","Moz","O"];function Rg(g,I,e){return null==I||"boolean"===typeof I||""===I?"":e||"number"!==typeof I||0===I||mg.hasOwnProperty(g)&&mg[g]?(""+I).trim():I+"px"}mg=Object.keys(mg).reduce((function(g,I){return xg.forEach((function(e){return g[function(g,I){return g+I.charAt(0).toUpperCase()+I.substring(1)}(e,I)]=g[I]})),g}),mg);var Sg={};f((function(g){return new Ig(g)})),p("div"),h((function(g){var I=g.output.map((function(g){return g.replace(bg,ug)})).map((function(g){return g.replace(Zg,ug)})),e=I[0].match(yg).map((function(){return[]}));I.forEach((function(g){g.match(yg).forEach((function(g,I){return e[I].push(+g)}))}));var t=I[0].match(yg).map((function(I,t){return H(Object(i.a)({},g,{output:e[t]}))}));return function(g){var e=0;return I[0].replace(yg,(function(){return t[e++](g)})).replace(/rgba\(([0-9\.-]+), ([0-9\.-]+), ([0-9\.-]+), ([0-9\.-]+)\)/gi,(function(g,I,e,t,C){return"rgba(".concat(Math.round(I),", ").concat(Math.round(e),", ").concat(Math.round(t),", ").concat(C,")")}))}})),G(eg),S((function(g,I){if(!g.nodeType||void 0===g.setAttribute)return!1;var e=I.style,t=I.children,C=I.scrollTop,Q=I.scrollLeft,F=Object(c.a)(I,["style","children","scrollTop","scrollLeft"]),B="filter"===g.nodeName||g.parentNode&&"filter"===g.parentNode.nodeName;for(var n in void 0!==C&&(g.scrollTop=C),void 0!==Q&&(g.scrollLeft=Q),void 0!==t&&(g.textContent=t),e)if(e.hasOwnProperty(n)){var U=0===n.indexOf("--"),s=Rg(n,e[n],U);"float"===n&&(n="cssFloat"),U?g.style.setProperty(n,s):g.style[n]=s}for(var i in F){var A=B?i:Sg[i]||(Sg[i]=i.replace(/([A-Z])/g,(function(g){return"-"+g.toLowerCase()})));"undefined"!==typeof g.getAttribute(A)&&g.setAttribute(A,F[i])}}),(function(g){return g}));var Gg,Lg,Vg=(Gg=function(g){return Object(A.forwardRef)((function(I,e){var t=r(),C=Object(A.useRef)(!0),Q=Object(A.useRef)(null),F=Object(A.useRef)(null),B=Object(A.useCallback)((function(g){var I=Q.current;Q.current=new X(g,(function(){var g=!1;F.current&&(g=b.fn(F.current,Q.current.getAnimatedValue())),F.current&&!1!==g||t()})),I&&I.detach()}),[]);Object(A.useEffect)((function(){return function(){C.current=!1,Q.current&&Q.current.detach()}}),[]),Object(A.useImperativeHandle)(e,(function(){return W(F,C,t)})),B(I);var n,U=Q.current.getValue(),s=(U.scrollTop,U.scrollLeft,Object(c.a)(U,["scrollTop","scrollLeft"])),o=(n=g,!a.fun(n)||n.prototype instanceof l.a.Component?function(g){return F.current=function(g,I){return I&&(a.fun(I)?I(g):a.obj(I)&&(I.current=g)),g}(g,e)}:void 0);return l.a.createElement(g,Object(i.a)({},s,{ref:o}))}))},void 0===(Lg=!1)&&(Lg=!0),function(g){return(a.arr(g)?g:Object.keys(g)).reduce((function(g,I){var e=Lg?I[0].toLowerCase()+I.substring(1):I;return g[e]=Gg(e),g}),Gg)})(["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","circle","clipPath","defs","ellipse","foreignObject","g","image","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","tspan"])},function(g,I,e){"use strict";e.d(I,"a",(function(){return C})),e.d(I,"b",(function(){return F})),e.d(I,"c",(function(){return B}));var t=e(0),C=1,Q=Object(t.createContext)(null),F=Q.Provider;function B(){var g=Object(t.useContext)(Q);if(null==g)throw new Error("No context provided: useLeafletContext() can only be used in a descendant of <MapContainer>");return g}},function(g,I,e){g.exports=e(1165)},function(g,I,e){"use strict";function t(g,I){"function"===typeof g?g(I):g&&(g.current=I)}e.d(I,"a",(function(){return t}))},function(g,I,e){"use strict";function t(){return(t=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}function C(g){return"/"===g.charAt(0)}function Q(g,I){for(var e=I,t=e+1,C=g.length;t<C;e+=1,t+=1)g[e]=g[t];g.pop()}e.r(I),e.d(I,"createBrowserHistory",(function(){return Z})),e.d(I,"createHashHistory",(function(){return G})),e.d(I,"createMemoryHistory",(function(){return V})),e.d(I,"createLocation",(function(){return r})),e.d(I,"locationsAreEqual",(function(){return o})),e.d(I,"parsePath",(function(){return l})),e.d(I,"createPath",(function(){return a}));var F=function(g,I){void 0===I&&(I="");var e,t=g&&g.split("/")||[],F=I&&I.split("/")||[],B=g&&C(g),n=I&&C(I),U=B||n;if(g&&C(g)?F=t:t.length&&(F.pop(),F=F.concat(t)),!F.length)return"/";if(F.length){var s=F[F.length-1];e="."===s||".."===s||""===s}else e=!1;for(var i=0,c=F.length;c>=0;c--){var A=F[c];"."===A?Q(F,c):".."===A?(Q(F,c),i++):i&&(Q(F,c),i--)}if(!U)for(;i--;i)F.unshift("..");!U||""===F[0]||F[0]&&C(F[0])||F.unshift("");var l=F.join("/");return e&&"/"!==l.substr(-1)&&(l+="/"),l};function B(g){return g.valueOf?g.valueOf():Object.prototype.valueOf.call(g)}var n=function g(I,e){if(I===e)return!0;if(null==I||null==e)return!1;if(Array.isArray(I))return Array.isArray(e)&&I.length===e.length&&I.every((function(I,t){return g(I,e[t])}));if("object"===typeof I||"object"===typeof e){var t=B(I),C=B(e);return t!==I||C!==e?g(t,C):Object.keys(Object.assign({},I,e)).every((function(t){return g(I[t],e[t])}))}return!1},U=e(142);function s(g){return"/"===g.charAt(0)?g:"/"+g}function i(g){return"/"===g.charAt(0)?g.substr(1):g}function c(g,I){return function(g,I){return 0===g.toLowerCase().indexOf(I.toLowerCase())&&-1!=="/?#".indexOf(g.charAt(I.length))}(g,I)?g.substr(I.length):g}function A(g){return"/"===g.charAt(g.length-1)?g.slice(0,-1):g}function l(g){var I=g||"/",e="",t="",C=I.indexOf("#");-1!==C&&(t=I.substr(C),I=I.substr(0,C));var Q=I.indexOf("?");return-1!==Q&&(e=I.substr(Q),I=I.substr(0,Q)),{pathname:I,search:"?"===e?"":e,hash:"#"===t?"":t}}function a(g){var I=g.pathname,e=g.search,t=g.hash,C=I||"/";return e&&"?"!==e&&(C+="?"===e.charAt(0)?e:"?"+e),t&&"#"!==t&&(C+="#"===t.charAt(0)?t:"#"+t),C}function r(g,I,e,C){var Q;"string"===typeof g?(Q=l(g)).state=I:(void 0===(Q=t({},g)).pathname&&(Q.pathname=""),Q.search?"?"!==Q.search.charAt(0)&&(Q.search="?"+Q.search):Q.search="",Q.hash?"#"!==Q.hash.charAt(0)&&(Q.hash="#"+Q.hash):Q.hash="",void 0!==I&&void 0===Q.state&&(Q.state=I));try{Q.pathname=decodeURI(Q.pathname)}catch(B){throw B instanceof URIError?new URIError('Pathname "'+Q.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):B}return e&&(Q.key=e),C?Q.pathname?"/"!==Q.pathname.charAt(0)&&(Q.pathname=F(Q.pathname,C.pathname)):Q.pathname=C.pathname:Q.pathname||(Q.pathname="/"),Q}function o(g,I){return g.pathname===I.pathname&&g.search===I.search&&g.hash===I.hash&&g.key===I.key&&n(g.state,I.state)}function d(){var g=null;var I=[];return{setPrompt:function(I){return g=I,function(){g===I&&(g=null)}},confirmTransitionTo:function(I,e,t,C){if(null!=g){var Q="function"===typeof g?g(I,e):g;"string"===typeof Q?"function"===typeof t?t(Q,C):C(!0):C(!1!==Q)}else C(!0)},appendListener:function(g){var e=!0;function t(){e&&g.apply(void 0,arguments)}return I.push(t),function(){e=!1,I=I.filter((function(g){return g!==t}))}},notifyListeners:function(){for(var g=arguments.length,e=new Array(g),t=0;t<g;t++)e[t]=arguments[t];I.forEach((function(g){return g.apply(void 0,e)}))}}}var u=!("undefined"===typeof window||!window.document||!window.document.createElement);function y(g,I){I(window.confirm(g))}function b(){try{return window.history.state||{}}catch(g){return{}}}function Z(g){void 0===g&&(g={}),u||Object(U.default)(!1);var I=window.history,e=function(){var g=window.navigator.userAgent;return(-1===g.indexOf("Android 2.")&&-1===g.indexOf("Android 4.0")||-1===g.indexOf("Mobile Safari")||-1!==g.indexOf("Chrome")||-1!==g.indexOf("Windows Phone"))&&(window.history&&"pushState"in window.history)}(),C=!(-1===window.navigator.userAgent.indexOf("Trident")),Q=g,F=Q.forceRefresh,B=void 0!==F&&F,n=Q.getUserConfirmation,i=void 0===n?y:n,l=Q.keyLength,o=void 0===l?6:l,Z=g.basename?A(s(g.basename)):"";function m(g){var I=g||{},e=I.key,t=I.state,C=window.location,Q=C.pathname+C.search+C.hash;return Z&&(Q=c(Q,Z)),r(Q,t,e)}function x(){return Math.random().toString(36).substr(2,o)}var R=d();function S(g){t(J,g),J.length=I.length,R.notifyListeners(J.location,J.action)}function G(g){(function(g){return void 0===g.state&&-1===navigator.userAgent.indexOf("CriOS")})(g)||h(m(g.state))}function L(){h(m(b()))}var V=!1;function h(g){if(V)V=!1,S();else{R.confirmTransitionTo(g,"POP",i,(function(I){I?S({action:"POP",location:g}):function(g){var I=J.location,e=p.indexOf(I.key);-1===e&&(e=0);var t=p.indexOf(g.key);-1===t&&(t=0);var C=e-t;C&&(V=!0,N(C))}(g)}))}}var D=m(b()),p=[D.key];function E(g){return Z+a(g)}function N(g){I.go(g)}var W=0;function f(g){1===(W+=g)&&1===g?(window.addEventListener("popstate",G),C&&window.addEventListener("hashchange",L)):0===W&&(window.removeEventListener("popstate",G),C&&window.removeEventListener("hashchange",L))}var X=!1;var J={length:I.length,action:"POP",location:D,createHref:E,push:function(g,t){var C=r(g,t,x(),J.location);R.confirmTransitionTo(C,"PUSH",i,(function(g){if(g){var t=E(C),Q=C.key,F=C.state;if(e)if(I.pushState({key:Q,state:F},null,t),B)window.location.href=t;else{var n=p.indexOf(J.location.key),U=p.slice(0,n+1);U.push(C.key),p=U,S({action:"PUSH",location:C})}else window.location.href=t}}))},replace:function(g,t){var C=r(g,t,x(),J.location);R.confirmTransitionTo(C,"REPLACE",i,(function(g){if(g){var t=E(C),Q=C.key,F=C.state;if(e)if(I.replaceState({key:Q,state:F},null,t),B)window.location.replace(t);else{var n=p.indexOf(J.location.key);-1!==n&&(p[n]=C.key),S({action:"REPLACE",location:C})}else window.location.replace(t)}}))},go:N,goBack:function(){N(-1)},goForward:function(){N(1)},block:function(g){void 0===g&&(g=!1);var I=R.setPrompt(g);return X||(f(1),X=!0),function(){return X&&(X=!1,f(-1)),I()}},listen:function(g){var I=R.appendListener(g);return f(1),function(){f(-1),I()}}};return J}var m={hashbang:{encodePath:function(g){return"!"===g.charAt(0)?g:"!/"+i(g)},decodePath:function(g){return"!"===g.charAt(0)?g.substr(1):g}},noslash:{encodePath:i,decodePath:s},slash:{encodePath:s,decodePath:s}};function x(g){var I=g.indexOf("#");return-1===I?g:g.slice(0,I)}function R(){var g=window.location.href,I=g.indexOf("#");return-1===I?"":g.substring(I+1)}function S(g){window.location.replace(x(window.location.href)+"#"+g)}function G(g){void 0===g&&(g={}),u||Object(U.default)(!1);var I=window.history,e=(window.navigator.userAgent.indexOf("Firefox"),g),C=e.getUserConfirmation,Q=void 0===C?y:C,F=e.hashType,B=void 0===F?"slash":F,n=g.basename?A(s(g.basename)):"",i=m[B],l=i.encodePath,o=i.decodePath;function b(){var g=o(R());return n&&(g=c(g,n)),r(g)}var Z=d();function G(g){t(v,g),v.length=I.length,Z.notifyListeners(v.location,v.action)}var L=!1,V=null;function h(){var g,I,e=R(),t=l(e);if(e!==t)S(t);else{var C=b(),F=v.location;if(!L&&(I=C,(g=F).pathname===I.pathname&&g.search===I.search&&g.hash===I.hash))return;if(V===a(C))return;V=null,function(g){if(L)L=!1,G();else{Z.confirmTransitionTo(g,"POP",Q,(function(I){I?G({action:"POP",location:g}):function(g){var I=v.location,e=N.lastIndexOf(a(I));-1===e&&(e=0);var t=N.lastIndexOf(a(g));-1===t&&(t=0);var C=e-t;C&&(L=!0,W(C))}(g)}))}}(C)}}var D=R(),p=l(D);D!==p&&S(p);var E=b(),N=[a(E)];function W(g){I.go(g)}var f=0;function X(g){1===(f+=g)&&1===g?window.addEventListener("hashchange",h):0===f&&window.removeEventListener("hashchange",h)}var J=!1;var v={length:I.length,action:"POP",location:E,createHref:function(g){var I=document.querySelector("base"),e="";return I&&I.getAttribute("href")&&(e=x(window.location.href)),e+"#"+l(n+a(g))},push:function(g,I){var e=r(g,void 0,void 0,v.location);Z.confirmTransitionTo(e,"PUSH",Q,(function(g){if(g){var I=a(e),t=l(n+I);if(R()!==t){V=I,function(g){window.location.hash=g}(t);var C=N.lastIndexOf(a(v.location)),Q=N.slice(0,C+1);Q.push(I),N=Q,G({action:"PUSH",location:e})}else G()}}))},replace:function(g,I){var e=r(g,void 0,void 0,v.location);Z.confirmTransitionTo(e,"REPLACE",Q,(function(g){if(g){var I=a(e),t=l(n+I);R()!==t&&(V=I,S(t));var C=N.indexOf(a(v.location));-1!==C&&(N[C]=I),G({action:"REPLACE",location:e})}}))},go:W,goBack:function(){W(-1)},goForward:function(){W(1)},block:function(g){void 0===g&&(g=!1);var I=Z.setPrompt(g);return J||(X(1),J=!0),function(){return J&&(J=!1,X(-1)),I()}},listen:function(g){var I=Z.appendListener(g);return X(1),function(){X(-1),I()}}};return v}function L(g,I,e){return Math.min(Math.max(g,I),e)}function V(g){void 0===g&&(g={});var I=g,e=I.getUserConfirmation,C=I.initialEntries,Q=void 0===C?["/"]:C,F=I.initialIndex,B=void 0===F?0:F,n=I.keyLength,U=void 0===n?6:n,s=d();function i(g){t(y,g),y.length=y.entries.length,s.notifyListeners(y.location,y.action)}function c(){return Math.random().toString(36).substr(2,U)}var A=L(B,0,Q.length-1),l=Q.map((function(g){return r(g,void 0,"string"===typeof g?c():g.key||c())})),o=a;function u(g){var I=L(y.index+g,0,y.entries.length-1),t=y.entries[I];s.confirmTransitionTo(t,"POP",e,(function(g){g?i({action:"POP",location:t,index:I}):i()}))}var y={length:l.length,action:"POP",location:l[A],index:A,entries:l,createHref:o,push:function(g,I){var t=r(g,I,c(),y.location);s.confirmTransitionTo(t,"PUSH",e,(function(g){if(g){var I=y.index+1,e=y.entries.slice(0);e.length>I?e.splice(I,e.length-I,t):e.push(t),i({action:"PUSH",location:t,index:I,entries:e})}}))},replace:function(g,I){var t=r(g,I,c(),y.location);s.confirmTransitionTo(t,"REPLACE",e,(function(g){g&&(y.entries[y.index]=t,i({action:"REPLACE",location:t}))}))},go:u,goBack:function(){u(-1)},goForward:function(){u(1)},canGo:function(g){var I=y.index+g;return I>=0&&I<y.entries.length},block:function(g){return void 0===g&&(g=!1),s.setPrompt(g)},listen:function(g){return s.appendListener(g)}};return y}},function(g,I){var e=Math.ceil,t=Math.floor;g.exports=function(g){return isNaN(g=+g)?0:(g>0?t:e)(g)}},function(g,I){g.exports=function(g){if("function"!=typeof g)throw TypeError(String(g)+" is not a function");return g}},function(g,I,e){"use strict";function t(g){var I=g.props,e=g.states,t=g.muiFormControl;return e.reduce((function(g,e){return g[e]=I[e],t&&"undefined"===typeof I[e]&&(g[e]=t[e]),g}),{})}e.d(I,"a",(function(){return t}))},function(g,I,e){"use strict";e.d(I,"a",(function(){return C}));var t=e(0);function C(g){var I=g.controlled,e=g.default,C=(g.name,g.state,t.useRef(void 0!==I).current),Q=t.useState(e),F=Q[0],B=Q[1];return[C?I:F,t.useCallback((function(g){C||B(g)}),[])]}},function(g,I,e){"use strict";e.d(I,"a",(function(){return B}));var t=e(5),C=e(0),Q=e.n(C),F=e(247);function B(g,I){var e=Q.a.memo(Q.a.forwardRef((function(I,e){return Q.a.createElement(F.a,Object(t.a)({ref:e},I),g)})));return e.muiName=F.a.muiName,e}},function(g,I,e){"use strict";function t(g,I,e,t,C,Q){if("undefined"!==typeof window)return arguments.length>1?document.cookie=g+"="+encodeURIComponent(I)+(e?"; expires="+new Date(+new Date+1e3*e).toUTCString()+(t?"; path="+t:"")+(C?"; domain="+C:"")+(Q?"; secure":""):""):decodeURIComponent((("; "+document.cookie).split("; "+g+"=")[1]||"").split(";")[0])}function C(){try{t("_c_","1");var g=-1!==document.cookie.indexOf("_c_");return t("_c_","",-1),g}catch(I){return!1}}e.d(I,"b",(function(){return C})),e.d(I,"d",(function(){return F})),e.d(I,"a",(function(){return Q})),e.d(I,"c",(function(){return B}));var Q=t,F=t;function B(g){return t(g,"",-1)}},function(g,I,e){"use strict";e.d(I,"a",(function(){return F}));var t=e(367);var C=e(429),Q=e(300);function F(g){return function(g){if(Array.isArray(g))return Object(t.a)(g)}(g)||Object(C.a)(g)||Object(Q.a)(g)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}},function(g,I,e){"use strict";e.d(I,"a",(function(){return r})),e.d(I,"b",(function(){return i})),e.d(I,"c",(function(){return U})),e.d(I,"d",(function(){return a})),e.d(I,"e",(function(){return B}));var t=e(569),C=function(){return Math.random().toString(36).substring(7).split("").join(".")},Q={INIT:"@@redux/INIT"+C(),REPLACE:"@@redux/REPLACE"+C(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+C()}};function F(g){if("object"!==typeof g||null===g)return!1;for(var I=g;null!==Object.getPrototypeOf(I);)I=Object.getPrototypeOf(I);return Object.getPrototypeOf(g)===I}function B(g,I,e){var C;if("function"===typeof I&&"function"===typeof e||"function"===typeof e&&"function"===typeof arguments[3])throw new Error("It looks like you are passing several store enhancers to createStore(). This is not supported. Instead, compose them together to a single function.");if("function"===typeof I&&"undefined"===typeof e&&(e=I,I=void 0),"undefined"!==typeof e){if("function"!==typeof e)throw new Error("Expected the enhancer to be a function.");return e(B)(g,I)}if("function"!==typeof g)throw new Error("Expected the reducer to be a function.");var n=g,U=I,s=[],i=s,c=!1;function A(){i===s&&(i=s.slice())}function l(){if(c)throw new Error("You may not call store.getState() while the reducer is executing. The reducer has already received the state as an argument. Pass it down from the top reducer instead of reading it from the store.");return U}function a(g){if("function"!==typeof g)throw new Error("Expected the listener to be a function.");if(c)throw new Error("You may not call store.subscribe() while the reducer is executing. If you would like to be notified after the store has been updated, subscribe from a component and invoke store.getState() in the callback to access the latest state. See https://redux.js.org/api-reference/store#subscribelistener for more details.");var I=!0;return A(),i.push(g),function(){if(I){if(c)throw new Error("You may not unsubscribe from a store listener while the reducer is executing. See https://redux.js.org/api-reference/store#subscribelistener for more details.");I=!1,A();var e=i.indexOf(g);i.splice(e,1),s=null}}}function r(g){if(!F(g))throw new Error("Actions must be plain objects. Use custom middleware for async actions.");if("undefined"===typeof g.type)throw new Error('Actions may not have an undefined "type" property. Have you misspelled a constant?');if(c)throw new Error("Reducers may not dispatch actions.");try{c=!0,U=n(U,g)}finally{c=!1}for(var I=s=i,e=0;e<I.length;e++){(0,I[e])()}return g}function o(g){if("function"!==typeof g)throw new Error("Expected the nextReducer to be a function.");n=g,r({type:Q.REPLACE})}function d(){var g,I=a;return(g={subscribe:function(g){if("object"!==typeof g||null===g)throw new TypeError("Expected the observer to be an object.");function e(){g.next&&g.next(l())}return e(),{unsubscribe:I(e)}}})[t.a]=function(){return this},g}return r({type:Q.INIT}),(C={dispatch:r,subscribe:a,getState:l,replaceReducer:o})[t.a]=d,C}function n(g,I){var e=I&&I.type;return"Given "+(e&&'action "'+String(e)+'"'||"an action")+', reducer "'+g+'" returned undefined. To ignore an action, you must explicitly return the previous state. If you want this reducer to hold no value, you can return null instead of undefined.'}function U(g){for(var I=Object.keys(g),e={},t=0;t<I.length;t++){var C=I[t];0,"function"===typeof g[C]&&(e[C]=g[C])}var F,B=Object.keys(e);try{!function(g){Object.keys(g).forEach((function(I){var e=g[I];if("undefined"===typeof e(void 0,{type:Q.INIT}))throw new Error('Reducer "'+I+"\" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined.");if("undefined"===typeof e(void 0,{type:Q.PROBE_UNKNOWN_ACTION()}))throw new Error('Reducer "'+I+"\" returned undefined when probed with a random type. Don't try to handle "+Q.INIT+' or other actions in "redux/*" namespace. They are considered private. Instead, you must return the current state for any unknown actions, unless it is undefined, in which case you must return the initial state, regardless of the action type. The initial state may not be undefined, but can be null.')}))}(e)}catch(U){F=U}return function(g,I){if(void 0===g&&(g={}),F)throw F;for(var t=!1,C={},Q=0;Q<B.length;Q++){var U=B[Q],s=e[U],i=g[U],c=s(i,I);if("undefined"===typeof c){var A=n(U,I);throw new Error(A)}C[U]=c,t=t||c!==i}return(t=t||B.length!==Object.keys(g).length)?C:g}}function s(g,I){return function(){return I(g.apply(this,arguments))}}function i(g,I){if("function"===typeof g)return s(g,I);if("object"!==typeof g||null===g)throw new Error("bindActionCreators expected an object or a function, instead received "+(null===g?"null":typeof g)+'. Did you write "import ActionCreators from" instead of "import * as ActionCreators from"?');var e={};for(var t in g){var C=g[t];"function"===typeof C&&(e[t]=s(C,I))}return e}function c(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}function A(g,I){var e=Object.keys(g);return Object.getOwnPropertySymbols&&e.push.apply(e,Object.getOwnPropertySymbols(g)),I&&(e=e.filter((function(I){return Object.getOwnPropertyDescriptor(g,I).enumerable}))),e}function l(g){for(var I=1;I<arguments.length;I++){var e=null!=arguments[I]?arguments[I]:{};I%2?A(e,!0).forEach((function(I){c(g,I,e[I])})):Object.getOwnPropertyDescriptors?Object.defineProperties(g,Object.getOwnPropertyDescriptors(e)):A(e).forEach((function(I){Object.defineProperty(g,I,Object.getOwnPropertyDescriptor(e,I))}))}return g}function a(){for(var g=arguments.length,I=new Array(g),e=0;e<g;e++)I[e]=arguments[e];return 0===I.length?function(g){return g}:1===I.length?I[0]:I.reduce((function(g,I){return function(){return g(I.apply(void 0,arguments))}}))}function r(){for(var g=arguments.length,I=new Array(g),e=0;e<g;e++)I[e]=arguments[e];return function(g){return function(){var e=g.apply(void 0,arguments),t=function(){throw new Error("Dispatching while constructing your middleware is not allowed. Other middleware would not be applied to this dispatch.")},C={getState:e.getState,dispatch:function(){return t.apply(void 0,arguments)}},Q=I.map((function(g){return g(C)}));return l({},e,{dispatch:t=a.apply(void 0,Q)(e.dispatch)})}}}},function(g,I,e){"use strict";var t=e(0),C=t.createContext({});I.a=C},function(g,I,e){"use strict";function t(g,I){return I||(I=g.slice(0)),Object.freeze(Object.defineProperties(g,{raw:{value:Object.freeze(I)}}))}e.d(I,"a",(function(){return t}))},function(g,I,e){"use strict";(function(g){e.d(I,"a",(function(){return Qg}));var t=e(122),C=e(0),Q=e.n(C),F=(e(845),e(846)),B=e(442),n=e(579),U=e(129),s=e.n(U);function i(){return(i=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}var c=function(g,I){for(var e=[g[0]],t=0,C=I.length;t<C;t+=1)e.push(I[t],g[t+1]);return e},A=function(g){return null!==g&&"object"===typeof g&&"[object Object]"===(g.toString?g.toString():Object.prototype.toString.call(g))&&!Object(t.typeOf)(g)},l=Object.freeze([]),a=Object.freeze({});function r(g){return"function"===typeof g}function o(g){return g.displayName||g.name||"Component"}function d(g){return g&&"string"===typeof g.styledComponentId}var u="undefined"!==typeof g&&(Object({NODE_ENV:"production",PUBLIC_URL:"",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0}).REACT_APP_SC_ATTR||Object({NODE_ENV:"production",PUBLIC_URL:"",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0}).SC_ATTR)||"data-styled",y="undefined"!==typeof window&&"HTMLElement"in window,b="boolean"===typeof SC_DISABLE_SPEEDY&&SC_DISABLE_SPEEDY||"undefined"!==typeof g&&(Object({NODE_ENV:"production",PUBLIC_URL:"",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0}).REACT_APP_SC_DISABLE_SPEEDY||Object({NODE_ENV:"production",PUBLIC_URL:"",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0}).SC_DISABLE_SPEEDY)||!1,Z=function(){return e.nc};function m(g){for(var I=arguments.length,e=new Array(I>1?I-1:0),t=1;t<I;t++)e[t-1]=arguments[t];throw new Error("An error occurred. See https://github.com/styled-components/styled-components/blob/master/packages/styled-components/src/utils/errors.md#"+g+" for more information."+(e.length>0?" Additional arguments: "+e.join(", "):""))}var x=function(g){var I=document.head,e=g||I,t=document.createElement("style"),C=function(g){for(var I=g.childNodes,e=I.length;e>=0;e--){var t=I[e];if(t&&1===t.nodeType&&t.hasAttribute(u))return t}}(e),Q=void 0!==C?C.nextSibling:null;t.setAttribute(u,"active"),t.setAttribute("data-styled-version","5.1.1");var F=Z();return F&&t.setAttribute("nonce",F),e.insertBefore(t,Q),t},R=function(){function g(g){var I=this.element=x(g);I.appendChild(document.createTextNode("")),this.sheet=function(g){if(g.sheet)return g.sheet;for(var I=document.styleSheets,e=0,t=I.length;e<t;e++){var C=I[e];if(C.ownerNode===g)return C}m(17)}(I),this.length=0}var I=g.prototype;return I.insertRule=function(g,I){try{return this.sheet.insertRule(I,g),this.length++,!0}catch(e){return!1}},I.deleteRule=function(g){this.sheet.deleteRule(g),this.length--},I.getRule=function(g){var I=this.sheet.cssRules[g];return void 0!==I&&"string"===typeof I.cssText?I.cssText:""},g}(),S=function(){function g(g){var I=this.element=x(g);this.nodes=I.childNodes,this.length=0}var I=g.prototype;return I.insertRule=function(g,I){if(g<=this.length&&g>=0){var e=document.createTextNode(I),t=this.nodes[g];return this.element.insertBefore(e,t||null),this.length++,!0}return!1},I.deleteRule=function(g){this.element.removeChild(this.nodes[g]),this.length--},I.getRule=function(g){return g<this.length?this.nodes[g].textContent:""},g}(),G=function(){function g(g){this.rules=[],this.length=0}var I=g.prototype;return I.insertRule=function(g,I){return g<=this.length&&(this.rules.splice(g,0,I),this.length++,!0)},I.deleteRule=function(g){this.rules.splice(g,1),this.length--},I.getRule=function(g){return g<this.length?this.rules[g]:""},g}(),L=function(){function g(g){this.groupSizes=new Uint32Array(512),this.length=512,this.tag=g}var I=g.prototype;return I.indexOfGroup=function(g){for(var I=0,e=0;e<g;e++)I+=this.groupSizes[e];return I},I.insertRules=function(g,I){if(g>=this.groupSizes.length){for(var e=this.groupSizes,t=e.length,C=t;g>=C;)(C<<=1)<0&&m(16,""+g);this.groupSizes=new Uint32Array(C),this.groupSizes.set(e),this.length=C;for(var Q=t;Q<C;Q++)this.groupSizes[Q]=0}for(var F=this.indexOfGroup(g+1),B=0,n=I.length;B<n;B++)this.tag.insertRule(F,I[B])&&(this.groupSizes[g]++,F++)},I.clearGroup=function(g){if(g<this.length){var I=this.groupSizes[g],e=this.indexOfGroup(g),t=e+I;this.groupSizes[g]=0;for(var C=e;C<t;C++)this.tag.deleteRule(e)}},I.getGroup=function(g){var I="";if(g>=this.length||0===this.groupSizes[g])return I;for(var e=this.groupSizes[g],t=this.indexOfGroup(g),C=t+e,Q=t;Q<C;Q++)I+=this.tag.getRule(Q)+"/*!sc*/\n";return I},g}(),V=new Map,h=new Map,D=1,p=function(g){if(V.has(g))return V.get(g);var I=D++;return V.set(g,I),h.set(I,g),I},E=function(g){return h.get(g)},N=function(g,I){I>=D&&(D=I+1),V.set(g,I),h.set(I,g)},W="style["+u+'][data-styled-version="5.1.1"]',f=new RegExp("^"+u+'\\.g(\\d+)\\[id="([\\w\\d-]+)"\\].*?"([^"]*)'),X=function(g,I,e){for(var t,C=e.split(","),Q=0,F=C.length;Q<F;Q++)(t=C[Q])&&g.registerName(I,t)},J=function(g,I){for(var e=I.innerHTML.split("/*!sc*/\n"),t=[],C=0,Q=e.length;C<Q;C++){var F=e[C].trim();if(F){var B=F.match(f);if(B){var n=0|parseInt(B[1],10),U=B[2];0!==n&&(N(U,n),X(g,U,B[3]),g.getTag().insertRules(n,t)),t.length=0}else t.push(F)}}},v=y,k={isServer:!y,useCSSOMInjection:!b},H=function(){function g(g,I,e){void 0===g&&(g=k),void 0===I&&(I={}),this.options=i({},k,{},g),this.gs=I,this.names=new Map(e),!this.options.isServer&&y&&v&&(v=!1,function(g){for(var I=document.querySelectorAll(W),e=0,t=I.length;e<t;e++){var C=I[e];C&&"active"!==C.getAttribute(u)&&(J(g,C),C.parentNode&&C.parentNode.removeChild(C))}}(this))}g.registerId=function(g){return p(g)};var I=g.prototype;return I.reconstructWithOptions=function(I){return new g(i({},this.options,{},I),this.gs,this.names)},I.allocateGSInstance=function(g){return this.gs[g]=(this.gs[g]||0)+1},I.getTag=function(){return this.tag||(this.tag=(g=function(g){var I=g.isServer,e=g.useCSSOMInjection,t=g.target;return I?new G(t):e?new R(t):new S(t)}(this.options),new L(g)));var g},I.hasNameForId=function(g,I){return this.names.has(g)&&this.names.get(g).has(I)},I.registerName=function(g,I){if(p(g),this.names.has(g))this.names.get(g).add(I);else{var e=new Set;e.add(I),this.names.set(g,e)}},I.insertRules=function(g,I,e){this.registerName(g,I),this.getTag().insertRules(p(g),e)},I.clearNames=function(g){this.names.has(g)&&this.names.get(g).clear()},I.clearRules=function(g){this.getTag().clearGroup(p(g)),this.clearNames(g)},I.clearTag=function(){this.tag=void 0},I.toString=function(){return function(g){for(var I=g.getTag(),e=I.length,t="",C=0;C<e;C++){var Q=E(C);if(void 0!==Q){var F=g.names.get(Q),B=I.getGroup(C);if(void 0!==F&&0!==B.length){var n=u+".g"+C+'[id="'+Q+'"]',U="";void 0!==F&&F.forEach((function(g){g.length>0&&(U+=g+",")})),t+=""+B+n+'{content:"'+U+'"}/*!sc*/\n'}}}return t}(this)},g}(),M=function(g,I){for(var e=I.length;e;)g=33*g^I.charCodeAt(--e);return g},Y=function(g){return M(5381,g)};var w=/^\s*\/\/.*$/gm;function T(g){var I,e,t,C=void 0===g?a:g,Q=C.options,B=void 0===Q?a:Q,n=C.plugins,U=void 0===n?l:n,s=new F.a(B),i=[],c=function(g){function I(I){if(I)try{g(I+"}")}catch(e){}}return function(e,t,C,Q,F,B,n,U,s,i){switch(e){case 1:if(0===s&&64===t.charCodeAt(0))return g(t+";"),"";break;case 2:if(0===U)return t+"/*|*/";break;case 3:switch(U){case 102:case 112:return g(C[0]+t),"";default:return t+(0===i?"/*|*/":"")}case-2:t.split("/*|*/}").forEach(I)}}}((function(g){i.push(g)})),A=function(g,t,C){return t>0&&-1!==C.slice(0,t).indexOf(e)&&C.slice(t-e.length,t)!==e?"."+I:g};function r(g,C,Q,F){void 0===F&&(F="&");var B=g.replace(w,""),n=C&&Q?Q+" "+C+" { "+B+" }":B;return I=F,e=C,t=new RegExp("\\"+e+"\\b","g"),s(Q||!C?"":C,n)}return s.use([].concat(U,[function(g,I,C){2===g&&C.length&&C[0].lastIndexOf(e)>0&&(C[0]=C[0].replace(t,A))},c,function(g){if(-2===g){var I=i;return i=[],I}}])),r.hash=U.length?U.reduce((function(g,I){return I.name||m(15),M(g,I.name)}),5381).toString():"",r}var z=Q.a.createContext(),O=(z.Consumer,Q.a.createContext()),K=(O.Consumer,new H),j=T();function P(){return Object(C.useContext)(z)||K}function _(){return Object(C.useContext)(O)||j}var q=function(){function g(g,I){var e=this;this.inject=function(g){g.hasNameForId(e.id,e.name)||g.insertRules(e.id,e.name,j.apply(void 0,e.stringifyArgs))},this.toString=function(){return m(12,String(e.name))},this.name=g,this.id="sc-keyframes-"+g,this.stringifyArgs=I}return g.prototype.getName=function(){return this.name},g}(),$=/([A-Z])/g,gg=/^ms-/;function Ig(g){return g.replace($,"-$1").toLowerCase().replace(gg,"-ms-")}var eg=function(g){return void 0===g||null===g||!1===g||""===g},tg=function g(I,e){var t=[];return Object.keys(I).forEach((function(e){if(!eg(I[e])){if(A(I[e]))return t.push.apply(t,g(I[e],e)),t;if(r(I[e]))return t.push(Ig(e)+":",I[e],";"),t;t.push(Ig(e)+": "+function(g,I){return null==I||"boolean"===typeof I||""===I?"":"number"!==typeof I||0===I||g in B.a?String(I).trim():I+"px"}(e,I[e])+";")}return t})),e?[e+" {"].concat(t,["}"]):t};function Cg(g,I,e){if(Array.isArray(g)){for(var t,C=[],Q=0,F=g.length;Q<F;Q+=1)""!==(t=Cg(g[Q],I,e))&&(Array.isArray(t)?C.push.apply(C,t):C.push(t));return C}return eg(g)?"":d(g)?"."+g.styledComponentId:r(g)?"function"!==typeof(B=g)||B.prototype&&B.prototype.isReactComponent||!I?g:Cg(g(I),I,e):g instanceof q?e?(g.inject(e),g.getName()):g:A(g)?tg(g):g.toString();var B}function Qg(g){for(var I=arguments.length,e=new Array(I>1?I-1:0),t=1;t<I;t++)e[t-1]=arguments[t];return r(g)||A(g)?Cg(c(l,[g].concat(e))):0===e.length&&1===g.length&&"string"===typeof g[0]?g:Cg(c(g,e))}var Fg=function(g){return"function"===typeof g||"object"===typeof g&&null!==g&&!Array.isArray(g)},Bg=function(g){return"__proto__"!==g&&"constructor"!==g&&"prototype"!==g};function ng(g,I,e){var t=g[e];Fg(I)&&Fg(t)?Ug(t,I):g[e]=I}function Ug(g){for(var I=arguments.length,e=new Array(I>1?I-1:0),t=1;t<I;t++)e[t-1]=arguments[t];for(var C=0,Q=e;C<Q.length;C++){var F=Q[C];if(Fg(F))for(var B in F)Bg(B)&&ng(g,F[B],B)}return g}var sg=/(a)(d)/gi,ig=function(g){return String.fromCharCode(g+(g>25?39:97))};function cg(g){var I,e="";for(I=Math.abs(g);I>52;I=I/52|0)e=ig(I%52)+e;return(ig(I%52)+e).replace(sg,"$1-$2")}function Ag(g){for(var I=0;I<g.length;I+=1){var e=g[I];if(r(e)&&!d(e))return!1}return!0}var lg=function(){function g(g,I){this.rules=g,this.staticRulesId="",this.isStatic=Ag(g),this.componentId=I,this.baseHash=Y(I),H.registerId(I)}return g.prototype.generateAndInjectStyles=function(g,I,e){var t=this.componentId;if(this.isStatic&&!e.hash){if(this.staticRulesId&&I.hasNameForId(t,this.staticRulesId))return this.staticRulesId;var C=Cg(this.rules,g,I).join(""),Q=cg(M(this.baseHash,C.length)>>>0);if(!I.hasNameForId(t,Q)){var F=e(C,"."+Q,void 0,t);I.insertRules(t,Q,F)}return this.staticRulesId=Q,Q}for(var B=this.rules.length,n=M(this.baseHash,e.hash),U="",s=0;s<B;s++){var i=this.rules[s];if("string"===typeof i)U+=i;else{var c=Cg(i,g,I),A=Array.isArray(c)?c.join(""):c;n=M(n,A+s),U+=A}}var l=cg(n>>>0);if(!I.hasNameForId(t,l)){var a=e(U,"."+l,void 0,t);I.insertRules(t,l,a)}return l},g}(),ag=(new Set,function(g,I,e){return void 0===e&&(e=a),g.theme!==e.theme&&g.theme||I||e.theme}),rg=/[!"#$%&'()*+,./:;<=>?@[\\\]^`{|}~-]+/g,og=/(^-|-$)/g;function dg(g){return g.replace(rg,"-").replace(og,"")}function ug(g){return"string"===typeof g&&!0}var yg=function(g){return cg(Y(g)>>>0)};var bg=Q.a.createContext();bg.Consumer;var Zg={};function mg(g,I,e){var t=g.attrs,Q=g.componentStyle,F=g.defaultProps,B=g.foldedComponentIds,U=g.shouldForwardProp,s=g.styledComponentId,c=g.target;Object(C.useDebugValue)(s);var A=function(g,I,e){void 0===g&&(g=a);var t=i({},I,{theme:g}),C={};return e.forEach((function(g){var I,e,Q,F=g;for(I in r(F)&&(F=F(t)),F)t[I]=C[I]="className"===I?(e=C[I],Q=F[I],e&&Q?e+" "+Q:e||Q):F[I]})),[t,C]}(ag(I,Object(C.useContext)(bg),F)||a,I,t),l=A[0],o=A[1],d=function(g,I,e,t){var Q=P(),F=_(),B=g.isStatic&&!I?g.generateAndInjectStyles(a,Q,F):g.generateAndInjectStyles(e,Q,F);return Object(C.useDebugValue)(B),B}(Q,t.length>0,l),u=e,y=o.$as||I.$as||o.as||I.as||c,b=ug(y),Z=o!==I?i({},I,{},o):I,m=U||b&&n.a,x={};for(var R in Z)"$"!==R[0]&&"as"!==R&&("forwardedAs"===R?x.as=Z[R]:m&&!m(R,n.a)||(x[R]=Z[R]));return I.style&&o.style!==I.style&&(x.style=i({},I.style,{},o.style)),x.className=Array.prototype.concat(B,s,d!==s?d:null,I.className,o.className).filter(Boolean).join(" "),x.ref=u,Object(C.createElement)(y,x)}function xg(g,I,e){var t=d(g),C=!ug(g),F=I.displayName,B=void 0===F?function(g){return ug(g)?"styled."+g:"Styled("+o(g)+")"}(g):F,n=I.componentId,U=void 0===n?function(g,I){var e="string"!==typeof g?"sc":dg(g);Zg[e]=(Zg[e]||0)+1;var t=e+"-"+yg(e+Zg[e]);return I?I+"-"+t:t}(I.displayName,I.parentComponentId):n,c=I.attrs,A=void 0===c?l:c,a=I.displayName&&I.componentId?dg(I.displayName)+"-"+I.componentId:I.componentId||U,r=t&&g.attrs?Array.prototype.concat(g.attrs,A).filter(Boolean):A,u=I.shouldForwardProp;t&&g.shouldForwardProp&&(u=u?function(e,t){return g.shouldForwardProp(e,t)&&I.shouldForwardProp(e,t)}:g.shouldForwardProp);var y,b=new lg(t?g.componentStyle.rules.concat(e):e,a),Z=function(g,I){return mg(y,g,I)};return Z.displayName=B,(y=Q.a.forwardRef(Z)).attrs=r,y.componentStyle=b,y.displayName=B,y.shouldForwardProp=u,y.foldedComponentIds=t?Array.prototype.concat(g.foldedComponentIds,g.styledComponentId):l,y.styledComponentId=a,y.target=t?g.target:g,y.withComponent=function(g){var t=I.componentId,C=function(g,I){if(null==g)return{};var e,t,C={},Q=Object.keys(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||(C[e]=g[e]);return C}(I,["componentId"]),Q=t&&t+"-"+(ug(g)?g:dg(o(g)));return xg(g,i({},C,{attrs:r,componentId:Q}),e)},Object.defineProperty(y,"defaultProps",{get:function(){return this._foldedDefaultProps},set:function(I){this._foldedDefaultProps=t?Ug({},g.defaultProps,I):I}}),y.toString=function(){return"."+y.styledComponentId},C&&s()(y,g,{attrs:!0,componentStyle:!0,displayName:!0,foldedComponentIds:!0,shouldForwardProp:!0,self:!0,styledComponentId:!0,target:!0,withComponent:!0}),y}var Rg=function(g){return function g(I,e,C){if(void 0===C&&(C=a),!Object(t.isValidElementType)(e))return m(1,String(e));var Q=function(){return I(e,C,Qg.apply(void 0,arguments))};return Q.withConfig=function(t){return g(I,e,i({},C,{},t))},Q.attrs=function(t){return g(I,e,i({},C,{attrs:Array.prototype.concat(C.attrs,t).filter(Boolean)}))},Q}(xg,g)};["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","marquee","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","circle","clipPath","defs","ellipse","foreignObject","g","image","line","linearGradient","marker","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","tspan"].forEach((function(g){Rg[g]=Rg(g)}));I.b=Rg}).call(this,e(92))},function(g,I,e){"use strict";var t=e(16),C=e(5),Q=e(0),F=(e(4),e(14)),B=e(21),n=e(38),U=e(271),s=e(30),i=Q.forwardRef((function(g,I){var e=g.children,B=g.classes,n=g.className,i=g.color,c=void 0===i?"default":i,A=g.component,l=void 0===A?"button":A,a=g.disabled,r=void 0!==a&&a,o=g.disableElevation,d=void 0!==o&&o,u=g.disableFocusRipple,y=void 0!==u&&u,b=g.endIcon,Z=g.focusVisibleClassName,m=g.fullWidth,x=void 0!==m&&m,R=g.size,S=void 0===R?"medium":R,G=g.startIcon,L=g.type,V=void 0===L?"button":L,h=g.variant,D=void 0===h?"text":h,p=Object(t.a)(g,["children","classes","className","color","component","disabled","disableElevation","disableFocusRipple","endIcon","focusVisibleClassName","fullWidth","size","startIcon","type","variant"]),E=G&&Q.createElement("span",{className:Object(F.default)(B.startIcon,B["iconSize".concat(Object(s.a)(S))])},G),N=b&&Q.createElement("span",{className:Object(F.default)(B.endIcon,B["iconSize".concat(Object(s.a)(S))])},b);return Q.createElement(U.a,Object(C.a)({className:Object(F.default)(B.root,B[D],n,"inherit"===c?B.colorInherit:"default"!==c&&B["".concat(D).concat(Object(s.a)(c))],"medium"!==S&&[B["".concat(D,"Size").concat(Object(s.a)(S))],B["size".concat(Object(s.a)(S))]],d&&B.disableElevation,r&&B.disabled,x&&B.fullWidth),component:l,disabled:r,focusRipple:!y,focusVisibleClassName:Object(F.default)(B.focusVisible,Z),ref:I,type:V},p),Q.createElement("span",{className:B.label},E,e,N))}));I.a=Object(B.a)((function(g){return{root:Object(C.a)({},g.typography.button,{boxSizing:"border-box",minWidth:64,padding:"6px 16px",borderRadius:g.shape.borderRadius,color:g.palette.text.primary,transition:g.transitions.create(["background-color","box-shadow","border"],{duration:g.transitions.duration.short}),"&:hover":{textDecoration:"none",backgroundColor:Object(n.d)(g.palette.text.primary,g.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"},"&$disabled":{backgroundColor:"transparent"}},"&$disabled":{color:g.palette.action.disabled}}),label:{width:"100%",display:"inherit",alignItems:"inherit",justifyContent:"inherit"},text:{padding:"6px 8px"},textPrimary:{color:g.palette.primary.main,"&:hover":{backgroundColor:Object(n.d)(g.palette.primary.main,g.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},textSecondary:{color:g.palette.secondary.main,"&:hover":{backgroundColor:Object(n.d)(g.palette.secondary.main,g.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},outlined:{padding:"5px 15px",border:"1px solid ".concat("light"===g.palette.type?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)"),"&$disabled":{border:"1px solid ".concat(g.palette.action.disabledBackground)}},outlinedPrimary:{color:g.palette.primary.main,border:"1px solid ".concat(Object(n.d)(g.palette.primary.main,.5)),"&:hover":{border:"1px solid ".concat(g.palette.primary.main),backgroundColor:Object(n.d)(g.palette.primary.main,g.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},outlinedSecondary:{color:g.palette.secondary.main,border:"1px solid ".concat(Object(n.d)(g.palette.secondary.main,.5)),"&:hover":{border:"1px solid ".concat(g.palette.secondary.main),backgroundColor:Object(n.d)(g.palette.secondary.main,g.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"&$disabled":{border:"1px solid ".concat(g.palette.action.disabled)}},contained:{color:g.palette.getContrastText(g.palette.grey[300]),backgroundColor:g.palette.grey[300],boxShadow:g.shadows[2],"&:hover":{backgroundColor:g.palette.grey.A100,boxShadow:g.shadows[4],"@media (hover: none)":{boxShadow:g.shadows[2],backgroundColor:g.palette.grey[300]},"&$disabled":{backgroundColor:g.palette.action.disabledBackground}},"&$focusVisible":{boxShadow:g.shadows[6]},"&:active":{boxShadow:g.shadows[8]},"&$disabled":{color:g.palette.action.disabled,boxShadow:g.shadows[0],backgroundColor:g.palette.action.disabledBackground}},containedPrimary:{color:g.palette.primary.contrastText,backgroundColor:g.palette.primary.main,"&:hover":{backgroundColor:g.palette.primary.dark,"@media (hover: none)":{backgroundColor:g.palette.primary.main}}},containedSecondary:{color:g.palette.secondary.contrastText,backgroundColor:g.palette.secondary.main,"&:hover":{backgroundColor:g.palette.secondary.dark,"@media (hover: none)":{backgroundColor:g.palette.secondary.main}}},disableElevation:{boxShadow:"none","&:hover":{boxShadow:"none"},"&$focusVisible":{boxShadow:"none"},"&:active":{boxShadow:"none"},"&$disabled":{boxShadow:"none"}},focusVisible:{},disabled:{},colorInherit:{color:"inherit",borderColor:"currentColor"},textSizeSmall:{padding:"4px 5px",fontSize:g.typography.pxToRem(13)},textSizeLarge:{padding:"8px 11px",fontSize:g.typography.pxToRem(15)},outlinedSizeSmall:{padding:"3px 9px",fontSize:g.typography.pxToRem(13)},outlinedSizeLarge:{padding:"7px 21px",fontSize:g.typography.pxToRem(15)},containedSizeSmall:{padding:"4px 10px",fontSize:g.typography.pxToRem(13)},containedSizeLarge:{padding:"8px 22px",fontSize:g.typography.pxToRem(15)},sizeSmall:{},sizeLarge:{},fullWidth:{width:"100%"},startIcon:{display:"inherit",marginRight:8,marginLeft:-4,"&$iconSizeSmall":{marginLeft:-2}},endIcon:{display:"inherit",marginRight:-4,marginLeft:8,"&$iconSizeSmall":{marginRight:-2}},iconSizeSmall:{"& > *:first-child":{fontSize:18}},iconSizeMedium:{"& > *:first-child":{fontSize:20}},iconSizeLarge:{"& > *:first-child":{fontSize:22}}}}),{name:"MuiButton"})(i)},function(g,I,e){"use strict";e.d(I,"c",(function(){return r})),e.d(I,"b",(function(){return o}));var t=e(5),C=e(16),Q=e(0),F=(e(4),e(14)),B=e(600),n=e(926),U=e(21),s=e(558),i=e(321),c=e(30),A=e(87),l=e(77),a={left:"right",right:"left",top:"down",bottom:"up"};function r(g){return-1!==["left","right"].indexOf(g)}function o(g,I){return"rtl"===g.direction&&r(I)?a[I]:I}var d={enter:A.b.enteringScreen,exit:A.b.leavingScreen},u=Q.forwardRef((function(g,I){var e=g.anchor,U=void 0===e?"left":e,A=g.BackdropProps,r=g.children,u=g.classes,y=g.className,b=g.elevation,Z=void 0===b?16:b,m=g.ModalProps,x=(m=void 0===m?{}:m).BackdropProps,R=Object(C.a)(m,["BackdropProps"]),S=g.onClose,G=g.open,L=void 0!==G&&G,V=g.PaperProps,h=void 0===V?{}:V,D=g.SlideProps,p=g.TransitionComponent,E=void 0===p?s.a:p,N=g.transitionDuration,W=void 0===N?d:N,f=g.variant,X=void 0===f?"temporary":f,J=Object(C.a)(g,["anchor","BackdropProps","children","classes","className","elevation","ModalProps","onClose","open","PaperProps","SlideProps","TransitionComponent","transitionDuration","variant"]),v=Object(l.a)(),k=Q.useRef(!1);Q.useEffect((function(){k.current=!0}),[]);var H=o(v,U),M=Q.createElement(i.a,Object(t.a)({elevation:"temporary"===X?Z:0,square:!0},h,{className:Object(F.default)(u.paper,u["paperAnchor".concat(Object(c.a)(H))],h.className,"temporary"!==X&&u["paperAnchorDocked".concat(Object(c.a)(H))])}),r);if("permanent"===X)return Q.createElement("div",Object(t.a)({className:Object(F.default)(u.root,u.docked,y),ref:I},J),M);var Y=Q.createElement(E,Object(t.a)({in:L,direction:a[H],timeout:W,appear:k.current},D),M);return"persistent"===X?Q.createElement("div",Object(t.a)({className:Object(F.default)(u.root,u.docked,y),ref:I},J),Y):Q.createElement(B.a,Object(t.a)({BackdropProps:Object(t.a)({},A,x,{transitionDuration:W}),BackdropComponent:n.a,className:Object(F.default)(u.root,u.modal,y),open:L,onClose:S,ref:I},J,R),Y)}));I.a=Object(U.a)((function(g){return{root:{},docked:{flex:"0 0 auto"},paper:{overflowY:"auto",display:"flex",flexDirection:"column",height:"100%",flex:"1 0 auto",zIndex:g.zIndex.drawer,WebkitOverflowScrolling:"touch",position:"fixed",top:0,outline:0},paperAnchorLeft:{left:0,right:"auto"},paperAnchorRight:{left:"auto",right:0},paperAnchorTop:{top:0,left:0,bottom:"auto",right:0,height:"auto",maxHeight:"100%"},paperAnchorBottom:{top:"auto",left:0,bottom:0,right:0,height:"auto",maxHeight:"100%"},paperAnchorDockedLeft:{borderRight:"1px solid ".concat(g.palette.divider)},paperAnchorDockedTop:{borderBottom:"1px solid ".concat(g.palette.divider)},paperAnchorDockedRight:{borderLeft:"1px solid ".concat(g.palette.divider)},paperAnchorDockedBottom:{borderTop:"1px solid ".concat(g.palette.divider)},modal:{}}}),{name:"MuiDrawer",flip:!1})(u)},function(g,I,e){var t=e(1426);function C(g,I){for(var e=0;e<I.length;e++){var C=I[e];C.enumerable=C.enumerable||!1,C.configurable=!0,"value"in C&&(C.writable=!0),Object.defineProperty(g,t(C.key),C)}}g.exports=function(g,I,e){return I&&C(g.prototype,I),e&&C(g,e),Object.defineProperty(g,"prototype",{writable:!1}),g},g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I){var e={}.toString;g.exports=function(g){return e.call(g).slice(8,-1)}},function(g,I,e){var t=e(618),C=e(50),Q=function(g){return"function"==typeof g?g:void 0};g.exports=function(g,I){return arguments.length<2?Q(t[g])||Q(C[g]):t[g]&&t[g][I]||C[g]&&C[g][I]}},function(g,I,e){var t=e(90),C=e(91),Q=e(383),F=e(495),B=Q("IE_PROTO"),n=Object.prototype;g.exports=F?Object.getPrototypeOf:function(g){return g=C(g),t(g,B)?g[B]:"function"==typeof g.constructor&&g instanceof g.constructor?g.constructor.prototype:g instanceof Object?n:null}},function(g,I,e){"use strict";e.r(I);var t=e(673);e.d(I,"default",(function(){return t.a}))},function(g,I,e){(function(){var g,t;g=e(287).Number,I.resolveLength=function(I,e,t){var C;if("number"===typeof I?C=I:"function"===typeof I?C=I.call(t,t):t&&"string"===typeof I?C=t[I]:e&&I instanceof g&&(C=I.decode(e)),isNaN(C))throw new Error("Not a fixed size");return C},t=function(g){var I,e;for(I in null==g&&(g={}),this.enumerable=!0,this.configurable=!0,g)e=g[I],this[I]=e},I.PropertyDescriptor=t}).call(this)},function(g,I,e){"use strict";function t(g){return(t="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"===typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g})(g)}e.d(I,"a",(function(){return t}))},function(g,I,e){"use strict";I.__esModule=!0,I.returnNode=I.relocateNode=I.getStyleForState=I.componentWillUnmount=I.componentDidUpdate=I.getSnapshotBeforeUpdate=I.componentDidMount=void 0;var t=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g},C=c(e(4)),Q=e(0),F=c(Q),B=e(186),n=e(1275),U=e(520),s=e(1276),i=e(1277);function c(g){return g&&g.__esModule?g:{default:g}}var A=I.componentDidMount=function(g){var I=g.node;return(0,g.relocateNode)(I)},l=I.getSnapshotBeforeUpdate=function(g){var I=g.node;return(0,g.returnNode)(I),null},a=I.componentDidUpdate=function(g,I){var e=g.getStyleForState,t=g.node,C=g.relocateNode,Q=g.props,F=g.setState,B=I[0];C(t),Q.children!==B.children&&F(e)},r=I.componentWillUnmount=function(g){var I=g.node;return(0,g.returnNode)(I)},o=I.getStyleForState=function(g){var I=g.props;return{style:(0,i.getRenderedStyles)(I.children,{isCompressed:(0,s.getCoalescedOption)(I,"isCompressed"),isMinified:(0,s.getCoalescedOption)(I,"isMinified"),isPrefixed:(0,s.getCoalescedOption)(I,"isPrefixed")})}},d=I.relocateNode=function(g,I){var e=I[0];"undefined"!==typeof document&&e&&(g.originalParent=e.parentNode,g.originalParent.removeChild(e),document.head.appendChild(e))},u=I.returnNode=function(g,I){var e=I[0];if("undefined"!==typeof document&&e)try{document.head.removeChild(e),g.originalParent.appendChild(e)}catch(t){}finally{g.node=null,g.originalParent=null}},y=function(g){function I(e){!function(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}(this,I);var t=function(g,I){if(!g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!I||"object"!==typeof I&&"function"!==typeof I?g:I}(this,g.call(this,e));return t.componentDidMount=(0,B.createMethod)(t,A),t.componentDidUpdate=(0,B.createMethod)(t,a),t[U.SUPPORTS_BEFORE_UPDATE_SNAPSHOT?"getSnapshotBeforeUpdate":"componentWillUpdate"]=(0,B.createMethod)(t,l),t.componentWillUnmount=(0,B.createMethod)(t,r),t.linkHref=null,t.node=null,t.originalParent=null,t.getCachedLinkHref=(0,n.createGetCachedLinkHref)(),t.getStyleForState=(0,B.createMethod)(t,o),t.relocateNode=(0,B.createMethod)(t,d),t.returnNode=(0,B.createMethod)(t,u),t.state=o({props:e}),t}return function(g,I){if("function"!==typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function, not "+typeof I);g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,enumerable:!1,writable:!0,configurable:!0}}),I&&(Object.setPrototypeOf?Object.setPrototypeOf(g,I):g.__proto__=I)}(I,g),I.prototype.render=function(){var g=this.props,I=(g.children,g.hasSourceMap,g.isCompressed,g.isPrefixed,function(g,I){var e={};for(var t in g)I.indexOf(t)>=0||Object.prototype.hasOwnProperty.call(g,t)&&(e[t]=g[t]);return e}(g,["children","hasSourceMap","isCompressed","isPrefixed"])),e=this.state.style;if((0,s.getCoalescedOption)(this.props,"hasSourceMap")){if((0,n.hasBlobSupport)())return F.default.createElement("link",t({},I,{href:this.getCachedLinkHref(e),ref:(0,B.createElementRef)(this,"node"),rel:"stylesheet"}));console.error("To support sourcemaps for react-style-tag you need Blob support, and the browser you are using does not currently support it. You should include a polyfill prior to the rendering of this component.")}return F.default.createElement("style",t({ref:(0,B.createElementRef)(this,"node")},I),e)},I}(Q.PureComponent);y.propTypes={children:C.default.string.isRequired,hasSourceMap:C.default.bool,id:C.default.string,isCompressed:C.default.bool,isMinified:C.default.bool,isPrefixed:C.default.bool},y.setGlobalOptions=s.setGlobalOptions,I.default=y},function(g,I,e){"use strict";function t(g){var I,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:166;function t(){for(var t=arguments.length,C=new Array(t),Q=0;Q<t;Q++)C[Q]=arguments[Q];var F=this,B=function(){g.apply(F,C)};clearTimeout(I),I=setTimeout(B,e)}return t.clear=function(){clearTimeout(I)},t}e.d(I,"a",(function(){return t}))},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M19 3h-4.18C14.4 1.84 13.3 1 12 1c-1.3 0-2.4.84-2.82 2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-7 0c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm2 14H7v-2h7v2zm3-4H7v-2h10v2zm0-4H7V7h10v2z"}),"Assignment");I.default=Q},function(g,I,e){"use strict";(function(g,t){function C(){return"[object process]"===Object.prototype.toString.call("undefined"!==typeof g?g:0)}function Q(g,I){return g.require(I)}function F(g){var I;try{I=Q(t,g)}catch(C){}try{var e=Q(t,"process").cwd;I=Q(t,e()+"/node_modules/"+g)}catch(C){}return I}e.d(I,"b",(function(){return C})),e.d(I,"a",(function(){return Q})),e.d(I,"c",(function(){return F}))}).call(this,e(92),e(397)(g))},function(g,I,e){"use strict";e.r(I),e.d(I,"createCombinedRef",(function(){return i})),e.d(I,"createComponentRef",(function(){return c})),e.d(I,"createElementRef",(function(){return A})),e.d(I,"createMethod",(function(){return l})),e.d(I,"createComponent",(function(){return a}));var t=e(0),C=e.n(t),Q=e(42),F=function(g){return g.setState=g.setState.bind(g)},B=function(g){return!!g&&g instanceof C.a.Component},n=function(g){return console.error("The instance provided for use with the "+g+" is not a valid React component instance.")},U=function(g){return function(I,e){return B(I)?function(t){return I[e]=g(t)}:n("ref")}};function s(g,I){var e={};for(var t in g)I.indexOf(t)>=0||Object.prototype.hasOwnProperty.call(g,t)&&(e[t]=g[t]);return e}var i=U((function(g){return{component:g,element:Object(Q.findDOMNode)(g)}})),c=U((function(g){return g})),A=U(Q.findDOMNode),l=function(g,I){for(var e=arguments.length,t=Array(e>2?e-2:0),C=2;C<e;C++)t[C-2]=arguments[C];return B(g)?F(g)&&function(){for(var e=arguments.length,C=Array(e),Q=0;Q<e;Q++)C[Q]=arguments[Q];return I.call(g,g,C,t)}:n("method")},a=function(g){var I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},e=I.getInitialState,t=I.isPure,Q=I.state,F=s(I,["getInitialState","isPure","state"]),B=t?C.a.PureComponent:C.a.Component;function n(I){var t=this;return B.call(this,I),this.state="function"===typeof e?l(this,e)():Q||null,Object.keys(F).forEach((function(g){t[g]="function"===typeof F[g]?l(t,F[g]):F[g]})),this.render=l(this,g),this}return n.prototype=Object.create(B.prototype),n.displayName=g.displayName||g.name||"ParmComponent",n.propTypes=g.propTypes,n.contextTypes=g.contextTypes,n.childContextTypes=g.childContextTypes,n.defaultProps=g.defaultProps,n}},,function(g,I,e){var t=e(57);g.exports=function(g,I){if(!t(g))return g;var e,C;if(I&&"function"==typeof(e=g.toString)&&!t(C=e.call(g)))return C;if("function"==typeof(e=g.valueOf)&&!t(C=e.call(g)))return C;if(!I&&"function"==typeof(e=g.toString)&&!t(C=e.call(g)))return C;throw TypeError("Can't convert object to primitive value")}},function(g,I){g.exports=!1},function(g,I,e){var t=e(76).f,C=e(90),Q=e(64)("toStringTag");g.exports=function(g,I,e){g&&!C(g=e?g:g.prototype,Q)&&t(g,Q,{configurable:!0,value:I})}},function(g,I){g.exports=function(g){return g&&g.__esModule?g:{default:g}},g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I,e){"use strict";e.r(I);I.default=function(g,I){}},,function(g,I,e){var t;!function(){"use strict";var e={}.hasOwnProperty;function C(){for(var g=[],I=0;I<arguments.length;I++){var t=arguments[I];if(t){var Q=typeof t;if("string"===Q||"number"===Q)g.push(t);else if(Array.isArray(t)&&t.length){var F=C.apply(null,t);F&&g.push(F)}else if("object"===Q)for(var B in t)e.call(t,B)&&t[B]&&g.push(B)}}return g.join(" ")}g.exports?(C.default=C,g.exports=C):void 0===(t=function(){return C}.apply(I,[]))||(g.exports=t)}()},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34a.9959.9959 0 00-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z"}),"Edit");I.default=Q},function(g,I,e){"use strict";var t=e(297),C=Object(t.a)();I.a=C},,,,,function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z"}),"ExpandLess");I.default=Q},function(g,I,e){"use strict";var t=e(840),C=e.n(t);function Q(g){var I=null,e=null,t=new Promise((function(g,t){I=g,e=t}));return g&&g.then((function(g){I&&I(g)}),(function(g){e&&e(g)})),{promise:t,resolve:function(g){I&&I(g)},reject:function(g){e&&e(g)},cancel:function(){I=null,e=null}}}var F=function(){return(F=Object.assign||function(g){for(var I,e=1,t=arguments.length;e<t;e++)for(var C in I=arguments[e])Object.prototype.hasOwnProperty.call(I,C)&&(g[C]=I[C]);return g}).apply(this,arguments)},B={key:function(){for(var g=[],I=0;I<arguments.length;I++)g[I]=arguments[I];return null},onlyResolvesLast:!0},n=function(){function g(g){this.config=g,this.debounceSingleton=null,this.debounceCache={}}return g.prototype._createDebouncedFunction=function(){var g=C()(this.config.func,this.config.wait,this.config.options);return this.config.options.onlyResolvesLast&&(g=function(g){var I=null;return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];I&&I();var C=g.apply(void 0,e),F=Q(C),B=F.promise,n=F.cancel;return I=n,B}}(g)),{func:g}},g.prototype.getDebouncedFunction=function(g){var I,e=(I=this.config.options).key.apply(I,g);return null===e||"undefined"===typeof e?(this.debounceSingleton||(this.debounceSingleton=this._createDebouncedFunction()),this.debounceSingleton):(this.debounceCache[e]||(this.debounceCache[e]=this._createDebouncedFunction()),this.debounceCache[e])},g}();I.a=function(g,I,e){var t=F({},B,e),C=new n({func:g,wait:I,options:t});return function(){for(var g=[],I=0;I<arguments.length;I++)g[I]=arguments[I];var e=C.getDebouncedFunction(g).func;return e.apply(void 0,g)}}},function(g,I,e){"use strict";function t(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}function C(g,I,e){return I&&t(g.prototype,I),e&&t(g,e),g}e.d(I,"a",(function(){return C}))},function(g,I,e){"use strict";function t(){for(var g=arguments.length,I=new Array(g),e=0;e<g;e++)I[e]=arguments[e];return I.reduce((function(g,I){return null==I?g:function(){for(var e=arguments.length,t=new Array(e),C=0;C<e;C++)t[C]=arguments[C];g.apply(this,t),I.apply(this,t)}}),(function(){}))}e.d(I,"a",(function(){return t}))},function(g,I,e){"use strict";e.d(I,"b",(function(){return Q}));var t=e(0),C=t.createContext();function Q(){return t.useContext(C)}I.a=C},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M12 8c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm8.94 3c-.46-4.17-3.77-7.48-7.94-7.94V1h-2v2.06C6.83 3.52 3.52 6.83 3.06 11H1v2h2.06c.46 4.17 3.77 7.48 7.94 7.94V23h2v-2.06c4.17-.46 7.48-3.77 7.94-7.94H23v-2h-2.06zM12 19c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z"}),"MyLocation");I.default=Q},,,,function(g,I,e){"use strict";e.d(I,"a",(function(){return Z}));var t=e(900),C=e(901);function Q(g){return g&&g.__esModule?g.default:g}var F;F=JSON.parse('{"categories":["Cc","Zs","Po","Sc","Ps","Pe","Sm","Pd","Nd","Lu","Sk","Pc","Ll","So","Lo","Pi","Cf","No","Pf","Lt","Lm","Mn","Me","Mc","Nl","Zl","Zp","Cs","Co"],"combiningClasses":["Not_Reordered","Above","Above_Right","Below","Attached_Above_Right","Attached_Below","Overlay","Iota_Subscript","Double_Below","Double_Above","Below_Right","Above_Left","CCC10","CCC11","CCC12","CCC13","CCC14","CCC15","CCC16","CCC17","CCC18","CCC19","CCC20","CCC21","CCC22","CCC23","CCC24","CCC25","CCC30","CCC31","CCC32","CCC27","CCC28","CCC29","CCC33","CCC34","CCC35","CCC36","Nukta","Virama","CCC84","CCC91","CCC103","CCC107","CCC118","CCC122","CCC129","CCC130","CCC132","Attached_Above","Below_Left","Left","Kana_Voicing","CCC26","Right"],"scripts":["Common","Latin","Bopomofo","Inherited","Greek","Coptic","Cyrillic","Armenian","Hebrew","Arabic","Syriac","Thaana","Nko","Samaritan","Mandaic","Devanagari","Bengali","Gurmukhi","Gujarati","Oriya","Tamil","Telugu","Kannada","Malayalam","Sinhala","Thai","Lao","Tibetan","Myanmar","Georgian","Hangul","Ethiopic","Cherokee","Canadian_Aboriginal","Ogham","Runic","Tagalog","Hanunoo","Buhid","Tagbanwa","Khmer","Mongolian","Limbu","Tai_Le","New_Tai_Lue","Buginese","Tai_Tham","Balinese","Sundanese","Batak","Lepcha","Ol_Chiki","Braille","Glagolitic","Tifinagh","Han","Hiragana","Katakana","Yi","Lisu","Vai","Bamum","Syloti_Nagri","Phags_Pa","Saurashtra","Kayah_Li","Rejang","Javanese","Cham","Tai_Viet","Meetei_Mayek","null","Linear_B","Lycian","Carian","Old_Italic","Gothic","Old_Permic","Ugaritic","Old_Persian","Deseret","Shavian","Osmanya","Osage","Elbasan","Caucasian_Albanian","Linear_A","Cypriot","Imperial_Aramaic","Palmyrene","Nabataean","Hatran","Phoenician","Lydian","Meroitic_Hieroglyphs","Meroitic_Cursive","Kharoshthi","Old_South_Arabian","Old_North_Arabian","Manichaean","Avestan","Inscriptional_Parthian","Inscriptional_Pahlavi","Psalter_Pahlavi","Old_Turkic","Old_Hungarian","Hanifi_Rohingya","Old_Sogdian","Sogdian","Elymaic","Brahmi","Kaithi","Sora_Sompeng","Chakma","Mahajani","Sharada","Khojki","Multani","Khudawadi","Grantha","Newa","Tirhuta","Siddham","Modi","Takri","Ahom","Dogra","Warang_Citi","Nandinagari","Zanabazar_Square","Soyombo","Pau_Cin_Hau","Bhaiksuki","Marchen","Masaram_Gondi","Gunjala_Gondi","Makasar","Cuneiform","Egyptian_Hieroglyphs","Anatolian_Hieroglyphs","Mro","Bassa_Vah","Pahawh_Hmong","Medefaidrin","Miao","Tangut","Nushu","Duployan","SignWriting","Nyiakeng_Puachue_Hmong","Wancho","Mende_Kikakui","Adlam"],"eaw":["N","Na","A","W","H","F"]}');var B=new C(t.toByteArray("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")),n=Math.log2||function(g){return Math.log(g)/Math.LN2},U=function(g){return n(g)+1|0},s=U(Q(F).categories.length-1),i=U(Q(F).combiningClasses.length-1),c=U(Q(F).scripts.length-1),A=U(Q(F).eaw.length-1),l=i+c+A+10,a=c+A+10,r=A+10,o=(1<<s)-1,d=(1<<i)-1,u=(1<<c)-1,y=(1<<A)-1;function b(g){var I=B.get(g);return Q(F).categories[I>>l&o]}var Z={getCategory:b,getCombiningClass:function(g){var I=B.get(g);return Q(F).combiningClasses[I>>a&d]},getScript:function(g){var I=B.get(g);return Q(F).scripts[I>>r&u]},getEastAsianWidth:function(g){var I=B.get(g);return Q(F).eaw[I>>10&y]},getNumericValue:function(g){var I=B.get(g),e=1023&I;if(0===e)return null;if(e<=50)return e-1;if(e<480)return((e>>4)-12)/(1+(15&e));if(e<768){I=(e>>5)-14;for(var t=2+(31&e);t>0;)I*=10,t--;return I}I=(e>>2)-191;for(var C=1+(3&e);C>0;)I*=60,C--;return I},isAlphabetic:function(g){var I=b(g);return"Lu"===I||"Ll"===I||"Lt"===I||"Lm"===I||"Lo"===I||"Nl"===I},isDigit:function(g){return"Nd"===b(g)},isPunctuation:function(g){var I=b(g);return"Pc"===I||"Pd"===I||"Pe"===I||"Pf"===I||"Pi"===I||"Po"===I||"Ps"===I},isLowerCase:function(g){return"Ll"===b(g)},isUpperCase:function(g){return"Lu"===b(g)},isTitleCase:function(g){return"Lt"===b(g)},isWhiteSpace:function(g){var I=b(g);return"Zs"===I||"Zl"===I||"Zp"===I},isBaseForm:function(g){var I=b(g);return"Nd"===I||"No"===I||"Nl"===I||"Lu"===I||"Ll"===I||"Lt"===I||"Lm"===I||"Lo"===I||"Me"===I||"Mc"===I},isMark:function(g){var I=b(g);return"Mn"===I||"Me"===I||"Mc"===I}}},,,,,,function(g,I,e){"use strict";var t=e(41);g.exports=function(g,I){var e=[][g];return!!e&&t((function(){e.call(null,I||function(){throw 1},1)}))}},function(g,I,e){"use strict";var t=e(22),C=e(50),Q=e(68),F=e(506),B=e(70),n=e(496),U=e(233),s=e(228),i=e(135),c=e(69),A=e(635),l=e(651),a=e(188),r=e(90),o=e(334),d=e(57),u=e(230),y=e(277),b=e(250).f,Z=e(652),m=e(118).forEach,x=e(278),R=e(76),S=e(121),G=e(146),L=e(388),V=G.get,h=G.set,D=R.f,p=S.f,E=Math.round,N=C.RangeError,W=n.ArrayBuffer,f=n.DataView,X=B.NATIVE_ARRAY_BUFFER_VIEWS,J=B.TYPED_ARRAY_TAG,v=B.TypedArray,k=B.TypedArrayPrototype,H=B.aTypedArrayConstructor,M=B.isTypedArray,Y=function(g,I){for(var e=0,t=I.length,C=new(H(g))(t);t>e;)C[e]=I[e++];return C},w=function(g,I){D(g,I,{get:function(){return V(this)[I]}})},T=function(g){var I;return g instanceof W||"ArrayBuffer"==(I=o(g))||"SharedArrayBuffer"==I},z=function(g,I){return M(g)&&"symbol"!=typeof I&&I in g&&String(+I)==String(I)},O=function(g,I){return z(g,I=a(I,!0))?s(2,g[I]):p(g,I)},K=function(g,I,e){return!(z(g,I=a(I,!0))&&d(e)&&r(e,"value"))||r(e,"get")||r(e,"set")||e.configurable||r(e,"writable")&&!e.writable||r(e,"enumerable")&&!e.enumerable?D(g,I,e):(g[I]=e.value,g)};Q?(X||(S.f=O,R.f=K,w(k,"buffer"),w(k,"byteOffset"),w(k,"byteLength"),w(k,"length")),t({target:"Object",stat:!0,forced:!X},{getOwnPropertyDescriptor:O,defineProperty:K}),g.exports=function(g,I,e){var Q=g.match(/\d+$/)[0]/8,B=g+(e?"Clamped":"")+"Array",n="get"+g,s="set"+g,a=C[B],r=a,o=r&&r.prototype,R={},S=function(g,I){D(g,I,{get:function(){return function(g,I){var e=V(g);return e.view[n](I*Q+e.byteOffset,!0)}(this,I)},set:function(g){return function(g,I,t){var C=V(g);e&&(t=(t=E(t))<0?0:t>255?255:255&t),C.view[s](I*Q+C.byteOffset,t,!0)}(this,I,g)},enumerable:!0})};X?F&&(r=I((function(g,I,e,t){return U(g,r,B),L(d(I)?T(I)?void 0!==t?new a(I,l(e,Q),t):void 0!==e?new a(I,l(e,Q)):new a(I):M(I)?Y(r,I):Z.call(r,I):new a(A(I)),g,r)})),y&&y(r,v),m(b(a),(function(g){g in r||i(r,g,a[g])})),r.prototype=o):(r=I((function(g,I,e,t){U(g,r,B);var C,F,n,s=0,i=0;if(d(I)){if(!T(I))return M(I)?Y(r,I):Z.call(r,I);C=I,i=l(e,Q);var a=I.byteLength;if(void 0===t){if(a%Q)throw N("Wrong length");if((F=a-i)<0)throw N("Wrong length")}else if((F=c(t)*Q)+i>a)throw N("Wrong length");n=F/Q}else n=A(I),C=new W(F=n*Q);for(h(g,{buffer:C,byteOffset:i,byteLength:F,length:n,view:new f(C)});s<n;)S(g,s++)})),y&&y(r,v),o=r.prototype=u(k)),o.constructor!==r&&i(o,"constructor",r),J&&i(o,J,B),R[B]=r,t({global:!0,forced:r!=a,sham:!X},R),"BYTES_PER_ELEMENT"in r||i(r,"BYTES_PER_ELEMENT",Q),"BYTES_PER_ELEMENT"in o||i(o,"BYTES_PER_ELEMENT",Q),x(B)}):g.exports=function(){}},,function(g,I,e){"use strict";function t(g){return(t="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"===typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g})(g)}function C(){return(C=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}function Q(g,I){var e=Object.keys(g);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(g);I&&(t=t.filter((function(I){return Object.getOwnPropertyDescriptor(g,I).enumerable}))),e.push.apply(e,t)}return e}function F(g){for(var I=1;I<arguments.length;I++){var e=null!=arguments[I]?arguments[I]:{};I%2?Q(e,!0).forEach((function(I){r(g,I,e[I])})):Object.getOwnPropertyDescriptors?Object.defineProperties(g,Object.getOwnPropertyDescriptors(e)):Q(e).forEach((function(I){Object.defineProperty(g,I,Object.getOwnPropertyDescriptor(e,I))}))}return g}function B(g,I){if(null==g)return{};var e,t,C=function(g,I){if(null==g)return{};var e,t,C={},Q=Object.keys(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||(C[e]=g[e]);return C}(g,I);if(Object.getOwnPropertySymbols){var Q=Object.getOwnPropertySymbols(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||Object.prototype.propertyIsEnumerable.call(g,e)&&(C[e]=g[e])}return C}function n(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}function U(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}function s(g,I,e){return I&&U(g.prototype,I),e&&U(g,e),g}function i(g,I){return!I||"object"!==t(I)&&"function"!==typeof I?A(g):I}function c(g){return(c=Object.setPrototypeOf?Object.getPrototypeOf:function(g){return g.__proto__||Object.getPrototypeOf(g)})(g)}function A(g){if(void 0===g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return g}function l(g,I){if("function"!==typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function");g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,writable:!0,configurable:!0}}),I&&a(g,I)}function a(g,I){return(a=Object.setPrototypeOf||function(g,I){return g.__proto__=I,g})(g,I)}function r(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}var o=e(0),d=(e(4),e(1332)),u=e(708);function y(g){for(var I="",e=0;e<g.length;e++){var t=g.charCodeAt(e);t<128?I+=String.fromCharCode(t):t<2048?(I+=String.fromCharCode(192|t>>6),I+=String.fromCharCode(128|63&t)):t<55296||t>=57344?(I+=String.fromCharCode(224|t>>12),I+=String.fromCharCode(128|t>>6&63),I+=String.fromCharCode(128|63&t)):(e++,t=65536+((1023&t)<<10|1023&g.charCodeAt(e)),I+=String.fromCharCode(240|t>>18),I+=String.fromCharCode(128|t>>12&63),I+=String.fromCharCode(128|t>>6&63),I+=String.fromCharCode(128|63&t))}return I}var b={size:128,level:"L",bgColor:"#FFFFFF",fgColor:"#000000",includeMargin:!1};function Z(g){var I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,e=[];return g.forEach((function(g,t){var C=null;g.forEach((function(Q,F){if(!Q&&null!==C)return e.push("M".concat(C+I," ").concat(t+I,"h").concat(F-C,"v1H").concat(C+I,"z")),void(C=null);if(F!==g.length-1)Q&&null===C&&(C=F);else{if(!Q)return;null===C?e.push("M".concat(F+I,",").concat(t+I," h1v1H").concat(F+I,"z")):e.push("M".concat(C+I,",").concat(t+I," h").concat(F+1-C,"v1H").concat(C+I,"z"))}}))})),e.join("")}function m(g,I){return g.slice().map((function(g,e){return e<I.y||e>=I.y+I.h?g:g.map((function(g,e){return(e<I.x||e>=I.x+I.w)&&g}))}))}function x(g,I){var e=g.imageSettings,t=g.size,C=g.includeMargin;if(null==e)return null;var Q=C?4:0,F=I.length+2*Q,B=Math.floor(.1*t),n=F/t,U=(e.width||B)*n,s=(e.height||B)*n,i=null==e.x?I.length/2-U/2:e.x*n,c=null==e.y?I.length/2-s/2:e.y*n,A=null;if(e.excavate){var l=Math.floor(i),a=Math.floor(c);A={x:l,y:a,w:Math.ceil(U+i-l),h:Math.ceil(s+c-a)}}return{x:i,y:c,h:s,w:U,excavation:A}}var R=function(){try{(new Path2D).addPath(new Path2D)}catch(g){return!1}return!0}(),S=function(g){function I(){var g,e;n(this,I);for(var t=arguments.length,C=new Array(t),Q=0;Q<t;Q++)C[Q]=arguments[Q];return r(A(e=i(this,(g=c(I)).call.apply(g,[this].concat(C)))),"_canvas",void 0),r(A(e),"_image",void 0),r(A(e),"state",{imgLoaded:!1}),r(A(e),"handleImageLoad",(function(){e.setState({imgLoaded:!0})})),e}return l(I,g),s(I,[{key:"componentDidMount",value:function(){this._image&&this._image.complete&&this.handleImageLoad(),this.update()}},{key:"componentWillReceiveProps",value:function(g){var I,e;(null===(I=this.props.imageSettings)||void 0===I?void 0:I.src)!==(null===(e=g.imageSettings)||void 0===e?void 0:e.src)&&this.setState({imgLoaded:!1})}},{key:"componentDidUpdate",value:function(){this.update()}},{key:"update",value:function(){var g=this.props,I=g.value,e=g.size,t=g.level,C=g.bgColor,Q=g.fgColor,F=g.includeMargin,B=g.imageSettings,n=new d(-1,u[t]);if(n.addData(y(I)),n.make(),null!=this._canvas){var U=this._canvas,s=U.getContext("2d");if(!s)return;var i=n.modules;if(null===i)return;var c=F?4:0,A=i.length+2*c,l=x(this.props,i);null!=B&&null!=l&&null!=l.excavation&&(i=m(i,l.excavation));var a=window.devicePixelRatio||1;U.height=U.width=e*a;var r=e/A*a;s.scale(r,r),s.fillStyle=C,s.fillRect(0,0,A,A),s.fillStyle=Q,R?s.fill(new Path2D(Z(i,c))):i.forEach((function(g,I){g.forEach((function(g,e){g&&s.fillRect(e+c,I+c,1,1)}))})),this.state.imgLoaded&&this._image&&null!=l&&s.drawImage(this._image,l.x+c,l.y+c,l.w,l.h)}}},{key:"render",value:function(){var g=this,I=this.props,e=(I.value,I.size),t=(I.level,I.bgColor,I.fgColor,I.style),Q=(I.includeMargin,I.imageSettings),n=B(I,["value","size","level","bgColor","fgColor","style","includeMargin","imageSettings"]),U=F({height:e,width:e},t),s=null,i=Q&&Q.src;return null!=Q&&null!=i&&(s=o.createElement("img",{src:i,style:{display:"none"},onLoad:this.handleImageLoad,ref:function(I){return g._image=I}})),o.createElement(o.Fragment,null,o.createElement("canvas",C({style:U,height:e,width:e,ref:function(I){return g._canvas=I}},n)),s)}}]),I}(o.PureComponent);r(S,"defaultProps",b);var G=function(g){function I(){return n(this,I),i(this,c(I).apply(this,arguments))}return l(I,g),s(I,[{key:"render",value:function(){var g=this.props,I=g.value,e=g.size,t=g.level,Q=g.bgColor,F=g.fgColor,n=g.includeMargin,U=g.imageSettings,s=B(g,["value","size","level","bgColor","fgColor","includeMargin","imageSettings"]),i=new d(-1,u[t]);i.addData(y(I)),i.make();var c=i.modules;if(null===c)return null;var A=n?4:0,l=c.length+2*A,a=x(this.props,c),r=null;null!=U&&null!=a&&(null!=a.excavation&&(c=m(c,a.excavation)),r=o.createElement("image",{xlinkHref:U.src,height:a.h,width:a.w,x:a.x+A,y:a.y+A,preserveAspectRatio:"none"}));var b=Z(c,A);return o.createElement("svg",C({shapeRendering:"crispEdges",height:e,width:e,viewBox:"0 0 ".concat(l," ").concat(l)},s),o.createElement("path",{fill:Q,d:"M0,0 h".concat(l,"v").concat(l,"H0z")}),o.createElement("path",{fill:F,d:b}),r)}}]),I}(o.PureComponent);r(G,"defaultProps",b);var L=function(g){var I=g.renderAs,e=B(g,["renderAs"]),t="svg"===I?G:S;return o.createElement(t,e)};L.defaultProps=F({renderAs:"canvas"},b),g.exports=L},function(g,I,e){"use strict";g.exports=function(g,I,e,t,C,Q,F,B){if(!g){var n;if(void 0===I)n=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var U=[e,t,C,Q,F,B],s=0;(n=new Error(I.replace(/%s/g,(function(){return U[s++]})))).name="Invariant Violation"}throw n.framesToPop=1,n}}},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0}),I.StickyContainer=I.Sticky=void 0;var t=Q(e(1260)),C=Q(e(1261));function Q(g){return g&&g.__esModule?g:{default:g}}I.Sticky=t.default,I.StickyContainer=C.default,I.default=t.default},function(g,I,e){var t=e(1372)();g.exports=t;try{regeneratorRuntime=t}catch(C){"object"===typeof globalThis?globalThis.regeneratorRuntime=t:Function("r","regeneratorRuntime = r")(t)}},,,,,,function(g,I){g.exports=function(g,I){return{enumerable:!(1&g),configurable:!(2&g),writable:!(4&g),value:I}}},function(g,I,e){var t=e(162),C=Math.max,Q=Math.min;g.exports=function(g,I){var e=t(g);return e<0?C(e+I,0):Q(e,I)}},function(g,I,e){var t,C=e(60),Q=e(621),F=e(486),B=e(326),n=e(622),U=e(481),s=e(383),i=s("IE_PROTO"),c=function(){},A=function(g){return"<script>"+g+"<\/script>"},l=function(){try{t=document.domain&&new ActiveXObject("htmlfile")}catch(I){}l=t?function(g){g.write(A("")),g.close();var I=g.parentWindow.Object;return g=null,I}(t):function(){var g,I=U("iframe");return I.style.display="none",n.appendChild(I),I.src=String("javascript:"),(g=I.contentWindow.document).open(),g.write(A("document.F=Object")),g.close(),g.F}();for(var g=F.length;g--;)delete l.prototype[F[g]];return l()};B[i]=!0,g.exports=Object.create||function(g,I){var e;return null!==g?(c.prototype=C(g),e=new c,c.prototype=null,e[i]=g):e=l(),void 0===I?e:Q(e,I)}},function(g,I,e){var t=e(163);g.exports=function(g,I,e){if(t(g),void 0===I)return g;switch(e){case 0:return function(){return g.call(I)};case 1:return function(e){return g.call(I,e)};case 2:return function(e,t){return g.call(I,e,t)};case 3:return function(e,t,C){return g.call(I,e,t,C)}}return function(){return g.apply(I,arguments)}}},function(g,I,e){var t=e(64),C=e(230),Q=e(76),F=t("unscopables"),B=Array.prototype;void 0==B[F]&&Q.f(B,F,{configurable:!0,value:C(null)}),g.exports=function(g){B[F][g]=!0}},function(g,I){g.exports=function(g,I,e){if(!(g instanceof I))throw TypeError("Incorrect "+(e?e+" ":"")+"invocation");return g}},function(g,I,e){var t=e(60),C=e(163),Q=e(64)("species");g.exports=function(g,I){var e,F=t(g).constructor;return void 0===F||void 0==(e=t(F)[Q])?I:C(e)}},function(g,I,e){"use strict";e.r(I);var t=e(247);e.d(I,"default",(function(){return t.a}))},function(g,I,e){"use strict";var t=e(37).default,C=e(43).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(104)),B=t(e(551)),n=t(e(291)),U=Q.complement(Q.isNil),s=function(g,I){return function(e){return function(t){var C=t._yogaNode;if(!Q.isNil(e)&&C){var s,i,c=U(I),A="set"+(0,B.default)(g),l=A+"Auto",a=A+"Percent",r=(0,n.default)(e);if(r&&!C[a])throw new Error("You can't pass percentage values to "+g+" property");if(r)if(c)null===(s=C[a])||void 0===s||s.call(C,I,r.value);else null===(i=C[a])||void 0===i||i.call(C,r.value);else if("auto"===e){var o;if(c)null===(o=C[l])||void 0===o||o.call(C,I);else if("flexBasis"===g)C.setFlexBasis(F.default.UNIT_AUTO);else{var d;null===(d=C[l])||void 0===d||d.call(C)}}else if(c){var u;null===(u=C[A])||void 0===u||u.call(C,I,e)}else{var y;null===(y=C[A])||void 0===y||y.call(C,e)}}return t}}};I.default=s},function(g,I,e){"use strict";(function(g){e.d(I,"b",(function(){return F}));var t=e(167);function C(g){return(C="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"===typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g})(g)}function Q(g){var I;try{"undefined"===typeof(I=JSON.parse(g))&&(I=g),"true"===I&&(I=!0),"false"===I&&(I=!1),parseFloat(I)===I&&"object"!==C(I)&&(I=parseFloat(I))}catch(e){I=g}return I}var F="object"===("undefined"===typeof self?"undefined":C(self))&&self.self===self&&self||"object"===("undefined"===typeof g?"undefined":C(g))&&g.global===g&&g||void 0,B=function(){try{if("undefined"===typeof localStorage||"undefined"===typeof JSON)return!1;localStorage.setItem("_t_","1"),localStorage.removeItem("_t_")}catch(g){return!1}return!0}(),n=Object(t.b)();function U(g){return{cookie:Q(Object(t.a)(g)),localStorage:Q(localStorage.getItem(g)),global:F[g]||null}}function s(g){return"string"===typeof g?g:g.storage}function i(g){return B&&(!g||"localStorage"===g)}function c(g){return n&&(!g||"cookie"===g)}var A={getItem:function(g){var I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!g)return null;var e=s(I);if("all"===e)return U(g);if(i(e)){var C=localStorage.getItem(g);if(C||"localStorage"===e)return Q(C)}if(c(e)){var B=Object(t.a)(g);if(B||"cookie"===e)return Q(B)}return F[g]||null},setItem:function(g,I){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!g||!I)return!1;var C=s(e),B=JSON.stringify(I);if(i(C)){var n=Q(localStorage.getItem(g));return localStorage.setItem(g,B),{value:I,oldValue:n,location:"localStorage"}}if(c(C)){var U=Q(Object(t.a)(g));return Object(t.d)(g,B),{value:I,oldValue:U,location:"cookie"}}var A=F[g];return F[g]=I,{value:I,oldValue:A,location:"global"}},removeItem:function(g){var I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!g)return!1;var e=s(I);return i(e)?(localStorage.removeItem(g),"localStorage"):c(e)?(Object(t.c)(g),"cookie"):(F[g]=void 0,"global")}};I.a=A}).call(this,e(67))},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"}),"MoreHoriz");I.default=Q},function(g,I,e){"use strict";var t=e(556);I.a=function(g,I){return I?Object(t.a)(g,I,{clone:!1}):g}},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9zm-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8H12z"}),"History");I.default=Q},function(g,I,e){var t;g.exports=(t=e(0),function(g){var I={};function e(t){if(I[t])return I[t].exports;var C=I[t]={i:t,l:!1,exports:{}};return g[t].call(C.exports,C,C.exports,e),C.l=!0,C.exports}return e.m=g,e.c=I,e.d=function(g,I,t){e.o(g,I)||Object.defineProperty(g,I,{enumerable:!0,get:t})},e.r=function(g){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(g,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(g,"__esModule",{value:!0})},e.t=function(g,I){if(1&I&&(g=e(g)),8&I)return g;if(4&I&&"object"==typeof g&&g&&g.__esModule)return g;var t=Object.create(null);if(e.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:g}),2&I&&"string"!=typeof g)for(var C in g)e.d(t,C,function(I){return g[I]}.bind(null,C));return t},e.n=function(g){var I=g&&g.__esModule?function(){return g.default}:function(){return g};return e.d(I,"a",I),I},e.o=function(g,I){return Object.prototype.hasOwnProperty.call(g,I)},e.p="",e(e.s=4)}([function(g,I,e){g.exports=e(2)()},function(g,I){g.exports=t},function(g,I,e){"use strict";var t=e(3);function C(){}function Q(){}Q.resetWarningCache=C,g.exports=function(){function g(g,I,e,C,Q,F){if(F!==t){var B=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw B.name="Invariant Violation",B}}function I(){return g}g.isRequired=g;var e={array:g,bool:g,func:g,number:g,object:g,string:g,symbol:g,any:g,arrayOf:I,element:g,elementType:g,instanceOf:I,node:g,objectOf:I,oneOf:I,oneOfType:I,shape:I,exact:I,checkPropTypes:Q,resetWarningCache:C};return e.PropTypes=e,e}},function(g,I,e){"use strict";g.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(g,I,e){"use strict";e.r(I);var t=e(1),C=e.n(t),Q=e(0),F=e.n(Q),B=function(g){return 0!==g};function n(g){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"==typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g})(g)}function U(){return(U=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}function s(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}function i(g,I){return(i=Object.setPrototypeOf||function(g,I){return g.__proto__=I,g})(g,I)}function c(g,I){return!I||"object"!==n(I)&&"function"!=typeof I?A(g):I}function A(g){if(void 0===g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return g}function l(g){return(l=Object.setPrototypeOf?Object.getPrototypeOf:function(g){return g.__proto__||Object.getPrototypeOf(g)})(g)}function a(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}var r=function(g){!function(g,I){if("function"!=typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function");g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,writable:!0,configurable:!0}}),I&&i(g,I)}(Q,g);var I,e,t=function(g){var I=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(g){return!1}}();return function(){var e,t=l(g);if(I){var C=l(this).constructor;e=Reflect.construct(t,arguments,C)}else e=t.apply(this,arguments);return c(this,e)}}(Q);function Q(g){var I;return function(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}(this,Q),a(A(I=t.call(this,g)),"continueOpenCollapsible",(function(){var g=A(I).innerRef;I.setState({height:g.scrollHeight,transition:"height ".concat(I.props.transitionTime,"ms ").concat(I.props.easing),isClosed:!1,hasBeenOpened:!0,inTransition:B(g.scrollHeight),shouldOpenOnNextCycle:!1})})),a(A(I),"handleTriggerClick",(function(g){I.props.triggerDisabled||I.state.inTransition||(g.preventDefault(),I.props.handleTriggerClick?I.props.handleTriggerClick(I.props.accordionPosition):!0===I.state.isClosed?(I.openCollapsible(),I.props.onOpening(),I.props.onTriggerOpening()):(I.closeCollapsible(),I.props.onClosing(),I.props.onTriggerClosing()))})),a(A(I),"handleTransitionEnd",(function(g){g.target===I.innerRef&&(I.state.isClosed?(I.setState({inTransition:!1}),I.props.onClose()):(I.setState({height:"auto",overflow:I.props.overflowWhenOpen,inTransition:!1}),I.props.onOpen()))})),a(A(I),"setInnerRef",(function(g){return I.innerRef=g})),I.timeout=void 0,I.contentId="collapsible-content-".concat(Date.now()),I.triggerId=g.triggerElementProps.id||"collapsible-trigger-".concat(Date.now()),g.open?I.state={isClosed:!1,shouldSwitchAutoOnNextCycle:!1,height:"auto",transition:"none",hasBeenOpened:!0,overflow:g.overflowWhenOpen,inTransition:!1}:I.state={isClosed:!0,shouldSwitchAutoOnNextCycle:!1,height:0,transition:"height ".concat(g.transitionTime,"ms ").concat(g.easing),hasBeenOpened:!1,overflow:"hidden",inTransition:!1},I}return I=Q,(e=[{key:"componentDidUpdate",value:function(g,I){var e=this;this.state.shouldOpenOnNextCycle&&this.continueOpenCollapsible(),"auto"!==I.height&&0!==I.height||!0!==this.state.shouldSwitchAutoOnNextCycle||(window.clearTimeout(this.timeout),this.timeout=window.setTimeout((function(){e.setState({height:0,overflow:"hidden",isClosed:!0,shouldSwitchAutoOnNextCycle:!1})}),50)),g.open!==this.props.open&&(!0===this.props.open?(this.openCollapsible(),this.props.onOpening()):(this.closeCollapsible(),this.props.onClosing()))}},{key:"componentWillUnmount",value:function(){window.clearTimeout(this.timeout)}},{key:"closeCollapsible",value:function(){var g=this.innerRef;this.setState({shouldSwitchAutoOnNextCycle:!0,height:g.scrollHeight,transition:"height ".concat(this.props.transitionCloseTime?this.props.transitionCloseTime:this.props.transitionTime,"ms ").concat(this.props.easing),inTransition:B(g.scrollHeight)})}},{key:"openCollapsible",value:function(){this.setState({inTransition:B(this.innerRef.scrollHeight),shouldOpenOnNextCycle:!0})}},{key:"renderNonClickableTriggerElement",value:function(){return this.props.triggerSibling&&"string"==typeof this.props.triggerSibling?C.a.createElement("span",{className:"".concat(this.props.classParentString,"__trigger-sibling")},this.props.triggerSibling):this.props.triggerSibling&&"function"==typeof this.props.triggerSibling?this.props.triggerSibling():this.props.triggerSibling?C.a.createElement(this.props.triggerSibling,null):null}},{key:"render",value:function(){var g=this,I={height:this.state.height,WebkitTransition:this.state.transition,msTransition:this.state.transition,transition:this.state.transition,overflow:this.state.overflow},e=this.state.isClosed?"is-closed":"is-open",t=this.props.triggerDisabled?"is-disabled":"",Q=!1===this.state.isClosed&&void 0!==this.props.triggerWhenOpen?this.props.triggerWhenOpen:this.props.trigger,F=this.props.contentContainerTagName,B=this.props.triggerTagName,n=this.props.lazyRender&&!this.state.hasBeenOpened&&this.state.isClosed&&!this.state.inTransition?null:this.props.children,s=this.props,i=s.classParentString,c=s.contentOuterClassName,A=s.contentInnerClassName,l="".concat(i,"__trigger ").concat(e," ").concat(t," ").concat(this.state.isClosed?this.props.triggerClassName:this.props.triggerOpenedClassName),a="".concat(i," ").concat(this.state.isClosed?this.props.className:this.props.openedClassName),r="".concat(i,"__contentOuter ").concat(c),o="".concat(i,"__contentInner ").concat(A);return C.a.createElement(F,U({className:a.trim()},this.props.containerElementProps),C.a.createElement(B,U({id:this.triggerId,className:l.trim(),onClick:this.handleTriggerClick,style:this.props.triggerStyle&&this.props.triggerStyle,onKeyPress:function(I){var e=I.key;(" "===e&&"button"!==g.props.triggerTagName.toLowerCase()||"Enter"===e)&&g.handleTriggerClick(I)},tabIndex:this.props.tabIndex&&this.props.tabIndex,"aria-expanded":!this.state.isClosed,"aria-disabled":this.props.triggerDisabled,"aria-controls":this.contentId,role:"button"},this.props.triggerElementProps),Q),this.renderNonClickableTriggerElement(),C.a.createElement("div",{id:this.contentId,className:r.trim(),style:I,onTransitionEnd:this.handleTransitionEnd,ref:this.setInnerRef,hidden:this.props.contentHiddenWhenClosed&&this.state.isClosed&&!this.state.inTransition,role:"region","aria-labelledby":this.triggerId},C.a.createElement("div",{className:o.trim()},n)))}}])&&s(I.prototype,e),Q}(t.Component);r.propTypes={transitionTime:F.a.number,transitionCloseTime:F.a.number,triggerTagName:F.a.string,easing:F.a.string,open:F.a.bool,containerElementProps:F.a.object,triggerElementProps:F.a.object,classParentString:F.a.string,className:F.a.string,openedClassName:F.a.string,triggerStyle:F.a.object,triggerClassName:F.a.string,triggerOpenedClassName:F.a.string,contentOuterClassName:F.a.string,contentInnerClassName:F.a.string,accordionPosition:F.a.oneOfType([F.a.string,F.a.number]),handleTriggerClick:F.a.func,onOpen:F.a.func,onClose:F.a.func,onOpening:F.a.func,onClosing:F.a.func,onTriggerOpening:F.a.func,onTriggerClosing:F.a.func,trigger:F.a.oneOfType([F.a.string,F.a.element]),triggerWhenOpen:F.a.oneOfType([F.a.string,F.a.element]),triggerDisabled:F.a.bool,lazyRender:F.a.bool,overflowWhenOpen:F.a.oneOf(["hidden","visible","auto","scroll","inherit","initial","unset"]),contentHiddenWhenClosed:F.a.bool,triggerSibling:F.a.oneOfType([F.a.element,F.a.func]),tabIndex:F.a.number,contentContainerTagName:F.a.string,children:F.a.oneOfType([F.a.string,F.a.element])},r.defaultProps={transitionTime:400,transitionCloseTime:null,triggerTagName:"span",easing:"linear",open:!1,classParentString:"Collapsible",triggerDisabled:!1,lazyRender:!1,overflowWhenOpen:"hidden",contentHiddenWhenClosed:!1,openedClassName:"",triggerStyle:null,triggerClassName:"",triggerOpenedClassName:"",contentOuterClassName:"",contentInnerClassName:"",className:"",triggerSibling:null,onOpen:function(){},onClose:function(){},onOpening:function(){},onClosing:function(){},onTriggerOpening:function(){},onTriggerClosing:function(){},tabIndex:null,contentContainerTagName:"div",triggerElementProps:{}},I.default=r}]))},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M7 10l5 5 5-5z"}),"ArrowDropDown");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zm2.46-7.12l1.41-1.41L12 12.59l2.12-2.12 1.41 1.41L13.41 14l2.12 2.12-1.41 1.41L12 15.41l-2.12 2.12-1.41-1.41L10.59 14l-2.13-2.12zM15.5 4l-1-1h-5l-1 1H5v2h14V4z"}),"DeleteForever");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"}),"Visibility");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement(C.default.Fragment,null,C.default.createElement("path",{fill:"none",d:"m0 0h24v24H0z"}),C.default.createElement("path",{d:"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78l3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z"})),"VisibilityOff");I.default=Q},function(g,I,e){"use strict";function t(g){if(void 0===g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return g}e.d(I,"a",(function(){return t}))},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(4),e(14)),B=e(21),n=e(30),U=Q.forwardRef((function(g,I){var e=g.children,B=g.classes,U=g.className,s=g.color,i=void 0===s?"inherit":s,c=g.component,A=void 0===c?"svg":c,l=g.fontSize,a=void 0===l?"default":l,r=g.htmlColor,o=g.titleAccess,d=g.viewBox,u=void 0===d?"0 0 24 24":d,y=Object(C.a)(g,["children","classes","className","color","component","fontSize","htmlColor","titleAccess","viewBox"]);return Q.createElement(A,Object(t.a)({className:Object(F.default)(B.root,U,"inherit"!==i&&B["color".concat(Object(n.a)(i))],"default"!==a&&B["fontSize".concat(Object(n.a)(a))]),focusable:"false",viewBox:u,color:r,"aria-hidden":!o||void 0,role:o?"img":void 0,ref:I},y),e,o?Q.createElement("title",null,o):null)}));U.muiName="SvgIcon",I.a=Object(B.a)((function(g){return{root:{userSelect:"none",width:"1em",height:"1em",display:"inline-block",fill:"currentColor",flexShrink:0,fontSize:g.typography.pxToRem(24),transition:g.transitions.create("fill",{duration:g.transitions.duration.shorter})},colorPrimary:{color:g.palette.primary.main},colorSecondary:{color:g.palette.secondary.main},colorAction:{color:g.palette.action.active},colorError:{color:g.palette.error.main},colorDisabled:{color:g.palette.action.disabled},fontSizeInherit:{fontSize:"inherit"},fontSizeSmall:{fontSize:g.typography.pxToRem(20)},fontSizeLarge:{fontSize:g.typography.pxToRem(35)}}}),{name:"MuiSvgIcon"})(U)},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(4),e(14)),B=e(21),n=e(30),U={h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6",subtitle1:"h6",subtitle2:"h6",body1:"p",body2:"p"},s=Q.forwardRef((function(g,I){var e=g.align,B=void 0===e?"inherit":e,s=g.classes,i=g.className,c=g.color,A=void 0===c?"initial":c,l=g.component,a=g.display,r=void 0===a?"initial":a,o=g.gutterBottom,d=void 0!==o&&o,u=g.noWrap,y=void 0!==u&&u,b=g.paragraph,Z=void 0!==b&&b,m=g.variant,x=void 0===m?"body1":m,R=g.variantMapping,S=void 0===R?U:R,G=Object(C.a)(g,["align","classes","className","color","component","display","gutterBottom","noWrap","paragraph","variant","variantMapping"]),L=l||(Z?"p":S[x]||U[x])||"span";return Q.createElement(L,Object(t.a)({className:Object(F.default)(s.root,i,"inherit"!==x&&s[x],"initial"!==A&&s["color".concat(Object(n.a)(A))],y&&s.noWrap,d&&s.gutterBottom,Z&&s.paragraph,"inherit"!==B&&s["align".concat(Object(n.a)(B))],"initial"!==r&&s["display".concat(Object(n.a)(r))]),ref:I},G))}));I.a=Object(B.a)((function(g){return{root:{margin:0},body2:g.typography.body2,body1:g.typography.body1,caption:g.typography.caption,button:g.typography.button,h1:g.typography.h1,h2:g.typography.h2,h3:g.typography.h3,h4:g.typography.h4,h5:g.typography.h5,h6:g.typography.h6,subtitle1:g.typography.subtitle1,subtitle2:g.typography.subtitle2,overline:g.typography.overline,srOnly:{position:"absolute",height:1,width:1,overflow:"hidden"},alignLeft:{textAlign:"left"},alignCenter:{textAlign:"center"},alignRight:{textAlign:"right"},alignJustify:{textAlign:"justify"},noWrap:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},gutterBottom:{marginBottom:"0.35em"},paragraph:{marginBottom:16},colorInherit:{color:"inherit"},colorPrimary:{color:g.palette.primary.main},colorSecondary:{color:g.palette.secondary.main},colorTextPrimary:{color:g.palette.text.primary},colorTextSecondary:{color:g.palette.text.secondary},colorError:{color:g.palette.error.main},displayInline:{display:"inline"},displayBlock:{display:"block"}}}),{name:"MuiTypography"})(s)},,function(g,I,e){var t=e(619),C=e(486).concat("length","prototype");I.f=Object.getOwnPropertyNames||function(g){return t(g,C)}},function(g,I,e){"use strict";var t=e(188),C=e(76),Q=e(228);g.exports=function(g,I,e){var F=t(I);F in g?C.f(g,F,Q(0,e)):g[F]=e}},function(g,I,e){var t=e(326),C=e(57),Q=e(90),F=e(76).f,B=e(325),n=e(335),U=B("meta"),s=0,i=Object.isExtensible||function(){return!0},c=function(g){F(g,U,{value:{objectID:"O"+ ++s,weakData:{}}})},A=g.exports={REQUIRED:!1,fastKey:function(g,I){if(!C(g))return"symbol"==typeof g?g:("string"==typeof g?"S":"P")+g;if(!Q(g,U)){if(!i(g))return"F";if(!I)return"E";c(g)}return g[U].objectID},getWeakData:function(g,I){if(!Q(g,U)){if(!i(g))return!0;if(!I)return!1;c(g)}return g[U].weakData},onFreeze:function(g){return n&&A.REQUIRED&&i(g)&&!Q(g,U)&&c(g),g}};t[U]=!0},function(g,I){"function"===typeof Object.create?g.exports=function(g,I){I&&(g.super_=I,g.prototype=Object.create(I.prototype,{constructor:{value:g,enumerable:!1,writable:!0,configurable:!0}}))}:g.exports=function(g,I){if(I){g.super_=I;var e=function(){};e.prototype=I.prototype,g.prototype=new e,g.prototype.constructor=g}}},function(g,I,e){"use strict";var t=e(412),C=Object.keys||function(g){var I=[];for(var e in g)I.push(e);return I};g.exports=i;var Q=Object.create(e(340));Q.inherits=e(253);var F=e(729),B=e(530);Q.inherits(i,F);for(var n=C(B.prototype),U=0;U<n.length;U++){var s=n[U];i.prototype[s]||(i.prototype[s]=B.prototype[s])}function i(g){if(!(this instanceof i))return new i(g);F.call(this,g),B.call(this,g),g&&!1===g.readable&&(this.readable=!1),g&&!1===g.writable&&(this.writable=!1),this.allowHalfOpen=!0,g&&!1===g.allowHalfOpen&&(this.allowHalfOpen=!1),this.once("end",c)}function c(){this.allowHalfOpen||this._writableState.ended||t.nextTick(A,this)}function A(g){g.end()}Object.defineProperty(i.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(i.prototype,"destroyed",{get:function(){return void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed&&this._writableState.destroyed)},set:function(g){void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed=g,this._writableState.destroyed=g)}}),i.prototype._destroy=function(g,I){this.push(null),this.end(),t.nextTick(I,g)}},function(g,I,e){"use strict";var t=e(31).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=["font","unitsPerEm"],F=C.compose(C.ifElse(C.compose(C.not,C.isNil,C.path(Q)),C.converge(C.divide,[C.propOr(12,"fontSize"),C.path(Q)]),C.always(0)),C.propOr({},"attributes")),B=C.either(C.path(["attributes","scale"]),F);I.default=B},function(g,I,e){"use strict";(function(g){e.d(I,"b",(function(){return a})),e.d(I,"a",(function(){return r}));var t=e(11),C=e(272),Q=e(472),F=e(66),B=e(185),n=e(919),U=e(295),s=e(296),i=e(52);function c(){var g=this.getScope();if(g){var I=g.getSpan();if(I)return{"sentry-trace":I.toTraceparent()}}return{}}function A(g,I,e){return Object(i.c)()?void 0!==g.sampled?(g.setMetadata({transactionSampling:{method:Q.a.Explicit}}),g):("function"===typeof I.tracesSampler?(t=I.tracesSampler(e),g.setMetadata({transactionSampling:{method:Q.a.Sampler,rate:Number(t)}})):void 0!==e.parentSampled?(t=e.parentSampled,g.setMetadata({transactionSampling:{method:Q.a.Inheritance}})):(t=I.tracesSampleRate,g.setMetadata({transactionSampling:{method:Q.a.Rate,rate:Number(t)}})),function(g){if(isNaN(g)||"number"!==typeof g&&"boolean"!==typeof g)return F.a.warn("[Tracing] Given sample rate is invalid. Sample rate must be a boolean or a number between 0 and 1. Got "+JSON.stringify(g)+" of type "+JSON.stringify(typeof g)+"."),!1;if(g<0||g>1)return F.a.warn("[Tracing] Given sample rate is invalid. Sample rate must be between 0 and 1. Got "+g+"."),!1;return!0}(t)?t?(g.sampled=Math.random()<t,g.sampled?(F.a.log("[Tracing] starting "+g.op+" transaction - "+g.name),g):(F.a.log("[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = "+Number(t)+")"),g)):(F.a.log("[Tracing] Discarding transaction because "+("function"===typeof I.tracesSampler?"tracesSampler returned 0 or false":"a negative sampling decision was inherited or tracesSampleRate is set to 0")),g.sampled=!1,g):(F.a.warn("[Tracing] Discarding transaction because of invalid sample rate."),g.sampled=!1,g)):(g.sampled=!1,g);var t}function l(g,I){var e,C,Q=(null===(e=this.getClient())||void 0===e?void 0:e.getOptions())||{},F=new s.a(g,this);return(F=A(F,Q,Object(t.a)({parentSampled:g.parentSampled,transactionContext:g},I))).sampled&&F.initSpanRecorder(null===(C=Q._experiments)||void 0===C?void 0:C.maxSpans),F}function a(g,I,e,C,Q){var F,B,n=(null===(F=g.getClient())||void 0===F?void 0:F.getOptions())||{},s=new U.b(I,g,e,C);return(s=A(s,n,Object(t.a)({parentSampled:I.parentSampled,transactionContext:I},Q))).sampled&&s.initSpanRecorder(null===(B=n._experiments)||void 0===B?void 0:B.maxSpans),s}function r(){!function(){var g=Object(C.c)();g.__SENTRY__&&(g.__SENTRY__.extensions=g.__SENTRY__.extensions||{},g.__SENTRY__.extensions.startTransaction||(g.__SENTRY__.extensions.startTransaction=l),g.__SENTRY__.extensions.traceHeaders||(g.__SENTRY__.extensions.traceHeaders=c))}(),Object(B.b)()&&function(){var I=Object(C.c)();if(I.__SENTRY__){var e={mongodb:function(){return new(Object(B.a)(g,"./integrations/mongo").Mongo)},mongoose:function(){return new(Object(B.a)(g,"./integrations/mongo").Mongo)({mongoose:!0})},mysql:function(){return new(Object(B.a)(g,"./integrations/mysql").Mysql)},pg:function(){return new(Object(B.a)(g,"./integrations/postgres").Postgres)}},Q=Object.keys(e).filter((function(g){return!!Object(B.c)(g)})).map((function(g){try{return e[g]()}catch(I){return}})).filter((function(g){return g}));Q.length>0&&(I.__SENTRY__.integrations=Object(t.e)(I.__SENTRY__.integrations||[],Q))}}(),Object(n.a)()}}).call(this,e(397)(g))},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"}),"Person");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"}),"NavigateBefore");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M11 7h2v2h-2zm0 4h2v6h-2zm1-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"}),"InfoOutlined");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M20 6h-2.18c.11-.31.18-.65.18-1 0-1.66-1.34-3-3-3-1.05 0-1.96.54-2.5 1.35l-.5.67-.5-.68C10.96 2.54 10.05 2 9 2 7.34 2 6 3.34 6 5c0 .35.07.69.18 1H4c-1.11 0-1.99.89-1.99 2L2 19c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V8c0-1.11-.89-2-2-2zm-5-2c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zM9 4c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm11 15H4v-2h16v2zm0-5H4V8h5.08L7 10.83 8.62 12 12 7.4l3.38 4.6L17 10.83 14.92 8H20v6z"}),"CardGiftcardOutlined");I.default=Q},,function(g,I,e){"use strict";e.d(I,"b",(function(){return n})),e.d(I,"a",(function(){return U}));var t=e(11),C=e(108),Q=e(322),F=e(143),B=e(107),n=function(){function g(g){void 0===g&&(g=1e3),this.spans=[],this._maxlen=g}return g.prototype.add=function(g){this.spans.length>this._maxlen?g.spanRecorder=void 0:this.spans.push(g)},g}(),U=function(){function g(g){if(this.traceId=Object(C.i)(),this.spanId=Object(C.i)().substring(16),this.startTimestamp=Object(Q.d)(),this.tags={},this.data={},!g)return this;g.traceId&&(this.traceId=g.traceId),g.spanId&&(this.spanId=g.spanId),g.parentSpanId&&(this.parentSpanId=g.parentSpanId),"sampled"in g&&(this.sampled=g.sampled),g.op&&(this.op=g.op),g.description&&(this.description=g.description),g.data&&(this.data=g.data),g.tags&&(this.tags=g.tags),g.status&&(this.status=g.status),g.startTimestamp&&(this.startTimestamp=g.startTimestamp),g.endTimestamp&&(this.endTimestamp=g.endTimestamp)}return g.prototype.child=function(g){return this.startChild(g)},g.prototype.startChild=function(I){var e=new g(Object(t.a)(Object(t.a)({},I),{parentSpanId:this.spanId,sampled:this.sampled,traceId:this.traceId}));return e.spanRecorder=this.spanRecorder,e.spanRecorder&&e.spanRecorder.add(e),e.transaction=this.transaction,e},g.prototype.setTag=function(g,I){var e;return this.tags=Object(t.a)(Object(t.a)({},this.tags),((e={})[g]=I,e)),this},g.prototype.setData=function(g,I){var e;return this.data=Object(t.a)(Object(t.a)({},this.data),((e={})[g]=I,e)),this},g.prototype.setStatus=function(g){return this.status=g,this},g.prototype.setHttpStatus=function(g){this.setTag("http.status_code",String(g));var I=B.a.fromHttpCode(g);return I!==B.a.UnknownError&&this.setStatus(I),this},g.prototype.isSuccess=function(){return this.status===B.a.Ok},g.prototype.finish=function(g){this.endTimestamp="number"===typeof g?g:Object(Q.d)()},g.prototype.toTraceparent=function(){var g="";return void 0!==this.sampled&&(g=this.sampled?"-1":"-0"),this.traceId+"-"+this.spanId+g},g.prototype.toContext=function(){return Object(F.a)({data:this.data,description:this.description,endTimestamp:this.endTimestamp,op:this.op,parentSpanId:this.parentSpanId,sampled:this.sampled,spanId:this.spanId,startTimestamp:this.startTimestamp,status:this.status,tags:this.tags,traceId:this.traceId})},g.prototype.updateWithContext=function(g){var I,e,t,C,Q;return this.data=null!==(I=g.data)&&void 0!==I?I:{},this.description=g.description,this.endTimestamp=g.endTimestamp,this.op=g.op,this.parentSpanId=g.parentSpanId,this.sampled=g.sampled,this.spanId=null!==(e=g.spanId)&&void 0!==e?e:this.spanId,this.startTimestamp=null!==(t=g.startTimestamp)&&void 0!==t?t:this.startTimestamp,this.status=g.status,this.tags=null!==(C=g.tags)&&void 0!==C?C:{},this.traceId=null!==(Q=g.traceId)&&void 0!==Q?Q:this.traceId,this},g.prototype.getTraceContext=function(){return Object(F.a)({data:Object.keys(this.data).length>0?this.data:void 0,description:this.description,op:this.op,parent_span_id:this.parentSpanId,span_id:this.spanId,status:this.status,tags:Object.keys(this.tags).length>0?this.tags:void 0,trace_id:this.traceId})},g.prototype.toJSON=function(){return Object(F.a)({data:Object.keys(this.data).length>0?this.data:void 0,description:this.description,op:this.op,parent_span_id:this.parentSpanId,span_id:this.spanId,start_timestamp:this.startTimestamp,status:this.status,tags:Object.keys(this.tags).length>0?this.tags:void 0,timestamp:this.endTimestamp,trace_id:this.traceId})},g}()},function(g,I,e){"use strict";function t(g){return null!=g&&!(Array.isArray(g)&&0===g.length)}function C(g){var I=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return g&&(t(g.value)&&""!==g.value||I&&t(g.defaultValue)&&""!==g.defaultValue)}function Q(g){return g.startAdornment}e.d(I,"b",(function(){return C})),e.d(I,"a",(function(){return Q}))},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement(C.default.Fragment,null,C.default.createElement("path",{d:"M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58s1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41s-.23-1.06-.59-1.42zM13 20.01L4 11V4h7v-.01l9 9-7 7.02z"}),C.default.createElement("circle",{cx:"6.5",cy:"6.5",r:"1.5"})),"LocalOfferOutlined");I.default=Q},function(g,I,e){"use strict";(function(g){e.d(I,"a",(function(){return Q})),e.d(I,"b",(function(){return F})),e.d(I,"c",(function(){return n}));var t=e(0),C=e.n(t),Q={autosemicolon:!0,indent:"  "},F=!(!g||!Object({NODE_ENV:"production",PUBLIC_URL:"",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0})),B=+C.a.version.split(".").slice(0,2).join("."),n=!isNaN(B)&&B>=16.3}).call(this,e(92))},function(g,I,e){"use strict";var t="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"===typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g},C="object"===("undefined"===typeof window?"undefined":t(window))&&"object"===("undefined"===typeof document?"undefined":t(document))&&9===document.nodeType;I.a=C},function(g,I,e){"use strict";e.d(I,"d",(function(){return C})),e.d(I,"c",(function(){return Q})),e.d(I,"b",(function(){return F})),e.d(I,"a",(function(){return B}));var t=e(75);function C(g,I){return void 0===I&&(I=0),"string"!==typeof g||0===I||g.length<=I?g:g.substr(0,I)+"..."}function Q(g,I){var e=g,t=e.length;if(t<=150)return e;I>t&&(I=t);var C=Math.max(I-60,0);C<5&&(C=0);var Q=Math.min(C+140,t);return Q>t-5&&(Q=t),Q===t&&(C=Math.max(Q-140,0)),e=e.slice(C,Q),C>0&&(e="'{snip} "+e),Q<t&&(e+=" {snip}"),e}function F(g,I){if(!Array.isArray(g))return"";for(var e=[],t=0;t<g.length;t++){var C=g[t];try{e.push(String(C))}catch(Q){e.push("[value cannot be serialized]")}}return e.join(I)}function B(g,I){return!!Object(t.k)(g)&&(Object(t.j)(I)?I.test(g):"string"===typeof I&&-1!==g.indexOf(I))}},function(g,I,e){"use strict";(function(g){e.d(I,"a",(function(){return xn}));var t="undefined"!==typeof g?g:"undefined"!==typeof self?self:"undefined"!==typeof window?window:{},C=[],Q=[],F="undefined"!==typeof Uint8Array?Uint8Array:Array,B=!1;function n(){B=!0;for(var g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",I=0,e=g.length;I<e;++I)C[I]=g[I],Q[g.charCodeAt(I)]=I;Q["-".charCodeAt(0)]=62,Q["_".charCodeAt(0)]=63}function U(g,I,e){for(var t,Q,F=[],B=I;B<e;B+=3)t=(g[B]<<16)+(g[B+1]<<8)+g[B+2],F.push(C[(Q=t)>>18&63]+C[Q>>12&63]+C[Q>>6&63]+C[63&Q]);return F.join("")}function s(g){var I;B||n();for(var e=g.length,t=e%3,Q="",F=[],s=0,i=e-t;s<i;s+=16383)F.push(U(g,s,s+16383>i?i:s+16383));return 1===t?(I=g[e-1],Q+=C[I>>2],Q+=C[I<<4&63],Q+="=="):2===t&&(I=(g[e-2]<<8)+g[e-1],Q+=C[I>>10],Q+=C[I>>4&63],Q+=C[I<<2&63],Q+="="),F.push(Q),F.join("")}function i(g,I,e,t,C){var Q,F,B=8*C-t-1,n=(1<<B)-1,U=n>>1,s=-7,i=e?C-1:0,c=e?-1:1,A=g[I+i];for(i+=c,Q=A&(1<<-s)-1,A>>=-s,s+=B;s>0;Q=256*Q+g[I+i],i+=c,s-=8);for(F=Q&(1<<-s)-1,Q>>=-s,s+=t;s>0;F=256*F+g[I+i],i+=c,s-=8);if(0===Q)Q=1-U;else{if(Q===n)return F?NaN:1/0*(A?-1:1);F+=Math.pow(2,t),Q-=U}return(A?-1:1)*F*Math.pow(2,Q-t)}function c(g,I,e,t,C,Q){var F,B,n,U=8*Q-C-1,s=(1<<U)-1,i=s>>1,c=23===C?Math.pow(2,-24)-Math.pow(2,-77):0,A=t?0:Q-1,l=t?1:-1,a=I<0||0===I&&1/I<0?1:0;for(I=Math.abs(I),isNaN(I)||I===1/0?(B=isNaN(I)?1:0,F=s):(F=Math.floor(Math.log(I)/Math.LN2),I*(n=Math.pow(2,-F))<1&&(F--,n*=2),(I+=F+i>=1?c/n:c*Math.pow(2,1-i))*n>=2&&(F++,n/=2),F+i>=s?(B=0,F=s):F+i>=1?(B=(I*n-1)*Math.pow(2,C),F+=i):(B=I*Math.pow(2,i-1)*Math.pow(2,C),F=0));C>=8;g[e+A]=255&B,A+=l,B/=256,C-=8);for(F=F<<C|B,U+=C;U>0;g[e+A]=255&F,A+=l,F/=256,U-=8);g[e+A-l]|=128*a}var A={}.toString,l=Array.isArray||function(g){return"[object Array]"==A.call(g)};function a(){return o.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function r(g,I){if(a()<I)throw new RangeError("Invalid typed array length");return o.TYPED_ARRAY_SUPPORT?(g=new Uint8Array(I)).__proto__=o.prototype:(null===g&&(g=new o(I)),g.length=I),g}function o(g,I,e){if(!o.TYPED_ARRAY_SUPPORT&&!(this instanceof o))return new o(g,I,e);if("number"===typeof g){if("string"===typeof I)throw new Error("If encoding is specified then the first argument must be a string");return y(this,g)}return d(this,g,I,e)}function d(g,I,e,t){if("number"===typeof I)throw new TypeError('"value" argument must not be a number');return"undefined"!==typeof ArrayBuffer&&I instanceof ArrayBuffer?function(g,I,e,t){if(I.byteLength,e<0||I.byteLength<e)throw new RangeError("'offset' is out of bounds");if(I.byteLength<e+(t||0))throw new RangeError("'length' is out of bounds");I=void 0===e&&void 0===t?new Uint8Array(I):void 0===t?new Uint8Array(I,e):new Uint8Array(I,e,t);o.TYPED_ARRAY_SUPPORT?(g=I).__proto__=o.prototype:g=b(g,I);return g}(g,I,e,t):"string"===typeof I?function(g,I,e){"string"===typeof e&&""!==e||(e="utf8");if(!o.isEncoding(e))throw new TypeError('"encoding" must be a valid string encoding');var t=0|x(I,e),C=(g=r(g,t)).write(I,e);C!==t&&(g=g.slice(0,C));return g}(g,I,e):function(g,I){if(m(I)){var e=0|Z(I.length);return 0===(g=r(g,e)).length||I.copy(g,0,0,e),g}if(I){if("undefined"!==typeof ArrayBuffer&&I.buffer instanceof ArrayBuffer||"length"in I)return"number"!==typeof I.length||(t=I.length)!==t?r(g,0):b(g,I);if("Buffer"===I.type&&l(I.data))return b(g,I.data)}var t;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(g,I)}function u(g){if("number"!==typeof g)throw new TypeError('"size" argument must be a number');if(g<0)throw new RangeError('"size" argument must not be negative')}function y(g,I){if(u(I),g=r(g,I<0?0:0|Z(I)),!o.TYPED_ARRAY_SUPPORT)for(var e=0;e<I;++e)g[e]=0;return g}function b(g,I){var e=I.length<0?0:0|Z(I.length);g=r(g,e);for(var t=0;t<e;t+=1)g[t]=255&I[t];return g}function Z(g){if(g>=a())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a().toString(16)+" bytes");return 0|g}function m(g){return!(null==g||!g._isBuffer)}function x(g,I){if(m(g))return g.length;if("undefined"!==typeof ArrayBuffer&&"function"===typeof ArrayBuffer.isView&&(ArrayBuffer.isView(g)||g instanceof ArrayBuffer))return g.byteLength;"string"!==typeof g&&(g=""+g);var e=g.length;if(0===e)return 0;for(var t=!1;;)switch(I){case"ascii":case"latin1":case"binary":return e;case"utf8":case"utf-8":case void 0:return P(g).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*e;case"hex":return e>>>1;case"base64":return _(g).length;default:if(t)return P(g).length;I=(""+I).toLowerCase(),t=!0}}function R(g,I,e){var t=!1;if((void 0===I||I<0)&&(I=0),I>this.length)return"";if((void 0===e||e>this.length)&&(e=this.length),e<=0)return"";if((e>>>=0)<=(I>>>=0))return"";for(g||(g="utf8");;)switch(g){case"hex":return v(this,I,e);case"utf8":case"utf-8":return f(this,I,e);case"ascii":return X(this,I,e);case"latin1":case"binary":return J(this,I,e);case"base64":return W(this,I,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return k(this,I,e);default:if(t)throw new TypeError("Unknown encoding: "+g);g=(g+"").toLowerCase(),t=!0}}function S(g,I,e){var t=g[I];g[I]=g[e],g[e]=t}function G(g,I,e,t,C){if(0===g.length)return-1;if("string"===typeof e?(t=e,e=0):e>2147483647?e=2147483647:e<-2147483648&&(e=-2147483648),e=+e,isNaN(e)&&(e=C?0:g.length-1),e<0&&(e=g.length+e),e>=g.length){if(C)return-1;e=g.length-1}else if(e<0){if(!C)return-1;e=0}if("string"===typeof I&&(I=o.from(I,t)),m(I))return 0===I.length?-1:L(g,I,e,t,C);if("number"===typeof I)return I&=255,o.TYPED_ARRAY_SUPPORT&&"function"===typeof Uint8Array.prototype.indexOf?C?Uint8Array.prototype.indexOf.call(g,I,e):Uint8Array.prototype.lastIndexOf.call(g,I,e):L(g,[I],e,t,C);throw new TypeError("val must be string, number or Buffer")}function L(g,I,e,t,C){var Q,F=1,B=g.length,n=I.length;if(void 0!==t&&("ucs2"===(t=String(t).toLowerCase())||"ucs-2"===t||"utf16le"===t||"utf-16le"===t)){if(g.length<2||I.length<2)return-1;F=2,B/=2,n/=2,e/=2}function U(g,I){return 1===F?g[I]:g.readUInt16BE(I*F)}if(C){var s=-1;for(Q=e;Q<B;Q++)if(U(g,Q)===U(I,-1===s?0:Q-s)){if(-1===s&&(s=Q),Q-s+1===n)return s*F}else-1!==s&&(Q-=Q-s),s=-1}else for(e+n>B&&(e=B-n),Q=e;Q>=0;Q--){for(var i=!0,c=0;c<n;c++)if(U(g,Q+c)!==U(I,c)){i=!1;break}if(i)return Q}return-1}function V(g,I,e,t){e=Number(e)||0;var C=g.length-e;t?(t=Number(t))>C&&(t=C):t=C;var Q=I.length;if(Q%2!==0)throw new TypeError("Invalid hex string");t>Q/2&&(t=Q/2);for(var F=0;F<t;++F){var B=parseInt(I.substr(2*F,2),16);if(isNaN(B))return F;g[e+F]=B}return F}function h(g,I,e,t){return q(P(I,g.length-e),g,e,t)}function D(g,I,e,t){return q(function(g){for(var I=[],e=0;e<g.length;++e)I.push(255&g.charCodeAt(e));return I}(I),g,e,t)}function p(g,I,e,t){return D(g,I,e,t)}function E(g,I,e,t){return q(_(I),g,e,t)}function N(g,I,e,t){return q(function(g,I){for(var e,t,C,Q=[],F=0;F<g.length&&!((I-=2)<0);++F)e=g.charCodeAt(F),t=e>>8,C=e%256,Q.push(C),Q.push(t);return Q}(I,g.length-e),g,e,t)}function W(g,I,e){return 0===I&&e===g.length?s(g):s(g.slice(I,e))}function f(g,I,e){e=Math.min(g.length,e);for(var t=[],C=I;C<e;){var Q,F,B,n,U=g[C],s=null,i=U>239?4:U>223?3:U>191?2:1;if(C+i<=e)switch(i){case 1:U<128&&(s=U);break;case 2:128===(192&(Q=g[C+1]))&&(n=(31&U)<<6|63&Q)>127&&(s=n);break;case 3:Q=g[C+1],F=g[C+2],128===(192&Q)&&128===(192&F)&&(n=(15&U)<<12|(63&Q)<<6|63&F)>2047&&(n<55296||n>57343)&&(s=n);break;case 4:Q=g[C+1],F=g[C+2],B=g[C+3],128===(192&Q)&&128===(192&F)&&128===(192&B)&&(n=(15&U)<<18|(63&Q)<<12|(63&F)<<6|63&B)>65535&&n<1114112&&(s=n)}null===s?(s=65533,i=1):s>65535&&(s-=65536,t.push(s>>>10&1023|55296),s=56320|1023&s),t.push(s),C+=i}return function(g){var I=g.length;if(I<=4096)return String.fromCharCode.apply(String,g);var e="",t=0;for(;t<I;)e+=String.fromCharCode.apply(String,g.slice(t,t+=4096));return e}(t)}o.TYPED_ARRAY_SUPPORT=void 0===t.TYPED_ARRAY_SUPPORT||t.TYPED_ARRAY_SUPPORT,o.poolSize=8192,o._augment=function(g){return g.__proto__=o.prototype,g},o.from=function(g,I,e){return d(null,g,I,e)},o.TYPED_ARRAY_SUPPORT&&(o.prototype.__proto__=Uint8Array.prototype,o.__proto__=Uint8Array),o.alloc=function(g,I,e){return function(g,I,e,t){return u(I),I<=0?r(g,I):void 0!==e?"string"===typeof t?r(g,I).fill(e,t):r(g,I).fill(e):r(g,I)}(null,g,I,e)},o.allocUnsafe=function(g){return y(null,g)},o.allocUnsafeSlow=function(g){return y(null,g)},o.isBuffer=function(g){return null!=g&&(!!g._isBuffer||$(g)||function(g){return"function"===typeof g.readFloatLE&&"function"===typeof g.slice&&$(g.slice(0,0))}(g))},o.compare=function(g,I){if(!m(g)||!m(I))throw new TypeError("Arguments must be Buffers");if(g===I)return 0;for(var e=g.length,t=I.length,C=0,Q=Math.min(e,t);C<Q;++C)if(g[C]!==I[C]){e=g[C],t=I[C];break}return e<t?-1:t<e?1:0},o.isEncoding=function(g){switch(String(g).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},o.concat=function(g,I){if(!l(g))throw new TypeError('"list" argument must be an Array of Buffers');if(0===g.length)return o.alloc(0);var e;if(void 0===I)for(I=0,e=0;e<g.length;++e)I+=g[e].length;var t=o.allocUnsafe(I),C=0;for(e=0;e<g.length;++e){var Q=g[e];if(!m(Q))throw new TypeError('"list" argument must be an Array of Buffers');Q.copy(t,C),C+=Q.length}return t},o.byteLength=x,o.prototype._isBuffer=!0,o.prototype.swap16=function(){var g=this.length;if(g%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var I=0;I<g;I+=2)S(this,I,I+1);return this},o.prototype.swap32=function(){var g=this.length;if(g%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var I=0;I<g;I+=4)S(this,I,I+3),S(this,I+1,I+2);return this},o.prototype.swap64=function(){var g=this.length;if(g%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var I=0;I<g;I+=8)S(this,I,I+7),S(this,I+1,I+6),S(this,I+2,I+5),S(this,I+3,I+4);return this},o.prototype.toString=function(){var g=0|this.length;return 0===g?"":0===arguments.length?f(this,0,g):R.apply(this,arguments)},o.prototype.equals=function(g){if(!m(g))throw new TypeError("Argument must be a Buffer");return this===g||0===o.compare(this,g)},o.prototype.inspect=function(){var g="";return this.length>0&&(g=this.toString("hex",0,50).match(/.{2}/g).join(" "),this.length>50&&(g+=" ... ")),"<Buffer "+g+">"},o.prototype.compare=function(g,I,e,t,C){if(!m(g))throw new TypeError("Argument must be a Buffer");if(void 0===I&&(I=0),void 0===e&&(e=g?g.length:0),void 0===t&&(t=0),void 0===C&&(C=this.length),I<0||e>g.length||t<0||C>this.length)throw new RangeError("out of range index");if(t>=C&&I>=e)return 0;if(t>=C)return-1;if(I>=e)return 1;if(this===g)return 0;for(var Q=(C>>>=0)-(t>>>=0),F=(e>>>=0)-(I>>>=0),B=Math.min(Q,F),n=this.slice(t,C),U=g.slice(I,e),s=0;s<B;++s)if(n[s]!==U[s]){Q=n[s],F=U[s];break}return Q<F?-1:F<Q?1:0},o.prototype.includes=function(g,I,e){return-1!==this.indexOf(g,I,e)},o.prototype.indexOf=function(g,I,e){return G(this,g,I,e,!0)},o.prototype.lastIndexOf=function(g,I,e){return G(this,g,I,e,!1)},o.prototype.write=function(g,I,e,t){if(void 0===I)t="utf8",e=this.length,I=0;else if(void 0===e&&"string"===typeof I)t=I,e=this.length,I=0;else{if(!isFinite(I))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");I|=0,isFinite(e)?(e|=0,void 0===t&&(t="utf8")):(t=e,e=void 0)}var C=this.length-I;if((void 0===e||e>C)&&(e=C),g.length>0&&(e<0||I<0)||I>this.length)throw new RangeError("Attempt to write outside buffer bounds");t||(t="utf8");for(var Q=!1;;)switch(t){case"hex":return V(this,g,I,e);case"utf8":case"utf-8":return h(this,g,I,e);case"ascii":return D(this,g,I,e);case"latin1":case"binary":return p(this,g,I,e);case"base64":return E(this,g,I,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return N(this,g,I,e);default:if(Q)throw new TypeError("Unknown encoding: "+t);t=(""+t).toLowerCase(),Q=!0}},o.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function X(g,I,e){var t="";e=Math.min(g.length,e);for(var C=I;C<e;++C)t+=String.fromCharCode(127&g[C]);return t}function J(g,I,e){var t="";e=Math.min(g.length,e);for(var C=I;C<e;++C)t+=String.fromCharCode(g[C]);return t}function v(g,I,e){var t=g.length;(!I||I<0)&&(I=0),(!e||e<0||e>t)&&(e=t);for(var C="",Q=I;Q<e;++Q)C+=j(g[Q]);return C}function k(g,I,e){for(var t=g.slice(I,e),C="",Q=0;Q<t.length;Q+=2)C+=String.fromCharCode(t[Q]+256*t[Q+1]);return C}function H(g,I,e){if(g%1!==0||g<0)throw new RangeError("offset is not uint");if(g+I>e)throw new RangeError("Trying to access beyond buffer length")}function M(g,I,e,t,C,Q){if(!m(g))throw new TypeError('"buffer" argument must be a Buffer instance');if(I>C||I<Q)throw new RangeError('"value" argument is out of bounds');if(e+t>g.length)throw new RangeError("Index out of range")}function Y(g,I,e,t){I<0&&(I=65535+I+1);for(var C=0,Q=Math.min(g.length-e,2);C<Q;++C)g[e+C]=(I&255<<8*(t?C:1-C))>>>8*(t?C:1-C)}function w(g,I,e,t){I<0&&(I=4294967295+I+1);for(var C=0,Q=Math.min(g.length-e,4);C<Q;++C)g[e+C]=I>>>8*(t?C:3-C)&255}function T(g,I,e,t,C,Q){if(e+t>g.length)throw new RangeError("Index out of range");if(e<0)throw new RangeError("Index out of range")}function z(g,I,e,t,C){return C||T(g,0,e,4),c(g,I,e,t,23,4),e+4}function O(g,I,e,t,C){return C||T(g,0,e,8),c(g,I,e,t,52,8),e+8}o.prototype.slice=function(g,I){var e,t=this.length;if((g=~~g)<0?(g+=t)<0&&(g=0):g>t&&(g=t),(I=void 0===I?t:~~I)<0?(I+=t)<0&&(I=0):I>t&&(I=t),I<g&&(I=g),o.TYPED_ARRAY_SUPPORT)(e=this.subarray(g,I)).__proto__=o.prototype;else{var C=I-g;e=new o(C,void 0);for(var Q=0;Q<C;++Q)e[Q]=this[Q+g]}return e},o.prototype.readUIntLE=function(g,I,e){g|=0,I|=0,e||H(g,I,this.length);for(var t=this[g],C=1,Q=0;++Q<I&&(C*=256);)t+=this[g+Q]*C;return t},o.prototype.readUIntBE=function(g,I,e){g|=0,I|=0,e||H(g,I,this.length);for(var t=this[g+--I],C=1;I>0&&(C*=256);)t+=this[g+--I]*C;return t},o.prototype.readUInt8=function(g,I){return I||H(g,1,this.length),this[g]},o.prototype.readUInt16LE=function(g,I){return I||H(g,2,this.length),this[g]|this[g+1]<<8},o.prototype.readUInt16BE=function(g,I){return I||H(g,2,this.length),this[g]<<8|this[g+1]},o.prototype.readUInt32LE=function(g,I){return I||H(g,4,this.length),(this[g]|this[g+1]<<8|this[g+2]<<16)+16777216*this[g+3]},o.prototype.readUInt32BE=function(g,I){return I||H(g,4,this.length),16777216*this[g]+(this[g+1]<<16|this[g+2]<<8|this[g+3])},o.prototype.readIntLE=function(g,I,e){g|=0,I|=0,e||H(g,I,this.length);for(var t=this[g],C=1,Q=0;++Q<I&&(C*=256);)t+=this[g+Q]*C;return t>=(C*=128)&&(t-=Math.pow(2,8*I)),t},o.prototype.readIntBE=function(g,I,e){g|=0,I|=0,e||H(g,I,this.length);for(var t=I,C=1,Q=this[g+--t];t>0&&(C*=256);)Q+=this[g+--t]*C;return Q>=(C*=128)&&(Q-=Math.pow(2,8*I)),Q},o.prototype.readInt8=function(g,I){return I||H(g,1,this.length),128&this[g]?-1*(255-this[g]+1):this[g]},o.prototype.readInt16LE=function(g,I){I||H(g,2,this.length);var e=this[g]|this[g+1]<<8;return 32768&e?4294901760|e:e},o.prototype.readInt16BE=function(g,I){I||H(g,2,this.length);var e=this[g+1]|this[g]<<8;return 32768&e?4294901760|e:e},o.prototype.readInt32LE=function(g,I){return I||H(g,4,this.length),this[g]|this[g+1]<<8|this[g+2]<<16|this[g+3]<<24},o.prototype.readInt32BE=function(g,I){return I||H(g,4,this.length),this[g]<<24|this[g+1]<<16|this[g+2]<<8|this[g+3]},o.prototype.readFloatLE=function(g,I){return I||H(g,4,this.length),i(this,g,!0,23,4)},o.prototype.readFloatBE=function(g,I){return I||H(g,4,this.length),i(this,g,!1,23,4)},o.prototype.readDoubleLE=function(g,I){return I||H(g,8,this.length),i(this,g,!0,52,8)},o.prototype.readDoubleBE=function(g,I){return I||H(g,8,this.length),i(this,g,!1,52,8)},o.prototype.writeUIntLE=function(g,I,e,t){(g=+g,I|=0,e|=0,t)||M(this,g,I,e,Math.pow(2,8*e)-1,0);var C=1,Q=0;for(this[I]=255&g;++Q<e&&(C*=256);)this[I+Q]=g/C&255;return I+e},o.prototype.writeUIntBE=function(g,I,e,t){(g=+g,I|=0,e|=0,t)||M(this,g,I,e,Math.pow(2,8*e)-1,0);var C=e-1,Q=1;for(this[I+C]=255&g;--C>=0&&(Q*=256);)this[I+C]=g/Q&255;return I+e},o.prototype.writeUInt8=function(g,I,e){return g=+g,I|=0,e||M(this,g,I,1,255,0),o.TYPED_ARRAY_SUPPORT||(g=Math.floor(g)),this[I]=255&g,I+1},o.prototype.writeUInt16LE=function(g,I,e){return g=+g,I|=0,e||M(this,g,I,2,65535,0),o.TYPED_ARRAY_SUPPORT?(this[I]=255&g,this[I+1]=g>>>8):Y(this,g,I,!0),I+2},o.prototype.writeUInt16BE=function(g,I,e){return g=+g,I|=0,e||M(this,g,I,2,65535,0),o.TYPED_ARRAY_SUPPORT?(this[I]=g>>>8,this[I+1]=255&g):Y(this,g,I,!1),I+2},o.prototype.writeUInt32LE=function(g,I,e){return g=+g,I|=0,e||M(this,g,I,4,4294967295,0),o.TYPED_ARRAY_SUPPORT?(this[I+3]=g>>>24,this[I+2]=g>>>16,this[I+1]=g>>>8,this[I]=255&g):w(this,g,I,!0),I+4},o.prototype.writeUInt32BE=function(g,I,e){return g=+g,I|=0,e||M(this,g,I,4,4294967295,0),o.TYPED_ARRAY_SUPPORT?(this[I]=g>>>24,this[I+1]=g>>>16,this[I+2]=g>>>8,this[I+3]=255&g):w(this,g,I,!1),I+4},o.prototype.writeIntLE=function(g,I,e,t){if(g=+g,I|=0,!t){var C=Math.pow(2,8*e-1);M(this,g,I,e,C-1,-C)}var Q=0,F=1,B=0;for(this[I]=255&g;++Q<e&&(F*=256);)g<0&&0===B&&0!==this[I+Q-1]&&(B=1),this[I+Q]=(g/F>>0)-B&255;return I+e},o.prototype.writeIntBE=function(g,I,e,t){if(g=+g,I|=0,!t){var C=Math.pow(2,8*e-1);M(this,g,I,e,C-1,-C)}var Q=e-1,F=1,B=0;for(this[I+Q]=255&g;--Q>=0&&(F*=256);)g<0&&0===B&&0!==this[I+Q+1]&&(B=1),this[I+Q]=(g/F>>0)-B&255;return I+e},o.prototype.writeInt8=function(g,I,e){return g=+g,I|=0,e||M(this,g,I,1,127,-128),o.TYPED_ARRAY_SUPPORT||(g=Math.floor(g)),g<0&&(g=255+g+1),this[I]=255&g,I+1},o.prototype.writeInt16LE=function(g,I,e){return g=+g,I|=0,e||M(this,g,I,2,32767,-32768),o.TYPED_ARRAY_SUPPORT?(this[I]=255&g,this[I+1]=g>>>8):Y(this,g,I,!0),I+2},o.prototype.writeInt16BE=function(g,I,e){return g=+g,I|=0,e||M(this,g,I,2,32767,-32768),o.TYPED_ARRAY_SUPPORT?(this[I]=g>>>8,this[I+1]=255&g):Y(this,g,I,!1),I+2},o.prototype.writeInt32LE=function(g,I,e){return g=+g,I|=0,e||M(this,g,I,4,2147483647,-2147483648),o.TYPED_ARRAY_SUPPORT?(this[I]=255&g,this[I+1]=g>>>8,this[I+2]=g>>>16,this[I+3]=g>>>24):w(this,g,I,!0),I+4},o.prototype.writeInt32BE=function(g,I,e){return g=+g,I|=0,e||M(this,g,I,4,2147483647,-2147483648),g<0&&(g=4294967295+g+1),o.TYPED_ARRAY_SUPPORT?(this[I]=g>>>24,this[I+1]=g>>>16,this[I+2]=g>>>8,this[I+3]=255&g):w(this,g,I,!1),I+4},o.prototype.writeFloatLE=function(g,I,e){return z(this,g,I,!0,e)},o.prototype.writeFloatBE=function(g,I,e){return z(this,g,I,!1,e)},o.prototype.writeDoubleLE=function(g,I,e){return O(this,g,I,!0,e)},o.prototype.writeDoubleBE=function(g,I,e){return O(this,g,I,!1,e)},o.prototype.copy=function(g,I,e,t){if(e||(e=0),t||0===t||(t=this.length),I>=g.length&&(I=g.length),I||(I=0),t>0&&t<e&&(t=e),t===e)return 0;if(0===g.length||0===this.length)return 0;if(I<0)throw new RangeError("targetStart out of bounds");if(e<0||e>=this.length)throw new RangeError("sourceStart out of bounds");if(t<0)throw new RangeError("sourceEnd out of bounds");t>this.length&&(t=this.length),g.length-I<t-e&&(t=g.length-I+e);var C,Q=t-e;if(this===g&&e<I&&I<t)for(C=Q-1;C>=0;--C)g[C+I]=this[C+e];else if(Q<1e3||!o.TYPED_ARRAY_SUPPORT)for(C=0;C<Q;++C)g[C+I]=this[C+e];else Uint8Array.prototype.set.call(g,this.subarray(e,e+Q),I);return Q},o.prototype.fill=function(g,I,e,t){if("string"===typeof g){if("string"===typeof I?(t=I,I=0,e=this.length):"string"===typeof e&&(t=e,e=this.length),1===g.length){var C=g.charCodeAt(0);C<256&&(g=C)}if(void 0!==t&&"string"!==typeof t)throw new TypeError("encoding must be a string");if("string"===typeof t&&!o.isEncoding(t))throw new TypeError("Unknown encoding: "+t)}else"number"===typeof g&&(g&=255);if(I<0||this.length<I||this.length<e)throw new RangeError("Out of range index");if(e<=I)return this;var Q;if(I>>>=0,e=void 0===e?this.length:e>>>0,g||(g=0),"number"===typeof g)for(Q=I;Q<e;++Q)this[Q]=g;else{var F=m(g)?g:P(new o(g,t).toString()),B=F.length;for(Q=0;Q<e-I;++Q)this[Q+I]=F[Q%B]}return this};var K=/[^+\/0-9A-Za-z-_]/g;function j(g){return g<16?"0"+g.toString(16):g.toString(16)}function P(g,I){var e;I=I||1/0;for(var t=g.length,C=null,Q=[],F=0;F<t;++F){if((e=g.charCodeAt(F))>55295&&e<57344){if(!C){if(e>56319){(I-=3)>-1&&Q.push(239,191,189);continue}if(F+1===t){(I-=3)>-1&&Q.push(239,191,189);continue}C=e;continue}if(e<56320){(I-=3)>-1&&Q.push(239,191,189),C=e;continue}e=65536+(C-55296<<10|e-56320)}else C&&(I-=3)>-1&&Q.push(239,191,189);if(C=null,e<128){if((I-=1)<0)break;Q.push(e)}else if(e<2048){if((I-=2)<0)break;Q.push(e>>6|192,63&e|128)}else if(e<65536){if((I-=3)<0)break;Q.push(e>>12|224,e>>6&63|128,63&e|128)}else{if(!(e<1114112))throw new Error("Invalid code point");if((I-=4)<0)break;Q.push(e>>18|240,e>>12&63|128,e>>6&63|128,63&e|128)}}return Q}function _(g){return function(g){var I,e,t,C,U,s;B||n();var i=g.length;if(i%4>0)throw new Error("Invalid string. Length must be a multiple of 4");U="="===g[i-2]?2:"="===g[i-1]?1:0,s=new F(3*i/4-U),t=U>0?i-4:i;var c=0;for(I=0,e=0;I<t;I+=4,e+=3)C=Q[g.charCodeAt(I)]<<18|Q[g.charCodeAt(I+1)]<<12|Q[g.charCodeAt(I+2)]<<6|Q[g.charCodeAt(I+3)],s[c++]=C>>16&255,s[c++]=C>>8&255,s[c++]=255&C;return 2===U?(C=Q[g.charCodeAt(I)]<<2|Q[g.charCodeAt(I+1)]>>4,s[c++]=255&C):1===U&&(C=Q[g.charCodeAt(I)]<<10|Q[g.charCodeAt(I+1)]<<4|Q[g.charCodeAt(I+2)]>>2,s[c++]=C>>8&255,s[c++]=255&C),s}(function(g){if((g=function(g){return g.trim?g.trim():g.replace(/^\s+|\s+$/g,"")}(g).replace(K,"")).length<2)return"";for(;g.length%4!==0;)g+="=";return g}(g))}function q(g,I,e,t){for(var C=0;C<t&&!(C+e>=I.length||C>=g.length);++C)I[C+e]=g[C];return C}function $(g){return!!g.constructor&&"function"===typeof g.constructor.isBuffer&&g.constructor.isBuffer(g)}function gg(){throw new Error("setTimeout has not been defined")}function Ig(){throw new Error("clearTimeout has not been defined")}var eg=gg,tg=Ig;function Cg(g){if(eg===setTimeout)return setTimeout(g,0);if((eg===gg||!eg)&&setTimeout)return eg=setTimeout,setTimeout(g,0);try{return eg(g,0)}catch(I){try{return eg.call(null,g,0)}catch(I){return eg.call(this,g,0)}}}"function"===typeof t.setTimeout&&(eg=setTimeout),"function"===typeof t.clearTimeout&&(tg=clearTimeout);var Qg,Fg=[],Bg=!1,ng=-1;function Ug(){Bg&&Qg&&(Bg=!1,Qg.length?Fg=Qg.concat(Fg):ng=-1,Fg.length&&sg())}function sg(){if(!Bg){var g=Cg(Ug);Bg=!0;for(var I=Fg.length;I;){for(Qg=Fg,Fg=[];++ng<I;)Qg&&Qg[ng].run();ng=-1,I=Fg.length}Qg=null,Bg=!1,function(g){if(tg===clearTimeout)return clearTimeout(g);if((tg===Ig||!tg)&&clearTimeout)return tg=clearTimeout,clearTimeout(g);try{tg(g)}catch(I){try{return tg.call(null,g)}catch(I){return tg.call(this,g)}}}(g)}}function ig(g,I){this.fun=g,this.array=I}ig.prototype.run=function(){this.fun.apply(null,this.array)};function cg(){}var Ag=cg,lg=cg,ag=cg,rg=cg,og=cg,dg=cg,ug=cg;var yg=t.performance||{},bg=yg.now||yg.mozNow||yg.msNow||yg.oNow||yg.webkitNow||function(){return(new Date).getTime()};var Zg=new Date;var mg={nextTick:function(g){var I=new Array(arguments.length-1);if(arguments.length>1)for(var e=1;e<arguments.length;e++)I[e-1]=arguments[e];Fg.push(new ig(g,I)),1!==Fg.length||Bg||Cg(sg)},title:"browser",browser:!0,env:{},argv:[],version:"",versions:{},on:Ag,addListener:lg,once:ag,off:rg,removeListener:og,removeAllListeners:dg,emit:ug,binding:function(g){throw new Error("process.binding is not supported")},cwd:function(){return"/"},chdir:function(g){throw new Error("process.chdir is not supported")},umask:function(){return 0},hrtime:function(g){var I=.001*bg.call(yg),e=Math.floor(I),t=Math.floor(I%1*1e9);return g&&(e-=g[0],(t-=g[1])<0&&(e--,t+=1e9)),[e,t]},platform:"browser",release:{},config:{},uptime:function(){return(new Date-Zg)/1e3}},xg="undefined"!==typeof globalThis?globalThis:"undefined"!==typeof window?window:"undefined"!==typeof g?g:"undefined"!==typeof self?self:{};function Rg(g){if(g.__esModule)return g;var I=Object.defineProperty({},"__esModule",{value:!0});return Object.keys(g).forEach((function(e){var t=Object.getOwnPropertyDescriptor(g,e);Object.defineProperty(I,e,t.get?t:{enumerable:!0,get:function(){return g[e]}})})),I}for(var Sg={},Gg={},Lg={byteLength:function(g){var I=Wg(g),e=I[0],t=I[1];return 3*(e+t)/4-t},toByteArray:function(g){var I,e,t=Wg(g),C=t[0],Q=t[1],F=new Dg(function(g,I,e){return 3*(I+e)/4-e}(0,C,Q)),B=0,n=Q>0?C-4:C;for(e=0;e<n;e+=4)I=hg[g.charCodeAt(e)]<<18|hg[g.charCodeAt(e+1)]<<12|hg[g.charCodeAt(e+2)]<<6|hg[g.charCodeAt(e+3)],F[B++]=I>>16&255,F[B++]=I>>8&255,F[B++]=255&I;2===Q&&(I=hg[g.charCodeAt(e)]<<2|hg[g.charCodeAt(e+1)]>>4,F[B++]=255&I);1===Q&&(I=hg[g.charCodeAt(e)]<<10|hg[g.charCodeAt(e+1)]<<4|hg[g.charCodeAt(e+2)]>>2,F[B++]=I>>8&255,F[B++]=255&I);return F},fromByteArray:function(g){for(var I,e=g.length,t=e%3,C=[],Q=0,F=e-t;Q<F;Q+=16383)C.push(fg(g,Q,Q+16383>F?F:Q+16383));1===t?(I=g[e-1],C.push(Vg[I>>2]+Vg[I<<4&63]+"==")):2===t&&(I=(g[e-2]<<8)+g[e-1],C.push(Vg[I>>10]+Vg[I>>4&63]+Vg[I<<2&63]+"="));return C.join("")}},Vg=[],hg=[],Dg="undefined"!==typeof Uint8Array?Uint8Array:Array,pg="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Eg=0,Ng=pg.length;Eg<Ng;++Eg)Vg[Eg]=pg[Eg],hg[pg.charCodeAt(Eg)]=Eg;function Wg(g){var I=g.length;if(I%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var e=g.indexOf("=");return-1===e&&(e=I),[e,e===I?0:4-e%4]}function fg(g,I,e){for(var t,C,Q=[],F=I;F<e;F+=3)t=(g[F]<<16&16711680)+(g[F+1]<<8&65280)+(255&g[F+2]),Q.push(Vg[(C=t)>>18&63]+Vg[C>>12&63]+Vg[C>>6&63]+Vg[63&C]);return Q.join("")}hg["-".charCodeAt(0)]=62,hg["_".charCodeAt(0)]=63;var Xg={read:function(g,I,e,t,C){var Q,F,B=8*C-t-1,n=(1<<B)-1,U=n>>1,s=-7,i=e?C-1:0,c=e?-1:1,A=g[I+i];for(i+=c,Q=A&(1<<-s)-1,A>>=-s,s+=B;s>0;Q=256*Q+g[I+i],i+=c,s-=8);for(F=Q&(1<<-s)-1,Q>>=-s,s+=t;s>0;F=256*F+g[I+i],i+=c,s-=8);if(0===Q)Q=1-U;else{if(Q===n)return F?NaN:1/0*(A?-1:1);F+=Math.pow(2,t),Q-=U}return(A?-1:1)*F*Math.pow(2,Q-t)},write:function(g,I,e,t,C,Q){var F,B,n,U=8*Q-C-1,s=(1<<U)-1,i=s>>1,c=23===C?Math.pow(2,-24)-Math.pow(2,-77):0,A=t?0:Q-1,l=t?1:-1,a=I<0||0===I&&1/I<0?1:0;for(I=Math.abs(I),isNaN(I)||I===1/0?(B=isNaN(I)?1:0,F=s):(F=Math.floor(Math.log(I)/Math.LN2),I*(n=Math.pow(2,-F))<1&&(F--,n*=2),(I+=F+i>=1?c/n:c*Math.pow(2,1-i))*n>=2&&(F++,n/=2),F+i>=s?(B=0,F=s):F+i>=1?(B=(I*n-1)*Math.pow(2,C),F+=i):(B=I*Math.pow(2,i-1)*Math.pow(2,C),F=0));C>=8;g[e+A]=255&B,A+=l,B/=256,C-=8);for(F=F<<C|B,U+=C;U>0;g[e+A]=255&F,A+=l,F/=256,U-=8);g[e+A-l]|=128*a}};!function(g){var I=Lg,e=Xg,t="function"===typeof Symbol&&"function"===typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;g.Buffer=Q,g.SlowBuffer=function(g){+g!=g&&(g=0);return Q.alloc(+g)},g.INSPECT_MAX_BYTES=50;function C(g){if(g>2147483647)throw new RangeError('The value "'+g+'" is invalid for option "size"');var I=new Uint8Array(g);return Object.setPrototypeOf(I,Q.prototype),I}function Q(g,I,e){if("number"===typeof g){if("string"===typeof I)throw new TypeError('The "string" argument must be of type string. Received type number');return n(g)}return F(g,I,e)}function F(g,I,e){if("string"===typeof g)return function(g,I){"string"===typeof I&&""!==I||(I="utf8");if(!Q.isEncoding(I))throw new TypeError("Unknown encoding: "+I);var e=0|c(g,I),t=C(e),F=t.write(g,I);F!==e&&(t=t.slice(0,F));return t}(g,I);if(ArrayBuffer.isView(g))return function(g){if(X(g,Uint8Array)){var I=new Uint8Array(g);return s(I.buffer,I.byteOffset,I.byteLength)}return U(g)}(g);if(null==g)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof g);if(X(g,ArrayBuffer)||g&&X(g.buffer,ArrayBuffer))return s(g,I,e);if("undefined"!==typeof SharedArrayBuffer&&(X(g,SharedArrayBuffer)||g&&X(g.buffer,SharedArrayBuffer)))return s(g,I,e);if("number"===typeof g)throw new TypeError('The "value" argument must not be of type number. Received type number');var t=g.valueOf&&g.valueOf();if(null!=t&&t!==g)return Q.from(t,I,e);var F=function(g){if(Q.isBuffer(g)){var I=0|i(g.length),e=C(I);return 0===e.length||g.copy(e,0,0,I),e}if(void 0!==g.length)return"number"!==typeof g.length||J(g.length)?C(0):U(g);if("Buffer"===g.type&&Array.isArray(g.data))return U(g.data)}(g);if(F)return F;if("undefined"!==typeof Symbol&&null!=Symbol.toPrimitive&&"function"===typeof g[Symbol.toPrimitive])return Q.from(g[Symbol.toPrimitive]("string"),I,e);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof g)}function B(g){if("number"!==typeof g)throw new TypeError('"size" argument must be of type number');if(g<0)throw new RangeError('The value "'+g+'" is invalid for option "size"')}function n(g){return B(g),C(g<0?0:0|i(g))}function U(g){for(var I=g.length<0?0:0|i(g.length),e=C(I),t=0;t<I;t+=1)e[t]=255&g[t];return e}function s(g,I,e){if(I<0||g.byteLength<I)throw new RangeError('"offset" is outside of buffer bounds');if(g.byteLength<I+(e||0))throw new RangeError('"length" is outside of buffer bounds');var t;return t=void 0===I&&void 0===e?new Uint8Array(g):void 0===e?new Uint8Array(g,I):new Uint8Array(g,I,e),Object.setPrototypeOf(t,Q.prototype),t}function i(g){if(g>=2147483647)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+2147483647..toString(16)+" bytes");return 0|g}function c(g,I){if(Q.isBuffer(g))return g.length;if(ArrayBuffer.isView(g)||X(g,ArrayBuffer))return g.byteLength;if("string"!==typeof g)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof g);var e=g.length,t=arguments.length>2&&!0===arguments[2];if(!t&&0===e)return 0;for(var C=!1;;)switch(I){case"ascii":case"latin1":case"binary":return e;case"utf8":case"utf-8":return N(g).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*e;case"hex":return e>>>1;case"base64":return W(g).length;default:if(C)return t?-1:N(g).length;I=(""+I).toLowerCase(),C=!0}}function A(g,I,e){var t=!1;if((void 0===I||I<0)&&(I=0),I>this.length)return"";if((void 0===e||e>this.length)&&(e=this.length),e<=0)return"";if((e>>>=0)<=(I>>>=0))return"";for(g||(g="utf8");;)switch(g){case"hex":return S(this,I,e);case"utf8":case"utf-8":return m(this,I,e);case"ascii":return x(this,I,e);case"latin1":case"binary":return R(this,I,e);case"base64":return Z(this,I,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return G(this,I,e);default:if(t)throw new TypeError("Unknown encoding: "+g);g=(g+"").toLowerCase(),t=!0}}function l(g,I,e){var t=g[I];g[I]=g[e],g[e]=t}function a(g,I,e,t,C){if(0===g.length)return-1;if("string"===typeof e?(t=e,e=0):e>2147483647?e=2147483647:e<-2147483648&&(e=-2147483648),J(e=+e)&&(e=C?0:g.length-1),e<0&&(e=g.length+e),e>=g.length){if(C)return-1;e=g.length-1}else if(e<0){if(!C)return-1;e=0}if("string"===typeof I&&(I=Q.from(I,t)),Q.isBuffer(I))return 0===I.length?-1:r(g,I,e,t,C);if("number"===typeof I)return I&=255,"function"===typeof Uint8Array.prototype.indexOf?C?Uint8Array.prototype.indexOf.call(g,I,e):Uint8Array.prototype.lastIndexOf.call(g,I,e):r(g,[I],e,t,C);throw new TypeError("val must be string, number or Buffer")}function r(g,I,e,t,C){var Q,F=1,B=g.length,n=I.length;if(void 0!==t&&("ucs2"===(t=String(t).toLowerCase())||"ucs-2"===t||"utf16le"===t||"utf-16le"===t)){if(g.length<2||I.length<2)return-1;F=2,B/=2,n/=2,e/=2}function U(g,I){return 1===F?g[I]:g.readUInt16BE(I*F)}if(C){var s=-1;for(Q=e;Q<B;Q++)if(U(g,Q)===U(I,-1===s?0:Q-s)){if(-1===s&&(s=Q),Q-s+1===n)return s*F}else-1!==s&&(Q-=Q-s),s=-1}else for(e+n>B&&(e=B-n),Q=e;Q>=0;Q--){for(var i=!0,c=0;c<n;c++)if(U(g,Q+c)!==U(I,c)){i=!1;break}if(i)return Q}return-1}function o(g,I,e,t){e=Number(e)||0;var C=g.length-e;t?(t=Number(t))>C&&(t=C):t=C;var Q=I.length;t>Q/2&&(t=Q/2);for(var F=0;F<t;++F){var B=parseInt(I.substr(2*F,2),16);if(J(B))return F;g[e+F]=B}return F}function d(g,I,e,t){return f(N(I,g.length-e),g,e,t)}function u(g,I,e,t){return f(function(g){for(var I=[],e=0;e<g.length;++e)I.push(255&g.charCodeAt(e));return I}(I),g,e,t)}function y(g,I,e,t){return f(W(I),g,e,t)}function b(g,I,e,t){return f(function(g,I){for(var e,t,C,Q=[],F=0;F<g.length&&!((I-=2)<0);++F)e=g.charCodeAt(F),t=e>>8,C=e%256,Q.push(C),Q.push(t);return Q}(I,g.length-e),g,e,t)}function Z(g,e,t){return 0===e&&t===g.length?I.fromByteArray(g):I.fromByteArray(g.slice(e,t))}function m(g,I,e){e=Math.min(g.length,e);for(var t=[],C=I;C<e;){var Q,F,B,n,U=g[C],s=null,i=U>239?4:U>223?3:U>191?2:1;if(C+i<=e)switch(i){case 1:U<128&&(s=U);break;case 2:128===(192&(Q=g[C+1]))&&(n=(31&U)<<6|63&Q)>127&&(s=n);break;case 3:Q=g[C+1],F=g[C+2],128===(192&Q)&&128===(192&F)&&(n=(15&U)<<12|(63&Q)<<6|63&F)>2047&&(n<55296||n>57343)&&(s=n);break;case 4:Q=g[C+1],F=g[C+2],B=g[C+3],128===(192&Q)&&128===(192&F)&&128===(192&B)&&(n=(15&U)<<18|(63&Q)<<12|(63&F)<<6|63&B)>65535&&n<1114112&&(s=n)}null===s?(s=65533,i=1):s>65535&&(s-=65536,t.push(s>>>10&1023|55296),s=56320|1023&s),t.push(s),C+=i}return function(g){var I=g.length;if(I<=4096)return String.fromCharCode.apply(String,g);var e="",t=0;for(;t<I;)e+=String.fromCharCode.apply(String,g.slice(t,t+=4096));return e}(t)}g.kMaxLength=2147483647,Q.TYPED_ARRAY_SUPPORT=function(){try{var g=new Uint8Array(1),I={foo:function(){return 42}};return Object.setPrototypeOf(I,Uint8Array.prototype),Object.setPrototypeOf(g,I),42===g.foo()}catch(e){return!1}}(),Q.TYPED_ARRAY_SUPPORT||"undefined"===typeof console||"function"!==typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(Q.prototype,"parent",{enumerable:!0,get:function(){if(Q.isBuffer(this))return this.buffer}}),Object.defineProperty(Q.prototype,"offset",{enumerable:!0,get:function(){if(Q.isBuffer(this))return this.byteOffset}}),Q.poolSize=8192,Q.from=function(g,I,e){return F(g,I,e)},Object.setPrototypeOf(Q.prototype,Uint8Array.prototype),Object.setPrototypeOf(Q,Uint8Array),Q.alloc=function(g,I,e){return function(g,I,e){return B(g),g<=0?C(g):void 0!==I?"string"===typeof e?C(g).fill(I,e):C(g).fill(I):C(g)}(g,I,e)},Q.allocUnsafe=function(g){return n(g)},Q.allocUnsafeSlow=function(g){return n(g)},Q.isBuffer=function(g){return null!=g&&!0===g._isBuffer&&g!==Q.prototype},Q.compare=function(g,I){if(X(g,Uint8Array)&&(g=Q.from(g,g.offset,g.byteLength)),X(I,Uint8Array)&&(I=Q.from(I,I.offset,I.byteLength)),!Q.isBuffer(g)||!Q.isBuffer(I))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(g===I)return 0;for(var e=g.length,t=I.length,C=0,F=Math.min(e,t);C<F;++C)if(g[C]!==I[C]){e=g[C],t=I[C];break}return e<t?-1:t<e?1:0},Q.isEncoding=function(g){switch(String(g).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},Q.concat=function(g,I){if(!Array.isArray(g))throw new TypeError('"list" argument must be an Array of Buffers');if(0===g.length)return Q.alloc(0);var e;if(void 0===I)for(I=0,e=0;e<g.length;++e)I+=g[e].length;var t=Q.allocUnsafe(I),C=0;for(e=0;e<g.length;++e){var F=g[e];if(X(F,Uint8Array))C+F.length>t.length?Q.from(F).copy(t,C):Uint8Array.prototype.set.call(t,F,C);else{if(!Q.isBuffer(F))throw new TypeError('"list" argument must be an Array of Buffers');F.copy(t,C)}C+=F.length}return t},Q.byteLength=c,Q.prototype._isBuffer=!0,Q.prototype.swap16=function(){var g=this.length;if(g%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var I=0;I<g;I+=2)l(this,I,I+1);return this},Q.prototype.swap32=function(){var g=this.length;if(g%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var I=0;I<g;I+=4)l(this,I,I+3),l(this,I+1,I+2);return this},Q.prototype.swap64=function(){var g=this.length;if(g%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var I=0;I<g;I+=8)l(this,I,I+7),l(this,I+1,I+6),l(this,I+2,I+5),l(this,I+3,I+4);return this},Q.prototype.toString=function(){var g=this.length;return 0===g?"":0===arguments.length?m(this,0,g):A.apply(this,arguments)},Q.prototype.toLocaleString=Q.prototype.toString,Q.prototype.equals=function(g){if(!Q.isBuffer(g))throw new TypeError("Argument must be a Buffer");return this===g||0===Q.compare(this,g)},Q.prototype.inspect=function(){var I="",e=g.INSPECT_MAX_BYTES;return I=this.toString("hex",0,e).replace(/(.{2})/g,"$1 ").trim(),this.length>e&&(I+=" ... "),"<Buffer "+I+">"},t&&(Q.prototype[t]=Q.prototype.inspect),Q.prototype.compare=function(g,I,e,t,C){if(X(g,Uint8Array)&&(g=Q.from(g,g.offset,g.byteLength)),!Q.isBuffer(g))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof g);if(void 0===I&&(I=0),void 0===e&&(e=g?g.length:0),void 0===t&&(t=0),void 0===C&&(C=this.length),I<0||e>g.length||t<0||C>this.length)throw new RangeError("out of range index");if(t>=C&&I>=e)return 0;if(t>=C)return-1;if(I>=e)return 1;if(this===g)return 0;for(var F=(C>>>=0)-(t>>>=0),B=(e>>>=0)-(I>>>=0),n=Math.min(F,B),U=this.slice(t,C),s=g.slice(I,e),i=0;i<n;++i)if(U[i]!==s[i]){F=U[i],B=s[i];break}return F<B?-1:B<F?1:0},Q.prototype.includes=function(g,I,e){return-1!==this.indexOf(g,I,e)},Q.prototype.indexOf=function(g,I,e){return a(this,g,I,e,!0)},Q.prototype.lastIndexOf=function(g,I,e){return a(this,g,I,e,!1)},Q.prototype.write=function(g,I,e,t){if(void 0===I)t="utf8",e=this.length,I=0;else if(void 0===e&&"string"===typeof I)t=I,e=this.length,I=0;else{if(!isFinite(I))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");I>>>=0,isFinite(e)?(e>>>=0,void 0===t&&(t="utf8")):(t=e,e=void 0)}var C=this.length-I;if((void 0===e||e>C)&&(e=C),g.length>0&&(e<0||I<0)||I>this.length)throw new RangeError("Attempt to write outside buffer bounds");t||(t="utf8");for(var Q=!1;;)switch(t){case"hex":return o(this,g,I,e);case"utf8":case"utf-8":return d(this,g,I,e);case"ascii":case"latin1":case"binary":return u(this,g,I,e);case"base64":return y(this,g,I,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return b(this,g,I,e);default:if(Q)throw new TypeError("Unknown encoding: "+t);t=(""+t).toLowerCase(),Q=!0}},Q.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function x(g,I,e){var t="";e=Math.min(g.length,e);for(var C=I;C<e;++C)t+=String.fromCharCode(127&g[C]);return t}function R(g,I,e){var t="";e=Math.min(g.length,e);for(var C=I;C<e;++C)t+=String.fromCharCode(g[C]);return t}function S(g,I,e){var t=g.length;(!I||I<0)&&(I=0),(!e||e<0||e>t)&&(e=t);for(var C="",Q=I;Q<e;++Q)C+=v[g[Q]];return C}function G(g,I,e){for(var t=g.slice(I,e),C="",Q=0;Q<t.length-1;Q+=2)C+=String.fromCharCode(t[Q]+256*t[Q+1]);return C}function L(g,I,e){if(g%1!==0||g<0)throw new RangeError("offset is not uint");if(g+I>e)throw new RangeError("Trying to access beyond buffer length")}function V(g,I,e,t,C,F){if(!Q.isBuffer(g))throw new TypeError('"buffer" argument must be a Buffer instance');if(I>C||I<F)throw new RangeError('"value" argument is out of bounds');if(e+t>g.length)throw new RangeError("Index out of range")}function h(g,I,e,t,C,Q){if(e+t>g.length)throw new RangeError("Index out of range");if(e<0)throw new RangeError("Index out of range")}function D(g,I,t,C,Q){return I=+I,t>>>=0,Q||h(g,0,t,4),e.write(g,I,t,C,23,4),t+4}function p(g,I,t,C,Q){return I=+I,t>>>=0,Q||h(g,0,t,8),e.write(g,I,t,C,52,8),t+8}Q.prototype.slice=function(g,I){var e=this.length;(g=~~g)<0?(g+=e)<0&&(g=0):g>e&&(g=e),(I=void 0===I?e:~~I)<0?(I+=e)<0&&(I=0):I>e&&(I=e),I<g&&(I=g);var t=this.subarray(g,I);return Object.setPrototypeOf(t,Q.prototype),t},Q.prototype.readUintLE=Q.prototype.readUIntLE=function(g,I,e){g>>>=0,I>>>=0,e||L(g,I,this.length);for(var t=this[g],C=1,Q=0;++Q<I&&(C*=256);)t+=this[g+Q]*C;return t},Q.prototype.readUintBE=Q.prototype.readUIntBE=function(g,I,e){g>>>=0,I>>>=0,e||L(g,I,this.length);for(var t=this[g+--I],C=1;I>0&&(C*=256);)t+=this[g+--I]*C;return t},Q.prototype.readUint8=Q.prototype.readUInt8=function(g,I){return g>>>=0,I||L(g,1,this.length),this[g]},Q.prototype.readUint16LE=Q.prototype.readUInt16LE=function(g,I){return g>>>=0,I||L(g,2,this.length),this[g]|this[g+1]<<8},Q.prototype.readUint16BE=Q.prototype.readUInt16BE=function(g,I){return g>>>=0,I||L(g,2,this.length),this[g]<<8|this[g+1]},Q.prototype.readUint32LE=Q.prototype.readUInt32LE=function(g,I){return g>>>=0,I||L(g,4,this.length),(this[g]|this[g+1]<<8|this[g+2]<<16)+16777216*this[g+3]},Q.prototype.readUint32BE=Q.prototype.readUInt32BE=function(g,I){return g>>>=0,I||L(g,4,this.length),16777216*this[g]+(this[g+1]<<16|this[g+2]<<8|this[g+3])},Q.prototype.readIntLE=function(g,I,e){g>>>=0,I>>>=0,e||L(g,I,this.length);for(var t=this[g],C=1,Q=0;++Q<I&&(C*=256);)t+=this[g+Q]*C;return t>=(C*=128)&&(t-=Math.pow(2,8*I)),t},Q.prototype.readIntBE=function(g,I,e){g>>>=0,I>>>=0,e||L(g,I,this.length);for(var t=I,C=1,Q=this[g+--t];t>0&&(C*=256);)Q+=this[g+--t]*C;return Q>=(C*=128)&&(Q-=Math.pow(2,8*I)),Q},Q.prototype.readInt8=function(g,I){return g>>>=0,I||L(g,1,this.length),128&this[g]?-1*(255-this[g]+1):this[g]},Q.prototype.readInt16LE=function(g,I){g>>>=0,I||L(g,2,this.length);var e=this[g]|this[g+1]<<8;return 32768&e?4294901760|e:e},Q.prototype.readInt16BE=function(g,I){g>>>=0,I||L(g,2,this.length);var e=this[g+1]|this[g]<<8;return 32768&e?4294901760|e:e},Q.prototype.readInt32LE=function(g,I){return g>>>=0,I||L(g,4,this.length),this[g]|this[g+1]<<8|this[g+2]<<16|this[g+3]<<24},Q.prototype.readInt32BE=function(g,I){return g>>>=0,I||L(g,4,this.length),this[g]<<24|this[g+1]<<16|this[g+2]<<8|this[g+3]},Q.prototype.readFloatLE=function(g,I){return g>>>=0,I||L(g,4,this.length),e.read(this,g,!0,23,4)},Q.prototype.readFloatBE=function(g,I){return g>>>=0,I||L(g,4,this.length),e.read(this,g,!1,23,4)},Q.prototype.readDoubleLE=function(g,I){return g>>>=0,I||L(g,8,this.length),e.read(this,g,!0,52,8)},Q.prototype.readDoubleBE=function(g,I){return g>>>=0,I||L(g,8,this.length),e.read(this,g,!1,52,8)},Q.prototype.writeUintLE=Q.prototype.writeUIntLE=function(g,I,e,t){(g=+g,I>>>=0,e>>>=0,t)||V(this,g,I,e,Math.pow(2,8*e)-1,0);var C=1,Q=0;for(this[I]=255&g;++Q<e&&(C*=256);)this[I+Q]=g/C&255;return I+e},Q.prototype.writeUintBE=Q.prototype.writeUIntBE=function(g,I,e,t){(g=+g,I>>>=0,e>>>=0,t)||V(this,g,I,e,Math.pow(2,8*e)-1,0);var C=e-1,Q=1;for(this[I+C]=255&g;--C>=0&&(Q*=256);)this[I+C]=g/Q&255;return I+e},Q.prototype.writeUint8=Q.prototype.writeUInt8=function(g,I,e){return g=+g,I>>>=0,e||V(this,g,I,1,255,0),this[I]=255&g,I+1},Q.prototype.writeUint16LE=Q.prototype.writeUInt16LE=function(g,I,e){return g=+g,I>>>=0,e||V(this,g,I,2,65535,0),this[I]=255&g,this[I+1]=g>>>8,I+2},Q.prototype.writeUint16BE=Q.prototype.writeUInt16BE=function(g,I,e){return g=+g,I>>>=0,e||V(this,g,I,2,65535,0),this[I]=g>>>8,this[I+1]=255&g,I+2},Q.prototype.writeUint32LE=Q.prototype.writeUInt32LE=function(g,I,e){return g=+g,I>>>=0,e||V(this,g,I,4,4294967295,0),this[I+3]=g>>>24,this[I+2]=g>>>16,this[I+1]=g>>>8,this[I]=255&g,I+4},Q.prototype.writeUint32BE=Q.prototype.writeUInt32BE=function(g,I,e){return g=+g,I>>>=0,e||V(this,g,I,4,4294967295,0),this[I]=g>>>24,this[I+1]=g>>>16,this[I+2]=g>>>8,this[I+3]=255&g,I+4},Q.prototype.writeIntLE=function(g,I,e,t){if(g=+g,I>>>=0,!t){var C=Math.pow(2,8*e-1);V(this,g,I,e,C-1,-C)}var Q=0,F=1,B=0;for(this[I]=255&g;++Q<e&&(F*=256);)g<0&&0===B&&0!==this[I+Q-1]&&(B=1),this[I+Q]=(g/F>>0)-B&255;return I+e},Q.prototype.writeIntBE=function(g,I,e,t){if(g=+g,I>>>=0,!t){var C=Math.pow(2,8*e-1);V(this,g,I,e,C-1,-C)}var Q=e-1,F=1,B=0;for(this[I+Q]=255&g;--Q>=0&&(F*=256);)g<0&&0===B&&0!==this[I+Q+1]&&(B=1),this[I+Q]=(g/F>>0)-B&255;return I+e},Q.prototype.writeInt8=function(g,I,e){return g=+g,I>>>=0,e||V(this,g,I,1,127,-128),g<0&&(g=255+g+1),this[I]=255&g,I+1},Q.prototype.writeInt16LE=function(g,I,e){return g=+g,I>>>=0,e||V(this,g,I,2,32767,-32768),this[I]=255&g,this[I+1]=g>>>8,I+2},Q.prototype.writeInt16BE=function(g,I,e){return g=+g,I>>>=0,e||V(this,g,I,2,32767,-32768),this[I]=g>>>8,this[I+1]=255&g,I+2},Q.prototype.writeInt32LE=function(g,I,e){return g=+g,I>>>=0,e||V(this,g,I,4,2147483647,-2147483648),this[I]=255&g,this[I+1]=g>>>8,this[I+2]=g>>>16,this[I+3]=g>>>24,I+4},Q.prototype.writeInt32BE=function(g,I,e){return g=+g,I>>>=0,e||V(this,g,I,4,2147483647,-2147483648),g<0&&(g=4294967295+g+1),this[I]=g>>>24,this[I+1]=g>>>16,this[I+2]=g>>>8,this[I+3]=255&g,I+4},Q.prototype.writeFloatLE=function(g,I,e){return D(this,g,I,!0,e)},Q.prototype.writeFloatBE=function(g,I,e){return D(this,g,I,!1,e)},Q.prototype.writeDoubleLE=function(g,I,e){return p(this,g,I,!0,e)},Q.prototype.writeDoubleBE=function(g,I,e){return p(this,g,I,!1,e)},Q.prototype.copy=function(g,I,e,t){if(!Q.isBuffer(g))throw new TypeError("argument should be a Buffer");if(e||(e=0),t||0===t||(t=this.length),I>=g.length&&(I=g.length),I||(I=0),t>0&&t<e&&(t=e),t===e)return 0;if(0===g.length||0===this.length)return 0;if(I<0)throw new RangeError("targetStart out of bounds");if(e<0||e>=this.length)throw new RangeError("Index out of range");if(t<0)throw new RangeError("sourceEnd out of bounds");t>this.length&&(t=this.length),g.length-I<t-e&&(t=g.length-I+e);var C=t-e;return this===g&&"function"===typeof Uint8Array.prototype.copyWithin?this.copyWithin(I,e,t):Uint8Array.prototype.set.call(g,this.subarray(e,t),I),C},Q.prototype.fill=function(g,I,e,t){if("string"===typeof g){if("string"===typeof I?(t=I,I=0,e=this.length):"string"===typeof e&&(t=e,e=this.length),void 0!==t&&"string"!==typeof t)throw new TypeError("encoding must be a string");if("string"===typeof t&&!Q.isEncoding(t))throw new TypeError("Unknown encoding: "+t);if(1===g.length){var C=g.charCodeAt(0);("utf8"===t&&C<128||"latin1"===t)&&(g=C)}}else"number"===typeof g?g&=255:"boolean"===typeof g&&(g=Number(g));if(I<0||this.length<I||this.length<e)throw new RangeError("Out of range index");if(e<=I)return this;var F;if(I>>>=0,e=void 0===e?this.length:e>>>0,g||(g=0),"number"===typeof g)for(F=I;F<e;++F)this[F]=g;else{var B=Q.isBuffer(g)?g:Q.from(g,t),n=B.length;if(0===n)throw new TypeError('The value "'+g+'" is invalid for argument "value"');for(F=0;F<e-I;++F)this[F+I]=B[F%n]}return this};var E=/[^+/0-9A-Za-z-_]/g;function N(g,I){var e;I=I||1/0;for(var t=g.length,C=null,Q=[],F=0;F<t;++F){if((e=g.charCodeAt(F))>55295&&e<57344){if(!C){if(e>56319){(I-=3)>-1&&Q.push(239,191,189);continue}if(F+1===t){(I-=3)>-1&&Q.push(239,191,189);continue}C=e;continue}if(e<56320){(I-=3)>-1&&Q.push(239,191,189),C=e;continue}e=65536+(C-55296<<10|e-56320)}else C&&(I-=3)>-1&&Q.push(239,191,189);if(C=null,e<128){if((I-=1)<0)break;Q.push(e)}else if(e<2048){if((I-=2)<0)break;Q.push(e>>6|192,63&e|128)}else if(e<65536){if((I-=3)<0)break;Q.push(e>>12|224,e>>6&63|128,63&e|128)}else{if(!(e<1114112))throw new Error("Invalid code point");if((I-=4)<0)break;Q.push(e>>18|240,e>>12&63|128,e>>6&63|128,63&e|128)}}return Q}function W(g){return I.toByteArray(function(g){if((g=(g=g.split("=")[0]).trim().replace(E,"")).length<2)return"";for(;g.length%4!==0;)g+="=";return g}(g))}function f(g,I,e,t){for(var C=0;C<t&&!(C+e>=I.length||C>=g.length);++C)I[C+e]=g[C];return C}function X(g,I){return g instanceof I||null!=g&&null!=g.constructor&&null!=g.constructor.name&&g.constructor.name===I.name}function J(g){return g!==g}var v=function(){for(var g=new Array(256),I=0;I<16;++I)for(var e=16*I,t=0;t<16;++t)g[e+t]="0123456789abcdef"[I]+"0123456789abcdef"[t];return g}()}(Gg);var Jg,vg={exports:{}},kg="object"===typeof Reflect?Reflect:null,Hg=kg&&"function"===typeof kg.apply?kg.apply:function(g,I,e){return Function.prototype.apply.call(g,I,e)};Jg=kg&&"function"===typeof kg.ownKeys?kg.ownKeys:Object.getOwnPropertySymbols?function(g){return Object.getOwnPropertyNames(g).concat(Object.getOwnPropertySymbols(g))}:function(g){return Object.getOwnPropertyNames(g)};var Mg=Number.isNaN||function(g){return g!==g};function Yg(){Yg.init.call(this)}vg.exports=Yg,vg.exports.once=function(g,I){return new Promise((function(e,t){function C(e){g.removeListener(I,Q),t(e)}function Q(){"function"===typeof g.removeListener&&g.removeListener("error",C),e([].slice.call(arguments))}$g(g,I,Q,{once:!0}),"error"!==I&&function(g,I,e){"function"===typeof g.on&&$g(g,"error",I,e)}(g,C,{once:!0})}))},Yg.EventEmitter=Yg,Yg.prototype._events=void 0,Yg.prototype._eventsCount=0,Yg.prototype._maxListeners=void 0;var wg=10;function Tg(g){if("function"!==typeof g)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof g)}function zg(g){return void 0===g._maxListeners?Yg.defaultMaxListeners:g._maxListeners}function Og(g,I,e,t){var C,Q,F,B;if(Tg(e),void 0===(Q=g._events)?(Q=g._events=Object.create(null),g._eventsCount=0):(void 0!==Q.newListener&&(g.emit("newListener",I,e.listener?e.listener:e),Q=g._events),F=Q[I]),void 0===F)F=Q[I]=e,++g._eventsCount;else if("function"===typeof F?F=Q[I]=t?[e,F]:[F,e]:t?F.unshift(e):F.push(e),(C=zg(g))>0&&F.length>C&&!F.warned){F.warned=!0;var n=new Error("Possible EventEmitter memory leak detected. "+F.length+" "+String(I)+" listeners added. Use emitter.setMaxListeners() to increase limit");n.name="MaxListenersExceededWarning",n.emitter=g,n.type=I,n.count=F.length,B=n,console&&console.warn&&console.warn(B)}return g}function Kg(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function jg(g,I,e){var t={fired:!1,wrapFn:void 0,target:g,type:I,listener:e},C=Kg.bind(t);return C.listener=e,t.wrapFn=C,C}function Pg(g,I,e){var t=g._events;if(void 0===t)return[];var C=t[I];return void 0===C?[]:"function"===typeof C?e?[C.listener||C]:[C]:e?function(g){for(var I=new Array(g.length),e=0;e<I.length;++e)I[e]=g[e].listener||g[e];return I}(C):qg(C,C.length)}function _g(g){var I=this._events;if(void 0!==I){var e=I[g];if("function"===typeof e)return 1;if(void 0!==e)return e.length}return 0}function qg(g,I){for(var e=new Array(I),t=0;t<I;++t)e[t]=g[t];return e}function $g(g,I,e,t){if("function"===typeof g.on)t.once?g.once(I,e):g.on(I,e);else{if("function"!==typeof g.addEventListener)throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof g);g.addEventListener(I,(function C(Q){t.once&&g.removeEventListener(I,C),e(Q)}))}}Object.defineProperty(Yg,"defaultMaxListeners",{enumerable:!0,get:function(){return wg},set:function(g){if("number"!==typeof g||g<0||Mg(g))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+g+".");wg=g}}),Yg.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},Yg.prototype.setMaxListeners=function(g){if("number"!==typeof g||g<0||Mg(g))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+g+".");return this._maxListeners=g,this},Yg.prototype.getMaxListeners=function(){return zg(this)},Yg.prototype.emit=function(g){for(var I=[],e=1;e<arguments.length;e++)I.push(arguments[e]);var t="error"===g,C=this._events;if(void 0!==C)t=t&&void 0===C.error;else if(!t)return!1;if(t){var Q;if(I.length>0&&(Q=I[0]),Q instanceof Error)throw Q;var F=new Error("Unhandled error."+(Q?" ("+Q.message+")":""));throw F.context=Q,F}var B=C[g];if(void 0===B)return!1;if("function"===typeof B)Hg(B,this,I);else{var n=B.length,U=qg(B,n);for(e=0;e<n;++e)Hg(U[e],this,I)}return!0},Yg.prototype.addListener=function(g,I){return Og(this,g,I,!1)},Yg.prototype.on=Yg.prototype.addListener,Yg.prototype.prependListener=function(g,I){return Og(this,g,I,!0)},Yg.prototype.once=function(g,I){return Tg(I),this.on(g,jg(this,g,I)),this},Yg.prototype.prependOnceListener=function(g,I){return Tg(I),this.prependListener(g,jg(this,g,I)),this},Yg.prototype.removeListener=function(g,I){var e,t,C,Q,F;if(Tg(I),void 0===(t=this._events))return this;if(void 0===(e=t[g]))return this;if(e===I||e.listener===I)0===--this._eventsCount?this._events=Object.create(null):(delete t[g],t.removeListener&&this.emit("removeListener",g,e.listener||I));else if("function"!==typeof e){for(C=-1,Q=e.length-1;Q>=0;Q--)if(e[Q]===I||e[Q].listener===I){F=e[Q].listener,C=Q;break}if(C<0)return this;0===C?e.shift():function(g,I){for(;I+1<g.length;I++)g[I]=g[I+1];g.pop()}(e,C),1===e.length&&(t[g]=e[0]),void 0!==t.removeListener&&this.emit("removeListener",g,F||I)}return this},Yg.prototype.off=Yg.prototype.removeListener,Yg.prototype.removeAllListeners=function(g){var I,e,t;if(void 0===(e=this._events))return this;if(void 0===e.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==e[g]&&(0===--this._eventsCount?this._events=Object.create(null):delete e[g]),this;if(0===arguments.length){var C,Q=Object.keys(e);for(t=0;t<Q.length;++t)"removeListener"!==(C=Q[t])&&this.removeAllListeners(C);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if("function"===typeof(I=e[g]))this.removeListener(g,I);else if(void 0!==I)for(t=I.length-1;t>=0;t--)this.removeListener(g,I[t]);return this},Yg.prototype.listeners=function(g){return Pg(this,g,!0)},Yg.prototype.rawListeners=function(g){return Pg(this,g,!1)},Yg.listenerCount=function(g,I){return"function"===typeof g.listenerCount?g.listenerCount(I):_g.call(g,I)},Yg.prototype.listenerCount=_g,Yg.prototype.eventNames=function(){return this._eventsCount>0?Jg(this._events):[]};var gI=vg.exports,II={},eI={},tI=function(){if("function"!==typeof Symbol||"function"!==typeof Object.getOwnPropertySymbols)return!1;if("symbol"===typeof Symbol.iterator)return!0;var g={},I=Symbol("test"),e=Object(I);if("string"===typeof I)return!1;if("[object Symbol]"!==Object.prototype.toString.call(I))return!1;if("[object Symbol]"!==Object.prototype.toString.call(e))return!1;for(I in g[I]=42,g)return!1;if("function"===typeof Object.keys&&0!==Object.keys(g).length)return!1;if("function"===typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(g).length)return!1;var t=Object.getOwnPropertySymbols(g);if(1!==t.length||t[0]!==I)return!1;if(!Object.prototype.propertyIsEnumerable.call(g,I))return!1;if("function"===typeof Object.getOwnPropertyDescriptor){var C=Object.getOwnPropertyDescriptor(g,I);if(42!==C.value||!0!==C.enumerable)return!1}return!0},CI="undefined"!==typeof Symbol&&Symbol,QI=tI,FI="Function.prototype.bind called on incompatible ",BI=Array.prototype.slice,nI=Object.prototype.toString,UI=function(g){var I=this;if("function"!==typeof I||"[object Function]"!==nI.call(I))throw new TypeError(FI+I);for(var e,t=BI.call(arguments,1),C=function(){if(this instanceof e){var C=I.apply(this,t.concat(BI.call(arguments)));return Object(C)===C?C:this}return I.apply(g,t.concat(BI.call(arguments)))},Q=Math.max(0,I.length-t.length),F=[],B=0;B<Q;B++)F.push("$"+B);if(e=Function("binder","return function ("+F.join(",")+"){ return binder.apply(this,arguments); }")(C),I.prototype){var n=function(){};n.prototype=I.prototype,e.prototype=new n,n.prototype=null}return e},sI=Function.prototype.bind||UI,iI=sI.call(Function.call,Object.prototype.hasOwnProperty),cI=SyntaxError,AI=Function,lI=TypeError,aI=function(g){try{return AI('"use strict"; return ('+g+").constructor;")()}catch(I){}},rI=Object.getOwnPropertyDescriptor;if(rI)try{rI({},"")}catch(Rn){rI=null}var oI=function(){throw new lI},dI=rI?function(){try{return oI}catch(g){try{return rI(arguments,"callee").get}catch(I){return oI}}}():oI,uI="function"===typeof CI&&"function"===typeof Symbol&&"symbol"===typeof CI("foo")&&"symbol"===typeof Symbol("bar")&&QI(),yI=Object.getPrototypeOf||function(g){return g.__proto__},bI={},ZI="undefined"===typeof Uint8Array?void 0:yI(Uint8Array),mI={"%AggregateError%":"undefined"===typeof AggregateError?void 0:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"===typeof ArrayBuffer?void 0:ArrayBuffer,"%ArrayIteratorPrototype%":uI?yI([][Symbol.iterator]()):void 0,"%AsyncFromSyncIteratorPrototype%":void 0,"%AsyncFunction%":bI,"%AsyncGenerator%":bI,"%AsyncGeneratorFunction%":bI,"%AsyncIteratorPrototype%":bI,"%Atomics%":"undefined"===typeof Atomics?void 0:Atomics,"%BigInt%":"undefined"===typeof BigInt?void 0:BigInt,"%Boolean%":Boolean,"%DataView%":"undefined"===typeof DataView?void 0:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":"undefined"===typeof Float32Array?void 0:Float32Array,"%Float64Array%":"undefined"===typeof Float64Array?void 0:Float64Array,"%FinalizationRegistry%":"undefined"===typeof FinalizationRegistry?void 0:FinalizationRegistry,"%Function%":AI,"%GeneratorFunction%":bI,"%Int8Array%":"undefined"===typeof Int8Array?void 0:Int8Array,"%Int16Array%":"undefined"===typeof Int16Array?void 0:Int16Array,"%Int32Array%":"undefined"===typeof Int32Array?void 0:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":uI?yI(yI([][Symbol.iterator]())):void 0,"%JSON%":"object"===typeof JSON?JSON:void 0,"%Map%":"undefined"===typeof Map?void 0:Map,"%MapIteratorPrototype%":"undefined"!==typeof Map&&uI?yI((new Map)[Symbol.iterator]()):void 0,"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"===typeof Promise?void 0:Promise,"%Proxy%":"undefined"===typeof Proxy?void 0:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":"undefined"===typeof Reflect?void 0:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"===typeof Set?void 0:Set,"%SetIteratorPrototype%":"undefined"!==typeof Set&&uI?yI((new Set)[Symbol.iterator]()):void 0,"%SharedArrayBuffer%":"undefined"===typeof SharedArrayBuffer?void 0:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":uI?yI(""[Symbol.iterator]()):void 0,"%Symbol%":uI?Symbol:void 0,"%SyntaxError%":cI,"%ThrowTypeError%":dI,"%TypedArray%":ZI,"%TypeError%":lI,"%Uint8Array%":"undefined"===typeof Uint8Array?void 0:Uint8Array,"%Uint8ClampedArray%":"undefined"===typeof Uint8ClampedArray?void 0:Uint8ClampedArray,"%Uint16Array%":"undefined"===typeof Uint16Array?void 0:Uint16Array,"%Uint32Array%":"undefined"===typeof Uint32Array?void 0:Uint32Array,"%URIError%":URIError,"%WeakMap%":"undefined"===typeof WeakMap?void 0:WeakMap,"%WeakRef%":"undefined"===typeof WeakRef?void 0:WeakRef,"%WeakSet%":"undefined"===typeof WeakSet?void 0:WeakSet},xI={"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},RI=sI,SI=iI,GI=RI.call(Function.call,Array.prototype.concat),LI=RI.call(Function.apply,Array.prototype.splice),VI=RI.call(Function.call,String.prototype.replace),hI=RI.call(Function.call,String.prototype.slice),DI=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,pI=/\\(\\)?/g,EI=function(g){var I=hI(g,0,1),e=hI(g,-1);if("%"===I&&"%"!==e)throw new cI("invalid intrinsic syntax, expected closing `%`");if("%"===e&&"%"!==I)throw new cI("invalid intrinsic syntax, expected opening `%`");var t=[];return VI(g,DI,(function(g,I,e,C){t[t.length]=e?VI(C,pI,"$1"):I||g})),t},NI=function(g,I){var e,t=g;if(SI(xI,t)&&(t="%"+(e=xI[t])[0]+"%"),SI(mI,t)){var C=mI[t];if(C===bI&&(C=function g(I){var e;if("%AsyncFunction%"===I)e=aI("async function () {}");else if("%GeneratorFunction%"===I)e=aI("function* () {}");else if("%AsyncGeneratorFunction%"===I)e=aI("async function* () {}");else if("%AsyncGenerator%"===I){var t=g("%AsyncGeneratorFunction%");t&&(e=t.prototype)}else if("%AsyncIteratorPrototype%"===I){var C=g("%AsyncGenerator%");C&&(e=yI(C.prototype))}return mI[I]=e,e}(t)),"undefined"===typeof C&&!I)throw new lI("intrinsic "+g+" exists, but is not available. Please file an issue!");return{alias:e,name:t,value:C}}throw new cI("intrinsic "+g+" does not exist!")},WI=function(g,I){if("string"!==typeof g||0===g.length)throw new lI("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!==typeof I)throw new lI('"allowMissing" argument must be a boolean');var e=EI(g),t=e.length>0?e[0]:"",C=NI("%"+t+"%",I),Q=C.name,F=C.value,B=!1,n=C.alias;n&&(t=n[0],LI(e,GI([0,1],n)));for(var U=1,s=!0;U<e.length;U+=1){var i=e[U],c=hI(i,0,1),A=hI(i,-1);if(('"'===c||"'"===c||"`"===c||'"'===A||"'"===A||"`"===A)&&c!==A)throw new cI("property names with quotes must have matching quotes");if("constructor"!==i&&s||(B=!0),SI(mI,Q="%"+(t+="."+i)+"%"))F=mI[Q];else if(null!=F){if(!(i in F)){if(!I)throw new lI("base intrinsic for "+g+" exists, but the property is not available.");return}if(rI&&U+1>=e.length){var l=rI(F,i);F=(s=!!l)&&"get"in l&&!("originalValue"in l.get)?l.get:F[i]}else s=SI(F,i),F=F[i];s&&!B&&(mI[Q]=F)}}return F},fI={exports:{}};!function(g){var I=sI,e=WI,t=e("%Function.prototype.apply%"),C=e("%Function.prototype.call%"),Q=e("%Reflect.apply%",!0)||I.call(C,t),F=e("%Object.getOwnPropertyDescriptor%",!0),B=e("%Object.defineProperty%",!0),n=e("%Math.max%");if(B)try{B({},"a",{value:1})}catch(Rn){B=null}g.exports=function(g){var e=Q(I,C,arguments);if(F&&B){var t=F(e,"length");t.configurable&&B(e,"length",{value:1+n(0,g.length-(arguments.length-1))})}return e};var U=function(){return Q(I,t,arguments)};B?B(g.exports,"apply",{value:U}):g.exports.apply=U}(fI);var XI=WI,JI=fI.exports,vI=JI(XI("String.prototype.indexOf")),kI=function(g,I){var e=XI(g,!!I);return"function"===typeof e&&vI(g,".prototype.")>-1?JI(e):e},HI="function"===typeof Symbol&&"symbol"===typeof Symbol.toStringTag,MI=kI("Object.prototype.toString"),YI=function(g){return!(HI&&g&&"object"===typeof g&&Symbol.toStringTag in g)&&"[object Arguments]"===MI(g)},wI=function(g){return!!YI(g)||null!==g&&"object"===typeof g&&"number"===typeof g.length&&g.length>=0&&"[object Array]"!==MI(g)&&"[object Function]"===MI(g.callee)},TI=function(){return YI(arguments)}();YI.isLegacyArguments=wI;var zI,OI=TI?YI:wI,KI=tI,jI=function(){return KI()&&!!Symbol.toStringTag},PI=Object.prototype.toString,_I=Function.prototype.toString,qI=/^\s*(?:function)?\*/,$I=jI(),ge=Object.getPrototypeOf,Ie=function(g){if("function"!==typeof g)return!1;if(qI.test(_I.call(g)))return!0;if(!$I)return"[object GeneratorFunction]"===PI.call(g);if(!ge)return!1;if("undefined"===typeof zI){var I=function(){if(!$I)return!1;try{return Function("return function*() {}")()}catch(Rn){}}();zI=!!I&&ge(I)}return ge(g)===zI},ee=Object.prototype.hasOwnProperty,te=Object.prototype.toString,Ce=function(g,I,e){if("[object Function]"!==te.call(I))throw new TypeError("iterator must be a function");var t=g.length;if(t===+t)for(var C=0;C<t;C++)I.call(e,g[C],C,g);else for(var Q in g)ee.call(g,Q)&&I.call(e,g[Q],Q,g)},Qe=["BigInt64Array","BigUint64Array","Float32Array","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Uint8Array","Uint8ClampedArray"],Fe="undefined"===typeof globalThis?xg:globalThis,Be=function(){for(var g=[],I=0;I<Qe.length;I++)"function"===typeof Fe[Qe[I]]&&(g[g.length]=Qe[I]);return g},ne=WI("%Object.getOwnPropertyDescriptor%",!0);if(ne)try{ne([],"length")}catch(Rn){ne=null}var Ue=ne,se=Ce,ie=Be,ce=kI,Ae=ce("Object.prototype.toString"),le=jI(),ae="undefined"===typeof globalThis?xg:globalThis,re=ie(),oe=ce("Array.prototype.indexOf",!0)||function(g,I){for(var e=0;e<g.length;e+=1)if(g[e]===I)return e;return-1},de=ce("String.prototype.slice"),ue={},ye=Ue,be=Object.getPrototypeOf;le&&ye&&be&&se(re,(function(g){var I=new ae[g];if(Symbol.toStringTag in I){var e=be(I),t=ye(e,Symbol.toStringTag);if(!t){var C=be(e);t=ye(C,Symbol.toStringTag)}ue[g]=t.get}}));var Ze=function(g){if(!g||"object"!==typeof g)return!1;if(!le||!(Symbol.toStringTag in g)){var I=de(Ae(g),8,-1);return oe(re,I)>-1}return!!ye&&function(g){var I=!1;return se(ue,(function(e,t){if(!I)try{I=e.call(g)===t}catch(Rn){}})),I}(g)},me=Ce,xe=Be,Re=kI,Se=Re("Object.prototype.toString"),Ge=jI(),Le="undefined"===typeof globalThis?xg:globalThis,Ve=xe(),he=Re("String.prototype.slice"),De={},pe=Ue,Ee=Object.getPrototypeOf;Ge&&pe&&Ee&&me(Ve,(function(g){if("function"===typeof Le[g]){var I=new Le[g];if(Symbol.toStringTag in I){var e=Ee(I),t=pe(e,Symbol.toStringTag);if(!t){var C=Ee(e);t=pe(C,Symbol.toStringTag)}De[g]=t.get}}}));var Ne=Ze,We=function(g){return!!Ne(g)&&(Ge&&Symbol.toStringTag in g?function(g){var I=!1;return me(De,(function(e,t){if(!I)try{var C=e.call(g);C===t&&(I=C)}catch(Rn){}})),I}(g):he(Se(g),8,-1))};!function(g){var I=OI,e=Ie,t=We,C=Ze;function Q(g){return g.call.bind(g)}var F="undefined"!==typeof BigInt,B="undefined"!==typeof Symbol,n=Q(Object.prototype.toString),U=Q(Number.prototype.valueOf),s=Q(String.prototype.valueOf),i=Q(Boolean.prototype.valueOf);if(F)var c=Q(BigInt.prototype.valueOf);if(B)var A=Q(Symbol.prototype.valueOf);function l(g,I){if("object"!==typeof g)return!1;try{return I(g),!0}catch(Rn){return!1}}function a(g){return"[object Map]"===n(g)}function r(g){return"[object Set]"===n(g)}function o(g){return"[object WeakMap]"===n(g)}function d(g){return"[object WeakSet]"===n(g)}function u(g){return"[object ArrayBuffer]"===n(g)}function y(g){return"undefined"!==typeof ArrayBuffer&&(u.working?u(g):g instanceof ArrayBuffer)}function b(g){return"[object DataView]"===n(g)}function Z(g){return"undefined"!==typeof DataView&&(b.working?b(g):g instanceof DataView)}g.isArgumentsObject=I,g.isGeneratorFunction=e,g.isTypedArray=C,g.isPromise=function(g){return"undefined"!==typeof Promise&&g instanceof Promise||null!==g&&"object"===typeof g&&"function"===typeof g.then&&"function"===typeof g.catch},g.isArrayBufferView=function(g){return"undefined"!==typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(g):C(g)||Z(g)},g.isUint8Array=function(g){return"Uint8Array"===t(g)},g.isUint8ClampedArray=function(g){return"Uint8ClampedArray"===t(g)},g.isUint16Array=function(g){return"Uint16Array"===t(g)},g.isUint32Array=function(g){return"Uint32Array"===t(g)},g.isInt8Array=function(g){return"Int8Array"===t(g)},g.isInt16Array=function(g){return"Int16Array"===t(g)},g.isInt32Array=function(g){return"Int32Array"===t(g)},g.isFloat32Array=function(g){return"Float32Array"===t(g)},g.isFloat64Array=function(g){return"Float64Array"===t(g)},g.isBigInt64Array=function(g){return"BigInt64Array"===t(g)},g.isBigUint64Array=function(g){return"BigUint64Array"===t(g)},a.working="undefined"!==typeof Map&&a(new Map),g.isMap=function(g){return"undefined"!==typeof Map&&(a.working?a(g):g instanceof Map)},r.working="undefined"!==typeof Set&&r(new Set),g.isSet=function(g){return"undefined"!==typeof Set&&(r.working?r(g):g instanceof Set)},o.working="undefined"!==typeof WeakMap&&o(new WeakMap),g.isWeakMap=function(g){return"undefined"!==typeof WeakMap&&(o.working?o(g):g instanceof WeakMap)},d.working="undefined"!==typeof WeakSet&&d(new WeakSet),g.isWeakSet=function(g){return d(g)},u.working="undefined"!==typeof ArrayBuffer&&u(new ArrayBuffer),g.isArrayBuffer=y,b.working="undefined"!==typeof ArrayBuffer&&"undefined"!==typeof DataView&&b(new DataView(new ArrayBuffer(1),0,1)),g.isDataView=Z;var m="undefined"!==typeof SharedArrayBuffer?SharedArrayBuffer:void 0;function x(g){return"[object SharedArrayBuffer]"===n(g)}function R(g){return"undefined"!==typeof m&&("undefined"===typeof x.working&&(x.working=x(new m)),x.working?x(g):g instanceof m)}function S(g){return l(g,U)}function G(g){return l(g,s)}function L(g){return l(g,i)}function V(g){return F&&l(g,c)}function h(g){return B&&l(g,A)}g.isSharedArrayBuffer=R,g.isAsyncFunction=function(g){return"[object AsyncFunction]"===n(g)},g.isMapIterator=function(g){return"[object Map Iterator]"===n(g)},g.isSetIterator=function(g){return"[object Set Iterator]"===n(g)},g.isGeneratorObject=function(g){return"[object Generator]"===n(g)},g.isWebAssemblyCompiledModule=function(g){return"[object WebAssembly.Module]"===n(g)},g.isNumberObject=S,g.isStringObject=G,g.isBooleanObject=L,g.isBigIntObject=V,g.isSymbolObject=h,g.isBoxedPrimitive=function(g){return S(g)||G(g)||L(g)||V(g)||h(g)},g.isAnyArrayBuffer=function(g){return"undefined"!==typeof Uint8Array&&(y(g)||R(g))},["isProxy","isExternal","isModuleNamespaceObject"].forEach((function(I){Object.defineProperty(g,I,{enumerable:!1,value:function(){throw new Error(I+" is not supported in userland")}})}))}(eI);var fe=function(g){return g&&"object"===typeof g&&"function"===typeof g.copy&&"function"===typeof g.fill&&"function"===typeof g.readUInt8},Xe={exports:{}};"function"===typeof Object.create?Xe.exports=function(g,I){I&&(g.super_=I,g.prototype=Object.create(I.prototype,{constructor:{value:g,enumerable:!1,writable:!0,configurable:!0}}))}:Xe.exports=function(g,I){if(I){g.super_=I;var e=function(){};e.prototype=I.prototype,g.prototype=new e,g.prototype.constructor=g}},function(g){var I=Object.getOwnPropertyDescriptors||function(g){for(var I=Object.keys(g),e={},t=0;t<I.length;t++)e[I[t]]=Object.getOwnPropertyDescriptor(g,I[t]);return e},e=/%[sdj%]/g;g.format=function(g){if(!r(g)){for(var I=[],t=0;t<arguments.length;t++)I.push(F(arguments[t]));return I.join(" ")}t=1;for(var C=arguments,Q=C.length,B=String(g).replace(e,(function(g){if("%%"===g)return"%";if(t>=Q)return g;switch(g){case"%s":return String(C[t++]);case"%d":return Number(C[t++]);case"%j":try{return JSON.stringify(C[t++])}catch(I){return"[Circular]"}default:return g}})),n=C[t];t<Q;n=C[++t])l(n)||!u(n)?B+=" "+n:B+=" "+F(n);return B},g.deprecate=function(I,e){if("undefined"!==typeof mg&&!0===mg.noDeprecation)return I;if("undefined"===typeof mg)return function(){return g.deprecate(I,e).apply(this,arguments)};var t=!1;return function(){return t||(console.error(e),t=!0),I.apply(this,arguments)}};var t={},C=/^$/;if(mg.env.NODE_DEBUG){var Q=mg.env.NODE_DEBUG;Q=Q.replace(/[|\\{}()[\]^$+?.]/g,"\\$&").replace(/\*/g,".*").replace(/,/g,"$|^").toUpperCase(),C=new RegExp("^"+Q+"$","i")}function F(I,e){var t={seen:[],stylize:n};return arguments.length>=3&&(t.depth=arguments[2]),arguments.length>=4&&(t.colors=arguments[3]),A(e)?t.showHidden=e:e&&g._extend(t,e),o(t.showHidden)&&(t.showHidden=!1),o(t.depth)&&(t.depth=2),o(t.colors)&&(t.colors=!1),o(t.customInspect)&&(t.customInspect=!0),t.colors&&(t.stylize=B),U(t,I,t.depth)}function B(g,I){var e=F.styles[I];return e?"\x1b["+F.colors[e][0]+"m"+g+"\x1b["+F.colors[e][1]+"m":g}function n(g,I){return g}function U(I,e,t){if(I.customInspect&&e&&Z(e.inspect)&&e.inspect!==g.inspect&&(!e.constructor||e.constructor.prototype!==e)){var C=e.inspect(t,I);return r(C)||(C=U(I,C,t)),C}var Q=function(g,I){if(o(I))return g.stylize("undefined","undefined");if(r(I)){var e="'"+JSON.stringify(I).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return g.stylize(e,"string")}if(a(I))return g.stylize(""+I,"number");if(A(I))return g.stylize(""+I,"boolean");if(l(I))return g.stylize("null","null")}(I,e);if(Q)return Q;var F=Object.keys(e),B=function(g){var I={};return g.forEach((function(g,e){I[g]=!0})),I}(F);if(I.showHidden&&(F=Object.getOwnPropertyNames(e)),b(e)&&(F.indexOf("message")>=0||F.indexOf("description")>=0))return s(e);if(0===F.length){if(Z(e)){var n=e.name?": "+e.name:"";return I.stylize("[Function"+n+"]","special")}if(d(e))return I.stylize(RegExp.prototype.toString.call(e),"regexp");if(y(e))return I.stylize(Date.prototype.toString.call(e),"date");if(b(e))return s(e)}var u,m="",x=!1,R=["{","}"];(c(e)&&(x=!0,R=["[","]"]),Z(e))&&(m=" [Function"+(e.name?": "+e.name:"")+"]");return d(e)&&(m=" "+RegExp.prototype.toString.call(e)),y(e)&&(m=" "+Date.prototype.toUTCString.call(e)),b(e)&&(m=" "+s(e)),0!==F.length||x&&0!=e.length?t<0?d(e)?I.stylize(RegExp.prototype.toString.call(e),"regexp"):I.stylize("[Object]","special"):(I.seen.push(e),u=x?function(g,I,e,t,C){for(var Q=[],F=0,B=I.length;F<B;++F)G(I,String(F))?Q.push(i(g,I,e,t,String(F),!0)):Q.push("");return C.forEach((function(C){C.match(/^\d+$/)||Q.push(i(g,I,e,t,C,!0))})),Q}(I,e,t,B,F):F.map((function(g){return i(I,e,t,B,g,x)})),I.seen.pop(),function(g,I,e){if(g.reduce((function(g,I){return I.indexOf("\n"),g+I.replace(/\u001b\[\d\d?m/g,"").length+1}),0)>60)return e[0]+(""===I?"":I+"\n ")+" "+g.join(",\n  ")+" "+e[1];return e[0]+I+" "+g.join(", ")+" "+e[1]}(u,m,R)):R[0]+m+R[1]}function s(g){return"["+Error.prototype.toString.call(g)+"]"}function i(g,I,e,t,C,Q){var F,B,n;if((n=Object.getOwnPropertyDescriptor(I,C)||{value:I[C]}).get?B=n.set?g.stylize("[Getter/Setter]","special"):g.stylize("[Getter]","special"):n.set&&(B=g.stylize("[Setter]","special")),G(t,C)||(F="["+C+"]"),B||(g.seen.indexOf(n.value)<0?(B=l(e)?U(g,n.value,null):U(g,n.value,e-1)).indexOf("\n")>-1&&(B=Q?B.split("\n").map((function(g){return"  "+g})).join("\n").substr(2):"\n"+B.split("\n").map((function(g){return"   "+g})).join("\n")):B=g.stylize("[Circular]","special")),o(F)){if(Q&&C.match(/^\d+$/))return B;(F=JSON.stringify(""+C)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(F=F.substr(1,F.length-2),F=g.stylize(F,"name")):(F=F.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),F=g.stylize(F,"string"))}return F+": "+B}function c(g){return Array.isArray(g)}function A(g){return"boolean"===typeof g}function l(g){return null===g}function a(g){return"number"===typeof g}function r(g){return"string"===typeof g}function o(g){return void 0===g}function d(g){return u(g)&&"[object RegExp]"===m(g)}function u(g){return"object"===typeof g&&null!==g}function y(g){return u(g)&&"[object Date]"===m(g)}function b(g){return u(g)&&("[object Error]"===m(g)||g instanceof Error)}function Z(g){return"function"===typeof g}function m(g){return Object.prototype.toString.call(g)}function x(g){return g<10?"0"+g.toString(10):g.toString(10)}g.debuglog=function(I){if(I=I.toUpperCase(),!t[I])if(C.test(I)){var e=mg.pid;t[I]=function(){var t=g.format.apply(g,arguments);console.error("%s %d: %s",I,e,t)}}else t[I]=function(){};return t[I]},g.inspect=F,F.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},F.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},g.types=eI,g.isArray=c,g.isBoolean=A,g.isNull=l,g.isNullOrUndefined=function(g){return null==g},g.isNumber=a,g.isString=r,g.isSymbol=function(g){return"symbol"===typeof g},g.isUndefined=o,g.isRegExp=d,g.types.isRegExp=d,g.isObject=u,g.isDate=y,g.types.isDate=y,g.isError=b,g.types.isNativeError=b,g.isFunction=Z,g.isPrimitive=function(g){return null===g||"boolean"===typeof g||"number"===typeof g||"string"===typeof g||"symbol"===typeof g||"undefined"===typeof g},g.isBuffer=fe;var R=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function S(){var g=new Date,I=[x(g.getHours()),x(g.getMinutes()),x(g.getSeconds())].join(":");return[g.getDate(),R[g.getMonth()],I].join(" ")}function G(g,I){return Object.prototype.hasOwnProperty.call(g,I)}g.log=function(){console.log("%s - %s",S(),g.format.apply(g,arguments))},g.inherits=Xe.exports,g._extend=function(g,I){if(!I||!u(I))return g;for(var e=Object.keys(I),t=e.length;t--;)g[e[t]]=I[e[t]];return g};var L="undefined"!==typeof Symbol?Symbol("util.promisify.custom"):void 0;function V(g,I){if(!g){var e=new Error("Promise was rejected with a falsy value");e.reason=g,g=e}return I(g)}g.promisify=function(g){if("function"!==typeof g)throw new TypeError('The "original" argument must be of type Function');if(L&&g[L]){var e;if("function"!==typeof(e=g[L]))throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(e,L,{value:e,enumerable:!1,writable:!1,configurable:!0}),e}function e(){for(var I,e,t=new Promise((function(g,t){I=g,e=t})),C=[],Q=0;Q<arguments.length;Q++)C.push(arguments[Q]);C.push((function(g,t){g?e(g):I(t)}));try{g.apply(this,C)}catch(XB){e(XB)}return t}return Object.setPrototypeOf(e,Object.getPrototypeOf(g)),L&&Object.defineProperty(e,L,{value:e,enumerable:!1,writable:!1,configurable:!0}),Object.defineProperties(e,I(g))},g.promisify.custom=L,g.callbackify=function(g){if("function"!==typeof g)throw new TypeError('The "original" argument must be of type Function');function e(){for(var I=[],e=0;e<arguments.length;e++)I.push(arguments[e]);var t=I.pop();if("function"!==typeof t)throw new TypeError("The last argument must be of type Function");var C=this,Q=function(){return t.apply(C,arguments)};g.apply(this,I).then((function(g){mg.nextTick(Q.bind(null,null,g))}),(function(g){mg.nextTick(V.bind(null,g,Q))}))}return Object.setPrototypeOf(e,Object.getPrototypeOf(g)),Object.defineProperties(e,I(g)),e}}(II);var Je,ve,ke={exports:{}},He=ke.exports={};function Me(){throw new Error("setTimeout has not been defined")}function Ye(){throw new Error("clearTimeout has not been defined")}function we(g){if(Je===setTimeout)return setTimeout(g,0);if((Je===Me||!Je)&&setTimeout)return Je=setTimeout,setTimeout(g,0);try{return Je(g,0)}catch(Rn){try{return Je.call(null,g,0)}catch(Rn){return Je.call(this,g,0)}}}!function(){try{Je="function"===typeof setTimeout?setTimeout:Me}catch(Rn){Je=Me}try{ve="function"===typeof clearTimeout?clearTimeout:Ye}catch(Rn){ve=Ye}}();var Te,ze=[],Oe=!1,Ke=-1;function je(){Oe&&Te&&(Oe=!1,Te.length?ze=Te.concat(ze):Ke=-1,ze.length&&Pe())}function Pe(){if(!Oe){var g=we(je);Oe=!0;for(var I=ze.length;I;){for(Te=ze,ze=[];++Ke<I;)Te&&Te[Ke].run();Ke=-1,I=ze.length}Te=null,Oe=!1,function(g){if(ve===clearTimeout)return clearTimeout(g);if((ve===Ye||!ve)&&clearTimeout)return ve=clearTimeout,clearTimeout(g);try{ve(g)}catch(Rn){try{return ve.call(null,g)}catch(Rn){return ve.call(this,g)}}}(g)}}function _e(g,I){this.fun=g,this.array=I}function qe(){}function $e(){this.head=null,this.tail=null,this.length=0}He.nextTick=function(g){var I=new Array(arguments.length-1);if(arguments.length>1)for(var e=1;e<arguments.length;e++)I[e-1]=arguments[e];ze.push(new _e(g,I)),1!==ze.length||Oe||we(Pe)},_e.prototype.run=function(){this.fun.apply(null,this.array)},He.title="browser",He.browser=!0,He.env={},He.argv=[],He.version="",He.versions={},He.on=qe,He.addListener=qe,He.once=qe,He.off=qe,He.removeListener=qe,He.removeAllListeners=qe,He.emit=qe,He.prependListener=qe,He.prependOnceListener=qe,He.listeners=function(g){return[]},He.binding=function(g){throw new Error("process.binding is not supported")},He.cwd=function(){return"/"},He.chdir=function(g){throw new Error("process.chdir is not supported")},He.umask=function(){return 0},$e.prototype.push=function(g){var I={data:g,next:null};this.length>0?this.tail.next=I:this.head=I,this.tail=I,++this.length},$e.prototype.unshift=function(g){var I={data:g,next:this.head};0===this.length&&(this.tail=I),this.head=I,++this.length},$e.prototype.shift=function(){if(0!==this.length){var g=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,g}},$e.prototype.clear=function(){this.head=this.tail=null,this.length=0},$e.prototype.join=function(g){if(0===this.length)return"";for(var I=this.head,e=""+I.data;I=I.next;)e+=g+I.data;return e},$e.prototype.concat=function(g){if(0===this.length)return Gg.Buffer.alloc(0);if(1===this.length)return this.head.data;for(var I=Gg.Buffer.allocUnsafe(g>>>0),e=this.head,t=0;e;)e.data.copy(I,t),t+=e.data.length,e=e.next;return I};var gt={exports:{}};!function(g,I){var e=Gg,t=e.Buffer;function C(g,I){for(var e in g)I[e]=g[e]}function Q(g,I,e){return t(g,I,e)}t.from&&t.alloc&&t.allocUnsafe&&t.allocUnsafeSlow?g.exports=e:(C(e,I),I.Buffer=Q),Q.prototype=Object.create(t.prototype),C(t,Q),Q.from=function(g,I,e){if("number"===typeof g)throw new TypeError("Argument must not be a number");return t(g,I,e)},Q.alloc=function(g,I,e){if("number"!==typeof g)throw new TypeError("Argument must be a number");var C=t(g);return void 0!==I?"string"===typeof e?C.fill(I,e):C.fill(I):C.fill(0),C},Q.allocUnsafe=function(g){if("number"!==typeof g)throw new TypeError("Argument must be a number");return t(g)},Q.allocUnsafeSlow=function(g){if("number"!==typeof g)throw new TypeError("Argument must be a number");return e.SlowBuffer(g)}}(gt,gt.exports);var It=gt.exports.Buffer,et=It.isEncoding||function(g){switch((g=""+g)&&g.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};var tt=Ct;function Ct(g){var I;switch(this.encoding=function(g){var I=function(g){if(!g)return"utf8";for(var I;;)switch(g){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return g;default:if(I)return;g=(""+g).toLowerCase(),I=!0}}(g);if("string"!==typeof I&&(It.isEncoding===et||!et(g)))throw new Error("Unknown encoding: "+g);return I||g}(g),this.encoding){case"utf16le":this.text=Bt,this.end=nt,I=4;break;case"utf8":this.fillLast=Ft,I=4;break;case"base64":this.text=Ut,this.end=st,I=3;break;default:return this.write=it,void(this.end=ct)}this.lastNeed=0,this.lastTotal=0,this.lastChar=It.allocUnsafe(I)}function Qt(g){return g<=127?0:g>>5===6?2:g>>4===14?3:g>>3===30?4:g>>6===2?-1:-2}function Ft(g){var I=this.lastTotal-this.lastNeed,e=function(g,I,e){if(128!==(192&I[0]))return g.lastNeed=0,"\ufffd";if(g.lastNeed>1&&I.length>1){if(128!==(192&I[1]))return g.lastNeed=1,"\ufffd";if(g.lastNeed>2&&I.length>2&&128!==(192&I[2]))return g.lastNeed=2,"\ufffd"}}(this,g);return void 0!==e?e:this.lastNeed<=g.length?(g.copy(this.lastChar,I,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(g.copy(this.lastChar,I,0,g.length),void(this.lastNeed-=g.length))}function Bt(g,I){if((g.length-I)%2===0){var e=g.toString("utf16le",I);if(e){var t=e.charCodeAt(e.length-1);if(t>=55296&&t<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=g[g.length-2],this.lastChar[1]=g[g.length-1],e.slice(0,-1)}return e}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=g[g.length-1],g.toString("utf16le",I,g.length-1)}function nt(g){var I=g&&g.length?this.write(g):"";if(this.lastNeed){var e=this.lastTotal-this.lastNeed;return I+this.lastChar.toString("utf16le",0,e)}return I}function Ut(g,I){var e=(g.length-I)%3;return 0===e?g.toString("base64",I):(this.lastNeed=3-e,this.lastTotal=3,1===e?this.lastChar[0]=g[g.length-1]:(this.lastChar[0]=g[g.length-2],this.lastChar[1]=g[g.length-1]),g.toString("base64",I,g.length-e))}function st(g){var I=g&&g.length?this.write(g):"";return this.lastNeed?I+this.lastChar.toString("base64",0,3-this.lastNeed):I}function it(g){return g.toString(this.encoding)}function ct(g){return g&&g.length?this.write(g):""}Ct.prototype.write=function(g){if(0===g.length)return"";var I,e;if(this.lastNeed){if(void 0===(I=this.fillLast(g)))return"";e=this.lastNeed,this.lastNeed=0}else e=0;return e<g.length?I?I+this.text(g,e):this.text(g,e):I||""},Ct.prototype.end=function(g){var I=g&&g.length?this.write(g):"";return this.lastNeed?I+"\ufffd":I},Ct.prototype.text=function(g,I){var e=function(g,I,e){var t=I.length-1;if(t<e)return 0;var C=Qt(I[t]);if(C>=0)return C>0&&(g.lastNeed=C-1),C;if(--t<e||-2===C)return 0;if((C=Qt(I[t]))>=0)return C>0&&(g.lastNeed=C-2),C;if(--t<e||-2===C)return 0;if((C=Qt(I[t]))>=0)return C>0&&(2===C?C=0:g.lastNeed=C-3),C;return 0}(this,g,I);if(!this.lastNeed)return g.toString("utf8",I);this.lastTotal=e;var t=g.length-(e-this.lastNeed);return g.copy(this.lastChar,0,t),g.toString("utf8",I,t)},Ct.prototype.fillLast=function(g){if(this.lastNeed<=g.length)return g.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);g.copy(this.lastChar,this.lastTotal-this.lastNeed,0,g.length),this.lastNeed-=g.length},at.ReadableState=lt;var At=II.debuglog("stream");function lt(g,I){g=g||{},this.objectMode=!!g.objectMode,I instanceof Mt&&(this.objectMode=this.objectMode||!!g.readableObjectMode);var e=g.highWaterMark,t=this.objectMode?16:16384;this.highWaterMark=e||0===e?e:t,this.highWaterMark=~~this.highWaterMark,this.buffer=new $e,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.defaultEncoding=g.defaultEncoding||"utf8",this.ranOut=!1,this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,g.encoding&&(this.decoder=new tt(g.encoding),this.encoding=g.encoding)}function at(g){if(!(this instanceof at))return new at(g);this._readableState=new lt(g,this),this.readable=!0,g&&"function"===typeof g.read&&(this._read=g.read),gI.call(this)}function rt(g,I,e,t,C){var Q=function(g,I){var e=null;o.isBuffer(I)||"string"===typeof I||null===I||void 0===I||g.objectMode||(e=new TypeError("Invalid non-string/buffer chunk"));return e}(I,e);if(Q)g.emit("error",Q);else if(null===e)I.reading=!1,function(g,I){if(I.ended)return;if(I.decoder){var e=I.decoder.end();e&&e.length&&(I.buffer.push(e),I.length+=I.objectMode?1:e.length)}I.ended=!0,dt(g)}(g,I);else if(I.objectMode||e&&e.length>0)if(I.ended&&!C){var F=new Error("stream.push() after EOF");g.emit("error",F)}else if(I.endEmitted&&C){var B=new Error("stream.unshift() after end event");g.emit("error",B)}else{var n;!I.decoder||C||t||(e=I.decoder.write(e),n=!I.objectMode&&0===e.length),C||(I.reading=!1),n||(I.flowing&&0===I.length&&!I.sync?(g.emit("data",e),g.read(0)):(I.length+=I.objectMode?1:e.length,C?I.buffer.unshift(e):I.buffer.push(e),I.needReadable&&dt(g))),function(g,I){I.readingMore||(I.readingMore=!0,ke.exports.nextTick(yt,g,I))}(g,I)}else C||(I.reading=!1);return function(g){return!g.ended&&(g.needReadable||g.length<g.highWaterMark||0===g.length)}(I)}II.inherits(at,gI),at.prototype.push=function(g,I){var e=this._readableState;return e.objectMode||"string"!==typeof g||(I=I||e.defaultEncoding)!==e.encoding&&(g=o.from(g,I),I=""),rt(this,e,g,I,!1)},at.prototype.unshift=function(g){return rt(this,this._readableState,g,"",!0)},at.prototype.isPaused=function(){return!1===this._readableState.flowing},at.prototype.setEncoding=function(g){return this._readableState.decoder=new tt(g),this._readableState.encoding=g,this};function ot(g,I){return g<=0||0===I.length&&I.ended?0:I.objectMode?1:g!==g?I.flowing&&I.length?I.buffer.head.data.length:I.length:(g>I.highWaterMark&&(I.highWaterMark=function(g){return g>=8388608?g=8388608:(g--,g|=g>>>1,g|=g>>>2,g|=g>>>4,g|=g>>>8,g|=g>>>16,g++),g}(g)),g<=I.length?g:I.ended?I.length:(I.needReadable=!0,0))}function dt(g){var I=g._readableState;I.needReadable=!1,I.emittedReadable||(At("emitReadable",I.flowing),I.emittedReadable=!0,I.sync?ke.exports.nextTick(ut,g):ut(g))}function ut(g){At("emit readable"),g.emit("readable"),mt(g)}function yt(g,I){for(var e=I.length;!I.reading&&!I.flowing&&!I.ended&&I.length<I.highWaterMark&&(At("maybeReadMore read 0"),g.read(0),e!==I.length);)e=I.length;I.readingMore=!1}function bt(g){At("readable nexttick read 0"),g.read(0)}function Zt(g,I){I.reading||(At("resume read 0"),g.read(0)),I.resumeScheduled=!1,I.awaitDrain=0,g.emit("resume"),mt(g),I.flowing&&!I.reading&&g.read(0)}function mt(g){var I=g._readableState;for(At("flow",I.flowing);I.flowing&&null!==g.read(););}function xt(g,I){return 0===I.length?null:(I.objectMode?e=I.buffer.shift():!g||g>=I.length?(e=I.decoder?I.buffer.join(""):1===I.buffer.length?I.buffer.head.data:I.buffer.concat(I.length),I.buffer.clear()):e=function(g,I,e){var t;g<I.head.data.length?(t=I.head.data.slice(0,g),I.head.data=I.head.data.slice(g)):t=g===I.head.data.length?I.shift():e?function(g,I){var e=I.head,t=1,C=e.data;g-=C.length;for(;e=e.next;){var Q=e.data,F=g>Q.length?Q.length:g;if(F===Q.length?C+=Q:C+=Q.slice(0,g),0===(g-=F)){F===Q.length?(++t,e.next?I.head=e.next:I.head=I.tail=null):(I.head=e,e.data=Q.slice(F));break}++t}return I.length-=t,C}(g,I):function(g,I){var e=o.allocUnsafe(g),t=I.head,C=1;t.data.copy(e),g-=t.data.length;for(;t=t.next;){var Q=t.data,F=g>Q.length?Q.length:g;if(Q.copy(e,e.length-g,0,F),0===(g-=F)){F===Q.length?(++C,t.next?I.head=t.next:I.head=I.tail=null):(I.head=t,t.data=Q.slice(F));break}++C}return I.length-=C,e}(g,I);return t}(g,I.buffer,I.decoder),e);var e}function Rt(g){var I=g._readableState;if(I.length>0)throw new Error('"endReadable()" called on non-empty stream');I.endEmitted||(I.ended=!0,ke.exports.nextTick(St,I,g))}function St(g,I){g.endEmitted||0!==g.length||(g.endEmitted=!0,I.readable=!1,I.emit("end"))}function Gt(g,I){for(var e=0,t=g.length;e<t;e++)if(g[e]===I)return e;return-1}function Lt(){}function Vt(g,I,e){this.chunk=g,this.encoding=I,this.callback=e,this.next=null}function ht(g,I){Object.defineProperty(this,"buffer",{get:II.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.")}),g=g||{},this.objectMode=!!g.objectMode,I instanceof Mt&&(this.objectMode=this.objectMode||!!g.writableObjectMode);var e=g.highWaterMark,t=this.objectMode?16:16384;this.highWaterMark=e||0===e?e:t,this.highWaterMark=~~this.highWaterMark,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1;var C=!1===g.decodeStrings;this.decodeStrings=!C,this.defaultEncoding=g.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(g){!function(g,I){var e=g._writableState,t=e.sync,C=e.writecb;if(function(g){g.writing=!1,g.writecb=null,g.length-=g.writelen,g.writelen=0}(e),I)!function(g,I,e,t,C){--I.pendingcb,e?ke.exports.nextTick(C,t):C(t);g._writableState.errorEmitted=!0,g.emit("error",t)}(g,e,t,I,C);else{var Q=Wt(e);Q||e.corked||e.bufferProcessing||!e.bufferedRequest||Nt(g,e),t?ke.exports.nextTick(Et,g,e,Q,C):Et(g,e,Q,C)}}(I,g)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new Jt(this)}function Dt(g){if(!(this instanceof Dt)&&!(this instanceof Mt))return new Dt(g);this._writableState=new ht(g,this),this.writable=!0,g&&("function"===typeof g.write&&(this._write=g.write),"function"===typeof g.writev&&(this._writev=g.writev)),vg.exports.EventEmitter.call(this)}function pt(g,I,e,t,C,Q,F){I.writelen=t,I.writecb=F,I.writing=!0,I.sync=!0,e?g._writev(C,I.onwrite):g._write(C,Q,I.onwrite),I.sync=!1}function Et(g,I,e,t){e||function(g,I){0===I.length&&I.needDrain&&(I.needDrain=!1,g.emit("drain"))}(g,I),I.pendingcb--,t(),Xt(g,I)}function Nt(g,I){I.bufferProcessing=!0;var e=I.bufferedRequest;if(g._writev&&e&&e.next){var t=I.bufferedRequestCount,C=new Array(t),Q=I.corkedRequestsFree;Q.entry=e;for(var F=0;e;)C[F]=e,e=e.next,F+=1;pt(g,I,!0,I.length,C,"",Q.finish),I.pendingcb++,I.lastBufferedRequest=null,Q.next?(I.corkedRequestsFree=Q.next,Q.next=null):I.corkedRequestsFree=new Jt(I)}else{for(;e;){var B=e.chunk,n=e.encoding,U=e.callback;if(pt(g,I,!1,I.objectMode?1:B.length,B,n,U),e=e.next,I.writing)break}null===e&&(I.lastBufferedRequest=null)}I.bufferedRequestCount=0,I.bufferedRequest=e,I.bufferProcessing=!1}function Wt(g){return g.ending&&0===g.length&&null===g.bufferedRequest&&!g.finished&&!g.writing}function ft(g,I){I.prefinished||(I.prefinished=!0,g.emit("prefinish"))}function Xt(g,I){var e=Wt(I);return e&&(0===I.pendingcb?(ft(g,I),I.finished=!0,g.emit("finish")):ft(g,I)),e}function Jt(g){var I=this;this.next=null,this.entry=null,this.finish=function(e){var t=I.entry;for(I.entry=null;t;){var C=t.callback;g.pendingcb--,C(e),t=t.next}g.corkedRequestsFree?g.corkedRequestsFree.next=I:g.corkedRequestsFree=I}}at.prototype.read=function(g){At("read",g),g=parseInt(g,10);var I=this._readableState,e=g;if(0!==g&&(I.emittedReadable=!1),0===g&&I.needReadable&&(I.length>=I.highWaterMark||I.ended))return At("read: emitReadable",I.length,I.ended),0===I.length&&I.ended?Rt(this):dt(this),null;if(0===(g=ot(g,I))&&I.ended)return 0===I.length&&Rt(this),null;var t,C=I.needReadable;return At("need readable",C),(0===I.length||I.length-g<I.highWaterMark)&&At("length less than watermark",C=!0),I.ended||I.reading?At("reading or ended",C=!1):C&&(At("do read"),I.reading=!0,I.sync=!0,0===I.length&&(I.needReadable=!0),this._read(I.highWaterMark),I.sync=!1,I.reading||(g=ot(e,I))),null===(t=g>0?xt(g,I):null)?(I.needReadable=!0,g=0):I.length-=g,0===I.length&&(I.ended||(I.needReadable=!0),e!==g&&I.ended&&Rt(this)),null!==t&&this.emit("data",t),t},at.prototype._read=function(g){this.emit("error",new Error("not implemented"))},at.prototype.pipe=function(g,I){var e=this,t=this._readableState;switch(t.pipesCount){case 0:t.pipes=g;break;case 1:t.pipes=[t.pipes,g];break;default:t.pipes.push(g)}t.pipesCount+=1,At("pipe count=%d opts=%j",t.pipesCount,I);var C=!I||!1!==I.end?F:U;function Q(g){At("onunpipe"),g===e&&U()}function F(){At("onend"),g.end()}t.endEmitted?ke.exports.nextTick(C):e.once("end",C),g.on("unpipe",Q);var B=function(g){return function(){var I=g._readableState;At("pipeOnDrain",I.awaitDrain),I.awaitDrain&&I.awaitDrain--,0===I.awaitDrain&&g.listeners("data").length&&(I.flowing=!0,mt(g))}}(e);g.on("drain",B);var n=!1;function U(){At("cleanup"),g.removeListener("close",A),g.removeListener("finish",l),g.removeListener("drain",B),g.removeListener("error",c),g.removeListener("unpipe",Q),e.removeListener("end",F),e.removeListener("end",U),e.removeListener("data",i),n=!0,!t.awaitDrain||g._writableState&&!g._writableState.needDrain||B()}var s=!1;function i(I){At("ondata"),s=!1,!1!==g.write(I)||s||((1===t.pipesCount&&t.pipes===g||t.pipesCount>1&&-1!==Gt(t.pipes,g))&&!n&&(At("false write response, pause",e._readableState.awaitDrain),e._readableState.awaitDrain++,s=!0),e.pause())}function c(I){var e;At("onerror",I),a(),g.removeListener("error",c),0===(e="error",g.listeners(e).length)&&g.emit("error",I)}function A(){g.removeListener("finish",l),a()}function l(){At("onfinish"),g.removeListener("close",A),a()}function a(){At("unpipe"),e.unpipe(g)}return e.on("data",i),function(g,I,e){if("function"===typeof g.prependListener)return g.prependListener(I,e);g._events&&g._events[I]?Array.isArray(g._events[I])?g._events[I].unshift(e):g._events[I]=[e,g._events[I]]:g.on(I,e)}(g,"error",c),g.once("close",A),g.once("finish",l),g.emit("pipe",e),t.flowing||(At("pipe resume"),e.resume()),g},at.prototype.unpipe=function(g){var I=this._readableState;if(0===I.pipesCount)return this;if(1===I.pipesCount)return g&&g!==I.pipes||(g||(g=I.pipes),I.pipes=null,I.pipesCount=0,I.flowing=!1,g&&g.emit("unpipe",this)),this;if(!g){var e=I.pipes,t=I.pipesCount;I.pipes=null,I.pipesCount=0,I.flowing=!1;for(var C=0;C<t;C++)e[C].emit("unpipe",this);return this}var Q=Gt(I.pipes,g);return-1===Q||(I.pipes.splice(Q,1),I.pipesCount-=1,1===I.pipesCount&&(I.pipes=I.pipes[0]),g.emit("unpipe",this)),this},at.prototype.on=function(g,I){var e=gI.prototype.on.call(this,g,I);if("data"===g)!1!==this._readableState.flowing&&this.resume();else if("readable"===g){var t=this._readableState;t.endEmitted||t.readableListening||(t.readableListening=t.needReadable=!0,t.emittedReadable=!1,t.reading?t.length&&dt(this):ke.exports.nextTick(bt,this))}return e},at.prototype.addListener=at.prototype.on,at.prototype.resume=function(){var g=this._readableState;return g.flowing||(At("resume"),g.flowing=!0,function(g,I){I.resumeScheduled||(I.resumeScheduled=!0,ke.exports.nextTick(Zt,g,I))}(this,g)),this},at.prototype.pause=function(){return At("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(At("pause"),this._readableState.flowing=!1,this.emit("pause")),this},at.prototype.wrap=function(g){var I=this._readableState,e=!1,t=this;for(var C in g.on("end",(function(){if(At("wrapped end"),I.decoder&&!I.ended){var g=I.decoder.end();g&&g.length&&t.push(g)}t.push(null)})),g.on("data",(function(C){(At("wrapped data"),I.decoder&&(C=I.decoder.write(C)),!I.objectMode||null!==C&&void 0!==C)&&((I.objectMode||C&&C.length)&&(t.push(C)||(e=!0,g.pause())))})),g)void 0===this[C]&&"function"===typeof g[C]&&(this[C]=function(I){return function(){return g[I].apply(g,arguments)}}(C));return function(g,I){for(var e=0,t=g.length;e<t;e++)I(g[e],e)}(["error","close","destroy","pause","resume"],(function(I){g.on(I,t.emit.bind(t,I))})),t._read=function(I){At("wrapped _read",I),e&&(e=!1,g.resume())},t},at._fromList=xt,Dt.WritableState=ht,II.inherits(Dt,vg.exports.EventEmitter),ht.prototype.getBuffer=function(){for(var g=this.bufferedRequest,I=[];g;)I.push(g),g=g.next;return I},Dt.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},Dt.prototype.write=function(g,I,e){var t=this._writableState,C=!1;return"function"===typeof I&&(e=I,I=null),Gg.Buffer.isBuffer(g)?I="buffer":I||(I=t.defaultEncoding),"function"!==typeof e&&(e=Lt),t.ended?function(g,I){var e=new Error("write after end");g.emit("error",e),ke.exports.nextTick(I,e)}(this,e):function(g,I,e,t){var C=!0,Q=!1;return null===e?Q=new TypeError("May not write null values to stream"):Gg.Buffer.isBuffer(e)||"string"===typeof e||void 0===e||I.objectMode||(Q=new TypeError("Invalid non-string/buffer chunk")),Q&&(g.emit("error",Q),ke.exports.nextTick(t,Q),C=!1),C}(this,t,g,e)&&(t.pendingcb++,C=function(g,I,e,t,C){e=function(g,I,e){g.objectMode||!1===g.decodeStrings||"string"!==typeof I||(I=Gg.Buffer.from(I,e));return I}(I,e,t),Gg.Buffer.isBuffer(e)&&(t="buffer");var Q=I.objectMode?1:e.length;I.length+=Q;var F=I.length<I.highWaterMark;F||(I.needDrain=!0);if(I.writing||I.corked){var B=I.lastBufferedRequest;I.lastBufferedRequest=new Vt(e,t,C),B?B.next=I.lastBufferedRequest:I.bufferedRequest=I.lastBufferedRequest,I.bufferedRequestCount+=1}else pt(g,I,!1,Q,e,t,C);return F}(this,t,g,I,e)),C},Dt.prototype.cork=function(){this._writableState.corked++},Dt.prototype.uncork=function(){var g=this._writableState;g.corked&&(g.corked--,g.writing||g.corked||g.finished||g.bufferProcessing||!g.bufferedRequest||Nt(this,g))},Dt.prototype.setDefaultEncoding=function(g){if("string"===typeof g&&(g=g.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((g+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+g);return this._writableState.defaultEncoding=g,this},Dt.prototype._write=function(g,I,e){e(new Error("not implemented"))},Dt.prototype._writev=null,Dt.prototype.end=function(g,I,e){var t=this._writableState;"function"===typeof g?(e=g,g=null,I=null):"function"===typeof I&&(e=I,I=null),null!==g&&void 0!==g&&this.write(g,I),t.corked&&(t.corked=1,this.uncork()),t.ending||t.finished||function(g,I,e){I.ending=!0,Xt(g,I),e&&(I.finished?ke.exports.nextTick(e):g.once("finish",e));I.ended=!0,g.writable=!1}(this,t,e)},II.inherits(Mt,at);for(var vt=Object.keys(Dt.prototype),kt=0;kt<vt.length;kt++){var Ht=vt[kt];Mt.prototype[Ht]||(Mt.prototype[Ht]=Dt.prototype[Ht])}function Mt(g){if(!(this instanceof Mt))return new Mt(g);at.call(this,g),Dt.call(this,g),g&&!1===g.readable&&(this.readable=!1),g&&!1===g.writable&&(this.writable=!1),this.allowHalfOpen=!0,g&&!1===g.allowHalfOpen&&(this.allowHalfOpen=!1),this.once("end",Yt)}function Yt(){this.allowHalfOpen||this._writableState.ended||ke.exports.nextTick(wt,this)}function wt(g){g.end()}function Tt(g){this.afterTransform=function(I,e){return function(g,I,e){var t=g._transformState;t.transforming=!1;var C=t.writecb;if(!C)return g.emit("error",new Error("no writecb in Transform class"));t.writechunk=null,t.writecb=null,null!==e&&void 0!==e&&g.push(e);C(I);var Q=g._readableState;Q.reading=!1,(Q.needReadable||Q.length<Q.highWaterMark)&&g._read(Q.highWaterMark)}(g,I,e)},this.needTransform=!1,this.transforming=!1,this.writecb=null,this.writechunk=null,this.writeencoding=null}function zt(g){if(!(this instanceof zt))return new zt(g);Mt.call(this,g),this._transformState=new Tt(this);var I=this;this._readableState.needReadable=!0,this._readableState.sync=!1,g&&("function"===typeof g.transform&&(this._transform=g.transform),"function"===typeof g.flush&&(this._flush=g.flush)),this.once("prefinish",(function(){"function"===typeof this._flush?this._flush((function(g){Ot(I,g)})):Ot(I)}))}function Ot(g,I){if(I)return g.emit("error",I);var e=g._writableState,t=g._transformState;if(e.length)throw new Error("Calling transform done when ws.length != 0");if(t.transforming)throw new Error("Calling transform done when still transforming");return g.push(null)}function Kt(g){if(!(this instanceof Kt))return new Kt(g);zt.call(this,g)}function jt(){gI.call(this)}II.inherits(zt,Mt),zt.prototype.push=function(g,I){return this._transformState.needTransform=!1,Mt.prototype.push.call(this,g,I)},zt.prototype._transform=function(g,I,e){throw new Error("Not implemented")},zt.prototype._write=function(g,I,e){var t=this._transformState;if(t.writecb=e,t.writechunk=g,t.writeencoding=I,!t.transforming){var C=this._readableState;(t.needTransform||C.needReadable||C.length<C.highWaterMark)&&this._read(C.highWaterMark)}},zt.prototype._read=function(g){var I=this._transformState;null!==I.writechunk&&I.writecb&&!I.transforming?(I.transforming=!0,this._transform(I.writechunk,I.writeencoding,I.afterTransform)):I.needTransform=!0},II.inherits(Kt,zt),Kt.prototype._transform=function(g,I,e){e(null,g)},II.inherits(jt,gI),jt.Readable=at,jt.Writable=Dt,jt.Duplex=Mt,jt.Transform=zt,jt.PassThrough=Kt,jt.Stream=jt,jt.prototype.pipe=function(g,I){var e=this;function t(I){g.writable&&!1===g.write(I)&&e.pause&&e.pause()}function C(){e.readable&&e.resume&&e.resume()}e.on("data",t),g.on("drain",C),g._isStdio||I&&!1===I.end||(e.on("end",F),e.on("close",B));var Q=!1;function F(){Q||(Q=!0,g.end())}function B(){Q||(Q=!0,"function"===typeof g.destroy&&g.destroy())}function n(g){if(U(),0===gI.listenerCount(this,"error"))throw g}function U(){e.removeListener("data",t),g.removeListener("drain",C),e.removeListener("end",F),e.removeListener("close",B),e.removeListener("error",n),g.removeListener("error",n),e.removeListener("end",U),e.removeListener("close",U),g.removeListener("close",U)}return e.on("error",n),g.on("error",n),e.on("end",U),e.on("close",U),g.on("close",U),g.emit("pipe",e),g};var Pt=Rg(Object.freeze({__proto__:null,default:jt,Readable:at,Writable:Dt,Duplex:Mt,Transform:zt,PassThrough:Kt,Stream:jt})),_t={},qt={exports:{}},$t={};function gC(g){return(gC="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"===typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g})(g)}function IC(g,I){return!I||"object"!==gC(I)&&"function"!==typeof I?function(g){if(void 0===g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return g}(g):I}function eC(g){return(eC=Object.setPrototypeOf?Object.getPrototypeOf:function(g){return g.__proto__||Object.getPrototypeOf(g)})(g)}function tC(g,I){return(tC=Object.setPrototypeOf||function(g,I){return g.__proto__=I,g})(g,I)}var CC,QC,FC={};function BC(g,I,e){e||(e=Error);var t=function(e){function t(e,C,Q){var F;return function(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}(this,t),(F=IC(this,eC(t).call(this,function(g,e,t){return"string"===typeof I?I:I(g,e,t)}(e,C,Q)))).code=g,F}return function(g,I){if("function"!==typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function");g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,writable:!0,configurable:!0}}),I&&tC(g,I)}(t,e),t}(e);FC[g]=t}function nC(g,I){if(Array.isArray(g)){var e=g.length;return g=g.map((function(g){return String(g)})),e>2?"one of ".concat(I," ").concat(g.slice(0,e-1).join(", "),", or ")+g[e-1]:2===e?"one of ".concat(I," ").concat(g[0]," or ").concat(g[1]):"of ".concat(I," ").concat(g[0])}return"of ".concat(I," ").concat(String(g))}function UC(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}function sC(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}function iC(g,I){return!I||"object"!==dC(I)&&"function"!==typeof I?cC(g):I}function cC(g){if(void 0===g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return g}function AC(g){var I="function"===typeof Map?new Map:void 0;return(AC=function(g){if(null===g||(e=g,-1===Function.toString.call(e).indexOf("[native code]")))return g;var e;if("function"!==typeof g)throw new TypeError("Super expression must either be null or a function");if("undefined"!==typeof I){if(I.has(g))return I.get(g);I.set(g,t)}function t(){return aC(g,arguments,oC(this).constructor)}return t.prototype=Object.create(g.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),rC(t,g)})(g)}function lC(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(Rn){return!1}}function aC(g,I,e){return(aC=lC()?Reflect.construct:function(g,I,e){var t=[null];t.push.apply(t,I);var C=new(Function.bind.apply(g,t));return e&&rC(C,e.prototype),C}).apply(null,arguments)}function rC(g,I){return(rC=Object.setPrototypeOf||function(g,I){return g.__proto__=I,g})(g,I)}function oC(g){return(oC=Object.setPrototypeOf?Object.getPrototypeOf:function(g){return g.__proto__||Object.getPrototypeOf(g)})(g)}function dC(g){return(dC="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"===typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g})(g)}BC("ERR_AMBIGUOUS_ARGUMENT",'The "%s" argument is ambiguous. %s',TypeError),BC("ERR_INVALID_ARG_TYPE",(function(g,I,e){var t,C,Q,F;if(void 0===CC&&(CC=qt.exports),CC("string"===typeof g,"'name' must be a string"),"string"===typeof I&&(C="not ",I.substr(!Q||Q<0?0:+Q,C.length)===C)?(t="must not be",I=I.replace(/^not /,"")):t="must be",function(g,I,e){return(void 0===e||e>g.length)&&(e=g.length),g.substring(e-I.length,e)===I}(g," argument"))F="The ".concat(g," ").concat(t," ").concat(nC(I,"type"));else{var B=function(g,I,e){return"number"!==typeof e&&(e=0),!(e+I.length>g.length)&&-1!==g.indexOf(I,e)}(g,".")?"property":"argument";F='The "'.concat(g,'" ').concat(B," ").concat(t," ").concat(nC(I,"type"))}return F+=". Received type ".concat(gC(e))}),TypeError),BC("ERR_INVALID_ARG_VALUE",(function(g,I){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"is invalid";void 0===QC&&(QC=II);var t=QC.inspect(I);return t.length>128&&(t="".concat(t.slice(0,128),"...")),"The argument '".concat(g,"' ").concat(e,". Received ").concat(t)}),TypeError),BC("ERR_INVALID_RETURN_VALUE",(function(g,I,e){var t;return t=e&&e.constructor&&e.constructor.name?"instance of ".concat(e.constructor.name):"type ".concat(gC(e)),"Expected ".concat(g,' to be returned from the "').concat(I,'"')+" function but got ".concat(t,".")}),TypeError),BC("ERR_MISSING_ARGS",(function(){for(var g=arguments.length,I=new Array(g),e=0;e<g;e++)I[e]=arguments[e];void 0===CC&&(CC=qt.exports),CC(I.length>0,"At least one arg needs to be specified");var t="The ",C=I.length;switch(I=I.map((function(g){return'"'.concat(g,'"')})),C){case 1:t+="".concat(I[0]," argument");break;case 2:t+="".concat(I[0]," and ").concat(I[1]," arguments");break;default:t+=I.slice(0,C-1).join(", "),t+=", and ".concat(I[C-1]," arguments")}return"".concat(t," must be specified")}),TypeError),$t.codes=FC;var uC=II.inspect,yC=$t.codes.ERR_INVALID_ARG_TYPE;function bC(g,I,e){return(void 0===e||e>g.length)&&(e=g.length),g.substring(e-I.length,e)===I}var ZC={deepStrictEqual:"Expected values to be strictly deep-equal:",strictEqual:"Expected values to be strictly equal:",strictEqualObject:'Expected "actual" to be reference-equal to "expected":',deepEqual:"Expected values to be loosely deep-equal:",equal:"Expected values to be loosely equal:",notDeepStrictEqual:'Expected "actual" not to be strictly deep-equal to:',notStrictEqual:'Expected "actual" to be strictly unequal to:',notStrictEqualObject:'Expected "actual" not to be reference-equal to "expected":',notDeepEqual:'Expected "actual" not to be loosely deep-equal to:',notEqual:'Expected "actual" to be loosely unequal to:',notIdentical:"Values identical but not reference-equal:"};function mC(g){var I=Object.keys(g),e=Object.create(Object.getPrototypeOf(g));return I.forEach((function(I){e[I]=g[I]})),Object.defineProperty(e,"message",{value:g.message}),e}function xC(g){return uC(g,{compact:!1,customInspect:!1,depth:1e3,maxArrayLength:1/0,showHidden:!1,breakLength:1/0,showProxy:!1,sorted:!0,getters:!0})}function RC(g,I,e){var t="",C="",Q=0,F="",B=!1,n=xC(g),U=n.split("\n"),s=xC(I).split("\n"),i=0,c="";if("strictEqual"===e&&"object"===dC(g)&&"object"===dC(I)&&null!==g&&null!==I&&(e="strictEqualObject"),1===U.length&&1===s.length&&U[0]!==s[0]){var A=U[0].length+s[0].length;if(A<=10){if(("object"!==dC(g)||null===g)&&("object"!==dC(I)||null===I)&&(0!==g||0!==I))return"".concat(ZC[e],"\n\n")+"".concat(U[0]," !== ").concat(s[0],"\n")}else if("strictEqualObject"!==e){if(A<80){for(;U[0][i]===s[0][i];)i++;i>2&&(c="\n  ".concat(function(g,I){if(I=Math.floor(I),0==g.length||0==I)return"";var e=g.length*I;for(I=Math.floor(Math.log(I)/Math.log(2));I;)g+=g,I--;return g+=g.substring(0,e-g.length)}(" ",i),"^"),i=0)}}}for(var l=U[U.length-1],a=s[s.length-1];l===a&&(i++<2?F="\n  ".concat(l).concat(F):t=l,U.pop(),s.pop(),0!==U.length&&0!==s.length);)l=U[U.length-1],a=s[s.length-1];var r=Math.max(U.length,s.length);if(0===r){var o=n.split("\n");if(o.length>30)for(o[26]="".concat("","...").concat("");o.length>27;)o.pop();return"".concat(ZC.notIdentical,"\n\n").concat(o.join("\n"),"\n")}i>3&&(F="\n".concat("","...").concat("").concat(F),B=!0),""!==t&&(F="\n  ".concat(t).concat(F),t="");var d=0,u=ZC[e]+"\n".concat("","+ actual").concat(""," ").concat("","- expected").concat(""),y=" ".concat("","...").concat(""," Lines skipped");for(i=0;i<r;i++){var b=i-Q;if(U.length<i+1)b>1&&i>2&&(b>4?(C+="\n".concat("","...").concat(""),B=!0):b>3&&(C+="\n  ".concat(s[i-2]),d++),C+="\n  ".concat(s[i-1]),d++),Q=i,t+="\n".concat("","-").concat(""," ").concat(s[i]),d++;else if(s.length<i+1)b>1&&i>2&&(b>4?(C+="\n".concat("","...").concat(""),B=!0):b>3&&(C+="\n  ".concat(U[i-2]),d++),C+="\n  ".concat(U[i-1]),d++),Q=i,C+="\n".concat("","+").concat(""," ").concat(U[i]),d++;else{var Z=s[i],m=U[i],x=m!==Z&&(!bC(m,",")||m.slice(0,-1)!==Z);x&&bC(Z,",")&&Z.slice(0,-1)===m&&(x=!1,m+=","),x?(b>1&&i>2&&(b>4?(C+="\n".concat("","...").concat(""),B=!0):b>3&&(C+="\n  ".concat(U[i-2]),d++),C+="\n  ".concat(U[i-1]),d++),Q=i,C+="\n".concat("","+").concat(""," ").concat(m),t+="\n".concat("","-").concat(""," ").concat(Z),d+=2):(C+=t,t="",1!==b&&0!==i||(C+="\n  ".concat(m),d++))}if(d>20&&i<r-2)return"".concat(u).concat(y,"\n").concat(C,"\n").concat("","...").concat("").concat(t,"\n")+"".concat("","...").concat("")}return"".concat(u).concat(B?y:"","\n").concat(C).concat(t).concat(F).concat(c)}var SC=function(g){function I(g){var e;if(function(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}(this,I),"object"!==dC(g)||null===g)throw new yC("options","Object",g);var t=g.message,C=g.operator,Q=g.stackStartFn,F=g.actual,B=g.expected,n=Error.stackTraceLimit;if(Error.stackTraceLimit=0,null!=t)e=iC(this,oC(I).call(this,String(t)));else if("object"===dC(F)&&null!==F&&"object"===dC(B)&&null!==B&&"stack"in F&&F instanceof Error&&"stack"in B&&B instanceof Error&&(F=mC(F),B=mC(B)),"deepStrictEqual"===C||"strictEqual"===C)e=iC(this,oC(I).call(this,RC(F,B,C)));else if("notDeepStrictEqual"===C||"notStrictEqual"===C){var U=ZC[C],s=xC(F).split("\n");if("notStrictEqual"===C&&"object"===dC(F)&&null!==F&&(U=ZC.notStrictEqualObject),s.length>30)for(s[26]="".concat("","...").concat("");s.length>27;)s.pop();e=1===s.length?iC(this,oC(I).call(this,"".concat(U," ").concat(s[0]))):iC(this,oC(I).call(this,"".concat(U,"\n\n").concat(s.join("\n"),"\n")))}else{var i=xC(F),c="",A=ZC[C];"notDeepEqual"===C||"notEqual"===C?(i="".concat(ZC[C],"\n\n").concat(i)).length>1024&&(i="".concat(i.slice(0,1021),"...")):(c="".concat(xC(B)),i.length>512&&(i="".concat(i.slice(0,509),"...")),c.length>512&&(c="".concat(c.slice(0,509),"...")),"deepEqual"===C||"equal"===C?i="".concat(A,"\n\n").concat(i,"\n\nshould equal\n\n"):c=" ".concat(C," ").concat(c)),e=iC(this,oC(I).call(this,"".concat(i).concat(c)))}return Error.stackTraceLimit=n,e.generatedMessage=!t,Object.defineProperty(cC(e),"name",{value:"AssertionError [ERR_ASSERTION]",enumerable:!1,writable:!0,configurable:!0}),e.code="ERR_ASSERTION",e.actual=F,e.expected=B,e.operator=C,Error.captureStackTrace&&Error.captureStackTrace(cC(e),Q),e.stack,e.name="AssertionError",iC(e)}var e,t,C;return function(g,I){if("function"!==typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function");g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,writable:!0,configurable:!0}}),I&&rC(g,I)}(I,g),e=I,(t=[{key:"toString",value:function(){return"".concat(this.name," [").concat(this.code,"]: ").concat(this.message)}},{key:uC.custom,value:function(g,I){return uC(this,function(g){for(var I=1;I<arguments.length;I++){var e=null!=arguments[I]?arguments[I]:{},t=Object.keys(e);"function"===typeof Object.getOwnPropertySymbols&&(t=t.concat(Object.getOwnPropertySymbols(e).filter((function(g){return Object.getOwnPropertyDescriptor(e,g).enumerable})))),t.forEach((function(I){UC(g,I,e[I])}))}return g}({},I,{customInspect:!1,depth:0}))}}])&&sC(e.prototype,t),C&&sC(e,C),I}(AC(Error));function GC(g,I){if(void 0===g||null===g)throw new TypeError("Cannot convert first argument to object");for(var e=Object(g),t=1;t<arguments.length;t++){var C=arguments[t];if(void 0!==C&&null!==C)for(var Q=Object.keys(Object(C)),F=0,B=Q.length;F<B;F++){var n=Q[F],U=Object.getOwnPropertyDescriptor(C,n);void 0!==U&&U.enumerable&&(e[n]=C[n])}}return e}var LC,VC={assign:GC,polyfill:function(){Object.assign||Object.defineProperty(Object,"assign",{enumerable:!1,configurable:!0,writable:!0,value:GC})}},hC=Object.prototype.toString,DC=function(g){var I=hC.call(g),e="[object Arguments]"===I;return e||(e="[object Array]"!==I&&null!==g&&"object"===typeof g&&"number"===typeof g.length&&g.length>=0&&"[object Function]"===hC.call(g.callee)),e};if(!Object.keys){var pC=Object.prototype.hasOwnProperty,EC=Object.prototype.toString,NC=DC,WC=Object.prototype.propertyIsEnumerable,fC=!WC.call({toString:null},"toString"),XC=WC.call((function(){}),"prototype"),JC=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],vC=function(g){var I=g.constructor;return I&&I.prototype===g},kC={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},HC=function(){if("undefined"===typeof window)return!1;for(var g in window)try{if(!kC["$"+g]&&pC.call(window,g)&&null!==window[g]&&"object"===typeof window[g])try{vC(window[g])}catch(Rn){return!0}}catch(Rn){return!0}return!1}();LC=function(g){var I=null!==g&&"object"===typeof g,e="[object Function]"===EC.call(g),t=NC(g),C=I&&"[object String]"===EC.call(g),Q=[];if(!I&&!e&&!t)throw new TypeError("Object.keys called on a non-object");var F=XC&&e;if(C&&g.length>0&&!pC.call(g,0))for(var B=0;B<g.length;++B)Q.push(String(B));if(t&&g.length>0)for(var n=0;n<g.length;++n)Q.push(String(n));else for(var U in g)F&&"prototype"===U||!pC.call(g,U)||Q.push(String(U));if(fC)for(var s=function(g){if("undefined"===typeof window||!HC)return vC(g);try{return vC(g)}catch(Rn){return!1}}(g),i=0;i<JC.length;++i)s&&"constructor"===JC[i]||!pC.call(g,JC[i])||Q.push(JC[i]);return Q}}var MC=LC,YC=Array.prototype.slice,wC=DC,TC=Object.keys,zC=TC?function(g){return TC(g)}:MC,OC=Object.keys;zC.shim=function(){Object.keys?function(){var g=Object.keys(arguments);return g&&g.length===arguments.length}(1,2)||(Object.keys=function(g){return wC(g)?OC(YC.call(g)):OC(g)}):Object.keys=zC;return Object.keys||zC};var KC=zC,jC="function"===typeof Symbol&&"symbol"===typeof Symbol("foo"),PC=Object.prototype.toString,_C=Array.prototype.concat,qC=Object.defineProperty,$C=qC&&function(){var g={};try{for(var I in qC(g,"x",{enumerable:!1,value:g}),g)return!1;return g.x===g}catch(Rn){return!1}}(),gQ=function(g,I,e,t){var C;(!(I in g)||"function"===typeof(C=t)&&"[object Function]"===PC.call(C)&&t())&&($C?qC(g,I,{configurable:!0,enumerable:!1,value:e,writable:!0}):g[I]=e)},IQ=function(g,I){var e=arguments.length>2?arguments[2]:{},t=KC(I);jC&&(t=_C.call(t,Object.getOwnPropertySymbols(I)));for(var C=0;C<t.length;C+=1)gQ(g,t[C],I[t[C]],e[t[C]])};IQ.supportsDescriptors=!!$C;var eQ=IQ,tQ=function(g){return g!==g},CQ=function(g,I){return 0===g&&0===I?1/g===1/I:g===I||!(!tQ(g)||!tQ(I))},QQ=CQ,FQ=function(){return"function"===typeof Object.is?Object.is:QQ},BQ=FQ,nQ=eQ,UQ=eQ,sQ=CQ,iQ=FQ,cQ=function(){var g=BQ();return nQ(Object,{is:g},{is:function(){return Object.is!==g}}),g},AQ=(0,fI.exports)(iQ(),Object);UQ(AQ,{getPolyfill:iQ,implementation:sQ,shim:cQ});var lQ=AQ,aQ=function(g){return g!==g},rQ=aQ,oQ=function(){return Number.isNaN&&Number.isNaN(NaN)&&!Number.isNaN("a")?Number.isNaN:rQ},dQ=eQ,uQ=oQ,yQ=eQ,bQ=aQ,ZQ=oQ,mQ=function(){var g=uQ();return dQ(Number,{isNaN:g},{isNaN:function(){return Number.isNaN!==g}}),g},xQ=(0,fI.exports)(ZQ(),Number);yQ(xQ,{getPolyfill:ZQ,implementation:bQ,shim:mQ});var RQ=xQ;function SQ(g,I){return function(g){if(Array.isArray(g))return g}(g)||function(g,I){var e=[],t=!0,C=!1,Q=void 0;try{for(var F,B=g[Symbol.iterator]();!(t=(F=B.next()).done)&&(e.push(F.value),!I||e.length!==I);t=!0);}catch(XB){C=!0,Q=XB}finally{try{t||null==B.return||B.return()}finally{if(C)throw Q}}return e}(g,I)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function GQ(g){return(GQ="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"===typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g})(g)}var LQ=void 0!==/a/g.flags,VQ=function(g){var I=[];return g.forEach((function(g){return I.push(g)})),I},hQ=function(g){var I=[];return g.forEach((function(g,e){return I.push([e,g])})),I},DQ=Object.is?Object.is:lQ,pQ=Object.getOwnPropertySymbols?Object.getOwnPropertySymbols:function(){return[]},EQ=Number.isNaN?Number.isNaN:RQ;function NQ(g){return g.call.bind(g)}var WQ=NQ(Object.prototype.hasOwnProperty),fQ=NQ(Object.prototype.propertyIsEnumerable),XQ=NQ(Object.prototype.toString),JQ=II.types,vQ=JQ.isAnyArrayBuffer,kQ=JQ.isArrayBufferView,HQ=JQ.isDate,MQ=JQ.isMap,YQ=JQ.isRegExp,wQ=JQ.isSet,TQ=JQ.isNativeError,zQ=JQ.isBoxedPrimitive,OQ=JQ.isNumberObject,KQ=JQ.isStringObject,jQ=JQ.isBooleanObject,PQ=JQ.isBigIntObject,_Q=JQ.isSymbolObject,qQ=JQ.isFloat32Array,$Q=JQ.isFloat64Array;function gF(g){if(0===g.length||g.length>10)return!0;for(var I=0;I<g.length;I++){var e=g.charCodeAt(I);if(e<48||e>57)return!0}return 10===g.length&&g>=Math.pow(2,32)}function IF(g){return Object.keys(g).filter(gF).concat(pQ(g).filter(Object.prototype.propertyIsEnumerable.bind(g)))}function eF(g,I){if(g===I)return 0;for(var e=g.length,t=I.length,C=0,Q=Math.min(e,t);C<Q;++C)if(g[C]!==I[C]){e=g[C],t=I[C];break}return e<t?-1:t<e?1:0}function tF(g,I,e,t){if(g===I)return 0!==g||(!e||DQ(g,I));if(e){if("object"!==GQ(g))return"number"===typeof g&&EQ(g)&&EQ(I);if("object"!==GQ(I)||null===g||null===I)return!1;if(Object.getPrototypeOf(g)!==Object.getPrototypeOf(I))return!1}else{if(null===g||"object"!==GQ(g))return(null===I||"object"!==GQ(I))&&g==I;if(null===I||"object"!==GQ(I))return!1}var C,Q,F,B,n=XQ(g);if(n!==XQ(I))return!1;if(Array.isArray(g)){if(g.length!==I.length)return!1;var U=IF(g),s=IF(I);return U.length===s.length&&QF(g,I,e,t,1,U)}if("[object Object]"===n&&(!MQ(g)&&MQ(I)||!wQ(g)&&wQ(I)))return!1;if(HQ(g)){if(!HQ(I)||Date.prototype.getTime.call(g)!==Date.prototype.getTime.call(I))return!1}else if(YQ(g)){if(!YQ(I)||(F=g,B=I,!(LQ?F.source===B.source&&F.flags===B.flags:RegExp.prototype.toString.call(F)===RegExp.prototype.toString.call(B))))return!1}else if(TQ(g)||g instanceof Error){if(g.message!==I.message||g.name!==I.name)return!1}else{if(kQ(g)){if(e||!qQ(g)&&!$Q(g)){if(!function(g,I){return g.byteLength===I.byteLength&&0===eF(new Uint8Array(g.buffer,g.byteOffset,g.byteLength),new Uint8Array(I.buffer,I.byteOffset,I.byteLength))}(g,I))return!1}else if(!function(g,I){if(g.byteLength!==I.byteLength)return!1;for(var e=0;e<g.byteLength;e++)if(g[e]!==I[e])return!1;return!0}(g,I))return!1;var i=IF(g),c=IF(I);return i.length===c.length&&QF(g,I,e,t,0,i)}if(wQ(g))return!(!wQ(I)||g.size!==I.size)&&QF(g,I,e,t,2);if(MQ(g))return!(!MQ(I)||g.size!==I.size)&&QF(g,I,e,t,3);if(vQ(g)){if(Q=I,(C=g).byteLength!==Q.byteLength||0!==eF(new Uint8Array(C),new Uint8Array(Q)))return!1}else if(zQ(g)&&!function(g,I){return OQ(g)?OQ(I)&&DQ(Number.prototype.valueOf.call(g),Number.prototype.valueOf.call(I)):KQ(g)?KQ(I)&&String.prototype.valueOf.call(g)===String.prototype.valueOf.call(I):jQ(g)?jQ(I)&&Boolean.prototype.valueOf.call(g)===Boolean.prototype.valueOf.call(I):PQ(g)?PQ(I)&&BigInt.prototype.valueOf.call(g)===BigInt.prototype.valueOf.call(I):_Q(I)&&Symbol.prototype.valueOf.call(g)===Symbol.prototype.valueOf.call(I)}(g,I))return!1}return QF(g,I,e,t,0)}function CF(g,I){return I.filter((function(I){return fQ(g,I)}))}function QF(g,I,e,t,C,Q){if(5===arguments.length){Q=Object.keys(g);var F=Object.keys(I);if(Q.length!==F.length)return!1}for(var B=0;B<Q.length;B++)if(!WQ(I,Q[B]))return!1;if(e&&5===arguments.length){var n=pQ(g);if(0!==n.length){var U=0;for(B=0;B<n.length;B++){var s=n[B];if(fQ(g,s)){if(!fQ(I,s))return!1;Q.push(s),U++}else if(fQ(I,s))return!1}var i=pQ(I);if(n.length!==i.length&&CF(I,i).length!==U)return!1}else{var c=pQ(I);if(0!==c.length&&0!==CF(I,c).length)return!1}}if(0===Q.length&&(0===C||1===C&&0===g.length||0===g.size))return!0;if(void 0===t)t={val1:new Map,val2:new Map,position:0};else{var A=t.val1.get(g);if(void 0!==A){var l=t.val2.get(I);if(void 0!==l)return A===l}t.position++}t.val1.set(g,t.position),t.val2.set(I,t.position);var a=iF(g,I,e,Q,t,C);return t.val1.delete(g),t.val2.delete(I),a}function FF(g,I,e,t){for(var C=VQ(g),Q=0;Q<C.length;Q++){var F=C[Q];if(tF(I,F,e,t))return g.delete(F),!0}return!1}function BF(g){switch(GQ(g)){case"undefined":return null;case"object":return;case"symbol":return!1;case"string":g=+g;case"number":if(EQ(g))return!1}return!0}function nF(g,I,e){var t=BF(e);return null!=t?t:I.has(t)&&!g.has(t)}function UF(g,I,e,t,C){var Q=BF(e);if(null!=Q)return Q;var F=I.get(Q);return!(void 0===F&&!I.has(Q)||!tF(t,F,!1,C))&&(!g.has(Q)&&tF(t,F,!1,C))}function sF(g,I,e,t,C,Q){for(var F=VQ(g),B=0;B<F.length;B++){var n=F[B];if(tF(e,n,C,Q)&&tF(t,I.get(n),C,Q))return g.delete(n),!0}return!1}function iF(g,I,e,t,C,Q){var F=0;if(2===Q){if(!function(g,I,e,t){for(var C=null,Q=VQ(g),F=0;F<Q.length;F++){var B=Q[F];if("object"===GQ(B)&&null!==B)null===C&&(C=new Set),C.add(B);else if(!I.has(B)){if(e)return!1;if(!nF(g,I,B))return!1;null===C&&(C=new Set),C.add(B)}}if(null!==C){for(var n=VQ(I),U=0;U<n.length;U++){var s=n[U];if("object"===GQ(s)&&null!==s){if(!FF(C,s,e,t))return!1}else if(!e&&!g.has(s)&&!FF(C,s,e,t))return!1}return 0===C.size}return!0}(g,I,e,C))return!1}else if(3===Q){if(!function(g,I,e,t){for(var C=null,Q=hQ(g),F=0;F<Q.length;F++){var B=SQ(Q[F],2),n=B[0],U=B[1];if("object"===GQ(n)&&null!==n)null===C&&(C=new Set),C.add(n);else{var s=I.get(n);if(void 0===s&&!I.has(n)||!tF(U,s,e,t)){if(e)return!1;if(!UF(g,I,n,U,t))return!1;null===C&&(C=new Set),C.add(n)}}}if(null!==C){for(var i=hQ(I),c=0;c<i.length;c++){var A=SQ(i[c],2),l=(n=A[0],A[1]);if("object"===GQ(n)&&null!==n){if(!sF(C,g,n,l,e,t))return!1}else if(!e&&(!g.has(n)||!tF(g.get(n),l,!1,t))&&!sF(C,g,n,l,!1,t))return!1}return 0===C.size}return!0}(g,I,e,C))return!1}else if(1===Q)for(;F<g.length;F++){if(!WQ(g,F)){if(WQ(I,F))return!1;for(var B=Object.keys(g);F<B.length;F++){var n=B[F];if(!WQ(I,n)||!tF(g[n],I[n],e,C))return!1}return B.length===Object.keys(I).length}if(!WQ(I,F)||!tF(g[F],I[F],e,C))return!1}for(F=0;F<t.length;F++){var U=t[F];if(!tF(g[U],I[U],e,C))return!1}return!0}var cF={isDeepEqual:function(g,I){return tF(g,I,!1)},isDeepStrictEqual:function(g,I){return tF(g,I,!0)}};function AF(g){return(AF="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"===typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g})(g)}var lF,aF,rF=$t.codes,oF=rF.ERR_AMBIGUOUS_ARGUMENT,dF=rF.ERR_INVALID_ARG_TYPE,uF=rF.ERR_INVALID_ARG_VALUE,yF=rF.ERR_INVALID_RETURN_VALUE,bF=rF.ERR_MISSING_ARGS,ZF=SC,mF=II.inspect,xF=II.types,RF=xF.isPromise,SF=xF.isRegExp,GF=Object.assign?Object.assign:VC.assign,LF=Object.is?Object.is:lQ;function VF(){lF=cF.isDeepEqual,aF=cF.isDeepStrictEqual}var hF=!1,DF=qt.exports=WF,pF={};function EF(g){if(g.message instanceof Error)throw g.message;throw new ZF(g)}function NF(g,I,e,t){if(!e){var C=!1;if(0===I)C=!0,t="No value argument passed to `assert.ok()`";else if(t instanceof Error)throw t;var Q=new ZF({actual:e,expected:!0,message:t,operator:"==",stackStartFn:g});throw Q.generatedMessage=C,Q}}function WF(){for(var g=arguments.length,I=new Array(g),e=0;e<g;e++)I[e]=arguments[e];NF.apply(void 0,[WF,I.length].concat(I))}DF.fail=function g(I,e,t,C,Q){var F,B=arguments.length;if(0===B)F="Failed";else if(1===B)t=I,I=void 0;else{if(!1===hF){hF=!0;var n=console.warn.bind(console);n("assert.fail() with more than one argument is deprecated. Please use assert.strictEqual() instead or only pass a message.","DeprecationWarning","DEP0094")}2===B&&(C="!=")}if(t instanceof Error)throw t;var U={actual:I,expected:e,operator:void 0===C?"fail":C,stackStartFn:Q||g};void 0!==t&&(U.message=t);var s=new ZF(U);throw F&&(s.message=F,s.generatedMessage=!0),s},DF.AssertionError=ZF,DF.ok=WF,DF.equal=function g(I,e,t){if(arguments.length<2)throw new bF("actual","expected");I!=e&&EF({actual:I,expected:e,message:t,operator:"==",stackStartFn:g})},DF.notEqual=function g(I,e,t){if(arguments.length<2)throw new bF("actual","expected");I==e&&EF({actual:I,expected:e,message:t,operator:"!=",stackStartFn:g})},DF.deepEqual=function g(I,e,t){if(arguments.length<2)throw new bF("actual","expected");void 0===lF&&VF(),lF(I,e)||EF({actual:I,expected:e,message:t,operator:"deepEqual",stackStartFn:g})},DF.notDeepEqual=function g(I,e,t){if(arguments.length<2)throw new bF("actual","expected");void 0===lF&&VF(),lF(I,e)&&EF({actual:I,expected:e,message:t,operator:"notDeepEqual",stackStartFn:g})},DF.deepStrictEqual=function g(I,e,t){if(arguments.length<2)throw new bF("actual","expected");void 0===lF&&VF(),aF(I,e)||EF({actual:I,expected:e,message:t,operator:"deepStrictEqual",stackStartFn:g})},DF.notDeepStrictEqual=function g(I,e,t){if(arguments.length<2)throw new bF("actual","expected");void 0===lF&&VF();aF(I,e)&&EF({actual:I,expected:e,message:t,operator:"notDeepStrictEqual",stackStartFn:g})},DF.strictEqual=function g(I,e,t){if(arguments.length<2)throw new bF("actual","expected");LF(I,e)||EF({actual:I,expected:e,message:t,operator:"strictEqual",stackStartFn:g})},DF.notStrictEqual=function g(I,e,t){if(arguments.length<2)throw new bF("actual","expected");LF(I,e)&&EF({actual:I,expected:e,message:t,operator:"notStrictEqual",stackStartFn:g})};var fF=function g(I,e,t){var C=this;!function(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}(this,g),e.forEach((function(g){g in I&&(void 0!==t&&"string"===typeof t[g]&&SF(I[g])&&I[g].test(t[g])?C[g]=t[g]:C[g]=I[g])}))};function XF(g,I,e,t,C,Q){if(!(e in g)||!aF(g[e],I[e])){if(!t){var F=new fF(g,C),B=new fF(I,C,g),n=new ZF({actual:F,expected:B,operator:"deepStrictEqual",stackStartFn:Q});throw n.actual=g,n.expected=I,n.operator=Q.name,n}EF({actual:g,expected:I,message:t,operator:Q.name,stackStartFn:Q})}}function JF(g,I,e,t){if("function"!==typeof I){if(SF(I))return I.test(g);if(2===arguments.length)throw new dF("expected",["Function","RegExp"],I);if("object"!==AF(g)||null===g){var C=new ZF({actual:g,expected:I,message:e,operator:"deepStrictEqual",stackStartFn:t});throw C.operator=t.name,C}var Q=Object.keys(I);if(I instanceof Error)Q.push("name","message");else if(0===Q.length)throw new uF("error",I,"may not be an empty object");return void 0===lF&&VF(),Q.forEach((function(C){"string"===typeof g[C]&&SF(I[C])&&I[C].test(g[C])||XF(g,I,C,e,Q,t)})),!0}return void 0!==I.prototype&&g instanceof I||!Error.isPrototypeOf(I)&&!0===I.call({},g)}function vF(g){if("function"!==typeof g)throw new dF("fn","Function",g);try{g()}catch(Rn){return Rn}return pF}function kF(g){return RF(g)||null!==g&&"object"===AF(g)&&"function"===typeof g.then&&"function"===typeof g.catch}function HF(g){return Promise.resolve().then((function(){var I;if("function"===typeof g){if(!kF(I=g()))throw new yF("instance of Promise","promiseFn",I)}else{if(!kF(g))throw new dF("promiseFn",["Function","Promise"],g);I=g}return Promise.resolve().then((function(){return I})).then((function(){return pF})).catch((function(g){return g}))}))}function MF(g,I,e,t){if("string"===typeof e){if(4===arguments.length)throw new dF("error",["Object","Error","Function","RegExp"],e);if("object"===AF(I)&&null!==I){if(I.message===e)throw new oF("error/message",'The error message "'.concat(I.message,'" is identical to the message.'))}else if(I===e)throw new oF("error/message",'The error "'.concat(I,'" is identical to the message.'));t=e,e=void 0}else if(null!=e&&"object"!==AF(e)&&"function"!==typeof e)throw new dF("error",["Object","Error","Function","RegExp"],e);if(I===pF){var C="";e&&e.name&&(C+=" (".concat(e.name,")")),C+=t?": ".concat(t):".";var Q="rejects"===g.name?"rejection":"exception";EF({actual:void 0,expected:e,operator:g.name,message:"Missing expected ".concat(Q).concat(C),stackStartFn:g})}if(e&&!JF(I,e,t,g))throw I}function YF(g,I,e,t){if(I!==pF){if("string"===typeof e&&(t=e,e=void 0),!e||JF(I,e)){var C=t?": ".concat(t):".",Q="doesNotReject"===g.name?"rejection":"exception";EF({actual:I,expected:e,operator:g.name,message:"Got unwanted ".concat(Q).concat(C,"\n")+'Actual message: "'.concat(I&&I.message,'"'),stackStartFn:g})}throw I}}function wF(){for(var g=arguments.length,I=new Array(g),e=0;e<g;e++)I[e]=arguments[e];NF.apply(void 0,[wF,I.length].concat(I))}DF.throws=function g(I){for(var e=arguments.length,t=new Array(e>1?e-1:0),C=1;C<e;C++)t[C-1]=arguments[C];MF.apply(void 0,[g,vF(I)].concat(t))},DF.rejects=function g(I){for(var e=arguments.length,t=new Array(e>1?e-1:0),C=1;C<e;C++)t[C-1]=arguments[C];return HF(I).then((function(I){return MF.apply(void 0,[g,I].concat(t))}))},DF.doesNotThrow=function g(I){for(var e=arguments.length,t=new Array(e>1?e-1:0),C=1;C<e;C++)t[C-1]=arguments[C];YF.apply(void 0,[g,vF(I)].concat(t))},DF.doesNotReject=function g(I){for(var e=arguments.length,t=new Array(e>1?e-1:0),C=1;C<e;C++)t[C-1]=arguments[C];return HF(I).then((function(I){return YF.apply(void 0,[g,I].concat(t))}))},DF.ifError=function g(I){if(null!==I&&void 0!==I){var e="ifError got unwanted exception: ";"object"===AF(I)&&"string"===typeof I.message?0===I.message.length&&I.constructor?e+=I.constructor.name:e+=I.message:e+=mF(I);var t=new ZF({actual:I,expected:null,operator:"ifError",message:e,stackStartFn:g}),C=I.stack;if("string"===typeof C){var Q=C.split("\n");Q.shift();for(var F=t.stack.split("\n"),B=0;B<Q.length;B++){var n=F.indexOf(Q[B]);if(-1!==n){F=F.slice(0,n);break}}t.stack="".concat(F.join("\n"),"\n").concat(Q.join("\n"))}throw t}},DF.strict=GF(wF,DF,{equal:DF.strictEqual,deepEqual:DF.deepStrictEqual,notEqual:DF.notStrictEqual,notDeepEqual:DF.notDeepStrictEqual}),DF.strict.strict=DF.strict;var TF=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0},zF={},OF={};!function(g){var I="undefined"!==typeof Uint8Array&&"undefined"!==typeof Uint16Array&&"undefined"!==typeof Int32Array;function e(g,I){return Object.prototype.hasOwnProperty.call(g,I)}g.assign=function(g){for(var I=Array.prototype.slice.call(arguments,1);I.length;){var t=I.shift();if(t){if("object"!==typeof t)throw new TypeError(t+"must be non-object");for(var C in t)e(t,C)&&(g[C]=t[C])}}return g},g.shrinkBuf=function(g,I){return g.length===I?g:g.subarray?g.subarray(0,I):(g.length=I,g)};var t={arraySet:function(g,I,e,t,C){if(I.subarray&&g.subarray)g.set(I.subarray(e,e+t),C);else for(var Q=0;Q<t;Q++)g[C+Q]=I[e+Q]},flattenChunks:function(g){var I,e,t,C,Q,F;for(t=0,I=0,e=g.length;I<e;I++)t+=g[I].length;for(F=new Uint8Array(t),C=0,I=0,e=g.length;I<e;I++)Q=g[I],F.set(Q,C),C+=Q.length;return F}},C={arraySet:function(g,I,e,t,C){for(var Q=0;Q<t;Q++)g[C+Q]=I[e+Q]},flattenChunks:function(g){return[].concat.apply([],g)}};g.setTyped=function(I){I?(g.Buf8=Uint8Array,g.Buf16=Uint16Array,g.Buf32=Int32Array,g.assign(g,t)):(g.Buf8=Array,g.Buf16=Array,g.Buf32=Array,g.assign(g,C))},g.setTyped(I)}(OF);var KF={},jF=OF;function PF(g){for(var I=g.length;--I>=0;)g[I]=0}var _F=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],qF=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],$F=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],gB=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],IB=new Array(576);PF(IB);var eB=new Array(60);PF(eB);var tB=new Array(512);PF(tB);var CB=new Array(256);PF(CB);var QB=new Array(29);PF(QB);var FB,BB,nB,UB=new Array(30);function sB(g,I,e,t,C){this.static_tree=g,this.extra_bits=I,this.extra_base=e,this.elems=t,this.max_length=C,this.has_stree=g&&g.length}function iB(g,I){this.dyn_tree=g,this.max_code=0,this.stat_desc=I}function cB(g){return g<256?tB[g]:tB[256+(g>>>7)]}function AB(g,I){g.pending_buf[g.pending++]=255&I,g.pending_buf[g.pending++]=I>>>8&255}function lB(g,I,e){g.bi_valid>16-e?(g.bi_buf|=I<<g.bi_valid&65535,AB(g,g.bi_buf),g.bi_buf=I>>16-g.bi_valid,g.bi_valid+=e-16):(g.bi_buf|=I<<g.bi_valid&65535,g.bi_valid+=e)}function aB(g,I,e){lB(g,e[2*I],e[2*I+1])}function rB(g,I){var e=0;do{e|=1&g,g>>>=1,e<<=1}while(--I>0);return e>>>1}function oB(g,I,e){var t,C,Q=new Array(16),F=0;for(t=1;t<=15;t++)Q[t]=F=F+e[t-1]<<1;for(C=0;C<=I;C++){var B=g[2*C+1];0!==B&&(g[2*C]=rB(Q[B]++,B))}}function dB(g){var I;for(I=0;I<286;I++)g.dyn_ltree[2*I]=0;for(I=0;I<30;I++)g.dyn_dtree[2*I]=0;for(I=0;I<19;I++)g.bl_tree[2*I]=0;g.dyn_ltree[512]=1,g.opt_len=g.static_len=0,g.last_lit=g.matches=0}function uB(g){g.bi_valid>8?AB(g,g.bi_buf):g.bi_valid>0&&(g.pending_buf[g.pending++]=g.bi_buf),g.bi_buf=0,g.bi_valid=0}function yB(g,I,e,t){var C=2*I,Q=2*e;return g[C]<g[Q]||g[C]===g[Q]&&t[I]<=t[e]}function bB(g,I,e){for(var t=g.heap[e],C=e<<1;C<=g.heap_len&&(C<g.heap_len&&yB(I,g.heap[C+1],g.heap[C],g.depth)&&C++,!yB(I,t,g.heap[C],g.depth));)g.heap[e]=g.heap[C],e=C,C<<=1;g.heap[e]=t}function ZB(g,I,e){var t,C,Q,F,B=0;if(0!==g.last_lit)do{t=g.pending_buf[g.d_buf+2*B]<<8|g.pending_buf[g.d_buf+2*B+1],C=g.pending_buf[g.l_buf+B],B++,0===t?aB(g,C,I):(aB(g,(Q=CB[C])+256+1,I),0!==(F=_F[Q])&&lB(g,C-=QB[Q],F),aB(g,Q=cB(--t),e),0!==(F=qF[Q])&&lB(g,t-=UB[Q],F))}while(B<g.last_lit);aB(g,256,I)}function mB(g,I){var e,t,C,Q=I.dyn_tree,F=I.stat_desc.static_tree,B=I.stat_desc.has_stree,n=I.stat_desc.elems,U=-1;for(g.heap_len=0,g.heap_max=573,e=0;e<n;e++)0!==Q[2*e]?(g.heap[++g.heap_len]=U=e,g.depth[e]=0):Q[2*e+1]=0;for(;g.heap_len<2;)Q[2*(C=g.heap[++g.heap_len]=U<2?++U:0)]=1,g.depth[C]=0,g.opt_len--,B&&(g.static_len-=F[2*C+1]);for(I.max_code=U,e=g.heap_len>>1;e>=1;e--)bB(g,Q,e);C=n;do{e=g.heap[1],g.heap[1]=g.heap[g.heap_len--],bB(g,Q,1),t=g.heap[1],g.heap[--g.heap_max]=e,g.heap[--g.heap_max]=t,Q[2*C]=Q[2*e]+Q[2*t],g.depth[C]=(g.depth[e]>=g.depth[t]?g.depth[e]:g.depth[t])+1,Q[2*e+1]=Q[2*t+1]=C,g.heap[1]=C++,bB(g,Q,1)}while(g.heap_len>=2);g.heap[--g.heap_max]=g.heap[1],function(g,I){var e,t,C,Q,F,B,n=I.dyn_tree,U=I.max_code,s=I.stat_desc.static_tree,i=I.stat_desc.has_stree,c=I.stat_desc.extra_bits,A=I.stat_desc.extra_base,l=I.stat_desc.max_length,a=0;for(Q=0;Q<=15;Q++)g.bl_count[Q]=0;for(n[2*g.heap[g.heap_max]+1]=0,e=g.heap_max+1;e<573;e++)(Q=n[2*n[2*(t=g.heap[e])+1]+1]+1)>l&&(Q=l,a++),n[2*t+1]=Q,t>U||(g.bl_count[Q]++,F=0,t>=A&&(F=c[t-A]),B=n[2*t],g.opt_len+=B*(Q+F),i&&(g.static_len+=B*(s[2*t+1]+F)));if(0!==a){do{for(Q=l-1;0===g.bl_count[Q];)Q--;g.bl_count[Q]--,g.bl_count[Q+1]+=2,g.bl_count[l]--,a-=2}while(a>0);for(Q=l;0!==Q;Q--)for(t=g.bl_count[Q];0!==t;)(C=g.heap[--e])>U||(n[2*C+1]!==Q&&(g.opt_len+=(Q-n[2*C+1])*n[2*C],n[2*C+1]=Q),t--)}}(g,I),oB(Q,U,g.bl_count)}function xB(g,I,e){var t,C,Q=-1,F=I[1],B=0,n=7,U=4;for(0===F&&(n=138,U=3),I[2*(e+1)+1]=65535,t=0;t<=e;t++)C=F,F=I[2*(t+1)+1],++B<n&&C===F||(B<U?g.bl_tree[2*C]+=B:0!==C?(C!==Q&&g.bl_tree[2*C]++,g.bl_tree[32]++):B<=10?g.bl_tree[34]++:g.bl_tree[36]++,B=0,Q=C,0===F?(n=138,U=3):C===F?(n=6,U=3):(n=7,U=4))}function RB(g,I,e){var t,C,Q=-1,F=I[1],B=0,n=7,U=4;for(0===F&&(n=138,U=3),t=0;t<=e;t++)if(C=F,F=I[2*(t+1)+1],!(++B<n&&C===F)){if(B<U)do{aB(g,C,g.bl_tree)}while(0!==--B);else 0!==C?(C!==Q&&(aB(g,C,g.bl_tree),B--),aB(g,16,g.bl_tree),lB(g,B-3,2)):B<=10?(aB(g,17,g.bl_tree),lB(g,B-3,3)):(aB(g,18,g.bl_tree),lB(g,B-11,7));B=0,Q=C,0===F?(n=138,U=3):C===F?(n=6,U=3):(n=7,U=4)}}PF(UB);var SB=!1;function GB(g,I,e,t){lB(g,0+(t?1:0),3),function(g,I,e,t){uB(g),t&&(AB(g,e),AB(g,~e)),jF.arraySet(g.pending_buf,g.window,I,e,g.pending),g.pending+=e}(g,I,e,!0)}KF._tr_init=function(g){SB||(!function(){var g,I,e,t,C,Q=new Array(16);for(e=0,t=0;t<28;t++)for(QB[t]=e,g=0;g<1<<_F[t];g++)CB[e++]=t;for(CB[e-1]=t,C=0,t=0;t<16;t++)for(UB[t]=C,g=0;g<1<<qF[t];g++)tB[C++]=t;for(C>>=7;t<30;t++)for(UB[t]=C<<7,g=0;g<1<<qF[t]-7;g++)tB[256+C++]=t;for(I=0;I<=15;I++)Q[I]=0;for(g=0;g<=143;)IB[2*g+1]=8,g++,Q[8]++;for(;g<=255;)IB[2*g+1]=9,g++,Q[9]++;for(;g<=279;)IB[2*g+1]=7,g++,Q[7]++;for(;g<=287;)IB[2*g+1]=8,g++,Q[8]++;for(oB(IB,287,Q),g=0;g<30;g++)eB[2*g+1]=5,eB[2*g]=rB(g,5);FB=new sB(IB,_F,257,286,15),BB=new sB(eB,qF,0,30,15),nB=new sB(new Array(0),$F,0,19,7)}(),SB=!0),g.l_desc=new iB(g.dyn_ltree,FB),g.d_desc=new iB(g.dyn_dtree,BB),g.bl_desc=new iB(g.bl_tree,nB),g.bi_buf=0,g.bi_valid=0,dB(g)},KF._tr_stored_block=GB,KF._tr_flush_block=function(g,I,e,t){var C,Q,F=0;g.level>0?(2===g.strm.data_type&&(g.strm.data_type=function(g){var I,e=4093624447;for(I=0;I<=31;I++,e>>>=1)if(1&e&&0!==g.dyn_ltree[2*I])return 0;if(0!==g.dyn_ltree[18]||0!==g.dyn_ltree[20]||0!==g.dyn_ltree[26])return 1;for(I=32;I<256;I++)if(0!==g.dyn_ltree[2*I])return 1;return 0}(g)),mB(g,g.l_desc),mB(g,g.d_desc),F=function(g){var I;for(xB(g,g.dyn_ltree,g.l_desc.max_code),xB(g,g.dyn_dtree,g.d_desc.max_code),mB(g,g.bl_desc),I=18;I>=3&&0===g.bl_tree[2*gB[I]+1];I--);return g.opt_len+=3*(I+1)+5+5+4,I}(g),C=g.opt_len+3+7>>>3,(Q=g.static_len+3+7>>>3)<=C&&(C=Q)):C=Q=e+5,e+4<=C&&-1!==I?GB(g,I,e,t):4===g.strategy||Q===C?(lB(g,2+(t?1:0),3),ZB(g,IB,eB)):(lB(g,4+(t?1:0),3),function(g,I,e,t){var C;for(lB(g,I-257,5),lB(g,e-1,5),lB(g,t-4,4),C=0;C<t;C++)lB(g,g.bl_tree[2*gB[C]+1],3);RB(g,g.dyn_ltree,I-1),RB(g,g.dyn_dtree,e-1)}(g,g.l_desc.max_code+1,g.d_desc.max_code+1,F+1),ZB(g,g.dyn_ltree,g.dyn_dtree)),dB(g),t&&uB(g)},KF._tr_tally=function(g,I,e){return g.pending_buf[g.d_buf+2*g.last_lit]=I>>>8&255,g.pending_buf[g.d_buf+2*g.last_lit+1]=255&I,g.pending_buf[g.l_buf+g.last_lit]=255&e,g.last_lit++,0===I?g.dyn_ltree[2*e]++:(g.matches++,I--,g.dyn_ltree[2*(CB[e]+256+1)]++,g.dyn_dtree[2*cB(I)]++),g.last_lit===g.lit_bufsize-1},KF._tr_align=function(g){lB(g,2,3),aB(g,256,IB),function(g){16===g.bi_valid?(AB(g,g.bi_buf),g.bi_buf=0,g.bi_valid=0):g.bi_valid>=8&&(g.pending_buf[g.pending++]=255&g.bi_buf,g.bi_buf>>=8,g.bi_valid-=8)}(g)};var LB=function(g,I,e,t){for(var C=65535&g|0,Q=g>>>16&65535|0,F=0;0!==e;){e-=F=e>2e3?2e3:e;do{Q=Q+(C=C+I[t++]|0)|0}while(--F);C%=65521,Q%=65521}return C|Q<<16|0};var VB=function(){for(var g,I=[],e=0;e<256;e++){g=e;for(var t=0;t<8;t++)g=1&g?3988292384^g>>>1:g>>>1;I[e]=g}return I}();var hB,DB=function(g,I,e,t){var C=VB,Q=t+e;g^=-1;for(var F=t;F<Q;F++)g=g>>>8^C[255&(g^I[F])];return-1^g},pB=OF,EB=KF,NB=LB,WB=DB,fB={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"};function XB(g,I){return g.msg=fB[I],I}function JB(g){return(g<<1)-(g>4?9:0)}function vB(g){for(var I=g.length;--I>=0;)g[I]=0}function kB(g){var I=g.state,e=I.pending;e>g.avail_out&&(e=g.avail_out),0!==e&&(pB.arraySet(g.output,I.pending_buf,I.pending_out,e,g.next_out),g.next_out+=e,I.pending_out+=e,g.total_out+=e,g.avail_out-=e,I.pending-=e,0===I.pending&&(I.pending_out=0))}function HB(g,I){EB._tr_flush_block(g,g.block_start>=0?g.block_start:-1,g.strstart-g.block_start,I),g.block_start=g.strstart,kB(g.strm)}function MB(g,I){g.pending_buf[g.pending++]=I}function YB(g,I){g.pending_buf[g.pending++]=I>>>8&255,g.pending_buf[g.pending++]=255&I}function wB(g,I,e,t){var C=g.avail_in;return C>t&&(C=t),0===C?0:(g.avail_in-=C,pB.arraySet(I,g.input,g.next_in,C,e),1===g.state.wrap?g.adler=NB(g.adler,I,C,e):2===g.state.wrap&&(g.adler=WB(g.adler,I,C,e)),g.next_in+=C,g.total_in+=C,C)}function TB(g,I){var e,t,C=g.max_chain_length,Q=g.strstart,F=g.prev_length,B=g.nice_match,n=g.strstart>g.w_size-262?g.strstart-(g.w_size-262):0,U=g.window,s=g.w_mask,i=g.prev,c=g.strstart+258,A=U[Q+F-1],l=U[Q+F];g.prev_length>=g.good_match&&(C>>=2),B>g.lookahead&&(B=g.lookahead);do{if(U[(e=I)+F]===l&&U[e+F-1]===A&&U[e]===U[Q]&&U[++e]===U[Q+1]){Q+=2,e++;do{}while(U[++Q]===U[++e]&&U[++Q]===U[++e]&&U[++Q]===U[++e]&&U[++Q]===U[++e]&&U[++Q]===U[++e]&&U[++Q]===U[++e]&&U[++Q]===U[++e]&&U[++Q]===U[++e]&&Q<c);if(t=258-(c-Q),Q=c-258,t>F){if(g.match_start=I,F=t,t>=B)break;A=U[Q+F-1],l=U[Q+F]}}}while((I=i[I&s])>n&&0!==--C);return F<=g.lookahead?F:g.lookahead}function zB(g){var I,e,t,C,Q,F=g.w_size;do{if(C=g.window_size-g.lookahead-g.strstart,g.strstart>=F+(F-262)){pB.arraySet(g.window,g.window,F,F,0),g.match_start-=F,g.strstart-=F,g.block_start-=F,I=e=g.hash_size;do{t=g.head[--I],g.head[I]=t>=F?t-F:0}while(--e);I=e=F;do{t=g.prev[--I],g.prev[I]=t>=F?t-F:0}while(--e);C+=F}if(0===g.strm.avail_in)break;if(e=wB(g.strm,g.window,g.strstart+g.lookahead,C),g.lookahead+=e,g.lookahead+g.insert>=3)for(Q=g.strstart-g.insert,g.ins_h=g.window[Q],g.ins_h=(g.ins_h<<g.hash_shift^g.window[Q+1])&g.hash_mask;g.insert&&(g.ins_h=(g.ins_h<<g.hash_shift^g.window[Q+3-1])&g.hash_mask,g.prev[Q&g.w_mask]=g.head[g.ins_h],g.head[g.ins_h]=Q,Q++,g.insert--,!(g.lookahead+g.insert<3)););}while(g.lookahead<262&&0!==g.strm.avail_in)}function OB(g,I){for(var e,t;;){if(g.lookahead<262){if(zB(g),g.lookahead<262&&0===I)return 1;if(0===g.lookahead)break}if(e=0,g.lookahead>=3&&(g.ins_h=(g.ins_h<<g.hash_shift^g.window[g.strstart+3-1])&g.hash_mask,e=g.prev[g.strstart&g.w_mask]=g.head[g.ins_h],g.head[g.ins_h]=g.strstart),0!==e&&g.strstart-e<=g.w_size-262&&(g.match_length=TB(g,e)),g.match_length>=3)if(t=EB._tr_tally(g,g.strstart-g.match_start,g.match_length-3),g.lookahead-=g.match_length,g.match_length<=g.max_lazy_match&&g.lookahead>=3){g.match_length--;do{g.strstart++,g.ins_h=(g.ins_h<<g.hash_shift^g.window[g.strstart+3-1])&g.hash_mask,e=g.prev[g.strstart&g.w_mask]=g.head[g.ins_h],g.head[g.ins_h]=g.strstart}while(0!==--g.match_length);g.strstart++}else g.strstart+=g.match_length,g.match_length=0,g.ins_h=g.window[g.strstart],g.ins_h=(g.ins_h<<g.hash_shift^g.window[g.strstart+1])&g.hash_mask;else t=EB._tr_tally(g,0,g.window[g.strstart]),g.lookahead--,g.strstart++;if(t&&(HB(g,!1),0===g.strm.avail_out))return 1}return g.insert=g.strstart<2?g.strstart:2,4===I?(HB(g,!0),0===g.strm.avail_out?3:4):g.last_lit&&(HB(g,!1),0===g.strm.avail_out)?1:2}function KB(g,I){for(var e,t,C;;){if(g.lookahead<262){if(zB(g),g.lookahead<262&&0===I)return 1;if(0===g.lookahead)break}if(e=0,g.lookahead>=3&&(g.ins_h=(g.ins_h<<g.hash_shift^g.window[g.strstart+3-1])&g.hash_mask,e=g.prev[g.strstart&g.w_mask]=g.head[g.ins_h],g.head[g.ins_h]=g.strstart),g.prev_length=g.match_length,g.prev_match=g.match_start,g.match_length=2,0!==e&&g.prev_length<g.max_lazy_match&&g.strstart-e<=g.w_size-262&&(g.match_length=TB(g,e),g.match_length<=5&&(1===g.strategy||3===g.match_length&&g.strstart-g.match_start>4096)&&(g.match_length=2)),g.prev_length>=3&&g.match_length<=g.prev_length){C=g.strstart+g.lookahead-3,t=EB._tr_tally(g,g.strstart-1-g.prev_match,g.prev_length-3),g.lookahead-=g.prev_length-1,g.prev_length-=2;do{++g.strstart<=C&&(g.ins_h=(g.ins_h<<g.hash_shift^g.window[g.strstart+3-1])&g.hash_mask,e=g.prev[g.strstart&g.w_mask]=g.head[g.ins_h],g.head[g.ins_h]=g.strstart)}while(0!==--g.prev_length);if(g.match_available=0,g.match_length=2,g.strstart++,t&&(HB(g,!1),0===g.strm.avail_out))return 1}else if(g.match_available){if((t=EB._tr_tally(g,0,g.window[g.strstart-1]))&&HB(g,!1),g.strstart++,g.lookahead--,0===g.strm.avail_out)return 1}else g.match_available=1,g.strstart++,g.lookahead--}return g.match_available&&(t=EB._tr_tally(g,0,g.window[g.strstart-1]),g.match_available=0),g.insert=g.strstart<2?g.strstart:2,4===I?(HB(g,!0),0===g.strm.avail_out?3:4):g.last_lit&&(HB(g,!1),0===g.strm.avail_out)?1:2}function jB(g,I,e,t,C){this.good_length=g,this.max_lazy=I,this.nice_length=e,this.max_chain=t,this.func=C}function PB(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=8,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new pB.Buf16(1146),this.dyn_dtree=new pB.Buf16(122),this.bl_tree=new pB.Buf16(78),vB(this.dyn_ltree),vB(this.dyn_dtree),vB(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new pB.Buf16(16),this.heap=new pB.Buf16(573),vB(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new pB.Buf16(573),vB(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function _B(g){var I;return g&&g.state?(g.total_in=g.total_out=0,g.data_type=2,(I=g.state).pending=0,I.pending_out=0,I.wrap<0&&(I.wrap=-I.wrap),I.status=I.wrap?42:113,g.adler=2===I.wrap?0:1,I.last_flush=0,EB._tr_init(I),0):XB(g,-2)}function qB(g){var I,e=_B(g);return 0===e&&((I=g.state).window_size=2*I.w_size,vB(I.head),I.max_lazy_match=hB[I.level].max_lazy,I.good_match=hB[I.level].good_length,I.nice_match=hB[I.level].nice_length,I.max_chain_length=hB[I.level].max_chain,I.strstart=0,I.block_start=0,I.lookahead=0,I.insert=0,I.match_length=I.prev_length=2,I.match_available=0,I.ins_h=0),e}function $B(g,I,e,t,C,Q){if(!g)return-2;var F=1;if(-1===I&&(I=6),t<0?(F=0,t=-t):t>15&&(F=2,t-=16),C<1||C>9||8!==e||t<8||t>15||I<0||I>9||Q<0||Q>4)return XB(g,-2);8===t&&(t=9);var B=new PB;return g.state=B,B.strm=g,B.wrap=F,B.gzhead=null,B.w_bits=t,B.w_size=1<<B.w_bits,B.w_mask=B.w_size-1,B.hash_bits=C+7,B.hash_size=1<<B.hash_bits,B.hash_mask=B.hash_size-1,B.hash_shift=~~((B.hash_bits+3-1)/3),B.window=new pB.Buf8(2*B.w_size),B.head=new pB.Buf16(B.hash_size),B.prev=new pB.Buf16(B.w_size),B.lit_bufsize=1<<C+6,B.pending_buf_size=4*B.lit_bufsize,B.pending_buf=new pB.Buf8(B.pending_buf_size),B.d_buf=1*B.lit_bufsize,B.l_buf=3*B.lit_bufsize,B.level=I,B.strategy=Q,B.method=e,qB(g)}hB=[new jB(0,0,0,0,(function(g,I){var e=65535;for(e>g.pending_buf_size-5&&(e=g.pending_buf_size-5);;){if(g.lookahead<=1){if(zB(g),0===g.lookahead&&0===I)return 1;if(0===g.lookahead)break}g.strstart+=g.lookahead,g.lookahead=0;var t=g.block_start+e;if((0===g.strstart||g.strstart>=t)&&(g.lookahead=g.strstart-t,g.strstart=t,HB(g,!1),0===g.strm.avail_out))return 1;if(g.strstart-g.block_start>=g.w_size-262&&(HB(g,!1),0===g.strm.avail_out))return 1}return g.insert=0,4===I?(HB(g,!0),0===g.strm.avail_out?3:4):(g.strstart>g.block_start&&(HB(g,!1),g.strm.avail_out),1)})),new jB(4,4,8,4,OB),new jB(4,5,16,8,OB),new jB(4,6,32,32,OB),new jB(4,4,16,16,KB),new jB(8,16,32,32,KB),new jB(8,16,128,128,KB),new jB(8,32,128,256,KB),new jB(32,128,258,1024,KB),new jB(32,258,258,4096,KB)],zF.deflateInit=function(g,I){return $B(g,I,8,15,8,0)},zF.deflateInit2=$B,zF.deflateReset=qB,zF.deflateResetKeep=_B,zF.deflateSetHeader=function(g,I){return g&&g.state?2!==g.state.wrap?-2:(g.state.gzhead=I,0):-2},zF.deflate=function(g,I){var e,t,C,Q;if(!g||!g.state||I>5||I<0)return g?XB(g,-2):-2;if(t=g.state,!g.output||!g.input&&0!==g.avail_in||666===t.status&&4!==I)return XB(g,0===g.avail_out?-5:-2);if(t.strm=g,e=t.last_flush,t.last_flush=I,42===t.status)if(2===t.wrap)g.adler=0,MB(t,31),MB(t,139),MB(t,8),t.gzhead?(MB(t,(t.gzhead.text?1:0)+(t.gzhead.hcrc?2:0)+(t.gzhead.extra?4:0)+(t.gzhead.name?8:0)+(t.gzhead.comment?16:0)),MB(t,255&t.gzhead.time),MB(t,t.gzhead.time>>8&255),MB(t,t.gzhead.time>>16&255),MB(t,t.gzhead.time>>24&255),MB(t,9===t.level?2:t.strategy>=2||t.level<2?4:0),MB(t,255&t.gzhead.os),t.gzhead.extra&&t.gzhead.extra.length&&(MB(t,255&t.gzhead.extra.length),MB(t,t.gzhead.extra.length>>8&255)),t.gzhead.hcrc&&(g.adler=WB(g.adler,t.pending_buf,t.pending,0)),t.gzindex=0,t.status=69):(MB(t,0),MB(t,0),MB(t,0),MB(t,0),MB(t,0),MB(t,9===t.level?2:t.strategy>=2||t.level<2?4:0),MB(t,3),t.status=113);else{var F=8+(t.w_bits-8<<4)<<8;F|=(t.strategy>=2||t.level<2?0:t.level<6?1:6===t.level?2:3)<<6,0!==t.strstart&&(F|=32),F+=31-F%31,t.status=113,YB(t,F),0!==t.strstart&&(YB(t,g.adler>>>16),YB(t,65535&g.adler)),g.adler=1}if(69===t.status)if(t.gzhead.extra){for(C=t.pending;t.gzindex<(65535&t.gzhead.extra.length)&&(t.pending!==t.pending_buf_size||(t.gzhead.hcrc&&t.pending>C&&(g.adler=WB(g.adler,t.pending_buf,t.pending-C,C)),kB(g),C=t.pending,t.pending!==t.pending_buf_size));)MB(t,255&t.gzhead.extra[t.gzindex]),t.gzindex++;t.gzhead.hcrc&&t.pending>C&&(g.adler=WB(g.adler,t.pending_buf,t.pending-C,C)),t.gzindex===t.gzhead.extra.length&&(t.gzindex=0,t.status=73)}else t.status=73;if(73===t.status)if(t.gzhead.name){C=t.pending;do{if(t.pending===t.pending_buf_size&&(t.gzhead.hcrc&&t.pending>C&&(g.adler=WB(g.adler,t.pending_buf,t.pending-C,C)),kB(g),C=t.pending,t.pending===t.pending_buf_size)){Q=1;break}Q=t.gzindex<t.gzhead.name.length?255&t.gzhead.name.charCodeAt(t.gzindex++):0,MB(t,Q)}while(0!==Q);t.gzhead.hcrc&&t.pending>C&&(g.adler=WB(g.adler,t.pending_buf,t.pending-C,C)),0===Q&&(t.gzindex=0,t.status=91)}else t.status=91;if(91===t.status)if(t.gzhead.comment){C=t.pending;do{if(t.pending===t.pending_buf_size&&(t.gzhead.hcrc&&t.pending>C&&(g.adler=WB(g.adler,t.pending_buf,t.pending-C,C)),kB(g),C=t.pending,t.pending===t.pending_buf_size)){Q=1;break}Q=t.gzindex<t.gzhead.comment.length?255&t.gzhead.comment.charCodeAt(t.gzindex++):0,MB(t,Q)}while(0!==Q);t.gzhead.hcrc&&t.pending>C&&(g.adler=WB(g.adler,t.pending_buf,t.pending-C,C)),0===Q&&(t.status=103)}else t.status=103;if(103===t.status&&(t.gzhead.hcrc?(t.pending+2>t.pending_buf_size&&kB(g),t.pending+2<=t.pending_buf_size&&(MB(t,255&g.adler),MB(t,g.adler>>8&255),g.adler=0,t.status=113)):t.status=113),0!==t.pending){if(kB(g),0===g.avail_out)return t.last_flush=-1,0}else if(0===g.avail_in&&JB(I)<=JB(e)&&4!==I)return XB(g,-5);if(666===t.status&&0!==g.avail_in)return XB(g,-5);if(0!==g.avail_in||0!==t.lookahead||0!==I&&666!==t.status){var B=2===t.strategy?function(g,I){for(var e;;){if(0===g.lookahead&&(zB(g),0===g.lookahead)){if(0===I)return 1;break}if(g.match_length=0,e=EB._tr_tally(g,0,g.window[g.strstart]),g.lookahead--,g.strstart++,e&&(HB(g,!1),0===g.strm.avail_out))return 1}return g.insert=0,4===I?(HB(g,!0),0===g.strm.avail_out?3:4):g.last_lit&&(HB(g,!1),0===g.strm.avail_out)?1:2}(t,I):3===t.strategy?function(g,I){for(var e,t,C,Q,F=g.window;;){if(g.lookahead<=258){if(zB(g),g.lookahead<=258&&0===I)return 1;if(0===g.lookahead)break}if(g.match_length=0,g.lookahead>=3&&g.strstart>0&&(t=F[C=g.strstart-1])===F[++C]&&t===F[++C]&&t===F[++C]){Q=g.strstart+258;do{}while(t===F[++C]&&t===F[++C]&&t===F[++C]&&t===F[++C]&&t===F[++C]&&t===F[++C]&&t===F[++C]&&t===F[++C]&&C<Q);g.match_length=258-(Q-C),g.match_length>g.lookahead&&(g.match_length=g.lookahead)}if(g.match_length>=3?(e=EB._tr_tally(g,1,g.match_length-3),g.lookahead-=g.match_length,g.strstart+=g.match_length,g.match_length=0):(e=EB._tr_tally(g,0,g.window[g.strstart]),g.lookahead--,g.strstart++),e&&(HB(g,!1),0===g.strm.avail_out))return 1}return g.insert=0,4===I?(HB(g,!0),0===g.strm.avail_out?3:4):g.last_lit&&(HB(g,!1),0===g.strm.avail_out)?1:2}(t,I):hB[t.level].func(t,I);if(3!==B&&4!==B||(t.status=666),1===B||3===B)return 0===g.avail_out&&(t.last_flush=-1),0;if(2===B&&(1===I?EB._tr_align(t):5!==I&&(EB._tr_stored_block(t,0,0,!1),3===I&&(vB(t.head),0===t.lookahead&&(t.strstart=0,t.block_start=0,t.insert=0))),kB(g),0===g.avail_out))return t.last_flush=-1,0}return 4!==I?0:t.wrap<=0?1:(2===t.wrap?(MB(t,255&g.adler),MB(t,g.adler>>8&255),MB(t,g.adler>>16&255),MB(t,g.adler>>24&255),MB(t,255&g.total_in),MB(t,g.total_in>>8&255),MB(t,g.total_in>>16&255),MB(t,g.total_in>>24&255)):(YB(t,g.adler>>>16),YB(t,65535&g.adler)),kB(g),t.wrap>0&&(t.wrap=-t.wrap),0!==t.pending?0:1)},zF.deflateEnd=function(g){var I;return g&&g.state?42!==(I=g.state.status)&&69!==I&&73!==I&&91!==I&&103!==I&&113!==I&&666!==I?XB(g,-2):(g.state=null,113===I?XB(g,-3):0):-2},zF.deflateSetDictionary=function(g,I){var e,t,C,Q,F,B,n,U,s=I.length;if(!g||!g.state)return-2;if(2===(Q=(e=g.state).wrap)||1===Q&&42!==e.status||e.lookahead)return-2;for(1===Q&&(g.adler=NB(g.adler,I,s,0)),e.wrap=0,s>=e.w_size&&(0===Q&&(vB(e.head),e.strstart=0,e.block_start=0,e.insert=0),U=new pB.Buf8(e.w_size),pB.arraySet(U,I,s-e.w_size,e.w_size,0),I=U,s=e.w_size),F=g.avail_in,B=g.next_in,n=g.input,g.avail_in=s,g.next_in=0,g.input=I,zB(e);e.lookahead>=3;){t=e.strstart,C=e.lookahead-2;do{e.ins_h=(e.ins_h<<e.hash_shift^e.window[t+3-1])&e.hash_mask,e.prev[t&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=t,t++}while(--C);e.strstart=t,e.lookahead=2,zB(e)}return e.strstart+=e.lookahead,e.block_start=e.strstart,e.insert=e.lookahead,e.lookahead=0,e.match_length=e.prev_length=2,e.match_available=0,g.next_in=B,g.input=n,g.avail_in=F,e.wrap=Q,0},zF.deflateInfo="pako deflate (from Nodeca project)";var gn={},In=OF,en=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],tn=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],Cn=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],Qn=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64],Fn=OF,Bn=LB,nn=DB,Un=function(g,I){var e,t,C,Q,F,B,n,U,s,i,c,A,l,a,r,o,d,u,y,b,Z,m,x,R,S;e=g.state,t=g.next_in,R=g.input,C=t+(g.avail_in-5),Q=g.next_out,S=g.output,F=Q-(I-g.avail_out),B=Q+(g.avail_out-257),n=e.dmax,U=e.wsize,s=e.whave,i=e.wnext,c=e.window,A=e.hold,l=e.bits,a=e.lencode,r=e.distcode,o=(1<<e.lenbits)-1,d=(1<<e.distbits)-1;g:do{l<15&&(A+=R[t++]<<l,l+=8,A+=R[t++]<<l,l+=8),u=a[A&o];I:for(;;){if(A>>>=y=u>>>24,l-=y,0===(y=u>>>16&255))S[Q++]=65535&u;else{if(!(16&y)){if(0===(64&y)){u=a[(65535&u)+(A&(1<<y)-1)];continue I}if(32&y){e.mode=12;break g}g.msg="invalid literal/length code",e.mode=30;break g}b=65535&u,(y&=15)&&(l<y&&(A+=R[t++]<<l,l+=8),b+=A&(1<<y)-1,A>>>=y,l-=y),l<15&&(A+=R[t++]<<l,l+=8,A+=R[t++]<<l,l+=8),u=r[A&d];e:for(;;){if(A>>>=y=u>>>24,l-=y,!(16&(y=u>>>16&255))){if(0===(64&y)){u=r[(65535&u)+(A&(1<<y)-1)];continue e}g.msg="invalid distance code",e.mode=30;break g}if(Z=65535&u,l<(y&=15)&&(A+=R[t++]<<l,(l+=8)<y&&(A+=R[t++]<<l,l+=8)),(Z+=A&(1<<y)-1)>n){g.msg="invalid distance too far back",e.mode=30;break g}if(A>>>=y,l-=y,Z>(y=Q-F)){if((y=Z-y)>s&&e.sane){g.msg="invalid distance too far back",e.mode=30;break g}if(m=0,x=c,0===i){if(m+=U-y,y<b){b-=y;do{S[Q++]=c[m++]}while(--y);m=Q-Z,x=S}}else if(i<y){if(m+=U+i-y,(y-=i)<b){b-=y;do{S[Q++]=c[m++]}while(--y);if(m=0,i<b){b-=y=i;do{S[Q++]=c[m++]}while(--y);m=Q-Z,x=S}}}else if(m+=i-y,y<b){b-=y;do{S[Q++]=c[m++]}while(--y);m=Q-Z,x=S}for(;b>2;)S[Q++]=x[m++],S[Q++]=x[m++],S[Q++]=x[m++],b-=3;b&&(S[Q++]=x[m++],b>1&&(S[Q++]=x[m++]))}else{m=Q-Z;do{S[Q++]=S[m++],S[Q++]=S[m++],S[Q++]=S[m++],b-=3}while(b>2);b&&(S[Q++]=S[m++],b>1&&(S[Q++]=S[m++]))}break}}break}}while(t<C&&Q<B);t-=b=l>>3,A&=(1<<(l-=b<<3))-1,g.next_in=t,g.next_out=Q,g.avail_in=t<C?C-t+5:5-(t-C),g.avail_out=Q<B?B-Q+257:257-(Q-B),e.hold=A,e.bits=l},sn=function(g,I,e,t,C,Q,F,B){var n,U,s,i,c,A,l,a,r,o=B.bits,d=0,u=0,y=0,b=0,Z=0,m=0,x=0,R=0,S=0,G=0,L=null,V=0,h=new In.Buf16(16),D=new In.Buf16(16),p=null,E=0;for(d=0;d<=15;d++)h[d]=0;for(u=0;u<t;u++)h[I[e+u]]++;for(Z=o,b=15;b>=1&&0===h[b];b--);if(Z>b&&(Z=b),0===b)return C[Q++]=20971520,C[Q++]=20971520,B.bits=1,0;for(y=1;y<b&&0===h[y];y++);for(Z<y&&(Z=y),R=1,d=1;d<=15;d++)if(R<<=1,(R-=h[d])<0)return-1;if(R>0&&(0===g||1!==b))return-1;for(D[1]=0,d=1;d<15;d++)D[d+1]=D[d]+h[d];for(u=0;u<t;u++)0!==I[e+u]&&(F[D[I[e+u]]++]=u);if(0===g?(L=p=F,A=19):1===g?(L=en,V-=257,p=tn,E-=257,A=256):(L=Cn,p=Qn,A=-1),G=0,u=0,d=y,c=Q,m=Z,x=0,s=-1,i=(S=1<<Z)-1,1===g&&S>852||2===g&&S>592)return 1;for(;;){l=d-x,F[u]<A?(a=0,r=F[u]):F[u]>A?(a=p[E+F[u]],r=L[V+F[u]]):(a=96,r=0),n=1<<d-x,y=U=1<<m;do{C[c+(G>>x)+(U-=n)]=l<<24|a<<16|r|0}while(0!==U);for(n=1<<d-1;G&n;)n>>=1;if(0!==n?(G&=n-1,G+=n):G=0,u++,0===--h[d]){if(d===b)break;d=I[e+F[u]]}if(d>Z&&(G&i)!==s){for(0===x&&(x=Z),c+=y,R=1<<(m=d-x);m+x<b&&!((R-=h[m+x])<=0);)m++,R<<=1;if(S+=1<<m,1===g&&S>852||2===g&&S>592)return 1;C[s=G&i]=Z<<24|m<<16|c-Q|0}}return 0!==G&&(C[c+G]=d-x<<24|64<<16|0),B.bits=Z,0};function cn(g){return(g>>>24&255)+(g>>>8&65280)+((65280&g)<<8)+((255&g)<<24)}function An(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Fn.Buf16(320),this.work=new Fn.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function ln(g){var I;return g&&g.state?(I=g.state,g.total_in=g.total_out=I.total=0,g.msg="",I.wrap&&(g.adler=1&I.wrap),I.mode=1,I.last=0,I.havedict=0,I.dmax=32768,I.head=null,I.hold=0,I.bits=0,I.lencode=I.lendyn=new Fn.Buf32(852),I.distcode=I.distdyn=new Fn.Buf32(592),I.sane=1,I.back=-1,0):-2}function an(g){var I;return g&&g.state?((I=g.state).wsize=0,I.whave=0,I.wnext=0,ln(g)):-2}function rn(g,I){var e,t;return g&&g.state?(t=g.state,I<0?(e=0,I=-I):(e=1+(I>>4),I<48&&(I&=15)),I&&(I<8||I>15)?-2:(null!==t.window&&t.wbits!==I&&(t.window=null),t.wrap=e,t.wbits=I,an(g))):-2}function on(g,I){var e,t;return g?(t=new An,g.state=t,t.window=null,0!==(e=rn(g,I))&&(g.state=null),e):-2}var dn,un,yn=!0;function bn(g){if(yn){var I;for(dn=new Fn.Buf32(512),un=new Fn.Buf32(32),I=0;I<144;)g.lens[I++]=8;for(;I<256;)g.lens[I++]=9;for(;I<280;)g.lens[I++]=7;for(;I<288;)g.lens[I++]=8;for(sn(1,g.lens,0,288,dn,0,g.work,{bits:9}),I=0;I<32;)g.lens[I++]=5;sn(2,g.lens,0,32,un,0,g.work,{bits:5}),yn=!1}g.lencode=dn,g.lenbits=9,g.distcode=un,g.distbits=5}function Zn(g,I,e,t){var C,Q=g.state;return null===Q.window&&(Q.wsize=1<<Q.wbits,Q.wnext=0,Q.whave=0,Q.window=new Fn.Buf8(Q.wsize)),t>=Q.wsize?(Fn.arraySet(Q.window,I,e-Q.wsize,Q.wsize,0),Q.wnext=0,Q.whave=Q.wsize):((C=Q.wsize-Q.wnext)>t&&(C=t),Fn.arraySet(Q.window,I,e-t,C,Q.wnext),(t-=C)?(Fn.arraySet(Q.window,I,e-t,t,0),Q.wnext=t,Q.whave=Q.wsize):(Q.wnext+=C,Q.wnext===Q.wsize&&(Q.wnext=0),Q.whave<Q.wsize&&(Q.whave+=C))),0}gn.inflateReset=an,gn.inflateReset2=rn,gn.inflateResetKeep=ln,gn.inflateInit=function(g){return on(g,15)},gn.inflateInit2=on,gn.inflate=function(g,I){var e,t,C,Q,F,B,n,U,s,i,c,A,l,a,r,o,d,u,y,b,Z,m,x,R,S=0,G=new Fn.Buf8(4),L=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!g||!g.state||!g.output||!g.input&&0!==g.avail_in)return-2;12===(e=g.state).mode&&(e.mode=13),F=g.next_out,C=g.output,n=g.avail_out,Q=g.next_in,t=g.input,B=g.avail_in,U=e.hold,s=e.bits,i=B,c=n,m=0;g:for(;;)switch(e.mode){case 1:if(0===e.wrap){e.mode=13;break}for(;s<16;){if(0===B)break g;B--,U+=t[Q++]<<s,s+=8}if(2&e.wrap&&35615===U){e.check=0,G[0]=255&U,G[1]=U>>>8&255,e.check=nn(e.check,G,2,0),U=0,s=0,e.mode=2;break}if(e.flags=0,e.head&&(e.head.done=!1),!(1&e.wrap)||(((255&U)<<8)+(U>>8))%31){g.msg="incorrect header check",e.mode=30;break}if(8!==(15&U)){g.msg="unknown compression method",e.mode=30;break}if(s-=4,Z=8+(15&(U>>>=4)),0===e.wbits)e.wbits=Z;else if(Z>e.wbits){g.msg="invalid window size",e.mode=30;break}e.dmax=1<<Z,g.adler=e.check=1,e.mode=512&U?10:12,U=0,s=0;break;case 2:for(;s<16;){if(0===B)break g;B--,U+=t[Q++]<<s,s+=8}if(e.flags=U,8!==(255&e.flags)){g.msg="unknown compression method",e.mode=30;break}if(57344&e.flags){g.msg="unknown header flags set",e.mode=30;break}e.head&&(e.head.text=U>>8&1),512&e.flags&&(G[0]=255&U,G[1]=U>>>8&255,e.check=nn(e.check,G,2,0)),U=0,s=0,e.mode=3;case 3:for(;s<32;){if(0===B)break g;B--,U+=t[Q++]<<s,s+=8}e.head&&(e.head.time=U),512&e.flags&&(G[0]=255&U,G[1]=U>>>8&255,G[2]=U>>>16&255,G[3]=U>>>24&255,e.check=nn(e.check,G,4,0)),U=0,s=0,e.mode=4;case 4:for(;s<16;){if(0===B)break g;B--,U+=t[Q++]<<s,s+=8}e.head&&(e.head.xflags=255&U,e.head.os=U>>8),512&e.flags&&(G[0]=255&U,G[1]=U>>>8&255,e.check=nn(e.check,G,2,0)),U=0,s=0,e.mode=5;case 5:if(1024&e.flags){for(;s<16;){if(0===B)break g;B--,U+=t[Q++]<<s,s+=8}e.length=U,e.head&&(e.head.extra_len=U),512&e.flags&&(G[0]=255&U,G[1]=U>>>8&255,e.check=nn(e.check,G,2,0)),U=0,s=0}else e.head&&(e.head.extra=null);e.mode=6;case 6:if(1024&e.flags&&((A=e.length)>B&&(A=B),A&&(e.head&&(Z=e.head.extra_len-e.length,e.head.extra||(e.head.extra=new Array(e.head.extra_len)),Fn.arraySet(e.head.extra,t,Q,A,Z)),512&e.flags&&(e.check=nn(e.check,t,A,Q)),B-=A,Q+=A,e.length-=A),e.length))break g;e.length=0,e.mode=7;case 7:if(2048&e.flags){if(0===B)break g;A=0;do{Z=t[Q+A++],e.head&&Z&&e.length<65536&&(e.head.name+=String.fromCharCode(Z))}while(Z&&A<B);if(512&e.flags&&(e.check=nn(e.check,t,A,Q)),B-=A,Q+=A,Z)break g}else e.head&&(e.head.name=null);e.length=0,e.mode=8;case 8:if(4096&e.flags){if(0===B)break g;A=0;do{Z=t[Q+A++],e.head&&Z&&e.length<65536&&(e.head.comment+=String.fromCharCode(Z))}while(Z&&A<B);if(512&e.flags&&(e.check=nn(e.check,t,A,Q)),B-=A,Q+=A,Z)break g}else e.head&&(e.head.comment=null);e.mode=9;case 9:if(512&e.flags){for(;s<16;){if(0===B)break g;B--,U+=t[Q++]<<s,s+=8}if(U!==(65535&e.check)){g.msg="header crc mismatch",e.mode=30;break}U=0,s=0}e.head&&(e.head.hcrc=e.flags>>9&1,e.head.done=!0),g.adler=e.check=0,e.mode=12;break;case 10:for(;s<32;){if(0===B)break g;B--,U+=t[Q++]<<s,s+=8}g.adler=e.check=cn(U),U=0,s=0,e.mode=11;case 11:if(0===e.havedict)return g.next_out=F,g.avail_out=n,g.next_in=Q,g.avail_in=B,e.hold=U,e.bits=s,2;g.adler=e.check=1,e.mode=12;case 12:if(5===I||6===I)break g;case 13:if(e.last){U>>>=7&s,s-=7&s,e.mode=27;break}for(;s<3;){if(0===B)break g;B--,U+=t[Q++]<<s,s+=8}switch(e.last=1&U,s-=1,3&(U>>>=1)){case 0:e.mode=14;break;case 1:if(bn(e),e.mode=20,6===I){U>>>=2,s-=2;break g}break;case 2:e.mode=17;break;case 3:g.msg="invalid block type",e.mode=30}U>>>=2,s-=2;break;case 14:for(U>>>=7&s,s-=7&s;s<32;){if(0===B)break g;B--,U+=t[Q++]<<s,s+=8}if((65535&U)!==(U>>>16^65535)){g.msg="invalid stored block lengths",e.mode=30;break}if(e.length=65535&U,U=0,s=0,e.mode=15,6===I)break g;case 15:e.mode=16;case 16:if(A=e.length){if(A>B&&(A=B),A>n&&(A=n),0===A)break g;Fn.arraySet(C,t,Q,A,F),B-=A,Q+=A,n-=A,F+=A,e.length-=A;break}e.mode=12;break;case 17:for(;s<14;){if(0===B)break g;B--,U+=t[Q++]<<s,s+=8}if(e.nlen=257+(31&U),U>>>=5,s-=5,e.ndist=1+(31&U),U>>>=5,s-=5,e.ncode=4+(15&U),U>>>=4,s-=4,e.nlen>286||e.ndist>30){g.msg="too many length or distance symbols",e.mode=30;break}e.have=0,e.mode=18;case 18:for(;e.have<e.ncode;){for(;s<3;){if(0===B)break g;B--,U+=t[Q++]<<s,s+=8}e.lens[L[e.have++]]=7&U,U>>>=3,s-=3}for(;e.have<19;)e.lens[L[e.have++]]=0;if(e.lencode=e.lendyn,e.lenbits=7,x={bits:e.lenbits},m=sn(0,e.lens,0,19,e.lencode,0,e.work,x),e.lenbits=x.bits,m){g.msg="invalid code lengths set",e.mode=30;break}e.have=0,e.mode=19;case 19:for(;e.have<e.nlen+e.ndist;){for(;o=(S=e.lencode[U&(1<<e.lenbits)-1])>>>16&255,d=65535&S,!((r=S>>>24)<=s);){if(0===B)break g;B--,U+=t[Q++]<<s,s+=8}if(d<16)U>>>=r,s-=r,e.lens[e.have++]=d;else{if(16===d){for(R=r+2;s<R;){if(0===B)break g;B--,U+=t[Q++]<<s,s+=8}if(U>>>=r,s-=r,0===e.have){g.msg="invalid bit length repeat",e.mode=30;break}Z=e.lens[e.have-1],A=3+(3&U),U>>>=2,s-=2}else if(17===d){for(R=r+3;s<R;){if(0===B)break g;B--,U+=t[Q++]<<s,s+=8}s-=r,Z=0,A=3+(7&(U>>>=r)),U>>>=3,s-=3}else{for(R=r+7;s<R;){if(0===B)break g;B--,U+=t[Q++]<<s,s+=8}s-=r,Z=0,A=11+(127&(U>>>=r)),U>>>=7,s-=7}if(e.have+A>e.nlen+e.ndist){g.msg="invalid bit length repeat",e.mode=30;break}for(;A--;)e.lens[e.have++]=Z}}if(30===e.mode)break;if(0===e.lens[256]){g.msg="invalid code -- missing end-of-block",e.mode=30;break}if(e.lenbits=9,x={bits:e.lenbits},m=sn(1,e.lens,0,e.nlen,e.lencode,0,e.work,x),e.lenbits=x.bits,m){g.msg="invalid literal/lengths set",e.mode=30;break}if(e.distbits=6,e.distcode=e.distdyn,x={bits:e.distbits},m=sn(2,e.lens,e.nlen,e.ndist,e.distcode,0,e.work,x),e.distbits=x.bits,m){g.msg="invalid distances set",e.mode=30;break}if(e.mode=20,6===I)break g;case 20:e.mode=21;case 21:if(B>=6&&n>=258){g.next_out=F,g.avail_out=n,g.next_in=Q,g.avail_in=B,e.hold=U,e.bits=s,Un(g,c),F=g.next_out,C=g.output,n=g.avail_out,Q=g.next_in,t=g.input,B=g.avail_in,U=e.hold,s=e.bits,12===e.mode&&(e.back=-1);break}for(e.back=0;o=(S=e.lencode[U&(1<<e.lenbits)-1])>>>16&255,d=65535&S,!((r=S>>>24)<=s);){if(0===B)break g;B--,U+=t[Q++]<<s,s+=8}if(o&&0===(240&o)){for(u=r,y=o,b=d;o=(S=e.lencode[b+((U&(1<<u+y)-1)>>u)])>>>16&255,d=65535&S,!(u+(r=S>>>24)<=s);){if(0===B)break g;B--,U+=t[Q++]<<s,s+=8}U>>>=u,s-=u,e.back+=u}if(U>>>=r,s-=r,e.back+=r,e.length=d,0===o){e.mode=26;break}if(32&o){e.back=-1,e.mode=12;break}if(64&o){g.msg="invalid literal/length code",e.mode=30;break}e.extra=15&o,e.mode=22;case 22:if(e.extra){for(R=e.extra;s<R;){if(0===B)break g;B--,U+=t[Q++]<<s,s+=8}e.length+=U&(1<<e.extra)-1,U>>>=e.extra,s-=e.extra,e.back+=e.extra}e.was=e.length,e.mode=23;case 23:for(;o=(S=e.distcode[U&(1<<e.distbits)-1])>>>16&255,d=65535&S,!((r=S>>>24)<=s);){if(0===B)break g;B--,U+=t[Q++]<<s,s+=8}if(0===(240&o)){for(u=r,y=o,b=d;o=(S=e.distcode[b+((U&(1<<u+y)-1)>>u)])>>>16&255,d=65535&S,!(u+(r=S>>>24)<=s);){if(0===B)break g;B--,U+=t[Q++]<<s,s+=8}U>>>=u,s-=u,e.back+=u}if(U>>>=r,s-=r,e.back+=r,64&o){g.msg="invalid distance code",e.mode=30;break}e.offset=d,e.extra=15&o,e.mode=24;case 24:if(e.extra){for(R=e.extra;s<R;){if(0===B)break g;B--,U+=t[Q++]<<s,s+=8}e.offset+=U&(1<<e.extra)-1,U>>>=e.extra,s-=e.extra,e.back+=e.extra}if(e.offset>e.dmax){g.msg="invalid distance too far back",e.mode=30;break}e.mode=25;case 25:if(0===n)break g;if(A=c-n,e.offset>A){if((A=e.offset-A)>e.whave&&e.sane){g.msg="invalid distance too far back",e.mode=30;break}A>e.wnext?(A-=e.wnext,l=e.wsize-A):l=e.wnext-A,A>e.length&&(A=e.length),a=e.window}else a=C,l=F-e.offset,A=e.length;A>n&&(A=n),n-=A,e.length-=A;do{C[F++]=a[l++]}while(--A);0===e.length&&(e.mode=21);break;case 26:if(0===n)break g;C[F++]=e.length,n--,e.mode=21;break;case 27:if(e.wrap){for(;s<32;){if(0===B)break g;B--,U|=t[Q++]<<s,s+=8}if(c-=n,g.total_out+=c,e.total+=c,c&&(g.adler=e.check=e.flags?nn(e.check,C,c,F-c):Bn(e.check,C,c,F-c)),c=n,(e.flags?U:cn(U))!==e.check){g.msg="incorrect data check",e.mode=30;break}U=0,s=0}e.mode=28;case 28:if(e.wrap&&e.flags){for(;s<32;){if(0===B)break g;B--,U+=t[Q++]<<s,s+=8}if(U!==(4294967295&e.total)){g.msg="incorrect length check",e.mode=30;break}U=0,s=0}e.mode=29;case 29:m=1;break g;case 30:m=-3;break g;case 31:return-4;case 32:default:return-2}return g.next_out=F,g.avail_out=n,g.next_in=Q,g.avail_in=B,e.hold=U,e.bits=s,(e.wsize||c!==g.avail_out&&e.mode<30&&(e.mode<27||4!==I))&&Zn(g,g.output,g.next_out,c-g.avail_out),i-=g.avail_in,c-=g.avail_out,g.total_in+=i,g.total_out+=c,e.total+=c,e.wrap&&c&&(g.adler=e.check=e.flags?nn(e.check,C,c,g.next_out-c):Bn(e.check,C,c,g.next_out-c)),g.data_type=e.bits+(e.last?64:0)+(12===e.mode?128:0)+(20===e.mode||15===e.mode?256:0),(0===i&&0===c||4===I)&&0===m&&(m=-5),m},gn.inflateEnd=function(g){if(!g||!g.state)return-2;var I=g.state;return I.window&&(I.window=null),g.state=null,0},gn.inflateGetHeader=function(g,I){var e;return g&&g.state?0===(2&(e=g.state).wrap)?-2:(e.head=I,I.done=!1,0):-2},gn.inflateSetDictionary=function(g,I){var e,t=I.length;return g&&g.state?0!==(e=g.state).wrap&&11!==e.mode?-2:11===e.mode&&Bn(1,I,t,0)!==e.check?-3:Zn(g,I,t,t)?(e.mode=31,-4):(e.havedict=1,0):-2},gn.inflateInfo="pako inflate (from Nodeca project)";var mn={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};!function(g){var I=qt.exports,e=TF,t=zF,C=gn,Q=mn;for(var F in Q)g[F]=Q[F];g.NONE=0,g.DEFLATE=1,g.INFLATE=2,g.GZIP=3,g.GUNZIP=4,g.DEFLATERAW=5,g.INFLATERAW=6,g.UNZIP=7;function B(I){if("number"!==typeof I||I<g.DEFLATE||I>g.UNZIP)throw new TypeError("Bad argument");this.dictionary=null,this.err=0,this.flush=0,this.init_done=!1,this.level=0,this.memLevel=0,this.mode=I,this.strategy=0,this.windowBits=0,this.write_in_progress=!1,this.pending_close=!1,this.gzip_id_bytes_read=0}B.prototype.close=function(){this.write_in_progress?this.pending_close=!0:(this.pending_close=!1,I(this.init_done,"close before init"),I(this.mode<=g.UNZIP),this.mode===g.DEFLATE||this.mode===g.GZIP||this.mode===g.DEFLATERAW?t.deflateEnd(this.strm):this.mode!==g.INFLATE&&this.mode!==g.GUNZIP&&this.mode!==g.INFLATERAW&&this.mode!==g.UNZIP||C.inflateEnd(this.strm),this.mode=g.NONE,this.dictionary=null)},B.prototype.write=function(g,I,e,t,C,Q,F){return this._write(!0,g,I,e,t,C,Q,F)},B.prototype.writeSync=function(g,I,e,t,C,Q,F){return this._write(!1,g,I,e,t,C,Q,F)},B.prototype._write=function(e,t,C,Q,F,B,n,U){if(I.equal(arguments.length,8),I(this.init_done,"write before init"),I(this.mode!==g.NONE,"already finalized"),I.equal(!1,this.write_in_progress,"write already in progress"),I.equal(!1,this.pending_close,"close is pending"),this.write_in_progress=!0,I.equal(!1,void 0===t,"must provide flush value"),this.write_in_progress=!0,t!==g.Z_NO_FLUSH&&t!==g.Z_PARTIAL_FLUSH&&t!==g.Z_SYNC_FLUSH&&t!==g.Z_FULL_FLUSH&&t!==g.Z_FINISH&&t!==g.Z_BLOCK)throw new Error("Invalid flush value");if(null==C&&(C=o.alloc(0),F=0,Q=0),this.strm.avail_in=F,this.strm.input=C,this.strm.next_in=Q,this.strm.avail_out=U,this.strm.output=B,this.strm.next_out=n,this.flush=t,!e)return this._process(),this._checkError()?this._afterSync():void 0;var s=this;return mg.nextTick((function(){s._process(),s._after()})),this},B.prototype._afterSync=function(){var g=this.strm.avail_out,I=this.strm.avail_in;return this.write_in_progress=!1,[I,g]},B.prototype._process=function(){var I=null;switch(this.mode){case g.DEFLATE:case g.GZIP:case g.DEFLATERAW:this.err=t.deflate(this.strm,this.flush);break;case g.UNZIP:switch(this.strm.avail_in>0&&(I=this.strm.next_in),this.gzip_id_bytes_read){case 0:if(null===I)break;if(31!==this.strm.input[I]){this.mode=g.INFLATE;break}if(this.gzip_id_bytes_read=1,I++,1===this.strm.avail_in)break;case 1:if(null===I)break;139===this.strm.input[I]?(this.gzip_id_bytes_read=2,this.mode=g.GUNZIP):this.mode=g.INFLATE;break;default:throw new Error("invalid number of gzip magic number bytes read")}case g.INFLATE:case g.GUNZIP:case g.INFLATERAW:for(this.err=C.inflate(this.strm,this.flush),this.err===g.Z_NEED_DICT&&this.dictionary&&(this.err=C.inflateSetDictionary(this.strm,this.dictionary),this.err===g.Z_OK?this.err=C.inflate(this.strm,this.flush):this.err===g.Z_DATA_ERROR&&(this.err=g.Z_NEED_DICT));this.strm.avail_in>0&&this.mode===g.GUNZIP&&this.err===g.Z_STREAM_END&&0!==this.strm.next_in[0];)this.reset(),this.err=C.inflate(this.strm,this.flush);break;default:throw new Error("Unknown mode "+this.mode)}},B.prototype._checkError=function(){switch(this.err){case g.Z_OK:case g.Z_BUF_ERROR:if(0!==this.strm.avail_out&&this.flush===g.Z_FINISH)return this._error("unexpected end of file"),!1;break;case g.Z_STREAM_END:break;case g.Z_NEED_DICT:return null==this.dictionary?this._error("Missing dictionary"):this._error("Bad dictionary"),!1;default:return this._error("Zlib error"),!1}return!0},B.prototype._after=function(){if(this._checkError()){var g=this.strm.avail_out,I=this.strm.avail_in;this.write_in_progress=!1,this.callback(I,g),this.pending_close&&this.close()}},B.prototype._error=function(g){this.strm.msg&&(g=this.strm.msg),this.onerror(g,this.err),this.write_in_progress=!1,this.pending_close&&this.close()},B.prototype.init=function(e,t,C,Q,F){I(4===arguments.length||5===arguments.length,"init(windowBits, level, memLevel, strategy, [dictionary])"),I(e>=8&&e<=15,"invalid windowBits"),I(t>=-1&&t<=9,"invalid compression level"),I(C>=1&&C<=9,"invalid memlevel"),I(Q===g.Z_FILTERED||Q===g.Z_HUFFMAN_ONLY||Q===g.Z_RLE||Q===g.Z_FIXED||Q===g.Z_DEFAULT_STRATEGY,"invalid strategy"),this._init(t,e,C,Q,F),this._setDictionary()},B.prototype.params=function(){throw new Error("deflateParams Not supported")},B.prototype.reset=function(){this._reset(),this._setDictionary()},B.prototype._init=function(I,Q,F,B,n){switch(this.level=I,this.windowBits=Q,this.memLevel=F,this.strategy=B,this.flush=g.Z_NO_FLUSH,this.err=g.Z_OK,this.mode!==g.GZIP&&this.mode!==g.GUNZIP||(this.windowBits+=16),this.mode===g.UNZIP&&(this.windowBits+=32),this.mode!==g.DEFLATERAW&&this.mode!==g.INFLATERAW||(this.windowBits=-1*this.windowBits),this.strm=new e,this.mode){case g.DEFLATE:case g.GZIP:case g.DEFLATERAW:this.err=t.deflateInit2(this.strm,this.level,g.Z_DEFLATED,this.windowBits,this.memLevel,this.strategy);break;case g.INFLATE:case g.GUNZIP:case g.INFLATERAW:case g.UNZIP:this.err=C.inflateInit2(this.strm,this.windowBits);break;default:throw new Error("Unknown mode "+this.mode)}this.err!==g.Z_OK&&this._error("Init error"),this.dictionary=n,this.write_in_progress=!1,this.init_done=!0},B.prototype._setDictionary=function(){if(null!=this.dictionary){switch(this.err=g.Z_OK,this.mode){case g.DEFLATE:case g.DEFLATERAW:this.err=t.deflateSetDictionary(this.strm,this.dictionary)}this.err!==g.Z_OK&&this._error("Failed to set dictionary")}},B.prototype._reset=function(){switch(this.err=g.Z_OK,this.mode){case g.DEFLATE:case g.DEFLATERAW:case g.GZIP:this.err=t.deflateReset(this.strm);break;case g.INFLATE:case g.INFLATERAW:case g.GUNZIP:this.err=C.inflateReset(this.strm)}this.err!==g.Z_OK&&this._error("Failed to reset stream")},g.Zlib=B}(_t),function(g){var I=Gg.Buffer,e=Pt.Transform,t=_t,C=II,Q=qt.exports.ok,F=Gg.kMaxLength,B="Cannot create final Buffer. It would be larger than 0x"+F.toString(16)+" bytes";t.Z_MIN_WINDOWBITS=8,t.Z_MAX_WINDOWBITS=15,t.Z_DEFAULT_WINDOWBITS=15,t.Z_MIN_CHUNK=64,t.Z_MAX_CHUNK=1/0,t.Z_DEFAULT_CHUNK=16384,t.Z_MIN_MEMLEVEL=1,t.Z_MAX_MEMLEVEL=9,t.Z_DEFAULT_MEMLEVEL=8,t.Z_MIN_LEVEL=-1,t.Z_MAX_LEVEL=9,t.Z_DEFAULT_LEVEL=t.Z_DEFAULT_COMPRESSION;for(var n=Object.keys(t),U=0;U<n.length;U++){var s=n[U];s.match(/^Z/)&&Object.defineProperty(g,s,{enumerable:!0,value:t[s],writable:!1})}for(var i={Z_OK:t.Z_OK,Z_STREAM_END:t.Z_STREAM_END,Z_NEED_DICT:t.Z_NEED_DICT,Z_ERRNO:t.Z_ERRNO,Z_STREAM_ERROR:t.Z_STREAM_ERROR,Z_DATA_ERROR:t.Z_DATA_ERROR,Z_MEM_ERROR:t.Z_MEM_ERROR,Z_BUF_ERROR:t.Z_BUF_ERROR,Z_VERSION_ERROR:t.Z_VERSION_ERROR},c=Object.keys(i),A=0;A<c.length;A++){var l=c[A];i[i[l]]=l}function a(g,e,t){var C=[],Q=0;function n(){for(var I;null!==(I=g.read());)C.push(I),Q+=I.length;g.once("readable",n)}function U(){var e,n=null;Q>=F?n=new RangeError(B):e=I.concat(C,Q),C=[],g.close(),t(n,e)}g.on("error",(function(I){g.removeListener("end",U),g.removeListener("readable",n),t(I)})),g.on("end",U),g.end(e),n()}function r(g,e){if("string"===typeof e&&(e=I.from(e)),!I.isBuffer(e))throw new TypeError("Not a string or buffer");var t=g._finishFlushFlag;return g._processChunk(e,t)}function o(g){if(!(this instanceof o))return new o(g);R.call(this,g,t.DEFLATE)}function d(g){if(!(this instanceof d))return new d(g);R.call(this,g,t.INFLATE)}function u(g){if(!(this instanceof u))return new u(g);R.call(this,g,t.GZIP)}function y(g){if(!(this instanceof y))return new y(g);R.call(this,g,t.GUNZIP)}function b(g){if(!(this instanceof b))return new b(g);R.call(this,g,t.DEFLATERAW)}function Z(g){if(!(this instanceof Z))return new Z(g);R.call(this,g,t.INFLATERAW)}function m(g){if(!(this instanceof m))return new m(g);R.call(this,g,t.UNZIP)}function x(g){return g===t.Z_NO_FLUSH||g===t.Z_PARTIAL_FLUSH||g===t.Z_SYNC_FLUSH||g===t.Z_FULL_FLUSH||g===t.Z_FINISH||g===t.Z_BLOCK}function R(C,Q){var F=this;if(this._opts=C=C||{},this._chunkSize=C.chunkSize||g.Z_DEFAULT_CHUNK,e.call(this,C),C.flush&&!x(C.flush))throw new Error("Invalid flush flag: "+C.flush);if(C.finishFlush&&!x(C.finishFlush))throw new Error("Invalid flush flag: "+C.finishFlush);if(this._flushFlag=C.flush||t.Z_NO_FLUSH,this._finishFlushFlag="undefined"!==typeof C.finishFlush?C.finishFlush:t.Z_FINISH,C.chunkSize&&(C.chunkSize<g.Z_MIN_CHUNK||C.chunkSize>g.Z_MAX_CHUNK))throw new Error("Invalid chunk size: "+C.chunkSize);if(C.windowBits&&(C.windowBits<g.Z_MIN_WINDOWBITS||C.windowBits>g.Z_MAX_WINDOWBITS))throw new Error("Invalid windowBits: "+C.windowBits);if(C.level&&(C.level<g.Z_MIN_LEVEL||C.level>g.Z_MAX_LEVEL))throw new Error("Invalid compression level: "+C.level);if(C.memLevel&&(C.memLevel<g.Z_MIN_MEMLEVEL||C.memLevel>g.Z_MAX_MEMLEVEL))throw new Error("Invalid memLevel: "+C.memLevel);if(C.strategy&&C.strategy!=g.Z_FILTERED&&C.strategy!=g.Z_HUFFMAN_ONLY&&C.strategy!=g.Z_RLE&&C.strategy!=g.Z_FIXED&&C.strategy!=g.Z_DEFAULT_STRATEGY)throw new Error("Invalid strategy: "+C.strategy);if(C.dictionary&&!I.isBuffer(C.dictionary))throw new Error("Invalid dictionary: it should be a Buffer instance");this._handle=new t.Zlib(Q);var B=this;this._hadError=!1,this._handle.onerror=function(I,e){S(B),B._hadError=!0;var t=new Error(I);t.errno=e,t.code=g.codes[e],B.emit("error",t)};var n=g.Z_DEFAULT_COMPRESSION;"number"===typeof C.level&&(n=C.level);var U=g.Z_DEFAULT_STRATEGY;"number"===typeof C.strategy&&(U=C.strategy),this._handle.init(C.windowBits||g.Z_DEFAULT_WINDOWBITS,n,C.memLevel||g.Z_DEFAULT_MEMLEVEL,U,C.dictionary),this._buffer=I.allocUnsafe(this._chunkSize),this._offset=0,this._level=n,this._strategy=U,this.once("end",this.close),Object.defineProperty(this,"_closed",{get:function(){return!F._handle},configurable:!0,enumerable:!0})}function S(g,I){I&&mg.nextTick(I),g._handle&&(g._handle.close(),g._handle=null)}function G(g){g.emit("close")}Object.defineProperty(g,"codes",{enumerable:!0,value:Object.freeze(i),writable:!1}),g.Deflate=o,g.Inflate=d,g.Gzip=u,g.Gunzip=y,g.DeflateRaw=b,g.InflateRaw=Z,g.Unzip=m,g.createDeflate=function(g){return new o(g)},g.createInflate=function(g){return new d(g)},g.createDeflateRaw=function(g){return new b(g)},g.createInflateRaw=function(g){return new Z(g)},g.createGzip=function(g){return new u(g)},g.createGunzip=function(g){return new y(g)},g.createUnzip=function(g){return new m(g)},g.deflate=function(g,I,e){return"function"===typeof I&&(e=I,I={}),a(new o(I),g,e)},g.deflateSync=function(g,I){return r(new o(I),g)},g.gzip=function(g,I,e){return"function"===typeof I&&(e=I,I={}),a(new u(I),g,e)},g.gzipSync=function(g,I){return r(new u(I),g)},g.deflateRaw=function(g,I,e){return"function"===typeof I&&(e=I,I={}),a(new b(I),g,e)},g.deflateRawSync=function(g,I){return r(new b(I),g)},g.unzip=function(g,I,e){return"function"===typeof I&&(e=I,I={}),a(new m(I),g,e)},g.unzipSync=function(g,I){return r(new m(I),g)},g.inflate=function(g,I,e){return"function"===typeof I&&(e=I,I={}),a(new d(I),g,e)},g.inflateSync=function(g,I){return r(new d(I),g)},g.gunzip=function(g,I,e){return"function"===typeof I&&(e=I,I={}),a(new y(I),g,e)},g.gunzipSync=function(g,I){return r(new y(I),g)},g.inflateRaw=function(g,I,e){return"function"===typeof I&&(e=I,I={}),a(new Z(I),g,e)},g.inflateRawSync=function(g,I){return r(new Z(I),g)},C.inherits(R,e),R.prototype.params=function(I,e,C){if(I<g.Z_MIN_LEVEL||I>g.Z_MAX_LEVEL)throw new RangeError("Invalid compression level: "+I);if(e!=g.Z_FILTERED&&e!=g.Z_HUFFMAN_ONLY&&e!=g.Z_RLE&&e!=g.Z_FIXED&&e!=g.Z_DEFAULT_STRATEGY)throw new TypeError("Invalid strategy: "+e);if(this._level!==I||this._strategy!==e){var F=this;this.flush(t.Z_SYNC_FLUSH,(function(){Q(F._handle,"zlib binding closed"),F._handle.params(I,e),F._hadError||(F._level=I,F._strategy=e,C&&C())}))}else mg.nextTick(C)},R.prototype.reset=function(){return Q(this._handle,"zlib binding closed"),this._handle.reset()},R.prototype._flush=function(g){this._transform(I.alloc(0),"",g)},R.prototype.flush=function(g,e){var C=this,Q=this._writableState;("function"===typeof g||void 0===g&&!e)&&(e=g,g=t.Z_FULL_FLUSH),Q.ended?e&&mg.nextTick(e):Q.ending?e&&this.once("end",e):Q.needDrain?e&&this.once("drain",(function(){return C.flush(g,e)})):(this._flushFlag=g,this.write(I.alloc(0),"",e))},R.prototype.close=function(g){S(this,g),mg.nextTick(G,this)},R.prototype._transform=function(g,e,C){var Q,F=this._writableState,B=(F.ending||F.ended)&&(!g||F.length===g.length);return null===g||I.isBuffer(g)?this._handle?(B?Q=this._finishFlushFlag:(Q=this._flushFlag,g.length>=F.length&&(this._flushFlag=this._opts.flush||t.Z_NO_FLUSH)),void this._processChunk(g,Q,C)):C(new Error("zlib binding closed")):C(new Error("invalid input"))},R.prototype._processChunk=function(g,e,t){var C=g&&g.length,n=this._chunkSize-this._offset,U=0,s=this,i="function"===typeof t;if(!i){var c,A=[],l=0;this.on("error",(function(g){c=g})),Q(this._handle,"zlib binding closed");do{var a=this._handle.writeSync(e,g,U,C,this._buffer,this._offset,n)}while(!this._hadError&&d(a[0],a[1]));if(this._hadError)throw c;if(l>=F)throw S(this),new RangeError(B);var r=I.concat(A,l);return S(this),r}Q(this._handle,"zlib binding closed");var o=this._handle.write(e,g,U,C,this._buffer,this._offset,n);function d(F,B){if(this&&(this.buffer=null,this.callback=null),!s._hadError){var c=n-B;if(Q(c>=0,"have should not go down"),c>0){var a=s._buffer.slice(s._offset,s._offset+c);s._offset+=c,i?s.push(a):(A.push(a),l+=a.length)}if((0===B||s._offset>=s._chunkSize)&&(n=s._chunkSize,s._offset=0,s._buffer=I.allocUnsafe(s._chunkSize)),0===B){if(U+=C-F,C=F,!i)return!0;var r=s._handle.write(e,g,U,C,s._buffer,s._offset,s._chunkSize);return r.callback=d,void(r.buffer=g)}if(!i)return!1;t()}}o.buffer=g,o.callback=d},C.inherits(o,R),C.inherits(d,R),C.inherits(u,R),C.inherits(y,R),C.inherits(b,R),C.inherits(Z,R),C.inherits(m,R)}(Sg);var xn=function(){function g(g){var I;for(this.data=g,this.pos=8,this.palette=[],this.imgData=[],this.transparency={},this.text={};;){var e=this.readUInt32(),t="";for(I=0;I<4;I++)t+=String.fromCharCode(this.data[this.pos++]);switch(t){case"IHDR":this.width=this.readUInt32(),this.height=this.readUInt32(),this.bits=this.data[this.pos++],this.colorType=this.data[this.pos++],this.compressionMethod=this.data[this.pos++],this.filterMethod=this.data[this.pos++],this.interlaceMethod=this.data[this.pos++];break;case"PLTE":this.palette=this.read(e);break;case"IDAT":for(I=0;I<e;I++)this.imgData.push(this.data[this.pos++]);break;case"tRNS":switch(this.transparency={},this.colorType){case 3:this.transparency.indexed=this.read(e);var C=255-this.transparency.indexed.length;if(C>0)for(I=0;I<C;I++)this.transparency.indexed.push(255);break;case 0:this.transparency.grayscale=this.read(e)[0];break;case 2:this.transparency.rgb=this.read(e)}break;case"tEXt":var Q=this.read(e),F=Q.indexOf(0),B=String.fromCharCode.apply(String,Q.slice(0,F));this.text[B]=String.fromCharCode.apply(String,Q.slice(F+1));break;case"IEND":switch(this.colorType){case 0:case 3:case 4:this.colors=1;break;case 2:case 6:this.colors=3}this.hasAlphaChannel=[4,6].includes(this.colorType);var n=this.colors+(this.hasAlphaChannel?1:0);switch(this.pixelBitlength=this.bits*n,this.colors){case 1:this.colorSpace="DeviceGray";break;case 3:this.colorSpace="DeviceRGB"}return void(this.imgData=o.from(this.imgData));default:this.pos+=e}if(this.pos+=4,this.pos>this.data.length)throw new Error("Incomplete or corrupt PNG file")}}g.decode=function(g,I){throw new Error("PNG.decode not available in browser build")},g.load=function(g){throw new Error("PNG.load not available in browser build")};var I=g.prototype;return I.read=function(g){for(var I=new Array(g),e=0;e<g;e++)I[e]=this.data[this.pos++];return I},I.readUInt32=function(){return this.data[this.pos++]<<24|this.data[this.pos++]<<16|this.data[this.pos++]<<8|this.data[this.pos++]},I.readUInt16=function(){return this.data[this.pos++]<<8|this.data[this.pos++]},I.decodePixels=function(g){var I=this;return Sg.inflate(this.imgData,(function(e,t){if(e)throw e;var C=0,Q=I.width,F=I.height,B=I.pixelBitlength/8,n=o.alloc(Q*F*B);function U(g,I,e,U,s){void 0===s&&(s=!1);for(var i=Math.ceil((Q-g)/e),c=Math.ceil((F-I)/U),A=B*i,l=s?n:o.alloc(A*c),a=0,r=0;a<c&&C<t.length;){var d,u,y,b,Z;switch(t[C++]){case 0:for(y=0;y<A;y++)l[r++]=t[C++];break;case 1:for(y=0;y<A;y++)d=t[C++],b=y<B?0:l[r-B],l[r++]=(d+b)%256;break;case 2:for(y=0;y<A;y++)d=t[C++],u=(y-y%B)/B,Z=a&&l[(a-1)*A+u*B+y%B],l[r++]=(Z+d)%256;break;case 3:for(y=0;y<A;y++)d=t[C++],u=(y-y%B)/B,b=y<B?0:l[r-B],Z=a&&l[(a-1)*A+u*B+y%B],l[r++]=(d+Math.floor((b+Z)/2))%256;break;case 4:for(y=0;y<A;y++){var m,x;d=t[C++],u=(y-y%B)/B,b=y<B?0:l[r-B],0===a?Z=x=0:(Z=l[(a-1)*A+u*B+y%B],x=u&&l[(a-1)*A+(u-1)*B+y%B]);var R=b+Z-x,S=Math.abs(R-b),G=Math.abs(R-Z),L=Math.abs(R-x);m=S<=G&&S<=L?b:G<=L?Z:x,l[r++]=(d+m)%256}break;default:throw new Error("Invalid filter algorithm: "+t[C-1])}if(!s){var V=((I+a*U)*Q+g)*B,h=a*A;for(y=0;y<i;y++){for(var D=0;D<B;D++)n[V++]=l[h++];V+=(e-1)*B}}a++}}return 1===I.interlaceMethod?(U(0,0,8,8),U(4,0,8,8),U(0,4,4,8),U(2,0,4,4),U(0,2,2,4),U(1,0,2,2),U(0,1,1,2)):U(0,0,1,1,!0),g(n)}))},I.decodePalette=function(){for(var g=this.palette,I=g.length,e=this.transparency.indexed||[],t=o.alloc(e.length+I),C=0,Q=0,F=0;F<I;F+=3){var B;t[C++]=g[F],t[C++]=g[F+1],t[C++]=g[F+2],t[C++]=null!=(B=e[Q++])?B:255}return t},I.copyToImageData=function(g,I){var e,t,C=this.colors,Q=null,F=this.hasAlphaChannel;this.palette.length&&(Q=this._decodedPalette||(this._decodedPalette=this.decodePalette()),C=4,F=!0);var B=g.data||g,n=B.length,U=Q||I,s=e=0;if(1===C)for(;s<n;){t=Q?4*I[s/4]:e;var i=U[t++];B[s++]=i,B[s++]=i,B[s++]=i,B[s++]=F?U[t++]:255,e=t}else for(;s<n;)t=Q?4*I[s/4]:e,B[s++]=U[t++],B[s++]=U[t++],B[s++]=U[t++],B[s++]=F?U[t++]:255,e=t},I.decode=function(g){var I=this,e=o.alloc(this.width*this.height*4);return this.decodePixels((function(t){return I.copyToImageData(e,t),g(e)}))},g}()}).call(this,e(67))},function(g,I,e){var t=e(1489);g.exports=function(g,I){g.prototype=Object.create(I.prototype),g.prototype.constructor=g,t(g,I)},g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I,e){var t=e(1499);g.exports=function(g,I){var e="undefined"!==typeof Symbol&&g[Symbol.iterator]||g["@@iterator"];if(e)return(e=e.call(g)).next.bind(e);if(Array.isArray(g)||(e=t(g))||I&&g&&"number"===typeof g.length){e&&(g=e);var C=0;return function(){return C>=g.length?{done:!0}:{done:!1,value:g[C++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=e.n(Q),B=(e(4),e(42)),n=e(14),U=e(49),s=e(59),i=e(21),c=e(434),A=e(168),l=e(435);function a(){return(a=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}var r=e(436),o=e(316);function d(g,I){var e=Object.create(null);return g&&Q.Children.map(g,(function(g){return g})).forEach((function(g){e[g.key]=function(g){return I&&Object(Q.isValidElement)(g)?I(g):g}(g)})),e}function u(g,I,e){return null!=e[I]?e[I]:g.props[I]}function y(g,I,e){var t=d(g.children),C=function(g,I){function e(e){return e in I?I[e]:g[e]}g=g||{},I=I||{};var t,C=Object.create(null),Q=[];for(var F in g)F in I?Q.length&&(C[F]=Q,Q=[]):Q.push(F);var B={};for(var n in I){if(C[n])for(t=0;t<C[n].length;t++){var U=C[n][t];B[C[n][t]]=e(U)}B[n]=e(n)}for(t=0;t<Q.length;t++)B[Q[t]]=e(Q[t]);return B}(I,t);return Object.keys(C).forEach((function(F){var B=C[F];if(Object(Q.isValidElement)(B)){var n=F in I,U=F in t,s=I[F],i=Object(Q.isValidElement)(s)&&!s.props.in;!U||n&&!i?U||!n||i?U&&n&&Object(Q.isValidElement)(s)&&(C[F]=Object(Q.cloneElement)(B,{onExited:e.bind(null,B),in:s.props.in,exit:u(B,"exit",g),enter:u(B,"enter",g)})):C[F]=Object(Q.cloneElement)(B,{in:!1}):C[F]=Object(Q.cloneElement)(B,{onExited:e.bind(null,B),in:!0,exit:u(B,"exit",g),enter:u(B,"enter",g)})}})),C}var b=Object.values||function(g){return Object.keys(g).map((function(I){return g[I]}))},Z=function(g){function I(I,e){var t,C=(t=g.call(this,I,e)||this).handleExited.bind(function(g){if(void 0===g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return g}(t));return t.state={contextValue:{isMounting:!0},handleExited:C,firstRender:!0},t}Object(r.a)(I,g);var e=I.prototype;return e.componentDidMount=function(){this.mounted=!0,this.setState({contextValue:{isMounting:!1}})},e.componentWillUnmount=function(){this.mounted=!1},I.getDerivedStateFromProps=function(g,I){var e,t,C=I.children,F=I.handleExited;return{children:I.firstRender?(e=g,t=F,d(e.children,(function(g){return Object(Q.cloneElement)(g,{onExited:t.bind(null,g),in:!0,appear:u(g,"appear",e),enter:u(g,"enter",e),exit:u(g,"exit",e)})}))):y(g,C,F),firstRender:!1}},e.handleExited=function(g,I){var e=d(this.props.children);g.key in e||(g.props.onExited&&g.props.onExited(I),this.mounted&&this.setState((function(I){var e=a({},I.children);return delete e[g.key],{children:e}})))},e.render=function(){var g=this.props,I=g.component,e=g.childFactory,t=Object(l.a)(g,["component","childFactory"]),C=this.state.contextValue,Q=b(this.state.children).map(e);return delete t.appear,delete t.enter,delete t.exit,null===I?F.a.createElement(o.a.Provider,{value:C},Q):F.a.createElement(o.a.Provider,{value:C},F.a.createElement(I,t,Q))},I}(F.a.Component);Z.propTypes={},Z.defaultProps={component:"div",childFactory:function(g){return g}};var m=Z,x="undefined"===typeof window?Q.useEffect:Q.useLayoutEffect;var R=function(g){var I=g.classes,e=g.pulsate,t=void 0!==e&&e,C=g.rippleX,F=g.rippleY,B=g.rippleSize,U=g.in,i=g.onExited,c=void 0===i?function(){}:i,A=g.timeout,l=Q.useState(!1),a=l[0],r=l[1],o=Object(n.default)(I.ripple,I.rippleVisible,t&&I.ripplePulsate),d={width:B,height:B,top:-B/2+F,left:-B/2+C},u=Object(n.default)(I.child,a&&I.childLeaving,t&&I.childPulsate),y=Object(s.a)(c);return x((function(){if(!U){r(!0);var g=setTimeout(y,A);return function(){clearTimeout(g)}}}),[y,U,A]),Q.createElement("span",{className:o,style:d},Q.createElement("span",{className:u}))},S=Q.forwardRef((function(g,I){var e=g.center,F=void 0!==e&&e,B=g.classes,U=g.className,s=Object(C.a)(g,["center","classes","className"]),i=Q.useState([]),c=i[0],l=i[1],a=Q.useRef(0),r=Q.useRef(null);Q.useEffect((function(){r.current&&(r.current(),r.current=null)}),[c]);var o=Q.useRef(!1),d=Q.useRef(null),u=Q.useRef(null),y=Q.useRef(null);Q.useEffect((function(){return function(){clearTimeout(d.current)}}),[]);var b=Q.useCallback((function(g){var I=g.pulsate,e=g.rippleX,t=g.rippleY,C=g.rippleSize,F=g.cb;l((function(g){return[].concat(Object(A.a)(g),[Q.createElement(R,{key:a.current,classes:B,timeout:550,pulsate:I,rippleX:e,rippleY:t,rippleSize:C})])})),a.current+=1,r.current=F}),[B]),Z=Q.useCallback((function(){var g=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},e=arguments.length>2?arguments[2]:void 0,t=I.pulsate,C=void 0!==t&&t,Q=I.center,B=void 0===Q?F||I.pulsate:Q,n=I.fakeElement,U=void 0!==n&&n;if("mousedown"===g.type&&o.current)o.current=!1;else{"touchstart"===g.type&&(o.current=!0);var s,i,c,A=U?null:y.current,l=A?A.getBoundingClientRect():{width:0,height:0,left:0,top:0};if(B||0===g.clientX&&0===g.clientY||!g.clientX&&!g.touches)s=Math.round(l.width/2),i=Math.round(l.height/2);else{var a=g.touches?g.touches[0]:g,r=a.clientX,Z=a.clientY;s=Math.round(r-l.left),i=Math.round(Z-l.top)}if(B)(c=Math.sqrt((2*Math.pow(l.width,2)+Math.pow(l.height,2))/3))%2===0&&(c+=1);else{var m=2*Math.max(Math.abs((A?A.clientWidth:0)-s),s)+2,x=2*Math.max(Math.abs((A?A.clientHeight:0)-i),i)+2;c=Math.sqrt(Math.pow(m,2)+Math.pow(x,2))}g.touches?null===u.current&&(u.current=function(){b({pulsate:C,rippleX:s,rippleY:i,rippleSize:c,cb:e})},d.current=setTimeout((function(){u.current&&(u.current(),u.current=null)}),80)):b({pulsate:C,rippleX:s,rippleY:i,rippleSize:c,cb:e})}}),[F,b]),x=Q.useCallback((function(){Z({},{pulsate:!0})}),[Z]),S=Q.useCallback((function(g,I){if(clearTimeout(d.current),"touchend"===g.type&&u.current)return g.persist(),u.current(),u.current=null,void(d.current=setTimeout((function(){S(g,I)})));u.current=null,l((function(g){return g.length>0?g.slice(1):g})),r.current=I}),[]);return Q.useImperativeHandle(I,(function(){return{pulsate:x,start:Z,stop:S}}),[x,Z,S]),Q.createElement("span",Object(t.a)({className:Object(n.default)(B.root,U),ref:y},s),Q.createElement(m,{component:null,exit:!0},c))})),G=Object(i.a)((function(g){return{root:{overflow:"hidden",pointerEvents:"none",position:"absolute",zIndex:0,top:0,right:0,bottom:0,left:0,borderRadius:"inherit"},ripple:{opacity:0,position:"absolute"},rippleVisible:{opacity:.3,transform:"scale(1)",animation:"$enter ".concat(550,"ms ").concat(g.transitions.easing.easeInOut)},ripplePulsate:{animationDuration:"".concat(g.transitions.duration.shorter,"ms")},child:{opacity:1,display:"block",width:"100%",height:"100%",borderRadius:"50%",backgroundColor:"currentColor"},childLeaving:{opacity:0,animation:"$exit ".concat(550,"ms ").concat(g.transitions.easing.easeInOut)},childPulsate:{position:"absolute",left:0,top:0,animation:"$pulsate 2500ms ".concat(g.transitions.easing.easeInOut," 200ms infinite")},"@keyframes enter":{"0%":{transform:"scale(0)",opacity:.1},"100%":{transform:"scale(1)",opacity:.3}},"@keyframes exit":{"0%":{opacity:1},"100%":{opacity:0}},"@keyframes pulsate":{"0%":{transform:"scale(1)"},"50%":{transform:"scale(0.92)"},"100%":{transform:"scale(1)"}}}}),{flip:!1,name:"MuiTouchRipple"})(Q.memo(S)),L=Q.forwardRef((function(g,I){var e=g.action,F=g.buttonRef,i=g.centerRipple,A=void 0!==i&&i,l=g.children,a=g.classes,r=g.className,o=g.component,d=void 0===o?"button":o,u=g.disabled,y=void 0!==u&&u,b=g.disableRipple,Z=void 0!==b&&b,m=g.disableTouchRipple,x=void 0!==m&&m,R=g.focusRipple,S=void 0!==R&&R,L=g.focusVisibleClassName,V=g.onBlur,h=g.onClick,D=g.onFocus,p=g.onFocusVisible,E=g.onKeyDown,N=g.onKeyUp,W=g.onMouseDown,f=g.onMouseLeave,X=g.onMouseUp,J=g.onTouchEnd,v=g.onTouchMove,k=g.onTouchStart,H=g.onDragLeave,M=g.tabIndex,Y=void 0===M?0:M,w=g.TouchRippleProps,T=g.type,z=void 0===T?"button":T,O=Object(C.a)(g,["action","buttonRef","centerRipple","children","classes","className","component","disabled","disableRipple","disableTouchRipple","focusRipple","focusVisibleClassName","onBlur","onClick","onFocus","onFocusVisible","onKeyDown","onKeyUp","onMouseDown","onMouseLeave","onMouseUp","onTouchEnd","onTouchMove","onTouchStart","onDragLeave","tabIndex","TouchRippleProps","type"]),K=Q.useRef(null);var j=Q.useRef(null),P=Q.useState(!1),_=P[0],q=P[1];y&&_&&q(!1);var $=Object(c.a)(),gg=$.isFocusVisible,Ig=$.onBlurVisible,eg=$.ref;function tg(g,I){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:x;return Object(s.a)((function(t){return I&&I(t),!e&&j.current&&j.current[g](t),!0}))}Q.useImperativeHandle(e,(function(){return{focusVisible:function(){q(!0),K.current.focus()}}}),[]),Q.useEffect((function(){_&&S&&!Z&&j.current.pulsate()}),[Z,S,_]);var Cg=tg("start",W),Qg=tg("stop",H),Fg=tg("stop",X),Bg=tg("stop",(function(g){_&&g.preventDefault(),f&&f(g)})),ng=tg("start",k),Ug=tg("stop",J),sg=tg("stop",v),ig=tg("stop",(function(g){_&&(Ig(g),q(!1)),V&&V(g)}),!1),cg=Object(s.a)((function(g){K.current||(K.current=g.currentTarget),gg(g)&&(q(!0),p&&p(g)),D&&D(g)})),Ag=function(){var g=B.findDOMNode(K.current);return d&&"button"!==d&&!("A"===g.tagName&&g.href)},lg=Q.useRef(!1),ag=Object(s.a)((function(g){S&&!lg.current&&_&&j.current&&" "===g.key&&(lg.current=!0,g.persist(),j.current.stop(g,(function(){j.current.start(g)}))),g.target===g.currentTarget&&Ag()&&" "===g.key&&g.preventDefault(),E&&E(g),g.target===g.currentTarget&&Ag()&&"Enter"===g.key&&!y&&(g.preventDefault(),h&&h(g))})),rg=Object(s.a)((function(g){S&&" "===g.key&&j.current&&_&&!g.defaultPrevented&&(lg.current=!1,g.persist(),j.current.stop(g,(function(){j.current.pulsate(g)}))),N&&N(g),h&&g.target===g.currentTarget&&Ag()&&" "===g.key&&!g.defaultPrevented&&h(g)})),og=d;"button"===og&&O.href&&(og="a");var dg={};"button"===og?(dg.type=z,dg.disabled=y):("a"===og&&O.href||(dg.role="button"),dg["aria-disabled"]=y);var ug=Object(U.a)(F,I),yg=Object(U.a)(eg,K),bg=Object(U.a)(ug,yg),Zg=Q.useState(!1),mg=Zg[0],xg=Zg[1];Q.useEffect((function(){xg(!0)}),[]);var Rg=mg&&!Z&&!y;return Q.createElement(og,Object(t.a)({className:Object(n.default)(a.root,r,_&&[a.focusVisible,L],y&&a.disabled),onBlur:ig,onClick:h,onFocus:cg,onKeyDown:ag,onKeyUp:rg,onMouseDown:Cg,onMouseLeave:Bg,onMouseUp:Fg,onDragLeave:Qg,onTouchEnd:Ug,onTouchMove:sg,onTouchStart:ng,ref:bg,tabIndex:y?-1:Y},dg,O),l,Rg?Q.createElement(G,Object(t.a)({ref:j,center:A},w)):null)}));I.a=Object(i.a)({root:{display:"inline-flex",alignItems:"center",justifyContent:"center",position:"relative",WebkitTapHighlightColor:"transparent",backgroundColor:"transparent",outline:0,border:0,margin:0,borderRadius:0,padding:0,cursor:"pointer",userSelect:"none",verticalAlign:"middle","-moz-appearance":"none","-webkit-appearance":"none",textDecoration:"none",color:"inherit","&::-moz-focus-inner":{borderStyle:"none"},"&$disabled":{pointerEvents:"none",cursor:"default"},"@media print":{colorAdjust:"exact"}},disabled:{},focusVisible:{}},{name:"MuiButtonBase"})(L)},function(g,I,e){"use strict";e.d(I,"a",(function(){return c})),e.d(I,"c",(function(){return A})),e.d(I,"b",(function(){return a}));var t=e(11),C=e(1749),Q=e(108),F=e(322),B=e(66),n=e(185),U=e(466),s=e(143),i=function(){function g(g){this.errors=0,this.sid=Object(Q.i)(),this.duration=0,this.status=C.a.Ok,this.init=!0,this.ignoreDuration=!1;var I=Object(F.c)();this.timestamp=I,this.started=I,g&&this.update(g)}return g.prototype.update=function(g){if(void 0===g&&(g={}),g.user&&(!this.ipAddress&&g.user.ip_address&&(this.ipAddress=g.user.ip_address),this.did||g.did||(this.did=g.user.id||g.user.email||g.user.username)),this.timestamp=g.timestamp||Object(F.c)(),g.ignoreDuration&&(this.ignoreDuration=g.ignoreDuration),g.sid&&(this.sid=32===g.sid.length?g.sid:Object(Q.i)()),void 0!==g.init&&(this.init=g.init),!this.did&&g.did&&(this.did=""+g.did),"number"===typeof g.started&&(this.started=g.started),this.ignoreDuration)this.duration=void 0;else if("number"===typeof g.duration)this.duration=g.duration;else{var I=this.timestamp-this.started;this.duration=I>=0?I:0}g.release&&(this.release=g.release),g.environment&&(this.environment=g.environment),!this.ipAddress&&g.ipAddress&&(this.ipAddress=g.ipAddress),!this.userAgent&&g.userAgent&&(this.userAgent=g.userAgent),"number"===typeof g.errors&&(this.errors=g.errors),g.status&&(this.status=g.status)},g.prototype.close=function(g){g?this.update({status:g}):this.status===C.a.Ok?this.update({status:C.a.Exited}):this.update()},g.prototype.toJSON=function(){return Object(s.a)({sid:""+this.sid,init:this.init,started:new Date(1e3*this.started).toISOString(),timestamp:new Date(1e3*this.timestamp).toISOString(),status:this.status,errors:this.errors,did:"number"===typeof this.did||"string"===typeof this.did?""+this.did:void 0,duration:this.duration,attrs:Object(s.a)({release:this.release,environment:this.environment,ip_address:this.ipAddress,user_agent:this.userAgent})})},g}(),c=function(){function g(g,I,e){void 0===I&&(I=new U.a),void 0===e&&(e=4),this._version=e,this._stack=[{}],this.getStackTop().scope=I,this.bindClient(g)}return g.prototype.isOlderThan=function(g){return this._version<g},g.prototype.bindClient=function(g){this.getStackTop().client=g,g&&g.setupIntegrations&&g.setupIntegrations()},g.prototype.pushScope=function(){var g=U.a.clone(this.getScope());return this.getStack().push({client:this.getClient(),scope:g}),g},g.prototype.popScope=function(){return!(this.getStack().length<=1)&&!!this.getStack().pop()},g.prototype.withScope=function(g){var I=this.pushScope();try{g(I)}finally{this.popScope()}},g.prototype.getClient=function(){return this.getStackTop().client},g.prototype.getScope=function(){return this.getStackTop().scope},g.prototype.getStack=function(){return this._stack},g.prototype.getStackTop=function(){return this._stack[this._stack.length-1]},g.prototype.captureException=function(g,I){var e=this._lastEventId=Object(Q.i)(),C=I;if(!I){var F=void 0;try{throw new Error("Sentry syntheticException")}catch(g){F=g}C={originalException:g,syntheticException:F}}return this._invokeClient("captureException",g,Object(t.a)(Object(t.a)({},C),{event_id:e})),e},g.prototype.captureMessage=function(g,I,e){var C=this._lastEventId=Object(Q.i)(),F=e;if(!e){var B=void 0;try{throw new Error(g)}catch(n){B=n}F={originalException:g,syntheticException:B}}return this._invokeClient("captureMessage",g,I,Object(t.a)(Object(t.a)({},F),{event_id:C})),C},g.prototype.captureEvent=function(g,I){var e=this._lastEventId=Object(Q.i)();return this._invokeClient("captureEvent",g,Object(t.a)(Object(t.a)({},I),{event_id:e})),e},g.prototype.lastEventId=function(){return this._lastEventId},g.prototype.addBreadcrumb=function(g,I){var e=this.getStackTop(),C=e.scope,B=e.client;if(C&&B){var n=B.getOptions&&B.getOptions()||{},U=n.beforeBreadcrumb,s=void 0===U?null:U,i=n.maxBreadcrumbs,c=void 0===i?100:i;if(!(c<=0)){var A=Object(F.b)(),l=Object(t.a)({timestamp:A},g),a=s?Object(Q.c)((function(){return s(l,I)})):l;null!==a&&C.addBreadcrumb(a,c)}}},g.prototype.setUser=function(g){var I=this.getScope();I&&I.setUser(g)},g.prototype.setTags=function(g){var I=this.getScope();I&&I.setTags(g)},g.prototype.setExtras=function(g){var I=this.getScope();I&&I.setExtras(g)},g.prototype.setTag=function(g,I){var e=this.getScope();e&&e.setTag(g,I)},g.prototype.setExtra=function(g,I){var e=this.getScope();e&&e.setExtra(g,I)},g.prototype.setContext=function(g,I){var e=this.getScope();e&&e.setContext(g,I)},g.prototype.configureScope=function(g){var I=this.getStackTop(),e=I.scope,t=I.client;e&&t&&g(e)},g.prototype.run=function(g){var I=l(this);try{g(this)}finally{l(I)}},g.prototype.getIntegration=function(g){var I=this.getClient();if(!I)return null;try{return I.getIntegration(g)}catch(e){return B.a.warn("Cannot retrieve integration "+g.id+" from the current Hub"),null}},g.prototype.startSpan=function(g){return this._callExtensionMethod("startSpan",g)},g.prototype.startTransaction=function(g,I){return this._callExtensionMethod("startTransaction",g,I)},g.prototype.traceHeaders=function(){return this._callExtensionMethod("traceHeaders")},g.prototype.captureSession=function(g){if(void 0===g&&(g=!1),g)return this.endSession();this._sendSessionUpdate()},g.prototype.endSession=function(){var g,I,e,t,C;null===(e=null===(I=null===(g=this.getStackTop())||void 0===g?void 0:g.scope)||void 0===I?void 0:I.getSession())||void 0===e||e.close(),this._sendSessionUpdate(),null===(C=null===(t=this.getStackTop())||void 0===t?void 0:t.scope)||void 0===C||C.setSession()},g.prototype.startSession=function(g){var I=this.getStackTop(),e=I.scope,F=I.client,B=F&&F.getOptions()||{},n=B.release,U=B.environment,s=(Object(Q.e)().navigator||{}).userAgent,c=new i(Object(t.a)(Object(t.a)(Object(t.a)({release:n,environment:U},e&&{user:e.getUser()}),s&&{userAgent:s}),g));if(e){var A=e.getSession&&e.getSession();A&&A.status===C.a.Ok&&A.update({status:C.a.Exited}),this.endSession(),e.setSession(c)}return c},g.prototype._sendSessionUpdate=function(){var g=this.getStackTop(),I=g.scope,e=g.client;if(I){var t=I.getSession&&I.getSession();t&&e&&e.captureSession&&e.captureSession(t)}},g.prototype._invokeClient=function(g){for(var I,e=[],C=1;C<arguments.length;C++)e[C-1]=arguments[C];var Q=this.getStackTop(),F=Q.scope,B=Q.client;B&&B[g]&&(I=B)[g].apply(I,Object(t.e)(e,[F]))},g.prototype._callExtensionMethod=function(g){for(var I=[],e=1;e<arguments.length;e++)I[e-1]=arguments[e];var t=A(),C=t.__SENTRY__;if(C&&C.extensions&&"function"===typeof C.extensions[g])return C.extensions[g].apply(this,I);B.a.warn("Extension method "+g+" couldn't be found, doing nothing.")},g}();function A(){var g=Object(Q.e)();return g.__SENTRY__=g.__SENTRY__||{extensions:{},hub:void 0},g}function l(g){var I=A(),e=o(I);return d(I,g),e}function a(){var g=A();return r(g)&&!o(g).isOlderThan(4)||d(g,new c),Object(n.b)()?function(g){var I,e,t;try{var C=null===(t=null===(e=null===(I=A().__SENTRY__)||void 0===I?void 0:I.extensions)||void 0===e?void 0:e.domain)||void 0===t?void 0:t.active;if(!C)return o(g);if(!r(C)||o(C).isOlderThan(4)){var Q=o(g).getStackTop();d(C,new c(Q.client,U.a.clone(Q.scope)))}return o(C)}catch(F){return o(g)}}(g):o(g)}function r(g){return!!(g&&g.__SENTRY__&&g.__SENTRY__.hub)}function o(g){return g&&g.__SENTRY__&&g.__SENTRY__.hub||(g.__SENTRY__=g.__SENTRY__||{},g.__SENTRY__.hub=new c),g.__SENTRY__.hub}function d(g,I){return!!g&&(g.__SENTRY__=g.__SENTRY__||{},g.__SENTRY__.hub=I,!0)}},,,,function(g,I,e){var t=e(176);g.exports=Array.isArray||function(g){return"Array"==t(g)}},function(g,I,e){var t=e(60),C=e(632);g.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var g,I=!1,e={};try{(g=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(e,[]),I=e instanceof Array}catch(Q){}return function(e,Q){return t(e),C(Q),I?g.call(e,Q):e.__proto__=Q,e}}():void 0)},function(g,I,e){"use strict";var t=e(177),C=e(76),Q=e(64),F=e(68),B=Q("species");g.exports=function(g){var I=t(g),e=C.f;F&&I&&!I[B]&&e(I,B,{configurable:!0,get:function(){return this}})}},function(g,I,e){var t=e(126);g.exports=function(g,I,e){for(var C in I)t(g,C,I[C],e);return g}},function(g,I,e){var t=e(134),C="["+e(390)+"]",Q=RegExp("^"+C+C+"*"),F=RegExp(C+C+"*$"),B=function(g){return function(I){var e=String(t(I));return 1&g&&(e=e.replace(Q,"")),2&g&&(e=e.replace(F,"")),e}};g.exports={start:B(1),end:B(2),trim:B(3)}},function(g,I){function e(){return g.exports=e=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g},e.apply(this,arguments)}g.exports=e},function(g,I,e){"use strict";var t=e(139),C=e(684),Q=(e(513),e(682),Object.prototype.hasOwnProperty),F=e(685),B={key:!0,ref:!0,__self:!0,__source:!0};function n(g){return void 0!==g.ref}function U(g){return void 0!==g.key}var s=function(g,I,e,t,C,Q,B){return{$$typeof:F,type:g,key:I,ref:e,props:B,_owner:Q}};s.createElement=function(g,I,e){var t,F={},i=null,c=null;if(null!=I)for(t in n(I)&&(c=I.ref),U(I)&&(i=""+I.key),void 0===I.__self?null:I.__self,void 0===I.__source?null:I.__source,I)Q.call(I,t)&&!B.hasOwnProperty(t)&&(F[t]=I[t]);var A=arguments.length-2;if(1===A)F.children=e;else if(A>1){for(var l=Array(A),a=0;a<A;a++)l[a]=arguments[a+2];0,F.children=l}if(g&&g.defaultProps){var r=g.defaultProps;for(t in r)void 0===F[t]&&(F[t]=r[t])}return s(g,i,c,0,0,C.current,F)},s.createFactory=function(g){var I=s.createElement.bind(null,g);return I.type=g,I},s.cloneAndReplaceKey=function(g,I){return s(g.type,I,g.ref,g._self,g._source,g._owner,g.props)},s.cloneElement=function(g,I,e){var F,i,c=t({},g.props),A=g.key,l=g.ref,a=(g._self,g._source,g._owner);if(null!=I)for(F in n(I)&&(l=I.ref,a=C.current),U(I)&&(A=""+I.key),g.type&&g.type.defaultProps&&(i=g.type.defaultProps),I)Q.call(I,F)&&!B.hasOwnProperty(F)&&(void 0===I[F]&&void 0!==i?c[F]=i[F]:c[F]=I[F]);var r=arguments.length-2;if(1===r)c.children=e;else if(r>1){for(var o=Array(r),d=0;d<r;d++)o[d]=arguments[d+2];c.children=o}return s(g.type,A,l,0,0,a,c)},s.isValidElement=function(g){return"object"===typeof g&&null!==g&&g.$$typeof===F},g.exports=s},,,function(g,I,e){var t,C=e(1357),Q=e(722),F=e(1359),B=e(1360),n=e(1361);"undefined"!==typeof ArrayBuffer&&(t=e(1362));var U="undefined"!==typeof navigator&&/Android/i.test(navigator.userAgent),s="undefined"!==typeof navigator&&/PhantomJS/i.test(navigator.userAgent),i=U||s;I.protocol=3;var c=I.packets={open:0,close:1,ping:2,pong:3,message:4,upgrade:5,noop:6},A=C(c),l={type:"error",data:"parser error"},a=e(1363);function r(g,I,e){for(var t=new Array(g.length),C=B(g.length,e),Q=function(g,e,C){I(e,(function(I,e){t[g]=e,C(I,t)}))},F=0;F<g.length;F++)Q(F,g[F],C)}I.encodePacket=function(g,e,t,C){"function"===typeof e&&(C=e,e=!1),"function"===typeof t&&(C=t,t=null);var Q=void 0===g.data?void 0:g.data.buffer||g.data;if("undefined"!==typeof ArrayBuffer&&Q instanceof ArrayBuffer)return function(g,e,t){if(!e)return I.encodeBase64Packet(g,t);var C=g.data,Q=new Uint8Array(C),F=new Uint8Array(1+C.byteLength);F[0]=c[g.type];for(var B=0;B<Q.length;B++)F[B+1]=Q[B];return t(F.buffer)}(g,e,C);if("undefined"!==typeof a&&Q instanceof a)return function(g,e,t){if(!e)return I.encodeBase64Packet(g,t);if(i)return function(g,e,t){if(!e)return I.encodeBase64Packet(g,t);var C=new FileReader;return C.onload=function(){I.encodePacket({type:g.type,data:C.result},e,!0,t)},C.readAsArrayBuffer(g.data)}(g,e,t);var C=new Uint8Array(1);C[0]=c[g.type];var Q=new a([C.buffer,g.data]);return t(Q)}(g,e,C);if(Q&&Q.base64)return function(g,e){var t="b"+I.packets[g.type]+g.data.data;return e(t)}(g,C);var F=c[g.type];return void 0!==g.data&&(F+=t?n.encode(String(g.data),{strict:!1}):String(g.data)),C(""+F)},I.encodeBase64Packet=function(g,e){var t,C="b"+I.packets[g.type];if("undefined"!==typeof a&&g.data instanceof a){var Q=new FileReader;return Q.onload=function(){var g=Q.result.split(",")[1];e(C+g)},Q.readAsDataURL(g.data)}try{t=String.fromCharCode.apply(null,new Uint8Array(g.data))}catch(U){for(var F=new Uint8Array(g.data),B=new Array(F.length),n=0;n<F.length;n++)B[n]=F[n];t=String.fromCharCode.apply(null,B)}return C+=btoa(t),e(C)},I.decodePacket=function(g,e,t){if(void 0===g)return l;if("string"===typeof g){if("b"===g.charAt(0))return I.decodeBase64Packet(g.substr(1),e);if(t&&!1===(g=function(g){try{g=n.decode(g,{strict:!1})}catch(I){return!1}return g}(g)))return l;var C=g.charAt(0);return Number(C)==C&&A[C]?g.length>1?{type:A[C],data:g.substring(1)}:{type:A[C]}:l}C=new Uint8Array(g)[0];var Q=F(g,1);return a&&"blob"===e&&(Q=new a([Q])),{type:A[C],data:Q}},I.decodeBase64Packet=function(g,I){var e=A[g.charAt(0)];if(!t)return{type:e,data:{base64:!0,data:g.substr(1)}};var C=t.decode(g.substr(1));return"blob"===I&&a&&(C=new a([C])),{type:e,data:C}},I.encodePayload=function(g,e,t){"function"===typeof e&&(t=e,e=null);var C=Q(g);if(e&&C)return a&&!i?I.encodePayloadAsBlob(g,t):I.encodePayloadAsArrayBuffer(g,t);if(!g.length)return t("0:");r(g,(function(g,t){I.encodePacket(g,!!C&&e,!1,(function(g){t(null,function(g){return g.length+":"+g}(g))}))}),(function(g,I){return t(I.join(""))}))},I.decodePayload=function(g,e,t){if("string"!==typeof g)return I.decodePayloadAsBinary(g,e,t);var C;if("function"===typeof e&&(t=e,e=null),""===g)return t(l,0,1);for(var Q,F,B="",n=0,U=g.length;n<U;n++){var s=g.charAt(n);if(":"===s){if(""===B||B!=(Q=Number(B)))return t(l,0,1);if(B!=(F=g.substr(n+1,Q)).length)return t(l,0,1);if(F.length){if(C=I.decodePacket(F,e,!1),l.type===C.type&&l.data===C.data)return t(l,0,1);if(!1===t(C,n+Q,U))return}n+=Q,B=""}else B+=s}return""!==B?t(l,0,1):void 0},I.encodePayloadAsArrayBuffer=function(g,e){if(!g.length)return e(new ArrayBuffer(0));r(g,(function(g,e){I.encodePacket(g,!0,!0,(function(g){return e(null,g)}))}),(function(g,I){var t=I.reduce((function(g,I){var e;return g+(e="string"===typeof I?I.length:I.byteLength).toString().length+e+2}),0),C=new Uint8Array(t),Q=0;return I.forEach((function(g){var I="string"===typeof g,e=g;if(I){for(var t=new Uint8Array(g.length),F=0;F<g.length;F++)t[F]=g.charCodeAt(F);e=t.buffer}C[Q++]=I?0:1;var B=e.byteLength.toString();for(F=0;F<B.length;F++)C[Q++]=parseInt(B[F]);C[Q++]=255;for(t=new Uint8Array(e),F=0;F<t.length;F++)C[Q++]=t[F]})),e(C.buffer)}))},I.encodePayloadAsBlob=function(g,e){r(g,(function(g,e){I.encodePacket(g,!0,!0,(function(g){var I=new Uint8Array(1);if(I[0]=1,"string"===typeof g){for(var t=new Uint8Array(g.length),C=0;C<g.length;C++)t[C]=g.charCodeAt(C);g=t.buffer,I[0]=0}var Q=(g instanceof ArrayBuffer?g.byteLength:g.size).toString(),F=new Uint8Array(Q.length+1);for(C=0;C<Q.length;C++)F[C]=parseInt(Q[C]);if(F[Q.length]=255,a){var B=new a([I.buffer,F.buffer,g]);e(null,B)}}))}),(function(g,I){return e(new a(I))}))},I.decodePayloadAsBinary=function(g,e,t){"function"===typeof e&&(t=e,e=null);for(var C=g,Q=[];C.byteLength>0;){for(var B=new Uint8Array(C),n=0===B[0],U="",s=1;255!==B[s];s++){if(U.length>310)return t(l,0,1);U+=B[s]}C=F(C,2+U.length),U=parseInt(U);var i=F(C,0,U);if(n)try{i=String.fromCharCode.apply(null,new Uint8Array(i))}catch(a){var c=new Uint8Array(i);i="";for(s=0;s<c.length;s++)i+=String.fromCharCode(c[s])}Q.push(i),C=F(C,U)}var A=Q.length;Q.forEach((function(g,C){t(I.decodePacket(g,e,!0),C,A)}))}},function(g,I,e){"use strict";(function(I){var t,C=e(103),Q=C.Buffer,F={};for(t in C)C.hasOwnProperty(t)&&"SlowBuffer"!==t&&"Buffer"!==t&&(F[t]=C[t]);var B=F.Buffer={};for(t in Q)Q.hasOwnProperty(t)&&"allocUnsafe"!==t&&"allocUnsafeSlow"!==t&&(B[t]=Q[t]);if(F.Buffer.prototype=Q.prototype,B.from&&B.from!==Uint8Array.from||(B.from=function(g,I,e){if("number"===typeof g)throw new TypeError('The "value" argument must not be of type number. Received type '+typeof g);if(g&&"undefined"===typeof g.length)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof g);return Q(g,I,e)}),B.alloc||(B.alloc=function(g,I,e){if("number"!==typeof g)throw new TypeError('The "size" argument must be of type number. Received type '+typeof g);if(g<0||g>=2*(1<<30))throw new RangeError('The value "'+g+'" is invalid for option "size"');var t=Q(g);return I&&0!==I.length?"string"===typeof e?t.fill(I,e):t.fill(I):t.fill(0),t}),!F.kStringMaxLength)try{F.kStringMaxLength=I.binding("buffer").kStringMaxLength}catch(n){}F.constants||(F.constants={MAX_LENGTH:F.kMaxLength},F.kStringMaxLength&&(F.constants.MAX_STRING_LENGTH=F.kStringMaxLength)),g.exports=F}).call(this,e(92))},function(g,I,e){(function(){var g,t,C,Q={}.hasOwnProperty;g=e(532),C=function(){function I(g,I){this.type=g,this.endian=null!=I?I:"BE",this.fn=this.type,"8"!==this.type[this.type.length-1]&&(this.fn+=this.endian)}return I.prototype.size=function(){return g.TYPES[this.type]},I.prototype.decode=function(g){return g["read"+this.fn]()},I.prototype.encode=function(g,I){return g["write"+this.fn](I)},I}(),I.Number=C,I.uint8=new C("UInt8"),I.uint16be=I.uint16=new C("UInt16","BE"),I.uint16le=new C("UInt16","LE"),I.uint24be=I.uint24=new C("UInt24","BE"),I.uint24le=new C("UInt24","LE"),I.uint32be=I.uint32=new C("UInt32","BE"),I.uint32le=new C("UInt32","LE"),I.int8=new C("Int8"),I.int16be=I.int16=new C("Int16","BE"),I.int16le=new C("Int16","LE"),I.int24be=I.int24=new C("Int24","BE"),I.int24le=new C("Int24","LE"),I.int32be=I.int32=new C("Int32","BE"),I.int32le=new C("Int32","LE"),I.floatbe=I.float=new C("Float","BE"),I.floatle=new C("Float","LE"),I.doublebe=I.double=new C("Double","BE"),I.doublele=new C("Double","LE"),t=function(g){function I(g,e,t){null==t&&(t=g>>1),I.__super__.constructor.call(this,"Int"+g,e),this._point=1<<t}return function(g,I){for(var e in I)Q.call(I,e)&&(g[e]=I[e]);function t(){this.constructor=g}t.prototype=I.prototype,g.prototype=new t,g.__super__=I.prototype}(I,g),I.prototype.decode=function(g){return I.__super__.decode.call(this,g)/this._point},I.prototype.encode=function(g,e){return I.__super__.encode.call(this,g,e*this._point|0)},I}(C),I.Fixed=t,I.fixed16be=I.fixed16=new t(16,"BE"),I.fixed16le=new t(16,"LE"),I.fixed32be=I.fixed32=new t(32,"BE"),I.fixed32le=new t(32,"LE")}).call(this)},function(g,I,e){"use strict";var t=e(46).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)).curryN(2,(function(g,I){return g.save(),I}));I.default=C},function(g,I,e){"use strict";var t=e(46).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)).curryN(2,(function(g,I){return g.restore(),I}));I.default=C},function(g,I,e){var t=e(1506).default;function C(g){if("function"!==typeof WeakMap)return null;var I=new WeakMap,e=new WeakMap;return(C=function(g){return g?e:I})(g)}g.exports=function(g,I){if(!I&&g&&g.__esModule)return g;if(null===g||"object"!==t(g)&&"function"!==typeof g)return{default:g};var e=C(I);if(e&&e.has(g))return e.get(g);var Q={},F=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var B in g)if("default"!==B&&Object.prototype.hasOwnProperty.call(g,B)){var n=F?Object.getOwnPropertyDescriptor(g,B):null;n&&(n.get||n.set)?Object.defineProperty(Q,B,n):Q[B]=g[B]}return Q.default=g,e&&e.set(g,Q),Q},g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I,e){"use strict";I.__esModule=!0,I.default=void 0;var t=function(g){var I=function(g){return/((-)?\d+\.?\d*)%/g.exec(g)}(g);if(I){var e=parseFloat(I[1],10);return{percent:e/100,value:e}}return null};I.default=t},function(g,I,e){"use strict";e.d(I,"b",(function(){return U}));var t=e(168),C=e(5),Q=e(181),F=(e(4),e(239)),B={xs:0,sm:600,md:960,lg:1280,xl:1920},n={keys:["xs","sm","md","lg","xl"],up:function(g){return"@media (min-width:".concat(B[g],"px)")}};function U(g,I,e){if(Array.isArray(I)){var t=g.theme.breakpoints||n;return I.reduce((function(g,C,Q){return g[t.up(t.keys[Q])]=e(I[Q]),g}),{})}if("object"===Object(Q.a)(I)){var C=g.theme.breakpoints||n;return Object.keys(I).reduce((function(g,t){return g[C.up(t)]=e(I[t]),g}),{})}return e(I)}I.a=function(g){var I=function(I){var e=g(I),t=I.theme.breakpoints||n,Q=t.keys.reduce((function(e,Q){return I[Q]&&((e=e||{})[t.up(Q)]=g(Object(C.a)({theme:I.theme},I[Q]))),e}),null);return Object(F.a)(e,Q)};return I.propTypes={},I.filterProps=["xs","sm","md","lg","xl"].concat(Object(t.a)(g.filterProps)),I}},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z"}),"KeyboardArrowDown");I.default=Q},function(g,I,e){g.exports=C;var t=e(411).EventEmitter;function C(){t.call(this)}e(253)(C,t),C.Readable=e(528),C.Writable=e(1382),C.Duplex=e(1383),C.Transform=e(1384),C.PassThrough=e(1385),C.Stream=C,C.prototype.pipe=function(g,I){var e=this;function C(I){g.writable&&!1===g.write(I)&&e.pause&&e.pause()}function Q(){e.readable&&e.resume&&e.resume()}e.on("data",C),g.on("drain",Q),g._isStdio||I&&!1===I.end||(e.on("end",B),e.on("close",n));var F=!1;function B(){F||(F=!0,g.end())}function n(){F||(F=!0,"function"===typeof g.destroy&&g.destroy())}function U(g){if(s(),0===t.listenerCount(this,"error"))throw g}function s(){e.removeListener("data",C),g.removeListener("drain",Q),e.removeListener("end",B),e.removeListener("close",n),e.removeListener("error",U),g.removeListener("error",U),e.removeListener("end",s),e.removeListener("close",s),g.removeListener("close",s)}return e.on("error",U),g.on("error",U),e.on("end",s),e.on("close",s),g.on("close",s),g.emit("pipe",e),g}},function(g,I,e){"use strict";e.d(I,"a",(function(){return U})),e.d(I,"b",(function(){return i}));var t=e(11),C=e(322),Q=e(66),F=e(262),B=e(107),n=e(296),U=1e3,s=function(g){function I(I,e,t,C){void 0===t&&(t="");var Q=g.call(this,C)||this;return Q._pushActivity=I,Q._popActivity=e,Q.transactionSpanId=t,Q}return Object(t.b)(I,g),I.prototype.add=function(I){var e=this;I.spanId!==this.transactionSpanId&&(I.finish=function(g){I.endTimestamp="number"===typeof g?g:Object(C.d)(),e._popActivity(I.spanId)},void 0===I.endTimestamp&&this._pushActivity(I.spanId)),g.prototype.add.call(this,I)},I}(F.b),i=function(g){function I(I,e,t,C){void 0===t&&(t=U),void 0===C&&(C=!1);var F=g.call(this,I,e)||this;return F._idleHub=e,F._idleTimeout=t,F._onScope=C,F.activities={},F._heartbeatTimer=0,F._heartbeatCounter=0,F._finished=!1,F._beforeFinishCallbacks=[],e&&C&&(c(e),Q.a.log("Setting idle transaction on scope. Span ID: "+F.spanId),e.configureScope((function(g){return g.setSpan(F)}))),F._initTimeout=setTimeout((function(){F._finished||F.finish()}),F._idleTimeout),F}return Object(t.b)(I,g),I.prototype.finish=function(I){var e,F,n=this;if(void 0===I&&(I=Object(C.d)()),this._finished=!0,this.activities={},this.spanRecorder){Q.a.log("[Tracing] finishing IdleTransaction",new Date(1e3*I).toISOString(),this.op);try{for(var U=Object(t.g)(this._beforeFinishCallbacks),s=U.next();!s.done;s=U.next()){(0,s.value)(this,I)}}catch(i){e={error:i}}finally{try{s&&!s.done&&(F=U.return)&&F.call(U)}finally{if(e)throw e.error}}this.spanRecorder.spans=this.spanRecorder.spans.filter((function(g){if(g.spanId===n.spanId)return!0;g.endTimestamp||(g.endTimestamp=I,g.setStatus(B.a.Cancelled),Q.a.log("[Tracing] cancelling span since transaction ended early",JSON.stringify(g,void 0,2)));var e=g.startTimestamp<I;return e||Q.a.log("[Tracing] discarding Span since it happened after Transaction was finished",JSON.stringify(g,void 0,2)),e})),Q.a.log("[Tracing] flushing IdleTransaction")}else Q.a.log("[Tracing] No active IdleTransaction");return this._onScope&&c(this._idleHub),g.prototype.finish.call(this,I)},I.prototype.registerBeforeFinishCallback=function(g){this._beforeFinishCallbacks.push(g)},I.prototype.initSpanRecorder=function(g){var I=this;if(!this.spanRecorder){this.spanRecorder=new s((function(g){I._finished||I._pushActivity(g)}),(function(g){I._finished||I._popActivity(g)}),this.spanId,g),Q.a.log("Starting heartbeat"),this._pingHeartbeat()}this.spanRecorder.add(this)},I.prototype._pushActivity=function(g){this._initTimeout&&(clearTimeout(this._initTimeout),this._initTimeout=void 0),Q.a.log("[Tracing] pushActivity: "+g),this.activities[g]=!0,Q.a.log("[Tracing] new activities count",Object.keys(this.activities).length)},I.prototype._popActivity=function(g){var I=this;if(this.activities[g]&&(Q.a.log("[Tracing] popActivity "+g),delete this.activities[g],Q.a.log("[Tracing] new activities count",Object.keys(this.activities).length)),0===Object.keys(this.activities).length){var e=this._idleTimeout,t=Object(C.d)()+e/1e3;setTimeout((function(){I._finished||I.finish(t)}),e)}},I.prototype._beat=function(){if(clearTimeout(this._heartbeatTimer),!this._finished){var g=Object.keys(this.activities),I=g.length?g.reduce((function(g,I){return g+I})):"";I===this._prevHeartbeatString?this._heartbeatCounter+=1:this._heartbeatCounter=1,this._prevHeartbeatString=I,this._heartbeatCounter>=3?(Q.a.log("[Tracing] Transaction finished because of no change for 3 heart beats"),this.setStatus(B.a.DeadlineExceeded),this.setTag("heartbeat","failed"),this.finish()):this._pingHeartbeat()}},I.prototype._pingHeartbeat=function(){var g=this;Q.a.log("pinging Heartbeat -> current counter: "+this._heartbeatCounter),this._heartbeatTimer=setTimeout((function(){g._beat()}),5e3)},I}(n.a);function c(g){if(g){var I=g.getScope();if(I)I.getTransaction()&&I.setSpan(void 0)}}},function(g,I,e){"use strict";e.d(I,"a",(function(){return U}));var t=e(11),C=e(272),Q=e(75),F=e(66),B=e(143),n=e(262),U=function(g){function I(I,e){var t=g.call(this,I)||this;return t._measurements={},t._hub=Object(C.b)(),Object(Q.g)(e,C.a)&&(t._hub=e),t.name=I.name||"",t.metadata=I.metadata||{},t._trimEnd=I.trimEnd,t.transaction=t,t}return Object(t.b)(I,g),I.prototype.setName=function(g){this.name=g},I.prototype.initSpanRecorder=function(g){void 0===g&&(g=1e3),this.spanRecorder||(this.spanRecorder=new n.b(g)),this.spanRecorder.add(this)},I.prototype.setMeasurements=function(g){this._measurements=Object(t.a)({},g)},I.prototype.setMetadata=function(g){this.metadata=Object(t.a)(Object(t.a)({},this.metadata),g)},I.prototype.finish=function(I){var e=this;if(void 0===this.endTimestamp){if(this.name||(F.a.warn("Transaction has no name, falling back to `<unlabeled transaction>`."),this.name="<unlabeled transaction>"),g.prototype.finish.call(this,I),!0===this.sampled){var t=this.spanRecorder?this.spanRecorder.spans.filter((function(g){return g!==e&&g.endTimestamp})):[];this._trimEnd&&t.length>0&&(this.endTimestamp=t.reduce((function(g,I){return g.endTimestamp&&I.endTimestamp?g.endTimestamp>I.endTimestamp?g:I:g})).endTimestamp);var C={contexts:{trace:this.getTraceContext()},spans:t,start_timestamp:this.startTimestamp,tags:this.tags,timestamp:this.endTimestamp,transaction:this.name,type:"transaction",debug_meta:this.metadata};return Object.keys(this._measurements).length>0&&(F.a.log("[Measurements] Adding measurements to transaction",JSON.stringify(this._measurements,void 0,2)),C.measurements=this._measurements),F.a.log("[Tracing] Finishing "+this.op+" transaction: "+this.name+"."),this._hub.captureEvent(C)}F.a.log("[Tracing] Discarding transaction because its trace was not chosen to be sampled.")}},I.prototype.toContext=function(){var I=g.prototype.toContext.call(this);return Object(B.a)(Object(t.a)(Object(t.a)({},I),{name:this.name,trimEnd:this._trimEnd}))},I.prototype.updateWithContext=function(I){var e;return g.prototype.updateWithContext.call(this,I),this.name=null!==(e=I.name)&&void 0!==e?e:"",this._trimEnd=I.trimEnd,this},I}(n.a)},function(g,I,e){"use strict";var t=e(48),C=e(16),Q=e(556),F=e(5),B=["xs","sm","md","lg","xl"];function n(g){var I=g.values,e=void 0===I?{xs:0,sm:600,md:960,lg:1280,xl:1920}:I,t=g.unit,Q=void 0===t?"px":t,n=g.step,U=void 0===n?5:n,s=Object(C.a)(g,["values","unit","step"]);function i(g){var I="number"===typeof e[g]?e[g]:g;return"@media (min-width:".concat(I).concat(Q,")")}function c(g,I){var t=B.indexOf(I);return t===B.length-1?i(g):"@media (min-width:".concat("number"===typeof e[g]?e[g]:g).concat(Q,") and ")+"(max-width:".concat((-1!==t&&"number"===typeof e[B[t+1]]?e[B[t+1]]:I)-U/100).concat(Q,")")}return Object(F.a)({keys:B,values:e,up:i,down:function(g){var I=B.indexOf(g)+1,t=e[B[I]];return I===B.length?i("xs"):"@media (max-width:".concat(("number"===typeof t&&I>0?t:g)-U/100).concat(Q,")")},between:c,only:function(g){return c(g,g)},width:function(g){return e[g]}},s)}function U(g,I,e){var C;return Object(F.a)({gutters:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return Object(F.a)({paddingLeft:I(2),paddingRight:I(2)},e,Object(t.a)({},g.up("sm"),Object(F.a)({paddingLeft:I(3),paddingRight:I(3)},e[g.up("sm")])))},toolbar:(C={minHeight:56},Object(t.a)(C,"".concat(g.up("xs")," and (orientation: landscape)"),{minHeight:48}),Object(t.a)(C,g.up("sm"),{minHeight:64}),C)},e)}var s=e(427),i={black:"#000",white:"#fff"},c={50:"#fafafa",100:"#f5f5f5",200:"#eeeeee",300:"#e0e0e0",400:"#bdbdbd",500:"#9e9e9e",600:"#757575",700:"#616161",800:"#424242",900:"#212121",A100:"#d5d5d5",A200:"#aaaaaa",A400:"#303030",A700:"#616161"},A={50:"#e8eaf6",100:"#c5cae9",200:"#9fa8da",300:"#7986cb",400:"#5c6bc0",500:"#3f51b5",600:"#3949ab",700:"#303f9f",800:"#283593",900:"#1a237e",A100:"#8c9eff",A200:"#536dfe",A400:"#3d5afe",A700:"#304ffe"},l={50:"#fce4ec",100:"#f8bbd0",200:"#f48fb1",300:"#f06292",400:"#ec407a",500:"#e91e63",600:"#d81b60",700:"#c2185b",800:"#ad1457",900:"#880e4f",A100:"#ff80ab",A200:"#ff4081",A400:"#f50057",A700:"#c51162"},a={50:"#ffebee",100:"#ffcdd2",200:"#ef9a9a",300:"#e57373",400:"#ef5350",500:"#f44336",600:"#e53935",700:"#d32f2f",800:"#c62828",900:"#b71c1c",A100:"#ff8a80",A200:"#ff5252",A400:"#ff1744",A700:"#d50000"},r={50:"#fff3e0",100:"#ffe0b2",200:"#ffcc80",300:"#ffb74d",400:"#ffa726",500:"#ff9800",600:"#fb8c00",700:"#f57c00",800:"#ef6c00",900:"#e65100",A100:"#ffd180",A200:"#ffab40",A400:"#ff9100",A700:"#ff6d00"},o={50:"#e3f2fd",100:"#bbdefb",200:"#90caf9",300:"#64b5f6",400:"#42a5f5",500:"#2196f3",600:"#1e88e5",700:"#1976d2",800:"#1565c0",900:"#0d47a1",A100:"#82b1ff",A200:"#448aff",A400:"#2979ff",A700:"#2962ff"},d={50:"#e8f5e9",100:"#c8e6c9",200:"#a5d6a7",300:"#81c784",400:"#66bb6a",500:"#4caf50",600:"#43a047",700:"#388e3c",800:"#2e7d32",900:"#1b5e20",A100:"#b9f6ca",A200:"#69f0ae",A400:"#00e676",A700:"#00c853"},u=e(38),y={text:{primary:"rgba(0, 0, 0, 0.87)",secondary:"rgba(0, 0, 0, 0.54)",disabled:"rgba(0, 0, 0, 0.38)",hint:"rgba(0, 0, 0, 0.38)"},divider:"rgba(0, 0, 0, 0.12)",background:{paper:i.white,default:c[50]},action:{active:"rgba(0, 0, 0, 0.54)",hover:"rgba(0, 0, 0, 0.04)",hoverOpacity:.04,selected:"rgba(0, 0, 0, 0.08)",selectedOpacity:.08,disabled:"rgba(0, 0, 0, 0.26)",disabledBackground:"rgba(0, 0, 0, 0.12)",disabledOpacity:.38,focus:"rgba(0, 0, 0, 0.12)",focusOpacity:.12,activatedOpacity:.12}},b={text:{primary:i.white,secondary:"rgba(255, 255, 255, 0.7)",disabled:"rgba(255, 255, 255, 0.5)",hint:"rgba(255, 255, 255, 0.5)",icon:"rgba(255, 255, 255, 0.5)"},divider:"rgba(255, 255, 255, 0.12)",background:{paper:c[800],default:"#303030"},action:{active:i.white,hover:"rgba(255, 255, 255, 0.08)",hoverOpacity:.08,selected:"rgba(255, 255, 255, 0.16)",selectedOpacity:.16,disabled:"rgba(255, 255, 255, 0.3)",disabledBackground:"rgba(255, 255, 255, 0.12)",disabledOpacity:.38,focus:"rgba(255, 255, 255, 0.12)",focusOpacity:.12,activatedOpacity:.24}};function Z(g,I,e,t){var C=t.light||t,Q=t.dark||1.5*t;g[I]||(g.hasOwnProperty(e)?g[I]=g[e]:"light"===I?g.light=Object(u.i)(g.main,C):"dark"===I&&(g.dark=Object(u.a)(g.main,Q)))}function m(g){var I=g.primary,e=void 0===I?{light:A[300],main:A[500],dark:A[700]}:I,t=g.secondary,B=void 0===t?{light:l.A200,main:l.A400,dark:l.A700}:t,n=g.error,U=void 0===n?{light:a[300],main:a[500],dark:a[700]}:n,m=g.warning,x=void 0===m?{light:r[300],main:r[500],dark:r[700]}:m,R=g.info,S=void 0===R?{light:o[300],main:o[500],dark:o[700]}:R,G=g.success,L=void 0===G?{light:d[300],main:d[500],dark:d[700]}:G,V=g.type,h=void 0===V?"light":V,D=g.contrastThreshold,p=void 0===D?3:D,E=g.tonalOffset,N=void 0===E?.2:E,W=Object(C.a)(g,["primary","secondary","error","warning","info","success","type","contrastThreshold","tonalOffset"]);function f(g){return Object(u.e)(g,b.text.primary)>=p?b.text.primary:y.text.primary}var X=function(g){var I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:500,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:300,t=arguments.length>3&&void 0!==arguments[3]?arguments[3]:700;if(!(g=Object(F.a)({},g)).main&&g[I]&&(g.main=g[I]),!g.main)throw new Error(Object(s.a)(4,I));if("string"!==typeof g.main)throw new Error(Object(s.a)(5,JSON.stringify(g.main)));return Z(g,"light",e,N),Z(g,"dark",t,N),g.contrastText||(g.contrastText=f(g.main)),g},J={dark:b,light:y};return Object(Q.a)(Object(F.a)({common:i,type:h,primary:X(e),secondary:X(B,"A400","A200","A700"),error:X(U),warning:X(x),info:X(S),success:X(L),grey:c,contrastThreshold:p,getContrastText:f,augmentColor:X,tonalOffset:N},J[h]),W)}function x(g){return Math.round(1e5*g)/1e5}var R={textTransform:"uppercase"};function S(g,I){var e="function"===typeof I?I(g):I,t=e.fontFamily,B=void 0===t?'"Roboto", "Helvetica", "Arial", sans-serif':t,n=e.fontSize,U=void 0===n?14:n,s=e.fontWeightLight,i=void 0===s?300:s,c=e.fontWeightRegular,A=void 0===c?400:c,l=e.fontWeightMedium,a=void 0===l?500:l,r=e.fontWeightBold,o=void 0===r?700:r,d=e.htmlFontSize,u=void 0===d?16:d,y=e.allVariants,b=e.pxToRem,Z=Object(C.a)(e,["fontFamily","fontSize","fontWeightLight","fontWeightRegular","fontWeightMedium","fontWeightBold","htmlFontSize","allVariants","pxToRem"]);var m=U/14,S=b||function(g){return"".concat(g/u*m,"rem")},G=function(g,I,e,t,C){return Object(F.a)({fontFamily:B,fontWeight:g,fontSize:S(I),lineHeight:e},'"Roboto", "Helvetica", "Arial", sans-serif'===B?{letterSpacing:"".concat(x(t/I),"em")}:{},C,y)},L={h1:G(i,96,1.167,-1.5),h2:G(i,60,1.2,-.5),h3:G(A,48,1.167,0),h4:G(A,34,1.235,.25),h5:G(A,24,1.334,0),h6:G(a,20,1.6,.15),subtitle1:G(A,16,1.75,.15),subtitle2:G(a,14,1.57,.1),body1:G(A,16,1.5,.15),body2:G(A,14,1.43,.15),button:G(a,14,1.75,.4,R),caption:G(A,12,1.66,.4),overline:G(A,12,2.66,1,R)};return Object(Q.a)(Object(F.a)({htmlFontSize:u,pxToRem:S,round:x,fontFamily:B,fontSize:U,fontWeightLight:i,fontWeightRegular:A,fontWeightMedium:a,fontWeightBold:o},L),Z,{clone:!1})}function G(){return["".concat(arguments.length<=0?void 0:arguments[0],"px ").concat(arguments.length<=1?void 0:arguments[1],"px ").concat(arguments.length<=2?void 0:arguments[2],"px ").concat(arguments.length<=3?void 0:arguments[3],"px rgba(0,0,0,").concat(.2,")"),"".concat(arguments.length<=4?void 0:arguments[4],"px ").concat(arguments.length<=5?void 0:arguments[5],"px ").concat(arguments.length<=6?void 0:arguments[6],"px ").concat(arguments.length<=7?void 0:arguments[7],"px rgba(0,0,0,").concat(.14,")"),"".concat(arguments.length<=8?void 0:arguments[8],"px ").concat(arguments.length<=9?void 0:arguments[9],"px ").concat(arguments.length<=10?void 0:arguments[10],"px ").concat(arguments.length<=11?void 0:arguments[11],"px rgba(0,0,0,").concat(.12,")")].join(",")}var L=["none",G(0,2,1,-1,0,1,1,0,0,1,3,0),G(0,3,1,-2,0,2,2,0,0,1,5,0),G(0,3,3,-2,0,3,4,0,0,1,8,0),G(0,2,4,-1,0,4,5,0,0,1,10,0),G(0,3,5,-1,0,5,8,0,0,1,14,0),G(0,3,5,-1,0,6,10,0,0,1,18,0),G(0,4,5,-2,0,7,10,1,0,2,16,1),G(0,5,5,-3,0,8,10,1,0,3,14,2),G(0,5,6,-3,0,9,12,1,0,3,16,2),G(0,6,6,-3,0,10,14,1,0,4,18,3),G(0,6,7,-4,0,11,15,1,0,4,20,3),G(0,7,8,-4,0,12,17,2,0,5,22,4),G(0,7,8,-4,0,13,19,2,0,5,24,4),G(0,7,9,-4,0,14,21,2,0,5,26,4),G(0,8,9,-5,0,15,22,2,0,6,28,5),G(0,8,10,-5,0,16,24,2,0,6,30,5),G(0,8,11,-5,0,17,26,2,0,6,32,5),G(0,9,11,-5,0,18,28,2,0,7,34,6),G(0,9,12,-6,0,19,29,2,0,7,36,6),G(0,10,13,-6,0,20,31,3,0,8,38,7),G(0,10,13,-6,0,21,33,3,0,8,40,7),G(0,10,14,-6,0,22,35,3,0,8,42,7),G(0,11,14,-7,0,23,36,3,0,9,44,8),G(0,11,15,-7,0,24,38,3,0,9,46,8)],V={borderRadius:4},h=e(358);function D(){var g=arguments.length>0&&void 0!==arguments[0]?arguments[0]:8;if(g.mui)return g;var I=Object(h.a)({spacing:g}),e=function(){for(var g=arguments.length,e=new Array(g),t=0;t<g;t++)e[t]=arguments[t];return 0===e.length?I(1):1===e.length?I(e[0]):e.map((function(g){if("string"===typeof g)return g;var e=I(g);return"number"===typeof e?"".concat(e,"px"):e})).join(" ")};return Object.defineProperty(e,"unit",{get:function(){return g}}),e.mui=!0,e}var p=e(87),E=e(433);I.a=function(){for(var g=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},I=g.breakpoints,e=void 0===I?{}:I,t=g.mixins,F=void 0===t?{}:t,B=g.palette,s=void 0===B?{}:B,i=g.spacing,c=g.typography,A=void 0===c?{}:c,l=Object(C.a)(g,["breakpoints","mixins","palette","spacing","typography"]),a=m(s),r=n(e),o=D(i),d=Object(Q.a)({breakpoints:r,direction:"ltr",mixins:U(r,o,F),overrides:{},palette:a,props:{},shadows:L,typography:S(a,A),spacing:o,shape:V,transitions:p.a,zIndex:E.a},l),u=arguments.length,y=new Array(u>1?u-1:0),b=1;b<u;b++)y[b-1]=arguments[b];return d=y.reduce((function(g,I){return Object(Q.a)(g,I)}),d)}},,function(g,I,e){"use strict";e.d(I,"a",(function(){return C}));var t=e(364);function C(g,I){if(g){if("string"===typeof g)return Object(t.a)(g,I);var e=Object.prototype.toString.call(g).slice(8,-1);return"Object"===e&&g.constructor&&(e=g.constructor.name),"Map"===e||"Set"===e?Array.from(e):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?Object(t.a)(g,I):void 0}}},function(g,I,e){"use strict";e.d(I,"a",(function(){return C}));var t=e(367);function C(g,I){if(g){if("string"===typeof g)return Object(t.a)(g,I);var e=Object.prototype.toString.call(g).slice(8,-1);return"Object"===e&&g.constructor&&(e=g.constructor.name),"Map"===e||"Set"===e?Array.from(g):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?Object(t.a)(g,I):void 0}}},function(g,I,e){"use strict";function t(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}e.d(I,"a",(function(){return t}))},function(g,I,e){"use strict";e.d(I,"a",(function(){return C}));var t=e(73);function C(g){return Object(t.a)(g).defaultView||window}},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"}),"Menu");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M11 18h2v-2h-2v2zm1-16C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm0-14c-2.21 0-4 1.79-4 4h2c0-1.1.9-2 2-2s2 .9 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5 0-2.21-1.79-4-4-4z"}),"HelpOutline");I.default=Q},function(g,I,e){"use strict";var t=e(5),C=e(99),Q=e(16),F=e(0),B=(e(4),e(14)),n=e(165),U=e(153),s=e(21),i=e(368),c=F.forwardRef((function(g,I){var e=g.autoFocus,s=g.checked,c=g.checkedIcon,A=g.classes,l=g.className,a=g.defaultChecked,r=g.disabled,o=g.icon,d=g.id,u=g.inputProps,y=g.inputRef,b=g.name,Z=g.onBlur,m=g.onChange,x=g.onFocus,R=g.readOnly,S=g.required,G=g.tabIndex,L=g.type,V=g.value,h=Object(Q.a)(g,["autoFocus","checked","checkedIcon","classes","className","defaultChecked","disabled","icon","id","inputProps","inputRef","name","onBlur","onChange","onFocus","readOnly","required","tabIndex","type","value"]),D=Object(n.a)({controlled:s,default:Boolean(a),name:"SwitchBase",state:"checked"}),p=Object(C.a)(D,2),E=p[0],N=p[1],W=Object(U.a)(),f=r;W&&"undefined"===typeof f&&(f=W.disabled);var X="checkbox"===L||"radio"===L;return F.createElement(i.a,Object(t.a)({component:"span",className:Object(B.default)(A.root,l,E&&A.checked,f&&A.disabled),disabled:f,tabIndex:null,role:void 0,onFocus:function(g){x&&x(g),W&&W.onFocus&&W.onFocus(g)},onBlur:function(g){Z&&Z(g),W&&W.onBlur&&W.onBlur(g)},ref:I},h),F.createElement("input",Object(t.a)({autoFocus:e,checked:s,defaultChecked:a,className:A.input,disabled:f,id:X&&d,name:b,onChange:function(g){var I=g.target.checked;N(I),m&&m(g,I)},readOnly:R,ref:y,required:S,tabIndex:G,type:L,value:V},u)),E?c:o)}));I.a=Object(s.a)({root:{padding:9},checked:{},disabled:{},input:{cursor:"inherit",position:"absolute",opacity:0,width:"100%",height:"100%",top:0,left:0,margin:0,padding:0,zIndex:1}},{name:"PrivateSwitchBase"})(c)},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M2 17h20v2H2zm11.84-9.21c.1-.24.16-.51.16-.79 0-1.1-.9-2-2-2s-2 .9-2 2c0 .28.06.55.16.79C6.25 8.6 3.27 11.93 3 16h18c-.27-4.07-3.25-7.4-7.16-8.21z"}),"RoomService");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement(C.default.Fragment,null,C.default.createElement("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"}),C.default.createElement("path",{d:"M12 10h-2v2H9v-2H7V9h2V7h1v2h2v1z"})),"ZoomIn");I.default=Q},function(g,I,e){"use strict";(function(g){e.d(I,"a",(function(){return sg}));var t=e(4),C=e.n(t),Q=e(854),F=e.n(Q),B=e(855),n=e.n(B),U=e(0),s=e.n(U),i=e(139),c=e.n(i),A="bodyAttributes",l="htmlAttributes",a="titleAttributes",r={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title"},o=(Object.keys(r).map((function(g){return r[g]})),"charset"),d="cssText",u="href",y="http-equiv",b="innerHTML",Z="itemprop",m="name",x="property",R="rel",S="src",G="target",L={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},V="defaultTitle",h="defer",D="encodeSpecialCharacters",p="onChangeClientState",E="titleTemplate",N=Object.keys(L).reduce((function(g,I){return g[L[I]]=I,g}),{}),W=[r.NOSCRIPT,r.SCRIPT,r.STYLE],f="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"===typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g},X=function(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")},J=function(){function g(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}return function(I,e,t){return e&&g(I.prototype,e),t&&g(I,t),I}}(),v=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g},k=function(g,I){var e={};for(var t in g)I.indexOf(t)>=0||Object.prototype.hasOwnProperty.call(g,t)&&(e[t]=g[t]);return e},H=function(g,I){if(!g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!I||"object"!==typeof I&&"function"!==typeof I?g:I},M=function(g){var I=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return!1===I?String(g):String(g).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;")},Y=function(g){var I=K(g,r.TITLE),e=K(g,E);if(e&&I)return e.replace(/%s/g,(function(){return Array.isArray(I)?I.join(""):I}));var t=K(g,V);return I||t||void 0},w=function(g){return K(g,p)||function(){}},T=function(g,I){return I.filter((function(I){return"undefined"!==typeof I[g]})).map((function(I){return I[g]})).reduce((function(g,I){return v({},g,I)}),{})},z=function(g,I){return I.filter((function(g){return"undefined"!==typeof g[r.BASE]})).map((function(g){return g[r.BASE]})).reverse().reduce((function(I,e){if(!I.length)for(var t=Object.keys(e),C=0;C<t.length;C++){var Q=t[C].toLowerCase();if(-1!==g.indexOf(Q)&&e[Q])return I.concat(e)}return I}),[])},O=function(g,I,e){var t={};return e.filter((function(I){return!!Array.isArray(I[g])||("undefined"!==typeof I[g]&&$("Helmet: "+g+' should be of type "Array". Instead found type "'+f(I[g])+'"'),!1)})).map((function(I){return I[g]})).reverse().reduce((function(g,e){var C={};e.filter((function(g){for(var e=void 0,Q=Object.keys(g),F=0;F<Q.length;F++){var B=Q[F],n=B.toLowerCase();-1===I.indexOf(n)||e===R&&"canonical"===g[e].toLowerCase()||n===R&&"stylesheet"===g[n].toLowerCase()||(e=n),-1===I.indexOf(B)||B!==b&&B!==d&&B!==Z||(e=B)}if(!e||!g[e])return!1;var U=g[e].toLowerCase();return t[e]||(t[e]={}),C[e]||(C[e]={}),!t[e][U]&&(C[e][U]=!0,!0)})).reverse().forEach((function(I){return g.push(I)}));for(var Q=Object.keys(C),F=0;F<Q.length;F++){var B=Q[F],n=c()({},t[B],C[B]);t[B]=n}return g}),[]).reverse()},K=function(g,I){for(var e=g.length-1;e>=0;e--){var t=g[e];if(t.hasOwnProperty(I))return t[I]}return null},j=function(){var g=Date.now();return function(I){var e=Date.now();e-g>16?(g=e,I(e)):setTimeout((function(){j(I)}),0)}}(),P=function(g){return clearTimeout(g)},_="undefined"!==typeof window?window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||j:g.requestAnimationFrame||j,q="undefined"!==typeof window?window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||P:g.cancelAnimationFrame||P,$=function(g){return console&&"function"===typeof console.warn&&console.warn(g)},gg=null,Ig=function(g,I){var e=g.baseTag,t=g.bodyAttributes,C=g.htmlAttributes,Q=g.linkTags,F=g.metaTags,B=g.noscriptTags,n=g.onChangeClientState,U=g.scriptTags,s=g.styleTags,i=g.title,c=g.titleAttributes;Cg(r.BODY,t),Cg(r.HTML,C),tg(i,c);var A={baseTag:Qg(r.BASE,e),linkTags:Qg(r.LINK,Q),metaTags:Qg(r.META,F),noscriptTags:Qg(r.NOSCRIPT,B),scriptTags:Qg(r.SCRIPT,U),styleTags:Qg(r.STYLE,s)},l={},a={};Object.keys(A).forEach((function(g){var I=A[g],e=I.newTags,t=I.oldTags;e.length&&(l[g]=e),t.length&&(a[g]=A[g].oldTags)})),I&&I(),n(g,l,a)},eg=function(g){return Array.isArray(g)?g.join(""):g},tg=function(g,I){"undefined"!==typeof g&&document.title!==g&&(document.title=eg(g)),Cg(r.TITLE,I)},Cg=function(g,I){var e=document.getElementsByTagName(g)[0];if(e){for(var t=e.getAttribute("data-react-helmet"),C=t?t.split(","):[],Q=[].concat(C),F=Object.keys(I),B=0;B<F.length;B++){var n=F[B],U=I[n]||"";e.getAttribute(n)!==U&&e.setAttribute(n,U),-1===C.indexOf(n)&&C.push(n);var s=Q.indexOf(n);-1!==s&&Q.splice(s,1)}for(var i=Q.length-1;i>=0;i--)e.removeAttribute(Q[i]);C.length===Q.length?e.removeAttribute("data-react-helmet"):e.getAttribute("data-react-helmet")!==F.join(",")&&e.setAttribute("data-react-helmet",F.join(","))}},Qg=function(g,I){var e=document.head||document.querySelector(r.HEAD),t=e.querySelectorAll(g+"[data-react-helmet]"),C=Array.prototype.slice.call(t),Q=[],F=void 0;return I&&I.length&&I.forEach((function(I){var e=document.createElement(g);for(var t in I)if(I.hasOwnProperty(t))if(t===b)e.innerHTML=I.innerHTML;else if(t===d)e.styleSheet?e.styleSheet.cssText=I.cssText:e.appendChild(document.createTextNode(I.cssText));else{var B="undefined"===typeof I[t]?"":I[t];e.setAttribute(t,B)}e.setAttribute("data-react-helmet","true"),C.some((function(g,I){return F=I,e.isEqualNode(g)}))?C.splice(F,1):Q.push(e)})),C.forEach((function(g){return g.parentNode.removeChild(g)})),Q.forEach((function(g){return e.appendChild(g)})),{oldTags:C,newTags:Q}},Fg=function(g){return Object.keys(g).reduce((function(I,e){var t="undefined"!==typeof g[e]?e+'="'+g[e]+'"':""+e;return I?I+" "+t:t}),"")},Bg=function(g){var I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(g).reduce((function(I,e){return I[L[e]||e]=g[e],I}),I)},ng=function(g,I,e){switch(g){case r.TITLE:return{toComponent:function(){return function(g,I,e){var t,C=((t={key:I})["data-react-helmet"]=!0,t),Q=Bg(e,C);return[s.a.createElement(r.TITLE,Q,I)]}(0,I.title,I.titleAttributes)},toString:function(){return function(g,I,e,t){var C=Fg(e),Q=eg(I);return C?"<"+g+' data-react-helmet="true" '+C+">"+M(Q,t)+"</"+g+">":"<"+g+' data-react-helmet="true">'+M(Q,t)+"</"+g+">"}(g,I.title,I.titleAttributes,e)}};case A:case l:return{toComponent:function(){return Bg(I)},toString:function(){return Fg(I)}};default:return{toComponent:function(){return function(g,I){return I.map((function(I,e){var t,C=((t={key:e})["data-react-helmet"]=!0,t);return Object.keys(I).forEach((function(g){var e=L[g]||g;if(e===b||e===d){var t=I.innerHTML||I.cssText;C.dangerouslySetInnerHTML={__html:t}}else C[e]=I[g]})),s.a.createElement(g,C)}))}(g,I)},toString:function(){return function(g,I,e){return I.reduce((function(I,t){var C=Object.keys(t).filter((function(g){return!(g===b||g===d)})).reduce((function(g,I){var C="undefined"===typeof t[I]?I:I+'="'+M(t[I],e)+'"';return g?g+" "+C:C}),""),Q=t.innerHTML||t.cssText||"",F=-1===W.indexOf(g);return I+"<"+g+' data-react-helmet="true" '+C+(F?"/>":">"+Q+"</"+g+">")}),"")}(g,I,e)}}}},Ug=function(g){var I=g.baseTag,e=g.bodyAttributes,t=g.encode,C=g.htmlAttributes,Q=g.linkTags,F=g.metaTags,B=g.noscriptTags,n=g.scriptTags,U=g.styleTags,s=g.title,i=void 0===s?"":s,c=g.titleAttributes;return{base:ng(r.BASE,I,t),bodyAttributes:ng(A,e,t),htmlAttributes:ng(l,C,t),link:ng(r.LINK,Q,t),meta:ng(r.META,F,t),noscript:ng(r.NOSCRIPT,B,t),script:ng(r.SCRIPT,n,t),style:ng(r.STYLE,U,t),title:ng(r.TITLE,{title:i,titleAttributes:c},t)}},sg=function(g){var I,e;return e=I=function(I){function e(){return X(this,e),H(this,I.apply(this,arguments))}return function(g,I){if("function"!==typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function, not "+typeof I);g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,enumerable:!1,writable:!0,configurable:!0}}),I&&(Object.setPrototypeOf?Object.setPrototypeOf(g,I):g.__proto__=I)}(e,I),e.prototype.shouldComponentUpdate=function(g){return!n()(this.props,g)},e.prototype.mapNestedChildrenToProps=function(g,I){if(!I)return null;switch(g.type){case r.SCRIPT:case r.NOSCRIPT:return{innerHTML:I};case r.STYLE:return{cssText:I}}throw new Error("<"+g.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")},e.prototype.flattenArrayTypeChildren=function(g){var I,e=g.child,t=g.arrayTypeChildren,C=g.newChildProps,Q=g.nestedChildren;return v({},t,((I={})[e.type]=[].concat(t[e.type]||[],[v({},C,this.mapNestedChildrenToProps(e,Q))]),I))},e.prototype.mapObjectTypeChildren=function(g){var I,e,t=g.child,C=g.newProps,Q=g.newChildProps,F=g.nestedChildren;switch(t.type){case r.TITLE:return v({},C,((I={})[t.type]=F,I.titleAttributes=v({},Q),I));case r.BODY:return v({},C,{bodyAttributes:v({},Q)});case r.HTML:return v({},C,{htmlAttributes:v({},Q)})}return v({},C,((e={})[t.type]=v({},Q),e))},e.prototype.mapArrayTypeChildrenToProps=function(g,I){var e=v({},I);return Object.keys(g).forEach((function(I){var t;e=v({},e,((t={})[I]=g[I],t))})),e},e.prototype.warnOnInvalidChildren=function(g,I){return!0},e.prototype.mapChildrenToProps=function(g,I){var e=this,t={};return s.a.Children.forEach(g,(function(g){if(g&&g.props){var C=g.props,Q=C.children,F=function(g){var I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(g).reduce((function(I,e){return I[N[e]||e]=g[e],I}),I)}(k(C,["children"]));switch(e.warnOnInvalidChildren(g,Q),g.type){case r.LINK:case r.META:case r.NOSCRIPT:case r.SCRIPT:case r.STYLE:t=e.flattenArrayTypeChildren({child:g,arrayTypeChildren:t,newChildProps:F,nestedChildren:Q});break;default:I=e.mapObjectTypeChildren({child:g,newProps:I,newChildProps:F,nestedChildren:Q})}}})),I=this.mapArrayTypeChildrenToProps(t,I)},e.prototype.render=function(){var I=this.props,e=I.children,t=k(I,["children"]),C=v({},t);return e&&(C=this.mapChildrenToProps(e,C)),s.a.createElement(g,C)},J(e,null,[{key:"canUseDOM",set:function(I){g.canUseDOM=I}}]),e}(s.a.Component),I.propTypes={base:C.a.object,bodyAttributes:C.a.object,children:C.a.oneOfType([C.a.arrayOf(C.a.node),C.a.node]),defaultTitle:C.a.string,defer:C.a.bool,encodeSpecialCharacters:C.a.bool,htmlAttributes:C.a.object,link:C.a.arrayOf(C.a.object),meta:C.a.arrayOf(C.a.object),noscript:C.a.arrayOf(C.a.object),onChangeClientState:C.a.func,script:C.a.arrayOf(C.a.object),style:C.a.arrayOf(C.a.object),title:C.a.string,titleAttributes:C.a.object,titleTemplate:C.a.string},I.defaultProps={defer:!0,encodeSpecialCharacters:!0},I.peek=g.peek,I.rewind=function(){var I=g.rewind();return I||(I=Ug({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}})),I},e}(F()((function(g){return{baseTag:z([u,G],g),bodyAttributes:T(A,g),defer:K(g,h),encode:K(g,D),htmlAttributes:T(l,g),linkTags:O(r.LINK,[R,u],g),metaTags:O(r.META,[m,o,y,x,Z],g),noscriptTags:O(r.NOSCRIPT,[b],g),onChangeClientState:w(g),scriptTags:O(r.SCRIPT,[S,b],g),styleTags:O(r.STYLE,[d],g),title:Y(g),titleAttributes:T(a,g)}}),(function(g){gg&&q(gg),g.defer?gg=_((function(){Ig(g,(function(){gg=null}))})):(Ig(g),gg=null)}),Ug)((function(){return null})));sg.renderStatic=sg.rewind}).call(this,e(67))},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M12 7V3H2v18h20V7H12zM6 19H4v-2h2v2zm0-4H4v-2h2v2zm0-4H4V9h2v2zm0-4H4V5h2v2zm4 12H8v-2h2v2zm0-4H8v-2h2v2zm0-4H8V9h2v2zm0-4H8V5h2v2zm10 12h-8v-2h2v-2h-2v-2h2v-2h-2V9h8v10zm-2-8h-2v2h2v-2zm0 4h-2v2h2v-2z"}),"Business");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement(C.default.Fragment,null,C.default.createElement("path",{d:"M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zM7 9c0-2.76 2.24-5 5-5s5 2.24 5 5c0 2.88-2.88 7.19-5 9.88C9.92 16.21 7 11.85 7 9z"}),C.default.createElement("circle",{cx:"12",cy:"9",r:"2.5"})),"LocationOnOutlined");I.default=Q},function(g,I,e){"use strict";e.d(I,"a",(function(){return C}));var t=e(2);function C(g,I){var e,C=null!==(e=g.pane)&&void 0!==e?e:I.pane;return C?Object(t.a)(Object(t.a)({},g),{},{pane:C}):g}},function(g,I,e){"use strict";var t=e(1663),C=t.default,Q=t.DraggableCore;g.exports=C,g.exports.default=C,g.exports.DraggableCore=Q},function(g,I,e){"use strict";e.d(I,"a",(function(){return V}));var t=e(4),C=e.n(t),Q=e(0),F=e.n(Q),B=e(186),n=function(){var g={},I=g,e=function(){return I!==g?I:I="undefined"!==typeof window?window.URL||window.webkitURL:g};return e.reset=function(){return I=g},e}(),U=function(){var g=!1,I=function(){return g||(g="undefined"!==typeof window&&"function"===typeof window.Blob&&"function"===typeof n().createObjectURL&&function(){try{return new window.Blob,!0}catch(g){return!1}}())};return I.reset=function(){return g=!1},I}(),s=function(){return function(){var g=null,I=null;return function(e){return e===I?g:g=(I=e)?function(g){return U()?n().createObjectURL(new window.Blob([g],{type:"text/css"})):null}(e):null}}()},i=e(265),c={hasSourceMap:!i.b,isCompressed:!0,isMinified:i.b,isPrefixed:!0},A=function(g,I){return"boolean"===typeof g[I]?g[I]:c[I]},l=e(559),a=e.n(l),r=e(560),o=e.n(r),d=function(g,I){var e=I.isCompressed,t=I.isPrefixed;return new o.a({compress:e,global:!1,keyframe:!1,prefix:t})("",g)},u=function(g,I){return I.isMinified?d(g,I):a()(d(g,I),i.a)},y=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g};var b=function(g){var I=g.node;return(0,g.relocateNode)(I)},Z=function(g){var I=g.node;return(0,g.returnNode)(I),null},m=function(g,I){var e=g.getStyleForState,t=g.node,C=g.relocateNode,Q=g.props,F=g.setState,B=I[0];C(t),Q.children!==B.children&&F(e)},x=function(g){var I=g.node;return(0,g.returnNode)(I)},R=function(g){var I=g.props;return{style:u(I.children,{isCompressed:A(I,"isCompressed"),isMinified:A(I,"isMinified"),isPrefixed:A(I,"isPrefixed")})}},S=function(g,I){var e=I[0];"undefined"!==typeof document&&e&&(g.originalParent=e.parentNode,g.originalParent.removeChild(e),document.head.appendChild(e))},G=function(g,I){var e=I[0];if("undefined"!==typeof document&&e)try{document.head.removeChild(e),g.originalParent.appendChild(e)}catch(t){}finally{g.node=null,g.originalParent=null}},L=function(g){function I(e){!function(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}(this,I);var t=function(g,I){if(!g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!I||"object"!==typeof I&&"function"!==typeof I?g:I}(this,g.call(this,e));return t.componentDidMount=Object(B.createMethod)(t,b),t.componentDidUpdate=Object(B.createMethod)(t,m),t[i.c?"getSnapshotBeforeUpdate":"componentWillUpdate"]=Object(B.createMethod)(t,Z),t.componentWillUnmount=Object(B.createMethod)(t,x),t.linkHref=null,t.node=null,t.originalParent=null,t.getCachedLinkHref=s(),t.getStyleForState=Object(B.createMethod)(t,R),t.relocateNode=Object(B.createMethod)(t,S),t.returnNode=Object(B.createMethod)(t,G),t.state=R({props:e}),t}return function(g,I){if("function"!==typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function, not "+typeof I);g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,enumerable:!1,writable:!0,configurable:!0}}),I&&(Object.setPrototypeOf?Object.setPrototypeOf(g,I):g.__proto__=I)}(I,g),I.prototype.render=function(){var g=this.props,I=(g.children,g.hasSourceMap,g.isCompressed,g.isPrefixed,function(g,I){var e={};for(var t in g)I.indexOf(t)>=0||Object.prototype.hasOwnProperty.call(g,t)&&(e[t]=g[t]);return e}(g,["children","hasSourceMap","isCompressed","isPrefixed"])),e=this.state.style;if(A(this.props,"hasSourceMap")){if(U())return F.a.createElement("link",y({},I,{href:this.getCachedLinkHref(e),ref:Object(B.createElementRef)(this,"node"),rel:"stylesheet"}));console.error("To support sourcemaps for react-style-tag you need Blob support, and the browser you are using does not currently support it. You should include a polyfill prior to the rendering of this component.")}return F.a.createElement("style",y({ref:Object(B.createElementRef)(this,"node")},I),e)},I}(Q.PureComponent);L.propTypes={children:C.a.string.isRequired,hasSourceMap:C.a.bool,id:C.a.string,isCompressed:C.a.bool,isMinified:C.a.bool,isPrefixed:C.a.bool},L.setGlobalOptions=function(g){return Object.keys(g).forEach((function(I){return c.hasOwnProperty(I)&&"boolean"===typeof g[I]&&(c[I]=g[I])}))};var V=L},function(g,I,e){"use strict";e.d(I,"a",(function(){return X}));var t=e(0),C=e.n(t);function Q(g){return(Q="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"===typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g})(g)}function F(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}function B(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}function n(g,I){return!I||"object"!==Q(I)&&"function"!==typeof I?function(g){if(void 0===g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return g}(g):I}function U(g){return(U=Object.setPrototypeOf?Object.getPrototypeOf:function(g){return g.__proto__||Object.getPrototypeOf(g)})(g)}function s(g,I){return(s=Object.setPrototypeOf||function(g,I){return g.__proto__=I,g})(g,I)}var i=function(g){function I(){return F(this,I),n(this,U(I).apply(this,arguments))}var e,t,C;return function(g,I){if("function"!==typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function");g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,writable:!0,configurable:!0}}),I&&s(g,I)}(I,g),e=I,(t=[{key:"componentDidMount",value:function(){!function(g,I){if(!document.head.querySelector("#"+g)){var e=document.createElement("style");e.textContent=I,e.type="text/css",e.id=g,document.head.appendChild(e)}}(this.props.name,this.props.css)}},{key:"componentWillUnmount",value:function(){var g=document.getElementById(this.props.name);g.parentNode.removeChild(g)}},{key:"render",value:function(){return null}}])&&B(e.prototype,t),C&&B(e,C),I}(t.Component),c=function(g){var I=g.imageBackgroundColor;return"\n  body {\n    overflow: hidden;\n  }\n\n  .__react_modal_image__modal_container {\n    position: fixed;\n    z-index: 5000;\n    left: 0;\n    top: 0;\n    width: 100%;\n    height: 100%;\n    background-color: rgba(0, 0, 0, 0.8);\n    touch-action: none;\n    overflow: hidden;\n  }\n\n  .__react_modal_image__modal_content {\n    position: relative;\n    height: 100%;\n    width: 100%;\n  }\n\n  .__react_modal_image__modal_content img, \n  .__react_modal_image__modal_content svg {\n    position: absolute;\n    top: 50%;\n    left: 50%;\n    transform: translate3d(-50%, -50%, 0);\n    -webkit-transform: translate3d(-50%, -50%, 0);\n    -ms-transform: translate3d(-50%, -50%, 0);\n    overflow: hidden;\n  }\n\n  .__react_modal_image__medium_img {\n    max-width: 98%;\n    max-height: 98%;\n    background-color: ".concat(I,";\n  }\n\n  .__react_modal_image__large_img {\n    cursor: move;\n    background-color: ").concat(I,"\n  }\n\n  .__react_modal_image__icon_menu a {\n    display: inline-block;\n    font-size: 40px;\n    cursor: pointer;\n    line-height: 40px;\n    box-sizing: border-box;\n    border: none;\n    padding: 0px 5px 0px 5px;\n    margin-left: 10px;\n    color: white;\n    background-color: rgba(0, 0, 0, 0);\n  }\n\n  .__react_modal_image__icon_menu {\n    display: inline-block;\n    float: right;\n  }\n\n  .__react_modal_image__caption {\n    display: inline-block;\n    color: white;\n    font-size: 120%;\n    padding: 10px;\n    margin: 0;\n  }\n\n  .__react_modal_image__header {\n    position: absolute;\n    top: 0;\n    width: 100%;\n    background-color: rgba(0, 0, 0, 0.7);\n    overflow: hidden;\n  }\n")},A=function(){return C.a.createElement("svg",{fill:"#ffffff",height:"24",viewBox:"0 0 24 24",width:"24",xmlns:"http://www.w3.org/2000/svg"},C.a.createElement("path",{d:"M0 0h24v24H0z",fill:"none"}),C.a.createElement("path",{d:"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z"}))},l=function(){return C.a.createElement("svg",{fill:"#ffffff",height:"24",viewBox:"0 0 24 24",width:"24",xmlns:"http://www.w3.org/2000/svg"},C.a.createElement("path",{d:"M0 0h24v24H0z",fill:"none"}),C.a.createElement("path",{d:"M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z"}))},a=function(){return C.a.createElement("svg",{fill:"#ffffff",height:"24",viewBox:"0 0 24 24",width:"24",xmlns:"http://www.w3.org/2000/svg"},C.a.createElement("path",{d:"M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z"}),C.a.createElement("path",{d:"M0 0h24v24H0z",fill:"none"}))},r=function(){return C.a.createElement("svg",{fill:"#ffffff",height:"24",viewBox:"0 0 24 24",width:"24",xmlns:"http://www.w3.org/2000/svg"},C.a.createElement("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),C.a.createElement("path",{d:"M0 0h24v24H0z",fill:"none"}))},o=function(){return C.a.createElement("svg",{fill:"#ffffff",height:"48",viewBox:"0 0 24 24",width:"48",xmlns:"http://www.w3.org/2000/svg"},C.a.createElement("path",{d:"M6 2v6h.01L6 8.01 10 12l-4 4 .01.01H6V22h12v-5.99h-.01L18 16l-4-4 4-3.99-.01-.01H18V2H6zm10 14.5V20H8v-3.5l4-4 4 4zm-4-5l-4-4V4h8v3.5l-4 4z"}),C.a.createElement("path",{d:"M0 0h24v24H0V0z",fill:"none"}))},d=function(){return C.a.createElement("svg",{fill:"#ffffff",width:"24",height:"24",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},C.a.createElement("path",{fill:"none",d:"M0 0h24v24H0V0zm0 0h24v24H0V0z"}),C.a.createElement("path",{d:"M7.47 21.49C4.2 19.93 1.86 16.76 1.5 13H0c.51 6.16 5.66 11 11.95 11 .23 0 .44-.02.66-.03L8.8 20.15l-1.33 1.34zM12.05 0c-.23 0-.44.02-.66.04l3.81 3.81 1.33-1.33C19.8 4.07 22.14 7.24 22.5 11H24c-.51-6.16-5.66-11-11.95-11zM16 14h2V8c0-1.11-.9-2-2-2h-6v2h6v6zm-8 2V4H6v2H4v2h2v8c0 1.1.89 2 2 2h8v2h2v-2h2v-2H8z"}))},u=function(g){var I=g.image,e=g.alt,t=g.zoomed,Q=g.toggleZoom,F=g.toggleRotate,B=g.onClose,n=g.enableDownload,U=g.enableZoom,s=g.enableRotate;return C.a.createElement("div",{className:"__react_modal_image__header"},C.a.createElement("span",{className:"__react_modal_image__icon_menu"},n&&C.a.createElement("a",{href:I,download:!0},C.a.createElement(a,null)),U&&C.a.createElement("a",{onClick:Q},t?C.a.createElement(l,null):C.a.createElement(A,null)),s&&C.a.createElement("a",{onClick:F},C.a.createElement(d,null)),C.a.createElement("a",{onClick:B},C.a.createElement(r,null))),e&&C.a.createElement("span",{className:"__react_modal_image__caption"},e))};function y(g){return(y="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"===typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g})(g)}function b(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}function Z(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}function m(g,I){return!I||"object"!==y(I)&&"function"!==typeof I?R(g):I}function x(g){return(x=Object.setPrototypeOf?Object.getPrototypeOf:function(g){return g.__proto__||Object.getPrototypeOf(g)})(g)}function R(g){if(void 0===g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return g}function S(g,I){return(S=Object.setPrototypeOf||function(g,I){return g.__proto__=I,g})(g,I)}function G(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}var L=function(g){function I(){var g,e;b(this,I);for(var t=arguments.length,C=new Array(t),Q=0;Q<t;Q++)C[Q]=arguments[Q];return G(R(e=m(this,(g=x(I)).call.apply(g,[this].concat(C)))),"state",{loading:!0}),G(R(e),"handleOnLoad",(function(){e.setState({loading:!1})})),G(R(e),"handleOnContextMenu",(function(g){!e.props.contextMenu&&g.preventDefault()})),e}var e,t,Q;return function(g,I){if("function"!==typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function");g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,writable:!0,configurable:!0}}),I&&S(g,I)}(I,g),e=I,(t=[{key:"render",value:function(){var g=this.props,I=g.id,e=g.className,t=g.src,Q=g.style,F=g.handleDoubleClick;return C.a.createElement("div",null,this.state.loading&&C.a.createElement(o,null),C.a.createElement("img",{id:I,className:e,src:t,style:Q,onLoad:this.handleOnLoad,onDoubleClick:F,onContextMenu:this.handleOnContextMenu}))}}])&&Z(e.prototype,t),Q&&Z(e,Q),I}(t.Component);function V(g){return(V="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"===typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g})(g)}function h(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}function D(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}function p(g,I){return!I||"object"!==V(I)&&"function"!==typeof I?N(g):I}function E(g){return(E=Object.setPrototypeOf?Object.getPrototypeOf:function(g){return g.__proto__||Object.getPrototypeOf(g)})(g)}function N(g){if(void 0===g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return g}function W(g,I){return(W=Object.setPrototypeOf||function(g,I){return g.__proto__=I,g})(g,I)}function f(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}var X=function(g){function I(){var g,e;h(this,I);for(var t=arguments.length,C=new Array(t),Q=0;Q<t;Q++)C[Q]=arguments[Q];return f(N(e=p(this,(g=E(I)).call.apply(g,[this].concat(C)))),"state",{move:{x:0,y:0},moveStart:void 0,zoomed:!1,rotationDeg:0}),f(N(e),"handleKeyDown",(function(g){27!==g.keyCode&&13!==g.keyCode||e.props.onClose()})),f(N(e),"getCoordinatesIfOverImg",(function(g){var I=g.changedTouches?g.changedTouches[0]:g;if("react-modal-image-img"===I.target.id){var t=e.contentEl.getBoundingClientRect();return{x:I.clientX-t.left,y:I.clientY-t.top}}})),f(N(e),"handleMouseDownOrTouchStart",(function(g){if(g.preventDefault(),!(g.touches&&g.touches.length>1)){var I=e.getCoordinatesIfOverImg(g);I||e.props.onClose(),e.state.zoomed&&e.setState((function(g){return{moveStart:{x:I.x-g.move.x,y:I.y-g.move.y}}}))}})),f(N(e),"handleMouseMoveOrTouchMove",(function(g){if(g.preventDefault(),e.state.zoomed&&e.state.moveStart&&!(g.touches&&g.touches.length>1)){var I=e.getCoordinatesIfOverImg(g);I&&e.setState((function(g){return{move:{x:I.x-g.moveStart.x,y:I.y-g.moveStart.y}}}))}})),f(N(e),"handleMouseUpOrTouchEnd",(function(g){e.setState({moveStart:void 0})})),f(N(e),"toggleZoom",(function(g){g.preventDefault(),e.setState((function(g){return{zoomed:!g.zoomed,move:g.zoomed?{x:0,y:0}:g.move}}))})),f(N(e),"toggleRotate",(function(g){g.preventDefault(),360!==e.state.rotationDeg?e.setState((function(g){return{rotationDeg:g.rotationDeg+=90}})):e.setState({rotationDeg:90})})),e}var e,t,Q;return function(g,I){if("function"!==typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function");g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,writable:!0,configurable:!0}}),I&&W(g,I)}(I,g),e=I,(t=[{key:"componentDidMount",value:function(){document.addEventListener("keydown",this.handleKeyDown,!1)}},{key:"componentWillUnmount",value:function(){document.removeEventListener("keydown",this.handleKeyDown,!1)}},{key:"render",value:function(){var g=this,I=this.props,e=I.medium,t=I.large,Q=I.alt,F=I.onClose,B=I.hideDownload,n=I.hideZoom,U=I.showRotate,s=I.imageBackgroundColor,A=void 0===s?"black":s,l=this.state,a=l.move,r=l.zoomed,o=l.rotationDeg;return C.a.createElement("div",null,C.a.createElement(i,{name:"__react_modal_image__lightbox",css:c({imageBackgroundColor:A})}),C.a.createElement("div",{className:"__react_modal_image__modal_container"},C.a.createElement("div",{className:"__react_modal_image__modal_content",onMouseDown:this.handleMouseDownOrTouchStart,onMouseUp:this.handleMouseUpOrTouchEnd,onMouseMove:this.handleMouseMoveOrTouchMove,onTouchStart:this.handleMouseDownOrTouchStart,onTouchEnd:this.handleMouseUpOrTouchEnd,onTouchMove:this.handleMouseMoveOrTouchMove,ref:function(I){g.contentEl=I}},r&&C.a.createElement(L,{id:"react-modal-image-img",className:"__react_modal_image__large_img",src:t||e,style:{transform:"translate3d(-50%, -50%, 0) translate3d(".concat(a.x,"px, ").concat(a.y,"px, 0) rotate(").concat(o,"deg)"),WebkitTransform:"translate3d(-50%, -50%, 0) translate3d(".concat(a.x,"px, ").concat(a.y,"px, 0) rotate(").concat(o,"deg)"),MsTransform:"translate3d(-50%, -50%, 0) translate3d(".concat(a.x,"px, ").concat(a.y,"px, 0) rotate(").concat(o,"deg)")},handleDoubleClick:this.toggleZoom}),!r&&C.a.createElement(L,{id:"react-modal-image-img",className:"__react_modal_image__medium_img",src:e||t,handleDoubleClick:this.toggleZoom,contextMenu:!e,style:{transform:"translate3d(-50%, -50%, 0) rotate(".concat(o,"deg)"),WebkitTransform:"translate3d(-50%, -50%, 0) rotate(".concat(o,"deg)"),MsTransform:"translate3d(-50%, -50%, 0) rotate(".concat(o,"deg)")}})),C.a.createElement(u,{image:t||e,alt:Q,zoomed:r,toggleZoom:this.toggleZoom,toggleRotate:this.toggleRotate,onClose:F,enableDownload:!B,enableZoom:!n,enableRotate:!!U})))}}])&&D(e.prototype,t),Q&&D(e,Q),I}(t.Component);function J(g){return(J="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"===typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g})(g)}function v(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}function k(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}function H(g,I){return!I||"object"!==J(I)&&"function"!==typeof I?Y(g):I}function M(g){return(M=Object.setPrototypeOf?Object.getPrototypeOf:function(g){return g.__proto__||Object.getPrototypeOf(g)})(g)}function Y(g){if(void 0===g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return g}function w(g,I){return(w=Object.setPrototypeOf||function(g,I){return g.__proto__=I,g})(g,I)}function T(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}t.Component},function(g,I,e){"use strict";e.d(I,"a",(function(){return C}));var t=e(0);function C(g,I){return t.isValidElement(g)&&-1!==I.indexOf(g.type.muiName)}},function(g,I,e){"use strict";var t=e(0),C=e.n(t);I.a=C.a.createContext(null)},function(g,I,e){g.exports=function(g){var I={};function e(t){if(I[t])return I[t].exports;var C=I[t]={exports:{},id:t,loaded:!1};return g[t].call(C.exports,C,C.exports,e),C.loaded=!0,C.exports}return e.m=g,e.c=I,e.p="",e(0)}([function(g,I,e){g.exports=e(1)},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0});var t,C=e(2),Q=(t=C)&&t.__esModule?t:{default:t};I.default=Q.default,g.exports=I.default},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0});var t=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g};function C(g){return g&&g.__esModule?g:{default:g}}I.default=U;var Q=e(3),F=C(e(4)),B=e(14),n=C(e(15));function U(g){var I=g.activeClassName,e=void 0===I?"":I,C=g.activeIndex,F=void 0===C?-1:C,U=g.activeStyle,s=g.autoEscape,i=g.caseSensitive,c=void 0!==i&&i,A=g.className,l=g.findChunks,a=g.highlightClassName,r=void 0===a?"":a,o=g.highlightStyle,d=void 0===o?{}:o,u=g.highlightTag,y=void 0===u?"mark":u,b=g.sanitize,Z=g.searchWords,m=g.textToHighlight,x=g.unhighlightClassName,R=void 0===x?"":x,S=g.unhighlightStyle,G=function(g,I){var e={};for(var t in g)I.indexOf(t)>=0||Object.prototype.hasOwnProperty.call(g,t)&&(e[t]=g[t]);return e}(g,["activeClassName","activeIndex","activeStyle","autoEscape","caseSensitive","className","findChunks","highlightClassName","highlightStyle","highlightTag","sanitize","searchWords","textToHighlight","unhighlightClassName","unhighlightStyle"]),L=(0,Q.findAll)({autoEscape:s,caseSensitive:c,findChunks:l,sanitize:b,searchWords:Z,textToHighlight:m}),V=y,h=-1,D="",p=void 0,E=(0,n.default)((function(g){var I={};for(var e in g)I[e.toLowerCase()]=g[e];return I}));return(0,B.createElement)("span",t({className:A},G,{children:L.map((function(g,I){var t=m.substr(g.start,g.end-g.start);if(g.highlight){h++;var C=void 0;C="object"===typeof r?c?r[t]:(r=E(r))[t.toLowerCase()]:r;var Q=h===+F;D=C+" "+(Q?e:""),p=!0===Q&&null!=U?Object.assign({},d,U):d;var n={children:t,className:D,key:I,style:p};return"string"!==typeof V&&(n.highlightIndex=h),(0,B.createElement)(V,n)}return(0,B.createElement)("span",{children:t,className:R,key:I,style:S})}))}))}U.propTypes={activeClassName:F.default.string,activeIndex:F.default.number,activeStyle:F.default.object,autoEscape:F.default.bool,className:F.default.string,findChunks:F.default.func,highlightClassName:F.default.oneOfType([F.default.object,F.default.string]),highlightStyle:F.default.object,highlightTag:F.default.oneOfType([F.default.node,F.default.func,F.default.string]),sanitize:F.default.func,searchWords:F.default.arrayOf(F.default.oneOfType([F.default.string,F.default.instanceOf(RegExp)])).isRequired,textToHighlight:F.default.string.isRequired,unhighlightClassName:F.default.string,unhighlightStyle:F.default.object},g.exports=I.default},function(g,I){g.exports=function(g){var I={};function e(t){if(I[t])return I[t].exports;var C=I[t]={exports:{},id:t,loaded:!1};return g[t].call(C.exports,C,C.exports,e),C.loaded=!0,C.exports}return e.m=g,e.c=I,e.p="",e(0)}([function(g,I,e){g.exports=e(1)},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0});var t=e(2);Object.defineProperty(I,"combineChunks",{enumerable:!0,get:function(){return t.combineChunks}}),Object.defineProperty(I,"fillInChunks",{enumerable:!0,get:function(){return t.fillInChunks}}),Object.defineProperty(I,"findAll",{enumerable:!0,get:function(){return t.findAll}}),Object.defineProperty(I,"findChunks",{enumerable:!0,get:function(){return t.findChunks}})},function(g,I){"use strict";Object.defineProperty(I,"__esModule",{value:!0});I.findAll=function(g){var I=g.autoEscape,Q=g.caseSensitive,F=void 0!==Q&&Q,B=g.findChunks,n=void 0===B?t:B,U=g.sanitize,s=g.searchWords,i=g.textToHighlight;return C({chunksToHighlight:e({chunks:n({autoEscape:I,caseSensitive:F,sanitize:U,searchWords:s,textToHighlight:i})}),totalLength:i?i.length:0})};var e=I.combineChunks=function(g){var I=g.chunks;return I=I.sort((function(g,I){return g.start-I.start})).reduce((function(g,I){if(0===g.length)return[I];var e=g.pop();if(I.start<=e.end){var t=Math.max(e.end,I.end);g.push({start:e.start,end:t})}else g.push(e,I);return g}),[])},t=function(g){var I=g.autoEscape,e=g.caseSensitive,t=g.sanitize,C=void 0===t?Q:t,F=g.searchWords,B=g.textToHighlight;return B=C(B),F.filter((function(g){return g})).reduce((function(g,t){t=C(t),I&&(t=t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"));for(var Q=new RegExp(t,e?"g":"gi"),F=void 0;F=Q.exec(B);){var n=F.index,U=Q.lastIndex;U>n&&g.push({start:n,end:U}),F.index==Q.lastIndex&&Q.lastIndex++}return g}),[])};I.findChunks=t;var C=I.fillInChunks=function(g){var I=g.chunksToHighlight,e=g.totalLength,t=[],C=function(g,I,e){I-g>0&&t.push({start:g,end:I,highlight:e})};if(0===I.length)C(0,e,!1);else{var Q=0;I.forEach((function(g){C(Q,g.start,!1),C(g.start,g.end,!0),Q=g.end})),C(Q,e,!1)}return t};function Q(g){return g}}])},function(g,I,e){(function(I){if("production"!==I.env.NODE_ENV){var t="function"===typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103;g.exports=e(6)((function(g){return"object"===typeof g&&null!==g&&g.$$typeof===t}),!0)}else g.exports=e(13)()}).call(I,e(5))},function(g,I){var e,t,C=g.exports={};function Q(){throw new Error("setTimeout has not been defined")}function F(){throw new Error("clearTimeout has not been defined")}function B(g){if(e===setTimeout)return setTimeout(g,0);if((e===Q||!e)&&setTimeout)return e=setTimeout,setTimeout(g,0);try{return e(g,0)}catch(I){try{return e.call(null,g,0)}catch(I){return e.call(this,g,0)}}}!function(){try{e="function"===typeof setTimeout?setTimeout:Q}catch(g){e=Q}try{t="function"===typeof clearTimeout?clearTimeout:F}catch(g){t=F}}();var n,U=[],s=!1,i=-1;function c(){s&&n&&(s=!1,n.length?U=n.concat(U):i=-1,U.length&&A())}function A(){if(!s){var g=B(c);s=!0;for(var I=U.length;I;){for(n=U,U=[];++i<I;)n&&n[i].run();i=-1,I=U.length}n=null,s=!1,function(g){if(t===clearTimeout)return clearTimeout(g);if((t===F||!t)&&clearTimeout)return t=clearTimeout,clearTimeout(g);try{t(g)}catch(I){try{return t.call(null,g)}catch(I){return t.call(this,g)}}}(g)}}function l(g,I){this.fun=g,this.array=I}function a(){}C.nextTick=function(g){var I=new Array(arguments.length-1);if(arguments.length>1)for(var e=1;e<arguments.length;e++)I[e-1]=arguments[e];U.push(new l(g,I)),1!==U.length||s||B(A)},l.prototype.run=function(){this.fun.apply(null,this.array)},C.title="browser",C.browser=!0,C.env={},C.argv=[],C.version="",C.versions={},C.on=a,C.addListener=a,C.once=a,C.off=a,C.removeListener=a,C.removeAllListeners=a,C.emit=a,C.prependListener=a,C.prependOnceListener=a,C.listeners=function(g){return[]},C.binding=function(g){throw new Error("process.binding is not supported")},C.cwd=function(){return"/"},C.chdir=function(g){throw new Error("process.chdir is not supported")},C.umask=function(){return 0}},function(g,I,e){(function(I){"use strict";var t=e(7),C=e(8),Q=e(9),F=e(10),B=e(11),n=e(12);g.exports=function(g,e){var U="function"===typeof Symbol&&Symbol.iterator;var s={array:l("array"),bool:l("boolean"),func:l("function"),number:l("number"),object:l("object"),string:l("string"),symbol:l("symbol"),any:A(t.thatReturnsNull),arrayOf:function(g){return A((function(I,e,t,C,Q){if("function"!==typeof g)return new c("Property `"+Q+"` of component `"+t+"` has invalid PropType notation inside arrayOf.");var F=I[e];if(!Array.isArray(F))return new c("Invalid "+C+" `"+Q+"` of type `"+r(F)+"` supplied to `"+t+"`, expected an array.");for(var n=0;n<F.length;n++){var U=g(F,n,t,C,Q+"["+n+"]",B);if(U instanceof Error)return U}return null}))},element:A((function(I,e,t,C,Q){var F=I[e];return g(F)?null:new c("Invalid "+C+" `"+Q+"` of type `"+r(F)+"` supplied to `"+t+"`, expected a single ReactElement.")})),instanceOf:function(g){return A((function(I,e,t,C,Q){if(!(I[e]instanceof g)){var F=g.name||"<<anonymous>>";return new c("Invalid "+C+" `"+Q+"` of type `"+function(g){if(!g.constructor||!g.constructor.name)return"<<anonymous>>";return g.constructor.name}(I[e])+"` supplied to `"+t+"`, expected instance of `"+F+"`.")}return null}))},node:A((function(g,I,e,t,C){return a(g[I])?null:new c("Invalid "+t+" `"+C+"` supplied to `"+e+"`, expected a ReactNode.")})),objectOf:function(g){return A((function(I,e,t,C,Q){if("function"!==typeof g)return new c("Property `"+Q+"` of component `"+t+"` has invalid PropType notation inside objectOf.");var F=I[e],n=r(F);if("object"!==n)return new c("Invalid "+C+" `"+Q+"` of type `"+n+"` supplied to `"+t+"`, expected an object.");for(var U in F)if(F.hasOwnProperty(U)){var s=g(F,U,t,C,Q+"."+U,B);if(s instanceof Error)return s}return null}))},oneOf:function(g){if(!Array.isArray(g))return"production"!==I.env.NODE_ENV&&Q(!1,"Invalid argument supplied to oneOf, expected an instance of array."),t.thatReturnsNull;return A((function(I,e,t,C,Q){for(var F=I[e],B=0;B<g.length;B++)if(i(F,g[B]))return null;return new c("Invalid "+C+" `"+Q+"` of value `"+F+"` supplied to `"+t+"`, expected one of "+JSON.stringify(g)+".")}))},oneOfType:function(g){if(!Array.isArray(g))return"production"!==I.env.NODE_ENV&&Q(!1,"Invalid argument supplied to oneOfType, expected an instance of array."),t.thatReturnsNull;for(var e=0;e<g.length;e++){var C=g[e];if("function"!==typeof C)return Q(!1,"Invalid argument supplied to oneOfType. Expected an array of check functions, but received %s at index %s.",d(C),e),t.thatReturnsNull}return A((function(I,e,t,C,Q){for(var F=0;F<g.length;F++){if(null==(0,g[F])(I,e,t,C,Q,B))return null}return new c("Invalid "+C+" `"+Q+"` supplied to `"+t+"`.")}))},shape:function(g){return A((function(I,e,t,C,Q){var F=I[e],n=r(F);if("object"!==n)return new c("Invalid "+C+" `"+Q+"` of type `"+n+"` supplied to `"+t+"`, expected `object`.");for(var U in g){var s=g[U];if(s){var i=s(F,U,t,C,Q+"."+U,B);if(i)return i}}return null}))},exact:function(g){return A((function(I,e,t,C,Q){var n=I[e],U=r(n);if("object"!==U)return new c("Invalid "+C+" `"+Q+"` of type `"+U+"` supplied to `"+t+"`, expected `object`.");var s=F({},I[e],g);for(var i in s){var A=g[i];if(!A)return new c("Invalid "+C+" `"+Q+"` key `"+i+"` supplied to `"+t+"`.\nBad object: "+JSON.stringify(I[e],null,"  ")+"\nValid keys: "+JSON.stringify(Object.keys(g),null,"  "));var l=A(n,i,t,C,Q+"."+i,B);if(l)return l}return null}))}};function i(g,I){return g===I?0!==g||1/g===1/I:g!==g&&I!==I}function c(g){this.message=g,this.stack=""}function A(g){if("production"!==I.env.NODE_ENV)var t={},F=0;function n(n,U,s,i,A,l,a){if(i=i||"<<anonymous>>",l=l||s,a!==B)if(e)C(!1,"Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types");else if("production"!==I.env.NODE_ENV&&"undefined"!==typeof console){var r=i+":"+s;!t[r]&&F<3&&(Q(!1,"You are manually calling a React.PropTypes validation function for the `%s` prop on `%s`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details.",l,i),t[r]=!0,F++)}return null==U[s]?n?null===U[s]?new c("The "+A+" `"+l+"` is marked as required in `"+i+"`, but its value is `null`."):new c("The "+A+" `"+l+"` is marked as required in `"+i+"`, but its value is `undefined`."):null:g(U,s,i,A,l)}var U=n.bind(null,!1);return U.isRequired=n.bind(null,!0),U}function l(g){return A((function(I,e,t,C,Q,F){var B=I[e];return r(B)!==g?new c("Invalid "+C+" `"+Q+"` of type `"+o(B)+"` supplied to `"+t+"`, expected `"+g+"`."):null}))}function a(I){switch(typeof I){case"number":case"string":case"undefined":return!0;case"boolean":return!I;case"object":if(Array.isArray(I))return I.every(a);if(null===I||g(I))return!0;var e=function(g){var I=g&&(U&&g[U]||g["@@iterator"]);if("function"===typeof I)return I}(I);if(!e)return!1;var t,C=e.call(I);if(e!==I.entries){for(;!(t=C.next()).done;)if(!a(t.value))return!1}else for(;!(t=C.next()).done;){var Q=t.value;if(Q&&!a(Q[1]))return!1}return!0;default:return!1}}function r(g){var I=typeof g;return Array.isArray(g)?"array":g instanceof RegExp?"object":function(g,I){return"symbol"===g||("Symbol"===I["@@toStringTag"]||"function"===typeof Symbol&&I instanceof Symbol)}(I,g)?"symbol":I}function o(g){if("undefined"===typeof g||null===g)return""+g;var I=r(g);if("object"===I){if(g instanceof Date)return"date";if(g instanceof RegExp)return"regexp"}return I}function d(g){var I=o(g);switch(I){case"array":case"object":return"an "+I;case"boolean":case"date":case"regexp":return"a "+I;default:return I}}return c.prototype=Error.prototype,s.checkPropTypes=n,s.PropTypes=s,s}}).call(I,e(5))},function(g,I){"use strict";function e(g){return function(){return g}}var t=function(){};t.thatReturns=e,t.thatReturnsFalse=e(!1),t.thatReturnsTrue=e(!0),t.thatReturnsNull=e(null),t.thatReturnsThis=function(){return this},t.thatReturnsArgument=function(g){return g},g.exports=t},function(g,I,e){(function(I){"use strict";var e=function(g){};"production"!==I.env.NODE_ENV&&(e=function(g){if(void 0===g)throw new Error("invariant requires an error message argument")}),g.exports=function(g,I,t,C,Q,F,B,n){if(e(I),!g){var U;if(void 0===I)U=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var s=[t,C,Q,F,B,n],i=0;(U=new Error(I.replace(/%s/g,(function(){return s[i++]})))).name="Invariant Violation"}throw U.framesToPop=1,U}}}).call(I,e(5))},function(g,I,e){(function(I){"use strict";var t=e(7);if("production"!==I.env.NODE_ENV){var C=function(g){for(var I=arguments.length,e=Array(I>1?I-1:0),t=1;t<I;t++)e[t-1]=arguments[t];var C=0,Q="Warning: "+g.replace(/%s/g,(function(){return e[C++]}));"undefined"!==typeof console&&console.error(Q);try{throw new Error(Q)}catch(F){}};t=function(g,I){if(void 0===I)throw new Error("`warning(condition, format, ...args)` requires a warning message argument");if(0!==I.indexOf("Failed Composite propType: ")&&!g){for(var e=arguments.length,t=Array(e>2?e-2:0),Q=2;Q<e;Q++)t[Q-2]=arguments[Q];C.apply(void 0,[I].concat(t))}}}g.exports=t}).call(I,e(5))},function(g,I){"use strict";var e=Object.getOwnPropertySymbols,t=Object.prototype.hasOwnProperty,C=Object.prototype.propertyIsEnumerable;function Q(g){if(null===g||void 0===g)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(g)}g.exports=function(){try{if(!Object.assign)return!1;var g=new String("abc");if(g[5]="de","5"===Object.getOwnPropertyNames(g)[0])return!1;for(var I={},e=0;e<10;e++)I["_"+String.fromCharCode(e)]=e;if("0123456789"!==Object.getOwnPropertyNames(I).map((function(g){return I[g]})).join(""))return!1;var t={};return"abcdefghijklmnopqrst".split("").forEach((function(g){t[g]=g})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},t)).join("")}catch(C){return!1}}()?Object.assign:function(g,I){for(var F,B,n=Q(g),U=1;U<arguments.length;U++){for(var s in F=Object(arguments[U]))t.call(F,s)&&(n[s]=F[s]);if(e){B=e(F);for(var i=0;i<B.length;i++)C.call(F,B[i])&&(n[B[i]]=F[B[i]])}}return n}},function(g,I){"use strict";g.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(g,I,e){(function(I){"use strict";if("production"!==I.env.NODE_ENV)var t=e(8),C=e(9),Q=e(11),F={};g.exports=function(g,e,B,n,U){if("production"!==I.env.NODE_ENV)for(var s in g)if(g.hasOwnProperty(s)){var i;try{t("function"===typeof g[s],"%s: %s type `%s` is invalid; it must be a function, usually from the `prop-types` package, but received `%s`.",n||"React class",B,s,typeof g[s]),i=g[s](e,s,n,B,null,Q)}catch(A){i=A}if(C(!i||i instanceof Error,"%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).",n||"React class",B,s,typeof i),i instanceof Error&&!(i.message in F)){F[i.message]=!0;var c=U?U():"";C(!1,"Failed %s type: %s%s",B,i.message,null!=c?c:"")}}}}).call(I,e(5))},function(g,I,e){"use strict";var t=e(7),C=e(8),Q=e(11);g.exports=function(){function g(g,I,e,t,F,B){B!==Q&&C(!1,"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types")}function I(){return g}g.isRequired=g;var e={array:g,bool:g,func:g,number:g,object:g,string:g,symbol:g,any:g,arrayOf:I,element:g,instanceOf:I,node:g,objectOf:I,oneOf:I,oneOfType:I,shape:I,exact:I};return e.checkPropTypes=t,e.PropTypes=e,e}},function(g,I){g.exports=e(0)},function(g,I){"use strict";var e=function(g,I){return g===I};g.exports=function(g){var I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e,t=void 0,C=[],Q=void 0,F=!1,B=function(g,e){return I(g,C[e])},n=function(){for(var I=arguments.length,e=Array(I),n=0;n<I;n++)e[n]=arguments[n];return F&&t===this&&e.length===C.length&&e.every(B)?Q:(F=!0,t=this,C=e,Q=g.apply(this,e))};return n}}])},function(g,I,e){"use strict";e.r(I),function(g){e.d(I,"default",(function(){return R}));var t=e(1),C=e.n(t),Q=e(29),F=e.n(Q),B=e(175),n=e.n(B),U=e(114),s=e.n(U),i=e(115),c=e.n(i),A=e(180),l=e(588),a=e.n(l),r=e(210),o=e(319),d=e.n(o),u=e(589),y=e.n(u),b=e(467),Z=e.n(b),m=e(426),x=e.n(m),R={logErrors:!1},S=[];function G(g,I,e){if(e.get){var t=e.get;e.get=function(){var g=t.call(this);return Object.defineProperty(this,I,{value:g}),g}}else if("function"===typeof e.value){var C=e.value;return{get:function(){var g=new Map;function e(){for(var I=arguments.length,e=new Array(I),t=0;t<I;t++)e[t]=arguments[t];var Q=e.length>0?e[0]:"value";if(g.has(Q))return g.get(Q);var F=C.apply(this,e);return g.set(Q,F),F}return Object.defineProperty(this,I,{value:e}),e}}}}R.registerFormat=function(g){S.push(g)},R.openSync=function(g,I){throw new Error("fontkit.openSync unavailable for browser build")},R.open=function(g,I,e){throw new Error("fontkit.open unavailable for browser build")},R.create=function(g,I){for(var e=0;e<S.length;e++){var t=S[e];if(t.probe(g)){var Q=new t(new C.a.DecodeStream(g));return I?Q.getFont(I):Q}}throw new Error("Unknown font format")},R.defaultLanguage="en",R.setDefaultLanguage=function(g){void 0===g&&(g="en"),R.defaultLanguage=g};var L=new C.a.Struct({firstCode:C.a.uint16,entryCount:C.a.uint16,idDelta:C.a.int16,idRangeOffset:C.a.uint16}),V=new C.a.Struct({startCharCode:C.a.uint32,endCharCode:C.a.uint32,glyphID:C.a.uint32}),h=new C.a.Struct({startUnicodeValue:C.a.uint24,additionalCount:C.a.uint8}),D=new C.a.Struct({unicodeValue:C.a.uint24,glyphID:C.a.uint16}),p=new C.a.Array(h,C.a.uint32),E=new C.a.Array(D,C.a.uint32),N=new C.a.Struct({varSelector:C.a.uint24,defaultUVS:new C.a.Pointer(C.a.uint32,p,{type:"parent"}),nonDefaultUVS:new C.a.Pointer(C.a.uint32,E,{type:"parent"})}),W=new C.a.VersionedStruct(C.a.uint16,{0:{length:C.a.uint16,language:C.a.uint16,codeMap:new C.a.LazyArray(C.a.uint8,256)},2:{length:C.a.uint16,language:C.a.uint16,subHeaderKeys:new C.a.Array(C.a.uint16,256),subHeaderCount:function(g){return Math.max.apply(Math,g.subHeaderKeys)},subHeaders:new C.a.LazyArray(L,"subHeaderCount"),glyphIndexArray:new C.a.LazyArray(C.a.uint16,"subHeaderCount")},4:{length:C.a.uint16,language:C.a.uint16,segCountX2:C.a.uint16,segCount:function(g){return g.segCountX2>>1},searchRange:C.a.uint16,entrySelector:C.a.uint16,rangeShift:C.a.uint16,endCode:new C.a.LazyArray(C.a.uint16,"segCount"),reservedPad:new C.a.Reserved(C.a.uint16),startCode:new C.a.LazyArray(C.a.uint16,"segCount"),idDelta:new C.a.LazyArray(C.a.int16,"segCount"),idRangeOffset:new C.a.LazyArray(C.a.uint16,"segCount"),glyphIndexArray:new C.a.LazyArray(C.a.uint16,(function(g){return(g.length-g._currentOffset)/2}))},6:{length:C.a.uint16,language:C.a.uint16,firstCode:C.a.uint16,entryCount:C.a.uint16,glyphIndices:new C.a.LazyArray(C.a.uint16,"entryCount")},8:{reserved:new C.a.Reserved(C.a.uint16),length:C.a.uint32,language:C.a.uint16,is32:new C.a.LazyArray(C.a.uint8,8192),nGroups:C.a.uint32,groups:new C.a.LazyArray(V,"nGroups")},10:{reserved:new C.a.Reserved(C.a.uint16),length:C.a.uint32,language:C.a.uint32,firstCode:C.a.uint32,entryCount:C.a.uint32,glyphIndices:new C.a.LazyArray(C.a.uint16,"numChars")},12:{reserved:new C.a.Reserved(C.a.uint16),length:C.a.uint32,language:C.a.uint32,nGroups:C.a.uint32,groups:new C.a.LazyArray(V,"nGroups")},13:{reserved:new C.a.Reserved(C.a.uint16),length:C.a.uint32,language:C.a.uint32,nGroups:C.a.uint32,groups:new C.a.LazyArray(V,"nGroups")},14:{length:C.a.uint32,numRecords:C.a.uint32,varSelectors:new C.a.LazyArray(N,"numRecords")}}),f=new C.a.Struct({platformID:C.a.uint16,encodingID:C.a.uint16,table:new C.a.Pointer(C.a.uint32,W,{type:"parent",lazy:!0})}),X=new C.a.Struct({version:C.a.uint16,numSubtables:C.a.uint16,tables:new C.a.Array(f,"numSubtables")}),J=new C.a.Struct({version:C.a.int32,revision:C.a.int32,checkSumAdjustment:C.a.uint32,magicNumber:C.a.uint32,flags:C.a.uint16,unitsPerEm:C.a.uint16,created:new C.a.Array(C.a.int32,2),modified:new C.a.Array(C.a.int32,2),xMin:C.a.int16,yMin:C.a.int16,xMax:C.a.int16,yMax:C.a.int16,macStyle:new C.a.Bitfield(C.a.uint16,["bold","italic","underline","outline","shadow","condensed","extended"]),lowestRecPPEM:C.a.uint16,fontDirectionHint:C.a.int16,indexToLocFormat:C.a.int16,glyphDataFormat:C.a.int16}),v=new C.a.Struct({version:C.a.int32,ascent:C.a.int16,descent:C.a.int16,lineGap:C.a.int16,advanceWidthMax:C.a.uint16,minLeftSideBearing:C.a.int16,minRightSideBearing:C.a.int16,xMaxExtent:C.a.int16,caretSlopeRise:C.a.int16,caretSlopeRun:C.a.int16,caretOffset:C.a.int16,reserved:new C.a.Reserved(C.a.int16,4),metricDataFormat:C.a.int16,numberOfMetrics:C.a.uint16}),k=new C.a.Struct({advance:C.a.uint16,bearing:C.a.int16}),H=new C.a.Struct({metrics:new C.a.LazyArray(k,(function(g){return g.parent.hhea.numberOfMetrics})),bearings:new C.a.LazyArray(C.a.int16,(function(g){return g.parent.maxp.numGlyphs-g.parent.hhea.numberOfMetrics}))}),M=new C.a.Struct({version:C.a.int32,numGlyphs:C.a.uint16,maxPoints:C.a.uint16,maxContours:C.a.uint16,maxComponentPoints:C.a.uint16,maxComponentContours:C.a.uint16,maxZones:C.a.uint16,maxTwilightPoints:C.a.uint16,maxStorage:C.a.uint16,maxFunctionDefs:C.a.uint16,maxInstructionDefs:C.a.uint16,maxStackElements:C.a.uint16,maxSizeOfInstructions:C.a.uint16,maxComponentElements:C.a.uint16,maxComponentDepth:C.a.uint16});function Y(g,I,e){return void 0===e&&(e=0),1===g&&T[e]?T[e]:w[g][I]}var w=[["utf16be","utf16be","utf16be","utf16be","utf16be","utf16be"],["macroman","shift-jis","big5","euc-kr","iso-8859-6","iso-8859-8","macgreek","maccyrillic","symbol","Devanagari","Gurmukhi","Gujarati","Oriya","Bengali","Tamil","Telugu","Kannada","Malayalam","Sinhalese","Burmese","Khmer","macthai","Laotian","Georgian","Armenian","gb-2312-80","Tibetan","Mongolian","Geez","maccenteuro","Vietnamese","Sindhi"],["ascii"],["symbol","utf16be","shift-jis","gb18030","big5","wansung","johab",null,null,null,"utf16be"]],T={15:"maciceland",17:"macturkish",18:"maccroatian",24:"maccenteuro",25:"maccenteuro",26:"maccenteuro",27:"maccenteuro",28:"maccenteuro",30:"maciceland",37:"macromania",38:"maccenteuro",39:"maccenteuro",40:"maccenteuro",143:"macinuit",146:"macgaelic"},z=[[],{0:"en",30:"fo",60:"ks",90:"rw",1:"fr",31:"fa",61:"ku",91:"rn",2:"de",32:"ru",62:"sd",92:"ny",3:"it",33:"zh",63:"bo",93:"mg",4:"nl",34:"nl-BE",64:"ne",94:"eo",5:"sv",35:"ga",65:"sa",128:"cy",6:"es",36:"sq",66:"mr",129:"eu",7:"da",37:"ro",67:"bn",130:"ca",8:"pt",38:"cz",68:"as",131:"la",9:"no",39:"sk",69:"gu",132:"qu",10:"he",40:"si",70:"pa",133:"gn",11:"ja",41:"yi",71:"or",134:"ay",12:"ar",42:"sr",72:"ml",135:"tt",13:"fi",43:"mk",73:"kn",136:"ug",14:"el",44:"bg",74:"ta",137:"dz",15:"is",45:"uk",75:"te",138:"jv",16:"mt",46:"be",76:"si",139:"su",17:"tr",47:"uz",77:"my",140:"gl",18:"hr",48:"kk",78:"km",141:"af",19:"zh-Hant",49:"az-Cyrl",79:"lo",142:"br",20:"ur",50:"az-Arab",80:"vi",143:"iu",21:"hi",51:"hy",81:"id",144:"gd",22:"th",52:"ka",82:"tl",145:"gv",23:"ko",53:"mo",83:"ms",146:"ga",24:"lt",54:"ky",84:"ms-Arab",147:"to",25:"pl",55:"tg",85:"am",148:"el-polyton",26:"hu",56:"tk",86:"ti",149:"kl",27:"es",57:"mn-CN",87:"om",150:"az",28:"lv",58:"mn",88:"so",151:"nn",29:"se",59:"ps",89:"sw"},[],{1078:"af",16393:"en-IN",1159:"rw",1074:"tn",1052:"sq",6153:"en-IE",1089:"sw",1115:"si",1156:"gsw",8201:"en-JM",1111:"kok",1051:"sk",1118:"am",17417:"en-MY",1042:"ko",1060:"sl",5121:"ar-DZ",5129:"en-NZ",1088:"ky",11274:"es-AR",15361:"ar-BH",13321:"en-PH",1108:"lo",16394:"es-BO",3073:"ar",18441:"en-SG",1062:"lv",13322:"es-CL",2049:"ar-IQ",7177:"en-ZA",1063:"lt",9226:"es-CO",11265:"ar-JO",11273:"en-TT",2094:"dsb",5130:"es-CR",13313:"ar-KW",2057:"en-GB",1134:"lb",7178:"es-DO",12289:"ar-LB",1033:"en",1071:"mk",12298:"es-EC",4097:"ar-LY",12297:"en-ZW",2110:"ms-BN",17418:"es-SV",6145:"ary",1061:"et",1086:"ms",4106:"es-GT",8193:"ar-OM",1080:"fo",1100:"ml",18442:"es-HN",16385:"ar-QA",1124:"fil",1082:"mt",2058:"es-MX",1025:"ar-SA",1035:"fi",1153:"mi",19466:"es-NI",10241:"ar-SY",2060:"fr-BE",1146:"arn",6154:"es-PA",7169:"aeb",3084:"fr-CA",1102:"mr",15370:"es-PY",14337:"ar-AE",1036:"fr",1148:"moh",10250:"es-PE",9217:"ar-YE",5132:"fr-LU",1104:"mn",20490:"es-PR",1067:"hy",6156:"fr-MC",2128:"mn-CN",3082:"es",1101:"as",4108:"fr-CH",1121:"ne",1034:"es",2092:"az-Cyrl",1122:"fy",1044:"nb",21514:"es-US",1068:"az",1110:"gl",2068:"nn",14346:"es-UY",1133:"ba",1079:"ka",1154:"oc",8202:"es-VE",1069:"eu",3079:"de-AT",1096:"or",2077:"sv-FI",1059:"be",1031:"de",1123:"ps",1053:"sv",2117:"bn",5127:"de-LI",1045:"pl",1114:"syr",1093:"bn-IN",4103:"de-LU",1046:"pt",1064:"tg",8218:"bs-Cyrl",2055:"de-CH",2070:"pt-PT",2143:"tzm",5146:"bs",1032:"el",1094:"pa",1097:"ta",1150:"br",1135:"kl",1131:"qu-BO",1092:"tt",1026:"bg",1095:"gu",2155:"qu-EC",1098:"te",1027:"ca",1128:"ha",3179:"qu",1054:"th",3076:"zh-HK",1037:"he",1048:"ro",1105:"bo",5124:"zh-MO",1081:"hi",1047:"rm",1055:"tr",2052:"zh",1038:"hu",1049:"ru",1090:"tk",4100:"zh-SG",1039:"is",9275:"smn",1152:"ug",1028:"zh-TW",1136:"ig",4155:"smj-NO",1058:"uk",1155:"co",1057:"id",5179:"smj",1070:"hsb",1050:"hr",1117:"iu",3131:"se-FI",1056:"ur",4122:"hr-BA",2141:"iu-Latn",1083:"se",2115:"uz-Cyrl",1029:"cs",2108:"ga",2107:"se-SE",1091:"uz",1030:"da",1076:"xh",8251:"sms",1066:"vi",1164:"prs",1077:"zu",6203:"sma-NO",1106:"cy",1125:"dv",1040:"it",7227:"sms",1160:"wo",2067:"nl-BE",2064:"it-CH",1103:"sa",1157:"sah",1043:"nl",1041:"ja",7194:"sr-Cyrl-BA",1144:"ii",3081:"en-AU",1099:"kn",3098:"sr",1130:"yo",10249:"en-BZ",1087:"kk",6170:"sr-Latn-BA",4105:"en-CA",1107:"km",2074:"sr-Latn",9225:"en-029",1158:"quc",1132:"nso"}],O=new C.a.Struct({platformID:C.a.uint16,encodingID:C.a.uint16,languageID:C.a.uint16,nameID:C.a.uint16,length:C.a.uint16,string:new C.a.Pointer(C.a.uint16,new C.a.String("length",(function(g){return Y(g.platformID,g.encodingID,g.languageID)})),{type:"parent",relativeTo:"parent.stringOffset",allowNull:!1})}),K=new C.a.Struct({length:C.a.uint16,tag:new C.a.Pointer(C.a.uint16,new C.a.String("length","utf16be"),{type:"parent",relativeTo:"stringOffset"})}),j=new C.a.VersionedStruct(C.a.uint16,{0:{count:C.a.uint16,stringOffset:C.a.uint16,records:new C.a.Array(O,"count")},1:{count:C.a.uint16,stringOffset:C.a.uint16,records:new C.a.Array(O,"count"),langTagCount:C.a.uint16,langTags:new C.a.Array(K,"langTagCount")}}),P=["copyright","fontFamily","fontSubfamily","uniqueSubfamily","fullName","version","postscriptName","trademark","manufacturer","designer","description","vendorURL","designerURL","license","licenseURL",null,"preferredFamily","preferredSubfamily","compatibleFull","sampleText","postscriptCIDFontName","wwsFamilyName","wwsSubfamilyName"];j.process=function(g){for(var I,e={},t=F()(this.records);!(I=t()).done;){var C=I.value,Q=z[C.platformID][C.languageID];null==Q&&null!=this.langTags&&C.languageID>=32768&&(Q=this.langTags[C.languageID-32768].tag),null==Q&&(Q=C.platformID+"-"+C.languageID);var B=C.nameID>=256?"fontFeatures":P[C.nameID]||C.nameID;null==e[B]&&(e[B]={});var n=e[B];C.nameID>=256&&(n=n[C.nameID]||(n[C.nameID]={})),"string"!==typeof C.string&&"string"===typeof n[Q]||(n[Q]=C.string)}this.records=e},j.preEncode=function(){if(!Array.isArray(this.records)){this.version=0;var I=[];for(var e in this.records){var t=this.records[e];"fontFeatures"!==e&&(I.push({platformID:3,encodingID:1,languageID:1033,nameID:P.indexOf(e),length:g.byteLength(t.en,"utf16le"),string:t.en}),"postscriptName"===e&&I.push({platformID:1,encodingID:0,languageID:0,nameID:P.indexOf(e),length:t.en.length,string:t.en}))}this.records=I,this.count=I.length,this.stringOffset=j.size(this,null,!1)}};var _=new C.a.VersionedStruct(C.a.uint16,{header:{xAvgCharWidth:C.a.int16,usWeightClass:C.a.uint16,usWidthClass:C.a.uint16,fsType:new C.a.Bitfield(C.a.uint16,[null,"noEmbedding","viewOnly","editable",null,null,null,null,"noSubsetting","bitmapOnly"]),ySubscriptXSize:C.a.int16,ySubscriptYSize:C.a.int16,ySubscriptXOffset:C.a.int16,ySubscriptYOffset:C.a.int16,ySuperscriptXSize:C.a.int16,ySuperscriptYSize:C.a.int16,ySuperscriptXOffset:C.a.int16,ySuperscriptYOffset:C.a.int16,yStrikeoutSize:C.a.int16,yStrikeoutPosition:C.a.int16,sFamilyClass:C.a.int16,panose:new C.a.Array(C.a.uint8,10),ulCharRange:new C.a.Array(C.a.uint32,4),vendorID:new C.a.String(4),fsSelection:new C.a.Bitfield(C.a.uint16,["italic","underscore","negative","outlined","strikeout","bold","regular","useTypoMetrics","wws","oblique"]),usFirstCharIndex:C.a.uint16,usLastCharIndex:C.a.uint16},0:{},1:{typoAscender:C.a.int16,typoDescender:C.a.int16,typoLineGap:C.a.int16,winAscent:C.a.uint16,winDescent:C.a.uint16,codePageRange:new C.a.Array(C.a.uint32,2)},2:{typoAscender:C.a.int16,typoDescender:C.a.int16,typoLineGap:C.a.int16,winAscent:C.a.uint16,winDescent:C.a.uint16,codePageRange:new C.a.Array(C.a.uint32,2),xHeight:C.a.int16,capHeight:C.a.int16,defaultChar:C.a.uint16,breakChar:C.a.uint16,maxContent:C.a.uint16},5:{typoAscender:C.a.int16,typoDescender:C.a.int16,typoLineGap:C.a.int16,winAscent:C.a.uint16,winDescent:C.a.uint16,codePageRange:new C.a.Array(C.a.uint32,2),xHeight:C.a.int16,capHeight:C.a.int16,defaultChar:C.a.uint16,breakChar:C.a.uint16,maxContent:C.a.uint16,usLowerOpticalPointSize:C.a.uint16,usUpperOpticalPointSize:C.a.uint16}}),q=_.versions;q[3]=q[4]=q[2];var $=new C.a.VersionedStruct(C.a.fixed32,{header:{italicAngle:C.a.fixed32,underlinePosition:C.a.int16,underlineThickness:C.a.int16,isFixedPitch:C.a.uint32,minMemType42:C.a.uint32,maxMemType42:C.a.uint32,minMemType1:C.a.uint32,maxMemType1:C.a.uint32},1:{},2:{numberOfGlyphs:C.a.uint16,glyphNameIndex:new C.a.Array(C.a.uint16,"numberOfGlyphs"),names:new C.a.Array(new C.a.String(C.a.uint8))},2.5:{numberOfGlyphs:C.a.uint16,offsets:new C.a.Array(C.a.uint8,"numberOfGlyphs")},3:{},4:{map:new C.a.Array(C.a.uint32,(function(g){return g.parent.maxp.numGlyphs}))}}),gg=new C.a.Struct({controlValues:new C.a.Array(C.a.int16)}),Ig=new C.a.Struct({instructions:new C.a.Array(C.a.uint8)}),eg=new C.a.VersionedStruct("head.indexToLocFormat",{0:{offsets:new C.a.Array(C.a.uint16)},1:{offsets:new C.a.Array(C.a.uint32)}});eg.process=function(){if(0===this.version)for(var g=0;g<this.offsets.length;g++)this.offsets[g]<<=1},eg.preEncode=function(){if(0===this.version)for(var g=0;g<this.offsets.length;g++)this.offsets[g]>>>=1};var tg=new C.a.Struct({controlValueProgram:new C.a.Array(C.a.uint8)}),Cg=new C.a.Array(new C.a.Buffer),Qg=function(){function g(g){this.type=g}var I=g.prototype;return I.getCFFVersion=function(g){for(;g&&!g.hdrSize;)g=g.parent;return g?g.version:-1},I.decode=function(g,I){var e=this.getCFFVersion(I)>=2?g.readUInt32BE():g.readUInt16BE();if(0===e)return[];var t,Q=g.readUInt8();if(1===Q)t=C.a.uint8;else if(2===Q)t=C.a.uint16;else if(3===Q)t=C.a.uint24;else{if(4!==Q)throw new Error("Bad offset size in CFFIndex: "+Q+" "+g.pos);t=C.a.uint32}for(var F=[],B=g.pos+(e+1)*Q-1,n=t.decode(g),U=0;U<e;U++){var s=t.decode(g);if(null!=this.type){var i=g.pos;g.pos=B+n,I.length=s-n,F.push(this.type.decode(g,I)),g.pos=i}else F.push({offset:B+n,length:s-n});n=s}return g.pos=B+n,F},I.size=function(g,I){var e=2;if(0===g.length)return e;for(var t,Q=this.type||new C.a.Buffer,F=1,B=0;B<g.length;B++){var n=g[B];F+=Q.size(n,I)}if(F<=255)t=C.a.uint8;else if(F<=65535)t=C.a.uint16;else if(F<=16777215)t=C.a.uint24;else{if(!(F<=4294967295))throw new Error("Bad offset in CFFIndex");t=C.a.uint32}return e+=1+t.size()*(g.length+1),e+=F-1,e},I.encode=function(g,I,e){if(g.writeUInt16BE(I.length),0!==I.length){for(var t,Q,B=this.type||new C.a.Buffer,n=[],U=1,s=F()(I);!(t=s()).done;){var i=t.value,c=B.size(i,e);n.push(c),U+=c}if(U<=255)Q=C.a.uint8;else if(U<=65535)Q=C.a.uint16;else if(U<=16777215)Q=C.a.uint24;else{if(!(U<=4294967295))throw new Error("Bad offset in CFFIndex");Q=C.a.uint32}g.writeUInt8(Q.size()),U=1,Q.encode(g,U);for(var A=0,l=n;A<l.length;A++){U+=l[A],Q.encode(g,U)}for(var a,r=F()(I);!(a=r()).done;){var o=a.value;B.encode(g,o,e)}}},g}(),Fg=["0","1","2","3","4","5","6","7","8","9",".","E","E-",null,"-"],Bg={".":10,E:11,"E-":12,"-":14},ng=function(){function g(){}return g.decode=function(g,I){if(32<=I&&I<=246)return I-139;if(247<=I&&I<=250)return 256*(I-247)+g.readUInt8()+108;if(251<=I&&I<=254)return 256*-(I-251)-g.readUInt8()-108;if(28===I)return g.readInt16BE();if(29===I)return g.readInt32BE();if(30===I){for(var e="";;){var t=g.readUInt8(),C=t>>4;if(15===C)break;e+=Fg[C];var Q=15&t;if(15===Q)break;e+=Fg[Q]}return parseFloat(e)}return null},g.size=function(g){if(g.forceLarge&&(g=32768),(0|g)!==g){var I=""+g;return 1+Math.ceil((I.length+1)/2)}return-107<=g&&g<=107?1:108<=g&&g<=1131||-1131<=g&&g<=-108?2:-32768<=g&&g<=32767?3:5},g.encode=function(g,I){var e=Number(I);if(I.forceLarge)return g.writeUInt8(29),g.writeInt32BE(e);if((0|e)===e)return-107<=e&&e<=107?g.writeUInt8(e+139):108<=e&&e<=1131?(e-=108,g.writeUInt8(247+(e>>8)),g.writeUInt8(255&e)):-1131<=e&&e<=-108?(e=-e-108,g.writeUInt8(251+(e>>8)),g.writeUInt8(255&e)):-32768<=e&&e<=32767?(g.writeUInt8(28),g.writeInt16BE(e)):(g.writeUInt8(29),g.writeInt32BE(e));g.writeUInt8(30);for(var t=""+e,C=0;C<t.length;C+=2){var Q=t[C],F=Bg[Q]||+Q;if(C===t.length-1)var B=15;else{var n=t[C+1];B=Bg[n]||+n}g.writeUInt8(F<<4|15&B)}return 15!==B?g.writeUInt8(240):void 0},g}(),Ug=function(){function g(g){void 0===g&&(g=[]),this.ops=g,this.fields={};for(var I,e=F()(g);!(I=e()).done;){var t=I.value,C=Array.isArray(t[0])?t[0][0]<<8|t[0][1]:t[0];this.fields[C]=t}}var I=g.prototype;return I.decodeOperands=function(g,I,e,t){var C=this;if(Array.isArray(g))return t.map((function(t,Q){return C.decodeOperands(g[Q],I,e,[t])}));if(null!=g.decode)return g.decode(I,e,t);switch(g){case"number":case"offset":case"sid":return t[0];case"boolean":return!!t[0];default:return t}},I.encodeOperands=function(g,I,e,t){var C=this;return Array.isArray(g)?t.map((function(t,Q){return C.encodeOperands(g[Q],I,e,t)[0]})):null!=g.encode?g.encode(I,t,e):"number"===typeof t?[t]:"boolean"===typeof t?[+t]:Array.isArray(t)?t:[t]},I.decode=function(g,I){var e=g.pos+I.length,t={},C=[];for(var Q in Object.defineProperties(t,{parent:{value:I},_startOffset:{value:g.pos}}),this.fields){var F=this.fields[Q];t[F[1]]=F[3]}for(;g.pos<e;){var B=g.readUInt8();if(B<28){12===B&&(B=B<<8|g.readUInt8());var n=this.fields[B];if(!n)throw new Error("Unknown operator "+B);var U=this.decodeOperands(n[2],g,t,C);null!=U&&(U instanceof A.PropertyDescriptor?Object.defineProperty(t,n[1],U):t[n[1]]=U),C=[]}else C.push(ng.decode(g,B))}return t},I.size=function(g,I,e){void 0===e&&(e=!0);var t={parent:I,val:g,pointerSize:0,startOffset:I.startOffset||0},C=0;for(var Q in this.fields){var B=this.fields[Q],n=g[B[1]];if(null!=n&&!a()(n,B[3])){for(var U,s=this.encodeOperands(B[2],null,t,n),i=F()(s);!(U=i()).done;){var c=U.value;C+=ng.size(c)}C+=(Array.isArray(B[0])?B[0]:[B[0]]).length}}return e&&(C+=t.pointerSize),C},I.encode=function(g,I,e){var t={pointers:[],startOffset:g.pos,parent:e,val:I,pointerSize:0};t.pointerOffset=g.pos+this.size(I,t,!1);for(var C,Q=F()(this.ops);!(C=Q()).done;){var B=C.value,n=I[B[1]];if(null!=n&&!a()(n,B[3])){for(var U,s=this.encodeOperands(B[2],g,t,n),i=F()(s);!(U=i()).done;){var c=U.value;ng.encode(g,c)}for(var A,l=Array.isArray(B[0])?B[0]:[B[0]],r=F()(l);!(A=r()).done;){var o=A.value;g.writeUInt8(o)}}}for(var d=0;d<t.pointers.length;){var u=t.pointers[d++];u.type.encode(g,u.val,u.parent)}},g}(),sg=function(g){function I(I,e){return void 0===e&&(e={}),null==e.type&&(e.type="global"),g.call(this,null,I,e)||this}c()(I,g);var e=I.prototype;return e.decode=function(I,e,t){return this.offsetType={decode:function(){return t[0]}},g.prototype.decode.call(this,I,e,t)},e.encode=function(I,e,t){if(!I)return this.offsetType={size:function(){return 0}},this.size(e,t),[new ig(0)];var C=null;return this.offsetType={encode:function(g,I){return C=I}},g.prototype.encode.call(this,I,e,t),[new ig(C)]},I}(C.a.Pointer),ig=function(){function g(g){this.val=g,this.forceLarge=!0}return g.prototype.valueOf=function(){return this.val},g}(),cg=new Ug([[6,"BlueValues","delta",null],[7,"OtherBlues","delta",null],[8,"FamilyBlues","delta",null],[9,"FamilyOtherBlues","delta",null],[[12,9],"BlueScale","number",.039625],[[12,10],"BlueShift","number",7],[[12,11],"BlueFuzz","number",1],[10,"StdHW","number",null],[11,"StdVW","number",null],[[12,12],"StemSnapH","delta",null],[[12,13],"StemSnapV","delta",null],[[12,14],"ForceBold","boolean",!1],[[12,17],"LanguageGroup","number",0],[[12,18],"ExpansionFactor","number",.06],[[12,19],"initialRandomSeed","number",0],[20,"defaultWidthX","number",0],[21,"nominalWidthX","number",0],[22,"vsindex","number",0],[23,"blend",function(){function g(){}return g.decode=function(g,I,e){for(var t=e.pop();e.length>t;)e.pop()},g}(),null],[19,"Subrs",new sg(new Qg,{type:"local"}),null]]),Ag=[".notdef","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","onesuperior","logicalnot","mu","trademark","Eth","onehalf","plusminus","Thorn","onequarter","divide","brokenbar","degree","thorn","threequarters","twosuperior","registered","minus","eth","multiply","threesuperior","copyright","Aacute","Acircumflex","Adieresis","Agrave","Aring","Atilde","Ccedilla","Eacute","Ecircumflex","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Ntilde","Oacute","Ocircumflex","Odieresis","Ograve","Otilde","Scaron","Uacute","Ucircumflex","Udieresis","Ugrave","Yacute","Ydieresis","Zcaron","aacute","acircumflex","adieresis","agrave","aring","atilde","ccedilla","eacute","ecircumflex","edieresis","egrave","iacute","icircumflex","idieresis","igrave","ntilde","oacute","ocircumflex","odieresis","ograve","otilde","scaron","uacute","ucircumflex","udieresis","ugrave","yacute","ydieresis","zcaron","exclamsmall","Hungarumlautsmall","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","commasuperior","threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","ffi","ffl","parenleftinferior","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","exclamdownsmall","centoldstyle","Lslashsmall","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","Dotaccentsmall","Macronsmall","figuredash","hypheninferior","Ogoneksmall","Ringsmall","Cedillasmall","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall","001.000","001.001","001.002","001.003","Black","Bold","Book","Light","Medium","Regular","Roman","Semibold"],lg=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","","endash","dagger","daggerdbl","periodcentered","","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","","questiondown","","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","","ring","cedilla","","hungarumlaut","ogonek","caron","emdash","","","","","","","","","","","","","","","","","AE","","ordfeminine","","","","","Lslash","Oslash","OE","ordmasculine","","","","","","ae","","","","dotlessi","","","lslash","oslash","oe","germandbls"],ag=[".notdef","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","onesuperior","logicalnot","mu","trademark","Eth","onehalf","plusminus","Thorn","onequarter","divide","brokenbar","degree","thorn","threequarters","twosuperior","registered","minus","eth","multiply","threesuperior","copyright","Aacute","Acircumflex","Adieresis","Agrave","Aring","Atilde","Ccedilla","Eacute","Ecircumflex","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Ntilde","Oacute","Ocircumflex","Odieresis","Ograve","Otilde","Scaron","Uacute","Ucircumflex","Udieresis","Ugrave","Yacute","Ydieresis","Zcaron","aacute","acircumflex","adieresis","agrave","aring","atilde","ccedilla","eacute","ecircumflex","edieresis","egrave","iacute","icircumflex","idieresis","igrave","ntilde","oacute","ocircumflex","odieresis","ograve","otilde","scaron","uacute","ucircumflex","udieresis","ugrave","yacute","ydieresis","zcaron"],rg=new C.a.Struct({reserved:new C.a.Reserved(C.a.uint16),reqFeatureIndex:C.a.uint16,featureCount:C.a.uint16,featureIndexes:new C.a.Array(C.a.uint16,"featureCount")}),og=new C.a.Struct({tag:new C.a.String(4),langSys:new C.a.Pointer(C.a.uint16,rg,{type:"parent"})}),dg=new C.a.Struct({defaultLangSys:new C.a.Pointer(C.a.uint16,rg),count:C.a.uint16,langSysRecords:new C.a.Array(og,"count")}),ug=new C.a.Struct({tag:new C.a.String(4),script:new C.a.Pointer(C.a.uint16,dg,{type:"parent"})}),yg=new C.a.Array(ug,C.a.uint16),bg=new C.a.Struct({featureParams:C.a.uint16,lookupCount:C.a.uint16,lookupListIndexes:new C.a.Array(C.a.uint16,"lookupCount")}),Zg=new C.a.Struct({tag:new C.a.String(4),feature:new C.a.Pointer(C.a.uint16,bg,{type:"parent"})}),mg=new C.a.Array(Zg,C.a.uint16),xg=new C.a.Struct({markAttachmentType:C.a.uint8,flags:new C.a.Bitfield(C.a.uint8,["rightToLeft","ignoreBaseGlyphs","ignoreLigatures","ignoreMarks","useMarkFilteringSet"])});function Rg(g){var I=new C.a.Struct({lookupType:C.a.uint16,flags:xg,subTableCount:C.a.uint16,subTables:new C.a.Array(new C.a.Pointer(C.a.uint16,g),"subTableCount"),markFilteringSet:new C.a.Optional(C.a.uint16,(function(g){return g.flags.flags.useMarkFilteringSet}))});return new C.a.LazyArray(new C.a.Pointer(C.a.uint16,I),C.a.uint16)}var Sg,Gg=new C.a.Struct({start:C.a.uint16,end:C.a.uint16,startCoverageIndex:C.a.uint16}),Lg=new C.a.VersionedStruct(C.a.uint16,{1:{glyphCount:C.a.uint16,glyphs:new C.a.Array(C.a.uint16,"glyphCount")},2:{rangeCount:C.a.uint16,rangeRecords:new C.a.Array(Gg,"rangeCount")}}),Vg=new C.a.Struct({start:C.a.uint16,end:C.a.uint16,class:C.a.uint16}),hg=new C.a.VersionedStruct(C.a.uint16,{1:{startGlyph:C.a.uint16,glyphCount:C.a.uint16,classValueArray:new C.a.Array(C.a.uint16,"glyphCount")},2:{classRangeCount:C.a.uint16,classRangeRecord:new C.a.Array(Vg,"classRangeCount")}}),Dg=new C.a.Struct({a:C.a.uint16,b:C.a.uint16,deltaFormat:C.a.uint16}),pg=new C.a.Struct({sequenceIndex:C.a.uint16,lookupListIndex:C.a.uint16}),Eg=new C.a.Struct({glyphCount:C.a.uint16,lookupCount:C.a.uint16,input:new C.a.Array(C.a.uint16,(function(g){return g.glyphCount-1})),lookupRecords:new C.a.Array(pg,"lookupCount")}),Ng=new C.a.Array(new C.a.Pointer(C.a.uint16,Eg),C.a.uint16),Wg=new C.a.Struct({glyphCount:C.a.uint16,lookupCount:C.a.uint16,classes:new C.a.Array(C.a.uint16,(function(g){return g.glyphCount-1})),lookupRecords:new C.a.Array(pg,"lookupCount")}),fg=new C.a.Array(new C.a.Pointer(C.a.uint16,Wg),C.a.uint16),Xg=new C.a.VersionedStruct(C.a.uint16,{1:{coverage:new C.a.Pointer(C.a.uint16,Lg),ruleSetCount:C.a.uint16,ruleSets:new C.a.Array(new C.a.Pointer(C.a.uint16,Ng),"ruleSetCount")},2:{coverage:new C.a.Pointer(C.a.uint16,Lg),classDef:new C.a.Pointer(C.a.uint16,hg),classSetCnt:C.a.uint16,classSet:new C.a.Array(new C.a.Pointer(C.a.uint16,fg),"classSetCnt")},3:{glyphCount:C.a.uint16,lookupCount:C.a.uint16,coverages:new C.a.Array(new C.a.Pointer(C.a.uint16,Lg),"glyphCount"),lookupRecords:new C.a.Array(pg,"lookupCount")}}),Jg=new C.a.Struct({backtrackGlyphCount:C.a.uint16,backtrack:new C.a.Array(C.a.uint16,"backtrackGlyphCount"),inputGlyphCount:C.a.uint16,input:new C.a.Array(C.a.uint16,(function(g){return g.inputGlyphCount-1})),lookaheadGlyphCount:C.a.uint16,lookahead:new C.a.Array(C.a.uint16,"lookaheadGlyphCount"),lookupCount:C.a.uint16,lookupRecords:new C.a.Array(pg,"lookupCount")}),vg=new C.a.Array(new C.a.Pointer(C.a.uint16,Jg),C.a.uint16),kg=new C.a.VersionedStruct(C.a.uint16,{1:{coverage:new C.a.Pointer(C.a.uint16,Lg),chainCount:C.a.uint16,chainRuleSets:new C.a.Array(new C.a.Pointer(C.a.uint16,vg),"chainCount")},2:{coverage:new C.a.Pointer(C.a.uint16,Lg),backtrackClassDef:new C.a.Pointer(C.a.uint16,hg),inputClassDef:new C.a.Pointer(C.a.uint16,hg),lookaheadClassDef:new C.a.Pointer(C.a.uint16,hg),chainCount:C.a.uint16,chainClassSet:new C.a.Array(new C.a.Pointer(C.a.uint16,vg),"chainCount")},3:{backtrackGlyphCount:C.a.uint16,backtrackCoverage:new C.a.Array(new C.a.Pointer(C.a.uint16,Lg),"backtrackGlyphCount"),inputGlyphCount:C.a.uint16,inputCoverage:new C.a.Array(new C.a.Pointer(C.a.uint16,Lg),"inputGlyphCount"),lookaheadGlyphCount:C.a.uint16,lookaheadCoverage:new C.a.Array(new C.a.Pointer(C.a.uint16,Lg),"lookaheadGlyphCount"),lookupCount:C.a.uint16,lookupRecords:new C.a.Array(pg,"lookupCount")}}),Hg=new C.a.Fixed(16,"BE",14),Mg=new C.a.Struct({startCoord:Hg,peakCoord:Hg,endCoord:Hg}),Yg=new C.a.Struct({axisCount:C.a.uint16,regionCount:C.a.uint16,variationRegions:new C.a.Array(new C.a.Array(Mg,"axisCount"),"regionCount")}),wg=new C.a.Struct({shortDeltas:new C.a.Array(C.a.int16,(function(g){return g.parent.shortDeltaCount})),regionDeltas:new C.a.Array(C.a.int8,(function(g){return g.parent.regionIndexCount-g.parent.shortDeltaCount})),deltas:function(g){return g.shortDeltas.concat(g.regionDeltas)}}),Tg=new C.a.Struct({itemCount:C.a.uint16,shortDeltaCount:C.a.uint16,regionIndexCount:C.a.uint16,regionIndexes:new C.a.Array(C.a.uint16,"regionIndexCount"),deltaSets:new C.a.Array(wg,"itemCount")}),zg=new C.a.Struct({format:C.a.uint16,variationRegionList:new C.a.Pointer(C.a.uint32,Yg),variationDataCount:C.a.uint16,itemVariationData:new C.a.Array(new C.a.Pointer(C.a.uint32,Tg),"variationDataCount")}),Og=new C.a.VersionedStruct(C.a.uint16,{1:(Sg={axisIndex:C.a.uint16},Sg.axisIndex=C.a.uint16,Sg.filterRangeMinValue=Hg,Sg.filterRangeMaxValue=Hg,Sg)}),Kg=new C.a.Struct({conditionCount:C.a.uint16,conditionTable:new C.a.Array(new C.a.Pointer(C.a.uint32,Og),"conditionCount")}),jg=new C.a.Struct({featureIndex:C.a.uint16,alternateFeatureTable:new C.a.Pointer(C.a.uint32,bg,{type:"parent"})}),Pg=new C.a.Struct({version:C.a.fixed32,substitutionCount:C.a.uint16,substitutions:new C.a.Array(jg,"substitutionCount")}),_g=new C.a.Struct({conditionSet:new C.a.Pointer(C.a.uint32,Kg,{type:"parent"}),featureTableSubstitution:new C.a.Pointer(C.a.uint32,Pg,{type:"parent"})}),qg=new C.a.Struct({majorVersion:C.a.uint16,minorVersion:C.a.uint16,featureVariationRecordCount:C.a.uint32,featureVariationRecords:new C.a.Array(_g,"featureVariationRecordCount")}),$g=function(){function g(g,I){this.predefinedOps=g,this.type=I}var I=g.prototype;return I.decode=function(g,I,e){return this.predefinedOps[e[0]]?this.predefinedOps[e[0]]:this.type.decode(g,I,e)},I.size=function(g,I){return this.type.size(g,I)},I.encode=function(g,I,e){var t=this.predefinedOps.indexOf(I);return-1!==t?t:this.type.encode(g,I,e)},g}(),gI=function(g){function I(){return g.call(this,"UInt8")||this}return c()(I,g),I.prototype.decode=function(g){return 127&C.a.uint8.decode(g)},I}(C.a.Number),II=new C.a.Struct({first:C.a.uint16,nLeft:C.a.uint8}),eI=new C.a.Struct({first:C.a.uint16,nLeft:C.a.uint16}),tI=new $g([lg,["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclamsmall","Hungarumlautsmall","","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","questionsmall","","asuperior","bsuperior","centsuperior","dsuperior","esuperior","","","isuperior","","","lsuperior","msuperior","nsuperior","osuperior","","","rsuperior","ssuperior","tsuperior","","ff","fi","fl","ffi","ffl","parenleftinferior","","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdownsmall","centoldstyle","Lslashsmall","","","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","","Dotaccentsmall","","","Macronsmall","","","figuredash","hypheninferior","","","Ogoneksmall","Ringsmall","Cedillasmall","","","","onequarter","onehalf","threequarters","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","","","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall"]],new sg(new C.a.VersionedStruct(new gI,{0:{nCodes:C.a.uint8,codes:new C.a.Array(C.a.uint8,"nCodes")},1:{nRanges:C.a.uint8,ranges:new C.a.Array(II,"nRanges")}}),{lazy:!0})),CI=function(g){function I(){return g.apply(this,arguments)||this}return c()(I,g),I.prototype.decode=function(g,I){for(var e=Object(A.resolveLength)(this.length,g,I),t=0,C=[];t<e;){var Q=this.type.decode(g,I);Q.offset=t,t+=Q.nLeft+1,C.push(Q)}return C},I}(C.a.Array),QI=new $g([ag,[".notdef","space","exclamsmall","Hungarumlautsmall","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","fi","fl","ffi","ffl","parenleftinferior","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","exclamdownsmall","centoldstyle","Lslashsmall","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","Dotaccentsmall","Macronsmall","figuredash","hypheninferior","Ogoneksmall","Ringsmall","Cedillasmall","onequarter","onehalf","threequarters","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall"],[".notdef","space","dollaroldstyle","dollarsuperior","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","fi","fl","ffi","ffl","parenleftinferior","parenrightinferior","hyphensuperior","colonmonetary","onefitted","rupiah","centoldstyle","figuredash","hypheninferior","onequarter","onehalf","threequarters","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior"]],new sg(new C.a.VersionedStruct(C.a.uint8,{0:{glyphs:new C.a.Array(C.a.uint16,(function(g){return g.parent.CharStrings.length-1}))},1:{ranges:new CI(II,(function(g){return g.parent.CharStrings.length-1}))},2:{ranges:new CI(eI,(function(g){return g.parent.CharStrings.length-1}))}}),{lazy:!0})),FI=new C.a.Struct({first:C.a.uint16,fd:C.a.uint8}),BI=new C.a.Struct({first:C.a.uint32,fd:C.a.uint16}),nI=new C.a.VersionedStruct(C.a.uint8,{0:{fds:new C.a.Array(C.a.uint8,(function(g){return g.parent.CharStrings.length}))},3:{nRanges:C.a.uint16,ranges:new C.a.Array(FI,"nRanges"),sentinel:C.a.uint16},4:{nRanges:C.a.uint32,ranges:new C.a.Array(BI,"nRanges"),sentinel:C.a.uint32}}),UI=new sg(cg),sI=function(){function g(){}var I=g.prototype;return I.decode=function(g,I,e){return I.length=e[0],UI.decode(g,I,[e[1]])},I.size=function(g,I){return[cg.size(g,I,!1),UI.size(g,I)[0]]},I.encode=function(g,I,e){return[cg.size(I,e,!1),UI.encode(g,I,e)[0]]},g}(),iI=new Ug([[18,"Private",new sI,null],[[12,38],"FontName","sid",null],[[12,7],"FontMatrix","array",[.001,0,0,.001,0,0]],[[12,5],"PaintType","number",0]]),cI=new Ug([[[12,30],"ROS",["sid","sid","number"],null],[0,"version","sid",null],[1,"Notice","sid",null],[[12,0],"Copyright","sid",null],[2,"FullName","sid",null],[3,"FamilyName","sid",null],[4,"Weight","sid",null],[[12,1],"isFixedPitch","boolean",!1],[[12,2],"ItalicAngle","number",0],[[12,3],"UnderlinePosition","number",-100],[[12,4],"UnderlineThickness","number",50],[[12,5],"PaintType","number",0],[[12,6],"CharstringType","number",2],[[12,7],"FontMatrix","array",[.001,0,0,.001,0,0]],[13,"UniqueID","number",null],[5,"FontBBox","array",[0,0,0,0]],[[12,8],"StrokeWidth","number",0],[14,"XUID","array",null],[15,"charset",QI,ag],[16,"Encoding",tI,lg],[17,"CharStrings",new sg(new Qg),null],[18,"Private",new sI,null],[[12,20],"SyntheticBase","number",null],[[12,21],"PostScript","sid",null],[[12,22],"BaseFontName","sid",null],[[12,23],"BaseFontBlend","delta",null],[[12,31],"CIDFontVersion","number",0],[[12,32],"CIDFontRevision","number",0],[[12,33],"CIDFontType","number",0],[[12,34],"CIDCount","number",8720],[[12,35],"UIDBase","number",null],[[12,37],"FDSelect",new sg(nI),null],[[12,36],"FDArray",new sg(new Qg(iI)),null],[[12,38],"FontName","sid",null]]),AI=new C.a.Struct({length:C.a.uint16,itemVariationStore:zg}),lI=new Ug([[[12,7],"FontMatrix","array",[.001,0,0,.001,0,0]],[17,"CharStrings",new sg(new Qg),null],[[12,37],"FDSelect",new sg(nI),null],[[12,36],"FDArray",new sg(new Qg(iI)),null],[24,"vstore",new sg(AI),null],[25,"maxstack","number",193]]),aI=new C.a.VersionedStruct(C.a.fixed16,{1:{hdrSize:C.a.uint8,offSize:C.a.uint8,nameIndex:new Qg(new C.a.String("length")),topDictIndex:new Qg(cI),stringIndex:new Qg(new C.a.String("length")),globalSubrIndex:new Qg},2:{hdrSize:C.a.uint8,length:C.a.uint16,topDict:lI,globalSubrIndex:new Qg}}),rI=function(){function g(g){this.stream=g,this.decode()}g.decode=function(I){return new g(I)};var I=g.prototype;return I.decode=function(){this.stream.pos;var g=aI.decode(this.stream);for(var I in g){var e=g[I];this[I]=e}if(this.version<2){if(1!==this.topDictIndex.length)throw new Error("Only a single font is allowed in CFF");this.topDict=this.topDictIndex[0]}return this.isCIDFont=null!=this.topDict.ROS,this},I.string=function(g){return this.version>=2?null:g<Ag.length?Ag[g]:this.stringIndex[g-Ag.length]},I.getCharString=function(g){return this.stream.pos=this.topDict.CharStrings[g].offset,this.stream.readBuffer(this.topDict.CharStrings[g].length)},I.getGlyphName=function(g){if(this.version>=2)return null;if(this.isCIDFont)return null;var I=this.topDict.charset;if(Array.isArray(I))return I[g];if(0===g)return".notdef";switch(g-=1,I.version){case 0:return this.string(I.glyphs[g]);case 1:case 2:for(var e=0;e<I.ranges.length;e++){var t=I.ranges[e];if(t.offset<=g&&g<=t.offset+t.nLeft)return this.string(t.first+(g-t.offset))}}return null},I.fdForGlyph=function(g){if(!this.topDict.FDSelect)return null;switch(this.topDict.FDSelect.version){case 0:return this.topDict.FDSelect.fds[g];case 3:case 4:for(var I=this.topDict.FDSelect.ranges,e=0,t=I.length-1;e<=t;){var C=e+t>>1;if(g<I[C].first)t=C-1;else{if(!(C<t&&g>=I[C+1].first))return I[C].fd;e=C+1}}default:throw new Error("Unknown FDSelect version: "+this.topDict.FDSelect.version)}},I.privateDictForGlyph=function(g){if(this.topDict.FDSelect){var I=this.fdForGlyph(g);return this.topDict.FDArray[I]?this.topDict.FDArray[I].Private:null}return this.version<2?this.topDict.Private:this.topDict.FDArray[0].Private},n()(g,[{key:"postscriptName",get:function(){return this.version<2?this.nameIndex[0]:null}},{key:"fullName",get:function(){return this.string(this.topDict.FullName)}},{key:"familyName",get:function(){return this.string(this.topDict.FamilyName)}}]),g}(),oI=new C.a.Struct({glyphIndex:C.a.uint16,vertOriginY:C.a.int16}),dI=new C.a.Struct({majorVersion:C.a.uint16,minorVersion:C.a.uint16,defaultVertOriginY:C.a.int16,numVertOriginYMetrics:C.a.uint16,metrics:new C.a.Array(oI,"numVertOriginYMetrics")}),uI=new C.a.Struct({height:C.a.uint8,width:C.a.uint8,horiBearingX:C.a.int8,horiBearingY:C.a.int8,horiAdvance:C.a.uint8,vertBearingX:C.a.int8,vertBearingY:C.a.int8,vertAdvance:C.a.uint8}),yI=new C.a.Struct({height:C.a.uint8,width:C.a.uint8,bearingX:C.a.int8,bearingY:C.a.int8,advance:C.a.uint8}),bI=new C.a.Struct({glyph:C.a.uint16,xOffset:C.a.int8,yOffset:C.a.int8}),ZI=function(){},mI=function(){};new C.a.VersionedStruct("version",{1:{metrics:yI,data:ZI},2:{metrics:yI,data:mI},5:{data:mI},6:{metrics:uI,data:ZI},7:{metrics:uI,data:mI},8:{metrics:yI,pad:new C.a.Reserved(C.a.uint8),numComponents:C.a.uint16,components:new C.a.Array(bI,"numComponents")},9:{metrics:uI,pad:new C.a.Reserved(C.a.uint8),numComponents:C.a.uint16,components:new C.a.Array(bI,"numComponents")},17:{metrics:yI,dataLen:C.a.uint32,data:new C.a.Buffer("dataLen")},18:{metrics:uI,dataLen:C.a.uint32,data:new C.a.Buffer("dataLen")},19:{dataLen:C.a.uint32,data:new C.a.Buffer("dataLen")}});var xI=new C.a.Struct({ascender:C.a.int8,descender:C.a.int8,widthMax:C.a.uint8,caretSlopeNumerator:C.a.int8,caretSlopeDenominator:C.a.int8,caretOffset:C.a.int8,minOriginSB:C.a.int8,minAdvanceSB:C.a.int8,maxBeforeBL:C.a.int8,minAfterBL:C.a.int8,pad:new C.a.Reserved(C.a.int8,2)}),RI=new C.a.Struct({glyphCode:C.a.uint16,offset:C.a.uint16}),SI=new C.a.VersionedStruct(C.a.uint16,{header:{imageFormat:C.a.uint16,imageDataOffset:C.a.uint32},1:{offsetArray:new C.a.Array(C.a.uint32,(function(g){return g.parent.lastGlyphIndex-g.parent.firstGlyphIndex+1}))},2:{imageSize:C.a.uint32,bigMetrics:uI},3:{offsetArray:new C.a.Array(C.a.uint16,(function(g){return g.parent.lastGlyphIndex-g.parent.firstGlyphIndex+1}))},4:{numGlyphs:C.a.uint32,glyphArray:new C.a.Array(RI,(function(g){return g.numGlyphs+1}))},5:{imageSize:C.a.uint32,bigMetrics:uI,numGlyphs:C.a.uint32,glyphCodeArray:new C.a.Array(C.a.uint16,"numGlyphs")}}),GI=new C.a.Struct({firstGlyphIndex:C.a.uint16,lastGlyphIndex:C.a.uint16,subtable:new C.a.Pointer(C.a.uint32,SI)}),LI=new C.a.Struct({indexSubTableArray:new C.a.Pointer(C.a.uint32,new C.a.Array(GI,1),{type:"parent"}),indexTablesSize:C.a.uint32,numberOfIndexSubTables:C.a.uint32,colorRef:C.a.uint32,hori:xI,vert:xI,startGlyphIndex:C.a.uint16,endGlyphIndex:C.a.uint16,ppemX:C.a.uint8,ppemY:C.a.uint8,bitDepth:C.a.uint8,flags:new C.a.Bitfield(C.a.uint8,["horizontal","vertical"])}),VI=new C.a.Struct({version:C.a.uint32,numSizes:C.a.uint32,sizes:new C.a.Array(LI,"numSizes")}),hI=new C.a.Struct({ppem:C.a.uint16,resolution:C.a.uint16,imageOffsets:new C.a.Array(new C.a.Pointer(C.a.uint32,"void"),(function(g){return g.parent.parent.maxp.numGlyphs+1}))}),DI=new C.a.Struct({version:C.a.uint16,flags:new C.a.Bitfield(C.a.uint16,["renderOutlines"]),numImgTables:C.a.uint32,imageTables:new C.a.Array(new C.a.Pointer(C.a.uint32,hI),"numImgTables")}),pI=new C.a.Struct({gid:C.a.uint16,paletteIndex:C.a.uint16}),EI=new C.a.Struct({gid:C.a.uint16,firstLayerIndex:C.a.uint16,numLayers:C.a.uint16}),NI=new C.a.Struct({version:C.a.uint16,numBaseGlyphRecords:C.a.uint16,baseGlyphRecord:new C.a.Pointer(C.a.uint32,new C.a.Array(EI,"numBaseGlyphRecords")),layerRecords:new C.a.Pointer(C.a.uint32,new C.a.Array(pI,"numLayerRecords"),{lazy:!0}),numLayerRecords:C.a.uint16}),WI=new C.a.Struct({blue:C.a.uint8,green:C.a.uint8,red:C.a.uint8,alpha:C.a.uint8}),fI=new C.a.VersionedStruct(C.a.uint16,{header:{numPaletteEntries:C.a.uint16,numPalettes:C.a.uint16,numColorRecords:C.a.uint16,colorRecords:new C.a.Pointer(C.a.uint32,new C.a.Array(WI,"numColorRecords")),colorRecordIndices:new C.a.Array(C.a.uint16,"numPalettes")},0:{},1:{offsetPaletteTypeArray:new C.a.Pointer(C.a.uint32,new C.a.Array(C.a.uint32,"numPalettes")),offsetPaletteLabelArray:new C.a.Pointer(C.a.uint32,new C.a.Array(C.a.uint16,"numPalettes")),offsetPaletteEntryLabelArray:new C.a.Pointer(C.a.uint32,new C.a.Array(C.a.uint16,"numPaletteEntries"))}}),XI=new C.a.VersionedStruct(C.a.uint16,{1:{coordinate:C.a.int16},2:{coordinate:C.a.int16,referenceGlyph:C.a.uint16,baseCoordPoint:C.a.uint16},3:{coordinate:C.a.int16,deviceTable:new C.a.Pointer(C.a.uint16,Dg)}}),JI=new C.a.Struct({defaultIndex:C.a.uint16,baseCoordCount:C.a.uint16,baseCoords:new C.a.Array(new C.a.Pointer(C.a.uint16,XI),"baseCoordCount")}),vI=new C.a.Struct({tag:new C.a.String(4),minCoord:new C.a.Pointer(C.a.uint16,XI,{type:"parent"}),maxCoord:new C.a.Pointer(C.a.uint16,XI,{type:"parent"})}),kI=new C.a.Struct({minCoord:new C.a.Pointer(C.a.uint16,XI),maxCoord:new C.a.Pointer(C.a.uint16,XI),featMinMaxCount:C.a.uint16,featMinMaxRecords:new C.a.Array(vI,"featMinMaxCount")}),HI=new C.a.Struct({tag:new C.a.String(4),minMax:new C.a.Pointer(C.a.uint16,kI,{type:"parent"})}),MI=new C.a.Struct({baseValues:new C.a.Pointer(C.a.uint16,JI),defaultMinMax:new C.a.Pointer(C.a.uint16,kI),baseLangSysCount:C.a.uint16,baseLangSysRecords:new C.a.Array(HI,"baseLangSysCount")}),YI=new C.a.Struct({tag:new C.a.String(4),script:new C.a.Pointer(C.a.uint16,MI,{type:"parent"})}),wI=new C.a.Array(YI,C.a.uint16),TI=new C.a.Array(new C.a.String(4),C.a.uint16),zI=new C.a.Struct({baseTagList:new C.a.Pointer(C.a.uint16,TI),baseScriptList:new C.a.Pointer(C.a.uint16,wI)}),OI=new C.a.VersionedStruct(C.a.uint32,{header:{horizAxis:new C.a.Pointer(C.a.uint16,zI),vertAxis:new C.a.Pointer(C.a.uint16,zI)},65536:{},65537:{itemVariationStore:new C.a.Pointer(C.a.uint32,zg)}}),KI=new C.a.Array(C.a.uint16,C.a.uint16),jI=new C.a.Struct({coverage:new C.a.Pointer(C.a.uint16,Lg),glyphCount:C.a.uint16,attachPoints:new C.a.Array(new C.a.Pointer(C.a.uint16,KI),"glyphCount")}),PI=new C.a.VersionedStruct(C.a.uint16,{1:{coordinate:C.a.int16},2:{caretValuePoint:C.a.uint16},3:{coordinate:C.a.int16,deviceTable:new C.a.Pointer(C.a.uint16,Dg)}}),_I=new C.a.Array(new C.a.Pointer(C.a.uint16,PI),C.a.uint16),qI=new C.a.Struct({coverage:new C.a.Pointer(C.a.uint16,Lg),ligGlyphCount:C.a.uint16,ligGlyphs:new C.a.Array(new C.a.Pointer(C.a.uint16,_I),"ligGlyphCount")}),$I=new C.a.Struct({markSetTableFormat:C.a.uint16,markSetCount:C.a.uint16,coverage:new C.a.Array(new C.a.Pointer(C.a.uint32,Lg),"markSetCount")}),ge=new C.a.VersionedStruct(C.a.uint32,{header:{glyphClassDef:new C.a.Pointer(C.a.uint16,hg),attachList:new C.a.Pointer(C.a.uint16,jI),ligCaretList:new C.a.Pointer(C.a.uint16,qI),markAttachClassDef:new C.a.Pointer(C.a.uint16,hg)},65536:{},65538:{markGlyphSetsDef:new C.a.Pointer(C.a.uint16,$I)},65539:{markGlyphSetsDef:new C.a.Pointer(C.a.uint16,$I),itemVariationStore:new C.a.Pointer(C.a.uint32,zg)}}),Ie=new C.a.Bitfield(C.a.uint16,["xPlacement","yPlacement","xAdvance","yAdvance","xPlaDevice","yPlaDevice","xAdvDevice","yAdvDevice"]),ee={xPlacement:C.a.int16,yPlacement:C.a.int16,xAdvance:C.a.int16,yAdvance:C.a.int16,xPlaDevice:new C.a.Pointer(C.a.uint16,Dg,{type:"global",relativeTo:"rel"}),yPlaDevice:new C.a.Pointer(C.a.uint16,Dg,{type:"global",relativeTo:"rel"}),xAdvDevice:new C.a.Pointer(C.a.uint16,Dg,{type:"global",relativeTo:"rel"}),yAdvDevice:new C.a.Pointer(C.a.uint16,Dg,{type:"global",relativeTo:"rel"})},te=function(){function g(g){void 0===g&&(g="valueFormat"),this.key=g}var I=g.prototype;return I.buildStruct=function(g){for(var I=g;!I[this.key]&&I.parent;)I=I.parent;if(I[this.key]){var e={rel:function(){return I._startOffset}},t=I[this.key];for(var Q in t)t[Q]&&(e[Q]=ee[Q]);return new C.a.Struct(e)}},I.size=function(g,I){return this.buildStruct(I).size(g,I)},I.decode=function(g,I){var e=this.buildStruct(I).decode(g,I);return delete e.rel,e},g}(),Ce=new C.a.Struct({secondGlyph:C.a.uint16,value1:new te("valueFormat1"),value2:new te("valueFormat2")}),Qe=new C.a.Array(Ce,C.a.uint16),Fe=new C.a.Struct({value1:new te("valueFormat1"),value2:new te("valueFormat2")}),Be=new C.a.VersionedStruct(C.a.uint16,{1:{xCoordinate:C.a.int16,yCoordinate:C.a.int16},2:{xCoordinate:C.a.int16,yCoordinate:C.a.int16,anchorPoint:C.a.uint16},3:{xCoordinate:C.a.int16,yCoordinate:C.a.int16,xDeviceTable:new C.a.Pointer(C.a.uint16,Dg),yDeviceTable:new C.a.Pointer(C.a.uint16,Dg)}}),ne=new C.a.Struct({entryAnchor:new C.a.Pointer(C.a.uint16,Be,{type:"parent"}),exitAnchor:new C.a.Pointer(C.a.uint16,Be,{type:"parent"})}),Ue=new C.a.Struct({class:C.a.uint16,markAnchor:new C.a.Pointer(C.a.uint16,Be,{type:"parent"})}),se=new C.a.Array(Ue,C.a.uint16),ie=new C.a.Array(new C.a.Pointer(C.a.uint16,Be),(function(g){return g.parent.classCount})),ce=new C.a.Array(ie,C.a.uint16),Ae=new C.a.Array(new C.a.Pointer(C.a.uint16,Be),(function(g){return g.parent.parent.classCount})),le=new C.a.Array(Ae,C.a.uint16),ae=new C.a.Array(new C.a.Pointer(C.a.uint16,le),C.a.uint16),re=new C.a.VersionedStruct("lookupType",{1:new C.a.VersionedStruct(C.a.uint16,{1:{coverage:new C.a.Pointer(C.a.uint16,Lg),valueFormat:Ie,value:new te},2:{coverage:new C.a.Pointer(C.a.uint16,Lg),valueFormat:Ie,valueCount:C.a.uint16,values:new C.a.LazyArray(new te,"valueCount")}}),2:new C.a.VersionedStruct(C.a.uint16,{1:{coverage:new C.a.Pointer(C.a.uint16,Lg),valueFormat1:Ie,valueFormat2:Ie,pairSetCount:C.a.uint16,pairSets:new C.a.LazyArray(new C.a.Pointer(C.a.uint16,Qe),"pairSetCount")},2:{coverage:new C.a.Pointer(C.a.uint16,Lg),valueFormat1:Ie,valueFormat2:Ie,classDef1:new C.a.Pointer(C.a.uint16,hg),classDef2:new C.a.Pointer(C.a.uint16,hg),class1Count:C.a.uint16,class2Count:C.a.uint16,classRecords:new C.a.LazyArray(new C.a.LazyArray(Fe,"class2Count"),"class1Count")}}),3:{format:C.a.uint16,coverage:new C.a.Pointer(C.a.uint16,Lg),entryExitCount:C.a.uint16,entryExitRecords:new C.a.Array(ne,"entryExitCount")},4:{format:C.a.uint16,markCoverage:new C.a.Pointer(C.a.uint16,Lg),baseCoverage:new C.a.Pointer(C.a.uint16,Lg),classCount:C.a.uint16,markArray:new C.a.Pointer(C.a.uint16,se),baseArray:new C.a.Pointer(C.a.uint16,ce)},5:{format:C.a.uint16,markCoverage:new C.a.Pointer(C.a.uint16,Lg),ligatureCoverage:new C.a.Pointer(C.a.uint16,Lg),classCount:C.a.uint16,markArray:new C.a.Pointer(C.a.uint16,se),ligatureArray:new C.a.Pointer(C.a.uint16,ae)},6:{format:C.a.uint16,mark1Coverage:new C.a.Pointer(C.a.uint16,Lg),mark2Coverage:new C.a.Pointer(C.a.uint16,Lg),classCount:C.a.uint16,mark1Array:new C.a.Pointer(C.a.uint16,se),mark2Array:new C.a.Pointer(C.a.uint16,ce)},7:Xg,8:kg,9:{posFormat:C.a.uint16,lookupType:C.a.uint16,extension:new C.a.Pointer(C.a.uint32,void 0)}});re.versions[9].extension.type=re;var oe=new C.a.VersionedStruct(C.a.uint32,{header:{scriptList:new C.a.Pointer(C.a.uint16,yg),featureList:new C.a.Pointer(C.a.uint16,mg),lookupList:new C.a.Pointer(C.a.uint16,new Rg(re))},65536:{},65537:{featureVariations:new C.a.Pointer(C.a.uint32,qg)}}),de=new C.a.Array(C.a.uint16,C.a.uint16),ue=de,ye=new C.a.Struct({glyph:C.a.uint16,compCount:C.a.uint16,components:new C.a.Array(C.a.uint16,(function(g){return g.compCount-1}))}),be=new C.a.Array(new C.a.Pointer(C.a.uint16,ye),C.a.uint16),Ze=new C.a.VersionedStruct("lookupType",{1:new C.a.VersionedStruct(C.a.uint16,{1:{coverage:new C.a.Pointer(C.a.uint16,Lg),deltaGlyphID:C.a.int16},2:{coverage:new C.a.Pointer(C.a.uint16,Lg),glyphCount:C.a.uint16,substitute:new C.a.LazyArray(C.a.uint16,"glyphCount")}}),2:{substFormat:C.a.uint16,coverage:new C.a.Pointer(C.a.uint16,Lg),count:C.a.uint16,sequences:new C.a.LazyArray(new C.a.Pointer(C.a.uint16,de),"count")},3:{substFormat:C.a.uint16,coverage:new C.a.Pointer(C.a.uint16,Lg),count:C.a.uint16,alternateSet:new C.a.LazyArray(new C.a.Pointer(C.a.uint16,ue),"count")},4:{substFormat:C.a.uint16,coverage:new C.a.Pointer(C.a.uint16,Lg),count:C.a.uint16,ligatureSets:new C.a.LazyArray(new C.a.Pointer(C.a.uint16,be),"count")},5:Xg,6:kg,7:{substFormat:C.a.uint16,lookupType:C.a.uint16,extension:new C.a.Pointer(C.a.uint32,void 0)},8:{substFormat:C.a.uint16,coverage:new C.a.Pointer(C.a.uint16,Lg),backtrackCoverage:new C.a.Array(new C.a.Pointer(C.a.uint16,Lg),"backtrackGlyphCount"),lookaheadGlyphCount:C.a.uint16,lookaheadCoverage:new C.a.Array(new C.a.Pointer(C.a.uint16,Lg),"lookaheadGlyphCount"),glyphCount:C.a.uint16,substitutes:new C.a.Array(C.a.uint16,"glyphCount")}});Ze.versions[7].extension.type=Ze;var me=new C.a.VersionedStruct(C.a.uint32,{header:{scriptList:new C.a.Pointer(C.a.uint16,yg),featureList:new C.a.Pointer(C.a.uint16,mg),lookupList:new C.a.Pointer(C.a.uint16,new Rg(Ze))},65536:{},65537:{featureVariations:new C.a.Pointer(C.a.uint32,qg)}}),xe=new C.a.Array(C.a.uint16,C.a.uint16),Re=new C.a.Struct({shrinkageEnableGSUB:new C.a.Pointer(C.a.uint16,xe),shrinkageDisableGSUB:new C.a.Pointer(C.a.uint16,xe),shrinkageEnableGPOS:new C.a.Pointer(C.a.uint16,xe),shrinkageDisableGPOS:new C.a.Pointer(C.a.uint16,xe),shrinkageJstfMax:new C.a.Pointer(C.a.uint16,new Rg(re)),extensionEnableGSUB:new C.a.Pointer(C.a.uint16,xe),extensionDisableGSUB:new C.a.Pointer(C.a.uint16,xe),extensionEnableGPOS:new C.a.Pointer(C.a.uint16,xe),extensionDisableGPOS:new C.a.Pointer(C.a.uint16,xe),extensionJstfMax:new C.a.Pointer(C.a.uint16,new Rg(re))}),Se=new C.a.Array(new C.a.Pointer(C.a.uint16,Re),C.a.uint16),Ge=new C.a.Struct({tag:new C.a.String(4),jstfLangSys:new C.a.Pointer(C.a.uint16,Se)}),Le=new C.a.Struct({extenderGlyphs:new C.a.Pointer(C.a.uint16,new C.a.Array(C.a.uint16,C.a.uint16)),defaultLangSys:new C.a.Pointer(C.a.uint16,Se),langSysCount:C.a.uint16,langSysRecords:new C.a.Array(Ge,"langSysCount")}),Ve=new C.a.Struct({tag:new C.a.String(4),script:new C.a.Pointer(C.a.uint16,Le,{type:"parent"})}),he=new C.a.Struct({version:C.a.uint32,scriptCount:C.a.uint16,scriptList:new C.a.Array(Ve,"scriptCount")}),De=function(){function g(g){this._size=g}var I=g.prototype;return I.decode=function(g,I){switch(this.size(0,I)){case 1:return g.readUInt8();case 2:return g.readUInt16BE();case 3:return g.readUInt24BE();case 4:return g.readUInt32BE()}},I.size=function(g,I){return Object(A.resolveLength)(this._size,null,I)},g}(),pe=new C.a.Struct({entry:new De((function(g){return 1+((48&g.parent.entryFormat)>>4)})),outerIndex:function(g){return g.entry>>1+(15&g.parent.entryFormat)},innerIndex:function(g){return g.entry&(1<<1+(15&g.parent.entryFormat))-1}}),Ee=new C.a.Struct({entryFormat:C.a.uint16,mapCount:C.a.uint16,mapData:new C.a.Array(pe,"mapCount")}),Ne=new C.a.Struct({majorVersion:C.a.uint16,minorVersion:C.a.uint16,itemVariationStore:new C.a.Pointer(C.a.uint32,zg),advanceWidthMapping:new C.a.Pointer(C.a.uint32,Ee),LSBMapping:new C.a.Pointer(C.a.uint32,Ee),RSBMapping:new C.a.Pointer(C.a.uint32,Ee)}),We=new C.a.Struct({format:C.a.uint32,length:C.a.uint32,offset:C.a.uint32}),fe=new C.a.Struct({reserved:new C.a.Reserved(C.a.uint16,2),cbSignature:C.a.uint32,signature:new C.a.Buffer("cbSignature")}),Xe=new C.a.Struct({ulVersion:C.a.uint32,usNumSigs:C.a.uint16,usFlag:C.a.uint16,signatures:new C.a.Array(We,"usNumSigs"),signatureBlocks:new C.a.Array(fe,"usNumSigs")}),Je=new C.a.Struct({rangeMaxPPEM:C.a.uint16,rangeGaspBehavior:new C.a.Bitfield(C.a.uint16,["grayscale","gridfit","symmetricSmoothing","symmetricGridfit"])}),ve=new C.a.Struct({version:C.a.uint16,numRanges:C.a.uint16,gaspRanges:new C.a.Array(Je,"numRanges")}),ke=new C.a.Struct({pixelSize:C.a.uint8,maximumWidth:C.a.uint8,widths:new C.a.Array(C.a.uint8,(function(g){return g.parent.parent.maxp.numGlyphs}))}),He=new C.a.Struct({version:C.a.uint16,numRecords:C.a.int16,sizeDeviceRecord:C.a.int32,records:new C.a.Array(ke,"numRecords")}),Me=new C.a.Struct({left:C.a.uint16,right:C.a.uint16,value:C.a.int16}),Ye=new C.a.Struct({firstGlyph:C.a.uint16,nGlyphs:C.a.uint16,offsets:new C.a.Array(C.a.uint16,"nGlyphs"),max:function(g){return g.offsets.length&&Math.max.apply(Math,g.offsets)}}),we=new C.a.Struct({off:function(g){return g._startOffset-g.parent.parent._startOffset},len:function(g){return((g.parent.leftTable.max-g.off)/g.parent.rowWidth+1)*(g.parent.rowWidth/2)},values:new C.a.LazyArray(C.a.int16,"len")}),Te=new C.a.VersionedStruct("format",{0:{nPairs:C.a.uint16,searchRange:C.a.uint16,entrySelector:C.a.uint16,rangeShift:C.a.uint16,pairs:new C.a.Array(Me,"nPairs")},2:{rowWidth:C.a.uint16,leftTable:new C.a.Pointer(C.a.uint16,Ye,{type:"parent"}),rightTable:new C.a.Pointer(C.a.uint16,Ye,{type:"parent"}),array:new C.a.Pointer(C.a.uint16,we,{type:"parent"})},3:{glyphCount:C.a.uint16,kernValueCount:C.a.uint8,leftClassCount:C.a.uint8,rightClassCount:C.a.uint8,flags:C.a.uint8,kernValue:new C.a.Array(C.a.int16,"kernValueCount"),leftClass:new C.a.Array(C.a.uint8,"glyphCount"),rightClass:new C.a.Array(C.a.uint8,"glyphCount"),kernIndex:new C.a.Array(C.a.uint8,(function(g){return g.leftClassCount*g.rightClassCount}))}}),ze=new C.a.VersionedStruct("version",{0:{subVersion:C.a.uint16,length:C.a.uint16,format:C.a.uint8,coverage:new C.a.Bitfield(C.a.uint8,["horizontal","minimum","crossStream","override"]),subtable:Te,padding:new C.a.Reserved(C.a.uint8,(function(g){return g.length-g._currentOffset}))},1:{length:C.a.uint32,coverage:new C.a.Bitfield(C.a.uint8,[null,null,null,null,null,"variation","crossStream","vertical"]),format:C.a.uint8,tupleIndex:C.a.uint16,subtable:Te,padding:new C.a.Reserved(C.a.uint8,(function(g){return g.length-g._currentOffset}))}}),Oe=new C.a.VersionedStruct(C.a.uint16,{0:{nTables:C.a.uint16,tables:new C.a.Array(ze,"nTables")},1:{reserved:new C.a.Reserved(C.a.uint16),nTables:C.a.uint32,tables:new C.a.Array(ze,"nTables")}}),Ke=new C.a.Struct({version:C.a.uint16,numGlyphs:C.a.uint16,yPels:new C.a.Array(C.a.uint8,"numGlyphs")}),je=new C.a.Struct({version:C.a.uint16,fontNumber:C.a.uint32,pitch:C.a.uint16,xHeight:C.a.uint16,style:C.a.uint16,typeFamily:C.a.uint16,capHeight:C.a.uint16,symbolSet:C.a.uint16,typeface:new C.a.String(16),characterComplement:new C.a.String(8),fileName:new C.a.String(6),strokeWeight:new C.a.String(1),widthType:new C.a.String(1),serifStyle:C.a.uint8,reserved:new C.a.Reserved(C.a.uint8)}),Pe=new C.a.Struct({bCharSet:C.a.uint8,xRatio:C.a.uint8,yStartRatio:C.a.uint8,yEndRatio:C.a.uint8}),_e=new C.a.Struct({yPelHeight:C.a.uint16,yMax:C.a.int16,yMin:C.a.int16}),qe=new C.a.Struct({recs:C.a.uint16,startsz:C.a.uint8,endsz:C.a.uint8,entries:new C.a.Array(_e,"recs")}),$e=new C.a.Struct({version:C.a.uint16,numRecs:C.a.uint16,numRatios:C.a.uint16,ratioRanges:new C.a.Array(Pe,"numRatios"),offsets:new C.a.Array(C.a.uint16,"numRatios"),groups:new C.a.Array(qe,"numRecs")}),gt=new C.a.Struct({version:C.a.uint16,ascent:C.a.int16,descent:C.a.int16,lineGap:C.a.int16,advanceHeightMax:C.a.int16,minTopSideBearing:C.a.int16,minBottomSideBearing:C.a.int16,yMaxExtent:C.a.int16,caretSlopeRise:C.a.int16,caretSlopeRun:C.a.int16,caretOffset:C.a.int16,reserved:new C.a.Reserved(C.a.int16,4),metricDataFormat:C.a.int16,numberOfMetrics:C.a.uint16}),It=new C.a.Struct({advance:C.a.uint16,bearing:C.a.int16}),et=new C.a.Struct({metrics:new C.a.LazyArray(It,(function(g){return g.parent.vhea.numberOfMetrics})),bearings:new C.a.LazyArray(C.a.int16,(function(g){return g.parent.maxp.numGlyphs-g.parent.vhea.numberOfMetrics}))}),tt=new C.a.Fixed(16,"BE",14),Ct=new C.a.Struct({fromCoord:tt,toCoord:tt}),Qt=new C.a.Struct({pairCount:C.a.uint16,correspondence:new C.a.Array(Ct,"pairCount")}),Ft=new C.a.Struct({version:C.a.fixed32,axisCount:C.a.uint32,segment:new C.a.Array(Qt,"axisCount")}),Bt=function(){function g(g,I,e){this.type=g,this.stream=I,this.parent=e,this.base=this.stream.pos,this._items=[]}var I=g.prototype;return I.getItem=function(g){if(null==this._items[g]){var I=this.stream.pos;this.stream.pos=this.base+this.type.size(null,this.parent)*g,this._items[g]=this.type.decode(this.stream,this.parent),this.stream.pos=I}return this._items[g]},I.inspect=function(){return"[UnboundedArray "+this.type.constructor.name+"]"},g}(),nt=function(g){function I(I){return g.call(this,I,0)||this}return c()(I,g),I.prototype.decode=function(g,I){return new Bt(this.type,g,I)},I}(C.a.Array),Ut=function(g){void 0===g&&(g=C.a.uint16),g=new(function(){function g(g){this.type=g}var I=g.prototype;return I.decode=function(g,I){return I=I.parent.parent,this.type.decode(g,I)},I.size=function(g,I){return I=I.parent.parent,this.type.size(g,I)},I.encode=function(g,I,e){return e=e.parent.parent,this.type.encode(g,I,e)},g}())(g);var I=new C.a.Struct({unitSize:C.a.uint16,nUnits:C.a.uint16,searchRange:C.a.uint16,entrySelector:C.a.uint16,rangeShift:C.a.uint16}),e=new C.a.Struct({lastGlyph:C.a.uint16,firstGlyph:C.a.uint16,value:g}),t=new C.a.Struct({lastGlyph:C.a.uint16,firstGlyph:C.a.uint16,values:new C.a.Pointer(C.a.uint16,new C.a.Array(g,(function(g){return g.lastGlyph-g.firstGlyph+1})),{type:"parent"})}),Q=new C.a.Struct({glyph:C.a.uint16,value:g});return new C.a.VersionedStruct(C.a.uint16,{0:{values:new nt(g)},2:{binarySearchHeader:I,segments:new C.a.Array(e,(function(g){return g.binarySearchHeader.nUnits}))},4:{binarySearchHeader:I,segments:new C.a.Array(t,(function(g){return g.binarySearchHeader.nUnits}))},6:{binarySearchHeader:I,segments:new C.a.Array(Q,(function(g){return g.binarySearchHeader.nUnits}))},8:{firstGlyph:C.a.uint16,count:C.a.uint16,values:new C.a.Array(g,"count")}})};function st(g,I){void 0===g&&(g={}),void 0===I&&(I=C.a.uint16);var e=Object.assign({newState:C.a.uint16,flags:C.a.uint16},g),t=new C.a.Struct(e),Q=new nt(new C.a.Array(C.a.uint16,(function(g){return g.nClasses})));return new C.a.Struct({nClasses:C.a.uint32,classTable:new C.a.Pointer(C.a.uint32,new Ut(I)),stateArray:new C.a.Pointer(C.a.uint32,Q),entryTable:new C.a.Pointer(C.a.uint32,new nt(t))})}var it=new C.a.VersionedStruct("format",{0:{deltas:new C.a.Array(C.a.int16,32)},1:{deltas:new C.a.Array(C.a.int16,32),mappingData:new Ut(C.a.uint16)},2:{standardGlyph:C.a.uint16,controlPoints:new C.a.Array(C.a.uint16,32)},3:{standardGlyph:C.a.uint16,controlPoints:new C.a.Array(C.a.uint16,32),mappingData:new Ut(C.a.uint16)}}),ct=new C.a.Struct({version:C.a.fixed32,format:C.a.uint16,defaultBaseline:C.a.uint16,subtable:it}),At=new C.a.Struct({setting:C.a.uint16,nameIndex:C.a.int16,name:function(g){return g.parent.parent.parent.name.records.fontFeatures[g.nameIndex]}}),lt=new C.a.Struct({feature:C.a.uint16,nSettings:C.a.uint16,settingTable:new C.a.Pointer(C.a.uint32,new C.a.Array(At,"nSettings"),{type:"parent"}),featureFlags:new C.a.Bitfield(C.a.uint8,[null,null,null,null,null,null,"hasDefault","exclusive"]),defaultSetting:C.a.uint8,nameIndex:C.a.int16,name:function(g){return g.parent.parent.name.records.fontFeatures[g.nameIndex]}}),at=new C.a.Struct({version:C.a.fixed32,featureNameCount:C.a.uint16,reserved1:new C.a.Reserved(C.a.uint16),reserved2:new C.a.Reserved(C.a.uint32),featureNames:new C.a.Array(lt,"featureNameCount")}),rt=new C.a.Struct({axisTag:new C.a.String(4),minValue:C.a.fixed32,defaultValue:C.a.fixed32,maxValue:C.a.fixed32,flags:C.a.uint16,nameID:C.a.uint16,name:function(g){return g.parent.parent.name.records.fontFeatures[g.nameID]}}),ot=new C.a.Struct({nameID:C.a.uint16,name:function(g){return g.parent.parent.name.records.fontFeatures[g.nameID]},flags:C.a.uint16,coord:new C.a.Array(C.a.fixed32,(function(g){return g.parent.axisCount})),postscriptNameID:new C.a.Optional(C.a.uint16,(function(g){return g.parent.instanceSize-g._currentOffset>0}))}),dt=new C.a.Struct({version:C.a.fixed32,offsetToData:C.a.uint16,countSizePairs:C.a.uint16,axisCount:C.a.uint16,axisSize:C.a.uint16,instanceCount:C.a.uint16,instanceSize:C.a.uint16,axis:new C.a.Array(rt,"axisCount"),instance:new C.a.Array(ot,"instanceCount")}),ut=new C.a.Fixed(16,"BE",14),yt=function(){function g(){}return g.decode=function(g,I){return I.flags?g.readUInt32BE():2*g.readUInt16BE()},g}(),bt=new C.a.Struct({version:C.a.uint16,reserved:new C.a.Reserved(C.a.uint16),axisCount:C.a.uint16,globalCoordCount:C.a.uint16,globalCoords:new C.a.Pointer(C.a.uint32,new C.a.Array(new C.a.Array(ut,"axisCount"),"globalCoordCount")),glyphCount:C.a.uint16,flags:C.a.uint16,offsetToData:C.a.uint32,offsets:new C.a.Array(new C.a.Pointer(yt,"void",{relativeTo:"offsetToData",allowNull:!1}),(function(g){return g.glyphCount+1}))}),Zt=new C.a.Struct({length:C.a.uint16,coverage:C.a.uint16,subFeatureFlags:C.a.uint32,stateTable:new function(g,I){void 0===g&&(g={});var e=new C.a.Struct({version:function(){return 8},firstGlyph:C.a.uint16,values:new C.a.Array(C.a.uint8,C.a.uint16)}),t=Object.assign({newStateOffset:C.a.uint16,newState:function(g){return(g.newStateOffset-(g.parent.stateArray.base-g.parent._startOffset))/g.parent.nClasses},flags:C.a.uint16},g),Q=new C.a.Struct(t),F=new nt(new C.a.Array(C.a.uint8,(function(g){return g.nClasses})));return new C.a.Struct({nClasses:C.a.uint16,classTable:new C.a.Pointer(C.a.uint16,e),stateArray:new C.a.Pointer(C.a.uint16,F),entryTable:new C.a.Pointer(C.a.uint16,new nt(Q))})}}),mt=new C.a.Struct({justClass:C.a.uint32,beforeGrowLimit:C.a.fixed32,beforeShrinkLimit:C.a.fixed32,afterGrowLimit:C.a.fixed32,afterShrinkLimit:C.a.fixed32,growFlags:C.a.uint16,shrinkFlags:C.a.uint16}),xt=new C.a.Array(mt,C.a.uint32),Rt=new C.a.VersionedStruct("actionType",{0:{lowerLimit:C.a.fixed32,upperLimit:C.a.fixed32,order:C.a.uint16,glyphs:new C.a.Array(C.a.uint16,C.a.uint16)},1:{addGlyph:C.a.uint16},2:{substThreshold:C.a.fixed32,addGlyph:C.a.uint16,substGlyph:C.a.uint16},3:{},4:{variationAxis:C.a.uint32,minimumLimit:C.a.fixed32,noStretchValue:C.a.fixed32,maximumLimit:C.a.fixed32},5:{flags:C.a.uint16,glyph:C.a.uint16}}),St=new C.a.Struct({actionClass:C.a.uint16,actionType:C.a.uint16,actionLength:C.a.uint32,actionData:Rt,padding:new C.a.Reserved(C.a.uint8,(function(g){return g.actionLength-g._currentOffset}))}),Gt=new C.a.Array(St,C.a.uint32),Lt=new C.a.Struct({lookupTable:new Ut(new C.a.Pointer(C.a.uint16,Gt))}),Vt=new C.a.Struct({classTable:new C.a.Pointer(C.a.uint16,Zt,{type:"parent"}),wdcOffset:C.a.uint16,postCompensationTable:new C.a.Pointer(C.a.uint16,Lt,{type:"parent"}),widthDeltaClusters:new Ut(new C.a.Pointer(C.a.uint16,xt,{type:"parent",relativeTo:"wdcOffset"}))}),ht=new C.a.Struct({version:C.a.uint32,format:C.a.uint16,horizontal:new C.a.Pointer(C.a.uint16,Vt),vertical:new C.a.Pointer(C.a.uint16,Vt)}),Dt={action:C.a.uint16},pt={markIndex:C.a.uint16,currentIndex:C.a.uint16},Et={currentInsertIndex:C.a.uint16,markedInsertIndex:C.a.uint16},Nt=new C.a.Struct({items:new nt(new C.a.Pointer(C.a.uint32,new Ut))}),Wt=new C.a.VersionedStruct("type",{0:{stateTable:new st},1:{stateTable:new st(pt),substitutionTable:new C.a.Pointer(C.a.uint32,Nt)},2:{stateTable:new st(Dt),ligatureActions:new C.a.Pointer(C.a.uint32,new nt(C.a.uint32)),components:new C.a.Pointer(C.a.uint32,new nt(C.a.uint16)),ligatureList:new C.a.Pointer(C.a.uint32,new nt(C.a.uint16))},4:{lookupTable:new Ut},5:{stateTable:new st(Et),insertionActions:new C.a.Pointer(C.a.uint32,new nt(C.a.uint16))}}),ft=new C.a.Struct({length:C.a.uint32,coverage:C.a.uint24,type:C.a.uint8,subFeatureFlags:C.a.uint32,table:Wt,padding:new C.a.Reserved(C.a.uint8,(function(g){return g.length-g._currentOffset}))}),Xt=new C.a.Struct({featureType:C.a.uint16,featureSetting:C.a.uint16,enableFlags:C.a.uint32,disableFlags:C.a.uint32}),Jt=new C.a.Struct({defaultFlags:C.a.uint32,chainLength:C.a.uint32,nFeatureEntries:C.a.uint32,nSubtables:C.a.uint32,features:new C.a.Array(Xt,"nFeatureEntries"),subtables:new C.a.Array(ft,"nSubtables")}),vt=new C.a.Struct({version:C.a.uint16,unused:new C.a.Reserved(C.a.uint16),nChains:C.a.uint32,chains:new C.a.Array(Jt,"nChains")}),kt=new C.a.Struct({left:C.a.int16,top:C.a.int16,right:C.a.int16,bottom:C.a.int16}),Ht=new C.a.Struct({version:C.a.fixed32,format:C.a.uint16,lookupTable:new Ut(kt)}),Mt={};Mt.cmap=X,Mt.head=J,Mt.hhea=v,Mt.hmtx=H,Mt.maxp=M,Mt.name=j,Mt["OS/2"]=_,Mt.post=$,Mt.fpgm=Ig,Mt.loca=eg,Mt.prep=tg,Mt["cvt "]=gg,Mt.glyf=Cg,Mt["CFF "]=rI,Mt.CFF2=rI,Mt.VORG=dI,Mt.EBLC=VI,Mt.CBLC=Mt.EBLC,Mt.sbix=DI,Mt.COLR=NI,Mt.CPAL=fI,Mt.BASE=OI,Mt.GDEF=ge,Mt.GPOS=oe,Mt.GSUB=me,Mt.JSTF=he,Mt.HVAR=Ne,Mt.DSIG=Xe,Mt.gasp=ve,Mt.hdmx=He,Mt.kern=Oe,Mt.LTSH=Ke,Mt.PCLT=je,Mt.VDMX=$e,Mt.vhea=gt,Mt.vmtx=et,Mt.avar=Ft,Mt.bsln=ct,Mt.feat=at,Mt.fvar=dt,Mt.gvar=bt,Mt.just=ht,Mt.morx=vt,Mt.opbd=Ht;var Yt,wt=new C.a.Struct({tag:new C.a.String(4),checkSum:C.a.uint32,offset:new C.a.Pointer(C.a.uint32,"void",{type:"global"}),length:C.a.uint32}),Tt=new C.a.Struct({tag:new C.a.String(4),numTables:C.a.uint16,searchRange:C.a.uint16,entrySelector:C.a.uint16,rangeShift:C.a.uint16,tables:new C.a.Array(wt,"numTables")});function zt(g,I){for(var e=0,t=g.length-1;e<=t;){var C=e+t>>1,Q=I(g[C]);if(Q<0)t=C-1;else{if(!(Q>0))return C;e=C+1}}return-1}function Ot(g,I){for(var e=[];g<I;)e.push(g++);return e}Tt.process=function(){for(var g,I={},e=F()(this.tables);!(g=e()).done;){var t=g.value;I[t.tag]=t}this.tables=I},Tt.preEncode=function(g){var I=[];for(var e in this.tables){var t=this.tables[e];t&&I.push({tag:e,checkSum:0,offset:new C.a.VoidPointer(Mt[e],t),length:Mt[e].size(t)})}this.tag="true",this.numTables=I.length,this.tables=I;var Q=Math.floor(Math.log(this.numTables)/Math.LN2),F=Math.pow(2,Q);this.searchRange=16*F,this.entrySelector=Math.log(F)/Math.LN2,this.rangeShift=16*this.numTables-this.searchRange};try{var Kt=e(533)}catch(zF){}var jt=(Yt=function(){function g(g){if(this.encoding=null,this.cmap=this.findSubtable(g,[[3,10],[0,6],[0,4],[3,1],[0,3],[0,2],[0,1],[0,0]]),!this.cmap&&Kt)for(var I,e=F()(g.tables);!(I=e()).done;){var t=I.value,C=Y(t.platformID,t.encodingID,t.table.language-1);Kt.encodingExists(C)&&(this.cmap=t.table,this.encoding=C)}if(!this.cmap)throw new Error("Could not find a supported cmap table");this.uvs=this.findSubtable(g,[[0,5]]),this.uvs&&14!==this.uvs.version&&(this.uvs=null)}var I=g.prototype;return I.findSubtable=function(g,I){for(var e,t=F()(I);!(e=t()).done;)for(var C,Q=e.value,B=Q[0],n=Q[1],U=F()(g.tables);!(C=U()).done;){var s=C.value;if(s.platformID===B&&s.encodingID===n)return s.table}return null},I.lookup=function(g,I){if(this.encoding){var e=Kt.encode(String.fromCodePoint(g),this.encoding);g=0;for(var t=0;t<e.length;t++)g=g<<8|e[t]}else if(I){var C=this.getVariationSelector(g,I);if(C)return C}var Q=this.cmap;switch(Q.version){case 0:return Q.codeMap.get(g)||0;case 4:for(var F=0,B=Q.segCount-1;F<=B;){var n=F+B>>1;if(g<Q.startCode.get(n))B=n-1;else{if(!(g>Q.endCode.get(n))){var U=Q.idRangeOffset.get(n),s=void 0;if(0===U)s=g+Q.idDelta.get(n);else{var i=U/2+(g-Q.startCode.get(n))-(Q.segCount-n);0!==(s=Q.glyphIndexArray.get(i)||0)&&(s+=Q.idDelta.get(n))}return 65535&s}F=n+1}}return 0;case 8:throw new Error("TODO: cmap format 8");case 6:case 10:return Q.glyphIndices.get(g-Q.firstCode)||0;case 12:case 13:for(var c=0,A=Q.nGroups-1;c<=A;){var l=c+A>>1,a=Q.groups.get(l);if(g<a.startCharCode)A=l-1;else{if(!(g>a.endCharCode))return 12===Q.version?a.glyphID+(g-a.startCharCode):a.glyphID;c=l+1}}return 0;case 14:throw new Error("TODO: cmap format 14");default:throw new Error("Unknown cmap format "+Q.version)}},I.getVariationSelector=function(g,I){if(!this.uvs)return 0;var e=this.uvs.varSelectors.toArray(),t=zt(e,(function(g){return I-g.varSelector})),C=e[t];return-1!==t&&C.defaultUVS&&(t=zt(C.defaultUVS,(function(I){return g<I.startUnicodeValue?-1:g>I.startUnicodeValue+I.additionalCount?1:0}))),-1!==t&&C.nonDefaultUVS&&-1!==(t=zt(C.nonDefaultUVS,(function(I){return g-I.unicodeValue})))?C.nonDefaultUVS[t].glyphID:0},I.getCharacterSet=function(){var g=this.cmap;switch(g.version){case 0:return Ot(0,g.codeMap.length);case 4:for(var I=[],e=g.endCode.toArray(),t=0;t<e.length;t++){var C=e[t]+1,Q=g.startCode.get(t);I.push.apply(I,Ot(Q,C))}return I;case 8:throw new Error("TODO: cmap format 8");case 6:case 10:return Ot(g.firstCode,g.firstCode+g.glyphIndices.length);case 12:case 13:for(var B,n=[],U=F()(g.groups.toArray());!(B=U()).done;){var s=B.value;n.push.apply(n,Ot(s.startCharCode,s.endCharCode+1))}return n;case 14:throw new Error("TODO: cmap format 14");default:throw new Error("Unknown cmap format "+g.version)}},I.codePointsForGlyph=function(g){var I=this.cmap;switch(I.version){case 0:for(var e=[],t=0;t<256;t++)I.codeMap.get(t)===g&&e.push(t);return e;case 4:for(var C=[],Q=0;Q<I.segCount;Q++)for(var B=I.endCode.get(Q),n=I.startCode.get(Q),U=I.idRangeOffset.get(Q),s=I.idDelta.get(Q),i=n;i<=B;i++){var c=0;if(0===U)c=i+s;else{var A=U/2+(i-n)-(I.segCount-Q);0!==(c=I.glyphIndexArray.get(A)||0)&&(c+=s)}c===g&&C.push(i)}return C;case 12:for(var l,a=[],r=F()(I.groups.toArray());!(l=r()).done;){var o=l.value;g>=o.glyphID&&g<=o.glyphID+(o.endCharCode-o.startCharCode)&&a.push(o.startCharCode+(g-o.glyphID))}return a;case 13:for(var d,u=[],y=F()(I.groups.toArray());!(d=y()).done;){var b=d.value;g===b.glyphID&&u.push.apply(u,Ot(b.startCharCode,b.endCharCode+1))}return u;default:throw new Error("Unknown cmap format "+I.version)}},g}(),s()(Yt.prototype,"getCharacterSet",[G],Object.getOwnPropertyDescriptor(Yt.prototype,"getCharacterSet"),Yt.prototype),s()(Yt.prototype,"codePointsForGlyph",[G],Object.getOwnPropertyDescriptor(Yt.prototype,"codePointsForGlyph"),Yt.prototype),Yt),Pt=function(){function g(g){this.kern=g.kern}var I=g.prototype;return I.process=function(g,I){for(var e=0;e<g.length-1;e++){var t=g[e].id,C=g[e+1].id;I[e].xAdvance+=this.getKerning(t,C)}},I.getKerning=function(g,I){for(var e,t=0,C=F()(this.kern.tables);!(e=C()).done;){var Q=e.value;if(!Q.coverage.crossStream){switch(Q.version){case 0:if(!Q.coverage.horizontal)continue;break;case 1:if(Q.coverage.vertical||Q.coverage.variation)continue;break;default:throw new Error("Unsupported kerning table version "+Q.version)}var B=0,n=Q.subtable;switch(Q.format){case 0:var U=zt(n.pairs,(function(e){return g-e.left||I-e.right}));U>=0&&(B=n.pairs[U].value);break;case 2:var s=0,i=0;s=g>=n.leftTable.firstGlyph&&g<n.leftTable.firstGlyph+n.leftTable.nGlyphs?n.leftTable.offsets[g-n.leftTable.firstGlyph]:n.array.off,I>=n.rightTable.firstGlyph&&I<n.rightTable.firstGlyph+n.rightTable.nGlyphs&&(i=n.rightTable.offsets[I-n.rightTable.firstGlyph]);var c=(s+i-n.array.off)/2;B=n.array.values.get(c);break;case 3:if(g>=n.glyphCount||I>=n.glyphCount)return 0;B=n.kernValue[n.kernIndex[n.leftClass[g]*n.rightClassCount+n.rightClass[I]]];break;default:throw new Error("Unsupported kerning sub-table format "+Q.format)}Q.coverage.override?t=B:t+=B}}return t},g}(),_t=function(){function g(g){this.font=g}var I=g.prototype;return I.positionGlyphs=function(g,I){for(var e=0,t=0,C=0;C<g.length;C++){g[C].isMark?t=C:(e!==t&&this.positionCluster(g,I,e,t),e=t=C)}return e!==t&&this.positionCluster(g,I,e,t),I},I.positionCluster=function(g,I,e,t){var C=g[e],Q=C.cbox.copy();C.codePoints.length>1&&(Q.minX+=(C.codePoints.length-1)*Q.width/C.codePoints.length);for(var F=-I[e].xAdvance,B=0,n=this.font.unitsPerEm/16,U=e+1;U<=t;U++){var s=g[U],i=s.cbox,c=I[U],A=this.getCombiningClass(s.codePoints[0]);if("Not_Reordered"!==A){switch(c.xOffset=c.yOffset=0,A){case"Double_Above":case"Double_Below":c.xOffset+=Q.minX-i.width/2-i.minX;break;case"Attached_Below_Left":case"Below_Left":case"Above_Left":c.xOffset+=Q.minX-i.minX;break;case"Attached_Above_Right":case"Below_Right":case"Above_Right":c.xOffset+=Q.maxX-i.width-i.minX;break;default:c.xOffset+=Q.minX+(Q.width-i.width)/2-i.minX}switch(A){case"Double_Below":case"Below_Left":case"Below":case"Below_Right":case"Attached_Below_Left":case"Attached_Below":"Attached_Below_Left"!==A&&"Attached_Below"!==A||(Q.minY+=n),c.yOffset=-Q.minY-i.maxY,Q.minY+=i.height;break;case"Double_Above":case"Above_Left":case"Above":case"Above_Right":case"Attached_Above":case"Attached_Above_Right":"Attached_Above"!==A&&"Attached_Above_Right"!==A||(Q.maxY+=n),c.yOffset=Q.maxY-i.minY,Q.maxY+=i.height}c.xAdvance=c.yAdvance=0,c.xOffset+=F,c.yOffset+=B}else F-=c.xAdvance,B-=c.yAdvance}},I.getCombiningClass=function(g){var I=r.a.getCombiningClass(g);if(3584===(-256&g))if("Not_Reordered"===I)switch(g){case 3633:case 3636:case 3637:case 3638:case 3639:case 3655:case 3660:case 3645:case 3662:return"Above_Right";case 3761:case 3764:case 3765:case 3766:case 3767:case 3771:case 3788:case 3789:return"Above";case 3772:return"Below"}else if(3642===g)return"Below_Right";switch(I){case"CCC10":case"CCC11":case"CCC12":case"CCC13":case"CCC14":case"CCC15":case"CCC16":case"CCC17":case"CCC18":case"CCC20":case"CCC22":return"Below";case"CCC23":return"Attached_Above";case"CCC24":return"Above_Right";case"CCC25":case"CCC19":return"Above_Left";case"CCC26":return"Above";case"CCC21":break;case"CCC27":case"CCC28":case"CCC30":case"CCC31":case"CCC33":case"CCC34":case"CCC35":case"CCC36":return"Above";case"CCC29":case"CCC32":return"Below";case"CCC103":return"Below_Right";case"CCC107":return"Above_Right";case"CCC118":return"Below";case"CCC122":return"Above";case"CCC129":case"CCC132":return"Below";case"CCC130":return"Above"}return I},g}(),qt=function(){function g(g,I,e,t){void 0===g&&(g=1/0),void 0===I&&(I=1/0),void 0===e&&(e=-1/0),void 0===t&&(t=-1/0),this.minX=g,this.minY=I,this.maxX=e,this.maxY=t}var I=g.prototype;return I.addPoint=function(g,I){Math.abs(g)!==1/0&&(g<this.minX&&(this.minX=g),g>this.maxX&&(this.maxX=g)),Math.abs(I)!==1/0&&(I<this.minY&&(this.minY=I),I>this.maxY&&(this.maxY=I))},I.copy=function(){return new g(this.minX,this.minY,this.maxX,this.maxY)},n()(g,[{key:"width",get:function(){return this.maxX-this.minX}},{key:"height",get:function(){return this.maxY-this.minY}}]),g}(),$t={Caucasian_Albanian:"aghb",Arabic:"arab",Imperial_Aramaic:"armi",Armenian:"armn",Avestan:"avst",Balinese:"bali",Bamum:"bamu",Bassa_Vah:"bass",Batak:"batk",Bengali:["bng2","beng"],Bopomofo:"bopo",Brahmi:"brah",Braille:"brai",Buginese:"bugi",Buhid:"buhd",Chakma:"cakm",Canadian_Aboriginal:"cans",Carian:"cari",Cham:"cham",Cherokee:"cher",Coptic:"copt",Cypriot:"cprt",Cyrillic:"cyrl",Devanagari:["dev2","deva"],Deseret:"dsrt",Duployan:"dupl",Egyptian_Hieroglyphs:"egyp",Elbasan:"elba",Ethiopic:"ethi",Georgian:"geor",Glagolitic:"glag",Gothic:"goth",Grantha:"gran",Greek:"grek",Gujarati:["gjr2","gujr"],Gurmukhi:["gur2","guru"],Hangul:"hang",Han:"hani",Hanunoo:"hano",Hebrew:"hebr",Hiragana:"hira",Pahawh_Hmong:"hmng",Katakana_Or_Hiragana:"hrkt",Old_Italic:"ital",Javanese:"java",Kayah_Li:"kali",Katakana:"kana",Kharoshthi:"khar",Khmer:"khmr",Khojki:"khoj",Kannada:["knd2","knda"],Kaithi:"kthi",Tai_Tham:"lana",Lao:"lao ",Latin:"latn",Lepcha:"lepc",Limbu:"limb",Linear_A:"lina",Linear_B:"linb",Lisu:"lisu",Lycian:"lyci",Lydian:"lydi",Mahajani:"mahj",Mandaic:"mand",Manichaean:"mani",Mende_Kikakui:"mend",Meroitic_Cursive:"merc",Meroitic_Hieroglyphs:"mero",Malayalam:["mlm2","mlym"],Modi:"modi",Mongolian:"mong",Mro:"mroo",Meetei_Mayek:"mtei",Myanmar:["mym2","mymr"],Old_North_Arabian:"narb",Nabataean:"nbat",Nko:"nko ",Ogham:"ogam",Ol_Chiki:"olck",Old_Turkic:"orkh",Oriya:["ory2","orya"],Osmanya:"osma",Palmyrene:"palm",Pau_Cin_Hau:"pauc",Old_Permic:"perm",Phags_Pa:"phag",Inscriptional_Pahlavi:"phli",Psalter_Pahlavi:"phlp",Phoenician:"phnx",Miao:"plrd",Inscriptional_Parthian:"prti",Rejang:"rjng",Runic:"runr",Samaritan:"samr",Old_South_Arabian:"sarb",Saurashtra:"saur",Shavian:"shaw",Sharada:"shrd",Siddham:"sidd",Khudawadi:"sind",Sinhala:"sinh",Sora_Sompeng:"sora",Sundanese:"sund",Syloti_Nagri:"sylo",Syriac:"syrc",Tagbanwa:"tagb",Takri:"takr",Tai_Le:"tale",New_Tai_Lue:"talu",Tamil:["tml2","taml"],Tai_Viet:"tavt",Telugu:["tel2","telu"],Tifinagh:"tfng",Tagalog:"tglg",Thaana:"thaa",Thai:"thai",Tibetan:"tibt",Tirhuta:"tirh",Ugaritic:"ugar",Vai:"vai ",Warang_Citi:"wara",Old_Persian:"xpeo",Cuneiform:"xsux",Yi:"yi  ",Inherited:"zinh",Common:"zyyy",Unknown:"zzzz"},gC={};for(var IC in $t){var eC=$t[IC];if(Array.isArray(eC))for(var tC,CC=F()(eC);!(tC=CC()).done;){var QC=tC.value;gC[QC]=IC}else gC[eC]=IC}var FC={arab:!0,hebr:!0,syrc:!0,thaa:!0,cprt:!0,khar:!0,phnx:!0,"nko ":!0,lydi:!0,avst:!0,armi:!0,phli:!0,prti:!0,sarb:!0,orkh:!0,samr:!0,mand:!0,merc:!0,mero:!0,mani:!0,mend:!0,nbat:!0,narb:!0,palm:!0,phlp:!0};function BC(g){return FC[g]?"rtl":"ltr"}for(var nC=function(){function g(g,I,e,t,C){if(this.glyphs=g,this.positions=null,this.script=e,this.language=t||null,this.direction=C||BC(e),this.features={},Array.isArray(I))for(var Q,B=F()(I);!(Q=B()).done;){var n=Q.value;this.features[n]=!0}else"object"===typeof I&&(this.features=I)}return n()(g,[{key:"advanceWidth",get:function(){for(var g,I=0,e=F()(this.positions);!(g=e()).done;){I+=g.value.xAdvance}return I}},{key:"advanceHeight",get:function(){for(var g,I=0,e=F()(this.positions);!(g=e()).done;){I+=g.value.yAdvance}return I}},{key:"bbox",get:function(){for(var g=new qt,I=0,e=0,t=0;t<this.glyphs.length;t++){var C=this.glyphs[t],Q=this.positions[t],F=C.bbox;g.addPoint(F.minX+I+Q.xOffset,F.minY+e+Q.yOffset),g.addPoint(F.maxX+I+Q.xOffset,F.maxY+e+Q.yOffset),I+=Q.xAdvance,e+=Q.yAdvance}return g}}]),g}(),UC=function(g,I,e,t){void 0===g&&(g=0),void 0===I&&(I=0),void 0===e&&(e=0),void 0===t&&(t=0),this.xAdvance=g,this.yAdvance=I,this.xOffset=e,this.yOffset=t},sC={allTypographicFeatures:{code:0,exclusive:!1,allTypeFeatures:0},ligatures:{code:1,exclusive:!1,requiredLigatures:0,commonLigatures:2,rareLigatures:4,rebusPictures:8,diphthongLigatures:10,squaredLigatures:12,abbrevSquaredLigatures:14,symbolLigatures:16,contextualLigatures:18,historicalLigatures:20},cursiveConnection:{code:2,exclusive:!0,unconnected:0,partiallyConnected:1,cursive:2},letterCase:{code:3,exclusive:!0},verticalSubstitution:{code:4,exclusive:!1,substituteVerticalForms:0},linguisticRearrangement:{code:5,exclusive:!1,linguisticRearrangement:0},numberSpacing:{code:6,exclusive:!0,monospacedNumbers:0,proportionalNumbers:1,thirdWidthNumbers:2,quarterWidthNumbers:3},smartSwash:{code:8,exclusive:!1,wordInitialSwashes:0,wordFinalSwashes:2,nonFinalSwashes:8},diacritics:{code:9,exclusive:!0,showDiacritics:0,hideDiacritics:1,decomposeDiacritics:2},verticalPosition:{code:10,exclusive:!0,normalPosition:0,superiors:1,inferiors:2,ordinals:3,scientificInferiors:4},fractions:{code:11,exclusive:!0,noFractions:0,verticalFractions:1,diagonalFractions:2},overlappingCharacters:{code:13,exclusive:!1,preventOverlap:0},typographicExtras:{code:14,exclusive:!1,slashedZero:4},mathematicalExtras:{code:15,exclusive:!1,mathematicalGreek:10},ornamentSets:{code:16,exclusive:!0,noOrnaments:0,dingbats:1,piCharacters:2,fleurons:3,decorativeBorders:4,internationalSymbols:5,mathSymbols:6},characterAlternatives:{code:17,exclusive:!0,noAlternates:0},designComplexity:{code:18,exclusive:!0,designLevel1:0,designLevel2:1,designLevel3:2,designLevel4:3,designLevel5:4},styleOptions:{code:19,exclusive:!0,noStyleOptions:0,displayText:1,engravedText:2,illuminatedCaps:3,titlingCaps:4,tallCaps:5},characterShape:{code:20,exclusive:!0,traditionalCharacters:0,simplifiedCharacters:1,JIS1978Characters:2,JIS1983Characters:3,JIS1990Characters:4,traditionalAltOne:5,traditionalAltTwo:6,traditionalAltThree:7,traditionalAltFour:8,traditionalAltFive:9,expertCharacters:10,JIS2004Characters:11,hojoCharacters:12,NLCCharacters:13,traditionalNamesCharacters:14},numberCase:{code:21,exclusive:!0,lowerCaseNumbers:0,upperCaseNumbers:1},textSpacing:{code:22,exclusive:!0,proportionalText:0,monospacedText:1,halfWidthText:2,thirdWidthText:3,quarterWidthText:4,altProportionalText:5,altHalfWidthText:6},transliteration:{code:23,exclusive:!0,noTransliteration:0},annotation:{code:24,exclusive:!0,noAnnotation:0,boxAnnotation:1,roundedBoxAnnotation:2,circleAnnotation:3,invertedCircleAnnotation:4,parenthesisAnnotation:5,periodAnnotation:6,romanNumeralAnnotation:7,diamondAnnotation:8,invertedBoxAnnotation:9,invertedRoundedBoxAnnotation:10},kanaSpacing:{code:25,exclusive:!0,fullWidthKana:0,proportionalKana:1},ideographicSpacing:{code:26,exclusive:!0,fullWidthIdeographs:0,proportionalIdeographs:1,halfWidthIdeographs:2},unicodeDecomposition:{code:27,exclusive:!1,canonicalComposition:0,compatibilityComposition:2,transcodingComposition:4},rubyKana:{code:28,exclusive:!1,rubyKana:2},CJKSymbolAlternatives:{code:29,exclusive:!0,noCJKSymbolAlternatives:0,CJKSymbolAltOne:1,CJKSymbolAltTwo:2,CJKSymbolAltThree:3,CJKSymbolAltFour:4,CJKSymbolAltFive:5},ideographicAlternatives:{code:30,exclusive:!0,noIdeographicAlternatives:0,ideographicAltOne:1,ideographicAltTwo:2,ideographicAltThree:3,ideographicAltFour:4,ideographicAltFive:5},CJKVerticalRomanPlacement:{code:31,exclusive:!0,CJKVerticalRomanCentered:0,CJKVerticalRomanHBaseline:1},italicCJKRoman:{code:32,exclusive:!1,CJKItalicRoman:2},caseSensitiveLayout:{code:33,exclusive:!1,caseSensitiveLayout:0,caseSensitiveSpacing:2},alternateKana:{code:34,exclusive:!1,alternateHorizKana:0,alternateVertKana:2},stylisticAlternatives:{code:35,exclusive:!1,noStylisticAlternates:0,stylisticAltOne:2,stylisticAltTwo:4,stylisticAltThree:6,stylisticAltFour:8,stylisticAltFive:10,stylisticAltSix:12,stylisticAltSeven:14,stylisticAltEight:16,stylisticAltNine:18,stylisticAltTen:20,stylisticAltEleven:22,stylisticAltTwelve:24,stylisticAltThirteen:26,stylisticAltFourteen:28,stylisticAltFifteen:30,stylisticAltSixteen:32,stylisticAltSeventeen:34,stylisticAltEighteen:36,stylisticAltNineteen:38,stylisticAltTwenty:40},contextualAlternates:{code:36,exclusive:!1,contextualAlternates:0,swashAlternates:2,contextualSwashAlternates:4},lowerCase:{code:37,exclusive:!0,defaultLowerCase:0,lowerCaseSmallCaps:1,lowerCasePetiteCaps:2},upperCase:{code:38,exclusive:!0,defaultUpperCase:0,upperCaseSmallCaps:1,upperCasePetiteCaps:2},languageTag:{code:39,exclusive:!0},CJKRomanSpacing:{code:103,exclusive:!0,halfWidthCJKRoman:0,proportionalCJKRoman:1,defaultCJKRoman:2,fullWidthCJKRoman:3}},iC=function(g,I){return[sC[g].code,sC[g][I]]},cC={rlig:iC("ligatures","requiredLigatures"),clig:iC("ligatures","contextualLigatures"),dlig:iC("ligatures","rareLigatures"),hlig:iC("ligatures","historicalLigatures"),liga:iC("ligatures","commonLigatures"),hist:iC("ligatures","historicalLigatures"),smcp:iC("lowerCase","lowerCaseSmallCaps"),pcap:iC("lowerCase","lowerCasePetiteCaps"),frac:iC("fractions","diagonalFractions"),dnom:iC("fractions","diagonalFractions"),numr:iC("fractions","diagonalFractions"),afrc:iC("fractions","verticalFractions"),case:iC("caseSensitiveLayout","caseSensitiveLayout"),ccmp:iC("unicodeDecomposition","canonicalComposition"),cpct:iC("CJKVerticalRomanPlacement","CJKVerticalRomanCentered"),valt:iC("CJKVerticalRomanPlacement","CJKVerticalRomanCentered"),swsh:iC("contextualAlternates","swashAlternates"),cswh:iC("contextualAlternates","contextualSwashAlternates"),curs:iC("cursiveConnection","cursive"),c2pc:iC("upperCase","upperCasePetiteCaps"),c2sc:iC("upperCase","upperCaseSmallCaps"),init:iC("smartSwash","wordInitialSwashes"),fin2:iC("smartSwash","wordFinalSwashes"),medi:iC("smartSwash","nonFinalSwashes"),med2:iC("smartSwash","nonFinalSwashes"),fin3:iC("smartSwash","wordFinalSwashes"),fina:iC("smartSwash","wordFinalSwashes"),pkna:iC("kanaSpacing","proportionalKana"),half:iC("textSpacing","halfWidthText"),halt:iC("textSpacing","altHalfWidthText"),hkna:iC("alternateKana","alternateHorizKana"),vkna:iC("alternateKana","alternateVertKana"),ital:iC("italicCJKRoman","CJKItalicRoman"),lnum:iC("numberCase","upperCaseNumbers"),onum:iC("numberCase","lowerCaseNumbers"),mgrk:iC("mathematicalExtras","mathematicalGreek"),calt:iC("contextualAlternates","contextualAlternates"),vrt2:iC("verticalSubstitution","substituteVerticalForms"),vert:iC("verticalSubstitution","substituteVerticalForms"),tnum:iC("numberSpacing","monospacedNumbers"),pnum:iC("numberSpacing","proportionalNumbers"),sups:iC("verticalPosition","superiors"),subs:iC("verticalPosition","inferiors"),ordn:iC("verticalPosition","ordinals"),pwid:iC("textSpacing","proportionalText"),hwid:iC("textSpacing","halfWidthText"),qwid:iC("textSpacing","quarterWidthText"),twid:iC("textSpacing","thirdWidthText"),fwid:iC("textSpacing","proportionalText"),palt:iC("textSpacing","altProportionalText"),trad:iC("characterShape","traditionalCharacters"),smpl:iC("characterShape","simplifiedCharacters"),jp78:iC("characterShape","JIS1978Characters"),jp83:iC("characterShape","JIS1983Characters"),jp90:iC("characterShape","JIS1990Characters"),jp04:iC("characterShape","JIS2004Characters"),expt:iC("characterShape","expertCharacters"),hojo:iC("characterShape","hojoCharacters"),nlck:iC("characterShape","NLCCharacters"),tnam:iC("characterShape","traditionalNamesCharacters"),ruby:iC("rubyKana","rubyKana"),titl:iC("styleOptions","titlingCaps"),zero:iC("typographicExtras","slashedZero"),ss01:iC("stylisticAlternatives","stylisticAltOne"),ss02:iC("stylisticAlternatives","stylisticAltTwo"),ss03:iC("stylisticAlternatives","stylisticAltThree"),ss04:iC("stylisticAlternatives","stylisticAltFour"),ss05:iC("stylisticAlternatives","stylisticAltFive"),ss06:iC("stylisticAlternatives","stylisticAltSix"),ss07:iC("stylisticAlternatives","stylisticAltSeven"),ss08:iC("stylisticAlternatives","stylisticAltEight"),ss09:iC("stylisticAlternatives","stylisticAltNine"),ss10:iC("stylisticAlternatives","stylisticAltTen"),ss11:iC("stylisticAlternatives","stylisticAltEleven"),ss12:iC("stylisticAlternatives","stylisticAltTwelve"),ss13:iC("stylisticAlternatives","stylisticAltThirteen"),ss14:iC("stylisticAlternatives","stylisticAltFourteen"),ss15:iC("stylisticAlternatives","stylisticAltFifteen"),ss16:iC("stylisticAlternatives","stylisticAltSixteen"),ss17:iC("stylisticAlternatives","stylisticAltSeventeen"),ss18:iC("stylisticAlternatives","stylisticAltEighteen"),ss19:iC("stylisticAlternatives","stylisticAltNineteen"),ss20:iC("stylisticAlternatives","stylisticAltTwenty")},AC=1;AC<=99;AC++)cC["cv"+("00"+AC).slice(-2)]=[sC.characterAlternatives.code,AC];var lC,aC={};for(var rC in cC){var oC=cC[rC];null==aC[oC[0]]&&(aC[oC[0]]={}),aC[oC[0]][oC[1]]=rC}function dC(g){var I=g[0],e=g[1];if(isNaN(I))var t=sC[I]&&sC[I].code;else t=I;if(isNaN(e))var C=sC[I]&&sC[I][e];else C=e;return[t,C]}var uC,yC=(lC=function(){function g(g){this.table=g}var I=g.prototype;return I.lookup=function(g){switch(this.table.version){case 0:return this.table.values.getItem(g);case 2:case 4:for(var I=0,e=this.table.binarySearchHeader.nUnits-1;I<=e;){var t=I+e>>1;if(65535===(F=this.table.segments[t]).firstGlyph)return null;if(g<F.firstGlyph)e=t-1;else{if(!(g>F.lastGlyph))return 2===this.table.version?F.value:F.values[g-F.firstGlyph];I=t+1}}return null;case 6:for(var C=0,Q=this.table.binarySearchHeader.nUnits-1;C<=Q;){var F;t=C+Q>>1;if(65535===(F=this.table.segments[t]).glyph)return null;if(g<F.glyph)Q=t-1;else{if(!(g>F.glyph))return F.value;C=t+1}}return null;case 8:return this.table.values[g-this.table.firstGlyph];default:throw new Error("Unknown lookup table format: "+this.table.version)}},I.glyphsForValue=function(g){var I=[];switch(this.table.version){case 2:case 4:for(var e,t=F()(this.table.segments);!(e=t()).done;){var C=e.value;if(2===this.table.version&&C.value===g)I.push.apply(I,Ot(C.firstGlyph,C.lastGlyph+1));else for(var Q=0;Q<C.values.length;Q++)C.values[Q]===g&&I.push(C.firstGlyph+Q)}break;case 6:for(var B,n=F()(this.table.segments);!(B=n()).done;){var U=B.value;U.value===g&&I.push(U.glyph)}break;case 8:for(var s=0;s<this.table.values.length;s++)this.table.values[s]===g&&I.push(this.table.firstGlyph+s);break;default:throw new Error("Unknown lookup table format: "+this.table.version)}return I},g}(),s()(lC.prototype,"glyphsForValue",[G],Object.getOwnPropertyDescriptor(lC.prototype,"glyphsForValue"),lC.prototype),lC),bC=function(){function g(g){this.stateTable=g,this.lookupTable=new yC(g.classTable)}var I=g.prototype;return I.process=function(g,I,e){for(var t=0,C=I?g.length-1:0,Q=I?-1:1;1===Q&&C<=g.length||-1===Q&&C>=-1;){var F=null,B=1,n=!0;C===g.length||-1===C?B=0:65535===(F=g[C]).id?B=2:null==(B=this.lookupTable.lookup(F.id))&&(B=1);var U=this.stateTable.stateArray.getItem(t)[B],s=this.stateTable.entryTable.getItem(U);0!==B&&2!==B&&(e(F,s,C),n=!(16384&s.flags)),t=s.newState,n&&(C+=Q)}return g},I.traverse=function(g,I,e){if(void 0===I&&(I=0),void 0===e&&(e=new Set),!e.has(I)){e.add(I);for(var t=this.stateTable,C=t.nClasses,Q=t.stateArray,B=t.entryTable,n=Q.getItem(I),U=4;U<C;U++)for(var s,i=n[U],c=B.getItem(i),A=F()(this.lookupTable.glyphsForValue(U));!(s=A()).done;){var l=s.value;g.enter&&g.enter(l,c),0!==c.newState&&this.traverse(g,c.newState,e),g.exit&&g.exit(l,c)}}},g}(),ZC=(uC=function(){function g(g){this.processIndicRearragement=this.processIndicRearragement.bind(this),this.processContextualSubstitution=this.processContextualSubstitution.bind(this),this.processLigature=this.processLigature.bind(this),this.processNoncontextualSubstitutions=this.processNoncontextualSubstitutions.bind(this),this.processGlyphInsertion=this.processGlyphInsertion.bind(this),this.font=g,this.morx=g.morx,this.inputCache=null}var I=g.prototype;return I.process=function(g,I){void 0===I&&(I={});for(var e,t=F()(this.morx.chains);!(e=t()).done;){for(var C,Q=e.value,B=Q.defaultFlags,n=F()(Q.features);!(C=n()).done;){var U,s=C.value;(U=I[s.featureType])&&(U[s.featureSetting]?(B&=s.disableFlags,B|=s.enableFlags):!1===U[s.featureSetting]&&(B|=~s.disableFlags,B&=~s.enableFlags))}for(var i,c=F()(Q.subtables);!(i=c()).done;){var A=i.value;A.subFeatureFlags&B&&this.processSubtable(A,g)}}for(var l=g.length-1;l>=0;)65535===g[l].id&&g.splice(l,1),l--;return g},I.processSubtable=function(g,I){if(this.subtable=g,this.glyphs=I,4!==this.subtable.type){this.ligatureStack=[],this.markedGlyph=null,this.firstGlyph=null,this.lastGlyph=null,this.markedIndex=null;var e=this.getStateMachine(g),t=this.getProcessor(),C=!!(4194304&this.subtable.coverage);return e.process(this.glyphs,C,t)}this.processNoncontextualSubstitutions(this.subtable,this.glyphs)},I.getStateMachine=function(g){return new bC(g.table.stateTable)},I.getProcessor=function(){switch(this.subtable.type){case 0:return this.processIndicRearragement;case 1:return this.processContextualSubstitution;case 2:return this.processLigature;case 4:return this.processNoncontextualSubstitutions;case 5:return this.processGlyphInsertion;default:throw new Error("Invalid morx subtable type: "+this.subtable.type)}},I.processIndicRearragement=function(g,I,e){32768&I.flags&&(this.firstGlyph=e),8192&I.flags&&(this.lastGlyph=e),function(g,I,e,t){switch(I){case 0:return g;case 1:return mC(g,[e,1],[t,0]);case 2:return mC(g,[e,0],[t,1]);case 3:return mC(g,[e,1],[t,1]);case 4:return mC(g,[e,2],[t,0]);case 5:return mC(g,[e,2],[t,0],!0,!1);case 6:return mC(g,[e,0],[t,2]);case 7:return mC(g,[e,0],[t,2],!1,!0);case 8:return mC(g,[e,1],[t,2]);case 9:return mC(g,[e,1],[t,2],!1,!0);case 10:return mC(g,[e,2],[t,1]);case 11:return mC(g,[e,2],[t,1],!0,!1);case 12:return mC(g,[e,2],[t,2]);case 13:return mC(g,[e,2],[t,2],!0,!1);case 14:return mC(g,[e,2],[t,2],!1,!0);case 15:return mC(g,[e,2],[t,2],!0,!0);default:throw new Error("Unknown verb: "+I)}}(this.glyphs,15&I.flags,this.firstGlyph,this.lastGlyph)},I.processContextualSubstitution=function(g,I,e){var t=this.subtable.table.substitutionTable.items;if(65535!==I.markIndex){var C=t.getItem(I.markIndex),Q=new yC(C);g=this.glyphs[this.markedGlyph],(F=Q.lookup(g.id))&&(this.glyphs[this.markedGlyph]=this.font.getGlyph(F,g.codePoints))}if(65535!==I.currentIndex){var F,B=t.getItem(I.currentIndex),n=new yC(B);g=this.glyphs[e],(F=n.lookup(g.id))&&(this.glyphs[e]=this.font.getGlyph(F,g.codePoints))}32768&I.flags&&(this.markedGlyph=e)},I.processLigature=function(g,I,e){if(32768&I.flags&&this.ligatureStack.push(e),8192&I.flags){for(var t,C=this.subtable.table.ligatureActions,Q=this.subtable.table.components,F=this.subtable.table.ligatureList,B=I.action,n=!1,U=0,s=[],i=[];!n;){var c,A=this.ligatureStack.pop();(c=s).unshift.apply(c,this.glyphs[A].codePoints);var l=C.getItem(B++);n=!!(2147483648&l);var a=!!(1073741824&l),r=(1073741823&l)<<2>>2;if(r+=this.glyphs[A].id,U+=Q.getItem(r),n||a){var o=F.getItem(U);this.glyphs[A]=this.font.getGlyph(o,s),i.push(A),U=0,s=[]}else this.glyphs[A]=this.font.getGlyph(65535)}(t=this.ligatureStack).push.apply(t,i)}},I.processNoncontextualSubstitutions=function(g,I,e){var t=new yC(g.table.lookupTable);for(e=0;e<I.length;e++){var C=I[e];if(65535!==C.id){var Q=t.lookup(C.id);Q&&(I[e]=this.font.getGlyph(Q,C.codePoints))}}},I._insertGlyphs=function(g,I,e,t){for(var C,Q=[];e--;){var F=this.subtable.table.insertionActions.getItem(I++);Q.push(this.font.getGlyph(F))}t||g++,(C=this.glyphs).splice.apply(C,[g,0].concat(Q))},I.processGlyphInsertion=function(g,I,e){if(32768&I.flags&&(this.markedIndex=e),65535!==I.markedInsertIndex){var t=(31&I.flags)>>>5,C=!!(1024&I.flags);this._insertGlyphs(this.markedIndex,I.markedInsertIndex,t,C)}if(65535!==I.currentInsertIndex){var Q=(992&I.flags)>>>5,F=!!(2048&I.flags);this._insertGlyphs(e,I.currentInsertIndex,Q,F)}},I.getSupportedFeatures=function(){for(var g,I=[],e=F()(this.morx.chains);!(g=e()).done;)for(var t,C=g.value,Q=F()(C.features);!(t=Q()).done;){var B=t.value;I.push([B.featureType,B.featureSetting])}return I},I.generateInputs=function(g){return this.inputCache||this.generateInputCache(),this.inputCache[g]||[]},I.generateInputCache=function(){this.inputCache={};for(var g,I=F()(this.morx.chains);!(g=I()).done;)for(var e,t=g.value,C=t.defaultFlags,Q=F()(t.subtables);!(e=Q()).done;){var B=e.value;B.subFeatureFlags&C&&this.generateInputsForSubtable(B)}},I.generateInputsForSubtable=function(g){var I=this;if(2===g.type){if(!!(4194304&g.coverage))throw new Error("Reverse subtable, not supported.");this.subtable=g,this.ligatureStack=[];var e=this.getStateMachine(g),t=this.getProcessor(),C=[],Q=[];this.glyphs=[],e.traverse({enter:function(g,e){var F=I.glyphs;Q.push({glyphs:F.slice(),ligatureStack:I.ligatureStack.slice()});var B=I.font.getGlyph(g);C.push(B),F.push(C[C.length-1]),t(F[F.length-1],e,F.length-1);for(var n=0,U=0,s=0;s<F.length&&n<=1;s++)65535!==F[s].id&&(n++,U=F[s].id);if(1===n){var i=C.map((function(g){return g.id})),c=I.inputCache[U];c?c.push(i):I.inputCache[U]=[i]}},exit:function(){var g=Q.pop();I.glyphs=g.glyphs,I.ligatureStack=g.ligatureStack,C.pop()}})}},g}(),s()(uC.prototype,"getStateMachine",[G],Object.getOwnPropertyDescriptor(uC.prototype,"getStateMachine"),uC.prototype),uC);function mC(g,I,e,t,C){void 0===t&&(t=!1),void 0===C&&(C=!1);var Q=g.splice(e[0]-(e[1]-1),e[1]);C&&Q.reverse();var F=g.splice.apply(g,[I[0],I[1]].concat(Q));return t&&F.reverse(),g.splice.apply(g,[e[0]-(I[1]-1),0].concat(F)),g}var xC=function(){function g(g){this.font=g,this.morxProcessor=new ZC(g),this.fallbackPosition=!1}var I=g.prototype;return I.substitute=function(g){"rtl"===g.direction&&g.glyphs.reverse(),this.morxProcessor.process(g.glyphs,function(g){var I={};for(var e in g){var t;(t=cC[e])&&(null==I[t[0]]&&(I[t[0]]={}),I[t[0]][t[1]]=g[e])}return I}(g.features))},I.getAvailableFeatures=function(g,I){return function(g){var I={};if(Array.isArray(g))for(var e=0;e<g.length;e++){var t,C=dC(g[e]);(t=aC[C[0]]&&aC[C[0]][C[1]])&&(I[t]=!0)}else if("object"===typeof g)for(var Q in g){var F=g[Q];for(var B in F){var n=void 0,U=dC([Q,B]);F[B]&&(n=aC[U[0]]&&aC[U[0]][U[1]])&&(I[n]=!0)}}return Object.keys(I)}(this.morxProcessor.getSupportedFeatures())},I.stringsForGlyph=function(g){for(var I,e=this.morxProcessor.generateInputs(g),t=new Set,C=F()(e);!(I=C()).done;){var Q=I.value;this._addStrings(Q,0,t,"")}return t},I._addStrings=function(g,I,e,t){for(var C,Q=this.font._cmapProcessor.codePointsForGlyph(g[I]),B=F()(Q);!(C=B()).done;){var n=C.value,U=t+String.fromCodePoint(n);I<g.length-1?this._addStrings(g,I+1,e,U):e.add(U)}},g}(),RC=function(){function g(g,I,e){this.font=g,this.script=I,this.direction=e,this.stages=[],this.globalFeatures={},this.allFeatures={}}var I=g.prototype;return I._addFeatures=function(g,I){for(var e,t=this.stages.length-1,C=this.stages[t],Q=F()(g);!(e=Q()).done;){var B=e.value;null==this.allFeatures[B]&&(C.push(B),this.allFeatures[B]=t,I&&(this.globalFeatures[B]=!0))}},I.add=function(g,I){if(void 0===I&&(I=!0),0===this.stages.length&&this.stages.push([]),"string"===typeof g&&(g=[g]),Array.isArray(g))this._addFeatures(g,I);else{if("object"!==typeof g)throw new Error("Unsupported argument to ShapingPlan#add");this._addFeatures(g.global||[],!0),this._addFeatures(g.local||[],!1)}},I.addStage=function(g,I){"function"===typeof g?this.stages.push(g,[]):(this.stages.push([]),this.add(g,I))},I.setFeatureOverrides=function(g){if(Array.isArray(g))this.add(g);else if("object"===typeof g)for(var I in g)if(g[I])this.add(I);else if(null!=this.allFeatures[I]){var e=this.stages[this.allFeatures[I]];e.splice(e.indexOf(I),1),delete this.allFeatures[I],delete this.globalFeatures[I]}},I.assignGlobalFeatures=function(g){for(var I,e=F()(g);!(I=e()).done;){var t=I.value;for(var C in this.globalFeatures)t.features[C]=!0}},I.process=function(g,I,e){for(var t,C=F()(this.stages);!(t=C()).done;){var Q=t.value;"function"===typeof Q?e||Q(this.font,I,this):Q.length>0&&g.applyFeatures(Q,I,e)}},g}(),SC=["rvrn"],GC=["ccmp","locl","rlig","mark","mkmk"],LC=["frac","numr","dnom"],VC=["calt","clig","liga","rclt","curs","kern"],hC={ltr:["ltra","ltrm"],rtl:["rtla","rtlm"]},DC=function(){function g(){}return g.plan=function(g,I,e){this.planPreprocessing(g),this.planFeatures(g),this.planPostprocessing(g,e),g.assignGlobalFeatures(I),this.assignFeatures(g,I)},g.planPreprocessing=function(g){g.add({global:[].concat(SC,hC[g.direction]),local:LC})},g.planFeatures=function(g){},g.planPostprocessing=function(g,I){g.add([].concat(GC,VC)),g.setFeatureOverrides(I)},g.assignFeatures=function(g,I){for(var e=0;e<I.length;e++){var t=I[e];if(8260===t.codePoints[0]){for(var C=e,Q=e+1;C>0&&r.a.isDigit(I[C-1].codePoints[0]);)I[C-1].features.numr=!0,I[C-1].features.frac=!0,C--;for(;Q<I.length&&r.a.isDigit(I[Q].codePoints[0]);)I[Q].features.dnom=!0,I[Q].features.frac=!0,Q++;t.features.frac=!0,e=Q-1}}},g}();DC.zeroMarkWidths="AFTER_GPOS";var pC=[0,1,240,0,0,0,0,0,0,0,56,0,1,253,1,2,254,237,154,45,76,196,48,20,199,187,237,190,56,64,129,192,224,144,72,4,2,121,151,16,18,12,9,134,132,115,40,4,138,160,80,224,80,36,8,78,34,145,72,12,138,32,73,72,8,18,137,68,18,12,201,253,47,215,146,151,166,221,117,215,110,131,219,123,201,47,237,173,235,235,123,237,235,219,186,92,55,22,98,27,236,130,125,208,149,191,255,75,121,12,78,193,25,184,0,151,160,15,110,192,45,184,3,247,224,1,60,145,126,207,224,77,254,30,242,14,62,100,253,83,150,95,164,157,153,78,126,192,181,164,158,8,49,15,22,146,242,237,42,138,37,248,186,44,253,93,169,144,223,12,195,48,12,195,48,12,195,48,12,195,84,143,225,247,159,85,254,254,193,48,12,195,48,12,195,48,185,114,53,51,98,49,39,94,193,92,91,136,14,56,7,143,224,187,61,106,91,159,21,98,83,8,209,107,9,209,111,141,234,69,240,210,202,111,62,215,112,134,217,48,156,99,58,184,182,149,225,124,179,131,123,247,60,207,67,61,244,63,176,232,56,196,245,163,138,156,183,212,255,11,78,166,212,223,78,28,253,194,194,82,101,137,44,208,118,83,61,148,212,164,222,68,163,102,40,117,76,125,178,66,251,253,37,161,54,81,31,245,185,114,241,47,4,147,204,109,17,36,90,221,197,15,83,92,169,118,65,74,155,132,216,7,116,60,23,161,62,211,107,62,210,4,117,131,254,134,36,109,253,93,99,34,33,58,245,126,13,79,251,149,100,141,207,80,113,61,110,110,76,237,227,198,117,149,178,247,157,111,236,217,250,143,203,245,89,98,143,222,107,122,182,217,236,138,12,122,84,222,213,115,69,104,153,36,134,169,109,166,24,211,245,154,230,79,151,178,223,140,213,26,40,209,109,12,101,95,217,251,196,244,238,213,148,20,185,143,125,247,115,154,127,121,234,14,169,203,53,71,248,72,168,53,139,39,180,211,150,75,34,173,84,245,72,142,229,242,78,24,167,232,55,141,167,198,114,181,53,68,206,165,246,216,124,209,115,169,158,83,125,237,176,205,99,136,184,179,173,65,209,40,191,138,150,180,184,115,37,235,58,132,142,81,95,9,153,191,76,207,10,155,52,3,142,107,147,1],EC=new d.a(new Uint8Array(pC)),NC=["isol","fina","fin2","fin3","medi","med2","init"],WC=0,fC=6,XC="isol",JC="fina",vC=[[[null,null,0],[null,XC,2],[null,XC,1],[null,XC,2],[null,XC,1],[null,XC,6]],[[null,null,0],[null,XC,2],[null,XC,1],[null,XC,2],[null,"fin2",5],[null,XC,6]],[[null,null,0],[null,XC,2],["init",JC,1],["init",JC,3],["init",JC,4],["init",JC,6]],[[null,null,0],[null,XC,2],["medi",JC,1],["medi",JC,3],["medi",JC,4],["medi",JC,6]],[[null,null,0],[null,XC,2],["med2",XC,1],["med2",XC,2],["med2","fin2",5],["med2",XC,6]],[[null,null,0],[null,XC,2],[XC,XC,1],[XC,XC,2],[XC,"fin2",5],[XC,XC,6]],[[null,null,0],[null,XC,2],[null,XC,1],[null,XC,2],[null,"fin3",5],[null,XC,6]]],kC=function(g){function I(){return g.apply(this,arguments)||this}return c()(I,g),I.planFeatures=function(g){g.add(["ccmp","locl"]);for(var I=0;I<NC.length;I++){var e=NC[I];g.addStage(e,!1)}g.addStage("mset")},I.assignFeatures=function(I,e){g.assignFeatures.call(this,I,e);for(var t=-1,C=0,Q=[],F=0;F<e.length;F++){var B,n,U=HC((A=e[F]).codePoints[0]);if(U!==fC){var s=vC[C][U];n=s[0],B=s[1],C=s[2],null!==n&&-1!==t&&(Q[t]=n),Q[F]=B,t=F}else Q[F]=null}for(var i=0;i<e.length;i++){var c,A=e[i];(c=Q[i])&&(A.features[c]=!0)}},I}(DC);function HC(g){var I=EC.get(g);if(I)return I-1;var e=r.a.getCategory(g);return"Mn"===e||"Me"===e||"Cf"===e?fC:WC}var MC=function(){function g(g,I){this.glyphs=g,this.reset(I)}var I=g.prototype;return I.reset=function(g,I){void 0===g&&(g={}),void 0===I&&(I=0),this.options=g,this.flags=g.flags||{},this.markAttachmentType=g.markAttachmentType||0,this.index=I},I.shouldIgnore=function(g){return this.flags.ignoreMarks&&g.isMark||this.flags.ignoreBaseGlyphs&&g.isBase||this.flags.ignoreLigatures&&g.isLigature||this.markAttachmentType&&g.isMark&&g.markAttachmentType!==this.markAttachmentType},I.move=function(g){for(this.index+=g;0<=this.index&&this.index<this.glyphs.length&&this.shouldIgnore(this.glyphs[this.index]);)this.index+=g;return 0>this.index||this.index>=this.glyphs.length?null:this.glyphs[this.index]},I.next=function(){return this.move(1)},I.prev=function(){return this.move(-1)},I.peek=function(g){void 0===g&&(g=1);var I=this.index,e=this.increment(g);return this.index=I,e},I.peekIndex=function(g){void 0===g&&(g=1);var I=this.index;this.increment(g);var e=this.index;return this.index=I,e},I.increment=function(g){void 0===g&&(g=1);var I=g<0?-1:1;for(g=Math.abs(g);g--;)this.move(I);return this.glyphs[this.index]},n()(g,[{key:"cur",get:function(){return this.glyphs[this.index]||null}}]),g}(),YC=["DFLT","dflt","latn"],wC=function(){function g(g,I){this.font=g,this.table=I,this.script=null,this.scriptTag=null,this.language=null,this.languageTag=null,this.features={},this.lookups={},this.variationsIndex=g._variationProcessor?this.findVariationsIndex(g._variationProcessor.normalizedCoords):-1,this.selectScript(),this.glyphs=[],this.positions=[],this.ligatureID=1,this.currentFeature=null}var I=g.prototype;return I.findScript=function(g){if(null==this.table.scriptList)return null;Array.isArray(g)||(g=[g]);for(var I,e=F()(g);!(I=e()).done;)for(var t,C=I.value,Q=F()(this.table.scriptList);!(t=Q()).done;){var B=t.value;if(B.tag===C)return B}return null},I.selectScript=function(g,I,e){var t,C=!1;if(!this.script||g!==this.scriptTag){if((t=this.findScript(g))||(t=this.findScript(YC)),!t)return this.scriptTag;this.scriptTag=t.tag,this.script=t.script,this.language=null,this.languageTag=null,C=!0}if(e&&e===this.direction||(this.direction=e||BC(g)),I&&I.length<4&&(I+=" ".repeat(4-I.length)),!I||I!==this.languageTag){this.language=null;for(var Q,B=F()(this.script.langSysRecords);!(Q=B()).done;){var n=Q.value;if(n.tag===I){this.language=n.langSys,this.languageTag=n.tag;break}}this.language||(this.language=this.script.defaultLangSys,this.languageTag=null),C=!0}if(C&&(this.features={},this.language))for(var U,s=F()(this.language.featureIndexes);!(U=s()).done;){var i=U.value,c=this.table.featureList[i],A=this.substituteFeatureForVariations(i);this.features[c.tag]=A||c.feature}return this.scriptTag},I.lookupsForFeatures=function(g,I){void 0===g&&(g=[]);for(var e,t=[],C=F()(g);!(e=C()).done;){var Q=e.value,B=this.features[Q];if(B)for(var n,U=F()(B.lookupListIndexes);!(n=U()).done;){var s=n.value;I&&-1!==I.indexOf(s)||t.push({feature:Q,index:s,lookup:this.table.lookupList.get(s)})}}return t.sort((function(g,I){return g.index-I.index})),t},I.substituteFeatureForVariations=function(g){if(-1===this.variationsIndex)return null;for(var I,e=this.table.featureVariations.featureVariationRecords[this.variationsIndex].featureTableSubstitution.substitutions,t=F()(e);!(I=t()).done;){var C=I.value;if(C.featureIndex===g)return C.alternateFeatureTable}return null},I.findVariationsIndex=function(g){var I=this.table.featureVariations;if(!I)return-1;for(var e=I.featureVariationRecords,t=0;t<e.length;t++){var C=e[t].conditionSet.conditionTable;if(this.variationConditionsMatch(C,g))return t}return-1},I.variationConditionsMatch=function(g,I){return g.every((function(g){var e=g.axisIndex<I.length?I[g.axisIndex]:0;return g.filterRangeMinValue<=e&&e<=g.filterRangeMaxValue}))},I.applyFeatures=function(g,I,e){var t=this.lookupsForFeatures(g);this.applyLookups(t,I,e)},I.applyLookups=function(g,I,e){this.glyphs=I,this.positions=e,this.glyphIterator=new MC(I);for(var t,C=F()(g);!(t=C()).done;){var Q=t.value,B=Q.feature,n=Q.lookup;for(this.currentFeature=B,this.glyphIterator.reset(n.flags);this.glyphIterator.index<I.length;)if(B in this.glyphIterator.cur.features){for(var U,s=F()(n.subTables);!(U=s()).done;){var i=U.value;if(this.applyLookup(n.lookupType,i))break}this.glyphIterator.next()}else this.glyphIterator.next()}},I.applyLookup=function(g,I){throw new Error("applyLookup must be implemented by subclasses")},I.applyLookupList=function(g){for(var I,e=this.glyphIterator.options,t=this.glyphIterator.index,C=F()(g);!(I=C()).done;){var Q=I.value;this.glyphIterator.reset(e,t),this.glyphIterator.increment(Q.sequenceIndex);var B=this.table.lookupList.get(Q.lookupListIndex);this.glyphIterator.reset(B.flags,this.glyphIterator.index);for(var n,U=F()(B.subTables);!(n=U()).done;){var s=n.value;if(this.applyLookup(B.lookupType,s))break}}return this.glyphIterator.reset(e,t),!0},I.coverageIndex=function(g,I){switch(null==I&&(I=this.glyphIterator.cur.id),g.version){case 1:return g.glyphs.indexOf(I);case 2:for(var e,t=F()(g.rangeRecords);!(e=t()).done;){var C=e.value;if(C.start<=I&&I<=C.end)return C.startCoverageIndex+I-C.start}}return-1},I.match=function(g,I,e,t){for(var C=this.glyphIterator.index,Q=this.glyphIterator.increment(g),F=0;F<I.length&&Q&&e(I[F],Q);)t&&t.push(this.glyphIterator.index),F++,Q=this.glyphIterator.next();return this.glyphIterator.index=C,!(F<I.length)&&(t||!0)},I.sequenceMatches=function(g,I){return this.match(g,I,(function(g,I){return g===I.id}))},I.sequenceMatchIndices=function(g,I){var e=this;return this.match(g,I,(function(g,I){return e.currentFeature in I.features&&g===I.id}),[])},I.coverageSequenceMatches=function(g,I){var e=this;return this.match(g,I,(function(g,I){return e.coverageIndex(g,I.id)>=0}))},I.getClassID=function(g,I){switch(I.version){case 1:var e=g-I.startGlyph;if(e>=0&&e<I.classValueArray.length)return I.classValueArray[e];break;case 2:for(var t,C=F()(I.classRangeRecord);!(t=C()).done;){var Q=t.value;if(Q.start<=g&&g<=Q.end)return Q.class}}return 0},I.classSequenceMatches=function(g,I,e){var t=this;return this.match(g,I,(function(g,I){return g===t.getClassID(I.id,e)}))},I.applyContext=function(g){var I;switch(g.version){case 1:if(-1===(I=this.coverageIndex(g.coverage)))return!1;for(var e,t=g.ruleSets[I],C=F()(t);!(e=C()).done;){var Q=e.value;if(this.sequenceMatches(1,Q.input))return this.applyLookupList(Q.lookupRecords)}break;case 2:if(-1===this.coverageIndex(g.coverage))return!1;if(-1===(I=this.getClassID(this.glyphIterator.cur.id,g.classDef)))return!1;t=g.classSet[I];for(var B,n=F()(t);!(B=n()).done;){var U=B.value;if(this.classSequenceMatches(1,U.classes,g.classDef))return this.applyLookupList(U.lookupRecords)}break;case 3:if(this.coverageSequenceMatches(0,g.coverages))return this.applyLookupList(g.lookupRecords)}return!1},I.applyChainingContext=function(g){var I;switch(g.version){case 1:if(-1===(I=this.coverageIndex(g.coverage)))return!1;for(var e,t=g.chainRuleSets[I],C=F()(t);!(e=C()).done;){var Q=e.value;if(this.sequenceMatches(-Q.backtrack.length,Q.backtrack)&&this.sequenceMatches(1,Q.input)&&this.sequenceMatches(1+Q.input.length,Q.lookahead))return this.applyLookupList(Q.lookupRecords)}break;case 2:if(-1===this.coverageIndex(g.coverage))return!1;I=this.getClassID(this.glyphIterator.cur.id,g.inputClassDef);var B=g.chainClassSet[I];if(!B)return!1;for(var n,U=F()(B);!(n=U()).done;){var s=n.value;if(this.classSequenceMatches(-s.backtrack.length,s.backtrack,g.backtrackClassDef)&&this.classSequenceMatches(1,s.input,g.inputClassDef)&&this.classSequenceMatches(1+s.input.length,s.lookahead,g.lookaheadClassDef))return this.applyLookupList(s.lookupRecords)}break;case 3:if(this.coverageSequenceMatches(-g.backtrackGlyphCount,g.backtrackCoverage)&&this.coverageSequenceMatches(0,g.inputCoverage)&&this.coverageSequenceMatches(g.inputGlyphCount,g.lookaheadCoverage))return this.applyLookupList(g.lookupRecords)}return!1},g}(),TC=function(){function g(g,I,e,t){if(void 0===e&&(e=[]),this._font=g,this.codePoints=e,this.id=I,this.features={},Array.isArray(t))for(var C=0;C<t.length;C++){var Q=t[C];this.features[Q]=!0}else"object"===typeof t&&Object.assign(this.features,t);this.ligatureID=null,this.ligatureComponent=null,this.isLigated=!1,this.cursiveAttachment=null,this.markAttachment=null,this.shaperInfo=null,this.substituted=!1,this.isMultiplied=!1}return g.prototype.copy=function(){return new g(this._font,this.id,this.codePoints,this.features)},n()(g,[{key:"id",get:function(){return this._id},set:function(g){this._id=g,this.substituted=!0;var I=this._font.GDEF;if(I&&I.glyphClassDef){var e=wC.prototype.getClassID(g,I.glyphClassDef);this.isBase=1===e,this.isLigature=2===e,this.isMark=3===e,this.markAttachmentType=I.markAttachClassDef?wC.prototype.getClassID(g,I.markAttachClassDef):0}else this.isMark=this.codePoints.length>0&&this.codePoints.every(r.a.isMark),this.isBase=!this.isMark,this.isLigature=this.codePoints.length>1,this.markAttachmentType=0}}]),g}(),zC=function(g){function I(){return g.apply(this,arguments)||this}return c()(I,g),I.planFeatures=function(g){g.add(["ljmo","vjmo","tjmo"],!1)},I.assignFeatures=function(g,I){for(var e=0,t=0;t<I.length;){var C,Q=I[t].codePoints[0],F=OC(Q),B=qC[e][F];switch(C=B[0],e=B[1],C){case KC:g.font.hasGlyphForCodePoint(Q)||(t=gQ(I,t,g.font));break;case jC:t=IQ(I,t,g.font);break;case PC:eQ(I,t,g.font);break;case _C:t=tQ(I,t,g.font)}t++}},I}(DC);zC.zeroMarkWidths="NONE";function OC(g){return function(g){return 4352<=g&&g<=4447||43360<=g&&g<=43388}(g)?1:function(g){return 4448<=g&&g<=4519||55216<=g&&g<=55238}(g)?2:function(g){return 4520<=g&&g<=4607||55243<=g&&g<=55291}(g)?3:function(g){return g-44032<11173&&(g-44032)%28===0}(g)?4:function(g){return 44032<=g&&g<=55204}(g)?5:function(g){return 12334<=g&&g<=12335}(g)?6:0}var KC=1,jC=2,PC=4,_C=5,qC=[[[0,0],[0,1],[0,0],[0,0],[KC,2],[KC,3],[_C,0]],[[0,0],[0,1],[jC,2],[0,0],[KC,2],[KC,3],[_C,0]],[[0,0],[0,1],[0,0],[jC,3],[KC,2],[KC,3],[PC,0]],[[0,0],[0,1],[0,0],[0,0],[KC,2],[KC,3],[PC,0]]];function $C(g,I,e){return new TC(g,g.glyphForCodePoint(I).id,[I],e)}function gQ(g,I,e){var t=g[I],C=t.codePoints[0]-44032,Q=4519+C%28,F=4352+(C=C/28|0)/21|0,B=4449+C%21;if(!e.hasGlyphForCodePoint(F)||!e.hasGlyphForCodePoint(B)||4519!==Q&&!e.hasGlyphForCodePoint(Q))return I;var n=$C(e,F,t.features);n.features.ljmo=!0;var U=$C(e,B,t.features);U.features.vjmo=!0;var s=[n,U];if(Q>4519){var i=$C(e,Q,t.features);i.features.tjmo=!0,s.push(i)}return g.splice.apply(g,[I,1].concat(s)),I+s.length-1}function IQ(g,I,e){var t,C,Q,F,B=g[I],n=OC(g[I].codePoints[0]),U=g[I-1].codePoints[0],s=OC(U);if(4===s&&3===n)t=U,F=B;else{2===n?(C=g[I-1],Q=B):(C=g[I-2],Q=g[I-1],F=B);var i=C.codePoints[0],c=Q.codePoints[0];(function(g){return 4352<=g&&g<=4370})(i)&&function(g){return 4449<=g&&g<=4469}(c)&&(t=44032+28*(21*(i-4352)+(c-4449)))}var A=F&&F.codePoints[0]||4519;if(null!=t&&(4519===A||function(g){return 1<=g&&g<=4546}(A))){var l=t+(A-4519);if(e.hasGlyphForCodePoint(l)){var a=2===s?3:2;return g.splice(I-a+1,a,$C(e,l,B.features)),I-a+1}}return C&&(C.features.ljmo=!0),Q&&(Q.features.vjmo=!0),F&&(F.features.tjmo=!0),4===s?(gQ(g,I-1,e),I+1):I}function eQ(g,I,e){var t=g[I],C=g[I].codePoints[0];if(0!==e.glyphForCodePoint(C).advanceWidth){var Q=function(g){switch(OC(g)){case 4:case 5:return 1;case 2:return 2;case 3:return 3}}(g[I-1].codePoints[0]);return g.splice(I,1),g.splice(I-Q,0,t)}}function tQ(g,I,e){var t=g[I],C=g[I].codePoints[0];if(e.hasGlyphForCodePoint(9676)){var Q=$C(e,9676,t.features),F=0===e.glyphForCodePoint(C).advanceWidth?I:I+1;g.splice(F,0,Q),I++}return I}var CQ=function(){function g(g){this.stateTable=g.stateTable,this.accepting=g.accepting,this.tags=g.tags}var I=g.prototype;return I.match=function(g){var I,e=this;return(I={})[Symbol.iterator]=y.a.mark((function I(){var t,C,Q,F,B,n;return y.a.wrap((function(I){for(;;)switch(I.prev=I.next){case 0:t=1,C=null,Q=null,F=null,B=0;case 5:if(!(B<g.length)){I.next=21;break}if(n=g[B],F=t,0!==(t=e.stateTable[t][n])){I.next=15;break}if(!(null!=C&&null!=Q&&Q>=C)){I.next=13;break}return I.next=13,[C,Q,e.tags[F]];case 13:t=e.stateTable[1][n],C=null;case 15:0!==t&&null==C&&(C=B),e.accepting[t]&&(Q=B),0===t&&(t=1);case 18:B++,I.next=5;break;case 21:if(!(null!=C&&null!=Q&&Q>=C)){I.next=24;break}return I.next=24,[C,Q,e.tags[t]];case 24:case"end":return I.stop()}}),I)})),I},I.apply=function(g,I){for(var e,t=F()(this.match(g));!(e=t()).done;)for(var C,Q=e.value,B=Q[0],n=Q[1],U=Q[2],s=F()(U);!(C=s()).done;){var i=C.value;"function"===typeof I[i]&&I[i](B,n,g.slice(B,n+1))}},g}(),QQ={stateTable:[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,2,3,4,5,6,7,8,9,0,10,11,11,12,13,14,15,16,17],[0,0,0,18,19,20,21,22,23,0,24,0,0,25,26,0,0,27,0],[0,0,0,28,29,30,31,32,33,0,34,0,0,35,36,0,0,37,0],[0,0,0,38,5,7,7,8,9,0,10,0,0,0,13,0,0,16,0],[0,39,0,0,0,40,41,0,9,0,10,0,0,0,42,0,39,0,0],[0,0,0,0,43,44,44,8,9,0,0,0,0,12,43,0,0,0,0],[0,0,0,0,43,44,44,8,9,0,0,0,0,0,43,0,0,0,0],[0,0,0,45,46,47,48,49,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,50,0,0,51,0,10,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,52,0,0,0,0,0,0,0,0],[0,0,0,53,54,55,56,57,58,0,59,0,0,60,61,0,0,62,0],[0,0,0,4,5,7,7,8,9,0,10,0,0,0,13,0,0,16,0],[0,63,64,0,0,40,41,0,9,0,10,0,0,0,42,0,63,0,0],[0,2,3,4,5,6,7,8,9,0,10,11,11,12,13,0,2,16,0],[0,0,0,18,65,20,21,22,23,0,24,0,0,25,26,0,0,27,0],[0,0,0,0,66,67,67,8,9,0,10,0,0,0,68,0,0,0,0],[0,0,0,69,0,70,70,0,71,0,72,0,0,0,0,0,0,0,0],[0,0,0,73,19,74,74,22,23,0,24,0,0,0,26,0,0,27,0],[0,75,0,0,0,76,77,0,23,0,24,0,0,0,78,0,75,0,0],[0,0,0,0,79,80,80,22,23,0,0,0,0,25,79,0,0,0,0],[0,0,0,18,19,20,74,22,23,0,24,0,0,25,26,0,0,27,0],[0,0,0,81,82,83,84,85,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,86,0,0,87,0,24,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,88,0,0,0,0,0,0,0,0],[0,0,0,18,19,74,74,22,23,0,24,0,0,0,26,0,0,27,0],[0,89,90,0,0,76,77,0,23,0,24,0,0,0,78,0,89,0,0],[0,0,0,0,91,92,92,22,23,0,24,0,0,0,93,0,0,0,0],[0,0,0,94,29,95,31,32,33,0,34,0,0,0,36,0,0,37,0],[0,96,0,0,0,97,98,0,33,0,34,0,0,0,99,0,96,0,0],[0,0,0,0,100,101,101,32,33,0,0,0,0,35,100,0,0,0,0],[0,0,0,0,100,101,101,32,33,0,0,0,0,0,100,0,0,0,0],[0,0,0,102,103,104,105,106,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,107,0,0,108,0,34,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,109,0,0,0,0,0,0,0,0],[0,0,0,28,29,95,31,32,33,0,34,0,0,0,36,0,0,37,0],[0,110,111,0,0,97,98,0,33,0,34,0,0,0,99,0,110,0,0],[0,0,0,0,112,113,113,32,33,0,34,0,0,0,114,0,0,0,0],[0,0,0,0,5,7,7,8,9,0,10,0,0,0,13,0,0,16,0],[0,0,0,115,116,117,118,8,9,0,10,0,0,119,120,0,0,16,0],[0,0,0,0,0,121,121,0,9,0,10,0,0,0,42,0,0,0,0],[0,39,0,122,0,123,123,8,9,0,10,0,0,0,42,0,39,0,0],[0,124,64,0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,0],[0,39,0,0,0,121,125,0,9,0,10,0,0,0,42,0,39,0,0],[0,0,0,0,0,126,126,8,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,46,47,48,49,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,47,47,49,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,127,127,49,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,128,127,127,49,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,129,130,131,132,133,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0],[0,0,0,0,0,50,0,0,0,0,10,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,134,0,0,0,0,0,0,0,0],[0,0,0,135,54,56,56,57,58,0,59,0,0,0,61,0,0,62,0],[0,136,0,0,0,137,138,0,58,0,59,0,0,0,139,0,136,0,0],[0,0,0,0,140,141,141,57,58,0,0,0,0,60,140,0,0,0,0],[0,0,0,0,140,141,141,57,58,0,0,0,0,0,140,0,0,0,0],[0,0,0,142,143,144,145,146,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,147,0,0,148,0,59,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,149,0,0,0,0,0,0,0,0],[0,0,0,53,54,56,56,57,58,0,59,0,0,0,61,0,0,62,0],[0,150,151,0,0,137,138,0,58,0,59,0,0,0,139,0,150,0,0],[0,0,0,0,152,153,153,57,58,0,59,0,0,0,154,0,0,0,0],[0,0,0,155,116,156,157,8,9,0,10,0,0,158,120,0,0,16,0],[0,0,0,0,0,121,121,0,9,0,10,0,0,0,0,0,0,0,0],[0,75,3,4,5,159,160,8,161,0,162,0,11,12,163,0,75,16,0],[0,0,0,0,0,40,164,0,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,165,44,44,8,9,0,0,0,0,0,165,0,0,0,0],[0,124,64,0,0,40,164,0,9,0,10,0,0,0,42,0,124,0,0],[0,0,0,0,0,70,70,0,71,0,72,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,71,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,166,0,0,167,0,72,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,168,0,0,0,0,0,0,0,0],[0,0,0,0,19,74,74,22,23,0,24,0,0,0,26,0,0,27,0],[0,0,0,0,79,80,80,22,23,0,0,0,0,0,79,0,0,0,0],[0,0,0,169,170,171,172,22,23,0,24,0,0,173,174,0,0,27,0],[0,0,0,0,0,175,175,0,23,0,24,0,0,0,78,0,0,0,0],[0,75,0,176,0,177,177,22,23,0,24,0,0,0,78,0,75,0,0],[0,178,90,0,0,0,0,0,0,0,0,0,0,0,0,0,178,0,0],[0,75,0,0,0,175,179,0,23,0,24,0,0,0,78,0,75,0,0],[0,0,0,0,0,180,180,22,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,82,83,84,85,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,83,83,85,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,181,181,85,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,182,181,181,85,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,183,184,185,186,187,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,0],[0,0,0,0,0,86,0,0,0,0,24,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,188,0,0,0,0,0,0,0,0],[0,0,0,189,170,190,191,22,23,0,24,0,0,192,174,0,0,27,0],[0,0,0,0,0,175,175,0,23,0,24,0,0,0,0,0,0,0,0],[0,0,0,0,0,76,193,0,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,194,80,80,22,23,0,0,0,0,0,194,0,0,0,0],[0,178,90,0,0,76,193,0,23,0,24,0,0,0,78,0,178,0,0],[0,0,0,0,29,95,31,32,33,0,34,0,0,0,36,0,0,37,0],[0,0,0,0,100,101,101,32,33,0,0,0,0,0,100,0,0,0,0],[0,0,0,195,196,197,198,32,33,0,34,0,0,199,200,0,0,37,0],[0,0,0,0,0,201,201,0,33,0,34,0,0,0,99,0,0,0,0],[0,96,0,202,0,203,203,32,33,0,34,0,0,0,99,0,96,0,0],[0,204,111,0,0,0,0,0,0,0,0,0,0,0,0,0,204,0,0],[0,96,0,0,0,201,205,0,33,0,34,0,0,0,99,0,96,0,0],[0,0,0,0,0,206,206,32,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,103,104,105,106,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,104,104,106,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,207,207,106,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,208,207,207,106,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,209,210,211,212,213,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,34,0,0,0,0,0,0,0,0],[0,0,0,0,0,107,0,0,0,0,34,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,214,0,0,0,0,0,0,0,0],[0,0,0,215,196,216,217,32,33,0,34,0,0,218,200,0,0,37,0],[0,0,0,0,0,201,201,0,33,0,34,0,0,0,0,0,0,0,0],[0,0,0,0,0,97,219,0,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,220,101,101,32,33,0,0,0,0,0,220,0,0,0,0],[0,204,111,0,0,97,219,0,33,0,34,0,0,0,99,0,204,0,0],[0,0,0,221,116,222,222,8,9,0,10,0,0,0,120,0,0,16,0],[0,223,0,0,0,40,224,0,9,0,10,0,0,0,42,0,223,0,0],[0,0,0,0,225,44,44,8,9,0,0,0,0,119,225,0,0,0,0],[0,0,0,115,116,117,222,8,9,0,10,0,0,119,120,0,0,16,0],[0,0,0,115,116,222,222,8,9,0,10,0,0,0,120,0,0,16,0],[0,226,64,0,0,40,224,0,9,0,10,0,0,0,42,0,226,0,0],[0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0],[0,39,0,0,0,121,121,0,9,0,10,0,0,0,42,0,39,0,0],[0,0,0,0,0,44,44,8,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,227,0,228,229,0,9,0,10,0,0,230,0,0,0,0,0],[0,39,0,122,0,121,121,0,9,0,10,0,0,0,42,0,39,0,0],[0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,231,231,49,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,232,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,130,131,132,133,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,131,131,133,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,233,233,133,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,234,233,233,133,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,235,236,237,238,239,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,54,56,56,57,58,0,59,0,0,0,61,0,0,62,0],[0,0,0,240,241,242,243,57,58,0,59,0,0,244,245,0,0,62,0],[0,0,0,0,0,246,246,0,58,0,59,0,0,0,139,0,0,0,0],[0,136,0,247,0,248,248,57,58,0,59,0,0,0,139,0,136,0,0],[0,249,151,0,0,0,0,0,0,0,0,0,0,0,0,0,249,0,0],[0,136,0,0,0,246,250,0,58,0,59,0,0,0,139,0,136,0,0],[0,0,0,0,0,251,251,57,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,143,144,145,146,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,144,144,146,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,252,252,146,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,253,252,252,146,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,254,255,256,257,258,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,59,0,0,0,0,0,0,0,0],[0,0,0,0,0,147,0,0,0,0,59,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,259,0,0,0,0,0,0,0,0],[0,0,0,260,241,261,262,57,58,0,59,0,0,263,245,0,0,62,0],[0,0,0,0,0,246,246,0,58,0,59,0,0,0,0,0,0,0,0],[0,0,0,0,0,137,264,0,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,265,141,141,57,58,0,0,0,0,0,265,0,0,0,0],[0,249,151,0,0,137,264,0,58,0,59,0,0,0,139,0,249,0,0],[0,0,0,221,116,222,222,8,9,0,10,0,0,0,120,0,0,16,0],[0,0,0,0,225,44,44,8,9,0,0,0,0,158,225,0,0,0,0],[0,0,0,155,116,156,222,8,9,0,10,0,0,158,120,0,0,16,0],[0,0,0,155,116,222,222,8,9,0,10,0,0,0,120,0,0,16,0],[0,0,0,0,43,266,266,8,161,0,24,0,0,12,267,0,0,0,0],[0,75,0,176,43,268,268,269,161,0,24,0,0,0,267,0,75,0,0],[0,0,0,0,0,270,0,0,271,0,162,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,272,0,0,0,0,0,0,0,0],[0,273,274,0,0,40,41,0,9,0,10,0,0,0,42,0,273,0,0],[0,0,0,40,0,123,123,8,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,121,275,0,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,72,0,0,0,0,0,0,0,0],[0,0,0,0,0,166,0,0,0,0,72,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,276,0,0,0,0,0,0,0,0],[0,0,0,277,170,278,278,22,23,0,24,0,0,0,174,0,0,27,0],[0,279,0,0,0,76,280,0,23,0,24,0,0,0,78,0,279,0,0],[0,0,0,0,281,80,80,22,23,0,0,0,0,173,281,0,0,0,0],[0,0,0,169,170,171,278,22,23,0,24,0,0,173,174,0,0,27,0],[0,0,0,169,170,278,278,22,23,0,24,0,0,0,174,0,0,27,0],[0,282,90,0,0,76,280,0,23,0,24,0,0,0,78,0,282,0,0],[0,0,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0],[0,75,0,0,0,175,175,0,23,0,24,0,0,0,78,0,75,0,0],[0,0,0,0,0,80,80,22,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,283,0,284,285,0,23,0,24,0,0,286,0,0,0,0,0],[0,75,0,176,0,175,175,0,23,0,24,0,0,0,78,0,75,0,0],[0,0,0,0,0,0,0,22,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,287,287,85,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,288,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,184,185,186,187,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,185,185,187,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,289,289,187,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,290,289,289,187,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,291,292,293,294,295,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,277,170,278,278,22,23,0,24,0,0,0,174,0,0,27,0],[0,0,0,0,281,80,80,22,23,0,0,0,0,192,281,0,0,0,0],[0,0,0,189,170,190,278,22,23,0,24,0,0,192,174,0,0,27,0],[0,0,0,189,170,278,278,22,23,0,24,0,0,0,174,0,0,27,0],[0,0,0,76,0,177,177,22,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,175,296,0,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,297,196,298,298,32,33,0,34,0,0,0,200,0,0,37,0],[0,299,0,0,0,97,300,0,33,0,34,0,0,0,99,0,299,0,0],[0,0,0,0,301,101,101,32,33,0,0,0,0,199,301,0,0,0,0],[0,0,0,195,196,197,298,32,33,0,34,0,0,199,200,0,0,37,0],[0,0,0,195,196,298,298,32,33,0,34,0,0,0,200,0,0,37,0],[0,302,111,0,0,97,300,0,33,0,34,0,0,0,99,0,302,0,0],[0,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,0,0,0],[0,96,0,0,0,201,201,0,33,0,34,0,0,0,99,0,96,0,0],[0,0,0,0,0,101,101,32,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,303,0,304,305,0,33,0,34,0,0,306,0,0,0,0,0],[0,96,0,202,0,201,201,0,33,0,34,0,0,0,99,0,96,0,0],[0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,307,307,106,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,308,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,210,211,212,213,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,211,211,213,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,309,309,213,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,310,309,309,213,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,311,312,313,314,315,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,297,196,298,298,32,33,0,34,0,0,0,200,0,0,37,0],[0,0,0,0,301,101,101,32,33,0,0,0,0,218,301,0,0,0,0],[0,0,0,215,196,216,298,32,33,0,34,0,0,218,200,0,0,37,0],[0,0,0,215,196,298,298,32,33,0,34,0,0,0,200,0,0,37,0],[0,0,0,97,0,203,203,32,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,201,316,0,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,116,222,222,8,9,0,10,0,0,0,120,0,0,16,0],[0,0,0,0,225,44,44,8,9,0,0,0,0,0,225,0,0,0,0],[0,0,0,317,318,319,320,8,9,0,10,0,0,321,322,0,0,16,0],[0,223,0,323,0,123,123,8,9,0,10,0,0,0,42,0,223,0,0],[0,223,0,0,0,121,324,0,9,0,10,0,0,0,42,0,223,0,0],[0,0,0,325,318,326,327,8,9,0,10,0,0,328,322,0,0,16,0],[0,0,0,64,0,121,121,0,9,0,10,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,9,0,0,0,0,230,0,0,0,0,0],[0,0,0,227,0,228,121,0,9,0,10,0,0,230,0,0,0,0,0],[0,0,0,227,0,121,121,0,9,0,10,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,49,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,0,0],[0,0,0,0,0,329,329,133,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,330,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,236,237,238,239,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,237,237,239,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,331,331,239,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,332,331,331,239,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,333,40,121,334,0,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,335,241,336,336,57,58,0,59,0,0,0,245,0,0,62,0],[0,337,0,0,0,137,338,0,58,0,59,0,0,0,139,0,337,0,0],[0,0,0,0,339,141,141,57,58,0,0,0,0,244,339,0,0,0,0],[0,0,0,240,241,242,336,57,58,0,59,0,0,244,245,0,0,62,0],[0,0,0,240,241,336,336,57,58,0,59,0,0,0,245,0,0,62,0],[0,340,151,0,0,137,338,0,58,0,59,0,0,0,139,0,340,0,0],[0,0,0,0,0,0,0,0,58,0,0,0,0,0,0,0,0,0,0],[0,136,0,0,0,246,246,0,58,0,59,0,0,0,139,0,136,0,0],[0,0,0,0,0,141,141,57,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,341,0,342,343,0,58,0,59,0,0,344,0,0,0,0,0],[0,136,0,247,0,246,246,0,58,0,59,0,0,0,139,0,136,0,0],[0,0,0,0,0,0,0,57,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,345,345,146,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,346,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,255,256,257,258,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,256,256,258,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,347,347,258,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,348,347,347,258,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,349,350,351,352,353,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,335,241,336,336,57,58,0,59,0,0,0,245,0,0,62,0],[0,0,0,0,339,141,141,57,58,0,0,0,0,263,339,0,0,0,0],[0,0,0,260,241,261,336,57,58,0,59,0,0,263,245,0,0,62,0],[0,0,0,260,241,336,336,57,58,0,59,0,0,0,245,0,0,62,0],[0,0,0,137,0,248,248,57,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,246,354,0,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,126,126,8,23,0,0,0,0,0,0,0,0,0,0],[0,355,90,0,0,121,125,0,9,0,10,0,0,0,42,0,355,0,0],[0,0,0,0,0,356,356,269,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,357,358,359,360,361,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,162,0,0,0,0,0,0,0,0],[0,0,0,0,0,270,0,0,0,0,162,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,363,0,0,0,0,0,0,0,0],[0,0,0,364,116,365,366,8,161,0,162,0,0,367,120,0,0,16,0],[0,0,0,0,0,368,368,0,161,0,162,0,0,0,0,0,0,0,0],[0,0,0,40,0,121,121,0,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,170,278,278,22,23,0,24,0,0,0,174,0,0,27,0],[0,0,0,0,281,80,80,22,23,0,0,0,0,0,281,0,0,0,0],[0,0,0,369,370,371,372,22,23,0,24,0,0,373,374,0,0,27,0],[0,279,0,375,0,177,177,22,23,0,24,0,0,0,78,0,279,0,0],[0,279,0,0,0,175,376,0,23,0,24,0,0,0,78,0,279,0,0],[0,0,0,377,370,378,379,22,23,0,24,0,0,380,374,0,0,27,0],[0,0,0,90,0,175,175,0,23,0,24,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,23,0,0,0,0,286,0,0,0,0,0],[0,0,0,283,0,284,175,0,23,0,24,0,0,286,0,0,0,0,0],[0,0,0,283,0,175,175,0,23,0,24,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,85,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,0,0],[0,0,0,0,0,381,381,187,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,382,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,292,293,294,295,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,293,293,295,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,383,383,295,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,384,383,383,295,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,385,76,175,386,0,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,76,0,175,175,0,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,196,298,298,32,33,0,34,0,0,0,200,0,0,37,0],[0,0,0,0,301,101,101,32,33,0,0,0,0,0,301,0,0,0,0],[0,0,0,387,388,389,390,32,33,0,34,0,0,391,392,0,0,37,0],[0,299,0,393,0,203,203,32,33,0,34,0,0,0,99,0,299,0,0],[0,299,0,0,0,201,394,0,33,0,34,0,0,0,99,0,299,0,0],[0,0,0,395,388,396,397,32,33,0,34,0,0,398,392,0,0,37,0],[0,0,0,111,0,201,201,0,33,0,34,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,33,0,0,0,0,306,0,0,0,0,0],[0,0,0,303,0,304,201,0,33,0,34,0,0,306,0,0,0,0,0],[0,0,0,303,0,201,201,0,33,0,34,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,106,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,0,0],[0,0,0,0,0,399,399,213,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,400,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,312,313,314,315,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,313,313,315,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,401,401,315,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,402,401,401,315,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,403,97,201,404,0,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,97,0,201,201,0,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,405,318,406,406,8,9,0,10,0,0,0,322,0,0,16,0],[0,407,0,0,0,40,408,0,9,0,10,0,0,0,42,0,407,0,0],[0,0,0,0,409,44,44,8,9,0,0,0,0,321,409,0,0,0,0],[0,0,0,317,318,319,406,8,9,0,10,0,0,321,322,0,0,16,0],[0,0,0,317,318,406,406,8,9,0,10,0,0,0,322,0,0,16,0],[0,410,64,0,0,40,408,0,9,0,10,0,0,0,42,0,410,0,0],[0,223,0,0,0,121,121,0,9,0,10,0,0,0,42,0,223,0,0],[0,223,0,323,0,121,121,0,9,0,10,0,0,0,42,0,223,0,0],[0,0,0,405,318,406,406,8,9,0,10,0,0,0,322,0,0,16,0],[0,0,0,0,409,44,44,8,9,0,0,0,0,328,409,0,0,0,0],[0,0,0,325,318,326,406,8,9,0,10,0,0,328,322,0,0,16,0],[0,0,0,325,318,406,406,8,9,0,10,0,0,0,322,0,0,16,0],[0,0,0,0,0,0,0,133,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,0,0],[0,0,0,0,0,411,411,239,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,412,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,40,121,334,0,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,413,0,0,0,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,241,336,336,57,58,0,59,0,0,0,245,0,0,62,0],[0,0,0,0,339,141,141,57,58,0,0,0,0,0,339,0,0,0,0],[0,0,0,414,415,416,417,57,58,0,59,0,0,418,419,0,0,62,0],[0,337,0,420,0,248,248,57,58,0,59,0,0,0,139,0,337,0,0],[0,337,0,0,0,246,421,0,58,0,59,0,0,0,139,0,337,0,0],[0,0,0,422,415,423,424,57,58,0,59,0,0,425,419,0,0,62,0],[0,0,0,151,0,246,246,0,58,0,59,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,58,0,0,0,0,344,0,0,0,0,0],[0,0,0,341,0,342,246,0,58,0,59,0,0,344,0,0,0,0,0],[0,0,0,341,0,246,246,0,58,0,59,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,146,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,0,0],[0,0,0,0,0,426,426,258,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,427,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,350,351,352,353,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,351,351,353,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,428,428,353,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,429,428,428,353,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,430,137,246,431,0,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,137,0,246,246,0,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,432,116,433,434,8,161,0,162,0,0,435,120,0,0,16,0],[0,0,0,0,0,180,180,269,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,358,359,360,361,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,359,359,361,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,436,436,361,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,437,436,436,361,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,438,439,440,441,442,161,0,162,0,0,0,362,0,0,0,0],[0,443,274,0,0,0,0,0,0,0,0,0,0,0,0,0,443,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,444,116,445,445,8,161,0,162,0,0,0,120,0,0,16,0],[0,0,0,0,225,44,44,8,161,0,0,0,0,367,225,0,0,0,0],[0,0,0,364,116,365,445,8,161,0,162,0,0,367,120,0,0,16,0],[0,0,0,364,116,445,445,8,161,0,162,0,0,0,120,0,0,16,0],[0,0,0,0,0,0,0,0,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,446,370,447,447,22,23,0,24,0,0,0,374,0,0,27,0],[0,448,0,0,0,76,449,0,23,0,24,0,0,0,78,0,448,0,0],[0,0,0,0,450,80,80,22,23,0,0,0,0,373,450,0,0,0,0],[0,0,0,369,370,371,447,22,23,0,24,0,0,373,374,0,0,27,0],[0,0,0,369,370,447,447,22,23,0,24,0,0,0,374,0,0,27,0],[0,451,90,0,0,76,449,0,23,0,24,0,0,0,78,0,451,0,0],[0,279,0,0,0,175,175,0,23,0,24,0,0,0,78,0,279,0,0],[0,279,0,375,0,175,175,0,23,0,24,0,0,0,78,0,279,0,0],[0,0,0,446,370,447,447,22,23,0,24,0,0,0,374,0,0,27,0],[0,0,0,0,450,80,80,22,23,0,0,0,0,380,450,0,0,0,0],[0,0,0,377,370,378,447,22,23,0,24,0,0,380,374,0,0,27,0],[0,0,0,377,370,447,447,22,23,0,24,0,0,0,374,0,0,27,0],[0,0,0,0,0,0,0,187,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,0,0],[0,0,0,0,0,452,452,295,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,453,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,76,175,386,0,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,454,0,0,0,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,455,388,456,456,32,33,0,34,0,0,0,392,0,0,37,0],[0,457,0,0,0,97,458,0,33,0,34,0,0,0,99,0,457,0,0],[0,0,0,0,459,101,101,32,33,0,0,0,0,391,459,0,0,0,0],[0,0,0,387,388,389,456,32,33,0,34,0,0,391,392,0,0,37,0],[0,0,0,387,388,456,456,32,33,0,34,0,0,0,392,0,0,37,0],[0,460,111,0,0,97,458,0,33,0,34,0,0,0,99,0,460,0,0],[0,299,0,0,0,201,201,0,33,0,34,0,0,0,99,0,299,0,0],[0,299,0,393,0,201,201,0,33,0,34,0,0,0,99,0,299,0,0],[0,0,0,455,388,456,456,32,33,0,34,0,0,0,392,0,0,37,0],[0,0,0,0,459,101,101,32,33,0,0,0,0,398,459,0,0,0,0],[0,0,0,395,388,396,456,32,33,0,34,0,0,398,392,0,0,37,0],[0,0,0,395,388,456,456,32,33,0,34,0,0,0,392,0,0,37,0],[0,0,0,0,0,0,0,213,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,0,0],[0,0,0,0,0,461,461,315,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,462,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,97,201,404,0,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,463,0,0,0,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,318,406,406,8,9,0,10,0,0,0,322,0,0,16,0],[0,0,0,0,409,44,44,8,9,0,0,0,0,0,409,0,0,0,0],[0,0,0,464,465,466,467,8,9,0,10,0,0,468,469,0,0,16,0],[0,407,0,470,0,123,123,8,9,0,10,0,0,0,42,0,407,0,0],[0,407,0,0,0,121,471,0,9,0,10,0,0,0,42,0,407,0,0],[0,0,0,472,465,473,474,8,9,0,10,0,0,475,469,0,0,16,0],[0,0,0,0,0,0,0,239,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,0,0],[0,0,0,0,0,0,476,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,477,415,478,478,57,58,0,59,0,0,0,419,0,0,62,0],[0,479,0,0,0,137,480,0,58,0,59,0,0,0,139,0,479,0,0],[0,0,0,0,481,141,141,57,58,0,0,0,0,418,481,0,0,0,0],[0,0,0,414,415,416,478,57,58,0,59,0,0,418,419,0,0,62,0],[0,0,0,414,415,478,478,57,58,0,59,0,0,0,419,0,0,62,0],[0,482,151,0,0,137,480,0,58,0,59,0,0,0,139,0,482,0,0],[0,337,0,0,0,246,246,0,58,0,59,0,0,0,139,0,337,0,0],[0,337,0,420,0,246,246,0,58,0,59,0,0,0,139,0,337,0,0],[0,0,0,477,415,478,478,57,58,0,59,0,0,0,419,0,0,62,0],[0,0,0,0,481,141,141,57,58,0,0,0,0,425,481,0,0,0,0],[0,0,0,422,415,423,478,57,58,0,59,0,0,425,419,0,0,62,0],[0,0,0,422,415,478,478,57,58,0,59,0,0,0,419,0,0,62,0],[0,0,0,0,0,0,0,258,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0],[0,0,0,0,0,483,483,353,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,484,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,137,246,431,0,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,485,0,0,0,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,444,116,445,445,8,161,0,162,0,0,0,120,0,0,16,0],[0,0,0,0,225,44,44,8,161,0,0,0,0,435,225,0,0,0,0],[0,0,0,432,116,433,445,8,161,0,162,0,0,435,120,0,0,16,0],[0,0,0,432,116,445,445,8,161,0,162,0,0,0,120,0,0,16,0],[0,0,0,0,0,486,486,361,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,487,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,439,440,441,442,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,440,440,442,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,488,488,442,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,489,488,488,442,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,490,491,492,493,494,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,495,0,496,497,0,161,0,162,0,0,498,0,0,0,0,0],[0,0,0,0,116,445,445,8,161,0,162,0,0,0,120,0,0,16,0],[0,0,0,0,225,44,44,8,161,0,0,0,0,0,225,0,0,0,0],[0,0,0,0,370,447,447,22,23,0,24,0,0,0,374,0,0,27,0],[0,0,0,0,450,80,80,22,23,0,0,0,0,0,450,0,0,0,0],[0,0,0,499,500,501,502,22,23,0,24,0,0,503,504,0,0,27,0],[0,448,0,505,0,177,177,22,23,0,24,0,0,0,78,0,448,0,0],[0,448,0,0,0,175,506,0,23,0,24,0,0,0,78,0,448,0,0],[0,0,0,507,500,508,509,22,23,0,24,0,0,510,504,0,0,27,0],[0,0,0,0,0,0,0,295,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,292,0,0],[0,0,0,0,0,0,511,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,388,456,456,32,33,0,34,0,0,0,392,0,0,37,0],[0,0,0,0,459,101,101,32,33,0,0,0,0,0,459,0,0,0,0],[0,0,0,512,513,514,515,32,33,0,34,0,0,516,517,0,0,37,0],[0,457,0,518,0,203,203,32,33,0,34,0,0,0,99,0,457,0,0],[0,457,0,0,0,201,519,0,33,0,34,0,0,0,99,0,457,0,0],[0,0,0,520,513,521,522,32,33,0,34,0,0,523,517,0,0,37,0],[0,0,0,0,0,0,0,315,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,312,0,0],[0,0,0,0,0,0,524,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,525,465,526,526,8,9,0,10,0,0,0,469,0,0,16,0],[0,527,0,0,0,40,528,0,9,0,10,0,0,0,42,0,527,0,0],[0,0,0,0,529,44,44,8,9,0,0,0,0,468,529,0,0,0,0],[0,0,0,464,465,466,526,8,9,0,10,0,0,468,469,0,0,16,0],[0,0,0,464,465,526,526,8,9,0,10,0,0,0,469,0,0,16,0],[0,530,64,0,0,40,528,0,9,0,10,0,0,0,42,0,530,0,0],[0,407,0,0,0,121,121,0,9,0,10,0,0,0,42,0,407,0,0],[0,407,0,470,0,121,121,0,9,0,10,0,0,0,42,0,407,0,0],[0,0,0,525,465,526,526,8,9,0,10,0,0,0,469,0,0,16,0],[0,0,0,0,529,44,44,8,9,0,0,0,0,475,529,0,0,0,0],[0,0,0,472,465,473,526,8,9,0,10,0,0,475,469,0,0,16,0],[0,0,0,472,465,526,526,8,9,0,10,0,0,0,469,0,0,16,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,0,0],[0,0,0,0,415,478,478,57,58,0,59,0,0,0,419,0,0,62,0],[0,0,0,0,481,141,141,57,58,0,0,0,0,0,481,0,0,0,0],[0,0,0,531,532,533,534,57,58,0,59,0,0,535,536,0,0,62,0],[0,479,0,537,0,248,248,57,58,0,59,0,0,0,139,0,479,0,0],[0,479,0,0,0,246,538,0,58,0,59,0,0,0,139,0,479,0,0],[0,0,0,539,532,540,541,57,58,0,59,0,0,542,536,0,0,62,0],[0,0,0,0,0,0,0,353,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,350,0,0],[0,0,0,0,0,0,543,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,361,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,358,0,0],[0,0,0,0,0,544,544,442,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,545,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,491,492,493,494,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,492,492,494,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,546,546,494,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,547,546,546,494,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,548,549,368,550,0,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,274,0,368,368,0,161,0,162,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,161,0,0,0,0,498,0,0,0,0,0],[0,0,0,495,0,496,368,0,161,0,162,0,0,498,0,0,0,0,0],[0,0,0,495,0,368,368,0,161,0,162,0,0,0,0,0,0,0,0],[0,0,0,551,500,552,552,22,23,0,24,0,0,0,504,0,0,27,0],[0,553,0,0,0,76,554,0,23,0,24,0,0,0,78,0,553,0,0],[0,0,0,0,555,80,80,22,23,0,0,0,0,503,555,0,0,0,0],[0,0,0,499,500,501,552,22,23,0,24,0,0,503,504,0,0,27,0],[0,0,0,499,500,552,552,22,23,0,24,0,0,0,504,0,0,27,0],[0,556,90,0,0,76,554,0,23,0,24,0,0,0,78,0,556,0,0],[0,448,0,0,0,175,175,0,23,0,24,0,0,0,78,0,448,0,0],[0,448,0,505,0,175,175,0,23,0,24,0,0,0,78,0,448,0,0],[0,0,0,551,500,552,552,22,23,0,24,0,0,0,504,0,0,27,0],[0,0,0,0,555,80,80,22,23,0,0,0,0,510,555,0,0,0,0],[0,0,0,507,500,508,552,22,23,0,24,0,0,510,504,0,0,27,0],[0,0,0,507,500,552,552,22,23,0,24,0,0,0,504,0,0,27,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,0,0],[0,0,0,557,513,558,558,32,33,0,34,0,0,0,517,0,0,37,0],[0,559,0,0,0,97,560,0,33,0,34,0,0,0,99,0,559,0,0],[0,0,0,0,561,101,101,32,33,0,0,0,0,516,561,0,0,0,0],[0,0,0,512,513,514,558,32,33,0,34,0,0,516,517,0,0,37,0],[0,0,0,512,513,558,558,32,33,0,34,0,0,0,517,0,0,37,0],[0,562,111,0,0,97,560,0,33,0,34,0,0,0,99,0,562,0,0],[0,457,0,0,0,201,201,0,33,0,34,0,0,0,99,0,457,0,0],[0,457,0,518,0,201,201,0,33,0,34,0,0,0,99,0,457,0,0],[0,0,0,557,513,558,558,32,33,0,34,0,0,0,517,0,0,37,0],[0,0,0,0,561,101,101,32,33,0,0,0,0,523,561,0,0,0,0],[0,0,0,520,513,521,558,32,33,0,34,0,0,523,517,0,0,37,0],[0,0,0,520,513,558,558,32,33,0,34,0,0,0,517,0,0,37,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0],[0,0,0,0,465,526,526,8,9,0,10,0,0,0,469,0,0,16,0],[0,0,0,0,529,44,44,8,9,0,0,0,0,0,529,0,0,0,0],[0,0,0,563,66,564,565,8,9,0,10,0,0,566,68,0,0,16,0],[0,527,0,567,0,123,123,8,9,0,10,0,0,0,42,0,527,0,0],[0,527,0,0,0,121,568,0,9,0,10,0,0,0,42,0,527,0,0],[0,0,0,569,66,570,571,8,9,0,10,0,0,572,68,0,0,16,0],[0,0,0,573,532,574,574,57,58,0,59,0,0,0,536,0,0,62,0],[0,575,0,0,0,137,576,0,58,0,59,0,0,0,139,0,575,0,0],[0,0,0,0,577,141,141,57,58,0,0,0,0,535,577,0,0,0,0],[0,0,0,531,532,533,574,57,58,0,59,0,0,535,536,0,0,62,0],[0,0,0,531,532,574,574,57,58,0,59,0,0,0,536,0,0,62,0],[0,578,151,0,0,137,576,0,58,0,59,0,0,0,139,0,578,0,0],[0,479,0,0,0,246,246,0,58,0,59,0,0,0,139,0,479,0,0],[0,479,0,537,0,246,246,0,58,0,59,0,0,0,139,0,479,0,0],[0,0,0,573,532,574,574,57,58,0,59,0,0,0,536,0,0,62,0],[0,0,0,0,577,141,141,57,58,0,0,0,0,542,577,0,0,0,0],[0,0,0,539,532,540,574,57,58,0,59,0,0,542,536,0,0,62,0],[0,0,0,539,532,574,574,57,58,0,59,0,0,0,536,0,0,62,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,0,0],[0,0,0,0,0,0,0,442,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,439,0,0],[0,0,0,0,0,579,579,494,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,580,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,549,368,550,0,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,368,368,0,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,581,0,0,0,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,500,552,552,22,23,0,24,0,0,0,504,0,0,27,0],[0,0,0,0,555,80,80,22,23,0,0,0,0,0,555,0,0,0,0],[0,0,0,582,91,583,584,22,23,0,24,0,0,585,93,0,0,27,0],[0,553,0,586,0,177,177,22,23,0,24,0,0,0,78,0,553,0,0],[0,553,0,0,0,175,587,0,23,0,24,0,0,0,78,0,553,0,0],[0,0,0,588,91,589,590,22,23,0,24,0,0,591,93,0,0,27,0],[0,0,0,0,513,558,558,32,33,0,34,0,0,0,517,0,0,37,0],[0,0,0,0,561,101,101,32,33,0,0,0,0,0,561,0,0,0,0],[0,0,0,592,112,593,594,32,33,0,34,0,0,595,114,0,0,37,0],[0,559,0,596,0,203,203,32,33,0,34,0,0,0,99,0,559,0,0],[0,559,0,0,0,201,597,0,33,0,34,0,0,0,99,0,559,0,0],[0,0,0,598,112,599,600,32,33,0,34,0,0,601,114,0,0,37,0],[0,0,0,602,66,67,67,8,9,0,10,0,0,0,68,0,0,16,0],[0,0,0,0,165,44,44,8,9,0,0,0,0,566,165,0,0,0,0],[0,0,0,563,66,564,67,8,9,0,10,0,0,566,68,0,0,16,0],[0,0,0,563,66,67,67,8,9,0,10,0,0,0,68,0,0,16,0],[0,527,0,0,0,121,121,0,9,0,10,0,0,0,42,0,527,0,0],[0,527,0,567,0,121,121,0,9,0,10,0,0,0,42,0,527,0,0],[0,0,0,602,66,67,67,8,9,0,10,0,0,0,68,0,0,16,0],[0,0,0,0,165,44,44,8,9,0,0,0,0,572,165,0,0,0,0],[0,0,0,569,66,570,67,8,9,0,10,0,0,572,68,0,0,16,0],[0,0,0,569,66,67,67,8,9,0,10,0,0,0,68,0,0,16,0],[0,0,0,0,532,574,574,57,58,0,59,0,0,0,536,0,0,62,0],[0,0,0,0,577,141,141,57,58,0,0,0,0,0,577,0,0,0,0],[0,0,0,603,152,604,605,57,58,0,59,0,0,606,154,0,0,62,0],[0,575,0,607,0,248,248,57,58,0,59,0,0,0,139,0,575,0,0],[0,575,0,0,0,246,608,0,58,0,59,0,0,0,139,0,575,0,0],[0,0,0,609,152,610,611,57,58,0,59,0,0,612,154,0,0,62,0],[0,0,0,0,0,0,0,494,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,491,0,0],[0,0,0,0,0,0,613,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,614,91,92,92,22,23,0,24,0,0,0,93,0,0,27,0],[0,0,0,0,194,80,80,22,23,0,0,0,0,585,194,0,0,0,0],[0,0,0,582,91,583,92,22,23,0,24,0,0,585,93,0,0,27,0],[0,0,0,582,91,92,92,22,23,0,24,0,0,0,93,0,0,27,0],[0,553,0,0,0,175,175,0,23,0,24,0,0,0,78,0,553,0,0],[0,553,0,586,0,175,175,0,23,0,24,0,0,0,78,0,553,0,0],[0,0,0,614,91,92,92,22,23,0,24,0,0,0,93,0,0,27,0],[0,0,0,0,194,80,80,22,23,0,0,0,0,591,194,0,0,0,0],[0,0,0,588,91,589,92,22,23,0,24,0,0,591,93,0,0,27,0],[0,0,0,588,91,92,92,22,23,0,24,0,0,0,93,0,0,27,0],[0,0,0,615,112,113,113,32,33,0,34,0,0,0,114,0,0,37,0],[0,0,0,0,220,101,101,32,33,0,0,0,0,595,220,0,0,0,0],[0,0,0,592,112,593,113,32,33,0,34,0,0,595,114,0,0,37,0],[0,0,0,592,112,113,113,32,33,0,34,0,0,0,114,0,0,37,0],[0,559,0,0,0,201,201,0,33,0,34,0,0,0,99,0,559,0,0],[0,559,0,596,0,201,201,0,33,0,34,0,0,0,99,0,559,0,0],[0,0,0,615,112,113,113,32,33,0,34,0,0,0,114,0,0,37,0],[0,0,0,0,220,101,101,32,33,0,0,0,0,601,220,0,0,0,0],[0,0,0,598,112,599,113,32,33,0,34,0,0,601,114,0,0,37,0],[0,0,0,598,112,113,113,32,33,0,34,0,0,0,114,0,0,37,0],[0,0,0,0,66,67,67,8,9,0,10,0,0,0,68,0,0,16,0],[0,0,0,616,152,153,153,57,58,0,59,0,0,0,154,0,0,62,0],[0,0,0,0,265,141,141,57,58,0,0,0,0,606,265,0,0,0,0],[0,0,0,603,152,604,153,57,58,0,59,0,0,606,154,0,0,62,0],[0,0,0,603,152,153,153,57,58,0,59,0,0,0,154,0,0,62,0],[0,575,0,0,0,246,246,0,58,0,59,0,0,0,139,0,575,0,0],[0,575,0,607,0,246,246,0,58,0,59,0,0,0,139,0,575,0,0],[0,0,0,616,152,153,153,57,58,0,59,0,0,0,154,0,0,62,0],[0,0,0,0,265,141,141,57,58,0,0,0,0,612,265,0,0,0,0],[0,0,0,609,152,610,153,57,58,0,59,0,0,612,154,0,0,62,0],[0,0,0,609,152,153,153,57,58,0,59,0,0,0,154,0,0,62,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,549,0,0],[0,0,0,0,91,92,92,22,23,0,24,0,0,0,93,0,0,27,0],[0,0,0,0,112,113,113,32,33,0,34,0,0,0,114,0,0,37,0],[0,0,0,0,152,153,153,57,58,0,59,0,0,0,154,0,0,62,0]],accepting:[!1,!0,!0,!0,!0,!0,!1,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!0,!1,!0,!0,!1,!1,!0,!0,!0,!0,!0,!0,!1,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!0,!0,!0,!1,!0,!0,!0,!1,!0,!1,!0,!0,!1,!1,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!0,!0,!0,!1,!0,!1,!0,!0,!1,!1,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!0,!1,!0,!0,!0,!1,!0,!1,!0,!0,!1,!1,!1,!0,!0,!1,!1,!0,!0,!0,!0,!0,!0,!1,!0,!1,!0,!0,!1,!1,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!0,!1,!0,!1,!0,!0,!1,!1,!1,!0,!0,!1,!1,!0,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!0,!1,!0,!1,!0,!0,!1,!1,!1,!0,!0,!1,!1,!0,!0,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!0,!0,!1,!1,!0,!0,!0,!1,!0,!0,!0,!1,!0,!1,!0,!0,!1,!1,!1,!0,!0,!1,!1,!0,!0,!0,!1,!0,!0,!0,!0,!1,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!0,!0,!1,!1,!0,!0,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!0,!0,!1,!1,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!0,!1,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!0,!0,!1,!1,!0,!0,!0,!1,!0,!0,!1,!1,!0,!1,!0,!0,!1,!0,!0,!1,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!0,!1,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!0,!1,!0,!1,!0,!0,!0,!0,!1,!1,!1,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!0,!1,!0,!1,!0,!0,!1,!1,!0,!0,!1,!1,!0,!0,!0,!1,!0,!1,!0,!0,!0,!0,!1,!1,!1,!0,!1,!0,!0,!0,!0,!1,!1,!1,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!0,!1,!0,!0,!0,!0,!1,!1,!1,!1,!1,!1,!1,!0,!0,!1,!1,!0,!0,!1,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!1,!0,!0,!1,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!0,!1,!0,!0,!0,!0,!1,!1,!1,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!1,!0,!0,!0],tags:[[],["broken_cluster"],["consonant_syllable"],["vowel_syllable"],["broken_cluster"],["broken_cluster"],[],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["standalone_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["consonant_syllable"],["broken_cluster"],["symbol_cluster"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],[],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["standalone_cluster"],["standalone_cluster"],[],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["broken_cluster"],["broken_cluster"],["consonant_syllable","broken_cluster"],["broken_cluster"],[],["broken_cluster"],["symbol_cluster"],[],["symbol_cluster"],["symbol_cluster"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],[],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],[],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],[],[],[],["broken_cluster"],["broken_cluster"],[],[],["broken_cluster"],["broken_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],[],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["symbol_cluster"],["symbol_cluster"],["symbol_cluster"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],[],[],[],["consonant_syllable"],["consonant_syllable"],[],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],[],[],[],["vowel_syllable"],["vowel_syllable"],[],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],[],[],[],[],["broken_cluster"],["broken_cluster"],[],[],["broken_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],[],[],[],["standalone_cluster"],["standalone_cluster"],[],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["broken_cluster"],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["broken_cluster"],["symbol_cluster"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],[],[],[],[],["consonant_syllable"],["consonant_syllable"],[],[],["consonant_syllable"],["consonant_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],[],[],[],[],["vowel_syllable"],["vowel_syllable"],[],[],["vowel_syllable"],["vowel_syllable"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],[],[],[],[],["broken_cluster"],[],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],[],[],[],[],["standalone_cluster"],["standalone_cluster"],[],[],["standalone_cluster"],["standalone_cluster"],["consonant_syllable","broken_cluster"],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],[],["consonant_syllable","broken_cluster"],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],[],[],[],[],["consonant_syllable"],[],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],[],[],[],[],["vowel_syllable"],[],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],[],[],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],[],[],[],[],["standalone_cluster"],[],["consonant_syllable","broken_cluster"],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],[],[],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],[],[],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],[],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],[],[],[],[],[],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],[],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],[],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],[],[],[],[],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],[],[],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["broken_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],[],["consonant_syllable"],["vowel_syllable"],["standalone_cluster"]]},FQ={categories:["O","IND","S","GB","B","FM","CGJ","VMAbv","VMPst","VAbv","VPst","CMBlw","VPre","VBlw","H","VMBlw","CMAbv","MBlw","CS","R","SUB","MPst","MPre","FAbv","FPst","FBlw","null","SMAbv","SMBlw","VMPre","ZWNJ","ZWJ","WJ","M","VS","N","HN","MAbv"],decompositions:{2507:[2503,2494],2508:[2503,2519],2888:[2887,2902],2891:[2887,2878],2892:[2887,2903],3018:[3014,3006],3019:[3015,3006],3020:[3014,3031],3144:[3142,3158],3264:[3263,3285],3271:[3270,3285],3272:[3270,3286],3274:[3270,3266],3275:[3270,3266,3285],3402:[3398,3390],3403:[3399,3390],3404:[3398,3415],3546:[3545,3530],3548:[3545,3535],3549:[3545,3535,3530],3550:[3545,3551],3635:[3661,3634],3763:[3789,3762],3955:[3953,3954],3957:[3953,3956],3958:[4018,3968],3959:[4018,3953,3968],3960:[4019,3968],3961:[4019,3953,3968],3969:[3953,3968],6971:[6970,6965],6973:[6972,6965],6976:[6974,6965],6977:[6975,6965],6979:[6978,6965],69934:[69937,69927],69935:[69938,69927],70475:[70471,70462],70476:[70471,70487],70843:[70841,70842],70844:[70841,70832],70846:[70841,70845],71098:[71096,71087],71099:[71097,71087]},stateTable:[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[2,2,3,4,4,5,0,6,7,8,9,10,11,12,13,14,15,16,0,17,18,11,19,20,21,22,0,0,0,23,0,0,2,0,0,24,0,25],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,28,0,0,0,0,0,27,0,0,0],[0,0,0,0,0,29,0,30,31,32,33,34,35,36,37,38,39,40,0,0,41,35,42,43,44,45,0,0,0,46,0,0,0,0,39,0,0,47],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,0,0,0,0,0,0,14,0,0,0,0,0,0,0,20,21,22,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,21,22,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,8,9,0,0,12,0,14,0,0,0,0,0,0,0,20,21,22,0,0,0,23,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,0,9,0,0,0,0,14,0,0,0,0,0,0,0,20,21,22,0,0,0,23,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,8,9,10,11,12,13,14,0,16,0,0,18,11,19,20,21,22,0,0,0,23,0,0,0,0,0,0,0,25],[0,0,0,0,0,5,0,6,7,8,9,0,11,12,0,14,0,0,0,0,0,0,0,20,21,22,0,0,0,23,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,0,9,0,0,12,0,14,0,0,0,0,0,0,0,20,21,22,0,0,0,23,0,0,0,0,0,0,0,0],[0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,0,7,0,0,0,0,0,0,14,0,0,0,0,0,0,0,20,21,22,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,8,9,10,11,12,13,14,15,16,0,0,18,11,19,20,21,22,0,0,0,23,0,0,0,0,0,0,0,25],[0,0,0,0,0,5,0,6,7,8,9,0,11,12,0,14,0,0,0,0,0,11,0,20,21,22,0,0,0,23,0,0,0,0,0,0,0,0],[0,0,0,4,4,5,0,6,7,8,9,10,11,12,13,14,15,16,0,0,18,11,19,20,21,22,0,0,0,23,0,0,0,0,0,0,0,25],[0,0,0,0,0,5,0,6,7,8,9,48,11,12,13,14,48,16,0,0,18,11,19,20,21,22,0,0,0,23,0,0,0,0,49,0,0,25],[0,0,0,0,0,5,0,6,7,8,9,0,11,12,0,14,0,16,0,0,0,11,0,20,21,22,0,0,0,23,0,0,0,0,0,0,0,25],[0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,21,22,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,22,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,0,0,0,0,0,0,14,0,0,0,0,0,0,0,20,21,22,0,0,0,23,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,51,0],[0,0,0,0,0,5,0,6,7,8,9,0,11,12,0,14,0,16,0,0,0,11,0,20,21,22,0,0,0,23,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,28,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,0,0,0,0,0,0,38,0,0,0,0,0,0,0,43,44,45,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,44,45,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,32,33,0,0,36,0,38,0,0,0,0,0,0,0,43,44,45,0,0,0,46,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,0,33,0,0,0,0,38,0,0,0,0,0,0,0,43,44,45,0,0,0,46,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,32,33,34,35,36,37,38,0,40,0,0,41,35,42,43,44,45,0,0,0,46,0,0,0,0,0,0,0,47],[0,0,0,0,0,29,0,30,31,32,33,0,35,36,0,38,0,0,0,0,0,0,0,43,44,45,0,0,0,46,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,0,33,0,0,36,0,38,0,0,0,0,0,0,0,43,44,45,0,0,0,46,0,0,0,0,0,0,0,0],[0,0,0,0,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,0,31,0,0,0,0,0,0,38,0,0,0,0,0,0,0,43,44,45,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,32,33,34,35,36,37,38,39,40,0,0,41,35,42,43,44,45,0,0,0,46,0,0,0,0,0,0,0,47],[0,0,0,0,0,29,0,30,31,32,33,0,35,36,0,38,0,0,0,0,0,35,0,43,44,45,0,0,0,46,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,32,33,52,35,36,37,38,52,40,0,0,41,35,42,43,44,45,0,0,0,46,0,0,0,0,53,0,0,47],[0,0,0,0,0,29,0,30,31,32,33,0,35,36,0,38,0,40,0,0,0,35,0,43,44,45,0,0,0,46,0,0,0,0,0,0,0,47],[0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,44,45,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,45,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,0,0,0,0,0,0,38,0,0,0,0,0,0,0,43,44,45,0,0,0,46,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,32,33,0,35,36,0,38,0,40,0,0,0,35,0,43,44,45,0,0,0,46,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,8,9,48,11,12,13,14,0,16,0,0,18,11,19,20,21,22,0,0,0,23,0,0,0,0,0,0,0,25],[0,0,0,0,0,5,0,6,7,8,9,48,11,12,13,14,48,16,0,0,18,11,19,20,21,22,0,0,0,23,0,0,0,0,0,0,0,25],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,0,0],[0,0,0,0,0,29,0,30,31,32,33,52,35,36,37,38,0,40,0,0,41,35,42,43,44,45,0,0,0,46,0,0,0,0,0,0,0,47],[0,0,0,0,0,29,0,30,31,32,33,52,35,36,37,38,52,40,0,0,41,35,42,43,44,45,0,0,0,46,0,0,0,0,0,0,0,47],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,51,0]],accepting:[!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0],tags:[[],["broken_cluster"],["independent_cluster"],["symbol_cluster"],["standard_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["numeral_cluster"],["broken_cluster"],["independent_cluster"],["symbol_cluster"],["symbol_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["virama_terminated_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["broken_cluster"],["broken_cluster"],["numeral_cluster"],["number_joiner_terminated_cluster"],["standard_cluster"],["standard_cluster"],["numeral_cluster"]]},BQ=1,nQ=8,UQ=16,sQ=32,iQ=64,cQ=128,AQ=8192,lQ=32768,aQ=65536,rQ=1<<17,oQ={Start:1,Ra_To_Become_Reph:2,Pre_M:4,Pre_C:8,Base_C:16,After_Main:32,Above_C:64,Before_Sub:128,Below_C:256,After_Sub:512,Before_Post:1024,Post_C:2048,After_Post:4096,Final_C:8192,SMVD:16384,End:32768},dQ=2|aQ|rQ|4|2048|4096,uQ=iQ|sQ,yQ=UQ|16384,bQ={Default:{hasOldSpec:!1,virama:0,basePos:"Last",rephPos:oQ.Before_Post,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Devanagari:{hasOldSpec:!0,virama:2381,basePos:"Last",rephPos:oQ.Before_Post,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Bengali:{hasOldSpec:!0,virama:2509,basePos:"Last",rephPos:oQ.After_Sub,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Gurmukhi:{hasOldSpec:!0,virama:2637,basePos:"Last",rephPos:oQ.Before_Sub,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Gujarati:{hasOldSpec:!0,virama:2765,basePos:"Last",rephPos:oQ.Before_Post,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Oriya:{hasOldSpec:!0,virama:2893,basePos:"Last",rephPos:oQ.After_Main,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Tamil:{hasOldSpec:!0,virama:3021,basePos:"Last",rephPos:oQ.After_Post,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Telugu:{hasOldSpec:!0,virama:3149,basePos:"Last",rephPos:oQ.After_Post,rephMode:"Explicit",blwfMode:"Post_Only"},Kannada:{hasOldSpec:!0,virama:3277,basePos:"Last",rephPos:oQ.After_Post,rephMode:"Implicit",blwfMode:"Post_Only"},Malayalam:{hasOldSpec:!0,virama:3405,basePos:"Last",rephPos:oQ.After_Main,rephMode:"Log_Repha",blwfMode:"Pre_And_Post"},Khmer:{hasOldSpec:!1,virama:6098,basePos:"First",rephPos:oQ.Ra_To_Become_Reph,rephMode:"Vis_Repha",blwfMode:"Pre_And_Post"}},ZQ={6078:[6081,6078],6079:[6081,6079],6080:[6081,6080],6084:[6081,6084],6085:[6081,6085]},mQ=[0,17,0,0,0,0,0,0,0,0,216,96,1,102,15,153,240,237,157,123,140,92,85,29,199,239,238,206,206,204,238,204,238,116,11,68,8,98,81,32,196,80,109,64,34,182,20,22,144,96,10,137,88,77,164,85,81,68,9,136,65,80,131,144,54,8,8,106,45,32,15,65,76,44,252,33,229,47,138,254,193,67,99,193,180,18,17,44,16,80,33,96,20,176,168,53,4,172,81,2,162,32,126,207,220,115,230,158,57,115,222,143,123,103,101,126,201,39,247,113,206,61,231,119,126,191,243,190,119,103,151,212,178,236,96,176,12,28,1,78,6,167,128,79,128,207,130,119,131,247,70,56,158,14,206,6,95,2,235,28,158,91,15,46,3,27,192,53,224,187,224,102,176,25,108,1,119,130,123,52,207,95,0,46,6,63,7,191,2,247,131,71,192,19,224,105,176,4,252,5,252,13,188,12,230,193,127,65,125,50,15,155,197,113,79,240,86,112,32,88,10,14,3,43,192,113,224,68,240,33,176,6,156,6,206,2,95,0,95,1,95,5,223,0,87,130,235,193,38,176,25,108,1,119,130,173,224,62,240,32,120,12,60,5,254,8,118,129,221,224,21,240,6,152,172,103,217,12,216,11,236,7,14,4,75,193,225,96,37,56,22,172,170,231,186,175,198,113,13,56,141,94,159,133,227,121,224,66,112,17,184,28,92,1,190,67,195,191,143,227,45,224,54,112,7,216,90,207,203,125,31,61,218,242,32,141,255,24,142,191,4,79,209,235,199,233,241,58,240,12,206,31,226,158,217,229,152,135,13,207,112,105,238,198,249,43,224,13,208,104,100,89,7,188,5,44,1,7,131,101,224,136,70,127,124,114,156,167,247,30,6,31,192,249,201,224,20,240,169,70,110,175,51,113,60,151,198,185,128,222,187,24,199,111,130,171,27,121,125,154,167,220,136,235,77,96,51,184,13,220,1,182,210,103,238,163,199,29,56,254,134,166,247,84,131,218,10,199,63,55,244,101,125,209,16,206,219,248,37,196,221,65,239,221,13,94,195,117,173,153,101,237,102,17,119,15,156,239,75,175,79,2,7,52,7,211,59,68,114,47,148,195,154,121,219,115,121,102,69,2,61,82,115,52,116,62,94,162,247,243,224,90,73,252,19,105,92,214,22,87,227,122,45,248,52,133,143,123,36,173,111,159,227,238,175,208,232,66,234,246,23,185,184,223,166,199,13,66,188,11,155,121,255,203,235,186,142,62,247,181,166,92,111,134,46,108,196,136,17,126,60,60,4,58,140,24,49,98,196,136,17,35,70,140,88,120,28,57,4,58,136,60,71,215,186,223,114,88,223,175,84,220,95,174,121,230,90,164,127,61,216,4,54,131,45,224,78,112,15,216,14,30,0,143,130,39,193,179,96,87,51,223,91,218,141,227,63,193,127,192,196,84,150,181,192,28,216,7,188,125,42,223,207,121,39,142,135,130,229,224,88,112,6,45,203,102,46,255,85,184,191,122,170,122,123,143,24,49,98,196,155,9,178,111,185,22,125,239,251,106,197,62,125,85,84,109,139,17,35,70,196,225,4,110,206,74,222,115,206,131,211,208,207,156,5,206,19,230,122,23,58,206,253,78,162,199,121,154,199,81,224,146,169,226,125,234,6,156,95,45,164,121,195,84,241,94,135,135,188,151,185,9,97,183,14,193,252,243,181,69,57,43,231,96,35,240,147,69,102,54,32,222,3,138,184,47,224,254,254,139,179,108,13,184,6,60,186,184,63,252,247,8,111,238,145,101,123,131,53,224,146,233,44,219,6,178,86,150,29,3,46,33,71,114,143,30,119,210,35,207,59,218,89,246,189,177,156,211,113,254,131,246,96,156,157,184,55,62,83,92,31,135,243,75,193,118,48,54,139,117,1,184,116,182,72,39,22,219,105,154,175,226,184,188,147,159,31,223,233,143,179,174,147,235,244,211,206,160,222,35,70,140,24,49,162,28,254,93,113,31,28,123,252,113,97,197,162,234,243,159,175,189,185,185,28,220,142,121,224,93,83,131,235,81,242,157,207,189,184,191,141,155,39,222,143,243,71,166,242,249,232,14,73,122,236,251,187,39,232,250,154,156,63,61,149,127,83,71,210,219,73,211,122,94,146,223,18,154,230,63,16,246,50,247,60,219,55,125,125,202,111,253,76,190,153,34,223,76,28,37,209,119,18,109,160,9,22,77,23,115,227,189,167,243,176,253,113,60,24,44,155,238,207,239,136,233,98,30,62,143,243,19,192,7,167,139,252,88,188,143,210,123,159,156,206,191,251,58,3,199,207,131,47,79,15,234,191,126,186,184,94,70,211,190,140,62,191,113,218,236,199,121,170,187,204,62,196,126,15,73,194,136,93,174,67,218,55,130,155,193,45,224,54,240,35,240,99,112,47,248,5,120,8,252,22,252,14,236,4,187,192,110,240,10,120,3,212,90,69,154,109,156,239,9,246,5,7,128,67,192,161,96,57,56,182,53,168,195,189,208,97,21,238,175,166,97,107,113,60,21,156,33,137,203,226,159,131,176,243,91,197,245,69,56,255,58,184,10,252,12,215,55,224,120,19,13,191,21,199,219,21,105,17,72,252,187,90,131,54,35,156,42,169,111,221,60,17,127,59,120,16,60,6,30,7,127,104,229,123,255,127,194,241,133,86,254,252,238,186,217,103,47,33,238,171,96,12,235,133,58,104,129,185,118,17,190,15,206,247,3,7,129,119,129,247,180,139,178,153,56,178,173,14,35,250,189,191,93,254,122,79,172,135,124,216,73,26,125,142,182,40,175,15,101,151,95,198,71,52,126,42,139,88,101,33,223,242,86,149,63,105,111,164,15,252,56,103,79,50,78,125,134,171,87,103,226,252,156,118,241,189,108,42,59,174,107,202,239,159,79,117,89,207,233,120,116,68,251,47,68,116,239,105,99,176,204,179,78,150,137,169,12,108,108,191,12,245,102,163,99,191,61,12,239,57,92,202,127,13,202,119,67,59,93,159,239,106,127,246,189,237,149,138,240,245,220,220,111,147,164,47,231,191,195,39,115,46,217,188,128,133,223,77,143,228,239,154,54,35,173,45,212,215,119,224,248,67,176,213,193,247,47,90,252,125,205,49,9,254,142,98,27,116,124,96,8,198,52,91,30,133,174,79,26,230,74,207,182,251,199,21,219,58,181,204,114,238,94,37,42,63,254,181,221,31,254,247,18,124,250,47,90,191,95,231,242,34,239,48,100,107,77,6,105,35,147,51,89,54,3,246,2,251,129,131,102,242,176,165,51,118,229,231,255,174,137,180,215,141,224,240,153,188,237,63,199,181,35,118,126,21,157,131,175,68,156,227,103,242,62,246,196,25,121,251,87,217,55,53,68,247,15,207,244,223,227,251,34,210,15,173,228,202,190,145,246,99,100,189,248,49,206,110,151,115,207,156,78,211,59,27,199,43,106,131,105,159,139,251,231,91,216,124,152,168,202,63,169,89,219,252,255,46,31,207,235,154,113,113,71,73,58,12,43,191,174,56,255,71,20,251,40,101,18,90,6,221,248,179,16,184,72,24,7,92,236,147,106,173,188,144,252,191,144,33,117,247,109,181,177,46,157,44,91,112,144,253,101,254,220,134,170,117,30,86,222,236,82,181,253,163,213,77,250,123,22,11,66,215,33,134,137,41,220,20,175,195,133,155,226,249,234,89,181,173,22,90,57,108,124,54,76,200,244,93,72,250,235,202,164,146,42,117,241,213,185,42,253,135,189,78,84,105,147,178,235,142,173,84,173,247,66,245,127,140,180,170,176,63,175,183,107,254,41,36,85,25,23,74,89,102,155,253,212,198,35,48,22,145,69,118,241,166,26,57,205,9,148,99,113,126,62,222,40,238,187,208,172,21,207,118,109,52,77,161,54,226,227,26,117,163,54,153,226,210,35,184,174,211,189,109,221,234,247,111,166,75,139,194,68,117,237,234,195,238,179,26,255,178,112,94,100,105,16,97,254,109,83,255,182,37,254,99,50,78,227,48,105,211,248,196,191,98,126,50,105,55,6,239,13,148,73,240,111,47,158,165,127,89,253,118,105,175,228,200,231,101,235,223,129,178,148,236,95,49,174,120,78,132,248,151,217,158,249,151,33,243,79,91,225,95,94,72,219,213,137,170,60,218,103,44,253,219,235,87,199,10,63,215,230,220,198,0,215,246,203,124,170,188,46,201,191,182,237,87,132,213,109,214,166,152,143,101,254,13,29,75,153,77,196,186,228,218,63,107,243,24,227,198,16,80,159,40,32,210,88,32,253,179,171,127,39,45,250,231,73,139,246,43,147,73,69,159,16,187,127,238,100,69,187,13,153,199,177,126,187,155,183,69,255,172,107,203,170,177,146,157,139,247,100,241,196,123,202,251,150,243,47,81,248,182,44,235,191,217,216,60,46,180,109,66,221,178,125,203,252,175,146,20,239,69,100,34,206,167,109,230,212,93,253,12,254,142,217,158,93,253,73,218,51,249,125,104,17,190,77,241,247,197,235,186,161,61,243,207,233,234,20,111,23,254,25,23,255,234,196,103,189,164,157,155,15,129,127,85,113,153,176,254,218,198,191,252,53,59,183,241,175,216,247,202,164,167,107,4,255,118,58,57,62,34,250,151,215,169,44,255,106,177,108,191,4,102,119,54,30,171,32,98,234,143,187,54,85,248,141,209,110,232,219,14,111,147,208,249,150,9,83,191,230,58,159,182,157,115,203,236,18,3,171,52,37,107,105,219,62,94,214,134,85,251,35,44,140,29,217,94,137,108,191,69,37,174,253,53,191,127,226,42,177,125,225,11,91,183,219,34,10,121,158,111,167,227,141,254,125,42,114,228,215,22,132,110,251,111,22,113,98,172,107,196,58,169,178,113,10,219,155,242,12,177,119,119,63,111,46,135,137,204,222,204,23,68,68,123,215,179,162,95,201,28,236,173,170,171,41,246,167,121,154,20,101,63,106,187,143,229,80,175,248,250,218,161,54,20,243,37,38,153,176,240,113,138,58,166,235,39,51,143,58,197,218,32,107,135,100,60,38,245,164,174,210,125,206,158,110,249,29,226,167,128,181,7,29,252,222,183,108,29,229,83,119,101,82,117,31,223,197,114,190,160,170,43,178,113,148,212,157,238,92,157,172,57,102,251,251,170,30,36,111,151,125,13,174,159,231,247,58,100,101,24,232,39,117,117,118,44,143,211,154,200,97,113,216,179,236,62,15,159,150,49,47,27,230,6,109,41,203,151,208,164,249,119,245,176,180,31,123,86,124,175,99,170,227,50,233,8,231,161,200,210,177,73,63,11,124,62,52,255,212,229,243,73,183,12,120,73,157,135,111,120,170,242,138,226,179,110,238,62,39,220,179,89,131,196,202,95,6,159,191,77,185,83,229,239,42,49,236,79,196,59,255,178,198,104,155,125,148,8,123,2,204,247,186,253,23,17,126,173,209,219,131,161,99,127,247,124,38,135,221,151,165,65,230,8,166,253,24,2,219,27,234,217,63,112,31,53,180,15,40,171,255,142,145,127,108,253,9,93,251,150,213,6,36,237,216,101,141,204,175,147,153,176,251,221,247,30,154,53,131,110,143,67,102,79,235,53,102,76,155,120,236,253,185,142,119,3,246,243,240,25,47,170,245,4,191,87,164,90,99,200,252,43,194,230,189,74,253,29,246,2,164,126,78,88,191,101,101,143,146,191,170,94,176,112,137,29,187,107,127,217,58,122,214,111,127,65,181,47,72,218,225,192,30,213,68,255,179,124,221,9,237,255,67,159,231,223,189,176,49,207,123,252,77,80,135,68,219,153,252,33,222,111,213,244,233,251,218,211,103,172,33,117,176,153,21,123,81,50,92,199,65,107,191,165,28,203,36,227,140,204,23,164,173,245,237,157,140,217,219,155,204,155,164,121,42,250,6,219,122,99,26,31,69,25,152,63,40,108,161,171,147,186,254,158,223,183,108,78,232,243,118,25,167,251,234,56,167,111,232,252,201,52,222,166,76,155,8,255,157,87,71,184,182,102,177,128,228,30,179,23,9,227,207,25,170,62,54,134,125,109,237,100,218,243,213,233,99,171,111,102,56,234,158,9,241,127,138,180,109,243,179,205,195,75,151,73,80,47,174,99,140,53,62,122,244,202,109,177,134,149,210,200,156,255,6,216,215,119,188,132,250,219,244,173,178,73,66,116,143,161,191,46,237,20,226,170,83,173,29,183,140,202,122,155,152,84,249,132,218,88,39,161,245,162,44,155,250,234,80,117,120,108,91,248,218,72,39,101,215,199,212,245,35,212,62,195,84,127,93,242,72,81,55,92,197,70,95,254,253,53,191,254,172,75,214,225,252,223,233,164,220,127,146,189,27,82,217,48,212,247,73,215,217,58,76,235,253,113,205,154,89,182,134,29,43,190,183,118,169,115,209,254,174,53,225,94,133,203,62,31,249,219,24,254,251,50,149,244,234,127,232,126,156,207,250,213,102,77,75,209,181,91,151,253,200,210,235,179,132,230,68,65,175,28,137,251,15,221,62,142,235,251,215,14,215,94,180,123,120,42,187,68,182,185,110,207,140,223,203,234,123,63,81,243,31,215,66,218,139,206,223,172,159,183,42,119,64,125,207,50,77,253,76,221,62,44,234,169,184,255,40,123,255,97,146,144,111,20,51,15,255,14,244,75,129,182,25,72,67,177,175,66,194,90,244,93,141,248,125,92,108,223,168,222,13,138,247,217,119,186,236,152,90,116,243,57,155,178,202,202,36,75,147,125,83,25,162,151,105,110,236,18,174,19,111,223,243,118,179,237,15,12,109,202,52,30,145,50,177,111,36,123,250,7,206,71,92,230,192,161,107,29,223,57,183,139,238,174,101,140,173,191,238,126,166,136,91,166,142,190,182,150,73,21,249,134,150,183,12,127,135,60,111,83,222,216,229,8,177,165,201,174,41,194,77,246,177,181,147,173,248,214,39,83,120,72,125,9,77,219,70,127,215,231,109,236,150,170,46,198,200,207,39,13,89,153,171,148,216,54,13,205,191,44,157,83,249,62,150,174,182,18,154,94,10,187,184,164,239,34,49,218,138,73,15,157,111,83,213,31,85,25,171,168,191,46,254,137,89,143,67,242,8,181,121,138,188,92,116,170,34,255,170,202,111,202,147,172,123,39,133,111,99,201,145,255,157,42,94,88,60,241,119,222,250,246,228,52,215,169,96,82,231,246,164,7,202,62,27,182,22,151,217,47,102,27,246,201,203,54,95,223,52,135,169,93,165,44,143,139,205,92,37,212,103,190,105,199,202,35,52,255,20,62,240,45,107,104,58,125,191,133,213,201,25,186,119,172,134,253,111,25,117,195,123,36,81,172,223,219,4,244,181,38,233,126,151,238,243,91,206,145,237,107,250,221,101,242,14,155,127,71,26,218,70,59,194,249,48,183,59,173,127,74,168,255,166,182,160,243,29,251,219,36,34,190,127,151,194,231,107,35,101,246,19,98,157,180,145,40,191,157,158,208,191,174,191,129,78,222,159,235,190,203,32,176,191,5,225,223,243,244,252,229,89,47,120,155,199,234,75,125,250,212,88,190,234,166,149,96,124,34,245,140,248,136,125,159,161,178,35,251,142,92,167,63,211,81,166,171,175,254,62,207,235,218,90,213,109,200,5,246,119,82,198,241,111,66,221,255,133,214,105,223,223,175,228,227,13,216,62,178,239,249,112,85,92,34,108,221,202,254,159,131,10,38,226,239,253,243,125,26,19,93,93,83,249,164,147,13,246,241,98,222,186,111,223,250,252,99,8,55,73,138,122,235,51,78,176,239,16,25,204,79,166,121,145,75,253,102,190,98,99,142,237,239,237,166,236,35,108,108,165,10,239,179,87,77,110,51,163,255,3,251,135,84,101,103,34,134,203,202,28,115,141,60,80,191,4,159,139,250,197,240,191,43,124,249,217,124,201,119,173,147,242,251,153,24,107,49,163,254,142,227,169,237,152,218,170,21,191,227,166,205,191,132,117,120,172,242,135,210,203,211,226,155,45,83,187,118,181,159,110,253,151,106,108,146,245,51,3,250,59,206,133,202,222,35,97,162,43,27,63,102,140,75,124,148,82,248,62,213,68,234,250,45,27,99,250,126,151,95,252,102,81,177,238,236,221,183,248,6,212,165,252,50,27,40,199,45,199,239,153,251,202,58,43,172,253,20,243,176,42,196,102,94,38,141,151,176,190,232,214,17,166,57,91,168,109,99,239,103,248,246,171,46,99,134,235,119,246,166,111,134,85,115,196,208,250,196,135,247,206,75,172,71,188,136,245,137,157,243,235,37,22,214,109,191,157,194,126,49,234,143,171,253,164,182,75,188,55,169,107,127,252,185,216,207,105,237,19,75,199,214,224,220,200,166,173,199,90,199,248,72,140,60,67,117,73,145,191,139,62,190,246,141,53,70,134,250,59,180,62,196,182,117,140,122,27,43,173,84,250,149,149,190,141,132,166,229,170,207,48,250,62,134,190,166,248,101,139,76,39,241,154,191,239,99,51,155,103,125,210,142,85,55,92,125,100,171,179,109,56,47,169,108,20,34,41,252,21,42,101,212,37,215,188,84,113,83,72,168,205,83,216,36,52,109,23,123,133,166,25,250,92,12,137,81,71,67,237,40,211,39,203,250,159,215,213,109,83,155,144,165,169,211,77,101,115,213,81,150,167,78,127,155,244,100,207,155,202,103,91,126,157,77,124,109,27,171,110,216,228,147,50,127,23,137,145,78,168,254,41,202,31,195,182,101,248,34,117,190,161,254,13,213,39,180,28,85,181,139,208,252,109,234,185,107,62,166,184,41,244,54,229,173,179,151,143,196,240,103,76,255,135,202,255,0],xQ=FQ.decompositions,RQ=new d.a(new Uint8Array(mQ)),SQ=new CQ(QQ),GQ=function(g){function I(){return g.apply(this,arguments)||this}return c()(I,g),I.planFeatures=function(g){g.addStage(DQ),g.addStage(["locl","ccmp"]),g.addStage(XQ),g.addStage("nukt"),g.addStage("akhn"),g.addStage("rphf",!1),g.addStage("rkrf"),g.addStage("pref",!1),g.addStage("blwf",!1),g.addStage("abvf",!1),g.addStage("half",!1),g.addStage("pstf",!1),g.addStage("vatu"),g.addStage("cjct"),g.addStage("cfar",!1),g.addStage(JQ),g.addStage({local:["init"],global:["pres","abvs","blws","psts","haln","dist","abvm","blwm","calt","clig"]}),g.unicodeScript=function(g){return gC[g]}(g.script),g.indicConfig=bQ[g.unicodeScript]||bQ.Default,g.isOldSpec=g.indicConfig.hasOldSpec&&"2"!==g.script[g.script.length-1]},I.assignFeatures=function(g,I){for(var e=function(e){var t=I[e].codePoints[0],C=ZQ[t]||xQ[t];if(C){var Q=C.map((function(t){var C=g.font.glyphForCodePoint(t);return new TC(g.font,C.id,[t],I[e].features)}));I.splice.apply(I,[e,1].concat(Q))}},t=I.length-1;t>=0;t--)e(t)},I}(DC);function LQ(g){return RQ.get(g.codePoints[0])>>8}function VQ(g){return 1<<(255&RQ.get(g.codePoints[0]))}GQ.zeroMarkWidths="NONE";var hQ=function(g,I,e,t){this.category=g,this.position=I,this.syllableType=e,this.syllable=t};function DQ(g,I){for(var e,t=0,C=0,Q=F()(SQ.match(I.map(LQ)));!(e=Q()).done;){var B=e.value,n=B[0],U=B[1],s=B[2];if(n>C){++t;for(var i=C;i<n;i++)I[i].shaperInfo=new hQ(BQ,oQ.End,"non_indic_cluster",t)}++t;for(var c=n;c<=U;c++)I[c].shaperInfo=new hQ(1<<LQ(I[c]),VQ(I[c]),s[0],t);C=U+1}if(C<I.length){++t;for(var A=C;A<I.length;A++)I[A].shaperInfo=new hQ(BQ,oQ.End,"non_indic_cluster",t)}}function pQ(g){return g.shaperInfo.category&dQ}function EQ(g){return g.shaperInfo.category&uQ}function NQ(g){return g.shaperInfo.category&yQ}function WQ(g,I){for(var e,t=F()(g);!(e=t()).done;){var C;e.value.features=((C={})[I]=!0,C)}return g[0]._font._layoutEngine.engine.GSUBProcessor.applyFeatures([I],g),1===g.length}function fQ(g,I,e){var t=[e,I,e];return WQ(t.slice(0,2),"blwf")||WQ(t.slice(1,3),"blwf")?oQ.Below_C:WQ(t.slice(0,2),"pstf")||WQ(t.slice(1,3),"pstf")||WQ(t.slice(0,2),"pref")||WQ(t.slice(1,3),"pref")?oQ.Post_C:oQ.Base_C}function XQ(g,I,e){var t=e.indicConfig,C=g._layoutEngine.engine.GSUBProcessor.features,Q=g.glyphForCodePoint(9676).id,F=g.glyphForCodePoint(t.virama).id;if(F)for(var B=new TC(g,F,[t.virama]),n=0;n<I.length;n++)I[n].shaperInfo.position===oQ.Base_C&&(I[n].shaperInfo.position=fQ(0,I[n].copy(),B));for(var U=0,s=vQ(I,0);U<I.length;s=vQ(I,U=s)){var i=I[U].shaperInfo;i.category;var c=i.syllableType;if("symbol_cluster"!==c&&"non_indic_cluster"!==c){if("broken_cluster"===c&&Q){var A=new TC(g,Q,[9676]);A.shaperInfo=new hQ(1<<LQ(A),VQ(A),I[U].shaperInfo.syllableType,I[U].shaperInfo.syllable);for(var l=U;l<s&&I[l].shaperInfo.category===lQ;)l++;I.splice(l++,0,A),s++}var a=s,r=U,o=!1;if(t.rephPos!==oQ.Ra_To_Become_Reph&&C.rphf&&U+3<=s&&("Implicit"===t.rephMode&&!EQ(I[U+2])||"Explicit"===t.rephMode&&I[U+2].shaperInfo.category===iQ)){var d=[I[U].copy(),I[U+1].copy(),I[U+2].copy()];if(WQ(d.slice(0,2),"rphf")||"Explicit"===t.rephMode&&WQ(d,"rphf")){for(r+=2;r<s&&EQ(I[r]);)r++;a=U,o=!0}}else if("Log_Repha"===t.rephMode&&I[U].shaperInfo.category===lQ){for(r++;r<s&&EQ(I[r]);)r++;a=U,o=!0}switch(t.basePos){case"Last":var u=s,y=!1;do{var b=I[--u].shaperInfo;if(pQ(I[u])){if(b.position!==oQ.Below_C&&(b.position!==oQ.Post_C||y)){a=u;break}b.position===oQ.Below_C&&(y=!0),a=u}else if(U<u&&b.category===iQ&&I[u-1].shaperInfo.category===UQ)break}while(u>r);break;case"First":for(var Z=(a=U)+1;Z<s;Z++)pQ(I[Z])&&(I[Z].shaperInfo.position=oQ.Below_C)}o&&a===U&&r-a<=2&&(o=!1);for(var m=U;m<a;m++){var x=I[m].shaperInfo;x.position=Math.min(oQ.Pre_C,x.position)}a<s&&(I[a].shaperInfo.position=oQ.Base_C);for(var R=a+1;R<s;R++)if(I[R].shaperInfo.category===cQ){for(var S=R+1;S<s;S++)if(pQ(I[S])){I[S].shaperInfo.position=oQ.Final_C;break}break}if(o&&(I[U].shaperInfo.position=oQ.Ra_To_Become_Reph),e.isOldSpec)for(var G="Malayalam"!==e.unicodeScript,L=a+1;L<s;L++)if(I[L].shaperInfo.category===UQ){var V=void 0;for(V=s-1;V>L&&!(pQ(I[V])||G&&I[V].shaperInfo.category===UQ);V--);if(I[V].shaperInfo.category!==UQ&&V>L){var h=I[L];I.splice.apply(I,[L,0].concat(I.splice(L+1,V-L))),I[V]=h}break}for(var D=oQ.Start,p=U;p<s;p++){var E=I[p].shaperInfo;if(E.category&(uQ|nQ|AQ|rQ|yQ&E.category)){if(E.position=D,E.category===UQ&&E.position===oQ.Pre_M)for(var N=p;N>U;N--)if(I[N-1].shaperInfo.position!==oQ.Pre_M){E.position=I[N-1].shaperInfo.position;break}}else E.position!==oQ.SMVD&&(D=E.position)}for(var W=a,f=a+1;f<s;f++)if(pQ(I[f])){for(var X=W+1;X<f;X++)I[X].shaperInfo.position<oQ.SMVD&&(I[X].shaperInfo.position=I[f].shaperInfo.position);W=f}else I[f].shaperInfo.category===cQ&&(W=f);var J=I.slice(U,s);J.sort((function(g,I){return g.shaperInfo.position-I.shaperInfo.position})),I.splice.apply(I,[U,J.length].concat(J));for(var v=U;v<s;v++)if(I[v].shaperInfo.position===oQ.Base_C){a=v;break}for(var k=U;k<s&&I[k].shaperInfo.position===oQ.Ra_To_Become_Reph;k++)I[k].features.rphf=!0;for(var H=!e.isOldSpec&&"Pre_And_Post"===t.blwfMode,M=U;M<a;M++)I[M].features.half=!0,H&&(I[M].features.blwf=!0);for(var Y=a+1;Y<s;Y++)I[Y].features.abvf=!0,I[Y].features.pstf=!0,I[Y].features.blwf=!0;if(e.isOldSpec&&"Devanagari"===e.unicodeScript)for(var w=U;w+1<a;w++)I[w].shaperInfo.category!==aQ||I[w+1].shaperInfo.category!==UQ||w+1!==a&&I[w+2].shaperInfo.category!==iQ||(I[w].features.blwf=!0,I[w+1].features.blwf=!0);if(C.pref&&a+2<s)for(var T=a+1;T+2-1<s;T++){if(WQ([I[T].copy(),I[T+1].copy()],"pref")){for(var z=0;z<2;z++)I[T++].features.pref=!0;if(C.cfar)for(;T<s;T++)I[T].features.cfar=!0;break}}for(var O=U+1;O<s;O++)if(EQ(I[O])){var K=I[O].shaperInfo.category===sQ,j=O;do{j--,K&&delete I[j].features.half}while(j>U&&!pQ(I[j]))}}}}function JQ(g,I,e){for(var t=e.indicConfig,C=g._layoutEngine.engine.GSUBProcessor.features,Q=0,F=vQ(I,0);Q<I.length;F=vQ(I,Q=F)){for(var B=!!C.pref,n=Q;n<F;n++)if(I[n].shaperInfo.position>=oQ.Base_C){if(B&&n+1<F)for(var U=n+1;U<F;U++)if(I[U].features.pref){if(!I[U].substituted||!I[U].isLigated||I[U].isMultiplied){for(n=U;n<F&&NQ(I[n]);)n++;I[n].shaperInfo.position=oQ.BASE_C,B=!1}break}if("Malayalam"===e.unicodeScript)for(var s=n+1;s<F;s++){for(;s<F&&EQ(I[s]);)s++;if(s===F||!NQ(I[s]))break;for(s++;s<F&&EQ(I[s]);)s++;s<F&&pQ(I[s])&&I[s].shaperInfo.position===oQ.Below_C&&(I[n=s].shaperInfo.position=oQ.Base_C)}Q<n&&I[n].shaperInfo.position>oQ.Base_C&&n--;break}if(n===F&&Q<n&&I[n-1].shaperInfo.category===iQ&&n--,n<F)for(;Q<n&&I[n].shaperInfo.category&(nQ|yQ);)n--;if(Q+1<F&&Q<n){var i=n===F?n-2:n-1;if("Malayalam"!==e.unicodeScript&&"Tamil"!==e.unicodeScript){for(;i>Q&&!(I[i].shaperInfo.category&(cQ|yQ));)i--;NQ(I[i])&&I[i].shaperInfo.position!==oQ.Pre_M?i+1<F&&EQ(I[i+1])&&i++:i=Q}if(Q<i&&I[i].shaperInfo.position!==oQ.Pre_M)for(var c=i;c>Q;c--)if(I[c-1].shaperInfo.position===oQ.Pre_M){var A=c-1;A<n&&n<=i&&n--;var l=I[A];I.splice.apply(I,[A,0].concat(I.splice(A+1,i-A))),I[i]=l,i--}}if(Q+1<F&&I[Q].shaperInfo.position===oQ.Ra_To_Become_Reph&&I[Q].shaperInfo.category===lQ!==(I[Q].isLigated&&!I[Q].isMultiplied)){var a=void 0,o=t.rephPos,d=!1;if(o!==oQ.After_Post){for(a=Q+1;a<n&&!NQ(I[a]);)a++;if(a<n&&NQ(I[a])&&(a+1<n&&EQ(I[a+1])&&a++,d=!0),!d&&o===oQ.After_Main){for(a=n;a+1<F&&I[a+1].shaperInfo.position<=oQ.After_Main;)a++;d=a<F}if(!d&&o===oQ.After_Sub){for(a=n;a+1<F&&!(I[a+1].shaperInfo.position&(oQ.Post_C|oQ.After_Post|oQ.SMVD));)a++;d=a<F}}if(!d){for(a=Q+1;a<n&&!NQ(I[a]);)a++;a<n&&NQ(I[a])&&(a+1<n&&EQ(I[a+1])&&a++,d=!0)}if(!d){for(a=F-1;a>Q&&I[a].shaperInfo.position===oQ.SMVD;)a--;if(NQ(I[a]))for(var u=n+1;u<a;u++)I[u].shaperInfo.category===cQ&&a--}var y=I[Q];I.splice.apply(I,[Q,0].concat(I.splice(Q+1,a-Q))),I[a]=y,Q<n&&n<=a&&n--}if(B&&n+1<F)for(var b=n+1;b<F;b++)if(I[b].features.pref){if(I[b].isLigated&&!I[b].isMultiplied){var Z=n;if("Malayalam"!==e.unicodeScript&&"Tamil"!==e.unicodeScript){for(;Z>Q&&!(I[Z-1].shaperInfo.category&(cQ|yQ));)Z--;if(Z>Q&&I[Z-1].shaperInfo.category===cQ)for(var m=b,x=n+1;x<m;x++)if(I[x].shaperInfo.category===cQ){Z--;break}}Z>Q&&NQ(I[Z-1])&&Z<F&&EQ(I[Z])&&Z++;var R=b,S=I[R];I.splice.apply(I,[Z+1,0].concat(I.splice(Z,R-Z))),I[Z]=S,Z<=n&&n<R&&n++}break}I[Q].shaperInfo.position!==oQ.Pre_M||Q&&/Cf|Mn/.test(r.a.getCategory(I[Q-1].codePoints[0]))||(I[Q].features.init=!0)}}function vQ(g,I){if(I>=g.length)return I;for(var e=g[I].shaperInfo.syllable;++I<g.length&&g[I].shaperInfo.syllable===e;);return I}var kQ=[0,2,0,0,0,0,0,0,0,0,186,16,1,5,14,250,241,237,156,123,140,95,69,21,199,103,119,187,251,123,109,119,187,22,90,160,188,31,166,165,8,69,154,24,164,49,16,32,209,148,38,106,67,20,249,195,214,7,54,98,176,65,141,141,74,104,136,134,2,18,9,134,80,99,132,26,163,149,52,245,25,80,99,64,249,3,72,5,77,138,68,65,5,21,35,1,81,132,72,72,197,196,248,29,239,156,252,206,206,158,121,222,215,22,126,39,249,100,238,99,158,231,204,204,157,153,59,247,174,154,80,234,20,176,22,156,3,46,4,27,193,102,112,185,185,118,94,5,238,22,176,13,108,7,59,60,254,118,130,93,194,245,27,193,173,96,55,216,3,190,13,190,7,238,1,247,25,30,100,254,127,1,30,5,191,3,79,11,241,61,5,158,1,171,192,11,38,111,171,204,253,85,140,87,192,33,160,150,40,213,5,203,192,10,112,60,120,35,56,19,172,7,27,192,69,224,18,240,110,240,62,240,1,240,81,176,29,236,0,59,193,46,112,11,216,13,238,4,123,193,126,112,55,184,23,60,0,30,6,191,6,191,7,127,1,207,130,23,193,33,160,38,149,234,128,89,176,18,156,0,78,5,103,76,22,121,95,15,247,60,112,161,57,223,8,119,51,184,28,108,1,219,192,199,193,167,205,253,107,225,126,1,220,12,110,3,95,155,28,150,253,155,147,243,117,81,150,253,136,239,251,21,199,201,249,177,21,247,125,56,127,16,252,10,252,6,60,53,89,148,247,25,240,2,120,5,252,55,144,159,169,41,165,102,192,10,176,106,170,8,127,10,220,53,224,108,112,174,185,118,1,220,119,128,119,129,203,166,10,221,106,182,226,248,67,224,99,224,147,224,115,224,243,38,204,77,198,253,50,220,175,130,27,88,186,223,192,249,190,41,127,222,126,16,184,31,195,79,16,199,253,224,0,56,8,158,48,229,210,247,158,132,251,87,240,15,240,178,185,246,42,220,241,14,234,32,88,218,9,199,127,36,252,28,215,41,226,60,17,238,106,112,22,88,15,214,153,180,54,224,248,12,19,215,219,140,95,205,197,236,152,179,9,215,47,5,151,89,247,183,58,252,19,31,49,105,159,205,244,230,243,207,253,229,162,227,248,48,210,188,10,92,13,118,116,226,227,223,105,233,247,76,193,207,46,248,185,5,236,238,20,245,109,15,139,127,169,71,31,123,113,111,63,184,27,220,235,176,163,212,254,31,232,12,203,245,8,142,31,3,127,0,79,155,180,244,241,223,204,241,99,1,123,84,161,223,17,35,94,143,140,218,207,136,17,35,70,140,24,49,98,196,136,215,2,235,58,195,53,129,27,34,252,255,147,205,93,255,101,205,99,191,24,17,254,63,8,51,209,45,214,97,6,112,151,131,21,224,56,112,154,185,254,38,184,235,187,133,255,13,112,207,7,111,7,239,52,247,223,11,119,11,216,102,206,183,195,221,1,118,118,221,233,106,127,187,60,247,71,140,24,49,98,68,189,156,211,50,109,151,127,196,136,17,245,80,119,251,254,18,198,143,183,119,139,247,66,119,192,253,150,48,158,252,78,183,120,183,175,143,239,177,238,223,183,8,198,159,127,159,46,152,94,170,212,37,224,145,233,48,59,225,239,231,150,95,53,51,60,94,141,227,45,96,15,120,28,28,50,247,86,207,98,140,62,59,244,183,3,199,123,160,131,63,129,19,123,8,3,246,244,138,177,252,29,83,133,251,176,57,231,12,250,240,55,54,100,99,127,161,159,155,112,109,31,187,254,60,142,215,14,148,186,18,236,3,207,131,181,211,237,63,127,218,38,212,94,30,132,238,14,152,122,122,16,238,227,198,94,122,158,248,108,55,253,121,186,223,184,103,70,250,231,188,152,145,158,212,39,72,225,95,70,220,175,118,231,251,163,252,238,247,164,55,142,250,217,3,115,189,97,217,180,191,163,112,126,108,175,56,63,185,55,244,127,122,111,126,62,98,251,171,88,91,186,202,247,230,158,124,239,173,184,190,1,92,4,54,130,205,224,61,224,73,115,255,253,56,190,2,92,5,174,54,247,63,3,174,3,55,130,91,193,237,44,238,59,113,188,23,236,3,63,4,63,5,247,131,3,224,160,144,7,61,15,127,2,215,255,108,238,233,253,52,207,225,248,37,193,47,249,255,55,238,141,245,135,231,61,28,207,129,163,251,197,249,73,253,98,111,137,190,191,6,199,103,247,221,58,211,254,207,237,203,58,115,233,253,2,248,191,24,108,2,151,130,203,192,86,147,246,182,126,209,102,98,237,182,29,254,63,5,174,1,215,129,235,193,205,44,63,183,225,248,43,224,235,224,46,240,93,86,182,16,63,242,148,251,81,228,241,103,253,118,158,57,46,93,63,20,200,207,98,234,43,171,212,65,27,233,255,178,63,63,222,131,70,247,191,133,251,199,126,185,124,198,150,227,105,79,187,179,211,191,171,226,242,47,198,250,85,133,253,203,212,147,182,203,151,90,254,231,250,205,230,219,183,143,106,175,89,55,127,169,95,184,135,224,42,140,49,167,6,197,249,244,96,232,247,136,129,92,54,186,191,166,35,151,171,238,250,31,34,180,151,44,102,175,217,202,65,225,30,15,247,180,193,225,81,239,108,253,135,238,159,46,216,55,20,239,67,194,216,118,177,17,219,239,220,208,96,94,206,26,204,191,118,77,70,254,207,153,136,171,135,186,14,191,133,181,99,189,191,115,3,206,207,31,20,237,127,29,219,111,121,177,241,55,48,249,219,4,247,210,65,177,239,246,114,184,31,20,234,136,175,237,172,142,216,203,153,139,206,251,149,131,249,215,248,222,213,231,80,55,175,232,12,203,254,9,227,126,22,238,93,157,97,254,79,101,97,174,53,126,174,135,123,179,16,247,173,184,182,59,177,157,180,205,49,19,99,106,49,200,24,99,220,58,231,126,200,157,96,247,151,68,98,199,167,28,215,234,150,197,161,241,145,144,80,93,26,23,32,91,141,11,225,198,45,119,210,64,18,83,183,234,174,11,19,53,199,95,181,76,181,157,129,18,18,99,203,215,83,219,151,218,204,235,73,198,28,44,6,177,243,193,251,188,195,93,164,49,131,125,124,184,72,110,157,145,198,82,57,246,181,245,119,56,233,176,169,118,23,27,119,138,238,171,110,135,220,246,174,126,41,196,107,93,92,243,14,126,191,10,187,228,234,159,242,212,97,96,26,27,61,255,169,154,30,48,75,130,255,63,215,199,211,198,93,106,209,179,232,91,204,176,176,84,198,89,166,179,30,139,43,54,127,228,63,103,158,168,74,232,101,130,217,166,27,25,151,178,252,217,231,169,132,194,42,53,63,29,201,63,73,140,125,73,166,13,246,185,182,111,76,31,210,23,174,185,202,100,167,157,170,163,80,123,166,251,84,39,248,220,142,183,63,95,218,190,178,228,228,57,213,190,161,99,45,3,227,74,246,181,133,218,175,125,62,99,249,155,85,126,137,169,143,161,48,46,180,93,150,169,162,29,210,252,119,78,165,61,195,98,237,235,179,73,74,158,171,178,111,110,251,37,155,242,62,90,169,249,253,115,85,82,182,253,210,88,54,148,6,127,78,46,99,40,117,248,244,207,169,246,165,103,107,78,255,28,18,187,237,219,58,176,243,153,107,223,113,53,191,124,185,162,109,28,122,150,75,229,112,233,92,242,171,4,255,46,127,174,116,164,235,177,117,136,11,181,85,62,190,226,50,173,230,219,159,159,199,182,111,233,249,236,146,156,114,72,107,176,161,181,9,222,150,187,230,60,181,253,165,228,55,167,61,167,234,65,159,251,198,203,74,45,236,171,249,121,200,158,52,158,150,244,96,75,217,246,236,147,208,51,153,250,2,110,227,152,177,188,84,174,166,236,235,242,75,98,247,215,117,216,87,106,255,182,216,121,45,99,223,55,24,114,132,143,181,82,158,199,85,183,191,28,200,30,100,79,27,174,211,80,255,187,92,201,125,28,159,255,199,216,180,206,246,74,98,175,149,72,235,38,41,246,204,201,91,213,182,140,141,83,169,249,121,137,205,175,212,102,121,93,161,186,68,54,91,202,252,76,59,240,213,135,84,157,82,62,114,214,250,218,104,123,62,219,244,216,53,123,237,73,26,23,147,140,43,127,220,58,124,71,45,156,91,116,204,189,178,251,17,108,125,42,203,205,173,179,57,58,140,137,155,252,196,234,91,159,207,177,176,190,114,145,216,250,86,204,77,41,191,203,191,22,251,157,127,46,227,204,181,199,172,174,49,109,213,246,211,113,78,90,46,205,123,37,137,181,113,157,216,194,215,140,93,107,200,54,52,134,224,231,29,53,92,3,246,149,247,136,4,84,162,255,58,208,18,154,43,77,122,238,241,240,174,122,44,181,9,73,234,174,27,41,72,207,82,205,180,146,235,139,94,167,212,117,102,198,92,59,18,172,80,69,31,53,151,152,182,189,47,141,142,67,121,117,189,215,152,83,243,243,209,87,195,49,149,29,71,87,128,199,101,151,61,71,183,115,106,56,22,161,120,164,116,187,70,175,75,132,124,248,160,176,100,191,54,246,35,72,117,188,237,119,163,161,118,94,133,158,248,94,183,42,165,14,29,229,62,95,236,107,188,127,168,59,125,9,158,126,138,142,170,78,63,85,170,208,191,106,56,253,80,222,180,240,231,134,52,118,117,205,193,8,26,127,244,213,112,236,161,159,193,43,85,49,254,154,100,208,26,142,62,182,219,136,253,28,38,91,165,150,191,46,241,245,129,77,244,139,250,185,90,117,29,72,209,41,175,27,246,120,131,176,199,106,92,142,50,204,178,99,155,163,77,60,147,66,120,187,175,79,221,223,80,117,187,41,91,247,114,211,205,13,111,195,215,169,202,230,143,75,236,115,187,110,234,172,3,212,14,104,45,138,247,83,117,214,75,26,163,235,246,181,210,112,140,146,231,73,51,44,111,174,246,202,231,152,212,174,165,62,94,90,255,33,168,189,242,54,59,153,80,38,151,148,13,31,26,183,214,61,166,229,58,210,118,106,122,207,154,126,246,74,115,66,123,93,65,178,53,61,167,235,232,143,66,235,72,49,172,2,199,26,215,69,234,220,161,45,59,113,120,27,150,250,24,106,203,51,204,95,221,245,198,94,171,39,151,250,159,152,119,110,90,108,91,187,202,110,247,65,124,189,96,165,135,227,12,186,239,161,189,93,174,180,83,250,103,46,49,253,78,172,148,157,91,243,254,69,251,159,117,64,126,164,235,93,79,56,105,47,155,116,141,242,171,227,163,247,161,180,31,65,211,198,183,88,210,248,49,36,199,131,19,216,249,132,131,88,251,216,235,97,169,246,77,89,127,137,185,158,26,183,253,172,76,9,167,229,196,136,50,166,72,142,77,41,156,61,62,105,66,58,97,47,94,145,214,172,165,107,41,241,197,132,11,173,157,75,174,148,78,74,190,202,150,163,202,245,210,148,252,248,198,20,33,155,249,236,235,10,87,5,82,57,235,72,199,55,214,138,145,212,248,234,202,111,89,63,117,234,179,141,116,115,108,25,35,109,151,161,233,242,134,164,77,91,164,164,95,103,221,77,201,199,68,205,121,246,233,221,30,35,150,213,95,21,250,111,66,66,105,53,161,255,166,236,156,163,239,170,109,147,243,238,193,53,47,112,197,25,90,47,115,133,207,45,67,206,220,66,242,175,50,226,74,153,143,133,164,201,126,167,137,250,222,180,62,36,225,246,201,205,91,110,185,234,234,67,67,229,173,202,14,174,120,154,174,7,177,210,84,251,41,91,214,182,242,80,214,38,139,161,111,168,178,191,181,227,77,245,75,235,184,246,190,48,233,189,71,204,183,85,101,224,107,220,180,198,158,171,251,216,112,85,151,33,245,121,42,237,215,107,18,189,231,81,250,118,197,133,174,23,49,107,122,84,254,156,247,11,92,92,239,91,83,113,165,227,26,59,73,109,130,35,237,65,230,239,12,82,203,31,131,253,222,210,126,151,201,223,3,233,125,36,41,223,107,82,217,219,124,87,107,67,239,224,92,123,122,233,61,173,222,11,160,235,241,73,106,248,175,137,220,113,111,110,125,245,217,155,246,69,212,173,175,216,52,164,253,15,252,29,56,93,179,247,67,199,8,79,103,101,68,94,168,174,74,225,99,244,111,219,177,106,29,242,245,12,254,60,209,247,232,253,94,149,237,164,199,92,178,131,109,55,87,56,234,231,200,109,82,114,244,175,235,26,175,123,125,37,63,55,105,143,126,140,240,248,165,111,226,249,190,189,49,19,119,93,223,73,214,33,246,120,230,228,146,196,174,49,248,36,102,77,66,186,23,242,235,74,199,231,143,230,142,117,140,175,165,124,140,43,191,206,164,117,163,148,52,236,107,74,201,186,110,74,236,250,103,143,177,125,115,237,42,210,171,107,238,148,35,139,101,253,160,204,28,86,178,95,153,185,112,83,101,118,73,93,235,18,77,216,184,238,58,93,119,252,49,250,208,207,78,251,27,108,223,183,32,228,143,246,106,133,198,107,246,121,93,144,232,57,202,64,45,220,107,167,37,180,119,52,102,44,81,245,154,125,221,237,179,206,119,11,135,75,30,154,78,51,165,156,124,206,66,251,20,155,104,47,246,28,198,181,31,219,245,189,119,104,94,111,203,41,37,105,98,30,112,170,106,255,95,174,210,127,1,237,61,207,90,247,186,127,147,198,237,210,26,91,91,72,245,74,250,246,155,238,209,119,223,42,33,13,105,189,33,118,239,119,74,58,49,216,54,105,58,125,223,63,37,125,237,88,135,93,110,80,106,161,78,105,239,58,217,42,119,125,78,154,99,86,173,3,74,43,86,170,76,51,215,102,246,123,22,251,191,8,218,70,244,191,76,87,127,75,239,0,98,242,40,249,43,171,139,148,240,190,246,81,117,93,72,65,235,208,215,255,18,3,229,30,31,151,173,163,185,255,95,83,158,243,170,109,105,167,229,242,67,227,112,94,207,237,111,119,120,63,93,230,127,168,74,249,251,124,87,187,35,241,189,171,82,1,127,41,82,71,189,77,233,247,237,247,134,84,215,200,78,92,164,126,38,165,14,241,254,62,229,219,203,178,101,165,49,6,255,86,139,254,9,64,229,165,49,148,157,215,144,148,109,223,117,149,157,68,250,15,130,93,230,152,57,108,46,118,158,203,254,23,222,213,110,83,234,58,47,127,207,202,111,170,148,181,127,142,78,171,148,20,93,243,127,120,133,158,137,118,123,170,34,253,178,144,232,119,165,250,189,233,105,42,252,79,42,187,108,101,243,207,237,56,158,17,222,215,230,165,177,162,221,206,83,243,159,91,206,170,251,49,187,13,211,120,136,230,43,84,54,62,94,104,66,150,168,133,255,40,144,144,254,33,86,53,147,38,29,123,60,162,245,164,231,114,115,22,174,111,62,233,122,204,56,203,87,126,169,95,182,243,188,220,193,209,137,80,57,151,169,133,107,81,75,148,251,121,228,170,243,77,244,71,190,255,30,240,181,119,187,77,243,118,109,247,41,109,172,55,112,73,29,23,198,198,93,230,95,140,190,251,212,215,243,61,141,41,227,248,216,122,20,242,91,6,87,127,195,165,199,92,126,76,101,229,235,57,244,191,235,152,61,69,57,117,36,38,188,114,28,215,217,22,125,255,121,87,74,30,63,86,165,159,16,19,106,225,191,54,98,218,122,155,239,80,171,24,171,214,53,254,173,243,221,79,91,239,177,104,76,233,179,219,152,227,122,19,82,231,60,38,86,236,189,42,169,123,48,154,218,159,208,196,30,149,152,248,155,42,243,98,220,239,33,137,148,70,91,237,169,170,114,199,232,51,69,247,116,92,247,218,133,84,142,170,227,40,27,231,98,108,23,101,227,168,178,125,214,213,214,171,212,91,217,188,248,164,238,116,203,228,205,151,191,166,164,201,250,149,147,126,85,249,207,13,95,85,250,49,233,148,213,115,200,111,29,249,78,73,191,142,184,109,73,177,157,36,185,245,192,37,255,3],HQ=FQ.categories,MQ=FQ.decompositions,YQ=new d.a(new Uint8Array(kQ)),wQ=new CQ(FQ),TQ=function(g){function I(){return g.apply(this,arguments)||this}return c()(I,g),I.planFeatures=function(g){g.addStage(KQ),g.addStage(["locl","ccmp","nukt","akhn"]),g.addStage(jQ),g.addStage(["rphf"],!1),g.addStage(PQ),g.addStage(jQ),g.addStage(["pref"]),g.addStage(_Q),g.addStage(["rkrf","abvf","blwf","half","pstf","vatu","cjct"]),g.addStage(qQ),g.addStage(["abvs","blws","pres","psts","dist","abvm","blwm"])},I.assignFeatures=function(g,I){for(var e=function(e){var t=I[e].codePoints[0];if(MQ[t]){var C=MQ[t].map((function(t){var C=g.font.glyphForCodePoint(t);return new TC(g.font,C.id,[t],I[e].features)}));I.splice.apply(I,[e,1].concat(C))}},t=I.length-1;t>=0;t--)e(t)},I}(DC);function zQ(g){return YQ.get(g.codePoints[0])}TQ.zeroMarkWidths="BEFORE_GPOS";var OQ=function(g,I,e){this.category=g,this.syllableType=I,this.syllable=e};function KQ(g,I){for(var e,t=0,C=F()(wQ.match(I.map(zQ)));!(e=C()).done;){var Q=e.value,B=Q[0],n=Q[1],U=Q[2];++t;for(var s=B;s<=n;s++)I[s].shaperInfo=new OQ(HQ[zQ(I[s])],U[0],t);for(var i="R"===I[B].shaperInfo.category?1:Math.min(3,n-B),c=B;c<B+i;c++)I[c].features.rphf=!0}}function jQ(g,I){for(var e,t=F()(I);!(e=t()).done;){e.value.substituted=!1}}function PQ(g,I){for(var e,t=F()(I);!(e=t()).done;){var C=e.value;C.substituted&&C.features.rphf&&(C.shaperInfo.category="R")}}function _Q(g,I){for(var e,t=F()(I);!(e=t()).done;){var C=e.value;C.substituted&&(C.shaperInfo.category="VPre")}}function qQ(g,I){for(var e=g.glyphForCodePoint(9676).id,t=0,C=$Q(I,0);t<I.length;C=$Q(I,t=C)){var Q=void 0,F=void 0,B=I[t].shaperInfo,n=B.syllableType;if("virama_terminated_cluster"===n||"standard_cluster"===n||"broken_cluster"===n){if("broken_cluster"===n&&e){var U=new TC(g,e,[9676]);for(U.shaperInfo=B,Q=t;Q<C&&"R"===I[Q].shaperInfo.category;Q++);I.splice(++Q,0,U),C++}if("R"===B.category&&C-t>1)for(Q=t+1;Q<C;Q++)if(IF(B=I[Q].shaperInfo)||gF(I[Q])){gF(I[Q])&&Q--,I.splice.apply(I,[t,0].concat(I.splice(t+1,Q-t),[I[Q]]));break}for(Q=t,F=C;Q<C;Q++)IF(B=I[Q].shaperInfo)||gF(I[Q])?F=gF(I[Q])?Q+1:Q:("VPre"===B.category||"VMPre"===B.category)&&F<Q&&I.splice.apply(I,[F,1,I[Q]].concat(I.splice(F,Q-F)))}}}function $Q(g,I){if(I>=g.length)return I;for(var e=g[I].shaperInfo.syllable;++I<g.length&&g[I].shaperInfo.syllable===e;);return I}function gF(g){return"H"===g.shaperInfo.category&&!g.isLigated}function IF(g){return"B"===g.category||"GB"===g.category}var eF={arab:kC,mong:kC,syrc:kC,"nko ":kC,phag:kC,mand:kC,mani:kC,phlp:kC,hang:zC,bng2:GQ,beng:GQ,dev2:GQ,deva:GQ,gjr2:GQ,gujr:GQ,guru:GQ,gur2:GQ,knda:GQ,knd2:GQ,mlm2:GQ,mlym:GQ,ory2:GQ,orya:GQ,taml:GQ,tml2:GQ,telu:GQ,tel2:GQ,khmr:GQ,bali:TQ,batk:TQ,brah:TQ,bugi:TQ,buhd:TQ,cakm:TQ,cham:TQ,dupl:TQ,egyp:TQ,gran:TQ,hano:TQ,java:TQ,kthi:TQ,kali:TQ,khar:TQ,khoj:TQ,sind:TQ,lepc:TQ,limb:TQ,mahj:TQ,mtei:TQ,modi:TQ,hmng:TQ,rjng:TQ,saur:TQ,shrd:TQ,sidd:TQ,sinh:TQ,sund:TQ,sylo:TQ,tglg:TQ,tagb:TQ,tale:TQ,lana:TQ,tavt:TQ,takr:TQ,tibt:TQ,tfng:TQ,tirh:TQ,latn:DC,DFLT:DC};for(var tF=function(g){function I(){return g.apply(this,arguments)||this}return c()(I,g),I.prototype.applyLookup=function(g,I){var e=this;switch(g){case 1:var t=this.coverageIndex(I.coverage);if(-1===t)return!1;var C=this.glyphIterator.cur;switch(I.version){case 1:C.id=C.id+I.deltaGlyphID&65535;break;case 2:C.id=I.substitute.get(t)}return!0;case 2:var Q=this.coverageIndex(I.coverage);if(-1!==Q){var B,n=I.sequences.get(Q);if(0===n.length)return this.glyphs.splice(this.glyphIterator.index,1),!0;this.glyphIterator.cur.id=n[0],this.glyphIterator.cur.ligatureComponent=0;var U=this.glyphIterator.cur.features,s=this.glyphIterator.cur,i=n.slice(1).map((function(g,I){var t=new TC(e.font,g,void 0,U);return t.shaperInfo=s.shaperInfo,t.isLigated=s.isLigated,t.ligatureComponent=I+1,t.substituted=!0,t.isMultiplied=!0,t}));return(B=this.glyphs).splice.apply(B,[this.glyphIterator.index+1,0].concat(i)),!0}return!1;case 3:var c=this.coverageIndex(I.coverage);if(-1!==c){return this.glyphIterator.cur.id=I.alternateSet.get(c)[0],!0}return!1;case 4:var A=this.coverageIndex(I.coverage);if(-1===A)return!1;for(var l,a=F()(I.ligatureSets.get(A));!(l=a()).done;){var r=l.value,o=this.sequenceMatchIndices(1,r.components);if(o){for(var d,u=this.glyphIterator.cur,y=u.codePoints.slice(),b=F()(o);!(d=b()).done;){var Z=d.value;y.push.apply(y,this.glyphs[Z].codePoints)}var m=new TC(this.font,r.glyph,y,u.features);m.shaperInfo=u.shaperInfo,m.isLigated=!0,m.substituted=!0;for(var x=u.isMark,R=0;R<o.length&&x;R++)x=this.glyphs[o[R]].isMark;m.ligatureID=x?null:this.ligatureID++;for(var S,G=u.ligatureID,L=u.codePoints.length,V=L,h=this.glyphIterator.index+1,D=F()(o);!(S=D()).done;){var p=S.value;if(x)h=p;else for(;h<p;){var E=V-L+Math.min(this.glyphs[h].ligatureComponent||1,L);this.glyphs[h].ligatureID=m.ligatureID,this.glyphs[h].ligatureComponent=E,h++}G=this.glyphs[h].ligatureID,V+=L=this.glyphs[h].codePoints.length,h++}if(G&&!x)for(var N=h;N<this.glyphs.length&&this.glyphs[N].ligatureID===G;N++){E=V-L+Math.min(this.glyphs[N].ligatureComponent||1,L);this.glyphs[N].ligatureComponent=E}for(var W=o.length-1;W>=0;W--)this.glyphs.splice(o[W],1);return this.glyphs[this.glyphIterator.index]=m,!0}}return!1;case 5:return this.applyContext(I);case 6:return this.applyChainingContext(I);case 7:return this.applyLookup(I.lookupType,I.extension);default:throw new Error("GSUB lookupType "+g+" is not supported")}},I}(wC),CF=function(g){function I(){return g.apply(this,arguments)||this}c()(I,g);var e=I.prototype;return e.applyPositionValue=function(g,I){var e=this.positions[this.glyphIterator.peekIndex(g)];null!=I.xAdvance&&(e.xAdvance+=I.xAdvance),null!=I.yAdvance&&(e.yAdvance+=I.yAdvance),null!=I.xPlacement&&(e.xOffset+=I.xPlacement),null!=I.yPlacement&&(e.yOffset+=I.yPlacement);var t=this.font._variationProcessor,C=this.font.GDEF&&this.font.GDEF.itemVariationStore;t&&C&&(I.xPlaDevice&&(e.xOffset+=t.getDelta(C,I.xPlaDevice.a,I.xPlaDevice.b)),I.yPlaDevice&&(e.yOffset+=t.getDelta(C,I.yPlaDevice.a,I.yPlaDevice.b)),I.xAdvDevice&&(e.xAdvance+=t.getDelta(C,I.xAdvDevice.a,I.xAdvDevice.b)),I.yAdvDevice&&(e.yAdvance+=t.getDelta(C,I.yAdvDevice.a,I.yAdvDevice.b)))},e.applyLookup=function(g,I){switch(g){case 1:var e=this.coverageIndex(I.coverage);if(-1===e)return!1;switch(I.version){case 1:this.applyPositionValue(0,I.value);break;case 2:this.applyPositionValue(0,I.values.get(e))}return!0;case 2:var t=this.glyphIterator.peek();if(!t)return!1;var C=this.coverageIndex(I.coverage);if(-1===C)return!1;switch(I.version){case 1:for(var Q,B=I.pairSets.get(C),n=F()(B);!(Q=n()).done;){var U=Q.value;if(U.secondGlyph===t.id)return this.applyPositionValue(0,U.value1),this.applyPositionValue(1,U.value2),!0}return!1;case 2:var s=this.getClassID(this.glyphIterator.cur.id,I.classDef1),i=this.getClassID(t.id,I.classDef2);if(-1===s||-1===i)return!1;var c=I.classRecords.get(s).get(i);return this.applyPositionValue(0,c.value1),this.applyPositionValue(1,c.value2),!0}case 3:var A=this.glyphIterator.peekIndex(),l=this.glyphs[A];if(!l)return!1;var a=I.entryExitRecords[this.coverageIndex(I.coverage)];if(!a||!a.exitAnchor)return!1;var r=I.entryExitRecords[this.coverageIndex(I.coverage,l.id)];if(!r||!r.entryAnchor)return!1;var o=this.getAnchor(r.entryAnchor),d=this.getAnchor(a.exitAnchor),u=this.positions[this.glyphIterator.index],y=this.positions[A];switch(this.direction){case"ltr":u.xAdvance=d.x+u.xOffset;var b=o.x+y.xOffset;y.xAdvance-=b,y.xOffset-=b;break;case"rtl":b=d.x+u.xOffset,u.xAdvance-=b,u.xOffset-=b,y.xAdvance=o.x+y.xOffset}return this.glyphIterator.flags.rightToLeft?(this.glyphIterator.cur.cursiveAttachment=A,u.yOffset=o.y-d.y):(l.cursiveAttachment=this.glyphIterator.index,u.yOffset=d.y-o.y),!0;case 4:var Z=this.coverageIndex(I.markCoverage);if(-1===Z)return!1;for(var m=this.glyphIterator.index;--m>=0&&(this.glyphs[m].isMark||this.glyphs[m].ligatureComponent>0););if(m<0)return!1;var x=this.coverageIndex(I.baseCoverage,this.glyphs[m].id);if(-1===x)return!1;var R=I.markArray[Z],S=I.baseArray[x][R.class];return this.applyAnchor(R,S,m),!0;case 5:var G=this.coverageIndex(I.markCoverage);if(-1===G)return!1;for(var L=this.glyphIterator.index;--L>=0&&this.glyphs[L].isMark;);if(L<0)return!1;var V=this.coverageIndex(I.ligatureCoverage,this.glyphs[L].id);if(-1===V)return!1;var h=I.ligatureArray[V],D=this.glyphIterator.cur,p=this.glyphs[L],E=p.ligatureID&&p.ligatureID===D.ligatureID&&D.ligatureComponent>0?Math.min(D.ligatureComponent,p.codePoints.length)-1:p.codePoints.length-1,N=I.markArray[G],W=h[E][N.class];return this.applyAnchor(N,W,L),!0;case 6:var f=this.coverageIndex(I.mark1Coverage);if(-1===f)return!1;var X=this.glyphIterator.peekIndex(-1),J=this.glyphs[X];if(!J||!J.isMark)return!1;var v=this.glyphIterator.cur,k=!1;if(v.ligatureID===J.ligatureID?v.ligatureID?v.ligatureComponent===J.ligatureComponent&&(k=!0):k=!0:(v.ligatureID&&!v.ligatureComponent||J.ligatureID&&!J.ligatureComponent)&&(k=!0),!k)return!1;var H=this.coverageIndex(I.mark2Coverage,J.id);if(-1===H)return!1;var M=I.mark1Array[f],Y=I.mark2Array[H][M.class];return this.applyAnchor(M,Y,X),!0;case 7:return this.applyContext(I);case 8:return this.applyChainingContext(I);case 9:return this.applyLookup(I.lookupType,I.extension);default:throw new Error("Unsupported GPOS table: "+g)}},e.applyAnchor=function(g,I,e){var t=this.getAnchor(I),C=this.getAnchor(g.markAnchor);this.positions[e];var Q=this.positions[this.glyphIterator.index];Q.xOffset=t.x-C.x,Q.yOffset=t.y-C.y,this.glyphIterator.cur.markAttachment=e},e.getAnchor=function(g){var I=g.xCoordinate,e=g.yCoordinate,t=this.font._variationProcessor,C=this.font.GDEF&&this.font.GDEF.itemVariationStore;return t&&C&&(g.xDeviceTable&&(I+=t.getDelta(C,g.xDeviceTable.a,g.xDeviceTable.b)),g.yDeviceTable&&(e+=t.getDelta(C,g.yDeviceTable.a,g.yDeviceTable.b))),{x:I,y:e}},e.applyFeatures=function(I,e,t){g.prototype.applyFeatures.call(this,I,e,t);for(var C=0;C<this.glyphs.length;C++)this.fixCursiveAttachment(C);this.fixMarkAttachment()},e.fixCursiveAttachment=function(g){var I=this.glyphs[g];if(null!=I.cursiveAttachment){var e=I.cursiveAttachment;I.cursiveAttachment=null,this.fixCursiveAttachment(e),this.positions[g].yOffset+=this.positions[e].yOffset}},e.fixMarkAttachment=function(){for(var g=0;g<this.glyphs.length;g++){var I=this.glyphs[g];if(null!=I.markAttachment){var e=I.markAttachment;if(this.positions[g].xOffset+=this.positions[e].xOffset,this.positions[g].yOffset+=this.positions[e].yOffset,"ltr"===this.direction)for(var t=e;t<g;t++)this.positions[g].xOffset-=this.positions[t].xAdvance,this.positions[g].yOffset-=this.positions[t].yAdvance;else for(var C=e+1;C<g+1;C++)this.positions[g].xOffset+=this.positions[C].xAdvance,this.positions[g].yOffset+=this.positions[C].yAdvance}}},I}(wC),QF=function(){function g(g){this.font=g,this.glyphInfos=null,this.plan=null,this.GSUBProcessor=null,this.GPOSProcessor=null,this.fallbackPosition=!0,g.GSUB&&(this.GSUBProcessor=new tF(g,g.GSUB)),g.GPOS&&(this.GPOSProcessor=new CF(g,g.GPOS))}var I=g.prototype;return I.setup=function(g){var I=this;this.glyphInfos=g.glyphs.map((function(g){return new TC(I.font,g.id,[].concat(g.codePoints))}));var e=null;for(var t in this.GPOSProcessor&&(e=this.GPOSProcessor.selectScript(g.script,g.language,g.direction)),this.GSUBProcessor&&(e=this.GSUBProcessor.selectScript(g.script,g.language,g.direction)),this.shaper=function(g){Array.isArray(g)||(g=[g]);for(var I,e=F()(g);!(I=e()).done;){var t=I.value,C=eF[t];if(C)return C}return DC}(e),this.plan=new RC(this.font,e,g.direction),this.shaper.plan(this.plan,this.glyphInfos,g.features),this.plan.allFeatures)g.features[t]=!0},I.substitute=function(g){var I=this;this.GSUBProcessor&&(this.plan.process(this.GSUBProcessor,this.glyphInfos),g.glyphs=this.glyphInfos.map((function(g){return I.font.getGlyph(g.id,g.codePoints)})))},I.position=function(g){return"BEFORE_GPOS"===this.shaper.zeroMarkWidths&&this.zeroMarkAdvances(g.positions),this.GPOSProcessor&&this.plan.process(this.GPOSProcessor,this.glyphInfos,g.positions),"AFTER_GPOS"===this.shaper.zeroMarkWidths&&this.zeroMarkAdvances(g.positions),"rtl"===g.direction&&(g.glyphs.reverse(),g.positions.reverse()),this.GPOSProcessor&&this.GPOSProcessor.features},I.zeroMarkAdvances=function(g){for(var I=0;I<this.glyphInfos.length;I++)this.glyphInfos[I].isMark&&(g[I].xAdvance=0,g[I].yAdvance=0)},I.cleanup=function(){this.glyphInfos=null,this.plan=null,this.shaper=null},I.getAvailableFeatures=function(g,I){var e=[];return this.GSUBProcessor&&(this.GSUBProcessor.selectScript(g,I),e.push.apply(e,Object.keys(this.GSUBProcessor.features))),this.GPOSProcessor&&(this.GPOSProcessor.selectScript(g,I),e.push.apply(e,Object.keys(this.GPOSProcessor.features))),e},g}(),FF=function(){function g(g){this.font=g,this.unicodeLayoutEngine=null,this.kernProcessor=null,this.font.morx?this.engine=new xC(this.font):(this.font.GSUB||this.font.GPOS)&&(this.engine=new QF(this.font))}var I=g.prototype;return I.layout=function(g,I,e,t,C){if("string"===typeof I&&(C=t,t=e,e=I,I=[]),"string"===typeof g){null==e&&(e=function(g){for(var I=g.length,e=0;e<I;){var t=g.charCodeAt(e++);if(55296<=t&&t<=56319&&e<I){var C=g.charCodeAt(e);56320<=C&&C<=57343&&(e++,t=((1023&t)<<10)+(1023&C)+65536)}var Q=r.a.getScript(t);if("Common"!==Q&&"Inherited"!==Q&&"Unknown"!==Q)return $t[Q]}return $t.Unknown}(g));var Q=this.font.glyphsForString(g)}else{if(null==e){for(var B,n=[],U=F()(g);!(B=U()).done;){var s=B.value;n.push.apply(n,s.codePoints)}e=function(g){for(var I=0;I<g.length;I++){var e=g[I],t=r.a.getScript(e);if("Common"!==t&&"Inherited"!==t&&"Unknown"!==t)return $t[t]}return $t.Unknown}(n)}Q=g}var i=new nC(Q,I,e,t,C);return 0===Q.length?(i.positions=[],i):(this.engine&&this.engine.setup&&this.engine.setup(i),this.substitute(i),this.position(i),this.hideDefaultIgnorables(i.glyphs,i.positions),this.engine&&this.engine.cleanup&&this.engine.cleanup(),i)},I.substitute=function(g){this.engine&&this.engine.substitute&&this.engine.substitute(g)},I.position=function(g){g.positions=g.glyphs.map((function(g){return new UC(g.advanceWidth)}));var I=null;this.engine&&this.engine.position&&(I=this.engine.position(g)),I||this.engine&&!this.engine.fallbackPosition||(this.unicodeLayoutEngine||(this.unicodeLayoutEngine=new _t(this.font)),this.unicodeLayoutEngine.positionGlyphs(g.glyphs,g.positions)),I&&I.kern||!1===g.features.kern||!this.font.kern||(this.kernProcessor||(this.kernProcessor=new Pt(this.font)),this.kernProcessor.process(g.glyphs,g.positions),g.features.kern=!0)},I.hideDefaultIgnorables=function(g,I){for(var e=this.font.glyphForCodePoint(32),t=0;t<g.length;t++)this.isDefaultIgnorable(g[t].codePoints[0])&&(g[t]=e,I[t].xAdvance=0,I[t].yAdvance=0)},I.isDefaultIgnorable=function(g){var I=g>>16;if(0===I)switch(g>>8){case 0:return 173===g;case 3:return 847===g;case 6:return 1564===g;case 23:return 6068<=g&&g<=6069;case 24:return 6155<=g&&g<=6158;case 32:return 8203<=g&&g<=8207||8234<=g&&g<=8238||8288<=g&&g<=8303;case 254:return 65024<=g&&g<=65039||65279===g;case 255:return 65520<=g&&g<=65528;default:return!1}else switch(I){case 1:return 113824<=g&&g<=113827||119155<=g&&g<=119162;case 14:return 917504<=g&&g<=921599;default:return!1}},I.getAvailableFeatures=function(g,I){var e=[];return this.engine&&e.push.apply(e,this.engine.getAvailableFeatures(g,I)),this.font.kern&&-1===e.indexOf("kern")&&e.push("kern"),e},I.stringsForGlyph=function(g){for(var I,e=new Set,t=this.font._cmapProcessor.codePointsForGlyph(g),C=F()(t);!(I=C()).done;){var Q=I.value;e.add(String.fromCodePoint(Q))}if(this.engine&&this.engine.stringsForGlyph)for(var B,n=F()(this.engine.stringsForGlyph(g));!(B=n()).done;){var U=B.value;e.add(U)}return Array.from(e)},g}(),BF={moveTo:"M",lineTo:"L",quadraticCurveTo:"Q",bezierCurveTo:"C",closePath:"Z"},nF=function(){function g(){this.commands=[],this._bbox=null,this._cbox=null}var I=g.prototype;return I.toFunction=function(){var g=this;return function(I){g.commands.forEach((function(g){return I[g.command].apply(I,g.args)}))}},I.toSVG=function(){return this.commands.map((function(g){var I=g.args.map((function(g){return Math.round(100*g)/100}));return""+BF[g.command]+I.join(" ")})).join("")},I.mapPoints=function(I){for(var e,t=new g,C=F()(this.commands);!(e=C()).done;){for(var Q=e.value,B=[],n=0;n<Q.args.length;n+=2){var U=I(Q.args[n],Q.args[n+1]),s=U[0],i=U[1];B.push(s,i)}t[Q.command].apply(t,B)}return t},I.transform=function(g,I,e,t,C,Q){return this.mapPoints((function(F,B){return[F=g*F+e*B+C,B=I*F+t*B+Q]}))},I.translate=function(g,I){return this.transform(1,0,0,1,g,I)},I.rotate=function(g){var I=Math.cos(g),e=Math.sin(g);return this.transform(I,e,-e,I,0,0)},I.scale=function(g,I){return void 0===I&&(I=g),this.transform(g,0,0,I,0,0)},n()(g,[{key:"cbox",get:function(){if(!this._cbox){for(var g,I=new qt,e=F()(this.commands);!(g=e()).done;)for(var t=g.value,C=0;C<t.args.length;C+=2)I.addPoint(t.args[C],t.args[C+1]);this._cbox=Object.freeze(I)}return this._cbox}},{key:"bbox",get:function(){if(this._bbox)return this._bbox;for(var g,I=new qt,e=0,t=0,C=function(g){return Math.pow(1-g,3)*b[R]+3*Math.pow(1-g,2)*g*Z[R]+3*(1-g)*Math.pow(g,2)*m[R]+Math.pow(g,3)*x[R]},Q=F()(this.commands);!(g=Q()).done;){var B=g.value;switch(B.command){case"moveTo":case"lineTo":var n=B.args,U=n[0],s=n[1];I.addPoint(U,s),e=U,t=s;break;case"quadraticCurveTo":case"bezierCurveTo":if("quadraticCurveTo"===B.command)var i=B.args,c=i[0],A=i[1],l=e+2/3*(c-e),a=t+2/3*(A-t),r=(u=i[2])+2/3*(c-u),o=(y=i[3])+2/3*(A-y);else var d=B.args,u=(l=d[0],a=d[1],r=d[2],o=d[3],d[4]),y=d[5];I.addPoint(u,y);for(var b=[e,t],Z=[l,a],m=[r,o],x=[u,y],R=0;R<=1;R++){var S=6*b[R]-12*Z[R]+6*m[R],G=-3*b[R]+9*Z[R]-9*m[R]+3*x[R];if(B=3*Z[R]-3*b[R],0!==G){var L=Math.pow(S,2)-4*B*G;if(!(L<0)){var V=(-S+Math.sqrt(L))/(2*G);0<V&&V<1&&(0===R?I.addPoint(C(V),I.maxY):1===R&&I.addPoint(I.maxX,C(V)));var h=(-S-Math.sqrt(L))/(2*G);0<h&&h<1&&(0===R?I.addPoint(C(h),I.maxY):1===R&&I.addPoint(I.maxX,C(h)))}}else{if(0===S)continue;var D=-B/S;0<D&&D<1&&(0===R?I.addPoint(C(D),I.maxY):1===R&&I.addPoint(I.maxX,C(D)))}}e=u,t=y}}return this._bbox=Object.freeze(I)}}]),g}(),UF=function(){var g=iF[sF];nF.prototype[g]=function(){this._bbox=this._cbox=null;for(var I=arguments.length,e=new Array(I),t=0;t<I;t++)e[t]=arguments[t];return this.commands.push({command:g,args:e}),this}},sF=0,iF=["moveTo","lineTo","quadraticCurveTo","bezierCurveTo","closePath"];sF<iF.length;sF++)UF();var cF,AF,lF=[".notdef",".null","nonmarkingreturn","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","nonbreakingspace","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron","Lslash","lslash","Scaron","scaron","Zcaron","zcaron","brokenbar","Eth","eth","Yacute","yacute","Thorn","thorn","minus","multiply","onesuperior","twosuperior","threesuperior","onehalf","onequarter","threequarters","franc","Gbreve","gbreve","Idotaccent","Scedilla","scedilla","Cacute","cacute","Ccaron","ccaron","dcroat"],aF=(cF=function(){function g(g,I,e){this.id=g,this.codePoints=I,this._font=e,this.isMark=this.codePoints.length>0&&this.codePoints.every(r.a.isMark),this.isLigature=this.codePoints.length>1}var I=g.prototype;return I._getPath=function(){return new nF},I._getCBox=function(){return this.path.cbox},I._getBBox=function(){return this.path.bbox},I._getTableMetrics=function(g){if(this.id<g.metrics.length)return g.metrics.get(this.id);var I=g.metrics.get(g.metrics.length-1);return{advance:I?I.advance:0,bearing:g.bearings.get(this.id-g.metrics.length)||0}},I._getMetrics=function(g){if(this._metrics)return this._metrics;var I,e=this._getTableMetrics(this._font.hmtx),t=e.advance,C=e.bearing;if(this._font.vmtx)var Q=this._getTableMetrics(this._font.vmtx),F=Q.advance,B=Q.bearing;else if("undefined"!==typeof g&&null!==g||(g=this.cbox),(I=this._font["OS/2"])&&I.version>0)F=Math.abs(I.typoAscender-I.typoDescender),B=I.typoAscender-g.maxY;else{var n=this._font.hhea;F=Math.abs(n.ascent-n.descent),B=n.ascent-g.maxY}return this._font._variationProcessor&&this._font.HVAR&&(t+=this._font._variationProcessor.getAdvanceAdjustment(this.id,this._font.HVAR)),this._metrics={advanceWidth:t,advanceHeight:F,leftBearing:C,topBearing:B}},I.getScaledPath=function(g){var I=1/this._font.unitsPerEm*g;return this.path.scale(I)},I._getName=function(){var g=this._font.post;if(!g)return null;switch(g.version){case 1:return lF[this.id];case 2:var I=g.glyphNameIndex[this.id];return I<lF.length?lF[I]:g.names[I-lF.length];case 2.5:return lF[this.id+g.offsets[this.id]];case 4:return String.fromCharCode(g.map[this.id])}},I.render=function(g,I){g.save();var e=1/this._font.head.unitsPerEm*I;g.scale(e,e),this.path.toFunction()(g),g.fill(),g.restore()},n()(g,[{key:"cbox",get:function(){return this._getCBox()}},{key:"bbox",get:function(){return this._getBBox()}},{key:"path",get:function(){return this._getPath()}},{key:"advanceWidth",get:function(){return this._getMetrics().advanceWidth}},{key:"advanceHeight",get:function(){return this._getMetrics().advanceHeight}},{key:"ligatureCaretPositions",get:function(){}},{key:"name",get:function(){return this._getName()}}]),g}(),s()(cF.prototype,"cbox",[G],Object.getOwnPropertyDescriptor(cF.prototype,"cbox"),cF.prototype),s()(cF.prototype,"bbox",[G],Object.getOwnPropertyDescriptor(cF.prototype,"bbox"),cF.prototype),s()(cF.prototype,"path",[G],Object.getOwnPropertyDescriptor(cF.prototype,"path"),cF.prototype),s()(cF.prototype,"advanceWidth",[G],Object.getOwnPropertyDescriptor(cF.prototype,"advanceWidth"),cF.prototype),s()(cF.prototype,"advanceHeight",[G],Object.getOwnPropertyDescriptor(cF.prototype,"advanceHeight"),cF.prototype),s()(cF.prototype,"name",[G],Object.getOwnPropertyDescriptor(cF.prototype,"name"),cF.prototype),cF),rF=new C.a.Struct({numberOfContours:C.a.int16,xMin:C.a.int16,yMin:C.a.int16,xMax:C.a.int16,yMax:C.a.int16}),oF=function(){function g(g,I,e,t){void 0===e&&(e=0),void 0===t&&(t=0),this.onCurve=g,this.endContour=I,this.x=e,this.y=t}return g.prototype.copy=function(){return new g(this.onCurve,this.endContour,this.x,this.y)},g}(),dF=function(g,I,e){this.glyphID=g,this.dx=I,this.dy=e,this.pos=0,this.scaleX=this.scaleY=1,this.scale01=this.scale10=0},uF=function(g){function I(){return g.apply(this,arguments)||this}c()(I,g);var e=I.prototype;return e._getCBox=function(g){if(this._font._variationProcessor&&!g)return this.path.cbox;var I=this._font._getTableStream("glyf");I.pos+=this._font.loca.offsets[this.id];var e=rF.decode(I),t=new qt(e.xMin,e.yMin,e.xMax,e.yMax);return Object.freeze(t)},e._parseGlyphCoord=function(g,I,e,t){if(e){var C=g.readUInt8();t||(C=-C),C+=I}else if(t)C=I;else C=I+g.readInt16BE();return C},e._decode=function(){var g=this._font.loca.offsets[this.id];if(g===this._font.loca.offsets[this.id+1])return null;var I=this._font._getTableStream("glyf");I.pos+=g;var e=I.pos,t=rF.decode(I);return t.numberOfContours>0?this._decodeSimple(t,I):t.numberOfContours<0&&this._decodeComposite(t,I,e),t},e._decodeSimple=function(g,I){g.points=[];var e=new C.a.Array(C.a.uint16,g.numberOfContours).decode(I);g.instructions=new C.a.Array(C.a.uint8,C.a.uint16).decode(I);for(var t=[],Q=e[e.length-1]+1;t.length<Q;){var F=I.readUInt8();if(t.push(F),8&F)for(var B=I.readUInt8(),n=0;n<B;n++)t.push(F)}for(var U=0;U<t.length;U++){F=t[U];var s=new oF(!!(1&F),e.indexOf(U)>=0,0,0);g.points.push(s)}var i=0;for(U=0;U<t.length;U++){F=t[U];g.points[U].x=i=this._parseGlyphCoord(I,i,2&F,16&F)}var c=0;for(U=0;U<t.length;U++){F=t[U];g.points[U].y=c=this._parseGlyphCoord(I,c,4&F,32&F)}if(this._font._variationProcessor){var A=g.points.slice();A.push.apply(A,this._getPhantomPoints(g)),this._font._variationProcessor.transformPoints(this.id,A),g.phantomPoints=A.slice(-4)}},e._decodeComposite=function(g,I,e){void 0===e&&(e=0),g.components=[];for(var t=!1,C=32;32&C;){C=I.readUInt16BE();var Q=I.pos-e,F=I.readUInt16BE();if(t||(t=0!==(256&C)),1&C)var B=I.readInt16BE(),n=I.readInt16BE();else B=I.readInt8(),n=I.readInt8();(i=new dF(F,B,n)).pos=Q,8&C?i.scaleX=i.scaleY=(I.readUInt8()<<24|I.readUInt8()<<16)/1073741824:64&C?(i.scaleX=(I.readUInt8()<<24|I.readUInt8()<<16)/1073741824,i.scaleY=(I.readUInt8()<<24|I.readUInt8()<<16)/1073741824):128&C&&(i.scaleX=(I.readUInt8()<<24|I.readUInt8()<<16)/1073741824,i.scale01=(I.readUInt8()<<24|I.readUInt8()<<16)/1073741824,i.scale10=(I.readUInt8()<<24|I.readUInt8()<<16)/1073741824,i.scaleY=(I.readUInt8()<<24|I.readUInt8()<<16)/1073741824),g.components.push(i)}if(this._font._variationProcessor){for(var U=[],s=0;s<g.components.length;s++){var i=g.components[s];U.push(new oF(!0,!0,i.dx,i.dy))}U.push.apply(U,this._getPhantomPoints(g)),this._font._variationProcessor.transformPoints(this.id,U),g.phantomPoints=U.splice(-4,4);for(var c=0;c<U.length;c++){var A=U[c];g.components[c].dx=A.x,g.components[c].dy=A.y}}return t},e._getPhantomPoints=function(g){var I=this._getCBox(!0);null==this._metrics&&(this._metrics=aF.prototype._getMetrics.call(this,I));var e=this._metrics,t=e.advanceWidth,C=e.advanceHeight,Q=e.leftBearing,F=e.topBearing;return[new oF(!1,!0,g.xMin-Q,0),new oF(!1,!0,g.xMin-Q+t,0),new oF(!1,!0,0,g.yMax+F),new oF(!1,!0,0,g.yMax+F+C)]},e._getContours=function(){var g=this._decode();if(!g)return[];var I=[];if(g.numberOfContours<0)for(var e,t=F()(g.components);!(e=t()).done;)for(var C=e.value,Q=this._font.getGlyph(C.glyphID)._getContours(),B=0;B<Q.length;B++)for(var n=Q[B],U=0;U<n.length;U++){var s=n[U],i=s.x*C.scaleX+s.y*C.scale01+C.dx,c=s.y*C.scaleY+s.x*C.scale10+C.dy;I.push(new oF(s.onCurve,s.endContour,i,c))}else I=g.points||[];g.phantomPoints&&!this._font.directory.tables.HVAR&&(this._metrics.advanceWidth=g.phantomPoints[1].x-g.phantomPoints[0].x,this._metrics.advanceHeight=g.phantomPoints[3].y-g.phantomPoints[2].y,this._metrics.leftBearing=g.xMin-g.phantomPoints[0].x,this._metrics.topBearing=g.phantomPoints[2].y-g.yMax);for(var A=[],l=[],a=0;a<I.length;a++){var r=I[a];l.push(r),r.endContour&&(A.push(l),l=[])}return A},e._getMetrics=function(){if(this._metrics)return this._metrics;var I=this._getCBox(!0);return g.prototype._getMetrics.call(this,I),this._font._variationProcessor&&!this._font.HVAR&&this.path,this._metrics},e._getPath=function(){for(var g=this._getContours(),I=new nF,e=0;e<g.length;e++){var t=g[e],C=t[0],Q=t[t.length-1],F=0;if(C.onCurve){var B=null;F=1}else B=C=Q.onCurve?Q:new oF(!1,!1,(C.x+Q.x)/2,(C.y+Q.y)/2);I.moveTo(C.x,C.y);for(var n=F;n<t.length;n++){var U=t[n],s=0===n?C:t[n-1];if(s.onCurve&&U.onCurve)I.lineTo(U.x,U.y);else if(s.onCurve&&!U.onCurve)B=U;else if(s.onCurve||U.onCurve){if(s.onCurve||!U.onCurve)throw new Error("Unknown TTF path state");I.quadraticCurveTo(B.x,B.y,U.x,U.y);B=null}else{var i=(s.x+U.x)/2,c=(s.y+U.y)/2;I.quadraticCurveTo(s.x,s.y,i,c);var B=U}}B&&I.quadraticCurveTo(B.x,B.y,C.x,C.y),I.closePath()}return I},I}(aF),yF=function(g){function I(){return g.apply(this,arguments)||this}c()(I,g);var e=I.prototype;return e._getName=function(){return this._font.CFF2?g.prototype._getName.call(this):this._font["CFF "].getGlyphName(this.id)},e.bias=function(g){return g.length<1240?107:g.length<33900?1131:32768},e._getPath=function(){var g=this._font.CFF2||this._font["CFF "],I=g.stream,e=g.topDict.CharStrings[this.id],t=e.offset+e.length;I.pos=e.offset;var C,Q,F=new nF,B=[],n=[],U=null,s=0,i=0,c=0,A=!1;this._usedGsubrs=C={},this._usedSubrs=Q={};var l=g.globalSubrIndex||[],a=this.bias(l),r=g.privateDictForGlyph(this.id)||{},o=r.Subrs||[],d=this.bias(o),u=g.topDict.vstore&&g.topDict.vstore.itemVariationStore,y=r.vsindex,b=this._font._variationProcessor;function Z(){null==U&&(U=B.shift()+r.nominalWidthX)}function m(){return B.length%2!==0&&Z(),s+=B.length>>1,B.length=0}function x(g,I){A&&F.closePath(),F.moveTo(g,I),A=!0}return function e(){for(;I.pos<t;){var U=I.readUInt8();if(U<32)switch(U){case 1:case 3:case 18:case 23:m();break;case 4:B.length>1&&Z(),c+=B.shift(),x(i,c);break;case 5:for(;B.length>=2;)i+=B.shift(),c+=B.shift(),F.lineTo(i,c);break;case 6:case 7:for(var r=6===U;B.length>=1;)r?i+=B.shift():c+=B.shift(),F.lineTo(i,c),r=!r;break;case 8:for(;B.length>0;){var R=i+B.shift(),S=c+B.shift(),G=R+B.shift(),L=S+B.shift();i=G+B.shift(),c=L+B.shift(),F.bezierCurveTo(R,S,G,L,i,c)}break;case 10:var V=B.pop()+d,h=o[V];if(h){Q[V]=!0;var D=I.pos,p=t;I.pos=h.offset,t=h.offset+h.length,e(),I.pos=D,t=p}break;case 11:if(g.version>=2)break;return;case 14:if(g.version>=2)break;B.length>0&&Z(),A&&(F.closePath(),A=!1);break;case 15:if(g.version<2)throw new Error("vsindex operator not supported in CFF v1");y=B.pop();break;case 16:if(g.version<2)throw new Error("blend operator not supported in CFF v1");if(!b)throw new Error("blend operator in non-variation font");for(var E=b.getBlendVector(u,y),N=B.pop(),W=N*E.length,f=B.length-W,X=f-N,J=0;J<N;J++){for(var v=B[X+J],k=0;k<E.length;k++)v+=E[k]*B[f++];B[X+J]=v}for(;W--;)B.pop();break;case 19:case 20:m(),I.pos+=s+7>>3;break;case 21:B.length>2&&Z(),i+=B.shift(),c+=B.shift(),x(i,c);break;case 22:B.length>1&&Z(),x(i+=B.shift(),c);break;case 24:for(;B.length>=8;){R=i+B.shift(),S=c+B.shift(),G=R+B.shift(),L=S+B.shift();i=G+B.shift(),c=L+B.shift(),F.bezierCurveTo(R,S,G,L,i,c)}i+=B.shift(),c+=B.shift(),F.lineTo(i,c);break;case 25:for(;B.length>=8;)i+=B.shift(),c+=B.shift(),F.lineTo(i,c);R=i+B.shift(),S=c+B.shift(),G=R+B.shift(),L=S+B.shift();i=G+B.shift(),c=L+B.shift(),F.bezierCurveTo(R,S,G,L,i,c);break;case 26:for(B.length%2&&(i+=B.shift());B.length>=4;)R=i,S=c+B.shift(),G=R+B.shift(),L=S+B.shift(),i=G,c=L+B.shift(),F.bezierCurveTo(R,S,G,L,i,c);break;case 27:for(B.length%2&&(c+=B.shift());B.length>=4;)R=i+B.shift(),S=c,G=R+B.shift(),L=S+B.shift(),i=G+B.shift(),c=L,F.bezierCurveTo(R,S,G,L,i,c);break;case 28:B.push(I.readInt16BE());break;case 29:if(V=B.pop()+a,h=l[V]){C[V]=!0;D=I.pos,p=t;I.pos=h.offset,t=h.offset+h.length,e(),I.pos=D,t=p}break;case 30:case 31:for(var H=31===U;B.length>=4;)H?(R=i+B.shift(),S=c,G=R+B.shift(),L=S+B.shift(),c=L+B.shift(),i=G+(1===B.length?B.shift():0)):(R=i,S=c+B.shift(),G=R+B.shift(),L=S+B.shift(),i=G+B.shift(),c=L+(1===B.length?B.shift():0)),F.bezierCurveTo(R,S,G,L,i,c),H=!H;break;case 12:switch(U=I.readUInt8()){case 3:var M=B.pop(),Y=B.pop();B.push(M&&Y?1:0);break;case 4:M=B.pop(),Y=B.pop(),B.push(M||Y?1:0);break;case 5:M=B.pop(),B.push(M?0:1);break;case 9:M=B.pop(),B.push(Math.abs(M));break;case 10:M=B.pop(),Y=B.pop(),B.push(M+Y);break;case 11:M=B.pop(),Y=B.pop(),B.push(M-Y);break;case 12:M=B.pop(),Y=B.pop(),B.push(M/Y);break;case 14:M=B.pop(),B.push(-M);break;case 15:M=B.pop(),Y=B.pop(),B.push(M===Y?1:0);break;case 18:B.pop();break;case 20:var w=B.pop(),T=B.pop();n[T]=w;break;case 21:T=B.pop(),B.push(n[T]||0);break;case 22:var z=B.pop(),O=B.pop(),K=B.pop(),j=B.pop();B.push(K<=j?z:O);break;case 23:B.push(Math.random());break;case 24:M=B.pop(),Y=B.pop(),B.push(M*Y);break;case 26:M=B.pop(),B.push(Math.sqrt(M));break;case 27:M=B.pop(),B.push(M,M);break;case 28:M=B.pop(),Y=B.pop(),B.push(Y,M);break;case 29:(T=B.pop())<0?T=0:T>B.length-1&&(T=B.length-1),B.push(B[T]);break;case 30:var P=B.pop(),_=B.pop();if(_>=0)for(;_>0;){for(var q=B[P-1],$=P-2;$>=0;$--)B[$+1]=B[$];B[0]=q,_--}else for(;_<0;){q=B[0];for(var gg=0;gg<=P;gg++)B[gg]=B[gg+1];B[P-1]=q,_++}break;case 34:R=i+B.shift(),S=c,G=R+B.shift(),L=S+B.shift();var Ig=G+B.shift(),eg=L,tg=Ig+B.shift(),Cg=eg,Qg=tg+B.shift(),Fg=Cg,Bg=Qg+B.shift(),ng=Fg;i=Bg,c=ng,F.bezierCurveTo(R,S,G,L,Ig,eg),F.bezierCurveTo(tg,Cg,Qg,Fg,Bg,ng);break;case 35:for(var Ug=[],sg=0;sg<=5;sg++)i+=B.shift(),c+=B.shift(),Ug.push(i,c);F.bezierCurveTo.apply(F,Ug.slice(0,6)),F.bezierCurveTo.apply(F,Ug.slice(6)),B.shift();break;case 36:R=i+B.shift(),S=c+B.shift(),G=R+B.shift(),Cg=eg=L=S+B.shift(),Qg=(tg=(Ig=G+B.shift())+B.shift())+B.shift(),Fg=Cg+B.shift(),Bg=Qg+B.shift(),i=Bg,c=ng=Fg,F.bezierCurveTo(R,S,G,L,Ig,eg),F.bezierCurveTo(tg,Cg,Qg,Fg,Bg,ng);break;case 37:var ig=i,cg=c;Ug=[];for(var Ag=0;Ag<=4;Ag++)i+=B.shift(),c+=B.shift(),Ug.push(i,c);Math.abs(i-ig)>Math.abs(c-cg)?(i+=B.shift(),c=cg):(i=ig,c+=B.shift()),Ug.push(i,c),F.bezierCurveTo.apply(F,Ug.slice(0,6)),F.bezierCurveTo.apply(F,Ug.slice(6));break;default:throw new Error("Unknown op: 12 "+U)}break;default:throw new Error("Unknown op: "+U)}else if(U<247)B.push(U-139);else if(U<251){var lg=I.readUInt8();B.push(256*(U-247)+lg+108)}else if(U<255){lg=I.readUInt8();B.push(256*-(U-251)-lg-108)}else B.push(I.readInt32BE()/65536)}}(),A&&F.closePath(),F},I}(aF),bF=new C.a.Struct({originX:C.a.uint16,originY:C.a.uint16,type:new C.a.String(4),data:new C.a.Buffer((function(g){return g.parent.buflen-g._currentOffset}))}),ZF=function(g){function I(){return g.apply(this,arguments)||this}c()(I,g);var e=I.prototype;return e.getImageForSize=function(g){for(var I=0;I<this._font.sbix.imageTables.length;I++){var e=this._font.sbix.imageTables[I];if(e.ppem>=g)break}var t=e.imageOffsets,C=t[this.id],Q=t[this.id+1];return C===Q?null:(this._font.stream.pos=C,bF.decode(this._font.stream,{buflen:Q-C}))},e.render=function(I,e){var t=this.getImageForSize(e);if(null!=t){var C=e/this._font.unitsPerEm;I.image(t.data,{height:e,x:t.originX,y:(this.bbox.minY-t.originY)*C})}this._font.sbix.flags.renderOutlines&&g.prototype.render.call(this,I,e)},I}(uF),mF=function(g,I){this.glyph=g,this.color=I},xF=function(g){function I(){return g.apply(this,arguments)||this}c()(I,g);var e=I.prototype;return e._getBBox=function(){for(var g=new qt,I=0;I<this.layers.length;I++){var e=this.layers[I].glyph.bbox;g.addPoint(e.minX,e.minY),g.addPoint(e.maxX,e.maxY)}return g},e.render=function(g,I){for(var e,t=F()(this.layers);!(e=t()).done;){var C=e.value,Q=C.glyph,B=C.color;g.fillColor([B.red,B.green,B.blue],B.alpha/255*100),Q.render(g,I)}},n()(I,[{key:"layers",get:function(){for(var g=this._font.CPAL,I=this._font.COLR,e=0,t=I.baseGlyphRecord.length-1;e<=t;){var C=e+t>>1,Q=I.baseGlyphRecord[C];if(this.id<Q.gid)t=C-1;else{if(!(this.id>Q.gid)){var F=Q;break}e=C+1}}if(null==F){var B=this._font._getBaseGlyph(this.id);return[new mF(B,s={red:0,green:0,blue:0,alpha:255})]}for(var n=[],U=F.firstLayerIndex;U<F.firstLayerIndex+F.numLayers;U++){Q=I.layerRecords[U];var s=g.colorRecords[Q.paletteIndex];B=this._font._getBaseGlyph(Q.gid);n.push(new mF(B,s))}return n}}]),I}(aF),RF=function(){function g(g,I){this.font=g,this.normalizedCoords=this.normalizeCoords(I),this.blendVectors=new Map}var I=g.prototype;return I.normalizeCoords=function(g){for(var I=[],e=0;e<this.font.fvar.axis.length;e++){var t=this.font.fvar.axis[e];g[e]<t.defaultValue?I.push((g[e]-t.defaultValue+Number.EPSILON)/(t.defaultValue-t.minValue+Number.EPSILON)):I.push((g[e]-t.defaultValue+Number.EPSILON)/(t.maxValue-t.defaultValue+Number.EPSILON))}if(this.font.avar)for(e=0;e<this.font.avar.segment.length;e++)for(var C=this.font.avar.segment[e],Q=0;Q<C.correspondence.length;Q++){var F=C.correspondence[Q];if(Q>=1&&I[e]<F.fromCoord){var B=C.correspondence[Q-1];I[e]=((I[e]-B.fromCoord)*(F.toCoord-B.toCoord)+Number.EPSILON)/(F.fromCoord-B.fromCoord+Number.EPSILON)+B.toCoord;break}}return I},I.transformPoints=function(g,I){if(this.font.fvar&&this.font.gvar){var e=this.font.gvar;if(!(g>=e.glyphCount)){var t=e.offsets[g];if(t!==e.offsets[g+1]){var C=this.font.stream;if(C.pos=t,!(C.pos>=C.length)){var Q=C.readUInt16BE(),F=t+C.readUInt16BE();if(32768&Q){var B=C.pos;C.pos=F;var n=this.decodePoints();F=C.pos,C.pos=B}var U=I.map((function(g){return g.copy()}));Q&=4095;for(var s=0;s<Q;s++){var i=C.readUInt16BE(),c=C.readUInt16BE();if(32768&c)for(var A=[],l=0;l<e.axisCount;l++)A.push(C.readInt16BE()/16384);else{if((4095&c)>=e.globalCoordCount)throw new Error("Invalid gvar table");A=e.globalCoords[4095&c]}if(16384&c){for(var a=[],r=0;r<e.axisCount;r++)a.push(C.readInt16BE()/16384);for(var o=[],d=0;d<e.axisCount;d++)o.push(C.readInt16BE()/16384)}var u=this.tupleFactor(c,A,a,o);if(0!==u){B=C.pos;if(C.pos=F,8192&c)var y=this.decodePoints();else y=n;var b=0===y.length?I.length:y.length,Z=this.decodeDeltas(b),m=this.decodeDeltas(b);if(0===y.length)for(var x=0;x<I.length;x++){var R=I[x];R.x+=Math.round(Z[x]*u),R.y+=Math.round(m[x]*u)}else{for(var S=U.map((function(g){return g.copy()})),G=I.map((function(){return!1})),L=0;L<y.length;L++){var V=y[L];if(V<I.length){var h=S[V];G[V]=!0,h.x+=Math.round(Z[L]*u),h.y+=Math.round(m[L]*u)}}this.interpolateMissingDeltas(S,U,G);for(var D=0;D<I.length;D++){var p=S[D].x-U[D].x,E=S[D].y-U[D].y;I[D].x+=p,I[D].y+=E}}F+=i,C.pos=B}else F+=i}}}}}},I.decodePoints=function(){var g=this.font.stream,I=g.readUInt8();128&I&&(I=(127&I)<<8|g.readUInt8());for(var e=new Uint16Array(I),t=0,C=0;t<I;)for(var Q=g.readUInt8(),F=1+(127&Q),B=128&Q?g.readUInt16:g.readUInt8,n=0;n<F&&t<I;n++)C+=B.call(g),e[t++]=C;return e},I.decodeDeltas=function(g){for(var I=this.font.stream,e=0,t=new Int16Array(g);e<g;){var C=I.readUInt8(),Q=1+(63&C);if(128&C)e+=Q;else for(var F=64&C?I.readInt16BE:I.readInt8,B=0;B<Q&&e<g;B++)t[e++]=F.call(I)}return t},I.tupleFactor=function(g,I,e,t){for(var C=this.normalizedCoords,Q=this.font.gvar,F=1,B=0;B<Q.axisCount;B++)if(0!==I[B]){if(0===C[B])return 0;if(0===(16384&g)){if(C[B]<Math.min(0,I[B])||C[B]>Math.max(0,I[B]))return 0;F=(F*C[B]+Number.EPSILON)/(I[B]+Number.EPSILON)}else{if(C[B]<e[B]||C[B]>t[B])return 0;F=C[B]<I[B]?F*(C[B]-e[B]+Number.EPSILON)/(I[B]-e[B]+Number.EPSILON):F*(t[B]-C[B]+Number.EPSILON)/(t[B]-I[B]+Number.EPSILON)}}return F},I.interpolateMissingDeltas=function(g,I,e){if(0!==g.length)for(var t=0;t<g.length;){for(var C=t,Q=t,F=g[Q];!F.endContour;)F=g[++Q];for(;t<=Q&&!e[t];)t++;if(!(t>Q)){var B=t,n=t;for(t++;t<=Q;)e[t]&&(this.deltaInterpolate(n+1,t-1,n,t,I,g),n=t),t++;n===B?this.deltaShift(C,Q,n,I,g):(this.deltaInterpolate(n+1,Q,n,B,I,g),B>0&&this.deltaInterpolate(C,B-1,n,B,I,g)),t=Q+1}}},I.deltaInterpolate=function(g,I,e,t,C,Q){if(!(g>I))for(var F=["x","y"],B=0;B<F.length;B++){var n=F[B];if(C[e][n]>C[t][n]){var U=e;e=t,t=U}var s=C[e][n],i=C[t][n],c=Q[e][n],A=Q[t][n];if(s!==i||c===A)for(var l=s===i?0:(A-c)/(i-s),a=g;a<=I;a++){var r=C[a][n];r<=s?r+=c-s:r>=i?r+=A-i:r=c+(r-s)*l,Q[a][n]=r}}},I.deltaShift=function(g,I,e,t,C){var Q=C[e].x-t[e].x,F=C[e].y-t[e].y;if(0!==Q||0!==F)for(var B=g;B<=I;B++)B!==e&&(C[B].x+=Q,C[B].y+=F)},I.getAdvanceAdjustment=function(g,I){var e,t;if(I.advanceWidthMapping){var C=g;C>=I.advanceWidthMapping.mapCount&&(C=I.advanceWidthMapping.mapCount-1),I.advanceWidthMapping.entryFormat;var Q=I.advanceWidthMapping.mapData[C];e=Q.outerIndex,t=Q.innerIndex}else e=0,t=g;return this.getDelta(I.itemVariationStore,e,t)},I.getDelta=function(g,I,e){if(I>=g.itemVariationData.length)return 0;var t=g.itemVariationData[I];if(e>=t.deltaSets.length)return 0;for(var C=t.deltaSets[e],Q=this.getBlendVector(g,I),F=0,B=0;B<t.regionIndexCount;B++)F+=C.deltas[B]*Q[B];return F},I.getBlendVector=function(g,I){var e=g.itemVariationData[I];if(this.blendVectors.has(e))return this.blendVectors.get(e);for(var t=this.normalizedCoords,C=[],Q=0;Q<e.regionIndexCount;Q++){for(var F=1,B=e.regionIndexes[Q],n=g.variationRegionList.variationRegions[B],U=0;U<n.length;U++){var s=n[U];F*=s.startCoord>s.peakCoord||s.peakCoord>s.endCoord||s.startCoord<0&&s.endCoord>0&&0!==s.peakCoord||0===s.peakCoord?1:t[U]<s.startCoord||t[U]>s.endCoord?0:t[U]===s.peakCoord?1:t[U]<s.peakCoord?(t[U]-s.startCoord+Number.EPSILON)/(s.peakCoord-s.startCoord+Number.EPSILON):(s.endCoord-t[U]+Number.EPSILON)/(s.endCoord-s.peakCoord+Number.EPSILON)}C[Q]=F}return this.blendVectors.set(e,C),C},g}(),SF=Promise.resolve(),GF=function(){function g(g){this.font=g,this.glyphs=[],this.mapping={},this.includeGlyph(0)}var I=g.prototype;return I.includeGlyph=function(g){return"object"===typeof g&&(g=g.id),null==this.mapping[g]&&(this.glyphs.push(g),this.mapping[g]=this.glyphs.length-1),this.mapping[g]},I.encodeStream=function(){var g=this,I=new C.a.EncodeStream;return SF.then((function(){return g.encode(I),I.end()})),I},g}(),LF=function(){function g(){}return g.size=function(g){return g>=0&&g<=255?1:2},g.encode=function(g,I){I>=0&&I<=255?g.writeUInt8(I):g.writeInt16BE(I)},g}(),VF=new C.a.Struct({numberOfContours:C.a.int16,xMin:C.a.int16,yMin:C.a.int16,xMax:C.a.int16,yMax:C.a.int16,endPtsOfContours:new C.a.Array(C.a.uint16,"numberOfContours"),instructions:new C.a.Array(C.a.uint8,C.a.uint16),flags:new C.a.Array(C.a.uint8,0),xPoints:new C.a.Array(LF,0),yPoints:new C.a.Array(LF,0)}),hF=function(){function g(){}var I=g.prototype;return I.encodeSimple=function(g,I){void 0===I&&(I=[]);for(var e=[],t=[],Q=[],F=[],B=0,n=0,U=0,s=0,i=0,c=0;c<g.commands.length;c++){for(var A=g.commands[c],l=0;l<A.args.length;l+=2){var a=A.args[l],r=A.args[l+1],o=0;if("quadraticCurveTo"===A.command&&2===l){var d=g.commands[c+1];if(d&&"quadraticCurveTo"===d.command){var u=(n+d.args[0])/2,y=(U+d.args[1])/2;if(a===u&&r===y)continue}}"quadraticCurveTo"===A.command&&0===l||(o|=1),o=this._encodePoint(a,n,t,o,2,16),(o=this._encodePoint(r,U,Q,o,4,32))===s&&B<255?(F[F.length-1]|=8,B++):(B>0&&(F.push(B),B=0),F.push(o),s=o),n=a,U=r,i++}"closePath"===A.command&&e.push(i-1)}g.commands.length>1&&"closePath"!==g.commands[g.commands.length-1].command&&e.push(i-1);var b=g.bbox,Z={numberOfContours:e.length,xMin:b.minX,yMin:b.minY,xMax:b.maxX,yMax:b.maxY,endPtsOfContours:e,instructions:I,flags:F,xPoints:t,yPoints:Q},m=VF.size(Z),x=4-m%4,R=new C.a.EncodeStream(m+x);return VF.encode(R,Z),0!==x&&R.fill(0,x),R.buffer},I._encodePoint=function(g,I,e,t,C,Q){var F=g-I;return g===I?t|=Q:(-255<=F&&F<=255&&(t|=C,F<0?F=-F:t|=Q),e.push(F)),t},g}(),DF=function(I){function e(g){var e;return(e=I.call(this,g)||this).glyphEncoder=new hF,e}c()(e,I);var t=e.prototype;return t._addGlyph=function(I){var e=this.font.getGlyph(I),t=e._decode(),C=this.font.loca.offsets[I],Q=this.font.loca.offsets[I+1],B=this.font._getTableStream("glyf");B.pos+=C;var n=B.readBuffer(Q-C);if(t&&t.numberOfContours<0){n=g.from(n);for(var U,s=F()(t.components);!(U=s()).done;){var i=U.value;I=this.includeGlyph(i.glyphID),n.writeUInt16BE(I,i.pos)}}else t&&this.font._variationProcessor&&(n=this.glyphEncoder.encodeSimple(e.path,t.instructions));return this.glyf.push(n),this.loca.offsets.push(this.offset),this.hmtx.metrics.push({advance:e.advanceWidth,bearing:e._getMetrics().leftBearing}),this.offset+=n.length,this.glyf.length-1},t.encode=function(g){this.glyf=[],this.offset=0,this.loca={offsets:[],version:this.font.loca.version},this.hmtx={metrics:[],bearings:[]};for(var I=0;I<this.glyphs.length;)this._addGlyph(this.glyphs[I++]);var e=Z()(this.font.maxp);e.numGlyphs=this.glyf.length,this.loca.offsets.push(this.offset);var t=Z()(this.font.head);t.indexToLocFormat=this.loca.version;var C=Z()(this.font.hhea);C.numberOfMetrics=this.hmtx.metrics.length,Tt.encode(g,{tables:{head:t,hhea:C,loca:this.loca,maxp:e,"cvt ":this.font["cvt "],prep:this.font.prep,glyf:this.glyf,hmtx:this.hmtx,fpgm:this.font.fpgm}})},e}(GF),pF=function(I){function e(g){var e;if((e=I.call(this,g)||this).cff=e.font["CFF "],!e.cff)throw new Error("Not a CFF Font");return e}c()(e,I);var t=e.prototype;return t.subsetCharstrings=function(){this.charstrings=[];for(var g,I={},e=F()(this.glyphs);!(g=e()).done;){var t=g.value;this.charstrings.push(this.cff.getCharString(t));var C=this.font.getGlyph(t);for(var Q in C.path,C._usedGsubrs)I[Q]=!0}this.gsubrs=this.subsetSubrs(this.cff.globalSubrIndex,I)},t.subsetSubrs=function(I,e){for(var t=[],C=0;C<I.length;C++){var Q=I[C];e[C]?(this.cff.stream.pos=Q.offset,t.push(this.cff.stream.readBuffer(Q.length))):t.push(g.from([11]))}return t},t.subsetFontdict=function(g){g.FDArray=[],g.FDSelect={version:0,fds:[]};for(var I,e={},t=[],C=F()(this.glyphs);!(I=C()).done;){var Q=I.value,B=this.cff.fdForGlyph(Q);if(null!=B){e[B]||(g.FDArray.push(Object.assign({},this.cff.topDict.FDArray[B])),t.push({})),e[B]=!0,g.FDSelect.fds.push(g.FDArray.length-1);var n=this.font.getGlyph(Q);for(var U in n.path,n._usedSubrs)t[t.length-1][U]=!0}}for(var s=0;s<g.FDArray.length;s++){var i=g.FDArray[s];delete i.FontName,i.Private&&i.Private.Subrs&&(i.Private=Object.assign({},i.Private),i.Private.Subrs=this.subsetSubrs(i.Private.Subrs,t[s]))}},t.createCIDFontdict=function(g){for(var I,e={},t=F()(this.glyphs);!(I=t()).done;){var C=I.value,Q=this.font.getGlyph(C);for(var B in Q.path,Q._usedSubrs)e[B]=!0}var n=Object.assign({},this.cff.topDict.Private);return this.cff.topDict.Private&&this.cff.topDict.Private.Subrs&&(n.Subrs=this.subsetSubrs(this.cff.topDict.Private.Subrs,e)),g.FDArray=[{Private:n}],g.FDSelect={version:3,nRanges:1,ranges:[{first:0,fd:0}],sentinel:this.charstrings.length}},t.addString=function(g){return g?(this.strings||(this.strings=[]),this.strings.push(g),Ag.length+this.strings.length-1):null},t.encode=function(g){this.subsetCharstrings();var I={version:this.charstrings.length>255?2:1,ranges:[{first:1,nLeft:this.charstrings.length-2}]},e=Object.assign({},this.cff.topDict);e.Private=null,e.charset=I,e.Encoding=null,e.CharStrings=this.charstrings;for(var t=0,C=["version","Notice","Copyright","FullName","FamilyName","Weight","PostScript","BaseFontName","FontName"];t<C.length;t++){var Q=C[t];e[Q]=this.addString(this.cff.string(e[Q]))}e.ROS=[this.addString("Adobe"),this.addString("Identity"),0],e.CIDCount=this.charstrings.length,this.cff.isCIDFont?this.subsetFontdict(e):this.createCIDFontdict(e);var F={version:1,hdrSize:this.cff.hdrSize,offSize:4,header:this.cff.header,nameIndex:[this.cff.postscriptName],topDictIndex:[e],stringIndex:this.strings,globalSubrIndex:this.gsubrs};aI.encode(g,F)},e}(GF),EF=(AF=function(){function g(g,I){for(var e in void 0===I&&(I=null),this.defaultLanguage=null,this.stream=g,this.variationCoords=I,this._directoryPos=this.stream.pos,this._tables={},this._glyphs={},this._decodeDirectory(),this.directory.tables){var t=this.directory.tables[e];Mt[e]&&t.length>0&&Object.defineProperty(this,e,{get:this._getTable.bind(this,t)})}}g.probe=function(g){var I=g.toString("ascii",0,4);return"true"===I||"OTTO"===I||I===String.fromCharCode(0,1,0,0)};var I=g.prototype;return I.setDefaultLanguage=function(g){void 0===g&&(g=null),this.defaultLanguage=g},I._getTable=function(g){if(!(g.tag in this._tables))try{this._tables[g.tag]=this._decodeTable(g)}catch(I){R.logErrors&&(console.error("Error decoding table "+g.tag),console.error(I.stack))}return this._tables[g.tag]},I._getTableStream=function(g){var I=this.directory.tables[g];return I?(this.stream.pos=I.offset,this.stream):null},I._decodeDirectory=function(){return this.directory=Tt.decode(this.stream,{_startOffset:0})},I._decodeTable=function(g){var I=this.stream.pos,e=this._getTableStream(g.tag),t=Mt[g.tag].decode(e,this,g.length);return this.stream.pos=I,t},I.getName=function(g,I){void 0===I&&(I=this.defaultLanguage||R.defaultLanguage);var e=this.name&&this.name.records[g];return e&&(e[I]||e[this.defaultLanguage]||e[R.defaultLanguage]||e.en||e[Object.keys(e)[0]])||null},I.hasGlyphForCodePoint=function(g){return!!this._cmapProcessor.lookup(g)},I.glyphForCodePoint=function(g){return this.getGlyph(this._cmapProcessor.lookup(g),[g])},I.glyphsForString=function(g){for(var I=[],e=g.length,t=0,C=-1,Q=-1;t<=e;){var F=0,B=0;if(t<e){if(55296<=(F=g.charCodeAt(t++))&&F<=56319&&t<e){var n=g.charCodeAt(t);56320<=n&&n<=57343&&(t++,F=((1023&F)<<10)+(1023&n)+65536)}B=65024<=F&&F<=65039||917760<=F&&F<=917999?1:0}else t++;0===Q&&1===B?I.push(this.getGlyph(this._cmapProcessor.lookup(C,F),[C,F])):0===Q&&0===B&&I.push(this.glyphForCodePoint(C)),C=F,Q=B}return I},I.layout=function(g,I,e,t,C){return this._layoutEngine.layout(g,I,e,t,C)},I.stringsForGlyph=function(g){return this._layoutEngine.stringsForGlyph(g)},I.getAvailableFeatures=function(g,I){return this._layoutEngine.getAvailableFeatures(g,I)},I._getBaseGlyph=function(g,I){return void 0===I&&(I=[]),this._glyphs[g]||(this.directory.tables.glyf?this._glyphs[g]=new uF(g,I,this):(this.directory.tables["CFF "]||this.directory.tables.CFF2)&&(this._glyphs[g]=new yF(g,I,this))),this._glyphs[g]||null},I.getGlyph=function(g,I){return void 0===I&&(I=[]),this._glyphs[g]||(this.directory.tables.sbix?this._glyphs[g]=new ZF(g,I,this):this.directory.tables.COLR&&this.directory.tables.CPAL?this._glyphs[g]=new xF(g,I,this):this._getBaseGlyph(g,I)),this._glyphs[g]||null},I.createSubset=function(){return this.directory.tables["CFF "]?new pF(this):new DF(this)},I.getVariation=function(I){if(!this.directory.tables.fvar||!(this.directory.tables.gvar&&this.directory.tables.glyf||this.directory.tables.CFF2))throw new Error("Variations require a font with the fvar, gvar and glyf, or CFF2 tables.");if("string"===typeof I&&(I=this.namedVariations[I]),"object"!==typeof I)throw new Error("Variation settings must be either a variation name or settings object.");var e=this.fvar.axis.map((function(g,e){var t=g.axisTag.trim();return t in I?Math.max(g.minValue,Math.min(g.maxValue,I[t])):g.defaultValue})),t=new C.a.DecodeStream(this.stream.buffer);t.pos=this._directoryPos;var Q=new g(t,e);return Q._tables=this._tables,Q},I.getFont=function(g){return this.getVariation(g)},n()(g,[{key:"postscriptName",get:function(){return this.getName("postscriptName")}},{key:"fullName",get:function(){return this.getName("fullName")}},{key:"familyName",get:function(){return this.getName("fontFamily")}},{key:"subfamilyName",get:function(){return this.getName("fontSubfamily")}},{key:"copyright",get:function(){return this.getName("copyright")}},{key:"version",get:function(){return this.getName("version")}},{key:"ascent",get:function(){return this.hhea.ascent}},{key:"descent",get:function(){return this.hhea.descent}},{key:"lineGap",get:function(){return this.hhea.lineGap}},{key:"underlinePosition",get:function(){return this.post.underlinePosition}},{key:"underlineThickness",get:function(){return this.post.underlineThickness}},{key:"italicAngle",get:function(){return this.post.italicAngle}},{key:"capHeight",get:function(){var g=this["OS/2"];return g?g.capHeight:this.ascent}},{key:"xHeight",get:function(){var g=this["OS/2"];return g?g.xHeight:0}},{key:"numGlyphs",get:function(){return this.maxp.numGlyphs}},{key:"unitsPerEm",get:function(){return this.head.unitsPerEm}},{key:"bbox",get:function(){return Object.freeze(new qt(this.head.xMin,this.head.yMin,this.head.xMax,this.head.yMax))}},{key:"_cmapProcessor",get:function(){return new jt(this.cmap)}},{key:"characterSet",get:function(){return this._cmapProcessor.getCharacterSet()}},{key:"_layoutEngine",get:function(){return new FF(this)}},{key:"availableFeatures",get:function(){return this._layoutEngine.getAvailableFeatures()}},{key:"variationAxes",get:function(){var g={};if(!this.fvar)return g;for(var I,e=F()(this.fvar.axis);!(I=e()).done;){var t=I.value;g[t.axisTag.trim()]={name:t.name.en,min:t.minValue,default:t.defaultValue,max:t.maxValue}}return g}},{key:"namedVariations",get:function(){var g={};if(!this.fvar)return g;for(var I,e=F()(this.fvar.instance);!(I=e()).done;){for(var t=I.value,C={},Q=0;Q<this.fvar.axis.length;Q++){C[this.fvar.axis[Q].axisTag.trim()]=t.coord[Q]}g[t.name.en]=C}return g}},{key:"_variationProcessor",get:function(){if(!this.fvar)return null;var g=this.variationCoords;return g||this.CFF2?(g||(g=this.fvar.axis.map((function(g){return g.defaultValue}))),new RF(this,g)):null}}]),g}(),s()(AF.prototype,"bbox",[G],Object.getOwnPropertyDescriptor(AF.prototype,"bbox"),AF.prototype),s()(AF.prototype,"_cmapProcessor",[G],Object.getOwnPropertyDescriptor(AF.prototype,"_cmapProcessor"),AF.prototype),s()(AF.prototype,"characterSet",[G],Object.getOwnPropertyDescriptor(AF.prototype,"characterSet"),AF.prototype),s()(AF.prototype,"_layoutEngine",[G],Object.getOwnPropertyDescriptor(AF.prototype,"_layoutEngine"),AF.prototype),s()(AF.prototype,"variationAxes",[G],Object.getOwnPropertyDescriptor(AF.prototype,"variationAxes"),AF.prototype),s()(AF.prototype,"namedVariations",[G],Object.getOwnPropertyDescriptor(AF.prototype,"namedVariations"),AF.prototype),s()(AF.prototype,"_variationProcessor",[G],Object.getOwnPropertyDescriptor(AF.prototype,"_variationProcessor"),AF.prototype),AF),NF=new C.a.Struct({tag:new C.a.String(4),offset:new C.a.Pointer(C.a.uint32,"void",{type:"global"}),compLength:C.a.uint32,length:C.a.uint32,origChecksum:C.a.uint32}),WF=new C.a.Struct({tag:new C.a.String(4),flavor:C.a.uint32,length:C.a.uint32,numTables:C.a.uint16,reserved:new C.a.Reserved(C.a.uint16),totalSfntSize:C.a.uint32,majorVersion:C.a.uint16,minorVersion:C.a.uint16,metaOffset:C.a.uint32,metaLength:C.a.uint32,metaOrigLength:C.a.uint32,privOffset:C.a.uint32,privLength:C.a.uint32,tables:new C.a.Array(NF,"numTables")});WF.process=function(){for(var g,I={},e=F()(this.tables);!(g=e()).done;){var t=g.value;I[t.tag]=t}this.tables=I};var fF=function(I){function e(){return I.apply(this,arguments)||this}c()(e,I),e.probe=function(g){return"wOFF"===g.toString("ascii",0,4)};var t=e.prototype;return t._decodeDirectory=function(){this.directory=WF.decode(this.stream,{_startOffset:0})},t._getTableStream=function(I){var e=this.directory.tables[I];if(e){if(this.stream.pos=e.offset,e.compLength<e.length){this.stream.pos+=2;var t=g.alloc(e.length),Q=x()(this.stream.readBuffer(e.compLength-2),t);return new C.a.DecodeStream(Q)}return this.stream}return null},e}(EF),XF=new C.a.VersionedStruct(C.a.uint32,{65536:{numFonts:C.a.uint32,offsets:new C.a.Array(C.a.uint32,"numFonts")},131072:{numFonts:C.a.uint32,offsets:new C.a.Array(C.a.uint32,"numFonts"),dsigTag:C.a.uint32,dsigLength:C.a.uint32,dsigOffset:C.a.uint32}}),JF=function(){function g(g){if(this.stream=g,"ttcf"!==g.readString(4))throw new Error("Not a TrueType collection");this.header=XF.decode(g)}return g.probe=function(g){return"ttcf"===g.toString("ascii",0,4)},g.prototype.getFont=function(g){for(var I,e=F()(this.header.offsets);!(I=e()).done;){var t=I.value,Q=new C.a.DecodeStream(this.stream.buffer);Q.pos=t;var B=new EF(Q);if(B.postscriptName===g)return B}return null},n()(g,[{key:"fonts",get:function(){for(var g,I=[],e=F()(this.header.offsets);!(g=e()).done;){var t=g.value,Q=new C.a.DecodeStream(this.stream.buffer);Q.pos=t,I.push(new EF(Q))}return I}}]),g}(),vF=new C.a.String(C.a.uint8);new C.a.Struct({len:C.a.uint32,buf:new C.a.Buffer("len")});var kF=new C.a.Struct({id:C.a.uint16,nameOffset:C.a.int16,attr:C.a.uint8,dataOffset:C.a.uint24,handle:C.a.uint32}),HF=new C.a.Struct({name:new C.a.String(4),maxTypeIndex:C.a.uint16,refList:new C.a.Pointer(C.a.uint16,new C.a.Array(kF,(function(g){return g.maxTypeIndex+1})),{type:"parent"})}),MF=new C.a.Struct({length:C.a.uint16,types:new C.a.Array(HF,(function(g){return g.length+1}))}),YF=new C.a.Struct({reserved:new C.a.Reserved(C.a.uint8,24),typeList:new C.a.Pointer(C.a.uint16,MF),nameListOffset:new C.a.Pointer(C.a.uint16,"void")}),wF=new C.a.Struct({dataOffset:C.a.uint32,map:new C.a.Pointer(C.a.uint32,YF),dataLength:C.a.uint32,mapLength:C.a.uint32}),TF=function(){function g(g){this.stream=g,this.header=wF.decode(this.stream);for(var I,e=F()(this.header.map.typeList.types);!(I=e()).done;){for(var t,C=I.value,Q=F()(C.refList);!(t=Q()).done;){var B=t.value;B.nameOffset>=0?(this.stream.pos=B.nameOffset+this.header.map.nameListOffset,B.name=vF.decode(this.stream)):B.name=null}"sfnt"===C.name&&(this.sfnt=C)}}return g.probe=function(g){var I=new C.a.DecodeStream(g);try{var e=wF.decode(I)}catch(B){return!1}for(var t,Q=F()(e.map.typeList.types);!(t=Q()).done;){if("sfnt"===t.value.name)return!0}return!1},g.prototype.getFont=function(g){if(!this.sfnt)return null;for(var I,e=F()(this.sfnt.refList);!(I=e()).done;){var t=I.value,Q=this.header.dataOffset+t.dataOffset+4,B=new C.a.DecodeStream(this.stream.buffer.slice(Q)),n=new EF(B);if(n.postscriptName===g)return n}return null},n()(g,[{key:"fonts",get:function(){for(var g,I=[],e=F()(this.sfnt.refList);!(g=e()).done;){var t=g.value,Q=this.header.dataOffset+t.dataOffset+4,B=new C.a.DecodeStream(this.stream.buffer.slice(Q));I.push(new EF(B))}return I}}]),g}();R.registerFormat(EF),R.registerFormat(fF),R.registerFormat(JF),R.registerFormat(TF)}.call(this,e(103).Buffer)},function(g,I,e){var t,C;C=e(426),t=function(){function g(g){var I,e,t;(I="function"===typeof g.readUInt32BE&&"function"===typeof g.slice)||g instanceof Uint8Array?(I?(this.highStart=g.readUInt32BE(0),this.errorValue=g.readUInt32BE(4),e=g.readUInt32BE(8),g=g.slice(12)):(t=new DataView(g.buffer),this.highStart=t.getUint32(0),this.errorValue=t.getUint32(4),e=t.getUint32(8),g=g.subarray(12)),g=C(g,new Uint8Array(e)),g=C(g,new Uint8Array(e)),this.data=new Uint32Array(g.buffer)):(this.data=g.data,this.highStart=g.highStart,this.errorValue=g.errorValue)}return 11,5,6,32,64,63,2,32,31,2048,32,2080,2080,32,2112,4,g.prototype.get=function(g){var I;return g<0||g>1114111?this.errorValue:g<55296||g>56319&&g<=65535?(I=(this.data[g>>5]<<2)+(31&g),this.data[I]):g<=65535?(I=(this.data[2048+(g-55296>>5)]<<2)+(31&g),this.data[I]):g<this.highStart?(I=this.data[2080+(g>>11)],I=((I=this.data[I+(g>>5&63)])<<2)+(31&g),this.data[I]):this.data[this.data.length-4]},g}(),g.exports=t},function(g,I,e){"use strict";(function(g){var t=e(103).Buffer,C=e(294).Transform,Q=e(1490),F=e(413),B=e(761).ok,n=e(103).kMaxLength,U="Cannot create final Buffer. It would be larger than 0x"+n.toString(16)+" bytes";Q.Z_MIN_WINDOWBITS=8,Q.Z_MAX_WINDOWBITS=15,Q.Z_DEFAULT_WINDOWBITS=15,Q.Z_MIN_CHUNK=64,Q.Z_MAX_CHUNK=1/0,Q.Z_DEFAULT_CHUNK=16384,Q.Z_MIN_MEMLEVEL=1,Q.Z_MAX_MEMLEVEL=9,Q.Z_DEFAULT_MEMLEVEL=8,Q.Z_MIN_LEVEL=-1,Q.Z_MAX_LEVEL=9,Q.Z_DEFAULT_LEVEL=Q.Z_DEFAULT_COMPRESSION;for(var s=Object.keys(Q),i=0;i<s.length;i++){var c=s[i];c.match(/^Z/)&&Object.defineProperty(I,c,{enumerable:!0,value:Q[c],writable:!1})}for(var A={Z_OK:Q.Z_OK,Z_STREAM_END:Q.Z_STREAM_END,Z_NEED_DICT:Q.Z_NEED_DICT,Z_ERRNO:Q.Z_ERRNO,Z_STREAM_ERROR:Q.Z_STREAM_ERROR,Z_DATA_ERROR:Q.Z_DATA_ERROR,Z_MEM_ERROR:Q.Z_MEM_ERROR,Z_BUF_ERROR:Q.Z_BUF_ERROR,Z_VERSION_ERROR:Q.Z_VERSION_ERROR},l=Object.keys(A),a=0;a<l.length;a++){var r=l[a];A[A[r]]=r}function o(g,I,e){var C=[],Q=0;function F(){for(var I;null!==(I=g.read());)C.push(I),Q+=I.length;g.once("readable",F)}function B(){var I,F=null;Q>=n?F=new RangeError(U):I=t.concat(C,Q),C=[],g.close(),e(F,I)}g.on("error",(function(I){g.removeListener("end",B),g.removeListener("readable",F),e(I)})),g.on("end",B),g.end(I),F()}function d(g,I){if("string"===typeof I&&(I=t.from(I)),!t.isBuffer(I))throw new TypeError("Not a string or buffer");var e=g._finishFlushFlag;return g._processChunk(I,e)}function u(g){if(!(this instanceof u))return new u(g);G.call(this,g,Q.DEFLATE)}function y(g){if(!(this instanceof y))return new y(g);G.call(this,g,Q.INFLATE)}function b(g){if(!(this instanceof b))return new b(g);G.call(this,g,Q.GZIP)}function Z(g){if(!(this instanceof Z))return new Z(g);G.call(this,g,Q.GUNZIP)}function m(g){if(!(this instanceof m))return new m(g);G.call(this,g,Q.DEFLATERAW)}function x(g){if(!(this instanceof x))return new x(g);G.call(this,g,Q.INFLATERAW)}function R(g){if(!(this instanceof R))return new R(g);G.call(this,g,Q.UNZIP)}function S(g){return g===Q.Z_NO_FLUSH||g===Q.Z_PARTIAL_FLUSH||g===Q.Z_SYNC_FLUSH||g===Q.Z_FULL_FLUSH||g===Q.Z_FINISH||g===Q.Z_BLOCK}function G(g,e){var F=this;if(this._opts=g=g||{},this._chunkSize=g.chunkSize||I.Z_DEFAULT_CHUNK,C.call(this,g),g.flush&&!S(g.flush))throw new Error("Invalid flush flag: "+g.flush);if(g.finishFlush&&!S(g.finishFlush))throw new Error("Invalid flush flag: "+g.finishFlush);if(this._flushFlag=g.flush||Q.Z_NO_FLUSH,this._finishFlushFlag="undefined"!==typeof g.finishFlush?g.finishFlush:Q.Z_FINISH,g.chunkSize&&(g.chunkSize<I.Z_MIN_CHUNK||g.chunkSize>I.Z_MAX_CHUNK))throw new Error("Invalid chunk size: "+g.chunkSize);if(g.windowBits&&(g.windowBits<I.Z_MIN_WINDOWBITS||g.windowBits>I.Z_MAX_WINDOWBITS))throw new Error("Invalid windowBits: "+g.windowBits);if(g.level&&(g.level<I.Z_MIN_LEVEL||g.level>I.Z_MAX_LEVEL))throw new Error("Invalid compression level: "+g.level);if(g.memLevel&&(g.memLevel<I.Z_MIN_MEMLEVEL||g.memLevel>I.Z_MAX_MEMLEVEL))throw new Error("Invalid memLevel: "+g.memLevel);if(g.strategy&&g.strategy!=I.Z_FILTERED&&g.strategy!=I.Z_HUFFMAN_ONLY&&g.strategy!=I.Z_RLE&&g.strategy!=I.Z_FIXED&&g.strategy!=I.Z_DEFAULT_STRATEGY)throw new Error("Invalid strategy: "+g.strategy);if(g.dictionary&&!t.isBuffer(g.dictionary))throw new Error("Invalid dictionary: it should be a Buffer instance");this._handle=new Q.Zlib(e);var B=this;this._hadError=!1,this._handle.onerror=function(g,e){L(B),B._hadError=!0;var t=new Error(g);t.errno=e,t.code=I.codes[e],B.emit("error",t)};var n=I.Z_DEFAULT_COMPRESSION;"number"===typeof g.level&&(n=g.level);var U=I.Z_DEFAULT_STRATEGY;"number"===typeof g.strategy&&(U=g.strategy),this._handle.init(g.windowBits||I.Z_DEFAULT_WINDOWBITS,n,g.memLevel||I.Z_DEFAULT_MEMLEVEL,U,g.dictionary),this._buffer=t.allocUnsafe(this._chunkSize),this._offset=0,this._level=n,this._strategy=U,this.once("end",this.close),Object.defineProperty(this,"_closed",{get:function(){return!F._handle},configurable:!0,enumerable:!0})}function L(I,e){e&&g.nextTick(e),I._handle&&(I._handle.close(),I._handle=null)}function V(g){g.emit("close")}Object.defineProperty(I,"codes",{enumerable:!0,value:Object.freeze(A),writable:!1}),I.Deflate=u,I.Inflate=y,I.Gzip=b,I.Gunzip=Z,I.DeflateRaw=m,I.InflateRaw=x,I.Unzip=R,I.createDeflate=function(g){return new u(g)},I.createInflate=function(g){return new y(g)},I.createDeflateRaw=function(g){return new m(g)},I.createInflateRaw=function(g){return new x(g)},I.createGzip=function(g){return new b(g)},I.createGunzip=function(g){return new Z(g)},I.createUnzip=function(g){return new R(g)},I.deflate=function(g,I,e){return"function"===typeof I&&(e=I,I={}),o(new u(I),g,e)},I.deflateSync=function(g,I){return d(new u(I),g)},I.gzip=function(g,I,e){return"function"===typeof I&&(e=I,I={}),o(new b(I),g,e)},I.gzipSync=function(g,I){return d(new b(I),g)},I.deflateRaw=function(g,I,e){return"function"===typeof I&&(e=I,I={}),o(new m(I),g,e)},I.deflateRawSync=function(g,I){return d(new m(I),g)},I.unzip=function(g,I,e){return"function"===typeof I&&(e=I,I={}),o(new R(I),g,e)},I.unzipSync=function(g,I){return d(new R(I),g)},I.inflate=function(g,I,e){return"function"===typeof I&&(e=I,I={}),o(new y(I),g,e)},I.inflateSync=function(g,I){return d(new y(I),g)},I.gunzip=function(g,I,e){return"function"===typeof I&&(e=I,I={}),o(new Z(I),g,e)},I.gunzipSync=function(g,I){return d(new Z(I),g)},I.inflateRaw=function(g,I,e){return"function"===typeof I&&(e=I,I={}),o(new x(I),g,e)},I.inflateRawSync=function(g,I){return d(new x(I),g)},F.inherits(G,C),G.prototype.params=function(e,t,C){if(e<I.Z_MIN_LEVEL||e>I.Z_MAX_LEVEL)throw new RangeError("Invalid compression level: "+e);if(t!=I.Z_FILTERED&&t!=I.Z_HUFFMAN_ONLY&&t!=I.Z_RLE&&t!=I.Z_FIXED&&t!=I.Z_DEFAULT_STRATEGY)throw new TypeError("Invalid strategy: "+t);if(this._level!==e||this._strategy!==t){var F=this;this.flush(Q.Z_SYNC_FLUSH,(function(){B(F._handle,"zlib binding closed"),F._handle.params(e,t),F._hadError||(F._level=e,F._strategy=t,C&&C())}))}else g.nextTick(C)},G.prototype.reset=function(){return B(this._handle,"zlib binding closed"),this._handle.reset()},G.prototype._flush=function(g){this._transform(t.alloc(0),"",g)},G.prototype.flush=function(I,e){var C=this,F=this._writableState;("function"===typeof I||void 0===I&&!e)&&(e=I,I=Q.Z_FULL_FLUSH),F.ended?e&&g.nextTick(e):F.ending?e&&this.once("end",e):F.needDrain?e&&this.once("drain",(function(){return C.flush(I,e)})):(this._flushFlag=I,this.write(t.alloc(0),"",e))},G.prototype.close=function(I){L(this,I),g.nextTick(V,this)},G.prototype._transform=function(g,I,e){var C,F=this._writableState,B=(F.ending||F.ended)&&(!g||F.length===g.length);return null===g||t.isBuffer(g)?this._handle?(B?C=this._finishFlushFlag:(C=this._flushFlag,g.length>=F.length&&(this._flushFlag=this._opts.flush||Q.Z_NO_FLUSH)),void this._processChunk(g,C,e)):e(new Error("zlib binding closed")):e(new Error("invalid input"))},G.prototype._processChunk=function(g,I,e){var C=g&&g.length,Q=this._chunkSize-this._offset,F=0,s=this,i="function"===typeof e;if(!i){var c,A=[],l=0;this.on("error",(function(g){c=g})),B(this._handle,"zlib binding closed");do{var a=this._handle.writeSync(I,g,F,C,this._buffer,this._offset,Q)}while(!this._hadError&&d(a[0],a[1]));if(this._hadError)throw c;if(l>=n)throw L(this),new RangeError(U);var r=t.concat(A,l);return L(this),r}B(this._handle,"zlib binding closed");var o=this._handle.write(I,g,F,C,this._buffer,this._offset,Q);function d(n,U){if(this&&(this.buffer=null,this.callback=null),!s._hadError){var c=Q-U;if(B(c>=0,"have should not go down"),c>0){var a=s._buffer.slice(s._offset,s._offset+c);s._offset+=c,i?s.push(a):(A.push(a),l+=a.length)}if((0===U||s._offset>=s._chunkSize)&&(Q=s._chunkSize,s._offset=0,s._buffer=t.allocUnsafe(s._chunkSize)),0===U){if(F+=C-n,C=n,!i)return!0;var r=s._handle.write(I,g,F,C,s._buffer,s._offset,s._chunkSize);return r.callback=d,void(r.buffer=g)}if(!i)return!1;e()}}o.buffer=g,o.callback=d},F.inherits(u,G),F.inherits(y,G),F.inherits(b,G),F.inherits(Z,G),F.inherits(m,G),F.inherits(x,G),F.inherits(R,G)}).call(this,e(92))},function(g,I,e){"use strict";var t=e(16),C=e(5),Q=e(0),F=(e(4),e(14)),B=e(21),n=Q.forwardRef((function(g,I){var e=g.classes,B=g.className,n=g.component,U=void 0===n?"div":n,s=g.square,i=void 0!==s&&s,c=g.elevation,A=void 0===c?1:c,l=g.variant,a=void 0===l?"elevation":l,r=Object(t.a)(g,["classes","className","component","square","elevation","variant"]);return Q.createElement(U,Object(C.a)({className:Object(F.default)(e.root,B,"outlined"===a?e.outlined:e["elevation".concat(A)],!i&&e.rounded),ref:I},r))}));I.a=Object(B.a)((function(g){var I={};return g.shadows.forEach((function(g,e){I["elevation".concat(e)]={boxShadow:g}})),Object(C.a)({root:{backgroundColor:g.palette.background.paper,color:g.palette.text.primary,transition:g.transitions.create("box-shadow")},rounded:{borderRadius:g.shape.borderRadius},outlined:{border:"1px solid ".concat(g.palette.divider)}},I)}),{name:"MuiPaper"})(n)},function(g,I,e){"use strict";(function(g){e.d(I,"b",(function(){return n})),e.d(I,"c",(function(){return U})),e.d(I,"d",(function(){return s})),e.d(I,"a",(function(){return i}));var t=e(108),C=e(185),Q={nowSeconds:function(){return Date.now()/1e3}};var F=Object(C.b)()?function(){try{return Object(C.a)(g,"perf_hooks").performance}catch(I){return}}():function(){var g=Object(t.e)().performance;if(g&&g.now)return{now:function(){return g.now()},timeOrigin:Date.now()-g.now()}}(),B=void 0===F?Q:{nowSeconds:function(){return(F.timeOrigin+F.now())/1e3}},n=Q.nowSeconds.bind(Q),U=B.nowSeconds.bind(B),s=U,i=function(){var g=Object(t.e)().performance;if(g&&g.now){var I=g.now(),e=Date.now(),C=g.timeOrigin?Math.abs(g.timeOrigin+I-e):36e5,Q=C<36e5,F=g.timing&&g.timing.navigationStart,B="number"===typeof F?Math.abs(F+I-e):36e5;return Q||B<36e5?C<=B?("timeOrigin",g.timeOrigin):("navigationStart",F):("dateNow",e)}"none"}()}).call(this,e(397)(g))},,function(g,I,e){var t=e(41),C=e(176),Q="".split;g.exports=t((function(){return!Object("z").propertyIsEnumerable(0)}))?function(g){return"String"==C(g)?Q.call(g,""):Object(g)}:Object},function(g,I){var e=0,t=Math.random();g.exports=function(g){return"Symbol("+String(void 0===g?"":g)+")_"+(++e+t).toString(36)}},function(g,I){g.exports={}},function(g,I,e){var t=e(145),C=e(69),Q=e(229),F=function(g){return function(I,e,F){var B,n=t(I),U=C(n.length),s=Q(F,U);if(g&&e!=e){for(;U>s;)if((B=n[s++])!=B)return!0}else for(;U>s;s++)if((g||s in n)&&n[s]===e)return g||s||0;return!g&&-1}};g.exports={includes:F(!0),indexOf:F(!1)}},function(g,I,e){var t=e(41),C=/#|\.prototype\./,Q=function(g,I){var e=B[F(g)];return e==U||e!=n&&("function"==typeof I?t(I):!!I)},F=Q.normalize=function(g){return String(g).replace(C,".").toLowerCase()},B=Q.data={},n=Q.NATIVE="N",U=Q.POLYFILL="P";g.exports=Q},function(g,I,e){var t=e(619),C=e(486);g.exports=Object.keys||function(g){return t(g,C)}},function(g,I,e){var t=e(57),C=e(276),Q=e(64)("species");g.exports=function(g,I){var e;return C(g)&&("function"!=typeof(e=g.constructor)||e!==Array&&!C(e.prototype)?t(e)&&null===(e=e[Q])&&(e=void 0):e=void 0),new(void 0===e?Array:e)(0===I?0:I)}},function(g,I,e){var t=e(41),C=e(64),Q=e(489),F=C("species");g.exports=function(g){return Q>=51||!t((function(){var I=[];return(I.constructor={})[F]=function(){return{foo:1}},1!==I[g](Boolean).foo}))}},function(g,I){g.exports={}},function(g,I,e){var t=e(334),C=e(332),Q=e(64)("iterator");g.exports=function(g){if(void 0!=g)return g[Q]||g["@@iterator"]||C[t(g)]}},function(g,I,e){var t=e(493),C=e(176),Q=e(64)("toStringTag"),F="Arguments"==C(function(){return arguments}());g.exports=t?C:function(g){var I,e,t;return void 0===g?"Undefined":null===g?"Null":"string"==typeof(e=function(g,I){try{return g[I]}catch(e){}}(I=Object(g),Q))?e:F?C(I):"Object"==(t=C(I))&&"function"==typeof I.callee?"Arguments":t}},function(g,I,e){var t=e(41);g.exports=!t((function(){return Object.isExtensible(Object.preventExtensions({}))}))},function(g,I,e){var t=e(60),C=e(492),Q=e(69),F=e(231),B=e(333),n=e(629),U=function(g,I){this.stopped=g,this.result=I};(g.exports=function(g,I,e,s,i){var c,A,l,a,r,o,d,u=F(I,e,s?2:1);if(i)c=g;else{if("function"!=typeof(A=B(g)))throw TypeError("Target is not iterable");if(C(A)){for(l=0,a=Q(g.length);a>l;l++)if((r=s?u(t(d=g[l])[0],d[1]):u(g[l]))&&r instanceof U)return r;return new U(!1)}c=A.call(g)}for(o=c.next;!(d=o.call(c)).done;)if("object"==typeof(r=n(c,u,d.value,s))&&r&&r instanceof U)return r;return new U(!1)}).stop=function(g){return new U(!0,g)}},function(g,I,e){"use strict";g.exports=function(g,I,e,t,C,Q,F,B){if(!g){var n;if(void 0===I)n=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var U=[e,t,C,Q,F,B],s=0;(n=new Error(I.replace(/%s/g,(function(){return U[s++]})))).name="Invariant Violation"}throw n.framesToPop=1,n}}},function(g,I,e){"use strict";var t=e(350);e.d(I,"a",(function(){return t.a})),e.d(I,"b",(function(){return t.c}))},function(g,I,e){var t=e(1286);g.exports=function(g,I){if(null==g)return{};var e,C,Q=t(g,I);if(Object.getOwnPropertySymbols){var F=Object.getOwnPropertySymbols(g);for(C=0;C<F.length;C++)e=F[C],I.indexOf(e)>=0||Object.prototype.propertyIsEnumerable.call(g,e)&&(Q[e]=g[e])}return Q}},function(g,I,e){(function(g){function e(g){return Object.prototype.toString.call(g)}I.isArray=function(g){return Array.isArray?Array.isArray(g):"[object Array]"===e(g)},I.isBoolean=function(g){return"boolean"===typeof g},I.isNull=function(g){return null===g},I.isNullOrUndefined=function(g){return null==g},I.isNumber=function(g){return"number"===typeof g},I.isString=function(g){return"string"===typeof g},I.isSymbol=function(g){return"symbol"===typeof g},I.isUndefined=function(g){return void 0===g},I.isRegExp=function(g){return"[object RegExp]"===e(g)},I.isObject=function(g){return"object"===typeof g&&null!==g},I.isDate=function(g){return"[object Date]"===e(g)},I.isError=function(g){return"[object Error]"===e(g)||g instanceof Error},I.isFunction=function(g){return"function"===typeof g},I.isPrimitive=function(g){return null===g||"boolean"===typeof g||"number"===typeof g||"string"===typeof g||"symbol"===typeof g||"undefined"===typeof g},I.isBuffer=g.isBuffer}).call(this,e(103).Buffer)},function(g,I,e){"use strict";var t=e(737),C="function"===typeof Symbol&&"symbol"===typeof Symbol("foo"),Q=Object.prototype.toString,F=Array.prototype.concat,B=Object.defineProperty,n=B&&function(){var g={};try{for(var I in B(g,"x",{enumerable:!1,value:g}),g)return!1;return g.x===g}catch(e){return!1}}(),U=function(g,I,e,t){var C;(!(I in g)||"function"===typeof(C=t)&&"[object Function]"===Q.call(C)&&t())&&(n?B(g,I,{configurable:!0,enumerable:!1,value:e,writable:!0}):g[I]=e)},s=function(g,I){var e=arguments.length>2?arguments[2]:{},Q=t(I);C&&(Q=F.call(Q,Object.getOwnPropertySymbols(I)));for(var B=0;B<Q.length;B+=1)U(g,Q[B],I[Q[B]],e[Q[B]])};s.supportsDescriptors=!!n,g.exports=s},function(g,I,e){"use strict";var t=e(1433);g.exports=Function.prototype.bind||t},function(g,I,e){"use strict";var t=e(31).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=C.compose(C.reduce(C.useWith(C.add,[C.identity,C.propOr(0,"xAdvance")]),0),C.propOr([],"positions"));I.default=Q},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(345)),B=t(e(343)),n=(0,F.default)(Q.add,B.default);I.default=n},function(g,I,e){"use strict";var t=e(31).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=function(g,I,e){return void 0===e&&(e=0),C.compose(C.reduce(C.useWith(g,[C.identity,I]),e),C.prop("runs"))};I.default=Q},function(g,I,e){"use strict";var t=e(31).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=C.evolve({glyphs:C.map(C.identity),positions:C.clone,glyphIndices:C.clone,attributes:C.evolve({font:C.identity})});I.default=Q},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(545)),B=t(e(777)),n=t(e(1542)),U=t(e(1543)),s=function(g,I){return function(e){var t=Q.identity;return(0,U.default)([Q.o((0,n.default)(g),(function(e){return(0,F.default)(g-e.start,I-e.start,e)})),Q.o((0,n.default)(g),t),Q.o((0,n.default)(g),(function(g){return(0,F.default)(0,I-g.start,g)}))])(e)}},i=Q.curryN(3,(function(g,I,e){return Q.ifElse(Q.pathEq(["string","length"],0),Q.identity,Q.evolve({string:Q.slice(g,I),runs:Q.compose(s(g,I),(0,B.default)(g,I))}))(e)}));I.default=i},function(g,I){function e(){return g.exports=e=Object.assign?Object.assign.bind():function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g},g.exports.__esModule=!0,g.exports.default=g.exports,e.apply(this,arguments)}g.exports=e,g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I,e){"use strict";var t=e(37).default;I.__esModule=!0,I.default=void 0;var C=t(e(104)),Q=function(g,I){var e=g._yogaNode;return e?e.getComputedPadding(I):null},F=function(g){var I=g.style,e=g.box;return{paddingTop:Q(g,C.default.EDGE_TOP)||(null===e||void 0===e?void 0:e.paddingTop)||(null===I||void 0===I?void 0:I.paddingTop)||(null===I||void 0===I?void 0:I.paddingVertical)||(null===I||void 0===I?void 0:I.padding)||0,paddingRight:Q(g,C.default.EDGE_RIGHT)||(null===e||void 0===e?void 0:e.paddingRight)||(null===I||void 0===I?void 0:I.paddingRight)||(null===I||void 0===I?void 0:I.paddingHorizontal)||(null===I||void 0===I?void 0:I.padding)||0,paddingBottom:Q(g,C.default.EDGE_BOTTOM)||(null===e||void 0===e?void 0:e.paddingBottom)||(null===I||void 0===I?void 0:I.paddingBottom)||(null===I||void 0===I?void 0:I.paddingVertical)||(null===I||void 0===I?void 0:I.padding)||0,paddingLeft:Q(g,C.default.EDGE_LEFT)||(null===e||void 0===e?void 0:e.paddingLeft)||(null===I||void 0===I?void 0:I.paddingLeft)||(null===I||void 0===I?void 0:I.paddingHorizontal)||(null===I||void 0===I?void 0:I.padding)||0}};I.default=F},function(g,I,e){"use strict";e.d(I,"c",(function(){return A})),e.d(I,"a",(function(){return a})),e.d(I,"b",(function(){return r}));var t,C=e(5),Q=e(16),F=e(0),B=e.n(F),n=(e(4),e(924)),U=e(112),s=e(928),i=Object(U.c)(Object(s.a)()),c=Object(n.a)(),A=new Map,l={disableGeneration:!1,generateClassName:c,jss:i,sheetsCache:null,sheetsManager:A,sheetsRegistry:null},a=B.a.createContext(l);function r(g){var I=g.children,e=g.injectFirst,F=void 0!==e&&e,n=g.disableGeneration,i=void 0!==n&&n,c=Object(Q.a)(g,["children","injectFirst","disableGeneration"]),A=B.a.useContext(a),l=Object(C.a)(Object(C.a)({},A),{},{disableGeneration:i},c);if(!l.jss.options.insertionPoint&&F&&"undefined"!==typeof window){if(!t){var r=document.head;t=document.createComment("mui-inject-first"),r.insertBefore(t,r.firstChild)}l.jss=Object(U.c)({plugins:Object(s.a)().plugins,insertionPoint:t})}return B.a.createElement(a.Provider,{value:l},I)}},function(g,I,e){"use strict";e.d(I,"a",(function(){return F})),e.d(I,"g",(function(){return B})),e.d(I,"f",(function(){return n})),e.d(I,"b",(function(){return U})),e.d(I,"d",(function(){return s})),e.d(I,"c",(function(){return i})),e.d(I,"e",(function(){return c}));var t=e(34),C=e(105);function Q(g){return"number"!==typeof g?g:"".concat(g,"px solid")}var F=Object(t.a)({prop:"border",themeKey:"borders",transform:Q}),B=Object(t.a)({prop:"borderTop",themeKey:"borders",transform:Q}),n=Object(t.a)({prop:"borderRight",themeKey:"borders",transform:Q}),U=Object(t.a)({prop:"borderBottom",themeKey:"borders",transform:Q}),s=Object(t.a)({prop:"borderLeft",themeKey:"borders",transform:Q}),i=Object(t.a)({prop:"borderColor",themeKey:"palette"}),c=Object(t.a)({prop:"borderRadius",themeKey:"shape"}),A=Object(C.a)(F,B,n,U,s,i,c);I.h=A},function(g,I,e){"use strict";e.d(I,"f",(function(){return Q})),e.d(I,"g",(function(){return F})),e.d(I,"j",(function(){return B})),e.d(I,"k",(function(){return n})),e.d(I,"b",(function(){return U})),e.d(I,"a",(function(){return s})),e.d(I,"n",(function(){return i})),e.d(I,"e",(function(){return c})),e.d(I,"h",(function(){return A})),e.d(I,"i",(function(){return l})),e.d(I,"c",(function(){return a})),e.d(I,"l",(function(){return r})),e.d(I,"m",(function(){return o}));var t=e(34),C=e(105),Q=Object(t.a)({prop:"flexBasis"}),F=Object(t.a)({prop:"flexDirection"}),B=Object(t.a)({prop:"flexWrap"}),n=Object(t.a)({prop:"justifyContent"}),U=Object(t.a)({prop:"alignItems"}),s=Object(t.a)({prop:"alignContent"}),i=Object(t.a)({prop:"order"}),c=Object(t.a)({prop:"flex"}),A=Object(t.a)({prop:"flexGrow"}),l=Object(t.a)({prop:"flexShrink"}),a=Object(t.a)({prop:"alignSelf"}),r=Object(t.a)({prop:"justifyItems"}),o=Object(t.a)({prop:"justifySelf"}),d=Object(C.a)(Q,F,B,n,U,s,i,c,A,l,a,r,o);I.d=d},function(g,I,e){"use strict";e.d(I,"h",(function(){return Q})),e.d(I,"g",(function(){return F})),e.d(I,"j",(function(){return B})),e.d(I,"f",(function(){return n})),e.d(I,"i",(function(){return U})),e.d(I,"d",(function(){return s})),e.d(I,"c",(function(){return i})),e.d(I,"e",(function(){return c})),e.d(I,"l",(function(){return A})),e.d(I,"m",(function(){return l})),e.d(I,"k",(function(){return a})),e.d(I,"b",(function(){return r}));var t=e(34),C=e(105),Q=Object(t.a)({prop:"gridGap"}),F=Object(t.a)({prop:"gridColumnGap"}),B=Object(t.a)({prop:"gridRowGap"}),n=Object(t.a)({prop:"gridColumn"}),U=Object(t.a)({prop:"gridRow"}),s=Object(t.a)({prop:"gridAutoFlow"}),i=Object(t.a)({prop:"gridAutoColumns"}),c=Object(t.a)({prop:"gridAutoRows"}),A=Object(t.a)({prop:"gridTemplateColumns"}),l=Object(t.a)({prop:"gridTemplateRows"}),a=Object(t.a)({prop:"gridTemplateAreas"}),r=Object(t.a)({prop:"gridArea"}),o=Object(C.a)(Q,F,B,n,U,s,i,c,A,l,a,r);I.a=o},function(g,I,e){"use strict";e.d(I,"b",(function(){return Q})),e.d(I,"a",(function(){return F}));var t=e(34),C=e(105),Q=Object(t.a)({prop:"color",themeKey:"palette"}),F=Object(t.a)({prop:"bgcolor",cssProperty:"backgroundColor",themeKey:"palette"}),B=Object(C.a)(Q,F);I.c=B},function(g,I,e){"use strict";e.d(I,"d",(function(){return Q})),e.d(I,"g",(function(){return F})),e.d(I,"f",(function(){return B})),e.d(I,"e",(function(){return n})),e.d(I,"a",(function(){return U})),e.d(I,"c",(function(){return s}));var t=e(34),C=e(105),Q=Object(t.a)({prop:"position"}),F=Object(t.a)({prop:"zIndex",themeKey:"zIndex"}),B=Object(t.a)({prop:"top"}),n=Object(t.a)({prop:"right"}),U=Object(t.a)({prop:"bottom"}),s=Object(t.a)({prop:"left"});I.b=Object(C.a)(Q,F,B,n,U,s)},function(g,I,e){"use strict";e.d(I,"j",(function(){return F})),e.d(I,"e",(function(){return B})),e.d(I,"g",(function(){return n})),e.d(I,"c",(function(){return U})),e.d(I,"d",(function(){return s})),e.d(I,"f",(function(){return i})),e.d(I,"i",(function(){return c})),e.d(I,"h",(function(){return A})),e.d(I,"a",(function(){return l}));var t=e(34),C=e(105);function Q(g){return g<=1?"".concat(100*g,"%"):g}var F=Object(t.a)({prop:"width",transform:Q}),B=Object(t.a)({prop:"maxWidth",transform:Q}),n=Object(t.a)({prop:"minWidth",transform:Q}),U=Object(t.a)({prop:"height",transform:Q}),s=Object(t.a)({prop:"maxHeight",transform:Q}),i=Object(t.a)({prop:"minHeight",transform:Q}),c=Object(t.a)({prop:"size",cssProperty:"width",transform:Q}),A=Object(t.a)({prop:"size",cssProperty:"height",transform:Q}),l=Object(t.a)({prop:"boxSizing"}),a=Object(C.a)(F,B,n,U,s,i,l);I.b=a},function(g,I,e){"use strict";e.d(I,"b",(function(){return Q})),e.d(I,"c",(function(){return F})),e.d(I,"d",(function(){return B})),e.d(I,"e",(function(){return n})),e.d(I,"f",(function(){return U})),e.d(I,"g",(function(){return s})),e.d(I,"h",(function(){return i}));var t=e(34),C=e(105),Q=Object(t.a)({prop:"fontFamily",themeKey:"typography"}),F=Object(t.a)({prop:"fontSize",themeKey:"typography"}),B=Object(t.a)({prop:"fontStyle",themeKey:"typography"}),n=Object(t.a)({prop:"fontWeight",themeKey:"typography"}),U=Object(t.a)({prop:"letterSpacing"}),s=Object(t.a)({prop:"lineHeight"}),i=Object(t.a)({prop:"textAlign"}),c=Object(C.a)(Q,F,B,n,U,s,i);I.a=c},function(g,I,e){"use strict";e.d(I,"a",(function(){return i}));var t=e(99),C=e(292),Q=e(239);var F={m:"margin",p:"padding"},B={t:"Top",r:"Right",b:"Bottom",l:"Left",x:["Left","Right"],y:["Top","Bottom"]},n={marginX:"mx",marginY:"my",paddingX:"px",paddingY:"py"},U=function(g){var I={};return function(e){return void 0===I[e]&&(I[e]=g(e)),I[e]}}((function(g){if(g.length>2){if(!n[g])return[g];g=n[g]}var I=g.split(""),e=Object(t.a)(I,2),C=e[0],Q=e[1],U=F[C],s=B[Q]||"";return Array.isArray(s)?s.map((function(g){return U+g})):[U+s]})),s=["m","mt","mr","mb","ml","mx","my","p","pt","pr","pb","pl","px","py","margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY"];function i(g){var I=g.spacing||8;return"number"===typeof I?function(g){return I*g}:Array.isArray(I)?function(g){return I[g]}:"function"===typeof I?I:function(){}}function c(g,I){return function(e){return g.reduce((function(g,t){return g[t]=function(g,I){if("string"===typeof I)return I;var e=g(Math.abs(I));return I>=0?e:"number"===typeof e?-e:"-".concat(e)}(I,e),g}),{})}}function A(g){var I=i(g.theme);return Object.keys(g).map((function(e){if(-1===s.indexOf(e))return null;var t=c(U(e),I),Q=g[e];return Object(C.b)(g,Q,t)})).reduce(Q.a,{})}A.propTypes={},A.filterProps=s;I.b=A},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M13.5.67s.74 2.65.74 4.8c0 2.06-1.35 3.73-3.41 3.73-2.07 0-3.63-1.67-3.63-3.73l.03-.36C5.21 7.51 4 10.62 4 14c0 4.42 3.58 8 8 8s8-3.58 8-8C20 8.61 17.41 3.8 13.5.67zM11.71 19c-1.78 0-3.22-1.4-3.22-3.14 0-1.62 1.05-2.76 2.81-3.12 1.77-.36 3.6-1.21 4.62-2.58.39 1.29.59 2.65.59 4.04 0 2.65-2.15 4.8-4.8 4.8z"}),"Whatshot");I.default=Q},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0});var t,C=e(1201),Q=(t=C)&&t.__esModule?t:{default:t};I.default=Q.default},,function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z"}),"FilterList");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M15.61 7.41L14.2 6l-6 6 6 6 1.41-1.41L11.03 12l4.58-4.59z"}),"NavigateBeforeOutlined");I.default=Q},function(g,I,e){"use strict";function t(g,I){(null==I||I>g.length)&&(I=g.length);for(var e=0,t=new Array(I);e<I;e++)t[e]=g[e];return t}e.d(I,"a",(function(){return t}))},function(g,I,e){"use strict";function t(g,I){g.prototype=Object.create(I.prototype),g.prototype.constructor=g,g.__proto__=I}e.d(I,"a",(function(){return t}))},function(g,I,e){"use strict";function t(g){if(void 0===g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return g}e.d(I,"a",(function(){return t}))},function(g,I,e){"use strict";function t(g,I){(null==I||I>g.length)&&(I=g.length);for(var e=0,t=new Array(I);e<I;e++)t[e]=g[e];return t}e.d(I,"a",(function(){return t}))},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(4),e(14)),B=e(21),n=e(38),U=e(271),s=e(30),i=Q.forwardRef((function(g,I){var e=g.edge,B=void 0!==e&&e,n=g.children,i=g.classes,c=g.className,A=g.color,l=void 0===A?"default":A,a=g.disabled,r=void 0!==a&&a,o=g.disableFocusRipple,d=void 0!==o&&o,u=g.size,y=void 0===u?"medium":u,b=Object(C.a)(g,["edge","children","classes","className","color","disabled","disableFocusRipple","size"]);return Q.createElement(U.a,Object(t.a)({className:Object(F.default)(i.root,c,"default"!==l&&i["color".concat(Object(s.a)(l))],r&&i.disabled,"small"===y&&i["size".concat(Object(s.a)(y))],{start:i.edgeStart,end:i.edgeEnd}[B]),centerRipple:!0,focusRipple:!d,disabled:r,ref:I},b),Q.createElement("span",{className:i.label},n))}));I.a=Object(B.a)((function(g){return{root:{textAlign:"center",flex:"0 0 auto",fontSize:g.typography.pxToRem(24),padding:12,borderRadius:"50%",overflow:"visible",color:g.palette.action.active,transition:g.transitions.create("background-color",{duration:g.transitions.duration.shortest}),"&:hover":{backgroundColor:Object(n.d)(g.palette.action.active,g.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"&$disabled":{backgroundColor:"transparent",color:g.palette.action.disabled}},edgeStart:{marginLeft:-12,"$sizeSmall&":{marginLeft:-3}},edgeEnd:{marginRight:-12,"$sizeSmall&":{marginRight:-3}},colorInherit:{color:"inherit"},colorPrimary:{color:g.palette.primary.main,"&:hover":{backgroundColor:Object(n.d)(g.palette.primary.main,g.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},colorSecondary:{color:g.palette.secondary.main,"&:hover":{backgroundColor:Object(n.d)(g.palette.secondary.main,g.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},disabled:{},sizeSmall:{padding:3,fontSize:g.typography.pxToRem(18)},label:{width:"100%",display:"flex",alignItems:"inherit",justifyContent:"inherit"}}}),{name:"MuiIconButton"})(i)},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M18.92 6.01C18.72 5.42 18.16 5 17.5 5h-11c-.66 0-1.21.42-1.42 1.01L3 12v8c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-1h12v1c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-8l-2.08-5.99zM6.5 16c-.83 0-1.5-.67-1.5-1.5S5.67 13 6.5 13s1.5.67 1.5 1.5S7.33 16 6.5 16zm11 0c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zM5 11l1.5-4.5h11L19 11H5z"}),"DirectionsCar");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"}),"Check");I.default=Q},function(g,I,e){"use strict";e.d(I,"a",(function(){return Q}));var t,C=e(75);!function(g){g.PENDING="PENDING",g.RESOLVED="RESOLVED",g.REJECTED="REJECTED"}(t||(t={}));var Q=function(){function g(g){var I=this;this._state=t.PENDING,this._handlers=[],this._resolve=function(g){I._setResult(t.RESOLVED,g)},this._reject=function(g){I._setResult(t.REJECTED,g)},this._setResult=function(g,e){I._state===t.PENDING&&(Object(C.m)(e)?e.then(I._resolve,I._reject):(I._state=g,I._value=e,I._executeHandlers()))},this._attachHandler=function(g){I._handlers=I._handlers.concat(g),I._executeHandlers()},this._executeHandlers=function(){if(I._state!==t.PENDING){var g=I._handlers.slice();I._handlers=[],g.forEach((function(g){g.done||(I._state===t.RESOLVED&&g.onfulfilled&&g.onfulfilled(I._value),I._state===t.REJECTED&&g.onrejected&&g.onrejected(I._value),g.done=!0)}))}};try{g(this._resolve,this._reject)}catch(e){this._reject(e)}}return g.resolve=function(I){return new g((function(g){g(I)}))},g.reject=function(I){return new g((function(g,e){e(I)}))},g.all=function(I){return new g((function(e,t){if(Array.isArray(I))if(0!==I.length){var C=I.length,Q=[];I.forEach((function(I,F){g.resolve(I).then((function(g){Q[F]=g,0===(C-=1)&&e(Q)})).then(null,t)}))}else e([]);else t(new TypeError("Promise.all requires an array as input."))}))},g.prototype.then=function(I,e){var t=this;return new g((function(g,C){t._attachHandler({done:!1,onfulfilled:function(e){if(I)try{return void g(I(e))}catch(t){return void C(t)}else g(e)},onrejected:function(I){if(e)try{return void g(e(I))}catch(t){return void C(t)}else C(I)}})}))},g.prototype.catch=function(g){return this.then((function(g){return g}),g)},g.prototype.finally=function(I){var e=this;return new g((function(g,t){var C,Q;return e.then((function(g){Q=!1,C=g,I&&I()}),(function(g){Q=!0,C=g,I&&I()})).then((function(){Q?t(C):g(C)}))}))},g.prototype.toString=function(){return"[object SyncPromise]"},g}()},function(g,I){function e(){return g.exports=e=Object.assign?Object.assign.bind():function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g},g.exports.__esModule=!0,g.exports.default=g.exports,e.apply(this,arguments)}g.exports=e,g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I){function e(g,I,e,t,C,Q,F){try{var B=g[Q](F),n=B.value}catch(U){return void e(U)}B.done?I(n):Promise.resolve(n).then(t,C)}g.exports=function(g){return function(){var I=this,t=arguments;return new Promise((function(C,Q){var F=g.apply(I,t);function B(g){e(F,C,Q,B,n,"next",g)}function n(g){e(F,C,Q,B,n,"throw",g)}B(void 0)}))}},g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I,e){var t=e(1597)();g.exports=t;try{regeneratorRuntime=t}catch(C){"object"===typeof globalThis?globalThis.regeneratorRuntime=t:Function("r","regeneratorRuntime = r")(t)}},,,,,,,,function(g,I,e){"use strict";var t={}.propertyIsEnumerable,C=Object.getOwnPropertyDescriptor,Q=C&&!t.call({1:2},1);I.f=Q?function(g){var I=C(this,g);return!!I&&I.enumerable}:t},function(g,I,e){var t=e(484),C=e(325),Q=t("keys");g.exports=function(g){return Q[g]||(Q[g]=C(g))}},function(g,I,e){var t=e(64)("iterator"),C=!1;try{var Q=0,F={next:function(){return{done:!!Q++}},return:function(){C=!0}};F[t]=function(){return this},Array.from(F,(function(){throw 2}))}catch(B){}g.exports=function(g,I){if(!I&&!C)return!1;var e=!1;try{var Q={};Q[t]=function(){return{next:function(){return{done:e=!0}}}},g(Q)}catch(B){}return e}},function(g,I,e){"use strict";var t=e(145),C=e(232),Q=e(332),F=e(146),B=e(494),n=F.set,U=F.getterFor("Array Iterator");g.exports=B(Array,"Array",(function(g,I){n(this,{type:"Array Iterator",target:t(g),index:0,kind:I})}),(function(){var g=U(this),I=g.target,e=g.kind,t=g.index++;return!I||t>=I.length?(g.target=void 0,{value:void 0,done:!0}):"keys"==e?{value:t,done:!1}:"values"==e?{value:I[t],done:!1}:{value:[t,I[t]],done:!1}}),"values"),Q.Arguments=Q.Array,C("keys"),C("values"),C("entries")},function(g,I,e){var t=e(163),C=e(91),Q=e(324),F=e(69),B=function(g){return function(I,e,B,n){t(e);var U=C(I),s=Q(U),i=F(U.length),c=g?i-1:0,A=g?-1:1;if(B<2)for(;;){if(c in s){n=s[c],c+=A;break}if(c+=A,g?c<0:i<=c)throw TypeError("Reduce of empty array with no initial value")}for(;g?c>=0:i>c;c+=A)c in s&&(n=e(n,s[c],c,U));return n}};g.exports={left:B(!1),right:B(!0)}},function(g,I,e){"use strict";var t=e(22),C=e(50),Q=e(328),F=e(126),B=e(252),n=e(336),U=e(233),s=e(57),i=e(41),c=e(384),A=e(190),l=e(388);g.exports=function(g,I,e){var a=-1!==g.indexOf("Map"),r=-1!==g.indexOf("Weak"),o=a?"set":"add",d=C[g],u=d&&d.prototype,y=d,b={},Z=function(g){var I=u[g];F(u,g,"add"==g?function(g){return I.call(this,0===g?0:g),this}:"delete"==g?function(g){return!(r&&!s(g))&&I.call(this,0===g?0:g)}:"get"==g?function(g){return r&&!s(g)?void 0:I.call(this,0===g?0:g)}:"has"==g?function(g){return!(r&&!s(g))&&I.call(this,0===g?0:g)}:function(g,e){return I.call(this,0===g?0:g,e),this})};if(Q(g,"function"!=typeof d||!(r||u.forEach&&!i((function(){(new d).entries().next()})))))y=e.getConstructor(I,g,a,o),B.REQUIRED=!0;else if(Q(g,!0)){var m=new y,x=m[o](r?{}:-0,1)!=m,R=i((function(){m.has(1)})),S=c((function(g){new d(g)})),G=!r&&i((function(){for(var g=new d,I=5;I--;)g[o](I,I);return!g.has(-0)}));S||((y=I((function(I,e){U(I,y,g);var t=l(new d,I,y);return void 0!=e&&n(e,t[o],t,a),t}))).prototype=u,u.constructor=y),(R||G)&&(Z("delete"),Z("has"),a&&Z("get")),(G||x)&&Z(o),r&&u.clear&&delete u.clear}return b[g]=y,t({global:!0,forced:y!=d},b),A(y,g),r||e.setStrong(y,g,a),y}},function(g,I,e){var t=e(57),C=e(277);g.exports=function(g,I,e){var Q,F;return C&&"function"==typeof(Q=I.constructor)&&Q!==e&&t(F=Q.prototype)&&F!==e.prototype&&C(g,F),g}},function(g,I){var e=Math.expm1,t=Math.exp;g.exports=!e||e(10)>22025.465794806718||e(10)<22025.465794806718||-2e-17!=e(-2e-17)?function(g){return 0==(g=+g)?g:g>-1e-6&&g<1e-6?g+g*g/2:t(g)-1}:e},function(g,I){g.exports="\t\n\v\f\r \xa0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff"},function(g,I,e){"use strict";var t=e(189),C=e(50),Q=e(41);g.exports=t||!Q((function(){var g=Math.random();__defineSetter__.call(null,g,(function(){})),delete C[g]}))},function(g,I,e){"use strict";var t=e(60);g.exports=function(){var g=t(this),I="";return g.global&&(I+="g"),g.ignoreCase&&(I+="i"),g.multiline&&(I+="m"),g.dotAll&&(I+="s"),g.unicode&&(I+="u"),g.sticky&&(I+="y"),I}},function(g,I,e){"use strict";var t=e(392),C=e(501),Q=RegExp.prototype.exec,F=String.prototype.replace,B=Q,n=function(){var g=/a/,I=/b*/g;return Q.call(g,"a"),Q.call(I,"a"),0!==g.lastIndex||0!==I.lastIndex}(),U=C.UNSUPPORTED_Y||C.BROKEN_CARET,s=void 0!==/()??/.exec("")[1];(n||s||U)&&(B=function(g){var I,e,C,B,i=this,c=U&&i.sticky,A=t.call(i),l=i.source,a=0,r=g;return c&&(-1===(A=A.replace("y","")).indexOf("g")&&(A+="g"),r=String(g).slice(i.lastIndex),i.lastIndex>0&&(!i.multiline||i.multiline&&"\n"!==g[i.lastIndex-1])&&(l="(?: "+l+")",r=" "+r,a++),e=new RegExp("^(?:"+l+")",A)),s&&(e=new RegExp("^"+l+"$(?!\\s)",A)),n&&(I=i.lastIndex),C=Q.call(c?e:i,r),c?C?(C.input=C.input.slice(a),C[0]=C[0].slice(a),C.index=i.lastIndex,i.lastIndex+=C[0].length):i.lastIndex=0:n&&C&&(i.lastIndex=i.global?C.index+C[0].length:I),s&&C&&C.length>1&&F.call(C[0],e,(function(){for(B=1;B<arguments.length-2;B++)void 0===arguments[B]&&(C[B]=void 0)})),C}),g.exports=B},function(g,I,e){var t=e(162),C=e(134),Q=function(g){return function(I,e){var Q,F,B=String(C(I)),n=t(e),U=B.length;return n<0||n>=U?g?"":void 0:(Q=B.charCodeAt(n))<55296||Q>56319||n+1===U||(F=B.charCodeAt(n+1))<56320||F>57343?g?B.charAt(n):Q:g?B.slice(n,n+2):F-56320+(Q-55296<<10)+65536}};g.exports={codeAt:Q(!1),charAt:Q(!0)}},function(g,I,e){"use strict";e(647);var t=e(126),C=e(41),Q=e(64),F=e(393),B=e(135),n=Q("species"),U=!C((function(){var g=/./;return g.exec=function(){var g=[];return g.groups={a:"7"},g},"7"!=="".replace(g,"$<a>")})),s="$0"==="a".replace(/./,"$0"),i=Q("replace"),c=!!/./[i]&&""===/./[i]("a","$0"),A=!C((function(){var g=/(?:)/,I=g.exec;g.exec=function(){return I.apply(this,arguments)};var e="ab".split(g);return 2!==e.length||"a"!==e[0]||"b"!==e[1]}));g.exports=function(g,I,e,i){var l=Q(g),a=!C((function(){var I={};return I[l]=function(){return 7},7!=""[g](I)})),r=a&&!C((function(){var I=!1,e=/a/;return"split"===g&&((e={}).constructor={},e.constructor[n]=function(){return e},e.flags="",e[l]=/./[l]),e.exec=function(){return I=!0,null},e[l](""),!I}));if(!a||!r||"replace"===g&&(!U||!s||c)||"split"===g&&!A){var o=/./[l],d=e(l,""[g],(function(g,I,e,t,C){return I.exec===F?a&&!C?{done:!0,value:o.call(I,e,t)}:{done:!0,value:g.call(e,I,t)}:{done:!1}}),{REPLACE_KEEPS_$0:s,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:c}),u=d[0],y=d[1];t(String.prototype,g,u),t(RegExp.prototype,l,2==I?function(g,I){return y.call(g,this,I)}:function(g){return y.call(g,this)})}i&&B(RegExp.prototype[l],"sham",!0)}},function(g,I,e){var t=e(176),C=e(393);g.exports=function(g,I){var e=g.exec;if("function"===typeof e){var Q=e.call(g,I);if("object"!==typeof Q)throw TypeError("RegExp exec method returned something other than an Object or null");return Q}if("RegExp"!==t(g))throw TypeError("RegExp#exec called on incompatible receiver");return C.call(g,I)}},function(g,I){g.exports=function(g){if(!g.webpackPolyfill){var I=Object.create(g);I.children||(I.children=[]),Object.defineProperty(I,"loaded",{enumerable:!0,get:function(){return I.l}}),Object.defineProperty(I,"id",{enumerable:!0,get:function(){return I.i}}),Object.defineProperty(I,"exports",{enumerable:!0}),I.webpackPolyfill=1}return I}},function(g,I,e){"use strict";I.__esModule=!0,I.default=function(g){var I={};for(var e in g)Object.prototype.hasOwnProperty.call(g,e)&&(I[e]="number"===typeof g[e]?g[e]:g[e].val);return I},g.exports=I.default},function(g,I,e){(function(I){for(var t=e(1194),C="undefined"===typeof window?I:window,Q=["moz","webkit"],F="AnimationFrame",B=C["request"+F],n=C["cancel"+F]||C["cancelRequest"+F],U=0;!B&&U<Q.length;U++)B=C[Q[U]+"Request"+F],n=C[Q[U]+"Cancel"+F]||C[Q[U]+"CancelRequest"+F];if(!B||!n){var s=0,i=0,c=[];B=function(g){if(0===c.length){var I=t(),e=Math.max(0,1e3/60-(I-s));s=e+I,setTimeout((function(){var g=c.slice(0);c.length=0;for(var I=0;I<g.length;I++)if(!g[I].cancelled)try{g[I].callback(s)}catch(e){setTimeout((function(){throw e}),0)}}),Math.round(e))}return c.push({handle:++i,callback:g,cancelled:!1}),i},n=function(g){for(var I=0;I<c.length;I++)c[I].handle===g&&(c[I].cancelled=!0)}}g.exports=function(g){return B.call(C,g)},g.exports.cancel=function(){n.apply(C,arguments)},g.exports.polyfill=function(g){g||(g=C),g.requestAnimationFrame=B,g.cancelAnimationFrame=n}}).call(this,e(67))},function(g,I,e){"use strict";e.r(I);var t=e(437);e.d(I,"default",(function(){return t.a}))},function(g,I,e){"use strict";e.d(I,"b",(function(){return s}));var t=e(5),C=e(16),Q=e(0),F=e.n(Q),B=(e(4),e(129)),n=e.n(B),U=e(470);function s(){var g=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},I=g.defaultTheme,e=function(g){var e=F.a.forwardRef((function(e,Q){var B=e.innerRef,n=Object(C.a)(e,["innerRef"]),s=Object(U.a)()||I;return F.a.createElement(g,Object(t.a)({theme:s,ref:B||Q},n))}));return n()(e,g),e};return e}var i=s();I.a=i},function(g,I,e){"use strict";g.exports=function(g){for(var I=arguments.length-1,e="Minified React error #"+g+"; visit http://facebook.github.io/react/docs/error-decoder.html?invariant="+g,t=0;t<I;t++)e+="&args[]="+encodeURIComponent(arguments[t+1]);e+=" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.";var C=new Error(e);throw C.name="Invariant Violation",C.framesToPop=1,C}},function(g,I,e){var t=e(1238);g.exports=function(g){return null==g?"":t(g)}},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0});var t=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g},C=B(e(405)),Q=B(e(690)),F=B(e(519));function B(g){return g&&g.__esModule?g:{default:g}}var n={},U=void 0;I.default={unmount:function(){n={}},register:function(g,I){n[g]=I},unregister:function(g){delete n[g]},get:function(g){return n[g]||document.getElementById(g)||document.getElementsByName(g)[0]||document.getElementsByClassName(g)[0]},setActiveLink:function(g){return U=g},getActiveLink:function(){return U},scrollTo:function(g,I){var e=this.get(g);if(e){var B=(I=t({},I,{absolute:!1})).containerId,n=I.container,U=void 0;U=B?document.getElementById(B):n&&n.nodeType?n:document,I.absolute=!0;var s=C.default.scrollOffset(U,e)+(I.offset||0);if(!I.smooth)return F.default.registered.begin&&F.default.registered.begin(g,e),U===document?window.scrollTo(0,s):U.scrollTop=s,void(F.default.registered.end&&F.default.registered.end(g,e));Q.default.animateTopScroll(s,I,g,e)}else console.warn("target Element not found")}}},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0});I.default={pushHash:function(g){if(g=g?0===g.indexOf("#")?g:"#"+g:"",history.pushState){var I=window.location;history.pushState(null,null,g?I.pathname+I.search+g:I.pathname+I.search)}else location.hash=g},getHash:function(){return window.location.hash.replace(/^#/,"")},filterElementInContainer:function(g){return function(I){return g.contains?g!=I&&g.contains(I):!!(16&g.compareDocumentPosition(I))}},scrollOffset:function(g,I){return g===document?I.getBoundingClientRect().top+(window.scrollY||window.pageYOffset):"static"!==getComputedStyle(g).position?I.offsetTop:I.offsetTop-g.offsetTop}}},,function(g,I,e){(function(t){I.log=function(){var g;return"object"===typeof console&&console.log&&(g=console).log.apply(g,arguments)},I.formatArgs=function(I){if(I[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+I[0]+(this.useColors?"%c ":" ")+"+"+g.exports.humanize(this.diff),!this.useColors)return;var e="color: "+this.color;I.splice(1,0,e,"color: inherit");var t=0,C=0;I[0].replace(/%[a-zA-Z%]/g,(function(g){"%%"!==g&&(t++,"%c"===g&&(C=t))})),I.splice(C,0,e)},I.save=function(g){try{g?I.storage.setItem("debug",g):I.storage.removeItem("debug")}catch(e){}},I.load=function(){var g;try{g=I.storage.getItem("debug")}catch(e){}!g&&"undefined"!==typeof t&&"env"in t&&(g=Object({NODE_ENV:"production",PUBLIC_URL:"",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0}).DEBUG);return g},I.useColors=function(){if("undefined"!==typeof window&&window.process&&("renderer"===window.process.type||window.process.__nwjs))return!0;if("undefined"!==typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;return"undefined"!==typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!==typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!==typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!==typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},I.storage=function(){try{return localStorage}catch(g){}}(),I.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],g.exports=e(1342)(I),g.exports.formatters.j=function(g){try{return JSON.stringify(g)}catch(I){return"[UnexpectedJSONParseError]: "+I.message}}}).call(this,e(92))},function(g,I){I.encode=function(g){var I="";for(var e in g)g.hasOwnProperty(e)&&(I.length&&(I+="&"),I+=encodeURIComponent(e)+"="+encodeURIComponent(g[e]));return I},I.decode=function(g){for(var I={},e=g.split("&"),t=0,C=e.length;t<C;t++){var Q=e[t].split("=");I[decodeURIComponent(Q[0])]=decodeURIComponent(Q[1])}return I}},function(g,I){g.exports=function(g,I){var e=function(){};e.prototype=I.prototype,g.prototype=new e,g.prototype.constructor=g}},function(g,I,e){(function(t){I.log=function(){var g;return"object"===typeof console&&console.log&&(g=console).log.apply(g,arguments)},I.formatArgs=function(I){if(I[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+I[0]+(this.useColors?"%c ":" ")+"+"+g.exports.humanize(this.diff),!this.useColors)return;var e="color: "+this.color;I.splice(1,0,e,"color: inherit");var t=0,C=0;I[0].replace(/%[a-zA-Z%]/g,(function(g){"%%"!==g&&(t++,"%c"===g&&(C=t))})),I.splice(C,0,e)},I.save=function(g){try{g?I.storage.setItem("debug",g):I.storage.removeItem("debug")}catch(e){}},I.load=function(){var g;try{g=I.storage.getItem("debug")}catch(e){}!g&&"undefined"!==typeof t&&"env"in t&&(g=Object({NODE_ENV:"production",PUBLIC_URL:"",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0}).DEBUG);return g},I.useColors=function(){if("undefined"!==typeof window&&window.process&&("renderer"===window.process.type||window.process.__nwjs))return!0;if("undefined"!==typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;return"undefined"!==typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!==typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!==typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!==typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},I.storage=function(){try{return localStorage}catch(g){}}(),I.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],g.exports=e(1364)(I),g.exports.formatters.j=function(g){try{return JSON.stringify(g)}catch(I){return"[UnexpectedJSONParseError]: "+I.message}}}).call(this,e(92))},function(g,I,e){"use strict";var t,C="object"===typeof Reflect?Reflect:null,Q=C&&"function"===typeof C.apply?C.apply:function(g,I,e){return Function.prototype.apply.call(g,I,e)};t=C&&"function"===typeof C.ownKeys?C.ownKeys:Object.getOwnPropertySymbols?function(g){return Object.getOwnPropertyNames(g).concat(Object.getOwnPropertySymbols(g))}:function(g){return Object.getOwnPropertyNames(g)};var F=Number.isNaN||function(g){return g!==g};function B(){B.init.call(this)}g.exports=B,g.exports.once=function(g,I){return new Promise((function(e,t){function C(){void 0!==Q&&g.removeListener("error",Q),e([].slice.call(arguments))}var Q;"error"!==I&&(Q=function(e){g.removeListener(I,C),t(e)},g.once("error",Q)),g.once(I,C)}))},B.EventEmitter=B,B.prototype._events=void 0,B.prototype._eventsCount=0,B.prototype._maxListeners=void 0;var n=10;function U(g){if("function"!==typeof g)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof g)}function s(g){return void 0===g._maxListeners?B.defaultMaxListeners:g._maxListeners}function i(g,I,e,t){var C,Q,F,B;if(U(e),void 0===(Q=g._events)?(Q=g._events=Object.create(null),g._eventsCount=0):(void 0!==Q.newListener&&(g.emit("newListener",I,e.listener?e.listener:e),Q=g._events),F=Q[I]),void 0===F)F=Q[I]=e,++g._eventsCount;else if("function"===typeof F?F=Q[I]=t?[e,F]:[F,e]:t?F.unshift(e):F.push(e),(C=s(g))>0&&F.length>C&&!F.warned){F.warned=!0;var n=new Error("Possible EventEmitter memory leak detected. "+F.length+" "+String(I)+" listeners added. Use emitter.setMaxListeners() to increase limit");n.name="MaxListenersExceededWarning",n.emitter=g,n.type=I,n.count=F.length,B=n,console&&console.warn&&console.warn(B)}return g}function c(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function A(g,I,e){var t={fired:!1,wrapFn:void 0,target:g,type:I,listener:e},C=c.bind(t);return C.listener=e,t.wrapFn=C,C}function l(g,I,e){var t=g._events;if(void 0===t)return[];var C=t[I];return void 0===C?[]:"function"===typeof C?e?[C.listener||C]:[C]:e?function(g){for(var I=new Array(g.length),e=0;e<I.length;++e)I[e]=g[e].listener||g[e];return I}(C):r(C,C.length)}function a(g){var I=this._events;if(void 0!==I){var e=I[g];if("function"===typeof e)return 1;if(void 0!==e)return e.length}return 0}function r(g,I){for(var e=new Array(I),t=0;t<I;++t)e[t]=g[t];return e}Object.defineProperty(B,"defaultMaxListeners",{enumerable:!0,get:function(){return n},set:function(g){if("number"!==typeof g||g<0||F(g))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+g+".");n=g}}),B.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},B.prototype.setMaxListeners=function(g){if("number"!==typeof g||g<0||F(g))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+g+".");return this._maxListeners=g,this},B.prototype.getMaxListeners=function(){return s(this)},B.prototype.emit=function(g){for(var I=[],e=1;e<arguments.length;e++)I.push(arguments[e]);var t="error"===g,C=this._events;if(void 0!==C)t=t&&void 0===C.error;else if(!t)return!1;if(t){var F;if(I.length>0&&(F=I[0]),F instanceof Error)throw F;var B=new Error("Unhandled error."+(F?" ("+F.message+")":""));throw B.context=F,B}var n=C[g];if(void 0===n)return!1;if("function"===typeof n)Q(n,this,I);else{var U=n.length,s=r(n,U);for(e=0;e<U;++e)Q(s[e],this,I)}return!0},B.prototype.addListener=function(g,I){return i(this,g,I,!1)},B.prototype.on=B.prototype.addListener,B.prototype.prependListener=function(g,I){return i(this,g,I,!0)},B.prototype.once=function(g,I){return U(I),this.on(g,A(this,g,I)),this},B.prototype.prependOnceListener=function(g,I){return U(I),this.prependListener(g,A(this,g,I)),this},B.prototype.removeListener=function(g,I){var e,t,C,Q,F;if(U(I),void 0===(t=this._events))return this;if(void 0===(e=t[g]))return this;if(e===I||e.listener===I)0===--this._eventsCount?this._events=Object.create(null):(delete t[g],t.removeListener&&this.emit("removeListener",g,e.listener||I));else if("function"!==typeof e){for(C=-1,Q=e.length-1;Q>=0;Q--)if(e[Q]===I||e[Q].listener===I){F=e[Q].listener,C=Q;break}if(C<0)return this;0===C?e.shift():function(g,I){for(;I+1<g.length;I++)g[I]=g[I+1];g.pop()}(e,C),1===e.length&&(t[g]=e[0]),void 0!==t.removeListener&&this.emit("removeListener",g,F||I)}return this},B.prototype.off=B.prototype.removeListener,B.prototype.removeAllListeners=function(g){var I,e,t;if(void 0===(e=this._events))return this;if(void 0===e.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==e[g]&&(0===--this._eventsCount?this._events=Object.create(null):delete e[g]),this;if(0===arguments.length){var C,Q=Object.keys(e);for(t=0;t<Q.length;++t)"removeListener"!==(C=Q[t])&&this.removeAllListeners(C);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if("function"===typeof(I=e[g]))this.removeListener(g,I);else if(void 0!==I)for(t=I.length-1;t>=0;t--)this.removeListener(g,I[t]);return this},B.prototype.listeners=function(g){return l(this,g,!0)},B.prototype.rawListeners=function(g){return l(this,g,!1)},B.listenerCount=function(g,I){return"function"===typeof g.listenerCount?g.listenerCount(I):a.call(g,I)},B.prototype.listenerCount=a,B.prototype.eventNames=function(){return this._eventsCount>0?t(this._events):[]}},function(g,I,e){"use strict";(function(I){"undefined"===typeof I||!I.version||0===I.version.indexOf("v0.")||0===I.version.indexOf("v1.")&&0!==I.version.indexOf("v1.8.")?g.exports={nextTick:function(g,e,t,C){if("function"!==typeof g)throw new TypeError('"callback" argument must be a function');var Q,F,B=arguments.length;switch(B){case 0:case 1:return I.nextTick(g);case 2:return I.nextTick((function(){g.call(null,e)}));case 3:return I.nextTick((function(){g.call(null,e,t)}));case 4:return I.nextTick((function(){g.call(null,e,t,C)}));default:for(Q=new Array(B-1),F=0;F<Q.length;)Q[F++]=arguments[F];return I.nextTick((function(){g.apply(null,Q)}))}}}:g.exports=I}).call(this,e(92))},function(g,I,e){(function(g){var t=Object.getOwnPropertyDescriptors||function(g){for(var I=Object.keys(g),e={},t=0;t<I.length;t++)e[I[t]]=Object.getOwnPropertyDescriptor(g,I[t]);return e},C=/%[sdj%]/g;I.format=function(g){if(!o(g)){for(var I=[],e=0;e<arguments.length;e++)I.push(B(arguments[e]));return I.join(" ")}e=1;for(var t=arguments,Q=t.length,F=String(g).replace(C,(function(g){if("%%"===g)return"%";if(e>=Q)return g;switch(g){case"%s":return String(t[e++]);case"%d":return Number(t[e++]);case"%j":try{return JSON.stringify(t[e++])}catch(I){return"[Circular]"}default:return g}})),n=t[e];e<Q;n=t[++e])a(n)||!y(n)?F+=" "+n:F+=" "+B(n);return F},I.deprecate=function(e,t){if("undefined"!==typeof g&&!0===g.noDeprecation)return e;if("undefined"===typeof g)return function(){return I.deprecate(e,t).apply(this,arguments)};var C=!1;return function(){if(!C){if(g.throwDeprecation)throw new Error(t);g.traceDeprecation?console.trace(t):console.error(t),C=!0}return e.apply(this,arguments)}};var Q,F={};function B(g,e){var t={seen:[],stylize:U};return arguments.length>=3&&(t.depth=arguments[2]),arguments.length>=4&&(t.colors=arguments[3]),l(e)?t.showHidden=e:e&&I._extend(t,e),d(t.showHidden)&&(t.showHidden=!1),d(t.depth)&&(t.depth=2),d(t.colors)&&(t.colors=!1),d(t.customInspect)&&(t.customInspect=!0),t.colors&&(t.stylize=n),s(t,g,t.depth)}function n(g,I){var e=B.styles[I];return e?"\x1b["+B.colors[e][0]+"m"+g+"\x1b["+B.colors[e][1]+"m":g}function U(g,I){return g}function s(g,e,t){if(g.customInspect&&e&&m(e.inspect)&&e.inspect!==I.inspect&&(!e.constructor||e.constructor.prototype!==e)){var C=e.inspect(t,g);return o(C)||(C=s(g,C,t)),C}var Q=function(g,I){if(d(I))return g.stylize("undefined","undefined");if(o(I)){var e="'"+JSON.stringify(I).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return g.stylize(e,"string")}if(r(I))return g.stylize(""+I,"number");if(l(I))return g.stylize(""+I,"boolean");if(a(I))return g.stylize("null","null")}(g,e);if(Q)return Q;var F=Object.keys(e),B=function(g){var I={};return g.forEach((function(g,e){I[g]=!0})),I}(F);if(g.showHidden&&(F=Object.getOwnPropertyNames(e)),Z(e)&&(F.indexOf("message")>=0||F.indexOf("description")>=0))return i(e);if(0===F.length){if(m(e)){var n=e.name?": "+e.name:"";return g.stylize("[Function"+n+"]","special")}if(u(e))return g.stylize(RegExp.prototype.toString.call(e),"regexp");if(b(e))return g.stylize(Date.prototype.toString.call(e),"date");if(Z(e))return i(e)}var U,y="",x=!1,R=["{","}"];(A(e)&&(x=!0,R=["[","]"]),m(e))&&(y=" [Function"+(e.name?": "+e.name:"")+"]");return u(e)&&(y=" "+RegExp.prototype.toString.call(e)),b(e)&&(y=" "+Date.prototype.toUTCString.call(e)),Z(e)&&(y=" "+i(e)),0!==F.length||x&&0!=e.length?t<0?u(e)?g.stylize(RegExp.prototype.toString.call(e),"regexp"):g.stylize("[Object]","special"):(g.seen.push(e),U=x?function(g,I,e,t,C){for(var Q=[],F=0,B=I.length;F<B;++F)L(I,String(F))?Q.push(c(g,I,e,t,String(F),!0)):Q.push("");return C.forEach((function(C){C.match(/^\d+$/)||Q.push(c(g,I,e,t,C,!0))})),Q}(g,e,t,B,F):F.map((function(I){return c(g,e,t,B,I,x)})),g.seen.pop(),function(g,I,e){if(g.reduce((function(g,I){return I.indexOf("\n")>=0&&0,g+I.replace(/\u001b\[\d\d?m/g,"").length+1}),0)>60)return e[0]+(""===I?"":I+"\n ")+" "+g.join(",\n  ")+" "+e[1];return e[0]+I+" "+g.join(", ")+" "+e[1]}(U,y,R)):R[0]+y+R[1]}function i(g){return"["+Error.prototype.toString.call(g)+"]"}function c(g,I,e,t,C,Q){var F,B,n;if((n=Object.getOwnPropertyDescriptor(I,C)||{value:I[C]}).get?B=n.set?g.stylize("[Getter/Setter]","special"):g.stylize("[Getter]","special"):n.set&&(B=g.stylize("[Setter]","special")),L(t,C)||(F="["+C+"]"),B||(g.seen.indexOf(n.value)<0?(B=a(e)?s(g,n.value,null):s(g,n.value,e-1)).indexOf("\n")>-1&&(B=Q?B.split("\n").map((function(g){return"  "+g})).join("\n").substr(2):"\n"+B.split("\n").map((function(g){return"   "+g})).join("\n")):B=g.stylize("[Circular]","special")),d(F)){if(Q&&C.match(/^\d+$/))return B;(F=JSON.stringify(""+C)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(F=F.substr(1,F.length-2),F=g.stylize(F,"name")):(F=F.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),F=g.stylize(F,"string"))}return F+": "+B}function A(g){return Array.isArray(g)}function l(g){return"boolean"===typeof g}function a(g){return null===g}function r(g){return"number"===typeof g}function o(g){return"string"===typeof g}function d(g){return void 0===g}function u(g){return y(g)&&"[object RegExp]"===x(g)}function y(g){return"object"===typeof g&&null!==g}function b(g){return y(g)&&"[object Date]"===x(g)}function Z(g){return y(g)&&("[object Error]"===x(g)||g instanceof Error)}function m(g){return"function"===typeof g}function x(g){return Object.prototype.toString.call(g)}function R(g){return g<10?"0"+g.toString(10):g.toString(10)}I.debuglog=function(e){if(d(Q)&&(Q=Object({NODE_ENV:"production",PUBLIC_URL:"",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0}).NODE_DEBUG||""),e=e.toUpperCase(),!F[e])if(new RegExp("\\b"+e+"\\b","i").test(Q)){var t=g.pid;F[e]=function(){var g=I.format.apply(I,arguments);console.error("%s %d: %s",e,t,g)}}else F[e]=function(){};return F[e]},I.inspect=B,B.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},B.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},I.isArray=A,I.isBoolean=l,I.isNull=a,I.isNullOrUndefined=function(g){return null==g},I.isNumber=r,I.isString=o,I.isSymbol=function(g){return"symbol"===typeof g},I.isUndefined=d,I.isRegExp=u,I.isObject=y,I.isDate=b,I.isError=Z,I.isFunction=m,I.isPrimitive=function(g){return null===g||"boolean"===typeof g||"number"===typeof g||"string"===typeof g||"symbol"===typeof g||"undefined"===typeof g},I.isBuffer=e(1386);var S=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function G(){var g=new Date,I=[R(g.getHours()),R(g.getMinutes()),R(g.getSeconds())].join(":");return[g.getDate(),S[g.getMonth()],I].join(" ")}function L(g,I){return Object.prototype.hasOwnProperty.call(g,I)}I.log=function(){console.log("%s - %s",G(),I.format.apply(I,arguments))},I.inherits=e(1387),I._extend=function(g,I){if(!I||!y(I))return g;for(var e=Object.keys(I),t=e.length;t--;)g[e[t]]=I[e[t]];return g};var V="undefined"!==typeof Symbol?Symbol("util.promisify.custom"):void 0;function h(g,I){if(!g){var e=new Error("Promise was rejected with a falsy value");e.reason=g,g=e}return I(g)}I.promisify=function(g){if("function"!==typeof g)throw new TypeError('The "original" argument must be of type Function');if(V&&g[V]){var I;if("function"!==typeof(I=g[V]))throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(I,V,{value:I,enumerable:!1,writable:!1,configurable:!0}),I}function I(){for(var I,e,t=new Promise((function(g,t){I=g,e=t})),C=[],Q=0;Q<arguments.length;Q++)C.push(arguments[Q]);C.push((function(g,t){g?e(g):I(t)}));try{g.apply(this,C)}catch(F){e(F)}return t}return Object.setPrototypeOf(I,Object.getPrototypeOf(g)),V&&Object.defineProperty(I,V,{value:I,enumerable:!1,writable:!1,configurable:!0}),Object.defineProperties(I,t(g))},I.promisify.custom=V,I.callbackify=function(I){if("function"!==typeof I)throw new TypeError('The "original" argument must be of type Function');function e(){for(var e=[],t=0;t<arguments.length;t++)e.push(arguments[t]);var C=e.pop();if("function"!==typeof C)throw new TypeError("The last argument must be of type Function");var Q=this,F=function(){return C.apply(Q,arguments)};I.apply(this,e).then((function(I){g.nextTick(F,null,I)}),(function(I){g.nextTick(h,I,F)}))}return Object.setPrototypeOf(e,Object.getPrototypeOf(I)),Object.defineProperties(e,t(I)),e}}).call(this,e(92))},function(g,I,e){"use strict";var t=e(46).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=(Math.sqrt(2)-1)/3*4,F=C.curryN(2,(function(g,I){if(!I.style)return I;var e=I.box,t=e.top,C=e.left,F=e.width,B=e.height,n=I.style,U=n.borderTopLeftRadius,s=void 0===U?0:U,i=n.borderTopRightRadius,c=void 0===i?0:i,A=n.borderBottomRightRadius,l=void 0===A?0:A,a=n.borderBottomLeftRadius,r=void 0===a?0:a,o=Math.min(c,.5*F,.5*B),d=o*(1-Q);g.moveTo(C+o,t),g.lineTo(C+F-o,t),g.bezierCurveTo(C+F-d,t,C+F,t+d,C+F,t+o);var u=Math.min(l,.5*F,.5*B),y=u*(1-Q);g.lineTo(C+F,t+B-u),g.bezierCurveTo(C+F,t+B-y,C+F-y,t+B,C+F-u,t+B);var b=Math.min(r,.5*F,.5*B),Z=b*(1-Q);g.lineTo(C+b,t+B),g.bezierCurveTo(C+Z,t+B,C,t+B-Z,C,t+B-b);var m=Math.min(s,.5*F,.5*B),x=m*(1-Q);return g.lineTo(C,t+m),g.bezierCurveTo(C,t+x,C+x,t,C+m,t),g.closePath(),g.clip(),I}));I.default=F},function(g,I,e){"use strict";var t="undefined"!==typeof Uint8Array&&"undefined"!==typeof Uint16Array&&"undefined"!==typeof Int32Array;function C(g,I){return Object.prototype.hasOwnProperty.call(g,I)}I.assign=function(g){for(var I=Array.prototype.slice.call(arguments,1);I.length;){var e=I.shift();if(e){if("object"!==typeof e)throw new TypeError(e+"must be non-object");for(var t in e)C(e,t)&&(g[t]=e[t])}}return g},I.shrinkBuf=function(g,I){return g.length===I?g:g.subarray?g.subarray(0,I):(g.length=I,g)};var Q={arraySet:function(g,I,e,t,C){if(I.subarray&&g.subarray)g.set(I.subarray(e,e+t),C);else for(var Q=0;Q<t;Q++)g[C+Q]=I[e+Q]},flattenChunks:function(g){var I,e,t,C,Q,F;for(t=0,I=0,e=g.length;I<e;I++)t+=g[I].length;for(F=new Uint8Array(t),C=0,I=0,e=g.length;I<e;I++)Q=g[I],F.set(Q,C),C+=Q.length;return F}},F={arraySet:function(g,I,e,t,C){for(var Q=0;Q<t;Q++)g[C+Q]=I[e+Q]},flattenChunks:function(g){return[].concat.apply([],g)}};I.setTyped=function(g){g?(I.Buf8=Uint8Array,I.Buf16=Uint16Array,I.Buf32=Int32Array,I.assign(I,Q)):(I.Buf8=Array,I.Buf16=Array,I.Buf32=Array,I.assign(I,F))},I.setTyped(t)},function(g,I){function e(I){return g.exports=e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"==typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g},g.exports.__esModule=!0,g.exports.default=g.exports,e(I)}g.exports=e,g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I,e){var t=e(1504)();g.exports=t;try{regeneratorRuntime=t}catch(C){"object"===typeof globalThis?globalThis.regeneratorRuntime=t:Function("r","regeneratorRuntime = r")(t)}},function(g,I){function e(g,I,e,t,C,Q,F){try{var B=g[Q](F),n=B.value}catch(U){return void e(U)}B.done?I(n):Promise.resolve(n).then(t,C)}g.exports=function(g){return function(){var I=this,t=arguments;return new Promise((function(C,Q){var F=g.apply(I,t);function B(g){e(F,C,Q,B,n,"next",g)}function n(g){e(F,C,Q,B,n,"throw",g)}B(void 0)}))}},g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I,e){"use strict";var t=e(31).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)).pathOr(null,["attributes","font"]);I.default=C},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0}),I.dontSetMe=function(g,I,e){if(g[I])return new Error("Invalid prop ".concat(I," passed to ").concat(e," - do not set this, set it on the child."))},I.findInArray=function(g,I){for(var e=0,t=g.length;e<t;e++)if(I.apply(I,[g[e],e,g]))return g[e]},I.int=function(g){return parseInt(g,10)},I.isFunction=function(g){return"function"===typeof g||"[object Function]"===Object.prototype.toString.call(g)},I.isNum=function(g){return"number"===typeof g&&!isNaN(g)}},,function(g,I,e){"use strict";e.d(I,"b",(function(){return c}));var t=e(5),C=e(16),Q=e(0),F=(e(4),e(440)),B=e(21),n=e(164),U=e(153),s=e(439),i=e(1677),c=function(g){return{root:{},select:{"-moz-appearance":"none","-webkit-appearance":"none",userSelect:"none",borderRadius:0,minWidth:16,cursor:"pointer","&:focus":{backgroundColor:"light"===g.palette.type?"rgba(0, 0, 0, 0.05)":"rgba(255, 255, 255, 0.05)",borderRadius:0},"&::-ms-expand":{display:"none"},"&$disabled":{cursor:"default"},"&[multiple]":{height:"auto"},"&:not([multiple]) option, &:not([multiple]) optgroup":{backgroundColor:g.palette.background.paper},"&&":{paddingRight:24}},filled:{"&&":{paddingRight:32}},outlined:{borderRadius:g.shape.borderRadius,"&&":{paddingRight:32}},selectMenu:{height:"auto",minHeight:"1.1876em",textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden"},disabled:{},icon:{position:"absolute",right:0,top:"calc(50% - 12px)",pointerEvents:"none",color:g.palette.action.active,"&$disabled":{color:g.palette.action.disabled}},iconOpen:{transform:"rotate(180deg)"},iconFilled:{right:7},iconOutlined:{right:7},nativeInput:{bottom:0,left:0,position:"absolute",opacity:0,pointerEvents:"none",width:"100%"}}},A=Q.createElement(i.a,null),l=Q.forwardRef((function(g,I){var e=g.children,B=g.classes,i=g.IconComponent,c=void 0===i?s.a:i,l=g.input,a=void 0===l?A:l,r=g.inputProps,o=(g.variant,Object(C.a)(g,["children","classes","IconComponent","input","inputProps","variant"])),d=Object(U.a)(),u=Object(n.a)({props:g,muiFormControl:d,states:["variant"]});return Q.cloneElement(a,Object(t.a)({inputComponent:F.a,inputProps:Object(t.a)({children:e,classes:B,IconComponent:c,variant:u.variant,type:void 0},r,a?a.props.inputProps:{}),ref:I},o))}));l.muiName="Select",I.a=Object(B.a)(c,{name:"MuiNativeSelect"})(l)},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(122),e(4),e(14)),B=e(21),n=e(1678),U=e(1680),s=e(42),i=e(160),c=e(77),A={vertical:"top",horizontal:"right"},l={vertical:"top",horizontal:"left"},a=Q.forwardRef((function(g,I){var e=g.autoFocus,B=void 0===e||e,a=g.children,r=g.classes,o=g.disableAutoFocusItem,d=void 0!==o&&o,u=g.MenuListProps,y=void 0===u?{}:u,b=g.onClose,Z=g.onEntering,m=g.open,x=g.PaperProps,R=void 0===x?{}:x,S=g.PopoverClasses,G=g.transitionDuration,L=void 0===G?"auto":G,V=g.variant,h=void 0===V?"selectedMenu":V,D=Object(C.a)(g,["autoFocus","children","classes","disableAutoFocusItem","MenuListProps","onClose","onEntering","open","PaperProps","PopoverClasses","transitionDuration","variant"]),p=Object(c.a)(),E=B&&!d&&m,N=Q.useRef(null),W=Q.useRef(null),f=-1;Q.Children.map(a,(function(g,I){Q.isValidElement(g)&&(g.props.disabled||("menu"!==h&&g.props.selected||-1===f)&&(f=I))}));var X=Q.Children.map(a,(function(g,I){return I===f?Q.cloneElement(g,{ref:function(I){W.current=s.findDOMNode(I),Object(i.a)(g.ref,I)}}):g}));return Q.createElement(n.a,Object(t.a)({getContentAnchorEl:function(){return W.current},classes:S,onClose:b,onEntering:function(g,I){N.current&&N.current.adjustStyleForScrollbar(g,p),Z&&Z(g,I)},anchorOrigin:"rtl"===p.direction?A:l,transformOrigin:"rtl"===p.direction?A:l,PaperProps:Object(t.a)({},R,{classes:Object(t.a)({},R.classes,{root:r.paper})}),open:m,ref:I,transitionDuration:L},D),Q.createElement(U.a,Object(t.a)({onKeyDown:function(g){"Tab"===g.key&&(g.preventDefault(),b&&b(g,"tabKeyDown"))},actions:N,autoFocus:B&&(-1===f||d),autoFocusItem:E,variant:h},y,{className:Object(F.default)(r.list,y.className)}),X))}));I.a=Object(B.a)({paper:{maxHeight:"calc(100% - 96px)",WebkitOverflowScrolling:"touch"},list:{outline:0}},{name:"MuiMenu"})(a)},function(g,I,e){"use strict";var t=e(5),C=e(1683),Q=e(196);I.a=function(g){var I=Object(C.a)(g);return function(g,e){return I(g,Object(t.a)({defaultTheme:Q.a},e))}}},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M7 18c-1.1 0-1.99.9-1.99 2S5.9 22 7 22s2-.9 2-2-.9-2-2-2zM1 2v2h2l3.6 7.59-1.35 2.45c-.16.28-.25.61-.25.96 0 1.1.9 2 2 2h12v-2H7.42c-.14 0-.25-.11-.25-.25l.03-.12.9-1.63h7.45c.75 0 1.41-.41 1.75-1.03l3.58-6.49c.08-.14.12-.31.12-.48 0-.55-.45-1-1-1H5.21l-.94-2H1zm16 16c-1.1 0-1.99.9-1.99 2s.89 2 1.99 2 2-.9 2-2-.9-2-2-2z"}),"ShoppingCart");I.default=Q},function(g,I){function e(){this.table=new Uint16Array(16),this.trans=new Uint16Array(288)}function t(g,I){this.source=g,this.sourceIndex=0,this.tag=0,this.bitcount=0,this.dest=I,this.destLen=0,this.ltree=new e,this.dtree=new e}var C=new e,Q=new e,F=new Uint8Array(30),B=new Uint16Array(30),n=new Uint8Array(30),U=new Uint16Array(30),s=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),i=new e,c=new Uint8Array(320);function A(g,I,e,t){var C,Q;for(C=0;C<e;++C)g[C]=0;for(C=0;C<30-e;++C)g[C+e]=C/e|0;for(Q=t,C=0;C<30;++C)I[C]=Q,Q+=1<<g[C]}var l=new Uint16Array(16);function a(g,I,e,t){var C,Q;for(C=0;C<16;++C)g.table[C]=0;for(C=0;C<t;++C)g.table[I[e+C]]++;for(g.table[0]=0,Q=0,C=0;C<16;++C)l[C]=Q,Q+=g.table[C];for(C=0;C<t;++C)I[e+C]&&(g.trans[l[I[e+C]]++]=C)}function r(g){g.bitcount--||(g.tag=g.source[g.sourceIndex++],g.bitcount=7);var I=1&g.tag;return g.tag>>>=1,I}function o(g,I,e){if(!I)return e;for(;g.bitcount<24;)g.tag|=g.source[g.sourceIndex++]<<g.bitcount,g.bitcount+=8;var t=g.tag&65535>>>16-I;return g.tag>>>=I,g.bitcount-=I,t+e}function d(g,I){for(;g.bitcount<24;)g.tag|=g.source[g.sourceIndex++]<<g.bitcount,g.bitcount+=8;var e=0,t=0,C=0,Q=g.tag;do{t=2*t+(1&Q),Q>>>=1,++C,e+=I.table[C],t-=I.table[C]}while(t>=0);return g.tag=Q,g.bitcount-=C,I.trans[e+t]}function u(g,I,e){var t,C,Q,F,B,n;for(t=o(g,5,257),C=o(g,5,1),Q=o(g,4,4),F=0;F<19;++F)c[F]=0;for(F=0;F<Q;++F){var U=o(g,3,0);c[s[F]]=U}for(a(i,c,0,19),B=0;B<t+C;){var A=d(g,i);switch(A){case 16:var l=c[B-1];for(n=o(g,2,3);n;--n)c[B++]=l;break;case 17:for(n=o(g,3,3);n;--n)c[B++]=0;break;case 18:for(n=o(g,7,11);n;--n)c[B++]=0;break;default:c[B++]=A}}a(I,c,0,t),a(e,c,t,C)}function y(g,I,e){for(;;){var t,C,Q,s,i=d(g,I);if(256===i)return 0;if(i<256)g.dest[g.destLen++]=i;else for(t=o(g,F[i-=257],B[i]),C=d(g,e),s=Q=g.destLen-o(g,n[C],U[C]);s<Q+t;++s)g.dest[g.destLen++]=g.dest[s]}}function b(g){for(var I,e;g.bitcount>8;)g.sourceIndex--,g.bitcount-=8;if((I=256*(I=g.source[g.sourceIndex+1])+g.source[g.sourceIndex])!==(65535&~(256*g.source[g.sourceIndex+3]+g.source[g.sourceIndex+2])))return-3;for(g.sourceIndex+=4,e=I;e;--e)g.dest[g.destLen++]=g.source[g.sourceIndex++];return g.bitcount=0,0}!function(g,I){var e;for(e=0;e<7;++e)g.table[e]=0;for(g.table[7]=24,g.table[8]=152,g.table[9]=112,e=0;e<24;++e)g.trans[e]=256+e;for(e=0;e<144;++e)g.trans[24+e]=e;for(e=0;e<8;++e)g.trans[168+e]=280+e;for(e=0;e<112;++e)g.trans[176+e]=144+e;for(e=0;e<5;++e)I.table[e]=0;for(I.table[5]=32,e=0;e<32;++e)I.trans[e]=e}(C,Q),A(F,B,4,3),A(n,U,2,1),F[28]=0,B[28]=258,g.exports=function(g,I){var e,F,B=new t(g,I);do{switch(e=r(B),o(B,2,0)){case 0:F=b(B);break;case 1:F=y(B,C,Q);break;case 2:u(B,B.ltree,B.dtree),F=y(B,B.ltree,B.dtree);break;default:F=-3}if(0!==F)throw new Error("Data error")}while(!e);return B.destLen<B.dest.length?"function"===typeof B.dest.slice?B.dest.slice(0,B.destLen):B.dest.subarray(0,B.destLen):B.dest}},function(g,I,e){"use strict";function t(g){for(var I="https://material-ui.com/production-error/?code="+g,e=1;e<arguments.length;e+=1)I+="&args[]="+encodeURIComponent(arguments[e]);return"Minified Material-UI error #"+g+"; visit "+I+" for the full message."}e.d(I,"a",(function(){return t}))},function(g,I,e){"use strict";var t=e(0),C=e.n(t).a.createContext(null);I.a=C},function(g,I,e){"use strict";function t(g){if("undefined"!==typeof Symbol&&Symbol.iterator in Object(g))return Array.from(g)}e.d(I,"a",(function(){return t}))},function(g,I,e){"use strict";var t="function"===typeof Symbol&&Symbol.for;I.a=t?Symbol.for("mui.nested"):"__THEME_NESTED__"},function(g,I,e){"use strict";function t(g){if(Array.isArray(g))return g}e.d(I,"a",(function(){return t}))},function(g,I,e){"use strict";function t(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}e.d(I,"a",(function(){return t}))},function(g,I,e){"use strict";I.a={mobileStepper:1e3,speedDial:1050,appBar:1100,drawer:1200,modal:1300,snackbar:1400,tooltip:1500}},function(g,I,e){"use strict";e.d(I,"a",(function(){return l}));var t=e(0),C=e(42),Q=!0,F=!1,B=null,n={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function U(g){g.metaKey||g.altKey||g.ctrlKey||(Q=!0)}function s(){Q=!1}function i(){"hidden"===this.visibilityState&&F&&(Q=!0)}function c(g){var I=g.target;try{return I.matches(":focus-visible")}catch(e){}return Q||function(g){var I=g.type,e=g.tagName;return!("INPUT"!==e||!n[I]||g.readOnly)||("TEXTAREA"===e&&!g.readOnly||!!g.isContentEditable)}(I)}function A(){F=!0,window.clearTimeout(B),B=window.setTimeout((function(){F=!1}),100)}function l(){return{isFocusVisible:c,onBlurVisible:A,ref:t.useCallback((function(g){var I,e=C.findDOMNode(g);null!=e&&((I=e.ownerDocument).addEventListener("keydown",U,!0),I.addEventListener("mousedown",s,!0),I.addEventListener("pointerdown",s,!0),I.addEventListener("touchstart",s,!0),I.addEventListener("visibilitychange",i,!0))}),[])}}},function(g,I,e){"use strict";function t(g,I){if(null==g)return{};var e,t,C={},Q=Object.keys(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||(C[e]=g[e]);return C}e.d(I,"a",(function(){return t}))},function(g,I,e){"use strict";function t(g,I){g.prototype=Object.create(I.prototype),g.prototype.constructor=g,g.__proto__=I}e.d(I,"a",(function(){return t}))},function(g,I,e){"use strict";var t=e(5),C=e(99),Q=e(16),F=e(0),B=(e(4),e(473)),n=e(87),U=e(77),s=e(120),i=e(49),c={entering:{opacity:1},entered:{opacity:1}},A={enter:n.b.enteringScreen,exit:n.b.leavingScreen},l=F.forwardRef((function(g,I){var e=g.children,n=g.disableStrictModeCompat,l=void 0!==n&&n,a=g.in,r=g.onEnter,o=g.onEntered,d=g.onEntering,u=g.onExit,y=g.onExited,b=g.onExiting,Z=g.style,m=g.TransitionComponent,x=void 0===m?B.a:m,R=g.timeout,S=void 0===R?A:R,G=Object(Q.a)(g,["children","disableStrictModeCompat","in","onEnter","onEntered","onEntering","onExit","onExited","onExiting","style","TransitionComponent","timeout"]),L=Object(U.a)(),V=L.unstable_strictMode&&!l,h=F.useRef(null),D=Object(i.a)(e.ref,I),p=Object(i.a)(V?h:void 0,D),E=function(g){return function(I,e){if(g){var t=V?[h.current,I]:[I,e],Q=Object(C.a)(t,2),F=Q[0],B=Q[1];void 0===B?g(F):g(F,B)}}},N=E(d),W=E((function(g,I){Object(s.b)(g);var e=Object(s.a)({style:Z,timeout:S},{mode:"enter"});g.style.webkitTransition=L.transitions.create("opacity",e),g.style.transition=L.transitions.create("opacity",e),r&&r(g,I)})),f=E(o),X=E(b),J=E((function(g){var I=Object(s.a)({style:Z,timeout:S},{mode:"exit"});g.style.webkitTransition=L.transitions.create("opacity",I),g.style.transition=L.transitions.create("opacity",I),u&&u(g)})),v=E(y);return F.createElement(x,Object(t.a)({appear:!0,in:a,nodeRef:V?h:void 0,onEnter:W,onEntered:f,onEntering:N,onExit:J,onExited:v,onExiting:X,timeout:S},G),(function(g,I){return F.cloneElement(e,Object(t.a)({style:Object(t.a)({opacity:0,visibility:"exited"!==g||a?void 0:"hidden"},c[g],Z,e.props.style),ref:p},I))}))}));I.a=l},function(g,I,e){"use strict";function t(){var g=document.createElement("div");g.style.width="99px",g.style.height="99px",g.style.position="absolute",g.style.top="-9999px",g.style.overflow="scroll",document.body.appendChild(g);var I=g.offsetWidth-g.clientWidth;return document.body.removeChild(g),I}e.d(I,"a",(function(){return t}))},function(g,I,e){"use strict";var t=e(0),C=e(78);I.a=Object(C.a)(t.createElement("path",{d:"M7 10l5 5 5-5z"}),"ArrowDropDown")},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(4),e(14)),B=e(30),n=Q.forwardRef((function(g,I){var e=g.classes,n=g.className,U=g.disabled,s=g.IconComponent,i=g.inputRef,c=g.variant,A=void 0===c?"standard":c,l=Object(C.a)(g,["classes","className","disabled","IconComponent","inputRef","variant"]);return Q.createElement(Q.Fragment,null,Q.createElement("select",Object(t.a)({className:Object(F.default)(e.root,e.select,e[A],n,U&&e.disabled),disabled:U,ref:i||I},l)),g.multiple?null:Q.createElement(s,{className:Object(F.default)(e.icon,e["icon".concat(Object(B.a)(A))],U&&e.disabled)}))}));I.a=n},function(g,I,e){var t=e(1185);g.exports=A,g.exports.parse=Q,g.exports.compile=function(g,I){return B(Q(g,I),I)},g.exports.tokensToFunction=B,g.exports.tokensToRegExp=c;var C=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function Q(g,I){for(var e,t=[],Q=0,F=0,B="",s=I&&I.delimiter||"/";null!=(e=C.exec(g));){var i=e[0],c=e[1],A=e.index;if(B+=g.slice(F,A),F=A+i.length,c)B+=c[1];else{var l=g[F],a=e[2],r=e[3],o=e[4],d=e[5],u=e[6],y=e[7];B&&(t.push(B),B="");var b=null!=a&&null!=l&&l!==a,Z="+"===u||"*"===u,m="?"===u||"*"===u,x=e[2]||s,R=o||d;t.push({name:r||Q++,prefix:a||"",delimiter:x,optional:m,repeat:Z,partial:b,asterisk:!!y,pattern:R?U(R):y?".*":"[^"+n(x)+"]+?"})}}return F<g.length&&(B+=g.substr(F)),B&&t.push(B),t}function F(g){return encodeURI(g).replace(/[\/?#]/g,(function(g){return"%"+g.charCodeAt(0).toString(16).toUpperCase()}))}function B(g,I){for(var e=new Array(g.length),C=0;C<g.length;C++)"object"===typeof g[C]&&(e[C]=new RegExp("^(?:"+g[C].pattern+")$",i(I)));return function(I,C){for(var Q="",B=I||{},n=(C||{}).pretty?F:encodeURIComponent,U=0;U<g.length;U++){var s=g[U];if("string"!==typeof s){var i,c=B[s.name];if(null==c){if(s.optional){s.partial&&(Q+=s.prefix);continue}throw new TypeError('Expected "'+s.name+'" to be defined')}if(t(c)){if(!s.repeat)throw new TypeError('Expected "'+s.name+'" to not repeat, but received `'+JSON.stringify(c)+"`");if(0===c.length){if(s.optional)continue;throw new TypeError('Expected "'+s.name+'" to not be empty')}for(var A=0;A<c.length;A++){if(i=n(c[A]),!e[U].test(i))throw new TypeError('Expected all "'+s.name+'" to match "'+s.pattern+'", but received `'+JSON.stringify(i)+"`");Q+=(0===A?s.prefix:s.delimiter)+i}}else{if(i=s.asterisk?encodeURI(c).replace(/[?#]/g,(function(g){return"%"+g.charCodeAt(0).toString(16).toUpperCase()})):n(c),!e[U].test(i))throw new TypeError('Expected "'+s.name+'" to match "'+s.pattern+'", but received "'+i+'"');Q+=s.prefix+i}}else Q+=s}return Q}}function n(g){return g.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function U(g){return g.replace(/([=!:$\/()])/g,"\\$1")}function s(g,I){return g.keys=I,g}function i(g){return g&&g.sensitive?"":"i"}function c(g,I,e){t(I)||(e=I||e,I=[]);for(var C=(e=e||{}).strict,Q=!1!==e.end,F="",B=0;B<g.length;B++){var U=g[B];if("string"===typeof U)F+=n(U);else{var c=n(U.prefix),A="(?:"+U.pattern+")";I.push(U),U.repeat&&(A+="(?:"+c+A+")*"),F+=A=U.optional?U.partial?c+"("+A+")?":"(?:"+c+"("+A+"))?":c+"("+A+")"}}var l=n(e.delimiter||"/"),a=F.slice(-l.length)===l;return C||(F=(a?F.slice(0,-l.length):F)+"(?:"+l+"(?=$))?"),F+=Q?"$":C&&a?"":"(?="+l+"|$)",s(new RegExp("^"+F,i(e)),I)}function A(g,I,e){return t(I)||(e=I||e,I=[]),e=e||{},g instanceof RegExp?function(g,I){var e=g.source.match(/\((?!\?)/g);if(e)for(var t=0;t<e.length;t++)I.push({name:t,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return s(g,I)}(g,I):t(g)?function(g,I,e){for(var t=[],C=0;C<g.length;C++)t.push(A(g[C],I,e).source);return s(new RegExp("(?:"+t.join("|")+")",i(e)),I)}(g,I,e):function(g,I,e){return c(Q(g,e),I,e)}(g,I,e)}},function(g,I,e){"use strict";I.a={animationIterationCount:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1}},function(g,I,e){"use strict";I.a=function(g){var I={};return function(e){return void 0===I[e]&&(I[e]=g(e)),I[e]}}},function(g,I,e){"use strict";var t=e(0),C=t.createContext();I.a=C},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement(C.default.Fragment,null,C.default.createElement("path",{d:"M21 5c-1.11-.35-2.33-.5-3.5-.5-1.95 0-4.05.4-5.5 1.5-1.45-1.1-3.55-1.5-5.5-1.5S2.45 4.9 1 6v14.65c0 .25.25.5.5.5.1 0 .15-.05.25-.05C3.1 20.45 5.05 20 6.5 20c1.95 0 4.05.4 5.5 1.5 1.35-.85 3.8-1.5 5.5-1.5 1.65 0 3.35.3 4.75 1.05.1.05.15.05.25.05.25 0 .5-.25.5-.5V6c-.6-.45-1.25-.75-2-1zm0 13.5c-1.1-.35-2.3-.5-3.5-.5-1.7 0-4.15.65-5.5 1.5V8c1.35-.85 3.8-1.5 5.5-1.5 1.2 0 2.4.15 3.5.5v11.5z"}),C.default.createElement("path",{d:"M17.5 10.5c.88 0 1.73.09 2.5.26V9.24c-.79-.15-1.64-.24-2.5-.24-1.7 0-3.24.29-4.5.83v1.66c1.13-.64 2.7-.99 4.5-.99zM13 12.49v1.66c1.13-.64 2.7-.99 4.5-.99.88 0 1.73.09 2.5.26V11.9c-.79-.15-1.64-.24-2.5-.24-1.7 0-3.24.3-4.5.83zM17.5 14.33c-1.7 0-3.24.29-4.5.83v1.66c1.13-.64 2.7-.99 4.5-.99.88 0 1.73.09 2.5.26v-1.52c-.79-.16-1.64-.24-2.5-.24z"})),"MenuBook");I.default=Q},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0}),I.Animated=void 0;var t=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g},C=function(){function g(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}return function(I,e,t){return e&&g(I.prototype,e),t&&g(I,t),I}}(),Q=s(e(1209)),F=s(e(194)),B=e(514),n=s(e(1226)),U=e(4);function s(g){return g&&g.__esModule?g:{default:g}}var i=function(){var g=B.isBrowser?window.navigator.userAgent:"",I=g.indexOf("MSIE ");return I>-1&&parseInt(g.substring(I+5,g.indexOf(".",I)),10)<=9}(),c=I.Animated=function(g){function I(g){!function(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}(this,I);var e=function(g,I){if(!g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!I||"object"!==typeof I&&"function"!==typeof I?g:I}(this,(I.__proto__||Object.getPrototypeOf(I)).call(this,g));return e.getNewState=function(g){var I=g.isVisible,e=g.animationIn,t=g.animationOut,C=g.animationInDuration,Q=g.animationOutDuration,F=g.animationInDelay,B=g.animationOutDelay;return I?{animation:e,duration:C,delay:F}:{animation:t,duration:Q,delay:B}},e.state=g.animateOnMount?e.getNewState(g):{},e}return function(g,I){if("function"!==typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function, not "+typeof I);g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,enumerable:!1,writable:!0,configurable:!0}}),I&&(Object.setPrototypeOf?Object.setPrototypeOf(g,I):g.__proto__=I)}(I,g),C(I,[{key:"componentWillReceiveProps",value:function(g){this.props.isVisible!==g.isVisible&&this.setState(this.getNewState(t({},this.props,g)))}},{key:"render",value:function(){var g=this.props,I=g.children,e=g.style,C=g.isVisible,B=g.innerRef,U=g.className,s=this.state,c=s.animation,A=s.delay,l=s.duration,a=(0,F.default)("animated",c,U),r=i||!c?{opacity:C?1:0,transition:"opacity "+A+"ms"}:{};return Q.default.createElement("div",{className:a,ref:B,style:(0,n.default)(t({animationDelay:A+"ms",animationDuration:l+"ms",pointerEvents:C?"all":"none"},e,r))},I)}}]),I}(Q.default.Component);c.displayName="Animated",c.propTypes={animateOnMount:U.bool,isVisible:U.bool,animationIn:U.string,animationOut:U.string,animationInDelay:U.number,animationOutDelay:U.number,animationInDuration:U.number,animationOutDuration:U.number,className:U.string,style:U.object,innerRef:U.func},c.defaultProps={animateOnMount:!0,isVisible:!0,animationIn:"fadeIn",animationOut:"fadeOut",animationInDelay:0,animationOutDelay:0,animationInDuration:1e3,animationOutDuration:1e3,className:"",style:{}}},,,,function(g,I,e){"use strict";e.d(I,"a",(function(){return cg}));var t=e(13),C=e(9),Q=e(8),F=e(26),B=e(2),n=e(6),U=e(7);function s(g){return Array.isArray?Array.isArray(g):"[object Array]"===o(g)}function i(g){return"string"===typeof g}function c(g){return"number"===typeof g}function A(g){return!0===g||!1===g||function(g){return l(g)&&null!==g}(g)&&"[object Boolean]"==o(g)}function l(g){return"object"===typeof g}function a(g){return void 0!==g&&null!==g}function r(g){return!g.trim().length}function o(g){return null==g?void 0===g?"[object Undefined]":"[object Null]":Object.prototype.toString.call(g)}var d=function(g){return"Invalid value for key ".concat(g)},u=function(g){return"Pattern length exceeds max of ".concat(g,".")},y=Object.prototype.hasOwnProperty,b=function(){function g(I){var e=this;Object(n.a)(this,g),this._keys=[],this._keyMap={};var t=0;I.forEach((function(g){var I=Z(g);t+=I.weight,e._keys.push(I),e._keyMap[I.id]=I,t+=I.weight})),this._keys.forEach((function(g){g.weight/=t}))}return Object(U.a)(g,[{key:"get",value:function(g){return this._keyMap[g]}},{key:"keys",value:function(){return this._keys}},{key:"toJSON",value:function(){return JSON.stringify(this._keys)}}]),g}();function Z(g){var I=null,e=null,t=null,C=1,Q=null;if(i(g)||s(g))t=g,I=m(g),e=x(g);else{if(!y.call(g,"name"))throw new Error(function(g){return"Missing ".concat(g," property in key")}("name"));var F=g.name;if(t=F,y.call(g,"weight")&&(C=g.weight)<=0)throw new Error(function(g){return"Property 'weight' in key '".concat(g,"' must be a positive integer")}(F));I=m(F),e=x(F),Q=g.getFn}return{path:I,id:e,weight:C,src:t,getFn:Q}}function m(g){return s(g)?g:g.split(".")}function x(g){return s(g)?g.join("."):g}var R={useExtendedSearch:!1,getFn:function(g,I){var e=[],t=!1;return function g(I,C,Q){if(a(I))if(C[Q]){var F=I[C[Q]];if(!a(F))return;if(Q===C.length-1&&(i(F)||c(F)||A(F)))e.push(function(g){return null==g?"":function(g){if("string"==typeof g)return g;var I=g+"";return"0"==I&&1/g==-1/0?"-0":I}(g)}(F));else if(s(F)){t=!0;for(var B=0,n=F.length;B<n;B+=1)g(F[B],C,Q+1)}else C.length&&g(F,C,Q+1)}else e.push(I)}(g,i(I)?I.split("."):I,0),t?e:e[0]},ignoreLocation:!1,ignoreFieldNorm:!1,fieldNormWeight:1},S=Object(B.a)(Object(B.a)(Object(B.a)(Object(B.a)({},{isCaseSensitive:!1,includeScore:!1,keys:[],shouldSort:!0,sortFn:function(g,I){return g.score===I.score?g.idx<I.idx?-1:1:g.score<I.score?-1:1}}),{includeMatches:!1,findAllMatches:!1,minMatchCharLength:1}),{location:0,threshold:.6,distance:100}),R),G=/[^ ]+/g;function L(){var g=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:3,e=new Map,t=Math.pow(10,I);return{get:function(I){var C=I.match(G).length;if(e.has(C))return e.get(C);var Q=1/Math.pow(C,.5*g),F=parseFloat(Math.round(Q*t)/t);return e.set(C,F),F},clear:function(){e.clear()}}}var V=function(){function g(){var I=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=I.getFn,t=void 0===e?S.getFn:e,C=I.fieldNormWeight,Q=void 0===C?S.fieldNormWeight:C;Object(n.a)(this,g),this.norm=L(Q,3),this.getFn=t,this.isCreated=!1,this.setIndexRecords()}return Object(U.a)(g,[{key:"setSources",value:function(){var g=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.docs=g}},{key:"setIndexRecords",value:function(){var g=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.records=g}},{key:"setKeys",value:function(){var g=this,I=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.keys=I,this._keysMap={},I.forEach((function(I,e){g._keysMap[I.id]=e}))}},{key:"create",value:function(){var g=this;!this.isCreated&&this.docs.length&&(this.isCreated=!0,i(this.docs[0])?this.docs.forEach((function(I,e){g._addString(I,e)})):this.docs.forEach((function(I,e){g._addObject(I,e)})),this.norm.clear())}},{key:"add",value:function(g){var I=this.size();i(g)?this._addString(g,I):this._addObject(g,I)}},{key:"removeAt",value:function(g){this.records.splice(g,1);for(var I=g,e=this.size();I<e;I+=1)this.records[I].i-=1}},{key:"getValueForItemAtKeyId",value:function(g,I){return g[this._keysMap[I]]}},{key:"size",value:function(){return this.records.length}},{key:"_addString",value:function(g,I){if(a(g)&&!r(g)){var e={v:g,i:I,n:this.norm.get(g)};this.records.push(e)}}},{key:"_addObject",value:function(g,I){var e=this,t={i:I,$:{}};this.keys.forEach((function(I,C){var Q=I.getFn?I.getFn(g):e.getFn(g,I.path);if(a(Q))if(s(Q))!function(){for(var g=[],I=[{nestedArrIndex:-1,value:Q}];I.length;){var F=I.pop(),B=F.nestedArrIndex,n=F.value;if(a(n))if(i(n)&&!r(n)){var U={v:n,i:B,n:e.norm.get(n)};g.push(U)}else s(n)&&n.forEach((function(g,e){I.push({nestedArrIndex:e,value:g})}))}t.$[C]=g}();else if(i(Q)&&!r(Q)){var F={v:Q,n:e.norm.get(Q)};t.$[C]=F}})),this.records.push(t)}},{key:"toJSON",value:function(){return{keys:this.keys,records:this.records}}}]),g}();function h(g,I){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},t=e.getFn,C=void 0===t?S.getFn:t,Q=e.fieldNormWeight,F=void 0===Q?S.fieldNormWeight:Q,B=new V({getFn:C,fieldNormWeight:F});return B.setKeys(g.map(Z)),B.setSources(I),B.create(),B}function D(g){var I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},e=I.errors,t=void 0===e?0:e,C=I.currentLocation,Q=void 0===C?0:C,F=I.expectedLocation,B=void 0===F?0:F,n=I.distance,U=void 0===n?S.distance:n,s=I.ignoreLocation,i=void 0===s?S.ignoreLocation:s,c=t/g.length;if(i)return c;var A=Math.abs(B-Q);return U?c+A/U:A?1:c}function p(){for(var g=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:S.minMatchCharLength,e=[],t=-1,C=-1,Q=0,F=g.length;Q<F;Q+=1){var B=g[Q];B&&-1===t?t=Q:B||-1===t||((C=Q-1)-t+1>=I&&e.push([t,C]),t=-1)}return g[Q-1]&&Q-t>=I&&e.push([t,Q-1]),e}function E(g){for(var I={},e=0,t=g.length;e<t;e+=1){var C=g.charAt(e);I[C]=(I[C]||0)|1<<t-e-1}return I}var N=function(){function g(I){var e=this,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},C=t.location,Q=void 0===C?S.location:C,F=t.threshold,B=void 0===F?S.threshold:F,U=t.distance,s=void 0===U?S.distance:U,i=t.includeMatches,c=void 0===i?S.includeMatches:i,A=t.findAllMatches,l=void 0===A?S.findAllMatches:A,a=t.minMatchCharLength,r=void 0===a?S.minMatchCharLength:a,o=t.isCaseSensitive,d=void 0===o?S.isCaseSensitive:o,u=t.ignoreLocation,y=void 0===u?S.ignoreLocation:u;if(Object(n.a)(this,g),this.options={location:Q,threshold:B,distance:s,includeMatches:c,findAllMatches:l,minMatchCharLength:r,isCaseSensitive:d,ignoreLocation:y},this.pattern=d?I:I.toLowerCase(),this.chunks=[],this.pattern.length){var b=function(g,I){e.chunks.push({pattern:g,alphabet:E(g),startIndex:I})},Z=this.pattern.length;if(Z>32){for(var m=0,x=Z%32,R=Z-x;m<R;)b(this.pattern.substr(m,32),m),m+=32;if(x){var G=Z-32;b(this.pattern.substr(G),G)}}else b(this.pattern,0)}}return Object(U.a)(g,[{key:"searchIn",value:function(g){var I=this.options,e=I.isCaseSensitive,t=I.includeMatches;if(e||(g=g.toLowerCase()),this.pattern===g){var C={isMatch:!0,score:0};return t&&(C.indices=[[0,g.length-1]]),C}var Q=this.options,B=Q.location,n=Q.distance,U=Q.threshold,s=Q.findAllMatches,i=Q.minMatchCharLength,c=Q.ignoreLocation,A=[],l=0,a=!1;this.chunks.forEach((function(I){var e=I.pattern,C=I.alphabet,Q=I.startIndex,r=function(g,I,e){var t=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},C=t.location,Q=void 0===C?S.location:C,F=t.distance,B=void 0===F?S.distance:F,n=t.threshold,U=void 0===n?S.threshold:n,s=t.findAllMatches,i=void 0===s?S.findAllMatches:s,c=t.minMatchCharLength,A=void 0===c?S.minMatchCharLength:c,l=t.includeMatches,a=void 0===l?S.includeMatches:l,r=t.ignoreLocation,o=void 0===r?S.ignoreLocation:r;if(I.length>32)throw new Error(u(32));for(var d,y=I.length,b=g.length,Z=Math.max(0,Math.min(Q,b)),m=U,x=Z,R=A>1||a,G=R?Array(b):[];(d=g.indexOf(I,x))>-1;){var L=D(I,{currentLocation:d,expectedLocation:Z,distance:B,ignoreLocation:o});if(m=Math.min(L,m),x=d+y,R)for(var V=0;V<y;)G[d+V]=1,V+=1}x=-1;for(var h=[],E=1,N=y+b,W=1<<y-1,f=0;f<y;f+=1){for(var X=0,J=N;X<J;){var v=D(I,{errors:f,currentLocation:Z+J,expectedLocation:Z,distance:B,ignoreLocation:o});v<=m?X=J:N=J,J=Math.floor((N-X)/2+X)}N=J;var k=Math.max(1,Z-J+1),H=i?b:Math.min(Z+J,b)+y,M=Array(H+2);M[H+1]=(1<<f)-1;for(var Y=H;Y>=k;Y-=1){var w=Y-1,T=e[g.charAt(w)];if(R&&(G[w]=+!!T),M[Y]=(M[Y+1]<<1|1)&T,f&&(M[Y]|=(h[Y+1]|h[Y])<<1|1|h[Y+1]),M[Y]&W&&(E=D(I,{errors:f,currentLocation:w,expectedLocation:Z,distance:B,ignoreLocation:o}))<=m){if(m=E,(x=w)<=Z)break;k=Math.max(1,2*Z-x)}}var z=D(I,{errors:f+1,currentLocation:Z,expectedLocation:Z,distance:B,ignoreLocation:o});if(z>m)break;h=M}var O={isMatch:x>=0,score:Math.max(.001,E)};if(R){var K=p(G,A);K.length?a&&(O.indices=K):O.isMatch=!1}return O}(g,e,C,{location:B+Q,distance:n,threshold:U,findAllMatches:s,minMatchCharLength:i,includeMatches:t,ignoreLocation:c}),o=r.isMatch,d=r.score,y=r.indices;o&&(a=!0),l+=d,o&&y&&(A=[].concat(Object(F.a)(A),Object(F.a)(y)))}));var r={isMatch:a,score:a?l/this.chunks.length:1};return a&&t&&(r.indices=A),r}}]),g}(),W=function(){function g(I){Object(n.a)(this,g),this.pattern=I}return Object(U.a)(g,[{key:"search",value:function(){}}],[{key:"isMultiMatch",value:function(g){return f(g,this.multiRegex)}},{key:"isSingleMatch",value:function(g){return f(g,this.singleRegex)}}]),g}();function f(g,I){var e=g.match(I);return e?e[1]:null}var X=function(g){Object(C.a)(e,g);var I=Object(Q.a)(e);function e(g){return Object(n.a)(this,e),I.call(this,g)}return Object(U.a)(e,[{key:"search",value:function(g){var I=g===this.pattern;return{isMatch:I,score:I?0:1,indices:[0,this.pattern.length-1]}}}],[{key:"type",get:function(){return"exact"}},{key:"multiRegex",get:function(){return/^="(.*)"$/}},{key:"singleRegex",get:function(){return/^=(.*)$/}}]),e}(W),J=function(g){Object(C.a)(e,g);var I=Object(Q.a)(e);function e(g){return Object(n.a)(this,e),I.call(this,g)}return Object(U.a)(e,[{key:"search",value:function(g){var I=-1===g.indexOf(this.pattern);return{isMatch:I,score:I?0:1,indices:[0,g.length-1]}}}],[{key:"type",get:function(){return"inverse-exact"}},{key:"multiRegex",get:function(){return/^!"(.*)"$/}},{key:"singleRegex",get:function(){return/^!(.*)$/}}]),e}(W),v=function(g){Object(C.a)(e,g);var I=Object(Q.a)(e);function e(g){return Object(n.a)(this,e),I.call(this,g)}return Object(U.a)(e,[{key:"search",value:function(g){var I=g.startsWith(this.pattern);return{isMatch:I,score:I?0:1,indices:[0,this.pattern.length-1]}}}],[{key:"type",get:function(){return"prefix-exact"}},{key:"multiRegex",get:function(){return/^\^"(.*)"$/}},{key:"singleRegex",get:function(){return/^\^(.*)$/}}]),e}(W),k=function(g){Object(C.a)(e,g);var I=Object(Q.a)(e);function e(g){return Object(n.a)(this,e),I.call(this,g)}return Object(U.a)(e,[{key:"search",value:function(g){var I=!g.startsWith(this.pattern);return{isMatch:I,score:I?0:1,indices:[0,g.length-1]}}}],[{key:"type",get:function(){return"inverse-prefix-exact"}},{key:"multiRegex",get:function(){return/^!\^"(.*)"$/}},{key:"singleRegex",get:function(){return/^!\^(.*)$/}}]),e}(W),H=function(g){Object(C.a)(e,g);var I=Object(Q.a)(e);function e(g){return Object(n.a)(this,e),I.call(this,g)}return Object(U.a)(e,[{key:"search",value:function(g){var I=g.endsWith(this.pattern);return{isMatch:I,score:I?0:1,indices:[g.length-this.pattern.length,g.length-1]}}}],[{key:"type",get:function(){return"suffix-exact"}},{key:"multiRegex",get:function(){return/^"(.*)"\$$/}},{key:"singleRegex",get:function(){return/^(.*)\$$/}}]),e}(W),M=function(g){Object(C.a)(e,g);var I=Object(Q.a)(e);function e(g){return Object(n.a)(this,e),I.call(this,g)}return Object(U.a)(e,[{key:"search",value:function(g){var I=!g.endsWith(this.pattern);return{isMatch:I,score:I?0:1,indices:[0,g.length-1]}}}],[{key:"type",get:function(){return"inverse-suffix-exact"}},{key:"multiRegex",get:function(){return/^!"(.*)"\$$/}},{key:"singleRegex",get:function(){return/^!(.*)\$$/}}]),e}(W),Y=function(g){Object(C.a)(e,g);var I=Object(Q.a)(e);function e(g){var t,C=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},Q=C.location,F=void 0===Q?S.location:Q,B=C.threshold,U=void 0===B?S.threshold:B,s=C.distance,i=void 0===s?S.distance:s,c=C.includeMatches,A=void 0===c?S.includeMatches:c,l=C.findAllMatches,a=void 0===l?S.findAllMatches:l,r=C.minMatchCharLength,o=void 0===r?S.minMatchCharLength:r,d=C.isCaseSensitive,u=void 0===d?S.isCaseSensitive:d,y=C.ignoreLocation,b=void 0===y?S.ignoreLocation:y;return Object(n.a)(this,e),(t=I.call(this,g))._bitapSearch=new N(g,{location:F,threshold:U,distance:i,includeMatches:A,findAllMatches:a,minMatchCharLength:o,isCaseSensitive:u,ignoreLocation:b}),t}return Object(U.a)(e,[{key:"search",value:function(g){return this._bitapSearch.searchIn(g)}}],[{key:"type",get:function(){return"fuzzy"}},{key:"multiRegex",get:function(){return/^"(.*)"$/}},{key:"singleRegex",get:function(){return/^(.*)$/}}]),e}(W),w=function(g){Object(C.a)(e,g);var I=Object(Q.a)(e);function e(g){return Object(n.a)(this,e),I.call(this,g)}return Object(U.a)(e,[{key:"search",value:function(g){for(var I,e=0,t=[],C=this.pattern.length;(I=g.indexOf(this.pattern,e))>-1;)e=I+C,t.push([I,e-1]);var Q=!!t.length;return{isMatch:Q,score:Q?0:1,indices:t}}}],[{key:"type",get:function(){return"include"}},{key:"multiRegex",get:function(){return/^'"(.*)"$/}},{key:"singleRegex",get:function(){return/^'(.*)$/}}]),e}(W),T=[X,w,v,k,M,H,J,Y],z=T.length,O=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/;function K(g){var I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return g.split("|").map((function(g){for(var e=g.trim().split(O).filter((function(g){return g&&!!g.trim()})),t=[],C=0,Q=e.length;C<Q;C+=1){for(var F=e[C],B=!1,n=-1;!B&&++n<z;){var U=T[n],s=U.isMultiMatch(F);s&&(t.push(new U(s,I)),B=!0)}if(!B)for(n=-1;++n<z;){var i=T[n],c=i.isSingleMatch(F);if(c){t.push(new i(c,I));break}}}return t}))}var j=new Set([Y.type,w.type]),P=function(){function g(I){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=e.isCaseSensitive,C=void 0===t?S.isCaseSensitive:t,Q=e.includeMatches,F=void 0===Q?S.includeMatches:Q,B=e.minMatchCharLength,U=void 0===B?S.minMatchCharLength:B,s=e.ignoreLocation,i=void 0===s?S.ignoreLocation:s,c=e.findAllMatches,A=void 0===c?S.findAllMatches:c,l=e.location,a=void 0===l?S.location:l,r=e.threshold,o=void 0===r?S.threshold:r,d=e.distance,u=void 0===d?S.distance:d;Object(n.a)(this,g),this.query=null,this.options={isCaseSensitive:C,includeMatches:F,minMatchCharLength:U,findAllMatches:A,ignoreLocation:i,location:a,threshold:o,distance:u},this.pattern=C?I:I.toLowerCase(),this.query=K(this.pattern,this.options)}return Object(U.a)(g,[{key:"searchIn",value:function(g){var I=this.query;if(!I)return{isMatch:!1,score:1};var e=this.options,t=e.includeMatches;g=e.isCaseSensitive?g:g.toLowerCase();for(var C=0,Q=[],B=0,n=0,U=I.length;n<U;n+=1){var s=I[n];Q.length=0,C=0;for(var i=0,c=s.length;i<c;i+=1){var A=s[i],l=A.search(g),a=l.isMatch,r=l.indices,o=l.score;if(!a){B=0,C=0,Q.length=0;break}if(C+=1,B+=o,t){var d=A.constructor.type;j.has(d)?Q=[].concat(Object(F.a)(Q),Object(F.a)(r)):Q.push(r)}}if(C){var u={isMatch:!0,score:B/C};return t&&(u.indices=Q),u}}return{isMatch:!1,score:1}}}],[{key:"condition",value:function(g,I){return I.useExtendedSearch}}]),g}(),_=[];function q(g,I){for(var e=0,t=_.length;e<t;e+=1){var C=_[e];if(C.condition(g,I))return new C(g,I)}return new N(g,I)}var $="$and",gg="$or",Ig="$path",eg="$val",tg=function(g){return!(!g[$]&&!g[gg])},Cg=function(g){return!!g[Ig]},Qg=function(g){return!s(g)&&l(g)&&!tg(g)},Fg=function(g){return Object(t.a)({},$,Object.keys(g).map((function(I){return Object(t.a)({},I,g[I])})))};function Bg(g,I){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},t=e.auto,C=void 0===t||t,Q=function g(e){var t=Object.keys(e),Q=Cg(e);if(!Q&&t.length>1&&!tg(e))return g(Fg(e));if(Qg(e)){var F=Q?e[Ig]:t[0],B=Q?e[eg]:e[F];if(!i(B))throw new Error(d(F));var n={keyId:x(F),pattern:B};return C&&(n.searcher=q(B,I)),n}var U={children:[],operator:t[0]};return t.forEach((function(I){var t=e[I];s(t)&&t.forEach((function(I){U.children.push(g(I))}))})),U};return tg(g)||(g=Fg(g)),Q(g)}function ng(g,I){var e=I.ignoreFieldNorm,t=void 0===e?S.ignoreFieldNorm:e;g.forEach((function(g){var I=1;g.matches.forEach((function(g){var e=g.key,C=g.norm,Q=g.score,F=e?e.weight:null;I*=Math.pow(0===Q&&F?Number.EPSILON:Q,(F||1)*(t?1:C))})),g.score=I}))}function Ug(g,I){var e=g.matches;I.matches=[],a(e)&&e.forEach((function(g){if(a(g.indices)&&g.indices.length){var e={indices:g.indices,value:g.value};g.key&&(e.key=g.key.src),g.idx>-1&&(e.refIndex=g.idx),I.matches.push(e)}}))}function sg(g,I){I.score=g.score}function ig(g,I){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},t=e.includeMatches,C=void 0===t?S.includeMatches:t,Q=e.includeScore,F=void 0===Q?S.includeScore:Q,B=[];return C&&B.push(Ug),F&&B.push(sg),g.map((function(g){var e=g.idx,t={item:I[e],refIndex:e};return B.length&&B.forEach((function(I){I(g,t)})),t}))}var cg=function(){function g(I){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=arguments.length>2?arguments[2]:void 0;Object(n.a)(this,g),this.options=Object(B.a)(Object(B.a)({},S),e),this.options.useExtendedSearch,this._keyStore=new b(this.options.keys),this.setCollection(I,t)}return Object(U.a)(g,[{key:"setCollection",value:function(g,I){if(this._docs=g,I&&!(I instanceof V))throw new Error("Incorrect 'index' type");this._myIndex=I||h(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}},{key:"add",value:function(g){a(g)&&(this._docs.push(g),this._myIndex.add(g))}},{key:"remove",value:function(){for(var g=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){return!1},I=[],e=0,t=this._docs.length;e<t;e+=1){var C=this._docs[e];g(C,e)&&(this.removeAt(e),e-=1,t-=1,I.push(C))}return I}},{key:"removeAt",value:function(g){this._docs.splice(g,1),this._myIndex.removeAt(g)}},{key:"getIndex",value:function(){return this._myIndex}},{key:"search",value:function(g){var I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},e=I.limit,t=void 0===e?-1:e,C=this.options,Q=C.includeMatches,F=C.includeScore,B=C.shouldSort,n=C.sortFn,U=C.ignoreFieldNorm,s=i(g)?i(this._docs[0])?this._searchStringList(g):this._searchObjectList(g):this._searchLogical(g);return ng(s,{ignoreFieldNorm:U}),B&&s.sort(n),c(t)&&t>-1&&(s=s.slice(0,t)),ig(s,this._docs,{includeMatches:Q,includeScore:F})}},{key:"_searchStringList",value:function(g){var I=q(g,this.options),e=this._myIndex.records,t=[];return e.forEach((function(g){var e=g.v,C=g.i,Q=g.n;if(a(e)){var F=I.searchIn(e),B=F.isMatch,n=F.score,U=F.indices;B&&t.push({item:e,idx:C,matches:[{score:n,value:e,norm:Q,indices:U}]})}})),t}},{key:"_searchLogical",value:function(g){var I=this,e=Bg(g,this.options),t=this._myIndex.records,C={},Q=[];return t.forEach((function(g){var t=g.$,B=g.i;if(a(t)){var n=function g(e,t,C){if(!e.children){var Q=e.keyId,B=e.searcher,n=I._findMatches({key:I._keyStore.get(Q),value:I._myIndex.getValueForItemAtKeyId(t,Q),searcher:B});return n&&n.length?[{idx:C,item:t,matches:n}]:[]}for(var U=[],s=0,i=e.children.length;s<i;s+=1){var c=g(e.children[s],t,C);if(c.length)U.push.apply(U,Object(F.a)(c));else if(e.operator===$)return[]}return U}(e,t,B);n.length&&(C[B]||(C[B]={idx:B,item:t,matches:[]},Q.push(C[B])),n.forEach((function(g){var I,e=g.matches;(I=C[B].matches).push.apply(I,Object(F.a)(e))})))}})),Q}},{key:"_searchObjectList",value:function(g){var I=this,e=q(g,this.options),t=this._myIndex,C=t.keys,Q=t.records,B=[];return Q.forEach((function(g){var t=g.$,Q=g.i;if(a(t)){var n=[];C.forEach((function(g,C){n.push.apply(n,Object(F.a)(I._findMatches({key:g,value:t[C],searcher:e})))})),n.length&&B.push({idx:Q,item:t,matches:n})}})),B}},{key:"_findMatches",value:function(g){var I=g.key,e=g.value,t=g.searcher;if(!a(e))return[];var C=[];if(s(e))e.forEach((function(g){var e=g.v,Q=g.i,F=g.n;if(a(e)){var B=t.searchIn(e),n=B.isMatch,U=B.score,s=B.indices;n&&C.push({score:U,key:I,value:e,idx:Q,norm:F,indices:s})}}));else{var Q=e.v,F=e.n,B=t.searchIn(Q),n=B.isMatch,U=B.score,i=B.indices;n&&C.push({score:U,key:I,value:Q,norm:F,indices:i})}return C}}]),g}();cg.version="6.6.2",cg.createIndex=h,cg.parseIndex=function(g){var I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},e=I.getFn,t=void 0===e?S.getFn:e,C=I.fieldNormWeight,Q=void 0===C?S.fieldNormWeight:C,F=g.keys,B=g.records,n=new V({getFn:t,fieldNormWeight:Q});return n.setKeys(F),n.setIndexRecords(B),n},cg.config=S,cg.parseQuery=Bg,function(){_.push.apply(_,arguments)}(P)},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M9 3L5 6.99h3V14h2V6.99h3L9 3zm7 14.01V10h-2v7.01h-3L15 21l4-3.99h-3z"}),"ImportExport");I.default=Q},function(g,I,e){"use strict";e.d(I,"a",(function(){return B}));var t=e(431),C=e(429),Q=e(300),F=e(432);function B(g){return Object(t.a)(g)||Object(C.a)(g)||Object(Q.a)(g)||Object(F.a)()}},function(g,I,e){"use strict";var t=e(0),C=t.createContext({});I.a=C},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement(C.default.Fragment,null,C.default.createElement("circle",{cx:"15.5",cy:"9.5",r:"1.5"}),C.default.createElement("circle",{cx:"8.5",cy:"9.5",r:"1.5"}),C.default.createElement("path",{d:"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm-5-6c.78 2.34 2.72 4 5 4s4.22-1.66 5-4H7z"})),"SentimentVerySatisfied");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M2.01 21L23 12 2.01 3 2 10l15 2-15 2z"}),"Send");I.default=Q},function(g,I,e){g.exports=e(1312)},function(g,I,e){"use strict";e.d(I,"a",(function(){return t}));function t(g){try{return g&&"function"===typeof g&&g.name||"<anonymous>"}catch(I){return"<anonymous>"}}},function(g,I,e){"use strict";var t=e(0),C=t.createContext({});I.a=C},,function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M21.99 4c0-1.1-.89-2-1.99-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h14l4 4-.01-18zM20 4v13.17L18.83 16H4V4h16zM6 12h12v2H6zm0-3h12v2H6zm0-3h12v2H6z"}),"CommentOutlined");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M12 22c1.1 0 2-.9 2-2h-4c0 1.1.89 2 2 2zm6-6v-5c0-3.07-1.64-5.64-4.5-6.32V4c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v.68C7.63 5.36 6 7.92 6 11v5l-2 2v1h16v-1l-2-2z"}),"Notifications");I.default=Q},function(g,I,e){"use strict";g.exports=e(1660)},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Clear");I.default=Q},function(g,I,e){"use strict";var t=e(0),C=e.n(t),Q=e(4),F=e.n(Q);function B(){for(var g=arguments.length,I=new Array(g),e=0;e<g;e++)I[e]=arguments[e];return I.reduce((function(g,I){return"string"===typeof I||I instanceof Array?g.concat(I):g}),[]).filter(Boolean).join(" ")}var n=e(580),U=e.n(n);var s=U()((function(){var g=[];return"undefined"!==typeof window&&(window.navigator.languages&&(g=g.concat(window.navigator.languages)),window.navigator.language&&g.push(window.navigator.language),window.navigator.userLanguage&&g.push(window.navigator.userLanguage),window.navigator.browserLanguage&&g.push(window.navigator.browserLanguage),window.navigator.systemLanguage&&g.push(window.navigator.systemLanguage)),g.push("en-US"),function(g){return g.map((function(g){if(!g||-1===g.indexOf("-")||g.toLowerCase()!==g)return g;var I=g.split("-");return"".concat(I[0],"-").concat(I[1].toUpperCase())}))}(g.filter((function(g,I,e){return e.indexOf(g)===I})))}));var i=U()((function(){return s()[0]})),c=i;function A(g,I,e){return function(t){var C=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e,Q=g(t)+C;return I(Q)}}function l(g){return function(I){return new Date(g(I).getTime()-1)}}function a(g){return function(I){return g.map((function(g){return g(I)}))}}function r(g){if(g instanceof Date)return g.getFullYear();if("number"===typeof g)return g;var I=parseInt(g,10);if("string"===typeof g&&!isNaN(I))return I;throw new Error("Failed to get year from date: ".concat(g,"."))}function o(g){if(g instanceof Date)return g.getMonth();throw new Error("Failed to get month from date: ".concat(g,"."))}function d(g){if(g instanceof Date)return g.getDate();throw new Error("Failed to get year from date: ".concat(g,"."))}function u(g){var I=r(g),e=I+(1-I)%100,t=new Date;return t.setFullYear(e,0,1),t.setHours(0,0,0,0),t}var y=A(r,u,-100),b=A(r,u,100),Z=l(b),m=A(r,Z,-100),x=(A(r,Z,100),a([u,Z]));function R(g){var I=r(g),e=I+(1-I)%10,t=new Date;return t.setFullYear(e,0,1),t.setHours(0,0,0,0),t}var S=A(r,R,-10),G=A(r,R,10),L=l(G),V=A(r,L,-10),h=(A(r,L,10),a([R,L]));function D(g){var I=r(g),e=new Date;return e.setFullYear(I,0,1),e.setHours(0,0,0,0),e}var p=A(r,D,-1),E=A(r,D,1),N=l(E),W=A(r,N,-1),f=(A(r,N,1),a([D,N]));function X(g,I){return function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:I,C=r(e),Q=o(e)+t,F=new Date;return F.setFullYear(C,Q,1),F.setHours(0,0,0,0),g(F)}}function J(g){var I=r(g),e=o(g),t=new Date;return t.setFullYear(I,e,1),t.setHours(0,0,0,0),t}var v=X(J,-1),k=X(J,1),H=l(k),M=X(H,-1),Y=(X(H,1),a([J,H]));function w(g,I){return function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:I,C=r(e),Q=o(e),F=d(e)+t,B=new Date;return B.setFullYear(C,Q,F),B.setHours(0,0,0,0),g(B)}}function T(g){var I=r(g),e=o(g),t=d(g),C=new Date;return C.setFullYear(I,e,t),C.setHours(0,0,0,0),C}w(T,-1);var z,O=l(w(T,1)),K=(w(O,-1),w(O,1),a([T,O]));function j(g){return d(H(g))}function P(g,I){(null==I||I>g.length)&&(I=g.length);for(var e=0,t=new Array(I);e<I;e++)t[e]=g[e];return t}function _(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}var q,$={ARABIC:"Arabic",HEBREW:"Hebrew",ISO_8601:"ISO 8601",US:"US"},gg=(_(z={},$.US,["en-CA","en-US","es-AR","es-BO","es-CL","es-CO","es-CR","es-DO","es-EC","es-GT","es-HN","es-MX","es-NI","es-PA","es-PE","es-PR","es-SV","es-VE","pt-BR"]),_(z,$.ARABIC,["ar","ar-AE","ar-BH","ar-DZ","ar-EG","ar-IQ","ar-JO","ar-KW","ar-LY","ar-OM","ar-QA","ar-SA","ar-SD","ar-SY","ar-YE","dv","dv-MV","ps","ps-AR"]),_(z,$.HEBREW,["he","he-IL"]),z),Ig=(q=Array(7),function(g){if(Array.isArray(g))return P(g)}(q)||function(g){if("undefined"!==typeof Symbol&&Symbol.iterator in Object(g))return Array.from(g)}(q)||function(g,I){if(g){if("string"===typeof g)return P(g,I);var e=Object.prototype.toString.call(g).slice(8,-1);return"Object"===e&&g.constructor&&(e=g.constructor.name),"Map"===e||"Set"===e?Array.from(g):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?P(g,I):void 0}}(q)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).map((function(g,I){return I}));function eg(g){return function(I,e){return function(g){return function(I,e){return e.toLocaleString(I||c(),g)}}(g)(I,function(g){var I=new Date(g);return new Date(I.setHours(12))}(e))}}eg({day:"numeric",month:"numeric",year:"numeric"});var tg=eg({day:"numeric",month:"long",year:"numeric"}),Cg=eg({month:"long"}),Qg=eg({month:"long",year:"numeric"}),Fg=eg({year:"numeric"}),Bg=eg({weekday:"short"}),ng=eg({weekday:"long"}),Ug=Ig[0],sg=Ig[5],ig=Ig[6];function cg(g){var I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:$.ISO_8601,e=g.getDay();switch(I){case $.ISO_8601:return(e+6)%7;case $.ARABIC:return(e+1)%7;case $.HEBREW:case $.US:return e;default:throw new Error("Unsupported calendar type.")}}function Ag(g){var I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:$.ISO_8601,e=r(g),t=o(g),C=g.getDate()-cg(g,I);return new Date(e,t,C)}function lg(g,I){switch(g){case"century":return u(I);case"decade":return R(I);case"year":return D(I);case"month":return J(I);case"day":return T(I);default:throw new Error("Invalid rangeType: ".concat(g))}}function ag(g,I){switch(g){case"century":return b(I);case"decade":return G(I);case"year":return E(I);case"month":return k(I);default:throw new Error("Invalid rangeType: ".concat(g))}}function rg(g,I){switch(g){case"century":return Z(I);case"decade":return L(I);case"year":return N(I);case"month":return H(I);case"day":return O(I);default:throw new Error("Invalid rangeType: ".concat(g))}}function og(g,I){switch(g){case"century":return x(I);case"decade":return h(I);case"year":return f(I);case"month":return Y(I);case"day":return K(I);default:throw new Error("Invalid rangeType: ".concat(g))}}function dg(g,I,e){var t=[I,e].sort((function(g,I){return g-I}));return[lg(g,t[0]),rg(g,t[1])]}function ug(g){var I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Fg,e=arguments.length>2?arguments[2]:void 0;return e.map((function(e){return I(g,e)})).join(" \u2013 ")}function yg(g,I,e){return ug(g,I,h(e))}function bg(g){var I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:$.ISO_8601,e=g.getDay();switch(I){case $.ARABIC:case $.HEBREW:return e===sg||e===ig;case $.ISO_8601:case $.US:return e===ig||e===Ug;default:throw new Error("Unsupported calendar type.")}}function Zg(g){return(Zg="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"===typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g})(g)}var mg=Object.values($),xg=["century","decade","year","month"],Rg=F.a.oneOf(mg),Sg=F.a.oneOfType([F.a.string,F.a.arrayOf(F.a.string)]),Gg=function(g,I,e){var t=g[I];if(!t)return null;if(!(t instanceof Date))return new Error("Invalid prop `".concat(I,"` of type `").concat(Zg(t),"` supplied to `").concat(e,"`, expected instance of `Date`."));var C=g.maxDate;return C&&t>C?new Error("Invalid prop `".concat(I,"` of type `").concat(Zg(t),"` supplied to `").concat(e,"`, minDate cannot be larger than maxDate.")):null},Lg=function(g,I,e){var t=g[I];if(!t)return null;if(!(t instanceof Date))return new Error("Invalid prop `".concat(I,"` of type `").concat(Zg(t),"` supplied to `").concat(e,"`, expected instance of `Date`."));var C=g.minDate;return C&&t<C?new Error("Invalid prop `".concat(I,"` of type `").concat(Zg(t),"` supplied to `").concat(e,"`, maxDate cannot be smaller than minDate.")):null},Vg=F.a.oneOfType([F.a.func,F.a.shape({current:F.a.any})]),hg=F.a.oneOfType([F.a.instanceOf(Date),F.a.arrayOf(F.a.instanceOf(Date))]),Dg=F.a.arrayOf(F.a.oneOf(xg)),pg=function(g,I,e){var t=g[I],C=g.views||xg;return void 0!==t&&-1===C.indexOf(t)?new Error("Invalid prop `".concat(I,"` of value `").concat(t,"` supplied to `").concat(e,"`, expected one of [").concat(C.map((function(g){return'"'.concat(g,'"')})).join(", "),"].")):null};pg.isRequired=function(g,I,e){var t=g[I];return t?pg(g,I,e):new Error("The prop `".concat(I,"` is marked as required in `").concat(e,"`, but its value is `").concat(t,"`."))};var Eg={activeStartDate:F.a.instanceOf(Date).isRequired,hover:F.a.instanceOf(Date),locale:F.a.string,maxDate:Lg,minDate:Gg,onClick:F.a.func,onMouseOver:F.a.func,tileClassName:F.a.oneOfType([F.a.func,Sg]),tileContent:F.a.oneOfType([F.a.func,F.a.node]),value:hg,valueType:F.a.string},Ng={activeStartDate:F.a.instanceOf(Date).isRequired,classes:F.a.arrayOf(F.a.string).isRequired,date:F.a.instanceOf(Date).isRequired,locale:F.a.string,maxDate:Lg,minDate:Gg,onClick:F.a.func,onMouseOver:F.a.func,style:F.a.objectOf(F.a.oneOfType([F.a.string,F.a.number])),tileClassName:F.a.oneOfType([F.a.func,Sg]),tileContent:F.a.oneOfType([F.a.func,F.a.node]),tileDisabled:F.a.func},Wg="react-calendar__navigation";function fg(g){var I=g.activeStartDate,e=g.drillUp,t=g.formatMonthYear,Q=void 0===t?Qg:t,F=g.formatYear,B=void 0===F?Fg:F,n=g.locale,U=g.maxDate,s=g.minDate,c=g.navigationAriaLabel,A=void 0===c?"":c,l=g.navigationLabel,a=g.next2AriaLabel,r=void 0===a?"":a,o=g.next2Label,d=void 0===o?"\xbb":o,u=g.nextAriaLabel,b=void 0===u?"":u,Z=g.nextLabel,R=void 0===Z?"\u203a":Z,L=g.prev2AriaLabel,h=void 0===L?"":L,D=g.prev2Label,N=void 0===D?"\xab":D,f=g.prevAriaLabel,X=void 0===f?"":f,J=g.prevLabel,H=void 0===J?"\u2039":J,Y=g.setActiveStartDate,w=g.showDoubleView,T=g.view,z=g.views.indexOf(T)>0,O="century"!==T,K=function(g,I){switch(g){case"century":return y(I);case"decade":return S(I);case"year":return p(I);case"month":return v(I);default:throw new Error("Invalid rangeType: ".concat(g))}}(T,I),j=O&&function(g,I){switch(g){case"decade":return S(I,-100);case"year":return p(I,-10);case"month":return v(I,-12);default:throw new Error("Invalid rangeType: ".concat(g))}}(T,I),P=ag(T,I),_=O&&function(g,I){switch(g){case"decade":return G(I,100);case"year":return E(I,10);case"month":return k(I,12);default:throw new Error("Invalid rangeType: ".concat(g))}}(T,I),q=function(){if(K.getFullYear()<1e3)return!0;var g=function(g,I){switch(g){case"century":return m(I);case"decade":return V(I);case"year":return W(I);case"month":return M(I);default:throw new Error("Invalid rangeType: ".concat(g))}}(T,I);return s&&s>=g}(),$=O&&function(){if(j.getFullYear()<1e3)return!0;var g=function(g,I){switch(g){case"decade":return V(I,-100);case"year":return W(I,-10);case"month":return M(I,-12);default:throw new Error("Invalid rangeType: ".concat(g))}}(T,I);return s&&s>=g}(),gg=U&&U<=P,Ig=O&&U&&U<=_;function eg(g){var I=function(){switch(T){case"century":return function(g,I,e){return ug(g,I,x(e))}(n,B,g);case"decade":return yg(n,B,g);case"year":return B(n,g);case"month":return Q(n,g);default:throw new Error("Invalid view: ".concat(T,"."))}}();return l?l({date:g,label:I,locale:n||i(),view:T}):I}return C.a.createElement("div",{className:Wg,style:{display:"flex"}},null!==N&&O&&C.a.createElement("button",{"aria-label":h,className:"".concat(Wg,"__arrow ").concat(Wg,"__prev2-button"),disabled:$,onClick:function(){Y(j)},type:"button"},N),null!==H&&C.a.createElement("button",{"aria-label":X,className:"".concat(Wg,"__arrow ").concat(Wg,"__prev-button"),disabled:q,onClick:function(){Y(K)},type:"button"},H),function(){var g="".concat(Wg,"__label");return C.a.createElement("button",{"aria-label":A,className:g,disabled:!z,onClick:e,style:{flexGrow:1},type:"button"},C.a.createElement("span",{className:"".concat(g,"__labelText ").concat(g,"__labelText--from")},eg(I)),w&&C.a.createElement(C.a.Fragment,null,C.a.createElement("span",{className:"".concat(g,"__divider")}," ","\u2013"," "),C.a.createElement("span",{className:"".concat(g,"__labelText ").concat(g,"__labelText--to")},eg(P))))}(),null!==R&&C.a.createElement("button",{"aria-label":b,className:"".concat(Wg,"__arrow ").concat(Wg,"__next-button"),disabled:gg,onClick:function(){Y(P)},type:"button"},R),null!==d&&O&&C.a.createElement("button",{"aria-label":r,className:"".concat(Wg,"__arrow ").concat(Wg,"__next2-button"),disabled:Ig,onClick:function(){Y(_)},type:"button"},d))}function Xg(){return(Xg=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}function Jg(g,I){var e=Object.keys(g);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(g);I&&(t=t.filter((function(I){return Object.getOwnPropertyDescriptor(g,I).enumerable}))),e.push.apply(e,t)}return e}function vg(g){for(var I=1;I<arguments.length;I++){var e=null!=arguments[I]?arguments[I]:{};I%2?Jg(Object(e),!0).forEach((function(I){kg(g,I,e[I])})):Object.getOwnPropertyDescriptors?Object.defineProperties(g,Object.getOwnPropertyDescriptors(e)):Jg(Object(e)).forEach((function(I){Object.defineProperty(g,I,Object.getOwnPropertyDescriptor(e,I))}))}return g}function kg(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}function Hg(g,I){if(null==g)return{};var e,t,C=function(g,I){if(null==g)return{};var e,t,C={},Q=Object.keys(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||(C[e]=g[e]);return C}(g,I);if(Object.getOwnPropertySymbols){var Q=Object.getOwnPropertySymbols(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||Object.prototype.propertyIsEnumerable.call(g,e)&&(C[e]=g[e])}return C}function Mg(g){return"".concat(g,"%")}function Yg(g){var I=g.children,e=g.className,t=g.direction,Q=g.count,F=g.offset,B=g.style,n=g.wrap,U=Hg(g,["children","className","direction","count","offset","style","wrap"]);return C.a.createElement("div",Xg({className:e,style:vg({display:"flex",flexDirection:t,flexWrap:n?"wrap":"no-wrap"},B)},U),C.a.Children.map(I,(function(g,I){return C.a.cloneElement(g,vg(vg({},g.props),{},{style:{flexBasis:Mg(100/Q),maxWidth:Mg(100/Q),overflow:"hidden",marginLeft:F&&0===I?Mg(100*F/Q):null}}))})))}function wg(g){return function(g){if(Array.isArray(g))return Tg(g)}(g)||function(g){if("undefined"!==typeof Symbol&&Symbol.iterator in Object(g))return Array.from(g)}(g)||function(g,I){if(!g)return;if("string"===typeof g)return Tg(g,I);var e=Object.prototype.toString.call(g).slice(8,-1);"Object"===e&&g.constructor&&(e=g.constructor.name);if("Map"===e||"Set"===e)return Array.from(g);if("Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e))return Tg(g,I)}(g)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Tg(g,I){(null==I||I>g.length)&&(I=g.length);for(var e=0,t=new Array(I);e<I;e++)t[e]=g[e];return t}function zg(g,I){return I[0]<=g&&I[1]>=g}function Og(g,I){return g[0]<=I[0]&&g[1]>=I[1]}function Kg(g,I){return zg(g[0],I)||zg(g[1],I)}function jg(g,I,e){var t=[];if(Kg(I,g)){t.push(e);var C=zg(g[0],I),Q=zg(g[1],I);C&&t.push("".concat(e,"Start")),Q&&t.push("".concat(e,"End")),C&&Q&&t.push("".concat(e,"BothEnds"))}return t}function Pg(){var g=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},I=g.value,e=g.valueType,t=g.date,C=g.dateType,Q=g.hover,F="react-calendar__tile",B=[F];if(!t)return B;if(!(t instanceof Array)&&!C)throw new Error("getTileClasses(): Unable to get tile activity classes because one or more required arguments were not passed.");var n=new Date,U=t instanceof Array?t:og(C,t);if(zg(n,U)&&B.push("".concat(F,"--now")),!I)return B;if(!(I instanceof Array)&&!e)throw new Error("getTileClasses(): Unable to get tile activity classes because one or more required arguments were not passed.");var s=I instanceof Array?I:og(e,I);Og(s,U)?B.push("".concat(F,"--active")):Kg(s,U)&&B.push("".concat(F,"--hasActive"));var i=jg(s,U,"".concat(F,"--range"));if(B.push.apply(B,wg(i)),Q){var c=Q>s[1]?[s[1],Q]:[Q,s[0]],A=jg(c,U,"".concat(F,"--hover"));B.push.apply(B,wg(A))}return B}function _g(g,I){var e=Object.keys(g);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(g);I&&(t=t.filter((function(I){return Object.getOwnPropertyDescriptor(g,I).enumerable}))),e.push.apply(e,t)}return e}function qg(g){for(var I=1;I<arguments.length;I++){var e=null!=arguments[I]?arguments[I]:{};I%2?_g(Object(e),!0).forEach((function(I){$g(g,I,e[I])})):Object.getOwnPropertyDescriptors?Object.defineProperties(g,Object.getOwnPropertyDescriptors(e)):_g(Object(e)).forEach((function(I){Object.defineProperty(g,I,Object.getOwnPropertyDescriptor(e,I))}))}return g}function $g(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}function gI(){return(gI=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}function II(g,I){if(null==g)return{};var e,t,C=function(g,I){if(null==g)return{};var e,t,C={},Q=Object.keys(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||(C[e]=g[e]);return C}(g,I);if(Object.getOwnPropertySymbols){var Q=Object.getOwnPropertySymbols(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||Object.prototype.propertyIsEnumerable.call(g,e)&&(C[e]=g[e])}return C}function eI(g){for(var I=g.className,e=g.count,t=void 0===e?3:e,Q=g.dateTransform,F=g.dateType,B=g.end,n=g.hover,U=g.offset,s=g.start,i=g.step,c=void 0===i?1:i,A=g.tile,l=g.value,a=g.valueType,r=II(g,["className","count","dateTransform","dateType","end","hover","offset","start","step","tile","value","valueType"]),o=[],d=s;d<=B;d+=c){var u=Q(d);o.push(C.a.createElement(A,gI({key:u.getTime(),classes:Pg({value:l,valueType:a,date:u,dateType:F,hover:n}),date:u,point:d},r)))}return C.a.createElement(Yg,{className:I,count:t,offset:U,wrap:!0},o)}function tI(g,I){var e=Object.keys(g);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(g);I&&(t=t.filter((function(I){return Object.getOwnPropertyDescriptor(g,I).enumerable}))),e.push.apply(e,t)}return e}function CI(g){for(var I=1;I<arguments.length;I++){var e=null!=arguments[I]?arguments[I]:{};I%2?tI(Object(e),!0).forEach((function(I){AI(g,I,e[I])})):Object.getOwnPropertyDescriptors?Object.defineProperties(g,Object.getOwnPropertyDescriptors(e)):tI(Object(e)).forEach((function(I){Object.defineProperty(g,I,Object.getOwnPropertyDescriptor(e,I))}))}return g}function QI(g){return(QI="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"===typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g})(g)}function FI(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}function BI(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}function nI(g,I){return(nI=Object.setPrototypeOf||function(g,I){return g.__proto__=I,g})(g,I)}function UI(g){var I=function(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(g){return!1}}();return function(){var e,t=cI(g);if(I){var C=cI(this).constructor;e=Reflect.construct(t,arguments,C)}else e=t.apply(this,arguments);return sI(this,e)}}function sI(g,I){return!I||"object"!==QI(I)&&"function"!==typeof I?iI(g):I}function iI(g){if(void 0===g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return g}function cI(g){return(cI=Object.setPrototypeOf?Object.getPrototypeOf:function(g){return g.__proto__||Object.getPrototypeOf(g)})(g)}function AI(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}function lI(g,I){var e=g.activeStartDate,t=g.date,C=g.view;return"function"===typeof I?I({activeStartDate:e,date:t,view:C}):I}fg.propTypes={activeStartDate:F.a.instanceOf(Date).isRequired,drillUp:F.a.func.isRequired,formatMonthYear:F.a.func,formatYear:F.a.func,locale:F.a.string,maxDate:F.a.instanceOf(Date),minDate:F.a.instanceOf(Date),navigationAriaLabel:F.a.string,navigationLabel:F.a.func,next2AriaLabel:F.a.string,next2Label:F.a.node,nextAriaLabel:F.a.string,nextLabel:F.a.node,prev2AriaLabel:F.a.string,prev2Label:F.a.node,prevAriaLabel:F.a.string,prevLabel:F.a.node,setActiveStartDate:F.a.func.isRequired,showDoubleView:F.a.bool,view:pg.isRequired,views:Dg.isRequired},Yg.propTypes={children:F.a.node,className:F.a.string,count:F.a.number.isRequired,direction:F.a.string,offset:F.a.number,style:F.a.objectOf(F.a.oneOfType([F.a.string,F.a.number])),wrap:F.a.bool},eI.propTypes=qg(qg({},Eg),{},{activeStartDate:F.a.instanceOf(Date),count:F.a.number,dateTransform:F.a.func.isRequired,offset:F.a.number,step:F.a.number,tile:F.a.func.isRequired});var aI=function(g){!function(g,I){if("function"!==typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function");g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,writable:!0,configurable:!0}}),I&&nI(g,I)}(F,g);var I,e,t,Q=UI(F);function F(){var g;FI(this,F);for(var I=arguments.length,e=new Array(I),t=0;t<I;t++)e[t]=arguments[t];return AI(iI(g=Q.call.apply(Q,[this].concat(e))),"state",{}),g}return I=F,t=[{key:"getDerivedStateFromProps",value:function(g,I){var e=g.tileClassName,t=g.tileContent,C={};return e!==I.tileClassNameProps&&(C.tileClassName=lI(g,e),C.tileClassNameProps=e),t!==I.tileContentProps&&(C.tileContent=lI(g,t),C.tileContentProps=t),C}}],(e=[{key:"render",value:function(){var g=this.props,I=g.activeStartDate,e=g.children,t=g.classes,Q=g.date,F=g.formatAbbr,n=g.locale,U=g.maxDate,s=g.maxDateTransform,i=g.minDate,c=g.minDateTransform,A=g.onClick,l=g.onMouseOver,a=g.style,r=g.tileDisabled,o=g.view,d=this.state,u=d.tileClassName,y=d.tileContent;return C.a.createElement("button",{className:B(t,u),disabled:i&&c(i)>Q||U&&s(U)<Q||r&&r({activeStartDate:I,date:Q,view:o}),onClick:A&&function(g){return A(Q,g)},onFocus:l&&function(){return l(Q)},onMouseOver:l&&function(){return l(Q)},style:a,type:"button"},F?C.a.createElement("abbr",{"aria-label":F(n,Q)},e):e,y)}}])&&BI(I.prototype,e),t&&BI(I,t),F}(t.Component);function rI(g,I){var e=Object.keys(g);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(g);I&&(t=t.filter((function(I){return Object.getOwnPropertyDescriptor(g,I).enumerable}))),e.push.apply(e,t)}return e}function oI(g){for(var I=1;I<arguments.length;I++){var e=null!=arguments[I]?arguments[I]:{};I%2?rI(Object(e),!0).forEach((function(I){dI(g,I,e[I])})):Object.getOwnPropertyDescriptors?Object.defineProperties(g,Object.getOwnPropertyDescriptors(e)):rI(Object(e)).forEach((function(I){Object.defineProperty(g,I,Object.getOwnPropertyDescriptor(e,I))}))}return g}function dI(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}function uI(){return(uI=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}function yI(g,I){if(null==g)return{};var e,t,C=function(g,I){if(null==g)return{};var e,t,C={},Q=Object.keys(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||(C[e]=g[e]);return C}(g,I);if(Object.getOwnPropertySymbols){var Q=Object.getOwnPropertySymbols(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||Object.prototype.propertyIsEnumerable.call(g,e)&&(C[e]=g[e])}return C}aI.propTypes=CI(CI({},Ng),{},{children:F.a.node.isRequired,formatAbbr:F.a.func,maxDateTransform:F.a.func.isRequired,minDateTransform:F.a.func.isRequired});function bI(g){var I=g.classes,e=g.formatYear,t=void 0===e?Fg:e,Q=yI(g,["classes","formatYear"]),F=Q.date,B=Q.locale;return C.a.createElement(aI,uI({},Q,{classes:[].concat(I,"react-calendar__century-view__decades__decade"),maxDateTransform:L,minDateTransform:R,view:"century"}),yg(B,t,F))}function ZI(g,I){var e=Object.keys(g);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(g);I&&(t=t.filter((function(I){return Object.getOwnPropertyDescriptor(g,I).enumerable}))),e.push.apply(e,t)}return e}function mI(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}function xI(){return(xI=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}function RI(g){var I=g.activeStartDate,e=r(u(I)),t=e+99;return C.a.createElement(eI,xI({},g,{className:"react-calendar__century-view__decades",dateTransform:R,dateType:"decade",end:t,start:e,step:10,tile:bI}))}function SI(g){return C.a.createElement("div",{className:"react-calendar__century-view"},C.a.createElement(RI,g))}function GI(g,I){var e=Object.keys(g);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(g);I&&(t=t.filter((function(I){return Object.getOwnPropertyDescriptor(g,I).enumerable}))),e.push.apply(e,t)}return e}function LI(g){for(var I=1;I<arguments.length;I++){var e=null!=arguments[I]?arguments[I]:{};I%2?GI(Object(e),!0).forEach((function(I){VI(g,I,e[I])})):Object.getOwnPropertyDescriptors?Object.defineProperties(g,Object.getOwnPropertyDescriptors(e)):GI(Object(e)).forEach((function(I){Object.defineProperty(g,I,Object.getOwnPropertyDescriptor(e,I))}))}return g}function VI(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}function hI(){return(hI=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}function DI(g,I){if(null==g)return{};var e,t,C=function(g,I){if(null==g)return{};var e,t,C={},Q=Object.keys(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||(C[e]=g[e]);return C}(g,I);if(Object.getOwnPropertySymbols){var Q=Object.getOwnPropertySymbols(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||Object.prototype.propertyIsEnumerable.call(g,e)&&(C[e]=g[e])}return C}bI.propTypes=oI(oI({},Ng),{},{formatYear:F.a.func}),RI.propTypes=function(g){for(var I=1;I<arguments.length;I++){var e=null!=arguments[I]?arguments[I]:{};I%2?ZI(Object(e),!0).forEach((function(I){mI(g,I,e[I])})):Object.getOwnPropertyDescriptors?Object.defineProperties(g,Object.getOwnPropertyDescriptors(e)):ZI(Object(e)).forEach((function(I){Object.defineProperty(g,I,Object.getOwnPropertyDescriptor(e,I))}))}return g}({},Eg);function pI(g){var I=g.classes,e=g.formatYear,t=void 0===e?Fg:e,Q=DI(g,["classes","formatYear"]),F=Q.date,B=Q.locale;return C.a.createElement(aI,hI({},Q,{classes:[].concat(I,"react-calendar__decade-view__years__year"),maxDateTransform:N,minDateTransform:D,view:"decade"}),t(B,F))}function EI(g,I){var e=Object.keys(g);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(g);I&&(t=t.filter((function(I){return Object.getOwnPropertyDescriptor(g,I).enumerable}))),e.push.apply(e,t)}return e}function NI(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}function WI(){return(WI=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}function fI(g){var I=g.activeStartDate,e=r(R(I)),t=e+9;return C.a.createElement(eI,WI({},g,{className:"react-calendar__decade-view__years",dateTransform:function(g){return new Date(g,0,1)},dateType:"year",end:t,start:e,tile:pI}))}function XI(g){return C.a.createElement("div",{className:"react-calendar__decade-view"},C.a.createElement(fI,g))}function JI(g,I){var e=Object.keys(g);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(g);I&&(t=t.filter((function(I){return Object.getOwnPropertyDescriptor(g,I).enumerable}))),e.push.apply(e,t)}return e}function vI(g){for(var I=1;I<arguments.length;I++){var e=null!=arguments[I]?arguments[I]:{};I%2?JI(Object(e),!0).forEach((function(I){kI(g,I,e[I])})):Object.getOwnPropertyDescriptors?Object.defineProperties(g,Object.getOwnPropertyDescriptors(e)):JI(Object(e)).forEach((function(I){Object.defineProperty(g,I,Object.getOwnPropertyDescriptor(e,I))}))}return g}function kI(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}function HI(){return(HI=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}function MI(g,I){if(null==g)return{};var e,t,C=function(g,I){if(null==g)return{};var e,t,C={},Q=Object.keys(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||(C[e]=g[e]);return C}(g,I);if(Object.getOwnPropertySymbols){var Q=Object.getOwnPropertySymbols(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||Object.prototype.propertyIsEnumerable.call(g,e)&&(C[e]=g[e])}return C}pI.propTypes=LI(LI({},Ng),{},{formatYear:F.a.func}),fI.propTypes=function(g){for(var I=1;I<arguments.length;I++){var e=null!=arguments[I]?arguments[I]:{};I%2?EI(Object(e),!0).forEach((function(I){NI(g,I,e[I])})):Object.getOwnPropertyDescriptors?Object.defineProperties(g,Object.getOwnPropertyDescriptors(e)):EI(Object(e)).forEach((function(I){Object.defineProperty(g,I,Object.getOwnPropertyDescriptor(e,I))}))}return g}({},Eg);function YI(g){var I=g.classes,e=g.formatMonth,t=void 0===e?Cg:e,Q=g.formatMonthYear,F=void 0===Q?Qg:Q,B=MI(g,["classes","formatMonth","formatMonthYear"]),n=B.date,U=B.locale;return C.a.createElement(aI,HI({},B,{classes:[].concat(I,"react-calendar__year-view__months__month"),formatAbbr:F,maxDateTransform:H,minDateTransform:J,view:"year"}),t(U,n))}function wI(g,I){var e=Object.keys(g);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(g);I&&(t=t.filter((function(I){return Object.getOwnPropertyDescriptor(g,I).enumerable}))),e.push.apply(e,t)}return e}function TI(g){for(var I=1;I<arguments.length;I++){var e=null!=arguments[I]?arguments[I]:{};I%2?wI(Object(e),!0).forEach((function(I){zI(g,I,e[I])})):Object.getOwnPropertyDescriptors?Object.defineProperties(g,Object.getOwnPropertyDescriptors(e)):wI(Object(e)).forEach((function(I){Object.defineProperty(g,I,Object.getOwnPropertyDescriptor(e,I))}))}return g}function zI(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}function OI(){return(OI=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}function KI(g){var I=r(g.activeStartDate);return C.a.createElement(eI,OI({},g,{className:"react-calendar__year-view__months",dateTransform:function(g){return new Date(I,g,1)},dateType:"month",end:11,start:0,tile:YI}))}function jI(g){return C.a.createElement("div",{className:"react-calendar__year-view"},C.a.createElement(KI,g))}function PI(g,I){var e=Object.keys(g);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(g);I&&(t=t.filter((function(I){return Object.getOwnPropertyDescriptor(g,I).enumerable}))),e.push.apply(e,t)}return e}function _I(g){for(var I=1;I<arguments.length;I++){var e=null!=arguments[I]?arguments[I]:{};I%2?PI(Object(e),!0).forEach((function(I){qI(g,I,e[I])})):Object.getOwnPropertyDescriptors?Object.defineProperties(g,Object.getOwnPropertyDescriptors(e)):PI(Object(e)).forEach((function(I){Object.defineProperty(g,I,Object.getOwnPropertyDescriptor(e,I))}))}return g}function qI(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}function $I(){return($I=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}function ge(g,I){if(null==g)return{};var e,t,C=function(g,I){if(null==g)return{};var e,t,C={},Q=Object.keys(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||(C[e]=g[e]);return C}(g,I);if(Object.getOwnPropertySymbols){var Q=Object.getOwnPropertySymbols(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||Object.prototype.propertyIsEnumerable.call(g,e)&&(C[e]=g[e])}return C}YI.propTypes=vI(vI({},Ng),{},{formatMonth:F.a.func,formatMonthYear:F.a.func}),KI.propTypes=TI(TI({},Eg),{},{locale:F.a.string});var Ie="react-calendar__month-view__days__day";function ee(g){var I=g.formatLongDate,e=void 0===I?tg:I,t=g.calendarType,Q=g.classes,F=g.currentMonthIndex,B=ge(g,["formatLongDate","calendarType","classes","currentMonthIndex"]),n=B.date;return C.a.createElement(aI,$I({},B,{classes:[].concat(Q,Ie,bg(n,t)?"".concat(Ie,"--weekend"):null,n.getMonth()!==F?"".concat(Ie,"--neighboringMonth"):null),formatAbbr:e,maxDateTransform:O,minDateTransform:T,view:"month"}),d(n))}function te(g,I){var e=Object.keys(g);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(g);I&&(t=t.filter((function(I){return Object.getOwnPropertyDescriptor(g,I).enumerable}))),e.push.apply(e,t)}return e}function Ce(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}function Qe(){return(Qe=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}function Fe(g,I){if(null==g)return{};var e,t,C=function(g,I){if(null==g)return{};var e,t,C={},Q=Object.keys(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||(C[e]=g[e]);return C}(g,I);if(Object.getOwnPropertySymbols){var Q=Object.getOwnPropertySymbols(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||Object.prototype.propertyIsEnumerable.call(g,e)&&(C[e]=g[e])}return C}function Be(g){var I=g.activeStartDate,e=g.calendarType,t=g.showFixedNumberOfWeeks,Q=g.showNeighboringMonth,F=Fe(g,["showFixedNumberOfWeeks","showNeighboringMonth"]),B=r(I),n=o(I),U=t||Q,s=cg(I,e),i=U?0:s,c=1+(U?-s:0),A=function(){if(t)return c+42-1;var g=j(I);if(Q){var C=new Date;return C.setFullYear(B,n,g),C.setHours(0,0,0,0),g+(7-cg(C,e)-1)}return g}();return C.a.createElement(eI,Qe({},F,{className:"react-calendar__month-view__days",count:7,currentMonthIndex:n,dateTransform:function(g){var I=new Date;return I.setFullYear(B,n,g),I.setHours(0,0,0,0),I},dateType:"day",end:A,offset:i,start:c,tile:ee}))}ee.propTypes=_I(_I({},Ng),{},{currentMonthIndex:F.a.number.isRequired,formatLongDate:F.a.func}),Be.propTypes=function(g){for(var I=1;I<arguments.length;I++){var e=null!=arguments[I]?arguments[I]:{};I%2?te(Object(e),!0).forEach((function(I){Ce(g,I,e[I])})):Object.getOwnPropertyDescriptors?Object.defineProperties(g,Object.getOwnPropertyDescriptors(e)):te(Object(e)).forEach((function(I){Object.defineProperty(g,I,Object.getOwnPropertyDescriptor(e,I))}))}return g}({calendarType:Rg.isRequired,showFixedNumberOfWeeks:F.a.bool,showNeighboringMonth:F.a.bool},Eg);function ne(g){for(var I=g.calendarType,e=g.formatShortWeekday,t=void 0===e?Bg:e,Q=g.locale,F=g.onMouseLeave,B=J(new Date),n=r(B),U=o(B),s=[],i=1;i<=7;i+=1){var c=new Date(n,U,i-cg(B,I)),A=ng(Q,c);s.push(C.a.createElement("div",{key:i,className:"".concat("react-calendar__month-view__weekdays","__weekday")},C.a.createElement("abbr",{"aria-label":A,title:A},t(Q,c).replace(".",""))))}return C.a.createElement(Yg,{className:"react-calendar__month-view__weekdays",count:7,onFocus:F,onMouseOver:F},s)}function Ue(){return(Ue=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}function se(g){var I=g.date,e=g.onClickWeekNumber,t=g.weekNumber,Q={className:"react-calendar__tile",style:{flexGrow:1}},F=C.a.createElement("span",null,t);return e?C.a.createElement("button",Ue({},Q,{onClick:function(g){return e(t,I,g)},type:"button"}),F):C.a.createElement("div",Q,F)}function ie(g){var I=g.activeStartDate,e=g.calendarType,t=g.onClickWeekNumber,Q=g.onMouseLeave,F=g.showFixedNumberOfWeeks,B=function(){if(F)return 6;var g=j(I)-(7-cg(I,e));return 1+Math.ceil(g/7)}(),n=function(){for(var g=r(I),t=o(I),C=d(I),Q=[],F=0;F<B;F+=1)Q.push(Ag(new Date(g,t,C+7*F),e));return Q}(),U=n.map((function(g){return function(g){var I,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:$.ISO_8601,t=e===$.US?$.US:$.ISO_8601,C=Ag(g,t),Q=r(g)+1;do{I=Ag(new Date(Q,0,t===$.ISO_8601?4:1),t),Q-=1}while(g-I<0);return Math.round((C-I)/6048e5)+1}(g,e)}));return C.a.createElement(Yg,{className:"react-calendar__month-view__weekNumbers",count:B,direction:"column",onFocus:Q,onMouseOver:Q,style:{flexBasis:"calc(100% * (1 / 8)",flexShrink:0}},U.map((function(g,I){return C.a.createElement(se,{key:g,date:n[I],onClickWeekNumber:t,weekNumber:g})})))}function ce(){return(ce=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}function Ae(g,I){if(null==g)return{};var e,t,C=function(g,I){if(null==g)return{};var e,t,C={},Q=Object.keys(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||(C[e]=g[e]);return C}(g,I);if(Object.getOwnPropertySymbols){var Q=Object.getOwnPropertySymbols(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||Object.prototype.propertyIsEnumerable.call(g,e)&&(C[e]=g[e])}return C}function le(g){var I=g.activeStartDate,e=g.locale,t=g.onMouseLeave,Q=g.showFixedNumberOfWeeks,F=g.calendarType,B=void 0===F?function(g){return Object.keys(gg).find((function(I){return gg[I].includes(g)}))||$.ISO_8601}(e):F,n=g.formatShortWeekday,U=g.onClickWeekNumber,s=g.showWeekNumbers,i=Ae(g,["calendarType","formatShortWeekday","onClickWeekNumber","showWeekNumbers"]);var c="react-calendar__month-view";return C.a.createElement("div",{className:[c,s?"".concat(c,"--weekNumbers"):""].join(" ")},C.a.createElement("div",{style:{display:"flex",alignItems:"flex-end"}},s?C.a.createElement(ie,{activeStartDate:I,calendarType:B,onClickWeekNumber:U,onMouseLeave:t,showFixedNumberOfWeeks:Q}):null,C.a.createElement("div",{style:{flexGrow:1,width:"100%"}},C.a.createElement(ne,{calendarType:B,formatShortWeekday:n,locale:e,onMouseLeave:t}),C.a.createElement(Be,ce({calendarType:B},i)))))}function ae(){return(ae=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}function re(g){return(re="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"===typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g})(g)}function oe(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}function de(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}function ue(g,I){return(ue=Object.setPrototypeOf||function(g,I){return g.__proto__=I,g})(g,I)}function ye(g){var I=function(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(g){return!1}}();return function(){var e,t=me(g);if(I){var C=me(this).constructor;e=Reflect.construct(t,arguments,C)}else e=t.apply(this,arguments);return be(this,e)}}function be(g,I){return!I||"object"!==re(I)&&"function"!==typeof I?Ze(g):I}function Ze(g){if(void 0===g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return g}function me(g){return(me=Object.setPrototypeOf?Object.getPrototypeOf:function(g){return g.__proto__||Object.getPrototypeOf(g)})(g)}function xe(g,I){var e=Object.keys(g);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(g);I&&(t=t.filter((function(I){return Object.getOwnPropertyDescriptor(g,I).enumerable}))),e.push.apply(e,t)}return e}function Re(g){for(var I=1;I<arguments.length;I++){var e=null!=arguments[I]?arguments[I]:{};I%2?xe(Object(e),!0).forEach((function(I){Se(g,I,e[I])})):Object.getOwnPropertyDescriptors?Object.defineProperties(g,Object.getOwnPropertyDescriptors(e)):xe(Object(e)).forEach((function(I){Object.defineProperty(g,I,Object.getOwnPropertyDescriptor(e,I))}))}return g}function Se(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}function Ge(g,I){if(null==g)return{};var e,t,C=function(g,I){if(null==g)return{};var e,t,C={},Q=Object.keys(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||(C[e]=g[e]);return C}(g,I);if(Object.getOwnPropertySymbols){var Q=Object.getOwnPropertySymbols(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||Object.prototype.propertyIsEnumerable.call(g,e)&&(C[e]=g[e])}return C}function Le(g,I){(null==I||I>g.length)&&(I=g.length);for(var e=0,t=new Array(I);e<I;e++)t[e]=g[e];return t}ne.propTypes={calendarType:Rg.isRequired,formatShortWeekday:F.a.func,locale:F.a.string,onMouseLeave:F.a.func},se.propTypes={date:F.a.instanceOf(Date).isRequired,onClickWeekNumber:F.a.func,weekNumber:F.a.node.isRequired},ie.propTypes={activeStartDate:F.a.instanceOf(Date).isRequired,calendarType:Rg.isRequired,onClickWeekNumber:F.a.func,onMouseLeave:F.a.func,showFixedNumberOfWeeks:F.a.bool},le.propTypes={activeStartDate:F.a.instanceOf(Date).isRequired,calendarType:Rg,formatShortWeekday:F.a.func,locale:F.a.string,onClickWeekNumber:F.a.func,onMouseLeave:F.a.func,showFixedNumberOfWeeks:F.a.bool,showWeekNumbers:F.a.bool};var Ve=["century","decade","year","month"],he=[].concat(function(g){return function(g){if(Array.isArray(g))return Le(g)}(g)||function(g){if("undefined"!==typeof Symbol&&Symbol.iterator in Object(g))return Array.from(g)}(g)||function(g,I){if(!g)return;if("string"===typeof g)return Le(g,I);var e=Object.prototype.toString.call(g).slice(8,-1);"Object"===e&&g.constructor&&(e=g.constructor.name);if("Map"===e||"Set"===e)return Array.from(g);if("Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e))return Le(g,I)}(g)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(Ve.slice(1)),["day"]);function De(g,I){return Ve.slice(Ve.indexOf(g),Ve.indexOf(I)+1)}function pe(g,I,e){return function(g,I,e){return-1!==De(I,e).indexOf(g)}(g,I,e)?g:e}function Ee(g){return he[Ve.indexOf(g)]}function Ne(g,I){var e=g.value,t=g.minDate,C=g.maxDate,Q=g.maxDetail,F=function(g,I){if(!g)return null;var e=g instanceof Array&&2===g.length?g[I]:g;if(!e)return null;var t=new Date(e);if(isNaN(t.getTime()))throw new Error("Invalid date: ".concat(g));return t}(e,I);if(!F)return null;var B=Ee(Q);return function(g,I,e){return I&&I>g?I:e&&e<g?e:g}([lg,rg][I](B,F),t,C)}var We=function(g){return Ne(g,0)},fe=function(g){return Ne(g,1)},Xe=function(g){var I=g.value;return I instanceof Array?I:[We,fe].map((function(I){return I(g)}))};function Je(g){var I=g.maxDate,e=g.maxDetail,t=g.minDate,C=g.minDetail,Q=g.value;return lg(pe(g.view,C,e),We({value:Q,minDate:t,maxDate:I,maxDetail:e})||new Date)}var ve=function(g){return g&&1===[].concat(g).length},ke=function(g){!function(g,I){if("function"!==typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function");g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,writable:!0,configurable:!0}}),I&&ue(g,I)}(F,g);var I,e,t,Q=ye(F);function F(){var g;oe(this,F);for(var I=arguments.length,e=new Array(I),t=0;t<I;t++)e[t]=arguments[t];return Se(Ze(g=Q.call.apply(Q,[this].concat(e))),"state",{activeStartDate:g.props.defaultActiveStartDate,value:g.props.defaultValue,view:g.props.defaultView}),Se(Ze(g),"setStateAndCallCallbacks",(function(I,e,t){var C=Ze(g),Q=C.activeStartDate,F=C.view,B=g.props,n=B.allowPartialRange,U=B.onActiveStartDateChange,s=B.onChange,i=B.onViewChange,c=B.selectRange,A={activeStartDate:Q,view:F};g.setState(I,(function(){var C={activeStartDate:I.activeStartDate||g.activeStartDate,value:I.value||g.value,view:I.view||g.view};function Q(g){return g in I&&(re(I[g])!==re(A[g])||(I[g]instanceof Date?I[g].getTime()!==A[g].getTime():I[g]!==A[g]))}(Q("activeStartDate")&&U&&U(C),Q("view")&&i&&i(C),Q("value"))&&(s&&(c&&ve(I.value)?n&&s([I.value],e):s(I.value,e)));t&&t(C)}))})),Se(Ze(g),"setActiveStartDate",(function(I){g.setStateAndCallCallbacks({activeStartDate:I})})),Se(Ze(g),"drillDown",(function(I,e){if(g.drillDownAvailable){g.onClickTile(I,e);var t=Ze(g),C=t.view,Q=t.views,F=g.props.onDrillDown,B=Q[Q.indexOf(C)+1];g.setStateAndCallCallbacks({activeStartDate:I,view:B},void 0,F)}})),Se(Ze(g),"drillUp",(function(){if(g.drillUpAvailable){var I=Ze(g),e=I.activeStartDate,t=I.view,C=I.views,Q=g.props.onDrillUp,F=C[C.indexOf(t)-1],B=lg(F,e);g.setStateAndCallCallbacks({activeStartDate:B,view:F},void 0,Q)}})),Se(Ze(g),"onChange",(function(I,e){var t,C=g.props.selectRange;if(g.onClickTile(I,e),C){var Q=Ze(g),F=Q.value,B=Q.valueType;t=ve(F)?dg(B,F,I):lg(B,I)}else t=g.getProcessedValue(I);var n=Je(Re(Re({},g.props),{},{value:t}));e.persist(),g.setStateAndCallCallbacks({activeStartDate:n,value:t},e)})),Se(Ze(g),"onClickTile",(function(I,e){var t=Ze(g).view,C=g.props,Q=C.onClickDay,F=C.onClickDecade,B=C.onClickMonth,n=C.onClickYear,U=function(){switch(t){case"century":return F;case"decade":return n;case"year":return B;case"month":return Q;default:throw new Error("Invalid view: ".concat(t,"."))}}();U&&U(I,e)})),Se(Ze(g),"onMouseOver",(function(I){g.setState((function(g){return g.hover&&g.hover.getTime()===I.getTime()?null:{hover:I}}))})),Se(Ze(g),"onMouseLeave",(function(){g.setState({hover:null})})),g}return I=F,(e=[{key:"getProcessedValue",value:function(g){var I=this.props,e=I.minDate,t=I.maxDate,C=I.maxDetail,Q=I.returnValue;return function(){switch(Q){case"start":return We;case"end":return fe;case"range":return Xe;default:throw new Error("Invalid returnValue.")}}()({value:g,minDate:e,maxDate:t,maxDetail:C})}},{key:"renderContent",value:function(g){var I=this.activeStartDate,e=this.onMouseOver,t=this.valueType,Q=this.value,F=this.view,B=this.props,n=B.calendarType,U=B.locale,s=B.maxDate,i=B.minDate,c=B.selectRange,A=B.tileClassName,l=B.tileContent,a=B.tileDisabled,r=this.hover,o={activeStartDate:g?ag(F,I):lg(F,I),hover:r,locale:U,maxDate:s,minDate:i,onClick:this.drillDownAvailable?this.drillDown:this.onChange,onMouseOver:c?e:null,tileClassName:A,tileContent:l,tileDisabled:a,value:Q,valueType:t};switch(F){case"century":var d=this.props.formatYear;return C.a.createElement(SI,ae({formatYear:d},o));case"decade":var u=this.props.formatYear;return C.a.createElement(XI,ae({formatYear:u},o));case"year":var y=this.props,b=y.formatMonth,Z=y.formatMonthYear;return C.a.createElement(jI,ae({formatMonth:b,formatMonthYear:Z},o));case"month":var m=this.props,x=m.formatLongDate,R=m.formatShortWeekday,S=m.onClickWeekNumber,G=m.showDoubleView,L=m.showFixedNumberOfWeeks,V=m.showNeighboringMonth,h=m.showWeekNumbers,D=this.onMouseLeave;return C.a.createElement(le,ae({calendarType:n,formatLongDate:x,formatShortWeekday:R,onClickWeekNumber:S,onMouseLeave:c?D:null,showFixedNumberOfWeeks:L||G,showNeighboringMonth:V,showWeekNumbers:h},o));default:throw new Error("Invalid view: ".concat(F,"."))}}},{key:"renderNavigation",value:function(){if(!this.props.showNavigation)return null;var g=this.activeStartDate,I=this.view,e=this.views,t=this.props,Q=t.formatMonthYear,F=t.formatYear,B=t.locale,n=t.maxDate,U=t.minDate,s=t.navigationAriaLabel,i=t.navigationLabel,c=t.next2AriaLabel,A=t.next2Label,l=t.nextAriaLabel,a=t.nextLabel,r=t.prev2AriaLabel,o=t.prev2Label,d=t.prevAriaLabel,u=t.prevLabel,y=t.showDoubleView;return C.a.createElement(fg,{activeStartDate:g,drillUp:this.drillUp,formatMonthYear:Q,formatYear:F,locale:B,maxDate:n,minDate:U,navigationAriaLabel:s,navigationLabel:i,next2AriaLabel:c,next2Label:A,nextAriaLabel:l,nextLabel:a,prev2AriaLabel:r,prev2Label:o,prevAriaLabel:d,prevLabel:u,setActiveStartDate:this.setActiveStartDate,showDoubleView:y,view:I,views:e})}},{key:"render",value:function(){var g=this.props,I=g.className,e=g.inputRef,t=g.selectRange,Q=g.showDoubleView,F=this.onMouseLeave,n=this.value,U=[].concat(n);return C.a.createElement("div",{className:B("react-calendar",t&&1===U.length&&"".concat("react-calendar","--selectRange"),Q&&"".concat("react-calendar","--doubleView"),I),ref:e},this.renderNavigation(),C.a.createElement("div",{className:"".concat("react-calendar","__viewContainer"),onBlur:t?F:null,onMouseLeave:t?F:null},this.renderContent(),Q&&this.renderContent(!0)))}},{key:"activeStartDate",get:function(){var g=this.props.activeStartDate,I=this.state.activeStartDate;return g||I||function(g){var I=g.activeStartDate,e=g.defaultActiveStartDate,t=g.defaultValue,C=g.defaultView,Q=g.maxDetail,F=g.minDetail,B=g.value,n=g.view,U=Ge(g,["activeStartDate","defaultActiveStartDate","defaultValue","defaultView","maxDetail","minDetail","value","view"]),s=pe(n,F,Q),i=I||e;return i?lg(s,i):Je(Re({maxDetail:Q,minDetail:F,value:B||t,view:n||C},U))}(this.props)}},{key:"value",get:function(){var g=this.props,I=g.selectRange,e=g.value,t=this.state.value;return I&&ve(t)?t:void 0!==e?e:t}},{key:"valueType",get:function(){return Ee(this.props.maxDetail)}},{key:"view",get:function(){var g=this.props,I=g.minDetail,e=g.maxDetail,t=g.view,C=this.state.view;return pe(t||C,I,e)}},{key:"views",get:function(){var g=this.props;return De(g.minDetail,g.maxDetail)}},{key:"hover",get:function(){var g=this.props.selectRange,I=this.state.hover;return g?I:null}},{key:"drillDownAvailable",get:function(){var g=this.view,I=this.views;return I.indexOf(g)<I.length-1}},{key:"drillUpAvailable",get:function(){var g=this.view;return this.views.indexOf(g)>0}}])&&de(I.prototype,e),t&&de(I,t),F}(t.Component);ke.defaultProps={maxDetail:"month",minDetail:"century",returnValue:"start",showNavigation:!0,showNeighboringMonth:!0};var He=F.a.instanceOf(Date),Me=F.a.oneOfType([F.a.string,hg]);ke.propTypes={activeStartDate:He,allowPartialRange:F.a.bool,calendarType:Rg,className:Sg,defaultActiveStartDate:He,defaultValue:Me,defaultView:pg,formatLongDate:F.a.func,formatMonth:F.a.func,formatMonthYear:F.a.func,formatShortWeekday:F.a.func,formatYear:F.a.func,inputRef:Vg,locale:F.a.string,maxDate:Lg,maxDetail:F.a.oneOf(Ve),minDate:Gg,minDetail:F.a.oneOf(Ve),navigationAriaLabel:F.a.string,navigationLabel:F.a.func,next2AriaLabel:F.a.string,next2Label:F.a.node,nextAriaLabel:F.a.string,nextLabel:F.a.node,onActiveStartDateChange:F.a.func,onChange:F.a.func,onClickDay:F.a.func,onClickDecade:F.a.func,onClickMonth:F.a.func,onClickWeekNumber:F.a.func,onClickYear:F.a.func,onDrillDown:F.a.func,onDrillUp:F.a.func,onViewChange:F.a.func,prev2AriaLabel:F.a.string,prev2Label:F.a.node,prevAriaLabel:F.a.string,prevLabel:F.a.node,returnValue:F.a.oneOf(["start","end","range"]),selectRange:F.a.bool,showDoubleView:F.a.bool,showFixedNumberOfWeeks:F.a.bool,showNavigation:F.a.bool,showNeighboringMonth:F.a.bool,showWeekNumbers:F.a.bool,tileClassName:F.a.oneOfType([F.a.func,Sg]),tileContent:F.a.oneOfType([F.a.func,F.a.node]),tileDisabled:F.a.func,value:Me,view:pg};I.a=ke},function(g,I,e){"use strict";var t=e(11),C=e(0),Q=e.n(C),F=function(){return(F=Object.assign||function(g){for(var I,e=1,t=arguments.length;e<t;e++)for(var C in I=arguments[e])Object.prototype.hasOwnProperty.call(I,C)&&(g[C]=I[C]);return g}).apply(this,arguments)},B=function(g,I){return function(e){return Math.max(Math.min(e,I),g)}},n=function(g){return g%1?Number(g.toFixed(5)):g},U=/(-)?(\d[\d\.]*)/g,s=/(#[0-9a-f]{6}|#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\((-?\d+%?[,\s]+){2,3}\s*[\d\.]+%?\))/gi,i=/^(#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\((-?\d+%?[,\s]+){2,3}\s*[\d\.]+%?\))$/i,c={test:function(g){return"number"===typeof g},parse:parseFloat,transform:function(g){return g}},A=F(F({},c),{transform:B(0,1)}),l=F(F({},c),{default:1}),a=function(g){return{test:function(I){return"string"===typeof I&&I.endsWith(g)&&1===I.split(" ").length},parse:parseFloat,transform:function(I){return""+I+g}}},r=a("deg"),o=a("%"),d=a("px"),u=a("vh"),y=a("vw"),b=F(F({},o),{parse:function(g){return o.parse(g)/100},transform:function(g){return o.transform(100*g)}}),Z=B(0,255),m=function(g){return void 0!==g.red},x=function(g){return void 0!==g.hue},R=function(g){return function(I){if("string"!==typeof I)return I;for(var e={},t=function(g){return g.substring(g.indexOf("(")+1,g.lastIndexOf(")"))}(I).split(/,\s*/),C=0;C<4;C++)e[g[C]]=void 0!==t[C]?parseFloat(t[C]):1;return e}},S=F(F({},c),{transform:function(g){return Math.round(Z(g))}});function G(g,I){return g.startsWith(I)&&i.test(g)}var L={test:function(g){return"string"===typeof g?G(g,"rgb"):m(g)},parse:R(["red","green","blue","alpha"]),transform:function(g){var I=g.red,e=g.green,t=g.blue,C=g.alpha,Q=void 0===C?1:C;return function(g){var I=g.red,e=g.green,t=g.blue,C=g.alpha;return"rgba("+I+", "+e+", "+t+", "+(void 0===C?1:C)+")"}({red:S.transform(I),green:S.transform(e),blue:S.transform(t),alpha:n(A.transform(Q))})}},V={test:function(g){return"string"===typeof g?G(g,"hsl"):x(g)},parse:R(["hue","saturation","lightness","alpha"]),transform:function(g){var I=g.hue,e=g.saturation,t=g.lightness,C=g.alpha,Q=void 0===C?1:C;return function(g){var I=g.hue,e=g.saturation,t=g.lightness,C=g.alpha;return"hsla("+I+", "+e+", "+t+", "+(void 0===C?1:C)+")"}({hue:Math.round(I),saturation:o.transform(n(e)),lightness:o.transform(n(t)),alpha:n(A.transform(Q))})}},h=F(F({},L),{test:function(g){return"string"===typeof g&&G(g,"#")},parse:function(g){var I="",e="",t="";return g.length>4?(I=g.substr(1,2),e=g.substr(3,2),t=g.substr(5,2)):(I=g.substr(1,1),e=g.substr(2,1),t=g.substr(3,1),I+=I,e+=e,t+=t),{red:parseInt(I,16),green:parseInt(e,16),blue:parseInt(t,16),alpha:1}}}),D={test:function(g){return"string"===typeof g&&i.test(g)||m(g)||x(g)},parse:function(g){return L.test(g)?L.parse(g):V.test(g)?V.parse(g):h.test(g)?h.parse(g):g},transform:function(g){return m(g)?L.transform(g):x(g)?V.transform(g):g}},p=function(g){return"number"===typeof g?0:g},E={test:function(g){if("string"!==typeof g||!isNaN(g))return!1;var I=0,e=g.match(U),t=g.match(s);return e&&(I+=e.length),t&&(I+=t.length),I>0},parse:function(g){var I=g,e=[],t=I.match(s);t&&(I=I.replace(s,"${c}"),e.push.apply(e,t.map(D.parse)));var C=I.match(U);return C&&e.push.apply(e,C.map(c.parse)),e},createTransformer:function(g){var I=g,e=0,t=g.match(s),C=t?t.length:0;if(t)for(var Q=0;Q<C;Q++)I=I.replace(t[Q],"${c}"),e++;var F=I.match(U),B=F?F.length:0;if(F)for(Q=0;Q<B;Q++)I=I.replace(F[Q],"${n}"),e++;return function(g){for(var t=I,Q=0;Q<e;Q++)t=t.replace(Q<C?"${c}":"${n}",Q<C?D.transform(g[Q]):n(g[Q]));return t}},getAnimatableNone:function(g){var I=E.parse(g);return E.createTransformer(g)(I.map(p))}};var N,W=0,f="undefined"!==typeof window&&void 0!==window.requestAnimationFrame?function(g){return window.requestAnimationFrame(g)}:function(g){var I=Date.now(),e=Math.max(0,16.7-(I-W));W=I+e,setTimeout((function(){return g(W)}),e)};!function(g){g.Read="read",g.Update="update",g.Render="render",g.PostRender="postRender",g.FixedUpdate="fixedUpdate"}(N||(N={}));var X=1/60*1e3,J=!0,v=!1,k=!1,H={delta:0,timestamp:0},M=[N.Read,N.Update,N.Render,N.PostRender],Y=function(g){return v=g},w=M.reduce((function(g,I){var e=function(g){var I=[],e=[],t=0,C=!1,Q=0,F=new WeakSet,B=new WeakSet,n={cancel:function(g){var I=e.indexOf(g);F.add(g),-1!==I&&e.splice(I,1)},process:function(U){var s,i;if(C=!0,I=(s=[e,I])[0],(e=s[1]).length=0,t=I.length)for(Q=0;Q<t;Q++)(i=I[Q])(U),!0!==B.has(i)||F.has(i)||(n.schedule(i),g(!0));C=!1},schedule:function(g,Q,n){void 0===Q&&(Q=!1),void 0===n&&(n=!1);var U=n&&C,s=U?I:e;F.delete(g),Q&&B.add(g),-1===s.indexOf(g)&&(s.push(g),U&&(t=I.length))}};return n}(Y);return g.sync[I]=function(g,I,t){return void 0===I&&(I=!1),void 0===t&&(t=!1),v||P(),e.schedule(g,I,t),g},g.cancelSync[I]=function(g){return e.cancel(g)},g.steps[I]=e,g}),{steps:{},sync:{},cancelSync:{}}),T=w.steps,z=w.sync,O=w.cancelSync,K=function(g){return T[g].process(H)},j=function g(I){v=!1,H.delta=J?X:Math.max(Math.min(I-H.timestamp,40),1),J||(X=H.delta),H.timestamp=I,k=!0,M.forEach(K),k=!1,v&&(J=!1,f(g))},P=function(){v=!0,J=!0,k||f(j)},_=function(){return H},q=z,$=function(g){return function(I){return 1-g(1-I)}},gg=function(g){return function(I){return I<=.5?g(2*I)/2:(2-g(2*(1-I)))/2}},Ig=$,eg=function(g){return function(I){return I*I*((g+1)*I-g)}},tg=function(g){var I=eg(g);return function(g){return(g*=2)<1?.5*I(g):.5*(2-Math.pow(2,-10*(g-1)))}},Cg=function(g){return g},Qg=function(g){return function(I){return Math.pow(I,g)}}(2),Fg=$(Qg),Bg=gg(Qg),ng=function(g){return 1-Math.sin(Math.acos(g))},Ug=$(ng),sg=gg(Ug),ig=eg(1.525),cg=$(ig),Ag=gg(ig),lg=tg(1.525),ag="undefined"!==typeof Float32Array,rg=function(g,I){return 1-3*I+3*g},og=function(g,I){return 3*I-6*g},dg=function(g){return 3*g},ug=function(g,I,e){return 3*rg(I,e)*g*g+2*og(I,e)*g+dg(I)},yg=function(g,I,e){return((rg(I,e)*g+og(I,e))*g+dg(I))*g};function bg(g,I,e,t){var C=ag?new Float32Array(11):new Array(11),Q=function(I){for(var t,Q,F,B=0,n=1;10!==n&&C[n]<=I;++n)B+=.1;return--n,t=(I-C[n])/(C[n+1]-C[n]),(F=ug(Q=B+.1*t,g,e))>=.001?function(I,t){for(var C=0,Q=0;C<8;++C){if(0===(Q=ug(t,g,e)))return t;t-=(yg(t,g,e)-I)/Q}return t}(I,Q):0===F?Q:function(I,t,C){var Q,F,B=0;do{(Q=yg(F=t+(C-t)/2,g,e)-I)>0?C=F:t=F}while(Math.abs(Q)>1e-7&&++B<10);return F}(I,B,B+.1)};!function(){for(var I=0;I<11;++I)C[I]=yg(.1*I,g,e)}();return function(C){return g===I&&e===t?C:0===C?0:1===C?1:yg(Q(C),I,t)}}var Zg={x:0,y:0,z:0},mg=function(g){return"number"===typeof g},xg=function(g){return 180*g/Math.PI},Rg=function(g,I){return void 0===I&&(I=Zg),xg(Math.atan2(I.y-g.y,I.x-g.x))},Sg=function(g,I){var e=!0;return void 0===I&&(I=g,e=!1),function(t){return e?t-g+I:(g=t,e=!0,I)}},Gg=function(g){return function(I,e,t){return void 0!==t?g(I,e,t):function(t){return g(I,e,t)}}},Lg=Gg((function(g,I,e){return Math.min(Math.max(e,g),I)})),Vg=function(g){return g.hasOwnProperty("x")&&g.hasOwnProperty("y")},hg=function(g){return Vg(g)&&g.hasOwnProperty("z")},Dg=function(g,I){return Math.abs(g-I)},pg=function(g,I){if(void 0===I&&(I=Zg),mg(g)&&mg(I))return Dg(g,I);if(Vg(g)&&Vg(I)){var e=Dg(g.x,I.x),t=Dg(g.y,I.y),C=hg(g)&&hg(I)?Dg(g.z,I.z):0;return Math.sqrt(Math.pow(e,2)+Math.pow(t,2)+Math.pow(C,2))}return 0},Eg=function(g,I,e){var t=I-g;return 0===t?1:(e-g)/t},Ng=function(g,I,e){return-e*g+e*I+g},Wg=function(){return(Wg=Object.assign||function(g){for(var I,e=1,t=arguments.length;e<t;e++)for(var C in I=arguments[e])Object.prototype.hasOwnProperty.call(I,C)&&(g[C]=I[C]);return g}).apply(this,arguments)},fg=function(g,I,e){var t=g*g,C=I*I;return Math.sqrt(Math.max(0,e*(C-t)+t))},Xg=[h,L,V],Jg=function(g){return Xg.find((function(I){return I.test(g)}))},vg=function(g){return"'"+g+"' is not an animatable color. Use the equivalent color code instead."},kg=function(g,I){var e=Jg(g),t=Jg(I);vg(g),vg(I),e.transform,t.transform;var C=e.parse(g),Q=t.parse(I),F=Wg({},C),B=e===V?Ng:fg;return function(g){for(var I in F)"alpha"!==I&&(F[I]=B(C[I],Q[I],g));return F.alpha=Ng(C.alpha,Q.alpha,g),e.transform(F)}},Hg=function(g,I){return function(e){return I(g(e))}},Mg=function(){for(var g=[],I=0;I<arguments.length;I++)g[I]=arguments[I];return g.reduce(Hg)};function Yg(g,I){return mg(g)?function(e){return Ng(g,I,e)}:D.test(g)?kg(g,I):Og(g,I)}var wg=function(g,I){var e=g.slice(),t=e.length,C=g.map((function(g,e){return Yg(g,I[e])}));return function(g){for(var I=0;I<t;I++)e[I]=C[I](g);return e}},Tg=function(g,I){var e=Wg({},g,I),t={};for(var C in e)void 0!==g[C]&&void 0!==I[C]&&(t[C]=Yg(g[C],I[C]));return function(g){for(var I in t)e[I]=t[I](g);return e}};function zg(g){for(var I=E.parse(g),e=I.length,t=0,C=0,Q=0,F=0;F<e;F++)t||"number"===typeof I[F]?t++:void 0!==I[F].hue?Q++:C++;return{parsed:I,numNumbers:t,numRGB:C,numHSL:Q}}var Og=function(g,I){var e=E.createTransformer(I),t=zg(g),C=zg(I);return t.numHSL===C.numHSL&&t.numRGB===C.numRGB&&(t.numNumbers,C.numNumbers),Mg(wg(t.parsed,C.parsed),e)},Kg=function(g,I){return function(e){return Ng(g,I,e)}};function jg(g,I,e){for(var t,C=[],Q=e||("number"===typeof(t=g[0])?Kg:"string"===typeof t?D.test(t)?kg:Og:Array.isArray(t)?wg:"object"===typeof t?Tg:void 0),F=g.length-1,B=0;B<F;B++){var n=Q(g[B],g[B+1]);if(I){var U=Array.isArray(I)?I[B]:I;n=Mg(U,n)}C.push(n)}return C}var Pg,_g=function(g,I,e,t){return void 0===t&&(t=0),C=g+e*(I-g)/Math.max(t,e),void 0===Q&&(Q=2),Q=Math.pow(10,Q),Math.round(C*Q)/Q;var C,Q},qg=function(g){return g},$g=function(g){return void 0===g&&(g=qg),Gg((function(I,e,t){var C=e-t,Q=-(0-I+1)*(0-g(Math.abs(C)));return C<=0?e+Q:e-Q}))},gI=$g(),II=$g(Math.sqrt),eI=function(g,I){return mg(g)?g/(1e3/I):0},tI=function(g,I){return I?g*(1e3/I):0},CI=Gg((function(g,I,e){var t=I-g;return((e-g)%t+t)%t+g})),QI=(Lg(0,1),function(g){var I=g.onRead,e=g.onRender,C=g.uncachedValues,Q=void 0===C?new Set:C,F=g.useCache,B=void 0===F||F;return function(g){void 0===g&&(g={});var C=Object(t.d)(g,[]),F={},n=[],U=!1;function s(g,I){g.startsWith("--")&&(C.hasCSSVariable=!0);var e=F[g];F[g]=I,F[g]!==e&&(-1===n.indexOf(g)&&n.push(g),U||(U=!0,q.render(i.render)))}var i={get:function(g,e){return void 0===e&&(e=!1),!e&&B&&!Q.has(g)&&void 0!==F[g]?F[g]:I(g,C)},set:function(g,I){if("string"===typeof g)s(g,I);else for(var e in g)s(e,g[e]);return this},render:function(g){return void 0===g&&(g=!1),(U||!0===g)&&(e(F,C,n),U=!1,n.length=0),this}};return i}}),FI=/([a-z])([A-Z])/g,BI=function(g){return g.replace(FI,"$1-$2").toLowerCase()},nI=new Map,UI=new Map,sI=["Webkit","Moz","O","ms",""],iI=sI.length,cI="undefined"!==typeof document,AI=function(g,I){return UI.set(g,BI(I))},lI=function(g,I){void 0===I&&(I=!1);var e=I?UI:nI;return e.has(g)||(cI?function(g){Pg=Pg||document.createElement("div");for(var I=0;I<iI;I++){var e=sI[I],t=""===e,C=t?g:e+g.charAt(0).toUpperCase()+g.slice(1);if(C in Pg.style||t){if(t&&"clipPath"===g&&UI.has(g))return;nI.set(g,C),AI(g,(t?"":"-")+BI(C))}}}(g):function(g){AI(g,g)}(g)),e.get(g)||g},aI=["","X","Y","Z"],rI=["translate","scale","rotate","skew","transformPerspective"].reduce((function(g,I){return aI.reduce((function(g,e){return g.push(I+e),g}),g)}),["x","y","z"]),oI=rI.reduce((function(g,I){return g[I]=!0,g}),{});function dI(g){return!0===oI[g]}function uI(g,I){return rI.indexOf(g)-rI.indexOf(I)}var yI=new Set(["originX","originY","originZ"]);function bI(g){return yI.has(g)}var ZI=Object(t.a)(Object(t.a)({},c),{transform:Math.round}),mI={color:D,backgroundColor:D,outlineColor:D,fill:D,stroke:D,borderColor:D,borderTopColor:D,borderRightColor:D,borderBottomColor:D,borderLeftColor:D,borderWidth:d,borderTopWidth:d,borderRightWidth:d,borderBottomWidth:d,borderLeftWidth:d,borderRadius:d,radius:d,borderTopLeftRadius:d,borderTopRightRadius:d,borderBottomRightRadius:d,borderBottomLeftRadius:d,width:d,maxWidth:d,height:d,maxHeight:d,size:d,top:d,right:d,bottom:d,left:d,padding:d,paddingTop:d,paddingRight:d,paddingBottom:d,paddingLeft:d,margin:d,marginTop:d,marginRight:d,marginBottom:d,marginLeft:d,rotate:r,rotateX:r,rotateY:r,rotateZ:r,scale:l,scaleX:l,scaleY:l,scaleZ:l,skew:r,skewX:r,skewY:r,distance:d,translateX:d,translateY:d,translateZ:d,x:d,y:d,z:d,perspective:d,opacity:A,originX:b,originY:b,originZ:d,zIndex:ZI,fillOpacity:A,strokeOpacity:A,numOctaves:ZI},xI=function(g){return mI[g]},RI=function(g,I){return I&&"number"===typeof g?I.transform(g):g},SI=new Set(["scrollLeft","scrollTop"]),GI=new Set(["scrollLeft","scrollTop","transform"]),LI={x:"translateX",y:"translateY",z:"translateZ"};function VI(g){return"function"===typeof g}function hI(g,I,e,t,C,Q,F){void 0===I&&(I=!0),void 0===e&&(e={}),void 0===t&&(t={}),void 0===C&&(C={}),void 0===Q&&(Q=[]),void 0===F&&(F=!1);var B=!0,n=!1,U=!1;for(var s in g){var i=g[s],c=xI(s),A=RI(i,c);dI(s)?(n=!0,t[s]=A,Q.push(s),B&&(c.default&&i!==c.default||!c.default&&0!==i)&&(B=!1)):bI(s)?(C[s]=A,U=!0):GI.has(s)&&VI(A)||(e[lI(s,F)]=A)}return(n||"function"===typeof g.transform)&&(e.transform=function(g,I,e,t,C){var Q="",F=!1;e.sort(uI);for(var B=e.length,n=0;n<B;n++){var U=e[n];Q+=(LI[U]||U)+"("+I[U]+") ",F="z"===U||F}return!F&&C?Q+="translateZ(0)":Q=Q.trim(),VI(g.transform)?Q=g.transform(I,t?"":Q):t&&(Q="none"),Q}(g,t,Q,B,I)),U&&(e.transformOrigin=(C.originX||"50%")+" "+(C.originY||"50%")+" "+(C.originZ||0)),e}function DI(g,I){void 0===g&&(g=!0),void 0===I&&(I=!0);var e={},t={},C={},Q=[];return function(F){return Q.length=0,hI(F,g,e,t,C,Q,I),e}}var pI=QI({onRead:function(g,I){var e=I.element,t=I.preparseOutput,C=xI(g);if(dI(g))return C&&C.default||0;if(SI.has(g))return e[g];var Q=window.getComputedStyle(e,null).getPropertyValue(lI(g,!0))||0;return t&&C&&C.test(Q)&&C.parse?C.parse(Q):Q},onRender:function(g,I,e){var t=I.element,C=I.buildStyles,Q=I.hasCSSVariable;if(Object.assign(t.style,C(g)),Q)for(var F=e.length,B=0;B<F;B++){var n=e[B];n.startsWith("--")&&t.style.setProperty(n,g[n])}-1!==e.indexOf("scrollLeft")&&(t.scrollLeft=g.scrollLeft),-1!==e.indexOf("scrollTop")&&(t.scrollTop=g.scrollTop)},uncachedValues:SI});var EI=new Set(["baseFrequency","diffuseConstant","kernelMatrix","kernelUnitLength","keySplines","keyTimes","limitingConeAngle","markerHeight","markerWidth","numOctaves","targetX","targetY","surfaceScale","specularConstant","specularExponent","stdDeviation","tableValues"]),NI=function(g,I){return d.transform(g*I)},WI={x:0,y:0,width:0,height:0};function fI(g,I,e){return"string"===typeof g?g:d.transform(I+e*g)}function XI(g,I,e,C,Q,F){void 0===I&&(I=WI),void 0===C&&(C=DI(!1,!1)),void 0===Q&&(Q={style:{}}),void 0===F&&(F=!0);var B=g.attrX,n=g.attrY,U=g.originX,s=g.originY,i=g.pathLength,c=g.pathSpacing,A=void 0===c?1:c,l=g.pathOffset,a=void 0===l?0:l,r=C(Object(t.d)(g,["attrX","attrY","originX","originY","pathLength","pathSpacing","pathOffset"]));for(var o in r){if("transform"===o)Q.style.transform=r[o];else Q[F&&!EI.has(o)?BI(o):o]=r[o]}return(void 0!==U||void 0!==s||r.transform)&&(Q.style.transformOrigin=function(g,I,e){return fI(I,g.x,g.width)+" "+fI(e,g.y,g.height)}(I,void 0!==U?U:.5,void 0!==s?s:.5)),void 0!==B&&(Q.x=B),void 0!==n&&(Q.y=n),void 0!==e&&void 0!==i&&(Q[F?"stroke-dashoffset":"strokeDashoffset"]=NI(-a,e),Q[F?"stroke-dasharray":"strokeDasharray"]=NI(i,e)+" "+NI(A,e)),Q}function JI(g,I,e){void 0===e&&(e=!0);var t={style:{}},C=DI(!1,!1);return function(Q){return XI(Q,g,I,C,t,e)}}var vI=QI({onRead:function(g,I){var e=I.element;if(dI(g=EI.has(g)?g:BI(g))){var t=xI(g);return t&&t.default||0}return e.getAttribute(g)},onRender:function(g,I){var e=I.element,t=(0,I.buildAttrs)(g);for(var C in t)"style"===C?Object.assign(e.style,t.style):e.setAttribute(C,t[C])}}),kI=QI({useCache:!1,onRead:function(g){return"scrollTop"===g?window.pageYOffset:window.pageXOffset},onRender:function(g){var I=g.scrollTop,e=void 0===I?0:I,t=g.scrollLeft,C=void 0===t?0:t;return window.scrollTo(C,e)}}),HI=new WeakMap,MI=function(g,I){var e;return g===window?e=kI(g):!function(g){return g instanceof HTMLElement||"function"===typeof g.click}(g)?function(g){return g instanceof SVGElement||"ownerSVGElement"in g}(g)&&(e=function(g){var I=function(g){try{return function(g){return"function"===typeof g.getBBox?g.getBBox():g.getBoundingClientRect()}(g)}catch(I){return{x:0,y:0,width:0,height:0}}}(g),e=function(g){return"path"===g.tagName}(g)&&g.getTotalLength?g.getTotalLength():void 0;return vI({element:g,buildAttrs:JI(I,e)})}(g)):e=function(g,I){void 0===I&&(I={});var e=I.enableHardwareAcceleration,C=Object(t.d)(I,["enableHardwareAcceleration"]);return pI(Object(t.a)({element:g,buildStyles:DI(e),preparseOutput:!0},C))}(g,I),HI.set(g,e),e};var YI=function(g,I){return function(g,I){return HI.has(g)?HI.get(g):MI(g,I)}("string"===typeof g?document.querySelector(g):g,I)},wI=function(){function g(g){void 0===g&&(g={}),this.props=g}return g.prototype.applyMiddleware=function(g){return this.create(Object(t.a)({},this.props,{middleware:this.props.middleware?[g].concat(this.props.middleware):[g]}))},g.prototype.pipe=function(){for(var g=[],I=0;I<arguments.length;I++)g[I]=arguments[I];var e=1===g.length?g[0]:Mg.apply(void 0,g);return this.applyMiddleware((function(g){return function(I){return g(e(I))}}))},g.prototype.while=function(g){return this.applyMiddleware((function(I,e){return function(t){return g(t)?I(t):e()}}))},g.prototype.filter=function(g){return this.applyMiddleware((function(I){return function(e){return g(e)&&I(e)}}))},g}(),TI=function(){return function(g,I){var e=g.middleware,t=g.onComplete,C=this;this.isActive=!0,this.update=function(g){C.observer.update&&C.updateObserver(g)},this.complete=function(){C.observer.complete&&C.isActive&&C.observer.complete(),C.onComplete&&C.onComplete(),C.isActive=!1},this.error=function(g){C.observer.error&&C.isActive&&C.observer.error(g),C.isActive=!1},this.observer=I,this.updateObserver=function(g){return I.update(g)},this.onComplete=t,I.update&&e&&e.length&&e.forEach((function(g){return C.updateObserver=g(C.updateObserver,C.complete)}))}}(),zI=function(g,I,e){var t=I.middleware;return new TI({middleware:t,onComplete:e},"function"===typeof g?{update:g}:g)},OI=function(g){function I(){return null!==g&&g.apply(this,arguments)||this}return Object(t.b)(I,g),I.prototype.create=function(g){return new I(g)},I.prototype.start=function(g){void 0===g&&(g={});var I=!1,e={stop:function(){}},C=this.props,Q=C.init,F=Object(t.d)(C,["init"]),B=Q(zI(g,F,(function(){I=!0,e.stop()})));return e=B?Object(t.a)({},e,B):e,g.registerParent&&g.registerParent(e),I&&e.stop(),e},I}(wI),KI=function(g){return new OI({init:g})},jI=function(g){function I(){var I=null!==g&&g.apply(this,arguments)||this;return I.subscribers=[],I}return Object(t.b)(I,g),I.prototype.complete=function(){this.subscribers.forEach((function(g){return g.complete()}))},I.prototype.error=function(g){this.subscribers.forEach((function(I){return I.error(g)}))},I.prototype.update=function(g){for(var I=0;I<this.subscribers.length;I++)this.subscribers[I].update(g)},I.prototype.subscribe=function(g){var I=this,e=zI(g,this.props);return this.subscribers.push(e),{unsubscribe:function(){var g=I.subscribers.indexOf(e);-1!==g&&I.subscribers.splice(g,1)}}},I.prototype.stop=function(){this.parent&&this.parent.stop()},I.prototype.registerParent=function(g){this.stop(),this.parent=g},I}(wI),PI=function(g,I){var e=1/(g-1),t=1/(2*(g-1)),C=Math.min(I,1)/t;return Math.floor((C+1)/2)*e},_I=function(g){function I(I){var e,t=g.call(this,I)||this;return t.scheduleVelocityCheck=function(){return q.postRender(t.velocityCheck)},t.velocityCheck=function(g){g.timestamp!==t.lastUpdated&&(t.prev=t.current)},t.prev=t.current=I.value||0,!function(g){var I=typeof g;return"string"===I||"number"===I}(t.current)?(e=t.current,Array.isArray(e)?(t.updateCurrent=function(g){return t.current=g.slice()},t.getVelocityOfCurrent=function(){return t.getListVelocity()}):(t.updateCurrent=function(g){for(var I in t.current={},g)g.hasOwnProperty(I)&&(t.current[I]=g[I])},t.getVelocityOfCurrent=function(){return t.getMapVelocity()})):(t.updateCurrent=function(g){return t.current=g},t.getVelocityOfCurrent=function(){return t.getSingleVelocity(t.current,t.prev)}),I.initialSubscription&&t.subscribe(I.initialSubscription),t}return Object(t.b)(I,g),I.prototype.create=function(g){return new I(g)},I.prototype.get=function(){return this.current},I.prototype.getVelocity=function(){return this.getVelocityOfCurrent()},I.prototype.update=function(I){g.prototype.update.call(this,I),this.prev=this.current,this.updateCurrent(I);var e=_(),t=e.delta,C=e.timestamp;this.timeDelta=t,this.lastUpdated=C,q.postRender(this.scheduleVelocityCheck)},I.prototype.subscribe=function(I){var e=g.prototype.subscribe.call(this,I);return this.subscribers[this.subscribers.length-1].update(this.current),e},I.prototype.getSingleVelocity=function(g,I){return"number"===typeof g&&"number"===typeof I?tI(g-I,this.timeDelta):tI(parseFloat(g)-parseFloat(I),this.timeDelta)||0},I.prototype.getListVelocity=function(){var g=this;return this.current.map((function(I,e){return g.getSingleVelocity(I,g.prev[e])}))},I.prototype.getMapVelocity=function(){var g={};for(var I in this.current)this.current.hasOwnProperty(I)&&(g[I]=this.getSingleVelocity(this.current[I],this.prev[I]));return g},I}(jI),qI=function(g,I){return new _I({value:g,initialSubscription:I})},$I=function(g){var I=g.getCount,e=g.getFirst,t=g.getOutput,C=g.mapApi,Q=g.setProp,F=g.startActions;return function(g){return KI((function(B){var n=B.update,U=B.complete,s=B.error,i=I(g),c=t(),A=function(){return n(c)},l=0,a=F(g,(function(g,I){var e=!1;return g.start({complete:function(){e||(e=!0,++l===i&&q.update(U))},error:s,update:function(g){Q(c,I,g),q.update(A,!1,!0)}})}));return Object.keys(e(a)).reduce((function(g,I){return g[I]=C(a,I),g}),{})}))}},ge=$I({getOutput:function(){return{}},getCount:function(g){return Object.keys(g).length},getFirst:function(g){return g[Object.keys(g)[0]]},mapApi:function(g,I){return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return Object.keys(g).reduce((function(t,C){var Q;return g[C][I]&&(e[0]&&void 0!==e[0][C]?t[C]=g[C][I](e[0][C]):t[C]=(Q=g[C])[I].apply(Q,e)),t}),{})}},setProp:function(g,I,e){return g[I]=e},startActions:function(g,I){return Object.keys(g).reduce((function(e,t){return e[t]=I(g[t],t),e}),{})}}),Ie=$I({getOutput:function(){return[]},getCount:function(g){return g.length},getFirst:function(g){return g[0]},mapApi:function(g,I){return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return g.map((function(g,t){if(g[I])return Array.isArray(e[0])?g[I](e[0][t]):g[I].apply(g,e)}))}},setProp:function(g,I,e){return g[I]=e},startActions:function(g,I){return g.map((function(g,e){return I(g,e)}))}}),ee=function(){for(var g=[],I=0;I<arguments.length;I++)g[I]=arguments[I];return Ie(g)},te=[d,o,r,u,y],Ce=function(g){return te.find((function(I){return I.test(g)}))},Qe=function(g,I){return g(I)},Fe=function(g,I,e){var C=e[0],Q=I[C].map((function(C,Q){var F=e.reduce(function(g){return function(I,e){return I[e]=I[e][g],I}}(Q),Object(t.a)({},I));return Ae(C)(g,F)}));return ee.apply(void 0,Q)},Be=function(g,I,e){var C=e[0],Q=Object.keys(I[C]).reduce((function(Q,F){var B=e.reduce(function(g){return function(I,e){return I[e]=I[e][g],I}}(F),Object(t.a)({},I));return Q[F]=Ae(I[C][F])(g,B),Q}),{});return ge(Q)},ne=function(g,I){var e=I.from,C=I.to,Q=Object(t.d)(I,["from","to"]),F=Ce(e)||Ce(C),B=F.transform,n=F.parse;return g(Object(t.a)({},Q,{from:"string"===typeof e?n(e):e,to:"string"===typeof C?n(C):C})).pipe(B)},Ue=function(g){return function(I,e){var C=e.from,Q=e.to,F=Object(t.d)(e,["from","to"]);return I(Object(t.a)({},F,{from:0,to:1})).pipe(g(C,Q))}},se=Ue(kg),ie=Ue(Og),ce=function(g,I){var e=function(g){var I=Object.keys(g),e=function(I,e){return void 0!==I&&!g[e](I)};return{getVectorKeys:function(g){return I.reduce((function(I,t){return e(g[t],t)&&I.push(t),I}),[])},testVectorProps:function(g){return g&&I.some((function(I){return e(g[I],I)}))}}}(I),t=e.testVectorProps,C=e.getVectorKeys;return function(I){if(!t(I))return g(I);var e=C(I),Q=I[e[0]];return Ae(Q)(g,I,e)}},Ae=function(g){return"number"===typeof g?Qe:Array.isArray(g)?Fe:function(g){return Boolean(Ce(g))}(g)?ne:D.test(g)?se:E.test(g)?ie:"object"===typeof g?Be:Qe},le=ce((function(g){return void 0===g&&(g={}),KI((function(I){var e=I.complete,t=I.update,C=g.velocity,Q=void 0===C?0:C,F=g.from,B=void 0===F?0:F,n=g.power,U=void 0===n?.8:n,s=g.timeConstant,i=void 0===s?350:s,c=g.restDelta,A=void 0===c?.5:c,l=g.modifyTarget,a=0,r=U*Q,o=Math.round(B+r),d="undefined"===typeof l?o:l(o),u=q.update((function(g){var I=g.delta;a+=I;var C=-r*Math.exp(-a/i),Q=C>A||C<-A;t(Q?d+C:d),Q||(O.update(u),e())}),!0);return{stop:function(){return O.update(u)}}}))}),{from:c.test,modifyTarget:function(g){return"function"===typeof g},velocity:c.test}),ae=ce((function(g){return void 0===g&&(g={}),KI((function(I){var e=I.update,t=I.complete,C=g.velocity,Q=void 0===C?0:C,F=g.from,B=void 0===F?0:F,n=g.to,U=void 0===n?0:n,s=g.stiffness,i=void 0===s?100:s,c=g.damping,A=void 0===c?10:c,l=g.mass,a=void 0===l?1:l,r=g.restSpeed,o=void 0===r?.01:r,d=g.restDelta,u=void 0===d?.01:d,y=Q?-Q/1e3:0,b=0,Z=U-B,m=B,x=m,R=q.update((function(g){var I=g.delta;b+=I;var C=A/(2*Math.sqrt(i*a)),F=Math.sqrt(i/a)/1e3;if(x=m,C<1){var B=Math.exp(-C*F*b),n=F*Math.sqrt(1-C*C);m=U-B*((y+C*F*Z)/n*Math.sin(n*b)+Z*Math.cos(n*b))}else{B=Math.exp(-F*b);m=U-B*(Z+(y+F*Z)*b)}Q=tI(m-x,I);var s=Math.abs(Q)<=o,c=Math.abs(U-m)<=u;s&&c?(e(m=U),O.update(R),t()):e(m)}),!0);return{stop:function(){return O.update(R)}}}))}),{from:c.test,to:c.test,stiffness:c.test,damping:c.test,mass:c.test,velocity:c.test}),re=ce((function(g){var I=g.from,e=void 0===I?0:I,t=g.to,C=void 0===t?1:t,Q=g.ease,F=void 0===Q?Cg:Q,B=g.reverseEase;return void 0!==B&&B&&(F=Ig(F)),KI((function(g){var I=g.update;return{seek:function(g){return I(g)}}})).pipe(F,(function(g){return Ng(e,C,g)}))}),{ease:function(g){return"function"===typeof g},from:c.test,to:c.test}),oe=Lg(0,1),de=function(g){return void 0===g&&(g={}),KI((function(I){var e,t=I.update,C=I.complete,Q=g.duration,F=void 0===Q?300:Q,B=g.ease,n=void 0===B?Fg:B,U=g.flip,s=void 0===U?0:U,i=g.loop,c=void 0===i?0:i,A=g.yoyo,l=void 0===A?0:A,a=g.repeatDelay,r=void 0===a?0:a,o=g.from,d=void 0===o?0:o,u=g.to,y=void 0===u?1:u,b=g.elapsed,Z=void 0===b?0:b,m=g.flipCount,x=void 0===m?0:m,R=g.yoyoCount,S=void 0===R?0:R,G=g.loopCount,L=void 0===G?0:G,V=re({from:d,to:y,ease:n}).start(t),h=0,D=!1,p=function(g){var I;void 0===g&&(g=!1),V=re({from:d=(I=[y,d])[0],to:y=I[1],ease:n,reverseEase:g}).start(t)},E=function(){h=oe(Eg(0,F,Z)),V.seek(h)},N=function(){D=!0,e=q.update((function(g){var I=g.delta;Z+=I,E(),function(){var g=D&&Z>F+r;return!!g&&(!(!g||c||s||l)||(Z=F-(Z-r),c&&L<c?(L++,!1):s&&x<s?(x++,p(),!1):!(l&&S<l)||(S++,p(S%2!==0),!1)))}()&&(O.update(e),C&&q.update(C,!1,!0))}),!0)},W=function(){D=!1,e&&O.update(e)};return N(),{isActive:function(){return D},getElapsed:function(){return Lg(0,F,Z)},getProgress:function(){return h},stop:function(){W()},pause:function(){return W(),this},resume:function(){return D||N(),this},seek:function(g){return Z=Ng(0,F,g),q.update(E,!1,!0),this},reverse:function(){return p(),this}}}))},ue=Lg(0,1),ye=function(g){var I=g.easings,e=g.ease,C=void 0===e?Cg:e,Q=g.times,F=g.values,B=Object(t.d)(g,["easings","ease","times","values"]);I=Array.isArray(I)?I:function(g,I){return g.map((function(){return I||Fg})).splice(0,g.length-1)}(F,I),Q=Q||function(g){var I=g.length;return g.map((function(g,e){return 0!==e?e/(I-1):0}))}(F);var n=I.map((function(g,I){return re({from:F[I],to:F[I+1],ease:g})}));return de(Object(t.a)({},B,{ease:C})).applyMiddleware((function(g){return function(g,I,e){var t=g.length,C=t-1,Q=C-1,F=I.map((function(g){return g.start(e)}));return function(I){I<=g[0]&&F[0].seek(0),I>=g[C]&&F[Q].seek(1);for(var e=1;e<t&&!(g[e]>I||e===C);e++);var B=Eg(g[e-1],g[e],I);F[e-1].seek(ue(B))}}(Q,n,g)}))},be=ce((function(g){return void 0===g&&(g={}),KI((function(I){var e=I.complete,t=I.update,C=g.acceleration,Q=void 0===C?0:C,F=g.friction,B=void 0===F?0:F,n=g.velocity,U=void 0===n?0:n,s=g.springStrength,i=g.to,c=g.restSpeed,A=void 0===c?.001:c,l=g.from,a=void 0===l?0:l,r=q.update((function(g){var I=g.delta,C=Math.max(I,16);(Q&&(U+=eI(Q,C)),B&&(U*=Math.pow(1-B,C/100)),void 0!==s&&void 0!==i)&&(U+=(i-a)*eI(s,C));a+=eI(U,C),t(a),!1!==A&&(!U||Math.abs(U)<=A)&&(O.update(r),e())}),!0);return{set:function(g){return a=g,this},setAcceleration:function(g){return Q=g,this},setFriction:function(g){return B=g,this},setSpringStrength:function(g){return s=g,this},setSpringTarget:function(g){return i=g,this},setVelocity:function(g){return U=g,this},stop:function(){return O.update(r)}}}))}),{acceleration:c.test,friction:c.test,velocity:c.test,from:c.test,to:c.test,springStrength:c.test}),Ze=function(g,I,e){return KI((function(t){var C=t.update,Q=I.split(" ").map((function(I){return g.addEventListener(I,C,e),I}));return{stop:function(){return Q.forEach((function(I){return g.removeEventListener(I,C,e)}))}}}))},me=function(){return{clientX:0,clientY:0,pageX:0,pageY:0,x:0,y:0}},xe=function(g,I){return void 0===I&&(I={clientX:0,clientY:0,pageX:0,pageY:0,x:0,y:0}),I.clientX=I.x=g.clientX,I.clientY=I.y=g.clientY,I.pageX=g.pageX,I.pageY=g.pageY,I},Re=[me()],Se=!1;if("undefined"!==typeof document){Ze(document,"touchstart touchmove",{passive:!0,capture:!0}).start((function(g){var I=g.touches;Se=!0;var e=I.length;Re.length=0;for(var t=0;t<e;t++){var C=I[t];Re.push(xe(C))}}))}var Ge=me(),Le=!1;if("undefined"!==typeof document){Ze(document,"mousedown mousemove",!0).start((function(g){Le=!0,xe(g,Ge)}))}var Ve,he=function(g){return g[0]},De=function(g){return void 0===g&&(g={}),Se?function(g){var I=void 0===g?{}:g,e=I.preventDefault,t=void 0===e||e,C=I.scale,Q=void 0===C?1:C,F=I.rotate,B=void 0===F?0:F;return KI((function(g){var I=g.update,e={touches:Re,scale:Q,rotate:B},C=0,F=0,n=Re.length>1;if(n){var U=Re[0],s=Re[1];C=pg(U,s),F=Rg(U,s)}var i=function(){if(n){var g=Re[0],t=Re[1],U=pg(g,t),s=Rg(g,t);e.scale=Q*(U/C),e.rotate=B+(s-F)}I(e)},c=Ze(document,"touchmove",{passive:!t}).start((function(g){(t||g.touches.length>1)&&g.preventDefault(),q.update(i)}));return Se&&q.update(i),{stop:function(){O.update(i),c.stop()}}}))}(g).pipe((function(g){return g.touches}),he):function(g){var I=(void 0===g?{}:g).preventDefault,e=void 0===I||I;return KI((function(g){var I=g.update,t=function(){return I(Ge)},C=Ze(document,"mousemove").start((function(g){e&&g.preventDefault(),q.update(t)}));return Le&&q.update(t),{stop:function(){O.update(t),C.stop()}}}))}(g)},pe=function(){for(var g=[],I=0;I<arguments.length;I++)g[I]=arguments[I];return KI((function(I){var e,t=I.update,C=I.complete,Q=0;return function I(){e=g[Q].start({complete:function(){++Q>=g.length?C():I()},update:t})}(),{stop:function(){return e&&e.stop()}}}))},Ee=function(g){return KI((function(I){var e=I.complete,t=setTimeout(e,g);return{stop:function(){return clearTimeout(t)}}}))},Ne=Object.freeze({applyOffset:Sg,clamp:Lg,conditional:function(g,I){return function(e){return g(e)?I(e):e}},interpolate:function(g,I,e){var t=void 0===e?{}:e,C=t.clamp,Q=void 0===C||C,F=t.ease,B=t.mixer,n=g.length;I.length,!F||!Array.isArray(F)||F.length,g[0]>g[n-1]&&(g=[].concat(g),I=[].concat(I),g.reverse(),I.reverse());var U=jg(I,F,B),s=2===n?function(g,I){var e=g[0],t=g[1],C=I[0];return function(g){return C(Eg(e,t,g))}}(g,U):function(g,I){var e=g.length,t=e-1;return function(C){var Q=0,F=!1;if(C<=g[0]?F=!0:C>=g[t]&&(Q=t-1,F=!0),!F){for(var B=1;B<e&&!(g[B]>C||B===t);B++);Q=B-1}var n=Eg(g[Q],g[Q+1],C);return I[Q](n)}}(g,U);return Q?Mg(Lg(g[0],g[n-1]),s):s},blendArray:wg,blendColor:kg,pipe:Mg,smooth:function(g){void 0===g&&(g=50);var I=0,e=0;return function(t){var C=_().timestamp,Q=C!==e?C-e:0,F=Q?_g(I,t,Q,g):I;return e=C,I=F,F}},snap:function(g){if("number"===typeof g)return function(I){return Math.round(I/g)*g};var I=0,e=g.length;return function(t){var C=Math.abs(g[0]-t);for(I=1;I<e;I++){var Q=g[I],F=Math.abs(Q-t);if(0===F)return Q;if(F>C)return g[I-1];if(I===e-1)return Q;C=F}}},generateStaticSpring:$g,nonlinearSpring:II,linearSpring:gI,wrap:CI,appendUnit:function(g){return function(I){return""+I+g}},steps:function(g,I,e){return void 0===I&&(I=0),void 0===e&&(e=1),function(t){var C=Eg(I,e,t);return Ng(I,e,PI(g,C))}},transformMap:function(g){return function(I){var e=Object(t.a)({},I);for(var C in g)if(g.hasOwnProperty(C)){var Q=g[C];e[C]=Q(I[C])}return e}}}),We=function(g){g.transition,g.flip,g.delay,g.delayChildren,g.staggerChildren,g.staggerDirection,g.afterChildren,g.beforeChildren,g.preTransition,g.applyAtStart,g.applyAtEnd;return Object(t.d)(g,["transition","flip","delay","delayChildren","staggerChildren","staggerDirection","afterChildren","beforeChildren","preTransition","applyAtStart","applyAtEnd"])},fe=function(g,I){return"function"===typeof g?g(I):g},Xe=function(g,I,e,t){return g&&void 0!==g[I]?fe(g[I],t):e},Je=function(g,I,e,t,C){return Object.keys(g).forEach((function(Q){var F=fe(g[Q],e);I.has(Q)?t(I.get(Q),F):C(Q,F,e)}))},ve=function(g){var I=g.state,e=g.poses,C=g.startAction,Q=g.stopAction,F=g.getInstantTransition,B=g.addActionDelay,n=g.getTransitionProps,U=g.resolveTarget,s=g.transformPose,i=g.posePriority,c=g.convertTransitionDefinition,A=g.setValue,l=g.setValueNative,a=g.forceRender;return function(g,r,o){void 0===r&&(r={}),void 0===o&&(o=!0);var d=I.children,u=I.values,y=I.props,b=I.activeActions,Z=I.activePoses,m=r.delay,x=void 0===m?0:m,R=d.size,S=Object(t.a)(Object(t.a)({},y),r),G=e[g],L=function(){return R&&o?function(g,I,e,t){var C=[],Q=Xe(e,"delayChildren",0,t),F=Xe(e,"staggerChildren",0,t),B=Xe(e,"staggerDirection",1,t),n=(g.size-1)*F,U=1===B?function(g){return g*F}:function(g){return n-g*F};return Array.from(g).forEach((function(g,e){C.push(g.set(I,{delay:Q+U(e)}))})),C}(d,g,G,S):[]},V=function(){if(!G)return[];var e=G.applyAtStart;e&&(Je(e,u,S,A,l),a&&a(S)),s&&(G=s(G,g,I));var r=G.preTransition,o=G.transition,d=G.applyAtEnd;r&&r(S);var y=Object.keys(We(G)).map((function(I){var e=(Z.has(I)||Z.set(I,[]),Z.get(I)),s=e.indexOf(g);-1!==s&&e.splice(s,1);var A=i?i.indexOf(g):0,l=A<=0?0:function(g,I,e){for(var t=0,C=e-1;C>=0;C--){var Q=g.indexOf(I[C]);if(-1!==Q){t=Q+1;break}}return t}(e,i,A);return e.splice(l,0,g),0===l?new Promise((function(g){var e=u.get(I),s=Object(t.a)(Object(t.a)({},S),{key:I,value:e}),i=U(e,fe(G[I],s));b.has(I)&&Q(b.get(I));var A=Object(t.a)(Object(t.a)({to:i},s),n(e,i,s)),l=function g(I,e,t,C,Q,F){var B;if("function"===typeof I)B=g(I(C),e,t,C,Q,F);else if(I[e]||I.default){var n=I[e]||I.default;B="function"===typeof n?n(C):n}else B=I;return!1===B?F(t,C):Q(t,B,C)}(o,I,e,A,c,F),a=x||fe(G.delay,s);a&&(l=B(a,l)),b.set(I,C(e,l,g))})):Promise.resolve()}));return d?[Promise.all(y).then((function(){Je(d,u,S,A,l)}))]:y};if(G&&R){if(fe(G.beforeChildren,S))return Promise.all(V()).then((function(){return Promise.all(L())}));if(fe(G.afterChildren,S))return Promise.all(L()).then((function(){return Promise.all(V())}))}return Promise.all(Object(t.f)(V(),L()))}},ke=function(g){return function(g){return g.includes("scale")}(g)?1:0},He=function(g){var I=Array.isArray(g)?g:[g];return I.push("init"),I},Me=function(g,I,e,t,C,Q){void 0===C&&(C=ke);var F=He(e).filter(Boolean).find((function(e){var t=g[e];return t&&(void 0!==t[I]||t.applyAtStart&&void 0!==t.applyAtStart[I]||t.applyAtEnd&&void 0!==t.applyAtEnd[I])}));return Q.set(I,[F||"init"]),F?function(g,I,e){var t=g.applyAtEnd&&void 0!==g.applyAtEnd[I]?g.applyAtEnd[I]:void 0!==g[I]?g[I]:g.applyAtStart&&void 0!==g.applyAtStart[I]?g.applyAtStart[I]:0;return fe(t,e)}(g[F],I,t):C(I,t)},Ye=function(g,I){return function(e){var t=I.poses[e];Object.keys(We(t)).forEach(function(g,I){var e=I.userSetValues,t=I.createValue,C=I.convertValue,Q=I.readValueFromSource,F=I.initialPose,B=I.poses,n=I.activePoses,U=I.props;return function(I){if(!g.has(I)){var s;if(e&&void 0!==e[I])s=C(e[I],I,U);else{var i=Me(B,I,F,U,Q,n);s=t(i,I,U)}g.set(I,s)}}}(g,I))}},we=function(g){var I=g.poses,e=g.passive,t=new Map;return Object.keys(I).forEach(Ye(t,g)),function(g){var I=g.setValueNative,e=g.initialPose,t=g.props,C=g.poses,Q=new Set,F=function(g,e){if(g[e])for(var C in g[e])Q.has(C)||(Q.add(C),I(C,fe(g[e][C],t),t))};He(e).forEach((function(g){var I=C[g];I&&(F(I,"applyAtEnd"),F(I,"applyAtStart"))}))}(g),e&&Object.keys(e).forEach(function(g,I){var e=I.passive,t=I.ancestorValues,C=I.createValue,Q=I.readValue,F=I.props;return function(I){var B=e[I],n=B[0],U=B[1],s=B[2],i=s&&t.length?function(g,I,e){if(!0===I)return e[0]&&e[0].values.get(g);var t=e.find((function(g){return g.label===I}));return t&&t.values.get(g)}(n,s,t):!!g.has(n)&&g.get(n);if(i){var c=C(Q(i),I,F,{passiveParentKey:n,passiveParent:i,passiveProps:U});g.set(I,c)}}}(t,g)),t},Te=function(g,I){return Object.keys(g).forEach((function(e){var C=g[e];g[e]=void 0!==C.transition?C:function(g,I,e){return Object(t.a)(Object(t.a)({},g),{transition:e.has(I)?e.get(I):e.get("default")})}(C,e,I)})),g},ze=function(g){var I=g.getDefaultProps,e=g.defaultTransitions,C=g.bindOnChange,Q=g.startAction,F=g.stopAction,B=g.readValue,n=g.readValueFromSource,U=g.resolveTarget,s=g.setValue,i=g.setValueNative,c=g.createValue,A=g.convertValue,l=g.getInstantTransition,a=g.getTransitionProps,r=g.addActionDelay,o=g.selectValueToRead,d=g.convertTransitionDefinition,u=g.transformPose,y=g.posePriority,b=g.forceRender,Z=g.extendAPI;return function(g){var m=g.parentValues,x=g.ancestorValues,R=void 0===x?[]:x;m&&R.unshift({values:m});var S=new Map,G=new Map,L=new Set,V=Te(function(g){g.label,g.props,g.values,g.parentValues,g.ancestorValues,g.onChange,g.passive,g.initialPose;return Object(t.d)(g,["label","props","values","parentValues","ancestorValues","onChange","passive","initialPose"])}(g),e),h=g.props,D=void 0===h?{}:h;I&&(D=Object(t.a)(Object(t.a)({},I(g)),D));var p=g.passive,E=g.values,N=g.initialPose,W=void 0===N?"init":N,f=we({poses:V,passive:p,ancestorValues:R,readValue:B,setValueNative:i,createValue:c,convertValue:A,readValueFromSource:n,userSetValues:E,initialPose:W,activePoses:G,props:D}),X={activeActions:S,activePoses:G,children:L,props:D,values:f},J=g.onChange;J&&Object.keys(J).forEach(C(f,J));var v=ve({state:X,poses:V,getInstantTransition:l,getTransitionProps:a,convertTransitionDefinition:d,setValue:s,setValueNative:i,startAction:Q,stopAction:F,resolveTarget:U,addActionDelay:r,transformPose:u,posePriority:y,forceRender:b});return Z({set:v,unset:function(g,I){var e=[];G.forEach((function(I){var t=I.indexOf(g);if(-1!==t){var C=I[0];I.splice(t,1);var Q=I[0];Q!==C&&-1===e.indexOf(Q)&&e.push(Q)}}));var t,C=e.sort((t=y,function(g,I){var e=t.indexOf(g),C=t.indexOf(I);return-1===e&&-1!==C?-1:-1!==e&&-1===C?1:e-C})).map((function(g){return v(g,I,!1)}));return L.forEach((function(I){return C.push(I.unset(g))})),Promise.all(C)},get:function(g){return g?o(f.get(g)):function(g,I){var e={};return g.forEach((function(g,t){return e[t]=I(g)})),e}(f,o)},has:function(g){return!!V[g]},setProps:function(g){return X.props=Object(t.a)(Object(t.a)({},X.props),g)},_addChild:function(I,e){var C=e(Object(t.a)(Object(t.a)({initialPose:W},I),{ancestorValues:Object(t.f)([{label:g.label,values:f}],R)}));return L.add(C),C},removeChild:function(g){return L.delete(g)},clearChildren:function(){L.forEach((function(g){return g.destroy()})),L.clear()},destroy:function(){S.forEach(F),L.forEach((function(g){return g.destroy()}))}},X,g)}},Oe=function(){return(Oe=Object.assign||function(g){for(var I,e=1,t=arguments.length;e<t;e++)for(var C in I=arguments[e])Object.prototype.hasOwnProperty.call(I,C)&&(g[C]=I[C]);return g}).apply(this,arguments)};function Ke(g,I){var e={};for(var t in g)Object.prototype.hasOwnProperty.call(g,t)&&I.indexOf(t)<0&&(e[t]=g[t]);if(null!=g&&"function"===typeof Object.getOwnPropertySymbols){var C=0;for(t=Object.getOwnPropertySymbols(g);C<t.length;C++)I.indexOf(t[C])<0&&Object.prototype.propertyIsEnumerable.call(g,t[C])&&(e[t[C]]=g[t[C]])}return e}!function(g){g.width="width",g.height="height",g.left="left",g.right="right",g.top="top",g.bottom="bottom"}(Ve||(Ve={}));var je=function(g,I){return"function"===typeof g?g(I):g},Pe=Ne.interpolate,_e=function(g){return function(I){var e;return function(g){void 0===g&&(g={});var I=g.x,e=g.y,C=Object(t.d)(g,["x","y"]);if(void 0!==I||void 0!==e){var Q=Sg(I||0),F=Sg(e||0),B={x:0,y:0};return De(C).pipe((function(g){return B.x=Q(g.x),B.y=F(g.y),B}))}return De(C)}((e={},e[g]="string"===typeof I?parseFloat(I):I,e)).pipe((function(I){return I[g]}))}},qe=_e("x"),$e=_e("y"),gt=function(g,I,e,t){return function(C){var Q=C.from,F=C.type,B=C.dimensions,n=C.dragBounds,U=g(B.measurementAsPixels(t,Q,F)),s=[];if(n){var i=je(n,C);void 0!==i[I]&&s.push((function(g){return Math.max(g,B.measurementAsPixels(t,i[I],F))})),void 0!==i[e]&&s.push((function(g){return Math.min(g,B.measurementAsPixels(t,i[e],F))}))}return F===o&&s.push(Pe([0,B.get(t)],[0,100],{clamp:!1}),(function(g){return g+"%"})),s.length?U.pipe.apply(U,s):U}},It=function(g){return KI((function(I){var e=I.update,t=I.complete;e(g),t()}))},et=function(g){var I=g.from,e=g.velocity,t=g.to;return ae({from:I,to:t,velocity:e,stiffness:500,damping:25,restDelta:.5,restSpeed:10})},tt=function(g){var I=g.from,e=g.velocity,t=g.to;return ae({from:I,to:t,velocity:e,stiffness:700,damping:0===t?100:35})},Ct={x:et,y:et,z:et,rotate:et,rotateX:et,rotateY:et,rotateZ:et,scaleX:tt,scaleY:tt,scale:tt,opacity:function(g){var I=g.from,e=g.to;return de({from:I,to:e,ease:Cg})},default:de},Qt=Oe(Oe({},Ct),{x:gt(qe,"left","right",Ve.width),y:gt($e,"top","bottom",Ve.height)}),Ft=function(g){var I=g.from;return It(I)},Bt=new Map([["default",Ct],["drag",Qt],["dragEnd",Oe(Oe({},Ct),{x:Ft,y:Ft})]]),nt={tween:de,spring:ae,decay:le,keyframes:ye,physics:be},Ut={linear:Cg,easeIn:Qg,easeOut:Fg,easeInOut:Bg,circIn:ng,circOut:Ug,circInOut:sg,backIn:ig,backOut:cg,backInOut:Ag,anticipate:lg},st=[c,r,o,d,y,u,{test:function(g){return"auto"===g},parse:function(g){return g}}],it=function(g){return st.find(function(g){return function(I){return I.test(g)}}(g))},ct=function(g,I){return void 0===g&&(g=0),pe(Ee(g),I)},At=function(g){var I=g.transformPose,e=g.addListenerToValue,t=g.extendAPI,C=g.readValueFromSource,Q=g.posePriority,F=g.setValueNative;return ze({bindOnChange:function(g,I){return function(e){g.has(e)&&g.get(e).raw.subscribe(I[e])}},readValue:function(g){return g.raw.get()},setValue:function(g,I){return g.raw.update(I)},createValue:function(g,I,t,C){var Q=t.elementStyler,F=void 0===C?{}:C,B=F.passiveParent,n=F.passiveProps,U=B?function(g,I,e){var t=qI(e(g));return I.raw.subscribe((function(g){return t.update(e(g))})),{raw:t}}(g,B,n):function(g){var I=it(g);return{raw:qI(g),type:I}}(g);return U.raw.subscribe(e(I,Q)),U},convertValue:function(g,I,t){var C=t.elementStyler;return g.subscribe(e(I,C)),{raw:g,type:it(g.get())}},getTransitionProps:function(g,I){var e=g.raw,t=g.type;return{from:e.get(),velocity:e.getVelocity(),to:I,type:t}},resolveTarget:function(g,I){return I},selectValueToRead:function(g){return g.raw},startAction:function(g,I,e){var t=g.raw,C={update:function(g){return t.update(g)},complete:e};return I.start(C)},stopAction:function(g){return g.stop()},getInstantTransition:function(g,I){var e=I.to;return It(e)},convertTransitionDefinition:function(g,I,e){if(function(g){return"undefined"!==typeof g.start}(I))return I;var t=I.delay,C=I.min,Q=I.max,F=I.round,B=function(g,I,e){var t,C=e.from,Q=e.to,F=e.velocity,B=I.type,n=void 0===B?"tween":B,U=I.ease,s=Ke(I,["type","ease"]);if(nt[n],"tween"===n&&"function"!==typeof U)if("string"===typeof U)t=Ut[U];else if(Array.isArray(U)&&"number"===typeof U[0]){U.length,t=bg(U[0],U[1],U[2],U[3])}t=t||U;var i="keyframes"!==n?{from:C,to:Q,velocity:F,ease:t}:{ease:t};return nt[n](Oe(Oe({},i),s))}(0,Ke(I,["delay","min","max","round"]),e),n=[];return t&&(B=ct(t,B)),void 0!==C&&n.push((function(g){return Math.max(g,C)})),void 0!==Q&&n.push((function(g){return Math.min(g,Q)})),F&&n.push(Math.round),n.length?B.pipe.apply(B,n):B},setValueNative:F,addActionDelay:ct,defaultTransitions:Bt,transformPose:I,readValueFromSource:C,posePriority:Q,extendAPI:t})},lt=function(g){var I=!1,e={width:0,height:0,top:0,left:0,bottom:0,right:0};return{get:function(g){return g?e[g]:e},measure:function(){return e=g.getBoundingClientRect(),I=!0,e},measurementAsPixels:function(g,I,t){return t===o?("string"===typeof I?parseFloat(I):I)/100*e[g]:I},has:function(){return I}}},at=function(g){var I=g.startEvents,e=g.endEvents,t=g.startPose,C=g.endPose,Q=g.startCallback,F=g.endCallback,B=g.useDocumentToEnd,n=g.preventScroll;return function(g,U,s,i){var c=t+"Start",A=t+"End",l=t+"Move";if(n){var a=Ze(g,"touchmove",{passive:!1}).start((function(g){g.preventDefault()}));U.set(l,a)}var r=Ze(g,I).start((function(I){s.unset(C),s.set(t),Q&&i[Q]&&i[Q](I);var n=Ze(B?document.documentElement:g,e+(B?" mouseenter":"")).start((function(g){B&&"mouseenter"===g.type&&1===g.buttons||(U.get(A).stop(),s.unset(t),s.set(C),F&&i[F]&&i[F](g))}));U.set(A,n)}));U.set(c,r)}},rt={draggable:at({startEvents:"mousedown touchstart",endEvents:"mouseup touchend",startPose:"drag",endPose:"dragEnd",startCallback:"onDragStart",endCallback:"onDragEnd",useDocumentToEnd:!0,preventScroll:!0}),hoverable:at({startEvents:"mouseenter",endEvents:"mouseleave",startPose:"hover",endPose:"hoverEnd"}),focusable:at({startEvents:"focus",endEvents:"blur",startPose:"focus",endPose:"blur"}),pressable:at({startEvents:"mousedown touchstart",endEvents:"mouseup touchend",startPose:"press",endPose:"pressEnd",startCallback:"onPressStart",endCallback:"onPressEnd",useDocumentToEnd:!0})},ot=Object.keys(rt),dt=function(g){var I=g.top,e=g.right,t=g.bottom;return{x:(g.left+e)/2,y:(I+t)/2}},ut=["width","height","top","left","bottom","right"],yt=new Set(ut),bt=function(g){return yt.has(g)},Zt=function(g,I,e){var t=g.values,C=g.props;if(t.has(I)){var Q=t.get(I).raw;Q.update(e),Q.update(e)}else t.set(I,{raw:qI(e,(function(g){return C.elementStyler.set(I,g)}))})},mt=function(g,I){var e=g.props,t=e.dimensions,C=e.element,Q=e.elementStyler;if(!t.has())return{};var F=t.get(),B=function(g){var I=g.style.transform;g.style.transform="";var e=g.getBoundingClientRect();return g.style.transform=I,e}(C),n=F.left===B.left?0:F.right===B.right?"100%":"50%",U=F.top===B.top?0:F.bottom===B.bottom?"100%":"50%";Q.set({originX:n,originY:U}),F.width!==B.width&&(Zt(g,"scaleX",F.width/B.width),I.scaleX=1),F.height!==B.height&&(Zt(g,"scaleY",F.height/B.height),I.scaleY=1);var s=dt(F),i=dt(B);return"50%"===n&&(Zt(g,"x",s.x-i.x),I.x=0),"50%"===U&&(Zt(g,"y",s.y-i.y),I.y=0),Q.render(),I},xt=function(g,I){return e=I,Object.keys(e).some(bt)?function(g,I){var e=g.props,t=e.dimensions,C=e.elementStyler;t.measure();I.width,I.height,I.top,I.left,I.bottom,I.right,I.position;var Q=Ke(I,["width","height","top","left","bottom","right","position"]),F=ut.concat("position").reduce((function(e,t){return void 0!==I[t]&&(e[t]=je(I[t],g.props)),e}),{});return C.set(F).render(),mt(g,Q)}(g,I):mt(g,I);var e},Rt=function(g,I){return parseFloat(g.split(", ")[I])},St=function(g,I){return function(e,t,C){var Q=C.transform;if(!Q||"none"===Q)return 0;var F=Q.match(/^matrix3d\((.+)\)$/);return F?Rt(F[1],I):Rt(Q.match(/^matrix\((.+)\)$/)[1],g)}},Gt={width:function(g,I){var e=I.width;return e},height:function(g,I){var e=I.height;return e},top:function(g,I,e){var t=e.top;return parseFloat(t)},left:function(g,I,e){var t=e.left;return parseFloat(t)},bottom:function(g,I,e){var t=I.height,C=e.top;return parseFloat(C)+t},right:function(g,I,e){var t=I.width,C=e.left;return parseFloat(C)+t},x:St(4,13),y:St(5,14)},Lt=function(g){return void 0!==Gt[g]},Vt=function(g){return function(I){return I.elementStyler.get(g)}},ht=function(g,I){var e=I.onDragStart,t=I.onDragEnd,C=I.onPressStart,Q=I.onPressEnd,F=I.draggable,B=I.hoverable,n=I.focusable,U=I.pressable,s=I.dragBounds,i=Ke(I,["onDragStart","onDragEnd","onPressStart","onPressEnd","draggable","hoverable","focusable","pressable","dragBounds"]),c=Oe(Oe({flip:{}},i),{props:Oe(Oe({},i.props),{onDragStart:e,onDragEnd:t,onPressStart:C,onPressEnd:Q,dragBounds:s,draggable:F,hoverable:B,focusable:n,pressable:U,element:g,elementStyler:YI(g,{preparseOutput:!1}),dimensions:lt(g)})});if(F){var A=function(g){var I={preTransition:function(g){return g.dimensions.measure()}},e={};return!0!==g&&"x"!==g||(I.x=e.x=Vt("x")),!0!==g&&"y"!==g||(I.y=e.y=Vt("y")),{drag:I,dragEnd:e}}(F),l=A.drag,a=A.dragEnd;c.drag=Oe(Oe({},l),c.drag),c.dragEnd=Oe(Oe({},a),c.dragEnd)}return c},Dt=At({posePriority:["drag","press","focus","hover"],transformPose:function(g,I,e){var t,C=g.flip,Q=Ke(g,["flip"]);return function(g,I,e){return e.props.element instanceof HTMLElement&&(!0===g||"flip"===I)}(C,I,e)?xt(e,Q):(t=Q,Object.keys(t).some(Lt)?function(g,I){var e=g.values,t=g.props,C=t.element,Q=t.elementStyler,F=Object.keys(I).filter(Lt),B=[],n=getComputedStyle(C),U=!1;if(F.forEach((function(C){var Q=e.get(C),F=it(Q.raw.get()),n=je(I[C],t);F!==it(n)&&(B.push(C),U||(U=!0,I.applyAtEnd=I.applyAtEnd?Oe({},I.applyAtEnd):{}),I.applyAtEnd[C]=I.applyAtEnd[C]||I[C],Zt(g,C,n))})),!B.length)return I;var s=C.getBoundingClientRect(),i={top:n.top,left:n.left,bottom:n.bottom,right:n.right,transform:n.transform};Q.render();var c=C.getBoundingClientRect();return B.forEach((function(e){Zt(g,e,Gt[e](C,s,i)),I[e]=Gt[e](C,c,n)})),Q.render(),I}(e,Q):Q)},forceRender:function(g){g.elementStyler.render()},addListenerToValue:function(g,I){return function(e){return I.set(g,e)}},readValueFromSource:function(g,I){var e=I.elementStyler,t=I.dragBounds,C=e.get(g);if(t&&("x"===g||"y"===g)){var Q="x"===g?t.left||t.right:t.top||t.bottom;if(Q)C=it(Q).transform(C)}return isNaN(C)?C:parseFloat(C)},setValueNative:function(g,I,e){return e.elementStyler.set(g,I)},extendAPI:function(g,I,e){var t=I.props,C=I.activeActions,Q=t.dimensions.measure,F=Oe(Oe({},g),{addChild:function(I,e){return g._addChild(ht(I,e),Dt)},measure:Q,flip:function(I){return I&&(Q(),I()),g.set("flip")}});return t.elementStyler.render(),function(g,I,e,t){var C=t.props;ot.forEach((function(t){C[t]&&rt[t](g,I,e,C)}))}(t.element,C,F,e),F}}),pt=function(g,I){return Dt(ht(g,I))};var Et=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|default|defer|dir|disabled|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|itemProp|itemScope|itemType|itemID|itemRef|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,Nt=function(g){var I={};return function(e){return void 0===I[e]&&(I[e]=g(e)),I[e]}}((function(g){return Et.test(g)||111===g.charCodeAt(0)&&110===g.charCodeAt(1)&&g.charCodeAt(2)<91})),Wt=Object(C.createContext)({}),ft=Wt.Consumer,Xt=Wt.Provider,Jt=function(g,I){return Array.isArray(g)?-1!==g.indexOf(I):g===I},vt=function(){return!0},kt=function(g){g.elementType,g.poseConfig,g.onValueChange,g.innerRef,g._pose,g.pose,g.initialPose,g.poseKey,g.onPoseComplete,g.getParentPoseConfig,g.registerChild,g.onUnmount,g.getInitialPoseFromParent,g.popFromFlow,g.values,g.parentValues,g.onDragStart,g.onDragEnd,g.onPressStart,g.onPressEnd;return Object(t.d)(g,["elementType","poseConfig","onValueChange","innerRef","_pose","pose","initialPose","poseKey","onPoseComplete","getParentPoseConfig","registerChild","onUnmount","getInitialPoseFromParent","popFromFlow","values","parentValues","onDragStart","onDragEnd","onPressStart","onPressEnd"])},Ht=function(g){function I(I){var e=g.call(this,I)||this;e.children=new Set,e.childrenHandlers={registerChild:function(g){e.children.add(g),e.poser&&e.flushChildren()},onUnmount:function(g){return e.poser.removeChild(g)},getParentPoseConfig:function(){return e.poseConfig},getInitialPoseFromParent:function(){return e.getInitialPose()}},e.setRef=function(g){null===g||g instanceof Element&&e.ref,e.ref=g;var I=e.props.innerRef;I&&("function"===typeof I?I(g):I.current=g)},e.shouldForwardProp="string"===typeof e.props.elementType?Nt:vt;var t=e.props.poseConfig;return e.poseConfig="function"===typeof t?t(kt(I)):t,e}return Object(t.b)(I,g),I.prototype.getInitialPose=function(){var g=this.props,I=g.getInitialPoseFromParent,e=g.pose,t=g._pose,C=g.initialPose;if(C)return C;var Q=I&&I(),F=(Array.isArray(Q)?Q:[Q]).concat(e,t).filter(Boolean);return F.length>0?F:void 0},I.prototype.getFirstPose=function(){var g=this.props,I=g.initialPose,e=g.pose,t=g._pose;if(I){var C=(Array.isArray(e)?e:[e]).concat(t).filter(Boolean);return 1===C.length?C[0]:C}},I.prototype.getSetProps=function(){var g,I=kt(this.props);return this.props.popFromFlow&&this.ref&&this.ref instanceof HTMLElement?this.popStyle?I.style=this.popStyle:(I.style=Object(t.a)(Object(t.a)({},I.style),{position:"absolute",top:(g=this.ref).offsetTop,left:g.offsetLeft,width:g.offsetWidth,height:g.offsetHeight}),this.popStyle=I.style):this.popStyle=null,I},I.prototype.componentDidMount=function(){var g=this;this.ref,Element;var I,e=this.props,C=e.onValueChange,Q=e.registerChild,F=e.values,B=e.parentValues,n=e.onDragStart,U=e.onDragEnd,s=e.onPressStart,i=e.onPressEnd,c=Object(t.a)(Object(t.a)({},this.poseConfig),{initialPose:this.getInitialPose(),values:F||this.poseConfig.values,parentValues:B?(I=B,Object.keys(I).reduce((function(g,e){return g.set(e,{raw:I[e]}),g}),new Map)):void 0,props:this.getSetProps(),onDragStart:n,onDragEnd:U,onPressStart:s,onPressEnd:i,onChange:C});Q?Q({element:this.ref,poseConfig:c,onRegistered:function(I){return g.initPoser(I)}}):this.initPoser(pt(this.ref,c))},I.prototype.getSnapshotBeforeUpdate=function(){var g=this.props,I=g.pose,e=g._pose;return(Jt(I,"flip")||Jt(e,"flip"))&&this.poser.measure(),null},I.prototype.componentDidUpdate=function(g){var I=this.props,e=I.pose,t=I._pose,C=I.poseKey;this.poser.setProps(this.getSetProps()),(C!==g.poseKey||function(g,I){if(g===I)return!1;var e=Array.isArray(g),t=Array.isArray(I);if(e!==t||!e&&!t)return!0;if(e&&t){var C=g.length;if(C!==I.length)return!0;for(var Q=0;Q<C;Q++)if(g[Q]!==I[Q])return!0}return!1}(g.pose,e)||"flip"===e)&&this.setPose(e),t===g._pose&&"flip"!==t||this.setPose(t)},I.prototype.componentWillUnmount=function(){if(this.poser){var g=this.props.onUnmount;g&&g(this.poser),this.poser.destroy()}},I.prototype.initPoser=function(g){this.poser=g,this.flushChildren();var I=this.getFirstPose();I&&this.setPose(I)},I.prototype.setPose=function(g){var I=this,e=this.props.onPoseComplete,t=Array.isArray(g)?g:[g];Promise.all(t.map((function(g){return g&&I.poser.set(g)}))).then((function(){return e&&e(g)}))},I.prototype.flushChildren=function(){var g=this;this.children.forEach((function(I){var e=I.element,t=I.poseConfig;return(0,I.onRegistered)(g.poser.addChild(e,t))})),this.children.clear()},I.prototype.render=function(){var g,I=this.props.elementType;return Q.a.createElement(Xt,{value:this.childrenHandlers},Object(C.createElement)(I,(g=this.shouldForwardProp,[this.getSetProps(),{ref:this.setRef}].reduce((function(I,e){for(var t in e)g(t)&&(I[t]=e[t]);return I}),{}))))},I}(C.PureComponent),Mt=new Map,Yt=function(g){var I=function(I){return void 0===I&&(I={}),Object(C.forwardRef)((function(e,C){var F=e.withParent,B=void 0===F||F,n=Object(t.d)(e,["withParent"]);return n.innerRef,!B||n.parentValues?Q.a.createElement(Ht,Object(t.a)({poseConfig:I,innerRef:C,elementType:g},n)):Q.a.createElement(ft,null,(function(e){return Q.a.createElement(Ht,Object(t.a)({poseConfig:I,elementType:g,innerRef:C},n,e))}))}))};return Mt.set(g,I),I},wt=function(g){return I=g,Mt.has(I)?Mt.get(I):Yt(I);var I};["a","article","aside","audio","b","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dialog","div","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","i","iframe","img","input","label","legend","li","nav","object","ol","option","p","param","picture","pre","progress","q","section","select","span","strong","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","ul","video","circle","clipPath","defs","ellipse","g","image","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","tspan"].reduce((function(g,I){return g[I]=Yt(I),g}),wt);var Tt=function(g){return g&&g.key,("number"===typeof g.key?g.key.toString():g.key).replace(".$","")},zt=function(g,I){return Object(C.createElement)(g.type,Object(t.a)(Object(t.a)({key:g.key,ref:g.ref},I),g.props))},Ot=function(g,I){var e=function(g,I){var e=I.displayedChildren,Q=I.finishedLeaving,F=I.hasInitialized,B=I.indexedChildren,n=I.scheduleChildRemoval,U=g.children,s=g.preEnterPose,i=g.enterPose,c=g.exitPose,A=g.animateOnMount,l=(g.enterAfterExit,g.flipMove),a=(g.onRest,Object(t.d)(g,["children","preEnterPose","enterPose","exitPose","animateOnMount","enterAfterExit","flipMove","onRest"])),r=Kt(U),o={displayedChildren:[]};var d=e.map(Tt),u=r.map(Tt),y=0!==Object.keys(a).length,b=new Set(u.filter((function(g){return Q.hasOwnProperty(g)||-1===d.indexOf(g)})));b.forEach((function(g){return delete Q[g]}));var Z=[],m={};d.forEach((function(g){if(!b.has(g)){var I=Q.hasOwnProperty(g);(I||-1===u.indexOf(g))&&(Z.push(g),I||(Q[g]=!1,m[g]=!0))}}));var x=new Set(d.filter((function(g,I){return!b.has(g)||-1===Z.indexOf(g)})));return r.forEach((function(g){var I={};b.has(g.key)?((F||A)&&(I.initialPose=s),I._pose=i):x.has(g.key)&&l?I._pose=[i,"flip"]:I._pose=i;var e=Object(C.cloneElement)(g,I);B[g.key]=e,o.displayedChildren.push(y?zt(e,a):e)})),Z.forEach((function(g){var I=B[g],e=m[g]?Object(C.cloneElement)(I,{_pose:c,onPoseComplete:function(e){e===c&&n(g);var t=I.props.onPoseComplete;t&&t(e)},popFromFlow:l}):I,t=d.indexOf(g);B[I.key]=e,o.displayedChildren.splice(t,0,y?zt(e,a):e)})),o}(g,I);return e.hasInitialized=!0,e},Kt=function(g){var I=[];return C.Children.forEach(g,(function(g){return g&&I.push(g)})),I},jt=function(g){function I(){var I=null!==g&&g.apply(this,arguments)||this;return I.state={displayedChildren:[],finishedLeaving:{},hasInitialized:!1,indexedChildren:{},scheduleChildRemoval:function(g){return I.removeChild(g)}},I}return Object(t.b)(I,g),I.prototype.removeChild=function(g){var I=this.state,e=I.displayedChildren,C=I.finishedLeaving,Q=this.props,F=Q.enterAfterExit,B=Q.onRest;if(C.hasOwnProperty(g)&&(C[g]=!0,Object.keys(C).every((function(g){return C[g]})))){var n=e.filter((function(g){return!C.hasOwnProperty(g.key)})),U=F?Object(t.a)({finishedLeaving:{}},Ot(Object(t.a)(Object(t.a)({},this.props),{enterAfterExit:!1}),Object(t.a)(Object(t.a)({},this.state),{displayedChildren:n}))):{finishedLeaving:{},displayedChildren:n};this.setState(U,B)}},I.prototype.shouldComponentUpdate=function(g,I){return this.state!==I},I.prototype.render=function(){return this.state.displayedChildren},I.defaultProps={flipMove:!1,enterAfterExit:!1,preEnterPose:"exit",enterPose:"enter",exitPose:"exit"},I.getDerivedStateFromProps=Ot,I}(C.Component);(function(g){function I(){return null!==g&&g.apply(this,arguments)||this}Object(t.b)(I,g),I.prototype.render=function(){return Object(C.createElement)(jt,Object(t.a)({},this.props))},I.defaultProps={flipMove:!0}})(C.Component),I.a=wt},function(g,I,e){"use strict";e.d(I,"a",(function(){return n})),e.d(I,"b",(function(){return s}));var t=e(11),C=e(75),Q=e(322),F=e(371),B=e(108),n=function(){function g(){this._notifyingListeners=!1,this._scopeListeners=[],this._eventProcessors=[],this._breadcrumbs=[],this._user={},this._tags={},this._extra={},this._contexts={}}return g.clone=function(I){var e=new g;return I&&(e._breadcrumbs=Object(t.e)(I._breadcrumbs),e._tags=Object(t.a)({},I._tags),e._extra=Object(t.a)({},I._extra),e._contexts=Object(t.a)({},I._contexts),e._user=I._user,e._level=I._level,e._span=I._span,e._session=I._session,e._transactionName=I._transactionName,e._fingerprint=I._fingerprint,e._eventProcessors=Object(t.e)(I._eventProcessors),e._requestSession=I._requestSession),e},g.prototype.addScopeListener=function(g){this._scopeListeners.push(g)},g.prototype.addEventProcessor=function(g){return this._eventProcessors.push(g),this},g.prototype.setUser=function(g){return this._user=g||{},this._session&&this._session.update({user:g}),this._notifyScopeListeners(),this},g.prototype.getUser=function(){return this._user},g.prototype.getRequestSession=function(){return this._requestSession},g.prototype.setRequestSession=function(g){return this._requestSession=g,this},g.prototype.setTags=function(g){return this._tags=Object(t.a)(Object(t.a)({},this._tags),g),this._notifyScopeListeners(),this},g.prototype.setTag=function(g,I){var e;return this._tags=Object(t.a)(Object(t.a)({},this._tags),((e={})[g]=I,e)),this._notifyScopeListeners(),this},g.prototype.setExtras=function(g){return this._extra=Object(t.a)(Object(t.a)({},this._extra),g),this._notifyScopeListeners(),this},g.prototype.setExtra=function(g,I){var e;return this._extra=Object(t.a)(Object(t.a)({},this._extra),((e={})[g]=I,e)),this._notifyScopeListeners(),this},g.prototype.setFingerprint=function(g){return this._fingerprint=g,this._notifyScopeListeners(),this},g.prototype.setLevel=function(g){return this._level=g,this._notifyScopeListeners(),this},g.prototype.setTransactionName=function(g){return this._transactionName=g,this._notifyScopeListeners(),this},g.prototype.setTransaction=function(g){return this.setTransactionName(g)},g.prototype.setContext=function(g,I){var e;return null===I?delete this._contexts[g]:this._contexts=Object(t.a)(Object(t.a)({},this._contexts),((e={})[g]=I,e)),this._notifyScopeListeners(),this},g.prototype.setSpan=function(g){return this._span=g,this._notifyScopeListeners(),this},g.prototype.getSpan=function(){return this._span},g.prototype.getTransaction=function(){var g,I,e,t,C=this.getSpan();return(null===(g=C)||void 0===g?void 0:g.transaction)?null===(I=C)||void 0===I?void 0:I.transaction:(null===(t=null===(e=C)||void 0===e?void 0:e.spanRecorder)||void 0===t?void 0:t.spans[0])?C.spanRecorder.spans[0]:void 0},g.prototype.setSession=function(g){return g?this._session=g:delete this._session,this._notifyScopeListeners(),this},g.prototype.getSession=function(){return this._session},g.prototype.update=function(I){if(!I)return this;if("function"===typeof I){var e=I(this);return e instanceof g?e:this}return I instanceof g?(this._tags=Object(t.a)(Object(t.a)({},this._tags),I._tags),this._extra=Object(t.a)(Object(t.a)({},this._extra),I._extra),this._contexts=Object(t.a)(Object(t.a)({},this._contexts),I._contexts),I._user&&Object.keys(I._user).length&&(this._user=I._user),I._level&&(this._level=I._level),I._fingerprint&&(this._fingerprint=I._fingerprint),I._requestSession&&(this._requestSession=I._requestSession)):Object(C.h)(I)&&(I=I,this._tags=Object(t.a)(Object(t.a)({},this._tags),I.tags),this._extra=Object(t.a)(Object(t.a)({},this._extra),I.extra),this._contexts=Object(t.a)(Object(t.a)({},this._contexts),I.contexts),I.user&&(this._user=I.user),I.level&&(this._level=I.level),I.fingerprint&&(this._fingerprint=I.fingerprint),I.requestSession&&(this._requestSession=I.requestSession)),this},g.prototype.clear=function(){return this._breadcrumbs=[],this._tags={},this._extra={},this._user={},this._contexts={},this._level=void 0,this._transactionName=void 0,this._fingerprint=void 0,this._requestSession=void 0,this._span=void 0,this._session=void 0,this._notifyScopeListeners(),this},g.prototype.addBreadcrumb=function(g,I){var e="number"===typeof I?Math.min(I,100):100;if(e<=0)return this;var C=Object(t.a)({timestamp:Object(Q.b)()},g);return this._breadcrumbs=Object(t.e)(this._breadcrumbs,[C]).slice(-e),this._notifyScopeListeners(),this},g.prototype.clearBreadcrumbs=function(){return this._breadcrumbs=[],this._notifyScopeListeners(),this},g.prototype.applyToEvent=function(g,I){var e;if(this._extra&&Object.keys(this._extra).length&&(g.extra=Object(t.a)(Object(t.a)({},this._extra),g.extra)),this._tags&&Object.keys(this._tags).length&&(g.tags=Object(t.a)(Object(t.a)({},this._tags),g.tags)),this._user&&Object.keys(this._user).length&&(g.user=Object(t.a)(Object(t.a)({},this._user),g.user)),this._contexts&&Object.keys(this._contexts).length&&(g.contexts=Object(t.a)(Object(t.a)({},this._contexts),g.contexts)),this._level&&(g.level=this._level),this._transactionName&&(g.transaction=this._transactionName),this._span){g.contexts=Object(t.a)({trace:this._span.getTraceContext()},g.contexts);var C=null===(e=this._span.transaction)||void 0===e?void 0:e.name;C&&(g.tags=Object(t.a)({transaction:C},g.tags))}return this._applyFingerprint(g),g.breadcrumbs=Object(t.e)(g.breadcrumbs||[],this._breadcrumbs),g.breadcrumbs=g.breadcrumbs.length>0?g.breadcrumbs:void 0,this._notifyEventProcessors(Object(t.e)(U(),this._eventProcessors),g,I)},g.prototype._notifyEventProcessors=function(g,I,e,Q){var B=this;return void 0===Q&&(Q=0),new F.a((function(F,n){var U=g[Q];if(null===I||"function"!==typeof U)F(I);else{var s=U(Object(t.a)({},I),e);Object(C.m)(s)?s.then((function(I){return B._notifyEventProcessors(g,I,e,Q+1).then(F)})).then(null,n):B._notifyEventProcessors(g,s,e,Q+1).then(F).then(null,n)}}))},g.prototype._notifyScopeListeners=function(){var g=this;this._notifyingListeners||(this._notifyingListeners=!0,this._scopeListeners.forEach((function(I){I(g)})),this._notifyingListeners=!1)},g.prototype._applyFingerprint=function(g){g.fingerprint=g.fingerprint?Array.isArray(g.fingerprint)?g.fingerprint:[g.fingerprint]:[],this._fingerprint&&(g.fingerprint=g.fingerprint.concat(this._fingerprint)),g.fingerprint&&!g.fingerprint.length&&delete g.fingerprint},g}();function U(){var g=Object(B.e)();return g.__SENTRY__=g.__SENTRY__||{},g.__SENTRY__.globalEventProcessors=g.__SENTRY__.globalEventProcessors||[],g.__SENTRY__.globalEventProcessors}function s(g){U().push(g)}},function(g,I,e){(function(I){var e=function(){"use strict";function g(e,C,Q,F){"object"===typeof C&&(Q=C.depth,F=C.prototype,C.filter,C=C.circular);var B=[],n=[],U="undefined"!=typeof I;return"undefined"==typeof C&&(C=!0),"undefined"==typeof Q&&(Q=1/0),function e(Q,s){if(null===Q)return null;if(0==s)return Q;var i,c;if("object"!=typeof Q)return Q;if(g.__isArray(Q))i=[];else if(g.__isRegExp(Q))i=new RegExp(Q.source,t(Q)),Q.lastIndex&&(i.lastIndex=Q.lastIndex);else if(g.__isDate(Q))i=new Date(Q.getTime());else{if(U&&I.isBuffer(Q))return i=I.allocUnsafe?I.allocUnsafe(Q.length):new I(Q.length),Q.copy(i),i;"undefined"==typeof F?(c=Object.getPrototypeOf(Q),i=Object.create(c)):(i=Object.create(F),c=F)}if(C){var A=B.indexOf(Q);if(-1!=A)return n[A];B.push(Q),n.push(i)}for(var l in Q){var a;c&&(a=Object.getOwnPropertyDescriptor(c,l)),a&&null==a.set||(i[l]=e(Q[l],s-1))}return i}(e,Q)}function e(g){return Object.prototype.toString.call(g)}function t(g){var I="";return g.global&&(I+="g"),g.ignoreCase&&(I+="i"),g.multiline&&(I+="m"),I}return g.clonePrototype=function(g){if(null===g)return null;var I=function(){};return I.prototype=g,new I},g.__objToStr=e,g.__isDate=function(g){return"object"===typeof g&&"[object Date]"===e(g)},g.__isArray=function(g){return"object"===typeof g&&"[object Array]"===e(g)},g.__isRegExp=function(g){return"object"===typeof g&&"[object RegExp]"===e(g)},g.__getRegExpFlags=t,g}();g.exports&&(g.exports=e)}).call(this,e(103).Buffer)},function(g,I){g.exports=function(g,I){if(null==g)return{};var e,t,C={},Q=Object.keys(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||(C[e]=g[e]);return C},g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I,e){"use strict";e.d(I,"b",(function(){return d})),e.d(I,"c",(function(){return S})),e.d(I,"a",(function(){return G}));var t="persist/REHYDRATE",C="persist/REGISTER";function Q(g){return(Q="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"===typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g})(g)}function F(g,I){var e=Object.keys(g);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(g);I&&(t=t.filter((function(I){return Object.getOwnPropertyDescriptor(g,I).enumerable}))),e.push.apply(e,t)}return e}function B(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}function n(g,I,e,t){t.debug;var C=function(g){for(var I=1;I<arguments.length;I++){var e=null!=arguments[I]?arguments[I]:{};I%2?F(e,!0).forEach((function(I){B(g,I,e[I])})):Object.getOwnPropertyDescriptors?Object.defineProperties(g,Object.getOwnPropertyDescriptors(e)):F(e).forEach((function(I){Object.defineProperty(g,I,Object.getOwnPropertyDescriptor(e,I))}))}return g}({},e);return g&&"object"===Q(g)&&Object.keys(g).forEach((function(t){"_persist"!==t&&I[t]===e[t]&&(C[t]=g[t])})),C}function U(g){var I,e=g.blacklist||null,t=g.whitelist||null,C=g.transforms||[],Q=g.throttle||0,F="".concat(void 0!==g.keyPrefix?g.keyPrefix:"persist:").concat(g.key),B=g.storage;I=!1===g.serialize?function(g){return g}:"function"===typeof g.serialize?g.serialize:s;var n=g.writeFailHandler||null,U={},i={},c=[],A=null,l=null;function a(){if(0===c.length)return A&&clearInterval(A),void(A=null);var g=c.shift(),e=C.reduce((function(I,e){return e.in(I,g,U)}),U[g]);if(void 0!==e)try{i[g]=I(e)}catch(t){console.error("redux-persist/createPersistoid: error serializing state",t)}else delete i[g];0===c.length&&(Object.keys(i).forEach((function(g){void 0===U[g]&&delete i[g]})),l=B.setItem(F,I(i)).catch(o))}function r(g){return(!t||-1!==t.indexOf(g)||"_persist"===g)&&(!e||-1===e.indexOf(g))}function o(g){n&&n(g)}return{update:function(g){Object.keys(g).forEach((function(I){r(I)&&U[I]!==g[I]&&-1===c.indexOf(I)&&c.push(I)})),Object.keys(U).forEach((function(I){void 0===g[I]&&r(I)&&-1===c.indexOf(I)&&void 0!==U[I]&&c.push(I)})),null===A&&(A=setInterval(a,Q)),U=g},flush:function(){for(;0!==c.length;)a();return l||Promise.resolve()}}}function s(g){return JSON.stringify(g)}function i(g){var I,e=g.transforms||[],t="".concat(void 0!==g.keyPrefix?g.keyPrefix:"persist:").concat(g.key),C=g.storage;g.debug;return I=!1===g.deserialize?function(g){return g}:"function"===typeof g.deserialize?g.deserialize:c,C.getItem(t).then((function(g){if(g)try{var t={},C=I(g);return Object.keys(C).forEach((function(g){t[g]=e.reduceRight((function(I,e){return e.out(I,g,C)}),I(C[g]))})),t}catch(Q){throw Q}}))}function c(g){return JSON.parse(g)}function A(g){0}function l(g,I){var e=Object.keys(g);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(g);I&&(t=t.filter((function(I){return Object.getOwnPropertyDescriptor(g,I).enumerable}))),e.push.apply(e,t)}return e}function a(g){for(var I=1;I<arguments.length;I++){var e=null!=arguments[I]?arguments[I]:{};I%2?l(e,!0).forEach((function(I){r(g,I,e[I])})):Object.getOwnPropertyDescriptors?Object.defineProperties(g,Object.getOwnPropertyDescriptors(e)):l(e).forEach((function(I){Object.defineProperty(g,I,Object.getOwnPropertyDescriptor(e,I))}))}return g}function r(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}function o(g,I){if(null==g)return{};var e,t,C=function(g,I){if(null==g)return{};var e,t,C={},Q=Object.keys(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||(C[e]=g[e]);return C}(g,I);if(Object.getOwnPropertySymbols){var Q=Object.getOwnPropertySymbols(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||Object.prototype.propertyIsEnumerable.call(g,e)&&(C[e]=g[e])}return C}function d(g,I){var e=void 0!==g.version?g.version:-1,C=(g.debug,void 0===g.stateReconciler?n:g.stateReconciler),Q=g.getStoredState||i,F=void 0!==g.timeout?g.timeout:5e3,B=null,s=!1,c=!0,l=function(g){return g._persist.rehydrated&&B&&!c&&B.update(g),g};return function(n,i){var r=n||{},d=r._persist,u=o(r,["_persist"]);if("persist/PERSIST"===i.type){var y=!1,b=function(I,e){y||(i.rehydrate(g.key,I,e),y=!0)};if(F&&setTimeout((function(){!y&&b(void 0,new Error('redux-persist: persist timed out for persist key "'.concat(g.key,'"')))}),F),c=!1,B||(B=U(g)),d)return a({},I(u,i),{_persist:d});if("function"!==typeof i.rehydrate||"function"!==typeof i.register)throw new Error("redux-persist: either rehydrate or register is not a function on the PERSIST action. This can happen if the action is being replayed. This is an unexplored use case, please open an issue and we will figure out a resolution.");return i.register(g.key),Q(g).then((function(I){(g.migrate||function(g,I){return Promise.resolve(g)})(I,e).then((function(g){b(g)}),(function(g){b(void 0,g)}))}),(function(g){b(void 0,g)})),a({},I(u,i),{_persist:{version:e,rehydrated:!1}})}if("persist/PURGE"===i.type)return s=!0,i.result(function(g){var I=g.storage,e="".concat(void 0!==g.keyPrefix?g.keyPrefix:"persist:").concat(g.key);return I.removeItem(e,A)}(g)),a({},I(u,i),{_persist:d});if("persist/FLUSH"===i.type)return i.result(B&&B.flush()),a({},I(u,i),{_persist:d});if("persist/PAUSE"===i.type)c=!0;else if(i.type===t){if(s)return a({},u,{_persist:a({},d,{rehydrated:!0})});if(i.key===g.key){var Z=I(u,i),m=i.payload,x=a({},!1!==C&&void 0!==m?C(m,n,Z,g):Z,{_persist:a({},d,{rehydrated:!0})});return l(x)}}if(!d)return I(n,i);var R=I(u,i);return R===u?n:l(a({},R,{_persist:d}))}}var u=e(169);function y(g){return function(g){if(Array.isArray(g)){for(var I=0,e=new Array(g.length);I<g.length;I++)e[I]=g[I];return e}}(g)||function(g){if(Symbol.iterator in Object(g)||"[object Arguments]"===Object.prototype.toString.call(g))return Array.from(g)}(g)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}function b(g,I){var e=Object.keys(g);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(g);I&&(t=t.filter((function(I){return Object.getOwnPropertyDescriptor(g,I).enumerable}))),e.push.apply(e,t)}return e}function Z(g){for(var I=1;I<arguments.length;I++){var e=null!=arguments[I]?arguments[I]:{};I%2?b(e,!0).forEach((function(I){m(g,I,e[I])})):Object.getOwnPropertyDescriptors?Object.defineProperties(g,Object.getOwnPropertyDescriptors(e)):b(e).forEach((function(I){Object.defineProperty(g,I,Object.getOwnPropertyDescriptor(e,I))}))}return g}function m(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}var x={registry:[],bootstrapped:!1},R=function(){var g=arguments.length>0&&void 0!==arguments[0]?arguments[0]:x,I=arguments.length>1?arguments[1]:void 0;switch(I.type){case C:return Z({},g,{registry:[].concat(y(g.registry),[I.key])});case t:var e=g.registry.indexOf(I.key),Q=y(g.registry);return Q.splice(e,1),Z({},g,{registry:Q,bootstrapped:0===Q.length});default:return g}};function S(g,I,e){var Q=e||!1,F=Object(u.e)(R,x,I&&I.enhancer?I.enhancer:void 0),B=function(g){F.dispatch({type:C,key:g})},n=function(I,e,C){var B={type:t,payload:e,err:C,key:I};g.dispatch(B),F.dispatch(B),Q&&U.getState().bootstrapped&&(Q(),Q=!1)},U=Z({},F,{purge:function(){var I=[];return g.dispatch({type:"persist/PURGE",result:function(g){I.push(g)}}),Promise.all(I)},flush:function(){var I=[];return g.dispatch({type:"persist/FLUSH",result:function(g){I.push(g)}}),Promise.all(I)},pause:function(){g.dispatch({type:"persist/PAUSE"})},persist:function(){g.dispatch({type:"persist/PERSIST",register:B,rehydrate:n})}});return I&&I.manualPersist||U.persist(),U}function G(g,I){(I||{}).debug;return function(I,e){if(!I)return Promise.resolve(void 0);var t=I._persist&&void 0!==I._persist.version?I._persist.version:-1;if(t===e)return Promise.resolve(I);if(t>e)return Promise.resolve(I);var C=Object.keys(g).map((function(g){return parseInt(g)})).filter((function(g){return e>=g&&g>t})).sort((function(g,I){return g-I}));try{var Q=C.reduce((function(I,e){return g[e](I)}),I);return Promise.resolve(Q)}catch(F){return Promise.reject(F)}}}},function(g,I,e){"use strict";e.d(I,"a",(function(){return F}));var t=e(0),C=e.n(t),Q=e(428);function F(){return C.a.useContext(Q.a)}},function(g,I,e){"use strict";var t=e(16),C=e(5),Q=e(0),F=(e(4),e(14)),B=e(21),n=[0,1,2,3,4,5,6,7,8,9,10],U=["auto",!0,1,2,3,4,5,6,7,8,9,10,11,12];function s(g){var I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,e=parseFloat(g);return"".concat(e/I).concat(String(g).replace(String(e),"")||"px")}var i=Q.forwardRef((function(g,I){var e=g.alignContent,B=void 0===e?"stretch":e,n=g.alignItems,U=void 0===n?"stretch":n,s=g.classes,i=g.className,c=g.component,A=void 0===c?"div":c,l=g.container,a=void 0!==l&&l,r=g.direction,o=void 0===r?"row":r,d=g.item,u=void 0!==d&&d,y=g.justify,b=void 0===y?"flex-start":y,Z=g.lg,m=void 0!==Z&&Z,x=g.md,R=void 0!==x&&x,S=g.sm,G=void 0!==S&&S,L=g.spacing,V=void 0===L?0:L,h=g.wrap,D=void 0===h?"wrap":h,p=g.xl,E=void 0!==p&&p,N=g.xs,W=void 0!==N&&N,f=g.zeroMinWidth,X=void 0!==f&&f,J=Object(t.a)(g,["alignContent","alignItems","classes","className","component","container","direction","item","justify","lg","md","sm","spacing","wrap","xl","xs","zeroMinWidth"]),v=Object(F.default)(s.root,i,a&&[s.container,0!==V&&s["spacing-xs-".concat(String(V))]],u&&s.item,X&&s.zeroMinWidth,"row"!==o&&s["direction-xs-".concat(String(o))],"wrap"!==D&&s["wrap-xs-".concat(String(D))],"stretch"!==U&&s["align-items-xs-".concat(String(U))],"stretch"!==B&&s["align-content-xs-".concat(String(B))],"flex-start"!==b&&s["justify-xs-".concat(String(b))],!1!==W&&s["grid-xs-".concat(String(W))],!1!==G&&s["grid-sm-".concat(String(G))],!1!==R&&s["grid-md-".concat(String(R))],!1!==m&&s["grid-lg-".concat(String(m))],!1!==E&&s["grid-xl-".concat(String(E))]);return Q.createElement(A,Object(C.a)({className:v,ref:I},J))})),c=Object(B.a)((function(g){return Object(C.a)({root:{},container:{boxSizing:"border-box",display:"flex",flexWrap:"wrap",width:"100%"},item:{boxSizing:"border-box",margin:"0"},zeroMinWidth:{minWidth:0},"direction-xs-column":{flexDirection:"column"},"direction-xs-column-reverse":{flexDirection:"column-reverse"},"direction-xs-row-reverse":{flexDirection:"row-reverse"},"wrap-xs-nowrap":{flexWrap:"nowrap"},"wrap-xs-wrap-reverse":{flexWrap:"wrap-reverse"},"align-items-xs-center":{alignItems:"center"},"align-items-xs-flex-start":{alignItems:"flex-start"},"align-items-xs-flex-end":{alignItems:"flex-end"},"align-items-xs-baseline":{alignItems:"baseline"},"align-content-xs-center":{alignContent:"center"},"align-content-xs-flex-start":{alignContent:"flex-start"},"align-content-xs-flex-end":{alignContent:"flex-end"},"align-content-xs-space-between":{alignContent:"space-between"},"align-content-xs-space-around":{alignContent:"space-around"},"justify-xs-center":{justifyContent:"center"},"justify-xs-flex-end":{justifyContent:"flex-end"},"justify-xs-space-between":{justifyContent:"space-between"},"justify-xs-space-around":{justifyContent:"space-around"},"justify-xs-space-evenly":{justifyContent:"space-evenly"}},function(g,I){var e={};return n.forEach((function(t){var C=g.spacing(t);0!==C&&(e["spacing-".concat(I,"-").concat(t)]={margin:"-".concat(s(C,2)),width:"calc(100% + ".concat(s(C),")"),"& > $item":{padding:s(C,2)}})})),e}(g,"xs"),g.breakpoints.keys.reduce((function(I,e){return function(g,I,e){var t={};U.forEach((function(g){var I="grid-".concat(e,"-").concat(g);if(!0!==g)if("auto"!==g){var C="".concat(Math.round(g/12*1e8)/1e6,"%");t[I]={flexBasis:C,flexGrow:0,maxWidth:C}}else t[I]={flexBasis:"auto",flexGrow:0,maxWidth:"none"};else t[I]={flexBasis:0,flexGrow:1,maxWidth:"100%"}})),"xs"===e?Object(C.a)(g,t):g[I.breakpoints.up(e)]=t}(I,g,e),I}),{}))}),{name:"MuiGrid"})(i);I.a=c},function(g,I,e){"use strict";var t;e.d(I,"a",(function(){return t})),function(g){g.Explicit="explicitly_set",g.Sampler="client_sampler",g.Rate="client_rate",g.Inheritance="inheritance"}(t||(t={}))},function(g,I,e){"use strict";var t=e(435),C=e(436),Q=(e(4),e(0)),F=e.n(Q),B=e(42),n=e.n(B),U=!1,s=e(316),i=function(g){function I(I,e){var t;t=g.call(this,I,e)||this;var C,Q=e&&!e.isMounting?I.enter:I.appear;return t.appearStatus=null,I.in?Q?(C="exited",t.appearStatus="entering"):C="entered":C=I.unmountOnExit||I.mountOnEnter?"unmounted":"exited",t.state={status:C},t.nextCallback=null,t}Object(C.a)(I,g),I.getDerivedStateFromProps=function(g,I){return g.in&&"unmounted"===I.status?{status:"exited"}:null};var e=I.prototype;return e.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},e.componentDidUpdate=function(g){var I=null;if(g!==this.props){var e=this.state.status;this.props.in?"entering"!==e&&"entered"!==e&&(I="entering"):"entering"!==e&&"entered"!==e||(I="exiting")}this.updateStatus(!1,I)},e.componentWillUnmount=function(){this.cancelNextCallback()},e.getTimeouts=function(){var g,I,e,t=this.props.timeout;return g=I=e=t,null!=t&&"number"!==typeof t&&(g=t.exit,I=t.enter,e=void 0!==t.appear?t.appear:I),{exit:g,enter:I,appear:e}},e.updateStatus=function(g,I){void 0===g&&(g=!1),null!==I?(this.cancelNextCallback(),"entering"===I?this.performEnter(g):this.performExit()):this.props.unmountOnExit&&"exited"===this.state.status&&this.setState({status:"unmounted"})},e.performEnter=function(g){var I=this,e=this.props.enter,t=this.context?this.context.isMounting:g,C=this.props.nodeRef?[t]:[n.a.findDOMNode(this),t],Q=C[0],F=C[1],B=this.getTimeouts(),s=t?B.appear:B.enter;!g&&!e||U?this.safeSetState({status:"entered"},(function(){I.props.onEntered(Q)})):(this.props.onEnter(Q,F),this.safeSetState({status:"entering"},(function(){I.props.onEntering(Q,F),I.onTransitionEnd(s,(function(){I.safeSetState({status:"entered"},(function(){I.props.onEntered(Q,F)}))}))})))},e.performExit=function(){var g=this,I=this.props.exit,e=this.getTimeouts(),t=this.props.nodeRef?void 0:n.a.findDOMNode(this);I&&!U?(this.props.onExit(t),this.safeSetState({status:"exiting"},(function(){g.props.onExiting(t),g.onTransitionEnd(e.exit,(function(){g.safeSetState({status:"exited"},(function(){g.props.onExited(t)}))}))}))):this.safeSetState({status:"exited"},(function(){g.props.onExited(t)}))},e.cancelNextCallback=function(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},e.safeSetState=function(g,I){I=this.setNextCallback(I),this.setState(g,I)},e.setNextCallback=function(g){var I=this,e=!0;return this.nextCallback=function(t){e&&(e=!1,I.nextCallback=null,g(t))},this.nextCallback.cancel=function(){e=!1},this.nextCallback},e.onTransitionEnd=function(g,I){this.setNextCallback(I);var e=this.props.nodeRef?this.props.nodeRef.current:n.a.findDOMNode(this),t=null==g&&!this.props.addEndListener;if(e&&!t){if(this.props.addEndListener){var C=this.props.nodeRef?[this.nextCallback]:[e,this.nextCallback],Q=C[0],F=C[1];this.props.addEndListener(Q,F)}null!=g&&setTimeout(this.nextCallback,g)}else setTimeout(this.nextCallback,0)},e.render=function(){var g=this.state.status;if("unmounted"===g)return null;var I=this.props,e=I.children,C=(I.in,I.mountOnEnter,I.unmountOnExit,I.appear,I.enter,I.exit,I.timeout,I.addEndListener,I.onEnter,I.onEntering,I.onEntered,I.onExit,I.onExiting,I.onExited,I.nodeRef,Object(t.a)(I,["children","in","mountOnEnter","unmountOnExit","appear","enter","exit","timeout","addEndListener","onEnter","onEntering","onEntered","onExit","onExiting","onExited","nodeRef"]));return F.a.createElement(s.a.Provider,{value:null},"function"===typeof e?e(g,C):F.a.cloneElement(F.a.Children.only(e),C))},I}(F.a.Component);function c(){}i.contextType=s.a,i.propTypes={},i.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:c,onEntering:c,onEntered:c,onExit:c,onExiting:c,onExited:c},i.UNMOUNTED="unmounted",i.EXITED="exited",i.ENTERING="entering",i.ENTERED="entered",i.EXITING="exiting";I.a=i},,,,,,,,function(g,I,e){var t=e(50),C=e(57),Q=t.document,F=C(Q)&&C(Q.createElement);g.exports=function(g){return F?Q.createElement(g):{}}},function(g,I,e){var t=e(50),C=e(135);g.exports=function(g,I){try{C(t,g,I)}catch(e){t[g]=I}return I}},function(g,I,e){var t=e(615),C=Function.toString;"function"!=typeof t.inspectSource&&(t.inspectSource=function(g){return C.call(g)}),g.exports=t.inspectSource},function(g,I,e){var t=e(189),C=e(615);(g.exports=function(g,I){return C[g]||(C[g]=void 0!==I?I:{})})("versions",[]).push({version:"3.6.5",mode:t?"pure":"global",copyright:"\xa9 2020 Denis Pushkarev (zloirock.ru)"})},function(g,I,e){var t=e(177),C=e(250),Q=e(487),F=e(60);g.exports=t("Reflect","ownKeys")||function(g){var I=C.f(F(g)),e=Q.f;return e?I.concat(e(g)):I}},function(g,I){g.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(g,I){I.f=Object.getOwnPropertySymbols},function(g,I,e){var t=e(41);g.exports=!!Object.getOwnPropertySymbols&&!t((function(){return!String(Symbol())}))},function(g,I,e){var t,C,Q=e(50),F=e(490),B=Q.process,n=B&&B.versions,U=n&&n.v8;U?C=(t=U.split("."))[0]+t[1]:F&&(!(t=F.match(/Edge\/(\d+)/))||t[1]>=74)&&(t=F.match(/Chrome\/(\d+)/))&&(C=t[1]),g.exports=C&&+C},function(g,I,e){var t=e(177);g.exports=t("navigator","userAgent")||""},function(g,I,e){"use strict";var t=e(91),C=e(229),Q=e(69);g.exports=function(g){for(var I=t(this),e=Q(I.length),F=arguments.length,B=C(F>1?arguments[1]:void 0,e),n=F>2?arguments[2]:void 0,U=void 0===n?e:C(n,e);U>B;)I[B++]=g;return I}},function(g,I,e){var t=e(64),C=e(332),Q=t("iterator"),F=Array.prototype;g.exports=function(g){return void 0!==g&&(C.Array===g||F[Q]===g)}},function(g,I,e){var t={};t[e(64)("toStringTag")]="z",g.exports="[object z]"===String(t)},function(g,I,e){"use strict";var t=e(22),C=e(630),Q=e(178),F=e(277),B=e(190),n=e(135),U=e(126),s=e(64),i=e(189),c=e(332),A=e(631),l=A.IteratorPrototype,a=A.BUGGY_SAFARI_ITERATORS,r=s("iterator"),o=function(){return this};g.exports=function(g,I,e,s,A,d,u){C(e,I,s);var y,b,Z,m=function(g){if(g===A&&L)return L;if(!a&&g in S)return S[g];switch(g){case"keys":case"values":case"entries":return function(){return new e(this,g)}}return function(){return new e(this)}},x=I+" Iterator",R=!1,S=g.prototype,G=S[r]||S["@@iterator"]||A&&S[A],L=!a&&G||m(A),V="Array"==I&&S.entries||G;if(V&&(y=Q(V.call(new g)),l!==Object.prototype&&y.next&&(i||Q(y)===l||(F?F(y,l):"function"!=typeof y[r]&&n(y,r,o)),B(y,x,!0,!0),i&&(c[x]=o))),"values"==A&&G&&"values"!==G.name&&(R=!0,L=function(){return G.call(this)}),i&&!u||S[r]===L||n(S,r,L),c[I]=L,A)if(b={values:m("values"),keys:d?L:m("keys"),entries:m("entries")},u)for(Z in b)(a||R||!(Z in S))&&U(S,Z,b[Z]);else t({target:I,proto:!0,forced:a||R},b);return b}},function(g,I,e){var t=e(41);g.exports=!t((function(){function g(){}return g.prototype.constructor=null,Object.getPrototypeOf(new g)!==g.prototype}))},function(g,I,e){"use strict";var t=e(50),C=e(68),Q=e(634),F=e(135),B=e(279),n=e(41),U=e(233),s=e(162),i=e(69),c=e(635),A=e(993),l=e(178),a=e(277),r=e(250).f,o=e(76).f,d=e(491),u=e(190),y=e(146),b=y.get,Z=y.set,m=t.ArrayBuffer,x=m,R=t.DataView,S=R&&R.prototype,G=Object.prototype,L=t.RangeError,V=A.pack,h=A.unpack,D=function(g){return[255&g]},p=function(g){return[255&g,g>>8&255]},E=function(g){return[255&g,g>>8&255,g>>16&255,g>>24&255]},N=function(g){return g[3]<<24|g[2]<<16|g[1]<<8|g[0]},W=function(g){return V(g,23,4)},f=function(g){return V(g,52,8)},X=function(g,I){o(g.prototype,I,{get:function(){return b(this)[I]}})},J=function(g,I,e,t){var C=c(e),Q=b(g);if(C+I>Q.byteLength)throw L("Wrong index");var F=b(Q.buffer).bytes,B=C+Q.byteOffset,n=F.slice(B,B+I);return t?n:n.reverse()},v=function(g,I,e,t,C,Q){var F=c(e),B=b(g);if(F+I>B.byteLength)throw L("Wrong index");for(var n=b(B.buffer).bytes,U=F+B.byteOffset,s=t(+C),i=0;i<I;i++)n[U+i]=s[Q?i:I-i-1]};if(Q){if(!n((function(){m(1)}))||!n((function(){new m(-1)}))||n((function(){return new m,new m(1.5),new m(NaN),"ArrayBuffer"!=m.name}))){for(var k,H=(x=function(g){return U(this,x),new m(c(g))}).prototype=m.prototype,M=r(m),Y=0;M.length>Y;)(k=M[Y++])in x||F(x,k,m[k]);H.constructor=x}a&&l(S)!==G&&a(S,G);var w=new R(new x(2)),T=S.setInt8;w.setInt8(0,2147483648),w.setInt8(1,2147483649),!w.getInt8(0)&&w.getInt8(1)||B(S,{setInt8:function(g,I){T.call(this,g,I<<24>>24)},setUint8:function(g,I){T.call(this,g,I<<24>>24)}},{unsafe:!0})}else x=function(g){U(this,x,"ArrayBuffer");var I=c(g);Z(this,{bytes:d.call(new Array(I),0),byteLength:I}),C||(this.byteLength=I)},R=function(g,I,e){U(this,R,"DataView"),U(g,x,"DataView");var t=b(g).byteLength,Q=s(I);if(Q<0||Q>t)throw L("Wrong offset");if(Q+(e=void 0===e?t-Q:i(e))>t)throw L("Wrong length");Z(this,{buffer:g,byteLength:e,byteOffset:Q}),C||(this.buffer=g,this.byteLength=e,this.byteOffset=Q)},C&&(X(x,"byteLength"),X(R,"buffer"),X(R,"byteLength"),X(R,"byteOffset")),B(R.prototype,{getInt8:function(g){return J(this,1,g)[0]<<24>>24},getUint8:function(g){return J(this,1,g)[0]},getInt16:function(g){var I=J(this,2,g,arguments.length>1?arguments[1]:void 0);return(I[1]<<8|I[0])<<16>>16},getUint16:function(g){var I=J(this,2,g,arguments.length>1?arguments[1]:void 0);return I[1]<<8|I[0]},getInt32:function(g){return N(J(this,4,g,arguments.length>1?arguments[1]:void 0))},getUint32:function(g){return N(J(this,4,g,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(g){return h(J(this,4,g,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(g){return h(J(this,8,g,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(g,I){v(this,1,g,D,I)},setUint8:function(g,I){v(this,1,g,D,I)},setInt16:function(g,I){v(this,2,g,p,I,arguments.length>2?arguments[2]:void 0)},setUint16:function(g,I){v(this,2,g,p,I,arguments.length>2?arguments[2]:void 0)},setInt32:function(g,I){v(this,4,g,E,I,arguments.length>2?arguments[2]:void 0)},setUint32:function(g,I){v(this,4,g,E,I,arguments.length>2?arguments[2]:void 0)},setFloat32:function(g,I){v(this,4,g,W,I,arguments.length>2?arguments[2]:void 0)},setFloat64:function(g,I){v(this,8,g,f,I,arguments.length>2?arguments[2]:void 0)}});u(x,"ArrayBuffer"),u(R,"DataView"),g.exports={ArrayBuffer:x,DataView:R}},function(g,I){g.exports=Math.sign||function(g){return 0==(g=+g)||g!=g?g:g<0?-1:1}},function(g,I,e){"use strict";var t=e(162),C=e(134);g.exports="".repeat||function(g){var I=String(C(this)),e="",Q=t(g);if(Q<0||Q==1/0)throw RangeError("Wrong number of repetitions");for(;Q>0;(Q>>>=1)&&(I+=I))1&Q&&(e+=I);return e}},function(g,I,e){var t,C,Q,F=e(50),B=e(41),n=e(176),U=e(231),s=e(622),i=e(481),c=e(643),A=F.location,l=F.setImmediate,a=F.clearImmediate,r=F.process,o=F.MessageChannel,d=F.Dispatch,u=0,y={},b=function(g){if(y.hasOwnProperty(g)){var I=y[g];delete y[g],I()}},Z=function(g){return function(){b(g)}},m=function(g){b(g.data)},x=function(g){F.postMessage(g+"",A.protocol+"//"+A.host)};l&&a||(l=function(g){for(var I=[],e=1;arguments.length>e;)I.push(arguments[e++]);return y[++u]=function(){("function"==typeof g?g:Function(g)).apply(void 0,I)},t(u),u},a=function(g){delete y[g]},"process"==n(r)?t=function(g){r.nextTick(Z(g))}:d&&d.now?t=function(g){d.now(Z(g))}:o&&!c?(Q=(C=new o).port2,C.port1.onmessage=m,t=U(Q.postMessage,Q,1)):!F.addEventListener||"function"!=typeof postMessage||F.importScripts||B(x)||"file:"===A.protocol?t="onreadystatechange"in i("script")?function(g){s.appendChild(i("script")).onreadystatechange=function(){s.removeChild(this),b(g)}}:function(g){setTimeout(Z(g),0)}:(t=x,F.addEventListener("message",m,!1))),g.exports={set:l,clear:a}},function(g,I,e){var t=e(57),C=e(176),Q=e(64)("match");g.exports=function(g){var I;return t(g)&&(void 0!==(I=g[Q])?!!I:"RegExp"==C(g))}},function(g,I,e){"use strict";var t=e(41);function C(g,I){return RegExp(g,I)}I.UNSUPPORTED_Y=t((function(){var g=C("a","y");return g.lastIndex=2,null!=g.exec("abcd")})),I.BROKEN_CARET=t((function(){var g=C("^r","gy");return g.lastIndex=2,null!=g.exec("str")}))},function(g,I,e){var t=e(500);g.exports=function(g){if(t(g))throw TypeError("The method doesn't accept regular expressions");return g}},function(g,I,e){var t=e(64)("match");g.exports=function(g){var I=/./;try{"/./"[g](I)}catch(e){try{return I[t]=!1,"/./"[g](I)}catch(C){}}return!1}},function(g,I,e){"use strict";var t=e(394).charAt;g.exports=function(g,I,e){return I+(e?t(g,I).length:1)}},function(g,I,e){var t=e(41),C=e(390);g.exports=function(g){return t((function(){return!!C[g]()||"\u200b\x85\u180e"!="\u200b\x85\u180e"[g]()||C[g].name!==g}))}},function(g,I,e){var t=e(50),C=e(41),Q=e(384),F=e(70).NATIVE_ARRAY_BUFFER_VIEWS,B=t.ArrayBuffer,n=t.Int8Array;g.exports=!F||!C((function(){n(1)}))||!C((function(){new n(-1)}))||!Q((function(g){new n,new n(null),new n(1.5),new n(g)}),!0)||C((function(){return 1!==new n(new B(2),1,void 0).length}))},function(g,I,e){"use strict";I.__esModule=!0,I.default=function(g){var I={};for(var e in g)Object.prototype.hasOwnProperty.call(g,e)&&(I[e]=0);return I},g.exports=I.default},function(g,I,e){"use strict";I.__esModule=!0,I.default=function(g,I,e,C,Q,F,B){var n=e+(-Q*(I-C)+-F*e)*g,U=I+n*g;if(Math.abs(n)<B&&Math.abs(U-C)<B)return t[0]=C,t[1]=0,t;return t[0]=U,t[1]=n,t};var t=[0,0];g.exports=I.default},function(g,I,e){(function(I){(function(){var e,t,C;"undefined"!==typeof performance&&null!==performance&&performance.now?g.exports=function(){return performance.now()}:"undefined"!==typeof I&&null!==I&&I.hrtime?(g.exports=function(){return(e()-C)/1e6},t=I.hrtime,C=(e=function(){var g;return 1e9*(g=t())[0]+g[1]})()):Date.now?(g.exports=function(){return Date.now()-C},C=Date.now()):(g.exports=function(){return(new Date).getTime()-C},C=(new Date).getTime())}).call(this)}).call(this,e(92))},function(g,I,e){"use strict";I.__esModule=!0,I.default=function(g,I,e){for(var t in I)if(Object.prototype.hasOwnProperty.call(I,t)){if(0!==e[t])return!1;var C="number"===typeof I[t]?I[t]:I[t].val;if(g[t]!==C)return!1}return!0},g.exports=I.default},function(g,I,e){"use strict";e.r(I);var t=e(558);e.d(I,"default",(function(){return t.a}))},function(g,I,e){var t=e(678);g.exports=function(g,I){if(g){if("string"===typeof g)return t(g,I);var e=Object.prototype.toString.call(g).slice(8,-1);return"Object"===e&&g.constructor&&(e=g.constructor.name),"Map"===e||"Set"===e?Array.from(e):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?t(g,I):void 0}}},function(g,I,e){"use strict";var t=e(681);g.exports=t},function(g,I,e){"use strict";(function(g){Object.defineProperty(I,"__esModule",{value:!0});var e="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"===typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g},t="undefined"!==typeof window&&"undefined"!==typeof window.document,C="object"===("undefined"===typeof self?"undefined":e(self))&&self.constructor&&"DedicatedWorkerGlobalScope"===self.constructor.name,Q="undefined"!==typeof g&&null!=g.versions&&null!=g.versions.node;I.isBrowser=t,I.isWebWorker=C,I.isNode=Q}).call(this,e(92))},function(g,I,e){var t=e(1228).Symbol;g.exports=t},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0});var t=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g},C=function(){function g(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}return function(I,e,t){return e&&g(I.prototype,e),t&&g(I,t),I}}(),Q=s(e(0)),F=s(e(517)),B=s(e(404)),n=s(e(4)),U=s(e(691));function s(g){return g&&g.__esModule?g:{default:g}}var i={to:n.default.string.isRequired,containerId:n.default.string,container:n.default.object,activeClass:n.default.string,spy:n.default.bool,smooth:n.default.oneOfType([n.default.bool,n.default.string]),offset:n.default.number,delay:n.default.number,isDynamic:n.default.bool,onClick:n.default.func,duration:n.default.oneOfType([n.default.number,n.default.func]),absolute:n.default.bool,onSetActive:n.default.func,onSetInactive:n.default.func,ignoreCancelEvents:n.default.bool,hashSpy:n.default.bool};I.default=function(g,I){var e=I||B.default,n=function(I){function B(g){!function(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}(this,B);var I=function(g,I){if(!g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!I||"object"!==typeof I&&"function"!==typeof I?g:I}(this,(B.__proto__||Object.getPrototypeOf(B)).call(this,g));return s.call(I),I.state={active:!1},I}return function(g,I){if("function"!==typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function, not "+typeof I);g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,enumerable:!1,writable:!0,configurable:!0}}),I&&(Object.setPrototypeOf?Object.setPrototypeOf(g,I):g.__proto__=I)}(B,I),C(B,[{key:"getScrollSpyContainer",value:function(){var g=this.props.containerId,I=this.props.container;return g&&!I?document.getElementById(g):I&&I.nodeType?I:document}},{key:"componentDidMount",value:function(){if(this.props.spy||this.props.hashSpy){var g=this.getScrollSpyContainer();F.default.isMounted(g)||F.default.mount(g),this.props.hashSpy&&(U.default.isMounted()||U.default.mount(e),U.default.mapContainer(this.props.to,g)),F.default.addSpyHandler(this.spyHandler,g),this.setState({container:g})}}},{key:"componentWillUnmount",value:function(){F.default.unmount(this.stateHandler,this.spyHandler)}},{key:"render",value:function(){var I="";I=this.state&&this.state.active?((this.props.className||"")+" "+(this.props.activeClass||"active")).trim():this.props.className;var e=t({},this.props);for(var C in i)e.hasOwnProperty(C)&&delete e[C];return e.className=I,e.onClick=this.handleClick,Q.default.createElement(g,e)}}]),B}(Q.default.PureComponent),s=function(){var g=this;this.scrollTo=function(I,C){e.scrollTo(I,t({},g.state,C))},this.handleClick=function(I){g.props.onClick&&g.props.onClick(I),I.stopPropagation&&I.stopPropagation(),I.preventDefault&&I.preventDefault(),g.scrollTo(g.props.to,g.props)},this.spyHandler=function(I){var t=g.getScrollSpyContainer();if(!U.default.isMounted()||U.default.isInitialized()){var C=g.props.to,Q=null,F=0,B=0,n=0;if(t.getBoundingClientRect)n=t.getBoundingClientRect().top;if(!Q||g.props.isDynamic){if(!(Q=e.get(C)))return;var s=Q.getBoundingClientRect();B=(F=s.top-n+I)+s.height}var i=I-g.props.offset,c=i>=Math.floor(F)&&i<Math.floor(B),A=i<Math.floor(F)||i>=Math.floor(B),l=e.getActiveLink();A&&(C===l&&e.setActiveLink(void 0),g.props.hashSpy&&U.default.getHash()===C&&U.default.changeHash(),g.props.spy&&g.state.active&&(g.setState({active:!1}),g.props.onSetInactive&&g.props.onSetInactive(C,Q))),!c||l===C&&!1!==g.state.active||(e.setActiveLink(C),g.props.hashSpy&&U.default.changeHash(C),g.props.spy&&(g.setState({active:!0}),g.props.onSetActive&&g.props.onSetActive(C,Q)))}}};return n.propTypes=i,n.defaultProps={offset:0},n}},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0});var t,C=e(1268),Q=(t=C)&&t.__esModule?t:{default:t},F=e(518);var B={spyCallbacks:[],spySetState:[],scrollSpyContainers:[],mount:function(g){if(g){var I=function(g){return(0,Q.default)(g,66)}((function(I){B.scrollHandler(g)}));B.scrollSpyContainers.push(g),(0,F.addPassiveEventListener)(g,"scroll",I)}},isMounted:function(g){return-1!==B.scrollSpyContainers.indexOf(g)},currentPositionY:function(g){if(g===document){var I=void 0!==window.pageXOffset,e="CSS1Compat"===(document.compatMode||"");return I?window.pageYOffset:e?document.documentElement.scrollTop:document.body.scrollTop}return g.scrollTop},scrollHandler:function(g){(B.scrollSpyContainers[B.scrollSpyContainers.indexOf(g)].spyCallbacks||[]).forEach((function(I){return I(B.currentPositionY(g))}))},addStateHandler:function(g){B.spySetState.push(g)},addSpyHandler:function(g,I){var e=B.scrollSpyContainers[B.scrollSpyContainers.indexOf(I)];e.spyCallbacks||(e.spyCallbacks=[]),e.spyCallbacks.push(g),g(B.currentPositionY(I))},updateStates:function(){B.spySetState.forEach((function(g){return g()}))},unmount:function(g,I){B.scrollSpyContainers.forEach((function(g){return g.spyCallbacks&&g.spyCallbacks.length&&g.spyCallbacks.splice(g.spyCallbacks.indexOf(I),1)})),B.spySetState&&B.spySetState.length&&B.spySetState.splice(B.spySetState.indexOf(g),1),document.removeEventListener("scroll",B.scrollHandler)},update:function(){return B.scrollSpyContainers.forEach((function(g){return B.scrollHandler(g)}))}};I.default=B},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0});I.addPassiveEventListener=function(g,I,e){var t=function(){var g=!1;try{var I=Object.defineProperty({},"passive",{get:function(){g=!0}});window.addEventListener("test",null,I)}catch(e){}return g}();g.addEventListener(I,e,!!t&&{passive:!0})},I.removePassiveEventListener=function(g,I,e){g.removeEventListener(I,e)}},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0});var t={registered:{},scrollEvent:{register:function(g,I){t.registered[g]=I},remove:function(g){t.registered[g]=null}}};I.default=t},function(g,I,e){"use strict";(function(g){I.__esModule=!0,I.SUPPORTS_BEFORE_UPDATE_SNAPSHOT=I.REACT_MINOR_VERSION=I.IS_PRODUCTION=I.BEAUTIFY_OPTIONS=void 0;var t,C=e(0),Q=(t=C)&&t.__esModule?t:{default:t};I.BEAUTIFY_OPTIONS={autosemicolon:!0,indent:"  "},I.IS_PRODUCTION=!(!g||!Object({NODE_ENV:"production",PUBLIC_URL:"",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0}));var F=I.REACT_MINOR_VERSION=+Q.default.version.split(".").slice(0,2).join(".");I.SUPPORTS_BEFORE_UPDATE_SNAPSHOT=!isNaN(F)&&F>=16.3}).call(this,e(92))},function(g,I,e){"use strict";e.r(I);var t=e(351);e.d(I,"borders",(function(){return t.h})),e.d(I,"border",(function(){return t.a})),e.d(I,"borderTop",(function(){return t.g})),e.d(I,"borderRight",(function(){return t.f})),e.d(I,"borderBottom",(function(){return t.b})),e.d(I,"borderLeft",(function(){return t.d})),e.d(I,"borderColor",(function(){return t.c})),e.d(I,"borderRadius",(function(){return t.e}));var C=e(292);e.d(I,"breakpoints",(function(){return C.a}));var Q=e(105);e.d(I,"compose",(function(){return Q.a}));var F=e(561);e.d(I,"css",(function(){return F.a}));var B=e(562);e.d(I,"display",(function(){return B.a}));var n=e(352);e.d(I,"flexbox",(function(){return n.d})),e.d(I,"flexBasis",(function(){return n.f})),e.d(I,"flexDirection",(function(){return n.g})),e.d(I,"flexWrap",(function(){return n.j})),e.d(I,"justifyContent",(function(){return n.k})),e.d(I,"alignItems",(function(){return n.b})),e.d(I,"alignContent",(function(){return n.a})),e.d(I,"order",(function(){return n.n})),e.d(I,"flex",(function(){return n.e})),e.d(I,"flexGrow",(function(){return n.h})),e.d(I,"flexShrink",(function(){return n.i})),e.d(I,"alignSelf",(function(){return n.c})),e.d(I,"justifyItems",(function(){return n.l})),e.d(I,"justifySelf",(function(){return n.m}));var U=e(353);e.d(I,"grid",(function(){return U.a})),e.d(I,"gridGap",(function(){return U.h})),e.d(I,"gridColumnGap",(function(){return U.g})),e.d(I,"gridRowGap",(function(){return U.j})),e.d(I,"gridColumn",(function(){return U.f})),e.d(I,"gridRow",(function(){return U.i})),e.d(I,"gridAutoFlow",(function(){return U.d})),e.d(I,"gridAutoColumns",(function(){return U.c})),e.d(I,"gridAutoRows",(function(){return U.e})),e.d(I,"gridTemplateColumns",(function(){return U.l})),e.d(I,"gridTemplateRows",(function(){return U.m})),e.d(I,"gridTemplateAreas",(function(){return U.k})),e.d(I,"gridArea",(function(){return U.b}));var s=e(354);e.d(I,"palette",(function(){return s.c})),e.d(I,"color",(function(){return s.b})),e.d(I,"bgcolor",(function(){return s.a}));var i=e(355);e.d(I,"positions",(function(){return i.b})),e.d(I,"position",(function(){return i.d})),e.d(I,"zIndex",(function(){return i.g})),e.d(I,"top",(function(){return i.f})),e.d(I,"right",(function(){return i.e})),e.d(I,"bottom",(function(){return i.a})),e.d(I,"left",(function(){return i.c}));var c=e(563);e.d(I,"shadows",(function(){return c.a}));var A=e(356);e.d(I,"sizing",(function(){return A.b})),e.d(I,"width",(function(){return A.j})),e.d(I,"maxWidth",(function(){return A.e})),e.d(I,"minWidth",(function(){return A.g})),e.d(I,"height",(function(){return A.c})),e.d(I,"maxHeight",(function(){return A.d})),e.d(I,"minHeight",(function(){return A.f})),e.d(I,"sizeWidth",(function(){return A.i})),e.d(I,"sizeHeight",(function(){return A.h})),e.d(I,"boxSizing",(function(){return A.a}));var l=e(358);e.d(I,"spacing",(function(){return l.b})),e.d(I,"createUnarySpacing",(function(){return l.a}));var a=e(34);e.d(I,"style",(function(){return a.a}));var r=e(357);e.d(I,"typography",(function(){return r.a})),e.d(I,"fontFamily",(function(){return r.b})),e.d(I,"fontSize",(function(){return r.c})),e.d(I,"fontStyle",(function(){return r.d})),e.d(I,"fontWeight",(function(){return r.e})),e.d(I,"letterSpacing",(function(){return r.f})),e.d(I,"lineHeight",(function(){return r.g})),e.d(I,"textAlign",(function(){return r.h}))},function(g,I,e){},function(g,I,e){var t=e(1346)("socket.io-parser"),C=e(1349),Q=e(1350),F=e(716),B=e(717);function n(){}I.protocol=4,I.types=["CONNECT","DISCONNECT","EVENT","ACK","ERROR","BINARY_EVENT","BINARY_ACK"],I.CONNECT=0,I.DISCONNECT=1,I.EVENT=2,I.ACK=3,I.ERROR=4,I.BINARY_EVENT=5,I.BINARY_ACK=6,I.Encoder=n,I.Decoder=i;var U=I.ERROR+'"encode error"';function s(g){var e=""+g.type;if(I.BINARY_EVENT!==g.type&&I.BINARY_ACK!==g.type||(e+=g.attachments+"-"),g.nsp&&"/"!==g.nsp&&(e+=g.nsp+","),null!=g.id&&(e+=g.id),null!=g.data){var C=function(g){try{return JSON.stringify(g)}catch(I){return!1}}(g.data);if(!1===C)return U;e+=C}return t("encoded %j as %s",g,e),e}function i(){this.reconstructor=null}function c(g){this.reconPack=g,this.buffers=[]}function A(g){return{type:I.ERROR,data:"parser error: "+g}}n.prototype.encode=function(g,e){(t("encoding packet %j",g),I.BINARY_EVENT===g.type||I.BINARY_ACK===g.type)?function(g,I){Q.removeBlobs(g,(function(g){var e=Q.deconstructPacket(g),t=s(e.packet),C=e.buffers;C.unshift(t),I(C)}))}(g,e):e([s(g)])},C(i.prototype),i.prototype.add=function(g){var e;if("string"===typeof g)e=function(g){var e=0,C={type:Number(g.charAt(0))};if(null==I.types[C.type])return A("unknown packet type "+C.type);if(I.BINARY_EVENT===C.type||I.BINARY_ACK===C.type){for(var Q="";"-"!==g.charAt(++e)&&(Q+=g.charAt(e),e!=g.length););if(Q!=Number(Q)||"-"!==g.charAt(e))throw new Error("Illegal attachments");C.attachments=Number(Q)}if("/"===g.charAt(e+1))for(C.nsp="";++e;){if(","===(n=g.charAt(e)))break;if(C.nsp+=n,e===g.length)break}else C.nsp="/";var B=g.charAt(e+1);if(""!==B&&Number(B)==B){for(C.id="";++e;){var n;if(null==(n=g.charAt(e))||Number(n)!=n){--e;break}if(C.id+=g.charAt(e),e===g.length)break}C.id=Number(C.id)}if(g.charAt(++e)){var U=function(g){try{return JSON.parse(g)}catch(I){return!1}}(g.substr(e));if(!(!1!==U&&(C.type===I.ERROR||F(U))))return A("invalid payload");C.data=U}return t("decoded %s as %j",g,C),C}(g),I.BINARY_EVENT===e.type||I.BINARY_ACK===e.type?(this.reconstructor=new c(e),0===this.reconstructor.reconPack.attachments&&this.emit("decoded",e)):this.emit("decoded",e);else{if(!B(g)&&!g.base64)throw new Error("Unknown type: "+g);if(!this.reconstructor)throw new Error("got binary data when not reconstructing a packet");(e=this.reconstructor.takeBinaryData(g))&&(this.reconstructor=null,this.emit("decoded",e))}},i.prototype.destroy=function(){this.reconstructor&&this.reconstructor.finishedReconstruction()},c.prototype.takeBinaryData=function(g){if(this.buffers.push(g),this.buffers.length===this.reconPack.attachments){var I=Q.reconstructPacket(this.reconPack,this.buffers);return this.finishedReconstruction(),I}return null},c.prototype.finishedReconstruction=function(){this.reconPack=null,this.buffers=[]}},function(g,I,e){var t=e(1355),C=e(525);g.exports=function(g){var I=g.xdomain,e=g.xscheme,Q=g.enablesXDR;try{if("undefined"!==typeof XMLHttpRequest&&(!I||t))return new XMLHttpRequest}catch(F){}try{if("undefined"!==typeof XDomainRequest&&!e&&Q)return new XDomainRequest}catch(F){}if(!I)try{return new(C[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(F){}}},function(g,I){g.exports="undefined"!==typeof self?self:"undefined"!==typeof window?window:Function("return this")()},function(g,I,e){var t=e(285),C=e(527);function Q(g){this.path=g.path,this.hostname=g.hostname,this.port=g.port,this.secure=g.secure,this.query=g.query,this.timestampParam=g.timestampParam,this.timestampRequests=g.timestampRequests,this.readyState="",this.agent=g.agent||!1,this.socket=g.socket,this.enablesXDR=g.enablesXDR,this.withCredentials=g.withCredentials,this.pfx=g.pfx,this.key=g.key,this.passphrase=g.passphrase,this.cert=g.cert,this.ca=g.ca,this.ciphers=g.ciphers,this.rejectUnauthorized=g.rejectUnauthorized,this.forceNode=g.forceNode,this.isReactNative=g.isReactNative,this.extraHeaders=g.extraHeaders,this.localAddress=g.localAddress}g.exports=Q,C(Q.prototype),Q.prototype.onError=function(g,I){var e=new Error(g);return e.type="TransportError",e.description=I,this.emit("error",e),this},Q.prototype.open=function(){return"closed"!==this.readyState&&""!==this.readyState||(this.readyState="opening",this.doOpen()),this},Q.prototype.close=function(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this},Q.prototype.send=function(g){if("open"!==this.readyState)throw new Error("Transport not open");this.write(g)},Q.prototype.onOpen=function(){this.readyState="open",this.writable=!0,this.emit("open")},Q.prototype.onData=function(g){var I=t.decodePacket(g,this.socket.binaryType);this.onPacket(I)},Q.prototype.onPacket=function(g){this.emit("packet",g)},Q.prototype.onClose=function(){this.readyState="closed",this.emit("close")}},function(g,I,e){function t(g){if(g)return function(g){for(var I in t.prototype)g[I]=t.prototype[I];return g}(g)}g.exports=t,t.prototype.on=t.prototype.addEventListener=function(g,I){return this._callbacks=this._callbacks||{},(this._callbacks["$"+g]=this._callbacks["$"+g]||[]).push(I),this},t.prototype.once=function(g,I){function e(){this.off(g,e),I.apply(this,arguments)}return e.fn=I,this.on(g,e),this},t.prototype.off=t.prototype.removeListener=t.prototype.removeAllListeners=t.prototype.removeEventListener=function(g,I){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var e,t=this._callbacks["$"+g];if(!t)return this;if(1==arguments.length)return delete this._callbacks["$"+g],this;for(var C=0;C<t.length;C++)if((e=t[C])===I||e.fn===I){t.splice(C,1);break}return 0===t.length&&delete this._callbacks["$"+g],this},t.prototype.emit=function(g){this._callbacks=this._callbacks||{};for(var I=new Array(arguments.length-1),e=this._callbacks["$"+g],t=1;t<arguments.length;t++)I[t-1]=arguments[t];if(e){t=0;for(var C=(e=e.slice(0)).length;t<C;++t)e[t].apply(this,I)}return this},t.prototype.listeners=function(g){return this._callbacks=this._callbacks||{},this._callbacks["$"+g]||[]},t.prototype.hasListeners=function(g){return!!this.listeners(g).length}},function(g,I,e){(I=g.exports=e(729)).Stream=I,I.Readable=I,I.Writable=e(530),I.Duplex=e(254),I.Transform=e(732),I.PassThrough=e(1381)},function(g,I,e){var t=e(103),C=t.Buffer;function Q(g,I){for(var e in g)I[e]=g[e]}function F(g,I,e){return C(g,I,e)}C.from&&C.alloc&&C.allocUnsafe&&C.allocUnsafeSlow?g.exports=t:(Q(t,I),I.Buffer=F),Q(C,F),F.from=function(g,I,e){if("number"===typeof g)throw new TypeError("Argument must not be a number");return C(g,I,e)},F.alloc=function(g,I,e){if("number"!==typeof g)throw new TypeError("Argument must be a number");var t=C(g);return void 0!==I?"string"===typeof e?t.fill(I,e):t.fill(I):t.fill(0),t},F.allocUnsafe=function(g){if("number"!==typeof g)throw new TypeError("Argument must be a number");return C(g)},F.allocUnsafeSlow=function(g){if("number"!==typeof g)throw new TypeError("Argument must be a number");return t.SlowBuffer(g)}},function(g,I,e){"use strict";(function(I,t,C){var Q=e(412);function F(g){var I=this;this.next=null,this.entry=null,this.finish=function(){!function(g,I,e){var t=g.entry;g.entry=null;for(;t;){var C=t.callback;I.pendingcb--,C(e),t=t.next}I.corkedRequestsFree?I.corkedRequestsFree.next=g:I.corkedRequestsFree=g}(I,g)}}g.exports=d;var B,n=!I.browser&&["v0.10","v0.9."].indexOf(I.version.slice(0,5))>-1?t:Q.nextTick;d.WritableState=o;var U=Object.create(e(340));U.inherits=e(253);var s={deprecate:e(1379)},i=e(730),c=e(529).Buffer,A=C.Uint8Array||function(){};var l,a=e(731);function r(){}function o(g,I){B=B||e(254),g=g||{};var t=I instanceof B;this.objectMode=!!g.objectMode,t&&(this.objectMode=this.objectMode||!!g.writableObjectMode);var C=g.highWaterMark,U=g.writableHighWaterMark,s=this.objectMode?16:16384;this.highWaterMark=C||0===C?C:t&&(U||0===U)?U:s,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var i=!1===g.decodeStrings;this.decodeStrings=!i,this.defaultEncoding=g.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(g){!function(g,I){var e=g._writableState,t=e.sync,C=e.writecb;if(function(g){g.writing=!1,g.writecb=null,g.length-=g.writelen,g.writelen=0}(e),I)!function(g,I,e,t,C){--I.pendingcb,e?(Q.nextTick(C,t),Q.nextTick(x,g,I),g._writableState.errorEmitted=!0,g.emit("error",t)):(C(t),g._writableState.errorEmitted=!0,g.emit("error",t),x(g,I))}(g,e,t,I,C);else{var F=Z(e);F||e.corked||e.bufferProcessing||!e.bufferedRequest||b(g,e),t?n(y,g,e,F,C):y(g,e,F,C)}}(I,g)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new F(this)}function d(g){if(B=B||e(254),!l.call(d,this)&&!(this instanceof B))return new d(g);this._writableState=new o(g,this),this.writable=!0,g&&("function"===typeof g.write&&(this._write=g.write),"function"===typeof g.writev&&(this._writev=g.writev),"function"===typeof g.destroy&&(this._destroy=g.destroy),"function"===typeof g.final&&(this._final=g.final)),i.call(this)}function u(g,I,e,t,C,Q,F){I.writelen=t,I.writecb=F,I.writing=!0,I.sync=!0,e?g._writev(C,I.onwrite):g._write(C,Q,I.onwrite),I.sync=!1}function y(g,I,e,t){e||function(g,I){0===I.length&&I.needDrain&&(I.needDrain=!1,g.emit("drain"))}(g,I),I.pendingcb--,t(),x(g,I)}function b(g,I){I.bufferProcessing=!0;var e=I.bufferedRequest;if(g._writev&&e&&e.next){var t=I.bufferedRequestCount,C=new Array(t),Q=I.corkedRequestsFree;Q.entry=e;for(var B=0,n=!0;e;)C[B]=e,e.isBuf||(n=!1),e=e.next,B+=1;C.allBuffers=n,u(g,I,!0,I.length,C,"",Q.finish),I.pendingcb++,I.lastBufferedRequest=null,Q.next?(I.corkedRequestsFree=Q.next,Q.next=null):I.corkedRequestsFree=new F(I),I.bufferedRequestCount=0}else{for(;e;){var U=e.chunk,s=e.encoding,i=e.callback;if(u(g,I,!1,I.objectMode?1:U.length,U,s,i),e=e.next,I.bufferedRequestCount--,I.writing)break}null===e&&(I.lastBufferedRequest=null)}I.bufferedRequest=e,I.bufferProcessing=!1}function Z(g){return g.ending&&0===g.length&&null===g.bufferedRequest&&!g.finished&&!g.writing}function m(g,I){g._final((function(e){I.pendingcb--,e&&g.emit("error",e),I.prefinished=!0,g.emit("prefinish"),x(g,I)}))}function x(g,I){var e=Z(I);return e&&(!function(g,I){I.prefinished||I.finalCalled||("function"===typeof g._final?(I.pendingcb++,I.finalCalled=!0,Q.nextTick(m,g,I)):(I.prefinished=!0,g.emit("prefinish")))}(g,I),0===I.pendingcb&&(I.finished=!0,g.emit("finish"))),e}U.inherits(d,i),o.prototype.getBuffer=function(){for(var g=this.bufferedRequest,I=[];g;)I.push(g),g=g.next;return I},function(){try{Object.defineProperty(o.prototype,"buffer",{get:s.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(g){}}(),"function"===typeof Symbol&&Symbol.hasInstance&&"function"===typeof Function.prototype[Symbol.hasInstance]?(l=Function.prototype[Symbol.hasInstance],Object.defineProperty(d,Symbol.hasInstance,{value:function(g){return!!l.call(this,g)||this===d&&(g&&g._writableState instanceof o)}})):l=function(g){return g instanceof this},d.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},d.prototype.write=function(g,I,e){var t,C=this._writableState,F=!1,B=!C.objectMode&&(t=g,c.isBuffer(t)||t instanceof A);return B&&!c.isBuffer(g)&&(g=function(g){return c.from(g)}(g)),"function"===typeof I&&(e=I,I=null),B?I="buffer":I||(I=C.defaultEncoding),"function"!==typeof e&&(e=r),C.ended?function(g,I){var e=new Error("write after end");g.emit("error",e),Q.nextTick(I,e)}(this,e):(B||function(g,I,e,t){var C=!0,F=!1;return null===e?F=new TypeError("May not write null values to stream"):"string"===typeof e||void 0===e||I.objectMode||(F=new TypeError("Invalid non-string/buffer chunk")),F&&(g.emit("error",F),Q.nextTick(t,F),C=!1),C}(this,C,g,e))&&(C.pendingcb++,F=function(g,I,e,t,C,Q){if(!e){var F=function(g,I,e){g.objectMode||!1===g.decodeStrings||"string"!==typeof I||(I=c.from(I,e));return I}(I,t,C);t!==F&&(e=!0,C="buffer",t=F)}var B=I.objectMode?1:t.length;I.length+=B;var n=I.length<I.highWaterMark;n||(I.needDrain=!0);if(I.writing||I.corked){var U=I.lastBufferedRequest;I.lastBufferedRequest={chunk:t,encoding:C,isBuf:e,callback:Q,next:null},U?U.next=I.lastBufferedRequest:I.bufferedRequest=I.lastBufferedRequest,I.bufferedRequestCount+=1}else u(g,I,!1,B,t,C,Q);return n}(this,C,B,g,I,e)),F},d.prototype.cork=function(){this._writableState.corked++},d.prototype.uncork=function(){var g=this._writableState;g.corked&&(g.corked--,g.writing||g.corked||g.finished||g.bufferProcessing||!g.bufferedRequest||b(this,g))},d.prototype.setDefaultEncoding=function(g){if("string"===typeof g&&(g=g.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((g+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+g);return this._writableState.defaultEncoding=g,this},Object.defineProperty(d.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),d.prototype._write=function(g,I,e){e(new Error("_write() is not implemented"))},d.prototype._writev=null,d.prototype.end=function(g,I,e){var t=this._writableState;"function"===typeof g?(e=g,g=null,I=null):"function"===typeof I&&(e=I,I=null),null!==g&&void 0!==g&&this.write(g,I),t.corked&&(t.corked=1,this.uncork()),t.ending||t.finished||function(g,I,e){I.ending=!0,x(g,I),e&&(I.finished?Q.nextTick(e):g.once("finish",e));I.ended=!0,g.writable=!1}(this,t,e)},Object.defineProperty(d.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(g){this._writableState&&(this._writableState.destroyed=g)}}),d.prototype.destroy=a.destroy,d.prototype._undestroy=a.undestroy,d.prototype._destroy=function(g,I){this.end(),I(g)}}).call(this,e(92),e(1377).setImmediate,e(67))},function(g,I,e){"use strict";var t=e(1380).Buffer,C=t.isEncoding||function(g){switch((g=""+g)&&g.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function Q(g){var I;switch(this.encoding=function(g){var I=function(g){if(!g)return"utf8";for(var I;;)switch(g){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return g;default:if(I)return;g=(""+g).toLowerCase(),I=!0}}(g);if("string"!==typeof I&&(t.isEncoding===C||!C(g)))throw new Error("Unknown encoding: "+g);return I||g}(g),this.encoding){case"utf16le":this.text=n,this.end=U,I=4;break;case"utf8":this.fillLast=B,I=4;break;case"base64":this.text=s,this.end=i,I=3;break;default:return this.write=c,void(this.end=A)}this.lastNeed=0,this.lastTotal=0,this.lastChar=t.allocUnsafe(I)}function F(g){return g<=127?0:g>>5===6?2:g>>4===14?3:g>>3===30?4:g>>6===2?-1:-2}function B(g){var I=this.lastTotal-this.lastNeed,e=function(g,I,e){if(128!==(192&I[0]))return g.lastNeed=0,"\ufffd";if(g.lastNeed>1&&I.length>1){if(128!==(192&I[1]))return g.lastNeed=1,"\ufffd";if(g.lastNeed>2&&I.length>2&&128!==(192&I[2]))return g.lastNeed=2,"\ufffd"}}(this,g);return void 0!==e?e:this.lastNeed<=g.length?(g.copy(this.lastChar,I,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(g.copy(this.lastChar,I,0,g.length),void(this.lastNeed-=g.length))}function n(g,I){if((g.length-I)%2===0){var e=g.toString("utf16le",I);if(e){var t=e.charCodeAt(e.length-1);if(t>=55296&&t<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=g[g.length-2],this.lastChar[1]=g[g.length-1],e.slice(0,-1)}return e}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=g[g.length-1],g.toString("utf16le",I,g.length-1)}function U(g){var I=g&&g.length?this.write(g):"";if(this.lastNeed){var e=this.lastTotal-this.lastNeed;return I+this.lastChar.toString("utf16le",0,e)}return I}function s(g,I){var e=(g.length-I)%3;return 0===e?g.toString("base64",I):(this.lastNeed=3-e,this.lastTotal=3,1===e?this.lastChar[0]=g[g.length-1]:(this.lastChar[0]=g[g.length-2],this.lastChar[1]=g[g.length-1]),g.toString("base64",I,g.length-e))}function i(g){var I=g&&g.length?this.write(g):"";return this.lastNeed?I+this.lastChar.toString("base64",0,3-this.lastNeed):I}function c(g){return g.toString(this.encoding)}function A(g){return g&&g.length?this.write(g):""}I.StringDecoder=Q,Q.prototype.write=function(g){if(0===g.length)return"";var I,e;if(this.lastNeed){if(void 0===(I=this.fillLast(g)))return"";e=this.lastNeed,this.lastNeed=0}else e=0;return e<g.length?I?I+this.text(g,e):this.text(g,e):I||""},Q.prototype.end=function(g){var I=g&&g.length?this.write(g):"";return this.lastNeed?I+"\ufffd":I},Q.prototype.text=function(g,I){var e=function(g,I,e){var t=I.length-1;if(t<e)return 0;var C=F(I[t]);if(C>=0)return C>0&&(g.lastNeed=C-1),C;if(--t<e||-2===C)return 0;if((C=F(I[t]))>=0)return C>0&&(g.lastNeed=C-2),C;if(--t<e||-2===C)return 0;if((C=F(I[t]))>=0)return C>0&&(2===C?C=0:g.lastNeed=C-3),C;return 0}(this,g,I);if(!this.lastNeed)return g.toString("utf8",I);this.lastTotal=e;var t=g.length-(e-this.lastNeed);return g.copy(this.lastChar,0,t),g.toString("utf8",I,t)},Q.prototype.fillLast=function(g){if(this.lastNeed<=g.length)return g.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);g.copy(this.lastChar,this.lastTotal-this.lastNeed,0,g.length),this.lastNeed-=g.length}},function(g,I,e){(function(I){(function(){var t,C;try{C=e(533)}catch(Q){}t=function(){var g;function e(g){this.buffer=g,this.pos=0,this.length=this.buffer.length}for(g in e.TYPES={UInt8:1,UInt16:2,UInt24:3,UInt32:4,Int8:1,Int16:2,Int24:3,Int32:4,Float:4,Double:8},I.prototype)"read"===g.slice(0,4)&&function(g){var I;I=e.TYPES[g.replace(/read|[BL]E/g,"")],e.prototype[g]=function(){var e;return e=this.buffer[g](this.pos),this.pos+=I,e}}(g);return e.prototype.readString=function(g,e){var t,F,B,n,U;switch(null==e&&(e="ascii"),e){case"utf16le":case"ucs2":case"utf8":case"ascii":return this.buffer.toString(e,this.pos,this.pos+=g);case"utf16be":for(B=n=0,U=(t=new I(this.readBuffer(g))).length-1;n<U;B=n+=2)F=t[B],t[B]=t[B+1],t[B+1]=F;return t.toString("utf16le");default:if(t=this.readBuffer(g),C)try{return C.decode(t,e)}catch(Q){}return t}},e.prototype.readBuffer=function(g){return this.buffer.slice(this.pos,this.pos+=g)},e.prototype.readUInt24BE=function(){return(this.readUInt16BE()<<8)+this.readUInt8()},e.prototype.readUInt24LE=function(){return this.readUInt16LE()+(this.readUInt8()<<16)},e.prototype.readInt24BE=function(){return(this.readInt16BE()<<8)+this.readUInt8()},e.prototype.readInt24LE=function(){return this.readUInt16LE()+(this.readInt8()<<16)},e}(),g.exports=t}).call(this)}).call(this,e(103).Buffer)},function(g,I,e){"use strict";(function(I){var t=e(286).Buffer,C=e(1397),Q=g.exports;Q.encodings=null,Q.defaultCharUnicode="\ufffd",Q.defaultCharSingleByte="?",Q.encode=function(g,I,e){g=""+(g||"");var C=Q.getEncoder(I,e),F=C.write(g),B=C.end();return B&&B.length>0?t.concat([F,B]):F},Q.decode=function(g,I,e){"string"===typeof g&&(Q.skipDecodeWarning||(console.error("Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding"),Q.skipDecodeWarning=!0),g=t.from(""+(g||""),"binary"));var C=Q.getDecoder(I,e),F=C.write(g),B=C.end();return B?F+B:F},Q.encodingExists=function(g){try{return Q.getCodec(g),!0}catch(I){return!1}},Q.toEncoding=Q.encode,Q.fromEncoding=Q.decode,Q._codecDataCache={},Q.getCodec=function(g){Q.encodings||(Q.encodings=e(1398));for(var I=Q._canonicalizeEncoding(g),t={};;){var C=Q._codecDataCache[I];if(C)return C;var F=Q.encodings[I];switch(typeof F){case"string":I=F;break;case"object":for(var B in F)t[B]=F[B];t.encodingName||(t.encodingName=I),I=F.type;break;case"function":return t.encodingName||(t.encodingName=I),C=new F(t,Q),Q._codecDataCache[t.encodingName]=C,C;default:throw new Error("Encoding not recognized: '"+g+"' (searched as: '"+I+"')")}}},Q._canonicalizeEncoding=function(g){return(""+g).toLowerCase().replace(/:\d{4}$|[^0-9a-z]/g,"")},Q.getEncoder=function(g,I){var e=Q.getCodec(g),t=new e.encoder(I,e);return e.bomAware&&I&&I.addBOM&&(t=new C.PrependBOM(t,I)),t},Q.getDecoder=function(g,I){var e=Q.getCodec(g),t=new e.decoder(I,e);return!e.bomAware||I&&!1===I.stripBOM||(t=new C.StripBOM(t,I)),t};var F="undefined"!==typeof I&&I.versions&&I.versions.node;if(F){var B=F.split(".").map(Number);(B[0]>0||B[1]>=10)&&e(1412)(Q),e(1413)(Q)}}).call(this,e(92))},function(g){g.exports=JSON.parse('[["0","\\u0000",127,"\u20ac"],["8140","\u4e02\u4e04\u4e05\u4e06\u4e0f\u4e12\u4e17\u4e1f\u4e20\u4e21\u4e23\u4e26\u4e29\u4e2e\u4e2f\u4e31\u4e33\u4e35\u4e37\u4e3c\u4e40\u4e41\u4e42\u4e44\u4e46\u4e4a\u4e51\u4e55\u4e57\u4e5a\u4e5b\u4e62\u4e63\u4e64\u4e65\u4e67\u4e68\u4e6a",5,"\u4e72\u4e74",9,"\u4e7f",6,"\u4e87\u4e8a"],["8180","\u4e90\u4e96\u4e97\u4e99\u4e9c\u4e9d\u4e9e\u4ea3\u4eaa\u4eaf\u4eb0\u4eb1\u4eb4\u4eb6\u4eb7\u4eb8\u4eb9\u4ebc\u4ebd\u4ebe\u4ec8\u4ecc\u4ecf\u4ed0\u4ed2\u4eda\u4edb\u4edc\u4ee0\u4ee2\u4ee6\u4ee7\u4ee9\u4eed\u4eee\u4eef\u4ef1\u4ef4\u4ef8\u4ef9\u4efa\u4efc\u4efe\u4f00\u4f02",6,"\u4f0b\u4f0c\u4f12",4,"\u4f1c\u4f1d\u4f21\u4f23\u4f28\u4f29\u4f2c\u4f2d\u4f2e\u4f31\u4f33\u4f35\u4f37\u4f39\u4f3b\u4f3e",4,"\u4f44\u4f45\u4f47",5,"\u4f52\u4f54\u4f56\u4f61\u4f62\u4f66\u4f68\u4f6a\u4f6b\u4f6d\u4f6e\u4f71\u4f72\u4f75\u4f77\u4f78\u4f79\u4f7a\u4f7d\u4f80\u4f81\u4f82\u4f85\u4f86\u4f87\u4f8a\u4f8c\u4f8e\u4f90\u4f92\u4f93\u4f95\u4f96\u4f98\u4f99\u4f9a\u4f9c\u4f9e\u4f9f\u4fa1\u4fa2"],["8240","\u4fa4\u4fab\u4fad\u4fb0",4,"\u4fb6",8,"\u4fc0\u4fc1\u4fc2\u4fc6\u4fc7\u4fc8\u4fc9\u4fcb\u4fcc\u4fcd\u4fd2",4,"\u4fd9\u4fdb\u4fe0\u4fe2\u4fe4\u4fe5\u4fe7\u4feb\u4fec\u4ff0\u4ff2\u4ff4\u4ff5\u4ff6\u4ff7\u4ff9\u4ffb\u4ffc\u4ffd\u4fff",11],["8280","\u500b\u500e\u5010\u5011\u5013\u5015\u5016\u5017\u501b\u501d\u501e\u5020\u5022\u5023\u5024\u5027\u502b\u502f",10,"\u503b\u503d\u503f\u5040\u5041\u5042\u5044\u5045\u5046\u5049\u504a\u504b\u504d\u5050",4,"\u5056\u5057\u5058\u5059\u505b\u505d",7,"\u5066",5,"\u506d",8,"\u5078\u5079\u507a\u507c\u507d\u5081\u5082\u5083\u5084\u5086\u5087\u5089\u508a\u508b\u508c\u508e",20,"\u50a4\u50a6\u50aa\u50ab\u50ad",4,"\u50b3",6,"\u50bc"],["8340","\u50bd",17,"\u50d0",5,"\u50d7\u50d8\u50d9\u50db",10,"\u50e8\u50e9\u50ea\u50eb\u50ef\u50f0\u50f1\u50f2\u50f4\u50f6",4,"\u50fc",9,"\u5108"],["8380","\u5109\u510a\u510c",5,"\u5113",13,"\u5122",28,"\u5142\u5147\u514a\u514c\u514e\u514f\u5150\u5152\u5153\u5157\u5158\u5159\u515b\u515d",4,"\u5163\u5164\u5166\u5167\u5169\u516a\u516f\u5172\u517a\u517e\u517f\u5183\u5184\u5186\u5187\u518a\u518b\u518e\u518f\u5190\u5191\u5193\u5194\u5198\u519a\u519d\u519e\u519f\u51a1\u51a3\u51a6",4,"\u51ad\u51ae\u51b4\u51b8\u51b9\u51ba\u51be\u51bf\u51c1\u51c2\u51c3\u51c5\u51c8\u51ca\u51cd\u51ce\u51d0\u51d2",5],["8440","\u51d8\u51d9\u51da\u51dc\u51de\u51df\u51e2\u51e3\u51e5",5,"\u51ec\u51ee\u51f1\u51f2\u51f4\u51f7\u51fe\u5204\u5205\u5209\u520b\u520c\u520f\u5210\u5213\u5214\u5215\u521c\u521e\u521f\u5221\u5222\u5223\u5225\u5226\u5227\u522a\u522c\u522f\u5231\u5232\u5234\u5235\u523c\u523e\u5244",5,"\u524b\u524e\u524f\u5252\u5253\u5255\u5257\u5258"],["8480","\u5259\u525a\u525b\u525d\u525f\u5260\u5262\u5263\u5264\u5266\u5268\u526b\u526c\u526d\u526e\u5270\u5271\u5273",9,"\u527e\u5280\u5283",4,"\u5289",6,"\u5291\u5292\u5294",6,"\u529c\u52a4\u52a5\u52a6\u52a7\u52ae\u52af\u52b0\u52b4",9,"\u52c0\u52c1\u52c2\u52c4\u52c5\u52c6\u52c8\u52ca\u52cc\u52cd\u52ce\u52cf\u52d1\u52d3\u52d4\u52d5\u52d7\u52d9",5,"\u52e0\u52e1\u52e2\u52e3\u52e5",10,"\u52f1",7,"\u52fb\u52fc\u52fd\u5301\u5302\u5303\u5304\u5307\u5309\u530a\u530b\u530c\u530e"],["8540","\u5311\u5312\u5313\u5314\u5318\u531b\u531c\u531e\u531f\u5322\u5324\u5325\u5327\u5328\u5329\u532b\u532c\u532d\u532f",9,"\u533c\u533d\u5340\u5342\u5344\u5346\u534b\u534c\u534d\u5350\u5354\u5358\u5359\u535b\u535d\u5365\u5368\u536a\u536c\u536d\u5372\u5376\u5379\u537b\u537c\u537d\u537e\u5380\u5381\u5383\u5387\u5388\u538a\u538e\u538f"],["8580","\u5390",4,"\u5396\u5397\u5399\u539b\u539c\u539e\u53a0\u53a1\u53a4\u53a7\u53aa\u53ab\u53ac\u53ad\u53af",6,"\u53b7\u53b8\u53b9\u53ba\u53bc\u53bd\u53be\u53c0\u53c3",4,"\u53ce\u53cf\u53d0\u53d2\u53d3\u53d5\u53da\u53dc\u53dd\u53de\u53e1\u53e2\u53e7\u53f4\u53fa\u53fe\u53ff\u5400\u5402\u5405\u5407\u540b\u5414\u5418\u5419\u541a\u541c\u5422\u5424\u5425\u542a\u5430\u5433\u5436\u5437\u543a\u543d\u543f\u5441\u5442\u5444\u5445\u5447\u5449\u544c\u544d\u544e\u544f\u5451\u545a\u545d",4,"\u5463\u5465\u5467\u5469",7,"\u5474\u5479\u547a\u547e\u547f\u5481\u5483\u5485\u5487\u5488\u5489\u548a\u548d\u5491\u5493\u5497\u5498\u549c\u549e\u549f\u54a0\u54a1"],["8640","\u54a2\u54a5\u54ae\u54b0\u54b2\u54b5\u54b6\u54b7\u54b9\u54ba\u54bc\u54be\u54c3\u54c5\u54ca\u54cb\u54d6\u54d8\u54db\u54e0",4,"\u54eb\u54ec\u54ef\u54f0\u54f1\u54f4",5,"\u54fb\u54fe\u5500\u5502\u5503\u5504\u5505\u5508\u550a",4,"\u5512\u5513\u5515",5,"\u551c\u551d\u551e\u551f\u5521\u5525\u5526"],["8680","\u5528\u5529\u552b\u552d\u5532\u5534\u5535\u5536\u5538\u5539\u553a\u553b\u553d\u5540\u5542\u5545\u5547\u5548\u554b",4,"\u5551\u5552\u5553\u5554\u5557",4,"\u555d\u555e\u555f\u5560\u5562\u5563\u5568\u5569\u556b\u556f",5,"\u5579\u557a\u557d\u557f\u5585\u5586\u558c\u558d\u558e\u5590\u5592\u5593\u5595\u5596\u5597\u559a\u559b\u559e\u55a0",6,"\u55a8",8,"\u55b2\u55b4\u55b6\u55b8\u55ba\u55bc\u55bf",4,"\u55c6\u55c7\u55c8\u55ca\u55cb\u55ce\u55cf\u55d0\u55d5\u55d7",4,"\u55de\u55e0\u55e2\u55e7\u55e9\u55ed\u55ee\u55f0\u55f1\u55f4\u55f6\u55f8",4,"\u55ff\u5602\u5603\u5604\u5605"],["8740","\u5606\u5607\u560a\u560b\u560d\u5610",7,"\u5619\u561a\u561c\u561d\u5620\u5621\u5622\u5625\u5626\u5628\u5629\u562a\u562b\u562e\u562f\u5630\u5633\u5635\u5637\u5638\u563a\u563c\u563d\u563e\u5640",11,"\u564f",4,"\u5655\u5656\u565a\u565b\u565d",4],["8780","\u5663\u5665\u5666\u5667\u566d\u566e\u566f\u5670\u5672\u5673\u5674\u5675\u5677\u5678\u5679\u567a\u567d",7,"\u5687",6,"\u5690\u5691\u5692\u5694",14,"\u56a4",10,"\u56b0",6,"\u56b8\u56b9\u56ba\u56bb\u56bd",12,"\u56cb",8,"\u56d5\u56d6\u56d8\u56d9\u56dc\u56e3\u56e5",5,"\u56ec\u56ee\u56ef\u56f2\u56f3\u56f6\u56f7\u56f8\u56fb\u56fc\u5700\u5701\u5702\u5705\u5707\u570b",6],["8840","\u5712",9,"\u571d\u571e\u5720\u5721\u5722\u5724\u5725\u5726\u5727\u572b\u5731\u5732\u5734",4,"\u573c\u573d\u573f\u5741\u5743\u5744\u5745\u5746\u5748\u5749\u574b\u5752",4,"\u5758\u5759\u5762\u5763\u5765\u5767\u576c\u576e\u5770\u5771\u5772\u5774\u5775\u5778\u5779\u577a\u577d\u577e\u577f\u5780"],["8880","\u5781\u5787\u5788\u5789\u578a\u578d",4,"\u5794",6,"\u579c\u579d\u579e\u579f\u57a5\u57a8\u57aa\u57ac\u57af\u57b0\u57b1\u57b3\u57b5\u57b6\u57b7\u57b9",8,"\u57c4",6,"\u57cc\u57cd\u57d0\u57d1\u57d3\u57d6\u57d7\u57db\u57dc\u57de\u57e1\u57e2\u57e3\u57e5",7,"\u57ee\u57f0\u57f1\u57f2\u57f3\u57f5\u57f6\u57f7\u57fb\u57fc\u57fe\u57ff\u5801\u5803\u5804\u5805\u5808\u5809\u580a\u580c\u580e\u580f\u5810\u5812\u5813\u5814\u5816\u5817\u5818\u581a\u581b\u581c\u581d\u581f\u5822\u5823\u5825",4,"\u582b",4,"\u5831\u5832\u5833\u5834\u5836",7],["8940","\u583e",5,"\u5845",6,"\u584e\u584f\u5850\u5852\u5853\u5855\u5856\u5857\u5859",4,"\u585f",5,"\u5866",4,"\u586d",16,"\u587f\u5882\u5884\u5886\u5887\u5888\u588a\u588b\u588c"],["8980","\u588d",4,"\u5894",4,"\u589b\u589c\u589d\u58a0",7,"\u58aa",17,"\u58bd\u58be\u58bf\u58c0\u58c2\u58c3\u58c4\u58c6",10,"\u58d2\u58d3\u58d4\u58d6",13,"\u58e5",5,"\u58ed\u58ef\u58f1\u58f2\u58f4\u58f5\u58f7\u58f8\u58fa",7,"\u5903\u5905\u5906\u5908",4,"\u590e\u5910\u5911\u5912\u5913\u5917\u5918\u591b\u591d\u591e\u5920\u5921\u5922\u5923\u5926\u5928\u592c\u5930\u5932\u5933\u5935\u5936\u593b"],["8a40","\u593d\u593e\u593f\u5940\u5943\u5945\u5946\u594a\u594c\u594d\u5950\u5952\u5953\u5959\u595b",4,"\u5961\u5963\u5964\u5966",12,"\u5975\u5977\u597a\u597b\u597c\u597e\u597f\u5980\u5985\u5989\u598b\u598c\u598e\u598f\u5990\u5991\u5994\u5995\u5998\u599a\u599b\u599c\u599d\u599f\u59a0\u59a1\u59a2\u59a6"],["8a80","\u59a7\u59ac\u59ad\u59b0\u59b1\u59b3",5,"\u59ba\u59bc\u59bd\u59bf",6,"\u59c7\u59c8\u59c9\u59cc\u59cd\u59ce\u59cf\u59d5\u59d6\u59d9\u59db\u59de",4,"\u59e4\u59e6\u59e7\u59e9\u59ea\u59eb\u59ed",11,"\u59fa\u59fc\u59fd\u59fe\u5a00\u5a02\u5a0a\u5a0b\u5a0d\u5a0e\u5a0f\u5a10\u5a12\u5a14\u5a15\u5a16\u5a17\u5a19\u5a1a\u5a1b\u5a1d\u5a1e\u5a21\u5a22\u5a24\u5a26\u5a27\u5a28\u5a2a",6,"\u5a33\u5a35\u5a37",4,"\u5a3d\u5a3e\u5a3f\u5a41",4,"\u5a47\u5a48\u5a4b",9,"\u5a56\u5a57\u5a58\u5a59\u5a5b",5],["8b40","\u5a61\u5a63\u5a64\u5a65\u5a66\u5a68\u5a69\u5a6b",8,"\u5a78\u5a79\u5a7b\u5a7c\u5a7d\u5a7e\u5a80",17,"\u5a93",6,"\u5a9c",13,"\u5aab\u5aac"],["8b80","\u5aad",4,"\u5ab4\u5ab6\u5ab7\u5ab9",4,"\u5abf\u5ac0\u5ac3",5,"\u5aca\u5acb\u5acd",4,"\u5ad3\u5ad5\u5ad7\u5ad9\u5ada\u5adb\u5add\u5ade\u5adf\u5ae2\u5ae4\u5ae5\u5ae7\u5ae8\u5aea\u5aec",4,"\u5af2",22,"\u5b0a",11,"\u5b18",25,"\u5b33\u5b35\u5b36\u5b38",7,"\u5b41",6],["8c40","\u5b48",7,"\u5b52\u5b56\u5b5e\u5b60\u5b61\u5b67\u5b68\u5b6b\u5b6d\u5b6e\u5b6f\u5b72\u5b74\u5b76\u5b77\u5b78\u5b79\u5b7b\u5b7c\u5b7e\u5b7f\u5b82\u5b86\u5b8a\u5b8d\u5b8e\u5b90\u5b91\u5b92\u5b94\u5b96\u5b9f\u5ba7\u5ba8\u5ba9\u5bac\u5bad\u5bae\u5baf\u5bb1\u5bb2\u5bb7\u5bba\u5bbb\u5bbc\u5bc0\u5bc1\u5bc3\u5bc8\u5bc9\u5bca\u5bcb\u5bcd\u5bce\u5bcf"],["8c80","\u5bd1\u5bd4",8,"\u5be0\u5be2\u5be3\u5be6\u5be7\u5be9",4,"\u5bef\u5bf1",6,"\u5bfd\u5bfe\u5c00\u5c02\u5c03\u5c05\u5c07\u5c08\u5c0b\u5c0c\u5c0d\u5c0e\u5c10\u5c12\u5c13\u5c17\u5c19\u5c1b\u5c1e\u5c1f\u5c20\u5c21\u5c23\u5c26\u5c28\u5c29\u5c2a\u5c2b\u5c2d\u5c2e\u5c2f\u5c30\u5c32\u5c33\u5c35\u5c36\u5c37\u5c43\u5c44\u5c46\u5c47\u5c4c\u5c4d\u5c52\u5c53\u5c54\u5c56\u5c57\u5c58\u5c5a\u5c5b\u5c5c\u5c5d\u5c5f\u5c62\u5c64\u5c67",6,"\u5c70\u5c72",6,"\u5c7b\u5c7c\u5c7d\u5c7e\u5c80\u5c83",4,"\u5c89\u5c8a\u5c8b\u5c8e\u5c8f\u5c92\u5c93\u5c95\u5c9d",4,"\u5ca4",4],["8d40","\u5caa\u5cae\u5caf\u5cb0\u5cb2\u5cb4\u5cb6\u5cb9\u5cba\u5cbb\u5cbc\u5cbe\u5cc0\u5cc2\u5cc3\u5cc5",5,"\u5ccc",5,"\u5cd3",5,"\u5cda",6,"\u5ce2\u5ce3\u5ce7\u5ce9\u5ceb\u5cec\u5cee\u5cef\u5cf1",9,"\u5cfc",4],["8d80","\u5d01\u5d04\u5d05\u5d08",5,"\u5d0f",4,"\u5d15\u5d17\u5d18\u5d19\u5d1a\u5d1c\u5d1d\u5d1f",4,"\u5d25\u5d28\u5d2a\u5d2b\u5d2c\u5d2f",4,"\u5d35",7,"\u5d3f",7,"\u5d48\u5d49\u5d4d",10,"\u5d59\u5d5a\u5d5c\u5d5e",10,"\u5d6a\u5d6d\u5d6e\u5d70\u5d71\u5d72\u5d73\u5d75",12,"\u5d83",21,"\u5d9a\u5d9b\u5d9c\u5d9e\u5d9f\u5da0"],["8e40","\u5da1",21,"\u5db8",12,"\u5dc6",6,"\u5dce",12,"\u5ddc\u5ddf\u5de0\u5de3\u5de4\u5dea\u5dec\u5ded"],["8e80","\u5df0\u5df5\u5df6\u5df8",4,"\u5dff\u5e00\u5e04\u5e07\u5e09\u5e0a\u5e0b\u5e0d\u5e0e\u5e12\u5e13\u5e17\u5e1e",7,"\u5e28",4,"\u5e2f\u5e30\u5e32",4,"\u5e39\u5e3a\u5e3e\u5e3f\u5e40\u5e41\u5e43\u5e46",5,"\u5e4d",6,"\u5e56",4,"\u5e5c\u5e5d\u5e5f\u5e60\u5e63",14,"\u5e75\u5e77\u5e79\u5e7e\u5e81\u5e82\u5e83\u5e85\u5e88\u5e89\u5e8c\u5e8d\u5e8e\u5e92\u5e98\u5e9b\u5e9d\u5ea1\u5ea2\u5ea3\u5ea4\u5ea8",4,"\u5eae",4,"\u5eb4\u5eba\u5ebb\u5ebc\u5ebd\u5ebf",6],["8f40","\u5ec6\u5ec7\u5ec8\u5ecb",5,"\u5ed4\u5ed5\u5ed7\u5ed8\u5ed9\u5eda\u5edc",11,"\u5ee9\u5eeb",8,"\u5ef5\u5ef8\u5ef9\u5efb\u5efc\u5efd\u5f05\u5f06\u5f07\u5f09\u5f0c\u5f0d\u5f0e\u5f10\u5f12\u5f14\u5f16\u5f19\u5f1a\u5f1c\u5f1d\u5f1e\u5f21\u5f22\u5f23\u5f24"],["8f80","\u5f28\u5f2b\u5f2c\u5f2e\u5f30\u5f32",6,"\u5f3b\u5f3d\u5f3e\u5f3f\u5f41",14,"\u5f51\u5f54\u5f59\u5f5a\u5f5b\u5f5c\u5f5e\u5f5f\u5f60\u5f63\u5f65\u5f67\u5f68\u5f6b\u5f6e\u5f6f\u5f72\u5f74\u5f75\u5f76\u5f78\u5f7a\u5f7d\u5f7e\u5f7f\u5f83\u5f86\u5f8d\u5f8e\u5f8f\u5f91\u5f93\u5f94\u5f96\u5f9a\u5f9b\u5f9d\u5f9e\u5f9f\u5fa0\u5fa2",5,"\u5fa9\u5fab\u5fac\u5faf",5,"\u5fb6\u5fb8\u5fb9\u5fba\u5fbb\u5fbe",4,"\u5fc7\u5fc8\u5fca\u5fcb\u5fce\u5fd3\u5fd4\u5fd5\u5fda\u5fdb\u5fdc\u5fde\u5fdf\u5fe2\u5fe3\u5fe5\u5fe6\u5fe8\u5fe9\u5fec\u5fef\u5ff0\u5ff2\u5ff3\u5ff4\u5ff6\u5ff7\u5ff9\u5ffa\u5ffc\u6007"],["9040","\u6008\u6009\u600b\u600c\u6010\u6011\u6013\u6017\u6018\u601a\u601e\u601f\u6022\u6023\u6024\u602c\u602d\u602e\u6030",4,"\u6036",4,"\u603d\u603e\u6040\u6044",6,"\u604c\u604e\u604f\u6051\u6053\u6054\u6056\u6057\u6058\u605b\u605c\u605e\u605f\u6060\u6061\u6065\u6066\u606e\u6071\u6072\u6074\u6075\u6077\u607e\u6080"],["9080","\u6081\u6082\u6085\u6086\u6087\u6088\u608a\u608b\u608e\u608f\u6090\u6091\u6093\u6095\u6097\u6098\u6099\u609c\u609e\u60a1\u60a2\u60a4\u60a5\u60a7\u60a9\u60aa\u60ae\u60b0\u60b3\u60b5\u60b6\u60b7\u60b9\u60ba\u60bd",7,"\u60c7\u60c8\u60c9\u60cc",4,"\u60d2\u60d3\u60d4\u60d6\u60d7\u60d9\u60db\u60de\u60e1",4,"\u60ea\u60f1\u60f2\u60f5\u60f7\u60f8\u60fb",4,"\u6102\u6103\u6104\u6105\u6107\u610a\u610b\u610c\u6110",4,"\u6116\u6117\u6118\u6119\u611b\u611c\u611d\u611e\u6121\u6122\u6125\u6128\u6129\u612a\u612c",18,"\u6140",6],["9140","\u6147\u6149\u614b\u614d\u614f\u6150\u6152\u6153\u6154\u6156",6,"\u615e\u615f\u6160\u6161\u6163\u6164\u6165\u6166\u6169",6,"\u6171\u6172\u6173\u6174\u6176\u6178",18,"\u618c\u618d\u618f",4,"\u6195"],["9180","\u6196",6,"\u619e",8,"\u61aa\u61ab\u61ad",9,"\u61b8",5,"\u61bf\u61c0\u61c1\u61c3",4,"\u61c9\u61cc",4,"\u61d3\u61d5",16,"\u61e7",13,"\u61f6",8,"\u6200",5,"\u6207\u6209\u6213\u6214\u6219\u621c\u621d\u621e\u6220\u6223\u6226\u6227\u6228\u6229\u622b\u622d\u622f\u6230\u6231\u6232\u6235\u6236\u6238",4,"\u6242\u6244\u6245\u6246\u624a"],["9240","\u624f\u6250\u6255\u6256\u6257\u6259\u625a\u625c",6,"\u6264\u6265\u6268\u6271\u6272\u6274\u6275\u6277\u6278\u627a\u627b\u627d\u6281\u6282\u6283\u6285\u6286\u6287\u6288\u628b",5,"\u6294\u6299\u629c\u629d\u629e\u62a3\u62a6\u62a7\u62a9\u62aa\u62ad\u62ae\u62af\u62b0\u62b2\u62b3\u62b4\u62b6\u62b7\u62b8\u62ba\u62be\u62c0\u62c1"],["9280","\u62c3\u62cb\u62cf\u62d1\u62d5\u62dd\u62de\u62e0\u62e1\u62e4\u62ea\u62eb\u62f0\u62f2\u62f5\u62f8\u62f9\u62fa\u62fb\u6300\u6303\u6304\u6305\u6306\u630a\u630b\u630c\u630d\u630f\u6310\u6312\u6313\u6314\u6315\u6317\u6318\u6319\u631c\u6326\u6327\u6329\u632c\u632d\u632e\u6330\u6331\u6333",5,"\u633b\u633c\u633e\u633f\u6340\u6341\u6344\u6347\u6348\u634a\u6351\u6352\u6353\u6354\u6356",7,"\u6360\u6364\u6365\u6366\u6368\u636a\u636b\u636c\u636f\u6370\u6372\u6373\u6374\u6375\u6378\u6379\u637c\u637d\u637e\u637f\u6381\u6383\u6384\u6385\u6386\u638b\u638d\u6391\u6393\u6394\u6395\u6397\u6399",6,"\u63a1\u63a4\u63a6\u63ab\u63af\u63b1\u63b2\u63b5\u63b6\u63b9\u63bb\u63bd\u63bf\u63c0"],["9340","\u63c1\u63c2\u63c3\u63c5\u63c7\u63c8\u63ca\u63cb\u63cc\u63d1\u63d3\u63d4\u63d5\u63d7",6,"\u63df\u63e2\u63e4",4,"\u63eb\u63ec\u63ee\u63ef\u63f0\u63f1\u63f3\u63f5\u63f7\u63f9\u63fa\u63fb\u63fc\u63fe\u6403\u6404\u6406",4,"\u640d\u640e\u6411\u6412\u6415",5,"\u641d\u641f\u6422\u6423\u6424"],["9380","\u6425\u6427\u6428\u6429\u642b\u642e",5,"\u6435",4,"\u643b\u643c\u643e\u6440\u6442\u6443\u6449\u644b",6,"\u6453\u6455\u6456\u6457\u6459",4,"\u645f",7,"\u6468\u646a\u646b\u646c\u646e",9,"\u647b",6,"\u6483\u6486\u6488",8,"\u6493\u6494\u6497\u6498\u649a\u649b\u649c\u649d\u649f",4,"\u64a5\u64a6\u64a7\u64a8\u64aa\u64ab\u64af\u64b1\u64b2\u64b3\u64b4\u64b6\u64b9\u64bb\u64bd\u64be\u64bf\u64c1\u64c3\u64c4\u64c6",6,"\u64cf\u64d1\u64d3\u64d4\u64d5\u64d6\u64d9\u64da"],["9440","\u64db\u64dc\u64dd\u64df\u64e0\u64e1\u64e3\u64e5\u64e7",24,"\u6501",7,"\u650a",7,"\u6513",4,"\u6519",8],["9480","\u6522\u6523\u6524\u6526",4,"\u652c\u652d\u6530\u6531\u6532\u6533\u6537\u653a\u653c\u653d\u6540",4,"\u6546\u6547\u654a\u654b\u654d\u654e\u6550\u6552\u6553\u6554\u6557\u6558\u655a\u655c\u655f\u6560\u6561\u6564\u6565\u6567\u6568\u6569\u656a\u656d\u656e\u656f\u6571\u6573\u6575\u6576\u6578",14,"\u6588\u6589\u658a\u658d\u658e\u658f\u6592\u6594\u6595\u6596\u6598\u659a\u659d\u659e\u65a0\u65a2\u65a3\u65a6\u65a8\u65aa\u65ac\u65ae\u65b1",7,"\u65ba\u65bb\u65be\u65bf\u65c0\u65c2\u65c7\u65c8\u65c9\u65ca\u65cd\u65d0\u65d1\u65d3\u65d4\u65d5\u65d8",7,"\u65e1\u65e3\u65e4\u65ea\u65eb"],["9540","\u65f2\u65f3\u65f4\u65f5\u65f8\u65f9\u65fb",4,"\u6601\u6604\u6605\u6607\u6608\u6609\u660b\u660d\u6610\u6611\u6612\u6616\u6617\u6618\u661a\u661b\u661c\u661e\u6621\u6622\u6623\u6624\u6626\u6629\u662a\u662b\u662c\u662e\u6630\u6632\u6633\u6637",4,"\u663d\u663f\u6640\u6642\u6644",6,"\u664d\u664e\u6650\u6651\u6658"],["9580","\u6659\u665b\u665c\u665d\u665e\u6660\u6662\u6663\u6665\u6667\u6669",4,"\u6671\u6672\u6673\u6675\u6678\u6679\u667b\u667c\u667d\u667f\u6680\u6681\u6683\u6685\u6686\u6688\u6689\u668a\u668b\u668d\u668e\u668f\u6690\u6692\u6693\u6694\u6695\u6698",4,"\u669e",8,"\u66a9",4,"\u66af",4,"\u66b5\u66b6\u66b7\u66b8\u66ba\u66bb\u66bc\u66bd\u66bf",25,"\u66da\u66de",7,"\u66e7\u66e8\u66ea",5,"\u66f1\u66f5\u66f6\u66f8\u66fa\u66fb\u66fd\u6701\u6702\u6703"],["9640","\u6704\u6705\u6706\u6707\u670c\u670e\u670f\u6711\u6712\u6713\u6716\u6718\u6719\u671a\u671c\u671e\u6720",5,"\u6727\u6729\u672e\u6730\u6732\u6733\u6736\u6737\u6738\u6739\u673b\u673c\u673e\u673f\u6741\u6744\u6745\u6747\u674a\u674b\u674d\u6752\u6754\u6755\u6757",4,"\u675d\u6762\u6763\u6764\u6766\u6767\u676b\u676c\u676e\u6771\u6774\u6776"],["9680","\u6778\u6779\u677a\u677b\u677d\u6780\u6782\u6783\u6785\u6786\u6788\u678a\u678c\u678d\u678e\u678f\u6791\u6792\u6793\u6794\u6796\u6799\u679b\u679f\u67a0\u67a1\u67a4\u67a6\u67a9\u67ac\u67ae\u67b1\u67b2\u67b4\u67b9",7,"\u67c2\u67c5",9,"\u67d5\u67d6\u67d7\u67db\u67df\u67e1\u67e3\u67e4\u67e6\u67e7\u67e8\u67ea\u67eb\u67ed\u67ee\u67f2\u67f5",7,"\u67fe\u6801\u6802\u6803\u6804\u6806\u680d\u6810\u6812\u6814\u6815\u6818",4,"\u681e\u681f\u6820\u6822",6,"\u682b",6,"\u6834\u6835\u6836\u683a\u683b\u683f\u6847\u684b\u684d\u684f\u6852\u6856",5],["9740","\u685c\u685d\u685e\u685f\u686a\u686c",7,"\u6875\u6878",8,"\u6882\u6884\u6887",7,"\u6890\u6891\u6892\u6894\u6895\u6896\u6898",9,"\u68a3\u68a4\u68a5\u68a9\u68aa\u68ab\u68ac\u68ae\u68b1\u68b2\u68b4\u68b6\u68b7\u68b8"],["9780","\u68b9",6,"\u68c1\u68c3",5,"\u68ca\u68cc\u68ce\u68cf\u68d0\u68d1\u68d3\u68d4\u68d6\u68d7\u68d9\u68db",4,"\u68e1\u68e2\u68e4",9,"\u68ef\u68f2\u68f3\u68f4\u68f6\u68f7\u68f8\u68fb\u68fd\u68fe\u68ff\u6900\u6902\u6903\u6904\u6906",4,"\u690c\u690f\u6911\u6913",11,"\u6921\u6922\u6923\u6925",7,"\u692e\u692f\u6931\u6932\u6933\u6935\u6936\u6937\u6938\u693a\u693b\u693c\u693e\u6940\u6941\u6943",16,"\u6955\u6956\u6958\u6959\u695b\u695c\u695f"],["9840","\u6961\u6962\u6964\u6965\u6967\u6968\u6969\u696a\u696c\u696d\u696f\u6970\u6972",4,"\u697a\u697b\u697d\u697e\u697f\u6981\u6983\u6985\u698a\u698b\u698c\u698e",5,"\u6996\u6997\u6999\u699a\u699d",9,"\u69a9\u69aa\u69ac\u69ae\u69af\u69b0\u69b2\u69b3\u69b5\u69b6\u69b8\u69b9\u69ba\u69bc\u69bd"],["9880","\u69be\u69bf\u69c0\u69c2",7,"\u69cb\u69cd\u69cf\u69d1\u69d2\u69d3\u69d5",5,"\u69dc\u69dd\u69de\u69e1",11,"\u69ee\u69ef\u69f0\u69f1\u69f3",9,"\u69fe\u6a00",9,"\u6a0b",11,"\u6a19",5,"\u6a20\u6a22",5,"\u6a29\u6a2b\u6a2c\u6a2d\u6a2e\u6a30\u6a32\u6a33\u6a34\u6a36",6,"\u6a3f",4,"\u6a45\u6a46\u6a48",7,"\u6a51",6,"\u6a5a"],["9940","\u6a5c",4,"\u6a62\u6a63\u6a64\u6a66",10,"\u6a72",6,"\u6a7a\u6a7b\u6a7d\u6a7e\u6a7f\u6a81\u6a82\u6a83\u6a85",8,"\u6a8f\u6a92",4,"\u6a98",7,"\u6aa1",5],["9980","\u6aa7\u6aa8\u6aaa\u6aad",114,"\u6b25\u6b26\u6b28",6],["9a40","\u6b2f\u6b30\u6b31\u6b33\u6b34\u6b35\u6b36\u6b38\u6b3b\u6b3c\u6b3d\u6b3f\u6b40\u6b41\u6b42\u6b44\u6b45\u6b48\u6b4a\u6b4b\u6b4d",11,"\u6b5a",7,"\u6b68\u6b69\u6b6b",13,"\u6b7a\u6b7d\u6b7e\u6b7f\u6b80\u6b85\u6b88"],["9a80","\u6b8c\u6b8e\u6b8f\u6b90\u6b91\u6b94\u6b95\u6b97\u6b98\u6b99\u6b9c",4,"\u6ba2",7,"\u6bab",7,"\u6bb6\u6bb8",6,"\u6bc0\u6bc3\u6bc4\u6bc6",4,"\u6bcc\u6bce\u6bd0\u6bd1\u6bd8\u6bda\u6bdc",4,"\u6be2",7,"\u6bec\u6bed\u6bee\u6bf0\u6bf1\u6bf2\u6bf4\u6bf6\u6bf7\u6bf8\u6bfa\u6bfb\u6bfc\u6bfe",6,"\u6c08",4,"\u6c0e\u6c12\u6c17\u6c1c\u6c1d\u6c1e\u6c20\u6c23\u6c25\u6c2b\u6c2c\u6c2d\u6c31\u6c33\u6c36\u6c37\u6c39\u6c3a\u6c3b\u6c3c\u6c3e\u6c3f\u6c43\u6c44\u6c45\u6c48\u6c4b",4,"\u6c51\u6c52\u6c53\u6c56\u6c58"],["9b40","\u6c59\u6c5a\u6c62\u6c63\u6c65\u6c66\u6c67\u6c6b",4,"\u6c71\u6c73\u6c75\u6c77\u6c78\u6c7a\u6c7b\u6c7c\u6c7f\u6c80\u6c84\u6c87\u6c8a\u6c8b\u6c8d\u6c8e\u6c91\u6c92\u6c95\u6c96\u6c97\u6c98\u6c9a\u6c9c\u6c9d\u6c9e\u6ca0\u6ca2\u6ca8\u6cac\u6caf\u6cb0\u6cb4\u6cb5\u6cb6\u6cb7\u6cba\u6cc0\u6cc1\u6cc2\u6cc3\u6cc6\u6cc7\u6cc8\u6ccb\u6ccd\u6cce\u6ccf\u6cd1\u6cd2\u6cd8"],["9b80","\u6cd9\u6cda\u6cdc\u6cdd\u6cdf\u6ce4\u6ce6\u6ce7\u6ce9\u6cec\u6ced\u6cf2\u6cf4\u6cf9\u6cff\u6d00\u6d02\u6d03\u6d05\u6d06\u6d08\u6d09\u6d0a\u6d0d\u6d0f\u6d10\u6d11\u6d13\u6d14\u6d15\u6d16\u6d18\u6d1c\u6d1d\u6d1f",5,"\u6d26\u6d28\u6d29\u6d2c\u6d2d\u6d2f\u6d30\u6d34\u6d36\u6d37\u6d38\u6d3a\u6d3f\u6d40\u6d42\u6d44\u6d49\u6d4c\u6d50\u6d55\u6d56\u6d57\u6d58\u6d5b\u6d5d\u6d5f\u6d61\u6d62\u6d64\u6d65\u6d67\u6d68\u6d6b\u6d6c\u6d6d\u6d70\u6d71\u6d72\u6d73\u6d75\u6d76\u6d79\u6d7a\u6d7b\u6d7d",4,"\u6d83\u6d84\u6d86\u6d87\u6d8a\u6d8b\u6d8d\u6d8f\u6d90\u6d92\u6d96",4,"\u6d9c\u6da2\u6da5\u6dac\u6dad\u6db0\u6db1\u6db3\u6db4\u6db6\u6db7\u6db9",5,"\u6dc1\u6dc2\u6dc3\u6dc8\u6dc9\u6dca"],["9c40","\u6dcd\u6dce\u6dcf\u6dd0\u6dd2\u6dd3\u6dd4\u6dd5\u6dd7\u6dda\u6ddb\u6ddc\u6ddf\u6de2\u6de3\u6de5\u6de7\u6de8\u6de9\u6dea\u6ded\u6def\u6df0\u6df2\u6df4\u6df5\u6df6\u6df8\u6dfa\u6dfd",7,"\u6e06\u6e07\u6e08\u6e09\u6e0b\u6e0f\u6e12\u6e13\u6e15\u6e18\u6e19\u6e1b\u6e1c\u6e1e\u6e1f\u6e22\u6e26\u6e27\u6e28\u6e2a\u6e2c\u6e2e\u6e30\u6e31\u6e33\u6e35"],["9c80","\u6e36\u6e37\u6e39\u6e3b",7,"\u6e45",7,"\u6e4f\u6e50\u6e51\u6e52\u6e55\u6e57\u6e59\u6e5a\u6e5c\u6e5d\u6e5e\u6e60",10,"\u6e6c\u6e6d\u6e6f",14,"\u6e80\u6e81\u6e82\u6e84\u6e87\u6e88\u6e8a",4,"\u6e91",6,"\u6e99\u6e9a\u6e9b\u6e9d\u6e9e\u6ea0\u6ea1\u6ea3\u6ea4\u6ea6\u6ea8\u6ea9\u6eab\u6eac\u6ead\u6eae\u6eb0\u6eb3\u6eb5\u6eb8\u6eb9\u6ebc\u6ebe\u6ebf\u6ec0\u6ec3\u6ec4\u6ec5\u6ec6\u6ec8\u6ec9\u6eca\u6ecc\u6ecd\u6ece\u6ed0\u6ed2\u6ed6\u6ed8\u6ed9\u6edb\u6edc\u6edd\u6ee3\u6ee7\u6eea",5],["9d40","\u6ef0\u6ef1\u6ef2\u6ef3\u6ef5\u6ef6\u6ef7\u6ef8\u6efa",7,"\u6f03\u6f04\u6f05\u6f07\u6f08\u6f0a",4,"\u6f10\u6f11\u6f12\u6f16",9,"\u6f21\u6f22\u6f23\u6f25\u6f26\u6f27\u6f28\u6f2c\u6f2e\u6f30\u6f32\u6f34\u6f35\u6f37",6,"\u6f3f\u6f40\u6f41\u6f42"],["9d80","\u6f43\u6f44\u6f45\u6f48\u6f49\u6f4a\u6f4c\u6f4e",9,"\u6f59\u6f5a\u6f5b\u6f5d\u6f5f\u6f60\u6f61\u6f63\u6f64\u6f65\u6f67",5,"\u6f6f\u6f70\u6f71\u6f73\u6f75\u6f76\u6f77\u6f79\u6f7b\u6f7d",6,"\u6f85\u6f86\u6f87\u6f8a\u6f8b\u6f8f",12,"\u6f9d\u6f9e\u6f9f\u6fa0\u6fa2",4,"\u6fa8",10,"\u6fb4\u6fb5\u6fb7\u6fb8\u6fba",5,"\u6fc1\u6fc3",5,"\u6fca",6,"\u6fd3",10,"\u6fdf\u6fe2\u6fe3\u6fe4\u6fe5"],["9e40","\u6fe6",7,"\u6ff0",32,"\u7012",7,"\u701c",6,"\u7024",6],["9e80","\u702b",9,"\u7036\u7037\u7038\u703a",17,"\u704d\u704e\u7050",13,"\u705f",11,"\u706e\u7071\u7072\u7073\u7074\u7077\u7079\u707a\u707b\u707d\u7081\u7082\u7083\u7084\u7086\u7087\u7088\u708b\u708c\u708d\u708f\u7090\u7091\u7093\u7097\u7098\u709a\u709b\u709e",12,"\u70b0\u70b2\u70b4\u70b5\u70b6\u70ba\u70be\u70bf\u70c4\u70c5\u70c6\u70c7\u70c9\u70cb",12,"\u70da"],["9f40","\u70dc\u70dd\u70de\u70e0\u70e1\u70e2\u70e3\u70e5\u70ea\u70ee\u70f0",6,"\u70f8\u70fa\u70fb\u70fc\u70fe",10,"\u710b",4,"\u7111\u7112\u7114\u7117\u711b",10,"\u7127",7,"\u7132\u7133\u7134"],["9f80","\u7135\u7137",13,"\u7146\u7147\u7148\u7149\u714b\u714d\u714f",12,"\u715d\u715f",4,"\u7165\u7169",4,"\u716f\u7170\u7171\u7174\u7175\u7176\u7177\u7179\u717b\u717c\u717e",5,"\u7185",4,"\u718b\u718c\u718d\u718e\u7190\u7191\u7192\u7193\u7195\u7196\u7197\u719a",4,"\u71a1",6,"\u71a9\u71aa\u71ab\u71ad",5,"\u71b4\u71b6\u71b7\u71b8\u71ba",8,"\u71c4",9,"\u71cf",4],["a040","\u71d6",9,"\u71e1\u71e2\u71e3\u71e4\u71e6\u71e8",5,"\u71ef",9,"\u71fa",11,"\u7207",19],["a080","\u721b\u721c\u721e",9,"\u7229\u722b\u722d\u722e\u722f\u7232\u7233\u7234\u723a\u723c\u723e\u7240",6,"\u7249\u724a\u724b\u724e\u724f\u7250\u7251\u7253\u7254\u7255\u7257\u7258\u725a\u725c\u725e\u7260\u7263\u7264\u7265\u7268\u726a\u726b\u726c\u726d\u7270\u7271\u7273\u7274\u7276\u7277\u7278\u727b\u727c\u727d\u7282\u7283\u7285",4,"\u728c\u728e\u7290\u7291\u7293",11,"\u72a0",11,"\u72ae\u72b1\u72b2\u72b3\u72b5\u72ba",6,"\u72c5\u72c6\u72c7\u72c9\u72ca\u72cb\u72cc\u72cf\u72d1\u72d3\u72d4\u72d5\u72d6\u72d8\u72da\u72db"],["a1a1","\u3000\u3001\u3002\xb7\u02c9\u02c7\xa8\u3003\u3005\u2014\uff5e\u2016\u2026\u2018\u2019\u201c\u201d\u3014\u3015\u3008",7,"\u3016\u3017\u3010\u3011\xb1\xd7\xf7\u2236\u2227\u2228\u2211\u220f\u222a\u2229\u2208\u2237\u221a\u22a5\u2225\u2220\u2312\u2299\u222b\u222e\u2261\u224c\u2248\u223d\u221d\u2260\u226e\u226f\u2264\u2265\u221e\u2235\u2234\u2642\u2640\xb0\u2032\u2033\u2103\uff04\xa4\uffe0\uffe1\u2030\xa7\u2116\u2606\u2605\u25cb\u25cf\u25ce\u25c7\u25c6\u25a1\u25a0\u25b3\u25b2\u203b\u2192\u2190\u2191\u2193\u3013"],["a2a1","\u2170",9],["a2b1","\u2488",19,"\u2474",19,"\u2460",9],["a2e5","\u3220",9],["a2f1","\u2160",11],["a3a1","\uff01\uff02\uff03\uffe5\uff05",88,"\uffe3"],["a4a1","\u3041",82],["a5a1","\u30a1",85],["a6a1","\u0391",16,"\u03a3",6],["a6c1","\u03b1",16,"\u03c3",6],["a6e0","\ufe35\ufe36\ufe39\ufe3a\ufe3f\ufe40\ufe3d\ufe3e\ufe41\ufe42\ufe43\ufe44"],["a6ee","\ufe3b\ufe3c\ufe37\ufe38\ufe31"],["a6f4","\ufe33\ufe34"],["a7a1","\u0410",5,"\u0401\u0416",25],["a7d1","\u0430",5,"\u0451\u0436",25],["a840","\u02ca\u02cb\u02d9\u2013\u2015\u2025\u2035\u2105\u2109\u2196\u2197\u2198\u2199\u2215\u221f\u2223\u2252\u2266\u2267\u22bf\u2550",35,"\u2581",6],["a880","\u2588",7,"\u2593\u2594\u2595\u25bc\u25bd\u25e2\u25e3\u25e4\u25e5\u2609\u2295\u3012\u301d\u301e"],["a8a1","\u0101\xe1\u01ce\xe0\u0113\xe9\u011b\xe8\u012b\xed\u01d0\xec\u014d\xf3\u01d2\xf2\u016b\xfa\u01d4\xf9\u01d6\u01d8\u01da\u01dc\xfc\xea\u0251"],["a8bd","\u0144\u0148"],["a8c0","\u0261"],["a8c5","\u3105",36],["a940","\u3021",8,"\u32a3\u338e\u338f\u339c\u339d\u339e\u33a1\u33c4\u33ce\u33d1\u33d2\u33d5\ufe30\uffe2\uffe4"],["a959","\u2121\u3231"],["a95c","\u2010"],["a960","\u30fc\u309b\u309c\u30fd\u30fe\u3006\u309d\u309e\ufe49",9,"\ufe54\ufe55\ufe56\ufe57\ufe59",8],["a980","\ufe62",4,"\ufe68\ufe69\ufe6a\ufe6b"],["a996","\u3007"],["a9a4","\u2500",75],["aa40","\u72dc\u72dd\u72df\u72e2",5,"\u72ea\u72eb\u72f5\u72f6\u72f9\u72fd\u72fe\u72ff\u7300\u7302\u7304",5,"\u730b\u730c\u730d\u730f\u7310\u7311\u7312\u7314\u7318\u7319\u731a\u731f\u7320\u7323\u7324\u7326\u7327\u7328\u732d\u732f\u7330\u7332\u7333\u7335\u7336\u733a\u733b\u733c\u733d\u7340",8],["aa80","\u7349\u734a\u734b\u734c\u734e\u734f\u7351\u7353\u7354\u7355\u7356\u7358",7,"\u7361",10,"\u736e\u7370\u7371"],["ab40","\u7372",11,"\u737f",4,"\u7385\u7386\u7388\u738a\u738c\u738d\u738f\u7390\u7392\u7393\u7394\u7395\u7397\u7398\u7399\u739a\u739c\u739d\u739e\u73a0\u73a1\u73a3",5,"\u73aa\u73ac\u73ad\u73b1\u73b4\u73b5\u73b6\u73b8\u73b9\u73bc\u73bd\u73be\u73bf\u73c1\u73c3",4],["ab80","\u73cb\u73cc\u73ce\u73d2",6,"\u73da\u73db\u73dc\u73dd\u73df\u73e1\u73e2\u73e3\u73e4\u73e6\u73e8\u73ea\u73eb\u73ec\u73ee\u73ef\u73f0\u73f1\u73f3",4],["ac40","\u73f8",10,"\u7404\u7407\u7408\u740b\u740c\u740d\u740e\u7411",8,"\u741c",5,"\u7423\u7424\u7427\u7429\u742b\u742d\u742f\u7431\u7432\u7437",4,"\u743d\u743e\u743f\u7440\u7442",11],["ac80","\u744e",6,"\u7456\u7458\u745d\u7460",12,"\u746e\u746f\u7471",4,"\u7478\u7479\u747a"],["ad40","\u747b\u747c\u747d\u747f\u7482\u7484\u7485\u7486\u7488\u7489\u748a\u748c\u748d\u748f\u7491",10,"\u749d\u749f",7,"\u74aa",15,"\u74bb",12],["ad80","\u74c8",9,"\u74d3",8,"\u74dd\u74df\u74e1\u74e5\u74e7",6,"\u74f0\u74f1\u74f2"],["ae40","\u74f3\u74f5\u74f8",6,"\u7500\u7501\u7502\u7503\u7505",7,"\u750e\u7510\u7512\u7514\u7515\u7516\u7517\u751b\u751d\u751e\u7520",4,"\u7526\u7527\u752a\u752e\u7534\u7536\u7539\u753c\u753d\u753f\u7541\u7542\u7543\u7544\u7546\u7547\u7549\u754a\u754d\u7550\u7551\u7552\u7553\u7555\u7556\u7557\u7558"],["ae80","\u755d",7,"\u7567\u7568\u7569\u756b",6,"\u7573\u7575\u7576\u7577\u757a",4,"\u7580\u7581\u7582\u7584\u7585\u7587"],["af40","\u7588\u7589\u758a\u758c\u758d\u758e\u7590\u7593\u7595\u7598\u759b\u759c\u759e\u75a2\u75a6",4,"\u75ad\u75b6\u75b7\u75ba\u75bb\u75bf\u75c0\u75c1\u75c6\u75cb\u75cc\u75ce\u75cf\u75d0\u75d1\u75d3\u75d7\u75d9\u75da\u75dc\u75dd\u75df\u75e0\u75e1\u75e5\u75e9\u75ec\u75ed\u75ee\u75ef\u75f2\u75f3\u75f5\u75f6\u75f7\u75f8\u75fa\u75fb\u75fd\u75fe\u7602\u7604\u7606\u7607"],["af80","\u7608\u7609\u760b\u760d\u760e\u760f\u7611\u7612\u7613\u7614\u7616\u761a\u761c\u761d\u761e\u7621\u7623\u7627\u7628\u762c\u762e\u762f\u7631\u7632\u7636\u7637\u7639\u763a\u763b\u763d\u7641\u7642\u7644"],["b040","\u7645",6,"\u764e",5,"\u7655\u7657",4,"\u765d\u765f\u7660\u7661\u7662\u7664",6,"\u766c\u766d\u766e\u7670",7,"\u7679\u767a\u767c\u767f\u7680\u7681\u7683\u7685\u7689\u768a\u768c\u768d\u768f\u7690\u7692\u7694\u7695\u7697\u7698\u769a\u769b"],["b080","\u769c",7,"\u76a5",8,"\u76af\u76b0\u76b3\u76b5",9,"\u76c0\u76c1\u76c3\u554a\u963f\u57c3\u6328\u54ce\u5509\u54c0\u7691\u764c\u853c\u77ee\u827e\u788d\u7231\u9698\u978d\u6c28\u5b89\u4ffa\u6309\u6697\u5cb8\u80fa\u6848\u80ae\u6602\u76ce\u51f9\u6556\u71ac\u7ff1\u8884\u50b2\u5965\u61ca\u6fb3\u82ad\u634c\u6252\u53ed\u5427\u7b06\u516b\u75a4\u5df4\u62d4\u8dcb\u9776\u628a\u8019\u575d\u9738\u7f62\u7238\u767d\u67cf\u767e\u6446\u4f70\u8d25\u62dc\u7a17\u6591\u73ed\u642c\u6273\u822c\u9881\u677f\u7248\u626e\u62cc\u4f34\u74e3\u534a\u529e\u7eca\u90a6\u5e2e\u6886\u699c\u8180\u7ed1\u68d2\u78c5\u868c\u9551\u508d\u8c24\u82de\u80de\u5305\u8912\u5265"],["b140","\u76c4\u76c7\u76c9\u76cb\u76cc\u76d3\u76d5\u76d9\u76da\u76dc\u76dd\u76de\u76e0",4,"\u76e6",7,"\u76f0\u76f3\u76f5\u76f6\u76f7\u76fa\u76fb\u76fd\u76ff\u7700\u7702\u7703\u7705\u7706\u770a\u770c\u770e",10,"\u771b\u771c\u771d\u771e\u7721\u7723\u7724\u7725\u7727\u772a\u772b"],["b180","\u772c\u772e\u7730",4,"\u7739\u773b\u773d\u773e\u773f\u7742\u7744\u7745\u7746\u7748",7,"\u7752",7,"\u775c\u8584\u96f9\u4fdd\u5821\u9971\u5b9d\u62b1\u62a5\u66b4\u8c79\u9c8d\u7206\u676f\u7891\u60b2\u5351\u5317\u8f88\u80cc\u8d1d\u94a1\u500d\u72c8\u5907\u60eb\u7119\u88ab\u5954\u82ef\u672c\u7b28\u5d29\u7ef7\u752d\u6cf5\u8e66\u8ff8\u903c\u9f3b\u6bd4\u9119\u7b14\u5f7c\u78a7\u84d6\u853d\u6bd5\u6bd9\u6bd6\u5e01\u5e87\u75f9\u95ed\u655d\u5f0a\u5fc5\u8f9f\u58c1\u81c2\u907f\u965b\u97ad\u8fb9\u7f16\u8d2c\u6241\u4fbf\u53d8\u535e\u8fa8\u8fa9\u8fab\u904d\u6807\u5f6a\u8198\u8868\u9cd6\u618b\u522b\u762a\u5f6c\u658c\u6fd2\u6ee8\u5bbe\u6448\u5175\u51b0\u67c4\u4e19\u79c9\u997c\u70b3"],["b240","\u775d\u775e\u775f\u7760\u7764\u7767\u7769\u776a\u776d",11,"\u777a\u777b\u777c\u7781\u7782\u7783\u7786",5,"\u778f\u7790\u7793",11,"\u77a1\u77a3\u77a4\u77a6\u77a8\u77ab\u77ad\u77ae\u77af\u77b1\u77b2\u77b4\u77b6",4],["b280","\u77bc\u77be\u77c0",12,"\u77ce",8,"\u77d8\u77d9\u77da\u77dd",4,"\u77e4\u75c5\u5e76\u73bb\u83e0\u64ad\u62e8\u94b5\u6ce2\u535a\u52c3\u640f\u94c2\u7b94\u4f2f\u5e1b\u8236\u8116\u818a\u6e24\u6cca\u9a73\u6355\u535c\u54fa\u8865\u57e0\u4e0d\u5e03\u6b65\u7c3f\u90e8\u6016\u64e6\u731c\u88c1\u6750\u624d\u8d22\u776c\u8e29\u91c7\u5f69\u83dc\u8521\u9910\u53c2\u8695\u6b8b\u60ed\u60e8\u707f\u82cd\u8231\u4ed3\u6ca7\u85cf\u64cd\u7cd9\u69fd\u66f9\u8349\u5395\u7b56\u4fa7\u518c\u6d4b\u5c42\u8e6d\u63d2\u53c9\u832c\u8336\u67e5\u78b4\u643d\u5bdf\u5c94\u5dee\u8be7\u62c6\u67f4\u8c7a\u6400\u63ba\u8749\u998b\u8c17\u7f20\u94f2\u4ea7\u9610\u98a4\u660c\u7316"],["b340","\u77e6\u77e8\u77ea\u77ef\u77f0\u77f1\u77f2\u77f4\u77f5\u77f7\u77f9\u77fa\u77fb\u77fc\u7803",5,"\u780a\u780b\u780e\u780f\u7810\u7813\u7815\u7819\u781b\u781e\u7820\u7821\u7822\u7824\u7828\u782a\u782b\u782e\u782f\u7831\u7832\u7833\u7835\u7836\u783d\u783f\u7841\u7842\u7843\u7844\u7846\u7848\u7849\u784a\u784b\u784d\u784f\u7851\u7853\u7854\u7858\u7859\u785a"],["b380","\u785b\u785c\u785e",11,"\u786f",7,"\u7878\u7879\u787a\u787b\u787d",6,"\u573a\u5c1d\u5e38\u957f\u507f\u80a0\u5382\u655e\u7545\u5531\u5021\u8d85\u6284\u949e\u671d\u5632\u6f6e\u5de2\u5435\u7092\u8f66\u626f\u64a4\u63a3\u5f7b\u6f88\u90f4\u81e3\u8fb0\u5c18\u6668\u5ff1\u6c89\u9648\u8d81\u886c\u6491\u79f0\u57ce\u6a59\u6210\u5448\u4e58\u7a0b\u60e9\u6f84\u8bda\u627f\u901e\u9a8b\u79e4\u5403\u75f4\u6301\u5319\u6c60\u8fdf\u5f1b\u9a70\u803b\u9f7f\u4f88\u5c3a\u8d64\u7fc5\u65a5\u70bd\u5145\u51b2\u866b\u5d07\u5ba0\u62bd\u916c\u7574\u8e0c\u7a20\u6101\u7b79\u4ec7\u7ef8\u7785\u4e11\u81ed\u521d\u51fa\u6a71\u53a8\u8e87\u9504\u96cf\u6ec1\u9664\u695a"],["b440","\u7884\u7885\u7886\u7888\u788a\u788b\u788f\u7890\u7892\u7894\u7895\u7896\u7899\u789d\u789e\u78a0\u78a2\u78a4\u78a6\u78a8",7,"\u78b5\u78b6\u78b7\u78b8\u78ba\u78bb\u78bc\u78bd\u78bf\u78c0\u78c2\u78c3\u78c4\u78c6\u78c7\u78c8\u78cc\u78cd\u78ce\u78cf\u78d1\u78d2\u78d3\u78d6\u78d7\u78d8\u78da",9],["b480","\u78e4\u78e5\u78e6\u78e7\u78e9\u78ea\u78eb\u78ed",4,"\u78f3\u78f5\u78f6\u78f8\u78f9\u78fb",5,"\u7902\u7903\u7904\u7906",6,"\u7840\u50a8\u77d7\u6410\u89e6\u5904\u63e3\u5ddd\u7a7f\u693d\u4f20\u8239\u5598\u4e32\u75ae\u7a97\u5e62\u5e8a\u95ef\u521b\u5439\u708a\u6376\u9524\u5782\u6625\u693f\u9187\u5507\u6df3\u7eaf\u8822\u6233\u7ef0\u75b5\u8328\u78c1\u96cc\u8f9e\u6148\u74f7\u8bcd\u6b64\u523a\u8d50\u6b21\u806a\u8471\u56f1\u5306\u4ece\u4e1b\u51d1\u7c97\u918b\u7c07\u4fc3\u8e7f\u7be1\u7a9c\u6467\u5d14\u50ac\u8106\u7601\u7cb9\u6dec\u7fe0\u6751\u5b58\u5bf8\u78cb\u64ae\u6413\u63aa\u632b\u9519\u642d\u8fbe\u7b54\u7629\u6253\u5927\u5446\u6b79\u50a3\u6234\u5e26\u6b86\u4ee3\u8d37\u888b\u5f85\u902e"],["b540","\u790d",5,"\u7914",9,"\u791f",4,"\u7925",14,"\u7935",4,"\u793d\u793f\u7942\u7943\u7944\u7945\u7947\u794a",8,"\u7954\u7955\u7958\u7959\u7961\u7963"],["b580","\u7964\u7966\u7969\u796a\u796b\u796c\u796e\u7970",6,"\u7979\u797b",4,"\u7982\u7983\u7986\u7987\u7988\u7989\u798b\u798c\u798d\u798e\u7990\u7991\u7992\u6020\u803d\u62c5\u4e39\u5355\u90f8\u63b8\u80c6\u65e6\u6c2e\u4f46\u60ee\u6de1\u8bde\u5f39\u86cb\u5f53\u6321\u515a\u8361\u6863\u5200\u6363\u8e48\u5012\u5c9b\u7977\u5bfc\u5230\u7a3b\u60bc\u9053\u76d7\u5fb7\u5f97\u7684\u8e6c\u706f\u767b\u7b49\u77aa\u51f3\u9093\u5824\u4f4e\u6ef4\u8fea\u654c\u7b1b\u72c4\u6da4\u7fdf\u5ae1\u62b5\u5e95\u5730\u8482\u7b2c\u5e1d\u5f1f\u9012\u7f14\u98a0\u6382\u6ec7\u7898\u70b9\u5178\u975b\u57ab\u7535\u4f43\u7538\u5e97\u60e6\u5960\u6dc0\u6bbf\u7889\u53fc\u96d5\u51cb\u5201\u6389\u540a\u9493\u8c03\u8dcc\u7239\u789f\u8776\u8fed\u8c0d\u53e0"],["b640","\u7993",6,"\u799b",11,"\u79a8",10,"\u79b4",4,"\u79bc\u79bf\u79c2\u79c4\u79c5\u79c7\u79c8\u79ca\u79cc\u79ce\u79cf\u79d0\u79d3\u79d4\u79d6\u79d7\u79d9",5,"\u79e0\u79e1\u79e2\u79e5\u79e8\u79ea"],["b680","\u79ec\u79ee\u79f1",6,"\u79f9\u79fa\u79fc\u79fe\u79ff\u7a01\u7a04\u7a05\u7a07\u7a08\u7a09\u7a0a\u7a0c\u7a0f",4,"\u7a15\u7a16\u7a18\u7a19\u7a1b\u7a1c\u4e01\u76ef\u53ee\u9489\u9876\u9f0e\u952d\u5b9a\u8ba2\u4e22\u4e1c\u51ac\u8463\u61c2\u52a8\u680b\u4f97\u606b\u51bb\u6d1e\u515c\u6296\u6597\u9661\u8c46\u9017\u75d8\u90fd\u7763\u6bd2\u728a\u72ec\u8bfb\u5835\u7779\u8d4c\u675c\u9540\u809a\u5ea6\u6e21\u5992\u7aef\u77ed\u953b\u6bb5\u65ad\u7f0e\u5806\u5151\u961f\u5bf9\u58a9\u5428\u8e72\u6566\u987f\u56e4\u949d\u76fe\u9041\u6387\u54c6\u591a\u593a\u579b\u8eb2\u6735\u8dfa\u8235\u5241\u60f0\u5815\u86fe\u5ce8\u9e45\u4fc4\u989d\u8bb9\u5a25\u6076\u5384\u627c\u904f\u9102\u997f\u6069\u800c\u513f\u8033\u5c14\u9975\u6d31\u4e8c"],["b740","\u7a1d\u7a1f\u7a21\u7a22\u7a24",14,"\u7a34\u7a35\u7a36\u7a38\u7a3a\u7a3e\u7a40",5,"\u7a47",9,"\u7a52",4,"\u7a58",16],["b780","\u7a69",6,"\u7a71\u7a72\u7a73\u7a75\u7a7b\u7a7c\u7a7d\u7a7e\u7a82\u7a85\u7a87\u7a89\u7a8a\u7a8b\u7a8c\u7a8e\u7a8f\u7a90\u7a93\u7a94\u7a99\u7a9a\u7a9b\u7a9e\u7aa1\u7aa2\u8d30\u53d1\u7f5a\u7b4f\u4f10\u4e4f\u9600\u6cd5\u73d0\u85e9\u5e06\u756a\u7ffb\u6a0a\u77fe\u9492\u7e41\u51e1\u70e6\u53cd\u8fd4\u8303\u8d29\u72af\u996d\u6cdb\u574a\u82b3\u65b9\u80aa\u623f\u9632\u59a8\u4eff\u8bbf\u7eba\u653e\u83f2\u975e\u5561\u98de\u80a5\u532a\u8bfd\u5420\u80ba\u5e9f\u6cb8\u8d39\u82ac\u915a\u5429\u6c1b\u5206\u7eb7\u575f\u711a\u6c7e\u7c89\u594b\u4efd\u5fff\u6124\u7caa\u4e30\u5c01\u67ab\u8702\u5cf0\u950b\u98ce\u75af\u70fd\u9022\u51af\u7f1d\u8bbd\u5949\u51e4\u4f5b\u5426\u592b\u6577\u80a4\u5b75\u6276\u62c2\u8f90\u5e45\u6c1f\u7b26\u4f0f\u4fd8\u670d"],["b840","\u7aa3\u7aa4\u7aa7\u7aa9\u7aaa\u7aab\u7aae",4,"\u7ab4",10,"\u7ac0",10,"\u7acc",9,"\u7ad7\u7ad8\u7ada\u7adb\u7adc\u7add\u7ae1\u7ae2\u7ae4\u7ae7",5,"\u7aee\u7af0\u7af1\u7af2\u7af3"],["b880","\u7af4",4,"\u7afb\u7afc\u7afe\u7b00\u7b01\u7b02\u7b05\u7b07\u7b09\u7b0c\u7b0d\u7b0e\u7b10\u7b12\u7b13\u7b16\u7b17\u7b18\u7b1a\u7b1c\u7b1d\u7b1f\u7b21\u7b22\u7b23\u7b27\u7b29\u7b2d\u6d6e\u6daa\u798f\u88b1\u5f17\u752b\u629a\u8f85\u4fef\u91dc\u65a7\u812f\u8151\u5e9c\u8150\u8d74\u526f\u8986\u8d4b\u590d\u5085\u4ed8\u961c\u7236\u8179\u8d1f\u5bcc\u8ba3\u9644\u5987\u7f1a\u5490\u5676\u560e\u8be5\u6539\u6982\u9499\u76d6\u6e89\u5e72\u7518\u6746\u67d1\u7aff\u809d\u8d76\u611f\u79c6\u6562\u8d63\u5188\u521a\u94a2\u7f38\u809b\u7eb2\u5c97\u6e2f\u6760\u7bd9\u768b\u9ad8\u818f\u7f94\u7cd5\u641e\u9550\u7a3f\u544a\u54e5\u6b4c\u6401\u6208\u9e3d\u80f3\u7599\u5272\u9769\u845b\u683c\u86e4\u9601\u9694\u94ec\u4e2a\u5404\u7ed9\u6839\u8ddf\u8015\u66f4\u5e9a\u7fb9"],["b940","\u7b2f\u7b30\u7b32\u7b34\u7b35\u7b36\u7b37\u7b39\u7b3b\u7b3d\u7b3f",5,"\u7b46\u7b48\u7b4a\u7b4d\u7b4e\u7b53\u7b55\u7b57\u7b59\u7b5c\u7b5e\u7b5f\u7b61\u7b63",10,"\u7b6f\u7b70\u7b73\u7b74\u7b76\u7b78\u7b7a\u7b7c\u7b7d\u7b7f\u7b81\u7b82\u7b83\u7b84\u7b86",6,"\u7b8e\u7b8f"],["b980","\u7b91\u7b92\u7b93\u7b96\u7b98\u7b99\u7b9a\u7b9b\u7b9e\u7b9f\u7ba0\u7ba3\u7ba4\u7ba5\u7bae\u7baf\u7bb0\u7bb2\u7bb3\u7bb5\u7bb6\u7bb7\u7bb9",7,"\u7bc2\u7bc3\u7bc4\u57c2\u803f\u6897\u5de5\u653b\u529f\u606d\u9f9a\u4f9b\u8eac\u516c\u5bab\u5f13\u5de9\u6c5e\u62f1\u8d21\u5171\u94a9\u52fe\u6c9f\u82df\u72d7\u57a2\u6784\u8d2d\u591f\u8f9c\u83c7\u5495\u7b8d\u4f30\u6cbd\u5b64\u59d1\u9f13\u53e4\u86ca\u9aa8\u8c37\u80a1\u6545\u987e\u56fa\u96c7\u522e\u74dc\u5250\u5be1\u6302\u8902\u4e56\u62d0\u602a\u68fa\u5173\u5b98\u51a0\u89c2\u7ba1\u9986\u7f50\u60ef\u704c\u8d2f\u5149\u5e7f\u901b\u7470\u89c4\u572d\u7845\u5f52\u9f9f\u95fa\u8f68\u9b3c\u8be1\u7678\u6842\u67dc\u8dea\u8d35\u523d\u8f8a\u6eda\u68cd\u9505\u90ed\u56fd\u679c\u88f9\u8fc7\u54c8"],["ba40","\u7bc5\u7bc8\u7bc9\u7bca\u7bcb\u7bcd\u7bce\u7bcf\u7bd0\u7bd2\u7bd4",4,"\u7bdb\u7bdc\u7bde\u7bdf\u7be0\u7be2\u7be3\u7be4\u7be7\u7be8\u7be9\u7beb\u7bec\u7bed\u7bef\u7bf0\u7bf2",4,"\u7bf8\u7bf9\u7bfa\u7bfb\u7bfd\u7bff",7,"\u7c08\u7c09\u7c0a\u7c0d\u7c0e\u7c10",5,"\u7c17\u7c18\u7c19"],["ba80","\u7c1a",4,"\u7c20",5,"\u7c28\u7c29\u7c2b",12,"\u7c39",5,"\u7c42\u9ab8\u5b69\u6d77\u6c26\u4ea5\u5bb3\u9a87\u9163\u61a8\u90af\u97e9\u542b\u6db5\u5bd2\u51fd\u558a\u7f55\u7ff0\u64bc\u634d\u65f1\u61be\u608d\u710a\u6c57\u6c49\u592f\u676d\u822a\u58d5\u568e\u8c6a\u6beb\u90dd\u597d\u8017\u53f7\u6d69\u5475\u559d\u8377\u83cf\u6838\u79be\u548c\u4f55\u5408\u76d2\u8c89\u9602\u6cb3\u6db8\u8d6b\u8910\u9e64\u8d3a\u563f\u9ed1\u75d5\u5f88\u72e0\u6068\u54fc\u4ea8\u6a2a\u8861\u6052\u8f70\u54c4\u70d8\u8679\u9e3f\u6d2a\u5b8f\u5f18\u7ea2\u5589\u4faf\u7334\u543c\u539a\u5019\u540e\u547c\u4e4e\u5ffd\u745a\u58f6\u846b\u80e1\u8774\u72d0\u7cca\u6e56"],["bb40","\u7c43",9,"\u7c4e",36,"\u7c75",5,"\u7c7e",9],["bb80","\u7c88\u7c8a",6,"\u7c93\u7c94\u7c96\u7c99\u7c9a\u7c9b\u7ca0\u7ca1\u7ca3\u7ca6\u7ca7\u7ca8\u7ca9\u7cab\u7cac\u7cad\u7caf\u7cb0\u7cb4",4,"\u7cba\u7cbb\u5f27\u864e\u552c\u62a4\u4e92\u6caa\u6237\u82b1\u54d7\u534e\u733e\u6ed1\u753b\u5212\u5316\u8bdd\u69d0\u5f8a\u6000\u6dee\u574f\u6b22\u73af\u6853\u8fd8\u7f13\u6362\u60a3\u5524\u75ea\u8c62\u7115\u6da3\u5ba6\u5e7b\u8352\u614c\u9ec4\u78fa\u8757\u7c27\u7687\u51f0\u60f6\u714c\u6643\u5e4c\u604d\u8c0e\u7070\u6325\u8f89\u5fbd\u6062\u86d4\u56de\u6bc1\u6094\u6167\u5349\u60e0\u6666\u8d3f\u79fd\u4f1a\u70e9\u6c47\u8bb3\u8bf2\u7ed8\u8364\u660f\u5a5a\u9b42\u6d51\u6df7\u8c41\u6d3b\u4f19\u706b\u83b7\u6216\u60d1\u970d\u8d27\u7978\u51fb\u573e\u57fa\u673a\u7578\u7a3d\u79ef\u7b95"],["bc40","\u7cbf\u7cc0\u7cc2\u7cc3\u7cc4\u7cc6\u7cc9\u7ccb\u7cce",6,"\u7cd8\u7cda\u7cdb\u7cdd\u7cde\u7ce1",6,"\u7ce9",5,"\u7cf0",7,"\u7cf9\u7cfa\u7cfc",13,"\u7d0b",5],["bc80","\u7d11",14,"\u7d21\u7d23\u7d24\u7d25\u7d26\u7d28\u7d29\u7d2a\u7d2c\u7d2d\u7d2e\u7d30",6,"\u808c\u9965\u8ff9\u6fc0\u8ba5\u9e21\u59ec\u7ee9\u7f09\u5409\u6781\u68d8\u8f91\u7c4d\u96c6\u53ca\u6025\u75be\u6c72\u5373\u5ac9\u7ea7\u6324\u51e0\u810a\u5df1\u84df\u6280\u5180\u5b63\u4f0e\u796d\u5242\u60b8\u6d4e\u5bc4\u5bc2\u8ba1\u8bb0\u65e2\u5fcc\u9645\u5993\u7ee7\u7eaa\u5609\u67b7\u5939\u4f73\u5bb6\u52a0\u835a\u988a\u8d3e\u7532\u94be\u5047\u7a3c\u4ef7\u67b6\u9a7e\u5ac1\u6b7c\u76d1\u575a\u5c16\u7b3a\u95f4\u714e\u517c\u80a9\u8270\u5978\u7f04\u8327\u68c0\u67ec\u78b1\u7877\u62e3\u6361\u7b80\u4fed\u526a\u51cf\u8350\u69db\u9274\u8df5\u8d31\u89c1\u952e\u7bad\u4ef6"],["bd40","\u7d37",54,"\u7d6f",7],["bd80","\u7d78",32,"\u5065\u8230\u5251\u996f\u6e10\u6e85\u6da7\u5efa\u50f5\u59dc\u5c06\u6d46\u6c5f\u7586\u848b\u6868\u5956\u8bb2\u5320\u9171\u964d\u8549\u6912\u7901\u7126\u80f6\u4ea4\u90ca\u6d47\u9a84\u5a07\u56bc\u6405\u94f0\u77eb\u4fa5\u811a\u72e1\u89d2\u997a\u7f34\u7ede\u527f\u6559\u9175\u8f7f\u8f83\u53eb\u7a96\u63ed\u63a5\u7686\u79f8\u8857\u9636\u622a\u52ab\u8282\u6854\u6770\u6377\u776b\u7aed\u6d01\u7ed3\u89e3\u59d0\u6212\u85c9\u82a5\u754c\u501f\u4ecb\u75a5\u8beb\u5c4a\u5dfe\u7b4b\u65a4\u91d1\u4eca\u6d25\u895f\u7d27\u9526\u4ec5\u8c28\u8fdb\u9773\u664b\u7981\u8fd1\u70ec\u6d78"],["be40","\u7d99",12,"\u7da7",6,"\u7daf",42],["be80","\u7dda",32,"\u5c3d\u52b2\u8346\u5162\u830e\u775b\u6676\u9cb8\u4eac\u60ca\u7cbe\u7cb3\u7ecf\u4e95\u8b66\u666f\u9888\u9759\u5883\u656c\u955c\u5f84\u75c9\u9756\u7adf\u7ade\u51c0\u70af\u7a98\u63ea\u7a76\u7ea0\u7396\u97ed\u4e45\u7078\u4e5d\u9152\u53a9\u6551\u65e7\u81fc\u8205\u548e\u5c31\u759a\u97a0\u62d8\u72d9\u75bd\u5c45\u9a79\u83ca\u5c40\u5480\u77e9\u4e3e\u6cae\u805a\u62d2\u636e\u5de8\u5177\u8ddd\u8e1e\u952f\u4ff1\u53e5\u60e7\u70ac\u5267\u6350\u9e43\u5a1f\u5026\u7737\u5377\u7ee2\u6485\u652b\u6289\u6398\u5014\u7235\u89c9\u51b3\u8bc0\u7edd\u5747\u83cc\u94a7\u519b\u541b\u5cfb"],["bf40","\u7dfb",62],["bf80","\u7e3a\u7e3c",4,"\u7e42",4,"\u7e48",21,"\u4fca\u7ae3\u6d5a\u90e1\u9a8f\u5580\u5496\u5361\u54af\u5f00\u63e9\u6977\u51ef\u6168\u520a\u582a\u52d8\u574e\u780d\u770b\u5eb7\u6177\u7ce0\u625b\u6297\u4ea2\u7095\u8003\u62f7\u70e4\u9760\u5777\u82db\u67ef\u68f5\u78d5\u9897\u79d1\u58f3\u54b3\u53ef\u6e34\u514b\u523b\u5ba2\u8bfe\u80af\u5543\u57a6\u6073\u5751\u542d\u7a7a\u6050\u5b54\u63a7\u62a0\u53e3\u6263\u5bc7\u67af\u54ed\u7a9f\u82e6\u9177\u5e93\u88e4\u5938\u57ae\u630e\u8de8\u80ef\u5757\u7b77\u4fa9\u5feb\u5bbd\u6b3e\u5321\u7b50\u72c2\u6846\u77ff\u7736\u65f7\u51b5\u4e8f\u76d4\u5cbf\u7aa5\u8475\u594e\u9b41\u5080"],["c040","\u7e5e",35,"\u7e83",23,"\u7e9c\u7e9d\u7e9e"],["c080","\u7eae\u7eb4\u7ebb\u7ebc\u7ed6\u7ee4\u7eec\u7ef9\u7f0a\u7f10\u7f1e\u7f37\u7f39\u7f3b",6,"\u7f43\u7f46",9,"\u7f52\u7f53\u9988\u6127\u6e83\u5764\u6606\u6346\u56f0\u62ec\u6269\u5ed3\u9614\u5783\u62c9\u5587\u8721\u814a\u8fa3\u5566\u83b1\u6765\u8d56\u84dd\u5a6a\u680f\u62e6\u7bee\u9611\u5170\u6f9c\u8c30\u63fd\u89c8\u61d2\u7f06\u70c2\u6ee5\u7405\u6994\u72fc\u5eca\u90ce\u6717\u6d6a\u635e\u52b3\u7262\u8001\u4f6c\u59e5\u916a\u70d9\u6d9d\u52d2\u4e50\u96f7\u956d\u857e\u78ca\u7d2f\u5121\u5792\u64c2\u808b\u7c7b\u6cea\u68f1\u695e\u51b7\u5398\u68a8\u7281\u9ece\u7bf1\u72f8\u79bb\u6f13\u7406\u674e\u91cc\u9ca4\u793c\u8389\u8354\u540f\u6817\u4e3d\u5389\u52b1\u783e\u5386\u5229\u5088\u4f8b\u4fd0"],["c140","\u7f56\u7f59\u7f5b\u7f5c\u7f5d\u7f5e\u7f60\u7f63",4,"\u7f6b\u7f6c\u7f6d\u7f6f\u7f70\u7f73\u7f75\u7f76\u7f77\u7f78\u7f7a\u7f7b\u7f7c\u7f7d\u7f7f\u7f80\u7f82",7,"\u7f8b\u7f8d\u7f8f",4,"\u7f95",4,"\u7f9b\u7f9c\u7fa0\u7fa2\u7fa3\u7fa5\u7fa6\u7fa8",6,"\u7fb1"],["c180","\u7fb3",4,"\u7fba\u7fbb\u7fbe\u7fc0\u7fc2\u7fc3\u7fc4\u7fc6\u7fc7\u7fc8\u7fc9\u7fcb\u7fcd\u7fcf",4,"\u7fd6\u7fd7\u7fd9",5,"\u7fe2\u7fe3\u75e2\u7acb\u7c92\u6ca5\u96b6\u529b\u7483\u54e9\u4fe9\u8054\u83b2\u8fde\u9570\u5ec9\u601c\u6d9f\u5e18\u655b\u8138\u94fe\u604b\u70bc\u7ec3\u7cae\u51c9\u6881\u7cb1\u826f\u4e24\u8f86\u91cf\u667e\u4eae\u8c05\u64a9\u804a\u50da\u7597\u71ce\u5be5\u8fbd\u6f66\u4e86\u6482\u9563\u5ed6\u6599\u5217\u88c2\u70c8\u52a3\u730e\u7433\u6797\u78f7\u9716\u4e34\u90bb\u9cde\u6dcb\u51db\u8d41\u541d\u62ce\u73b2\u83f1\u96f6\u9f84\u94c3\u4f36\u7f9a\u51cc\u7075\u9675\u5cad\u9886\u53e6\u4ee4\u6e9c\u7409\u69b4\u786b\u998f\u7559\u5218\u7624\u6d41\u67f3\u516d\u9f99\u804b\u5499\u7b3c\u7abf"],["c240","\u7fe4\u7fe7\u7fe8\u7fea\u7feb\u7fec\u7fed\u7fef\u7ff2\u7ff4",6,"\u7ffd\u7ffe\u7fff\u8002\u8007\u8008\u8009\u800a\u800e\u800f\u8011\u8013\u801a\u801b\u801d\u801e\u801f\u8021\u8023\u8024\u802b",5,"\u8032\u8034\u8039\u803a\u803c\u803e\u8040\u8041\u8044\u8045\u8047\u8048\u8049\u804e\u804f\u8050\u8051\u8053\u8055\u8056\u8057"],["c280","\u8059\u805b",13,"\u806b",5,"\u8072",11,"\u9686\u5784\u62e2\u9647\u697c\u5a04\u6402\u7bd3\u6f0f\u964b\u82a6\u5362\u9885\u5e90\u7089\u63b3\u5364\u864f\u9c81\u9e93\u788c\u9732\u8def\u8d42\u9e7f\u6f5e\u7984\u5f55\u9646\u622e\u9a74\u5415\u94dd\u4fa3\u65c5\u5c65\u5c61\u7f15\u8651\u6c2f\u5f8b\u7387\u6ee4\u7eff\u5ce6\u631b\u5b6a\u6ee6\u5375\u4e71\u63a0\u7565\u62a1\u8f6e\u4f26\u4ed1\u6ca6\u7eb6\u8bba\u841d\u87ba\u7f57\u903b\u9523\u7ba9\u9aa1\u88f8\u843d\u6d1b\u9a86\u7edc\u5988\u9ebb\u739b\u7801\u8682\u9a6c\u9a82\u561b\u5417\u57cb\u4e70\u9ea6\u5356\u8fc8\u8109\u7792\u9992\u86ee\u6ee1\u8513\u66fc\u6162\u6f2b"],["c340","\u807e\u8081\u8082\u8085\u8088\u808a\u808d",5,"\u8094\u8095\u8097\u8099\u809e\u80a3\u80a6\u80a7\u80a8\u80ac\u80b0\u80b3\u80b5\u80b6\u80b8\u80b9\u80bb\u80c5\u80c7",4,"\u80cf",6,"\u80d8\u80df\u80e0\u80e2\u80e3\u80e6\u80ee\u80f5\u80f7\u80f9\u80fb\u80fe\u80ff\u8100\u8101\u8103\u8104\u8105\u8107\u8108\u810b"],["c380","\u810c\u8115\u8117\u8119\u811b\u811c\u811d\u811f",12,"\u812d\u812e\u8130\u8133\u8134\u8135\u8137\u8139",4,"\u813f\u8c29\u8292\u832b\u76f2\u6c13\u5fd9\u83bd\u732b\u8305\u951a\u6bdb\u77db\u94c6\u536f\u8302\u5192\u5e3d\u8c8c\u8d38\u4e48\u73ab\u679a\u6885\u9176\u9709\u7164\u6ca1\u7709\u5a92\u9541\u6bcf\u7f8e\u6627\u5bd0\u59b9\u5a9a\u95e8\u95f7\u4eec\u840c\u8499\u6aac\u76df\u9530\u731b\u68a6\u5b5f\u772f\u919a\u9761\u7cdc\u8ff7\u8c1c\u5f25\u7c73\u79d8\u89c5\u6ccc\u871c\u5bc6\u5e42\u68c9\u7720\u7ef5\u5195\u514d\u52c9\u5a29\u7f05\u9762\u82d7\u63cf\u7784\u85d0\u79d2\u6e3a\u5e99\u5999\u8511\u706d\u6c11\u62bf\u76bf\u654f\u60af\u95fd\u660e\u879f\u9e23\u94ed\u540d\u547d\u8c2c\u6478"],["c440","\u8140",5,"\u8147\u8149\u814d\u814e\u814f\u8152\u8156\u8157\u8158\u815b",4,"\u8161\u8162\u8163\u8164\u8166\u8168\u816a\u816b\u816c\u816f\u8172\u8173\u8175\u8176\u8177\u8178\u8181\u8183",4,"\u8189\u818b\u818c\u818d\u818e\u8190\u8192",5,"\u8199\u819a\u819e",4,"\u81a4\u81a5"],["c480","\u81a7\u81a9\u81ab",7,"\u81b4",5,"\u81bc\u81bd\u81be\u81bf\u81c4\u81c5\u81c7\u81c8\u81c9\u81cb\u81cd",6,"\u6479\u8611\u6a21\u819c\u78e8\u6469\u9b54\u62b9\u672b\u83ab\u58a8\u9ed8\u6cab\u6f20\u5bde\u964c\u8c0b\u725f\u67d0\u62c7\u7261\u4ea9\u59c6\u6bcd\u5893\u66ae\u5e55\u52df\u6155\u6728\u76ee\u7766\u7267\u7a46\u62ff\u54ea\u5450\u94a0\u90a3\u5a1c\u7eb3\u6c16\u4e43\u5976\u8010\u5948\u5357\u7537\u96be\u56ca\u6320\u8111\u607c\u95f9\u6dd6\u5462\u9981\u5185\u5ae9\u80fd\u59ae\u9713\u502a\u6ce5\u5c3c\u62df\u4f60\u533f\u817b\u9006\u6eba\u852b\u62c8\u5e74\u78be\u64b5\u637b\u5ff5\u5a18\u917f\u9e1f\u5c3f\u634f\u8042\u5b7d\u556e\u954a\u954d\u6d85\u60a8\u67e0\u72de\u51dd\u5b81"],["c540","\u81d4",14,"\u81e4\u81e5\u81e6\u81e8\u81e9\u81eb\u81ee",4,"\u81f5",5,"\u81fd\u81ff\u8203\u8207",4,"\u820e\u820f\u8211\u8213\u8215",5,"\u821d\u8220\u8224\u8225\u8226\u8227\u8229\u822e\u8232\u823a\u823c\u823d\u823f"],["c580","\u8240\u8241\u8242\u8243\u8245\u8246\u8248\u824a\u824c\u824d\u824e\u8250",7,"\u8259\u825b\u825c\u825d\u825e\u8260",7,"\u8269\u62e7\u6cde\u725b\u626d\u94ae\u7ebd\u8113\u6d53\u519c\u5f04\u5974\u52aa\u6012\u5973\u6696\u8650\u759f\u632a\u61e6\u7cef\u8bfa\u54e6\u6b27\u9e25\u6bb4\u85d5\u5455\u5076\u6ca4\u556a\u8db4\u722c\u5e15\u6015\u7436\u62cd\u6392\u724c\u5f98\u6e43\u6d3e\u6500\u6f58\u76d8\u78d0\u76fc\u7554\u5224\u53db\u4e53\u5e9e\u65c1\u802a\u80d6\u629b\u5486\u5228\u70ae\u888d\u8dd1\u6ce1\u5478\u80da\u57f9\u88f4\u8d54\u966a\u914d\u4f69\u6c9b\u55b7\u76c6\u7830\u62a8\u70f9\u6f8e\u5f6d\u84ec\u68da\u787c\u7bf7\u81a8\u670b\u9e4f\u6367\u78b0\u576f\u7812\u9739\u6279\u62ab\u5288\u7435\u6bd7"],["c640","\u826a\u826b\u826c\u826d\u8271\u8275\u8276\u8277\u8278\u827b\u827c\u8280\u8281\u8283\u8285\u8286\u8287\u8289\u828c\u8290\u8293\u8294\u8295\u8296\u829a\u829b\u829e\u82a0\u82a2\u82a3\u82a7\u82b2\u82b5\u82b6\u82ba\u82bb\u82bc\u82bf\u82c0\u82c2\u82c3\u82c5\u82c6\u82c9\u82d0\u82d6\u82d9\u82da\u82dd\u82e2\u82e7\u82e8\u82e9\u82ea\u82ec\u82ed\u82ee\u82f0\u82f2\u82f3\u82f5\u82f6\u82f8"],["c680","\u82fa\u82fc",4,"\u830a\u830b\u830d\u8310\u8312\u8313\u8316\u8318\u8319\u831d",9,"\u8329\u832a\u832e\u8330\u8332\u8337\u833b\u833d\u5564\u813e\u75b2\u76ae\u5339\u75de\u50fb\u5c41\u8b6c\u7bc7\u504f\u7247\u9a97\u98d8\u6f02\u74e2\u7968\u6487\u77a5\u62fc\u9891\u8d2b\u54c1\u8058\u4e52\u576a\u82f9\u840d\u5e73\u51ed\u74f6\u8bc4\u5c4f\u5761\u6cfc\u9887\u5a46\u7834\u9b44\u8feb\u7c95\u5256\u6251\u94fa\u4ec6\u8386\u8461\u83e9\u84b2\u57d4\u6734\u5703\u666e\u6d66\u8c31\u66dd\u7011\u671f\u6b3a\u6816\u621a\u59bb\u4e03\u51c4\u6f06\u67d2\u6c8f\u5176\u68cb\u5947\u6b67\u7566\u5d0e\u8110\u9f50\u65d7\u7948\u7941\u9a91\u8d77\u5c82\u4e5e\u4f01\u542f\u5951\u780c\u5668\u6c14\u8fc4\u5f03\u6c7d\u6ce3\u8bab\u6390"],["c740","\u833e\u833f\u8341\u8342\u8344\u8345\u8348\u834a",4,"\u8353\u8355",4,"\u835d\u8362\u8370",6,"\u8379\u837a\u837e",6,"\u8387\u8388\u838a\u838b\u838c\u838d\u838f\u8390\u8391\u8394\u8395\u8396\u8397\u8399\u839a\u839d\u839f\u83a1",6,"\u83ac\u83ad\u83ae"],["c780","\u83af\u83b5\u83bb\u83be\u83bf\u83c2\u83c3\u83c4\u83c6\u83c8\u83c9\u83cb\u83cd\u83ce\u83d0\u83d1\u83d2\u83d3\u83d5\u83d7\u83d9\u83da\u83db\u83de\u83e2\u83e3\u83e4\u83e6\u83e7\u83e8\u83eb\u83ec\u83ed\u6070\u6d3d\u7275\u6266\u948e\u94c5\u5343\u8fc1\u7b7e\u4edf\u8c26\u4e7e\u9ed4\u94b1\u94b3\u524d\u6f5c\u9063\u6d45\u8c34\u5811\u5d4c\u6b20\u6b49\u67aa\u545b\u8154\u7f8c\u5899\u8537\u5f3a\u62a2\u6a47\u9539\u6572\u6084\u6865\u77a7\u4e54\u4fa8\u5de7\u9798\u64ac\u7fd8\u5ced\u4fcf\u7a8d\u5207\u8304\u4e14\u602f\u7a83\u94a6\u4fb5\u4eb2\u79e6\u7434\u52e4\u82b9\u64d2\u79bd\u5bdd\u6c81\u9752\u8f7b\u6c22\u503e\u537f\u6e05\u64ce\u6674\u6c30\u60c5\u9877\u8bf7\u5e86\u743c\u7a77\u79cb\u4e18\u90b1\u7403\u6c42\u56da\u914b\u6cc5\u8d8b\u533a\u86c6\u66f2\u8eaf\u5c48\u9a71\u6e20"],["c840","\u83ee\u83ef\u83f3",4,"\u83fa\u83fb\u83fc\u83fe\u83ff\u8400\u8402\u8405\u8407\u8408\u8409\u840a\u8410\u8412",5,"\u8419\u841a\u841b\u841e",5,"\u8429",7,"\u8432",5,"\u8439\u843a\u843b\u843e",7,"\u8447\u8448\u8449"],["c880","\u844a",6,"\u8452",4,"\u8458\u845d\u845e\u845f\u8460\u8462\u8464",4,"\u846a\u846e\u846f\u8470\u8472\u8474\u8477\u8479\u847b\u847c\u53d6\u5a36\u9f8b\u8da3\u53bb\u5708\u98a7\u6743\u919b\u6cc9\u5168\u75ca\u62f3\u72ac\u5238\u529d\u7f3a\u7094\u7638\u5374\u9e4a\u69b7\u786e\u96c0\u88d9\u7fa4\u7136\u71c3\u5189\u67d3\u74e4\u58e4\u6518\u56b7\u8ba9\u9976\u6270\u7ed5\u60f9\u70ed\u58ec\u4ec1\u4eba\u5fcd\u97e7\u4efb\u8ba4\u5203\u598a\u7eab\u6254\u4ecd\u65e5\u620e\u8338\u84c9\u8363\u878d\u7194\u6eb6\u5bb9\u7ed2\u5197\u63c9\u67d4\u8089\u8339\u8815\u5112\u5b7a\u5982\u8fb1\u4e73\u6c5d\u5165\u8925\u8f6f\u962e\u854a\u745e\u9510\u95f0\u6da6\u82e5\u5f31\u6492\u6d12\u8428\u816e\u9cc3\u585e\u8d5b\u4e09\u53c1"],["c940","\u847d",4,"\u8483\u8484\u8485\u8486\u848a\u848d\u848f",7,"\u8498\u849a\u849b\u849d\u849e\u849f\u84a0\u84a2",12,"\u84b0\u84b1\u84b3\u84b5\u84b6\u84b7\u84bb\u84bc\u84be\u84c0\u84c2\u84c3\u84c5\u84c6\u84c7\u84c8\u84cb\u84cc\u84ce\u84cf\u84d2\u84d4\u84d5\u84d7"],["c980","\u84d8",4,"\u84de\u84e1\u84e2\u84e4\u84e7",4,"\u84ed\u84ee\u84ef\u84f1",10,"\u84fd\u84fe\u8500\u8501\u8502\u4f1e\u6563\u6851\u55d3\u4e27\u6414\u9a9a\u626b\u5ac2\u745f\u8272\u6da9\u68ee\u50e7\u838e\u7802\u6740\u5239\u6c99\u7eb1\u50bb\u5565\u715e\u7b5b\u6652\u73ca\u82eb\u6749\u5c71\u5220\u717d\u886b\u95ea\u9655\u64c5\u8d61\u81b3\u5584\u6c55\u6247\u7f2e\u5892\u4f24\u5546\u8d4f\u664c\u4e0a\u5c1a\u88f3\u68a2\u634e\u7a0d\u70e7\u828d\u52fa\u97f6\u5c11\u54e8\u90b5\u7ecd\u5962\u8d4a\u86c7\u820c\u820d\u8d66\u6444\u5c04\u6151\u6d89\u793e\u8bbe\u7837\u7533\u547b\u4f38\u8eab\u6df1\u5a20\u7ec5\u795e\u6c88\u5ba1\u5a76\u751a\u80be\u614e\u6e17\u58f0\u751f\u7525\u7272\u5347\u7ef3"],["ca40","\u8503",8,"\u850d\u850e\u850f\u8510\u8512\u8514\u8515\u8516\u8518\u8519\u851b\u851c\u851d\u851e\u8520\u8522",8,"\u852d",9,"\u853e",4,"\u8544\u8545\u8546\u8547\u854b",10],["ca80","\u8557\u8558\u855a\u855b\u855c\u855d\u855f",4,"\u8565\u8566\u8567\u8569",8,"\u8573\u8575\u8576\u8577\u8578\u857c\u857d\u857f\u8580\u8581\u7701\u76db\u5269\u80dc\u5723\u5e08\u5931\u72ee\u65bd\u6e7f\u8bd7\u5c38\u8671\u5341\u77f3\u62fe\u65f6\u4ec0\u98df\u8680\u5b9e\u8bc6\u53f2\u77e2\u4f7f\u5c4e\u9a76\u59cb\u5f0f\u793a\u58eb\u4e16\u67ff\u4e8b\u62ed\u8a93\u901d\u52bf\u662f\u55dc\u566c\u9002\u4ed5\u4f8d\u91ca\u9970\u6c0f\u5e02\u6043\u5ba4\u89c6\u8bd5\u6536\u624b\u9996\u5b88\u5bff\u6388\u552e\u53d7\u7626\u517d\u852c\u67a2\u68b3\u6b8a\u6292\u8f93\u53d4\u8212\u6dd1\u758f\u4e66\u8d4e\u5b70\u719f\u85af\u6691\u66d9\u7f72\u8700\u9ecd\u9f20\u5c5e\u672f\u8ff0\u6811\u675f\u620d\u7ad6\u5885\u5eb6\u6570\u6f31"],["cb40","\u8582\u8583\u8586\u8588",6,"\u8590",10,"\u859d",6,"\u85a5\u85a6\u85a7\u85a9\u85ab\u85ac\u85ad\u85b1",5,"\u85b8\u85ba",6,"\u85c2",6,"\u85ca",4,"\u85d1\u85d2"],["cb80","\u85d4\u85d6",5,"\u85dd",6,"\u85e5\u85e6\u85e7\u85e8\u85ea",14,"\u6055\u5237\u800d\u6454\u8870\u7529\u5e05\u6813\u62f4\u971c\u53cc\u723d\u8c01\u6c34\u7761\u7a0e\u542e\u77ac\u987a\u821c\u8bf4\u7855\u6714\u70c1\u65af\u6495\u5636\u601d\u79c1\u53f8\u4e1d\u6b7b\u8086\u5bfa\u55e3\u56db\u4f3a\u4f3c\u9972\u5df3\u677e\u8038\u6002\u9882\u9001\u5b8b\u8bbc\u8bf5\u641c\u8258\u64de\u55fd\u82cf\u9165\u4fd7\u7d20\u901f\u7c9f\u50f3\u5851\u6eaf\u5bbf\u8bc9\u8083\u9178\u849c\u7b97\u867d\u968b\u968f\u7ee5\u9ad3\u788e\u5c81\u7a57\u9042\u96a7\u795f\u5b59\u635f\u7b0b\u84d1\u68ad\u5506\u7f29\u7410\u7d22\u9501\u6240\u584c\u4ed6\u5b83\u5979\u5854"],["cc40","\u85f9\u85fa\u85fc\u85fd\u85fe\u8600",4,"\u8606",10,"\u8612\u8613\u8614\u8615\u8617",15,"\u8628\u862a",13,"\u8639\u863a\u863b\u863d\u863e\u863f\u8640"],["cc80","\u8641",11,"\u8652\u8653\u8655",4,"\u865b\u865c\u865d\u865f\u8660\u8661\u8663",7,"\u736d\u631e\u8e4b\u8e0f\u80ce\u82d4\u62ac\u53f0\u6cf0\u915e\u592a\u6001\u6c70\u574d\u644a\u8d2a\u762b\u6ee9\u575b\u6a80\u75f0\u6f6d\u8c2d\u8c08\u5766\u6bef\u8892\u78b3\u63a2\u53f9\u70ad\u6c64\u5858\u642a\u5802\u68e0\u819b\u5510\u7cd6\u5018\u8eba\u6dcc\u8d9f\u70eb\u638f\u6d9b\u6ed4\u7ee6\u8404\u6843\u9003\u6dd8\u9676\u8ba8\u5957\u7279\u85e4\u817e\u75bc\u8a8a\u68af\u5254\u8e22\u9511\u63d0\u9898\u8e44\u557c\u4f53\u66ff\u568f\u60d5\u6d95\u5243\u5c49\u5929\u6dfb\u586b\u7530\u751c\u606c\u8214\u8146\u6311\u6761\u8fe2\u773a\u8df3\u8d34\u94c1\u5e16\u5385\u542c\u70c3"],["cd40","\u866d\u866f\u8670\u8672",6,"\u8683",6,"\u868e",4,"\u8694\u8696",5,"\u869e",4,"\u86a5\u86a6\u86ab\u86ad\u86ae\u86b2\u86b3\u86b7\u86b8\u86b9\u86bb",4,"\u86c1\u86c2\u86c3\u86c5\u86c8\u86cc\u86cd\u86d2\u86d3\u86d5\u86d6\u86d7\u86da\u86dc"],["cd80","\u86dd\u86e0\u86e1\u86e2\u86e3\u86e5\u86e6\u86e7\u86e8\u86ea\u86eb\u86ec\u86ef\u86f5\u86f6\u86f7\u86fa\u86fb\u86fc\u86fd\u86ff\u8701\u8704\u8705\u8706\u870b\u870c\u870e\u870f\u8710\u8711\u8714\u8716\u6c40\u5ef7\u505c\u4ead\u5ead\u633a\u8247\u901a\u6850\u916e\u77b3\u540c\u94dc\u5f64\u7ae5\u6876\u6345\u7b52\u7edf\u75db\u5077\u6295\u5934\u900f\u51f8\u79c3\u7a81\u56fe\u5f92\u9014\u6d82\u5c60\u571f\u5410\u5154\u6e4d\u56e2\u63a8\u9893\u817f\u8715\u892a\u9000\u541e\u5c6f\u81c0\u62d6\u6258\u8131\u9e35\u9640\u9a6e\u9a7c\u692d\u59a5\u62d3\u553e\u6316\u54c7\u86d9\u6d3c\u5a03\u74e6\u889c\u6b6a\u5916\u8c4c\u5f2f\u6e7e\u73a9\u987d\u4e38\u70f7\u5b8c\u7897\u633d\u665a\u7696\u60cb\u5b9b\u5a49\u4e07\u8155\u6c6a\u738b\u4ea1\u6789\u7f51\u5f80\u65fa\u671b\u5fd8\u5984\u5a01"],["ce40","\u8719\u871b\u871d\u871f\u8720\u8724\u8726\u8727\u8728\u872a\u872b\u872c\u872d\u872f\u8730\u8732\u8733\u8735\u8736\u8738\u8739\u873a\u873c\u873d\u8740",6,"\u874a\u874b\u874d\u874f\u8750\u8751\u8752\u8754\u8755\u8756\u8758\u875a",5,"\u8761\u8762\u8766",7,"\u876f\u8771\u8772\u8773\u8775"],["ce80","\u8777\u8778\u8779\u877a\u877f\u8780\u8781\u8784\u8786\u8787\u8789\u878a\u878c\u878e",4,"\u8794\u8795\u8796\u8798",6,"\u87a0",4,"\u5dcd\u5fae\u5371\u97e6\u8fdd\u6845\u56f4\u552f\u60df\u4e3a\u6f4d\u7ef4\u82c7\u840e\u59d4\u4f1f\u4f2a\u5c3e\u7eac\u672a\u851a\u5473\u754f\u80c3\u5582\u9b4f\u4f4d\u6e2d\u8c13\u5c09\u6170\u536b\u761f\u6e29\u868a\u6587\u95fb\u7eb9\u543b\u7a33\u7d0a\u95ee\u55e1\u7fc1\u74ee\u631d\u8717\u6da1\u7a9d\u6211\u65a1\u5367\u63e1\u6c83\u5deb\u545c\u94a8\u4e4c\u6c61\u8bec\u5c4b\u65e0\u829c\u68a7\u543e\u5434\u6bcb\u6b66\u4e94\u6342\u5348\u821e\u4f0d\u4fae\u575e\u620a\u96fe\u6664\u7269\u52ff\u52a1\u609f\u8bef\u6614\u7199\u6790\u897f\u7852\u77fd\u6670\u563b\u5438\u9521\u727a"],["cf40","\u87a5\u87a6\u87a7\u87a9\u87aa\u87ae\u87b0\u87b1\u87b2\u87b4\u87b6\u87b7\u87b8\u87b9\u87bb\u87bc\u87be\u87bf\u87c1",4,"\u87c7\u87c8\u87c9\u87cc",4,"\u87d4",6,"\u87dc\u87dd\u87de\u87df\u87e1\u87e2\u87e3\u87e4\u87e6\u87e7\u87e8\u87e9\u87eb\u87ec\u87ed\u87ef",9],["cf80","\u87fa\u87fb\u87fc\u87fd\u87ff\u8800\u8801\u8802\u8804",5,"\u880b",7,"\u8814\u8817\u8818\u8819\u881a\u881c",4,"\u8823\u7a00\u606f\u5e0c\u6089\u819d\u5915\u60dc\u7184\u70ef\u6eaa\u6c50\u7280\u6a84\u88ad\u5e2d\u4e60\u5ab3\u559c\u94e3\u6d17\u7cfb\u9699\u620f\u7ec6\u778e\u867e\u5323\u971e\u8f96\u6687\u5ce1\u4fa0\u72ed\u4e0b\u53a6\u590f\u5413\u6380\u9528\u5148\u4ed9\u9c9c\u7ea4\u54b8\u8d24\u8854\u8237\u95f2\u6d8e\u5f26\u5acc\u663e\u9669\u73b0\u732e\u53bf\u817a\u9985\u7fa1\u5baa\u9677\u9650\u7ebf\u76f8\u53a2\u9576\u9999\u7bb1\u8944\u6e58\u4e61\u7fd4\u7965\u8be6\u60f3\u54cd\u4eab\u9879\u5df7\u6a61\u50cf\u5411\u8c61\u8427\u785d\u9704\u524a\u54ee\u56a3\u9500\u6d88\u5bb5\u6dc6\u6653"],["d040","\u8824",13,"\u8833",5,"\u883a\u883b\u883d\u883e\u883f\u8841\u8842\u8843\u8846",5,"\u884e",5,"\u8855\u8856\u8858\u885a",6,"\u8866\u8867\u886a\u886d\u886f\u8871\u8873\u8874\u8875\u8876\u8878\u8879\u887a"],["d080","\u887b\u887c\u8880\u8883\u8886\u8887\u8889\u888a\u888c\u888e\u888f\u8890\u8891\u8893\u8894\u8895\u8897",4,"\u889d",4,"\u88a3\u88a5",5,"\u5c0f\u5b5d\u6821\u8096\u5578\u7b11\u6548\u6954\u4e9b\u6b47\u874e\u978b\u534f\u631f\u643a\u90aa\u659c\u80c1\u8c10\u5199\u68b0\u5378\u87f9\u61c8\u6cc4\u6cfb\u8c22\u5c51\u85aa\u82af\u950c\u6b23\u8f9b\u65b0\u5ffb\u5fc3\u4fe1\u8845\u661f\u8165\u7329\u60fa\u5174\u5211\u578b\u5f62\u90a2\u884c\u9192\u5e78\u674f\u6027\u59d3\u5144\u51f6\u80f8\u5308\u6c79\u96c4\u718a\u4f11\u4fee\u7f9e\u673d\u55c5\u9508\u79c0\u8896\u7ee3\u589f\u620c\u9700\u865a\u5618\u987b\u5f90\u8bb8\u84c4\u9157\u53d9\u65ed\u5e8f\u755c\u6064\u7d6e\u5a7f\u7eea\u7eed\u8f69\u55a7\u5ba3\u60ac\u65cb\u7384"],["d140","\u88ac\u88ae\u88af\u88b0\u88b2",4,"\u88b8\u88b9\u88ba\u88bb\u88bd\u88be\u88bf\u88c0\u88c3\u88c4\u88c7\u88c8\u88ca\u88cb\u88cc\u88cd\u88cf\u88d0\u88d1\u88d3\u88d6\u88d7\u88da",4,"\u88e0\u88e1\u88e6\u88e7\u88e9",6,"\u88f2\u88f5\u88f6\u88f7\u88fa\u88fb\u88fd\u88ff\u8900\u8901\u8903",5],["d180","\u8909\u890b",4,"\u8911\u8914",4,"\u891c",4,"\u8922\u8923\u8924\u8926\u8927\u8928\u8929\u892c\u892d\u892e\u892f\u8931\u8932\u8933\u8935\u8937\u9009\u7663\u7729\u7eda\u9774\u859b\u5b66\u7a74\u96ea\u8840\u52cb\u718f\u5faa\u65ec\u8be2\u5bfb\u9a6f\u5de1\u6b89\u6c5b\u8bad\u8baf\u900a\u8fc5\u538b\u62bc\u9e26\u9e2d\u5440\u4e2b\u82bd\u7259\u869c\u5d16\u8859\u6daf\u96c5\u54d1\u4e9a\u8bb6\u7109\u54bd\u9609\u70df\u6df9\u76d0\u4e25\u7814\u8712\u5ca9\u5ef6\u8a00\u989c\u960e\u708e\u6cbf\u5944\u63a9\u773c\u884d\u6f14\u8273\u5830\u71d5\u538c\u781a\u96c1\u5501\u5f66\u7130\u5bb4\u8c1a\u9a8c\u6b83\u592e\u9e2f\u79e7\u6768\u626c\u4f6f\u75a1\u7f8a\u6d0b\u9633\u6c27\u4ef0\u75d2\u517b\u6837\u6f3e\u9080\u8170\u5996\u7476"],["d240","\u8938",8,"\u8942\u8943\u8945",24,"\u8960",5,"\u8967",19,"\u897c"],["d280","\u897d\u897e\u8980\u8982\u8984\u8985\u8987",26,"\u6447\u5c27\u9065\u7a91\u8c23\u59da\u54ac\u8200\u836f\u8981\u8000\u6930\u564e\u8036\u7237\u91ce\u51b6\u4e5f\u9875\u6396\u4e1a\u53f6\u66f3\u814b\u591c\u6db2\u4e00\u58f9\u533b\u63d6\u94f1\u4f9d\u4f0a\u8863\u9890\u5937\u9057\u79fb\u4eea\u80f0\u7591\u6c82\u5b9c\u59e8\u5f5d\u6905\u8681\u501a\u5df2\u4e59\u77e3\u4ee5\u827a\u6291\u6613\u9091\u5c79\u4ebf\u5f79\u81c6\u9038\u8084\u75ab\u4ea6\u88d4\u610f\u6bc5\u5fc6\u4e49\u76ca\u6ea2\u8be3\u8bae\u8c0a\u8bd1\u5f02\u7ffc\u7fcc\u7ece\u8335\u836b\u56e0\u6bb7\u97f3\u9634\u59fb\u541f\u94f6\u6deb\u5bc5\u996e\u5c39\u5f15\u9690"],["d340","\u89a2",30,"\u89c3\u89cd\u89d3\u89d4\u89d5\u89d7\u89d8\u89d9\u89db\u89dd\u89df\u89e0\u89e1\u89e2\u89e4\u89e7\u89e8\u89e9\u89ea\u89ec\u89ed\u89ee\u89f0\u89f1\u89f2\u89f4",6],["d380","\u89fb",4,"\u8a01",5,"\u8a08",21,"\u5370\u82f1\u6a31\u5a74\u9e70\u5e94\u7f28\u83b9\u8424\u8425\u8367\u8747\u8fce\u8d62\u76c8\u5f71\u9896\u786c\u6620\u54df\u62e5\u4f63\u81c3\u75c8\u5eb8\u96cd\u8e0a\u86f9\u548f\u6cf3\u6d8c\u6c38\u607f\u52c7\u7528\u5e7d\u4f18\u60a0\u5fe7\u5c24\u7531\u90ae\u94c0\u72b9\u6cb9\u6e38\u9149\u6709\u53cb\u53f3\u4f51\u91c9\u8bf1\u53c8\u5e7c\u8fc2\u6de4\u4e8e\u76c2\u6986\u865e\u611a\u8206\u4f59\u4fde\u903e\u9c7c\u6109\u6e1d\u6e14\u9685\u4e88\u5a31\u96e8\u4e0e\u5c7f\u79b9\u5b87\u8bed\u7fbd\u7389\u57df\u828b\u90c1\u5401\u9047\u55bb\u5cea\u5fa1\u6108\u6b32\u72f1\u80b2\u8a89"],["d440","\u8a1e",31,"\u8a3f",8,"\u8a49",21],["d480","\u8a5f",25,"\u8a7a",6,"\u6d74\u5bd3\u88d5\u9884\u8c6b\u9a6d\u9e33\u6e0a\u51a4\u5143\u57a3\u8881\u539f\u63f4\u8f95\u56ed\u5458\u5706\u733f\u6e90\u7f18\u8fdc\u82d1\u613f\u6028\u9662\u66f0\u7ea6\u8d8a\u8dc3\u94a5\u5cb3\u7ca4\u6708\u60a6\u9605\u8018\u4e91\u90e7\u5300\u9668\u5141\u8fd0\u8574\u915d\u6655\u97f5\u5b55\u531d\u7838\u6742\u683d\u54c9\u707e\u5bb0\u8f7d\u518d\u5728\u54b1\u6512\u6682\u8d5e\u8d43\u810f\u846c\u906d\u7cdf\u51ff\u85fb\u67a3\u65e9\u6fa1\u86a4\u8e81\u566a\u9020\u7682\u7076\u71e5\u8d23\u62e9\u5219\u6cfd\u8d3c\u600e\u589e\u618e\u66fe\u8d60\u624e\u55b3\u6e23\u672d\u8f67"],["d540","\u8a81",7,"\u8a8b",7,"\u8a94",46],["d580","\u8ac3",32,"\u94e1\u95f8\u7728\u6805\u69a8\u548b\u4e4d\u70b8\u8bc8\u6458\u658b\u5b85\u7a84\u503a\u5be8\u77bb\u6be1\u8a79\u7c98\u6cbe\u76cf\u65a9\u8f97\u5d2d\u5c55\u8638\u6808\u5360\u6218\u7ad9\u6e5b\u7efd\u6a1f\u7ae0\u5f70\u6f33\u5f20\u638c\u6da8\u6756\u4e08\u5e10\u8d26\u4ed7\u80c0\u7634\u969c\u62db\u662d\u627e\u6cbc\u8d75\u7167\u7f69\u5146\u8087\u53ec\u906e\u6298\u54f2\u86f0\u8f99\u8005\u9517\u8517\u8fd9\u6d59\u73cd\u659f\u771f\u7504\u7827\u81fb\u8d1e\u9488\u4fa6\u6795\u75b9\u8bca\u9707\u632f\u9547\u9635\u84b8\u6323\u7741\u5f81\u72f0\u4e89\u6014\u6574\u62ef\u6b63\u653f"],["d640","\u8ae4",34,"\u8b08",27],["d680","\u8b24\u8b25\u8b27",30,"\u5e27\u75c7\u90d1\u8bc1\u829d\u679d\u652f\u5431\u8718\u77e5\u80a2\u8102\u6c41\u4e4b\u7ec7\u804c\u76f4\u690d\u6b96\u6267\u503c\u4f84\u5740\u6307\u6b62\u8dbe\u53ea\u65e8\u7eb8\u5fd7\u631a\u63b7\u81f3\u81f4\u7f6e\u5e1c\u5cd9\u5236\u667a\u79e9\u7a1a\u8d28\u7099\u75d4\u6ede\u6cbb\u7a92\u4e2d\u76c5\u5fe0\u949f\u8877\u7ec8\u79cd\u80bf\u91cd\u4ef2\u4f17\u821f\u5468\u5dde\u6d32\u8bcc\u7ca5\u8f74\u8098\u5e1a\u5492\u76b1\u5b99\u663c\u9aa4\u73e0\u682a\u86db\u6731\u732a\u8bf8\u8bdb\u9010\u7af9\u70db\u716e\u62c4\u77a9\u5631\u4e3b\u8457\u67f1\u52a9\u86c0\u8d2e\u94f8\u7b51"],["d740","\u8b46",31,"\u8b67",4,"\u8b6d",25],["d780","\u8b87",24,"\u8bac\u8bb1\u8bbb\u8bc7\u8bd0\u8bea\u8c09\u8c1e\u4f4f\u6ce8\u795d\u9a7b\u6293\u722a\u62fd\u4e13\u7816\u8f6c\u64b0\u8d5a\u7bc6\u6869\u5e84\u88c5\u5986\u649e\u58ee\u72b6\u690e\u9525\u8ffd\u8d58\u5760\u7f00\u8c06\u51c6\u6349\u62d9\u5353\u684c\u7422\u8301\u914c\u5544\u7740\u707c\u6d4a\u5179\u54a8\u8d44\u59ff\u6ecb\u6dc4\u5b5c\u7d2b\u4ed4\u7c7d\u6ed3\u5b50\u81ea\u6e0d\u5b57\u9b03\u68d5\u8e2a\u5b97\u7efc\u603b\u7eb5\u90b9\u8d70\u594f\u63cd\u79df\u8db3\u5352\u65cf\u7956\u8bc5\u963b\u7ec4\u94bb\u7e82\u5634\u9189\u6700\u7f6a\u5c0a\u9075\u6628\u5de6\u4f50\u67de\u505a\u4f5c\u5750\u5ea7"],["d840","\u8c38",8,"\u8c42\u8c43\u8c44\u8c45\u8c48\u8c4a\u8c4b\u8c4d",7,"\u8c56\u8c57\u8c58\u8c59\u8c5b",5,"\u8c63",6,"\u8c6c",6,"\u8c74\u8c75\u8c76\u8c77\u8c7b",6,"\u8c83\u8c84\u8c86\u8c87"],["d880","\u8c88\u8c8b\u8c8d",6,"\u8c95\u8c96\u8c97\u8c99",20,"\u4e8d\u4e0c\u5140\u4e10\u5eff\u5345\u4e15\u4e98\u4e1e\u9b32\u5b6c\u5669\u4e28\u79ba\u4e3f\u5315\u4e47\u592d\u723b\u536e\u6c10\u56df\u80e4\u9997\u6bd3\u777e\u9f17\u4e36\u4e9f\u9f10\u4e5c\u4e69\u4e93\u8288\u5b5b\u556c\u560f\u4ec4\u538d\u539d\u53a3\u53a5\u53ae\u9765\u8d5d\u531a\u53f5\u5326\u532e\u533e\u8d5c\u5366\u5363\u5202\u5208\u520e\u522d\u5233\u523f\u5240\u524c\u525e\u5261\u525c\u84af\u527d\u5282\u5281\u5290\u5293\u5182\u7f54\u4ebb\u4ec3\u4ec9\u4ec2\u4ee8\u4ee1\u4eeb\u4ede\u4f1b\u4ef3\u4f22\u4f64\u4ef5\u4f25\u4f27\u4f09\u4f2b\u4f5e\u4f67\u6538\u4f5a\u4f5d"],["d940","\u8cae",62],["d980","\u8ced",32,"\u4f5f\u4f57\u4f32\u4f3d\u4f76\u4f74\u4f91\u4f89\u4f83\u4f8f\u4f7e\u4f7b\u4faa\u4f7c\u4fac\u4f94\u4fe6\u4fe8\u4fea\u4fc5\u4fda\u4fe3\u4fdc\u4fd1\u4fdf\u4ff8\u5029\u504c\u4ff3\u502c\u500f\u502e\u502d\u4ffe\u501c\u500c\u5025\u5028\u507e\u5043\u5055\u5048\u504e\u506c\u507b\u50a5\u50a7\u50a9\u50ba\u50d6\u5106\u50ed\u50ec\u50e6\u50ee\u5107\u510b\u4edd\u6c3d\u4f58\u4f65\u4fce\u9fa0\u6c46\u7c74\u516e\u5dfd\u9ec9\u9998\u5181\u5914\u52f9\u530d\u8a07\u5310\u51eb\u5919\u5155\u4ea0\u5156\u4eb3\u886e\u88a4\u4eb5\u8114\u88d2\u7980\u5b34\u8803\u7fb8\u51ab\u51b1\u51bd\u51bc"],["da40","\u8d0e",14,"\u8d20\u8d51\u8d52\u8d57\u8d5f\u8d65\u8d68\u8d69\u8d6a\u8d6c\u8d6e\u8d6f\u8d71\u8d72\u8d78",8,"\u8d82\u8d83\u8d86\u8d87\u8d88\u8d89\u8d8c",4,"\u8d92\u8d93\u8d95",9,"\u8da0\u8da1"],["da80","\u8da2\u8da4",12,"\u8db2\u8db6\u8db7\u8db9\u8dbb\u8dbd\u8dc0\u8dc1\u8dc2\u8dc5\u8dc7\u8dc8\u8dc9\u8dca\u8dcd\u8dd0\u8dd2\u8dd3\u8dd4\u51c7\u5196\u51a2\u51a5\u8ba0\u8ba6\u8ba7\u8baa\u8bb4\u8bb5\u8bb7\u8bc2\u8bc3\u8bcb\u8bcf\u8bce\u8bd2\u8bd3\u8bd4\u8bd6\u8bd8\u8bd9\u8bdc\u8bdf\u8be0\u8be4\u8be8\u8be9\u8bee\u8bf0\u8bf3\u8bf6\u8bf9\u8bfc\u8bff\u8c00\u8c02\u8c04\u8c07\u8c0c\u8c0f\u8c11\u8c12\u8c14\u8c15\u8c16\u8c19\u8c1b\u8c18\u8c1d\u8c1f\u8c20\u8c21\u8c25\u8c27\u8c2a\u8c2b\u8c2e\u8c2f\u8c32\u8c33\u8c35\u8c36\u5369\u537a\u961d\u9622\u9621\u9631\u962a\u963d\u963c\u9642\u9649\u9654\u965f\u9667\u966c\u9672\u9674\u9688\u968d\u9697\u96b0\u9097\u909b\u909d\u9099\u90ac\u90a1\u90b4\u90b3\u90b6\u90ba"],["db40","\u8dd5\u8dd8\u8dd9\u8ddc\u8de0\u8de1\u8de2\u8de5\u8de6\u8de7\u8de9\u8ded\u8dee\u8df0\u8df1\u8df2\u8df4\u8df6\u8dfc\u8dfe",6,"\u8e06\u8e07\u8e08\u8e0b\u8e0d\u8e0e\u8e10\u8e11\u8e12\u8e13\u8e15",7,"\u8e20\u8e21\u8e24",4,"\u8e2b\u8e2d\u8e30\u8e32\u8e33\u8e34\u8e36\u8e37\u8e38\u8e3b\u8e3c\u8e3e"],["db80","\u8e3f\u8e43\u8e45\u8e46\u8e4c",4,"\u8e53",5,"\u8e5a",11,"\u8e67\u8e68\u8e6a\u8e6b\u8e6e\u8e71\u90b8\u90b0\u90cf\u90c5\u90be\u90d0\u90c4\u90c7\u90d3\u90e6\u90e2\u90dc\u90d7\u90db\u90eb\u90ef\u90fe\u9104\u9122\u911e\u9123\u9131\u912f\u9139\u9143\u9146\u520d\u5942\u52a2\u52ac\u52ad\u52be\u54ff\u52d0\u52d6\u52f0\u53df\u71ee\u77cd\u5ef4\u51f5\u51fc\u9b2f\u53b6\u5f01\u755a\u5def\u574c\u57a9\u57a1\u587e\u58bc\u58c5\u58d1\u5729\u572c\u572a\u5733\u5739\u572e\u572f\u575c\u573b\u5742\u5769\u5785\u576b\u5786\u577c\u577b\u5768\u576d\u5776\u5773\u57ad\u57a4\u578c\u57b2\u57cf\u57a7\u57b4\u5793\u57a0\u57d5\u57d8\u57da\u57d9\u57d2\u57b8\u57f4\u57ef\u57f8\u57e4\u57dd"],["dc40","\u8e73\u8e75\u8e77",4,"\u8e7d\u8e7e\u8e80\u8e82\u8e83\u8e84\u8e86\u8e88",6,"\u8e91\u8e92\u8e93\u8e95",6,"\u8e9d\u8e9f",11,"\u8ead\u8eae\u8eb0\u8eb1\u8eb3",6,"\u8ebb",7],["dc80","\u8ec3",10,"\u8ecf",21,"\u580b\u580d\u57fd\u57ed\u5800\u581e\u5819\u5844\u5820\u5865\u586c\u5881\u5889\u589a\u5880\u99a8\u9f19\u61ff\u8279\u827d\u827f\u828f\u828a\u82a8\u8284\u828e\u8291\u8297\u8299\u82ab\u82b8\u82be\u82b0\u82c8\u82ca\u82e3\u8298\u82b7\u82ae\u82cb\u82cc\u82c1\u82a9\u82b4\u82a1\u82aa\u829f\u82c4\u82ce\u82a4\u82e1\u8309\u82f7\u82e4\u830f\u8307\u82dc\u82f4\u82d2\u82d8\u830c\u82fb\u82d3\u8311\u831a\u8306\u8314\u8315\u82e0\u82d5\u831c\u8351\u835b\u835c\u8308\u8392\u833c\u8334\u8331\u839b\u835e\u832f\u834f\u8347\u8343\u835f\u8340\u8317\u8360\u832d\u833a\u8333\u8366\u8365"],["dd40","\u8ee5",62],["dd80","\u8f24",32,"\u8368\u831b\u8369\u836c\u836a\u836d\u836e\u83b0\u8378\u83b3\u83b4\u83a0\u83aa\u8393\u839c\u8385\u837c\u83b6\u83a9\u837d\u83b8\u837b\u8398\u839e\u83a8\u83ba\u83bc\u83c1\u8401\u83e5\u83d8\u5807\u8418\u840b\u83dd\u83fd\u83d6\u841c\u8438\u8411\u8406\u83d4\u83df\u840f\u8403\u83f8\u83f9\u83ea\u83c5\u83c0\u8426\u83f0\u83e1\u845c\u8451\u845a\u8459\u8473\u8487\u8488\u847a\u8489\u8478\u843c\u8446\u8469\u8476\u848c\u848e\u8431\u846d\u84c1\u84cd\u84d0\u84e6\u84bd\u84d3\u84ca\u84bf\u84ba\u84e0\u84a1\u84b9\u84b4\u8497\u84e5\u84e3\u850c\u750d\u8538\u84f0\u8539\u851f\u853a"],["de40","\u8f45",32,"\u8f6a\u8f80\u8f8c\u8f92\u8f9d\u8fa0\u8fa1\u8fa2\u8fa4\u8fa5\u8fa6\u8fa7\u8faa\u8fac\u8fad\u8fae\u8faf\u8fb2\u8fb3\u8fb4\u8fb5\u8fb7\u8fb8\u8fba\u8fbb\u8fbc\u8fbf\u8fc0\u8fc3\u8fc6"],["de80","\u8fc9",4,"\u8fcf\u8fd2\u8fd6\u8fd7\u8fda\u8fe0\u8fe1\u8fe3\u8fe7\u8fec\u8fef\u8ff1\u8ff2\u8ff4\u8ff5\u8ff6\u8ffa\u8ffb\u8ffc\u8ffe\u8fff\u9007\u9008\u900c\u900e\u9013\u9015\u9018\u8556\u853b\u84ff\u84fc\u8559\u8548\u8568\u8564\u855e\u857a\u77a2\u8543\u8572\u857b\u85a4\u85a8\u8587\u858f\u8579\u85ae\u859c\u8585\u85b9\u85b7\u85b0\u85d3\u85c1\u85dc\u85ff\u8627\u8605\u8629\u8616\u863c\u5efe\u5f08\u593c\u5941\u8037\u5955\u595a\u5958\u530f\u5c22\u5c25\u5c2c\u5c34\u624c\u626a\u629f\u62bb\u62ca\u62da\u62d7\u62ee\u6322\u62f6\u6339\u634b\u6343\u63ad\u63f6\u6371\u637a\u638e\u63b4\u636d\u63ac\u638a\u6369\u63ae\u63bc\u63f2\u63f8\u63e0\u63ff\u63c4\u63de\u63ce\u6452\u63c6\u63be\u6445\u6441\u640b\u641b\u6420\u640c\u6426\u6421\u645e\u6484\u646d\u6496"],["df40","\u9019\u901c\u9023\u9024\u9025\u9027",5,"\u9030",4,"\u9037\u9039\u903a\u903d\u903f\u9040\u9043\u9045\u9046\u9048",4,"\u904e\u9054\u9055\u9056\u9059\u905a\u905c",5,"\u9064\u9066\u9067\u9069\u906a\u906b\u906c\u906f",4,"\u9076",6,"\u907e\u9081"],["df80","\u9084\u9085\u9086\u9087\u9089\u908a\u908c",4,"\u9092\u9094\u9096\u9098\u909a\u909c\u909e\u909f\u90a0\u90a4\u90a5\u90a7\u90a8\u90a9\u90ab\u90ad\u90b2\u90b7\u90bc\u90bd\u90bf\u90c0\u647a\u64b7\u64b8\u6499\u64ba\u64c0\u64d0\u64d7\u64e4\u64e2\u6509\u6525\u652e\u5f0b\u5fd2\u7519\u5f11\u535f\u53f1\u53fd\u53e9\u53e8\u53fb\u5412\u5416\u5406\u544b\u5452\u5453\u5454\u5456\u5443\u5421\u5457\u5459\u5423\u5432\u5482\u5494\u5477\u5471\u5464\u549a\u549b\u5484\u5476\u5466\u549d\u54d0\u54ad\u54c2\u54b4\u54d2\u54a7\u54a6\u54d3\u54d4\u5472\u54a3\u54d5\u54bb\u54bf\u54cc\u54d9\u54da\u54dc\u54a9\u54aa\u54a4\u54dd\u54cf\u54de\u551b\u54e7\u5520\u54fd\u5514\u54f3\u5522\u5523\u550f\u5511\u5527\u552a\u5567\u558f\u55b5\u5549\u556d\u5541\u5555\u553f\u5550\u553c"],["e040","\u90c2\u90c3\u90c6\u90c8\u90c9\u90cb\u90cc\u90cd\u90d2\u90d4\u90d5\u90d6\u90d8\u90d9\u90da\u90de\u90df\u90e0\u90e3\u90e4\u90e5\u90e9\u90ea\u90ec\u90ee\u90f0\u90f1\u90f2\u90f3\u90f5\u90f6\u90f7\u90f9\u90fa\u90fb\u90fc\u90ff\u9100\u9101\u9103\u9105",19,"\u911a\u911b\u911c"],["e080","\u911d\u911f\u9120\u9121\u9124",10,"\u9130\u9132",6,"\u913a",8,"\u9144\u5537\u5556\u5575\u5576\u5577\u5533\u5530\u555c\u558b\u55d2\u5583\u55b1\u55b9\u5588\u5581\u559f\u557e\u55d6\u5591\u557b\u55df\u55bd\u55be\u5594\u5599\u55ea\u55f7\u55c9\u561f\u55d1\u55eb\u55ec\u55d4\u55e6\u55dd\u55c4\u55ef\u55e5\u55f2\u55f3\u55cc\u55cd\u55e8\u55f5\u55e4\u8f94\u561e\u5608\u560c\u5601\u5624\u5623\u55fe\u5600\u5627\u562d\u5658\u5639\u5657\u562c\u564d\u5662\u5659\u565c\u564c\u5654\u5686\u5664\u5671\u566b\u567b\u567c\u5685\u5693\u56af\u56d4\u56d7\u56dd\u56e1\u56f5\u56eb\u56f9\u56ff\u5704\u570a\u5709\u571c\u5e0f\u5e19\u5e14\u5e11\u5e31\u5e3b\u5e3c"],["e140","\u9145\u9147\u9148\u9151\u9153\u9154\u9155\u9156\u9158\u9159\u915b\u915c\u915f\u9160\u9166\u9167\u9168\u916b\u916d\u9173\u917a\u917b\u917c\u9180",4,"\u9186\u9188\u918a\u918e\u918f\u9193",6,"\u919c",5,"\u91a4",5,"\u91ab\u91ac\u91b0\u91b1\u91b2\u91b3\u91b6\u91b7\u91b8\u91b9\u91bb"],["e180","\u91bc",10,"\u91c8\u91cb\u91d0\u91d2",9,"\u91dd",8,"\u5e37\u5e44\u5e54\u5e5b\u5e5e\u5e61\u5c8c\u5c7a\u5c8d\u5c90\u5c96\u5c88\u5c98\u5c99\u5c91\u5c9a\u5c9c\u5cb5\u5ca2\u5cbd\u5cac\u5cab\u5cb1\u5ca3\u5cc1\u5cb7\u5cc4\u5cd2\u5ce4\u5ccb\u5ce5\u5d02\u5d03\u5d27\u5d26\u5d2e\u5d24\u5d1e\u5d06\u5d1b\u5d58\u5d3e\u5d34\u5d3d\u5d6c\u5d5b\u5d6f\u5d5d\u5d6b\u5d4b\u5d4a\u5d69\u5d74\u5d82\u5d99\u5d9d\u8c73\u5db7\u5dc5\u5f73\u5f77\u5f82\u5f87\u5f89\u5f8c\u5f95\u5f99\u5f9c\u5fa8\u5fad\u5fb5\u5fbc\u8862\u5f61\u72ad\u72b0\u72b4\u72b7\u72b8\u72c3\u72c1\u72ce\u72cd\u72d2\u72e8\u72ef\u72e9\u72f2\u72f4\u72f7\u7301\u72f3\u7303\u72fa"],["e240","\u91e6",62],["e280","\u9225",32,"\u72fb\u7317\u7313\u7321\u730a\u731e\u731d\u7315\u7322\u7339\u7325\u732c\u7338\u7331\u7350\u734d\u7357\u7360\u736c\u736f\u737e\u821b\u5925\u98e7\u5924\u5902\u9963\u9967",5,"\u9974\u9977\u997d\u9980\u9984\u9987\u998a\u998d\u9990\u9991\u9993\u9994\u9995\u5e80\u5e91\u5e8b\u5e96\u5ea5\u5ea0\u5eb9\u5eb5\u5ebe\u5eb3\u8d53\u5ed2\u5ed1\u5edb\u5ee8\u5eea\u81ba\u5fc4\u5fc9\u5fd6\u5fcf\u6003\u5fee\u6004\u5fe1\u5fe4\u5ffe\u6005\u6006\u5fea\u5fed\u5ff8\u6019\u6035\u6026\u601b\u600f\u600d\u6029\u602b\u600a\u603f\u6021\u6078\u6079\u607b\u607a\u6042"],["e340","\u9246",45,"\u9275",16],["e380","\u9286",7,"\u928f",24,"\u606a\u607d\u6096\u609a\u60ad\u609d\u6083\u6092\u608c\u609b\u60ec\u60bb\u60b1\u60dd\u60d8\u60c6\u60da\u60b4\u6120\u6126\u6115\u6123\u60f4\u6100\u610e\u612b\u614a\u6175\u61ac\u6194\u61a7\u61b7\u61d4\u61f5\u5fdd\u96b3\u95e9\u95eb\u95f1\u95f3\u95f5\u95f6\u95fc\u95fe\u9603\u9604\u9606\u9608\u960a\u960b\u960c\u960d\u960f\u9612\u9615\u9616\u9617\u9619\u961a\u4e2c\u723f\u6215\u6c35\u6c54\u6c5c\u6c4a\u6ca3\u6c85\u6c90\u6c94\u6c8c\u6c68\u6c69\u6c74\u6c76\u6c86\u6ca9\u6cd0\u6cd4\u6cad\u6cf7\u6cf8\u6cf1\u6cd7\u6cb2\u6ce0\u6cd6\u6cfa\u6ceb\u6cee\u6cb1\u6cd3\u6cef\u6cfe"],["e440","\u92a8",5,"\u92af",24,"\u92c9",31],["e480","\u92e9",32,"\u6d39\u6d27\u6d0c\u6d43\u6d48\u6d07\u6d04\u6d19\u6d0e\u6d2b\u6d4d\u6d2e\u6d35\u6d1a\u6d4f\u6d52\u6d54\u6d33\u6d91\u6d6f\u6d9e\u6da0\u6d5e\u6d93\u6d94\u6d5c\u6d60\u6d7c\u6d63\u6e1a\u6dc7\u6dc5\u6dde\u6e0e\u6dbf\u6de0\u6e11\u6de6\u6ddd\u6dd9\u6e16\u6dab\u6e0c\u6dae\u6e2b\u6e6e\u6e4e\u6e6b\u6eb2\u6e5f\u6e86\u6e53\u6e54\u6e32\u6e25\u6e44\u6edf\u6eb1\u6e98\u6ee0\u6f2d\u6ee2\u6ea5\u6ea7\u6ebd\u6ebb\u6eb7\u6ed7\u6eb4\u6ecf\u6e8f\u6ec2\u6e9f\u6f62\u6f46\u6f47\u6f24\u6f15\u6ef9\u6f2f\u6f36\u6f4b\u6f74\u6f2a\u6f09\u6f29\u6f89\u6f8d\u6f8c\u6f78\u6f72\u6f7c\u6f7a\u6fd1"],["e540","\u930a",51,"\u933f",10],["e580","\u934a",31,"\u936b\u6fc9\u6fa7\u6fb9\u6fb6\u6fc2\u6fe1\u6fee\u6fde\u6fe0\u6fef\u701a\u7023\u701b\u7039\u7035\u704f\u705e\u5b80\u5b84\u5b95\u5b93\u5ba5\u5bb8\u752f\u9a9e\u6434\u5be4\u5bee\u8930\u5bf0\u8e47\u8b07\u8fb6\u8fd3\u8fd5\u8fe5\u8fee\u8fe4\u8fe9\u8fe6\u8ff3\u8fe8\u9005\u9004\u900b\u9026\u9011\u900d\u9016\u9021\u9035\u9036\u902d\u902f\u9044\u9051\u9052\u9050\u9068\u9058\u9062\u905b\u66b9\u9074\u907d\u9082\u9088\u9083\u908b\u5f50\u5f57\u5f56\u5f58\u5c3b\u54ab\u5c50\u5c59\u5b71\u5c63\u5c66\u7fbc\u5f2a\u5f29\u5f2d\u8274\u5f3c\u9b3b\u5c6e\u5981\u5983\u598d\u59a9\u59aa\u59a3"],["e640","\u936c",34,"\u9390",27],["e680","\u93ac",29,"\u93cb\u93cc\u93cd\u5997\u59ca\u59ab\u599e\u59a4\u59d2\u59b2\u59af\u59d7\u59be\u5a05\u5a06\u59dd\u5a08\u59e3\u59d8\u59f9\u5a0c\u5a09\u5a32\u5a34\u5a11\u5a23\u5a13\u5a40\u5a67\u5a4a\u5a55\u5a3c\u5a62\u5a75\u80ec\u5aaa\u5a9b\u5a77\u5a7a\u5abe\u5aeb\u5ab2\u5ad2\u5ad4\u5ab8\u5ae0\u5ae3\u5af1\u5ad6\u5ae6\u5ad8\u5adc\u5b09\u5b17\u5b16\u5b32\u5b37\u5b40\u5c15\u5c1c\u5b5a\u5b65\u5b73\u5b51\u5b53\u5b62\u9a75\u9a77\u9a78\u9a7a\u9a7f\u9a7d\u9a80\u9a81\u9a85\u9a88\u9a8a\u9a90\u9a92\u9a93\u9a96\u9a98\u9a9b\u9a9c\u9a9d\u9a9f\u9aa0\u9aa2\u9aa3\u9aa5\u9aa7\u7e9f\u7ea1\u7ea3\u7ea5\u7ea8\u7ea9"],["e740","\u93ce",7,"\u93d7",54],["e780","\u940e",32,"\u7ead\u7eb0\u7ebe\u7ec0\u7ec1\u7ec2\u7ec9\u7ecb\u7ecc\u7ed0\u7ed4\u7ed7\u7edb\u7ee0\u7ee1\u7ee8\u7eeb\u7eee\u7eef\u7ef1\u7ef2\u7f0d\u7ef6\u7efa\u7efb\u7efe\u7f01\u7f02\u7f03\u7f07\u7f08\u7f0b\u7f0c\u7f0f\u7f11\u7f12\u7f17\u7f19\u7f1c\u7f1b\u7f1f\u7f21",6,"\u7f2a\u7f2b\u7f2c\u7f2d\u7f2f",4,"\u7f35\u5e7a\u757f\u5ddb\u753e\u9095\u738e\u7391\u73ae\u73a2\u739f\u73cf\u73c2\u73d1\u73b7\u73b3\u73c0\u73c9\u73c8\u73e5\u73d9\u987c\u740a\u73e9\u73e7\u73de\u73ba\u73f2\u740f\u742a\u745b\u7426\u7425\u7428\u7430\u742e\u742c"],["e840","\u942f",14,"\u943f",43,"\u946c\u946d\u946e\u946f"],["e880","\u9470",20,"\u9491\u9496\u9498\u94c7\u94cf\u94d3\u94d4\u94da\u94e6\u94fb\u951c\u9520\u741b\u741a\u7441\u745c\u7457\u7455\u7459\u7477\u746d\u747e\u749c\u748e\u7480\u7481\u7487\u748b\u749e\u74a8\u74a9\u7490\u74a7\u74d2\u74ba\u97ea\u97eb\u97ec\u674c\u6753\u675e\u6748\u6769\u67a5\u6787\u676a\u6773\u6798\u67a7\u6775\u67a8\u679e\u67ad\u678b\u6777\u677c\u67f0\u6809\u67d8\u680a\u67e9\u67b0\u680c\u67d9\u67b5\u67da\u67b3\u67dd\u6800\u67c3\u67b8\u67e2\u680e\u67c1\u67fd\u6832\u6833\u6860\u6861\u684e\u6862\u6844\u6864\u6883\u681d\u6855\u6866\u6841\u6867\u6840\u683e\u684a\u6849\u6829\u68b5\u688f\u6874\u6877\u6893\u686b\u68c2\u696e\u68fc\u691f\u6920\u68f9"],["e940","\u9527\u9533\u953d\u9543\u9548\u954b\u9555\u955a\u9560\u956e\u9574\u9575\u9577",7,"\u9580",42],["e980","\u95ab",32,"\u6924\u68f0\u690b\u6901\u6957\u68e3\u6910\u6971\u6939\u6960\u6942\u695d\u6984\u696b\u6980\u6998\u6978\u6934\u69cc\u6987\u6988\u69ce\u6989\u6966\u6963\u6979\u699b\u69a7\u69bb\u69ab\u69ad\u69d4\u69b1\u69c1\u69ca\u69df\u6995\u69e0\u698d\u69ff\u6a2f\u69ed\u6a17\u6a18\u6a65\u69f2\u6a44\u6a3e\u6aa0\u6a50\u6a5b\u6a35\u6a8e\u6a79\u6a3d\u6a28\u6a58\u6a7c\u6a91\u6a90\u6aa9\u6a97\u6aab\u7337\u7352\u6b81\u6b82\u6b87\u6b84\u6b92\u6b93\u6b8d\u6b9a\u6b9b\u6ba1\u6baa\u8f6b\u8f6d\u8f71\u8f72\u8f73\u8f75\u8f76\u8f78\u8f77\u8f79\u8f7a\u8f7c\u8f7e\u8f81\u8f82\u8f84\u8f87\u8f8b"],["ea40","\u95cc",27,"\u95ec\u95ff\u9607\u9613\u9618\u961b\u961e\u9620\u9623",6,"\u962b\u962c\u962d\u962f\u9630\u9637\u9638\u9639\u963a\u963e\u9641\u9643\u964a\u964e\u964f\u9651\u9652\u9653\u9656\u9657"],["ea80","\u9658\u9659\u965a\u965c\u965d\u965e\u9660\u9663\u9665\u9666\u966b\u966d",4,"\u9673\u9678",12,"\u9687\u9689\u968a\u8f8d\u8f8e\u8f8f\u8f98\u8f9a\u8ece\u620b\u6217\u621b\u621f\u6222\u6221\u6225\u6224\u622c\u81e7\u74ef\u74f4\u74ff\u750f\u7511\u7513\u6534\u65ee\u65ef\u65f0\u660a\u6619\u6772\u6603\u6615\u6600\u7085\u66f7\u661d\u6634\u6631\u6636\u6635\u8006\u665f\u6654\u6641\u664f\u6656\u6661\u6657\u6677\u6684\u668c\u66a7\u669d\u66be\u66db\u66dc\u66e6\u66e9\u8d32\u8d33\u8d36\u8d3b\u8d3d\u8d40\u8d45\u8d46\u8d48\u8d49\u8d47\u8d4d\u8d55\u8d59\u89c7\u89ca\u89cb\u89cc\u89ce\u89cf\u89d0\u89d1\u726e\u729f\u725d\u7266\u726f\u727e\u727f\u7284\u728b\u728d\u728f\u7292\u6308\u6332\u63b0"],["eb40","\u968c\u968e\u9691\u9692\u9693\u9695\u9696\u969a\u969b\u969d",9,"\u96a8",7,"\u96b1\u96b2\u96b4\u96b5\u96b7\u96b8\u96ba\u96bb\u96bf\u96c2\u96c3\u96c8\u96ca\u96cb\u96d0\u96d1\u96d3\u96d4\u96d6",9,"\u96e1",6,"\u96eb"],["eb80","\u96ec\u96ed\u96ee\u96f0\u96f1\u96f2\u96f4\u96f5\u96f8\u96fa\u96fb\u96fc\u96fd\u96ff\u9702\u9703\u9705\u970a\u970b\u970c\u9710\u9711\u9712\u9714\u9715\u9717",4,"\u971d\u971f\u9720\u643f\u64d8\u8004\u6bea\u6bf3\u6bfd\u6bf5\u6bf9\u6c05\u6c07\u6c06\u6c0d\u6c15\u6c18\u6c19\u6c1a\u6c21\u6c29\u6c24\u6c2a\u6c32\u6535\u6555\u656b\u724d\u7252\u7256\u7230\u8662\u5216\u809f\u809c\u8093\u80bc\u670a\u80bd\u80b1\u80ab\u80ad\u80b4\u80b7\u80e7\u80e8\u80e9\u80ea\u80db\u80c2\u80c4\u80d9\u80cd\u80d7\u6710\u80dd\u80eb\u80f1\u80f4\u80ed\u810d\u810e\u80f2\u80fc\u6715\u8112\u8c5a\u8136\u811e\u812c\u8118\u8132\u8148\u814c\u8153\u8174\u8159\u815a\u8171\u8160\u8169\u817c\u817d\u816d\u8167\u584d\u5ab5\u8188\u8182\u8191\u6ed5\u81a3\u81aa\u81cc\u6726\u81ca\u81bb"],["ec40","\u9721",8,"\u972b\u972c\u972e\u972f\u9731\u9733",4,"\u973a\u973b\u973c\u973d\u973f",18,"\u9754\u9755\u9757\u9758\u975a\u975c\u975d\u975f\u9763\u9764\u9766\u9767\u9768\u976a",7],["ec80","\u9772\u9775\u9777",4,"\u977d",7,"\u9786",4,"\u978c\u978e\u978f\u9790\u9793\u9795\u9796\u9797\u9799",4,"\u81c1\u81a6\u6b24\u6b37\u6b39\u6b43\u6b46\u6b59\u98d1\u98d2\u98d3\u98d5\u98d9\u98da\u6bb3\u5f40\u6bc2\u89f3\u6590\u9f51\u6593\u65bc\u65c6\u65c4\u65c3\u65cc\u65ce\u65d2\u65d6\u7080\u709c\u7096\u709d\u70bb\u70c0\u70b7\u70ab\u70b1\u70e8\u70ca\u7110\u7113\u7116\u712f\u7131\u7173\u715c\u7168\u7145\u7172\u714a\u7178\u717a\u7198\u71b3\u71b5\u71a8\u71a0\u71e0\u71d4\u71e7\u71f9\u721d\u7228\u706c\u7118\u7166\u71b9\u623e\u623d\u6243\u6248\u6249\u793b\u7940\u7946\u7949\u795b\u795c\u7953\u795a\u7962\u7957\u7960\u796f\u7967\u797a\u7985\u798a\u799a\u79a7\u79b3\u5fd1\u5fd0"],["ed40","\u979e\u979f\u97a1\u97a2\u97a4",6,"\u97ac\u97ae\u97b0\u97b1\u97b3\u97b5",46],["ed80","\u97e4\u97e5\u97e8\u97ee",4,"\u97f4\u97f7",23,"\u603c\u605d\u605a\u6067\u6041\u6059\u6063\u60ab\u6106\u610d\u615d\u61a9\u619d\u61cb\u61d1\u6206\u8080\u807f\u6c93\u6cf6\u6dfc\u77f6\u77f8\u7800\u7809\u7817\u7818\u7811\u65ab\u782d\u781c\u781d\u7839\u783a\u783b\u781f\u783c\u7825\u782c\u7823\u7829\u784e\u786d\u7856\u7857\u7826\u7850\u7847\u784c\u786a\u789b\u7893\u789a\u7887\u789c\u78a1\u78a3\u78b2\u78b9\u78a5\u78d4\u78d9\u78c9\u78ec\u78f2\u7905\u78f4\u7913\u7924\u791e\u7934\u9f9b\u9ef9\u9efb\u9efc\u76f1\u7704\u770d\u76f9\u7707\u7708\u771a\u7722\u7719\u772d\u7726\u7735\u7738\u7750\u7751\u7747\u7743\u775a\u7768"],["ee40","\u980f",62],["ee80","\u984e",32,"\u7762\u7765\u777f\u778d\u777d\u7780\u778c\u7791\u779f\u77a0\u77b0\u77b5\u77bd\u753a\u7540\u754e\u754b\u7548\u755b\u7572\u7579\u7583\u7f58\u7f61\u7f5f\u8a48\u7f68\u7f74\u7f71\u7f79\u7f81\u7f7e\u76cd\u76e5\u8832\u9485\u9486\u9487\u948b\u948a\u948c\u948d\u948f\u9490\u9494\u9497\u9495\u949a\u949b\u949c\u94a3\u94a4\u94ab\u94aa\u94ad\u94ac\u94af\u94b0\u94b2\u94b4\u94b6",4,"\u94bc\u94bd\u94bf\u94c4\u94c8",6,"\u94d0\u94d1\u94d2\u94d5\u94d6\u94d7\u94d9\u94d8\u94db\u94de\u94df\u94e0\u94e2\u94e4\u94e5\u94e7\u94e8\u94ea"],["ef40","\u986f",5,"\u988b\u988e\u9892\u9895\u9899\u98a3\u98a8",37,"\u98cf\u98d0\u98d4\u98d6\u98d7\u98db\u98dc\u98dd\u98e0",4],["ef80","\u98e5\u98e6\u98e9",30,"\u94e9\u94eb\u94ee\u94ef\u94f3\u94f4\u94f5\u94f7\u94f9\u94fc\u94fd\u94ff\u9503\u9502\u9506\u9507\u9509\u950a\u950d\u950e\u950f\u9512",4,"\u9518\u951b\u951d\u951e\u951f\u9522\u952a\u952b\u9529\u952c\u9531\u9532\u9534\u9536\u9537\u9538\u953c\u953e\u953f\u9542\u9535\u9544\u9545\u9546\u9549\u954c\u954e\u954f\u9552\u9553\u9554\u9556\u9557\u9558\u9559\u955b\u955e\u955f\u955d\u9561\u9562\u9564",8,"\u956f\u9571\u9572\u9573\u953a\u77e7\u77ec\u96c9\u79d5\u79ed\u79e3\u79eb\u7a06\u5d47\u7a03\u7a02\u7a1e\u7a14"],["f040","\u9908",4,"\u990e\u990f\u9911",28,"\u992f",26],["f080","\u994a",9,"\u9956",12,"\u9964\u9966\u9973\u9978\u9979\u997b\u997e\u9982\u9983\u9989\u7a39\u7a37\u7a51\u9ecf\u99a5\u7a70\u7688\u768e\u7693\u7699\u76a4\u74de\u74e0\u752c\u9e20\u9e22\u9e28",4,"\u9e32\u9e31\u9e36\u9e38\u9e37\u9e39\u9e3a\u9e3e\u9e41\u9e42\u9e44\u9e46\u9e47\u9e48\u9e49\u9e4b\u9e4c\u9e4e\u9e51\u9e55\u9e57\u9e5a\u9e5b\u9e5c\u9e5e\u9e63\u9e66",6,"\u9e71\u9e6d\u9e73\u7592\u7594\u7596\u75a0\u759d\u75ac\u75a3\u75b3\u75b4\u75b8\u75c4\u75b1\u75b0\u75c3\u75c2\u75d6\u75cd\u75e3\u75e8\u75e6\u75e4\u75eb\u75e7\u7603\u75f1\u75fc\u75ff\u7610\u7600\u7605\u760c\u7617\u760a\u7625\u7618\u7615\u7619"],["f140","\u998c\u998e\u999a",10,"\u99a6\u99a7\u99a9",47],["f180","\u99d9",32,"\u761b\u763c\u7622\u7620\u7640\u762d\u7630\u763f\u7635\u7643\u763e\u7633\u764d\u765e\u7654\u765c\u7656\u766b\u766f\u7fca\u7ae6\u7a78\u7a79\u7a80\u7a86\u7a88\u7a95\u7aa6\u7aa0\u7aac\u7aa8\u7aad\u7ab3\u8864\u8869\u8872\u887d\u887f\u8882\u88a2\u88c6\u88b7\u88bc\u88c9\u88e2\u88ce\u88e3\u88e5\u88f1\u891a\u88fc\u88e8\u88fe\u88f0\u8921\u8919\u8913\u891b\u890a\u8934\u892b\u8936\u8941\u8966\u897b\u758b\u80e5\u76b2\u76b4\u77dc\u8012\u8014\u8016\u801c\u8020\u8022\u8025\u8026\u8027\u8029\u8028\u8031\u800b\u8035\u8043\u8046\u804d\u8052\u8069\u8071\u8983\u9878\u9880\u9883"],["f240","\u99fa",62],["f280","\u9a39",32,"\u9889\u988c\u988d\u988f\u9894\u989a\u989b\u989e\u989f\u98a1\u98a2\u98a5\u98a6\u864d\u8654\u866c\u866e\u867f\u867a\u867c\u867b\u86a8\u868d\u868b\u86ac\u869d\u86a7\u86a3\u86aa\u8693\u86a9\u86b6\u86c4\u86b5\u86ce\u86b0\u86ba\u86b1\u86af\u86c9\u86cf\u86b4\u86e9\u86f1\u86f2\u86ed\u86f3\u86d0\u8713\u86de\u86f4\u86df\u86d8\u86d1\u8703\u8707\u86f8\u8708\u870a\u870d\u8709\u8723\u873b\u871e\u8725\u872e\u871a\u873e\u8748\u8734\u8731\u8729\u8737\u873f\u8782\u8722\u877d\u877e\u877b\u8760\u8770\u874c\u876e\u878b\u8753\u8763\u877c\u8764\u8759\u8765\u8793\u87af\u87a8\u87d2"],["f340","\u9a5a",17,"\u9a72\u9a83\u9a89\u9a8d\u9a8e\u9a94\u9a95\u9a99\u9aa6\u9aa9",6,"\u9ab2\u9ab3\u9ab4\u9ab5\u9ab9\u9abb\u9abd\u9abe\u9abf\u9ac3\u9ac4\u9ac6",4,"\u9acd\u9ace\u9acf\u9ad0\u9ad2\u9ad4\u9ad5\u9ad6\u9ad7\u9ad9\u9ada\u9adb\u9adc"],["f380","\u9add\u9ade\u9ae0\u9ae2\u9ae3\u9ae4\u9ae5\u9ae7\u9ae8\u9ae9\u9aea\u9aec\u9aee\u9af0",8,"\u9afa\u9afc",6,"\u9b04\u9b05\u9b06\u87c6\u8788\u8785\u87ad\u8797\u8783\u87ab\u87e5\u87ac\u87b5\u87b3\u87cb\u87d3\u87bd\u87d1\u87c0\u87ca\u87db\u87ea\u87e0\u87ee\u8816\u8813\u87fe\u880a\u881b\u8821\u8839\u883c\u7f36\u7f42\u7f44\u7f45\u8210\u7afa\u7afd\u7b08\u7b03\u7b04\u7b15\u7b0a\u7b2b\u7b0f\u7b47\u7b38\u7b2a\u7b19\u7b2e\u7b31\u7b20\u7b25\u7b24\u7b33\u7b3e\u7b1e\u7b58\u7b5a\u7b45\u7b75\u7b4c\u7b5d\u7b60\u7b6e\u7b7b\u7b62\u7b72\u7b71\u7b90\u7ba6\u7ba7\u7bb8\u7bac\u7b9d\u7ba8\u7b85\u7baa\u7b9c\u7ba2\u7bab\u7bb4\u7bd1\u7bc1\u7bcc\u7bdd\u7bda\u7be5\u7be6\u7bea\u7c0c\u7bfe\u7bfc\u7c0f\u7c16\u7c0b"],["f440","\u9b07\u9b09",5,"\u9b10\u9b11\u9b12\u9b14",10,"\u9b20\u9b21\u9b22\u9b24",10,"\u9b30\u9b31\u9b33",7,"\u9b3d\u9b3e\u9b3f\u9b40\u9b46\u9b4a\u9b4b\u9b4c\u9b4e\u9b50\u9b52\u9b53\u9b55",5],["f480","\u9b5b",32,"\u7c1f\u7c2a\u7c26\u7c38\u7c41\u7c40\u81fe\u8201\u8202\u8204\u81ec\u8844\u8221\u8222\u8223\u822d\u822f\u8228\u822b\u8238\u823b\u8233\u8234\u823e\u8244\u8249\u824b\u824f\u825a\u825f\u8268\u887e\u8885\u8888\u88d8\u88df\u895e\u7f9d\u7f9f\u7fa7\u7faf\u7fb0\u7fb2\u7c7c\u6549\u7c91\u7c9d\u7c9c\u7c9e\u7ca2\u7cb2\u7cbc\u7cbd\u7cc1\u7cc7\u7ccc\u7ccd\u7cc8\u7cc5\u7cd7\u7ce8\u826e\u66a8\u7fbf\u7fce\u7fd5\u7fe5\u7fe1\u7fe6\u7fe9\u7fee\u7ff3\u7cf8\u7d77\u7da6\u7dae\u7e47\u7e9b\u9eb8\u9eb4\u8d73\u8d84\u8d94\u8d91\u8db1\u8d67\u8d6d\u8c47\u8c49\u914a\u9150\u914e\u914f\u9164"],["f540","\u9b7c",62],["f580","\u9bbb",32,"\u9162\u9161\u9170\u9169\u916f\u917d\u917e\u9172\u9174\u9179\u918c\u9185\u9190\u918d\u9191\u91a2\u91a3\u91aa\u91ad\u91ae\u91af\u91b5\u91b4\u91ba\u8c55\u9e7e\u8db8\u8deb\u8e05\u8e59\u8e69\u8db5\u8dbf\u8dbc\u8dba\u8dc4\u8dd6\u8dd7\u8dda\u8dde\u8dce\u8dcf\u8ddb\u8dc6\u8dec\u8df7\u8df8\u8de3\u8df9\u8dfb\u8de4\u8e09\u8dfd\u8e14\u8e1d\u8e1f\u8e2c\u8e2e\u8e23\u8e2f\u8e3a\u8e40\u8e39\u8e35\u8e3d\u8e31\u8e49\u8e41\u8e42\u8e51\u8e52\u8e4a\u8e70\u8e76\u8e7c\u8e6f\u8e74\u8e85\u8e8f\u8e94\u8e90\u8e9c\u8e9e\u8c78\u8c82\u8c8a\u8c85\u8c98\u8c94\u659b\u89d6\u89de\u89da\u89dc"],["f640","\u9bdc",62],["f680","\u9c1b",32,"\u89e5\u89eb\u89ef\u8a3e\u8b26\u9753\u96e9\u96f3\u96ef\u9706\u9701\u9708\u970f\u970e\u972a\u972d\u9730\u973e\u9f80\u9f83\u9f85",5,"\u9f8c\u9efe\u9f0b\u9f0d\u96b9\u96bc\u96bd\u96ce\u96d2\u77bf\u96e0\u928e\u92ae\u92c8\u933e\u936a\u93ca\u938f\u943e\u946b\u9c7f\u9c82\u9c85\u9c86\u9c87\u9c88\u7a23\u9c8b\u9c8e\u9c90\u9c91\u9c92\u9c94\u9c95\u9c9a\u9c9b\u9c9e",5,"\u9ca5",4,"\u9cab\u9cad\u9cae\u9cb0",7,"\u9cba\u9cbb\u9cbc\u9cbd\u9cc4\u9cc5\u9cc6\u9cc7\u9cca\u9ccb"],["f740","\u9c3c",62],["f780","\u9c7b\u9c7d\u9c7e\u9c80\u9c83\u9c84\u9c89\u9c8a\u9c8c\u9c8f\u9c93\u9c96\u9c97\u9c98\u9c99\u9c9d\u9caa\u9cac\u9caf\u9cb9\u9cbe",4,"\u9cc8\u9cc9\u9cd1\u9cd2\u9cda\u9cdb\u9ce0\u9ce1\u9ccc",4,"\u9cd3\u9cd4\u9cd5\u9cd7\u9cd8\u9cd9\u9cdc\u9cdd\u9cdf\u9ce2\u977c\u9785\u9791\u9792\u9794\u97af\u97ab\u97a3\u97b2\u97b4\u9ab1\u9ab0\u9ab7\u9e58\u9ab6\u9aba\u9abc\u9ac1\u9ac0\u9ac5\u9ac2\u9acb\u9acc\u9ad1\u9b45\u9b43\u9b47\u9b49\u9b48\u9b4d\u9b51\u98e8\u990d\u992e\u9955\u9954\u9adf\u9ae1\u9ae6\u9aef\u9aeb\u9afb\u9aed\u9af9\u9b08\u9b0f\u9b13\u9b1f\u9b23\u9ebd\u9ebe\u7e3b\u9e82\u9e87\u9e88\u9e8b\u9e92\u93d6\u9e9d\u9e9f\u9edb\u9edc\u9edd\u9ee0\u9edf\u9ee2\u9ee9\u9ee7\u9ee5\u9eea\u9eef\u9f22\u9f2c\u9f2f\u9f39\u9f37\u9f3d\u9f3e\u9f44"],["f840","\u9ce3",62],["f880","\u9d22",32],["f940","\u9d43",62],["f980","\u9d82",32],["fa40","\u9da3",62],["fa80","\u9de2",32],["fb40","\u9e03",27,"\u9e24\u9e27\u9e2e\u9e30\u9e34\u9e3b\u9e3c\u9e40\u9e4d\u9e50\u9e52\u9e53\u9e54\u9e56\u9e59\u9e5d\u9e5f\u9e60\u9e61\u9e62\u9e65\u9e6e\u9e6f\u9e72\u9e74",9,"\u9e80"],["fb80","\u9e81\u9e83\u9e84\u9e85\u9e86\u9e89\u9e8a\u9e8c",5,"\u9e94",8,"\u9e9e\u9ea0",5,"\u9ea7\u9ea8\u9ea9\u9eaa"],["fc40","\u9eab",8,"\u9eb5\u9eb6\u9eb7\u9eb9\u9eba\u9ebc\u9ebf",4,"\u9ec5\u9ec6\u9ec7\u9ec8\u9eca\u9ecb\u9ecc\u9ed0\u9ed2\u9ed3\u9ed5\u9ed6\u9ed7\u9ed9\u9eda\u9ede\u9ee1\u9ee3\u9ee4\u9ee6\u9ee8\u9eeb\u9eec\u9eed\u9eee\u9ef0",8,"\u9efa\u9efd\u9eff",6],["fc80","\u9f06",4,"\u9f0c\u9f0f\u9f11\u9f12\u9f14\u9f15\u9f16\u9f18\u9f1a",5,"\u9f21\u9f23",8,"\u9f2d\u9f2e\u9f30\u9f31"],["fd40","\u9f32",4,"\u9f38\u9f3a\u9f3c\u9f3f",4,"\u9f45",10,"\u9f52",38],["fd80","\u9f79",5,"\u9f81\u9f82\u9f8d",11,"\u9f9c\u9f9d\u9f9e\u9fa1",4,"\uf92c\uf979\uf995\uf9e7\uf9f1"],["fe40","\ufa0c\ufa0d\ufa0e\ufa0f\ufa11\ufa13\ufa14\ufa18\ufa1f\ufa20\ufa21\ufa23\ufa24\ufa27\ufa28\ufa29"]]')},function(g,I){function e(I){return g.exports=e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"==typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g},g.exports.__esModule=!0,g.exports.default=g.exports,e(I)}g.exports=e,g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I,e){"use strict";(function(I){var t=I.Symbol,C=e(1435);g.exports=function(){return"function"===typeof t&&("function"===typeof Symbol&&("symbol"===typeof t("foo")&&("symbol"===typeof Symbol("bar")&&C())))}}).call(this,e(67))},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(255)),B=Q.ifElse(Q.has("attributes"),Q.pathOr(0,["attributes","font","ascent"]),Q.always(0)),n=Q.converge(Q.max,[Q.pathOr(0,["attributes","attachment","height"]),Q.converge(Q.multiply,[F.default,B])]);I.default=n},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(255)),B=Q.ifElse(Q.has("attributes"),Q.pathOr(0,["attributes","font","descent"]),Q.always(0)),n=Q.converge(Q.multiply,[F.default,B]);I.default=n},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(345)),B=t(e(537)),n=(0,F.default)(Q.max,B.default);I.default=n},function(g,I,e){"use strict";var t=e(290).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=C.when(C.is(String),C.test(/^-?\d*\.?\d*$/)),F=function(g){return"string"!==typeof g?g:Q(g)?parseFloat(g,10):g};I.default=F},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(773)),B=t(e(774)),n=t(e(544)),U=Q.curryN(2,(function(g,I){var e=Q.propOr([],"codePoints")(g);return Q.evolve({string:Q.concat(Q.__,(0,n.default)(e)),runs:Q.converge(Q.concat,[Q.init,Q.compose(Q.unapply(Q.identity),(0,B.default)(g),Q.either(Q.last,F.default))])})(I)}));I.default=U},function(g,I,e){"use strict";var t=e(31).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)).is(Number);I.default=C},function(g,I,e){"use strict";I.__esModule=!0,I.default=void 0;var t=function(g,I){return I&&g?I.glyphForCodePoint(g):null};I.default=t},function(g,I,e){"use strict";I.__esModule=!0,I.default=void 0;var t=function(g){return String.fromCodePoint.apply(String,g)};I.default=t},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(255)),B=t(e(1539)),n=t(e(419)),U=t(e(1540)),s=t(e(546)),i=t(e(776)),c=Q.curryN(3,(function(g,I,e){var t=(0,F.default)(e),C=(0,n.default)(e),c=(0,s.default)(g,e),A=(0,s.default)(I,e),l=Q.path(["glyphs",c],e),a=Q.path(["glyphs",A],e),r=(0,B.default)(g,e),o=r>0?(0,U.default)(r,1/0,C,l):[],d=(0,B.default)(I,e),u=(0,U.default)(0,d,C,a),y=Math.min(1,r);return Q.evolve({start:Q.add(g),end:Q.compose(Q.apply(Q.min),Q.juxt([Q.identity,Q.o(Q.add(I),Q.always(e.start))])),glyphs:function(g){return Q.flatten([o,g.slice(c+y,A),u])},positions:function(g){return Q.flatten([o.map((function(g){return{xAdvance:g.advanceWidth*t}})),g.slice(c+y,A),u.map((function(g){return{xAdvance:g.advanceWidth*t}}))])},glyphIndices:Q.o(i.default,Q.slice(g,I)),attributes:Q.identity})(e)}));I.default=c},function(g,I,e){"use strict";var t=e(31).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=C.curryN(2,(function(g,I){return C.pathOr(g,["glyphIndices",g])(I)}));I.default=Q},function(g,I,e){"use strict";var t=e(31).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)).always({string:"",runs:[]});I.default=C},function(g,I,e){"use strict";var t=e(31).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=C.compose(C.not,C.isEmpty,C.intersection([32]),C.propOr([],"codePoints"));I.default=Q},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(778)),B=Q.curryN(2,(function(g,I){return Q.compose((0,F.default)(g),Q.prop("runs"))(I)}));I.default=B},function(g,I,e){"use strict";var t=e(40).default;I.__esModule=!0,I.default=void 0;var C=t(e(344)),Q=t(e(790)),F=t(e(541)),B=t(e(539)),n=t(e(1566)),U=t(e(1567)),s=t(e(786)),i=t(e(547)),c=t(e(783)),A=t(e(772)),l=t(e(1568)),a=t(e(780)),r=t(e(792)),o=t(e(788)),d=t(e(784)),u=t(e(781)),y=t(e(1570)),b=t(e(345)),Z=t(e(791)),m=t(e(549)),x=t(e(347)),R=t(e(1574)),S=t(e(782)),G=t(e(785)),L=t(e(775)),V={advanceWidth:C.default,advanceWidthBetween:Q.default,append:F.default,ascent:B.default,copy:n.default,descent:U.default,dropLast:s.default,empty:i.default,end:c.default,fromFragments:A.default,glyphWidthAt:l.default,height:a.default,indexAtOffset:r.default,insertGlyph:o.default,leadingOffset:d.default,length:u.default,prepend:y.default,reduce:b.default,runAt:Z.default,runIndexAt:m.default,slice:x.default,sliceAtOffset:R.default,start:S.default,trailingOffset:G.default,trim:L.default};I.default=V},function(g,I,e){"use strict";var t=e(43).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=C.ifElse(C.isNil,C.identity,C.compose(C.join(""),C.juxt([C.compose(C.toUpper,C.head),C.tail]))),F=C.memoizeWith(C.identity,Q);I.default=F},function(g,I,e){"use strict";var t=e(37).default;I.__esModule=!0,I.default=void 0;var C=t(e(104)),Q=function(g,I){var e=g._yogaNode;return e?e.getComputedMargin(I):null},F=function(g){var I=g.style,e=g.box;return{marginTop:Q(g,C.default.EDGE_TOP)||(null===e||void 0===e?void 0:e.marginTop)||(null===I||void 0===I?void 0:I.marginTop)||(null===I||void 0===I?void 0:I.marginVertical)||(null===I||void 0===I?void 0:I.margin)||0,marginRight:Q(g,C.default.EDGE_RIGHT)||(null===e||void 0===e?void 0:e.marginRight)||(null===I||void 0===I?void 0:I.marginRight)||(null===I||void 0===I?void 0:I.marginHorizontal)||(null===I||void 0===I?void 0:I.margin)||0,marginBottom:Q(g,C.default.EDGE_BOTTOM)||(null===e||void 0===e?void 0:e.marginBottom)||(null===I||void 0===I?void 0:I.marginBottom)||(null===I||void 0===I?void 0:I.marginVertical)||(null===I||void 0===I?void 0:I.margin)||0,marginLeft:Q(g,C.default.EDGE_LEFT)||(null===e||void 0===e?void 0:e.marginLeft)||(null===I||void 0===I?void 0:I.marginLeft)||(null===I||void 0===I?void 0:I.marginHorizontal)||(null===I||void 0===I?void 0:I.margin)||0}};I.default=F},function(g,I,e){"use strict";var t=e(37).default,C=e(43).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(104)),B=t(e(551)),n=function(g){return function(I){return Q.tap((function(e){var t=e._yogaNode;if(t){var C=Q.cond([[Q.equals("flex-start"),Q.always(F.default.ALIGN_FLEX_START)],[Q.equals("center"),Q.always(F.default.ALIGN_CENTER)],[Q.equals("flex-end"),Q.always(F.default.ALIGN_FLEX_END)],[Q.equals("stretch"),Q.always(F.default.ALIGN_STRETCH)],[Q.equals("baseline"),Q.always(F.default.ALIGN_BASELINE)],[Q.equals("space-between"),Q.always(F.default.ALIGN_SPACE_BETWEEN)],[Q.equals("space-around"),Q.always(F.default.ALIGN_SPACE_AROUND)],[Q.T,Q.always("items"===g?F.default.ALIGN_STRETCH:F.default.ALIGN_AUTO)]])(I);t["setAlign"+(0,B.default)(g)](C)}}))}};I.default=n},function(g,I,e){"use strict";function t(g){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"==typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g})(g)}Object.defineProperty(I,"__esModule",{value:!0}),I.addClassName=A,I.addEvent=function(g,I,e,t){if(!g)return;var C=n({capture:!0},t);g.addEventListener?g.addEventListener(I,e,C):g.attachEvent?g.attachEvent("on"+I,e):g["on"+I]=e},I.addUserSelectStyles=function(g){if(!g)return;var I=g.getElementById("react-draggable-style-el");I||((I=g.createElement("style")).type="text/css",I.id="react-draggable-style-el",I.innerHTML=".react-draggable-transparent-selection *::-moz-selection {all: inherit;}\n",I.innerHTML+=".react-draggable-transparent-selection *::selection {all: inherit;}\n",g.getElementsByTagName("head")[0].appendChild(I));g.body&&A(g.body,"react-draggable-transparent-selection")},I.createCSSTransform=function(g,I){var e=c(g,I,"px");return U({},(0,Q.browserPrefixToKey)("transform",Q.default),e)},I.createSVGTransform=function(g,I){return c(g,I,"")},I.getTouch=function(g,I){return g.targetTouches&&(0,C.findInArray)(g.targetTouches,(function(g){return I===g.identifier}))||g.changedTouches&&(0,C.findInArray)(g.changedTouches,(function(g){return I===g.identifier}))},I.getTouchIdentifier=function(g){if(g.targetTouches&&g.targetTouches[0])return g.targetTouches[0].identifier;if(g.changedTouches&&g.changedTouches[0])return g.changedTouches[0].identifier},I.getTranslation=c,I.innerHeight=function(g){var I=g.clientHeight,e=g.ownerDocument.defaultView.getComputedStyle(g);return I-=(0,C.int)(e.paddingTop),I-=(0,C.int)(e.paddingBottom)},I.innerWidth=function(g){var I=g.clientWidth,e=g.ownerDocument.defaultView.getComputedStyle(g);return I-=(0,C.int)(e.paddingLeft),I-=(0,C.int)(e.paddingRight)},I.matchesSelector=i,I.matchesSelectorAndParentsTo=function(g,I,e){var t=g;do{if(i(t,I))return!0;if(t===e)return!1;t=t.parentNode}while(t);return!1},I.offsetXYFromParent=function(g,I,e){var t=I===I.ownerDocument.body?{left:0,top:0}:I.getBoundingClientRect(),C=(g.clientX+I.scrollLeft-t.left)/e,Q=(g.clientY+I.scrollTop-t.top)/e;return{x:C,y:Q}},I.outerHeight=function(g){var I=g.clientHeight,e=g.ownerDocument.defaultView.getComputedStyle(g);return I+=(0,C.int)(e.borderTopWidth),I+=(0,C.int)(e.borderBottomWidth)},I.outerWidth=function(g){var I=g.clientWidth,e=g.ownerDocument.defaultView.getComputedStyle(g);return I+=(0,C.int)(e.borderLeftWidth),I+=(0,C.int)(e.borderRightWidth)},I.removeClassName=l,I.removeEvent=function(g,I,e,t){if(!g)return;var C=n({capture:!0},t);g.removeEventListener?g.removeEventListener(I,e,C):g.detachEvent?g.detachEvent("on"+I,e):g["on"+I]=null},I.removeUserSelectStyles=function(g){if(!g)return;try{if(g.body&&l(g.body,"react-draggable-transparent-selection"),g.selection)g.selection.empty();else{var I=(g.defaultView||window).getSelection();I&&"Caret"!==I.type&&I.removeAllRanges()}}catch(e){}};var C=e(420),Q=function(g,I){if(!I&&g&&g.__esModule)return g;if(null===g||"object"!==t(g)&&"function"!==typeof g)return{default:g};var e=F(I);if(e&&e.has(g))return e.get(g);var C={},Q=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var B in g)if("default"!==B&&Object.prototype.hasOwnProperty.call(g,B)){var n=Q?Object.getOwnPropertyDescriptor(g,B):null;n&&(n.get||n.set)?Object.defineProperty(C,B,n):C[B]=g[B]}C.default=g,e&&e.set(g,C);return C}(e(1667));function F(g){if("function"!==typeof WeakMap)return null;var I=new WeakMap,e=new WeakMap;return(F=function(g){return g?e:I})(g)}function B(g,I){var e=Object.keys(g);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(g);I&&(t=t.filter((function(I){return Object.getOwnPropertyDescriptor(g,I).enumerable}))),e.push.apply(e,t)}return e}function n(g){for(var I=1;I<arguments.length;I++){var e=null!=arguments[I]?arguments[I]:{};I%2?B(Object(e),!0).forEach((function(I){U(g,I,e[I])})):Object.getOwnPropertyDescriptors?Object.defineProperties(g,Object.getOwnPropertyDescriptors(e)):B(Object(e)).forEach((function(I){Object.defineProperty(g,I,Object.getOwnPropertyDescriptor(e,I))}))}return g}function U(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}var s="";function i(g,I){return s||(s=(0,C.findInArray)(["matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector"],(function(I){return(0,C.isFunction)(g[I])}))),!!(0,C.isFunction)(g[s])&&g[s](I)}function c(g,I,e){var t=g.x,C=g.y,Q="translate(".concat(t).concat(e,",").concat(C).concat(e,")");if(I){var F="".concat("string"===typeof I.x?I.x:I.x+e),B="".concat("string"===typeof I.y?I.y:I.y+e);Q="translate(".concat(F,", ").concat(B,")")+Q}return Q}function A(g,I){g.classList?g.classList.add(I):g.className.match(new RegExp("(?:^|\\s)".concat(I,"(?!\\S)")))||(g.className+=" ".concat(I))}function l(g,I){g.classList?g.classList.remove(I):g.className=g.className.replace(new RegExp("(?:^|\\s)".concat(I,"(?!\\S)"),"g"),"")}},,function(g,I,e){"use strict";e.d(I,"a",(function(){return F}));var t=e(5),C=e(181);function Q(g){return g&&"object"===Object(C.a)(g)&&g.constructor===Object}function F(g,I){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{clone:!0},C=e.clone?Object(t.a)({},g):g;return Q(g)&&Q(I)&&Object.keys(I).forEach((function(t){"__proto__"!==t&&(Q(I[t])&&t in g?C[t]=F(g[t],I[t],e):C[t]=I[t])})),C}},function(g,I,e){"use strict";e.r(I);var t=e(0),C=e.n(t),Q=e(570),F=e.n(Q),B=e(4),n=e.n(B),U=e(817),s=e.n(U);function i(g){var I=[];return{on:function(g){I.push(g)},off:function(g){I=I.filter((function(I){return I!==g}))},get:function(){return g},set:function(e,t){g=e,I.forEach((function(I){return I(g,t)}))}}}var c=C.a.createContext||function(g,I){var e,C,Q="__create-react-context-"+s()()+"__",B=function(g){function e(){var I;return(I=g.apply(this,arguments)||this).emitter=i(I.props.value),I}F()(e,g);var t=e.prototype;return t.getChildContext=function(){var g;return(g={})[Q]=this.emitter,g},t.componentWillReceiveProps=function(g){if(this.props.value!==g.value){var e,t=this.props.value,C=g.value;((Q=t)===(F=C)?0!==Q||1/Q===1/F:Q!==Q&&F!==F)?e=0:(e="function"===typeof I?I(t,C):1073741823,0!==(e|=0)&&this.emitter.set(g.value,e))}var Q,F},t.render=function(){return this.props.children},e}(t.Component);B.childContextTypes=((e={})[Q]=n.a.object.isRequired,e);var U=function(I){function e(){var g;return(g=I.apply(this,arguments)||this).state={value:g.getValue()},g.onUpdate=function(I,e){0!==((0|g.observedBits)&e)&&g.setState({value:g.getValue()})},g}F()(e,I);var t=e.prototype;return t.componentWillReceiveProps=function(g){var I=g.observedBits;this.observedBits=void 0===I||null===I?1073741823:I},t.componentDidMount=function(){this.context[Q]&&this.context[Q].on(this.onUpdate);var g=this.props.observedBits;this.observedBits=void 0===g||null===g?1073741823:g},t.componentWillUnmount=function(){this.context[Q]&&this.context[Q].off(this.onUpdate)},t.getValue=function(){return this.context[Q]?this.context[Q].get():g},t.render=function(){return(g=this.props.children,Array.isArray(g)?g[0]:g)(this.state.value);var g},e}(t.Component);return U.contextTypes=((C={})[Q]=n.a.object,C),{Provider:B,Consumer:U}};I.default=c},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(4),e(42)),B=e(183),n=e(473),U=e(49),s=e(77),i=e(87),c=e(120);function A(g,I){var e=function(g,I){var e,t=I.getBoundingClientRect();if(I.fakeTransform)e=I.fakeTransform;else{var C=window.getComputedStyle(I);e=C.getPropertyValue("-webkit-transform")||C.getPropertyValue("transform")}var Q=0,F=0;if(e&&"none"!==e&&"string"===typeof e){var B=e.split("(")[1].split(")")[0].split(",");Q=parseInt(B[4],10),F=parseInt(B[5],10)}return"left"===g?"translateX(".concat(window.innerWidth,"px) translateX(").concat(Q-t.left,"px)"):"right"===g?"translateX(-".concat(t.left+t.width-Q,"px)"):"up"===g?"translateY(".concat(window.innerHeight,"px) translateY(").concat(F-t.top,"px)"):"translateY(-".concat(t.top+t.height-F,"px)")}(g,I);e&&(I.style.webkitTransform=e,I.style.transform=e)}var l={enter:i.b.enteringScreen,exit:i.b.leavingScreen},a=Q.forwardRef((function(g,I){var e=g.children,i=g.direction,a=void 0===i?"down":i,r=g.in,o=g.onEnter,d=g.onEntered,u=g.onEntering,y=g.onExit,b=g.onExited,Z=g.onExiting,m=g.style,x=g.timeout,R=void 0===x?l:x,S=g.TransitionComponent,G=void 0===S?n.a:S,L=Object(C.a)(g,["children","direction","in","onEnter","onEntered","onEntering","onExit","onExited","onExiting","style","timeout","TransitionComponent"]),V=Object(s.a)(),h=Q.useRef(null),D=Q.useCallback((function(g){h.current=F.findDOMNode(g)}),[]),p=Object(U.a)(e.ref,D),E=Object(U.a)(p,I),N=function(g){return function(I){g&&(void 0===I?g(h.current):g(h.current,I))}},W=N((function(g,I){A(a,g),Object(c.b)(g),o&&o(g,I)})),f=N((function(g,I){var e=Object(c.a)({timeout:R,style:m},{mode:"enter"});g.style.webkitTransition=V.transitions.create("-webkit-transform",Object(t.a)({},e,{easing:V.transitions.easing.easeOut})),g.style.transition=V.transitions.create("transform",Object(t.a)({},e,{easing:V.transitions.easing.easeOut})),g.style.webkitTransform="none",g.style.transform="none",u&&u(g,I)})),X=N(d),J=N(Z),v=N((function(g){var I=Object(c.a)({timeout:R,style:m},{mode:"exit"});g.style.webkitTransition=V.transitions.create("-webkit-transform",Object(t.a)({},I,{easing:V.transitions.easing.sharp})),g.style.transition=V.transitions.create("transform",Object(t.a)({},I,{easing:V.transitions.easing.sharp})),A(a,g),y&&y(g)})),k=N((function(g){g.style.webkitTransition="",g.style.transition="",b&&b(g)})),H=Q.useCallback((function(){h.current&&A(a,h.current)}),[a]);return Q.useEffect((function(){if(!r&&"down"!==a&&"right"!==a){var g=Object(B.a)((function(){h.current&&A(a,h.current)}));return window.addEventListener("resize",g),function(){g.clear(),window.removeEventListener("resize",g)}}}),[a,r]),Q.useEffect((function(){r||H()}),[r,H]),Q.createElement(G,Object(t.a)({nodeRef:h,onEnter:W,onEntered:X,onEntering:f,onExit:v,onExited:k,onExiting:J,appear:!0,in:r,timeout:R},L),(function(g,I){return Q.cloneElement(e,Object(t.a)({ref:E,style:Object(t.a)({visibility:"exited"!==g||r?void 0:"hidden"},m,e.props.style)},I))}))}));I.a=a},function(g,I,e){!function(){"use strict";g.exports=function(g,I){var e,t,C,Q,F,B,n,U,s,i,c,A=0,l=g.length,a="",r=!0,o=!1;function d(g){return" "===g||"\n"===g||"\t"===g||"\r"===g||"\f"===g}function u(g){return"'"===g||'"'===g}function y(g){return C>="a"&&C<="z"||C>="A"&&C<="Z"||C>="0"&&C<="9"||"-_*.:#[]".indexOf(g)>=0}function b(){var g;for(g=U;g>0;g-=1)a+=e.indent}function Z(){a=c(a),r?a+=" {":(a+="\n",b(),a+="{"),"\n"!==Q&&(a+="\n"),U+=1}function m(){var g;U-=1,(a=c(a)).length>0&&o&&";"!==(g=a.charAt(a.length-1))&&"{"!==g&&(a+=";"),a+="\n",b(),a+="}",t.push(a),a=""}for("undefined"===typeof(e=arguments.length>1?I:{}).indent&&(e.indent="    "),"string"===typeof e.openbrace&&(r="end-of-line"===e.openbrace),"boolean"===typeof e.autosemicolon&&(o=e.autosemicolon),c=String.prototype.trimRight?function(g){return g.trimRight()}:function(g){return g.replace(/\s+$/,"")},U=0,B=(n={Start:0,AtRule:1,Block:2,Selector:3,Ruleset:4,Property:5,Separator:6,Expression:7,URL:8}).Start,i=!1,t=[],g=g.replace(/\r\n/g,"\n");A<l;)if(C=g.charAt(A),Q=g.charAt(A+1),A+=1,u(s))a+=C,C===s&&(s=null),"\\"===C&&Q===s&&(a+=Q,A+=1);else if(u(C))a+=C,s=C;else if(i)a+=C,"*"===C&&"/"===Q&&(i=!1,a+=Q,A+=1);else if("/"!==C||"*"!==Q){if(B===n.Start){if(0===t.length&&d(C)&&0===a.length)continue;if(C<=" "||C.charCodeAt(0)>=128){B=n.Start,a+=C;continue}if(y(C)||"@"===C){if(0===(F=c(a)).length)t.length>0&&(a="\n\n");else if("}"===F.charAt(F.length-1)||";"===F.charAt(F.length-1))a=F+"\n\n";else for(;" "===(Q=a.charAt(a.length-1))||9===Q.charCodeAt(0);)a=a.substr(0,a.length-1);a+=C,B="@"===C?n.AtRule:n.Selector;continue}}if(B!==n.AtRule)if(B!==n.Block)if(B!==n.Selector)if(B!==n.Ruleset)if(B!==n.Property)if(B!==n.Separator)if(B!==n.Expression)B===n.URL&&")"===C&&a.charAt(a.length-1!=="\\")?(a+=C,B=n.Expression):a+=C;else{if("}"===C){m(),B=n.Start,U>0&&(B=n.Block);continue}if(";"===C){a=c(a),a+=";\n",B=n.Ruleset;continue}if(a+=C,"("===C&&"l"===a.charAt(a.length-2)&&"r"===a.charAt(a.length-3)&&"u"===a.charAt(a.length-4)){B=n.URL;continue}}else{if(!d(C)){a+=C,B=n.Expression;continue}u(Q)&&(B=n.Expression)}else{if(":"===C){a=c(a),a+=": ",B=n.Expression,d(Q)&&(B=n.Separator);continue}if("}"===C){m(),B=n.Start,U>0&&(B=n.Block);continue}a+=C}else{if("}"===C){m(),B=n.Start,U>0&&(B=n.Block);continue}if("\n"===C){a=c(a),a+="\n";continue}if(!d(C)){a=c(a),a+="\n",b(),a+=C,B=n.Property;continue}a+=C}else{if("{"===C){Z(),B=n.Ruleset;continue}if("}"===C){m(),B=n.Start;continue}a+=C}else{if(y(C)){if(0===(F=c(a)).length)t.length>0&&(a="\n\n");else if("}"===F.charAt(F.length-1))a=F+"\n\n";else for(;" "===(Q=a.charAt(a.length-1))||9===Q.charCodeAt(0);)a=a.substr(0,a.length-1);b(),a+=C,B=n.Selector;continue}if("}"===C){m(),B=n.Start;continue}a+=C}else{if(";"===C){a+=C,B=n.Start;continue}if("{"===C){F=c(a),Z(),B="@font-face"===F?n.Ruleset:n.Block;continue}a+=C}}else i=!0,a+=C,a+=Q,A+=1;return a=t.join("")+a}}()},function(g,I,e){g.exports=function g(I){"use strict";var e=/^\0+/g,t=/[\0\r\f]/g,C=/: */g,Q=/zoo|gra/,F=/([,: ])(transform)/g,B=/,+\s*(?![^(]*[)])/g,n=/ +\s*(?![^(]*[)])/g,U=/ *[\0] */g,s=/,\r+?/g,i=/([\t\r\n ])*\f?&/g,c=/:global\(((?:[^\(\)\[\]]*|\[.*\]|\([^\(\)]*\))*)\)/g,A=/\W+/g,l=/@(k\w+)\s*(\S*)\s*/,a=/::(place)/g,r=/:(read-only)/g,o=/\s+(?=[{\];=:>])/g,d=/([[}=:>])\s+/g,u=/(\{[^{]+?);(?=\})/g,y=/\s{2,}/g,b=/([^\(])(:+) */g,Z=/[svh]\w+-[tblr]{2}/,m=/\(\s*(.*)\s*\)/g,x=/([\s\S]*?);/g,R=/-self|flex-/g,S=/[^]*?(:[rp][el]a[\w-]+)[^]*/,G=/stretch|:\s*\w+\-(?:conte|avail)/,L=/([^-])(image-set\()/,V="-webkit-",h="-moz-",D="-ms-",p=1,E=1,N=0,W=1,f=1,X=1,J=0,v=0,k=0,H=[],M=[],Y=0,w=null,T=0,z=1,O="",K="",j="";function P(g,I,C,Q,F){for(var B,n,s=0,i=0,c=0,A=0,o=0,d=0,u=0,y=0,Z=0,x=0,R=0,S=0,G=0,L=0,h=0,D=0,J=0,M=0,w=0,q=C.length,Cg=q-1,Qg="",Fg="",Bg="",ng="",Ug="",sg="";h<q;){if(u=C.charCodeAt(h),h===Cg&&i+A+c+s!==0&&(0!==i&&(u=47===i?10:47),A=c=s=0,q++,Cg++),i+A+c+s===0){if(h===Cg&&(D>0&&(Fg=Fg.replace(t,"")),Fg.trim().length>0)){switch(u){case 32:case 9:case 59:case 13:case 10:break;default:Fg+=C.charAt(h)}u=59}if(1===J)switch(u){case 123:case 125:case 59:case 34:case 39:case 40:case 41:case 44:J=0;case 9:case 13:case 10:case 32:break;default:for(J=0,w=h,o=u,h--,u=59;w<q;)switch(C.charCodeAt(w++)){case 10:case 13:case 59:++h,u=o,w=q;break;case 58:D>0&&(++h,u=o);case 123:w=q}}switch(u){case 123:for(o=(Fg=Fg.trim()).charCodeAt(0),R=1,w=++h;h<q;){switch(u=C.charCodeAt(h)){case 123:R++;break;case 125:R--;break;case 47:switch(d=C.charCodeAt(h+1)){case 42:case 47:h=tg(d,h,Cg,C)}break;case 91:u++;case 40:u++;case 34:case 39:for(;h++<Cg&&C.charCodeAt(h)!==u;);}if(0===R)break;h++}switch(Bg=C.substring(w,h),0===o&&(o=(Fg=Fg.replace(e,"").trim()).charCodeAt(0)),o){case 64:switch(D>0&&(Fg=Fg.replace(t,"")),d=Fg.charCodeAt(1)){case 100:case 109:case 115:case 45:B=I;break;default:B=H}if(w=(Bg=P(I,B,Bg,d,F+1)).length,k>0&&0===w&&(w=Fg.length),Y>0&&(n=eg(3,Bg,B=_(H,Fg,M),I,E,p,w,d,F,Q),Fg=B.join(""),void 0!==n&&0===(w=(Bg=n.trim()).length)&&(d=0,Bg="")),w>0)switch(d){case 115:Fg=Fg.replace(m,Ig);case 100:case 109:case 45:Bg=Fg+"{"+Bg+"}";break;case 107:Bg=(Fg=Fg.replace(l,"$1 $2"+(z>0?O:"")))+"{"+Bg+"}",Bg=1===f||2===f&&gg("@"+Bg,3)?"@"+V+Bg+"@"+Bg:"@"+Bg;break;default:Bg=Fg+Bg,112===Q&&(ng+=Bg,Bg="")}else Bg="";break;default:Bg=P(I,_(I,Fg,M),Bg,Q,F+1)}Ug+=Bg,S=0,J=0,L=0,D=0,M=0,G=0,Fg="",Bg="",u=C.charCodeAt(++h);break;case 125:case 59:if((w=(Fg=(D>0?Fg.replace(t,""):Fg).trim()).length)>1)switch(0===L&&(45===(o=Fg.charCodeAt(0))||o>96&&o<123)&&(w=(Fg=Fg.replace(" ",":")).length),Y>0&&void 0!==(n=eg(1,Fg,I,g,E,p,ng.length,Q,F,Q))&&0===(w=(Fg=n.trim()).length)&&(Fg="\0\0"),o=Fg.charCodeAt(0),d=Fg.charCodeAt(1),o){case 0:break;case 64:if(105===d||99===d){sg+=Fg+C.charAt(h);break}default:if(58===Fg.charCodeAt(w-1))break;ng+=$(Fg,o,d,Fg.charCodeAt(2))}S=0,J=0,L=0,D=0,M=0,Fg="",u=C.charCodeAt(++h)}}switch(u){case 13:case 10:if(i+A+c+s+v===0)switch(x){case 41:case 39:case 34:case 64:case 126:case 62:case 42:case 43:case 47:case 45:case 58:case 44:case 59:case 123:case 125:break;default:L>0&&(J=1)}47===i?i=0:W+S===0&&107!==Q&&Fg.length>0&&(D=1,Fg+="\0"),Y*T>0&&eg(0,Fg,I,g,E,p,ng.length,Q,F,Q),p=1,E++;break;case 59:case 125:if(i+A+c+s===0){p++;break}default:switch(p++,Qg=C.charAt(h),u){case 9:case 32:if(A+s+i===0)switch(y){case 44:case 58:case 9:case 32:Qg="";break;default:32!==u&&(Qg=" ")}break;case 0:Qg="\\0";break;case 12:Qg="\\f";break;case 11:Qg="\\v";break;case 38:A+i+s===0&&W>0&&(M=1,D=1,Qg="\f"+Qg);break;case 108:if(A+i+s+N===0&&L>0)switch(h-L){case 2:112===y&&58===C.charCodeAt(h-3)&&(N=y);case 8:111===Z&&(N=Z)}break;case 58:A+i+s===0&&(L=h);break;case 44:i+c+A+s===0&&(D=1,Qg+="\r");break;case 34:case 39:0===i&&(A=A===u?0:0===A?u:A);break;case 91:A+i+c===0&&s++;break;case 93:A+i+c===0&&s--;break;case 41:A+i+s===0&&c--;break;case 40:if(A+i+s===0){if(0===S)switch(2*y+3*Z){case 533:break;default:R=0,S=1}c++}break;case 64:i+c+A+s+L+G===0&&(G=1);break;case 42:case 47:if(A+s+c>0)break;switch(i){case 0:switch(2*u+3*C.charCodeAt(h+1)){case 235:i=47;break;case 220:w=h,i=42}break;case 42:47===u&&42===y&&w+2!==h&&(33===C.charCodeAt(w+2)&&(ng+=C.substring(w,h+1)),Qg="",i=0)}}if(0===i){if(W+A+s+G===0&&107!==Q&&59!==u)switch(u){case 44:case 126:case 62:case 43:case 41:case 40:if(0===S){switch(y){case 9:case 32:case 10:case 13:Qg+="\0";break;default:Qg="\0"+Qg+(44===u?"":"\0")}D=1}else switch(u){case 40:L+7===h&&108===y&&(L=0),S=++R;break;case 41:0===(S=--R)&&(D=1,Qg+="\0")}break;case 9:case 32:switch(y){case 0:case 123:case 125:case 59:case 44:case 12:case 9:case 32:case 10:case 13:break;default:0===S&&(D=1,Qg+="\0")}}Fg+=Qg,32!==u&&9!==u&&(x=u)}}Z=y,y=u,h++}if(w=ng.length,k>0&&0===w&&0===Ug.length&&0===I[0].length===!1&&(109!==Q||1===I.length&&(W>0?K:j)===I[0])&&(w=I.join(",").length+2),w>0){if(B=0===W&&107!==Q?function(g){for(var I,e,C=0,Q=g.length,F=Array(Q);C<Q;++C){for(var B=g[C].split(U),n="",s=0,i=0,c=0,A=0,l=B.length;s<l;++s)if(!(0===(i=(e=B[s]).length)&&l>1)){if(c=n.charCodeAt(n.length-1),A=e.charCodeAt(0),I="",0!==s)switch(c){case 42:case 126:case 62:case 43:case 32:case 40:break;default:I=" "}switch(A){case 38:e=I+K;case 126:case 62:case 43:case 32:case 41:case 40:break;case 91:e=I+e+K;break;case 58:switch(2*e.charCodeAt(1)+3*e.charCodeAt(2)){case 530:if(X>0){e=I+e.substring(8,i-1);break}default:(s<1||B[s-1].length<1)&&(e=I+K+e)}break;case 44:I="";default:e=i>1&&e.indexOf(":")>0?I+e.replace(b,"$1"+K+"$2"):I+e+K}n+=e}F[C]=n.replace(t,"").trim()}return F}(I):I,Y>0&&void 0!==(n=eg(2,ng,B,g,E,p,w,Q,F,Q))&&0===(ng=n).length)return sg+ng+Ug;if(ng=B.join(",")+"{"+ng+"}",f*N!==0){switch(2!==f||gg(ng,2)||(N=0),N){case 111:ng=ng.replace(r,":-moz-$1")+ng;break;case 112:ng=ng.replace(a,"::"+V+"input-$1")+ng.replace(a,"::-moz-$1")+ng.replace(a,":-ms-input-$1")+ng}N=0}}return sg+ng+Ug}function _(g,I,e){var t=I.trim().split(s),C=t,Q=t.length,F=g.length;switch(F){case 0:case 1:for(var B=0,n=0===F?"":g[0]+" ";B<Q;++B)C[B]=q(n,C[B],e,F).trim();break;default:B=0;var U=0;for(C=[];B<Q;++B)for(var i=0;i<F;++i)C[U++]=q(g[i]+" ",t[B],e,F).trim()}return C}function q(g,I,e,t){var C=I,Q=C.charCodeAt(0);switch(Q<33&&(Q=(C=C.trim()).charCodeAt(0)),Q){case 38:switch(W+t){case 0:case 1:if(0===g.trim().length)break;default:return C.replace(i,"$1"+g.trim())}break;case 58:switch(C.charCodeAt(1)){case 103:if(X>0&&W>0)return C.replace(c,"$1").replace(i,"$1"+j);break;default:return g.trim()+C.replace(i,"$1"+g.trim())}default:if(e*W>0&&C.indexOf("\f")>0)return C.replace(i,(58===g.charCodeAt(0)?"":"$1")+g.trim())}return g+C}function $(g,I,e,t){var U,s=0,i=g+";",c=2*I+3*e+4*t;if(944===c)return function(g){var I=g.length,e=g.indexOf(":",9)+1,t=g.substring(0,e).trim(),C=g.substring(e,I-1).trim();switch(g.charCodeAt(9)*z){case 0:break;case 45:if(110!==g.charCodeAt(10))break;default:var Q=C.split((C="",B)),F=0;for(e=0,I=Q.length;F<I;e=0,++F){for(var U=Q[F],s=U.split(n);U=s[e];){var i=U.charCodeAt(0);if(1===z&&(i>64&&i<90||i>96&&i<123||95===i||45===i&&45!==U.charCodeAt(1)))switch(isNaN(parseFloat(U))+(-1!==U.indexOf("("))){case 1:switch(U){case"infinite":case"alternate":case"backwards":case"running":case"normal":case"forwards":case"both":case"none":case"linear":case"ease":case"ease-in":case"ease-out":case"ease-in-out":case"paused":case"reverse":case"alternate-reverse":case"inherit":case"initial":case"unset":case"step-start":case"step-end":break;default:U+=O}}s[e++]=U}C+=(0===F?"":",")+s.join(" ")}}return C=t+C+";",1===f||2===f&&gg(C,1)?V+C+C:C}(i);if(0===f||2===f&&!gg(i,1))return i;switch(c){case 1015:return 97===i.charCodeAt(10)?V+i+i:i;case 951:return 116===i.charCodeAt(3)?V+i+i:i;case 963:return 110===i.charCodeAt(5)?V+i+i:i;case 1009:if(100!==i.charCodeAt(4))break;case 969:case 942:return V+i+i;case 978:return V+i+h+i+i;case 1019:case 983:return V+i+h+i+D+i+i;case 883:return 45===i.charCodeAt(8)?V+i+i:i.indexOf("image-set(",11)>0?i.replace(L,"$1"+V+"$2")+i:i;case 932:if(45===i.charCodeAt(4))switch(i.charCodeAt(5)){case 103:return V+"box-"+i.replace("-grow","")+V+i+D+i.replace("grow","positive")+i;case 115:return V+i+D+i.replace("shrink","negative")+i;case 98:return V+i+D+i.replace("basis","preferred-size")+i}return V+i+D+i+i;case 964:return V+i+D+"flex-"+i+i;case 1023:if(99!==i.charCodeAt(8))break;return U=i.substring(i.indexOf(":",15)).replace("flex-","").replace("space-between","justify"),V+"box-pack"+U+V+i+D+"flex-pack"+U+i;case 1005:return Q.test(i)?i.replace(C,":"+V)+i.replace(C,":"+h)+i:i;case 1e3:switch(s=(U=i.substring(13).trim()).indexOf("-")+1,U.charCodeAt(0)+U.charCodeAt(s)){case 226:U=i.replace(Z,"tb");break;case 232:U=i.replace(Z,"tb-rl");break;case 220:U=i.replace(Z,"lr");break;default:return i}return V+i+D+U+i;case 1017:if(-1===i.indexOf("sticky",9))return i;case 975:switch(s=(i=g).length-10,c=(U=(33===i.charCodeAt(s)?i.substring(0,s):i).substring(g.indexOf(":",7)+1).trim()).charCodeAt(0)+(0|U.charCodeAt(7))){case 203:if(U.charCodeAt(8)<111)break;case 115:i=i.replace(U,V+U)+";"+i;break;case 207:case 102:i=i.replace(U,V+(c>102?"inline-":"")+"box")+";"+i.replace(U,V+U)+";"+i.replace(U,D+U+"box")+";"+i}return i+";";case 938:if(45===i.charCodeAt(5))switch(i.charCodeAt(6)){case 105:return U=i.replace("-items",""),V+i+V+"box-"+U+D+"flex-"+U+i;case 115:return V+i+D+"flex-item-"+i.replace(R,"")+i;default:return V+i+D+"flex-line-pack"+i.replace("align-content","").replace(R,"")+i}break;case 973:case 989:if(45!==i.charCodeAt(3)||122===i.charCodeAt(4))break;case 931:case 953:if(!0===G.test(g))return 115===(U=g.substring(g.indexOf(":")+1)).charCodeAt(0)?$(g.replace("stretch","fill-available"),I,e,t).replace(":fill-available",":stretch"):i.replace(U,V+U)+i.replace(U,h+U.replace("fill-",""))+i;break;case 962:if(i=V+i+(102===i.charCodeAt(5)?D+i:"")+i,e+t===211&&105===i.charCodeAt(13)&&i.indexOf("transform",10)>0)return i.substring(0,i.indexOf(";",27)+1).replace(F,"$1"+V+"$2")+i}return i}function gg(g,I){var e=g.indexOf(1===I?":":"{"),t=g.substring(0,3!==I?e:10),C=g.substring(e+1,g.length-1);return w(2!==I?t:t.replace(S,"$1"),C,I)}function Ig(g,I){var e=$(I,I.charCodeAt(0),I.charCodeAt(1),I.charCodeAt(2));return e!==I+";"?e.replace(x," or ($1)").substring(4):"("+I+")"}function eg(g,I,e,t,C,Q,F,B,n,U){for(var s,i=0,c=I;i<Y;++i)switch(s=M[i].call(Qg,g,c,e,t,C,Q,F,B,n,U)){case void 0:case!1:case!0:case null:break;default:c=s}if(c!==I)return c}function tg(g,I,e,t){for(var C=I+1;C<e;++C)switch(t.charCodeAt(C)){case 47:if(42===g&&42===t.charCodeAt(C-1)&&I+2!==C)return C+1;break;case 10:if(47===g)return C+1}return C}function Cg(g){for(var I in g){var e=g[I];switch(I){case"keyframe":z=0|e;break;case"global":X=0|e;break;case"cascade":W=0|e;break;case"compress":J=0|e;break;case"semicolon":v=0|e;break;case"preserve":k=0|e;break;case"prefix":w=null,e?"function"!==typeof e?f=1:(f=2,w=e):f=0}}return Cg}function Qg(I,e){if(void 0!==this&&this.constructor===Qg)return g(I);var C=I,Q=C.charCodeAt(0);Q<33&&(Q=(C=C.trim()).charCodeAt(0)),z>0&&(O=C.replace(A,91===Q?"":"-")),Q=1,1===W?j=C:K=C;var F,B=[j];Y>0&&void 0!==(F=eg(-1,e,B,B,E,p,0,0,0,0))&&"string"===typeof F&&(e=F);var n=P(H,B,e,0,0);return Y>0&&void 0!==(F=eg(-2,n,B,B,E,p,n.length,0,0,0))&&"string"!==typeof(n=F)&&(Q=0),O="",j="",K="",N=0,E=1,p=1,J*Q===0?n:function(g){return g.replace(t,"").replace(o,"").replace(d,"$1").replace(u,"$1").replace(y," ")}(n)}return Qg.use=function g(I){switch(I){case void 0:case null:Y=M.length=0;break;default:if("function"===typeof I)M[Y++]=I;else if("object"===typeof I)for(var e=0,t=I.length;e<t;++e)g(I[e]);else T=0|!!I}return g},Qg.set=Cg,void 0!==I&&Cg(I),Qg}(null)},function(g,I,e){"use strict";var t=e(168),C=e(5),Q=(e(4),e(239));I.a=function(g){var I=function(I){var e=g(I);return I.css?Object(C.a)(Object(C.a)({},Object(Q.a)(e,g(Object(C.a)({theme:I.theme},I.css)))),function(g,I){var e={};return Object.keys(g).forEach((function(t){-1===I.indexOf(t)&&(e[t]=g[t])})),e}(I.css,[g.filterProps])):e};return I.propTypes={},I.filterProps=["css"].concat(Object(t.a)(g.filterProps)),I}},function(g,I,e){"use strict";var t=e(34),C=e(105),Q=Object(t.a)({prop:"displayPrint",cssProperty:!1,transform:function(g){return{"@media print":{display:g}}}}),F=Object(t.a)({prop:"display"}),B=Object(t.a)({prop:"overflow"}),n=Object(t.a)({prop:"textOverflow"}),U=Object(t.a)({prop:"visibility"}),s=Object(t.a)({prop:"whiteSpace"});I.a=Object(C.a)(Q,F,B,n,U,s)},function(g,I,e){"use strict";var t=e(34),C=Object(t.a)({prop:"boxShadow",themeKey:"shadows"});I.a=C},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M11 9H9V2H7v7H5V2H3v7c0 2.12 1.66 3.84 3.75 3.97V22h2.5v-9.03C11.34 12.84 13 11.12 13 9V2h-2v7zm5-3v8h2.5v8H21V2c-2.76 0-5 2.24-5 4z"}),"Restaurant");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 17h-2v-2h2v2zm2.07-7.75l-.9.92C13.45 12.9 13 13.5 13 15h-2v-.5c0-1.1.45-2.1 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41 0-1.1-.9-2-2-2s-2 .9-2 2H8c0-2.21 1.79-4 4-4s4 1.79 4 4c0 .88-.36 1.68-.93 2.25z"}),"Help");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M10.02 6L8.61 7.41 13.19 12l-4.58 4.59L10.02 18l6-6-6-6z"}),"NavigateNextOutlined");I.default=Q},function(g,I){var e="undefined"!==typeof self?self:this,t=function(){function g(){this.fetch=!1,this.DOMException=e.DOMException}return g.prototype=e,new g}();!function(g){!function(I){var e="URLSearchParams"in g,t="Symbol"in g&&"iterator"in Symbol,C="FileReader"in g&&"Blob"in g&&function(){try{return new Blob,!0}catch(g){return!1}}(),Q="FormData"in g,F="ArrayBuffer"in g;if(F)var B=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],n=ArrayBuffer.isView||function(g){return g&&B.indexOf(Object.prototype.toString.call(g))>-1};function U(g){if("string"!==typeof g&&(g=String(g)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(g))throw new TypeError("Invalid character in header field name");return g.toLowerCase()}function s(g){return"string"!==typeof g&&(g=String(g)),g}function i(g){var I={next:function(){var I=g.shift();return{done:void 0===I,value:I}}};return t&&(I[Symbol.iterator]=function(){return I}),I}function c(g){this.map={},g instanceof c?g.forEach((function(g,I){this.append(I,g)}),this):Array.isArray(g)?g.forEach((function(g){this.append(g[0],g[1])}),this):g&&Object.getOwnPropertyNames(g).forEach((function(I){this.append(I,g[I])}),this)}function A(g){if(g.bodyUsed)return Promise.reject(new TypeError("Already read"));g.bodyUsed=!0}function l(g){return new Promise((function(I,e){g.onload=function(){I(g.result)},g.onerror=function(){e(g.error)}}))}function a(g){var I=new FileReader,e=l(I);return I.readAsArrayBuffer(g),e}function r(g){if(g.slice)return g.slice(0);var I=new Uint8Array(g.byteLength);return I.set(new Uint8Array(g)),I.buffer}function o(){return this.bodyUsed=!1,this._initBody=function(g){var I;this._bodyInit=g,g?"string"===typeof g?this._bodyText=g:C&&Blob.prototype.isPrototypeOf(g)?this._bodyBlob=g:Q&&FormData.prototype.isPrototypeOf(g)?this._bodyFormData=g:e&&URLSearchParams.prototype.isPrototypeOf(g)?this._bodyText=g.toString():F&&C&&((I=g)&&DataView.prototype.isPrototypeOf(I))?(this._bodyArrayBuffer=r(g.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):F&&(ArrayBuffer.prototype.isPrototypeOf(g)||n(g))?this._bodyArrayBuffer=r(g):this._bodyText=g=Object.prototype.toString.call(g):this._bodyText="",this.headers.get("content-type")||("string"===typeof g?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):e&&URLSearchParams.prototype.isPrototypeOf(g)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},C&&(this.blob=function(){var g=A(this);if(g)return g;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?A(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(a)}),this.text=function(){var g=A(this);if(g)return g;if(this._bodyBlob)return function(g){var I=new FileReader,e=l(I);return I.readAsText(g),e}(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(function(g){for(var I=new Uint8Array(g),e=new Array(I.length),t=0;t<I.length;t++)e[t]=String.fromCharCode(I[t]);return e.join("")}(this._bodyArrayBuffer));if(this._bodyFormData)throw new Error("could not read FormData body as text");return Promise.resolve(this._bodyText)},Q&&(this.formData=function(){return this.text().then(y)}),this.json=function(){return this.text().then(JSON.parse)},this}c.prototype.append=function(g,I){g=U(g),I=s(I);var e=this.map[g];this.map[g]=e?e+", "+I:I},c.prototype.delete=function(g){delete this.map[U(g)]},c.prototype.get=function(g){return g=U(g),this.has(g)?this.map[g]:null},c.prototype.has=function(g){return this.map.hasOwnProperty(U(g))},c.prototype.set=function(g,I){this.map[U(g)]=s(I)},c.prototype.forEach=function(g,I){for(var e in this.map)this.map.hasOwnProperty(e)&&g.call(I,this.map[e],e,this)},c.prototype.keys=function(){var g=[];return this.forEach((function(I,e){g.push(e)})),i(g)},c.prototype.values=function(){var g=[];return this.forEach((function(I){g.push(I)})),i(g)},c.prototype.entries=function(){var g=[];return this.forEach((function(I,e){g.push([e,I])})),i(g)},t&&(c.prototype[Symbol.iterator]=c.prototype.entries);var d=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];function u(g,I){var e=(I=I||{}).body;if(g instanceof u){if(g.bodyUsed)throw new TypeError("Already read");this.url=g.url,this.credentials=g.credentials,I.headers||(this.headers=new c(g.headers)),this.method=g.method,this.mode=g.mode,this.signal=g.signal,e||null==g._bodyInit||(e=g._bodyInit,g.bodyUsed=!0)}else this.url=String(g);if(this.credentials=I.credentials||this.credentials||"same-origin",!I.headers&&this.headers||(this.headers=new c(I.headers)),this.method=function(g){var I=g.toUpperCase();return d.indexOf(I)>-1?I:g}(I.method||this.method||"GET"),this.mode=I.mode||this.mode||null,this.signal=I.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&e)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(e)}function y(g){var I=new FormData;return g.trim().split("&").forEach((function(g){if(g){var e=g.split("="),t=e.shift().replace(/\+/g," "),C=e.join("=").replace(/\+/g," ");I.append(decodeURIComponent(t),decodeURIComponent(C))}})),I}function b(g){var I=new c;return g.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach((function(g){var e=g.split(":"),t=e.shift().trim();if(t){var C=e.join(":").trim();I.append(t,C)}})),I}function Z(g,I){I||(I={}),this.type="default",this.status=void 0===I.status?200:I.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in I?I.statusText:"OK",this.headers=new c(I.headers),this.url=I.url||"",this._initBody(g)}u.prototype.clone=function(){return new u(this,{body:this._bodyInit})},o.call(u.prototype),o.call(Z.prototype),Z.prototype.clone=function(){return new Z(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new c(this.headers),url:this.url})},Z.error=function(){var g=new Z(null,{status:0,statusText:""});return g.type="error",g};var m=[301,302,303,307,308];Z.redirect=function(g,I){if(-1===m.indexOf(I))throw new RangeError("Invalid status code");return new Z(null,{status:I,headers:{location:g}})},I.DOMException=g.DOMException;try{new I.DOMException}catch(R){I.DOMException=function(g,I){this.message=g,this.name=I;var e=Error(g);this.stack=e.stack},I.DOMException.prototype=Object.create(Error.prototype),I.DOMException.prototype.constructor=I.DOMException}function x(g,e){return new Promise((function(t,Q){var F=new u(g,e);if(F.signal&&F.signal.aborted)return Q(new I.DOMException("Aborted","AbortError"));var B=new XMLHttpRequest;function n(){B.abort()}B.onload=function(){var g={status:B.status,statusText:B.statusText,headers:b(B.getAllResponseHeaders()||"")};g.url="responseURL"in B?B.responseURL:g.headers.get("X-Request-URL");var I="response"in B?B.response:B.responseText;t(new Z(I,g))},B.onerror=function(){Q(new TypeError("Network request failed"))},B.ontimeout=function(){Q(new TypeError("Network request failed"))},B.onabort=function(){Q(new I.DOMException("Aborted","AbortError"))},B.open(F.method,F.url,!0),"include"===F.credentials?B.withCredentials=!0:"omit"===F.credentials&&(B.withCredentials=!1),"responseType"in B&&C&&(B.responseType="blob"),F.headers.forEach((function(g,I){B.setRequestHeader(I,g)})),F.signal&&(F.signal.addEventListener("abort",n),B.onreadystatechange=function(){4===B.readyState&&F.signal.removeEventListener("abort",n)}),B.send("undefined"===typeof F._bodyInit?null:F._bodyInit)}))}x.polyfill=!0,g.fetch||(g.fetch=x,g.Headers=c,g.Request=u,g.Response=Z),I.Headers=c,I.Request=u,I.Response=Z,I.fetch=x,Object.defineProperty(I,"__esModule",{value:!0})}({})}(t),t.fetch.ponyfill=!0,delete t.fetch.polyfill;var C=t;(I=C.fetch).default=C.fetch,I.fetch=C.fetch,I.Headers=C.Headers,I.Request=C.Request,I.Response=C.Response,g.exports=I},function(g,I,e){"use strict";e.r(I),function(g){e.d(I,"EmbeddedFont",(function(){return ng})),e.d(I,"PDFFont",(function(){return Fg})),e.d(I,"StandardFont",(function(){return Bg})),e.d(I,"default",(function(){return Sg}));var t,C,Q,F,B,n,U=e(269),s=e.n(U),i=e(294),c=e.n(i),A=e(904),l=e.n(A),a=e(320),r=e.n(a),o=e(270),d=e.n(o),u=e(318),y=e(268),b=e(905),Z=e.n(b),m=e(590),x=e.n(m),R=function(I){function e(g,e,t){var C;return(C=I.call(this,{decodeStrings:!1})||this).finalize=C.finalize.bind(l()(C)),C.document=g,C.id=e,null==t&&(t={}),C.data=t,C.gen=0,C.deflate=null,C.compress=C.document.compress&&!C.data.Filter,C.uncompressedLength=0,C.chunks=[],C}s()(e,I);var t=e.prototype;return t.initDeflate=function(){var g=this;return this.data.Filter="FlateDecode",this.deflate=r.a.createDeflate(),this.deflate.on("data",(function(I){return g.chunks.push(I),g.data.Length+=I.length})),this.deflate.on("end",this.finalize)},t._write=function(I,e,t){return g.isBuffer(I)||(I=g.from(I+"\n","binary")),this.uncompressedLength+=I.length,null==this.data.Length&&(this.data.Length=0),this.compress?(this.deflate||this.initDeflate(),this.deflate.write(I)):(this.chunks.push(I),this.data.Length+=I.length),t()},t.end=function(){return I.prototype.end.apply(this,arguments),this.deflate?this.deflate.end():this.finalize()},t.finalize=function(){if(this.offset=this.document._offset,this.document._write(this.id+" "+this.gen+" obj"),this.document._write(h.convert(this.data)),this.chunks.length){this.document._write("stream");for(var g=0,I=Array.from(this.chunks);g<I.length;g++){var e=I[g];this.document._write(e)}this.chunks.length=0,this.document._write("\nendstream")}return this.document._write("endobj"),this.document._refEnd(this)},t.toString=function(){return this.id+" "+this.gen+" R"},e}(c.a.Writable),S=function(){function g(){this._items={}}var I=g.prototype;return I.add=function(g,I){return this._items[g]=I},I.get=function(g){return this._items[g]},I.toString=function(){var g=Object.keys(this._items).sort((function(g,I){return g.localeCompare(I)})),I=["<<"];if(g.length>1){var e=g[0],t=g[g.length-1];I.push("  /Limits "+h.convert([new String(e),new String(t)]))}I.push("  /Names [");for(var C,Q=d()(g);!(C=Q()).done;){var F=C.value;I.push("    "+h.convert(new String(F))+" "+h.convert(this._items[F]))}return I.push("]"),I.push(">>"),I.join("\n")},g}(),G=/[\n\r\t\b\f\(\)\\]/g,L={"\n":"\\n","\r":"\\r","\t":"\\t","\b":"\\b","\f":"\\f","\\":"\\\\","(":"\\(",")":"\\)"},V=function(g,I){return(Array(I+1).join("0")+g).slice(-I)},h=function(){function I(){}return I.convert=function(e){if("string"===typeof e)return"/"+e;if(e instanceof String){for(var t=e,C=!1,Q=0,F=t.length;Q<F;Q++)if(t.charCodeAt(Q)>127){C=!0;break}return C&&(t=function(g){var I=g.length;if(1&I)throw new Error("Buffer length must be even");for(var e=0,t=I-1;e<t;e+=2){var C=g[e];g[e]=g[e+1],g[e+1]=C}return g}(g.from("\ufeff"+t,"utf16le")).toString("binary")),"("+(t=t.replace(G,(function(g){return L[g]})))+")"}if(g.isBuffer(e))return"<"+e.toString("hex")+">";if(e instanceof R||e instanceof S)return e.toString();if(e instanceof Date)return"(D:"+V(e.getUTCFullYear(),4)+V(e.getUTCMonth()+1,2)+V(e.getUTCDate(),2)+V(e.getUTCHours(),2)+V(e.getUTCMinutes(),2)+V(e.getUTCSeconds(),2)+"Z)";if(Array.isArray(e))return"["+Array.from(e).map((function(g){return I.convert(g)})).join(" ")+"]";if("[object Object]"==={}.toString.call(e)){var B=["<<"];for(var n in e){var U=e[n];B.push("/"+n+" "+I.convert(U))}return B.push(">>"),B.join("\n")}return"number"===typeof e?I.number(e):""+e},I.number=function(g){if(g>-1e21&&g<1e21)return Math.round(1e6*g)/1e6;throw new Error("unsupported number: "+g)},I}(),D={top:0,left:0,bottom:0,right:0},p={"4A0":[4767.87,6740.79],"2A0":[3370.39,4767.87],A0:[2383.94,3370.39],A1:[1683.78,2383.94],A2:[1190.55,1683.78],A3:[841.89,1190.55],A4:[595.28,841.89],A5:[419.53,595.28],A6:[297.64,419.53],A7:[209.76,297.64],A8:[147.4,209.76],A9:[104.88,147.4],A10:[73.7,104.88],B0:[2834.65,4008.19],B1:[2004.09,2834.65],B2:[1417.32,2004.09],B3:[1000.63,1417.32],B4:[708.66,1000.63],B5:[498.9,708.66],B6:[354.33,498.9],B7:[249.45,354.33],B8:[175.75,249.45],B9:[124.72,175.75],B10:[87.87,124.72],C0:[2599.37,3676.54],C1:[1836.85,2599.37],C2:[1298.27,1836.85],C3:[918.43,1298.27],C4:[649.13,918.43],C5:[459.21,649.13],C6:[323.15,459.21],C7:[229.61,323.15],C8:[161.57,229.61],C9:[113.39,161.57],C10:[79.37,113.39],RA0:[2437.8,3458.27],RA1:[1729.13,2437.8],RA2:[1218.9,1729.13],RA3:[864.57,1218.9],RA4:[609.45,864.57],SRA0:[2551.18,3628.35],SRA1:[1814.17,2551.18],SRA2:[1275.59,1814.17],SRA3:[907.09,1275.59],SRA4:[637.8,907.09],EXECUTIVE:[521.86,756],FOLIO:[612,936],LEGAL:[612,1008],LETTER:[612,792],TABLOID:[792,1224]},E=function(){function g(g,I){var e=this;this.document=g,null==I&&(I={}),this.size=I.size||"letter",this.layout=I.layout||"portrait",this.margins=D;var t=Array.isArray(this.size)?this.size:p[this.size.toUpperCase()];this.width=t["portrait"===this.layout?0:1],this.height=t["portrait"===this.layout?1:0],this.content=this.document.ref(),this.resources=this.document.ref({ProcSet:["PDF","Text","ImageB","ImageC","ImageI"]}),Object.defineProperties(this,{fonts:{get:function(){return null!=e.resources.data.Font?e.resources.data.Font:e.resources.data.Font={}}},xobjects:{get:function(){return null!=e.resources.data.XObject?e.resources.data.XObject:e.resources.data.XObject={}}},ext_gstates:{get:function(){return null!=e.resources.data.ExtGState?e.resources.data.ExtGState:e.resources.data.ExtGState={}}},patterns:{get:function(){return null!=e.resources.data.Pattern?e.resources.data.Pattern:e.resources.data.Pattern={}}},annotations:{get:function(){return null!=e.dictionary.data.Annots?e.dictionary.data.Annots:e.dictionary.data.Annots=[]}}}),this.dictionary=this.document.ref({Type:"Page",Parent:this.document._root.data.Pages,MediaBox:[0,0,this.width,this.height],Contents:this.content,Resources:this.resources})}var I=g.prototype;return I.maxY=function(){return this.height},I.write=function(g){return this.content.write(g)},I.end=function(){return this.dictionary.end(),this.resources.end(),this.content.end()},g}(),N=h.number,W=function(){function g(g){this.doc=g,this.stops=[],this.embedded=!1,this.transform=[1,0,0,1,0,0]}var I=g.prototype;return I.stop=function(g,I,e){if(null==e&&(e=1),I=this.doc._normalizeColor(I),0===this.stops.length)if(3===I.length)this._colorSpace="DeviceRGB";else if(4===I.length)this._colorSpace="DeviceCMYK";else{if(1!==I.length)throw new Error("Unknown color space");this._colorSpace="DeviceGray"}else if("DeviceRGB"===this._colorSpace&&3!==I.length||"DeviceCMYK"===this._colorSpace&&4!==I.length||"DeviceGray"===this._colorSpace&&1!==I.length)throw new Error("All gradient stops must use the same color space");return e=Math.max(0,Math.min(1,e)),this.stops.push([g,I,e]),this},I.setTransform=function(g,I,e,t,C,Q){return this.transform=[g,I,e,t,C,Q],this},I.embed=function(g){var I,e=this.stops.length;if(0!==e){this.embedded=!0,this.matrix=g;var t=this.stops[e-1];t[0]<1&&this.stops.push([1,t[1],t[2]]);for(var C=[],Q=[],F=[],B=0;B<e-1;B++)Q.push(0,1),B+2!==e&&C.push(this.stops[B+1][0]),I=this.doc.ref({FunctionType:2,Domain:[0,1],C0:this.stops[B+0][1],C1:this.stops[B+1][1],N:1}),F.push(I),I.end();1===e?I=F[0]:(I=this.doc.ref({FunctionType:3,Domain:[0,1],Functions:F,Bounds:C,Encode:Q})).end(),this.id="Sh"+ ++this.doc._gradCount;var n=this.shader(I);n.end();var U=this.doc.ref({Type:"Pattern",PatternType:2,Shading:n,Matrix:this.matrix.map(N)});if(U.end(),this.stops.some((function(g){return g[2]<1}))){var s=this.opacityGradient();s._colorSpace="DeviceGray";for(var i,c=d()(this.stops);!(i=c()).done;){var A=i.value;s.stop(A[0],[A[2]])}s=s.embed(this.matrix);var l=[0,0,this.doc.page.width,this.doc.page.height],a=this.doc.ref({Type:"XObject",Subtype:"Form",FormType:1,BBox:l,Group:{Type:"Group",S:"Transparency",CS:"DeviceGray"},Resources:{ProcSet:["PDF","Text","ImageB","ImageC","ImageI"],Pattern:{Sh1:s}}});a.write("/Pattern cs /Sh1 scn"),a.end(l.join(" ")+" re f");var r=this.doc.ref({Type:"ExtGState",SMask:{Type:"Mask",S:"Luminosity",G:a}});r.end();var o=this.doc.ref({Type:"Pattern",PatternType:1,PaintType:1,TilingType:2,BBox:l,XStep:l[2],YStep:l[3],Resources:{ProcSet:["PDF","Text","ImageB","ImageC","ImageI"],Pattern:{Sh1:U},ExtGState:{Gs1:r}}});o.write("/Gs1 gs /Pattern cs /Sh1 scn"),o.end(l.join(" ")+" re f"),this.doc.page.patterns[this.id]=o}else this.doc.page.patterns[this.id]=U;return U}},I.apply=function(g){var I=this.doc._ctm,e=I[0],t=I[1],C=I[2],Q=I[3],F=I[4],B=I[5],n=this.transform,U=n[0],s=n[1],i=n[2],c=n[3],A=n[4],l=n[5],a=[e*U+C*s,t*U+Q*s,e*i+C*c,t*i+Q*c,e*A+C*l+F,t*A+Q*l+B];return this.embedded&&a.join(" ")===this.matrix.join(" ")||this.embed(a),this.doc.addContent("/"+this.id+" "+g)},g}(),f={PDFGradient:W,PDFLinearGradient:function(g){function I(I,e,t,C,Q){var F;return(F=g.call(this,I)||this).x1=e,F.y1=t,F.x2=C,F.y2=Q,F}s()(I,g);var e=I.prototype;return e.shader=function(g){return this.doc.ref({ShadingType:2,ColorSpace:this._colorSpace,Coords:[this.x1,this.y1,this.x2,this.y2],Function:g,Extend:[!0,!0]})},e.opacityGradient=function(){return new I(this.doc,this.x1,this.y1,this.x2,this.y2)},I}(W),PDFRadialGradient:function(g){function I(I,e,t,C,Q,F,B){var n;return(n=g.call(this,I)||this).doc=I,n.x1=e,n.y1=t,n.r1=C,n.x2=Q,n.y2=F,n.r2=B,n}s()(I,g);var e=I.prototype;return e.shader=function(g){return this.doc.ref({ShadingType:3,ColorSpace:this._colorSpace,Coords:[this.x1,this.y1,this.r1,this.x2,this.y2,this.r2],Function:g,Extend:[!0,!0]})},e.opacityGradient=function(){return new I(this.doc,this.x1,this.y1,this.r1,this.x2,this.y2,this.r2)},I}(W)},X=f.PDFGradient,J=f.PDFLinearGradient,v=f.PDFRadialGradient,k={initColor:function(){return this._opacityRegistry={},this._opacityCount=0,this._gradCount=0},_normalizeColor:function(g){if(g instanceof X)return g;var I;if("string"===typeof g)if("#"===g.charAt(0)){4===g.length&&(g=g.replace(/#([0-9A-F])([0-9A-F])([0-9A-F])/i,"#$1$1$2$2$3$3"));var e=parseInt(g.slice(1),16);g=[e>>16,e>>8&255,255&e]}else H[g]&&(g=H[g]);return Array.isArray(g)?(3===g.length?g=function(){for(var e=[],t=0,C=Array.from(g);t<C.length;t++)I=C[t],e.push(I/255);return e}():4===g.length&&(g=function(){for(var e=[],t=0,C=Array.from(g);t<C.length;t++)I=C[t],e.push(I/100);return e}()),g):null},_setColor:function(g,I){if(!(g=this._normalizeColor(g)))return!1;var e=I?"SCN":"scn";if(g instanceof X)this._setColorSpace("Pattern",I),g.apply(e);else{var t=4===g.length?"DeviceCMYK":"DeviceRGB";this._setColorSpace(t,I),g=g.join(" "),this.addContent(g+" "+e)}return!0},_setColorSpace:function(g,I){var e=I?"CS":"cs";return this.addContent("/"+g+" "+e)},fillColor:function(g,I){return this._setColor(g,!1)&&this.fillOpacity(I),this._fillColor=[g,I],this},strokeColor:function(g,I){return this._setColor(g,!0)&&this.strokeOpacity(I),this},opacity:function(g){return this._doOpacity(g,g),this},fillOpacity:function(g){return this._doOpacity(g,null),this},strokeOpacity:function(g){return this._doOpacity(null,g),this},_doOpacity:function(g,I){var e,t;if(null!=g||null!=I){null!=g&&(g=Math.max(0,Math.min(1,g))),null!=I&&(I=Math.max(0,Math.min(1,I)));var C=g+"_"+I;if(this._opacityRegistry[C]){var Q=Array.from(this._opacityRegistry[C]);e=Q[0],t=Q[1]}else{e={Type:"ExtGState"},null!=g&&(e.ca=g),null!=I&&(e.CA=I),(e=this.ref(e)).end(),t="Gs"+ ++this._opacityCount,this._opacityRegistry[C]=[e,t]}return this.page.ext_gstates[t]=e,this.addContent("/"+t+" gs")}},linearGradient:function(g,I,e,t){return new J(this,g,I,e,t)},radialGradient:function(g,I,e,t,C,Q){return new v(this,g,I,e,t,C,Q)}},H={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};t=C=Q=F=B=n=0;var M={M:2,m:2,Z:0,z:0,L:2,l:2,H:1,h:1,V:1,v:1,C:6,c:6,S:4,s:4,Q:4,q:4,T:2,t:2,A:7,a:7},Y=function(g){return g in M},w=function(g){var I=g.codePointAt(0);return 32===I||9===I||13===I||10===I},T=function(g){var I=g.codePointAt(0);return null!=I&&(48<=I&&I<=57)},z=function(g,I){for(var e=I,t="",C="none";e<g.length;e+=1){var Q=g[e];if("+"===Q||"-"===Q){if("none"===C){C="sign",t+=Q;continue}if("e"===C){C="exponent_sign",t+=Q;continue}}if(T(Q)){if("none"===C||"sign"===C||"whole"===C){C="whole",t+=Q;continue}if("decimal_point"===C||"decimal"===C){C="decimal",t+=Q;continue}if("e"===C||"exponent_sign"===C||"exponent"===C){C="exponent",t+=Q;continue}}if("."!==Q||"none"!==C&&"sign"!==C&&"whole"!==C){if("E"!==Q&&"e"!==Q||"whole"!==C&&"decimal_point"!==C&&"decimal"!==C)break;C="e",t+=Q}else C="decimal_point",t+=Q}var F=Number.parseFloat(t);return Number.isNaN(F)?[I,null]:[e-1,F]},O={M:function(g,I){return t=I[0],C=I[1],Q=F=null,B=t,n=C,g.moveTo(t,C)},m:function(g,I){return t+=I[0],C+=I[1],Q=F=null,B=t,n=C,g.moveTo(t,C)},C:function(g,I){return t=I[4],C=I[5],Q=I[2],F=I[3],g.bezierCurveTo.apply(g,I)},c:function(g,I){return g.bezierCurveTo(I[0]+t,I[1]+C,I[2]+t,I[3]+C,I[4]+t,I[5]+C),Q=t+I[2],F=C+I[3],t+=I[4],C+=I[5]},S:function(g,I){return null===Q&&(Q=t,F=C),g.bezierCurveTo(t-(Q-t),C-(F-C),I[0],I[1],I[2],I[3]),Q=I[0],F=I[1],t=I[2],C=I[3]},s:function(g,I){return null===Q&&(Q=t,F=C),g.bezierCurveTo(t-(Q-t),C-(F-C),t+I[0],C+I[1],t+I[2],C+I[3]),Q=t+I[0],F=C+I[1],t+=I[2],C+=I[3]},Q:function(g,I){return Q=I[0],F=I[1],t=I[2],C=I[3],g.quadraticCurveTo(I[0],I[1],t,C)},q:function(g,I){return g.quadraticCurveTo(I[0]+t,I[1]+C,I[2]+t,I[3]+C),Q=t+I[0],F=C+I[1],t+=I[2],C+=I[3]},T:function(g,I){return null===Q?(Q=t,F=C):(Q=t-(Q-t),F=C-(F-C)),g.quadraticCurveTo(Q,F,I[0],I[1]),Q=t-(Q-t),F=C-(F-C),t=I[0],C=I[1]},t:function(g,I){return null===Q?(Q=t,F=C):(Q=t-(Q-t),F=C-(F-C)),g.quadraticCurveTo(Q,F,t+I[0],C+I[1]),t+=I[0],C+=I[1]},A:function(g,I){return K(g,t,C,I),t=I[5],C=I[6]},a:function(g,I){return I[5]+=t,I[6]+=C,K(g,t,C,I),t=I[5],C=I[6]},L:function(g,I){return t=I[0],C=I[1],Q=F=null,g.lineTo(t,C)},l:function(g,I){return t+=I[0],C+=I[1],Q=F=null,g.lineTo(t,C)},H:function(g,I){return t=I[0],Q=F=null,g.lineTo(t,C)},h:function(g,I){return t+=I[0],Q=F=null,g.lineTo(t,C)},V:function(g,I){return C=I[0],Q=F=null,g.lineTo(t,C)},v:function(g,I){return C+=I[0],Q=F=null,g.lineTo(t,C)},Z:function(g){return g.closePath(),t=B,C=n},z:function(g){return g.closePath(),t=B,C=n}},K=function(g,I,e,t){for(var C,Q=t[0],F=t[1],B=t[2],n=t[3],U=t[4],s=t[5],i=t[6],c=j(s,i,Q,F,n,U,B,I,e),A=d()(c);!(C=A()).done;){var l=C.value,a=P.apply(void 0,l);g.bezierCurveTo.apply(g,a)}},j=function(g,I,e,t,C,B,n,U,s){var i=n*(Math.PI/180),c=Math.sin(i),A=Math.cos(i);e=Math.abs(e),t=Math.abs(t);var l=(Q=A*(U-g)*.5+c*(s-I)*.5)*Q/(e*e)+(F=A*(s-I)*.5-c*(U-g)*.5)*F/(t*t);l>1&&(e*=l=Math.sqrt(l),t*=l);var a=A/e,r=c/e,o=-c/t,d=A/t,u=a*U+r*s,y=o*U+d*s,b=a*g+r*I,Z=o*g+d*I,m=1/((b-u)*(b-u)+(Z-y)*(Z-y))-.25;m<0&&(m=0);var x=Math.sqrt(m);B===C&&(x=-x);var R=.5*(u+b)-x*(Z-y),S=.5*(y+Z)+x*(b-u),G=Math.atan2(y-S,u-R),L=Math.atan2(Z-S,b-R)-G;L<0&&1===B?L+=2*Math.PI:L>0&&0===B&&(L-=2*Math.PI);for(var V=Math.ceil(Math.abs(L/(.5*Math.PI+.001))),h=[],D=0;D<V;D++){var p=G+D*L/V,E=G+(D+1)*L/V;h[D]=[R,S,p,E,e,t,c,A]}return h},P=function(g,I,e,t,C,Q,F,B){var n=B*C,U=-F*Q,s=F*C,i=B*Q,c=.5*(t-e),A=8/3*Math.sin(.5*c)*Math.sin(.5*c)/Math.sin(c),l=g+Math.cos(e)-A*Math.sin(e),a=I+Math.sin(e)+A*Math.cos(e),r=g+Math.cos(t),o=I+Math.sin(t),d=r+A*Math.sin(t),u=o-A*Math.cos(t);return[n*l+U*a,s*l+i*a,n*d+U*u,s*d+i*u,n*r+U*o,s*r+i*o]},_=function(){function g(){}return g.apply=function(g,I){!function(g,I){t=C=Q=F=B=n=0;for(var e=0;e<g.length;e++){var U=g[e],s=U.command,i=U.args;"function"===typeof O[s]&&O[s](I,i)}}(function(g){for(var I=[],e=null,t=[],C=0,Q=!1,F=!1,B=0;B<g.length;B+=1){var n=g.charAt(B);if(!w(n))if(Q&&","===n){if(F)break;F=!0}else if(Y(n)){if(F)return I;if(null==e){if("M"!==n&&"m"!==n)return I}else if(0!==t.length)return I;t=[],Q=!1,0===(C=M[e=n])&&I.push({command:e,args:t})}else{if(null==e)return I;var U=B,s=null;if("A"===e||"a"===e){var i=t.length;if((0===i||1===i)&&"+"!==n&&"-"!==n){var c=z(g,B);U=c[0],s=c[1]}if(2===i||5===i||6===i){var A=z(g,B);U=A[0],s=A[1]}3!==i&&4!==i||("0"===n&&(s=0),"1"===n&&(s=1))}else{var l=z(g,B);U=l[0],s=l[1]}if(null==s)return I;t.push(s),Q=!0,F=!1,B=U,t.length===C&&(I.push({command:e,args:t}),"M"===e&&(e="L"),"m"===e&&(e="l"),t=[])}}return I}(I),g)},g}(),q=h.number,$=(Math.sqrt(2)-1)/3*4,gg={initVector:function(){return this._ctm=[1,0,0,1,0,0],this._ctmStack=[]},save:function(){return this._ctmStack.push(this._ctm.slice()),this.addContent("q")},restore:function(){return this._ctm=this._ctmStack.pop()||[1,0,0,1,0,0],this.addContent("Q")},closePath:function(){return this.addContent("h")},lineWidth:function(g){return this.addContent(q(g)+" w")},_CAP_STYLES:{BUTT:0,ROUND:1,SQUARE:2},lineCap:function(g){return"string"===typeof g&&(g=this._CAP_STYLES[g.toUpperCase()]),this.addContent(g+" J")},_JOIN_STYLES:{MITER:0,ROUND:1,BEVEL:2},lineJoin:function(g){return"string"===typeof g&&(g=this._JOIN_STYLES[g.toUpperCase()]),this.addContent(g+" j")},miterLimit:function(g){return this.addContent(q(g)+" M")},dash:function(g,I){var e;if(null==I&&(I={}),null==g)return this;if(Array.isArray(g))return g=Array.from(g).map((function(g){return h.number(g)})).join(" "),e=I.phase||0,this.addContent("["+g+"] "+h.number(e)+" d");var t=null!=I.space?I.space:g;return e=I.phase||0,this.addContent("["+h.number(g)+" "+h.number(t)+"] "+h.number(e)+" d")},undash:function(){return this.addContent("[] 0 d")},moveTo:function(g,I){return this.addContent(q(g)+" "+q(I)+" m")},lineTo:function(g,I){return this.addContent(q(g)+" "+q(I)+" l")},bezierCurveTo:function(g,I,e,t,C,Q){return this.addContent(q(g)+" "+q(I)+" "+q(e)+" "+q(t)+" "+q(C)+" "+q(Q)+" c")},quadraticCurveTo:function(g,I,e,t){return this.addContent(q(g)+" "+q(I)+" "+q(e)+" "+q(t)+" v")},rect:function(g,I,e,t){return this.addContent(q(g)+" "+q(I)+" "+q(e)+" "+q(t)+" re")},roundedRect:function(g,I,e,t,C){null==C&&(C=0);var Q=(C=Math.min(C,.5*e,.5*t))*(1-$);return this.moveTo(g+C,I),this.lineTo(g+e-C,I),this.bezierCurveTo(g+e-Q,I,g+e,I+Q,g+e,I+C),this.lineTo(g+e,I+t-C),this.bezierCurveTo(g+e,I+t-Q,g+e-Q,I+t,g+e-C,I+t),this.lineTo(g+C,I+t),this.bezierCurveTo(g+Q,I+t,g,I+t-Q,g,I+t-C),this.lineTo(g,I+C),this.bezierCurveTo(g,I+Q,g+Q,I,g+C,I),this.closePath()},ellipse:function(g,I,e,t){null==t&&(t=e);var C=e*$,Q=t*$,F=(g-=e)+2*e,B=(I-=t)+2*t,n=g+e,U=I+t;return this.moveTo(g,U),this.bezierCurveTo(g,U-Q,n-C,I,n,I),this.bezierCurveTo(n+C,I,F,U-Q,F,U),this.bezierCurveTo(F,U+Q,n+C,B,n,B),this.bezierCurveTo(n-C,B,g,U+Q,g,U),this.closePath()},circle:function(g,I,e){return this.ellipse(g,I,e)},arc:function(g,I,e,t,C,Q){null==Q&&(Q=!1);var F=2*Math.PI,B=.5*Math.PI,n=C-t;if(Math.abs(n)>F)n=F;else if(0!==n&&Q!==n<0){n=(Q?-1:1)*F+n}var U=Math.ceil(Math.abs(n)/B),s=n/U,i=s/B*$*e,c=t,A=-Math.sin(c)*i,l=Math.cos(c)*i,a=g+Math.cos(c)*e,r=I+Math.sin(c)*e;this.moveTo(a,r);for(var o=0,d=U,u=0<=d;u?o<d:o>d;u?o++:o--){var y=a+A,b=r+l;c+=s,a=g+Math.cos(c)*e,r=I+Math.sin(c)*e;var Z=a-(A=-Math.sin(c)*i),m=r-(l=Math.cos(c)*i);this.bezierCurveTo(y,b,Z,m,a,r)}return this},polygon:function(){for(var g=arguments.length,I=new Array(g),e=0;e<g;e++)I[e]=arguments[e];this.moveTo.apply(this,Array.from(I.shift()||[]));for(var t=0,C=Array.from(I);t<C.length;t++){var Q=C[t];this.lineTo.apply(this,Array.from(Q||[]))}return this.closePath()},path:function(g){return _.apply(this,g),this},_windingRule:function(g){return/even-?odd/.test(g)?"*":""},fill:function(g,I){return/(even-?odd)|(non-?zero)/.test(g)&&(I=g,g=null),g&&this.fillColor(g),this.addContent("f"+this._windingRule(I))},stroke:function(g){return g&&this.strokeColor(g),this.addContent("S")},fillAndStroke:function(g,I,e){null==I&&(I=g);var t=/(even-?odd)|(non-?zero)/;return t.test(g)&&(e=g,g=null),t.test(I)&&(e=I,I=g),g&&(this.fillColor(g),this.strokeColor(I)),this.addContent("B"+this._windingRule(e))},clip:function(g){return this.addContent("W"+this._windingRule(g)+" n")},transform:function(g,I,e,t,C,Q){var F=this._ctm,B=Array.from(F),n=B[0],U=B[1],s=B[2],i=B[3],c=B[4],A=B[5];F[0]=n*g+s*I,F[1]=U*g+i*I,F[2]=n*e+s*t,F[3]=U*e+i*t,F[4]=n*C+s*Q+c,F[5]=U*C+i*Q+A;var l=[g,I,e,t,C,Q].map((function(g){return h.number(g)})).join(" ");return this.addContent(l+" cm")},translate:function(g,I){return this.transform(1,0,0,1,g,I)},rotate:function(g,I){var e;void 0===I&&(I={});var t=g*Math.PI/180,C=Math.cos(t),Q=Math.sin(t),F=e=0;if(null!=I.origin){var B=Array.from(I.origin),n=(F=B[0])*Q+(e=B[1])*C;F-=F*C-e*Q,e-=n}return this.transform(C,Q,-Q,C,F,e)},scale:function(g,I,e){var t;void 0===e&&(e={}),null==I&&(I=g),"object"===typeof I&&(e=I,I=g);var C=t=0;if(null!=e.origin){var Q=Array.from(e.origin);C=Q[0],t=Q[1],C-=g*C,t-=I*t}return this.transform(g,0,0,I,C,t)}},Ig={402:131,8211:150,8212:151,8216:145,8217:146,8218:130,8220:147,8221:148,8222:132,8224:134,8225:135,8226:149,8230:133,8364:128,8240:137,8249:139,8250:155,710:136,8482:153,338:140,339:156,732:152,352:138,353:154,376:159,381:142,382:158},eg=".notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n\nspace         exclam         quotedbl       numbersign\ndollar        percent        ampersand      quotesingle\nparenleft     parenright     asterisk       plus\ncomma         hyphen         period         slash\nzero          one            two            three\nfour          five           six            seven\neight         nine           colon          semicolon\nless          equal          greater        question\n\nat            A              B              C\nD             E              F              G\nH             I              J              K\nL             M              N              O\nP             Q              R              S\nT             U              V              W\nX             Y              Z              bracketleft\nbackslash     bracketright   asciicircum    underscore\n\ngrave         a              b              c\nd             e              f              g\nh             i              j              k\nl             m              n              o\np             q              r              s\nt             u              v              w\nx             y              z              braceleft\nbar           braceright     asciitilde     .notdef\n\nEuro          .notdef        quotesinglbase florin\nquotedblbase  ellipsis       dagger         daggerdbl\ncircumflex    perthousand    Scaron         guilsinglleft\nOE            .notdef        Zcaron         .notdef\n.notdef       quoteleft      quoteright     quotedblleft\nquotedblright bullet         endash         emdash\ntilde         trademark      scaron         guilsinglright\noe            .notdef        zcaron         ydieresis\n\nspace         exclamdown     cent           sterling\ncurrency      yen            brokenbar      section\ndieresis      copyright      ordfeminine    guillemotleft\nlogicalnot    hyphen         registered     macron\ndegree        plusminus      twosuperior    threesuperior\nacute         mu             paragraph      periodcentered\ncedilla       onesuperior    ordmasculine   guillemotright\nonequarter    onehalf        threequarters  questiondown\n\nAgrave        Aacute         Acircumflex    Atilde\nAdieresis     Aring          AE             Ccedilla\nEgrave        Eacute         Ecircumflex    Edieresis\nIgrave        Iacute         Icircumflex    Idieresis\nEth           Ntilde         Ograve         Oacute\nOcircumflex   Otilde         Odieresis      multiply\nOslash        Ugrave         Uacute         Ucircumflex\nUdieresis     Yacute         Thorn          germandbls\n\nagrave        aacute         acircumflex    atilde\nadieresis     aring          ae             ccedilla\negrave        eacute         ecircumflex    edieresis\nigrave        iacute         icircumflex    idieresis\neth           ntilde         ograve         oacute\nocircumflex   otilde         odieresis      divide\noslash        ugrave         uacute         ucircumflex\nudieresis     yacute         thorn          ydieresis".split(/\s+/);var tg=function(){function g(g){var I=this;"string"===typeof g?(this.contents=g,this.parse()):(this.attributes=g.attributes,this.glyphWidths=g.glyphWidths,this.kernPairs=g.kernPairs),this.charWidths=function(g,I,e){for(var t=[],C=g<I,Q=e?C?I+1:I-1:I,F=g;C?F<Q:F>Q;C?F++:F--)t.push(F);return t}(0,255,!0).map((function(g){return I.glyphWidths[eg[g]]})),this.bbox=Array.from(this.attributes.FontBBox.split(/\s+/)).map((function(g){return+g})),this.ascender=+(this.attributes.Ascender||0),this.descender=+(this.attributes.Descender||0),this.xHeight=+(this.attributes.XHeight||0),this.capHeight=+(this.attributes.CapHeight||0),this.lineGap=this.bbox[3]-this.bbox[1]-(this.ascender-this.descender)}g.open=function(g){throw new Error("AFMFont.open not available on browser build")},g.fromJson=function(I){return new g(I)};var I=g.prototype;return I.parse=function(){var g=function(g){for(var I,e={attributes:{},glyphWidths:{},kernPairs:{}},t="",C=d()(g.split("\n"));!(I=C()).done;){var Q,F,B=I.value;if(Q=B.match(/^Start(\w+)/))t=Q[1];else if(Q=B.match(/^End(\w+)/))t="";else switch(t){case"FontMetrics":var n=(Q=B.match(/(^\w+)\s+(.*)/))[1],U=Q[2];(F=e.attributes[n])?(Array.isArray(F)||(F=e.attributes[n]=[F]),F.push(U)):e.attributes[n]=U;break;case"CharMetrics":if(!/^CH?\s/.test(B))continue;var s=B.match(/\bN\s+(\.?\w+)\s*;/)[1];e.glyphWidths[s]=+B.match(/\bWX\s+(\d+)\s*;/)[1];break;case"KernPairs":(Q=B.match(/^KPX\s+(\.?\w+)\s+(\.?\w+)\s+(-?\d+)/))&&(e.kernPairs[Q[1]+"\0"+Q[2]]=parseInt(Q[3]))}}return e}(this.contents);this.attributes=g.attributes,this.glyphWidths=g.glyphWidths,this.kernPairs=g.kernPairs},I.encodeText=function(g){for(var I=[],e=0,t=g.length,C=0<=t;C?e<t:e>t;C?e++:e--){var Q=g.charCodeAt(e);Q=Ig[Q]||Q,I.push(Q.toString(16))}return I},I.glyphsForString=function(g){for(var I=[],e=0,t=g.length,C=0<=t;C?e<t:e>t;C?e++:e--){var Q=g.charCodeAt(e);I.push(this.characterToGlyph(Q))}return I},I.characterToGlyph=function(g){return eg[Ig[g]||g]||".notdef"},I.widthOfGlyph=function(g){return this.glyphWidths[g]||0},I.getKernPair=function(g,I){return this.kernPairs[g+"\0"+I]||0},I.advancesForGlyphs=function(g){for(var I=[],e=0;e<g.length;e++){var t=g[e],C=g[e+1];I.push(this.widthOfGlyph(t)+this.getKernPair(t,C))}return I},g}(),Cg={Courier:{attributes:{Comment:["Copyright (c) 1989, 1990, 1991, 1992, 1993, 1997 Adobe Systems Incorporated.  All Rights Reserved.","Creation Date: Thu May  1 17:27:09 1997","UniqueID 43050","VMusage 39754 50779"],FontName:"Courier",FullName:"Courier",FamilyName:"Courier",Weight:"Medium",ItalicAngle:"0",IsFixedPitch:"true",CharacterSet:"ExtendedRoman",FontBBox:"-23 -250 715 805 ",UnderlinePosition:"-100",UnderlineThickness:"50",Version:"003.000",Notice:"Copyright (c) 1989, 1990, 1991, 1992, 1993, 1997 Adobe Systems Incorporated.  All Rights Reserved.",EncodingScheme:"AdobeStandardEncoding",CapHeight:"562",XHeight:"426",Ascender:"629",Descender:"-157",StdHW:"51",StdVW:"51"},glyphWidths:{space:600,exclam:600,quotedbl:600,numbersign:600,dollar:600,percent:600,ampersand:600,quoteright:600,parenleft:600,parenright:600,asterisk:600,plus:600,comma:600,hyphen:600,period:600,slash:600,zero:600,one:600,two:600,three:600,four:600,five:600,six:600,seven:600,eight:600,nine:600,colon:600,semicolon:600,less:600,equal:600,greater:600,question:600,at:600,A:600,B:600,C:600,D:600,E:600,F:600,G:600,H:600,I:600,J:600,K:600,L:600,M:600,N:600,O:600,P:600,Q:600,R:600,S:600,T:600,U:600,V:600,W:600,X:600,Y:600,Z:600,bracketleft:600,backslash:600,bracketright:600,asciicircum:600,underscore:600,quoteleft:600,a:600,b:600,c:600,d:600,e:600,f:600,g:600,h:600,i:600,j:600,k:600,l:600,m:600,n:600,o:600,p:600,q:600,r:600,s:600,t:600,u:600,v:600,w:600,x:600,y:600,z:600,braceleft:600,bar:600,braceright:600,asciitilde:600,exclamdown:600,cent:600,sterling:600,fraction:600,yen:600,florin:600,section:600,currency:600,quotesingle:600,quotedblleft:600,guillemotleft:600,guilsinglleft:600,guilsinglright:600,fi:600,fl:600,endash:600,dagger:600,daggerdbl:600,periodcentered:600,paragraph:600,bullet:600,quotesinglbase:600,quotedblbase:600,quotedblright:600,guillemotright:600,ellipsis:600,perthousand:600,questiondown:600,grave:600,acute:600,circumflex:600,tilde:600,macron:600,breve:600,dotaccent:600,dieresis:600,ring:600,cedilla:600,hungarumlaut:600,ogonek:600,caron:600,emdash:600,AE:600,ordfeminine:600,Lslash:600,Oslash:600,OE:600,ordmasculine:600,ae:600,dotlessi:600,lslash:600,oslash:600,oe:600,germandbls:600,Idieresis:600,eacute:600,abreve:600,uhungarumlaut:600,ecaron:600,Ydieresis:600,divide:600,Yacute:600,Acircumflex:600,aacute:600,Ucircumflex:600,yacute:600,scommaaccent:600,ecircumflex:600,Uring:600,Udieresis:600,aogonek:600,Uacute:600,uogonek:600,Edieresis:600,Dcroat:600,commaaccent:600,copyright:600,Emacron:600,ccaron:600,aring:600,Ncommaaccent:600,lacute:600,agrave:600,Tcommaaccent:600,Cacute:600,atilde:600,Edotaccent:600,scaron:600,scedilla:600,iacute:600,lozenge:600,Rcaron:600,Gcommaaccent:600,ucircumflex:600,acircumflex:600,Amacron:600,rcaron:600,ccedilla:600,Zdotaccent:600,Thorn:600,Omacron:600,Racute:600,Sacute:600,dcaron:600,Umacron:600,uring:600,threesuperior:600,Ograve:600,Agrave:600,Abreve:600,multiply:600,uacute:600,Tcaron:600,partialdiff:600,ydieresis:600,Nacute:600,icircumflex:600,Ecircumflex:600,adieresis:600,edieresis:600,cacute:600,nacute:600,umacron:600,Ncaron:600,Iacute:600,plusminus:600,brokenbar:600,registered:600,Gbreve:600,Idotaccent:600,summation:600,Egrave:600,racute:600,omacron:600,Zacute:600,Zcaron:600,greaterequal:600,Eth:600,Ccedilla:600,lcommaaccent:600,tcaron:600,eogonek:600,Uogonek:600,Aacute:600,Adieresis:600,egrave:600,zacute:600,iogonek:600,Oacute:600,oacute:600,amacron:600,sacute:600,idieresis:600,Ocircumflex:600,Ugrave:600,Delta:600,thorn:600,twosuperior:600,Odieresis:600,mu:600,igrave:600,ohungarumlaut:600,Eogonek:600,dcroat:600,threequarters:600,Scedilla:600,lcaron:600,Kcommaaccent:600,Lacute:600,trademark:600,edotaccent:600,Igrave:600,Imacron:600,Lcaron:600,onehalf:600,lessequal:600,ocircumflex:600,ntilde:600,Uhungarumlaut:600,Eacute:600,emacron:600,gbreve:600,onequarter:600,Scaron:600,Scommaaccent:600,Ohungarumlaut:600,degree:600,ograve:600,Ccaron:600,ugrave:600,radical:600,Dcaron:600,rcommaaccent:600,Ntilde:600,otilde:600,Rcommaaccent:600,Lcommaaccent:600,Atilde:600,Aogonek:600,Aring:600,Otilde:600,zdotaccent:600,Ecaron:600,Iogonek:600,kcommaaccent:600,minus:600,Icircumflex:600,ncaron:600,tcommaaccent:600,logicalnot:600,odieresis:600,udieresis:600,notequal:600,gcommaaccent:600,eth:600,zcaron:600,ncommaaccent:600,onesuperior:600,imacron:600,Euro:600},kernPairs:{}},"Courier-Bold":{attributes:{Comment:["Copyright (c) 1989, 1990, 1991, 1993, 1997 Adobe Systems Incorporated.  All Rights Reserved.","Creation Date: Mon Jun 23 16:28:00 1997","UniqueID 43048","VMusage 41139 52164"],FontName:"Courier-Bold",FullName:"Courier Bold",FamilyName:"Courier",Weight:"Bold",ItalicAngle:"0",IsFixedPitch:"true",CharacterSet:"ExtendedRoman",FontBBox:"-113 -250 749 801 ",UnderlinePosition:"-100",UnderlineThickness:"50",Version:"003.000",Notice:"Copyright (c) 1989, 1990, 1991, 1993, 1997 Adobe Systems Incorporated.  All Rights Reserved.",EncodingScheme:"AdobeStandardEncoding",CapHeight:"562",XHeight:"439",Ascender:"629",Descender:"-157",StdHW:"84",StdVW:"106"},glyphWidths:{space:600,exclam:600,quotedbl:600,numbersign:600,dollar:600,percent:600,ampersand:600,quoteright:600,parenleft:600,parenright:600,asterisk:600,plus:600,comma:600,hyphen:600,period:600,slash:600,zero:600,one:600,two:600,three:600,four:600,five:600,six:600,seven:600,eight:600,nine:600,colon:600,semicolon:600,less:600,equal:600,greater:600,question:600,at:600,A:600,B:600,C:600,D:600,E:600,F:600,G:600,H:600,I:600,J:600,K:600,L:600,M:600,N:600,O:600,P:600,Q:600,R:600,S:600,T:600,U:600,V:600,W:600,X:600,Y:600,Z:600,bracketleft:600,backslash:600,bracketright:600,asciicircum:600,underscore:600,quoteleft:600,a:600,b:600,c:600,d:600,e:600,f:600,g:600,h:600,i:600,j:600,k:600,l:600,m:600,n:600,o:600,p:600,q:600,r:600,s:600,t:600,u:600,v:600,w:600,x:600,y:600,z:600,braceleft:600,bar:600,braceright:600,asciitilde:600,exclamdown:600,cent:600,sterling:600,fraction:600,yen:600,florin:600,section:600,currency:600,quotesingle:600,quotedblleft:600,guillemotleft:600,guilsinglleft:600,guilsinglright:600,fi:600,fl:600,endash:600,dagger:600,daggerdbl:600,periodcentered:600,paragraph:600,bullet:600,quotesinglbase:600,quotedblbase:600,quotedblright:600,guillemotright:600,ellipsis:600,perthousand:600,questiondown:600,grave:600,acute:600,circumflex:600,tilde:600,macron:600,breve:600,dotaccent:600,dieresis:600,ring:600,cedilla:600,hungarumlaut:600,ogonek:600,caron:600,emdash:600,AE:600,ordfeminine:600,Lslash:600,Oslash:600,OE:600,ordmasculine:600,ae:600,dotlessi:600,lslash:600,oslash:600,oe:600,germandbls:600,Idieresis:600,eacute:600,abreve:600,uhungarumlaut:600,ecaron:600,Ydieresis:600,divide:600,Yacute:600,Acircumflex:600,aacute:600,Ucircumflex:600,yacute:600,scommaaccent:600,ecircumflex:600,Uring:600,Udieresis:600,aogonek:600,Uacute:600,uogonek:600,Edieresis:600,Dcroat:600,commaaccent:600,copyright:600,Emacron:600,ccaron:600,aring:600,Ncommaaccent:600,lacute:600,agrave:600,Tcommaaccent:600,Cacute:600,atilde:600,Edotaccent:600,scaron:600,scedilla:600,iacute:600,lozenge:600,Rcaron:600,Gcommaaccent:600,ucircumflex:600,acircumflex:600,Amacron:600,rcaron:600,ccedilla:600,Zdotaccent:600,Thorn:600,Omacron:600,Racute:600,Sacute:600,dcaron:600,Umacron:600,uring:600,threesuperior:600,Ograve:600,Agrave:600,Abreve:600,multiply:600,uacute:600,Tcaron:600,partialdiff:600,ydieresis:600,Nacute:600,icircumflex:600,Ecircumflex:600,adieresis:600,edieresis:600,cacute:600,nacute:600,umacron:600,Ncaron:600,Iacute:600,plusminus:600,brokenbar:600,registered:600,Gbreve:600,Idotaccent:600,summation:600,Egrave:600,racute:600,omacron:600,Zacute:600,Zcaron:600,greaterequal:600,Eth:600,Ccedilla:600,lcommaaccent:600,tcaron:600,eogonek:600,Uogonek:600,Aacute:600,Adieresis:600,egrave:600,zacute:600,iogonek:600,Oacute:600,oacute:600,amacron:600,sacute:600,idieresis:600,Ocircumflex:600,Ugrave:600,Delta:600,thorn:600,twosuperior:600,Odieresis:600,mu:600,igrave:600,ohungarumlaut:600,Eogonek:600,dcroat:600,threequarters:600,Scedilla:600,lcaron:600,Kcommaaccent:600,Lacute:600,trademark:600,edotaccent:600,Igrave:600,Imacron:600,Lcaron:600,onehalf:600,lessequal:600,ocircumflex:600,ntilde:600,Uhungarumlaut:600,Eacute:600,emacron:600,gbreve:600,onequarter:600,Scaron:600,Scommaaccent:600,Ohungarumlaut:600,degree:600,ograve:600,Ccaron:600,ugrave:600,radical:600,Dcaron:600,rcommaaccent:600,Ntilde:600,otilde:600,Rcommaaccent:600,Lcommaaccent:600,Atilde:600,Aogonek:600,Aring:600,Otilde:600,zdotaccent:600,Ecaron:600,Iogonek:600,kcommaaccent:600,minus:600,Icircumflex:600,ncaron:600,tcommaaccent:600,logicalnot:600,odieresis:600,udieresis:600,notequal:600,gcommaaccent:600,eth:600,zcaron:600,ncommaaccent:600,onesuperior:600,imacron:600,Euro:600},kernPairs:{}},"Courier-Oblique":{attributes:{Comment:["Copyright (c) 1989, 1990, 1991, 1992, 1993, 1997 Adobe Systems Incorporated.  All Rights Reserved.","Creation Date: Thu May  1 17:37:52 1997","UniqueID 43051","VMusage 16248 75829"],FontName:"Courier-Oblique",FullName:"Courier Oblique",FamilyName:"Courier",Weight:"Medium",ItalicAngle:"-12",IsFixedPitch:"true",CharacterSet:"ExtendedRoman",FontBBox:"-27 -250 849 805 ",UnderlinePosition:"-100",UnderlineThickness:"50",Version:"003.000",Notice:"Copyright (c) 1989, 1990, 1991, 1992, 1993, 1997 Adobe Systems Incorporated.  All Rights Reserved.",EncodingScheme:"AdobeStandardEncoding",CapHeight:"562",XHeight:"426",Ascender:"629",Descender:"-157",StdHW:"51",StdVW:"51"},glyphWidths:{space:600,exclam:600,quotedbl:600,numbersign:600,dollar:600,percent:600,ampersand:600,quoteright:600,parenleft:600,parenright:600,asterisk:600,plus:600,comma:600,hyphen:600,period:600,slash:600,zero:600,one:600,two:600,three:600,four:600,five:600,six:600,seven:600,eight:600,nine:600,colon:600,semicolon:600,less:600,equal:600,greater:600,question:600,at:600,A:600,B:600,C:600,D:600,E:600,F:600,G:600,H:600,I:600,J:600,K:600,L:600,M:600,N:600,O:600,P:600,Q:600,R:600,S:600,T:600,U:600,V:600,W:600,X:600,Y:600,Z:600,bracketleft:600,backslash:600,bracketright:600,asciicircum:600,underscore:600,quoteleft:600,a:600,b:600,c:600,d:600,e:600,f:600,g:600,h:600,i:600,j:600,k:600,l:600,m:600,n:600,o:600,p:600,q:600,r:600,s:600,t:600,u:600,v:600,w:600,x:600,y:600,z:600,braceleft:600,bar:600,braceright:600,asciitilde:600,exclamdown:600,cent:600,sterling:600,fraction:600,yen:600,florin:600,section:600,currency:600,quotesingle:600,quotedblleft:600,guillemotleft:600,guilsinglleft:600,guilsinglright:600,fi:600,fl:600,endash:600,dagger:600,daggerdbl:600,periodcentered:600,paragraph:600,bullet:600,quotesinglbase:600,quotedblbase:600,quotedblright:600,guillemotright:600,ellipsis:600,perthousand:600,questiondown:600,grave:600,acute:600,circumflex:600,tilde:600,macron:600,breve:600,dotaccent:600,dieresis:600,ring:600,cedilla:600,hungarumlaut:600,ogonek:600,caron:600,emdash:600,AE:600,ordfeminine:600,Lslash:600,Oslash:600,OE:600,ordmasculine:600,ae:600,dotlessi:600,lslash:600,oslash:600,oe:600,germandbls:600,Idieresis:600,eacute:600,abreve:600,uhungarumlaut:600,ecaron:600,Ydieresis:600,divide:600,Yacute:600,Acircumflex:600,aacute:600,Ucircumflex:600,yacute:600,scommaaccent:600,ecircumflex:600,Uring:600,Udieresis:600,aogonek:600,Uacute:600,uogonek:600,Edieresis:600,Dcroat:600,commaaccent:600,copyright:600,Emacron:600,ccaron:600,aring:600,Ncommaaccent:600,lacute:600,agrave:600,Tcommaaccent:600,Cacute:600,atilde:600,Edotaccent:600,scaron:600,scedilla:600,iacute:600,lozenge:600,Rcaron:600,Gcommaaccent:600,ucircumflex:600,acircumflex:600,Amacron:600,rcaron:600,ccedilla:600,Zdotaccent:600,Thorn:600,Omacron:600,Racute:600,Sacute:600,dcaron:600,Umacron:600,uring:600,threesuperior:600,Ograve:600,Agrave:600,Abreve:600,multiply:600,uacute:600,Tcaron:600,partialdiff:600,ydieresis:600,Nacute:600,icircumflex:600,Ecircumflex:600,adieresis:600,edieresis:600,cacute:600,nacute:600,umacron:600,Ncaron:600,Iacute:600,plusminus:600,brokenbar:600,registered:600,Gbreve:600,Idotaccent:600,summation:600,Egrave:600,racute:600,omacron:600,Zacute:600,Zcaron:600,greaterequal:600,Eth:600,Ccedilla:600,lcommaaccent:600,tcaron:600,eogonek:600,Uogonek:600,Aacute:600,Adieresis:600,egrave:600,zacute:600,iogonek:600,Oacute:600,oacute:600,amacron:600,sacute:600,idieresis:600,Ocircumflex:600,Ugrave:600,Delta:600,thorn:600,twosuperior:600,Odieresis:600,mu:600,igrave:600,ohungarumlaut:600,Eogonek:600,dcroat:600,threequarters:600,Scedilla:600,lcaron:600,Kcommaaccent:600,Lacute:600,trademark:600,edotaccent:600,Igrave:600,Imacron:600,Lcaron:600,onehalf:600,lessequal:600,ocircumflex:600,ntilde:600,Uhungarumlaut:600,Eacute:600,emacron:600,gbreve:600,onequarter:600,Scaron:600,Scommaaccent:600,Ohungarumlaut:600,degree:600,ograve:600,Ccaron:600,ugrave:600,radical:600,Dcaron:600,rcommaaccent:600,Ntilde:600,otilde:600,Rcommaaccent:600,Lcommaaccent:600,Atilde:600,Aogonek:600,Aring:600,Otilde:600,zdotaccent:600,Ecaron:600,Iogonek:600,kcommaaccent:600,minus:600,Icircumflex:600,ncaron:600,tcommaaccent:600,logicalnot:600,odieresis:600,udieresis:600,notequal:600,gcommaaccent:600,eth:600,zcaron:600,ncommaaccent:600,onesuperior:600,imacron:600,Euro:600},kernPairs:{}},Helvetica:{attributes:{Comment:["Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated.  All Rights Reserved.","Creation Date: Thu May  1 12:38:23 1997","UniqueID 43054","VMusage 37069 48094"],FontName:"Helvetica",FullName:"Helvetica",FamilyName:"Helvetica",Weight:"Medium",ItalicAngle:"0",IsFixedPitch:"false",CharacterSet:"ExtendedRoman",FontBBox:"-166 -225 1000 931 ",UnderlinePosition:"-100",UnderlineThickness:"50",Version:"002.000",Notice:"Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated.  All Rights Reserved.Helvetica is a trademark of Linotype-Hell AG and/or its subsidiaries.",EncodingScheme:"AdobeStandardEncoding",CapHeight:"718",XHeight:"523",Ascender:"718",Descender:"-207",StdHW:"76",StdVW:"88"},glyphWidths:{space:278,exclam:278,quotedbl:355,numbersign:556,dollar:556,percent:889,ampersand:667,quoteright:222,parenleft:333,parenright:333,asterisk:389,plus:584,comma:278,hyphen:333,period:278,slash:278,zero:556,one:556,two:556,three:556,four:556,five:556,six:556,seven:556,eight:556,nine:556,colon:278,semicolon:278,less:584,equal:584,greater:584,question:556,at:1015,A:667,B:667,C:722,D:722,E:667,F:611,G:778,H:722,I:278,J:500,K:667,L:556,M:833,N:722,O:778,P:667,Q:778,R:722,S:667,T:611,U:722,V:667,W:944,X:667,Y:667,Z:611,bracketleft:278,backslash:278,bracketright:278,asciicircum:469,underscore:556,quoteleft:222,a:556,b:556,c:500,d:556,e:556,f:278,g:556,h:556,i:222,j:222,k:500,l:222,m:833,n:556,o:556,p:556,q:556,r:333,s:500,t:278,u:556,v:500,w:722,x:500,y:500,z:500,braceleft:334,bar:260,braceright:334,asciitilde:584,exclamdown:333,cent:556,sterling:556,fraction:167,yen:556,florin:556,section:556,currency:556,quotesingle:191,quotedblleft:333,guillemotleft:556,guilsinglleft:333,guilsinglright:333,fi:500,fl:500,endash:556,dagger:556,daggerdbl:556,periodcentered:278,paragraph:537,bullet:350,quotesinglbase:222,quotedblbase:333,quotedblright:333,guillemotright:556,ellipsis:1e3,perthousand:1e3,questiondown:611,grave:333,acute:333,circumflex:333,tilde:333,macron:333,breve:333,dotaccent:333,dieresis:333,ring:333,cedilla:333,hungarumlaut:333,ogonek:333,caron:333,emdash:1e3,AE:1e3,ordfeminine:370,Lslash:556,Oslash:778,OE:1e3,ordmasculine:365,ae:889,dotlessi:278,lslash:222,oslash:611,oe:944,germandbls:611,Idieresis:278,eacute:556,abreve:556,uhungarumlaut:556,ecaron:556,Ydieresis:667,divide:584,Yacute:667,Acircumflex:667,aacute:556,Ucircumflex:722,yacute:500,scommaaccent:500,ecircumflex:556,Uring:722,Udieresis:722,aogonek:556,Uacute:722,uogonek:556,Edieresis:667,Dcroat:722,commaaccent:250,copyright:737,Emacron:667,ccaron:500,aring:556,Ncommaaccent:722,lacute:222,agrave:556,Tcommaaccent:611,Cacute:722,atilde:556,Edotaccent:667,scaron:500,scedilla:500,iacute:278,lozenge:471,Rcaron:722,Gcommaaccent:778,ucircumflex:556,acircumflex:556,Amacron:667,rcaron:333,ccedilla:500,Zdotaccent:611,Thorn:667,Omacron:778,Racute:722,Sacute:667,dcaron:643,Umacron:722,uring:556,threesuperior:333,Ograve:778,Agrave:667,Abreve:667,multiply:584,uacute:556,Tcaron:611,partialdiff:476,ydieresis:500,Nacute:722,icircumflex:278,Ecircumflex:667,adieresis:556,edieresis:556,cacute:500,nacute:556,umacron:556,Ncaron:722,Iacute:278,plusminus:584,brokenbar:260,registered:737,Gbreve:778,Idotaccent:278,summation:600,Egrave:667,racute:333,omacron:556,Zacute:611,Zcaron:611,greaterequal:549,Eth:722,Ccedilla:722,lcommaaccent:222,tcaron:317,eogonek:556,Uogonek:722,Aacute:667,Adieresis:667,egrave:556,zacute:500,iogonek:222,Oacute:778,oacute:556,amacron:556,sacute:500,idieresis:278,Ocircumflex:778,Ugrave:722,Delta:612,thorn:556,twosuperior:333,Odieresis:778,mu:556,igrave:278,ohungarumlaut:556,Eogonek:667,dcroat:556,threequarters:834,Scedilla:667,lcaron:299,Kcommaaccent:667,Lacute:556,trademark:1e3,edotaccent:556,Igrave:278,Imacron:278,Lcaron:556,onehalf:834,lessequal:549,ocircumflex:556,ntilde:556,Uhungarumlaut:722,Eacute:667,emacron:556,gbreve:556,onequarter:834,Scaron:667,Scommaaccent:667,Ohungarumlaut:778,degree:400,ograve:556,Ccaron:722,ugrave:556,radical:453,Dcaron:722,rcommaaccent:333,Ntilde:722,otilde:556,Rcommaaccent:722,Lcommaaccent:556,Atilde:667,Aogonek:667,Aring:667,Otilde:778,zdotaccent:500,Ecaron:667,Iogonek:278,kcommaaccent:500,minus:584,Icircumflex:278,ncaron:556,tcommaaccent:278,logicalnot:584,odieresis:556,udieresis:556,notequal:549,gcommaaccent:556,eth:556,zcaron:500,ncommaaccent:556,onesuperior:333,imacron:278,Euro:556},kernPairs:{"A\0C":-30,"A\0Cacute":-30,"A\0Ccaron":-30,"A\0Ccedilla":-30,"A\0G":-30,"A\0Gbreve":-30,"A\0Gcommaaccent":-30,"A\0O":-30,"A\0Oacute":-30,"A\0Ocircumflex":-30,"A\0Odieresis":-30,"A\0Ograve":-30,"A\0Ohungarumlaut":-30,"A\0Omacron":-30,"A\0Oslash":-30,"A\0Otilde":-30,"A\0Q":-30,"A\0T":-120,"A\0Tcaron":-120,"A\0Tcommaaccent":-120,"A\0U":-50,"A\0Uacute":-50,"A\0Ucircumflex":-50,"A\0Udieresis":-50,"A\0Ugrave":-50,"A\0Uhungarumlaut":-50,"A\0Umacron":-50,"A\0Uogonek":-50,"A\0Uring":-50,"A\0V":-70,"A\0W":-50,"A\0Y":-100,"A\0Yacute":-100,"A\0Ydieresis":-100,"A\0u":-30,"A\0uacute":-30,"A\0ucircumflex":-30,"A\0udieresis":-30,"A\0ugrave":-30,"A\0uhungarumlaut":-30,"A\0umacron":-30,"A\0uogonek":-30,"A\0uring":-30,"A\0v":-40,"A\0w":-40,"A\0y":-40,"A\0yacute":-40,"A\0ydieresis":-40,"Aacute\0C":-30,"Aacute\0Cacute":-30,"Aacute\0Ccaron":-30,"Aacute\0Ccedilla":-30,"Aacute\0G":-30,"Aacute\0Gbreve":-30,"Aacute\0Gcommaaccent":-30,"Aacute\0O":-30,"Aacute\0Oacute":-30,"Aacute\0Ocircumflex":-30,"Aacute\0Odieresis":-30,"Aacute\0Ograve":-30,"Aacute\0Ohungarumlaut":-30,"Aacute\0Omacron":-30,"Aacute\0Oslash":-30,"Aacute\0Otilde":-30,"Aacute\0Q":-30,"Aacute\0T":-120,"Aacute\0Tcaron":-120,"Aacute\0Tcommaaccent":-120,"Aacute\0U":-50,"Aacute\0Uacute":-50,"Aacute\0Ucircumflex":-50,"Aacute\0Udieresis":-50,"Aacute\0Ugrave":-50,"Aacute\0Uhungarumlaut":-50,"Aacute\0Umacron":-50,"Aacute\0Uogonek":-50,"Aacute\0Uring":-50,"Aacute\0V":-70,"Aacute\0W":-50,"Aacute\0Y":-100,"Aacute\0Yacute":-100,"Aacute\0Ydieresis":-100,"Aacute\0u":-30,"Aacute\0uacute":-30,"Aacute\0ucircumflex":-30,"Aacute\0udieresis":-30,"Aacute\0ugrave":-30,"Aacute\0uhungarumlaut":-30,"Aacute\0umacron":-30,"Aacute\0uogonek":-30,"Aacute\0uring":-30,"Aacute\0v":-40,"Aacute\0w":-40,"Aacute\0y":-40,"Aacute\0yacute":-40,"Aacute\0ydieresis":-40,"Abreve\0C":-30,"Abreve\0Cacute":-30,"Abreve\0Ccaron":-30,"Abreve\0Ccedilla":-30,"Abreve\0G":-30,"Abreve\0Gbreve":-30,"Abreve\0Gcommaaccent":-30,"Abreve\0O":-30,"Abreve\0Oacute":-30,"Abreve\0Ocircumflex":-30,"Abreve\0Odieresis":-30,"Abreve\0Ograve":-30,"Abreve\0Ohungarumlaut":-30,"Abreve\0Omacron":-30,"Abreve\0Oslash":-30,"Abreve\0Otilde":-30,"Abreve\0Q":-30,"Abreve\0T":-120,"Abreve\0Tcaron":-120,"Abreve\0Tcommaaccent":-120,"Abreve\0U":-50,"Abreve\0Uacute":-50,"Abreve\0Ucircumflex":-50,"Abreve\0Udieresis":-50,"Abreve\0Ugrave":-50,"Abreve\0Uhungarumlaut":-50,"Abreve\0Umacron":-50,"Abreve\0Uogonek":-50,"Abreve\0Uring":-50,"Abreve\0V":-70,"Abreve\0W":-50,"Abreve\0Y":-100,"Abreve\0Yacute":-100,"Abreve\0Ydieresis":-100,"Abreve\0u":-30,"Abreve\0uacute":-30,"Abreve\0ucircumflex":-30,"Abreve\0udieresis":-30,"Abreve\0ugrave":-30,"Abreve\0uhungarumlaut":-30,"Abreve\0umacron":-30,"Abreve\0uogonek":-30,"Abreve\0uring":-30,"Abreve\0v":-40,"Abreve\0w":-40,"Abreve\0y":-40,"Abreve\0yacute":-40,"Abreve\0ydieresis":-40,"Acircumflex\0C":-30,"Acircumflex\0Cacute":-30,"Acircumflex\0Ccaron":-30,"Acircumflex\0Ccedilla":-30,"Acircumflex\0G":-30,"Acircumflex\0Gbreve":-30,"Acircumflex\0Gcommaaccent":-30,"Acircumflex\0O":-30,"Acircumflex\0Oacute":-30,"Acircumflex\0Ocircumflex":-30,"Acircumflex\0Odieresis":-30,"Acircumflex\0Ograve":-30,"Acircumflex\0Ohungarumlaut":-30,"Acircumflex\0Omacron":-30,"Acircumflex\0Oslash":-30,"Acircumflex\0Otilde":-30,"Acircumflex\0Q":-30,"Acircumflex\0T":-120,"Acircumflex\0Tcaron":-120,"Acircumflex\0Tcommaaccent":-120,"Acircumflex\0U":-50,"Acircumflex\0Uacute":-50,"Acircumflex\0Ucircumflex":-50,"Acircumflex\0Udieresis":-50,"Acircumflex\0Ugrave":-50,"Acircumflex\0Uhungarumlaut":-50,"Acircumflex\0Umacron":-50,"Acircumflex\0Uogonek":-50,"Acircumflex\0Uring":-50,"Acircumflex\0V":-70,"Acircumflex\0W":-50,"Acircumflex\0Y":-100,"Acircumflex\0Yacute":-100,"Acircumflex\0Ydieresis":-100,"Acircumflex\0u":-30,"Acircumflex\0uacute":-30,"Acircumflex\0ucircumflex":-30,"Acircumflex\0udieresis":-30,"Acircumflex\0ugrave":-30,"Acircumflex\0uhungarumlaut":-30,"Acircumflex\0umacron":-30,"Acircumflex\0uogonek":-30,"Acircumflex\0uring":-30,"Acircumflex\0v":-40,"Acircumflex\0w":-40,"Acircumflex\0y":-40,"Acircumflex\0yacute":-40,"Acircumflex\0ydieresis":-40,"Adieresis\0C":-30,"Adieresis\0Cacute":-30,"Adieresis\0Ccaron":-30,"Adieresis\0Ccedilla":-30,"Adieresis\0G":-30,"Adieresis\0Gbreve":-30,"Adieresis\0Gcommaaccent":-30,"Adieresis\0O":-30,"Adieresis\0Oacute":-30,"Adieresis\0Ocircumflex":-30,"Adieresis\0Odieresis":-30,"Adieresis\0Ograve":-30,"Adieresis\0Ohungarumlaut":-30,"Adieresis\0Omacron":-30,"Adieresis\0Oslash":-30,"Adieresis\0Otilde":-30,"Adieresis\0Q":-30,"Adieresis\0T":-120,"Adieresis\0Tcaron":-120,"Adieresis\0Tcommaaccent":-120,"Adieresis\0U":-50,"Adieresis\0Uacute":-50,"Adieresis\0Ucircumflex":-50,"Adieresis\0Udieresis":-50,"Adieresis\0Ugrave":-50,"Adieresis\0Uhungarumlaut":-50,"Adieresis\0Umacron":-50,"Adieresis\0Uogonek":-50,"Adieresis\0Uring":-50,"Adieresis\0V":-70,"Adieresis\0W":-50,"Adieresis\0Y":-100,"Adieresis\0Yacute":-100,"Adieresis\0Ydieresis":-100,"Adieresis\0u":-30,"Adieresis\0uacute":-30,"Adieresis\0ucircumflex":-30,"Adieresis\0udieresis":-30,"Adieresis\0ugrave":-30,"Adieresis\0uhungarumlaut":-30,"Adieresis\0umacron":-30,"Adieresis\0uogonek":-30,"Adieresis\0uring":-30,"Adieresis\0v":-40,"Adieresis\0w":-40,"Adieresis\0y":-40,"Adieresis\0yacute":-40,"Adieresis\0ydieresis":-40,"Agrave\0C":-30,"Agrave\0Cacute":-30,"Agrave\0Ccaron":-30,"Agrave\0Ccedilla":-30,"Agrave\0G":-30,"Agrave\0Gbreve":-30,"Agrave\0Gcommaaccent":-30,"Agrave\0O":-30,"Agrave\0Oacute":-30,"Agrave\0Ocircumflex":-30,"Agrave\0Odieresis":-30,"Agrave\0Ograve":-30,"Agrave\0Ohungarumlaut":-30,"Agrave\0Omacron":-30,"Agrave\0Oslash":-30,"Agrave\0Otilde":-30,"Agrave\0Q":-30,"Agrave\0T":-120,"Agrave\0Tcaron":-120,"Agrave\0Tcommaaccent":-120,"Agrave\0U":-50,"Agrave\0Uacute":-50,"Agrave\0Ucircumflex":-50,"Agrave\0Udieresis":-50,"Agrave\0Ugrave":-50,"Agrave\0Uhungarumlaut":-50,"Agrave\0Umacron":-50,"Agrave\0Uogonek":-50,"Agrave\0Uring":-50,"Agrave\0V":-70,"Agrave\0W":-50,"Agrave\0Y":-100,"Agrave\0Yacute":-100,"Agrave\0Ydieresis":-100,"Agrave\0u":-30,"Agrave\0uacute":-30,"Agrave\0ucircumflex":-30,"Agrave\0udieresis":-30,"Agrave\0ugrave":-30,"Agrave\0uhungarumlaut":-30,"Agrave\0umacron":-30,"Agrave\0uogonek":-30,"Agrave\0uring":-30,"Agrave\0v":-40,"Agrave\0w":-40,"Agrave\0y":-40,"Agrave\0yacute":-40,"Agrave\0ydieresis":-40,"Amacron\0C":-30,"Amacron\0Cacute":-30,"Amacron\0Ccaron":-30,"Amacron\0Ccedilla":-30,"Amacron\0G":-30,"Amacron\0Gbreve":-30,"Amacron\0Gcommaaccent":-30,"Amacron\0O":-30,"Amacron\0Oacute":-30,"Amacron\0Ocircumflex":-30,"Amacron\0Odieresis":-30,"Amacron\0Ograve":-30,"Amacron\0Ohungarumlaut":-30,"Amacron\0Omacron":-30,"Amacron\0Oslash":-30,"Amacron\0Otilde":-30,"Amacron\0Q":-30,"Amacron\0T":-120,"Amacron\0Tcaron":-120,"Amacron\0Tcommaaccent":-120,"Amacron\0U":-50,"Amacron\0Uacute":-50,"Amacron\0Ucircumflex":-50,"Amacron\0Udieresis":-50,"Amacron\0Ugrave":-50,"Amacron\0Uhungarumlaut":-50,"Amacron\0Umacron":-50,"Amacron\0Uogonek":-50,"Amacron\0Uring":-50,"Amacron\0V":-70,"Amacron\0W":-50,"Amacron\0Y":-100,"Amacron\0Yacute":-100,"Amacron\0Ydieresis":-100,"Amacron\0u":-30,"Amacron\0uacute":-30,"Amacron\0ucircumflex":-30,"Amacron\0udieresis":-30,"Amacron\0ugrave":-30,"Amacron\0uhungarumlaut":-30,"Amacron\0umacron":-30,"Amacron\0uogonek":-30,"Amacron\0uring":-30,"Amacron\0v":-40,"Amacron\0w":-40,"Amacron\0y":-40,"Amacron\0yacute":-40,"Amacron\0ydieresis":-40,"Aogonek\0C":-30,"Aogonek\0Cacute":-30,"Aogonek\0Ccaron":-30,"Aogonek\0Ccedilla":-30,"Aogonek\0G":-30,"Aogonek\0Gbreve":-30,"Aogonek\0Gcommaaccent":-30,"Aogonek\0O":-30,"Aogonek\0Oacute":-30,"Aogonek\0Ocircumflex":-30,"Aogonek\0Odieresis":-30,"Aogonek\0Ograve":-30,"Aogonek\0Ohungarumlaut":-30,"Aogonek\0Omacron":-30,"Aogonek\0Oslash":-30,"Aogonek\0Otilde":-30,"Aogonek\0Q":-30,"Aogonek\0T":-120,"Aogonek\0Tcaron":-120,"Aogonek\0Tcommaaccent":-120,"Aogonek\0U":-50,"Aogonek\0Uacute":-50,"Aogonek\0Ucircumflex":-50,"Aogonek\0Udieresis":-50,"Aogonek\0Ugrave":-50,"Aogonek\0Uhungarumlaut":-50,"Aogonek\0Umacron":-50,"Aogonek\0Uogonek":-50,"Aogonek\0Uring":-50,"Aogonek\0V":-70,"Aogonek\0W":-50,"Aogonek\0Y":-100,"Aogonek\0Yacute":-100,"Aogonek\0Ydieresis":-100,"Aogonek\0u":-30,"Aogonek\0uacute":-30,"Aogonek\0ucircumflex":-30,"Aogonek\0udieresis":-30,"Aogonek\0ugrave":-30,"Aogonek\0uhungarumlaut":-30,"Aogonek\0umacron":-30,"Aogonek\0uogonek":-30,"Aogonek\0uring":-30,"Aogonek\0v":-40,"Aogonek\0w":-40,"Aogonek\0y":-40,"Aogonek\0yacute":-40,"Aogonek\0ydieresis":-40,"Aring\0C":-30,"Aring\0Cacute":-30,"Aring\0Ccaron":-30,"Aring\0Ccedilla":-30,"Aring\0G":-30,"Aring\0Gbreve":-30,"Aring\0Gcommaaccent":-30,"Aring\0O":-30,"Aring\0Oacute":-30,"Aring\0Ocircumflex":-30,"Aring\0Odieresis":-30,"Aring\0Ograve":-30,"Aring\0Ohungarumlaut":-30,"Aring\0Omacron":-30,"Aring\0Oslash":-30,"Aring\0Otilde":-30,"Aring\0Q":-30,"Aring\0T":-120,"Aring\0Tcaron":-120,"Aring\0Tcommaaccent":-120,"Aring\0U":-50,"Aring\0Uacute":-50,"Aring\0Ucircumflex":-50,"Aring\0Udieresis":-50,"Aring\0Ugrave":-50,"Aring\0Uhungarumlaut":-50,"Aring\0Umacron":-50,"Aring\0Uogonek":-50,"Aring\0Uring":-50,"Aring\0V":-70,"Aring\0W":-50,"Aring\0Y":-100,"Aring\0Yacute":-100,"Aring\0Ydieresis":-100,"Aring\0u":-30,"Aring\0uacute":-30,"Aring\0ucircumflex":-30,"Aring\0udieresis":-30,"Aring\0ugrave":-30,"Aring\0uhungarumlaut":-30,"Aring\0umacron":-30,"Aring\0uogonek":-30,"Aring\0uring":-30,"Aring\0v":-40,"Aring\0w":-40,"Aring\0y":-40,"Aring\0yacute":-40,"Aring\0ydieresis":-40,"Atilde\0C":-30,"Atilde\0Cacute":-30,"Atilde\0Ccaron":-30,"Atilde\0Ccedilla":-30,"Atilde\0G":-30,"Atilde\0Gbreve":-30,"Atilde\0Gcommaaccent":-30,"Atilde\0O":-30,"Atilde\0Oacute":-30,"Atilde\0Ocircumflex":-30,"Atilde\0Odieresis":-30,"Atilde\0Ograve":-30,"Atilde\0Ohungarumlaut":-30,"Atilde\0Omacron":-30,"Atilde\0Oslash":-30,"Atilde\0Otilde":-30,"Atilde\0Q":-30,"Atilde\0T":-120,"Atilde\0Tcaron":-120,"Atilde\0Tcommaaccent":-120,"Atilde\0U":-50,"Atilde\0Uacute":-50,"Atilde\0Ucircumflex":-50,"Atilde\0Udieresis":-50,"Atilde\0Ugrave":-50,"Atilde\0Uhungarumlaut":-50,"Atilde\0Umacron":-50,"Atilde\0Uogonek":-50,"Atilde\0Uring":-50,"Atilde\0V":-70,"Atilde\0W":-50,"Atilde\0Y":-100,"Atilde\0Yacute":-100,"Atilde\0Ydieresis":-100,"Atilde\0u":-30,"Atilde\0uacute":-30,"Atilde\0ucircumflex":-30,"Atilde\0udieresis":-30,"Atilde\0ugrave":-30,"Atilde\0uhungarumlaut":-30,"Atilde\0umacron":-30,"Atilde\0uogonek":-30,"Atilde\0uring":-30,"Atilde\0v":-40,"Atilde\0w":-40,"Atilde\0y":-40,"Atilde\0yacute":-40,"Atilde\0ydieresis":-40,"B\0U":-10,"B\0Uacute":-10,"B\0Ucircumflex":-10,"B\0Udieresis":-10,"B\0Ugrave":-10,"B\0Uhungarumlaut":-10,"B\0Umacron":-10,"B\0Uogonek":-10,"B\0Uring":-10,"B\0comma":-20,"B\0period":-20,"C\0comma":-30,"C\0period":-30,"Cacute\0comma":-30,"Cacute\0period":-30,"Ccaron\0comma":-30,"Ccaron\0period":-30,"Ccedilla\0comma":-30,"Ccedilla\0period":-30,"D\0A":-40,"D\0Aacute":-40,"D\0Abreve":-40,"D\0Acircumflex":-40,"D\0Adieresis":-40,"D\0Agrave":-40,"D\0Amacron":-40,"D\0Aogonek":-40,"D\0Aring":-40,"D\0Atilde":-40,"D\0V":-70,"D\0W":-40,"D\0Y":-90,"D\0Yacute":-90,"D\0Ydieresis":-90,"D\0comma":-70,"D\0period":-70,"Dcaron\0A":-40,"Dcaron\0Aacute":-40,"Dcaron\0Abreve":-40,"Dcaron\0Acircumflex":-40,"Dcaron\0Adieresis":-40,"Dcaron\0Agrave":-40,"Dcaron\0Amacron":-40,"Dcaron\0Aogonek":-40,"Dcaron\0Aring":-40,"Dcaron\0Atilde":-40,"Dcaron\0V":-70,"Dcaron\0W":-40,"Dcaron\0Y":-90,"Dcaron\0Yacute":-90,"Dcaron\0Ydieresis":-90,"Dcaron\0comma":-70,"Dcaron\0period":-70,"Dcroat\0A":-40,"Dcroat\0Aacute":-40,"Dcroat\0Abreve":-40,"Dcroat\0Acircumflex":-40,"Dcroat\0Adieresis":-40,"Dcroat\0Agrave":-40,"Dcroat\0Amacron":-40,"Dcroat\0Aogonek":-40,"Dcroat\0Aring":-40,"Dcroat\0Atilde":-40,"Dcroat\0V":-70,"Dcroat\0W":-40,"Dcroat\0Y":-90,"Dcroat\0Yacute":-90,"Dcroat\0Ydieresis":-90,"Dcroat\0comma":-70,"Dcroat\0period":-70,"F\0A":-80,"F\0Aacute":-80,"F\0Abreve":-80,"F\0Acircumflex":-80,"F\0Adieresis":-80,"F\0Agrave":-80,"F\0Amacron":-80,"F\0Aogonek":-80,"F\0Aring":-80,"F\0Atilde":-80,"F\0a":-50,"F\0aacute":-50,"F\0abreve":-50,"F\0acircumflex":-50,"F\0adieresis":-50,"F\0agrave":-50,"F\0amacron":-50,"F\0aogonek":-50,"F\0aring":-50,"F\0atilde":-50,"F\0comma":-150,"F\0e":-30,"F\0eacute":-30,"F\0ecaron":-30,"F\0ecircumflex":-30,"F\0edieresis":-30,"F\0edotaccent":-30,"F\0egrave":-30,"F\0emacron":-30,"F\0eogonek":-30,"F\0o":-30,"F\0oacute":-30,"F\0ocircumflex":-30,"F\0odieresis":-30,"F\0ograve":-30,"F\0ohungarumlaut":-30,"F\0omacron":-30,"F\0oslash":-30,"F\0otilde":-30,"F\0period":-150,"F\0r":-45,"F\0racute":-45,"F\0rcaron":-45,"F\0rcommaaccent":-45,"J\0A":-20,"J\0Aacute":-20,"J\0Abreve":-20,"J\0Acircumflex":-20,"J\0Adieresis":-20,"J\0Agrave":-20,"J\0Amacron":-20,"J\0Aogonek":-20,"J\0Aring":-20,"J\0Atilde":-20,"J\0a":-20,"J\0aacute":-20,"J\0abreve":-20,"J\0acircumflex":-20,"J\0adieresis":-20,"J\0agrave":-20,"J\0amacron":-20,"J\0aogonek":-20,"J\0aring":-20,"J\0atilde":-20,"J\0comma":-30,"J\0period":-30,"J\0u":-20,"J\0uacute":-20,"J\0ucircumflex":-20,"J\0udieresis":-20,"J\0ugrave":-20,"J\0uhungarumlaut":-20,"J\0umacron":-20,"J\0uogonek":-20,"J\0uring":-20,"K\0O":-50,"K\0Oacute":-50,"K\0Ocircumflex":-50,"K\0Odieresis":-50,"K\0Ograve":-50,"K\0Ohungarumlaut":-50,"K\0Omacron":-50,"K\0Oslash":-50,"K\0Otilde":-50,"K\0e":-40,"K\0eacute":-40,"K\0ecaron":-40,"K\0ecircumflex":-40,"K\0edieresis":-40,"K\0edotaccent":-40,"K\0egrave":-40,"K\0emacron":-40,"K\0eogonek":-40,"K\0o":-40,"K\0oacute":-40,"K\0ocircumflex":-40,"K\0odieresis":-40,"K\0ograve":-40,"K\0ohungarumlaut":-40,"K\0omacron":-40,"K\0oslash":-40,"K\0otilde":-40,"K\0u":-30,"K\0uacute":-30,"K\0ucircumflex":-30,"K\0udieresis":-30,"K\0ugrave":-30,"K\0uhungarumlaut":-30,"K\0umacron":-30,"K\0uogonek":-30,"K\0uring":-30,"K\0y":-50,"K\0yacute":-50,"K\0ydieresis":-50,"Kcommaaccent\0O":-50,"Kcommaaccent\0Oacute":-50,"Kcommaaccent\0Ocircumflex":-50,"Kcommaaccent\0Odieresis":-50,"Kcommaaccent\0Ograve":-50,"Kcommaaccent\0Ohungarumlaut":-50,"Kcommaaccent\0Omacron":-50,"Kcommaaccent\0Oslash":-50,"Kcommaaccent\0Otilde":-50,"Kcommaaccent\0e":-40,"Kcommaaccent\0eacute":-40,"Kcommaaccent\0ecaron":-40,"Kcommaaccent\0ecircumflex":-40,"Kcommaaccent\0edieresis":-40,"Kcommaaccent\0edotaccent":-40,"Kcommaaccent\0egrave":-40,"Kcommaaccent\0emacron":-40,"Kcommaaccent\0eogonek":-40,"Kcommaaccent\0o":-40,"Kcommaaccent\0oacute":-40,"Kcommaaccent\0ocircumflex":-40,"Kcommaaccent\0odieresis":-40,"Kcommaaccent\0ograve":-40,"Kcommaaccent\0ohungarumlaut":-40,"Kcommaaccent\0omacron":-40,"Kcommaaccent\0oslash":-40,"Kcommaaccent\0otilde":-40,"Kcommaaccent\0u":-30,"Kcommaaccent\0uacute":-30,"Kcommaaccent\0ucircumflex":-30,"Kcommaaccent\0udieresis":-30,"Kcommaaccent\0ugrave":-30,"Kcommaaccent\0uhungarumlaut":-30,"Kcommaaccent\0umacron":-30,"Kcommaaccent\0uogonek":-30,"Kcommaaccent\0uring":-30,"Kcommaaccent\0y":-50,"Kcommaaccent\0yacute":-50,"Kcommaaccent\0ydieresis":-50,"L\0T":-110,"L\0Tcaron":-110,"L\0Tcommaaccent":-110,"L\0V":-110,"L\0W":-70,"L\0Y":-140,"L\0Yacute":-140,"L\0Ydieresis":-140,"L\0quotedblright":-140,"L\0quoteright":-160,"L\0y":-30,"L\0yacute":-30,"L\0ydieresis":-30,"Lacute\0T":-110,"Lacute\0Tcaron":-110,"Lacute\0Tcommaaccent":-110,"Lacute\0V":-110,"Lacute\0W":-70,"Lacute\0Y":-140,"Lacute\0Yacute":-140,"Lacute\0Ydieresis":-140,"Lacute\0quotedblright":-140,"Lacute\0quoteright":-160,"Lacute\0y":-30,"Lacute\0yacute":-30,"Lacute\0ydieresis":-30,"Lcaron\0T":-110,"Lcaron\0Tcaron":-110,"Lcaron\0Tcommaaccent":-110,"Lcaron\0V":-110,"Lcaron\0W":-70,"Lcaron\0Y":-140,"Lcaron\0Yacute":-140,"Lcaron\0Ydieresis":-140,"Lcaron\0quotedblright":-140,"Lcaron\0quoteright":-160,"Lcaron\0y":-30,"Lcaron\0yacute":-30,"Lcaron\0ydieresis":-30,"Lcommaaccent\0T":-110,"Lcommaaccent\0Tcaron":-110,"Lcommaaccent\0Tcommaaccent":-110,"Lcommaaccent\0V":-110,"Lcommaaccent\0W":-70,"Lcommaaccent\0Y":-140,"Lcommaaccent\0Yacute":-140,"Lcommaaccent\0Ydieresis":-140,"Lcommaaccent\0quotedblright":-140,"Lcommaaccent\0quoteright":-160,"Lcommaaccent\0y":-30,"Lcommaaccent\0yacute":-30,"Lcommaaccent\0ydieresis":-30,"Lslash\0T":-110,"Lslash\0Tcaron":-110,"Lslash\0Tcommaaccent":-110,"Lslash\0V":-110,"Lslash\0W":-70,"Lslash\0Y":-140,"Lslash\0Yacute":-140,"Lslash\0Ydieresis":-140,"Lslash\0quotedblright":-140,"Lslash\0quoteright":-160,"Lslash\0y":-30,"Lslash\0yacute":-30,"Lslash\0ydieresis":-30,"O\0A":-20,"O\0Aacute":-20,"O\0Abreve":-20,"O\0Acircumflex":-20,"O\0Adieresis":-20,"O\0Agrave":-20,"O\0Amacron":-20,"O\0Aogonek":-20,"O\0Aring":-20,"O\0Atilde":-20,"O\0T":-40,"O\0Tcaron":-40,"O\0Tcommaaccent":-40,"O\0V":-50,"O\0W":-30,"O\0X":-60,"O\0Y":-70,"O\0Yacute":-70,"O\0Ydieresis":-70,"O\0comma":-40,"O\0period":-40,"Oacute\0A":-20,"Oacute\0Aacute":-20,"Oacute\0Abreve":-20,"Oacute\0Acircumflex":-20,"Oacute\0Adieresis":-20,"Oacute\0Agrave":-20,"Oacute\0Amacron":-20,"Oacute\0Aogonek":-20,"Oacute\0Aring":-20,"Oacute\0Atilde":-20,"Oacute\0T":-40,"Oacute\0Tcaron":-40,"Oacute\0Tcommaaccent":-40,"Oacute\0V":-50,"Oacute\0W":-30,"Oacute\0X":-60,"Oacute\0Y":-70,"Oacute\0Yacute":-70,"Oacute\0Ydieresis":-70,"Oacute\0comma":-40,"Oacute\0period":-40,"Ocircumflex\0A":-20,"Ocircumflex\0Aacute":-20,"Ocircumflex\0Abreve":-20,"Ocircumflex\0Acircumflex":-20,"Ocircumflex\0Adieresis":-20,"Ocircumflex\0Agrave":-20,"Ocircumflex\0Amacron":-20,"Ocircumflex\0Aogonek":-20,"Ocircumflex\0Aring":-20,"Ocircumflex\0Atilde":-20,"Ocircumflex\0T":-40,"Ocircumflex\0Tcaron":-40,"Ocircumflex\0Tcommaaccent":-40,"Ocircumflex\0V":-50,"Ocircumflex\0W":-30,"Ocircumflex\0X":-60,"Ocircumflex\0Y":-70,"Ocircumflex\0Yacute":-70,"Ocircumflex\0Ydieresis":-70,"Ocircumflex\0comma":-40,"Ocircumflex\0period":-40,"Odieresis\0A":-20,"Odieresis\0Aacute":-20,"Odieresis\0Abreve":-20,"Odieresis\0Acircumflex":-20,"Odieresis\0Adieresis":-20,"Odieresis\0Agrave":-20,"Odieresis\0Amacron":-20,"Odieresis\0Aogonek":-20,"Odieresis\0Aring":-20,"Odieresis\0Atilde":-20,"Odieresis\0T":-40,"Odieresis\0Tcaron":-40,"Odieresis\0Tcommaaccent":-40,"Odieresis\0V":-50,"Odieresis\0W":-30,"Odieresis\0X":-60,"Odieresis\0Y":-70,"Odieresis\0Yacute":-70,"Odieresis\0Ydieresis":-70,"Odieresis\0comma":-40,"Odieresis\0period":-40,"Ograve\0A":-20,"Ograve\0Aacute":-20,"Ograve\0Abreve":-20,"Ograve\0Acircumflex":-20,"Ograve\0Adieresis":-20,"Ograve\0Agrave":-20,"Ograve\0Amacron":-20,"Ograve\0Aogonek":-20,"Ograve\0Aring":-20,"Ograve\0Atilde":-20,"Ograve\0T":-40,"Ograve\0Tcaron":-40,"Ograve\0Tcommaaccent":-40,"Ograve\0V":-50,"Ograve\0W":-30,"Ograve\0X":-60,"Ograve\0Y":-70,"Ograve\0Yacute":-70,"Ograve\0Ydieresis":-70,"Ograve\0comma":-40,"Ograve\0period":-40,"Ohungarumlaut\0A":-20,"Ohungarumlaut\0Aacute":-20,"Ohungarumlaut\0Abreve":-20,"Ohungarumlaut\0Acircumflex":-20,"Ohungarumlaut\0Adieresis":-20,"Ohungarumlaut\0Agrave":-20,"Ohungarumlaut\0Amacron":-20,"Ohungarumlaut\0Aogonek":-20,"Ohungarumlaut\0Aring":-20,"Ohungarumlaut\0Atilde":-20,"Ohungarumlaut\0T":-40,"Ohungarumlaut\0Tcaron":-40,"Ohungarumlaut\0Tcommaaccent":-40,"Ohungarumlaut\0V":-50,"Ohungarumlaut\0W":-30,"Ohungarumlaut\0X":-60,"Ohungarumlaut\0Y":-70,"Ohungarumlaut\0Yacute":-70,"Ohungarumlaut\0Ydieresis":-70,"Ohungarumlaut\0comma":-40,"Ohungarumlaut\0period":-40,"Omacron\0A":-20,"Omacron\0Aacute":-20,"Omacron\0Abreve":-20,"Omacron\0Acircumflex":-20,"Omacron\0Adieresis":-20,"Omacron\0Agrave":-20,"Omacron\0Amacron":-20,"Omacron\0Aogonek":-20,"Omacron\0Aring":-20,"Omacron\0Atilde":-20,"Omacron\0T":-40,"Omacron\0Tcaron":-40,"Omacron\0Tcommaaccent":-40,"Omacron\0V":-50,"Omacron\0W":-30,"Omacron\0X":-60,"Omacron\0Y":-70,"Omacron\0Yacute":-70,"Omacron\0Ydieresis":-70,"Omacron\0comma":-40,"Omacron\0period":-40,"Oslash\0A":-20,"Oslash\0Aacute":-20,"Oslash\0Abreve":-20,"Oslash\0Acircumflex":-20,"Oslash\0Adieresis":-20,"Oslash\0Agrave":-20,"Oslash\0Amacron":-20,"Oslash\0Aogonek":-20,"Oslash\0Aring":-20,"Oslash\0Atilde":-20,"Oslash\0T":-40,"Oslash\0Tcaron":-40,"Oslash\0Tcommaaccent":-40,"Oslash\0V":-50,"Oslash\0W":-30,"Oslash\0X":-60,"Oslash\0Y":-70,"Oslash\0Yacute":-70,"Oslash\0Ydieresis":-70,"Oslash\0comma":-40,"Oslash\0period":-40,"Otilde\0A":-20,"Otilde\0Aacute":-20,"Otilde\0Abreve":-20,"Otilde\0Acircumflex":-20,"Otilde\0Adieresis":-20,"Otilde\0Agrave":-20,"Otilde\0Amacron":-20,"Otilde\0Aogonek":-20,"Otilde\0Aring":-20,"Otilde\0Atilde":-20,"Otilde\0T":-40,"Otilde\0Tcaron":-40,"Otilde\0Tcommaaccent":-40,"Otilde\0V":-50,"Otilde\0W":-30,"Otilde\0X":-60,"Otilde\0Y":-70,"Otilde\0Yacute":-70,"Otilde\0Ydieresis":-70,"Otilde\0comma":-40,"Otilde\0period":-40,"P\0A":-120,"P\0Aacute":-120,"P\0Abreve":-120,"P\0Acircumflex":-120,"P\0Adieresis":-120,"P\0Agrave":-120,"P\0Amacron":-120,"P\0Aogonek":-120,"P\0Aring":-120,"P\0Atilde":-120,"P\0a":-40,"P\0aacute":-40,"P\0abreve":-40,"P\0acircumflex":-40,"P\0adieresis":-40,"P\0agrave":-40,"P\0amacron":-40,"P\0aogonek":-40,"P\0aring":-40,"P\0atilde":-40,"P\0comma":-180,"P\0e":-50,"P\0eacute":-50,"P\0ecaron":-50,"P\0ecircumflex":-50,"P\0edieresis":-50,"P\0edotaccent":-50,"P\0egrave":-50,"P\0emacron":-50,"P\0eogonek":-50,"P\0o":-50,"P\0oacute":-50,"P\0ocircumflex":-50,"P\0odieresis":-50,"P\0ograve":-50,"P\0ohungarumlaut":-50,"P\0omacron":-50,"P\0oslash":-50,"P\0otilde":-50,"P\0period":-180,"Q\0U":-10,"Q\0Uacute":-10,"Q\0Ucircumflex":-10,"Q\0Udieresis":-10,"Q\0Ugrave":-10,"Q\0Uhungarumlaut":-10,"Q\0Umacron":-10,"Q\0Uogonek":-10,"Q\0Uring":-10,"R\0O":-20,"R\0Oacute":-20,"R\0Ocircumflex":-20,"R\0Odieresis":-20,"R\0Ograve":-20,"R\0Ohungarumlaut":-20,"R\0Omacron":-20,"R\0Oslash":-20,"R\0Otilde":-20,"R\0T":-30,"R\0Tcaron":-30,"R\0Tcommaaccent":-30,"R\0U":-40,"R\0Uacute":-40,"R\0Ucircumflex":-40,"R\0Udieresis":-40,"R\0Ugrave":-40,"R\0Uhungarumlaut":-40,"R\0Umacron":-40,"R\0Uogonek":-40,"R\0Uring":-40,"R\0V":-50,"R\0W":-30,"R\0Y":-50,"R\0Yacute":-50,"R\0Ydieresis":-50,"Racute\0O":-20,"Racute\0Oacute":-20,"Racute\0Ocircumflex":-20,"Racute\0Odieresis":-20,"Racute\0Ograve":-20,"Racute\0Ohungarumlaut":-20,"Racute\0Omacron":-20,"Racute\0Oslash":-20,"Racute\0Otilde":-20,"Racute\0T":-30,"Racute\0Tcaron":-30,"Racute\0Tcommaaccent":-30,"Racute\0U":-40,"Racute\0Uacute":-40,"Racute\0Ucircumflex":-40,"Racute\0Udieresis":-40,"Racute\0Ugrave":-40,"Racute\0Uhungarumlaut":-40,"Racute\0Umacron":-40,"Racute\0Uogonek":-40,"Racute\0Uring":-40,"Racute\0V":-50,"Racute\0W":-30,"Racute\0Y":-50,"Racute\0Yacute":-50,"Racute\0Ydieresis":-50,"Rcaron\0O":-20,"Rcaron\0Oacute":-20,"Rcaron\0Ocircumflex":-20,"Rcaron\0Odieresis":-20,"Rcaron\0Ograve":-20,"Rcaron\0Ohungarumlaut":-20,"Rcaron\0Omacron":-20,"Rcaron\0Oslash":-20,"Rcaron\0Otilde":-20,"Rcaron\0T":-30,"Rcaron\0Tcaron":-30,"Rcaron\0Tcommaaccent":-30,"Rcaron\0U":-40,"Rcaron\0Uacute":-40,"Rcaron\0Ucircumflex":-40,"Rcaron\0Udieresis":-40,"Rcaron\0Ugrave":-40,"Rcaron\0Uhungarumlaut":-40,"Rcaron\0Umacron":-40,"Rcaron\0Uogonek":-40,"Rcaron\0Uring":-40,"Rcaron\0V":-50,"Rcaron\0W":-30,"Rcaron\0Y":-50,"Rcaron\0Yacute":-50,"Rcaron\0Ydieresis":-50,"Rcommaaccent\0O":-20,"Rcommaaccent\0Oacute":-20,"Rcommaaccent\0Ocircumflex":-20,"Rcommaaccent\0Odieresis":-20,"Rcommaaccent\0Ograve":-20,"Rcommaaccent\0Ohungarumlaut":-20,"Rcommaaccent\0Omacron":-20,"Rcommaaccent\0Oslash":-20,"Rcommaaccent\0Otilde":-20,"Rcommaaccent\0T":-30,"Rcommaaccent\0Tcaron":-30,"Rcommaaccent\0Tcommaaccent":-30,"Rcommaaccent\0U":-40,"Rcommaaccent\0Uacute":-40,"Rcommaaccent\0Ucircumflex":-40,"Rcommaaccent\0Udieresis":-40,"Rcommaaccent\0Ugrave":-40,"Rcommaaccent\0Uhungarumlaut":-40,"Rcommaaccent\0Umacron":-40,"Rcommaaccent\0Uogonek":-40,"Rcommaaccent\0Uring":-40,"Rcommaaccent\0V":-50,"Rcommaaccent\0W":-30,"Rcommaaccent\0Y":-50,"Rcommaaccent\0Yacute":-50,"Rcommaaccent\0Ydieresis":-50,"S\0comma":-20,"S\0period":-20,"Sacute\0comma":-20,"Sacute\0period":-20,"Scaron\0comma":-20,"Scaron\0period":-20,"Scedilla\0comma":-20,"Scedilla\0period":-20,"Scommaaccent\0comma":-20,"Scommaaccent\0period":-20,"T\0A":-120,"T\0Aacute":-120,"T\0Abreve":-120,"T\0Acircumflex":-120,"T\0Adieresis":-120,"T\0Agrave":-120,"T\0Amacron":-120,"T\0Aogonek":-120,"T\0Aring":-120,"T\0Atilde":-120,"T\0O":-40,"T\0Oacute":-40,"T\0Ocircumflex":-40,"T\0Odieresis":-40,"T\0Ograve":-40,"T\0Ohungarumlaut":-40,"T\0Omacron":-40,"T\0Oslash":-40,"T\0Otilde":-40,"T\0a":-120,"T\0aacute":-120,"T\0abreve":-60,"T\0acircumflex":-120,"T\0adieresis":-120,"T\0agrave":-120,"T\0amacron":-60,"T\0aogonek":-120,"T\0aring":-120,"T\0atilde":-60,"T\0colon":-20,"T\0comma":-120,"T\0e":-120,"T\0eacute":-120,"T\0ecaron":-120,"T\0ecircumflex":-120,"T\0edieresis":-120,"T\0edotaccent":-120,"T\0egrave":-60,"T\0emacron":-60,"T\0eogonek":-120,"T\0hyphen":-140,"T\0o":-120,"T\0oacute":-120,"T\0ocircumflex":-120,"T\0odieresis":-120,"T\0ograve":-120,"T\0ohungarumlaut":-120,"T\0omacron":-60,"T\0oslash":-120,"T\0otilde":-60,"T\0period":-120,"T\0r":-120,"T\0racute":-120,"T\0rcaron":-120,"T\0rcommaaccent":-120,"T\0semicolon":-20,"T\0u":-120,"T\0uacute":-120,"T\0ucircumflex":-120,"T\0udieresis":-120,"T\0ugrave":-120,"T\0uhungarumlaut":-120,"T\0umacron":-60,"T\0uogonek":-120,"T\0uring":-120,"T\0w":-120,"T\0y":-120,"T\0yacute":-120,"T\0ydieresis":-60,"Tcaron\0A":-120,"Tcaron\0Aacute":-120,"Tcaron\0Abreve":-120,"Tcaron\0Acircumflex":-120,"Tcaron\0Adieresis":-120,"Tcaron\0Agrave":-120,"Tcaron\0Amacron":-120,"Tcaron\0Aogonek":-120,"Tcaron\0Aring":-120,"Tcaron\0Atilde":-120,"Tcaron\0O":-40,"Tcaron\0Oacute":-40,"Tcaron\0Ocircumflex":-40,"Tcaron\0Odieresis":-40,"Tcaron\0Ograve":-40,"Tcaron\0Ohungarumlaut":-40,"Tcaron\0Omacron":-40,"Tcaron\0Oslash":-40,"Tcaron\0Otilde":-40,"Tcaron\0a":-120,"Tcaron\0aacute":-120,"Tcaron\0abreve":-60,"Tcaron\0acircumflex":-120,"Tcaron\0adieresis":-120,"Tcaron\0agrave":-120,"Tcaron\0amacron":-60,"Tcaron\0aogonek":-120,"Tcaron\0aring":-120,"Tcaron\0atilde":-60,"Tcaron\0colon":-20,"Tcaron\0comma":-120,"Tcaron\0e":-120,"Tcaron\0eacute":-120,"Tcaron\0ecaron":-120,"Tcaron\0ecircumflex":-120,"Tcaron\0edieresis":-120,"Tcaron\0edotaccent":-120,"Tcaron\0egrave":-60,"Tcaron\0emacron":-60,"Tcaron\0eogonek":-120,"Tcaron\0hyphen":-140,"Tcaron\0o":-120,"Tcaron\0oacute":-120,"Tcaron\0ocircumflex":-120,"Tcaron\0odieresis":-120,"Tcaron\0ograve":-120,"Tcaron\0ohungarumlaut":-120,"Tcaron\0omacron":-60,"Tcaron\0oslash":-120,"Tcaron\0otilde":-60,"Tcaron\0period":-120,"Tcaron\0r":-120,"Tcaron\0racute":-120,"Tcaron\0rcaron":-120,"Tcaron\0rcommaaccent":-120,"Tcaron\0semicolon":-20,"Tcaron\0u":-120,"Tcaron\0uacute":-120,"Tcaron\0ucircumflex":-120,"Tcaron\0udieresis":-120,"Tcaron\0ugrave":-120,"Tcaron\0uhungarumlaut":-120,"Tcaron\0umacron":-60,"Tcaron\0uogonek":-120,"Tcaron\0uring":-120,"Tcaron\0w":-120,"Tcaron\0y":-120,"Tcaron\0yacute":-120,"Tcaron\0ydieresis":-60,"Tcommaaccent\0A":-120,"Tcommaaccent\0Aacute":-120,"Tcommaaccent\0Abreve":-120,"Tcommaaccent\0Acircumflex":-120,"Tcommaaccent\0Adieresis":-120,"Tcommaaccent\0Agrave":-120,"Tcommaaccent\0Amacron":-120,"Tcommaaccent\0Aogonek":-120,"Tcommaaccent\0Aring":-120,"Tcommaaccent\0Atilde":-120,"Tcommaaccent\0O":-40,"Tcommaaccent\0Oacute":-40,"Tcommaaccent\0Ocircumflex":-40,"Tcommaaccent\0Odieresis":-40,"Tcommaaccent\0Ograve":-40,"Tcommaaccent\0Ohungarumlaut":-40,"Tcommaaccent\0Omacron":-40,"Tcommaaccent\0Oslash":-40,"Tcommaaccent\0Otilde":-40,"Tcommaaccent\0a":-120,"Tcommaaccent\0aacute":-120,"Tcommaaccent\0abreve":-60,"Tcommaaccent\0acircumflex":-120,"Tcommaaccent\0adieresis":-120,"Tcommaaccent\0agrave":-120,"Tcommaaccent\0amacron":-60,"Tcommaaccent\0aogonek":-120,"Tcommaaccent\0aring":-120,"Tcommaaccent\0atilde":-60,"Tcommaaccent\0colon":-20,"Tcommaaccent\0comma":-120,"Tcommaaccent\0e":-120,"Tcommaaccent\0eacute":-120,"Tcommaaccent\0ecaron":-120,"Tcommaaccent\0ecircumflex":-120,"Tcommaaccent\0edieresis":-120,"Tcommaaccent\0edotaccent":-120,"Tcommaaccent\0egrave":-60,"Tcommaaccent\0emacron":-60,"Tcommaaccent\0eogonek":-120,"Tcommaaccent\0hyphen":-140,"Tcommaaccent\0o":-120,"Tcommaaccent\0oacute":-120,"Tcommaaccent\0ocircumflex":-120,"Tcommaaccent\0odieresis":-120,"Tcommaaccent\0ograve":-120,"Tcommaaccent\0ohungarumlaut":-120,"Tcommaaccent\0omacron":-60,"Tcommaaccent\0oslash":-120,"Tcommaaccent\0otilde":-60,"Tcommaaccent\0period":-120,"Tcommaaccent\0r":-120,"Tcommaaccent\0racute":-120,"Tcommaaccent\0rcaron":-120,"Tcommaaccent\0rcommaaccent":-120,"Tcommaaccent\0semicolon":-20,"Tcommaaccent\0u":-120,"Tcommaaccent\0uacute":-120,"Tcommaaccent\0ucircumflex":-120,"Tcommaaccent\0udieresis":-120,"Tcommaaccent\0ugrave":-120,"Tcommaaccent\0uhungarumlaut":-120,"Tcommaaccent\0umacron":-60,"Tcommaaccent\0uogonek":-120,"Tcommaaccent\0uring":-120,"Tcommaaccent\0w":-120,"Tcommaaccent\0y":-120,"Tcommaaccent\0yacute":-120,"Tcommaaccent\0ydieresis":-60,"U\0A":-40,"U\0Aacute":-40,"U\0Abreve":-40,"U\0Acircumflex":-40,"U\0Adieresis":-40,"U\0Agrave":-40,"U\0Amacron":-40,"U\0Aogonek":-40,"U\0Aring":-40,"U\0Atilde":-40,"U\0comma":-40,"U\0period":-40,"Uacute\0A":-40,"Uacute\0Aacute":-40,"Uacute\0Abreve":-40,"Uacute\0Acircumflex":-40,"Uacute\0Adieresis":-40,"Uacute\0Agrave":-40,"Uacute\0Amacron":-40,"Uacute\0Aogonek":-40,"Uacute\0Aring":-40,"Uacute\0Atilde":-40,"Uacute\0comma":-40,"Uacute\0period":-40,"Ucircumflex\0A":-40,"Ucircumflex\0Aacute":-40,"Ucircumflex\0Abreve":-40,"Ucircumflex\0Acircumflex":-40,"Ucircumflex\0Adieresis":-40,"Ucircumflex\0Agrave":-40,"Ucircumflex\0Amacron":-40,"Ucircumflex\0Aogonek":-40,"Ucircumflex\0Aring":-40,"Ucircumflex\0Atilde":-40,"Ucircumflex\0comma":-40,"Ucircumflex\0period":-40,"Udieresis\0A":-40,"Udieresis\0Aacute":-40,"Udieresis\0Abreve":-40,"Udieresis\0Acircumflex":-40,"Udieresis\0Adieresis":-40,"Udieresis\0Agrave":-40,"Udieresis\0Amacron":-40,"Udieresis\0Aogonek":-40,"Udieresis\0Aring":-40,"Udieresis\0Atilde":-40,"Udieresis\0comma":-40,"Udieresis\0period":-40,"Ugrave\0A":-40,"Ugrave\0Aacute":-40,"Ugrave\0Abreve":-40,"Ugrave\0Acircumflex":-40,"Ugrave\0Adieresis":-40,"Ugrave\0Agrave":-40,"Ugrave\0Amacron":-40,"Ugrave\0Aogonek":-40,"Ugrave\0Aring":-40,"Ugrave\0Atilde":-40,"Ugrave\0comma":-40,"Ugrave\0period":-40,"Uhungarumlaut\0A":-40,"Uhungarumlaut\0Aacute":-40,"Uhungarumlaut\0Abreve":-40,"Uhungarumlaut\0Acircumflex":-40,"Uhungarumlaut\0Adieresis":-40,"Uhungarumlaut\0Agrave":-40,"Uhungarumlaut\0Amacron":-40,"Uhungarumlaut\0Aogonek":-40,"Uhungarumlaut\0Aring":-40,"Uhungarumlaut\0Atilde":-40,"Uhungarumlaut\0comma":-40,"Uhungarumlaut\0period":-40,"Umacron\0A":-40,"Umacron\0Aacute":-40,"Umacron\0Abreve":-40,"Umacron\0Acircumflex":-40,"Umacron\0Adieresis":-40,"Umacron\0Agrave":-40,"Umacron\0Amacron":-40,"Umacron\0Aogonek":-40,"Umacron\0Aring":-40,"Umacron\0Atilde":-40,"Umacron\0comma":-40,"Umacron\0period":-40,"Uogonek\0A":-40,"Uogonek\0Aacute":-40,"Uogonek\0Abreve":-40,"Uogonek\0Acircumflex":-40,"Uogonek\0Adieresis":-40,"Uogonek\0Agrave":-40,"Uogonek\0Amacron":-40,"Uogonek\0Aogonek":-40,"Uogonek\0Aring":-40,"Uogonek\0Atilde":-40,"Uogonek\0comma":-40,"Uogonek\0period":-40,"Uring\0A":-40,"Uring\0Aacute":-40,"Uring\0Abreve":-40,"Uring\0Acircumflex":-40,"Uring\0Adieresis":-40,"Uring\0Agrave":-40,"Uring\0Amacron":-40,"Uring\0Aogonek":-40,"Uring\0Aring":-40,"Uring\0Atilde":-40,"Uring\0comma":-40,"Uring\0period":-40,"V\0A":-80,"V\0Aacute":-80,"V\0Abreve":-80,"V\0Acircumflex":-80,"V\0Adieresis":-80,"V\0Agrave":-80,"V\0Amacron":-80,"V\0Aogonek":-80,"V\0Aring":-80,"V\0Atilde":-80,"V\0G":-40,"V\0Gbreve":-40,"V\0Gcommaaccent":-40,"V\0O":-40,"V\0Oacute":-40,"V\0Ocircumflex":-40,"V\0Odieresis":-40,"V\0Ograve":-40,"V\0Ohungarumlaut":-40,"V\0Omacron":-40,"V\0Oslash":-40,"V\0Otilde":-40,"V\0a":-70,"V\0aacute":-70,"V\0abreve":-70,"V\0acircumflex":-70,"V\0adieresis":-70,"V\0agrave":-70,"V\0amacron":-70,"V\0aogonek":-70,"V\0aring":-70,"V\0atilde":-70,"V\0colon":-40,"V\0comma":-125,"V\0e":-80,"V\0eacute":-80,"V\0ecaron":-80,"V\0ecircumflex":-80,"V\0edieresis":-80,"V\0edotaccent":-80,"V\0egrave":-80,"V\0emacron":-80,"V\0eogonek":-80,"V\0hyphen":-80,"V\0o":-80,"V\0oacute":-80,"V\0ocircumflex":-80,"V\0odieresis":-80,"V\0ograve":-80,"V\0ohungarumlaut":-80,"V\0omacron":-80,"V\0oslash":-80,"V\0otilde":-80,"V\0period":-125,"V\0semicolon":-40,"V\0u":-70,"V\0uacute":-70,"V\0ucircumflex":-70,"V\0udieresis":-70,"V\0ugrave":-70,"V\0uhungarumlaut":-70,"V\0umacron":-70,"V\0uogonek":-70,"V\0uring":-70,"W\0A":-50,"W\0Aacute":-50,"W\0Abreve":-50,"W\0Acircumflex":-50,"W\0Adieresis":-50,"W\0Agrave":-50,"W\0Amacron":-50,"W\0Aogonek":-50,"W\0Aring":-50,"W\0Atilde":-50,"W\0O":-20,"W\0Oacute":-20,"W\0Ocircumflex":-20,"W\0Odieresis":-20,"W\0Ograve":-20,"W\0Ohungarumlaut":-20,"W\0Omacron":-20,"W\0Oslash":-20,"W\0Otilde":-20,"W\0a":-40,"W\0aacute":-40,"W\0abreve":-40,"W\0acircumflex":-40,"W\0adieresis":-40,"W\0agrave":-40,"W\0amacron":-40,"W\0aogonek":-40,"W\0aring":-40,"W\0atilde":-40,"W\0comma":-80,"W\0e":-30,"W\0eacute":-30,"W\0ecaron":-30,"W\0ecircumflex":-30,"W\0edieresis":-30,"W\0edotaccent":-30,"W\0egrave":-30,"W\0emacron":-30,"W\0eogonek":-30,"W\0hyphen":-40,"W\0o":-30,"W\0oacute":-30,"W\0ocircumflex":-30,"W\0odieresis":-30,"W\0ograve":-30,"W\0ohungarumlaut":-30,"W\0omacron":-30,"W\0oslash":-30,"W\0otilde":-30,"W\0period":-80,"W\0u":-30,"W\0uacute":-30,"W\0ucircumflex":-30,"W\0udieresis":-30,"W\0ugrave":-30,"W\0uhungarumlaut":-30,"W\0umacron":-30,"W\0uogonek":-30,"W\0uring":-30,"W\0y":-20,"W\0yacute":-20,"W\0ydieresis":-20,"Y\0A":-110,"Y\0Aacute":-110,"Y\0Abreve":-110,"Y\0Acircumflex":-110,"Y\0Adieresis":-110,"Y\0Agrave":-110,"Y\0Amacron":-110,"Y\0Aogonek":-110,"Y\0Aring":-110,"Y\0Atilde":-110,"Y\0O":-85,"Y\0Oacute":-85,"Y\0Ocircumflex":-85,"Y\0Odieresis":-85,"Y\0Ograve":-85,"Y\0Ohungarumlaut":-85,"Y\0Omacron":-85,"Y\0Oslash":-85,"Y\0Otilde":-85,"Y\0a":-140,"Y\0aacute":-140,"Y\0abreve":-70,"Y\0acircumflex":-140,"Y\0adieresis":-140,"Y\0agrave":-140,"Y\0amacron":-70,"Y\0aogonek":-140,"Y\0aring":-140,"Y\0atilde":-140,"Y\0colon":-60,"Y\0comma":-140,"Y\0e":-140,"Y\0eacute":-140,"Y\0ecaron":-140,"Y\0ecircumflex":-140,"Y\0edieresis":-140,"Y\0edotaccent":-140,"Y\0egrave":-140,"Y\0emacron":-70,"Y\0eogonek":-140,"Y\0hyphen":-140,"Y\0i":-20,"Y\0iacute":-20,"Y\0iogonek":-20,"Y\0o":-140,"Y\0oacute":-140,"Y\0ocircumflex":-140,"Y\0odieresis":-140,"Y\0ograve":-140,"Y\0ohungarumlaut":-140,"Y\0omacron":-140,"Y\0oslash":-140,"Y\0otilde":-140,"Y\0period":-140,"Y\0semicolon":-60,"Y\0u":-110,"Y\0uacute":-110,"Y\0ucircumflex":-110,"Y\0udieresis":-110,"Y\0ugrave":-110,"Y\0uhungarumlaut":-110,"Y\0umacron":-110,"Y\0uogonek":-110,"Y\0uring":-110,"Yacute\0A":-110,"Yacute\0Aacute":-110,"Yacute\0Abreve":-110,"Yacute\0Acircumflex":-110,"Yacute\0Adieresis":-110,"Yacute\0Agrave":-110,"Yacute\0Amacron":-110,"Yacute\0Aogonek":-110,"Yacute\0Aring":-110,"Yacute\0Atilde":-110,"Yacute\0O":-85,"Yacute\0Oacute":-85,"Yacute\0Ocircumflex":-85,"Yacute\0Odieresis":-85,"Yacute\0Ograve":-85,"Yacute\0Ohungarumlaut":-85,"Yacute\0Omacron":-85,"Yacute\0Oslash":-85,"Yacute\0Otilde":-85,"Yacute\0a":-140,"Yacute\0aacute":-140,"Yacute\0abreve":-70,"Yacute\0acircumflex":-140,"Yacute\0adieresis":-140,"Yacute\0agrave":-140,"Yacute\0amacron":-70,"Yacute\0aogonek":-140,"Yacute\0aring":-140,"Yacute\0atilde":-70,"Yacute\0colon":-60,"Yacute\0comma":-140,"Yacute\0e":-140,"Yacute\0eacute":-140,"Yacute\0ecaron":-140,"Yacute\0ecircumflex":-140,"Yacute\0edieresis":-140,"Yacute\0edotaccent":-140,"Yacute\0egrave":-140,"Yacute\0emacron":-70,"Yacute\0eogonek":-140,"Yacute\0hyphen":-140,"Yacute\0i":-20,"Yacute\0iacute":-20,"Yacute\0iogonek":-20,"Yacute\0o":-140,"Yacute\0oacute":-140,"Yacute\0ocircumflex":-140,"Yacute\0odieresis":-140,"Yacute\0ograve":-140,"Yacute\0ohungarumlaut":-140,"Yacute\0omacron":-70,"Yacute\0oslash":-140,"Yacute\0otilde":-140,"Yacute\0period":-140,"Yacute\0semicolon":-60,"Yacute\0u":-110,"Yacute\0uacute":-110,"Yacute\0ucircumflex":-110,"Yacute\0udieresis":-110,"Yacute\0ugrave":-110,"Yacute\0uhungarumlaut":-110,"Yacute\0umacron":-110,"Yacute\0uogonek":-110,"Yacute\0uring":-110,"Ydieresis\0A":-110,"Ydieresis\0Aacute":-110,"Ydieresis\0Abreve":-110,"Ydieresis\0Acircumflex":-110,"Ydieresis\0Adieresis":-110,"Ydieresis\0Agrave":-110,"Ydieresis\0Amacron":-110,"Ydieresis\0Aogonek":-110,"Ydieresis\0Aring":-110,"Ydieresis\0Atilde":-110,"Ydieresis\0O":-85,"Ydieresis\0Oacute":-85,"Ydieresis\0Ocircumflex":-85,"Ydieresis\0Odieresis":-85,"Ydieresis\0Ograve":-85,"Ydieresis\0Ohungarumlaut":-85,"Ydieresis\0Omacron":-85,"Ydieresis\0Oslash":-85,"Ydieresis\0Otilde":-85,"Ydieresis\0a":-140,"Ydieresis\0aacute":-140,"Ydieresis\0abreve":-70,"Ydieresis\0acircumflex":-140,"Ydieresis\0adieresis":-140,"Ydieresis\0agrave":-140,"Ydieresis\0amacron":-70,"Ydieresis\0aogonek":-140,"Ydieresis\0aring":-140,"Ydieresis\0atilde":-70,"Ydieresis\0colon":-60,"Ydieresis\0comma":-140,"Ydieresis\0e":-140,"Ydieresis\0eacute":-140,"Ydieresis\0ecaron":-140,"Ydieresis\0ecircumflex":-140,"Ydieresis\0edieresis":-140,"Ydieresis\0edotaccent":-140,"Ydieresis\0egrave":-140,"Ydieresis\0emacron":-70,"Ydieresis\0eogonek":-140,"Ydieresis\0hyphen":-140,"Ydieresis\0i":-20,"Ydieresis\0iacute":-20,"Ydieresis\0iogonek":-20,"Ydieresis\0o":-140,"Ydieresis\0oacute":-140,"Ydieresis\0ocircumflex":-140,"Ydieresis\0odieresis":-140,"Ydieresis\0ograve":-140,"Ydieresis\0ohungarumlaut":-140,"Ydieresis\0omacron":-140,"Ydieresis\0oslash":-140,"Ydieresis\0otilde":-140,"Ydieresis\0period":-140,"Ydieresis\0semicolon":-60,"Ydieresis\0u":-110,"Ydieresis\0uacute":-110,"Ydieresis\0ucircumflex":-110,"Ydieresis\0udieresis":-110,"Ydieresis\0ugrave":-110,"Ydieresis\0uhungarumlaut":-110,"Ydieresis\0umacron":-110,"Ydieresis\0uogonek":-110,"Ydieresis\0uring":-110,"a\0v":-20,"a\0w":-20,"a\0y":-30,"a\0yacute":-30,"a\0ydieresis":-30,"aacute\0v":-20,"aacute\0w":-20,"aacute\0y":-30,"aacute\0yacute":-30,"aacute\0ydieresis":-30,"abreve\0v":-20,"abreve\0w":-20,"abreve\0y":-30,"abreve\0yacute":-30,"abreve\0ydieresis":-30,"acircumflex\0v":-20,"acircumflex\0w":-20,"acircumflex\0y":-30,"acircumflex\0yacute":-30,"acircumflex\0ydieresis":-30,"adieresis\0v":-20,"adieresis\0w":-20,"adieresis\0y":-30,"adieresis\0yacute":-30,"adieresis\0ydieresis":-30,"agrave\0v":-20,"agrave\0w":-20,"agrave\0y":-30,"agrave\0yacute":-30,"agrave\0ydieresis":-30,"amacron\0v":-20,"amacron\0w":-20,"amacron\0y":-30,"amacron\0yacute":-30,"amacron\0ydieresis":-30,"aogonek\0v":-20,"aogonek\0w":-20,"aogonek\0y":-30,"aogonek\0yacute":-30,"aogonek\0ydieresis":-30,"aring\0v":-20,"aring\0w":-20,"aring\0y":-30,"aring\0yacute":-30,"aring\0ydieresis":-30,"atilde\0v":-20,"atilde\0w":-20,"atilde\0y":-30,"atilde\0yacute":-30,"atilde\0ydieresis":-30,"b\0b":-10,"b\0comma":-40,"b\0l":-20,"b\0lacute":-20,"b\0lcommaaccent":-20,"b\0lslash":-20,"b\0period":-40,"b\0u":-20,"b\0uacute":-20,"b\0ucircumflex":-20,"b\0udieresis":-20,"b\0ugrave":-20,"b\0uhungarumlaut":-20,"b\0umacron":-20,"b\0uogonek":-20,"b\0uring":-20,"b\0v":-20,"b\0y":-20,"b\0yacute":-20,"b\0ydieresis":-20,"c\0comma":-15,"c\0k":-20,"c\0kcommaaccent":-20,"cacute\0comma":-15,"cacute\0k":-20,"cacute\0kcommaaccent":-20,"ccaron\0comma":-15,"ccaron\0k":-20,"ccaron\0kcommaaccent":-20,"ccedilla\0comma":-15,"ccedilla\0k":-20,"ccedilla\0kcommaaccent":-20,"colon\0space":-50,"comma\0quotedblright":-100,"comma\0quoteright":-100,"e\0comma":-15,"e\0period":-15,"e\0v":-30,"e\0w":-20,"e\0x":-30,"e\0y":-20,"e\0yacute":-20,"e\0ydieresis":-20,"eacute\0comma":-15,"eacute\0period":-15,"eacute\0v":-30,"eacute\0w":-20,"eacute\0x":-30,"eacute\0y":-20,"eacute\0yacute":-20,"eacute\0ydieresis":-20,"ecaron\0comma":-15,"ecaron\0period":-15,"ecaron\0v":-30,"ecaron\0w":-20,"ecaron\0x":-30,"ecaron\0y":-20,"ecaron\0yacute":-20,"ecaron\0ydieresis":-20,"ecircumflex\0comma":-15,"ecircumflex\0period":-15,"ecircumflex\0v":-30,"ecircumflex\0w":-20,"ecircumflex\0x":-30,"ecircumflex\0y":-20,"ecircumflex\0yacute":-20,"ecircumflex\0ydieresis":-20,"edieresis\0comma":-15,"edieresis\0period":-15,"edieresis\0v":-30,"edieresis\0w":-20,"edieresis\0x":-30,"edieresis\0y":-20,"edieresis\0yacute":-20,"edieresis\0ydieresis":-20,"edotaccent\0comma":-15,"edotaccent\0period":-15,"edotaccent\0v":-30,"edotaccent\0w":-20,"edotaccent\0x":-30,"edotaccent\0y":-20,"edotaccent\0yacute":-20,"edotaccent\0ydieresis":-20,"egrave\0comma":-15,"egrave\0period":-15,"egrave\0v":-30,"egrave\0w":-20,"egrave\0x":-30,"egrave\0y":-20,"egrave\0yacute":-20,"egrave\0ydieresis":-20,"emacron\0comma":-15,"emacron\0period":-15,"emacron\0v":-30,"emacron\0w":-20,"emacron\0x":-30,"emacron\0y":-20,"emacron\0yacute":-20,"emacron\0ydieresis":-20,"eogonek\0comma":-15,"eogonek\0period":-15,"eogonek\0v":-30,"eogonek\0w":-20,"eogonek\0x":-30,"eogonek\0y":-20,"eogonek\0yacute":-20,"eogonek\0ydieresis":-20,"f\0a":-30,"f\0aacute":-30,"f\0abreve":-30,"f\0acircumflex":-30,"f\0adieresis":-30,"f\0agrave":-30,"f\0amacron":-30,"f\0aogonek":-30,"f\0aring":-30,"f\0atilde":-30,"f\0comma":-30,"f\0dotlessi":-28,"f\0e":-30,"f\0eacute":-30,"f\0ecaron":-30,"f\0ecircumflex":-30,"f\0edieresis":-30,"f\0edotaccent":-30,"f\0egrave":-30,"f\0emacron":-30,"f\0eogonek":-30,"f\0o":-30,"f\0oacute":-30,"f\0ocircumflex":-30,"f\0odieresis":-30,"f\0ograve":-30,"f\0ohungarumlaut":-30,"f\0omacron":-30,"f\0oslash":-30,"f\0otilde":-30,"f\0period":-30,"f\0quotedblright":60,"f\0quoteright":50,"g\0r":-10,"g\0racute":-10,"g\0rcaron":-10,"g\0rcommaaccent":-10,"gbreve\0r":-10,"gbreve\0racute":-10,"gbreve\0rcaron":-10,"gbreve\0rcommaaccent":-10,"gcommaaccent\0r":-10,"gcommaaccent\0racute":-10,"gcommaaccent\0rcaron":-10,"gcommaaccent\0rcommaaccent":-10,"h\0y":-30,"h\0yacute":-30,"h\0ydieresis":-30,"k\0e":-20,"k\0eacute":-20,"k\0ecaron":-20,"k\0ecircumflex":-20,"k\0edieresis":-20,"k\0edotaccent":-20,"k\0egrave":-20,"k\0emacron":-20,"k\0eogonek":-20,"k\0o":-20,"k\0oacute":-20,"k\0ocircumflex":-20,"k\0odieresis":-20,"k\0ograve":-20,"k\0ohungarumlaut":-20,"k\0omacron":-20,"k\0oslash":-20,"k\0otilde":-20,"kcommaaccent\0e":-20,"kcommaaccent\0eacute":-20,"kcommaaccent\0ecaron":-20,"kcommaaccent\0ecircumflex":-20,"kcommaaccent\0edieresis":-20,"kcommaaccent\0edotaccent":-20,"kcommaaccent\0egrave":-20,"kcommaaccent\0emacron":-20,"kcommaaccent\0eogonek":-20,"kcommaaccent\0o":-20,"kcommaaccent\0oacute":-20,"kcommaaccent\0ocircumflex":-20,"kcommaaccent\0odieresis":-20,"kcommaaccent\0ograve":-20,"kcommaaccent\0ohungarumlaut":-20,"kcommaaccent\0omacron":-20,"kcommaaccent\0oslash":-20,"kcommaaccent\0otilde":-20,"m\0u":-10,"m\0uacute":-10,"m\0ucircumflex":-10,"m\0udieresis":-10,"m\0ugrave":-10,"m\0uhungarumlaut":-10,"m\0umacron":-10,"m\0uogonek":-10,"m\0uring":-10,"m\0y":-15,"m\0yacute":-15,"m\0ydieresis":-15,"n\0u":-10,"n\0uacute":-10,"n\0ucircumflex":-10,"n\0udieresis":-10,"n\0ugrave":-10,"n\0uhungarumlaut":-10,"n\0umacron":-10,"n\0uogonek":-10,"n\0uring":-10,"n\0v":-20,"n\0y":-15,"n\0yacute":-15,"n\0ydieresis":-15,"nacute\0u":-10,"nacute\0uacute":-10,"nacute\0ucircumflex":-10,"nacute\0udieresis":-10,"nacute\0ugrave":-10,"nacute\0uhungarumlaut":-10,"nacute\0umacron":-10,"nacute\0uogonek":-10,"nacute\0uring":-10,"nacute\0v":-20,"nacute\0y":-15,"nacute\0yacute":-15,"nacute\0ydieresis":-15,"ncaron\0u":-10,"ncaron\0uacute":-10,"ncaron\0ucircumflex":-10,"ncaron\0udieresis":-10,"ncaron\0ugrave":-10,"ncaron\0uhungarumlaut":-10,"ncaron\0umacron":-10,"ncaron\0uogonek":-10,"ncaron\0uring":-10,"ncaron\0v":-20,"ncaron\0y":-15,"ncaron\0yacute":-15,"ncaron\0ydieresis":-15,"ncommaaccent\0u":-10,"ncommaaccent\0uacute":-10,"ncommaaccent\0ucircumflex":-10,"ncommaaccent\0udieresis":-10,"ncommaaccent\0ugrave":-10,"ncommaaccent\0uhungarumlaut":-10,"ncommaaccent\0umacron":-10,"ncommaaccent\0uogonek":-10,"ncommaaccent\0uring":-10,"ncommaaccent\0v":-20,"ncommaaccent\0y":-15,"ncommaaccent\0yacute":-15,"ncommaaccent\0ydieresis":-15,"ntilde\0u":-10,"ntilde\0uacute":-10,"ntilde\0ucircumflex":-10,"ntilde\0udieresis":-10,"ntilde\0ugrave":-10,"ntilde\0uhungarumlaut":-10,"ntilde\0umacron":-10,"ntilde\0uogonek":-10,"ntilde\0uring":-10,"ntilde\0v":-20,"ntilde\0y":-15,"ntilde\0yacute":-15,"ntilde\0ydieresis":-15,"o\0comma":-40,"o\0period":-40,"o\0v":-15,"o\0w":-15,"o\0x":-30,"o\0y":-30,"o\0yacute":-30,"o\0ydieresis":-30,"oacute\0comma":-40,"oacute\0period":-40,"oacute\0v":-15,"oacute\0w":-15,"oacute\0x":-30,"oacute\0y":-30,"oacute\0yacute":-30,"oacute\0ydieresis":-30,"ocircumflex\0comma":-40,"ocircumflex\0period":-40,"ocircumflex\0v":-15,"ocircumflex\0w":-15,"ocircumflex\0x":-30,"ocircumflex\0y":-30,"ocircumflex\0yacute":-30,"ocircumflex\0ydieresis":-30,"odieresis\0comma":-40,"odieresis\0period":-40,"odieresis\0v":-15,"odieresis\0w":-15,"odieresis\0x":-30,"odieresis\0y":-30,"odieresis\0yacute":-30,"odieresis\0ydieresis":-30,"ograve\0comma":-40,"ograve\0period":-40,"ograve\0v":-15,"ograve\0w":-15,"ograve\0x":-30,"ograve\0y":-30,"ograve\0yacute":-30,"ograve\0ydieresis":-30,"ohungarumlaut\0comma":-40,"ohungarumlaut\0period":-40,"ohungarumlaut\0v":-15,"ohungarumlaut\0w":-15,"ohungarumlaut\0x":-30,"ohungarumlaut\0y":-30,"ohungarumlaut\0yacute":-30,"ohungarumlaut\0ydieresis":-30,"omacron\0comma":-40,"omacron\0period":-40,"omacron\0v":-15,"omacron\0w":-15,"omacron\0x":-30,"omacron\0y":-30,"omacron\0yacute":-30,"omacron\0ydieresis":-30,"oslash\0a":-55,"oslash\0aacute":-55,"oslash\0abreve":-55,"oslash\0acircumflex":-55,"oslash\0adieresis":-55,"oslash\0agrave":-55,"oslash\0amacron":-55,"oslash\0aogonek":-55,"oslash\0aring":-55,"oslash\0atilde":-55,"oslash\0b":-55,"oslash\0c":-55,"oslash\0cacute":-55,"oslash\0ccaron":-55,"oslash\0ccedilla":-55,"oslash\0comma":-95,"oslash\0d":-55,"oslash\0dcroat":-55,"oslash\0e":-55,"oslash\0eacute":-55,"oslash\0ecaron":-55,"oslash\0ecircumflex":-55,"oslash\0edieresis":-55,"oslash\0edotaccent":-55,"oslash\0egrave":-55,"oslash\0emacron":-55,"oslash\0eogonek":-55,"oslash\0f":-55,"oslash\0g":-55,"oslash\0gbreve":-55,"oslash\0gcommaaccent":-55,"oslash\0h":-55,"oslash\0i":-55,"oslash\0iacute":-55,"oslash\0icircumflex":-55,"oslash\0idieresis":-55,"oslash\0igrave":-55,"oslash\0imacron":-55,"oslash\0iogonek":-55,"oslash\0j":-55,"oslash\0k":-55,"oslash\0kcommaaccent":-55,"oslash\0l":-55,"oslash\0lacute":-55,"oslash\0lcommaaccent":-55,"oslash\0lslash":-55,"oslash\0m":-55,"oslash\0n":-55,"oslash\0nacute":-55,"oslash\0ncaron":-55,"oslash\0ncommaaccent":-55,"oslash\0ntilde":-55,"oslash\0o":-55,"oslash\0oacute":-55,"oslash\0ocircumflex":-55,"oslash\0odieresis":-55,"oslash\0ograve":-55,"oslash\0ohungarumlaut":-55,"oslash\0omacron":-55,"oslash\0oslash":-55,"oslash\0otilde":-55,"oslash\0p":-55,"oslash\0period":-95,"oslash\0q":-55,"oslash\0r":-55,"oslash\0racute":-55,"oslash\0rcaron":-55,"oslash\0rcommaaccent":-55,"oslash\0s":-55,"oslash\0sacute":-55,"oslash\0scaron":-55,"oslash\0scedilla":-55,"oslash\0scommaaccent":-55,"oslash\0t":-55,"oslash\0tcommaaccent":-55,"oslash\0u":-55,"oslash\0uacute":-55,"oslash\0ucircumflex":-55,"oslash\0udieresis":-55,"oslash\0ugrave":-55,"oslash\0uhungarumlaut":-55,"oslash\0umacron":-55,"oslash\0uogonek":-55,"oslash\0uring":-55,"oslash\0v":-70,"oslash\0w":-70,"oslash\0x":-85,"oslash\0y":-70,"oslash\0yacute":-70,"oslash\0ydieresis":-70,"oslash\0z":-55,"oslash\0zacute":-55,"oslash\0zcaron":-55,"oslash\0zdotaccent":-55,"otilde\0comma":-40,"otilde\0period":-40,"otilde\0v":-15,"otilde\0w":-15,"otilde\0x":-30,"otilde\0y":-30,"otilde\0yacute":-30,"otilde\0ydieresis":-30,"p\0comma":-35,"p\0period":-35,"p\0y":-30,"p\0yacute":-30,"p\0ydieresis":-30,"period\0quotedblright":-100,"period\0quoteright":-100,"period\0space":-60,"quotedblright\0space":-40,"quoteleft\0quoteleft":-57,"quoteright\0d":-50,"quoteright\0dcroat":-50,"quoteright\0quoteright":-57,"quoteright\0r":-50,"quoteright\0racute":-50,"quoteright\0rcaron":-50,"quoteright\0rcommaaccent":-50,"quoteright\0s":-50,"quoteright\0sacute":-50,"quoteright\0scaron":-50,"quoteright\0scedilla":-50,"quoteright\0scommaaccent":-50,"quoteright\0space":-70,"r\0a":-10,"r\0aacute":-10,"r\0abreve":-10,"r\0acircumflex":-10,"r\0adieresis":-10,"r\0agrave":-10,"r\0amacron":-10,"r\0aogonek":-10,"r\0aring":-10,"r\0atilde":-10,"r\0colon":30,"r\0comma":-50,"r\0i":15,"r\0iacute":15,"r\0icircumflex":15,"r\0idieresis":15,"r\0igrave":15,"r\0imacron":15,"r\0iogonek":15,"r\0k":15,"r\0kcommaaccent":15,"r\0l":15,"r\0lacute":15,"r\0lcommaaccent":15,"r\0lslash":15,"r\0m":25,"r\0n":25,"r\0nacute":25,"r\0ncaron":25,"r\0ncommaaccent":25,"r\0ntilde":25,"r\0p":30,"r\0period":-50,"r\0semicolon":30,"r\0t":40,"r\0tcommaaccent":40,"r\0u":15,"r\0uacute":15,"r\0ucircumflex":15,"r\0udieresis":15,"r\0ugrave":15,"r\0uhungarumlaut":15,"r\0umacron":15,"r\0uogonek":15,"r\0uring":15,"r\0v":30,"r\0y":30,"r\0yacute":30,"r\0ydieresis":30,"racute\0a":-10,"racute\0aacute":-10,"racute\0abreve":-10,"racute\0acircumflex":-10,"racute\0adieresis":-10,"racute\0agrave":-10,"racute\0amacron":-10,"racute\0aogonek":-10,"racute\0aring":-10,"racute\0atilde":-10,"racute\0colon":30,"racute\0comma":-50,"racute\0i":15,"racute\0iacute":15,"racute\0icircumflex":15,"racute\0idieresis":15,"racute\0igrave":15,"racute\0imacron":15,"racute\0iogonek":15,"racute\0k":15,"racute\0kcommaaccent":15,"racute\0l":15,"racute\0lacute":15,"racute\0lcommaaccent":15,"racute\0lslash":15,"racute\0m":25,"racute\0n":25,"racute\0nacute":25,"racute\0ncaron":25,"racute\0ncommaaccent":25,"racute\0ntilde":25,"racute\0p":30,"racute\0period":-50,"racute\0semicolon":30,"racute\0t":40,"racute\0tcommaaccent":40,"racute\0u":15,"racute\0uacute":15,"racute\0ucircumflex":15,"racute\0udieresis":15,"racute\0ugrave":15,"racute\0uhungarumlaut":15,"racute\0umacron":15,"racute\0uogonek":15,"racute\0uring":15,"racute\0v":30,"racute\0y":30,"racute\0yacute":30,"racute\0ydieresis":30,"rcaron\0a":-10,"rcaron\0aacute":-10,"rcaron\0abreve":-10,"rcaron\0acircumflex":-10,"rcaron\0adieresis":-10,"rcaron\0agrave":-10,"rcaron\0amacron":-10,"rcaron\0aogonek":-10,"rcaron\0aring":-10,"rcaron\0atilde":-10,"rcaron\0colon":30,"rcaron\0comma":-50,"rcaron\0i":15,"rcaron\0iacute":15,"rcaron\0icircumflex":15,"rcaron\0idieresis":15,"rcaron\0igrave":15,"rcaron\0imacron":15,"rcaron\0iogonek":15,"rcaron\0k":15,"rcaron\0kcommaaccent":15,"rcaron\0l":15,"rcaron\0lacute":15,"rcaron\0lcommaaccent":15,"rcaron\0lslash":15,"rcaron\0m":25,"rcaron\0n":25,"rcaron\0nacute":25,"rcaron\0ncaron":25,"rcaron\0ncommaaccent":25,"rcaron\0ntilde":25,"rcaron\0p":30,"rcaron\0period":-50,"rcaron\0semicolon":30,"rcaron\0t":40,"rcaron\0tcommaaccent":40,"rcaron\0u":15,"rcaron\0uacute":15,"rcaron\0ucircumflex":15,"rcaron\0udieresis":15,"rcaron\0ugrave":15,"rcaron\0uhungarumlaut":15,"rcaron\0umacron":15,"rcaron\0uogonek":15,"rcaron\0uring":15,"rcaron\0v":30,"rcaron\0y":30,"rcaron\0yacute":30,"rcaron\0ydieresis":30,"rcommaaccent\0a":-10,"rcommaaccent\0aacute":-10,"rcommaaccent\0abreve":-10,"rcommaaccent\0acircumflex":-10,"rcommaaccent\0adieresis":-10,"rcommaaccent\0agrave":-10,"rcommaaccent\0amacron":-10,"rcommaaccent\0aogonek":-10,"rcommaaccent\0aring":-10,"rcommaaccent\0atilde":-10,"rcommaaccent\0colon":30,"rcommaaccent\0comma":-50,"rcommaaccent\0i":15,"rcommaaccent\0iacute":15,"rcommaaccent\0icircumflex":15,"rcommaaccent\0idieresis":15,"rcommaaccent\0igrave":15,"rcommaaccent\0imacron":15,"rcommaaccent\0iogonek":15,"rcommaaccent\0k":15,"rcommaaccent\0kcommaaccent":15,"rcommaaccent\0l":15,"rcommaaccent\0lacute":15,"rcommaaccent\0lcommaaccent":15,"rcommaaccent\0lslash":15,"rcommaaccent\0m":25,"rcommaaccent\0n":25,"rcommaaccent\0nacute":25,"rcommaaccent\0ncaron":25,"rcommaaccent\0ncommaaccent":25,"rcommaaccent\0ntilde":25,"rcommaaccent\0p":30,"rcommaaccent\0period":-50,"rcommaaccent\0semicolon":30,"rcommaaccent\0t":40,"rcommaaccent\0tcommaaccent":40,"rcommaaccent\0u":15,"rcommaaccent\0uacute":15,"rcommaaccent\0ucircumflex":15,"rcommaaccent\0udieresis":15,"rcommaaccent\0ugrave":15,"rcommaaccent\0uhungarumlaut":15,"rcommaaccent\0umacron":15,"rcommaaccent\0uogonek":15,"rcommaaccent\0uring":15,"rcommaaccent\0v":30,"rcommaaccent\0y":30,"rcommaaccent\0yacute":30,"rcommaaccent\0ydieresis":30,"s\0comma":-15,"s\0period":-15,"s\0w":-30,"sacute\0comma":-15,"sacute\0period":-15,"sacute\0w":-30,"scaron\0comma":-15,"scaron\0period":-15,"scaron\0w":-30,"scedilla\0comma":-15,"scedilla\0period":-15,"scedilla\0w":-30,"scommaaccent\0comma":-15,"scommaaccent\0period":-15,"scommaaccent\0w":-30,"semicolon\0space":-50,"space\0T":-50,"space\0Tcaron":-50,"space\0Tcommaaccent":-50,"space\0V":-50,"space\0W":-40,"space\0Y":-90,"space\0Yacute":-90,"space\0Ydieresis":-90,"space\0quotedblleft":-30,"space\0quoteleft":-60,"v\0a":-25,"v\0aacute":-25,"v\0abreve":-25,"v\0acircumflex":-25,"v\0adieresis":-25,"v\0agrave":-25,"v\0amacron":-25,"v\0aogonek":-25,"v\0aring":-25,"v\0atilde":-25,"v\0comma":-80,"v\0e":-25,"v\0eacute":-25,"v\0ecaron":-25,"v\0ecircumflex":-25,"v\0edieresis":-25,"v\0edotaccent":-25,"v\0egrave":-25,"v\0emacron":-25,"v\0eogonek":-25,"v\0o":-25,"v\0oacute":-25,"v\0ocircumflex":-25,"v\0odieresis":-25,"v\0ograve":-25,"v\0ohungarumlaut":-25,"v\0omacron":-25,"v\0oslash":-25,"v\0otilde":-25,"v\0period":-80,"w\0a":-15,"w\0aacute":-15,"w\0abreve":-15,"w\0acircumflex":-15,"w\0adieresis":-15,"w\0agrave":-15,"w\0amacron":-15,"w\0aogonek":-15,"w\0aring":-15,"w\0atilde":-15,"w\0comma":-60,"w\0e":-10,"w\0eacute":-10,"w\0ecaron":-10,"w\0ecircumflex":-10,"w\0edieresis":-10,"w\0edotaccent":-10,"w\0egrave":-10,"w\0emacron":-10,"w\0eogonek":-10,"w\0o":-10,"w\0oacute":-10,"w\0ocircumflex":-10,"w\0odieresis":-10,"w\0ograve":-10,"w\0ohungarumlaut":-10,"w\0omacron":-10,"w\0oslash":-10,"w\0otilde":-10,"w\0period":-60,"x\0e":-30,"x\0eacute":-30,"x\0ecaron":-30,"x\0ecircumflex":-30,"x\0edieresis":-30,"x\0edotaccent":-30,"x\0egrave":-30,"x\0emacron":-30,"x\0eogonek":-30,"y\0a":-20,"y\0aacute":-20,"y\0abreve":-20,"y\0acircumflex":-20,"y\0adieresis":-20,"y\0agrave":-20,"y\0amacron":-20,"y\0aogonek":-20,"y\0aring":-20,"y\0atilde":-20,"y\0comma":-100,"y\0e":-20,"y\0eacute":-20,"y\0ecaron":-20,"y\0ecircumflex":-20,"y\0edieresis":-20,"y\0edotaccent":-20,"y\0egrave":-20,"y\0emacron":-20,"y\0eogonek":-20,"y\0o":-20,"y\0oacute":-20,"y\0ocircumflex":-20,"y\0odieresis":-20,"y\0ograve":-20,"y\0ohungarumlaut":-20,"y\0omacron":-20,"y\0oslash":-20,"y\0otilde":-20,"y\0period":-100,"yacute\0a":-20,"yacute\0aacute":-20,"yacute\0abreve":-20,"yacute\0acircumflex":-20,"yacute\0adieresis":-20,"yacute\0agrave":-20,"yacute\0amacron":-20,"yacute\0aogonek":-20,"yacute\0aring":-20,"yacute\0atilde":-20,"yacute\0comma":-100,"yacute\0e":-20,"yacute\0eacute":-20,"yacute\0ecaron":-20,"yacute\0ecircumflex":-20,"yacute\0edieresis":-20,"yacute\0edotaccent":-20,"yacute\0egrave":-20,"yacute\0emacron":-20,"yacute\0eogonek":-20,"yacute\0o":-20,"yacute\0oacute":-20,"yacute\0ocircumflex":-20,"yacute\0odieresis":-20,"yacute\0ograve":-20,"yacute\0ohungarumlaut":-20,"yacute\0omacron":-20,"yacute\0oslash":-20,"yacute\0otilde":-20,"yacute\0period":-100,"ydieresis\0a":-20,"ydieresis\0aacute":-20,"ydieresis\0abreve":-20,"ydieresis\0acircumflex":-20,"ydieresis\0adieresis":-20,"ydieresis\0agrave":-20,"ydieresis\0amacron":-20,"ydieresis\0aogonek":-20,"ydieresis\0aring":-20,"ydieresis\0atilde":-20,"ydieresis\0comma":-100,"ydieresis\0e":-20,"ydieresis\0eacute":-20,"ydieresis\0ecaron":-20,"ydieresis\0ecircumflex":-20,"ydieresis\0edieresis":-20,"ydieresis\0edotaccent":-20,"ydieresis\0egrave":-20,"ydieresis\0emacron":-20,"ydieresis\0eogonek":-20,"ydieresis\0o":-20,"ydieresis\0oacute":-20,"ydieresis\0ocircumflex":-20,"ydieresis\0odieresis":-20,"ydieresis\0ograve":-20,"ydieresis\0ohungarumlaut":-20,"ydieresis\0omacron":-20,"ydieresis\0oslash":-20,"ydieresis\0otilde":-20,"ydieresis\0period":-100,"z\0e":-15,"z\0eacute":-15,"z\0ecaron":-15,"z\0ecircumflex":-15,"z\0edieresis":-15,"z\0edotaccent":-15,"z\0egrave":-15,"z\0emacron":-15,"z\0eogonek":-15,"z\0o":-15,"z\0oacute":-15,"z\0ocircumflex":-15,"z\0odieresis":-15,"z\0ograve":-15,"z\0ohungarumlaut":-15,"z\0omacron":-15,"z\0oslash":-15,"z\0otilde":-15,"zacute\0e":-15,"zacute\0eacute":-15,"zacute\0ecaron":-15,"zacute\0ecircumflex":-15,"zacute\0edieresis":-15,"zacute\0edotaccent":-15,"zacute\0egrave":-15,"zacute\0emacron":-15,"zacute\0eogonek":-15,"zacute\0o":-15,"zacute\0oacute":-15,"zacute\0ocircumflex":-15,"zacute\0odieresis":-15,"zacute\0ograve":-15,"zacute\0ohungarumlaut":-15,"zacute\0omacron":-15,"zacute\0oslash":-15,"zacute\0otilde":-15,"zcaron\0e":-15,"zcaron\0eacute":-15,"zcaron\0ecaron":-15,"zcaron\0ecircumflex":-15,"zcaron\0edieresis":-15,"zcaron\0edotaccent":-15,"zcaron\0egrave":-15,"zcaron\0emacron":-15,"zcaron\0eogonek":-15,"zcaron\0o":-15,"zcaron\0oacute":-15,"zcaron\0ocircumflex":-15,"zcaron\0odieresis":-15,"zcaron\0ograve":-15,"zcaron\0ohungarumlaut":-15,"zcaron\0omacron":-15,"zcaron\0oslash":-15,"zcaron\0otilde":-15,"zdotaccent\0e":-15,"zdotaccent\0eacute":-15,"zdotaccent\0ecaron":-15,"zdotaccent\0ecircumflex":-15,"zdotaccent\0edieresis":-15,"zdotaccent\0edotaccent":-15,"zdotaccent\0egrave":-15,"zdotaccent\0emacron":-15,"zdotaccent\0eogonek":-15,"zdotaccent\0o":-15,"zdotaccent\0oacute":-15,"zdotaccent\0ocircumflex":-15,"zdotaccent\0odieresis":-15,"zdotaccent\0ograve":-15,"zdotaccent\0ohungarumlaut":-15,"zdotaccent\0omacron":-15,"zdotaccent\0oslash":-15,"zdotaccent\0otilde":-15}},"Helvetica-Bold":{attributes:{Comment:["Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated.  All Rights Reserved.","Creation Date: Thu May  1 12:43:52 1997","UniqueID 43052","VMusage 37169 48194"],FontName:"Helvetica-Bold",FullName:"Helvetica Bold",FamilyName:"Helvetica",Weight:"Bold",ItalicAngle:"0",IsFixedPitch:"false",CharacterSet:"ExtendedRoman",FontBBox:"-170 -228 1003 962 ",UnderlinePosition:"-100",UnderlineThickness:"50",Version:"002.000",Notice:"Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated.  All Rights Reserved.Helvetica is a trademark of Linotype-Hell AG and/or its subsidiaries.",EncodingScheme:"AdobeStandardEncoding",CapHeight:"718",XHeight:"532",Ascender:"718",Descender:"-207",StdHW:"118",StdVW:"140"},glyphWidths:{space:278,exclam:333,quotedbl:474,numbersign:556,dollar:556,percent:889,ampersand:722,quoteright:278,parenleft:333,parenright:333,asterisk:389,plus:584,comma:278,hyphen:333,period:278,slash:278,zero:556,one:556,two:556,three:556,four:556,five:556,six:556,seven:556,eight:556,nine:556,colon:333,semicolon:333,less:584,equal:584,greater:584,question:611,at:975,A:722,B:722,C:722,D:722,E:667,F:611,G:778,H:722,I:278,J:556,K:722,L:611,M:833,N:722,O:778,P:667,Q:778,R:722,S:667,T:611,U:722,V:667,W:944,X:667,Y:667,Z:611,bracketleft:333,backslash:278,bracketright:333,asciicircum:584,underscore:556,quoteleft:278,a:556,b:611,c:556,d:611,e:556,f:333,g:611,h:611,i:278,j:278,k:556,l:278,m:889,n:611,o:611,p:611,q:611,r:389,s:556,t:333,u:611,v:556,w:778,x:556,y:556,z:500,braceleft:389,bar:280,braceright:389,asciitilde:584,exclamdown:333,cent:556,sterling:556,fraction:167,yen:556,florin:556,section:556,currency:556,quotesingle:238,quotedblleft:500,guillemotleft:556,guilsinglleft:333,guilsinglright:333,fi:611,fl:611,endash:556,dagger:556,daggerdbl:556,periodcentered:278,paragraph:556,bullet:350,quotesinglbase:278,quotedblbase:500,quotedblright:500,guillemotright:556,ellipsis:1e3,perthousand:1e3,questiondown:611,grave:333,acute:333,circumflex:333,tilde:333,macron:333,breve:333,dotaccent:333,dieresis:333,ring:333,cedilla:333,hungarumlaut:333,ogonek:333,caron:333,emdash:1e3,AE:1e3,ordfeminine:370,Lslash:611,Oslash:778,OE:1e3,ordmasculine:365,ae:889,dotlessi:278,lslash:278,oslash:611,oe:944,germandbls:611,Idieresis:278,eacute:556,abreve:556,uhungarumlaut:611,ecaron:556,Ydieresis:667,divide:584,Yacute:667,Acircumflex:722,aacute:556,Ucircumflex:722,yacute:556,scommaaccent:556,ecircumflex:556,Uring:722,Udieresis:722,aogonek:556,Uacute:722,uogonek:611,Edieresis:667,Dcroat:722,commaaccent:250,copyright:737,Emacron:667,ccaron:556,aring:556,Ncommaaccent:722,lacute:278,agrave:556,Tcommaaccent:611,Cacute:722,atilde:556,Edotaccent:667,scaron:556,scedilla:556,iacute:278,lozenge:494,Rcaron:722,Gcommaaccent:778,ucircumflex:611,acircumflex:556,Amacron:722,rcaron:389,ccedilla:556,Zdotaccent:611,Thorn:667,Omacron:778,Racute:722,Sacute:667,dcaron:743,Umacron:722,uring:611,threesuperior:333,Ograve:778,Agrave:722,Abreve:722,multiply:584,uacute:611,Tcaron:611,partialdiff:494,ydieresis:556,Nacute:722,icircumflex:278,Ecircumflex:667,adieresis:556,edieresis:556,cacute:556,nacute:611,umacron:611,Ncaron:722,Iacute:278,plusminus:584,brokenbar:280,registered:737,Gbreve:778,Idotaccent:278,summation:600,Egrave:667,racute:389,omacron:611,Zacute:611,Zcaron:611,greaterequal:549,Eth:722,Ccedilla:722,lcommaaccent:278,tcaron:389,eogonek:556,Uogonek:722,Aacute:722,Adieresis:722,egrave:556,zacute:500,iogonek:278,Oacute:778,oacute:611,amacron:556,sacute:556,idieresis:278,Ocircumflex:778,Ugrave:722,Delta:612,thorn:611,twosuperior:333,Odieresis:778,mu:611,igrave:278,ohungarumlaut:611,Eogonek:667,dcroat:611,threequarters:834,Scedilla:667,lcaron:400,Kcommaaccent:722,Lacute:611,trademark:1e3,edotaccent:556,Igrave:278,Imacron:278,Lcaron:611,onehalf:834,lessequal:549,ocircumflex:611,ntilde:611,Uhungarumlaut:722,Eacute:667,emacron:556,gbreve:611,onequarter:834,Scaron:667,Scommaaccent:667,Ohungarumlaut:778,degree:400,ograve:611,Ccaron:722,ugrave:611,radical:549,Dcaron:722,rcommaaccent:389,Ntilde:722,otilde:611,Rcommaaccent:722,Lcommaaccent:611,Atilde:722,Aogonek:722,Aring:722,Otilde:778,zdotaccent:500,Ecaron:667,Iogonek:278,kcommaaccent:556,minus:584,Icircumflex:278,ncaron:611,tcommaaccent:333,logicalnot:584,odieresis:611,udieresis:611,notequal:549,gcommaaccent:611,eth:611,zcaron:500,ncommaaccent:611,onesuperior:333,imacron:278,Euro:556},kernPairs:{"A\0C":-40,"A\0Cacute":-40,"A\0Ccaron":-40,"A\0Ccedilla":-40,"A\0G":-50,"A\0Gbreve":-50,"A\0Gcommaaccent":-50,"A\0O":-40,"A\0Oacute":-40,"A\0Ocircumflex":-40,"A\0Odieresis":-40,"A\0Ograve":-40,"A\0Ohungarumlaut":-40,"A\0Omacron":-40,"A\0Oslash":-40,"A\0Otilde":-40,"A\0Q":-40,"A\0T":-90,"A\0Tcaron":-90,"A\0Tcommaaccent":-90,"A\0U":-50,"A\0Uacute":-50,"A\0Ucircumflex":-50,"A\0Udieresis":-50,"A\0Ugrave":-50,"A\0Uhungarumlaut":-50,"A\0Umacron":-50,"A\0Uogonek":-50,"A\0Uring":-50,"A\0V":-80,"A\0W":-60,"A\0Y":-110,"A\0Yacute":-110,"A\0Ydieresis":-110,"A\0u":-30,"A\0uacute":-30,"A\0ucircumflex":-30,"A\0udieresis":-30,"A\0ugrave":-30,"A\0uhungarumlaut":-30,"A\0umacron":-30,"A\0uogonek":-30,"A\0uring":-30,"A\0v":-40,"A\0w":-30,"A\0y":-30,"A\0yacute":-30,"A\0ydieresis":-30,"Aacute\0C":-40,"Aacute\0Cacute":-40,"Aacute\0Ccaron":-40,"Aacute\0Ccedilla":-40,"Aacute\0G":-50,"Aacute\0Gbreve":-50,"Aacute\0Gcommaaccent":-50,"Aacute\0O":-40,"Aacute\0Oacute":-40,"Aacute\0Ocircumflex":-40,"Aacute\0Odieresis":-40,"Aacute\0Ograve":-40,"Aacute\0Ohungarumlaut":-40,"Aacute\0Omacron":-40,"Aacute\0Oslash":-40,"Aacute\0Otilde":-40,"Aacute\0Q":-40,"Aacute\0T":-90,"Aacute\0Tcaron":-90,"Aacute\0Tcommaaccent":-90,"Aacute\0U":-50,"Aacute\0Uacute":-50,"Aacute\0Ucircumflex":-50,"Aacute\0Udieresis":-50,"Aacute\0Ugrave":-50,"Aacute\0Uhungarumlaut":-50,"Aacute\0Umacron":-50,"Aacute\0Uogonek":-50,"Aacute\0Uring":-50,"Aacute\0V":-80,"Aacute\0W":-60,"Aacute\0Y":-110,"Aacute\0Yacute":-110,"Aacute\0Ydieresis":-110,"Aacute\0u":-30,"Aacute\0uacute":-30,"Aacute\0ucircumflex":-30,"Aacute\0udieresis":-30,"Aacute\0ugrave":-30,"Aacute\0uhungarumlaut":-30,"Aacute\0umacron":-30,"Aacute\0uogonek":-30,"Aacute\0uring":-30,"Aacute\0v":-40,"Aacute\0w":-30,"Aacute\0y":-30,"Aacute\0yacute":-30,"Aacute\0ydieresis":-30,"Abreve\0C":-40,"Abreve\0Cacute":-40,"Abreve\0Ccaron":-40,"Abreve\0Ccedilla":-40,"Abreve\0G":-50,"Abreve\0Gbreve":-50,"Abreve\0Gcommaaccent":-50,"Abreve\0O":-40,"Abreve\0Oacute":-40,"Abreve\0Ocircumflex":-40,"Abreve\0Odieresis":-40,"Abreve\0Ograve":-40,"Abreve\0Ohungarumlaut":-40,"Abreve\0Omacron":-40,"Abreve\0Oslash":-40,"Abreve\0Otilde":-40,"Abreve\0Q":-40,"Abreve\0T":-90,"Abreve\0Tcaron":-90,"Abreve\0Tcommaaccent":-90,"Abreve\0U":-50,"Abreve\0Uacute":-50,"Abreve\0Ucircumflex":-50,"Abreve\0Udieresis":-50,"Abreve\0Ugrave":-50,"Abreve\0Uhungarumlaut":-50,"Abreve\0Umacron":-50,"Abreve\0Uogonek":-50,"Abreve\0Uring":-50,"Abreve\0V":-80,"Abreve\0W":-60,"Abreve\0Y":-110,"Abreve\0Yacute":-110,"Abreve\0Ydieresis":-110,"Abreve\0u":-30,"Abreve\0uacute":-30,"Abreve\0ucircumflex":-30,"Abreve\0udieresis":-30,"Abreve\0ugrave":-30,"Abreve\0uhungarumlaut":-30,"Abreve\0umacron":-30,"Abreve\0uogonek":-30,"Abreve\0uring":-30,"Abreve\0v":-40,"Abreve\0w":-30,"Abreve\0y":-30,"Abreve\0yacute":-30,"Abreve\0ydieresis":-30,"Acircumflex\0C":-40,"Acircumflex\0Cacute":-40,"Acircumflex\0Ccaron":-40,"Acircumflex\0Ccedilla":-40,"Acircumflex\0G":-50,"Acircumflex\0Gbreve":-50,"Acircumflex\0Gcommaaccent":-50,"Acircumflex\0O":-40,"Acircumflex\0Oacute":-40,"Acircumflex\0Ocircumflex":-40,"Acircumflex\0Odieresis":-40,"Acircumflex\0Ograve":-40,"Acircumflex\0Ohungarumlaut":-40,"Acircumflex\0Omacron":-40,"Acircumflex\0Oslash":-40,"Acircumflex\0Otilde":-40,"Acircumflex\0Q":-40,"Acircumflex\0T":-90,"Acircumflex\0Tcaron":-90,"Acircumflex\0Tcommaaccent":-90,"Acircumflex\0U":-50,"Acircumflex\0Uacute":-50,"Acircumflex\0Ucircumflex":-50,"Acircumflex\0Udieresis":-50,"Acircumflex\0Ugrave":-50,"Acircumflex\0Uhungarumlaut":-50,"Acircumflex\0Umacron":-50,"Acircumflex\0Uogonek":-50,"Acircumflex\0Uring":-50,"Acircumflex\0V":-80,"Acircumflex\0W":-60,"Acircumflex\0Y":-110,"Acircumflex\0Yacute":-110,"Acircumflex\0Ydieresis":-110,"Acircumflex\0u":-30,"Acircumflex\0uacute":-30,"Acircumflex\0ucircumflex":-30,"Acircumflex\0udieresis":-30,"Acircumflex\0ugrave":-30,"Acircumflex\0uhungarumlaut":-30,"Acircumflex\0umacron":-30,"Acircumflex\0uogonek":-30,"Acircumflex\0uring":-30,"Acircumflex\0v":-40,"Acircumflex\0w":-30,"Acircumflex\0y":-30,"Acircumflex\0yacute":-30,"Acircumflex\0ydieresis":-30,"Adieresis\0C":-40,"Adieresis\0Cacute":-40,"Adieresis\0Ccaron":-40,"Adieresis\0Ccedilla":-40,"Adieresis\0G":-50,"Adieresis\0Gbreve":-50,"Adieresis\0Gcommaaccent":-50,"Adieresis\0O":-40,"Adieresis\0Oacute":-40,"Adieresis\0Ocircumflex":-40,"Adieresis\0Odieresis":-40,"Adieresis\0Ograve":-40,"Adieresis\0Ohungarumlaut":-40,"Adieresis\0Omacron":-40,"Adieresis\0Oslash":-40,"Adieresis\0Otilde":-40,"Adieresis\0Q":-40,"Adieresis\0T":-90,"Adieresis\0Tcaron":-90,"Adieresis\0Tcommaaccent":-90,"Adieresis\0U":-50,"Adieresis\0Uacute":-50,"Adieresis\0Ucircumflex":-50,"Adieresis\0Udieresis":-50,"Adieresis\0Ugrave":-50,"Adieresis\0Uhungarumlaut":-50,"Adieresis\0Umacron":-50,"Adieresis\0Uogonek":-50,"Adieresis\0Uring":-50,"Adieresis\0V":-80,"Adieresis\0W":-60,"Adieresis\0Y":-110,"Adieresis\0Yacute":-110,"Adieresis\0Ydieresis":-110,"Adieresis\0u":-30,"Adieresis\0uacute":-30,"Adieresis\0ucircumflex":-30,"Adieresis\0udieresis":-30,"Adieresis\0ugrave":-30,"Adieresis\0uhungarumlaut":-30,"Adieresis\0umacron":-30,"Adieresis\0uogonek":-30,"Adieresis\0uring":-30,"Adieresis\0v":-40,"Adieresis\0w":-30,"Adieresis\0y":-30,"Adieresis\0yacute":-30,"Adieresis\0ydieresis":-30,"Agrave\0C":-40,"Agrave\0Cacute":-40,"Agrave\0Ccaron":-40,"Agrave\0Ccedilla":-40,"Agrave\0G":-50,"Agrave\0Gbreve":-50,"Agrave\0Gcommaaccent":-50,"Agrave\0O":-40,"Agrave\0Oacute":-40,"Agrave\0Ocircumflex":-40,"Agrave\0Odieresis":-40,"Agrave\0Ograve":-40,"Agrave\0Ohungarumlaut":-40,"Agrave\0Omacron":-40,"Agrave\0Oslash":-40,"Agrave\0Otilde":-40,"Agrave\0Q":-40,"Agrave\0T":-90,"Agrave\0Tcaron":-90,"Agrave\0Tcommaaccent":-90,"Agrave\0U":-50,"Agrave\0Uacute":-50,"Agrave\0Ucircumflex":-50,"Agrave\0Udieresis":-50,"Agrave\0Ugrave":-50,"Agrave\0Uhungarumlaut":-50,"Agrave\0Umacron":-50,"Agrave\0Uogonek":-50,"Agrave\0Uring":-50,"Agrave\0V":-80,"Agrave\0W":-60,"Agrave\0Y":-110,"Agrave\0Yacute":-110,"Agrave\0Ydieresis":-110,"Agrave\0u":-30,"Agrave\0uacute":-30,"Agrave\0ucircumflex":-30,"Agrave\0udieresis":-30,"Agrave\0ugrave":-30,"Agrave\0uhungarumlaut":-30,"Agrave\0umacron":-30,"Agrave\0uogonek":-30,"Agrave\0uring":-30,"Agrave\0v":-40,"Agrave\0w":-30,"Agrave\0y":-30,"Agrave\0yacute":-30,"Agrave\0ydieresis":-30,"Amacron\0C":-40,"Amacron\0Cacute":-40,"Amacron\0Ccaron":-40,"Amacron\0Ccedilla":-40,"Amacron\0G":-50,"Amacron\0Gbreve":-50,"Amacron\0Gcommaaccent":-50,"Amacron\0O":-40,"Amacron\0Oacute":-40,"Amacron\0Ocircumflex":-40,"Amacron\0Odieresis":-40,"Amacron\0Ograve":-40,"Amacron\0Ohungarumlaut":-40,"Amacron\0Omacron":-40,"Amacron\0Oslash":-40,"Amacron\0Otilde":-40,"Amacron\0Q":-40,"Amacron\0T":-90,"Amacron\0Tcaron":-90,"Amacron\0Tcommaaccent":-90,"Amacron\0U":-50,"Amacron\0Uacute":-50,"Amacron\0Ucircumflex":-50,"Amacron\0Udieresis":-50,"Amacron\0Ugrave":-50,"Amacron\0Uhungarumlaut":-50,"Amacron\0Umacron":-50,"Amacron\0Uogonek":-50,"Amacron\0Uring":-50,"Amacron\0V":-80,"Amacron\0W":-60,"Amacron\0Y":-110,"Amacron\0Yacute":-110,"Amacron\0Ydieresis":-110,"Amacron\0u":-30,"Amacron\0uacute":-30,"Amacron\0ucircumflex":-30,"Amacron\0udieresis":-30,"Amacron\0ugrave":-30,"Amacron\0uhungarumlaut":-30,"Amacron\0umacron":-30,"Amacron\0uogonek":-30,"Amacron\0uring":-30,"Amacron\0v":-40,"Amacron\0w":-30,"Amacron\0y":-30,"Amacron\0yacute":-30,"Amacron\0ydieresis":-30,"Aogonek\0C":-40,"Aogonek\0Cacute":-40,"Aogonek\0Ccaron":-40,"Aogonek\0Ccedilla":-40,"Aogonek\0G":-50,"Aogonek\0Gbreve":-50,"Aogonek\0Gcommaaccent":-50,"Aogonek\0O":-40,"Aogonek\0Oacute":-40,"Aogonek\0Ocircumflex":-40,"Aogonek\0Odieresis":-40,"Aogonek\0Ograve":-40,"Aogonek\0Ohungarumlaut":-40,"Aogonek\0Omacron":-40,"Aogonek\0Oslash":-40,"Aogonek\0Otilde":-40,"Aogonek\0Q":-40,"Aogonek\0T":-90,"Aogonek\0Tcaron":-90,"Aogonek\0Tcommaaccent":-90,"Aogonek\0U":-50,"Aogonek\0Uacute":-50,"Aogonek\0Ucircumflex":-50,"Aogonek\0Udieresis":-50,"Aogonek\0Ugrave":-50,"Aogonek\0Uhungarumlaut":-50,"Aogonek\0Umacron":-50,"Aogonek\0Uogonek":-50,"Aogonek\0Uring":-50,"Aogonek\0V":-80,"Aogonek\0W":-60,"Aogonek\0Y":-110,"Aogonek\0Yacute":-110,"Aogonek\0Ydieresis":-110,"Aogonek\0u":-30,"Aogonek\0uacute":-30,"Aogonek\0ucircumflex":-30,"Aogonek\0udieresis":-30,"Aogonek\0ugrave":-30,"Aogonek\0uhungarumlaut":-30,"Aogonek\0umacron":-30,"Aogonek\0uogonek":-30,"Aogonek\0uring":-30,"Aogonek\0v":-40,"Aogonek\0w":-30,"Aogonek\0y":-30,"Aogonek\0yacute":-30,"Aogonek\0ydieresis":-30,"Aring\0C":-40,"Aring\0Cacute":-40,"Aring\0Ccaron":-40,"Aring\0Ccedilla":-40,"Aring\0G":-50,"Aring\0Gbreve":-50,"Aring\0Gcommaaccent":-50,"Aring\0O":-40,"Aring\0Oacute":-40,"Aring\0Ocircumflex":-40,"Aring\0Odieresis":-40,"Aring\0Ograve":-40,"Aring\0Ohungarumlaut":-40,"Aring\0Omacron":-40,"Aring\0Oslash":-40,"Aring\0Otilde":-40,"Aring\0Q":-40,"Aring\0T":-90,"Aring\0Tcaron":-90,"Aring\0Tcommaaccent":-90,"Aring\0U":-50,"Aring\0Uacute":-50,"Aring\0Ucircumflex":-50,"Aring\0Udieresis":-50,"Aring\0Ugrave":-50,"Aring\0Uhungarumlaut":-50,"Aring\0Umacron":-50,"Aring\0Uogonek":-50,"Aring\0Uring":-50,"Aring\0V":-80,"Aring\0W":-60,"Aring\0Y":-110,"Aring\0Yacute":-110,"Aring\0Ydieresis":-110,"Aring\0u":-30,"Aring\0uacute":-30,"Aring\0ucircumflex":-30,"Aring\0udieresis":-30,"Aring\0ugrave":-30,"Aring\0uhungarumlaut":-30,"Aring\0umacron":-30,"Aring\0uogonek":-30,"Aring\0uring":-30,"Aring\0v":-40,"Aring\0w":-30,"Aring\0y":-30,"Aring\0yacute":-30,"Aring\0ydieresis":-30,"Atilde\0C":-40,"Atilde\0Cacute":-40,"Atilde\0Ccaron":-40,"Atilde\0Ccedilla":-40,"Atilde\0G":-50,"Atilde\0Gbreve":-50,"Atilde\0Gcommaaccent":-50,"Atilde\0O":-40,"Atilde\0Oacute":-40,"Atilde\0Ocircumflex":-40,"Atilde\0Odieresis":-40,"Atilde\0Ograve":-40,"Atilde\0Ohungarumlaut":-40,"Atilde\0Omacron":-40,"Atilde\0Oslash":-40,"Atilde\0Otilde":-40,"Atilde\0Q":-40,"Atilde\0T":-90,"Atilde\0Tcaron":-90,"Atilde\0Tcommaaccent":-90,"Atilde\0U":-50,"Atilde\0Uacute":-50,"Atilde\0Ucircumflex":-50,"Atilde\0Udieresis":-50,"Atilde\0Ugrave":-50,"Atilde\0Uhungarumlaut":-50,"Atilde\0Umacron":-50,"Atilde\0Uogonek":-50,"Atilde\0Uring":-50,"Atilde\0V":-80,"Atilde\0W":-60,"Atilde\0Y":-110,"Atilde\0Yacute":-110,"Atilde\0Ydieresis":-110,"Atilde\0u":-30,"Atilde\0uacute":-30,"Atilde\0ucircumflex":-30,"Atilde\0udieresis":-30,"Atilde\0ugrave":-30,"Atilde\0uhungarumlaut":-30,"Atilde\0umacron":-30,"Atilde\0uogonek":-30,"Atilde\0uring":-30,"Atilde\0v":-40,"Atilde\0w":-30,"Atilde\0y":-30,"Atilde\0yacute":-30,"Atilde\0ydieresis":-30,"B\0A":-30,"B\0Aacute":-30,"B\0Abreve":-30,"B\0Acircumflex":-30,"B\0Adieresis":-30,"B\0Agrave":-30,"B\0Amacron":-30,"B\0Aogonek":-30,"B\0Aring":-30,"B\0Atilde":-30,"B\0U":-10,"B\0Uacute":-10,"B\0Ucircumflex":-10,"B\0Udieresis":-10,"B\0Ugrave":-10,"B\0Uhungarumlaut":-10,"B\0Umacron":-10,"B\0Uogonek":-10,"B\0Uring":-10,"D\0A":-40,"D\0Aacute":-40,"D\0Abreve":-40,"D\0Acircumflex":-40,"D\0Adieresis":-40,"D\0Agrave":-40,"D\0Amacron":-40,"D\0Aogonek":-40,"D\0Aring":-40,"D\0Atilde":-40,"D\0V":-40,"D\0W":-40,"D\0Y":-70,"D\0Yacute":-70,"D\0Ydieresis":-70,"D\0comma":-30,"D\0period":-30,"Dcaron\0A":-40,"Dcaron\0Aacute":-40,"Dcaron\0Abreve":-40,"Dcaron\0Acircumflex":-40,"Dcaron\0Adieresis":-40,"Dcaron\0Agrave":-40,"Dcaron\0Amacron":-40,"Dcaron\0Aogonek":-40,"Dcaron\0Aring":-40,"Dcaron\0Atilde":-40,"Dcaron\0V":-40,"Dcaron\0W":-40,"Dcaron\0Y":-70,"Dcaron\0Yacute":-70,"Dcaron\0Ydieresis":-70,"Dcaron\0comma":-30,"Dcaron\0period":-30,"Dcroat\0A":-40,"Dcroat\0Aacute":-40,"Dcroat\0Abreve":-40,"Dcroat\0Acircumflex":-40,"Dcroat\0Adieresis":-40,"Dcroat\0Agrave":-40,"Dcroat\0Amacron":-40,"Dcroat\0Aogonek":-40,"Dcroat\0Aring":-40,"Dcroat\0Atilde":-40,"Dcroat\0V":-40,"Dcroat\0W":-40,"Dcroat\0Y":-70,"Dcroat\0Yacute":-70,"Dcroat\0Ydieresis":-70,"Dcroat\0comma":-30,"Dcroat\0period":-30,"F\0A":-80,"F\0Aacute":-80,"F\0Abreve":-80,"F\0Acircumflex":-80,"F\0Adieresis":-80,"F\0Agrave":-80,"F\0Amacron":-80,"F\0Aogonek":-80,"F\0Aring":-80,"F\0Atilde":-80,"F\0a":-20,"F\0aacute":-20,"F\0abreve":-20,"F\0acircumflex":-20,"F\0adieresis":-20,"F\0agrave":-20,"F\0amacron":-20,"F\0aogonek":-20,"F\0aring":-20,"F\0atilde":-20,"F\0comma":-100,"F\0period":-100,"J\0A":-20,"J\0Aacute":-20,"J\0Abreve":-20,"J\0Acircumflex":-20,"J\0Adieresis":-20,"J\0Agrave":-20,"J\0Amacron":-20,"J\0Aogonek":-20,"J\0Aring":-20,"J\0Atilde":-20,"J\0comma":-20,"J\0period":-20,"J\0u":-20,"J\0uacute":-20,"J\0ucircumflex":-20,"J\0udieresis":-20,"J\0ugrave":-20,"J\0uhungarumlaut":-20,"J\0umacron":-20,"J\0uogonek":-20,"J\0uring":-20,"K\0O":-30,"K\0Oacute":-30,"K\0Ocircumflex":-30,"K\0Odieresis":-30,"K\0Ograve":-30,"K\0Ohungarumlaut":-30,"K\0Omacron":-30,"K\0Oslash":-30,"K\0Otilde":-30,"K\0e":-15,"K\0eacute":-15,"K\0ecaron":-15,"K\0ecircumflex":-15,"K\0edieresis":-15,"K\0edotaccent":-15,"K\0egrave":-15,"K\0emacron":-15,"K\0eogonek":-15,"K\0o":-35,"K\0oacute":-35,"K\0ocircumflex":-35,"K\0odieresis":-35,"K\0ograve":-35,"K\0ohungarumlaut":-35,"K\0omacron":-35,"K\0oslash":-35,"K\0otilde":-35,"K\0u":-30,"K\0uacute":-30,"K\0ucircumflex":-30,"K\0udieresis":-30,"K\0ugrave":-30,"K\0uhungarumlaut":-30,"K\0umacron":-30,"K\0uogonek":-30,"K\0uring":-30,"K\0y":-40,"K\0yacute":-40,"K\0ydieresis":-40,"Kcommaaccent\0O":-30,"Kcommaaccent\0Oacute":-30,"Kcommaaccent\0Ocircumflex":-30,"Kcommaaccent\0Odieresis":-30,"Kcommaaccent\0Ograve":-30,"Kcommaaccent\0Ohungarumlaut":-30,"Kcommaaccent\0Omacron":-30,"Kcommaaccent\0Oslash":-30,"Kcommaaccent\0Otilde":-30,"Kcommaaccent\0e":-15,"Kcommaaccent\0eacute":-15,"Kcommaaccent\0ecaron":-15,"Kcommaaccent\0ecircumflex":-15,"Kcommaaccent\0edieresis":-15,"Kcommaaccent\0edotaccent":-15,"Kcommaaccent\0egrave":-15,"Kcommaaccent\0emacron":-15,"Kcommaaccent\0eogonek":-15,"Kcommaaccent\0o":-35,"Kcommaaccent\0oacute":-35,"Kcommaaccent\0ocircumflex":-35,"Kcommaaccent\0odieresis":-35,"Kcommaaccent\0ograve":-35,"Kcommaaccent\0ohungarumlaut":-35,"Kcommaaccent\0omacron":-35,"Kcommaaccent\0oslash":-35,"Kcommaaccent\0otilde":-35,"Kcommaaccent\0u":-30,"Kcommaaccent\0uacute":-30,"Kcommaaccent\0ucircumflex":-30,"Kcommaaccent\0udieresis":-30,"Kcommaaccent\0ugrave":-30,"Kcommaaccent\0uhungarumlaut":-30,"Kcommaaccent\0umacron":-30,"Kcommaaccent\0uogonek":-30,"Kcommaaccent\0uring":-30,"Kcommaaccent\0y":-40,"Kcommaaccent\0yacute":-40,"Kcommaaccent\0ydieresis":-40,"L\0T":-90,"L\0Tcaron":-90,"L\0Tcommaaccent":-90,"L\0V":-110,"L\0W":-80,"L\0Y":-120,"L\0Yacute":-120,"L\0Ydieresis":-120,"L\0quotedblright":-140,"L\0quoteright":-140,"L\0y":-30,"L\0yacute":-30,"L\0ydieresis":-30,"Lacute\0T":-90,"Lacute\0Tcaron":-90,"Lacute\0Tcommaaccent":-90,"Lacute\0V":-110,"Lacute\0W":-80,"Lacute\0Y":-120,"Lacute\0Yacute":-120,"Lacute\0Ydieresis":-120,"Lacute\0quotedblright":-140,"Lacute\0quoteright":-140,"Lacute\0y":-30,"Lacute\0yacute":-30,"Lacute\0ydieresis":-30,"Lcommaaccent\0T":-90,"Lcommaaccent\0Tcaron":-90,"Lcommaaccent\0Tcommaaccent":-90,"Lcommaaccent\0V":-110,"Lcommaaccent\0W":-80,"Lcommaaccent\0Y":-120,"Lcommaaccent\0Yacute":-120,"Lcommaaccent\0Ydieresis":-120,"Lcommaaccent\0quotedblright":-140,"Lcommaaccent\0quoteright":-140,"Lcommaaccent\0y":-30,"Lcommaaccent\0yacute":-30,"Lcommaaccent\0ydieresis":-30,"Lslash\0T":-90,"Lslash\0Tcaron":-90,"Lslash\0Tcommaaccent":-90,"Lslash\0V":-110,"Lslash\0W":-80,"Lslash\0Y":-120,"Lslash\0Yacute":-120,"Lslash\0Ydieresis":-120,"Lslash\0quotedblright":-140,"Lslash\0quoteright":-140,"Lslash\0y":-30,"Lslash\0yacute":-30,"Lslash\0ydieresis":-30,"O\0A":-50,"O\0Aacute":-50,"O\0Abreve":-50,"O\0Acircumflex":-50,"O\0Adieresis":-50,"O\0Agrave":-50,"O\0Amacron":-50,"O\0Aogonek":-50,"O\0Aring":-50,"O\0Atilde":-50,"O\0T":-40,"O\0Tcaron":-40,"O\0Tcommaaccent":-40,"O\0V":-50,"O\0W":-50,"O\0X":-50,"O\0Y":-70,"O\0Yacute":-70,"O\0Ydieresis":-70,"O\0comma":-40,"O\0period":-40,"Oacute\0A":-50,"Oacute\0Aacute":-50,"Oacute\0Abreve":-50,"Oacute\0Acircumflex":-50,"Oacute\0Adieresis":-50,"Oacute\0Agrave":-50,"Oacute\0Amacron":-50,"Oacute\0Aogonek":-50,"Oacute\0Aring":-50,"Oacute\0Atilde":-50,"Oacute\0T":-40,"Oacute\0Tcaron":-40,"Oacute\0Tcommaaccent":-40,"Oacute\0V":-50,"Oacute\0W":-50,"Oacute\0X":-50,"Oacute\0Y":-70,"Oacute\0Yacute":-70,"Oacute\0Ydieresis":-70,"Oacute\0comma":-40,"Oacute\0period":-40,"Ocircumflex\0A":-50,"Ocircumflex\0Aacute":-50,"Ocircumflex\0Abreve":-50,"Ocircumflex\0Acircumflex":-50,"Ocircumflex\0Adieresis":-50,"Ocircumflex\0Agrave":-50,"Ocircumflex\0Amacron":-50,"Ocircumflex\0Aogonek":-50,"Ocircumflex\0Aring":-50,"Ocircumflex\0Atilde":-50,"Ocircumflex\0T":-40,"Ocircumflex\0Tcaron":-40,"Ocircumflex\0Tcommaaccent":-40,"Ocircumflex\0V":-50,"Ocircumflex\0W":-50,"Ocircumflex\0X":-50,"Ocircumflex\0Y":-70,"Ocircumflex\0Yacute":-70,"Ocircumflex\0Ydieresis":-70,"Ocircumflex\0comma":-40,"Ocircumflex\0period":-40,"Odieresis\0A":-50,"Odieresis\0Aacute":-50,"Odieresis\0Abreve":-50,"Odieresis\0Acircumflex":-50,"Odieresis\0Adieresis":-50,"Odieresis\0Agrave":-50,"Odieresis\0Amacron":-50,"Odieresis\0Aogonek":-50,"Odieresis\0Aring":-50,"Odieresis\0Atilde":-50,"Odieresis\0T":-40,"Odieresis\0Tcaron":-40,"Odieresis\0Tcommaaccent":-40,"Odieresis\0V":-50,"Odieresis\0W":-50,"Odieresis\0X":-50,"Odieresis\0Y":-70,"Odieresis\0Yacute":-70,"Odieresis\0Ydieresis":-70,"Odieresis\0comma":-40,"Odieresis\0period":-40,"Ograve\0A":-50,"Ograve\0Aacute":-50,"Ograve\0Abreve":-50,"Ograve\0Acircumflex":-50,"Ograve\0Adieresis":-50,"Ograve\0Agrave":-50,"Ograve\0Amacron":-50,"Ograve\0Aogonek":-50,"Ograve\0Aring":-50,"Ograve\0Atilde":-50,"Ograve\0T":-40,"Ograve\0Tcaron":-40,"Ograve\0Tcommaaccent":-40,"Ograve\0V":-50,"Ograve\0W":-50,"Ograve\0X":-50,"Ograve\0Y":-70,"Ograve\0Yacute":-70,"Ograve\0Ydieresis":-70,"Ograve\0comma":-40,"Ograve\0period":-40,"Ohungarumlaut\0A":-50,"Ohungarumlaut\0Aacute":-50,"Ohungarumlaut\0Abreve":-50,"Ohungarumlaut\0Acircumflex":-50,"Ohungarumlaut\0Adieresis":-50,"Ohungarumlaut\0Agrave":-50,"Ohungarumlaut\0Amacron":-50,"Ohungarumlaut\0Aogonek":-50,"Ohungarumlaut\0Aring":-50,"Ohungarumlaut\0Atilde":-50,"Ohungarumlaut\0T":-40,"Ohungarumlaut\0Tcaron":-40,"Ohungarumlaut\0Tcommaaccent":-40,"Ohungarumlaut\0V":-50,"Ohungarumlaut\0W":-50,"Ohungarumlaut\0X":-50,"Ohungarumlaut\0Y":-70,"Ohungarumlaut\0Yacute":-70,"Ohungarumlaut\0Ydieresis":-70,"Ohungarumlaut\0comma":-40,"Ohungarumlaut\0period":-40,"Omacron\0A":-50,"Omacron\0Aacute":-50,"Omacron\0Abreve":-50,"Omacron\0Acircumflex":-50,"Omacron\0Adieresis":-50,"Omacron\0Agrave":-50,"Omacron\0Amacron":-50,"Omacron\0Aogonek":-50,"Omacron\0Aring":-50,"Omacron\0Atilde":-50,"Omacron\0T":-40,"Omacron\0Tcaron":-40,"Omacron\0Tcommaaccent":-40,"Omacron\0V":-50,"Omacron\0W":-50,"Omacron\0X":-50,"Omacron\0Y":-70,"Omacron\0Yacute":-70,"Omacron\0Ydieresis":-70,"Omacron\0comma":-40,"Omacron\0period":-40,"Oslash\0A":-50,"Oslash\0Aacute":-50,"Oslash\0Abreve":-50,"Oslash\0Acircumflex":-50,"Oslash\0Adieresis":-50,"Oslash\0Agrave":-50,"Oslash\0Amacron":-50,"Oslash\0Aogonek":-50,"Oslash\0Aring":-50,"Oslash\0Atilde":-50,"Oslash\0T":-40,"Oslash\0Tcaron":-40,"Oslash\0Tcommaaccent":-40,"Oslash\0V":-50,"Oslash\0W":-50,"Oslash\0X":-50,"Oslash\0Y":-70,"Oslash\0Yacute":-70,"Oslash\0Ydieresis":-70,"Oslash\0comma":-40,"Oslash\0period":-40,"Otilde\0A":-50,"Otilde\0Aacute":-50,"Otilde\0Abreve":-50,"Otilde\0Acircumflex":-50,"Otilde\0Adieresis":-50,"Otilde\0Agrave":-50,"Otilde\0Amacron":-50,"Otilde\0Aogonek":-50,"Otilde\0Aring":-50,"Otilde\0Atilde":-50,"Otilde\0T":-40,"Otilde\0Tcaron":-40,"Otilde\0Tcommaaccent":-40,"Otilde\0V":-50,"Otilde\0W":-50,"Otilde\0X":-50,"Otilde\0Y":-70,"Otilde\0Yacute":-70,"Otilde\0Ydieresis":-70,"Otilde\0comma":-40,"Otilde\0period":-40,"P\0A":-100,"P\0Aacute":-100,"P\0Abreve":-100,"P\0Acircumflex":-100,"P\0Adieresis":-100,"P\0Agrave":-100,"P\0Amacron":-100,"P\0Aogonek":-100,"P\0Aring":-100,"P\0Atilde":-100,"P\0a":-30,"P\0aacute":-30,"P\0abreve":-30,"P\0acircumflex":-30,"P\0adieresis":-30,"P\0agrave":-30,"P\0amacron":-30,"P\0aogonek":-30,"P\0aring":-30,"P\0atilde":-30,"P\0comma":-120,"P\0e":-30,"P\0eacute":-30,"P\0ecaron":-30,"P\0ecircumflex":-30,"P\0edieresis":-30,"P\0edotaccent":-30,"P\0egrave":-30,"P\0emacron":-30,"P\0eogonek":-30,"P\0o":-40,"P\0oacute":-40,"P\0ocircumflex":-40,"P\0odieresis":-40,"P\0ograve":-40,"P\0ohungarumlaut":-40,"P\0omacron":-40,"P\0oslash":-40,"P\0otilde":-40,"P\0period":-120,"Q\0U":-10,"Q\0Uacute":-10,"Q\0Ucircumflex":-10,"Q\0Udieresis":-10,"Q\0Ugrave":-10,"Q\0Uhungarumlaut":-10,"Q\0Umacron":-10,"Q\0Uogonek":-10,"Q\0Uring":-10,"Q\0comma":20,"Q\0period":20,"R\0O":-20,"R\0Oacute":-20,"R\0Ocircumflex":-20,"R\0Odieresis":-20,"R\0Ograve":-20,"R\0Ohungarumlaut":-20,"R\0Omacron":-20,"R\0Oslash":-20,"R\0Otilde":-20,"R\0T":-20,"R\0Tcaron":-20,"R\0Tcommaaccent":-20,"R\0U":-20,"R\0Uacute":-20,"R\0Ucircumflex":-20,"R\0Udieresis":-20,"R\0Ugrave":-20,"R\0Uhungarumlaut":-20,"R\0Umacron":-20,"R\0Uogonek":-20,"R\0Uring":-20,"R\0V":-50,"R\0W":-40,"R\0Y":-50,"R\0Yacute":-50,"R\0Ydieresis":-50,"Racute\0O":-20,"Racute\0Oacute":-20,"Racute\0Ocircumflex":-20,"Racute\0Odieresis":-20,"Racute\0Ograve":-20,"Racute\0Ohungarumlaut":-20,"Racute\0Omacron":-20,"Racute\0Oslash":-20,"Racute\0Otilde":-20,"Racute\0T":-20,"Racute\0Tcaron":-20,"Racute\0Tcommaaccent":-20,"Racute\0U":-20,"Racute\0Uacute":-20,"Racute\0Ucircumflex":-20,"Racute\0Udieresis":-20,"Racute\0Ugrave":-20,"Racute\0Uhungarumlaut":-20,"Racute\0Umacron":-20,"Racute\0Uogonek":-20,"Racute\0Uring":-20,"Racute\0V":-50,"Racute\0W":-40,"Racute\0Y":-50,"Racute\0Yacute":-50,"Racute\0Ydieresis":-50,"Rcaron\0O":-20,"Rcaron\0Oacute":-20,"Rcaron\0Ocircumflex":-20,"Rcaron\0Odieresis":-20,"Rcaron\0Ograve":-20,"Rcaron\0Ohungarumlaut":-20,"Rcaron\0Omacron":-20,"Rcaron\0Oslash":-20,"Rcaron\0Otilde":-20,"Rcaron\0T":-20,"Rcaron\0Tcaron":-20,"Rcaron\0Tcommaaccent":-20,"Rcaron\0U":-20,"Rcaron\0Uacute":-20,"Rcaron\0Ucircumflex":-20,"Rcaron\0Udieresis":-20,"Rcaron\0Ugrave":-20,"Rcaron\0Uhungarumlaut":-20,"Rcaron\0Umacron":-20,"Rcaron\0Uogonek":-20,"Rcaron\0Uring":-20,"Rcaron\0V":-50,"Rcaron\0W":-40,"Rcaron\0Y":-50,"Rcaron\0Yacute":-50,"Rcaron\0Ydieresis":-50,"Rcommaaccent\0O":-20,"Rcommaaccent\0Oacute":-20,"Rcommaaccent\0Ocircumflex":-20,"Rcommaaccent\0Odieresis":-20,"Rcommaaccent\0Ograve":-20,"Rcommaaccent\0Ohungarumlaut":-20,"Rcommaaccent\0Omacron":-20,"Rcommaaccent\0Oslash":-20,"Rcommaaccent\0Otilde":-20,"Rcommaaccent\0T":-20,"Rcommaaccent\0Tcaron":-20,"Rcommaaccent\0Tcommaaccent":-20,"Rcommaaccent\0U":-20,"Rcommaaccent\0Uacute":-20,"Rcommaaccent\0Ucircumflex":-20,"Rcommaaccent\0Udieresis":-20,"Rcommaaccent\0Ugrave":-20,"Rcommaaccent\0Uhungarumlaut":-20,"Rcommaaccent\0Umacron":-20,"Rcommaaccent\0Uogonek":-20,"Rcommaaccent\0Uring":-20,"Rcommaaccent\0V":-50,"Rcommaaccent\0W":-40,"Rcommaaccent\0Y":-50,"Rcommaaccent\0Yacute":-50,"Rcommaaccent\0Ydieresis":-50,"T\0A":-90,"T\0Aacute":-90,"T\0Abreve":-90,"T\0Acircumflex":-90,"T\0Adieresis":-90,"T\0Agrave":-90,"T\0Amacron":-90,"T\0Aogonek":-90,"T\0Aring":-90,"T\0Atilde":-90,"T\0O":-40,"T\0Oacute":-40,"T\0Ocircumflex":-40,"T\0Odieresis":-40,"T\0Ograve":-40,"T\0Ohungarumlaut":-40,"T\0Omacron":-40,"T\0Oslash":-40,"T\0Otilde":-40,"T\0a":-80,"T\0aacute":-80,"T\0abreve":-80,"T\0acircumflex":-80,"T\0adieresis":-80,"T\0agrave":-80,"T\0amacron":-80,"T\0aogonek":-80,"T\0aring":-80,"T\0atilde":-80,"T\0colon":-40,"T\0comma":-80,"T\0e":-60,"T\0eacute":-60,"T\0ecaron":-60,"T\0ecircumflex":-60,"T\0edieresis":-60,"T\0edotaccent":-60,"T\0egrave":-60,"T\0emacron":-60,"T\0eogonek":-60,"T\0hyphen":-120,"T\0o":-80,"T\0oacute":-80,"T\0ocircumflex":-80,"T\0odieresis":-80,"T\0ograve":-80,"T\0ohungarumlaut":-80,"T\0omacron":-80,"T\0oslash":-80,"T\0otilde":-80,"T\0period":-80,"T\0r":-80,"T\0racute":-80,"T\0rcommaaccent":-80,"T\0semicolon":-40,"T\0u":-90,"T\0uacute":-90,"T\0ucircumflex":-90,"T\0udieresis":-90,"T\0ugrave":-90,"T\0uhungarumlaut":-90,"T\0umacron":-90,"T\0uogonek":-90,"T\0uring":-90,"T\0w":-60,"T\0y":-60,"T\0yacute":-60,"T\0ydieresis":-60,"Tcaron\0A":-90,"Tcaron\0Aacute":-90,"Tcaron\0Abreve":-90,"Tcaron\0Acircumflex":-90,"Tcaron\0Adieresis":-90,"Tcaron\0Agrave":-90,"Tcaron\0Amacron":-90,"Tcaron\0Aogonek":-90,"Tcaron\0Aring":-90,"Tcaron\0Atilde":-90,"Tcaron\0O":-40,"Tcaron\0Oacute":-40,"Tcaron\0Ocircumflex":-40,"Tcaron\0Odieresis":-40,"Tcaron\0Ograve":-40,"Tcaron\0Ohungarumlaut":-40,"Tcaron\0Omacron":-40,"Tcaron\0Oslash":-40,"Tcaron\0Otilde":-40,"Tcaron\0a":-80,"Tcaron\0aacute":-80,"Tcaron\0abreve":-80,"Tcaron\0acircumflex":-80,"Tcaron\0adieresis":-80,"Tcaron\0agrave":-80,"Tcaron\0amacron":-80,"Tcaron\0aogonek":-80,"Tcaron\0aring":-80,"Tcaron\0atilde":-80,"Tcaron\0colon":-40,"Tcaron\0comma":-80,"Tcaron\0e":-60,"Tcaron\0eacute":-60,"Tcaron\0ecaron":-60,"Tcaron\0ecircumflex":-60,"Tcaron\0edieresis":-60,"Tcaron\0edotaccent":-60,"Tcaron\0egrave":-60,"Tcaron\0emacron":-60,"Tcaron\0eogonek":-60,"Tcaron\0hyphen":-120,"Tcaron\0o":-80,"Tcaron\0oacute":-80,"Tcaron\0ocircumflex":-80,"Tcaron\0odieresis":-80,"Tcaron\0ograve":-80,"Tcaron\0ohungarumlaut":-80,"Tcaron\0omacron":-80,"Tcaron\0oslash":-80,"Tcaron\0otilde":-80,"Tcaron\0period":-80,"Tcaron\0r":-80,"Tcaron\0racute":-80,"Tcaron\0rcommaaccent":-80,"Tcaron\0semicolon":-40,"Tcaron\0u":-90,"Tcaron\0uacute":-90,"Tcaron\0ucircumflex":-90,"Tcaron\0udieresis":-90,"Tcaron\0ugrave":-90,"Tcaron\0uhungarumlaut":-90,"Tcaron\0umacron":-90,"Tcaron\0uogonek":-90,"Tcaron\0uring":-90,"Tcaron\0w":-60,"Tcaron\0y":-60,"Tcaron\0yacute":-60,"Tcaron\0ydieresis":-60,"Tcommaaccent\0A":-90,"Tcommaaccent\0Aacute":-90,"Tcommaaccent\0Abreve":-90,"Tcommaaccent\0Acircumflex":-90,"Tcommaaccent\0Adieresis":-90,"Tcommaaccent\0Agrave":-90,"Tcommaaccent\0Amacron":-90,"Tcommaaccent\0Aogonek":-90,"Tcommaaccent\0Aring":-90,"Tcommaaccent\0Atilde":-90,"Tcommaaccent\0O":-40,"Tcommaaccent\0Oacute":-40,"Tcommaaccent\0Ocircumflex":-40,"Tcommaaccent\0Odieresis":-40,"Tcommaaccent\0Ograve":-40,"Tcommaaccent\0Ohungarumlaut":-40,"Tcommaaccent\0Omacron":-40,"Tcommaaccent\0Oslash":-40,"Tcommaaccent\0Otilde":-40,"Tcommaaccent\0a":-80,"Tcommaaccent\0aacute":-80,"Tcommaaccent\0abreve":-80,"Tcommaaccent\0acircumflex":-80,"Tcommaaccent\0adieresis":-80,"Tcommaaccent\0agrave":-80,"Tcommaaccent\0amacron":-80,"Tcommaaccent\0aogonek":-80,"Tcommaaccent\0aring":-80,"Tcommaaccent\0atilde":-80,"Tcommaaccent\0colon":-40,"Tcommaaccent\0comma":-80,"Tcommaaccent\0e":-60,"Tcommaaccent\0eacute":-60,"Tcommaaccent\0ecaron":-60,"Tcommaaccent\0ecircumflex":-60,"Tcommaaccent\0edieresis":-60,"Tcommaaccent\0edotaccent":-60,"Tcommaaccent\0egrave":-60,"Tcommaaccent\0emacron":-60,"Tcommaaccent\0eogonek":-60,"Tcommaaccent\0hyphen":-120,"Tcommaaccent\0o":-80,"Tcommaaccent\0oacute":-80,"Tcommaaccent\0ocircumflex":-80,"Tcommaaccent\0odieresis":-80,"Tcommaaccent\0ograve":-80,"Tcommaaccent\0ohungarumlaut":-80,"Tcommaaccent\0omacron":-80,"Tcommaaccent\0oslash":-80,"Tcommaaccent\0otilde":-80,"Tcommaaccent\0period":-80,"Tcommaaccent\0r":-80,"Tcommaaccent\0racute":-80,"Tcommaaccent\0rcommaaccent":-80,"Tcommaaccent\0semicolon":-40,"Tcommaaccent\0u":-90,"Tcommaaccent\0uacute":-90,"Tcommaaccent\0ucircumflex":-90,"Tcommaaccent\0udieresis":-90,"Tcommaaccent\0ugrave":-90,"Tcommaaccent\0uhungarumlaut":-90,"Tcommaaccent\0umacron":-90,"Tcommaaccent\0uogonek":-90,"Tcommaaccent\0uring":-90,"Tcommaaccent\0w":-60,"Tcommaaccent\0y":-60,"Tcommaaccent\0yacute":-60,"Tcommaaccent\0ydieresis":-60,"U\0A":-50,"U\0Aacute":-50,"U\0Abreve":-50,"U\0Acircumflex":-50,"U\0Adieresis":-50,"U\0Agrave":-50,"U\0Amacron":-50,"U\0Aogonek":-50,"U\0Aring":-50,"U\0Atilde":-50,"U\0comma":-30,"U\0period":-30,"Uacute\0A":-50,"Uacute\0Aacute":-50,"Uacute\0Abreve":-50,"Uacute\0Acircumflex":-50,"Uacute\0Adieresis":-50,"Uacute\0Agrave":-50,"Uacute\0Amacron":-50,"Uacute\0Aogonek":-50,"Uacute\0Aring":-50,"Uacute\0Atilde":-50,"Uacute\0comma":-30,"Uacute\0period":-30,"Ucircumflex\0A":-50,"Ucircumflex\0Aacute":-50,"Ucircumflex\0Abreve":-50,"Ucircumflex\0Acircumflex":-50,"Ucircumflex\0Adieresis":-50,"Ucircumflex\0Agrave":-50,"Ucircumflex\0Amacron":-50,"Ucircumflex\0Aogonek":-50,"Ucircumflex\0Aring":-50,"Ucircumflex\0Atilde":-50,"Ucircumflex\0comma":-30,"Ucircumflex\0period":-30,"Udieresis\0A":-50,"Udieresis\0Aacute":-50,"Udieresis\0Abreve":-50,"Udieresis\0Acircumflex":-50,"Udieresis\0Adieresis":-50,"Udieresis\0Agrave":-50,"Udieresis\0Amacron":-50,"Udieresis\0Aogonek":-50,"Udieresis\0Aring":-50,"Udieresis\0Atilde":-50,"Udieresis\0comma":-30,"Udieresis\0period":-30,"Ugrave\0A":-50,"Ugrave\0Aacute":-50,"Ugrave\0Abreve":-50,"Ugrave\0Acircumflex":-50,"Ugrave\0Adieresis":-50,"Ugrave\0Agrave":-50,"Ugrave\0Amacron":-50,"Ugrave\0Aogonek":-50,"Ugrave\0Aring":-50,"Ugrave\0Atilde":-50,"Ugrave\0comma":-30,"Ugrave\0period":-30,"Uhungarumlaut\0A":-50,"Uhungarumlaut\0Aacute":-50,"Uhungarumlaut\0Abreve":-50,"Uhungarumlaut\0Acircumflex":-50,"Uhungarumlaut\0Adieresis":-50,"Uhungarumlaut\0Agrave":-50,"Uhungarumlaut\0Amacron":-50,"Uhungarumlaut\0Aogonek":-50,"Uhungarumlaut\0Aring":-50,"Uhungarumlaut\0Atilde":-50,"Uhungarumlaut\0comma":-30,"Uhungarumlaut\0period":-30,"Umacron\0A":-50,"Umacron\0Aacute":-50,"Umacron\0Abreve":-50,"Umacron\0Acircumflex":-50,"Umacron\0Adieresis":-50,"Umacron\0Agrave":-50,"Umacron\0Amacron":-50,"Umacron\0Aogonek":-50,"Umacron\0Aring":-50,"Umacron\0Atilde":-50,"Umacron\0comma":-30,"Umacron\0period":-30,"Uogonek\0A":-50,"Uogonek\0Aacute":-50,"Uogonek\0Abreve":-50,"Uogonek\0Acircumflex":-50,"Uogonek\0Adieresis":-50,"Uogonek\0Agrave":-50,"Uogonek\0Amacron":-50,"Uogonek\0Aogonek":-50,"Uogonek\0Aring":-50,"Uogonek\0Atilde":-50,"Uogonek\0comma":-30,"Uogonek\0period":-30,"Uring\0A":-50,"Uring\0Aacute":-50,"Uring\0Abreve":-50,"Uring\0Acircumflex":-50,"Uring\0Adieresis":-50,"Uring\0Agrave":-50,"Uring\0Amacron":-50,"Uring\0Aogonek":-50,"Uring\0Aring":-50,"Uring\0Atilde":-50,"Uring\0comma":-30,"Uring\0period":-30,"V\0A":-80,"V\0Aacute":-80,"V\0Abreve":-80,"V\0Acircumflex":-80,"V\0Adieresis":-80,"V\0Agrave":-80,"V\0Amacron":-80,"V\0Aogonek":-80,"V\0Aring":-80,"V\0Atilde":-80,"V\0G":-50,"V\0Gbreve":-50,"V\0Gcommaaccent":-50,"V\0O":-50,"V\0Oacute":-50,"V\0Ocircumflex":-50,"V\0Odieresis":-50,"V\0Ograve":-50,"V\0Ohungarumlaut":-50,"V\0Omacron":-50,"V\0Oslash":-50,"V\0Otilde":-50,"V\0a":-60,"V\0aacute":-60,"V\0abreve":-60,"V\0acircumflex":-60,"V\0adieresis":-60,"V\0agrave":-60,"V\0amacron":-60,"V\0aogonek":-60,"V\0aring":-60,"V\0atilde":-60,"V\0colon":-40,"V\0comma":-120,"V\0e":-50,"V\0eacute":-50,"V\0ecaron":-50,"V\0ecircumflex":-50,"V\0edieresis":-50,"V\0edotaccent":-50,"V\0egrave":-50,"V\0emacron":-50,"V\0eogonek":-50,"V\0hyphen":-80,"V\0o":-90,"V\0oacute":-90,"V\0ocircumflex":-90,"V\0odieresis":-90,"V\0ograve":-90,"V\0ohungarumlaut":-90,"V\0omacron":-90,"V\0oslash":-90,"V\0otilde":-90,"V\0period":-120,"V\0semicolon":-40,"V\0u":-60,"V\0uacute":-60,"V\0ucircumflex":-60,"V\0udieresis":-60,"V\0ugrave":-60,"V\0uhungarumlaut":-60,"V\0umacron":-60,"V\0uogonek":-60,"V\0uring":-60,"W\0A":-60,"W\0Aacute":-60,"W\0Abreve":-60,"W\0Acircumflex":-60,"W\0Adieresis":-60,"W\0Agrave":-60,"W\0Amacron":-60,"W\0Aogonek":-60,"W\0Aring":-60,"W\0Atilde":-60,"W\0O":-20,"W\0Oacute":-20,"W\0Ocircumflex":-20,"W\0Odieresis":-20,"W\0Ograve":-20,"W\0Ohungarumlaut":-20,"W\0Omacron":-20,"W\0Oslash":-20,"W\0Otilde":-20,"W\0a":-40,"W\0aacute":-40,"W\0abreve":-40,"W\0acircumflex":-40,"W\0adieresis":-40,"W\0agrave":-40,"W\0amacron":-40,"W\0aogonek":-40,"W\0aring":-40,"W\0atilde":-40,"W\0colon":-10,"W\0comma":-80,"W\0e":-35,"W\0eacute":-35,"W\0ecaron":-35,"W\0ecircumflex":-35,"W\0edieresis":-35,"W\0edotaccent":-35,"W\0egrave":-35,"W\0emacron":-35,"W\0eogonek":-35,"W\0hyphen":-40,"W\0o":-60,"W\0oacute":-60,"W\0ocircumflex":-60,"W\0odieresis":-60,"W\0ograve":-60,"W\0ohungarumlaut":-60,"W\0omacron":-60,"W\0oslash":-60,"W\0otilde":-60,"W\0period":-80,"W\0semicolon":-10,"W\0u":-45,"W\0uacute":-45,"W\0ucircumflex":-45,"W\0udieresis":-45,"W\0ugrave":-45,"W\0uhungarumlaut":-45,"W\0umacron":-45,"W\0uogonek":-45,"W\0uring":-45,"W\0y":-20,"W\0yacute":-20,"W\0ydieresis":-20,"Y\0A":-110,"Y\0Aacute":-110,"Y\0Abreve":-110,"Y\0Acircumflex":-110,"Y\0Adieresis":-110,"Y\0Agrave":-110,"Y\0Amacron":-110,"Y\0Aogonek":-110,"Y\0Aring":-110,"Y\0Atilde":-110,"Y\0O":-70,"Y\0Oacute":-70,"Y\0Ocircumflex":-70,"Y\0Odieresis":-70,"Y\0Ograve":-70,"Y\0Ohungarumlaut":-70,"Y\0Omacron":-70,"Y\0Oslash":-70,"Y\0Otilde":-70,"Y\0a":-90,"Y\0aacute":-90,"Y\0abreve":-90,"Y\0acircumflex":-90,"Y\0adieresis":-90,"Y\0agrave":-90,"Y\0amacron":-90,"Y\0aogonek":-90,"Y\0aring":-90,"Y\0atilde":-90,"Y\0colon":-50,"Y\0comma":-100,"Y\0e":-80,"Y\0eacute":-80,"Y\0ecaron":-80,"Y\0ecircumflex":-80,"Y\0edieresis":-80,"Y\0edotaccent":-80,"Y\0egrave":-80,"Y\0emacron":-80,"Y\0eogonek":-80,"Y\0o":-100,"Y\0oacute":-100,"Y\0ocircumflex":-100,"Y\0odieresis":-100,"Y\0ograve":-100,"Y\0ohungarumlaut":-100,"Y\0omacron":-100,"Y\0oslash":-100,"Y\0otilde":-100,"Y\0period":-100,"Y\0semicolon":-50,"Y\0u":-100,"Y\0uacute":-100,"Y\0ucircumflex":-100,"Y\0udieresis":-100,"Y\0ugrave":-100,"Y\0uhungarumlaut":-100,"Y\0umacron":-100,"Y\0uogonek":-100,"Y\0uring":-100,"Yacute\0A":-110,"Yacute\0Aacute":-110,"Yacute\0Abreve":-110,"Yacute\0Acircumflex":-110,"Yacute\0Adieresis":-110,"Yacute\0Agrave":-110,"Yacute\0Amacron":-110,"Yacute\0Aogonek":-110,"Yacute\0Aring":-110,"Yacute\0Atilde":-110,"Yacute\0O":-70,"Yacute\0Oacute":-70,"Yacute\0Ocircumflex":-70,"Yacute\0Odieresis":-70,"Yacute\0Ograve":-70,"Yacute\0Ohungarumlaut":-70,"Yacute\0Omacron":-70,"Yacute\0Oslash":-70,"Yacute\0Otilde":-70,"Yacute\0a":-90,"Yacute\0aacute":-90,"Yacute\0abreve":-90,"Yacute\0acircumflex":-90,"Yacute\0adieresis":-90,"Yacute\0agrave":-90,"Yacute\0amacron":-90,"Yacute\0aogonek":-90,"Yacute\0aring":-90,"Yacute\0atilde":-90,"Yacute\0colon":-50,"Yacute\0comma":-100,"Yacute\0e":-80,"Yacute\0eacute":-80,"Yacute\0ecaron":-80,"Yacute\0ecircumflex":-80,"Yacute\0edieresis":-80,"Yacute\0edotaccent":-80,"Yacute\0egrave":-80,"Yacute\0emacron":-80,"Yacute\0eogonek":-80,"Yacute\0o":-100,"Yacute\0oacute":-100,"Yacute\0ocircumflex":-100,"Yacute\0odieresis":-100,"Yacute\0ograve":-100,"Yacute\0ohungarumlaut":-100,"Yacute\0omacron":-100,"Yacute\0oslash":-100,"Yacute\0otilde":-100,"Yacute\0period":-100,"Yacute\0semicolon":-50,"Yacute\0u":-100,"Yacute\0uacute":-100,"Yacute\0ucircumflex":-100,"Yacute\0udieresis":-100,"Yacute\0ugrave":-100,"Yacute\0uhungarumlaut":-100,"Yacute\0umacron":-100,"Yacute\0uogonek":-100,"Yacute\0uring":-100,"Ydieresis\0A":-110,"Ydieresis\0Aacute":-110,"Ydieresis\0Abreve":-110,"Ydieresis\0Acircumflex":-110,"Ydieresis\0Adieresis":-110,"Ydieresis\0Agrave":-110,"Ydieresis\0Amacron":-110,"Ydieresis\0Aogonek":-110,"Ydieresis\0Aring":-110,"Ydieresis\0Atilde":-110,"Ydieresis\0O":-70,"Ydieresis\0Oacute":-70,"Ydieresis\0Ocircumflex":-70,"Ydieresis\0Odieresis":-70,"Ydieresis\0Ograve":-70,"Ydieresis\0Ohungarumlaut":-70,"Ydieresis\0Omacron":-70,"Ydieresis\0Oslash":-70,"Ydieresis\0Otilde":-70,"Ydieresis\0a":-90,"Ydieresis\0aacute":-90,"Ydieresis\0abreve":-90,"Ydieresis\0acircumflex":-90,"Ydieresis\0adieresis":-90,"Ydieresis\0agrave":-90,"Ydieresis\0amacron":-90,"Ydieresis\0aogonek":-90,"Ydieresis\0aring":-90,"Ydieresis\0atilde":-90,"Ydieresis\0colon":-50,"Ydieresis\0comma":-100,"Ydieresis\0e":-80,"Ydieresis\0eacute":-80,"Ydieresis\0ecaron":-80,"Ydieresis\0ecircumflex":-80,"Ydieresis\0edieresis":-80,"Ydieresis\0edotaccent":-80,"Ydieresis\0egrave":-80,"Ydieresis\0emacron":-80,"Ydieresis\0eogonek":-80,"Ydieresis\0o":-100,"Ydieresis\0oacute":-100,"Ydieresis\0ocircumflex":-100,"Ydieresis\0odieresis":-100,"Ydieresis\0ograve":-100,"Ydieresis\0ohungarumlaut":-100,"Ydieresis\0omacron":-100,"Ydieresis\0oslash":-100,"Ydieresis\0otilde":-100,"Ydieresis\0period":-100,"Ydieresis\0semicolon":-50,"Ydieresis\0u":-100,"Ydieresis\0uacute":-100,"Ydieresis\0ucircumflex":-100,"Ydieresis\0udieresis":-100,"Ydieresis\0ugrave":-100,"Ydieresis\0uhungarumlaut":-100,"Ydieresis\0umacron":-100,"Ydieresis\0uogonek":-100,"Ydieresis\0uring":-100,"a\0g":-10,"a\0gbreve":-10,"a\0gcommaaccent":-10,"a\0v":-15,"a\0w":-15,"a\0y":-20,"a\0yacute":-20,"a\0ydieresis":-20,"aacute\0g":-10,"aacute\0gbreve":-10,"aacute\0gcommaaccent":-10,"aacute\0v":-15,"aacute\0w":-15,"aacute\0y":-20,"aacute\0yacute":-20,"aacute\0ydieresis":-20,"abreve\0g":-10,"abreve\0gbreve":-10,"abreve\0gcommaaccent":-10,"abreve\0v":-15,"abreve\0w":-15,"abreve\0y":-20,"abreve\0yacute":-20,"abreve\0ydieresis":-20,"acircumflex\0g":-10,"acircumflex\0gbreve":-10,"acircumflex\0gcommaaccent":-10,"acircumflex\0v":-15,"acircumflex\0w":-15,"acircumflex\0y":-20,"acircumflex\0yacute":-20,"acircumflex\0ydieresis":-20,"adieresis\0g":-10,"adieresis\0gbreve":-10,"adieresis\0gcommaaccent":-10,"adieresis\0v":-15,"adieresis\0w":-15,"adieresis\0y":-20,"adieresis\0yacute":-20,"adieresis\0ydieresis":-20,"agrave\0g":-10,"agrave\0gbreve":-10,"agrave\0gcommaaccent":-10,"agrave\0v":-15,"agrave\0w":-15,"agrave\0y":-20,"agrave\0yacute":-20,"agrave\0ydieresis":-20,"amacron\0g":-10,"amacron\0gbreve":-10,"amacron\0gcommaaccent":-10,"amacron\0v":-15,"amacron\0w":-15,"amacron\0y":-20,"amacron\0yacute":-20,"amacron\0ydieresis":-20,"aogonek\0g":-10,"aogonek\0gbreve":-10,"aogonek\0gcommaaccent":-10,"aogonek\0v":-15,"aogonek\0w":-15,"aogonek\0y":-20,"aogonek\0yacute":-20,"aogonek\0ydieresis":-20,"aring\0g":-10,"aring\0gbreve":-10,"aring\0gcommaaccent":-10,"aring\0v":-15,"aring\0w":-15,"aring\0y":-20,"aring\0yacute":-20,"aring\0ydieresis":-20,"atilde\0g":-10,"atilde\0gbreve":-10,"atilde\0gcommaaccent":-10,"atilde\0v":-15,"atilde\0w":-15,"atilde\0y":-20,"atilde\0yacute":-20,"atilde\0ydieresis":-20,"b\0l":-10,"b\0lacute":-10,"b\0lcommaaccent":-10,"b\0lslash":-10,"b\0u":-20,"b\0uacute":-20,"b\0ucircumflex":-20,"b\0udieresis":-20,"b\0ugrave":-20,"b\0uhungarumlaut":-20,"b\0umacron":-20,"b\0uogonek":-20,"b\0uring":-20,"b\0v":-20,"b\0y":-20,"b\0yacute":-20,"b\0ydieresis":-20,"c\0h":-10,"c\0k":-20,"c\0kcommaaccent":-20,"c\0l":-20,"c\0lacute":-20,"c\0lcommaaccent":-20,"c\0lslash":-20,"c\0y":-10,"c\0yacute":-10,"c\0ydieresis":-10,"cacute\0h":-10,"cacute\0k":-20,"cacute\0kcommaaccent":-20,"cacute\0l":-20,"cacute\0lacute":-20,"cacute\0lcommaaccent":-20,"cacute\0lslash":-20,"cacute\0y":-10,"cacute\0yacute":-10,"cacute\0ydieresis":-10,"ccaron\0h":-10,"ccaron\0k":-20,"ccaron\0kcommaaccent":-20,"ccaron\0l":-20,"ccaron\0lacute":-20,"ccaron\0lcommaaccent":-20,"ccaron\0lslash":-20,"ccaron\0y":-10,"ccaron\0yacute":-10,"ccaron\0ydieresis":-10,"ccedilla\0h":-10,"ccedilla\0k":-20,"ccedilla\0kcommaaccent":-20,"ccedilla\0l":-20,"ccedilla\0lacute":-20,"ccedilla\0lcommaaccent":-20,"ccedilla\0lslash":-20,"ccedilla\0y":-10,"ccedilla\0yacute":-10,"ccedilla\0ydieresis":-10,"colon\0space":-40,"comma\0quotedblright":-120,"comma\0quoteright":-120,"comma\0space":-40,"d\0d":-10,"d\0dcroat":-10,"d\0v":-15,"d\0w":-15,"d\0y":-15,"d\0yacute":-15,"d\0ydieresis":-15,"dcroat\0d":-10,"dcroat\0dcroat":-10,"dcroat\0v":-15,"dcroat\0w":-15,"dcroat\0y":-15,"dcroat\0yacute":-15,"dcroat\0ydieresis":-15,"e\0comma":10,"e\0period":20,"e\0v":-15,"e\0w":-15,"e\0x":-15,"e\0y":-15,"e\0yacute":-15,"e\0ydieresis":-15,"eacute\0comma":10,"eacute\0period":20,"eacute\0v":-15,"eacute\0w":-15,"eacute\0x":-15,"eacute\0y":-15,"eacute\0yacute":-15,"eacute\0ydieresis":-15,"ecaron\0comma":10,"ecaron\0period":20,"ecaron\0v":-15,"ecaron\0w":-15,"ecaron\0x":-15,"ecaron\0y":-15,"ecaron\0yacute":-15,"ecaron\0ydieresis":-15,"ecircumflex\0comma":10,"ecircumflex\0period":20,"ecircumflex\0v":-15,"ecircumflex\0w":-15,"ecircumflex\0x":-15,"ecircumflex\0y":-15,"ecircumflex\0yacute":-15,"ecircumflex\0ydieresis":-15,"edieresis\0comma":10,"edieresis\0period":20,"edieresis\0v":-15,"edieresis\0w":-15,"edieresis\0x":-15,"edieresis\0y":-15,"edieresis\0yacute":-15,"edieresis\0ydieresis":-15,"edotaccent\0comma":10,"edotaccent\0period":20,"edotaccent\0v":-15,"edotaccent\0w":-15,"edotaccent\0x":-15,"edotaccent\0y":-15,"edotaccent\0yacute":-15,"edotaccent\0ydieresis":-15,"egrave\0comma":10,"egrave\0period":20,"egrave\0v":-15,"egrave\0w":-15,"egrave\0x":-15,"egrave\0y":-15,"egrave\0yacute":-15,"egrave\0ydieresis":-15,"emacron\0comma":10,"emacron\0period":20,"emacron\0v":-15,"emacron\0w":-15,"emacron\0x":-15,"emacron\0y":-15,"emacron\0yacute":-15,"emacron\0ydieresis":-15,"eogonek\0comma":10,"eogonek\0period":20,"eogonek\0v":-15,"eogonek\0w":-15,"eogonek\0x":-15,"eogonek\0y":-15,"eogonek\0yacute":-15,"eogonek\0ydieresis":-15,"f\0comma":-10,"f\0e":-10,"f\0eacute":-10,"f\0ecaron":-10,"f\0ecircumflex":-10,"f\0edieresis":-10,"f\0edotaccent":-10,"f\0egrave":-10,"f\0emacron":-10,"f\0eogonek":-10,"f\0o":-20,"f\0oacute":-20,"f\0ocircumflex":-20,"f\0odieresis":-20,"f\0ograve":-20,"f\0ohungarumlaut":-20,"f\0omacron":-20,"f\0oslash":-20,"f\0otilde":-20,"f\0period":-10,"f\0quotedblright":30,"f\0quoteright":30,"g\0e":10,"g\0eacute":10,"g\0ecaron":10,"g\0ecircumflex":10,"g\0edieresis":10,"g\0edotaccent":10,"g\0egrave":10,"g\0emacron":10,"g\0eogonek":10,"g\0g":-10,"g\0gbreve":-10,"g\0gcommaaccent":-10,"gbreve\0e":10,"gbreve\0eacute":10,"gbreve\0ecaron":10,"gbreve\0ecircumflex":10,"gbreve\0edieresis":10,"gbreve\0edotaccent":10,"gbreve\0egrave":10,"gbreve\0emacron":10,"gbreve\0eogonek":10,"gbreve\0g":-10,"gbreve\0gbreve":-10,"gbreve\0gcommaaccent":-10,"gcommaaccent\0e":10,"gcommaaccent\0eacute":10,"gcommaaccent\0ecaron":10,"gcommaaccent\0ecircumflex":10,"gcommaaccent\0edieresis":10,"gcommaaccent\0edotaccent":10,"gcommaaccent\0egrave":10,"gcommaaccent\0emacron":10,"gcommaaccent\0eogonek":10,"gcommaaccent\0g":-10,"gcommaaccent\0gbreve":-10,"gcommaaccent\0gcommaaccent":-10,"h\0y":-20,"h\0yacute":-20,"h\0ydieresis":-20,"k\0o":-15,"k\0oacute":-15,"k\0ocircumflex":-15,"k\0odieresis":-15,"k\0ograve":-15,"k\0ohungarumlaut":-15,"k\0omacron":-15,"k\0oslash":-15,"k\0otilde":-15,"kcommaaccent\0o":-15,"kcommaaccent\0oacute":-15,"kcommaaccent\0ocircumflex":-15,"kcommaaccent\0odieresis":-15,"kcommaaccent\0ograve":-15,"kcommaaccent\0ohungarumlaut":-15,"kcommaaccent\0omacron":-15,"kcommaaccent\0oslash":-15,"kcommaaccent\0otilde":-15,"l\0w":-15,"l\0y":-15,"l\0yacute":-15,"l\0ydieresis":-15,"lacute\0w":-15,"lacute\0y":-15,"lacute\0yacute":-15,"lacute\0ydieresis":-15,"lcommaaccent\0w":-15,"lcommaaccent\0y":-15,"lcommaaccent\0yacute":-15,"lcommaaccent\0ydieresis":-15,"lslash\0w":-15,"lslash\0y":-15,"lslash\0yacute":-15,"lslash\0ydieresis":-15,"m\0u":-20,"m\0uacute":-20,"m\0ucircumflex":-20,"m\0udieresis":-20,"m\0ugrave":-20,"m\0uhungarumlaut":-20,"m\0umacron":-20,"m\0uogonek":-20,"m\0uring":-20,"m\0y":-30,"m\0yacute":-30,"m\0ydieresis":-30,"n\0u":-10,"n\0uacute":-10,"n\0ucircumflex":-10,"n\0udieresis":-10,"n\0ugrave":-10,"n\0uhungarumlaut":-10,"n\0umacron":-10,"n\0uogonek":-10,"n\0uring":-10,"n\0v":-40,"n\0y":-20,"n\0yacute":-20,"n\0ydieresis":-20,"nacute\0u":-10,"nacute\0uacute":-10,"nacute\0ucircumflex":-10,"nacute\0udieresis":-10,"nacute\0ugrave":-10,"nacute\0uhungarumlaut":-10,"nacute\0umacron":-10,"nacute\0uogonek":-10,"nacute\0uring":-10,"nacute\0v":-40,"nacute\0y":-20,"nacute\0yacute":-20,"nacute\0ydieresis":-20,"ncaron\0u":-10,"ncaron\0uacute":-10,"ncaron\0ucircumflex":-10,"ncaron\0udieresis":-10,"ncaron\0ugrave":-10,"ncaron\0uhungarumlaut":-10,"ncaron\0umacron":-10,"ncaron\0uogonek":-10,"ncaron\0uring":-10,"ncaron\0v":-40,"ncaron\0y":-20,"ncaron\0yacute":-20,"ncaron\0ydieresis":-20,"ncommaaccent\0u":-10,"ncommaaccent\0uacute":-10,"ncommaaccent\0ucircumflex":-10,"ncommaaccent\0udieresis":-10,"ncommaaccent\0ugrave":-10,"ncommaaccent\0uhungarumlaut":-10,"ncommaaccent\0umacron":-10,"ncommaaccent\0uogonek":-10,"ncommaaccent\0uring":-10,"ncommaaccent\0v":-40,"ncommaaccent\0y":-20,"ncommaaccent\0yacute":-20,"ncommaaccent\0ydieresis":-20,"ntilde\0u":-10,"ntilde\0uacute":-10,"ntilde\0ucircumflex":-10,"ntilde\0udieresis":-10,"ntilde\0ugrave":-10,"ntilde\0uhungarumlaut":-10,"ntilde\0umacron":-10,"ntilde\0uogonek":-10,"ntilde\0uring":-10,"ntilde\0v":-40,"ntilde\0y":-20,"ntilde\0yacute":-20,"ntilde\0ydieresis":-20,"o\0v":-20,"o\0w":-15,"o\0x":-30,"o\0y":-20,"o\0yacute":-20,"o\0ydieresis":-20,"oacute\0v":-20,"oacute\0w":-15,"oacute\0x":-30,"oacute\0y":-20,"oacute\0yacute":-20,"oacute\0ydieresis":-20,"ocircumflex\0v":-20,"ocircumflex\0w":-15,"ocircumflex\0x":-30,"ocircumflex\0y":-20,"ocircumflex\0yacute":-20,"ocircumflex\0ydieresis":-20,"odieresis\0v":-20,"odieresis\0w":-15,"odieresis\0x":-30,"odieresis\0y":-20,"odieresis\0yacute":-20,"odieresis\0ydieresis":-20,"ograve\0v":-20,"ograve\0w":-15,"ograve\0x":-30,"ograve\0y":-20,"ograve\0yacute":-20,"ograve\0ydieresis":-20,"ohungarumlaut\0v":-20,"ohungarumlaut\0w":-15,"ohungarumlaut\0x":-30,"ohungarumlaut\0y":-20,"ohungarumlaut\0yacute":-20,"ohungarumlaut\0ydieresis":-20,"omacron\0v":-20,"omacron\0w":-15,"omacron\0x":-30,"omacron\0y":-20,"omacron\0yacute":-20,"omacron\0ydieresis":-20,"oslash\0v":-20,"oslash\0w":-15,"oslash\0x":-30,"oslash\0y":-20,"oslash\0yacute":-20,"oslash\0ydieresis":-20,"otilde\0v":-20,"otilde\0w":-15,"otilde\0x":-30,"otilde\0y":-20,"otilde\0yacute":-20,"otilde\0ydieresis":-20,"p\0y":-15,"p\0yacute":-15,"p\0ydieresis":-15,"period\0quotedblright":-120,"period\0quoteright":-120,"period\0space":-40,"quotedblright\0space":-80,"quoteleft\0quoteleft":-46,"quoteright\0d":-80,"quoteright\0dcroat":-80,"quoteright\0l":-20,"quoteright\0lacute":-20,"quoteright\0lcommaaccent":-20,"quoteright\0lslash":-20,"quoteright\0quoteright":-46,"quoteright\0r":-40,"quoteright\0racute":-40,"quoteright\0rcaron":-40,"quoteright\0rcommaaccent":-40,"quoteright\0s":-60,"quoteright\0sacute":-60,"quoteright\0scaron":-60,"quoteright\0scedilla":-60,"quoteright\0scommaaccent":-60,"quoteright\0space":-80,"quoteright\0v":-20,"r\0c":-20,"r\0cacute":-20,"r\0ccaron":-20,"r\0ccedilla":-20,"r\0comma":-60,"r\0d":-20,"r\0dcroat":-20,"r\0g":-15,"r\0gbreve":-15,"r\0gcommaaccent":-15,"r\0hyphen":-20,"r\0o":-20,"r\0oacute":-20,"r\0ocircumflex":-20,"r\0odieresis":-20,"r\0ograve":-20,"r\0ohungarumlaut":-20,"r\0omacron":-20,"r\0oslash":-20,"r\0otilde":-20,"r\0period":-60,"r\0q":-20,"r\0s":-15,"r\0sacute":-15,"r\0scaron":-15,"r\0scedilla":-15,"r\0scommaaccent":-15,"r\0t":20,"r\0tcommaaccent":20,"r\0v":10,"r\0y":10,"r\0yacute":10,"r\0ydieresis":10,"racute\0c":-20,"racute\0cacute":-20,"racute\0ccaron":-20,"racute\0ccedilla":-20,"racute\0comma":-60,"racute\0d":-20,"racute\0dcroat":-20,"racute\0g":-15,"racute\0gbreve":-15,"racute\0gcommaaccent":-15,"racute\0hyphen":-20,"racute\0o":-20,"racute\0oacute":-20,"racute\0ocircumflex":-20,"racute\0odieresis":-20,"racute\0ograve":-20,"racute\0ohungarumlaut":-20,"racute\0omacron":-20,"racute\0oslash":-20,"racute\0otilde":-20,"racute\0period":-60,"racute\0q":-20,"racute\0s":-15,"racute\0sacute":-15,"racute\0scaron":-15,"racute\0scedilla":-15,"racute\0scommaaccent":-15,"racute\0t":20,"racute\0tcommaaccent":20,"racute\0v":10,"racute\0y":10,"racute\0yacute":10,"racute\0ydieresis":10,"rcaron\0c":-20,"rcaron\0cacute":-20,"rcaron\0ccaron":-20,"rcaron\0ccedilla":-20,"rcaron\0comma":-60,"rcaron\0d":-20,"rcaron\0dcroat":-20,"rcaron\0g":-15,"rcaron\0gbreve":-15,"rcaron\0gcommaaccent":-15,"rcaron\0hyphen":-20,"rcaron\0o":-20,"rcaron\0oacute":-20,"rcaron\0ocircumflex":-20,"rcaron\0odieresis":-20,"rcaron\0ograve":-20,"rcaron\0ohungarumlaut":-20,"rcaron\0omacron":-20,"rcaron\0oslash":-20,"rcaron\0otilde":-20,"rcaron\0period":-60,"rcaron\0q":-20,"rcaron\0s":-15,"rcaron\0sacute":-15,"rcaron\0scaron":-15,"rcaron\0scedilla":-15,"rcaron\0scommaaccent":-15,"rcaron\0t":20,"rcaron\0tcommaaccent":20,"rcaron\0v":10,"rcaron\0y":10,"rcaron\0yacute":10,"rcaron\0ydieresis":10,"rcommaaccent\0c":-20,"rcommaaccent\0cacute":-20,"rcommaaccent\0ccaron":-20,"rcommaaccent\0ccedilla":-20,"rcommaaccent\0comma":-60,"rcommaaccent\0d":-20,"rcommaaccent\0dcroat":-20,"rcommaaccent\0g":-15,"rcommaaccent\0gbreve":-15,"rcommaaccent\0gcommaaccent":-15,"rcommaaccent\0hyphen":-20,"rcommaaccent\0o":-20,"rcommaaccent\0oacute":-20,"rcommaaccent\0ocircumflex":-20,"rcommaaccent\0odieresis":-20,"rcommaaccent\0ograve":-20,"rcommaaccent\0ohungarumlaut":-20,"rcommaaccent\0omacron":-20,"rcommaaccent\0oslash":-20,"rcommaaccent\0otilde":-20,"rcommaaccent\0period":-60,"rcommaaccent\0q":-20,"rcommaaccent\0s":-15,"rcommaaccent\0sacute":-15,"rcommaaccent\0scaron":-15,"rcommaaccent\0scedilla":-15,"rcommaaccent\0scommaaccent":-15,"rcommaaccent\0t":20,"rcommaaccent\0tcommaaccent":20,"rcommaaccent\0v":10,"rcommaaccent\0y":10,"rcommaaccent\0yacute":10,"rcommaaccent\0ydieresis":10,"s\0w":-15,"sacute\0w":-15,"scaron\0w":-15,"scedilla\0w":-15,"scommaaccent\0w":-15,"semicolon\0space":-40,"space\0T":-100,"space\0Tcaron":-100,"space\0Tcommaaccent":-100,"space\0V":-80,"space\0W":-80,"space\0Y":-120,"space\0Yacute":-120,"space\0Ydieresis":-120,"space\0quotedblleft":-80,"space\0quoteleft":-60,"v\0a":-20,"v\0aacute":-20,"v\0abreve":-20,"v\0acircumflex":-20,"v\0adieresis":-20,"v\0agrave":-20,"v\0amacron":-20,"v\0aogonek":-20,"v\0aring":-20,"v\0atilde":-20,"v\0comma":-80,"v\0o":-30,"v\0oacute":-30,"v\0ocircumflex":-30,"v\0odieresis":-30,"v\0ograve":-30,"v\0ohungarumlaut":-30,"v\0omacron":-30,"v\0oslash":-30,"v\0otilde":-30,"v\0period":-80,"w\0comma":-40,"w\0o":-20,"w\0oacute":-20,"w\0ocircumflex":-20,"w\0odieresis":-20,"w\0ograve":-20,"w\0ohungarumlaut":-20,"w\0omacron":-20,"w\0oslash":-20,"w\0otilde":-20,"w\0period":-40,"x\0e":-10,"x\0eacute":-10,"x\0ecaron":-10,"x\0ecircumflex":-10,"x\0edieresis":-10,"x\0edotaccent":-10,"x\0egrave":-10,"x\0emacron":-10,"x\0eogonek":-10,"y\0a":-30,"y\0aacute":-30,"y\0abreve":-30,"y\0acircumflex":-30,"y\0adieresis":-30,"y\0agrave":-30,"y\0amacron":-30,"y\0aogonek":-30,"y\0aring":-30,"y\0atilde":-30,"y\0comma":-80,"y\0e":-10,"y\0eacute":-10,"y\0ecaron":-10,"y\0ecircumflex":-10,"y\0edieresis":-10,"y\0edotaccent":-10,"y\0egrave":-10,"y\0emacron":-10,"y\0eogonek":-10,"y\0o":-25,"y\0oacute":-25,"y\0ocircumflex":-25,"y\0odieresis":-25,"y\0ograve":-25,"y\0ohungarumlaut":-25,"y\0omacron":-25,"y\0oslash":-25,"y\0otilde":-25,"y\0period":-80,"yacute\0a":-30,"yacute\0aacute":-30,"yacute\0abreve":-30,"yacute\0acircumflex":-30,"yacute\0adieresis":-30,"yacute\0agrave":-30,"yacute\0amacron":-30,"yacute\0aogonek":-30,"yacute\0aring":-30,"yacute\0atilde":-30,"yacute\0comma":-80,"yacute\0e":-10,"yacute\0eacute":-10,"yacute\0ecaron":-10,"yacute\0ecircumflex":-10,"yacute\0edieresis":-10,"yacute\0edotaccent":-10,"yacute\0egrave":-10,"yacute\0emacron":-10,"yacute\0eogonek":-10,"yacute\0o":-25,"yacute\0oacute":-25,"yacute\0ocircumflex":-25,"yacute\0odieresis":-25,"yacute\0ograve":-25,"yacute\0ohungarumlaut":-25,"yacute\0omacron":-25,"yacute\0oslash":-25,"yacute\0otilde":-25,"yacute\0period":-80,"ydieresis\0a":-30,"ydieresis\0aacute":-30,"ydieresis\0abreve":-30,"ydieresis\0acircumflex":-30,"ydieresis\0adieresis":-30,"ydieresis\0agrave":-30,"ydieresis\0amacron":-30,"ydieresis\0aogonek":-30,"ydieresis\0aring":-30,"ydieresis\0atilde":-30,"ydieresis\0comma":-80,"ydieresis\0e":-10,"ydieresis\0eacute":-10,"ydieresis\0ecaron":-10,"ydieresis\0ecircumflex":-10,"ydieresis\0edieresis":-10,"ydieresis\0edotaccent":-10,"ydieresis\0egrave":-10,"ydieresis\0emacron":-10,"ydieresis\0eogonek":-10,"ydieresis\0o":-25,"ydieresis\0oacute":-25,"ydieresis\0ocircumflex":-25,"ydieresis\0odieresis":-25,"ydieresis\0ograve":-25,"ydieresis\0ohungarumlaut":-25,"ydieresis\0omacron":-25,"ydieresis\0oslash":-25,"ydieresis\0otilde":-25,"ydieresis\0period":-80,"z\0e":10,"z\0eacute":10,"z\0ecaron":10,"z\0ecircumflex":10,"z\0edieresis":10,"z\0edotaccent":10,"z\0egrave":10,"z\0emacron":10,"z\0eogonek":10,"zacute\0e":10,"zacute\0eacute":10,"zacute\0ecaron":10,"zacute\0ecircumflex":10,"zacute\0edieresis":10,"zacute\0edotaccent":10,"zacute\0egrave":10,"zacute\0emacron":10,"zacute\0eogonek":10,"zcaron\0e":10,"zcaron\0eacute":10,"zcaron\0ecaron":10,"zcaron\0ecircumflex":10,"zcaron\0edieresis":10,"zcaron\0edotaccent":10,"zcaron\0egrave":10,"zcaron\0emacron":10,"zcaron\0eogonek":10,"zdotaccent\0e":10,"zdotaccent\0eacute":10,"zdotaccent\0ecaron":10,"zdotaccent\0ecircumflex":10,"zdotaccent\0edieresis":10,"zdotaccent\0edotaccent":10,"zdotaccent\0egrave":10,"zdotaccent\0emacron":10,"zdotaccent\0eogonek":10}},"Helvetica-Oblique":{attributes:{Comment:["Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated.  All Rights Reserved.","Creation Date: Thu May  1 12:44:31 1997","UniqueID 43055","VMusage 14960 69346"],FontName:"Helvetica-Oblique",FullName:"Helvetica Oblique",FamilyName:"Helvetica",Weight:"Medium",ItalicAngle:"-12",IsFixedPitch:"false",CharacterSet:"ExtendedRoman",FontBBox:"-170 -225 1116 931 ",UnderlinePosition:"-100",UnderlineThickness:"50",Version:"002.000",Notice:"Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated.  All Rights Reserved.Helvetica is a trademark of Linotype-Hell AG and/or its subsidiaries.",EncodingScheme:"AdobeStandardEncoding",CapHeight:"718",XHeight:"523",Ascender:"718",Descender:"-207",StdHW:"76",StdVW:"88"},glyphWidths:{space:278,exclam:278,quotedbl:355,numbersign:556,dollar:556,percent:889,ampersand:667,quoteright:222,parenleft:333,parenright:333,asterisk:389,plus:584,comma:278,hyphen:333,period:278,slash:278,zero:556,one:556,two:556,three:556,four:556,five:556,six:556,seven:556,eight:556,nine:556,colon:278,semicolon:278,less:584,equal:584,greater:584,question:556,at:1015,A:667,B:667,C:722,D:722,E:667,F:611,G:778,H:722,I:278,J:500,K:667,L:556,M:833,N:722,O:778,P:667,Q:778,R:722,S:667,T:611,U:722,V:667,W:944,X:667,Y:667,Z:611,bracketleft:278,backslash:278,bracketright:278,asciicircum:469,underscore:556,quoteleft:222,a:556,b:556,c:500,d:556,e:556,f:278,g:556,h:556,i:222,j:222,k:500,l:222,m:833,n:556,o:556,p:556,q:556,r:333,s:500,t:278,u:556,v:500,w:722,x:500,y:500,z:500,braceleft:334,bar:260,braceright:334,asciitilde:584,exclamdown:333,cent:556,sterling:556,fraction:167,yen:556,florin:556,section:556,currency:556,quotesingle:191,quotedblleft:333,guillemotleft:556,guilsinglleft:333,guilsinglright:333,fi:500,fl:500,endash:556,dagger:556,daggerdbl:556,periodcentered:278,paragraph:537,bullet:350,quotesinglbase:222,quotedblbase:333,quotedblright:333,guillemotright:556,ellipsis:1e3,perthousand:1e3,questiondown:611,grave:333,acute:333,circumflex:333,tilde:333,macron:333,breve:333,dotaccent:333,dieresis:333,ring:333,cedilla:333,hungarumlaut:333,ogonek:333,caron:333,emdash:1e3,AE:1e3,ordfeminine:370,Lslash:556,Oslash:778,OE:1e3,ordmasculine:365,ae:889,dotlessi:278,lslash:222,oslash:611,oe:944,germandbls:611,Idieresis:278,eacute:556,abreve:556,uhungarumlaut:556,ecaron:556,Ydieresis:667,divide:584,Yacute:667,Acircumflex:667,aacute:556,Ucircumflex:722,yacute:500,scommaaccent:500,ecircumflex:556,Uring:722,Udieresis:722,aogonek:556,Uacute:722,uogonek:556,Edieresis:667,Dcroat:722,commaaccent:250,copyright:737,Emacron:667,ccaron:500,aring:556,Ncommaaccent:722,lacute:222,agrave:556,Tcommaaccent:611,Cacute:722,atilde:556,Edotaccent:667,scaron:500,scedilla:500,iacute:278,lozenge:471,Rcaron:722,Gcommaaccent:778,ucircumflex:556,acircumflex:556,Amacron:667,rcaron:333,ccedilla:500,Zdotaccent:611,Thorn:667,Omacron:778,Racute:722,Sacute:667,dcaron:643,Umacron:722,uring:556,threesuperior:333,Ograve:778,Agrave:667,Abreve:667,multiply:584,uacute:556,Tcaron:611,partialdiff:476,ydieresis:500,Nacute:722,icircumflex:278,Ecircumflex:667,adieresis:556,edieresis:556,cacute:500,nacute:556,umacron:556,Ncaron:722,Iacute:278,plusminus:584,brokenbar:260,registered:737,Gbreve:778,Idotaccent:278,summation:600,Egrave:667,racute:333,omacron:556,Zacute:611,Zcaron:611,greaterequal:549,Eth:722,Ccedilla:722,lcommaaccent:222,tcaron:317,eogonek:556,Uogonek:722,Aacute:667,Adieresis:667,egrave:556,zacute:500,iogonek:222,Oacute:778,oacute:556,amacron:556,sacute:500,idieresis:278,Ocircumflex:778,Ugrave:722,Delta:612,thorn:556,twosuperior:333,Odieresis:778,mu:556,igrave:278,ohungarumlaut:556,Eogonek:667,dcroat:556,threequarters:834,Scedilla:667,lcaron:299,Kcommaaccent:667,Lacute:556,trademark:1e3,edotaccent:556,Igrave:278,Imacron:278,Lcaron:556,onehalf:834,lessequal:549,ocircumflex:556,ntilde:556,Uhungarumlaut:722,Eacute:667,emacron:556,gbreve:556,onequarter:834,Scaron:667,Scommaaccent:667,Ohungarumlaut:778,degree:400,ograve:556,Ccaron:722,ugrave:556,radical:453,Dcaron:722,rcommaaccent:333,Ntilde:722,otilde:556,Rcommaaccent:722,Lcommaaccent:556,Atilde:667,Aogonek:667,Aring:667,Otilde:778,zdotaccent:500,Ecaron:667,Iogonek:278,kcommaaccent:500,minus:584,Icircumflex:278,ncaron:556,tcommaaccent:278,logicalnot:584,odieresis:556,udieresis:556,notequal:549,gcommaaccent:556,eth:556,zcaron:500,ncommaaccent:556,onesuperior:333,imacron:278,Euro:556},kernPairs:{"A\0C":-30,"A\0Cacute":-30,"A\0Ccaron":-30,"A\0Ccedilla":-30,"A\0G":-30,"A\0Gbreve":-30,"A\0Gcommaaccent":-30,"A\0O":-30,"A\0Oacute":-30,"A\0Ocircumflex":-30,"A\0Odieresis":-30,"A\0Ograve":-30,"A\0Ohungarumlaut":-30,"A\0Omacron":-30,"A\0Oslash":-30,"A\0Otilde":-30,"A\0Q":-30,"A\0T":-120,"A\0Tcaron":-120,"A\0Tcommaaccent":-120,"A\0U":-50,"A\0Uacute":-50,"A\0Ucircumflex":-50,"A\0Udieresis":-50,"A\0Ugrave":-50,"A\0Uhungarumlaut":-50,"A\0Umacron":-50,"A\0Uogonek":-50,"A\0Uring":-50,"A\0V":-70,"A\0W":-50,"A\0Y":-100,"A\0Yacute":-100,"A\0Ydieresis":-100,"A\0u":-30,"A\0uacute":-30,"A\0ucircumflex":-30,"A\0udieresis":-30,"A\0ugrave":-30,"A\0uhungarumlaut":-30,"A\0umacron":-30,"A\0uogonek":-30,"A\0uring":-30,"A\0v":-40,"A\0w":-40,"A\0y":-40,"A\0yacute":-40,"A\0ydieresis":-40,"Aacute\0C":-30,"Aacute\0Cacute":-30,"Aacute\0Ccaron":-30,"Aacute\0Ccedilla":-30,"Aacute\0G":-30,"Aacute\0Gbreve":-30,"Aacute\0Gcommaaccent":-30,"Aacute\0O":-30,"Aacute\0Oacute":-30,"Aacute\0Ocircumflex":-30,"Aacute\0Odieresis":-30,"Aacute\0Ograve":-30,"Aacute\0Ohungarumlaut":-30,"Aacute\0Omacron":-30,"Aacute\0Oslash":-30,"Aacute\0Otilde":-30,"Aacute\0Q":-30,"Aacute\0T":-120,"Aacute\0Tcaron":-120,"Aacute\0Tcommaaccent":-120,"Aacute\0U":-50,"Aacute\0Uacute":-50,"Aacute\0Ucircumflex":-50,"Aacute\0Udieresis":-50,"Aacute\0Ugrave":-50,"Aacute\0Uhungarumlaut":-50,"Aacute\0Umacron":-50,"Aacute\0Uogonek":-50,"Aacute\0Uring":-50,"Aacute\0V":-70,"Aacute\0W":-50,"Aacute\0Y":-100,"Aacute\0Yacute":-100,"Aacute\0Ydieresis":-100,"Aacute\0u":-30,"Aacute\0uacute":-30,"Aacute\0ucircumflex":-30,"Aacute\0udieresis":-30,"Aacute\0ugrave":-30,"Aacute\0uhungarumlaut":-30,"Aacute\0umacron":-30,"Aacute\0uogonek":-30,"Aacute\0uring":-30,"Aacute\0v":-40,"Aacute\0w":-40,"Aacute\0y":-40,"Aacute\0yacute":-40,"Aacute\0ydieresis":-40,"Abreve\0C":-30,"Abreve\0Cacute":-30,"Abreve\0Ccaron":-30,"Abreve\0Ccedilla":-30,"Abreve\0G":-30,"Abreve\0Gbreve":-30,"Abreve\0Gcommaaccent":-30,"Abreve\0O":-30,"Abreve\0Oacute":-30,"Abreve\0Ocircumflex":-30,"Abreve\0Odieresis":-30,"Abreve\0Ograve":-30,"Abreve\0Ohungarumlaut":-30,"Abreve\0Omacron":-30,"Abreve\0Oslash":-30,"Abreve\0Otilde":-30,"Abreve\0Q":-30,"Abreve\0T":-120,"Abreve\0Tcaron":-120,"Abreve\0Tcommaaccent":-120,"Abreve\0U":-50,"Abreve\0Uacute":-50,"Abreve\0Ucircumflex":-50,"Abreve\0Udieresis":-50,"Abreve\0Ugrave":-50,"Abreve\0Uhungarumlaut":-50,"Abreve\0Umacron":-50,"Abreve\0Uogonek":-50,"Abreve\0Uring":-50,"Abreve\0V":-70,"Abreve\0W":-50,"Abreve\0Y":-100,"Abreve\0Yacute":-100,"Abreve\0Ydieresis":-100,"Abreve\0u":-30,"Abreve\0uacute":-30,"Abreve\0ucircumflex":-30,"Abreve\0udieresis":-30,"Abreve\0ugrave":-30,"Abreve\0uhungarumlaut":-30,"Abreve\0umacron":-30,"Abreve\0uogonek":-30,"Abreve\0uring":-30,"Abreve\0v":-40,"Abreve\0w":-40,"Abreve\0y":-40,"Abreve\0yacute":-40,"Abreve\0ydieresis":-40,"Acircumflex\0C":-30,"Acircumflex\0Cacute":-30,"Acircumflex\0Ccaron":-30,"Acircumflex\0Ccedilla":-30,"Acircumflex\0G":-30,"Acircumflex\0Gbreve":-30,"Acircumflex\0Gcommaaccent":-30,"Acircumflex\0O":-30,"Acircumflex\0Oacute":-30,"Acircumflex\0Ocircumflex":-30,"Acircumflex\0Odieresis":-30,"Acircumflex\0Ograve":-30,"Acircumflex\0Ohungarumlaut":-30,"Acircumflex\0Omacron":-30,"Acircumflex\0Oslash":-30,"Acircumflex\0Otilde":-30,"Acircumflex\0Q":-30,"Acircumflex\0T":-120,"Acircumflex\0Tcaron":-120,"Acircumflex\0Tcommaaccent":-120,"Acircumflex\0U":-50,"Acircumflex\0Uacute":-50,"Acircumflex\0Ucircumflex":-50,"Acircumflex\0Udieresis":-50,"Acircumflex\0Ugrave":-50,"Acircumflex\0Uhungarumlaut":-50,"Acircumflex\0Umacron":-50,"Acircumflex\0Uogonek":-50,"Acircumflex\0Uring":-50,"Acircumflex\0V":-70,"Acircumflex\0W":-50,"Acircumflex\0Y":-100,"Acircumflex\0Yacute":-100,"Acircumflex\0Ydieresis":-100,"Acircumflex\0u":-30,"Acircumflex\0uacute":-30,"Acircumflex\0ucircumflex":-30,"Acircumflex\0udieresis":-30,"Acircumflex\0ugrave":-30,"Acircumflex\0uhungarumlaut":-30,"Acircumflex\0umacron":-30,"Acircumflex\0uogonek":-30,"Acircumflex\0uring":-30,"Acircumflex\0v":-40,"Acircumflex\0w":-40,"Acircumflex\0y":-40,"Acircumflex\0yacute":-40,"Acircumflex\0ydieresis":-40,"Adieresis\0C":-30,"Adieresis\0Cacute":-30,"Adieresis\0Ccaron":-30,"Adieresis\0Ccedilla":-30,"Adieresis\0G":-30,"Adieresis\0Gbreve":-30,"Adieresis\0Gcommaaccent":-30,"Adieresis\0O":-30,"Adieresis\0Oacute":-30,"Adieresis\0Ocircumflex":-30,"Adieresis\0Odieresis":-30,"Adieresis\0Ograve":-30,"Adieresis\0Ohungarumlaut":-30,"Adieresis\0Omacron":-30,"Adieresis\0Oslash":-30,"Adieresis\0Otilde":-30,"Adieresis\0Q":-30,"Adieresis\0T":-120,"Adieresis\0Tcaron":-120,"Adieresis\0Tcommaaccent":-120,"Adieresis\0U":-50,"Adieresis\0Uacute":-50,"Adieresis\0Ucircumflex":-50,"Adieresis\0Udieresis":-50,"Adieresis\0Ugrave":-50,"Adieresis\0Uhungarumlaut":-50,"Adieresis\0Umacron":-50,"Adieresis\0Uogonek":-50,"Adieresis\0Uring":-50,"Adieresis\0V":-70,"Adieresis\0W":-50,"Adieresis\0Y":-100,"Adieresis\0Yacute":-100,"Adieresis\0Ydieresis":-100,"Adieresis\0u":-30,"Adieresis\0uacute":-30,"Adieresis\0ucircumflex":-30,"Adieresis\0udieresis":-30,"Adieresis\0ugrave":-30,"Adieresis\0uhungarumlaut":-30,"Adieresis\0umacron":-30,"Adieresis\0uogonek":-30,"Adieresis\0uring":-30,"Adieresis\0v":-40,"Adieresis\0w":-40,"Adieresis\0y":-40,"Adieresis\0yacute":-40,"Adieresis\0ydieresis":-40,"Agrave\0C":-30,"Agrave\0Cacute":-30,"Agrave\0Ccaron":-30,"Agrave\0Ccedilla":-30,"Agrave\0G":-30,"Agrave\0Gbreve":-30,"Agrave\0Gcommaaccent":-30,"Agrave\0O":-30,"Agrave\0Oacute":-30,"Agrave\0Ocircumflex":-30,"Agrave\0Odieresis":-30,"Agrave\0Ograve":-30,"Agrave\0Ohungarumlaut":-30,"Agrave\0Omacron":-30,"Agrave\0Oslash":-30,"Agrave\0Otilde":-30,"Agrave\0Q":-30,"Agrave\0T":-120,"Agrave\0Tcaron":-120,"Agrave\0Tcommaaccent":-120,"Agrave\0U":-50,"Agrave\0Uacute":-50,"Agrave\0Ucircumflex":-50,"Agrave\0Udieresis":-50,"Agrave\0Ugrave":-50,"Agrave\0Uhungarumlaut":-50,"Agrave\0Umacron":-50,"Agrave\0Uogonek":-50,"Agrave\0Uring":-50,"Agrave\0V":-70,"Agrave\0W":-50,"Agrave\0Y":-100,"Agrave\0Yacute":-100,"Agrave\0Ydieresis":-100,"Agrave\0u":-30,"Agrave\0uacute":-30,"Agrave\0ucircumflex":-30,"Agrave\0udieresis":-30,"Agrave\0ugrave":-30,"Agrave\0uhungarumlaut":-30,"Agrave\0umacron":-30,"Agrave\0uogonek":-30,"Agrave\0uring":-30,"Agrave\0v":-40,"Agrave\0w":-40,"Agrave\0y":-40,"Agrave\0yacute":-40,"Agrave\0ydieresis":-40,"Amacron\0C":-30,"Amacron\0Cacute":-30,"Amacron\0Ccaron":-30,"Amacron\0Ccedilla":-30,"Amacron\0G":-30,"Amacron\0Gbreve":-30,"Amacron\0Gcommaaccent":-30,"Amacron\0O":-30,"Amacron\0Oacute":-30,"Amacron\0Ocircumflex":-30,"Amacron\0Odieresis":-30,"Amacron\0Ograve":-30,"Amacron\0Ohungarumlaut":-30,"Amacron\0Omacron":-30,"Amacron\0Oslash":-30,"Amacron\0Otilde":-30,"Amacron\0Q":-30,"Amacron\0T":-120,"Amacron\0Tcaron":-120,"Amacron\0Tcommaaccent":-120,"Amacron\0U":-50,"Amacron\0Uacute":-50,"Amacron\0Ucircumflex":-50,"Amacron\0Udieresis":-50,"Amacron\0Ugrave":-50,"Amacron\0Uhungarumlaut":-50,"Amacron\0Umacron":-50,"Amacron\0Uogonek":-50,"Amacron\0Uring":-50,"Amacron\0V":-70,"Amacron\0W":-50,"Amacron\0Y":-100,"Amacron\0Yacute":-100,"Amacron\0Ydieresis":-100,"Amacron\0u":-30,"Amacron\0uacute":-30,"Amacron\0ucircumflex":-30,"Amacron\0udieresis":-30,"Amacron\0ugrave":-30,"Amacron\0uhungarumlaut":-30,"Amacron\0umacron":-30,"Amacron\0uogonek":-30,"Amacron\0uring":-30,"Amacron\0v":-40,"Amacron\0w":-40,"Amacron\0y":-40,"Amacron\0yacute":-40,"Amacron\0ydieresis":-40,"Aogonek\0C":-30,"Aogonek\0Cacute":-30,"Aogonek\0Ccaron":-30,"Aogonek\0Ccedilla":-30,"Aogonek\0G":-30,"Aogonek\0Gbreve":-30,"Aogonek\0Gcommaaccent":-30,"Aogonek\0O":-30,"Aogonek\0Oacute":-30,"Aogonek\0Ocircumflex":-30,"Aogonek\0Odieresis":-30,"Aogonek\0Ograve":-30,"Aogonek\0Ohungarumlaut":-30,"Aogonek\0Omacron":-30,"Aogonek\0Oslash":-30,"Aogonek\0Otilde":-30,"Aogonek\0Q":-30,"Aogonek\0T":-120,"Aogonek\0Tcaron":-120,"Aogonek\0Tcommaaccent":-120,"Aogonek\0U":-50,"Aogonek\0Uacute":-50,"Aogonek\0Ucircumflex":-50,"Aogonek\0Udieresis":-50,"Aogonek\0Ugrave":-50,"Aogonek\0Uhungarumlaut":-50,"Aogonek\0Umacron":-50,"Aogonek\0Uogonek":-50,"Aogonek\0Uring":-50,"Aogonek\0V":-70,"Aogonek\0W":-50,"Aogonek\0Y":-100,"Aogonek\0Yacute":-100,"Aogonek\0Ydieresis":-100,"Aogonek\0u":-30,"Aogonek\0uacute":-30,"Aogonek\0ucircumflex":-30,"Aogonek\0udieresis":-30,"Aogonek\0ugrave":-30,"Aogonek\0uhungarumlaut":-30,"Aogonek\0umacron":-30,"Aogonek\0uogonek":-30,"Aogonek\0uring":-30,"Aogonek\0v":-40,"Aogonek\0w":-40,"Aogonek\0y":-40,"Aogonek\0yacute":-40,"Aogonek\0ydieresis":-40,"Aring\0C":-30,"Aring\0Cacute":-30,"Aring\0Ccaron":-30,"Aring\0Ccedilla":-30,"Aring\0G":-30,"Aring\0Gbreve":-30,"Aring\0Gcommaaccent":-30,"Aring\0O":-30,"Aring\0Oacute":-30,"Aring\0Ocircumflex":-30,"Aring\0Odieresis":-30,"Aring\0Ograve":-30,"Aring\0Ohungarumlaut":-30,"Aring\0Omacron":-30,"Aring\0Oslash":-30,"Aring\0Otilde":-30,"Aring\0Q":-30,"Aring\0T":-120,"Aring\0Tcaron":-120,"Aring\0Tcommaaccent":-120,"Aring\0U":-50,"Aring\0Uacute":-50,"Aring\0Ucircumflex":-50,"Aring\0Udieresis":-50,"Aring\0Ugrave":-50,"Aring\0Uhungarumlaut":-50,"Aring\0Umacron":-50,"Aring\0Uogonek":-50,"Aring\0Uring":-50,"Aring\0V":-70,"Aring\0W":-50,"Aring\0Y":-100,"Aring\0Yacute":-100,"Aring\0Ydieresis":-100,"Aring\0u":-30,"Aring\0uacute":-30,"Aring\0ucircumflex":-30,"Aring\0udieresis":-30,"Aring\0ugrave":-30,"Aring\0uhungarumlaut":-30,"Aring\0umacron":-30,"Aring\0uogonek":-30,"Aring\0uring":-30,"Aring\0v":-40,"Aring\0w":-40,"Aring\0y":-40,"Aring\0yacute":-40,"Aring\0ydieresis":-40,"Atilde\0C":-30,"Atilde\0Cacute":-30,"Atilde\0Ccaron":-30,"Atilde\0Ccedilla":-30,"Atilde\0G":-30,"Atilde\0Gbreve":-30,"Atilde\0Gcommaaccent":-30,"Atilde\0O":-30,"Atilde\0Oacute":-30,"Atilde\0Ocircumflex":-30,"Atilde\0Odieresis":-30,"Atilde\0Ograve":-30,"Atilde\0Ohungarumlaut":-30,"Atilde\0Omacron":-30,"Atilde\0Oslash":-30,"Atilde\0Otilde":-30,"Atilde\0Q":-30,"Atilde\0T":-120,"Atilde\0Tcaron":-120,"Atilde\0Tcommaaccent":-120,"Atilde\0U":-50,"Atilde\0Uacute":-50,"Atilde\0Ucircumflex":-50,"Atilde\0Udieresis":-50,"Atilde\0Ugrave":-50,"Atilde\0Uhungarumlaut":-50,"Atilde\0Umacron":-50,"Atilde\0Uogonek":-50,"Atilde\0Uring":-50,"Atilde\0V":-70,"Atilde\0W":-50,"Atilde\0Y":-100,"Atilde\0Yacute":-100,"Atilde\0Ydieresis":-100,"Atilde\0u":-30,"Atilde\0uacute":-30,"Atilde\0ucircumflex":-30,"Atilde\0udieresis":-30,"Atilde\0ugrave":-30,"Atilde\0uhungarumlaut":-30,"Atilde\0umacron":-30,"Atilde\0uogonek":-30,"Atilde\0uring":-30,"Atilde\0v":-40,"Atilde\0w":-40,"Atilde\0y":-40,"Atilde\0yacute":-40,"Atilde\0ydieresis":-40,"B\0U":-10,"B\0Uacute":-10,"B\0Ucircumflex":-10,"B\0Udieresis":-10,"B\0Ugrave":-10,"B\0Uhungarumlaut":-10,"B\0Umacron":-10,"B\0Uogonek":-10,"B\0Uring":-10,"B\0comma":-20,"B\0period":-20,"C\0comma":-30,"C\0period":-30,"Cacute\0comma":-30,"Cacute\0period":-30,"Ccaron\0comma":-30,"Ccaron\0period":-30,"Ccedilla\0comma":-30,"Ccedilla\0period":-30,"D\0A":-40,"D\0Aacute":-40,"D\0Abreve":-40,"D\0Acircumflex":-40,"D\0Adieresis":-40,"D\0Agrave":-40,"D\0Amacron":-40,"D\0Aogonek":-40,"D\0Aring":-40,"D\0Atilde":-40,"D\0V":-70,"D\0W":-40,"D\0Y":-90,"D\0Yacute":-90,"D\0Ydieresis":-90,"D\0comma":-70,"D\0period":-70,"Dcaron\0A":-40,"Dcaron\0Aacute":-40,"Dcaron\0Abreve":-40,"Dcaron\0Acircumflex":-40,"Dcaron\0Adieresis":-40,"Dcaron\0Agrave":-40,"Dcaron\0Amacron":-40,"Dcaron\0Aogonek":-40,"Dcaron\0Aring":-40,"Dcaron\0Atilde":-40,"Dcaron\0V":-70,"Dcaron\0W":-40,"Dcaron\0Y":-90,"Dcaron\0Yacute":-90,"Dcaron\0Ydieresis":-90,"Dcaron\0comma":-70,"Dcaron\0period":-70,"Dcroat\0A":-40,"Dcroat\0Aacute":-40,"Dcroat\0Abreve":-40,"Dcroat\0Acircumflex":-40,"Dcroat\0Adieresis":-40,"Dcroat\0Agrave":-40,"Dcroat\0Amacron":-40,"Dcroat\0Aogonek":-40,"Dcroat\0Aring":-40,"Dcroat\0Atilde":-40,"Dcroat\0V":-70,"Dcroat\0W":-40,"Dcroat\0Y":-90,"Dcroat\0Yacute":-90,"Dcroat\0Ydieresis":-90,"Dcroat\0comma":-70,"Dcroat\0period":-70,"F\0A":-80,"F\0Aacute":-80,"F\0Abreve":-80,"F\0Acircumflex":-80,"F\0Adieresis":-80,"F\0Agrave":-80,"F\0Amacron":-80,"F\0Aogonek":-80,"F\0Aring":-80,"F\0Atilde":-80,"F\0a":-50,"F\0aacute":-50,"F\0abreve":-50,"F\0acircumflex":-50,"F\0adieresis":-50,"F\0agrave":-50,"F\0amacron":-50,"F\0aogonek":-50,"F\0aring":-50,"F\0atilde":-50,"F\0comma":-150,"F\0e":-30,"F\0eacute":-30,"F\0ecaron":-30,"F\0ecircumflex":-30,"F\0edieresis":-30,"F\0edotaccent":-30,"F\0egrave":-30,"F\0emacron":-30,"F\0eogonek":-30,"F\0o":-30,"F\0oacute":-30,"F\0ocircumflex":-30,"F\0odieresis":-30,"F\0ograve":-30,"F\0ohungarumlaut":-30,"F\0omacron":-30,"F\0oslash":-30,"F\0otilde":-30,"F\0period":-150,"F\0r":-45,"F\0racute":-45,"F\0rcaron":-45,"F\0rcommaaccent":-45,"J\0A":-20,"J\0Aacute":-20,"J\0Abreve":-20,"J\0Acircumflex":-20,"J\0Adieresis":-20,"J\0Agrave":-20,"J\0Amacron":-20,"J\0Aogonek":-20,"J\0Aring":-20,"J\0Atilde":-20,"J\0a":-20,"J\0aacute":-20,"J\0abreve":-20,"J\0acircumflex":-20,"J\0adieresis":-20,"J\0agrave":-20,"J\0amacron":-20,"J\0aogonek":-20,"J\0aring":-20,"J\0atilde":-20,"J\0comma":-30,"J\0period":-30,"J\0u":-20,"J\0uacute":-20,"J\0ucircumflex":-20,"J\0udieresis":-20,"J\0ugrave":-20,"J\0uhungarumlaut":-20,"J\0umacron":-20,"J\0uogonek":-20,"J\0uring":-20,"K\0O":-50,"K\0Oacute":-50,"K\0Ocircumflex":-50,"K\0Odieresis":-50,"K\0Ograve":-50,"K\0Ohungarumlaut":-50,"K\0Omacron":-50,"K\0Oslash":-50,"K\0Otilde":-50,"K\0e":-40,"K\0eacute":-40,"K\0ecaron":-40,"K\0ecircumflex":-40,"K\0edieresis":-40,"K\0edotaccent":-40,"K\0egrave":-40,"K\0emacron":-40,"K\0eogonek":-40,"K\0o":-40,"K\0oacute":-40,"K\0ocircumflex":-40,"K\0odieresis":-40,"K\0ograve":-40,"K\0ohungarumlaut":-40,"K\0omacron":-40,"K\0oslash":-40,"K\0otilde":-40,"K\0u":-30,"K\0uacute":-30,"K\0ucircumflex":-30,"K\0udieresis":-30,"K\0ugrave":-30,"K\0uhungarumlaut":-30,"K\0umacron":-30,"K\0uogonek":-30,"K\0uring":-30,"K\0y":-50,"K\0yacute":-50,"K\0ydieresis":-50,"Kcommaaccent\0O":-50,"Kcommaaccent\0Oacute":-50,"Kcommaaccent\0Ocircumflex":-50,"Kcommaaccent\0Odieresis":-50,"Kcommaaccent\0Ograve":-50,"Kcommaaccent\0Ohungarumlaut":-50,"Kcommaaccent\0Omacron":-50,"Kcommaaccent\0Oslash":-50,"Kcommaaccent\0Otilde":-50,"Kcommaaccent\0e":-40,"Kcommaaccent\0eacute":-40,"Kcommaaccent\0ecaron":-40,"Kcommaaccent\0ecircumflex":-40,"Kcommaaccent\0edieresis":-40,"Kcommaaccent\0edotaccent":-40,"Kcommaaccent\0egrave":-40,"Kcommaaccent\0emacron":-40,"Kcommaaccent\0eogonek":-40,"Kcommaaccent\0o":-40,"Kcommaaccent\0oacute":-40,"Kcommaaccent\0ocircumflex":-40,"Kcommaaccent\0odieresis":-40,"Kcommaaccent\0ograve":-40,"Kcommaaccent\0ohungarumlaut":-40,"Kcommaaccent\0omacron":-40,"Kcommaaccent\0oslash":-40,"Kcommaaccent\0otilde":-40,"Kcommaaccent\0u":-30,"Kcommaaccent\0uacute":-30,"Kcommaaccent\0ucircumflex":-30,"Kcommaaccent\0udieresis":-30,"Kcommaaccent\0ugrave":-30,"Kcommaaccent\0uhungarumlaut":-30,"Kcommaaccent\0umacron":-30,"Kcommaaccent\0uogonek":-30,"Kcommaaccent\0uring":-30,"Kcommaaccent\0y":-50,"Kcommaaccent\0yacute":-50,"Kcommaaccent\0ydieresis":-50,"L\0T":-110,"L\0Tcaron":-110,"L\0Tcommaaccent":-110,"L\0V":-110,"L\0W":-70,"L\0Y":-140,"L\0Yacute":-140,"L\0Ydieresis":-140,"L\0quotedblright":-140,"L\0quoteright":-160,"L\0y":-30,"L\0yacute":-30,"L\0ydieresis":-30,"Lacute\0T":-110,"Lacute\0Tcaron":-110,"Lacute\0Tcommaaccent":-110,"Lacute\0V":-110,"Lacute\0W":-70,"Lacute\0Y":-140,"Lacute\0Yacute":-140,"Lacute\0Ydieresis":-140,"Lacute\0quotedblright":-140,"Lacute\0quoteright":-160,"Lacute\0y":-30,"Lacute\0yacute":-30,"Lacute\0ydieresis":-30,"Lcaron\0T":-110,"Lcaron\0Tcaron":-110,"Lcaron\0Tcommaaccent":-110,"Lcaron\0V":-110,"Lcaron\0W":-70,"Lcaron\0Y":-140,"Lcaron\0Yacute":-140,"Lcaron\0Ydieresis":-140,"Lcaron\0quotedblright":-140,"Lcaron\0quoteright":-160,"Lcaron\0y":-30,"Lcaron\0yacute":-30,"Lcaron\0ydieresis":-30,"Lcommaaccent\0T":-110,"Lcommaaccent\0Tcaron":-110,"Lcommaaccent\0Tcommaaccent":-110,"Lcommaaccent\0V":-110,"Lcommaaccent\0W":-70,"Lcommaaccent\0Y":-140,"Lcommaaccent\0Yacute":-140,"Lcommaaccent\0Ydieresis":-140,"Lcommaaccent\0quotedblright":-140,"Lcommaaccent\0quoteright":-160,"Lcommaaccent\0y":-30,"Lcommaaccent\0yacute":-30,"Lcommaaccent\0ydieresis":-30,"Lslash\0T":-110,"Lslash\0Tcaron":-110,"Lslash\0Tcommaaccent":-110,"Lslash\0V":-110,"Lslash\0W":-70,"Lslash\0Y":-140,"Lslash\0Yacute":-140,"Lslash\0Ydieresis":-140,"Lslash\0quotedblright":-140,"Lslash\0quoteright":-160,"Lslash\0y":-30,"Lslash\0yacute":-30,"Lslash\0ydieresis":-30,"O\0A":-20,"O\0Aacute":-20,"O\0Abreve":-20,"O\0Acircumflex":-20,"O\0Adieresis":-20,"O\0Agrave":-20,"O\0Amacron":-20,"O\0Aogonek":-20,"O\0Aring":-20,"O\0Atilde":-20,"O\0T":-40,"O\0Tcaron":-40,"O\0Tcommaaccent":-40,"O\0V":-50,"O\0W":-30,"O\0X":-60,"O\0Y":-70,"O\0Yacute":-70,"O\0Ydieresis":-70,"O\0comma":-40,"O\0period":-40,"Oacute\0A":-20,"Oacute\0Aacute":-20,"Oacute\0Abreve":-20,"Oacute\0Acircumflex":-20,"Oacute\0Adieresis":-20,"Oacute\0Agrave":-20,"Oacute\0Amacron":-20,"Oacute\0Aogonek":-20,"Oacute\0Aring":-20,"Oacute\0Atilde":-20,"Oacute\0T":-40,"Oacute\0Tcaron":-40,"Oacute\0Tcommaaccent":-40,"Oacute\0V":-50,"Oacute\0W":-30,"Oacute\0X":-60,"Oacute\0Y":-70,"Oacute\0Yacute":-70,"Oacute\0Ydieresis":-70,"Oacute\0comma":-40,"Oacute\0period":-40,"Ocircumflex\0A":-20,"Ocircumflex\0Aacute":-20,"Ocircumflex\0Abreve":-20,"Ocircumflex\0Acircumflex":-20,"Ocircumflex\0Adieresis":-20,"Ocircumflex\0Agrave":-20,"Ocircumflex\0Amacron":-20,"Ocircumflex\0Aogonek":-20,"Ocircumflex\0Aring":-20,"Ocircumflex\0Atilde":-20,"Ocircumflex\0T":-40,"Ocircumflex\0Tcaron":-40,"Ocircumflex\0Tcommaaccent":-40,"Ocircumflex\0V":-50,"Ocircumflex\0W":-30,"Ocircumflex\0X":-60,"Ocircumflex\0Y":-70,"Ocircumflex\0Yacute":-70,"Ocircumflex\0Ydieresis":-70,"Ocircumflex\0comma":-40,"Ocircumflex\0period":-40,"Odieresis\0A":-20,"Odieresis\0Aacute":-20,"Odieresis\0Abreve":-20,"Odieresis\0Acircumflex":-20,"Odieresis\0Adieresis":-20,"Odieresis\0Agrave":-20,"Odieresis\0Amacron":-20,"Odieresis\0Aogonek":-20,"Odieresis\0Aring":-20,"Odieresis\0Atilde":-20,"Odieresis\0T":-40,"Odieresis\0Tcaron":-40,"Odieresis\0Tcommaaccent":-40,"Odieresis\0V":-50,"Odieresis\0W":-30,"Odieresis\0X":-60,"Odieresis\0Y":-70,"Odieresis\0Yacute":-70,"Odieresis\0Ydieresis":-70,"Odieresis\0comma":-40,"Odieresis\0period":-40,"Ograve\0A":-20,"Ograve\0Aacute":-20,"Ograve\0Abreve":-20,"Ograve\0Acircumflex":-20,"Ograve\0Adieresis":-20,"Ograve\0Agrave":-20,"Ograve\0Amacron":-20,"Ograve\0Aogonek":-20,"Ograve\0Aring":-20,"Ograve\0Atilde":-20,"Ograve\0T":-40,"Ograve\0Tcaron":-40,"Ograve\0Tcommaaccent":-40,"Ograve\0V":-50,"Ograve\0W":-30,"Ograve\0X":-60,"Ograve\0Y":-70,"Ograve\0Yacute":-70,"Ograve\0Ydieresis":-70,"Ograve\0comma":-40,"Ograve\0period":-40,"Ohungarumlaut\0A":-20,"Ohungarumlaut\0Aacute":-20,"Ohungarumlaut\0Abreve":-20,"Ohungarumlaut\0Acircumflex":-20,"Ohungarumlaut\0Adieresis":-20,"Ohungarumlaut\0Agrave":-20,"Ohungarumlaut\0Amacron":-20,"Ohungarumlaut\0Aogonek":-20,"Ohungarumlaut\0Aring":-20,"Ohungarumlaut\0Atilde":-20,"Ohungarumlaut\0T":-40,"Ohungarumlaut\0Tcaron":-40,"Ohungarumlaut\0Tcommaaccent":-40,"Ohungarumlaut\0V":-50,"Ohungarumlaut\0W":-30,"Ohungarumlaut\0X":-60,"Ohungarumlaut\0Y":-70,"Ohungarumlaut\0Yacute":-70,"Ohungarumlaut\0Ydieresis":-70,"Ohungarumlaut\0comma":-40,"Ohungarumlaut\0period":-40,"Omacron\0A":-20,"Omacron\0Aacute":-20,"Omacron\0Abreve":-20,"Omacron\0Acircumflex":-20,"Omacron\0Adieresis":-20,"Omacron\0Agrave":-20,"Omacron\0Amacron":-20,"Omacron\0Aogonek":-20,"Omacron\0Aring":-20,"Omacron\0Atilde":-20,"Omacron\0T":-40,"Omacron\0Tcaron":-40,"Omacron\0Tcommaaccent":-40,"Omacron\0V":-50,"Omacron\0W":-30,"Omacron\0X":-60,"Omacron\0Y":-70,"Omacron\0Yacute":-70,"Omacron\0Ydieresis":-70,"Omacron\0comma":-40,"Omacron\0period":-40,"Oslash\0A":-20,"Oslash\0Aacute":-20,"Oslash\0Abreve":-20,"Oslash\0Acircumflex":-20,"Oslash\0Adieresis":-20,"Oslash\0Agrave":-20,"Oslash\0Amacron":-20,"Oslash\0Aogonek":-20,"Oslash\0Aring":-20,"Oslash\0Atilde":-20,"Oslash\0T":-40,"Oslash\0Tcaron":-40,"Oslash\0Tcommaaccent":-40,"Oslash\0V":-50,"Oslash\0W":-30,"Oslash\0X":-60,"Oslash\0Y":-70,"Oslash\0Yacute":-70,"Oslash\0Ydieresis":-70,"Oslash\0comma":-40,"Oslash\0period":-40,"Otilde\0A":-20,"Otilde\0Aacute":-20,"Otilde\0Abreve":-20,"Otilde\0Acircumflex":-20,"Otilde\0Adieresis":-20,"Otilde\0Agrave":-20,"Otilde\0Amacron":-20,"Otilde\0Aogonek":-20,"Otilde\0Aring":-20,"Otilde\0Atilde":-20,"Otilde\0T":-40,"Otilde\0Tcaron":-40,"Otilde\0Tcommaaccent":-40,"Otilde\0V":-50,"Otilde\0W":-30,"Otilde\0X":-60,"Otilde\0Y":-70,"Otilde\0Yacute":-70,"Otilde\0Ydieresis":-70,"Otilde\0comma":-40,"Otilde\0period":-40,"P\0A":-120,"P\0Aacute":-120,"P\0Abreve":-120,"P\0Acircumflex":-120,"P\0Adieresis":-120,"P\0Agrave":-120,"P\0Amacron":-120,"P\0Aogonek":-120,"P\0Aring":-120,"P\0Atilde":-120,"P\0a":-40,"P\0aacute":-40,"P\0abreve":-40,"P\0acircumflex":-40,"P\0adieresis":-40,"P\0agrave":-40,"P\0amacron":-40,"P\0aogonek":-40,"P\0aring":-40,"P\0atilde":-40,"P\0comma":-180,"P\0e":-50,"P\0eacute":-50,"P\0ecaron":-50,"P\0ecircumflex":-50,"P\0edieresis":-50,"P\0edotaccent":-50,"P\0egrave":-50,"P\0emacron":-50,"P\0eogonek":-50,"P\0o":-50,"P\0oacute":-50,"P\0ocircumflex":-50,"P\0odieresis":-50,"P\0ograve":-50,"P\0ohungarumlaut":-50,"P\0omacron":-50,"P\0oslash":-50,"P\0otilde":-50,"P\0period":-180,"Q\0U":-10,"Q\0Uacute":-10,"Q\0Ucircumflex":-10,"Q\0Udieresis":-10,"Q\0Ugrave":-10,"Q\0Uhungarumlaut":-10,"Q\0Umacron":-10,"Q\0Uogonek":-10,"Q\0Uring":-10,"R\0O":-20,"R\0Oacute":-20,"R\0Ocircumflex":-20,"R\0Odieresis":-20,"R\0Ograve":-20,"R\0Ohungarumlaut":-20,"R\0Omacron":-20,"R\0Oslash":-20,"R\0Otilde":-20,"R\0T":-30,"R\0Tcaron":-30,"R\0Tcommaaccent":-30,"R\0U":-40,"R\0Uacute":-40,"R\0Ucircumflex":-40,"R\0Udieresis":-40,"R\0Ugrave":-40,"R\0Uhungarumlaut":-40,"R\0Umacron":-40,"R\0Uogonek":-40,"R\0Uring":-40,"R\0V":-50,"R\0W":-30,"R\0Y":-50,"R\0Yacute":-50,"R\0Ydieresis":-50,"Racute\0O":-20,"Racute\0Oacute":-20,"Racute\0Ocircumflex":-20,"Racute\0Odieresis":-20,"Racute\0Ograve":-20,"Racute\0Ohungarumlaut":-20,"Racute\0Omacron":-20,"Racute\0Oslash":-20,"Racute\0Otilde":-20,"Racute\0T":-30,"Racute\0Tcaron":-30,"Racute\0Tcommaaccent":-30,"Racute\0U":-40,"Racute\0Uacute":-40,"Racute\0Ucircumflex":-40,"Racute\0Udieresis":-40,"Racute\0Ugrave":-40,"Racute\0Uhungarumlaut":-40,"Racute\0Umacron":-40,"Racute\0Uogonek":-40,"Racute\0Uring":-40,"Racute\0V":-50,"Racute\0W":-30,"Racute\0Y":-50,"Racute\0Yacute":-50,"Racute\0Ydieresis":-50,"Rcaron\0O":-20,"Rcaron\0Oacute":-20,"Rcaron\0Ocircumflex":-20,"Rcaron\0Odieresis":-20,"Rcaron\0Ograve":-20,"Rcaron\0Ohungarumlaut":-20,"Rcaron\0Omacron":-20,"Rcaron\0Oslash":-20,"Rcaron\0Otilde":-20,"Rcaron\0T":-30,"Rcaron\0Tcaron":-30,"Rcaron\0Tcommaaccent":-30,"Rcaron\0U":-40,"Rcaron\0Uacute":-40,"Rcaron\0Ucircumflex":-40,"Rcaron\0Udieresis":-40,"Rcaron\0Ugrave":-40,"Rcaron\0Uhungarumlaut":-40,"Rcaron\0Umacron":-40,"Rcaron\0Uogonek":-40,"Rcaron\0Uring":-40,"Rcaron\0V":-50,"Rcaron\0W":-30,"Rcaron\0Y":-50,"Rcaron\0Yacute":-50,"Rcaron\0Ydieresis":-50,"Rcommaaccent\0O":-20,"Rcommaaccent\0Oacute":-20,"Rcommaaccent\0Ocircumflex":-20,"Rcommaaccent\0Odieresis":-20,"Rcommaaccent\0Ograve":-20,"Rcommaaccent\0Ohungarumlaut":-20,"Rcommaaccent\0Omacron":-20,"Rcommaaccent\0Oslash":-20,"Rcommaaccent\0Otilde":-20,"Rcommaaccent\0T":-30,"Rcommaaccent\0Tcaron":-30,"Rcommaaccent\0Tcommaaccent":-30,"Rcommaaccent\0U":-40,"Rcommaaccent\0Uacute":-40,"Rcommaaccent\0Ucircumflex":-40,"Rcommaaccent\0Udieresis":-40,"Rcommaaccent\0Ugrave":-40,"Rcommaaccent\0Uhungarumlaut":-40,"Rcommaaccent\0Umacron":-40,"Rcommaaccent\0Uogonek":-40,"Rcommaaccent\0Uring":-40,"Rcommaaccent\0V":-50,"Rcommaaccent\0W":-30,"Rcommaaccent\0Y":-50,"Rcommaaccent\0Yacute":-50,"Rcommaaccent\0Ydieresis":-50,"S\0comma":-20,"S\0period":-20,"Sacute\0comma":-20,"Sacute\0period":-20,"Scaron\0comma":-20,"Scaron\0period":-20,"Scedilla\0comma":-20,"Scedilla\0period":-20,"Scommaaccent\0comma":-20,"Scommaaccent\0period":-20,"T\0A":-120,"T\0Aacute":-120,"T\0Abreve":-120,"T\0Acircumflex":-120,"T\0Adieresis":-120,"T\0Agrave":-120,"T\0Amacron":-120,"T\0Aogonek":-120,"T\0Aring":-120,"T\0Atilde":-120,"T\0O":-40,"T\0Oacute":-40,"T\0Ocircumflex":-40,"T\0Odieresis":-40,"T\0Ograve":-40,"T\0Ohungarumlaut":-40,"T\0Omacron":-40,"T\0Oslash":-40,"T\0Otilde":-40,"T\0a":-120,"T\0aacute":-120,"T\0abreve":-60,"T\0acircumflex":-120,"T\0adieresis":-120,"T\0agrave":-120,"T\0amacron":-60,"T\0aogonek":-120,"T\0aring":-120,"T\0atilde":-60,"T\0colon":-20,"T\0comma":-120,"T\0e":-120,"T\0eacute":-120,"T\0ecaron":-120,"T\0ecircumflex":-120,"T\0edieresis":-120,"T\0edotaccent":-120,"T\0egrave":-60,"T\0emacron":-60,"T\0eogonek":-120,"T\0hyphen":-140,"T\0o":-120,"T\0oacute":-120,"T\0ocircumflex":-120,"T\0odieresis":-120,"T\0ograve":-120,"T\0ohungarumlaut":-120,"T\0omacron":-60,"T\0oslash":-120,"T\0otilde":-60,"T\0period":-120,"T\0r":-120,"T\0racute":-120,"T\0rcaron":-120,"T\0rcommaaccent":-120,"T\0semicolon":-20,"T\0u":-120,"T\0uacute":-120,"T\0ucircumflex":-120,"T\0udieresis":-120,"T\0ugrave":-120,"T\0uhungarumlaut":-120,"T\0umacron":-60,"T\0uogonek":-120,"T\0uring":-120,"T\0w":-120,"T\0y":-120,"T\0yacute":-120,"T\0ydieresis":-60,"Tcaron\0A":-120,"Tcaron\0Aacute":-120,"Tcaron\0Abreve":-120,"Tcaron\0Acircumflex":-120,"Tcaron\0Adieresis":-120,"Tcaron\0Agrave":-120,"Tcaron\0Amacron":-120,"Tcaron\0Aogonek":-120,"Tcaron\0Aring":-120,"Tcaron\0Atilde":-120,"Tcaron\0O":-40,"Tcaron\0Oacute":-40,"Tcaron\0Ocircumflex":-40,"Tcaron\0Odieresis":-40,"Tcaron\0Ograve":-40,"Tcaron\0Ohungarumlaut":-40,"Tcaron\0Omacron":-40,"Tcaron\0Oslash":-40,"Tcaron\0Otilde":-40,"Tcaron\0a":-120,"Tcaron\0aacute":-120,"Tcaron\0abreve":-60,"Tcaron\0acircumflex":-120,"Tcaron\0adieresis":-120,"Tcaron\0agrave":-120,"Tcaron\0amacron":-60,"Tcaron\0aogonek":-120,"Tcaron\0aring":-120,"Tcaron\0atilde":-60,"Tcaron\0colon":-20,"Tcaron\0comma":-120,"Tcaron\0e":-120,"Tcaron\0eacute":-120,"Tcaron\0ecaron":-120,"Tcaron\0ecircumflex":-120,"Tcaron\0edieresis":-120,"Tcaron\0edotaccent":-120,"Tcaron\0egrave":-60,"Tcaron\0emacron":-60,"Tcaron\0eogonek":-120,"Tcaron\0hyphen":-140,"Tcaron\0o":-120,"Tcaron\0oacute":-120,"Tcaron\0ocircumflex":-120,"Tcaron\0odieresis":-120,"Tcaron\0ograve":-120,"Tcaron\0ohungarumlaut":-120,"Tcaron\0omacron":-60,"Tcaron\0oslash":-120,"Tcaron\0otilde":-60,"Tcaron\0period":-120,"Tcaron\0r":-120,"Tcaron\0racute":-120,"Tcaron\0rcaron":-120,"Tcaron\0rcommaaccent":-120,"Tcaron\0semicolon":-20,"Tcaron\0u":-120,"Tcaron\0uacute":-120,"Tcaron\0ucircumflex":-120,"Tcaron\0udieresis":-120,"Tcaron\0ugrave":-120,"Tcaron\0uhungarumlaut":-120,"Tcaron\0umacron":-60,"Tcaron\0uogonek":-120,"Tcaron\0uring":-120,"Tcaron\0w":-120,"Tcaron\0y":-120,"Tcaron\0yacute":-120,"Tcaron\0ydieresis":-60,"Tcommaaccent\0A":-120,"Tcommaaccent\0Aacute":-120,"Tcommaaccent\0Abreve":-120,"Tcommaaccent\0Acircumflex":-120,"Tcommaaccent\0Adieresis":-120,"Tcommaaccent\0Agrave":-120,"Tcommaaccent\0Amacron":-120,"Tcommaaccent\0Aogonek":-120,"Tcommaaccent\0Aring":-120,"Tcommaaccent\0Atilde":-120,"Tcommaaccent\0O":-40,"Tcommaaccent\0Oacute":-40,"Tcommaaccent\0Ocircumflex":-40,"Tcommaaccent\0Odieresis":-40,"Tcommaaccent\0Ograve":-40,"Tcommaaccent\0Ohungarumlaut":-40,"Tcommaaccent\0Omacron":-40,"Tcommaaccent\0Oslash":-40,"Tcommaaccent\0Otilde":-40,"Tcommaaccent\0a":-120,"Tcommaaccent\0aacute":-120,"Tcommaaccent\0abreve":-60,"Tcommaaccent\0acircumflex":-120,"Tcommaaccent\0adieresis":-120,"Tcommaaccent\0agrave":-120,"Tcommaaccent\0amacron":-60,"Tcommaaccent\0aogonek":-120,"Tcommaaccent\0aring":-120,"Tcommaaccent\0atilde":-60,"Tcommaaccent\0colon":-20,"Tcommaaccent\0comma":-120,"Tcommaaccent\0e":-120,"Tcommaaccent\0eacute":-120,"Tcommaaccent\0ecaron":-120,"Tcommaaccent\0ecircumflex":-120,"Tcommaaccent\0edieresis":-120,"Tcommaaccent\0edotaccent":-120,"Tcommaaccent\0egrave":-60,"Tcommaaccent\0emacron":-60,"Tcommaaccent\0eogonek":-120,"Tcommaaccent\0hyphen":-140,"Tcommaaccent\0o":-120,"Tcommaaccent\0oacute":-120,"Tcommaaccent\0ocircumflex":-120,"Tcommaaccent\0odieresis":-120,"Tcommaaccent\0ograve":-120,"Tcommaaccent\0ohungarumlaut":-120,"Tcommaaccent\0omacron":-60,"Tcommaaccent\0oslash":-120,"Tcommaaccent\0otilde":-60,"Tcommaaccent\0period":-120,"Tcommaaccent\0r":-120,"Tcommaaccent\0racute":-120,"Tcommaaccent\0rcaron":-120,"Tcommaaccent\0rcommaaccent":-120,"Tcommaaccent\0semicolon":-20,"Tcommaaccent\0u":-120,"Tcommaaccent\0uacute":-120,"Tcommaaccent\0ucircumflex":-120,"Tcommaaccent\0udieresis":-120,"Tcommaaccent\0ugrave":-120,"Tcommaaccent\0uhungarumlaut":-120,"Tcommaaccent\0umacron":-60,"Tcommaaccent\0uogonek":-120,"Tcommaaccent\0uring":-120,"Tcommaaccent\0w":-120,"Tcommaaccent\0y":-120,"Tcommaaccent\0yacute":-120,"Tcommaaccent\0ydieresis":-60,"U\0A":-40,"U\0Aacute":-40,"U\0Abreve":-40,"U\0Acircumflex":-40,"U\0Adieresis":-40,"U\0Agrave":-40,"U\0Amacron":-40,"U\0Aogonek":-40,"U\0Aring":-40,"U\0Atilde":-40,"U\0comma":-40,"U\0period":-40,"Uacute\0A":-40,"Uacute\0Aacute":-40,"Uacute\0Abreve":-40,"Uacute\0Acircumflex":-40,"Uacute\0Adieresis":-40,"Uacute\0Agrave":-40,"Uacute\0Amacron":-40,"Uacute\0Aogonek":-40,"Uacute\0Aring":-40,"Uacute\0Atilde":-40,"Uacute\0comma":-40,"Uacute\0period":-40,"Ucircumflex\0A":-40,"Ucircumflex\0Aacute":-40,"Ucircumflex\0Abreve":-40,"Ucircumflex\0Acircumflex":-40,"Ucircumflex\0Adieresis":-40,"Ucircumflex\0Agrave":-40,"Ucircumflex\0Amacron":-40,"Ucircumflex\0Aogonek":-40,"Ucircumflex\0Aring":-40,"Ucircumflex\0Atilde":-40,"Ucircumflex\0comma":-40,"Ucircumflex\0period":-40,"Udieresis\0A":-40,"Udieresis\0Aacute":-40,"Udieresis\0Abreve":-40,"Udieresis\0Acircumflex":-40,"Udieresis\0Adieresis":-40,"Udieresis\0Agrave":-40,"Udieresis\0Amacron":-40,"Udieresis\0Aogonek":-40,"Udieresis\0Aring":-40,"Udieresis\0Atilde":-40,"Udieresis\0comma":-40,"Udieresis\0period":-40,"Ugrave\0A":-40,"Ugrave\0Aacute":-40,"Ugrave\0Abreve":-40,"Ugrave\0Acircumflex":-40,"Ugrave\0Adieresis":-40,"Ugrave\0Agrave":-40,"Ugrave\0Amacron":-40,"Ugrave\0Aogonek":-40,"Ugrave\0Aring":-40,"Ugrave\0Atilde":-40,"Ugrave\0comma":-40,"Ugrave\0period":-40,"Uhungarumlaut\0A":-40,"Uhungarumlaut\0Aacute":-40,"Uhungarumlaut\0Abreve":-40,"Uhungarumlaut\0Acircumflex":-40,"Uhungarumlaut\0Adieresis":-40,"Uhungarumlaut\0Agrave":-40,"Uhungarumlaut\0Amacron":-40,"Uhungarumlaut\0Aogonek":-40,"Uhungarumlaut\0Aring":-40,"Uhungarumlaut\0Atilde":-40,"Uhungarumlaut\0comma":-40,"Uhungarumlaut\0period":-40,"Umacron\0A":-40,"Umacron\0Aacute":-40,"Umacron\0Abreve":-40,"Umacron\0Acircumflex":-40,"Umacron\0Adieresis":-40,"Umacron\0Agrave":-40,"Umacron\0Amacron":-40,"Umacron\0Aogonek":-40,"Umacron\0Aring":-40,"Umacron\0Atilde":-40,"Umacron\0comma":-40,"Umacron\0period":-40,"Uogonek\0A":-40,"Uogonek\0Aacute":-40,"Uogonek\0Abreve":-40,"Uogonek\0Acircumflex":-40,"Uogonek\0Adieresis":-40,"Uogonek\0Agrave":-40,"Uogonek\0Amacron":-40,"Uogonek\0Aogonek":-40,"Uogonek\0Aring":-40,"Uogonek\0Atilde":-40,"Uogonek\0comma":-40,"Uogonek\0period":-40,"Uring\0A":-40,"Uring\0Aacute":-40,"Uring\0Abreve":-40,"Uring\0Acircumflex":-40,"Uring\0Adieresis":-40,"Uring\0Agrave":-40,"Uring\0Amacron":-40,"Uring\0Aogonek":-40,"Uring\0Aring":-40,"Uring\0Atilde":-40,"Uring\0comma":-40,"Uring\0period":-40,"V\0A":-80,"V\0Aacute":-80,"V\0Abreve":-80,"V\0Acircumflex":-80,"V\0Adieresis":-80,"V\0Agrave":-80,"V\0Amacron":-80,"V\0Aogonek":-80,"V\0Aring":-80,"V\0Atilde":-80,"V\0G":-40,"V\0Gbreve":-40,"V\0Gcommaaccent":-40,"V\0O":-40,"V\0Oacute":-40,"V\0Ocircumflex":-40,"V\0Odieresis":-40,"V\0Ograve":-40,"V\0Ohungarumlaut":-40,"V\0Omacron":-40,"V\0Oslash":-40,"V\0Otilde":-40,"V\0a":-70,"V\0aacute":-70,"V\0abreve":-70,"V\0acircumflex":-70,"V\0adieresis":-70,"V\0agrave":-70,"V\0amacron":-70,"V\0aogonek":-70,"V\0aring":-70,"V\0atilde":-70,"V\0colon":-40,"V\0comma":-125,"V\0e":-80,"V\0eacute":-80,"V\0ecaron":-80,"V\0ecircumflex":-80,"V\0edieresis":-80,"V\0edotaccent":-80,"V\0egrave":-80,"V\0emacron":-80,"V\0eogonek":-80,"V\0hyphen":-80,"V\0o":-80,"V\0oacute":-80,"V\0ocircumflex":-80,"V\0odieresis":-80,"V\0ograve":-80,"V\0ohungarumlaut":-80,"V\0omacron":-80,"V\0oslash":-80,"V\0otilde":-80,"V\0period":-125,"V\0semicolon":-40,"V\0u":-70,"V\0uacute":-70,"V\0ucircumflex":-70,"V\0udieresis":-70,"V\0ugrave":-70,"V\0uhungarumlaut":-70,"V\0umacron":-70,"V\0uogonek":-70,"V\0uring":-70,"W\0A":-50,"W\0Aacute":-50,"W\0Abreve":-50,"W\0Acircumflex":-50,"W\0Adieresis":-50,"W\0Agrave":-50,"W\0Amacron":-50,"W\0Aogonek":-50,"W\0Aring":-50,"W\0Atilde":-50,"W\0O":-20,"W\0Oacute":-20,"W\0Ocircumflex":-20,"W\0Odieresis":-20,"W\0Ograve":-20,"W\0Ohungarumlaut":-20,"W\0Omacron":-20,"W\0Oslash":-20,"W\0Otilde":-20,"W\0a":-40,"W\0aacute":-40,"W\0abreve":-40,"W\0acircumflex":-40,"W\0adieresis":-40,"W\0agrave":-40,"W\0amacron":-40,"W\0aogonek":-40,"W\0aring":-40,"W\0atilde":-40,"W\0comma":-80,"W\0e":-30,"W\0eacute":-30,"W\0ecaron":-30,"W\0ecircumflex":-30,"W\0edieresis":-30,"W\0edotaccent":-30,"W\0egrave":-30,"W\0emacron":-30,"W\0eogonek":-30,"W\0hyphen":-40,"W\0o":-30,"W\0oacute":-30,"W\0ocircumflex":-30,"W\0odieresis":-30,"W\0ograve":-30,"W\0ohungarumlaut":-30,"W\0omacron":-30,"W\0oslash":-30,"W\0otilde":-30,"W\0period":-80,"W\0u":-30,"W\0uacute":-30,"W\0ucircumflex":-30,"W\0udieresis":-30,"W\0ugrave":-30,"W\0uhungarumlaut":-30,"W\0umacron":-30,"W\0uogonek":-30,"W\0uring":-30,"W\0y":-20,"W\0yacute":-20,"W\0ydieresis":-20,"Y\0A":-110,"Y\0Aacute":-110,"Y\0Abreve":-110,"Y\0Acircumflex":-110,"Y\0Adieresis":-110,"Y\0Agrave":-110,"Y\0Amacron":-110,"Y\0Aogonek":-110,"Y\0Aring":-110,"Y\0Atilde":-110,"Y\0O":-85,"Y\0Oacute":-85,"Y\0Ocircumflex":-85,"Y\0Odieresis":-85,"Y\0Ograve":-85,"Y\0Ohungarumlaut":-85,"Y\0Omacron":-85,"Y\0Oslash":-85,"Y\0Otilde":-85,"Y\0a":-140,"Y\0aacute":-140,"Y\0abreve":-70,"Y\0acircumflex":-140,"Y\0adieresis":-140,"Y\0agrave":-140,"Y\0amacron":-70,"Y\0aogonek":-140,"Y\0aring":-140,"Y\0atilde":-140,"Y\0colon":-60,"Y\0comma":-140,"Y\0e":-140,"Y\0eacute":-140,"Y\0ecaron":-140,"Y\0ecircumflex":-140,"Y\0edieresis":-140,"Y\0edotaccent":-140,"Y\0egrave":-140,"Y\0emacron":-70,"Y\0eogonek":-140,"Y\0hyphen":-140,"Y\0i":-20,"Y\0iacute":-20,"Y\0iogonek":-20,"Y\0o":-140,"Y\0oacute":-140,"Y\0ocircumflex":-140,"Y\0odieresis":-140,"Y\0ograve":-140,"Y\0ohungarumlaut":-140,"Y\0omacron":-140,"Y\0oslash":-140,"Y\0otilde":-140,"Y\0period":-140,"Y\0semicolon":-60,"Y\0u":-110,"Y\0uacute":-110,"Y\0ucircumflex":-110,"Y\0udieresis":-110,"Y\0ugrave":-110,"Y\0uhungarumlaut":-110,"Y\0umacron":-110,"Y\0uogonek":-110,"Y\0uring":-110,"Yacute\0A":-110,"Yacute\0Aacute":-110,"Yacute\0Abreve":-110,"Yacute\0Acircumflex":-110,"Yacute\0Adieresis":-110,"Yacute\0Agrave":-110,"Yacute\0Amacron":-110,"Yacute\0Aogonek":-110,"Yacute\0Aring":-110,"Yacute\0Atilde":-110,"Yacute\0O":-85,"Yacute\0Oacute":-85,"Yacute\0Ocircumflex":-85,"Yacute\0Odieresis":-85,"Yacute\0Ograve":-85,"Yacute\0Ohungarumlaut":-85,"Yacute\0Omacron":-85,"Yacute\0Oslash":-85,"Yacute\0Otilde":-85,"Yacute\0a":-140,"Yacute\0aacute":-140,"Yacute\0abreve":-70,"Yacute\0acircumflex":-140,"Yacute\0adieresis":-140,"Yacute\0agrave":-140,"Yacute\0amacron":-70,"Yacute\0aogonek":-140,"Yacute\0aring":-140,"Yacute\0atilde":-70,"Yacute\0colon":-60,"Yacute\0comma":-140,"Yacute\0e":-140,"Yacute\0eacute":-140,"Yacute\0ecaron":-140,"Yacute\0ecircumflex":-140,"Yacute\0edieresis":-140,"Yacute\0edotaccent":-140,"Yacute\0egrave":-140,"Yacute\0emacron":-70,"Yacute\0eogonek":-140,"Yacute\0hyphen":-140,"Yacute\0i":-20,"Yacute\0iacute":-20,"Yacute\0iogonek":-20,"Yacute\0o":-140,"Yacute\0oacute":-140,"Yacute\0ocircumflex":-140,"Yacute\0odieresis":-140,"Yacute\0ograve":-140,"Yacute\0ohungarumlaut":-140,"Yacute\0omacron":-70,"Yacute\0oslash":-140,"Yacute\0otilde":-140,"Yacute\0period":-140,"Yacute\0semicolon":-60,"Yacute\0u":-110,"Yacute\0uacute":-110,"Yacute\0ucircumflex":-110,"Yacute\0udieresis":-110,"Yacute\0ugrave":-110,"Yacute\0uhungarumlaut":-110,"Yacute\0umacron":-110,"Yacute\0uogonek":-110,"Yacute\0uring":-110,"Ydieresis\0A":-110,"Ydieresis\0Aacute":-110,"Ydieresis\0Abreve":-110,"Ydieresis\0Acircumflex":-110,"Ydieresis\0Adieresis":-110,"Ydieresis\0Agrave":-110,"Ydieresis\0Amacron":-110,"Ydieresis\0Aogonek":-110,"Ydieresis\0Aring":-110,"Ydieresis\0Atilde":-110,"Ydieresis\0O":-85,"Ydieresis\0Oacute":-85,"Ydieresis\0Ocircumflex":-85,"Ydieresis\0Odieresis":-85,"Ydieresis\0Ograve":-85,"Ydieresis\0Ohungarumlaut":-85,"Ydieresis\0Omacron":-85,"Ydieresis\0Oslash":-85,"Ydieresis\0Otilde":-85,"Ydieresis\0a":-140,"Ydieresis\0aacute":-140,"Ydieresis\0abreve":-70,"Ydieresis\0acircumflex":-140,"Ydieresis\0adieresis":-140,"Ydieresis\0agrave":-140,"Ydieresis\0amacron":-70,"Ydieresis\0aogonek":-140,"Ydieresis\0aring":-140,"Ydieresis\0atilde":-70,"Ydieresis\0colon":-60,"Ydieresis\0comma":-140,"Ydieresis\0e":-140,"Ydieresis\0eacute":-140,"Ydieresis\0ecaron":-140,"Ydieresis\0ecircumflex":-140,"Ydieresis\0edieresis":-140,"Ydieresis\0edotaccent":-140,"Ydieresis\0egrave":-140,"Ydieresis\0emacron":-70,"Ydieresis\0eogonek":-140,"Ydieresis\0hyphen":-140,"Ydieresis\0i":-20,"Ydieresis\0iacute":-20,"Ydieresis\0iogonek":-20,"Ydieresis\0o":-140,"Ydieresis\0oacute":-140,"Ydieresis\0ocircumflex":-140,"Ydieresis\0odieresis":-140,"Ydieresis\0ograve":-140,"Ydieresis\0ohungarumlaut":-140,"Ydieresis\0omacron":-140,"Ydieresis\0oslash":-140,"Ydieresis\0otilde":-140,"Ydieresis\0period":-140,"Ydieresis\0semicolon":-60,"Ydieresis\0u":-110,"Ydieresis\0uacute":-110,"Ydieresis\0ucircumflex":-110,"Ydieresis\0udieresis":-110,"Ydieresis\0ugrave":-110,"Ydieresis\0uhungarumlaut":-110,"Ydieresis\0umacron":-110,"Ydieresis\0uogonek":-110,"Ydieresis\0uring":-110,"a\0v":-20,"a\0w":-20,"a\0y":-30,"a\0yacute":-30,"a\0ydieresis":-30,"aacute\0v":-20,"aacute\0w":-20,"aacute\0y":-30,"aacute\0yacute":-30,"aacute\0ydieresis":-30,"abreve\0v":-20,"abreve\0w":-20,"abreve\0y":-30,"abreve\0yacute":-30,"abreve\0ydieresis":-30,"acircumflex\0v":-20,"acircumflex\0w":-20,"acircumflex\0y":-30,"acircumflex\0yacute":-30,"acircumflex\0ydieresis":-30,"adieresis\0v":-20,"adieresis\0w":-20,"adieresis\0y":-30,"adieresis\0yacute":-30,"adieresis\0ydieresis":-30,"agrave\0v":-20,"agrave\0w":-20,"agrave\0y":-30,"agrave\0yacute":-30,"agrave\0ydieresis":-30,"amacron\0v":-20,"amacron\0w":-20,"amacron\0y":-30,"amacron\0yacute":-30,"amacron\0ydieresis":-30,"aogonek\0v":-20,"aogonek\0w":-20,"aogonek\0y":-30,"aogonek\0yacute":-30,"aogonek\0ydieresis":-30,"aring\0v":-20,"aring\0w":-20,"aring\0y":-30,"aring\0yacute":-30,"aring\0ydieresis":-30,"atilde\0v":-20,"atilde\0w":-20,"atilde\0y":-30,"atilde\0yacute":-30,"atilde\0ydieresis":-30,"b\0b":-10,"b\0comma":-40,"b\0l":-20,"b\0lacute":-20,"b\0lcommaaccent":-20,"b\0lslash":-20,"b\0period":-40,"b\0u":-20,"b\0uacute":-20,"b\0ucircumflex":-20,"b\0udieresis":-20,"b\0ugrave":-20,"b\0uhungarumlaut":-20,"b\0umacron":-20,"b\0uogonek":-20,"b\0uring":-20,"b\0v":-20,"b\0y":-20,"b\0yacute":-20,"b\0ydieresis":-20,"c\0comma":-15,"c\0k":-20,"c\0kcommaaccent":-20,"cacute\0comma":-15,"cacute\0k":-20,"cacute\0kcommaaccent":-20,"ccaron\0comma":-15,"ccaron\0k":-20,"ccaron\0kcommaaccent":-20,"ccedilla\0comma":-15,"ccedilla\0k":-20,"ccedilla\0kcommaaccent":-20,"colon\0space":-50,"comma\0quotedblright":-100,"comma\0quoteright":-100,"e\0comma":-15,"e\0period":-15,"e\0v":-30,"e\0w":-20,"e\0x":-30,"e\0y":-20,"e\0yacute":-20,"e\0ydieresis":-20,"eacute\0comma":-15,"eacute\0period":-15,"eacute\0v":-30,"eacute\0w":-20,"eacute\0x":-30,"eacute\0y":-20,"eacute\0yacute":-20,"eacute\0ydieresis":-20,"ecaron\0comma":-15,"ecaron\0period":-15,"ecaron\0v":-30,"ecaron\0w":-20,"ecaron\0x":-30,"ecaron\0y":-20,"ecaron\0yacute":-20,"ecaron\0ydieresis":-20,"ecircumflex\0comma":-15,"ecircumflex\0period":-15,"ecircumflex\0v":-30,"ecircumflex\0w":-20,"ecircumflex\0x":-30,"ecircumflex\0y":-20,"ecircumflex\0yacute":-20,"ecircumflex\0ydieresis":-20,"edieresis\0comma":-15,"edieresis\0period":-15,"edieresis\0v":-30,"edieresis\0w":-20,"edieresis\0x":-30,"edieresis\0y":-20,"edieresis\0yacute":-20,"edieresis\0ydieresis":-20,"edotaccent\0comma":-15,"edotaccent\0period":-15,"edotaccent\0v":-30,"edotaccent\0w":-20,"edotaccent\0x":-30,"edotaccent\0y":-20,"edotaccent\0yacute":-20,"edotaccent\0ydieresis":-20,"egrave\0comma":-15,"egrave\0period":-15,"egrave\0v":-30,"egrave\0w":-20,"egrave\0x":-30,"egrave\0y":-20,"egrave\0yacute":-20,"egrave\0ydieresis":-20,"emacron\0comma":-15,"emacron\0period":-15,"emacron\0v":-30,"emacron\0w":-20,"emacron\0x":-30,"emacron\0y":-20,"emacron\0yacute":-20,"emacron\0ydieresis":-20,"eogonek\0comma":-15,"eogonek\0period":-15,"eogonek\0v":-30,"eogonek\0w":-20,"eogonek\0x":-30,"eogonek\0y":-20,"eogonek\0yacute":-20,"eogonek\0ydieresis":-20,"f\0a":-30,"f\0aacute":-30,"f\0abreve":-30,"f\0acircumflex":-30,"f\0adieresis":-30,"f\0agrave":-30,"f\0amacron":-30,"f\0aogonek":-30,"f\0aring":-30,"f\0atilde":-30,"f\0comma":-30,"f\0dotlessi":-28,"f\0e":-30,"f\0eacute":-30,"f\0ecaron":-30,"f\0ecircumflex":-30,"f\0edieresis":-30,"f\0edotaccent":-30,"f\0egrave":-30,"f\0emacron":-30,"f\0eogonek":-30,"f\0o":-30,"f\0oacute":-30,"f\0ocircumflex":-30,"f\0odieresis":-30,"f\0ograve":-30,"f\0ohungarumlaut":-30,"f\0omacron":-30,"f\0oslash":-30,"f\0otilde":-30,"f\0period":-30,"f\0quotedblright":60,"f\0quoteright":50,"g\0r":-10,"g\0racute":-10,"g\0rcaron":-10,"g\0rcommaaccent":-10,"gbreve\0r":-10,"gbreve\0racute":-10,"gbreve\0rcaron":-10,"gbreve\0rcommaaccent":-10,"gcommaaccent\0r":-10,"gcommaaccent\0racute":-10,"gcommaaccent\0rcaron":-10,"gcommaaccent\0rcommaaccent":-10,"h\0y":-30,"h\0yacute":-30,"h\0ydieresis":-30,"k\0e":-20,"k\0eacute":-20,"k\0ecaron":-20,"k\0ecircumflex":-20,"k\0edieresis":-20,"k\0edotaccent":-20,"k\0egrave":-20,"k\0emacron":-20,"k\0eogonek":-20,"k\0o":-20,"k\0oacute":-20,"k\0ocircumflex":-20,"k\0odieresis":-20,"k\0ograve":-20,"k\0ohungarumlaut":-20,"k\0omacron":-20,"k\0oslash":-20,"k\0otilde":-20,"kcommaaccent\0e":-20,"kcommaaccent\0eacute":-20,"kcommaaccent\0ecaron":-20,"kcommaaccent\0ecircumflex":-20,"kcommaaccent\0edieresis":-20,"kcommaaccent\0edotaccent":-20,"kcommaaccent\0egrave":-20,"kcommaaccent\0emacron":-20,"kcommaaccent\0eogonek":-20,"kcommaaccent\0o":-20,"kcommaaccent\0oacute":-20,"kcommaaccent\0ocircumflex":-20,"kcommaaccent\0odieresis":-20,"kcommaaccent\0ograve":-20,"kcommaaccent\0ohungarumlaut":-20,"kcommaaccent\0omacron":-20,"kcommaaccent\0oslash":-20,"kcommaaccent\0otilde":-20,"m\0u":-10,"m\0uacute":-10,"m\0ucircumflex":-10,"m\0udieresis":-10,"m\0ugrave":-10,"m\0uhungarumlaut":-10,"m\0umacron":-10,"m\0uogonek":-10,"m\0uring":-10,"m\0y":-15,"m\0yacute":-15,"m\0ydieresis":-15,"n\0u":-10,"n\0uacute":-10,"n\0ucircumflex":-10,"n\0udieresis":-10,"n\0ugrave":-10,"n\0uhungarumlaut":-10,"n\0umacron":-10,"n\0uogonek":-10,"n\0uring":-10,"n\0v":-20,"n\0y":-15,"n\0yacute":-15,"n\0ydieresis":-15,"nacute\0u":-10,"nacute\0uacute":-10,"nacute\0ucircumflex":-10,"nacute\0udieresis":-10,"nacute\0ugrave":-10,"nacute\0uhungarumlaut":-10,"nacute\0umacron":-10,"nacute\0uogonek":-10,"nacute\0uring":-10,"nacute\0v":-20,"nacute\0y":-15,"nacute\0yacute":-15,"nacute\0ydieresis":-15,"ncaron\0u":-10,"ncaron\0uacute":-10,"ncaron\0ucircumflex":-10,"ncaron\0udieresis":-10,"ncaron\0ugrave":-10,"ncaron\0uhungarumlaut":-10,"ncaron\0umacron":-10,"ncaron\0uogonek":-10,"ncaron\0uring":-10,"ncaron\0v":-20,"ncaron\0y":-15,"ncaron\0yacute":-15,"ncaron\0ydieresis":-15,"ncommaaccent\0u":-10,"ncommaaccent\0uacute":-10,"ncommaaccent\0ucircumflex":-10,"ncommaaccent\0udieresis":-10,"ncommaaccent\0ugrave":-10,"ncommaaccent\0uhungarumlaut":-10,"ncommaaccent\0umacron":-10,"ncommaaccent\0uogonek":-10,"ncommaaccent\0uring":-10,"ncommaaccent\0v":-20,"ncommaaccent\0y":-15,"ncommaaccent\0yacute":-15,"ncommaaccent\0ydieresis":-15,"ntilde\0u":-10,"ntilde\0uacute":-10,"ntilde\0ucircumflex":-10,"ntilde\0udieresis":-10,"ntilde\0ugrave":-10,"ntilde\0uhungarumlaut":-10,"ntilde\0umacron":-10,"ntilde\0uogonek":-10,"ntilde\0uring":-10,"ntilde\0v":-20,"ntilde\0y":-15,"ntilde\0yacute":-15,"ntilde\0ydieresis":-15,"o\0comma":-40,"o\0period":-40,"o\0v":-15,"o\0w":-15,"o\0x":-30,"o\0y":-30,"o\0yacute":-30,"o\0ydieresis":-30,"oacute\0comma":-40,"oacute\0period":-40,"oacute\0v":-15,"oacute\0w":-15,"oacute\0x":-30,"oacute\0y":-30,"oacute\0yacute":-30,"oacute\0ydieresis":-30,"ocircumflex\0comma":-40,"ocircumflex\0period":-40,"ocircumflex\0v":-15,"ocircumflex\0w":-15,"ocircumflex\0x":-30,"ocircumflex\0y":-30,"ocircumflex\0yacute":-30,"ocircumflex\0ydieresis":-30,"odieresis\0comma":-40,"odieresis\0period":-40,"odieresis\0v":-15,"odieresis\0w":-15,"odieresis\0x":-30,"odieresis\0y":-30,"odieresis\0yacute":-30,"odieresis\0ydieresis":-30,"ograve\0comma":-40,"ograve\0period":-40,"ograve\0v":-15,"ograve\0w":-15,"ograve\0x":-30,"ograve\0y":-30,"ograve\0yacute":-30,"ograve\0ydieresis":-30,"ohungarumlaut\0comma":-40,"ohungarumlaut\0period":-40,"ohungarumlaut\0v":-15,"ohungarumlaut\0w":-15,"ohungarumlaut\0x":-30,"ohungarumlaut\0y":-30,"ohungarumlaut\0yacute":-30,"ohungarumlaut\0ydieresis":-30,"omacron\0comma":-40,"omacron\0period":-40,"omacron\0v":-15,"omacron\0w":-15,"omacron\0x":-30,"omacron\0y":-30,"omacron\0yacute":-30,"omacron\0ydieresis":-30,"oslash\0a":-55,"oslash\0aacute":-55,"oslash\0abreve":-55,"oslash\0acircumflex":-55,"oslash\0adieresis":-55,"oslash\0agrave":-55,"oslash\0amacron":-55,"oslash\0aogonek":-55,"oslash\0aring":-55,"oslash\0atilde":-55,"oslash\0b":-55,"oslash\0c":-55,"oslash\0cacute":-55,"oslash\0ccaron":-55,"oslash\0ccedilla":-55,"oslash\0comma":-95,"oslash\0d":-55,"oslash\0dcroat":-55,"oslash\0e":-55,"oslash\0eacute":-55,"oslash\0ecaron":-55,"oslash\0ecircumflex":-55,"oslash\0edieresis":-55,"oslash\0edotaccent":-55,"oslash\0egrave":-55,"oslash\0emacron":-55,"oslash\0eogonek":-55,"oslash\0f":-55,"oslash\0g":-55,"oslash\0gbreve":-55,"oslash\0gcommaaccent":-55,"oslash\0h":-55,"oslash\0i":-55,"oslash\0iacute":-55,"oslash\0icircumflex":-55,"oslash\0idieresis":-55,"oslash\0igrave":-55,"oslash\0imacron":-55,"oslash\0iogonek":-55,"oslash\0j":-55,"oslash\0k":-55,"oslash\0kcommaaccent":-55,"oslash\0l":-55,"oslash\0lacute":-55,"oslash\0lcommaaccent":-55,"oslash\0lslash":-55,"oslash\0m":-55,"oslash\0n":-55,"oslash\0nacute":-55,"oslash\0ncaron":-55,"oslash\0ncommaaccent":-55,"oslash\0ntilde":-55,"oslash\0o":-55,"oslash\0oacute":-55,"oslash\0ocircumflex":-55,"oslash\0odieresis":-55,"oslash\0ograve":-55,"oslash\0ohungarumlaut":-55,"oslash\0omacron":-55,"oslash\0oslash":-55,"oslash\0otilde":-55,"oslash\0p":-55,"oslash\0period":-95,"oslash\0q":-55,"oslash\0r":-55,"oslash\0racute":-55,"oslash\0rcaron":-55,"oslash\0rcommaaccent":-55,"oslash\0s":-55,"oslash\0sacute":-55,"oslash\0scaron":-55,"oslash\0scedilla":-55,"oslash\0scommaaccent":-55,"oslash\0t":-55,"oslash\0tcommaaccent":-55,"oslash\0u":-55,"oslash\0uacute":-55,"oslash\0ucircumflex":-55,"oslash\0udieresis":-55,"oslash\0ugrave":-55,"oslash\0uhungarumlaut":-55,"oslash\0umacron":-55,"oslash\0uogonek":-55,"oslash\0uring":-55,"oslash\0v":-70,"oslash\0w":-70,"oslash\0x":-85,"oslash\0y":-70,"oslash\0yacute":-70,"oslash\0ydieresis":-70,"oslash\0z":-55,"oslash\0zacute":-55,"oslash\0zcaron":-55,"oslash\0zdotaccent":-55,"otilde\0comma":-40,"otilde\0period":-40,"otilde\0v":-15,"otilde\0w":-15,"otilde\0x":-30,"otilde\0y":-30,"otilde\0yacute":-30,"otilde\0ydieresis":-30,"p\0comma":-35,"p\0period":-35,"p\0y":-30,"p\0yacute":-30,"p\0ydieresis":-30,"period\0quotedblright":-100,"period\0quoteright":-100,"period\0space":-60,"quotedblright\0space":-40,"quoteleft\0quoteleft":-57,"quoteright\0d":-50,"quoteright\0dcroat":-50,"quoteright\0quoteright":-57,"quoteright\0r":-50,"quoteright\0racute":-50,"quoteright\0rcaron":-50,"quoteright\0rcommaaccent":-50,"quoteright\0s":-50,"quoteright\0sacute":-50,"quoteright\0scaron":-50,"quoteright\0scedilla":-50,"quoteright\0scommaaccent":-50,"quoteright\0space":-70,"r\0a":-10,"r\0aacute":-10,"r\0abreve":-10,"r\0acircumflex":-10,"r\0adieresis":-10,"r\0agrave":-10,"r\0amacron":-10,"r\0aogonek":-10,"r\0aring":-10,"r\0atilde":-10,"r\0colon":30,"r\0comma":-50,"r\0i":15,"r\0iacute":15,"r\0icircumflex":15,"r\0idieresis":15,"r\0igrave":15,"r\0imacron":15,"r\0iogonek":15,"r\0k":15,"r\0kcommaaccent":15,"r\0l":15,"r\0lacute":15,"r\0lcommaaccent":15,"r\0lslash":15,"r\0m":25,"r\0n":25,"r\0nacute":25,"r\0ncaron":25,"r\0ncommaaccent":25,"r\0ntilde":25,"r\0p":30,"r\0period":-50,"r\0semicolon":30,"r\0t":40,"r\0tcommaaccent":40,"r\0u":15,"r\0uacute":15,"r\0ucircumflex":15,"r\0udieresis":15,"r\0ugrave":15,"r\0uhungarumlaut":15,"r\0umacron":15,"r\0uogonek":15,"r\0uring":15,"r\0v":30,"r\0y":30,"r\0yacute":30,"r\0ydieresis":30,"racute\0a":-10,"racute\0aacute":-10,"racute\0abreve":-10,"racute\0acircumflex":-10,"racute\0adieresis":-10,"racute\0agrave":-10,"racute\0amacron":-10,"racute\0aogonek":-10,"racute\0aring":-10,"racute\0atilde":-10,"racute\0colon":30,"racute\0comma":-50,"racute\0i":15,"racute\0iacute":15,"racute\0icircumflex":15,"racute\0idieresis":15,"racute\0igrave":15,"racute\0imacron":15,"racute\0iogonek":15,"racute\0k":15,"racute\0kcommaaccent":15,"racute\0l":15,"racute\0lacute":15,"racute\0lcommaaccent":15,"racute\0lslash":15,"racute\0m":25,"racute\0n":25,"racute\0nacute":25,"racute\0ncaron":25,"racute\0ncommaaccent":25,"racute\0ntilde":25,"racute\0p":30,"racute\0period":-50,"racute\0semicolon":30,"racute\0t":40,"racute\0tcommaaccent":40,"racute\0u":15,"racute\0uacute":15,"racute\0ucircumflex":15,"racute\0udieresis":15,"racute\0ugrave":15,"racute\0uhungarumlaut":15,"racute\0umacron":15,"racute\0uogonek":15,"racute\0uring":15,"racute\0v":30,"racute\0y":30,"racute\0yacute":30,"racute\0ydieresis":30,"rcaron\0a":-10,"rcaron\0aacute":-10,"rcaron\0abreve":-10,"rcaron\0acircumflex":-10,"rcaron\0adieresis":-10,"rcaron\0agrave":-10,"rcaron\0amacron":-10,"rcaron\0aogonek":-10,"rcaron\0aring":-10,"rcaron\0atilde":-10,"rcaron\0colon":30,"rcaron\0comma":-50,"rcaron\0i":15,"rcaron\0iacute":15,"rcaron\0icircumflex":15,"rcaron\0idieresis":15,"rcaron\0igrave":15,"rcaron\0imacron":15,"rcaron\0iogonek":15,"rcaron\0k":15,"rcaron\0kcommaaccent":15,"rcaron\0l":15,"rcaron\0lacute":15,"rcaron\0lcommaaccent":15,"rcaron\0lslash":15,"rcaron\0m":25,"rcaron\0n":25,"rcaron\0nacute":25,"rcaron\0ncaron":25,"rcaron\0ncommaaccent":25,"rcaron\0ntilde":25,"rcaron\0p":30,"rcaron\0period":-50,"rcaron\0semicolon":30,"rcaron\0t":40,"rcaron\0tcommaaccent":40,"rcaron\0u":15,"rcaron\0uacute":15,"rcaron\0ucircumflex":15,"rcaron\0udieresis":15,"rcaron\0ugrave":15,"rcaron\0uhungarumlaut":15,"rcaron\0umacron":15,"rcaron\0uogonek":15,"rcaron\0uring":15,"rcaron\0v":30,"rcaron\0y":30,"rcaron\0yacute":30,"rcaron\0ydieresis":30,"rcommaaccent\0a":-10,"rcommaaccent\0aacute":-10,"rcommaaccent\0abreve":-10,"rcommaaccent\0acircumflex":-10,"rcommaaccent\0adieresis":-10,"rcommaaccent\0agrave":-10,"rcommaaccent\0amacron":-10,"rcommaaccent\0aogonek":-10,"rcommaaccent\0aring":-10,"rcommaaccent\0atilde":-10,"rcommaaccent\0colon":30,"rcommaaccent\0comma":-50,"rcommaaccent\0i":15,"rcommaaccent\0iacute":15,"rcommaaccent\0icircumflex":15,"rcommaaccent\0idieresis":15,"rcommaaccent\0igrave":15,"rcommaaccent\0imacron":15,"rcommaaccent\0iogonek":15,"rcommaaccent\0k":15,"rcommaaccent\0kcommaaccent":15,"rcommaaccent\0l":15,"rcommaaccent\0lacute":15,"rcommaaccent\0lcommaaccent":15,"rcommaaccent\0lslash":15,"rcommaaccent\0m":25,"rcommaaccent\0n":25,"rcommaaccent\0nacute":25,"rcommaaccent\0ncaron":25,"rcommaaccent\0ncommaaccent":25,"rcommaaccent\0ntilde":25,"rcommaaccent\0p":30,"rcommaaccent\0period":-50,"rcommaaccent\0semicolon":30,"rcommaaccent\0t":40,"rcommaaccent\0tcommaaccent":40,"rcommaaccent\0u":15,"rcommaaccent\0uacute":15,"rcommaaccent\0ucircumflex":15,"rcommaaccent\0udieresis":15,"rcommaaccent\0ugrave":15,"rcommaaccent\0uhungarumlaut":15,"rcommaaccent\0umacron":15,"rcommaaccent\0uogonek":15,"rcommaaccent\0uring":15,"rcommaaccent\0v":30,"rcommaaccent\0y":30,"rcommaaccent\0yacute":30,"rcommaaccent\0ydieresis":30,"s\0comma":-15,"s\0period":-15,"s\0w":-30,"sacute\0comma":-15,"sacute\0period":-15,"sacute\0w":-30,"scaron\0comma":-15,"scaron\0period":-15,"scaron\0w":-30,"scedilla\0comma":-15,"scedilla\0period":-15,"scedilla\0w":-30,"scommaaccent\0comma":-15,"scommaaccent\0period":-15,"scommaaccent\0w":-30,"semicolon\0space":-50,"space\0T":-50,"space\0Tcaron":-50,"space\0Tcommaaccent":-50,"space\0V":-50,"space\0W":-40,"space\0Y":-90,"space\0Yacute":-90,"space\0Ydieresis":-90,"space\0quotedblleft":-30,"space\0quoteleft":-60,"v\0a":-25,"v\0aacute":-25,"v\0abreve":-25,"v\0acircumflex":-25,"v\0adieresis":-25,"v\0agrave":-25,"v\0amacron":-25,"v\0aogonek":-25,"v\0aring":-25,"v\0atilde":-25,"v\0comma":-80,"v\0e":-25,"v\0eacute":-25,"v\0ecaron":-25,"v\0ecircumflex":-25,"v\0edieresis":-25,"v\0edotaccent":-25,"v\0egrave":-25,"v\0emacron":-25,"v\0eogonek":-25,"v\0o":-25,"v\0oacute":-25,"v\0ocircumflex":-25,"v\0odieresis":-25,"v\0ograve":-25,"v\0ohungarumlaut":-25,"v\0omacron":-25,"v\0oslash":-25,"v\0otilde":-25,"v\0period":-80,"w\0a":-15,"w\0aacute":-15,"w\0abreve":-15,"w\0acircumflex":-15,"w\0adieresis":-15,"w\0agrave":-15,"w\0amacron":-15,"w\0aogonek":-15,"w\0aring":-15,"w\0atilde":-15,"w\0comma":-60,"w\0e":-10,"w\0eacute":-10,"w\0ecaron":-10,"w\0ecircumflex":-10,"w\0edieresis":-10,"w\0edotaccent":-10,"w\0egrave":-10,"w\0emacron":-10,"w\0eogonek":-10,"w\0o":-10,"w\0oacute":-10,"w\0ocircumflex":-10,"w\0odieresis":-10,"w\0ograve":-10,"w\0ohungarumlaut":-10,"w\0omacron":-10,"w\0oslash":-10,"w\0otilde":-10,"w\0period":-60,"x\0e":-30,"x\0eacute":-30,"x\0ecaron":-30,"x\0ecircumflex":-30,"x\0edieresis":-30,"x\0edotaccent":-30,"x\0egrave":-30,"x\0emacron":-30,"x\0eogonek":-30,"y\0a":-20,"y\0aacute":-20,"y\0abreve":-20,"y\0acircumflex":-20,"y\0adieresis":-20,"y\0agrave":-20,"y\0amacron":-20,"y\0aogonek":-20,"y\0aring":-20,"y\0atilde":-20,"y\0comma":-100,"y\0e":-20,"y\0eacute":-20,"y\0ecaron":-20,"y\0ecircumflex":-20,"y\0edieresis":-20,"y\0edotaccent":-20,"y\0egrave":-20,"y\0emacron":-20,"y\0eogonek":-20,"y\0o":-20,"y\0oacute":-20,"y\0ocircumflex":-20,"y\0odieresis":-20,"y\0ograve":-20,"y\0ohungarumlaut":-20,"y\0omacron":-20,"y\0oslash":-20,"y\0otilde":-20,"y\0period":-100,"yacute\0a":-20,"yacute\0aacute":-20,"yacute\0abreve":-20,"yacute\0acircumflex":-20,"yacute\0adieresis":-20,"yacute\0agrave":-20,"yacute\0amacron":-20,"yacute\0aogonek":-20,"yacute\0aring":-20,"yacute\0atilde":-20,"yacute\0comma":-100,"yacute\0e":-20,"yacute\0eacute":-20,"yacute\0ecaron":-20,"yacute\0ecircumflex":-20,"yacute\0edieresis":-20,"yacute\0edotaccent":-20,"yacute\0egrave":-20,"yacute\0emacron":-20,"yacute\0eogonek":-20,"yacute\0o":-20,"yacute\0oacute":-20,"yacute\0ocircumflex":-20,"yacute\0odieresis":-20,"yacute\0ograve":-20,"yacute\0ohungarumlaut":-20,"yacute\0omacron":-20,"yacute\0oslash":-20,"yacute\0otilde":-20,"yacute\0period":-100,"ydieresis\0a":-20,"ydieresis\0aacute":-20,"ydieresis\0abreve":-20,"ydieresis\0acircumflex":-20,"ydieresis\0adieresis":-20,"ydieresis\0agrave":-20,"ydieresis\0amacron":-20,"ydieresis\0aogonek":-20,"ydieresis\0aring":-20,"ydieresis\0atilde":-20,"ydieresis\0comma":-100,"ydieresis\0e":-20,"ydieresis\0eacute":-20,"ydieresis\0ecaron":-20,"ydieresis\0ecircumflex":-20,"ydieresis\0edieresis":-20,"ydieresis\0edotaccent":-20,"ydieresis\0egrave":-20,"ydieresis\0emacron":-20,"ydieresis\0eogonek":-20,"ydieresis\0o":-20,"ydieresis\0oacute":-20,"ydieresis\0ocircumflex":-20,"ydieresis\0odieresis":-20,"ydieresis\0ograve":-20,"ydieresis\0ohungarumlaut":-20,"ydieresis\0omacron":-20,"ydieresis\0oslash":-20,"ydieresis\0otilde":-20,"ydieresis\0period":-100,"z\0e":-15,"z\0eacute":-15,"z\0ecaron":-15,"z\0ecircumflex":-15,"z\0edieresis":-15,"z\0edotaccent":-15,"z\0egrave":-15,"z\0emacron":-15,"z\0eogonek":-15,"z\0o":-15,"z\0oacute":-15,"z\0ocircumflex":-15,"z\0odieresis":-15,"z\0ograve":-15,"z\0ohungarumlaut":-15,"z\0omacron":-15,"z\0oslash":-15,"z\0otilde":-15,"zacute\0e":-15,"zacute\0eacute":-15,"zacute\0ecaron":-15,"zacute\0ecircumflex":-15,"zacute\0edieresis":-15,"zacute\0edotaccent":-15,"zacute\0egrave":-15,"zacute\0emacron":-15,"zacute\0eogonek":-15,"zacute\0o":-15,"zacute\0oacute":-15,"zacute\0ocircumflex":-15,"zacute\0odieresis":-15,"zacute\0ograve":-15,"zacute\0ohungarumlaut":-15,"zacute\0omacron":-15,"zacute\0oslash":-15,"zacute\0otilde":-15,"zcaron\0e":-15,"zcaron\0eacute":-15,"zcaron\0ecaron":-15,"zcaron\0ecircumflex":-15,"zcaron\0edieresis":-15,"zcaron\0edotaccent":-15,"zcaron\0egrave":-15,"zcaron\0emacron":-15,"zcaron\0eogonek":-15,"zcaron\0o":-15,"zcaron\0oacute":-15,"zcaron\0ocircumflex":-15,"zcaron\0odieresis":-15,"zcaron\0ograve":-15,"zcaron\0ohungarumlaut":-15,"zcaron\0omacron":-15,"zcaron\0oslash":-15,"zcaron\0otilde":-15,"zdotaccent\0e":-15,"zdotaccent\0eacute":-15,"zdotaccent\0ecaron":-15,"zdotaccent\0ecircumflex":-15,"zdotaccent\0edieresis":-15,"zdotaccent\0edotaccent":-15,"zdotaccent\0egrave":-15,"zdotaccent\0emacron":-15,"zdotaccent\0eogonek":-15,"zdotaccent\0o":-15,"zdotaccent\0oacute":-15,"zdotaccent\0ocircumflex":-15,"zdotaccent\0odieresis":-15,"zdotaccent\0ograve":-15,"zdotaccent\0ohungarumlaut":-15,"zdotaccent\0omacron":-15,"zdotaccent\0oslash":-15,"zdotaccent\0otilde":-15}},"Times-Roman":{attributes:{Comment:["Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated.  All Rights Reserved.","Creation Date: Thu May  1 12:49:17 1997","UniqueID 43068","VMusage 43909 54934"],FontName:"Times-Roman",FullName:"Times Roman",FamilyName:"Times",Weight:"Roman",ItalicAngle:"0",IsFixedPitch:"false",CharacterSet:"ExtendedRoman",FontBBox:"-168 -218 1000 898 ",UnderlinePosition:"-100",UnderlineThickness:"50",Version:"002.000",Notice:"Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated.  All Rights Reserved.Times is a trademark of Linotype-Hell AG and/or its subsidiaries.",EncodingScheme:"AdobeStandardEncoding",CapHeight:"662",XHeight:"450",Ascender:"683",Descender:"-217",StdHW:"28",StdVW:"84"},glyphWidths:{space:250,exclam:333,quotedbl:408,numbersign:500,dollar:500,percent:833,ampersand:778,quoteright:333,parenleft:333,parenright:333,asterisk:500,plus:564,comma:250,hyphen:333,period:250,slash:278,zero:500,one:500,two:500,three:500,four:500,five:500,six:500,seven:500,eight:500,nine:500,colon:278,semicolon:278,less:564,equal:564,greater:564,question:444,at:921,A:722,B:667,C:667,D:722,E:611,F:556,G:722,H:722,I:333,J:389,K:722,L:611,M:889,N:722,O:722,P:556,Q:722,R:667,S:556,T:611,U:722,V:722,W:944,X:722,Y:722,Z:611,bracketleft:333,backslash:278,bracketright:333,asciicircum:469,underscore:500,quoteleft:333,a:444,b:500,c:444,d:500,e:444,f:333,g:500,h:500,i:278,j:278,k:500,l:278,m:778,n:500,o:500,p:500,q:500,r:333,s:389,t:278,u:500,v:500,w:722,x:500,y:500,z:444,braceleft:480,bar:200,braceright:480,asciitilde:541,exclamdown:333,cent:500,sterling:500,fraction:167,yen:500,florin:500,section:500,currency:500,quotesingle:180,quotedblleft:444,guillemotleft:500,guilsinglleft:333,guilsinglright:333,fi:556,fl:556,endash:500,dagger:500,daggerdbl:500,periodcentered:250,paragraph:453,bullet:350,quotesinglbase:333,quotedblbase:444,quotedblright:444,guillemotright:500,ellipsis:1e3,perthousand:1e3,questiondown:444,grave:333,acute:333,circumflex:333,tilde:333,macron:333,breve:333,dotaccent:333,dieresis:333,ring:333,cedilla:333,hungarumlaut:333,ogonek:333,caron:333,emdash:1e3,AE:889,ordfeminine:276,Lslash:611,Oslash:722,OE:889,ordmasculine:310,ae:667,dotlessi:278,lslash:278,oslash:500,oe:722,germandbls:500,Idieresis:333,eacute:444,abreve:444,uhungarumlaut:500,ecaron:444,Ydieresis:722,divide:564,Yacute:722,Acircumflex:722,aacute:444,Ucircumflex:722,yacute:500,scommaaccent:389,ecircumflex:444,Uring:722,Udieresis:722,aogonek:444,Uacute:722,uogonek:500,Edieresis:611,Dcroat:722,commaaccent:250,copyright:760,Emacron:611,ccaron:444,aring:444,Ncommaaccent:722,lacute:278,agrave:444,Tcommaaccent:611,Cacute:667,atilde:444,Edotaccent:611,scaron:389,scedilla:389,iacute:278,lozenge:471,Rcaron:667,Gcommaaccent:722,ucircumflex:500,acircumflex:444,Amacron:722,rcaron:333,ccedilla:444,Zdotaccent:611,Thorn:556,Omacron:722,Racute:667,Sacute:556,dcaron:588,Umacron:722,uring:500,threesuperior:300,Ograve:722,Agrave:722,Abreve:722,multiply:564,uacute:500,Tcaron:611,partialdiff:476,ydieresis:500,Nacute:722,icircumflex:278,Ecircumflex:611,adieresis:444,edieresis:444,cacute:444,nacute:500,umacron:500,Ncaron:722,Iacute:333,plusminus:564,brokenbar:200,registered:760,Gbreve:722,Idotaccent:333,summation:600,Egrave:611,racute:333,omacron:500,Zacute:611,Zcaron:611,greaterequal:549,Eth:722,Ccedilla:667,lcommaaccent:278,tcaron:326,eogonek:444,Uogonek:722,Aacute:722,Adieresis:722,egrave:444,zacute:444,iogonek:278,Oacute:722,oacute:500,amacron:444,sacute:389,idieresis:278,Ocircumflex:722,Ugrave:722,Delta:612,thorn:500,twosuperior:300,Odieresis:722,mu:500,igrave:278,ohungarumlaut:500,Eogonek:611,dcroat:500,threequarters:750,Scedilla:556,lcaron:344,Kcommaaccent:722,Lacute:611,trademark:980,edotaccent:444,Igrave:333,Imacron:333,Lcaron:611,onehalf:750,lessequal:549,ocircumflex:500,ntilde:500,Uhungarumlaut:722,Eacute:611,emacron:444,gbreve:500,onequarter:750,Scaron:556,Scommaaccent:556,Ohungarumlaut:722,degree:400,ograve:500,Ccaron:667,ugrave:500,radical:453,Dcaron:722,rcommaaccent:333,Ntilde:722,otilde:500,Rcommaaccent:667,Lcommaaccent:611,Atilde:722,Aogonek:722,Aring:722,Otilde:722,zdotaccent:444,Ecaron:611,Iogonek:333,kcommaaccent:500,minus:564,Icircumflex:333,ncaron:500,tcommaaccent:278,logicalnot:564,odieresis:500,udieresis:500,notequal:549,gcommaaccent:500,eth:500,zcaron:444,ncommaaccent:500,onesuperior:300,imacron:278,Euro:500},kernPairs:{"A\0C":-40,"A\0Cacute":-40,"A\0Ccaron":-40,"A\0Ccedilla":-40,"A\0G":-40,"A\0Gbreve":-40,"A\0Gcommaaccent":-40,"A\0O":-55,"A\0Oacute":-55,"A\0Ocircumflex":-55,"A\0Odieresis":-55,"A\0Ograve":-55,"A\0Ohungarumlaut":-55,"A\0Omacron":-55,"A\0Oslash":-55,"A\0Otilde":-55,"A\0Q":-55,"A\0T":-111,"A\0Tcaron":-111,"A\0Tcommaaccent":-111,"A\0U":-55,"A\0Uacute":-55,"A\0Ucircumflex":-55,"A\0Udieresis":-55,"A\0Ugrave":-55,"A\0Uhungarumlaut":-55,"A\0Umacron":-55,"A\0Uogonek":-55,"A\0Uring":-55,"A\0V":-135,"A\0W":-90,"A\0Y":-105,"A\0Yacute":-105,"A\0Ydieresis":-105,"A\0quoteright":-111,"A\0v":-74,"A\0w":-92,"A\0y":-92,"A\0yacute":-92,"A\0ydieresis":-92,"Aacute\0C":-40,"Aacute\0Cacute":-40,"Aacute\0Ccaron":-40,"Aacute\0Ccedilla":-40,"Aacute\0G":-40,"Aacute\0Gbreve":-40,"Aacute\0Gcommaaccent":-40,"Aacute\0O":-55,"Aacute\0Oacute":-55,"Aacute\0Ocircumflex":-55,"Aacute\0Odieresis":-55,"Aacute\0Ograve":-55,"Aacute\0Ohungarumlaut":-55,"Aacute\0Omacron":-55,"Aacute\0Oslash":-55,"Aacute\0Otilde":-55,"Aacute\0Q":-55,"Aacute\0T":-111,"Aacute\0Tcaron":-111,"Aacute\0Tcommaaccent":-111,"Aacute\0U":-55,"Aacute\0Uacute":-55,"Aacute\0Ucircumflex":-55,"Aacute\0Udieresis":-55,"Aacute\0Ugrave":-55,"Aacute\0Uhungarumlaut":-55,"Aacute\0Umacron":-55,"Aacute\0Uogonek":-55,"Aacute\0Uring":-55,"Aacute\0V":-135,"Aacute\0W":-90,"Aacute\0Y":-105,"Aacute\0Yacute":-105,"Aacute\0Ydieresis":-105,"Aacute\0quoteright":-111,"Aacute\0v":-74,"Aacute\0w":-92,"Aacute\0y":-92,"Aacute\0yacute":-92,"Aacute\0ydieresis":-92,"Abreve\0C":-40,"Abreve\0Cacute":-40,"Abreve\0Ccaron":-40,"Abreve\0Ccedilla":-40,"Abreve\0G":-40,"Abreve\0Gbreve":-40,"Abreve\0Gcommaaccent":-40,"Abreve\0O":-55,"Abreve\0Oacute":-55,"Abreve\0Ocircumflex":-55,"Abreve\0Odieresis":-55,"Abreve\0Ograve":-55,"Abreve\0Ohungarumlaut":-55,"Abreve\0Omacron":-55,"Abreve\0Oslash":-55,"Abreve\0Otilde":-55,"Abreve\0Q":-55,"Abreve\0T":-111,"Abreve\0Tcaron":-111,"Abreve\0Tcommaaccent":-111,"Abreve\0U":-55,"Abreve\0Uacute":-55,"Abreve\0Ucircumflex":-55,"Abreve\0Udieresis":-55,"Abreve\0Ugrave":-55,"Abreve\0Uhungarumlaut":-55,"Abreve\0Umacron":-55,"Abreve\0Uogonek":-55,"Abreve\0Uring":-55,"Abreve\0V":-135,"Abreve\0W":-90,"Abreve\0Y":-105,"Abreve\0Yacute":-105,"Abreve\0Ydieresis":-105,"Abreve\0quoteright":-111,"Abreve\0v":-74,"Abreve\0w":-92,"Abreve\0y":-92,"Abreve\0yacute":-92,"Abreve\0ydieresis":-92,"Acircumflex\0C":-40,"Acircumflex\0Cacute":-40,"Acircumflex\0Ccaron":-40,"Acircumflex\0Ccedilla":-40,"Acircumflex\0G":-40,"Acircumflex\0Gbreve":-40,"Acircumflex\0Gcommaaccent":-40,"Acircumflex\0O":-55,"Acircumflex\0Oacute":-55,"Acircumflex\0Ocircumflex":-55,"Acircumflex\0Odieresis":-55,"Acircumflex\0Ograve":-55,"Acircumflex\0Ohungarumlaut":-55,"Acircumflex\0Omacron":-55,"Acircumflex\0Oslash":-55,"Acircumflex\0Otilde":-55,"Acircumflex\0Q":-55,"Acircumflex\0T":-111,"Acircumflex\0Tcaron":-111,"Acircumflex\0Tcommaaccent":-111,"Acircumflex\0U":-55,"Acircumflex\0Uacute":-55,"Acircumflex\0Ucircumflex":-55,"Acircumflex\0Udieresis":-55,"Acircumflex\0Ugrave":-55,"Acircumflex\0Uhungarumlaut":-55,"Acircumflex\0Umacron":-55,"Acircumflex\0Uogonek":-55,"Acircumflex\0Uring":-55,"Acircumflex\0V":-135,"Acircumflex\0W":-90,"Acircumflex\0Y":-105,"Acircumflex\0Yacute":-105,"Acircumflex\0Ydieresis":-105,"Acircumflex\0quoteright":-111,"Acircumflex\0v":-74,"Acircumflex\0w":-92,"Acircumflex\0y":-92,"Acircumflex\0yacute":-92,"Acircumflex\0ydieresis":-92,"Adieresis\0C":-40,"Adieresis\0Cacute":-40,"Adieresis\0Ccaron":-40,"Adieresis\0Ccedilla":-40,"Adieresis\0G":-40,"Adieresis\0Gbreve":-40,"Adieresis\0Gcommaaccent":-40,"Adieresis\0O":-55,"Adieresis\0Oacute":-55,"Adieresis\0Ocircumflex":-55,"Adieresis\0Odieresis":-55,"Adieresis\0Ograve":-55,"Adieresis\0Ohungarumlaut":-55,"Adieresis\0Omacron":-55,"Adieresis\0Oslash":-55,"Adieresis\0Otilde":-55,"Adieresis\0Q":-55,"Adieresis\0T":-111,"Adieresis\0Tcaron":-111,"Adieresis\0Tcommaaccent":-111,"Adieresis\0U":-55,"Adieresis\0Uacute":-55,"Adieresis\0Ucircumflex":-55,"Adieresis\0Udieresis":-55,"Adieresis\0Ugrave":-55,"Adieresis\0Uhungarumlaut":-55,"Adieresis\0Umacron":-55,"Adieresis\0Uogonek":-55,"Adieresis\0Uring":-55,"Adieresis\0V":-135,"Adieresis\0W":-90,"Adieresis\0Y":-105,"Adieresis\0Yacute":-105,"Adieresis\0Ydieresis":-105,"Adieresis\0quoteright":-111,"Adieresis\0v":-74,"Adieresis\0w":-92,"Adieresis\0y":-92,"Adieresis\0yacute":-92,"Adieresis\0ydieresis":-92,"Agrave\0C":-40,"Agrave\0Cacute":-40,"Agrave\0Ccaron":-40,"Agrave\0Ccedilla":-40,"Agrave\0G":-40,"Agrave\0Gbreve":-40,"Agrave\0Gcommaaccent":-40,"Agrave\0O":-55,"Agrave\0Oacute":-55,"Agrave\0Ocircumflex":-55,"Agrave\0Odieresis":-55,"Agrave\0Ograve":-55,"Agrave\0Ohungarumlaut":-55,"Agrave\0Omacron":-55,"Agrave\0Oslash":-55,"Agrave\0Otilde":-55,"Agrave\0Q":-55,"Agrave\0T":-111,"Agrave\0Tcaron":-111,"Agrave\0Tcommaaccent":-111,"Agrave\0U":-55,"Agrave\0Uacute":-55,"Agrave\0Ucircumflex":-55,"Agrave\0Udieresis":-55,"Agrave\0Ugrave":-55,"Agrave\0Uhungarumlaut":-55,"Agrave\0Umacron":-55,"Agrave\0Uogonek":-55,"Agrave\0Uring":-55,"Agrave\0V":-135,"Agrave\0W":-90,"Agrave\0Y":-105,"Agrave\0Yacute":-105,"Agrave\0Ydieresis":-105,"Agrave\0quoteright":-111,"Agrave\0v":-74,"Agrave\0w":-92,"Agrave\0y":-92,"Agrave\0yacute":-92,"Agrave\0ydieresis":-92,"Amacron\0C":-40,"Amacron\0Cacute":-40,"Amacron\0Ccaron":-40,"Amacron\0Ccedilla":-40,"Amacron\0G":-40,"Amacron\0Gbreve":-40,"Amacron\0Gcommaaccent":-40,"Amacron\0O":-55,"Amacron\0Oacute":-55,"Amacron\0Ocircumflex":-55,"Amacron\0Odieresis":-55,"Amacron\0Ograve":-55,"Amacron\0Ohungarumlaut":-55,"Amacron\0Omacron":-55,"Amacron\0Oslash":-55,"Amacron\0Otilde":-55,"Amacron\0Q":-55,"Amacron\0T":-111,"Amacron\0Tcaron":-111,"Amacron\0Tcommaaccent":-111,"Amacron\0U":-55,"Amacron\0Uacute":-55,"Amacron\0Ucircumflex":-55,"Amacron\0Udieresis":-55,"Amacron\0Ugrave":-55,"Amacron\0Uhungarumlaut":-55,"Amacron\0Umacron":-55,"Amacron\0Uogonek":-55,"Amacron\0Uring":-55,"Amacron\0V":-135,"Amacron\0W":-90,"Amacron\0Y":-105,"Amacron\0Yacute":-105,"Amacron\0Ydieresis":-105,"Amacron\0quoteright":-111,"Amacron\0v":-74,"Amacron\0w":-92,"Amacron\0y":-92,"Amacron\0yacute":-92,"Amacron\0ydieresis":-92,"Aogonek\0C":-40,"Aogonek\0Cacute":-40,"Aogonek\0Ccaron":-40,"Aogonek\0Ccedilla":-40,"Aogonek\0G":-40,"Aogonek\0Gbreve":-40,"Aogonek\0Gcommaaccent":-40,"Aogonek\0O":-55,"Aogonek\0Oacute":-55,"Aogonek\0Ocircumflex":-55,"Aogonek\0Odieresis":-55,"Aogonek\0Ograve":-55,"Aogonek\0Ohungarumlaut":-55,"Aogonek\0Omacron":-55,"Aogonek\0Oslash":-55,"Aogonek\0Otilde":-55,"Aogonek\0Q":-55,"Aogonek\0T":-111,"Aogonek\0Tcaron":-111,"Aogonek\0Tcommaaccent":-111,"Aogonek\0U":-55,"Aogonek\0Uacute":-55,"Aogonek\0Ucircumflex":-55,"Aogonek\0Udieresis":-55,"Aogonek\0Ugrave":-55,"Aogonek\0Uhungarumlaut":-55,"Aogonek\0Umacron":-55,"Aogonek\0Uogonek":-55,"Aogonek\0Uring":-55,"Aogonek\0V":-135,"Aogonek\0W":-90,"Aogonek\0Y":-105,"Aogonek\0Yacute":-105,"Aogonek\0Ydieresis":-105,"Aogonek\0quoteright":-111,"Aogonek\0v":-74,"Aogonek\0w":-52,"Aogonek\0y":-52,"Aogonek\0yacute":-52,"Aogonek\0ydieresis":-52,"Aring\0C":-40,"Aring\0Cacute":-40,"Aring\0Ccaron":-40,"Aring\0Ccedilla":-40,"Aring\0G":-40,"Aring\0Gbreve":-40,"Aring\0Gcommaaccent":-40,"Aring\0O":-55,"Aring\0Oacute":-55,"Aring\0Ocircumflex":-55,"Aring\0Odieresis":-55,"Aring\0Ograve":-55,"Aring\0Ohungarumlaut":-55,"Aring\0Omacron":-55,"Aring\0Oslash":-55,"Aring\0Otilde":-55,"Aring\0Q":-55,"Aring\0T":-111,"Aring\0Tcaron":-111,"Aring\0Tcommaaccent":-111,"Aring\0U":-55,"Aring\0Uacute":-55,"Aring\0Ucircumflex":-55,"Aring\0Udieresis":-55,"Aring\0Ugrave":-55,"Aring\0Uhungarumlaut":-55,"Aring\0Umacron":-55,"Aring\0Uogonek":-55,"Aring\0Uring":-55,"Aring\0V":-135,"Aring\0W":-90,"Aring\0Y":-105,"Aring\0Yacute":-105,"Aring\0Ydieresis":-105,"Aring\0quoteright":-111,"Aring\0v":-74,"Aring\0w":-92,"Aring\0y":-92,"Aring\0yacute":-92,"Aring\0ydieresis":-92,"Atilde\0C":-40,"Atilde\0Cacute":-40,"Atilde\0Ccaron":-40,"Atilde\0Ccedilla":-40,"Atilde\0G":-40,"Atilde\0Gbreve":-40,"Atilde\0Gcommaaccent":-40,"Atilde\0O":-55,"Atilde\0Oacute":-55,"Atilde\0Ocircumflex":-55,"Atilde\0Odieresis":-55,"Atilde\0Ograve":-55,"Atilde\0Ohungarumlaut":-55,"Atilde\0Omacron":-55,"Atilde\0Oslash":-55,"Atilde\0Otilde":-55,"Atilde\0Q":-55,"Atilde\0T":-111,"Atilde\0Tcaron":-111,"Atilde\0Tcommaaccent":-111,"Atilde\0U":-55,"Atilde\0Uacute":-55,"Atilde\0Ucircumflex":-55,"Atilde\0Udieresis":-55,"Atilde\0Ugrave":-55,"Atilde\0Uhungarumlaut":-55,"Atilde\0Umacron":-55,"Atilde\0Uogonek":-55,"Atilde\0Uring":-55,"Atilde\0V":-135,"Atilde\0W":-90,"Atilde\0Y":-105,"Atilde\0Yacute":-105,"Atilde\0Ydieresis":-105,"Atilde\0quoteright":-111,"Atilde\0v":-74,"Atilde\0w":-92,"Atilde\0y":-92,"Atilde\0yacute":-92,"Atilde\0ydieresis":-92,"B\0A":-35,"B\0Aacute":-35,"B\0Abreve":-35,"B\0Acircumflex":-35,"B\0Adieresis":-35,"B\0Agrave":-35,"B\0Amacron":-35,"B\0Aogonek":-35,"B\0Aring":-35,"B\0Atilde":-35,"B\0U":-10,"B\0Uacute":-10,"B\0Ucircumflex":-10,"B\0Udieresis":-10,"B\0Ugrave":-10,"B\0Uhungarumlaut":-10,"B\0Umacron":-10,"B\0Uogonek":-10,"B\0Uring":-10,"D\0A":-40,"D\0Aacute":-40,"D\0Abreve":-40,"D\0Acircumflex":-40,"D\0Adieresis":-40,"D\0Agrave":-40,"D\0Amacron":-40,"D\0Aogonek":-40,"D\0Aring":-40,"D\0Atilde":-40,"D\0V":-40,"D\0W":-30,"D\0Y":-55,"D\0Yacute":-55,"D\0Ydieresis":-55,"Dcaron\0A":-40,"Dcaron\0Aacute":-40,"Dcaron\0Abreve":-40,"Dcaron\0Acircumflex":-40,"Dcaron\0Adieresis":-40,"Dcaron\0Agrave":-40,"Dcaron\0Amacron":-40,"Dcaron\0Aogonek":-40,"Dcaron\0Aring":-40,"Dcaron\0Atilde":-40,"Dcaron\0V":-40,"Dcaron\0W":-30,"Dcaron\0Y":-55,"Dcaron\0Yacute":-55,"Dcaron\0Ydieresis":-55,"Dcroat\0A":-40,"Dcroat\0Aacute":-40,"Dcroat\0Abreve":-40,"Dcroat\0Acircumflex":-40,"Dcroat\0Adieresis":-40,"Dcroat\0Agrave":-40,"Dcroat\0Amacron":-40,"Dcroat\0Aogonek":-40,"Dcroat\0Aring":-40,"Dcroat\0Atilde":-40,"Dcroat\0V":-40,"Dcroat\0W":-30,"Dcroat\0Y":-55,"Dcroat\0Yacute":-55,"Dcroat\0Ydieresis":-55,"F\0A":-74,"F\0Aacute":-74,"F\0Abreve":-74,"F\0Acircumflex":-74,"F\0Adieresis":-74,"F\0Agrave":-74,"F\0Amacron":-74,"F\0Aogonek":-74,"F\0Aring":-74,"F\0Atilde":-74,"F\0a":-15,"F\0aacute":-15,"F\0abreve":-15,"F\0acircumflex":-15,"F\0adieresis":-15,"F\0agrave":-15,"F\0amacron":-15,"F\0aogonek":-15,"F\0aring":-15,"F\0atilde":-15,"F\0comma":-80,"F\0o":-15,"F\0oacute":-15,"F\0ocircumflex":-15,"F\0odieresis":-15,"F\0ograve":-15,"F\0ohungarumlaut":-15,"F\0omacron":-15,"F\0oslash":-15,"F\0otilde":-15,"F\0period":-80,"J\0A":-60,"J\0Aacute":-60,"J\0Abreve":-60,"J\0Acircumflex":-60,"J\0Adieresis":-60,"J\0Agrave":-60,"J\0Amacron":-60,"J\0Aogonek":-60,"J\0Aring":-60,"J\0Atilde":-60,"K\0O":-30,"K\0Oacute":-30,"K\0Ocircumflex":-30,"K\0Odieresis":-30,"K\0Ograve":-30,"K\0Ohungarumlaut":-30,"K\0Omacron":-30,"K\0Oslash":-30,"K\0Otilde":-30,"K\0e":-25,"K\0eacute":-25,"K\0ecaron":-25,"K\0ecircumflex":-25,"K\0edieresis":-25,"K\0edotaccent":-25,"K\0egrave":-25,"K\0emacron":-25,"K\0eogonek":-25,"K\0o":-35,"K\0oacute":-35,"K\0ocircumflex":-35,"K\0odieresis":-35,"K\0ograve":-35,"K\0ohungarumlaut":-35,"K\0omacron":-35,"K\0oslash":-35,"K\0otilde":-35,"K\0u":-15,"K\0uacute":-15,"K\0ucircumflex":-15,"K\0udieresis":-15,"K\0ugrave":-15,"K\0uhungarumlaut":-15,"K\0umacron":-15,"K\0uogonek":-15,"K\0uring":-15,"K\0y":-25,"K\0yacute":-25,"K\0ydieresis":-25,"Kcommaaccent\0O":-30,"Kcommaaccent\0Oacute":-30,"Kcommaaccent\0Ocircumflex":-30,"Kcommaaccent\0Odieresis":-30,"Kcommaaccent\0Ograve":-30,"Kcommaaccent\0Ohungarumlaut":-30,"Kcommaaccent\0Omacron":-30,"Kcommaaccent\0Oslash":-30,"Kcommaaccent\0Otilde":-30,"Kcommaaccent\0e":-25,"Kcommaaccent\0eacute":-25,"Kcommaaccent\0ecaron":-25,"Kcommaaccent\0ecircumflex":-25,"Kcommaaccent\0edieresis":-25,"Kcommaaccent\0edotaccent":-25,"Kcommaaccent\0egrave":-25,"Kcommaaccent\0emacron":-25,"Kcommaaccent\0eogonek":-25,"Kcommaaccent\0o":-35,"Kcommaaccent\0oacute":-35,"Kcommaaccent\0ocircumflex":-35,"Kcommaaccent\0odieresis":-35,"Kcommaaccent\0ograve":-35,"Kcommaaccent\0ohungarumlaut":-35,"Kcommaaccent\0omacron":-35,"Kcommaaccent\0oslash":-35,"Kcommaaccent\0otilde":-35,"Kcommaaccent\0u":-15,"Kcommaaccent\0uacute":-15,"Kcommaaccent\0ucircumflex":-15,"Kcommaaccent\0udieresis":-15,"Kcommaaccent\0ugrave":-15,"Kcommaaccent\0uhungarumlaut":-15,"Kcommaaccent\0umacron":-15,"Kcommaaccent\0uogonek":-15,"Kcommaaccent\0uring":-15,"Kcommaaccent\0y":-25,"Kcommaaccent\0yacute":-25,"Kcommaaccent\0ydieresis":-25,"L\0T":-92,"L\0Tcaron":-92,"L\0Tcommaaccent":-92,"L\0V":-100,"L\0W":-74,"L\0Y":-100,"L\0Yacute":-100,"L\0Ydieresis":-100,"L\0quoteright":-92,"L\0y":-55,"L\0yacute":-55,"L\0ydieresis":-55,"Lacute\0T":-92,"Lacute\0Tcaron":-92,"Lacute\0Tcommaaccent":-92,"Lacute\0V":-100,"Lacute\0W":-74,"Lacute\0Y":-100,"Lacute\0Yacute":-100,"Lacute\0Ydieresis":-100,"Lacute\0quoteright":-92,"Lacute\0y":-55,"Lacute\0yacute":-55,"Lacute\0ydieresis":-55,"Lcaron\0quoteright":-92,"Lcaron\0y":-55,"Lcaron\0yacute":-55,"Lcaron\0ydieresis":-55,"Lcommaaccent\0T":-92,"Lcommaaccent\0Tcaron":-92,"Lcommaaccent\0Tcommaaccent":-92,"Lcommaaccent\0V":-100,"Lcommaaccent\0W":-74,"Lcommaaccent\0Y":-100,"Lcommaaccent\0Yacute":-100,"Lcommaaccent\0Ydieresis":-100,"Lcommaaccent\0quoteright":-92,"Lcommaaccent\0y":-55,"Lcommaaccent\0yacute":-55,"Lcommaaccent\0ydieresis":-55,"Lslash\0T":-92,"Lslash\0Tcaron":-92,"Lslash\0Tcommaaccent":-92,"Lslash\0V":-100,"Lslash\0W":-74,"Lslash\0Y":-100,"Lslash\0Yacute":-100,"Lslash\0Ydieresis":-100,"Lslash\0quoteright":-92,"Lslash\0y":-55,"Lslash\0yacute":-55,"Lslash\0ydieresis":-55,"N\0A":-35,"N\0Aacute":-35,"N\0Abreve":-35,"N\0Acircumflex":-35,"N\0Adieresis":-35,"N\0Agrave":-35,"N\0Amacron":-35,"N\0Aogonek":-35,"N\0Aring":-35,"N\0Atilde":-35,"Nacute\0A":-35,"Nacute\0Aacute":-35,"Nacute\0Abreve":-35,"Nacute\0Acircumflex":-35,"Nacute\0Adieresis":-35,"Nacute\0Agrave":-35,"Nacute\0Amacron":-35,"Nacute\0Aogonek":-35,"Nacute\0Aring":-35,"Nacute\0Atilde":-35,"Ncaron\0A":-35,"Ncaron\0Aacute":-35,"Ncaron\0Abreve":-35,"Ncaron\0Acircumflex":-35,"Ncaron\0Adieresis":-35,"Ncaron\0Agrave":-35,"Ncaron\0Amacron":-35,"Ncaron\0Aogonek":-35,"Ncaron\0Aring":-35,"Ncaron\0Atilde":-35,"Ncommaaccent\0A":-35,"Ncommaaccent\0Aacute":-35,"Ncommaaccent\0Abreve":-35,"Ncommaaccent\0Acircumflex":-35,"Ncommaaccent\0Adieresis":-35,"Ncommaaccent\0Agrave":-35,"Ncommaaccent\0Amacron":-35,"Ncommaaccent\0Aogonek":-35,"Ncommaaccent\0Aring":-35,"Ncommaaccent\0Atilde":-35,"Ntilde\0A":-35,"Ntilde\0Aacute":-35,"Ntilde\0Abreve":-35,"Ntilde\0Acircumflex":-35,"Ntilde\0Adieresis":-35,"Ntilde\0Agrave":-35,"Ntilde\0Amacron":-35,"Ntilde\0Aogonek":-35,"Ntilde\0Aring":-35,"Ntilde\0Atilde":-35,"O\0A":-35,"O\0Aacute":-35,"O\0Abreve":-35,"O\0Acircumflex":-35,"O\0Adieresis":-35,"O\0Agrave":-35,"O\0Amacron":-35,"O\0Aogonek":-35,"O\0Aring":-35,"O\0Atilde":-35,"O\0T":-40,"O\0Tcaron":-40,"O\0Tcommaaccent":-40,"O\0V":-50,"O\0W":-35,"O\0X":-40,"O\0Y":-50,"O\0Yacute":-50,"O\0Ydieresis":-50,"Oacute\0A":-35,"Oacute\0Aacute":-35,"Oacute\0Abreve":-35,"Oacute\0Acircumflex":-35,"Oacute\0Adieresis":-35,"Oacute\0Agrave":-35,"Oacute\0Amacron":-35,"Oacute\0Aogonek":-35,"Oacute\0Aring":-35,"Oacute\0Atilde":-35,"Oacute\0T":-40,"Oacute\0Tcaron":-40,"Oacute\0Tcommaaccent":-40,"Oacute\0V":-50,"Oacute\0W":-35,"Oacute\0X":-40,"Oacute\0Y":-50,"Oacute\0Yacute":-50,"Oacute\0Ydieresis":-50,"Ocircumflex\0A":-35,"Ocircumflex\0Aacute":-35,"Ocircumflex\0Abreve":-35,"Ocircumflex\0Acircumflex":-35,"Ocircumflex\0Adieresis":-35,"Ocircumflex\0Agrave":-35,"Ocircumflex\0Amacron":-35,"Ocircumflex\0Aogonek":-35,"Ocircumflex\0Aring":-35,"Ocircumflex\0Atilde":-35,"Ocircumflex\0T":-40,"Ocircumflex\0Tcaron":-40,"Ocircumflex\0Tcommaaccent":-40,"Ocircumflex\0V":-50,"Ocircumflex\0W":-35,"Ocircumflex\0X":-40,"Ocircumflex\0Y":-50,"Ocircumflex\0Yacute":-50,"Ocircumflex\0Ydieresis":-50,"Odieresis\0A":-35,"Odieresis\0Aacute":-35,"Odieresis\0Abreve":-35,"Odieresis\0Acircumflex":-35,"Odieresis\0Adieresis":-35,"Odieresis\0Agrave":-35,"Odieresis\0Amacron":-35,"Odieresis\0Aogonek":-35,"Odieresis\0Aring":-35,"Odieresis\0Atilde":-35,"Odieresis\0T":-40,"Odieresis\0Tcaron":-40,"Odieresis\0Tcommaaccent":-40,"Odieresis\0V":-50,"Odieresis\0W":-35,"Odieresis\0X":-40,"Odieresis\0Y":-50,"Odieresis\0Yacute":-50,"Odieresis\0Ydieresis":-50,"Ograve\0A":-35,"Ograve\0Aacute":-35,"Ograve\0Abreve":-35,"Ograve\0Acircumflex":-35,"Ograve\0Adieresis":-35,"Ograve\0Agrave":-35,"Ograve\0Amacron":-35,"Ograve\0Aogonek":-35,"Ograve\0Aring":-35,"Ograve\0Atilde":-35,"Ograve\0T":-40,"Ograve\0Tcaron":-40,"Ograve\0Tcommaaccent":-40,"Ograve\0V":-50,"Ograve\0W":-35,"Ograve\0X":-40,"Ograve\0Y":-50,"Ograve\0Yacute":-50,"Ograve\0Ydieresis":-50,"Ohungarumlaut\0A":-35,"Ohungarumlaut\0Aacute":-35,"Ohungarumlaut\0Abreve":-35,"Ohungarumlaut\0Acircumflex":-35,"Ohungarumlaut\0Adieresis":-35,"Ohungarumlaut\0Agrave":-35,"Ohungarumlaut\0Amacron":-35,"Ohungarumlaut\0Aogonek":-35,"Ohungarumlaut\0Aring":-35,"Ohungarumlaut\0Atilde":-35,"Ohungarumlaut\0T":-40,"Ohungarumlaut\0Tcaron":-40,"Ohungarumlaut\0Tcommaaccent":-40,"Ohungarumlaut\0V":-50,"Ohungarumlaut\0W":-35,"Ohungarumlaut\0X":-40,"Ohungarumlaut\0Y":-50,"Ohungarumlaut\0Yacute":-50,"Ohungarumlaut\0Ydieresis":-50,"Omacron\0A":-35,"Omacron\0Aacute":-35,"Omacron\0Abreve":-35,"Omacron\0Acircumflex":-35,"Omacron\0Adieresis":-35,"Omacron\0Agrave":-35,"Omacron\0Amacron":-35,"Omacron\0Aogonek":-35,"Omacron\0Aring":-35,"Omacron\0Atilde":-35,"Omacron\0T":-40,"Omacron\0Tcaron":-40,"Omacron\0Tcommaaccent":-40,"Omacron\0V":-50,"Omacron\0W":-35,"Omacron\0X":-40,"Omacron\0Y":-50,"Omacron\0Yacute":-50,"Omacron\0Ydieresis":-50,"Oslash\0A":-35,"Oslash\0Aacute":-35,"Oslash\0Abreve":-35,"Oslash\0Acircumflex":-35,"Oslash\0Adieresis":-35,"Oslash\0Agrave":-35,"Oslash\0Amacron":-35,"Oslash\0Aogonek":-35,"Oslash\0Aring":-35,"Oslash\0Atilde":-35,"Oslash\0T":-40,"Oslash\0Tcaron":-40,"Oslash\0Tcommaaccent":-40,"Oslash\0V":-50,"Oslash\0W":-35,"Oslash\0X":-40,"Oslash\0Y":-50,"Oslash\0Yacute":-50,"Oslash\0Ydieresis":-50,"Otilde\0A":-35,"Otilde\0Aacute":-35,"Otilde\0Abreve":-35,"Otilde\0Acircumflex":-35,"Otilde\0Adieresis":-35,"Otilde\0Agrave":-35,"Otilde\0Amacron":-35,"Otilde\0Aogonek":-35,"Otilde\0Aring":-35,"Otilde\0Atilde":-35,"Otilde\0T":-40,"Otilde\0Tcaron":-40,"Otilde\0Tcommaaccent":-40,"Otilde\0V":-50,"Otilde\0W":-35,"Otilde\0X":-40,"Otilde\0Y":-50,"Otilde\0Yacute":-50,"Otilde\0Ydieresis":-50,"P\0A":-92,"P\0Aacute":-92,"P\0Abreve":-92,"P\0Acircumflex":-92,"P\0Adieresis":-92,"P\0Agrave":-92,"P\0Amacron":-92,"P\0Aogonek":-92,"P\0Aring":-92,"P\0Atilde":-92,"P\0a":-15,"P\0aacute":-15,"P\0abreve":-15,"P\0acircumflex":-15,"P\0adieresis":-15,"P\0agrave":-15,"P\0amacron":-15,"P\0aogonek":-15,"P\0aring":-15,"P\0atilde":-15,"P\0comma":-111,"P\0period":-111,"Q\0U":-10,"Q\0Uacute":-10,"Q\0Ucircumflex":-10,"Q\0Udieresis":-10,"Q\0Ugrave":-10,"Q\0Uhungarumlaut":-10,"Q\0Umacron":-10,"Q\0Uogonek":-10,"Q\0Uring":-10,"R\0O":-40,"R\0Oacute":-40,"R\0Ocircumflex":-40,"R\0Odieresis":-40,"R\0Ograve":-40,"R\0Ohungarumlaut":-40,"R\0Omacron":-40,"R\0Oslash":-40,"R\0Otilde":-40,"R\0T":-60,"R\0Tcaron":-60,"R\0Tcommaaccent":-60,"R\0U":-40,"R\0Uacute":-40,"R\0Ucircumflex":-40,"R\0Udieresis":-40,"R\0Ugrave":-40,"R\0Uhungarumlaut":-40,"R\0Umacron":-40,"R\0Uogonek":-40,"R\0Uring":-40,"R\0V":-80,"R\0W":-55,"R\0Y":-65,"R\0Yacute":-65,"R\0Ydieresis":-65,"Racute\0O":-40,"Racute\0Oacute":-40,"Racute\0Ocircumflex":-40,"Racute\0Odieresis":-40,"Racute\0Ograve":-40,"Racute\0Ohungarumlaut":-40,"Racute\0Omacron":-40,"Racute\0Oslash":-40,"Racute\0Otilde":-40,"Racute\0T":-60,"Racute\0Tcaron":-60,"Racute\0Tcommaaccent":-60,"Racute\0U":-40,"Racute\0Uacute":-40,"Racute\0Ucircumflex":-40,"Racute\0Udieresis":-40,"Racute\0Ugrave":-40,"Racute\0Uhungarumlaut":-40,"Racute\0Umacron":-40,"Racute\0Uogonek":-40,"Racute\0Uring":-40,"Racute\0V":-80,"Racute\0W":-55,"Racute\0Y":-65,"Racute\0Yacute":-65,"Racute\0Ydieresis":-65,"Rcaron\0O":-40,"Rcaron\0Oacute":-40,"Rcaron\0Ocircumflex":-40,"Rcaron\0Odieresis":-40,"Rcaron\0Ograve":-40,"Rcaron\0Ohungarumlaut":-40,"Rcaron\0Omacron":-40,"Rcaron\0Oslash":-40,"Rcaron\0Otilde":-40,"Rcaron\0T":-60,"Rcaron\0Tcaron":-60,"Rcaron\0Tcommaaccent":-60,"Rcaron\0U":-40,"Rcaron\0Uacute":-40,"Rcaron\0Ucircumflex":-40,"Rcaron\0Udieresis":-40,"Rcaron\0Ugrave":-40,"Rcaron\0Uhungarumlaut":-40,"Rcaron\0Umacron":-40,"Rcaron\0Uogonek":-40,"Rcaron\0Uring":-40,"Rcaron\0V":-80,"Rcaron\0W":-55,"Rcaron\0Y":-65,"Rcaron\0Yacute":-65,"Rcaron\0Ydieresis":-65,"Rcommaaccent\0O":-40,"Rcommaaccent\0Oacute":-40,"Rcommaaccent\0Ocircumflex":-40,"Rcommaaccent\0Odieresis":-40,"Rcommaaccent\0Ograve":-40,"Rcommaaccent\0Ohungarumlaut":-40,"Rcommaaccent\0Omacron":-40,"Rcommaaccent\0Oslash":-40,"Rcommaaccent\0Otilde":-40,"Rcommaaccent\0T":-60,"Rcommaaccent\0Tcaron":-60,"Rcommaaccent\0Tcommaaccent":-60,"Rcommaaccent\0U":-40,"Rcommaaccent\0Uacute":-40,"Rcommaaccent\0Ucircumflex":-40,"Rcommaaccent\0Udieresis":-40,"Rcommaaccent\0Ugrave":-40,"Rcommaaccent\0Uhungarumlaut":-40,"Rcommaaccent\0Umacron":-40,"Rcommaaccent\0Uogonek":-40,"Rcommaaccent\0Uring":-40,"Rcommaaccent\0V":-80,"Rcommaaccent\0W":-55,"Rcommaaccent\0Y":-65,"Rcommaaccent\0Yacute":-65,"Rcommaaccent\0Ydieresis":-65,"T\0A":-93,"T\0Aacute":-93,"T\0Abreve":-93,"T\0Acircumflex":-93,"T\0Adieresis":-93,"T\0Agrave":-93,"T\0Amacron":-93,"T\0Aogonek":-93,"T\0Aring":-93,"T\0Atilde":-93,"T\0O":-18,"T\0Oacute":-18,"T\0Ocircumflex":-18,"T\0Odieresis":-18,"T\0Ograve":-18,"T\0Ohungarumlaut":-18,"T\0Omacron":-18,"T\0Oslash":-18,"T\0Otilde":-18,"T\0a":-80,"T\0aacute":-80,"T\0abreve":-80,"T\0acircumflex":-80,"T\0adieresis":-40,"T\0agrave":-40,"T\0amacron":-40,"T\0aogonek":-80,"T\0aring":-80,"T\0atilde":-40,"T\0colon":-50,"T\0comma":-74,"T\0e":-70,"T\0eacute":-70,"T\0ecaron":-70,"T\0ecircumflex":-70,"T\0edieresis":-30,"T\0edotaccent":-70,"T\0egrave":-70,"T\0emacron":-30,"T\0eogonek":-70,"T\0hyphen":-92,"T\0i":-35,"T\0iacute":-35,"T\0iogonek":-35,"T\0o":-80,"T\0oacute":-80,"T\0ocircumflex":-80,"T\0odieresis":-80,"T\0ograve":-80,"T\0ohungarumlaut":-80,"T\0omacron":-80,"T\0oslash":-80,"T\0otilde":-80,"T\0period":-74,"T\0r":-35,"T\0racute":-35,"T\0rcaron":-35,"T\0rcommaaccent":-35,"T\0semicolon":-55,"T\0u":-45,"T\0uacute":-45,"T\0ucircumflex":-45,"T\0udieresis":-45,"T\0ugrave":-45,"T\0uhungarumlaut":-45,"T\0umacron":-45,"T\0uogonek":-45,"T\0uring":-45,"T\0w":-80,"T\0y":-80,"T\0yacute":-80,"T\0ydieresis":-80,"Tcaron\0A":-93,"Tcaron\0Aacute":-93,"Tcaron\0Abreve":-93,"Tcaron\0Acircumflex":-93,"Tcaron\0Adieresis":-93,"Tcaron\0Agrave":-93,"Tcaron\0Amacron":-93,"Tcaron\0Aogonek":-93,"Tcaron\0Aring":-93,"Tcaron\0Atilde":-93,"Tcaron\0O":-18,"Tcaron\0Oacute":-18,"Tcaron\0Ocircumflex":-18,"Tcaron\0Odieresis":-18,"Tcaron\0Ograve":-18,"Tcaron\0Ohungarumlaut":-18,"Tcaron\0Omacron":-18,"Tcaron\0Oslash":-18,"Tcaron\0Otilde":-18,"Tcaron\0a":-80,"Tcaron\0aacute":-80,"Tcaron\0abreve":-80,"Tcaron\0acircumflex":-80,"Tcaron\0adieresis":-40,"Tcaron\0agrave":-40,"Tcaron\0amacron":-40,"Tcaron\0aogonek":-80,"Tcaron\0aring":-80,"Tcaron\0atilde":-40,"Tcaron\0colon":-50,"Tcaron\0comma":-74,"Tcaron\0e":-70,"Tcaron\0eacute":-70,"Tcaron\0ecaron":-70,"Tcaron\0ecircumflex":-30,"Tcaron\0edieresis":-30,"Tcaron\0edotaccent":-70,"Tcaron\0egrave":-70,"Tcaron\0emacron":-30,"Tcaron\0eogonek":-70,"Tcaron\0hyphen":-92,"Tcaron\0i":-35,"Tcaron\0iacute":-35,"Tcaron\0iogonek":-35,"Tcaron\0o":-80,"Tcaron\0oacute":-80,"Tcaron\0ocircumflex":-80,"Tcaron\0odieresis":-80,"Tcaron\0ograve":-80,"Tcaron\0ohungarumlaut":-80,"Tcaron\0omacron":-80,"Tcaron\0oslash":-80,"Tcaron\0otilde":-80,"Tcaron\0period":-74,"Tcaron\0r":-35,"Tcaron\0racute":-35,"Tcaron\0rcaron":-35,"Tcaron\0rcommaaccent":-35,"Tcaron\0semicolon":-55,"Tcaron\0u":-45,"Tcaron\0uacute":-45,"Tcaron\0ucircumflex":-45,"Tcaron\0udieresis":-45,"Tcaron\0ugrave":-45,"Tcaron\0uhungarumlaut":-45,"Tcaron\0umacron":-45,"Tcaron\0uogonek":-45,"Tcaron\0uring":-45,"Tcaron\0w":-80,"Tcaron\0y":-80,"Tcaron\0yacute":-80,"Tcaron\0ydieresis":-80,"Tcommaaccent\0A":-93,"Tcommaaccent\0Aacute":-93,"Tcommaaccent\0Abreve":-93,"Tcommaaccent\0Acircumflex":-93,"Tcommaaccent\0Adieresis":-93,"Tcommaaccent\0Agrave":-93,"Tcommaaccent\0Amacron":-93,"Tcommaaccent\0Aogonek":-93,"Tcommaaccent\0Aring":-93,"Tcommaaccent\0Atilde":-93,"Tcommaaccent\0O":-18,"Tcommaaccent\0Oacute":-18,"Tcommaaccent\0Ocircumflex":-18,"Tcommaaccent\0Odieresis":-18,"Tcommaaccent\0Ograve":-18,"Tcommaaccent\0Ohungarumlaut":-18,"Tcommaaccent\0Omacron":-18,"Tcommaaccent\0Oslash":-18,"Tcommaaccent\0Otilde":-18,"Tcommaaccent\0a":-80,"Tcommaaccent\0aacute":-80,"Tcommaaccent\0abreve":-80,"Tcommaaccent\0acircumflex":-80,"Tcommaaccent\0adieresis":-40,"Tcommaaccent\0agrave":-40,"Tcommaaccent\0amacron":-40,"Tcommaaccent\0aogonek":-80,"Tcommaaccent\0aring":-80,"Tcommaaccent\0atilde":-40,"Tcommaaccent\0colon":-50,"Tcommaaccent\0comma":-74,"Tcommaaccent\0e":-70,"Tcommaaccent\0eacute":-70,"Tcommaaccent\0ecaron":-70,"Tcommaaccent\0ecircumflex":-30,"Tcommaaccent\0edieresis":-30,"Tcommaaccent\0edotaccent":-70,"Tcommaaccent\0egrave":-30,"Tcommaaccent\0emacron":-70,"Tcommaaccent\0eogonek":-70,"Tcommaaccent\0hyphen":-92,"Tcommaaccent\0i":-35,"Tcommaaccent\0iacute":-35,"Tcommaaccent\0iogonek":-35,"Tcommaaccent\0o":-80,"Tcommaaccent\0oacute":-80,"Tcommaaccent\0ocircumflex":-80,"Tcommaaccent\0odieresis":-80,"Tcommaaccent\0ograve":-80,"Tcommaaccent\0ohungarumlaut":-80,"Tcommaaccent\0omacron":-80,"Tcommaaccent\0oslash":-80,"Tcommaaccent\0otilde":-80,"Tcommaaccent\0period":-74,"Tcommaaccent\0r":-35,"Tcommaaccent\0racute":-35,"Tcommaaccent\0rcaron":-35,"Tcommaaccent\0rcommaaccent":-35,"Tcommaaccent\0semicolon":-55,"Tcommaaccent\0u":-45,"Tcommaaccent\0uacute":-45,"Tcommaaccent\0ucircumflex":-45,"Tcommaaccent\0udieresis":-45,"Tcommaaccent\0ugrave":-45,"Tcommaaccent\0uhungarumlaut":-45,"Tcommaaccent\0umacron":-45,"Tcommaaccent\0uogonek":-45,"Tcommaaccent\0uring":-45,"Tcommaaccent\0w":-80,"Tcommaaccent\0y":-80,"Tcommaaccent\0yacute":-80,"Tcommaaccent\0ydieresis":-80,"U\0A":-40,"U\0Aacute":-40,"U\0Abreve":-40,"U\0Acircumflex":-40,"U\0Adieresis":-40,"U\0Agrave":-40,"U\0Amacron":-40,"U\0Aogonek":-40,"U\0Aring":-40,"U\0Atilde":-40,"Uacute\0A":-40,"Uacute\0Aacute":-40,"Uacute\0Abreve":-40,"Uacute\0Acircumflex":-40,"Uacute\0Adieresis":-40,"Uacute\0Agrave":-40,"Uacute\0Amacron":-40,"Uacute\0Aogonek":-40,"Uacute\0Aring":-40,"Uacute\0Atilde":-40,"Ucircumflex\0A":-40,"Ucircumflex\0Aacute":-40,"Ucircumflex\0Abreve":-40,"Ucircumflex\0Acircumflex":-40,"Ucircumflex\0Adieresis":-40,"Ucircumflex\0Agrave":-40,"Ucircumflex\0Amacron":-40,"Ucircumflex\0Aogonek":-40,"Ucircumflex\0Aring":-40,"Ucircumflex\0Atilde":-40,"Udieresis\0A":-40,"Udieresis\0Aacute":-40,"Udieresis\0Abreve":-40,"Udieresis\0Acircumflex":-40,"Udieresis\0Adieresis":-40,"Udieresis\0Agrave":-40,"Udieresis\0Amacron":-40,"Udieresis\0Aogonek":-40,"Udieresis\0Aring":-40,"Udieresis\0Atilde":-40,"Ugrave\0A":-40,"Ugrave\0Aacute":-40,"Ugrave\0Abreve":-40,"Ugrave\0Acircumflex":-40,"Ugrave\0Adieresis":-40,"Ugrave\0Agrave":-40,"Ugrave\0Amacron":-40,"Ugrave\0Aogonek":-40,"Ugrave\0Aring":-40,"Ugrave\0Atilde":-40,"Uhungarumlaut\0A":-40,"Uhungarumlaut\0Aacute":-40,"Uhungarumlaut\0Abreve":-40,"Uhungarumlaut\0Acircumflex":-40,"Uhungarumlaut\0Adieresis":-40,"Uhungarumlaut\0Agrave":-40,"Uhungarumlaut\0Amacron":-40,"Uhungarumlaut\0Aogonek":-40,"Uhungarumlaut\0Aring":-40,"Uhungarumlaut\0Atilde":-40,"Umacron\0A":-40,"Umacron\0Aacute":-40,"Umacron\0Abreve":-40,"Umacron\0Acircumflex":-40,"Umacron\0Adieresis":-40,"Umacron\0Agrave":-40,"Umacron\0Amacron":-40,"Umacron\0Aogonek":-40,"Umacron\0Aring":-40,"Umacron\0Atilde":-40,"Uogonek\0A":-40,"Uogonek\0Aacute":-40,"Uogonek\0Abreve":-40,"Uogonek\0Acircumflex":-40,"Uogonek\0Adieresis":-40,"Uogonek\0Agrave":-40,"Uogonek\0Amacron":-40,"Uogonek\0Aogonek":-40,"Uogonek\0Aring":-40,"Uogonek\0Atilde":-40,"Uring\0A":-40,"Uring\0Aacute":-40,"Uring\0Abreve":-40,"Uring\0Acircumflex":-40,"Uring\0Adieresis":-40,"Uring\0Agrave":-40,"Uring\0Amacron":-40,"Uring\0Aogonek":-40,"Uring\0Aring":-40,"Uring\0Atilde":-40,"V\0A":-135,"V\0Aacute":-135,"V\0Abreve":-135,"V\0Acircumflex":-135,"V\0Adieresis":-135,"V\0Agrave":-135,"V\0Amacron":-135,"V\0Aogonek":-135,"V\0Aring":-135,"V\0Atilde":-135,"V\0G":-15,"V\0Gbreve":-15,"V\0Gcommaaccent":-15,"V\0O":-40,"V\0Oacute":-40,"V\0Ocircumflex":-40,"V\0Odieresis":-40,"V\0Ograve":-40,"V\0Ohungarumlaut":-40,"V\0Omacron":-40,"V\0Oslash":-40,"V\0Otilde":-40,"V\0a":-111,"V\0aacute":-111,"V\0abreve":-111,"V\0acircumflex":-71,"V\0adieresis":-71,"V\0agrave":-71,"V\0amacron":-71,"V\0aogonek":-111,"V\0aring":-111,"V\0atilde":-71,"V\0colon":-74,"V\0comma":-129,"V\0e":-111,"V\0eacute":-111,"V\0ecaron":-71,"V\0ecircumflex":-71,"V\0edieresis":-71,"V\0edotaccent":-111,"V\0egrave":-71,"V\0emacron":-71,"V\0eogonek":-111,"V\0hyphen":-100,"V\0i":-60,"V\0iacute":-60,"V\0icircumflex":-20,"V\0idieresis":-20,"V\0igrave":-20,"V\0imacron":-20,"V\0iogonek":-60,"V\0o":-129,"V\0oacute":-129,"V\0ocircumflex":-129,"V\0odieresis":-89,"V\0ograve":-89,"V\0ohungarumlaut":-129,"V\0omacron":-89,"V\0oslash":-129,"V\0otilde":-89,"V\0period":-129,"V\0semicolon":-74,"V\0u":-75,"V\0uacute":-75,"V\0ucircumflex":-75,"V\0udieresis":-75,"V\0ugrave":-75,"V\0uhungarumlaut":-75,"V\0umacron":-75,"V\0uogonek":-75,"V\0uring":-75,"W\0A":-120,"W\0Aacute":-120,"W\0Abreve":-120,"W\0Acircumflex":-120,"W\0Adieresis":-120,"W\0Agrave":-120,"W\0Amacron":-120,"W\0Aogonek":-120,"W\0Aring":-120,"W\0Atilde":-120,"W\0O":-10,"W\0Oacute":-10,"W\0Ocircumflex":-10,"W\0Odieresis":-10,"W\0Ograve":-10,"W\0Ohungarumlaut":-10,"W\0Omacron":-10,"W\0Oslash":-10,"W\0Otilde":-10,"W\0a":-80,"W\0aacute":-80,"W\0abreve":-80,"W\0acircumflex":-80,"W\0adieresis":-80,"W\0agrave":-80,"W\0amacron":-80,"W\0aogonek":-80,"W\0aring":-80,"W\0atilde":-80,"W\0colon":-37,"W\0comma":-92,"W\0e":-80,"W\0eacute":-80,"W\0ecaron":-80,"W\0ecircumflex":-80,"W\0edieresis":-40,"W\0edotaccent":-80,"W\0egrave":-40,"W\0emacron":-40,"W\0eogonek":-80,"W\0hyphen":-65,"W\0i":-40,"W\0iacute":-40,"W\0iogonek":-40,"W\0o":-80,"W\0oacute":-80,"W\0ocircumflex":-80,"W\0odieresis":-80,"W\0ograve":-80,"W\0ohungarumlaut":-80,"W\0omacron":-80,"W\0oslash":-80,"W\0otilde":-80,"W\0period":-92,"W\0semicolon":-37,"W\0u":-50,"W\0uacute":-50,"W\0ucircumflex":-50,"W\0udieresis":-50,"W\0ugrave":-50,"W\0uhungarumlaut":-50,"W\0umacron":-50,"W\0uogonek":-50,"W\0uring":-50,"W\0y":-73,"W\0yacute":-73,"W\0ydieresis":-73,"Y\0A":-120,"Y\0Aacute":-120,"Y\0Abreve":-120,"Y\0Acircumflex":-120,"Y\0Adieresis":-120,"Y\0Agrave":-120,"Y\0Amacron":-120,"Y\0Aogonek":-120,"Y\0Aring":-120,"Y\0Atilde":-120,"Y\0O":-30,"Y\0Oacute":-30,"Y\0Ocircumflex":-30,"Y\0Odieresis":-30,"Y\0Ograve":-30,"Y\0Ohungarumlaut":-30,"Y\0Omacron":-30,"Y\0Oslash":-30,"Y\0Otilde":-30,"Y\0a":-100,"Y\0aacute":-100,"Y\0abreve":-100,"Y\0acircumflex":-100,"Y\0adieresis":-60,"Y\0agrave":-60,"Y\0amacron":-60,"Y\0aogonek":-100,"Y\0aring":-100,"Y\0atilde":-60,"Y\0colon":-92,"Y\0comma":-129,"Y\0e":-100,"Y\0eacute":-100,"Y\0ecaron":-100,"Y\0ecircumflex":-100,"Y\0edieresis":-60,"Y\0edotaccent":-100,"Y\0egrave":-60,"Y\0emacron":-60,"Y\0eogonek":-100,"Y\0hyphen":-111,"Y\0i":-55,"Y\0iacute":-55,"Y\0iogonek":-55,"Y\0o":-110,"Y\0oacute":-110,"Y\0ocircumflex":-110,"Y\0odieresis":-70,"Y\0ograve":-70,"Y\0ohungarumlaut":-110,"Y\0omacron":-70,"Y\0oslash":-110,"Y\0otilde":-70,"Y\0period":-129,"Y\0semicolon":-92,"Y\0u":-111,"Y\0uacute":-111,"Y\0ucircumflex":-111,"Y\0udieresis":-71,"Y\0ugrave":-71,"Y\0uhungarumlaut":-111,"Y\0umacron":-71,"Y\0uogonek":-111,"Y\0uring":-111,"Yacute\0A":-120,"Yacute\0Aacute":-120,"Yacute\0Abreve":-120,"Yacute\0Acircumflex":-120,"Yacute\0Adieresis":-120,"Yacute\0Agrave":-120,"Yacute\0Amacron":-120,"Yacute\0Aogonek":-120,"Yacute\0Aring":-120,"Yacute\0Atilde":-120,"Yacute\0O":-30,"Yacute\0Oacute":-30,"Yacute\0Ocircumflex":-30,"Yacute\0Odieresis":-30,"Yacute\0Ograve":-30,"Yacute\0Ohungarumlaut":-30,"Yacute\0Omacron":-30,"Yacute\0Oslash":-30,"Yacute\0Otilde":-30,"Yacute\0a":-100,"Yacute\0aacute":-100,"Yacute\0abreve":-100,"Yacute\0acircumflex":-100,"Yacute\0adieresis":-60,"Yacute\0agrave":-60,"Yacute\0amacron":-60,"Yacute\0aogonek":-100,"Yacute\0aring":-100,"Yacute\0atilde":-60,"Yacute\0colon":-92,"Yacute\0comma":-129,"Yacute\0e":-100,"Yacute\0eacute":-100,"Yacute\0ecaron":-100,"Yacute\0ecircumflex":-100,"Yacute\0edieresis":-60,"Yacute\0edotaccent":-100,"Yacute\0egrave":-60,"Yacute\0emacron":-60,"Yacute\0eogonek":-100,"Yacute\0hyphen":-111,"Yacute\0i":-55,"Yacute\0iacute":-55,"Yacute\0iogonek":-55,"Yacute\0o":-110,"Yacute\0oacute":-110,"Yacute\0ocircumflex":-110,"Yacute\0odieresis":-70,"Yacute\0ograve":-70,"Yacute\0ohungarumlaut":-110,"Yacute\0omacron":-70,"Yacute\0oslash":-110,"Yacute\0otilde":-70,"Yacute\0period":-129,"Yacute\0semicolon":-92,"Yacute\0u":-111,"Yacute\0uacute":-111,"Yacute\0ucircumflex":-111,"Yacute\0udieresis":-71,"Yacute\0ugrave":-71,"Yacute\0uhungarumlaut":-111,"Yacute\0umacron":-71,"Yacute\0uogonek":-111,"Yacute\0uring":-111,"Ydieresis\0A":-120,"Ydieresis\0Aacute":-120,"Ydieresis\0Abreve":-120,"Ydieresis\0Acircumflex":-120,"Ydieresis\0Adieresis":-120,"Ydieresis\0Agrave":-120,"Ydieresis\0Amacron":-120,"Ydieresis\0Aogonek":-120,"Ydieresis\0Aring":-120,"Ydieresis\0Atilde":-120,"Ydieresis\0O":-30,"Ydieresis\0Oacute":-30,"Ydieresis\0Ocircumflex":-30,"Ydieresis\0Odieresis":-30,"Ydieresis\0Ograve":-30,"Ydieresis\0Ohungarumlaut":-30,"Ydieresis\0Omacron":-30,"Ydieresis\0Oslash":-30,"Ydieresis\0Otilde":-30,"Ydieresis\0a":-100,"Ydieresis\0aacute":-100,"Ydieresis\0abreve":-100,"Ydieresis\0acircumflex":-100,"Ydieresis\0adieresis":-60,"Ydieresis\0agrave":-60,"Ydieresis\0amacron":-60,"Ydieresis\0aogonek":-100,"Ydieresis\0aring":-100,"Ydieresis\0atilde":-100,"Ydieresis\0colon":-92,"Ydieresis\0comma":-129,"Ydieresis\0e":-100,"Ydieresis\0eacute":-100,"Ydieresis\0ecaron":-100,"Ydieresis\0ecircumflex":-100,"Ydieresis\0edieresis":-60,"Ydieresis\0edotaccent":-100,"Ydieresis\0egrave":-60,"Ydieresis\0emacron":-60,"Ydieresis\0eogonek":-100,"Ydieresis\0hyphen":-111,"Ydieresis\0i":-55,"Ydieresis\0iacute":-55,"Ydieresis\0iogonek":-55,"Ydieresis\0o":-110,"Ydieresis\0oacute":-110,"Ydieresis\0ocircumflex":-110,"Ydieresis\0odieresis":-70,"Ydieresis\0ograve":-70,"Ydieresis\0ohungarumlaut":-110,"Ydieresis\0omacron":-70,"Ydieresis\0oslash":-110,"Ydieresis\0otilde":-70,"Ydieresis\0period":-129,"Ydieresis\0semicolon":-92,"Ydieresis\0u":-111,"Ydieresis\0uacute":-111,"Ydieresis\0ucircumflex":-111,"Ydieresis\0udieresis":-71,"Ydieresis\0ugrave":-71,"Ydieresis\0uhungarumlaut":-111,"Ydieresis\0umacron":-71,"Ydieresis\0uogonek":-111,"Ydieresis\0uring":-111,"a\0v":-20,"a\0w":-15,"aacute\0v":-20,"aacute\0w":-15,"abreve\0v":-20,"abreve\0w":-15,"acircumflex\0v":-20,"acircumflex\0w":-15,"adieresis\0v":-20,"adieresis\0w":-15,"agrave\0v":-20,"agrave\0w":-15,"amacron\0v":-20,"amacron\0w":-15,"aogonek\0v":-20,"aogonek\0w":-15,"aring\0v":-20,"aring\0w":-15,"atilde\0v":-20,"atilde\0w":-15,"b\0period":-40,"b\0u":-20,"b\0uacute":-20,"b\0ucircumflex":-20,"b\0udieresis":-20,"b\0ugrave":-20,"b\0uhungarumlaut":-20,"b\0umacron":-20,"b\0uogonek":-20,"b\0uring":-20,"b\0v":-15,"c\0y":-15,"c\0yacute":-15,"c\0ydieresis":-15,"cacute\0y":-15,"cacute\0yacute":-15,"cacute\0ydieresis":-15,"ccaron\0y":-15,"ccaron\0yacute":-15,"ccaron\0ydieresis":-15,"ccedilla\0y":-15,"ccedilla\0yacute":-15,"ccedilla\0ydieresis":-15,"comma\0quotedblright":-70,"comma\0quoteright":-70,"e\0g":-15,"e\0gbreve":-15,"e\0gcommaaccent":-15,"e\0v":-25,"e\0w":-25,"e\0x":-15,"e\0y":-15,"e\0yacute":-15,"e\0ydieresis":-15,"eacute\0g":-15,"eacute\0gbreve":-15,"eacute\0gcommaaccent":-15,"eacute\0v":-25,"eacute\0w":-25,"eacute\0x":-15,"eacute\0y":-15,"eacute\0yacute":-15,"eacute\0ydieresis":-15,"ecaron\0g":-15,"ecaron\0gbreve":-15,"ecaron\0gcommaaccent":-15,"ecaron\0v":-25,"ecaron\0w":-25,"ecaron\0x":-15,"ecaron\0y":-15,"ecaron\0yacute":-15,"ecaron\0ydieresis":-15,"ecircumflex\0g":-15,"ecircumflex\0gbreve":-15,"ecircumflex\0gcommaaccent":-15,"ecircumflex\0v":-25,"ecircumflex\0w":-25,"ecircumflex\0x":-15,"ecircumflex\0y":-15,"ecircumflex\0yacute":-15,"ecircumflex\0ydieresis":-15,"edieresis\0g":-15,"edieresis\0gbreve":-15,"edieresis\0gcommaaccent":-15,"edieresis\0v":-25,"edieresis\0w":-25,"edieresis\0x":-15,"edieresis\0y":-15,"edieresis\0yacute":-15,"edieresis\0ydieresis":-15,"edotaccent\0g":-15,"edotaccent\0gbreve":-15,"edotaccent\0gcommaaccent":-15,"edotaccent\0v":-25,"edotaccent\0w":-25,"edotaccent\0x":-15,"edotaccent\0y":-15,"edotaccent\0yacute":-15,"edotaccent\0ydieresis":-15,"egrave\0g":-15,"egrave\0gbreve":-15,"egrave\0gcommaaccent":-15,"egrave\0v":-25,"egrave\0w":-25,"egrave\0x":-15,"egrave\0y":-15,"egrave\0yacute":-15,"egrave\0ydieresis":-15,"emacron\0g":-15,"emacron\0gbreve":-15,"emacron\0gcommaaccent":-15,"emacron\0v":-25,"emacron\0w":-25,"emacron\0x":-15,"emacron\0y":-15,"emacron\0yacute":-15,"emacron\0ydieresis":-15,"eogonek\0g":-15,"eogonek\0gbreve":-15,"eogonek\0gcommaaccent":-15,"eogonek\0v":-25,"eogonek\0w":-25,"eogonek\0x":-15,"eogonek\0y":-15,"eogonek\0yacute":-15,"eogonek\0ydieresis":-15,"f\0a":-10,"f\0aacute":-10,"f\0abreve":-10,"f\0acircumflex":-10,"f\0adieresis":-10,"f\0agrave":-10,"f\0amacron":-10,"f\0aogonek":-10,"f\0aring":-10,"f\0atilde":-10,"f\0dotlessi":-50,"f\0f":-25,"f\0i":-20,"f\0iacute":-20,"f\0quoteright":55,"g\0a":-5,"g\0aacute":-5,"g\0abreve":-5,"g\0acircumflex":-5,"g\0adieresis":-5,"g\0agrave":-5,"g\0amacron":-5,"g\0aogonek":-5,"g\0aring":-5,"g\0atilde":-5,"gbreve\0a":-5,"gbreve\0aacute":-5,"gbreve\0abreve":-5,"gbreve\0acircumflex":-5,"gbreve\0adieresis":-5,"gbreve\0agrave":-5,"gbreve\0amacron":-5,"gbreve\0aogonek":-5,"gbreve\0aring":-5,"gbreve\0atilde":-5,"gcommaaccent\0a":-5,"gcommaaccent\0aacute":-5,"gcommaaccent\0abreve":-5,"gcommaaccent\0acircumflex":-5,"gcommaaccent\0adieresis":-5,"gcommaaccent\0agrave":-5,"gcommaaccent\0amacron":-5,"gcommaaccent\0aogonek":-5,"gcommaaccent\0aring":-5,"gcommaaccent\0atilde":-5,"h\0y":-5,"h\0yacute":-5,"h\0ydieresis":-5,"i\0v":-25,"iacute\0v":-25,"icircumflex\0v":-25,"idieresis\0v":-25,"igrave\0v":-25,"imacron\0v":-25,"iogonek\0v":-25,"k\0e":-10,"k\0eacute":-10,"k\0ecaron":-10,"k\0ecircumflex":-10,"k\0edieresis":-10,"k\0edotaccent":-10,"k\0egrave":-10,"k\0emacron":-10,"k\0eogonek":-10,"k\0o":-10,"k\0oacute":-10,"k\0ocircumflex":-10,"k\0odieresis":-10,"k\0ograve":-10,"k\0ohungarumlaut":-10,"k\0omacron":-10,"k\0oslash":-10,"k\0otilde":-10,"k\0y":-15,"k\0yacute":-15,"k\0ydieresis":-15,"kcommaaccent\0e":-10,"kcommaaccent\0eacute":-10,"kcommaaccent\0ecaron":-10,"kcommaaccent\0ecircumflex":-10,"kcommaaccent\0edieresis":-10,"kcommaaccent\0edotaccent":-10,"kcommaaccent\0egrave":-10,"kcommaaccent\0emacron":-10,"kcommaaccent\0eogonek":-10,"kcommaaccent\0o":-10,"kcommaaccent\0oacute":-10,"kcommaaccent\0ocircumflex":-10,"kcommaaccent\0odieresis":-10,"kcommaaccent\0ograve":-10,"kcommaaccent\0ohungarumlaut":-10,"kcommaaccent\0omacron":-10,"kcommaaccent\0oslash":-10,"kcommaaccent\0otilde":-10,"kcommaaccent\0y":-15,"kcommaaccent\0yacute":-15,"kcommaaccent\0ydieresis":-15,"l\0w":-10,"lacute\0w":-10,"lcommaaccent\0w":-10,"lslash\0w":-10,"n\0v":-40,"n\0y":-15,"n\0yacute":-15,"n\0ydieresis":-15,"nacute\0v":-40,"nacute\0y":-15,"nacute\0yacute":-15,"nacute\0ydieresis":-15,"ncaron\0v":-40,"ncaron\0y":-15,"ncaron\0yacute":-15,"ncaron\0ydieresis":-15,"ncommaaccent\0v":-40,"ncommaaccent\0y":-15,"ncommaaccent\0yacute":-15,"ncommaaccent\0ydieresis":-15,"ntilde\0v":-40,"ntilde\0y":-15,"ntilde\0yacute":-15,"ntilde\0ydieresis":-15,"o\0v":-15,"o\0w":-25,"o\0y":-10,"o\0yacute":-10,"o\0ydieresis":-10,"oacute\0v":-15,"oacute\0w":-25,"oacute\0y":-10,"oacute\0yacute":-10,"oacute\0ydieresis":-10,"ocircumflex\0v":-15,"ocircumflex\0w":-25,"ocircumflex\0y":-10,"ocircumflex\0yacute":-10,"ocircumflex\0ydieresis":-10,"odieresis\0v":-15,"odieresis\0w":-25,"odieresis\0y":-10,"odieresis\0yacute":-10,"odieresis\0ydieresis":-10,"ograve\0v":-15,"ograve\0w":-25,"ograve\0y":-10,"ograve\0yacute":-10,"ograve\0ydieresis":-10,"ohungarumlaut\0v":-15,"ohungarumlaut\0w":-25,"ohungarumlaut\0y":-10,"ohungarumlaut\0yacute":-10,"ohungarumlaut\0ydieresis":-10,"omacron\0v":-15,"omacron\0w":-25,"omacron\0y":-10,"omacron\0yacute":-10,"omacron\0ydieresis":-10,"oslash\0v":-15,"oslash\0w":-25,"oslash\0y":-10,"oslash\0yacute":-10,"oslash\0ydieresis":-10,"otilde\0v":-15,"otilde\0w":-25,"otilde\0y":-10,"otilde\0yacute":-10,"otilde\0ydieresis":-10,"p\0y":-10,"p\0yacute":-10,"p\0ydieresis":-10,"period\0quotedblright":-70,"period\0quoteright":-70,"quotedblleft\0A":-80,"quotedblleft\0Aacute":-80,"quotedblleft\0Abreve":-80,"quotedblleft\0Acircumflex":-80,"quotedblleft\0Adieresis":-80,"quotedblleft\0Agrave":-80,"quotedblleft\0Amacron":-80,"quotedblleft\0Aogonek":-80,"quotedblleft\0Aring":-80,"quotedblleft\0Atilde":-80,"quoteleft\0A":-80,"quoteleft\0Aacute":-80,"quoteleft\0Abreve":-80,"quoteleft\0Acircumflex":-80,"quoteleft\0Adieresis":-80,"quoteleft\0Agrave":-80,"quoteleft\0Amacron":-80,"quoteleft\0Aogonek":-80,"quoteleft\0Aring":-80,"quoteleft\0Atilde":-80,"quoteleft\0quoteleft":-74,"quoteright\0d":-50,"quoteright\0dcroat":-50,"quoteright\0l":-10,"quoteright\0lacute":-10,"quoteright\0lcommaaccent":-10,"quoteright\0lslash":-10,"quoteright\0quoteright":-74,"quoteright\0r":-50,"quoteright\0racute":-50,"quoteright\0rcaron":-50,"quoteright\0rcommaaccent":-50,"quoteright\0s":-55,"quoteright\0sacute":-55,"quoteright\0scaron":-55,"quoteright\0scedilla":-55,"quoteright\0scommaaccent":-55,"quoteright\0space":-74,"quoteright\0t":-18,"quoteright\0tcommaaccent":-18,"quoteright\0v":-50,"r\0comma":-40,"r\0g":-18,"r\0gbreve":-18,"r\0gcommaaccent":-18,"r\0hyphen":-20,"r\0period":-55,"racute\0comma":-40,"racute\0g":-18,"racute\0gbreve":-18,"racute\0gcommaaccent":-18,"racute\0hyphen":-20,"racute\0period":-55,"rcaron\0comma":-40,"rcaron\0g":-18,"rcaron\0gbreve":-18,"rcaron\0gcommaaccent":-18,"rcaron\0hyphen":-20,"rcaron\0period":-55,"rcommaaccent\0comma":-40,"rcommaaccent\0g":-18,"rcommaaccent\0gbreve":-18,"rcommaaccent\0gcommaaccent":-18,"rcommaaccent\0hyphen":-20,"rcommaaccent\0period":-55,"space\0A":-55,"space\0Aacute":-55,"space\0Abreve":-55,"space\0Acircumflex":-55,"space\0Adieresis":-55,"space\0Agrave":-55,"space\0Amacron":-55,"space\0Aogonek":-55,"space\0Aring":-55,"space\0Atilde":-55,"space\0T":-18,"space\0Tcaron":-18,"space\0Tcommaaccent":-18,"space\0V":-50,"space\0W":-30,"space\0Y":-90,"space\0Yacute":-90,"space\0Ydieresis":-90,"v\0a":-25,"v\0aacute":-25,"v\0abreve":-25,"v\0acircumflex":-25,"v\0adieresis":-25,"v\0agrave":-25,"v\0amacron":-25,"v\0aogonek":-25,"v\0aring":-25,"v\0atilde":-25,"v\0comma":-65,"v\0e":-15,"v\0eacute":-15,"v\0ecaron":-15,"v\0ecircumflex":-15,"v\0edieresis":-15,"v\0edotaccent":-15,"v\0egrave":-15,"v\0emacron":-15,"v\0eogonek":-15,"v\0o":-20,"v\0oacute":-20,"v\0ocircumflex":-20,"v\0odieresis":-20,"v\0ograve":-20,"v\0ohungarumlaut":-20,"v\0omacron":-20,"v\0oslash":-20,"v\0otilde":-20,"v\0period":-65,"w\0a":-10,"w\0aacute":-10,"w\0abreve":-10,"w\0acircumflex":-10,"w\0adieresis":-10,"w\0agrave":-10,"w\0amacron":-10,"w\0aogonek":-10,"w\0aring":-10,"w\0atilde":-10,"w\0comma":-65,"w\0o":-10,"w\0oacute":-10,"w\0ocircumflex":-10,"w\0odieresis":-10,"w\0ograve":-10,"w\0ohungarumlaut":-10,"w\0omacron":-10,"w\0oslash":-10,"w\0otilde":-10,"w\0period":-65,"x\0e":-15,"x\0eacute":-15,"x\0ecaron":-15,"x\0ecircumflex":-15,"x\0edieresis":-15,"x\0edotaccent":-15,"x\0egrave":-15,"x\0emacron":-15,"x\0eogonek":-15,"y\0comma":-65,"y\0period":-65,"yacute\0comma":-65,"yacute\0period":-65,"ydieresis\0comma":-65,"ydieresis\0period":-65}},"Times-Bold":{attributes:{Comment:["Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated.  All Rights Reserved.","Creation Date: Thu May  1 12:52:56 1997","UniqueID 43065","VMusage 41636 52661"],FontName:"Times-Bold",FullName:"Times Bold",FamilyName:"Times",Weight:"Bold",ItalicAngle:"0",IsFixedPitch:"false",CharacterSet:"ExtendedRoman",FontBBox:"-168 -218 1000 935 ",UnderlinePosition:"-100",UnderlineThickness:"50",Version:"002.000",Notice:"Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated.  All Rights Reserved.Times is a trademark of Linotype-Hell AG and/or its subsidiaries.",EncodingScheme:"AdobeStandardEncoding",CapHeight:"676",XHeight:"461",Ascender:"683",Descender:"-217",StdHW:"44",StdVW:"139"},glyphWidths:{space:250,exclam:333,quotedbl:555,numbersign:500,dollar:500,percent:1e3,ampersand:833,quoteright:333,parenleft:333,parenright:333,asterisk:500,plus:570,comma:250,hyphen:333,period:250,slash:278,zero:500,one:500,two:500,three:500,four:500,five:500,six:500,seven:500,eight:500,nine:500,colon:333,semicolon:333,less:570,equal:570,greater:570,question:500,at:930,A:722,B:667,C:722,D:722,E:667,F:611,G:778,H:778,I:389,J:500,K:778,L:667,M:944,N:722,O:778,P:611,Q:778,R:722,S:556,T:667,U:722,V:722,W:1e3,X:722,Y:722,Z:667,bracketleft:333,backslash:278,bracketright:333,asciicircum:581,underscore:500,quoteleft:333,a:500,b:556,c:444,d:556,e:444,f:333,g:500,h:556,i:278,j:333,k:556,l:278,m:833,n:556,o:500,p:556,q:556,r:444,s:389,t:333,u:556,v:500,w:722,x:500,y:500,z:444,braceleft:394,bar:220,braceright:394,asciitilde:520,exclamdown:333,cent:500,sterling:500,fraction:167,yen:500,florin:500,section:500,currency:500,quotesingle:278,quotedblleft:500,guillemotleft:500,guilsinglleft:333,guilsinglright:333,fi:556,fl:556,endash:500,dagger:500,daggerdbl:500,periodcentered:250,paragraph:540,bullet:350,quotesinglbase:333,quotedblbase:500,quotedblright:500,guillemotright:500,ellipsis:1e3,perthousand:1e3,questiondown:500,grave:333,acute:333,circumflex:333,tilde:333,macron:333,breve:333,dotaccent:333,dieresis:333,ring:333,cedilla:333,hungarumlaut:333,ogonek:333,caron:333,emdash:1e3,AE:1e3,ordfeminine:300,Lslash:667,Oslash:778,OE:1e3,ordmasculine:330,ae:722,dotlessi:278,lslash:278,oslash:500,oe:722,germandbls:556,Idieresis:389,eacute:444,abreve:500,uhungarumlaut:556,ecaron:444,Ydieresis:722,divide:570,Yacute:722,Acircumflex:722,aacute:500,Ucircumflex:722,yacute:500,scommaaccent:389,ecircumflex:444,Uring:722,Udieresis:722,aogonek:500,Uacute:722,uogonek:556,Edieresis:667,Dcroat:722,commaaccent:250,copyright:747,Emacron:667,ccaron:444,aring:500,Ncommaaccent:722,lacute:278,agrave:500,Tcommaaccent:667,Cacute:722,atilde:500,Edotaccent:667,scaron:389,scedilla:389,iacute:278,lozenge:494,Rcaron:722,Gcommaaccent:778,ucircumflex:556,acircumflex:500,Amacron:722,rcaron:444,ccedilla:444,Zdotaccent:667,Thorn:611,Omacron:778,Racute:722,Sacute:556,dcaron:672,Umacron:722,uring:556,threesuperior:300,Ograve:778,Agrave:722,Abreve:722,multiply:570,uacute:556,Tcaron:667,partialdiff:494,ydieresis:500,Nacute:722,icircumflex:278,Ecircumflex:667,adieresis:500,edieresis:444,cacute:444,nacute:556,umacron:556,Ncaron:722,Iacute:389,plusminus:570,brokenbar:220,registered:747,Gbreve:778,Idotaccent:389,summation:600,Egrave:667,racute:444,omacron:500,Zacute:667,Zcaron:667,greaterequal:549,Eth:722,Ccedilla:722,lcommaaccent:278,tcaron:416,eogonek:444,Uogonek:722,Aacute:722,Adieresis:722,egrave:444,zacute:444,iogonek:278,Oacute:778,oacute:500,amacron:500,sacute:389,idieresis:278,Ocircumflex:778,Ugrave:722,Delta:612,thorn:556,twosuperior:300,Odieresis:778,mu:556,igrave:278,ohungarumlaut:500,Eogonek:667,dcroat:556,threequarters:750,Scedilla:556,lcaron:394,Kcommaaccent:778,Lacute:667,trademark:1e3,edotaccent:444,Igrave:389,Imacron:389,Lcaron:667,onehalf:750,lessequal:549,ocircumflex:500,ntilde:556,Uhungarumlaut:722,Eacute:667,emacron:444,gbreve:500,onequarter:750,Scaron:556,Scommaaccent:556,Ohungarumlaut:778,degree:400,ograve:500,Ccaron:722,ugrave:556,radical:549,Dcaron:722,rcommaaccent:444,Ntilde:722,otilde:500,Rcommaaccent:722,Lcommaaccent:667,Atilde:722,Aogonek:722,Aring:722,Otilde:778,zdotaccent:444,Ecaron:667,Iogonek:389,kcommaaccent:556,minus:570,Icircumflex:389,ncaron:556,tcommaaccent:333,logicalnot:570,odieresis:500,udieresis:556,notequal:549,gcommaaccent:500,eth:500,zcaron:444,ncommaaccent:556,onesuperior:300,imacron:278,Euro:500},kernPairs:{"A\0C":-55,"A\0Cacute":-55,"A\0Ccaron":-55,"A\0Ccedilla":-55,"A\0G":-55,"A\0Gbreve":-55,"A\0Gcommaaccent":-55,"A\0O":-45,"A\0Oacute":-45,"A\0Ocircumflex":-45,"A\0Odieresis":-45,"A\0Ograve":-45,"A\0Ohungarumlaut":-45,"A\0Omacron":-45,"A\0Oslash":-45,"A\0Otilde":-45,"A\0Q":-45,"A\0T":-95,"A\0Tcaron":-95,"A\0Tcommaaccent":-95,"A\0U":-50,"A\0Uacute":-50,"A\0Ucircumflex":-50,"A\0Udieresis":-50,"A\0Ugrave":-50,"A\0Uhungarumlaut":-50,"A\0Umacron":-50,"A\0Uogonek":-50,"A\0Uring":-50,"A\0V":-145,"A\0W":-130,"A\0Y":-100,"A\0Yacute":-100,"A\0Ydieresis":-100,"A\0p":-25,"A\0quoteright":-74,"A\0u":-50,"A\0uacute":-50,"A\0ucircumflex":-50,"A\0udieresis":-50,"A\0ugrave":-50,"A\0uhungarumlaut":-50,"A\0umacron":-50,"A\0uogonek":-50,"A\0uring":-50,"A\0v":-100,"A\0w":-90,"A\0y":-74,"A\0yacute":-74,"A\0ydieresis":-74,"Aacute\0C":-55,"Aacute\0Cacute":-55,"Aacute\0Ccaron":-55,"Aacute\0Ccedilla":-55,"Aacute\0G":-55,"Aacute\0Gbreve":-55,"Aacute\0Gcommaaccent":-55,"Aacute\0O":-45,"Aacute\0Oacute":-45,"Aacute\0Ocircumflex":-45,"Aacute\0Odieresis":-45,"Aacute\0Ograve":-45,"Aacute\0Ohungarumlaut":-45,"Aacute\0Omacron":-45,"Aacute\0Oslash":-45,"Aacute\0Otilde":-45,"Aacute\0Q":-45,"Aacute\0T":-95,"Aacute\0Tcaron":-95,"Aacute\0Tcommaaccent":-95,"Aacute\0U":-50,"Aacute\0Uacute":-50,"Aacute\0Ucircumflex":-50,"Aacute\0Udieresis":-50,"Aacute\0Ugrave":-50,"Aacute\0Uhungarumlaut":-50,"Aacute\0Umacron":-50,"Aacute\0Uogonek":-50,"Aacute\0Uring":-50,"Aacute\0V":-145,"Aacute\0W":-130,"Aacute\0Y":-100,"Aacute\0Yacute":-100,"Aacute\0Ydieresis":-100,"Aacute\0p":-25,"Aacute\0quoteright":-74,"Aacute\0u":-50,"Aacute\0uacute":-50,"Aacute\0ucircumflex":-50,"Aacute\0udieresis":-50,"Aacute\0ugrave":-50,"Aacute\0uhungarumlaut":-50,"Aacute\0umacron":-50,"Aacute\0uogonek":-50,"Aacute\0uring":-50,"Aacute\0v":-100,"Aacute\0w":-90,"Aacute\0y":-74,"Aacute\0yacute":-74,"Aacute\0ydieresis":-74,"Abreve\0C":-55,"Abreve\0Cacute":-55,"Abreve\0Ccaron":-55,"Abreve\0Ccedilla":-55,"Abreve\0G":-55,"Abreve\0Gbreve":-55,"Abreve\0Gcommaaccent":-55,"Abreve\0O":-45,"Abreve\0Oacute":-45,"Abreve\0Ocircumflex":-45,"Abreve\0Odieresis":-45,"Abreve\0Ograve":-45,"Abreve\0Ohungarumlaut":-45,"Abreve\0Omacron":-45,"Abreve\0Oslash":-45,"Abreve\0Otilde":-45,"Abreve\0Q":-45,"Abreve\0T":-95,"Abreve\0Tcaron":-95,"Abreve\0Tcommaaccent":-95,"Abreve\0U":-50,"Abreve\0Uacute":-50,"Abreve\0Ucircumflex":-50,"Abreve\0Udieresis":-50,"Abreve\0Ugrave":-50,"Abreve\0Uhungarumlaut":-50,"Abreve\0Umacron":-50,"Abreve\0Uogonek":-50,"Abreve\0Uring":-50,"Abreve\0V":-145,"Abreve\0W":-130,"Abreve\0Y":-100,"Abreve\0Yacute":-100,"Abreve\0Ydieresis":-100,"Abreve\0p":-25,"Abreve\0quoteright":-74,"Abreve\0u":-50,"Abreve\0uacute":-50,"Abreve\0ucircumflex":-50,"Abreve\0udieresis":-50,"Abreve\0ugrave":-50,"Abreve\0uhungarumlaut":-50,"Abreve\0umacron":-50,"Abreve\0uogonek":-50,"Abreve\0uring":-50,"Abreve\0v":-100,"Abreve\0w":-90,"Abreve\0y":-74,"Abreve\0yacute":-74,"Abreve\0ydieresis":-74,"Acircumflex\0C":-55,"Acircumflex\0Cacute":-55,"Acircumflex\0Ccaron":-55,"Acircumflex\0Ccedilla":-55,"Acircumflex\0G":-55,"Acircumflex\0Gbreve":-55,"Acircumflex\0Gcommaaccent":-55,"Acircumflex\0O":-45,"Acircumflex\0Oacute":-45,"Acircumflex\0Ocircumflex":-45,"Acircumflex\0Odieresis":-45,"Acircumflex\0Ograve":-45,"Acircumflex\0Ohungarumlaut":-45,"Acircumflex\0Omacron":-45,"Acircumflex\0Oslash":-45,"Acircumflex\0Otilde":-45,"Acircumflex\0Q":-45,"Acircumflex\0T":-95,"Acircumflex\0Tcaron":-95,"Acircumflex\0Tcommaaccent":-95,"Acircumflex\0U":-50,"Acircumflex\0Uacute":-50,"Acircumflex\0Ucircumflex":-50,"Acircumflex\0Udieresis":-50,"Acircumflex\0Ugrave":-50,"Acircumflex\0Uhungarumlaut":-50,"Acircumflex\0Umacron":-50,"Acircumflex\0Uogonek":-50,"Acircumflex\0Uring":-50,"Acircumflex\0V":-145,"Acircumflex\0W":-130,"Acircumflex\0Y":-100,"Acircumflex\0Yacute":-100,"Acircumflex\0Ydieresis":-100,"Acircumflex\0p":-25,"Acircumflex\0quoteright":-74,"Acircumflex\0u":-50,"Acircumflex\0uacute":-50,"Acircumflex\0ucircumflex":-50,"Acircumflex\0udieresis":-50,"Acircumflex\0ugrave":-50,"Acircumflex\0uhungarumlaut":-50,"Acircumflex\0umacron":-50,"Acircumflex\0uogonek":-50,"Acircumflex\0uring":-50,"Acircumflex\0v":-100,"Acircumflex\0w":-90,"Acircumflex\0y":-74,"Acircumflex\0yacute":-74,"Acircumflex\0ydieresis":-74,"Adieresis\0C":-55,"Adieresis\0Cacute":-55,"Adieresis\0Ccaron":-55,"Adieresis\0Ccedilla":-55,"Adieresis\0G":-55,"Adieresis\0Gbreve":-55,"Adieresis\0Gcommaaccent":-55,"Adieresis\0O":-45,"Adieresis\0Oacute":-45,"Adieresis\0Ocircumflex":-45,"Adieresis\0Odieresis":-45,"Adieresis\0Ograve":-45,"Adieresis\0Ohungarumlaut":-45,"Adieresis\0Omacron":-45,"Adieresis\0Oslash":-45,"Adieresis\0Otilde":-45,"Adieresis\0Q":-45,"Adieresis\0T":-95,"Adieresis\0Tcaron":-95,"Adieresis\0Tcommaaccent":-95,"Adieresis\0U":-50,"Adieresis\0Uacute":-50,"Adieresis\0Ucircumflex":-50,"Adieresis\0Udieresis":-50,"Adieresis\0Ugrave":-50,"Adieresis\0Uhungarumlaut":-50,"Adieresis\0Umacron":-50,"Adieresis\0Uogonek":-50,"Adieresis\0Uring":-50,"Adieresis\0V":-145,"Adieresis\0W":-130,"Adieresis\0Y":-100,"Adieresis\0Yacute":-100,"Adieresis\0Ydieresis":-100,"Adieresis\0p":-25,"Adieresis\0quoteright":-74,"Adieresis\0u":-50,"Adieresis\0uacute":-50,"Adieresis\0ucircumflex":-50,"Adieresis\0udieresis":-50,"Adieresis\0ugrave":-50,"Adieresis\0uhungarumlaut":-50,"Adieresis\0umacron":-50,"Adieresis\0uogonek":-50,"Adieresis\0uring":-50,"Adieresis\0v":-100,"Adieresis\0w":-90,"Adieresis\0y":-74,"Adieresis\0yacute":-74,"Adieresis\0ydieresis":-74,"Agrave\0C":-55,"Agrave\0Cacute":-55,"Agrave\0Ccaron":-55,"Agrave\0Ccedilla":-55,"Agrave\0G":-55,"Agrave\0Gbreve":-55,"Agrave\0Gcommaaccent":-55,"Agrave\0O":-45,"Agrave\0Oacute":-45,"Agrave\0Ocircumflex":-45,"Agrave\0Odieresis":-45,"Agrave\0Ograve":-45,"Agrave\0Ohungarumlaut":-45,"Agrave\0Omacron":-45,"Agrave\0Oslash":-45,"Agrave\0Otilde":-45,"Agrave\0Q":-45,"Agrave\0T":-95,"Agrave\0Tcaron":-95,"Agrave\0Tcommaaccent":-95,"Agrave\0U":-50,"Agrave\0Uacute":-50,"Agrave\0Ucircumflex":-50,"Agrave\0Udieresis":-50,"Agrave\0Ugrave":-50,"Agrave\0Uhungarumlaut":-50,"Agrave\0Umacron":-50,"Agrave\0Uogonek":-50,"Agrave\0Uring":-50,"Agrave\0V":-145,"Agrave\0W":-130,"Agrave\0Y":-100,"Agrave\0Yacute":-100,"Agrave\0Ydieresis":-100,"Agrave\0p":-25,"Agrave\0quoteright":-74,"Agrave\0u":-50,"Agrave\0uacute":-50,"Agrave\0ucircumflex":-50,"Agrave\0udieresis":-50,"Agrave\0ugrave":-50,"Agrave\0uhungarumlaut":-50,"Agrave\0umacron":-50,"Agrave\0uogonek":-50,"Agrave\0uring":-50,"Agrave\0v":-100,"Agrave\0w":-90,"Agrave\0y":-74,"Agrave\0yacute":-74,"Agrave\0ydieresis":-74,"Amacron\0C":-55,"Amacron\0Cacute":-55,"Amacron\0Ccaron":-55,"Amacron\0Ccedilla":-55,"Amacron\0G":-55,"Amacron\0Gbreve":-55,"Amacron\0Gcommaaccent":-55,"Amacron\0O":-45,"Amacron\0Oacute":-45,"Amacron\0Ocircumflex":-45,"Amacron\0Odieresis":-45,"Amacron\0Ograve":-45,"Amacron\0Ohungarumlaut":-45,"Amacron\0Omacron":-45,"Amacron\0Oslash":-45,"Amacron\0Otilde":-45,"Amacron\0Q":-45,"Amacron\0T":-95,"Amacron\0Tcaron":-95,"Amacron\0Tcommaaccent":-95,"Amacron\0U":-50,"Amacron\0Uacute":-50,"Amacron\0Ucircumflex":-50,"Amacron\0Udieresis":-50,"Amacron\0Ugrave":-50,"Amacron\0Uhungarumlaut":-50,"Amacron\0Umacron":-50,"Amacron\0Uogonek":-50,"Amacron\0Uring":-50,"Amacron\0V":-145,"Amacron\0W":-130,"Amacron\0Y":-100,"Amacron\0Yacute":-100,"Amacron\0Ydieresis":-100,"Amacron\0p":-25,"Amacron\0quoteright":-74,"Amacron\0u":-50,"Amacron\0uacute":-50,"Amacron\0ucircumflex":-50,"Amacron\0udieresis":-50,"Amacron\0ugrave":-50,"Amacron\0uhungarumlaut":-50,"Amacron\0umacron":-50,"Amacron\0uogonek":-50,"Amacron\0uring":-50,"Amacron\0v":-100,"Amacron\0w":-90,"Amacron\0y":-74,"Amacron\0yacute":-74,"Amacron\0ydieresis":-74,"Aogonek\0C":-55,"Aogonek\0Cacute":-55,"Aogonek\0Ccaron":-55,"Aogonek\0Ccedilla":-55,"Aogonek\0G":-55,"Aogonek\0Gbreve":-55,"Aogonek\0Gcommaaccent":-55,"Aogonek\0O":-45,"Aogonek\0Oacute":-45,"Aogonek\0Ocircumflex":-45,"Aogonek\0Odieresis":-45,"Aogonek\0Ograve":-45,"Aogonek\0Ohungarumlaut":-45,"Aogonek\0Omacron":-45,"Aogonek\0Oslash":-45,"Aogonek\0Otilde":-45,"Aogonek\0Q":-45,"Aogonek\0T":-95,"Aogonek\0Tcaron":-95,"Aogonek\0Tcommaaccent":-95,"Aogonek\0U":-50,"Aogonek\0Uacute":-50,"Aogonek\0Ucircumflex":-50,"Aogonek\0Udieresis":-50,"Aogonek\0Ugrave":-50,"Aogonek\0Uhungarumlaut":-50,"Aogonek\0Umacron":-50,"Aogonek\0Uogonek":-50,"Aogonek\0Uring":-50,"Aogonek\0V":-145,"Aogonek\0W":-130,"Aogonek\0Y":-100,"Aogonek\0Yacute":-100,"Aogonek\0Ydieresis":-100,"Aogonek\0p":-25,"Aogonek\0quoteright":-74,"Aogonek\0u":-50,"Aogonek\0uacute":-50,"Aogonek\0ucircumflex":-50,"Aogonek\0udieresis":-50,"Aogonek\0ugrave":-50,"Aogonek\0uhungarumlaut":-50,"Aogonek\0umacron":-50,"Aogonek\0uogonek":-50,"Aogonek\0uring":-50,"Aogonek\0v":-100,"Aogonek\0w":-90,"Aogonek\0y":-34,"Aogonek\0yacute":-34,"Aogonek\0ydieresis":-34,"Aring\0C":-55,"Aring\0Cacute":-55,"Aring\0Ccaron":-55,"Aring\0Ccedilla":-55,"Aring\0G":-55,"Aring\0Gbreve":-55,"Aring\0Gcommaaccent":-55,"Aring\0O":-45,"Aring\0Oacute":-45,"Aring\0Ocircumflex":-45,"Aring\0Odieresis":-45,"Aring\0Ograve":-45,"Aring\0Ohungarumlaut":-45,"Aring\0Omacron":-45,"Aring\0Oslash":-45,"Aring\0Otilde":-45,"Aring\0Q":-45,"Aring\0T":-95,"Aring\0Tcaron":-95,"Aring\0Tcommaaccent":-95,"Aring\0U":-50,"Aring\0Uacute":-50,"Aring\0Ucircumflex":-50,"Aring\0Udieresis":-50,"Aring\0Ugrave":-50,"Aring\0Uhungarumlaut":-50,"Aring\0Umacron":-50,"Aring\0Uogonek":-50,"Aring\0Uring":-50,"Aring\0V":-145,"Aring\0W":-130,"Aring\0Y":-100,"Aring\0Yacute":-100,"Aring\0Ydieresis":-100,"Aring\0p":-25,"Aring\0quoteright":-74,"Aring\0u":-50,"Aring\0uacute":-50,"Aring\0ucircumflex":-50,"Aring\0udieresis":-50,"Aring\0ugrave":-50,"Aring\0uhungarumlaut":-50,"Aring\0umacron":-50,"Aring\0uogonek":-50,"Aring\0uring":-50,"Aring\0v":-100,"Aring\0w":-90,"Aring\0y":-74,"Aring\0yacute":-74,"Aring\0ydieresis":-74,"Atilde\0C":-55,"Atilde\0Cacute":-55,"Atilde\0Ccaron":-55,"Atilde\0Ccedilla":-55,"Atilde\0G":-55,"Atilde\0Gbreve":-55,"Atilde\0Gcommaaccent":-55,"Atilde\0O":-45,"Atilde\0Oacute":-45,"Atilde\0Ocircumflex":-45,"Atilde\0Odieresis":-45,"Atilde\0Ograve":-45,"Atilde\0Ohungarumlaut":-45,"Atilde\0Omacron":-45,"Atilde\0Oslash":-45,"Atilde\0Otilde":-45,"Atilde\0Q":-45,"Atilde\0T":-95,"Atilde\0Tcaron":-95,"Atilde\0Tcommaaccent":-95,"Atilde\0U":-50,"Atilde\0Uacute":-50,"Atilde\0Ucircumflex":-50,"Atilde\0Udieresis":-50,"Atilde\0Ugrave":-50,"Atilde\0Uhungarumlaut":-50,"Atilde\0Umacron":-50,"Atilde\0Uogonek":-50,"Atilde\0Uring":-50,"Atilde\0V":-145,"Atilde\0W":-130,"Atilde\0Y":-100,"Atilde\0Yacute":-100,"Atilde\0Ydieresis":-100,"Atilde\0p":-25,"Atilde\0quoteright":-74,"Atilde\0u":-50,"Atilde\0uacute":-50,"Atilde\0ucircumflex":-50,"Atilde\0udieresis":-50,"Atilde\0ugrave":-50,"Atilde\0uhungarumlaut":-50,"Atilde\0umacron":-50,"Atilde\0uogonek":-50,"Atilde\0uring":-50,"Atilde\0v":-100,"Atilde\0w":-90,"Atilde\0y":-74,"Atilde\0yacute":-74,"Atilde\0ydieresis":-74,"B\0A":-30,"B\0Aacute":-30,"B\0Abreve":-30,"B\0Acircumflex":-30,"B\0Adieresis":-30,"B\0Agrave":-30,"B\0Amacron":-30,"B\0Aogonek":-30,"B\0Aring":-30,"B\0Atilde":-30,"B\0U":-10,"B\0Uacute":-10,"B\0Ucircumflex":-10,"B\0Udieresis":-10,"B\0Ugrave":-10,"B\0Uhungarumlaut":-10,"B\0Umacron":-10,"B\0Uogonek":-10,"B\0Uring":-10,"D\0A":-35,"D\0Aacute":-35,"D\0Abreve":-35,"D\0Acircumflex":-35,"D\0Adieresis":-35,"D\0Agrave":-35,"D\0Amacron":-35,"D\0Aogonek":-35,"D\0Aring":-35,"D\0Atilde":-35,"D\0V":-40,"D\0W":-40,"D\0Y":-40,"D\0Yacute":-40,"D\0Ydieresis":-40,"D\0period":-20,"Dcaron\0A":-35,"Dcaron\0Aacute":-35,"Dcaron\0Abreve":-35,"Dcaron\0Acircumflex":-35,"Dcaron\0Adieresis":-35,"Dcaron\0Agrave":-35,"Dcaron\0Amacron":-35,"Dcaron\0Aogonek":-35,"Dcaron\0Aring":-35,"Dcaron\0Atilde":-35,"Dcaron\0V":-40,"Dcaron\0W":-40,"Dcaron\0Y":-40,"Dcaron\0Yacute":-40,"Dcaron\0Ydieresis":-40,"Dcaron\0period":-20,"Dcroat\0A":-35,"Dcroat\0Aacute":-35,"Dcroat\0Abreve":-35,"Dcroat\0Acircumflex":-35,"Dcroat\0Adieresis":-35,"Dcroat\0Agrave":-35,"Dcroat\0Amacron":-35,"Dcroat\0Aogonek":-35,"Dcroat\0Aring":-35,"Dcroat\0Atilde":-35,"Dcroat\0V":-40,"Dcroat\0W":-40,"Dcroat\0Y":-40,"Dcroat\0Yacute":-40,"Dcroat\0Ydieresis":-40,"Dcroat\0period":-20,"F\0A":-90,"F\0Aacute":-90,"F\0Abreve":-90,"F\0Acircumflex":-90,"F\0Adieresis":-90,"F\0Agrave":-90,"F\0Amacron":-90,"F\0Aogonek":-90,"F\0Aring":-90,"F\0Atilde":-90,"F\0a":-25,"F\0aacute":-25,"F\0abreve":-25,"F\0acircumflex":-25,"F\0adieresis":-25,"F\0agrave":-25,"F\0amacron":-25,"F\0aogonek":-25,"F\0aring":-25,"F\0atilde":-25,"F\0comma":-92,"F\0e":-25,"F\0eacute":-25,"F\0ecaron":-25,"F\0ecircumflex":-25,"F\0edieresis":-25,"F\0edotaccent":-25,"F\0egrave":-25,"F\0emacron":-25,"F\0eogonek":-25,"F\0o":-25,"F\0oacute":-25,"F\0ocircumflex":-25,"F\0odieresis":-25,"F\0ograve":-25,"F\0ohungarumlaut":-25,"F\0omacron":-25,"F\0oslash":-25,"F\0otilde":-25,"F\0period":-110,"J\0A":-30,"J\0Aacute":-30,"J\0Abreve":-30,"J\0Acircumflex":-30,"J\0Adieresis":-30,"J\0Agrave":-30,"J\0Amacron":-30,"J\0Aogonek":-30,"J\0Aring":-30,"J\0Atilde":-30,"J\0a":-15,"J\0aacute":-15,"J\0abreve":-15,"J\0acircumflex":-15,"J\0adieresis":-15,"J\0agrave":-15,"J\0amacron":-15,"J\0aogonek":-15,"J\0aring":-15,"J\0atilde":-15,"J\0e":-15,"J\0eacute":-15,"J\0ecaron":-15,"J\0ecircumflex":-15,"J\0edieresis":-15,"J\0edotaccent":-15,"J\0egrave":-15,"J\0emacron":-15,"J\0eogonek":-15,"J\0o":-15,"J\0oacute":-15,"J\0ocircumflex":-15,"J\0odieresis":-15,"J\0ograve":-15,"J\0ohungarumlaut":-15,"J\0omacron":-15,"J\0oslash":-15,"J\0otilde":-15,"J\0period":-20,"J\0u":-15,"J\0uacute":-15,"J\0ucircumflex":-15,"J\0udieresis":-15,"J\0ugrave":-15,"J\0uhungarumlaut":-15,"J\0umacron":-15,"J\0uogonek":-15,"J\0uring":-15,"K\0O":-30,"K\0Oacute":-30,"K\0Ocircumflex":-30,"K\0Odieresis":-30,"K\0Ograve":-30,"K\0Ohungarumlaut":-30,"K\0Omacron":-30,"K\0Oslash":-30,"K\0Otilde":-30,"K\0e":-25,"K\0eacute":-25,"K\0ecaron":-25,"K\0ecircumflex":-25,"K\0edieresis":-25,"K\0edotaccent":-25,"K\0egrave":-25,"K\0emacron":-25,"K\0eogonek":-25,"K\0o":-25,"K\0oacute":-25,"K\0ocircumflex":-25,"K\0odieresis":-25,"K\0ograve":-25,"K\0ohungarumlaut":-25,"K\0omacron":-25,"K\0oslash":-25,"K\0otilde":-25,"K\0u":-15,"K\0uacute":-15,"K\0ucircumflex":-15,"K\0udieresis":-15,"K\0ugrave":-15,"K\0uhungarumlaut":-15,"K\0umacron":-15,"K\0uogonek":-15,"K\0uring":-15,"K\0y":-45,"K\0yacute":-45,"K\0ydieresis":-45,"Kcommaaccent\0O":-30,"Kcommaaccent\0Oacute":-30,"Kcommaaccent\0Ocircumflex":-30,"Kcommaaccent\0Odieresis":-30,"Kcommaaccent\0Ograve":-30,"Kcommaaccent\0Ohungarumlaut":-30,"Kcommaaccent\0Omacron":-30,"Kcommaaccent\0Oslash":-30,"Kcommaaccent\0Otilde":-30,"Kcommaaccent\0e":-25,"Kcommaaccent\0eacute":-25,"Kcommaaccent\0ecaron":-25,"Kcommaaccent\0ecircumflex":-25,"Kcommaaccent\0edieresis":-25,"Kcommaaccent\0edotaccent":-25,"Kcommaaccent\0egrave":-25,"Kcommaaccent\0emacron":-25,"Kcommaaccent\0eogonek":-25,"Kcommaaccent\0o":-25,"Kcommaaccent\0oacute":-25,"Kcommaaccent\0ocircumflex":-25,"Kcommaaccent\0odieresis":-25,"Kcommaaccent\0ograve":-25,"Kcommaaccent\0ohungarumlaut":-25,"Kcommaaccent\0omacron":-25,"Kcommaaccent\0oslash":-25,"Kcommaaccent\0otilde":-25,"Kcommaaccent\0u":-15,"Kcommaaccent\0uacute":-15,"Kcommaaccent\0ucircumflex":-15,"Kcommaaccent\0udieresis":-15,"Kcommaaccent\0ugrave":-15,"Kcommaaccent\0uhungarumlaut":-15,"Kcommaaccent\0umacron":-15,"Kcommaaccent\0uogonek":-15,"Kcommaaccent\0uring":-15,"Kcommaaccent\0y":-45,"Kcommaaccent\0yacute":-45,"Kcommaaccent\0ydieresis":-45,"L\0T":-92,"L\0Tcaron":-92,"L\0Tcommaaccent":-92,"L\0V":-92,"L\0W":-92,"L\0Y":-92,"L\0Yacute":-92,"L\0Ydieresis":-92,"L\0quotedblright":-20,"L\0quoteright":-110,"L\0y":-55,"L\0yacute":-55,"L\0ydieresis":-55,"Lacute\0T":-92,"Lacute\0Tcaron":-92,"Lacute\0Tcommaaccent":-92,"Lacute\0V":-92,"Lacute\0W":-92,"Lacute\0Y":-92,"Lacute\0Yacute":-92,"Lacute\0Ydieresis":-92,"Lacute\0quotedblright":-20,"Lacute\0quoteright":-110,"Lacute\0y":-55,"Lacute\0yacute":-55,"Lacute\0ydieresis":-55,"Lcommaaccent\0T":-92,"Lcommaaccent\0Tcaron":-92,"Lcommaaccent\0Tcommaaccent":-92,"Lcommaaccent\0V":-92,"Lcommaaccent\0W":-92,"Lcommaaccent\0Y":-92,"Lcommaaccent\0Yacute":-92,"Lcommaaccent\0Ydieresis":-92,"Lcommaaccent\0quotedblright":-20,"Lcommaaccent\0quoteright":-110,"Lcommaaccent\0y":-55,"Lcommaaccent\0yacute":-55,"Lcommaaccent\0ydieresis":-55,"Lslash\0T":-92,"Lslash\0Tcaron":-92,"Lslash\0Tcommaaccent":-92,"Lslash\0V":-92,"Lslash\0W":-92,"Lslash\0Y":-92,"Lslash\0Yacute":-92,"Lslash\0Ydieresis":-92,"Lslash\0quotedblright":-20,"Lslash\0quoteright":-110,"Lslash\0y":-55,"Lslash\0yacute":-55,"Lslash\0ydieresis":-55,"N\0A":-20,"N\0Aacute":-20,"N\0Abreve":-20,"N\0Acircumflex":-20,"N\0Adieresis":-20,"N\0Agrave":-20,"N\0Amacron":-20,"N\0Aogonek":-20,"N\0Aring":-20,"N\0Atilde":-20,"Nacute\0A":-20,"Nacute\0Aacute":-20,"Nacute\0Abreve":-20,"Nacute\0Acircumflex":-20,"Nacute\0Adieresis":-20,"Nacute\0Agrave":-20,"Nacute\0Amacron":-20,"Nacute\0Aogonek":-20,"Nacute\0Aring":-20,"Nacute\0Atilde":-20,"Ncaron\0A":-20,"Ncaron\0Aacute":-20,"Ncaron\0Abreve":-20,"Ncaron\0Acircumflex":-20,"Ncaron\0Adieresis":-20,"Ncaron\0Agrave":-20,"Ncaron\0Amacron":-20,"Ncaron\0Aogonek":-20,"Ncaron\0Aring":-20,"Ncaron\0Atilde":-20,"Ncommaaccent\0A":-20,"Ncommaaccent\0Aacute":-20,"Ncommaaccent\0Abreve":-20,"Ncommaaccent\0Acircumflex":-20,"Ncommaaccent\0Adieresis":-20,"Ncommaaccent\0Agrave":-20,"Ncommaaccent\0Amacron":-20,"Ncommaaccent\0Aogonek":-20,"Ncommaaccent\0Aring":-20,"Ncommaaccent\0Atilde":-20,"Ntilde\0A":-20,"Ntilde\0Aacute":-20,"Ntilde\0Abreve":-20,"Ntilde\0Acircumflex":-20,"Ntilde\0Adieresis":-20,"Ntilde\0Agrave":-20,"Ntilde\0Amacron":-20,"Ntilde\0Aogonek":-20,"Ntilde\0Aring":-20,"Ntilde\0Atilde":-20,"O\0A":-40,"O\0Aacute":-40,"O\0Abreve":-40,"O\0Acircumflex":-40,"O\0Adieresis":-40,"O\0Agrave":-40,"O\0Amacron":-40,"O\0Aogonek":-40,"O\0Aring":-40,"O\0Atilde":-40,"O\0T":-40,"O\0Tcaron":-40,"O\0Tcommaaccent":-40,"O\0V":-50,"O\0W":-50,"O\0X":-40,"O\0Y":-50,"O\0Yacute":-50,"O\0Ydieresis":-50,"Oacute\0A":-40,"Oacute\0Aacute":-40,"Oacute\0Abreve":-40,"Oacute\0Acircumflex":-40,"Oacute\0Adieresis":-40,"Oacute\0Agrave":-40,"Oacute\0Amacron":-40,"Oacute\0Aogonek":-40,"Oacute\0Aring":-40,"Oacute\0Atilde":-40,"Oacute\0T":-40,"Oacute\0Tcaron":-40,"Oacute\0Tcommaaccent":-40,"Oacute\0V":-50,"Oacute\0W":-50,"Oacute\0X":-40,"Oacute\0Y":-50,"Oacute\0Yacute":-50,"Oacute\0Ydieresis":-50,"Ocircumflex\0A":-40,"Ocircumflex\0Aacute":-40,"Ocircumflex\0Abreve":-40,"Ocircumflex\0Acircumflex":-40,"Ocircumflex\0Adieresis":-40,"Ocircumflex\0Agrave":-40,"Ocircumflex\0Amacron":-40,"Ocircumflex\0Aogonek":-40,"Ocircumflex\0Aring":-40,"Ocircumflex\0Atilde":-40,"Ocircumflex\0T":-40,"Ocircumflex\0Tcaron":-40,"Ocircumflex\0Tcommaaccent":-40,"Ocircumflex\0V":-50,"Ocircumflex\0W":-50,"Ocircumflex\0X":-40,"Ocircumflex\0Y":-50,"Ocircumflex\0Yacute":-50,"Ocircumflex\0Ydieresis":-50,"Odieresis\0A":-40,"Odieresis\0Aacute":-40,"Odieresis\0Abreve":-40,"Odieresis\0Acircumflex":-40,"Odieresis\0Adieresis":-40,"Odieresis\0Agrave":-40,"Odieresis\0Amacron":-40,"Odieresis\0Aogonek":-40,"Odieresis\0Aring":-40,"Odieresis\0Atilde":-40,"Odieresis\0T":-40,"Odieresis\0Tcaron":-40,"Odieresis\0Tcommaaccent":-40,"Odieresis\0V":-50,"Odieresis\0W":-50,"Odieresis\0X":-40,"Odieresis\0Y":-50,"Odieresis\0Yacute":-50,"Odieresis\0Ydieresis":-50,"Ograve\0A":-40,"Ograve\0Aacute":-40,"Ograve\0Abreve":-40,"Ograve\0Acircumflex":-40,"Ograve\0Adieresis":-40,"Ograve\0Agrave":-40,"Ograve\0Amacron":-40,"Ograve\0Aogonek":-40,"Ograve\0Aring":-40,"Ograve\0Atilde":-40,"Ograve\0T":-40,"Ograve\0Tcaron":-40,"Ograve\0Tcommaaccent":-40,"Ograve\0V":-50,"Ograve\0W":-50,"Ograve\0X":-40,"Ograve\0Y":-50,"Ograve\0Yacute":-50,"Ograve\0Ydieresis":-50,"Ohungarumlaut\0A":-40,"Ohungarumlaut\0Aacute":-40,"Ohungarumlaut\0Abreve":-40,"Ohungarumlaut\0Acircumflex":-40,"Ohungarumlaut\0Adieresis":-40,"Ohungarumlaut\0Agrave":-40,"Ohungarumlaut\0Amacron":-40,"Ohungarumlaut\0Aogonek":-40,"Ohungarumlaut\0Aring":-40,"Ohungarumlaut\0Atilde":-40,"Ohungarumlaut\0T":-40,"Ohungarumlaut\0Tcaron":-40,"Ohungarumlaut\0Tcommaaccent":-40,"Ohungarumlaut\0V":-50,"Ohungarumlaut\0W":-50,"Ohungarumlaut\0X":-40,"Ohungarumlaut\0Y":-50,"Ohungarumlaut\0Yacute":-50,"Ohungarumlaut\0Ydieresis":-50,"Omacron\0A":-40,"Omacron\0Aacute":-40,"Omacron\0Abreve":-40,"Omacron\0Acircumflex":-40,"Omacron\0Adieresis":-40,"Omacron\0Agrave":-40,"Omacron\0Amacron":-40,"Omacron\0Aogonek":-40,"Omacron\0Aring":-40,"Omacron\0Atilde":-40,"Omacron\0T":-40,"Omacron\0Tcaron":-40,"Omacron\0Tcommaaccent":-40,"Omacron\0V":-50,"Omacron\0W":-50,"Omacron\0X":-40,"Omacron\0Y":-50,"Omacron\0Yacute":-50,"Omacron\0Ydieresis":-50,"Oslash\0A":-40,"Oslash\0Aacute":-40,"Oslash\0Abreve":-40,"Oslash\0Acircumflex":-40,"Oslash\0Adieresis":-40,"Oslash\0Agrave":-40,"Oslash\0Amacron":-40,"Oslash\0Aogonek":-40,"Oslash\0Aring":-40,"Oslash\0Atilde":-40,"Oslash\0T":-40,"Oslash\0Tcaron":-40,"Oslash\0Tcommaaccent":-40,"Oslash\0V":-50,"Oslash\0W":-50,"Oslash\0X":-40,"Oslash\0Y":-50,"Oslash\0Yacute":-50,"Oslash\0Ydieresis":-50,"Otilde\0A":-40,"Otilde\0Aacute":-40,"Otilde\0Abreve":-40,"Otilde\0Acircumflex":-40,"Otilde\0Adieresis":-40,"Otilde\0Agrave":-40,"Otilde\0Amacron":-40,"Otilde\0Aogonek":-40,"Otilde\0Aring":-40,"Otilde\0Atilde":-40,"Otilde\0T":-40,"Otilde\0Tcaron":-40,"Otilde\0Tcommaaccent":-40,"Otilde\0V":-50,"Otilde\0W":-50,"Otilde\0X":-40,"Otilde\0Y":-50,"Otilde\0Yacute":-50,"Otilde\0Ydieresis":-50,"P\0A":-74,"P\0Aacute":-74,"P\0Abreve":-74,"P\0Acircumflex":-74,"P\0Adieresis":-74,"P\0Agrave":-74,"P\0Amacron":-74,"P\0Aogonek":-74,"P\0Aring":-74,"P\0Atilde":-74,"P\0a":-10,"P\0aacute":-10,"P\0abreve":-10,"P\0acircumflex":-10,"P\0adieresis":-10,"P\0agrave":-10,"P\0amacron":-10,"P\0aogonek":-10,"P\0aring":-10,"P\0atilde":-10,"P\0comma":-92,"P\0e":-20,"P\0eacute":-20,"P\0ecaron":-20,"P\0ecircumflex":-20,"P\0edieresis":-20,"P\0edotaccent":-20,"P\0egrave":-20,"P\0emacron":-20,"P\0eogonek":-20,"P\0o":-20,"P\0oacute":-20,"P\0ocircumflex":-20,"P\0odieresis":-20,"P\0ograve":-20,"P\0ohungarumlaut":-20,"P\0omacron":-20,"P\0oslash":-20,"P\0otilde":-20,"P\0period":-110,"Q\0U":-10,"Q\0Uacute":-10,"Q\0Ucircumflex":-10,"Q\0Udieresis":-10,"Q\0Ugrave":-10,"Q\0Uhungarumlaut":-10,"Q\0Umacron":-10,"Q\0Uogonek":-10,"Q\0Uring":-10,"Q\0period":-20,"R\0O":-30,"R\0Oacute":-30,"R\0Ocircumflex":-30,"R\0Odieresis":-30,"R\0Ograve":-30,"R\0Ohungarumlaut":-30,"R\0Omacron":-30,"R\0Oslash":-30,"R\0Otilde":-30,"R\0T":-40,"R\0Tcaron":-40,"R\0Tcommaaccent":-40,"R\0U":-30,"R\0Uacute":-30,"R\0Ucircumflex":-30,"R\0Udieresis":-30,"R\0Ugrave":-30,"R\0Uhungarumlaut":-30,"R\0Umacron":-30,"R\0Uogonek":-30,"R\0Uring":-30,"R\0V":-55,"R\0W":-35,"R\0Y":-35,"R\0Yacute":-35,"R\0Ydieresis":-35,"Racute\0O":-30,"Racute\0Oacute":-30,"Racute\0Ocircumflex":-30,"Racute\0Odieresis":-30,"Racute\0Ograve":-30,"Racute\0Ohungarumlaut":-30,"Racute\0Omacron":-30,"Racute\0Oslash":-30,"Racute\0Otilde":-30,"Racute\0T":-40,"Racute\0Tcaron":-40,"Racute\0Tcommaaccent":-40,"Racute\0U":-30,"Racute\0Uacute":-30,"Racute\0Ucircumflex":-30,"Racute\0Udieresis":-30,"Racute\0Ugrave":-30,"Racute\0Uhungarumlaut":-30,"Racute\0Umacron":-30,"Racute\0Uogonek":-30,"Racute\0Uring":-30,"Racute\0V":-55,"Racute\0W":-35,"Racute\0Y":-35,"Racute\0Yacute":-35,"Racute\0Ydieresis":-35,"Rcaron\0O":-30,"Rcaron\0Oacute":-30,"Rcaron\0Ocircumflex":-30,"Rcaron\0Odieresis":-30,"Rcaron\0Ograve":-30,"Rcaron\0Ohungarumlaut":-30,"Rcaron\0Omacron":-30,"Rcaron\0Oslash":-30,"Rcaron\0Otilde":-30,"Rcaron\0T":-40,"Rcaron\0Tcaron":-40,"Rcaron\0Tcommaaccent":-40,"Rcaron\0U":-30,"Rcaron\0Uacute":-30,"Rcaron\0Ucircumflex":-30,"Rcaron\0Udieresis":-30,"Rcaron\0Ugrave":-30,"Rcaron\0Uhungarumlaut":-30,"Rcaron\0Umacron":-30,"Rcaron\0Uogonek":-30,"Rcaron\0Uring":-30,"Rcaron\0V":-55,"Rcaron\0W":-35,"Rcaron\0Y":-35,"Rcaron\0Yacute":-35,"Rcaron\0Ydieresis":-35,"Rcommaaccent\0O":-30,"Rcommaaccent\0Oacute":-30,"Rcommaaccent\0Ocircumflex":-30,"Rcommaaccent\0Odieresis":-30,"Rcommaaccent\0Ograve":-30,"Rcommaaccent\0Ohungarumlaut":-30,"Rcommaaccent\0Omacron":-30,"Rcommaaccent\0Oslash":-30,"Rcommaaccent\0Otilde":-30,"Rcommaaccent\0T":-40,"Rcommaaccent\0Tcaron":-40,"Rcommaaccent\0Tcommaaccent":-40,"Rcommaaccent\0U":-30,"Rcommaaccent\0Uacute":-30,"Rcommaaccent\0Ucircumflex":-30,"Rcommaaccent\0Udieresis":-30,"Rcommaaccent\0Ugrave":-30,"Rcommaaccent\0Uhungarumlaut":-30,"Rcommaaccent\0Umacron":-30,"Rcommaaccent\0Uogonek":-30,"Rcommaaccent\0Uring":-30,"Rcommaaccent\0V":-55,"Rcommaaccent\0W":-35,"Rcommaaccent\0Y":-35,"Rcommaaccent\0Yacute":-35,"Rcommaaccent\0Ydieresis":-35,"T\0A":-90,"T\0Aacute":-90,"T\0Abreve":-90,"T\0Acircumflex":-90,"T\0Adieresis":-90,"T\0Agrave":-90,"T\0Amacron":-90,"T\0Aogonek":-90,"T\0Aring":-90,"T\0Atilde":-90,"T\0O":-18,"T\0Oacute":-18,"T\0Ocircumflex":-18,"T\0Odieresis":-18,"T\0Ograve":-18,"T\0Ohungarumlaut":-18,"T\0Omacron":-18,"T\0Oslash":-18,"T\0Otilde":-18,"T\0a":-92,"T\0aacute":-92,"T\0abreve":-52,"T\0acircumflex":-52,"T\0adieresis":-52,"T\0agrave":-52,"T\0amacron":-52,"T\0aogonek":-92,"T\0aring":-92,"T\0atilde":-52,"T\0colon":-74,"T\0comma":-74,"T\0e":-92,"T\0eacute":-92,"T\0ecaron":-92,"T\0ecircumflex":-92,"T\0edieresis":-52,"T\0edotaccent":-92,"T\0egrave":-52,"T\0emacron":-52,"T\0eogonek":-92,"T\0hyphen":-92,"T\0i":-18,"T\0iacute":-18,"T\0iogonek":-18,"T\0o":-92,"T\0oacute":-92,"T\0ocircumflex":-92,"T\0odieresis":-92,"T\0ograve":-92,"T\0ohungarumlaut":-92,"T\0omacron":-92,"T\0oslash":-92,"T\0otilde":-92,"T\0period":-90,"T\0r":-74,"T\0racute":-74,"T\0rcaron":-74,"T\0rcommaaccent":-74,"T\0semicolon":-74,"T\0u":-92,"T\0uacute":-92,"T\0ucircumflex":-92,"T\0udieresis":-92,"T\0ugrave":-92,"T\0uhungarumlaut":-92,"T\0umacron":-92,"T\0uogonek":-92,"T\0uring":-92,"T\0w":-74,"T\0y":-34,"T\0yacute":-34,"T\0ydieresis":-34,"Tcaron\0A":-90,"Tcaron\0Aacute":-90,"Tcaron\0Abreve":-90,"Tcaron\0Acircumflex":-90,"Tcaron\0Adieresis":-90,"Tcaron\0Agrave":-90,"Tcaron\0Amacron":-90,"Tcaron\0Aogonek":-90,"Tcaron\0Aring":-90,"Tcaron\0Atilde":-90,"Tcaron\0O":-18,"Tcaron\0Oacute":-18,"Tcaron\0Ocircumflex":-18,"Tcaron\0Odieresis":-18,"Tcaron\0Ograve":-18,"Tcaron\0Ohungarumlaut":-18,"Tcaron\0Omacron":-18,"Tcaron\0Oslash":-18,"Tcaron\0Otilde":-18,"Tcaron\0a":-92,"Tcaron\0aacute":-92,"Tcaron\0abreve":-52,"Tcaron\0acircumflex":-52,"Tcaron\0adieresis":-52,"Tcaron\0agrave":-52,"Tcaron\0amacron":-52,"Tcaron\0aogonek":-92,"Tcaron\0aring":-92,"Tcaron\0atilde":-52,"Tcaron\0colon":-74,"Tcaron\0comma":-74,"Tcaron\0e":-92,"Tcaron\0eacute":-92,"Tcaron\0ecaron":-92,"Tcaron\0ecircumflex":-92,"Tcaron\0edieresis":-52,"Tcaron\0edotaccent":-92,"Tcaron\0egrave":-52,"Tcaron\0emacron":-52,"Tcaron\0eogonek":-92,"Tcaron\0hyphen":-92,"Tcaron\0i":-18,"Tcaron\0iacute":-18,"Tcaron\0iogonek":-18,"Tcaron\0o":-92,"Tcaron\0oacute":-92,"Tcaron\0ocircumflex":-92,"Tcaron\0odieresis":-92,"Tcaron\0ograve":-92,"Tcaron\0ohungarumlaut":-92,"Tcaron\0omacron":-92,"Tcaron\0oslash":-92,"Tcaron\0otilde":-92,"Tcaron\0period":-90,"Tcaron\0r":-74,"Tcaron\0racute":-74,"Tcaron\0rcaron":-74,"Tcaron\0rcommaaccent":-74,"Tcaron\0semicolon":-74,"Tcaron\0u":-92,"Tcaron\0uacute":-92,"Tcaron\0ucircumflex":-92,"Tcaron\0udieresis":-92,"Tcaron\0ugrave":-92,"Tcaron\0uhungarumlaut":-92,"Tcaron\0umacron":-92,"Tcaron\0uogonek":-92,"Tcaron\0uring":-92,"Tcaron\0w":-74,"Tcaron\0y":-34,"Tcaron\0yacute":-34,"Tcaron\0ydieresis":-34,"Tcommaaccent\0A":-90,"Tcommaaccent\0Aacute":-90,"Tcommaaccent\0Abreve":-90,"Tcommaaccent\0Acircumflex":-90,"Tcommaaccent\0Adieresis":-90,"Tcommaaccent\0Agrave":-90,"Tcommaaccent\0Amacron":-90,"Tcommaaccent\0Aogonek":-90,"Tcommaaccent\0Aring":-90,"Tcommaaccent\0Atilde":-90,"Tcommaaccent\0O":-18,"Tcommaaccent\0Oacute":-18,"Tcommaaccent\0Ocircumflex":-18,"Tcommaaccent\0Odieresis":-18,"Tcommaaccent\0Ograve":-18,"Tcommaaccent\0Ohungarumlaut":-18,"Tcommaaccent\0Omacron":-18,"Tcommaaccent\0Oslash":-18,"Tcommaaccent\0Otilde":-18,"Tcommaaccent\0a":-92,"Tcommaaccent\0aacute":-92,"Tcommaaccent\0abreve":-52,"Tcommaaccent\0acircumflex":-52,"Tcommaaccent\0adieresis":-52,"Tcommaaccent\0agrave":-52,"Tcommaaccent\0amacron":-52,"Tcommaaccent\0aogonek":-92,"Tcommaaccent\0aring":-92,"Tcommaaccent\0atilde":-52,"Tcommaaccent\0colon":-74,"Tcommaaccent\0comma":-74,"Tcommaaccent\0e":-92,"Tcommaaccent\0eacute":-92,"Tcommaaccent\0ecaron":-92,"Tcommaaccent\0ecircumflex":-92,"Tcommaaccent\0edieresis":-52,"Tcommaaccent\0edotaccent":-92,"Tcommaaccent\0egrave":-52,"Tcommaaccent\0emacron":-52,"Tcommaaccent\0eogonek":-92,"Tcommaaccent\0hyphen":-92,"Tcommaaccent\0i":-18,"Tcommaaccent\0iacute":-18,"Tcommaaccent\0iogonek":-18,"Tcommaaccent\0o":-92,"Tcommaaccent\0oacute":-92,"Tcommaaccent\0ocircumflex":-92,"Tcommaaccent\0odieresis":-92,"Tcommaaccent\0ograve":-92,"Tcommaaccent\0ohungarumlaut":-92,"Tcommaaccent\0omacron":-92,"Tcommaaccent\0oslash":-92,"Tcommaaccent\0otilde":-92,"Tcommaaccent\0period":-90,"Tcommaaccent\0r":-74,"Tcommaaccent\0racute":-74,"Tcommaaccent\0rcaron":-74,"Tcommaaccent\0rcommaaccent":-74,"Tcommaaccent\0semicolon":-74,"Tcommaaccent\0u":-92,"Tcommaaccent\0uacute":-92,"Tcommaaccent\0ucircumflex":-92,"Tcommaaccent\0udieresis":-92,"Tcommaaccent\0ugrave":-92,"Tcommaaccent\0uhungarumlaut":-92,"Tcommaaccent\0umacron":-92,"Tcommaaccent\0uogonek":-92,"Tcommaaccent\0uring":-92,"Tcommaaccent\0w":-74,"Tcommaaccent\0y":-34,"Tcommaaccent\0yacute":-34,"Tcommaaccent\0ydieresis":-34,"U\0A":-60,"U\0Aacute":-60,"U\0Abreve":-60,"U\0Acircumflex":-60,"U\0Adieresis":-60,"U\0Agrave":-60,"U\0Amacron":-60,"U\0Aogonek":-60,"U\0Aring":-60,"U\0Atilde":-60,"U\0comma":-50,"U\0period":-50,"Uacute\0A":-60,"Uacute\0Aacute":-60,"Uacute\0Abreve":-60,"Uacute\0Acircumflex":-60,"Uacute\0Adieresis":-60,"Uacute\0Agrave":-60,"Uacute\0Amacron":-60,"Uacute\0Aogonek":-60,"Uacute\0Aring":-60,"Uacute\0Atilde":-60,"Uacute\0comma":-50,"Uacute\0period":-50,"Ucircumflex\0A":-60,"Ucircumflex\0Aacute":-60,"Ucircumflex\0Abreve":-60,"Ucircumflex\0Acircumflex":-60,"Ucircumflex\0Adieresis":-60,"Ucircumflex\0Agrave":-60,"Ucircumflex\0Amacron":-60,"Ucircumflex\0Aogonek":-60,"Ucircumflex\0Aring":-60,"Ucircumflex\0Atilde":-60,"Ucircumflex\0comma":-50,"Ucircumflex\0period":-50,"Udieresis\0A":-60,"Udieresis\0Aacute":-60,"Udieresis\0Abreve":-60,"Udieresis\0Acircumflex":-60,"Udieresis\0Adieresis":-60,"Udieresis\0Agrave":-60,"Udieresis\0Amacron":-60,"Udieresis\0Aogonek":-60,"Udieresis\0Aring":-60,"Udieresis\0Atilde":-60,"Udieresis\0comma":-50,"Udieresis\0period":-50,"Ugrave\0A":-60,"Ugrave\0Aacute":-60,"Ugrave\0Abreve":-60,"Ugrave\0Acircumflex":-60,"Ugrave\0Adieresis":-60,"Ugrave\0Agrave":-60,"Ugrave\0Amacron":-60,"Ugrave\0Aogonek":-60,"Ugrave\0Aring":-60,"Ugrave\0Atilde":-60,"Ugrave\0comma":-50,"Ugrave\0period":-50,"Uhungarumlaut\0A":-60,"Uhungarumlaut\0Aacute":-60,"Uhungarumlaut\0Abreve":-60,"Uhungarumlaut\0Acircumflex":-60,"Uhungarumlaut\0Adieresis":-60,"Uhungarumlaut\0Agrave":-60,"Uhungarumlaut\0Amacron":-60,"Uhungarumlaut\0Aogonek":-60,"Uhungarumlaut\0Aring":-60,"Uhungarumlaut\0Atilde":-60,"Uhungarumlaut\0comma":-50,"Uhungarumlaut\0period":-50,"Umacron\0A":-60,"Umacron\0Aacute":-60,"Umacron\0Abreve":-60,"Umacron\0Acircumflex":-60,"Umacron\0Adieresis":-60,"Umacron\0Agrave":-60,"Umacron\0Amacron":-60,"Umacron\0Aogonek":-60,"Umacron\0Aring":-60,"Umacron\0Atilde":-60,"Umacron\0comma":-50,"Umacron\0period":-50,"Uogonek\0A":-60,"Uogonek\0Aacute":-60,"Uogonek\0Abreve":-60,"Uogonek\0Acircumflex":-60,"Uogonek\0Adieresis":-60,"Uogonek\0Agrave":-60,"Uogonek\0Amacron":-60,"Uogonek\0Aogonek":-60,"Uogonek\0Aring":-60,"Uogonek\0Atilde":-60,"Uogonek\0comma":-50,"Uogonek\0period":-50,"Uring\0A":-60,"Uring\0Aacute":-60,"Uring\0Abreve":-60,"Uring\0Acircumflex":-60,"Uring\0Adieresis":-60,"Uring\0Agrave":-60,"Uring\0Amacron":-60,"Uring\0Aogonek":-60,"Uring\0Aring":-60,"Uring\0Atilde":-60,"Uring\0comma":-50,"Uring\0period":-50,"V\0A":-135,"V\0Aacute":-135,"V\0Abreve":-135,"V\0Acircumflex":-135,"V\0Adieresis":-135,"V\0Agrave":-135,"V\0Amacron":-135,"V\0Aogonek":-135,"V\0Aring":-135,"V\0Atilde":-135,"V\0G":-30,"V\0Gbreve":-30,"V\0Gcommaaccent":-30,"V\0O":-45,"V\0Oacute":-45,"V\0Ocircumflex":-45,"V\0Odieresis":-45,"V\0Ograve":-45,"V\0Ohungarumlaut":-45,"V\0Omacron":-45,"V\0Oslash":-45,"V\0Otilde":-45,"V\0a":-92,"V\0aacute":-92,"V\0abreve":-92,"V\0acircumflex":-92,"V\0adieresis":-92,"V\0agrave":-92,"V\0amacron":-92,"V\0aogonek":-92,"V\0aring":-92,"V\0atilde":-92,"V\0colon":-92,"V\0comma":-129,"V\0e":-100,"V\0eacute":-100,"V\0ecaron":-100,"V\0ecircumflex":-100,"V\0edieresis":-100,"V\0edotaccent":-100,"V\0egrave":-100,"V\0emacron":-100,"V\0eogonek":-100,"V\0hyphen":-74,"V\0i":-37,"V\0iacute":-37,"V\0icircumflex":-37,"V\0idieresis":-37,"V\0igrave":-37,"V\0imacron":-37,"V\0iogonek":-37,"V\0o":-100,"V\0oacute":-100,"V\0ocircumflex":-100,"V\0odieresis":-100,"V\0ograve":-100,"V\0ohungarumlaut":-100,"V\0omacron":-100,"V\0oslash":-100,"V\0otilde":-100,"V\0period":-145,"V\0semicolon":-92,"V\0u":-92,"V\0uacute":-92,"V\0ucircumflex":-92,"V\0udieresis":-92,"V\0ugrave":-92,"V\0uhungarumlaut":-92,"V\0umacron":-92,"V\0uogonek":-92,"V\0uring":-92,"W\0A":-120,"W\0Aacute":-120,"W\0Abreve":-120,"W\0Acircumflex":-120,"W\0Adieresis":-120,"W\0Agrave":-120,"W\0Amacron":-120,"W\0Aogonek":-120,"W\0Aring":-120,"W\0Atilde":-120,"W\0O":-10,"W\0Oacute":-10,"W\0Ocircumflex":-10,"W\0Odieresis":-10,"W\0Ograve":-10,"W\0Ohungarumlaut":-10,"W\0Omacron":-10,"W\0Oslash":-10,"W\0Otilde":-10,"W\0a":-65,"W\0aacute":-65,"W\0abreve":-65,"W\0acircumflex":-65,"W\0adieresis":-65,"W\0agrave":-65,"W\0amacron":-65,"W\0aogonek":-65,"W\0aring":-65,"W\0atilde":-65,"W\0colon":-55,"W\0comma":-92,"W\0e":-65,"W\0eacute":-65,"W\0ecaron":-65,"W\0ecircumflex":-65,"W\0edieresis":-65,"W\0edotaccent":-65,"W\0egrave":-65,"W\0emacron":-65,"W\0eogonek":-65,"W\0hyphen":-37,"W\0i":-18,"W\0iacute":-18,"W\0iogonek":-18,"W\0o":-75,"W\0oacute":-75,"W\0ocircumflex":-75,"W\0odieresis":-75,"W\0ograve":-75,"W\0ohungarumlaut":-75,"W\0omacron":-75,"W\0oslash":-75,"W\0otilde":-75,"W\0period":-92,"W\0semicolon":-55,"W\0u":-50,"W\0uacute":-50,"W\0ucircumflex":-50,"W\0udieresis":-50,"W\0ugrave":-50,"W\0uhungarumlaut":-50,"W\0umacron":-50,"W\0uogonek":-50,"W\0uring":-50,"W\0y":-60,"W\0yacute":-60,"W\0ydieresis":-60,"Y\0A":-110,"Y\0Aacute":-110,"Y\0Abreve":-110,"Y\0Acircumflex":-110,"Y\0Adieresis":-110,"Y\0Agrave":-110,"Y\0Amacron":-110,"Y\0Aogonek":-110,"Y\0Aring":-110,"Y\0Atilde":-110,"Y\0O":-35,"Y\0Oacute":-35,"Y\0Ocircumflex":-35,"Y\0Odieresis":-35,"Y\0Ograve":-35,"Y\0Ohungarumlaut":-35,"Y\0Omacron":-35,"Y\0Oslash":-35,"Y\0Otilde":-35,"Y\0a":-85,"Y\0aacute":-85,"Y\0abreve":-85,"Y\0acircumflex":-85,"Y\0adieresis":-85,"Y\0agrave":-85,"Y\0amacron":-85,"Y\0aogonek":-85,"Y\0aring":-85,"Y\0atilde":-85,"Y\0colon":-92,"Y\0comma":-92,"Y\0e":-111,"Y\0eacute":-111,"Y\0ecaron":-111,"Y\0ecircumflex":-111,"Y\0edieresis":-71,"Y\0edotaccent":-111,"Y\0egrave":-71,"Y\0emacron":-71,"Y\0eogonek":-111,"Y\0hyphen":-92,"Y\0i":-37,"Y\0iacute":-37,"Y\0iogonek":-37,"Y\0o":-111,"Y\0oacute":-111,"Y\0ocircumflex":-111,"Y\0odieresis":-111,"Y\0ograve":-111,"Y\0ohungarumlaut":-111,"Y\0omacron":-111,"Y\0oslash":-111,"Y\0otilde":-111,"Y\0period":-92,"Y\0semicolon":-92,"Y\0u":-92,"Y\0uacute":-92,"Y\0ucircumflex":-92,"Y\0udieresis":-92,"Y\0ugrave":-92,"Y\0uhungarumlaut":-92,"Y\0umacron":-92,"Y\0uogonek":-92,"Y\0uring":-92,"Yacute\0A":-110,"Yacute\0Aacute":-110,"Yacute\0Abreve":-110,"Yacute\0Acircumflex":-110,"Yacute\0Adieresis":-110,"Yacute\0Agrave":-110,"Yacute\0Amacron":-110,"Yacute\0Aogonek":-110,"Yacute\0Aring":-110,"Yacute\0Atilde":-110,"Yacute\0O":-35,"Yacute\0Oacute":-35,"Yacute\0Ocircumflex":-35,"Yacute\0Odieresis":-35,"Yacute\0Ograve":-35,"Yacute\0Ohungarumlaut":-35,"Yacute\0Omacron":-35,"Yacute\0Oslash":-35,"Yacute\0Otilde":-35,"Yacute\0a":-85,"Yacute\0aacute":-85,"Yacute\0abreve":-85,"Yacute\0acircumflex":-85,"Yacute\0adieresis":-85,"Yacute\0agrave":-85,"Yacute\0amacron":-85,"Yacute\0aogonek":-85,"Yacute\0aring":-85,"Yacute\0atilde":-85,"Yacute\0colon":-92,"Yacute\0comma":-92,"Yacute\0e":-111,"Yacute\0eacute":-111,"Yacute\0ecaron":-111,"Yacute\0ecircumflex":-111,"Yacute\0edieresis":-71,"Yacute\0edotaccent":-111,"Yacute\0egrave":-71,"Yacute\0emacron":-71,"Yacute\0eogonek":-111,"Yacute\0hyphen":-92,"Yacute\0i":-37,"Yacute\0iacute":-37,"Yacute\0iogonek":-37,"Yacute\0o":-111,"Yacute\0oacute":-111,"Yacute\0ocircumflex":-111,"Yacute\0odieresis":-111,"Yacute\0ograve":-111,"Yacute\0ohungarumlaut":-111,"Yacute\0omacron":-111,"Yacute\0oslash":-111,"Yacute\0otilde":-111,"Yacute\0period":-92,"Yacute\0semicolon":-92,"Yacute\0u":-92,"Yacute\0uacute":-92,"Yacute\0ucircumflex":-92,"Yacute\0udieresis":-92,"Yacute\0ugrave":-92,"Yacute\0uhungarumlaut":-92,"Yacute\0umacron":-92,"Yacute\0uogonek":-92,"Yacute\0uring":-92,"Ydieresis\0A":-110,"Ydieresis\0Aacute":-110,"Ydieresis\0Abreve":-110,"Ydieresis\0Acircumflex":-110,"Ydieresis\0Adieresis":-110,"Ydieresis\0Agrave":-110,"Ydieresis\0Amacron":-110,"Ydieresis\0Aogonek":-110,"Ydieresis\0Aring":-110,"Ydieresis\0Atilde":-110,"Ydieresis\0O":-35,"Ydieresis\0Oacute":-35,"Ydieresis\0Ocircumflex":-35,"Ydieresis\0Odieresis":-35,"Ydieresis\0Ograve":-35,"Ydieresis\0Ohungarumlaut":-35,"Ydieresis\0Omacron":-35,"Ydieresis\0Oslash":-35,"Ydieresis\0Otilde":-35,"Ydieresis\0a":-85,"Ydieresis\0aacute":-85,"Ydieresis\0abreve":-85,"Ydieresis\0acircumflex":-85,"Ydieresis\0adieresis":-85,"Ydieresis\0agrave":-85,"Ydieresis\0amacron":-85,"Ydieresis\0aogonek":-85,"Ydieresis\0aring":-85,"Ydieresis\0atilde":-85,"Ydieresis\0colon":-92,"Ydieresis\0comma":-92,"Ydieresis\0e":-111,"Ydieresis\0eacute":-111,"Ydieresis\0ecaron":-111,"Ydieresis\0ecircumflex":-111,"Ydieresis\0edieresis":-71,"Ydieresis\0edotaccent":-111,"Ydieresis\0egrave":-71,"Ydieresis\0emacron":-71,"Ydieresis\0eogonek":-111,"Ydieresis\0hyphen":-92,"Ydieresis\0i":-37,"Ydieresis\0iacute":-37,"Ydieresis\0iogonek":-37,"Ydieresis\0o":-111,"Ydieresis\0oacute":-111,"Ydieresis\0ocircumflex":-111,"Ydieresis\0odieresis":-111,"Ydieresis\0ograve":-111,"Ydieresis\0ohungarumlaut":-111,"Ydieresis\0omacron":-111,"Ydieresis\0oslash":-111,"Ydieresis\0otilde":-111,"Ydieresis\0period":-92,"Ydieresis\0semicolon":-92,"Ydieresis\0u":-92,"Ydieresis\0uacute":-92,"Ydieresis\0ucircumflex":-92,"Ydieresis\0udieresis":-92,"Ydieresis\0ugrave":-92,"Ydieresis\0uhungarumlaut":-92,"Ydieresis\0umacron":-92,"Ydieresis\0uogonek":-92,"Ydieresis\0uring":-92,"a\0v":-25,"aacute\0v":-25,"abreve\0v":-25,"acircumflex\0v":-25,"adieresis\0v":-25,"agrave\0v":-25,"amacron\0v":-25,"aogonek\0v":-25,"aring\0v":-25,"atilde\0v":-25,"b\0b":-10,"b\0period":-40,"b\0u":-20,"b\0uacute":-20,"b\0ucircumflex":-20,"b\0udieresis":-20,"b\0ugrave":-20,"b\0uhungarumlaut":-20,"b\0umacron":-20,"b\0uogonek":-20,"b\0uring":-20,"b\0v":-15,"comma\0quotedblright":-45,"comma\0quoteright":-55,"d\0w":-15,"dcroat\0w":-15,"e\0v":-15,"eacute\0v":-15,"ecaron\0v":-15,"ecircumflex\0v":-15,"edieresis\0v":-15,"edotaccent\0v":-15,"egrave\0v":-15,"emacron\0v":-15,"eogonek\0v":-15,"f\0comma":-15,"f\0dotlessi":-35,"f\0i":-25,"f\0o":-25,"f\0oacute":-25,"f\0ocircumflex":-25,"f\0odieresis":-25,"f\0ograve":-25,"f\0ohungarumlaut":-25,"f\0omacron":-25,"f\0oslash":-25,"f\0otilde":-25,"f\0period":-15,"f\0quotedblright":50,"f\0quoteright":55,"g\0period":-15,"gbreve\0period":-15,"gcommaaccent\0period":-15,"h\0y":-15,"h\0yacute":-15,"h\0ydieresis":-15,"i\0v":-10,"iacute\0v":-10,"icircumflex\0v":-10,"idieresis\0v":-10,"igrave\0v":-10,"imacron\0v":-10,"iogonek\0v":-10,"k\0e":-10,"k\0eacute":-10,"k\0ecaron":-10,"k\0ecircumflex":-10,"k\0edieresis":-10,"k\0edotaccent":-10,"k\0egrave":-10,"k\0emacron":-10,"k\0eogonek":-10,"k\0o":-15,"k\0oacute":-15,"k\0ocircumflex":-15,"k\0odieresis":-15,"k\0ograve":-15,"k\0ohungarumlaut":-15,"k\0omacron":-15,"k\0oslash":-15,"k\0otilde":-15,"k\0y":-15,"k\0yacute":-15,"k\0ydieresis":-15,"kcommaaccent\0e":-10,"kcommaaccent\0eacute":-10,"kcommaaccent\0ecaron":-10,"kcommaaccent\0ecircumflex":-10,"kcommaaccent\0edieresis":-10,"kcommaaccent\0edotaccent":-10,"kcommaaccent\0egrave":-10,"kcommaaccent\0emacron":-10,"kcommaaccent\0eogonek":-10,"kcommaaccent\0o":-15,"kcommaaccent\0oacute":-15,"kcommaaccent\0ocircumflex":-15,"kcommaaccent\0odieresis":-15,"kcommaaccent\0ograve":-15,"kcommaaccent\0ohungarumlaut":-15,"kcommaaccent\0omacron":-15,"kcommaaccent\0oslash":-15,"kcommaaccent\0otilde":-15,"kcommaaccent\0y":-15,"kcommaaccent\0yacute":-15,"kcommaaccent\0ydieresis":-15,"n\0v":-40,"nacute\0v":-40,"ncaron\0v":-40,"ncommaaccent\0v":-40,"ntilde\0v":-40,"o\0v":-10,"o\0w":-10,"oacute\0v":-10,"oacute\0w":-10,"ocircumflex\0v":-10,"ocircumflex\0w":-10,"odieresis\0v":-10,"odieresis\0w":-10,"ograve\0v":-10,"ograve\0w":-10,"ohungarumlaut\0v":-10,"ohungarumlaut\0w":-10,"omacron\0v":-10,"omacron\0w":-10,"oslash\0v":-10,"oslash\0w":-10,"otilde\0v":-10,"otilde\0w":-10,"period\0quotedblright":-55,"period\0quoteright":-55,"quotedblleft\0A":-10,"quotedblleft\0Aacute":-10,"quotedblleft\0Abreve":-10,"quotedblleft\0Acircumflex":-10,"quotedblleft\0Adieresis":-10,"quotedblleft\0Agrave":-10,"quotedblleft\0Amacron":-10,"quotedblleft\0Aogonek":-10,"quotedblleft\0Aring":-10,"quotedblleft\0Atilde":-10,"quoteleft\0A":-10,"quoteleft\0Aacute":-10,"quoteleft\0Abreve":-10,"quoteleft\0Acircumflex":-10,"quoteleft\0Adieresis":-10,"quoteleft\0Agrave":-10,"quoteleft\0Amacron":-10,"quoteleft\0Aogonek":-10,"quoteleft\0Aring":-10,"quoteleft\0Atilde":-10,"quoteleft\0quoteleft":-63,"quoteright\0d":-20,"quoteright\0dcroat":-20,"quoteright\0quoteright":-63,"quoteright\0r":-20,"quoteright\0racute":-20,"quoteright\0rcaron":-20,"quoteright\0rcommaaccent":-20,"quoteright\0s":-37,"quoteright\0sacute":-37,"quoteright\0scaron":-37,"quoteright\0scedilla":-37,"quoteright\0scommaaccent":-37,"quoteright\0space":-74,"quoteright\0v":-20,"r\0c":-18,"r\0cacute":-18,"r\0ccaron":-18,"r\0ccedilla":-18,"r\0comma":-92,"r\0e":-18,"r\0eacute":-18,"r\0ecaron":-18,"r\0ecircumflex":-18,"r\0edieresis":-18,"r\0edotaccent":-18,"r\0egrave":-18,"r\0emacron":-18,"r\0eogonek":-18,"r\0g":-10,"r\0gbreve":-10,"r\0gcommaaccent":-10,"r\0hyphen":-37,"r\0n":-15,"r\0nacute":-15,"r\0ncaron":-15,"r\0ncommaaccent":-15,"r\0ntilde":-15,"r\0o":-18,"r\0oacute":-18,"r\0ocircumflex":-18,"r\0odieresis":-18,"r\0ograve":-18,"r\0ohungarumlaut":-18,"r\0omacron":-18,"r\0oslash":-18,"r\0otilde":-18,"r\0p":-10,"r\0period":-100,"r\0q":-18,"r\0v":-10,"racute\0c":-18,"racute\0cacute":-18,"racute\0ccaron":-18,"racute\0ccedilla":-18,"racute\0comma":-92,"racute\0e":-18,"racute\0eacute":-18,"racute\0ecaron":-18,"racute\0ecircumflex":-18,"racute\0edieresis":-18,"racute\0edotaccent":-18,"racute\0egrave":-18,"racute\0emacron":-18,"racute\0eogonek":-18,"racute\0g":-10,"racute\0gbreve":-10,"racute\0gcommaaccent":-10,"racute\0hyphen":-37,"racute\0n":-15,"racute\0nacute":-15,"racute\0ncaron":-15,"racute\0ncommaaccent":-15,"racute\0ntilde":-15,"racute\0o":-18,"racute\0oacute":-18,"racute\0ocircumflex":-18,"racute\0odieresis":-18,"racute\0ograve":-18,"racute\0ohungarumlaut":-18,"racute\0omacron":-18,"racute\0oslash":-18,"racute\0otilde":-18,"racute\0p":-10,"racute\0period":-100,"racute\0q":-18,"racute\0v":-10,"rcaron\0c":-18,"rcaron\0cacute":-18,"rcaron\0ccaron":-18,"rcaron\0ccedilla":-18,"rcaron\0comma":-92,"rcaron\0e":-18,"rcaron\0eacute":-18,"rcaron\0ecaron":-18,"rcaron\0ecircumflex":-18,"rcaron\0edieresis":-18,"rcaron\0edotaccent":-18,"rcaron\0egrave":-18,"rcaron\0emacron":-18,"rcaron\0eogonek":-18,"rcaron\0g":-10,"rcaron\0gbreve":-10,"rcaron\0gcommaaccent":-10,"rcaron\0hyphen":-37,"rcaron\0n":-15,"rcaron\0nacute":-15,"rcaron\0ncaron":-15,"rcaron\0ncommaaccent":-15,"rcaron\0ntilde":-15,"rcaron\0o":-18,"rcaron\0oacute":-18,"rcaron\0ocircumflex":-18,"rcaron\0odieresis":-18,"rcaron\0ograve":-18,"rcaron\0ohungarumlaut":-18,"rcaron\0omacron":-18,"rcaron\0oslash":-18,"rcaron\0otilde":-18,"rcaron\0p":-10,"rcaron\0period":-100,"rcaron\0q":-18,"rcaron\0v":-10,"rcommaaccent\0c":-18,"rcommaaccent\0cacute":-18,"rcommaaccent\0ccaron":-18,"rcommaaccent\0ccedilla":-18,"rcommaaccent\0comma":-92,"rcommaaccent\0e":-18,"rcommaaccent\0eacute":-18,"rcommaaccent\0ecaron":-18,"rcommaaccent\0ecircumflex":-18,"rcommaaccent\0edieresis":-18,"rcommaaccent\0edotaccent":-18,"rcommaaccent\0egrave":-18,"rcommaaccent\0emacron":-18,"rcommaaccent\0eogonek":-18,"rcommaaccent\0g":-10,"rcommaaccent\0gbreve":-10,"rcommaaccent\0gcommaaccent":-10,"rcommaaccent\0hyphen":-37,"rcommaaccent\0n":-15,"rcommaaccent\0nacute":-15,"rcommaaccent\0ncaron":-15,"rcommaaccent\0ncommaaccent":-15,"rcommaaccent\0ntilde":-15,"rcommaaccent\0o":-18,"rcommaaccent\0oacute":-18,"rcommaaccent\0ocircumflex":-18,"rcommaaccent\0odieresis":-18,"rcommaaccent\0ograve":-18,"rcommaaccent\0ohungarumlaut":-18,"rcommaaccent\0omacron":-18,"rcommaaccent\0oslash":-18,"rcommaaccent\0otilde":-18,"rcommaaccent\0p":-10,"rcommaaccent\0period":-100,"rcommaaccent\0q":-18,"rcommaaccent\0v":-10,"space\0A":-55,"space\0Aacute":-55,"space\0Abreve":-55,"space\0Acircumflex":-55,"space\0Adieresis":-55,"space\0Agrave":-55,"space\0Amacron":-55,"space\0Aogonek":-55,"space\0Aring":-55,"space\0Atilde":-55,"space\0T":-30,"space\0Tcaron":-30,"space\0Tcommaaccent":-30,"space\0V":-45,"space\0W":-30,"space\0Y":-55,"space\0Yacute":-55,"space\0Ydieresis":-55,"v\0a":-10,"v\0aacute":-10,"v\0abreve":-10,"v\0acircumflex":-10,"v\0adieresis":-10,"v\0agrave":-10,"v\0amacron":-10,"v\0aogonek":-10,"v\0aring":-10,"v\0atilde":-10,"v\0comma":-55,"v\0e":-10,"v\0eacute":-10,"v\0ecaron":-10,"v\0ecircumflex":-10,"v\0edieresis":-10,"v\0edotaccent":-10,"v\0egrave":-10,"v\0emacron":-10,"v\0eogonek":-10,"v\0o":-10,"v\0oacute":-10,"v\0ocircumflex":-10,"v\0odieresis":-10,"v\0ograve":-10,"v\0ohungarumlaut":-10,"v\0omacron":-10,"v\0oslash":-10,"v\0otilde":-10,"v\0period":-70,"w\0comma":-55,"w\0o":-10,"w\0oacute":-10,"w\0ocircumflex":-10,"w\0odieresis":-10,"w\0ograve":-10,"w\0ohungarumlaut":-10,"w\0omacron":-10,"w\0oslash":-10,"w\0otilde":-10,"w\0period":-70,"y\0comma":-55,"y\0e":-10,"y\0eacute":-10,"y\0ecaron":-10,"y\0ecircumflex":-10,"y\0edieresis":-10,"y\0edotaccent":-10,"y\0egrave":-10,"y\0emacron":-10,"y\0eogonek":-10,"y\0o":-25,"y\0oacute":-25,"y\0ocircumflex":-25,"y\0odieresis":-25,"y\0ograve":-25,"y\0ohungarumlaut":-25,"y\0omacron":-25,"y\0oslash":-25,"y\0otilde":-25,"y\0period":-70,"yacute\0comma":-55,"yacute\0e":-10,"yacute\0eacute":-10,"yacute\0ecaron":-10,"yacute\0ecircumflex":-10,"yacute\0edieresis":-10,"yacute\0edotaccent":-10,"yacute\0egrave":-10,"yacute\0emacron":-10,"yacute\0eogonek":-10,"yacute\0o":-25,"yacute\0oacute":-25,"yacute\0ocircumflex":-25,"yacute\0odieresis":-25,"yacute\0ograve":-25,"yacute\0ohungarumlaut":-25,"yacute\0omacron":-25,"yacute\0oslash":-25,"yacute\0otilde":-25,"yacute\0period":-70,"ydieresis\0comma":-55,"ydieresis\0e":-10,"ydieresis\0eacute":-10,"ydieresis\0ecaron":-10,"ydieresis\0ecircumflex":-10,"ydieresis\0edieresis":-10,"ydieresis\0edotaccent":-10,"ydieresis\0egrave":-10,"ydieresis\0emacron":-10,"ydieresis\0eogonek":-10,"ydieresis\0o":-25,"ydieresis\0oacute":-25,"ydieresis\0ocircumflex":-25,"ydieresis\0odieresis":-25,"ydieresis\0ograve":-25,"ydieresis\0ohungarumlaut":-25,"ydieresis\0omacron":-25,"ydieresis\0oslash":-25,"ydieresis\0otilde":-25,"ydieresis\0period":-70}},"Times-Italic":{attributes:{Comment:["Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated.  All Rights Reserved.","Creation Date: Thu May  1 12:56:55 1997","UniqueID 43067","VMusage 47727 58752"],FontName:"Times-Italic",FullName:"Times Italic",FamilyName:"Times",Weight:"Medium",ItalicAngle:"-15.5",IsFixedPitch:"false",CharacterSet:"ExtendedRoman",FontBBox:"-169 -217 1010 883 ",UnderlinePosition:"-100",UnderlineThickness:"50",Version:"002.000",Notice:"Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated.  All Rights Reserved.Times is a trademark of Linotype-Hell AG and/or its subsidiaries.",EncodingScheme:"AdobeStandardEncoding",CapHeight:"653",XHeight:"441",Ascender:"683",Descender:"-217",StdHW:"32",StdVW:"76"},glyphWidths:{space:250,exclam:333,quotedbl:420,numbersign:500,dollar:500,percent:833,ampersand:778,quoteright:333,parenleft:333,parenright:333,asterisk:500,plus:675,comma:250,hyphen:333,period:250,slash:278,zero:500,one:500,two:500,three:500,four:500,five:500,six:500,seven:500,eight:500,nine:500,colon:333,semicolon:333,less:675,equal:675,greater:675,question:500,at:920,A:611,B:611,C:667,D:722,E:611,F:611,G:722,H:722,I:333,J:444,K:667,L:556,M:833,N:667,O:722,P:611,Q:722,R:611,S:500,T:556,U:722,V:611,W:833,X:611,Y:556,Z:556,bracketleft:389,backslash:278,bracketright:389,asciicircum:422,underscore:500,quoteleft:333,a:500,b:500,c:444,d:500,e:444,f:278,g:500,h:500,i:278,j:278,k:444,l:278,m:722,n:500,o:500,p:500,q:500,r:389,s:389,t:278,u:500,v:444,w:667,x:444,y:444,z:389,braceleft:400,bar:275,braceright:400,asciitilde:541,exclamdown:389,cent:500,sterling:500,fraction:167,yen:500,florin:500,section:500,currency:500,quotesingle:214,quotedblleft:556,guillemotleft:500,guilsinglleft:333,guilsinglright:333,fi:500,fl:500,endash:500,dagger:500,daggerdbl:500,periodcentered:250,paragraph:523,bullet:350,quotesinglbase:333,quotedblbase:556,quotedblright:556,guillemotright:500,ellipsis:889,perthousand:1e3,questiondown:500,grave:333,acute:333,circumflex:333,tilde:333,macron:333,breve:333,dotaccent:333,dieresis:333,ring:333,cedilla:333,hungarumlaut:333,ogonek:333,caron:333,emdash:889,AE:889,ordfeminine:276,Lslash:556,Oslash:722,OE:944,ordmasculine:310,ae:667,dotlessi:278,lslash:278,oslash:500,oe:667,germandbls:500,Idieresis:333,eacute:444,abreve:500,uhungarumlaut:500,ecaron:444,Ydieresis:556,divide:675,Yacute:556,Acircumflex:611,aacute:500,Ucircumflex:722,yacute:444,scommaaccent:389,ecircumflex:444,Uring:722,Udieresis:722,aogonek:500,Uacute:722,uogonek:500,Edieresis:611,Dcroat:722,commaaccent:250,copyright:760,Emacron:611,ccaron:444,aring:500,Ncommaaccent:667,lacute:278,agrave:500,Tcommaaccent:556,Cacute:667,atilde:500,Edotaccent:611,scaron:389,scedilla:389,iacute:278,lozenge:471,Rcaron:611,Gcommaaccent:722,ucircumflex:500,acircumflex:500,Amacron:611,rcaron:389,ccedilla:444,Zdotaccent:556,Thorn:611,Omacron:722,Racute:611,Sacute:500,dcaron:544,Umacron:722,uring:500,threesuperior:300,Ograve:722,Agrave:611,Abreve:611,multiply:675,uacute:500,Tcaron:556,partialdiff:476,ydieresis:444,Nacute:667,icircumflex:278,Ecircumflex:611,adieresis:500,edieresis:444,cacute:444,nacute:500,umacron:500,Ncaron:667,Iacute:333,plusminus:675,brokenbar:275,registered:760,Gbreve:722,Idotaccent:333,summation:600,Egrave:611,racute:389,omacron:500,Zacute:556,Zcaron:556,greaterequal:549,Eth:722,Ccedilla:667,lcommaaccent:278,tcaron:300,eogonek:444,Uogonek:722,Aacute:611,Adieresis:611,egrave:444,zacute:389,iogonek:278,Oacute:722,oacute:500,amacron:500,sacute:389,idieresis:278,Ocircumflex:722,Ugrave:722,Delta:612,thorn:500,twosuperior:300,Odieresis:722,mu:500,igrave:278,ohungarumlaut:500,Eogonek:611,dcroat:500,threequarters:750,Scedilla:500,lcaron:300,Kcommaaccent:667,Lacute:556,trademark:980,edotaccent:444,Igrave:333,Imacron:333,Lcaron:611,onehalf:750,lessequal:549,ocircumflex:500,ntilde:500,Uhungarumlaut:722,Eacute:611,emacron:444,gbreve:500,onequarter:750,Scaron:500,Scommaaccent:500,Ohungarumlaut:722,degree:400,ograve:500,Ccaron:667,ugrave:500,radical:453,Dcaron:722,rcommaaccent:389,Ntilde:667,otilde:500,Rcommaaccent:611,Lcommaaccent:556,Atilde:611,Aogonek:611,Aring:611,Otilde:722,zdotaccent:389,Ecaron:611,Iogonek:333,kcommaaccent:444,minus:675,Icircumflex:333,ncaron:500,tcommaaccent:278,logicalnot:675,odieresis:500,udieresis:500,notequal:549,gcommaaccent:500,eth:500,zcaron:389,ncommaaccent:500,onesuperior:300,imacron:278,Euro:500},kernPairs:{"A\0C":-30,"A\0Cacute":-30,"A\0Ccaron":-30,"A\0Ccedilla":-30,"A\0G":-35,"A\0Gbreve":-35,"A\0Gcommaaccent":-35,"A\0O":-40,"A\0Oacute":-40,"A\0Ocircumflex":-40,"A\0Odieresis":-40,"A\0Ograve":-40,"A\0Ohungarumlaut":-40,"A\0Omacron":-40,"A\0Oslash":-40,"A\0Otilde":-40,"A\0Q":-40,"A\0T":-37,"A\0Tcaron":-37,"A\0Tcommaaccent":-37,"A\0U":-50,"A\0Uacute":-50,"A\0Ucircumflex":-50,"A\0Udieresis":-50,"A\0Ugrave":-50,"A\0Uhungarumlaut":-50,"A\0Umacron":-50,"A\0Uogonek":-50,"A\0Uring":-50,"A\0V":-105,"A\0W":-95,"A\0Y":-55,"A\0Yacute":-55,"A\0Ydieresis":-55,"A\0quoteright":-37,"A\0u":-20,"A\0uacute":-20,"A\0ucircumflex":-20,"A\0udieresis":-20,"A\0ugrave":-20,"A\0uhungarumlaut":-20,"A\0umacron":-20,"A\0uogonek":-20,"A\0uring":-20,"A\0v":-55,"A\0w":-55,"A\0y":-55,"A\0yacute":-55,"A\0ydieresis":-55,"Aacute\0C":-30,"Aacute\0Cacute":-30,"Aacute\0Ccaron":-30,"Aacute\0Ccedilla":-30,"Aacute\0G":-35,"Aacute\0Gbreve":-35,"Aacute\0Gcommaaccent":-35,"Aacute\0O":-40,"Aacute\0Oacute":-40,"Aacute\0Ocircumflex":-40,"Aacute\0Odieresis":-40,"Aacute\0Ograve":-40,"Aacute\0Ohungarumlaut":-40,"Aacute\0Omacron":-40,"Aacute\0Oslash":-40,"Aacute\0Otilde":-40,"Aacute\0Q":-40,"Aacute\0T":-37,"Aacute\0Tcaron":-37,"Aacute\0Tcommaaccent":-37,"Aacute\0U":-50,"Aacute\0Uacute":-50,"Aacute\0Ucircumflex":-50,"Aacute\0Udieresis":-50,"Aacute\0Ugrave":-50,"Aacute\0Uhungarumlaut":-50,"Aacute\0Umacron":-50,"Aacute\0Uogonek":-50,"Aacute\0Uring":-50,"Aacute\0V":-105,"Aacute\0W":-95,"Aacute\0Y":-55,"Aacute\0Yacute":-55,"Aacute\0Ydieresis":-55,"Aacute\0quoteright":-37,"Aacute\0u":-20,"Aacute\0uacute":-20,"Aacute\0ucircumflex":-20,"Aacute\0udieresis":-20,"Aacute\0ugrave":-20,"Aacute\0uhungarumlaut":-20,"Aacute\0umacron":-20,"Aacute\0uogonek":-20,"Aacute\0uring":-20,"Aacute\0v":-55,"Aacute\0w":-55,"Aacute\0y":-55,"Aacute\0yacute":-55,"Aacute\0ydieresis":-55,"Abreve\0C":-30,"Abreve\0Cacute":-30,"Abreve\0Ccaron":-30,"Abreve\0Ccedilla":-30,"Abreve\0G":-35,"Abreve\0Gbreve":-35,"Abreve\0Gcommaaccent":-35,"Abreve\0O":-40,"Abreve\0Oacute":-40,"Abreve\0Ocircumflex":-40,"Abreve\0Odieresis":-40,"Abreve\0Ograve":-40,"Abreve\0Ohungarumlaut":-40,"Abreve\0Omacron":-40,"Abreve\0Oslash":-40,"Abreve\0Otilde":-40,"Abreve\0Q":-40,"Abreve\0T":-37,"Abreve\0Tcaron":-37,"Abreve\0Tcommaaccent":-37,"Abreve\0U":-50,"Abreve\0Uacute":-50,"Abreve\0Ucircumflex":-50,"Abreve\0Udieresis":-50,"Abreve\0Ugrave":-50,"Abreve\0Uhungarumlaut":-50,"Abreve\0Umacron":-50,"Abreve\0Uogonek":-50,"Abreve\0Uring":-50,"Abreve\0V":-105,"Abreve\0W":-95,"Abreve\0Y":-55,"Abreve\0Yacute":-55,"Abreve\0Ydieresis":-55,"Abreve\0quoteright":-37,"Abreve\0u":-20,"Abreve\0uacute":-20,"Abreve\0ucircumflex":-20,"Abreve\0udieresis":-20,"Abreve\0ugrave":-20,"Abreve\0uhungarumlaut":-20,"Abreve\0umacron":-20,"Abreve\0uogonek":-20,"Abreve\0uring":-20,"Abreve\0v":-55,"Abreve\0w":-55,"Abreve\0y":-55,"Abreve\0yacute":-55,"Abreve\0ydieresis":-55,"Acircumflex\0C":-30,"Acircumflex\0Cacute":-30,"Acircumflex\0Ccaron":-30,"Acircumflex\0Ccedilla":-30,"Acircumflex\0G":-35,"Acircumflex\0Gbreve":-35,"Acircumflex\0Gcommaaccent":-35,"Acircumflex\0O":-40,"Acircumflex\0Oacute":-40,"Acircumflex\0Ocircumflex":-40,"Acircumflex\0Odieresis":-40,"Acircumflex\0Ograve":-40,"Acircumflex\0Ohungarumlaut":-40,"Acircumflex\0Omacron":-40,"Acircumflex\0Oslash":-40,"Acircumflex\0Otilde":-40,"Acircumflex\0Q":-40,"Acircumflex\0T":-37,"Acircumflex\0Tcaron":-37,"Acircumflex\0Tcommaaccent":-37,"Acircumflex\0U":-50,"Acircumflex\0Uacute":-50,"Acircumflex\0Ucircumflex":-50,"Acircumflex\0Udieresis":-50,"Acircumflex\0Ugrave":-50,"Acircumflex\0Uhungarumlaut":-50,"Acircumflex\0Umacron":-50,"Acircumflex\0Uogonek":-50,"Acircumflex\0Uring":-50,"Acircumflex\0V":-105,"Acircumflex\0W":-95,"Acircumflex\0Y":-55,"Acircumflex\0Yacute":-55,"Acircumflex\0Ydieresis":-55,"Acircumflex\0quoteright":-37,"Acircumflex\0u":-20,"Acircumflex\0uacute":-20,"Acircumflex\0ucircumflex":-20,"Acircumflex\0udieresis":-20,"Acircumflex\0ugrave":-20,"Acircumflex\0uhungarumlaut":-20,"Acircumflex\0umacron":-20,"Acircumflex\0uogonek":-20,"Acircumflex\0uring":-20,"Acircumflex\0v":-55,"Acircumflex\0w":-55,"Acircumflex\0y":-55,"Acircumflex\0yacute":-55,"Acircumflex\0ydieresis":-55,"Adieresis\0C":-30,"Adieresis\0Cacute":-30,"Adieresis\0Ccaron":-30,"Adieresis\0Ccedilla":-30,"Adieresis\0G":-35,"Adieresis\0Gbreve":-35,"Adieresis\0Gcommaaccent":-35,"Adieresis\0O":-40,"Adieresis\0Oacute":-40,"Adieresis\0Ocircumflex":-40,"Adieresis\0Odieresis":-40,"Adieresis\0Ograve":-40,"Adieresis\0Ohungarumlaut":-40,"Adieresis\0Omacron":-40,"Adieresis\0Oslash":-40,"Adieresis\0Otilde":-40,"Adieresis\0Q":-40,"Adieresis\0T":-37,"Adieresis\0Tcaron":-37,"Adieresis\0Tcommaaccent":-37,"Adieresis\0U":-50,"Adieresis\0Uacute":-50,"Adieresis\0Ucircumflex":-50,"Adieresis\0Udieresis":-50,"Adieresis\0Ugrave":-50,"Adieresis\0Uhungarumlaut":-50,"Adieresis\0Umacron":-50,"Adieresis\0Uogonek":-50,"Adieresis\0Uring":-50,"Adieresis\0V":-105,"Adieresis\0W":-95,"Adieresis\0Y":-55,"Adieresis\0Yacute":-55,"Adieresis\0Ydieresis":-55,"Adieresis\0quoteright":-37,"Adieresis\0u":-20,"Adieresis\0uacute":-20,"Adieresis\0ucircumflex":-20,"Adieresis\0udieresis":-20,"Adieresis\0ugrave":-20,"Adieresis\0uhungarumlaut":-20,"Adieresis\0umacron":-20,"Adieresis\0uogonek":-20,"Adieresis\0uring":-20,"Adieresis\0v":-55,"Adieresis\0w":-55,"Adieresis\0y":-55,"Adieresis\0yacute":-55,"Adieresis\0ydieresis":-55,"Agrave\0C":-30,"Agrave\0Cacute":-30,"Agrave\0Ccaron":-30,"Agrave\0Ccedilla":-30,"Agrave\0G":-35,"Agrave\0Gbreve":-35,"Agrave\0Gcommaaccent":-35,"Agrave\0O":-40,"Agrave\0Oacute":-40,"Agrave\0Ocircumflex":-40,"Agrave\0Odieresis":-40,"Agrave\0Ograve":-40,"Agrave\0Ohungarumlaut":-40,"Agrave\0Omacron":-40,"Agrave\0Oslash":-40,"Agrave\0Otilde":-40,"Agrave\0Q":-40,"Agrave\0T":-37,"Agrave\0Tcaron":-37,"Agrave\0Tcommaaccent":-37,"Agrave\0U":-50,"Agrave\0Uacute":-50,"Agrave\0Ucircumflex":-50,"Agrave\0Udieresis":-50,"Agrave\0Ugrave":-50,"Agrave\0Uhungarumlaut":-50,"Agrave\0Umacron":-50,"Agrave\0Uogonek":-50,"Agrave\0Uring":-50,"Agrave\0V":-105,"Agrave\0W":-95,"Agrave\0Y":-55,"Agrave\0Yacute":-55,"Agrave\0Ydieresis":-55,"Agrave\0quoteright":-37,"Agrave\0u":-20,"Agrave\0uacute":-20,"Agrave\0ucircumflex":-20,"Agrave\0udieresis":-20,"Agrave\0ugrave":-20,"Agrave\0uhungarumlaut":-20,"Agrave\0umacron":-20,"Agrave\0uogonek":-20,"Agrave\0uring":-20,"Agrave\0v":-55,"Agrave\0w":-55,"Agrave\0y":-55,"Agrave\0yacute":-55,"Agrave\0ydieresis":-55,"Amacron\0C":-30,"Amacron\0Cacute":-30,"Amacron\0Ccaron":-30,"Amacron\0Ccedilla":-30,"Amacron\0G":-35,"Amacron\0Gbreve":-35,"Amacron\0Gcommaaccent":-35,"Amacron\0O":-40,"Amacron\0Oacute":-40,"Amacron\0Ocircumflex":-40,"Amacron\0Odieresis":-40,"Amacron\0Ograve":-40,"Amacron\0Ohungarumlaut":-40,"Amacron\0Omacron":-40,"Amacron\0Oslash":-40,"Amacron\0Otilde":-40,"Amacron\0Q":-40,"Amacron\0T":-37,"Amacron\0Tcaron":-37,"Amacron\0Tcommaaccent":-37,"Amacron\0U":-50,"Amacron\0Uacute":-50,"Amacron\0Ucircumflex":-50,"Amacron\0Udieresis":-50,"Amacron\0Ugrave":-50,"Amacron\0Uhungarumlaut":-50,"Amacron\0Umacron":-50,"Amacron\0Uogonek":-50,"Amacron\0Uring":-50,"Amacron\0V":-105,"Amacron\0W":-95,"Amacron\0Y":-55,"Amacron\0Yacute":-55,"Amacron\0Ydieresis":-55,"Amacron\0quoteright":-37,"Amacron\0u":-20,"Amacron\0uacute":-20,"Amacron\0ucircumflex":-20,"Amacron\0udieresis":-20,"Amacron\0ugrave":-20,"Amacron\0uhungarumlaut":-20,"Amacron\0umacron":-20,"Amacron\0uogonek":-20,"Amacron\0uring":-20,"Amacron\0v":-55,"Amacron\0w":-55,"Amacron\0y":-55,"Amacron\0yacute":-55,"Amacron\0ydieresis":-55,"Aogonek\0C":-30,"Aogonek\0Cacute":-30,"Aogonek\0Ccaron":-30,"Aogonek\0Ccedilla":-30,"Aogonek\0G":-35,"Aogonek\0Gbreve":-35,"Aogonek\0Gcommaaccent":-35,"Aogonek\0O":-40,"Aogonek\0Oacute":-40,"Aogonek\0Ocircumflex":-40,"Aogonek\0Odieresis":-40,"Aogonek\0Ograve":-40,"Aogonek\0Ohungarumlaut":-40,"Aogonek\0Omacron":-40,"Aogonek\0Oslash":-40,"Aogonek\0Otilde":-40,"Aogonek\0Q":-40,"Aogonek\0T":-37,"Aogonek\0Tcaron":-37,"Aogonek\0Tcommaaccent":-37,"Aogonek\0U":-50,"Aogonek\0Uacute":-50,"Aogonek\0Ucircumflex":-50,"Aogonek\0Udieresis":-50,"Aogonek\0Ugrave":-50,"Aogonek\0Uhungarumlaut":-50,"Aogonek\0Umacron":-50,"Aogonek\0Uogonek":-50,"Aogonek\0Uring":-50,"Aogonek\0V":-105,"Aogonek\0W":-95,"Aogonek\0Y":-55,"Aogonek\0Yacute":-55,"Aogonek\0Ydieresis":-55,"Aogonek\0quoteright":-37,"Aogonek\0u":-20,"Aogonek\0uacute":-20,"Aogonek\0ucircumflex":-20,"Aogonek\0udieresis":-20,"Aogonek\0ugrave":-20,"Aogonek\0uhungarumlaut":-20,"Aogonek\0umacron":-20,"Aogonek\0uogonek":-20,"Aogonek\0uring":-20,"Aogonek\0v":-55,"Aogonek\0w":-55,"Aogonek\0y":-55,"Aogonek\0yacute":-55,"Aogonek\0ydieresis":-55,"Aring\0C":-30,"Aring\0Cacute":-30,"Aring\0Ccaron":-30,"Aring\0Ccedilla":-30,"Aring\0G":-35,"Aring\0Gbreve":-35,"Aring\0Gcommaaccent":-35,"Aring\0O":-40,"Aring\0Oacute":-40,"Aring\0Ocircumflex":-40,"Aring\0Odieresis":-40,"Aring\0Ograve":-40,"Aring\0Ohungarumlaut":-40,"Aring\0Omacron":-40,"Aring\0Oslash":-40,"Aring\0Otilde":-40,"Aring\0Q":-40,"Aring\0T":-37,"Aring\0Tcaron":-37,"Aring\0Tcommaaccent":-37,"Aring\0U":-50,"Aring\0Uacute":-50,"Aring\0Ucircumflex":-50,"Aring\0Udieresis":-50,"Aring\0Ugrave":-50,"Aring\0Uhungarumlaut":-50,"Aring\0Umacron":-50,"Aring\0Uogonek":-50,"Aring\0Uring":-50,"Aring\0V":-105,"Aring\0W":-95,"Aring\0Y":-55,"Aring\0Yacute":-55,"Aring\0Ydieresis":-55,"Aring\0quoteright":-37,"Aring\0u":-20,"Aring\0uacute":-20,"Aring\0ucircumflex":-20,"Aring\0udieresis":-20,"Aring\0ugrave":-20,"Aring\0uhungarumlaut":-20,"Aring\0umacron":-20,"Aring\0uogonek":-20,"Aring\0uring":-20,"Aring\0v":-55,"Aring\0w":-55,"Aring\0y":-55,"Aring\0yacute":-55,"Aring\0ydieresis":-55,"Atilde\0C":-30,"Atilde\0Cacute":-30,"Atilde\0Ccaron":-30,"Atilde\0Ccedilla":-30,"Atilde\0G":-35,"Atilde\0Gbreve":-35,"Atilde\0Gcommaaccent":-35,"Atilde\0O":-40,"Atilde\0Oacute":-40,"Atilde\0Ocircumflex":-40,"Atilde\0Odieresis":-40,"Atilde\0Ograve":-40,"Atilde\0Ohungarumlaut":-40,"Atilde\0Omacron":-40,"Atilde\0Oslash":-40,"Atilde\0Otilde":-40,"Atilde\0Q":-40,"Atilde\0T":-37,"Atilde\0Tcaron":-37,"Atilde\0Tcommaaccent":-37,"Atilde\0U":-50,"Atilde\0Uacute":-50,"Atilde\0Ucircumflex":-50,"Atilde\0Udieresis":-50,"Atilde\0Ugrave":-50,"Atilde\0Uhungarumlaut":-50,"Atilde\0Umacron":-50,"Atilde\0Uogonek":-50,"Atilde\0Uring":-50,"Atilde\0V":-105,"Atilde\0W":-95,"Atilde\0Y":-55,"Atilde\0Yacute":-55,"Atilde\0Ydieresis":-55,"Atilde\0quoteright":-37,"Atilde\0u":-20,"Atilde\0uacute":-20,"Atilde\0ucircumflex":-20,"Atilde\0udieresis":-20,"Atilde\0ugrave":-20,"Atilde\0uhungarumlaut":-20,"Atilde\0umacron":-20,"Atilde\0uogonek":-20,"Atilde\0uring":-20,"Atilde\0v":-55,"Atilde\0w":-55,"Atilde\0y":-55,"Atilde\0yacute":-55,"Atilde\0ydieresis":-55,"B\0A":-25,"B\0Aacute":-25,"B\0Abreve":-25,"B\0Acircumflex":-25,"B\0Adieresis":-25,"B\0Agrave":-25,"B\0Amacron":-25,"B\0Aogonek":-25,"B\0Aring":-25,"B\0Atilde":-25,"B\0U":-10,"B\0Uacute":-10,"B\0Ucircumflex":-10,"B\0Udieresis":-10,"B\0Ugrave":-10,"B\0Uhungarumlaut":-10,"B\0Umacron":-10,"B\0Uogonek":-10,"B\0Uring":-10,"D\0A":-35,"D\0Aacute":-35,"D\0Abreve":-35,"D\0Acircumflex":-35,"D\0Adieresis":-35,"D\0Agrave":-35,"D\0Amacron":-35,"D\0Aogonek":-35,"D\0Aring":-35,"D\0Atilde":-35,"D\0V":-40,"D\0W":-40,"D\0Y":-40,"D\0Yacute":-40,"D\0Ydieresis":-40,"Dcaron\0A":-35,"Dcaron\0Aacute":-35,"Dcaron\0Abreve":-35,"Dcaron\0Acircumflex":-35,"Dcaron\0Adieresis":-35,"Dcaron\0Agrave":-35,"Dcaron\0Amacron":-35,"Dcaron\0Aogonek":-35,"Dcaron\0Aring":-35,"Dcaron\0Atilde":-35,"Dcaron\0V":-40,"Dcaron\0W":-40,"Dcaron\0Y":-40,"Dcaron\0Yacute":-40,"Dcaron\0Ydieresis":-40,"Dcroat\0A":-35,"Dcroat\0Aacute":-35,"Dcroat\0Abreve":-35,"Dcroat\0Acircumflex":-35,"Dcroat\0Adieresis":-35,"Dcroat\0Agrave":-35,"Dcroat\0Amacron":-35,"Dcroat\0Aogonek":-35,"Dcroat\0Aring":-35,"Dcroat\0Atilde":-35,"Dcroat\0V":-40,"Dcroat\0W":-40,"Dcroat\0Y":-40,"Dcroat\0Yacute":-40,"Dcroat\0Ydieresis":-40,"F\0A":-115,"F\0Aacute":-115,"F\0Abreve":-115,"F\0Acircumflex":-115,"F\0Adieresis":-115,"F\0Agrave":-115,"F\0Amacron":-115,"F\0Aogonek":-115,"F\0Aring":-115,"F\0Atilde":-115,"F\0a":-75,"F\0aacute":-75,"F\0abreve":-75,"F\0acircumflex":-75,"F\0adieresis":-75,"F\0agrave":-75,"F\0amacron":-75,"F\0aogonek":-75,"F\0aring":-75,"F\0atilde":-75,"F\0comma":-135,"F\0e":-75,"F\0eacute":-75,"F\0ecaron":-75,"F\0ecircumflex":-75,"F\0edieresis":-75,"F\0edotaccent":-75,"F\0egrave":-75,"F\0emacron":-75,"F\0eogonek":-75,"F\0i":-45,"F\0iacute":-45,"F\0icircumflex":-45,"F\0idieresis":-45,"F\0igrave":-45,"F\0imacron":-45,"F\0iogonek":-45,"F\0o":-105,"F\0oacute":-105,"F\0ocircumflex":-105,"F\0odieresis":-105,"F\0ograve":-105,"F\0ohungarumlaut":-105,"F\0omacron":-105,"F\0oslash":-105,"F\0otilde":-105,"F\0period":-135,"F\0r":-55,"F\0racute":-55,"F\0rcaron":-55,"F\0rcommaaccent":-55,"J\0A":-40,"J\0Aacute":-40,"J\0Abreve":-40,"J\0Acircumflex":-40,"J\0Adieresis":-40,"J\0Agrave":-40,"J\0Amacron":-40,"J\0Aogonek":-40,"J\0Aring":-40,"J\0Atilde":-40,"J\0a":-35,"J\0aacute":-35,"J\0abreve":-35,"J\0acircumflex":-35,"J\0adieresis":-35,"J\0agrave":-35,"J\0amacron":-35,"J\0aogonek":-35,"J\0aring":-35,"J\0atilde":-35,"J\0comma":-25,"J\0e":-25,"J\0eacute":-25,"J\0ecaron":-25,"J\0ecircumflex":-25,"J\0edieresis":-25,"J\0edotaccent":-25,"J\0egrave":-25,"J\0emacron":-25,"J\0eogonek":-25,"J\0o":-25,"J\0oacute":-25,"J\0ocircumflex":-25,"J\0odieresis":-25,"J\0ograve":-25,"J\0ohungarumlaut":-25,"J\0omacron":-25,"J\0oslash":-25,"J\0otilde":-25,"J\0period":-25,"J\0u":-35,"J\0uacute":-35,"J\0ucircumflex":-35,"J\0udieresis":-35,"J\0ugrave":-35,"J\0uhungarumlaut":-35,"J\0umacron":-35,"J\0uogonek":-35,"J\0uring":-35,"K\0O":-50,"K\0Oacute":-50,"K\0Ocircumflex":-50,"K\0Odieresis":-50,"K\0Ograve":-50,"K\0Ohungarumlaut":-50,"K\0Omacron":-50,"K\0Oslash":-50,"K\0Otilde":-50,"K\0e":-35,"K\0eacute":-35,"K\0ecaron":-35,"K\0ecircumflex":-35,"K\0edieresis":-35,"K\0edotaccent":-35,"K\0egrave":-35,"K\0emacron":-35,"K\0eogonek":-35,"K\0o":-40,"K\0oacute":-40,"K\0ocircumflex":-40,"K\0odieresis":-40,"K\0ograve":-40,"K\0ohungarumlaut":-40,"K\0omacron":-40,"K\0oslash":-40,"K\0otilde":-40,"K\0u":-40,"K\0uacute":-40,"K\0ucircumflex":-40,"K\0udieresis":-40,"K\0ugrave":-40,"K\0uhungarumlaut":-40,"K\0umacron":-40,"K\0uogonek":-40,"K\0uring":-40,"K\0y":-40,"K\0yacute":-40,"K\0ydieresis":-40,"Kcommaaccent\0O":-50,"Kcommaaccent\0Oacute":-50,"Kcommaaccent\0Ocircumflex":-50,"Kcommaaccent\0Odieresis":-50,"Kcommaaccent\0Ograve":-50,"Kcommaaccent\0Ohungarumlaut":-50,"Kcommaaccent\0Omacron":-50,"Kcommaaccent\0Oslash":-50,"Kcommaaccent\0Otilde":-50,"Kcommaaccent\0e":-35,"Kcommaaccent\0eacute":-35,"Kcommaaccent\0ecaron":-35,"Kcommaaccent\0ecircumflex":-35,"Kcommaaccent\0edieresis":-35,"Kcommaaccent\0edotaccent":-35,"Kcommaaccent\0egrave":-35,"Kcommaaccent\0emacron":-35,"Kcommaaccent\0eogonek":-35,"Kcommaaccent\0o":-40,"Kcommaaccent\0oacute":-40,"Kcommaaccent\0ocircumflex":-40,"Kcommaaccent\0odieresis":-40,"Kcommaaccent\0ograve":-40,"Kcommaaccent\0ohungarumlaut":-40,"Kcommaaccent\0omacron":-40,"Kcommaaccent\0oslash":-40,"Kcommaaccent\0otilde":-40,"Kcommaaccent\0u":-40,"Kcommaaccent\0uacute":-40,"Kcommaaccent\0ucircumflex":-40,"Kcommaaccent\0udieresis":-40,"Kcommaaccent\0ugrave":-40,"Kcommaaccent\0uhungarumlaut":-40,"Kcommaaccent\0umacron":-40,"Kcommaaccent\0uogonek":-40,"Kcommaaccent\0uring":-40,"Kcommaaccent\0y":-40,"Kcommaaccent\0yacute":-40,"Kcommaaccent\0ydieresis":-40,"L\0T":-20,"L\0Tcaron":-20,"L\0Tcommaaccent":-20,"L\0V":-55,"L\0W":-55,"L\0Y":-20,"L\0Yacute":-20,"L\0Ydieresis":-20,"L\0quoteright":-37,"L\0y":-30,"L\0yacute":-30,"L\0ydieresis":-30,"Lacute\0T":-20,"Lacute\0Tcaron":-20,"Lacute\0Tcommaaccent":-20,"Lacute\0V":-55,"Lacute\0W":-55,"Lacute\0Y":-20,"Lacute\0Yacute":-20,"Lacute\0Ydieresis":-20,"Lacute\0quoteright":-37,"Lacute\0y":-30,"Lacute\0yacute":-30,"Lacute\0ydieresis":-30,"Lcommaaccent\0T":-20,"Lcommaaccent\0Tcaron":-20,"Lcommaaccent\0Tcommaaccent":-20,"Lcommaaccent\0V":-55,"Lcommaaccent\0W":-55,"Lcommaaccent\0Y":-20,"Lcommaaccent\0Yacute":-20,"Lcommaaccent\0Ydieresis":-20,"Lcommaaccent\0quoteright":-37,"Lcommaaccent\0y":-30,"Lcommaaccent\0yacute":-30,"Lcommaaccent\0ydieresis":-30,"Lslash\0T":-20,"Lslash\0Tcaron":-20,"Lslash\0Tcommaaccent":-20,"Lslash\0V":-55,"Lslash\0W":-55,"Lslash\0Y":-20,"Lslash\0Yacute":-20,"Lslash\0Ydieresis":-20,"Lslash\0quoteright":-37,"Lslash\0y":-30,"Lslash\0yacute":-30,"Lslash\0ydieresis":-30,"N\0A":-27,"N\0Aacute":-27,"N\0Abreve":-27,"N\0Acircumflex":-27,"N\0Adieresis":-27,"N\0Agrave":-27,"N\0Amacron":-27,"N\0Aogonek":-27,"N\0Aring":-27,"N\0Atilde":-27,"Nacute\0A":-27,"Nacute\0Aacute":-27,"Nacute\0Abreve":-27,"Nacute\0Acircumflex":-27,"Nacute\0Adieresis":-27,"Nacute\0Agrave":-27,"Nacute\0Amacron":-27,"Nacute\0Aogonek":-27,"Nacute\0Aring":-27,"Nacute\0Atilde":-27,"Ncaron\0A":-27,"Ncaron\0Aacute":-27,"Ncaron\0Abreve":-27,"Ncaron\0Acircumflex":-27,"Ncaron\0Adieresis":-27,"Ncaron\0Agrave":-27,"Ncaron\0Amacron":-27,"Ncaron\0Aogonek":-27,"Ncaron\0Aring":-27,"Ncaron\0Atilde":-27,"Ncommaaccent\0A":-27,"Ncommaaccent\0Aacute":-27,"Ncommaaccent\0Abreve":-27,"Ncommaaccent\0Acircumflex":-27,"Ncommaaccent\0Adieresis":-27,"Ncommaaccent\0Agrave":-27,"Ncommaaccent\0Amacron":-27,"Ncommaaccent\0Aogonek":-27,"Ncommaaccent\0Aring":-27,"Ncommaaccent\0Atilde":-27,"Ntilde\0A":-27,"Ntilde\0Aacute":-27,"Ntilde\0Abreve":-27,"Ntilde\0Acircumflex":-27,"Ntilde\0Adieresis":-27,"Ntilde\0Agrave":-27,"Ntilde\0Amacron":-27,"Ntilde\0Aogonek":-27,"Ntilde\0Aring":-27,"Ntilde\0Atilde":-27,"O\0A":-55,"O\0Aacute":-55,"O\0Abreve":-55,"O\0Acircumflex":-55,"O\0Adieresis":-55,"O\0Agrave":-55,"O\0Amacron":-55,"O\0Aogonek":-55,"O\0Aring":-55,"O\0Atilde":-55,"O\0T":-40,"O\0Tcaron":-40,"O\0Tcommaaccent":-40,"O\0V":-50,"O\0W":-50,"O\0X":-40,"O\0Y":-50,"O\0Yacute":-50,"O\0Ydieresis":-50,"Oacute\0A":-55,"Oacute\0Aacute":-55,"Oacute\0Abreve":-55,"Oacute\0Acircumflex":-55,"Oacute\0Adieresis":-55,"Oacute\0Agrave":-55,"Oacute\0Amacron":-55,"Oacute\0Aogonek":-55,"Oacute\0Aring":-55,"Oacute\0Atilde":-55,"Oacute\0T":-40,"Oacute\0Tcaron":-40,"Oacute\0Tcommaaccent":-40,"Oacute\0V":-50,"Oacute\0W":-50,"Oacute\0X":-40,"Oacute\0Y":-50,"Oacute\0Yacute":-50,"Oacute\0Ydieresis":-50,"Ocircumflex\0A":-55,"Ocircumflex\0Aacute":-55,"Ocircumflex\0Abreve":-55,"Ocircumflex\0Acircumflex":-55,"Ocircumflex\0Adieresis":-55,"Ocircumflex\0Agrave":-55,"Ocircumflex\0Amacron":-55,"Ocircumflex\0Aogonek":-55,"Ocircumflex\0Aring":-55,"Ocircumflex\0Atilde":-55,"Ocircumflex\0T":-40,"Ocircumflex\0Tcaron":-40,"Ocircumflex\0Tcommaaccent":-40,"Ocircumflex\0V":-50,"Ocircumflex\0W":-50,"Ocircumflex\0X":-40,"Ocircumflex\0Y":-50,"Ocircumflex\0Yacute":-50,"Ocircumflex\0Ydieresis":-50,"Odieresis\0A":-55,"Odieresis\0Aacute":-55,"Odieresis\0Abreve":-55,"Odieresis\0Acircumflex":-55,"Odieresis\0Adieresis":-55,"Odieresis\0Agrave":-55,"Odieresis\0Amacron":-55,"Odieresis\0Aogonek":-55,"Odieresis\0Aring":-55,"Odieresis\0Atilde":-55,"Odieresis\0T":-40,"Odieresis\0Tcaron":-40,"Odieresis\0Tcommaaccent":-40,"Odieresis\0V":-50,"Odieresis\0W":-50,"Odieresis\0X":-40,"Odieresis\0Y":-50,"Odieresis\0Yacute":-50,"Odieresis\0Ydieresis":-50,"Ograve\0A":-55,"Ograve\0Aacute":-55,"Ograve\0Abreve":-55,"Ograve\0Acircumflex":-55,"Ograve\0Adieresis":-55,"Ograve\0Agrave":-55,"Ograve\0Amacron":-55,"Ograve\0Aogonek":-55,"Ograve\0Aring":-55,"Ograve\0Atilde":-55,"Ograve\0T":-40,"Ograve\0Tcaron":-40,"Ograve\0Tcommaaccent":-40,"Ograve\0V":-50,"Ograve\0W":-50,"Ograve\0X":-40,"Ograve\0Y":-50,"Ograve\0Yacute":-50,"Ograve\0Ydieresis":-50,"Ohungarumlaut\0A":-55,"Ohungarumlaut\0Aacute":-55,"Ohungarumlaut\0Abreve":-55,"Ohungarumlaut\0Acircumflex":-55,"Ohungarumlaut\0Adieresis":-55,"Ohungarumlaut\0Agrave":-55,"Ohungarumlaut\0Amacron":-55,"Ohungarumlaut\0Aogonek":-55,"Ohungarumlaut\0Aring":-55,"Ohungarumlaut\0Atilde":-55,"Ohungarumlaut\0T":-40,"Ohungarumlaut\0Tcaron":-40,"Ohungarumlaut\0Tcommaaccent":-40,"Ohungarumlaut\0V":-50,"Ohungarumlaut\0W":-50,"Ohungarumlaut\0X":-40,"Ohungarumlaut\0Y":-50,"Ohungarumlaut\0Yacute":-50,"Ohungarumlaut\0Ydieresis":-50,"Omacron\0A":-55,"Omacron\0Aacute":-55,"Omacron\0Abreve":-55,"Omacron\0Acircumflex":-55,"Omacron\0Adieresis":-55,"Omacron\0Agrave":-55,"Omacron\0Amacron":-55,"Omacron\0Aogonek":-55,"Omacron\0Aring":-55,"Omacron\0Atilde":-55,"Omacron\0T":-40,"Omacron\0Tcaron":-40,"Omacron\0Tcommaaccent":-40,"Omacron\0V":-50,"Omacron\0W":-50,"Omacron\0X":-40,"Omacron\0Y":-50,"Omacron\0Yacute":-50,"Omacron\0Ydieresis":-50,"Oslash\0A":-55,"Oslash\0Aacute":-55,"Oslash\0Abreve":-55,"Oslash\0Acircumflex":-55,"Oslash\0Adieresis":-55,"Oslash\0Agrave":-55,"Oslash\0Amacron":-55,"Oslash\0Aogonek":-55,"Oslash\0Aring":-55,"Oslash\0Atilde":-55,"Oslash\0T":-40,"Oslash\0Tcaron":-40,"Oslash\0Tcommaaccent":-40,"Oslash\0V":-50,"Oslash\0W":-50,"Oslash\0X":-40,"Oslash\0Y":-50,"Oslash\0Yacute":-50,"Oslash\0Ydieresis":-50,"Otilde\0A":-55,"Otilde\0Aacute":-55,"Otilde\0Abreve":-55,"Otilde\0Acircumflex":-55,"Otilde\0Adieresis":-55,"Otilde\0Agrave":-55,"Otilde\0Amacron":-55,"Otilde\0Aogonek":-55,"Otilde\0Aring":-55,"Otilde\0Atilde":-55,"Otilde\0T":-40,"Otilde\0Tcaron":-40,"Otilde\0Tcommaaccent":-40,"Otilde\0V":-50,"Otilde\0W":-50,"Otilde\0X":-40,"Otilde\0Y":-50,"Otilde\0Yacute":-50,"Otilde\0Ydieresis":-50,"P\0A":-90,"P\0Aacute":-90,"P\0Abreve":-90,"P\0Acircumflex":-90,"P\0Adieresis":-90,"P\0Agrave":-90,"P\0Amacron":-90,"P\0Aogonek":-90,"P\0Aring":-90,"P\0Atilde":-90,"P\0a":-80,"P\0aacute":-80,"P\0abreve":-80,"P\0acircumflex":-80,"P\0adieresis":-80,"P\0agrave":-80,"P\0amacron":-80,"P\0aogonek":-80,"P\0aring":-80,"P\0atilde":-80,"P\0comma":-135,"P\0e":-80,"P\0eacute":-80,"P\0ecaron":-80,"P\0ecircumflex":-80,"P\0edieresis":-80,"P\0edotaccent":-80,"P\0egrave":-80,"P\0emacron":-80,"P\0eogonek":-80,"P\0o":-80,"P\0oacute":-80,"P\0ocircumflex":-80,"P\0odieresis":-80,"P\0ograve":-80,"P\0ohungarumlaut":-80,"P\0omacron":-80,"P\0oslash":-80,"P\0otilde":-80,"P\0period":-135,"Q\0U":-10,"Q\0Uacute":-10,"Q\0Ucircumflex":-10,"Q\0Udieresis":-10,"Q\0Ugrave":-10,"Q\0Uhungarumlaut":-10,"Q\0Umacron":-10,"Q\0Uogonek":-10,"Q\0Uring":-10,"R\0O":-40,"R\0Oacute":-40,"R\0Ocircumflex":-40,"R\0Odieresis":-40,"R\0Ograve":-40,"R\0Ohungarumlaut":-40,"R\0Omacron":-40,"R\0Oslash":-40,"R\0Otilde":-40,"R\0U":-40,"R\0Uacute":-40,"R\0Ucircumflex":-40,"R\0Udieresis":-40,"R\0Ugrave":-40,"R\0Uhungarumlaut":-40,"R\0Umacron":-40,"R\0Uogonek":-40,"R\0Uring":-40,"R\0V":-18,"R\0W":-18,"R\0Y":-18,"R\0Yacute":-18,"R\0Ydieresis":-18,"Racute\0O":-40,"Racute\0Oacute":-40,"Racute\0Ocircumflex":-40,"Racute\0Odieresis":-40,"Racute\0Ograve":-40,"Racute\0Ohungarumlaut":-40,"Racute\0Omacron":-40,"Racute\0Oslash":-40,"Racute\0Otilde":-40,"Racute\0U":-40,"Racute\0Uacute":-40,"Racute\0Ucircumflex":-40,"Racute\0Udieresis":-40,"Racute\0Ugrave":-40,"Racute\0Uhungarumlaut":-40,"Racute\0Umacron":-40,"Racute\0Uogonek":-40,"Racute\0Uring":-40,"Racute\0V":-18,"Racute\0W":-18,"Racute\0Y":-18,"Racute\0Yacute":-18,"Racute\0Ydieresis":-18,"Rcaron\0O":-40,"Rcaron\0Oacute":-40,"Rcaron\0Ocircumflex":-40,"Rcaron\0Odieresis":-40,"Rcaron\0Ograve":-40,"Rcaron\0Ohungarumlaut":-40,"Rcaron\0Omacron":-40,"Rcaron\0Oslash":-40,"Rcaron\0Otilde":-40,"Rcaron\0U":-40,"Rcaron\0Uacute":-40,"Rcaron\0Ucircumflex":-40,"Rcaron\0Udieresis":-40,"Rcaron\0Ugrave":-40,"Rcaron\0Uhungarumlaut":-40,"Rcaron\0Umacron":-40,"Rcaron\0Uogonek":-40,"Rcaron\0Uring":-40,"Rcaron\0V":-18,"Rcaron\0W":-18,"Rcaron\0Y":-18,"Rcaron\0Yacute":-18,"Rcaron\0Ydieresis":-18,"Rcommaaccent\0O":-40,"Rcommaaccent\0Oacute":-40,"Rcommaaccent\0Ocircumflex":-40,"Rcommaaccent\0Odieresis":-40,"Rcommaaccent\0Ograve":-40,"Rcommaaccent\0Ohungarumlaut":-40,"Rcommaaccent\0Omacron":-40,"Rcommaaccent\0Oslash":-40,"Rcommaaccent\0Otilde":-40,"Rcommaaccent\0U":-40,"Rcommaaccent\0Uacute":-40,"Rcommaaccent\0Ucircumflex":-40,"Rcommaaccent\0Udieresis":-40,"Rcommaaccent\0Ugrave":-40,"Rcommaaccent\0Uhungarumlaut":-40,"Rcommaaccent\0Umacron":-40,"Rcommaaccent\0Uogonek":-40,"Rcommaaccent\0Uring":-40,"Rcommaaccent\0V":-18,"Rcommaaccent\0W":-18,"Rcommaaccent\0Y":-18,"Rcommaaccent\0Yacute":-18,"Rcommaaccent\0Ydieresis":-18,"T\0A":-50,"T\0Aacute":-50,"T\0Abreve":-50,"T\0Acircumflex":-50,"T\0Adieresis":-50,"T\0Agrave":-50,"T\0Amacron":-50,"T\0Aogonek":-50,"T\0Aring":-50,"T\0Atilde":-50,"T\0O":-18,"T\0Oacute":-18,"T\0Ocircumflex":-18,"T\0Odieresis":-18,"T\0Ograve":-18,"T\0Ohungarumlaut":-18,"T\0Omacron":-18,"T\0Oslash":-18,"T\0Otilde":-18,"T\0a":-92,"T\0aacute":-92,"T\0abreve":-92,"T\0acircumflex":-92,"T\0adieresis":-92,"T\0agrave":-92,"T\0amacron":-92,"T\0aogonek":-92,"T\0aring":-92,"T\0atilde":-92,"T\0colon":-55,"T\0comma":-74,"T\0e":-92,"T\0eacute":-92,"T\0ecaron":-92,"T\0ecircumflex":-52,"T\0edieresis":-52,"T\0edotaccent":-92,"T\0egrave":-52,"T\0emacron":-52,"T\0eogonek":-92,"T\0hyphen":-74,"T\0i":-55,"T\0iacute":-55,"T\0iogonek":-55,"T\0o":-92,"T\0oacute":-92,"T\0ocircumflex":-92,"T\0odieresis":-92,"T\0ograve":-92,"T\0ohungarumlaut":-92,"T\0omacron":-92,"T\0oslash":-92,"T\0otilde":-92,"T\0period":-74,"T\0r":-55,"T\0racute":-55,"T\0rcaron":-55,"T\0rcommaaccent":-55,"T\0semicolon":-65,"T\0u":-55,"T\0uacute":-55,"T\0ucircumflex":-55,"T\0udieresis":-55,"T\0ugrave":-55,"T\0uhungarumlaut":-55,"T\0umacron":-55,"T\0uogonek":-55,"T\0uring":-55,"T\0w":-74,"T\0y":-74,"T\0yacute":-74,"T\0ydieresis":-34,"Tcaron\0A":-50,"Tcaron\0Aacute":-50,"Tcaron\0Abreve":-50,"Tcaron\0Acircumflex":-50,"Tcaron\0Adieresis":-50,"Tcaron\0Agrave":-50,"Tcaron\0Amacron":-50,"Tcaron\0Aogonek":-50,"Tcaron\0Aring":-50,"Tcaron\0Atilde":-50,"Tcaron\0O":-18,"Tcaron\0Oacute":-18,"Tcaron\0Ocircumflex":-18,"Tcaron\0Odieresis":-18,"Tcaron\0Ograve":-18,"Tcaron\0Ohungarumlaut":-18,"Tcaron\0Omacron":-18,"Tcaron\0Oslash":-18,"Tcaron\0Otilde":-18,"Tcaron\0a":-92,"Tcaron\0aacute":-92,"Tcaron\0abreve":-92,"Tcaron\0acircumflex":-92,"Tcaron\0adieresis":-92,"Tcaron\0agrave":-92,"Tcaron\0amacron":-92,"Tcaron\0aogonek":-92,"Tcaron\0aring":-92,"Tcaron\0atilde":-92,"Tcaron\0colon":-55,"Tcaron\0comma":-74,"Tcaron\0e":-92,"Tcaron\0eacute":-92,"Tcaron\0ecaron":-92,"Tcaron\0ecircumflex":-52,"Tcaron\0edieresis":-52,"Tcaron\0edotaccent":-92,"Tcaron\0egrave":-52,"Tcaron\0emacron":-52,"Tcaron\0eogonek":-92,"Tcaron\0hyphen":-74,"Tcaron\0i":-55,"Tcaron\0iacute":-55,"Tcaron\0iogonek":-55,"Tcaron\0o":-92,"Tcaron\0oacute":-92,"Tcaron\0ocircumflex":-92,"Tcaron\0odieresis":-92,"Tcaron\0ograve":-92,"Tcaron\0ohungarumlaut":-92,"Tcaron\0omacron":-92,"Tcaron\0oslash":-92,"Tcaron\0otilde":-92,"Tcaron\0period":-74,"Tcaron\0r":-55,"Tcaron\0racute":-55,"Tcaron\0rcaron":-55,"Tcaron\0rcommaaccent":-55,"Tcaron\0semicolon":-65,"Tcaron\0u":-55,"Tcaron\0uacute":-55,"Tcaron\0ucircumflex":-55,"Tcaron\0udieresis":-55,"Tcaron\0ugrave":-55,"Tcaron\0uhungarumlaut":-55,"Tcaron\0umacron":-55,"Tcaron\0uogonek":-55,"Tcaron\0uring":-55,"Tcaron\0w":-74,"Tcaron\0y":-74,"Tcaron\0yacute":-74,"Tcaron\0ydieresis":-34,"Tcommaaccent\0A":-50,"Tcommaaccent\0Aacute":-50,"Tcommaaccent\0Abreve":-50,"Tcommaaccent\0Acircumflex":-50,"Tcommaaccent\0Adieresis":-50,"Tcommaaccent\0Agrave":-50,"Tcommaaccent\0Amacron":-50,"Tcommaaccent\0Aogonek":-50,"Tcommaaccent\0Aring":-50,"Tcommaaccent\0Atilde":-50,"Tcommaaccent\0O":-18,"Tcommaaccent\0Oacute":-18,"Tcommaaccent\0Ocircumflex":-18,"Tcommaaccent\0Odieresis":-18,"Tcommaaccent\0Ograve":-18,"Tcommaaccent\0Ohungarumlaut":-18,"Tcommaaccent\0Omacron":-18,"Tcommaaccent\0Oslash":-18,"Tcommaaccent\0Otilde":-18,"Tcommaaccent\0a":-92,"Tcommaaccent\0aacute":-92,"Tcommaaccent\0abreve":-92,"Tcommaaccent\0acircumflex":-92,"Tcommaaccent\0adieresis":-92,"Tcommaaccent\0agrave":-92,"Tcommaaccent\0amacron":-92,"Tcommaaccent\0aogonek":-92,"Tcommaaccent\0aring":-92,"Tcommaaccent\0atilde":-92,"Tcommaaccent\0colon":-55,"Tcommaaccent\0comma":-74,"Tcommaaccent\0e":-92,"Tcommaaccent\0eacute":-92,"Tcommaaccent\0ecaron":-92,"Tcommaaccent\0ecircumflex":-52,"Tcommaaccent\0edieresis":-52,"Tcommaaccent\0edotaccent":-92,"Tcommaaccent\0egrave":-52,"Tcommaaccent\0emacron":-52,"Tcommaaccent\0eogonek":-92,"Tcommaaccent\0hyphen":-74,"Tcommaaccent\0i":-55,"Tcommaaccent\0iacute":-55,"Tcommaaccent\0iogonek":-55,"Tcommaaccent\0o":-92,"Tcommaaccent\0oacute":-92,"Tcommaaccent\0ocircumflex":-92,"Tcommaaccent\0odieresis":-92,"Tcommaaccent\0ograve":-92,"Tcommaaccent\0ohungarumlaut":-92,"Tcommaaccent\0omacron":-92,"Tcommaaccent\0oslash":-92,"Tcommaaccent\0otilde":-92,"Tcommaaccent\0period":-74,"Tcommaaccent\0r":-55,"Tcommaaccent\0racute":-55,"Tcommaaccent\0rcaron":-55,"Tcommaaccent\0rcommaaccent":-55,"Tcommaaccent\0semicolon":-65,"Tcommaaccent\0u":-55,"Tcommaaccent\0uacute":-55,"Tcommaaccent\0ucircumflex":-55,"Tcommaaccent\0udieresis":-55,"Tcommaaccent\0ugrave":-55,"Tcommaaccent\0uhungarumlaut":-55,"Tcommaaccent\0umacron":-55,"Tcommaaccent\0uogonek":-55,"Tcommaaccent\0uring":-55,"Tcommaaccent\0w":-74,"Tcommaaccent\0y":-74,"Tcommaaccent\0yacute":-74,"Tcommaaccent\0ydieresis":-34,"U\0A":-40,"U\0Aacute":-40,"U\0Abreve":-40,"U\0Acircumflex":-40,"U\0Adieresis":-40,"U\0Agrave":-40,"U\0Amacron":-40,"U\0Aogonek":-40,"U\0Aring":-40,"U\0Atilde":-40,"U\0comma":-25,"U\0period":-25,"Uacute\0A":-40,"Uacute\0Aacute":-40,"Uacute\0Abreve":-40,"Uacute\0Acircumflex":-40,"Uacute\0Adieresis":-40,"Uacute\0Agrave":-40,"Uacute\0Amacron":-40,"Uacute\0Aogonek":-40,"Uacute\0Aring":-40,"Uacute\0Atilde":-40,"Uacute\0comma":-25,"Uacute\0period":-25,"Ucircumflex\0A":-40,"Ucircumflex\0Aacute":-40,"Ucircumflex\0Abreve":-40,"Ucircumflex\0Acircumflex":-40,"Ucircumflex\0Adieresis":-40,"Ucircumflex\0Agrave":-40,"Ucircumflex\0Amacron":-40,"Ucircumflex\0Aogonek":-40,"Ucircumflex\0Aring":-40,"Ucircumflex\0Atilde":-40,"Ucircumflex\0comma":-25,"Ucircumflex\0period":-25,"Udieresis\0A":-40,"Udieresis\0Aacute":-40,"Udieresis\0Abreve":-40,"Udieresis\0Acircumflex":-40,"Udieresis\0Adieresis":-40,"Udieresis\0Agrave":-40,"Udieresis\0Amacron":-40,"Udieresis\0Aogonek":-40,"Udieresis\0Aring":-40,"Udieresis\0Atilde":-40,"Udieresis\0comma":-25,"Udieresis\0period":-25,"Ugrave\0A":-40,"Ugrave\0Aacute":-40,"Ugrave\0Abreve":-40,"Ugrave\0Acircumflex":-40,"Ugrave\0Adieresis":-40,"Ugrave\0Agrave":-40,"Ugrave\0Amacron":-40,"Ugrave\0Aogonek":-40,"Ugrave\0Aring":-40,"Ugrave\0Atilde":-40,"Ugrave\0comma":-25,"Ugrave\0period":-25,"Uhungarumlaut\0A":-40,"Uhungarumlaut\0Aacute":-40,"Uhungarumlaut\0Abreve":-40,"Uhungarumlaut\0Acircumflex":-40,"Uhungarumlaut\0Adieresis":-40,"Uhungarumlaut\0Agrave":-40,"Uhungarumlaut\0Amacron":-40,"Uhungarumlaut\0Aogonek":-40,"Uhungarumlaut\0Aring":-40,"Uhungarumlaut\0Atilde":-40,"Uhungarumlaut\0comma":-25,"Uhungarumlaut\0period":-25,"Umacron\0A":-40,"Umacron\0Aacute":-40,"Umacron\0Abreve":-40,"Umacron\0Acircumflex":-40,"Umacron\0Adieresis":-40,"Umacron\0Agrave":-40,"Umacron\0Amacron":-40,"Umacron\0Aogonek":-40,"Umacron\0Aring":-40,"Umacron\0Atilde":-40,"Umacron\0comma":-25,"Umacron\0period":-25,"Uogonek\0A":-40,"Uogonek\0Aacute":-40,"Uogonek\0Abreve":-40,"Uogonek\0Acircumflex":-40,"Uogonek\0Adieresis":-40,"Uogonek\0Agrave":-40,"Uogonek\0Amacron":-40,"Uogonek\0Aogonek":-40,"Uogonek\0Aring":-40,"Uogonek\0Atilde":-40,"Uogonek\0comma":-25,"Uogonek\0period":-25,"Uring\0A":-40,"Uring\0Aacute":-40,"Uring\0Abreve":-40,"Uring\0Acircumflex":-40,"Uring\0Adieresis":-40,"Uring\0Agrave":-40,"Uring\0Amacron":-40,"Uring\0Aogonek":-40,"Uring\0Aring":-40,"Uring\0Atilde":-40,"Uring\0comma":-25,"Uring\0period":-25,"V\0A":-60,"V\0Aacute":-60,"V\0Abreve":-60,"V\0Acircumflex":-60,"V\0Adieresis":-60,"V\0Agrave":-60,"V\0Amacron":-60,"V\0Aogonek":-60,"V\0Aring":-60,"V\0Atilde":-60,"V\0O":-30,"V\0Oacute":-30,"V\0Ocircumflex":-30,"V\0Odieresis":-30,"V\0Ograve":-30,"V\0Ohungarumlaut":-30,"V\0Omacron":-30,"V\0Oslash":-30,"V\0Otilde":-30,"V\0a":-111,"V\0aacute":-111,"V\0abreve":-111,"V\0acircumflex":-111,"V\0adieresis":-111,"V\0agrave":-111,"V\0amacron":-111,"V\0aogonek":-111,"V\0aring":-111,"V\0atilde":-111,"V\0colon":-65,"V\0comma":-129,"V\0e":-111,"V\0eacute":-111,"V\0ecaron":-111,"V\0ecircumflex":-111,"V\0edieresis":-71,"V\0edotaccent":-111,"V\0egrave":-71,"V\0emacron":-71,"V\0eogonek":-111,"V\0hyphen":-55,"V\0i":-74,"V\0iacute":-74,"V\0icircumflex":-34,"V\0idieresis":-34,"V\0igrave":-34,"V\0imacron":-34,"V\0iogonek":-74,"V\0o":-111,"V\0oacute":-111,"V\0ocircumflex":-111,"V\0odieresis":-111,"V\0ograve":-111,"V\0ohungarumlaut":-111,"V\0omacron":-111,"V\0oslash":-111,"V\0otilde":-111,"V\0period":-129,"V\0semicolon":-74,"V\0u":-74,"V\0uacute":-74,"V\0ucircumflex":-74,"V\0udieresis":-74,"V\0ugrave":-74,"V\0uhungarumlaut":-74,"V\0umacron":-74,"V\0uogonek":-74,"V\0uring":-74,"W\0A":-60,"W\0Aacute":-60,"W\0Abreve":-60,"W\0Acircumflex":-60,"W\0Adieresis":-60,"W\0Agrave":-60,"W\0Amacron":-60,"W\0Aogonek":-60,"W\0Aring":-60,"W\0Atilde":-60,"W\0O":-25,"W\0Oacute":-25,"W\0Ocircumflex":-25,"W\0Odieresis":-25,"W\0Ograve":-25,"W\0Ohungarumlaut":-25,"W\0Omacron":-25,"W\0Oslash":-25,"W\0Otilde":-25,"W\0a":-92,"W\0aacute":-92,"W\0abreve":-92,"W\0acircumflex":-92,"W\0adieresis":-92,"W\0agrave":-92,"W\0amacron":-92,"W\0aogonek":-92,"W\0aring":-92,"W\0atilde":-92,"W\0colon":-65,"W\0comma":-92,"W\0e":-92,"W\0eacute":-92,"W\0ecaron":-92,"W\0ecircumflex":-92,"W\0edieresis":-52,"W\0edotaccent":-92,"W\0egrave":-52,"W\0emacron":-52,"W\0eogonek":-92,"W\0hyphen":-37,"W\0i":-55,"W\0iacute":-55,"W\0iogonek":-55,"W\0o":-92,"W\0oacute":-92,"W\0ocircumflex":-92,"W\0odieresis":-92,"W\0ograve":-92,"W\0ohungarumlaut":-92,"W\0omacron":-92,"W\0oslash":-92,"W\0otilde":-92,"W\0period":-92,"W\0semicolon":-65,"W\0u":-55,"W\0uacute":-55,"W\0ucircumflex":-55,"W\0udieresis":-55,"W\0ugrave":-55,"W\0uhungarumlaut":-55,"W\0umacron":-55,"W\0uogonek":-55,"W\0uring":-55,"W\0y":-70,"W\0yacute":-70,"W\0ydieresis":-70,"Y\0A":-50,"Y\0Aacute":-50,"Y\0Abreve":-50,"Y\0Acircumflex":-50,"Y\0Adieresis":-50,"Y\0Agrave":-50,"Y\0Amacron":-50,"Y\0Aogonek":-50,"Y\0Aring":-50,"Y\0Atilde":-50,"Y\0O":-15,"Y\0Oacute":-15,"Y\0Ocircumflex":-15,"Y\0Odieresis":-15,"Y\0Ograve":-15,"Y\0Ohungarumlaut":-15,"Y\0Omacron":-15,"Y\0Oslash":-15,"Y\0Otilde":-15,"Y\0a":-92,"Y\0aacute":-92,"Y\0abreve":-92,"Y\0acircumflex":-92,"Y\0adieresis":-92,"Y\0agrave":-92,"Y\0amacron":-92,"Y\0aogonek":-92,"Y\0aring":-92,"Y\0atilde":-92,"Y\0colon":-65,"Y\0comma":-92,"Y\0e":-92,"Y\0eacute":-92,"Y\0ecaron":-92,"Y\0ecircumflex":-92,"Y\0edieresis":-52,"Y\0edotaccent":-92,"Y\0egrave":-52,"Y\0emacron":-52,"Y\0eogonek":-92,"Y\0hyphen":-74,"Y\0i":-74,"Y\0iacute":-74,"Y\0icircumflex":-34,"Y\0idieresis":-34,"Y\0igrave":-34,"Y\0imacron":-34,"Y\0iogonek":-74,"Y\0o":-92,"Y\0oacute":-92,"Y\0ocircumflex":-92,"Y\0odieresis":-92,"Y\0ograve":-92,"Y\0ohungarumlaut":-92,"Y\0omacron":-92,"Y\0oslash":-92,"Y\0otilde":-92,"Y\0period":-92,"Y\0semicolon":-65,"Y\0u":-92,"Y\0uacute":-92,"Y\0ucircumflex":-92,"Y\0udieresis":-92,"Y\0ugrave":-92,"Y\0uhungarumlaut":-92,"Y\0umacron":-92,"Y\0uogonek":-92,"Y\0uring":-92,"Yacute\0A":-50,"Yacute\0Aacute":-50,"Yacute\0Abreve":-50,"Yacute\0Acircumflex":-50,"Yacute\0Adieresis":-50,"Yacute\0Agrave":-50,"Yacute\0Amacron":-50,"Yacute\0Aogonek":-50,"Yacute\0Aring":-50,"Yacute\0Atilde":-50,"Yacute\0O":-15,"Yacute\0Oacute":-15,"Yacute\0Ocircumflex":-15,"Yacute\0Odieresis":-15,"Yacute\0Ograve":-15,"Yacute\0Ohungarumlaut":-15,"Yacute\0Omacron":-15,"Yacute\0Oslash":-15,"Yacute\0Otilde":-15,"Yacute\0a":-92,"Yacute\0aacute":-92,"Yacute\0abreve":-92,"Yacute\0acircumflex":-92,"Yacute\0adieresis":-92,"Yacute\0agrave":-92,"Yacute\0amacron":-92,"Yacute\0aogonek":-92,"Yacute\0aring":-92,"Yacute\0atilde":-92,"Yacute\0colon":-65,"Yacute\0comma":-92,"Yacute\0e":-92,"Yacute\0eacute":-92,"Yacute\0ecaron":-92,"Yacute\0ecircumflex":-92,"Yacute\0edieresis":-52,"Yacute\0edotaccent":-92,"Yacute\0egrave":-52,"Yacute\0emacron":-52,"Yacute\0eogonek":-92,"Yacute\0hyphen":-74,"Yacute\0i":-74,"Yacute\0iacute":-74,"Yacute\0icircumflex":-34,"Yacute\0idieresis":-34,"Yacute\0igrave":-34,"Yacute\0imacron":-34,"Yacute\0iogonek":-74,"Yacute\0o":-92,"Yacute\0oacute":-92,"Yacute\0ocircumflex":-92,"Yacute\0odieresis":-92,"Yacute\0ograve":-92,"Yacute\0ohungarumlaut":-92,"Yacute\0omacron":-92,"Yacute\0oslash":-92,"Yacute\0otilde":-92,"Yacute\0period":-92,"Yacute\0semicolon":-65,"Yacute\0u":-92,"Yacute\0uacute":-92,"Yacute\0ucircumflex":-92,"Yacute\0udieresis":-92,"Yacute\0ugrave":-92,"Yacute\0uhungarumlaut":-92,"Yacute\0umacron":-92,"Yacute\0uogonek":-92,"Yacute\0uring":-92,"Ydieresis\0A":-50,"Ydieresis\0Aacute":-50,"Ydieresis\0Abreve":-50,"Ydieresis\0Acircumflex":-50,"Ydieresis\0Adieresis":-50,"Ydieresis\0Agrave":-50,"Ydieresis\0Amacron":-50,"Ydieresis\0Aogonek":-50,"Ydieresis\0Aring":-50,"Ydieresis\0Atilde":-50,"Ydieresis\0O":-15,"Ydieresis\0Oacute":-15,"Ydieresis\0Ocircumflex":-15,"Ydieresis\0Odieresis":-15,"Ydieresis\0Ograve":-15,"Ydieresis\0Ohungarumlaut":-15,"Ydieresis\0Omacron":-15,"Ydieresis\0Oslash":-15,"Ydieresis\0Otilde":-15,"Ydieresis\0a":-92,"Ydieresis\0aacute":-92,"Ydieresis\0abreve":-92,"Ydieresis\0acircumflex":-92,"Ydieresis\0adieresis":-92,"Ydieresis\0agrave":-92,"Ydieresis\0amacron":-92,"Ydieresis\0aogonek":-92,"Ydieresis\0aring":-92,"Ydieresis\0atilde":-92,"Ydieresis\0colon":-65,"Ydieresis\0comma":-92,"Ydieresis\0e":-92,"Ydieresis\0eacute":-92,"Ydieresis\0ecaron":-92,"Ydieresis\0ecircumflex":-92,"Ydieresis\0edieresis":-52,"Ydieresis\0edotaccent":-92,"Ydieresis\0egrave":-52,"Ydieresis\0emacron":-52,"Ydieresis\0eogonek":-92,"Ydieresis\0hyphen":-74,"Ydieresis\0i":-74,"Ydieresis\0iacute":-74,"Ydieresis\0icircumflex":-34,"Ydieresis\0idieresis":-34,"Ydieresis\0igrave":-34,"Ydieresis\0imacron":-34,"Ydieresis\0iogonek":-74,"Ydieresis\0o":-92,"Ydieresis\0oacute":-92,"Ydieresis\0ocircumflex":-92,"Ydieresis\0odieresis":-92,"Ydieresis\0ograve":-92,"Ydieresis\0ohungarumlaut":-92,"Ydieresis\0omacron":-92,"Ydieresis\0oslash":-92,"Ydieresis\0otilde":-92,"Ydieresis\0period":-92,"Ydieresis\0semicolon":-65,"Ydieresis\0u":-92,"Ydieresis\0uacute":-92,"Ydieresis\0ucircumflex":-92,"Ydieresis\0udieresis":-92,"Ydieresis\0ugrave":-92,"Ydieresis\0uhungarumlaut":-92,"Ydieresis\0umacron":-92,"Ydieresis\0uogonek":-92,"Ydieresis\0uring":-92,"a\0g":-10,"a\0gbreve":-10,"a\0gcommaaccent":-10,"aacute\0g":-10,"aacute\0gbreve":-10,"aacute\0gcommaaccent":-10,"abreve\0g":-10,"abreve\0gbreve":-10,"abreve\0gcommaaccent":-10,"acircumflex\0g":-10,"acircumflex\0gbreve":-10,"acircumflex\0gcommaaccent":-10,"adieresis\0g":-10,"adieresis\0gbreve":-10,"adieresis\0gcommaaccent":-10,"agrave\0g":-10,"agrave\0gbreve":-10,"agrave\0gcommaaccent":-10,"amacron\0g":-10,"amacron\0gbreve":-10,"amacron\0gcommaaccent":-10,"aogonek\0g":-10,"aogonek\0gbreve":-10,"aogonek\0gcommaaccent":-10,"aring\0g":-10,"aring\0gbreve":-10,"aring\0gcommaaccent":-10,"atilde\0g":-10,"atilde\0gbreve":-10,"atilde\0gcommaaccent":-10,"b\0period":-40,"b\0u":-20,"b\0uacute":-20,"b\0ucircumflex":-20,"b\0udieresis":-20,"b\0ugrave":-20,"b\0uhungarumlaut":-20,"b\0umacron":-20,"b\0uogonek":-20,"b\0uring":-20,"c\0h":-15,"c\0k":-20,"c\0kcommaaccent":-20,"cacute\0h":-15,"cacute\0k":-20,"cacute\0kcommaaccent":-20,"ccaron\0h":-15,"ccaron\0k":-20,"ccaron\0kcommaaccent":-20,"ccedilla\0h":-15,"ccedilla\0k":-20,"ccedilla\0kcommaaccent":-20,"comma\0quotedblright":-140,"comma\0quoteright":-140,"e\0comma":-10,"e\0g":-40,"e\0gbreve":-40,"e\0gcommaaccent":-40,"e\0period":-15,"e\0v":-15,"e\0w":-15,"e\0x":-20,"e\0y":-30,"e\0yacute":-30,"e\0ydieresis":-30,"eacute\0comma":-10,"eacute\0g":-40,"eacute\0gbreve":-40,"eacute\0gcommaaccent":-40,"eacute\0period":-15,"eacute\0v":-15,"eacute\0w":-15,"eacute\0x":-20,"eacute\0y":-30,"eacute\0yacute":-30,"eacute\0ydieresis":-30,"ecaron\0comma":-10,"ecaron\0g":-40,"ecaron\0gbreve":-40,"ecaron\0gcommaaccent":-40,"ecaron\0period":-15,"ecaron\0v":-15,"ecaron\0w":-15,"ecaron\0x":-20,"ecaron\0y":-30,"ecaron\0yacute":-30,"ecaron\0ydieresis":-30,"ecircumflex\0comma":-10,"ecircumflex\0g":-40,"ecircumflex\0gbreve":-40,"ecircumflex\0gcommaaccent":-40,"ecircumflex\0period":-15,"ecircumflex\0v":-15,"ecircumflex\0w":-15,"ecircumflex\0x":-20,"ecircumflex\0y":-30,"ecircumflex\0yacute":-30,"ecircumflex\0ydieresis":-30,"edieresis\0comma":-10,"edieresis\0g":-40,"edieresis\0gbreve":-40,"edieresis\0gcommaaccent":-40,"edieresis\0period":-15,"edieresis\0v":-15,"edieresis\0w":-15,"edieresis\0x":-20,"edieresis\0y":-30,"edieresis\0yacute":-30,"edieresis\0ydieresis":-30,"edotaccent\0comma":-10,"edotaccent\0g":-40,"edotaccent\0gbreve":-40,"edotaccent\0gcommaaccent":-40,"edotaccent\0period":-15,"edotaccent\0v":-15,"edotaccent\0w":-15,"edotaccent\0x":-20,"edotaccent\0y":-30,"edotaccent\0yacute":-30,"edotaccent\0ydieresis":-30,"egrave\0comma":-10,"egrave\0g":-40,"egrave\0gbreve":-40,"egrave\0gcommaaccent":-40,"egrave\0period":-15,"egrave\0v":-15,"egrave\0w":-15,"egrave\0x":-20,"egrave\0y":-30,"egrave\0yacute":-30,"egrave\0ydieresis":-30,"emacron\0comma":-10,"emacron\0g":-40,"emacron\0gbreve":-40,"emacron\0gcommaaccent":-40,"emacron\0period":-15,"emacron\0v":-15,"emacron\0w":-15,"emacron\0x":-20,"emacron\0y":-30,"emacron\0yacute":-30,"emacron\0ydieresis":-30,"eogonek\0comma":-10,"eogonek\0g":-40,"eogonek\0gbreve":-40,"eogonek\0gcommaaccent":-40,"eogonek\0period":-15,"eogonek\0v":-15,"eogonek\0w":-15,"eogonek\0x":-20,"eogonek\0y":-30,"eogonek\0yacute":-30,"eogonek\0ydieresis":-30,"f\0comma":-10,"f\0dotlessi":-60,"f\0f":-18,"f\0i":-20,"f\0iogonek":-20,"f\0period":-15,"f\0quoteright":92,"g\0comma":-10,"g\0e":-10,"g\0eacute":-10,"g\0ecaron":-10,"g\0ecircumflex":-10,"g\0edieresis":-10,"g\0edotaccent":-10,"g\0egrave":-10,"g\0emacron":-10,"g\0eogonek":-10,"g\0g":-10,"g\0gbreve":-10,"g\0gcommaaccent":-10,"g\0period":-15,"gbreve\0comma":-10,"gbreve\0e":-10,"gbreve\0eacute":-10,"gbreve\0ecaron":-10,"gbreve\0ecircumflex":-10,"gbreve\0edieresis":-10,"gbreve\0edotaccent":-10,"gbreve\0egrave":-10,"gbreve\0emacron":-10,"gbreve\0eogonek":-10,"gbreve\0g":-10,"gbreve\0gbreve":-10,"gbreve\0gcommaaccent":-10,"gbreve\0period":-15,"gcommaaccent\0comma":-10,"gcommaaccent\0e":-10,"gcommaaccent\0eacute":-10,"gcommaaccent\0ecaron":-10,"gcommaaccent\0ecircumflex":-10,"gcommaaccent\0edieresis":-10,"gcommaaccent\0edotaccent":-10,"gcommaaccent\0egrave":-10,"gcommaaccent\0emacron":-10,"gcommaaccent\0eogonek":-10,"gcommaaccent\0g":-10,"gcommaaccent\0gbreve":-10,"gcommaaccent\0gcommaaccent":-10,"gcommaaccent\0period":-15,"k\0e":-10,"k\0eacute":-10,"k\0ecaron":-10,"k\0ecircumflex":-10,"k\0edieresis":-10,"k\0edotaccent":-10,"k\0egrave":-10,"k\0emacron":-10,"k\0eogonek":-10,"k\0o":-10,"k\0oacute":-10,"k\0ocircumflex":-10,"k\0odieresis":-10,"k\0ograve":-10,"k\0ohungarumlaut":-10,"k\0omacron":-10,"k\0oslash":-10,"k\0otilde":-10,"k\0y":-10,"k\0yacute":-10,"k\0ydieresis":-10,"kcommaaccent\0e":-10,"kcommaaccent\0eacute":-10,"kcommaaccent\0ecaron":-10,"kcommaaccent\0ecircumflex":-10,"kcommaaccent\0edieresis":-10,"kcommaaccent\0edotaccent":-10,"kcommaaccent\0egrave":-10,"kcommaaccent\0emacron":-10,"kcommaaccent\0eogonek":-10,"kcommaaccent\0o":-10,"kcommaaccent\0oacute":-10,"kcommaaccent\0ocircumflex":-10,"kcommaaccent\0odieresis":-10,"kcommaaccent\0ograve":-10,"kcommaaccent\0ohungarumlaut":-10,"kcommaaccent\0omacron":-10,"kcommaaccent\0oslash":-10,"kcommaaccent\0otilde":-10,"kcommaaccent\0y":-10,"kcommaaccent\0yacute":-10,"kcommaaccent\0ydieresis":-10,"n\0v":-40,"nacute\0v":-40,"ncaron\0v":-40,"ncommaaccent\0v":-40,"ntilde\0v":-40,"o\0g":-10,"o\0gbreve":-10,"o\0gcommaaccent":-10,"o\0v":-10,"oacute\0g":-10,"oacute\0gbreve":-10,"oacute\0gcommaaccent":-10,"oacute\0v":-10,"ocircumflex\0g":-10,"ocircumflex\0gbreve":-10,"ocircumflex\0gcommaaccent":-10,"ocircumflex\0v":-10,"odieresis\0g":-10,"odieresis\0gbreve":-10,"odieresis\0gcommaaccent":-10,"odieresis\0v":-10,"ograve\0g":-10,"ograve\0gbreve":-10,"ograve\0gcommaaccent":-10,"ograve\0v":-10,"ohungarumlaut\0g":-10,"ohungarumlaut\0gbreve":-10,"ohungarumlaut\0gcommaaccent":-10,"ohungarumlaut\0v":-10,"omacron\0g":-10,"omacron\0gbreve":-10,"omacron\0gcommaaccent":-10,"omacron\0v":-10,"oslash\0g":-10,"oslash\0gbreve":-10,"oslash\0gcommaaccent":-10,"oslash\0v":-10,"otilde\0g":-10,"otilde\0gbreve":-10,"otilde\0gcommaaccent":-10,"otilde\0v":-10,"period\0quotedblright":-140,"period\0quoteright":-140,"quoteleft\0quoteleft":-111,"quoteright\0d":-25,"quoteright\0dcroat":-25,"quoteright\0quoteright":-111,"quoteright\0r":-25,"quoteright\0racute":-25,"quoteright\0rcaron":-25,"quoteright\0rcommaaccent":-25,"quoteright\0s":-40,"quoteright\0sacute":-40,"quoteright\0scaron":-40,"quoteright\0scedilla":-40,"quoteright\0scommaaccent":-40,"quoteright\0space":-111,"quoteright\0t":-30,"quoteright\0tcommaaccent":-30,"quoteright\0v":-10,"r\0a":-15,"r\0aacute":-15,"r\0abreve":-15,"r\0acircumflex":-15,"r\0adieresis":-15,"r\0agrave":-15,"r\0amacron":-15,"r\0aogonek":-15,"r\0aring":-15,"r\0atilde":-15,"r\0c":-37,"r\0cacute":-37,"r\0ccaron":-37,"r\0ccedilla":-37,"r\0comma":-111,"r\0d":-37,"r\0dcroat":-37,"r\0e":-37,"r\0eacute":-37,"r\0ecaron":-37,"r\0ecircumflex":-37,"r\0edieresis":-37,"r\0edotaccent":-37,"r\0egrave":-37,"r\0emacron":-37,"r\0eogonek":-37,"r\0g":-37,"r\0gbreve":-37,"r\0gcommaaccent":-37,"r\0hyphen":-20,"r\0o":-45,"r\0oacute":-45,"r\0ocircumflex":-45,"r\0odieresis":-45,"r\0ograve":-45,"r\0ohungarumlaut":-45,"r\0omacron":-45,"r\0oslash":-45,"r\0otilde":-45,"r\0period":-111,"r\0q":-37,"r\0s":-10,"r\0sacute":-10,"r\0scaron":-10,"r\0scedilla":-10,"r\0scommaaccent":-10,"racute\0a":-15,"racute\0aacute":-15,"racute\0abreve":-15,"racute\0acircumflex":-15,"racute\0adieresis":-15,"racute\0agrave":-15,"racute\0amacron":-15,"racute\0aogonek":-15,"racute\0aring":-15,"racute\0atilde":-15,"racute\0c":-37,"racute\0cacute":-37,"racute\0ccaron":-37,"racute\0ccedilla":-37,"racute\0comma":-111,"racute\0d":-37,"racute\0dcroat":-37,"racute\0e":-37,"racute\0eacute":-37,"racute\0ecaron":-37,"racute\0ecircumflex":-37,"racute\0edieresis":-37,"racute\0edotaccent":-37,"racute\0egrave":-37,"racute\0emacron":-37,"racute\0eogonek":-37,"racute\0g":-37,"racute\0gbreve":-37,"racute\0gcommaaccent":-37,"racute\0hyphen":-20,"racute\0o":-45,"racute\0oacute":-45,"racute\0ocircumflex":-45,"racute\0odieresis":-45,"racute\0ograve":-45,"racute\0ohungarumlaut":-45,"racute\0omacron":-45,"racute\0oslash":-45,"racute\0otilde":-45,"racute\0period":-111,"racute\0q":-37,"racute\0s":-10,"racute\0sacute":-10,"racute\0scaron":-10,"racute\0scedilla":-10,"racute\0scommaaccent":-10,"rcaron\0a":-15,"rcaron\0aacute":-15,"rcaron\0abreve":-15,"rcaron\0acircumflex":-15,"rcaron\0adieresis":-15,"rcaron\0agrave":-15,"rcaron\0amacron":-15,"rcaron\0aogonek":-15,"rcaron\0aring":-15,"rcaron\0atilde":-15,"rcaron\0c":-37,"rcaron\0cacute":-37,"rcaron\0ccaron":-37,"rcaron\0ccedilla":-37,"rcaron\0comma":-111,"rcaron\0d":-37,"rcaron\0dcroat":-37,"rcaron\0e":-37,"rcaron\0eacute":-37,"rcaron\0ecaron":-37,"rcaron\0ecircumflex":-37,"rcaron\0edieresis":-37,"rcaron\0edotaccent":-37,"rcaron\0egrave":-37,"rcaron\0emacron":-37,"rcaron\0eogonek":-37,"rcaron\0g":-37,"rcaron\0gbreve":-37,"rcaron\0gcommaaccent":-37,"rcaron\0hyphen":-20,"rcaron\0o":-45,"rcaron\0oacute":-45,"rcaron\0ocircumflex":-45,"rcaron\0odieresis":-45,"rcaron\0ograve":-45,"rcaron\0ohungarumlaut":-45,"rcaron\0omacron":-45,"rcaron\0oslash":-45,"rcaron\0otilde":-45,"rcaron\0period":-111,"rcaron\0q":-37,"rcaron\0s":-10,"rcaron\0sacute":-10,"rcaron\0scaron":-10,"rcaron\0scedilla":-10,"rcaron\0scommaaccent":-10,"rcommaaccent\0a":-15,"rcommaaccent\0aacute":-15,"rcommaaccent\0abreve":-15,"rcommaaccent\0acircumflex":-15,"rcommaaccent\0adieresis":-15,"rcommaaccent\0agrave":-15,"rcommaaccent\0amacron":-15,"rcommaaccent\0aogonek":-15,"rcommaaccent\0aring":-15,"rcommaaccent\0atilde":-15,"rcommaaccent\0c":-37,"rcommaaccent\0cacute":-37,"rcommaaccent\0ccaron":-37,"rcommaaccent\0ccedilla":-37,"rcommaaccent\0comma":-111,"rcommaaccent\0d":-37,"rcommaaccent\0dcroat":-37,"rcommaaccent\0e":-37,"rcommaaccent\0eacute":-37,"rcommaaccent\0ecaron":-37,"rcommaaccent\0ecircumflex":-37,"rcommaaccent\0edieresis":-37,"rcommaaccent\0edotaccent":-37,"rcommaaccent\0egrave":-37,"rcommaaccent\0emacron":-37,"rcommaaccent\0eogonek":-37,"rcommaaccent\0g":-37,"rcommaaccent\0gbreve":-37,"rcommaaccent\0gcommaaccent":-37,"rcommaaccent\0hyphen":-20,"rcommaaccent\0o":-45,"rcommaaccent\0oacute":-45,"rcommaaccent\0ocircumflex":-45,"rcommaaccent\0odieresis":-45,"rcommaaccent\0ograve":-45,"rcommaaccent\0ohungarumlaut":-45,"rcommaaccent\0omacron":-45,"rcommaaccent\0oslash":-45,"rcommaaccent\0otilde":-45,"rcommaaccent\0period":-111,"rcommaaccent\0q":-37,"rcommaaccent\0s":-10,"rcommaaccent\0sacute":-10,"rcommaaccent\0scaron":-10,"rcommaaccent\0scedilla":-10,"rcommaaccent\0scommaaccent":-10,"space\0A":-18,"space\0Aacute":-18,"space\0Abreve":-18,"space\0Acircumflex":-18,"space\0Adieresis":-18,"space\0Agrave":-18,"space\0Amacron":-18,"space\0Aogonek":-18,"space\0Aring":-18,"space\0Atilde":-18,"space\0T":-18,"space\0Tcaron":-18,"space\0Tcommaaccent":-18,"space\0V":-35,"space\0W":-40,"space\0Y":-75,"space\0Yacute":-75,"space\0Ydieresis":-75,"v\0comma":-74,"v\0period":-74,"w\0comma":-74,"w\0period":-74,"y\0comma":-55,"y\0period":-55,"yacute\0comma":-55,"yacute\0period":-55,"ydieresis\0comma":-55,"ydieresis\0period":-55}}},Qg=function(){for(var g=arguments.length,I=new Array(g),e=0;e<g;e++)I[e]=arguments[e];var t=Array.from(I).map((function(g){return("0000"+g.toString(16)).slice(-4)}));return t.join("")},Fg=function(){function I(){}I.open=function(I,e,t,C){var Q;if("string"===typeof e){if(Bg.isStandardFont(e))return new Bg(I,e,C);Q=u.default.openSync(e,t)}else g.isBuffer(e)?Q=u.default.create(e,t):e instanceof Uint8Array?Q=u.default.create(g.from(e),t):e instanceof ArrayBuffer?Q=u.default.create(g.from(new Uint8Array(e)),t):"object"===typeof e&&(Q=e);if(null==Q)throw new Error("Not a supported font format or standard PDF font.");return new ng(I,Q,C)};var e=I.prototype;return e.encode=function(g){throw new Error("Must be implemented by subclasses")},e.widthOfString=function(g){throw new Error("Must be implemented by subclasses")},e.ref=function(){return null!=this.dictionary?this.dictionary:this.dictionary=this.document.ref()},e.finalize=function(){if(!this.embedded&&null!=this.dictionary)return this.embed(),this.embedded=!0},e.embed=function(){throw new Error("Must be implemented by subclasses")},e.lineHeight=function(g,I){null==I&&(I=!1);var e=I?this.lineGap:0;return(this.ascender+e-this.descender)/1e3*g},I}(),Bg=function(g){return function(g){function I(I,e,t){var C;return(C=g.call(this)||this).document=I,C.name=e,C.id=t,C.font=tg.fromJson(Cg[C.name]),C.ascender=C.font.ascender,C.descender=C.font.descender,C.bbox=C.font.bbox,C.lineGap=C.font.lineGap,C}s()(I,g);var e=I.prototype;return e.embed=function(){return this.dictionary.data={Type:"Font",BaseFont:this.name,Subtype:"Type1",Encoding:"WinAnsiEncoding"},this.dictionary.end()},e.encode=function(g){for(var I=this.font.encodeText(g),e=this.font.glyphsForString(""+g),t=this.font.advancesForGlyphs(e),C=[],Q=0;Q<e.length;Q++){var F=e[Q];C.push({xAdvance:t[Q],yAdvance:0,xOffset:0,yOffset:0,advanceWidth:this.font.widthOfGlyph(F)})}return[I,C]},e.encodeGlyphs=function(g){for(var I=[],e=0,t=Array.from(g);e<t.length;e++){var C=t[e];I.push(("00"+C.id.toString(16)).slice(-2))}return I},e.widthOfString=function(g,I){for(var e=this.font.glyphsForString(""+g),t=this.font.advancesForGlyphs(e),C=0,Q=0,F=Array.from(t);Q<F.length;Q++){C+=F[Q]}return C*(I/1e3)},I.isStandardFont=function(g){return g in Cg},I}(g)}(Fg),ng=function(g){return function(g){function I(I,e,t){var C;return(C=g.call(this)||this).document=I,C.font=e,C.id=t,C.subset=C.font.createSubset(),C.unicode=[[0]],C.widths=[C.font.getGlyph(0).advanceWidth],C.name=C.font.postscriptName,C.scale=1e3/C.font.unitsPerEm,C.ascender=C.font.ascent*C.scale,C.descender=C.font.descent*C.scale,C.xHeight=C.font.xHeight*C.scale,C.capHeight=C.font.capHeight*C.scale,C.lineGap=C.font.lineGap*C.scale,C.bbox=C.font.bbox,C.layoutCache=Object.create(null),C}s()(I,g);var e=I.prototype;return e.layoutRun=function(g,I){for(var e=this.font.layout(g,I),t=0;t<e.positions.length;t++){var C=e.positions[t];for(var Q in C)C[Q]*=this.scale;C.advanceWidth=e.glyphs[t].advanceWidth*this.scale}return e},e.layoutCached=function(g){var I;if(I=this.layoutCache[g])return I;var e=this.layoutRun(g);return this.layoutCache[g]=e,e},e.layout=function(g,I,e){if(null==e&&(e=!1),I)return this.layoutRun(g,I);for(var t=e?null:[],C=e?null:[],Q=0,F=0,B=0;B<=g.length;){var n;if(B===g.length&&F<B||(n=g.charAt(B),[" ","\t"].includes(n))){var U=this.layoutCached(g.slice(F,++B));e||(t.push.apply(t,Array.from(U.glyphs||[])),C.push.apply(C,Array.from(U.positions||[]))),Q+=U.advanceWidth,F=B}else B++}return{glyphs:t,positions:C,advanceWidth:Q}},e.encode=function(g,I){for(var e=this.layout(g,I),t=e.glyphs,C=e.positions,Q=[],F=0;F<t.length;F++){var B=t[F],n=this.subset.includeGlyph(B.id);Q.push(("0000"+n.toString(16)).slice(-4)),null==this.widths[n]&&(this.widths[n]=B.advanceWidth*this.scale),null==this.unicode[n]&&(this.unicode[n]=this.font._cmapProcessor.codePointsForGlyph(B.id))}return[Q,C]},e.encodeGlyphs=function(g){for(var I=[],e=0;e<g.length;e++){var t=g[e],C=this.subset.includeGlyph(t.id);I.push(("0000"+C.toString(16)).slice(-4)),null==this.widths[C]&&(this.widths[C]=t.advanceWidth*this.scale),null==this.unicode[C]&&(this.unicode[C]=this.font._cmapProcessor.codePointsForGlyph(t.id))}return I},e.widthOfString=function(g,I,e){return this.layout(g,e,!0).advanceWidth*(I/1e3)},e.embed=function(){var g=null!=this.subset.cff,I=this.document.ref();g&&(I.data.Subtype="CIDFontType0C"),this.subset.encodeStream().pipe(I);var e=((null!=this.font["OS/2"]?this.font["OS/2"].sFamilyClass:void 0)||0)>>8,t=0;this.font.post.isFixedPitch&&(t|=1),1<=e&&e<=7&&(t|=2),t|=4,10===e&&(t|=8),this.font.head.macStyle.italic&&(t|=64);var C=[0,1,2,3,4,5].map((function(g){return String.fromCharCode(26*Math.random()+65)})).join("")+"+"+this.font.postscriptName,Q=this.font.bbox,F=this.document.ref({Type:"FontDescriptor",FontName:C,Flags:t,FontBBox:[Q.minX*this.scale,Q.minY*this.scale,Q.maxX*this.scale,Q.maxY*this.scale],ItalicAngle:this.font.italicAngle,Ascent:this.ascender,Descent:this.descender,CapHeight:(this.font.capHeight||this.font.ascent)*this.scale,XHeight:(this.font.xHeight||0)*this.scale,StemV:0});g?F.data.FontFile3=I:F.data.FontFile2=I,F.end();var B=this.document.ref({Type:"Font",Subtype:g?"CIDFontType0":"CIDFontType2",BaseFont:C,CIDSystemInfo:{Registry:new String("Adobe"),Ordering:new String("Identity"),Supplement:0},FontDescriptor:F,W:[0,this.widths]});return B.end(),this.dictionary.data={Type:"Font",Subtype:"Type0",BaseFont:C,Encoding:"Identity-H",DescendantFonts:[B],ToUnicode:this.toUnicodeCmap()},this.dictionary.end()},e.toUnicodeCmap=function(){for(var g=this.document.ref(),I=[],e=0,t=Array.from(this.unicode);e<t.length;e++)for(var C=t[e],Q=[],F=0,B=Array.from(C);F<B.length;F++){var n=B[F];n>65535&&(n-=65536,Q.push(Qg(n>>>10&1023|55296)),n=56320|1023&n),Q.push(Qg(n)),I.push("<"+Q.join(" ")+">")}return g.end("  /CIDInit /ProcSet findresource begin\n  12 dict begin\n  begincmap\n  /CIDSystemInfo <<\n  /Registry (Adobe)\n  /Ordering (UCS)\n  /Supplement 0\n  >> def\n  /CMapName /Adobe-Identity-UCS def\n  /CMapType 2 def\n  1 begincodespacerange\n  <0000><ffff>\n  endcodespacerange\n  1 beginbfrange\n  <0000> <"+Qg(I.length-1)+"> ["+I.join(" ")+"]\n  endbfrange\n  endcmap\n  CMapName currentdict /CMap defineresource pop\n  end\n  end  "),g},I}(g)}(Fg),Ug={initFonts:function(){return this._fontFamilies={},this._fontCount=0,this._fontSize=12,this._font=null,this._registeredFonts={},this.font("Helvetica")},font:function(g,I,e){var t,C;if("number"===typeof I&&(e=I,I=null),"string"===typeof g&&this._registeredFonts[g]){t=g;var Q=this._registeredFonts[g];g=Q.src,I=Q.family}else"string"!==typeof(t=I||g)&&(t=null);if(null!=e&&this.fontSize(e),C=this._fontFamilies[t])return this._font=C,this;var F="F"+ ++this._fontCount;return this._font=Fg.open(this,g,I,F),(C=this._fontFamilies[this._font.name])?(this._font=C,this):(t&&(this._fontFamilies[t]=this._font),this._font.name&&(this._fontFamilies[this._font.name]=this._font),this)},fontSize:function(g){return this._fontSize=g,this},currentLineHeight:function(g){return null==g&&(g=!1),this._font.lineHeight(this._fontSize,g)},registerFont:function(g,I,e){return this._registeredFonts[g]={src:I,family:e},this}},sg=h.number,ig={initText:function(){return this._line=this._line.bind(this),this.x=0,this.y=0,this._lineGap=0},_text:function(g,I,e,t,C){var Q=this;g=null==g?"":""+g,(t=this._initOptions(I,e,t)).wordSpacing&&(g=g.replace(/\s{2,}/g," "));for(var F,B=d()(g.split("\n"));!(F=B()).done;){var n=F.value;t.structParent&&t.structParent.add(Q.struct(t.structType||"P",[Q.markStructureContent(t.structType||"P")])),C(n,t)}return this},text:function(g,I,e,t){return this._text(g,I,e,t,this._line)},widthOfString:function(g,I){return void 0===I&&(I={}),this._font.widthOfString(g,this._fontSize,I.features)+(I.characterSpacing||0)*(g.length-1)},_initOptions:function(g,I,e){void 0===g&&(g={}),void 0===e&&(e={}),"object"===typeof g&&(e=g,g=null);var t=Object.assign({},e);if(this._textOptions)for(var C in this._textOptions){var Q=this._textOptions[C];"continued"!==C&&void 0===t[C]&&(t[C]=Q)}return null!=g&&(this.x=g),null!=I&&(this.y=I),!1!==t.lineBreak&&(null==t.width&&(t.width=this.page.width-this.x-this.page.margins.right),t.width=Math.max(t.width,0)),t.columns||(t.columns=0),null==t.columnGap&&(t.columnGap=18),t},_line:function(g,I){return void 0===I&&(I={}),this._fragment(g,this.x,this.y,I),this.x+=this.widthOfString(g)},_fragment:function(g,I,e,t){if(0!==(g=(""+g).replace(/\n/g,"")).length){var C=this._font.encode(g,t.features),Q=C[0],F=C[1],B=this._font.ascender/1e3*this._fontSize;this._glyphs(Q,F,I,e+B,t)}},_glyphs:function(g,I,e,t,C){var Q,F=this,B=[],n=this._fontSize/1e3,U=0,s=!1;this.save(),this.transform(1,0,0,-1,0,this.page.height),t=this.page.height-t,null==this.page.fonts[this._font.id]&&(this.page.fonts[this._font.id]=this._font.ref()),this.addContent("BT"),this.addContent("1 0 0 1 "+sg(e)+" "+sg(t)+" Tm"),this.addContent("/"+this._font.id+" "+sg(this._fontSize)+" Tf");var i=C.fill&&C.stroke?2:C.stroke?1:0;i&&this.addContent(i+" Tr");var c=function(e){if(U<e){var t=g.slice(U,e).join(""),C=I[e-1].xAdvance-I[e-1].advanceWidth;B.push("<"+t+"> "+sg(-C))}return U=e},A=function(g){if(c(g),B.length>0)return F.addContent("["+B.join(" ")+"] TJ"),B.length=0};for(Q=0;Q<I.length;Q++){var l=I[Q];l.xOffset||l.yOffset?(A(Q),this.addContent("1 0 0 1 "+sg(e+l.xOffset*n)+" "+sg(t+l.yOffset*n)+" Tm"),A(Q+1),s=!0):(s&&(this.addContent("1 0 0 1 "+sg(e)+" "+sg(t)+" Tm"),s=!1),l.xAdvance-l.advanceWidth!==0&&c(Q+1)),e+=l.xAdvance*n}return A(Q),this.addContent("ET"),this.restore()}},cg=[65472,65473,65474,65475,65477,65478,65479,65480,65481,65482,65483,65484,65485,65486,65487],Ag=function(){function g(g,I){var e;if(this.data=g,this.label=I,65496!==this.data.readUInt16BE(0))throw"SOI not found in JPEG";for(var t=2;t<this.data.length&&(e=this.data.readUInt16BE(t),t+=2,!Array.from(cg).includes(e));)t+=this.data.readUInt16BE(t);if(!Array.from(cg).includes(e))throw"Invalid JPEG.";t+=2,this.bits=this.data[t++],this.height=this.data.readUInt16BE(t),t+=2,this.width=this.data.readUInt16BE(t),t+=2;var C=this.data[t++];this.colorSpace=function(){switch(C){case 1:return"DeviceGray";case 3:return"DeviceRGB";case 4:return"DeviceCMYK"}}(),this.obj=null}return g.prototype.embed=function(g){if(!this.obj)return this.obj=g.ref({Type:"XObject",Subtype:"Image",BitsPerComponent:this.bits,Width:this.width,Height:this.height,ColorSpace:this.colorSpace,Filter:"DCTDecode"}),"DeviceCMYK"===this.colorSpace&&(this.obj.data.Decode=[1,0,1,0,1,0,1,0]),this.obj.end(this.data),this.data=null},g}(),lg=function(){function I(g,I){this.label=I,this.image=new y.a(g),this.width=this.image.width,this.height=this.image.height,this.imgData=this.image.imgData,this.obj=null}var e=I.prototype;return e.embed=function(I){var e=!1;if(this.document=I,!this.obj){var t=this.image.hasAlphaChannel,C=1===this.image.interlaceMethod;if(this.obj=this.document.ref({Type:"XObject",Subtype:"Image",BitsPerComponent:t?8:this.image.bits,Width:this.width,Height:this.height,Filter:"FlateDecode"}),!t){var Q=this.document.ref({Predictor:C?1:15,Colors:this.image.colors,BitsPerComponent:this.image.bits,Columns:this.width});this.obj.data.DecodeParms=Q,Q.end()}if(0===this.image.palette.length)this.obj.data.ColorSpace=this.image.colorSpace;else{var F=this.document.ref();F.end(g.from(this.image.palette)),this.obj.data.ColorSpace=["Indexed","DeviceRGB",this.image.palette.length/3-1,F]}if(null!=this.image.transparency.grayscale){var B=this.image.transparency.grayscale;this.obj.data.Mask=[B,B]}else if(this.image.transparency.rgb){for(var n,U=this.image.transparency.rgb,s=[],i=d()(U);!(n=i()).done;){var c=n.value;s.push(c,c)}this.obj.data.Mask=s}else{if(this.image.transparency.indexed)return e=!0,this.loadIndexedAlphaChannel();if(t)return e=!0,this.splitAlphaChannel()}if(C&&!e)return this.decodeData();this.finalize()}},e.finalize=function(){if(this.alphaChannel){var g=this.document.ref({Type:"XObject",Subtype:"Image",Height:this.height,Width:this.width,BitsPerComponent:8,Filter:"FlateDecode",ColorSpace:"DeviceGray",Decode:[0,1]});g.end(this.alphaChannel),this.obj.data.SMask=g}return this.obj.end(this.imgData),this.image=null,this.imgData=null},e.splitAlphaChannel=function(){var I=this;return this.image.decodePixels((function(e){for(var t,C,Q=I.image.colors,F=I.width*I.height,B=g.alloc(F*Q),n=g.alloc(F),U=C=t=0,s=e.length,i=16===I.image.bits?1:0;U<s;){for(var c=0;c<Q;c++)B[C++]=e[U++],U+=i;n[t++]=e[U++],U+=i}return I.imgData=r.a.deflateSync(B),I.alphaChannel=r.a.deflateSync(n),I.finalize()}))},e.loadIndexedAlphaChannel=function(){var I=this,e=this.image.transparency.indexed;return this.image.decodePixels((function(t){for(var C=g.alloc(I.width*I.height),Q=0,F=0,B=t.length;F<B;F++)C[Q++]=e[t[F]];return I.alphaChannel=r.a.deflateSync(C),I.finalize()}))},e.decodeData=function(){var g=this;this.image.decodePixels((function(I){g.imgData=r.a.deflateSync(I),g.finalize()}))},I}(),ag=function(){function I(){}return I.open=function(I,e){var t;if(g.isBuffer(I))t=I;else if(I instanceof ArrayBuffer)t=g.from(new Uint8Array(I));else{var C=/^data:.+;base64,(.*)$/.exec(I);C&&(t=g.from(C[1],"base64"))}if(255===t[0]&&216===t[1])return new Ag(t,e);if(137===t[0]&&"PNG"===t.toString("ascii",1,4))return new lg(t,e);throw new Error("Unknown image format.")},I}(),rg={initImages:function(){return this._imageRegistry={},this._imageCount=0},image:function(g,I,e,t){var C,Q,F,B,n,U,s;null==t&&(t={}),"object"===typeof I&&(t=I,I=null),I=null!=(U=null!=I?I:t.x)?U:this.x,e=null!=(s=null!=e?e:t.y)?s:this.y,"string"===typeof g&&(B=this._imageRegistry[g]),B||(B=g.width&&g.height?g:this.openImage(g)),B.obj||B.embed(this),null==this.page.xobjects[B.label]&&(this.page.xobjects[B.label]=B.obj);var i=t.width||B.width,c=t.height||B.height;if(t.width&&!t.height){var A=i/B.width;i=B.width*A,c=B.height*A}else if(t.height&&!t.width){var l=c/B.height;i=B.width*l,c=B.height*l}else if(t.scale)i=B.width*t.scale,c=B.height*t.scale;else if(t.fit){var a=Array.from(t.fit);Q=(F=a[0])/(C=a[1]),(n=B.width/B.height)>Q?(i=F,c=F/n):(c=C,i=C*n)}else if(t.cover){var r=Array.from(t.cover);Q=(F=r[0])/(C=r[1]),(n=B.width/B.height)>Q?(c=C,i=C*n):(i=F,c=F/n)}return(t.fit||t.cover)&&("center"===t.align?I=I+F/2-i/2:"right"===t.align&&(I=I+F-i),"center"===t.valign?e=e+C/2-c/2:"bottom"===t.valign&&(e=e+C-c)),null!=t.link&&this.link(I,e,i,c,t.link),null!=t.goTo&&this.goTo(I,e,i,c,t.goTo),null!=t.destination&&this.addNamedDestination(t.destination,"XYZ",I,e,null),this.y===e&&(this.y+=c),this.save(),this.transform(i,0,0,-c,I,e+c),this.addContent("/"+B.label+" Do"),this.restore(),this},openImage:function(g){var I;return"string"===typeof g&&(I=this._imageRegistry[g]),I||(I=ag.open(g,"I"+ ++this._imageCount),"string"===typeof g&&(this._imageRegistry[g]=I)),I}},og={annotate:function(g,I,e,t,C){for(var Q in C.Type="Annot",C.Rect=this._convertRect(g,I,e,t),C.Border=[0,0,0],"Link"===C.Subtype&&"undefined"===typeof C.F&&(C.F=4),"Link"!==C.Subtype&&null==C.C&&(C.C=this._normalizeColor(C.color||[0,0,0])),delete C.color,"string"===typeof C.Dest&&(C.Dest=new String(C.Dest)),C){var F=C[Q];C[Q[0].toUpperCase()+Q.slice(1)]=F}var B=this.ref(C);return this.page.annotations.push(B),B.end(),this},note:function(g,I,e,t,C,Q){return void 0===Q&&(Q={}),Q.Subtype="Text",Q.Contents=new String(C),Q.Name="Comment",null==Q.color&&(Q.color=[243,223,92]),this.annotate(g,I,e,t,Q)},goTo:function(g,I,e,t,C,Q){return void 0===Q&&(Q={}),Q.Subtype="Link",Q.A=this.ref({S:"GoTo",D:new String(C)}),Q.A.end(),this.annotate(g,I,e,t,Q)},link:function(g,I,e,t,C,Q){if(void 0===Q&&(Q={}),Q.Subtype="Link","number"===typeof C){var F=this._root.data.Pages.data;if(!(C>=0&&C<F.Kids.length))throw new Error("The document has no page "+C);Q.A=this.ref({S:"GoTo",D:[F.Kids[C],"XYZ",null,null,null]}),Q.A.end()}else Q.A=this.ref({S:"URI",URI:new String(C)}),Q.A.end();return this.annotate(g,I,e,t,Q)},_markup:function(g,I,e,t,C){void 0===C&&(C={});var Q=this._convertRect(g,I,e,t),F=Q[0],B=Q[1],n=Q[2],U=Q[3];return C.QuadPoints=[F,U,n,U,F,B,n,B],C.Contents=new String,this.annotate(g,I,e,t,C)},highlight:function(g,I,e,t,C){return void 0===C&&(C={}),C.Subtype="Highlight",null==C.color&&(C.color=[241,238,148]),this._markup(g,I,e,t,C)},underline:function(g,I,e,t,C){return void 0===C&&(C={}),C.Subtype="Underline",this._markup(g,I,e,t,C)},strike:function(g,I,e,t,C){return void 0===C&&(C={}),C.Subtype="StrikeOut",this._markup(g,I,e,t,C)},lineAnnotation:function(g,I,e,t,C){return void 0===C&&(C={}),C.Subtype="Line",C.Contents=new String,C.L=[g,this.page.height-I,e,this.page.height-t],this.annotate(g,I,e,t,C)},rectAnnotation:function(g,I,e,t,C){return void 0===C&&(C={}),C.Subtype="Square",C.Contents=new String,this.annotate(g,I,e,t,C)},ellipseAnnotation:function(g,I,e,t,C){return void 0===C&&(C={}),C.Subtype="Circle",C.Contents=new String,this.annotate(g,I,e,t,C)},textAnnotation:function(g,I,e,t,C,Q){return void 0===Q&&(Q={}),Q.Subtype="FreeText",Q.Contents=new String(C),Q.DA=new String,this.annotate(g,I,e,t,Q)},fileAnnotation:function(g,I,e,t,C,Q){void 0===C&&(C={}),void 0===Q&&(Q={});var F=this.file(C.src,Object.assign({hidden:!0},C));return Q.Subtype="FileAttachment",Q.FS=F,Q.Contents?Q.Contents=new String(Q.Contents):F.data.Desc&&(Q.Contents=F.data.Desc),this.annotate(g,I,e,t,Q)},_convertRect:function(g,I,e,t){var C=I;I+=t;var Q=g+e,F=this._ctm,B=F[0],n=F[1],U=F[2],s=F[3],i=F[4],c=F[5];return[g=B*g+U*I+i,I=n*g+s*I+c,Q=B*Q+U*C+i,C=n*Q+s*C+c]}},dg={readOnly:1,required:2,noExport:4,multiline:4096,password:8192,toggleToOffButton:16384,radioButton:32768,pushButton:65536,combo:131072,edit:262144,sort:524288,multiSelect:2097152,noSpell:4194304},ug={left:0,center:1,right:2},yg={value:"V",defaultValue:"DV"},bg={zip:"0",zipPlus4:"1",zip4:"1",phone:"2",ssn:"3"},Zg={nDec:0,sepComma:!1,negStyle:"MinusBlack",currency:"",currencyPrepend:!0},mg={nDec:0,sepComma:!1},xg={initForm:function(){if(!this._font)throw new Error("Must set a font before calling initForm method");this._acroform={fonts:{},defaultFont:this._font.name},this._acroform.fonts[this._font.id]=this._font.ref();var g={Fields:[],NeedAppearances:!0,DA:new String("/"+this._font.id+" 0 Tf 0 g"),DR:{Font:{}}};g.DR.Font[this._font.id]=this._font.ref();var I=this.ref(g);return this._root.data.AcroForm=I,this},endAcroForm:function(){var g=this;if(this._root.data.AcroForm){if(!Object.keys(this._acroform.fonts).length&&!this._acroform.defaultFont)throw new Error("No fonts specified for PDF form");var I=this._root.data.AcroForm.data.DR.Font;Object.keys(this._acroform.fonts).forEach((function(e){I[e]=g._acroform.fonts[e]})),this._root.data.AcroForm.data.Fields.forEach((function(I){g._endChild(I)})),this._root.data.AcroForm.end()}return this},_endChild:function(g){var I=this;return Array.isArray(g.data.Kids)&&(g.data.Kids.forEach((function(g){I._endChild(g)})),g.end()),this},formField:function(g,I){void 0===I&&(I={});var e=this._fieldDict(g,null,I),t=this.ref(e);return this._addToParent(t),t},formAnnotation:function(g,I,e,t,C,Q,F){void 0===F&&(F={});var B=this._fieldDict(g,I,F);B.Subtype="Widget",void 0===B.F&&(B.F=4),this.annotate(e,t,C,Q,B);var n=this.page.annotations[this.page.annotations.length-1];return this._addToParent(n)},formText:function(g,I,e,t,C,Q){return void 0===Q&&(Q={}),this.formAnnotation(g,"text",I,e,t,C,Q)},formPushButton:function(g,I,e,t,C,Q){return void 0===Q&&(Q={}),this.formAnnotation(g,"pushButton",I,e,t,C,Q)},formCombo:function(g,I,e,t,C,Q){return void 0===Q&&(Q={}),this.formAnnotation(g,"combo",I,e,t,C,Q)},formList:function(g,I,e,t,C,Q){return void 0===Q&&(Q={}),this.formAnnotation(g,"list",I,e,t,C,Q)},formRadioButton:function(g,I,e,t,C,Q){return void 0===Q&&(Q={}),this.formAnnotation(g,"radioButton",I,e,t,C,Q)},formCheckbox:function(g,I,e,t,C,Q){return void 0===Q&&(Q={}),this.formAnnotation(g,"checkbox",I,e,t,C,Q)},_addToParent:function(g){var I=g.data.Parent;return I?(I.data.Kids||(I.data.Kids=[]),I.data.Kids.push(g)):this._root.data.AcroForm.data.Fields.push(g),this},_fieldDict:function(g,I,e){if(void 0===e&&(e={}),!this._acroform)throw new Error("Call document.initForms() method before adding form elements to document");var t=Object.assign({},e);return null!==I&&(t=this._resolveType(I,e)),t=this._resolveFlags(t),t=this._resolveJustify(t),t=this._resolveFont(t),t=this._resolveStrings(t),t=this._resolveColors(t),(t=this._resolveFormat(t)).T=new String(g),t.parent&&(t.Parent=t.parent,delete t.parent),t},_resolveType:function(g,I){if("text"===g)I.FT="Tx";else if("pushButton"===g)I.FT="Btn",I.pushButton=!0;else if("radioButton"===g)I.FT="Btn",I.radioButton=!0;else if("checkbox"===g)I.FT="Btn";else if("combo"===g)I.FT="Ch",I.combo=!0;else{if("list"!==g)throw new Error("Invalid form annotation type '"+g+"'");I.FT="Ch"}return I},_resolveFormat:function(g){var I=g.format;if(I&&I.type){var e,t,C="";if(void 0!==bg[I.type])e="AFSpecial_Keystroke",t="AFSpecial_Format",C=bg[I.type];else{var Q=I.type.charAt(0).toUpperCase()+I.type.slice(1);if(e="AF"+Q+"_Keystroke",t="AF"+Q+"_Format","date"===I.type)e+="Ex",C=String(I.param);else if("time"===I.type)C=String(I.param);else if("number"===I.type){var F=Object.assign({},Zg,I);C=String([String(F.nDec),F.sepComma?"0":"1",'"'+F.negStyle+'"',"null",'"'+F.currency+'"',String(F.currencyPrepend)].join(","))}else if("percent"===I.type){var B=Object.assign({},mg,I);C=String([String(B.nDec),B.sepComma?"0":"1"].join(","))}}g.AA=g.AA?g.AA:{},g.AA.K={S:"JavaScript",JS:new String(e+"("+C+");")},g.AA.F={S:"JavaScript",JS:new String(t+"("+C+");")}}return delete g.format,g},_resolveColors:function(g){var I=this._normalizeColor(g.backgroundColor);return I&&(g.MK||(g.MK={}),g.MK.BG=I),(I=this._normalizeColor(g.borderColor))&&(g.MK||(g.MK={}),g.MK.BC=I),delete g.backgroundColor,delete g.borderColor,g},_resolveFlags:function(g){var I=0;return Object.keys(g).forEach((function(e){dg[e]&&(I|=dg[e],delete g[e])})),0!==I&&(g.Ff=g.Ff?g.Ff:0,g.Ff|=I),g},_resolveJustify:function(g){var I=0;return void 0!==g.align&&("number"===typeof ug[g.align]&&(I=ug[g.align]),delete g.align),0!==I&&(g.Q=I),g},_resolveFont:function(g){return null===this._acroform.fonts[this._font.id]&&(this._acroform.fonts[this._font.id]=this._font.ref()),this._acroform.defaultFont!==this._font.name&&(g.DR={Font:{}},g.DR.Font[this._font.id]=this._font.ref(),g.DA=new String("/"+this._font.id+" 0 Tf 0 g")),g},_resolveStrings:function(g){var I=[];function e(g){if(Array.isArray(g))for(var e=0;e<g.length;e++)"string"===typeof g[e]?I.push(new String(g[e])):I.push(g[e])}return e(g.Opt),g.select&&(e(g.select),delete g.select),I.length&&(g.Opt=I),Object.keys(yg).forEach((function(I){void 0!==g[I]&&(g[yg[I]]=g[I],delete g[I])})),["V","DV"].forEach((function(I){"string"===typeof g[I]&&(g[I]=new String(g[I]))})),g.MK&&g.MK.CA&&(g.MK.CA=new String(g.MK.CA)),g.label&&(g.MK=g.MK?g.MK:{},g.MK.CA=new String(g.label),delete g.label),g}},Rg={file:function(I,e){void 0===e&&(e={}),e.name=e.name||I;var t,C={Type:"EmbeddedFile",Params:{}};if(!I)throw new Error("No src specified");if(g.isBuffer(I))t=I;else if(I instanceof ArrayBuffer)t=g.from(new Uint8Array(I));else{var Q;if(!(Q=/^data:(.*);base64,(.*)$/.exec(I)))throw new Error("Could not find file "+I);Q[1]&&(C.Subtype=Q[1].replace("/","#2F")),t=g.from(Q[2],"base64")}e.creationDate instanceof Date&&(C.Params.CreationDate=e.creationDate),e.modifiedDate instanceof Date&&(C.Params.ModDate=e.modifiedDate),e.type&&(C.Subtype=e.type.replace("/","#2F"));var F,B=x.a.MD5(x.a.lib.WordArray.create(new Uint8Array(t)));C.Params.CheckSum=new String(B),C.Params.Size=t.byteLength,this._fileRegistry||(this._fileRegistry={});var n=this._fileRegistry[e.name];n&&function(g,I){if(g.Subtype!==I.Subtype||g.Params.CheckSum.toString()!==I.Params.CheckSum.toString()||g.Params.Size!==I.Params.Size||g.Params.CreationDate!==I.Params.CreationDate||g.Params.ModDate!==I.Params.ModDate)return!1;return!0}(C,n)?F=n.ref:((F=this.ref(C)).end(t),this._fileRegistry[e.name]=Z()({},C,{ref:F}));var U={Type:"Filespec",F:new String(e.name),EF:{F:F},UF:new String(e.name)};e.description&&(U.Desc=new String(e.description));var s=this.ref(U);return s.end(),e.hidden||this.addNamedEmbeddedFile(e.name,s),s}};var Sg=function(I){function e(g){var e;switch(void 0===g&&(g={}),(e=I.call(this)||this).options=g,g.pdfVersion){case"1.4":e.version=1.4;break;case"1.5":e.version=1.5;break;case"1.6":e.version=1.6;break;case"1.7":case"1.7ext3":e.version=1.7;break;default:e.version=1.3}e.compress=null==e.options.compress||e.options.compress,e._pageBuffer=[],e._pageBufferStart=0,e._offsets=[],e._waiting=0,e._ended=!1,e._offset=0;var t=e.ref({Type:"Pages",Count:0,Kids:[]}),C=e.ref({Dests:new S});if(e._root=e.ref({Type:"Catalog",Pages:t,Names:C}),e.options.lang&&(e._root.data.Lang=new String(e.options.lang)),e.page=null,e.initColor(),e.initVector(),e.initFonts(),e.initText(),e.initImages(),e.info={Producer:"PDFKit",Creator:"PDFKit",CreationDate:new Date},e.options.info)for(var Q in e.options.info){var F=e.options.info[Q];e.info[Q]=F}return e.options.displayTitle&&(e._root.data.ViewerPreferences=e.ref({DisplayDocTitle:!0})),e._write("%PDF-"+e.version),e._write("%\xff\xff\xff\xff"),!1!==e.options.autoFirstPage&&e.addPage(),e}s()(e,I);var t=e.prototype;return t.addPage=function(g){null==g&&(g=this.options),this.options.bufferPages||this.flushPages(),this.page=new E(this,g),this._pageBuffer.push(this.page);var I=this._root.data.Pages.data;return I.Kids.push(this.page.dictionary),I.Count++,this._ctm=[1,0,0,1,0,0],this.transform(1,0,0,-1,0,this.page.height),this},t.flushPages=function(){var g=this._pageBuffer;this._pageBuffer=[],this._pageBufferStart+=g.length;for(var I=0,e=Array.from(g);I<e.length;I++){e[I].end()}},t.addNamedDestination=function(g){for(var I=arguments.length,e=new Array(I>1?I-1:0),t=1;t<I;t++)e[t-1]=arguments[t];0===e.length&&(e=["XYZ",null,null,null]),"XYZ"===e[0]&&null!==e[2]&&(e[2]=this.page.height-e[2]),e.unshift(this.page.dictionary),this._root.data.Names.data.Dests.add(g,e)},t.addNamedEmbeddedFile=function(g,I){this._root.data.Names.data.EmbeddedFiles||(this._root.data.Names.data.EmbeddedFiles=new S({limits:!1})),this._root.data.Names.data.EmbeddedFiles.add(g,I)},t.addNamedJavaScript=function(g,I){this._root.data.Names.data.JavaScript||(this._root.data.Names.data.JavaScript=new S);var e={JS:new String(I),S:"JavaScript"};this._root.data.Names.data.JavaScript.add(g,e)},t.ref=function(g){var I=new R(this,this._offsets.length+1,g);return this._offsets.push(null),this._waiting++,I},t._read=function(){},t._write=function(I){return g.isBuffer(I)||(I=g.from(I+"\n","binary")),this.push(I),this._offset+=I.length},t.addContent=function(g){return this.page.write(g),this},t._refEnd=function(g){if(this._offsets[g.id-1]=g.offset,0===--this._waiting&&this._ended)return this._finalize(),this._ended=!1},t.end=function(){for(var g in this.flushPages(),this._info=this.ref(),this.info){var I=this.info[g];"string"===typeof I&&(I=new String(I));var e=this.ref(I);e.end(),this._info.data[g]=e}for(var t in this._info.end(),this._fontFamilies){this._fontFamilies[t].finalize()}return this._root.end(),this._root.data.Pages.end(),this._root.data.Names.end(),this.endAcroForm(),this._root.data.ViewerPreferences&&this._root.data.ViewerPreferences.end(),0===this._waiting?this._finalize():this._ended=!0},t._finalize=function(g){var I=this._offset;this._write("xref"),this._write("0 "+(this._offsets.length+1)),this._write("0000000000 65535 f ");for(var e=0,t=Array.from(this._offsets);e<t.length;e++){var C=t[e];C=("0000000000"+C).slice(-10),this._write(C+" 00000 n ")}return this._write("trailer"),this._write(h.convert({Size:this._offsets.length+1,Root:this._root,Info:this._info})),this._write("startxref"),this._write(""+I),this._write("%%EOF"),this.push(null)},t.toString=function(){return"[object PDFDocument]"},e}(c.a.Readable),Gg=function(g){return function(){var I=[];for(var e in g){var t=g[e];I.push(Sg.prototype[e]=t)}return I}()};Gg(k),Gg(gg),Gg(Ug),Gg(ig),Gg(rg),Gg(og),Gg(xg),Gg(Rg)}.call(this,e(103).Buffer)},function(g,I,e){"use strict";(function(g,t){var C,Q=e(815);C="undefined"!==typeof self?self:"undefined"!==typeof window?window:"undefined"!==typeof g?g:t;var F=Object(Q.a)(C);I.a=F}).call(this,e(67),e(397)(g))},function(g,I){g.exports=function(g,I){g.prototype=Object.create(I.prototype),g.prototype.constructor=g,g.__proto__=I}},function(g,I,e){g.exports=function g(I){"use strict";var e=/^\0+/g,t=/[\0\r\f]/g,C=/: */g,Q=/zoo|gra/,F=/([,: ])(transform)/g,B=/,+\s*(?![^(]*[)])/g,n=/ +\s*(?![^(]*[)])/g,U=/ *[\0] */g,s=/,\r+?/g,i=/([\t\r\n ])*\f?&/g,c=/:global\(((?:[^\(\)\[\]]*|\[.*\]|\([^\(\)]*\))*)\)/g,A=/\W+/g,l=/@(k\w+)\s*(\S*)\s*/,a=/::(place)/g,r=/:(read-only)/g,o=/\s+(?=[{\];=:>])/g,d=/([[}=:>])\s+/g,u=/(\{[^{]+?);(?=\})/g,y=/\s{2,}/g,b=/([^\(])(:+) */g,Z=/[svh]\w+-[tblr]{2}/,m=/\(\s*(.*)\s*\)/g,x=/([\s\S]*?);/g,R=/-self|flex-/g,S=/[^]*?(:[rp][el]a[\w-]+)[^]*/,G=/stretch|:\s*\w+\-(?:conte|avail)/,L=/([^-])(image-set\()/,V="-webkit-",h="-moz-",D="-ms-",p=59,E=125,N=123,W=40,f=41,X=10,J=13,v=32,k=45,H=42,M=44,Y=58,w=47,T=1,z=1,O=0,K=1,j=1,P=1,_=0,q=0,$=0,gg=[],Ig=[],eg=0,tg=null,Cg=0,Qg=1,Fg="",Bg="",ng="";function Ug(g,I,C,Q,F){for(var B,n,s=0,i=0,c=0,A=0,o=0,d=0,u=0,y=0,Z=0,x=0,R=0,S=0,G=0,L=0,h=0,D=0,_=0,Ig=0,tg=0,ig=C.length,og=ig-1,dg="",ug="",yg="",bg="",Zg="",mg="";h<ig;){if(u=C.charCodeAt(h),h===og&&i+A+c+s!==0&&(0!==i&&(u=i===w?X:w),A=c=s=0,ig++,og++),i+A+c+s===0){if(h===og&&(D>0&&(ug=ug.replace(t,"")),ug.trim().length>0)){switch(u){case v:case 9:case p:case J:case X:break;default:ug+=C.charAt(h)}u=p}if(1===_)switch(u){case N:case E:case p:case 34:case 39:case W:case f:case M:_=0;case 9:case J:case X:case v:break;default:for(_=0,tg=h,o=u,h--,u=p;tg<ig;)switch(C.charCodeAt(tg++)){case X:case J:case p:++h,u=o,tg=ig;break;case Y:D>0&&(++h,u=o);case N:tg=ig}}switch(u){case N:for(o=(ug=ug.trim()).charCodeAt(0),R=1,tg=++h;h<ig;){switch(u=C.charCodeAt(h)){case N:R++;break;case E:R--;break;case w:switch(d=C.charCodeAt(h+1)){case H:case w:h=rg(d,h,og,C)}break;case 91:u++;case W:u++;case 34:case 39:for(;h++<og&&C.charCodeAt(h)!==u;);}if(0===R)break;h++}switch(yg=C.substring(tg,h),0===o&&(o=(ug=ug.replace(e,"").trim()).charCodeAt(0)),o){case 64:switch(D>0&&(ug=ug.replace(t,"")),d=ug.charCodeAt(1)){case 100:case 109:case 115:case k:B=I;break;default:B=gg}if(tg=(yg=Ug(I,B,yg,d,F+1)).length,$>0&&0===tg&&(tg=ug.length),eg>0&&(n=ag(3,yg,B=sg(gg,ug,Ig),I,z,T,tg,d,F,Q),ug=B.join(""),void 0!==n&&0===(tg=(yg=n.trim()).length)&&(d=0,yg="")),tg>0)switch(d){case 115:ug=ug.replace(m,lg);case 100:case 109:case k:yg=ug+"{"+yg+"}";break;case 107:yg=(ug=ug.replace(l,"$1 $2"+(Qg>0?Fg:"")))+"{"+yg+"}",yg=1===j||2===j&&Ag("@"+yg,3)?"@"+V+yg+"@"+yg:"@"+yg;break;default:yg=ug+yg,112===Q&&(bg+=yg,yg="")}else yg="";break;default:yg=Ug(I,sg(I,ug,Ig),yg,Q,F+1)}Zg+=yg,S=0,_=0,L=0,D=0,Ig=0,G=0,ug="",yg="",u=C.charCodeAt(++h);break;case E:case p:if((tg=(ug=(D>0?ug.replace(t,""):ug).trim()).length)>1)switch(0===L&&((o=ug.charCodeAt(0))===k||o>96&&o<123)&&(tg=(ug=ug.replace(" ",":")).length),eg>0&&void 0!==(n=ag(1,ug,I,g,z,T,bg.length,Q,F,Q))&&0===(tg=(ug=n.trim()).length)&&(ug="\0\0"),o=ug.charCodeAt(0),d=ug.charCodeAt(1),o){case 0:break;case 64:if(105===d||99===d){mg+=ug+C.charAt(h);break}default:if(ug.charCodeAt(tg-1)===Y)break;bg+=cg(ug,o,d,ug.charCodeAt(2))}S=0,_=0,L=0,D=0,Ig=0,ug="",u=C.charCodeAt(++h)}}switch(u){case J:case X:if(i+A+c+s+q===0)switch(x){case f:case 39:case 34:case 64:case 126:case 62:case H:case 43:case w:case k:case Y:case M:case p:case N:case E:break;default:L>0&&(_=1)}i===w?i=0:K+S===0&&107!==Q&&ug.length>0&&(D=1,ug+="\0"),eg*Cg>0&&ag(0,ug,I,g,z,T,bg.length,Q,F,Q),T=1,z++;break;case p:case E:if(i+A+c+s===0){T++;break}default:switch(T++,dg=C.charAt(h),u){case 9:case v:if(A+s+i===0)switch(y){case M:case Y:case 9:case v:dg="";break;default:u!==v&&(dg=" ")}break;case 0:dg="\\0";break;case 12:dg="\\f";break;case 11:dg="\\v";break;case 38:A+i+s===0&&K>0&&(Ig=1,D=1,dg="\f"+dg);break;case 108:if(A+i+s+O===0&&L>0)switch(h-L){case 2:112===y&&C.charCodeAt(h-3)===Y&&(O=y);case 8:111===Z&&(O=Z)}break;case Y:A+i+s===0&&(L=h);break;case M:i+c+A+s===0&&(D=1,dg+="\r");break;case 34:case 39:0===i&&(A=A===u?0:0===A?u:A);break;case 91:A+i+c===0&&s++;break;case 93:A+i+c===0&&s--;break;case f:A+i+s===0&&c--;break;case W:if(A+i+s===0){if(0===S)switch(2*y+3*Z){case 533:break;default:R=0,S=1}c++}break;case 64:i+c+A+s+L+G===0&&(G=1);break;case H:case w:if(A+s+c>0)break;switch(i){case 0:switch(2*u+3*C.charCodeAt(h+1)){case 235:i=w;break;case 220:tg=h,i=H}break;case H:u===w&&y===H&&tg+2!==h&&(33===C.charCodeAt(tg+2)&&(bg+=C.substring(tg,h+1)),dg="",i=0)}}if(0===i){if(K+A+s+G===0&&107!==Q&&u!==p)switch(u){case M:case 126:case 62:case 43:case f:case W:if(0===S){switch(y){case 9:case v:case X:case J:dg+="\0";break;default:dg="\0"+dg+(u===M?"":"\0")}D=1}else switch(u){case W:L+7===h&&108===y&&(L=0),S=++R;break;case f:0==(S=--R)&&(D=1,dg+="\0")}break;case 9:case v:switch(y){case 0:case N:case E:case p:case M:case 12:case 9:case v:case X:case J:break;default:0===S&&(D=1,dg+="\0")}}ug+=dg,u!==v&&9!==u&&(x=u)}}Z=y,y=u,h++}if(tg=bg.length,$>0&&0===tg&&0===Zg.length&&0===I[0].length==0&&(109!==Q||1===I.length&&(K>0?Bg:ng)===I[0])&&(tg=I.join(",").length+2),tg>0){if(B=0===K&&107!==Q?function(g){for(var I,e,C=0,Q=g.length,F=Array(Q);C<Q;++C){for(var B=g[C].split(U),n="",s=0,i=0,c=0,A=0,l=B.length;s<l;++s)if(!(0===(i=(e=B[s]).length)&&l>1)){if(c=n.charCodeAt(n.length-1),A=e.charCodeAt(0),I="",0!==s)switch(c){case H:case 126:case 62:case 43:case v:case W:break;default:I=" "}switch(A){case 38:e=I+Bg;case 126:case 62:case 43:case v:case f:case W:break;case 91:e=I+e+Bg;break;case Y:switch(2*e.charCodeAt(1)+3*e.charCodeAt(2)){case 530:if(P>0){e=I+e.substring(8,i-1);break}default:(s<1||B[s-1].length<1)&&(e=I+Bg+e)}break;case M:I="";default:e=i>1&&e.indexOf(":")>0?I+e.replace(b,"$1"+Bg+"$2"):I+e+Bg}n+=e}F[C]=n.replace(t,"").trim()}return F}(I):I,eg>0&&void 0!==(n=ag(2,bg,B,g,z,T,tg,Q,F,Q))&&0===(bg=n).length)return mg+bg+Zg;if(bg=B.join(",")+"{"+bg+"}",j*O!=0){switch(2!==j||Ag(bg,2)||(O=0),O){case 111:bg=bg.replace(r,":-moz-$1")+bg;break;case 112:bg=bg.replace(a,"::"+V+"input-$1")+bg.replace(a,"::-moz-$1")+bg.replace(a,":-ms-input-$1")+bg}O=0}}return mg+bg+Zg}function sg(g,I,e){var t=I.trim().split(s),C=t,Q=t.length,F=g.length;switch(F){case 0:case 1:for(var B=0,n=0===F?"":g[0]+" ";B<Q;++B)C[B]=ig(n,C[B],e,F).trim();break;default:B=0;var U=0;for(C=[];B<Q;++B)for(var i=0;i<F;++i)C[U++]=ig(g[i]+" ",t[B],e,F).trim()}return C}function ig(g,I,e,t){var C=I,Q=C.charCodeAt(0);switch(Q<33&&(Q=(C=C.trim()).charCodeAt(0)),Q){case 38:switch(K+t){case 0:case 1:if(0===g.trim().length)break;default:return C.replace(i,"$1"+g.trim())}break;case Y:switch(C.charCodeAt(1)){case 103:if(P>0&&K>0)return C.replace(c,"$1").replace(i,"$1"+ng);break;default:return g.trim()+C.replace(i,"$1"+g.trim())}default:if(e*K>0&&C.indexOf("\f")>0)return C.replace(i,(g.charCodeAt(0)===Y?"":"$1")+g.trim())}return g+C}function cg(g,I,e,t){var U,s=0,i=g+";",c=2*I+3*e+4*t;if(944===c)return function(g){var I=g.length,e=g.indexOf(":",9)+1,t=g.substring(0,e).trim(),C=g.substring(e,I-1).trim();switch(g.charCodeAt(9)*Qg){case 0:break;case k:if(110!==g.charCodeAt(10))break;default:var Q=C.split((C="",B)),F=0;for(e=0,I=Q.length;F<I;e=0,++F){for(var U=Q[F],s=U.split(n);U=s[e];){var i=U.charCodeAt(0);if(1===Qg&&(i>64&&i<90||i>96&&i<123||95===i||i===k&&U.charCodeAt(1)!==k))switch(isNaN(parseFloat(U))+(-1!==U.indexOf("("))){case 1:switch(U){case"infinite":case"alternate":case"backwards":case"running":case"normal":case"forwards":case"both":case"none":case"linear":case"ease":case"ease-in":case"ease-out":case"ease-in-out":case"paused":case"reverse":case"alternate-reverse":case"inherit":case"initial":case"unset":case"step-start":case"step-end":break;default:U+=Fg}}s[e++]=U}C+=(0===F?"":",")+s.join(" ")}}return C=t+C+";",1===j||2===j&&Ag(C,1)?V+C+C:C}(i);if(0===j||2===j&&!Ag(i,1))return i;switch(c){case 1015:return 97===i.charCodeAt(10)?V+i+i:i;case 951:return 116===i.charCodeAt(3)?V+i+i:i;case 963:return 110===i.charCodeAt(5)?V+i+i:i;case 1009:if(100!==i.charCodeAt(4))break;case 969:case 942:return V+i+i;case 978:return V+i+h+i+i;case 1019:case 983:return V+i+h+i+D+i+i;case 883:return i.charCodeAt(8)===k?V+i+i:i.indexOf("image-set(",11)>0?i.replace(L,"$1"+V+"$2")+i:i;case 932:if(i.charCodeAt(4)===k)switch(i.charCodeAt(5)){case 103:return V+"box-"+i.replace("-grow","")+V+i+D+i.replace("grow","positive")+i;case 115:return V+i+D+i.replace("shrink","negative")+i;case 98:return V+i+D+i.replace("basis","preferred-size")+i}return V+i+D+i+i;case 964:return V+i+D+"flex-"+i+i;case 1023:if(99!==i.charCodeAt(8))break;return U=i.substring(i.indexOf(":",15)).replace("flex-","").replace("space-between","justify"),V+"box-pack"+U+V+i+D+"flex-pack"+U+i;case 1005:return Q.test(i)?i.replace(C,":"+V)+i.replace(C,":"+h)+i:i;case 1e3:switch(s=(U=i.substring(13).trim()).indexOf("-")+1,U.charCodeAt(0)+U.charCodeAt(s)){case 226:U=i.replace(Z,"tb");break;case 232:U=i.replace(Z,"tb-rl");break;case 220:U=i.replace(Z,"lr");break;default:return i}return V+i+D+U+i;case 1017:if(-1===i.indexOf("sticky",9))return i;case 975:switch(s=(i=g).length-10,c=(U=(33===i.charCodeAt(s)?i.substring(0,s):i).substring(g.indexOf(":",7)+1).trim()).charCodeAt(0)+(0|U.charCodeAt(7))){case 203:if(U.charCodeAt(8)<111)break;case 115:i=i.replace(U,V+U)+";"+i;break;case 207:case 102:i=i.replace(U,V+(c>102?"inline-":"")+"box")+";"+i.replace(U,V+U)+";"+i.replace(U,D+U+"box")+";"+i}return i+";";case 938:if(i.charCodeAt(5)===k)switch(i.charCodeAt(6)){case 105:return U=i.replace("-items",""),V+i+V+"box-"+U+D+"flex-"+U+i;case 115:return V+i+D+"flex-item-"+i.replace(R,"")+i;default:return V+i+D+"flex-line-pack"+i.replace("align-content","").replace(R,"")+i}break;case 973:case 989:if(i.charCodeAt(3)!==k||122===i.charCodeAt(4))break;case 931:case 953:if(!0===G.test(g))return 115===(U=g.substring(g.indexOf(":")+1)).charCodeAt(0)?cg(g.replace("stretch","fill-available"),I,e,t).replace(":fill-available",":stretch"):i.replace(U,V+U)+i.replace(U,h+U.replace("fill-",""))+i;break;case 962:if(i=V+i+(102===i.charCodeAt(5)?D+i:"")+i,e+t===211&&105===i.charCodeAt(13)&&i.indexOf("transform",10)>0)return i.substring(0,i.indexOf(";",27)+1).replace(F,"$1"+V+"$2")+i}return i}function Ag(g,I){var e=g.indexOf(1===I?":":"{"),t=g.substring(0,3!==I?e:10),C=g.substring(e+1,g.length-1);return tg(2!==I?t:t.replace(S,"$1"),C,I)}function lg(g,I){var e=cg(I,I.charCodeAt(0),I.charCodeAt(1),I.charCodeAt(2));return e!==I+";"?e.replace(x," or ($1)").substring(4):"("+I+")"}function ag(g,I,e,t,C,Q,F,B,n,U){for(var s,i=0,c=I;i<eg;++i)switch(s=Ig[i].call(dg,g,c,e,t,C,Q,F,B,n,U)){case void 0:case!1:case!0:case null:break;default:c=s}if(c!==I)return c}function rg(g,I,e,t){for(var C=I+1;C<e;++C)switch(t.charCodeAt(C)){case w:if(g===H&&t.charCodeAt(C-1)===H&&I+2!==C)return C+1;break;case X:if(g===w)return C+1}return C}function og(g){for(var I in g){var e=g[I];switch(I){case"keyframe":Qg=0|e;break;case"global":P=0|e;break;case"cascade":K=0|e;break;case"compress":_=0|e;break;case"semicolon":q=0|e;break;case"preserve":$=0|e;break;case"prefix":tg=null,e?"function"!=typeof e?j=1:(j=2,tg=e):j=0}}return og}function dg(I,e){if(void 0!==this&&this.constructor===dg)return g(I);var C=I,Q=C.charCodeAt(0);Q<33&&(Q=(C=C.trim()).charCodeAt(0)),Qg>0&&(Fg=C.replace(A,91===Q?"":"-")),Q=1,1===K?ng=C:Bg=C;var F,B=[ng];eg>0&&void 0!==(F=ag(-1,e,B,B,z,T,0,0,0,0))&&"string"==typeof F&&(e=F);var n=Ug(gg,B,e,0,0);return eg>0&&void 0!==(F=ag(-2,n,B,B,z,T,n.length,0,0,0))&&"string"!=typeof(n=F)&&(Q=0),Fg="",ng="",Bg="",O=0,z=1,T=1,_*Q==0?n:n.replace(t,"").replace(o,"").replace(d,"$1").replace(u,"$1").replace(y," ")}return dg.use=function g(I){switch(I){case void 0:case null:eg=Ig.length=0;break;default:if("function"==typeof I)Ig[eg++]=I;else if("object"==typeof I)for(var e=0,t=I.length;e<t;++e)g(I[e]);else Cg=0|!!I}return g},dg.set=og,void 0!==I&&og(I),dg}(null)},function(g,I,e){"use strict";g.exports=e(1190)},function(g,I,e){"use strict";function t(g,I){if(g.length!==I.length)return!1;for(var e=0;e<g.length;e++)if(g[e]!==I[e])return!1;return!0}I.a=function(g,I){var e;void 0===I&&(I=t);var C,Q=[],F=!1;return function(){for(var t=[],B=0;B<arguments.length;B++)t[B]=arguments[B];return F&&e===this&&I(t,Q)||(C=g.apply(this,t),F=!0,e=this,Q=t),C}}},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"}),"Add");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M20 4H4c-1.11 0-1.99.89-1.99 2L2 18c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V6c0-1.11-.89-2-2-2zm0 14H4v-6h16v6zm0-10H4V6h16v2z"}),"Payment");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z"}),"Cancel");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"}),"AddOutlined");I.default=Q},,function(g,I,e){"use strict";var t=e(443),C=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|inert|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,Q=Object(t.a)((function(g){return C.test(g)||111===g.charCodeAt(0)&&110===g.charCodeAt(1)&&g.charCodeAt(2)<91}));I.a=Q},function(g,I){var e=/^\s+|\s+$/g,t=/^[-+]0x[0-9a-f]+$/i,C=/^0b[01]+$/i,Q=/^0o[0-7]+$/i,F=parseInt,B=Object.prototype.toString;function n(g,I){var n;if("function"!=typeof I)throw new TypeError("Expected a function");return g=function(g){var I=function(g){if(!g)return 0===g?g:0;if((g=function(g){if("number"==typeof g)return g;if(function(g){return"symbol"==typeof g||function(g){return!!g&&"object"==typeof g}(g)&&"[object Symbol]"==B.call(g)}(g))return NaN;if(U(g)){var I="function"==typeof g.valueOf?g.valueOf():g;g=U(I)?I+"":I}if("string"!=typeof g)return 0===g?g:+g;g=g.replace(e,"");var n=C.test(g);return n||Q.test(g)?F(g.slice(2),n?2:8):t.test(g)?NaN:+g}(g))===1/0||g===-1/0){return 17976931348623157e292*(g<0?-1:1)}return g===g?g:0}(g),n=I%1;return I===I?n?I-n:I:0}(g),function(){return--g>0&&(n=I.apply(this,arguments)),g<=1&&(I=void 0),n}}function U(g){var I=typeof g;return!!g&&("object"==I||"function"==I)}g.exports=function(g){return n(2,g)}},function(g){g.exports=JSON.parse('{"version":"1.7.45","country_calling_codes":{"1":["US","AG","AI","AS","BB","BM","BS","CA","DM","DO","GD","GU","JM","KN","KY","LC","MP","MS","PR","SX","TC","TT","VC","VG","VI"],"7":["RU","KZ"],"20":["EG"],"27":["ZA"],"30":["GR"],"31":["NL"],"32":["BE"],"33":["FR"],"34":["ES"],"36":["HU"],"39":["IT","VA"],"40":["RO"],"41":["CH"],"43":["AT"],"44":["GB","GG","IM","JE"],"45":["DK"],"46":["SE"],"47":["NO","SJ"],"48":["PL"],"49":["DE"],"51":["PE"],"52":["MX"],"53":["CU"],"54":["AR"],"55":["BR"],"56":["CL"],"57":["CO"],"58":["VE"],"60":["MY"],"61":["AU","CC","CX"],"62":["ID"],"63":["PH"],"64":["NZ"],"65":["SG"],"66":["TH"],"81":["JP"],"82":["KR"],"84":["VN"],"86":["CN"],"90":["TR"],"91":["IN"],"92":["PK"],"93":["AF"],"94":["LK"],"95":["MM"],"98":["IR"],"211":["SS"],"212":["MA","EH"],"213":["DZ"],"216":["TN"],"218":["LY"],"220":["GM"],"221":["SN"],"222":["MR"],"223":["ML"],"224":["GN"],"225":["CI"],"226":["BF"],"227":["NE"],"228":["TG"],"229":["BJ"],"230":["MU"],"231":["LR"],"232":["SL"],"233":["GH"],"234":["NG"],"235":["TD"],"236":["CF"],"237":["CM"],"238":["CV"],"239":["ST"],"240":["GQ"],"241":["GA"],"242":["CG"],"243":["CD"],"244":["AO"],"245":["GW"],"246":["IO"],"247":["AC"],"248":["SC"],"249":["SD"],"250":["RW"],"251":["ET"],"252":["SO"],"253":["DJ"],"254":["KE"],"255":["TZ"],"256":["UG"],"257":["BI"],"258":["MZ"],"260":["ZM"],"261":["MG"],"262":["RE","YT"],"263":["ZW"],"264":["NA"],"265":["MW"],"266":["LS"],"267":["BW"],"268":["SZ"],"269":["KM"],"290":["SH","TA"],"291":["ER"],"297":["AW"],"298":["FO"],"299":["GL"],"350":["GI"],"351":["PT"],"352":["LU"],"353":["IE"],"354":["IS"],"355":["AL"],"356":["MT"],"357":["CY"],"358":["FI","AX"],"359":["BG"],"370":["LT"],"371":["LV"],"372":["EE"],"373":["MD"],"374":["AM"],"375":["BY"],"376":["AD"],"377":["MC"],"378":["SM"],"380":["UA"],"381":["RS"],"382":["ME"],"383":["XK"],"385":["HR"],"386":["SI"],"387":["BA"],"389":["MK"],"420":["CZ"],"421":["SK"],"423":["LI"],"500":["FK"],"501":["BZ"],"502":["GT"],"503":["SV"],"504":["HN"],"505":["NI"],"506":["CR"],"507":["PA"],"508":["PM"],"509":["HT"],"590":["GP","BL","MF"],"591":["BO"],"592":["GY"],"593":["EC"],"594":["GF"],"595":["PY"],"596":["MQ"],"597":["SR"],"598":["UY"],"599":["CW","BQ"],"670":["TL"],"672":["NF"],"673":["BN"],"674":["NR"],"675":["PG"],"676":["TO"],"677":["SB"],"678":["VU"],"679":["FJ"],"680":["PW"],"681":["WF"],"682":["CK"],"683":["NU"],"685":["WS"],"686":["KI"],"687":["NC"],"688":["TV"],"689":["PF"],"690":["TK"],"691":["FM"],"692":["MH"],"850":["KP"],"852":["HK"],"853":["MO"],"855":["KH"],"856":["LA"],"880":["BD"],"886":["TW"],"960":["MV"],"961":["LB"],"962":["JO"],"963":["SY"],"964":["IQ"],"965":["KW"],"966":["SA"],"967":["YE"],"968":["OM"],"970":["PS"],"971":["AE"],"972":["IL"],"973":["BH"],"974":["QA"],"975":["BT"],"976":["MN"],"977":["NP"],"992":["TJ"],"993":["TM"],"994":["AZ"],"995":["GE"],"996":["KG"],"998":["UZ"]},"countries":{"AC":["247","00","(?:[01589]\\\\d|[46])\\\\d{4}",[5,6]],"AD":["376","00","(?:1|6\\\\d)\\\\d{7}|[135-9]\\\\d{5}",[6,8,9],[["(\\\\d{3})(\\\\d{3})","$1 $2",["[135-9]"]],["(\\\\d{4})(\\\\d{4})","$1 $2",["1"]],["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["6"]]]],"AE":["971","00","(?:[4-7]\\\\d|9[0-689])\\\\d{7}|800\\\\d{2,9}|[2-4679]\\\\d{7}",[5,6,7,8,9,10,11,12],[["(\\\\d{3})(\\\\d{2,9})","$1 $2",["60|8"]],["(\\\\d)(\\\\d{3})(\\\\d{4})","$1 $2 $3",["[236]|[479][2-8]"],"0$1"],["(\\\\d{3})(\\\\d)(\\\\d{5})","$1 $2 $3",["[479]"]],["(\\\\d{2})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["5"],"0$1"]],"0"],"AF":["93","00","[2-7]\\\\d{8}",[9],[["(\\\\d{2})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["[2-7]"],"0$1"]],"0"],"AG":["1","011","(?:268|[58]\\\\d\\\\d|900)\\\\d{7}",[10],0,"1",0,"1|([457]\\\\d{6})$","268$1",0,"268"],"AI":["1","011","(?:264|[58]\\\\d\\\\d|900)\\\\d{7}",[10],0,"1",0,"1|([2457]\\\\d{6})$","264$1",0,"264"],"AL":["355","00","(?:700\\\\d\\\\d|900)\\\\d{3}|8\\\\d{5,7}|(?:[2-5]|6\\\\d)\\\\d{7}",[6,7,8,9],[["(\\\\d{3})(\\\\d{3,4})","$1 $2",["80|9"],"0$1"],["(\\\\d)(\\\\d{3})(\\\\d{4})","$1 $2 $3",["4[2-6]"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["[2358][2-5]|4"],"0$1"],["(\\\\d{3})(\\\\d{5})","$1 $2",["[23578]"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["6"],"0$1"]],"0"],"AM":["374","00","(?:[1-489]\\\\d|55|60|77)\\\\d{6}",[8],[["(\\\\d{3})(\\\\d{2})(\\\\d{3})","$1 $2 $3",["[89]0"],"0 $1"],["(\\\\d{3})(\\\\d{5})","$1 $2",["2|3[12]"],"(0$1)"],["(\\\\d{2})(\\\\d{6})","$1 $2",["1|47"],"(0$1)"],["(\\\\d{2})(\\\\d{6})","$1 $2",["[3-9]"],"0$1"]],"0"],"AO":["244","00","[29]\\\\d{8}",[9],[["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["[29]"]]]],"AR":["54","00","11\\\\d{8}|(?:[2368]|9\\\\d)\\\\d{9}",[10,11],[["(\\\\d{4})(\\\\d{2})(\\\\d{4})","$1 $2-$3",["2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])","2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)","2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]","2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]"],"0$1",1],["(\\\\d{2})(\\\\d{4})(\\\\d{4})","$1 $2-$3",["1"],"0$1",1],["(\\\\d{3})(\\\\d{3})(\\\\d{4})","$1-$2-$3",["[68]"],"0$1"],["(\\\\d{3})(\\\\d{3})(\\\\d{4})","$1 $2-$3",["[23]"],"0$1",1],["(\\\\d)(\\\\d{4})(\\\\d{2})(\\\\d{4})","$2 15-$3-$4",["9(?:2[2-469]|3[3-578])","9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))","9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)","9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]","9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]"],"0$1",0,"$1 $2 $3-$4"],["(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})","$2 15-$3-$4",["91"],"0$1",0,"$1 $2 $3-$4"],["(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{4})","$2 15-$3-$4",["9"],"0$1",0,"$1 $2 $3-$4"]],"0",0,"0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))15)?","9$1"],"AS":["1","011","(?:[58]\\\\d\\\\d|684|900)\\\\d{7}",[10],0,"1",0,"1|([267]\\\\d{6})$","684$1",0,"684"],"AT":["43","00","1\\\\d{3,12}|2\\\\d{6,12}|43(?:(?:0\\\\d|5[02-9])\\\\d{3,9}|2\\\\d{4,5}|[3467]\\\\d{4}|8\\\\d{4,6}|9\\\\d{4,7})|5\\\\d{4,12}|8\\\\d{7,12}|9\\\\d{8,12}|(?:[367]\\\\d|4[0-24-9])\\\\d{4,11}",[4,5,6,7,8,9,10,11,12,13],[["(\\\\d)(\\\\d{3,12})","$1 $2",["1(?:11|[2-9])"],"0$1"],["(\\\\d{3})(\\\\d{2})","$1 $2",["517"],"0$1"],["(\\\\d{2})(\\\\d{3,5})","$1 $2",["5[079]"],"0$1"],["(\\\\d{3})(\\\\d{3,10})","$1 $2",["(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:20|32|8)|[89]"],"0$1"],["(\\\\d{4})(\\\\d{3,9})","$1 $2",["[2-467]|5[2-6]"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{3,4})","$1 $2 $3",["5"],"0$1"],["(\\\\d{2})(\\\\d{4})(\\\\d{4,7})","$1 $2 $3",["5"],"0$1"]],"0"],"AU":["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\\\d{7,8}|8[0-24-9]\\\\d{7})|(?:[2-478]\\\\d\\\\d|550)\\\\d{6}|1\\\\d{4,7}",[5,6,7,8,9,10],[["(\\\\d{2})(\\\\d{3,4})","$1 $2",["16"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{2,4})","$1 $2 $3",["16"],"0$1"],["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["14|[45]"],"0$1"],["(\\\\d)(\\\\d{4})(\\\\d{4})","$1 $2 $3",["[2378]"],"(0$1)"],["(\\\\d{4})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["1(?:30|[89])"]]],"0",0,"0|(183[12])",0,0,0,[["(?:[237]\\\\d{5}|8(?:51(?:0(?:0[03-9]|[1247]\\\\d|3[2-9]|5[0-8]|6[1-9]|8[0-6])|1(?:1[69]|[23]\\\\d|4[0-4]))|(?:[6-8]\\\\d{3}|9(?:[02-9]\\\\d\\\\d|1(?:[0-57-9]\\\\d|6[0135-9])))\\\\d))\\\\d{3}",[9]],["483[0-3]\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[06-9]|7[02-9]|8[0-2457-9]|9[0-27-9])\\\\d{6}",[9]],["180(?:0\\\\d{3}|2)\\\\d{3}",[7,10]],["190[0-26]\\\\d{6}",[10]],0,0,0,["16\\\\d{3,7}",[5,6,7,8,9]],["(?:14(?:5(?:1[0458]|[23][458])|71\\\\d)|550\\\\d\\\\d)\\\\d{4}",[9]],["13(?:00\\\\d{3}|45[0-4])\\\\d{3}|13\\\\d{4}",[6,8,10]]],"0011"],"AW":["297","00","(?:[25-79]\\\\d\\\\d|800)\\\\d{4}",[7],[["(\\\\d{3})(\\\\d{4})","$1 $2",["[25-9]"]]]],"AX":["358","00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))","2\\\\d{4,9}|35\\\\d{4,5}|(?:60\\\\d\\\\d|800)\\\\d{4,6}|7\\\\d{5,11}|(?:[14]\\\\d|3[0-46-9]|50)\\\\d{4,8}",[5,6,7,8,9,10,11,12],0,"0",0,0,0,0,"18",0,"00"],"AZ":["994","00","365\\\\d{6}|(?:[124579]\\\\d|60|88)\\\\d{7}",[9],[["(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["90"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["1[28]|2|365|46","1[28]|2|365|46","1[28]|2|365(?:[0-46-9]|5[0-35-9])|46"],"(0$1)"],["(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["[13-9]"],"0$1"]],"0"],"BA":["387","00","6\\\\d{8}|(?:[35689]\\\\d|49|70)\\\\d{6}",[8,9],[["(\\\\d{2})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["6[1-3]|[7-9]"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{3})","$1 $2-$3",["[3-5]|6[56]"],"0$1"],["(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})","$1 $2 $3 $4",["6"],"0$1"]],"0"],"BB":["1","011","(?:246|[58]\\\\d\\\\d|900)\\\\d{7}",[10],0,"1",0,"1|([2-9]\\\\d{6})$","246$1",0,"246"],"BD":["880","00","[13469]\\\\d{9}|8[0-79]\\\\d{7,8}|[2-7]\\\\d{8}|[2-9]\\\\d{7}|[3-689]\\\\d{6}|[57-9]\\\\d{5}",[6,7,8,9,10],[["(\\\\d{2})(\\\\d{4,6})","$1-$2",["31[5-7]|[459]1"],"0$1"],["(\\\\d{3})(\\\\d{3,7})","$1-$2",["3(?:[67]|8[013-9])|4(?:6[168]|7|[89][18])|5(?:6[128]|9)|6(?:28|4[14]|5)|7[2-589]|8(?:0[014-9]|[12])|9[358]|(?:3[2-5]|4[235]|5[2-578]|6[0389]|76|8[3-7]|9[24])1|(?:44|66)[01346-9]"],"0$1"],["(\\\\d{4})(\\\\d{3,6})","$1-$2",["[13-9]"],"0$1"],["(\\\\d)(\\\\d{7,8})","$1-$2",["2"],"0$1"]],"0"],"BE":["32","00","4\\\\d{8}|[1-9]\\\\d{7}",[8,9],[["(\\\\d{3})(\\\\d{2})(\\\\d{3})","$1 $2 $3",["(?:80|9)0"],"0$1"],["(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["[239]|4[23]"],"0$1"],["(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["[15-8]"],"0$1"],["(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["4"],"0$1"]],"0"],"BF":["226","00","[025-7]\\\\d{7}",[8],[["(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["[025-7]"]]]],"BG":["359","00","[2-7]\\\\d{6,7}|[89]\\\\d{6,8}|2\\\\d{5}",[6,7,8,9],[["(\\\\d)(\\\\d)(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["2"],"0$1"],["(\\\\d{3})(\\\\d{4})","$1 $2",["43[1-6]|70[1-9]"],"0$1"],["(\\\\d)(\\\\d{3})(\\\\d{3,4})","$1 $2 $3",["2"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{2,3})","$1 $2 $3",["[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]"],"0$1"],["(\\\\d{3})(\\\\d{2})(\\\\d{3})","$1 $2 $3",["(?:70|8)0"],"0$1"],["(\\\\d{3})(\\\\d{3})(\\\\d{2})","$1 $2 $3",["43[1-7]|7"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{3,4})","$1 $2 $3",["[48]|9[08]"],"0$1"],["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["9"],"0$1"]],"0"],"BH":["973","00","[136-9]\\\\d{7}",[8],[["(\\\\d{4})(\\\\d{4})","$1 $2",["[13679]|8[047]"]]]],"BI":["257","00","(?:[267]\\\\d|31)\\\\d{6}",[8],[["(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["[2367]"]]]],"BJ":["229","00","(?:[2689]\\\\d|51)\\\\d{6}",[8],[["(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["[25689]"]]]],"BL":["590","00","(?:590|69\\\\d|976)\\\\d{6}",[9],0,"0",0,0,0,0,0,[["590(?:2[7-9]|5[12]|87)\\\\d{4}"],["69(?:0\\\\d\\\\d|1(?:2[29]|3[0-5]))\\\\d{4}"],0,0,0,0,0,0,["976[01]\\\\d{5}"]]],"BM":["1","011","(?:441|[58]\\\\d\\\\d|900)\\\\d{7}",[10],0,"1",0,"1|([2-8]\\\\d{6})$","441$1",0,"441"],"BN":["673","00","[2-578]\\\\d{6}",[7],[["(\\\\d{3})(\\\\d{4})","$1 $2",["[2-578]"]]]],"BO":["591","00(?:1\\\\d)?","(?:[2-467]\\\\d\\\\d|8001)\\\\d{5}",[8,9],[["(\\\\d)(\\\\d{7})","$1 $2",["[23]|4[46]"]],["(\\\\d{8})","$1",["[67]"]],["(\\\\d{3})(\\\\d{2})(\\\\d{4})","$1 $2 $3",["8"]]],"0",0,"0(1\\\\d)?"],"BQ":["599","00","(?:[34]1|7\\\\d)\\\\d{5}",[7],0,0,0,0,0,0,"[347]"],"BR":["55","00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)","(?:[1-46-9]\\\\d\\\\d|5(?:[0-46-9]\\\\d|5[0-24679]))\\\\d{8}|[1-9]\\\\d{9}|[3589]\\\\d{8}|[34]\\\\d{7}",[8,9,10,11],[["(\\\\d{4})(\\\\d{4})","$1-$2",["300|4(?:0[02]|37)","4(?:02|37)0|[34]00"]],["(\\\\d{3})(\\\\d{2,3})(\\\\d{4})","$1 $2 $3",["(?:[358]|90)0"],"0$1"],["(\\\\d{2})(\\\\d{4})(\\\\d{4})","$1 $2-$3",["(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]"],"($1)"],["(\\\\d{2})(\\\\d{5})(\\\\d{4})","$1 $2-$3",["[16][1-9]|[2-57-9]"],"($1)"]],"0",0,"0(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\\\d{10,11}))?","$2"],"BS":["1","011","(?:242|[58]\\\\d\\\\d|900)\\\\d{7}",[10],0,"1",0,"1|([3-8]\\\\d{6})$","242$1",0,"242"],"BT":["975","00","[17]\\\\d{7}|[2-8]\\\\d{6}",[7,8],[["(\\\\d)(\\\\d{3})(\\\\d{3})","$1 $2 $3",["[2-68]|7[246]"]],["(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["1[67]|7"]]]],"BW":["267","00","90\\\\d{5}|(?:[2-6]|7\\\\d)\\\\d{6}",[7,8],[["(\\\\d{2})(\\\\d{5})","$1 $2",["90"]],["(\\\\d{3})(\\\\d{4})","$1 $2",["[2-6]"]],["(\\\\d{2})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["7"]]]],"BY":["375","810","(?:[12]\\\\d|33|44|902)\\\\d{7}|8(?:0[0-79]\\\\d{5,7}|[1-7]\\\\d{9})|8(?:1[0-489]|[5-79]\\\\d)\\\\d{7}|8[1-79]\\\\d{6,7}|8[0-79]\\\\d{5}|8\\\\d{5}",[6,7,8,9,10,11],[["(\\\\d{3})(\\\\d{3})","$1 $2",["800"],"8 $1"],["(\\\\d{3})(\\\\d{2})(\\\\d{2,4})","$1 $2 $3",["800"],"8 $1"],["(\\\\d{4})(\\\\d{2})(\\\\d{3})","$1 $2-$3",["1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])","1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])"],"8 0$1"],["(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2-$3-$4",["1(?:[56]|7[467])|2[1-3]"],"8 0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})","$1 $2-$3-$4",["[1-4]"],"8 0$1"],["(\\\\d{3})(\\\\d{3,4})(\\\\d{4})","$1 $2 $3",["[89]"],"8 $1"]],"8",0,"0|80?",0,0,0,0,"8~10"],"BZ":["501","00","(?:0800\\\\d|[2-8])\\\\d{6}",[7,11],[["(\\\\d{3})(\\\\d{4})","$1-$2",["[2-8]"]],["(\\\\d)(\\\\d{3})(\\\\d{4})(\\\\d{3})","$1-$2-$3-$4",["0"]]]],"CA":["1","011","(?:[2-8]\\\\d|90)\\\\d{8}",[10],0,"1",0,0,0,0,0,[["(?:2(?:04|[23]6|[48]9|50)|3(?:06|43|6[57])|4(?:03|1[68]|3[178]|50)|5(?:06|1[49]|48|79|8[17])|6(?:04|13|39|47|72)|7(?:0[59]|78|8[02])|8(?:[06]7|19|25|73)|90[25])[2-9]\\\\d{6}"],[""],["8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}"],["900[2-9]\\\\d{6}"],["(?:5(?:00|2[12]|33|44|66|77|88)|622)[2-9]\\\\d{6}"],0,0,0,["600[2-9]\\\\d{6}"]]],"CC":["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\\\d|8[0-24-9])\\\\d{7}|(?:[148]\\\\d\\\\d|550)\\\\d{6}|1\\\\d{5,7}",[6,7,8,9,10],0,"0",0,"0|([59]\\\\d{7})$","8$1",0,0,[["8(?:51(?:0(?:02|31|60)|118)|91(?:0(?:1[0-2]|29)|1(?:[28]2|50|79)|2(?:10|64)|3(?:[06]8|22)|4[29]8|62\\\\d|70[23]|959))\\\\d{3}",[9]],["483[0-3]\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[06-9]|7[02-9]|8[0-2457-9]|9[0-27-9])\\\\d{6}",[9]],["180(?:0\\\\d{3}|2)\\\\d{3}",[7,10]],["190[0-26]\\\\d{6}",[10]],0,0,0,0,["(?:14(?:5(?:1[0458]|[23][458])|71\\\\d)|550\\\\d\\\\d)\\\\d{4}",[9]],["13(?:00\\\\d{3}|45[0-4])\\\\d{3}|13\\\\d{4}",[6,8,10]]],"0011"],"CD":["243","00","[189]\\\\d{8}|[1-68]\\\\d{6}",[7,9],[["(\\\\d{2})(\\\\d{2})(\\\\d{3})","$1 $2 $3",["88"],"0$1"],["(\\\\d{2})(\\\\d{5})","$1 $2",["[1-6]"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["[89]"],"0$1"]],"0"],"CF":["236","00","(?:[27]\\\\d{3}|8776)\\\\d{4}",[8],[["(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["[278]"]]]],"CG":["242","00","222\\\\d{6}|(?:0\\\\d|80)\\\\d{7}",[9],[["(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["801"]],["(\\\\d)(\\\\d{4})(\\\\d{4})","$1 $2 $3",["8"]],["(\\\\d{2})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["[02]"]]]],"CH":["41","00","8\\\\d{11}|[2-9]\\\\d{8}",[9],[["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["8[047]|90"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["[2-79]|81"],"0$1"],["(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4 $5",["8"],"0$1"]],"0"],"CI":["225","00","[02-9]\\\\d{7}",[8],[["(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["[02-9]"]]]],"CK":["682","00","[2-578]\\\\d{4}",[5],[["(\\\\d{2})(\\\\d{3})","$1 $2",["[2-578]"]]]],"CL":["56","(?:0|1(?:1[0-69]|2[0-57]|5[13-58]|69|7[0167]|8[018]))0","12300\\\\d{6}|6\\\\d{9,10}|[2-9]\\\\d{8}",[9,10,11],[["(\\\\d{5})(\\\\d{4})","$1 $2",["21"],"($1)"],["(\\\\d{2})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["44"]],["(\\\\d)(\\\\d{4})(\\\\d{4})","$1 $2 $3",["2[23]"],"($1)"],["(\\\\d)(\\\\d{4})(\\\\d{4})","$1 $2 $3",["9[2-9]"]],["(\\\\d{2})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-9]|[1-9])"],"($1)"],["(\\\\d{3})(\\\\d{3})(\\\\d{3,4})","$1 $2 $3",["60|8"]],["(\\\\d{4})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["1"]],["(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{3})","$1 $2 $3 $4",["60"]]]],"CM":["237","00","(?:[26]\\\\d\\\\d|88)\\\\d{6}",[8,9],[["(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["88"]],["(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4 $5",["[26]"]]]],"CN":["86","00|1(?:[12]\\\\d|79|9[0235-7])\\\\d\\\\d00","1[1279]\\\\d{8,9}|2\\\\d{9}(?:\\\\d{2})?|[12]\\\\d{6,7}|86\\\\d{6}|(?:1[03-68]\\\\d|6)\\\\d{7,9}|(?:[3-579]\\\\d|8[0-57-9])\\\\d{6,9}",[7,8,9,10,11,12],[["(\\\\d{2})(\\\\d{5,6})","$1 $2",["(?:10|2[0-57-9])[19]","(?:10|2[0-57-9])(?:10|9[56])","(?:10|2[0-57-9])(?:100|9[56])"],"0$1"],["(\\\\d{3})(\\\\d{5,6})","$1 $2",["3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]","(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))[19]","85[23](?:10|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:10|9[56])","85[23](?:100|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:100|9[56])"],"0$1"],["(\\\\d{3})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["(?:4|80)0"]],["(\\\\d{2})(\\\\d{4})(\\\\d{4})","$1 $2 $3",["10|2(?:[02-57-9]|1[1-9])","10|2(?:[02-57-9]|1[1-9])","10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])"],"0$1",1],["(\\\\d{3})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]"],"0$1",1],["(\\\\d{3})(\\\\d{7,8})","$1 $2",["9"]],["(\\\\d{4})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["80"],"0$1",1],["(\\\\d{3})(\\\\d{4})(\\\\d{4})","$1 $2 $3",["[3-578]"],"0$1",1],["(\\\\d{3})(\\\\d{4})(\\\\d{4})","$1 $2 $3",["1[3-9]"]],["(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{4})","$1 $2 $3 $4",["[12]"],"0$1",1]],"0",0,"0|(1(?:[12]\\\\d|79|9[0235-7])\\\\d\\\\d)",0,0,0,0,"00"],"CO":["57","00(?:4(?:[14]4|56)|[579])","(?:1\\\\d|3)\\\\d{9}|[124-8]\\\\d{7}",[8,10,11],[["(\\\\d)(\\\\d{7})","$1 $2",["[14][2-9]|[25-8]"],"($1)"],["(\\\\d{3})(\\\\d{7})","$1 $2",["3"]],["(\\\\d)(\\\\d{3})(\\\\d{7})","$1-$2-$3",["1"],"0$1",0,"$1 $2 $3"]],"0",0,"0([3579]|4(?:[14]4|56))?"],"CR":["506","00","(?:8\\\\d|90)\\\\d{8}|(?:[24-8]\\\\d{3}|3005)\\\\d{4}",[8,10],[["(\\\\d{4})(\\\\d{4})","$1 $2",["[2-7]|8[3-9]"]],["(\\\\d{3})(\\\\d{3})(\\\\d{4})","$1-$2-$3",["[89]"]]],0,0,"(19(?:0[0-2468]|1[09]|20|66|77|99))"],"CU":["53","119","[27]\\\\d{6,7}|[34]\\\\d{5,7}|(?:5|8\\\\d\\\\d)\\\\d{7}",[6,7,8,10],[["(\\\\d{2})(\\\\d{4,6})","$1 $2",["2[1-4]|[34]"],"(0$1)"],["(\\\\d)(\\\\d{6,7})","$1 $2",["7"],"(0$1)"],["(\\\\d)(\\\\d{7})","$1 $2",["5"],"0$1"],["(\\\\d{3})(\\\\d{7})","$1 $2",["8"],"0$1"]],"0"],"CV":["238","0","(?:[2-59]\\\\d\\\\d|800)\\\\d{4}",[7],[["(\\\\d{3})(\\\\d{2})(\\\\d{2})","$1 $2 $3",["[2-589]"]]]],"CW":["599","00","(?:[34]1|60|(?:7|9\\\\d)\\\\d)\\\\d{5}",[7,8],[["(\\\\d{3})(\\\\d{4})","$1 $2",["[3467]"]],["(\\\\d)(\\\\d{3})(\\\\d{4})","$1 $2 $3",["9[4-8]"]]],0,0,0,0,0,"[69]"],"CX":["61","001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011","1(?:[0-79]\\\\d|8[0-24-9])\\\\d{7}|(?:[148]\\\\d\\\\d|550)\\\\d{6}|1\\\\d{5,7}",[6,7,8,9,10],0,"0",0,"0|([59]\\\\d{7})$","8$1",0,0,[["8(?:51(?:0(?:01|30|59)|117)|91(?:00[6-9]|1(?:[28]1|49|78)|2(?:09|63)|3(?:12|26|75)|4(?:56|97)|64\\\\d|7(?:0[01]|1[0-2])|958))\\\\d{3}",[9]],["483[0-3]\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[06-9]|7[02-9]|8[0-2457-9]|9[0-27-9])\\\\d{6}",[9]],["180(?:0\\\\d{3}|2)\\\\d{3}",[7,10]],["190[0-26]\\\\d{6}",[10]],0,0,0,0,["(?:14(?:5(?:1[0458]|[23][458])|71\\\\d)|550\\\\d\\\\d)\\\\d{4}",[9]],["13(?:00\\\\d{3}|45[0-4])\\\\d{3}|13\\\\d{4}",[6,8,10]]],"0011"],"CY":["357","00","(?:[279]\\\\d|[58]0)\\\\d{6}",[8],[["(\\\\d{2})(\\\\d{6})","$1 $2",["[257-9]"]]]],"CZ":["420","00","(?:[2-578]\\\\d|60)\\\\d{7}|9\\\\d{8,11}",[9],[["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["[2-8]|9[015-7]"]],["(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3 $4",["9"]],["(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3 $4",["9"]]]],"DE":["49","00","[2579]\\\\d{5,14}|49(?:[05]\\\\d{10}|[46][1-8]\\\\d{4,9})|49(?:[0-25]\\\\d|3[1-689]|7[1-7])\\\\d{4,8}|49(?:[0-2579]\\\\d|[34][1-9]|6[0-8])\\\\d{3}|49\\\\d{3,4}|(?:1|[368]\\\\d|4[0-8])\\\\d{3,13}",[4,5,6,7,8,9,10,11,12,13,14,15],[["(\\\\d{2})(\\\\d{3,13})","$1 $2",["3[02]|40|[68]9"],"0$1"],["(\\\\d{3})(\\\\d{3,12})","$1 $2",["2(?:0[1-389]|1[124]|2[18]|3[14])|3(?:[35-9][15]|4[015])|906|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1","2(?:0[1-389]|12[0-8])|3(?:[35-9][15]|4[015])|906|2(?:[13][14]|2[18])|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1"],"0$1"],["(\\\\d{4})(\\\\d{2,11})","$1 $2",["[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]","[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|4[13578]|9[1346])|5(?:0[14]|2[1-3589]|6[1-4]|7[13468]|8[13568])|6(?:2[1-489]|3[124-6]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|6|7[1467]|8[136])|9(?:0[12479]|2[1358]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]|3[68]4[1347]|3(?:47|60)[1356]|3(?:3[46]|46|5[49])[1246]|3[4579]3[1357]"],"0$1"],["(\\\\d{3})(\\\\d{4})","$1 $2",["138"],"0$1"],["(\\\\d{5})(\\\\d{2,10})","$1 $2",["3"],"0$1"],["(\\\\d{3})(\\\\d{5,11})","$1 $2",["181"],"0$1"],["(\\\\d{3})(\\\\d)(\\\\d{4,10})","$1 $2 $3",["1(?:3|80)|9"],"0$1"],["(\\\\d{3})(\\\\d{7,8})","$1 $2",["1[67]"],"0$1"],["(\\\\d{3})(\\\\d{7,12})","$1 $2",["8"],"0$1"],["(\\\\d{5})(\\\\d{6})","$1 $2",["185","1850","18500"],"0$1"],["(\\\\d{3})(\\\\d{4})(\\\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\\\d{4})(\\\\d{7})","$1 $2",["18[68]"],"0$1"],["(\\\\d{5})(\\\\d{6})","$1 $2",["15[0568]"],"0$1"],["(\\\\d{4})(\\\\d{7})","$1 $2",["15[1279]"],"0$1"],["(\\\\d{3})(\\\\d{8})","$1 $2",["18"],"0$1"],["(\\\\d{3})(\\\\d{2})(\\\\d{7,8})","$1 $2 $3",["1(?:6[023]|7)"],"0$1"],["(\\\\d{4})(\\\\d{2})(\\\\d{7})","$1 $2 $3",["15[279]"],"0$1"],["(\\\\d{3})(\\\\d{2})(\\\\d{8})","$1 $2 $3",["15"],"0$1"]],"0"],"DJ":["253","00","(?:2\\\\d|77)\\\\d{6}",[8],[["(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["[27]"]]]],"DK":["45","00","[2-9]\\\\d{7}",[8],[["(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["[2-9]"]]]],"DM":["1","011","(?:[58]\\\\d\\\\d|767|900)\\\\d{7}",[10],0,"1",0,"1|([2-7]\\\\d{6})$","767$1",0,"767"],"DO":["1","011","(?:[58]\\\\d\\\\d|900)\\\\d{7}",[10],0,"1",0,0,0,0,"8[024]9"],"DZ":["213","00","(?:[1-4]|[5-79]\\\\d|80)\\\\d{7}",[8,9],[["(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["[1-4]"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["9"],"0$1"],["(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["[5-8]"],"0$1"]],"0"],"EC":["593","00","1\\\\d{9,10}|(?:[2-7]|9\\\\d)\\\\d{7}",[8,9,10,11],[["(\\\\d)(\\\\d{3})(\\\\d{4})","$1 $2-$3",["[2-7]"],"(0$1)",0,"$1-$2-$3"],["(\\\\d{2})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["9"],"0$1"],["(\\\\d{4})(\\\\d{3})(\\\\d{3,4})","$1 $2 $3",["1"]]],"0"],"EE":["372","00","8\\\\d{9}|[4578]\\\\d{7}|(?:[3-8]\\\\d|90)\\\\d{5}",[7,8,10],[["(\\\\d{3})(\\\\d{4})","$1 $2",["[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]|88","[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]|88"]],["(\\\\d{4})(\\\\d{3,4})","$1 $2",["[45]|8(?:00|[1-49])","[45]|8(?:00[1-9]|[1-49])"]],["(\\\\d{2})(\\\\d{2})(\\\\d{4})","$1 $2 $3",["7"]],["(\\\\d{4})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["8"]]]],"EG":["20","00","[189]\\\\d{8,9}|[24-6]\\\\d{8}|[135]\\\\d{7}",[8,9,10],[["(\\\\d)(\\\\d{7,8})","$1 $2",["[23]"],"0$1"],["(\\\\d{2})(\\\\d{6,7})","$1 $2",["1[35]|[4-6]|8[2468]|9[235-7]"],"0$1"],["(\\\\d{3})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["[189]"],"0$1"]],"0"],"EH":["212","00","[5-8]\\\\d{8}",[9],0,"0",0,0,0,0,"528[89]"],"ER":["291","00","[178]\\\\d{6}",[7],[["(\\\\d)(\\\\d{3})(\\\\d{3})","$1 $2 $3",["[178]"],"0$1"]],"0"],"ES":["34","00","(?:51|[6-9]\\\\d)\\\\d{7}",[9],[["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["[89]00"]],["(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["[5-9]"]]]],"ET":["251","00","(?:11|[2-59]\\\\d)\\\\d{7}",[9],[["(\\\\d{2})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["[1-59]"],"0$1"]],"0"],"FI":["358","00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))","[1-35689]\\\\d{4}|7\\\\d{10,11}|(?:[124-7]\\\\d|3[0-46-9])\\\\d{8}|[1-9]\\\\d{5,8}",[5,6,7,8,9,10,11,12],[["(\\\\d)(\\\\d{4,9})","$1 $2",["[2568][1-8]|3(?:0[1-9]|[1-9])|9"],"0$1"],["(\\\\d{3})(\\\\d{3,7})","$1 $2",["[12]00|[368]|70[07-9]"],"0$1"],["(\\\\d{2})(\\\\d{4,8})","$1 $2",["[1245]|7[135]"],"0$1"],["(\\\\d{2})(\\\\d{6,10})","$1 $2",["7"],"0$1"]],"0",0,0,0,0,"1[03-79]|[2-9]",0,"00"],"FJ":["679","0(?:0|52)","45\\\\d{5}|(?:0800\\\\d|[235-9])\\\\d{6}",[7,11],[["(\\\\d{3})(\\\\d{4})","$1 $2",["[235-9]|45"]],["(\\\\d{4})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["0"]]],0,0,0,0,0,0,0,"00"],"FK":["500","00","[2-7]\\\\d{4}",[5]],"FM":["691","00","(?:[39]\\\\d\\\\d|820)\\\\d{4}",[7],[["(\\\\d{3})(\\\\d{4})","$1 $2",["[389]"]]]],"FO":["298","00","(?:[2-8]\\\\d|90)\\\\d{4}",[6],[["(\\\\d{6})","$1",["[2-9]"]]],0,0,"(10(?:01|[12]0|88))"],"FR":["33","00","[1-9]\\\\d{8}",[9],[["(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["8"],"0 $1"],["(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4 $5",["[1-79]"],"0$1"]],"0"],"GA":["241","00","(?:[067]\\\\d|11)\\\\d{6}|[2-7]\\\\d{6}",[7,8],[["(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["[2-7]"],"0$1"],["(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["11|[67]"],"0$1"],["(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["0"]]],0,0,"0(11\\\\d{6}|6[256]\\\\d{6}|7[47]\\\\d{6})","$1"],"GB":["44","00","[1-357-9]\\\\d{9}|[18]\\\\d{8}|8\\\\d{6}",[7,9,10],[["(\\\\d{3})(\\\\d{4})","$1 $2",["800","8001","80011","800111","8001111"],"0$1"],["(\\\\d{3})(\\\\d{2})(\\\\d{2})","$1 $2 $3",["845","8454","84546","845464"],"0$1"],["(\\\\d{3})(\\\\d{6})","$1 $2",["800"],"0$1"],["(\\\\d{5})(\\\\d{4,5})","$1 $2",["1(?:38|5[23]|69|76|94)","1(?:(?:38|69)7|5(?:24|39)|768|946)","1(?:3873|5(?:242|39[4-6])|(?:697|768)[347]|9467)"],"0$1"],["(\\\\d{4})(\\\\d{5,6})","$1 $2",["1(?:[2-69][02-9]|[78])"],"0$1"],["(\\\\d{2})(\\\\d{4})(\\\\d{4})","$1 $2 $3",["[25]|7(?:0|6[02-9])","[25]|7(?:0|6(?:[03-9]|2[356]))"],"0$1"],["(\\\\d{4})(\\\\d{6})","$1 $2",["7"],"0$1"],["(\\\\d{3})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["[1389]"],"0$1"]],"0",0,0,0,0,0,[["(?:1(?:(?:1(?:3[0-58]|4[0-5]|5[0-26-9]|6[0-4]|[78][0-49])|3(?:0\\\\d|1[0-8]|[25][02-9]|3[02-579]|[468][0-46-9]|7[1-35-79]|9[2-578])|4(?:0[03-9]|[137]\\\\d|[28][02-57-9]|4[02-69]|5[0-8]|[69][0-79])|5(?:0[1-35-9]|[16]\\\\d|2[024-9]|3[015689]|4[02-9]|5[03-9]|7[0-35-9]|8[0-468]|9[0-57-9])|6(?:0[034689]|1\\\\d|2[0-35689]|[38][013-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|9[0-24578])|7(?:0[0246-9]|2\\\\d|3[0236-8]|4[03-9]|5[0-46-9]|6[013-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-57-9]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\\\\d|8[02-9]|9[02569])|9(?:0[02-589]|[18]\\\\d|2[02-689]|3[1-57-9]|4[2-9]|5[0-579]|6[2-47-9]|7[0-24578]|9[2-57]))\\\\d\\\\d|2(?:(?:0[024-9]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-47-9]|7[013-9]|9\\\\d)\\\\d\\\\d|1(?:[0-7]\\\\d\\\\d|80[04589])))|2(?:0[013478]|3[0189]|4[017]|8[0-46-9]|9[0-2])\\\\d{3})\\\\d{4}|1(?:2(?:0(?:46[1-4]|87[2-9])|545[1-79]|76(?:2\\\\d|3[1-8]|6[1-6])|9(?:7(?:2[0-4]|3[2-5])|8(?:2[2-8]|7[0-47-9]|8[3-5])))|3(?:6(?:38[2-5]|47[23])|8(?:47[04-9]|64[0157-9]))|4(?:044[1-7]|20(?:2[23]|8\\\\d)|6(?:0(?:30|5[2-57]|6[1-8]|7[2-8])|140)|8(?:052|87[1-3]))|5(?:2(?:4(?:3[2-79]|6\\\\d)|76\\\\d)|6(?:26[06-9]|686))|6(?:06(?:4\\\\d|7[4-79])|295[5-7]|35[34]\\\\d|47(?:24|61)|59(?:5[08]|6[67]|74)|9(?:55[0-4]|77[23]))|7(?:26(?:6[13-9]|7[0-7])|(?:442|688)\\\\d|50(?:2[0-3]|[3-68]2|76))|8(?:27[56]\\\\d|37(?:5[2-5]|8[239])|843[2-58])|9(?:0(?:0(?:6[1-8]|85)|52\\\\d)|3583|4(?:66[1-8]|9(?:2[01]|81))|63(?:23|3[1-4])|9561))\\\\d{3}",[9,10]],["7(?:457[0-57-9]|700[01]|911[028])\\\\d{5}|7(?:[1-3]\\\\d\\\\d|4(?:[0-46-9]\\\\d|5[0-689])|5(?:0[0-8]|[13-9]\\\\d|2[0-35-9])|7(?:0[1-9]|[1-7]\\\\d|8[02-9]|9[0-689])|8(?:[014-9]\\\\d|[23][0-8])|9(?:[024-9]\\\\d|1[02-9]|3[0-689]))\\\\d{6}",[10]],["80[08]\\\\d{7}|800\\\\d{6}|8001111"],["(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[2-49]))\\\\d{7}|845464\\\\d",[7,10]],["70\\\\d{8}",[10]],0,["(?:3[0347]|55)\\\\d{8}",[10]],["76(?:0[0-2]|2[356]|34|4[0134]|5[49]|6[0-369]|77|81|9[39])\\\\d{6}",[10]],["56\\\\d{8}",[10]]],0," x"],"GD":["1","011","(?:473|[58]\\\\d\\\\d|900)\\\\d{7}",[10],0,"1",0,"1|([2-9]\\\\d{6})$","473$1",0,"473"],"GE":["995","00","(?:[3-57]\\\\d\\\\d|800)\\\\d{6}",[9],[["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["70"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["32"],"0$1"],["(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["[57]"]],["(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["[348]"],"0$1"]],"0"],"GF":["594","00","(?:[56]94|976)\\\\d{6}",[9],[["(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"]],"0"],"GG":["44","00","(?:1481|[357-9]\\\\d{3})\\\\d{6}|8\\\\d{6}(?:\\\\d{2})?",[7,9,10],0,"0",0,"0|([25-9]\\\\d{5})$","1481$1",0,0,[["1481[25-9]\\\\d{5}",[10]],["7(?:(?:781|839)\\\\d|911[17])\\\\d{5}",[10]],["80[08]\\\\d{7}|800\\\\d{6}|8001111"],["(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[0-3]))\\\\d{7}|845464\\\\d",[7,10]],["70\\\\d{8}",[10]],0,["(?:3[0347]|55)\\\\d{8}",[10]],["76(?:0[0-2]|2[356]|34|4[0134]|5[49]|6[0-369]|77|81|9[39])\\\\d{6}",[10]],["56\\\\d{8}",[10]]]],"GH":["233","00","(?:[235]\\\\d{3}|800)\\\\d{5}",[8,9],[["(\\\\d{3})(\\\\d{5})","$1 $2",["8"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["[235]"],"0$1"]],"0"],"GI":["350","00","[256]\\\\d{7}",[8],[["(\\\\d{3})(\\\\d{5})","$1 $2",["2"]]]],"GL":["299","00","(?:19|[2-689]\\\\d)\\\\d{4}",[6],[["(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3",["19|[2-689]"]]]],"GM":["220","00","[2-9]\\\\d{6}",[7],[["(\\\\d{3})(\\\\d{4})","$1 $2",["[2-9]"]]]],"GN":["224","00","722\\\\d{6}|(?:3|6\\\\d)\\\\d{7}",[8,9],[["(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["3"]],["(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["[67]"]]]],"GP":["590","00","(?:590|69\\\\d|976)\\\\d{6}",[9],[["(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"]],"0",0,0,0,0,0,[["590(?:0[1-68]|1[0-2]|2[0-68]|3[1289]|4[0-24-9]|5[3-579]|6[0189]|7[08]|8[0-689]|9\\\\d)\\\\d{4}"],["69(?:0\\\\d\\\\d|1(?:2[29]|3[0-5]))\\\\d{4}"],0,0,0,0,0,0,["976[01]\\\\d{5}"]]],"GQ":["240","00","222\\\\d{6}|(?:3\\\\d|55|[89]0)\\\\d{7}",[9],[["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["[235]"]],["(\\\\d{3})(\\\\d{6})","$1 $2",["[89]"]]]],"GR":["30","00","5005000\\\\d{3}|(?:[2689]\\\\d|70)\\\\d{8}",[10],[["(\\\\d{2})(\\\\d{4})(\\\\d{4})","$1 $2 $3",["21|7"]],["(\\\\d{4})(\\\\d{6})","$1 $2",["2(?:2|3[2-57-9]|4[2-469]|5[2-59]|6[2-9]|7[2-69]|8[2-49])|5"]],["(\\\\d{3})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["[2689]"]]]],"GT":["502","00","(?:1\\\\d{3}|[2-7])\\\\d{7}",[8,11],[["(\\\\d{4})(\\\\d{4})","$1 $2",["[2-7]"]],["(\\\\d{4})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["1"]]]],"GU":["1","011","(?:[58]\\\\d\\\\d|671|900)\\\\d{7}",[10],0,"1",0,"1|([3-9]\\\\d{6})$","671$1",0,"671"],"GW":["245","00","[49]\\\\d{8}|4\\\\d{6}",[7,9],[["(\\\\d{3})(\\\\d{4})","$1 $2",["40"]],["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["[49]"]]]],"GY":["592","001","(?:862\\\\d|9008)\\\\d{3}|(?:[2-46]\\\\d|77)\\\\d{5}",[7],[["(\\\\d{3})(\\\\d{4})","$1 $2",["[2-46-9]"]]]],"HK":["852","00(?:30|5[09]|[126-9]?)","8[0-46-9]\\\\d{6,7}|9\\\\d{4}(?:\\\\d(?:\\\\d(?:\\\\d{4})?)?)?|(?:[235-79]\\\\d|46)\\\\d{6}",[5,6,7,8,9,11],[["(\\\\d{3})(\\\\d{2,5})","$1 $2",["900","9003"]],["(\\\\d{4})(\\\\d{4})","$1 $2",["[2-7]|8[1-4]|9(?:0[1-9]|[1-8])"]],["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["8"]],["(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{3})","$1 $2 $3 $4",["9"]]],0,0,0,0,0,0,0,"00"],"HN":["504","00","8\\\\d{10}|[237-9]\\\\d{7}",[8,11],[["(\\\\d{4})(\\\\d{4})","$1-$2",["[237-9]"]]]],"HR":["385","00","(?:[24-69]\\\\d|3[0-79])\\\\d{7}|80\\\\d{5,7}|[1-79]\\\\d{7}|6\\\\d{5,6}",[6,7,8,9],[["(\\\\d{2})(\\\\d{2})(\\\\d{2,3})","$1 $2 $3",["6[01]"],"0$1"],["(\\\\d{3})(\\\\d{2})(\\\\d{2,3})","$1 $2 $3",["8"],"0$1"],["(\\\\d)(\\\\d{4})(\\\\d{3})","$1 $2 $3",["1"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{3,4})","$1 $2 $3",["[67]"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{3,4})","$1 $2 $3",["9"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{3,4})","$1 $2 $3",["[2-5]"],"0$1"],["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["8"],"0$1"]],"0"],"HT":["509","00","[2-489]\\\\d{7}",[8],[["(\\\\d{2})(\\\\d{2})(\\\\d{4})","$1 $2 $3",["[2-489]"]]]],"HU":["36","00","[2357]\\\\d{8}|[1-9]\\\\d{7}",[8,9],[["(\\\\d)(\\\\d{3})(\\\\d{4})","$1 $2 $3",["1"],"(06 $1)"],["(\\\\d{2})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6|8[2-57-9]|9[2-69]"],"(06 $1)"],["(\\\\d{2})(\\\\d{3})(\\\\d{3,4})","$1 $2 $3",["[2-57-9]"],"06 $1"]],"06"],"ID":["62","00[189]","(?:(?:007803|8\\\\d{4})\\\\d|[1-36])\\\\d{6}|[1-9]\\\\d{8,10}|[2-9]\\\\d{7}",[7,8,9,10,11,12,13],[["(\\\\d)(\\\\d{3})(\\\\d{3})","$1 $2 $3",["15"]],["(\\\\d{2})(\\\\d{5,9})","$1 $2",["2[124]|[36]1"],"(0$1)"],["(\\\\d{3})(\\\\d{5,7})","$1 $2",["800"],"0$1"],["(\\\\d{3})(\\\\d{5,8})","$1 $2",["[2-79]"],"(0$1)"],["(\\\\d{3})(\\\\d{3,4})(\\\\d{3})","$1-$2-$3",["8[1-35-9]"],"0$1"],["(\\\\d{3})(\\\\d{6,8})","$1 $2",["1"],"0$1"],["(\\\\d{3})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["804"],"0$1"],["(\\\\d{3})(\\\\d)(\\\\d{3})(\\\\d{3})","$1 $2 $3 $4",["80"],"0$1"],["(\\\\d{3})(\\\\d{4})(\\\\d{4,5})","$1-$2-$3",["8"],"0$1"]],"0"],"IE":["353","00","(?:1\\\\d|[2569])\\\\d{6,8}|4\\\\d{6,9}|7\\\\d{8}|8\\\\d{8,9}",[7,8,9,10],[["(\\\\d{2})(\\\\d{5})","$1 $2",["2[24-9]|47|58|6[237-9]|9[35-9]"],"(0$1)"],["(\\\\d{3})(\\\\d{5})","$1 $2",["[45]0"],"(0$1)"],["(\\\\d)(\\\\d{3,4})(\\\\d{4})","$1 $2 $3",["1"],"(0$1)"],["(\\\\d{2})(\\\\d{3})(\\\\d{3,4})","$1 $2 $3",["[2569]|4[1-69]|7[14]"],"(0$1)"],["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["70"],"0$1"],["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["81"],"(0$1)"],["(\\\\d{2})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["[78]"],"0$1"],["(\\\\d{4})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["1"]],["(\\\\d{2})(\\\\d{4})(\\\\d{4})","$1 $2 $3",["4"],"(0$1)"],["(\\\\d{2})(\\\\d)(\\\\d{3})(\\\\d{4})","$1 $2 $3 $4",["8"],"0$1"]],"0"],"IL":["972","0(?:0|1[2-9])","1\\\\d{6}(?:\\\\d{3,5})?|[57]\\\\d{8}|[1-489]\\\\d{7}",[7,8,9,10,11,12],[["(\\\\d{4})(\\\\d{3})","$1-$2",["125"]],["(\\\\d{4})(\\\\d{2})(\\\\d{2})","$1-$2-$3",["121"]],["(\\\\d)(\\\\d{3})(\\\\d{4})","$1-$2-$3",["[2-489]"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{4})","$1-$2-$3",["[57]"],"0$1"],["(\\\\d{4})(\\\\d{3})(\\\\d{3})","$1-$2-$3",["12"]],["(\\\\d{4})(\\\\d{6})","$1-$2",["159"]],["(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1-$2-$3-$4",["1[7-9]"]],["(\\\\d{3})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})","$1-$2 $3-$4",["15"]]],"0"],"IM":["44","00","1624\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}",[10],0,"0",0,"0|([5-8]\\\\d{5})$","1624$1",0,"74576|(?:16|7[56])24"],"IN":["91","00","(?:000800|[2-9]\\\\d\\\\d)\\\\d{7}|1\\\\d{7,12}",[8,9,10,11,12,13],[["(\\\\d{8})","$1",["5(?:0|2[23]|3[03]|[67]1|88)","5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|888)","5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|8888)"],0,1],["(\\\\d{4})(\\\\d{4,5})","$1 $2",["180","1800"],0,1],["(\\\\d{3})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["140"],0,1],["(\\\\d{2})(\\\\d{4})(\\\\d{4})","$1 $2 $3",["11|2[02]|33|4[04]|79[1-7]|80[2-46]","11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])","11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])"],"0$1",1],["(\\\\d{3})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["1(?:2[0-249]|3[0-25]|4[145]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1)|6(?:12|[2-4]1|5[17]|6[13]|80)|7(?:12|3[134]|4[47]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)|(?:43|59|75)[15]|(?:1[59]|29|67|72)[14]","1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|674|7(?:(?:2[14]|3[34]|5[15])[2-6]|61[346]|88[0-8])|8(?:70[2-6]|84[235-7]|91[3-7])|(?:1(?:29|60|8[06])|261|552|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))[2-7]","1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12(?:[2-6]|7[0-8])|74[2-7])|7(?:(?:2[14]|5[15])[2-6]|3171|61[346]|88(?:[2-7]|82))|8(?:70[2-6]|84(?:[2356]|7[19])|91(?:[3-6]|7[19]))|73[134][2-6]|(?:74[47]|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[2-6]|7[19])|(?:1(?:29|60|8[06])|261|552|6(?:[2-4]1|5[17]|6[13]|7(?:1|4[0189])|80)|7(?:12|88[01]))[2-7]"],"0$1",1],["(\\\\d{4})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1[013-9]|28|3[129]|4[1-35689]|5[29]|6[02-5]|70)|807","1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1(?:[013-8]|9[6-9])|28[6-8]|3(?:17|2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]","1(?:[2-479]|5(?:[0236-9]|5[013-9]))|[2-5]|6(?:2(?:84|95)|355|83)|73179|807(?:1|9[1-3])|(?:1552|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[124-6])\\\\d|7(?:1(?:[013-8]\\\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\\\d|5[0-367])|70[13-7]))[2-7]"],"0$1",1],["(\\\\d{5})(\\\\d{5})","$1 $2",["[6-9]"],"0$1",1],["(\\\\d{4})(\\\\d{2,4})(\\\\d{4})","$1 $2 $3",["1(?:6|8[06])","1(?:6|8[06]0)"],0,1],["(\\\\d{4})(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3 $4",["18"],0,1]],"0"],"IO":["246","00","3\\\\d{6}",[7],[["(\\\\d{3})(\\\\d{4})","$1 $2",["3"]]]],"IQ":["964","00","(?:1|7\\\\d\\\\d)\\\\d{7}|[2-6]\\\\d{7,8}",[8,9,10],[["(\\\\d)(\\\\d{3})(\\\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{3,4})","$1 $2 $3",["[2-6]"],"0$1"],["(\\\\d{3})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["7"],"0$1"]],"0"],"IR":["98","00","[1-9]\\\\d{9}|(?:[1-8]\\\\d\\\\d|9)\\\\d{3,4}",[4,5,6,7,10],[["(\\\\d{4,5})","$1",["96"],"0$1"],["(\\\\d{2})(\\\\d{4,5})","$1 $2",["(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])[12689]"],"0$1"],["(\\\\d{3})(\\\\d{3})(\\\\d{3,4})","$1 $2 $3",["9"],"0$1"],["(\\\\d{2})(\\\\d{4})(\\\\d{4})","$1 $2 $3",["[1-8]"],"0$1"]],"0"],"IS":["354","00|1(?:0(?:01|[12]0)|100)","(?:38\\\\d|[4-9])\\\\d{6}",[7,9],[["(\\\\d{3})(\\\\d{4})","$1 $2",["[4-9]"]],["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["3"]]],0,0,0,0,0,0,0,"00"],"IT":["39","00","0\\\\d{5,10}|3[0-8]\\\\d{7,10}|55\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?|(?:1\\\\d|39)\\\\d{7,8}",[6,7,8,9,10,11],[["(\\\\d{2})(\\\\d{4,6})","$1 $2",["0[26]"]],["(\\\\d{3})(\\\\d{3,6})","$1 $2",["0[13-57-9][0159]|8(?:03|4[17]|9[245])","0[13-57-9][0159]|8(?:03|4[17]|9(?:2|[45][0-4]))"]],["(\\\\d{4})(\\\\d{2,6})","$1 $2",["0(?:[13-579][2-46-8]|8[236-8])"]],["(\\\\d{4})(\\\\d{4})","$1 $2",["894"]],["(\\\\d{2})(\\\\d{3,4})(\\\\d{4})","$1 $2 $3",["0[26]|5"]],["(\\\\d{3})(\\\\d{3})(\\\\d{3,4})","$1 $2 $3",["1[4679]|[38]"]],["(\\\\d{3})(\\\\d{3,4})(\\\\d{4})","$1 $2 $3",["0[13-57-9][0159]"]],["(\\\\d{2})(\\\\d{4})(\\\\d{5})","$1 $2 $3",["0[26]"]],["(\\\\d{4})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["0"]],["(\\\\d{3})(\\\\d{4})(\\\\d{4,5})","$1 $2 $3",["3"]]],0,0,0,0,0,0,[["0669[0-79]\\\\d{1,6}|0(?:1(?:[0159]\\\\d|[27][1-5]|31|4[1-4]|6[1356]|8[2-57])|2\\\\d\\\\d|3(?:[0159]\\\\d|2[1-4]|3[12]|[48][1-6]|6[2-59]|7[1-7])|4(?:[0159]\\\\d|[23][1-9]|4[245]|6[1-5]|7[1-4]|81)|5(?:[0159]\\\\d|2[1-5]|3[2-6]|4[1-79]|6[4-6]|7[1-578]|8[3-8])|6(?:[0-57-9]\\\\d|6[0-8])|7(?:[0159]\\\\d|2[12]|3[1-7]|4[2-46]|6[13569]|7[13-6]|8[1-59])|8(?:[0159]\\\\d|2[3-578]|3[1-356]|[6-8][1-5])|9(?:[0159]\\\\d|[238][1-5]|4[12]|6[1-8]|7[1-6]))\\\\d{2,7}"],["3[1-9]\\\\d{8}|3[2-9]\\\\d{7}",[9,10]],["80(?:0\\\\d{3}|3)\\\\d{3}",[6,9]],["(?:0878\\\\d\\\\d|89(?:2|4[5-9]\\\\d))\\\\d{3}|89[45][0-4]\\\\d\\\\d|(?:1(?:44|6[346])|89(?:5[5-9]|9))\\\\d{6}",[6,8,9,10]],["1(?:78\\\\d|99)\\\\d{6}",[9,10]],0,0,0,["55\\\\d{8}",[10]],["84(?:[08]\\\\d{3}|[17])\\\\d{3}",[6,9]]]],"JE":["44","00","1534\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}",[10],0,"0",0,"0|([0-24-8]\\\\d{5})$","1534$1",0,0,[["1534[0-24-8]\\\\d{5}"],["7(?:(?:(?:50|82)9|937)\\\\d|7(?:00[378]|97[7-9]))\\\\d{5}"],["80(?:07(?:35|81)|8901)\\\\d{4}"],["(?:8(?:4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|90(?:066[59]|1810|71(?:07|55)))\\\\d{4}"],["701511\\\\d{4}"],0,["(?:3(?:0(?:07(?:35|81)|8901)|3\\\\d{4}|4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|55\\\\d{4})\\\\d{4}"],["76(?:0[0-2]|2[356]|34|4[0134]|5[49]|6[0-369]|77|81|9[39])\\\\d{6}"],["56\\\\d{8}"]]],"JM":["1","011","(?:[58]\\\\d\\\\d|658|900)\\\\d{7}",[10],0,"1",0,0,0,0,"658|876"],"JO":["962","00","900\\\\d{5}|(?:(?:[268]|7\\\\d)\\\\d|32|53)\\\\d{6}",[8,9],[["(\\\\d)(\\\\d{3})(\\\\d{4})","$1 $2 $3",["[2356]|87"],"(0$1)"],["(\\\\d{3})(\\\\d{5,6})","$1 $2",["[89]"],"0$1"],["(\\\\d{2})(\\\\d{7})","$1 $2",["70"],"0$1"],["(\\\\d)(\\\\d{4})(\\\\d{4})","$1 $2 $3",["7"],"0$1"]],"0"],"JP":["81","010","00[1-9]\\\\d{6,14}|[257-9]\\\\d{9}|(?:00|[1-9]\\\\d\\\\d)\\\\d{6}",[8,9,10,11,12,13,14,15,16,17],[["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1-$2-$3",["(?:12|57|99)0"],"0$1"],["(\\\\d{4})(\\\\d)(\\\\d{4})","$1-$2-$3",["1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51|63)|9(?:49|80|9[16])","1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[78]|96)|477|51[24]|636)|9(?:496|802|9(?:1[23]|69))|1(?:45|58)[67]","1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[78]|96[2457-9])|477|51[24]|636[2-57-9])|9(?:496|802|9(?:1[23]|69))|1(?:45|58)[67]"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{4})","$1-$2-$3",["60"],"0$1"],["(\\\\d)(\\\\d{4})(\\\\d{4})","$1-$2-$3",["[36]|4(?:2[09]|7[01])","[36]|4(?:2(?:0|9[02-69])|7(?:0[019]|1))"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{4})","$1-$2-$3",["1(?:1|5[45]|77|88|9[69])|2(?:2[1-37]|3[0-269]|4[59]|5|6[24]|7[1-358]|8[1369]|9[0-38])|4(?:[28][1-9]|3[0-57]|[45]|6[248]|7[2-579]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-389])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9[2-6])|8(?:2[124589]|3[279]|49|6[0-24-689]|7[0-468]|8[68]|9[019])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9[1-489])","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2(?:[127]|3[014-9])|3[0-269]|4[59]|5(?:[0468][01]|[1-3]|5[0-69]|9[19])|62|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|2[01]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|8[1-9])|5(?:2|3[045]|4[0-369]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0-2469])|49|6(?:[0-24]|5[0-3589]|9[01459])|7[0-468]|8[68])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3[34]|4[0178]))|(?:49|55|83)[29]|(?:264|837)[016-9]|2(?:57|93)[015-9]|(?:47[59]|59[89]|8(?:6[68]|9))[019]","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[0468][01]|[1-3]|5[0-69]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|2[01]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0169])|3(?:[29]|7(?:[017-9]|6[6-8]))|49|6(?:[0-24]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:8294|96)[1-3]|2(?:57|93)[015-9]|(?:223|8699)[014-9]|(?:48|8292|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]","1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[0468][01]|[1-3]|5[0-69]|7[015-9]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17|3[015-9]))|4(?:2(?:[13-79]|2[01]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9(?:[019]|4[1-3]|6(?:[0-47-9]|5[01346-9])))|3(?:[29]|7(?:[017-9]|6[6-8]))|49|6(?:[0-24]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:223|8699)[014-9]|(?:48|829(?:2|66)|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]"],"0$1"],["(\\\\d{3})(\\\\d{2})(\\\\d{4})","$1-$2-$3",["[14]|[29][2-9]|5[3-9]|7[2-4679]|8(?:[246-9]|3[3-8]|5[2-9])","[14]|[29][2-9]|5[3-9]|7[2-4679]|8(?:[246-9]|3(?:[3-6][2-9]|7|8[2-5])|5[2-9])"],"0$1"],["(\\\\d{3})(\\\\d{3})(\\\\d{4})","$1-$2-$3",["800"],"0$1"],["(\\\\d{2})(\\\\d{4})(\\\\d{4})","$1-$2-$3",["[2579]|80"],"0$1"]],"0"],"KE":["254","000","(?:[17]\\\\d\\\\d|900)\\\\d{6}|(?:2|80)0\\\\d{6,7}|[4-6]\\\\d{6,8}",[7,8,9,10],[["(\\\\d{2})(\\\\d{5,7})","$1 $2",["[24-6]"],"0$1"],["(\\\\d{3})(\\\\d{6})","$1 $2",["[17]"],"0$1"],["(\\\\d{3})(\\\\d{3})(\\\\d{3,4})","$1 $2 $3",["[89]"],"0$1"]],"0"],"KG":["996","00","8\\\\d{9}|(?:[235-8]\\\\d|99)\\\\d{7}",[9,10],[["(\\\\d{4})(\\\\d{5})","$1 $2",["3(?:1[346]|[24-79])"],"0$1"],["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["[235-79]|88"],"0$1"],["(\\\\d{3})(\\\\d{3})(\\\\d)(\\\\d{2,3})","$1 $2 $3 $4",["8"],"0$1"]],"0"],"KH":["855","00[14-9]","1\\\\d{9}|[1-9]\\\\d{7,8}",[8,9,10],[["(\\\\d{2})(\\\\d{3})(\\\\d{3,4})","$1 $2 $3",["[1-9]"],"0$1"],["(\\\\d{4})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["1"]]],"0"],"KI":["686","00","(?:[37]\\\\d|6[0-79])\\\\d{6}|(?:[2-48]\\\\d|50)\\\\d{3}",[5,8],0,"0"],"KM":["269","00","[3478]\\\\d{6}",[7],[["(\\\\d{3})(\\\\d{2})(\\\\d{2})","$1 $2 $3",["[3478]"]]]],"KN":["1","011","(?:[58]\\\\d\\\\d|900)\\\\d{7}",[10],0,"1",0,"1|([2-7]\\\\d{6})$","869$1",0,"869"],"KP":["850","00|99","85\\\\d{6}|(?:19\\\\d|2)\\\\d{7}",[8,10],[["(\\\\d{2})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["8"],"0$1"],["(\\\\d)(\\\\d{3})(\\\\d{4})","$1 $2 $3",["2"],"0$1"],["(\\\\d{3})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["1"],"0$1"]],"0"],"KR":["82","00(?:[125689]|3(?:[46]5|91)|7(?:00|27|3|55|6[126]))","00[1-9]\\\\d{8,11}|(?:[12]|5\\\\d{3})\\\\d{7}|[13-6]\\\\d{9}|(?:[1-6]\\\\d|80)\\\\d{7}|[3-6]\\\\d{4,5}|(?:00|7)0\\\\d{8}",[5,6,8,9,10,11,12,13,14],[["(\\\\d{2})(\\\\d{3,4})","$1-$2",["(?:3[1-3]|[46][1-4]|5[1-5])1"],"0$1"],["(\\\\d{4})(\\\\d{4})","$1-$2",["1"]],["(\\\\d)(\\\\d{3,4})(\\\\d{4})","$1-$2-$3",["2"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{4})","$1-$2-$3",["60|8"],"0$1"],["(\\\\d{2})(\\\\d{3,4})(\\\\d{4})","$1-$2-$3",["[1346]|5[1-5]"],"0$1"],["(\\\\d{2})(\\\\d{4})(\\\\d{4})","$1-$2-$3",["[57]"],"0$1"],["(\\\\d{2})(\\\\d{5})(\\\\d{4})","$1-$2-$3",["5"],"0$1"]],"0",0,"0(8(?:[1-46-8]|5\\\\d\\\\d))?"],"KW":["965","00","(?:18|[2569]\\\\d\\\\d)\\\\d{5}",[7,8],[["(\\\\d{4})(\\\\d{3,4})","$1 $2",["[169]|2(?:[235]|4[1-35-9])|52"]],["(\\\\d{3})(\\\\d{5})","$1 $2",["[25]"]]]],"KY":["1","011","(?:345|[58]\\\\d\\\\d|900)\\\\d{7}",[10],0,"1",0,"1|([2-9]\\\\d{6})$","345$1",0,"345"],"KZ":["7","810","33622\\\\d{5}|(?:7\\\\d|80)\\\\d{8}",[10],0,"8",0,0,0,0,"33|7",0,"8~10"],"LA":["856","00","(?:2\\\\d|3)\\\\d{8}|(?:[235-8]\\\\d|41)\\\\d{6}",[8,9,10],[["(\\\\d{2})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["2[13]|3[14]|[4-8]"],"0$1"],["(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})","$1 $2 $3 $4",["3"],"0$1"],["(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{3})","$1 $2 $3 $4",["2"],"0$1"]],"0"],"LB":["961","00","[7-9]\\\\d{7}|[13-9]\\\\d{6}",[7,8],[["(\\\\d)(\\\\d{3})(\\\\d{3})","$1 $2 $3",["[13-69]|7(?:[2-57]|62|8[0-7]|9[04-9])|8[02-9]"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["[7-9]"]]],"0"],"LC":["1","011","(?:[58]\\\\d\\\\d|758|900)\\\\d{7}",[10],0,"1",0,"1|([2-7]\\\\d{6})$","758$1",0,"758"],"LI":["423","00","90\\\\d{5}|(?:[2378]|6\\\\d\\\\d)\\\\d{6}",[7,9],[["(\\\\d{3})(\\\\d{2})(\\\\d{2})","$1 $2 $3",["[237-9]"]],["(\\\\d{2})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["69"]],["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["6"]]],"0",0,"0|(1001)"],"LK":["94","00","[1-9]\\\\d{8}",[9],[["(\\\\d{2})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["[1-689]"],"0$1"]],"0"],"LR":["231","00","(?:2|33|5\\\\d|77|88)\\\\d{7}|[45]\\\\d{6}",[7,8,9],[["(\\\\d)(\\\\d{3})(\\\\d{3})","$1 $2 $3",["[45]"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["2"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["[3578]"],"0$1"]],"0"],"LS":["266","00","(?:[256]\\\\d\\\\d|800)\\\\d{5}",[8],[["(\\\\d{4})(\\\\d{4})","$1 $2",["[2568]"]]]],"LT":["370","00","(?:[3469]\\\\d|52|[78]0)\\\\d{6}",[8],[["(\\\\d)(\\\\d{3})(\\\\d{4})","$1 $2 $3",["52[0-7]"],"(8-$1)",1],["(\\\\d{3})(\\\\d{2})(\\\\d{3})","$1 $2 $3",["[7-9]"],"8 $1",1],["(\\\\d{2})(\\\\d{6})","$1 $2",["37|4(?:[15]|6[1-8])"],"(8-$1)",1],["(\\\\d{3})(\\\\d{5})","$1 $2",["[3-6]"],"(8-$1)",1]],"8",0,"[08]"],"LU":["352","00","35[013-9]\\\\d{4,8}|6\\\\d{8}|35\\\\d{2,4}|(?:[2457-9]\\\\d|3[0-46-9])\\\\d{2,9}",[4,5,6,7,8,9,10,11],[["(\\\\d{2})(\\\\d{3})","$1 $2",["2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])"]],["(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3",["2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])"]],["(\\\\d{2})(\\\\d{2})(\\\\d{3})","$1 $2 $3",["20[2-689]"]],["(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})","$1 $2 $3 $4",["2(?:[0367]|4[3-8])"]],["(\\\\d{3})(\\\\d{2})(\\\\d{3})","$1 $2 $3",["80[01]|90[015]"]],["(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})","$1 $2 $3 $4",["20"]],["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["6"]],["(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})","$1 $2 $3 $4 $5",["2(?:[0367]|4[3-8])"]],["(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,5})","$1 $2 $3 $4",["[3-57]|8[13-9]|9(?:0[89]|[2-579])|(?:2|80)[2-9]"]]],0,0,"(15(?:0[06]|1[12]|[35]5|4[04]|6[26]|77|88|99)\\\\d)"],"LV":["371","00","(?:[268]\\\\d|90)\\\\d{6}",[8],[["(\\\\d{2})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["[269]|8[01]"]]]],"LY":["218","00","[2-9]\\\\d{8}",[9],[["(\\\\d{2})(\\\\d{7})","$1-$2",["[2-9]"],"0$1"]],"0"],"MA":["212","00","[5-8]\\\\d{8}",[9],[["(\\\\d{5})(\\\\d{4})","$1-$2",["5(?:29|38)","5(?:29|38)[89]"],"0$1"],["(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["5[45]"],"0$1"],["(\\\\d{4})(\\\\d{5})","$1-$2",["5(?:2[2-489]|3[5-9]|9)|892","5(?:2(?:[2-49]|8[235-9])|3[5-9]|9)|892"],"0$1"],["(\\\\d{2})(\\\\d{7})","$1-$2",["8"],"0$1"],["(\\\\d{3})(\\\\d{6})","$1-$2",["[5-7]"],"0$1"]],"0",0,0,0,0,0,[["5(?:29(?:[189]0|29)|38[89]0)\\\\d{4}|5(?:2(?:[015-7]\\\\d|2[02-9]|3[0-578]|4[02-46-8]|8[0235-7]|90)|3(?:[0-47]\\\\d|5[02-9]|6[02-8]|80|9[3-9])|(?:4[067]|5[03])\\\\d)\\\\d{5}"],["(?:6(?:[0-79]\\\\d|8[0-247-9])|7(?:0[016-8]|6[1267]|7[0-27]))\\\\d{6}"],["80\\\\d{7}"],["89\\\\d{7}"],0,0,0,0,["592(?:4[0-2]|93)\\\\d{4}"]]],"MC":["377","00","870\\\\d{5}|(?:[349]|6\\\\d)\\\\d{7}",[8,9],[["(\\\\d{2})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["4"],"0$1"],["(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["[39]"]],["(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4 $5",["6"],"0$1"]],"0"],"MD":["373","00","(?:[235-7]\\\\d|[89]0)\\\\d{6}",[8],[["(\\\\d{3})(\\\\d{5})","$1 $2",["[89]"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["22|3"],"0$1"],["(\\\\d{3})(\\\\d{2})(\\\\d{3})","$1 $2 $3",["[25-7]"],"0$1"]],"0"],"ME":["382","00","(?:20|[3-79]\\\\d)\\\\d{6}|80\\\\d{6,7}",[8,9],[["(\\\\d{2})(\\\\d{3})(\\\\d{3,4})","$1 $2 $3",["[2-9]"],"0$1"]],"0"],"MF":["590","00","(?:590|69\\\\d|976)\\\\d{6}",[9],0,"0",0,0,0,0,0,[["590(?:0[079]|[14]3|[27][79]|30|5[0-268]|87)\\\\d{4}"],["69(?:0\\\\d\\\\d|1(?:2[29]|3[0-5]))\\\\d{4}"],0,0,0,0,0,0,["976[01]\\\\d{5}"]]],"MG":["261","00","[23]\\\\d{8}",[9],[["(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{2})","$1 $2 $3 $4",["[23]"],"0$1"]],"0",0,"0|([24-9]\\\\d{6})$","20$1"],"MH":["692","011","329\\\\d{4}|(?:[256]\\\\d|45)\\\\d{5}",[7],[["(\\\\d{3})(\\\\d{4})","$1-$2",["[2-6]"]]],"1"],"MK":["389","00","[2-578]\\\\d{7}",[8],[["(\\\\d)(\\\\d{3})(\\\\d{4})","$1 $2 $3",["2"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["[347]"],"0$1"],["(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["[58]"],"0$1"]],"0"],"ML":["223","00","[24-9]\\\\d{7}",[8],[["(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["[24-9]"]]]],"MM":["95","00","1\\\\d{5,7}|95\\\\d{6}|(?:[4-7]|9[0-46-9])\\\\d{6,8}|(?:2|8\\\\d)\\\\d{5,8}",[6,7,8,9,10],[["(\\\\d)(\\\\d{2})(\\\\d{3})","$1 $2 $3",["16|2"],"0$1"],["(\\\\d{2})(\\\\d{2})(\\\\d{3})","$1 $2 $3",["[45]|6(?:0[23]|[1-689]|7[235-7])|7(?:[0-4]|5[2-7])|8[1-6]"],"0$1"],["(\\\\d)(\\\\d{3})(\\\\d{3,4})","$1 $2 $3",["[12]"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{3,4})","$1 $2 $3",["[4-7]|8[1-35]"],"0$1"],["(\\\\d)(\\\\d{3})(\\\\d{4,6})","$1 $2 $3",["9(?:2[0-4]|[35-9]|4[137-9])"],"0$1"],["(\\\\d)(\\\\d{4})(\\\\d{4})","$1 $2 $3",["2"],"0$1"],["(\\\\d{3})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["8"],"0$1"],["(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3 $4",["92"],"0$1"],["(\\\\d)(\\\\d{5})(\\\\d{4})","$1 $2 $3",["9"],"0$1"]],"0"],"MN":["976","001","[12]\\\\d{7,9}|[57-9]\\\\d{7}",[8,9,10],[["(\\\\d{2})(\\\\d{2})(\\\\d{4})","$1 $2 $3",["[12]1"],"0$1"],["(\\\\d{4})(\\\\d{4})","$1 $2",["[57-9]"]],["(\\\\d{3})(\\\\d{5,6})","$1 $2",["[12]2[1-3]"],"0$1"],["(\\\\d{4})(\\\\d{5,6})","$1 $2",["[12](?:27|3[2-8]|4[2-68]|5[1-4689])","[12](?:27|3[2-8]|4[2-68]|5[1-4689])[0-3]"],"0$1"],["(\\\\d{5})(\\\\d{4,5})","$1 $2",["[12]"],"0$1"]],"0"],"MO":["853","00","(?:28|[68]\\\\d)\\\\d{6}",[8],[["(\\\\d{4})(\\\\d{4})","$1 $2",["[268]"]]]],"MP":["1","011","[58]\\\\d{9}|(?:67|90)0\\\\d{7}",[10],0,"1",0,"1|([2-9]\\\\d{6})$","670$1",0,"670"],"MQ":["596","00","69\\\\d{7}|(?:59|97)6\\\\d{6}",[9],[["(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["[569]"],"0$1"]],"0"],"MR":["222","00","(?:[2-4]\\\\d\\\\d|800)\\\\d{5}",[8],[["(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["[2-48]"]]]],"MS":["1","011","66449\\\\d{5}|(?:[58]\\\\d\\\\d|900)\\\\d{7}",[10],0,"1",0,"1|(4\\\\d{6})$","664$1",0,"664"],"MT":["356","00","3550\\\\d{4}|(?:[2579]\\\\d\\\\d|800)\\\\d{5}",[8],[["(\\\\d{4})(\\\\d{4})","$1 $2",["[2357-9]"]]]],"MU":["230","0(?:0|[24-7]0|3[03])","(?:[2-468]|5\\\\d)\\\\d{6}",[7,8],[["(\\\\d{3})(\\\\d{4})","$1 $2",["[2-46]|8[013]"]],["(\\\\d{4})(\\\\d{4})","$1 $2",["5"]]],0,0,0,0,0,0,0,"020"],"MV":["960","0(?:0|19)","(?:800|9[0-57-9]\\\\d)\\\\d{7}|[34679]\\\\d{6}",[7,10],[["(\\\\d{3})(\\\\d{4})","$1-$2",["[3467]|9[13-9]"]],["(\\\\d{3})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["[89]"]]],0,0,0,0,0,0,0,"00"],"MW":["265","00","1\\\\d{6}(?:\\\\d{2})?|(?:[23]1|77|88|99)\\\\d{7}",[7,9],[["(\\\\d)(\\\\d{3})(\\\\d{3})","$1 $2 $3",["1[2-9]"],"0$1"],["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["2"],"0$1"],["(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["[137-9]"],"0$1"]],"0"],"MX":["52","0[09]","(?:1(?:[01467]\\\\d|[2359][1-9]|8[1-79])|[2-9]\\\\d)\\\\d{8}",[10,11],[["(\\\\d{2})(\\\\d{4})(\\\\d{4})","$1 $2 $3",["33|5[56]|81"],0,1],["(\\\\d{3})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["[2-9]"],0,1],["(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})","$2 $3 $4",["1(?:33|5[56]|81)"],0,1],["(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{4})","$2 $3 $4",["1"],0,1]],"01",0,"0(?:[12]|4[45])|1",0,0,0,0,"00"],"MY":["60","00","1\\\\d{8,9}|(?:3\\\\d|[4-9])\\\\d{7}",[8,9,10],[["(\\\\d)(\\\\d{3})(\\\\d{4})","$1-$2 $3",["[4-79]"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{3,4})","$1-$2 $3",["1(?:[02469]|[37][2-9]|8[1-9])|8"],"0$1"],["(\\\\d)(\\\\d{4})(\\\\d{4})","$1-$2 $3",["3"],"0$1"],["(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{4})","$1-$2-$3-$4",["1[36-8]"]],["(\\\\d{3})(\\\\d{3})(\\\\d{4})","$1-$2 $3",["15"],"0$1"],["(\\\\d{2})(\\\\d{4})(\\\\d{4})","$1-$2 $3",["1"],"0$1"]],"0"],"MZ":["258","00","(?:2|8\\\\d)\\\\d{7}",[8,9],[["(\\\\d{2})(\\\\d{3})(\\\\d{3,4})","$1 $2 $3",["2|8[2-7]"]],["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["8"]]]],"NA":["264","00","[68]\\\\d{7,8}",[8,9],[["(\\\\d{2})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["88"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{3,4})","$1 $2 $3",["6"],"0$1"],["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["87"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["8"],"0$1"]],"0"],"NC":["687","00","[2-57-9]\\\\d{5}",[6],[["(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1.$2.$3",["[2-57-9]"]]]],"NE":["227","00","[0289]\\\\d{7}",[8],[["(\\\\d{2})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["08"]],["(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["[089]|2[013]"]]]],"NF":["672","00","[13]\\\\d{5}",[6],[["(\\\\d{2})(\\\\d{4})","$1 $2",["1[0-3]"]],["(\\\\d)(\\\\d{5})","$1 $2",["[13]"]]],0,0,"([0-258]\\\\d{4})$","3$1"],"NG":["234","009","(?:[124-7]|9\\\\d{3})\\\\d{6}|[1-9]\\\\d{7}|[78]\\\\d{9,13}",[7,8,10,11,12,13,14],[["(\\\\d{2})(\\\\d{2})(\\\\d{3})","$1 $2 $3",["78"],"0$1"],["(\\\\d)(\\\\d{3})(\\\\d{3,4})","$1 $2 $3",["[12]|9(?:0[3-9]|[1-9])"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{2,3})","$1 $2 $3",["[3-7]|8[2-9]"],"0$1"],["(\\\\d{3})(\\\\d{3})(\\\\d{3,4})","$1 $2 $3",["[7-9]"],"0$1"],["(\\\\d{3})(\\\\d{4})(\\\\d{4,5})","$1 $2 $3",["[78]"],"0$1"],["(\\\\d{3})(\\\\d{5})(\\\\d{5,6})","$1 $2 $3",["[78]"],"0$1"]],"0"],"NI":["505","00","(?:1800|[25-8]\\\\d{3})\\\\d{4}",[8],[["(\\\\d{4})(\\\\d{4})","$1 $2",["[125-8]"]]]],"NL":["31","00","(?:[124-7]\\\\d\\\\d|3(?:[02-9]\\\\d|1[0-8]))\\\\d{6}|[89]\\\\d{6,9}|1\\\\d{4,5}",[5,6,7,8,9,10],[["(\\\\d{3})(\\\\d{4,7})","$1 $2",["[89]0"],"0$1"],["(\\\\d{2})(\\\\d{7})","$1 $2",["66"],"0$1"],["(\\\\d)(\\\\d{8})","$1 $2",["6"],"0$1"],["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["1[16-8]|2[259]|3[124]|4[17-9]|5[124679]"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["[1-57-9]"],"0$1"]],"0"],"NO":["47","00","(?:0|[2-9]\\\\d{3})\\\\d{4}",[5,8],[["(\\\\d{3})(\\\\d{2})(\\\\d{3})","$1 $2 $3",["[489]|5[89]"]],["(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["[235-7]"]]],0,0,0,0,0,"[02-689]|7[0-8]"],"NP":["977","00","9\\\\d{9}|[1-9]\\\\d{7}",[8,10],[["(\\\\d)(\\\\d{7})","$1-$2",["1[2-6]"],"0$1"],["(\\\\d{2})(\\\\d{6})","$1-$2",["[1-8]|9(?:[1-579]|6[2-6])"],"0$1"],["(\\\\d{3})(\\\\d{7})","$1-$2",["9"]]],"0"],"NR":["674","00","(?:444|(?:55|8\\\\d)\\\\d|666)\\\\d{4}",[7],[["(\\\\d{3})(\\\\d{4})","$1 $2",["[4-68]"]]]],"NU":["683","00","(?:[47]|888\\\\d)\\\\d{3}",[4,7],[["(\\\\d{3})(\\\\d{4})","$1 $2",["8"]]]],"NZ":["64","0(?:0|161)","2\\\\d{7,9}|(?:[34]\\\\d|6[0-35-9])\\\\d{6}|(?:508|[79]\\\\d)\\\\d{6,7}|8\\\\d{4,9}",[5,6,7,8,9,10],[["(\\\\d{2})(\\\\d{3,8})","$1 $2",["83"],"0$1"],["(\\\\d{3})(\\\\d{2})(\\\\d{3})","$1 $2 $3",["[89]0"],"0$1"],["(\\\\d)(\\\\d{3})(\\\\d{4})","$1-$2 $3",["24|[346]|7[2-57-9]|9[2-9]"],"0$1"],["(\\\\d{3})(\\\\d{3})(\\\\d{3,4})","$1 $2 $3",["2(?:10|74)|[59]|80"],"0$1"],["(\\\\d{2})(\\\\d{3,4})(\\\\d{4})","$1 $2 $3",["2[028]"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{3,5})","$1 $2 $3",["2(?:[169]|7[0-35-9])|7|86"],"0$1"]],"0",0,0,0,0,0,0,"00"],"OM":["968","00","(?:1505|[279]\\\\d{3}|500)\\\\d{4}|8007\\\\d{4,5}",[7,8,9],[["(\\\\d{3})(\\\\d{4,6})","$1 $2",["[58]"]],["(\\\\d{2})(\\\\d{6})","$1 $2",["2"]],["(\\\\d{4})(\\\\d{4})","$1 $2",["[179]"]]]],"PA":["507","00","(?:[1-57-9]|6\\\\d)\\\\d{6}",[7,8],[["(\\\\d{3})(\\\\d{4})","$1-$2",["[1-57-9]"]],["(\\\\d{4})(\\\\d{4})","$1-$2",["6"]]]],"PE":["51","19(?:1[124]|77|90)00","(?:[14-8]|9\\\\d)\\\\d{7}",[8,9],[["(\\\\d{3})(\\\\d{5})","$1 $2",["80"],"(0$1)"],["(\\\\d)(\\\\d{7})","$1 $2",["1"],"(0$1)"],["(\\\\d{2})(\\\\d{6})","$1 $2",["[4-8]"],"(0$1)"],["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["9"]]],"0",0,0,0,0,0,0,0," Anexo "],"PF":["689","00","[48]\\\\d{7}|4\\\\d{5}",[6,8],[["(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3",["44"]],["(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["[48]"]]]],"PG":["675","00|140[1-3]","(?:180|[78]\\\\d{3})\\\\d{4}|(?:[2-589]\\\\d|64)\\\\d{5}",[7,8],[["(\\\\d{3})(\\\\d{4})","$1 $2",["18|[2-69]|85"]],["(\\\\d{4})(\\\\d{4})","$1 $2",["[78]"]]],0,0,0,0,0,0,0,"00"],"PH":["63","00","1800\\\\d{7,9}|(?:2|[89]\\\\d{4})\\\\d{5}|[2-8]\\\\d{8}|[28]\\\\d{7}",[6,8,9,10,11,12,13],[["(\\\\d)(\\\\d{5})","$1 $2",["2"],"(0$1)"],["(\\\\d)(\\\\d{3})(\\\\d{4})","$1 $2 $3",["2"],"(0$1)"],["(\\\\d{4})(\\\\d{4,6})","$1 $2",["3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|544|88[245]|(?:52|64|86)2","3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))"],"(0$1)"],["(\\\\d{5})(\\\\d{4})","$1 $2",["346|4(?:27|9[35])|883","3469|4(?:279|9(?:30|56))|8834"],"(0$1)"],["(\\\\d)(\\\\d{4})(\\\\d{4})","$1 $2 $3",["2"],"(0$1)"],["(\\\\d{2})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["[3-7]|8[2-8]"],"(0$1)"],["(\\\\d{3})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["[89]"],"0$1"],["(\\\\d{4})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["1"]],["(\\\\d{4})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})","$1 $2 $3 $4",["1"]]],"0"],"PK":["92","00","122\\\\d{6}|[24-8]\\\\d{10,11}|9(?:[013-9]\\\\d{8,10}|2(?:[01]\\\\d\\\\d|2(?:[06-8]\\\\d|1[01]))\\\\d{7})|(?:[2-8]\\\\d{3}|92(?:[0-7]\\\\d|8[1-9]))\\\\d{6}|[24-9]\\\\d{8}|[89]\\\\d{7}",[8,9,10,11,12],[["(\\\\d{3})(\\\\d{3})(\\\\d{2})","$1 $2 $3",["[89]0"],"0$1"],["(\\\\d{4})(\\\\d{5})","$1 $2",["1"]],["(\\\\d{3})(\\\\d{6,7})","$1 $2",["2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8])","9(?:2[3-8]|98)|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:22|3[27-9]|4[2-6]|6[3569]|9[25-7]))[2-9]"],"(0$1)"],["(\\\\d{2})(\\\\d{7,8})","$1 $2",["(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]"],"(0$1)"],["(\\\\d{5})(\\\\d{5})","$1 $2",["58"],"(0$1)"],["(\\\\d{3})(\\\\d{7})","$1 $2",["3"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3 $4",["2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91"],"(0$1)"],["(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3 $4",["[24-9]"],"(0$1)"]],"0"],"PL":["48","00","[1-57-9]\\\\d{6}(?:\\\\d{2})?|6\\\\d{5,8}",[6,7,8,9],[["(\\\\d{5})","$1",["19"]],["(\\\\d{3})(\\\\d{3})","$1 $2",["11|64"]],["(\\\\d{2})(\\\\d{2})(\\\\d{3})","$1 $2 $3",["(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])1","(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])19"]],["(\\\\d{3})(\\\\d{2})(\\\\d{2,3})","$1 $2 $3",["64"]],["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["39|45|5[0137]|6[0469]|7[02389]|8[08]"]],["(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["1[2-8]|[2-8]|9[145]"]]]],"PM":["508","00","[45]\\\\d{5}",[6],[["(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3",["[45]"],"0$1"]],"0"],"PR":["1","011","(?:[589]\\\\d\\\\d|787)\\\\d{7}",[10],0,"1",0,0,0,0,"787|939"],"PS":["970","00","[2489]2\\\\d{6}|(?:1\\\\d|5)\\\\d{8}",[8,9,10],[["(\\\\d)(\\\\d{3})(\\\\d{4})","$1 $2 $3",["[2489]"],"0$1"],["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["5"],"0$1"],["(\\\\d{4})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["1"]]],"0"],"PT":["351","00","(?:[26-9]\\\\d|30)\\\\d{7}",[9],[["(\\\\d{2})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["2[12]"]],["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["[236-9]"]]]],"PW":["680","01[12]","(?:[24-8]\\\\d\\\\d|345|900)\\\\d{4}",[7],[["(\\\\d{3})(\\\\d{4})","$1 $2",["[2-9]"]]]],"PY":["595","00","59\\\\d{4,6}|(?:[2-46-9]\\\\d|5[0-8])\\\\d{4,7}",[6,7,8,9],[["(\\\\d{3})(\\\\d{3,6})","$1 $2",["[2-9]0"],"0$1"],["(\\\\d{2})(\\\\d{5})","$1 $2",["[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36]"],"(0$1)"],["(\\\\d{3})(\\\\d{4,5})","$1 $2",["2[279]|3[13-5]|4[359]|5|6(?:[34]|7[1-46-8])|7[46-8]|85"],"(0$1)"],["(\\\\d{2})(\\\\d{3})(\\\\d{3,4})","$1 $2 $3",["2[14-68]|3[26-9]|4[1246-8]|6(?:1|75)|7[1-35]|8[1-36]"],"(0$1)"],["(\\\\d{2})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["87"]],["(\\\\d{3})(\\\\d{6})","$1 $2",["9"],"0$1"],["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["[2-8]"],"0$1"]],"0"],"QA":["974","00","[2-7]\\\\d{7}|(?:2\\\\d\\\\d|800)\\\\d{4}",[7,8],[["(\\\\d{3})(\\\\d{4})","$1 $2",["2[126]|8"]],["(\\\\d{4})(\\\\d{4})","$1 $2",["[2-7]"]]]],"RE":["262","00","9769\\\\d{5}|(?:26|[68]\\\\d)\\\\d{7}",[9],[["(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["[2689]"],"0$1"]],"0",0,0,0,0,"26[23]|69|[89]"],"RO":["40","00","(?:[237]\\\\d|[89]0)\\\\d{7}|[23]\\\\d{5}",[6,9],[["(\\\\d{3})(\\\\d{3})","$1 $2",["2[3-6]","2[3-6]\\\\d9"],"0$1"],["(\\\\d{2})(\\\\d{4})","$1 $2",["219|31"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["[23]1"],"0$1"],["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["[237-9]"],"0$1"]],"0",0,0,0,0,0,0,0," int "],"RS":["381","00","38[02-9]\\\\d{6,9}|6\\\\d{7,9}|90\\\\d{4,8}|38\\\\d{5,6}|(?:7\\\\d\\\\d|800)\\\\d{3,9}|(?:[12]\\\\d|3[0-79])\\\\d{5,10}",[6,7,8,9,10,11,12],[["(\\\\d{3})(\\\\d{3,9})","$1 $2",["(?:2[389]|39)0|[7-9]"],"0$1"],["(\\\\d{2})(\\\\d{5,10})","$1 $2",["[1-36]"],"0$1"]],"0"],"RU":["7","810","[347-9]\\\\d{9}",[10],[["(\\\\d{4})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["7(?:1[0-8]|2[1-9])","7(?:1(?:[0-6]2|7|8[27])|2(?:1[23]|[2-9]2))","7(?:1(?:[0-6]2|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2"],"8 ($1)",1],["(\\\\d{5})(\\\\d)(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["7(?:1[0-68]|2[1-9])","7(?:1(?:[06][3-6]|[18]|2[35]|[3-5][3-5])|2(?:[13][3-5]|[24-689]|7[457]))","7(?:1(?:0(?:[356]|4[023])|[18]|2(?:3[013-9]|5)|3[45]|43[013-79]|5(?:3[1-8]|4[1-7]|5)|6(?:3[0-35-9]|[4-6]))|2(?:1(?:3[178]|[45])|[24-689]|3[35]|7[457]))|7(?:14|23)4[0-8]|71(?:33|45)[1-79]"],"8 ($1)",1],["(\\\\d{3})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["7"],"8 ($1)",1],["(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})","$1 $2-$3-$4",["[3489]"],"8 ($1)",1]],"8",0,0,0,0,"3[04-689]|[489]",0,"8~10"],"RW":["250","00","(?:06|[27]\\\\d\\\\d|[89]00)\\\\d{6}",[8,9],[["(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["0"]],["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["[7-9]"],"0$1"],["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["2"]]],"0"],"SA":["966","00","92\\\\d{7}|(?:[15]|8\\\\d)\\\\d{8}",[9,10],[["(\\\\d{4})(\\\\d{5})","$1 $2",["9"]],["(\\\\d{2})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["1"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["5"],"0$1"],["(\\\\d{3})(\\\\d{3})(\\\\d{3,4})","$1 $2 $3",["81"],"0$1"],["(\\\\d{3})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["8"]]],"0"],"SB":["677","0[01]","(?:[1-6]|[7-9]\\\\d\\\\d)\\\\d{4}",[5,7],[["(\\\\d{2})(\\\\d{5})","$1 $2",["7|8[4-9]|9(?:[1-8]|9[0-8])"]]]],"SC":["248","010|0[0-2]","8000\\\\d{3}|(?:[249]\\\\d|64)\\\\d{5}",[7],[["(\\\\d)(\\\\d{3})(\\\\d{3})","$1 $2 $3",["[246]|9[57]"]]],0,0,0,0,0,0,0,"00"],"SD":["249","00","[19]\\\\d{8}",[9],[["(\\\\d{2})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["[19]"],"0$1"]],"0"],"SE":["46","00","(?:[26]\\\\d\\\\d|9)\\\\d{9}|[1-9]\\\\d{8}|[1-689]\\\\d{7}|[1-4689]\\\\d{6}|2\\\\d{5}",[6,7,8,9,10],[["(\\\\d{2})(\\\\d{2,3})(\\\\d{2})","$1-$2 $3",["20"],"0$1",0,"$1 $2 $3"],["(\\\\d{3})(\\\\d{4})","$1-$2",["9(?:00|39|44)"],"0$1",0,"$1 $2"],["(\\\\d{2})(\\\\d{3})(\\\\d{2})","$1-$2 $3",["[12][136]|3[356]|4[0246]|6[03]|90[1-9]"],"0$1",0,"$1 $2 $3"],["(\\\\d)(\\\\d{2,3})(\\\\d{2})(\\\\d{2})","$1-$2 $3 $4",["8"],"0$1",0,"$1 $2 $3 $4"],["(\\\\d{3})(\\\\d{2,3})(\\\\d{2})","$1-$2 $3",["1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])"],"0$1",0,"$1 $2 $3"],["(\\\\d{3})(\\\\d{2,3})(\\\\d{3})","$1-$2 $3",["9(?:00|39|44)"],"0$1",0,"$1 $2 $3"],["(\\\\d{2})(\\\\d{2,3})(\\\\d{2})(\\\\d{2})","$1-$2 $3 $4",["1[13689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]"],"0$1",0,"$1 $2 $3 $4"],["(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})","$1-$2 $3 $4",["10|7"],"0$1",0,"$1 $2 $3 $4"],["(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})","$1-$2 $3 $4",["8"],"0$1",0,"$1 $2 $3 $4"],["(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1-$2 $3 $4",["[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])"],"0$1",0,"$1 $2 $3 $4"],["(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{3})","$1-$2 $3 $4",["9"],"0$1",0,"$1 $2 $3 $4"],["(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})","$1-$2 $3 $4 $5",["[26]"],"0$1",0,"$1 $2 $3 $4 $5"]],"0"],"SG":["65","0[0-3]\\\\d","(?:(?:1\\\\d|8)\\\\d\\\\d|7000)\\\\d{7}|[3689]\\\\d{7}",[8,10,11],[["(\\\\d{4})(\\\\d{4})","$1 $2",["[369]|8[1-9]"]],["(\\\\d{3})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["8"]],["(\\\\d{4})(\\\\d{4})(\\\\d{3})","$1 $2 $3",["7"]],["(\\\\d{4})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["1"]]]],"SH":["290","00","(?:[256]\\\\d|8)\\\\d{3}",[4,5],0,0,0,0,0,0,"[256]"],"SI":["386","00|10(?:22|66|88|99)","[1-7]\\\\d{7}|8\\\\d{4,7}|90\\\\d{4,6}",[5,6,7,8],[["(\\\\d{2})(\\\\d{3,6})","$1 $2",["8[09]|9"],"0$1"],["(\\\\d{3})(\\\\d{5})","$1 $2",["59|8"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["[37][01]|4[0139]|51|6"],"0$1"],["(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["[1-57]"],"(0$1)"]],"0",0,0,0,0,0,0,"00"],"SJ":["47","00","0\\\\d{4}|(?:[4589]\\\\d|79)\\\\d{6}",[5,8],0,0,0,0,0,0,"79"],"SK":["421","00","[2-689]\\\\d{8}|[2-59]\\\\d{6}|[2-5]\\\\d{5}",[6,7,9],[["(\\\\d)(\\\\d{2})(\\\\d{3,4})","$1 $2 $3",["21"],"0$1"],["(\\\\d{2})(\\\\d{2})(\\\\d{2,3})","$1 $2 $3",["[3-5][1-8]1","[3-5][1-8]1[67]"],"0$1"],["(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})","$1/$2 $3 $4",["2"],"0$1"],["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["[689]"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})","$1/$2 $3 $4",["[3-5]"],"0$1"]],"0"],"SL":["232","00","(?:[2378]\\\\d|66|99)\\\\d{6}",[8],[["(\\\\d{2})(\\\\d{6})","$1 $2",["[236-9]"],"(0$1)"]],"0"],"SM":["378","00","(?:0549|[5-7]\\\\d)\\\\d{6}",[8,10],[["(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["[5-7]"]],["(\\\\d{4})(\\\\d{6})","$1 $2",["0"]]],0,0,"([89]\\\\d{5})$","0549$1"],"SN":["221","00","(?:[378]\\\\d{4}|93330)\\\\d{4}",[9],[["(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["8"]],["(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["[379]"]]]],"SO":["252","00","[346-9]\\\\d{8}|[12679]\\\\d{7}|[1-5]\\\\d{6}|[1348]\\\\d{5}",[6,7,8,9],[["(\\\\d{2})(\\\\d{4})","$1 $2",["8[125]"]],["(\\\\d{6})","$1",["[134]"]],["(\\\\d)(\\\\d{6})","$1 $2",["[15]|2[0-79]|3[0-46-8]|4[0-7]"]],["(\\\\d)(\\\\d{7})","$1 $2",["24|[67]"]],["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["[3478]|64|90"]],["(\\\\d{2})(\\\\d{5,7})","$1 $2",["1|28|6[1-35-9]|9[2-9]"]]],"0"],"SR":["597","00","(?:[2-5]|68|[78]\\\\d)\\\\d{5}",[6,7],[["(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1-$2-$3",["56"]],["(\\\\d{3})(\\\\d{3})","$1-$2",["[2-5]"]],["(\\\\d{3})(\\\\d{4})","$1-$2",["[6-8]"]]]],"SS":["211","00","[19]\\\\d{8}",[9],[["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["[19]"],"0$1"]],"0"],"ST":["239","00","(?:22|9\\\\d)\\\\d{5}",[7],[["(\\\\d{3})(\\\\d{4})","$1 $2",["[29]"]]]],"SV":["503","00","[267]\\\\d{7}|[89]00\\\\d{4}(?:\\\\d{4})?",[7,8,11],[["(\\\\d{3})(\\\\d{4})","$1 $2",["[89]"]],["(\\\\d{4})(\\\\d{4})","$1 $2",["[267]"]],["(\\\\d{3})(\\\\d{4})(\\\\d{4})","$1 $2 $3",["[89]"]]]],"SX":["1","011","7215\\\\d{6}|(?:[58]\\\\d\\\\d|900)\\\\d{7}",[10],0,"1",0,"1|(5\\\\d{6})$","721$1",0,"721"],"SY":["963","00","[1-39]\\\\d{8}|[1-5]\\\\d{7}",[8,9],[["(\\\\d{2})(\\\\d{3})(\\\\d{3,4})","$1 $2 $3",["[1-5]"],"0$1",1],["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["9"],"0$1",1]],"0"],"SZ":["268","00","0800\\\\d{4}|(?:[237]\\\\d|900)\\\\d{6}",[8,9],[["(\\\\d{4})(\\\\d{4})","$1 $2",["[0237]"]],["(\\\\d{5})(\\\\d{4})","$1 $2",["9"]]]],"TA":["290","00","8\\\\d{3}",[4],0,0,0,0,0,0,"8"],"TC":["1","011","(?:[58]\\\\d\\\\d|649|900)\\\\d{7}",[10],0,"1",0,"1|([2-479]\\\\d{6})$","649$1",0,"649"],"TD":["235","00|16","(?:22|[69]\\\\d|77)\\\\d{6}",[8],[["(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["[2679]"]]],0,0,0,0,0,0,0,"00"],"TG":["228","00","[279]\\\\d{7}",[8],[["(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["[279]"]]]],"TH":["66","00[1-9]","1\\\\d{8,9}|(?:[2-57]|[689]\\\\d)\\\\d{7}",[8,9,10],[["(\\\\d)(\\\\d{3})(\\\\d{4})","$1 $2 $3",["2"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{3,4})","$1 $2 $3",["14|[3-9]"],"0$1"],["(\\\\d{4})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["1"]]],"0"],"TJ":["992","810","(?:00|11|[3-579]\\\\d|88)\\\\d{7}",[9],[["(\\\\d{6})(\\\\d)(\\\\d{2})","$1 $2 $3",["331","3317"],0,1],["(\\\\d{3})(\\\\d{2})(\\\\d{4})","$1 $2 $3",["[34]7|91[78]"],0,1],["(\\\\d{4})(\\\\d)(\\\\d{4})","$1 $2 $3",["3"],0,1],["(\\\\d{2})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["[0457-9]|11"],0,1]],"8",0,0,0,0,0,0,"8~10"],"TK":["690","00","[2-47]\\\\d{3,6}",[4,5,6,7]],"TL":["670","00","7\\\\d{7}|(?:[2-47]\\\\d|[89]0)\\\\d{5}",[7,8],[["(\\\\d{3})(\\\\d{4})","$1 $2",["[2-489]|70"]],["(\\\\d{4})(\\\\d{4})","$1 $2",["7"]]]],"TM":["993","810","[1-6]\\\\d{7}",[8],[["(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2-$3-$4",["12"],"(8 $1)"],["(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})","$1 $2-$3-$4",["[1-5]"],"(8 $1)"],["(\\\\d{2})(\\\\d{6})","$1 $2",["6"],"8 $1"]],"8",0,0,0,0,0,0,"8~10"],"TN":["216","00","[2-57-9]\\\\d{7}",[8],[["(\\\\d{2})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["[2-57-9]"]]]],"TO":["676","00","(?:0800|[5-8]\\\\d{3})\\\\d{3}|[2-8]\\\\d{4}",[5,7],[["(\\\\d{2})(\\\\d{3})","$1-$2",["[2-4]|50|6[09]|7[0-24-69]|8[05]"]],["(\\\\d{4})(\\\\d{3})","$1 $2",["0"]],["(\\\\d{3})(\\\\d{4})","$1 $2",["[5-8]"]]]],"TR":["90","00","(?:4|8\\\\d{5})\\\\d{6}|(?:[2-58]\\\\d\\\\d|900)\\\\d{7}",[7,10,12],[["(\\\\d{3})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["512|8[0589]|90"],"0$1",1],["(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["5(?:[0-59]|61)","5(?:[0-59]|616)","5(?:[0-59]|6161)"],"0$1",1],["(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["[24][1-8]|3[1-9]"],"(0$1)",1],["(\\\\d{3})(\\\\d{3})(\\\\d{6})","$1 $2 $3",["80"],"0$1",1]],"0"],"TT":["1","011","(?:[58]\\\\d\\\\d|900)\\\\d{7}",[10],0,"1",0,"1|([2-46-8]\\\\d{6})$","868$1",0,"868"],"TV":["688","00","(?:2|7\\\\d\\\\d|90)\\\\d{4}",[5,6,7],[["(\\\\d{2})(\\\\d{3})","$1 $2",["2"]],["(\\\\d{2})(\\\\d{4})","$1 $2",["90"]],["(\\\\d{2})(\\\\d{5})","$1 $2",["7"]]]],"TW":["886","0(?:0[25-79]|19)","[2-689]\\\\d{8}|7\\\\d{9,10}|[2-8]\\\\d{7}|2\\\\d{6}",[7,8,9,10,11],[["(\\\\d{2})(\\\\d)(\\\\d{4})","$1 $2 $3",["202"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{3,4})","$1 $2 $3",["[258]0"],"0$1"],["(\\\\d)(\\\\d{3,4})(\\\\d{4})","$1 $2 $3",["[23568]|4(?:0[02-48]|[1-47-9])|7[1-9]","[23568]|4(?:0[2-48]|[1-47-9])|(?:400|7)[1-9]"],"0$1"],["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["[49]"],"0$1"],["(\\\\d{2})(\\\\d{4})(\\\\d{4,5})","$1 $2 $3",["7"],"0$1"]],"0",0,0,0,0,0,0,0,"#"],"TZ":["255","00[056]","(?:[26-8]\\\\d|41|90)\\\\d{7}",[9],[["(\\\\d{3})(\\\\d{2})(\\\\d{4})","$1 $2 $3",["[89]"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["[24]"],"0$1"],["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["[67]"],"0$1"]],"0"],"UA":["380","00","[89]\\\\d{9}|[3-9]\\\\d{8}",[9,10],[["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["6[12][29]|(?:3[1-8]|4[136-8]|5[12457]|6[49])2|(?:56|65)[24]","6[12][29]|(?:35|4[1378]|5[12457]|6[49])2|(?:56|65)[24]|(?:3[1-46-8]|46)2[013-9]"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["4[45][0-5]|5(?:0|6[37])|6(?:[12][018]|[36-8])|7|89|9[1-9]|(?:48|57)[0137-9]","4[45][0-5]|5(?:0|6(?:3[14-7]|7))|6(?:[12][018]|[36-8])|7|89|9[1-9]|(?:48|57)[0137-9]"],"0$1"],["(\\\\d{4})(\\\\d{5})","$1 $2",["[3-6]"],"0$1"],["(\\\\d{3})(\\\\d{3})(\\\\d{3,4})","$1 $2 $3",["[89]"],"0$1"]],"0",0,0,0,0,0,0,"0~0"],"UG":["256","00[057]","800\\\\d{6}|(?:[29]0|[347]\\\\d)\\\\d{7}",[9],[["(\\\\d{4})(\\\\d{5})","$1 $2",["202","2024"],"0$1"],["(\\\\d{3})(\\\\d{6})","$1 $2",["[27-9]|4(?:6[45]|[7-9])"],"0$1"],["(\\\\d{2})(\\\\d{7})","$1 $2",["[34]"],"0$1"]],"0"],"US":["1","011","[2-9]\\\\d{9}",[10],[["(\\\\d{3})(\\\\d{3})(\\\\d{4})","($1) $2-$3",["[2-9]"],0,1,"$1-$2-$3"]],"1",0,0,0,0,0,[["(?:2(?:0[1-35-9]|1[02-9]|2[03-589]|3[149]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-57-9]|1[02-9]|2[0135]|3[0-24679]|4[167]|5[12]|6[014]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[0235]|58|6[39]|7[0589]|8[04])|5(?:0[1-57-9]|1[0235-8]|20|3[0149]|4[01]|5[19]|6[1-47]|7[013-5]|8[056])|6(?:0[1-35-9]|1[024-9]|2[03689]|[34][016]|5[0179]|6[0-279]|78|8[0-29])|7(?:0[1-46-8]|1[2-9]|2[04-7]|3[1247]|4[037]|5[47]|6[02359]|7[02-59]|8[156])|8(?:0[1-68]|1[02-8]|2[08]|3[0-28]|4[3578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[0179]|5[12469]|7[0-389]|8[04-69]))[2-9]\\\\d{6}"],[""],["8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}"],["900[2-9]\\\\d{6}"],["5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}"],0,["710[2-9]\\\\d{6}"]]],"UY":["598","0(?:0|1[3-9]\\\\d)","(?:[249]\\\\d\\\\d|80)\\\\d{5}|9\\\\d{6}",[7,8],[["(\\\\d{3})(\\\\d{4})","$1 $2",["8|90"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["9"],"0$1"],["(\\\\d{4})(\\\\d{4})","$1 $2",["[24]"]]],"0",0,0,0,0,0,0,"00"," int. "],"UZ":["998","810","[679]\\\\d{8}",[9],[["(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["[679]"],"8 $1"]],"8",0,0,0,0,0,0,"8~10"],"VA":["39","00","0\\\\d{5,10}|3[0-8]\\\\d{7,10}|55\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?|(?:1\\\\d|39)\\\\d{7,8}",[6,7,8,9,10,11],0,0,0,0,0,0,"06698"],"VC":["1","011","(?:[58]\\\\d\\\\d|784|900)\\\\d{7}",[10],0,"1",0,"1|([2-7]\\\\d{6})$","784$1",0,"784"],"VE":["58","00","[68]00\\\\d{7}|(?:[24]\\\\d|[59]0)\\\\d{8}",[10],[["(\\\\d{3})(\\\\d{7})","$1-$2",["[24-689]"],"0$1"]],"0"],"VG":["1","011","(?:284|[58]\\\\d\\\\d|900)\\\\d{7}",[10],0,"1",0,"1|([2-578]\\\\d{6})$","284$1",0,"284"],"VI":["1","011","[58]\\\\d{9}|(?:34|90)0\\\\d{7}",[10],0,"1",0,"1|([2-9]\\\\d{6})$","340$1",0,"340"],"VN":["84","00","[12]\\\\d{9}|[135-9]\\\\d{8}|[16]\\\\d{7}|[16-8]\\\\d{6}",[7,8,9,10],[["(\\\\d{2})(\\\\d{5})","$1 $2",["80"],"0$1",1],["(\\\\d{4})(\\\\d{4,6})","$1 $2",["1"],0,1],["(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4",["[69]"],"0$1",1],["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["[3578]"],"0$1",1],["(\\\\d{2})(\\\\d{4})(\\\\d{4})","$1 $2 $3",["2[48]"],"0$1",1],["(\\\\d{3})(\\\\d{4})(\\\\d{3})","$1 $2 $3",["2"],"0$1",1]],"0"],"VU":["678","00","(?:[23]\\\\d|[48]8)\\\\d{3}|(?:[57]\\\\d|90)\\\\d{5}",[5,7],[["(\\\\d{3})(\\\\d{4})","$1 $2",["[579]"]]]],"WF":["681","00","(?:[45]0|68|72|8\\\\d)\\\\d{4}",[6],[["(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3",["[4-8]"]]]],"WS":["685","0","(?:[2-6]|8\\\\d{5})\\\\d{4}|[78]\\\\d{6}|[68]\\\\d{5}",[5,6,7,10],[["(\\\\d{5})","$1",["[2-5]|6[1-9]"]],["(\\\\d{3})(\\\\d{3,7})","$1 $2",["[68]"]],["(\\\\d{2})(\\\\d{5})","$1 $2",["7"]]]],"XK":["383","00","[23]\\\\d{7,8}|(?:4\\\\d\\\\d|[89]00)\\\\d{5}",[8,9],[["(\\\\d{3})(\\\\d{5})","$1 $2",["[89]"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["[2-4]"],"0$1"],["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["[23]"],"0$1"]],"0"],"YE":["967","00","(?:1|7\\\\d)\\\\d{7}|[1-7]\\\\d{6}",[7,8,9],[["(\\\\d)(\\\\d{3})(\\\\d{3,4})","$1 $2 $3",["[1-6]|7[24-68]"],"0$1"],["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["7"],"0$1"]],"0"],"YT":["262","00","80\\\\d{7}|(?:26|63)9\\\\d{6}",[9],0,"0",0,0,0,0,"269|63"],"ZA":["27","00","[1-9]\\\\d{8}|8\\\\d{4,7}",[5,6,7,8,9],[["(\\\\d{2})(\\\\d{3,4})","$1 $2",["8[1-4]"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{2,3})","$1 $2 $3",["8[1-4]"],"0$1"],["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["860"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["[1-9]"],"0$1"]],"0"],"ZM":["260","00","(?:63|80)0\\\\d{6}|(?:21|[79]\\\\d)\\\\d{7}",[9],[["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["[28]"],"0$1"],["(\\\\d{2})(\\\\d{7})","$1 $2",["[79]"],"0$1"]],"0"],"ZW":["263","00","2(?:[0-57-9]\\\\d{6,8}|6[0-24-9]\\\\d{6,7})|[38]\\\\d{9}|[35-8]\\\\d{8}|[3-6]\\\\d{7}|[1-689]\\\\d{6}|[1-3569]\\\\d{5}|[1356]\\\\d{4}",[5,6,7,8,9,10],[["(\\\\d{3})(\\\\d{3,5})","$1 $2",["2(?:0[45]|2[278]|[49]8)|3(?:[09]8|17)|6(?:[29]8|37|75)|[23][78]|(?:33|5[15]|6[68])[78]"],"0$1"],["(\\\\d)(\\\\d{3})(\\\\d{2,4})","$1 $2 $3",["[49]"],"0$1"],["(\\\\d{3})(\\\\d{4})","$1 $2",["80"],"0$1"],["(\\\\d{2})(\\\\d{7})","$1 $2",["24|8[13-59]|(?:2[05-79]|39|5[45]|6[15-8])2","2(?:02[014]|4|[56]20|[79]2)|392|5(?:42|525)|6(?:[16-8]21|52[013])|8[13-59]"],"(0$1)"],["(\\\\d{2})(\\\\d{3})(\\\\d{4})","$1 $2 $3",["7"],"0$1"],["(\\\\d{3})(\\\\d{3})(\\\\d{3,4})","$1 $2 $3",["2(?:1[39]|2[0157]|[378]|[56][14])|3(?:12|29)","2(?:1[39]|2[0157]|[378]|[56][14])|3(?:123|29)"],"0$1"],["(\\\\d{4})(\\\\d{6})","$1 $2",["8"],"0$1"],["(\\\\d{2})(\\\\d{3,5})","$1 $2",["1|2(?:0[0-36-9]|12|29|[56])|3(?:1[0-689]|[24-6])|5(?:[0236-9]|1[2-4])|6(?:[013-59]|7[0-46-9])|(?:33|55|6[68])[0-69]|(?:29|3[09]|62)[0-79]"],"0$1"],["(\\\\d{2})(\\\\d{3})(\\\\d{3,4})","$1 $2 $3",["29[013-9]|39|54"],"0$1"],["(\\\\d{4})(\\\\d{3,5})","$1 $2",["(?:25|54)8","258|5483"],"0$1"]],"0"]},"nonGeographic":{"800":["800",0,"\\\\d{8}",[8],[["(\\\\d{4})(\\\\d{4})","$1 $2"]],0,0,0,0,0,0,[0,0,["\\\\d{8}"]]],"808":["808",0,"\\\\d{8}",[8],[["(\\\\d{4})(\\\\d{4})","$1 $2"]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,0,["\\\\d{8}"]]],"870":["870",0,"[35-7]\\\\d{8}",[9],[["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["[35-7]"]]],0,0,0,0,0,0,[0,["(?:[356]\\\\d|7[6-8])\\\\d{7}"]]],"878":["878",0,"10\\\\d{10}",[12],[["(\\\\d{2})(\\\\d{5})(\\\\d{5})","$1 $2 $3",["1"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,["10\\\\d{10}"]]],"881":["881",0,"[67]\\\\d{8}",[9],[["(\\\\d)(\\\\d{3})(\\\\d{5})","$1 $2 $3",["[67]"]]],0,0,0,0,0,0,[0,["[67]\\\\d{8}"]]],"882":["882",0,"1\\\\d{6,11}|3\\\\d{6}(?:\\\\d{2,5})?",[7,8,9,10,11,12],[["(\\\\d{2})(\\\\d{5})","$1 $2",["16|342"]],["(\\\\d{2})(\\\\d{2})(\\\\d{4})","$1 $2 $3",["1"]],["(\\\\d{2})(\\\\d{4})(\\\\d{3})","$1 $2 $3",["3[23]"]],["(\\\\d{2})(\\\\d{3,4})(\\\\d{4})","$1 $2 $3",["1"]],["(\\\\d{2})(\\\\d{4})(\\\\d{4})","$1 $2 $3",["34[57]"]],["(\\\\d{3})(\\\\d{4})(\\\\d{4})","$1 $2 $3",["34"]],["(\\\\d{2})(\\\\d{4,5})(\\\\d{5})","$1 $2 $3",["[13]"]]],0,0,0,0,0,0,[0,["3(?:37\\\\d\\\\d|42)\\\\d{4}|3(?:2|47|7\\\\d{3})\\\\d{7}",[7,9,10,12]],0,0,0,0,0,0,["1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15-8]|9[0689])\\\\d{4}|6\\\\d{5,10})|3(?:45|9\\\\d{3})\\\\d{7}"]]],"883":["883",0,"51\\\\d{7}(?:\\\\d{3})?",[9,12],[["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3",["510"]],["(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3 $4",["510"]],["(\\\\d{4})(\\\\d{4})(\\\\d{4})","$1 $2 $3",["5"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,["51[013]0\\\\d{8}|5100\\\\d{5}"]]],"888":["888",0,"\\\\d{11}",[11],[["(\\\\d{3})(\\\\d{3})(\\\\d{5})","$1 $2 $3"]],0,0,0,0,0,0,[0,0,0,0,0,0,["\\\\d{11}"]]],"979":["979",0,"\\\\d{9}",[9],[["(\\\\d)(\\\\d{4})(\\\\d{4})","$1 $2 $3"]],0,0,0,0,0,0,[0,0,0,["\\\\d{9}"]]]}}')},function(g,I,e){"use strict";e.d(I,"a",(function(){return C}));var t=e(75);function C(g,I){try{for(var e=g,t=[],C=0,F=0,B=" > ".length,n=void 0;e&&C++<5&&!("html"===(n=Q(e,I))||C>1&&F+t.length*B+n.length>=80);)t.push(n),F+=n.length,e=e.parentNode;return t.reverse().join(" > ")}catch(U){return"<unknown>"}}function Q(g,I){var e,C,Q,F,B,n,U,s=g,i=[];if(!s||!s.tagName)return"";i.push(s.tagName.toLowerCase());var c=(null===(e=I)||void 0===e?void 0:e.length)?I.filter((function(g){return s.getAttribute(g)})).map((function(g){return[g,s.getAttribute(g)]})):null;if(null===(C=c)||void 0===C?void 0:C.length)c.forEach((function(g){i.push("["+g[0]+'="'+g[1]+'"]')}));else if(s.id&&i.push("#"+s.id),(Q=s.className)&&Object(t.k)(Q))for(F=Q.split(/\s+/),U=0;U<F.length;U++)i.push("."+F[U]);var A=["type","name","title","alt"];for(U=0;U<A.length;U++)B=A[U],(n=s.getAttribute(B))&&i.push("["+B+'="'+n+'"]');return i.join("")}},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement(C.default.Fragment,null,C.default.createElement("path",{d:"M18.92 5.01C18.72 4.42 18.16 4 17.5 4h-11c-.66 0-1.21.42-1.42 1.01L3 11v8c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-1h12v1c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-8l-2.08-5.99zM6.85 6h10.29l1.04 3H5.81l1.04-3zM19 16H5v-4.66l.12-.34h13.77l.11.34V16z"}),C.default.createElement("circle",{cx:"7.5",cy:"13.5",r:"1.5"}),C.default.createElement("circle",{cx:"16.5",cy:"13.5",r:"1.5"})),"DriveEtaOutlined");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M13.5 5.5c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zM9.8 8.9L7 23h2.1l1.8-8 2.1 2v6h2v-7.5l-2.1-2 .6-3C14.8 12 16.8 13 19 13v-2c-1.9 0-3.5-1-4.3-2.4l-1-1.6c-.56-.89-1.68-1.25-2.65-.84L6 8.3V13h2V9.6l1.8-.7"}),"DirectionsWalkOutlined");I.default=Q},,function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M20.01 15.38c-1.23 0-2.42-.2-3.53-.56-.35-.12-.74-.03-1.01.24l-1.57 1.97c-2.83-1.35-5.48-3.9-6.89-6.83l1.95-1.66c.27-.28.35-.67.24-1.02-.37-1.11-.56-2.3-.56-3.53 0-.54-.45-.99-.99-.99H4.19C3.65 3 3 3.24 3 3.99 3 13.28 10.73 21 20.01 21c.71 0 .99-.63.99-1.18v-3.45c0-.54-.45-.99-.99-.99z"}),"Call");I.default=Q},function(g,I,e){"use strict";e.d(I,"a",(function(){return S})),e.d(I,"b",(function(){return L}));var t=e(71),C=e.n(t);function Q(){return(Q=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}function F(g,I){g.prototype=Object.create(I.prototype),g.prototype.constructor=g,g.__proto__=I}function B(g,I){return(B=Object.setPrototypeOf||function(g,I){return g.__proto__=I,g})(g,I)}function n(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(r){return!1}}function U(g,I,e){return(U=n()?Reflect.construct:function(g,I,e){var t=[null];t.push.apply(t,I);var C=new(Function.bind.apply(g,t));return e&&B(C,e.prototype),C}).apply(null,arguments)}function s(g,I,e,t){void 0===I&&(I=""),void 0===t&&(t={});var C=document.createElement(g);return I&&(C.className=I),Object.keys(t).forEach((function(g){if("function"==typeof t[g]){var I=0===g.indexOf("on")?g.substr(2).toLowerCase():g;C.addEventListener(I,t[g])}else"html"===g?C.innerHTML=t[g]:"text"===g?C.innerText=t[g]:C.setAttribute(g,t[g])})),e&&e.appendChild(C),C}function i(g){g.preventDefault(),g.stopPropagation()}var c=function(){for(var g=arguments.length,I=new Array(g),e=0;e<g;e++)I[e]=arguments[e];return I.filter(Boolean).join(" ").trim()};function A(g,I){g&&g.classList&&(Array.isArray(I)?I:[I]).forEach((function(I){g.classList.contains(I)||g.classList.add(I)}))}function l(g,I){g&&g.classList&&(Array.isArray(I)?I:[I]).forEach((function(I){g.classList.contains(I)&&g.classList.remove(I)}))}var a,r,o=13,d=40,u=38,y=[o,27,d,u,37,39],b=function(){function g(g){var I=this,e=g.handleSubmit,t=g.searchLabel,C=g.classNames,Q=void 0===C?{}:C;this.hasError=!1,this.container=s("div",c("geosearch",Q.container)),this.form=s("form",["",Q.form].join(" "),this.container,{autocomplete:"none",onClick:i,onDblClick:i,touchStart:i,touchEnd:i}),this.input=s("input",["glass",Q.input].join(" "),this.form,{type:"text",placeholder:t||"search",onInput:this.onInput,onKeyUp:function(g){return I.onKeyUp(g)},onKeyPress:function(g){return I.onKeyPress(g)},onFocus:this.onFocus,onBlur:this.onBlur,onClick:function(){I.input.focus(),I.input.dispatchEvent(new Event("focus"))}}),this.handleSubmit=e}var I=g.prototype;return I.onFocus=function(){A(this.form,"active")},I.onBlur=function(){l(this.form,"active")},I.onSubmit=function(g){try{var I=this;return i(g),l(e=I.container,"error"),A(e,"pending"),Promise.resolve(I.handleSubmit({query:I.input.value})).then((function(){l(I.container,"pending")}))}catch(g){return Promise.reject(g)}var e},I.onInput=function(){this.hasError&&(l(this.container,"error"),this.hasError=!1)},I.onKeyUp=function(g){27===g.keyCode&&(l(this.container,["pending","active"]),this.input.value="",document.body.focus(),document.body.blur())},I.onKeyPress=function(g){g.keyCode===o&&this.onSubmit(g)},I.setQuery=function(g){this.input.value=g},g}(),Z=function(){function g(g){var I=this,e=g.handleClick,t=g.classNames,C=void 0===t?{}:t;this.selected=-1,this.results=[],this.onClick=function(g){if("function"==typeof I.handleClick){var e=g.target;if(e&&I.container.contains(e)&&e.hasAttribute("data-key")){var t=Number(e.getAttribute("data-key"));I.clear(),I.handleClick({result:I.results[t]})}}},this.handleClick=e,this.container=s("div",c("results",C.container)),this.container.addEventListener("click",this.onClick,!0),this.resultItem=s("div",c(C.item))}var I=g.prototype;return I.render=function(g,I){var e=this;void 0===g&&(g=[]),this.clear(),g.forEach((function(g,t){var C=e.resultItem.cloneNode(!0);C.setAttribute("data-key",""+t),C.innerHTML=I({result:g}),e.container.appendChild(C)})),g.length>0&&(A(this.container.parentElement,"open"),A(this.container,"active")),this.results=g},I.select=function(g){return Array.from(this.container.children).forEach((function(I,e){return e===g?A(I,"active"):l(I,"active")})),this.selected=g,this.results[g]},I.count=function(){return this.results?this.results.length:0},I.clear=function(){for(this.selected=-1;this.container.lastChild;)this.container.removeChild(this.container.lastChild);l(this.container.parentElement,"open"),l(this.container,"active")},g}(),m={position:"topleft",style:"button",showMarker:!0,showPopup:!1,popupFormat:function(g){return""+g.result.label},resultFormat:function(g){return""+g.result.label},marker:{icon:C.a&&C.a.Icon?new C.a.Icon.Default:void 0,draggable:!1},maxMarkers:1,maxSuggestions:5,retainZoomLevel:!1,animateZoom:!0,searchLabel:"Enter address",notFoundMessage:"Sorry, that address could not be found.",messageHideDelay:3e3,zoomLevel:18,classNames:{container:"leaflet-bar leaflet-control leaflet-control-geosearch",button:"leaflet-bar-part leaflet-bar-part-single",resetButton:"reset",msgbox:"leaflet-bar message",form:"",input:""},autoComplete:!0,autoCompleteDelay:250,autoClose:!1,keepResult:!1,updateMap:!0},x="Leaflet must be loaded before instantiating the GeoSearch control",R={options:Q({},m),classNames:Q({},m.classNames),initialize:function(g){var I,e,t,F,B=this;if(!C.a)throw new Error(x);if(!g.provider)throw new Error("Provider is missing from options");this.options=Q({},this.options,{},g),this.classNames=Q({},this.classNames,{},g.classNames),this.markers=new C.a.FeatureGroup,this.classNames.container+=" leaflet-geosearch-"+this.options.style,this.searchElement=new b({searchLabel:this.options.searchLabel,classNames:{container:this.classNames.container,form:this.classNames.form,input:this.classNames.input},handleSubmit:function(g){return B.onSubmit(g)}}),this.button=s("a",this.classNames.button,this.searchElement.container,{title:this.options.searchLabel,href:"#",onClick:function(g){return B.onClick(g)}}),C.a.DomEvent.disableClickPropagation(this.button),this.resetButton=s("a",this.classNames.resetButton,this.searchElement.form,{text:"\xd7",href:"#",onClick:function(){return B.clearResults(null,!0)}}),C.a.DomEvent.disableClickPropagation(this.resetButton),this.options.autoComplete&&(this.resultList=new Z({handleClick:function(g){var I=g.result;B.searchElement.input.value=I.label,B.onSubmit({query:I.label,data:I})}}),this.searchElement.form.appendChild(this.resultList.container),this.searchElement.input.addEventListener("keyup",(I=function(g){return B.autoSearch(g)},void 0===(e=this.options.autoCompleteDelay)&&(e=250),void 0===t&&(t=!1),function(){for(var g=arguments.length,C=new Array(g),Q=0;Q<g;Q++)C[Q]=arguments[Q];F&&clearTimeout(F),F=setTimeout((function(){F=null,t||I.apply(void 0,C)}),e),t&&!F&&I.apply(void 0,C)}),!0),this.searchElement.input.addEventListener("keydown",(function(g){return B.selectResult(g)}),!0),this.searchElement.input.addEventListener("keydown",(function(g){return B.clearResults(g,!0)}),!0)),this.searchElement.form.addEventListener("click",(function(g){g.preventDefault()}),!1)},onAdd:function(g){var I=this.options,e=I.showMarker,t=I.style;if(this.map=g,e&&this.markers.addTo(g),"bar"===t){var Q=g.getContainer().querySelector(".leaflet-control-container");this.container=s("div","leaflet-control-geosearch leaflet-geosearch-bar"),this.container.appendChild(this.searchElement.form),Q.appendChild(this.container)}return C.a.DomEvent.disableClickPropagation(this.searchElement.form),this.searchElement.container},onRemove:function(){var g;return null==(g=this.container)||g.remove(),this},onClick:function(g){g.preventDefault(),g.stopPropagation();var I=this.searchElement,e=I.container,t=I.input;e.classList.contains("active")?(l(e,"active"),this.clearResults()):(A(e,"active"),t.focus())},selectResult:function(g){if(-1!==[o,d,u].indexOf(g.keyCode))if(g.preventDefault(),g.keyCode!==o){var I=this.resultList.count()-1;if(!(I<0)){var e=this.resultList.selected,t=g.keyCode===d?e+1:e-1,C=this.resultList.select(t<0?I:t>I?0:t);this.searchElement.input.value=C.label}}else{var Q=this.resultList.select(this.resultList.selected);this.onSubmit({query:this.searchElement.input.value,data:Q})}},clearResults:function(g,I){if(void 0===I&&(I=!1),!g||27===g.keyCode){var e=this.options,t=e.autoComplete;!I&&e.keepResult||(this.searchElement.input.value="",this.markers.clearLayers()),t&&this.resultList.clear()}},autoSearch:function(g){try{var I=this;if(y.indexOf(g.keyCode)>-1)return Promise.resolve();var e=g.target.value,t=I.options.provider,C=function(){if(e.length)return Promise.resolve(t.search({query:e})).then((function(g){g=g.slice(0,I.options.maxSuggestions),I.resultList.render(g,I.options.resultFormat)}));I.resultList.clear()}();return Promise.resolve(C&&C.then?C.then((function(){})):void 0)}catch(g){return Promise.reject(g)}},onSubmit:function(g){try{var I=this;return Promise.resolve(I.options.provider.search(g)).then((function(e){e&&e.length>0&&I.showResult(e[0],g)}))}catch(g){return Promise.reject(g)}},showResult:function(g,I){var e=this.options,t=e.autoClose,C=e.updateMap,Q=this.markers.getLayers();Q.length>=this.options.maxMarkers&&this.markers.removeLayer(Q[0]);var F=this.addMarker(g,I);C&&this.centerMap(g),this.map.fireEvent("geosearch/showlocation",{location:g,marker:F}),t&&this.closeResults()},closeResults:function(){var g=this.searchElement.container;g.classList.contains("active")&&l(g,"active"),this.clearResults()},addMarker:function(g,I){var e=this,t=this.options,Q=t.marker,F=t.showPopup,B=t.popupFormat,n=new C.a.Marker([g.y,g.x],Q),U=g.label;return"function"==typeof B&&(U=B({query:I,result:g})),n.bindPopup(U),this.markers.addLayer(n),F&&n.openPopup(),Q.draggable&&n.on("dragend",(function(g){e.map.fireEvent("geosearch/marker/dragend",{location:n.getLatLng(),event:g})})),n},centerMap:function(g){var I=this.options,e=I.retainZoomLevel,t=I.animateZoom,Q=g.bounds?new C.a.LatLngBounds(g.bounds):new C.a.LatLng(g.y,g.x).toBounds(10),F=Q.isValid()?Q:this.markers.getBounds();!e&&Q.isValid()&&!g.bounds||e||!Q.isValid()?this.map.setView(F.getCenter(),this.getZoom(),{animate:t}):this.map.fitBounds(F,{animate:t})},getZoom:function(){var g=this.options,I=g.zoomLevel;return g.retainZoomLevel?this.map.getZoom():I}};function S(){if(!C.a)throw new Error(x);for(var g=C.a.Control.extend(R),I=arguments.length,e=new Array(I),t=0;t<I;t++)e[t]=arguments[t];return U(g,e)}(r=a||(a={}))[r.SEARCH=0]="SEARCH",r[r.REVERSE=1]="REVERSE";var G=function(){function g(g){void 0===g&&(g={}),this.options=g}var I=g.prototype;return I.getParamString=function(g){void 0===g&&(g={});var I=Q({},this.options.params,{},g);return Object.keys(I).map((function(g){return encodeURIComponent(g)+"="+encodeURIComponent(I[g])})).join("&")},I.getUrl=function(g,I){return g+"?"+this.getParamString(I)},I.search=function(g){try{var I=this,e=I.endpoint({query:g.query,type:a.SEARCH});return Promise.resolve(fetch(e)).then((function(g){return Promise.resolve(g.json()).then((function(g){return I.parse({data:g})}))}))}catch(g){return Promise.reject(g)}},g}(),L=(function(g){function I(){return g.apply(this,arguments)||this}F(I,g);var e=I.prototype;e.endpoint=function(){return"https://places-dsn.algolia.net/1/places/query"},e.findBestMatchLevelIndex=function(g){var I=g.find((function(g){return"full"===g.matchLevel}))||g.find((function(g){return"partial"===g.matchLevel}));return I?g.indexOf(I):0},e.getLabel=function(g){var I,e,t,C;return[null==(I=g.locale_names)?void 0:I.default[this.findBestMatchLevelIndex(g._highlightResult.locale_names.default)],null==(e=g.city)?void 0:e.default[this.findBestMatchLevelIndex(g._highlightResult.city.default)],g.administrative[this.findBestMatchLevelIndex(g._highlightResult.administrative)],null==(t=g.postcode)?void 0:t[this.findBestMatchLevelIndex(g._highlightResult.postcode)],null==(C=g.country)?void 0:C.default].filter(Boolean).join(", ")},e.parse=function(g){var I=this;return g.data.hits.map((function(g){return{x:g._geoloc.lng,y:g._geoloc.lat,label:I.getLabel(g),bounds:null,raw:g}}))},e.search=function(g){var I=g.query;try{var e=this,t="string"==typeof I?{query:I}:I;return Promise.resolve(fetch(e.endpoint(),{method:"POST",body:JSON.stringify(Q({},e.options.params,{},t))})).then((function(g){return Promise.resolve(g.json()).then((function(g){return e.parse({data:g})}))}))}catch(g){return Promise.reject(g)}}}(G),function(g){function I(){var I;return(I=g.apply(this,arguments)||this).searchUrl="https://dev.virtualearth.net/REST/v1/Locations",I}F(I,g);var e=I.prototype;e.endpoint=function(g){var I=g.query,e="string"==typeof I?{q:I}:I;return e.jsonp=g.jsonp,this.getUrl(this.searchUrl,e)},e.parse=function(g){return 0===g.data.resourceSets.length?[]:g.data.resourceSets[0].resources.map((function(g){return{x:g.point.coordinates[1],y:g.point.coordinates[0],label:g.address.formattedAddress,bounds:[[g.bbox[0],g.bbox[1]],[g.bbox[2],g.bbox[3]]],raw:g}}))},e.search=function(g){var I,e,t,C=g.query;try{var Q=this,F="BING_JSONP_CB_"+Date.now();return Promise.resolve((I=Q.endpoint({query:C,jsonp:F}),e=F,t=s("script",null,document.body),t.setAttribute("type","text/javascript"),new Promise((function(g){window[e]=function(I){t.remove(),delete window[e],g(I)},t.setAttribute("src",I)})))).then((function(g){return Q.parse({data:g})}))}catch(g){return Promise.reject(g)}}}(G),function(g){function I(){var I;return(I=g.apply(this,arguments)||this).searchUrl="https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/find",I}F(I,g);var e=I.prototype;e.endpoint=function(g){var I=g.query,e="string"==typeof I?{text:I}:I;return e.f="json",this.getUrl(this.searchUrl,e)},e.parse=function(g){return g.data.locations.map((function(g){return{x:g.feature.geometry.x,y:g.feature.geometry.y,label:g.name,bounds:[[g.extent.ymin,g.extent.xmin],[g.extent.ymax,g.extent.xmax]],raw:g}}))}}(G),function(g){function I(){var I;return(I=g.apply(this,arguments)||this).searchUrl="https://maps.googleapis.com/maps/api/geocode/json",I}F(I,g);var e=I.prototype;e.endpoint=function(g){var I=g.query;return this.getUrl(this.searchUrl,"string"==typeof I?{address:I}:I)},e.parse=function(g){return g.data.results.map((function(g){return{x:g.geometry.location.lng,y:g.geometry.location.lat,label:g.formatted_address,bounds:[[g.geometry.viewport.southwest.lat,g.geometry.viewport.southwest.lng],[g.geometry.viewport.northeast.lat,g.geometry.viewport.northeast.lng]],raw:g}}))}}(G),function(g){function I(){var I;return(I=g.apply(this,arguments)||this).searchUrl="https://geocode.search.hereapi.com/v1/geocode",I}F(I,g);var e=I.prototype;e.endpoint=function(g){var I=g.query;return this.getUrl(this.searchUrl,"string"==typeof I?{q:I}:I)},e.parse=function(g){return g.data.items.map((function(g){return{x:g.position.lng,y:g.position.lat,label:g.address.label,bounds:null,raw:g}}))}}(G),function(g){function I(I){var e;void 0===I&&(I={});var t="https://nominatim.openstreetmap.org";return(e=g.call(this,I)||this).searchUrl=I.searchUrl||t+"/search",e.reverseUrl=I.reverseUrl||t+"/reverse",e}F(I,g);var e=I.prototype;return e.endpoint=function(g){var I=g.query,e=g.type,t="string"==typeof I?{q:I}:I;switch(t.format="json",e){case a.REVERSE:return this.getUrl(this.reverseUrl,t);default:return this.getUrl(this.searchUrl,t)}},e.parse=function(g){return(Array.isArray(g.data)?g.data:[g.data]).map((function(g){return{x:Number(g.lon),y:Number(g.lat),label:g.display_name,bounds:[[parseFloat(g.boundingbox[0]),parseFloat(g.boundingbox[2])],[parseFloat(g.boundingbox[1]),parseFloat(g.boundingbox[3])]],raw:g}}))},I}(G));(function(g){function I(I){return g.call(this,Q({},I,{searchUrl:"https://locationiq.org/v1/search.php",reverseUrl:"https://locationiq.org/v1/reverse.php"}))||this}F(I,g)})(L),function(g){function I(){var I;return(I=g.apply(this,arguments)||this).searchUrl="https://api.opencagedata.com/geocode/v1/json",I}F(I,g);var e=I.prototype;e.endpoint=function(g){var I=g.query,e="string"==typeof I?{q:I}:I;return e.format="json",this.getUrl(this.searchUrl,e)},e.parse=function(g){return g.data.results.map((function(g){return{x:g.geometry.lng,y:g.geometry.lat,label:g.formatted,bounds:[[g.bounds.southwest.lat,g.bounds.southwest.lng],[g.bounds.northeast.lat,g.bounds.northeast.lng]],raw:g}}))},e.search=function(I){try{return Promise.resolve(I.query.length<2?[]:g.prototype.search.call(this,I))}catch(g){return Promise.reject(g)}}}(G),function(g){function I(I){var e;return void 0===I&&(I={}),(e=g.call(this,I)||this).searchUrl=I.searchUrl||"https://a.tiles.mapbox.com/v4/geocode/mapbox.places/",e}F(I,g);var e=I.prototype;e.endpoint=function(g){return this.getUrl(""+this.searchUrl+g.query+".json")},e.parse=function(g){return(Array.isArray(g.data.features)?g.data.features:[]).map((function(g){var I=null;return g.bbox&&(I=[[parseFloat(g.bbox[1]),parseFloat(g.bbox[0])],[parseFloat(g.bbox[3]),parseFloat(g.bbox[2])]]),{x:Number(g.center[0]),y:Number(g.center[1]),label:g.place_name?g.place_name:g.text,bounds:I,raw:g}}))}}(G)},function(g,I,e){var t=e(737),C=e(1430),Q=e(1431),F=e(1438),B=e(1439),n=e(1443),U=Date.prototype.getTime;function s(g,I,e){var A=e||{};return!!(A.strict?Q(g,I):g===I)||(!g||!I||"object"!==typeof g&&"object"!==typeof I?A.strict?Q(g,I):g==I:function(g,I,e){var Q,A;if(typeof g!==typeof I)return!1;if(i(g)||i(I))return!1;if(g.prototype!==I.prototype)return!1;if(C(g)!==C(I))return!1;var l=F(g),a=F(I);if(l!==a)return!1;if(l||a)return g.source===I.source&&B(g)===B(I);if(n(g)&&n(I))return U.call(g)===U.call(I);var r=c(g),o=c(I);if(r!==o)return!1;if(r||o){if(g.length!==I.length)return!1;for(Q=0;Q<g.length;Q++)if(g[Q]!==I[Q])return!1;return!0}if(typeof g!==typeof I)return!1;try{var d=t(g),u=t(I)}catch(y){return!1}if(d.length!==u.length)return!1;for(d.sort(),u.sort(),Q=d.length-1;Q>=0;Q--)if(d[Q]!=u[Q])return!1;for(Q=d.length-1;Q>=0;Q--)if(A=d[Q],!s(g[A],I[A],e))return!1;return!0}(g,I,A))}function i(g){return null===g||void 0===g}function c(g){return!(!g||"object"!==typeof g||"number"!==typeof g.length)&&("function"===typeof g.copy&&"function"===typeof g.slice&&!(g.length>0&&"number"!==typeof g[0]))}g.exports=s},function(g,I,e){var t=e(1447)();g.exports=t;try{regeneratorRuntime=t}catch(C){"object"===typeof globalThis?globalThis.regeneratorRuntime=t:Function("r","regeneratorRuntime = r")(t)}},function(g,I,e){!function(I,t){var C;g.exports=(C=e(1501),function(g){var I=C,e=I.lib,t=e.WordArray,Q=e.Hasher,F=I.algo,B=[];!function(){for(var I=0;I<64;I++)B[I]=4294967296*g.abs(g.sin(I+1))|0}();var n=F.MD5=Q.extend({_doReset:function(){this._hash=new t.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(g,I){for(var e=0;e<16;e++){var t=I+e,C=g[t];g[t]=16711935&(C<<8|C>>>24)|4278255360&(C<<24|C>>>8)}var Q=this._hash.words,F=g[I+0],n=g[I+1],A=g[I+2],l=g[I+3],a=g[I+4],r=g[I+5],o=g[I+6],d=g[I+7],u=g[I+8],y=g[I+9],b=g[I+10],Z=g[I+11],m=g[I+12],x=g[I+13],R=g[I+14],S=g[I+15],G=Q[0],L=Q[1],V=Q[2],h=Q[3];G=U(G,L,V,h,F,7,B[0]),h=U(h,G,L,V,n,12,B[1]),V=U(V,h,G,L,A,17,B[2]),L=U(L,V,h,G,l,22,B[3]),G=U(G,L,V,h,a,7,B[4]),h=U(h,G,L,V,r,12,B[5]),V=U(V,h,G,L,o,17,B[6]),L=U(L,V,h,G,d,22,B[7]),G=U(G,L,V,h,u,7,B[8]),h=U(h,G,L,V,y,12,B[9]),V=U(V,h,G,L,b,17,B[10]),L=U(L,V,h,G,Z,22,B[11]),G=U(G,L,V,h,m,7,B[12]),h=U(h,G,L,V,x,12,B[13]),V=U(V,h,G,L,R,17,B[14]),G=s(G,L=U(L,V,h,G,S,22,B[15]),V,h,n,5,B[16]),h=s(h,G,L,V,o,9,B[17]),V=s(V,h,G,L,Z,14,B[18]),L=s(L,V,h,G,F,20,B[19]),G=s(G,L,V,h,r,5,B[20]),h=s(h,G,L,V,b,9,B[21]),V=s(V,h,G,L,S,14,B[22]),L=s(L,V,h,G,a,20,B[23]),G=s(G,L,V,h,y,5,B[24]),h=s(h,G,L,V,R,9,B[25]),V=s(V,h,G,L,l,14,B[26]),L=s(L,V,h,G,u,20,B[27]),G=s(G,L,V,h,x,5,B[28]),h=s(h,G,L,V,A,9,B[29]),V=s(V,h,G,L,d,14,B[30]),G=i(G,L=s(L,V,h,G,m,20,B[31]),V,h,r,4,B[32]),h=i(h,G,L,V,u,11,B[33]),V=i(V,h,G,L,Z,16,B[34]),L=i(L,V,h,G,R,23,B[35]),G=i(G,L,V,h,n,4,B[36]),h=i(h,G,L,V,a,11,B[37]),V=i(V,h,G,L,d,16,B[38]),L=i(L,V,h,G,b,23,B[39]),G=i(G,L,V,h,x,4,B[40]),h=i(h,G,L,V,F,11,B[41]),V=i(V,h,G,L,l,16,B[42]),L=i(L,V,h,G,o,23,B[43]),G=i(G,L,V,h,y,4,B[44]),h=i(h,G,L,V,m,11,B[45]),V=i(V,h,G,L,S,16,B[46]),G=c(G,L=i(L,V,h,G,A,23,B[47]),V,h,F,6,B[48]),h=c(h,G,L,V,d,10,B[49]),V=c(V,h,G,L,R,15,B[50]),L=c(L,V,h,G,r,21,B[51]),G=c(G,L,V,h,m,6,B[52]),h=c(h,G,L,V,l,10,B[53]),V=c(V,h,G,L,b,15,B[54]),L=c(L,V,h,G,n,21,B[55]),G=c(G,L,V,h,u,6,B[56]),h=c(h,G,L,V,S,10,B[57]),V=c(V,h,G,L,o,15,B[58]),L=c(L,V,h,G,x,21,B[59]),G=c(G,L,V,h,a,6,B[60]),h=c(h,G,L,V,Z,10,B[61]),V=c(V,h,G,L,A,15,B[62]),L=c(L,V,h,G,y,21,B[63]),Q[0]=Q[0]+G|0,Q[1]=Q[1]+L|0,Q[2]=Q[2]+V|0,Q[3]=Q[3]+h|0},_doFinalize:function(){var I=this._data,e=I.words,t=8*this._nDataBytes,C=8*I.sigBytes;e[C>>>5]|=128<<24-C%32;var Q=g.floor(t/4294967296),F=t;e[15+(C+64>>>9<<4)]=16711935&(Q<<8|Q>>>24)|4278255360&(Q<<24|Q>>>8),e[14+(C+64>>>9<<4)]=16711935&(F<<8|F>>>24)|4278255360&(F<<24|F>>>8),I.sigBytes=4*(e.length+1),this._process();for(var B=this._hash,n=B.words,U=0;U<4;U++){var s=n[U];n[U]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8)}return B},clone:function(){var g=Q.clone.call(this);return g._hash=this._hash.clone(),g}});function U(g,I,e,t,C,Q,F){var B=g+(I&e|~I&t)+C+F;return(B<<Q|B>>>32-Q)+I}function s(g,I,e,t,C,Q,F){var B=g+(I&t|e&~t)+C+F;return(B<<Q|B>>>32-Q)+I}function i(g,I,e,t,C,Q,F){var B=g+(I^e^t)+C+F;return(B<<Q|B>>>32-Q)+I}function c(g,I,e,t,C,Q,F){var B=g+(e^(I|~t))+C+F;return(B<<Q|B>>>32-Q)+I}I.MD5=Q._createHelper(n),I.HmacMD5=Q._createHmacHelper(n)}(Math),C.MD5)}()},function(g,I){function e(g,I,e,t,C,Q,F){try{var B=g[Q](F),n=B.value}catch(U){return void e(U)}B.done?I(n):Promise.resolve(n).then(t,C)}g.exports=function(g){return function(){var I=this,t=arguments;return new Promise((function(C,Q){var F=g.apply(I,t);function B(g){e(F,C,Q,B,n,"next",g)}function n(g){e(F,C,Q,B,n,"throw",g)}B(void 0)}))}},g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I,e){"use strict";e.d(I,"b",(function(){return Q})),e.d(I,"a",(function(){return F})),e.d(I,"d",(function(){return B})),e.d(I,"e",(function(){return n})),e.d(I,"c",(function(){return U}));var t=e(66),C=e(108);function Q(){if(!("fetch"in Object(C.e)()))return!1;try{return new Headers,new Request(""),new Response,!0}catch(g){return!1}}function F(g){return g&&/^function fetch\(\)\s+\{\s+\[native code\]\s+\}$/.test(g.toString())}function B(){if(!Q())return!1;var g=Object(C.e)();if(F(g.fetch))return!0;var I=!1,e=g.document;if(e&&"function"===typeof e.createElement)try{var B=e.createElement("iframe");B.hidden=!0,e.head.appendChild(B),B.contentWindow&&B.contentWindow.fetch&&(I=F(B.contentWindow.fetch)),e.head.removeChild(B)}catch(n){t.a.warn("Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ",n)}return I}function n(){if(!Q())return!1;try{return new Request("_",{referrerPolicy:"origin"}),!0}catch(g){return!1}}function U(){var g=Object(C.e)(),I=g.chrome,e=I&&I.app&&I.app.runtime,t="history"in g&&!!g.history.pushState&&!!g.history.replaceState;return!e&&t}},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(48),F=e(0),B=(e(4),e(14)),n=e(21),U=e(30),s=e(600),i=e(926),c=e(437),A=e(87),l=e(321),a={enter:A.b.enteringScreen,exit:A.b.leavingScreen},r=F.forwardRef((function(g,I){var e=g.BackdropProps,Q=g.children,n=g.classes,A=g.className,r=g.disableBackdropClick,o=void 0!==r&&r,d=g.disableEscapeKeyDown,u=void 0!==d&&d,y=g.fullScreen,b=void 0!==y&&y,Z=g.fullWidth,m=void 0!==Z&&Z,x=g.maxWidth,R=void 0===x?"sm":x,S=g.onBackdropClick,G=g.onClose,L=g.onEnter,V=g.onEntered,h=g.onEntering,D=g.onEscapeKeyDown,p=g.onExit,E=g.onExited,N=g.onExiting,W=g.open,f=g.PaperComponent,X=void 0===f?l.a:f,J=g.PaperProps,v=void 0===J?{}:J,k=g.scroll,H=void 0===k?"paper":k,M=g.TransitionComponent,Y=void 0===M?c.a:M,w=g.transitionDuration,T=void 0===w?a:w,z=g.TransitionProps,O=g["aria-describedby"],K=g["aria-labelledby"],j=Object(C.a)(g,["BackdropProps","children","classes","className","disableBackdropClick","disableEscapeKeyDown","fullScreen","fullWidth","maxWidth","onBackdropClick","onClose","onEnter","onEntered","onEntering","onEscapeKeyDown","onExit","onExited","onExiting","open","PaperComponent","PaperProps","scroll","TransitionComponent","transitionDuration","TransitionProps","aria-describedby","aria-labelledby"]),P=F.useRef();return F.createElement(s.a,Object(t.a)({className:Object(B.default)(n.root,A),BackdropComponent:i.a,BackdropProps:Object(t.a)({transitionDuration:T},e),closeAfterTransition:!0,disableBackdropClick:o,disableEscapeKeyDown:u,onEscapeKeyDown:D,onClose:G,open:W,ref:I},j),F.createElement(Y,Object(t.a)({appear:!0,in:W,timeout:T,onEnter:L,onEntering:h,onEntered:V,onExit:p,onExiting:N,onExited:E,role:"none presentation"},z),F.createElement("div",{className:Object(B.default)(n.container,n["scroll".concat(Object(U.a)(H))]),onMouseUp:function(g){g.target===g.currentTarget&&g.target===P.current&&(P.current=null,S&&S(g),!o&&G&&G(g,"backdropClick"))},onMouseDown:function(g){P.current=g.target}},F.createElement(X,Object(t.a)({elevation:24,role:"dialog","aria-describedby":O,"aria-labelledby":K},v,{className:Object(B.default)(n.paper,n["paperScroll".concat(Object(U.a)(H))],n["paperWidth".concat(Object(U.a)(String(R)))],v.className,b&&n.paperFullScreen,m&&n.paperFullWidth)}),Q))))}));I.a=Object(n.a)((function(g){return{root:{"@media print":{position:"absolute !important"}},scrollPaper:{display:"flex",justifyContent:"center",alignItems:"center"},scrollBody:{overflowY:"auto",overflowX:"hidden",textAlign:"center","&:after":{content:'""',display:"inline-block",verticalAlign:"middle",height:"100%",width:"0"}},container:{height:"100%","@media print":{height:"auto"},outline:0},paper:{margin:32,position:"relative",overflowY:"auto","@media print":{overflowY:"visible",boxShadow:"none"}},paperScrollPaper:{display:"flex",flexDirection:"column",maxHeight:"calc(100% - 64px)"},paperScrollBody:{display:"inline-block",verticalAlign:"middle",textAlign:"left"},paperWidthFalse:{maxWidth:"calc(100% - 64px)"},paperWidthXs:{maxWidth:Math.max(g.breakpoints.values.xs,444),"&$paperScrollBody":Object(Q.a)({},g.breakpoints.down(Math.max(g.breakpoints.values.xs,444)+64),{maxWidth:"calc(100% - 64px)"})},paperWidthSm:{maxWidth:g.breakpoints.values.sm,"&$paperScrollBody":Object(Q.a)({},g.breakpoints.down(g.breakpoints.values.sm+64),{maxWidth:"calc(100% - 64px)"})},paperWidthMd:{maxWidth:g.breakpoints.values.md,"&$paperScrollBody":Object(Q.a)({},g.breakpoints.down(g.breakpoints.values.md+64),{maxWidth:"calc(100% - 64px)"})},paperWidthLg:{maxWidth:g.breakpoints.values.lg,"&$paperScrollBody":Object(Q.a)({},g.breakpoints.down(g.breakpoints.values.lg+64),{maxWidth:"calc(100% - 64px)"})},paperWidthXl:{maxWidth:g.breakpoints.values.xl,"&$paperScrollBody":Object(Q.a)({},g.breakpoints.down(g.breakpoints.values.xl+64),{maxWidth:"calc(100% - 64px)"})},paperFullWidth:{width:"calc(100% - 64px)"},paperFullScreen:{margin:0,width:"100%",maxWidth:"100%",height:"100%",maxHeight:"none",borderRadius:0,"&$paperScrollBody":{margin:0,maxWidth:"100%"}}}}),{name:"MuiDialog"})(r)},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(4),e(14)),B=e(21),n=e(248),U=Q.forwardRef((function(g,I){var e=g.children,B=g.classes,U=g.className,s=g.disableTypography,i=void 0!==s&&s,c=Object(C.a)(g,["children","classes","className","disableTypography"]);return Q.createElement("div",Object(t.a)({className:Object(F.default)(B.root,U),ref:I},c),i?e:Q.createElement(n.a,{component:"h2",variant:"h6"},e))}));I.a=Object(B.a)({root:{margin:0,padding:"16px 24px",flex:"0 0 auto"}},{name:"MuiDialogTitle"})(U)},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(4),e(14)),B=e(21),n=Q.forwardRef((function(g,I){var e=g.classes,B=g.className,n=g.dividers,U=void 0!==n&&n,s=Object(C.a)(g,["classes","className","dividers"]);return Q.createElement("div",Object(t.a)({className:Object(F.default)(e.root,B,U&&e.dividers),ref:I},s))}));I.a=Object(B.a)((function(g){return{root:{flex:"1 1 auto",WebkitOverflowScrolling:"touch",overflowY:"auto",padding:"8px 24px","&:first-child":{paddingTop:20}},dividers:{padding:"16px 24px",borderTop:"1px solid ".concat(g.palette.divider),borderBottom:"1px solid ".concat(g.palette.divider)}}}),{name:"MuiDialogContent"})(n)},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(4),e(14)),B=e(21),n=Q.forwardRef((function(g,I){var e=g.disableSpacing,B=void 0!==e&&e,n=g.classes,U=g.className,s=Object(C.a)(g,["disableSpacing","classes","className"]);return Q.createElement("div",Object(t.a)({className:Object(F.default)(n.root,U,!B&&n.spacing),ref:I},s))}));I.a=Object(B.a)({root:{display:"flex",alignItems:"center",padding:8,justifyContent:"flex-end",flex:"0 0 auto"},spacing:{"& > :not(:first-child)":{marginLeft:8}}},{name:"MuiDialogActions"})(n)},function(g,I,e){"use strict";var t=e(5),C=e(0),Q=(e(4),e(21)),F=e(248),B=C.forwardRef((function(g,I){return C.createElement(F.a,Object(t.a)({component:"p",variant:"body1",color:"textSecondary",ref:I},g))}));I.a=Object(Q.a)({root:{marginBottom:12}},{name:"MuiDialogContentText"})(B)},function(g,I,e){"use strict";var t=e(5),C=e(99),Q=e(16),F=e(0),B=e(14),n=(e(4),e(473)),U=e(21),s=e(87),i=e(120),c=e(77),A=e(49),l=F.forwardRef((function(g,I){var e=g.children,U=g.classes,l=g.className,a=g.collapsedHeight,r=void 0===a?"0px":a,o=g.component,d=void 0===o?"div":o,u=g.disableStrictModeCompat,y=void 0!==u&&u,b=g.in,Z=g.onEnter,m=g.onEntered,x=g.onEntering,R=g.onExit,S=g.onExited,G=g.onExiting,L=g.style,V=g.timeout,h=void 0===V?s.b.standard:V,D=g.TransitionComponent,p=void 0===D?n.a:D,E=Object(Q.a)(g,["children","classes","className","collapsedHeight","component","disableStrictModeCompat","in","onEnter","onEntered","onEntering","onExit","onExited","onExiting","style","timeout","TransitionComponent"]),N=Object(c.a)(),W=F.useRef(),f=F.useRef(null),X=F.useRef(),J="number"===typeof r?"".concat(r,"px"):r;F.useEffect((function(){return function(){clearTimeout(W.current)}}),[]);var v=N.unstable_strictMode&&!y,k=F.useRef(null),H=Object(A.a)(I,v?k:void 0),M=function(g){return function(I,e){if(g){var t=v?[k.current,I]:[I,e],Q=Object(C.a)(t,2),F=Q[0],B=Q[1];void 0===B?g(F):g(F,B)}}},Y=M((function(g,I){g.style.height=J,Z&&Z(g,I)})),w=M((function(g,I){var e=f.current?f.current.clientHeight:0,t=Object(i.a)({style:L,timeout:h},{mode:"enter"}).duration;if("auto"===h){var C=N.transitions.getAutoHeightDuration(e);g.style.transitionDuration="".concat(C,"ms"),X.current=C}else g.style.transitionDuration="string"===typeof t?t:"".concat(t,"ms");g.style.height="".concat(e,"px"),x&&x(g,I)})),T=M((function(g,I){g.style.height="auto",m&&m(g,I)})),z=M((function(g){var I=f.current?f.current.clientHeight:0;g.style.height="".concat(I,"px"),R&&R(g)})),O=M(S),K=M((function(g){var I=f.current?f.current.clientHeight:0,e=Object(i.a)({style:L,timeout:h},{mode:"exit"}).duration;if("auto"===h){var t=N.transitions.getAutoHeightDuration(I);g.style.transitionDuration="".concat(t,"ms"),X.current=t}else g.style.transitionDuration="string"===typeof e?e:"".concat(e,"ms");g.style.height=J,G&&G(g)}));return F.createElement(p,Object(t.a)({in:b,onEnter:Y,onEntered:T,onEntering:w,onExit:z,onExited:O,onExiting:K,addEndListener:function(g,I){var e=v?g:I;"auto"===h&&(W.current=setTimeout(e,X.current||0))},nodeRef:v?k:void 0,timeout:"auto"===h?null:h},E),(function(g,I){return F.createElement(d,Object(t.a)({className:Object(B.default)(U.container,l,{entered:U.entered,exited:!b&&"0px"===J&&U.hidden}[g]),style:Object(t.a)({minHeight:J},L),ref:H},I),F.createElement("div",{className:U.wrapper,ref:f},F.createElement("div",{className:U.wrapperInner},e)))}))}));l.muiSupportAuto=!0,I.a=Object(U.a)((function(g){return{container:{height:0,overflow:"hidden",transition:g.transitions.create("height")},entered:{height:"auto",overflow:"visible"},hidden:{visibility:"hidden"},wrapper:{display:"flex"},wrapperInner:{width:"100%"}}}),{name:"MuiCollapse"})(l)},function(g,I,e){"use strict";e.d(I,"a",(function(){return Z}));var t=e(16),C=e(5),Q=e(0),F=e.n(Q),B=e(112),n=e(1727),U={set:function(g,I,e,t){var C=g.get(I);C||(C=new Map,g.set(I,C)),C.set(e,t)},get:function(g,I,e){var t=g.get(I);return t?t.get(e):void 0},delete:function(g,I,e){g.get(I).delete(e)}},s=e(470),i=e(350),c=-1e9;function A(){return c+=1}e(181);var l=e(556);function a(g){var I="function"===typeof g;return{create:function(e,t){var Q;try{Q=I?g(e):g}catch(n){throw n}if(!t||!e.overrides||!e.overrides[t])return Q;var F=e.overrides[t],B=Object(C.a)({},Q);return Object.keys(F).forEach((function(g){B[g]=Object(l.a)(B[g],F[g])})),B},options:{}}}var r={};function o(g,I,e){var t=g.state;if(g.stylesOptions.disableGeneration)return I||{};t.cacheClasses||(t.cacheClasses={value:null,lastProp:null,lastJSS:{}});var C=!1;return t.classes!==t.cacheClasses.lastJSS&&(t.cacheClasses.lastJSS=t.classes,C=!0),I!==t.cacheClasses.lastProp&&(t.cacheClasses.lastProp=I,C=!0),C&&(t.cacheClasses.value=Object(n.a)({baseClasses:t.cacheClasses.lastJSS,newClasses:I,Component:e})),t.cacheClasses.value}function d(g,I){var e=g.state,t=g.theme,Q=g.stylesOptions,F=g.stylesCreator,s=g.name;if(!Q.disableGeneration){var i=U.get(Q.sheetsManager,F,t);i||(i={refs:0,staticSheet:null,dynamicStyles:null},U.set(Q.sheetsManager,F,t,i));var c=Object(C.a)(Object(C.a)(Object(C.a)({},F.options),Q),{},{theme:t,flip:"boolean"===typeof Q.flip?Q.flip:"rtl"===t.direction});c.generateId=c.serverGenerateClassName||c.generateClassName;var A=Q.sheetsRegistry;if(0===i.refs){var l;Q.sheetsCache&&(l=U.get(Q.sheetsCache,F,t));var a=F.create(t,s);l||((l=Q.jss.createStyleSheet(a,Object(C.a)({link:!1},c))).attach(),Q.sheetsCache&&U.set(Q.sheetsCache,F,t,l)),A&&A.add(l),i.staticSheet=l,i.dynamicStyles=Object(B.e)(a)}if(i.dynamicStyles){var r=Q.jss.createStyleSheet(i.dynamicStyles,Object(C.a)({link:!0},c));r.update(I),r.attach(),e.dynamicSheet=r,e.classes=Object(n.a)({baseClasses:i.staticSheet.classes,newClasses:r.classes}),A&&A.add(r)}else e.classes=i.staticSheet.classes;i.refs+=1}}function u(g,I){var e=g.state;e.dynamicSheet&&e.dynamicSheet.update(I)}function y(g){var I=g.state,e=g.theme,t=g.stylesOptions,C=g.stylesCreator;if(!t.disableGeneration){var Q=U.get(t.sheetsManager,C,e);Q.refs-=1;var F=t.sheetsRegistry;0===Q.refs&&(U.delete(t.sheetsManager,C,e),t.jss.removeStyleSheet(Q.staticSheet),F&&F.remove(Q.staticSheet)),I.dynamicSheet&&(t.jss.removeStyleSheet(I.dynamicSheet),F&&F.remove(I.dynamicSheet))}}function b(g,I){var e,t=F.a.useRef([]),C=F.a.useMemo((function(){return{}}),I);t.current!==C&&(t.current=C,e=g()),F.a.useEffect((function(){return function(){e&&e()}}),[C])}function Z(g){var I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},e=I.name,Q=I.classNamePrefix,B=I.Component,n=I.defaultTheme,U=void 0===n?r:n,c=Object(t.a)(I,["name","classNamePrefix","Component","defaultTheme"]),l=a(g),Z=e||Q||"makeStyles";l.options={index:A(),name:e,meta:Z,classNamePrefix:Z};var m=function(){var g=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},I=Object(s.a)()||U,t=Object(C.a)(Object(C.a)({},F.a.useContext(i.a)),c),Q=F.a.useRef(),n=F.a.useRef();b((function(){var C={name:e,state:{},stylesCreator:l,stylesOptions:t,theme:I};return d(C,g),n.current=!1,Q.current=C,function(){y(C)}}),[I,l]),F.a.useEffect((function(){n.current&&u(Q.current,g),n.current=!0}));var A=o(Q.current,g.classes,B);return A};return m}},function(g,I,e){"use strict";var t=e(16),C=e(5),Q=e(0),F=e(42),B=(e(4),e(470)),n=e(1676),U=e(73),s=e(160),i=e(49);var c="undefined"!==typeof window?Q.useLayoutEffect:Q.useEffect;var A=Q.forwardRef((function(g,I){var e=g.children,t=g.container,C=g.disablePortal,B=void 0!==C&&C,n=g.onRendered,U=Q.useState(null),A=U[0],l=U[1],a=Object(i.a)(Q.isValidElement(e)?e.ref:null,I);return c((function(){B||l(function(g){return g="function"===typeof g?g():g,F.findDOMNode(g)}(t)||document.body)}),[t,B]),c((function(){if(A&&!B)return Object(s.a)(I,A),function(){Object(s.a)(I,null)}}),[I,A,B]),c((function(){n&&(A||B)&&n()}),[n,A,B]),B?Q.isValidElement(e)?Q.cloneElement(e,{ref:a}):e:A?F.createPortal(e,A):A})),l=e(204),a=e(59),r=e(433),o=e(301),d=e(203),u=e(168),y=e(438),b=e(302);function Z(g,I){I?g.setAttribute("aria-hidden","true"):g.removeAttribute("aria-hidden")}function m(g){return parseInt(window.getComputedStyle(g)["padding-right"],10)||0}function x(g,I,e){var t=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],C=arguments.length>4?arguments[4]:void 0,Q=[I,e].concat(Object(u.a)(t)),F=["TEMPLATE","SCRIPT","STYLE"];[].forEach.call(g.children,(function(g){1===g.nodeType&&-1===Q.indexOf(g)&&-1===F.indexOf(g.tagName)&&Z(g,C)}))}function R(g,I){var e=-1;return g.some((function(g,t){return!!I(g)&&(e=t,!0)})),e}function S(g,I){var e,t=[],C=[],Q=g.container;if(!I.disableScrollLock){if(function(g){var I=Object(U.a)(g);return I.body===g?Object(b.a)(I).innerWidth>I.documentElement.clientWidth:g.scrollHeight>g.clientHeight}(Q)){var F=Object(y.a)();t.push({value:Q.style.paddingRight,key:"padding-right",el:Q}),Q.style["padding-right"]="".concat(m(Q)+F,"px"),e=Object(U.a)(Q).querySelectorAll(".mui-fixed"),[].forEach.call(e,(function(g){C.push(g.style.paddingRight),g.style.paddingRight="".concat(m(g)+F,"px")}))}var B=Q.parentElement,n="HTML"===B.nodeName&&"scroll"===window.getComputedStyle(B)["overflow-y"]?B:Q;t.push({value:n.style.overflow,key:"overflow",el:n}),n.style.overflow="hidden"}return function(){e&&[].forEach.call(e,(function(g,I){C[I]?g.style.paddingRight=C[I]:g.style.removeProperty("padding-right")})),t.forEach((function(g){var I=g.value,e=g.el,t=g.key;I?e.style.setProperty(t,I):e.style.removeProperty(t)}))}}var G=function(){function g(){Object(o.a)(this,g),this.modals=[],this.containers=[]}return Object(d.a)(g,[{key:"add",value:function(g,I){var e=this.modals.indexOf(g);if(-1!==e)return e;e=this.modals.length,this.modals.push(g),g.modalRef&&Z(g.modalRef,!1);var t=function(g){var I=[];return[].forEach.call(g.children,(function(g){g.getAttribute&&"true"===g.getAttribute("aria-hidden")&&I.push(g)})),I}(I);x(I,g.mountNode,g.modalRef,t,!0);var C=R(this.containers,(function(g){return g.container===I}));return-1!==C?(this.containers[C].modals.push(g),e):(this.containers.push({modals:[g],container:I,restore:null,hiddenSiblingNodes:t}),e)}},{key:"mount",value:function(g,I){var e=R(this.containers,(function(I){return-1!==I.modals.indexOf(g)})),t=this.containers[e];t.restore||(t.restore=S(t,I))}},{key:"remove",value:function(g){var I=this.modals.indexOf(g);if(-1===I)return I;var e=R(this.containers,(function(I){return-1!==I.modals.indexOf(g)})),t=this.containers[e];if(t.modals.splice(t.modals.indexOf(g),1),this.modals.splice(I,1),0===t.modals.length)t.restore&&t.restore(),g.modalRef&&Z(g.modalRef,!0),x(t.container,g.mountNode,g.modalRef,t.hiddenSiblingNodes,!1),this.containers.splice(e,1);else{var C=t.modals[t.modals.length-1];C.modalRef&&Z(C.modalRef,!1)}return I}},{key:"isTopModal",value:function(g){return this.modals.length>0&&this.modals[this.modals.length-1]===g}}]),g}();var L=function(g){var I=g.children,e=g.disableAutoFocus,t=void 0!==e&&e,C=g.disableEnforceFocus,B=void 0!==C&&C,n=g.disableRestoreFocus,s=void 0!==n&&n,c=g.getDoc,A=g.isEnabled,l=g.open,a=Q.useRef(),r=Q.useRef(null),o=Q.useRef(null),d=Q.useRef(),u=Q.useRef(null),y=Q.useCallback((function(g){u.current=F.findDOMNode(g)}),[]),b=Object(i.a)(I.ref,y),Z=Q.useRef();return Q.useEffect((function(){Z.current=l}),[l]),!Z.current&&l&&"undefined"!==typeof window&&(d.current=c().activeElement),Q.useEffect((function(){if(l){var g=Object(U.a)(u.current);t||!u.current||u.current.contains(g.activeElement)||(u.current.hasAttribute("tabIndex")||u.current.setAttribute("tabIndex",-1),u.current.focus());var I=function(){g.hasFocus()&&!B&&A()&&!a.current?u.current&&!u.current.contains(g.activeElement)&&u.current.focus():a.current=!1},e=function(I){!B&&A()&&9===I.keyCode&&g.activeElement===u.current&&(a.current=!0,I.shiftKey?o.current.focus():r.current.focus())};g.addEventListener("focus",I,!0),g.addEventListener("keydown",e,!0);var C=setInterval((function(){I()}),50);return function(){clearInterval(C),g.removeEventListener("focus",I,!0),g.removeEventListener("keydown",e,!0),s||(d.current&&d.current.focus&&d.current.focus(),d.current=null)}}}),[t,B,s,A,l]),Q.createElement(Q.Fragment,null,Q.createElement("div",{tabIndex:0,ref:r,"data-test":"sentinelStart"}),Q.cloneElement(I,{ref:b}),Q.createElement("div",{tabIndex:0,ref:o,"data-test":"sentinelEnd"}))},V={root:{zIndex:-1,position:"fixed",right:0,bottom:0,top:0,left:0,backgroundColor:"rgba(0, 0, 0, 0.5)",WebkitTapHighlightColor:"transparent"},invisible:{backgroundColor:"transparent"}},h=Q.forwardRef((function(g,I){var e=g.invisible,F=void 0!==e&&e,B=g.open,n=Object(t.a)(g,["invisible","open"]);return B?Q.createElement("div",Object(C.a)({"aria-hidden":!0,ref:I},n,{style:Object(C.a)({},V.root,F?V.invisible:{},n.style)})):null}));var D=new G,p=Q.forwardRef((function(g,I){var e=Object(B.a)(),s=Object(n.a)({name:"MuiModal",props:Object(C.a)({},g),theme:e}),c=s.BackdropComponent,o=void 0===c?h:c,d=s.BackdropProps,u=s.children,y=s.closeAfterTransition,b=void 0!==y&&y,m=s.container,x=s.disableAutoFocus,R=void 0!==x&&x,S=s.disableBackdropClick,G=void 0!==S&&S,V=s.disableEnforceFocus,p=void 0!==V&&V,E=s.disableEscapeKeyDown,N=void 0!==E&&E,W=s.disablePortal,f=void 0!==W&&W,X=s.disableRestoreFocus,J=void 0!==X&&X,v=s.disableScrollLock,k=void 0!==v&&v,H=s.hideBackdrop,M=void 0!==H&&H,Y=s.keepMounted,w=void 0!==Y&&Y,T=s.manager,z=void 0===T?D:T,O=s.onBackdropClick,K=s.onClose,j=s.onEscapeKeyDown,P=s.onRendered,_=s.open,q=Object(t.a)(s,["BackdropComponent","BackdropProps","children","closeAfterTransition","container","disableAutoFocus","disableBackdropClick","disableEnforceFocus","disableEscapeKeyDown","disablePortal","disableRestoreFocus","disableScrollLock","hideBackdrop","keepMounted","manager","onBackdropClick","onClose","onEscapeKeyDown","onRendered","open"]),$=Q.useState(!0),gg=$[0],Ig=$[1],eg=Q.useRef({}),tg=Q.useRef(null),Cg=Q.useRef(null),Qg=Object(i.a)(Cg,I),Fg=function(g){return!!g.children&&g.children.props.hasOwnProperty("in")}(s),Bg=function(){return Object(U.a)(tg.current)},ng=function(){return eg.current.modalRef=Cg.current,eg.current.mountNode=tg.current,eg.current},Ug=function(){z.mount(ng(),{disableScrollLock:k}),Cg.current.scrollTop=0},sg=Object(a.a)((function(){var g=function(g){return g="function"===typeof g?g():g,F.findDOMNode(g)}(m)||Bg().body;z.add(ng(),g),Cg.current&&Ug()})),ig=Q.useCallback((function(){return z.isTopModal(ng())}),[z]),cg=Object(a.a)((function(g){tg.current=g,g&&(P&&P(),_&&ig()?Ug():Z(Cg.current,!0))})),Ag=Q.useCallback((function(){z.remove(ng())}),[z]);if(Q.useEffect((function(){return function(){Ag()}}),[Ag]),Q.useEffect((function(){_?sg():Fg&&b||Ag()}),[_,Ag,Fg,b,sg]),!w&&!_&&(!Fg||gg))return null;var lg=function(g){return{root:{position:"fixed",zIndex:g.zIndex.modal,right:0,bottom:0,top:0,left:0},hidden:{visibility:"hidden"}}}(e||{zIndex:r.a}),ag={};return void 0===u.props.tabIndex&&(ag.tabIndex=u.props.tabIndex||"-1"),Fg&&(ag.onEnter=Object(l.a)((function(){Ig(!1)}),u.props.onEnter),ag.onExited=Object(l.a)((function(){Ig(!0),b&&Ag()}),u.props.onExited)),Q.createElement(A,{ref:cg,container:m,disablePortal:f},Q.createElement("div",Object(C.a)({ref:Qg,onKeyDown:function(g){"Escape"===g.key&&ig()&&(j&&j(g),N||(g.stopPropagation(),K&&K(g,"escapeKeyDown")))},role:"presentation"},q,{style:Object(C.a)({},lg.root,!_&&gg?lg.hidden:{},q.style)}),M?null:Q.createElement(o,Object(C.a)({open:_,onClick:function(g){g.target===g.currentTarget&&(O&&O(g),!G&&K&&K(g,"backdropClick"))}},d)),Q.createElement(L,{disableEnforceFocus:p,disableAutoFocus:R,disableRestoreFocus:J,getDoc:Bg,isEnabled:ig,open:_},Q.cloneElement(u,ag))))}));I.a=p},,,,,,,,,,,,,,function(g,I,e){var t=e(68),C=e(41),Q=e(481);g.exports=!t&&!C((function(){return 7!=Object.defineProperty(Q("div"),"a",{get:function(){return 7}}).a}))},function(g,I,e){var t=e(50),C=e(482),Q=t["__core-js_shared__"]||C("__core-js_shared__",{});g.exports=Q},function(g,I,e){var t=e(50),C=e(483),Q=t.WeakMap;g.exports="function"===typeof Q&&/native code/.test(C(Q))},function(g,I,e){var t=e(90),C=e(485),Q=e(121),F=e(76);g.exports=function(g,I){for(var e=C(I),B=F.f,n=Q.f,U=0;U<e.length;U++){var s=e[U];t(g,s)||B(g,s,n(I,s))}}},function(g,I,e){var t=e(50);g.exports=t},function(g,I,e){var t=e(90),C=e(145),Q=e(327).indexOf,F=e(326);g.exports=function(g,I){var e,B=C(g),n=0,U=[];for(e in B)!t(F,e)&&t(B,e)&&U.push(e);for(;I.length>n;)t(B,e=I[n++])&&(~Q(U,e)||U.push(e));return U}},function(g,I,e){var t=e(488);g.exports=t&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},function(g,I,e){var t=e(68),C=e(76),Q=e(60),F=e(329);g.exports=t?Object.defineProperties:function(g,I){Q(g);for(var e,t=F(I),B=t.length,n=0;B>n;)C.f(g,e=t[n++],I[e]);return g}},function(g,I,e){var t=e(177);g.exports=t("document","documentElement")},function(g,I,e){var t=e(145),C=e(250).f,Q={}.toString,F="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];g.exports.f=function(g){return F&&"[object Window]"==Q.call(g)?function(g){try{return C(g)}catch(I){return F.slice()}}(g):C(t(g))}},function(g,I,e){var t=e(64);I.f=t},function(g,I,e){"use strict";var t=e(91),C=e(229),Q=e(69),F=Math.min;g.exports=[].copyWithin||function(g,I){var e=t(this),B=Q(e.length),n=C(g,B),U=C(I,B),s=arguments.length>2?arguments[2]:void 0,i=F((void 0===s?B:C(s,B))-U,B-n),c=1;for(U<n&&n<U+i&&(c=-1,U+=i-1,n+=i-1);i-- >0;)U in e?e[n]=e[U]:delete e[n],n+=c,U+=c;return e}},function(g,I,e){"use strict";var t=e(276),C=e(69),Q=e(231);g.exports=function g(I,e,F,B,n,U,s,i){for(var c,A=n,l=0,a=!!s&&Q(s,i,3);l<B;){if(l in F){if(c=a?a(F[l],l,e):F[l],U>0&&t(c))A=g(I,e,c,C(c.length),A,U-1)-1;else{if(A>=9007199254740991)throw TypeError("Exceed the acceptable array length");I[A]=c}A++}l++}return A}},function(g,I,e){"use strict";var t=e(118).forEach,C=e(216),Q=e(136),F=C("forEach"),B=Q("forEach");g.exports=F&&B?[].forEach:function(g){return t(this,g,arguments.length>1?arguments[1]:void 0)}},function(g,I,e){"use strict";var t=e(231),C=e(91),Q=e(629),F=e(492),B=e(69),n=e(251),U=e(333);g.exports=function(g){var I,e,s,i,c,A,l=C(g),a="function"==typeof this?this:Array,r=arguments.length,o=r>1?arguments[1]:void 0,d=void 0!==o,u=U(l),y=0;if(d&&(o=t(o,r>2?arguments[2]:void 0,2)),void 0==u||a==Array&&F(u))for(e=new a(I=B(l.length));I>y;y++)A=d?o(l[y],y):l[y],n(e,y,A);else for(c=(i=u.call(l)).next,e=new a;!(s=c.call(i)).done;y++)A=d?Q(i,o,[s.value,y],!0):s.value,n(e,y,A);return e.length=y,e}},function(g,I,e){var t=e(60);g.exports=function(g,I,e,C){try{return C?I(t(e)[0],e[1]):I(e)}catch(F){var Q=g.return;throw void 0!==Q&&t(Q.call(g)),F}}},function(g,I,e){"use strict";var t=e(631).IteratorPrototype,C=e(230),Q=e(228),F=e(190),B=e(332),n=function(){return this};g.exports=function(g,I,e){var U=I+" Iterator";return g.prototype=C(t,{next:Q(1,e)}),F(g,U,!1,!0),B[U]=n,g}},function(g,I,e){"use strict";var t,C,Q,F=e(178),B=e(135),n=e(90),U=e(64),s=e(189),i=U("iterator"),c=!1;[].keys&&("next"in(Q=[].keys())?(C=F(F(Q)))!==Object.prototype&&(t=C):c=!0),void 0==t&&(t={}),s||n(t,i)||B(t,i,(function(){return this})),g.exports={IteratorPrototype:t,BUGGY_SAFARI_ITERATORS:c}},function(g,I,e){var t=e(57);g.exports=function(g){if(!t(g)&&null!==g)throw TypeError("Can't set "+String(g)+" as a prototype");return g}},function(g,I,e){"use strict";var t=e(145),C=e(162),Q=e(69),F=e(216),B=e(136),n=Math.min,U=[].lastIndexOf,s=!!U&&1/[1].lastIndexOf(1,-0)<0,i=F("lastIndexOf"),c=B("indexOf",{ACCESSORS:!0,1:0}),A=s||!i||!c;g.exports=A?function(g){if(s)return U.apply(this,arguments)||0;var I=t(this),e=Q(I.length),F=e-1;for(arguments.length>1&&(F=n(F,C(arguments[1]))),F<0&&(F=e+F);F>=0;F--)if(F in I&&I[F]===g)return F||0;return-1}:U},function(g,I){g.exports="undefined"!==typeof ArrayBuffer&&"undefined"!==typeof DataView},function(g,I,e){var t=e(162),C=e(69);g.exports=function(g){if(void 0===g)return 0;var I=t(g),e=C(I);if(I!==e)throw RangeError("Wrong length or index");return e}},function(g,I,e){"use strict";var t=e(76).f,C=e(230),Q=e(279),F=e(231),B=e(233),n=e(336),U=e(494),s=e(278),i=e(68),c=e(252).fastKey,A=e(146),l=A.set,a=A.getterFor;g.exports={getConstructor:function(g,I,e,U){var s=g((function(g,t){B(g,s,I),l(g,{type:I,index:C(null),first:void 0,last:void 0,size:0}),i||(g.size=0),void 0!=t&&n(t,g[U],g,e)})),A=a(I),r=function(g,I,e){var t,C,Q=A(g),F=o(g,I);return F?F.value=e:(Q.last=F={index:C=c(I,!0),key:I,value:e,previous:t=Q.last,next:void 0,removed:!1},Q.first||(Q.first=F),t&&(t.next=F),i?Q.size++:g.size++,"F"!==C&&(Q.index[C]=F)),g},o=function(g,I){var e,t=A(g),C=c(I);if("F"!==C)return t.index[C];for(e=t.first;e;e=e.next)if(e.key==I)return e};return Q(s.prototype,{clear:function(){for(var g=A(this),I=g.index,e=g.first;e;)e.removed=!0,e.previous&&(e.previous=e.previous.next=void 0),delete I[e.index],e=e.next;g.first=g.last=void 0,i?g.size=0:this.size=0},delete:function(g){var I=A(this),e=o(this,g);if(e){var t=e.next,C=e.previous;delete I.index[e.index],e.removed=!0,C&&(C.next=t),t&&(t.previous=C),I.first==e&&(I.first=t),I.last==e&&(I.last=C),i?I.size--:this.size--}return!!e},forEach:function(g){for(var I,e=A(this),t=F(g,arguments.length>1?arguments[1]:void 0,3);I=I?I.next:e.first;)for(t(I.value,I.key,this);I&&I.removed;)I=I.previous},has:function(g){return!!o(this,g)}}),Q(s.prototype,e?{get:function(g){var I=o(this,g);return I&&I.value},set:function(g,I){return r(this,0===g?0:g,I)}}:{add:function(g){return r(this,g=0===g?0:g,g)}}),i&&t(s.prototype,"size",{get:function(){return A(this).size}}),s},setStrong:function(g,I,e){var t=I+" Iterator",C=a(I),Q=a(t);U(g,I,(function(g,I){l(this,{type:t,target:g,state:C(g),kind:I,last:void 0})}),(function(){for(var g=Q(this),I=g.kind,e=g.last;e&&e.removed;)e=e.previous;return g.target&&(g.last=e=e?e.next:g.state.first)?"keys"==I?{value:e.key,done:!1}:"values"==I?{value:e.value,done:!1}:{value:[e.key,e.value],done:!1}:(g.target=void 0,{value:void 0,done:!0})}),e?"entries":"values",!e,!0),s(I)}}},function(g,I){var e=Math.log;g.exports=Math.log1p||function(g){return(g=+g)>-1e-8&&g<1e-8?g-g*g/2:e(1+g)}},function(g,I,e){var t=e(57),C=Math.floor;g.exports=function(g){return!t(g)&&isFinite(g)&&C(g)===g}},function(g,I,e){"use strict";var t=e(68),C=e(41),Q=e(329),F=e(487),B=e(382),n=e(91),U=e(324),s=Object.assign,i=Object.defineProperty;g.exports=!s||C((function(){if(t&&1!==s({b:1},s(i({},"a",{enumerable:!0,get:function(){i(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var g={},I={},e=Symbol();return g[e]=7,"abcdefghijklmnopqrst".split("").forEach((function(g){I[g]=g})),7!=s({},g)[e]||"abcdefghijklmnopqrst"!=Q(s({},I)).join("")}))?function(g,I){for(var e=n(g),C=arguments.length,s=1,i=F.f,c=B.f;C>s;)for(var A,l=U(arguments[s++]),a=i?Q(l).concat(i(l)):Q(l),r=a.length,o=0;r>o;)A=a[o++],t&&!c.call(l,A)||(e[A]=l[A]);return e}:s},function(g,I,e){var t=e(68),C=e(329),Q=e(145),F=e(382).f,B=function(g){return function(I){for(var e,B=Q(I),n=C(B),U=n.length,s=0,i=[];U>s;)e=n[s++],t&&!F.call(B,e)||i.push(g?[e,B[e]]:B[e]);return i}};g.exports={entries:B(!0),values:B(!1)}},function(g,I){g.exports=Object.is||function(g,I){return g===I?0!==g||1/g===1/I:g!=g&&I!=I}},function(g,I,e){var t=e(50);g.exports=t.Promise},function(g,I,e){var t=e(490);g.exports=/(iphone|ipod|ipad).*applewebkit/i.test(t)},function(g,I,e){var t,C,Q,F,B,n,U,s,i=e(50),c=e(121).f,A=e(176),l=e(499).set,a=e(643),r=i.MutationObserver||i.WebKitMutationObserver,o=i.process,d=i.Promise,u="process"==A(o),y=c(i,"queueMicrotask"),b=y&&y.value;b||(t=function(){var g,I;for(u&&(g=o.domain)&&g.exit();C;){I=C.fn,C=C.next;try{I()}catch(e){throw C?F():Q=void 0,e}}Q=void 0,g&&g.enter()},u?F=function(){o.nextTick(t)}:r&&!a?(B=!0,n=document.createTextNode(""),new r(t).observe(n,{characterData:!0}),F=function(){n.data=B=!B}):d&&d.resolve?(U=d.resolve(void 0),s=U.then,F=function(){s.call(U,t)}):F=function(){l.call(i,t)}),g.exports=b||function(g){var I={fn:g,next:void 0};Q&&(Q.next=I),C||(C=I,F()),Q=I}},function(g,I,e){var t=e(60),C=e(57),Q=e(646);g.exports=function(g,I){if(t(g),C(I)&&I.constructor===g)return I;var e=Q.f(g);return(0,e.resolve)(I),e.promise}},function(g,I,e){"use strict";var t=e(163),C=function(g){var I,e;this.promise=new g((function(g,t){if(void 0!==I||void 0!==e)throw TypeError("Bad Promise constructor");I=g,e=t})),this.resolve=t(I),this.reject=t(e)};g.exports.f=function(g){return new C(g)}},function(g,I,e){"use strict";var t=e(22),C=e(393);t({target:"RegExp",proto:!0,forced:/./.exec!==C},{exec:C})},function(g,I,e){"use strict";var t=e(394).charAt,C=e(146),Q=e(494),F=C.set,B=C.getterFor("String Iterator");Q(String,"String",(function(g){F(this,{type:"String Iterator",string:String(g),index:0})}),(function(){var g,I=B(this),e=I.string,C=I.index;return C>=e.length?{value:void 0,done:!0}:(g=t(e,C),I.index+=g.length,{value:g,done:!1})}))},function(g,I,e){var t=e(69),C=e(498),Q=e(134),F=Math.ceil,B=function(g){return function(I,e,B){var n,U,s=String(Q(I)),i=s.length,c=void 0===B?" ":String(B),A=t(e);return A<=i||""==c?s:(n=A-i,(U=C.call(c,F(n/c.length))).length>n&&(U=U.slice(0,n)),g?s+U:U+s)}};g.exports={start:B(!1),end:B(!0)}},function(g,I,e){var t=e(490);g.exports=/Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(t)},function(g,I,e){var t=e(1109);g.exports=function(g,I){var e=t(g);if(e%I)throw RangeError("Wrong offset");return e}},function(g,I,e){var t=e(91),C=e(69),Q=e(333),F=e(492),B=e(231),n=e(70).aTypedArrayConstructor;g.exports=function(g){var I,e,U,s,i,c,A=t(g),l=arguments.length,a=l>1?arguments[1]:void 0,r=void 0!==a,o=Q(A);if(void 0!=o&&!F(o))for(c=(i=o.call(A)).next,A=[];!(s=c.call(i)).done;)A.push(s.value);for(r&&l>2&&(a=B(a,arguments[2],2)),e=C(A.length),U=new(n(this))(e),I=0;e>I;I++)U[I]=r?a(A[I],I):A[I];return U}},function(g,I,e){"use strict";var t=e(279),C=e(252).getWeakData,Q=e(60),F=e(57),B=e(233),n=e(336),U=e(118),s=e(90),i=e(146),c=i.set,A=i.getterFor,l=U.find,a=U.findIndex,r=0,o=function(g){return g.frozen||(g.frozen=new d)},d=function(){this.entries=[]},u=function(g,I){return l(g.entries,(function(g){return g[0]===I}))};d.prototype={get:function(g){var I=u(this,g);if(I)return I[1]},has:function(g){return!!u(this,g)},set:function(g,I){var e=u(this,g);e?e[1]=I:this.entries.push([g,I])},delete:function(g){var I=a(this.entries,(function(I){return I[0]===g}));return~I&&this.entries.splice(I,1),!!~I}},g.exports={getConstructor:function(g,I,e,U){var i=g((function(g,t){B(g,i,I),c(g,{type:I,id:r++,frozen:void 0}),void 0!=t&&n(t,g[U],g,e)})),l=A(I),a=function(g,I,e){var t=l(g),F=C(Q(I),!0);return!0===F?o(t).set(I,e):F[t.id]=e,g};return t(i.prototype,{delete:function(g){var I=l(this);if(!F(g))return!1;var e=C(g);return!0===e?o(I).delete(g):e&&s(e,I.id)&&delete e[I.id]},has:function(g){var I=l(this);if(!F(g))return!1;var e=C(g);return!0===e?o(I).has(g):e&&s(e,I.id)}}),t(i.prototype,e?{get:function(g){var I=l(this);if(F(g)){var e=C(g);return!0===e?o(I).get(g):e?e[I.id]:void 0}},set:function(g,I){return a(this,g,I)}}:{add:function(g){return a(this,g,!0)}}),i}}},function(g,I){g.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},function(g,I,e){var t=e(41),C=e(64),Q=e(189),F=C("iterator");g.exports=!t((function(){var g=new URL("b?a=1&b=2&c=3","http://a"),I=g.searchParams,e="";return g.pathname="c%20d",I.forEach((function(g,t){I.delete("b"),e+=t+g})),Q&&!g.toJSON||!I.sort||"http://a/c%20d?a=1&c=3"!==g.href||"3"!==I.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!I[F]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://\u0442\u0435\u0441\u0442").host||"#%D0%B1"!==new URL("http://a#\u0431").hash||"a1c3"!==e||"x"!==new URL("http://x",void 0).host}))},function(g,I,e){"use strict";e(385);var t=e(22),C=e(177),Q=e(655),F=e(126),B=e(279),n=e(190),U=e(630),s=e(146),i=e(233),c=e(90),A=e(231),l=e(334),a=e(60),r=e(57),o=e(230),d=e(228),u=e(1151),y=e(333),b=e(64),Z=C("fetch"),m=C("Headers"),x=b("iterator"),R=s.set,S=s.getterFor("URLSearchParams"),G=s.getterFor("URLSearchParamsIterator"),L=/\+/g,V=Array(4),h=function(g){return V[g-1]||(V[g-1]=RegExp("((?:%[\\da-f]{2}){"+g+"})","gi"))},D=function(g){try{return decodeURIComponent(g)}catch(I){return g}},p=function(g){var I=g.replace(L," "),e=4;try{return decodeURIComponent(I)}catch(t){for(;e;)I=I.replace(h(e--),D);return I}},E=/[!'()~]|%20/g,N={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},W=function(g){return N[g]},f=function(g){return encodeURIComponent(g).replace(E,W)},X=function(g,I){if(I)for(var e,t,C=I.split("&"),Q=0;Q<C.length;)(e=C[Q++]).length&&(t=e.split("="),g.push({key:p(t.shift()),value:p(t.join("="))}))},J=function(g){this.entries.length=0,X(this.entries,g)},v=function(g,I){if(g<I)throw TypeError("Not enough arguments")},k=U((function(g,I){R(this,{type:"URLSearchParamsIterator",iterator:u(S(g).entries),kind:I})}),"Iterator",(function(){var g=G(this),I=g.kind,e=g.iterator.next(),t=e.value;return e.done||(e.value="keys"===I?t.key:"values"===I?t.value:[t.key,t.value]),e})),H=function(){i(this,H,"URLSearchParams");var g,I,e,t,C,Q,F,B,n,U=arguments.length>0?arguments[0]:void 0,s=this,A=[];if(R(s,{type:"URLSearchParams",entries:A,updateURL:function(){},updateSearchParams:J}),void 0!==U)if(r(U))if("function"===typeof(g=y(U)))for(e=(I=g.call(U)).next;!(t=e.call(I)).done;){if((F=(Q=(C=u(a(t.value))).next).call(C)).done||(B=Q.call(C)).done||!Q.call(C).done)throw TypeError("Expected sequence with length 2");A.push({key:F.value+"",value:B.value+""})}else for(n in U)c(U,n)&&A.push({key:n,value:U[n]+""});else X(A,"string"===typeof U?"?"===U.charAt(0)?U.slice(1):U:U+"")},M=H.prototype;B(M,{append:function(g,I){v(arguments.length,2);var e=S(this);e.entries.push({key:g+"",value:I+""}),e.updateURL()},delete:function(g){v(arguments.length,1);for(var I=S(this),e=I.entries,t=g+"",C=0;C<e.length;)e[C].key===t?e.splice(C,1):C++;I.updateURL()},get:function(g){v(arguments.length,1);for(var I=S(this).entries,e=g+"",t=0;t<I.length;t++)if(I[t].key===e)return I[t].value;return null},getAll:function(g){v(arguments.length,1);for(var I=S(this).entries,e=g+"",t=[],C=0;C<I.length;C++)I[C].key===e&&t.push(I[C].value);return t},has:function(g){v(arguments.length,1);for(var I=S(this).entries,e=g+"",t=0;t<I.length;)if(I[t++].key===e)return!0;return!1},set:function(g,I){v(arguments.length,1);for(var e,t=S(this),C=t.entries,Q=!1,F=g+"",B=I+"",n=0;n<C.length;n++)(e=C[n]).key===F&&(Q?C.splice(n--,1):(Q=!0,e.value=B));Q||C.push({key:F,value:B}),t.updateURL()},sort:function(){var g,I,e,t=S(this),C=t.entries,Q=C.slice();for(C.length=0,e=0;e<Q.length;e++){for(g=Q[e],I=0;I<e;I++)if(C[I].key>g.key){C.splice(I,0,g);break}I===e&&C.push(g)}t.updateURL()},forEach:function(g){for(var I,e=S(this).entries,t=A(g,arguments.length>1?arguments[1]:void 0,3),C=0;C<e.length;)t((I=e[C++]).value,I.key,this)},keys:function(){return new k(this,"keys")},values:function(){return new k(this,"values")},entries:function(){return new k(this,"entries")}},{enumerable:!0}),F(M,x,M.entries),F(M,"toString",(function(){for(var g,I=S(this).entries,e=[],t=0;t<I.length;)g=I[t++],e.push(f(g.key)+"="+f(g.value));return e.join("&")}),{enumerable:!0}),n(H,"URLSearchParams"),t({global:!0,forced:!Q},{URLSearchParams:H}),Q||"function"!=typeof Z||"function"!=typeof m||t({global:!0,enumerable:!0,forced:!0},{fetch:function(g){var I,e,t,C=[g];return arguments.length>1&&(r(I=arguments[1])&&(e=I.body,"URLSearchParams"===l(e)&&((t=I.headers?new m(I.headers):new m).has("content-type")||t.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"),I=o(I,{body:d(0,String(e)),headers:d(0,t)}))),C.push(I)),Z.apply(this,C)}}),g.exports={URLSearchParams:H,getState:S}},function(g,I,e){"use strict";g.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(g,I,e){"use strict";g.exports=function(g,I){return function(){for(var e=new Array(arguments.length),t=0;t<e.length;t++)e[t]=arguments[t];return g.apply(I,e)}}},function(g,I,e){"use strict";var t=e(150);function C(g){return encodeURIComponent(g).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}g.exports=function(g,I,e){if(!I)return g;var Q;if(e)Q=e(I);else if(t.isURLSearchParams(I))Q=I.toString();else{var F=[];t.forEach(I,(function(g,I){null!==g&&"undefined"!==typeof g&&(t.isArray(g)?I+="[]":g=[g],t.forEach(g,(function(g){t.isDate(g)?g=g.toISOString():t.isObject(g)&&(g=JSON.stringify(g)),F.push(C(I)+"="+C(g))})))})),Q=F.join("&")}if(Q){var B=g.indexOf("#");-1!==B&&(g=g.slice(0,B)),g+=(-1===g.indexOf("?")?"?":"&")+Q}return g}},function(g,I,e){"use strict";g.exports=function(g){return!(!g||!g.__CANCEL__)}},function(g,I,e){"use strict";(function(I){var t=e(150),C=e(1170),Q={"Content-Type":"application/x-www-form-urlencoded"};function F(g,I){!t.isUndefined(g)&&t.isUndefined(g["Content-Type"])&&(g["Content-Type"]=I)}var B={adapter:function(){var g;return("undefined"!==typeof XMLHttpRequest||"undefined"!==typeof I&&"[object process]"===Object.prototype.toString.call(I))&&(g=e(662)),g}(),transformRequest:[function(g,I){return C(I,"Accept"),C(I,"Content-Type"),t.isFormData(g)||t.isArrayBuffer(g)||t.isBuffer(g)||t.isStream(g)||t.isFile(g)||t.isBlob(g)?g:t.isArrayBufferView(g)?g.buffer:t.isURLSearchParams(g)?(F(I,"application/x-www-form-urlencoded;charset=utf-8"),g.toString()):t.isObject(g)?(F(I,"application/json;charset=utf-8"),JSON.stringify(g)):g}],transformResponse:[function(g){if("string"===typeof g)try{g=JSON.parse(g)}catch(I){}return g}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,validateStatus:function(g){return g>=200&&g<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};t.forEach(["delete","get","head"],(function(g){B.headers[g]={}})),t.forEach(["post","put","patch"],(function(g){B.headers[g]=t.merge(Q)})),g.exports=B}).call(this,e(92))},function(g,I,e){"use strict";var t=e(150),C=e(1171),Q=e(659),F=e(1173),B=e(1176),n=e(1177),U=e(663);g.exports=function(g){return new Promise((function(I,s){var i=g.data,c=g.headers;t.isFormData(i)&&delete c["Content-Type"];var A=new XMLHttpRequest;if(g.auth){var l=g.auth.username||"",a=g.auth.password||"";c.Authorization="Basic "+btoa(l+":"+a)}var r=F(g.baseURL,g.url);if(A.open(g.method.toUpperCase(),Q(r,g.params,g.paramsSerializer),!0),A.timeout=g.timeout,A.onreadystatechange=function(){if(A&&4===A.readyState&&(0!==A.status||A.responseURL&&0===A.responseURL.indexOf("file:"))){var e="getAllResponseHeaders"in A?B(A.getAllResponseHeaders()):null,t={data:g.responseType&&"text"!==g.responseType?A.response:A.responseText,status:A.status,statusText:A.statusText,headers:e,config:g,request:A};C(I,s,t),A=null}},A.onabort=function(){A&&(s(U("Request aborted",g,"ECONNABORTED",A)),A=null)},A.onerror=function(){s(U("Network Error",g,null,A)),A=null},A.ontimeout=function(){var I="timeout of "+g.timeout+"ms exceeded";g.timeoutErrorMessage&&(I=g.timeoutErrorMessage),s(U(I,g,"ECONNABORTED",A)),A=null},t.isStandardBrowserEnv()){var o=e(1178),d=(g.withCredentials||n(r))&&g.xsrfCookieName?o.read(g.xsrfCookieName):void 0;d&&(c[g.xsrfHeaderName]=d)}if("setRequestHeader"in A&&t.forEach(c,(function(g,I){"undefined"===typeof i&&"content-type"===I.toLowerCase()?delete c[I]:A.setRequestHeader(I,g)})),t.isUndefined(g.withCredentials)||(A.withCredentials=!!g.withCredentials),g.responseType)try{A.responseType=g.responseType}catch(u){if("json"!==g.responseType)throw u}"function"===typeof g.onDownloadProgress&&A.addEventListener("progress",g.onDownloadProgress),"function"===typeof g.onUploadProgress&&A.upload&&A.upload.addEventListener("progress",g.onUploadProgress),g.cancelToken&&g.cancelToken.promise.then((function(g){A&&(A.abort(),s(g),A=null)})),void 0===i&&(i=null),A.send(i)}))}},function(g,I,e){"use strict";var t=e(1172);g.exports=function(g,I,e,C,Q){var F=new Error(g);return t(F,I,e,C,Q)}},function(g,I,e){"use strict";var t=e(150);g.exports=function(g,I){I=I||{};var e={},C=["url","method","params","data"],Q=["headers","auth","proxy"],F=["baseURL","url","transformRequest","transformResponse","paramsSerializer","timeout","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","maxContentLength","validateStatus","maxRedirects","httpAgent","httpsAgent","cancelToken","socketPath"];t.forEach(C,(function(g){"undefined"!==typeof I[g]&&(e[g]=I[g])})),t.forEach(Q,(function(C){t.isObject(I[C])?e[C]=t.deepMerge(g[C],I[C]):"undefined"!==typeof I[C]?e[C]=I[C]:t.isObject(g[C])?e[C]=t.deepMerge(g[C]):"undefined"!==typeof g[C]&&(e[C]=g[C])})),t.forEach(F,(function(t){"undefined"!==typeof I[t]?e[t]=I[t]:"undefined"!==typeof g[t]&&(e[t]=g[t])}));var B=C.concat(Q).concat(F),n=Object.keys(I).filter((function(g){return-1===B.indexOf(g)}));return t.forEach(n,(function(t){"undefined"!==typeof I[t]?e[t]=I[t]:"undefined"!==typeof g[t]&&(e[t]=g[t])})),e}},function(g,I,e){"use strict";function t(g){this.message=g}t.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},t.prototype.__CANCEL__=!0,g.exports=t},function(g,I){g.exports=function(g){return g.webpackPolyfill||(g.deprecate=function(){},g.paths=[],g.children||(g.children=[]),Object.defineProperty(g,"loaded",{enumerable:!0,get:function(){return g.l}}),Object.defineProperty(g,"id",{enumerable:!0,get:function(){return g.i}}),g.webpackPolyfill=1),g}},function(g,I,e){},function(g,I,e){var t,C,Q;C=[I,e(1182)],void 0===(Q="function"===typeof(t=function(g,I){"use strict";Object.defineProperty(g,"__esModule",{value:!0});var e,t=(e=I)&&e.__esModule?e:{default:e};g.default=t.default})?t.apply(I,C):t)||(g.exports=Q)},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var t,C=(t=e(194))&&t.__esModule?t:{default:t};var Q={ROOT:function(g){return(0,C.default)(function(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}({"carousel-root":!0},g||"",!!g))},CAROUSEL:function(g){return(0,C.default)({carousel:!0,"carousel-slider":g})},WRAPPER:function(g,I){return(0,C.default)({"thumbs-wrapper":!g,"slider-wrapper":g,"axis-horizontal":"horizontal"===I,"axis-vertical":"horizontal"!==I})},SLIDER:function(g,I){return(0,C.default)({thumbs:!g,slider:g,animated:!I})},ITEM:function(g,I,e){return(0,C.default)({thumb:!g,slide:g,selected:I,previous:e})},ARROW_PREV:function(g){return(0,C.default)({"control-arrow control-prev":!0,"control-disabled":g})},ARROW_NEXT:function(g){return(0,C.default)({"control-arrow control-next":!0,"control-disabled":g})},DOT:function(g){return(0,C.default)({dot:!0,selected:g})}};I.default=Q},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;I.default=function(g,I,e){var t=0===g?g:g+I;return"translate3d"+("("+("horizontal"===e?[t,0,0]:[0,t,0]).join(",")+")")}},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var t=function(g){if(g&&g.__esModule)return g;if(null===g||"object"!==i(g)&&"function"!==typeof g)return{default:g};var I=s();if(I&&I.has(g))return I.get(g);var e={},t=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var C in g)if(Object.prototype.hasOwnProperty.call(g,C)){var Q=t?Object.getOwnPropertyDescriptor(g,C):null;Q&&(Q.get||Q.set)?Object.defineProperty(e,C,Q):e[C]=g[C]}e.default=g,I&&I.set(g,e);return e}(e(0)),C=U(e(669)),Q=e(1183),F=U(e(670)),B=U(e(668)),n=U(e(672));function U(g){return g&&g.__esModule?g:{default:g}}function s(){if("function"!==typeof WeakMap)return null;var g=new WeakMap;return s=function(){return g},g}function i(g){return(i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"===typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g})(g)}function c(){return(c=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}function A(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}function l(g,I){return(l=Object.setPrototypeOf||function(g,I){return g.__proto__=I,g})(g,I)}function a(g){var I=function(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(g){return!1}}();return function(){var e,t=d(g);if(I){var C=d(this).constructor;e=Reflect.construct(t,arguments,C)}else e=t.apply(this,arguments);return r(this,e)}}function r(g,I){return!I||"object"!==i(I)&&"function"!==typeof I?o(g):I}function o(g){if(void 0===g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return g}function d(g){return(d=Object.setPrototypeOf?Object.getPrototypeOf:function(g){return g.__proto__||Object.getPrototypeOf(g)})(g)}function u(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}var y=function(g){!function(g,I){if("function"!==typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function");g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,writable:!0,configurable:!0}}),I&&l(g,I)}(i,g);var I,e,U,s=a(i);function i(g){var I;return function(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}(this,i),u(o(I=s.call(this,g)),"itemsWrapperRef",void 0),u(o(I),"itemsListRef",void 0),u(o(I),"thumbsRef",void 0),u(o(I),"setItemsWrapperRef",(function(g){I.itemsWrapperRef=g})),u(o(I),"setItemsListRef",(function(g){I.itemsListRef=g})),u(o(I),"setThumbsRef",(function(g,e){I.thumbsRef||(I.thumbsRef=[]),I.thumbsRef[e]=g})),u(o(I),"updateSizes",(function(){if(I.props.children&&I.itemsWrapperRef&&I.thumbsRef){var g=t.Children.count(I.props.children),e=I.itemsWrapperRef.clientWidth,C=I.props.thumbWidth?I.props.thumbWidth:(0,Q.outerWidth)(I.thumbsRef[0]),F=Math.floor(e/C),B=g-F,n=F<g;I.setState((function(g,e){return{itemSize:C,visibleItems:F,firstItem:n?I.getFirstItem(e.selectedItem):0,lastPosition:B,showArrows:n}}))}})),u(o(I),"handleClickItem",(function(g,e,t){if(!function(g){return g.hasOwnProperty("key")}(t)||"Enter"===t.key){var C=I.props.onSelectItem;"function"===typeof C&&C(g,e)}})),u(o(I),"onSwipeStart",(function(){I.setState({swiping:!0})})),u(o(I),"onSwipeEnd",(function(){I.setState({swiping:!1})})),u(o(I),"onSwipeMove",(function(g){var e=g.x;if(!I.state.itemSize||!I.itemsWrapperRef)return!1;var t=-I.state.firstItem*I.state.itemSize;0===t&&e>0&&(e=0),t===-I.state.visibleItems*I.state.itemSize&&e<0&&(e=0);var C=t+100/(I.itemsWrapperRef.clientWidth/e);return I.itemsListRef&&["WebkitTransform","MozTransform","MsTransform","OTransform","transform","msTransform"].forEach((function(g){I.itemsListRef.style[g]=(0,F.default)(C,"%",I.props.axis)})),!0})),u(o(I),"slideRight",(function(g){I.moveTo(I.state.firstItem-("number"===typeof g?g:1))})),u(o(I),"slideLeft",(function(g){I.moveTo(I.state.firstItem+("number"===typeof g?g:1))})),u(o(I),"moveTo",(function(g){g=(g=g<0?0:g)>=I.state.lastPosition?I.state.lastPosition:g,I.setState({firstItem:g})})),I.state={selectedItem:g.selectedItem,swiping:!1,showArrows:!1,firstItem:0,visibleItems:0,lastPosition:0},I}return I=i,(e=[{key:"componentDidMount",value:function(){this.setupThumbs()}},{key:"UNSAFE_componentWillReceiveProps",value:function(g){g.selectedItem!==this.state.selectedItem&&this.setState({selectedItem:g.selectedItem,firstItem:this.getFirstItem(g.selectedItem)})}},{key:"componentDidUpdate",value:function(g){this.props.children!==g.children&&this.updateSizes()}},{key:"componentWillUnmount",value:function(){this.destroyThumbs()}},{key:"setupThumbs",value:function(){(0,n.default)().addEventListener("resize",this.updateSizes),(0,n.default)().addEventListener("DOMContentLoaded",this.updateSizes),this.updateSizes()}},{key:"destroyThumbs",value:function(){(0,n.default)().removeEventListener("resize",this.updateSizes),(0,n.default)().removeEventListener("DOMContentLoaded",this.updateSizes)}},{key:"getFirstItem",value:function(g){var I=g;return g>=this.state.lastPosition&&(I=this.state.lastPosition),g<this.state.firstItem+this.state.visibleItems&&(I=this.state.firstItem),g<this.state.firstItem&&(I=g),I}},{key:"renderItems",value:function(){var g=this;return this.props.children.map((function(I,e){var Q=C.default.ITEM(!1,e===g.state.selectedItem),F={key:e,ref:function(I){return g.setThumbsRef(I,e)},className:Q,onClick:g.handleClickItem.bind(g,e,g.props.children[e]),onKeyDown:g.handleClickItem.bind(g,e,g.props.children[e]),"aria-label":"".concat(g.props.labels.item," ").concat(e+1),style:{width:g.props.thumbWidth}};return t.default.createElement("li",c({},F,{role:"button",tabIndex:0}),I)}))}},{key:"render",value:function(){var g=this;if(!this.props.children)return null;var I,e=t.Children.count(this.props.children)>1,Q=this.state.showArrows&&this.state.firstItem>0,n=this.state.showArrows&&this.state.firstItem<this.state.lastPosition,U=-this.state.firstItem*(this.state.itemSize||0),s=(0,F.default)(U,"px",this.props.axis),i=this.props.transitionTime+"ms";return I={WebkitTransform:s,MozTransform:s,MsTransform:s,OTransform:s,transform:s,msTransform:s,WebkitTransitionDuration:i,MozTransitionDuration:i,MsTransitionDuration:i,OTransitionDuration:i,transitionDuration:i,msTransitionDuration:i},t.default.createElement("div",{className:C.default.CAROUSEL(!1)},t.default.createElement("div",{className:C.default.WRAPPER(!1),ref:this.setItemsWrapperRef},t.default.createElement("button",{type:"button",className:C.default.ARROW_PREV(!Q),onClick:function(){return g.slideRight()},"aria-label":this.props.labels.leftArrow}),e?t.default.createElement(B.default,{tagName:"ul",className:C.default.SLIDER(!1,this.state.swiping),onSwipeLeft:this.slideLeft,onSwipeRight:this.slideRight,onSwipeMove:this.onSwipeMove,onSwipeStart:this.onSwipeStart,onSwipeEnd:this.onSwipeEnd,style:I,innerRef:this.setItemsListRef,allowMouseEvents:this.props.emulateTouch},this.renderItems()):t.default.createElement("ul",{className:C.default.SLIDER(!1,this.state.swiping),ref:function(I){return g.setItemsListRef(I)},style:I},this.renderItems()),t.default.createElement("button",{type:"button",className:C.default.ARROW_NEXT(!n),onClick:function(){return g.slideLeft()},"aria-label":this.props.labels.rightArrow})))}}])&&A(I.prototype,e),U&&A(I,U),i}(t.Component);I.default=y,u(y,"displayName","Thumbs"),u(y,"defaultProps",{axis:"horizontal",labels:{leftArrow:"previous slide / item",rightArrow:"next slide / item",item:"slide item"},selectedItem:0,thumbWidth:80,transitionTime:350})},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;I.default=function(){return window}},function(g,I,e){"use strict";var t=e(16),C=e(48),Q=e(5),F=e(0),B=(e(4),e(14)),n=e(21),U=e(925),s=F.forwardRef((function(g,I){var e,C=g.classes,n=g.className,s=g.component,i=void 0===s?"li":s,c=g.disableGutters,A=void 0!==c&&c,l=g.ListItemClasses,a=g.role,r=void 0===a?"menuitem":a,o=g.selected,d=g.tabIndex,u=Object(t.a)(g,["classes","className","component","disableGutters","ListItemClasses","role","selected","tabIndex"]);return g.disabled||(e=void 0!==d?d:-1),F.createElement(U.a,Object(Q.a)({button:!0,role:r,tabIndex:e,component:i,selected:o,disableGutters:A,classes:Object(Q.a)({dense:C.dense},l),className:Object(B.default)(C.root,n,o&&C.selected,!A&&C.gutters),ref:I},u))}));I.a=Object(n.a)((function(g){return{root:Object(Q.a)({},g.typography.body1,Object(C.a)({minHeight:48,paddingTop:6,paddingBottom:6,boxSizing:"border-box",width:"auto",overflow:"hidden",whiteSpace:"nowrap"},g.breakpoints.up("sm"),{minHeight:"auto"})),gutters:{},selected:{},dense:Object(Q.a)({},g.typography.body2,{minHeight:"auto"})}}),{name:"MuiMenuItem"})(s)},function(g,I,e){"use strict";g.exports=e(1186)},function(g,I,e){"use strict";I.__esModule=!0,I.default={noWobble:{stiffness:170,damping:26},gentle:{stiffness:120,damping:14},wobbly:{stiffness:180,damping:12},stiff:{stiffness:210,damping:20}},g.exports=I.default},function(g,I,e){"use strict";e.d(I,"a",(function(){return C}));var t=e(1682);function C(g){return Object(t.a)(g)}},function(g,I,e){"use strict";var t=e(5),C=e(599),Q=e(196);I.a=function(g){var I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object(C.a)(g,Object(t.a)({defaultTheme:Q.a},I))}},function(g,I){g.exports=function(g,I){(null==I||I>g.length)&&(I=g.length);for(var e=0,t=new Array(I);e<I;e++)t[e]=g[e];return t}},function(g,I,e){"use strict";var t=e(402),C=e(139),Q=e(680),F=(e(682),e(683));e(337),e(1211);function B(g,I,e){this.props=g,this.context=I,this.refs=F,this.updater=e||Q}function n(g,I,e){this.props=g,this.context=I,this.refs=F,this.updater=e||Q}function U(){}B.prototype.isReactComponent={},B.prototype.setState=function(g,I){"object"!==typeof g&&"function"!==typeof g&&null!=g&&t("85"),this.updater.enqueueSetState(this,g),I&&this.updater.enqueueCallback(this,I,"setState")},B.prototype.forceUpdate=function(g){this.updater.enqueueForceUpdate(this),g&&this.updater.enqueueCallback(this,g,"forceUpdate")},U.prototype=B.prototype,n.prototype=new U,n.prototype.constructor=n,C(n.prototype,B.prototype),n.prototype.isPureReactComponent=!0,g.exports={Component:B,PureComponent:n}},function(g,I,e){"use strict";e(513);var t={isMounted:function(g){return!1},enqueueCallback:function(g,I){},enqueueForceUpdate:function(g){},enqueueReplaceState:function(g,I){},enqueueSetState:function(g,I){}};g.exports=t},function(g,I,e){"use strict";function t(g){return function(){return g}}var C=function(){};C.thatReturns=t,C.thatReturnsFalse=t(!1),C.thatReturnsTrue=t(!0),C.thatReturnsNull=t(null),C.thatReturnsThis=function(){return this},C.thatReturnsArgument=function(g){return g},g.exports=C},function(g,I,e){"use strict";g.exports=!1},function(g,I,e){"use strict";g.exports={}},function(g,I,e){"use strict";g.exports={current:null}},function(g,I,e){"use strict";var t="function"===typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103;g.exports=t},function(g,I,e){var t=e(515),C=e(1230),Q=e(1231),F=t?t.toStringTag:void 0;g.exports=function(g){return null==g?void 0===g?"[object Undefined]":"[object Null]":F&&F in Object(g)?C(g):Q(g)}},function(g,I){g.exports=function(g){return null!=g&&"object"==typeof g}},function(g,I){var e=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");g.exports=function(g){return e.test(g)}},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(4),e(14)),B=e(248),n=e(21),U=e(205),s=Q.forwardRef((function(g,I){var e=g.children,n=g.classes,s=g.className,i=g.component,c=void 0===i?"div":i,A=g.disablePointerEvents,l=void 0!==A&&A,a=g.disableTypography,r=void 0!==a&&a,o=g.position,d=g.variant,u=Object(C.a)(g,["children","classes","className","component","disablePointerEvents","disableTypography","position","variant"]),y=Object(U.b)()||{},b=d;return d&&y.variant,y&&!b&&(b=y.variant),Q.createElement(U.a.Provider,{value:null},Q.createElement(c,Object(t.a)({className:Object(F.default)(n.root,s,l&&n.disablePointerEvents,y.hiddenLabel&&n.hiddenLabel,"filled"===b&&n.filled,{start:n.positionStart,end:n.positionEnd}[o],"dense"===y.margin&&n.marginDense),ref:I},u),"string"!==typeof e||r?e:Q.createElement(B.a,{color:"textSecondary"},e)))}));I.a=Object(n.a)({root:{display:"flex",height:"0.01em",maxHeight:"2em",alignItems:"center",whiteSpace:"nowrap"},filled:{"&$positionStart:not($hiddenLabel)":{marginTop:16}},positionStart:{marginRight:8},positionEnd:{marginLeft:8},disablePointerEvents:{pointerEvents:"none"},hiddenLabel:{},marginDense:{}},{name:"MuiInputAdornment"})(s)},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0});var t=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g},C=(B(e(405)),B(e(1269))),Q=B(e(1270)),F=B(e(519));function B(g){return g&&g.__esModule?g:{default:g}}var n=function(g){return C.default[g.smooth]||C.default.defaultEasing},U=function(){if("undefined"!==typeof window)return window.requestAnimationFrame||window.webkitRequestAnimationFrame}()||function(g,I,e){window.setTimeout(g,e||1e3/60,(new Date).getTime())},s=function(g){var I=g.data.containerElement;if(I&&I!==document&&I!==document.body)return I.scrollTop;var e=void 0!==window.pageXOffset,t="CSS1Compat"===(document.compatMode||"");return e?window.pageYOffset:t?document.documentElement.scrollTop:document.body.scrollTop},i=function g(I,e,t){var C=e.data;if(e.ignoreCancelEvents||!C.cancel)if(C.deltaTop=Math.round(C.targetPositionY-C.startPositionY),null===C.start&&(C.start=t),C.progress=t-C.start,C.percent=C.progress>=C.duration?1:I(C.progress/C.duration),C.currentPositionY=C.startPositionY+Math.ceil(C.deltaTop*C.percent),C.containerElement&&C.containerElement!==document&&C.containerElement!==document.body?C.containerElement.scrollTop=C.currentPositionY:window.scrollTo(0,C.currentPositionY),C.percent<1){var Q=g.bind(null,I,e);U.call(window,Q)}else F.default.registered.end&&F.default.registered.end(C.to,C.target,C.currentPositionY);else F.default.registered.end&&F.default.registered.end(C.to,C.target,C.currentPositionY)},c=function(g){g.data.containerElement=g?g.containerId?document.getElementById(g.containerId):g.container&&g.container.nodeType?g.container:document:null},A=function(g,I,e,t){if(I.data=I.data||{currentPositionY:0,startPositionY:0,targetPositionY:0,progress:0,duration:0,cancel:!1,target:null,containerElement:null,to:null,start:null,deltaTop:null,percent:null,delayTimeout:null},window.clearTimeout(I.data.delayTimeout),Q.default.subscribe((function(){I.data.cancel=!0})),c(I),I.data.start=null,I.data.cancel=!1,I.data.startPositionY=s(I),I.data.targetPositionY=I.absolute?g:g+I.data.startPositionY,I.data.startPositionY!==I.data.targetPositionY){I.data.deltaTop=Math.round(I.data.targetPositionY-I.data.startPositionY),I.data.duration=function(g){return"function"===typeof g?g:function(){return g}}(I.duration)(I.data.deltaTop),I.data.duration=isNaN(parseFloat(I.data.duration))?1e3:parseFloat(I.data.duration),I.data.to=e,I.data.target=t;var C=n(I),B=i.bind(null,C,I);I&&I.delay>0?I.data.delayTimeout=window.setTimeout((function(){F.default.registered.begin&&F.default.registered.begin(I.data.to,I.data.target),U.call(window,B)}),I.delay):(F.default.registered.begin&&F.default.registered.begin(I.data.to,I.data.target),U.call(window,B))}else F.default.registered.end&&F.default.registered.end(I.data.to,I.data.target,I.data.currentPositionY)},l=function(g){return(g=t({},g)).data=g.data||{currentPositionY:0,startPositionY:0,targetPositionY:0,progress:0,duration:0,cancel:!1,target:null,containerElement:null,to:null,start:null,deltaTop:null,percent:null,delayTimeout:null},g.absolute=!0,g};I.default={animateTopScroll:A,getAnimationType:n,scrollToTop:function(g){A(0,l(g))},scrollToBottom:function(g){g=l(g),c(g),A(function(g){var I=g.data.containerElement;if(I&&I!==document&&I!==document.body)return I.scrollHeight-I.offsetHeight;var e=document.body,t=document.documentElement;return Math.max(e.scrollHeight,e.offsetHeight,t.clientHeight,t.scrollHeight,t.offsetHeight)}(g),g)},scrollTo:function(g,I){A(g,l(I))},scrollMore:function(g,I){I=l(I),c(I),A(s(I)+g,I)}}},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0});e(518);var t,C=e(405),Q=(t=C)&&t.__esModule?t:{default:t};var F={mountFlag:!1,initialized:!1,scroller:null,containers:{},mount:function(g){this.scroller=g,this.handleHashChange=this.handleHashChange.bind(this),window.addEventListener("hashchange",this.handleHashChange),this.initStateFromHash(),this.mountFlag=!0},mapContainer:function(g,I){this.containers[g]=I},isMounted:function(){return this.mountFlag},isInitialized:function(){return this.initialized},initStateFromHash:function(){var g=this,I=this.getHash();I?window.setTimeout((function(){g.scrollTo(I,!0),g.initialized=!0}),10):this.initialized=!0},scrollTo:function(g,I){var e=this.scroller;if(e.get(g)&&(I||g!==e.getActiveLink())){var t=this.containers[g]||document;e.scrollTo(g,{container:t})}},getHash:function(){return Q.default.getHash()},changeHash:function(g){this.isInitialized()&&Q.default.getHash()!==g&&Q.default.pushHash(g)},handleHashChange:function(){this.scrollTo(this.getHash())},unmount:function(){this.scroller=null,this.containers=null,window.removeEventListener("hashchange",this.handleHashChange)}};I.default=F},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0});var t=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g},C=function(){function g(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}return function(I,e,t){return e&&g(I.prototype,e),t&&g(I,t),I}}(),Q=n(e(0)),F=(n(e(42)),n(e(404))),B=n(e(4));function n(g){return g&&g.__esModule?g:{default:g}}I.default=function(g){var I=function(I){function e(g){!function(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}(this,e);var I=function(g,I){if(!g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!I||"object"!==typeof I&&"function"!==typeof I?g:I}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,g));return I.childBindings={domNode:null},I}return function(g,I){if("function"!==typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function, not "+typeof I);g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,enumerable:!1,writable:!0,configurable:!0}}),I&&(Object.setPrototypeOf?Object.setPrototypeOf(g,I):g.__proto__=I)}(e,I),C(e,[{key:"componentDidMount",value:function(){if("undefined"===typeof window)return!1;this.registerElems(this.props.name)}},{key:"componentDidUpdate",value:function(g){this.props.name!==g.name&&this.registerElems(this.props.name)}},{key:"componentWillUnmount",value:function(){if("undefined"===typeof window)return!1;F.default.unregister(this.props.name)}},{key:"registerElems",value:function(g){F.default.register(g,this.childBindings.domNode)}},{key:"render",value:function(){return Q.default.createElement(g,t({},this.props,{parentBindings:this.childBindings}))}}]),e}(Q.default.Component);return I.propTypes={name:B.default.string,id:B.default.string},I}},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(4),e(14)),B=e(21),n=e(38),U=Q.forwardRef((function(g,I){var e=g.absolute,B=void 0!==e&&e,n=g.classes,U=g.className,s=g.component,i=void 0===s?"hr":s,c=g.flexItem,A=void 0!==c&&c,l=g.light,a=void 0!==l&&l,r=g.orientation,o=void 0===r?"horizontal":r,d=g.role,u=void 0===d?"hr"!==i?"separator":void 0:d,y=g.variant,b=void 0===y?"fullWidth":y,Z=Object(C.a)(g,["absolute","classes","className","component","flexItem","light","orientation","role","variant"]);return Q.createElement(i,Object(t.a)({className:Object(F.default)(n.root,U,"fullWidth"!==b&&n[b],B&&n.absolute,A&&n.flexItem,a&&n.light,"vertical"===o&&n.vertical),role:u,ref:I},Z))}));I.a=Object(B.a)((function(g){return{root:{height:1,margin:0,border:"none",flexShrink:0,backgroundColor:g.palette.divider},absolute:{position:"absolute",bottom:0,left:0,width:"100%"},inset:{marginLeft:72},light:{backgroundColor:Object(n.d)(g.palette.divider,.08)},middle:{marginLeft:g.spacing(2),marginRight:g.spacing(2)},vertical:{height:"100%",width:1},flexItem:{alignSelf:"stretch",height:"auto"}}}),{name:"MuiDivider"})(U)},function(g,I,e){},function(g,I){g.exports=function(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0});var t=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g},C=e(0),Q=n(C),F=n(e(4)),B=(n(e(697)),e(1305));function n(g){return g&&g.__esModule?g:{default:g}}function U(g,I){var e=g.value,F=g.parse,n=g.format,U=g.inputComponent,i=g.onChange,c=g.onCut,A=g.onPaste,l=g.onKeyDown,a=function(g,I){var e={};for(var t in g)I.indexOf(t)>=0||Object.prototype.hasOwnProperty.call(g,t)&&(e[t]=g[t]);return e}(g,["value","parse","format","inputComponent","onChange","onCut","onPaste","onKeyDown"]),r=(0,C.useRef)();I=I||r;var o=(0,C.useCallback)((function(g){return(0,B.onChange)(g,I.current,F,n,i)}),[I,F,n,i]),d=(0,C.useCallback)((function(g){return A&&A(g),(0,B.onPaste)(g,I.current,F,n,i)}),[I,F,n,i,A]),u=(0,C.useCallback)((function(g){return c&&c(g),(0,B.onCut)(g,I.current,F,n,i)}),[I,F,n,i,c]),y=(0,C.useCallback)((function(g){return l&&l(g),(0,B.onKeyDown)(g,I.current,F,n,i)}),[I,F,n,i,l]);return Q.default.createElement(U,t({},a,{ref:I,value:n(s(e)?"":e).text,onKeyDown:y,onChange:o,onPaste:d,onCut:u}))}function s(g){return void 0===g||null===g}(U=Q.default.forwardRef(U)).propTypes={parse:F.default.func.isRequired,format:F.default.func.isRequired,inputComponent:F.default.elementType.isRequired,type:F.default.string.isRequired,value:F.default.string,onChange:F.default.func.isRequired,onKeyDown:F.default.func,onCut:F.default.func,onPaste:F.default.func},U.defaultProps={inputComponent:"input",type:"text"},I.default=U},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0}),I.default=function(g,I,e){var t="",C=0,Q=0;for(;Q<g.length;){var F=e(g[Q],t);void 0!==F&&(t+=F,void 0!==I&&(I===Q?C=t.length-1:I>Q&&(C=t.length))),Q++}void 0===I&&(C=t.length);return{value:t,caret:C}}},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0}),I.count_occurences=function(g,I){var e=0,t=I.split(""),C=Array.isArray(t),Q=0;for(t=C?t:t[Symbol.iterator]();;){var F;if(C){if(Q>=t.length)break;F=t[Q++]}else{if((Q=t.next()).done)break;F=Q.value}F===g&&e++}return e}},function(g,I,e){"use strict";I.__esModule=!0;var t=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g},C=e(0),Q=U(C),F=U(e(4)),B=U(e(700)),n=U(e(701));function U(g){return g&&g.__esModule?g:{default:g}}var s={width:"100%",height:"100%",left:0,top:0,margin:0,padding:0,position:"absolute"},i={width:0,height:0,left:0,top:0,backgroundColor:"transparent",position:"absolute"},c=function(g){function I(e){!function(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}(this,I);var C=function(g,I){if(!g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!I||"object"!==typeof I&&"function"!==typeof I?g:I}(this,g.call(this,e));return C._getState=function(){return{children:C.props.dispatcher.getChildren(),updateCounter:C.props.dispatcher.getUpdateCounter()}},C._onChangeHandler=function(){if(C.dimensionsCache_){var g=(C.state.children||[]).length,I=C._getState();C.setState(I,(function(){return(I.children||[]).length!==g&&C._onMouseChangeHandler()}))}},C._onChildClick=function(){if(C.props.onChildClick&&C.hoverChildProps_){var g=C.hoverKey_,I=C.hoverChildProps_;C.props.onChildClick(g,I)}},C._onChildMouseDown=function(){if(C.props.onChildMouseDown&&C.hoverChildProps_){var g=C.hoverKey_,I=C.hoverChildProps_;C.props.onChildMouseDown(g,I)}},C._onChildMouseEnter=function(g,I){C.dimensionsCache_&&(C.props.onChildMouseEnter&&C.props.onChildMouseEnter(g,I),C.hoverChildProps_=I,C.hoverKey_=g,C.setState({hoverKey:g}))},C._onChildMouseLeave=function(){if(C.dimensionsCache_){var g=C.hoverKey_,I=C.hoverChildProps_;void 0!==g&&null!==g&&(C.props.onChildMouseLeave&&C.props.onChildMouseLeave(g,I),C.hoverKey_=null,C.hoverChildProps_=null,C.setState({hoverKey:null}))}},C._onMouseAllow=function(g){g||C._onChildMouseLeave(),C.allowMouse_=g},C._onMouseChangeHandler=function(){C.allowMouse_&&C._onMouseChangeHandlerRaf()},C._onMouseChangeHandlerRaf=function(){if(C.dimensionsCache_){var g=C.props.dispatcher.getMousePosition();if(g){var I=[],e=C.props.getHoverDistance();if(Q.default.Children.forEach(C.state.children,(function(t,Q){if(t&&(void 0!==t.props.latLng||void 0!==t.props.lat||void 0!==t.props.lng)){var F=void 0!==t.key&&null!==t.key?t.key:Q,B=C.props.distanceToMouse(C.dimensionsCache_[F],g,t.props);B<e&&I.push({key:F,dist:B,props:t.props})}})),I.length){I.sort((function(g,I){return g.dist-I.dist}));var t=I[0].key,F=I[0].props;C.hoverKey_!==t&&(C._onChildMouseLeave(),C._onChildMouseEnter(t,F))}else C._onChildMouseLeave()}else C._onChildMouseLeave()}},C._getDimensions=function(g){var I=g;return C.dimensionsCache_[I]},C.props.dispatcher.on("kON_CHANGE",C._onChangeHandler),C.props.dispatcher.on("kON_MOUSE_POSITION_CHANGE",C._onMouseChangeHandler),C.props.dispatcher.on("kON_CLICK",C._onChildClick),C.props.dispatcher.on("kON_MDOWN",C._onChildMouseDown),C.dimensionsCache_={},C.hoverKey_=null,C.hoverChildProps_=null,C.allowMouse_=!0,C.state=t({},C._getState(),{hoverKey:null}),C}return function(g,I){if("function"!==typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function, not "+typeof I);g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,enumerable:!1,writable:!0,configurable:!0}}),I&&(Object.setPrototypeOf?Object.setPrototypeOf(g,I):g.__proto__=I)}(I,g),I.prototype.shouldComponentUpdate=function(g,I){return!0===this.props.experimental?!(0,n.default)(this.props,g)||!(0,n.default)((0,B.default)(this.state,["hoverKey"]),(0,B.default)(I,["hoverKey"])):!(0,n.default)(this.props,g)||!(0,n.default)(this.state,I)},I.prototype.componentWillUnmount=function(){this.props.dispatcher.removeListener("kON_CHANGE",this._onChangeHandler),this.props.dispatcher.removeListener("kON_MOUSE_POSITION_CHANGE",this._onMouseChangeHandler),this.props.dispatcher.removeListener("kON_CLICK",this._onChildClick),this.props.dispatcher.removeListener("kON_MDOWN",this._onChildMouseDown),this.dimensionsCache_=null},I.prototype.render=function(){var g=this,I=this.props.style||s;this.dimensionsCache_={};var e=Q.default.Children.map(this.state.children,(function(I,e){if(I){if(void 0===I.props.latLng&&void 0===I.props.lat&&void 0===I.props.lng)return Q.default.cloneElement(I,{$geoService:g.props.geoService,$onMouseAllow:g._onMouseAllow,$prerender:g.props.prerender});var C=void 0!==I.props.latLng?I.props.latLng:{lat:I.props.lat,lng:I.props.lng},F=g.props.insideMapPanes?g.props.geoService.fromLatLngToDivPixel(C):g.props.geoService.fromLatLngToCenterPixel(C),B={left:F.x,top:F.y};if(void 0!==I.props.seLatLng||void 0!==I.props.seLat&&void 0!==I.props.seLng){var n=void 0!==I.props.seLatLng?I.props.seLatLng:{lat:I.props.seLat,lng:I.props.seLng},U=g.props.insideMapPanes?g.props.geoService.fromLatLngToDivPixel(n):g.props.geoService.fromLatLngToCenterPixel(n);B.width=U.x-F.x,B.height=U.y-F.y}var s=g.props.geoService.fromLatLngToContainerPixel(C),c=void 0!==I.key&&null!==I.key?I.key:e;return g.dimensionsCache_[c]=t({x:s.x,y:s.y},C),Q.default.createElement("div",{key:c,style:t({},i,B),className:I.props.$markerHolderClassName},Q.default.cloneElement(I,{$hover:c===g.state.hoverKey,$getDimensions:g._getDimensions,$dimensionKey:c,$geoService:g.props.geoService,$onMouseAllow:g._onMouseAllow,$prerender:g.props.prerender}))}}));return Q.default.createElement("div",{style:I},e)},I}(C.Component);c.propTypes={geoService:F.default.any,style:F.default.any,distanceToMouse:F.default.func,dispatcher:F.default.any,onChildClick:F.default.func,onChildMouseDown:F.default.func,onChildMouseLeave:F.default.func,onChildMouseEnter:F.default.func,getHoverDistance:F.default.func,insideMapPanes:F.default.bool,prerender:F.default.bool},c.defaultProps={insideMapPanes:!1,prerender:!1},I.default=c},function(g,I,e){"use strict";I.__esModule=!0;I.default=function(g,I){for(var e=function(g,I){var e={};for(var t in g)I.indexOf(t)>=0||Object.prototype.hasOwnProperty.call(g,t)&&(e[t]=g[t]);return e}(g,[]),t=0;t<I.length;t++){var C=I[t];C in e&&delete e[C]}return e}},function(g,I,e){"use strict";var t="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"===typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g},C=Object.prototype.hasOwnProperty;function Q(g,I){return g===I?0!==g||0!==I||1/g===1/I:g!==g&&I!==I}g.exports=function(g,I){if(Q(g,I))return!0;if("object"!==("undefined"===typeof g?"undefined":t(g))||null===g||"object"!==("undefined"===typeof I?"undefined":t(I))||null===I)return!1;var e=Object.keys(g),F=Object.keys(I);if(e.length!==F.length)return!1;for(var B=0;B<e.length;B++)if(!C.call(I,e[B])||!Q(g[e[B]],I[e[B]]))return!1;return!0}},function(g,I,e){"use strict";function t(g,I){this.x=g,this.y=I}g.exports=t,t.prototype={clone:function(){return new t(this.x,this.y)},add:function(g){return this.clone()._add(g)},sub:function(g){return this.clone()._sub(g)},multByPoint:function(g){return this.clone()._multByPoint(g)},divByPoint:function(g){return this.clone()._divByPoint(g)},mult:function(g){return this.clone()._mult(g)},div:function(g){return this.clone()._div(g)},rotate:function(g){return this.clone()._rotate(g)},rotateAround:function(g,I){return this.clone()._rotateAround(g,I)},matMult:function(g){return this.clone()._matMult(g)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(g){return this.x===g.x&&this.y===g.y},dist:function(g){return Math.sqrt(this.distSqr(g))},distSqr:function(g){var I=g.x-this.x,e=g.y-this.y;return I*I+e*e},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(g){return Math.atan2(this.y-g.y,this.x-g.x)},angleWith:function(g){return this.angleWithSep(g.x,g.y)},angleWithSep:function(g,I){return Math.atan2(this.x*I-this.y*g,this.x*g+this.y*I)},_matMult:function(g){var I=g[0]*this.x+g[1]*this.y,e=g[2]*this.x+g[3]*this.y;return this.x=I,this.y=e,this},_add:function(g){return this.x+=g.x,this.y+=g.y,this},_sub:function(g){return this.x-=g.x,this.y-=g.y,this},_mult:function(g){return this.x*=g,this.y*=g,this},_div:function(g){return this.x/=g,this.y/=g,this},_multByPoint:function(g){return this.x*=g.x,this.y*=g.y,this},_divByPoint:function(g){return this.x/=g.x,this.y/=g.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var g=this.y;return this.y=this.x,this.x=-g,this},_rotate:function(g){var I=Math.cos(g),e=Math.sin(g),t=I*this.x-e*this.y,C=e*this.x+I*this.y;return this.x=t,this.y=C,this},_rotateAround:function(g,I){var e=Math.cos(g),t=Math.sin(g),C=I.x+e*(this.x-I.x)-t*(this.y-I.y),Q=I.y+t*(this.x-I.x)+e*(this.y-I.y);return this.x=C,this.y=Q,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},t.convert=function(g){return g instanceof t?g:Array.isArray(g)?new t(g[0],g[1]):g}},function(g,I,e){"use strict";I.__esModule=!0;var t=e(704);var C=function(){function g(I,e){if(function(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}(this,g),isNaN(I)||isNaN(e))throw new Error("Invalid LatLng object: ("+I+", "+e+")");this.lat=+I,this.lng=+e}return g.prototype.wrap=function(){return new g(this.lat,(0,t.wrap)(this.lng,-180,180))},g}();C.convert=function(g){return g instanceof C?g:Array.isArray(g)?new C(g[0],g[1]):"lng"in g&&"lat"in g?new C(g.lat,g.lng):g},I.default=C},function(g,I,e){"use strict";I.__esModule=!0,I.wrap=function(g,I,e){var t=e-I;return g===e?g:((g-I)%t+t)%t+I}},function(g,I,e){"use strict";I.__esModule=!0,I.default=function(g,I,e,t){g.addEventListener(I,e,function(){var g=!1;try{var I=Object.defineProperty({},"passive",{get:function(){g=!0}});window.addEventListener("test",I,I),window.removeEventListener("test",I,I)}catch(e){g=!1}return g}()?{capture:t,passive:!0}:t)}},function(g,I){g.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACkAAAApCAQAAAACach9AAACMUlEQVR4Ae3ShY7jQBAE0Aoz/f9/HTMzhg1zrdKUrJbdx+Kd2nD8VNudfsL/Th///dyQN2TH6f3y/BGpC379rV+S+qqetBOxImNQXL8JCAr2V4iMQXHGNJxeCfZXhSRBcQMfvkOWUdtfzlLgAENmZDcmo2TVmt8OSM2eXxBp3DjHSMFutqS7SbmemzBiR+xpKCNUIRkdkkYxhAkyGoBvyQFEJEefwSmmvBfJuJ6aKqKWnAkvGZOaZXTUgFqYULWNSHUckZuR1HIIimUExutRxwzOLROIG4vKmCKQt364mIlhSyzAf1m9lHZHJZrlAOMMztRRiKimp/rpdJDc9Awry5xTZCte7FHtuS8wJgeYGrex28xNTd086Dik7vUMscQOa8y4DoGtCCSkAKlNwpgNtphjrC6MIHUkR6YWxxs6Sc5xqn222mmCRFzIt8lEdKx+ikCtg91qS2WpwVfBelJCiQJwvzixfI9cxZQWgiSJelKnwBElKYtDOb2MFbhmUigbReQBV0Cg4+qMXSxXSyGUn4UbF8l+7qdSGnTC0XLCmahIgUHLhLOhpVCtw4CzYXvLQWQbJNmxoCsOKAxSgBJno75avolkRw8iIAFcsdc02e9iyCd8tHwmeSSoKTowIgvscSGZUOA7PuCN5b2BX9mQM7S0wYhMNU74zgsPBj3HU7wguAfnxxjFQGBE6pwN+GjME9zHY7zGp8wVxMShYX9NXvEWD3HbwJf4giO4CFIQxXScH1/TM+04kkBiAAAAAElFTkSuQmCC"},function(g,I){g.exports={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8}},function(g,I){g.exports={L:1,M:0,Q:3,H:2}},function(g,I,e){var t=e(710);function C(g,I){if(void 0==g.length)throw new Error(g.length+"/"+I);for(var e=0;e<g.length&&0==g[e];)e++;this.num=new Array(g.length-e+I);for(var t=0;t<g.length-e;t++)this.num[t]=g[t+e]}C.prototype={get:function(g){return this.num[g]},getLength:function(){return this.num.length},multiply:function(g){for(var I=new Array(this.getLength()+g.getLength()-1),e=0;e<this.getLength();e++)for(var Q=0;Q<g.getLength();Q++)I[e+Q]^=t.gexp(t.glog(this.get(e))+t.glog(g.get(Q)));return new C(I,0)},mod:function(g){if(this.getLength()-g.getLength()<0)return this;for(var I=t.glog(this.get(0))-t.glog(g.get(0)),e=new Array(this.getLength()),Q=0;Q<this.getLength();Q++)e[Q]=this.get(Q);for(Q=0;Q<g.getLength();Q++)e[Q]^=t.gexp(t.glog(g.get(Q))+I);return new C(e,0).mod(g)}},g.exports=C},function(g,I){for(var e={glog:function(g){if(g<1)throw new Error("glog("+g+")");return e.LOG_TABLE[g]},gexp:function(g){for(;g<0;)g+=255;for(;g>=256;)g-=255;return e.EXP_TABLE[g]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)},t=0;t<8;t++)e.EXP_TABLE[t]=1<<t;for(t=8;t<256;t++)e.EXP_TABLE[t]=e.EXP_TABLE[t-4]^e.EXP_TABLE[t-5]^e.EXP_TABLE[t-6]^e.EXP_TABLE[t-8];for(t=0;t<255;t++)e.LOG_TABLE[e.EXP_TABLE[t]]=t;g.exports=e},function(g,I){var e="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof window.msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto);if(e){var t=new Uint8Array(16);g.exports=function(){return e(t),t}}else{var C=new Array(16);g.exports=function(){for(var g,I=0;I<16;I++)0===(3&I)&&(g=4294967296*Math.random()),C[I]=g>>>((3&I)<<3)&255;return C}}},function(g,I){for(var e=[],t=0;t<256;++t)e[t]=(t+256).toString(16).substr(1);g.exports=function(g,I){var t=I||0,C=e;return[C[g[t++]],C[g[t++]],C[g[t++]],C[g[t++]],"-",C[g[t++]],C[g[t++]],"-",C[g[t++]],C[g[t++]],"-",C[g[t++]],C[g[t++]],"-",C[g[t++]],C[g[t++]],C[g[t++]],C[g[t++]],C[g[t++]],C[g[t++]]].join("")}},function(g,I){var e=/^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,t=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];g.exports=function(g){var I=g,C=g.indexOf("["),Q=g.indexOf("]");-1!=C&&-1!=Q&&(g=g.substring(0,C)+g.substring(C,Q).replace(/:/g,";")+g.substring(Q,g.length));for(var F=e.exec(g||""),B={},n=14;n--;)B[t[n]]=F[n]||"";return-1!=C&&-1!=Q&&(B.source=I,B.host=B.host.substring(1,B.host.length-1).replace(/;/g,":"),B.authority=B.authority.replace("[","").replace("]","").replace(/;/g,":"),B.ipv6uri=!0),B}},function(g,I,e){var t=e(1343),C=e(1344),Q=e(512),F=e(1345);g.exports=function(g){return t(g)||C(g)||Q(g)||F()}},function(g,I){var e=1e3,t=6e4,C=60*t,Q=24*C;function F(g,I,e,t){var C=I>=1.5*e;return Math.round(g/e)+" "+t+(C?"s":"")}g.exports=function(g,I){I=I||{};var B=typeof g;if("string"===B&&g.length>0)return function(g){if((g=String(g)).length>100)return;var I=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(g);if(!I)return;var F=parseFloat(I[1]);switch((I[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*F;case"weeks":case"week":case"w":return 6048e5*F;case"days":case"day":case"d":return F*Q;case"hours":case"hour":case"hrs":case"hr":case"h":return F*C;case"minutes":case"minute":case"mins":case"min":case"m":return F*t;case"seconds":case"second":case"secs":case"sec":case"s":return F*e;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return F;default:return}}(g);if("number"===B&&isFinite(g))return I.long?function(g){var I=Math.abs(g);if(I>=Q)return F(g,I,Q,"day");if(I>=C)return F(g,I,C,"hour");if(I>=t)return F(g,I,t,"minute");if(I>=e)return F(g,I,e,"second");return g+" ms"}(g):function(g){var I=Math.abs(g);if(I>=Q)return Math.round(g/Q)+"d";if(I>=C)return Math.round(g/C)+"h";if(I>=t)return Math.round(g/t)+"m";if(I>=e)return Math.round(g/e)+"s";return g+"ms"}(g);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(g))}},function(g,I){var e={}.toString;g.exports=Array.isArray||function(g){return"[object Array]"==e.call(g)}},function(g,I,e){(function(I){g.exports=function(g){return e&&I.isBuffer(g)||t&&(g instanceof ArrayBuffer||function(g){return"function"===typeof ArrayBuffer.isView?ArrayBuffer.isView(g):g.buffer instanceof ArrayBuffer}(g))};var e="function"===typeof I&&"function"===typeof I.isBuffer,t="function"===typeof ArrayBuffer}).call(this,e(103).Buffer)},function(g,I){var e={}.toString;g.exports=Array.isArray||function(g){return"[object Array]"==e.call(g)}},function(g,I,e){var t=e(1353),C=e(725),Q=e(726),F=e(523),B=e(727),n=e(728),U=e(407)("socket.io-client:manager"),s=e(724),i=e(1369),c=Object.prototype.hasOwnProperty;function A(g,I){if(!(this instanceof A))return new A(g,I);g&&"object"===typeof g&&(I=g,g=void 0),(I=I||{}).path=I.path||"/socket.io",this.nsps={},this.subs=[],this.opts=I,this.reconnection(!1!==I.reconnection),this.reconnectionAttempts(I.reconnectionAttempts||1/0),this.reconnectionDelay(I.reconnectionDelay||1e3),this.reconnectionDelayMax(I.reconnectionDelayMax||5e3),this.randomizationFactor(I.randomizationFactor||.5),this.backoff=new i({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==I.timeout?2e4:I.timeout),this.readyState="closed",this.uri=g,this.connecting=[],this.lastPing=null,this.encoding=!1,this.packetBuffer=[];var e=I.parser||F;this.encoder=new e.Encoder,this.decoder=new e.Decoder,this.autoConnect=!1!==I.autoConnect,this.autoConnect&&this.open()}g.exports=A,A.prototype.emitAll=function(){for(var g in this.emit.apply(this,arguments),this.nsps)c.call(this.nsps,g)&&this.nsps[g].emit.apply(this.nsps[g],arguments)},A.prototype.updateSocketIds=function(){for(var g in this.nsps)c.call(this.nsps,g)&&(this.nsps[g].id=this.generateId(g))},A.prototype.generateId=function(g){return("/"===g?"":g+"#")+this.engine.id},Q(A.prototype),A.prototype.reconnection=function(g){return arguments.length?(this._reconnection=!!g,this):this._reconnection},A.prototype.reconnectionAttempts=function(g){return arguments.length?(this._reconnectionAttempts=g,this):this._reconnectionAttempts},A.prototype.reconnectionDelay=function(g){return arguments.length?(this._reconnectionDelay=g,this.backoff&&this.backoff.setMin(g),this):this._reconnectionDelay},A.prototype.randomizationFactor=function(g){return arguments.length?(this._randomizationFactor=g,this.backoff&&this.backoff.setJitter(g),this):this._randomizationFactor},A.prototype.reconnectionDelayMax=function(g){return arguments.length?(this._reconnectionDelayMax=g,this.backoff&&this.backoff.setMax(g),this):this._reconnectionDelayMax},A.prototype.timeout=function(g){return arguments.length?(this._timeout=g,this):this._timeout},A.prototype.maybeReconnectOnOpen=function(){!this.reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()},A.prototype.open=A.prototype.connect=function(g,I){if(U("readyState %s",this.readyState),~this.readyState.indexOf("open"))return this;U("opening %s",this.uri),this.engine=t(this.uri,this.opts);var e=this.engine,C=this;this.readyState="opening",this.skipReconnect=!1;var Q=B(e,"open",(function(){C.onopen(),g&&g()})),F=B(e,"error",(function(I){if(U("connect_error"),C.cleanup(),C.readyState="closed",C.emitAll("connect_error",I),g){var e=new Error("Connection error");e.data=I,g(e)}else C.maybeReconnectOnOpen()}));if(!1!==this._timeout){var n=this._timeout;U("connect attempt will timeout after %d",n);var s=setTimeout((function(){U("connect attempt timed out after %d",n),Q.destroy(),e.close(),e.emit("error","timeout"),C.emitAll("connect_timeout",n)}),n);this.subs.push({destroy:function(){clearTimeout(s)}})}return this.subs.push(Q),this.subs.push(F),this},A.prototype.onopen=function(){U("open"),this.cleanup(),this.readyState="open",this.emit("open");var g=this.engine;this.subs.push(B(g,"data",n(this,"ondata"))),this.subs.push(B(g,"ping",n(this,"onping"))),this.subs.push(B(g,"pong",n(this,"onpong"))),this.subs.push(B(g,"error",n(this,"onerror"))),this.subs.push(B(g,"close",n(this,"onclose"))),this.subs.push(B(this.decoder,"decoded",n(this,"ondecoded")))},A.prototype.onping=function(){this.lastPing=new Date,this.emitAll("ping")},A.prototype.onpong=function(){this.emitAll("pong",new Date-this.lastPing)},A.prototype.ondata=function(g){this.decoder.add(g)},A.prototype.ondecoded=function(g){this.emit("packet",g)},A.prototype.onerror=function(g){U("error",g),this.emitAll("error",g)},A.prototype.socket=function(g,I){var e=this.nsps[g];if(!e){e=new C(this,g,I),this.nsps[g]=e;var t=this;e.on("connecting",Q),e.on("connect",(function(){e.id=t.generateId(g)})),this.autoConnect&&Q()}function Q(){~s(t.connecting,e)||t.connecting.push(e)}return e},A.prototype.destroy=function(g){var I=s(this.connecting,g);~I&&this.connecting.splice(I,1),this.connecting.length||this.close()},A.prototype.packet=function(g){U("writing packet %j",g);var I=this;g.query&&0===g.type&&(g.nsp+="?"+g.query),I.encoding?I.packetBuffer.push(g):(I.encoding=!0,this.encoder.encode(g,(function(e){for(var t=0;t<e.length;t++)I.engine.write(e[t],g.options);I.encoding=!1,I.processPacketQueue()})))},A.prototype.processPacketQueue=function(){if(this.packetBuffer.length>0&&!this.encoding){var g=this.packetBuffer.shift();this.packet(g)}},A.prototype.cleanup=function(){U("cleanup");for(var g=this.subs.length,I=0;I<g;I++){this.subs.shift().destroy()}this.packetBuffer=[],this.encoding=!1,this.lastPing=null,this.decoder.destroy()},A.prototype.close=A.prototype.disconnect=function(){U("disconnect"),this.skipReconnect=!0,this.reconnecting=!1,"opening"===this.readyState&&this.cleanup(),this.backoff.reset(),this.readyState="closed",this.engine&&this.engine.close()},A.prototype.onclose=function(g){U("onclose"),this.cleanup(),this.backoff.reset(),this.readyState="closed",this.emit("close",g),this._reconnection&&!this.skipReconnect&&this.reconnect()},A.prototype.reconnect=function(){if(this.reconnecting||this.skipReconnect)return this;var g=this;if(this.backoff.attempts>=this._reconnectionAttempts)U("reconnect failed"),this.backoff.reset(),this.emitAll("reconnect_failed"),this.reconnecting=!1;else{var I=this.backoff.duration();U("will wait %dms before reconnect attempt",I),this.reconnecting=!0;var e=setTimeout((function(){g.skipReconnect||(U("attempting reconnect"),g.emitAll("reconnect_attempt",g.backoff.attempts),g.emitAll("reconnecting",g.backoff.attempts),g.skipReconnect||g.open((function(I){I?(U("reconnect attempt error"),g.reconnecting=!1,g.reconnect(),g.emitAll("reconnect_error",I.data)):(U("reconnect success"),g.onreconnect())})))}),I);this.subs.push({destroy:function(){clearTimeout(e)}})}},A.prototype.onreconnect=function(){var g=this.backoff.attempts;this.reconnecting=!1,this.backoff.reset(),this.updateSocketIds(),this.emitAll("reconnect",g)}},function(g,I,e){var t=e(524),C=e(1356),Q=e(1365),F=e(1366);I.polling=function(g){var I=!1,e=!1,F=!1!==g.jsonp;if("undefined"!==typeof location){var B="https:"===location.protocol,n=location.port;n||(n=B?443:80),I=g.hostname!==location.hostname||n!==g.port,e=g.secure!==B}if(g.xdomain=I,g.xscheme=e,"open"in new t(g)&&!g.forceJSONP)return new C(g);if(!F)throw new Error("JSONP disabled");return new Q(g)},I.websocket=F},function(g,I,e){var t=e(526),C=e(408),Q=e(285),F=e(409),B=e(723),n=e(410)("engine.io-client:polling");g.exports=s;var U=null!=new(e(524))({xdomain:!1}).responseType;function s(g){var I=g&&g.forceBase64;U&&!I||(this.supportsBinary=!1),t.call(this,g)}F(s,t),s.prototype.name="polling",s.prototype.doOpen=function(){this.poll()},s.prototype.pause=function(g){var I=this;function e(){n("paused"),I.readyState="paused",g()}if(this.readyState="pausing",this.polling||!this.writable){var t=0;this.polling&&(n("we are currently polling - waiting to pause"),t++,this.once("pollComplete",(function(){n("pre-pause polling complete"),--t||e()}))),this.writable||(n("we are currently writing - waiting to pause"),t++,this.once("drain",(function(){n("pre-pause writing complete"),--t||e()})))}else e()},s.prototype.poll=function(){n("polling"),this.polling=!0,this.doPoll(),this.emit("poll")},s.prototype.onData=function(g){var I=this;n("polling got data %s",g);Q.decodePayload(g,this.socket.binaryType,(function(g,e,t){if("opening"===I.readyState&&I.onOpen(),"close"===g.type)return I.onClose(),!1;I.onPacket(g)})),"closed"!==this.readyState&&(this.polling=!1,this.emit("pollComplete"),"open"===this.readyState?this.poll():n('ignoring poll - transport state "%s"',this.readyState))},s.prototype.doClose=function(){var g=this;function I(){n("writing close packet"),g.write([{type:"close"}])}"open"===this.readyState?(n("transport open - closing"),I()):(n("transport not open - deferring close"),this.once("open",I))},s.prototype.write=function(g){var I=this;this.writable=!1;var e=function(){I.writable=!0,I.emit("drain")};Q.encodePayload(g,this.supportsBinary,(function(g){I.doWrite(g,e)}))},s.prototype.uri=function(){var g=this.query||{},I=this.secure?"https":"http",e="";return!1!==this.timestampRequests&&(g[this.timestampParam]=B()),this.supportsBinary||g.sid||(g.b64=1),g=C.encode(g),this.port&&("https"===I&&443!==Number(this.port)||"http"===I&&80!==Number(this.port))&&(e=":"+this.port),g.length&&(g="?"+g),I+"://"+(-1!==this.hostname.indexOf(":")?"["+this.hostname+"]":this.hostname)+e+this.path+g}},function(g,I,e){(function(I){var t=e(1358),C=Object.prototype.toString,Q="function"===typeof Blob||"undefined"!==typeof Blob&&"[object BlobConstructor]"===C.call(Blob),F="function"===typeof File||"undefined"!==typeof File&&"[object FileConstructor]"===C.call(File);g.exports=function g(e){if(!e||"object"!==typeof e)return!1;if(t(e)){for(var C=0,B=e.length;C<B;C++)if(g(e[C]))return!0;return!1}if("function"===typeof I&&I.isBuffer&&I.isBuffer(e)||"function"===typeof ArrayBuffer&&e instanceof ArrayBuffer||Q&&e instanceof Blob||F&&e instanceof File)return!0;if(e.toJSON&&"function"===typeof e.toJSON&&1===arguments.length)return g(e.toJSON(),!0);for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&g(e[n]))return!0;return!1}}).call(this,e(103).Buffer)},function(g,I,e){"use strict";var t,C="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),Q={},F=0,B=0;function n(g){var I="";do{I=C[g%64]+I,g=Math.floor(g/64)}while(g>0);return I}function U(){var g=n(+new Date);return g!==t?(F=0,t=g):g+"."+n(F++)}for(;B<64;B++)Q[C[B]]=B;U.encode=n,U.decode=function(g){var I=0;for(B=0;B<g.length;B++)I=64*I+Q[g.charAt(B)];return I},g.exports=U},function(g,I){var e=[].indexOf;g.exports=function(g,I){if(e)return g.indexOf(I);for(var t=0;t<g.length;++t)if(g[t]===I)return t;return-1}},function(g,I,e){var t=e(523),C=e(726),Q=e(1368),F=e(727),B=e(728),n=e(407)("socket.io-client:socket"),U=e(408),s=e(722);g.exports=A;var i={connect:1,connect_error:1,connect_timeout:1,connecting:1,disconnect:1,error:1,reconnect:1,reconnect_attempt:1,reconnect_failed:1,reconnect_error:1,reconnecting:1,ping:1,pong:1},c=C.prototype.emit;function A(g,I,e){this.io=g,this.nsp=I,this.json=this,this.ids=0,this.acks={},this.receiveBuffer=[],this.sendBuffer=[],this.connected=!1,this.disconnected=!0,this.flags={},e&&e.query&&(this.query=e.query),this.io.autoConnect&&this.open()}C(A.prototype),A.prototype.subEvents=function(){if(!this.subs){var g=this.io;this.subs=[F(g,"open",B(this,"onopen")),F(g,"packet",B(this,"onpacket")),F(g,"close",B(this,"onclose"))]}},A.prototype.open=A.prototype.connect=function(){return this.connected||(this.subEvents(),this.io.open(),"open"===this.io.readyState&&this.onopen(),this.emit("connecting")),this},A.prototype.send=function(){var g=Q(arguments);return g.unshift("message"),this.emit.apply(this,g),this},A.prototype.emit=function(g){if(i.hasOwnProperty(g))return c.apply(this,arguments),this;var I=Q(arguments),e={type:(void 0!==this.flags.binary?this.flags.binary:s(I))?t.BINARY_EVENT:t.EVENT,data:I,options:{}};return e.options.compress=!this.flags||!1!==this.flags.compress,"function"===typeof I[I.length-1]&&(n("emitting packet with ack id %d",this.ids),this.acks[this.ids]=I.pop(),e.id=this.ids++),this.connected?this.packet(e):this.sendBuffer.push(e),this.flags={},this},A.prototype.packet=function(g){g.nsp=this.nsp,this.io.packet(g)},A.prototype.onopen=function(){if(n("transport is open - connecting"),"/"!==this.nsp)if(this.query){var g="object"===typeof this.query?U.encode(this.query):this.query;n("sending connect packet with query %s",g),this.packet({type:t.CONNECT,query:g})}else this.packet({type:t.CONNECT})},A.prototype.onclose=function(g){n("close (%s)",g),this.connected=!1,this.disconnected=!0,delete this.id,this.emit("disconnect",g)},A.prototype.onpacket=function(g){var I=g.nsp===this.nsp,e=g.type===t.ERROR&&"/"===g.nsp;if(I||e)switch(g.type){case t.CONNECT:this.onconnect();break;case t.EVENT:case t.BINARY_EVENT:this.onevent(g);break;case t.ACK:case t.BINARY_ACK:this.onack(g);break;case t.DISCONNECT:this.ondisconnect();break;case t.ERROR:this.emit("error",g.data)}},A.prototype.onevent=function(g){var I=g.data||[];n("emitting event %j",I),null!=g.id&&(n("attaching ack callback to event"),I.push(this.ack(g.id))),this.connected?c.apply(this,I):this.receiveBuffer.push(I)},A.prototype.ack=function(g){var I=this,e=!1;return function(){if(!e){e=!0;var C=Q(arguments);n("sending ack %j",C),I.packet({type:s(C)?t.BINARY_ACK:t.ACK,id:g,data:C})}}},A.prototype.onack=function(g){var I=this.acks[g.id];"function"===typeof I?(n("calling ack %s with %j",g.id,g.data),I.apply(this,g.data),delete this.acks[g.id]):n("bad ack %s",g.id)},A.prototype.onconnect=function(){this.connected=!0,this.disconnected=!1,this.emit("connect"),this.emitBuffered()},A.prototype.emitBuffered=function(){var g;for(g=0;g<this.receiveBuffer.length;g++)c.apply(this,this.receiveBuffer[g]);for(this.receiveBuffer=[],g=0;g<this.sendBuffer.length;g++)this.packet(this.sendBuffer[g]);this.sendBuffer=[]},A.prototype.ondisconnect=function(){n("server disconnect (%s)",this.nsp),this.destroy(),this.onclose("io server disconnect")},A.prototype.destroy=function(){if(this.subs){for(var g=0;g<this.subs.length;g++)this.subs[g].destroy();this.subs=null}this.io.destroy(this)},A.prototype.close=A.prototype.disconnect=function(){return this.connected&&(n("performing disconnect (%s)",this.nsp),this.packet({type:t.DISCONNECT})),this.destroy(),this.connected&&this.onclose("io client disconnect"),this},A.prototype.compress=function(g){return this.flags.compress=g,this},A.prototype.binary=function(g){return this.flags.binary=g,this}},function(g,I,e){function t(g){if(g)return function(g){for(var I in t.prototype)g[I]=t.prototype[I];return g}(g)}g.exports=t,t.prototype.on=t.prototype.addEventListener=function(g,I){return this._callbacks=this._callbacks||{},(this._callbacks["$"+g]=this._callbacks["$"+g]||[]).push(I),this},t.prototype.once=function(g,I){function e(){this.off(g,e),I.apply(this,arguments)}return e.fn=I,this.on(g,e),this},t.prototype.off=t.prototype.removeListener=t.prototype.removeAllListeners=t.prototype.removeEventListener=function(g,I){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var e,t=this._callbacks["$"+g];if(!t)return this;if(1==arguments.length)return delete this._callbacks["$"+g],this;for(var C=0;C<t.length;C++)if((e=t[C])===I||e.fn===I){t.splice(C,1);break}return this},t.prototype.emit=function(g){this._callbacks=this._callbacks||{};var I=[].slice.call(arguments,1),e=this._callbacks["$"+g];if(e)for(var t=0,C=(e=e.slice(0)).length;t<C;++t)e[t].apply(this,I);return this},t.prototype.listeners=function(g){return this._callbacks=this._callbacks||{},this._callbacks["$"+g]||[]},t.prototype.hasListeners=function(g){return!!this.listeners(g).length}},function(g,I){g.exports=function(g,I,e){return g.on(I,e),{destroy:function(){g.removeListener(I,e)}}}},function(g,I){var e=[].slice;g.exports=function(g,I){if("string"==typeof I&&(I=g[I]),"function"!=typeof I)throw new Error("bind() requires a function");var t=e.call(arguments,2);return function(){return I.apply(g,t.concat(e.call(arguments)))}}},function(g,I,e){"use strict";(function(I,t){var C=e(412);g.exports=u;var Q,F=e(718);u.ReadableState=d;e(411).EventEmitter;var B=function(g,I){return g.listeners(I).length},n=e(730),U=e(529).Buffer,s=I.Uint8Array||function(){};var i=Object.create(e(340));i.inherits=e(253);var c=e(1374),A=void 0;A=c&&c.debuglog?c.debuglog("stream"):function(){};var l,a=e(1375),r=e(731);i.inherits(u,n);var o=["error","close","destroy","pause","resume"];function d(g,I){g=g||{};var t=I instanceof(Q=Q||e(254));this.objectMode=!!g.objectMode,t&&(this.objectMode=this.objectMode||!!g.readableObjectMode);var C=g.highWaterMark,F=g.readableHighWaterMark,B=this.objectMode?16:16384;this.highWaterMark=C||0===C?C:t&&(F||0===F)?F:B,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new a,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=g.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,g.encoding&&(l||(l=e(531).StringDecoder),this.decoder=new l(g.encoding),this.encoding=g.encoding)}function u(g){if(Q=Q||e(254),!(this instanceof u))return new u(g);this._readableState=new d(g,this),this.readable=!0,g&&("function"===typeof g.read&&(this._read=g.read),"function"===typeof g.destroy&&(this._destroy=g.destroy)),n.call(this)}function y(g,I,e,t,C){var Q,F=g._readableState;null===I?(F.reading=!1,function(g,I){if(I.ended)return;if(I.decoder){var e=I.decoder.end();e&&e.length&&(I.buffer.push(e),I.length+=I.objectMode?1:e.length)}I.ended=!0,m(g)}(g,F)):(C||(Q=function(g,I){var e;t=I,U.isBuffer(t)||t instanceof s||"string"===typeof I||void 0===I||g.objectMode||(e=new TypeError("Invalid non-string/buffer chunk"));var t;return e}(F,I)),Q?g.emit("error",Q):F.objectMode||I&&I.length>0?("string"===typeof I||F.objectMode||Object.getPrototypeOf(I)===U.prototype||(I=function(g){return U.from(g)}(I)),t?F.endEmitted?g.emit("error",new Error("stream.unshift() after end event")):b(g,F,I,!0):F.ended?g.emit("error",new Error("stream.push() after EOF")):(F.reading=!1,F.decoder&&!e?(I=F.decoder.write(I),F.objectMode||0!==I.length?b(g,F,I,!1):R(g,F)):b(g,F,I,!1))):t||(F.reading=!1));return function(g){return!g.ended&&(g.needReadable||g.length<g.highWaterMark||0===g.length)}(F)}function b(g,I,e,t){I.flowing&&0===I.length&&!I.sync?(g.emit("data",e),g.read(0)):(I.length+=I.objectMode?1:e.length,t?I.buffer.unshift(e):I.buffer.push(e),I.needReadable&&m(g)),R(g,I)}Object.defineProperty(u.prototype,"destroyed",{get:function(){return void 0!==this._readableState&&this._readableState.destroyed},set:function(g){this._readableState&&(this._readableState.destroyed=g)}}),u.prototype.destroy=r.destroy,u.prototype._undestroy=r.undestroy,u.prototype._destroy=function(g,I){this.push(null),I(g)},u.prototype.push=function(g,I){var e,t=this._readableState;return t.objectMode?e=!0:"string"===typeof g&&((I=I||t.defaultEncoding)!==t.encoding&&(g=U.from(g,I),I=""),e=!0),y(this,g,I,!1,e)},u.prototype.unshift=function(g){return y(this,g,null,!0,!1)},u.prototype.isPaused=function(){return!1===this._readableState.flowing},u.prototype.setEncoding=function(g){return l||(l=e(531).StringDecoder),this._readableState.decoder=new l(g),this._readableState.encoding=g,this};function Z(g,I){return g<=0||0===I.length&&I.ended?0:I.objectMode?1:g!==g?I.flowing&&I.length?I.buffer.head.data.length:I.length:(g>I.highWaterMark&&(I.highWaterMark=function(g){return g>=8388608?g=8388608:(g--,g|=g>>>1,g|=g>>>2,g|=g>>>4,g|=g>>>8,g|=g>>>16,g++),g}(g)),g<=I.length?g:I.ended?I.length:(I.needReadable=!0,0))}function m(g){var I=g._readableState;I.needReadable=!1,I.emittedReadable||(A("emitReadable",I.flowing),I.emittedReadable=!0,I.sync?C.nextTick(x,g):x(g))}function x(g){A("emit readable"),g.emit("readable"),V(g)}function R(g,I){I.readingMore||(I.readingMore=!0,C.nextTick(S,g,I))}function S(g,I){for(var e=I.length;!I.reading&&!I.flowing&&!I.ended&&I.length<I.highWaterMark&&(A("maybeReadMore read 0"),g.read(0),e!==I.length);)e=I.length;I.readingMore=!1}function G(g){A("readable nexttick read 0"),g.read(0)}function L(g,I){I.reading||(A("resume read 0"),g.read(0)),I.resumeScheduled=!1,I.awaitDrain=0,g.emit("resume"),V(g),I.flowing&&!I.reading&&g.read(0)}function V(g){var I=g._readableState;for(A("flow",I.flowing);I.flowing&&null!==g.read(););}function h(g,I){return 0===I.length?null:(I.objectMode?e=I.buffer.shift():!g||g>=I.length?(e=I.decoder?I.buffer.join(""):1===I.buffer.length?I.buffer.head.data:I.buffer.concat(I.length),I.buffer.clear()):e=function(g,I,e){var t;g<I.head.data.length?(t=I.head.data.slice(0,g),I.head.data=I.head.data.slice(g)):t=g===I.head.data.length?I.shift():e?function(g,I){var e=I.head,t=1,C=e.data;g-=C.length;for(;e=e.next;){var Q=e.data,F=g>Q.length?Q.length:g;if(F===Q.length?C+=Q:C+=Q.slice(0,g),0===(g-=F)){F===Q.length?(++t,e.next?I.head=e.next:I.head=I.tail=null):(I.head=e,e.data=Q.slice(F));break}++t}return I.length-=t,C}(g,I):function(g,I){var e=U.allocUnsafe(g),t=I.head,C=1;t.data.copy(e),g-=t.data.length;for(;t=t.next;){var Q=t.data,F=g>Q.length?Q.length:g;if(Q.copy(e,e.length-g,0,F),0===(g-=F)){F===Q.length?(++C,t.next?I.head=t.next:I.head=I.tail=null):(I.head=t,t.data=Q.slice(F));break}++C}return I.length-=C,e}(g,I);return t}(g,I.buffer,I.decoder),e);var e}function D(g){var I=g._readableState;if(I.length>0)throw new Error('"endReadable()" called on non-empty stream');I.endEmitted||(I.ended=!0,C.nextTick(p,I,g))}function p(g,I){g.endEmitted||0!==g.length||(g.endEmitted=!0,I.readable=!1,I.emit("end"))}function E(g,I){for(var e=0,t=g.length;e<t;e++)if(g[e]===I)return e;return-1}u.prototype.read=function(g){A("read",g),g=parseInt(g,10);var I=this._readableState,e=g;if(0!==g&&(I.emittedReadable=!1),0===g&&I.needReadable&&(I.length>=I.highWaterMark||I.ended))return A("read: emitReadable",I.length,I.ended),0===I.length&&I.ended?D(this):m(this),null;if(0===(g=Z(g,I))&&I.ended)return 0===I.length&&D(this),null;var t,C=I.needReadable;return A("need readable",C),(0===I.length||I.length-g<I.highWaterMark)&&A("length less than watermark",C=!0),I.ended||I.reading?A("reading or ended",C=!1):C&&(A("do read"),I.reading=!0,I.sync=!0,0===I.length&&(I.needReadable=!0),this._read(I.highWaterMark),I.sync=!1,I.reading||(g=Z(e,I))),null===(t=g>0?h(g,I):null)?(I.needReadable=!0,g=0):I.length-=g,0===I.length&&(I.ended||(I.needReadable=!0),e!==g&&I.ended&&D(this)),null!==t&&this.emit("data",t),t},u.prototype._read=function(g){this.emit("error",new Error("_read() is not implemented"))},u.prototype.pipe=function(g,I){var e=this,Q=this._readableState;switch(Q.pipesCount){case 0:Q.pipes=g;break;case 1:Q.pipes=[Q.pipes,g];break;default:Q.pipes.push(g)}Q.pipesCount+=1,A("pipe count=%d opts=%j",Q.pipesCount,I);var n=(!I||!1!==I.end)&&g!==t.stdout&&g!==t.stderr?s:u;function U(I,t){A("onunpipe"),I===e&&t&&!1===t.hasUnpiped&&(t.hasUnpiped=!0,A("cleanup"),g.removeListener("close",o),g.removeListener("finish",d),g.removeListener("drain",i),g.removeListener("error",r),g.removeListener("unpipe",U),e.removeListener("end",s),e.removeListener("end",u),e.removeListener("data",a),c=!0,!Q.awaitDrain||g._writableState&&!g._writableState.needDrain||i())}function s(){A("onend"),g.end()}Q.endEmitted?C.nextTick(n):e.once("end",n),g.on("unpipe",U);var i=function(g){return function(){var I=g._readableState;A("pipeOnDrain",I.awaitDrain),I.awaitDrain&&I.awaitDrain--,0===I.awaitDrain&&B(g,"data")&&(I.flowing=!0,V(g))}}(e);g.on("drain",i);var c=!1;var l=!1;function a(I){A("ondata"),l=!1,!1!==g.write(I)||l||((1===Q.pipesCount&&Q.pipes===g||Q.pipesCount>1&&-1!==E(Q.pipes,g))&&!c&&(A("false write response, pause",e._readableState.awaitDrain),e._readableState.awaitDrain++,l=!0),e.pause())}function r(I){A("onerror",I),u(),g.removeListener("error",r),0===B(g,"error")&&g.emit("error",I)}function o(){g.removeListener("finish",d),u()}function d(){A("onfinish"),g.removeListener("close",o),u()}function u(){A("unpipe"),e.unpipe(g)}return e.on("data",a),function(g,I,e){if("function"===typeof g.prependListener)return g.prependListener(I,e);g._events&&g._events[I]?F(g._events[I])?g._events[I].unshift(e):g._events[I]=[e,g._events[I]]:g.on(I,e)}(g,"error",r),g.once("close",o),g.once("finish",d),g.emit("pipe",e),Q.flowing||(A("pipe resume"),e.resume()),g},u.prototype.unpipe=function(g){var I=this._readableState,e={hasUnpiped:!1};if(0===I.pipesCount)return this;if(1===I.pipesCount)return g&&g!==I.pipes||(g||(g=I.pipes),I.pipes=null,I.pipesCount=0,I.flowing=!1,g&&g.emit("unpipe",this,e)),this;if(!g){var t=I.pipes,C=I.pipesCount;I.pipes=null,I.pipesCount=0,I.flowing=!1;for(var Q=0;Q<C;Q++)t[Q].emit("unpipe",this,e);return this}var F=E(I.pipes,g);return-1===F||(I.pipes.splice(F,1),I.pipesCount-=1,1===I.pipesCount&&(I.pipes=I.pipes[0]),g.emit("unpipe",this,e)),this},u.prototype.on=function(g,I){var e=n.prototype.on.call(this,g,I);if("data"===g)!1!==this._readableState.flowing&&this.resume();else if("readable"===g){var t=this._readableState;t.endEmitted||t.readableListening||(t.readableListening=t.needReadable=!0,t.emittedReadable=!1,t.reading?t.length&&m(this):C.nextTick(G,this))}return e},u.prototype.addListener=u.prototype.on,u.prototype.resume=function(){var g=this._readableState;return g.flowing||(A("resume"),g.flowing=!0,function(g,I){I.resumeScheduled||(I.resumeScheduled=!0,C.nextTick(L,g,I))}(this,g)),this},u.prototype.pause=function(){return A("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(A("pause"),this._readableState.flowing=!1,this.emit("pause")),this},u.prototype.wrap=function(g){var I=this,e=this._readableState,t=!1;for(var C in g.on("end",(function(){if(A("wrapped end"),e.decoder&&!e.ended){var g=e.decoder.end();g&&g.length&&I.push(g)}I.push(null)})),g.on("data",(function(C){(A("wrapped data"),e.decoder&&(C=e.decoder.write(C)),!e.objectMode||null!==C&&void 0!==C)&&((e.objectMode||C&&C.length)&&(I.push(C)||(t=!0,g.pause())))})),g)void 0===this[C]&&"function"===typeof g[C]&&(this[C]=function(I){return function(){return g[I].apply(g,arguments)}}(C));for(var Q=0;Q<o.length;Q++)g.on(o[Q],this.emit.bind(this,o[Q]));return this._read=function(I){A("wrapped _read",I),t&&(t=!1,g.resume())},this},Object.defineProperty(u.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),u._fromList=h}).call(this,e(67),e(92))},function(g,I,e){g.exports=e(411).EventEmitter},function(g,I,e){"use strict";var t=e(412);function C(g,I){g.emit("error",I)}g.exports={destroy:function(g,I){var e=this,Q=this._readableState&&this._readableState.destroyed,F=this._writableState&&this._writableState.destroyed;return Q||F?(I?I(g):!g||this._writableState&&this._writableState.errorEmitted||t.nextTick(C,this,g),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(g||null,(function(g){!I&&g?(t.nextTick(C,e,g),e._writableState&&(e._writableState.errorEmitted=!0)):I&&I(g)})),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}}},function(g,I,e){"use strict";g.exports=F;var t=e(254),C=Object.create(e(340));function Q(g,I){var e=this._transformState;e.transforming=!1;var t=e.writecb;if(!t)return this.emit("error",new Error("write callback called multiple times"));e.writechunk=null,e.writecb=null,null!=I&&this.push(I),t(g);var C=this._readableState;C.reading=!1,(C.needReadable||C.length<C.highWaterMark)&&this._read(C.highWaterMark)}function F(g){if(!(this instanceof F))return new F(g);t.call(this,g),this._transformState={afterTransform:Q.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,g&&("function"===typeof g.transform&&(this._transform=g.transform),"function"===typeof g.flush&&(this._flush=g.flush)),this.on("prefinish",B)}function B(){var g=this;"function"===typeof this._flush?this._flush((function(I,e){n(g,I,e)})):n(this,null,null)}function n(g,I,e){if(I)return g.emit("error",I);if(null!=e&&g.push(e),g._writableState.length)throw new Error("Calling transform done when ws.length != 0");if(g._transformState.transforming)throw new Error("Calling transform done when still transforming");return g.push(null)}C.inherits=e(253),C.inherits(F,t),F.prototype.push=function(g,I){return this._transformState.needTransform=!1,t.prototype.push.call(this,g,I)},F.prototype._transform=function(g,I,e){throw new Error("_transform() is not implemented")},F.prototype._write=function(g,I,e){var t=this._transformState;if(t.writecb=e,t.writechunk=g,t.writeencoding=I,!t.transforming){var C=this._readableState;(t.needTransform||C.needReadable||C.length<C.highWaterMark)&&this._read(C.highWaterMark)}},F.prototype._read=function(g){var I=this._transformState;null!==I.writechunk&&I.writecb&&!I.transforming?(I.transforming=!0,this._transform(I.writechunk,I.writeencoding,I.afterTransform)):I.needTransform=!0},F.prototype._destroy=function(g,I){var e=this;t.prototype._destroy.call(this,g,(function(g){I(g),e.emit("close")}))}},function(g){g.exports=JSON.parse('[["a140","\ue4c6",62],["a180","\ue505",32],["a240","\ue526",62],["a280","\ue565",32],["a2ab","\ue766",5],["a2e3","\u20ac\ue76d"],["a2ef","\ue76e\ue76f"],["a2fd","\ue770\ue771"],["a340","\ue586",62],["a380","\ue5c5",31,"\u3000"],["a440","\ue5e6",62],["a480","\ue625",32],["a4f4","\ue772",10],["a540","\ue646",62],["a580","\ue685",32],["a5f7","\ue77d",7],["a640","\ue6a6",62],["a680","\ue6e5",32],["a6b9","\ue785",7],["a6d9","\ue78d",6],["a6ec","\ue794\ue795"],["a6f3","\ue796"],["a6f6","\ue797",8],["a740","\ue706",62],["a780","\ue745",32],["a7c2","\ue7a0",14],["a7f2","\ue7af",12],["a896","\ue7bc",10],["a8bc","\ue7c7"],["a8bf","\u01f9"],["a8c1","\ue7c9\ue7ca\ue7cb\ue7cc"],["a8ea","\ue7cd",20],["a958","\ue7e2"],["a95b","\ue7e3"],["a95d","\ue7e4\ue7e5\ue7e6"],["a989","\u303e\u2ff0",11],["a997","\ue7f4",12],["a9f0","\ue801",14],["aaa1","\ue000",93],["aba1","\ue05e",93],["aca1","\ue0bc",93],["ada1","\ue11a",93],["aea1","\ue178",93],["afa1","\ue1d6",93],["d7fa","\ue810",4],["f8a1","\ue234",93],["f9a1","\ue292",93],["faa1","\ue2f0",93],["fba1","\ue34e",93],["fca1","\ue3ac",93],["fda1","\ue40a",93],["fe50","\u2e81\ue816\ue817\ue818\u2e84\u3473\u3447\u2e88\u2e8b\ue81e\u359e\u361a\u360e\u2e8c\u2e97\u396e\u3918\ue826\u39cf\u39df\u3a73\u39d0\ue82b\ue82c\u3b4e\u3c6e\u3ce0\u2ea7\ue831\ue832\u2eaa\u4056\u415f\u2eae\u4337\u2eb3\u2eb6\u2eb7\ue83b\u43b1\u43ac\u2ebb\u43dd\u44d6\u4661\u464c\ue843"],["fe80","\u4723\u4729\u477c\u478d\u2eca\u4947\u497a\u497d\u4982\u4983\u4985\u4986\u499f\u499b\u49b7\u49b6\ue854\ue855\u4ca3\u4c9f\u4ca0\u4ca1\u4c77\u4ca2\u4d13",6,"\u4dae\ue864\ue468",93]]')},function(g){g.exports=JSON.parse('[["0","\\u0000",127],["a140","\u3000\uff0c\u3001\u3002\uff0e\u2027\uff1b\uff1a\uff1f\uff01\ufe30\u2026\u2025\ufe50\ufe51\ufe52\xb7\ufe54\ufe55\ufe56\ufe57\uff5c\u2013\ufe31\u2014\ufe33\u2574\ufe34\ufe4f\uff08\uff09\ufe35\ufe36\uff5b\uff5d\ufe37\ufe38\u3014\u3015\ufe39\ufe3a\u3010\u3011\ufe3b\ufe3c\u300a\u300b\ufe3d\ufe3e\u3008\u3009\ufe3f\ufe40\u300c\u300d\ufe41\ufe42\u300e\u300f\ufe43\ufe44\ufe59\ufe5a"],["a1a1","\ufe5b\ufe5c\ufe5d\ufe5e\u2018\u2019\u201c\u201d\u301d\u301e\u2035\u2032\uff03\uff06\uff0a\u203b\xa7\u3003\u25cb\u25cf\u25b3\u25b2\u25ce\u2606\u2605\u25c7\u25c6\u25a1\u25a0\u25bd\u25bc\u32a3\u2105\xaf\uffe3\uff3f\u02cd\ufe49\ufe4a\ufe4d\ufe4e\ufe4b\ufe4c\ufe5f\ufe60\ufe61\uff0b\uff0d\xd7\xf7\xb1\u221a\uff1c\uff1e\uff1d\u2266\u2267\u2260\u221e\u2252\u2261\ufe62",4,"\uff5e\u2229\u222a\u22a5\u2220\u221f\u22bf\u33d2\u33d1\u222b\u222e\u2235\u2234\u2640\u2642\u2295\u2299\u2191\u2193\u2190\u2192\u2196\u2197\u2199\u2198\u2225\u2223\uff0f"],["a240","\uff3c\u2215\ufe68\uff04\uffe5\u3012\uffe0\uffe1\uff05\uff20\u2103\u2109\ufe69\ufe6a\ufe6b\u33d5\u339c\u339d\u339e\u33ce\u33a1\u338e\u338f\u33c4\xb0\u5159\u515b\u515e\u515d\u5161\u5163\u55e7\u74e9\u7cce\u2581",7,"\u258f\u258e\u258d\u258c\u258b\u258a\u2589\u253c\u2534\u252c\u2524\u251c\u2594\u2500\u2502\u2595\u250c\u2510\u2514\u2518\u256d"],["a2a1","\u256e\u2570\u256f\u2550\u255e\u256a\u2561\u25e2\u25e3\u25e5\u25e4\u2571\u2572\u2573\uff10",9,"\u2160",9,"\u3021",8,"\u5341\u5344\u5345\uff21",25,"\uff41",21],["a340","\uff57\uff58\uff59\uff5a\u0391",16,"\u03a3",6,"\u03b1",16,"\u03c3",6,"\u3105",10],["a3a1","\u3110",25,"\u02d9\u02c9\u02ca\u02c7\u02cb"],["a3e1","\u20ac"],["a440","\u4e00\u4e59\u4e01\u4e03\u4e43\u4e5d\u4e86\u4e8c\u4eba\u513f\u5165\u516b\u51e0\u5200\u5201\u529b\u5315\u5341\u535c\u53c8\u4e09\u4e0b\u4e08\u4e0a\u4e2b\u4e38\u51e1\u4e45\u4e48\u4e5f\u4e5e\u4e8e\u4ea1\u5140\u5203\u52fa\u5343\u53c9\u53e3\u571f\u58eb\u5915\u5927\u5973\u5b50\u5b51\u5b53\u5bf8\u5c0f\u5c22\u5c38\u5c71\u5ddd\u5de5\u5df1\u5df2\u5df3\u5dfe\u5e72\u5efe\u5f0b\u5f13\u624d"],["a4a1","\u4e11\u4e10\u4e0d\u4e2d\u4e30\u4e39\u4e4b\u5c39\u4e88\u4e91\u4e95\u4e92\u4e94\u4ea2\u4ec1\u4ec0\u4ec3\u4ec6\u4ec7\u4ecd\u4eca\u4ecb\u4ec4\u5143\u5141\u5167\u516d\u516e\u516c\u5197\u51f6\u5206\u5207\u5208\u52fb\u52fe\u52ff\u5316\u5339\u5348\u5347\u5345\u535e\u5384\u53cb\u53ca\u53cd\u58ec\u5929\u592b\u592a\u592d\u5b54\u5c11\u5c24\u5c3a\u5c6f\u5df4\u5e7b\u5eff\u5f14\u5f15\u5fc3\u6208\u6236\u624b\u624e\u652f\u6587\u6597\u65a4\u65b9\u65e5\u66f0\u6708\u6728\u6b20\u6b62\u6b79\u6bcb\u6bd4\u6bdb\u6c0f\u6c34\u706b\u722a\u7236\u723b\u7247\u7259\u725b\u72ac\u738b\u4e19"],["a540","\u4e16\u4e15\u4e14\u4e18\u4e3b\u4e4d\u4e4f\u4e4e\u4ee5\u4ed8\u4ed4\u4ed5\u4ed6\u4ed7\u4ee3\u4ee4\u4ed9\u4ede\u5145\u5144\u5189\u518a\u51ac\u51f9\u51fa\u51f8\u520a\u52a0\u529f\u5305\u5306\u5317\u531d\u4edf\u534a\u5349\u5361\u5360\u536f\u536e\u53bb\u53ef\u53e4\u53f3\u53ec\u53ee\u53e9\u53e8\u53fc\u53f8\u53f5\u53eb\u53e6\u53ea\u53f2\u53f1\u53f0\u53e5\u53ed\u53fb\u56db\u56da\u5916"],["a5a1","\u592e\u5931\u5974\u5976\u5b55\u5b83\u5c3c\u5de8\u5de7\u5de6\u5e02\u5e03\u5e73\u5e7c\u5f01\u5f18\u5f17\u5fc5\u620a\u6253\u6254\u6252\u6251\u65a5\u65e6\u672e\u672c\u672a\u672b\u672d\u6b63\u6bcd\u6c11\u6c10\u6c38\u6c41\u6c40\u6c3e\u72af\u7384\u7389\u74dc\u74e6\u7518\u751f\u7528\u7529\u7530\u7531\u7532\u7533\u758b\u767d\u76ae\u76bf\u76ee\u77db\u77e2\u77f3\u793a\u79be\u7a74\u7acb\u4e1e\u4e1f\u4e52\u4e53\u4e69\u4e99\u4ea4\u4ea6\u4ea5\u4eff\u4f09\u4f19\u4f0a\u4f15\u4f0d\u4f10\u4f11\u4f0f\u4ef2\u4ef6\u4efb\u4ef0\u4ef3\u4efd\u4f01\u4f0b\u5149\u5147\u5146\u5148\u5168"],["a640","\u5171\u518d\u51b0\u5217\u5211\u5212\u520e\u5216\u52a3\u5308\u5321\u5320\u5370\u5371\u5409\u540f\u540c\u540a\u5410\u5401\u540b\u5404\u5411\u540d\u5408\u5403\u540e\u5406\u5412\u56e0\u56de\u56dd\u5733\u5730\u5728\u572d\u572c\u572f\u5729\u5919\u591a\u5937\u5938\u5984\u5978\u5983\u597d\u5979\u5982\u5981\u5b57\u5b58\u5b87\u5b88\u5b85\u5b89\u5bfa\u5c16\u5c79\u5dde\u5e06\u5e76\u5e74"],["a6a1","\u5f0f\u5f1b\u5fd9\u5fd6\u620e\u620c\u620d\u6210\u6263\u625b\u6258\u6536\u65e9\u65e8\u65ec\u65ed\u66f2\u66f3\u6709\u673d\u6734\u6731\u6735\u6b21\u6b64\u6b7b\u6c16\u6c5d\u6c57\u6c59\u6c5f\u6c60\u6c50\u6c55\u6c61\u6c5b\u6c4d\u6c4e\u7070\u725f\u725d\u767e\u7af9\u7c73\u7cf8\u7f36\u7f8a\u7fbd\u8001\u8003\u800c\u8012\u8033\u807f\u8089\u808b\u808c\u81e3\u81ea\u81f3\u81fc\u820c\u821b\u821f\u826e\u8272\u827e\u866b\u8840\u884c\u8863\u897f\u9621\u4e32\u4ea8\u4f4d\u4f4f\u4f47\u4f57\u4f5e\u4f34\u4f5b\u4f55\u4f30\u4f50\u4f51\u4f3d\u4f3a\u4f38\u4f43\u4f54\u4f3c\u4f46\u4f63"],["a740","\u4f5c\u4f60\u4f2f\u4f4e\u4f36\u4f59\u4f5d\u4f48\u4f5a\u514c\u514b\u514d\u5175\u51b6\u51b7\u5225\u5224\u5229\u522a\u5228\u52ab\u52a9\u52aa\u52ac\u5323\u5373\u5375\u541d\u542d\u541e\u543e\u5426\u544e\u5427\u5446\u5443\u5433\u5448\u5442\u541b\u5429\u544a\u5439\u543b\u5438\u542e\u5435\u5436\u5420\u543c\u5440\u5431\u542b\u541f\u542c\u56ea\u56f0\u56e4\u56eb\u574a\u5751\u5740\u574d"],["a7a1","\u5747\u574e\u573e\u5750\u574f\u573b\u58ef\u593e\u599d\u5992\u59a8\u599e\u59a3\u5999\u5996\u598d\u59a4\u5993\u598a\u59a5\u5b5d\u5b5c\u5b5a\u5b5b\u5b8c\u5b8b\u5b8f\u5c2c\u5c40\u5c41\u5c3f\u5c3e\u5c90\u5c91\u5c94\u5c8c\u5deb\u5e0c\u5e8f\u5e87\u5e8a\u5ef7\u5f04\u5f1f\u5f64\u5f62\u5f77\u5f79\u5fd8\u5fcc\u5fd7\u5fcd\u5ff1\u5feb\u5ff8\u5fea\u6212\u6211\u6284\u6297\u6296\u6280\u6276\u6289\u626d\u628a\u627c\u627e\u6279\u6273\u6292\u626f\u6298\u626e\u6295\u6293\u6291\u6286\u6539\u653b\u6538\u65f1\u66f4\u675f\u674e\u674f\u6750\u6751\u675c\u6756\u675e\u6749\u6746\u6760"],["a840","\u6753\u6757\u6b65\u6bcf\u6c42\u6c5e\u6c99\u6c81\u6c88\u6c89\u6c85\u6c9b\u6c6a\u6c7a\u6c90\u6c70\u6c8c\u6c68\u6c96\u6c92\u6c7d\u6c83\u6c72\u6c7e\u6c74\u6c86\u6c76\u6c8d\u6c94\u6c98\u6c82\u7076\u707c\u707d\u7078\u7262\u7261\u7260\u72c4\u72c2\u7396\u752c\u752b\u7537\u7538\u7682\u76ef\u77e3\u79c1\u79c0\u79bf\u7a76\u7cfb\u7f55\u8096\u8093\u809d\u8098\u809b\u809a\u80b2\u826f\u8292"],["a8a1","\u828b\u828d\u898b\u89d2\u8a00\u8c37\u8c46\u8c55\u8c9d\u8d64\u8d70\u8db3\u8eab\u8eca\u8f9b\u8fb0\u8fc2\u8fc6\u8fc5\u8fc4\u5de1\u9091\u90a2\u90aa\u90a6\u90a3\u9149\u91c6\u91cc\u9632\u962e\u9631\u962a\u962c\u4e26\u4e56\u4e73\u4e8b\u4e9b\u4e9e\u4eab\u4eac\u4f6f\u4f9d\u4f8d\u4f73\u4f7f\u4f6c\u4f9b\u4f8b\u4f86\u4f83\u4f70\u4f75\u4f88\u4f69\u4f7b\u4f96\u4f7e\u4f8f\u4f91\u4f7a\u5154\u5152\u5155\u5169\u5177\u5176\u5178\u51bd\u51fd\u523b\u5238\u5237\u523a\u5230\u522e\u5236\u5241\u52be\u52bb\u5352\u5354\u5353\u5351\u5366\u5377\u5378\u5379\u53d6\u53d4\u53d7\u5473\u5475"],["a940","\u5496\u5478\u5495\u5480\u547b\u5477\u5484\u5492\u5486\u547c\u5490\u5471\u5476\u548c\u549a\u5462\u5468\u548b\u547d\u548e\u56fa\u5783\u5777\u576a\u5769\u5761\u5766\u5764\u577c\u591c\u5949\u5947\u5948\u5944\u5954\u59be\u59bb\u59d4\u59b9\u59ae\u59d1\u59c6\u59d0\u59cd\u59cb\u59d3\u59ca\u59af\u59b3\u59d2\u59c5\u5b5f\u5b64\u5b63\u5b97\u5b9a\u5b98\u5b9c\u5b99\u5b9b\u5c1a\u5c48\u5c45"],["a9a1","\u5c46\u5cb7\u5ca1\u5cb8\u5ca9\u5cab\u5cb1\u5cb3\u5e18\u5e1a\u5e16\u5e15\u5e1b\u5e11\u5e78\u5e9a\u5e97\u5e9c\u5e95\u5e96\u5ef6\u5f26\u5f27\u5f29\u5f80\u5f81\u5f7f\u5f7c\u5fdd\u5fe0\u5ffd\u5ff5\u5fff\u600f\u6014\u602f\u6035\u6016\u602a\u6015\u6021\u6027\u6029\u602b\u601b\u6216\u6215\u623f\u623e\u6240\u627f\u62c9\u62cc\u62c4\u62bf\u62c2\u62b9\u62d2\u62db\u62ab\u62d3\u62d4\u62cb\u62c8\u62a8\u62bd\u62bc\u62d0\u62d9\u62c7\u62cd\u62b5\u62da\u62b1\u62d8\u62d6\u62d7\u62c6\u62ac\u62ce\u653e\u65a7\u65bc\u65fa\u6614\u6613\u660c\u6606\u6602\u660e\u6600\u660f\u6615\u660a"],["aa40","\u6607\u670d\u670b\u676d\u678b\u6795\u6771\u679c\u6773\u6777\u6787\u679d\u6797\u676f\u6770\u677f\u6789\u677e\u6790\u6775\u679a\u6793\u677c\u676a\u6772\u6b23\u6b66\u6b67\u6b7f\u6c13\u6c1b\u6ce3\u6ce8\u6cf3\u6cb1\u6ccc\u6ce5\u6cb3\u6cbd\u6cbe\u6cbc\u6ce2\u6cab\u6cd5\u6cd3\u6cb8\u6cc4\u6cb9\u6cc1\u6cae\u6cd7\u6cc5\u6cf1\u6cbf\u6cbb\u6ce1\u6cdb\u6cca\u6cac\u6cef\u6cdc\u6cd6\u6ce0"],["aaa1","\u7095\u708e\u7092\u708a\u7099\u722c\u722d\u7238\u7248\u7267\u7269\u72c0\u72ce\u72d9\u72d7\u72d0\u73a9\u73a8\u739f\u73ab\u73a5\u753d\u759d\u7599\u759a\u7684\u76c2\u76f2\u76f4\u77e5\u77fd\u793e\u7940\u7941\u79c9\u79c8\u7a7a\u7a79\u7afa\u7cfe\u7f54\u7f8c\u7f8b\u8005\u80ba\u80a5\u80a2\u80b1\u80a1\u80ab\u80a9\u80b4\u80aa\u80af\u81e5\u81fe\u820d\u82b3\u829d\u8299\u82ad\u82bd\u829f\u82b9\u82b1\u82ac\u82a5\u82af\u82b8\u82a3\u82b0\u82be\u82b7\u864e\u8671\u521d\u8868\u8ecb\u8fce\u8fd4\u8fd1\u90b5\u90b8\u90b1\u90b6\u91c7\u91d1\u9577\u9580\u961c\u9640\u963f\u963b\u9644"],["ab40","\u9642\u96b9\u96e8\u9752\u975e\u4e9f\u4ead\u4eae\u4fe1\u4fb5\u4faf\u4fbf\u4fe0\u4fd1\u4fcf\u4fdd\u4fc3\u4fb6\u4fd8\u4fdf\u4fca\u4fd7\u4fae\u4fd0\u4fc4\u4fc2\u4fda\u4fce\u4fde\u4fb7\u5157\u5192\u5191\u51a0\u524e\u5243\u524a\u524d\u524c\u524b\u5247\u52c7\u52c9\u52c3\u52c1\u530d\u5357\u537b\u539a\u53db\u54ac\u54c0\u54a8\u54ce\u54c9\u54b8\u54a6\u54b3\u54c7\u54c2\u54bd\u54aa\u54c1"],["aba1","\u54c4\u54c8\u54af\u54ab\u54b1\u54bb\u54a9\u54a7\u54bf\u56ff\u5782\u578b\u57a0\u57a3\u57a2\u57ce\u57ae\u5793\u5955\u5951\u594f\u594e\u5950\u59dc\u59d8\u59ff\u59e3\u59e8\u5a03\u59e5\u59ea\u59da\u59e6\u5a01\u59fb\u5b69\u5ba3\u5ba6\u5ba4\u5ba2\u5ba5\u5c01\u5c4e\u5c4f\u5c4d\u5c4b\u5cd9\u5cd2\u5df7\u5e1d\u5e25\u5e1f\u5e7d\u5ea0\u5ea6\u5efa\u5f08\u5f2d\u5f65\u5f88\u5f85\u5f8a\u5f8b\u5f87\u5f8c\u5f89\u6012\u601d\u6020\u6025\u600e\u6028\u604d\u6070\u6068\u6062\u6046\u6043\u606c\u606b\u606a\u6064\u6241\u62dc\u6316\u6309\u62fc\u62ed\u6301\u62ee\u62fd\u6307\u62f1\u62f7"],["ac40","\u62ef\u62ec\u62fe\u62f4\u6311\u6302\u653f\u6545\u65ab\u65bd\u65e2\u6625\u662d\u6620\u6627\u662f\u661f\u6628\u6631\u6624\u66f7\u67ff\u67d3\u67f1\u67d4\u67d0\u67ec\u67b6\u67af\u67f5\u67e9\u67ef\u67c4\u67d1\u67b4\u67da\u67e5\u67b8\u67cf\u67de\u67f3\u67b0\u67d9\u67e2\u67dd\u67d2\u6b6a\u6b83\u6b86\u6bb5\u6bd2\u6bd7\u6c1f\u6cc9\u6d0b\u6d32\u6d2a\u6d41\u6d25\u6d0c\u6d31\u6d1e\u6d17"],["aca1","\u6d3b\u6d3d\u6d3e\u6d36\u6d1b\u6cf5\u6d39\u6d27\u6d38\u6d29\u6d2e\u6d35\u6d0e\u6d2b\u70ab\u70ba\u70b3\u70ac\u70af\u70ad\u70b8\u70ae\u70a4\u7230\u7272\u726f\u7274\u72e9\u72e0\u72e1\u73b7\u73ca\u73bb\u73b2\u73cd\u73c0\u73b3\u751a\u752d\u754f\u754c\u754e\u754b\u75ab\u75a4\u75a5\u75a2\u75a3\u7678\u7686\u7687\u7688\u76c8\u76c6\u76c3\u76c5\u7701\u76f9\u76f8\u7709\u770b\u76fe\u76fc\u7707\u77dc\u7802\u7814\u780c\u780d\u7946\u7949\u7948\u7947\u79b9\u79ba\u79d1\u79d2\u79cb\u7a7f\u7a81\u7aff\u7afd\u7c7d\u7d02\u7d05\u7d00\u7d09\u7d07\u7d04\u7d06\u7f38\u7f8e\u7fbf\u8004"],["ad40","\u8010\u800d\u8011\u8036\u80d6\u80e5\u80da\u80c3\u80c4\u80cc\u80e1\u80db\u80ce\u80de\u80e4\u80dd\u81f4\u8222\u82e7\u8303\u8305\u82e3\u82db\u82e6\u8304\u82e5\u8302\u8309\u82d2\u82d7\u82f1\u8301\u82dc\u82d4\u82d1\u82de\u82d3\u82df\u82ef\u8306\u8650\u8679\u867b\u867a\u884d\u886b\u8981\u89d4\u8a08\u8a02\u8a03\u8c9e\u8ca0\u8d74\u8d73\u8db4\u8ecd\u8ecc\u8ff0\u8fe6\u8fe2\u8fea\u8fe5"],["ada1","\u8fed\u8feb\u8fe4\u8fe8\u90ca\u90ce\u90c1\u90c3\u914b\u914a\u91cd\u9582\u9650\u964b\u964c\u964d\u9762\u9769\u97cb\u97ed\u97f3\u9801\u98a8\u98db\u98df\u9996\u9999\u4e58\u4eb3\u500c\u500d\u5023\u4fef\u5026\u5025\u4ff8\u5029\u5016\u5006\u503c\u501f\u501a\u5012\u5011\u4ffa\u5000\u5014\u5028\u4ff1\u5021\u500b\u5019\u5018\u4ff3\u4fee\u502d\u502a\u4ffe\u502b\u5009\u517c\u51a4\u51a5\u51a2\u51cd\u51cc\u51c6\u51cb\u5256\u525c\u5254\u525b\u525d\u532a\u537f\u539f\u539d\u53df\u54e8\u5510\u5501\u5537\u54fc\u54e5\u54f2\u5506\u54fa\u5514\u54e9\u54ed\u54e1\u5509\u54ee\u54ea"],["ae40","\u54e6\u5527\u5507\u54fd\u550f\u5703\u5704\u57c2\u57d4\u57cb\u57c3\u5809\u590f\u5957\u5958\u595a\u5a11\u5a18\u5a1c\u5a1f\u5a1b\u5a13\u59ec\u5a20\u5a23\u5a29\u5a25\u5a0c\u5a09\u5b6b\u5c58\u5bb0\u5bb3\u5bb6\u5bb4\u5bae\u5bb5\u5bb9\u5bb8\u5c04\u5c51\u5c55\u5c50\u5ced\u5cfd\u5cfb\u5cea\u5ce8\u5cf0\u5cf6\u5d01\u5cf4\u5dee\u5e2d\u5e2b\u5eab\u5ead\u5ea7\u5f31\u5f92\u5f91\u5f90\u6059"],["aea1","\u6063\u6065\u6050\u6055\u606d\u6069\u606f\u6084\u609f\u609a\u608d\u6094\u608c\u6085\u6096\u6247\u62f3\u6308\u62ff\u634e\u633e\u632f\u6355\u6342\u6346\u634f\u6349\u633a\u6350\u633d\u632a\u632b\u6328\u634d\u634c\u6548\u6549\u6599\u65c1\u65c5\u6642\u6649\u664f\u6643\u6652\u664c\u6645\u6641\u66f8\u6714\u6715\u6717\u6821\u6838\u6848\u6846\u6853\u6839\u6842\u6854\u6829\u68b3\u6817\u684c\u6851\u683d\u67f4\u6850\u6840\u683c\u6843\u682a\u6845\u6813\u6818\u6841\u6b8a\u6b89\u6bb7\u6c23\u6c27\u6c28\u6c26\u6c24\u6cf0\u6d6a\u6d95\u6d88\u6d87\u6d66\u6d78\u6d77\u6d59\u6d93"],["af40","\u6d6c\u6d89\u6d6e\u6d5a\u6d74\u6d69\u6d8c\u6d8a\u6d79\u6d85\u6d65\u6d94\u70ca\u70d8\u70e4\u70d9\u70c8\u70cf\u7239\u7279\u72fc\u72f9\u72fd\u72f8\u72f7\u7386\u73ed\u7409\u73ee\u73e0\u73ea\u73de\u7554\u755d\u755c\u755a\u7559\u75be\u75c5\u75c7\u75b2\u75b3\u75bd\u75bc\u75b9\u75c2\u75b8\u768b\u76b0\u76ca\u76cd\u76ce\u7729\u771f\u7720\u7728\u77e9\u7830\u7827\u7838\u781d\u7834\u7837"],["afa1","\u7825\u782d\u7820\u781f\u7832\u7955\u7950\u7960\u795f\u7956\u795e\u795d\u7957\u795a\u79e4\u79e3\u79e7\u79df\u79e6\u79e9\u79d8\u7a84\u7a88\u7ad9\u7b06\u7b11\u7c89\u7d21\u7d17\u7d0b\u7d0a\u7d20\u7d22\u7d14\u7d10\u7d15\u7d1a\u7d1c\u7d0d\u7d19\u7d1b\u7f3a\u7f5f\u7f94\u7fc5\u7fc1\u8006\u8018\u8015\u8019\u8017\u803d\u803f\u80f1\u8102\u80f0\u8105\u80ed\u80f4\u8106\u80f8\u80f3\u8108\u80fd\u810a\u80fc\u80ef\u81ed\u81ec\u8200\u8210\u822a\u822b\u8228\u822c\u82bb\u832b\u8352\u8354\u834a\u8338\u8350\u8349\u8335\u8334\u834f\u8332\u8339\u8336\u8317\u8340\u8331\u8328\u8343"],["b040","\u8654\u868a\u86aa\u8693\u86a4\u86a9\u868c\u86a3\u869c\u8870\u8877\u8881\u8882\u887d\u8879\u8a18\u8a10\u8a0e\u8a0c\u8a15\u8a0a\u8a17\u8a13\u8a16\u8a0f\u8a11\u8c48\u8c7a\u8c79\u8ca1\u8ca2\u8d77\u8eac\u8ed2\u8ed4\u8ecf\u8fb1\u9001\u9006\u8ff7\u9000\u8ffa\u8ff4\u9003\u8ffd\u9005\u8ff8\u9095\u90e1\u90dd\u90e2\u9152\u914d\u914c\u91d8\u91dd\u91d7\u91dc\u91d9\u9583\u9662\u9663\u9661"],["b0a1","\u965b\u965d\u9664\u9658\u965e\u96bb\u98e2\u99ac\u9aa8\u9ad8\u9b25\u9b32\u9b3c\u4e7e\u507a\u507d\u505c\u5047\u5043\u504c\u505a\u5049\u5065\u5076\u504e\u5055\u5075\u5074\u5077\u504f\u500f\u506f\u506d\u515c\u5195\u51f0\u526a\u526f\u52d2\u52d9\u52d8\u52d5\u5310\u530f\u5319\u533f\u5340\u533e\u53c3\u66fc\u5546\u556a\u5566\u5544\u555e\u5561\u5543\u554a\u5531\u5556\u554f\u5555\u552f\u5564\u5538\u552e\u555c\u552c\u5563\u5533\u5541\u5557\u5708\u570b\u5709\u57df\u5805\u580a\u5806\u57e0\u57e4\u57fa\u5802\u5835\u57f7\u57f9\u5920\u5962\u5a36\u5a41\u5a49\u5a66\u5a6a\u5a40"],["b140","\u5a3c\u5a62\u5a5a\u5a46\u5a4a\u5b70\u5bc7\u5bc5\u5bc4\u5bc2\u5bbf\u5bc6\u5c09\u5c08\u5c07\u5c60\u5c5c\u5c5d\u5d07\u5d06\u5d0e\u5d1b\u5d16\u5d22\u5d11\u5d29\u5d14\u5d19\u5d24\u5d27\u5d17\u5de2\u5e38\u5e36\u5e33\u5e37\u5eb7\u5eb8\u5eb6\u5eb5\u5ebe\u5f35\u5f37\u5f57\u5f6c\u5f69\u5f6b\u5f97\u5f99\u5f9e\u5f98\u5fa1\u5fa0\u5f9c\u607f\u60a3\u6089\u60a0\u60a8\u60cb\u60b4\u60e6\u60bd"],["b1a1","\u60c5\u60bb\u60b5\u60dc\u60bc\u60d8\u60d5\u60c6\u60df\u60b8\u60da\u60c7\u621a\u621b\u6248\u63a0\u63a7\u6372\u6396\u63a2\u63a5\u6377\u6367\u6398\u63aa\u6371\u63a9\u6389\u6383\u639b\u636b\u63a8\u6384\u6388\u6399\u63a1\u63ac\u6392\u638f\u6380\u637b\u6369\u6368\u637a\u655d\u6556\u6551\u6559\u6557\u555f\u654f\u6558\u6555\u6554\u659c\u659b\u65ac\u65cf\u65cb\u65cc\u65ce\u665d\u665a\u6664\u6668\u6666\u665e\u66f9\u52d7\u671b\u6881\u68af\u68a2\u6893\u68b5\u687f\u6876\u68b1\u68a7\u6897\u68b0\u6883\u68c4\u68ad\u6886\u6885\u6894\u689d\u68a8\u689f\u68a1\u6882\u6b32\u6bba"],["b240","\u6beb\u6bec\u6c2b\u6d8e\u6dbc\u6df3\u6dd9\u6db2\u6de1\u6dcc\u6de4\u6dfb\u6dfa\u6e05\u6dc7\u6dcb\u6daf\u6dd1\u6dae\u6dde\u6df9\u6db8\u6df7\u6df5\u6dc5\u6dd2\u6e1a\u6db5\u6dda\u6deb\u6dd8\u6dea\u6df1\u6dee\u6de8\u6dc6\u6dc4\u6daa\u6dec\u6dbf\u6de6\u70f9\u7109\u710a\u70fd\u70ef\u723d\u727d\u7281\u731c\u731b\u7316\u7313\u7319\u7387\u7405\u740a\u7403\u7406\u73fe\u740d\u74e0\u74f6"],["b2a1","\u74f7\u751c\u7522\u7565\u7566\u7562\u7570\u758f\u75d4\u75d5\u75b5\u75ca\u75cd\u768e\u76d4\u76d2\u76db\u7737\u773e\u773c\u7736\u7738\u773a\u786b\u7843\u784e\u7965\u7968\u796d\u79fb\u7a92\u7a95\u7b20\u7b28\u7b1b\u7b2c\u7b26\u7b19\u7b1e\u7b2e\u7c92\u7c97\u7c95\u7d46\u7d43\u7d71\u7d2e\u7d39\u7d3c\u7d40\u7d30\u7d33\u7d44\u7d2f\u7d42\u7d32\u7d31\u7f3d\u7f9e\u7f9a\u7fcc\u7fce\u7fd2\u801c\u804a\u8046\u812f\u8116\u8123\u812b\u8129\u8130\u8124\u8202\u8235\u8237\u8236\u8239\u838e\u839e\u8398\u8378\u83a2\u8396\u83bd\u83ab\u8392\u838a\u8393\u8389\u83a0\u8377\u837b\u837c"],["b340","\u8386\u83a7\u8655\u5f6a\u86c7\u86c0\u86b6\u86c4\u86b5\u86c6\u86cb\u86b1\u86af\u86c9\u8853\u889e\u8888\u88ab\u8892\u8896\u888d\u888b\u8993\u898f\u8a2a\u8a1d\u8a23\u8a25\u8a31\u8a2d\u8a1f\u8a1b\u8a22\u8c49\u8c5a\u8ca9\u8cac\u8cab\u8ca8\u8caa\u8ca7\u8d67\u8d66\u8dbe\u8dba\u8edb\u8edf\u9019\u900d\u901a\u9017\u9023\u901f\u901d\u9010\u9015\u901e\u9020\u900f\u9022\u9016\u901b\u9014"],["b3a1","\u90e8\u90ed\u90fd\u9157\u91ce\u91f5\u91e6\u91e3\u91e7\u91ed\u91e9\u9589\u966a\u9675\u9673\u9678\u9670\u9674\u9676\u9677\u966c\u96c0\u96ea\u96e9\u7ae0\u7adf\u9802\u9803\u9b5a\u9ce5\u9e75\u9e7f\u9ea5\u9ebb\u50a2\u508d\u5085\u5099\u5091\u5080\u5096\u5098\u509a\u6700\u51f1\u5272\u5274\u5275\u5269\u52de\u52dd\u52db\u535a\u53a5\u557b\u5580\u55a7\u557c\u558a\u559d\u5598\u5582\u559c\u55aa\u5594\u5587\u558b\u5583\u55b3\u55ae\u559f\u553e\u55b2\u559a\u55bb\u55ac\u55b1\u557e\u5589\u55ab\u5599\u570d\u582f\u582a\u5834\u5824\u5830\u5831\u5821\u581d\u5820\u58f9\u58fa\u5960"],["b440","\u5a77\u5a9a\u5a7f\u5a92\u5a9b\u5aa7\u5b73\u5b71\u5bd2\u5bcc\u5bd3\u5bd0\u5c0a\u5c0b\u5c31\u5d4c\u5d50\u5d34\u5d47\u5dfd\u5e45\u5e3d\u5e40\u5e43\u5e7e\u5eca\u5ec1\u5ec2\u5ec4\u5f3c\u5f6d\u5fa9\u5faa\u5fa8\u60d1\u60e1\u60b2\u60b6\u60e0\u611c\u6123\u60fa\u6115\u60f0\u60fb\u60f4\u6168\u60f1\u610e\u60f6\u6109\u6100\u6112\u621f\u6249\u63a3\u638c\u63cf\u63c0\u63e9\u63c9\u63c6\u63cd"],["b4a1","\u63d2\u63e3\u63d0\u63e1\u63d6\u63ed\u63ee\u6376\u63f4\u63ea\u63db\u6452\u63da\u63f9\u655e\u6566\u6562\u6563\u6591\u6590\u65af\u666e\u6670\u6674\u6676\u666f\u6691\u667a\u667e\u6677\u66fe\u66ff\u671f\u671d\u68fa\u68d5\u68e0\u68d8\u68d7\u6905\u68df\u68f5\u68ee\u68e7\u68f9\u68d2\u68f2\u68e3\u68cb\u68cd\u690d\u6912\u690e\u68c9\u68da\u696e\u68fb\u6b3e\u6b3a\u6b3d\u6b98\u6b96\u6bbc\u6bef\u6c2e\u6c2f\u6c2c\u6e2f\u6e38\u6e54\u6e21\u6e32\u6e67\u6e4a\u6e20\u6e25\u6e23\u6e1b\u6e5b\u6e58\u6e24\u6e56\u6e6e\u6e2d\u6e26\u6e6f\u6e34\u6e4d\u6e3a\u6e2c\u6e43\u6e1d\u6e3e\u6ecb"],["b540","\u6e89\u6e19\u6e4e\u6e63\u6e44\u6e72\u6e69\u6e5f\u7119\u711a\u7126\u7130\u7121\u7136\u716e\u711c\u724c\u7284\u7280\u7336\u7325\u7334\u7329\u743a\u742a\u7433\u7422\u7425\u7435\u7436\u7434\u742f\u741b\u7426\u7428\u7525\u7526\u756b\u756a\u75e2\u75db\u75e3\u75d9\u75d8\u75de\u75e0\u767b\u767c\u7696\u7693\u76b4\u76dc\u774f\u77ed\u785d\u786c\u786f\u7a0d\u7a08\u7a0b\u7a05\u7a00\u7a98"],["b5a1","\u7a97\u7a96\u7ae5\u7ae3\u7b49\u7b56\u7b46\u7b50\u7b52\u7b54\u7b4d\u7b4b\u7b4f\u7b51\u7c9f\u7ca5\u7d5e\u7d50\u7d68\u7d55\u7d2b\u7d6e\u7d72\u7d61\u7d66\u7d62\u7d70\u7d73\u5584\u7fd4\u7fd5\u800b\u8052\u8085\u8155\u8154\u814b\u8151\u814e\u8139\u8146\u813e\u814c\u8153\u8174\u8212\u821c\u83e9\u8403\u83f8\u840d\u83e0\u83c5\u840b\u83c1\u83ef\u83f1\u83f4\u8457\u840a\u83f0\u840c\u83cc\u83fd\u83f2\u83ca\u8438\u840e\u8404\u83dc\u8407\u83d4\u83df\u865b\u86df\u86d9\u86ed\u86d4\u86db\u86e4\u86d0\u86de\u8857\u88c1\u88c2\u88b1\u8983\u8996\u8a3b\u8a60\u8a55\u8a5e\u8a3c\u8a41"],["b640","\u8a54\u8a5b\u8a50\u8a46\u8a34\u8a3a\u8a36\u8a56\u8c61\u8c82\u8caf\u8cbc\u8cb3\u8cbd\u8cc1\u8cbb\u8cc0\u8cb4\u8cb7\u8cb6\u8cbf\u8cb8\u8d8a\u8d85\u8d81\u8dce\u8ddd\u8dcb\u8dda\u8dd1\u8dcc\u8ddb\u8dc6\u8efb\u8ef8\u8efc\u8f9c\u902e\u9035\u9031\u9038\u9032\u9036\u9102\u90f5\u9109\u90fe\u9163\u9165\u91cf\u9214\u9215\u9223\u9209\u921e\u920d\u9210\u9207\u9211\u9594\u958f\u958b\u9591"],["b6a1","\u9593\u9592\u958e\u968a\u968e\u968b\u967d\u9685\u9686\u968d\u9672\u9684\u96c1\u96c5\u96c4\u96c6\u96c7\u96ef\u96f2\u97cc\u9805\u9806\u9808\u98e7\u98ea\u98ef\u98e9\u98f2\u98ed\u99ae\u99ad\u9ec3\u9ecd\u9ed1\u4e82\u50ad\u50b5\u50b2\u50b3\u50c5\u50be\u50ac\u50b7\u50bb\u50af\u50c7\u527f\u5277\u527d\u52df\u52e6\u52e4\u52e2\u52e3\u532f\u55df\u55e8\u55d3\u55e6\u55ce\u55dc\u55c7\u55d1\u55e3\u55e4\u55ef\u55da\u55e1\u55c5\u55c6\u55e5\u55c9\u5712\u5713\u585e\u5851\u5858\u5857\u585a\u5854\u586b\u584c\u586d\u584a\u5862\u5852\u584b\u5967\u5ac1\u5ac9\u5acc\u5abe\u5abd\u5abc"],["b740","\u5ab3\u5ac2\u5ab2\u5d69\u5d6f\u5e4c\u5e79\u5ec9\u5ec8\u5f12\u5f59\u5fac\u5fae\u611a\u610f\u6148\u611f\u60f3\u611b\u60f9\u6101\u6108\u614e\u614c\u6144\u614d\u613e\u6134\u6127\u610d\u6106\u6137\u6221\u6222\u6413\u643e\u641e\u642a\u642d\u643d\u642c\u640f\u641c\u6414\u640d\u6436\u6416\u6417\u6406\u656c\u659f\u65b0\u6697\u6689\u6687\u6688\u6696\u6684\u6698\u668d\u6703\u6994\u696d"],["b7a1","\u695a\u6977\u6960\u6954\u6975\u6930\u6982\u694a\u6968\u696b\u695e\u6953\u6979\u6986\u695d\u6963\u695b\u6b47\u6b72\u6bc0\u6bbf\u6bd3\u6bfd\u6ea2\u6eaf\u6ed3\u6eb6\u6ec2\u6e90\u6e9d\u6ec7\u6ec5\u6ea5\u6e98\u6ebc\u6eba\u6eab\u6ed1\u6e96\u6e9c\u6ec4\u6ed4\u6eaa\u6ea7\u6eb4\u714e\u7159\u7169\u7164\u7149\u7167\u715c\u716c\u7166\u714c\u7165\u715e\u7146\u7168\u7156\u723a\u7252\u7337\u7345\u733f\u733e\u746f\u745a\u7455\u745f\u745e\u7441\u743f\u7459\u745b\u745c\u7576\u7578\u7600\u75f0\u7601\u75f2\u75f1\u75fa\u75ff\u75f4\u75f3\u76de\u76df\u775b\u776b\u7766\u775e\u7763"],["b840","\u7779\u776a\u776c\u775c\u7765\u7768\u7762\u77ee\u788e\u78b0\u7897\u7898\u788c\u7889\u787c\u7891\u7893\u787f\u797a\u797f\u7981\u842c\u79bd\u7a1c\u7a1a\u7a20\u7a14\u7a1f\u7a1e\u7a9f\u7aa0\u7b77\u7bc0\u7b60\u7b6e\u7b67\u7cb1\u7cb3\u7cb5\u7d93\u7d79\u7d91\u7d81\u7d8f\u7d5b\u7f6e\u7f69\u7f6a\u7f72\u7fa9\u7fa8\u7fa4\u8056\u8058\u8086\u8084\u8171\u8170\u8178\u8165\u816e\u8173\u816b"],["b8a1","\u8179\u817a\u8166\u8205\u8247\u8482\u8477\u843d\u8431\u8475\u8466\u846b\u8449\u846c\u845b\u843c\u8435\u8461\u8463\u8469\u846d\u8446\u865e\u865c\u865f\u86f9\u8713\u8708\u8707\u8700\u86fe\u86fb\u8702\u8703\u8706\u870a\u8859\u88df\u88d4\u88d9\u88dc\u88d8\u88dd\u88e1\u88ca\u88d5\u88d2\u899c\u89e3\u8a6b\u8a72\u8a73\u8a66\u8a69\u8a70\u8a87\u8a7c\u8a63\u8aa0\u8a71\u8a85\u8a6d\u8a62\u8a6e\u8a6c\u8a79\u8a7b\u8a3e\u8a68\u8c62\u8c8a\u8c89\u8cca\u8cc7\u8cc8\u8cc4\u8cb2\u8cc3\u8cc2\u8cc5\u8de1\u8ddf\u8de8\u8def\u8df3\u8dfa\u8dea\u8de4\u8de6\u8eb2\u8f03\u8f09\u8efe\u8f0a"],["b940","\u8f9f\u8fb2\u904b\u904a\u9053\u9042\u9054\u903c\u9055\u9050\u9047\u904f\u904e\u904d\u9051\u903e\u9041\u9112\u9117\u916c\u916a\u9169\u91c9\u9237\u9257\u9238\u923d\u9240\u923e\u925b\u924b\u9264\u9251\u9234\u9249\u924d\u9245\u9239\u923f\u925a\u9598\u9698\u9694\u9695\u96cd\u96cb\u96c9\u96ca\u96f7\u96fb\u96f9\u96f6\u9756\u9774\u9776\u9810\u9811\u9813\u980a\u9812\u980c\u98fc\u98f4"],["b9a1","\u98fd\u98fe\u99b3\u99b1\u99b4\u9ae1\u9ce9\u9e82\u9f0e\u9f13\u9f20\u50e7\u50ee\u50e5\u50d6\u50ed\u50da\u50d5\u50cf\u50d1\u50f1\u50ce\u50e9\u5162\u51f3\u5283\u5282\u5331\u53ad\u55fe\u5600\u561b\u5617\u55fd\u5614\u5606\u5609\u560d\u560e\u55f7\u5616\u561f\u5608\u5610\u55f6\u5718\u5716\u5875\u587e\u5883\u5893\u588a\u5879\u5885\u587d\u58fd\u5925\u5922\u5924\u596a\u5969\u5ae1\u5ae6\u5ae9\u5ad7\u5ad6\u5ad8\u5ae3\u5b75\u5bde\u5be7\u5be1\u5be5\u5be6\u5be8\u5be2\u5be4\u5bdf\u5c0d\u5c62\u5d84\u5d87\u5e5b\u5e63\u5e55\u5e57\u5e54\u5ed3\u5ed6\u5f0a\u5f46\u5f70\u5fb9\u6147"],["ba40","\u613f\u614b\u6177\u6162\u6163\u615f\u615a\u6158\u6175\u622a\u6487\u6458\u6454\u64a4\u6478\u645f\u647a\u6451\u6467\u6434\u646d\u647b\u6572\u65a1\u65d7\u65d6\u66a2\u66a8\u669d\u699c\u69a8\u6995\u69c1\u69ae\u69d3\u69cb\u699b\u69b7\u69bb\u69ab\u69b4\u69d0\u69cd\u69ad\u69cc\u69a6\u69c3\u69a3\u6b49\u6b4c\u6c33\u6f33\u6f14\u6efe\u6f13\u6ef4\u6f29\u6f3e\u6f20\u6f2c\u6f0f\u6f02\u6f22"],["baa1","\u6eff\u6eef\u6f06\u6f31\u6f38\u6f32\u6f23\u6f15\u6f2b\u6f2f\u6f88\u6f2a\u6eec\u6f01\u6ef2\u6ecc\u6ef7\u7194\u7199\u717d\u718a\u7184\u7192\u723e\u7292\u7296\u7344\u7350\u7464\u7463\u746a\u7470\u746d\u7504\u7591\u7627\u760d\u760b\u7609\u7613\u76e1\u76e3\u7784\u777d\u777f\u7761\u78c1\u789f\u78a7\u78b3\u78a9\u78a3\u798e\u798f\u798d\u7a2e\u7a31\u7aaa\u7aa9\u7aed\u7aef\u7ba1\u7b95\u7b8b\u7b75\u7b97\u7b9d\u7b94\u7b8f\u7bb8\u7b87\u7b84\u7cb9\u7cbd\u7cbe\u7dbb\u7db0\u7d9c\u7dbd\u7dbe\u7da0\u7dca\u7db4\u7db2\u7db1\u7dba\u7da2\u7dbf\u7db5\u7db8\u7dad\u7dd2\u7dc7\u7dac"],["bb40","\u7f70\u7fe0\u7fe1\u7fdf\u805e\u805a\u8087\u8150\u8180\u818f\u8188\u818a\u817f\u8182\u81e7\u81fa\u8207\u8214\u821e\u824b\u84c9\u84bf\u84c6\u84c4\u8499\u849e\u84b2\u849c\u84cb\u84b8\u84c0\u84d3\u8490\u84bc\u84d1\u84ca\u873f\u871c\u873b\u8722\u8725\u8734\u8718\u8755\u8737\u8729\u88f3\u8902\u88f4\u88f9\u88f8\u88fd\u88e8\u891a\u88ef\u8aa6\u8a8c\u8a9e\u8aa3\u8a8d\u8aa1\u8a93\u8aa4"],["bba1","\u8aaa\u8aa5\u8aa8\u8a98\u8a91\u8a9a\u8aa7\u8c6a\u8c8d\u8c8c\u8cd3\u8cd1\u8cd2\u8d6b\u8d99\u8d95\u8dfc\u8f14\u8f12\u8f15\u8f13\u8fa3\u9060\u9058\u905c\u9063\u9059\u905e\u9062\u905d\u905b\u9119\u9118\u911e\u9175\u9178\u9177\u9174\u9278\u9280\u9285\u9298\u9296\u927b\u9293\u929c\u92a8\u927c\u9291\u95a1\u95a8\u95a9\u95a3\u95a5\u95a4\u9699\u969c\u969b\u96cc\u96d2\u9700\u977c\u9785\u97f6\u9817\u9818\u98af\u98b1\u9903\u9905\u990c\u9909\u99c1\u9aaf\u9ab0\u9ae6\u9b41\u9b42\u9cf4\u9cf6\u9cf3\u9ebc\u9f3b\u9f4a\u5104\u5100\u50fb\u50f5\u50f9\u5102\u5108\u5109\u5105\u51dc"],["bc40","\u5287\u5288\u5289\u528d\u528a\u52f0\u53b2\u562e\u563b\u5639\u5632\u563f\u5634\u5629\u5653\u564e\u5657\u5674\u5636\u562f\u5630\u5880\u589f\u589e\u58b3\u589c\u58ae\u58a9\u58a6\u596d\u5b09\u5afb\u5b0b\u5af5\u5b0c\u5b08\u5bee\u5bec\u5be9\u5beb\u5c64\u5c65\u5d9d\u5d94\u5e62\u5e5f\u5e61\u5ee2\u5eda\u5edf\u5edd\u5ee3\u5ee0\u5f48\u5f71\u5fb7\u5fb5\u6176\u6167\u616e\u615d\u6155\u6182"],["bca1","\u617c\u6170\u616b\u617e\u61a7\u6190\u61ab\u618e\u61ac\u619a\u61a4\u6194\u61ae\u622e\u6469\u646f\u6479\u649e\u64b2\u6488\u6490\u64b0\u64a5\u6493\u6495\u64a9\u6492\u64ae\u64ad\u64ab\u649a\u64ac\u6499\u64a2\u64b3\u6575\u6577\u6578\u66ae\u66ab\u66b4\u66b1\u6a23\u6a1f\u69e8\u6a01\u6a1e\u6a19\u69fd\u6a21\u6a13\u6a0a\u69f3\u6a02\u6a05\u69ed\u6a11\u6b50\u6b4e\u6ba4\u6bc5\u6bc6\u6f3f\u6f7c\u6f84\u6f51\u6f66\u6f54\u6f86\u6f6d\u6f5b\u6f78\u6f6e\u6f8e\u6f7a\u6f70\u6f64\u6f97\u6f58\u6ed5\u6f6f\u6f60\u6f5f\u719f\u71ac\u71b1\u71a8\u7256\u729b\u734e\u7357\u7469\u748b\u7483"],["bd40","\u747e\u7480\u757f\u7620\u7629\u761f\u7624\u7626\u7621\u7622\u769a\u76ba\u76e4\u778e\u7787\u778c\u7791\u778b\u78cb\u78c5\u78ba\u78ca\u78be\u78d5\u78bc\u78d0\u7a3f\u7a3c\u7a40\u7a3d\u7a37\u7a3b\u7aaf\u7aae\u7bad\u7bb1\u7bc4\u7bb4\u7bc6\u7bc7\u7bc1\u7ba0\u7bcc\u7cca\u7de0\u7df4\u7def\u7dfb\u7dd8\u7dec\u7ddd\u7de8\u7de3\u7dda\u7dde\u7de9\u7d9e\u7dd9\u7df2\u7df9\u7f75\u7f77\u7faf"],["bda1","\u7fe9\u8026\u819b\u819c\u819d\u81a0\u819a\u8198\u8517\u853d\u851a\u84ee\u852c\u852d\u8513\u8511\u8523\u8521\u8514\u84ec\u8525\u84ff\u8506\u8782\u8774\u8776\u8760\u8766\u8778\u8768\u8759\u8757\u874c\u8753\u885b\u885d\u8910\u8907\u8912\u8913\u8915\u890a\u8abc\u8ad2\u8ac7\u8ac4\u8a95\u8acb\u8af8\u8ab2\u8ac9\u8ac2\u8abf\u8ab0\u8ad6\u8acd\u8ab6\u8ab9\u8adb\u8c4c\u8c4e\u8c6c\u8ce0\u8cde\u8ce6\u8ce4\u8cec\u8ced\u8ce2\u8ce3\u8cdc\u8cea\u8ce1\u8d6d\u8d9f\u8da3\u8e2b\u8e10\u8e1d\u8e22\u8e0f\u8e29\u8e1f\u8e21\u8e1e\u8eba\u8f1d\u8f1b\u8f1f\u8f29\u8f26\u8f2a\u8f1c\u8f1e"],["be40","\u8f25\u9069\u906e\u9068\u906d\u9077\u9130\u912d\u9127\u9131\u9187\u9189\u918b\u9183\u92c5\u92bb\u92b7\u92ea\u92ac\u92e4\u92c1\u92b3\u92bc\u92d2\u92c7\u92f0\u92b2\u95ad\u95b1\u9704\u9706\u9707\u9709\u9760\u978d\u978b\u978f\u9821\u982b\u981c\u98b3\u990a\u9913\u9912\u9918\u99dd\u99d0\u99df\u99db\u99d1\u99d5\u99d2\u99d9\u9ab7\u9aee\u9aef\u9b27\u9b45\u9b44\u9b77\u9b6f\u9d06\u9d09"],["bea1","\u9d03\u9ea9\u9ebe\u9ece\u58a8\u9f52\u5112\u5118\u5114\u5110\u5115\u5180\u51aa\u51dd\u5291\u5293\u52f3\u5659\u566b\u5679\u5669\u5664\u5678\u566a\u5668\u5665\u5671\u566f\u566c\u5662\u5676\u58c1\u58be\u58c7\u58c5\u596e\u5b1d\u5b34\u5b78\u5bf0\u5c0e\u5f4a\u61b2\u6191\u61a9\u618a\u61cd\u61b6\u61be\u61ca\u61c8\u6230\u64c5\u64c1\u64cb\u64bb\u64bc\u64da\u64c4\u64c7\u64c2\u64cd\u64bf\u64d2\u64d4\u64be\u6574\u66c6\u66c9\u66b9\u66c4\u66c7\u66b8\u6a3d\u6a38\u6a3a\u6a59\u6a6b\u6a58\u6a39\u6a44\u6a62\u6a61\u6a4b\u6a47\u6a35\u6a5f\u6a48\u6b59\u6b77\u6c05\u6fc2\u6fb1\u6fa1"],["bf40","\u6fc3\u6fa4\u6fc1\u6fa7\u6fb3\u6fc0\u6fb9\u6fb6\u6fa6\u6fa0\u6fb4\u71be\u71c9\u71d0\u71d2\u71c8\u71d5\u71b9\u71ce\u71d9\u71dc\u71c3\u71c4\u7368\u749c\u74a3\u7498\u749f\u749e\u74e2\u750c\u750d\u7634\u7638\u763a\u76e7\u76e5\u77a0\u779e\u779f\u77a5\u78e8\u78da\u78ec\u78e7\u79a6\u7a4d\u7a4e\u7a46\u7a4c\u7a4b\u7aba\u7bd9\u7c11\u7bc9\u7be4\u7bdb\u7be1\u7be9\u7be6\u7cd5\u7cd6\u7e0a"],["bfa1","\u7e11\u7e08\u7e1b\u7e23\u7e1e\u7e1d\u7e09\u7e10\u7f79\u7fb2\u7ff0\u7ff1\u7fee\u8028\u81b3\u81a9\u81a8\u81fb\u8208\u8258\u8259\u854a\u8559\u8548\u8568\u8569\u8543\u8549\u856d\u856a\u855e\u8783\u879f\u879e\u87a2\u878d\u8861\u892a\u8932\u8925\u892b\u8921\u89aa\u89a6\u8ae6\u8afa\u8aeb\u8af1\u8b00\u8adc\u8ae7\u8aee\u8afe\u8b01\u8b02\u8af7\u8aed\u8af3\u8af6\u8afc\u8c6b\u8c6d\u8c93\u8cf4\u8e44\u8e31\u8e34\u8e42\u8e39\u8e35\u8f3b\u8f2f\u8f38\u8f33\u8fa8\u8fa6\u9075\u9074\u9078\u9072\u907c\u907a\u9134\u9192\u9320\u9336\u92f8\u9333\u932f\u9322\u92fc\u932b\u9304\u931a"],["c040","\u9310\u9326\u9321\u9315\u932e\u9319\u95bb\u96a7\u96a8\u96aa\u96d5\u970e\u9711\u9716\u970d\u9713\u970f\u975b\u975c\u9766\u9798\u9830\u9838\u983b\u9837\u982d\u9839\u9824\u9910\u9928\u991e\u991b\u9921\u991a\u99ed\u99e2\u99f1\u9ab8\u9abc\u9afb\u9aed\u9b28\u9b91\u9d15\u9d23\u9d26\u9d28\u9d12\u9d1b\u9ed8\u9ed4\u9f8d\u9f9c\u512a\u511f\u5121\u5132\u52f5\u568e\u5680\u5690\u5685\u5687"],["c0a1","\u568f\u58d5\u58d3\u58d1\u58ce\u5b30\u5b2a\u5b24\u5b7a\u5c37\u5c68\u5dbc\u5dba\u5dbd\u5db8\u5e6b\u5f4c\u5fbd\u61c9\u61c2\u61c7\u61e6\u61cb\u6232\u6234\u64ce\u64ca\u64d8\u64e0\u64f0\u64e6\u64ec\u64f1\u64e2\u64ed\u6582\u6583\u66d9\u66d6\u6a80\u6a94\u6a84\u6aa2\u6a9c\u6adb\u6aa3\u6a7e\u6a97\u6a90\u6aa0\u6b5c\u6bae\u6bda\u6c08\u6fd8\u6ff1\u6fdf\u6fe0\u6fdb\u6fe4\u6feb\u6fef\u6f80\u6fec\u6fe1\u6fe9\u6fd5\u6fee\u6ff0\u71e7\u71df\u71ee\u71e6\u71e5\u71ed\u71ec\u71f4\u71e0\u7235\u7246\u7370\u7372\u74a9\u74b0\u74a6\u74a8\u7646\u7642\u764c\u76ea\u77b3\u77aa\u77b0\u77ac"],["c140","\u77a7\u77ad\u77ef\u78f7\u78fa\u78f4\u78ef\u7901\u79a7\u79aa\u7a57\u7abf\u7c07\u7c0d\u7bfe\u7bf7\u7c0c\u7be0\u7ce0\u7cdc\u7cde\u7ce2\u7cdf\u7cd9\u7cdd\u7e2e\u7e3e\u7e46\u7e37\u7e32\u7e43\u7e2b\u7e3d\u7e31\u7e45\u7e41\u7e34\u7e39\u7e48\u7e35\u7e3f\u7e2f\u7f44\u7ff3\u7ffc\u8071\u8072\u8070\u806f\u8073\u81c6\u81c3\u81ba\u81c2\u81c0\u81bf\u81bd\u81c9\u81be\u81e8\u8209\u8271\u85aa"],["c1a1","\u8584\u857e\u859c\u8591\u8594\u85af\u859b\u8587\u85a8\u858a\u8667\u87c0\u87d1\u87b3\u87d2\u87c6\u87ab\u87bb\u87ba\u87c8\u87cb\u893b\u8936\u8944\u8938\u893d\u89ac\u8b0e\u8b17\u8b19\u8b1b\u8b0a\u8b20\u8b1d\u8b04\u8b10\u8c41\u8c3f\u8c73\u8cfa\u8cfd\u8cfc\u8cf8\u8cfb\u8da8\u8e49\u8e4b\u8e48\u8e4a\u8f44\u8f3e\u8f42\u8f45\u8f3f\u907f\u907d\u9084\u9081\u9082\u9080\u9139\u91a3\u919e\u919c\u934d\u9382\u9328\u9375\u934a\u9365\u934b\u9318\u937e\u936c\u935b\u9370\u935a\u9354\u95ca\u95cb\u95cc\u95c8\u95c6\u96b1\u96b8\u96d6\u971c\u971e\u97a0\u97d3\u9846\u98b6\u9935\u9a01"],["c240","\u99ff\u9bae\u9bab\u9baa\u9bad\u9d3b\u9d3f\u9e8b\u9ecf\u9ede\u9edc\u9edd\u9edb\u9f3e\u9f4b\u53e2\u5695\u56ae\u58d9\u58d8\u5b38\u5f5d\u61e3\u6233\u64f4\u64f2\u64fe\u6506\u64fa\u64fb\u64f7\u65b7\u66dc\u6726\u6ab3\u6aac\u6ac3\u6abb\u6ab8\u6ac2\u6aae\u6aaf\u6b5f\u6b78\u6baf\u7009\u700b\u6ffe\u7006\u6ffa\u7011\u700f\u71fb\u71fc\u71fe\u71f8\u7377\u7375\u74a7\u74bf\u7515\u7656\u7658"],["c2a1","\u7652\u77bd\u77bf\u77bb\u77bc\u790e\u79ae\u7a61\u7a62\u7a60\u7ac4\u7ac5\u7c2b\u7c27\u7c2a\u7c1e\u7c23\u7c21\u7ce7\u7e54\u7e55\u7e5e\u7e5a\u7e61\u7e52\u7e59\u7f48\u7ff9\u7ffb\u8077\u8076\u81cd\u81cf\u820a\u85cf\u85a9\u85cd\u85d0\u85c9\u85b0\u85ba\u85b9\u85a6\u87ef\u87ec\u87f2\u87e0\u8986\u89b2\u89f4\u8b28\u8b39\u8b2c\u8b2b\u8c50\u8d05\u8e59\u8e63\u8e66\u8e64\u8e5f\u8e55\u8ec0\u8f49\u8f4d\u9087\u9083\u9088\u91ab\u91ac\u91d0\u9394\u938a\u9396\u93a2\u93b3\u93ae\u93ac\u93b0\u9398\u939a\u9397\u95d4\u95d6\u95d0\u95d5\u96e2\u96dc\u96d9\u96db\u96de\u9724\u97a3\u97a6"],["c340","\u97ad\u97f9\u984d\u984f\u984c\u984e\u9853\u98ba\u993e\u993f\u993d\u992e\u99a5\u9a0e\u9ac1\u9b03\u9b06\u9b4f\u9b4e\u9b4d\u9bca\u9bc9\u9bfd\u9bc8\u9bc0\u9d51\u9d5d\u9d60\u9ee0\u9f15\u9f2c\u5133\u56a5\u58de\u58df\u58e2\u5bf5\u9f90\u5eec\u61f2\u61f7\u61f6\u61f5\u6500\u650f\u66e0\u66dd\u6ae5\u6add\u6ada\u6ad3\u701b\u701f\u7028\u701a\u701d\u7015\u7018\u7206\u720d\u7258\u72a2\u7378"],["c3a1","\u737a\u74bd\u74ca\u74e3\u7587\u7586\u765f\u7661\u77c7\u7919\u79b1\u7a6b\u7a69\u7c3e\u7c3f\u7c38\u7c3d\u7c37\u7c40\u7e6b\u7e6d\u7e79\u7e69\u7e6a\u7f85\u7e73\u7fb6\u7fb9\u7fb8\u81d8\u85e9\u85dd\u85ea\u85d5\u85e4\u85e5\u85f7\u87fb\u8805\u880d\u87f9\u87fe\u8960\u895f\u8956\u895e\u8b41\u8b5c\u8b58\u8b49\u8b5a\u8b4e\u8b4f\u8b46\u8b59\u8d08\u8d0a\u8e7c\u8e72\u8e87\u8e76\u8e6c\u8e7a\u8e74\u8f54\u8f4e\u8fad\u908a\u908b\u91b1\u91ae\u93e1\u93d1\u93df\u93c3\u93c8\u93dc\u93dd\u93d6\u93e2\u93cd\u93d8\u93e4\u93d7\u93e8\u95dc\u96b4\u96e3\u972a\u9727\u9761\u97dc\u97fb\u985e"],["c440","\u9858\u985b\u98bc\u9945\u9949\u9a16\u9a19\u9b0d\u9be8\u9be7\u9bd6\u9bdb\u9d89\u9d61\u9d72\u9d6a\u9d6c\u9e92\u9e97\u9e93\u9eb4\u52f8\u56a8\u56b7\u56b6\u56b4\u56bc\u58e4\u5b40\u5b43\u5b7d\u5bf6\u5dc9\u61f8\u61fa\u6518\u6514\u6519\u66e6\u6727\u6aec\u703e\u7030\u7032\u7210\u737b\u74cf\u7662\u7665\u7926\u792a\u792c\u792b\u7ac7\u7af6\u7c4c\u7c43\u7c4d\u7cef\u7cf0\u8fae\u7e7d\u7e7c"],["c4a1","\u7e82\u7f4c\u8000\u81da\u8266\u85fb\u85f9\u8611\u85fa\u8606\u860b\u8607\u860a\u8814\u8815\u8964\u89ba\u89f8\u8b70\u8b6c\u8b66\u8b6f\u8b5f\u8b6b\u8d0f\u8d0d\u8e89\u8e81\u8e85\u8e82\u91b4\u91cb\u9418\u9403\u93fd\u95e1\u9730\u98c4\u9952\u9951\u99a8\u9a2b\u9a30\u9a37\u9a35\u9c13\u9c0d\u9e79\u9eb5\u9ee8\u9f2f\u9f5f\u9f63\u9f61\u5137\u5138\u56c1\u56c0\u56c2\u5914\u5c6c\u5dcd\u61fc\u61fe\u651d\u651c\u6595\u66e9\u6afb\u6b04\u6afa\u6bb2\u704c\u721b\u72a7\u74d6\u74d4\u7669\u77d3\u7c50\u7e8f\u7e8c\u7fbc\u8617\u862d\u861a\u8823\u8822\u8821\u881f\u896a\u896c\u89bd\u8b74"],["c540","\u8b77\u8b7d\u8d13\u8e8a\u8e8d\u8e8b\u8f5f\u8faf\u91ba\u942e\u9433\u9435\u943a\u9438\u9432\u942b\u95e2\u9738\u9739\u9732\u97ff\u9867\u9865\u9957\u9a45\u9a43\u9a40\u9a3e\u9acf\u9b54\u9b51\u9c2d\u9c25\u9daf\u9db4\u9dc2\u9db8\u9e9d\u9eef\u9f19\u9f5c\u9f66\u9f67\u513c\u513b\u56c8\u56ca\u56c9\u5b7f\u5dd4\u5dd2\u5f4e\u61ff\u6524\u6b0a\u6b61\u7051\u7058\u7380\u74e4\u758a\u766e\u766c"],["c5a1","\u79b3\u7c60\u7c5f\u807e\u807d\u81df\u8972\u896f\u89fc\u8b80\u8d16\u8d17\u8e91\u8e93\u8f61\u9148\u9444\u9451\u9452\u973d\u973e\u97c3\u97c1\u986b\u9955\u9a55\u9a4d\u9ad2\u9b1a\u9c49\u9c31\u9c3e\u9c3b\u9dd3\u9dd7\u9f34\u9f6c\u9f6a\u9f94\u56cc\u5dd6\u6200\u6523\u652b\u652a\u66ec\u6b10\u74da\u7aca\u7c64\u7c63\u7c65\u7e93\u7e96\u7e94\u81e2\u8638\u863f\u8831\u8b8a\u9090\u908f\u9463\u9460\u9464\u9768\u986f\u995c\u9a5a\u9a5b\u9a57\u9ad3\u9ad4\u9ad1\u9c54\u9c57\u9c56\u9de5\u9e9f\u9ef4\u56d1\u58e9\u652c\u705e\u7671\u7672\u77d7\u7f50\u7f88\u8836\u8839\u8862\u8b93\u8b92"],["c640","\u8b96\u8277\u8d1b\u91c0\u946a\u9742\u9748\u9744\u97c6\u9870\u9a5f\u9b22\u9b58\u9c5f\u9df9\u9dfa\u9e7c\u9e7d\u9f07\u9f77\u9f72\u5ef3\u6b16\u7063\u7c6c\u7c6e\u883b\u89c0\u8ea1\u91c1\u9472\u9470\u9871\u995e\u9ad6\u9b23\u9ecc\u7064\u77da\u8b9a\u9477\u97c9\u9a62\u9a65\u7e9c\u8b9c\u8eaa\u91c5\u947d\u947e\u947c\u9c77\u9c78\u9ef7\u8c54\u947f\u9e1a\u7228\u9a6a\u9b31\u9e1b\u9e1e\u7c72"],["c940","\u4e42\u4e5c\u51f5\u531a\u5382\u4e07\u4e0c\u4e47\u4e8d\u56d7\ufa0c\u5c6e\u5f73\u4e0f\u5187\u4e0e\u4e2e\u4e93\u4ec2\u4ec9\u4ec8\u5198\u52fc\u536c\u53b9\u5720\u5903\u592c\u5c10\u5dff\u65e1\u6bb3\u6bcc\u6c14\u723f\u4e31\u4e3c\u4ee8\u4edc\u4ee9\u4ee1\u4edd\u4eda\u520c\u531c\u534c\u5722\u5723\u5917\u592f\u5b81\u5b84\u5c12\u5c3b\u5c74\u5c73\u5e04\u5e80\u5e82\u5fc9\u6209\u6250\u6c15"],["c9a1","\u6c36\u6c43\u6c3f\u6c3b\u72ae\u72b0\u738a\u79b8\u808a\u961e\u4f0e\u4f18\u4f2c\u4ef5\u4f14\u4ef1\u4f00\u4ef7\u4f08\u4f1d\u4f02\u4f05\u4f22\u4f13\u4f04\u4ef4\u4f12\u51b1\u5213\u5209\u5210\u52a6\u5322\u531f\u534d\u538a\u5407\u56e1\u56df\u572e\u572a\u5734\u593c\u5980\u597c\u5985\u597b\u597e\u5977\u597f\u5b56\u5c15\u5c25\u5c7c\u5c7a\u5c7b\u5c7e\u5ddf\u5e75\u5e84\u5f02\u5f1a\u5f74\u5fd5\u5fd4\u5fcf\u625c\u625e\u6264\u6261\u6266\u6262\u6259\u6260\u625a\u6265\u65ef\u65ee\u673e\u6739\u6738\u673b\u673a\u673f\u673c\u6733\u6c18\u6c46\u6c52\u6c5c\u6c4f\u6c4a\u6c54\u6c4b"],["ca40","\u6c4c\u7071\u725e\u72b4\u72b5\u738e\u752a\u767f\u7a75\u7f51\u8278\u827c\u8280\u827d\u827f\u864d\u897e\u9099\u9097\u9098\u909b\u9094\u9622\u9624\u9620\u9623\u4f56\u4f3b\u4f62\u4f49\u4f53\u4f64\u4f3e\u4f67\u4f52\u4f5f\u4f41\u4f58\u4f2d\u4f33\u4f3f\u4f61\u518f\u51b9\u521c\u521e\u5221\u52ad\u52ae\u5309\u5363\u5372\u538e\u538f\u5430\u5437\u542a\u5454\u5445\u5419\u541c\u5425\u5418"],["caa1","\u543d\u544f\u5441\u5428\u5424\u5447\u56ee\u56e7\u56e5\u5741\u5745\u574c\u5749\u574b\u5752\u5906\u5940\u59a6\u5998\u59a0\u5997\u598e\u59a2\u5990\u598f\u59a7\u59a1\u5b8e\u5b92\u5c28\u5c2a\u5c8d\u5c8f\u5c88\u5c8b\u5c89\u5c92\u5c8a\u5c86\u5c93\u5c95\u5de0\u5e0a\u5e0e\u5e8b\u5e89\u5e8c\u5e88\u5e8d\u5f05\u5f1d\u5f78\u5f76\u5fd2\u5fd1\u5fd0\u5fed\u5fe8\u5fee\u5ff3\u5fe1\u5fe4\u5fe3\u5ffa\u5fef\u5ff7\u5ffb\u6000\u5ff4\u623a\u6283\u628c\u628e\u628f\u6294\u6287\u6271\u627b\u627a\u6270\u6281\u6288\u6277\u627d\u6272\u6274\u6537\u65f0\u65f4\u65f3\u65f2\u65f5\u6745\u6747"],["cb40","\u6759\u6755\u674c\u6748\u675d\u674d\u675a\u674b\u6bd0\u6c19\u6c1a\u6c78\u6c67\u6c6b\u6c84\u6c8b\u6c8f\u6c71\u6c6f\u6c69\u6c9a\u6c6d\u6c87\u6c95\u6c9c\u6c66\u6c73\u6c65\u6c7b\u6c8e\u7074\u707a\u7263\u72bf\u72bd\u72c3\u72c6\u72c1\u72ba\u72c5\u7395\u7397\u7393\u7394\u7392\u753a\u7539\u7594\u7595\u7681\u793d\u8034\u8095\u8099\u8090\u8092\u809c\u8290\u828f\u8285\u828e\u8291\u8293"],["cba1","\u828a\u8283\u8284\u8c78\u8fc9\u8fbf\u909f\u90a1\u90a5\u909e\u90a7\u90a0\u9630\u9628\u962f\u962d\u4e33\u4f98\u4f7c\u4f85\u4f7d\u4f80\u4f87\u4f76\u4f74\u4f89\u4f84\u4f77\u4f4c\u4f97\u4f6a\u4f9a\u4f79\u4f81\u4f78\u4f90\u4f9c\u4f94\u4f9e\u4f92\u4f82\u4f95\u4f6b\u4f6e\u519e\u51bc\u51be\u5235\u5232\u5233\u5246\u5231\u52bc\u530a\u530b\u533c\u5392\u5394\u5487\u547f\u5481\u5491\u5482\u5488\u546b\u547a\u547e\u5465\u546c\u5474\u5466\u548d\u546f\u5461\u5460\u5498\u5463\u5467\u5464\u56f7\u56f9\u576f\u5772\u576d\u576b\u5771\u5770\u5776\u5780\u5775\u577b\u5773\u5774\u5762"],["cc40","\u5768\u577d\u590c\u5945\u59b5\u59ba\u59cf\u59ce\u59b2\u59cc\u59c1\u59b6\u59bc\u59c3\u59d6\u59b1\u59bd\u59c0\u59c8\u59b4\u59c7\u5b62\u5b65\u5b93\u5b95\u5c44\u5c47\u5cae\u5ca4\u5ca0\u5cb5\u5caf\u5ca8\u5cac\u5c9f\u5ca3\u5cad\u5ca2\u5caa\u5ca7\u5c9d\u5ca5\u5cb6\u5cb0\u5ca6\u5e17\u5e14\u5e19\u5f28\u5f22\u5f23\u5f24\u5f54\u5f82\u5f7e\u5f7d\u5fde\u5fe5\u602d\u6026\u6019\u6032\u600b"],["cca1","\u6034\u600a\u6017\u6033\u601a\u601e\u602c\u6022\u600d\u6010\u602e\u6013\u6011\u600c\u6009\u601c\u6214\u623d\u62ad\u62b4\u62d1\u62be\u62aa\u62b6\u62ca\u62ae\u62b3\u62af\u62bb\u62a9\u62b0\u62b8\u653d\u65a8\u65bb\u6609\u65fc\u6604\u6612\u6608\u65fb\u6603\u660b\u660d\u6605\u65fd\u6611\u6610\u66f6\u670a\u6785\u676c\u678e\u6792\u6776\u677b\u6798\u6786\u6784\u6774\u678d\u678c\u677a\u679f\u6791\u6799\u6783\u677d\u6781\u6778\u6779\u6794\u6b25\u6b80\u6b7e\u6bde\u6c1d\u6c93\u6cec\u6ceb\u6cee\u6cd9\u6cb6\u6cd4\u6cad\u6ce7\u6cb7\u6cd0\u6cc2\u6cba\u6cc3\u6cc6\u6ced\u6cf2"],["cd40","\u6cd2\u6cdd\u6cb4\u6c8a\u6c9d\u6c80\u6cde\u6cc0\u6d30\u6ccd\u6cc7\u6cb0\u6cf9\u6ccf\u6ce9\u6cd1\u7094\u7098\u7085\u7093\u7086\u7084\u7091\u7096\u7082\u709a\u7083\u726a\u72d6\u72cb\u72d8\u72c9\u72dc\u72d2\u72d4\u72da\u72cc\u72d1\u73a4\u73a1\u73ad\u73a6\u73a2\u73a0\u73ac\u739d\u74dd\u74e8\u753f\u7540\u753e\u758c\u7598\u76af\u76f3\u76f1\u76f0\u76f5\u77f8\u77fc\u77f9\u77fb\u77fa"],["cda1","\u77f7\u7942\u793f\u79c5\u7a78\u7a7b\u7afb\u7c75\u7cfd\u8035\u808f\u80ae\u80a3\u80b8\u80b5\u80ad\u8220\u82a0\u82c0\u82ab\u829a\u8298\u829b\u82b5\u82a7\u82ae\u82bc\u829e\u82ba\u82b4\u82a8\u82a1\u82a9\u82c2\u82a4\u82c3\u82b6\u82a2\u8670\u866f\u866d\u866e\u8c56\u8fd2\u8fcb\u8fd3\u8fcd\u8fd6\u8fd5\u8fd7\u90b2\u90b4\u90af\u90b3\u90b0\u9639\u963d\u963c\u963a\u9643\u4fcd\u4fc5\u4fd3\u4fb2\u4fc9\u4fcb\u4fc1\u4fd4\u4fdc\u4fd9\u4fbb\u4fb3\u4fdb\u4fc7\u4fd6\u4fba\u4fc0\u4fb9\u4fec\u5244\u5249\u52c0\u52c2\u533d\u537c\u5397\u5396\u5399\u5398\u54ba\u54a1\u54ad\u54a5\u54cf"],["ce40","\u54c3\u830d\u54b7\u54ae\u54d6\u54b6\u54c5\u54c6\u54a0\u5470\u54bc\u54a2\u54be\u5472\u54de\u54b0\u57b5\u579e\u579f\u57a4\u578c\u5797\u579d\u579b\u5794\u5798\u578f\u5799\u57a5\u579a\u5795\u58f4\u590d\u5953\u59e1\u59de\u59ee\u5a00\u59f1\u59dd\u59fa\u59fd\u59fc\u59f6\u59e4\u59f2\u59f7\u59db\u59e9\u59f3\u59f5\u59e0\u59fe\u59f4\u59ed\u5ba8\u5c4c\u5cd0\u5cd8\u5ccc\u5cd7\u5ccb\u5cdb"],["cea1","\u5cde\u5cda\u5cc9\u5cc7\u5cca\u5cd6\u5cd3\u5cd4\u5ccf\u5cc8\u5cc6\u5cce\u5cdf\u5cf8\u5df9\u5e21\u5e22\u5e23\u5e20\u5e24\u5eb0\u5ea4\u5ea2\u5e9b\u5ea3\u5ea5\u5f07\u5f2e\u5f56\u5f86\u6037\u6039\u6054\u6072\u605e\u6045\u6053\u6047\u6049\u605b\u604c\u6040\u6042\u605f\u6024\u6044\u6058\u6066\u606e\u6242\u6243\u62cf\u630d\u630b\u62f5\u630e\u6303\u62eb\u62f9\u630f\u630c\u62f8\u62f6\u6300\u6313\u6314\u62fa\u6315\u62fb\u62f0\u6541\u6543\u65aa\u65bf\u6636\u6621\u6632\u6635\u661c\u6626\u6622\u6633\u662b\u663a\u661d\u6634\u6639\u662e\u670f\u6710\u67c1\u67f2\u67c8\u67ba"],["cf40","\u67dc\u67bb\u67f8\u67d8\u67c0\u67b7\u67c5\u67eb\u67e4\u67df\u67b5\u67cd\u67b3\u67f7\u67f6\u67ee\u67e3\u67c2\u67b9\u67ce\u67e7\u67f0\u67b2\u67fc\u67c6\u67ed\u67cc\u67ae\u67e6\u67db\u67fa\u67c9\u67ca\u67c3\u67ea\u67cb\u6b28\u6b82\u6b84\u6bb6\u6bd6\u6bd8\u6be0\u6c20\u6c21\u6d28\u6d34\u6d2d\u6d1f\u6d3c\u6d3f\u6d12\u6d0a\u6cda\u6d33\u6d04\u6d19\u6d3a\u6d1a\u6d11\u6d00\u6d1d\u6d42"],["cfa1","\u6d01\u6d18\u6d37\u6d03\u6d0f\u6d40\u6d07\u6d20\u6d2c\u6d08\u6d22\u6d09\u6d10\u70b7\u709f\u70be\u70b1\u70b0\u70a1\u70b4\u70b5\u70a9\u7241\u7249\u724a\u726c\u7270\u7273\u726e\u72ca\u72e4\u72e8\u72eb\u72df\u72ea\u72e6\u72e3\u7385\u73cc\u73c2\u73c8\u73c5\u73b9\u73b6\u73b5\u73b4\u73eb\u73bf\u73c7\u73be\u73c3\u73c6\u73b8\u73cb\u74ec\u74ee\u752e\u7547\u7548\u75a7\u75aa\u7679\u76c4\u7708\u7703\u7704\u7705\u770a\u76f7\u76fb\u76fa\u77e7\u77e8\u7806\u7811\u7812\u7805\u7810\u780f\u780e\u7809\u7803\u7813\u794a\u794c\u794b\u7945\u7944\u79d5\u79cd\u79cf\u79d6\u79ce\u7a80"],["d040","\u7a7e\u7ad1\u7b00\u7b01\u7c7a\u7c78\u7c79\u7c7f\u7c80\u7c81\u7d03\u7d08\u7d01\u7f58\u7f91\u7f8d\u7fbe\u8007\u800e\u800f\u8014\u8037\u80d8\u80c7\u80e0\u80d1\u80c8\u80c2\u80d0\u80c5\u80e3\u80d9\u80dc\u80ca\u80d5\u80c9\u80cf\u80d7\u80e6\u80cd\u81ff\u8221\u8294\u82d9\u82fe\u82f9\u8307\u82e8\u8300\u82d5\u833a\u82eb\u82d6\u82f4\u82ec\u82e1\u82f2\u82f5\u830c\u82fb\u82f6\u82f0\u82ea"],["d0a1","\u82e4\u82e0\u82fa\u82f3\u82ed\u8677\u8674\u867c\u8673\u8841\u884e\u8867\u886a\u8869\u89d3\u8a04\u8a07\u8d72\u8fe3\u8fe1\u8fee\u8fe0\u90f1\u90bd\u90bf\u90d5\u90c5\u90be\u90c7\u90cb\u90c8\u91d4\u91d3\u9654\u964f\u9651\u9653\u964a\u964e\u501e\u5005\u5007\u5013\u5022\u5030\u501b\u4ff5\u4ff4\u5033\u5037\u502c\u4ff6\u4ff7\u5017\u501c\u5020\u5027\u5035\u502f\u5031\u500e\u515a\u5194\u5193\u51ca\u51c4\u51c5\u51c8\u51ce\u5261\u525a\u5252\u525e\u525f\u5255\u5262\u52cd\u530e\u539e\u5526\u54e2\u5517\u5512\u54e7\u54f3\u54e4\u551a\u54ff\u5504\u5508\u54eb\u5511\u5505\u54f1"],["d140","\u550a\u54fb\u54f7\u54f8\u54e0\u550e\u5503\u550b\u5701\u5702\u57cc\u5832\u57d5\u57d2\u57ba\u57c6\u57bd\u57bc\u57b8\u57b6\u57bf\u57c7\u57d0\u57b9\u57c1\u590e\u594a\u5a19\u5a16\u5a2d\u5a2e\u5a15\u5a0f\u5a17\u5a0a\u5a1e\u5a33\u5b6c\u5ba7\u5bad\u5bac\u5c03\u5c56\u5c54\u5cec\u5cff\u5cee\u5cf1\u5cf7\u5d00\u5cf9\u5e29\u5e28\u5ea8\u5eae\u5eaa\u5eac\u5f33\u5f30\u5f67\u605d\u605a\u6067"],["d1a1","\u6041\u60a2\u6088\u6080\u6092\u6081\u609d\u6083\u6095\u609b\u6097\u6087\u609c\u608e\u6219\u6246\u62f2\u6310\u6356\u632c\u6344\u6345\u6336\u6343\u63e4\u6339\u634b\u634a\u633c\u6329\u6341\u6334\u6358\u6354\u6359\u632d\u6347\u6333\u635a\u6351\u6338\u6357\u6340\u6348\u654a\u6546\u65c6\u65c3\u65c4\u65c2\u664a\u665f\u6647\u6651\u6712\u6713\u681f\u681a\u6849\u6832\u6833\u683b\u684b\u684f\u6816\u6831\u681c\u6835\u682b\u682d\u682f\u684e\u6844\u6834\u681d\u6812\u6814\u6826\u6828\u682e\u684d\u683a\u6825\u6820\u6b2c\u6b2f\u6b2d\u6b31\u6b34\u6b6d\u8082\u6b88\u6be6\u6be4"],["d240","\u6be8\u6be3\u6be2\u6be7\u6c25\u6d7a\u6d63\u6d64\u6d76\u6d0d\u6d61\u6d92\u6d58\u6d62\u6d6d\u6d6f\u6d91\u6d8d\u6def\u6d7f\u6d86\u6d5e\u6d67\u6d60\u6d97\u6d70\u6d7c\u6d5f\u6d82\u6d98\u6d2f\u6d68\u6d8b\u6d7e\u6d80\u6d84\u6d16\u6d83\u6d7b\u6d7d\u6d75\u6d90\u70dc\u70d3\u70d1\u70dd\u70cb\u7f39\u70e2\u70d7\u70d2\u70de\u70e0\u70d4\u70cd\u70c5\u70c6\u70c7\u70da\u70ce\u70e1\u7242\u7278"],["d2a1","\u7277\u7276\u7300\u72fa\u72f4\u72fe\u72f6\u72f3\u72fb\u7301\u73d3\u73d9\u73e5\u73d6\u73bc\u73e7\u73e3\u73e9\u73dc\u73d2\u73db\u73d4\u73dd\u73da\u73d7\u73d8\u73e8\u74de\u74df\u74f4\u74f5\u7521\u755b\u755f\u75b0\u75c1\u75bb\u75c4\u75c0\u75bf\u75b6\u75ba\u768a\u76c9\u771d\u771b\u7710\u7713\u7712\u7723\u7711\u7715\u7719\u771a\u7722\u7727\u7823\u782c\u7822\u7835\u782f\u7828\u782e\u782b\u7821\u7829\u7833\u782a\u7831\u7954\u795b\u794f\u795c\u7953\u7952\u7951\u79eb\u79ec\u79e0\u79ee\u79ed\u79ea\u79dc\u79de\u79dd\u7a86\u7a89\u7a85\u7a8b\u7a8c\u7a8a\u7a87\u7ad8\u7b10"],["d340","\u7b04\u7b13\u7b05\u7b0f\u7b08\u7b0a\u7b0e\u7b09\u7b12\u7c84\u7c91\u7c8a\u7c8c\u7c88\u7c8d\u7c85\u7d1e\u7d1d\u7d11\u7d0e\u7d18\u7d16\u7d13\u7d1f\u7d12\u7d0f\u7d0c\u7f5c\u7f61\u7f5e\u7f60\u7f5d\u7f5b\u7f96\u7f92\u7fc3\u7fc2\u7fc0\u8016\u803e\u8039\u80fa\u80f2\u80f9\u80f5\u8101\u80fb\u8100\u8201\u822f\u8225\u8333\u832d\u8344\u8319\u8351\u8325\u8356\u833f\u8341\u8326\u831c\u8322"],["d3a1","\u8342\u834e\u831b\u832a\u8308\u833c\u834d\u8316\u8324\u8320\u8337\u832f\u8329\u8347\u8345\u834c\u8353\u831e\u832c\u834b\u8327\u8348\u8653\u8652\u86a2\u86a8\u8696\u868d\u8691\u869e\u8687\u8697\u8686\u868b\u869a\u8685\u86a5\u8699\u86a1\u86a7\u8695\u8698\u868e\u869d\u8690\u8694\u8843\u8844\u886d\u8875\u8876\u8872\u8880\u8871\u887f\u886f\u8883\u887e\u8874\u887c\u8a12\u8c47\u8c57\u8c7b\u8ca4\u8ca3\u8d76\u8d78\u8db5\u8db7\u8db6\u8ed1\u8ed3\u8ffe\u8ff5\u9002\u8fff\u8ffb\u9004\u8ffc\u8ff6\u90d6\u90e0\u90d9\u90da\u90e3\u90df\u90e5\u90d8\u90db\u90d7\u90dc\u90e4\u9150"],["d440","\u914e\u914f\u91d5\u91e2\u91da\u965c\u965f\u96bc\u98e3\u9adf\u9b2f\u4e7f\u5070\u506a\u5061\u505e\u5060\u5053\u504b\u505d\u5072\u5048\u504d\u5041\u505b\u504a\u5062\u5015\u5045\u505f\u5069\u506b\u5063\u5064\u5046\u5040\u506e\u5073\u5057\u5051\u51d0\u526b\u526d\u526c\u526e\u52d6\u52d3\u532d\u539c\u5575\u5576\u553c\u554d\u5550\u5534\u552a\u5551\u5562\u5536\u5535\u5530\u5552\u5545"],["d4a1","\u550c\u5532\u5565\u554e\u5539\u5548\u552d\u553b\u5540\u554b\u570a\u5707\u57fb\u5814\u57e2\u57f6\u57dc\u57f4\u5800\u57ed\u57fd\u5808\u57f8\u580b\u57f3\u57cf\u5807\u57ee\u57e3\u57f2\u57e5\u57ec\u57e1\u580e\u57fc\u5810\u57e7\u5801\u580c\u57f1\u57e9\u57f0\u580d\u5804\u595c\u5a60\u5a58\u5a55\u5a67\u5a5e\u5a38\u5a35\u5a6d\u5a50\u5a5f\u5a65\u5a6c\u5a53\u5a64\u5a57\u5a43\u5a5d\u5a52\u5a44\u5a5b\u5a48\u5a8e\u5a3e\u5a4d\u5a39\u5a4c\u5a70\u5a69\u5a47\u5a51\u5a56\u5a42\u5a5c\u5b72\u5b6e\u5bc1\u5bc0\u5c59\u5d1e\u5d0b\u5d1d\u5d1a\u5d20\u5d0c\u5d28\u5d0d\u5d26\u5d25\u5d0f"],["d540","\u5d30\u5d12\u5d23\u5d1f\u5d2e\u5e3e\u5e34\u5eb1\u5eb4\u5eb9\u5eb2\u5eb3\u5f36\u5f38\u5f9b\u5f96\u5f9f\u608a\u6090\u6086\u60be\u60b0\u60ba\u60d3\u60d4\u60cf\u60e4\u60d9\u60dd\u60c8\u60b1\u60db\u60b7\u60ca\u60bf\u60c3\u60cd\u60c0\u6332\u6365\u638a\u6382\u637d\u63bd\u639e\u63ad\u639d\u6397\u63ab\u638e\u636f\u6387\u6390\u636e\u63af\u6375\u639c\u636d\u63ae\u637c\u63a4\u633b\u639f"],["d5a1","\u6378\u6385\u6381\u6391\u638d\u6370\u6553\u65cd\u6665\u6661\u665b\u6659\u665c\u6662\u6718\u6879\u6887\u6890\u689c\u686d\u686e\u68ae\u68ab\u6956\u686f\u68a3\u68ac\u68a9\u6875\u6874\u68b2\u688f\u6877\u6892\u687c\u686b\u6872\u68aa\u6880\u6871\u687e\u689b\u6896\u688b\u68a0\u6889\u68a4\u6878\u687b\u6891\u688c\u688a\u687d\u6b36\u6b33\u6b37\u6b38\u6b91\u6b8f\u6b8d\u6b8e\u6b8c\u6c2a\u6dc0\u6dab\u6db4\u6db3\u6e74\u6dac\u6de9\u6de2\u6db7\u6df6\u6dd4\u6e00\u6dc8\u6de0\u6ddf\u6dd6\u6dbe\u6de5\u6ddc\u6ddd\u6ddb\u6df4\u6dca\u6dbd\u6ded\u6df0\u6dba\u6dd5\u6dc2\u6dcf\u6dc9"],["d640","\u6dd0\u6df2\u6dd3\u6dfd\u6dd7\u6dcd\u6de3\u6dbb\u70fa\u710d\u70f7\u7117\u70f4\u710c\u70f0\u7104\u70f3\u7110\u70fc\u70ff\u7106\u7113\u7100\u70f8\u70f6\u710b\u7102\u710e\u727e\u727b\u727c\u727f\u731d\u7317\u7307\u7311\u7318\u730a\u7308\u72ff\u730f\u731e\u7388\u73f6\u73f8\u73f5\u7404\u7401\u73fd\u7407\u7400\u73fa\u73fc\u73ff\u740c\u740b\u73f4\u7408\u7564\u7563\u75ce\u75d2\u75cf"],["d6a1","\u75cb\u75cc\u75d1\u75d0\u768f\u7689\u76d3\u7739\u772f\u772d\u7731\u7732\u7734\u7733\u773d\u7725\u773b\u7735\u7848\u7852\u7849\u784d\u784a\u784c\u7826\u7845\u7850\u7964\u7967\u7969\u796a\u7963\u796b\u7961\u79bb\u79fa\u79f8\u79f6\u79f7\u7a8f\u7a94\u7a90\u7b35\u7b47\u7b34\u7b25\u7b30\u7b22\u7b24\u7b33\u7b18\u7b2a\u7b1d\u7b31\u7b2b\u7b2d\u7b2f\u7b32\u7b38\u7b1a\u7b23\u7c94\u7c98\u7c96\u7ca3\u7d35\u7d3d\u7d38\u7d36\u7d3a\u7d45\u7d2c\u7d29\u7d41\u7d47\u7d3e\u7d3f\u7d4a\u7d3b\u7d28\u7f63\u7f95\u7f9c\u7f9d\u7f9b\u7fca\u7fcb\u7fcd\u7fd0\u7fd1\u7fc7\u7fcf\u7fc9\u801f"],["d740","\u801e\u801b\u8047\u8043\u8048\u8118\u8125\u8119\u811b\u812d\u811f\u812c\u811e\u8121\u8115\u8127\u811d\u8122\u8211\u8238\u8233\u823a\u8234\u8232\u8274\u8390\u83a3\u83a8\u838d\u837a\u8373\u83a4\u8374\u838f\u8381\u8395\u8399\u8375\u8394\u83a9\u837d\u8383\u838c\u839d\u839b\u83aa\u838b\u837e\u83a5\u83af\u8388\u8397\u83b0\u837f\u83a6\u8387\u83ae\u8376\u839a\u8659\u8656\u86bf\u86b7"],["d7a1","\u86c2\u86c1\u86c5\u86ba\u86b0\u86c8\u86b9\u86b3\u86b8\u86cc\u86b4\u86bb\u86bc\u86c3\u86bd\u86be\u8852\u8889\u8895\u88a8\u88a2\u88aa\u889a\u8891\u88a1\u889f\u8898\u88a7\u8899\u889b\u8897\u88a4\u88ac\u888c\u8893\u888e\u8982\u89d6\u89d9\u89d5\u8a30\u8a27\u8a2c\u8a1e\u8c39\u8c3b\u8c5c\u8c5d\u8c7d\u8ca5\u8d7d\u8d7b\u8d79\u8dbc\u8dc2\u8db9\u8dbf\u8dc1\u8ed8\u8ede\u8edd\u8edc\u8ed7\u8ee0\u8ee1\u9024\u900b\u9011\u901c\u900c\u9021\u90ef\u90ea\u90f0\u90f4\u90f2\u90f3\u90d4\u90eb\u90ec\u90e9\u9156\u9158\u915a\u9153\u9155\u91ec\u91f4\u91f1\u91f3\u91f8\u91e4\u91f9\u91ea"],["d840","\u91eb\u91f7\u91e8\u91ee\u957a\u9586\u9588\u967c\u966d\u966b\u9671\u966f\u96bf\u976a\u9804\u98e5\u9997\u509b\u5095\u5094\u509e\u508b\u50a3\u5083\u508c\u508e\u509d\u5068\u509c\u5092\u5082\u5087\u515f\u51d4\u5312\u5311\u53a4\u53a7\u5591\u55a8\u55a5\u55ad\u5577\u5645\u55a2\u5593\u5588\u558f\u55b5\u5581\u55a3\u5592\u55a4\u557d\u558c\u55a6\u557f\u5595\u55a1\u558e\u570c\u5829\u5837"],["d8a1","\u5819\u581e\u5827\u5823\u5828\u57f5\u5848\u5825\u581c\u581b\u5833\u583f\u5836\u582e\u5839\u5838\u582d\u582c\u583b\u5961\u5aaf\u5a94\u5a9f\u5a7a\u5aa2\u5a9e\u5a78\u5aa6\u5a7c\u5aa5\u5aac\u5a95\u5aae\u5a37\u5a84\u5a8a\u5a97\u5a83\u5a8b\u5aa9\u5a7b\u5a7d\u5a8c\u5a9c\u5a8f\u5a93\u5a9d\u5bea\u5bcd\u5bcb\u5bd4\u5bd1\u5bca\u5bce\u5c0c\u5c30\u5d37\u5d43\u5d6b\u5d41\u5d4b\u5d3f\u5d35\u5d51\u5d4e\u5d55\u5d33\u5d3a\u5d52\u5d3d\u5d31\u5d59\u5d42\u5d39\u5d49\u5d38\u5d3c\u5d32\u5d36\u5d40\u5d45\u5e44\u5e41\u5f58\u5fa6\u5fa5\u5fab\u60c9\u60b9\u60cc\u60e2\u60ce\u60c4\u6114"],["d940","\u60f2\u610a\u6116\u6105\u60f5\u6113\u60f8\u60fc\u60fe\u60c1\u6103\u6118\u611d\u6110\u60ff\u6104\u610b\u624a\u6394\u63b1\u63b0\u63ce\u63e5\u63e8\u63ef\u63c3\u649d\u63f3\u63ca\u63e0\u63f6\u63d5\u63f2\u63f5\u6461\u63df\u63be\u63dd\u63dc\u63c4\u63d8\u63d3\u63c2\u63c7\u63cc\u63cb\u63c8\u63f0\u63d7\u63d9\u6532\u6567\u656a\u6564\u655c\u6568\u6565\u658c\u659d\u659e\u65ae\u65d0\u65d2"],["d9a1","\u667c\u666c\u667b\u6680\u6671\u6679\u666a\u6672\u6701\u690c\u68d3\u6904\u68dc\u692a\u68ec\u68ea\u68f1\u690f\u68d6\u68f7\u68eb\u68e4\u68f6\u6913\u6910\u68f3\u68e1\u6907\u68cc\u6908\u6970\u68b4\u6911\u68ef\u68c6\u6914\u68f8\u68d0\u68fd\u68fc\u68e8\u690b\u690a\u6917\u68ce\u68c8\u68dd\u68de\u68e6\u68f4\u68d1\u6906\u68d4\u68e9\u6915\u6925\u68c7\u6b39\u6b3b\u6b3f\u6b3c\u6b94\u6b97\u6b99\u6b95\u6bbd\u6bf0\u6bf2\u6bf3\u6c30\u6dfc\u6e46\u6e47\u6e1f\u6e49\u6e88\u6e3c\u6e3d\u6e45\u6e62\u6e2b\u6e3f\u6e41\u6e5d\u6e73\u6e1c\u6e33\u6e4b\u6e40\u6e51\u6e3b\u6e03\u6e2e\u6e5e"],["da40","\u6e68\u6e5c\u6e61\u6e31\u6e28\u6e60\u6e71\u6e6b\u6e39\u6e22\u6e30\u6e53\u6e65\u6e27\u6e78\u6e64\u6e77\u6e55\u6e79\u6e52\u6e66\u6e35\u6e36\u6e5a\u7120\u711e\u712f\u70fb\u712e\u7131\u7123\u7125\u7122\u7132\u711f\u7128\u713a\u711b\u724b\u725a\u7288\u7289\u7286\u7285\u728b\u7312\u730b\u7330\u7322\u7331\u7333\u7327\u7332\u732d\u7326\u7323\u7335\u730c\u742e\u742c\u7430\u742b\u7416"],["daa1","\u741a\u7421\u742d\u7431\u7424\u7423\u741d\u7429\u7420\u7432\u74fb\u752f\u756f\u756c\u75e7\u75da\u75e1\u75e6\u75dd\u75df\u75e4\u75d7\u7695\u7692\u76da\u7746\u7747\u7744\u774d\u7745\u774a\u774e\u774b\u774c\u77de\u77ec\u7860\u7864\u7865\u785c\u786d\u7871\u786a\u786e\u7870\u7869\u7868\u785e\u7862\u7974\u7973\u7972\u7970\u7a02\u7a0a\u7a03\u7a0c\u7a04\u7a99\u7ae6\u7ae4\u7b4a\u7b3b\u7b44\u7b48\u7b4c\u7b4e\u7b40\u7b58\u7b45\u7ca2\u7c9e\u7ca8\u7ca1\u7d58\u7d6f\u7d63\u7d53\u7d56\u7d67\u7d6a\u7d4f\u7d6d\u7d5c\u7d6b\u7d52\u7d54\u7d69\u7d51\u7d5f\u7d4e\u7f3e\u7f3f\u7f65"],["db40","\u7f66\u7fa2\u7fa0\u7fa1\u7fd7\u8051\u804f\u8050\u80fe\u80d4\u8143\u814a\u8152\u814f\u8147\u813d\u814d\u813a\u81e6\u81ee\u81f7\u81f8\u81f9\u8204\u823c\u823d\u823f\u8275\u833b\u83cf\u83f9\u8423\u83c0\u83e8\u8412\u83e7\u83e4\u83fc\u83f6\u8410\u83c6\u83c8\u83eb\u83e3\u83bf\u8401\u83dd\u83e5\u83d8\u83ff\u83e1\u83cb\u83ce\u83d6\u83f5\u83c9\u8409\u840f\u83de\u8411\u8406\u83c2\u83f3"],["dba1","\u83d5\u83fa\u83c7\u83d1\u83ea\u8413\u83c3\u83ec\u83ee\u83c4\u83fb\u83d7\u83e2\u841b\u83db\u83fe\u86d8\u86e2\u86e6\u86d3\u86e3\u86da\u86ea\u86dd\u86eb\u86dc\u86ec\u86e9\u86d7\u86e8\u86d1\u8848\u8856\u8855\u88ba\u88d7\u88b9\u88b8\u88c0\u88be\u88b6\u88bc\u88b7\u88bd\u88b2\u8901\u88c9\u8995\u8998\u8997\u89dd\u89da\u89db\u8a4e\u8a4d\u8a39\u8a59\u8a40\u8a57\u8a58\u8a44\u8a45\u8a52\u8a48\u8a51\u8a4a\u8a4c\u8a4f\u8c5f\u8c81\u8c80\u8cba\u8cbe\u8cb0\u8cb9\u8cb5\u8d84\u8d80\u8d89\u8dd8\u8dd3\u8dcd\u8dc7\u8dd6\u8ddc\u8dcf\u8dd5\u8dd9\u8dc8\u8dd7\u8dc5\u8eef\u8ef7\u8efa"],["dc40","\u8ef9\u8ee6\u8eee\u8ee5\u8ef5\u8ee7\u8ee8\u8ef6\u8eeb\u8ef1\u8eec\u8ef4\u8ee9\u902d\u9034\u902f\u9106\u912c\u9104\u90ff\u90fc\u9108\u90f9\u90fb\u9101\u9100\u9107\u9105\u9103\u9161\u9164\u915f\u9162\u9160\u9201\u920a\u9225\u9203\u921a\u9226\u920f\u920c\u9200\u9212\u91ff\u91fd\u9206\u9204\u9227\u9202\u921c\u9224\u9219\u9217\u9205\u9216\u957b\u958d\u958c\u9590\u9687\u967e\u9688"],["dca1","\u9689\u9683\u9680\u96c2\u96c8\u96c3\u96f1\u96f0\u976c\u9770\u976e\u9807\u98a9\u98eb\u9ce6\u9ef9\u4e83\u4e84\u4eb6\u50bd\u50bf\u50c6\u50ae\u50c4\u50ca\u50b4\u50c8\u50c2\u50b0\u50c1\u50ba\u50b1\u50cb\u50c9\u50b6\u50b8\u51d7\u527a\u5278\u527b\u527c\u55c3\u55db\u55cc\u55d0\u55cb\u55ca\u55dd\u55c0\u55d4\u55c4\u55e9\u55bf\u55d2\u558d\u55cf\u55d5\u55e2\u55d6\u55c8\u55f2\u55cd\u55d9\u55c2\u5714\u5853\u5868\u5864\u584f\u584d\u5849\u586f\u5855\u584e\u585d\u5859\u5865\u585b\u583d\u5863\u5871\u58fc\u5ac7\u5ac4\u5acb\u5aba\u5ab8\u5ab1\u5ab5\u5ab0\u5abf\u5ac8\u5abb\u5ac6"],["dd40","\u5ab7\u5ac0\u5aca\u5ab4\u5ab6\u5acd\u5ab9\u5a90\u5bd6\u5bd8\u5bd9\u5c1f\u5c33\u5d71\u5d63\u5d4a\u5d65\u5d72\u5d6c\u5d5e\u5d68\u5d67\u5d62\u5df0\u5e4f\u5e4e\u5e4a\u5e4d\u5e4b\u5ec5\u5ecc\u5ec6\u5ecb\u5ec7\u5f40\u5faf\u5fad\u60f7\u6149\u614a\u612b\u6145\u6136\u6132\u612e\u6146\u612f\u614f\u6129\u6140\u6220\u9168\u6223\u6225\u6224\u63c5\u63f1\u63eb\u6410\u6412\u6409\u6420\u6424"],["dda1","\u6433\u6443\u641f\u6415\u6418\u6439\u6437\u6422\u6423\u640c\u6426\u6430\u6428\u6441\u6435\u642f\u640a\u641a\u6440\u6425\u6427\u640b\u63e7\u641b\u642e\u6421\u640e\u656f\u6592\u65d3\u6686\u668c\u6695\u6690\u668b\u668a\u6699\u6694\u6678\u6720\u6966\u695f\u6938\u694e\u6962\u6971\u693f\u6945\u696a\u6939\u6942\u6957\u6959\u697a\u6948\u6949\u6935\u696c\u6933\u693d\u6965\u68f0\u6978\u6934\u6969\u6940\u696f\u6944\u6976\u6958\u6941\u6974\u694c\u693b\u694b\u6937\u695c\u694f\u6951\u6932\u6952\u692f\u697b\u693c\u6b46\u6b45\u6b43\u6b42\u6b48\u6b41\u6b9b\ufa0d\u6bfb\u6bfc"],["de40","\u6bf9\u6bf7\u6bf8\u6e9b\u6ed6\u6ec8\u6e8f\u6ec0\u6e9f\u6e93\u6e94\u6ea0\u6eb1\u6eb9\u6ec6\u6ed2\u6ebd\u6ec1\u6e9e\u6ec9\u6eb7\u6eb0\u6ecd\u6ea6\u6ecf\u6eb2\u6ebe\u6ec3\u6edc\u6ed8\u6e99\u6e92\u6e8e\u6e8d\u6ea4\u6ea1\u6ebf\u6eb3\u6ed0\u6eca\u6e97\u6eae\u6ea3\u7147\u7154\u7152\u7163\u7160\u7141\u715d\u7162\u7172\u7178\u716a\u7161\u7142\u7158\u7143\u714b\u7170\u715f\u7150\u7153"],["dea1","\u7144\u714d\u715a\u724f\u728d\u728c\u7291\u7290\u728e\u733c\u7342\u733b\u733a\u7340\u734a\u7349\u7444\u744a\u744b\u7452\u7451\u7457\u7440\u744f\u7450\u744e\u7442\u7446\u744d\u7454\u74e1\u74ff\u74fe\u74fd\u751d\u7579\u7577\u6983\u75ef\u760f\u7603\u75f7\u75fe\u75fc\u75f9\u75f8\u7610\u75fb\u75f6\u75ed\u75f5\u75fd\u7699\u76b5\u76dd\u7755\u775f\u7760\u7752\u7756\u775a\u7769\u7767\u7754\u7759\u776d\u77e0\u7887\u789a\u7894\u788f\u7884\u7895\u7885\u7886\u78a1\u7883\u7879\u7899\u7880\u7896\u787b\u797c\u7982\u797d\u7979\u7a11\u7a18\u7a19\u7a12\u7a17\u7a15\u7a22\u7a13"],["df40","\u7a1b\u7a10\u7aa3\u7aa2\u7a9e\u7aeb\u7b66\u7b64\u7b6d\u7b74\u7b69\u7b72\u7b65\u7b73\u7b71\u7b70\u7b61\u7b78\u7b76\u7b63\u7cb2\u7cb4\u7caf\u7d88\u7d86\u7d80\u7d8d\u7d7f\u7d85\u7d7a\u7d8e\u7d7b\u7d83\u7d7c\u7d8c\u7d94\u7d84\u7d7d\u7d92\u7f6d\u7f6b\u7f67\u7f68\u7f6c\u7fa6\u7fa5\u7fa7\u7fdb\u7fdc\u8021\u8164\u8160\u8177\u815c\u8169\u815b\u8162\u8172\u6721\u815e\u8176\u8167\u816f"],["dfa1","\u8144\u8161\u821d\u8249\u8244\u8240\u8242\u8245\u84f1\u843f\u8456\u8476\u8479\u848f\u848d\u8465\u8451\u8440\u8486\u8467\u8430\u844d\u847d\u845a\u8459\u8474\u8473\u845d\u8507\u845e\u8437\u843a\u8434\u847a\u8443\u8478\u8432\u8445\u8429\u83d9\u844b\u842f\u8442\u842d\u845f\u8470\u8439\u844e\u844c\u8452\u846f\u84c5\u848e\u843b\u8447\u8436\u8433\u8468\u847e\u8444\u842b\u8460\u8454\u846e\u8450\u870b\u8704\u86f7\u870c\u86fa\u86d6\u86f5\u874d\u86f8\u870e\u8709\u8701\u86f6\u870d\u8705\u88d6\u88cb\u88cd\u88ce\u88de\u88db\u88da\u88cc\u88d0\u8985\u899b\u89df\u89e5\u89e4"],["e040","\u89e1\u89e0\u89e2\u89dc\u89e6\u8a76\u8a86\u8a7f\u8a61\u8a3f\u8a77\u8a82\u8a84\u8a75\u8a83\u8a81\u8a74\u8a7a\u8c3c\u8c4b\u8c4a\u8c65\u8c64\u8c66\u8c86\u8c84\u8c85\u8ccc\u8d68\u8d69\u8d91\u8d8c\u8d8e\u8d8f\u8d8d\u8d93\u8d94\u8d90\u8d92\u8df0\u8de0\u8dec\u8df1\u8dee\u8dd0\u8de9\u8de3\u8de2\u8de7\u8df2\u8deb\u8df4\u8f06\u8eff\u8f01\u8f00\u8f05\u8f07\u8f08\u8f02\u8f0b\u9052\u903f"],["e0a1","\u9044\u9049\u903d\u9110\u910d\u910f\u9111\u9116\u9114\u910b\u910e\u916e\u916f\u9248\u9252\u9230\u923a\u9266\u9233\u9265\u925e\u9283\u922e\u924a\u9246\u926d\u926c\u924f\u9260\u9267\u926f\u9236\u9261\u9270\u9231\u9254\u9263\u9250\u9272\u924e\u9253\u924c\u9256\u9232\u959f\u959c\u959e\u959b\u9692\u9693\u9691\u9697\u96ce\u96fa\u96fd\u96f8\u96f5\u9773\u9777\u9778\u9772\u980f\u980d\u980e\u98ac\u98f6\u98f9\u99af\u99b2\u99b0\u99b5\u9aad\u9aab\u9b5b\u9cea\u9ced\u9ce7\u9e80\u9efd\u50e6\u50d4\u50d7\u50e8\u50f3\u50db\u50ea\u50dd\u50e4\u50d3\u50ec\u50f0\u50ef\u50e3\u50e0"],["e140","\u51d8\u5280\u5281\u52e9\u52eb\u5330\u53ac\u5627\u5615\u560c\u5612\u55fc\u560f\u561c\u5601\u5613\u5602\u55fa\u561d\u5604\u55ff\u55f9\u5889\u587c\u5890\u5898\u5886\u5881\u587f\u5874\u588b\u587a\u5887\u5891\u588e\u5876\u5882\u5888\u587b\u5894\u588f\u58fe\u596b\u5adc\u5aee\u5ae5\u5ad5\u5aea\u5ada\u5aed\u5aeb\u5af3\u5ae2\u5ae0\u5adb\u5aec\u5ade\u5add\u5ad9\u5ae8\u5adf\u5b77\u5be0"],["e1a1","\u5be3\u5c63\u5d82\u5d80\u5d7d\u5d86\u5d7a\u5d81\u5d77\u5d8a\u5d89\u5d88\u5d7e\u5d7c\u5d8d\u5d79\u5d7f\u5e58\u5e59\u5e53\u5ed8\u5ed1\u5ed7\u5ece\u5edc\u5ed5\u5ed9\u5ed2\u5ed4\u5f44\u5f43\u5f6f\u5fb6\u612c\u6128\u6141\u615e\u6171\u6173\u6152\u6153\u6172\u616c\u6180\u6174\u6154\u617a\u615b\u6165\u613b\u616a\u6161\u6156\u6229\u6227\u622b\u642b\u644d\u645b\u645d\u6474\u6476\u6472\u6473\u647d\u6475\u6466\u64a6\u644e\u6482\u645e\u645c\u644b\u6453\u6460\u6450\u647f\u643f\u646c\u646b\u6459\u6465\u6477\u6573\u65a0\u66a1\u66a0\u669f\u6705\u6704\u6722\u69b1\u69b6\u69c9"],["e240","\u69a0\u69ce\u6996\u69b0\u69ac\u69bc\u6991\u6999\u698e\u69a7\u698d\u69a9\u69be\u69af\u69bf\u69c4\u69bd\u69a4\u69d4\u69b9\u69ca\u699a\u69cf\u69b3\u6993\u69aa\u69a1\u699e\u69d9\u6997\u6990\u69c2\u69b5\u69a5\u69c6\u6b4a\u6b4d\u6b4b\u6b9e\u6b9f\u6ba0\u6bc3\u6bc4\u6bfe\u6ece\u6ef5\u6ef1\u6f03\u6f25\u6ef8\u6f37\u6efb\u6f2e\u6f09\u6f4e\u6f19\u6f1a\u6f27\u6f18\u6f3b\u6f12\u6eed\u6f0a"],["e2a1","\u6f36\u6f73\u6ef9\u6eee\u6f2d\u6f40\u6f30\u6f3c\u6f35\u6eeb\u6f07\u6f0e\u6f43\u6f05\u6efd\u6ef6\u6f39\u6f1c\u6efc\u6f3a\u6f1f\u6f0d\u6f1e\u6f08\u6f21\u7187\u7190\u7189\u7180\u7185\u7182\u718f\u717b\u7186\u7181\u7197\u7244\u7253\u7297\u7295\u7293\u7343\u734d\u7351\u734c\u7462\u7473\u7471\u7475\u7472\u7467\u746e\u7500\u7502\u7503\u757d\u7590\u7616\u7608\u760c\u7615\u7611\u760a\u7614\u76b8\u7781\u777c\u7785\u7782\u776e\u7780\u776f\u777e\u7783\u78b2\u78aa\u78b4\u78ad\u78a8\u787e\u78ab\u789e\u78a5\u78a0\u78ac\u78a2\u78a4\u7998\u798a\u798b\u7996\u7995\u7994\u7993"],["e340","\u7997\u7988\u7992\u7990\u7a2b\u7a4a\u7a30\u7a2f\u7a28\u7a26\u7aa8\u7aab\u7aac\u7aee\u7b88\u7b9c\u7b8a\u7b91\u7b90\u7b96\u7b8d\u7b8c\u7b9b\u7b8e\u7b85\u7b98\u5284\u7b99\u7ba4\u7b82\u7cbb\u7cbf\u7cbc\u7cba\u7da7\u7db7\u7dc2\u7da3\u7daa\u7dc1\u7dc0\u7dc5\u7d9d\u7dce\u7dc4\u7dc6\u7dcb\u7dcc\u7daf\u7db9\u7d96\u7dbc\u7d9f\u7da6\u7dae\u7da9\u7da1\u7dc9\u7f73\u7fe2\u7fe3\u7fe5\u7fde"],["e3a1","\u8024\u805d\u805c\u8189\u8186\u8183\u8187\u818d\u818c\u818b\u8215\u8497\u84a4\u84a1\u849f\u84ba\u84ce\u84c2\u84ac\u84ae\u84ab\u84b9\u84b4\u84c1\u84cd\u84aa\u849a\u84b1\u84d0\u849d\u84a7\u84bb\u84a2\u8494\u84c7\u84cc\u849b\u84a9\u84af\u84a8\u84d6\u8498\u84b6\u84cf\u84a0\u84d7\u84d4\u84d2\u84db\u84b0\u8491\u8661\u8733\u8723\u8728\u876b\u8740\u872e\u871e\u8721\u8719\u871b\u8743\u872c\u8741\u873e\u8746\u8720\u8732\u872a\u872d\u873c\u8712\u873a\u8731\u8735\u8742\u8726\u8727\u8738\u8724\u871a\u8730\u8711\u88f7\u88e7\u88f1\u88f2\u88fa\u88fe\u88ee\u88fc\u88f6\u88fb"],["e440","\u88f0\u88ec\u88eb\u899d\u89a1\u899f\u899e\u89e9\u89eb\u89e8\u8aab\u8a99\u8a8b\u8a92\u8a8f\u8a96\u8c3d\u8c68\u8c69\u8cd5\u8ccf\u8cd7\u8d96\u8e09\u8e02\u8dff\u8e0d\u8dfd\u8e0a\u8e03\u8e07\u8e06\u8e05\u8dfe\u8e00\u8e04\u8f10\u8f11\u8f0e\u8f0d\u9123\u911c\u9120\u9122\u911f\u911d\u911a\u9124\u9121\u911b\u917a\u9172\u9179\u9173\u92a5\u92a4\u9276\u929b\u927a\u92a0\u9294\u92aa\u928d"],["e4a1","\u92a6\u929a\u92ab\u9279\u9297\u927f\u92a3\u92ee\u928e\u9282\u9295\u92a2\u927d\u9288\u92a1\u928a\u9286\u928c\u9299\u92a7\u927e\u9287\u92a9\u929d\u928b\u922d\u969e\u96a1\u96ff\u9758\u977d\u977a\u977e\u9783\u9780\u9782\u977b\u9784\u9781\u977f\u97ce\u97cd\u9816\u98ad\u98ae\u9902\u9900\u9907\u999d\u999c\u99c3\u99b9\u99bb\u99ba\u99c2\u99bd\u99c7\u9ab1\u9ae3\u9ae7\u9b3e\u9b3f\u9b60\u9b61\u9b5f\u9cf1\u9cf2\u9cf5\u9ea7\u50ff\u5103\u5130\u50f8\u5106\u5107\u50f6\u50fe\u510b\u510c\u50fd\u510a\u528b\u528c\u52f1\u52ef\u5648\u5642\u564c\u5635\u5641\u564a\u5649\u5646\u5658"],["e540","\u565a\u5640\u5633\u563d\u562c\u563e\u5638\u562a\u563a\u571a\u58ab\u589d\u58b1\u58a0\u58a3\u58af\u58ac\u58a5\u58a1\u58ff\u5aff\u5af4\u5afd\u5af7\u5af6\u5b03\u5af8\u5b02\u5af9\u5b01\u5b07\u5b05\u5b0f\u5c67\u5d99\u5d97\u5d9f\u5d92\u5da2\u5d93\u5d95\u5da0\u5d9c\u5da1\u5d9a\u5d9e\u5e69\u5e5d\u5e60\u5e5c\u7df3\u5edb\u5ede\u5ee1\u5f49\u5fb2\u618b\u6183\u6179\u61b1\u61b0\u61a2\u6189"],["e5a1","\u619b\u6193\u61af\u61ad\u619f\u6192\u61aa\u61a1\u618d\u6166\u61b3\u622d\u646e\u6470\u6496\u64a0\u6485\u6497\u649c\u648f\u648b\u648a\u648c\u64a3\u649f\u6468\u64b1\u6498\u6576\u657a\u6579\u657b\u65b2\u65b3\u66b5\u66b0\u66a9\u66b2\u66b7\u66aa\u66af\u6a00\u6a06\u6a17\u69e5\u69f8\u6a15\u69f1\u69e4\u6a20\u69ff\u69ec\u69e2\u6a1b\u6a1d\u69fe\u6a27\u69f2\u69ee\u6a14\u69f7\u69e7\u6a40\u6a08\u69e6\u69fb\u6a0d\u69fc\u69eb\u6a09\u6a04\u6a18\u6a25\u6a0f\u69f6\u6a26\u6a07\u69f4\u6a16\u6b51\u6ba5\u6ba3\u6ba2\u6ba6\u6c01\u6c00\u6bff\u6c02\u6f41\u6f26\u6f7e\u6f87\u6fc6\u6f92"],["e640","\u6f8d\u6f89\u6f8c\u6f62\u6f4f\u6f85\u6f5a\u6f96\u6f76\u6f6c\u6f82\u6f55\u6f72\u6f52\u6f50\u6f57\u6f94\u6f93\u6f5d\u6f00\u6f61\u6f6b\u6f7d\u6f67\u6f90\u6f53\u6f8b\u6f69\u6f7f\u6f95\u6f63\u6f77\u6f6a\u6f7b\u71b2\u71af\u719b\u71b0\u71a0\u719a\u71a9\u71b5\u719d\u71a5\u719e\u71a4\u71a1\u71aa\u719c\u71a7\u71b3\u7298\u729a\u7358\u7352\u735e\u735f\u7360\u735d\u735b\u7361\u735a\u7359"],["e6a1","\u7362\u7487\u7489\u748a\u7486\u7481\u747d\u7485\u7488\u747c\u7479\u7508\u7507\u757e\u7625\u761e\u7619\u761d\u761c\u7623\u761a\u7628\u761b\u769c\u769d\u769e\u769b\u778d\u778f\u7789\u7788\u78cd\u78bb\u78cf\u78cc\u78d1\u78ce\u78d4\u78c8\u78c3\u78c4\u78c9\u799a\u79a1\u79a0\u799c\u79a2\u799b\u6b76\u7a39\u7ab2\u7ab4\u7ab3\u7bb7\u7bcb\u7bbe\u7bac\u7bce\u7baf\u7bb9\u7bca\u7bb5\u7cc5\u7cc8\u7ccc\u7ccb\u7df7\u7ddb\u7dea\u7de7\u7dd7\u7de1\u7e03\u7dfa\u7de6\u7df6\u7df1\u7df0\u7dee\u7ddf\u7f76\u7fac\u7fb0\u7fad\u7fed\u7feb\u7fea\u7fec\u7fe6\u7fe8\u8064\u8067\u81a3\u819f"],["e740","\u819e\u8195\u81a2\u8199\u8197\u8216\u824f\u8253\u8252\u8250\u824e\u8251\u8524\u853b\u850f\u8500\u8529\u850e\u8509\u850d\u851f\u850a\u8527\u851c\u84fb\u852b\u84fa\u8508\u850c\u84f4\u852a\u84f2\u8515\u84f7\u84eb\u84f3\u84fc\u8512\u84ea\u84e9\u8516\u84fe\u8528\u851d\u852e\u8502\u84fd\u851e\u84f6\u8531\u8526\u84e7\u84e8\u84f0\u84ef\u84f9\u8518\u8520\u8530\u850b\u8519\u852f\u8662"],["e7a1","\u8756\u8763\u8764\u8777\u87e1\u8773\u8758\u8754\u875b\u8752\u8761\u875a\u8751\u875e\u876d\u876a\u8750\u874e\u875f\u875d\u876f\u876c\u877a\u876e\u875c\u8765\u874f\u877b\u8775\u8762\u8767\u8769\u885a\u8905\u890c\u8914\u890b\u8917\u8918\u8919\u8906\u8916\u8911\u890e\u8909\u89a2\u89a4\u89a3\u89ed\u89f0\u89ec\u8acf\u8ac6\u8ab8\u8ad3\u8ad1\u8ad4\u8ad5\u8abb\u8ad7\u8abe\u8ac0\u8ac5\u8ad8\u8ac3\u8aba\u8abd\u8ad9\u8c3e\u8c4d\u8c8f\u8ce5\u8cdf\u8cd9\u8ce8\u8cda\u8cdd\u8ce7\u8da0\u8d9c\u8da1\u8d9b\u8e20\u8e23\u8e25\u8e24\u8e2e\u8e15\u8e1b\u8e16\u8e11\u8e19\u8e26\u8e27"],["e840","\u8e14\u8e12\u8e18\u8e13\u8e1c\u8e17\u8e1a\u8f2c\u8f24\u8f18\u8f1a\u8f20\u8f23\u8f16\u8f17\u9073\u9070\u906f\u9067\u906b\u912f\u912b\u9129\u912a\u9132\u9126\u912e\u9185\u9186\u918a\u9181\u9182\u9184\u9180\u92d0\u92c3\u92c4\u92c0\u92d9\u92b6\u92cf\u92f1\u92df\u92d8\u92e9\u92d7\u92dd\u92cc\u92ef\u92c2\u92e8\u92ca\u92c8\u92ce\u92e6\u92cd\u92d5\u92c9\u92e0\u92de\u92e7\u92d1\u92d3"],["e8a1","\u92b5\u92e1\u92c6\u92b4\u957c\u95ac\u95ab\u95ae\u95b0\u96a4\u96a2\u96d3\u9705\u9708\u9702\u975a\u978a\u978e\u9788\u97d0\u97cf\u981e\u981d\u9826\u9829\u9828\u9820\u981b\u9827\u98b2\u9908\u98fa\u9911\u9914\u9916\u9917\u9915\u99dc\u99cd\u99cf\u99d3\u99d4\u99ce\u99c9\u99d6\u99d8\u99cb\u99d7\u99cc\u9ab3\u9aec\u9aeb\u9af3\u9af2\u9af1\u9b46\u9b43\u9b67\u9b74\u9b71\u9b66\u9b76\u9b75\u9b70\u9b68\u9b64\u9b6c\u9cfc\u9cfa\u9cfd\u9cff\u9cf7\u9d07\u9d00\u9cf9\u9cfb\u9d08\u9d05\u9d04\u9e83\u9ed3\u9f0f\u9f10\u511c\u5113\u5117\u511a\u5111\u51de\u5334\u53e1\u5670\u5660\u566e"],["e940","\u5673\u5666\u5663\u566d\u5672\u565e\u5677\u571c\u571b\u58c8\u58bd\u58c9\u58bf\u58ba\u58c2\u58bc\u58c6\u5b17\u5b19\u5b1b\u5b21\u5b14\u5b13\u5b10\u5b16\u5b28\u5b1a\u5b20\u5b1e\u5bef\u5dac\u5db1\u5da9\u5da7\u5db5\u5db0\u5dae\u5daa\u5da8\u5db2\u5dad\u5daf\u5db4\u5e67\u5e68\u5e66\u5e6f\u5ee9\u5ee7\u5ee6\u5ee8\u5ee5\u5f4b\u5fbc\u619d\u61a8\u6196\u61c5\u61b4\u61c6\u61c1\u61cc\u61ba"],["e9a1","\u61bf\u61b8\u618c\u64d7\u64d6\u64d0\u64cf\u64c9\u64bd\u6489\u64c3\u64db\u64f3\u64d9\u6533\u657f\u657c\u65a2\u66c8\u66be\u66c0\u66ca\u66cb\u66cf\u66bd\u66bb\u66ba\u66cc\u6723\u6a34\u6a66\u6a49\u6a67\u6a32\u6a68\u6a3e\u6a5d\u6a6d\u6a76\u6a5b\u6a51\u6a28\u6a5a\u6a3b\u6a3f\u6a41\u6a6a\u6a64\u6a50\u6a4f\u6a54\u6a6f\u6a69\u6a60\u6a3c\u6a5e\u6a56\u6a55\u6a4d\u6a4e\u6a46\u6b55\u6b54\u6b56\u6ba7\u6baa\u6bab\u6bc8\u6bc7\u6c04\u6c03\u6c06\u6fad\u6fcb\u6fa3\u6fc7\u6fbc\u6fce\u6fc8\u6f5e\u6fc4\u6fbd\u6f9e\u6fca\u6fa8\u7004\u6fa5\u6fae\u6fba\u6fac\u6faa\u6fcf\u6fbf\u6fb8"],["ea40","\u6fa2\u6fc9\u6fab\u6fcd\u6faf\u6fb2\u6fb0\u71c5\u71c2\u71bf\u71b8\u71d6\u71c0\u71c1\u71cb\u71d4\u71ca\u71c7\u71cf\u71bd\u71d8\u71bc\u71c6\u71da\u71db\u729d\u729e\u7369\u7366\u7367\u736c\u7365\u736b\u736a\u747f\u749a\u74a0\u7494\u7492\u7495\u74a1\u750b\u7580\u762f\u762d\u7631\u763d\u7633\u763c\u7635\u7632\u7630\u76bb\u76e6\u779a\u779d\u77a1\u779c\u779b\u77a2\u77a3\u7795\u7799"],["eaa1","\u7797\u78dd\u78e9\u78e5\u78ea\u78de\u78e3\u78db\u78e1\u78e2\u78ed\u78df\u78e0\u79a4\u7a44\u7a48\u7a47\u7ab6\u7ab8\u7ab5\u7ab1\u7ab7\u7bde\u7be3\u7be7\u7bdd\u7bd5\u7be5\u7bda\u7be8\u7bf9\u7bd4\u7bea\u7be2\u7bdc\u7beb\u7bd8\u7bdf\u7cd2\u7cd4\u7cd7\u7cd0\u7cd1\u7e12\u7e21\u7e17\u7e0c\u7e1f\u7e20\u7e13\u7e0e\u7e1c\u7e15\u7e1a\u7e22\u7e0b\u7e0f\u7e16\u7e0d\u7e14\u7e25\u7e24\u7f43\u7f7b\u7f7c\u7f7a\u7fb1\u7fef\u802a\u8029\u806c\u81b1\u81a6\u81ae\u81b9\u81b5\u81ab\u81b0\u81ac\u81b4\u81b2\u81b7\u81a7\u81f2\u8255\u8256\u8257\u8556\u8545\u856b\u854d\u8553\u8561\u8558"],["eb40","\u8540\u8546\u8564\u8541\u8562\u8544\u8551\u8547\u8563\u853e\u855b\u8571\u854e\u856e\u8575\u8555\u8567\u8560\u858c\u8566\u855d\u8554\u8565\u856c\u8663\u8665\u8664\u879b\u878f\u8797\u8793\u8792\u8788\u8781\u8796\u8798\u8779\u8787\u87a3\u8785\u8790\u8791\u879d\u8784\u8794\u879c\u879a\u8789\u891e\u8926\u8930\u892d\u892e\u8927\u8931\u8922\u8929\u8923\u892f\u892c\u891f\u89f1\u8ae0"],["eba1","\u8ae2\u8af2\u8af4\u8af5\u8add\u8b14\u8ae4\u8adf\u8af0\u8ac8\u8ade\u8ae1\u8ae8\u8aff\u8aef\u8afb\u8c91\u8c92\u8c90\u8cf5\u8cee\u8cf1\u8cf0\u8cf3\u8d6c\u8d6e\u8da5\u8da7\u8e33\u8e3e\u8e38\u8e40\u8e45\u8e36\u8e3c\u8e3d\u8e41\u8e30\u8e3f\u8ebd\u8f36\u8f2e\u8f35\u8f32\u8f39\u8f37\u8f34\u9076\u9079\u907b\u9086\u90fa\u9133\u9135\u9136\u9193\u9190\u9191\u918d\u918f\u9327\u931e\u9308\u931f\u9306\u930f\u937a\u9338\u933c\u931b\u9323\u9312\u9301\u9346\u932d\u930e\u930d\u92cb\u931d\u92fa\u9325\u9313\u92f9\u92f7\u9334\u9302\u9324\u92ff\u9329\u9339\u9335\u932a\u9314\u930c"],["ec40","\u930b\u92fe\u9309\u9300\u92fb\u9316\u95bc\u95cd\u95be\u95b9\u95ba\u95b6\u95bf\u95b5\u95bd\u96a9\u96d4\u970b\u9712\u9710\u9799\u9797\u9794\u97f0\u97f8\u9835\u982f\u9832\u9924\u991f\u9927\u9929\u999e\u99ee\u99ec\u99e5\u99e4\u99f0\u99e3\u99ea\u99e9\u99e7\u9ab9\u9abf\u9ab4\u9abb\u9af6\u9afa\u9af9\u9af7\u9b33\u9b80\u9b85\u9b87\u9b7c\u9b7e\u9b7b\u9b82\u9b93\u9b92\u9b90\u9b7a\u9b95"],["eca1","\u9b7d\u9b88\u9d25\u9d17\u9d20\u9d1e\u9d14\u9d29\u9d1d\u9d18\u9d22\u9d10\u9d19\u9d1f\u9e88\u9e86\u9e87\u9eae\u9ead\u9ed5\u9ed6\u9efa\u9f12\u9f3d\u5126\u5125\u5122\u5124\u5120\u5129\u52f4\u5693\u568c\u568d\u5686\u5684\u5683\u567e\u5682\u567f\u5681\u58d6\u58d4\u58cf\u58d2\u5b2d\u5b25\u5b32\u5b23\u5b2c\u5b27\u5b26\u5b2f\u5b2e\u5b7b\u5bf1\u5bf2\u5db7\u5e6c\u5e6a\u5fbe\u5fbb\u61c3\u61b5\u61bc\u61e7\u61e0\u61e5\u61e4\u61e8\u61de\u64ef\u64e9\u64e3\u64eb\u64e4\u64e8\u6581\u6580\u65b6\u65da\u66d2\u6a8d\u6a96\u6a81\u6aa5\u6a89\u6a9f\u6a9b\u6aa1\u6a9e\u6a87\u6a93\u6a8e"],["ed40","\u6a95\u6a83\u6aa8\u6aa4\u6a91\u6a7f\u6aa6\u6a9a\u6a85\u6a8c\u6a92\u6b5b\u6bad\u6c09\u6fcc\u6fa9\u6ff4\u6fd4\u6fe3\u6fdc\u6fed\u6fe7\u6fe6\u6fde\u6ff2\u6fdd\u6fe2\u6fe8\u71e1\u71f1\u71e8\u71f2\u71e4\u71f0\u71e2\u7373\u736e\u736f\u7497\u74b2\u74ab\u7490\u74aa\u74ad\u74b1\u74a5\u74af\u7510\u7511\u7512\u750f\u7584\u7643\u7648\u7649\u7647\u76a4\u76e9\u77b5\u77ab\u77b2\u77b7\u77b6"],["eda1","\u77b4\u77b1\u77a8\u77f0\u78f3\u78fd\u7902\u78fb\u78fc\u78f2\u7905\u78f9\u78fe\u7904\u79ab\u79a8\u7a5c\u7a5b\u7a56\u7a58\u7a54\u7a5a\u7abe\u7ac0\u7ac1\u7c05\u7c0f\u7bf2\u7c00\u7bff\u7bfb\u7c0e\u7bf4\u7c0b\u7bf3\u7c02\u7c09\u7c03\u7c01\u7bf8\u7bfd\u7c06\u7bf0\u7bf1\u7c10\u7c0a\u7ce8\u7e2d\u7e3c\u7e42\u7e33\u9848\u7e38\u7e2a\u7e49\u7e40\u7e47\u7e29\u7e4c\u7e30\u7e3b\u7e36\u7e44\u7e3a\u7f45\u7f7f\u7f7e\u7f7d\u7ff4\u7ff2\u802c\u81bb\u81c4\u81cc\u81ca\u81c5\u81c7\u81bc\u81e9\u825b\u825a\u825c\u8583\u8580\u858f\u85a7\u8595\u85a0\u858b\u85a3\u857b\u85a4\u859a\u859e"],["ee40","\u8577\u857c\u8589\u85a1\u857a\u8578\u8557\u858e\u8596\u8586\u858d\u8599\u859d\u8581\u85a2\u8582\u8588\u8585\u8579\u8576\u8598\u8590\u859f\u8668\u87be\u87aa\u87ad\u87c5\u87b0\u87ac\u87b9\u87b5\u87bc\u87ae\u87c9\u87c3\u87c2\u87cc\u87b7\u87af\u87c4\u87ca\u87b4\u87b6\u87bf\u87b8\u87bd\u87de\u87b2\u8935\u8933\u893c\u893e\u8941\u8952\u8937\u8942\u89ad\u89af\u89ae\u89f2\u89f3\u8b1e"],["eea1","\u8b18\u8b16\u8b11\u8b05\u8b0b\u8b22\u8b0f\u8b12\u8b15\u8b07\u8b0d\u8b08\u8b06\u8b1c\u8b13\u8b1a\u8c4f\u8c70\u8c72\u8c71\u8c6f\u8c95\u8c94\u8cf9\u8d6f\u8e4e\u8e4d\u8e53\u8e50\u8e4c\u8e47\u8f43\u8f40\u9085\u907e\u9138\u919a\u91a2\u919b\u9199\u919f\u91a1\u919d\u91a0\u93a1\u9383\u93af\u9364\u9356\u9347\u937c\u9358\u935c\u9376\u9349\u9350\u9351\u9360\u936d\u938f\u934c\u936a\u9379\u9357\u9355\u9352\u934f\u9371\u9377\u937b\u9361\u935e\u9363\u9367\u9380\u934e\u9359\u95c7\u95c0\u95c9\u95c3\u95c5\u95b7\u96ae\u96b0\u96ac\u9720\u971f\u9718\u971d\u9719\u979a\u97a1\u979c"],["ef40","\u979e\u979d\u97d5\u97d4\u97f1\u9841\u9844\u984a\u9849\u9845\u9843\u9925\u992b\u992c\u992a\u9933\u9932\u992f\u992d\u9931\u9930\u9998\u99a3\u99a1\u9a02\u99fa\u99f4\u99f7\u99f9\u99f8\u99f6\u99fb\u99fd\u99fe\u99fc\u9a03\u9abe\u9afe\u9afd\u9b01\u9afc\u9b48\u9b9a\u9ba8\u9b9e\u9b9b\u9ba6\u9ba1\u9ba5\u9ba4\u9b86\u9ba2\u9ba0\u9baf\u9d33\u9d41\u9d67\u9d36\u9d2e\u9d2f\u9d31\u9d38\u9d30"],["efa1","\u9d45\u9d42\u9d43\u9d3e\u9d37\u9d40\u9d3d\u7ff5\u9d2d\u9e8a\u9e89\u9e8d\u9eb0\u9ec8\u9eda\u9efb\u9eff\u9f24\u9f23\u9f22\u9f54\u9fa0\u5131\u512d\u512e\u5698\u569c\u5697\u569a\u569d\u5699\u5970\u5b3c\u5c69\u5c6a\u5dc0\u5e6d\u5e6e\u61d8\u61df\u61ed\u61ee\u61f1\u61ea\u61f0\u61eb\u61d6\u61e9\u64ff\u6504\u64fd\u64f8\u6501\u6503\u64fc\u6594\u65db\u66da\u66db\u66d8\u6ac5\u6ab9\u6abd\u6ae1\u6ac6\u6aba\u6ab6\u6ab7\u6ac7\u6ab4\u6aad\u6b5e\u6bc9\u6c0b\u7007\u700c\u700d\u7001\u7005\u7014\u700e\u6fff\u7000\u6ffb\u7026\u6ffc\u6ff7\u700a\u7201\u71ff\u71f9\u7203\u71fd\u7376"],["f040","\u74b8\u74c0\u74b5\u74c1\u74be\u74b6\u74bb\u74c2\u7514\u7513\u765c\u7664\u7659\u7650\u7653\u7657\u765a\u76a6\u76bd\u76ec\u77c2\u77ba\u78ff\u790c\u7913\u7914\u7909\u7910\u7912\u7911\u79ad\u79ac\u7a5f\u7c1c\u7c29\u7c19\u7c20\u7c1f\u7c2d\u7c1d\u7c26\u7c28\u7c22\u7c25\u7c30\u7e5c\u7e50\u7e56\u7e63\u7e58\u7e62\u7e5f\u7e51\u7e60\u7e57\u7e53\u7fb5\u7fb3\u7ff7\u7ff8\u8075\u81d1\u81d2"],["f0a1","\u81d0\u825f\u825e\u85b4\u85c6\u85c0\u85c3\u85c2\u85b3\u85b5\u85bd\u85c7\u85c4\u85bf\u85cb\u85ce\u85c8\u85c5\u85b1\u85b6\u85d2\u8624\u85b8\u85b7\u85be\u8669\u87e7\u87e6\u87e2\u87db\u87eb\u87ea\u87e5\u87df\u87f3\u87e4\u87d4\u87dc\u87d3\u87ed\u87d8\u87e3\u87a4\u87d7\u87d9\u8801\u87f4\u87e8\u87dd\u8953\u894b\u894f\u894c\u8946\u8950\u8951\u8949\u8b2a\u8b27\u8b23\u8b33\u8b30\u8b35\u8b47\u8b2f\u8b3c\u8b3e\u8b31\u8b25\u8b37\u8b26\u8b36\u8b2e\u8b24\u8b3b\u8b3d\u8b3a\u8c42\u8c75\u8c99\u8c98\u8c97\u8cfe\u8d04\u8d02\u8d00\u8e5c\u8e62\u8e60\u8e57\u8e56\u8e5e\u8e65\u8e67"],["f140","\u8e5b\u8e5a\u8e61\u8e5d\u8e69\u8e54\u8f46\u8f47\u8f48\u8f4b\u9128\u913a\u913b\u913e\u91a8\u91a5\u91a7\u91af\u91aa\u93b5\u938c\u9392\u93b7\u939b\u939d\u9389\u93a7\u938e\u93aa\u939e\u93a6\u9395\u9388\u9399\u939f\u938d\u93b1\u9391\u93b2\u93a4\u93a8\u93b4\u93a3\u93a5\u95d2\u95d3\u95d1\u96b3\u96d7\u96da\u5dc2\u96df\u96d8\u96dd\u9723\u9722\u9725\u97ac\u97ae\u97a8\u97ab\u97a4\u97aa"],["f1a1","\u97a2\u97a5\u97d7\u97d9\u97d6\u97d8\u97fa\u9850\u9851\u9852\u98b8\u9941\u993c\u993a\u9a0f\u9a0b\u9a09\u9a0d\u9a04\u9a11\u9a0a\u9a05\u9a07\u9a06\u9ac0\u9adc\u9b08\u9b04\u9b05\u9b29\u9b35\u9b4a\u9b4c\u9b4b\u9bc7\u9bc6\u9bc3\u9bbf\u9bc1\u9bb5\u9bb8\u9bd3\u9bb6\u9bc4\u9bb9\u9bbd\u9d5c\u9d53\u9d4f\u9d4a\u9d5b\u9d4b\u9d59\u9d56\u9d4c\u9d57\u9d52\u9d54\u9d5f\u9d58\u9d5a\u9e8e\u9e8c\u9edf\u9f01\u9f00\u9f16\u9f25\u9f2b\u9f2a\u9f29\u9f28\u9f4c\u9f55\u5134\u5135\u5296\u52f7\u53b4\u56ab\u56ad\u56a6\u56a7\u56aa\u56ac\u58da\u58dd\u58db\u5912\u5b3d\u5b3e\u5b3f\u5dc3\u5e70"],["f240","\u5fbf\u61fb\u6507\u6510\u650d\u6509\u650c\u650e\u6584\u65de\u65dd\u66de\u6ae7\u6ae0\u6acc\u6ad1\u6ad9\u6acb\u6adf\u6adc\u6ad0\u6aeb\u6acf\u6acd\u6ade\u6b60\u6bb0\u6c0c\u7019\u7027\u7020\u7016\u702b\u7021\u7022\u7023\u7029\u7017\u7024\u701c\u702a\u720c\u720a\u7207\u7202\u7205\u72a5\u72a6\u72a4\u72a3\u72a1\u74cb\u74c5\u74b7\u74c3\u7516\u7660\u77c9\u77ca\u77c4\u77f1\u791d\u791b"],["f2a1","\u7921\u791c\u7917\u791e\u79b0\u7a67\u7a68\u7c33\u7c3c\u7c39\u7c2c\u7c3b\u7cec\u7cea\u7e76\u7e75\u7e78\u7e70\u7e77\u7e6f\u7e7a\u7e72\u7e74\u7e68\u7f4b\u7f4a\u7f83\u7f86\u7fb7\u7ffd\u7ffe\u8078\u81d7\u81d5\u8264\u8261\u8263\u85eb\u85f1\u85ed\u85d9\u85e1\u85e8\u85da\u85d7\u85ec\u85f2\u85f8\u85d8\u85df\u85e3\u85dc\u85d1\u85f0\u85e6\u85ef\u85de\u85e2\u8800\u87fa\u8803\u87f6\u87f7\u8809\u880c\u880b\u8806\u87fc\u8808\u87ff\u880a\u8802\u8962\u895a\u895b\u8957\u8961\u895c\u8958\u895d\u8959\u8988\u89b7\u89b6\u89f6\u8b50\u8b48\u8b4a\u8b40\u8b53\u8b56\u8b54\u8b4b\u8b55"],["f340","\u8b51\u8b42\u8b52\u8b57\u8c43\u8c77\u8c76\u8c9a\u8d06\u8d07\u8d09\u8dac\u8daa\u8dad\u8dab\u8e6d\u8e78\u8e73\u8e6a\u8e6f\u8e7b\u8ec2\u8f52\u8f51\u8f4f\u8f50\u8f53\u8fb4\u9140\u913f\u91b0\u91ad\u93de\u93c7\u93cf\u93c2\u93da\u93d0\u93f9\u93ec\u93cc\u93d9\u93a9\u93e6\u93ca\u93d4\u93ee\u93e3\u93d5\u93c4\u93ce\u93c0\u93d2\u93e7\u957d\u95da\u95db\u96e1\u9729\u972b\u972c\u9728\u9726"],["f3a1","\u97b3\u97b7\u97b6\u97dd\u97de\u97df\u985c\u9859\u985d\u9857\u98bf\u98bd\u98bb\u98be\u9948\u9947\u9943\u99a6\u99a7\u9a1a\u9a15\u9a25\u9a1d\u9a24\u9a1b\u9a22\u9a20\u9a27\u9a23\u9a1e\u9a1c\u9a14\u9ac2\u9b0b\u9b0a\u9b0e\u9b0c\u9b37\u9bea\u9beb\u9be0\u9bde\u9be4\u9be6\u9be2\u9bf0\u9bd4\u9bd7\u9bec\u9bdc\u9bd9\u9be5\u9bd5\u9be1\u9bda\u9d77\u9d81\u9d8a\u9d84\u9d88\u9d71\u9d80\u9d78\u9d86\u9d8b\u9d8c\u9d7d\u9d6b\u9d74\u9d75\u9d70\u9d69\u9d85\u9d73\u9d7b\u9d82\u9d6f\u9d79\u9d7f\u9d87\u9d68\u9e94\u9e91\u9ec0\u9efc\u9f2d\u9f40\u9f41\u9f4d\u9f56\u9f57\u9f58\u5337\u56b2"],["f440","\u56b5\u56b3\u58e3\u5b45\u5dc6\u5dc7\u5eee\u5eef\u5fc0\u5fc1\u61f9\u6517\u6516\u6515\u6513\u65df\u66e8\u66e3\u66e4\u6af3\u6af0\u6aea\u6ae8\u6af9\u6af1\u6aee\u6aef\u703c\u7035\u702f\u7037\u7034\u7031\u7042\u7038\u703f\u703a\u7039\u7040\u703b\u7033\u7041\u7213\u7214\u72a8\u737d\u737c\u74ba\u76ab\u76aa\u76be\u76ed\u77cc\u77ce\u77cf\u77cd\u77f2\u7925\u7923\u7927\u7928\u7924\u7929"],["f4a1","\u79b2\u7a6e\u7a6c\u7a6d\u7af7\u7c49\u7c48\u7c4a\u7c47\u7c45\u7cee\u7e7b\u7e7e\u7e81\u7e80\u7fba\u7fff\u8079\u81db\u81d9\u820b\u8268\u8269\u8622\u85ff\u8601\u85fe\u861b\u8600\u85f6\u8604\u8609\u8605\u860c\u85fd\u8819\u8810\u8811\u8817\u8813\u8816\u8963\u8966\u89b9\u89f7\u8b60\u8b6a\u8b5d\u8b68\u8b63\u8b65\u8b67\u8b6d\u8dae\u8e86\u8e88\u8e84\u8f59\u8f56\u8f57\u8f55\u8f58\u8f5a\u908d\u9143\u9141\u91b7\u91b5\u91b2\u91b3\u940b\u9413\u93fb\u9420\u940f\u9414\u93fe\u9415\u9410\u9428\u9419\u940d\u93f5\u9400\u93f7\u9407\u940e\u9416\u9412\u93fa\u9409\u93f8\u940a\u93ff"],["f540","\u93fc\u940c\u93f6\u9411\u9406\u95de\u95e0\u95df\u972e\u972f\u97b9\u97bb\u97fd\u97fe\u9860\u9862\u9863\u985f\u98c1\u98c2\u9950\u994e\u9959\u994c\u994b\u9953\u9a32\u9a34\u9a31\u9a2c\u9a2a\u9a36\u9a29\u9a2e\u9a38\u9a2d\u9ac7\u9aca\u9ac6\u9b10\u9b12\u9b11\u9c0b\u9c08\u9bf7\u9c05\u9c12\u9bf8\u9c40\u9c07\u9c0e\u9c06\u9c17\u9c14\u9c09\u9d9f\u9d99\u9da4\u9d9d\u9d92\u9d98\u9d90\u9d9b"],["f5a1","\u9da0\u9d94\u9d9c\u9daa\u9d97\u9da1\u9d9a\u9da2\u9da8\u9d9e\u9da3\u9dbf\u9da9\u9d96\u9da6\u9da7\u9e99\u9e9b\u9e9a\u9ee5\u9ee4\u9ee7\u9ee6\u9f30\u9f2e\u9f5b\u9f60\u9f5e\u9f5d\u9f59\u9f91\u513a\u5139\u5298\u5297\u56c3\u56bd\u56be\u5b48\u5b47\u5dcb\u5dcf\u5ef1\u61fd\u651b\u6b02\u6afc\u6b03\u6af8\u6b00\u7043\u7044\u704a\u7048\u7049\u7045\u7046\u721d\u721a\u7219\u737e\u7517\u766a\u77d0\u792d\u7931\u792f\u7c54\u7c53\u7cf2\u7e8a\u7e87\u7e88\u7e8b\u7e86\u7e8d\u7f4d\u7fbb\u8030\u81dd\u8618\u862a\u8626\u861f\u8623\u861c\u8619\u8627\u862e\u8621\u8620\u8629\u861e\u8625"],["f640","\u8829\u881d\u881b\u8820\u8824\u881c\u882b\u884a\u896d\u8969\u896e\u896b\u89fa\u8b79\u8b78\u8b45\u8b7a\u8b7b\u8d10\u8d14\u8daf\u8e8e\u8e8c\u8f5e\u8f5b\u8f5d\u9146\u9144\u9145\u91b9\u943f\u943b\u9436\u9429\u943d\u943c\u9430\u9439\u942a\u9437\u942c\u9440\u9431\u95e5\u95e4\u95e3\u9735\u973a\u97bf\u97e1\u9864\u98c9\u98c6\u98c0\u9958\u9956\u9a39\u9a3d\u9a46\u9a44\u9a42\u9a41\u9a3a"],["f6a1","\u9a3f\u9acd\u9b15\u9b17\u9b18\u9b16\u9b3a\u9b52\u9c2b\u9c1d\u9c1c\u9c2c\u9c23\u9c28\u9c29\u9c24\u9c21\u9db7\u9db6\u9dbc\u9dc1\u9dc7\u9dca\u9dcf\u9dbe\u9dc5\u9dc3\u9dbb\u9db5\u9dce\u9db9\u9dba\u9dac\u9dc8\u9db1\u9dad\u9dcc\u9db3\u9dcd\u9db2\u9e7a\u9e9c\u9eeb\u9eee\u9eed\u9f1b\u9f18\u9f1a\u9f31\u9f4e\u9f65\u9f64\u9f92\u4eb9\u56c6\u56c5\u56cb\u5971\u5b4b\u5b4c\u5dd5\u5dd1\u5ef2\u6521\u6520\u6526\u6522\u6b0b\u6b08\u6b09\u6c0d\u7055\u7056\u7057\u7052\u721e\u721f\u72a9\u737f\u74d8\u74d5\u74d9\u74d7\u766d\u76ad\u7935\u79b4\u7a70\u7a71\u7c57\u7c5c\u7c59\u7c5b\u7c5a"],["f740","\u7cf4\u7cf1\u7e91\u7f4f\u7f87\u81de\u826b\u8634\u8635\u8633\u862c\u8632\u8636\u882c\u8828\u8826\u882a\u8825\u8971\u89bf\u89be\u89fb\u8b7e\u8b84\u8b82\u8b86\u8b85\u8b7f\u8d15\u8e95\u8e94\u8e9a\u8e92\u8e90\u8e96\u8e97\u8f60\u8f62\u9147\u944c\u9450\u944a\u944b\u944f\u9447\u9445\u9448\u9449\u9446\u973f\u97e3\u986a\u9869\u98cb\u9954\u995b\u9a4e\u9a53\u9a54\u9a4c\u9a4f\u9a48\u9a4a"],["f7a1","\u9a49\u9a52\u9a50\u9ad0\u9b19\u9b2b\u9b3b\u9b56\u9b55\u9c46\u9c48\u9c3f\u9c44\u9c39\u9c33\u9c41\u9c3c\u9c37\u9c34\u9c32\u9c3d\u9c36\u9ddb\u9dd2\u9dde\u9dda\u9dcb\u9dd0\u9ddc\u9dd1\u9ddf\u9de9\u9dd9\u9dd8\u9dd6\u9df5\u9dd5\u9ddd\u9eb6\u9ef0\u9f35\u9f33\u9f32\u9f42\u9f6b\u9f95\u9fa2\u513d\u5299\u58e8\u58e7\u5972\u5b4d\u5dd8\u882f\u5f4f\u6201\u6203\u6204\u6529\u6525\u6596\u66eb\u6b11\u6b12\u6b0f\u6bca\u705b\u705a\u7222\u7382\u7381\u7383\u7670\u77d4\u7c67\u7c66\u7e95\u826c\u863a\u8640\u8639\u863c\u8631\u863b\u863e\u8830\u8832\u882e\u8833\u8976\u8974\u8973\u89fe"],["f840","\u8b8c\u8b8e\u8b8b\u8b88\u8c45\u8d19\u8e98\u8f64\u8f63\u91bc\u9462\u9455\u945d\u9457\u945e\u97c4\u97c5\u9800\u9a56\u9a59\u9b1e\u9b1f\u9b20\u9c52\u9c58\u9c50\u9c4a\u9c4d\u9c4b\u9c55\u9c59\u9c4c\u9c4e\u9dfb\u9df7\u9def\u9de3\u9deb\u9df8\u9de4\u9df6\u9de1\u9dee\u9de6\u9df2\u9df0\u9de2\u9dec\u9df4\u9df3\u9de8\u9ded\u9ec2\u9ed0\u9ef2\u9ef3\u9f06\u9f1c\u9f38\u9f37\u9f36\u9f43\u9f4f"],["f8a1","\u9f71\u9f70\u9f6e\u9f6f\u56d3\u56cd\u5b4e\u5c6d\u652d\u66ed\u66ee\u6b13\u705f\u7061\u705d\u7060\u7223\u74db\u74e5\u77d5\u7938\u79b7\u79b6\u7c6a\u7e97\u7f89\u826d\u8643\u8838\u8837\u8835\u884b\u8b94\u8b95\u8e9e\u8e9f\u8ea0\u8e9d\u91be\u91bd\u91c2\u946b\u9468\u9469\u96e5\u9746\u9743\u9747\u97c7\u97e5\u9a5e\u9ad5\u9b59\u9c63\u9c67\u9c66\u9c62\u9c5e\u9c60\u9e02\u9dfe\u9e07\u9e03\u9e06\u9e05\u9e00\u9e01\u9e09\u9dff\u9dfd\u9e04\u9ea0\u9f1e\u9f46\u9f74\u9f75\u9f76\u56d4\u652e\u65b8\u6b18\u6b19\u6b17\u6b1a\u7062\u7226\u72aa\u77d8\u77d9\u7939\u7c69\u7c6b\u7cf6\u7e9a"],["f940","\u7e98\u7e9b\u7e99\u81e0\u81e1\u8646\u8647\u8648\u8979\u897a\u897c\u897b\u89ff\u8b98\u8b99\u8ea5\u8ea4\u8ea3\u946e\u946d\u946f\u9471\u9473\u9749\u9872\u995f\u9c68\u9c6e\u9c6d\u9e0b\u9e0d\u9e10\u9e0f\u9e12\u9e11\u9ea1\u9ef5\u9f09\u9f47\u9f78\u9f7b\u9f7a\u9f79\u571e\u7066\u7c6f\u883c\u8db2\u8ea6\u91c3\u9474\u9478\u9476\u9475\u9a60\u9c74\u9c73\u9c71\u9c75\u9e14\u9e13\u9ef6\u9f0a"],["f9a1","\u9fa4\u7068\u7065\u7cf7\u866a\u883e\u883d\u883f\u8b9e\u8c9c\u8ea9\u8ec9\u974b\u9873\u9874\u98cc\u9961\u99ab\u9a64\u9a66\u9a67\u9b24\u9e15\u9e17\u9f48\u6207\u6b1e\u7227\u864c\u8ea8\u9482\u9480\u9481\u9a69\u9a68\u9b2e\u9e19\u7229\u864b\u8b9f\u9483\u9c79\u9eb7\u7675\u9a6b\u9c7a\u9e1d\u7069\u706a\u9ea4\u9f7e\u9f49\u9f98\u7881\u92b9\u88cf\u58bb\u6052\u7ca7\u5afa\u2554\u2566\u2557\u2560\u256c\u2563\u255a\u2569\u255d\u2552\u2564\u2555\u255e\u256a\u2561\u2558\u2567\u255b\u2553\u2565\u2556\u255f\u256b\u2562\u2559\u2568\u255c\u2551\u2550\u256d\u256e\u2570\u256f\u2593"]]')},function(g,I,e){(function(){var I,t,C;t=e(287).Number,C=e(180),I=function(){function g(g,I,e){this.type=g,this.length=I,this.lengthType=null!=e?e:"count"}return g.prototype.decode=function(g,I){var e,Q,F,B,n,U;if(F=g.pos,B=[],e=I,null!=this.length&&(Q=C.resolveLength(this.length,g,I)),this.length instanceof t&&(Object.defineProperties(B,{parent:{value:I},_startOffset:{value:F},_currentOffset:{value:0,writable:!0},_length:{value:Q}}),e=B),null==Q||"bytes"===this.lengthType)for(n=null!=Q?g.pos+Q:(null!=I?I._length:void 0)?I._startOffset+I._length:g.length;g.pos<n;)B.push(this.type.decode(g,e));else for(U=0;U<Q;U+=1)B.push(this.type.decode(g,e));return B},g.prototype.size=function(g,I){var e,Q,F,B;if(!g)return this.type.size(null,I)*C.resolveLength(this.length,null,I);for(Q=0,this.length instanceof t&&(Q+=this.length.size(),I={parent:I}),F=0,B=g.length;F<B;F++)e=g[F],Q+=this.type.size(e,I);return Q},g.prototype.encode=function(g,I,e){var C,Q,F,B,n,U;for(C=e,this.length instanceof t&&((C={pointers:[],startOffset:g.pos,parent:e}).pointerOffset=g.pos+this.size(I,C),this.length.encode(g,I.length)),n=0,U=I.length;n<U;n++)F=I[n],this.type.encode(g,F,C);if(this.length instanceof t)for(Q=0;Q<C.pointers.length;)(B=C.pointers[Q++]).type.encode(g,B.val)},g}(),g.exports=I}).call(this)},function(g,I,e){(function(){var I,t;t=e(180),I=function(){function g(g){this.fields=null!=g?g:{}}return g.prototype.decode=function(g,I,e){var t,C;return null==e&&(e=0),t=this._setup(g,I,e),this._parseFields(g,t,this.fields),null!=(C=this.process)&&C.call(t,g),t},g.prototype._setup=function(g,I,e){var t;return t={},Object.defineProperties(t,{parent:{value:I},_startOffset:{value:g.pos},_currentOffset:{value:0,writable:!0},_length:{value:e}}),t},g.prototype._parseFields=function(g,I,e){var C,Q,F;for(C in e)void 0!==(F="function"===typeof(Q=e[C])?Q.call(I,I):Q.decode(g,I))&&(F instanceof t.PropertyDescriptor?Object.defineProperty(I,C,F):I[C]=F),I._currentOffset=g.pos-I._startOffset},g.prototype.size=function(g,I,e){var t,C,Q,F,B;for(C in null==g&&(g={}),null==e&&(e=!0),t={parent:I,val:g,pointerSize:0},Q=0,B=this.fields)null!=(F=B[C]).size&&(Q+=F.size(g[C],t));return e&&(Q+=t.pointerSize),Q},g.prototype.encode=function(g,I,e){var t,C,Q,F,B,n,U;for(Q in null!=(n=this.preEncode)&&n.call(I,g),(t={pointers:[],startOffset:g.pos,parent:e,val:I,pointerSize:0}).pointerOffset=g.pos+this.size(I,t,!1),U=this.fields)null!=(B=U[Q]).encode&&B.encode(g,I[Q],t);for(C=0;C<t.pointers.length;)(F=t.pointers[C++]).type.encode(g,F.val,F.parent)},g}(),g.exports=I}).call(this)},function(g,I,e){"use strict";var t=Array.prototype.slice,C=e(738),Q=Object.keys,F=Q?function(g){return Q(g)}:e(1429),B=Object.keys;F.shim=function(){Object.keys?function(){var g=Object.keys(arguments);return g&&g.length===arguments.length}(1,2)||(Object.keys=function(g){return C(g)?B(t.call(g)):B(g)}):Object.keys=F;return Object.keys||F},g.exports=F},function(g,I,e){"use strict";var t=Object.prototype.toString;g.exports=function(g){var I=t.call(g),e="[object Arguments]"===I;return e||(e="[object Array]"!==I&&null!==g&&"object"===typeof g&&"number"===typeof g.length&&g.length>=0&&"[object Function]"===t.call(g.callee)),e}},function(g,I,e){"use strict";var t=function(g){return g!==g};g.exports=function(g,I){return 0===g&&0===I?1/g===1/I:g===I||!(!t(g)||!t(I))}},function(g,I,e){"use strict";var t=e(739);g.exports=function(){return"function"===typeof Object.is?Object.is:t}},function(g,I,e){"use strict";var t=Object,C=TypeError;g.exports=function(){if(null!=this&&this!==t(this))throw new C("RegExp.prototype.flags getter called on non-object");var g="";return this.global&&(g+="g"),this.ignoreCase&&(g+="i"),this.multiline&&(g+="m"),this.dotAll&&(g+="s"),this.unicode&&(g+="u"),this.sticky&&(g+="y"),g}},function(g,I,e){"use strict";var t=e(741),C=e(341).supportsDescriptors,Q=Object.getOwnPropertyDescriptor,F=TypeError;g.exports=function(){if(!C)throw new F("RegExp.prototype.flags requires a true ES5 environment that supports property descriptors");if("gim"===/a/gim.flags){var g=Q(RegExp.prototype,"flags");if(g&&"function"===typeof g.get&&"boolean"===typeof/a/.dotAll)return g.get}return t}},function(g,I,e){"use strict";var t=e(46).default;I.__esModule=!0,I.drawEllipse=I.default=void 0;var C=t(e(20)),Q=(Math.sqrt(2)-1)/3*4,F=function(g,I){return C.path(["props",g],I)},B=function(g,I,e,t,C){var F=I-t,B=e-C,n=t*Q,U=C*Q,s=F+2*t,i=B+2*C,c=F+t,A=B+C;g.moveTo(F,A),g.bezierCurveTo(F,A-U,c-n,B,c,B),g.bezierCurveTo(c+n,B,s,A-U,s,A),g.bezierCurveTo(s,A+U,c+n,i,c,i),g.bezierCurveTo(c-n,i,F,A+U,F,A),g.closePath()};I.drawEllipse=B;var n=C.curryN(2,(function(g,I){var e=F("cx",I),t=F("cy",I),C=F("rx",I),Q=F("ry",I);return B(g,e,t,C,Q),I}));I.default=n},function(g,I,e){"use strict";I.__esModule=!0,I.default=void 0;var t=function(g,I,e,t,C,Q){void 0===Q&&(Q={});var F=1e3/g._fontSize,B=1e3/(g._font.font.unitsPerEm||1e3),n=g._font.encodeGlyphs(I),U=e.map((function(g,e){return{xAdvance:g.xAdvance*F,yAdvance:g.yAdvance*F,xOffset:g.xOffset,yOffset:g.yOffset,advanceWidth:I[e].advanceWidth*B}}));return g._glyphs(n,U,t,C,Q)};I.default=t},function(g,I,e){"use strict";var t=e(128).default,C=e(46).default;I.__esModule=!0,I.drawPolyline=I.default=void 0;var Q=C(e(20)),F=t(e(746)),B=function(g){return function(I){I.length>0&&(g.moveTo(I[0][0],I[0][1]),I.slice(1).forEach((function(I){return g.lineTo(I[0],I[1])})))}};I.drawPolyline=B;var n=function(g){return Q.tap(Q.compose(B(g),F.default,Q.pathOr("",["props","points"])))};I.default=n},function(g,I,e){"use strict";var t=e(46).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=C.o((function(g){return g%2!==0}),C.prop("length")),F=C.compose(C.splitEvery(2),C.map(parseFloat),C.when(Q,C.slice(0,-1)),C.split(/\s+/),C.replace(/(\d)-(\d)/g,"$1 -$2"),C.replace(/,/g," "),C.trim,C.defaultTo(""));I.default=F},function(g,I,e){"use strict";var t=e(46).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=t(e(53)),F=C.propEq("type",Q.Path);I.default=F},function(g,I,e){"use strict";var t=e(46).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=t(e(53)),F=C.propEq("type",Q.Text);I.default=F},function(g,I,e){"use strict";var t=e(46).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=t(e(53)),F=C.propEq("type",Q.Rect);I.default=F},function(g,I,e){"use strict";var t=e(46).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=t(e(53)),F=C.propEq("type",Q.Line);I.default=F},function(g,I,e){"use strict";var t=e(46).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=t(e(53)),F=C.propEq("type",Q.Image);I.default=F},function(g,I,e){"use strict";var t=e(46).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=t(e(53)),F=C.propEq("type",Q.Circle);I.default=F},function(g,I,e){"use strict";var t=e(46).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=t(e(53)),F=C.propEq("type",Q.Ellipse);I.default=F},function(g,I,e){"use strict";var t=e(46).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=t(e(53)),F=C.propEq("type",Q.Polygon);I.default=F},function(g,I,e){"use strict";var t=e(46).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=t(e(53)),F=C.propEq("type",Q.Polyline);I.default=F},function(g,I,e){"use strict";var t=e(46).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=C.curryN(2,(function(g,I){var e,t;if(!I.origin)return I;var C=[I.origin.left,I.origin.top];return((null===(e=I.style)||void 0===e?void 0:e.transform)||(null===(t=I.props)||void 0===t?void 0:t.transform)||[]).forEach((function(I){!function(g,I,e){var t=I.operation,C=I.value;switch(t){case"scale":var Q=C[0],F=C[1];g.scale(Q,F,{origin:e});break;case"rotate":var B=C[0];g.rotate(B,{origin:e});break;case"translate":var n=C[0],U=C[1];g.translate(n,U,{origin:e});break;case"matrix":g.transform.apply(g,C);break;default:console.error("Transform operation: '"+t+"' doesn't supported")}}(g,I,C)})),I}));I.default=Q},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(537)),B=t(e(538)),n=t(e(1468)),U=Q.either(Q.path(["attributes","lineHeight"]),Q.compose(Q.sum,Q.juxt([F.default,Q.o(Q.negate,B.default),n.default])));I.default=U},function(g,I,e){"use strict";var t=e(128).default;I.__esModule=!0,I.default=void 0;var C=t(e(1469)),Q=function(g){var I=C.default.get(g);return{value:C.default.to.hex(I.value.slice(0,3)),opacity:I.value[3]}};I.default=Q},function(g,I,e){"use strict";g.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},function(g,I,e){"use strict";var t=e(1470),C=Array.prototype.concat,Q=Array.prototype.slice,F=g.exports=function(g){for(var I=[],e=0,F=g.length;e<F;e++){var B=g[e];t(B)?I=C.call(I,Q.call(B)):I.push(B)}return I};F.wrap=function(g){return function(){return g(F(arguments))}}},function(g,I,e){"use strict";(function(I){var t=e(139);function C(g,I){if(g===I)return 0;for(var e=g.length,t=I.length,C=0,Q=Math.min(e,t);C<Q;++C)if(g[C]!==I[C]){e=g[C],t=I[C];break}return e<t?-1:t<e?1:0}function Q(g){return I.Buffer&&"function"===typeof I.Buffer.isBuffer?I.Buffer.isBuffer(g):!(null==g||!g._isBuffer)}var F=e(413),B=Object.prototype.hasOwnProperty,n=Array.prototype.slice,U="foo"===function(){}.name;function s(g){return Object.prototype.toString.call(g)}function i(g){return!Q(g)&&("function"===typeof I.ArrayBuffer&&("function"===typeof ArrayBuffer.isView?ArrayBuffer.isView(g):!!g&&(g instanceof DataView||!!(g.buffer&&g.buffer instanceof ArrayBuffer))))}var c=g.exports=d,A=/\s*function\s+([^\(\s]*)\s*/;function l(g){if(F.isFunction(g)){if(U)return g.name;var I=g.toString().match(A);return I&&I[1]}}function a(g,I){return"string"===typeof g?g.length<I?g:g.slice(0,I):g}function r(g){if(U||!F.isFunction(g))return F.inspect(g);var I=l(g);return"[Function"+(I?": "+I:"")+"]"}function o(g,I,e,t,C){throw new c.AssertionError({message:e,actual:g,expected:I,operator:t,stackStartFunction:C})}function d(g,I){g||o(g,!0,I,"==",c.ok)}function u(g,I,e,t){if(g===I)return!0;if(Q(g)&&Q(I))return 0===C(g,I);if(F.isDate(g)&&F.isDate(I))return g.getTime()===I.getTime();if(F.isRegExp(g)&&F.isRegExp(I))return g.source===I.source&&g.global===I.global&&g.multiline===I.multiline&&g.lastIndex===I.lastIndex&&g.ignoreCase===I.ignoreCase;if(null!==g&&"object"===typeof g||null!==I&&"object"===typeof I){if(i(g)&&i(I)&&s(g)===s(I)&&!(g instanceof Float32Array||g instanceof Float64Array))return 0===C(new Uint8Array(g.buffer),new Uint8Array(I.buffer));if(Q(g)!==Q(I))return!1;var B=(t=t||{actual:[],expected:[]}).actual.indexOf(g);return-1!==B&&B===t.expected.indexOf(I)||(t.actual.push(g),t.expected.push(I),function(g,I,e,t){if(null===g||void 0===g||null===I||void 0===I)return!1;if(F.isPrimitive(g)||F.isPrimitive(I))return g===I;if(e&&Object.getPrototypeOf(g)!==Object.getPrototypeOf(I))return!1;var C=y(g),Q=y(I);if(C&&!Q||!C&&Q)return!1;if(C)return g=n.call(g),I=n.call(I),u(g,I,e);var B,U,s=m(g),i=m(I);if(s.length!==i.length)return!1;for(s.sort(),i.sort(),U=s.length-1;U>=0;U--)if(s[U]!==i[U])return!1;for(U=s.length-1;U>=0;U--)if(B=s[U],!u(g[B],I[B],e,t))return!1;return!0}(g,I,e,t))}return e?g===I:g==I}function y(g){return"[object Arguments]"==Object.prototype.toString.call(g)}function b(g,I){if(!g||!I)return!1;if("[object RegExp]"==Object.prototype.toString.call(I))return I.test(g);try{if(g instanceof I)return!0}catch(e){}return!Error.isPrototypeOf(I)&&!0===I.call({},g)}function Z(g,I,e,t){var C;if("function"!==typeof I)throw new TypeError('"block" argument must be a function');"string"===typeof e&&(t=e,e=null),C=function(g){var I;try{g()}catch(e){I=e}return I}(I),t=(e&&e.name?" ("+e.name+").":".")+(t?" "+t:"."),g&&!C&&o(C,e,"Missing expected exception"+t);var Q="string"===typeof t,B=!g&&C&&!e;if((!g&&F.isError(C)&&Q&&b(C,e)||B)&&o(C,e,"Got unwanted exception"+t),g&&C&&e&&!b(C,e)||!g&&C)throw C}c.AssertionError=function(g){this.name="AssertionError",this.actual=g.actual,this.expected=g.expected,this.operator=g.operator,g.message?(this.message=g.message,this.generatedMessage=!1):(this.message=function(g){return a(r(g.actual),128)+" "+g.operator+" "+a(r(g.expected),128)}(this),this.generatedMessage=!0);var I=g.stackStartFunction||o;if(Error.captureStackTrace)Error.captureStackTrace(this,I);else{var e=new Error;if(e.stack){var t=e.stack,C=l(I),Q=t.indexOf("\n"+C);if(Q>=0){var F=t.indexOf("\n",Q+1);t=t.substring(F+1)}this.stack=t}}},F.inherits(c.AssertionError,Error),c.fail=o,c.ok=d,c.equal=function(g,I,e){g!=I&&o(g,I,e,"==",c.equal)},c.notEqual=function(g,I,e){g==I&&o(g,I,e,"!=",c.notEqual)},c.deepEqual=function(g,I,e){u(g,I,!1)||o(g,I,e,"deepEqual",c.deepEqual)},c.deepStrictEqual=function(g,I,e){u(g,I,!0)||o(g,I,e,"deepStrictEqual",c.deepStrictEqual)},c.notDeepEqual=function(g,I,e){u(g,I,!1)&&o(g,I,e,"notDeepEqual",c.notDeepEqual)},c.notDeepStrictEqual=function g(I,e,t){u(I,e,!0)&&o(I,e,t,"notDeepStrictEqual",g)},c.strictEqual=function(g,I,e){g!==I&&o(g,I,e,"===",c.strictEqual)},c.notStrictEqual=function(g,I,e){g===I&&o(g,I,e,"!==",c.notStrictEqual)},c.throws=function(g,I,e){Z(!0,g,I,e)},c.doesNotThrow=function(g,I,e){Z(!1,g,I,e)},c.ifError=function(g){if(g)throw g},c.strict=t((function g(I,e){I||o(I,!0,e,"==",g)}),c,{equal:c.strictEqual,deepEqual:c.deepStrictEqual,notEqual:c.notStrictEqual,notDeepEqual:c.notDeepStrictEqual}),c.strict.strict=c.strict;var m=Object.keys||function(g){var I=[];for(var e in g)B.call(g,e)&&I.push(e);return I}}).call(this,e(67))},function(g,I,e){"use strict";g.exports=function(g,I,e,t){for(var C=65535&g|0,Q=g>>>16&65535|0,F=0;0!==e;){e-=F=e>2e3?2e3:e;do{Q=Q+(C=C+I[t++]|0)|0}while(--F);C%=65521,Q%=65521}return C|Q<<16|0}},function(g,I,e){"use strict";var t=function(){for(var g,I=[],e=0;e<256;e++){g=e;for(var t=0;t<8;t++)g=1&g?3988292384^g>>>1:g>>>1;I[e]=g}return I}();g.exports=function(g,I,e,C){var Q=t,F=C+e;g^=-1;for(var B=C;B<F;B++)g=g>>>8^Q[255&(g^I[B])];return-1^g}},function(g,I,e){"use strict";var t=e(191).default,C=e(290).default;I.__esModule=!0,I.transformColor=I.processTransform=I.default=void 0;var Q=C(e(20)),F=t(e(1507)),B=t(e(766)),n=t(e(1516)),U=t(e(1524)),s=t(e(767));I.transformColor=s.default;var i=t(e(768));I.processTransform=i.default;var c=Q.curryN(2,(function(g,I){return Q.compose((0,n.default)(g),F.default,(0,U.default)(g),B.default)(I)}));I.default=c},function(g,I,e){"use strict";var t=e(191).default;I.__esModule=!0,I.default=void 0;var C=t(e(1510)),Q=t(e(1511)),F=function(g,I){console.error("\n    @react-pdf/stylesheet parsing error:\n\n    "+g+": "+I+",\n    "+" ".repeat(g.length+2)+"^\n    Unsupported "+g+" value format\n  ")},B=function(g){var I=void 0===g?{}:g,e=I.expandsTo,t=I.maxValues,B=void 0===t?1:t,n=I.autoSupported,U=void 0!==n&&n;return function(g,I){for(var t,n=(0,C.default)(""+I),s=[],i=0;i<n.length;i++){var c=n[i];if("function"===c.type||"string"===c.type||"div"===c.type)return F(g,I),{};if("word"===c.type)if("auto"===c.value&&U)s.push(c.value);else{var A=(0,Q.default)(c.value);if(!A||!"px,in,mm,cm,pt,%,vw,vh".includes(A.unit))return F(g,I),{};s.push(c.value)}}if(s.length>B)return F(g,I),{};var l=s[0];if(e){var a=s[1]||s[0],r=s[2]||s[0],o=s[3]||s[1]||s[0];return e({first:l,second:a,third:r,fourth:o})}return(t={})[g]=l,t}};I.default=B},function(g,I,e){"use strict";var t=e(290).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=C.complement(C.is(Array)),F=C.when(Q,(function(g){return[g]})),B=C.filter(Boolean),n=C.is(Array),U=C.compose((function(g){return g.reduce((function(g,I){var e=n(I)?U(I):I;return Object.keys(e).forEach((function(I){null!==e[I]&&void 0!==e[I]&&(g[I]=e[I])})),g}),{})}),B,F),s=U;I.default=s},function(g,I,e){"use strict";var t=e(191).default,C=e(290).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(1518)),B=t(e(1520)),n=Q.test(/rgb/g),U=Q.test(/rgba/g),s=Q.test(/hsl/g),i=Q.test(/hsla/g),c=Q.compose(B.default.to.hex,B.default.get.rgb),A=Q.compose(Q.toUpper,Q.apply(F.default),Q.map(Math.round),B.default.get.hsl),l=function(g){return Q.cond([[U,c],[n,c],[i,A],[s,A],[Q.T,Q.always(g)]])(g)};I.default=l},function(g,I,e){"use strict";I.__esModule=!0,I.default=void 0;var t=function(g){return g.map((function(g){return function(g){var I=g.operation,e=g.value;switch(I){case"scale":var t=e.map((function(g){return Number.parseFloat(g)})),C=t[0],Q=t[1];return{operation:"scale",value:[C,void 0===Q?C:Q]};case"scaleX":return{operation:"scale",value:[Number.parseFloat(e),1]};case"scaleY":return{operation:"scale",value:[1,Number.parseFloat(e)]};case"rotate":var F=/(-?\d*\.?\d*)(\w*)?/i.exec(e),B=F[1],n=F[2],U=Number.parseFloat(B);return{operation:"rotate",value:["rad"===n?180*U/Math.PI:U]};case"translate":return{operation:"translate",value:e.map((function(g){return Number.parseFloat(g)}))};case"translateX":return{operation:"translate",value:[Number.parseFloat(e),0]};case"translateY":return{operation:"translate",value:[0,Number.parseFloat(e)]};default:return{operation:I,value:e.map((function(g){return Number.parseFloat(g)}))}}}(g)}))},C=function(g){return"string"!==typeof g?g:t(function(g){var I=g.trim().split(/\) |\)/);if(1===I.length)return[[I[0],!0]];for(var e=[],t=0;t<I.length;t+=1){var C=I[t];if(C){var Q=C.split("("),F=Q[0],B=Q[1],n=B.indexOf(",")>=0?",":" ",U=B.split(n).map((function(g){return g.trim()}));e.push({operation:F,value:U})}}return e}(g))};I.default=C},function(g,I,e){"use strict";I.__esModule=!0,I.default=void 0;var t=function(g){switch(g){case"top":case"left":return"0%";case"right":case"bottom":return"100%";case"center":return"50%";default:return null}};I.default=t},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(1531)),B=t(e(1532)),n=t(e(1546)),U=t(e(1548)),s=t(e(1549)),i=t(e(1553)),c=t(e(1554)),A=t(e(1558)),l=t(e(1559)),a=Q.curryN(3,(function(g,I,e,t){void 0===t&&(t={});var C=Q.compose((0,U.default)(g,t),(0,A.default)(g,t),(0,n.default)(g,t),(0,F.default)(g,t));return Q.compose((0,c.default)(g,t),(0,B.default)(g,t,e),Q.map(C),(0,i.default)(g,t),(0,s.default)(g,t),(0,l.default)(g,t))(I)}));I.default=a},function(g,I){function e(){return g.exports=e=Object.assign?Object.assign.bind():function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g},g.exports.__esModule=!0,g.exports.default=g.exports,e.apply(this,arguments)}g.exports=e,g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I,e){"use strict";var t=e(31).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=function(g){var I=0,e=C.map((function(g){var e={start:I,end:I+g.string.length,attributes:g.attributes||{}};return I+=g.string.length,e}));return C.applySpec({runs:e,string:C.o(C.join(""),C.pluck("string"))})(g)};I.default=Q},function(g,I,e){"use strict";var t=e(31).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)).always({start:0,end:0,glyphIndices:[],glyphs:[],positions:[],attributes:{}});I.default=C},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(346)),B=t(e(255)),n=t(e(419)),U=t(e(542)),s=t(e(1538)),i=t(e(543)),c=Q.curryN(2,(function(g,I){if(!g)return(0,F.default)(I);var e=(0,n.default)(I);return function(g,I){var e=(0,B.default)(I),t=Q.length(g.codePoints);return Q.evolve({end:Q.add(t),glyphs:Q.append(g),glyphIndices:(0,s.default)(t),positions:Q.append({xAdvance:g.advanceWidth*e})})(I)}((0,U.default)(g)?(0,i.default)(g,e):g,I)}));I.default=c},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(347)),B=Q.test(/\S/g),n=Q.findIndex(B),U=Q.o(Q.inc,Q.findLastIndex(B)),s=Q.chain(Q.apply(F.default),Q.compose(Q.juxt([n,U]),Q.prop("string")));I.default=s},function(g,I,e){"use strict";var t=e(31).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=function(g){return C.map(C.subtract(C.__,C.head(g)))(g)};I.default=Q},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(778)),B=Q.curryN(3,(function(g,I,e){var t=(0,F.default)(g,e),C=Q.max((0,F.default)(I-1,e),t);return Q.slice(t,C+1,e)}));I.default=B},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(1541)),B=Q.curryN(2,(function(g,I){return Q.findIndex((0,F.default)(Q.prop("start"),Q.prop("end"),g))(I)}));I.default=B},function(g,I,e){"use strict";var t=e(31).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=C.curryN(2,(function(g,I){return C.evolve({attributes:C.dissoc(g)})(I)}));I.default=Q},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(345)),B=t(e(757)),n=(0,F.default)(Q.max,B.default);I.default=n},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(782)),B=t(e(783)),n=Q.converge(Q.subtract,[B.default,F.default]);I.default=n},function(g,I,e){"use strict";var t=e(31).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=C.ifElse(C.pathEq(["runs","length"],0),C.always(0),C.path(["runs",0,"start"]));I.default=Q},function(g,I,e){"use strict";var t=e(31).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=C.ifElse(C.pathEq(["runs","length"],0),C.always(0),C.compose(C.prop("end"),C.last,C.prop("runs")));I.default=Q},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(1555)),B=Q.compose(F.default,Q.head,Q.propOr([],"runs"));I.default=B},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(1556)),B=Q.compose(F.default,Q.last,Q.propOr([],"runs"));I.default=B},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(1557)),B=function(g){return Q.evolve({string:Q.dropLast(1),runs:Q.adjust(-1,F.default)})(g)};I.default=B},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(1560)),B=t(e(1561)),n=t(e(347)),U=t(e(788)),s=t(e(790)),i=3,c=6,A=9,l=Q.pathOr({},["attributedString","runs",0,"attributes"]),a=Q.curryN(3,(function(g,I,e){for(var t=g.tolerance||4,C=function(g,I,e){var t=I.align,C=0,Q=g.syllables,F=e.hyphenationPenalty||("justify"===t?100:600),n=Q.reduce((function(I,e,t){var n=(0,s.default)(C,C+e.length,g);if(""===e.trim()){var U=n*i/c,l=n*i/A,a={start:C,end:C+e.length};I.push(B.default.glue(n,a,U,l))}else{var r=" "!==Q[t+1],o={start:C,end:C+e.length};I.push(B.default.box(n,o,r)),Q[t+1]&&r&&I.push(B.default.penalty(5,F,1))}return C+=e.length,I}),[]);return n.push(B.default.glue(0,null,B.default.infinity,0)),n.push(B.default.penalty(0,-B.default.infinity,1)),n}(I,l(I),g),Q=(0,B.default)(C,e,{tolerance:t});0===Q.length&&t<50;)t+=5,Q=(0,B.default)(C,e,{tolerance:t});return(0===Q.length||1===Q.length&&0===Q[0].position)&&(Q=(0,F.default)(C,e)),function(g,I,e){var t=0,C=null,Q=e.reduce((function(e,Q){var F,B=I[Q.position],s=I[Q.position-1];return Q.position===I.length-1?e:("penalty"===B.type?(C=s.value.end,F=(0,n.default)(t,C,g),F=(0,U.default)(F.length,45,F)):(C=B.value.end,F=(0,n.default)(t,C,g)),t=C,[].concat(e,[F]))}),[]);return Q.push((0,n.default)(t,g.string.length,g)),Q}(I,C,Q.slice(1))}));I.default=a},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(541)),B=t(e(346)),n=t(e(1563)),U=t(e(549)),s=t(e(544)),i=function(g){return Q.compose(Q.gt(Q.__,g),Q.nthArg(1))},c=Q.curryN(3,(function(g,I,e){var t=(0,U.default)(g,e);if(-1===t)return(0,F.default)(I,e);var C,c,A=Q.propOr([],"codePoints")(I),l=Q.add(Q.length(A));return Q.evolve({string:Q.compose(Q.join(""),Q.insert(g,(0,s.default)(A))),runs:(C=[[(c=t,Q.compose(Q.equals(c),Q.nthArg(1))),function(e){return(0,n.default)(g-e.start,I,e)}],[i(t),Q.evolve({start:l,end:l})],[Q.T,B.default]],Q.addIndex(Q.map)(Q.cond(C)))})(e)}));I.default=c},function(g,I,e){"use strict";var t=e(31).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=C.converge(C.subtract,[C.prop("end"),C.prop("start")]);I.default=Q},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(777)),B=t(e(1565)),n=Q.curryN(3,(function(g,I,e){return Q.compose(Q.sum,Q.map((0,B.default)(g,I)),(0,F.default)(g,I),Q.propOr([],"runs"))(e)}));I.default=n},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(549)),B=Q.curryN(2,(function(g,I){var e=(0,F.default)(g)(I);return Q.path(["runs",e])(I)}));I.default=B},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(789)),B=t(e(343)),n=t(e(1569)),U=Q.curryN(2,(function(g,I){for(var e=0,t=0,C=Q.propOr([],"runs",I),U=0;U<C.length;U+=1){var s=C[U],i=(0,B.default)(s);if(t+i>g)return e+(0,n.default)(g-t,s);t+=i,e+=(0,F.default)(s)}return e}));I.default=U},function(g,I,e){"use strict";var t=e(31).default,C=e(40).default;I.__esModule=!0,I.default=void 0;var Q=C(e(1575)),F=t(e(20)),B=C(e(1578)),n=C(e(1579)),U=C(e(344)),s=F.curryN(2,(function(g,I){var e=I.box.width-(0,U.default)(I);if(0!==e){var t=(0,B.default)(e,I,g);return function(g,I){for(var e,t=0,C=(0,Q.default)(I.runs);!(e=C()).done;)for(var F,B=e.value,n=(0,Q.default)(B.positions);!(F=n()).done;){F.value.xAdvance+=g[t++]}return I}((0,n.default)(e,t),I)}}));I.default=s},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(1580)),B=t(e(547)),n=["Common","Inherited","Unknown"],U=Q.curryN(2,(function(g,I){var e=I.string,t="Unknown",C=0,Q=0,U=[];if(!e)return(0,B.default)();for(var s=0;s<e.length;s+=1){var i=e[s],c=i.codePointAt(),A=F.default.getScript(c);A===t||n.includes(A)||("Unknown"!==t&&U.push({start:C,end:Q,attributes:{script:t}}),C=Q,t=A),Q+=i.length}return C<e.length&&U.push({start:C,end:e.length,attributes:{script:t}}),{string:e,runs:U}}));I.default=U},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(1581)),B=t(e(1583)),n=(0,F.default)(B.default),U=Q.split("\xad"),s={},i=Q.ifElse(Q.contains("\xad"),U,Q.o(U,n)),c=Q.curryN(2,(function(g,I){var e="_"+I;return Q.isNil(I)?[]:(s[e]||(s[e]=i(I)),s[e])}));I.default=c},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(537)),B=t(e(539)),n=t(e(343)),U=t(e(344)),s=function(){return function(g){var I=Q.propOr(0,"overflowLeft",g),e=Q.propOr(0,"overflowRight",g),t=(0,U.default)(g)-e;g.decorationLines=[];for(var C=0;C<g.runs.length;C+=1){var s=g.runs[C],i=Math.min(t-I,(0,n.default)(s)),c=Math.max(.5,Math.floor(s.attributes.fontSize/12));if(s.attributes.underline){var A={rect:{x:I,y:(0,B.default)(g)+2*c,width:i,height:c},opacity:s.attributes.opacity,color:s.attributes.underlineColor||"black",style:s.attributes.underlineStyle||"solid"};g.decorationLines.push(A)}if(s.attributes.strike){var l={rect:{x:I,y:(0,B.default)(g)-(0,F.default)(s)/3,width:i,height:c},opacity:s.attributes.opacity,color:s.attributes.strikeColor||"black",style:s.attributes.strikeStyle||"solid"};g.decorationLines.push(l)}I+=i}return g}};I.default=s},function(g,I,e){"use strict";var t=e(37).default;I.__esModule=!0,I.default=void 0;var C=t(e(1584)),Q=t(e(551)),F=function(g,I){switch(I){case"uppercase":return g.toUpperCase();case"lowercase":return g.toLowerCase();case"capitalize":return(0,C.default)(g);case"upperfirst":return(0,Q.default)(g);default:return g}};I.default=F},function(g,I,e){"use strict";var t=e(37).default,C=e(43).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(1585)),B={},n=[173],U=Q.pathOr(12,["attributes","fontSize"]),s=function(g){if(B[g])return B[g];var I=new F.default(g);return B[g]=I,I},i=function(){return s("Helvetica")},c=function(g,I){return!I||!n.includes(g)&&!I.hasGlyphForCodePoint(g)&&i().hasGlyphForCodePoint(g)},A=function(){return function(g){for(var I=g.string,e=g.runs,t=null,C=null,F=0,B=0,n=[],A=0;A<e.length;A+=1){var l=e[A],a="string"===typeof l.attributes.font?s(l.attributes.font):l.attributes.font;if(0===I.length){n.push({start:0,end:0,attributes:{font:a}});break}for(var r=I.slice(l.start,l.end),o=0;o<r.length;o+=1){var d=r[o],u=d.codePointAt(),y=c(u,a)?i():a,b=U(l);y===t&&b===C&&y.unitsPerEm===t.unitsPerEm||(t&&n.push({start:F,end:B,attributes:{font:t,scale:C/t.unitsPerEm}}),t=y,C=b,F=B),B+=d.length}}if(F<I.length){var Z=U(Q.last(e));n.push({start:F,end:I.length,attributes:{font:t,scale:Z/t.unitsPerEm}})}return{string:I,runs:n}}};I.default=A},function(g,I,e){"use strict";I.__esModule=!0,I.default=void 0;var t=function(g){if(!g)return null;var I=g.split(/[,\s]+/).map(parseFloat);return 4!==I.length?null:{minX:I[0],minY:I[1],maxX:I[2],maxY:I[3]}};I.default=t},function(g,I,e){"use strict";var t=e(37).default;I.__esModule=!0,I.fetchEmojis=I.embedEmojis=I.default=void 0;var C=t(e(348)),Q=t(e(1596)),F=t(e(801)),B={},n=(0,Q.default)(),U=function(g){return"\ufe0f"!==g},s=function(g,I){var e,t=I.url,C=I.format;return""+t+(e=g,Array.from(e).filter(U).map((function(g){return g.codePointAt(0).toString(16)})).join("-")+".")+C},i=function(g,I){if(!I||!I.url)return[];for(var e,t=[],C=function(){var g=e[0];if(!B[g]||B[g].loading){var C=s(g,I);B[g]={loading:!0};var Q=function(){return g=F.default,function(){return g.apply(void 0,arguments).then((function(g){return g}),(function(g){return g}))};var g}();t.push(Q({uri:C}).then((function(I){B[g].loading=!1,B[g].data=I.data})))}};e=n.exec(g);)C();return t};I.fetchEmojis=i;I.embedEmojis=function(g){for(var I=[],e=0;e<g.length;e+=1){for(var t=g[e],Q=void 0,F=0;Q=n.exec(t.string);){var U=Q.index,s=Q[0],i=t.attributes.fontSize,c=t.string.slice(F,U+Q[0].length);B[s]&&B[s].data?I.push({string:c.replace(Q,String.fromCharCode(65532)),attributes:(0,C.default)({},t.attributes,{attachment:{width:i,height:i,yOffset:Math.floor(.1*i),image:B[s].data}})}):I.push({string:c.replace(Q,String.fromCharCode(0)),attributes:t.attributes}),F=U+s.length}F<t.string.length&&I.push({string:t.string.slice(F),attributes:t.attributes})}return I};var c=i;I.default=c},function(g,I,e){"use strict";e.r(I),function(g){e.d(I,"default",(function(){return ag}));var t=e(591),C=e.n(t),Q=e(374),F=e.n(Q),B=e(567),n=e.n(B),U=e(268),s="undefined"!==typeof g?g:"undefined"!==typeof self?self:"undefined"!==typeof window?window:{},i=[],c=[],A="undefined"!==typeof Uint8Array?Uint8Array:Array,l=!1;function a(){l=!0;for(var g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",I=0,e=g.length;I<e;++I)i[I]=g[I],c[g.charCodeAt(I)]=I;c["-".charCodeAt(0)]=62,c["_".charCodeAt(0)]=63}function r(g,I,e){for(var t,C,Q=[],F=I;F<e;F+=3)t=(g[F]<<16)+(g[F+1]<<8)+g[F+2],Q.push(i[(C=t)>>18&63]+i[C>>12&63]+i[C>>6&63]+i[63&C]);return Q.join("")}function o(g){var I;l||a();for(var e=g.length,t=e%3,C="",Q=[],F=0,B=e-t;F<B;F+=16383)Q.push(r(g,F,F+16383>B?B:F+16383));return 1===t?(I=g[e-1],C+=i[I>>2],C+=i[I<<4&63],C+="=="):2===t&&(I=(g[e-2]<<8)+g[e-1],C+=i[I>>10],C+=i[I>>4&63],C+=i[I<<2&63],C+="="),Q.push(C),Q.join("")}function d(g,I,e,t,C){var Q,F,B=8*C-t-1,n=(1<<B)-1,U=n>>1,s=-7,i=e?C-1:0,c=e?-1:1,A=g[I+i];for(i+=c,Q=A&(1<<-s)-1,A>>=-s,s+=B;s>0;Q=256*Q+g[I+i],i+=c,s-=8);for(F=Q&(1<<-s)-1,Q>>=-s,s+=t;s>0;F=256*F+g[I+i],i+=c,s-=8);if(0===Q)Q=1-U;else{if(Q===n)return F?NaN:1/0*(A?-1:1);F+=Math.pow(2,t),Q-=U}return(A?-1:1)*F*Math.pow(2,Q-t)}function u(g,I,e,t,C,Q){var F,B,n,U=8*Q-C-1,s=(1<<U)-1,i=s>>1,c=23===C?Math.pow(2,-24)-Math.pow(2,-77):0,A=t?0:Q-1,l=t?1:-1,a=I<0||0===I&&1/I<0?1:0;for(I=Math.abs(I),isNaN(I)||I===1/0?(B=isNaN(I)?1:0,F=s):(F=Math.floor(Math.log(I)/Math.LN2),I*(n=Math.pow(2,-F))<1&&(F--,n*=2),(I+=F+i>=1?c/n:c*Math.pow(2,1-i))*n>=2&&(F++,n/=2),F+i>=s?(B=0,F=s):F+i>=1?(B=(I*n-1)*Math.pow(2,C),F+=i):(B=I*Math.pow(2,i-1)*Math.pow(2,C),F=0));C>=8;g[e+A]=255&B,A+=l,B/=256,C-=8);for(F=F<<C|B,U+=C;U>0;g[e+A]=255&F,A+=l,F/=256,U-=8);g[e+A-l]|=128*a}var y={}.toString,b=Array.isArray||function(g){return"[object Array]"==y.call(g)};function Z(){return x.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function m(g,I){if(Z()<I)throw new RangeError("Invalid typed array length");return x.TYPED_ARRAY_SUPPORT?(g=new Uint8Array(I)).__proto__=x.prototype:(null===g&&(g=new x(I)),g.length=I),g}function x(g,I,e){if(!x.TYPED_ARRAY_SUPPORT&&!(this instanceof x))return new x(g,I,e);if("number"===typeof g){if("string"===typeof I)throw new Error("If encoding is specified then the first argument must be a string");return G(this,g)}return R(this,g,I,e)}function R(g,I,e,t){if("number"===typeof I)throw new TypeError('"value" argument must not be a number');return"undefined"!==typeof ArrayBuffer&&I instanceof ArrayBuffer?function(g,I,e,t){if(I.byteLength,e<0||I.byteLength<e)throw new RangeError("'offset' is out of bounds");if(I.byteLength<e+(t||0))throw new RangeError("'length' is out of bounds");I=void 0===e&&void 0===t?new Uint8Array(I):void 0===t?new Uint8Array(I,e):new Uint8Array(I,e,t);x.TYPED_ARRAY_SUPPORT?(g=I).__proto__=x.prototype:g=L(g,I);return g}(g,I,e,t):"string"===typeof I?function(g,I,e){"string"===typeof e&&""!==e||(e="utf8");if(!x.isEncoding(e))throw new TypeError('"encoding" must be a valid string encoding');var t=0|D(I,e),C=(g=m(g,t)).write(I,e);C!==t&&(g=g.slice(0,C));return g}(g,I,e):function(g,I){if(h(I)){var e=0|V(I.length);return 0===(g=m(g,e)).length||I.copy(g,0,0,e),g}if(I){if("undefined"!==typeof ArrayBuffer&&I.buffer instanceof ArrayBuffer||"length"in I)return"number"!==typeof I.length||(t=I.length)!==t?m(g,0):L(g,I);if("Buffer"===I.type&&b(I.data))return L(g,I.data)}var t;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(g,I)}function S(g){if("number"!==typeof g)throw new TypeError('"size" argument must be a number');if(g<0)throw new RangeError('"size" argument must not be negative')}function G(g,I){if(S(I),g=m(g,I<0?0:0|V(I)),!x.TYPED_ARRAY_SUPPORT)for(var e=0;e<I;++e)g[e]=0;return g}function L(g,I){var e=I.length<0?0:0|V(I.length);g=m(g,e);for(var t=0;t<e;t+=1)g[t]=255&I[t];return g}function V(g){if(g>=Z())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+Z().toString(16)+" bytes");return 0|g}function h(g){return!(null==g||!g._isBuffer)}function D(g,I){if(h(g))return g.length;if("undefined"!==typeof ArrayBuffer&&"function"===typeof ArrayBuffer.isView&&(ArrayBuffer.isView(g)||g instanceof ArrayBuffer))return g.byteLength;"string"!==typeof g&&(g=""+g);var e=g.length;if(0===e)return 0;for(var t=!1;;)switch(I){case"ascii":case"latin1":case"binary":return e;case"utf8":case"utf-8":case void 0:return tg(g).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*e;case"hex":return e>>>1;case"base64":return Cg(g).length;default:if(t)return tg(g).length;I=(""+I).toLowerCase(),t=!0}}function p(g,I,e){var t=!1;if((void 0===I||I<0)&&(I=0),I>this.length)return"";if((void 0===e||e>this.length)&&(e=this.length),e<=0)return"";if((e>>>=0)<=(I>>>=0))return"";for(g||(g="utf8");;)switch(g){case"hex":return z(this,I,e);case"utf8":case"utf-8":return Y(this,I,e);case"ascii":return w(this,I,e);case"latin1":case"binary":return T(this,I,e);case"base64":return M(this,I,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return O(this,I,e);default:if(t)throw new TypeError("Unknown encoding: "+g);g=(g+"").toLowerCase(),t=!0}}function E(g,I,e){var t=g[I];g[I]=g[e],g[e]=t}function N(g,I,e,t,C){if(0===g.length)return-1;if("string"===typeof e?(t=e,e=0):e>2147483647?e=2147483647:e<-2147483648&&(e=-2147483648),e=+e,isNaN(e)&&(e=C?0:g.length-1),e<0&&(e=g.length+e),e>=g.length){if(C)return-1;e=g.length-1}else if(e<0){if(!C)return-1;e=0}if("string"===typeof I&&(I=x.from(I,t)),h(I))return 0===I.length?-1:W(g,I,e,t,C);if("number"===typeof I)return I&=255,x.TYPED_ARRAY_SUPPORT&&"function"===typeof Uint8Array.prototype.indexOf?C?Uint8Array.prototype.indexOf.call(g,I,e):Uint8Array.prototype.lastIndexOf.call(g,I,e):W(g,[I],e,t,C);throw new TypeError("val must be string, number or Buffer")}function W(g,I,e,t,C){var Q,F=1,B=g.length,n=I.length;if(void 0!==t&&("ucs2"===(t=String(t).toLowerCase())||"ucs-2"===t||"utf16le"===t||"utf-16le"===t)){if(g.length<2||I.length<2)return-1;F=2,B/=2,n/=2,e/=2}function U(g,I){return 1===F?g[I]:g.readUInt16BE(I*F)}if(C){var s=-1;for(Q=e;Q<B;Q++)if(U(g,Q)===U(I,-1===s?0:Q-s)){if(-1===s&&(s=Q),Q-s+1===n)return s*F}else-1!==s&&(Q-=Q-s),s=-1}else for(e+n>B&&(e=B-n),Q=e;Q>=0;Q--){for(var i=!0,c=0;c<n;c++)if(U(g,Q+c)!==U(I,c)){i=!1;break}if(i)return Q}return-1}function f(g,I,e,t){e=Number(e)||0;var C=g.length-e;t?(t=Number(t))>C&&(t=C):t=C;var Q=I.length;if(Q%2!==0)throw new TypeError("Invalid hex string");t>Q/2&&(t=Q/2);for(var F=0;F<t;++F){var B=parseInt(I.substr(2*F,2),16);if(isNaN(B))return F;g[e+F]=B}return F}function X(g,I,e,t){return Qg(tg(I,g.length-e),g,e,t)}function J(g,I,e,t){return Qg(function(g){for(var I=[],e=0;e<g.length;++e)I.push(255&g.charCodeAt(e));return I}(I),g,e,t)}function v(g,I,e,t){return J(g,I,e,t)}function k(g,I,e,t){return Qg(Cg(I),g,e,t)}function H(g,I,e,t){return Qg(function(g,I){for(var e,t,C,Q=[],F=0;F<g.length&&!((I-=2)<0);++F)e=g.charCodeAt(F),t=e>>8,C=e%256,Q.push(C),Q.push(t);return Q}(I,g.length-e),g,e,t)}function M(g,I,e){return 0===I&&e===g.length?o(g):o(g.slice(I,e))}function Y(g,I,e){e=Math.min(g.length,e);for(var t=[],C=I;C<e;){var Q,F,B,n,U=g[C],s=null,i=U>239?4:U>223?3:U>191?2:1;if(C+i<=e)switch(i){case 1:U<128&&(s=U);break;case 2:128===(192&(Q=g[C+1]))&&(n=(31&U)<<6|63&Q)>127&&(s=n);break;case 3:Q=g[C+1],F=g[C+2],128===(192&Q)&&128===(192&F)&&(n=(15&U)<<12|(63&Q)<<6|63&F)>2047&&(n<55296||n>57343)&&(s=n);break;case 4:Q=g[C+1],F=g[C+2],B=g[C+3],128===(192&Q)&&128===(192&F)&&128===(192&B)&&(n=(15&U)<<18|(63&Q)<<12|(63&F)<<6|63&B)>65535&&n<1114112&&(s=n)}null===s?(s=65533,i=1):s>65535&&(s-=65536,t.push(s>>>10&1023|55296),s=56320|1023&s),t.push(s),C+=i}return function(g){var I=g.length;if(I<=4096)return String.fromCharCode.apply(String,g);var e="",t=0;for(;t<I;)e+=String.fromCharCode.apply(String,g.slice(t,t+=4096));return e}(t)}x.TYPED_ARRAY_SUPPORT=void 0===s.TYPED_ARRAY_SUPPORT||s.TYPED_ARRAY_SUPPORT,x.poolSize=8192,x._augment=function(g){return g.__proto__=x.prototype,g},x.from=function(g,I,e){return R(null,g,I,e)},x.TYPED_ARRAY_SUPPORT&&(x.prototype.__proto__=Uint8Array.prototype,x.__proto__=Uint8Array),x.alloc=function(g,I,e){return function(g,I,e,t){return S(I),I<=0?m(g,I):void 0!==e?"string"===typeof t?m(g,I).fill(e,t):m(g,I).fill(e):m(g,I)}(null,g,I,e)},x.allocUnsafe=function(g){return G(null,g)},x.allocUnsafeSlow=function(g){return G(null,g)},x.isBuffer=function(g){return null!=g&&(!!g._isBuffer||Fg(g)||function(g){return"function"===typeof g.readFloatLE&&"function"===typeof g.slice&&Fg(g.slice(0,0))}(g))},x.compare=function(g,I){if(!h(g)||!h(I))throw new TypeError("Arguments must be Buffers");if(g===I)return 0;for(var e=g.length,t=I.length,C=0,Q=Math.min(e,t);C<Q;++C)if(g[C]!==I[C]){e=g[C],t=I[C];break}return e<t?-1:t<e?1:0},x.isEncoding=function(g){switch(String(g).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},x.concat=function(g,I){if(!b(g))throw new TypeError('"list" argument must be an Array of Buffers');if(0===g.length)return x.alloc(0);var e;if(void 0===I)for(I=0,e=0;e<g.length;++e)I+=g[e].length;var t=x.allocUnsafe(I),C=0;for(e=0;e<g.length;++e){var Q=g[e];if(!h(Q))throw new TypeError('"list" argument must be an Array of Buffers');Q.copy(t,C),C+=Q.length}return t},x.byteLength=D,x.prototype._isBuffer=!0,x.prototype.swap16=function(){var g=this.length;if(g%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var I=0;I<g;I+=2)E(this,I,I+1);return this},x.prototype.swap32=function(){var g=this.length;if(g%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var I=0;I<g;I+=4)E(this,I,I+3),E(this,I+1,I+2);return this},x.prototype.swap64=function(){var g=this.length;if(g%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var I=0;I<g;I+=8)E(this,I,I+7),E(this,I+1,I+6),E(this,I+2,I+5),E(this,I+3,I+4);return this},x.prototype.toString=function(){var g=0|this.length;return 0===g?"":0===arguments.length?Y(this,0,g):p.apply(this,arguments)},x.prototype.equals=function(g){if(!h(g))throw new TypeError("Argument must be a Buffer");return this===g||0===x.compare(this,g)},x.prototype.inspect=function(){var g="";return this.length>0&&(g=this.toString("hex",0,50).match(/.{2}/g).join(" "),this.length>50&&(g+=" ... ")),"<Buffer "+g+">"},x.prototype.compare=function(g,I,e,t,C){if(!h(g))throw new TypeError("Argument must be a Buffer");if(void 0===I&&(I=0),void 0===e&&(e=g?g.length:0),void 0===t&&(t=0),void 0===C&&(C=this.length),I<0||e>g.length||t<0||C>this.length)throw new RangeError("out of range index");if(t>=C&&I>=e)return 0;if(t>=C)return-1;if(I>=e)return 1;if(this===g)return 0;for(var Q=(C>>>=0)-(t>>>=0),F=(e>>>=0)-(I>>>=0),B=Math.min(Q,F),n=this.slice(t,C),U=g.slice(I,e),s=0;s<B;++s)if(n[s]!==U[s]){Q=n[s],F=U[s];break}return Q<F?-1:F<Q?1:0},x.prototype.includes=function(g,I,e){return-1!==this.indexOf(g,I,e)},x.prototype.indexOf=function(g,I,e){return N(this,g,I,e,!0)},x.prototype.lastIndexOf=function(g,I,e){return N(this,g,I,e,!1)},x.prototype.write=function(g,I,e,t){if(void 0===I)t="utf8",e=this.length,I=0;else if(void 0===e&&"string"===typeof I)t=I,e=this.length,I=0;else{if(!isFinite(I))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");I|=0,isFinite(e)?(e|=0,void 0===t&&(t="utf8")):(t=e,e=void 0)}var C=this.length-I;if((void 0===e||e>C)&&(e=C),g.length>0&&(e<0||I<0)||I>this.length)throw new RangeError("Attempt to write outside buffer bounds");t||(t="utf8");for(var Q=!1;;)switch(t){case"hex":return f(this,g,I,e);case"utf8":case"utf-8":return X(this,g,I,e);case"ascii":return J(this,g,I,e);case"latin1":case"binary":return v(this,g,I,e);case"base64":return k(this,g,I,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return H(this,g,I,e);default:if(Q)throw new TypeError("Unknown encoding: "+t);t=(""+t).toLowerCase(),Q=!0}},x.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function w(g,I,e){var t="";e=Math.min(g.length,e);for(var C=I;C<e;++C)t+=String.fromCharCode(127&g[C]);return t}function T(g,I,e){var t="";e=Math.min(g.length,e);for(var C=I;C<e;++C)t+=String.fromCharCode(g[C]);return t}function z(g,I,e){var t=g.length;(!I||I<0)&&(I=0),(!e||e<0||e>t)&&(e=t);for(var C="",Q=I;Q<e;++Q)C+=eg(g[Q]);return C}function O(g,I,e){for(var t=g.slice(I,e),C="",Q=0;Q<t.length;Q+=2)C+=String.fromCharCode(t[Q]+256*t[Q+1]);return C}function K(g,I,e){if(g%1!==0||g<0)throw new RangeError("offset is not uint");if(g+I>e)throw new RangeError("Trying to access beyond buffer length")}function j(g,I,e,t,C,Q){if(!h(g))throw new TypeError('"buffer" argument must be a Buffer instance');if(I>C||I<Q)throw new RangeError('"value" argument is out of bounds');if(e+t>g.length)throw new RangeError("Index out of range")}function P(g,I,e,t){I<0&&(I=65535+I+1);for(var C=0,Q=Math.min(g.length-e,2);C<Q;++C)g[e+C]=(I&255<<8*(t?C:1-C))>>>8*(t?C:1-C)}function _(g,I,e,t){I<0&&(I=4294967295+I+1);for(var C=0,Q=Math.min(g.length-e,4);C<Q;++C)g[e+C]=I>>>8*(t?C:3-C)&255}function q(g,I,e,t,C,Q){if(e+t>g.length)throw new RangeError("Index out of range");if(e<0)throw new RangeError("Index out of range")}function $(g,I,e,t,C){return C||q(g,0,e,4),u(g,I,e,t,23,4),e+4}function gg(g,I,e,t,C){return C||q(g,0,e,8),u(g,I,e,t,52,8),e+8}x.prototype.slice=function(g,I){var e,t=this.length;if((g=~~g)<0?(g+=t)<0&&(g=0):g>t&&(g=t),(I=void 0===I?t:~~I)<0?(I+=t)<0&&(I=0):I>t&&(I=t),I<g&&(I=g),x.TYPED_ARRAY_SUPPORT)(e=this.subarray(g,I)).__proto__=x.prototype;else{var C=I-g;e=new x(C,void 0);for(var Q=0;Q<C;++Q)e[Q]=this[Q+g]}return e},x.prototype.readUIntLE=function(g,I,e){g|=0,I|=0,e||K(g,I,this.length);for(var t=this[g],C=1,Q=0;++Q<I&&(C*=256);)t+=this[g+Q]*C;return t},x.prototype.readUIntBE=function(g,I,e){g|=0,I|=0,e||K(g,I,this.length);for(var t=this[g+--I],C=1;I>0&&(C*=256);)t+=this[g+--I]*C;return t},x.prototype.readUInt8=function(g,I){return I||K(g,1,this.length),this[g]},x.prototype.readUInt16LE=function(g,I){return I||K(g,2,this.length),this[g]|this[g+1]<<8},x.prototype.readUInt16BE=function(g,I){return I||K(g,2,this.length),this[g]<<8|this[g+1]},x.prototype.readUInt32LE=function(g,I){return I||K(g,4,this.length),(this[g]|this[g+1]<<8|this[g+2]<<16)+16777216*this[g+3]},x.prototype.readUInt32BE=function(g,I){return I||K(g,4,this.length),16777216*this[g]+(this[g+1]<<16|this[g+2]<<8|this[g+3])},x.prototype.readIntLE=function(g,I,e){g|=0,I|=0,e||K(g,I,this.length);for(var t=this[g],C=1,Q=0;++Q<I&&(C*=256);)t+=this[g+Q]*C;return t>=(C*=128)&&(t-=Math.pow(2,8*I)),t},x.prototype.readIntBE=function(g,I,e){g|=0,I|=0,e||K(g,I,this.length);for(var t=I,C=1,Q=this[g+--t];t>0&&(C*=256);)Q+=this[g+--t]*C;return Q>=(C*=128)&&(Q-=Math.pow(2,8*I)),Q},x.prototype.readInt8=function(g,I){return I||K(g,1,this.length),128&this[g]?-1*(255-this[g]+1):this[g]},x.prototype.readInt16LE=function(g,I){I||K(g,2,this.length);var e=this[g]|this[g+1]<<8;return 32768&e?4294901760|e:e},x.prototype.readInt16BE=function(g,I){I||K(g,2,this.length);var e=this[g+1]|this[g]<<8;return 32768&e?4294901760|e:e},x.prototype.readInt32LE=function(g,I){return I||K(g,4,this.length),this[g]|this[g+1]<<8|this[g+2]<<16|this[g+3]<<24},x.prototype.readInt32BE=function(g,I){return I||K(g,4,this.length),this[g]<<24|this[g+1]<<16|this[g+2]<<8|this[g+3]},x.prototype.readFloatLE=function(g,I){return I||K(g,4,this.length),d(this,g,!0,23,4)},x.prototype.readFloatBE=function(g,I){return I||K(g,4,this.length),d(this,g,!1,23,4)},x.prototype.readDoubleLE=function(g,I){return I||K(g,8,this.length),d(this,g,!0,52,8)},x.prototype.readDoubleBE=function(g,I){return I||K(g,8,this.length),d(this,g,!1,52,8)},x.prototype.writeUIntLE=function(g,I,e,t){(g=+g,I|=0,e|=0,t)||j(this,g,I,e,Math.pow(2,8*e)-1,0);var C=1,Q=0;for(this[I]=255&g;++Q<e&&(C*=256);)this[I+Q]=g/C&255;return I+e},x.prototype.writeUIntBE=function(g,I,e,t){(g=+g,I|=0,e|=0,t)||j(this,g,I,e,Math.pow(2,8*e)-1,0);var C=e-1,Q=1;for(this[I+C]=255&g;--C>=0&&(Q*=256);)this[I+C]=g/Q&255;return I+e},x.prototype.writeUInt8=function(g,I,e){return g=+g,I|=0,e||j(this,g,I,1,255,0),x.TYPED_ARRAY_SUPPORT||(g=Math.floor(g)),this[I]=255&g,I+1},x.prototype.writeUInt16LE=function(g,I,e){return g=+g,I|=0,e||j(this,g,I,2,65535,0),x.TYPED_ARRAY_SUPPORT?(this[I]=255&g,this[I+1]=g>>>8):P(this,g,I,!0),I+2},x.prototype.writeUInt16BE=function(g,I,e){return g=+g,I|=0,e||j(this,g,I,2,65535,0),x.TYPED_ARRAY_SUPPORT?(this[I]=g>>>8,this[I+1]=255&g):P(this,g,I,!1),I+2},x.prototype.writeUInt32LE=function(g,I,e){return g=+g,I|=0,e||j(this,g,I,4,4294967295,0),x.TYPED_ARRAY_SUPPORT?(this[I+3]=g>>>24,this[I+2]=g>>>16,this[I+1]=g>>>8,this[I]=255&g):_(this,g,I,!0),I+4},x.prototype.writeUInt32BE=function(g,I,e){return g=+g,I|=0,e||j(this,g,I,4,4294967295,0),x.TYPED_ARRAY_SUPPORT?(this[I]=g>>>24,this[I+1]=g>>>16,this[I+2]=g>>>8,this[I+3]=255&g):_(this,g,I,!1),I+4},x.prototype.writeIntLE=function(g,I,e,t){if(g=+g,I|=0,!t){var C=Math.pow(2,8*e-1);j(this,g,I,e,C-1,-C)}var Q=0,F=1,B=0;for(this[I]=255&g;++Q<e&&(F*=256);)g<0&&0===B&&0!==this[I+Q-1]&&(B=1),this[I+Q]=(g/F>>0)-B&255;return I+e},x.prototype.writeIntBE=function(g,I,e,t){if(g=+g,I|=0,!t){var C=Math.pow(2,8*e-1);j(this,g,I,e,C-1,-C)}var Q=e-1,F=1,B=0;for(this[I+Q]=255&g;--Q>=0&&(F*=256);)g<0&&0===B&&0!==this[I+Q+1]&&(B=1),this[I+Q]=(g/F>>0)-B&255;return I+e},x.prototype.writeInt8=function(g,I,e){return g=+g,I|=0,e||j(this,g,I,1,127,-128),x.TYPED_ARRAY_SUPPORT||(g=Math.floor(g)),g<0&&(g=255+g+1),this[I]=255&g,I+1},x.prototype.writeInt16LE=function(g,I,e){return g=+g,I|=0,e||j(this,g,I,2,32767,-32768),x.TYPED_ARRAY_SUPPORT?(this[I]=255&g,this[I+1]=g>>>8):P(this,g,I,!0),I+2},x.prototype.writeInt16BE=function(g,I,e){return g=+g,I|=0,e||j(this,g,I,2,32767,-32768),x.TYPED_ARRAY_SUPPORT?(this[I]=g>>>8,this[I+1]=255&g):P(this,g,I,!1),I+2},x.prototype.writeInt32LE=function(g,I,e){return g=+g,I|=0,e||j(this,g,I,4,2147483647,-2147483648),x.TYPED_ARRAY_SUPPORT?(this[I]=255&g,this[I+1]=g>>>8,this[I+2]=g>>>16,this[I+3]=g>>>24):_(this,g,I,!0),I+4},x.prototype.writeInt32BE=function(g,I,e){return g=+g,I|=0,e||j(this,g,I,4,2147483647,-2147483648),g<0&&(g=4294967295+g+1),x.TYPED_ARRAY_SUPPORT?(this[I]=g>>>24,this[I+1]=g>>>16,this[I+2]=g>>>8,this[I+3]=255&g):_(this,g,I,!1),I+4},x.prototype.writeFloatLE=function(g,I,e){return $(this,g,I,!0,e)},x.prototype.writeFloatBE=function(g,I,e){return $(this,g,I,!1,e)},x.prototype.writeDoubleLE=function(g,I,e){return gg(this,g,I,!0,e)},x.prototype.writeDoubleBE=function(g,I,e){return gg(this,g,I,!1,e)},x.prototype.copy=function(g,I,e,t){if(e||(e=0),t||0===t||(t=this.length),I>=g.length&&(I=g.length),I||(I=0),t>0&&t<e&&(t=e),t===e)return 0;if(0===g.length||0===this.length)return 0;if(I<0)throw new RangeError("targetStart out of bounds");if(e<0||e>=this.length)throw new RangeError("sourceStart out of bounds");if(t<0)throw new RangeError("sourceEnd out of bounds");t>this.length&&(t=this.length),g.length-I<t-e&&(t=g.length-I+e);var C,Q=t-e;if(this===g&&e<I&&I<t)for(C=Q-1;C>=0;--C)g[C+I]=this[C+e];else if(Q<1e3||!x.TYPED_ARRAY_SUPPORT)for(C=0;C<Q;++C)g[C+I]=this[C+e];else Uint8Array.prototype.set.call(g,this.subarray(e,e+Q),I);return Q},x.prototype.fill=function(g,I,e,t){if("string"===typeof g){if("string"===typeof I?(t=I,I=0,e=this.length):"string"===typeof e&&(t=e,e=this.length),1===g.length){var C=g.charCodeAt(0);C<256&&(g=C)}if(void 0!==t&&"string"!==typeof t)throw new TypeError("encoding must be a string");if("string"===typeof t&&!x.isEncoding(t))throw new TypeError("Unknown encoding: "+t)}else"number"===typeof g&&(g&=255);if(I<0||this.length<I||this.length<e)throw new RangeError("Out of range index");if(e<=I)return this;var Q;if(I>>>=0,e=void 0===e?this.length:e>>>0,g||(g=0),"number"===typeof g)for(Q=I;Q<e;++Q)this[Q]=g;else{var F=h(g)?g:tg(new x(g,t).toString()),B=F.length;for(Q=0;Q<e-I;++Q)this[Q+I]=F[Q%B]}return this};var Ig=/[^+\/0-9A-Za-z-_]/g;function eg(g){return g<16?"0"+g.toString(16):g.toString(16)}function tg(g,I){var e;I=I||1/0;for(var t=g.length,C=null,Q=[],F=0;F<t;++F){if((e=g.charCodeAt(F))>55295&&e<57344){if(!C){if(e>56319){(I-=3)>-1&&Q.push(239,191,189);continue}if(F+1===t){(I-=3)>-1&&Q.push(239,191,189);continue}C=e;continue}if(e<56320){(I-=3)>-1&&Q.push(239,191,189),C=e;continue}e=65536+(C-55296<<10|e-56320)}else C&&(I-=3)>-1&&Q.push(239,191,189);if(C=null,e<128){if((I-=1)<0)break;Q.push(e)}else if(e<2048){if((I-=2)<0)break;Q.push(e>>6|192,63&e|128)}else if(e<65536){if((I-=3)<0)break;Q.push(e>>12|224,e>>6&63|128,63&e|128)}else{if(!(e<1114112))throw new Error("Invalid code point");if((I-=4)<0)break;Q.push(e>>18|240,e>>12&63|128,e>>6&63|128,63&e|128)}}return Q}function Cg(g){return function(g){var I,e,t,C,Q,F;l||a();var B=g.length;if(B%4>0)throw new Error("Invalid string. Length must be a multiple of 4");Q="="===g[B-2]?2:"="===g[B-1]?1:0,F=new A(3*B/4-Q),t=Q>0?B-4:B;var n=0;for(I=0,e=0;I<t;I+=4,e+=3)C=c[g.charCodeAt(I)]<<18|c[g.charCodeAt(I+1)]<<12|c[g.charCodeAt(I+2)]<<6|c[g.charCodeAt(I+3)],F[n++]=C>>16&255,F[n++]=C>>8&255,F[n++]=255&C;return 2===Q?(C=c[g.charCodeAt(I)]<<2|c[g.charCodeAt(I+1)]>>4,F[n++]=255&C):1===Q&&(C=c[g.charCodeAt(I)]<<10|c[g.charCodeAt(I+1)]<<4|c[g.charCodeAt(I+2)]>>2,F[n++]=C>>8&255,F[n++]=255&C),F}(function(g){if((g=function(g){return g.trim?g.trim():g.replace(/^\s+|\s+$/g,"")}(g).replace(Ig,"")).length<2)return"";for(;g.length%4!==0;)g+="=";return g}(g))}function Qg(g,I,e,t){for(var C=0;C<t&&!(C+e>=I.length||C>=g.length);++C)I[C+e]=g[C];return C}function Fg(g){return!!g.constructor&&"function"===typeof g.constructor.isBuffer&&g.constructor.isBuffer(g)}U.a.isValid=function(g){try{return!!new U.a(g)}catch(I){return!1}};var Bg=[65472,65473,65474,65475,65477,65478,65479,65480,65481,65482,65483,65484,65485,65486,65487],ng=function(g){if(this.data=null,this.width=null,this.height=null,this.data=g,65496!==g.readUInt16BE(0))throw new Error("SOI not found in JPEG");for(var I,e=2;e<g.length&&(I=g.readUInt16BE(e),e+=2,!Bg.includes(I));)e+=g.readUInt16BE(e);if(!Bg.includes(I))throw new Error("Invalid JPEG.");e+=3,this.height=g.readUInt16BE(e),e+=2,this.width=g.readUInt16BE(e)};ng.isValid=function(g){if(!g||!x.isBuffer(g)||65496!==g.readUInt16BE(0))return!1;for(var I,e=2;e<g.length&&(I=g.readUInt16BE(e),e+=2,!Bg.includes(I));)e+=g.readUInt16BE(e);return!!Bg.includes(I)};var Ug=function(g){var I=(void 0===g?{}:g).limit,e=void 0===I?100:I,t={},C=[];return{get:function(g){return t[g]},set:function(g,I){C.push(g),C.length>e&&delete t[C.shift()],t[g]=I},reset:function(){t={},C=[]},length:function(){return C.length}}}({limit:30}),sg=function(){var g=C()(F.a.mark((function g(I,e){var t,C;return F.a.wrap((function(g){for(;;)switch(g.prev=g.next){case 0:return g.next=2,n()(I,e);case 2:return t=g.sent,g.next=5,t.buffer?t.buffer():t.arrayBuffer();case 5:return C=g.sent,g.abrupt("return","Buffer"===C.constructor.name?C:x.from(C));case 7:case"end":return g.stop()}}),g)})));return function(I,e){return g.apply(this,arguments)}}();function ig(g,I){switch(I.toLowerCase()){case"jpg":case"jpeg":return new ng(g);case"png":return new U.a(g);default:return null}}var cg=function(g){var I=function(g){var I;return ng.isValid(g)?I="jpg":U.a.isValid(g)&&(I="png"),I}(g);return I?new Promise((function(e){return e(ig(g,I))})):Promise.resolve()},Ag=function(g){var I=137===g[0]&&80===g[1]&&78===g[2]&&71===g[3]&&13===g[4]&&10===g[5]&&26===g[6]&&10===g[7],e=255===g[0]&&216===g[1]&&255===g[2],t="";if(I)t="png";else{if(!e)throw new Error("Not valid image extension");t="jpg"}return t},lg=function(){var g=C()(F.a.mark((function g(I){var e,t,C,Q,B,n,U;return F.a.wrap((function(g){for(;;)switch(g.prev=g.next){case 0:e=I.uri,t=I.body,C=I.headers,Q=I.method,B=void 0===Q?"GET":Q,g.next=7;break;case 4:g.t0=g.sent,g.next=10;break;case 7:return g.next=9,sg(e,{body:t,headers:C,method:B});case 9:g.t0=g.sent;case 10:return n=g.t0,U=Ag(n),g.abrupt("return",ig(n,U));case 13:case"end":return g.stop()}}),g)})));return function(I){return g.apply(this,arguments)}}(),ag=function(g,I){var e,t=(void 0===I?{}:I).cache,C=void 0===t||t,Q=g.data?g.data.toString():g.uri;if(C&&Ug.get(Q))return Ug.get(Q);if(!(e=function(g){var I=g.uri;return/^data:image\/[a-zA-Z]*;base64,[^"]*/g.test(I)}(g)?function(g){var I=g.uri,e=/^data:image\/([a-zA-Z]*);base64,([^"]*)/g.exec(I),t=e[1],C=e[2];if(!function(g){var I=g.toLowerCase();return"jpg"===I||"jpeg"===I||"png"===I}(t))throw new Error("Base64 image invalid format: "+t);return new Promise((function(g){return g(ig(x.from(C,"base64"),t))}))}(g):x.isBuffer(g)?cg(g):"object"===typeof g&&g.data?function(g){if(g.data&&g.format)return new Promise((function(I){return I(ig(g.data,g.format))}));throw new Error("Invalid data given for local file: "+JSON.stringify(g))}(g):lg(g)))throw new Error("Cannot resolve image");return C&&Ug.set(Q,e),e}}.call(this,e(67))},function(g,I,e){"use strict";var t=e(43).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=t(e(53)),F=C.propEq("type"),B=F(Q.Svg),n=F(Q.Note),U=F(Q.Image),s=F(Q.Canvas),i=C.ifElse(C.anyPass([B,n,U,s]),C.always(!1),C.pathOr(!0,["props","wrap"]));I.default=i},function(g,I,e){"use strict";var t=e(37).default,C=e(43).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=C(e(53)),B=t(e(804)),n=Q.propEq("type"),U=n(F.Svg),s=n(F.Text),i=Q.complement(U),c=Q.complement(s),A=function g(I,e){if(function(g){return s(g)&&!g.lines}(I)){var t=I.box.width-(I.box.paddingRight+I.box.paddingLeft),C=I.box.height-(I.box.paddingTop+I.box.paddingBottom);I.lines=(0,B.default)(I,t,C,e)}if(function(g){return i(g)&&c(g)}(I)){return Q.evolve({children:Q.map((function(I){return g(I,e)}))})(I)}return I};I.default=A},function(g,I,e){"use strict";var t=e(37).default,C=e(43).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(770)),B=t(e(787)),n=t(e(793)),U=t(e(796)),s=t(e(794)),i=t(e(795)),c=t(e(798)),A=t(e(1625)),l={linebreaker:B.default,justification:n.default,textDecoration:U.default,scriptItemizer:s.default,wordHyphenation:i.default,fontSubstitution:c.default},a=(0,F.default)(l),r=Q.path(["style","maxLines"]),o=Q.path(["style","textOverflow"]),d=Q.curryN(4,(function(g,I,e,t){var C=(0,A.default)(t,g),F=function(g,I,e){return{x:0,y:0,width:g,maxLines:r(e),height:I||1/0,truncateMode:o(e)}}(I,e,g),B=function(g,I){return{hyphenationPenalty:I.props.hyphenationPenalty,shrinkWhitespaceFactor:{before:-.5,after:-.5},hyphenationCallback:I.props.hyphenationCallback||(null===g||void 0===g?void 0:g.getHyphenationCallback())||null}}(t,g),n=a(C,F,B);return Q.reduce(Q.concat,[],n)}));I.default=d},function(g,I,e){"use strict";var t=e(43).default,C=e(37).default;I.__esModule=!0,I.default=void 0;var Q=C(e(348)),F=t(e(20)),B=t(e(53)),n=F.propEq("type",B.Svg),U=F.compose(F.pick(["color","fontFamily","fontSize","fontStyle","fontWeight","letterSpacing","opacity","textDecoration","textTransform","lineHeight","textAlign","visibility","wordSpacing"]),F.propOr({},"style")),s=function(g){return F.evolve({style:function(I){return function(g,I){var e=(0,Q.default)({},g);return Object.entries(I).forEach((function(I){var t=I[0],C=I[1];e[t]=function(g,I,e){switch(g){case"textDecoration":return[e,I].filter((function(g){return g&&"none"!==g})).join(" ");default:return I}}(t,C,g[t])})),e}(g,I)}})},i=function g(I){if(n(I))return I;var e=U(I),t=F.compose(g,s(e));return F.evolve({children:F.map(t)})(I)};I.default=i},function(g,I,e){"use strict";var t=e(37).default,C=e(43).default;I.__esModule=!0,I.resolvePageDimensions=I.default=void 0;var Q=C(e(20)),F=t(e(104)),B=C(e(53)),n=t(e(552)),U=t(e(349)),s=t(e(1627)),i=t(e(1628)),c=t(e(1629)),A=t(e(1630)),l=t(e(1631)),a=t(e(1632)),r=t(e(1633)),o=t(e(1634)),d=t(e(1635)),u=t(e(1636)),y=t(e(1637)),b=t(e(1638)),Z=t(e(1639)),m=t(e(1640)),x=t(e(1641)),R=t(e(1642)),S=e(1643),G=e(1644),L=e(1645),V=e(1646),h=e(1647),D=t(e(1648)),p=t(e(1649)),E=t(e(1652)),N=t(e(1654)),W=F.default.Config.create();W.setPointScaleFactor(0);var f=Q.propEq("type"),X=f(B.Svg),J=f(B.Text),v=f(B.Note),k=f(B.Page),H=f(B.Image),M=f(B.Canvas),Y=f(B.TextInstance),w=Q.tap((function(g){Q.compose(function(g){var I=k(g)?g.box.height:g.style.height;return(0,h.setHeight)(I)}(g),(0,h.setWidth)(g.style.width),(0,h.setMinWidth)(g.style.minWidth),(0,h.setMaxWidth)(g.style.maxWidth),(0,h.setMinHeight)(g.style.minHeight),(0,h.setMaxHeight)(g.style.maxHeight),(0,S.setMarginTop)(g.style.marginTop),(0,S.setMarginRight)(g.style.marginRight),(0,S.setMarginBottom)(g.style.marginBottom),(0,S.setMarginLeft)(g.style.marginLeft),(0,G.setPaddingTop)(g.style.paddingTop),(0,G.setPaddingRight)(g.style.paddingRight),(0,G.setPaddingBottom)(g.style.paddingBottom),(0,G.setPaddingLeft)(g.style.paddingLeft),(0,m.default)(g.style.position),(0,V.setPositionTop)(g.style.top),(0,V.setPositionRight)(g.style.right),(0,V.setPositionBottom)(g.style.bottom),(0,V.setPositionLeft)(g.style.left),(0,L.setBorderTop)(g.style.borderTopWidth),(0,L.setBorderRight)(g.style.borderRightWidth),(0,L.setBorderBottom)(g.style.borderBottomWidth),(0,L.setBorderLeft)(g.style.borderLeftWidth),(0,A.default)(g.style.display),(0,x.default)(g.style.flexDirection),(0,d.default)(g.style.alignSelf),(0,Z.default)(g.style.alignContent),(0,u.default)(g.style.alignItems),(0,R.default)(g.style.justifyContent),(0,a.default)(g.style.flexWrap),(0,l.default)(g.style.overflow),(0,b.default)(g.style.aspectRatio),(0,o.default)(g.style.flexBasis),(0,r.default)(g.style.flexGrow),(0,y.default)(g.style.flexShrink))(g)})),T=Q.complement(J),z=Q.complement(v),O=Q.complement(X),K=Q.complement(Y),j=Q.allPass([T,z,O]),P=function g(I,e){return function(t){var C,B=F.default.Node.createWithConfig(W);return Q.compose(function(g,I){return function(e){var t=e._yogaNode;return J(e)&&t.setMeasureFunc((0,p.default)(g,e,I)),H(e)&&t.setMeasureFunc((0,E.default)(g,e)),M(e)&&t.setMeasureFunc((0,N.default)(g,e)),X(e)&&t.setMeasureFunc((0,D.default)(g,e)),e}}(I,e),Q.when(j,Q.evolve({children:Q.map(Q.compose((C=B,Q.tap((function(g){return C.insertChild(g._yogaNode,C.getChildCount())}))),g(I,e)))})),w,Q.assoc("_yogaNode",B))(t)}},_=function(g){return g._yogaNode.calculateLayout(),g},q=function g(I){return Q.evolve({children:Q.map(Q.when(K,g)),box:Q.always(Q.mergeAll([(0,U.default)(I),(0,n.default)(I),(0,c.default)(I),(0,s.default)(I),(0,i.default)(I)]))})(I)},$=function g(I){return Q.compose(Q.dissoc("_yogaNode"),Q.evolve({children:Q.map(g)}))(I)},gg=function(g){return g._yogaNode&&g._yogaNode.freeRecursive(),g},Ig=function(g,I){return Q.ifElse(Q.isNil,Q.always(null),Q.compose($,gg,q,_,P(g,I)))(g)};I.resolvePageDimensions=Ig;var eg=function(g,I){return Q.evolve({children:Q.map((function(g){return Ig(g,I)}))})(g)};I.default=eg},function(g,I,e){"use strict";var t=e(43).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=C.pathSatisfies(C.isNil,["box","height"]);I.default=Q},function(g,I,e){g.exports=function(g,I,e,t,C){for(I=I.split?I.split("."):I,t=0;t<I.length;t++)g=g?g[I[t]]:C;return g===C?e:g}},function(g,I,e){g.exports=e(1664)()},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0}),I.canDragX=function(g){return"both"===g.props.axis||"x"===g.props.axis},I.canDragY=function(g){return"both"===g.props.axis||"y"===g.props.axis},I.createCoreData=function(g,I,e){var C=g.state,F=!(0,t.isNum)(C.lastX),B=Q(g);return F?{node:B,deltaX:0,deltaY:0,lastX:I,lastY:e,x:I,y:e}:{node:B,deltaX:I-C.lastX,deltaY:e-C.lastY,lastX:C.lastX,lastY:C.lastY,x:I,y:e}},I.createDraggableData=function(g,I){var e=g.props.scale;return{node:I.node,x:g.state.x+I.deltaX/e,y:g.state.y+I.deltaY/e,deltaX:I.deltaX/e,deltaY:I.deltaY/e,lastX:g.state.x,lastY:g.state.y}},I.getBoundPosition=function(g,I,e){if(!g.props.bounds)return[I,e];var F=g.props.bounds;F="string"===typeof F?F:function(g){return{left:g.left,top:g.top,right:g.right,bottom:g.bottom}}(F);var B=Q(g);if("string"===typeof F){var n,U=B.ownerDocument,s=U.defaultView;if(!((n="parent"===F?B.parentNode:U.querySelector(F))instanceof s.HTMLElement))throw new Error('Bounds selector "'+F+'" could not find an element.');var i=n,c=s.getComputedStyle(B),A=s.getComputedStyle(i);F={left:-B.offsetLeft+(0,t.int)(A.paddingLeft)+(0,t.int)(c.marginLeft),top:-B.offsetTop+(0,t.int)(A.paddingTop)+(0,t.int)(c.marginTop),right:(0,C.innerWidth)(i)-(0,C.outerWidth)(B)-B.offsetLeft+(0,t.int)(A.paddingRight)-(0,t.int)(c.marginRight),bottom:(0,C.innerHeight)(i)-(0,C.outerHeight)(B)-B.offsetTop+(0,t.int)(A.paddingBottom)-(0,t.int)(c.marginBottom)}}(0,t.isNum)(F.right)&&(I=Math.min(I,F.right));(0,t.isNum)(F.bottom)&&(e=Math.min(e,F.bottom));(0,t.isNum)(F.left)&&(I=Math.max(I,F.left));(0,t.isNum)(F.top)&&(e=Math.max(e,F.top));return[I,e]},I.getControlPosition=function(g,I,e){var t="number"===typeof I?(0,C.getTouch)(g,I):null;if("number"===typeof I&&!t)return null;var F=Q(e),B=e.props.offsetParent||F.offsetParent||F.ownerDocument.body;return(0,C.offsetXYFromParent)(t||g,B,e.props.scale)},I.snapToGrid=function(g,I,e){var t=Math.round(I/g[0])*g[0],C=Math.round(e/g[1])*g[1];return[t,C]};var t=e(420),C=e(554);function Q(g){var I=g.findDOMNode();if(!I)throw new Error("<DraggableCore>: Unmounted during event!");return I}},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0}),I.default=function(){void 0}},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(4),e(14)),B=e(1677),n=e(1729),U=e(1783),s=e(164),i=e(153),c=e(21),A=e(30),l=Q.forwardRef((function(g,I){var e=g.children,B=g.classes,n=g.className,U=(g.color,g.component),c=void 0===U?"label":U,l=(g.disabled,g.error,g.filled,g.focused,g.required,Object(C.a)(g,["children","classes","className","color","component","disabled","error","filled","focused","required"])),a=Object(i.a)(),r=Object(s.a)({props:g,muiFormControl:a,states:["color","required","focused","disabled","error","filled"]});return Q.createElement(c,Object(t.a)({className:Object(F.default)(B.root,B["color".concat(Object(A.a)(r.color||"primary"))],n,r.disabled&&B.disabled,r.error&&B.error,r.filled&&B.filled,r.focused&&B.focused,r.required&&B.required),ref:I},l),e,r.required&&Q.createElement("span",{"aria-hidden":!0,className:Object(F.default)(B.asterisk,r.error&&B.error)},"\u2009","*"))})),a=Object(c.a)((function(g){return{root:Object(t.a)({color:g.palette.text.secondary},g.typography.body1,{lineHeight:1,padding:0,"&$focused":{color:g.palette.primary.main},"&$disabled":{color:g.palette.text.disabled},"&$error":{color:g.palette.error.main}}),colorSecondary:{"&$focused":{color:g.palette.secondary.main}},focused:{},disabled:{},error:{},filled:{},required:{},asterisk:{"&$error":{color:g.palette.error.main}}}}),{name:"MuiFormLabel"})(l),r=Q.forwardRef((function(g,I){var e=g.classes,B=g.className,n=g.disableAnimation,U=void 0!==n&&n,c=(g.margin,g.shrink),A=(g.variant,Object(C.a)(g,["classes","className","disableAnimation","margin","shrink","variant"])),l=Object(i.a)(),r=c;"undefined"===typeof r&&l&&(r=l.filled||l.focused||l.adornedStart);var o=Object(s.a)({props:g,muiFormControl:l,states:["margin","variant"]});return Q.createElement(a,Object(t.a)({"data-shrink":r,className:Object(F.default)(e.root,B,l&&e.formControl,!U&&e.animated,r&&e.shrink,"dense"===o.margin&&e.marginDense,{filled:e.filled,outlined:e.outlined}[o.variant]),classes:{focused:e.focused,disabled:e.disabled,error:e.error,required:e.required,asterisk:e.asterisk},ref:I},A))})),o=Object(c.a)((function(g){return{root:{display:"block",transformOrigin:"top left"},focused:{},disabled:{},error:{},required:{},asterisk:{},formControl:{position:"absolute",left:0,top:0,transform:"translate(0, 24px) scale(1)"},marginDense:{transform:"translate(0, 21px) scale(1)"},shrink:{transform:"translate(0, 1.5px) scale(0.75)",transformOrigin:"top left"},animated:{transition:g.transitions.create(["color","transform"],{duration:g.transitions.duration.shorter,easing:g.transitions.easing.easeOut})},filled:{zIndex:1,pointerEvents:"none",transform:"translate(12px, 20px) scale(1)","&$marginDense":{transform:"translate(12px, 17px) scale(1)"},"&$shrink":{transform:"translate(12px, 10px) scale(0.75)","&$marginDense":{transform:"translate(12px, 7px) scale(0.75)"}}},outlined:{zIndex:1,pointerEvents:"none",transform:"translate(14px, 20px) scale(1)","&$marginDense":{transform:"translate(14px, 12px) scale(1)"},"&$shrink":{transform:"translate(14px, -6px) scale(0.75)"}}}}),{name:"MuiInputLabel"})(r),d=e(1728),u=e(1744),y=e(1782),b={standard:B.a,filled:n.a,outlined:U.a},Z=Q.forwardRef((function(g,I){var e=g.autoComplete,B=g.autoFocus,n=void 0!==B&&B,U=g.children,s=g.classes,i=g.className,c=g.color,A=void 0===c?"primary":c,l=g.defaultValue,a=g.disabled,r=void 0!==a&&a,Z=g.error,m=void 0!==Z&&Z,x=g.FormHelperTextProps,R=g.fullWidth,S=void 0!==R&&R,G=g.helperText,L=g.hiddenLabel,V=g.id,h=g.InputLabelProps,D=g.inputProps,p=g.InputProps,E=g.inputRef,N=g.label,W=g.multiline,f=void 0!==W&&W,X=g.name,J=g.onBlur,v=g.onChange,k=g.onFocus,H=g.placeholder,M=g.required,Y=void 0!==M&&M,w=g.rows,T=g.rowsMax,z=g.select,O=void 0!==z&&z,K=g.SelectProps,j=g.type,P=g.value,_=g.variant,q=void 0===_?"standard":_,$=Object(C.a)(g,["autoComplete","autoFocus","children","classes","className","color","defaultValue","disabled","error","FormHelperTextProps","fullWidth","helperText","hiddenLabel","id","InputLabelProps","inputProps","InputProps","inputRef","label","multiline","name","onBlur","onChange","onFocus","placeholder","required","rows","rowsMax","select","SelectProps","type","value","variant"]);var gg={};if("outlined"===q&&(h&&"undefined"!==typeof h.shrink&&(gg.notched=h.shrink),N)){var Ig,eg=null!==(Ig=null===h||void 0===h?void 0:h.required)&&void 0!==Ig?Ig:Y;gg.label=Q.createElement(Q.Fragment,null,N,eg&&"\xa0*")}O&&(K&&K.native||(gg.id=void 0),gg["aria-describedby"]=void 0);var tg=G&&V?"".concat(V,"-helper-text"):void 0,Cg=N&&V?"".concat(V,"-label"):void 0,Qg=b[q],Fg=Q.createElement(Qg,Object(t.a)({"aria-describedby":tg,autoComplete:e,autoFocus:n,defaultValue:l,fullWidth:S,multiline:f,name:X,rows:w,rowsMax:T,type:j,value:P,id:V,inputRef:E,onBlur:J,onChange:v,onFocus:k,placeholder:H,inputProps:D},gg,p));return Q.createElement(d.a,Object(t.a)({className:Object(F.default)(s.root,i),disabled:r,error:m,fullWidth:S,hiddenLabel:L,ref:I,required:Y,color:A,variant:q},$),N&&Q.createElement(o,Object(t.a)({htmlFor:V,id:Cg},h),N),O?Q.createElement(y.a,Object(t.a)({"aria-describedby":tg,id:V,labelId:Cg,value:P,input:Fg},K),U):Fg,G&&Q.createElement(u.a,Object(t.a)({id:tg},x),G))}));I.a=Object(c.a)({root:{}},{name:"MuiTextField"})(Z)},function(g,I,e){"use strict";function t(g){return(t="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"===typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g})(g)}e.d(I,"a",(function(){return t}))},function(g,I,e){"use strict";g.exports=e(1164)},function(g,I,e){"use strict";function t(g){var I,e=g.Symbol;return"function"===typeof e?e.observable?I=e.observable:(I=e("observable"),e.observable=I):I="@@observable",I}e.d(I,"a",(function(){return t}))},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0}),Object.defineProperty(I,"Carousel",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(I,"Thumbs",{enumerable:!0,get:function(){return C.default}});var t=Q(e(1181)),C=Q(e(671));function Q(g){return g&&g.__esModule?g:{default:g}}},function(g,I,e){"use strict";(function(I){var e="__global_unique_id__";g.exports=function(){return I[e]=(I[e]||0)+1}}).call(this,e(67))},function(g,I,e){"undefined"!=typeof self&&self,g.exports=function(g){var I={};function e(t){if(I[t])return I[t].exports;var C=I[t]={i:t,l:!1,exports:{}};return g[t].call(C.exports,C,C.exports,e),C.l=!0,C.exports}return e.m=g,e.c=I,e.d=function(g,I,t){e.o(g,I)||Object.defineProperty(g,I,{enumerable:!0,get:t})},e.r=function(g){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(g,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(g,"__esModule",{value:!0})},e.t=function(g,I){if(1&I&&(g=e(g)),8&I)return g;if(4&I&&"object"==typeof g&&g&&g.__esModule)return g;var t=Object.create(null);if(e.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:g}),2&I&&"string"!=typeof g)for(var C in g)e.d(t,C,function(I){return g[I]}.bind(null,C));return t},e.n=function(g){var I=g&&g.__esModule?function(){return g.default}:function(){return g};return e.d(I,"a",I),I},e.o=function(g,I){return Object.prototype.hasOwnProperty.call(g,I)},e.p="",e(e.s=7)}([function(g,I){g.exports=e(4)},function(g,I){g.exports=e(63)},function(g,I){g.exports=e(1188)},function(g,I){g.exports=e(1189)},function(g,I){g.exports=e(1191)},function(g,I){g.exports=e(1192)},function(g,I){g.exports=e(1673)},function(g,I,e){"use strict";e.r(I);var t=e(1),C=e.n(t),Q=e(2),F=e.n(Q),B=e(4),n=e.n(B),U=function(g){return 2*g.gutter},s=function(g){return g.gutter},i=function(g){var I=g.containerWidth,e=g.gutter,t=g.numberOfCards,C=g.firstAndLastGutter,Q=e*(t-1);return g.showSlither&&(Q+=2*s({gutter:e})),C&&(Q+=U({gutter:e})),(I-Q)/t},c=function(g){var I=g.index,e=g.firstAndLastGutter,t=g.gutter;return 0===I?e?U({gutter:t}):0:t/2},A=function(g){var I=g.index,e=g.firstAndLastGutter,t=g.gutter;return I===g.numberOfChildren-1?e?U({gutter:t}):0:t/2},l=function(g){var I,e=g.activeItemIndex,t=g.activePosition,C=g.containerWidth,Q=g.numberOfChildren,F=g.numberOfCards,B=g.gutter,n=g.firstAndLastGutter,c=g.showSlither,A=g.infiniteLoop,l=e;if("center"===t&&(l-=Math.floor(F/2)),"right"===t&&(l-=F-1),(I={numberOfChildren:Q,numberOfCards:F}).numberOfChildren<I.numberOfCards)return 0;if(!A&&l<=0)return 0;if(!A&&l>Q-F-1)return function(g){var I=g.numberOfCards,e=g.gutter,t=g.firstAndLastGutter,C=g.showSlither,Q=g.numberOfChildren-I,F=i({containerWidth:g.containerWidth,gutter:e,numberOfCards:I,firstAndLastGutter:t,showSlither:C})*Q+e*Q;return t&&!C&&(F+=U({gutter:e})),F}({activeItemIndex:l,activePosition:t,containerWidth:C,numberOfChildren:Q,numberOfCards:F,gutter:B,firstAndLastGutter:n,showSlither:c});var a=i({containerWidth:C,gutter:B,numberOfCards:F,firstAndLastGutter:n,showSlither:c})*l+B*l;return c&&(a-=s({gutter:B})),n&&(a+=B),a},a=function(g){var I=g.activeItemIndex,e=g.activePosition,t=g.numberOfCards,C=g.numberOfChildren,Q=g.slidesToScroll;return!(C<=t)&&o({activeItemIndex:I,activePosition:e,numberOfCards:t,numberOfChildren:C,slidesToScroll:Q})>I},r=function(g){var I=g.activeItemIndex,e=g.activePosition,t=g.numberOfCards,C=g.numberOfChildren,Q=g.slidesToScroll;return!(C<=t)&&d({activeItemIndex:I,activePosition:e,numberOfCards:t,numberOfChildren:C,slidesToScroll:Q})<I},o=function(g){var I=g.activePosition,e=g.activeItemIndex,t=g.numberOfChildren,C=g.numberOfCards,Q=g.slidesToScroll;switch(I){case"right":return n()([F()([e+Q,t-1]),C]);case"center":return n()([F()([e+Q,Math.floor(t-C/2)]),Math.floor(C/2)+1]);case"left":return F()([e+Q,t-C])}},d=function(g){var I=g.activePosition,e=g.activeItemIndex,t=g.numberOfCards,C=g.numberOfChildren,Q=g.slidesToScroll;switch(I){case"right":return n()([F()([e-Q,C-1]),t-1]);case"center":return n()([F()([e-Q,Math.floor(C-t/2)-1]),Math.floor(t/2)]);case"left":return F()([n()([e-Q,0]),C-t-1])}};function u(g){return(u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"==typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g})(g)}function y(){return(y=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}function b(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}function Z(g){return(Z=Object.setPrototypeOf?Object.getPrototypeOf:function(g){return g.__proto__||Object.getPrototypeOf(g)})(g)}function m(g,I){return(m=Object.setPrototypeOf||function(g,I){return g.__proto__=I,g})(g,I)}function x(g){if(void 0===g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return g}function R(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}var S=function(g){var I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return g&&g.length>0?g[0].clientX:I},G=e(6),L=e.n(G);function V(g){return(V="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"==typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g})(g)}function h(){return(h=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}function D(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}function p(g,I){return!I||"object"!==V(I)&&"function"!=typeof I?function(g){if(void 0===g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return g}(g):I}function E(g){return(E=Object.setPrototypeOf?Object.getPrototypeOf:function(g){return g.__proto__||Object.getPrototypeOf(g)})(g)}function N(g,I){return(N=Object.setPrototypeOf||function(g,I){return g.__proto__=I,g})(g,I)}var W=e(5),f=e(3),X=e.n(f),J=e(0),v=e.n(J),k={children:v.a.arrayOf(v.a.element).isRequired,numberOfCards:v.a.number,gutter:v.a.number,showSlither:v.a.bool,firstAndLastGutter:v.a.bool,enablePlaceholder:v.a.bool,placeholderItem:v.a.element,numberOfPlaceholderItems:v.a.number,requestToChangeActive:v.a.func.isRequired,activeItemIndex:v.a.number.isRequired,activePosition:v.a.oneOf(["left","center","right"]),rightChevron:v.a.oneOfType([v.a.element,v.a.string]),leftChevron:v.a.oneOfType([v.a.element,v.a.string]),chevronWidth:v.a.number,outsideChevron:v.a.bool,alwaysShowChevrons:v.a.bool,slidesToScroll:v.a.number,disableSwipe:v.a.bool,springConfig:v.a.shape({stiffness:v.a.number,damping:v.a.number,precision:v.a.number}),onActiveStateChange:v.a.func,classes:v.a.shape({wrapper:v.a.string,itemsWrapper:v.a.string,itemsInnerWrapper:v.a.string,itemWrapper:v.a.string,rightChevronWrapper:v.a.string,leftChevronWrapper:v.a.string}),infiniteLoop:v.a.bool,calculateActualTranslateX:v.a.func};function H(g){return(H="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"==typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g})(g)}function M(g){for(var I=1;I<arguments.length;I++){var e=null!=arguments[I]?arguments[I]:{},t=Object.keys(e);"function"==typeof Object.getOwnPropertySymbols&&(t=t.concat(Object.getOwnPropertySymbols(e).filter((function(g){return Object.getOwnPropertyDescriptor(e,g).enumerable})))),t.forEach((function(I){O(g,I,e[I])}))}return g}function Y(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}function w(g){return(w=Object.setPrototypeOf?Object.getPrototypeOf:function(g){return g.__proto__||Object.getPrototypeOf(g)})(g)}function T(g,I){return(T=Object.setPrototypeOf||function(g,I){return g.__proto__=I,g})(g,I)}function z(g){if(void 0===g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return g}function O(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}function K(){var g=Ig(["\n  left: -","px;\n"]);return K=function(){return g},g}function j(){var g=Ig(["\n  right: -","px;\n"]);return j=function(){return g},g}function P(){var g=Ig(["\n  position: absolute;\n  height: 100%;\n  width: ","px;\n  cursor: pointer;\n  top: 0;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n"]);return P=function(){return g},g}function _(){var g=Ig(["\n  width: ","px;\n  flex-shrink: 0;\n  margin-right: ","px;\n  margin-left: ","px;\n"]);return _=function(){return g},g}function q(){var g=Ig(["\n  width: 100%;\n  display: flex;\n  flex-wrap: nowrap;\n"]);return q=function(){return g},g}function $(){var g=Ig(["\n  width: 100%;\n  overflow-x: hidden;\n"]);return $=function(){return g},g}function gg(){var g=Ig(["\n  position: relative;\n  ","\n"]);return gg=function(){return g},g}function Ig(g,I){return I||(I=g.slice(0)),Object.freeze(Object.defineProperties(g,{raw:{value:Object.freeze(I)}}))}var eg=X.a.div(gg(),(function(g){return g.height&&"height: ".concat(g.height,"px;")})),tg=X.a.div($()),Cg=X.a.div(q()),Qg=X.a.div(_(),(function(g){return g.width}),(function(g){return g.rightGutter}),(function(g){return g.leftGutter})),Fg=X.a.div(P(),(function(g){return g.chevronWidth+1})),Bg=X()((function(g){return C.a.createElement(Fg,g)}))(j(),(function(g){return g.outsideChevron?g.chevronWidth:0})),ng=X()((function(g){return C.a.createElement(Fg,g)}))(K(),(function(g){return g.outsideChevron?g.chevronWidth:0})),Ug=function(g){function I(){var g,e,t,C;!function(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}(this,I);for(var Q=arguments.length,F=new Array(Q),B=0;B<Q;B++)F[B]=arguments[B];return t=this,C=(g=w(I)).call.apply(g,[this].concat(F)),e=!C||"object"!==H(C)&&"function"!=typeof C?z(t):C,O(z(z(e)),"getScrollState",(function(){var g=e.props,I=g.numberOfCards,t=g.activeItemIndex,C=g.activePosition,Q=g.slidesToScroll,F=g.items;return{isLastScroll:!a({activeItemIndex:t,activePosition:C,numberOfChildren:F.length,numberOfCards:I,slidesToScroll:Q}),isFirstScroll:!r({activeItemIndex:t,activePosition:C,numberOfChildren:F.length,numberOfCards:I,slidesToScroll:Q})}})),e}var e,t;return function(g,I){if("function"!=typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function");g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,writable:!0,configurable:!0}}),I&&T(g,I)}(I,C.a.Component),e=I,(t=[{key:"componentDidUpdate",value:function(g){this.props.onActiveStateChange&&this.props.activeItemIndex!==g.activeItemIndex&&this.props.onActiveStateChange(M({},this.getScrollState()))}},{key:"renderList",value:function(g){var I=g.items,e=g.translateX,t=g.containerWidth,Q=g.measureRef,F=this.props,B=F.gutter,n=F.numberOfCards,U=F.firstAndLastGutter,s=F.showSlither,l=F.classes,a=(0,F.calculateActualTranslateX)(e);return C.a.createElement(tg,{className:l.itemsWrapper},C.a.createElement(Cg,{ref:Q,style:{transform:"translateX(".concat(-1*a,"px)")},className:l.itemsInnerWrapper},I.map((function(g,e){return C.a.createElement(Qg,{key:e,className:l.itemWrapper,width:i({firstAndLastGutter:U,containerWidth:t,gutter:B,numberOfCards:n,showSlither:s}),leftGutter:c({index:e,firstAndLastGutter:U,gutter:B}),rightGutter:A({index:e,firstAndLastGutter:U,gutter:B,numberOfChildren:I.length})},g)}))))}},{key:"render",value:function(){var g=this,I=this.props,e=I.containerWidth,t=I.measureRef,Q=I.touchRelativeX,F=I.onWrapperTouchStart,B=I.onWrapperTouchEnd,n=I.onWrapperTouchMove,U=(I.gutter,I.numberOfCards,I.firstAndLastGutter,I.activePosition,I.springConfig),s=(I.showSlither,I.rightChevron),i=I.leftChevron,c=I.chevronWidth,A=I.outsideChevron,l=I.requestToChangeActive,a=(I.slidesToScroll,I.alwaysShowChevrons),r=I.classes,o=I.items,d=I.activeItemTranslateX,u=I.nextItemIndex,y=I.previousItemIndex,b=this.getScrollState(),Z=b.isFirstScroll,m=b.isLastScroll,x=s&&(a||!m),R=i&&(a||!Z);return C.a.createElement(eg,{onTouchStart:F,onTouchEnd:B,onTouchMove:n,className:r.wrapper},C.a.createElement(W.Motion,{defaultStyle:{translateX:d},style:{translateX:Object(W.spring)(d+Q,U)},children:function(I){var C=I.translateX;return g.renderList({items:o,measureRef:t,containerWidth:e,translateX:C})}}),x&&C.a.createElement(Bg,{chevronWidth:c,outsideChevron:A,className:r.rightChevronWrapper,onClick:function(){return l(u)}},s),R&&C.a.createElement(ng,{chevronWidth:c,outsideChevron:A,className:r.leftChevronWrapper,onClick:function(){return l(y)}},i))}}])&&Y(e.prototype,t),I}();Ug.defaultProps={onWrapperTouchStart:null,onWrapperTouchEnd:null,onWrapperTouchMove:null},Ug.propTypes=M({},k,{items:v.a.arrayOf(v.a.node).isRequired,activeItemTranslateX:v.a.number.isRequired,nextItemIndex:v.a.number.isRequired,previousItemIndex:v.a.number.isRequired,containerWidth:v.a.number.isRequired,measureRef:v.a.oneOfType([v.a.func,v.a.shape({current:v.a.object})]).isRequired,touchRelativeX:v.a.number.isRequired,onWrapperTouchStart:v.a.func,onWrapperTouchEnd:v.a.func,onWrapperTouchMove:v.a.func});var sg=Ug;function ig(g){return(ig="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"==typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g})(g)}function cg(){return(cg=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}function Ag(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}function lg(g){return(lg=Object.setPrototypeOf?Object.getPrototypeOf:function(g){return g.__proto__||Object.getPrototypeOf(g)})(g)}function ag(g,I){return(ag=Object.setPrototypeOf||function(g,I){return g.__proto__=I,g})(g,I)}function rg(g){if(void 0===g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return g}function og(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}function dg(){return(dg=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}function ug(g){return function(g){if(Array.isArray(g)){for(var I=0,e=new Array(g.length);I<g.length;I++)e[I]=g[I];return e}}(g)||function(g){if(Symbol.iterator in Object(g)||"[object Arguments]"===Object.prototype.toString.call(g))return Array.from(g)}(g)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}var yg=function(g){var I=g.activeItemIndex,e=g.activePosition,t=g.containerWidth,C=g.numberOfChildren,Q=g.numberOfCards,F=g.gutter,B=g.firstAndLastGutter,n=g.showSlither;return l({activeItemIndex:I,activePosition:e,containerWidth:t,numberOfChildren:C,numberOfCards:Q,gutter:F,firstAndLastGutter:B,showSlither:n,infiniteLoop:!0})},bg=yg;function Zg(){return(Zg=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}var mg=function(){return function(g){return function(I){var e=I.calculateActualTranslateX,t=I.numberOfCards,Q=I.activeItemIndex,F=(I.numberOfChildren,I.slidesToScroll),B=I.containerWidth,n=I.gutter,U=I.firstAndLastGutter,s=I.showSlither,i=I.children,c=function(g,I){var e=I.numberOfCards;return[].concat(ug(g.slice(g.length-e)),ug(g),ug(g.slice(0,e)))}(C.a.Children.toArray(i),{numberOfCards:t}),A=function(g){var I=g.activeItemIndex;return g.numberOfCards,I}({activeItemIndex:Q,numberOfCards:t}),l=function(g){return g.activeItemIndex-g.slidesToScroll}({activeItemIndex:A,slidesToScroll:F}),a=function(g){return g.activeItemIndex+g.slidesToScroll}({activeItemIndex:A,slidesToScroll:F}),r=bg({activeItemIndex:A,activePosition:"left",containerWidth:B,numberOfChildren:c.length,numberOfCards:t,gutter:n,firstAndLastGutter:U,showSlither:s});return C.a.createElement(g,Zg({},I,{alwaysShowChevrons:!0,activePosition:"left",items:c,previousItemIndex:l,nextItemIndex:a,activeItemIndex:A,activeItemTranslateX:r,calculateActualTranslateX:function(g){var I=function(g,I,e){var t=e.activePosition,C=e.containerWidth,Q=e.numberOfCards,F=e.gutter,B=e.firstAndLastGutter,n=e.showSlither,U=yg({numberOfChildren:g.length,activeItemIndex:g.length-2*Q,activePosition:t,containerWidth:C,numberOfCards:Q,gutter:F,firstAndLastGutter:B,showSlither:n}),s=I%U+yg({numberOfChildren:g.length,activeItemIndex:Q,activePosition:t,containerWidth:C,numberOfCards:Q,gutter:F,firstAndLastGutter:B,showSlither:n});return s<=0?U-Math.abs(s):s}(c,g,{activePosition:"left",containerWidth:B,numberOfCards:t,gutter:n,firstAndLastGutter:U,showSlither:s});return e(I)}}))}}},xg=function(){for(var g=arguments.length,I=new Array(g),e=0;e<g;e++)I[e]=arguments[e];return function(g){return I.reduce((function(g,I){return I(g)}),g)}}((function(g){return function(I){function e(){var g,I,t,C;!function(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}(this,e);for(var Q=arguments.length,F=new Array(Q),B=0;B<Q;B++)F[B]=arguments[B];return t=this,C=(g=Z(e)).call.apply(g,[this].concat(F)),I=!C||"object"!==u(C)&&"function"!=typeof C?x(t):C,R(x(x(I)),"state",{startTouchX:0,currentTouchX:0}),R(x(x(I)),"onWrapperTouchStart",(function(g){var e=S(g.touches);I.setState({startTouchX:e,currentTouchX:e})})),R(x(x(I)),"onWrapperTouchEnd",(function(g){var e=I.props,t=e.containerWidth,C=e.gutter,Q=e.numberOfCards,F=e.firstAndLastGutter,B=e.showSlither,n=e.requestToChangeActive,U=e.activeItemIndex,s=i({containerWidth:t,gutter:C,numberOfCards:Q,firstAndLastGutter:F,showSlither:B}),c=S(g.changedTouches),A=I.state.startTouchX-c,l=Math.floor(Math.abs(A)/(s+C/2)+.75);l>0&&n(A<0?U-l:U+l),I.setState({startTouchX:0,currentTouchX:0})})),R(x(x(I)),"onWrapperTouchMove",(function(g){I.setState({currentTouchX:S(g.touches)})})),I}var t,Q;return function(g,I){if("function"!=typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function");g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,writable:!0,configurable:!0}}),I&&m(g,I)}(e,C.a.Component),t=e,(Q=[{key:"render",value:function(){var I=this.props,e=I.disableSwipe,t=I.isPlaceholderMode,Q=this.state,F=Q.startTouchX,B=Q.currentTouchX;return e||t?C.a.createElement(g,y({},this.props,{touchRelativeX:0})):C.a.createElement(g,y({},this.props,{onWrapperTouchStart:this.onWrapperTouchStart,onWrapperTouchEnd:this.onWrapperTouchEnd,onWrapperTouchMove:this.onWrapperTouchMove,touchRelativeX:F-B}))}}])&&b(t.prototype,Q),e}()}),(function(g){return function(I){function e(g){var I,t;return function(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}(this,e),t=lg(e).call(this,g),I=!t||"object"!==ig(t)&&"function"!=typeof t?rg(this):t,og(rg(rg(I)),"startPlaceholderMinimumTimer",(function(){I.props.minimumPlaceholderTime&&(I.placeholderTimer=setTimeout((function(){I.placeholderTimer=null,C.a.Children.count(I.props.children)>0&&I.setState({isPlaceholderMode:!1})}),I.props.minimumPlaceholderTime))})),og(rg(rg(I)),"getPlaceholderItems",(function(){var g=I.props,e=g.placeholderItem,t=g.numberOfPlaceholderItems;return Array.from(Array(t)).map((function(g){return e}))})),I.state={isPlaceholderMode:I.props.enablePlaceholder&&0===C.a.Children.count(I.props.children)},I}var t,Q;return function(g,I){if("function"!=typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function");g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,writable:!0,configurable:!0}}),I&&ag(g,I)}(e,C.a.Component),t=e,(Q=[{key:"componentDidMount",value:function(){this.startPlaceholderMinimumTimer()}},{key:"componentWillUnmount",value:function(){this.placeholderTimer&&clearTimeout(this.placeholderTimer)}},{key:"componentDidUpdate",value:function(g){C.a.Children.count(this.props.children)>0&&0===C.a.Children.count(g.children)&&!this.placeholderTimer&&this.state.isPlaceholderMode&&this.setState({isPlaceholderMode:!1})}},{key:"render",value:function(){return C.a.createElement(g,cg({},this.props,{items:this.state.isPlaceholderMode?this.getPlaceholderItems():this.props.items}))}}])&&Ag(t.prototype,Q),e}()}),(function(g){return function(I){var e=C.a.Children.toArray(I.children).length>=I.numberOfCards;return I.infiniteLoop&&e?mg()(g)(I):function(g){return function(I){var e=I.children,t=I.activeItemIndex,Q=I.activePosition,F=I.containerWidth,B=I.numberOfCards,n=I.slidesToScroll,U=I.gutter,s=I.firstAndLastGutter,i=I.showSlither,c=C.a.Children.toArray(e);return C.a.createElement(g,dg({},I,{items:c,nextItemIndex:o({activePosition:Q,activeItemIndex:t,numberOfCards:B,slidesToScroll:n,numberOfChildren:c.length}),previousItemIndex:d({activePosition:Q,activeItemIndex:t,numberOfCards:B,slidesToScroll:n,numberOfChildren:c.length}),activeItemTranslateX:l({activeItemIndex:t,activePosition:Q,containerWidth:F,numberOfChildren:c.length,numberOfCards:B,gutter:U,firstAndLastGutter:s,showSlither:i})}))}}(g)(I)}}),(function(g){return function(I){function e(){return function(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}(this,e),p(this,E(e).apply(this,arguments))}var t,Q;return function(g,I){if("function"!=typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function");g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,writable:!0,configurable:!0}}),I&&N(g,I)}(e,C.a.Component),t=e,(Q=[{key:"render",value:function(){var I=this;return C.a.createElement(L.a,{bounds:!0,margin:!1,whitelist:["width","height"]},(function(e){var t=e.measureRef,Q=e.contentRect;return C.a.createElement(g,h({},I.props,{measureRef:t,containerWidth:Q.bounds.width||0,containerHeight:Q.bounds.height||0}))}))}}])&&D(t.prototype,Q),e}()}))(sg);xg.propTypes=k,xg.defaultProps={numberOfCards:3,gutter:0,disableSwipe:!1,firstAndLastGutter:!1,showSlither:!1,enablePlaceholder:!1,activePosition:"left",slidesToScroll:1,placeholderItem:null,numberOfPlaceholderItems:0,rightChevron:null,leftChevron:null,onActiveStateChange:null,alwaysShowChevrons:!1,classes:{},infiniteLoop:!1,calculateActualTranslateX:function(g){return g}},I.default=xg}])},function(g,I,e){g.exports=function(){"use strict";return function(g){function I(I){if(I)try{g(I+"}")}catch(e){}}return function(e,t,C,Q,F,B,n,U,s,i){switch(e){case 1:if(0===s&&64===t.charCodeAt(0))return g(t+";"),"";break;case 2:if(0===U)return t+"/*|*/";break;case 3:switch(U){case 102:case 112:return g(C[0]+t),"";default:return t+(0===i?"/*|*/":"")}case-2:t.split("/*|*/}").forEach(I)}}}}()},function(g,I,e){"use strict";var t=e(443),C=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,Q=Object(t.a)((function(g){return C.test(g)||111===g.charCodeAt(0)&&110===g.charCodeAt(1)&&g.charCodeAt(2)<91}));I.a=Q},function(g,I,e){"use strict";(function(g){var e=function(){if("undefined"!==typeof Map)return Map;function g(g,I){var e=-1;return g.some((function(g,t){return g[0]===I&&(e=t,!0)})),e}return function(){function I(){this.__entries__=[]}return Object.defineProperty(I.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),I.prototype.get=function(I){var e=g(this.__entries__,I),t=this.__entries__[e];return t&&t[1]},I.prototype.set=function(I,e){var t=g(this.__entries__,I);~t?this.__entries__[t][1]=e:this.__entries__.push([I,e])},I.prototype.delete=function(I){var e=this.__entries__,t=g(e,I);~t&&e.splice(t,1)},I.prototype.has=function(I){return!!~g(this.__entries__,I)},I.prototype.clear=function(){this.__entries__.splice(0)},I.prototype.forEach=function(g,I){void 0===I&&(I=null);for(var e=0,t=this.__entries__;e<t.length;e++){var C=t[e];g.call(I,C[1],C[0])}},I}()}(),t="undefined"!==typeof window&&"undefined"!==typeof document&&window.document===document,C="undefined"!==typeof g&&g.Math===Math?g:"undefined"!==typeof self&&self.Math===Math?self:"undefined"!==typeof window&&window.Math===Math?window:Function("return this")(),Q="function"===typeof requestAnimationFrame?requestAnimationFrame.bind(C):function(g){return setTimeout((function(){return g(Date.now())}),1e3/60)};var F=["top","right","bottom","left","width","height","size","weight"],B="undefined"!==typeof MutationObserver,n=function(){function g(){this.connected_=!1,this.mutationEventsAdded_=!1,this.mutationsObserver_=null,this.observers_=[],this.onTransitionEnd_=this.onTransitionEnd_.bind(this),this.refresh=function(g,I){var e=!1,t=!1,C=0;function F(){e&&(e=!1,g()),t&&n()}function B(){Q(F)}function n(){var g=Date.now();if(e){if(g-C<2)return;t=!0}else e=!0,t=!1,setTimeout(B,I);C=g}return n}(this.refresh.bind(this),20)}return g.prototype.addObserver=function(g){~this.observers_.indexOf(g)||this.observers_.push(g),this.connected_||this.connect_()},g.prototype.removeObserver=function(g){var I=this.observers_,e=I.indexOf(g);~e&&I.splice(e,1),!I.length&&this.connected_&&this.disconnect_()},g.prototype.refresh=function(){this.updateObservers_()&&this.refresh()},g.prototype.updateObservers_=function(){var g=this.observers_.filter((function(g){return g.gatherActive(),g.hasActive()}));return g.forEach((function(g){return g.broadcastActive()})),g.length>0},g.prototype.connect_=function(){t&&!this.connected_&&(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),B?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},g.prototype.disconnect_=function(){t&&this.connected_&&(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},g.prototype.onTransitionEnd_=function(g){var I=g.propertyName,e=void 0===I?"":I;F.some((function(g){return!!~e.indexOf(g)}))&&this.refresh()},g.getInstance=function(){return this.instance_||(this.instance_=new g),this.instance_},g.instance_=null,g}(),U=function(g,I){for(var e=0,t=Object.keys(I);e<t.length;e++){var C=t[e];Object.defineProperty(g,C,{value:I[C],enumerable:!1,writable:!1,configurable:!0})}return g},s=function(g){return g&&g.ownerDocument&&g.ownerDocument.defaultView||C},i=o(0,0,0,0);function c(g){return parseFloat(g)||0}function A(g){for(var I=[],e=1;e<arguments.length;e++)I[e-1]=arguments[e];return I.reduce((function(I,e){return I+c(g["border-"+e+"-width"])}),0)}function l(g){var I=g.clientWidth,e=g.clientHeight;if(!I&&!e)return i;var t=s(g).getComputedStyle(g),C=function(g){for(var I={},e=0,t=["top","right","bottom","left"];e<t.length;e++){var C=t[e],Q=g["padding-"+C];I[C]=c(Q)}return I}(t),Q=C.left+C.right,F=C.top+C.bottom,B=c(t.width),n=c(t.height);if("border-box"===t.boxSizing&&(Math.round(B+Q)!==I&&(B-=A(t,"left","right")+Q),Math.round(n+F)!==e&&(n-=A(t,"top","bottom")+F)),!function(g){return g===s(g).document.documentElement}(g)){var U=Math.round(B+Q)-I,l=Math.round(n+F)-e;1!==Math.abs(U)&&(B-=U),1!==Math.abs(l)&&(n-=l)}return o(C.left,C.top,B,n)}var a="undefined"!==typeof SVGGraphicsElement?function(g){return g instanceof s(g).SVGGraphicsElement}:function(g){return g instanceof s(g).SVGElement&&"function"===typeof g.getBBox};function r(g){return t?a(g)?function(g){var I=g.getBBox();return o(0,0,I.width,I.height)}(g):l(g):i}function o(g,I,e,t){return{x:g,y:I,width:e,height:t}}var d=function(){function g(g){this.broadcastWidth=0,this.broadcastHeight=0,this.contentRect_=o(0,0,0,0),this.target=g}return g.prototype.isActive=function(){var g=r(this.target);return this.contentRect_=g,g.width!==this.broadcastWidth||g.height!==this.broadcastHeight},g.prototype.broadcastRect=function(){var g=this.contentRect_;return this.broadcastWidth=g.width,this.broadcastHeight=g.height,g},g}(),u=function(g,I){var e=function(g){var I=g.x,e=g.y,t=g.width,C=g.height,Q="undefined"!==typeof DOMRectReadOnly?DOMRectReadOnly:Object,F=Object.create(Q.prototype);return U(F,{x:I,y:e,width:t,height:C,top:e,right:I+t,bottom:C+e,left:I}),F}(I);U(this,{target:g,contentRect:e})},y=function(){function g(g,I,t){if(this.activeObservations_=[],this.observations_=new e,"function"!==typeof g)throw new TypeError("The callback provided as parameter 1 is not a function.");this.callback_=g,this.controller_=I,this.callbackCtx_=t}return g.prototype.observe=function(g){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if("undefined"!==typeof Element&&Element instanceof Object){if(!(g instanceof s(g).Element))throw new TypeError('parameter 1 is not of type "Element".');var I=this.observations_;I.has(g)||(I.set(g,new d(g)),this.controller_.addObserver(this),this.controller_.refresh())}},g.prototype.unobserve=function(g){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if("undefined"!==typeof Element&&Element instanceof Object){if(!(g instanceof s(g).Element))throw new TypeError('parameter 1 is not of type "Element".');var I=this.observations_;I.has(g)&&(I.delete(g),I.size||this.controller_.removeObserver(this))}},g.prototype.disconnect=function(){this.clearActive(),this.observations_.clear(),this.controller_.removeObserver(this)},g.prototype.gatherActive=function(){var g=this;this.clearActive(),this.observations_.forEach((function(I){I.isActive()&&g.activeObservations_.push(I)}))},g.prototype.broadcastActive=function(){if(this.hasActive()){var g=this.callbackCtx_,I=this.activeObservations_.map((function(g){return new u(g.target,g.broadcastRect())}));this.callback_.call(g,I,g),this.clearActive()}},g.prototype.clearActive=function(){this.activeObservations_.splice(0)},g.prototype.hasActive=function(){return this.activeObservations_.length>0},g}(),b="undefined"!==typeof WeakMap?new WeakMap:new e,Z=function g(I){if(!(this instanceof g))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var e=n.getInstance(),t=new y(I,e,this);b.set(this,t)};["observe","unobserve","disconnect"].forEach((function(g){Z.prototype[g]=function(){var I;return(I=b.get(this))[g].apply(I,arguments)}}));var m="undefined"!==typeof C.ResizeObserver?C.ResizeObserver:Z;I.a=m}).call(this,e(67))},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM8 9h8v10H8V9zm7.5-5l-1-1h-5l-1 1H5v2h14V4z"}),"DeleteOutline");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement(C.default.Fragment,null,C.default.createElement("path",{d:"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}),C.default.createElement("path",{d:"M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z"})),"AccessTime");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement(C.default.Fragment,null,C.default.createElement("path",{fill:"none",d:"M-618-568H782v3600H-618zM0 0h24v24H0z"}),C.default.createElement("path",{d:"M22 5.7l-4.6-3.9-1.3 1.5 4.6 3.9L22 5.7zM7.9 3.4L6.6 1.9 2 5.7l1.3 1.5 4.6-3.8zM12.5 8H11v6l4.7 2.9.8-1.2-4-2.4V8zM12 4c-5 0-9 4-9 9s4 9 9 9 9-4 9-9-4-9-9-9zm0 16c-3.9 0-7-3.1-7-7s3.1-7 7-7 7 3.1 7 7-3.1 7-7 7z"})),"AccessAlarms");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement(C.default.Fragment,null,C.default.createElement("circle",{cx:"12",cy:"4",r:"2"}),C.default.createElement("path",{d:"M19 13v-2c-1.54.02-3.09-.75-4.07-1.83l-1.29-1.43c-.17-.19-.38-.34-.61-.45-.01 0-.01-.01-.02-.01H13c-.35-.2-.75-.3-1.19-.26C10.76 7.11 10 8.04 10 9.09V15c0 1.1.9 2 2 2h5v5h2v-5.5c0-1.1-.9-2-2-2h-3v-3.45c1.29 1.07 3.25 1.94 5 1.95zm-6.17 5c-.41 1.16-1.52 2-2.83 2-1.66 0-3-1.34-3-3 0-1.31.84-2.41 2-2.83V12.1c-2.28.46-4 2.48-4 4.9 0 2.76 2.24 5 5 5 2.42 0 4.44-1.72 4.9-4h-2.07z"})),"AccessibleTwoTone");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M12 11.55C9.64 9.35 6.48 8 3 8v11c3.48 0 6.64 1.35 9 3.55 2.36-2.19 5.52-3.55 9-3.55V8c-3.48 0-6.64 1.35-9 3.55zM12 8c1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3 1.34 3 3 3z"}),"LocalLibrary");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M17.5 10c-.03 0-.05.01-.08.01L13.41 6H9v2h3.59l2 2h-8.1C4.01 10 2 12.02 2 14.5 2 16.99 4.01 19 6.5 19c2.22 0 4.06-1.62 4.42-3.73L13.04 14c-.02.17-.04.33-.04.5 0 2.49 2.01 4.5 4.5 4.5s4.5-2.01 4.5-4.5-2.01-4.5-4.5-4.5zm-8.66 5.26C8.52 16.27 7.58 17 6.47 17c-1.38 0-2.5-1.12-2.5-2.5S5.09 12 6.47 12c1.12 0 2.05.74 2.37 1.75H6v1.5l2.84.01zM17.47 17c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z"}),"Motorcycle");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M8.1 13.34l2.83-2.83L3.91 3.5c-1.56 1.56-1.56 4.09 0 5.66l4.19 4.18zm6.78-1.81c1.53.71 3.68.21 5.27-1.38 1.91-1.91 2.28-4.65.81-6.12-1.46-1.46-4.2-1.1-6.12.81-1.59 1.59-2.09 3.74-1.38 5.27L3.7 19.87l1.41 1.41L12 14.41l6.88 6.88 1.41-1.41L13.41 13l1.47-1.47z"}),"RestaurantMenu");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z"}),"LocationOn");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M13 3H6v18h4v-6h3c3.31 0 6-2.69 6-6s-2.69-6-6-6zm.2 8H10V7h3.2c1.1 0 2 .9 2 2s-.9 2-2 2z"}),"LocalParking");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement(C.default.Fragment,null,C.default.createElement("path",{d:"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}),C.default.createElement("path",{d:"M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z"})),"Schedule");I.default=Q},function(g,I,e){"use strict";function t(g){return function(I){var e=I.dispatch,t=I.getState;return function(I){return function(C){return"function"===typeof C?C(e,t,g):I(C)}}}}var C=t();C.withExtraArgument=t,I.a=C},function(g,I,e){(function(I){g.exports=function g(I,e,t){function C(F,B){if(!e[F]){if(!I[F]){if(Q)return Q(F,!0);var n=new Error("Cannot find module '"+F+"'");throw n.code="MODULE_NOT_FOUND",n}var U=e[F]={exports:{}};I[F][0].call(U.exports,(function(g){var e=I[F][1][g];return C(e||g)}),U,U.exports,g,I,e,t)}return e[F].exports}for(var Q=!1,F=0;F<t.length;F++)C(t[F]);return C}({1:[function(g,e,t){(function(g){"use strict";var I,t,C=g.MutationObserver||g.WebKitMutationObserver;if(C){var Q=0,F=new C(s),B=g.document.createTextNode("");F.observe(B,{characterData:!0}),I=function(){B.data=Q=++Q%2}}else if(g.setImmediate||"undefined"===typeof g.MessageChannel)I="document"in g&&"onreadystatechange"in g.document.createElement("script")?function(){var I=g.document.createElement("script");I.onreadystatechange=function(){s(),I.onreadystatechange=null,I.parentNode.removeChild(I),I=null},g.document.documentElement.appendChild(I)}:function(){setTimeout(s,0)};else{var n=new g.MessageChannel;n.port1.onmessage=s,I=function(){n.port2.postMessage(0)}}var U=[];function s(){var g,I;t=!0;for(var e=U.length;e;){for(I=U,U=[],g=-1;++g<e;)I[g]();e=U.length}t=!1}e.exports=function(g){1!==U.push(g)||t||I()}}).call(this,"undefined"!==typeof I?I:"undefined"!==typeof self?self:"undefined"!==typeof window?window:{})},{}],2:[function(g,I,e){"use strict";var t=g(1);function C(){}var Q={},F=["REJECTED"],B=["FULFILLED"],n=["PENDING"];function U(g){if("function"!==typeof g)throw new TypeError("resolver must be a function");this.state=n,this.queue=[],this.outcome=void 0,g!==C&&A(this,g)}function s(g,I,e){this.promise=g,"function"===typeof I&&(this.onFulfilled=I,this.callFulfilled=this.otherCallFulfilled),"function"===typeof e&&(this.onRejected=e,this.callRejected=this.otherCallRejected)}function i(g,I,e){t((function(){var t;try{t=I(e)}catch(C){return Q.reject(g,C)}t===g?Q.reject(g,new TypeError("Cannot resolve promise with itself")):Q.resolve(g,t)}))}function c(g){var I=g&&g.then;if(g&&("object"===typeof g||"function"===typeof g)&&"function"===typeof I)return function(){I.apply(g,arguments)}}function A(g,I){var e=!1;function t(I){e||(e=!0,Q.reject(g,I))}function C(I){e||(e=!0,Q.resolve(g,I))}var F=l((function(){I(C,t)}));"error"===F.status&&t(F.value)}function l(g,I){var e={};try{e.value=g(I),e.status="success"}catch(t){e.status="error",e.value=t}return e}I.exports=U,U.prototype.catch=function(g){return this.then(null,g)},U.prototype.then=function(g,I){if("function"!==typeof g&&this.state===B||"function"!==typeof I&&this.state===F)return this;var e=new this.constructor(C);return this.state!==n?i(e,this.state===B?g:I,this.outcome):this.queue.push(new s(e,g,I)),e},s.prototype.callFulfilled=function(g){Q.resolve(this.promise,g)},s.prototype.otherCallFulfilled=function(g){i(this.promise,this.onFulfilled,g)},s.prototype.callRejected=function(g){Q.reject(this.promise,g)},s.prototype.otherCallRejected=function(g){i(this.promise,this.onRejected,g)},Q.resolve=function(g,I){var e=l(c,I);if("error"===e.status)return Q.reject(g,e.value);var t=e.value;if(t)A(g,t);else{g.state=B,g.outcome=I;for(var C=-1,F=g.queue.length;++C<F;)g.queue[C].callFulfilled(I)}return g},Q.reject=function(g,I){g.state=F,g.outcome=I;for(var e=-1,t=g.queue.length;++e<t;)g.queue[e].callRejected(I);return g},U.resolve=function(g){return g instanceof this?g:Q.resolve(new this(C),g)},U.reject=function(g){var I=new this(C);return Q.reject(I,g)},U.all=function(g){var I=this;if("[object Array]"!==Object.prototype.toString.call(g))return this.reject(new TypeError("must be an array"));var e=g.length,t=!1;if(!e)return this.resolve([]);for(var F=new Array(e),B=0,n=-1,U=new this(C);++n<e;)s(g[n],n);return U;function s(g,C){I.resolve(g).then((function(g){F[C]=g,++B!==e||t||(t=!0,Q.resolve(U,F))}),(function(g){t||(t=!0,Q.reject(U,g))}))}},U.race=function(g){var I=this;if("[object Array]"!==Object.prototype.toString.call(g))return this.reject(new TypeError("must be an array"));var e=g.length,t=!1;if(!e)return this.resolve([]);for(var F=-1,B=new this(C);++F<e;)n(g[F]);return B;function n(g){I.resolve(g).then((function(g){t||(t=!0,Q.resolve(B,g))}),(function(g){t||(t=!0,Q.reject(B,g))}))}}},{1:1}],3:[function(g,e,t){(function(I){"use strict";"function"!==typeof I.Promise&&(I.Promise=g(2))}).call(this,"undefined"!==typeof I?I:"undefined"!==typeof self?self:"undefined"!==typeof window?window:{})},{2:2}],4:[function(g,I,e){"use strict";var t="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"===typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g},C=function(){try{if("undefined"!==typeof indexedDB)return indexedDB;if("undefined"!==typeof webkitIndexedDB)return webkitIndexedDB;if("undefined"!==typeof mozIndexedDB)return mozIndexedDB;if("undefined"!==typeof OIndexedDB)return OIndexedDB;if("undefined"!==typeof msIndexedDB)return msIndexedDB}catch(g){return}}();function Q(g,I){g=g||[],I=I||{};try{return new Blob(g,I)}catch(C){if("TypeError"!==C.name)throw C;for(var e=new("undefined"!==typeof BlobBuilder?BlobBuilder:"undefined"!==typeof MSBlobBuilder?MSBlobBuilder:"undefined"!==typeof MozBlobBuilder?MozBlobBuilder:WebKitBlobBuilder),t=0;t<g.length;t+=1)e.append(g[t]);return e.getBlob(I.type)}}"undefined"===typeof Promise&&g(3);var F=Promise;function B(g,I){I&&g.then((function(g){I(null,g)}),(function(g){I(g)}))}function n(g,I,e){"function"===typeof I&&g.then(I),"function"===typeof e&&g.catch(e)}function U(g){return"string"!==typeof g&&(console.warn(g+" used as a key, but it is not a string."),g=String(g)),g}function s(){if(arguments.length&&"function"===typeof arguments[arguments.length-1])return arguments[arguments.length-1]}var i=void 0,c={},A=Object.prototype.toString;function l(g){return"boolean"===typeof i?F.resolve(i):function(g){return new F((function(I){var e=g.transaction("local-forage-detect-blob-support","readwrite"),t=Q([""]);e.objectStore("local-forage-detect-blob-support").put(t,"key"),e.onabort=function(g){g.preventDefault(),g.stopPropagation(),I(!1)},e.oncomplete=function(){var g=navigator.userAgent.match(/Chrome\/(\d+)/),e=navigator.userAgent.match(/Edge\//);I(e||!g||parseInt(g[1],10)>=43)}})).catch((function(){return!1}))}(g).then((function(g){return i=g}))}function a(g){var I=c[g.name],e={};e.promise=new F((function(g,I){e.resolve=g,e.reject=I})),I.deferredOperations.push(e),I.dbReady?I.dbReady=I.dbReady.then((function(){return e.promise})):I.dbReady=e.promise}function r(g){var I=c[g.name].deferredOperations.pop();if(I)return I.resolve(),I.promise}function o(g,I){var e=c[g.name].deferredOperations.pop();if(e)return e.reject(I),e.promise}function d(g,I){return new F((function(e,t){if(c[g.name]=c[g.name]||{forages:[],db:null,dbReady:null,deferredOperations:[]},g.db){if(!I)return e(g.db);a(g),g.db.close()}var Q=[g.name];I&&Q.push(g.version);var F=C.open.apply(C,Q);I&&(F.onupgradeneeded=function(I){var e=F.result;try{e.createObjectStore(g.storeName),I.oldVersion<=1&&e.createObjectStore("local-forage-detect-blob-support")}catch(t){if("ConstraintError"!==t.name)throw t;console.warn('The database "'+g.name+'" has been upgraded from version '+I.oldVersion+" to version "+I.newVersion+', but the storage "'+g.storeName+'" already exists.')}}),F.onerror=function(g){g.preventDefault(),t(F.error)},F.onsuccess=function(){e(F.result),r(g)}}))}function u(g){return d(g,!1)}function y(g){return d(g,!0)}function b(g,I){if(!g.db)return!0;var e=!g.db.objectStoreNames.contains(g.storeName),t=g.version<g.db.version,C=g.version>g.db.version;if(t&&(g.version!==I&&console.warn('The database "'+g.name+"\" can't be downgraded from version "+g.db.version+" to version "+g.version+"."),g.version=g.db.version),C||e){if(e){var Q=g.db.version+1;Q>g.version&&(g.version=Q)}return!0}return!1}function Z(g){return Q([function(g){for(var I=g.length,e=new ArrayBuffer(I),t=new Uint8Array(e),C=0;C<I;C++)t[C]=g.charCodeAt(C);return e}(atob(g.data))],{type:g.type})}function m(g){return g&&g.__local_forage_encoded_blob}function x(g){var I=this,e=I._initReady().then((function(){var g=c[I._dbInfo.name];if(g&&g.dbReady)return g.dbReady}));return n(e,g,g),e}function R(g,I,e,t){void 0===t&&(t=1);try{var C=g.db.transaction(g.storeName,I);e(null,C)}catch(Q){if(t>0&&(!g.db||"InvalidStateError"===Q.name||"NotFoundError"===Q.name))return F.resolve().then((function(){if(!g.db||"NotFoundError"===Q.name&&!g.db.objectStoreNames.contains(g.storeName)&&g.version<=g.db.version)return g.db&&(g.version=g.db.version+1),y(g)})).then((function(){return function(g){a(g);for(var I=c[g.name],e=I.forages,t=0;t<e.length;t++){var C=e[t];C._dbInfo.db&&(C._dbInfo.db.close(),C._dbInfo.db=null)}return g.db=null,u(g).then((function(I){return g.db=I,b(g)?y(g):I})).then((function(t){g.db=I.db=t;for(var C=0;C<e.length;C++)e[C]._dbInfo.db=t})).catch((function(I){throw o(g,I),I}))}(g).then((function(){R(g,I,e,t-1)}))})).catch(e);e(Q)}}var S={_driver:"asyncStorage",_initStorage:function(g){var I=this,e={db:null};if(g)for(var t in g)e[t]=g[t];var C=c[e.name];C||(C={forages:[],db:null,dbReady:null,deferredOperations:[]},c[e.name]=C),C.forages.push(I),I._initReady||(I._initReady=I.ready,I.ready=x);var Q=[];function B(){return F.resolve()}for(var n=0;n<C.forages.length;n++){var U=C.forages[n];U!==I&&Q.push(U._initReady().catch(B))}var s=C.forages.slice(0);return F.all(Q).then((function(){return e.db=C.db,u(e)})).then((function(g){return e.db=g,b(e,I._defaultConfig.version)?y(e):g})).then((function(g){e.db=C.db=g,I._dbInfo=e;for(var t=0;t<s.length;t++){var Q=s[t];Q!==I&&(Q._dbInfo.db=e.db,Q._dbInfo.version=e.version)}}))},_support:function(){try{if(!C)return!1;var g="undefined"!==typeof openDatabase&&/(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent)&&!/Chrome/.test(navigator.userAgent)&&!/BlackBerry/.test(navigator.platform),I="function"===typeof fetch&&-1!==fetch.toString().indexOf("[native code");return(!g||I)&&"undefined"!==typeof indexedDB&&"undefined"!==typeof IDBKeyRange}catch(e){return!1}}(),iterate:function(g,I){var e=this,t=new F((function(I,t){e.ready().then((function(){R(e._dbInfo,"readonly",(function(C,Q){if(C)return t(C);try{var F=Q.objectStore(e._dbInfo.storeName).openCursor(),B=1;F.onsuccess=function(){var e=F.result;if(e){var t=e.value;m(t)&&(t=Z(t));var C=g(t,e.key,B++);void 0!==C?I(C):e.continue()}else I()},F.onerror=function(){t(F.error)}}catch(n){t(n)}}))})).catch(t)}));return B(t,I),t},getItem:function(g,I){var e=this;g=U(g);var t=new F((function(I,t){e.ready().then((function(){R(e._dbInfo,"readonly",(function(C,Q){if(C)return t(C);try{var F=Q.objectStore(e._dbInfo.storeName).get(g);F.onsuccess=function(){var g=F.result;void 0===g&&(g=null),m(g)&&(g=Z(g)),I(g)},F.onerror=function(){t(F.error)}}catch(B){t(B)}}))})).catch(t)}));return B(t,I),t},setItem:function(g,I,e){var t=this;g=U(g);var C=new F((function(e,C){var Q;t.ready().then((function(){return Q=t._dbInfo,"[object Blob]"===A.call(I)?l(Q.db).then((function(g){return g?I:(e=I,new F((function(g,I){var t=new FileReader;t.onerror=I,t.onloadend=function(I){var t=btoa(I.target.result||"");g({__local_forage_encoded_blob:!0,data:t,type:e.type})},t.readAsBinaryString(e)})));var e})):I})).then((function(I){R(t._dbInfo,"readwrite",(function(Q,F){if(Q)return C(Q);try{var B=F.objectStore(t._dbInfo.storeName);null===I&&(I=void 0);var n=B.put(I,g);F.oncomplete=function(){void 0===I&&(I=null),e(I)},F.onabort=F.onerror=function(){var g=n.error?n.error:n.transaction.error;C(g)}}catch(U){C(U)}}))})).catch(C)}));return B(C,e),C},removeItem:function(g,I){var e=this;g=U(g);var t=new F((function(I,t){e.ready().then((function(){R(e._dbInfo,"readwrite",(function(C,Q){if(C)return t(C);try{var F=Q.objectStore(e._dbInfo.storeName).delete(g);Q.oncomplete=function(){I()},Q.onerror=function(){t(F.error)},Q.onabort=function(){var g=F.error?F.error:F.transaction.error;t(g)}}catch(B){t(B)}}))})).catch(t)}));return B(t,I),t},clear:function(g){var I=this,e=new F((function(g,e){I.ready().then((function(){R(I._dbInfo,"readwrite",(function(t,C){if(t)return e(t);try{var Q=C.objectStore(I._dbInfo.storeName).clear();C.oncomplete=function(){g()},C.onabort=C.onerror=function(){var g=Q.error?Q.error:Q.transaction.error;e(g)}}catch(F){e(F)}}))})).catch(e)}));return B(e,g),e},length:function(g){var I=this,e=new F((function(g,e){I.ready().then((function(){R(I._dbInfo,"readonly",(function(t,C){if(t)return e(t);try{var Q=C.objectStore(I._dbInfo.storeName).count();Q.onsuccess=function(){g(Q.result)},Q.onerror=function(){e(Q.error)}}catch(F){e(F)}}))})).catch(e)}));return B(e,g),e},key:function(g,I){var e=this,t=new F((function(I,t){g<0?I(null):e.ready().then((function(){R(e._dbInfo,"readonly",(function(C,Q){if(C)return t(C);try{var F=Q.objectStore(e._dbInfo.storeName),B=!1,n=F.openCursor();n.onsuccess=function(){var e=n.result;e?0===g||B?I(e.key):(B=!0,e.advance(g)):I(null)},n.onerror=function(){t(n.error)}}catch(U){t(U)}}))})).catch(t)}));return B(t,I),t},keys:function(g){var I=this,e=new F((function(g,e){I.ready().then((function(){R(I._dbInfo,"readonly",(function(t,C){if(t)return e(t);try{var Q=C.objectStore(I._dbInfo.storeName).openCursor(),F=[];Q.onsuccess=function(){var I=Q.result;I?(F.push(I.key),I.continue()):g(F)},Q.onerror=function(){e(Q.error)}}catch(B){e(B)}}))})).catch(e)}));return B(e,g),e},dropInstance:function(g,I){I=s.apply(this,arguments);var e=this.config();(g="function"!==typeof g&&g||{}).name||(g.name=g.name||e.name,g.storeName=g.storeName||e.storeName);var t,Q=this;if(g.name){var n=g.name===e.name&&Q._dbInfo.db,U=n?F.resolve(Q._dbInfo.db):u(g).then((function(I){var e=c[g.name],t=e.forages;e.db=I;for(var C=0;C<t.length;C++)t[C]._dbInfo.db=I;return I}));t=g.storeName?U.then((function(I){if(I.objectStoreNames.contains(g.storeName)){var e=I.version+1;a(g);var t=c[g.name],Q=t.forages;I.close();for(var B=0;B<Q.length;B++){var n=Q[B];n._dbInfo.db=null,n._dbInfo.version=e}return new F((function(I,t){var Q=C.open(g.name,e);Q.onerror=function(g){Q.result.close(),t(g)},Q.onupgradeneeded=function(){Q.result.deleteObjectStore(g.storeName)},Q.onsuccess=function(){var g=Q.result;g.close(),I(g)}})).then((function(g){t.db=g;for(var I=0;I<Q.length;I++){var e=Q[I];e._dbInfo.db=g,r(e._dbInfo)}})).catch((function(I){throw(o(g,I)||F.resolve()).catch((function(){})),I}))}})):U.then((function(I){a(g);var e=c[g.name],t=e.forages;I.close();for(var Q=0;Q<t.length;Q++)t[Q]._dbInfo.db=null;return new F((function(I,e){var t=C.deleteDatabase(g.name);t.onerror=t.onblocked=function(g){var I=t.result;I&&I.close(),e(g)},t.onsuccess=function(){var g=t.result;g&&g.close(),I(g)}})).then((function(g){e.db=g;for(var I=0;I<t.length;I++)r(t[I]._dbInfo)})).catch((function(I){throw(o(g,I)||F.resolve()).catch((function(){})),I}))}))}else t=F.reject("Invalid arguments");return B(t,I),t}},G="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",L=/^~~local_forage_type~([^~]+)~/,V="__lfsc__:".length,h=V+"arbf".length,D=Object.prototype.toString;function p(g){var I,e,t,C,Q,F=.75*g.length,B=g.length,n=0;"="===g[g.length-1]&&(F--,"="===g[g.length-2]&&F--);var U=new ArrayBuffer(F),s=new Uint8Array(U);for(I=0;I<B;I+=4)e=G.indexOf(g[I]),t=G.indexOf(g[I+1]),C=G.indexOf(g[I+2]),Q=G.indexOf(g[I+3]),s[n++]=e<<2|t>>4,s[n++]=(15&t)<<4|C>>2,s[n++]=(3&C)<<6|63&Q;return U}function E(g){var I,e=new Uint8Array(g),t="";for(I=0;I<e.length;I+=3)t+=G[e[I]>>2],t+=G[(3&e[I])<<4|e[I+1]>>4],t+=G[(15&e[I+1])<<2|e[I+2]>>6],t+=G[63&e[I+2]];return e.length%3===2?t=t.substring(0,t.length-1)+"=":e.length%3===1&&(t=t.substring(0,t.length-2)+"=="),t}var N={serialize:function(g,I){var e="";if(g&&(e=D.call(g)),g&&("[object ArrayBuffer]"===e||g.buffer&&"[object ArrayBuffer]"===D.call(g.buffer))){var t,C="__lfsc__:";g instanceof ArrayBuffer?(t=g,C+="arbf"):(t=g.buffer,"[object Int8Array]"===e?C+="si08":"[object Uint8Array]"===e?C+="ui08":"[object Uint8ClampedArray]"===e?C+="uic8":"[object Int16Array]"===e?C+="si16":"[object Uint16Array]"===e?C+="ur16":"[object Int32Array]"===e?C+="si32":"[object Uint32Array]"===e?C+="ui32":"[object Float32Array]"===e?C+="fl32":"[object Float64Array]"===e?C+="fl64":I(new Error("Failed to get type for BinaryArray"))),I(C+E(t))}else if("[object Blob]"===e){var Q=new FileReader;Q.onload=function(){var e="~~local_forage_type~"+g.type+"~"+E(this.result);I("__lfsc__:blob"+e)},Q.readAsArrayBuffer(g)}else try{I(JSON.stringify(g))}catch(F){console.error("Couldn't convert value into a JSON string: ",g),I(null,F)}},deserialize:function(g){if("__lfsc__:"!==g.substring(0,V))return JSON.parse(g);var I,e=g.substring(h),t=g.substring(V,h);if("blob"===t&&L.test(e)){var C=e.match(L);I=C[1],e=e.substring(C[0].length)}var F=p(e);switch(t){case"arbf":return F;case"blob":return Q([F],{type:I});case"si08":return new Int8Array(F);case"ui08":return new Uint8Array(F);case"uic8":return new Uint8ClampedArray(F);case"si16":return new Int16Array(F);case"ur16":return new Uint16Array(F);case"si32":return new Int32Array(F);case"ui32":return new Uint32Array(F);case"fl32":return new Float32Array(F);case"fl64":return new Float64Array(F);default:throw new Error("Unkown type: "+t)}},stringToBuffer:p,bufferToString:E};function W(g,I,e,t){g.executeSql("CREATE TABLE IF NOT EXISTS "+I.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],e,t)}function f(g,I,e,t,C,Q){g.executeSql(e,t,C,(function(g,F){F.code===F.SYNTAX_ERR?g.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?",[I.storeName],(function(g,B){B.rows.length?Q(g,F):W(g,I,(function(){g.executeSql(e,t,C,Q)}),Q)}),Q):Q(g,F)}),Q)}function X(g,I,e,t){var C=this;g=U(g);var Q=new F((function(Q,F){C.ready().then((function(){void 0===I&&(I=null);var B=I,n=C._dbInfo;n.serializer.serialize(I,(function(I,U){U?F(U):n.db.transaction((function(e){f(e,n,"INSERT OR REPLACE INTO "+n.storeName+" (key, value) VALUES (?, ?)",[g,I],(function(){Q(B)}),(function(g,I){F(I)}))}),(function(I){if(I.code===I.QUOTA_ERR){if(t>0)return void Q(X.apply(C,[g,B,e,t-1]));F(I)}}))}))})).catch(F)}));return B(Q,e),Q}function J(g){return new F((function(I,e){g.transaction((function(t){t.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'",[],(function(e,t){for(var C=[],Q=0;Q<t.rows.length;Q++)C.push(t.rows.item(Q).name);I({db:g,storeNames:C})}),(function(g,I){e(I)}))}),(function(g){e(g)}))}))}var v={_driver:"webSQLStorage",_initStorage:function(g){var I=this,e={db:null};if(g)for(var t in g)e[t]="string"!==typeof g[t]?g[t].toString():g[t];var C=new F((function(g,t){try{e.db=openDatabase(e.name,String(e.version),e.description,e.size)}catch(C){return t(C)}e.db.transaction((function(C){W(C,e,(function(){I._dbInfo=e,g()}),(function(g,I){t(I)}))}),t)}));return e.serializer=N,C},_support:"function"===typeof openDatabase,iterate:function(g,I){var e=this,t=new F((function(I,t){e.ready().then((function(){var C=e._dbInfo;C.db.transaction((function(e){f(e,C,"SELECT * FROM "+C.storeName,[],(function(e,t){for(var Q=t.rows,F=Q.length,B=0;B<F;B++){var n=Q.item(B),U=n.value;if(U&&(U=C.serializer.deserialize(U)),void 0!==(U=g(U,n.key,B+1)))return void I(U)}I()}),(function(g,I){t(I)}))}))})).catch(t)}));return B(t,I),t},getItem:function(g,I){var e=this;g=U(g);var t=new F((function(I,t){e.ready().then((function(){var C=e._dbInfo;C.db.transaction((function(e){f(e,C,"SELECT * FROM "+C.storeName+" WHERE key = ? LIMIT 1",[g],(function(g,e){var t=e.rows.length?e.rows.item(0).value:null;t&&(t=C.serializer.deserialize(t)),I(t)}),(function(g,I){t(I)}))}))})).catch(t)}));return B(t,I),t},setItem:function(g,I,e){return X.apply(this,[g,I,e,1])},removeItem:function(g,I){var e=this;g=U(g);var t=new F((function(I,t){e.ready().then((function(){var C=e._dbInfo;C.db.transaction((function(e){f(e,C,"DELETE FROM "+C.storeName+" WHERE key = ?",[g],(function(){I()}),(function(g,I){t(I)}))}))})).catch(t)}));return B(t,I),t},clear:function(g){var I=this,e=new F((function(g,e){I.ready().then((function(){var t=I._dbInfo;t.db.transaction((function(I){f(I,t,"DELETE FROM "+t.storeName,[],(function(){g()}),(function(g,I){e(I)}))}))})).catch(e)}));return B(e,g),e},length:function(g){var I=this,e=new F((function(g,e){I.ready().then((function(){var t=I._dbInfo;t.db.transaction((function(I){f(I,t,"SELECT COUNT(key) as c FROM "+t.storeName,[],(function(I,e){var t=e.rows.item(0).c;g(t)}),(function(g,I){e(I)}))}))})).catch(e)}));return B(e,g),e},key:function(g,I){var e=this,t=new F((function(I,t){e.ready().then((function(){var C=e._dbInfo;C.db.transaction((function(e){f(e,C,"SELECT key FROM "+C.storeName+" WHERE id = ? LIMIT 1",[g+1],(function(g,e){var t=e.rows.length?e.rows.item(0).key:null;I(t)}),(function(g,I){t(I)}))}))})).catch(t)}));return B(t,I),t},keys:function(g){var I=this,e=new F((function(g,e){I.ready().then((function(){var t=I._dbInfo;t.db.transaction((function(I){f(I,t,"SELECT key FROM "+t.storeName,[],(function(I,e){for(var t=[],C=0;C<e.rows.length;C++)t.push(e.rows.item(C).key);g(t)}),(function(g,I){e(I)}))}))})).catch(e)}));return B(e,g),e},dropInstance:function(g,I){I=s.apply(this,arguments);var e=this.config();(g="function"!==typeof g&&g||{}).name||(g.name=g.name||e.name,g.storeName=g.storeName||e.storeName);var t,C=this;return B(t=g.name?new F((function(I){var t;t=g.name===e.name?C._dbInfo.db:openDatabase(g.name,"","",0),g.storeName?I({db:t,storeNames:[g.storeName]}):I(J(t))})).then((function(g){return new F((function(I,e){g.db.transaction((function(t){function C(g){return new F((function(I,e){t.executeSql("DROP TABLE IF EXISTS "+g,[],(function(){I()}),(function(g,I){e(I)}))}))}for(var Q=[],B=0,n=g.storeNames.length;B<n;B++)Q.push(C(g.storeNames[B]));F.all(Q).then((function(){I()})).catch((function(g){e(g)}))}),(function(g){e(g)}))}))})):F.reject("Invalid arguments"),I),t}};function k(g,I){var e=g.name+"/";return g.storeName!==I.storeName&&(e+=g.storeName+"/"),e}function H(){return!function(){try{return localStorage.setItem("_localforage_support_test",!0),localStorage.removeItem("_localforage_support_test"),!1}catch(g){return!0}}()||localStorage.length>0}var M={_driver:"localStorageWrapper",_initStorage:function(g){var I={};if(g)for(var e in g)I[e]=g[e];return I.keyPrefix=k(g,this._defaultConfig),H()?(this._dbInfo=I,I.serializer=N,F.resolve()):F.reject()},_support:function(){try{return"undefined"!==typeof localStorage&&"setItem"in localStorage&&!!localStorage.setItem}catch(g){return!1}}(),iterate:function(g,I){var e=this,t=e.ready().then((function(){for(var I=e._dbInfo,t=I.keyPrefix,C=t.length,Q=localStorage.length,F=1,B=0;B<Q;B++){var n=localStorage.key(B);if(0===n.indexOf(t)){var U=localStorage.getItem(n);if(U&&(U=I.serializer.deserialize(U)),void 0!==(U=g(U,n.substring(C),F++)))return U}}}));return B(t,I),t},getItem:function(g,I){var e=this;g=U(g);var t=e.ready().then((function(){var I=e._dbInfo,t=localStorage.getItem(I.keyPrefix+g);return t&&(t=I.serializer.deserialize(t)),t}));return B(t,I),t},setItem:function(g,I,e){var t=this;g=U(g);var C=t.ready().then((function(){void 0===I&&(I=null);var e=I;return new F((function(C,Q){var F=t._dbInfo;F.serializer.serialize(I,(function(I,t){if(t)Q(t);else try{localStorage.setItem(F.keyPrefix+g,I),C(e)}catch(B){"QuotaExceededError"!==B.name&&"NS_ERROR_DOM_QUOTA_REACHED"!==B.name||Q(B),Q(B)}}))}))}));return B(C,e),C},removeItem:function(g,I){var e=this;g=U(g);var t=e.ready().then((function(){var I=e._dbInfo;localStorage.removeItem(I.keyPrefix+g)}));return B(t,I),t},clear:function(g){var I=this,e=I.ready().then((function(){for(var g=I._dbInfo.keyPrefix,e=localStorage.length-1;e>=0;e--){var t=localStorage.key(e);0===t.indexOf(g)&&localStorage.removeItem(t)}}));return B(e,g),e},length:function(g){var I=this.keys().then((function(g){return g.length}));return B(I,g),I},key:function(g,I){var e=this,t=e.ready().then((function(){var I,t=e._dbInfo;try{I=localStorage.key(g)}catch(C){I=null}return I&&(I=I.substring(t.keyPrefix.length)),I}));return B(t,I),t},keys:function(g){var I=this,e=I.ready().then((function(){for(var g=I._dbInfo,e=localStorage.length,t=[],C=0;C<e;C++){var Q=localStorage.key(C);0===Q.indexOf(g.keyPrefix)&&t.push(Q.substring(g.keyPrefix.length))}return t}));return B(e,g),e},dropInstance:function(g,I){if(I=s.apply(this,arguments),!(g="function"!==typeof g&&g||{}).name){var e=this.config();g.name=g.name||e.name,g.storeName=g.storeName||e.storeName}var t,C=this;return B(t=g.name?new F((function(I){g.storeName?I(k(g,C._defaultConfig)):I(g.name+"/")})).then((function(g){for(var I=localStorage.length-1;I>=0;I--){var e=localStorage.key(I);0===e.indexOf(g)&&localStorage.removeItem(e)}})):F.reject("Invalid arguments"),I),t}},Y=function(g,I){for(var e,t,C=g.length,Q=0;Q<C;){if((e=g[Q])===(t=I)||"number"===typeof e&&"number"===typeof t&&isNaN(e)&&isNaN(t))return!0;Q++}return!1},w=Array.isArray||function(g){return"[object Array]"===Object.prototype.toString.call(g)},T={},z={},O={INDEXEDDB:S,WEBSQL:v,LOCALSTORAGE:M},K=[O.INDEXEDDB._driver,O.WEBSQL._driver,O.LOCALSTORAGE._driver],j=["dropInstance"],P=["clear","getItem","iterate","key","keys","length","removeItem","setItem"].concat(j),_={description:"",driver:K.slice(),name:"localforage",size:4980736,storeName:"keyvaluepairs",version:1};function q(g,I){g[I]=function(){var e=arguments;return g.ready().then((function(){return g[I].apply(g,e)}))}}function $(){for(var g=1;g<arguments.length;g++){var I=arguments[g];if(I)for(var e in I)I.hasOwnProperty(e)&&(w(I[e])?arguments[0][e]=I[e].slice():arguments[0][e]=I[e])}return arguments[0]}var gg=new(function(){function g(I){for(var e in function(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}(this,g),O)if(O.hasOwnProperty(e)){var t=O[e],C=t._driver;this[e]=C,T[C]||this.defineDriver(t)}this._defaultConfig=$({},_),this._config=$({},this._defaultConfig,I),this._driverSet=null,this._initDriver=null,this._ready=!1,this._dbInfo=null,this._wrapLibraryMethodsWithReady(),this.setDriver(this._config.driver).catch((function(){}))}return g.prototype.config=function(g){if("object"===("undefined"===typeof g?"undefined":t(g))){if(this._ready)return new Error("Can't call config() after localforage has been used.");for(var I in g){if("storeName"===I&&(g[I]=g[I].replace(/\W/g,"_")),"version"===I&&"number"!==typeof g[I])return new Error("Database version must be a number.");this._config[I]=g[I]}return!("driver"in g)||!g.driver||this.setDriver(this._config.driver)}return"string"===typeof g?this._config[g]:this._config},g.prototype.defineDriver=function(g,I,e){var t=new F((function(I,e){try{var t=g._driver,C=new Error("Custom driver not compliant; see https://mozilla.github.io/localForage/#definedriver");if(!g._driver)return void e(C);for(var Q=P.concat("_initStorage"),n=0,U=Q.length;n<U;n++){var s=Q[n];if((!Y(j,s)||g[s])&&"function"!==typeof g[s])return void e(C)}!function(){for(var I=function(g){return function(){var I=new Error("Method "+g+" is not implemented by the current driver"),e=F.reject(I);return B(e,arguments[arguments.length-1]),e}},e=0,t=j.length;e<t;e++){var C=j[e];g[C]||(g[C]=I(C))}}();var i=function(e){T[t]&&console.info("Redefining LocalForage driver: "+t),T[t]=g,z[t]=e,I()};"_support"in g?g._support&&"function"===typeof g._support?g._support().then(i,e):i(!!g._support):i(!0)}catch(c){e(c)}}));return n(t,I,e),t},g.prototype.driver=function(){return this._driver||null},g.prototype.getDriver=function(g,I,e){var t=T[g]?F.resolve(T[g]):F.reject(new Error("Driver not found."));return n(t,I,e),t},g.prototype.getSerializer=function(g){var I=F.resolve(N);return n(I,g),I},g.prototype.ready=function(g){var I=this,e=I._driverSet.then((function(){return null===I._ready&&(I._ready=I._initDriver()),I._ready}));return n(e,g,g),e},g.prototype.setDriver=function(g,I,e){var t=this;w(g)||(g=[g]);var C=this._getSupportedDrivers(g);function Q(){t._config.driver=t.driver()}function B(g){return t._extend(g),Q(),t._ready=t._initStorage(t._config),t._ready}var U=null!==this._driverSet?this._driverSet.catch((function(){return F.resolve()})):F.resolve();return this._driverSet=U.then((function(){var g=C[0];return t._dbInfo=null,t._ready=null,t.getDriver(g).then((function(g){t._driver=g._driver,Q(),t._wrapLibraryMethodsWithReady(),t._initDriver=function(g){return function(){var I=0;return function e(){for(;I<g.length;){var C=g[I];return I++,t._dbInfo=null,t._ready=null,t.getDriver(C).then(B).catch(e)}Q();var n=new Error("No available storage method found.");return t._driverSet=F.reject(n),t._driverSet}()}}(C)}))})).catch((function(){Q();var g=new Error("No available storage method found.");return t._driverSet=F.reject(g),t._driverSet})),n(this._driverSet,I,e),this._driverSet},g.prototype.supports=function(g){return!!z[g]},g.prototype._extend=function(g){$(this,g)},g.prototype._getSupportedDrivers=function(g){for(var I=[],e=0,t=g.length;e<t;e++){var C=g[e];this.supports(C)&&I.push(C)}return I},g.prototype._wrapLibraryMethodsWithReady=function(){for(var g=0,I=P.length;g<I;g++)q(this,P[g])},g.prototype.createInstance=function(I){return new g(I)},g}());I.exports=gg},{3:3}]},{},[4])(4)}).call(this,e(67))},,,,,function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z"}),"ArrowBack");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8z"}),"ArrowForward");I.default=Q},function(g,I,e){"use strict";function t(g){return"function"===typeof g?g():g}function C(){var g={};return g.promise=new Promise((function(I,e){g.resolve=I,g.reject=e})),g}g.exports=function(g){var I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},Q=void 0,F=void 0,B=void 0,n=[];return function(){var s=t(I),i=(new Date).getTime(),c=!Q||i-Q>s;Q=i;for(var A=arguments.length,l=Array(A),a=0;a<A;a++)l[a]=arguments[a];if(c&&e.leading)return e.accumulate?Promise.resolve(g.call(this,[l])).then((function(g){return g[0]})):Promise.resolve(g.call.apply(g,[this].concat(l)));if(F?clearTimeout(B):F=C(),n.push(l),B=setTimeout(U.bind(this),s),e.accumulate){var r=n.length-1;return F.promise.then((function(g){return g[r]}))}return F.promise};function U(){var I=F;clearTimeout(B),Promise.resolve(e.accumulate?g.call(this,n):g.apply(this,n[n.length-1])).then(I.resolve,I.reject),n=[],F=null}}},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M7 11v2h10v-2H7zm5-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"}),"RemoveCircleOutline");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M13 7h-2v4H7v2h4v4h2v-4h4v-2h-4V7zm-1-5C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"}),"AddCircleOutline");I.default=Q},,function(g,I,e){"use strict";e.d(I,"a",(function(){return T}));var t=e(0),C=e.n(t);function Q(g,I){return g.map((function(g,e){return g+I[e]}))}function F(g,I){return g.map((function(g,e){return g-I[e]}))}function B(g,I,e){return e=e||Math.hypot.apply(Math,g),I?e/I:0}function n(g,I){return I?g.map((function(g){return g/I})):Array(g.length).fill(0)}function U(g){return Math.hypot.apply(Math,g)}function s(g,I){return I=I||Math.hypot.apply(Math,g)||1,g.map((function(g){return g/I}))}function i(g,I,e){var t=Math.hypot.apply(Math,I);return{velocities:n(I,e),velocity:B(I,e,t),distance:U(g),direction:s(I,t)}}function c(g,I){return Math.abs(g)>=I&&Math.sign(g)*I}function A(g,I,e){return 0===I||Math.abs(I)===1/0?function(g,I){return Math.pow(g,5*I)}(g,e):g*I*e/(I+e*g)}function l(g,I,e,t){return void 0===t&&(t=.15),0===t?function(g,I,e){return Math.max(I,Math.min(g,e))}(g,I,e):g<I?-A(I-g,e-I,t)+I:g>e?A(g-e,e-I,t)+e:g}function a(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}function r(){return(r=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}function o(g,I){g.prototype=Object.create(I.prototype),g.prototype.constructor=g,g.__proto__=I}function d(g,I){if(null==g)return{};var e,t,C={},Q=Object.keys(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||(C[e]=g[e]);return C}function u(g,I){(null==I||I>g.length)&&(I=g.length);for(var e=0,t=new Array(I);e<I;e++)t[e]=g[e];return t}function y(g){var I=0;if("undefined"===typeof Symbol||null==g[Symbol.iterator]){if(Array.isArray(g)||(g=function(g,I){if(g){if("string"===typeof g)return u(g,I);var e=Object.prototype.toString.call(g).slice(8,-1);return"Object"===e&&g.constructor&&(e=g.constructor.name),"Map"===e||"Set"===e?Array.from(e):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?u(g,I):void 0}}(g)))return function(){return I>=g.length?{done:!0}:{done:!1,value:g[I++]}};throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(I=g[Symbol.iterator]()).next.bind(I)}function b(){}var Z=function(){for(var g=arguments.length,I=new Array(g),e=0;e<g;e++)I[e]=arguments[e];return function(){for(var g=arguments.length,e=new Array(g),t=0;t<g;t++)e[t]=arguments[t];return I.forEach((function(g){return g.apply(void 0,e)}))}},m=function(g){return Array.isArray(g)?g:[g,g]},x=function(g,I){return void 0!==g?g:I};function R(g,I){var e={};return Object.entries(g).forEach((function(g){var t=g[0],C=g[1];return(void 0!==C||t in I)&&(e[t]=C)})),e}function S(g){return"function"===typeof g?g():g}function G(){var g={_active:!1,_blocked:!1,_intentional:[!1,!1],_movement:[0,0],_initial:[0,0],_lastEventType:void 0,event:void 0,values:[0,0],velocities:[0,0],delta:[0,0],movement:[0,0],offset:[0,0],lastOffset:[0,0],direction:[0,0],initial:[0,0],previous:[0,0],first:!1,last:!1,active:!1,timeStamp:0,startTime:0,elapsedTime:0,cancel:b,canceled:!1,memo:void 0,args:void 0},I={axis:void 0,xy:[0,0],vxvy:[0,0],velocity:0,distance:0},e={da:[0,0],vdva:[0,0],origin:void 0,turns:0};return{shared:{hovering:!1,scrolling:!1,wheeling:!1,dragging:!1,moving:!1,pinching:!1,touches:0,buttons:0,down:!1,shiftKey:!1,altKey:!1,metaKey:!1,ctrlKey:!1},drag:r({},g,{},I,{_isTap:!0,_delayedEvent:!1,tap:!1,swipe:[0,0]}),pinch:r({},g,{},e),wheel:r({},g,{},I),move:r({},g,{},I),scroll:r({},g,{},I)}}var L=function(g){return function(I,e,t){var C=g?"addEventListener":"removeEventListener";e.forEach((function(g){var e=g[0],Q=g[1];return I[C](e,Q,t)}))}};var V=L(!0),h=L(!1);function D(g){if("touches"in g){var I=g.touches,e=g.changedTouches;return I.length>0?I:e}return null}function p(g){var I="buttons"in g?g.buttons:0,e=D(g),t=e&&e.length||0;return r({touches:t,down:t>0||I>0,buttons:I},function(g){return{shiftKey:g.shiftKey,altKey:g.altKey,metaKey:g.metaKey,ctrlKey:g.ctrlKey}}(g))}function E(g){var I=D(g),e=I?I[0]:g;return{values:[e.clientX,e.clientY]}}var N=function(){var g=this;this.state=G(),this.timeouts={},this.domListeners=[],this.windowListeners={},this.bindings={},this.clean=function(){g.resetBindings(),Object.values(g.timeouts).forEach(clearTimeout),Object.keys(g.windowListeners).forEach((function(I){return g.removeWindowListeners(I)}))},this.resetBindings=function(){g.bindings={};var I=g.getDomTarget();I&&(h(I,g.domListeners,g.config.eventOptions),g.domListeners=[])},this.getDomTarget=function(){var I=g.config.domTarget;return I&&"current"in I?I.current:I},this.addWindowListeners=function(I,e){g.config.window&&(g.windowListeners[I]=e,V(g.config.window,e,g.config.eventOptions))},this.removeWindowListeners=function(I){if(g.config.window){var e=g.windowListeners[I];e&&(h(g.config.window,e,g.config.eventOptions),delete g.windowListeners[I])}},this.addDomTargetListeners=function(I){Object.entries(g.bindings).forEach((function(I){var e=I[0],t=I[1];g.domListeners.push([e.substr(2).toLowerCase(),Z.apply(void 0,t)])})),V(I,g.domListeners,g.config.eventOptions)},this.addBindings=function(I,e){(Array.isArray(I)?I:[I]).forEach((function(I){g.bindings[I]?g.bindings[I].push(e):g.bindings[I]=[e]}))},this.getBindings=function(){var I={},e=g.config.captureString;return Object.entries(g.bindings).forEach((function(g){var t=g[0],C=g[1],Q=Array.isArray(C)?C:[C];I[t+e]=Z.apply(void 0,Q)})),I},this.getBind=function(){if(g.config.domTarget){var I=g.getDomTarget();return I&&g.addDomTargetListeners(I),g.clean}return g.getBindings()}};function W(g,I,e,t){var Q=C.a.useMemo((function(){var g=new N;return{nativeRefs:t,current:g,bind:function(){g.resetBindings();for(var e=arguments.length,t=new Array(e),C=0;C<e;C++)t[C]=arguments[C];for(var F,B=y(I);!(F=B()).done;){var n=F.value;new n(g,t).addBindings()}if(Q.nativeRefs)for(var U in Q.nativeRefs)g.addBindings(U,Q.nativeRefs[U]);return g.getBind()}}}),[]);return Q.current.config=e,Q.current.handlers=g,Q.nativeRefs=t,C.a.useEffect((function(){return Q.current.clean}),[]),Q.bind}var f=function(){function g(g,I,e){var t=this;void 0===e&&(e=[]),this.stateKey=g,this.controller=I,this.args=e,this.debounced=!0,this.setTimeout=function(g,I){var e;void 0===I&&(I=140);for(var C=arguments.length,Q=new Array(C>2?C-2:0),F=2;F<C;F++)Q[F-2]=arguments[F];t.controller.timeouts[t.stateKey]=(e=window).setTimeout.apply(e,[g,I].concat(Q))},this.clearTimeout=function(){clearTimeout(t.controller.timeouts[t.stateKey])},this.addWindowListeners=function(g){t.controller.addWindowListeners(t.stateKey,g)},this.removeWindowListeners=function(){t.controller.removeWindowListeners(t.stateKey)},this.getStartGestureState=function(g,I){return r({},G()[t.stateKey],{_active:!0,values:g,initial:g,offset:t.state.offset,lastOffset:t.state.offset,startTime:I.timeStamp})},this.rubberband=function(g,I){var e=t.config.bounds;return g.map((function(g,t){return l(g,e[t][0],e[t][1],I[t])}))},this.fireGestureHandler=function(g){if(t.state._blocked)return t.debounced||(t.state._active=!1,t.clean()),null;var I=t.state._intentional,e=I[0],C=I[1];if(!g&&!1===e&&!1===C)return null;var Q=t.state,F=Q._active,B=Q.active;t.state.active=F,t.state.first=F&&!B,t.state.last=B&&!F,t.controller.state.shared[t.ingKey]=F;var n=r({},t.controller.state.shared,{},t.state,{},t.mapStateValues(t.state)),U=t.handler(n);return t.state.memo=void 0!==U?U:t.state.memo,F||t.clean(),n}}var I,e,t,C=g.prototype;return C.updateSharedState=function(g){Object.assign(this.controller.state.shared,g)},C.updateGestureState=function(g){Object.assign(this.state,g)},C.getGenericPayload=function(g,I){var e=g.timeStamp,t=g.type,C=this.state,Q=C.values,F=C.startTime;return{_lastEventType:t,event:g,timeStamp:e,elapsedTime:I?0:e-F,args:this.args,previous:Q}},C.checkIntentionality=function(g,I,e){return{_intentional:g,_blocked:!1}},C.getMovement=function(g,I){void 0===I&&(I=this.state);var e=this.config,t=e.initial,C=e.threshold,B=e.rubberband,n=C[0],U=C[1],s=I,i=s._initial,A=s._active,l=s._intentional,a=s.lastOffset,o=s.movement,d=l[0],u=l[1],y=this.getInternalMovement(g,I),b=y[0],Z=y[1];!1===d&&(d=c(b,n)),!1===u&&(u=c(Z,U));var m=this.checkIntentionality([d,u],[b,Z],I),x=m._intentional,R=m._blocked,G=x[0],L=x[1],V=[b,Z];if(!1!==G&&!1===l[0]&&(i[0]=S(t)[0]),!1!==L&&!1===l[1]&&(i[1]=S(t)[1]),R)return r({},m,{_movement:V,delta:[0,0]});var h=[!1!==G?b-G:S(t)[0],!1!==L?Z-L:S(t)[1]],D=Q(h,a),p=A?B:[0,0];return r({},m,{_initial:i,_movement:V,movement:h=this.rubberband(Q(h,i),p),offset:this.rubberband(D,p),delta:F(h,o)})},C.clean=function(){this.clearTimeout(),this.removeWindowListeners()},I=g,(e=[{key:"config",get:function(){return this.controller.config[this.stateKey]}},{key:"enabled",get:function(){return this.controller.config.enabled&&this.config.enabled}},{key:"state",get:function(){return this.controller.state[this.stateKey]}},{key:"handler",get:function(){return this.controller.handlers[this.stateKey]}}])&&a(I.prototype,e),t&&a(I,t),g}(),X=function(g){function I(){return g.apply(this,arguments)||this}o(I,g);var e=I.prototype;return e.getInternalMovement=function(g,I){return F(g,I.initial)},e.checkIntentionality=function(g,I,e){var t=g,C=t[0],Q=t[1],F=!1!==C||!1!==Q,B=e.axis,n=!1;if(F){var U=I.map(Math.abs),s=U[0],i=U[1],c=this.config,A=c.axis,l=c.lockDirection;if(B=B||(s>i?"x":s<i?"y":void 0),A||l)if(B)if(A&&B!==A)n=!0;else g["x"===B?1:0]=!1;else g=[!1,!1]}return{_intentional:g,_blocked:n,axis:B}},e.getKinematics=function(g,I){var e=this.state.timeStamp,t=this.getMovement(g,this.state),C=t._blocked,Q=t.delta,F=t.movement;return C?t:r({values:g,delta:Q},t,{},i(F,Q,I.timeStamp-e))},e.mapStateValues=function(g){return{xy:g.values,vxvy:g.velocities}},I}(f),J=function(g){function I(I,e){var t;return(t=g.call(this,"drag",I,e)||this).ingKey="dragging",t.wasTouch=!1,t.isEventTypeTouch=function(g){return!!g&&0===g.indexOf("touch")},t.dragShouldStart=function(g){var I=p(g).touches,e=t.state._lastEventType;if(!t.controller.config.pointer&&t.isEventTypeTouch(e)&&!t.isEventTypeTouch(g.type)&&Math.abs(g.timeStamp-t.state.startTime)<200)return!1;return t.enabled&&I<2},t.setPointers=function(g){var I=g.currentTarget,e=g.pointerId;I&&I.setPointerCapture(e),t.updateGestureState({currentTarget:I,pointerId:e})},t.removePointers=function(){var g=t.state,I=g.currentTarget,e=g.pointerId;I&&e&&I.releasePointerCapture(e)},t.setListeners=function(g){t.removeWindowListeners();var I=g?[["touchmove",t.onDragChange],["touchend",t.onDragEnd],["touchcancel",t.onDragEnd]]:[["mousemove",t.onDragChange],["mouseup",t.onDragEnd]];t.addWindowListeners(I)},t.onDragStart=function(g){t.dragShouldStart(g)&&(t.controller.config.pointer?t.setPointers(g):t.setListeners(t.isEventTypeTouch(g.type)),t.config.delay>0?(t.state._delayedEvent=!0,"function"===typeof g.persist&&g.persist(),t.setTimeout((function(){return t.startDrag(g)}),t.config.delay)):t.startDrag(g))},t.onDragChange=function(g){if(!t.state.canceled)if(t.state._active){var I=p(g);if(I.down){t.updateSharedState(I);var e=E(g).values,C=t.getKinematics(e,g),Q=t.state._isTap;Q&&U(C._movement)>=3&&(Q=!1),t.updateGestureState(r({},t.getGenericPayload(g),{},C,{_isTap:Q,cancel:function(){return t.onCancel()}})),t.fireGestureHandler()}else t.onDragEnd(g)}else t.state._delayedEvent&&(t.clearTimeout(),t.startDrag(g))},t.onDragEnd=function(g){t.state._active=!1,t.updateSharedState({down:!1,buttons:0,touches:0});var I=t.state,e=I._isTap,C=I.values,Q=I.velocities,F=Q[0],B=Q[1],n=I.movement,U=n[0],s=n[1],i=I._intentional,c=i[0],A=i[1],l=r({},t.getGenericPayload(g),{},t.getMovement(C)),a=l.elapsedTime,o=t.config,d=o.swipeVelocity,u=d[0],y=d[1],b=o.swipeDistance,Z=b[0],m=b[1],x=[0,0];a<220&&(!1!==c&&Math.abs(F)>u&&Math.abs(U)>Z&&(x[0]=Math.sign(F)),!1!==A&&Math.abs(B)>y&&Math.abs(s)>m&&(x[1]=Math.sign(B))),t.updateGestureState(r({event:g},l,{tap:e,swipe:x})),t.fireGestureHandler(t.config.filterTaps&&t.state._isTap)},t.clean=function(){g.prototype.clean.call(function(g){if(void 0===g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return g}(t)),t.state._delayedEvent=!1,t.controller.config.pointer&&t.removePointers()},t.onCancel=function(){t.updateGestureState({canceled:!0,cancel:b}),t.state._active=!1,t.updateSharedState({down:!1,buttons:0,touches:0}),requestAnimationFrame((function(){return t.fireGestureHandler()}))},t}o(I,g);var e=I.prototype;return e.startDrag=function(g){var I=this,e=E(g).values;this.updateSharedState(p(g));var t=r({},this.getStartGestureState(e,g),{},this.getGenericPayload(g,!0));this.updateGestureState(r({},t,{},this.getMovement(e,t),{cancel:function(){return I.onCancel()}})),this.fireGestureHandler()},e.addBindings=function(){this.controller.config.pointer?(this.controller.addBindings("onPointerDown",this.onDragStart),this.controller.addBindings("onPointerMove",this.onDragChange),this.controller.addBindings(["onPointerUp","onPointerCancel"],this.onDragEnd)):this.controller.addBindings(["onTouchStart","onMouseDown"],this.onDragStart)},I}(X),v="undefined"!==typeof window?window:void 0,k={lockDirection:!1,axis:void 0,bounds:void 0};function H(g){void 0===g&&(g={});var I=g,e=I.eventOptions,t=(e=void 0===e?{}:e).passive,C=void 0===t||t,Q=e.capture,F=void 0!==Q&&Q,B=e.pointer,n=void 0!==B&&B,U=I.window,s=void 0===U?v:U,i=I.domTarget,c=void 0===i?void 0:i,A=I.enabled,l=void 0===A||A;return r({},d(I,["eventOptions","window","domTarget","enabled"]),{enabled:l,domTarget:c,window:s,eventOptions:{passive:!c||!!C,capture:!!F},captureString:F?"Capture":"",pointer:!!n})}function M(g){var I=g.threshold,e=void 0===I?void 0:I,t=g.rubberband,C=void 0===t?0:t,Q=g.enabled,F=void 0===Q||Q,B=g.initial;return"boolean"===typeof C&&(C=C?.15:0),void 0===e&&(e=0),{enabled:F,initial:void 0===B?[0,0]:B,threshold:m(e),rubberband:m(C)}}function Y(g){void 0===g&&(g={});var I=g,e=I.axis,t=I.lockDirection,C=I.bounds,Q=void 0===C?{}:C,F=d(I,["axis","lockDirection","bounds"]),B=[[x(Q.left,-1/0),x(Q.right,1/0)],[x(Q.top,-1/0),x(Q.bottom,1/0)]];return r({},M(F),{},k,{},R({axis:e,lockDirection:t},g),{bounds:B})}function w(g){void 0===g&&(g={});var I=g,e=I.enabled,t=I.threshold,C=I.bounds,Q=I.rubberband,F=I.initial,B=d(I,["enabled","threshold","bounds","rubberband","initial"]),n=B.swipeVelocity,U=void 0===n?.5:n,s=B.swipeDistance,i=void 0===s?60:s,c=B.delay,A=void 0!==c&&c,l=B.filterTaps,a=void 0!==l&&l,o=B.axis,u=B.lockDirection;void 0===t?t=Math.max(0,a?3:0,u||o?1:0):a=!0;var y=Y(R({enabled:e,threshold:t,bounds:C,rubberband:Q,axis:o,lockDirection:u,initial:F},g));return r({},y,{filterTaps:a||y.threshold[0]+y.threshold[1]>0,swipeVelocity:m(U),swipeDistance:m(i),delay:"number"===typeof A?A:A?180:0})}function T(g,I){void 0===I&&(I={});var e=I,t=e.domTarget,C=e.eventOptions,Q=e.window,F=d(e,["domTarget","eventOptions","window"]),B=r({},H({domTarget:t,eventOptions:C,window:Q}),{drag:w(F)});return W({drag:g},[J],B)}},function(g,I){g.exports=function(g,I,e,t){var C=e?e.call(t,g,I):void 0;if(void 0!==C)return!!C;if(g===I)return!0;if("object"!==typeof g||!g||"object"!==typeof I||!I)return!1;var Q=Object.keys(g),F=Object.keys(I);if(Q.length!==F.length)return!1;for(var B=Object.prototype.hasOwnProperty.bind(I),n=0;n<Q.length;n++){var U=Q[n];if(!B(U))return!1;var s=g[U],i=I[U];if(!1===(C=e?e.call(t,s,i,U):void 0)||void 0===C&&s!==i)return!1}return!0}},function(g,I,e){"use strict";I.a=function(g){function I(g,I,t){var C=I.trim().split(l);I=C;var Q=C.length,F=g.length;switch(F){case 0:case 1:var B=0;for(g=0===F?"":g[0]+" ";B<Q;++B)I[B]=e(g,I[B],t).trim();break;default:var n=B=0;for(I=[];B<Q;++B)for(var U=0;U<F;++U)I[n++]=e(g[U]+" ",C[B],t).trim()}return I}function e(g,I,e){var t=I.charCodeAt(0);switch(33>t&&(t=(I=I.trim()).charCodeAt(0)),t){case 38:return I.replace(a,"$1"+g.trim());case 58:return g.trim()+I.replace(a,"$1"+g.trim());default:if(0<1*e&&0<I.indexOf("\f"))return I.replace(a,(58===g.charCodeAt(0)?"":"$1")+g.trim())}return g+I}function t(g,I,e,Q){var F=g+";",B=2*I+3*e+4*Q;if(944===B){g=F.indexOf(":",9)+1;var n=F.substring(g,F.length-1).trim();return n=F.substring(0,g).trim()+n+";",1===V||2===V&&C(n,1)?"-webkit-"+n+n:n}if(0===V||2===V&&!C(F,1))return F;switch(B){case 1015:return 97===F.charCodeAt(10)?"-webkit-"+F+F:F;case 951:return 116===F.charCodeAt(3)?"-webkit-"+F+F:F;case 963:return 110===F.charCodeAt(5)?"-webkit-"+F+F:F;case 1009:if(100!==F.charCodeAt(4))break;case 969:case 942:return"-webkit-"+F+F;case 978:return"-webkit-"+F+"-moz-"+F+F;case 1019:case 983:return"-webkit-"+F+"-moz-"+F+"-ms-"+F+F;case 883:if(45===F.charCodeAt(8))return"-webkit-"+F+F;if(0<F.indexOf("image-set(",11))return F.replace(R,"$1-webkit-$2")+F;break;case 932:if(45===F.charCodeAt(4))switch(F.charCodeAt(5)){case 103:return"-webkit-box-"+F.replace("-grow","")+"-webkit-"+F+"-ms-"+F.replace("grow","positive")+F;case 115:return"-webkit-"+F+"-ms-"+F.replace("shrink","negative")+F;case 98:return"-webkit-"+F+"-ms-"+F.replace("basis","preferred-size")+F}return"-webkit-"+F+"-ms-"+F+F;case 964:return"-webkit-"+F+"-ms-flex-"+F+F;case 1023:if(99!==F.charCodeAt(8))break;return"-webkit-box-pack"+(n=F.substring(F.indexOf(":",15)).replace("flex-","").replace("space-between","justify"))+"-webkit-"+F+"-ms-flex-pack"+n+F;case 1005:return c.test(F)?F.replace(i,":-webkit-")+F.replace(i,":-moz-")+F:F;case 1e3:switch(I=(n=F.substring(13).trim()).indexOf("-")+1,n.charCodeAt(0)+n.charCodeAt(I)){case 226:n=F.replace(u,"tb");break;case 232:n=F.replace(u,"tb-rl");break;case 220:n=F.replace(u,"lr");break;default:return F}return"-webkit-"+F+"-ms-"+n+F;case 1017:if(-1===F.indexOf("sticky",9))break;case 975:switch(I=(F=g).length-10,B=(n=(33===F.charCodeAt(I)?F.substring(0,I):F).substring(g.indexOf(":",7)+1).trim()).charCodeAt(0)+(0|n.charCodeAt(7))){case 203:if(111>n.charCodeAt(8))break;case 115:F=F.replace(n,"-webkit-"+n)+";"+F;break;case 207:case 102:F=F.replace(n,"-webkit-"+(102<B?"inline-":"")+"box")+";"+F.replace(n,"-webkit-"+n)+";"+F.replace(n,"-ms-"+n+"box")+";"+F}return F+";";case 938:if(45===F.charCodeAt(5))switch(F.charCodeAt(6)){case 105:return n=F.replace("-items",""),"-webkit-"+F+"-webkit-box-"+n+"-ms-flex-"+n+F;case 115:return"-webkit-"+F+"-ms-flex-item-"+F.replace(Z,"")+F;default:return"-webkit-"+F+"-ms-flex-line-pack"+F.replace("align-content","").replace(Z,"")+F}break;case 973:case 989:if(45!==F.charCodeAt(3)||122===F.charCodeAt(4))break;case 931:case 953:if(!0===x.test(g))return 115===(n=g.substring(g.indexOf(":")+1)).charCodeAt(0)?t(g.replace("stretch","fill-available"),I,e,Q).replace(":fill-available",":stretch"):F.replace(n,"-webkit-"+n)+F.replace(n,"-moz-"+n.replace("fill-",""))+F;break;case 962:if(F="-webkit-"+F+(102===F.charCodeAt(5)?"-ms-"+F:"")+F,211===e+Q&&105===F.charCodeAt(13)&&0<F.indexOf("transform",10))return F.substring(0,F.indexOf(";",27)+1).replace(A,"$1-webkit-$2")+F}return F}function C(g,I){var e=g.indexOf(1===I?":":"{"),t=g.substring(0,3!==I?e:10);return e=g.substring(e+1,g.length-1),E(2!==I?t:t.replace(m,"$1"),e,I)}function Q(g,I){var e=t(I,I.charCodeAt(0),I.charCodeAt(1),I.charCodeAt(2));return e!==I+";"?e.replace(b," or ($1)").substring(4):"("+I+")"}function F(g,I,e,t,C,Q,F,B,U,s){for(var i,c=0,A=I;c<p;++c)switch(i=D[c].call(n,g,A,e,t,C,Q,F,B,U,s)){case void 0:case!1:case!0:case null:break;default:A=i}if(A!==I)return A}function B(g){return void 0!==(g=g.prefix)&&(E=null,g?"function"!==typeof g?V=1:(V=2,E=g):V=0),B}function n(g,e){var B=g;if(33>B.charCodeAt(0)&&(B=B.trim()),B=[B],0<p){var n=F(-1,e,B,B,G,S,0,0,0,0);void 0!==n&&"string"===typeof n&&(e=n)}var i=function g(e,B,n,i,c){for(var A,l,a,u,b,Z=0,m=0,x=0,R=0,D=0,E=0,W=a=A=0,f=0,X=0,J=0,v=0,k=n.length,H=k-1,M="",Y="",w="",T="";f<k;){if(l=n.charCodeAt(f),f===H&&0!==m+R+x+Z&&(0!==m&&(l=47===m?10:47),R=x=Z=0,k++,H++),0===m+R+x+Z){if(f===H&&(0<X&&(M=M.replace(s,"")),0<M.trim().length)){switch(l){case 32:case 9:case 59:case 13:case 10:break;default:M+=n.charAt(f)}l=59}switch(l){case 123:for(A=(M=M.trim()).charCodeAt(0),a=1,v=++f;f<k;){switch(l=n.charCodeAt(f)){case 123:a++;break;case 125:a--;break;case 47:switch(l=n.charCodeAt(f+1)){case 42:case 47:g:{for(W=f+1;W<H;++W)switch(n.charCodeAt(W)){case 47:if(42===l&&42===n.charCodeAt(W-1)&&f+2!==W){f=W+1;break g}break;case 10:if(47===l){f=W+1;break g}}f=W}}break;case 91:l++;case 40:l++;case 34:case 39:for(;f++<H&&n.charCodeAt(f)!==l;);}if(0===a)break;f++}switch(a=n.substring(v,f),0===A&&(A=(M=M.replace(U,"").trim()).charCodeAt(0)),A){case 64:switch(0<X&&(M=M.replace(s,"")),l=M.charCodeAt(1)){case 100:case 109:case 115:case 45:X=B;break;default:X=h}if(v=(a=g(B,X,a,l,c+1)).length,0<p&&(b=F(3,a,X=I(h,M,J),B,G,S,v,l,c,i),M=X.join(""),void 0!==b&&0===(v=(a=b.trim()).length)&&(l=0,a="")),0<v)switch(l){case 115:M=M.replace(y,Q);case 100:case 109:case 45:a=M+"{"+a+"}";break;case 107:a=(M=M.replace(r,"$1 $2"))+"{"+a+"}",a=1===V||2===V&&C("@"+a,3)?"@-webkit-"+a+"@"+a:"@"+a;break;default:a=M+a,112===i&&(Y+=a,a="")}else a="";break;default:a=g(B,I(B,M,J),a,i,c+1)}w+=a,a=J=X=W=A=0,M="",l=n.charCodeAt(++f);break;case 125:case 59:if(1<(v=(M=(0<X?M.replace(s,""):M).trim()).length))switch(0===W&&(A=M.charCodeAt(0),45===A||96<A&&123>A)&&(v=(M=M.replace(" ",":")).length),0<p&&void 0!==(b=F(1,M,B,e,G,S,Y.length,i,c,i))&&0===(v=(M=b.trim()).length)&&(M="\0\0"),A=M.charCodeAt(0),l=M.charCodeAt(1),A){case 0:break;case 64:if(105===l||99===l){T+=M+n.charAt(f);break}default:58!==M.charCodeAt(v-1)&&(Y+=t(M,A,l,M.charCodeAt(2)))}J=X=W=A=0,M="",l=n.charCodeAt(++f)}}switch(l){case 13:case 10:47===m?m=0:0===1+A&&107!==i&&0<M.length&&(X=1,M+="\0"),0<p*N&&F(0,M,B,e,G,S,Y.length,i,c,i),S=1,G++;break;case 59:case 125:if(0===m+R+x+Z){S++;break}default:switch(S++,u=n.charAt(f),l){case 9:case 32:if(0===R+Z+m)switch(D){case 44:case 58:case 9:case 32:u="";break;default:32!==l&&(u=" ")}break;case 0:u="\\0";break;case 12:u="\\f";break;case 11:u="\\v";break;case 38:0===R+m+Z&&(X=J=1,u="\f"+u);break;case 108:if(0===R+m+Z+L&&0<W)switch(f-W){case 2:112===D&&58===n.charCodeAt(f-3)&&(L=D);case 8:111===E&&(L=E)}break;case 58:0===R+m+Z&&(W=f);break;case 44:0===m+x+R+Z&&(X=1,u+="\r");break;case 34:case 39:0===m&&(R=R===l?0:0===R?l:R);break;case 91:0===R+m+x&&Z++;break;case 93:0===R+m+x&&Z--;break;case 41:0===R+m+Z&&x--;break;case 40:if(0===R+m+Z){if(0===A)switch(2*D+3*E){case 533:break;default:A=1}x++}break;case 64:0===m+x+R+Z+W+a&&(a=1);break;case 42:case 47:if(!(0<R+Z+x))switch(m){case 0:switch(2*l+3*n.charCodeAt(f+1)){case 235:m=47;break;case 220:v=f,m=42}break;case 42:47===l&&42===D&&v+2!==f&&(33===n.charCodeAt(v+2)&&(Y+=n.substring(v,f+1)),u="",m=0)}}0===m&&(M+=u)}E=D,D=l,f++}if(0<(v=Y.length)){if(X=B,0<p&&(void 0!==(b=F(2,Y,X,e,G,S,v,i,c,i))&&0===(Y=b).length))return T+Y+w;if(Y=X.join(",")+"{"+Y+"}",0!==V*L){switch(2!==V||C(Y,2)||(L=0),L){case 111:Y=Y.replace(d,":-moz-$1")+Y;break;case 112:Y=Y.replace(o,"::-webkit-input-$1")+Y.replace(o,"::-moz-$1")+Y.replace(o,":-ms-input-$1")+Y}L=0}}return T+Y+w}(h,B,e,0,0);return 0<p&&(void 0!==(n=F(-2,i,B,B,G,S,i.length,0,0,0))&&(i=n)),"",L=0,S=G=1,i}var U=/^\0+/g,s=/[\0\r\f]/g,i=/: */g,c=/zoo|gra/,A=/([,: ])(transform)/g,l=/,\r+?/g,a=/([\t\r\n ])*\f?&/g,r=/@(k\w+)\s*(\S*)\s*/,o=/::(place)/g,d=/:(read-only)/g,u=/[svh]\w+-[tblr]{2}/,y=/\(\s*(.*)\s*\)/g,b=/([\s\S]*?);/g,Z=/-self|flex-/g,m=/[^]*?(:[rp][el]a[\w-]+)[^]*/,x=/stretch|:\s*\w+\-(?:conte|avail)/,R=/([^-])(image-set\()/,S=1,G=1,L=0,V=1,h=[],D=[],p=0,E=null,N=0;return n.use=function g(I){switch(I){case void 0:case null:p=D.length=0;break;default:if("function"===typeof I)D[p++]=I;else if("object"===typeof I)for(var e=0,t=I.length;e<t;++e)g(I[e]);else N=0|!!I}return g},n.set=B,void 0!==g&&B(g),n}},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M19.66 3.99c-2.64-1.8-5.9-.96-7.66 1.1-1.76-2.06-5.02-2.91-7.66-1.1-1.4.96-2.28 2.58-2.34 4.29-.14 3.88 3.3 6.99 8.55 11.76l.1.09c.76.69 1.93.69 2.69-.01l.11-.1c5.25-4.76 8.68-7.87 8.55-11.75-.06-1.7-.94-3.32-2.34-4.28zM12.1 18.55l-.1.1-.1-.1C7.14 14.24 4 11.39 4 8.5 4 6.5 5.5 5 7.5 5c1.54 0 3.04.99 3.57 2.36h1.87C13.46 5.99 14.96 5 16.5 5c2 0 3.5 1.5 3.5 3.5 0 2.89-3.14 5.74-7.9 10.05z"}),"FavoriteBorderRounded");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M13.35 20.13c-.76.69-1.93.69-2.69-.01l-.11-.1C5.3 15.27 1.87 12.16 2 8.28c.06-1.7.93-3.33 2.34-4.29 2.64-1.8 5.9-.96 7.66 1.1 1.76-2.06 5.02-2.91 7.66-1.1 1.41.96 2.28 2.59 2.34 4.29.14 3.88-3.3 6.99-8.55 11.76l-.1.09z"}),"FavoriteRounded");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm4.59-12.42L10 14.17l-2.59-2.58L6 13l4 4 8-8z"}),"CheckCircleOutlineTwoTone");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement(C.default.Fragment,null,C.default.createElement("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}),C.default.createElement("circle",{cx:"12",cy:"12",r:"5"})),"RadioButtonCheckedOutlined");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}),"RadioButtonUncheckedOutlined");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"}),"CheckBoxOutlineBlankOutlined");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81 1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65 0 1.61 1.31 2.92 2.92 2.92 1.61 0 2.92-1.31 2.92-2.92s-1.31-2.92-2.92-2.92z"}),"Share");I.default=Q},function(g,I,e){"use strict";var t,C=e(0),Q=(t=C)&&"object"===typeof t&&"default"in t?t.default:t;function F(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}var B=!("undefined"===typeof window||!window.document||!window.document.createElement);g.exports=function(g,I,e){if("function"!==typeof g)throw new Error("Expected reducePropsToState to be a function.");if("function"!==typeof I)throw new Error("Expected handleStateChangeOnClient to be a function.");if("undefined"!==typeof e&&"function"!==typeof e)throw new Error("Expected mapStateOnServer to either be undefined or a function.");return function(t){if("function"!==typeof t)throw new Error("Expected WrappedComponent to be a React component.");var n,U=[];function s(){n=g(U.map((function(g){return g.props}))),i.canUseDOM?I(n):e&&(n=e(n))}var i=function(g){var I,e;function C(){return g.apply(this,arguments)||this}e=g,(I=C).prototype=Object.create(e.prototype),I.prototype.constructor=I,I.__proto__=e,C.peek=function(){return n},C.rewind=function(){if(C.canUseDOM)throw new Error("You may only call rewind() on the server. Call peek() to read the current state.");var g=n;return n=void 0,U=[],g};var F=C.prototype;return F.UNSAFE_componentWillMount=function(){U.push(this),s()},F.componentDidUpdate=function(){s()},F.componentWillUnmount=function(){var g=U.indexOf(this);U.splice(g,1),s()},F.render=function(){return Q.createElement(t,this.props)},C}(C.PureComponent);return F(i,"displayName","SideEffect("+function(g){return g.displayName||g.name||"Component"}(t)+")"),F(i,"canUseDOM",B),i}}},function(g,I){var e="undefined"!==typeof Element,t="function"===typeof Map,C="function"===typeof Set,Q="function"===typeof ArrayBuffer&&!!ArrayBuffer.isView;g.exports=function(g,I){try{return function g(I,F){if(I===F)return!0;if(I&&F&&"object"==typeof I&&"object"==typeof F){if(I.constructor!==F.constructor)return!1;var B,n,U,s;if(Array.isArray(I)){if((B=I.length)!=F.length)return!1;for(n=B;0!==n--;)if(!g(I[n],F[n]))return!1;return!0}if(t&&I instanceof Map&&F instanceof Map){if(I.size!==F.size)return!1;for(s=I.entries();!(n=s.next()).done;)if(!F.has(n.value[0]))return!1;for(s=I.entries();!(n=s.next()).done;)if(!g(n.value[1],F.get(n.value[0])))return!1;return!0}if(C&&I instanceof Set&&F instanceof Set){if(I.size!==F.size)return!1;for(s=I.entries();!(n=s.next()).done;)if(!F.has(n.value[0]))return!1;return!0}if(Q&&ArrayBuffer.isView(I)&&ArrayBuffer.isView(F)){if((B=I.length)!=F.length)return!1;for(n=B;0!==n--;)if(I[n]!==F[n])return!1;return!0}if(I.constructor===RegExp)return I.source===F.source&&I.flags===F.flags;if(I.valueOf!==Object.prototype.valueOf)return I.valueOf()===F.valueOf();if(I.toString!==Object.prototype.toString)return I.toString()===F.toString();if((B=(U=Object.keys(I)).length)!==Object.keys(F).length)return!1;for(n=B;0!==n--;)if(!Object.prototype.hasOwnProperty.call(F,U[n]))return!1;if(e&&I instanceof Element)return!1;for(n=B;0!==n--;)if(("_owner"!==U[n]&&"__v"!==U[n]&&"__o"!==U[n]||!I.$$typeof)&&!g(I[U[n]],F[U[n]]))return!1;return!0}return I!==I&&F!==F}(g,I)}catch(F){if((F.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw F}}},function(g,I,e){"use strict";var t=e(15),C=e.n(t),Q=function(){function g(g){var I=void 0===g?{}:g,e=I.locale,t=I.instance,Q=I.moment;this.yearFormat="YYYY",this.yearMonthFormat="MMMM YYYY",this.dateTime12hFormat="MMMM Do hh:mm a",this.dateTime24hFormat="MMMM Do HH:mm",this.time12hFormat="hh:mm A",this.time24hFormat="HH:mm",this.dateFormat="MMMM Do",this.moment=t||Q||C.a,this.locale=e}return g.prototype.parse=function(g,I){return""===g?null:this.moment(g,I,!0)},g.prototype.date=function(g){if(null===g)return null;var I=this.moment(g);return I.locale(this.locale),I},g.prototype.isValid=function(g){return this.moment(g).isValid()},g.prototype.isNull=function(g){return null===g},g.prototype.getDiff=function(g,I){return g.diff(I)},g.prototype.isAfter=function(g,I){return g.isAfter(I)},g.prototype.isBefore=function(g,I){return g.isBefore(I)},g.prototype.isAfterDay=function(g,I){return g.isAfter(I,"day")},g.prototype.isBeforeDay=function(g,I){return g.isBefore(I,"day")},g.prototype.isBeforeYear=function(g,I){return g.isBefore(I,"year")},g.prototype.isAfterYear=function(g,I){return g.isAfter(I,"year")},g.prototype.startOfDay=function(g){return g.clone().startOf("day")},g.prototype.endOfDay=function(g){return g.clone().endOf("day")},g.prototype.format=function(g,I){return g.locale(this.locale),g.format(I)},g.prototype.formatNumber=function(g){return g},g.prototype.getHours=function(g){return g.get("hours")},g.prototype.addDays=function(g,I){return I<0?g.clone().subtract(Math.abs(I),"days"):g.clone().add(I,"days")},g.prototype.setHours=function(g,I){return g.clone().hours(I)},g.prototype.getMinutes=function(g){return g.get("minutes")},g.prototype.setMinutes=function(g,I){return g.clone().minutes(I)},g.prototype.getSeconds=function(g){return g.get("seconds")},g.prototype.setSeconds=function(g,I){return g.clone().seconds(I)},g.prototype.getMonth=function(g){return g.get("month")},g.prototype.isSameDay=function(g,I){return g.isSame(I,"day")},g.prototype.isSameMonth=function(g,I){return g.isSame(I,"month")},g.prototype.isSameYear=function(g,I){return g.isSame(I,"year")},g.prototype.isSameHour=function(g,I){return g.isSame(I,"hour")},g.prototype.setMonth=function(g,I){return g.clone().month(I)},g.prototype.getMeridiemText=function(g){return"am"===g?"AM":"PM"},g.prototype.startOfMonth=function(g){return g.clone().startOf("month")},g.prototype.endOfMonth=function(g){return g.clone().endOf("month")},g.prototype.getNextMonth=function(g){return g.clone().add(1,"month")},g.prototype.getPreviousMonth=function(g){return g.clone().subtract(1,"month")},g.prototype.getMonthArray=function(g){for(var I=[g.clone().startOf("year")];I.length<12;){var e=I[I.length-1];I.push(this.getNextMonth(e))}return I},g.prototype.getYear=function(g){return g.get("year")},g.prototype.setYear=function(g,I){return g.clone().set("year",I)},g.prototype.mergeDateAndTime=function(g,I){return this.setMinutes(this.setHours(g,this.getHours(I)),this.getMinutes(I))},g.prototype.getWeekdays=function(){return this.moment.weekdaysShort(!0)},g.prototype.isEqual=function(g,I){return null===g&&null===I||this.moment(g).isSame(I)},g.prototype.getWeekArray=function(g){for(var I=g.clone().startOf("month").startOf("week"),e=g.clone().endOf("month").endOf("week"),t=0,C=I,Q=[];C.isBefore(e);){var F=Math.floor(t/7);Q[F]=Q[F]||[],Q[F].push(C),C=C.clone().add(1,"day"),t+=1}return Q},g.prototype.getYearRange=function(g,I){for(var e=this.moment(g).startOf("year"),t=this.moment(I).endOf("year"),C=[],Q=e;Q.isBefore(t);)C.push(Q),Q=Q.clone().add(1,"year");return C},g.prototype.getCalendarHeaderText=function(g){return this.format(g,this.yearMonthFormat)},g.prototype.getYearText=function(g){return this.format(g,"YYYY")},g.prototype.getDatePickerHeaderText=function(g){return this.format(g,"ddd, MMM D")},g.prototype.getDateTimePickerHeaderText=function(g){return this.format(g,"MMM D")},g.prototype.getMonthText=function(g){return this.format(g,"MMMM")},g.prototype.getDayText=function(g){return this.format(g,"D")},g.prototype.getHourText=function(g,I){return this.format(g,I?"hh":"HH")},g.prototype.getMinuteText=function(g){return this.format(g,"mm")},g.prototype.getSecondText=function(g){return this.format(g,"ss")},g}();I.a=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement(C.default.Fragment,null,C.default.createElement("path",{fill:"none",d:""}),C.default.createElement("path",{d:"M20 0H4v2h16V0zM4 24h16v-2H4v2zM20 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-8 2.75c1.24 0 2.25 1.01 2.25 2.25s-1.01 2.25-2.25 2.25S9.75 10.24 9.75 9 10.76 6.75 12 6.75zM17 17H7v-1.5c0-1.67 3.33-2.5 5-2.5s5 .83 5 2.5V17z"})),"Contacts");I.default=Q},function(g,I,e){!function(){var g={184:function(g,I){var e;!function(){"use strict";var t={}.hasOwnProperty;function C(){for(var g=[],I=0;I<arguments.length;I++){var e=arguments[I];if(e){var Q=typeof e;if("string"===Q||"number"===Q)g.push(e);else if(Array.isArray(e)){if(e.length){var F=C.apply(null,e);F&&g.push(F)}}else if("object"===Q){if(e.toString!==Object.prototype.toString&&!e.toString.toString().includes("[native code]")){g.push(e.toString());continue}for(var B in e)t.call(e,B)&&e[B]&&g.push(B)}}}return g.join(" ")}g.exports?(C.default=C,g.exports=C):void 0===(e=function(){return C}.apply(I,[]))||(g.exports=e)}()},28:function(g,I,e){"use strict";e.d(I,{Z:function(){return B}});var t=e(81),C=e.n(t),Q=e(645),F=e.n(Q)()(C());F.push([g.id,"/* :where() gives the styles specificity 0, which makes them overridable */\n:where(.vi__wrapper) {\n  position: relative;\n  width: min-content;\n}\n\n.vi {\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  box-sizing: border-box;\n  position: absolute;\n  color: transparent;\n  background: transparent;\n  caret-color: transparent;\n  outline: none;\n  border: 0 none transparent;\n}\n\n.vi::selection {\n  background: transparent;\n}\n\n:where(.vi__container) {\n  display: flex;\n  gap: 8px;\n  height: 50px;\n  width: 300px;\n}\n\n:where(.vi__character) {\n  height: 100%;\n  flex-grow: 1;\n  flex-basis: 0;\n  text-align: center;\n  font-size: 36px;\n  line-height: 50px;\n  color: black;\n  background-color: white;\n  border: 1px solid black;\n  cursor: default;\n  user-select: none;\n  box-sizing: border-box;\n}\n\n:where(.vi__character--inactive) {\n  color: dimgray;\n  background-color: lightgray;\n}\n\n:where(.vi__character--selected) {\n  outline: 2px solid cornflowerblue;\n  color: cornflowerblue;\n}\n",""]);var B=F},645:function(g){"use strict";g.exports=function(g){var I=[];return I.toString=function(){return this.map((function(I){var e="",t=void 0!==I[5];return I[4]&&(e+="@supports (".concat(I[4],") {")),I[2]&&(e+="@media ".concat(I[2]," {")),t&&(e+="@layer".concat(I[5].length>0?" ".concat(I[5]):""," {")),e+=g(I),t&&(e+="}"),I[2]&&(e+="}"),I[4]&&(e+="}"),e})).join("")},I.i=function(g,e,t,C,Q){"string"==typeof g&&(g=[[null,g,void 0]]);var F={};if(t)for(var B=0;B<this.length;B++){var n=this[B][0];null!=n&&(F[n]=!0)}for(var U=0;U<g.length;U++){var s=[].concat(g[U]);t&&F[s[0]]||(void 0!==Q&&(void 0===s[5]||(s[1]="@layer".concat(s[5].length>0?" ".concat(s[5]):""," {").concat(s[1],"}")),s[5]=Q),e&&(s[2]?(s[1]="@media ".concat(s[2]," {").concat(s[1],"}"),s[2]=e):s[2]=e),C&&(s[4]?(s[1]="@supports (".concat(s[4],") {").concat(s[1],"}"),s[4]=C):s[4]="".concat(C)),I.push(s))}},I}},81:function(g){"use strict";g.exports=function(g){return g[1]}},703:function(g,I,e){"use strict";var t=e(414);function C(){}function Q(){}Q.resetWarningCache=C,g.exports=function(){function g(g,I,e,C,Q,F){if(F!==t){var B=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw B.name="Invariant Violation",B}}function I(){return g}g.isRequired=g;var e={array:g,bigint:g,bool:g,func:g,number:g,object:g,string:g,symbol:g,any:g,arrayOf:I,element:g,elementType:g,instanceOf:I,node:g,objectOf:I,oneOf:I,oneOfType:I,shape:I,exact:I,checkPropTypes:Q,resetWarningCache:C};return e.PropTypes=e,e}},697:function(g,I,e){g.exports=e(703)()},414:function(g){"use strict";g.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"}},t={};function C(I){var e=t[I];if(void 0!==e)return e.exports;var Q=t[I]={id:I,exports:{}};return g[I](Q,Q.exports,C),Q.exports}C.n=function(g){var I=g&&g.__esModule?function(){return g.default}:function(){return g};return C.d(I,{a:I}),I},C.d=function(g,I){for(var e in I)C.o(I,e)&&!C.o(g,e)&&Object.defineProperty(g,e,{enumerable:!0,get:I[e]})},C.o=function(g,I){return Object.prototype.hasOwnProperty.call(g,I)},C.r=function(g){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(g,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(g,"__esModule",{value:!0})};var Q={};!function(){"use strict";C.r(Q),C.d(Q,{default:function(){return y}});var g=e(0),I=C.n(g),t=C(184),F=C.n(t),B=C(697),n=C.n(B),U=C(28);function s(g){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"==typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g})(g)}var i=["className"],c=["className"];function A(g,I,e){return(I=function(g){var I=function(g,I){if("object"!==s(g)||null===g)return g;var e=g[Symbol.toPrimitive];if(void 0!==e){var t=e.call(g,"string");if("object"!==s(t))return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(g)}(g);return"symbol"===s(I)?I:String(I)}(I))in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}function l(){return(l=Object.assign?Object.assign.bind():function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}function a(g,I){if(null==g)return{};var e,t,C=function(g,I){if(null==g)return{};var e,t,C={},Q=Object.keys(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||(C[e]=g[e]);return C}(g,I);if(Object.getOwnPropertySymbols){var Q=Object.getOwnPropertySymbols(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||Object.prototype.propertyIsEnumerable.call(g,e)&&(C[e]=g[e])}return C}function r(g,I){return function(g){if(Array.isArray(g))return g}(g)||function(g,I){var e=null==g?null:"undefined"!=typeof Symbol&&g[Symbol.iterator]||g["@@iterator"];if(null!=e){var t,C,Q,F,B=[],n=!0,U=!1;try{if(Q=(e=e.call(g)).next,0===I){if(Object(e)!==e)return;n=!1}else for(;!(n=(t=Q.call(e)).done)&&(B.push(t.value),B.length!==I);n=!0);}catch(g){U=!0,C=g}finally{try{if(!n&&null!=e.return&&(F=e.return(),Object(F)!==F))return}finally{if(U)throw C}}return B}}(g,I)||o(g,I)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function o(g,I){if(g){if("string"==typeof g)return d(g,I);var e=Object.prototype.toString.call(g).slice(8,-1);return"Object"===e&&g.constructor&&(e=g.constructor.name),"Map"===e||"Set"===e?Array.from(g):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?d(g,I):void 0}}function d(g,I){(null==I||I>g.length)&&(I=g.length);for(var e=0,t=new Array(I);e<I;e++)t[e]=g[e];return t}var u=(0,g.forwardRef)((function(e,t){var C=e.value,Q=e.length,B=e.validChars,n=e.placeholder,s=e.autoFocus,u=e.inputProps,y=e.containerProps,b=e.classNames,Z=e.onChange,m=e.onFocus,x=e.onBlur,R=r((0,g.useState)(""),2),S=R[0],G=R[1],L=r((0,g.useState)(!1),2),V=L[0],h=L[1],D=(0,g.useRef)(null);(0,g.useEffect)((function(){s&&D.current.focus()}),[s]);var p,E=function(){D.current.focus()},N=function(){return null!=C?C:S},W=u.className,f=a(u,i),X=y.className,J=a(y,c);return I().createElement("div",{className:"vi__wrapper"},I().createElement("input",l({spellCheck:!1,value:N(),onChange:function(g){var I=g.target.value.replace(/\s/g,"");RegExp("^[".concat(B,"]{0,").concat(Q,"}$")).test(I)&&(Z&&(null==Z||Z(I)),G(I))},ref:function(g){D.current=g,"function"==typeof t?t(g):t&&(t.current=g)},className:F()("vi",W),onKeyDown:function(g){["ArrowLeft","ArrowRight","ArrowUp","ArrowDown"].includes(g.key)&&g.preventDefault()},onFocus:function(){h(!0),null==m||m()},onBlur:function(){h(!1),null==x||x()},onSelect:function(g){var I=g.target.value;g.target.setSelectionRange(I.length,I.length)}},f)),I().createElement("div",l({"data-testid":"container",className:F()("vi__container",b.container,X),onClick:function(){return D.current.focus()}},J),(p=Array(Q),function(g){if(Array.isArray(g))return d(g)}(p)||function(g){if("undefined"!=typeof Symbol&&null!=g[Symbol.iterator]||null!=g["@@iterator"])return Array.from(g)}(p)||o(p)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).map((function(g,e){var t;return I().createElement("div",{className:F()("vi__character",b.character,(t={"vi__character--selected":(N().length===e||N().length===e+1&&Q===e+1)&&V},A(t,b.characterSelected,(N().length===e||N().length===e+1&&Q===e+1)&&V),A(t,"vi__character--inactive",N().length<e),A(t,b.characterInactive,N().length<e),t)),onClick:E,id:"field-".concat(e),"data-testid":"character-".concat(e),key:e},N()[e]||n)}))),I().createElement("style",{dangerouslySetInnerHTML:{__html:U.Z}}))}));u.displayName="VerificationInput",u.propTypes={value:n().string,length:n().number,validChars:n().string,placeholder:n().string,autoFocus:n().bool,inputProps:n().object,containerProps:n().object,classNames:n().shape({container:n().string,character:n().string,characterInactive:n().string,characterSelected:n().string}),onChange:n().func,onFocus:n().func,onBlur:n().func},u.defaultProps={length:6,validChars:"A-Za-z0-9",placeholder:"\xb7",autoFocus:!1,inputProps:{},containerProps:{},classNames:{}};var y=u}();var F=I;for(var B in Q)F[B]=Q[B];Q.__esModule&&Object.defineProperty(F,"__esModule",{value:!0})}()},function(g,I,e){"use strict";var t=e(10),C=this&&this.__awaiter||function(g,I,e,t){return new(e||(e=Promise))((function(C,Q){function F(g){try{n(t.next(g))}catch(I){Q(I)}}function B(g){try{n(t.throw(g))}catch(I){Q(I)}}function n(g){g.done?C(g.value):function(g){return g instanceof e?g:new e((function(I){I(g)}))}(g.value).then(F,B)}n((t=t.apply(g,I||[])).next())}))};Object.defineProperty(I,"__esModule",{value:!0}),I.useReadOTP=void 0;var Q=e(0);function F(){return"OTPCredential"in window&&"undefined"!==typeof AbortController}function B(g){return C(this,void 0,void 0,t.mark((function I(){var e;return t.wrap((function(I){for(;;)switch(I.prev=I.next){case 0:return I.next=2,navigator.credentials.get({signal:g.signal,otp:{transport:["sms"]}});case 2:if((e=I.sent)&&e.code){I.next=5;break}throw new Error("Unable to read otp");case 5:return I.abrupt("return",e.code);case 6:case"end":return I.stop()}}),I)})))}I.useReadOTP=function(g){var I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},e=Q.useRef({});function t(){var g;null===(g=e.current.abortController)||void 0===g||g.abort(),e.current.timer&&clearTimeout(e.current.timer)}return Q.useEffect((function(){var C,Q;if(F()){if(null===(C=I.enabled)||void 0===C||C)return B(e.current.abortController=new AbortController).then((function(I){t(),g(I)})).catch((function(g){I.onError&&I.onError(g),t()})),e.current.timer=setTimeout(t,null!==(Q=I.timeout)&&void 0!==Q?Q:6e4),t;t()}else console.log("Not supported, exiting")}),[I.enabled]),t}},function(g){g.exports=JSON.parse('{"ext":"ext.","country":"Phone number country","phone":"Phone","AB":"Abkhazia","AC":"Ascension Island","AD":"Andorra","AE":"United Arab Emirates","AF":"Afghanistan","AG":"Antigua and Barbuda","AI":"Anguilla","AL":"Albania","AM":"Armenia","AO":"Angola","AQ":"Antarctica","AR":"Argentina","AS":"American Samoa","AT":"Austria","AU":"Australia","AW":"Aruba","AX":"\xc5land Islands","AZ":"Azerbaijan","BA":"Bosnia and Herzegovina","BB":"Barbados","BD":"Bangladesh","BE":"Belgium","BF":"Burkina Faso","BG":"Bulgaria","BH":"Bahrain","BI":"Burundi","BJ":"Benin","BL":"Saint Barth\xe9lemy","BM":"Bermuda","BN":"Brunei Darussalam","BO":"Bolivia","BQ":"Bonaire, Sint Eustatius and Saba","BR":"Brazil","BS":"Bahamas","BT":"Bhutan","BV":"Bouvet Island","BW":"Botswana","BY":"Belarus","BZ":"Belize","CA":"Canada","CC":"Cocos (Keeling) Islands","CD":"Congo, Democratic Republic of the","CF":"Central African Republic","CG":"Congo","CH":"Switzerland","CI":"Cote d\'Ivoire","CK":"Cook Islands","CL":"Chile","CM":"Cameroon","CN":"China","CO":"Colombia","CR":"Costa Rica","CU":"Cuba","CV":"Cape Verde","CW":"Cura\xe7ao","CX":"Christmas Island","CY":"Cyprus","CZ":"Czech Republic","DE":"Germany","DJ":"Djibouti","DK":"Denmark","DM":"Dominica","DO":"Dominican Republic","DZ":"Algeria","EC":"Ecuador","EE":"Estonia","EG":"Egypt","EH":"Western Sahara","ER":"Eritrea","ES":"Spain","ET":"Ethiopia","FI":"Finland","FJ":"Fiji","FK":"Falkland Islands","FM":"Federated States of Micronesia","FO":"Faroe Islands","FR":"France","GA":"Gabon","GB":"United Kingdom","GD":"Grenada","GE":"Georgia","GF":"French Guiana","GG":"Guernsey","GH":"Ghana","GI":"Gibraltar","GL":"Greenland","GM":"Gambia","GN":"Guinea","GP":"Guadeloupe","GQ":"Equatorial Guinea","GR":"Greece","GS":"South Georgia and the South Sandwich Islands","GT":"Guatemala","GU":"Guam","GW":"Guinea-Bissau","GY":"Guyana","HK":"Hong Kong","HM":"Heard Island and McDonald Islands","HN":"Honduras","HR":"Croatia","HT":"Haiti","HU":"Hungary","ID":"Indonesia","IE":"Ireland","IL":"Israel","IM":"Isle of Man","IN":"India","IO":"British Indian Ocean Territory","IQ":"Iraq","IR":"Iran","IS":"Iceland","IT":"Italy","JE":"Jersey","JM":"Jamaica","JO":"Jordan","JP":"Japan","KE":"Kenya","KG":"Kyrgyzstan","KH":"Cambodia","KI":"Kiribati","KM":"Comoros","KN":"Saint Kitts and Nevis","KP":"North Korea","KR":"South Korea","KW":"Kuwait","KY":"Cayman Islands","KZ":"Kazakhstan","LA":"Laos","LB":"Lebanon","LC":"Saint Lucia","LI":"Liechtenstein","LK":"Sri Lanka","LR":"Liberia","LS":"Lesotho","LT":"Lithuania","LU":"Luxembourg","LV":"Latvia","LY":"Libya","MA":"Morocco","MC":"Monaco","MD":"Moldova","ME":"Montenegro","MF":"Saint Martin (French Part)","MG":"Madagascar","MH":"Marshall Islands","MK":"North Macedonia","ML":"Mali","MM":"Burma","MN":"Mongolia","MO":"Macao","MP":"Northern Mariana Islands","MQ":"Martinique","MR":"Mauritania","MS":"Montserrat","MT":"Malta","MU":"Mauritius","MV":"Maldives","MW":"Malawi","MX":"Mexico","MY":"Malaysia","MZ":"Mozambique","NA":"Namibia","NC":"New Caledonia","NE":"Niger","NF":"Norfolk Island","NG":"Nigeria","NI":"Nicaragua","NL":"Netherlands","NO":"Norway","NP":"Nepal","NR":"Nauru","NU":"Niue","NZ":"New Zealand","OM":"Oman","OS":"South Ossetia","PA":"Panama","PE":"Peru","PF":"French Polynesia","PG":"Papua New Guinea","PH":"Philippines","PK":"Pakistan","PL":"Poland","PM":"Saint Pierre and Miquelon","PN":"Pitcairn","PR":"Puerto Rico","PS":"Palestine","PT":"Portugal","PW":"Palau","PY":"Paraguay","QA":"Qatar","RE":"Reunion","RO":"Romania","RS":"Serbia","RU":"Russia","RW":"Rwanda","SA":"Saudi Arabia","SB":"Solomon Islands","SC":"Seychelles","SD":"Sudan","SE":"Sweden","SG":"Singapore","SH":"Saint Helena","SI":"Slovenia","SJ":"Svalbard and Jan Mayen","SK":"Slovakia","SL":"Sierra Leone","SM":"San Marino","SN":"Senegal","SO":"Somalia","SR":"Suriname","SS":"South Sudan","ST":"Sao Tome and Principe","SV":"El Salvador","SX":"Sint Maarten","SY":"Syria","SZ":"Swaziland","TA":"Tristan da Cunha","TC":"Turks and Caicos Islands","TD":"Chad","TF":"French Southern Territories","TG":"Togo","TH":"Thailand","TJ":"Tajikistan","TK":"Tokelau","TL":"Timor-Leste","TM":"Turkmenistan","TN":"Tunisia","TO":"Tonga","TR":"Turkey","TT":"Trinidad and Tobago","TV":"Tuvalu","TW":"Taiwan","TZ":"Tanzania","UA":"Ukraine","UG":"Uganda","UM":"United States Minor Outlying Islands","US":"United States","UY":"Uruguay","UZ":"Uzbekistan","VA":"Holy See (Vatican City State)","VC":"Saint Vincent and the Grenadines","VE":"Venezuela","VG":"Virgin Islands, British","VI":"Virgin Islands, U.S.","VN":"Vietnam","VU":"Vanuatu","WF":"Wallis and Futuna","WS":"Samoa","XK":"Kosovo","YE":"Yemen","YT":"Mayotte","ZA":"South Africa","ZM":"Zambia","ZW":"Zimbabwe","ZZ":"International"}')},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var t,C=function(g){if(g&&g.__esModule)return g;if(null===g||"object"!==n(g)&&"function"!==typeof g)return{default:g};var I=B();if(I&&I.has(g))return I.get(g);var e={},t=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var C in g)if(Object.prototype.hasOwnProperty.call(g,C)){var Q=t?Object.getOwnPropertyDescriptor(g,C):null;Q&&(Q.get||Q.set)?Object.defineProperty(e,C,Q):e[C]=g[C]}e.default=g,I&&I.set(g,e);return e}(e(0)),Q=e(4),F=(t=e(1311))&&t.__esModule?t:{default:t};function B(){if("function"!==typeof WeakMap)return null;var g=new WeakMap;return B=function(){return g},g}function n(g){return(n="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"===typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g})(g)}function U(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}function s(g,I){return(s=Object.setPrototypeOf||function(g,I){return g.__proto__=I,g})(g,I)}function i(g){var I=function(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(g){return!1}}();return function(){var e,t=l(g);if(I){var C=l(this).constructor;e=Reflect.construct(t,arguments,C)}else e=t.apply(this,arguments);return c(this,e)}}function c(g,I){return!I||"object"!==n(I)&&"function"!==typeof I?A(g):I}function A(g){if(void 0===g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return g}function l(g){return(l=Object.setPrototypeOf?Object.getPrototypeOf:function(g){return g.__proto__||Object.getPrototypeOf(g)})(g)}function a(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}var r=function(g){!function(g,I){if("function"!==typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function");g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,writable:!0,configurable:!0}}),I&&s(g,I)}(B,g);var I,e,t,Q=i(B);function B(g){var I;return function(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}(this,B),a(A(I=Q.call(this,g)),"_isMounted",!1),a(A(I),"handleTruncate",(function(g){I._isMounted&&g!==I.state.truncated&&(I.setState({truncated:g}),g&&I.truncateRef.onResize())})),a(A(I),"toggleLines",(function(g){g.preventDefault();var e=A(I);e.props.expandByClick?I._isMounted&&I.setState({expanded:!I.state.expanded},(function(){e.props.onClick&&e.props.onClick(e.state.expanded)})):e.props.onClick&&e.props.onClick(e.state.expanded)})),I.state={expanded:!1,truncated:!1},I}return I=B,(e=[{key:"componentDidMount",value:function(){this._isMounted=!0,this._isMounted&&this.setState({expanded:this.props.expanded})}},{key:"componentWillUnmount",value:function(){this._isMounted=!1}},{key:"render",value:function(){var g=this,I=this.props,e=I.children,t=I.more,Q=I.less,B=I.lines,n=I.anchorClass,U=I.className,s=I.width,i=I.keepNewLines,c=I.truncatedEndingComponent,A=this.state,l=A.expanded,a=A.truncated;return C.default.createElement("div",{className:U},C.default.createElement(F.default,{width:s,lines:!l&&B,ellipsis:C.default.createElement("span",null,c,C.default.createElement("a",{href:"",className:n,onClick:this.toggleLines},t)),onTruncate:this.handleTruncate,ref:function(I){return g.truncateRef=I}},i?e.split("\n").map((function(g,I,e){return g=C.default.createElement("span",{key:I},g),I===e.length-1?g:[g,C.default.createElement("br",{key:I+"br"})]})):e),!a&&l&&C.default.createElement("span",null," ",C.default.createElement("a",{href:"",className:n,onClick:this.toggleLines},Q)))}}])&&U(I.prototype,e),t&&U(I,t),B}(C.Component);a(r,"defaultProps",{lines:3,more:"Show more",less:"Show less",anchorClass:"",onClick:void 0,expanded:!1,width:0,keepNewLines:!1,truncatedEndingComponent:"... ",expandByClick:!0}),a(r,"propTypes",{children:Q.PropTypes.node,lines:Q.PropTypes.number,more:Q.PropTypes.node,less:Q.PropTypes.node,anchorClass:Q.PropTypes.string,className:Q.PropTypes.string,onClick:Q.PropTypes.func,expanded:Q.PropTypes.bool,width:Q.PropTypes.number,keepNewLines:Q.PropTypes.bool,truncatedEndingComponent:Q.PropTypes.node,expandByClick:Q.PropTypes.bool});var o=r;I.default=o},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement(C.default.Fragment,null,C.default.createElement("circle",{cx:"15.5",cy:"9.5",r:"1.5"}),C.default.createElement("circle",{cx:"8.5",cy:"9.5",r:"1.5"}),C.default.createElement("path",{d:"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm0-6c-2.33 0-4.32 1.45-5.12 3.5h1.67c.69-1.19 1.97-2 3.45-2s2.75.81 3.45 2h1.67c-.8-2.05-2.79-3.5-5.12-3.5z"})),"SentimentVeryDissatisfied");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement(C.default.Fragment,null,C.default.createElement("circle",{cx:"15.5",cy:"9.5",r:"1.5"}),C.default.createElement("circle",{cx:"8.5",cy:"9.5",r:"1.5"}),C.default.createElement("path",{d:"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm0-3.5c.73 0 1.39.19 1.97.53.12-.14.86-.98 1.01-1.14-.85-.56-1.87-.89-2.98-.89-1.11 0-2.13.33-2.99.88.97 1.09.01.02 1.01 1.14.59-.33 1.25-.52 1.98-.52z"})),"SentimentDissatisfied");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement(C.default.Fragment,null,C.default.createElement("circle",{cx:"15.5",cy:"9.5",r:"1.5"}),C.default.createElement("circle",{cx:"8.5",cy:"9.5",r:"1.5"}),C.default.createElement("path",{d:"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm0-4c-.73 0-1.38-.18-1.96-.52-.12.14-.86.98-1.01 1.15.86.55 1.87.87 2.97.87 1.11 0 2.12-.33 2.98-.88-.97-1.09-.01-.02-1.01-1.15-.59.35-1.24.53-1.97.53z"})),"SentimentSatisfied");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement(C.default.Fragment,null,C.default.createElement("circle",{cx:"15.5",cy:"9.5",r:"1.5"}),C.default.createElement("circle",{cx:"8.5",cy:"9.5",r:"1.5"}),C.default.createElement("path",{d:"M12 16c-1.48 0-2.75-.81-3.45-2H6.88c.8 2.05 2.79 3.5 5.12 3.5s4.32-1.45 5.12-3.5h-1.67c-.69 1.19-1.97 2-3.45 2zm-.01-14C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"})),"SentimentSatisfiedAltOutlined");I.default=Q},function(g,I,e){"use strict";e.d(I,"a",(function(){return t}));var t=function(){function g(){this._hasWeakSet="function"===typeof WeakSet,this._inner=this._hasWeakSet?new WeakSet:[]}return g.prototype.memoize=function(g){if(this._hasWeakSet)return!!this._inner.has(g)||(this._inner.add(g),!1);for(var I=0;I<this._inner.length;I++){if(this._inner[I]===g)return!0}return this._inner.push(g),!1},g.prototype.unmemoize=function(g){if(this._hasWeakSet)this._inner.delete(g);else for(var I=0;I<this._inner.length;I++)if(this._inner[I]===g){this._inner.splice(I,1);break}},g}()},function(g,I,e){"use strict";I.__esModule=!0,I.default=void 0;var t,C=e(1313),Q=(t=C)&&t.__esModule?t:{default:t};I.default=Q.default},,,,,,,function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z"}),"Home");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M17 11V3H7v4H3v14h8v-4h2v4h8V11h-4zM7 19H5v-2h2v2zm0-4H5v-2h2v2zm0-4H5V9h2v2zm4 4H9v-2h2v2zm0-4H9V9h2v2zm0-4H9V5h2v2zm4 8h-2v-2h2v2zm0-4h-2V9h2v2zm0-4h-2V5h2v2zm4 12h-2v-2h2v2zm0-4h-2v-2h2v2z"}),"Apartment");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement(C.default.Fragment,null,C.default.createElement("path",{fill:"none",d:"M0 0h24v24H0zm10 5h4v2h-4zm0 0h4v2h-4z"}),C.default.createElement("path",{d:"M10 16v-1H3.01L3 19c0 1.11.89 2 2 2h14c1.11 0 2-.89 2-2v-4h-7v1h-4zm10-9h-4.01V5l-2-2h-4l-2 2v2H4c-1.1 0-2 .9-2 2v3c0 1.11.89 2 2 2h6v-2h4v2h6c1.1 0 2-.9 2-2V9c0-1.1-.9-2-2-2zm-6 0h-4V5h4v2z"})),"BusinessCenter");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z"}),"Link");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-7 3c1.66 0 3 1.34 3 3s-1.34 3-3 3-3-1.34-3-3 1.34-3 3-3zm6 12H6v-1c0-2 4-3.1 6-3.1s6 1.1 6 3.1v1z"}),"PermContactCalendar");I.default=Q},,,function(g,I,e){(function(g,t){var C;(function(){var Q="Expected a function",F="__lodash_placeholder__",B=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]],n="[object Arguments]",U="[object Array]",s="[object Boolean]",i="[object Date]",c="[object Error]",A="[object Function]",l="[object GeneratorFunction]",a="[object Map]",r="[object Number]",o="[object Object]",d="[object RegExp]",u="[object Set]",y="[object String]",b="[object Symbol]",Z="[object WeakMap]",m="[object ArrayBuffer]",x="[object DataView]",R="[object Float32Array]",S="[object Float64Array]",G="[object Int8Array]",L="[object Int16Array]",V="[object Int32Array]",h="[object Uint8Array]",D="[object Uint16Array]",p="[object Uint32Array]",E=/\b__p \+= '';/g,N=/\b(__p \+=) '' \+/g,W=/(__e\(.*?\)|\b__t\)) \+\n'';/g,f=/&(?:amp|lt|gt|quot|#39);/g,X=/[&<>"']/g,J=RegExp(f.source),v=RegExp(X.source),k=/<%-([\s\S]+?)%>/g,H=/<%([\s\S]+?)%>/g,M=/<%=([\s\S]+?)%>/g,Y=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,w=/^\w*$/,T=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,z=/[\\^$.*+?()[\]{}|]/g,O=RegExp(z.source),K=/^\s+|\s+$/g,j=/^\s+/,P=/\s+$/,_=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,q=/\{\n\/\* \[wrapped with (.+)\] \*/,$=/,? & /,gg=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,Ig=/\\(\\)?/g,eg=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,tg=/\w*$/,Cg=/^[-+]0x[0-9a-f]+$/i,Qg=/^0b[01]+$/i,Fg=/^\[object .+?Constructor\]$/,Bg=/^0o[0-7]+$/i,ng=/^(?:0|[1-9]\d*)$/,Ug=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,sg=/($^)/,ig=/['\n\r\u2028\u2029\\]/g,cg="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",Ag="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",lg="[\\ud800-\\udfff]",ag="["+Ag+"]",rg="["+cg+"]",og="\\d+",dg="[\\u2700-\\u27bf]",ug="[a-z\\xdf-\\xf6\\xf8-\\xff]",yg="[^\\ud800-\\udfff"+Ag+og+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",bg="\\ud83c[\\udffb-\\udfff]",Zg="[^\\ud800-\\udfff]",mg="(?:\\ud83c[\\udde6-\\uddff]){2}",xg="[\\ud800-\\udbff][\\udc00-\\udfff]",Rg="[A-Z\\xc0-\\xd6\\xd8-\\xde]",Sg="(?:"+ug+"|"+yg+")",Gg="(?:"+Rg+"|"+yg+")",Lg="(?:"+rg+"|"+bg+")"+"?",Vg="[\\ufe0e\\ufe0f]?"+Lg+("(?:\\u200d(?:"+[Zg,mg,xg].join("|")+")[\\ufe0e\\ufe0f]?"+Lg+")*"),hg="(?:"+[dg,mg,xg].join("|")+")"+Vg,Dg="(?:"+[Zg+rg+"?",rg,mg,xg,lg].join("|")+")",pg=RegExp("['\u2019]","g"),Eg=RegExp(rg,"g"),Ng=RegExp(bg+"(?="+bg+")|"+Dg+Vg,"g"),Wg=RegExp([Rg+"?"+ug+"+(?:['\u2019](?:d|ll|m|re|s|t|ve))?(?="+[ag,Rg,"$"].join("|")+")",Gg+"+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?(?="+[ag,Rg+Sg,"$"].join("|")+")",Rg+"?"+Sg+"+(?:['\u2019](?:d|ll|m|re|s|t|ve))?",Rg+"+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",og,hg].join("|"),"g"),fg=RegExp("[\\u200d\\ud800-\\udfff"+cg+"\\ufe0e\\ufe0f]"),Xg=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Jg=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],vg=-1,kg={};kg[R]=kg[S]=kg[G]=kg[L]=kg[V]=kg[h]=kg["[object Uint8ClampedArray]"]=kg[D]=kg[p]=!0,kg[n]=kg[U]=kg[m]=kg[s]=kg[x]=kg[i]=kg[c]=kg[A]=kg[a]=kg[r]=kg[o]=kg[d]=kg[u]=kg[y]=kg[Z]=!1;var Hg={};Hg[n]=Hg[U]=Hg[m]=Hg[x]=Hg[s]=Hg[i]=Hg[R]=Hg[S]=Hg[G]=Hg[L]=Hg[V]=Hg[a]=Hg[r]=Hg[o]=Hg[d]=Hg[u]=Hg[y]=Hg[b]=Hg[h]=Hg["[object Uint8ClampedArray]"]=Hg[D]=Hg[p]=!0,Hg[c]=Hg[A]=Hg[Z]=!1;var Mg={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Yg=parseFloat,wg=parseInt,Tg="object"==typeof g&&g&&g.Object===Object&&g,zg="object"==typeof self&&self&&self.Object===Object&&self,Og=Tg||zg||Function("return this")(),Kg=I&&!I.nodeType&&I,jg=Kg&&"object"==typeof t&&t&&!t.nodeType&&t,Pg=jg&&jg.exports===Kg,_g=Pg&&Tg.process,qg=function(){try{var g=jg&&jg.require&&jg.require("util").types;return g||_g&&_g.binding&&_g.binding("util")}catch(I){}}(),$g=qg&&qg.isArrayBuffer,gI=qg&&qg.isDate,II=qg&&qg.isMap,eI=qg&&qg.isRegExp,tI=qg&&qg.isSet,CI=qg&&qg.isTypedArray;function QI(g,I,e){switch(e.length){case 0:return g.call(I);case 1:return g.call(I,e[0]);case 2:return g.call(I,e[0],e[1]);case 3:return g.call(I,e[0],e[1],e[2])}return g.apply(I,e)}function FI(g,I,e,t){for(var C=-1,Q=null==g?0:g.length;++C<Q;){var F=g[C];I(t,F,e(F),g)}return t}function BI(g,I){for(var e=-1,t=null==g?0:g.length;++e<t&&!1!==I(g[e],e,g););return g}function nI(g,I){for(var e=null==g?0:g.length;e--&&!1!==I(g[e],e,g););return g}function UI(g,I){for(var e=-1,t=null==g?0:g.length;++e<t;)if(!I(g[e],e,g))return!1;return!0}function sI(g,I){for(var e=-1,t=null==g?0:g.length,C=0,Q=[];++e<t;){var F=g[e];I(F,e,g)&&(Q[C++]=F)}return Q}function iI(g,I){return!!(null==g?0:g.length)&&bI(g,I,0)>-1}function cI(g,I,e){for(var t=-1,C=null==g?0:g.length;++t<C;)if(e(I,g[t]))return!0;return!1}function AI(g,I){for(var e=-1,t=null==g?0:g.length,C=Array(t);++e<t;)C[e]=I(g[e],e,g);return C}function lI(g,I){for(var e=-1,t=I.length,C=g.length;++e<t;)g[C+e]=I[e];return g}function aI(g,I,e,t){var C=-1,Q=null==g?0:g.length;for(t&&Q&&(e=g[++C]);++C<Q;)e=I(e,g[C],C,g);return e}function rI(g,I,e,t){var C=null==g?0:g.length;for(t&&C&&(e=g[--C]);C--;)e=I(e,g[C],C,g);return e}function oI(g,I){for(var e=-1,t=null==g?0:g.length;++e<t;)if(I(g[e],e,g))return!0;return!1}var dI=RI("length");function uI(g,I,e){var t;return e(g,(function(g,e,C){if(I(g,e,C))return t=e,!1})),t}function yI(g,I,e,t){for(var C=g.length,Q=e+(t?1:-1);t?Q--:++Q<C;)if(I(g[Q],Q,g))return Q;return-1}function bI(g,I,e){return I===I?function(g,I,e){var t=e-1,C=g.length;for(;++t<C;)if(g[t]===I)return t;return-1}(g,I,e):yI(g,mI,e)}function ZI(g,I,e,t){for(var C=e-1,Q=g.length;++C<Q;)if(t(g[C],I))return C;return-1}function mI(g){return g!==g}function xI(g,I){var e=null==g?0:g.length;return e?LI(g,I)/e:NaN}function RI(g){return function(I){return null==I?void 0:I[g]}}function SI(g){return function(I){return null==g?void 0:g[I]}}function GI(g,I,e,t,C){return C(g,(function(g,C,Q){e=t?(t=!1,g):I(e,g,C,Q)})),e}function LI(g,I){for(var e,t=-1,C=g.length;++t<C;){var Q=I(g[t]);void 0!==Q&&(e=void 0===e?Q:e+Q)}return e}function VI(g,I){for(var e=-1,t=Array(g);++e<g;)t[e]=I(e);return t}function hI(g){return function(I){return g(I)}}function DI(g,I){return AI(I,(function(I){return g[I]}))}function pI(g,I){return g.has(I)}function EI(g,I){for(var e=-1,t=g.length;++e<t&&bI(I,g[e],0)>-1;);return e}function NI(g,I){for(var e=g.length;e--&&bI(I,g[e],0)>-1;);return e}function WI(g,I){for(var e=g.length,t=0;e--;)g[e]===I&&++t;return t}var fI=SI({"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a","\xc7":"C","\xe7":"c","\xd0":"D","\xf0":"d","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xcc":"I","\xcd":"I","\xce":"I","\xcf":"I","\xec":"i","\xed":"i","\xee":"i","\xef":"i","\xd1":"N","\xf1":"n","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xf9":"u","\xfa":"u","\xfb":"u","\xfc":"u","\xdd":"Y","\xfd":"y","\xff":"y","\xc6":"Ae","\xe6":"ae","\xde":"Th","\xfe":"th","\xdf":"ss","\u0100":"A","\u0102":"A","\u0104":"A","\u0101":"a","\u0103":"a","\u0105":"a","\u0106":"C","\u0108":"C","\u010a":"C","\u010c":"C","\u0107":"c","\u0109":"c","\u010b":"c","\u010d":"c","\u010e":"D","\u0110":"D","\u010f":"d","\u0111":"d","\u0112":"E","\u0114":"E","\u0116":"E","\u0118":"E","\u011a":"E","\u0113":"e","\u0115":"e","\u0117":"e","\u0119":"e","\u011b":"e","\u011c":"G","\u011e":"G","\u0120":"G","\u0122":"G","\u011d":"g","\u011f":"g","\u0121":"g","\u0123":"g","\u0124":"H","\u0126":"H","\u0125":"h","\u0127":"h","\u0128":"I","\u012a":"I","\u012c":"I","\u012e":"I","\u0130":"I","\u0129":"i","\u012b":"i","\u012d":"i","\u012f":"i","\u0131":"i","\u0134":"J","\u0135":"j","\u0136":"K","\u0137":"k","\u0138":"k","\u0139":"L","\u013b":"L","\u013d":"L","\u013f":"L","\u0141":"L","\u013a":"l","\u013c":"l","\u013e":"l","\u0140":"l","\u0142":"l","\u0143":"N","\u0145":"N","\u0147":"N","\u014a":"N","\u0144":"n","\u0146":"n","\u0148":"n","\u014b":"n","\u014c":"O","\u014e":"O","\u0150":"O","\u014d":"o","\u014f":"o","\u0151":"o","\u0154":"R","\u0156":"R","\u0158":"R","\u0155":"r","\u0157":"r","\u0159":"r","\u015a":"S","\u015c":"S","\u015e":"S","\u0160":"S","\u015b":"s","\u015d":"s","\u015f":"s","\u0161":"s","\u0162":"T","\u0164":"T","\u0166":"T","\u0163":"t","\u0165":"t","\u0167":"t","\u0168":"U","\u016a":"U","\u016c":"U","\u016e":"U","\u0170":"U","\u0172":"U","\u0169":"u","\u016b":"u","\u016d":"u","\u016f":"u","\u0171":"u","\u0173":"u","\u0174":"W","\u0175":"w","\u0176":"Y","\u0177":"y","\u0178":"Y","\u0179":"Z","\u017b":"Z","\u017d":"Z","\u017a":"z","\u017c":"z","\u017e":"z","\u0132":"IJ","\u0133":"ij","\u0152":"Oe","\u0153":"oe","\u0149":"'n","\u017f":"s"}),XI=SI({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"});function JI(g){return"\\"+Mg[g]}function vI(g){return fg.test(g)}function kI(g){var I=-1,e=Array(g.size);return g.forEach((function(g,t){e[++I]=[t,g]})),e}function HI(g,I){return function(e){return g(I(e))}}function MI(g,I){for(var e=-1,t=g.length,C=0,Q=[];++e<t;){var B=g[e];B!==I&&B!==F||(g[e]=F,Q[C++]=e)}return Q}function YI(g){var I=-1,e=Array(g.size);return g.forEach((function(g){e[++I]=g})),e}function wI(g){var I=-1,e=Array(g.size);return g.forEach((function(g){e[++I]=[g,g]})),e}function TI(g){return vI(g)?function(g){var I=Ng.lastIndex=0;for(;Ng.test(g);)++I;return I}(g):dI(g)}function zI(g){return vI(g)?function(g){return g.match(Ng)||[]}(g):function(g){return g.split("")}(g)}var OI=SI({"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'"});var KI=function g(I){var e=(I=null==I?Og:KI.defaults(Og.Object(),I,KI.pick(Og,Jg))).Array,t=I.Date,C=I.Error,cg=I.Function,Ag=I.Math,lg=I.Object,ag=I.RegExp,rg=I.String,og=I.TypeError,dg=e.prototype,ug=cg.prototype,yg=lg.prototype,bg=I["__core-js_shared__"],Zg=ug.toString,mg=yg.hasOwnProperty,xg=0,Rg=function(){var g=/[^.]+$/.exec(bg&&bg.keys&&bg.keys.IE_PROTO||"");return g?"Symbol(src)_1."+g:""}(),Sg=yg.toString,Gg=Zg.call(lg),Lg=Og._,Vg=ag("^"+Zg.call(mg).replace(z,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),hg=Pg?I.Buffer:void 0,Dg=I.Symbol,Ng=I.Uint8Array,fg=hg?hg.allocUnsafe:void 0,Mg=HI(lg.getPrototypeOf,lg),Tg=lg.create,zg=yg.propertyIsEnumerable,Kg=dg.splice,jg=Dg?Dg.isConcatSpreadable:void 0,_g=Dg?Dg.iterator:void 0,qg=Dg?Dg.toStringTag:void 0,dI=function(){try{var g=_C(lg,"defineProperty");return g({},"",{}),g}catch(I){}}(),SI=I.clearTimeout!==Og.clearTimeout&&I.clearTimeout,jI=t&&t.now!==Og.Date.now&&t.now,PI=I.setTimeout!==Og.setTimeout&&I.setTimeout,_I=Ag.ceil,qI=Ag.floor,$I=lg.getOwnPropertySymbols,ge=hg?hg.isBuffer:void 0,Ie=I.isFinite,ee=dg.join,te=HI(lg.keys,lg),Ce=Ag.max,Qe=Ag.min,Fe=t.now,Be=I.parseInt,ne=Ag.random,Ue=dg.reverse,se=_C(I,"DataView"),ie=_C(I,"Map"),ce=_C(I,"Promise"),Ae=_C(I,"Set"),le=_C(I,"WeakMap"),ae=_C(lg,"create"),re=le&&new le,oe={},de=xQ(se),ue=xQ(ie),ye=xQ(ce),be=xQ(Ae),Ze=xQ(le),me=Dg?Dg.prototype:void 0,xe=me?me.valueOf:void 0,Re=me?me.toString:void 0;function Se(g){if(HF(g)&&!hF(g)&&!(g instanceof he)){if(g instanceof Ve)return g;if(mg.call(g,"__wrapped__"))return RQ(g)}return new Ve(g)}var Ge=function(){function g(){}return function(I){if(!kF(I))return{};if(Tg)return Tg(I);g.prototype=I;var e=new g;return g.prototype=void 0,e}}();function Le(){}function Ve(g,I){this.__wrapped__=g,this.__actions__=[],this.__chain__=!!I,this.__index__=0,this.__values__=void 0}function he(g){this.__wrapped__=g,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}function De(g){var I=-1,e=null==g?0:g.length;for(this.clear();++I<e;){var t=g[I];this.set(t[0],t[1])}}function pe(g){var I=-1,e=null==g?0:g.length;for(this.clear();++I<e;){var t=g[I];this.set(t[0],t[1])}}function Ee(g){var I=-1,e=null==g?0:g.length;for(this.clear();++I<e;){var t=g[I];this.set(t[0],t[1])}}function Ne(g){var I=-1,e=null==g?0:g.length;for(this.__data__=new Ee;++I<e;)this.add(g[I])}function We(g){var I=this.__data__=new pe(g);this.size=I.size}function fe(g,I){var e=hF(g),t=!e&&VF(g),C=!e&&!t&&NF(g),Q=!e&&!t&&!C&&jF(g),F=e||t||C||Q,B=F?VI(g.length,rg):[],n=B.length;for(var U in g)!I&&!mg.call(g,U)||F&&("length"==U||C&&("offset"==U||"parent"==U)||Q&&("buffer"==U||"byteLength"==U||"byteOffset"==U)||CQ(U,n))||B.push(U);return B}function Xe(g){var I=g.length;return I?g[Nt(0,I-1)]:void 0}function Je(g,I){return bQ(aC(g),Oe(I,0,g.length))}function ve(g){return bQ(aC(g))}function ke(g,I,e){(void 0!==e&&!SF(g[I],e)||void 0===e&&!(I in g))&&Te(g,I,e)}function He(g,I,e){var t=g[I];mg.call(g,I)&&SF(t,e)&&(void 0!==e||I in g)||Te(g,I,e)}function Me(g,I){for(var e=g.length;e--;)if(SF(g[e][0],I))return e;return-1}function Ye(g,I,e,t){return qe(g,(function(g,C,Q){I(t,g,e(g),Q)})),t}function we(g,I){return g&&rC(I,oB(I),g)}function Te(g,I,e){"__proto__"==I&&dI?dI(g,I,{configurable:!0,enumerable:!0,value:e,writable:!0}):g[I]=e}function ze(g,I){for(var t=-1,C=I.length,Q=e(C),F=null==g;++t<C;)Q[t]=F?void 0:cB(g,I[t]);return Q}function Oe(g,I,e){return g===g&&(void 0!==e&&(g=g<=e?g:e),void 0!==I&&(g=g>=I?g:I)),g}function Ke(g,I,e,t,C,Q){var F,B=1&I,U=2&I,c=4&I;if(e&&(F=C?e(g,t,C,Q):e(g)),void 0!==F)return F;if(!kF(g))return g;var Z=hF(g);if(Z){if(F=function(g){var I=g.length,e=new g.constructor(I);I&&"string"==typeof g[0]&&mg.call(g,"index")&&(e.index=g.index,e.input=g.input);return e}(g),!B)return aC(g,F)}else{var E=gQ(g),N=E==A||E==l;if(NF(g))return UC(g,B);if(E==o||E==n||N&&!C){if(F=U||N?{}:eQ(g),!B)return U?function(g,I){return rC(g,$C(g),I)}(g,function(g,I){return g&&rC(I,dB(I),g)}(F,g)):function(g,I){return rC(g,qC(g),I)}(g,we(F,g))}else{if(!Hg[E])return C?g:{};F=function(g,I,e){var t=g.constructor;switch(I){case m:return sC(g);case s:case i:return new t(+g);case x:return function(g,I){var e=I?sC(g.buffer):g.buffer;return new g.constructor(e,g.byteOffset,g.byteLength)}(g,e);case R:case S:case G:case L:case V:case h:case"[object Uint8ClampedArray]":case D:case p:return iC(g,e);case a:return new t;case r:case y:return new t(g);case d:return function(g){var I=new g.constructor(g.source,tg.exec(g));return I.lastIndex=g.lastIndex,I}(g);case u:return new t;case b:return C=g,xe?lg(xe.call(C)):{}}var C}(g,E,B)}}Q||(Q=new We);var W=Q.get(g);if(W)return W;Q.set(g,F),zF(g)?g.forEach((function(t){F.add(Ke(t,I,e,t,g,Q))})):MF(g)&&g.forEach((function(t,C){F.set(C,Ke(t,I,e,C,g,Q))}));var f=Z?void 0:(c?U?wC:YC:U?dB:oB)(g);return BI(f||g,(function(t,C){f&&(t=g[C=t]),He(F,C,Ke(t,I,e,C,g,Q))})),F}function je(g,I,e){var t=e.length;if(null==g)return!t;for(g=lg(g);t--;){var C=e[t],Q=I[C],F=g[C];if(void 0===F&&!(C in g)||!Q(F))return!1}return!0}function Pe(g,I,e){if("function"!=typeof g)throw new og(Q);return oQ((function(){g.apply(void 0,e)}),I)}function _e(g,I,e,t){var C=-1,Q=iI,F=!0,B=g.length,n=[],U=I.length;if(!B)return n;e&&(I=AI(I,hI(e))),t?(Q=cI,F=!1):I.length>=200&&(Q=pI,F=!1,I=new Ne(I));g:for(;++C<B;){var s=g[C],i=null==e?s:e(s);if(s=t||0!==s?s:0,F&&i===i){for(var c=U;c--;)if(I[c]===i)continue g;n.push(s)}else Q(I,i,t)||n.push(s)}return n}Se.templateSettings={escape:k,evaluate:H,interpolate:M,variable:"",imports:{_:Se}},Se.prototype=Le.prototype,Se.prototype.constructor=Se,Ve.prototype=Ge(Le.prototype),Ve.prototype.constructor=Ve,he.prototype=Ge(Le.prototype),he.prototype.constructor=he,De.prototype.clear=function(){this.__data__=ae?ae(null):{},this.size=0},De.prototype.delete=function(g){var I=this.has(g)&&delete this.__data__[g];return this.size-=I?1:0,I},De.prototype.get=function(g){var I=this.__data__;if(ae){var e=I[g];return"__lodash_hash_undefined__"===e?void 0:e}return mg.call(I,g)?I[g]:void 0},De.prototype.has=function(g){var I=this.__data__;return ae?void 0!==I[g]:mg.call(I,g)},De.prototype.set=function(g,I){var e=this.__data__;return this.size+=this.has(g)?0:1,e[g]=ae&&void 0===I?"__lodash_hash_undefined__":I,this},pe.prototype.clear=function(){this.__data__=[],this.size=0},pe.prototype.delete=function(g){var I=this.__data__,e=Me(I,g);return!(e<0)&&(e==I.length-1?I.pop():Kg.call(I,e,1),--this.size,!0)},pe.prototype.get=function(g){var I=this.__data__,e=Me(I,g);return e<0?void 0:I[e][1]},pe.prototype.has=function(g){return Me(this.__data__,g)>-1},pe.prototype.set=function(g,I){var e=this.__data__,t=Me(e,g);return t<0?(++this.size,e.push([g,I])):e[t][1]=I,this},Ee.prototype.clear=function(){this.size=0,this.__data__={hash:new De,map:new(ie||pe),string:new De}},Ee.prototype.delete=function(g){var I=jC(this,g).delete(g);return this.size-=I?1:0,I},Ee.prototype.get=function(g){return jC(this,g).get(g)},Ee.prototype.has=function(g){return jC(this,g).has(g)},Ee.prototype.set=function(g,I){var e=jC(this,g),t=e.size;return e.set(g,I),this.size+=e.size==t?0:1,this},Ne.prototype.add=Ne.prototype.push=function(g){return this.__data__.set(g,"__lodash_hash_undefined__"),this},Ne.prototype.has=function(g){return this.__data__.has(g)},We.prototype.clear=function(){this.__data__=new pe,this.size=0},We.prototype.delete=function(g){var I=this.__data__,e=I.delete(g);return this.size=I.size,e},We.prototype.get=function(g){return this.__data__.get(g)},We.prototype.has=function(g){return this.__data__.has(g)},We.prototype.set=function(g,I){var e=this.__data__;if(e instanceof pe){var t=e.__data__;if(!ie||t.length<199)return t.push([g,I]),this.size=++e.size,this;e=this.__data__=new Ee(t)}return e.set(g,I),this.size=e.size,this};var qe=uC(Ft),$e=uC(Bt,!0);function gt(g,I){var e=!0;return qe(g,(function(g,t,C){return e=!!I(g,t,C)})),e}function It(g,I,e){for(var t=-1,C=g.length;++t<C;){var Q=g[t],F=I(Q);if(null!=F&&(void 0===B?F===F&&!KF(F):e(F,B)))var B=F,n=Q}return n}function et(g,I){var e=[];return qe(g,(function(g,t,C){I(g,t,C)&&e.push(g)})),e}function tt(g,I,e,t,C){var Q=-1,F=g.length;for(e||(e=tQ),C||(C=[]);++Q<F;){var B=g[Q];I>0&&e(B)?I>1?tt(B,I-1,e,t,C):lI(C,B):t||(C[C.length]=B)}return C}var Ct=yC(),Qt=yC(!0);function Ft(g,I){return g&&Ct(g,I,oB)}function Bt(g,I){return g&&Qt(g,I,oB)}function nt(g,I){return sI(I,(function(I){return XF(g[I])}))}function Ut(g,I){for(var e=0,t=(I=QC(I,g)).length;null!=g&&e<t;)g=g[mQ(I[e++])];return e&&e==t?g:void 0}function st(g,I,e){var t=I(g);return hF(g)?t:lI(t,e(g))}function it(g){return null==g?void 0===g?"[object Undefined]":"[object Null]":qg&&qg in lg(g)?function(g){var I=mg.call(g,qg),e=g[qg];try{g[qg]=void 0;var t=!0}catch(Q){}var C=Sg.call(g);t&&(I?g[qg]=e:delete g[qg]);return C}(g):function(g){return Sg.call(g)}(g)}function ct(g,I){return g>I}function At(g,I){return null!=g&&mg.call(g,I)}function lt(g,I){return null!=g&&I in lg(g)}function at(g,I,t){for(var C=t?cI:iI,Q=g[0].length,F=g.length,B=F,n=e(F),U=1/0,s=[];B--;){var i=g[B];B&&I&&(i=AI(i,hI(I))),U=Qe(i.length,U),n[B]=!t&&(I||Q>=120&&i.length>=120)?new Ne(B&&i):void 0}i=g[0];var c=-1,A=n[0];g:for(;++c<Q&&s.length<U;){var l=i[c],a=I?I(l):l;if(l=t||0!==l?l:0,!(A?pI(A,a):C(s,a,t))){for(B=F;--B;){var r=n[B];if(!(r?pI(r,a):C(g[B],a,t)))continue g}A&&A.push(a),s.push(l)}}return s}function rt(g,I,e){var t=null==(g=AQ(g,I=QC(I,g)))?g:g[mQ(fQ(I))];return null==t?void 0:QI(t,g,e)}function ot(g){return HF(g)&&it(g)==n}function dt(g,I,e,t,C){return g===I||(null==g||null==I||!HF(g)&&!HF(I)?g!==g&&I!==I:function(g,I,e,t,C,Q){var F=hF(g),B=hF(I),A=F?U:gQ(g),l=B?U:gQ(I),Z=(A=A==n?o:A)==o,R=(l=l==n?o:l)==o,S=A==l;if(S&&NF(g)){if(!NF(I))return!1;F=!0,Z=!1}if(S&&!Z)return Q||(Q=new We),F||jF(g)?HC(g,I,e,t,C,Q):function(g,I,e,t,C,Q,F){switch(e){case x:if(g.byteLength!=I.byteLength||g.byteOffset!=I.byteOffset)return!1;g=g.buffer,I=I.buffer;case m:return!(g.byteLength!=I.byteLength||!Q(new Ng(g),new Ng(I)));case s:case i:case r:return SF(+g,+I);case c:return g.name==I.name&&g.message==I.message;case d:case y:return g==I+"";case a:var B=kI;case u:var n=1&t;if(B||(B=YI),g.size!=I.size&&!n)return!1;var U=F.get(g);if(U)return U==I;t|=2,F.set(g,I);var A=HC(B(g),B(I),t,C,Q,F);return F.delete(g),A;case b:if(xe)return xe.call(g)==xe.call(I)}return!1}(g,I,A,e,t,C,Q);if(!(1&e)){var G=Z&&mg.call(g,"__wrapped__"),L=R&&mg.call(I,"__wrapped__");if(G||L){var V=G?g.value():g,h=L?I.value():I;return Q||(Q=new We),C(V,h,e,t,Q)}}if(!S)return!1;return Q||(Q=new We),function(g,I,e,t,C,Q){var F=1&e,B=YC(g),n=B.length,U=YC(I).length;if(n!=U&&!F)return!1;var s=n;for(;s--;){var i=B[s];if(!(F?i in I:mg.call(I,i)))return!1}var c=Q.get(g),A=Q.get(I);if(c&&A)return c==I&&A==g;var l=!0;Q.set(g,I),Q.set(I,g);var a=F;for(;++s<n;){i=B[s];var r=g[i],o=I[i];if(t)var d=F?t(o,r,i,I,g,Q):t(r,o,i,g,I,Q);if(!(void 0===d?r===o||C(r,o,e,t,Q):d)){l=!1;break}a||(a="constructor"==i)}if(l&&!a){var u=g.constructor,y=I.constructor;u==y||!("constructor"in g)||!("constructor"in I)||"function"==typeof u&&u instanceof u&&"function"==typeof y&&y instanceof y||(l=!1)}return Q.delete(g),Q.delete(I),l}(g,I,e,t,C,Q)}(g,I,e,t,dt,C))}function ut(g,I,e,t){var C=e.length,Q=C,F=!t;if(null==g)return!Q;for(g=lg(g);C--;){var B=e[C];if(F&&B[2]?B[1]!==g[B[0]]:!(B[0]in g))return!1}for(;++C<Q;){var n=(B=e[C])[0],U=g[n],s=B[1];if(F&&B[2]){if(void 0===U&&!(n in g))return!1}else{var i=new We;if(t)var c=t(U,s,n,g,I,i);if(!(void 0===c?dt(s,U,3,t,i):c))return!1}}return!0}function yt(g){return!(!kF(g)||(I=g,Rg&&Rg in I))&&(XF(g)?Vg:Fg).test(xQ(g));var I}function bt(g){return"function"==typeof g?g:null==g?YB:"object"==typeof g?hF(g)?Gt(g[0],g[1]):St(g):qB(g)}function Zt(g){if(!UQ(g))return te(g);var I=[];for(var e in lg(g))mg.call(g,e)&&"constructor"!=e&&I.push(e);return I}function mt(g){if(!kF(g))return function(g){var I=[];if(null!=g)for(var e in lg(g))I.push(e);return I}(g);var I=UQ(g),e=[];for(var t in g)("constructor"!=t||!I&&mg.call(g,t))&&e.push(t);return e}function xt(g,I){return g<I}function Rt(g,I){var t=-1,C=pF(g)?e(g.length):[];return qe(g,(function(g,e,Q){C[++t]=I(g,e,Q)})),C}function St(g){var I=PC(g);return 1==I.length&&I[0][2]?iQ(I[0][0],I[0][1]):function(e){return e===g||ut(e,g,I)}}function Gt(g,I){return FQ(g)&&sQ(I)?iQ(mQ(g),I):function(e){var t=cB(e,g);return void 0===t&&t===I?AB(e,g):dt(I,t,3)}}function Lt(g,I,e,t,C){g!==I&&Ct(I,(function(Q,F){if(C||(C=new We),kF(Q))!function(g,I,e,t,C,Q,F){var B=aQ(g,e),n=aQ(I,e),U=F.get(n);if(U)return void ke(g,e,U);var s=Q?Q(B,n,e+"",g,I,F):void 0,i=void 0===s;if(i){var c=hF(n),A=!c&&NF(n),l=!c&&!A&&jF(n);s=n,c||A||l?hF(B)?s=B:EF(B)?s=aC(B):A?(i=!1,s=UC(n,!0)):l?(i=!1,s=iC(n,!0)):s=[]:wF(n)||VF(n)?(s=B,VF(B)?s=tB(B):kF(B)&&!XF(B)||(s=eQ(n))):i=!1}i&&(F.set(n,s),C(s,n,t,Q,F),F.delete(n));ke(g,e,s)}(g,I,F,e,Lt,t,C);else{var B=t?t(aQ(g,F),Q,F+"",g,I,C):void 0;void 0===B&&(B=Q),ke(g,F,B)}}),dB)}function Vt(g,I){var e=g.length;if(e)return CQ(I+=I<0?e:0,e)?g[I]:void 0}function ht(g,I,e){I=I.length?AI(I,(function(g){return hF(g)?function(I){return Ut(I,1===g.length?g[0]:g)}:g})):[YB];var t=-1;return I=AI(I,hI(KC())),function(g,I){var e=g.length;for(g.sort(I);e--;)g[e]=g[e].value;return g}(Rt(g,(function(g,e,C){return{criteria:AI(I,(function(I){return I(g)})),index:++t,value:g}})),(function(g,I){return function(g,I,e){var t=-1,C=g.criteria,Q=I.criteria,F=C.length,B=e.length;for(;++t<F;){var n=cC(C[t],Q[t]);if(n){if(t>=B)return n;var U=e[t];return n*("desc"==U?-1:1)}}return g.index-I.index}(g,I,e)}))}function Dt(g,I,e){for(var t=-1,C=I.length,Q={};++t<C;){var F=I[t],B=Ut(g,F);e(B,F)&&vt(Q,QC(F,g),B)}return Q}function pt(g,I,e,t){var C=t?ZI:bI,Q=-1,F=I.length,B=g;for(g===I&&(I=aC(I)),e&&(B=AI(g,hI(e)));++Q<F;)for(var n=0,U=I[Q],s=e?e(U):U;(n=C(B,s,n,t))>-1;)B!==g&&Kg.call(B,n,1),Kg.call(g,n,1);return g}function Et(g,I){for(var e=g?I.length:0,t=e-1;e--;){var C=I[e];if(e==t||C!==Q){var Q=C;CQ(C)?Kg.call(g,C,1):_t(g,C)}}return g}function Nt(g,I){return g+qI(ne()*(I-g+1))}function Wt(g,I){var e="";if(!g||I<1||I>9007199254740991)return e;do{I%2&&(e+=g),(I=qI(I/2))&&(g+=g)}while(I);return e}function ft(g,I){return dQ(cQ(g,I,YB),g+"")}function Xt(g){return Xe(SB(g))}function Jt(g,I){var e=SB(g);return bQ(e,Oe(I,0,e.length))}function vt(g,I,e,t){if(!kF(g))return g;for(var C=-1,Q=(I=QC(I,g)).length,F=Q-1,B=g;null!=B&&++C<Q;){var n=mQ(I[C]),U=e;if("__proto__"===n||"constructor"===n||"prototype"===n)return g;if(C!=F){var s=B[n];void 0===(U=t?t(s,n,B):void 0)&&(U=kF(s)?s:CQ(I[C+1])?[]:{})}He(B,n,U),B=B[n]}return g}var kt=re?function(g,I){return re.set(g,I),g}:YB,Ht=dI?function(g,I){return dI(g,"toString",{configurable:!0,enumerable:!1,value:kB(I),writable:!0})}:YB;function Mt(g){return bQ(SB(g))}function Yt(g,I,t){var C=-1,Q=g.length;I<0&&(I=-I>Q?0:Q+I),(t=t>Q?Q:t)<0&&(t+=Q),Q=I>t?0:t-I>>>0,I>>>=0;for(var F=e(Q);++C<Q;)F[C]=g[C+I];return F}function wt(g,I){var e;return qe(g,(function(g,t,C){return!(e=I(g,t,C))})),!!e}function Tt(g,I,e){var t=0,C=null==g?t:g.length;if("number"==typeof I&&I===I&&C<=2147483647){for(;t<C;){var Q=t+C>>>1,F=g[Q];null!==F&&!KF(F)&&(e?F<=I:F<I)?t=Q+1:C=Q}return C}return zt(g,I,YB,e)}function zt(g,I,e,t){var C=0,Q=null==g?0:g.length;if(0===Q)return 0;for(var F=(I=e(I))!==I,B=null===I,n=KF(I),U=void 0===I;C<Q;){var s=qI((C+Q)/2),i=e(g[s]),c=void 0!==i,A=null===i,l=i===i,a=KF(i);if(F)var r=t||l;else r=U?l&&(t||c):B?l&&c&&(t||!A):n?l&&c&&!A&&(t||!a):!A&&!a&&(t?i<=I:i<I);r?C=s+1:Q=s}return Qe(Q,4294967294)}function Ot(g,I){for(var e=-1,t=g.length,C=0,Q=[];++e<t;){var F=g[e],B=I?I(F):F;if(!e||!SF(B,n)){var n=B;Q[C++]=0===F?0:F}}return Q}function Kt(g){return"number"==typeof g?g:KF(g)?NaN:+g}function jt(g){if("string"==typeof g)return g;if(hF(g))return AI(g,jt)+"";if(KF(g))return Re?Re.call(g):"";var I=g+"";return"0"==I&&1/g==-1/0?"-0":I}function Pt(g,I,e){var t=-1,C=iI,Q=g.length,F=!0,B=[],n=B;if(e)F=!1,C=cI;else if(Q>=200){var U=I?null:WC(g);if(U)return YI(U);F=!1,C=pI,n=new Ne}else n=I?[]:B;g:for(;++t<Q;){var s=g[t],i=I?I(s):s;if(s=e||0!==s?s:0,F&&i===i){for(var c=n.length;c--;)if(n[c]===i)continue g;I&&n.push(i),B.push(s)}else C(n,i,e)||(n!==B&&n.push(i),B.push(s))}return B}function _t(g,I){return null==(g=AQ(g,I=QC(I,g)))||delete g[mQ(fQ(I))]}function qt(g,I,e,t){return vt(g,I,e(Ut(g,I)),t)}function $t(g,I,e,t){for(var C=g.length,Q=t?C:-1;(t?Q--:++Q<C)&&I(g[Q],Q,g););return e?Yt(g,t?0:Q,t?Q+1:C):Yt(g,t?Q+1:0,t?C:Q)}function gC(g,I){var e=g;return e instanceof he&&(e=e.value()),aI(I,(function(g,I){return I.func.apply(I.thisArg,lI([g],I.args))}),e)}function IC(g,I,t){var C=g.length;if(C<2)return C?Pt(g[0]):[];for(var Q=-1,F=e(C);++Q<C;)for(var B=g[Q],n=-1;++n<C;)n!=Q&&(F[Q]=_e(F[Q]||B,g[n],I,t));return Pt(tt(F,1),I,t)}function eC(g,I,e){for(var t=-1,C=g.length,Q=I.length,F={};++t<C;){var B=t<Q?I[t]:void 0;e(F,g[t],B)}return F}function tC(g){return EF(g)?g:[]}function CC(g){return"function"==typeof g?g:YB}function QC(g,I){return hF(g)?g:FQ(g,I)?[g]:ZQ(CB(g))}var FC=ft;function BC(g,I,e){var t=g.length;return e=void 0===e?t:e,!I&&e>=t?g:Yt(g,I,e)}var nC=SI||function(g){return Og.clearTimeout(g)};function UC(g,I){if(I)return g.slice();var e=g.length,t=fg?fg(e):new g.constructor(e);return g.copy(t),t}function sC(g){var I=new g.constructor(g.byteLength);return new Ng(I).set(new Ng(g)),I}function iC(g,I){var e=I?sC(g.buffer):g.buffer;return new g.constructor(e,g.byteOffset,g.length)}function cC(g,I){if(g!==I){var e=void 0!==g,t=null===g,C=g===g,Q=KF(g),F=void 0!==I,B=null===I,n=I===I,U=KF(I);if(!B&&!U&&!Q&&g>I||Q&&F&&n&&!B&&!U||t&&F&&n||!e&&n||!C)return 1;if(!t&&!Q&&!U&&g<I||U&&e&&C&&!t&&!Q||B&&e&&C||!F&&C||!n)return-1}return 0}function AC(g,I,t,C){for(var Q=-1,F=g.length,B=t.length,n=-1,U=I.length,s=Ce(F-B,0),i=e(U+s),c=!C;++n<U;)i[n]=I[n];for(;++Q<B;)(c||Q<F)&&(i[t[Q]]=g[Q]);for(;s--;)i[n++]=g[Q++];return i}function lC(g,I,t,C){for(var Q=-1,F=g.length,B=-1,n=t.length,U=-1,s=I.length,i=Ce(F-n,0),c=e(i+s),A=!C;++Q<i;)c[Q]=g[Q];for(var l=Q;++U<s;)c[l+U]=I[U];for(;++B<n;)(A||Q<F)&&(c[l+t[B]]=g[Q++]);return c}function aC(g,I){var t=-1,C=g.length;for(I||(I=e(C));++t<C;)I[t]=g[t];return I}function rC(g,I,e,t){var C=!e;e||(e={});for(var Q=-1,F=I.length;++Q<F;){var B=I[Q],n=t?t(e[B],g[B],B,e,g):void 0;void 0===n&&(n=g[B]),C?Te(e,B,n):He(e,B,n)}return e}function oC(g,I){return function(e,t){var C=hF(e)?FI:Ye,Q=I?I():{};return C(e,g,KC(t,2),Q)}}function dC(g){return ft((function(I,e){var t=-1,C=e.length,Q=C>1?e[C-1]:void 0,F=C>2?e[2]:void 0;for(Q=g.length>3&&"function"==typeof Q?(C--,Q):void 0,F&&QQ(e[0],e[1],F)&&(Q=C<3?void 0:Q,C=1),I=lg(I);++t<C;){var B=e[t];B&&g(I,B,t,Q)}return I}))}function uC(g,I){return function(e,t){if(null==e)return e;if(!pF(e))return g(e,t);for(var C=e.length,Q=I?C:-1,F=lg(e);(I?Q--:++Q<C)&&!1!==t(F[Q],Q,F););return e}}function yC(g){return function(I,e,t){for(var C=-1,Q=lg(I),F=t(I),B=F.length;B--;){var n=F[g?B:++C];if(!1===e(Q[n],n,Q))break}return I}}function bC(g){return function(I){var e=vI(I=CB(I))?zI(I):void 0,t=e?e[0]:I.charAt(0),C=e?BC(e,1).join(""):I.slice(1);return t[g]()+C}}function ZC(g){return function(I){return aI(XB(VB(I).replace(pg,"")),g,"")}}function mC(g){return function(){var I=arguments;switch(I.length){case 0:return new g;case 1:return new g(I[0]);case 2:return new g(I[0],I[1]);case 3:return new g(I[0],I[1],I[2]);case 4:return new g(I[0],I[1],I[2],I[3]);case 5:return new g(I[0],I[1],I[2],I[3],I[4]);case 6:return new g(I[0],I[1],I[2],I[3],I[4],I[5]);case 7:return new g(I[0],I[1],I[2],I[3],I[4],I[5],I[6])}var e=Ge(g.prototype),t=g.apply(e,I);return kF(t)?t:e}}function xC(g){return function(I,e,t){var C=lg(I);if(!pF(I)){var Q=KC(e,3);I=oB(I),e=function(g){return Q(C[g],g,C)}}var F=g(I,e,t);return F>-1?C[Q?I[F]:F]:void 0}}function RC(g){return MC((function(I){var e=I.length,t=e,C=Ve.prototype.thru;for(g&&I.reverse();t--;){var F=I[t];if("function"!=typeof F)throw new og(Q);if(C&&!B&&"wrapper"==zC(F))var B=new Ve([],!0)}for(t=B?t:e;++t<e;){var n=zC(F=I[t]),U="wrapper"==n?TC(F):void 0;B=U&&BQ(U[0])&&424==U[1]&&!U[4].length&&1==U[9]?B[zC(U[0])].apply(B,U[3]):1==F.length&&BQ(F)?B[n]():B.thru(F)}return function(){var g=arguments,t=g[0];if(B&&1==g.length&&hF(t))return B.plant(t).value();for(var C=0,Q=e?I[C].apply(this,g):t;++C<e;)Q=I[C].call(this,Q);return Q}}))}function SC(g,I,t,C,Q,F,B,n,U,s){var i=128&I,c=1&I,A=2&I,l=24&I,a=512&I,r=A?void 0:mC(g);return function o(){for(var d=arguments.length,u=e(d),y=d;y--;)u[y]=arguments[y];if(l)var b=OC(o),Z=WI(u,b);if(C&&(u=AC(u,C,Q,l)),F&&(u=lC(u,F,B,l)),d-=Z,l&&d<s){var m=MI(u,b);return EC(g,I,SC,o.placeholder,t,u,m,n,U,s-d)}var x=c?t:this,R=A?x[g]:g;return d=u.length,n?u=lQ(u,n):a&&d>1&&u.reverse(),i&&U<d&&(u.length=U),this&&this!==Og&&this instanceof o&&(R=r||mC(R)),R.apply(x,u)}}function GC(g,I){return function(e,t){return function(g,I,e,t){return Ft(g,(function(g,C,Q){I(t,e(g),C,Q)})),t}(e,g,I(t),{})}}function LC(g,I){return function(e,t){var C;if(void 0===e&&void 0===t)return I;if(void 0!==e&&(C=e),void 0!==t){if(void 0===C)return t;"string"==typeof e||"string"==typeof t?(e=jt(e),t=jt(t)):(e=Kt(e),t=Kt(t)),C=g(e,t)}return C}}function VC(g){return MC((function(I){return I=AI(I,hI(KC())),ft((function(e){var t=this;return g(I,(function(g){return QI(g,t,e)}))}))}))}function hC(g,I){var e=(I=void 0===I?" ":jt(I)).length;if(e<2)return e?Wt(I,g):I;var t=Wt(I,_I(g/TI(I)));return vI(I)?BC(zI(t),0,g).join(""):t.slice(0,g)}function DC(g){return function(I,t,C){return C&&"number"!=typeof C&&QQ(I,t,C)&&(t=C=void 0),I=$F(I),void 0===t?(t=I,I=0):t=$F(t),function(g,I,t,C){for(var Q=-1,F=Ce(_I((I-g)/(t||1)),0),B=e(F);F--;)B[C?F:++Q]=g,g+=t;return B}(I,t,C=void 0===C?I<t?1:-1:$F(C),g)}}function pC(g){return function(I,e){return"string"==typeof I&&"string"==typeof e||(I=eB(I),e=eB(e)),g(I,e)}}function EC(g,I,e,t,C,Q,F,B,n,U){var s=8&I;I|=s?32:64,4&(I&=~(s?64:32))||(I&=-4);var i=[g,I,C,s?Q:void 0,s?F:void 0,s?void 0:Q,s?void 0:F,B,n,U],c=e.apply(void 0,i);return BQ(g)&&rQ(c,i),c.placeholder=t,uQ(c,g,I)}function NC(g){var I=Ag[g];return function(g,e){if(g=eB(g),(e=null==e?0:Qe(gB(e),292))&&Ie(g)){var t=(CB(g)+"e").split("e");return+((t=(CB(I(t[0]+"e"+(+t[1]+e)))+"e").split("e"))[0]+"e"+(+t[1]-e))}return I(g)}}var WC=Ae&&1/YI(new Ae([,-0]))[1]==1/0?function(g){return new Ae(g)}:KB;function fC(g){return function(I){var e=gQ(I);return e==a?kI(I):e==u?wI(I):function(g,I){return AI(I,(function(I){return[I,g[I]]}))}(I,g(I))}}function XC(g,I,t,C,B,n,U,s){var i=2&I;if(!i&&"function"!=typeof g)throw new og(Q);var c=C?C.length:0;if(c||(I&=-97,C=B=void 0),U=void 0===U?U:Ce(gB(U),0),s=void 0===s?s:gB(s),c-=B?B.length:0,64&I){var A=C,l=B;C=B=void 0}var a=i?void 0:TC(g),r=[g,I,t,C,B,A,l,n,U,s];if(a&&function(g,I){var e=g[1],t=I[1],C=e|t,Q=C<131,B=128==t&&8==e||128==t&&256==e&&g[7].length<=I[8]||384==t&&I[7].length<=I[8]&&8==e;if(!Q&&!B)return g;1&t&&(g[2]=I[2],C|=1&e?0:4);var n=I[3];if(n){var U=g[3];g[3]=U?AC(U,n,I[4]):n,g[4]=U?MI(g[3],F):I[4]}(n=I[5])&&(U=g[5],g[5]=U?lC(U,n,I[6]):n,g[6]=U?MI(g[5],F):I[6]);(n=I[7])&&(g[7]=n);128&t&&(g[8]=null==g[8]?I[8]:Qe(g[8],I[8]));null==g[9]&&(g[9]=I[9]);g[0]=I[0],g[1]=C}(r,a),g=r[0],I=r[1],t=r[2],C=r[3],B=r[4],!(s=r[9]=void 0===r[9]?i?0:g.length:Ce(r[9]-c,0))&&24&I&&(I&=-25),I&&1!=I)o=8==I||16==I?function(g,I,t){var C=mC(g);return function Q(){for(var F=arguments.length,B=e(F),n=F,U=OC(Q);n--;)B[n]=arguments[n];var s=F<3&&B[0]!==U&&B[F-1]!==U?[]:MI(B,U);if((F-=s.length)<t)return EC(g,I,SC,Q.placeholder,void 0,B,s,void 0,void 0,t-F);var i=this&&this!==Og&&this instanceof Q?C:g;return QI(i,this,B)}}(g,I,s):32!=I&&33!=I||B.length?SC.apply(void 0,r):function(g,I,t,C){var Q=1&I,F=mC(g);return function I(){for(var B=-1,n=arguments.length,U=-1,s=C.length,i=e(s+n),c=this&&this!==Og&&this instanceof I?F:g;++U<s;)i[U]=C[U];for(;n--;)i[U++]=arguments[++B];return QI(c,Q?t:this,i)}}(g,I,t,C);else var o=function(g,I,e){var t=1&I,C=mC(g);return function I(){var Q=this&&this!==Og&&this instanceof I?C:g;return Q.apply(t?e:this,arguments)}}(g,I,t);return uQ((a?kt:rQ)(o,r),g,I)}function JC(g,I,e,t){return void 0===g||SF(g,yg[e])&&!mg.call(t,e)?I:g}function vC(g,I,e,t,C,Q){return kF(g)&&kF(I)&&(Q.set(I,g),Lt(g,I,void 0,vC,Q),Q.delete(I)),g}function kC(g){return wF(g)?void 0:g}function HC(g,I,e,t,C,Q){var F=1&e,B=g.length,n=I.length;if(B!=n&&!(F&&n>B))return!1;var U=Q.get(g),s=Q.get(I);if(U&&s)return U==I&&s==g;var i=-1,c=!0,A=2&e?new Ne:void 0;for(Q.set(g,I),Q.set(I,g);++i<B;){var l=g[i],a=I[i];if(t)var r=F?t(a,l,i,I,g,Q):t(l,a,i,g,I,Q);if(void 0!==r){if(r)continue;c=!1;break}if(A){if(!oI(I,(function(g,I){if(!pI(A,I)&&(l===g||C(l,g,e,t,Q)))return A.push(I)}))){c=!1;break}}else if(l!==a&&!C(l,a,e,t,Q)){c=!1;break}}return Q.delete(g),Q.delete(I),c}function MC(g){return dQ(cQ(g,void 0,DQ),g+"")}function YC(g){return st(g,oB,qC)}function wC(g){return st(g,dB,$C)}var TC=re?function(g){return re.get(g)}:KB;function zC(g){for(var I=g.name+"",e=oe[I],t=mg.call(oe,I)?e.length:0;t--;){var C=e[t],Q=C.func;if(null==Q||Q==g)return C.name}return I}function OC(g){return(mg.call(Se,"placeholder")?Se:g).placeholder}function KC(){var g=Se.iteratee||wB;return g=g===wB?bt:g,arguments.length?g(arguments[0],arguments[1]):g}function jC(g,I){var e=g.__data__;return function(g){var I=typeof g;return"string"==I||"number"==I||"symbol"==I||"boolean"==I?"__proto__"!==g:null===g}(I)?e["string"==typeof I?"string":"hash"]:e.map}function PC(g){for(var I=oB(g),e=I.length;e--;){var t=I[e],C=g[t];I[e]=[t,C,sQ(C)]}return I}function _C(g,I){var e=function(g,I){return null==g?void 0:g[I]}(g,I);return yt(e)?e:void 0}var qC=$I?function(g){return null==g?[]:(g=lg(g),sI($I(g),(function(I){return zg.call(g,I)})))}:In,$C=$I?function(g){for(var I=[];g;)lI(I,qC(g)),g=Mg(g);return I}:In,gQ=it;function IQ(g,I,e){for(var t=-1,C=(I=QC(I,g)).length,Q=!1;++t<C;){var F=mQ(I[t]);if(!(Q=null!=g&&e(g,F)))break;g=g[F]}return Q||++t!=C?Q:!!(C=null==g?0:g.length)&&vF(C)&&CQ(F,C)&&(hF(g)||VF(g))}function eQ(g){return"function"!=typeof g.constructor||UQ(g)?{}:Ge(Mg(g))}function tQ(g){return hF(g)||VF(g)||!!(jg&&g&&g[jg])}function CQ(g,I){var e=typeof g;return!!(I=null==I?9007199254740991:I)&&("number"==e||"symbol"!=e&&ng.test(g))&&g>-1&&g%1==0&&g<I}function QQ(g,I,e){if(!kF(e))return!1;var t=typeof I;return!!("number"==t?pF(e)&&CQ(I,e.length):"string"==t&&I in e)&&SF(e[I],g)}function FQ(g,I){if(hF(g))return!1;var e=typeof g;return!("number"!=e&&"symbol"!=e&&"boolean"!=e&&null!=g&&!KF(g))||(w.test(g)||!Y.test(g)||null!=I&&g in lg(I))}function BQ(g){var I=zC(g),e=Se[I];if("function"!=typeof e||!(I in he.prototype))return!1;if(g===e)return!0;var t=TC(e);return!!t&&g===t[0]}(se&&gQ(new se(new ArrayBuffer(1)))!=x||ie&&gQ(new ie)!=a||ce&&"[object Promise]"!=gQ(ce.resolve())||Ae&&gQ(new Ae)!=u||le&&gQ(new le)!=Z)&&(gQ=function(g){var I=it(g),e=I==o?g.constructor:void 0,t=e?xQ(e):"";if(t)switch(t){case de:return x;case ue:return a;case ye:return"[object Promise]";case be:return u;case Ze:return Z}return I});var nQ=bg?XF:en;function UQ(g){var I=g&&g.constructor;return g===("function"==typeof I&&I.prototype||yg)}function sQ(g){return g===g&&!kF(g)}function iQ(g,I){return function(e){return null!=e&&(e[g]===I&&(void 0!==I||g in lg(e)))}}function cQ(g,I,t){return I=Ce(void 0===I?g.length-1:I,0),function(){for(var C=arguments,Q=-1,F=Ce(C.length-I,0),B=e(F);++Q<F;)B[Q]=C[I+Q];Q=-1;for(var n=e(I+1);++Q<I;)n[Q]=C[Q];return n[I]=t(B),QI(g,this,n)}}function AQ(g,I){return I.length<2?g:Ut(g,Yt(I,0,-1))}function lQ(g,I){for(var e=g.length,t=Qe(I.length,e),C=aC(g);t--;){var Q=I[t];g[t]=CQ(Q,e)?C[Q]:void 0}return g}function aQ(g,I){if(("constructor"!==I||"function"!==typeof g[I])&&"__proto__"!=I)return g[I]}var rQ=yQ(kt),oQ=PI||function(g,I){return Og.setTimeout(g,I)},dQ=yQ(Ht);function uQ(g,I,e){var t=I+"";return dQ(g,function(g,I){var e=I.length;if(!e)return g;var t=e-1;return I[t]=(e>1?"& ":"")+I[t],I=I.join(e>2?", ":" "),g.replace(_,"{\n/* [wrapped with "+I+"] */\n")}(t,function(g,I){return BI(B,(function(e){var t="_."+e[0];I&e[1]&&!iI(g,t)&&g.push(t)})),g.sort()}(function(g){var I=g.match(q);return I?I[1].split($):[]}(t),e)))}function yQ(g){var I=0,e=0;return function(){var t=Fe(),C=16-(t-e);if(e=t,C>0){if(++I>=800)return arguments[0]}else I=0;return g.apply(void 0,arguments)}}function bQ(g,I){var e=-1,t=g.length,C=t-1;for(I=void 0===I?t:I;++e<I;){var Q=Nt(e,C),F=g[Q];g[Q]=g[e],g[e]=F}return g.length=I,g}var ZQ=function(g){var I=yF(g,(function(g){return 500===e.size&&e.clear(),g})),e=I.cache;return I}((function(g){var I=[];return 46===g.charCodeAt(0)&&I.push(""),g.replace(T,(function(g,e,t,C){I.push(t?C.replace(Ig,"$1"):e||g)})),I}));function mQ(g){if("string"==typeof g||KF(g))return g;var I=g+"";return"0"==I&&1/g==-1/0?"-0":I}function xQ(g){if(null!=g){try{return Zg.call(g)}catch(I){}try{return g+""}catch(I){}}return""}function RQ(g){if(g instanceof he)return g.clone();var I=new Ve(g.__wrapped__,g.__chain__);return I.__actions__=aC(g.__actions__),I.__index__=g.__index__,I.__values__=g.__values__,I}var SQ=ft((function(g,I){return EF(g)?_e(g,tt(I,1,EF,!0)):[]})),GQ=ft((function(g,I){var e=fQ(I);return EF(e)&&(e=void 0),EF(g)?_e(g,tt(I,1,EF,!0),KC(e,2)):[]})),LQ=ft((function(g,I){var e=fQ(I);return EF(e)&&(e=void 0),EF(g)?_e(g,tt(I,1,EF,!0),void 0,e):[]}));function VQ(g,I,e){var t=null==g?0:g.length;if(!t)return-1;var C=null==e?0:gB(e);return C<0&&(C=Ce(t+C,0)),yI(g,KC(I,3),C)}function hQ(g,I,e){var t=null==g?0:g.length;if(!t)return-1;var C=t-1;return void 0!==e&&(C=gB(e),C=e<0?Ce(t+C,0):Qe(C,t-1)),yI(g,KC(I,3),C,!0)}function DQ(g){return(null==g?0:g.length)?tt(g,1):[]}function pQ(g){return g&&g.length?g[0]:void 0}var EQ=ft((function(g){var I=AI(g,tC);return I.length&&I[0]===g[0]?at(I):[]})),NQ=ft((function(g){var I=fQ(g),e=AI(g,tC);return I===fQ(e)?I=void 0:e.pop(),e.length&&e[0]===g[0]?at(e,KC(I,2)):[]})),WQ=ft((function(g){var I=fQ(g),e=AI(g,tC);return(I="function"==typeof I?I:void 0)&&e.pop(),e.length&&e[0]===g[0]?at(e,void 0,I):[]}));function fQ(g){var I=null==g?0:g.length;return I?g[I-1]:void 0}var XQ=ft(JQ);function JQ(g,I){return g&&g.length&&I&&I.length?pt(g,I):g}var vQ=MC((function(g,I){var e=null==g?0:g.length,t=ze(g,I);return Et(g,AI(I,(function(g){return CQ(g,e)?+g:g})).sort(cC)),t}));function kQ(g){return null==g?g:Ue.call(g)}var HQ=ft((function(g){return Pt(tt(g,1,EF,!0))})),MQ=ft((function(g){var I=fQ(g);return EF(I)&&(I=void 0),Pt(tt(g,1,EF,!0),KC(I,2))})),YQ=ft((function(g){var I=fQ(g);return I="function"==typeof I?I:void 0,Pt(tt(g,1,EF,!0),void 0,I)}));function wQ(g){if(!g||!g.length)return[];var I=0;return g=sI(g,(function(g){if(EF(g))return I=Ce(g.length,I),!0})),VI(I,(function(I){return AI(g,RI(I))}))}function TQ(g,I){if(!g||!g.length)return[];var e=wQ(g);return null==I?e:AI(e,(function(g){return QI(I,void 0,g)}))}var zQ=ft((function(g,I){return EF(g)?_e(g,I):[]})),OQ=ft((function(g){return IC(sI(g,EF))})),KQ=ft((function(g){var I=fQ(g);return EF(I)&&(I=void 0),IC(sI(g,EF),KC(I,2))})),jQ=ft((function(g){var I=fQ(g);return I="function"==typeof I?I:void 0,IC(sI(g,EF),void 0,I)})),PQ=ft(wQ);var _Q=ft((function(g){var I=g.length,e=I>1?g[I-1]:void 0;return e="function"==typeof e?(g.pop(),e):void 0,TQ(g,e)}));function qQ(g){var I=Se(g);return I.__chain__=!0,I}function $Q(g,I){return I(g)}var gF=MC((function(g){var I=g.length,e=I?g[0]:0,t=this.__wrapped__,C=function(I){return ze(I,g)};return!(I>1||this.__actions__.length)&&t instanceof he&&CQ(e)?((t=t.slice(e,+e+(I?1:0))).__actions__.push({func:$Q,args:[C],thisArg:void 0}),new Ve(t,this.__chain__).thru((function(g){return I&&!g.length&&g.push(void 0),g}))):this.thru(C)}));var IF=oC((function(g,I,e){mg.call(g,e)?++g[e]:Te(g,e,1)}));var eF=xC(VQ),tF=xC(hQ);function CF(g,I){return(hF(g)?BI:qe)(g,KC(I,3))}function QF(g,I){return(hF(g)?nI:$e)(g,KC(I,3))}var FF=oC((function(g,I,e){mg.call(g,e)?g[e].push(I):Te(g,e,[I])}));var BF=ft((function(g,I,t){var C=-1,Q="function"==typeof I,F=pF(g)?e(g.length):[];return qe(g,(function(g){F[++C]=Q?QI(I,g,t):rt(g,I,t)})),F})),nF=oC((function(g,I,e){Te(g,e,I)}));function UF(g,I){return(hF(g)?AI:Rt)(g,KC(I,3))}var sF=oC((function(g,I,e){g[e?0:1].push(I)}),(function(){return[[],[]]}));var iF=ft((function(g,I){if(null==g)return[];var e=I.length;return e>1&&QQ(g,I[0],I[1])?I=[]:e>2&&QQ(I[0],I[1],I[2])&&(I=[I[0]]),ht(g,tt(I,1),[])})),cF=jI||function(){return Og.Date.now()};function AF(g,I,e){return I=e?void 0:I,XC(g,128,void 0,void 0,void 0,void 0,I=g&&null==I?g.length:I)}function lF(g,I){var e;if("function"!=typeof I)throw new og(Q);return g=gB(g),function(){return--g>0&&(e=I.apply(this,arguments)),g<=1&&(I=void 0),e}}var aF=ft((function(g,I,e){var t=1;if(e.length){var C=MI(e,OC(aF));t|=32}return XC(g,t,I,e,C)})),rF=ft((function(g,I,e){var t=3;if(e.length){var C=MI(e,OC(rF));t|=32}return XC(I,t,g,e,C)}));function oF(g,I,e){var t,C,F,B,n,U,s=0,i=!1,c=!1,A=!0;if("function"!=typeof g)throw new og(Q);function l(I){var e=t,Q=C;return t=C=void 0,s=I,B=g.apply(Q,e)}function a(g){return s=g,n=oQ(o,I),i?l(g):B}function r(g){var e=g-U;return void 0===U||e>=I||e<0||c&&g-s>=F}function o(){var g=cF();if(r(g))return d(g);n=oQ(o,function(g){var e=I-(g-U);return c?Qe(e,F-(g-s)):e}(g))}function d(g){return n=void 0,A&&t?l(g):(t=C=void 0,B)}function u(){var g=cF(),e=r(g);if(t=arguments,C=this,U=g,e){if(void 0===n)return a(U);if(c)return nC(n),n=oQ(o,I),l(U)}return void 0===n&&(n=oQ(o,I)),B}return I=eB(I)||0,kF(e)&&(i=!!e.leading,F=(c="maxWait"in e)?Ce(eB(e.maxWait)||0,I):F,A="trailing"in e?!!e.trailing:A),u.cancel=function(){void 0!==n&&nC(n),s=0,t=U=C=n=void 0},u.flush=function(){return void 0===n?B:d(cF())},u}var dF=ft((function(g,I){return Pe(g,1,I)})),uF=ft((function(g,I,e){return Pe(g,eB(I)||0,e)}));function yF(g,I){if("function"!=typeof g||null!=I&&"function"!=typeof I)throw new og(Q);var e=function e(){var t=arguments,C=I?I.apply(this,t):t[0],Q=e.cache;if(Q.has(C))return Q.get(C);var F=g.apply(this,t);return e.cache=Q.set(C,F)||Q,F};return e.cache=new(yF.Cache||Ee),e}function bF(g){if("function"!=typeof g)throw new og(Q);return function(){var I=arguments;switch(I.length){case 0:return!g.call(this);case 1:return!g.call(this,I[0]);case 2:return!g.call(this,I[0],I[1]);case 3:return!g.call(this,I[0],I[1],I[2])}return!g.apply(this,I)}}yF.Cache=Ee;var ZF=FC((function(g,I){var e=(I=1==I.length&&hF(I[0])?AI(I[0],hI(KC())):AI(tt(I,1),hI(KC()))).length;return ft((function(t){for(var C=-1,Q=Qe(t.length,e);++C<Q;)t[C]=I[C].call(this,t[C]);return QI(g,this,t)}))})),mF=ft((function(g,I){return XC(g,32,void 0,I,MI(I,OC(mF)))})),xF=ft((function(g,I){return XC(g,64,void 0,I,MI(I,OC(xF)))})),RF=MC((function(g,I){return XC(g,256,void 0,void 0,void 0,I)}));function SF(g,I){return g===I||g!==g&&I!==I}var GF=pC(ct),LF=pC((function(g,I){return g>=I})),VF=ot(function(){return arguments}())?ot:function(g){return HF(g)&&mg.call(g,"callee")&&!zg.call(g,"callee")},hF=e.isArray,DF=$g?hI($g):function(g){return HF(g)&&it(g)==m};function pF(g){return null!=g&&vF(g.length)&&!XF(g)}function EF(g){return HF(g)&&pF(g)}var NF=ge||en,WF=gI?hI(gI):function(g){return HF(g)&&it(g)==i};function fF(g){if(!HF(g))return!1;var I=it(g);return I==c||"[object DOMException]"==I||"string"==typeof g.message&&"string"==typeof g.name&&!wF(g)}function XF(g){if(!kF(g))return!1;var I=it(g);return I==A||I==l||"[object AsyncFunction]"==I||"[object Proxy]"==I}function JF(g){return"number"==typeof g&&g==gB(g)}function vF(g){return"number"==typeof g&&g>-1&&g%1==0&&g<=9007199254740991}function kF(g){var I=typeof g;return null!=g&&("object"==I||"function"==I)}function HF(g){return null!=g&&"object"==typeof g}var MF=II?hI(II):function(g){return HF(g)&&gQ(g)==a};function YF(g){return"number"==typeof g||HF(g)&&it(g)==r}function wF(g){if(!HF(g)||it(g)!=o)return!1;var I=Mg(g);if(null===I)return!0;var e=mg.call(I,"constructor")&&I.constructor;return"function"==typeof e&&e instanceof e&&Zg.call(e)==Gg}var TF=eI?hI(eI):function(g){return HF(g)&&it(g)==d};var zF=tI?hI(tI):function(g){return HF(g)&&gQ(g)==u};function OF(g){return"string"==typeof g||!hF(g)&&HF(g)&&it(g)==y}function KF(g){return"symbol"==typeof g||HF(g)&&it(g)==b}var jF=CI?hI(CI):function(g){return HF(g)&&vF(g.length)&&!!kg[it(g)]};var PF=pC(xt),_F=pC((function(g,I){return g<=I}));function qF(g){if(!g)return[];if(pF(g))return OF(g)?zI(g):aC(g);if(_g&&g[_g])return function(g){for(var I,e=[];!(I=g.next()).done;)e.push(I.value);return e}(g[_g]());var I=gQ(g);return(I==a?kI:I==u?YI:SB)(g)}function $F(g){return g?(g=eB(g))===1/0||g===-1/0?17976931348623157e292*(g<0?-1:1):g===g?g:0:0===g?g:0}function gB(g){var I=$F(g),e=I%1;return I===I?e?I-e:I:0}function IB(g){return g?Oe(gB(g),0,4294967295):0}function eB(g){if("number"==typeof g)return g;if(KF(g))return NaN;if(kF(g)){var I="function"==typeof g.valueOf?g.valueOf():g;g=kF(I)?I+"":I}if("string"!=typeof g)return 0===g?g:+g;g=g.replace(K,"");var e=Qg.test(g);return e||Bg.test(g)?wg(g.slice(2),e?2:8):Cg.test(g)?NaN:+g}function tB(g){return rC(g,dB(g))}function CB(g){return null==g?"":jt(g)}var QB=dC((function(g,I){if(UQ(I)||pF(I))rC(I,oB(I),g);else for(var e in I)mg.call(I,e)&&He(g,e,I[e])})),FB=dC((function(g,I){rC(I,dB(I),g)})),BB=dC((function(g,I,e,t){rC(I,dB(I),g,t)})),nB=dC((function(g,I,e,t){rC(I,oB(I),g,t)})),UB=MC(ze);var sB=ft((function(g,I){g=lg(g);var e=-1,t=I.length,C=t>2?I[2]:void 0;for(C&&QQ(I[0],I[1],C)&&(t=1);++e<t;)for(var Q=I[e],F=dB(Q),B=-1,n=F.length;++B<n;){var U=F[B],s=g[U];(void 0===s||SF(s,yg[U])&&!mg.call(g,U))&&(g[U]=Q[U])}return g})),iB=ft((function(g){return g.push(void 0,vC),QI(yB,void 0,g)}));function cB(g,I,e){var t=null==g?void 0:Ut(g,I);return void 0===t?e:t}function AB(g,I){return null!=g&&IQ(g,I,lt)}var lB=GC((function(g,I,e){null!=I&&"function"!=typeof I.toString&&(I=Sg.call(I)),g[I]=e}),kB(YB)),aB=GC((function(g,I,e){null!=I&&"function"!=typeof I.toString&&(I=Sg.call(I)),mg.call(g,I)?g[I].push(e):g[I]=[e]}),KC),rB=ft(rt);function oB(g){return pF(g)?fe(g):Zt(g)}function dB(g){return pF(g)?fe(g,!0):mt(g)}var uB=dC((function(g,I,e){Lt(g,I,e)})),yB=dC((function(g,I,e,t){Lt(g,I,e,t)})),bB=MC((function(g,I){var e={};if(null==g)return e;var t=!1;I=AI(I,(function(I){return I=QC(I,g),t||(t=I.length>1),I})),rC(g,wC(g),e),t&&(e=Ke(e,7,kC));for(var C=I.length;C--;)_t(e,I[C]);return e}));var ZB=MC((function(g,I){return null==g?{}:function(g,I){return Dt(g,I,(function(I,e){return AB(g,e)}))}(g,I)}));function mB(g,I){if(null==g)return{};var e=AI(wC(g),(function(g){return[g]}));return I=KC(I),Dt(g,e,(function(g,e){return I(g,e[0])}))}var xB=fC(oB),RB=fC(dB);function SB(g){return null==g?[]:DI(g,oB(g))}var GB=ZC((function(g,I,e){return I=I.toLowerCase(),g+(e?LB(I):I)}));function LB(g){return fB(CB(g).toLowerCase())}function VB(g){return(g=CB(g))&&g.replace(Ug,fI).replace(Eg,"")}var hB=ZC((function(g,I,e){return g+(e?"-":"")+I.toLowerCase()})),DB=ZC((function(g,I,e){return g+(e?" ":"")+I.toLowerCase()})),pB=bC("toLowerCase");var EB=ZC((function(g,I,e){return g+(e?"_":"")+I.toLowerCase()}));var NB=ZC((function(g,I,e){return g+(e?" ":"")+fB(I)}));var WB=ZC((function(g,I,e){return g+(e?" ":"")+I.toUpperCase()})),fB=bC("toUpperCase");function XB(g,I,e){return g=CB(g),void 0===(I=e?void 0:I)?function(g){return Xg.test(g)}(g)?function(g){return g.match(Wg)||[]}(g):function(g){return g.match(gg)||[]}(g):g.match(I)||[]}var JB=ft((function(g,I){try{return QI(g,void 0,I)}catch(e){return fF(e)?e:new C(e)}})),vB=MC((function(g,I){return BI(I,(function(I){I=mQ(I),Te(g,I,aF(g[I],g))})),g}));function kB(g){return function(){return g}}var HB=RC(),MB=RC(!0);function YB(g){return g}function wB(g){return bt("function"==typeof g?g:Ke(g,1))}var TB=ft((function(g,I){return function(e){return rt(e,g,I)}})),zB=ft((function(g,I){return function(e){return rt(g,e,I)}}));function OB(g,I,e){var t=oB(I),C=nt(I,t);null!=e||kF(I)&&(C.length||!t.length)||(e=I,I=g,g=this,C=nt(I,oB(I)));var Q=!(kF(e)&&"chain"in e)||!!e.chain,F=XF(g);return BI(C,(function(e){var t=I[e];g[e]=t,F&&(g.prototype[e]=function(){var I=this.__chain__;if(Q||I){var e=g(this.__wrapped__),C=e.__actions__=aC(this.__actions__);return C.push({func:t,args:arguments,thisArg:g}),e.__chain__=I,e}return t.apply(g,lI([this.value()],arguments))})})),g}function KB(){}var jB=VC(AI),PB=VC(UI),_B=VC(oI);function qB(g){return FQ(g)?RI(mQ(g)):function(g){return function(I){return Ut(I,g)}}(g)}var $B=DC(),gn=DC(!0);function In(){return[]}function en(){return!1}var tn=LC((function(g,I){return g+I}),0),Cn=NC("ceil"),Qn=LC((function(g,I){return g/I}),1),Fn=NC("floor");var Bn=LC((function(g,I){return g*I}),1),nn=NC("round"),Un=LC((function(g,I){return g-I}),0);return Se.after=function(g,I){if("function"!=typeof I)throw new og(Q);return g=gB(g),function(){if(--g<1)return I.apply(this,arguments)}},Se.ary=AF,Se.assign=QB,Se.assignIn=FB,Se.assignInWith=BB,Se.assignWith=nB,Se.at=UB,Se.before=lF,Se.bind=aF,Se.bindAll=vB,Se.bindKey=rF,Se.castArray=function(){if(!arguments.length)return[];var g=arguments[0];return hF(g)?g:[g]},Se.chain=qQ,Se.chunk=function(g,I,t){I=(t?QQ(g,I,t):void 0===I)?1:Ce(gB(I),0);var C=null==g?0:g.length;if(!C||I<1)return[];for(var Q=0,F=0,B=e(_I(C/I));Q<C;)B[F++]=Yt(g,Q,Q+=I);return B},Se.compact=function(g){for(var I=-1,e=null==g?0:g.length,t=0,C=[];++I<e;){var Q=g[I];Q&&(C[t++]=Q)}return C},Se.concat=function(){var g=arguments.length;if(!g)return[];for(var I=e(g-1),t=arguments[0],C=g;C--;)I[C-1]=arguments[C];return lI(hF(t)?aC(t):[t],tt(I,1))},Se.cond=function(g){var I=null==g?0:g.length,e=KC();return g=I?AI(g,(function(g){if("function"!=typeof g[1])throw new og(Q);return[e(g[0]),g[1]]})):[],ft((function(e){for(var t=-1;++t<I;){var C=g[t];if(QI(C[0],this,e))return QI(C[1],this,e)}}))},Se.conforms=function(g){return function(g){var I=oB(g);return function(e){return je(e,g,I)}}(Ke(g,1))},Se.constant=kB,Se.countBy=IF,Se.create=function(g,I){var e=Ge(g);return null==I?e:we(e,I)},Se.curry=function g(I,e,t){var C=XC(I,8,void 0,void 0,void 0,void 0,void 0,e=t?void 0:e);return C.placeholder=g.placeholder,C},Se.curryRight=function g(I,e,t){var C=XC(I,16,void 0,void 0,void 0,void 0,void 0,e=t?void 0:e);return C.placeholder=g.placeholder,C},Se.debounce=oF,Se.defaults=sB,Se.defaultsDeep=iB,Se.defer=dF,Se.delay=uF,Se.difference=SQ,Se.differenceBy=GQ,Se.differenceWith=LQ,Se.drop=function(g,I,e){var t=null==g?0:g.length;return t?Yt(g,(I=e||void 0===I?1:gB(I))<0?0:I,t):[]},Se.dropRight=function(g,I,e){var t=null==g?0:g.length;return t?Yt(g,0,(I=t-(I=e||void 0===I?1:gB(I)))<0?0:I):[]},Se.dropRightWhile=function(g,I){return g&&g.length?$t(g,KC(I,3),!0,!0):[]},Se.dropWhile=function(g,I){return g&&g.length?$t(g,KC(I,3),!0):[]},Se.fill=function(g,I,e,t){var C=null==g?0:g.length;return C?(e&&"number"!=typeof e&&QQ(g,I,e)&&(e=0,t=C),function(g,I,e,t){var C=g.length;for((e=gB(e))<0&&(e=-e>C?0:C+e),(t=void 0===t||t>C?C:gB(t))<0&&(t+=C),t=e>t?0:IB(t);e<t;)g[e++]=I;return g}(g,I,e,t)):[]},Se.filter=function(g,I){return(hF(g)?sI:et)(g,KC(I,3))},Se.flatMap=function(g,I){return tt(UF(g,I),1)},Se.flatMapDeep=function(g,I){return tt(UF(g,I),1/0)},Se.flatMapDepth=function(g,I,e){return e=void 0===e?1:gB(e),tt(UF(g,I),e)},Se.flatten=DQ,Se.flattenDeep=function(g){return(null==g?0:g.length)?tt(g,1/0):[]},Se.flattenDepth=function(g,I){return(null==g?0:g.length)?tt(g,I=void 0===I?1:gB(I)):[]},Se.flip=function(g){return XC(g,512)},Se.flow=HB,Se.flowRight=MB,Se.fromPairs=function(g){for(var I=-1,e=null==g?0:g.length,t={};++I<e;){var C=g[I];t[C[0]]=C[1]}return t},Se.functions=function(g){return null==g?[]:nt(g,oB(g))},Se.functionsIn=function(g){return null==g?[]:nt(g,dB(g))},Se.groupBy=FF,Se.initial=function(g){return(null==g?0:g.length)?Yt(g,0,-1):[]},Se.intersection=EQ,Se.intersectionBy=NQ,Se.intersectionWith=WQ,Se.invert=lB,Se.invertBy=aB,Se.invokeMap=BF,Se.iteratee=wB,Se.keyBy=nF,Se.keys=oB,Se.keysIn=dB,Se.map=UF,Se.mapKeys=function(g,I){var e={};return I=KC(I,3),Ft(g,(function(g,t,C){Te(e,I(g,t,C),g)})),e},Se.mapValues=function(g,I){var e={};return I=KC(I,3),Ft(g,(function(g,t,C){Te(e,t,I(g,t,C))})),e},Se.matches=function(g){return St(Ke(g,1))},Se.matchesProperty=function(g,I){return Gt(g,Ke(I,1))},Se.memoize=yF,Se.merge=uB,Se.mergeWith=yB,Se.method=TB,Se.methodOf=zB,Se.mixin=OB,Se.negate=bF,Se.nthArg=function(g){return g=gB(g),ft((function(I){return Vt(I,g)}))},Se.omit=bB,Se.omitBy=function(g,I){return mB(g,bF(KC(I)))},Se.once=function(g){return lF(2,g)},Se.orderBy=function(g,I,e,t){return null==g?[]:(hF(I)||(I=null==I?[]:[I]),hF(e=t?void 0:e)||(e=null==e?[]:[e]),ht(g,I,e))},Se.over=jB,Se.overArgs=ZF,Se.overEvery=PB,Se.overSome=_B,Se.partial=mF,Se.partialRight=xF,Se.partition=sF,Se.pick=ZB,Se.pickBy=mB,Se.property=qB,Se.propertyOf=function(g){return function(I){return null==g?void 0:Ut(g,I)}},Se.pull=XQ,Se.pullAll=JQ,Se.pullAllBy=function(g,I,e){return g&&g.length&&I&&I.length?pt(g,I,KC(e,2)):g},Se.pullAllWith=function(g,I,e){return g&&g.length&&I&&I.length?pt(g,I,void 0,e):g},Se.pullAt=vQ,Se.range=$B,Se.rangeRight=gn,Se.rearg=RF,Se.reject=function(g,I){return(hF(g)?sI:et)(g,bF(KC(I,3)))},Se.remove=function(g,I){var e=[];if(!g||!g.length)return e;var t=-1,C=[],Q=g.length;for(I=KC(I,3);++t<Q;){var F=g[t];I(F,t,g)&&(e.push(F),C.push(t))}return Et(g,C),e},Se.rest=function(g,I){if("function"!=typeof g)throw new og(Q);return ft(g,I=void 0===I?I:gB(I))},Se.reverse=kQ,Se.sampleSize=function(g,I,e){return I=(e?QQ(g,I,e):void 0===I)?1:gB(I),(hF(g)?Je:Jt)(g,I)},Se.set=function(g,I,e){return null==g?g:vt(g,I,e)},Se.setWith=function(g,I,e,t){return t="function"==typeof t?t:void 0,null==g?g:vt(g,I,e,t)},Se.shuffle=function(g){return(hF(g)?ve:Mt)(g)},Se.slice=function(g,I,e){var t=null==g?0:g.length;return t?(e&&"number"!=typeof e&&QQ(g,I,e)?(I=0,e=t):(I=null==I?0:gB(I),e=void 0===e?t:gB(e)),Yt(g,I,e)):[]},Se.sortBy=iF,Se.sortedUniq=function(g){return g&&g.length?Ot(g):[]},Se.sortedUniqBy=function(g,I){return g&&g.length?Ot(g,KC(I,2)):[]},Se.split=function(g,I,e){return e&&"number"!=typeof e&&QQ(g,I,e)&&(I=e=void 0),(e=void 0===e?4294967295:e>>>0)?(g=CB(g))&&("string"==typeof I||null!=I&&!TF(I))&&!(I=jt(I))&&vI(g)?BC(zI(g),0,e):g.split(I,e):[]},Se.spread=function(g,I){if("function"!=typeof g)throw new og(Q);return I=null==I?0:Ce(gB(I),0),ft((function(e){var t=e[I],C=BC(e,0,I);return t&&lI(C,t),QI(g,this,C)}))},Se.tail=function(g){var I=null==g?0:g.length;return I?Yt(g,1,I):[]},Se.take=function(g,I,e){return g&&g.length?Yt(g,0,(I=e||void 0===I?1:gB(I))<0?0:I):[]},Se.takeRight=function(g,I,e){var t=null==g?0:g.length;return t?Yt(g,(I=t-(I=e||void 0===I?1:gB(I)))<0?0:I,t):[]},Se.takeRightWhile=function(g,I){return g&&g.length?$t(g,KC(I,3),!1,!0):[]},Se.takeWhile=function(g,I){return g&&g.length?$t(g,KC(I,3)):[]},Se.tap=function(g,I){return I(g),g},Se.throttle=function(g,I,e){var t=!0,C=!0;if("function"!=typeof g)throw new og(Q);return kF(e)&&(t="leading"in e?!!e.leading:t,C="trailing"in e?!!e.trailing:C),oF(g,I,{leading:t,maxWait:I,trailing:C})},Se.thru=$Q,Se.toArray=qF,Se.toPairs=xB,Se.toPairsIn=RB,Se.toPath=function(g){return hF(g)?AI(g,mQ):KF(g)?[g]:aC(ZQ(CB(g)))},Se.toPlainObject=tB,Se.transform=function(g,I,e){var t=hF(g),C=t||NF(g)||jF(g);if(I=KC(I,4),null==e){var Q=g&&g.constructor;e=C?t?new Q:[]:kF(g)&&XF(Q)?Ge(Mg(g)):{}}return(C?BI:Ft)(g,(function(g,t,C){return I(e,g,t,C)})),e},Se.unary=function(g){return AF(g,1)},Se.union=HQ,Se.unionBy=MQ,Se.unionWith=YQ,Se.uniq=function(g){return g&&g.length?Pt(g):[]},Se.uniqBy=function(g,I){return g&&g.length?Pt(g,KC(I,2)):[]},Se.uniqWith=function(g,I){return I="function"==typeof I?I:void 0,g&&g.length?Pt(g,void 0,I):[]},Se.unset=function(g,I){return null==g||_t(g,I)},Se.unzip=wQ,Se.unzipWith=TQ,Se.update=function(g,I,e){return null==g?g:qt(g,I,CC(e))},Se.updateWith=function(g,I,e,t){return t="function"==typeof t?t:void 0,null==g?g:qt(g,I,CC(e),t)},Se.values=SB,Se.valuesIn=function(g){return null==g?[]:DI(g,dB(g))},Se.without=zQ,Se.words=XB,Se.wrap=function(g,I){return mF(CC(I),g)},Se.xor=OQ,Se.xorBy=KQ,Se.xorWith=jQ,Se.zip=PQ,Se.zipObject=function(g,I){return eC(g||[],I||[],He)},Se.zipObjectDeep=function(g,I){return eC(g||[],I||[],vt)},Se.zipWith=_Q,Se.entries=xB,Se.entriesIn=RB,Se.extend=FB,Se.extendWith=BB,OB(Se,Se),Se.add=tn,Se.attempt=JB,Se.camelCase=GB,Se.capitalize=LB,Se.ceil=Cn,Se.clamp=function(g,I,e){return void 0===e&&(e=I,I=void 0),void 0!==e&&(e=(e=eB(e))===e?e:0),void 0!==I&&(I=(I=eB(I))===I?I:0),Oe(eB(g),I,e)},Se.clone=function(g){return Ke(g,4)},Se.cloneDeep=function(g){return Ke(g,5)},Se.cloneDeepWith=function(g,I){return Ke(g,5,I="function"==typeof I?I:void 0)},Se.cloneWith=function(g,I){return Ke(g,4,I="function"==typeof I?I:void 0)},Se.conformsTo=function(g,I){return null==I||je(g,I,oB(I))},Se.deburr=VB,Se.defaultTo=function(g,I){return null==g||g!==g?I:g},Se.divide=Qn,Se.endsWith=function(g,I,e){g=CB(g),I=jt(I);var t=g.length,C=e=void 0===e?t:Oe(gB(e),0,t);return(e-=I.length)>=0&&g.slice(e,C)==I},Se.eq=SF,Se.escape=function(g){return(g=CB(g))&&v.test(g)?g.replace(X,XI):g},Se.escapeRegExp=function(g){return(g=CB(g))&&O.test(g)?g.replace(z,"\\$&"):g},Se.every=function(g,I,e){var t=hF(g)?UI:gt;return e&&QQ(g,I,e)&&(I=void 0),t(g,KC(I,3))},Se.find=eF,Se.findIndex=VQ,Se.findKey=function(g,I){return uI(g,KC(I,3),Ft)},Se.findLast=tF,Se.findLastIndex=hQ,Se.findLastKey=function(g,I){return uI(g,KC(I,3),Bt)},Se.floor=Fn,Se.forEach=CF,Se.forEachRight=QF,Se.forIn=function(g,I){return null==g?g:Ct(g,KC(I,3),dB)},Se.forInRight=function(g,I){return null==g?g:Qt(g,KC(I,3),dB)},Se.forOwn=function(g,I){return g&&Ft(g,KC(I,3))},Se.forOwnRight=function(g,I){return g&&Bt(g,KC(I,3))},Se.get=cB,Se.gt=GF,Se.gte=LF,Se.has=function(g,I){return null!=g&&IQ(g,I,At)},Se.hasIn=AB,Se.head=pQ,Se.identity=YB,Se.includes=function(g,I,e,t){g=pF(g)?g:SB(g),e=e&&!t?gB(e):0;var C=g.length;return e<0&&(e=Ce(C+e,0)),OF(g)?e<=C&&g.indexOf(I,e)>-1:!!C&&bI(g,I,e)>-1},Se.indexOf=function(g,I,e){var t=null==g?0:g.length;if(!t)return-1;var C=null==e?0:gB(e);return C<0&&(C=Ce(t+C,0)),bI(g,I,C)},Se.inRange=function(g,I,e){return I=$F(I),void 0===e?(e=I,I=0):e=$F(e),function(g,I,e){return g>=Qe(I,e)&&g<Ce(I,e)}(g=eB(g),I,e)},Se.invoke=rB,Se.isArguments=VF,Se.isArray=hF,Se.isArrayBuffer=DF,Se.isArrayLike=pF,Se.isArrayLikeObject=EF,Se.isBoolean=function(g){return!0===g||!1===g||HF(g)&&it(g)==s},Se.isBuffer=NF,Se.isDate=WF,Se.isElement=function(g){return HF(g)&&1===g.nodeType&&!wF(g)},Se.isEmpty=function(g){if(null==g)return!0;if(pF(g)&&(hF(g)||"string"==typeof g||"function"==typeof g.splice||NF(g)||jF(g)||VF(g)))return!g.length;var I=gQ(g);if(I==a||I==u)return!g.size;if(UQ(g))return!Zt(g).length;for(var e in g)if(mg.call(g,e))return!1;return!0},Se.isEqual=function(g,I){return dt(g,I)},Se.isEqualWith=function(g,I,e){var t=(e="function"==typeof e?e:void 0)?e(g,I):void 0;return void 0===t?dt(g,I,void 0,e):!!t},Se.isError=fF,Se.isFinite=function(g){return"number"==typeof g&&Ie(g)},Se.isFunction=XF,Se.isInteger=JF,Se.isLength=vF,Se.isMap=MF,Se.isMatch=function(g,I){return g===I||ut(g,I,PC(I))},Se.isMatchWith=function(g,I,e){return e="function"==typeof e?e:void 0,ut(g,I,PC(I),e)},Se.isNaN=function(g){return YF(g)&&g!=+g},Se.isNative=function(g){if(nQ(g))throw new C("Unsupported core-js use. Try https://npms.io/search?q=ponyfill.");return yt(g)},Se.isNil=function(g){return null==g},Se.isNull=function(g){return null===g},Se.isNumber=YF,Se.isObject=kF,Se.isObjectLike=HF,Se.isPlainObject=wF,Se.isRegExp=TF,Se.isSafeInteger=function(g){return JF(g)&&g>=-9007199254740991&&g<=9007199254740991},Se.isSet=zF,Se.isString=OF,Se.isSymbol=KF,Se.isTypedArray=jF,Se.isUndefined=function(g){return void 0===g},Se.isWeakMap=function(g){return HF(g)&&gQ(g)==Z},Se.isWeakSet=function(g){return HF(g)&&"[object WeakSet]"==it(g)},Se.join=function(g,I){return null==g?"":ee.call(g,I)},Se.kebabCase=hB,Se.last=fQ,Se.lastIndexOf=function(g,I,e){var t=null==g?0:g.length;if(!t)return-1;var C=t;return void 0!==e&&(C=(C=gB(e))<0?Ce(t+C,0):Qe(C,t-1)),I===I?function(g,I,e){for(var t=e+1;t--;)if(g[t]===I)return t;return t}(g,I,C):yI(g,mI,C,!0)},Se.lowerCase=DB,Se.lowerFirst=pB,Se.lt=PF,Se.lte=_F,Se.max=function(g){return g&&g.length?It(g,YB,ct):void 0},Se.maxBy=function(g,I){return g&&g.length?It(g,KC(I,2),ct):void 0},Se.mean=function(g){return xI(g,YB)},Se.meanBy=function(g,I){return xI(g,KC(I,2))},Se.min=function(g){return g&&g.length?It(g,YB,xt):void 0},Se.minBy=function(g,I){return g&&g.length?It(g,KC(I,2),xt):void 0},Se.stubArray=In,Se.stubFalse=en,Se.stubObject=function(){return{}},Se.stubString=function(){return""},Se.stubTrue=function(){return!0},Se.multiply=Bn,Se.nth=function(g,I){return g&&g.length?Vt(g,gB(I)):void 0},Se.noConflict=function(){return Og._===this&&(Og._=Lg),this},Se.noop=KB,Se.now=cF,Se.pad=function(g,I,e){g=CB(g);var t=(I=gB(I))?TI(g):0;if(!I||t>=I)return g;var C=(I-t)/2;return hC(qI(C),e)+g+hC(_I(C),e)},Se.padEnd=function(g,I,e){g=CB(g);var t=(I=gB(I))?TI(g):0;return I&&t<I?g+hC(I-t,e):g},Se.padStart=function(g,I,e){g=CB(g);var t=(I=gB(I))?TI(g):0;return I&&t<I?hC(I-t,e)+g:g},Se.parseInt=function(g,I,e){return e||null==I?I=0:I&&(I=+I),Be(CB(g).replace(j,""),I||0)},Se.random=function(g,I,e){if(e&&"boolean"!=typeof e&&QQ(g,I,e)&&(I=e=void 0),void 0===e&&("boolean"==typeof I?(e=I,I=void 0):"boolean"==typeof g&&(e=g,g=void 0)),void 0===g&&void 0===I?(g=0,I=1):(g=$F(g),void 0===I?(I=g,g=0):I=$F(I)),g>I){var t=g;g=I,I=t}if(e||g%1||I%1){var C=ne();return Qe(g+C*(I-g+Yg("1e-"+((C+"").length-1))),I)}return Nt(g,I)},Se.reduce=function(g,I,e){var t=hF(g)?aI:GI,C=arguments.length<3;return t(g,KC(I,4),e,C,qe)},Se.reduceRight=function(g,I,e){var t=hF(g)?rI:GI,C=arguments.length<3;return t(g,KC(I,4),e,C,$e)},Se.repeat=function(g,I,e){return I=(e?QQ(g,I,e):void 0===I)?1:gB(I),Wt(CB(g),I)},Se.replace=function(){var g=arguments,I=CB(g[0]);return g.length<3?I:I.replace(g[1],g[2])},Se.result=function(g,I,e){var t=-1,C=(I=QC(I,g)).length;for(C||(C=1,g=void 0);++t<C;){var Q=null==g?void 0:g[mQ(I[t])];void 0===Q&&(t=C,Q=e),g=XF(Q)?Q.call(g):Q}return g},Se.round=nn,Se.runInContext=g,Se.sample=function(g){return(hF(g)?Xe:Xt)(g)},Se.size=function(g){if(null==g)return 0;if(pF(g))return OF(g)?TI(g):g.length;var I=gQ(g);return I==a||I==u?g.size:Zt(g).length},Se.snakeCase=EB,Se.some=function(g,I,e){var t=hF(g)?oI:wt;return e&&QQ(g,I,e)&&(I=void 0),t(g,KC(I,3))},Se.sortedIndex=function(g,I){return Tt(g,I)},Se.sortedIndexBy=function(g,I,e){return zt(g,I,KC(e,2))},Se.sortedIndexOf=function(g,I){var e=null==g?0:g.length;if(e){var t=Tt(g,I);if(t<e&&SF(g[t],I))return t}return-1},Se.sortedLastIndex=function(g,I){return Tt(g,I,!0)},Se.sortedLastIndexBy=function(g,I,e){return zt(g,I,KC(e,2),!0)},Se.sortedLastIndexOf=function(g,I){if(null==g?0:g.length){var e=Tt(g,I,!0)-1;if(SF(g[e],I))return e}return-1},Se.startCase=NB,Se.startsWith=function(g,I,e){return g=CB(g),e=null==e?0:Oe(gB(e),0,g.length),I=jt(I),g.slice(e,e+I.length)==I},Se.subtract=Un,Se.sum=function(g){return g&&g.length?LI(g,YB):0},Se.sumBy=function(g,I){return g&&g.length?LI(g,KC(I,2)):0},Se.template=function(g,I,e){var t=Se.templateSettings;e&&QQ(g,I,e)&&(I=void 0),g=CB(g),I=BB({},I,t,JC);var C,Q,F=BB({},I.imports,t.imports,JC),B=oB(F),n=DI(F,B),U=0,s=I.interpolate||sg,i="__p += '",c=ag((I.escape||sg).source+"|"+s.source+"|"+(s===M?eg:sg).source+"|"+(I.evaluate||sg).source+"|$","g"),A="//# sourceURL="+(mg.call(I,"sourceURL")?(I.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++vg+"]")+"\n";g.replace(c,(function(I,e,t,F,B,n){return t||(t=F),i+=g.slice(U,n).replace(ig,JI),e&&(C=!0,i+="' +\n__e("+e+") +\n'"),B&&(Q=!0,i+="';\n"+B+";\n__p += '"),t&&(i+="' +\n((__t = ("+t+")) == null ? '' : __t) +\n'"),U=n+I.length,I})),i+="';\n";var l=mg.call(I,"variable")&&I.variable;l||(i="with (obj) {\n"+i+"\n}\n"),i=(Q?i.replace(E,""):i).replace(N,"$1").replace(W,"$1;"),i="function("+(l||"obj")+") {\n"+(l?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(C?", __e = _.escape":"")+(Q?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+i+"return __p\n}";var a=JB((function(){return cg(B,A+"return "+i).apply(void 0,n)}));if(a.source=i,fF(a))throw a;return a},Se.times=function(g,I){if((g=gB(g))<1||g>9007199254740991)return[];var e=4294967295,t=Qe(g,4294967295);g-=4294967295;for(var C=VI(t,I=KC(I));++e<g;)I(e);return C},Se.toFinite=$F,Se.toInteger=gB,Se.toLength=IB,Se.toLower=function(g){return CB(g).toLowerCase()},Se.toNumber=eB,Se.toSafeInteger=function(g){return g?Oe(gB(g),-9007199254740991,9007199254740991):0===g?g:0},Se.toString=CB,Se.toUpper=function(g){return CB(g).toUpperCase()},Se.trim=function(g,I,e){if((g=CB(g))&&(e||void 0===I))return g.replace(K,"");if(!g||!(I=jt(I)))return g;var t=zI(g),C=zI(I);return BC(t,EI(t,C),NI(t,C)+1).join("")},Se.trimEnd=function(g,I,e){if((g=CB(g))&&(e||void 0===I))return g.replace(P,"");if(!g||!(I=jt(I)))return g;var t=zI(g);return BC(t,0,NI(t,zI(I))+1).join("")},Se.trimStart=function(g,I,e){if((g=CB(g))&&(e||void 0===I))return g.replace(j,"");if(!g||!(I=jt(I)))return g;var t=zI(g);return BC(t,EI(t,zI(I))).join("")},Se.truncate=function(g,I){var e=30,t="...";if(kF(I)){var C="separator"in I?I.separator:C;e="length"in I?gB(I.length):e,t="omission"in I?jt(I.omission):t}var Q=(g=CB(g)).length;if(vI(g)){var F=zI(g);Q=F.length}if(e>=Q)return g;var B=e-TI(t);if(B<1)return t;var n=F?BC(F,0,B).join(""):g.slice(0,B);if(void 0===C)return n+t;if(F&&(B+=n.length-B),TF(C)){if(g.slice(B).search(C)){var U,s=n;for(C.global||(C=ag(C.source,CB(tg.exec(C))+"g")),C.lastIndex=0;U=C.exec(s);)var i=U.index;n=n.slice(0,void 0===i?B:i)}}else if(g.indexOf(jt(C),B)!=B){var c=n.lastIndexOf(C);c>-1&&(n=n.slice(0,c))}return n+t},Se.unescape=function(g){return(g=CB(g))&&J.test(g)?g.replace(f,OI):g},Se.uniqueId=function(g){var I=++xg;return CB(g)+I},Se.upperCase=WB,Se.upperFirst=fB,Se.each=CF,Se.eachRight=QF,Se.first=pQ,OB(Se,function(){var g={};return Ft(Se,(function(I,e){mg.call(Se.prototype,e)||(g[e]=I)})),g}(),{chain:!1}),Se.VERSION="4.17.20",BI(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(g){Se[g].placeholder=Se})),BI(["drop","take"],(function(g,I){he.prototype[g]=function(e){e=void 0===e?1:Ce(gB(e),0);var t=this.__filtered__&&!I?new he(this):this.clone();return t.__filtered__?t.__takeCount__=Qe(e,t.__takeCount__):t.__views__.push({size:Qe(e,4294967295),type:g+(t.__dir__<0?"Right":"")}),t},he.prototype[g+"Right"]=function(I){return this.reverse()[g](I).reverse()}})),BI(["filter","map","takeWhile"],(function(g,I){var e=I+1,t=1==e||3==e;he.prototype[g]=function(g){var I=this.clone();return I.__iteratees__.push({iteratee:KC(g,3),type:e}),I.__filtered__=I.__filtered__||t,I}})),BI(["head","last"],(function(g,I){var e="take"+(I?"Right":"");he.prototype[g]=function(){return this[e](1).value()[0]}})),BI(["initial","tail"],(function(g,I){var e="drop"+(I?"":"Right");he.prototype[g]=function(){return this.__filtered__?new he(this):this[e](1)}})),he.prototype.compact=function(){return this.filter(YB)},he.prototype.find=function(g){return this.filter(g).head()},he.prototype.findLast=function(g){return this.reverse().find(g)},he.prototype.invokeMap=ft((function(g,I){return"function"==typeof g?new he(this):this.map((function(e){return rt(e,g,I)}))})),he.prototype.reject=function(g){return this.filter(bF(KC(g)))},he.prototype.slice=function(g,I){g=gB(g);var e=this;return e.__filtered__&&(g>0||I<0)?new he(e):(g<0?e=e.takeRight(-g):g&&(e=e.drop(g)),void 0!==I&&(e=(I=gB(I))<0?e.dropRight(-I):e.take(I-g)),e)},he.prototype.takeRightWhile=function(g){return this.reverse().takeWhile(g).reverse()},he.prototype.toArray=function(){return this.take(4294967295)},Ft(he.prototype,(function(g,I){var e=/^(?:filter|find|map|reject)|While$/.test(I),t=/^(?:head|last)$/.test(I),C=Se[t?"take"+("last"==I?"Right":""):I],Q=t||/^find/.test(I);C&&(Se.prototype[I]=function(){var I=this.__wrapped__,F=t?[1]:arguments,B=I instanceof he,n=F[0],U=B||hF(I),s=function(g){var I=C.apply(Se,lI([g],F));return t&&i?I[0]:I};U&&e&&"function"==typeof n&&1!=n.length&&(B=U=!1);var i=this.__chain__,c=!!this.__actions__.length,A=Q&&!i,l=B&&!c;if(!Q&&U){I=l?I:new he(this);var a=g.apply(I,F);return a.__actions__.push({func:$Q,args:[s],thisArg:void 0}),new Ve(a,i)}return A&&l?g.apply(this,F):(a=this.thru(s),A?t?a.value()[0]:a.value():a)})})),BI(["pop","push","shift","sort","splice","unshift"],(function(g){var I=dg[g],e=/^(?:push|sort|unshift)$/.test(g)?"tap":"thru",t=/^(?:pop|shift)$/.test(g);Se.prototype[g]=function(){var g=arguments;if(t&&!this.__chain__){var C=this.value();return I.apply(hF(C)?C:[],g)}return this[e]((function(e){return I.apply(hF(e)?e:[],g)}))}})),Ft(he.prototype,(function(g,I){var e=Se[I];if(e){var t=e.name+"";mg.call(oe,t)||(oe[t]=[]),oe[t].push({name:I,func:e})}})),oe[SC(void 0,2).name]=[{name:"wrapper",func:void 0}],he.prototype.clone=function(){var g=new he(this.__wrapped__);return g.__actions__=aC(this.__actions__),g.__dir__=this.__dir__,g.__filtered__=this.__filtered__,g.__iteratees__=aC(this.__iteratees__),g.__takeCount__=this.__takeCount__,g.__views__=aC(this.__views__),g},he.prototype.reverse=function(){if(this.__filtered__){var g=new he(this);g.__dir__=-1,g.__filtered__=!0}else(g=this.clone()).__dir__*=-1;return g},he.prototype.value=function(){var g=this.__wrapped__.value(),I=this.__dir__,e=hF(g),t=I<0,C=e?g.length:0,Q=function(g,I,e){var t=-1,C=e.length;for(;++t<C;){var Q=e[t],F=Q.size;switch(Q.type){case"drop":g+=F;break;case"dropRight":I-=F;break;case"take":I=Qe(I,g+F);break;case"takeRight":g=Ce(g,I-F)}}return{start:g,end:I}}(0,C,this.__views__),F=Q.start,B=Q.end,n=B-F,U=t?B:F-1,s=this.__iteratees__,i=s.length,c=0,A=Qe(n,this.__takeCount__);if(!e||!t&&C==n&&A==n)return gC(g,this.__actions__);var l=[];g:for(;n--&&c<A;){for(var a=-1,r=g[U+=I];++a<i;){var o=s[a],d=o.iteratee,u=o.type,y=d(r);if(2==u)r=y;else if(!y){if(1==u)continue g;break g}}l[c++]=r}return l},Se.prototype.at=gF,Se.prototype.chain=function(){return qQ(this)},Se.prototype.commit=function(){return new Ve(this.value(),this.__chain__)},Se.prototype.next=function(){void 0===this.__values__&&(this.__values__=qF(this.value()));var g=this.__index__>=this.__values__.length;return{done:g,value:g?void 0:this.__values__[this.__index__++]}},Se.prototype.plant=function(g){for(var I,e=this;e instanceof Le;){var t=RQ(e);t.__index__=0,t.__values__=void 0,I?C.__wrapped__=t:I=t;var C=t;e=e.__wrapped__}return C.__wrapped__=g,I},Se.prototype.reverse=function(){var g=this.__wrapped__;if(g instanceof he){var I=g;return this.__actions__.length&&(I=new he(this)),(I=I.reverse()).__actions__.push({func:$Q,args:[kQ],thisArg:void 0}),new Ve(I,this.__chain__)}return this.thru(kQ)},Se.prototype.toJSON=Se.prototype.valueOf=Se.prototype.value=function(){return gC(this.__wrapped__,this.__actions__)},Se.prototype.first=Se.prototype.head,_g&&(Se.prototype[_g]=function(){return this}),Se}();Og._=KI,void 0===(C=function(){return KI}.call(I,e,I,t))||(t.exports=C)}).call(this)}).call(this,e(67),e(666)(g))},,,function(g,I,e){var t=e(1338),C=e(1339),Q=C;Q.v1=t,Q.v4=C,g.exports=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M6.62 10.79c1.44 2.83 3.76 5.14 6.59 6.59l2.2-2.2c.27-.27.67-.36 1.02-.24 1.12.37 2.33.57 3.57.57.55 0 1 .45 1 1V20c0 .55-.45 1-1 1-9.39 0-17-7.61-17-17 0-.55.45-1 1-1h3.5c.55 0 1 .45 1 1 0 1.25.2 2.45.57 3.57.11.35.03.74-.25 1.02l-2.2 2.2z"}),"Phone");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"}),"ChevronLeft");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"}),"ChevronRight");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement(C.default.Fragment,null,C.default.createElement("path",{d:"M18.92 6.01C18.72 5.42 18.16 5 17.5 5h-11c-.66 0-1.21.42-1.42 1.01L3 12v8c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-1h12v1c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-8l-2.08-5.99zM6.85 7h10.29l1.08 3.11H5.77L6.85 7zM19 17H5v-5h14v5z"}),C.default.createElement("circle",{cx:"7.5",cy:"14.5",r:"1.5"}),C.default.createElement("circle",{cx:"16.5",cy:"14.5",r:"1.5"})),"DirectionsCarOutlined");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement(C.default.Fragment,null,C.default.createElement("path",{fill:"none",d:"M0 0h24v24H0zm18.31 6l-2.76 5z"}),C.default.createElement("path",{d:"M11 9h2V6h3V4h-3V1h-2v3H8v2h3v3zm-4 9c-1.1 0-1.99.9-1.99 2S5.9 22 7 22s2-.9 2-2-.9-2-2-2zm10 0c-1.1 0-1.99.9-1.99 2s.89 2 1.99 2 2-.9 2-2-.9-2-2-2zm-9.83-3.25l.03-.12.9-1.63h7.45c.75 0 1.41-.41 1.75-1.03l3.86-7.01L19.42 4h-.01l-1.1 2-2.76 5H8.53l-.13-.27L6.16 6l-.95-2-.94-2H1v2h2l3.6 7.59-1.35 2.45c-.16.28-.25.61-.25.96 0 1.1.9 2 2 2h12v-2H7.42c-.13 0-.25-.11-.25-.25z"})),"AddShoppingCart");I.default=Q},,function(g,I,e){var t=e(1341),C=e(523),Q=e(719),F=e(407)("socket.io-client");g.exports=I=n;var B=I.managers={};function n(g,I){"object"===typeof g&&(I=g,g=void 0),I=I||{};var e,C=t(g),n=C.source,U=C.id,s=C.path,i=B[U]&&s in B[U].nsps;return I.forceNew||I["force new connection"]||!1===I.multiplex||i?(F("ignoring socket cache for %s",n),e=Q(n,I)):(B[U]||(F("new io instance for %s",n),B[U]=Q(n,I)),e=B[U]),C.query&&!I.query&&(I.query=C.query),e.socket(C.path,I)}I.protocol=C.protocol,I.connect=n,I.Manager=e(719),I.Socket=e(725)},,function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M20 6h-2.18c.11-.31.18-.65.18-1 0-1.66-1.34-3-3-3-1.05 0-1.96.54-2.5 1.35l-.5.67-.5-.68C10.96 2.54 10.05 2 9 2 7.34 2 6 3.34 6 5c0 .35.07.69.18 1H4c-1.11 0-1.99.89-1.99 2L2 19c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V8c0-1.11-.89-2-2-2zm-5-2c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zM9 4c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm11 15H4v-2h16v2zm0-5H4V8h5.08L7 10.83 8.62 12 11 8.76l1-1.36 1 1.36L15.38 12 17 10.83 14.92 8H20v6z"}),"CardGiftcard");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M22 9.24l-7.19-.62L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27 18.18 21l-1.63-7.03L22 9.24zM12 15.4l-3.76 2.27 1-4.28-3.32-2.88 4.38-.38L12 6.1l1.71 4.04 4.38.38-3.32 2.88 1 4.28L12 15.4z"}),"StarBorder");I.default=Q},,function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M12 7.27l4.28 10.43-3.47-1.53-.81-.36-.81.36-3.47 1.53L12 7.27M12 2L4.5 20.29l.71.71L12 18l6.79 3 .71-.71L12 2z"}),"NavigationOutlined");I.default=Q},function(g,I,e){var t=e(253),C=e(411).EventEmitter;function Q(g){if(!(this instanceof Q))return new Q(g);C.call(this),g=g||{},this.concurrency=g.concurrency||1/0,this.timeout=g.timeout||0,this.autostart=g.autostart||!1,this.results=g.results||null,this.pending=0,this.session=0,this.running=!1,this.jobs=[],this.timers={}}g.exports=Q,g.exports.default=Q,t(Q,C);["pop","shift","indexOf","lastIndexOf"].forEach((function(g){Q.prototype[g]=function(){return Array.prototype[g].apply(this.jobs,arguments)}})),Q.prototype.slice=function(g,I){return this.jobs=this.jobs.slice(g,I),this},Q.prototype.reverse=function(){return this.jobs.reverse(),this};function F(){for(var g in this.timers){var I=this.timers[g];delete this.timers[g],clearTimeout(I)}}function B(g){var I=this;function e(g){I.end(g)}this.on("error",e),this.on("end",(function t(C){I.removeListener("error",e),I.removeListener("end",t),g(C,this.results)}))}function n(g){this.session++,this.running=!1,this.emit("end",g)}["push","unshift","splice"].forEach((function(g){Q.prototype[g]=function(){var I=Array.prototype[g].apply(this.jobs,arguments);return this.autostart&&this.start(),I}})),Object.defineProperty(Q.prototype,"length",{get:function(){return this.pending+this.jobs.length}}),Q.prototype.start=function(g){if(g&&B.call(this,g),this.running=!0,!(this.pending>=this.concurrency))if(0!==this.jobs.length){var I=this,e=this.jobs.shift(),t=!0,C=this.session,Q=null,F=!1,U=null,s=e.hasOwnProperty("timeout")?e.timeout:this.timeout;s&&(Q=setTimeout((function(){F=!0,I.listeners("timeout").length>0?I.emit("timeout",c,e):c()}),s),this.timers[Q]=Q),this.results&&(U=this.results.length,this.results[U]=null),this.pending++,I.emit("start",e);var i=e(c);i&&i.then&&"function"===typeof i.then&&i.then((function(g){return c(null,g)})).catch((function(g){return c(g||!0)})),this.running&&this.jobs.length>0&&this.start()}else 0===this.pending&&n.call(this);function c(g,B){t&&I.session===C&&(t=!1,I.pending--,null!==Q&&(delete I.timers[Q],clearTimeout(Q)),g?I.emit("error",g,e):!1===F&&(null!==U&&(I.results[U]=Array.prototype.slice.call(arguments,1)),I.emit("success",B,e)),I.session===C&&(0===I.pending&&0===I.jobs.length?n.call(I):I.running&&I.start()))}},Q.prototype.stop=function(){this.running=!1},Q.prototype.end=function(g){F.call(this),this.jobs.length=0,this.pending=0,n.call(this,g)}},function(g,I,e){(function(I){var t=e(294).Writable,C=e(413),Q=e(1388),F=I.URL||I.webkitURL||I.mozURL;function B(){if(!(this instanceof B))return new B;t.call(this),this._chunks=[],this._blob=null,this.length=0}C.inherits(B,t),B.prototype._write=function(g,I,e){g instanceof Uint8Array||(g=new Uint8Array(g)),this.length+=g.length,this._chunks.push(g),e()},B.prototype.toBlob=function(g){return g=g||"application/octet-stream",this._blob||(this._blob=new Q(this._chunks,{type:g}),this._chunks=[]),this._blob.type!==g&&(this._blob=new Q([this._blob],{type:g})),this._blob},B.prototype.toBlobURL=function(g){return F.createObjectURL(this.toBlob(g))},g.exports=B}).call(this,e(67))},function(g,I,e){"use strict";(function(g){Object.defineProperty(I,"__esModule",{value:!0});var t=e(1389),C=e(1390),Q=e(1391),F=e(1394);e(1395);var B=e(567),n=e(318);function U(g){return g&&"object"===typeof g&&"default"in g?g:{default:g}}var s=U(t),i=U(C),c=U(Q),A=U(F),l=U(B),a=U(n),r=["src","fontWeight","fontStyle"],o={thin:100,hairline:100,ultralight:200,extralight:200,light:300,normal:400,medium:500,semibold:600,demibold:600,bold:700,ultrabold:800,extrabold:800,heavy:900,black:900},d=function(){var I=s.default(c.default.mark((function I(e,t){var C,Q;return c.default.wrap((function(I){for(;;)switch(I.prev=I.next){case 0:return I.next=2,l.default(e,t);case 2:return C=I.sent,I.next=5,C.buffer?C.buffer():C.arrayBuffer();case 5:return Q=I.sent,I.abrupt("return","Buffer"===Q.constructor.name?Q:g.from(Q));case 7:case"end":return I.stop()}}),I)})));return function(g,e){return I.apply(this,arguments)}}(),u=function(g){var I=g.split(",")[0],e="data:"===I.substring(0,5),t="base64"===I.split(";")[1];return e&&t},y=function(g,I){return g.fontWeight-I.fontWeight},b=function(){function I(g,I,e,t,C){this.src=g,this.fontFamily=I,this.fontStyle=e||"normal",this.fontWeight=t||400,this.data=null,this.loading=!1,this.options=C}return I.prototype.load=function(){var I=s.default(c.default.mark((function I(){var e,t,C,Q,F,B,n,U=this;return c.default.wrap((function(I){for(;;)switch(I.prev=I.next){case 0:if(this.loading=!0,e=this.options.postscriptName,!u(this.src)){I.next=6;break}this.data=a.default.create(g.from(this.src.split(",")[1],"base64"),e),I.next=17;break;case 6:return t=this.options,C=t.headers,Q=t.body,F=t.method,B=void 0===F?"GET":F,I.next=10,d(this.src,{method:B,body:Q,headers:C});case 10:n=I.sent,this.data=a.default.create(n,e),I.next=17;break;case 14:return I.next=16,new Promise((function(g,I){return a.default.open(U.src,e,(function(e,t){return e?I(e):g(t)}))}));case 16:this.data=I.sent;case 17:this.loading=!1;case 18:case"end":return I.stop()}}),I,this)})));return function(){return I.apply(this,arguments)}}(),I}(),Z=function(){function g(g){this.family=g,this.sources=[]}g.create=function(I){return new g(I)};var I=g.prototype;return I.register=function(g){var I=g.src,e=g.fontWeight,t=g.fontStyle,C=A.default(g,r),Q=function(g){return"string"===typeof g?o[g]:g}(e);this.sources.push(new b(I,this.family,t,Q,C))},I.resolve=function(g){var I,e=g.fontWeight,t=void 0===e?400:e,C=g.fontStyle,Q=void 0===C?"normal":C,F=this.sources.filter((function(g){return g.fontStyle===Q})),B=F.find((function(g){return g.fontWeight===t}));if(B)return B;if(t>=400&&t<=500){var n=F.filter((function(g){return g.fontWeight<=t})),U=F.filter((function(g){return g.fontWeight>500}));I=F.filter((function(g){return g.fontWeight>=t&&g.fontWeight<500}))[0]||n[n.length-1]||U[0]}var s=F.filter((function(g){return g.fontWeight<t})).sort(y),i=F.filter((function(g){return g.fontWeight>t})).sort(y);if(t<400&&(I=s[s.length-1]||i[0]),t>500&&(I=i[0]||s[s.length-1]),!I)throw new Error("Could not resolve font for "+this.family+", fontWeight "+t);return I},g}(),m=["Courier","Courier-Bold","Courier-Oblique","Courier-BoldOblique","Helvetica","Helvetica-Bold","Helvetica-Oblique","Helvetica-BoldOblique","Times-Roman","Times-Bold","Times-Italic","Times-BoldItalic"];I.default=function(){var g=this,I={},e=null,t=null;this.register=function(g){var e=g.family;if(I[e]||(I[e]=Z.create(e)),g.fonts)for(var t=0;t<g.fonts.length;t+=1)I[e].register(i.default({family:e},g.fonts[t]));else I[e].register(g)},this.registerEmojiSource=function(g){var I=g.url,t=g.format;e={url:I,format:void 0===t?"png":t}},this.registerHyphenationCallback=function(g){t=g},this.getFont=function(g){var e=g.fontFamily;if(m.includes(e))return null;if(!I[e])throw new Error("Font family not registered: "+e+". Please register it calling Font.register() method.");return I[e].resolve(g)},this.load=function(){var I=s.default(c.default.mark((function I(e){var t,C;return c.default.wrap((function(I){for(;;)switch(I.prev=I.next){case 0:if(t=e.fontFamily,!m.includes(t)){I.next=4;break}return I.abrupt("return");case 4:if((C=g.getFont(e)).data||C.loading){I.next=8;break}return I.next=8,C.load();case 8:case"end":return I.stop()}}),I)})));return function(g){return I.apply(this,arguments)}}(),this.reset=function(){for(var g=Object.keys(I),e=0;e<g.length;e+=1){var t=g[e];I[t].data=null}},this.clear=function(){I={}},this.getRegisteredFonts=function(){return I},this.getEmojiSource=function(){return e},this.getHyphenationCallback=function(){return t},this.getRegisteredFontFamilies=function(){return Object.keys(I)}}}).call(this,e(103).Buffer)},function(g,I,e){"use strict";I.byteLength=function(g){var I=U(g),e=I[0],t=I[1];return 3*(e+t)/4-t},I.toByteArray=function(g){var I,e,t=U(g),F=t[0],B=t[1],n=new Q(function(g,I,e){return 3*(I+e)/4-e}(0,F,B)),s=0,i=B>0?F-4:F;for(e=0;e<i;e+=4)I=C[g.charCodeAt(e)]<<18|C[g.charCodeAt(e+1)]<<12|C[g.charCodeAt(e+2)]<<6|C[g.charCodeAt(e+3)],n[s++]=I>>16&255,n[s++]=I>>8&255,n[s++]=255&I;2===B&&(I=C[g.charCodeAt(e)]<<2|C[g.charCodeAt(e+1)]>>4,n[s++]=255&I);1===B&&(I=C[g.charCodeAt(e)]<<10|C[g.charCodeAt(e+1)]<<4|C[g.charCodeAt(e+2)]>>2,n[s++]=I>>8&255,n[s++]=255&I);return n},I.fromByteArray=function(g){for(var I,e=g.length,C=e%3,Q=[],F=0,B=e-C;F<B;F+=16383)Q.push(s(g,F,F+16383>B?B:F+16383));1===C?(I=g[e-1],Q.push(t[I>>2]+t[I<<4&63]+"==")):2===C&&(I=(g[e-2]<<8)+g[e-1],Q.push(t[I>>10]+t[I>>4&63]+t[I<<2&63]+"="));return Q.join("")};for(var t=[],C=[],Q="undefined"!==typeof Uint8Array?Uint8Array:Array,F="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",B=0,n=F.length;B<n;++B)t[B]=F[B],C[F.charCodeAt(B)]=B;function U(g){var I=g.length;if(I%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var e=g.indexOf("=");return-1===e&&(e=I),[e,e===I?0:4-e%4]}function s(g,I,e){for(var C,Q,F=[],B=I;B<e;B+=3)C=(g[B]<<16&16711680)+(g[B+1]<<8&65280)+(255&g[B+2]),F.push(t[(Q=C)>>18&63]+t[Q>>12&63]+t[Q>>6&63]+t[63&Q]);return F.join("")}C["-".charCodeAt(0)]=62,C["_".charCodeAt(0)]=63},function(g,I,e){var t=e(1444),C=e(1445),Q=e(426),F=e(1446).swap32LE,B=function(){"use strict";function g(I){t(this,g);var e="function"===typeof I.readUInt32BE&&"function"===typeof I.slice;if(e||I instanceof Uint8Array){var C;if(e)this.highStart=I.readUInt32LE(0),this.errorValue=I.readUInt32LE(4),C=I.readUInt32LE(8),I=I.slice(12);else{var B=new DataView(I.buffer);this.highStart=B.getUint32(0,!0),this.errorValue=B.getUint32(4,!0),C=B.getUint32(8,!0),I=I.subarray(12)}I=Q(I,new Uint8Array(C)),I=Q(I,new Uint8Array(C)),F(I),this.data=new Uint32Array(I.buffer)}else{var n=I;this.data=n.data,this.highStart=n.highStart,this.errorValue=n.errorValue}}return C(g,[{key:"get",value:function(g){var I;return g<0||g>1114111?this.errorValue:g<55296||g>56319&&g<=65535?(I=(this.data[g>>5]<<2)+(31&g),this.data[I]):g<=65535?(I=(this.data[2048+(g-55296>>5)]<<2)+(31&g),this.data[I]):g<this.highStart?(I=this.data[2080+(g>>11)],I=((I=this.data[I+(g>>5&63)])<<2)+(31&g),this.data[I]):this.data[this.data.length-4]}}]),g}();g.exports=B},function(g,I,e){"use strict";var t=e(128).default;I.__esModule=!0,I.default=void 0;var C=t(e(1448)),Q=t(e(1488)),F=function(g,I){return(0,Q.default)(g)(I),function(g){return function(I){(I.children||[]).forEach((0,C.default)(g))}}(g)(I),g.end(),g};I.default=F},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0});var t=function(g,I){if(Array.isArray(g))return g;if(Symbol.iterator in Object(g))return function(g,I){var e=[],t=!0,C=!1,Q=void 0;try{for(var F,B=g[Symbol.iterator]();!(t=(F=B.next()).done)&&(e.push(F.value),!I||e.length!==I);t=!0);}catch(n){C=!0,Q=n}finally{try{!t&&B.return&&B.return()}finally{if(C)throw Q}}return e}(g,I);throw new TypeError("Invalid attempt to destructure non-iterable instance")},C=2*Math.PI,Q=function(g,I,e,t,C,Q,F){var B=g.x,n=g.y;return{x:t*(B*=I)-C*(n*=e)+Q,y:C*B+t*n+F}},F=function(g,I){var e=1.5707963267948966===I?.551915024494:-1.5707963267948966===I?-.551915024494:4/3*Math.tan(I/4),t=Math.cos(g),C=Math.sin(g),Q=Math.cos(g+I),F=Math.sin(g+I);return[{x:t-C*e,y:C+t*e},{x:Q+F*e,y:F-Q*e},{x:Q,y:F}]},B=function(g,I,e,t){var C=g*e+I*t;return C>1&&(C=1),C<-1&&(C=-1),(g*t-I*e<0?-1:1)*Math.acos(C)};I.default=function(g){var I=g.px,e=g.py,n=g.cx,U=g.cy,s=g.rx,i=g.ry,c=g.xAxisRotation,A=void 0===c?0:c,l=g.largeArcFlag,a=void 0===l?0:l,r=g.sweepFlag,o=void 0===r?0:r,d=[];if(0===s||0===i)return[];var u=Math.sin(A*C/360),y=Math.cos(A*C/360),b=y*(I-n)/2+u*(e-U)/2,Z=-u*(I-n)/2+y*(e-U)/2;if(0===b&&0===Z)return[];s=Math.abs(s),i=Math.abs(i);var m=Math.pow(b,2)/Math.pow(s,2)+Math.pow(Z,2)/Math.pow(i,2);m>1&&(s*=Math.sqrt(m),i*=Math.sqrt(m));var x=function(g,I,e,t,Q,F,n,U,s,i,c,A){var l=Math.pow(Q,2),a=Math.pow(F,2),r=Math.pow(c,2),o=Math.pow(A,2),d=l*a-l*o-a*r;d<0&&(d=0),d/=l*o+a*r;var u=(d=Math.sqrt(d)*(n===U?-1:1))*Q/F*A,y=d*-F/Q*c,b=i*u-s*y+(g+e)/2,Z=s*u+i*y+(I+t)/2,m=(c-u)/Q,x=(A-y)/F,R=(-c-u)/Q,S=(-A-y)/F,G=B(1,0,m,x),L=B(m,x,R,S);return 0===U&&L>0&&(L-=C),1===U&&L<0&&(L+=C),[b,Z,G,L]}(I,e,n,U,s,i,a,o,u,y,b,Z),R=t(x,4),S=R[0],G=R[1],L=R[2],V=R[3],h=Math.abs(V)/(C/4);Math.abs(1-h)<1e-7&&(h=1);var D=Math.max(Math.ceil(h),1);V/=D;for(var p=0;p<D;p++)d.push(F(L,V)),L+=V;return d.map((function(g){var I=Q(g[0],s,i,y,u,S,G),e=I.x,t=I.y,C=Q(g[1],s,i,y,u,S,G),F=C.x,B=C.y,n=Q(g[2],s,i,y,u,S,G);return{x1:e,y1:t,x2:F,y2:B,x:n.x,y:n.y}}))},g.exports=I.default},function(g,I){g.exports=function(g){if(void 0===g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return g},g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I){function e(){return g.exports=e=Object.assign?Object.assign.bind():function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g},g.exports.__esModule=!0,g.exports.default=g.exports,e.apply(this,arguments)}g.exports=e,g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I,e){"use strict";var t=e(37).default;I.__esModule=!0,I.default=void 0;var C=t(e(1503)),Q=t(e(1505)),F=t(e(1594)),B=t(e(1595)),n=t(e(1602)),U=t(e(1603)),s=t(e(1605)),i=t(e(1609)),c=t(e(806)),A=t(e(803)),l=t(e(805)),a=t(e(1655)),r=t(e(1656)),o=t(e(1657)),d=t(e(1658)),u=(0,C.default)(F.default,U.default,i.default,A.default,r.default,c.default,Q.default,B.default,l.default,o.default,a.default,n.default,d.default,s.default);I.default=u},function(g,I,e){"use strict";g.exports=e(1659)},,,function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M22.73 22.73L2.77 2.77 2 2l-.73-.73L0 2.54l4.39 4.39 2.21 4.66-1.35 2.45c-.16.28-.25.61-.25.96 0 1.1.9 2 2 2h7.46l1.38 1.38c-.5.36-.83.95-.83 1.62 0 1.1.89 2 1.99 2 .67 0 1.26-.33 1.62-.84L21.46 24l1.27-1.27zM7.42 15c-.14 0-.25-.11-.25-.25l.03-.12.9-1.63h2.36l2 2H7.42zm8.13-2c.75 0 1.41-.41 1.75-1.03l3.58-6.49c.08-.14.12-.31.12-.48 0-.55-.45-1-1-1H6.54l9.01 9zM7 18c-1.1 0-1.99.9-1.99 2S5.9 22 7 22s2-.9 2-2-.9-2-2-2z"}),"RemoveShoppingCart");I.default=Q},function(g,I,e){"use strict";function t(g){return g&&"object"==typeof g&&"default"in g?g.default:g}Object.defineProperty(I,"__esModule",{value:!0});var C=t(e(0));e(4);var Q=e(161);e(192);var F=t(e(557)),B=t(e(142)),n=t(e(441));e(674);var U=t(e(129));function s(){return(s=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}function i(g,I){g.prototype=Object.create(I.prototype),(g.prototype.constructor=g).__proto__=I}function c(g,I){if(null==g)return{};var e,t,C={},Q=Object.keys(g);for(t=0;t<Q.length;t++)e=Q[t],0<=I.indexOf(e)||(C[e]=g[e]);return C}var A=function(g){var I=F();return I.displayName=g,I}("Router"),l=function(g){function I(I){var e;return(e=g.call(this,I)||this).state={location:I.history.location},e._isMounted=!1,e._pendingLocation=null,I.staticContext||(e.unlisten=I.history.listen((function(g){e._isMounted?e.setState({location:g}):e._pendingLocation=g}))),e}i(I,g),I.computeRootMatch=function(g){return{path:"/",url:"/",params:{},isExact:"/"===g}};var e=I.prototype;return e.componentDidMount=function(){this._isMounted=!0,this._pendingLocation&&this.setState({location:this._pendingLocation})},e.componentWillUnmount=function(){this.unlisten&&this.unlisten()},e.render=function(){return C.createElement(A.Provider,{children:this.props.children||null,value:{history:this.props.history,location:this.state.location,match:I.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}})},I}(C.Component),a=function(g){function I(){for(var I,e=arguments.length,t=new Array(e),C=0;C<e;C++)t[C]=arguments[C];return(I=g.call.apply(g,[this].concat(t))||this).history=Q.createMemoryHistory(I.props),I}return i(I,g),I.prototype.render=function(){return C.createElement(l,{history:this.history,children:this.props.children})},I}(C.Component),r=function(g){function I(){return g.apply(this,arguments)||this}i(I,g);var e=I.prototype;return e.componentDidMount=function(){this.props.onMount&&this.props.onMount.call(this,this)},e.componentDidUpdate=function(g){this.props.onUpdate&&this.props.onUpdate.call(this,this,g)},e.componentWillUnmount=function(){this.props.onUnmount&&this.props.onUnmount.call(this,this)},e.render=function(){return null},I}(C.Component);var o={},d=0;function u(g,I){return void 0===g&&(g="/"),void 0===I&&(I={}),"/"===g?g:function(g){if(o[g])return o[g];var I=n.compile(g);return d<1e4&&(o[g]=I,d++),I}(g)(I,{pretty:!0})}var y={},b=0;function Z(g,I){void 0===I&&(I={}),"string"!=typeof I&&!Array.isArray(I)||(I={path:I});var e=I,t=e.path,C=e.exact,Q=void 0!==C&&C,F=e.strict,B=void 0!==F&&F,U=e.sensitive,s=void 0!==U&&U;return[].concat(t).reduce((function(I,e){if(!e&&""!==e)return null;if(I)return I;var t=function(g,I){var e=""+I.end+I.strict+I.sensitive,t=y[e]||(y[e]={});if(t[g])return t[g];var C=[],Q={regexp:n(g,C,I),keys:C};return b<1e4&&(t[g]=Q,b++),Q}(e,{end:Q,strict:B,sensitive:s}),C=t.regexp,F=t.keys,U=C.exec(g);if(!U)return null;var i=U[0],c=U.slice(1),A=g===i;return Q&&!A?null:{path:e,url:"/"===e&&""===i?"/":i,isExact:A,params:F.reduce((function(g,I,e){return g[I.name]=c[e],g}),{})}}),null)}var m=function(g){function I(){return g.apply(this,arguments)||this}return i(I,g),I.prototype.render=function(){var g=this;return C.createElement(A.Consumer,null,(function(I){I||B(!1);var e=g.props.location||I.location,t=s({},I,{location:e,match:g.props.computedMatch?g.props.computedMatch:g.props.path?Z(e.pathname,g.props):I.match}),Q=g.props,F=Q.children,n=Q.component,U=Q.render;return Array.isArray(F)&&0===F.length&&(F=null),C.createElement(A.Provider,{value:t},t.match?F?"function"==typeof F?F(t):F:n?C.createElement(n,t):U?U(t):null:"function"==typeof F?F(t):null)}))},I}(C.Component);function x(g){return"/"===g.charAt(0)?g:"/"+g}function R(g,I){if(!g)return I;var e=x(g);return 0!==I.pathname.indexOf(e)?I:s({},I,{pathname:I.pathname.substr(e.length)})}function S(g){return"string"==typeof g?g:Q.createPath(g)}function G(g){return function(){B(!1)}}function L(){}var V=function(g){function I(){for(var I,e=arguments.length,t=new Array(e),C=0;C<e;C++)t[C]=arguments[C];return(I=g.call.apply(g,[this].concat(t))||this).handlePush=function(g){return I.navigateTo(g,"PUSH")},I.handleReplace=function(g){return I.navigateTo(g,"REPLACE")},I.handleListen=function(){return L},I.handleBlock=function(){return L},I}i(I,g);var e=I.prototype;return e.navigateTo=function(g,I){var e=this.props,t=e.basename,C=void 0===t?"":t,F=e.context,B=void 0===F?{}:F;B.action=I,B.location=function(g,I){return g?s({},I,{pathname:x(g)+I.pathname}):I}(C,Q.createLocation(g)),B.url=S(B.location)},e.render=function(){var g=this.props,I=g.basename,e=void 0===I?"":I,t=g.context,F=void 0===t?{}:t,B=g.location,n=void 0===B?"/":B,U=c(g,["basename","context","location"]),i={createHref:function(g){return x(e+S(g))},action:"POP",location:R(e,Q.createLocation(n)),push:this.handlePush,replace:this.handleReplace,go:G(),goBack:G(),goForward:G(),listen:this.handleListen,block:this.handleBlock};return C.createElement(l,s({},U,{history:i,staticContext:F}))},I}(C.Component),h=function(g){function I(){return g.apply(this,arguments)||this}return i(I,g),I.prototype.render=function(){var g=this;return C.createElement(A.Consumer,null,(function(I){I||B(!1);var e,t,Q=g.props.location||I.location;return C.Children.forEach(g.props.children,(function(g){if(null==t&&C.isValidElement(g)){var F=(e=g).props.path||g.props.from;t=F?Z(Q.pathname,s({},g.props,{path:F})):I.match}})),t?C.cloneElement(e,{location:Q,computedMatch:t}):null}))},I}(C.Component);var D=C.useContext;function p(){return D(A).location}I.MemoryRouter=a,I.Prompt=function(g){var I=g.message,e=g.when,t=void 0===e||e;return C.createElement(A.Consumer,null,(function(g){if(g||B(!1),!t||g.staticContext)return null;var e=g.history.block;return C.createElement(r,{onMount:function(g){g.release=e(I)},onUpdate:function(g,t){t.message!==I&&(g.release(),g.release=e(I))},onUnmount:function(g){g.release()},message:I})}))},I.Redirect=function(g){var I=g.computedMatch,e=g.to,t=g.push,F=void 0!==t&&t;return C.createElement(A.Consumer,null,(function(g){g||B(!1);var t=g.history,n=g.staticContext,U=F?t.push:t.replace,i=Q.createLocation(I?"string"==typeof e?u(e,I.params):s({},e,{pathname:u(e.pathname,I.params)}):e);return n?(U(i),null):C.createElement(r,{onMount:function(){U(i)},onUpdate:function(g,I){var e=Q.createLocation(I.to);Q.locationsAreEqual(e,s({},i,{key:e.key}))||U(i)},to:e})}))},I.Route=m,I.Router=l,I.StaticRouter=V,I.Switch=h,I.__RouterContext=A,I.generatePath=u,I.matchPath=Z,I.useHistory=function(){return D(A).history},I.useLocation=p,I.useParams=function(){var g=D(A).match;return g?g.params:{}},I.useRouteMatch=function(g){return g?Z(p().pathname,g):D(A).match},I.withRouter=function(g){function I(I){var e=I.wrappedComponentRef,t=c(I,["wrappedComponentRef"]);return C.createElement(A.Consumer,null,(function(I){return I||B(!1),C.createElement(g,s({},t,I,{ref:e}))}))}var e="withRouter("+(g.displayName||g.name)+")";return I.displayName=e,I.WrappedComponent=g,U(I,g)}},function(g,I,e){"use strict";function t(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}function C(g){for(var I=1;I<arguments.length;I++){var e=null!=arguments[I]?arguments[I]:{},C=Object.keys(e);"function"===typeof Object.getOwnPropertySymbols&&(C=C.concat(Object.getOwnPropertySymbols(e).filter((function(g){return Object.getOwnPropertyDescriptor(e,g).enumerable})))),C.forEach((function(I){t(g,I,e[I])}))}return g}var Q,F={debug:!1,containerId:null,dataLayerName:"dataLayer",dataLayer:void 0};var B={};function n(g){var I=B[g];I||(I=new RegExp("googletagmanager\\.com\\/gtm\\.js.*[?&]id="+g),B[g]=I);var e=document.querySelectorAll("script[src]");return!!Object.keys(e).filter((function(g){return(e[g].src||"").match(I)})).length}var U=function(){var g=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{name:"google-tag-manager",config:C({},F,g),initialize:function(g){var I=g.config,e=I.containerId,t=I.dataLayerName;if(!e)throw new Error("No google tag manager containerId defined");n(e)||(!function(g,I,e,t,C){g[t]=g[t]||[],g[t].push({"gtm.start":(new Date).getTime(),event:"gtm.js"});var Q=I.getElementsByTagName(e)[0],F=I.createElement(e),B="dataLayer"!=t?"&l="+t:"";F.async=!0,F.src="https://www.googletagmanager.com/gtm.js?id="+C+B,Q.parentNode.insertBefore(F,Q)}(window,document,"script",t,e),Q=t,I.dataLayer=window[t])},page:function(g){var I=g.payload,e=(g.options,g.instance,g.config);"undefined"!==typeof e.dataLayer&&e.dataLayer.push(I.properties)},track:function(g){var I=g.payload,e=(g.options,g.config);if("undefined"!==typeof e.dataLayer){var t=I.anonymousId,Q=I.userId,F=I.properties,B=F;Q&&(B.userId=Q),t&&(B.anonymousId=t),F.category||(B.category="All"),e.debug&&console.log("gtag push",C({event:I.event},B)),e.dataLayer.push(C({event:I.event},B))}},loaded:function(){var I=!!Q&&!(!window[Q]||Array.prototype.push===window[Q].push);return n(g.containerId)&&I}}};I.a=U},,function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M7.8 2h8.4C19.4 2 22 4.6 22 7.8v8.4a5.8 5.8 0 0 1-5.8 5.8H7.8C4.6 22 2 19.4 2 16.2V7.8A5.8 5.8 0 0 1 7.8 2m-.2 2A3.6 3.6 0 0 0 4 7.6v8.8C4 18.39 5.61 20 7.6 20h8.8a3.6 3.6 0 0 0 3.6-3.6V7.6C20 5.61 18.39 4 16.4 4H7.6m9.65 1.5a1.25 1.25 0 0 1 1.25 1.25A1.25 1.25 0 0 1 17.25 8 1.25 1.25 0 0 1 16 6.75a1.25 1.25 0 0 1 1.25-1.25M12 7a5 5 0 0 1 5 5 5 5 0 0 1-5 5 5 5 0 0 1-5-5 5 5 0 0 1 5-5m0 2a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3z"}),"Instagram");I.default=Q},function(g,I,e){"use strict";var t=e(26),C=e(0),Q=e.n(C),F=e(139),B=e.n(F);I.a=function(g){for(var I=g.url,e=g.allowFullScreen,C=g.position,F=g.display,n=g.height,U=g.width,s=g.overflow,i=g.styles,c=g.onLoad,A=g.onMouseOver,l=g.onMouseOut,a=g.scrolling,r=g.id,o=g.frameBorder,d=g.ariaHidden,u=g.sandbox,y=g.allow,b=g.className,Z=g.title,m=g.ariaLabel,x=g.ariaLabelledby,R=g.name,S=g.target,G=g.loading,L=g.importance,V=g.referrerpolicy,h=g.allowpaymentrequest,D=g.src,p=g.key,E=B()({src:D||I,target:S||null,style:{position:C||null,display:F||"initial",overflow:s||null},scrolling:a||null,allowpaymentrequest:h||null,importance:L||null,sandbox:u&&Object(t.a)(u).join(" ")||null,loading:G||null,styles:i||null,name:R||null,className:b||null,allowFullScreen:"allowFullScreen",referrerpolicy:V||null,title:Z||null,allow:y||null,id:r||null,"aria-labelledby":x||null,"aria-hidden":d||null,"aria-label":m||null,width:U||null,height:n||null,onLoad:c||null,onMouseOver:A||null,onMouseOut:l||null,key:p||"iframe"}),N=Object.create(null),W=0,f=Object.keys(E);W<f.length;W++){var X=f[W];null!=E[X]&&(N[X]=E[X])}for(var J=0,v=Object.keys(N.style);J<v.length;J++){var k=v[J];null==N.style[k]&&delete N.style[k]}if(N.styles)for(var H=0,M=Object.keys(N.styles);H<M.length;H++){var Y=M[H];N.styles.hasOwnProperty(Y)&&(N.style[Y]=N.styles[Y]),Object.keys(N.styles).pop()==Y&&delete N.styles}if(e)if("allow"in N){var w=N.allow.replace("fullscreen","");N.allow="fullscreen ".concat(w.trim()).trim()}else N.allow="fullscreen";return o>=0&&(N.style.hasOwnProperty("border")||(N.style.border=o)),Q.a.createElement("iframe",Object.assign({},N))}},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4l-8 5-8-5V6l8 5 8-5v2z"}),"Mail");I.default=Q},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(0)),Q=(0,t(e(25)).default)(C.default.createElement("path",{d:"M19 3H4.99c-1.11 0-1.98.9-1.98 2L3 19c0 1.1.88 2 1.99 2H19c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 12h-4c0 1.66-1.35 3-3 3s-3-1.34-3-3H4.99V5H19v10zm-3-5h-2V7h-4v3H8l4 4 4-4z"}),"MoveToInbox");I.default=Q},function(g,I,e){"use strict";e.d(I,"a",(function(){return c}));var t=e(0);function C(g){return(C="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"===typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g})(g)}function Q(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}function F(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}function B(g,I){return!I||"object"!==C(I)&&"function"!==typeof I?U(g):I}function n(g){return(n=Object.setPrototypeOf?Object.getPrototypeOf:function(g){return g.__proto__||Object.getPrototypeOf(g)})(g)}function U(g){if(void 0===g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return g}function s(g,I){return(s=Object.setPrototypeOf||function(g,I){return g.__proto__=I,g})(g,I)}function i(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}var c=function(g){function I(){var g,e;Q(this,I);for(var t=arguments.length,C=new Array(t),F=0;F<t;F++)C[F]=arguments[F];return i(U(e=B(this,(g=n(I)).call.apply(g,[this].concat(C)))),"state",{bootstrapped:!1}),i(U(e),"_unsubscribe",void 0),i(U(e),"handlePersistorState",(function(){e.props.persistor.getState().bootstrapped&&(e.props.onBeforeLift?Promise.resolve(e.props.onBeforeLift()).finally((function(){return e.setState({bootstrapped:!0})})):e.setState({bootstrapped:!0}),e._unsubscribe&&e._unsubscribe())})),e}var e,t,C;return function(g,I){if("function"!==typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function");g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,writable:!0,configurable:!0}}),I&&s(g,I)}(I,g),e=I,(t=[{key:"componentDidMount",value:function(){this._unsubscribe=this.props.persistor.subscribe(this.handlePersistorState),this.handlePersistorState()}},{key:"componentWillUnmount",value:function(){this._unsubscribe&&this._unsubscribe()}},{key:"render",value:function(){return"function"===typeof this.props.children?this.props.children(this.state.bootstrapped):this.state.bootstrapped?this.props.children:this.props.loading}}])&&F(e.prototype,t),C&&F(e,C),I}(t.PureComponent);i(c,"defaultProps",{children:null,loading:null})},function(g,I,e){"use strict";e.d(I,"a",(function(){return B}));var t=e(927),C=e(66),Q=e(107),F=e(52);function B(){Object(t.a)({callback:n,type:"error"}),Object(t.a)({callback:n,type:"unhandledrejection"})}function n(){var g=Object(F.b)();g&&(C.a.log("[Tracing] Transaction: "+Q.a.InternalError+" -> Global error occured"),g.setStatus(Q.a.InternalError))}},function(g,I,e){(function(I){var t;g.exports=(t=e(0),function(g){var I={};function e(t){if(I[t])return I[t].exports;var C=I[t]={i:t,l:!1,exports:{}};return g[t].call(C.exports,C,C.exports,e),C.l=!0,C.exports}return e.m=g,e.c=I,e.d=function(g,I,t){e.o(g,I)||Object.defineProperty(g,I,{enumerable:!0,get:t})},e.r=function(g){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(g,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(g,"__esModule",{value:!0})},e.t=function(g,I){if(1&I&&(g=e(g)),8&I)return g;if(4&I&&"object"==typeof g&&g&&g.__esModule)return g;var t=Object.create(null);if(e.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:g}),2&I&&"string"!=typeof g)for(var C in g)e.d(t,C,function(I){return g[I]}.bind(null,C));return t},e.n=function(g){var I=g&&g.__esModule?function(){return g.default}:function(){return g};return e.d(I,"a",I),I},e.o=function(g,I){return Object.prototype.hasOwnProperty.call(g,I)},e.p="/dist/",e(e.s=5)}([function(g,I){g.exports=t},function(g,I,e){var t=e(2),C=e(3);"string"==typeof(C=C.__esModule?C.default:C)&&(C=[[g.i,C,""]]);var Q=(t(C,{insert:"head",singleton:!1}),C.locals?C.locals:{});g.exports=Q},function(g,I,e){"use strict";var t,C=function(){var g={};return function(I){if(void 0===g[I]){var e=document.querySelector(I);if(window.HTMLIFrameElement&&e instanceof window.HTMLIFrameElement)try{e=e.contentDocument.head}catch(g){e=null}g[I]=e}return g[I]}}(),Q=[];function F(g){for(var I=-1,e=0;e<Q.length;e++)if(Q[e].identifier===g){I=e;break}return I}function B(g,I){for(var e={},t=[],C=0;C<g.length;C++){var B=g[C],n=I.base?B[0]+I.base:B[0],U=e[n]||0,s="".concat(n," ").concat(U);e[n]=U+1;var i=F(s),c={css:B[1],media:B[2],sourceMap:B[3]};-1!==i?(Q[i].references++,Q[i].updater(c)):Q.push({identifier:s,updater:a(c,I),references:1}),t.push(s)}return t}function n(g){var I=document.createElement("style"),t=g.attributes||{};if(void 0===t.nonce){var Q=e.nc;Q&&(t.nonce=Q)}if(Object.keys(t).forEach((function(g){I.setAttribute(g,t[g])})),"function"==typeof g.insert)g.insert(I);else{var F=C(g.insert||"head");if(!F)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");F.appendChild(I)}return I}var U,s=(U=[],function(g,I){return U[g]=I,U.filter(Boolean).join("\n")});function i(g,I,e,t){var C=e?"":t.media?"@media ".concat(t.media," {").concat(t.css,"}"):t.css;if(g.styleSheet)g.styleSheet.cssText=s(I,C);else{var Q=document.createTextNode(C),F=g.childNodes;F[I]&&g.removeChild(F[I]),F.length?g.insertBefore(Q,F[I]):g.appendChild(Q)}}function c(g,I,e){var t=e.css,C=e.media,Q=e.sourceMap;if(C?g.setAttribute("media",C):g.removeAttribute("media"),Q&&btoa&&(t+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(Q))))," */")),g.styleSheet)g.styleSheet.cssText=t;else{for(;g.firstChild;)g.removeChild(g.firstChild);g.appendChild(document.createTextNode(t))}}var A=null,l=0;function a(g,I){var e,t,C;if(I.singleton){var Q=l++;e=A||(A=n(I)),t=i.bind(null,e,Q,!1),C=i.bind(null,e,Q,!0)}else e=n(I),t=c.bind(null,e,I),C=function(){!function(g){if(null===g.parentNode)return!1;g.parentNode.removeChild(g)}(e)};return t(g),function(I){if(I){if(I.css===g.css&&I.media===g.media&&I.sourceMap===g.sourceMap)return;t(g=I)}else C()}}g.exports=function(g,I){(I=I||{}).singleton||"boolean"==typeof I.singleton||(I.singleton=(void 0===t&&(t=Boolean(window&&document&&document.all&&!window.atob)),t));var e=B(g=g||[],I);return function(g){if(g=g||[],"[object Array]"===Object.prototype.toString.call(g)){for(var t=0;t<e.length;t++){var C=F(e[t]);Q[C].references--}for(var n=B(g,I),U=0;U<e.length;U++){var s=F(e[U]);0===Q[s].references&&(Q[s].updater(),Q.splice(s,1))}e=n}}}},function(g,I,e){(I=e(4)(!1)).push([g.i,'._4e96{overflow:hidden}._132a{background-color:rgba(0,0,0,0.8);left:0;min-height:100vh;min-height:-webkit-fill-available;opacity:0;position:fixed;top:0;transition:opacity 0.2s ease-in;width:100vw;z-index:999999}._132a._7c0e{opacity:1;display:block}._132a.efc7{pointer-events:none;touch-action:none}@media (prefers-color-scheme: dark){._132a._20ef{background:rgba(10,10,10,0.5);color:rgba(235,235,245,0.6)}}._6733{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background-color:rgba(250,250,250,0.8);border-radius:10px;bottom:0;color:black;filter:brightness(1.1);left:0;margin:0 8px 10px;overflow:hidden;position:fixed;transform:translateY(calc(100% + 10px));transition:transform 0.4s cubic-bezier(0.4, 0.24, 0.3, 1);width:calc(100vw - 16px);z-index:999999}._6733._7c0e{transform:translateY(0);display:block}._6733.efc7{pointer-events:none;touch-action:none}._6733._20ef{background:rgba(255,255,255,0.6);filter:brightness(1.6)}@media (prefers-color-scheme: dark){._6733._20ef{background:rgba(65,65,65,0.7);filter:brightness(1.1)}}._199d{align-items:center;border-bottom:1px solid rgba(0,0,0,0.1);border-top:0px;border-left:0px;border-right:0px;border-width:0.5px;display:flex;flex-flow:row nowrap;justify-content:space-between;padding:13px 16px}._20ef ._199d{border-color:rgba(60,60,67,0.29)}@media (prefers-color-scheme: dark){._20ef ._199d{border-color:rgba(140,140,140,0.7)}}._199d .ab5d{color:#333;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:18px;font-weight:500;line-height:1.125;margin:0;padding:0}._20ef ._199d .ab5d{color:#000}@media (prefers-color-scheme: dark){._20ef ._199d .ab5d{color:#fff}}._199d ._6a7e{color:#2d7cf6;font-size:16px;padding:0;margin:0;border:0;background:transparent}._20ef ._199d ._6a7e{color:#0055b3}@media (prefers-color-scheme: dark){._20ef ._199d ._6a7e{color:#0984ff}}.ebda{display:flex;width:100%}.ebda .a91e{border-bottom:1px solid rgba(0,0,0,0.1);border-top:0px;border-left:0px;border-right:0px;border-width:0.5px;color:inherit;margin:0 16px;padding:16px;width:100%}._20ef .ebda .a91e{border-color:rgba(60,60,67,0.29)}@media (prefers-color-scheme: dark){._20ef .ebda .a91e{border-color:rgba(140,140,140,0.7)}}._7d3c{color:#7b7b7a;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:13px;line-height:17px;margin:0;padding:0}._7d3c.e161{font-weight:600}._20ef ._7d3c{color:rgba(60,60,67,0.6)}@media (prefers-color-scheme: dark){._20ef ._7d3c{border-color:rgba(235,235,245,0.6);color:rgba(235,235,245,0.6)}}.e6cc{color:inherit;margin:0 16px;padding:16px}.e6cc ._3183{align-items:center;display:flex;flex-flow:row nowrap;justify-content:flex-start;text-align:left;margin-bottom:16px}.e6cc ._3183:last-of-type{margin-bottom:0}.e6cc ._4408,.e6cc ._4b98{flex:0 0 auto;height:30px;margin-right:32px;width:25px}.e6cc ._4b98{color:#2d7cf6}._20ef .e6cc ._4b98{color:black;fill:black}@media (prefers-color-scheme: dark){._20ef .e6cc ._4b98{color:white;fill:white}}.e6cc ._4408{color:#2d7cf6;fill:#2d7cf6}._20ef .e6cc ._4408{color:#0055b3;fill:#0055b3}@media (prefers-color-scheme: dark){._20ef .e6cc ._4408{color:#0984ff;fill:#0984ff}}\n',""]),I.locals={noScroll:"_4e96",pwaPromptOverlay:"_132a",visible:"_7c0e",hidden:"efc7",modern:"_20ef",pwaPrompt:"_6733",pwaPromptHeader:"_199d",pwaPromptTitle:"ab5d",pwaPromptCancel:"_6a7e",pwaPromptBody:"ebda",pwaPromptDescription:"a91e",pwaPromptCopy:"_7d3c",bold:"e161",pwaPromptInstruction:"e6cc",pwaPromptInstructionStep:"_3183",pwaPromptShareIcon:"_4408",pwaPromptHomeIcon:"_4b98"},g.exports=I},function(g,I,e){"use strict";g.exports=function(g){var I=[];return I.toString=function(){return this.map((function(I){var e=function(g,I){var e,t,C,Q=g[1]||"",F=g[3];if(!F)return Q;if(I&&"function"==typeof btoa){var B=(e=F,t=btoa(unescape(encodeURIComponent(JSON.stringify(e)))),C="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(t),"/*# ".concat(C," */")),n=F.sources.map((function(g){return"/*# sourceURL=".concat(F.sourceRoot||"").concat(g," */")}));return[Q].concat(n).concat([B]).join("\n")}return[Q].join("\n")}(I,g);return I[2]?"@media ".concat(I[2]," {").concat(e,"}"):e})).join("")},I.i=function(g,e,t){"string"==typeof g&&(g=[[null,g,""]]);var C={};if(t)for(var Q=0;Q<this.length;Q++){var F=this[Q][0];null!=F&&(C[F]=!0)}for(var B=0;B<g.length;B++){var n=[].concat(g[B]);t&&C[n[0]]||(e&&(n[2]?n[2]="".concat(e," and ").concat(n[2]):n[2]=e),I.push(n))}},I}},function(g,I,e){"use strict";e.r(I);var t=e(0),C=e.n(t),Q=function(g){var I=g.className,e=g.modern;return void 0!==e&&e?C.a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",className:I,viewBox:"0 0 566 670"},C.a.createElement("path",{d:"M255 12c4-4 10-8 16-8s12 3 16 8l94 89c3 4 6 7 8 12 2 6 0 14-5 19-7 8-20 9-28 2l-7-7-57-60 2 54v276c0 12-10 22-22 22-12 1-24-10-23-22V110l1-43-60 65c-5 5-13 8-21 6a19 19 0 0 1-16-17c-1-7 2-13 7-18l95-91z"}),C.a.createElement("path",{d:"M43 207c16-17 40-23 63-23h83v46h-79c-12 0-25 3-33 13-8 9-10 21-10 33v260c0 13 0 27 6 38 5 12 18 18 30 19l14 1h302c14 0 28 0 40-8 11-7 16-21 16-34V276c0-11-2-24-9-33-8-10-22-13-34-13h-78v-46h75c13 0 25 1 37 4 16 4 31 13 41 27 11 17 14 37 14 57v280c0 20-3 41-15 58a71 71 0 0 1-45 27c-11 2-23 3-34 3H109c-19-1-40-4-56-15-14-9-23-23-27-38-4-12-5-25-5-38V270c1-22 6-47 22-63z"})):C.a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",className:I,viewBox:"0 0 120 169"},C.a.createElement("g",{fill:"currentColor"},C.a.createElement("path",{d:"M60 0l28 28-2 2a586 586 0 0 0-4 4L64 15v90h-8V15L38 34l-4-4-2-2L60 0z"}),C.a.createElement("path",{d:"M0 49h44v8H8v104h104V57H76v-8h44v120H0V49z"})))},F=function(g){var I=g.className,e=g.modern;return void 0!==e&&e?C.a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",className:I,viewBox:"0 0 578 584"},C.a.createElement("path",{d:"M101 35l19-1h333c12 0 23 0 35 3 17 3 34 12 44 27 13 16 16 38 16 58v329c0 19 0 39-8 57a65 65 0 0 1-37 37c-18 7-38 7-57 7H130c-21 1-44 0-63-10-14-7-25-20-30-34-6-15-8-30-8-45V121c1-21 5-44 19-61 13-16 33-23 53-25m7 46c-10 1-19 6-24 14-7 8-9 20-9 31v334c0 12 2 25 10 34 9 10 23 12 35 12h336c14 1 30-3 38-15 6-9 8-20 8-31V125c0-12-2-24-10-33-9-9-22-12-35-12H121l-13 1z"}),C.a.createElement("path",{d:"M271 161c9-11 31-10 38 4 3 5 3 11 3 17v87h88c7 0 16 1 21 7 6 6 7 14 6 22a21 21 0 0 1-10 14c-5 4-11 5-17 5h-88v82c0 7-1 15-6 20-10 10-29 10-37-2-3-6-4-13-4-19v-81h-87c-8-1-17-3-23-9-5-6-6-15-4-22a21 21 0 0 1 11-14c6-3 13-3 19-3h84v-88c0-7 1-14 6-20z"})):C.a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",className:I,viewBox:"55.99425507 31.98999977 157.76574707 157.76371765"},C.a.createElement("path",{fill:"#58595b",d:"M90.49 32.83a54.6 54.6 0 019.55-.84c23.98.03 47.96 0 71.94.01 8.5.07 17.3 1.74 24.4 6.65 10.94 7.28 16.52 20.54 17.35 33.3.06 26.03 0 52.06.03 78.08 0 10.16-3.59 20.56-10.95 27.73-7.93 7.61-18.94 11.43-29.79 11.98-25.71.03-51.42 0-77.12.01-10.37-.11-21.01-3.77-28.17-11.48-8.22-8.9-11.72-21.29-11.73-33.21.01-23.03-.03-46.05.02-69.07-.01-9.14 1.33-18.71 6.65-26.4 6.21-9.4 16.97-14.79 27.82-16.76m38.18 41.09c-.05 10.25.01 20.5 0 30.75-9.58-.03-19.16.02-28.75-.04-2.27.08-4.98-.25-6.68 1.61-2.84 2.34-2.75 7.12.01 9.48 1.8 1.69 4.46 1.57 6.75 1.64 9.56-.04 19.12-.01 28.67-.03.02 10.24-.06 20.48.01 30.72-.14 2.66 1.36 5.4 3.95 6.3 3.66 1.66 8.52-1.13 8.61-5.23.26-10.59.02-21.2.09-31.79 9.88 0 19.76.02 29.64.01 2.74.12 5.85-.67 7.14-3.34 2.23-3.75-.61-9.34-5.08-9.29-10.57-.14-21.14-.01-31.7-.04-.01-10.25.04-20.49 0-30.74.3-3.5-2.66-7.09-6.3-6.79-3.65-.33-6.66 3.26-6.36 6.78z"}),C.a.createElement("path",{fill:"transparent",d:"M128.67 73.92c-.3-3.52 2.71-7.11 6.36-6.78 3.64-.3 6.6 3.29 6.3 6.79.04 10.25-.01 20.49 0 30.74 10.56.03 21.13-.1 31.7.04 4.47-.05 7.31 5.54 5.08 9.29-1.29 2.67-4.4 3.46-7.14 3.34-9.88.01-19.76-.01-29.64-.01-.07 10.59.17 21.2-.09 31.79-.09 4.1-4.95 6.89-8.61 5.23-2.59-.9-4.09-3.64-3.95-6.3-.07-10.24.01-20.48-.01-30.72-9.55.02-19.11-.01-28.67.03-2.29-.07-4.95.05-6.75-1.64-2.76-2.36-2.85-7.14-.01-9.48 1.7-1.86 4.41-1.53 6.68-1.61 9.59.06 19.17.01 28.75.04.01-10.25-.05-20.5 0-30.75z"}))},B=e(1),n=e.n(B);function U(g,I){var e=Object.keys(g);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(g);I&&(t=t.filter((function(I){return Object.getOwnPropertyDescriptor(g,I).enumerable}))),e.push.apply(e,t)}return e}function s(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}function i(g,I){return function(g){if(Array.isArray(g))return g}(g)||function(g,I){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(g)){var e=[],t=!0,C=!1,Q=void 0;try{for(var F,B=g[Symbol.iterator]();!(t=(F=B.next()).done)&&(e.push(F.value),!I||e.length!==I);t=!0);}catch(g){C=!0,Q=g}finally{try{t||null==B.return||B.return()}finally{if(C)throw Q}}return e}}(g,I)||function(g,I){if(g){if("string"==typeof g)return c(g,I);var e=Object.prototype.toString.call(g).slice(8,-1);return"Object"===e&&g.constructor&&(e=g.constructor.name),"Map"===e||"Set"===e?Array.from(e):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?c(g,I):void 0}}(g,I)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(g,I){(null==I||I>g.length)&&(I=g.length);for(var e=0,t=new Array(I);e<I;e++)t[e]=g[e];return t}var A=function(g){var I=g.delay,e=g.copyTitle,B=g.copyBody,c=g.copyAddHomeButtonLabel,A=g.copyShareButtonLabel,l=g.copyClosePrompt,a=g.permanentlyHideOnDismiss,r=g.promptData,o=g.maxVisits,d=g.onClose,u=i(Object(t.useState)(!Boolean(I)),2),y=u[0],b=u[1];Object(t.useEffect)((function(){I&&setTimeout((function(){document.activeElement&&document.activeElement.blur(),b(!0)}),I)}),[]),Object(t.useEffect)((function(){y&&document.body.classList.add(n.a.noScroll)}),[y]);var Z=/OS (13|14)/.test(window.navigator.userAgent),m=y?n.a.visible:n.a.hidden,x=Z?n.a.modern:"legacy",R=function(g){document.body.classList.remove(n.a.noScroll),b(!1),a&&localStorage.setItem("iosPwaPrompt",JSON.stringify(function(g){for(var I=1;I<arguments.length;I++){var e=null!=arguments[I]?arguments[I]:{};I%2?U(Object(e),!0).forEach((function(I){s(g,I,e[I])})):Object.getOwnPropertyDescriptors?Object.defineProperties(g,Object.getOwnPropertyDescriptors(e)):U(Object(e)).forEach((function(I){Object.defineProperty(g,I,Object.getOwnPropertyDescriptor(e,I))}))}return g}({},r,{visits:o}))),"function"==typeof d&&d(g)},S=function(g){y||(g.currentTarget.style.display="none")};return C.a.createElement(t.Fragment,null,C.a.createElement("div",{className:"".concat(n.a.pwaPromptOverlay," ").concat(m," ").concat(x," iOSPWA-overlay"),"aria-label":"Close",role:"button",onClick:R,onTransitionEnd:S}),C.a.createElement("div",{className:"".concat(n.a.pwaPrompt," ").concat(m," ").concat(x," iOSPWA-container"),"aria-describedby":"pwa-prompt-description","aria-labelledby":"pwa-prompt-title",role:"dialog",onTransitionEnd:S},C.a.createElement("div",{className:"".concat(n.a.pwaPromptHeader," iOSPWA-header")},C.a.createElement("p",{id:"pwa-prompt-title",className:"".concat(n.a.pwaPromptTitle," iOSPWA-title")},e),C.a.createElement("button",{className:"".concat(n.a.pwaPromptCancel," iOSPWA-cancel"),onClick:R},l)),C.a.createElement("div",{className:"".concat(n.a.pwaPromptBody," iOSPWA-body")},C.a.createElement("div",{className:"".concat(n.a.pwaPromptDescription," iOSPWA-description")},C.a.createElement("p",{id:"pwa-prompt-description",className:"".concat(n.a.pwaPromptCopy," iOSPWA-description-copy")},B))),C.a.createElement("div",{className:"".concat(n.a.pwaPromptInstruction," iOSPWA-steps")},C.a.createElement("div",{className:"".concat(n.a.pwaPromptInstructionStep," iOSPWA-step1")},C.a.createElement(Q,{className:"".concat(n.a.pwaPromptShareIcon," iOSPWA-step1-icon"),modern:Z}),C.a.createElement("p",{className:"".concat(n.a.pwaPromptCopy," ").concat(n.a.bold," iOSPWA-step1-copy")},A)),C.a.createElement("div",{className:"".concat(n.a.pwaPromptInstructionStep," iOSPWA-step2")},C.a.createElement(F,{className:"".concat(n.a.pwaPromptHomeIcon," iOSPWA-step2-icon"),modern:Z}),C.a.createElement("p",{className:"".concat(n.a.pwaPromptCopy," ").concat(n.a.bold," iOSPWA-step2-copy")},c)))))};function l(g,I){var e=Object.keys(g);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(g);I&&(t=t.filter((function(I){return Object.getOwnPropertyDescriptor(g,I).enumerable}))),e.push.apply(e,t)}return e}function a(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}I.default=function(g){var I,e,t,Q=g.timesToShow,F=void 0===Q?1:Q,B=g.promptOnVisit,n=void 0===B?1:B,U=g.permanentlyHideOnDismiss,s=void 0===U||U,i=g.copyTitle,c=void 0===i?"Add to Home Screen":i,r=g.copyBody,o=void 0===r?"This website has app functionality. Add it to your home screen to use it in fullscreen and while offline.":r,d=g.copyShareButtonLabel,u=void 0===d?"1) Press the 'Share' button on the menu bar below.":d,y=g.copyAddHomeButtonLabel,b=void 0===y?"2) Press 'Add to Home Screen'.":y,Z=g.copyClosePrompt,m=void 0===Z?"Cancel":Z,x=g.delay,R=void 0===x?1e3:x,S=g.debug,G=void 0!==S&&S,L=g.onClose,V=void 0===L?function(){}:L,h=JSON.parse(localStorage.getItem("iosPwaPrompt"));if(null===h&&(h={isiOS:(I=/iphone|ipad|ipod/.test(window.navigator.userAgent.toLowerCase()),e="MacIntel"===navigator.platform&&navigator.maxTouchPoints>1,t="standalone"in window.navigator&&window.navigator.standalone,(I||e)&&!t),visits:0},localStorage.setItem("iosPwaPrompt",JSON.stringify(h))),h.isiOS||G){var D=h.visits+1>=n;if((h.visits+1<n+F||G)&&(localStorage.setItem("iosPwaPrompt",JSON.stringify(function(g){for(var I=1;I<arguments.length;I++){var e=null!=arguments[I]?arguments[I]:{};I%2?l(Object(e),!0).forEach((function(I){a(g,I,e[I])})):Object.getOwnPropertyDescriptors?Object.defineProperties(g,Object.getOwnPropertyDescriptors(e)):l(Object(e)).forEach((function(I){Object.defineProperty(g,I,Object.getOwnPropertyDescriptor(e,I))}))}return g}({},h,{visits:h.visits+1}))),D||G))return C.a.createElement(A,{delay:R,copyTitle:c,copyBody:o,copyAddHomeButtonLabel:b,copyShareButtonLabel:u,copyClosePrompt:m,permanentlyHideOnDismiss:s,promptData:h,maxVisits:F+n,onClose:V})}return null}}]))}).call(this,e(67))},function(g,I,e){"use strict";e.d(I,"a",(function(){return K}));var t={};e.r(t),e.d(t,"Express",(function(){return v})),e.d(t,"Postgres",(function(){return Y})),e.d(t,"Mysql",(function(){return w})),e.d(t,"Mongo",(function(){return O}));var C=e(11),Q=e(66),F=e(108),B=e(256),n=e(295),U=e(107),s=e(52),i=Object(F.e)();var c,A,l=e(185),a=e(322),r=e(582),o=function(g,I,e,t){var C;return function(){e&&I.isFinal&&e.disconnect(),I.value>=0&&(t||I.isFinal||"hidden"===document.visibilityState)&&(I.delta=I.value-(C||0),(I.delta||I.isFinal||void 0===C)&&(g(I),C=I.value))}},d=function(g,I){return void 0===I&&(I=-1),{name:g,value:I,delta:0,entries:[],id:Date.now()+"-"+(Math.floor(8999999999999*Math.random())+1e12),isFinal:!1}},u=function(g,I){try{if(PerformanceObserver.supportedEntryTypes.includes(g)){var e=new PerformanceObserver((function(g){return g.getEntries().map(I)}));return e.observe({type:g,buffered:!0}),e}}catch(t){}},y=!1,b=!1,Z=function(g){y=!g.persisted},m=function(g,I){void 0===I&&(I=!1),b||(addEventListener("pagehide",Z),addEventListener("beforeunload",(function(){})),b=!0),addEventListener("visibilitychange",(function(I){var e=I.timeStamp;"hidden"===document.visibilityState&&g({timeStamp:e,isUnloading:y})}),{capture:!0,once:I})},x=function(){return void 0===c&&(c="hidden"===document.visibilityState?0:1/0,m((function(g){var I=g.timeStamp;return c=I}),!0)),{get timeStamp(){return c}}},R=function(g,I){void 0===I&&(I=!1);var e,t=d("LCP"),C=x(),Q=function(g){var I=g.startTime;I<C.timeStamp?(t.value=I,t.entries.push(g)):t.isFinal=!0,e()},F=u("largest-contentful-paint",Q);if(F){e=o(g,t,F,I);var B=function(){t.isFinal||(F.takeRecords().map(Q),t.isFinal=!0,e())};(A||(A=new Promise((function(g){return["scroll","keydown","pointerdown"].map((function(I){addEventListener(I,g,{once:!0,passive:!0,capture:!0})}))}))),A).then(B),m(B,!0)}},S=Object(F.e)(),G=function(){function g(){var g;this._measurements={},this._performanceCursor=0,!Object(l.b)()&&(null===(g=S)||void 0===g?void 0:g.performance)&&(S.performance.mark&&S.performance.mark("sentry-tracing-init"),this._trackCLS(),this._trackLCP(),this._trackFID())}return g.prototype.addPerformanceEntries=function(g){var I=this;if(S&&S.performance&&S.performance.getEntries&&a.a){Q.a.log("[Tracing] Adding & adjusting spans using Performance API");var e,t,C,F,B,n=Object(s.d)(a.a);if(S.document&&S.document.scripts)for(var U=0;U<S.document.scripts.length;U++)if("true"===S.document.scripts[U].dataset.entry){e=S.document.scripts[U].src;break}if(S.performance.getEntries().slice(this._performanceCursor).forEach((function(U){var i=Object(s.d)(U.startTime),c=Object(s.d)(U.duration);if(!("navigation"===g.op&&n+i<g.startTimestamp))switch(U.entryType){case"navigation":!function(g,I,e){L({transaction:g,entry:I,event:"unloadEvent",timeOrigin:e}),L({transaction:g,entry:I,event:"redirect",timeOrigin:e}),L({transaction:g,entry:I,event:"domContentLoadedEvent",timeOrigin:e}),L({transaction:g,entry:I,event:"loadEvent",timeOrigin:e}),L({transaction:g,entry:I,event:"connect",timeOrigin:e}),L({transaction:g,entry:I,event:"secureConnection",timeOrigin:e,eventEnd:"connectEnd",description:"TLS/SSL"}),L({transaction:g,entry:I,event:"fetch",timeOrigin:e,eventEnd:"domainLookupStart",description:"cache"}),L({transaction:g,entry:I,event:"domainLookup",timeOrigin:e,description:"DNS"}),function(g,I,e){V(g,{op:"browser",description:"request",startTimestamp:e+Object(s.d)(I.requestStart),endTimestamp:e+Object(s.d)(I.responseEnd)}),V(g,{op:"browser",description:"response",startTimestamp:e+Object(s.d)(I.responseStart),endTimestamp:e+Object(s.d)(I.responseEnd)})}(g,I,e)}(g,U,n),F=n+Object(s.d)(U.responseStart),B=n+Object(s.d)(U.requestStart);break;case"mark":case"paint":case"measure":var A=function(g,I,e,t,C){var Q=C+e,F=Q+t;return V(g,{description:I.name,endTimestamp:F,op:I.entryType,startTimestamp:Q}),Q}(g,U,i,c,n);void 0===C&&"sentry-tracing-init"===U.name&&(C=A);var l=x(),a=U.startTime<l.timeStamp;"first-paint"===U.name&&a&&(Q.a.log("[Measurements] Adding FP"),I._measurements.fp={value:U.startTime},I._measurements["mark.fp"]={value:A}),"first-contentful-paint"===U.name&&a&&(Q.a.log("[Measurements] Adding FCP"),I._measurements.fcp={value:U.startTime},I._measurements["mark.fcp"]={value:A});break;case"resource":var r=U.name.replace(window.location.origin,""),o=function(g,I,e,t,C,Q){if("xmlhttprequest"===I.initiatorType||"fetch"===I.initiatorType)return;var F={};"transferSize"in I&&(F["Transfer Size"]=I.transferSize);"encodedBodySize"in I&&(F["Encoded Body Size"]=I.encodedBodySize);"decodedBodySize"in I&&(F["Decoded Body Size"]=I.decodedBodySize);var B=Q+t,n=B+C;return V(g,{description:e,endTimestamp:n,op:I.initiatorType?"resource."+I.initiatorType:"resource",startTimestamp:B,data:F}),n}(g,U,r,i,c,n);void 0===t&&(e||"").indexOf(r)>-1&&(t=o)}})),void 0!==t&&void 0!==C&&V(g,{description:"evaluation",endTimestamp:C,op:"script",startTimestamp:t}),this._performanceCursor=Math.max(performance.getEntries().length-1,0),this._trackNavigator(g),"pageload"===g.op){var i=Object(s.d)(a.a);"number"===typeof F&&(Q.a.log("[Measurements] Adding TTFB"),this._measurements.ttfb={value:1e3*(F-g.startTimestamp)},"number"===typeof B&&B<=F&&(this._measurements["ttfb.requestTime"]={value:1e3*(F-B)})),["fcp","fp","lcp"].forEach((function(e){if(I._measurements[e]&&!(i>=g.startTimestamp)){var t=I._measurements[e].value,C=i+Object(s.d)(t),F=Math.abs(1e3*(C-g.startTimestamp)),B=F-t;Q.a.log("[Measurements] Normalized "+e+" from "+t+" to "+F+" ("+B+")"),I._measurements[e].value=F}})),this._measurements["mark.fid"]&&this._measurements.fid&&V(g,{description:"first input delay",endTimestamp:this._measurements["mark.fid"].value+Object(s.d)(this._measurements.fid.value),op:"web.vitals",startTimestamp:this._measurements["mark.fid"].value}),g.setMeasurements(this._measurements),this._tagMetricInfo(g)}}},g.prototype._tagMetricInfo=function(g){this._lcpEntry&&(Q.a.log("[Measurements] Adding LCP Data"),this._lcpEntry.element&&g.setTag("lcp.element",Object(r.a)(this._lcpEntry.element)),this._lcpEntry.id&&g.setTag("lcp.id",this._lcpEntry.id),this._lcpEntry.url&&g.setTag("lcp.url",this._lcpEntry.url.trim().slice(0,200)),g.setTag("lcp.size",this._lcpEntry.size)),this._clsEntry&&this._clsEntry.sources&&(Q.a.log("[Measurements] Adding CLS Data"),this._clsEntry.sources.map((function(I,e){return g.setTag("cls.source."+(e+1),Object(r.a)(I.node))})))},g.prototype._trackCLS=function(){var g=this;!function(g,I){void 0===I&&(I=!1);var e,t=d("CLS",0),C=function(g){g.hadRecentInput||(t.value+=g.value,t.entries.push(g),e())},Q=u("layout-shift",C);Q&&(e=o(g,t,Q,I),m((function(g){var I=g.isUnloading;Q.takeRecords().map(C),I&&(t.isFinal=!0),e()})))}((function(I){var e=I.entries.pop();e&&(Q.a.log("[Measurements] Adding CLS"),g._measurements.cls={value:I.value},g._clsEntry=e)}))},g.prototype._trackNavigator=function(g){var I=S.navigator;if(I){var e=I.connection;e&&(e.effectiveType&&g.setTag("effectiveConnectionType",e.effectiveType),e.type&&g.setTag("connectionType",e.type),h(e.rtt)&&(this._measurements["connection.rtt"]={value:e.rtt}),h(e.downlink)&&(this._measurements["connection.downlink"]={value:e.downlink})),h(I.deviceMemory)&&g.setTag("deviceMemory",String(I.deviceMemory)),h(I.hardwareConcurrency)&&g.setTag("hardwareConcurrency",String(I.hardwareConcurrency))}},g.prototype._trackLCP=function(){var g=this;R((function(I){var e=I.entries.pop();if(e){var t=Object(s.d)(a.a),C=Object(s.d)(e.startTime);Q.a.log("[Measurements] Adding LCP"),g._measurements.lcp={value:I.value},g._measurements["mark.lcp"]={value:t+C},g._lcpEntry=e}}))},g.prototype._trackFID=function(){var g=this;!function(g){var I=d("FID"),e=x(),t=function(g){g.startTime<e.timeStamp&&(I.value=g.processingStart-g.startTime,I.entries.push(g),I.isFinal=!0,Q())},C=u("first-input",t),Q=o(g,I,C);C?m((function(){C.takeRecords().map(t),C.disconnect()}),!0):window.perfMetrics&&window.perfMetrics.onFirstInputDelay&&window.perfMetrics.onFirstInputDelay((function(g,t){t.timeStamp<e.timeStamp&&(I.value=g,I.isFinal=!0,I.entries=[{entryType:"first-input",name:t.type,target:t.target,cancelable:t.cancelable,startTime:t.timeStamp,processingStart:t.timeStamp+g}],Q())}))}((function(I){var e=I.entries.pop();if(e){var t=Object(s.d)(a.a),C=Object(s.d)(e.startTime);Q.a.log("[Measurements] Adding FID"),g._measurements.fid={value:I.value},g._measurements["mark.fid"]={value:t+C}}}))},g}();function L(g){var I=g.transaction,e=g.entry,t=g.event,C=g.timeOrigin,Q=g.eventEnd,F=g.description,B=Q?e[Q]:e[t+"End"],n=e[t+"Start"];n&&B&&V(I,{op:"browser",description:null!==F&&void 0!==F?F:t,startTimestamp:C+Object(s.d)(n),endTimestamp:C+Object(s.d)(B)})}function V(g,I){var e=I.startTimestamp,t=Object(C.d)(I,["startTimestamp"]);return e&&g.startTimestamp>e&&(g.startTimestamp=e),g.startChild(Object(C.a)({startTimestamp:e},t))}function h(g){return"number"===typeof g&&isFinite(g)}var D=e(267),p=e(927),E=e(75),N={traceFetch:!0,traceXHR:!0,tracingOrigins:["localhost",/^\//]};function W(g){var I=Object(C.a)(Object(C.a)({},N),g),e=I.traceFetch,t=I.traceXHR,Q=I.tracingOrigins,F=I.shouldCreateSpanForRequest,B={},n=function(g){if(B[g])return B[g];var I=Q;return B[g]=I.some((function(I){return Object(D.a)(g,I)}))&&!Object(D.a)(g,"sentry_key"),B[g]},i=n;"function"===typeof F&&(i=function(g){return n(g)&&F(g)});var c={};e&&Object(p.a)({callback:function(g){!function(g,I,e){if(!Object(s.c)()||!g.fetchData||!I(g.fetchData.url))return;if(g.endTimestamp&&g.fetchData.__span){return void((Q=e[g.fetchData.__span])&&(g.response?Q.setHttpStatus(g.response.status):g.error&&Q.setStatus(U.a.InternalError),Q.finish(),delete e[g.fetchData.__span]))}var t=Object(s.b)();if(t){var Q=t.startChild({data:Object(C.a)(Object(C.a)({},g.fetchData),{type:"fetch"}),description:g.fetchData.method+" "+g.fetchData.url,op:"http"});g.fetchData.__span=Q.spanId,e[Q.spanId]=Q;var F=g.args[0]=g.args[0],B=g.args[1]=g.args[1]||{},n=B.headers;Object(E.g)(F,Request)&&(n=F.headers),n?"function"===typeof n.append?n.append("sentry-trace",Q.toTraceparent()):n=Array.isArray(n)?Object(C.e)(n,[["sentry-trace",Q.toTraceparent()]]):Object(C.a)(Object(C.a)({},n),{"sentry-trace":Q.toTraceparent()}):n={"sentry-trace":Q.toTraceparent()},B.headers=n}}(g,i,c)},type:"fetch"}),t&&Object(p.a)({callback:function(g){!function(g,I,e){var t,Q;if(!Object(s.c)()||(null===(t=g.xhr)||void 0===t?void 0:t.__sentry_own_request__)||!(null===(Q=g.xhr)||void 0===Q?void 0:Q.__sentry_xhr__)||!I(g.xhr.__sentry_xhr__.url))return;var F=g.xhr.__sentry_xhr__;if(g.endTimestamp&&g.xhr.__sentry_xhr_span_id__){return void((n=e[g.xhr.__sentry_xhr_span_id__])&&(n.setHttpStatus(F.status_code),n.finish(),delete e[g.xhr.__sentry_xhr_span_id__]))}var B=Object(s.b)();if(B){var n=B.startChild({data:Object(C.a)(Object(C.a)({},F.data),{type:"xhr",method:F.method,url:F.url}),description:F.method+" "+F.url,op:"http"});if(g.xhr.__sentry_xhr_span_id__=n.spanId,e[g.xhr.__sentry_xhr_span_id__]=n,g.xhr.setRequestHeader)try{g.xhr.setRequestHeader("sentry-trace",n.toTraceparent())}catch(U){}}}(g,i,c)},type:"xhr"})}var f=Object(F.e)();var X=Object(C.a)({idleTimeout:n.a,markBackgroundTransactions:!0,maxTransactionDuration:600,routingInstrumentation:function(g,I,e){if(void 0===I&&(I=!0),void 0===e&&(e=!0),f&&f.location){var t,C=f.location.href;I&&(t=g({name:f.location.pathname,op:"pageload"})),e&&Object(p.a)({callback:function(I){var e=I.to,F=I.from;void 0===F&&C&&-1!==C.indexOf(e)?C=void 0:F!==e&&(C=void 0,t&&(Q.a.log("[Tracing] Finishing current transaction with op: "+t.op),t.finish()),t=g({name:f.location.pathname,op:"navigation"}))},type:"history"})}else Q.a.warn("Could not initialize routing instrumentation due to invalid location")},startTransactionOnLocationChange:!0,startTransactionOnPageLoad:!0},N),J=function(){function g(I){this.name=g.id,this._metrics=new G,this._emitOptionsWarning=!1;var e=N.tracingOrigins;I&&I.tracingOrigins&&Array.isArray(I.tracingOrigins)&&0!==I.tracingOrigins.length?e=I.tracingOrigins:this._emitOptionsWarning=!0,this.options=Object(C.a)(Object(C.a)(Object(C.a)({},X),I),{tracingOrigins:e})}return g.prototype.setupOnce=function(g,I){var e=this;this._getCurrentHub=I,this._emitOptionsWarning&&(Q.a.warn("[Tracing] You need to define `tracingOrigins` in the options. Set an array of urls or patterns to trace."),Q.a.warn("[Tracing] We added a reasonable default for you: "+N.tracingOrigins));var t=this.options,C=t.routingInstrumentation,F=t.startTransactionOnLocationChange,B=t.startTransactionOnPageLoad,n=t.markBackgroundTransactions,c=t.traceFetch,A=t.traceXHR,l=t.tracingOrigins,a=t.shouldCreateSpanForRequest;C((function(g){return e._createRouteTransaction(g)}),B,F),n&&(i&&i.document?i.document.addEventListener("visibilitychange",(function(){var g=Object(s.b)();i.document.hidden&&g&&(Q.a.log("[Tracing] Transaction: "+U.a.Cancelled+" -> since tab moved to the background, op: "+g.op),g.status||g.setStatus(U.a.Cancelled),g.setTag("visibilitychange","document.hidden"),g.finish())})):Q.a.warn("[Tracing] Could not set up background tab detection due to lack of global document")),W({traceFetch:c,traceXHR:A,tracingOrigins:l,shouldCreateSpanForRequest:a})},g.prototype._createRouteTransaction=function(g){var I=this;if(this._getCurrentHub){var e=this.options,t=e.beforeNavigate,n=e.idleTimeout,i=e.maxTransactionDuration,c="pageload"===g.op?function(){var g=function(g){var I=document.querySelector("meta[name="+g+"]");return I?I.getAttribute("content"):null}("sentry-trace");if(g)return Object(s.a)(g);return}():void 0,A=Object(C.a)(Object(C.a)(Object(C.a)({},g),c),{trimEnd:!0}),l="function"===typeof t?t(A):A,a=void 0===l?Object(C.a)(Object(C.a)({},A),{sampled:!1}):l;!1===a.sampled&&Q.a.log("[Tracing] Will not send "+a.op+" transaction because of beforeNavigate."),Q.a.log("[Tracing] Starting "+a.op+" transaction on scope");var r=this._getCurrentHub(),o=Object(F.e)().location,d=Object(B.b)(r,a,n,!0,{location:o});return d.registerBeforeFinishCallback((function(g,e){I._metrics.addPerformanceEntries(g),function(g,I,e){var t=e-I.startTimestamp;e&&(t>g||t<0)&&(I.setStatus(U.a.DeadlineExceeded),I.setTag("maxTransactionDurationExceeded","true"))}(Object(s.e)(i),g,e)})),d}Q.a.warn("[Tracing] Did not create "+g.op+" transaction because _getCurrentHub is invalid.")},g.id="BrowserTracing",g}();var v=function(){function g(I){void 0===I&&(I={}),this.name=g.id,this._router=I.router||I.app,this._methods=(Array.isArray(I.methods)?I.methods:[]).concat("use")}return g.prototype.setupOnce=function(){this._router?function(g,I){void 0===I&&(I=[]);I.forEach((function(I){return function(g,I){var e=g[I];return g[I]=function(){for(var g=[],t=0;t<arguments.length;t++)g[t]=arguments[t];return e.call.apply(e,Object(C.e)([this],H(g,I)))},g}(g,I)}))}(this._router,this._methods):Q.a.error("ExpressIntegration is missing an Express instance")},g.id="Express",g}();function k(g,I){var e=g.length;switch(e){case 2:return function(e,t){var C=t.__sentry_transaction;if(C){var Q=C.startChild({description:g.name,op:"middleware."+I});t.once("finish",(function(){Q.finish()}))}return g.call(this,e,t)};case 3:return function(e,t,Q){var F,B=null===(F=t.__sentry_transaction)||void 0===F?void 0:F.startChild({description:g.name,op:"middleware."+I});g.call(this,e,t,(function(){for(var g,I=[],e=0;e<arguments.length;e++)I[e]=arguments[e];null===(g=B)||void 0===g||g.finish(),Q.call.apply(Q,Object(C.e)([this],I))}))};case 4:return function(e,t,Q,F){var B,n=null===(B=Q.__sentry_transaction)||void 0===B?void 0:B.startChild({description:g.name,op:"middleware."+I});g.call(this,e,t,Q,(function(){for(var g,I=[],e=0;e<arguments.length;e++)I[e]=arguments[e];null===(g=n)||void 0===g||g.finish(),F.call.apply(F,Object(C.e)([this],I))}))};default:throw new Error("Express middleware takes 2-4 arguments. Got: "+e)}}function H(g,I){return g.map((function(g){return"function"===typeof g?k(g,I):Array.isArray(g)?g.map((function(g){return"function"===typeof g?k(g,I):g})):g}))}var M=e(143),Y=function(){function g(){this.name=g.id}return g.prototype.setupOnce=function(g,I){var e=Object(l.c)("pg");e?Object(M.c)(e.Client.prototype,"query",(function(g){return function(e,t,C){var Q,F,B,n=null===(F=null===(Q=I().getScope())||void 0===Q?void 0:Q.getSpan())||void 0===F?void 0:F.startChild({description:"string"===typeof e?e:e.text,op:"db"});if("function"===typeof C)return g.call(this,e,t,(function(g,I){var e;null===(e=n)||void 0===e||e.finish(),C(g,I)}));if("function"===typeof t)return g.call(this,e,(function(g,I){var e;null===(e=n)||void 0===e||e.finish(),t(g,I)}));var U="undefined"!==typeof t?g.call(this,e,t):g.call(this,e);return Object(E.m)(U)?U.then((function(g){var I;return null===(I=n)||void 0===I||I.finish(),g})):(null===(B=n)||void 0===B||B.finish(),U)}})):Q.a.error("Postgres Integration was unable to require `pg` package.")},g.id="Postgres",g}(),w=function(){function g(){this.name=g.id}return g.prototype.setupOnce=function(g,I){var e=Object(l.c)("mysql/lib/Connection.js");e?Object(M.c)(e,"createQuery",(function(g){return function(e,t,C){var Q,F,B=null===(F=null===(Q=I().getScope())||void 0===Q?void 0:Q.getSpan())||void 0===F?void 0:F.startChild({description:"string"===typeof e?e:e.sql,op:"db"});return"function"===typeof C?g.call(this,e,t,(function(g,I,e){var t;null===(t=B)||void 0===t||t.finish(),C(g,I,e)})):"function"===typeof t?g.call(this,e,(function(g,I,e){var C;null===(C=B)||void 0===C||C.finish(),t(g,I,e)})):g.call(this,e,t,C)}})):Q.a.error("Mysql Integration was unable to require `mysql` package.")},g.id="Mysql",g}(),T=["aggregate","bulkWrite","countDocuments","createIndex","createIndexes","deleteMany","deleteOne","distinct","drop","dropIndex","dropIndexes","estimatedDocumentCount","find","findOne","findOneAndDelete","findOneAndReplace","findOneAndUpdate","indexes","indexExists","indexInformation","initializeOrderedBulkOp","insertMany","insertOne","isCapped","mapReduce","options","parallelCollectionScan","rename","replaceOne","stats","updateMany","updateOne"],z={bulkWrite:["operations"],countDocuments:["query"],createIndex:["fieldOrSpec"],createIndexes:["indexSpecs"],deleteMany:["filter"],deleteOne:["filter"],distinct:["key","query"],dropIndex:["indexName"],find:["query"],findOne:["query"],findOneAndDelete:["filter"],findOneAndReplace:["filter","replacement"],findOneAndUpdate:["filter","update"],indexExists:["indexes"],insertMany:["docs"],insertOne:["doc"],mapReduce:["map","reduce"],rename:["newName"],replaceOne:["filter","doc"],updateMany:["filter","update"],updateOne:["filter","update"]},O=function(){function g(I){void 0===I&&(I={}),this.name=g.id,this._operations=Array.isArray(I.operations)?I.operations:T,this._describeOperations=!("describeOperations"in I)||I.describeOperations,this._useMongoose=!!I.useMongoose}return g.prototype.setupOnce=function(g,I){var e=this._useMongoose?"mongoose":"mongodb",t=Object(l.c)(e);t?this._instrumentOperations(t.Collection,this._operations,I):Q.a.error("Mongo Integration was unable to require `"+e+"` package.")},g.prototype._instrumentOperations=function(g,I,e){var t=this;I.forEach((function(I){return t._patchOperation(g,I,e)}))},g.prototype._patchOperation=function(g,I,e){if(I in g.prototype){var t=this._getSpanContextFromOperationArguments.bind(this);Object(M.c)(g.prototype,I,(function(g){return function(){for(var Q,F,B,n,U=[],s=0;s<arguments.length;s++)U[s]=arguments[s];var i=U[U.length-1],c=e().getScope(),A=null===(Q=c)||void 0===Q?void 0:Q.getSpan();if("function"!==typeof i||"mapReduce"===I&&2===U.length){var l=null===(F=A)||void 0===F?void 0:F.startChild(t(this,I,U)),a=g.call.apply(g,Object(C.e)([this],U));return Object(E.m)(a)?a.then((function(g){var I;return null===(I=l)||void 0===I||I.finish(),g})):(null===(B=l)||void 0===B||B.finish(),a)}var r=null===(n=A)||void 0===n?void 0:n.startChild(t(this,I,U.slice(0,-1)));return g.call.apply(g,Object(C.e)([this],U.slice(0,-1),[function(g,I){var e;null===(e=r)||void 0===e||e.finish(),i(g,I)}]))}}))}},g.prototype._getSpanContextFromOperationArguments=function(g,I,e){var t={collectionName:g.collectionName,dbName:g.dbName,namespace:g.namespace},Q={op:"db",description:I,data:t},F=z[I],B=Array.isArray(this._describeOperations)?this._describeOperations.includes(I):this._describeOperations;if(!F||!B)return Q;try{if("mapReduce"===I){var n=Object(C.c)(e,2),U=n[0],s=n[1];t[F[0]]="string"===typeof U?U:U.name||"<anonymous>",t[F[1]]="string"===typeof s?s:s.name||"<anonymous>"}else for(var i=0;i<F.length;i++)t[F[i]]=JSON.stringify(e[i])}catch(c){}return Q},g.id="Mongo",g}(),K=Object(C.a)(Object(C.a)({},t),{BrowserTracing:J});Object(B.a)()},function(g,I,e){"use strict";var t=e(808),C=e.n(t),Q=e(237);function F(g){return(F="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"===typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g})(g)}function B(g){return"function"===typeof g}function n(g){return"string"===typeof g}function U(g){if("object"!==F(g)||null===g)return!1;for(var I=g;null!==Object.getPrototypeOf(I);)I=Object.getPrototypeOf(I);return Object.getPrototypeOf(g)===I}function s(g){try{return decodeURIComponent(g.replace(/\+/g," "))}catch(I){return null}}var i="undefined"!==typeof document;function c(g){var I=function(g){if(g){var I=g.match(/\?(.*)/);return I&&I[1]?I[1].split("#")[0]:""}return i&&window.location.search.substring(1)}(g);return I?function(g){var I,e=/([^&=]+)=?([^&]*)/g,t={};for(;I=e.exec(g);){var C=s(I[1]),Q=s(I[2]);if("[]"===C.substring(C.length-2))C=C.substring(0,C.length-2),(t[C]||(t[C]=[])).push(Q);else{var F=""===Q||Q;t[C]=F}}for(var B in t){var n=B.split("[");if(n.length>1){var U=[];n.forEach((function(g,I){var e=g.replace(/[?[\]\\ ]/g,"");U.push(e)})),A(t,U,t[B]),delete t[B]}}return t}(I):{}}function A(g,I,e){for(var t=I.length-1,C=0;C<t;++C){var Q=I[C];Q in g||(g[Q]={}),g=g[Q]}g[I[t]]=e}function l(){for(var g=[],I=0;I<256;I++)g[I]=(I<16?"0":"")+I.toString(16);return function(){var I=a(),e=a(),t=a(),C=a();return"".concat(g[255&I]+g[I>>8&255]+g[I>>16&255]+g[I>>24&255],"-").concat(g[255&e]).concat(g[e>>8&255],"-").concat(g[e>>16&15|64]).concat(g[e>>24&255],"-").concat(g[63&t|128]).concat(g[t>>8&255],"-").concat(g[t>>16&255]).concat(g[t>>24&255]).concat(g[255&C]).concat(g[C>>8&255]).concat(g[C>>16&255]).concat(g[C>>24&255])}()}function a(){return 4294967295*Math.random()|0}var r=function(g){if(Array.isArray(g)){for(var I=0,e=new Array(g.length);I<g.length;I++)e[I]=g[I];return e}};var o=function(g){if(Symbol.iterator in Object(g)||"[object Arguments]"===Object.prototype.toString.call(g))return Array.from(g)};var d=function(){throw new TypeError("Invalid attempt to spread non-iterable instance")};var u=function(g){return r(g)||o(g)||d()};function y(g,I){return g(I={exports:{}},I.exports),I.exports}var b=y((function(g){function I(g){return(I="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"===typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g})(g)}function e(t){return"function"===typeof Symbol&&"symbol"===I(Symbol.iterator)?g.exports=e=function(g){return I(g)}:g.exports=e=function(g){return g&&"function"===typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":I(g)},e(t)}g.exports=e}));var Z=function(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g};function m(g,I){var e=Object.keys(g);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(g);I&&(t=t.filter((function(I){return Object.getOwnPropertyDescriptor(g,I).enumerable}))),e.push.apply(e,t)}return e}var x=function(g){for(var I=1;I<arguments.length;I++){var e=null!=arguments[I]?arguments[I]:{};I%2?m(e,!0).forEach((function(I){Z(g,I,e[I])})):Object.getOwnPropertyDescriptors?Object.defineProperties(g,Object.getOwnPropertyDescriptors(e)):m(e).forEach((function(I){Object.defineProperty(g,I,Object.getOwnPropertyDescriptor(e,I))}))}return g},R="function",S="undefined",G="@@redux/"+Math.random().toString(36),L=function(){return("undefined"===typeof Symbol?"undefined":b(Symbol))===R&&Symbol.observable||"@@observable"}(),V=" != "+R;function h(g,I,e){if(b(I)===R&&b(e)===S&&(e=I,I=void 0),b(e)!==S){if(b(e)!==R)throw new Error("enhancer"+V);return e(h)(g,I)}if(b(g)!==R)throw new Error("reducer"+V);var t=g,C=I,Q=[],F=Q,B=!1;function n(){F===Q&&(F=Q.slice())}function s(){return C}function i(g){if(b(g)!==R)throw new Error("Listener"+V);var I=!0;return n(),F.push(g),function(){if(I){I=!1,n();var e=F.indexOf(g);F.splice(e,1)}}}function c(g){if(!U(g))throw new Error("Act != obj");if(b(g.type)===S)throw new Error("ActType "+S);if(B)throw new Error("Dispatch in reducer");try{B=!0,C=t(C,g)}finally{B=!1}for(var I=Q=F,e=0;e<I.length;e++){(0,I[e])()}return g}return c({type:"@@redux/INIT"}),Z({dispatch:c,subscribe:i,getState:s,replaceReducer:function(g){if(b(g)!==R)throw new Error("next reducer"+V);t=g,c({type:"@@redux/INIT"})}},L,(function(){var g=i;return Z({subscribe:function(I){if("object"!==b(I))throw new TypeError("Observer != obj");function e(){I.next&&I.next(s())}return e(),{unsubscribe:g(e)}}},L,(function(){return this}))}))}function D(g,I){var e=I&&I.type;return"action "+(e&&e.toString()||"?")+"reducer "+g+" returns "+S}function p(g){for(var I=Object.keys(g),e={},t=0;t<I.length;t++){var C=I[t];b(g[C])===R&&(e[C]=g[C])}var Q,F=Object.keys(e);try{!function(g){Object.keys(g).forEach((function(I){var e=g[I],t=e(void 0,{type:"@@redux/INIT"});if(b(t)===S||b(e(void 0,{type:G}))===S)throw new Error("reducer "+I+" "+S)}))}(e)}catch(B){Q=B}return function(){var g=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},I=arguments.length>1?arguments[1]:void 0;if(Q)throw Q;for(var t=!1,C={},B=0;B<F.length;B++){var n=F[B],U=e[n],s=g[n],i=U(s,I);if(b(i)===S){var c=D(n,I);throw new Error(c)}C[n]=i,t=t||i!==s}return t?C:g}}function E(){for(var g=arguments.length,I=new Array(g),e=0;e<g;e++)I[e]=arguments[e];return 0===I.length?function(g){return g}:1===I.length?I[0]:I.reduce((function(g,I){return function(){return g(I.apply(void 0,arguments))}}))}function N(){for(var g=arguments.length,I=new Array(g),e=0;e<g;e++)I[e]=arguments[e];return function(g){return function(e,t,C){var Q,F=g(e,t,C),B=F.dispatch,n={getState:F.getState,dispatch:function(g){return B(g)}};return Q=I.map((function(g){return g(n)})),B=E.apply(void 0,u(Q))(F.dispatch),x(x({},F),{},{dispatch:B})}}}var W=["bootstrap","params","campaign","initializeStart","initialize","initializeEnd","ready","resetStart","reset","resetEnd","pageStart","page","pageEnd","pageAborted","trackStart","track","trackEnd","trackAborted","identifyStart","identify","identifyEnd","identifyAborted","userIdChanged","registerPlugins","enablePlugin","disablePlugin","loadPlugin","online","offline","setItemStart","setItem","setItemEnd","setItemAborted","removeItemStart","removeItem","removeItemEnd","removeItemAborted"],f=["name","EVENTS","config","loaded"],X=W.reduce((function(g,I){return g[I]=I,g}),{registerPluginType:function(g){return"registerPlugin:".concat(g)},pluginReadyType:function(g){return"ready:".concat(g)}});function J(g){return W.includes(g)}var v="__anon_id",k="__user_id",H="__user_traits",M=/^utm_/,Y=/^an_prop_/,w=/^an_trait_/;function T(g){var I=g.storage,e=I.setItem,t=I.getItem;return function(I){return function(C){return function(Q){if(Q.type===X.bootstrap){var F=Q.params,B=Q.user;t(v)||e(v,B.anonymousId);var n=Object.keys(Q.params);if(n.length){var U=F.an_uid,s=F.an_event,i=n.reduce((function(g,I){if(I.match(M)||I.match(/^(d|g)clid/)){var e=I.replace(M,""),t="campaign"===e?"name":e;g.campaign[t]=F[I]}return I.match(Y)&&(g.props[I.replace(Y,"")]=F[I]),I.match(w)&&(g.traits[I.replace(w,"")]=F[I]),g}),{campaign:{},props:{},traits:{}});I.dispatch(x(x({type:X.params,raw:F},i),U?{userId:U}:{})),U&&setTimeout((function(){return g.identify(U,i.traits)}),0),s&&setTimeout((function(){return g.track(s,i.props)}),0),Object.keys(i.campaign).length&&I.dispatch({type:X.campaign,campaign:i.campaign})}}return C(Q)}}}}var z="userId",O="anonymousId",K=["enable","disable","load"];function j(g){return function(){var I=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0;if(e&&e.type===X.setItemEnd&&e.key===v)return Object.assign({},I,{anonymousId:e.value});switch(e.type){case X.identify:return Object.assign({},I,{userId:e.userId,traits:x(x({},I.traits),e.traits)});case X.reset:return[z,O,"traits"].forEach((function(g){Q.b[_(g)]=null})),[k,v,H].forEach((function(I){g.removeItem(I)})),Object.assign({},I,{userId:null,anonymousId:null,traits:{}});default:return I}}}function P(g,I){return{userId:I.getItem(k)||g.an_uid,anonymousId:I.getItem(v)||g.an_aid||l(),traits:I.getItem(H)||{}}}var _=function(g){return"__TEMP__"+g};function q(g){return function(I,e,t){var C=e.getState("user")[I];if(C)return C;if(t&&U(t)&&t[I])return t[I];var F=P({},g)[I];return F||(Q.b[_(I)]?Q.b[_(I)]:null)}}function $(g){var I=g.storage,e=I.setItem,t=I.removeItem,C=I.getItem;return function(g){return function(I){return function(F){var n=F.userId,U=F.traits,s=F.options,i=F.callback;if(F.type===X.reset&&([k,H,v].forEach((function(g){return t(g)})),[z,O,"traits"].forEach((function(g){Q.b[_(g)]=void 0})),B(i)&&i()),F.type===X.identify){C(v)||e(v,l());var c=C(k),A=C(H)||{};c&&c!==n&&g.dispatch({type:X.userIdChanged,old:{userId:c,traits:A},new:{userId:n,traits:U},options:s}),n&&e(k,n),U&&e(H,x(x({},A),U))}return I(F)}}}}var gg=y((function(g){var I=function(g){var I=Object.prototype,e=I.hasOwnProperty,t="function"===typeof Symbol?Symbol:{},C=t.iterator||"@@iterator",Q=t.asyncIterator||"@@asyncIterator",F=t.toStringTag||"@@toStringTag";function B(g,I,e,t){var C=I&&I.prototype instanceof s?I:s,Q=Object.create(C.prototype),F=new Z(t||[]);return Q._invoke=function(g,I,e){var t="suspendedStart";return function(C,Q){if("executing"===t)throw new Error("Generator is already running");if("completed"===t){if("throw"===C)throw Q;return x()}for(e.method=C,e.arg=Q;;){var F=e.delegate;if(F){var B=u(F,e);if(B){if(B===U)continue;return B}}if("next"===e.method)e.sent=e._sent=e.arg;else if("throw"===e.method){if("suspendedStart"===t)throw t="completed",e.arg;e.dispatchException(e.arg)}else"return"===e.method&&e.abrupt("return",e.arg);t="executing";var s=n(g,I,e);if("normal"===s.type){if(t=e.done?"completed":"suspendedYield",s.arg===U)continue;return{value:s.arg,done:e.done}}"throw"===s.type&&(t="completed",e.method="throw",e.arg=s.arg)}}}(g,e,F),Q}function n(g,I,e){try{return{type:"normal",arg:g.call(I,e)}}catch(t){return{type:"throw",arg:t}}}g.wrap=B;var U={};function s(){}function i(){}function c(){}var A={};A[C]=function(){return this};var l=Object.getPrototypeOf,a=l&&l(l(m([])));a&&a!==I&&e.call(a,C)&&(A=a);var r=c.prototype=s.prototype=Object.create(A);function o(g){["next","throw","return"].forEach((function(I){g[I]=function(g){return this._invoke(I,g)}}))}function d(g,I){var t;this._invoke=function(C,Q){function F(){return new I((function(t,F){!function t(C,Q,F,B){var U=n(g[C],g,Q);if("throw"!==U.type){var s=U.arg,i=s.value;return i&&"object"===typeof i&&e.call(i,"__await")?I.resolve(i.__await).then((function(g){t("next",g,F,B)}),(function(g){t("throw",g,F,B)})):I.resolve(i).then((function(g){s.value=g,F(s)}),(function(g){return t("throw",g,F,B)}))}B(U.arg)}(C,Q,t,F)}))}return t=t?t.then(F,F):F()}}function u(g,I){var e=g.iterator[I.method];if(void 0===e){if(I.delegate=null,"throw"===I.method){if(g.iterator.return&&(I.method="return",I.arg=void 0,u(g,I),"throw"===I.method))return U;I.method="throw",I.arg=new TypeError("The iterator does not provide a 'throw' method")}return U}var t=n(e,g.iterator,I.arg);if("throw"===t.type)return I.method="throw",I.arg=t.arg,I.delegate=null,U;var C=t.arg;return C?C.done?(I[g.resultName]=C.value,I.next=g.nextLoc,"return"!==I.method&&(I.method="next",I.arg=void 0),I.delegate=null,U):C:(I.method="throw",I.arg=new TypeError("iterator result is not an object"),I.delegate=null,U)}function y(g){var I={tryLoc:g[0]};1 in g&&(I.catchLoc=g[1]),2 in g&&(I.finallyLoc=g[2],I.afterLoc=g[3]),this.tryEntries.push(I)}function b(g){var I=g.completion||{};I.type="normal",delete I.arg,g.completion=I}function Z(g){this.tryEntries=[{tryLoc:"root"}],g.forEach(y,this),this.reset(!0)}function m(g){if(g){var I=g[C];if(I)return I.call(g);if("function"===typeof g.next)return g;if(!isNaN(g.length)){var t=-1,Q=function I(){for(;++t<g.length;)if(e.call(g,t))return I.value=g[t],I.done=!1,I;return I.value=void 0,I.done=!0,I};return Q.next=Q}}return{next:x}}function x(){return{value:void 0,done:!0}}return i.prototype=r.constructor=c,c.constructor=i,c[F]=i.displayName="GeneratorFunction",g.isGeneratorFunction=function(g){var I="function"===typeof g&&g.constructor;return!!I&&(I===i||"GeneratorFunction"===(I.displayName||I.name))},g.mark=function(g){return Object.setPrototypeOf?Object.setPrototypeOf(g,c):(g.__proto__=c,F in g||(g[F]="GeneratorFunction")),g.prototype=Object.create(r),g},g.awrap=function(g){return{__await:g}},o(d.prototype),d.prototype[Q]=function(){return this},g.AsyncIterator=d,g.async=function(I,e,t,C,Q){void 0===Q&&(Q=Promise);var F=new d(B(I,e,t,C),Q);return g.isGeneratorFunction(e)?F:F.next().then((function(g){return g.done?g.value:F.next()}))},o(r),r[F]="Generator",r[C]=function(){return this},r.toString=function(){return"[object Generator]"},g.keys=function(g){var I=[];for(var e in g)I.push(e);return I.reverse(),function e(){for(;I.length;){var t=I.pop();if(t in g)return e.value=t,e.done=!1,e}return e.done=!0,e}},g.values=m,Z.prototype={constructor:Z,reset:function(g){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(b),!g)for(var I in this)"t"===I.charAt(0)&&e.call(this,I)&&!isNaN(+I.slice(1))&&(this[I]=void 0)},stop:function(){this.done=!0;var g=this.tryEntries[0].completion;if("throw"===g.type)throw g.arg;return this.rval},dispatchException:function(g){if(this.done)throw g;var I=this;function t(e,t){return F.type="throw",F.arg=g,I.next=e,t&&(I.method="next",I.arg=void 0),!!t}for(var C=this.tryEntries.length-1;C>=0;--C){var Q=this.tryEntries[C],F=Q.completion;if("root"===Q.tryLoc)return t("end");if(Q.tryLoc<=this.prev){var B=e.call(Q,"catchLoc"),n=e.call(Q,"finallyLoc");if(B&&n){if(this.prev<Q.catchLoc)return t(Q.catchLoc,!0);if(this.prev<Q.finallyLoc)return t(Q.finallyLoc)}else if(B){if(this.prev<Q.catchLoc)return t(Q.catchLoc,!0)}else{if(!n)throw new Error("try statement without catch or finally");if(this.prev<Q.finallyLoc)return t(Q.finallyLoc)}}}},abrupt:function(g,I){for(var t=this.tryEntries.length-1;t>=0;--t){var C=this.tryEntries[t];if(C.tryLoc<=this.prev&&e.call(C,"finallyLoc")&&this.prev<C.finallyLoc){var Q=C;break}}Q&&("break"===g||"continue"===g)&&Q.tryLoc<=I&&I<=Q.finallyLoc&&(Q=null);var F=Q?Q.completion:{};return F.type=g,F.arg=I,Q?(this.method="next",this.next=Q.finallyLoc,U):this.complete(F)},complete:function(g,I){if("throw"===g.type)throw g.arg;return"break"===g.type||"continue"===g.type?this.next=g.arg:"return"===g.type?(this.rval=this.arg=g.arg,this.method="return",this.next="end"):"normal"===g.type&&I&&(this.next=I),U},finish:function(g){for(var I=this.tryEntries.length-1;I>=0;--I){var e=this.tryEntries[I];if(e.finallyLoc===g)return this.complete(e.completion,e.afterLoc),b(e),U}},catch:function(g){for(var I=this.tryEntries.length-1;I>=0;--I){var e=this.tryEntries[I];if(e.tryLoc===g){var t=e.completion;if("throw"===t.type){var C=t.arg;b(e)}return C}}throw new Error("illegal catch attempt")},delegateYield:function(g,I,e){return this.delegate={iterator:m(g),resultName:I,nextLoc:e},"next"===this.method&&(this.arg=void 0),U}},g}(g.exports);try{regeneratorRuntime=I}catch(e){Function("r","regeneratorRuntime = r")(I)}}));function Ig(g,I,e,t,C,Q,F){try{var B=g[Q](F),n=B.value}catch(U){return void e(U)}B.done?I(n):Promise.resolve(n).then(t,C)}var eg=function(g){return function(){var I=this,e=arguments;return new Promise((function(t,C){var Q=g.apply(I,e);function F(g){Ig(Q,t,C,F,B,"next",g)}function B(g){Ig(Q,t,C,F,B,"throw",g)}F(void 0)}))}};function tg(g,I,e){return new Promise((function(t,C){return I()?t(g):e<1?C(x(x({},g),{},{queue:!0})):(Q=10,new Promise((function(g){return setTimeout(g,Q)}))).then((function(Q){return tg(g,I,e-10).then(t,C)}));var Q}))}function Cg(g,I,e){var t=I(),C=g.getState(),Q=C.plugins,F=C.context,n=C.queue,U=C.user;if(!F.offline&&n&&n.actions&&n.actions.length){var s=n.actions.reduce((function(g,I,e){return Q[I.plugin].loaded?(g.process.push(I),g.processIndex.push(e)):(g.requeue.push(I),g.requeueIndex.push(e)),g}),{processIndex:[],process:[],requeue:[],requeueIndex:[]});if(s.processIndex&&s.processIndex.length){s.processIndex.forEach((function(I){var C=n.actions[I],F=C.plugin,s=C.payload.type,i=t[F][s];if(i&&B(i)){var c=function(g){var I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return[z,O].reduce((function(g,e){return Fg(g,I,e)}),g)}(C.payload,U);i({payload:c,config:Q[F].config,instance:e});var A="".concat(s,":").concat(F);g.dispatch(x(x({},c),{},{type:A,_:{called:A,from:"queueDrain"}}))}}));var i=n.actions.filter((function(g,I){return!~s.processIndex.indexOf(I)}));n.actions=i}}}function Qg(g,I,e){return setInterval((function(){return Cg(g,I,e)}),3e3)}function Fg(g,I,e){return g.hasOwnProperty(e)&&!g[e]&&I[e]?Object.assign({},g,Z({},"".concat(e),I[e])):g}var Bg=function(g){if(Array.isArray(g))return g};var ng=function(g,I){var e=[],t=!0,C=!1,Q=void 0;try{for(var F,B=g[Symbol.iterator]();!(t=(F=B.next()).done)&&(e.push(F.value),!I||e.length!==I);t=!0);}catch(n){C=!0,Q=n}finally{try{t||null==B.return||B.return()}finally{if(C)throw Q}}return e};var Ug=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")};var sg=function(g,I){return Bg(g)||ng(g,I)||Ug()};function ig(g){var I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return Object.keys(g).filter((function(g){var t=e.plugins||{};return!1!==t[g]&&(!0===t[g]||!1!==t.all&&(!I[g]||!1!==I[g].enabled))})).map((function(I){return g[I]}))}var cg=/Start$/,Ag=/^bootstrap/,lg=/^ready/;function ag(g,I,e,t,C){return rg.apply(this,arguments)}function rg(){return(rg=eg(gg.mark((function g(I,e,t,C,Q){var F,n,U,s,i,c,A,l,a,r,o,d;return gg.wrap((function(g){for(;;)switch(g.prev=g.next){case 0:if(F=B(e)?e():e,n=I.type,U=n.replace(cg,""),!I._||!I._.called){g.next=5;break}return g.abrupt("return",I);case 5:return s=t.getState(),i=ig(F,s.plugins,I.options),c=i.map((function(g){return g.name})),A=xg(n,i,F),g.next=11,dg({action:I,data:{exact:A.before,namespaced:A.beforeNS},state:s,allPlugins:F,allMatches:A,instance:t,store:C,EVENTS:Q});case 11:if(!Sg(l=g.sent,c.length)){g.next=14;break}return g.abrupt("return",l);case 14:if(n!==U){g.next=18;break}a=l,g.next=21;break;case 18:return g.next=20,dg({action:x(x({},l),{},{type:U}),data:{exact:A.during,namespaced:A.duringNS},state:s,allPlugins:F,allMatches:A,instance:t,store:C,EVENTS:Q});case 20:a=g.sent;case 21:if(!n.match(cg)){g.next=28;break}return r="".concat(U,"End"),g.next=25,dg({action:x(x({},a),{},{type:r}),data:{exact:A.after,namespaced:A.afterNS},state:s,allPlugins:F,allMatches:A,instance:t,store:C,EVENTS:Q});case 25:o=g.sent,(d=og(o))&&d({payload:o});case 28:return g.abrupt("return",l);case 29:case"end":return g.stop()}}),g)})))).apply(this,arguments)}function og(g){return!!g.meta&&Object.keys(g.meta).reduce((function(I,e){var t=g.meta[e];return B(t)?t:I}),!1)}function dg(g){return ug.apply(this,arguments)}function ug(){return(ug=eg(gg.mark((function g(I){var e,t,C,Q,F,n,s,i,c,A,l,a,r,o,d,u,y,b;return gg.wrap((function(g){for(;;)switch(g.prev=g.next){case 0:return e=I.data,t=I.action,C=I.instance,Q=I.state,F=I.allPlugins,n=I.allMatches,s=I.store,i=I.EVENTS,c=Q.plugins,A=Q.context,l=t.type,a=l.match(cg),r=e.exact.map((function(g){return g.pluginName})),a&&(r=n.during.map((function(g){return g.pluginName}))),o=Vg(C,r),d=e.exact.reduce((function(g,I){var e=I.pluginName,t=I.methodName,C=!1;return t.match(/^initialize/)||t.match(/^reset/)||(C=!c[e].loaded),A.offline&&t.match(/^(page|track|identify)/)&&(C=!0),g["".concat(e)]=C,g}),{}),g.next=10,e.exact.reduce(function(){var g=eg(gg.mark((function g(I,Q,n){var s,i,A;return gg.wrap((function(g){for(;;)switch(g.prev=g.next){case 0:return s=Q.pluginName,g.next=3,I;case 3:if(i=g.sent,!e.namespaced||!e.namespaced[s]){g.next=11;break}return g.next=7,e.namespaced[s].reduce(function(){var g=eg(gg.mark((function g(I,e,t){var Q,n,i,A;return gg.wrap((function(g){for(;;)switch(g.prev=g.next){case 0:return n=function(g,I,e){return function(t,C){var Q=e||I;return x(x({},g),{},{abort:{reason:t,plugins:C||[I],caller:l,from:Q}})}},g.next=3,I;case 3:if(Q=g.sent,e.method&&B(e.method)){g.next=6;break}return g.abrupt("return",Q);case 6:return hg(e.methodName,e.pluginName),g.next=9,e.method({payload:Q,instance:C,abort:n(Q,s,e.pluginName),config:bg(e.pluginName,c,F),plugins:c});case 9:return i=g.sent,A=U(i)?i:{},g.abrupt("return",Promise.resolve(x(x({},Q),A)));case 12:case"end":return g.stop()}}),g)})));return function(I,e,t){return g.apply(this,arguments)}}(),Promise.resolve(t));case 7:A=g.sent,i[s]=A,g.next=12;break;case 11:i[s]=t;case 12:return g.abrupt("return",Promise.resolve(i));case 13:case"end":return g.stop()}}),g)})));return function(I,e,t){return g.apply(this,arguments)}}(),Promise.resolve({}));case 10:return u=g.sent,g.next=13,e.exact.reduce(function(){var g=eg(gg.mark((function g(I,t,Q){var B,n,i,A,r,y,b,Z,m,R,S,G;return gg.wrap((function(g){for(;;)switch(g.prev=g.next){case 0:return B=e.exact.length===Q+1,n=t.pluginName,i=F[n],g.next=5,I;case 5:if(A=g.sent,r=u[n]?u[n]:{},a&&(r=A),!Rg(r,n)){g.next=11;break}return yg({data:r,method:l,instance:C,pluginName:n,store:s}),g.abrupt("return",Promise.resolve(A));case 11:if(!Rg(A,n)){g.next=14;break}return B&&yg({data:A,method:l,instance:C,store:s}),g.abrupt("return",Promise.resolve(A));case 14:if(!d.hasOwnProperty(n)||!0!==d[n]){g.next=17;break}return s.dispatch({type:"queue",plugin:n,payload:r,_:{called:"queue",from:"queueMechanism"}}),g.abrupt("return",Promise.resolve(A));case 17:return y=o(u[n],F[n]),g.next=20,i[l]({hello:n,abort:y.abort,payload:r,instance:C,config:bg(n,c,F),plugins:c});case 20:return b=g.sent,Z=U(b)?b:{},m=x(x({},A),Z),Rg(R=u[n],n)?yg({data:R,method:l,instance:C,pluginName:n,store:s}):(S="".concat(l,":").concat(n),(S.match(/:/g)||[]).length<2&&!l.match(Ag)&&!l.match(lg)&&(G=a?m:r,C.dispatch(x(x({},G),{},{type:S,_:{called:S,from:"submethod"}})))),g.abrupt("return",Promise.resolve(m));case 26:case"end":return g.stop()}}),g)})));return function(I,e,t){return g.apply(this,arguments)}}(),Promise.resolve(t));case 13:if(y=g.sent,l.match(cg)||l.match(/^registerPlugin/)||l.match(lg)||l.match(Ag)||l.match(/^params/)||l.match(/^userIdChanged/)){g.next=21;break}if(i.plugins.includes(l),!y._||y._.originalAction!==l){g.next=18;break}return g.abrupt("return",y);case 18:b=x(x({},y),{_:{originalAction:y.type,called:y.type,from:"engineEnd"}}),Sg(y,e.exact.length)&&!l.match(/End$/)&&(b=x(x({},b),{type:y.type+"Aborted"})),s.dispatch(b);case 21:return g.abrupt("return",y);case 22:case"end":return g.stop()}}),g)})))).apply(this,arguments)}function yg(g){var I=g.data,e=g.method,t=(g.instance,g.pluginName),C=e+"Aborted"+(t?":"+t:"");g.store.dispatch(x(x({},I),{},{type:C,_:{called:C,from:"abort"}}))}function bg(g,I,e){var t=I[g]||e[g];return t&&t.config?t.config:{}}function Zg(g,I){return I.reduce((function(I,e){return e[g]?I.concat({methodName:g,pluginName:e.name,method:e[g]}):I}),[])}function mg(g,I){var e=function(g){return g.replace(cg,"")}(g),t=I?":".concat(I):"";return["".concat(g).concat(t),"".concat(e).concat(t),"".concat(e,"End").concat(t)]}function xg(g,I,e){var t=mg(g).map((function(g){return Zg(g,I)}));return I.reduce((function(e,t){var C=t.name,Q=mg(g,C).map((function(g){return Zg(g,I)})),F=sg(Q,3),B=F[0],n=F[1],U=F[2];return B.length&&(e.beforeNS[C]=B),n.length&&(e.duringNS[C]=n),U.length&&(e.afterNS[C]=U),e}),{before:t[0],beforeNS:{},during:t[1],duringNS:{},after:t[2],afterNS:{}})}function Rg(g,I){var e=g.abort;return!!e&&(!0===e||(Lg(e,I)||e&&Lg(e.plugins,I)))}function Sg(g,I){var e=g.abort;if(!e)return!1;if(!0===e||n(e))return!0;var t=e.plugins;return Gg(e)&&e.length===I||Gg(t)&&t.length===I}function Gg(g){return Array.isArray(g)}function Lg(g,I){return!(!g||!Gg(g))&&g.includes(I)}function Vg(g,I){return function(e,t,C){var Q=t.config,F=t.name,B="".concat(F,".").concat(e.type);C&&(B=C.event);var n=e.type.match(cg)?function(g,I,e,t,C){return function(Q,F){var B=t?t.name:g,n=F&&Gg(F)?F:e;if(t&&(!(n=F&&Gg(F)?F:[g]).includes(g)||1!==n.length))throw new Error("Method ".concat(I," can only abort ").concat(g," plugin. ").concat(JSON.stringify(n)," input valid"));return x(x({},C),{},{abort:{reason:Q,plugins:n,caller:I,_:B}})}}(F,B,I,C,e):function(g,I){return function(){throw new Error(g.type+" action not cancellable. Remove abort in "+I)}}(e,B);return{payload:pg(e),instance:g,config:Q||{},abort:n}}}function hg(g,I){var e=Dg(g);if(e&&e.name===I){var t=Dg(e.method),C=t?"or "+t.method:"";throw new Error([I+" plugin is calling method "+g,"Plugins cant call themselves","Use ".concat(e.method," ").concat(C," in ").concat(I," plugin insteadof ").concat(g)].join("\n"))}}function Dg(g){var I=g.match(/(.*):(.*)/);return!!I&&{method:I[1],name:I[2]}}function pg(g){return Object.keys(g).reduce((function(I,e){return"type"===e||(U(g[e])?I[e]=Object.assign({},g[e]):I[e]=g[e]),I}),{})}function Eg(g,I,e){var t={};return function(C){return function(Q){return function(){var F=eg(gg.mark((function F(n){var U,s,i,c,A,l,a,r,o,d,u,y,b,Z,m;return gg.wrap((function(F){for(;;)switch(F.prev=F.next){case 0:if(U=n.type,s=n.name,i=n.callback,c=n,!n.abort){F.next=4;break}return F.abrupt("return",Q(n));case 4:if(U!==X.disablePlugin&&U!==X.enablePlugin||B(i)&&i(s),U!==X.loadPlugin){F.next=13;break}return A=I(),l=Object.keys(A).filter((function(g){return n.plugins.includes(g)})).reduce((function(g,I){return g[I]=A[I],g}),{}),a={type:X.initializeStart,plugins:n.plugins},F.next=11,ag(a,l,g,C,e);case 11:return r=F.sent,F.abrupt("return",Q(r));case 13:if(U===X.initializeEnd&&(o=I(),d=Object.keys(o),u=d.filter((function(g){return n.plugins.includes(g)})).map((function(g){return o[g]})),y=[],b=[],Z=u.map((function(g){var I=g.loaded,e=g.name;return tg(g,I,1e4).then((function(I){t[e]||(C.dispatch({type:X.pluginReadyType(e),name:e,events:Object.keys(g).filter((function(g){return!f.includes(g)}))}),t[e]=!0),y=y.concat(e)})).catch((function(g){if(g instanceof Error)throw new Error(g);return b=b.concat(g.name),g}))})),Promise.all(Z).then((function(g){setTimeout((function(){d.length===Z.length&&C.dispatch({type:X.ready,plugins:y,failed:b})}),0)}))),U===X.bootstrap){F.next=20;break}return/^ready:([^:]*)$/.test(U)&&setTimeout((function(){return Cg(C,I,g)}),0),F.next=18,ag(n,I,g,C,e);case 18:return m=F.sent,F.abrupt("return",Q(m));case 20:return F.abrupt("return",Q(c));case 21:case"end":return F.stop()}}),F)})));return function(g){return F.apply(this,arguments)}}()}}}function Ng(){return(new Date).getTime()}function Wg(g){return function(I){return function(I){return function(e){var t=e.type,C=e.key,Q=e.value,F=e.options;if(t===X.setItem||t===X.removeItem){if(e.abort)return I(e);t===X.setItem?g.setItem(C,Q,F):g.removeItem(C,F)}return I(e)}}}}var fg=function(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")},Xg=function g(){var I=this;fg(this,g),Z(this,"before",[]),Z(this,"after",[]),Z(this,"addMiddleware",(function(g,e){I[e]=I[e].concat(g)})),Z(this,"removeMiddleware",(function(g,e){var t=I[e].findIndex((function(I){return I===g}));-1!==t&&(I[e]=[].concat(u(I[e].slice(0,t)),u(I[e].slice(t+1))))})),Z(this,"dynamicMiddlewares",(function(g){return function(e){return function(t){return function(C){var Q={getState:e.getState,dispatch:function(g){return e.dispatch(g)}},F=I[g].map((function(g){return g(Q)}));return E.apply(void 0,u(F))(t)(C)}}}}))},Jg={};function vg(g){return function(){var I=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Jg,e=arguments.length>1?arguments[1]:void 0,t={};if("initialize:aborted"===e.type)return I;if(/^registerPlugin:([^:]*)$/.test(e.type)){var C=e.type.split(":")[1],Q=g()[C];return Q&&C?(t[C]={enabled:!0,initialized:!Q.initialize,loaded:Boolean(Q.loaded()),config:Q.config||{}},x(x({},I),t)):I}if(/^initialize:([^:]*)$/.test(e.type)){var F=e.type.split(":")[1],B=g()[F];return B&&F?(t[F]=x(x({},I[F]),{initialized:!0,loaded:Boolean(B.loaded())}),x(x({},I),t)):I}if(/^ready:([^:]*)$/.test(e.type))return t[e.name]=x(x({},I[e.name]),{loaded:!0}),x(x({},I),t);switch(e.type){case X.disablePlugin:return Array.isArray(e.name)?(t=e.name.reduce((function(g,e){return g[e]=x(x({},I[e]),{enabled:!1}),g}),I),x(x({},I),t)):(t[e.name]=x(x({},I[e.name]),{enabled:!1}),x(x({},I),t));case X.enablePlugin:return Array.isArray(e.name)?(t=e.name.reduce((function(g,e){return g[e]=x(x({},I[e]),{enabled:!0}),g}),I),x(x({},I),t)):(t[e.name]=x(x({},I[e.name]),{enabled:!0}),x(x({},I),t));default:return I}}}var kg,Hg,Mg,Yg,wg=function(g,I){return{type:X.enablePlugin,name:g,callback:I,_:{originalAction:X.enablePlugin}}},Tg=function(g,I){return{type:X.disablePlugin,name:g,callback:I,_:{originalAction:X.disablePlugin}}};kg=function(){if(!i)return!1;var g=navigator.appVersion;return~g.indexOf("Win")?"Windows":~g.indexOf("Mac")?"MacOS":~g.indexOf("X11")?"UNIX":~g.indexOf("Linux")?"Linux":"Unknown OS"}(),Hg=i?document.referrer:null,Mg=function(){if(!i)return null;var g=navigator,I=g.language,e=g.languages,t=g.userLanguage;return e&&e.length?e[0]:t||I}(),Yg="undefined"===typeof Intl||"function"!==typeof Intl.DateTimeFormat||"function"!==typeof Intl.DateTimeFormat().resolvedOptions?null:Intl.DateTimeFormat().resolvedOptions().timeZone;var zg={initialized:!1,sessionId:l(),app:null,version:null,debug:!1,offline:!!i&&!navigator.onLine,os:{name:kg},userAgent:i?navigator.userAgent:"node",library:{name:"analytics",version:"0.6.1"},timezone:Yg,locale:Mg,campaign:{},referrer:Hg};function Og(){var g=arguments.length>0&&void 0!==arguments[0]?arguments[0]:zg,I=arguments.length>1?arguments[1]:void 0,e=g.initialized,t=I.type,C=I.campaign;switch(t){case X.campaign:return x(x({},g),{campaign:C});case X.offline:return x(x({},g),{offline:!0});case X.online:return x(x({},g),{offline:!1});default:return e?g:x(x(x({},zg),g),{initialized:!0})}}var Kg=["plugins","reducers","storage"];function jg(g){return Object.keys(g).reduce((function(I,e){return Kg.includes(e)||(I[e]=g[e]),I}),{})}function Pg(g){var I=g;try{I=JSON.parse(JSON.stringify(g))}catch(e){}return I}var _g=/#.*$/;function qg(g){var I=/(http[s]?:\/\/)?([^\/\s]+\/)(.*)/g.exec(g);return"/"+(I&&I[3]?I[3].split("?")[0].replace(_g,""):"")}function $g(g){var I=function(){if(i)for(var g,I=document.getElementsByTagName("link"),e=0;g=I[e];e++)if("canonical"===g.getAttribute("rel"))return g.getAttribute("href")}();return I?I.match(/\?/)?I:I+g:window.location.href.replace(_g,"")}var gI=function(){var g=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!i)return g;var I=document,e=I.title,t=I.referrer,C=window,Q=C.location,F=C.innerWidth,B=C.innerHeight,n=Q.hash,U=Q.search,s=$g(U),c={title:e,url:s,path:qg(s),hash:n,search:U,width:F,height:B};return t&&""!==t&&(c.referrer=t),x(x({},c),g)},II={last:{},history:[]};function eI(){var g=arguments.length>0&&void 0!==arguments[0]?arguments[0]:II,I=arguments.length>1?arguments[1]:void 0,e=I.properties,t=I.options,C=I.meta;switch(I.type){case X.page:var Q=Pg(x({properties:e,meta:C},Object.keys(t).length&&{options:t}));return x(x({},g),{last:Q,history:g.history.concat(Q)});default:return g}}var tI={last:{},history:[]};function CI(){var g=arguments.length>0&&void 0!==arguments[0]?arguments[0]:tI,I=arguments.length>1?arguments[1]:void 0,e=I.type,t=I.meta,C=I.options,Q=I.event,F=I.properties;switch(e){case X.track:var B=Pg(x(x({event:Q,properties:F},Object.keys(C).length&&{options:C}),{},{meta:t}));return x(x({},g),{last:B,history:g.history.concat(B)});default:return g}}var QI={actions:[]};function FI(){var g=arguments.length>0&&void 0!==arguments[0]?arguments[0]:QI,I=arguments.length>1?arguments[1]:void 0,e=I.type,t=I.payload;switch(e){case"queue":var C;return C=t&&t.type&&t.type===X.identify?[I].concat(g.actions):g.actions.concat(I),x(x({},g),{},{actions:C});case"dequeue":return[];default:return g}}function BI(g,I,e){if(!i)return!1;var t=window[(e?"add":"remove")+"EventListener"];g.split(" ").forEach((function(g){t(g,I)}))}function nI(g){var I=BI.bind(null,"online offline",(function(I){return Promise.resolve(!navigator.onLine).then(g)}));return I(!0),function(g){return I(!1)}}function UI(){return Array.prototype.slice.call(arguments).reduce((function(g,I){return g||(B(I)?I:g)}),!1)}function sI(){return Q.b.__analytics__=[],function(g){return function(I,e,t){var C=g(I,e,t),F=C.dispatch;return Object.assign(C,{dispatch:function(g){var I=g.action||g;return Q.b.__analytics__.push(I),F(g)}})}}}function iI(g){return function(){return E(E.apply(null,arguments),sI())}}var cI=function(g,I,e){return{type:X.setItemStart,timestamp:Ng(),key:g,value:I,options:e}},AI=function(g,I){return{type:X.removeItemStart,timestamp:Ng(),key:g,options:I}};var lI="before",aI="after",rI=function(){var g=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},I=g.reducers||{},e=(g.plugins||[]).reduce((function(g,I){if(!B(I)){if(I.NAMESPACE&&(I.name=I.NAMESPACE),!I.name)throw new Error("https://lytics.dev/errors/1");var e=I.EVENTS?Object.keys(I.EVENTS).map((function(g){return I.EVENTS[g]})):[];if(I.methods){if(K.includes(I.name))throw new Error(I.name+" is reserved pluginName");g.methods[I.name]=Object.keys(I.methods).reduce((function(g,e){return g[e]=Cg(I.methods[e]),g}),{}),delete I.methods}var t=Object.keys(I).concat(e),C=new Set(g.events.concat(t));if(g.events=Array.from(C),g.pluginsArray=g.pluginsArray.concat(I),g.plugins[I.name])throw new Error(I.name+" already loaded");return g.plugins[I.name]=I,g.plugins[I.name].loaded||(g.plugins[I.name].loaded=function(){return!0}),g}return g.middlewares=g.middlewares.concat(I),g}),{plugins:{},methods:{},pluginsArray:[],middlewares:[],events:[]}),t=g.storage?g.storage:{getItem:function(g){return Q.b[g]},setItem:function(g,I){return Q.b[g]=I},removeItem:function(g){return Q.b[g]=void 0}},F=q(t),s=e.plugins,A=e.events.filter((function(g){return!f.includes(g)})),l=new Set(A.concat(W).filter((function(g){return!f.includes(g)}))),a=Array.from(l).sort(),r=A.sort(),o=function(){return s},d=new Xg,y=d.addMiddleware,Z=d.removeMiddleware,m=d.dynamicMiddlewares,R=function(){throw new Error("Abort disabled in listener")},S=function(g,I){return function(e){I&&I(e),g(e)}},G=c(),L=P(G,t),V=x({enable:function(g,I){eg.dispatch(wg(g,I))},disable:function(g,I){eg.dispatch(Tg(g,I))},load:function(g){eg.dispatch({type:X.loadPlugin,plugins:g?[g]:Object.keys(o())})}},e.methods),D={identify:function(g,I,e,t){var C=n(g)?g:null,B=U(g)?g:I,s=e||{},i=D.user();Q.b[_(z)]=C;var c=C||B.userId||F(z,D,B);return new Promise((function(g,Q){eg.dispatch(x(x({type:X.identifyStart,userId:c,traits:B||{},options:s,anonymousId:i.anonymousId},i.id&&i.id!==C&&{previousId:i.id}),{},{meta:{timestamp:Ng(),callback:S(g,UI(I,e,t))}}))}))},track:function(g,I,e,t){var C=U(g)?g.event:g;if(!C||!n(C))throw new Error("Event missing");var Q=U(g)?g:I||{},B=U(e)?e:{};return new Promise((function(g,n){eg.dispatch({type:X.trackStart,event:C,properties:Q,options:B,userId:F(z,D,I),anonymousId:F(O,D,I),meta:{timestamp:Ng(),callback:S(g,UI(I,e,t))}})}))},page:function(g,I,e){var t=U(g)?g:{},C=U(I)?I:{};return new Promise((function(Q,B){eg.dispatch({type:X.pageStart,properties:gI(t),options:C,userId:F(z,D,t),anonymousId:F(O,D,t),meta:{timestamp:Ng(),callback:S(Q,UI(g,I,e))}})}))},user:function(g){if(g===z||"id"===g)return F(z,D);var I=D.getState("user");return g?C()(I,g):I},reset:function(g){return new Promise((function(I,e){eg.dispatch({type:X.resetStart,timestamp:Ng(),callback:S(I,g)})}))},ready:function(g){return D.on(X.ready,g)},on:function(g,I){if(!g||!B(I))return!1;if(g===X.bootstrap)throw new Error(".on disabled for "+g);var e=/Start$|Start:/;if("*"===g){var t=function(g){return function(g){return function(t){return t.type.match(e)&&I({payload:t,instance:D,plugins:s}),g(t)}}},C=function(g){return function(g){return function(t){return t.type.match(e)||I({payload:t,instance:D,plugins:s}),g(t)}}};return y(t,lI),y(C,aI),function(){Z(t,lI),Z(C,aI)}}var Q=g.match(e)?lI:aI,F=function(e){return function(e){return function(t){return t.type===g&&I({payload:t,instance:D,plugins:s,abort:R}),e(t)}}};return y(F,Q),function(){return Z(F,Q)}},once:function(g,I){if(!g||!B(I))return!1;if(g===X.bootstrap)throw new Error(".once disabled for "+g);var e=D.on(g,(function(g){var t=g.payload;I({payload:t,instance:D,plugins:s,abort:R}),e()}));return e},getState:function(g){var I=eg.getState();return g?C()(I,g):Object.assign({},I)},dispatch:function(g){var I=n(g)?{type:g}:g;if(J(I.type))throw new Error("reserved action "+I.type);var e=I.meta||{},t=g._||{},C=x(x({},I),{},{meta:x({timestamp:Ng()},e),_:x({originalAction:I.type},t)});eg.dispatch(C)},enablePlugin:V.enable,disablePlugin:V.disable,loadPlugin:V.load,plugins:V,storage:{getItem:t.getItem,setItem:function(g,I,e){eg.dispatch(cI(g,I,e))},removeItem:function(g,I){eg.dispatch(AI(g,I))}},setAnonymousId:function(g,I){D.storage.setItem(v,g,I)},events:{all:a,core:W,plugins:r}},k=e.middlewares.concat([m(lI),Eg(D,o,{all:a,plugins:r}),Wg(t),T(D),$(D),m(aI)]),H={context:Og,user:j(t),page:eI,track:CI,plugins:vg(o),queue:FI},M=E,Y=E;if(i&&g.debug){var w=window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__;w&&(M=w({trace:!0,traceLimit:25})),Y=function(){return 0===arguments.length?sI():U(b(arguments[0]))?iI():iI().apply(null,arguments)}}var gg=jg(g),Ig={context:gg,user:L,plugins:e.pluginsArray.reduce((function(g,I){var e=I.name,t=I.config,C=I.loaded;return g[e]={enabled:!0,initialized:Boolean(!I.initialize),loaded:Boolean(C()),config:t||{}},g}),{})},eg=h(p(x(x({},H),I)),Ig,Y(M(N.apply(void 0,u(k))))),tg=Object.keys(s);function Cg(g){return function(){var I=Array.prototype.slice.call(arguments),e=Array.apply(null,Array(g.length)).map((function(){})).map((function(g,e){if(I[e]||!1===I[e]||null===I[e])return I[e]})).concat(D);return g.apply({instance:D},e)}}return eg.dispatch({type:X.bootstrap,plugins:tg,config:gg,params:G,user:L}),eg.dispatch({type:X.registerPlugins,plugins:tg}),e.pluginsArray.map((function(g,I){var t=g.bootstrap,C=g.config;t&&B(t)&&t({instance:D,config:C,payload:g});var Q=e.pluginsArray.length===I+1;eg.dispatch({type:X.registerPluginType(g.name),name:g.name,plugin:g}),Q&&eg.dispatch({type:X.initializeStart,plugins:tg})})),nI((function(g){eg.dispatch({type:g?X.offline:X.online})})),Qg(eg,o,D),D};var oI=function(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g};function dI(g,I){var e=Object.keys(g);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(g);I&&(t=t.filter((function(I){return Object.getOwnPropertyDescriptor(g,I).enumerable}))),e.push.apply(e,t)}return e}var uI=function(g){for(var I=1;I<arguments.length;I++){var e=null!=arguments[I]?arguments[I]:{};I%2?dI(e,!0).forEach((function(I){oI(g,I,e[I])})):Object.getOwnPropertyDescriptors?Object.defineProperties(g,Object.getOwnPropertyDescriptors(e)):dI(e).forEach((function(I){Object.defineProperty(g,I,Object.getOwnPropertyDescriptor(e,I))}))}return g};I.a=function(){var g=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},I={storage:Q.a};return rI(uI(uI({},I),g))}},function(g,I,e){"use strict";function t(g){return Object.prototype.toString.call(g).slice(8,-1)}function C(g){return"Object"===t(g)&&(g.constructor===Object&&Object.getPrototypeOf(g)===Object.prototype)}function Q(g){return"Array"===t(g)}function F(g){return"Symbol"===t(g)}function B(){for(var g=0,I=0,e=arguments.length;I<e;I++)g+=arguments[I].length;var t=Array(g),C=0;for(I=0;I<e;I++)for(var Q=arguments[I],F=0,B=Q.length;F<B;F++,C++)t[C]=Q[F];return t}function n(g,I,e,t){var C=t.propertyIsEnumerable(I)?"enumerable":"nonenumerable";"enumerable"===C&&(g[I]=e),"nonenumerable"===C&&Object.defineProperty(g,I,{value:e,enumerable:!1,writable:!0,configurable:!0})}function U(g,I,e){if(!C(I))return e&&Q(e)&&e.forEach((function(e){I=e(g,I)})),I;var t={};C(g)&&(t=B(Object.getOwnPropertyNames(g),Object.getOwnPropertySymbols(g)).reduce((function(e,t){var C=g[t];return(!F(t)&&!Object.getOwnPropertyNames(I).includes(t)||F(t)&&!Object.getOwnPropertySymbols(I).includes(t))&&n(e,t,C,g),e}),{}));return B(Object.getOwnPropertyNames(I),Object.getOwnPropertySymbols(I)).reduce((function(t,F){var B=I[F],s=C(g)?g[F]:void 0;return e&&Q(e)&&e.forEach((function(g){B=g(s,B)})),void 0!==s&&C(B)&&(B=U(s,B,e)),n(t,F,B,I),t}),t)}I.a=function(g){for(var I=[],e=1;e<arguments.length;e++)I[e-1]=arguments[e];var t=null,Q=g;return C(g)&&g.extensions&&1===Object.keys(g).length&&(Q={},t=g.extensions),I.reduce((function(g,I){return U(g,I,t)}),Q)}},function(g,I,e){"use strict";e.d(I,"a",(function(){return Q}));var t=e(430),C=["checked","disabled","error","focused","focusVisible","required","expanded","selected"];function Q(){var g=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},I=g.disableGlobal,e=void 0!==I&&I,Q=g.productionPrefix,F=void 0===Q?"jss":Q,B=g.seed,n=void 0===B?"":B,U=""===n?"":"".concat(n,"-"),s=0,i=function(){return s+=1};return function(g,I){var Q=I.options.name;if(Q&&0===Q.indexOf("Mui")&&!I.options.link&&!e){if(-1!==C.indexOf(g.key))return"Mui-".concat(g.key);var B="".concat(U).concat(Q,"-").concat(g.key);return I.options.theme[t.a]&&""===n?"".concat(B,"-").concat(i()):B}return"".concat(U).concat(F).concat(i())}}},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(4),e(14)),B=e(21),n=e(271),U=e(315),s=e(49),i=e(170),c=e(42),A="undefined"===typeof window?Q.useEffect:Q.useLayoutEffect,l=Q.forwardRef((function(g,I){var e=g.alignItems,B=void 0===e?"center":e,l=g.autoFocus,a=void 0!==l&&l,r=g.button,o=void 0!==r&&r,d=g.children,u=g.classes,y=g.className,b=g.component,Z=g.ContainerComponent,m=void 0===Z?"li":Z,x=g.ContainerProps,R=(x=void 0===x?{}:x).className,S=Object(C.a)(x,["className"]),G=g.dense,L=void 0!==G&&G,V=g.disabled,h=void 0!==V&&V,D=g.disableGutters,p=void 0!==D&&D,E=g.divider,N=void 0!==E&&E,W=g.focusVisibleClassName,f=g.selected,X=void 0!==f&&f,J=Object(C.a)(g,["alignItems","autoFocus","button","children","classes","className","component","ContainerComponent","ContainerProps","dense","disabled","disableGutters","divider","focusVisibleClassName","selected"]),v=Q.useContext(i.a),k={dense:L||v.dense||!1,alignItems:B},H=Q.useRef(null);A((function(){a&&H.current&&H.current.focus()}),[a]);var M=Q.Children.toArray(d),Y=M.length&&Object(U.a)(M[M.length-1],["ListItemSecondaryAction"]),w=Q.useCallback((function(g){H.current=c.findDOMNode(g)}),[]),T=Object(s.a)(w,I),z=Object(t.a)({className:Object(F.default)(u.root,y,k.dense&&u.dense,!p&&u.gutters,N&&u.divider,h&&u.disabled,o&&u.button,"center"!==B&&u.alignItemsFlexStart,Y&&u.secondaryAction,X&&u.selected),disabled:h},J),O=b||"li";return o&&(z.component=b||"div",z.focusVisibleClassName=Object(F.default)(u.focusVisible,W),O=n.a),Y?(O=z.component||b?O:"div","li"===m&&("li"===O?O="div":"li"===z.component&&(z.component="div")),Q.createElement(i.a.Provider,{value:k},Q.createElement(m,Object(t.a)({className:Object(F.default)(u.container,R),ref:T},S),Q.createElement(O,z,M),M.pop()))):Q.createElement(i.a.Provider,{value:k},Q.createElement(O,Object(t.a)({ref:T},z),M))}));I.a=Object(B.a)((function(g){return{root:{display:"flex",justifyContent:"flex-start",alignItems:"center",position:"relative",textDecoration:"none",width:"100%",boxSizing:"border-box",textAlign:"left",paddingTop:8,paddingBottom:8,"&$focusVisible":{backgroundColor:g.palette.action.selected},"&$selected, &$selected:hover":{backgroundColor:g.palette.action.selected},"&$disabled":{opacity:.5}},container:{position:"relative"},focusVisible:{},dense:{paddingTop:4,paddingBottom:4},alignItemsFlexStart:{alignItems:"flex-start"},disabled:{},divider:{borderBottom:"1px solid ".concat(g.palette.divider),backgroundClip:"padding-box"},gutters:{paddingLeft:16,paddingRight:16},button:{transition:g.transitions.create("background-color",{duration:g.transitions.duration.shortest}),"&:hover":{textDecoration:"none",backgroundColor:g.palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}}},secondaryAction:{paddingRight:48},selected:{}}}),{name:"MuiListItem"})(l)},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(4),e(14)),B=e(21),n=e(437),U=Q.forwardRef((function(g,I){var e=g.children,B=g.classes,U=g.className,s=g.invisible,i=void 0!==s&&s,c=g.open,A=g.transitionDuration,l=g.TransitionComponent,a=void 0===l?n.a:l,r=Object(C.a)(g,["children","classes","className","invisible","open","transitionDuration","TransitionComponent"]);return Q.createElement(a,Object(t.a)({in:c,timeout:A},r),Q.createElement("div",{className:Object(F.default)(B.root,U,i&&B.invisible),"aria-hidden":!0,ref:I},e))}));I.a=Object(B.a)({root:{zIndex:-1,position:"fixed",display:"flex",alignItems:"center",justifyContent:"center",right:0,bottom:0,top:0,left:0,backgroundColor:"rgba(0, 0, 0, 0.5)",WebkitTapHighlightColor:"transparent"},invisible:{backgroundColor:"transparent"}},{name:"MuiBackdrop"})(U)},function(g,I,e){"use strict";e.d(I,"a",(function(){return a}));var t,C=e(11),Q=e(75),F=e(66),B=e(108),n=e(143),U=e(457),s=e(592),i=Object(B.e)(),c={},A={};function l(g){if(!A[g])switch(A[g]=!0,g){case"console":!function(){if(!("console"in i))return;["debug","info","warn","error","log","assert"].forEach((function(g){g in i.console&&Object(n.c)(i.console,g,(function(I){return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];r("console",{args:e,level:g}),I&&Function.prototype.apply.call(I,i.console,e)}}))}))}();break;case"dom":!function(){if(!("document"in i))return;var g=r.bind(null,"dom"),I=b(g,!0);i.document.addEventListener("click",I,!1),i.document.addEventListener("keypress",I,!1),["EventTarget","Node"].forEach((function(I){var e=i[I]&&i[I].prototype;e&&e.hasOwnProperty&&e.hasOwnProperty("addEventListener")&&(Object(n.c)(e,"addEventListener",(function(I){return function(e,t,C){if("click"===e||"keypress"==e)try{var Q=this.__sentry_instrumentation_handlers__=this.__sentry_instrumentation_handlers__||{},F=Q[e]=Q[e]||{refCount:0};if(!F.handler){var B=b(g);F.handler=B,I.call(this,e,B,C)}F.refCount+=1}catch(n){}return I.call(this,e,t,C)}})),Object(n.c)(e,"removeEventListener",(function(g){return function(I,e,t){if("click"===I||"keypress"==I)try{var C=this.__sentry_instrumentation_handlers__||{},Q=C[I];Q&&(Q.refCount-=1,Q.refCount<=0&&(g.call(this,I,Q.handler,t),Q.handler=void 0,delete C[I]),0===Object.keys(C).length&&delete this.__sentry_instrumentation_handlers__)}catch(F){}return g.call(this,I,e,t)}})))}))}();break;case"xhr":!function(){if(!("XMLHttpRequest"in i))return;var g=[],I=[],e=XMLHttpRequest.prototype;Object(n.c)(e,"open",(function(e){return function(){for(var t=[],C=0;C<arguments.length;C++)t[C]=arguments[C];var F=this,B=t[1];F.__sentry_xhr__={method:Object(Q.k)(t[0])?t[0].toUpperCase():t[0],url:t[1]},Object(Q.k)(B)&&"POST"===F.__sentry_xhr__.method&&B.match(/sentry_key/)&&(F.__sentry_own_request__=!0);var U=function(){if(4===F.readyState){try{F.__sentry_xhr__&&(F.__sentry_xhr__.status_code=F.status)}catch(Q){}try{var e=g.indexOf(F);if(-1!==e){g.splice(e);var C=I.splice(e)[0];F.__sentry_xhr__&&void 0!==C[0]&&(F.__sentry_xhr__.body=C[0])}}catch(Q){}r("xhr",{args:t,endTimestamp:Date.now(),startTimestamp:Date.now(),xhr:F})}};return"onreadystatechange"in F&&"function"===typeof F.onreadystatechange?Object(n.c)(F,"onreadystatechange",(function(g){return function(){for(var I=[],e=0;e<arguments.length;e++)I[e]=arguments[e];return U(),g.apply(F,I)}})):F.addEventListener("readystatechange",U),e.apply(F,t)}})),Object(n.c)(e,"send",(function(e){return function(){for(var t=[],C=0;C<arguments.length;C++)t[C]=arguments[C];return g.push(this),I.push(t),r("xhr",{args:t,startTimestamp:Date.now(),xhr:this}),e.apply(this,t)}}))}();break;case"fetch":!function(){if(!Object(s.d)())return;Object(n.c)(i,"fetch",(function(g){return function(){for(var I=[],e=0;e<arguments.length;e++)I[e]=arguments[e];var t={args:I,fetchData:{method:o(I),url:d(I)},startTimestamp:Date.now()};return r("fetch",Object(C.a)({},t)),g.apply(i,I).then((function(g){return r("fetch",Object(C.a)(Object(C.a)({},t),{endTimestamp:Date.now(),response:g})),g}),(function(g){throw r("fetch",Object(C.a)(Object(C.a)({},t),{endTimestamp:Date.now(),error:g})),g}))}}))}();break;case"history":!function(){if(!Object(s.c)())return;var g=i.onpopstate;function I(g){return function(){for(var I=[],e=0;e<arguments.length;e++)I[e]=arguments[e];var C=I.length>2?I[2]:void 0;if(C){var Q=t,F=String(C);t=F,r("history",{from:Q,to:F})}return g.apply(this,I)}}i.onpopstate=function(){for(var I=[],e=0;e<arguments.length;e++)I[e]=arguments[e];var C=i.location.href,Q=t;if(t=C,r("history",{from:Q,to:C}),g)try{return g.apply(this,I)}catch(F){}},Object(n.c)(i.history,"pushState",I),Object(n.c)(i.history,"replaceState",I)}();break;case"error":Z=i.onerror,i.onerror=function(g,I,e,t,C){return r("error",{column:t,error:C,line:e,msg:g,url:I}),!!Z&&Z.apply(this,arguments)};break;case"unhandledrejection":m=i.onunhandledrejection,i.onunhandledrejection=function(g){return r("unhandledrejection",g),!m||m.apply(this,arguments)};break;default:F.a.warn("unknown instrumentation type:",g)}}function a(g){g&&"string"===typeof g.type&&"function"===typeof g.callback&&(c[g.type]=c[g.type]||[],c[g.type].push(g.callback),l(g.type))}function r(g,I){var e,t;if(g&&c[g])try{for(var Q=Object(C.g)(c[g]||[]),B=Q.next();!B.done;B=Q.next()){var n=B.value;try{n(I)}catch(s){F.a.error("Error while triggering instrumentation handler.\nType: "+g+"\nName: "+Object(U.a)(n)+"\nError: "+s)}}}catch(i){e={error:i}}finally{try{B&&!B.done&&(t=Q.return)&&t.call(Q)}finally{if(e)throw e.error}}}function o(g){return void 0===g&&(g=[]),"Request"in i&&Object(Q.g)(g[0],Request)&&g[0].method?String(g[0].method).toUpperCase():g[1]&&g[1].method?String(g[1].method).toUpperCase():"GET"}function d(g){return void 0===g&&(g=[]),"string"===typeof g[0]?g[0]:"Request"in i&&Object(Q.g)(g[0],Request)?g[0].url:String(g[0])}var u,y;function b(g,I){return void 0===I&&(I=!1),function(e){if(e&&y!==e&&!function(g){if("keypress"!==g.type)return!1;try{var I=g.target;if(!I||!I.tagName)return!0;if("INPUT"===I.tagName||"TEXTAREA"===I.tagName||I.isContentEditable)return!1}catch(e){}return!0}(e)){var t="keypress"===e.type?"input":e.type;(void 0===u||function(g,I){if(!g)return!0;if(g.type!==I.type)return!0;try{if(g.target!==I.target)return!0}catch(e){}return!1}(y,e))&&(g({event:e,name:t,global:I}),y=e),clearTimeout(u),u=i.setTimeout((function(){u=void 0}),1e3)}}}var Z=null;var m=null},function(g,I,e){"use strict";e.d(I,"a",(function(){return Eg}));var t=e(112),C=Date.now(),Q="fnValues"+C,F="fnStyle"+ ++C;var B=function(){return{onCreateRule:function(g,I,e){if("function"!==typeof I)return null;var C=Object(t.d)(g,{},e);return C[F]=I,C},onProcessStyle:function(g,I){if(Q in I||F in I)return g;var e={};for(var t in g){var C=g[t];"function"===typeof C&&(delete g[t],e[t]=C)}return I[Q]=e,g},onUpdate:function(g,I,e,t){var C=I,B=C[F];B&&(C.style=B(g)||{});var n=C[Q];if(n)for(var U in n)C.prop(U,n[U](g),t)}}},n=e(5),U="@global",s=function(){function g(g,I,e){for(var C in this.type="global",this.at=U,this.rules=void 0,this.options=void 0,this.key=void 0,this.isProcessed=!1,this.key=g,this.options=e,this.rules=new t.a(Object(n.a)({},e,{parent:this})),I)this.rules.add(C,I[C]);this.rules.process()}var I=g.prototype;return I.getRule=function(g){return this.rules.get(g)},I.addRule=function(g,I,e){var t=this.rules.add(g,I,e);return this.options.jss.plugins.onProcessRule(t),t},I.indexOf=function(g){return this.rules.indexOf(g)},I.toString=function(){return this.rules.toString()},g}(),i=function(){function g(g,I,e){this.type="global",this.at=U,this.options=void 0,this.rule=void 0,this.isProcessed=!1,this.key=void 0,this.key=g,this.options=e;var t=g.substr("@global ".length);this.rule=e.jss.createRule(t,I,Object(n.a)({},e,{parent:this}))}return g.prototype.toString=function(g){return this.rule?this.rule.toString(g):""},g}(),c=/\s*,\s*/g;function A(g,I){for(var e=g.split(c),t="",C=0;C<e.length;C++)t+=I+" "+e[C].trim(),e[C+1]&&(t+=", ");return t}var l=function(){return{onCreateRule:function(g,I,e){if(!g)return null;if(g===U)return new s(g,I,e);if("@"===g[0]&&"@global "===g.substr(0,"@global ".length))return new i(g,I,e);var t=e.parent;return t&&("global"===t.type||t.options.parent&&"global"===t.options.parent.type)&&(e.scoped=!1),!1===e.scoped&&(e.selector=g),null},onProcessRule:function(g){"style"===g.type&&(function(g){var I=g.options,e=g.style,t=e?e[U]:null;if(t){for(var C in t)I.sheet.addRule(C,t[C],Object(n.a)({},I,{selector:A(C,g.selector)}));delete e[U]}}(g),function(g){var I=g.options,e=g.style;for(var t in e)if("@"===t[0]&&t.substr(0,U.length)===U){var C=A(t.substr(U.length),g.selector);I.sheet.addRule(C,e[t],Object(n.a)({},I,{selector:C})),delete e[t]}}(g))}}},a=/\s*,\s*/g,r=/&/g,o=/\$([\w-]+)/g;var d=function(){function g(g,I){return function(e,t){var C=g.getRule(t)||I&&I.getRule(t);return C?(C=C).selector:t}}function I(g,I){for(var e=I.split(a),t=g.split(a),C="",Q=0;Q<e.length;Q++)for(var F=e[Q],B=0;B<t.length;B++){var n=t[B];C&&(C+=", "),C+=-1!==n.indexOf("&")?n.replace(r,F):F+" "+n}return C}function e(g,I,e){if(e)return Object(n.a)({},e,{index:e.index+1});var t=g.options.nestingLevel;t=void 0===t?1:t+1;var C=Object(n.a)({},g.options,{nestingLevel:t,index:I.indexOf(g)+1});return delete C.name,C}return{onProcessStyle:function(t,C,Q){if("style"!==C.type)return t;var F,B,U=C,s=U.options.parent;for(var i in t){var c=-1!==i.indexOf("&"),A="@"===i[0];if(c||A){if(F=e(U,s,F),c){var l=I(i,U.selector);B||(B=g(s,Q)),l=l.replace(o,B),s.addRule(l,t[i],Object(n.a)({},F,{selector:l}))}else A&&s.addRule(i,{},F).addRule(U.key,t[i],{selector:U.selector});delete t[i]}}return t}}},u=/[A-Z]/g,y=/^ms-/,b={};function Z(g){return"-"+g.toLowerCase()}var m=function(g){if(b.hasOwnProperty(g))return b[g];var I=g.replace(u,Z);return b[g]=y.test(I)?"-"+I:I};function x(g){var I={};for(var e in g){I[0===e.indexOf("--")?e:m(e)]=g[e]}return g.fallbacks&&(Array.isArray(g.fallbacks)?I.fallbacks=g.fallbacks.map(x):I.fallbacks=x(g.fallbacks)),I}var R=function(){return{onProcessStyle:function(g){if(Array.isArray(g)){for(var I=0;I<g.length;I++)g[I]=x(g[I]);return g}return x(g)},onChangeValue:function(g,I,e){if(0===I.indexOf("--"))return g;var t=m(I);return I===t?g:(e.prop(t,g),null)}}},S=t.f&&CSS?CSS.px:"px",G=t.f&&CSS?CSS.ms:"ms",L=t.f&&CSS?CSS.percent:"%";function V(g){var I=/(-[a-z])/g,e=function(g){return g[1].toUpperCase()},t={};for(var C in g)t[C]=g[C],t[C.replace(I,e)]=g[C];return t}var h=V({"animation-delay":G,"animation-duration":G,"background-position":S,"background-position-x":S,"background-position-y":S,"background-size":S,border:S,"border-bottom":S,"border-bottom-left-radius":S,"border-bottom-right-radius":S,"border-bottom-width":S,"border-left":S,"border-left-width":S,"border-radius":S,"border-right":S,"border-right-width":S,"border-top":S,"border-top-left-radius":S,"border-top-right-radius":S,"border-top-width":S,"border-width":S,margin:S,"margin-bottom":S,"margin-left":S,"margin-right":S,"margin-top":S,padding:S,"padding-bottom":S,"padding-left":S,"padding-right":S,"padding-top":S,"mask-position-x":S,"mask-position-y":S,"mask-size":S,height:S,width:S,"min-height":S,"max-height":S,"min-width":S,"max-width":S,bottom:S,left:S,top:S,right:S,"box-shadow":S,"text-shadow":S,"column-gap":S,"column-rule":S,"column-rule-width":S,"column-width":S,"font-size":S,"font-size-delta":S,"letter-spacing":S,"text-indent":S,"text-stroke":S,"text-stroke-width":S,"word-spacing":S,motion:S,"motion-offset":S,outline:S,"outline-offset":S,"outline-width":S,perspective:S,"perspective-origin-x":L,"perspective-origin-y":L,"transform-origin":L,"transform-origin-x":L,"transform-origin-y":L,"transform-origin-z":L,"transition-delay":G,"transition-duration":G,"vertical-align":S,"flex-basis":S,"shape-margin":S,size:S,grid:S,"grid-gap":S,"grid-row-gap":S,"grid-column-gap":S,"grid-template-rows":S,"grid-template-columns":S,"grid-auto-rows":S,"grid-auto-columns":S,"box-shadow-x":S,"box-shadow-y":S,"box-shadow-blur":S,"box-shadow-spread":S,"font-line-height":S,"text-shadow-x":S,"text-shadow-y":S,"text-shadow-blur":S});function D(g,I,e){if(!I)return I;if(Array.isArray(I))for(var t=0;t<I.length;t++)I[t]=D(g,I[t],e);else if("object"===typeof I)if("fallbacks"===g)for(var C in I)I[C]=D(C,I[C],e);else for(var Q in I)I[Q]=D(g+"-"+Q,I[Q],e);else if("number"===typeof I){var F=e[g]||h[g];return F?"function"===typeof F?F(I).toString():""+I+F:I.toString()}return I}var p=function(g){void 0===g&&(g={});var I=V(g);return{onProcessStyle:function(g,e){if("style"!==e.type)return g;for(var t in g)g[t]=D(t,g[t],I);return g},onChangeValue:function(g,e){return D(e,g,I)}}},E=e(266),N=e(168),W="",f="",X="",J="",v=E.a&&"ontouchstart"in document.documentElement;if(E.a){var k={Moz:"-moz-",ms:"-ms-",O:"-o-",Webkit:"-webkit-"},H=document.createElement("p").style;for(var M in k)if(M+"Transform"in H){W=M,f=k[M];break}"Webkit"===W&&"msHyphens"in H&&(W="ms",f=k.ms,J="edge"),"Webkit"===W&&"-apple-trailing-word"in H&&(X="apple")}var Y=W,w=f,T=X,z=J,O=v;var K={noPrefill:["appearance"],supportedProperty:function(g){return"appearance"===g&&("ms"===Y?"-webkit-"+g:w+g)}},j={noPrefill:["color-adjust"],supportedProperty:function(g){return"color-adjust"===g&&("Webkit"===Y?w+"print-"+g:g)}},P=/[-\s]+(.)?/g;function _(g,I){return I?I.toUpperCase():""}function q(g){return g.replace(P,_)}function $(g){return q("-"+g)}var gg,Ig={noPrefill:["mask"],supportedProperty:function(g,I){if(!/^mask/.test(g))return!1;if("Webkit"===Y){if(q("mask-image")in I)return g;if(Y+$("mask-image")in I)return w+g}return g}},eg={noPrefill:["text-orientation"],supportedProperty:function(g){return"text-orientation"===g&&("apple"!==T||O?g:w+g)}},tg={noPrefill:["transform"],supportedProperty:function(g,I,e){return"transform"===g&&(e.transform?g:w+g)}},Cg={noPrefill:["transition"],supportedProperty:function(g,I,e){return"transition"===g&&(e.transition?g:w+g)}},Qg={noPrefill:["writing-mode"],supportedProperty:function(g){return"writing-mode"===g&&("Webkit"===Y||"ms"===Y&&"edge"!==z?w+g:g)}},Fg={noPrefill:["user-select"],supportedProperty:function(g){return"user-select"===g&&("Moz"===Y||"ms"===Y||"apple"===T?w+g:g)}},Bg={supportedProperty:function(g,I){return!!/^break-/.test(g)&&("Webkit"===Y?"WebkitColumn"+$(g)in I&&w+"column-"+g:"Moz"===Y&&("page"+$(g)in I&&"page-"+g))}},ng={supportedProperty:function(g,I){if(!/^(border|margin|padding)-inline/.test(g))return!1;if("Moz"===Y)return g;var e=g.replace("-inline","");return Y+$(e)in I&&w+e}},Ug={supportedProperty:function(g,I){return q(g)in I&&g}},sg={supportedProperty:function(g,I){var e=$(g);return"-"===g[0]||"-"===g[0]&&"-"===g[1]?g:Y+e in I?w+g:"Webkit"!==Y&&"Webkit"+e in I&&"-webkit-"+g}},ig={supportedProperty:function(g){return"scroll-snap"===g.substring(0,11)&&("ms"===Y?""+w+g:g)}},cg={supportedProperty:function(g){return"overscroll-behavior"===g&&("ms"===Y?w+"scroll-chaining":g)}},Ag={"flex-grow":"flex-positive","flex-shrink":"flex-negative","flex-basis":"flex-preferred-size","justify-content":"flex-pack",order:"flex-order","align-items":"flex-align","align-content":"flex-line-pack"},lg={supportedProperty:function(g,I){var e=Ag[g];return!!e&&(Y+$(e)in I&&w+e)}},ag={flex:"box-flex","flex-grow":"box-flex","flex-direction":["box-orient","box-direction"],order:"box-ordinal-group","align-items":"box-align","flex-flow":["box-orient","box-direction"],"justify-content":"box-pack"},rg=Object.keys(ag),og=function(g){return w+g},dg=[K,j,Ig,eg,tg,Cg,Qg,Fg,Bg,ng,Ug,sg,ig,cg,lg,{supportedProperty:function(g,I,e){var t=e.multiple;if(rg.indexOf(g)>-1){var C=ag[g];if(!Array.isArray(C))return Y+$(C)in I&&w+C;if(!t)return!1;for(var Q=0;Q<C.length;Q++)if(!(Y+$(C[0])in I))return!1;return C.map(og)}return!1}}],ug=dg.filter((function(g){return g.supportedProperty})).map((function(g){return g.supportedProperty})),yg=dg.filter((function(g){return g.noPrefill})).reduce((function(g,I){return g.push.apply(g,Object(N.a)(I.noPrefill)),g}),[]),bg={};if(E.a){gg=document.createElement("p");var Zg=window.getComputedStyle(document.documentElement,"");for(var mg in Zg)isNaN(mg)||(bg[Zg[mg]]=Zg[mg]);yg.forEach((function(g){return delete bg[g]}))}function xg(g,I){if(void 0===I&&(I={}),!gg)return g;if(null!=bg[g])return bg[g];"transition"!==g&&"transform"!==g||(I[g]=g in gg.style);for(var e=0;e<ug.length&&(bg[g]=ug[e](g,gg.style,I),!bg[g]);e++);try{gg.style[g]=""}catch(t){return!1}return bg[g]}var Rg,Sg={},Gg={transition:1,"transition-property":1,"-webkit-transition":1,"-webkit-transition-property":1},Lg=/(^\s*[\w-]+)|, (\s*[\w-]+)(?![^()]*\))/g;function Vg(g,I,e){if("var"===I)return"var";if("all"===I)return"all";if("all"===e)return", all";var t=I?xg(I):", "+xg(e);return t||(I||e)}function hg(g,I){var e=I;if(!Rg||"content"===g)return I;if("string"!==typeof e||!isNaN(parseInt(e,10)))return e;var t=g+e;if(null!=Sg[t])return Sg[t];try{Rg.style[g]=e}catch(C){return Sg[t]=!1,!1}if(Gg[g])e=e.replace(Lg,Vg);else if(""===Rg.style[g]&&("-ms-flex"===(e=w+e)&&(Rg.style[g]="-ms-flexbox"),Rg.style[g]=e,""===Rg.style[g]))return Sg[t]=!1,!1;return Rg.style[g]="",Sg[t]=e,Sg[t]}E.a&&(Rg=document.createElement("p"));var Dg=function(){function g(I){for(var e in I){var C=I[e];if("fallbacks"===e&&Array.isArray(C))I[e]=C.map(g);else{var Q=!1,F=xg(e);F&&F!==e&&(Q=!0);var B=!1,n=hg(F,Object(t.g)(C));n&&n!==C&&(B=!0),(Q||B)&&(Q&&delete I[e],I[F||e]=n||C)}}return I}return{onProcessRule:function(g){if("keyframes"===g.type){var I=g;I.at="-"===(e=I.at)[1]||"ms"===Y?e:"@"+w+"keyframes"+e.substr(10)}var e},onProcessStyle:function(I,e){return"style"!==e.type?I:g(I)},onChangeValue:function(g,I){return hg(I,Object(t.g)(g))||g}}};var pg=function(){var g=function(g,I){return g.length===I.length?g>I?1:-1:g.length-I.length};return{onProcessStyle:function(I,e){if("style"!==e.type)return I;for(var t={},C=Object.keys(I).sort(g),Q=0;Q<C.length;Q++)t[C[Q]]=I[C[Q]];return t}}};function Eg(){return{plugins:[B(),l(),d(),R(),p(),"undefined"===typeof window?null:Dg(),pg()]}}},function(g,I,e){"use strict";var t=e(16),C=e(5),Q=e(427),F=e(0),B=(e(4),e(14)),n=e(164),U=e(205),s=e(21),i=e(30),c=e(49),A=e(183);function l(g,I){return parseInt(g[I],10)||0}var a="undefined"!==typeof window?F.useLayoutEffect:F.useEffect,r={visibility:"hidden",position:"absolute",overflow:"hidden",height:0,top:0,left:0,transform:"translateZ(0)"},o=F.forwardRef((function(g,I){var e=g.onChange,Q=g.rows,B=g.rowsMax,n=g.rowsMin,U=void 0===n?1:n,s=g.style,i=g.value,o=Object(t.a)(g,["onChange","rows","rowsMax","rowsMin","style","value"]),d=Q||U,u=F.useRef(null!=i).current,y=F.useRef(null),b=Object(c.a)(I,y),Z=F.useRef(null),m=F.useRef(0),x=F.useState({}),R=x[0],S=x[1],G=F.useCallback((function(){var I=y.current,e=window.getComputedStyle(I),t=Z.current;t.style.width=e.width,t.value=I.value||g.placeholder||"x","\n"===t.value.slice(-1)&&(t.value+=" ");var C=e["box-sizing"],Q=l(e,"padding-bottom")+l(e,"padding-top"),F=l(e,"border-bottom-width")+l(e,"border-top-width"),n=t.scrollHeight-Q;t.value="x";var U=t.scrollHeight-Q,s=n;d&&(s=Math.max(Number(d)*U,s)),B&&(s=Math.min(Number(B)*U,s));var i=(s=Math.max(s,U))+("border-box"===C?Q+F:0),c=Math.abs(s-n)<=1;S((function(g){return m.current<20&&(i>0&&Math.abs((g.outerHeightStyle||0)-i)>1||g.overflow!==c)?(m.current+=1,{overflow:c,outerHeightStyle:i}):g}))}),[B,d,g.placeholder]);F.useEffect((function(){var g=Object(A.a)((function(){m.current=0,G()}));return window.addEventListener("resize",g),function(){g.clear(),window.removeEventListener("resize",g)}}),[G]),a((function(){G()})),F.useEffect((function(){m.current=0}),[i]);return F.createElement(F.Fragment,null,F.createElement("textarea",Object(C.a)({value:i,onChange:function(g){m.current=0,u||G(),e&&e(g)},ref:b,rows:d,style:Object(C.a)({height:R.outerHeightStyle,overflow:R.overflow?"hidden":null},s)},o)),F.createElement("textarea",{"aria-hidden":!0,className:g.className,readOnly:!0,ref:Z,tabIndex:-1,style:Object(C.a)({},r,s)}))})),d=e(263),u="undefined"===typeof window?F.useEffect:F.useLayoutEffect,y=F.forwardRef((function(g,I){var e=g["aria-describedby"],s=g.autoComplete,A=g.autoFocus,l=g.classes,a=g.className,r=(g.color,g.defaultValue),y=g.disabled,b=g.endAdornment,Z=(g.error,g.fullWidth),m=void 0!==Z&&Z,x=g.id,R=g.inputComponent,S=void 0===R?"input":R,G=g.inputProps,L=void 0===G?{}:G,V=g.inputRef,h=(g.margin,g.multiline),D=void 0!==h&&h,p=g.name,E=g.onBlur,N=g.onChange,W=g.onClick,f=g.onFocus,X=g.onKeyDown,J=g.onKeyUp,v=g.placeholder,k=g.readOnly,H=g.renderSuffix,M=g.rows,Y=g.rowsMax,w=g.rowsMin,T=g.startAdornment,z=g.type,O=void 0===z?"text":z,K=g.value,j=Object(t.a)(g,["aria-describedby","autoComplete","autoFocus","classes","className","color","defaultValue","disabled","endAdornment","error","fullWidth","id","inputComponent","inputProps","inputRef","margin","multiline","name","onBlur","onChange","onClick","onFocus","onKeyDown","onKeyUp","placeholder","readOnly","renderSuffix","rows","rowsMax","rowsMin","startAdornment","type","value"]),P=null!=L.value?L.value:K,_=F.useRef(null!=P).current,q=F.useRef(),$=F.useCallback((function(g){0}),[]),gg=Object(c.a)(L.ref,$),Ig=Object(c.a)(V,gg),eg=Object(c.a)(q,Ig),tg=F.useState(!1),Cg=tg[0],Qg=tg[1],Fg=Object(U.b)();var Bg=Object(n.a)({props:g,muiFormControl:Fg,states:["color","disabled","error","hiddenLabel","margin","required","filled"]});Bg.focused=Fg?Fg.focused:Cg,F.useEffect((function(){!Fg&&y&&Cg&&(Qg(!1),E&&E())}),[Fg,y,Cg,E]);var ng=Fg&&Fg.onFilled,Ug=Fg&&Fg.onEmpty,sg=F.useCallback((function(g){Object(d.b)(g)?ng&&ng():Ug&&Ug()}),[ng,Ug]);u((function(){_&&sg({value:P})}),[P,sg,_]);F.useEffect((function(){sg(q.current)}),[]);var ig=S,cg=Object(C.a)({},L,{ref:eg});"string"!==typeof ig?cg=Object(C.a)({inputRef:eg,type:O},cg,{ref:null}):D?!M||Y||w?(cg=Object(C.a)({rows:M,rowsMax:Y},cg),ig=o):ig="textarea":cg=Object(C.a)({type:O},cg);return F.useEffect((function(){Fg&&Fg.setAdornedStart(Boolean(T))}),[Fg,T]),F.createElement("div",Object(C.a)({className:Object(B.default)(l.root,l["color".concat(Object(i.a)(Bg.color||"primary"))],a,Bg.disabled&&l.disabled,Bg.error&&l.error,m&&l.fullWidth,Bg.focused&&l.focused,Fg&&l.formControl,D&&l.multiline,T&&l.adornedStart,b&&l.adornedEnd,"dense"===Bg.margin&&l.marginDense),onClick:function(g){q.current&&g.currentTarget===g.target&&q.current.focus(),W&&W(g)},ref:I},j),T,F.createElement(U.a.Provider,{value:null},F.createElement(ig,Object(C.a)({"aria-invalid":Bg.error,"aria-describedby":e,autoComplete:s,autoFocus:A,defaultValue:r,disabled:Bg.disabled,id:x,onAnimationStart:function(g){sg("mui-auto-fill-cancel"===g.animationName?q.current:{value:"x"})},name:p,placeholder:v,readOnly:k,required:Bg.required,rows:M,value:P,onKeyDown:X,onKeyUp:J},cg,{className:Object(B.default)(l.input,L.className,Bg.disabled&&l.disabled,D&&l.inputMultiline,Bg.hiddenLabel&&l.inputHiddenLabel,T&&l.inputAdornedStart,b&&l.inputAdornedEnd,"search"===O&&l.inputTypeSearch,"dense"===Bg.margin&&l.inputMarginDense),onBlur:function(g){E&&E(g),L.onBlur&&L.onBlur(g),Fg&&Fg.onBlur?Fg.onBlur(g):Qg(!1)},onChange:function(g){if(!_){var I=g.target||q.current;if(null==I)throw new Error(Object(Q.a)(1));sg({value:I.value})}for(var e=arguments.length,t=new Array(e>1?e-1:0),C=1;C<e;C++)t[C-1]=arguments[C];L.onChange&&L.onChange.apply(L,[g].concat(t)),N&&N.apply(void 0,[g].concat(t))},onFocus:function(g){Bg.disabled?g.stopPropagation():(f&&f(g),L.onFocus&&L.onFocus(g),Fg&&Fg.onFocus?Fg.onFocus(g):Qg(!0))}}))),b,H?H(Object(C.a)({},Bg,{startAdornment:T})):null)}));I.a=Object(s.a)((function(g){var I="light"===g.palette.type,e={color:"currentColor",opacity:I?.42:.5,transition:g.transitions.create("opacity",{duration:g.transitions.duration.shorter})},t={opacity:"0 !important"},Q={opacity:I?.42:.5};return{"@global":{"@keyframes mui-auto-fill":{},"@keyframes mui-auto-fill-cancel":{}},root:Object(C.a)({},g.typography.body1,{color:g.palette.text.primary,lineHeight:"1.1876em",boxSizing:"border-box",position:"relative",cursor:"text",display:"inline-flex",alignItems:"center","&$disabled":{color:g.palette.text.disabled,cursor:"default"}}),formControl:{},focused:{},disabled:{},adornedStart:{},adornedEnd:{},error:{},marginDense:{},multiline:{padding:"".concat(6,"px 0 ").concat(7,"px"),"&$marginDense":{paddingTop:3}},colorSecondary:{},fullWidth:{width:"100%"},input:{font:"inherit",letterSpacing:"inherit",color:"currentColor",padding:"".concat(6,"px 0 ").concat(7,"px"),border:0,boxSizing:"content-box",background:"none",height:"1.1876em",margin:0,WebkitTapHighlightColor:"transparent",display:"block",minWidth:0,width:"100%",animationName:"mui-auto-fill-cancel",animationDuration:"10ms","&::-webkit-input-placeholder":e,"&::-moz-placeholder":e,"&:-ms-input-placeholder":e,"&::-ms-input-placeholder":e,"&:focus":{outline:0},"&:invalid":{boxShadow:"none"},"&::-webkit-search-decoration":{"-webkit-appearance":"none"},"label[data-shrink=false] + $formControl &":{"&::-webkit-input-placeholder":t,"&::-moz-placeholder":t,"&:-ms-input-placeholder":t,"&::-ms-input-placeholder":t,"&:focus::-webkit-input-placeholder":Q,"&:focus::-moz-placeholder":Q,"&:focus:-ms-input-placeholder":Q,"&:focus::-ms-input-placeholder":Q},"&$disabled":{opacity:1},"&:-webkit-autofill":{animationDuration:"5000s",animationName:"mui-auto-fill"}},inputMarginDense:{paddingTop:3},inputMultiline:{height:"auto",resize:"none",padding:0},inputTypeSearch:{"-moz-appearance":"textfield","-webkit-appearance":"textfield"},inputAdornedStart:{},inputAdornedEnd:{},inputHiddenLabel:{}}}),{name:"MuiInputBase"})(y)},,,,,,,,,,,,,,,,,,,,,function(g,I,e){"use strict";e(951),e(952),e(953),e(954),e(955),e(956),e(957),e(958),e(959),e(960),e(961),e(962),e(963),e(964),e(965),e(966),e(967),e(968),e(969),e(970),e(971),e(972),e(973),e(974),e(975),e(976),e(977),e(385),e(978),e(979),e(980),e(981),e(982),e(983),e(984),e(985),e(986),e(987),e(988),e(989),e(990),e(991),e(992),e(994),e(995),e(997),e(998),e(999),e(1e3),e(1001),e(1002),e(1003),e(1004),e(1005),e(1006),e(1007),e(1008),e(1010),e(1011),e(1012),e(1013),e(1014),e(1015),e(1016),e(1017),e(1018),e(1019),e(1020),e(1021),e(1022),e(1024),e(1025),e(1026),e(1027),e(1028),e(1029),e(1031),e(1033),e(1035),e(1036),e(1037),e(1038),e(1039),e(1040),e(1041),e(1042),e(1043),e(1044),e(1045),e(1046),e(1047),e(1048),e(1049),e(1050),e(1051),e(1052),e(1053),e(1054),e(1056),e(1057),e(1060),e(1061),e(1062),e(1064),e(1065),e(1066),e(1067),e(1068),e(1069),e(1070),e(1071),e(1072),e(1073),e(1074),e(1075),e(647),e(1076),e(1077),e(1078),e(1079),e(1080),e(1081),e(1082),e(648),e(1083),e(1084),e(1085),e(1086),e(1087),e(1088),e(1089),e(1090),e(1091),e(1092),e(1093),e(1094),e(1095),e(1096),e(1097),e(1098),e(1099),e(1100),e(1101),e(1102),e(1103),e(1104),e(1105),e(1106),e(1107),e(1108),e(1110),e(1111),e(1112),e(1113),e(1114),e(1115),e(1116),e(1117),e(1118),e(1119),e(1120),e(1121),e(1122),e(1123),e(1124),e(1125),e(1126),e(1127),e(1128),e(1129),e(1130),e(1131),e(1132),e(1133),e(1134),e(1135),e(1136),e(1137),e(1138),e(1139),e(1140),e(1141),e(1142),e(1143),e(1144),e(1145),e(1146),e(1147),e(1148),e(1149),e(1152),e(656),e(1153)},function(g,I,e){"use strict";var t=e(22),C=e(50),Q=e(177),F=e(189),B=e(68),n=e(488),U=e(620),s=e(41),i=e(90),c=e(276),A=e(57),l=e(60),a=e(91),r=e(145),o=e(188),d=e(228),u=e(230),y=e(329),b=e(250),Z=e(623),m=e(487),x=e(121),R=e(76),S=e(382),G=e(135),L=e(126),V=e(484),h=e(383),D=e(326),p=e(325),E=e(64),N=e(624),W=e(147),f=e(190),X=e(146),J=e(118).forEach,v=h("hidden"),k=E("toPrimitive"),H=X.set,M=X.getterFor("Symbol"),Y=Object.prototype,w=C.Symbol,T=Q("JSON","stringify"),z=x.f,O=R.f,K=Z.f,j=S.f,P=V("symbols"),_=V("op-symbols"),q=V("string-to-symbol-registry"),$=V("symbol-to-string-registry"),gg=V("wks"),Ig=C.QObject,eg=!Ig||!Ig.prototype||!Ig.prototype.findChild,tg=B&&s((function(){return 7!=u(O({},"a",{get:function(){return O(this,"a",{value:7}).a}})).a}))?function(g,I,e){var t=z(Y,I);t&&delete Y[I],O(g,I,e),t&&g!==Y&&O(Y,I,t)}:O,Cg=function(g,I){var e=P[g]=u(w.prototype);return H(e,{type:"Symbol",tag:g,description:I}),B||(e.description=I),e},Qg=U?function(g){return"symbol"==typeof g}:function(g){return Object(g)instanceof w},Fg=function(g,I,e){g===Y&&Fg(_,I,e),l(g);var t=o(I,!0);return l(e),i(P,t)?(e.enumerable?(i(g,v)&&g[v][t]&&(g[v][t]=!1),e=u(e,{enumerable:d(0,!1)})):(i(g,v)||O(g,v,d(1,{})),g[v][t]=!0),tg(g,t,e)):O(g,t,e)},Bg=function(g,I){l(g);var e=r(I),t=y(e).concat(ig(e));return J(t,(function(I){B&&!ng.call(e,I)||Fg(g,I,e[I])})),g},ng=function(g){var I=o(g,!0),e=j.call(this,I);return!(this===Y&&i(P,I)&&!i(_,I))&&(!(e||!i(this,I)||!i(P,I)||i(this,v)&&this[v][I])||e)},Ug=function(g,I){var e=r(g),t=o(I,!0);if(e!==Y||!i(P,t)||i(_,t)){var C=z(e,t);return!C||!i(P,t)||i(e,v)&&e[v][t]||(C.enumerable=!0),C}},sg=function(g){var I=K(r(g)),e=[];return J(I,(function(g){i(P,g)||i(D,g)||e.push(g)})),e},ig=function(g){var I=g===Y,e=K(I?_:r(g)),t=[];return J(e,(function(g){!i(P,g)||I&&!i(Y,g)||t.push(P[g])})),t};(n||(L((w=function(){if(this instanceof w)throw TypeError("Symbol is not a constructor");var g=arguments.length&&void 0!==arguments[0]?String(arguments[0]):void 0,I=p(g),e=function g(e){this===Y&&g.call(_,e),i(this,v)&&i(this[v],I)&&(this[v][I]=!1),tg(this,I,d(1,e))};return B&&eg&&tg(Y,I,{configurable:!0,set:e}),Cg(I,g)}).prototype,"toString",(function(){return M(this).tag})),L(w,"withoutSetter",(function(g){return Cg(p(g),g)})),S.f=ng,R.f=Fg,x.f=Ug,b.f=Z.f=sg,m.f=ig,N.f=function(g){return Cg(E(g),g)},B&&(O(w.prototype,"description",{configurable:!0,get:function(){return M(this).description}}),F||L(Y,"propertyIsEnumerable",ng,{unsafe:!0}))),t({global:!0,wrap:!0,forced:!n,sham:!n},{Symbol:w}),J(y(gg),(function(g){W(g)})),t({target:"Symbol",stat:!0,forced:!n},{for:function(g){var I=String(g);if(i(q,I))return q[I];var e=w(I);return q[I]=e,$[e]=I,e},keyFor:function(g){if(!Qg(g))throw TypeError(g+" is not a symbol");if(i($,g))return $[g]},useSetter:function(){eg=!0},useSimple:function(){eg=!1}}),t({target:"Object",stat:!0,forced:!n,sham:!B},{create:function(g,I){return void 0===I?u(g):Bg(u(g),I)},defineProperty:Fg,defineProperties:Bg,getOwnPropertyDescriptor:Ug}),t({target:"Object",stat:!0,forced:!n},{getOwnPropertyNames:sg,getOwnPropertySymbols:ig}),t({target:"Object",stat:!0,forced:s((function(){m.f(1)}))},{getOwnPropertySymbols:function(g){return m.f(a(g))}}),T)&&t({target:"JSON",stat:!0,forced:!n||s((function(){var g=w();return"[null]"!=T([g])||"{}"!=T({a:g})||"{}"!=T(Object(g))}))},{stringify:function(g,I,e){for(var t,C=[g],Q=1;arguments.length>Q;)C.push(arguments[Q++]);if(t=I,(A(I)||void 0!==g)&&!Qg(g))return c(I)||(I=function(g,I){if("function"==typeof t&&(I=t.call(this,g,I)),!Qg(I))return I}),C[1]=I,T.apply(null,C)}});w.prototype[k]||G(w.prototype,k,w.prototype.valueOf),f(w,"Symbol"),D[v]=!0},function(g,I,e){"use strict";var t=e(22),C=e(68),Q=e(50),F=e(90),B=e(57),n=e(76).f,U=e(617),s=Q.Symbol;if(C&&"function"==typeof s&&(!("description"in s.prototype)||void 0!==s().description)){var i={},c=function(){var g=arguments.length<1||void 0===arguments[0]?void 0:String(arguments[0]),I=this instanceof c?new s(g):void 0===g?s():s(g);return""===g&&(i[I]=!0),I};U(c,s);var A=c.prototype=s.prototype;A.constructor=c;var l=A.toString,a="Symbol(test)"==String(s("test")),r=/^Symbol\((.*)\)[^)]+$/;n(A,"description",{configurable:!0,get:function(){var g=B(this)?this.valueOf():this,I=l.call(g);if(F(i,g))return"";var e=a?I.slice(7,-1):I.replace(r,"$1");return""===e?void 0:e}}),t({global:!0,forced:!0},{Symbol:c})}},function(g,I,e){e(147)("asyncIterator")},function(g,I,e){e(147)("hasInstance")},function(g,I,e){e(147)("isConcatSpreadable")},function(g,I,e){e(147)("iterator")},function(g,I,e){e(147)("match")},function(g,I,e){e(147)("replace")},function(g,I,e){e(147)("search")},function(g,I,e){e(147)("species")},function(g,I,e){e(147)("split")},function(g,I,e){e(147)("toPrimitive")},function(g,I,e){e(147)("toStringTag")},function(g,I,e){e(147)("unscopables")},function(g,I,e){"use strict";var t=e(22),C=e(41),Q=e(276),F=e(57),B=e(91),n=e(69),U=e(251),s=e(330),i=e(331),c=e(64),A=e(489),l=c("isConcatSpreadable"),a=A>=51||!C((function(){var g=[];return g[l]=!1,g.concat()[0]!==g})),r=i("concat"),o=function(g){if(!F(g))return!1;var I=g[l];return void 0!==I?!!I:Q(g)};t({target:"Array",proto:!0,forced:!a||!r},{concat:function(g){var I,e,t,C,Q,F=B(this),i=s(F,0),c=0;for(I=-1,t=arguments.length;I<t;I++)if(o(Q=-1===I?F:arguments[I])){if(c+(C=n(Q.length))>9007199254740991)throw TypeError("Maximum allowed index exceeded");for(e=0;e<C;e++,c++)e in Q&&U(i,c,Q[e])}else{if(c>=9007199254740991)throw TypeError("Maximum allowed index exceeded");U(i,c++,Q)}return i.length=c,i}})},function(g,I,e){var t=e(22),C=e(625),Q=e(232);t({target:"Array",proto:!0},{copyWithin:C}),Q("copyWithin")},function(g,I,e){"use strict";var t=e(22),C=e(118).every,Q=e(216),F=e(136),B=Q("every"),n=F("every");t({target:"Array",proto:!0,forced:!B||!n},{every:function(g){return C(this,g,arguments.length>1?arguments[1]:void 0)}})},function(g,I,e){var t=e(22),C=e(491),Q=e(232);t({target:"Array",proto:!0},{fill:C}),Q("fill")},function(g,I,e){"use strict";var t=e(22),C=e(118).filter,Q=e(331),F=e(136),B=Q("filter"),n=F("filter");t({target:"Array",proto:!0,forced:!B||!n},{filter:function(g){return C(this,g,arguments.length>1?arguments[1]:void 0)}})},function(g,I,e){"use strict";var t=e(22),C=e(118).find,Q=e(232),F=e(136),B=!0,n=F("find");"find"in[]&&Array(1).find((function(){B=!1})),t({target:"Array",proto:!0,forced:B||!n},{find:function(g){return C(this,g,arguments.length>1?arguments[1]:void 0)}}),Q("find")},function(g,I,e){"use strict";var t=e(22),C=e(118).findIndex,Q=e(232),F=e(136),B=!0,n=F("findIndex");"findIndex"in[]&&Array(1).findIndex((function(){B=!1})),t({target:"Array",proto:!0,forced:B||!n},{findIndex:function(g){return C(this,g,arguments.length>1?arguments[1]:void 0)}}),Q("findIndex")},function(g,I,e){"use strict";var t=e(22),C=e(626),Q=e(91),F=e(69),B=e(162),n=e(330);t({target:"Array",proto:!0},{flat:function(){var g=arguments.length?arguments[0]:void 0,I=Q(this),e=F(I.length),t=n(I,0);return t.length=C(t,I,I,e,0,void 0===g?1:B(g)),t}})},function(g,I,e){"use strict";var t=e(22),C=e(626),Q=e(91),F=e(69),B=e(163),n=e(330);t({target:"Array",proto:!0},{flatMap:function(g){var I,e=Q(this),t=F(e.length);return B(g),(I=n(e,0)).length=C(I,e,e,t,0,1,g,arguments.length>1?arguments[1]:void 0),I}})},function(g,I,e){"use strict";var t=e(22),C=e(627);t({target:"Array",proto:!0,forced:[].forEach!=C},{forEach:C})},function(g,I,e){var t=e(22),C=e(628);t({target:"Array",stat:!0,forced:!e(384)((function(g){Array.from(g)}))},{from:C})},function(g,I,e){"use strict";var t=e(22),C=e(327).includes,Q=e(232);t({target:"Array",proto:!0,forced:!e(136)("indexOf",{ACCESSORS:!0,1:0})},{includes:function(g){return C(this,g,arguments.length>1?arguments[1]:void 0)}}),Q("includes")},function(g,I,e){"use strict";var t=e(22),C=e(327).indexOf,Q=e(216),F=e(136),B=[].indexOf,n=!!B&&1/[1].indexOf(1,-0)<0,U=Q("indexOf"),s=F("indexOf",{ACCESSORS:!0,1:0});t({target:"Array",proto:!0,forced:n||!U||!s},{indexOf:function(g){return n?B.apply(this,arguments)||0:C(this,g,arguments.length>1?arguments[1]:void 0)}})},function(g,I,e){"use strict";var t=e(22),C=e(324),Q=e(145),F=e(216),B=[].join,n=C!=Object,U=F("join",",");t({target:"Array",proto:!0,forced:n||!U},{join:function(g){return B.call(Q(this),void 0===g?",":g)}})},function(g,I,e){var t=e(22),C=e(633);t({target:"Array",proto:!0,forced:C!==[].lastIndexOf},{lastIndexOf:C})},function(g,I,e){"use strict";var t=e(22),C=e(118).map,Q=e(331),F=e(136),B=Q("map"),n=F("map");t({target:"Array",proto:!0,forced:!B||!n},{map:function(g){return C(this,g,arguments.length>1?arguments[1]:void 0)}})},function(g,I,e){"use strict";var t=e(22),C=e(41),Q=e(251);t({target:"Array",stat:!0,forced:C((function(){function g(){}return!(Array.of.call(g)instanceof g)}))},{of:function(){for(var g=0,I=arguments.length,e=new("function"==typeof this?this:Array)(I);I>g;)Q(e,g,arguments[g++]);return e.length=I,e}})},function(g,I,e){"use strict";var t=e(22),C=e(386).left,Q=e(216),F=e(136),B=Q("reduce"),n=F("reduce",{1:0});t({target:"Array",proto:!0,forced:!B||!n},{reduce:function(g){return C(this,g,arguments.length,arguments.length>1?arguments[1]:void 0)}})},function(g,I,e){"use strict";var t=e(22),C=e(386).right,Q=e(216),F=e(136),B=Q("reduceRight"),n=F("reduce",{1:0});t({target:"Array",proto:!0,forced:!B||!n},{reduceRight:function(g){return C(this,g,arguments.length,arguments.length>1?arguments[1]:void 0)}})},function(g,I,e){"use strict";var t=e(22),C=e(276),Q=[].reverse,F=[1,2];t({target:"Array",proto:!0,forced:String(F)===String(F.reverse())},{reverse:function(){return C(this)&&(this.length=this.length),Q.call(this)}})},function(g,I,e){"use strict";var t=e(22),C=e(57),Q=e(276),F=e(229),B=e(69),n=e(145),U=e(251),s=e(64),i=e(331),c=e(136),A=i("slice"),l=c("slice",{ACCESSORS:!0,0:0,1:2}),a=s("species"),r=[].slice,o=Math.max;t({target:"Array",proto:!0,forced:!A||!l},{slice:function(g,I){var e,t,s,i=n(this),c=B(i.length),A=F(g,c),l=F(void 0===I?c:I,c);if(Q(i)&&("function"!=typeof(e=i.constructor)||e!==Array&&!Q(e.prototype)?C(e)&&null===(e=e[a])&&(e=void 0):e=void 0,e===Array||void 0===e))return r.call(i,A,l);for(t=new(void 0===e?Array:e)(o(l-A,0)),s=0;A<l;A++,s++)A in i&&U(t,s,i[A]);return t.length=s,t}})},function(g,I,e){"use strict";var t=e(22),C=e(118).some,Q=e(216),F=e(136),B=Q("some"),n=F("some");t({target:"Array",proto:!0,forced:!B||!n},{some:function(g){return C(this,g,arguments.length>1?arguments[1]:void 0)}})},function(g,I,e){"use strict";var t=e(22),C=e(163),Q=e(91),F=e(41),B=e(216),n=[],U=n.sort,s=F((function(){n.sort(void 0)})),i=F((function(){n.sort(null)})),c=B("sort");t({target:"Array",proto:!0,forced:s||!i||!c},{sort:function(g){return void 0===g?U.call(Q(this)):U.call(Q(this),C(g))}})},function(g,I,e){e(278)("Array")},function(g,I,e){"use strict";var t=e(22),C=e(229),Q=e(162),F=e(69),B=e(91),n=e(330),U=e(251),s=e(331),i=e(136),c=s("splice"),A=i("splice",{ACCESSORS:!0,0:0,1:2}),l=Math.max,a=Math.min;t({target:"Array",proto:!0,forced:!c||!A},{splice:function(g,I){var e,t,s,i,c,A,r=B(this),o=F(r.length),d=C(g,o),u=arguments.length;if(0===u?e=t=0:1===u?(e=0,t=o-d):(e=u-2,t=a(l(Q(I),0),o-d)),o+e-t>9007199254740991)throw TypeError("Maximum allowed length exceeded");for(s=n(r,t),i=0;i<t;i++)(c=d+i)in r&&U(s,i,r[c]);if(s.length=t,e<t){for(i=d;i<o-t;i++)A=i+e,(c=i+t)in r?r[A]=r[c]:delete r[A];for(i=o;i>o-t+e;i--)delete r[i-1]}else if(e>t)for(i=o-t;i>d;i--)A=i+e-1,(c=i+t-1)in r?r[A]=r[c]:delete r[A];for(i=0;i<e;i++)r[i+d]=arguments[i+2];return r.length=o-t+e,s}})},function(g,I,e){e(232)("flat")},function(g,I,e){e(232)("flatMap")},function(g,I,e){"use strict";var t=e(22),C=e(50),Q=e(496),F=e(278),B=Q.ArrayBuffer;t({global:!0,forced:C.ArrayBuffer!==B},{ArrayBuffer:B}),F("ArrayBuffer")},function(g,I){var e=Math.abs,t=Math.pow,C=Math.floor,Q=Math.log,F=Math.LN2;g.exports={pack:function(g,I,B){var n,U,s,i=new Array(B),c=8*B-I-1,A=(1<<c)-1,l=A>>1,a=23===I?t(2,-24)-t(2,-77):0,r=g<0||0===g&&1/g<0?1:0,o=0;for((g=e(g))!=g||g===1/0?(U=g!=g?1:0,n=A):(n=C(Q(g)/F),g*(s=t(2,-n))<1&&(n--,s*=2),(g+=n+l>=1?a/s:a*t(2,1-l))*s>=2&&(n++,s/=2),n+l>=A?(U=0,n=A):n+l>=1?(U=(g*s-1)*t(2,I),n+=l):(U=g*t(2,l-1)*t(2,I),n=0));I>=8;i[o++]=255&U,U/=256,I-=8);for(n=n<<I|U,c+=I;c>0;i[o++]=255&n,n/=256,c-=8);return i[--o]|=128*r,i},unpack:function(g,I){var e,C=g.length,Q=8*C-I-1,F=(1<<Q)-1,B=F>>1,n=Q-7,U=C-1,s=g[U--],i=127&s;for(s>>=7;n>0;i=256*i+g[U],U--,n-=8);for(e=i&(1<<-n)-1,i>>=-n,n+=I;n>0;e=256*e+g[U],U--,n-=8);if(0===i)i=1-B;else{if(i===F)return e?NaN:s?-1/0:1/0;e+=t(2,I),i-=B}return(s?-1:1)*e*t(2,i-I)}}},function(g,I,e){"use strict";var t=e(22),C=e(41),Q=e(496),F=e(60),B=e(229),n=e(69),U=e(234),s=Q.ArrayBuffer,i=Q.DataView,c=s.prototype.slice;t({target:"ArrayBuffer",proto:!0,unsafe:!0,forced:C((function(){return!new s(2).slice(1,void 0).byteLength}))},{slice:function(g,I){if(void 0!==c&&void 0===I)return c.call(F(this),g);for(var e=F(this).byteLength,t=B(g,e),C=B(void 0===I?e:I,e),Q=new(U(this,s))(n(C-t)),A=new i(this),l=new i(Q),a=0;t<C;)l.setUint8(a++,A.getUint8(t++));return Q}})},function(g,I,e){var t=e(135),C=e(996),Q=e(64)("toPrimitive"),F=Date.prototype;Q in F||t(F,Q,C)},function(g,I,e){"use strict";var t=e(60),C=e(188);g.exports=function(g){if("string"!==g&&"number"!==g&&"default"!==g)throw TypeError("Incorrect hint");return C(t(this),"number"!==g)}},function(g,I,e){"use strict";var t=e(57),C=e(76),Q=e(178),F=e(64)("hasInstance"),B=Function.prototype;F in B||C.f(B,F,{value:function(g){if("function"!=typeof this||!t(g))return!1;if(!t(this.prototype))return g instanceof this;for(;g=Q(g);)if(this.prototype===g)return!0;return!1}})},function(g,I,e){var t=e(68),C=e(76).f,Q=Function.prototype,F=Q.toString,B=/^\s*function ([^ (]*)/;t&&!("name"in Q)&&C(Q,"name",{configurable:!0,get:function(){try{return F.call(this).match(B)[1]}catch(g){return""}}})},function(g,I,e){var t=e(50);e(190)(t.JSON,"JSON",!0)},function(g,I,e){"use strict";var t=e(387),C=e(636);g.exports=t("Map",(function(g){return function(){return g(this,arguments.length?arguments[0]:void 0)}}),C)},function(g,I,e){var t=e(22),C=e(637),Q=Math.acosh,F=Math.log,B=Math.sqrt,n=Math.LN2;t({target:"Math",stat:!0,forced:!Q||710!=Math.floor(Q(Number.MAX_VALUE))||Q(1/0)!=1/0},{acosh:function(g){return(g=+g)<1?NaN:g>94906265.62425156?F(g)+n:C(g-1+B(g-1)*B(g+1))}})},function(g,I,e){var t=e(22),C=Math.asinh,Q=Math.log,F=Math.sqrt;t({target:"Math",stat:!0,forced:!(C&&1/C(0)>0)},{asinh:function g(I){return isFinite(I=+I)&&0!=I?I<0?-g(-I):Q(I+F(I*I+1)):I}})},function(g,I,e){var t=e(22),C=Math.atanh,Q=Math.log;t({target:"Math",stat:!0,forced:!(C&&1/C(-0)<0)},{atanh:function(g){return 0==(g=+g)?g:Q((1+g)/(1-g))/2}})},function(g,I,e){var t=e(22),C=e(497),Q=Math.abs,F=Math.pow;t({target:"Math",stat:!0},{cbrt:function(g){return C(g=+g)*F(Q(g),1/3)}})},function(g,I,e){var t=e(22),C=Math.floor,Q=Math.log,F=Math.LOG2E;t({target:"Math",stat:!0},{clz32:function(g){return(g>>>=0)?31-C(Q(g+.5)*F):32}})},function(g,I,e){var t=e(22),C=e(389),Q=Math.cosh,F=Math.abs,B=Math.E;t({target:"Math",stat:!0,forced:!Q||Q(710)===1/0},{cosh:function(g){var I=C(F(g)-1)+1;return(I+1/(I*B*B))*(B/2)}})},function(g,I,e){var t=e(22),C=e(389);t({target:"Math",stat:!0,forced:C!=Math.expm1},{expm1:C})},function(g,I,e){e(22)({target:"Math",stat:!0},{fround:e(1009)})},function(g,I,e){var t=e(497),C=Math.abs,Q=Math.pow,F=Q(2,-52),B=Q(2,-23),n=Q(2,127)*(2-B),U=Q(2,-126);g.exports=Math.fround||function(g){var I,e,Q=C(g),s=t(g);return Q<U?s*(Q/U/B+1/F-1/F)*U*B:(e=(I=(1+B/F)*Q)-(I-Q))>n||e!=e?s*(1/0):s*e}},function(g,I,e){var t=e(22),C=Math.hypot,Q=Math.abs,F=Math.sqrt;t({target:"Math",stat:!0,forced:!!C&&C(1/0,NaN)!==1/0},{hypot:function(g,I){for(var e,t,C=0,B=0,n=arguments.length,U=0;B<n;)U<(e=Q(arguments[B++]))?(C=C*(t=U/e)*t+1,U=e):C+=e>0?(t=e/U)*t:e;return U===1/0?1/0:U*F(C)}})},function(g,I,e){var t=e(22),C=e(41),Q=Math.imul;t({target:"Math",stat:!0,forced:C((function(){return-5!=Q(4294967295,5)||2!=Q.length}))},{imul:function(g,I){var e=+g,t=+I,C=65535&e,Q=65535&t;return 0|C*Q+((65535&e>>>16)*Q+C*(65535&t>>>16)<<16>>>0)}})},function(g,I,e){var t=e(22),C=Math.log,Q=Math.LOG10E;t({target:"Math",stat:!0},{log10:function(g){return C(g)*Q}})},function(g,I,e){e(22)({target:"Math",stat:!0},{log1p:e(637)})},function(g,I,e){var t=e(22),C=Math.log,Q=Math.LN2;t({target:"Math",stat:!0},{log2:function(g){return C(g)/Q}})},function(g,I,e){e(22)({target:"Math",stat:!0},{sign:e(497)})},function(g,I,e){var t=e(22),C=e(41),Q=e(389),F=Math.abs,B=Math.exp,n=Math.E;t({target:"Math",stat:!0,forced:C((function(){return-2e-17!=Math.sinh(-2e-17)}))},{sinh:function(g){return F(g=+g)<1?(Q(g)-Q(-g))/2:(B(g-1)-B(-g-1))*(n/2)}})},function(g,I,e){var t=e(22),C=e(389),Q=Math.exp;t({target:"Math",stat:!0},{tanh:function(g){var I=C(g=+g),e=C(-g);return I==1/0?1:e==1/0?-1:(I-e)/(Q(g)+Q(-g))}})},function(g,I,e){e(190)(Math,"Math",!0)},function(g,I,e){var t=e(22),C=Math.ceil,Q=Math.floor;t({target:"Math",stat:!0},{trunc:function(g){return(g>0?Q:C)(g)}})},function(g,I,e){"use strict";var t=e(68),C=e(50),Q=e(328),F=e(126),B=e(90),n=e(176),U=e(388),s=e(188),i=e(41),c=e(230),A=e(250).f,l=e(121).f,a=e(76).f,r=e(280).trim,o=C.Number,d=o.prototype,u="Number"==n(c(d)),y=function(g){var I,e,t,C,Q,F,B,n,U=s(g,!1);if("string"==typeof U&&U.length>2)if(43===(I=(U=r(U)).charCodeAt(0))||45===I){if(88===(e=U.charCodeAt(2))||120===e)return NaN}else if(48===I){switch(U.charCodeAt(1)){case 66:case 98:t=2,C=49;break;case 79:case 111:t=8,C=55;break;default:return+U}for(F=(Q=U.slice(2)).length,B=0;B<F;B++)if((n=Q.charCodeAt(B))<48||n>C)return NaN;return parseInt(Q,t)}return+U};if(Q("Number",!o(" 0o1")||!o("0b1")||o("+0x1"))){for(var b,Z=function(g){var I=arguments.length<1?0:g,e=this;return e instanceof Z&&(u?i((function(){d.valueOf.call(e)})):"Number"!=n(e))?U(new o(y(I)),e,Z):y(I)},m=t?A(o):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),x=0;m.length>x;x++)B(o,b=m[x])&&!B(Z,b)&&a(Z,b,l(o,b));Z.prototype=d,d.constructor=Z,F(C,"Number",Z)}},function(g,I,e){e(22)({target:"Number",stat:!0},{EPSILON:Math.pow(2,-52)})},function(g,I,e){e(22)({target:"Number",stat:!0},{isFinite:e(1023)})},function(g,I,e){var t=e(50).isFinite;g.exports=Number.isFinite||function(g){return"number"==typeof g&&t(g)}},function(g,I,e){e(22)({target:"Number",stat:!0},{isInteger:e(638)})},function(g,I,e){e(22)({target:"Number",stat:!0},{isNaN:function(g){return g!=g}})},function(g,I,e){var t=e(22),C=e(638),Q=Math.abs;t({target:"Number",stat:!0},{isSafeInteger:function(g){return C(g)&&Q(g)<=9007199254740991}})},function(g,I,e){e(22)({target:"Number",stat:!0},{MAX_SAFE_INTEGER:9007199254740991})},function(g,I,e){e(22)({target:"Number",stat:!0},{MIN_SAFE_INTEGER:-9007199254740991})},function(g,I,e){var t=e(22),C=e(1030);t({target:"Number",stat:!0,forced:Number.parseFloat!=C},{parseFloat:C})},function(g,I,e){var t=e(50),C=e(280).trim,Q=e(390),F=t.parseFloat,B=1/F(Q+"-0")!==-1/0;g.exports=B?function(g){var I=C(String(g)),e=F(I);return 0===e&&"-"==I.charAt(0)?-0:e}:F},function(g,I,e){var t=e(22),C=e(1032);t({target:"Number",stat:!0,forced:Number.parseInt!=C},{parseInt:C})},function(g,I,e){var t=e(50),C=e(280).trim,Q=e(390),F=t.parseInt,B=/^[+-]?0[Xx]/,n=8!==F(Q+"08")||22!==F(Q+"0x16");g.exports=n?function(g,I){var e=C(String(g));return F(e,I>>>0||(B.test(e)?16:10))}:F},function(g,I,e){"use strict";var t=e(22),C=e(162),Q=e(1034),F=e(498),B=e(41),n=1..toFixed,U=Math.floor,s=function g(I,e,t){return 0===e?t:e%2===1?g(I,e-1,t*I):g(I*I,e/2,t)};t({target:"Number",proto:!0,forced:n&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==(0xde0b6b3a7640080).toFixed(0))||!B((function(){n.call({})}))},{toFixed:function(g){var I,e,t,B,n=Q(this),i=C(g),c=[0,0,0,0,0,0],A="",l="0",a=function(g,I){for(var e=-1,t=I;++e<6;)t+=g*c[e],c[e]=t%1e7,t=U(t/1e7)},r=function(g){for(var I=6,e=0;--I>=0;)e+=c[I],c[I]=U(e/g),e=e%g*1e7},o=function(){for(var g=6,I="";--g>=0;)if(""!==I||0===g||0!==c[g]){var e=String(c[g]);I=""===I?e:I+F.call("0",7-e.length)+e}return I};if(i<0||i>20)throw RangeError("Incorrect fraction digits");if(n!=n)return"NaN";if(n<=-1e21||n>=1e21)return String(n);if(n<0&&(A="-",n=-n),n>1e-21)if(e=(I=function(g){for(var I=0,e=g;e>=4096;)I+=12,e/=4096;for(;e>=2;)I+=1,e/=2;return I}(n*s(2,69,1))-69)<0?n*s(2,-I,1):n/s(2,I,1),e*=4503599627370496,(I=52-I)>0){for(a(0,e),t=i;t>=7;)a(1e7,0),t-=7;for(a(s(10,t,1),0),t=I-1;t>=23;)r(1<<23),t-=23;r(1<<t),a(1,1),r(2),l=o()}else a(0,e),a(1<<-I,0),l=o()+F.call("0",i);return l=i>0?A+((B=l.length)<=i?"0."+F.call("0",i-B)+l:l.slice(0,B-i)+"."+l.slice(B-i)):A+l}})},function(g,I,e){var t=e(176);g.exports=function(g){if("number"!=typeof g&&"Number"!=t(g))throw TypeError("Incorrect invocation");return+g}},function(g,I,e){var t=e(22),C=e(639);t({target:"Object",stat:!0,forced:Object.assign!==C},{assign:C})},function(g,I,e){"use strict";var t=e(22),C=e(68),Q=e(391),F=e(91),B=e(163),n=e(76);C&&t({target:"Object",proto:!0,forced:Q},{__defineGetter__:function(g,I){n.f(F(this),g,{get:B(I),enumerable:!0,configurable:!0})}})},function(g,I,e){"use strict";var t=e(22),C=e(68),Q=e(391),F=e(91),B=e(163),n=e(76);C&&t({target:"Object",proto:!0,forced:Q},{__defineSetter__:function(g,I){n.f(F(this),g,{set:B(I),enumerable:!0,configurable:!0})}})},function(g,I,e){var t=e(22),C=e(640).entries;t({target:"Object",stat:!0},{entries:function(g){return C(g)}})},function(g,I,e){var t=e(22),C=e(335),Q=e(41),F=e(57),B=e(252).onFreeze,n=Object.freeze;t({target:"Object",stat:!0,forced:Q((function(){n(1)})),sham:!C},{freeze:function(g){return n&&F(g)?n(B(g)):g}})},function(g,I,e){var t=e(22),C=e(336),Q=e(251);t({target:"Object",stat:!0},{fromEntries:function(g){var I={};return C(g,(function(g,e){Q(I,g,e)}),void 0,!0),I}})},function(g,I,e){var t=e(22),C=e(41),Q=e(145),F=e(121).f,B=e(68),n=C((function(){F(1)}));t({target:"Object",stat:!0,forced:!B||n,sham:!B},{getOwnPropertyDescriptor:function(g,I){return F(Q(g),I)}})},function(g,I,e){var t=e(22),C=e(68),Q=e(485),F=e(145),B=e(121),n=e(251);t({target:"Object",stat:!0,sham:!C},{getOwnPropertyDescriptors:function(g){for(var I,e,t=F(g),C=B.f,U=Q(t),s={},i=0;U.length>i;)void 0!==(e=C(t,I=U[i++]))&&n(s,I,e);return s}})},function(g,I,e){var t=e(22),C=e(41),Q=e(623).f;t({target:"Object",stat:!0,forced:C((function(){return!Object.getOwnPropertyNames(1)}))},{getOwnPropertyNames:Q})},function(g,I,e){var t=e(22),C=e(41),Q=e(91),F=e(178),B=e(495);t({target:"Object",stat:!0,forced:C((function(){F(1)})),sham:!B},{getPrototypeOf:function(g){return F(Q(g))}})},function(g,I,e){e(22)({target:"Object",stat:!0},{is:e(641)})},function(g,I,e){var t=e(22),C=e(41),Q=e(57),F=Object.isExtensible;t({target:"Object",stat:!0,forced:C((function(){F(1)}))},{isExtensible:function(g){return!!Q(g)&&(!F||F(g))}})},function(g,I,e){var t=e(22),C=e(41),Q=e(57),F=Object.isFrozen;t({target:"Object",stat:!0,forced:C((function(){F(1)}))},{isFrozen:function(g){return!Q(g)||!!F&&F(g)}})},function(g,I,e){var t=e(22),C=e(41),Q=e(57),F=Object.isSealed;t({target:"Object",stat:!0,forced:C((function(){F(1)}))},{isSealed:function(g){return!Q(g)||!!F&&F(g)}})},function(g,I,e){var t=e(22),C=e(91),Q=e(329);t({target:"Object",stat:!0,forced:e(41)((function(){Q(1)}))},{keys:function(g){return Q(C(g))}})},function(g,I,e){"use strict";var t=e(22),C=e(68),Q=e(391),F=e(91),B=e(188),n=e(178),U=e(121).f;C&&t({target:"Object",proto:!0,forced:Q},{__lookupGetter__:function(g){var I,e=F(this),t=B(g,!0);do{if(I=U(e,t))return I.get}while(e=n(e))}})},function(g,I,e){"use strict";var t=e(22),C=e(68),Q=e(391),F=e(91),B=e(188),n=e(178),U=e(121).f;C&&t({target:"Object",proto:!0,forced:Q},{__lookupSetter__:function(g){var I,e=F(this),t=B(g,!0);do{if(I=U(e,t))return I.set}while(e=n(e))}})},function(g,I,e){var t=e(22),C=e(57),Q=e(252).onFreeze,F=e(335),B=e(41),n=Object.preventExtensions;t({target:"Object",stat:!0,forced:B((function(){n(1)})),sham:!F},{preventExtensions:function(g){return n&&C(g)?n(Q(g)):g}})},function(g,I,e){var t=e(22),C=e(57),Q=e(252).onFreeze,F=e(335),B=e(41),n=Object.seal;t({target:"Object",stat:!0,forced:B((function(){n(1)})),sham:!F},{seal:function(g){return n&&C(g)?n(Q(g)):g}})},function(g,I,e){var t=e(493),C=e(126),Q=e(1055);t||C(Object.prototype,"toString",Q,{unsafe:!0})},function(g,I,e){"use strict";var t=e(493),C=e(334);g.exports=t?{}.toString:function(){return"[object "+C(this)+"]"}},function(g,I,e){var t=e(22),C=e(640).values;t({target:"Object",stat:!0},{values:function(g){return C(g)}})},function(g,I,e){"use strict";var t,C,Q,F,B=e(22),n=e(189),U=e(50),s=e(177),i=e(642),c=e(126),A=e(279),l=e(190),a=e(278),r=e(57),o=e(163),d=e(233),u=e(176),y=e(483),b=e(336),Z=e(384),m=e(234),x=e(499).set,R=e(644),S=e(645),G=e(1058),L=e(646),V=e(1059),h=e(146),D=e(328),p=e(64),E=e(489),N=p("species"),W="Promise",f=h.get,X=h.set,J=h.getterFor(W),v=i,k=U.TypeError,H=U.document,M=U.process,Y=s("fetch"),w=L.f,T=w,z="process"==u(M),O=!!(H&&H.createEvent&&U.dispatchEvent),K=D(W,(function(){if(!(y(v)!==String(v))){if(66===E)return!0;if(!z&&"function"!=typeof PromiseRejectionEvent)return!0}if(n&&!v.prototype.finally)return!0;if(E>=51&&/native code/.test(v))return!1;var g=v.resolve(1),I=function(g){g((function(){}),(function(){}))};return(g.constructor={})[N]=I,!(g.then((function(){}))instanceof I)})),j=K||!Z((function(g){v.all(g).catch((function(){}))})),P=function(g){var I;return!(!r(g)||"function"!=typeof(I=g.then))&&I},_=function(g,I,e){if(!I.notified){I.notified=!0;var t=I.reactions;R((function(){for(var C=I.value,Q=1==I.state,F=0;t.length>F;){var B,n,U,s=t[F++],i=Q?s.ok:s.fail,c=s.resolve,A=s.reject,l=s.domain;try{i?(Q||(2===I.rejection&&Ig(g,I),I.rejection=1),!0===i?B=C:(l&&l.enter(),B=i(C),l&&(l.exit(),U=!0)),B===s.promise?A(k("Promise-chain cycle")):(n=P(B))?n.call(B,c,A):c(B)):A(C)}catch(a){l&&!U&&l.exit(),A(a)}}I.reactions=[],I.notified=!1,e&&!I.rejection&&$(g,I)}))}},q=function(g,I,e){var t,C;O?((t=H.createEvent("Event")).promise=I,t.reason=e,t.initEvent(g,!1,!0),U.dispatchEvent(t)):t={promise:I,reason:e},(C=U["on"+g])?C(t):"unhandledrejection"===g&&G("Unhandled promise rejection",e)},$=function(g,I){x.call(U,(function(){var e,t=I.value;if(gg(I)&&(e=V((function(){z?M.emit("unhandledRejection",t,g):q("unhandledrejection",g,t)})),I.rejection=z||gg(I)?2:1,e.error))throw e.value}))},gg=function(g){return 1!==g.rejection&&!g.parent},Ig=function(g,I){x.call(U,(function(){z?M.emit("rejectionHandled",g):q("rejectionhandled",g,I.value)}))},eg=function(g,I,e,t){return function(C){g(I,e,C,t)}},tg=function(g,I,e,t){I.done||(I.done=!0,t&&(I=t),I.value=e,I.state=2,_(g,I,!0))},Cg=function g(I,e,t,C){if(!e.done){e.done=!0,C&&(e=C);try{if(I===t)throw k("Promise can't be resolved itself");var Q=P(t);Q?R((function(){var C={done:!1};try{Q.call(t,eg(g,I,C,e),eg(tg,I,C,e))}catch(F){tg(I,C,F,e)}})):(e.value=t,e.state=1,_(I,e,!1))}catch(F){tg(I,{done:!1},F,e)}}};K&&(v=function(g){d(this,v,W),o(g),t.call(this);var I=f(this);try{g(eg(Cg,this,I),eg(tg,this,I))}catch(e){tg(this,I,e)}},(t=function(g){X(this,{type:W,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:0,value:void 0})}).prototype=A(v.prototype,{then:function(g,I){var e=J(this),t=w(m(this,v));return t.ok="function"!=typeof g||g,t.fail="function"==typeof I&&I,t.domain=z?M.domain:void 0,e.parent=!0,e.reactions.push(t),0!=e.state&&_(this,e,!1),t.promise},catch:function(g){return this.then(void 0,g)}}),C=function(){var g=new t,I=f(g);this.promise=g,this.resolve=eg(Cg,g,I),this.reject=eg(tg,g,I)},L.f=w=function(g){return g===v||g===Q?new C(g):T(g)},n||"function"!=typeof i||(F=i.prototype.then,c(i.prototype,"then",(function(g,I){var e=this;return new v((function(g,I){F.call(e,g,I)})).then(g,I)}),{unsafe:!0}),"function"==typeof Y&&B({global:!0,enumerable:!0,forced:!0},{fetch:function(g){return S(v,Y.apply(U,arguments))}}))),B({global:!0,wrap:!0,forced:K},{Promise:v}),l(v,W,!1,!0),a(W),Q=s(W),B({target:W,stat:!0,forced:K},{reject:function(g){var I=w(this);return I.reject.call(void 0,g),I.promise}}),B({target:W,stat:!0,forced:n||K},{resolve:function(g){return S(n&&this===Q?v:this,g)}}),B({target:W,stat:!0,forced:j},{all:function(g){var I=this,e=w(I),t=e.resolve,C=e.reject,Q=V((function(){var e=o(I.resolve),Q=[],F=0,B=1;b(g,(function(g){var n=F++,U=!1;Q.push(void 0),B++,e.call(I,g).then((function(g){U||(U=!0,Q[n]=g,--B||t(Q))}),C)})),--B||t(Q)}));return Q.error&&C(Q.value),e.promise},race:function(g){var I=this,e=w(I),t=e.reject,C=V((function(){var C=o(I.resolve);b(g,(function(g){C.call(I,g).then(e.resolve,t)}))}));return C.error&&t(C.value),e.promise}})},function(g,I,e){var t=e(50);g.exports=function(g,I){var e=t.console;e&&e.error&&(1===arguments.length?e.error(g):e.error(g,I))}},function(g,I){g.exports=function(g){try{return{error:!1,value:g()}}catch(I){return{error:!0,value:I}}}},function(g,I,e){"use strict";var t=e(22),C=e(189),Q=e(642),F=e(41),B=e(177),n=e(234),U=e(645),s=e(126);t({target:"Promise",proto:!0,real:!0,forced:!!Q&&F((function(){Q.prototype.finally.call({then:function(){}},(function(){}))}))},{finally:function(g){var I=n(this,B("Promise")),e="function"==typeof g;return this.then(e?function(e){return U(I,g()).then((function(){return e}))}:g,e?function(e){return U(I,g()).then((function(){throw e}))}:g)}}),C||"function"!=typeof Q||Q.prototype.finally||s(Q.prototype,"finally",B("Promise").prototype.finally)},function(g,I,e){var t=e(22),C=e(177),Q=e(163),F=e(60),B=e(41),n=C("Reflect","apply"),U=Function.apply;t({target:"Reflect",stat:!0,forced:!B((function(){n((function(){}))}))},{apply:function(g,I,e){return Q(g),F(e),n?n(g,I,e):U.call(g,I,e)}})},function(g,I,e){var t=e(22),C=e(177),Q=e(163),F=e(60),B=e(57),n=e(230),U=e(1063),s=e(41),i=C("Reflect","construct"),c=s((function(){function g(){}return!(i((function(){}),[],g)instanceof g)})),A=!s((function(){i((function(){}))})),l=c||A;t({target:"Reflect",stat:!0,forced:l,sham:l},{construct:function(g,I){Q(g),F(I);var e=arguments.length<3?g:Q(arguments[2]);if(A&&!c)return i(g,I,e);if(g==e){switch(I.length){case 0:return new g;case 1:return new g(I[0]);case 2:return new g(I[0],I[1]);case 3:return new g(I[0],I[1],I[2]);case 4:return new g(I[0],I[1],I[2],I[3])}var t=[null];return t.push.apply(t,I),new(U.apply(g,t))}var C=e.prototype,s=n(B(C)?C:Object.prototype),l=Function.apply.call(g,s,I);return B(l)?l:s}})},function(g,I,e){"use strict";var t=e(163),C=e(57),Q=[].slice,F={},B=function(g,I,e){if(!(I in F)){for(var t=[],C=0;C<I;C++)t[C]="a["+C+"]";F[I]=Function("C,a","return new C("+t.join(",")+")")}return F[I](g,e)};g.exports=Function.bind||function(g){var I=t(this),e=Q.call(arguments,1),F=function(){var t=e.concat(Q.call(arguments));return this instanceof F?B(I,t.length,t):I.apply(g,t)};return C(I.prototype)&&(F.prototype=I.prototype),F}},function(g,I,e){var t=e(22),C=e(68),Q=e(60),F=e(188),B=e(76);t({target:"Reflect",stat:!0,forced:e(41)((function(){Reflect.defineProperty(B.f({},1,{value:1}),1,{value:2})})),sham:!C},{defineProperty:function(g,I,e){Q(g);var t=F(I,!0);Q(e);try{return B.f(g,t,e),!0}catch(C){return!1}}})},function(g,I,e){var t=e(22),C=e(60),Q=e(121).f;t({target:"Reflect",stat:!0},{deleteProperty:function(g,I){var e=Q(C(g),I);return!(e&&!e.configurable)&&delete g[I]}})},function(g,I,e){var t=e(22),C=e(57),Q=e(60),F=e(90),B=e(121),n=e(178);t({target:"Reflect",stat:!0},{get:function g(I,e){var t,U,s=arguments.length<3?I:arguments[2];return Q(I)===s?I[e]:(t=B.f(I,e))?F(t,"value")?t.value:void 0===t.get?void 0:t.get.call(s):C(U=n(I))?g(U,e,s):void 0}})},function(g,I,e){var t=e(22),C=e(68),Q=e(60),F=e(121);t({target:"Reflect",stat:!0,sham:!C},{getOwnPropertyDescriptor:function(g,I){return F.f(Q(g),I)}})},function(g,I,e){var t=e(22),C=e(60),Q=e(178);t({target:"Reflect",stat:!0,sham:!e(495)},{getPrototypeOf:function(g){return Q(C(g))}})},function(g,I,e){e(22)({target:"Reflect",stat:!0},{has:function(g,I){return I in g}})},function(g,I,e){var t=e(22),C=e(60),Q=Object.isExtensible;t({target:"Reflect",stat:!0},{isExtensible:function(g){return C(g),!Q||Q(g)}})},function(g,I,e){e(22)({target:"Reflect",stat:!0},{ownKeys:e(485)})},function(g,I,e){var t=e(22),C=e(177),Q=e(60);t({target:"Reflect",stat:!0,sham:!e(335)},{preventExtensions:function(g){Q(g);try{var I=C("Object","preventExtensions");return I&&I(g),!0}catch(e){return!1}}})},function(g,I,e){var t=e(22),C=e(60),Q=e(57),F=e(90),B=e(41),n=e(76),U=e(121),s=e(178),i=e(228);t({target:"Reflect",stat:!0,forced:B((function(){var g=n.f({},"a",{configurable:!0});return!1!==Reflect.set(s(g),"a",1,g)}))},{set:function g(I,e,t){var B,c,A=arguments.length<4?I:arguments[3],l=U.f(C(I),e);if(!l){if(Q(c=s(I)))return g(c,e,t,A);l=i(0)}if(F(l,"value")){if(!1===l.writable||!Q(A))return!1;if(B=U.f(A,e)){if(B.get||B.set||!1===B.writable)return!1;B.value=t,n.f(A,e,B)}else n.f(A,e,i(0,t));return!0}return void 0!==l.set&&(l.set.call(A,t),!0)}})},function(g,I,e){var t=e(22),C=e(60),Q=e(632),F=e(277);F&&t({target:"Reflect",stat:!0},{setPrototypeOf:function(g,I){C(g),Q(I);try{return F(g,I),!0}catch(e){return!1}}})},function(g,I,e){var t=e(68),C=e(50),Q=e(328),F=e(388),B=e(76).f,n=e(250).f,U=e(500),s=e(392),i=e(501),c=e(126),A=e(41),l=e(146).set,a=e(278),r=e(64)("match"),o=C.RegExp,d=o.prototype,u=/a/g,y=/a/g,b=new o(u)!==u,Z=i.UNSUPPORTED_Y;if(t&&Q("RegExp",!b||Z||A((function(){return y[r]=!1,o(u)!=u||o(y)==y||"/a/i"!=o(u,"i")})))){for(var m=function(g,I){var e,t=this instanceof m,C=U(g),Q=void 0===I;if(!t&&C&&g.constructor===m&&Q)return g;b?C&&!Q&&(g=g.source):g instanceof m&&(Q&&(I=s.call(g)),g=g.source),Z&&(e=!!I&&I.indexOf("y")>-1)&&(I=I.replace(/y/g,""));var B=F(b?new o(g,I):o(g,I),t?this:d,m);return Z&&e&&l(B,{sticky:e}),B},x=function(g){g in m||B(m,g,{configurable:!0,get:function(){return o[g]},set:function(I){o[g]=I}})},R=n(o),S=0;R.length>S;)x(R[S++]);d.constructor=m,m.prototype=d,c(C,"RegExp",m)}a("RegExp")},function(g,I,e){var t=e(68),C=e(76),Q=e(392),F=e(501).UNSUPPORTED_Y;t&&("g"!=/./g.flags||F)&&C.f(RegExp.prototype,"flags",{configurable:!0,get:Q})},function(g,I,e){"use strict";var t=e(126),C=e(60),Q=e(41),F=e(392),B=RegExp.prototype,n=B.toString,U=Q((function(){return"/a/b"!=n.call({source:"a",flags:"b"})})),s="toString"!=n.name;(U||s)&&t(RegExp.prototype,"toString",(function(){var g=C(this),I=String(g.source),e=g.flags;return"/"+I+"/"+String(void 0===e&&g instanceof RegExp&&!("flags"in B)?F.call(g):e)}),{unsafe:!0})},function(g,I,e){"use strict";var t=e(387),C=e(636);g.exports=t("Set",(function(g){return function(){return g(this,arguments.length?arguments[0]:void 0)}}),C)},function(g,I,e){"use strict";var t=e(22),C=e(394).codeAt;t({target:"String",proto:!0},{codePointAt:function(g){return C(this,g)}})},function(g,I,e){"use strict";var t=e(22),C=e(121).f,Q=e(69),F=e(502),B=e(134),n=e(503),U=e(189),s="".endsWith,i=Math.min,c=n("endsWith");t({target:"String",proto:!0,forced:!(!U&&!c&&!!function(){var g=C(String.prototype,"endsWith");return g&&!g.writable}())&&!c},{endsWith:function(g){var I=String(B(this));F(g);var e=arguments.length>1?arguments[1]:void 0,t=Q(I.length),C=void 0===e?t:i(Q(e),t),n=String(g);return s?s.call(I,n,C):I.slice(C-n.length,C)===n}})},function(g,I,e){var t=e(22),C=e(229),Q=String.fromCharCode,F=String.fromCodePoint;t({target:"String",stat:!0,forced:!!F&&1!=F.length},{fromCodePoint:function(g){for(var I,e=[],t=arguments.length,F=0;t>F;){if(I=+arguments[F++],C(I,1114111)!==I)throw RangeError(I+" is not a valid code point");e.push(I<65536?Q(I):Q(55296+((I-=65536)>>10),I%1024+56320))}return e.join("")}})},function(g,I,e){"use strict";var t=e(22),C=e(502),Q=e(134);t({target:"String",proto:!0,forced:!e(503)("includes")},{includes:function(g){return!!~String(Q(this)).indexOf(C(g),arguments.length>1?arguments[1]:void 0)}})},function(g,I,e){"use strict";var t=e(395),C=e(60),Q=e(69),F=e(134),B=e(504),n=e(396);t("match",1,(function(g,I,e){return[function(I){var e=F(this),t=void 0==I?void 0:I[g];return void 0!==t?t.call(I,e):new RegExp(I)[g](String(e))},function(g){var t=e(I,g,this);if(t.done)return t.value;var F=C(g),U=String(this);if(!F.global)return n(F,U);var s=F.unicode;F.lastIndex=0;for(var i,c=[],A=0;null!==(i=n(F,U));){var l=String(i[0]);c[A]=l,""===l&&(F.lastIndex=B(U,Q(F.lastIndex),s)),A++}return 0===A?null:c}]}))},function(g,I,e){"use strict";var t=e(22),C=e(649).end;t({target:"String",proto:!0,forced:e(650)},{padEnd:function(g){return C(this,g,arguments.length>1?arguments[1]:void 0)}})},function(g,I,e){"use strict";var t=e(22),C=e(649).start;t({target:"String",proto:!0,forced:e(650)},{padStart:function(g){return C(this,g,arguments.length>1?arguments[1]:void 0)}})},function(g,I,e){var t=e(22),C=e(145),Q=e(69);t({target:"String",stat:!0},{raw:function(g){for(var I=C(g.raw),e=Q(I.length),t=arguments.length,F=[],B=0;e>B;)F.push(String(I[B++])),B<t&&F.push(String(arguments[B]));return F.join("")}})},function(g,I,e){e(22)({target:"String",proto:!0},{repeat:e(498)})},function(g,I,e){"use strict";var t=e(395),C=e(60),Q=e(91),F=e(69),B=e(162),n=e(134),U=e(504),s=e(396),i=Math.max,c=Math.min,A=Math.floor,l=/\$([$&'`]|\d\d?|<[^>]*>)/g,a=/\$([$&'`]|\d\d?)/g;t("replace",2,(function(g,I,e,t){var r=t.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,o=t.REPLACE_KEEPS_$0,d=r?"$":"$0";return[function(e,t){var C=n(this),Q=void 0==e?void 0:e[g];return void 0!==Q?Q.call(e,C,t):I.call(String(C),e,t)},function(g,t){if(!r&&o||"string"===typeof t&&-1===t.indexOf(d)){var Q=e(I,g,this,t);if(Q.done)return Q.value}var n=C(g),A=String(this),l="function"===typeof t;l||(t=String(t));var a=n.global;if(a){var y=n.unicode;n.lastIndex=0}for(var b=[];;){var Z=s(n,A);if(null===Z)break;if(b.push(Z),!a)break;""===String(Z[0])&&(n.lastIndex=U(A,F(n.lastIndex),y))}for(var m,x="",R=0,S=0;S<b.length;S++){Z=b[S];for(var G=String(Z[0]),L=i(c(B(Z.index),A.length),0),V=[],h=1;h<Z.length;h++)V.push(void 0===(m=Z[h])?m:String(m));var D=Z.groups;if(l){var p=[G].concat(V,L,A);void 0!==D&&p.push(D);var E=String(t.apply(void 0,p))}else E=u(G,A,L,V,D,t);L>=R&&(x+=A.slice(R,L)+E,R=L+G.length)}return x+A.slice(R)}];function u(g,e,t,C,F,B){var n=t+g.length,U=C.length,s=a;return void 0!==F&&(F=Q(F),s=l),I.call(B,s,(function(I,Q){var B;switch(Q.charAt(0)){case"$":return"$";case"&":return g;case"`":return e.slice(0,t);case"'":return e.slice(n);case"<":B=F[Q.slice(1,-1)];break;default:var s=+Q;if(0===s)return I;if(s>U){var i=A(s/10);return 0===i?I:i<=U?void 0===C[i-1]?Q.charAt(1):C[i-1]+Q.charAt(1):I}B=C[s-1]}return void 0===B?"":B}))}}))},function(g,I,e){"use strict";var t=e(395),C=e(60),Q=e(134),F=e(641),B=e(396);t("search",1,(function(g,I,e){return[function(I){var e=Q(this),t=void 0==I?void 0:I[g];return void 0!==t?t.call(I,e):new RegExp(I)[g](String(e))},function(g){var t=e(I,g,this);if(t.done)return t.value;var Q=C(g),n=String(this),U=Q.lastIndex;F(U,0)||(Q.lastIndex=0);var s=B(Q,n);return F(Q.lastIndex,U)||(Q.lastIndex=U),null===s?-1:s.index}]}))},function(g,I,e){"use strict";var t=e(395),C=e(500),Q=e(60),F=e(134),B=e(234),n=e(504),U=e(69),s=e(396),i=e(393),c=e(41),A=[].push,l=Math.min,a=!c((function(){return!RegExp(4294967295,"y")}));t("split",2,(function(g,I,e){var t;return t="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(g,e){var t=String(F(this)),Q=void 0===e?4294967295:e>>>0;if(0===Q)return[];if(void 0===g)return[t];if(!C(g))return I.call(t,g,Q);for(var B,n,U,s=[],c=(g.ignoreCase?"i":"")+(g.multiline?"m":"")+(g.unicode?"u":"")+(g.sticky?"y":""),l=0,a=new RegExp(g.source,c+"g");(B=i.call(a,t))&&!((n=a.lastIndex)>l&&(s.push(t.slice(l,B.index)),B.length>1&&B.index<t.length&&A.apply(s,B.slice(1)),U=B[0].length,l=n,s.length>=Q));)a.lastIndex===B.index&&a.lastIndex++;return l===t.length?!U&&a.test("")||s.push(""):s.push(t.slice(l)),s.length>Q?s.slice(0,Q):s}:"0".split(void 0,0).length?function(g,e){return void 0===g&&0===e?[]:I.call(this,g,e)}:I,[function(I,e){var C=F(this),Q=void 0==I?void 0:I[g];return void 0!==Q?Q.call(I,C,e):t.call(String(C),I,e)},function(g,C){var F=e(t,g,this,C,t!==I);if(F.done)return F.value;var i=Q(g),c=String(this),A=B(i,RegExp),r=i.unicode,o=(i.ignoreCase?"i":"")+(i.multiline?"m":"")+(i.unicode?"u":"")+(a?"y":"g"),d=new A(a?i:"^(?:"+i.source+")",o),u=void 0===C?4294967295:C>>>0;if(0===u)return[];if(0===c.length)return null===s(d,c)?[c]:[];for(var y=0,b=0,Z=[];b<c.length;){d.lastIndex=a?b:0;var m,x=s(d,a?c:c.slice(b));if(null===x||(m=l(U(d.lastIndex+(a?0:b)),c.length))===y)b=n(c,b,r);else{if(Z.push(c.slice(y,b)),Z.length===u)return Z;for(var R=1;R<=x.length-1;R++)if(Z.push(x[R]),Z.length===u)return Z;b=y=m}}return Z.push(c.slice(y)),Z}]}),!a)},function(g,I,e){"use strict";var t=e(22),C=e(121).f,Q=e(69),F=e(502),B=e(134),n=e(503),U=e(189),s="".startsWith,i=Math.min,c=n("startsWith");t({target:"String",proto:!0,forced:!(!U&&!c&&!!function(){var g=C(String.prototype,"startsWith");return g&&!g.writable}())&&!c},{startsWith:function(g){var I=String(B(this));F(g);var e=Q(i(arguments.length>1?arguments[1]:void 0,I.length)),t=String(g);return s?s.call(I,t,e):I.slice(e,e+t.length)===t}})},function(g,I,e){"use strict";var t=e(22),C=e(280).trim;t({target:"String",proto:!0,forced:e(505)("trim")},{trim:function(){return C(this)}})},function(g,I,e){"use strict";var t=e(22),C=e(280).end,Q=e(505)("trimEnd"),F=Q?function(){return C(this)}:"".trimEnd;t({target:"String",proto:!0,forced:Q},{trimEnd:F,trimRight:F})},function(g,I,e){"use strict";var t=e(22),C=e(280).start,Q=e(505)("trimStart"),F=Q?function(){return C(this)}:"".trimStart;t({target:"String",proto:!0,forced:Q},{trimStart:F,trimLeft:F})},function(g,I,e){"use strict";var t=e(22),C=e(148);t({target:"String",proto:!0,forced:e(149)("anchor")},{anchor:function(g){return C(this,"a","name",g)}})},function(g,I,e){"use strict";var t=e(22),C=e(148);t({target:"String",proto:!0,forced:e(149)("big")},{big:function(){return C(this,"big","","")}})},function(g,I,e){"use strict";var t=e(22),C=e(148);t({target:"String",proto:!0,forced:e(149)("blink")},{blink:function(){return C(this,"blink","","")}})},function(g,I,e){"use strict";var t=e(22),C=e(148);t({target:"String",proto:!0,forced:e(149)("bold")},{bold:function(){return C(this,"b","","")}})},function(g,I,e){"use strict";var t=e(22),C=e(148);t({target:"String",proto:!0,forced:e(149)("fixed")},{fixed:function(){return C(this,"tt","","")}})},function(g,I,e){"use strict";var t=e(22),C=e(148);t({target:"String",proto:!0,forced:e(149)("fontcolor")},{fontcolor:function(g){return C(this,"font","color",g)}})},function(g,I,e){"use strict";var t=e(22),C=e(148);t({target:"String",proto:!0,forced:e(149)("fontsize")},{fontsize:function(g){return C(this,"font","size",g)}})},function(g,I,e){"use strict";var t=e(22),C=e(148);t({target:"String",proto:!0,forced:e(149)("italics")},{italics:function(){return C(this,"i","","")}})},function(g,I,e){"use strict";var t=e(22),C=e(148);t({target:"String",proto:!0,forced:e(149)("link")},{link:function(g){return C(this,"a","href",g)}})},function(g,I,e){"use strict";var t=e(22),C=e(148);t({target:"String",proto:!0,forced:e(149)("small")},{small:function(){return C(this,"small","","")}})},function(g,I,e){"use strict";var t=e(22),C=e(148);t({target:"String",proto:!0,forced:e(149)("strike")},{strike:function(){return C(this,"strike","","")}})},function(g,I,e){"use strict";var t=e(22),C=e(148);t({target:"String",proto:!0,forced:e(149)("sub")},{sub:function(){return C(this,"sub","","")}})},function(g,I,e){"use strict";var t=e(22),C=e(148);t({target:"String",proto:!0,forced:e(149)("sup")},{sup:function(){return C(this,"sup","","")}})},function(g,I,e){e(217)("Float32",(function(g){return function(I,e,t){return g(this,I,e,t)}}))},function(g,I,e){var t=e(162);g.exports=function(g){var I=t(g);if(I<0)throw RangeError("The argument can't be less than 0");return I}},function(g,I,e){e(217)("Float64",(function(g){return function(I,e,t){return g(this,I,e,t)}}))},function(g,I,e){e(217)("Int8",(function(g){return function(I,e,t){return g(this,I,e,t)}}))},function(g,I,e){e(217)("Int16",(function(g){return function(I,e,t){return g(this,I,e,t)}}))},function(g,I,e){e(217)("Int32",(function(g){return function(I,e,t){return g(this,I,e,t)}}))},function(g,I,e){e(217)("Uint8",(function(g){return function(I,e,t){return g(this,I,e,t)}}))},function(g,I,e){e(217)("Uint8",(function(g){return function(I,e,t){return g(this,I,e,t)}}),!0)},function(g,I,e){e(217)("Uint16",(function(g){return function(I,e,t){return g(this,I,e,t)}}))},function(g,I,e){e(217)("Uint32",(function(g){return function(I,e,t){return g(this,I,e,t)}}))},function(g,I,e){"use strict";var t=e(70),C=e(625),Q=t.aTypedArray;(0,t.exportTypedArrayMethod)("copyWithin",(function(g,I){return C.call(Q(this),g,I,arguments.length>2?arguments[2]:void 0)}))},function(g,I,e){"use strict";var t=e(70),C=e(118).every,Q=t.aTypedArray;(0,t.exportTypedArrayMethod)("every",(function(g){return C(Q(this),g,arguments.length>1?arguments[1]:void 0)}))},function(g,I,e){"use strict";var t=e(70),C=e(491),Q=t.aTypedArray;(0,t.exportTypedArrayMethod)("fill",(function(g){return C.apply(Q(this),arguments)}))},function(g,I,e){"use strict";var t=e(70),C=e(118).filter,Q=e(234),F=t.aTypedArray,B=t.aTypedArrayConstructor;(0,t.exportTypedArrayMethod)("filter",(function(g){for(var I=C(F(this),g,arguments.length>1?arguments[1]:void 0),e=Q(this,this.constructor),t=0,n=I.length,U=new(B(e))(n);n>t;)U[t]=I[t++];return U}))},function(g,I,e){"use strict";var t=e(70),C=e(118).find,Q=t.aTypedArray;(0,t.exportTypedArrayMethod)("find",(function(g){return C(Q(this),g,arguments.length>1?arguments[1]:void 0)}))},function(g,I,e){"use strict";var t=e(70),C=e(118).findIndex,Q=t.aTypedArray;(0,t.exportTypedArrayMethod)("findIndex",(function(g){return C(Q(this),g,arguments.length>1?arguments[1]:void 0)}))},function(g,I,e){"use strict";var t=e(70),C=e(118).forEach,Q=t.aTypedArray;(0,t.exportTypedArrayMethod)("forEach",(function(g){C(Q(this),g,arguments.length>1?arguments[1]:void 0)}))},function(g,I,e){"use strict";var t=e(506);(0,e(70).exportTypedArrayStaticMethod)("from",e(652),t)},function(g,I,e){"use strict";var t=e(70),C=e(327).includes,Q=t.aTypedArray;(0,t.exportTypedArrayMethod)("includes",(function(g){return C(Q(this),g,arguments.length>1?arguments[1]:void 0)}))},function(g,I,e){"use strict";var t=e(70),C=e(327).indexOf,Q=t.aTypedArray;(0,t.exportTypedArrayMethod)("indexOf",(function(g){return C(Q(this),g,arguments.length>1?arguments[1]:void 0)}))},function(g,I,e){"use strict";var t=e(50),C=e(70),Q=e(385),F=e(64)("iterator"),B=t.Uint8Array,n=Q.values,U=Q.keys,s=Q.entries,i=C.aTypedArray,c=C.exportTypedArrayMethod,A=B&&B.prototype[F],l=!!A&&("values"==A.name||void 0==A.name),a=function(){return n.call(i(this))};c("entries",(function(){return s.call(i(this))})),c("keys",(function(){return U.call(i(this))})),c("values",a,!l),c(F,a,!l)},function(g,I,e){"use strict";var t=e(70),C=t.aTypedArray,Q=t.exportTypedArrayMethod,F=[].join;Q("join",(function(g){return F.apply(C(this),arguments)}))},function(g,I,e){"use strict";var t=e(70),C=e(633),Q=t.aTypedArray;(0,t.exportTypedArrayMethod)("lastIndexOf",(function(g){return C.apply(Q(this),arguments)}))},function(g,I,e){"use strict";var t=e(70),C=e(118).map,Q=e(234),F=t.aTypedArray,B=t.aTypedArrayConstructor;(0,t.exportTypedArrayMethod)("map",(function(g){return C(F(this),g,arguments.length>1?arguments[1]:void 0,(function(g,I){return new(B(Q(g,g.constructor)))(I)}))}))},function(g,I,e){"use strict";var t=e(70),C=e(506),Q=t.aTypedArrayConstructor;(0,t.exportTypedArrayStaticMethod)("of",(function(){for(var g=0,I=arguments.length,e=new(Q(this))(I);I>g;)e[g]=arguments[g++];return e}),C)},function(g,I,e){"use strict";var t=e(70),C=e(386).left,Q=t.aTypedArray;(0,t.exportTypedArrayMethod)("reduce",(function(g){return C(Q(this),g,arguments.length,arguments.length>1?arguments[1]:void 0)}))},function(g,I,e){"use strict";var t=e(70),C=e(386).right,Q=t.aTypedArray;(0,t.exportTypedArrayMethod)("reduceRight",(function(g){return C(Q(this),g,arguments.length,arguments.length>1?arguments[1]:void 0)}))},function(g,I,e){"use strict";var t=e(70),C=t.aTypedArray,Q=t.exportTypedArrayMethod,F=Math.floor;Q("reverse",(function(){for(var g,I=C(this).length,e=F(I/2),t=0;t<e;)g=this[t],this[t++]=this[--I],this[I]=g;return this}))},function(g,I,e){"use strict";var t=e(70),C=e(69),Q=e(651),F=e(91),B=e(41),n=t.aTypedArray;(0,t.exportTypedArrayMethod)("set",(function(g){n(this);var I=Q(arguments.length>1?arguments[1]:void 0,1),e=this.length,t=F(g),B=C(t.length),U=0;if(B+I>e)throw RangeError("Wrong length");for(;U<B;)this[I+U]=t[U++]}),B((function(){new Int8Array(1).set({})})))},function(g,I,e){"use strict";var t=e(70),C=e(234),Q=e(41),F=t.aTypedArray,B=t.aTypedArrayConstructor,n=t.exportTypedArrayMethod,U=[].slice;n("slice",(function(g,I){for(var e=U.call(F(this),g,I),t=C(this,this.constructor),Q=0,n=e.length,s=new(B(t))(n);n>Q;)s[Q]=e[Q++];return s}),Q((function(){new Int8Array(1).slice()})))},function(g,I,e){"use strict";var t=e(70),C=e(118).some,Q=t.aTypedArray;(0,t.exportTypedArrayMethod)("some",(function(g){return C(Q(this),g,arguments.length>1?arguments[1]:void 0)}))},function(g,I,e){"use strict";var t=e(70),C=t.aTypedArray,Q=t.exportTypedArrayMethod,F=[].sort;Q("sort",(function(g){return F.call(C(this),g)}))},function(g,I,e){"use strict";var t=e(70),C=e(69),Q=e(229),F=e(234),B=t.aTypedArray;(0,t.exportTypedArrayMethod)("subarray",(function(g,I){var e=B(this),t=e.length,n=Q(g,t);return new(F(e,e.constructor))(e.buffer,e.byteOffset+n*e.BYTES_PER_ELEMENT,C((void 0===I?t:Q(I,t))-n))}))},function(g,I,e){"use strict";var t=e(50),C=e(70),Q=e(41),F=t.Int8Array,B=C.aTypedArray,n=C.exportTypedArrayMethod,U=[].toLocaleString,s=[].slice,i=!!F&&Q((function(){U.call(new F(1))}));n("toLocaleString",(function(){return U.apply(i?s.call(B(this)):B(this),arguments)}),Q((function(){return[1,2].toLocaleString()!=new F([1,2]).toLocaleString()}))||!Q((function(){F.prototype.toLocaleString.call([1,2])})))},function(g,I,e){"use strict";var t=e(70).exportTypedArrayMethod,C=e(41),Q=e(50).Uint8Array,F=Q&&Q.prototype||{},B=[].toString,n=[].join;C((function(){B.call({})}))&&(B=function(){return n.call(this)});var U=F.toString!=B;t("toString",B,U)},function(g,I,e){"use strict";var t,C=e(50),Q=e(279),F=e(252),B=e(387),n=e(653),U=e(57),s=e(146).enforce,i=e(616),c=!C.ActiveXObject&&"ActiveXObject"in C,A=Object.isExtensible,l=function(g){return function(){return g(this,arguments.length?arguments[0]:void 0)}},a=g.exports=B("WeakMap",l,n);if(i&&c){t=n.getConstructor(l,"WeakMap",!0),F.REQUIRED=!0;var r=a.prototype,o=r.delete,d=r.has,u=r.get,y=r.set;Q(r,{delete:function(g){if(U(g)&&!A(g)){var I=s(this);return I.frozen||(I.frozen=new t),o.call(this,g)||I.frozen.delete(g)}return o.call(this,g)},has:function(g){if(U(g)&&!A(g)){var I=s(this);return I.frozen||(I.frozen=new t),d.call(this,g)||I.frozen.has(g)}return d.call(this,g)},get:function(g){if(U(g)&&!A(g)){var I=s(this);return I.frozen||(I.frozen=new t),d.call(this,g)?u.call(this,g):I.frozen.get(g)}return u.call(this,g)},set:function(g,I){if(U(g)&&!A(g)){var e=s(this);e.frozen||(e.frozen=new t),d.call(this,g)?y.call(this,g,I):e.frozen.set(g,I)}else y.call(this,g,I);return this}})}},function(g,I,e){"use strict";e(387)("WeakSet",(function(g){return function(){return g(this,arguments.length?arguments[0]:void 0)}}),e(653))},function(g,I,e){var t=e(50),C=e(654),Q=e(627),F=e(135);for(var B in C){var n=t[B],U=n&&n.prototype;if(U&&U.forEach!==Q)try{F(U,"forEach",Q)}catch(s){U.forEach=Q}}},function(g,I,e){var t=e(50),C=e(654),Q=e(385),F=e(135),B=e(64),n=B("iterator"),U=B("toStringTag"),s=Q.values;for(var i in C){var c=t[i],A=c&&c.prototype;if(A){if(A[n]!==s)try{F(A,n,s)}catch(a){A[n]=s}if(A[U]||F(A,U,i),C[i])for(var l in Q)if(A[l]!==Q[l])try{F(A,l,Q[l])}catch(a){A[l]=Q[l]}}}},function(g,I,e){var t=e(22),C=e(50),Q=e(499);t({global:!0,bind:!0,enumerable:!0,forced:!C.setImmediate||!C.clearImmediate},{setImmediate:Q.set,clearImmediate:Q.clear})},function(g,I,e){var t=e(22),C=e(50),Q=e(644),F=e(176),B=C.process,n="process"==F(B);t({global:!0,enumerable:!0,noTargetGet:!0},{queueMicrotask:function(g){var I=n&&B.domain;Q(I?I.bind(g):g)}})},function(g,I,e){"use strict";e(648);var t,C=e(22),Q=e(68),F=e(655),B=e(50),n=e(621),U=e(126),s=e(233),i=e(90),c=e(639),A=e(628),l=e(394).codeAt,a=e(1150),r=e(190),o=e(656),d=e(146),u=B.URL,y=o.URLSearchParams,b=o.getState,Z=d.set,m=d.getterFor("URL"),x=Math.floor,R=Math.pow,S=/[A-Za-z]/,G=/[\d+-.A-Za-z]/,L=/\d/,V=/^(0x|0X)/,h=/^[0-7]+$/,D=/^\d+$/,p=/^[\dA-Fa-f]+$/,E=/[\u0000\u0009\u000A\u000D #%/:?@[\\]]/,N=/[\u0000\u0009\u000A\u000D #/:?@[\\]]/,W=/^[\u0000-\u001F ]+|[\u0000-\u001F ]+$/g,f=/[\u0009\u000A\u000D]/g,X=function(g,I){var e,t,C;if("["==I.charAt(0)){if("]"!=I.charAt(I.length-1))return"Invalid host";if(!(e=v(I.slice(1,-1))))return"Invalid host";g.host=e}else if(O(g)){if(I=a(I),E.test(I))return"Invalid host";if(null===(e=J(I)))return"Invalid host";g.host=e}else{if(N.test(I))return"Invalid host";for(e="",t=A(I),C=0;C<t.length;C++)e+=T(t[C],H);g.host=e}},J=function(g){var I,e,t,C,Q,F,B,n=g.split(".");if(n.length&&""==n[n.length-1]&&n.pop(),(I=n.length)>4)return g;for(e=[],t=0;t<I;t++){if(""==(C=n[t]))return g;if(Q=10,C.length>1&&"0"==C.charAt(0)&&(Q=V.test(C)?16:8,C=C.slice(8==Q?1:2)),""===C)F=0;else{if(!(10==Q?D:8==Q?h:p).test(C))return g;F=parseInt(C,Q)}e.push(F)}for(t=0;t<I;t++)if(F=e[t],t==I-1){if(F>=R(256,5-I))return null}else if(F>255)return null;for(B=e.pop(),t=0;t<e.length;t++)B+=e[t]*R(256,3-t);return B},v=function(g){var I,e,t,C,Q,F,B,n=[0,0,0,0,0,0,0,0],U=0,s=null,i=0,c=function(){return g.charAt(i)};if(":"==c()){if(":"!=g.charAt(1))return;i+=2,s=++U}for(;c();){if(8==U)return;if(":"!=c()){for(I=e=0;e<4&&p.test(c());)I=16*I+parseInt(c(),16),i++,e++;if("."==c()){if(0==e)return;if(i-=e,U>6)return;for(t=0;c();){if(C=null,t>0){if(!("."==c()&&t<4))return;i++}if(!L.test(c()))return;for(;L.test(c());){if(Q=parseInt(c(),10),null===C)C=Q;else{if(0==C)return;C=10*C+Q}if(C>255)return;i++}n[U]=256*n[U]+C,2!=++t&&4!=t||U++}if(4!=t)return;break}if(":"==c()){if(i++,!c())return}else if(c())return;n[U++]=I}else{if(null!==s)return;i++,s=++U}}if(null!==s)for(F=U-s,U=7;0!=U&&F>0;)B=n[U],n[U--]=n[s+F-1],n[s+--F]=B;else if(8!=U)return;return n},k=function(g){var I,e,t,C;if("number"==typeof g){for(I=[],e=0;e<4;e++)I.unshift(g%256),g=x(g/256);return I.join(".")}if("object"==typeof g){for(I="",t=function(g){for(var I=null,e=1,t=null,C=0,Q=0;Q<8;Q++)0!==g[Q]?(C>e&&(I=t,e=C),t=null,C=0):(null===t&&(t=Q),++C);return C>e&&(I=t,e=C),I}(g),e=0;e<8;e++)C&&0===g[e]||(C&&(C=!1),t===e?(I+=e?":":"::",C=!0):(I+=g[e].toString(16),e<7&&(I+=":")));return"["+I+"]"}return g},H={},M=c({},H,{" ":1,'"':1,"<":1,">":1,"`":1}),Y=c({},M,{"#":1,"?":1,"{":1,"}":1}),w=c({},Y,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),T=function(g,I){var e=l(g,0);return e>32&&e<127&&!i(I,g)?g:encodeURIComponent(g)},z={ftp:21,file:null,http:80,https:443,ws:80,wss:443},O=function(g){return i(z,g.scheme)},K=function(g){return""!=g.username||""!=g.password},j=function(g){return!g.host||g.cannotBeABaseURL||"file"==g.scheme},P=function(g,I){var e;return 2==g.length&&S.test(g.charAt(0))&&(":"==(e=g.charAt(1))||!I&&"|"==e)},_=function(g){var I;return g.length>1&&P(g.slice(0,2))&&(2==g.length||"/"===(I=g.charAt(2))||"\\"===I||"?"===I||"#"===I)},q=function(g){var I=g.path,e=I.length;!e||"file"==g.scheme&&1==e&&P(I[0],!0)||I.pop()},$=function(g){return"."===g||"%2e"===g.toLowerCase()},gg={},Ig={},eg={},tg={},Cg={},Qg={},Fg={},Bg={},ng={},Ug={},sg={},ig={},cg={},Ag={},lg={},ag={},rg={},og={},dg={},ug={},yg={},bg=function(g,I,e,C){var Q,F,B,n,U,s=e||gg,c=0,l="",a=!1,r=!1,o=!1;for(e||(g.scheme="",g.username="",g.password="",g.host=null,g.port=null,g.path=[],g.query=null,g.fragment=null,g.cannotBeABaseURL=!1,I=I.replace(W,"")),I=I.replace(f,""),Q=A(I);c<=Q.length;){switch(F=Q[c],s){case gg:if(!F||!S.test(F)){if(e)return"Invalid scheme";s=eg;continue}l+=F.toLowerCase(),s=Ig;break;case Ig:if(F&&(G.test(F)||"+"==F||"-"==F||"."==F))l+=F.toLowerCase();else{if(":"!=F){if(e)return"Invalid scheme";l="",s=eg,c=0;continue}if(e&&(O(g)!=i(z,l)||"file"==l&&(K(g)||null!==g.port)||"file"==g.scheme&&!g.host))return;if(g.scheme=l,e)return void(O(g)&&z[g.scheme]==g.port&&(g.port=null));l="","file"==g.scheme?s=Ag:O(g)&&C&&C.scheme==g.scheme?s=tg:O(g)?s=Bg:"/"==Q[c+1]?(s=Cg,c++):(g.cannotBeABaseURL=!0,g.path.push(""),s=dg)}break;case eg:if(!C||C.cannotBeABaseURL&&"#"!=F)return"Invalid scheme";if(C.cannotBeABaseURL&&"#"==F){g.scheme=C.scheme,g.path=C.path.slice(),g.query=C.query,g.fragment="",g.cannotBeABaseURL=!0,s=yg;break}s="file"==C.scheme?Ag:Qg;continue;case tg:if("/"!=F||"/"!=Q[c+1]){s=Qg;continue}s=ng,c++;break;case Cg:if("/"==F){s=Ug;break}s=og;continue;case Qg:if(g.scheme=C.scheme,F==t)g.username=C.username,g.password=C.password,g.host=C.host,g.port=C.port,g.path=C.path.slice(),g.query=C.query;else if("/"==F||"\\"==F&&O(g))s=Fg;else if("?"==F)g.username=C.username,g.password=C.password,g.host=C.host,g.port=C.port,g.path=C.path.slice(),g.query="",s=ug;else{if("#"!=F){g.username=C.username,g.password=C.password,g.host=C.host,g.port=C.port,g.path=C.path.slice(),g.path.pop(),s=og;continue}g.username=C.username,g.password=C.password,g.host=C.host,g.port=C.port,g.path=C.path.slice(),g.query=C.query,g.fragment="",s=yg}break;case Fg:if(!O(g)||"/"!=F&&"\\"!=F){if("/"!=F){g.username=C.username,g.password=C.password,g.host=C.host,g.port=C.port,s=og;continue}s=Ug}else s=ng;break;case Bg:if(s=ng,"/"!=F||"/"!=l.charAt(c+1))continue;c++;break;case ng:if("/"!=F&&"\\"!=F){s=Ug;continue}break;case Ug:if("@"==F){a&&(l="%40"+l),a=!0,B=A(l);for(var d=0;d<B.length;d++){var u=B[d];if(":"!=u||o){var y=T(u,w);o?g.password+=y:g.username+=y}else o=!0}l=""}else if(F==t||"/"==F||"?"==F||"#"==F||"\\"==F&&O(g)){if(a&&""==l)return"Invalid authority";c-=A(l).length+1,l="",s=sg}else l+=F;break;case sg:case ig:if(e&&"file"==g.scheme){s=ag;continue}if(":"!=F||r){if(F==t||"/"==F||"?"==F||"#"==F||"\\"==F&&O(g)){if(O(g)&&""==l)return"Invalid host";if(e&&""==l&&(K(g)||null!==g.port))return;if(n=X(g,l))return n;if(l="",s=rg,e)return;continue}"["==F?r=!0:"]"==F&&(r=!1),l+=F}else{if(""==l)return"Invalid host";if(n=X(g,l))return n;if(l="",s=cg,e==ig)return}break;case cg:if(!L.test(F)){if(F==t||"/"==F||"?"==F||"#"==F||"\\"==F&&O(g)||e){if(""!=l){var b=parseInt(l,10);if(b>65535)return"Invalid port";g.port=O(g)&&b===z[g.scheme]?null:b,l=""}if(e)return;s=rg;continue}return"Invalid port"}l+=F;break;case Ag:if(g.scheme="file","/"==F||"\\"==F)s=lg;else{if(!C||"file"!=C.scheme){s=og;continue}if(F==t)g.host=C.host,g.path=C.path.slice(),g.query=C.query;else if("?"==F)g.host=C.host,g.path=C.path.slice(),g.query="",s=ug;else{if("#"!=F){_(Q.slice(c).join(""))||(g.host=C.host,g.path=C.path.slice(),q(g)),s=og;continue}g.host=C.host,g.path=C.path.slice(),g.query=C.query,g.fragment="",s=yg}}break;case lg:if("/"==F||"\\"==F){s=ag;break}C&&"file"==C.scheme&&!_(Q.slice(c).join(""))&&(P(C.path[0],!0)?g.path.push(C.path[0]):g.host=C.host),s=og;continue;case ag:if(F==t||"/"==F||"\\"==F||"?"==F||"#"==F){if(!e&&P(l))s=og;else if(""==l){if(g.host="",e)return;s=rg}else{if(n=X(g,l))return n;if("localhost"==g.host&&(g.host=""),e)return;l="",s=rg}continue}l+=F;break;case rg:if(O(g)){if(s=og,"/"!=F&&"\\"!=F)continue}else if(e||"?"!=F)if(e||"#"!=F){if(F!=t&&(s=og,"/"!=F))continue}else g.fragment="",s=yg;else g.query="",s=ug;break;case og:if(F==t||"/"==F||"\\"==F&&O(g)||!e&&("?"==F||"#"==F)){if(".."===(U=(U=l).toLowerCase())||"%2e."===U||".%2e"===U||"%2e%2e"===U?(q(g),"/"==F||"\\"==F&&O(g)||g.path.push("")):$(l)?"/"==F||"\\"==F&&O(g)||g.path.push(""):("file"==g.scheme&&!g.path.length&&P(l)&&(g.host&&(g.host=""),l=l.charAt(0)+":"),g.path.push(l)),l="","file"==g.scheme&&(F==t||"?"==F||"#"==F))for(;g.path.length>1&&""===g.path[0];)g.path.shift();"?"==F?(g.query="",s=ug):"#"==F&&(g.fragment="",s=yg)}else l+=T(F,Y);break;case dg:"?"==F?(g.query="",s=ug):"#"==F?(g.fragment="",s=yg):F!=t&&(g.path[0]+=T(F,H));break;case ug:e||"#"!=F?F!=t&&("'"==F&&O(g)?g.query+="%27":g.query+="#"==F?"%23":T(F,H)):(g.fragment="",s=yg);break;case yg:F!=t&&(g.fragment+=T(F,M))}c++}},Zg=function(g){var I,e,t=s(this,Zg,"URL"),C=arguments.length>1?arguments[1]:void 0,F=String(g),B=Z(t,{type:"URL"});if(void 0!==C)if(C instanceof Zg)I=m(C);else if(e=bg(I={},String(C)))throw TypeError(e);if(e=bg(B,F,null,I))throw TypeError(e);var n=B.searchParams=new y,U=b(n);U.updateSearchParams(B.query),U.updateURL=function(){B.query=String(n)||null},Q||(t.href=xg.call(t),t.origin=Rg.call(t),t.protocol=Sg.call(t),t.username=Gg.call(t),t.password=Lg.call(t),t.host=Vg.call(t),t.hostname=hg.call(t),t.port=Dg.call(t),t.pathname=pg.call(t),t.search=Eg.call(t),t.searchParams=Ng.call(t),t.hash=Wg.call(t))},mg=Zg.prototype,xg=function(){var g=m(this),I=g.scheme,e=g.username,t=g.password,C=g.host,Q=g.port,F=g.path,B=g.query,n=g.fragment,U=I+":";return null!==C?(U+="//",K(g)&&(U+=e+(t?":"+t:"")+"@"),U+=k(C),null!==Q&&(U+=":"+Q)):"file"==I&&(U+="//"),U+=g.cannotBeABaseURL?F[0]:F.length?"/"+F.join("/"):"",null!==B&&(U+="?"+B),null!==n&&(U+="#"+n),U},Rg=function(){var g=m(this),I=g.scheme,e=g.port;if("blob"==I)try{return new URL(I.path[0]).origin}catch(t){return"null"}return"file"!=I&&O(g)?I+"://"+k(g.host)+(null!==e?":"+e:""):"null"},Sg=function(){return m(this).scheme+":"},Gg=function(){return m(this).username},Lg=function(){return m(this).password},Vg=function(){var g=m(this),I=g.host,e=g.port;return null===I?"":null===e?k(I):k(I)+":"+e},hg=function(){var g=m(this).host;return null===g?"":k(g)},Dg=function(){var g=m(this).port;return null===g?"":String(g)},pg=function(){var g=m(this),I=g.path;return g.cannotBeABaseURL?I[0]:I.length?"/"+I.join("/"):""},Eg=function(){var g=m(this).query;return g?"?"+g:""},Ng=function(){return m(this).searchParams},Wg=function(){var g=m(this).fragment;return g?"#"+g:""},fg=function(g,I){return{get:g,set:I,configurable:!0,enumerable:!0}};if(Q&&n(mg,{href:fg(xg,(function(g){var I=m(this),e=String(g),t=bg(I,e);if(t)throw TypeError(t);b(I.searchParams).updateSearchParams(I.query)})),origin:fg(Rg),protocol:fg(Sg,(function(g){var I=m(this);bg(I,String(g)+":",gg)})),username:fg(Gg,(function(g){var I=m(this),e=A(String(g));if(!j(I)){I.username="";for(var t=0;t<e.length;t++)I.username+=T(e[t],w)}})),password:fg(Lg,(function(g){var I=m(this),e=A(String(g));if(!j(I)){I.password="";for(var t=0;t<e.length;t++)I.password+=T(e[t],w)}})),host:fg(Vg,(function(g){var I=m(this);I.cannotBeABaseURL||bg(I,String(g),sg)})),hostname:fg(hg,(function(g){var I=m(this);I.cannotBeABaseURL||bg(I,String(g),ig)})),port:fg(Dg,(function(g){var I=m(this);j(I)||(""==(g=String(g))?I.port=null:bg(I,g,cg))})),pathname:fg(pg,(function(g){var I=m(this);I.cannotBeABaseURL||(I.path=[],bg(I,g+"",rg))})),search:fg(Eg,(function(g){var I=m(this);""==(g=String(g))?I.query=null:("?"==g.charAt(0)&&(g=g.slice(1)),I.query="",bg(I,g,ug)),b(I.searchParams).updateSearchParams(I.query)})),searchParams:fg(Ng),hash:fg(Wg,(function(g){var I=m(this);""!=(g=String(g))?("#"==g.charAt(0)&&(g=g.slice(1)),I.fragment="",bg(I,g,yg)):I.fragment=null}))}),U(mg,"toJSON",(function(){return xg.call(this)}),{enumerable:!0}),U(mg,"toString",(function(){return xg.call(this)}),{enumerable:!0}),u){var Xg=u.createObjectURL,Jg=u.revokeObjectURL;Xg&&U(Zg,"createObjectURL",(function(g){return Xg.apply(u,arguments)})),Jg&&U(Zg,"revokeObjectURL",(function(g){return Jg.apply(u,arguments)}))}r(Zg,"URL"),C({global:!0,forced:!F,sham:!Q},{URL:Zg})},function(g,I,e){"use strict";var t=/[^\0-\u007E]/,C=/[.\u3002\uFF0E\uFF61]/g,Q="Overflow: input needs wider integers to process",F=Math.floor,B=String.fromCharCode,n=function(g){return g+22+75*(g<26)},U=function(g,I,e){var t=0;for(g=e?F(g/700):g>>1,g+=F(g/I);g>455;t+=36)g=F(g/35);return F(t+36*g/(g+38))},s=function(g){var I,e,t=[],C=(g=function(g){for(var I=[],e=0,t=g.length;e<t;){var C=g.charCodeAt(e++);if(C>=55296&&C<=56319&&e<t){var Q=g.charCodeAt(e++);56320==(64512&Q)?I.push(((1023&C)<<10)+(1023&Q)+65536):(I.push(C),e--)}else I.push(C)}return I}(g)).length,s=128,i=0,c=72;for(I=0;I<g.length;I++)(e=g[I])<128&&t.push(B(e));var A=t.length,l=A;for(A&&t.push("-");l<C;){var a=2147483647;for(I=0;I<g.length;I++)(e=g[I])>=s&&e<a&&(a=e);var r=l+1;if(a-s>F((2147483647-i)/r))throw RangeError(Q);for(i+=(a-s)*r,s=a,I=0;I<g.length;I++){if((e=g[I])<s&&++i>2147483647)throw RangeError(Q);if(e==s){for(var o=i,d=36;;d+=36){var u=d<=c?1:d>=c+26?26:d-c;if(o<u)break;var y=o-u,b=36-u;t.push(B(n(u+y%b))),o=F(y/b)}t.push(B(n(o))),c=U(i,r,l==A),i=0,++l}}++i,++s}return t.join("")};g.exports=function(g){var I,e,Q=[],F=g.toLowerCase().replace(C,".").split(".");for(I=0;I<F.length;I++)e=F[I],Q.push(t.test(e)?"xn--"+s(e):e);return Q.join(".")}},function(g,I,e){var t=e(60),C=e(333);g.exports=function(g){var I=C(g);if("function"!=typeof I)throw TypeError(String(g)+" is not iterable");return t(I.call(g))}},function(g,I,e){"use strict";e(22)({target:"URL",proto:!0,enumerable:!0},{toJSON:function(){return URL.prototype.toString.call(this)}})},function(g,I,e){var t=function(g){"use strict";var I=Object.prototype,e=I.hasOwnProperty,t="function"===typeof Symbol?Symbol:{},C=t.iterator||"@@iterator",Q=t.asyncIterator||"@@asyncIterator",F=t.toStringTag||"@@toStringTag";function B(g,I,e,t){var C=I&&I.prototype instanceof s?I:s,Q=Object.create(C.prototype),F=new Z(t||[]);return Q._invoke=function(g,I,e){var t="suspendedStart";return function(C,Q){if("executing"===t)throw new Error("Generator is already running");if("completed"===t){if("throw"===C)throw Q;return x()}for(e.method=C,e.arg=Q;;){var F=e.delegate;if(F){var B=u(F,e);if(B){if(B===U)continue;return B}}if("next"===e.method)e.sent=e._sent=e.arg;else if("throw"===e.method){if("suspendedStart"===t)throw t="completed",e.arg;e.dispatchException(e.arg)}else"return"===e.method&&e.abrupt("return",e.arg);t="executing";var s=n(g,I,e);if("normal"===s.type){if(t=e.done?"completed":"suspendedYield",s.arg===U)continue;return{value:s.arg,done:e.done}}"throw"===s.type&&(t="completed",e.method="throw",e.arg=s.arg)}}}(g,e,F),Q}function n(g,I,e){try{return{type:"normal",arg:g.call(I,e)}}catch(t){return{type:"throw",arg:t}}}g.wrap=B;var U={};function s(){}function i(){}function c(){}var A={};A[C]=function(){return this};var l=Object.getPrototypeOf,a=l&&l(l(m([])));a&&a!==I&&e.call(a,C)&&(A=a);var r=c.prototype=s.prototype=Object.create(A);function o(g){["next","throw","return"].forEach((function(I){g[I]=function(g){return this._invoke(I,g)}}))}function d(g){var I;this._invoke=function(t,C){function Q(){return new Promise((function(I,Q){!function I(t,C,Q,F){var B=n(g[t],g,C);if("throw"!==B.type){var U=B.arg,s=U.value;return s&&"object"===typeof s&&e.call(s,"__await")?Promise.resolve(s.__await).then((function(g){I("next",g,Q,F)}),(function(g){I("throw",g,Q,F)})):Promise.resolve(s).then((function(g){U.value=g,Q(U)}),(function(g){return I("throw",g,Q,F)}))}F(B.arg)}(t,C,I,Q)}))}return I=I?I.then(Q,Q):Q()}}function u(g,I){var e=g.iterator[I.method];if(void 0===e){if(I.delegate=null,"throw"===I.method){if(g.iterator.return&&(I.method="return",I.arg=void 0,u(g,I),"throw"===I.method))return U;I.method="throw",I.arg=new TypeError("The iterator does not provide a 'throw' method")}return U}var t=n(e,g.iterator,I.arg);if("throw"===t.type)return I.method="throw",I.arg=t.arg,I.delegate=null,U;var C=t.arg;return C?C.done?(I[g.resultName]=C.value,I.next=g.nextLoc,"return"!==I.method&&(I.method="next",I.arg=void 0),I.delegate=null,U):C:(I.method="throw",I.arg=new TypeError("iterator result is not an object"),I.delegate=null,U)}function y(g){var I={tryLoc:g[0]};1 in g&&(I.catchLoc=g[1]),2 in g&&(I.finallyLoc=g[2],I.afterLoc=g[3]),this.tryEntries.push(I)}function b(g){var I=g.completion||{};I.type="normal",delete I.arg,g.completion=I}function Z(g){this.tryEntries=[{tryLoc:"root"}],g.forEach(y,this),this.reset(!0)}function m(g){if(g){var I=g[C];if(I)return I.call(g);if("function"===typeof g.next)return g;if(!isNaN(g.length)){var t=-1,Q=function I(){for(;++t<g.length;)if(e.call(g,t))return I.value=g[t],I.done=!1,I;return I.value=void 0,I.done=!0,I};return Q.next=Q}}return{next:x}}function x(){return{value:void 0,done:!0}}return i.prototype=r.constructor=c,c.constructor=i,c[F]=i.displayName="GeneratorFunction",g.isGeneratorFunction=function(g){var I="function"===typeof g&&g.constructor;return!!I&&(I===i||"GeneratorFunction"===(I.displayName||I.name))},g.mark=function(g){return Object.setPrototypeOf?Object.setPrototypeOf(g,c):(g.__proto__=c,F in g||(g[F]="GeneratorFunction")),g.prototype=Object.create(r),g},g.awrap=function(g){return{__await:g}},o(d.prototype),d.prototype[Q]=function(){return this},g.AsyncIterator=d,g.async=function(I,e,t,C){var Q=new d(B(I,e,t,C));return g.isGeneratorFunction(e)?Q:Q.next().then((function(g){return g.done?g.value:Q.next()}))},o(r),r[F]="Generator",r[C]=function(){return this},r.toString=function(){return"[object Generator]"},g.keys=function(g){var I=[];for(var e in g)I.push(e);return I.reverse(),function e(){for(;I.length;){var t=I.pop();if(t in g)return e.value=t,e.done=!1,e}return e.done=!0,e}},g.values=m,Z.prototype={constructor:Z,reset:function(g){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(b),!g)for(var I in this)"t"===I.charAt(0)&&e.call(this,I)&&!isNaN(+I.slice(1))&&(this[I]=void 0)},stop:function(){this.done=!0;var g=this.tryEntries[0].completion;if("throw"===g.type)throw g.arg;return this.rval},dispatchException:function(g){if(this.done)throw g;var I=this;function t(e,t){return F.type="throw",F.arg=g,I.next=e,t&&(I.method="next",I.arg=void 0),!!t}for(var C=this.tryEntries.length-1;C>=0;--C){var Q=this.tryEntries[C],F=Q.completion;if("root"===Q.tryLoc)return t("end");if(Q.tryLoc<=this.prev){var B=e.call(Q,"catchLoc"),n=e.call(Q,"finallyLoc");if(B&&n){if(this.prev<Q.catchLoc)return t(Q.catchLoc,!0);if(this.prev<Q.finallyLoc)return t(Q.finallyLoc)}else if(B){if(this.prev<Q.catchLoc)return t(Q.catchLoc,!0)}else{if(!n)throw new Error("try statement without catch or finally");if(this.prev<Q.finallyLoc)return t(Q.finallyLoc)}}}},abrupt:function(g,I){for(var t=this.tryEntries.length-1;t>=0;--t){var C=this.tryEntries[t];if(C.tryLoc<=this.prev&&e.call(C,"finallyLoc")&&this.prev<C.finallyLoc){var Q=C;break}}Q&&("break"===g||"continue"===g)&&Q.tryLoc<=I&&I<=Q.finallyLoc&&(Q=null);var F=Q?Q.completion:{};return F.type=g,F.arg=I,Q?(this.method="next",this.next=Q.finallyLoc,U):this.complete(F)},complete:function(g,I){if("throw"===g.type)throw g.arg;return"break"===g.type||"continue"===g.type?this.next=g.arg:"return"===g.type?(this.rval=this.arg=g.arg,this.method="return",this.next="end"):"normal"===g.type&&I&&(this.next=I),U},finish:function(g){for(var I=this.tryEntries.length-1;I>=0;--I){var e=this.tryEntries[I];if(e.finallyLoc===g)return this.complete(e.completion,e.afterLoc),b(e),U}},catch:function(g){for(var I=this.tryEntries.length-1;I>=0;--I){var e=this.tryEntries[I];if(e.tryLoc===g){var t=e.completion;if("throw"===t.type){var C=t.arg;b(e)}return C}}throw new Error("illegal catch attempt")},delegateYield:function(g,I,e){return this.delegate={iterator:m(g),resultName:I,nextLoc:e},"next"===this.method&&(this.arg=void 0),U}},g}(g.exports);try{regeneratorRuntime=t}catch(C){Function("r","regeneratorRuntime = r")(t)}},function(g,I,e){"use strict";var t=e(139),C="function"===typeof Symbol&&Symbol.for,Q=C?Symbol.for("react.element"):60103,F=C?Symbol.for("react.portal"):60106,B=C?Symbol.for("react.fragment"):60107,n=C?Symbol.for("react.strict_mode"):60108,U=C?Symbol.for("react.profiler"):60114,s=C?Symbol.for("react.provider"):60109,i=C?Symbol.for("react.context"):60110,c=C?Symbol.for("react.forward_ref"):60112,A=C?Symbol.for("react.suspense"):60113;C&&Symbol.for("react.suspense_list");var l=C?Symbol.for("react.memo"):60115,a=C?Symbol.for("react.lazy"):60116;C&&Symbol.for("react.fundamental"),C&&Symbol.for("react.responder"),C&&Symbol.for("react.scope");var r="function"===typeof Symbol&&Symbol.iterator;function o(g){for(var I="https://reactjs.org/docs/error-decoder.html?invariant="+g,e=1;e<arguments.length;e++)I+="&args[]="+encodeURIComponent(arguments[e]);return"Minified React error #"+g+"; visit "+I+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var d={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},u={};function y(g,I,e){this.props=g,this.context=I,this.refs=u,this.updater=e||d}function b(){}function Z(g,I,e){this.props=g,this.context=I,this.refs=u,this.updater=e||d}y.prototype.isReactComponent={},y.prototype.setState=function(g,I){if("object"!==typeof g&&"function"!==typeof g&&null!=g)throw Error(o(85));this.updater.enqueueSetState(this,g,I,"setState")},y.prototype.forceUpdate=function(g){this.updater.enqueueForceUpdate(this,g,"forceUpdate")},b.prototype=y.prototype;var m=Z.prototype=new b;m.constructor=Z,t(m,y.prototype),m.isPureReactComponent=!0;var x={current:null},R={current:null},S=Object.prototype.hasOwnProperty,G={key:!0,ref:!0,__self:!0,__source:!0};function L(g,I,e){var t,C={},F=null,B=null;if(null!=I)for(t in void 0!==I.ref&&(B=I.ref),void 0!==I.key&&(F=""+I.key),I)S.call(I,t)&&!G.hasOwnProperty(t)&&(C[t]=I[t]);var n=arguments.length-2;if(1===n)C.children=e;else if(1<n){for(var U=Array(n),s=0;s<n;s++)U[s]=arguments[s+2];C.children=U}if(g&&g.defaultProps)for(t in n=g.defaultProps)void 0===C[t]&&(C[t]=n[t]);return{$$typeof:Q,type:g,key:F,ref:B,props:C,_owner:R.current}}function V(g){return"object"===typeof g&&null!==g&&g.$$typeof===Q}var h=/\/+/g,D=[];function p(g,I,e,t){if(D.length){var C=D.pop();return C.result=g,C.keyPrefix=I,C.func=e,C.context=t,C.count=0,C}return{result:g,keyPrefix:I,func:e,context:t,count:0}}function E(g){g.result=null,g.keyPrefix=null,g.func=null,g.context=null,g.count=0,10>D.length&&D.push(g)}function N(g,I,e){return null==g?0:function g(I,e,t,C){var B=typeof I;"undefined"!==B&&"boolean"!==B||(I=null);var n=!1;if(null===I)n=!0;else switch(B){case"string":case"number":n=!0;break;case"object":switch(I.$$typeof){case Q:case F:n=!0}}if(n)return t(C,I,""===e?"."+W(I,0):e),1;if(n=0,e=""===e?".":e+":",Array.isArray(I))for(var U=0;U<I.length;U++){var s=e+W(B=I[U],U);n+=g(B,s,t,C)}else if(null===I||"object"!==typeof I?s=null:s="function"===typeof(s=r&&I[r]||I["@@iterator"])?s:null,"function"===typeof s)for(I=s.call(I),U=0;!(B=I.next()).done;)n+=g(B=B.value,s=e+W(B,U++),t,C);else if("object"===B)throw t=""+I,Error(o(31,"[object Object]"===t?"object with keys {"+Object.keys(I).join(", ")+"}":t,""));return n}(g,"",I,e)}function W(g,I){return"object"===typeof g&&null!==g&&null!=g.key?function(g){var I={"=":"=0",":":"=2"};return"$"+(""+g).replace(/[=:]/g,(function(g){return I[g]}))}(g.key):I.toString(36)}function f(g,I){g.func.call(g.context,I,g.count++)}function X(g,I,e){var t=g.result,C=g.keyPrefix;g=g.func.call(g.context,I,g.count++),Array.isArray(g)?J(g,t,e,(function(g){return g})):null!=g&&(V(g)&&(g=function(g,I){return{$$typeof:Q,type:g.type,key:I,ref:g.ref,props:g.props,_owner:g._owner}}(g,C+(!g.key||I&&I.key===g.key?"":(""+g.key).replace(h,"$&/")+"/")+e)),t.push(g))}function J(g,I,e,t,C){var Q="";null!=e&&(Q=(""+e).replace(h,"$&/")+"/"),N(g,X,I=p(I,Q,t,C)),E(I)}function v(){var g=x.current;if(null===g)throw Error(o(321));return g}var k={Children:{map:function(g,I,e){if(null==g)return g;var t=[];return J(g,t,null,I,e),t},forEach:function(g,I,e){if(null==g)return g;N(g,f,I=p(null,null,I,e)),E(I)},count:function(g){return N(g,(function(){return null}),null)},toArray:function(g){var I=[];return J(g,I,null,(function(g){return g})),I},only:function(g){if(!V(g))throw Error(o(143));return g}},createRef:function(){return{current:null}},Component:y,PureComponent:Z,createContext:function(g,I){return void 0===I&&(I=null),(g={$$typeof:i,_calculateChangedBits:I,_currentValue:g,_currentValue2:g,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:s,_context:g},g.Consumer=g},forwardRef:function(g){return{$$typeof:c,render:g}},lazy:function(g){return{$$typeof:a,_ctor:g,_status:-1,_result:null}},memo:function(g,I){return{$$typeof:l,type:g,compare:void 0===I?null:I}},useCallback:function(g,I){return v().useCallback(g,I)},useContext:function(g,I){return v().useContext(g,I)},useEffect:function(g,I){return v().useEffect(g,I)},useImperativeHandle:function(g,I,e){return v().useImperativeHandle(g,I,e)},useDebugValue:function(){},useLayoutEffect:function(g,I){return v().useLayoutEffect(g,I)},useMemo:function(g,I){return v().useMemo(g,I)},useReducer:function(g,I,e){return v().useReducer(g,I,e)},useRef:function(g){return v().useRef(g)},useState:function(g){return v().useState(g)},Fragment:B,Profiler:U,StrictMode:n,Suspense:A,createElement:L,cloneElement:function(g,I,e){if(null===g||void 0===g)throw Error(o(267,g));var C=t({},g.props),F=g.key,B=g.ref,n=g._owner;if(null!=I){if(void 0!==I.ref&&(B=I.ref,n=R.current),void 0!==I.key&&(F=""+I.key),g.type&&g.type.defaultProps)var U=g.type.defaultProps;for(s in I)S.call(I,s)&&!G.hasOwnProperty(s)&&(C[s]=void 0===I[s]&&void 0!==U?U[s]:I[s])}var s=arguments.length-2;if(1===s)C.children=e;else if(1<s){U=Array(s);for(var i=0;i<s;i++)U[i]=arguments[i+2];C.children=U}return{$$typeof:Q,type:g.type,key:F,ref:B,props:C,_owner:n}},createFactory:function(g){var I=L.bind(null,g);return I.type=g,I},isValidElement:V,version:"16.12.0",__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{ReactCurrentDispatcher:x,ReactCurrentBatchConfig:{suspense:null},ReactCurrentOwner:R,IsSomeRendererActing:{current:!1},assign:t}},H={default:k},M=H&&k||H;g.exports=M.default||M},function(g,I,e){"use strict";var t=e(0),C=e(139),Q=e(1156);function F(g){for(var I="https://reactjs.org/docs/error-decoder.html?invariant="+g,e=1;e<arguments.length;e++)I+="&args[]="+encodeURIComponent(arguments[e]);return"Minified React error #"+g+"; visit "+I+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}if(!t)throw Error(F(227));var B=null,n={};function U(){if(B)for(var g in n){var I=n[g],e=B.indexOf(g);if(!(-1<e))throw Error(F(96,g));if(!i[e]){if(!I.extractEvents)throw Error(F(97,g));for(var t in i[e]=I,e=I.eventTypes){var C=void 0,Q=e[t],U=I,A=t;if(c.hasOwnProperty(A))throw Error(F(99,A));c[A]=Q;var l=Q.phasedRegistrationNames;if(l){for(C in l)l.hasOwnProperty(C)&&s(l[C],U,A);C=!0}else Q.registrationName?(s(Q.registrationName,U,A),C=!0):C=!1;if(!C)throw Error(F(98,t,g))}}}}function s(g,I,e){if(A[g])throw Error(F(100,g));A[g]=I,l[g]=I.eventTypes[e].dependencies}var i=[],c={},A={},l={};function a(g,I,e,t,C,Q,F,B,n){var U=Array.prototype.slice.call(arguments,3);try{I.apply(e,U)}catch(s){this.onError(s)}}var r=!1,o=null,d=!1,u=null,y={onError:function(g){r=!0,o=g}};function b(g,I,e,t,C,Q,F,B,n){r=!1,o=null,a.apply(y,arguments)}var Z=null,m=null,x=null;function R(g,I,e){var t=g.type||"unknown-event";g.currentTarget=x(e),function(g,I,e,t,C,Q,B,n,U){if(b.apply(this,arguments),r){if(!r)throw Error(F(198));var s=o;r=!1,o=null,d||(d=!0,u=s)}}(t,I,void 0,g),g.currentTarget=null}function S(g,I){if(null==I)throw Error(F(30));return null==g?I:Array.isArray(g)?Array.isArray(I)?(g.push.apply(g,I),g):(g.push(I),g):Array.isArray(I)?[g].concat(I):[g,I]}function G(g,I,e){Array.isArray(g)?g.forEach(I,e):g&&I.call(e,g)}var L=null;function V(g){if(g){var I=g._dispatchListeners,e=g._dispatchInstances;if(Array.isArray(I))for(var t=0;t<I.length&&!g.isPropagationStopped();t++)R(g,I[t],e[t]);else I&&R(g,I,e);g._dispatchListeners=null,g._dispatchInstances=null,g.isPersistent()||g.constructor.release(g)}}function h(g){if(null!==g&&(L=S(L,g)),g=L,L=null,g){if(G(g,V),L)throw Error(F(95));if(d)throw g=u,d=!1,u=null,g}}var D={injectEventPluginOrder:function(g){if(B)throw Error(F(101));B=Array.prototype.slice.call(g),U()},injectEventPluginsByName:function(g){var I,e=!1;for(I in g)if(g.hasOwnProperty(I)){var t=g[I];if(!n.hasOwnProperty(I)||n[I]!==t){if(n[I])throw Error(F(102,I));n[I]=t,e=!0}}e&&U()}};function p(g,I){var e=g.stateNode;if(!e)return null;var t=Z(e);if(!t)return null;e=t[I];g:switch(I){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":(t=!t.disabled)||(t=!("button"===(g=g.type)||"input"===g||"select"===g||"textarea"===g)),g=!t;break g;default:g=!1}if(g)return null;if(e&&"function"!==typeof e)throw Error(F(231,I,typeof e));return e}var E=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;E.hasOwnProperty("ReactCurrentDispatcher")||(E.ReactCurrentDispatcher={current:null}),E.hasOwnProperty("ReactCurrentBatchConfig")||(E.ReactCurrentBatchConfig={suspense:null});var N=/^(.*)[\\\/]/,W="function"===typeof Symbol&&Symbol.for,f=W?Symbol.for("react.element"):60103,X=W?Symbol.for("react.portal"):60106,J=W?Symbol.for("react.fragment"):60107,v=W?Symbol.for("react.strict_mode"):60108,k=W?Symbol.for("react.profiler"):60114,H=W?Symbol.for("react.provider"):60109,M=W?Symbol.for("react.context"):60110,Y=W?Symbol.for("react.concurrent_mode"):60111,w=W?Symbol.for("react.forward_ref"):60112,T=W?Symbol.for("react.suspense"):60113,z=W?Symbol.for("react.suspense_list"):60120,O=W?Symbol.for("react.memo"):60115,K=W?Symbol.for("react.lazy"):60116;W&&Symbol.for("react.fundamental"),W&&Symbol.for("react.responder"),W&&Symbol.for("react.scope");var j="function"===typeof Symbol&&Symbol.iterator;function P(g){return null===g||"object"!==typeof g?null:"function"===typeof(g=j&&g[j]||g["@@iterator"])?g:null}function _(g){if(null==g)return null;if("function"===typeof g)return g.displayName||g.name||null;if("string"===typeof g)return g;switch(g){case J:return"Fragment";case X:return"Portal";case k:return"Profiler";case v:return"StrictMode";case T:return"Suspense";case z:return"SuspenseList"}if("object"===typeof g)switch(g.$$typeof){case M:return"Context.Consumer";case H:return"Context.Provider";case w:var I=g.render;return I=I.displayName||I.name||"",g.displayName||(""!==I?"ForwardRef("+I+")":"ForwardRef");case O:return _(g.type);case K:if(g=1===g._status?g._result:null)return _(g)}return null}function q(g){var I="";do{g:switch(g.tag){case 3:case 4:case 6:case 7:case 10:case 9:var e="";break g;default:var t=g._debugOwner,C=g._debugSource,Q=_(g.type);e=null,t&&(e=_(t.type)),t=Q,Q="",C?Q=" (at "+C.fileName.replace(N,"")+":"+C.lineNumber+")":e&&(Q=" (created by "+e+")"),e="\n    in "+(t||"Unknown")+Q}I+=e,g=g.return}while(g);return I}var $=!("undefined"===typeof window||"undefined"===typeof window.document||"undefined"===typeof window.document.createElement),gg=null,Ig=null,eg=null;function tg(g){if(g=m(g)){if("function"!==typeof gg)throw Error(F(280));var I=Z(g.stateNode);gg(g.stateNode,g.type,I)}}function Cg(g){Ig?eg?eg.push(g):eg=[g]:Ig=g}function Qg(){if(Ig){var g=Ig,I=eg;if(eg=Ig=null,tg(g),I)for(g=0;g<I.length;g++)tg(I[g])}}function Fg(g,I){return g(I)}function Bg(g,I,e,t){return g(I,e,t)}function ng(){}var Ug=Fg,sg=!1,ig=!1;function cg(){null===Ig&&null===eg||(ng(),Qg())}new Map;var Ag=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,lg=Object.prototype.hasOwnProperty,ag={},rg={};function og(g,I,e,t,C,Q){this.acceptsBooleans=2===I||3===I||4===I,this.attributeName=t,this.attributeNamespace=C,this.mustUseProperty=e,this.propertyName=g,this.type=I,this.sanitizeURL=Q}var dg={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(g){dg[g]=new og(g,0,!1,g,null,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(g){var I=g[0];dg[I]=new og(I,1,!1,g[1],null,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(g){dg[g]=new og(g,2,!1,g.toLowerCase(),null,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(g){dg[g]=new og(g,2,!1,g,null,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(g){dg[g]=new og(g,3,!1,g.toLowerCase(),null,!1)})),["checked","multiple","muted","selected"].forEach((function(g){dg[g]=new og(g,3,!0,g,null,!1)})),["capture","download"].forEach((function(g){dg[g]=new og(g,4,!1,g,null,!1)})),["cols","rows","size","span"].forEach((function(g){dg[g]=new og(g,6,!1,g,null,!1)})),["rowSpan","start"].forEach((function(g){dg[g]=new og(g,5,!1,g.toLowerCase(),null,!1)}));var ug=/[\-:]([a-z])/g;function yg(g){return g[1].toUpperCase()}function bg(g){switch(typeof g){case"boolean":case"number":case"object":case"string":case"undefined":return g;default:return""}}function Zg(g,I,e,t){var C=dg.hasOwnProperty(I)?dg[I]:null;(null!==C?0===C.type:!t&&(2<I.length&&("o"===I[0]||"O"===I[0])&&("n"===I[1]||"N"===I[1])))||(function(g,I,e,t){if(null===I||"undefined"===typeof I||function(g,I,e,t){if(null!==e&&0===e.type)return!1;switch(typeof I){case"function":case"symbol":return!0;case"boolean":return!t&&(null!==e?!e.acceptsBooleans:"data-"!==(g=g.toLowerCase().slice(0,5))&&"aria-"!==g);default:return!1}}(g,I,e,t))return!0;if(t)return!1;if(null!==e)switch(e.type){case 3:return!I;case 4:return!1===I;case 5:return isNaN(I);case 6:return isNaN(I)||1>I}return!1}(I,e,C,t)&&(e=null),t||null===C?function(g){return!!lg.call(rg,g)||!lg.call(ag,g)&&(Ag.test(g)?rg[g]=!0:(ag[g]=!0,!1))}(I)&&(null===e?g.removeAttribute(I):g.setAttribute(I,""+e)):C.mustUseProperty?g[C.propertyName]=null===e?3!==C.type&&"":e:(I=C.attributeName,t=C.attributeNamespace,null===e?g.removeAttribute(I):(e=3===(C=C.type)||4===C&&!0===e?"":""+e,t?g.setAttributeNS(t,I,e):g.setAttribute(I,e))))}function mg(g){var I=g.type;return(g=g.nodeName)&&"input"===g.toLowerCase()&&("checkbox"===I||"radio"===I)}function xg(g){g._valueTracker||(g._valueTracker=function(g){var I=mg(g)?"checked":"value",e=Object.getOwnPropertyDescriptor(g.constructor.prototype,I),t=""+g[I];if(!g.hasOwnProperty(I)&&"undefined"!==typeof e&&"function"===typeof e.get&&"function"===typeof e.set){var C=e.get,Q=e.set;return Object.defineProperty(g,I,{configurable:!0,get:function(){return C.call(this)},set:function(g){t=""+g,Q.call(this,g)}}),Object.defineProperty(g,I,{enumerable:e.enumerable}),{getValue:function(){return t},setValue:function(g){t=""+g},stopTracking:function(){g._valueTracker=null,delete g[I]}}}}(g))}function Rg(g){if(!g)return!1;var I=g._valueTracker;if(!I)return!0;var e=I.getValue(),t="";return g&&(t=mg(g)?g.checked?"true":"false":g.value),(g=t)!==e&&(I.setValue(g),!0)}function Sg(g,I){var e=I.checked;return C({},I,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=e?e:g._wrapperState.initialChecked})}function Gg(g,I){var e=null==I.defaultValue?"":I.defaultValue,t=null!=I.checked?I.checked:I.defaultChecked;e=bg(null!=I.value?I.value:e),g._wrapperState={initialChecked:t,initialValue:e,controlled:"checkbox"===I.type||"radio"===I.type?null!=I.checked:null!=I.value}}function Lg(g,I){null!=(I=I.checked)&&Zg(g,"checked",I,!1)}function Vg(g,I){Lg(g,I);var e=bg(I.value),t=I.type;if(null!=e)"number"===t?(0===e&&""===g.value||g.value!=e)&&(g.value=""+e):g.value!==""+e&&(g.value=""+e);else if("submit"===t||"reset"===t)return void g.removeAttribute("value");I.hasOwnProperty("value")?Dg(g,I.type,e):I.hasOwnProperty("defaultValue")&&Dg(g,I.type,bg(I.defaultValue)),null==I.checked&&null!=I.defaultChecked&&(g.defaultChecked=!!I.defaultChecked)}function hg(g,I,e){if(I.hasOwnProperty("value")||I.hasOwnProperty("defaultValue")){var t=I.type;if(!("submit"!==t&&"reset"!==t||void 0!==I.value&&null!==I.value))return;I=""+g._wrapperState.initialValue,e||I===g.value||(g.value=I),g.defaultValue=I}""!==(e=g.name)&&(g.name=""),g.defaultChecked=!g.defaultChecked,g.defaultChecked=!!g._wrapperState.initialChecked,""!==e&&(g.name=e)}function Dg(g,I,e){"number"===I&&g.ownerDocument.activeElement===g||(null==e?g.defaultValue=""+g._wrapperState.initialValue:g.defaultValue!==""+e&&(g.defaultValue=""+e))}function pg(g,I){return g=C({children:void 0},I),(I=function(g){var I="";return t.Children.forEach(g,(function(g){null!=g&&(I+=g)})),I}(I.children))&&(g.children=I),g}function Eg(g,I,e,t){if(g=g.options,I){I={};for(var C=0;C<e.length;C++)I["$"+e[C]]=!0;for(e=0;e<g.length;e++)C=I.hasOwnProperty("$"+g[e].value),g[e].selected!==C&&(g[e].selected=C),C&&t&&(g[e].defaultSelected=!0)}else{for(e=""+bg(e),I=null,C=0;C<g.length;C++){if(g[C].value===e)return g[C].selected=!0,void(t&&(g[C].defaultSelected=!0));null!==I||g[C].disabled||(I=g[C])}null!==I&&(I.selected=!0)}}function Ng(g,I){if(null!=I.dangerouslySetInnerHTML)throw Error(F(91));return C({},I,{value:void 0,defaultValue:void 0,children:""+g._wrapperState.initialValue})}function Wg(g,I){var e=I.value;if(null==e){if(e=I.defaultValue,null!=(I=I.children)){if(null!=e)throw Error(F(92));if(Array.isArray(I)){if(!(1>=I.length))throw Error(F(93));I=I[0]}e=I}null==e&&(e="")}g._wrapperState={initialValue:bg(e)}}function fg(g,I){var e=bg(I.value),t=bg(I.defaultValue);null!=e&&((e=""+e)!==g.value&&(g.value=e),null==I.defaultValue&&g.defaultValue!==e&&(g.defaultValue=e)),null!=t&&(g.defaultValue=""+t)}function Xg(g){var I=g.textContent;I===g._wrapperState.initialValue&&""!==I&&null!==I&&(g.value=I)}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(g){var I=g.replace(ug,yg);dg[I]=new og(I,1,!1,g,null,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(g){var I=g.replace(ug,yg);dg[I]=new og(I,1,!1,g,"http://www.w3.org/1999/xlink",!1)})),["xml:base","xml:lang","xml:space"].forEach((function(g){var I=g.replace(ug,yg);dg[I]=new og(I,1,!1,g,"http://www.w3.org/XML/1998/namespace",!1)})),["tabIndex","crossOrigin"].forEach((function(g){dg[g]=new og(g,1,!1,g.toLowerCase(),null,!1)})),dg.xlinkHref=new og("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0),["src","href","action","formAction"].forEach((function(g){dg[g]=new og(g,1,!1,g.toLowerCase(),null,!0)}));var Jg="http://www.w3.org/1999/xhtml",vg="http://www.w3.org/2000/svg";function kg(g){switch(g){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function Hg(g,I){return null==g||"http://www.w3.org/1999/xhtml"===g?kg(I):"http://www.w3.org/2000/svg"===g&&"foreignObject"===I?"http://www.w3.org/1999/xhtml":g}var Mg,Yg=function(g){return"undefined"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(I,e,t,C){MSApp.execUnsafeLocalFunction((function(){return g(I,e)}))}:g}((function(g,I){if(g.namespaceURI!==vg||"innerHTML"in g)g.innerHTML=I;else{for((Mg=Mg||document.createElement("div")).innerHTML="<svg>"+I.valueOf().toString()+"</svg>",I=Mg.firstChild;g.firstChild;)g.removeChild(g.firstChild);for(;I.firstChild;)g.appendChild(I.firstChild)}}));function wg(g,I){if(I){var e=g.firstChild;if(e&&e===g.lastChild&&3===e.nodeType)return void(e.nodeValue=I)}g.textContent=I}function Tg(g,I){var e={};return e[g.toLowerCase()]=I.toLowerCase(),e["Webkit"+g]="webkit"+I,e["Moz"+g]="moz"+I,e}var zg={animationend:Tg("Animation","AnimationEnd"),animationiteration:Tg("Animation","AnimationIteration"),animationstart:Tg("Animation","AnimationStart"),transitionend:Tg("Transition","TransitionEnd")},Og={},Kg={};function jg(g){if(Og[g])return Og[g];if(!zg[g])return g;var I,e=zg[g];for(I in e)if(e.hasOwnProperty(I)&&I in Kg)return Og[g]=e[I];return g}$&&(Kg=document.createElement("div").style,"AnimationEvent"in window||(delete zg.animationend.animation,delete zg.animationiteration.animation,delete zg.animationstart.animation),"TransitionEvent"in window||delete zg.transitionend.transition);var Pg=jg("animationend"),_g=jg("animationiteration"),qg=jg("animationstart"),$g=jg("transitionend"),gI="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" ");function II(g){var I=g,e=g;if(g.alternate)for(;I.return;)I=I.return;else{g=I;do{0!==(1026&(I=g).effectTag)&&(e=I.return),g=I.return}while(g)}return 3===I.tag?e:null}function eI(g){if(13===g.tag){var I=g.memoizedState;if(null===I&&(null!==(g=g.alternate)&&(I=g.memoizedState)),null!==I)return I.dehydrated}return null}function tI(g){if(II(g)!==g)throw Error(F(188))}function CI(g){if(!(g=function(g){var I=g.alternate;if(!I){if(null===(I=II(g)))throw Error(F(188));return I!==g?null:g}for(var e=g,t=I;;){var C=e.return;if(null===C)break;var Q=C.alternate;if(null===Q){if(null!==(t=C.return)){e=t;continue}break}if(C.child===Q.child){for(Q=C.child;Q;){if(Q===e)return tI(C),g;if(Q===t)return tI(C),I;Q=Q.sibling}throw Error(F(188))}if(e.return!==t.return)e=C,t=Q;else{for(var B=!1,n=C.child;n;){if(n===e){B=!0,e=C,t=Q;break}if(n===t){B=!0,t=C,e=Q;break}n=n.sibling}if(!B){for(n=Q.child;n;){if(n===e){B=!0,e=Q,t=C;break}if(n===t){B=!0,t=Q,e=C;break}n=n.sibling}if(!B)throw Error(F(189))}}if(e.alternate!==t)throw Error(F(190))}if(3!==e.tag)throw Error(F(188));return e.stateNode.current===e?g:I}(g)))return null;for(var I=g;;){if(5===I.tag||6===I.tag)return I;if(I.child)I.child.return=I,I=I.child;else{if(I===g)break;for(;!I.sibling;){if(!I.return||I.return===g)return null;I=I.return}I.sibling.return=I.return,I=I.sibling}}return null}var QI,FI,BI,nI=!1,UI=[],sI=null,iI=null,cI=null,AI=new Map,lI=new Map,aI=[],rI="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput close cancel copy cut paste click change contextmenu reset submit".split(" "),oI="focus blur dragenter dragleave mouseover mouseout pointerover pointerout gotpointercapture lostpointercapture".split(" ");function dI(g,I,e,t){return{blockedOn:g,topLevelType:I,eventSystemFlags:32|e,nativeEvent:t}}function uI(g,I){switch(g){case"focus":case"blur":sI=null;break;case"dragenter":case"dragleave":iI=null;break;case"mouseover":case"mouseout":cI=null;break;case"pointerover":case"pointerout":AI.delete(I.pointerId);break;case"gotpointercapture":case"lostpointercapture":lI.delete(I.pointerId)}}function yI(g,I,e,t,C){return null===g||g.nativeEvent!==C?(g=dI(I,e,t,C),null!==I&&(null!==(I=nt(I))&&FI(I)),g):(g.eventSystemFlags|=t,g)}function bI(g){var I=Bt(g.target);if(null!==I){var e=II(I);if(null!==e)if(13===(I=e.tag)){if(null!==(I=eI(e)))return g.blockedOn=I,void Q.unstable_runWithPriority(g.priority,(function(){BI(e)}))}else if(3===I&&e.stateNode.hydrate)return void(g.blockedOn=3===e.tag?e.stateNode.containerInfo:null)}g.blockedOn=null}function ZI(g){if(null!==g.blockedOn)return!1;var I=he(g.topLevelType,g.eventSystemFlags,g.nativeEvent);if(null!==I){var e=nt(I);return null!==e&&FI(e),g.blockedOn=I,!1}return!0}function mI(g,I,e){ZI(g)&&e.delete(I)}function xI(){for(nI=!1;0<UI.length;){var g=UI[0];if(null!==g.blockedOn){null!==(g=nt(g.blockedOn))&&QI(g);break}var I=he(g.topLevelType,g.eventSystemFlags,g.nativeEvent);null!==I?g.blockedOn=I:UI.shift()}null!==sI&&ZI(sI)&&(sI=null),null!==iI&&ZI(iI)&&(iI=null),null!==cI&&ZI(cI)&&(cI=null),AI.forEach(mI),lI.forEach(mI)}function RI(g,I){g.blockedOn===I&&(g.blockedOn=null,nI||(nI=!0,Q.unstable_scheduleCallback(Q.unstable_NormalPriority,xI)))}function SI(g){function I(I){return RI(I,g)}if(0<UI.length){RI(UI[0],g);for(var e=1;e<UI.length;e++){var t=UI[e];t.blockedOn===g&&(t.blockedOn=null)}}for(null!==sI&&RI(sI,g),null!==iI&&RI(iI,g),null!==cI&&RI(cI,g),AI.forEach(I),lI.forEach(I),e=0;e<aI.length;e++)(t=aI[e]).blockedOn===g&&(t.blockedOn=null);for(;0<aI.length&&null===(e=aI[0]).blockedOn;)bI(e),null===e.blockedOn&&aI.shift()}function GI(g){return(g=g.target||g.srcElement||window).correspondingUseElement&&(g=g.correspondingUseElement),3===g.nodeType?g.parentNode:g}function LI(g){do{g=g.return}while(g&&5!==g.tag);return g||null}function VI(g,I,e){(I=p(g,e.dispatchConfig.phasedRegistrationNames[I]))&&(e._dispatchListeners=S(e._dispatchListeners,I),e._dispatchInstances=S(e._dispatchInstances,g))}function hI(g){if(g&&g.dispatchConfig.phasedRegistrationNames){for(var I=g._targetInst,e=[];I;)e.push(I),I=LI(I);for(I=e.length;0<I--;)VI(e[I],"captured",g);for(I=0;I<e.length;I++)VI(e[I],"bubbled",g)}}function DI(g,I,e){g&&e&&e.dispatchConfig.registrationName&&(I=p(g,e.dispatchConfig.registrationName))&&(e._dispatchListeners=S(e._dispatchListeners,I),e._dispatchInstances=S(e._dispatchInstances,g))}function pI(g){g&&g.dispatchConfig.registrationName&&DI(g._targetInst,null,g)}function EI(g){G(g,hI)}function NI(){return!0}function WI(){return!1}function fI(g,I,e,t){for(var C in this.dispatchConfig=g,this._targetInst=I,this.nativeEvent=e,g=this.constructor.Interface)g.hasOwnProperty(C)&&((I=g[C])?this[C]=I(e):"target"===C?this.target=t:this[C]=e[C]);return this.isDefaultPrevented=(null!=e.defaultPrevented?e.defaultPrevented:!1===e.returnValue)?NI:WI,this.isPropagationStopped=WI,this}function XI(g,I,e,t){if(this.eventPool.length){var C=this.eventPool.pop();return this.call(C,g,I,e,t),C}return new this(g,I,e,t)}function JI(g){if(!(g instanceof this))throw Error(F(279));g.destructor(),10>this.eventPool.length&&this.eventPool.push(g)}function vI(g){g.eventPool=[],g.getPooled=XI,g.release=JI}C(fI.prototype,{preventDefault:function(){this.defaultPrevented=!0;var g=this.nativeEvent;g&&(g.preventDefault?g.preventDefault():"unknown"!==typeof g.returnValue&&(g.returnValue=!1),this.isDefaultPrevented=NI)},stopPropagation:function(){var g=this.nativeEvent;g&&(g.stopPropagation?g.stopPropagation():"unknown"!==typeof g.cancelBubble&&(g.cancelBubble=!0),this.isPropagationStopped=NI)},persist:function(){this.isPersistent=NI},isPersistent:WI,destructor:function(){var g,I=this.constructor.Interface;for(g in I)this[g]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null,this.isPropagationStopped=this.isDefaultPrevented=WI,this._dispatchInstances=this._dispatchListeners=null}}),fI.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(g){return g.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null},fI.extend=function(g){function I(){}function e(){return t.apply(this,arguments)}var t=this;I.prototype=t.prototype;var Q=new I;return C(Q,e.prototype),e.prototype=Q,e.prototype.constructor=e,e.Interface=C({},t.Interface,g),e.extend=t.extend,vI(e),e},vI(fI);var kI=fI.extend({animationName:null,elapsedTime:null,pseudoElement:null}),HI=fI.extend({clipboardData:function(g){return"clipboardData"in g?g.clipboardData:window.clipboardData}}),MI=fI.extend({view:null,detail:null}),YI=MI.extend({relatedTarget:null});function wI(g){var I=g.keyCode;return"charCode"in g?0===(g=g.charCode)&&13===I&&(g=13):g=I,10===g&&(g=13),32<=g||13===g?g:0}var TI={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},zI={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},OI={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function KI(g){var I=this.nativeEvent;return I.getModifierState?I.getModifierState(g):!!(g=OI[g])&&!!I[g]}function jI(){return KI}for(var PI=MI.extend({key:function(g){if(g.key){var I=TI[g.key]||g.key;if("Unidentified"!==I)return I}return"keypress"===g.type?13===(g=wI(g))?"Enter":String.fromCharCode(g):"keydown"===g.type||"keyup"===g.type?zI[g.keyCode]||"Unidentified":""},location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:jI,charCode:function(g){return"keypress"===g.type?wI(g):0},keyCode:function(g){return"keydown"===g.type||"keyup"===g.type?g.keyCode:0},which:function(g){return"keypress"===g.type?wI(g):"keydown"===g.type||"keyup"===g.type?g.keyCode:0}}),_I=0,qI=0,$I=!1,ge=!1,Ie=MI.extend({screenX:null,screenY:null,clientX:null,clientY:null,pageX:null,pageY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:jI,button:null,buttons:null,relatedTarget:function(g){return g.relatedTarget||(g.fromElement===g.srcElement?g.toElement:g.fromElement)},movementX:function(g){if("movementX"in g)return g.movementX;var I=_I;return _I=g.screenX,$I?"mousemove"===g.type?g.screenX-I:0:($I=!0,0)},movementY:function(g){if("movementY"in g)return g.movementY;var I=qI;return qI=g.screenY,ge?"mousemove"===g.type?g.screenY-I:0:(ge=!0,0)}}),ee=Ie.extend({pointerId:null,width:null,height:null,pressure:null,tangentialPressure:null,tiltX:null,tiltY:null,twist:null,pointerType:null,isPrimary:null}),te=Ie.extend({dataTransfer:null}),Ce=MI.extend({touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:jI}),Qe=fI.extend({propertyName:null,elapsedTime:null,pseudoElement:null}),Fe=Ie.extend({deltaX:function(g){return"deltaX"in g?g.deltaX:"wheelDeltaX"in g?-g.wheelDeltaX:0},deltaY:function(g){return"deltaY"in g?g.deltaY:"wheelDeltaY"in g?-g.wheelDeltaY:"wheelDelta"in g?-g.wheelDelta:0},deltaZ:null,deltaMode:null}),Be=[["blur","blur",0],["cancel","cancel",0],["click","click",0],["close","close",0],["contextmenu","contextMenu",0],["copy","copy",0],["cut","cut",0],["auxclick","auxClick",0],["dblclick","doubleClick",0],["dragend","dragEnd",0],["dragstart","dragStart",0],["drop","drop",0],["focus","focus",0],["input","input",0],["invalid","invalid",0],["keydown","keyDown",0],["keypress","keyPress",0],["keyup","keyUp",0],["mousedown","mouseDown",0],["mouseup","mouseUp",0],["paste","paste",0],["pause","pause",0],["play","play",0],["pointercancel","pointerCancel",0],["pointerdown","pointerDown",0],["pointerup","pointerUp",0],["ratechange","rateChange",0],["reset","reset",0],["seeked","seeked",0],["submit","submit",0],["touchcancel","touchCancel",0],["touchend","touchEnd",0],["touchstart","touchStart",0],["volumechange","volumeChange",0],["drag","drag",1],["dragenter","dragEnter",1],["dragexit","dragExit",1],["dragleave","dragLeave",1],["dragover","dragOver",1],["mousemove","mouseMove",1],["mouseout","mouseOut",1],["mouseover","mouseOver",1],["pointermove","pointerMove",1],["pointerout","pointerOut",1],["pointerover","pointerOver",1],["scroll","scroll",1],["toggle","toggle",1],["touchmove","touchMove",1],["wheel","wheel",1],["abort","abort",2],[Pg,"animationEnd",2],[_g,"animationIteration",2],[qg,"animationStart",2],["canplay","canPlay",2],["canplaythrough","canPlayThrough",2],["durationchange","durationChange",2],["emptied","emptied",2],["encrypted","encrypted",2],["ended","ended",2],["error","error",2],["gotpointercapture","gotPointerCapture",2],["load","load",2],["loadeddata","loadedData",2],["loadedmetadata","loadedMetadata",2],["loadstart","loadStart",2],["lostpointercapture","lostPointerCapture",2],["playing","playing",2],["progress","progress",2],["seeking","seeking",2],["stalled","stalled",2],["suspend","suspend",2],["timeupdate","timeUpdate",2],[$g,"transitionEnd",2],["waiting","waiting",2]],ne={},Ue={},se=0;se<Be.length;se++){var ie=Be[se],ce=ie[0],Ae=ie[1],le=ie[2],ae="on"+(Ae[0].toUpperCase()+Ae.slice(1)),re={phasedRegistrationNames:{bubbled:ae,captured:ae+"Capture"},dependencies:[ce],eventPriority:le};ne[Ae]=re,Ue[ce]=re}var oe={eventTypes:ne,getEventPriority:function(g){return void 0!==(g=Ue[g])?g.eventPriority:2},extractEvents:function(g,I,e,t){var C=Ue[g];if(!C)return null;switch(g){case"keypress":if(0===wI(e))return null;case"keydown":case"keyup":g=PI;break;case"blur":case"focus":g=YI;break;case"click":if(2===e.button)return null;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":g=Ie;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":g=te;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":g=Ce;break;case Pg:case _g:case qg:g=kI;break;case $g:g=Qe;break;case"scroll":g=MI;break;case"wheel":g=Fe;break;case"copy":case"cut":case"paste":g=HI;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":g=ee;break;default:g=fI}return EI(I=g.getPooled(C,I,e,t)),I}},de=Q.unstable_UserBlockingPriority,ue=Q.unstable_runWithPriority,ye=oe.getEventPriority,be=[];function Ze(g){var I=g.targetInst,e=I;do{if(!e){g.ancestors.push(e);break}var t=e;if(3===t.tag)t=t.stateNode.containerInfo;else{for(;t.return;)t=t.return;t=3!==t.tag?null:t.stateNode.containerInfo}if(!t)break;5!==(I=e.tag)&&6!==I||g.ancestors.push(e),e=Bt(t)}while(e);for(e=0;e<g.ancestors.length;e++){I=g.ancestors[e];var C=GI(g.nativeEvent);t=g.topLevelType;for(var Q=g.nativeEvent,F=g.eventSystemFlags,B=null,n=0;n<i.length;n++){var U=i[n];U&&(U=U.extractEvents(t,I,Q,C,F))&&(B=S(B,U))}h(B)}}var me=!0;function xe(g,I){Re(I,g,!1)}function Re(g,I,e){switch(ye(I)){case 0:var t=Se.bind(null,I,1);break;case 1:t=Ge.bind(null,I,1);break;default:t=Ve.bind(null,I,1)}e?g.addEventListener(I,t,!0):g.addEventListener(I,t,!1)}function Se(g,I,e){sg||ng();var t=Ve,C=sg;sg=!0;try{Bg(t,g,I,e)}finally{(sg=C)||cg()}}function Ge(g,I,e){ue(de,Ve.bind(null,g,I,e))}function Le(g,I,e,t){if(be.length){var C=be.pop();C.topLevelType=g,C.eventSystemFlags=I,C.nativeEvent=e,C.targetInst=t,g=C}else g={topLevelType:g,eventSystemFlags:I,nativeEvent:e,targetInst:t,ancestors:[]};try{if(I=Ze,e=g,ig)I(e,void 0);else{ig=!0;try{Ug(I,e,void 0)}finally{ig=!1,cg()}}}finally{g.topLevelType=null,g.nativeEvent=null,g.targetInst=null,g.ancestors.length=0,be.length<10&&be.push(g)}}function Ve(g,I,e){if(me)if(0<UI.length&&-1<rI.indexOf(g))g=dI(null,g,I,e),UI.push(g);else{var t=he(g,I,e);null===t?uI(g,e):-1<rI.indexOf(g)?(g=dI(t,g,I,e),UI.push(g)):function(g,I,e,t){switch(I){case"focus":return sI=yI(sI,g,I,e,t),!0;case"dragenter":return iI=yI(iI,g,I,e,t),!0;case"mouseover":return cI=yI(cI,g,I,e,t),!0;case"pointerover":var C=t.pointerId;return AI.set(C,yI(AI.get(C)||null,g,I,e,t)),!0;case"gotpointercapture":return C=t.pointerId,lI.set(C,yI(lI.get(C)||null,g,I,e,t)),!0}return!1}(t,g,I,e)||(uI(g,e),Le(g,I,e,null))}}function he(g,I,e){var t=GI(e);if(null!==(t=Bt(t))){var C=II(t);if(null===C)t=null;else{var Q=C.tag;if(13===Q){if(null!==(t=eI(C)))return t;t=null}else if(3===Q){if(C.stateNode.hydrate)return 3===C.tag?C.stateNode.containerInfo:null;t=null}else C!==t&&(t=null)}}return Le(g,I,e,t),null}function De(g){if(!$)return!1;var I=(g="on"+g)in document;return I||((I=document.createElement("div")).setAttribute(g,"return;"),I="function"===typeof I[g]),I}var pe=new("function"===typeof WeakMap?WeakMap:Map);function Ee(g){var I=pe.get(g);return void 0===I&&(I=new Set,pe.set(g,I)),I}function Ne(g,I,e){if(!e.has(g)){switch(g){case"scroll":Re(I,"scroll",!0);break;case"focus":case"blur":Re(I,"focus",!0),Re(I,"blur",!0),e.add("blur"),e.add("focus");break;case"cancel":case"close":De(g)&&Re(I,g,!0);break;case"invalid":case"submit":case"reset":break;default:-1===gI.indexOf(g)&&xe(g,I)}e.add(g)}}var We={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},fe=["Webkit","ms","Moz","O"];function Xe(g,I,e){return null==I||"boolean"===typeof I||""===I?"":e||"number"!==typeof I||0===I||We.hasOwnProperty(g)&&We[g]?(""+I).trim():I+"px"}function Je(g,I){for(var e in g=g.style,I)if(I.hasOwnProperty(e)){var t=0===e.indexOf("--"),C=Xe(e,I[e],t);"float"===e&&(e="cssFloat"),t?g.setProperty(e,C):g[e]=C}}Object.keys(We).forEach((function(g){fe.forEach((function(I){I=I+g.charAt(0).toUpperCase()+g.substring(1),We[I]=We[g]}))}));var ve=C({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function ke(g,I){if(I){if(ve[g]&&(null!=I.children||null!=I.dangerouslySetInnerHTML))throw Error(F(137,g,""));if(null!=I.dangerouslySetInnerHTML){if(null!=I.children)throw Error(F(60));if("object"!==typeof I.dangerouslySetInnerHTML||!("__html"in I.dangerouslySetInnerHTML))throw Error(F(61))}if(null!=I.style&&"object"!==typeof I.style)throw Error(F(62,""))}}function He(g,I){if(-1===g.indexOf("-"))return"string"===typeof I.is;switch(g){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function Me(g,I){var e=Ee(g=9===g.nodeType||11===g.nodeType?g:g.ownerDocument);I=l[I];for(var t=0;t<I.length;t++)Ne(I[t],g,e)}function Ye(){}function we(g){if("undefined"===typeof(g=g||("undefined"!==typeof document?document:void 0)))return null;try{return g.activeElement||g.body}catch(I){return g.body}}function Te(g){for(;g&&g.firstChild;)g=g.firstChild;return g}function ze(g,I){var e,t=Te(g);for(g=0;t;){if(3===t.nodeType){if(e=g+t.textContent.length,g<=I&&e>=I)return{node:t,offset:I-g};g=e}g:{for(;t;){if(t.nextSibling){t=t.nextSibling;break g}t=t.parentNode}t=void 0}t=Te(t)}}function Oe(){for(var g=window,I=we();I instanceof g.HTMLIFrameElement;){try{var e="string"===typeof I.contentWindow.location.href}catch(t){e=!1}if(!e)break;I=we((g=I.contentWindow).document)}return I}function Ke(g){var I=g&&g.nodeName&&g.nodeName.toLowerCase();return I&&("input"===I&&("text"===g.type||"search"===g.type||"tel"===g.type||"url"===g.type||"password"===g.type)||"textarea"===I||"true"===g.contentEditable)}var je=null,Pe=null;function _e(g,I){switch(g){case"button":case"input":case"select":case"textarea":return!!I.autoFocus}return!1}function qe(g,I){return"textarea"===g||"option"===g||"noscript"===g||"string"===typeof I.children||"number"===typeof I.children||"object"===typeof I.dangerouslySetInnerHTML&&null!==I.dangerouslySetInnerHTML&&null!=I.dangerouslySetInnerHTML.__html}var $e="function"===typeof setTimeout?setTimeout:void 0,gt="function"===typeof clearTimeout?clearTimeout:void 0;function It(g){for(;null!=g;g=g.nextSibling){var I=g.nodeType;if(1===I||3===I)break}return g}function et(g){g=g.previousSibling;for(var I=0;g;){if(8===g.nodeType){var e=g.data;if("$"===e||"$!"===e||"$?"===e){if(0===I)return g;I--}else"/$"===e&&I++}g=g.previousSibling}return null}var tt=Math.random().toString(36).slice(2),Ct="__reactInternalInstance$"+tt,Qt="__reactEventHandlers$"+tt,Ft="__reactContainere$"+tt;function Bt(g){var I=g[Ct];if(I)return I;for(var e=g.parentNode;e;){if(I=e[Ft]||e[Ct]){if(e=I.alternate,null!==I.child||null!==e&&null!==e.child)for(g=et(g);null!==g;){if(e=g[Ct])return e;g=et(g)}return I}e=(g=e).parentNode}return null}function nt(g){return!(g=g[Ct]||g[Ft])||5!==g.tag&&6!==g.tag&&13!==g.tag&&3!==g.tag?null:g}function Ut(g){if(5===g.tag||6===g.tag)return g.stateNode;throw Error(F(33))}function st(g){return g[Qt]||null}var it=null,ct=null,At=null;function lt(){if(At)return At;var g,I,e=ct,t=e.length,C="value"in it?it.value:it.textContent,Q=C.length;for(g=0;g<t&&e[g]===C[g];g++);var F=t-g;for(I=1;I<=F&&e[t-I]===C[Q-I];I++);return At=C.slice(g,1<I?1-I:void 0)}var at=fI.extend({data:null}),rt=fI.extend({data:null}),ot=[9,13,27,32],dt=$&&"CompositionEvent"in window,ut=null;$&&"documentMode"in document&&(ut=document.documentMode);var yt=$&&"TextEvent"in window&&!ut,bt=$&&(!dt||ut&&8<ut&&11>=ut),Zt=String.fromCharCode(32),mt={beforeInput:{phasedRegistrationNames:{bubbled:"onBeforeInput",captured:"onBeforeInputCapture"},dependencies:["compositionend","keypress","textInput","paste"]},compositionEnd:{phasedRegistrationNames:{bubbled:"onCompositionEnd",captured:"onCompositionEndCapture"},dependencies:"blur compositionend keydown keypress keyup mousedown".split(" ")},compositionStart:{phasedRegistrationNames:{bubbled:"onCompositionStart",captured:"onCompositionStartCapture"},dependencies:"blur compositionstart keydown keypress keyup mousedown".split(" ")},compositionUpdate:{phasedRegistrationNames:{bubbled:"onCompositionUpdate",captured:"onCompositionUpdateCapture"},dependencies:"blur compositionupdate keydown keypress keyup mousedown".split(" ")}},xt=!1;function Rt(g,I){switch(g){case"keyup":return-1!==ot.indexOf(I.keyCode);case"keydown":return 229!==I.keyCode;case"keypress":case"mousedown":case"blur":return!0;default:return!1}}function St(g){return"object"===typeof(g=g.detail)&&"data"in g?g.data:null}var Gt=!1;var Lt={eventTypes:mt,extractEvents:function(g,I,e,t){var C;if(dt)g:{switch(g){case"compositionstart":var Q=mt.compositionStart;break g;case"compositionend":Q=mt.compositionEnd;break g;case"compositionupdate":Q=mt.compositionUpdate;break g}Q=void 0}else Gt?Rt(g,e)&&(Q=mt.compositionEnd):"keydown"===g&&229===e.keyCode&&(Q=mt.compositionStart);return Q?(bt&&"ko"!==e.locale&&(Gt||Q!==mt.compositionStart?Q===mt.compositionEnd&&Gt&&(C=lt()):(ct="value"in(it=t)?it.value:it.textContent,Gt=!0)),Q=at.getPooled(Q,I,e,t),C?Q.data=C:null!==(C=St(e))&&(Q.data=C),EI(Q),C=Q):C=null,(g=yt?function(g,I){switch(g){case"compositionend":return St(I);case"keypress":return 32!==I.which?null:(xt=!0,Zt);case"textInput":return(g=I.data)===Zt&&xt?null:g;default:return null}}(g,e):function(g,I){if(Gt)return"compositionend"===g||!dt&&Rt(g,I)?(g=lt(),At=ct=it=null,Gt=!1,g):null;switch(g){case"paste":return null;case"keypress":if(!(I.ctrlKey||I.altKey||I.metaKey)||I.ctrlKey&&I.altKey){if(I.char&&1<I.char.length)return I.char;if(I.which)return String.fromCharCode(I.which)}return null;case"compositionend":return bt&&"ko"!==I.locale?null:I.data;default:return null}}(g,e))?((I=rt.getPooled(mt.beforeInput,I,e,t)).data=g,EI(I)):I=null,null===C?I:null===I?C:[C,I]}},Vt={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function ht(g){var I=g&&g.nodeName&&g.nodeName.toLowerCase();return"input"===I?!!Vt[g.type]:"textarea"===I}var Dt={change:{phasedRegistrationNames:{bubbled:"onChange",captured:"onChangeCapture"},dependencies:"blur change click focus input keydown keyup selectionchange".split(" ")}};function pt(g,I,e){return(g=fI.getPooled(Dt.change,g,I,e)).type="change",Cg(e),EI(g),g}var Et=null,Nt=null;function Wt(g){h(g)}function ft(g){if(Rg(Ut(g)))return g}function Xt(g,I){if("change"===g)return I}var Jt=!1;function vt(){Et&&(Et.detachEvent("onpropertychange",kt),Nt=Et=null)}function kt(g){if("value"===g.propertyName&&ft(Nt))if(g=pt(Nt,g,GI(g)),sg)h(g);else{sg=!0;try{Fg(Wt,g)}finally{sg=!1,cg()}}}function Ht(g,I,e){"focus"===g?(vt(),Nt=e,(Et=I).attachEvent("onpropertychange",kt)):"blur"===g&&vt()}function Mt(g){if("selectionchange"===g||"keyup"===g||"keydown"===g)return ft(Nt)}function Yt(g,I){if("click"===g)return ft(I)}function wt(g,I){if("input"===g||"change"===g)return ft(I)}$&&(Jt=De("input")&&(!document.documentMode||9<document.documentMode));var Tt,zt={eventTypes:Dt,_isInputEventSupported:Jt,extractEvents:function(g,I,e,t){var C=I?Ut(I):window,Q=C.nodeName&&C.nodeName.toLowerCase();if("select"===Q||"input"===Q&&"file"===C.type)var F=Xt;else if(ht(C))if(Jt)F=wt;else{F=Mt;var B=Ht}else(Q=C.nodeName)&&"input"===Q.toLowerCase()&&("checkbox"===C.type||"radio"===C.type)&&(F=Yt);if(F&&(F=F(g,I)))return pt(F,e,t);B&&B(g,C,I),"blur"===g&&(g=C._wrapperState)&&g.controlled&&"number"===C.type&&Dg(C,"number",C.value)}},Ot={mouseEnter:{registrationName:"onMouseEnter",dependencies:["mouseout","mouseover"]},mouseLeave:{registrationName:"onMouseLeave",dependencies:["mouseout","mouseover"]},pointerEnter:{registrationName:"onPointerEnter",dependencies:["pointerout","pointerover"]},pointerLeave:{registrationName:"onPointerLeave",dependencies:["pointerout","pointerover"]}},Kt={eventTypes:Ot,extractEvents:function(g,I,e,t,C){var Q="mouseover"===g||"pointerover"===g,F="mouseout"===g||"pointerout"===g;if(Q&&0===(32&C)&&(e.relatedTarget||e.fromElement)||!F&&!Q)return null;if(C=t.window===t?t:(C=t.ownerDocument)?C.defaultView||C.parentWindow:window,F?(F=I,null!==(I=(I=e.relatedTarget||e.toElement)?Bt(I):null)&&(I!==(Q=II(I))||5!==I.tag&&6!==I.tag)&&(I=null)):F=null,F===I)return null;if("mouseout"===g||"mouseover"===g)var B=Ie,n=Ot.mouseLeave,U=Ot.mouseEnter,s="mouse";else"pointerout"!==g&&"pointerover"!==g||(B=ee,n=Ot.pointerLeave,U=Ot.pointerEnter,s="pointer");if(g=null==F?C:Ut(F),C=null==I?C:Ut(I),(n=B.getPooled(n,F,e,t)).type=s+"leave",n.target=g,n.relatedTarget=C,(t=B.getPooled(U,I,e,t)).type=s+"enter",t.target=C,t.relatedTarget=g,s=I,(B=F)&&s)g:{for(g=s,F=0,I=U=B;I;I=LI(I))F++;for(I=0,C=g;C;C=LI(C))I++;for(;0<F-I;)U=LI(U),F--;for(;0<I-F;)g=LI(g),I--;for(;F--;){if(U===g||U===g.alternate)break g;U=LI(U),g=LI(g)}U=null}else U=null;for(g=U,U=[];B&&B!==g&&(null===(F=B.alternate)||F!==g);)U.push(B),B=LI(B);for(B=[];s&&s!==g&&(null===(F=s.alternate)||F!==g);)B.push(s),s=LI(s);for(s=0;s<U.length;s++)DI(U[s],"bubbled",n);for(s=B.length;0<s--;)DI(B[s],"captured",t);return e===Tt?(Tt=null,[n]):(Tt=e,[n,t])}};var jt="function"===typeof Object.is?Object.is:function(g,I){return g===I&&(0!==g||1/g===1/I)||g!==g&&I!==I},Pt=Object.prototype.hasOwnProperty;function _t(g,I){if(jt(g,I))return!0;if("object"!==typeof g||null===g||"object"!==typeof I||null===I)return!1;var e=Object.keys(g),t=Object.keys(I);if(e.length!==t.length)return!1;for(t=0;t<e.length;t++)if(!Pt.call(I,e[t])||!jt(g[e[t]],I[e[t]]))return!1;return!0}var qt=$&&"documentMode"in document&&11>=document.documentMode,$t={select:{phasedRegistrationNames:{bubbled:"onSelect",captured:"onSelectCapture"},dependencies:"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange".split(" ")}},gC=null,IC=null,eC=null,tC=!1;function CC(g,I){var e=I.window===I?I.document:9===I.nodeType?I:I.ownerDocument;return tC||null==gC||gC!==we(e)?null:("selectionStart"in(e=gC)&&Ke(e)?e={start:e.selectionStart,end:e.selectionEnd}:e={anchorNode:(e=(e.ownerDocument&&e.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:e.anchorOffset,focusNode:e.focusNode,focusOffset:e.focusOffset},eC&&_t(eC,e)?null:(eC=e,(g=fI.getPooled($t.select,IC,g,I)).type="select",g.target=gC,EI(g),g))}var QC={eventTypes:$t,extractEvents:function(g,I,e,t){var C,Q=t.window===t?t.document:9===t.nodeType?t:t.ownerDocument;if(!(C=!Q)){g:{Q=Ee(Q),C=l.onSelect;for(var F=0;F<C.length;F++)if(!Q.has(C[F])){Q=!1;break g}Q=!0}C=!Q}if(C)return null;switch(Q=I?Ut(I):window,g){case"focus":(ht(Q)||"true"===Q.contentEditable)&&(gC=Q,IC=I,eC=null);break;case"blur":eC=IC=gC=null;break;case"mousedown":tC=!0;break;case"contextmenu":case"mouseup":case"dragend":return tC=!1,CC(e,t);case"selectionchange":if(qt)break;case"keydown":case"keyup":return CC(e,t)}return null}};D.injectEventPluginOrder("ResponderEventPlugin SimpleEventPlugin EnterLeaveEventPlugin ChangeEventPlugin SelectEventPlugin BeforeInputEventPlugin".split(" ")),Z=st,m=nt,x=Ut,D.injectEventPluginsByName({SimpleEventPlugin:oe,EnterLeaveEventPlugin:Kt,ChangeEventPlugin:zt,SelectEventPlugin:QC,BeforeInputEventPlugin:Lt}),new Set;var FC=[],BC=-1;function nC(g){0>BC||(g.current=FC[BC],FC[BC]=null,BC--)}function UC(g,I){BC++,FC[BC]=g.current,g.current=I}var sC={},iC={current:sC},cC={current:!1},AC=sC;function lC(g,I){var e=g.type.contextTypes;if(!e)return sC;var t=g.stateNode;if(t&&t.__reactInternalMemoizedUnmaskedChildContext===I)return t.__reactInternalMemoizedMaskedChildContext;var C,Q={};for(C in e)Q[C]=I[C];return t&&((g=g.stateNode).__reactInternalMemoizedUnmaskedChildContext=I,g.__reactInternalMemoizedMaskedChildContext=Q),Q}function aC(g){return null!==(g=g.childContextTypes)&&void 0!==g}function rC(g){nC(cC),nC(iC)}function oC(g){nC(cC),nC(iC)}function dC(g,I,e){if(iC.current!==sC)throw Error(F(168));UC(iC,I),UC(cC,e)}function uC(g,I,e){var t=g.stateNode;if(g=I.childContextTypes,"function"!==typeof t.getChildContext)return e;for(var Q in t=t.getChildContext())if(!(Q in g))throw Error(F(108,_(I)||"Unknown",Q));return C({},e,{},t)}function yC(g){var I=g.stateNode;return I=I&&I.__reactInternalMemoizedMergedChildContext||sC,AC=iC.current,UC(iC,I),UC(cC,cC.current),!0}function bC(g,I,e){var t=g.stateNode;if(!t)throw Error(F(169));e?(I=uC(g,I,AC),t.__reactInternalMemoizedMergedChildContext=I,nC(cC),nC(iC),UC(iC,I)):nC(cC),UC(cC,e)}var ZC=Q.unstable_runWithPriority,mC=Q.unstable_scheduleCallback,xC=Q.unstable_cancelCallback,RC=Q.unstable_shouldYield,SC=Q.unstable_requestPaint,GC=Q.unstable_now,LC=Q.unstable_getCurrentPriorityLevel,VC=Q.unstable_ImmediatePriority,hC=Q.unstable_UserBlockingPriority,DC=Q.unstable_NormalPriority,pC=Q.unstable_LowPriority,EC=Q.unstable_IdlePriority,NC={},WC=void 0!==SC?SC:function(){},fC=null,XC=null,JC=!1,vC=GC(),kC=1e4>vC?GC:function(){return GC()-vC};function HC(){switch(LC()){case VC:return 99;case hC:return 98;case DC:return 97;case pC:return 96;case EC:return 95;default:throw Error(F(332))}}function MC(g){switch(g){case 99:return VC;case 98:return hC;case 97:return DC;case 96:return pC;case 95:return EC;default:throw Error(F(332))}}function YC(g,I){return g=MC(g),ZC(g,I)}function wC(g,I,e){return g=MC(g),mC(g,I,e)}function TC(g){return null===fC?(fC=[g],XC=mC(VC,OC)):fC.push(g),NC}function zC(){if(null!==XC){var g=XC;XC=null,xC(g)}OC()}function OC(){if(!JC&&null!==fC){JC=!0;var g=0;try{var I=fC;YC(99,(function(){for(;g<I.length;g++){var e=I[g];do{e=e(!0)}while(null!==e)}})),fC=null}catch(e){throw null!==fC&&(fC=fC.slice(g+1)),mC(VC,zC),e}finally{JC=!1}}}var KC=3;function jC(g,I,e){return 1073741821-(1+((1073741821-g+I/10)/(e/=10)|0))*e}function PC(g,I){if(g&&g.defaultProps)for(var e in I=C({},I),g=g.defaultProps)void 0===I[e]&&(I[e]=g[e]);return I}var _C={current:null},qC=null,$C=null,gQ=null;function IQ(){gQ=$C=qC=null}function eQ(g,I){var e=g.type._context;UC(_C,e._currentValue),e._currentValue=I}function tQ(g){var I=_C.current;nC(_C),g.type._context._currentValue=I}function CQ(g,I){for(;null!==g;){var e=g.alternate;if(g.childExpirationTime<I)g.childExpirationTime=I,null!==e&&e.childExpirationTime<I&&(e.childExpirationTime=I);else{if(!(null!==e&&e.childExpirationTime<I))break;e.childExpirationTime=I}g=g.return}}function QQ(g,I){qC=g,gQ=$C=null,null!==(g=g.dependencies)&&null!==g.firstContext&&(g.expirationTime>=I&&(vF=!0),g.firstContext=null)}function FQ(g,I){if(gQ!==g&&!1!==I&&0!==I)if("number"===typeof I&&1073741823!==I||(gQ=g,I=1073741823),I={context:g,observedBits:I,next:null},null===$C){if(null===qC)throw Error(F(308));$C=I,qC.dependencies={expirationTime:0,firstContext:I,responders:null}}else $C=$C.next=I;return g._currentValue}var BQ=!1;function nQ(g){return{baseState:g,firstUpdate:null,lastUpdate:null,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function UQ(g){return{baseState:g.baseState,firstUpdate:g.firstUpdate,lastUpdate:g.lastUpdate,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function sQ(g,I){return{expirationTime:g,suspenseConfig:I,tag:0,payload:null,callback:null,next:null,nextEffect:null}}function iQ(g,I){null===g.lastUpdate?g.firstUpdate=g.lastUpdate=I:(g.lastUpdate.next=I,g.lastUpdate=I)}function cQ(g,I){var e=g.alternate;if(null===e){var t=g.updateQueue,C=null;null===t&&(t=g.updateQueue=nQ(g.memoizedState))}else t=g.updateQueue,C=e.updateQueue,null===t?null===C?(t=g.updateQueue=nQ(g.memoizedState),C=e.updateQueue=nQ(e.memoizedState)):t=g.updateQueue=UQ(C):null===C&&(C=e.updateQueue=UQ(t));null===C||t===C?iQ(t,I):null===t.lastUpdate||null===C.lastUpdate?(iQ(t,I),iQ(C,I)):(iQ(t,I),C.lastUpdate=I)}function AQ(g,I){var e=g.updateQueue;null===(e=null===e?g.updateQueue=nQ(g.memoizedState):lQ(g,e)).lastCapturedUpdate?e.firstCapturedUpdate=e.lastCapturedUpdate=I:(e.lastCapturedUpdate.next=I,e.lastCapturedUpdate=I)}function lQ(g,I){var e=g.alternate;return null!==e&&I===e.updateQueue&&(I=g.updateQueue=UQ(I)),I}function aQ(g,I,e,t,Q,F){switch(e.tag){case 1:return"function"===typeof(g=e.payload)?g.call(F,t,Q):g;case 3:g.effectTag=-4097&g.effectTag|64;case 0:if(null===(Q="function"===typeof(g=e.payload)?g.call(F,t,Q):g)||void 0===Q)break;return C({},t,Q);case 2:BQ=!0}return t}function rQ(g,I,e,t,C){BQ=!1;for(var Q=(I=lQ(g,I)).baseState,F=null,B=0,n=I.firstUpdate,U=Q;null!==n;){var s=n.expirationTime;s<C?(null===F&&(F=n,Q=U),B<s&&(B=s)):(Un(s,n.suspenseConfig),U=aQ(g,0,n,U,e,t),null!==n.callback&&(g.effectTag|=32,n.nextEffect=null,null===I.lastEffect?I.firstEffect=I.lastEffect=n:(I.lastEffect.nextEffect=n,I.lastEffect=n))),n=n.next}for(s=null,n=I.firstCapturedUpdate;null!==n;){var i=n.expirationTime;i<C?(null===s&&(s=n,null===F&&(Q=U)),B<i&&(B=i)):(U=aQ(g,0,n,U,e,t),null!==n.callback&&(g.effectTag|=32,n.nextEffect=null,null===I.lastCapturedEffect?I.firstCapturedEffect=I.lastCapturedEffect=n:(I.lastCapturedEffect.nextEffect=n,I.lastCapturedEffect=n))),n=n.next}null===F&&(I.lastUpdate=null),null===s?I.lastCapturedUpdate=null:g.effectTag|=32,null===F&&null===s&&(Q=U),I.baseState=Q,I.firstUpdate=F,I.firstCapturedUpdate=s,sn(B),g.expirationTime=B,g.memoizedState=U}function oQ(g,I,e){null!==I.firstCapturedUpdate&&(null!==I.lastUpdate&&(I.lastUpdate.next=I.firstCapturedUpdate,I.lastUpdate=I.lastCapturedUpdate),I.firstCapturedUpdate=I.lastCapturedUpdate=null),dQ(I.firstEffect,e),I.firstEffect=I.lastEffect=null,dQ(I.firstCapturedEffect,e),I.firstCapturedEffect=I.lastCapturedEffect=null}function dQ(g,I){for(;null!==g;){var e=g.callback;if(null!==e){g.callback=null;var t=I;if("function"!==typeof e)throw Error(F(191,e));e.call(t)}g=g.nextEffect}}var uQ=E.ReactCurrentBatchConfig,yQ=(new t.Component).refs;function bQ(g,I,e,t){e=null===(e=e(t,I=g.memoizedState))||void 0===e?I:C({},I,e),g.memoizedState=e,null!==(t=g.updateQueue)&&0===g.expirationTime&&(t.baseState=e)}var ZQ={isMounted:function(g){return!!(g=g._reactInternalFiber)&&II(g)===g},enqueueSetState:function(g,I,e){g=g._reactInternalFiber;var t=PB(),C=uQ.suspense;(C=sQ(t=_B(t,g,C),C)).payload=I,void 0!==e&&null!==e&&(C.callback=e),cQ(g,C),qB(g,t)},enqueueReplaceState:function(g,I,e){g=g._reactInternalFiber;var t=PB(),C=uQ.suspense;(C=sQ(t=_B(t,g,C),C)).tag=1,C.payload=I,void 0!==e&&null!==e&&(C.callback=e),cQ(g,C),qB(g,t)},enqueueForceUpdate:function(g,I){g=g._reactInternalFiber;var e=PB(),t=uQ.suspense;(t=sQ(e=_B(e,g,t),t)).tag=2,void 0!==I&&null!==I&&(t.callback=I),cQ(g,t),qB(g,e)}};function mQ(g,I,e,t,C,Q,F){return"function"===typeof(g=g.stateNode).shouldComponentUpdate?g.shouldComponentUpdate(t,Q,F):!I.prototype||!I.prototype.isPureReactComponent||(!_t(e,t)||!_t(C,Q))}function xQ(g,I,e){var t=!1,C=sC,Q=I.contextType;return"object"===typeof Q&&null!==Q?Q=FQ(Q):(C=aC(I)?AC:iC.current,Q=(t=null!==(t=I.contextTypes)&&void 0!==t)?lC(g,C):sC),I=new I(e,Q),g.memoizedState=null!==I.state&&void 0!==I.state?I.state:null,I.updater=ZQ,g.stateNode=I,I._reactInternalFiber=g,t&&((g=g.stateNode).__reactInternalMemoizedUnmaskedChildContext=C,g.__reactInternalMemoizedMaskedChildContext=Q),I}function RQ(g,I,e,t){g=I.state,"function"===typeof I.componentWillReceiveProps&&I.componentWillReceiveProps(e,t),"function"===typeof I.UNSAFE_componentWillReceiveProps&&I.UNSAFE_componentWillReceiveProps(e,t),I.state!==g&&ZQ.enqueueReplaceState(I,I.state,null)}function SQ(g,I,e,t){var C=g.stateNode;C.props=e,C.state=g.memoizedState,C.refs=yQ;var Q=I.contextType;"object"===typeof Q&&null!==Q?C.context=FQ(Q):(Q=aC(I)?AC:iC.current,C.context=lC(g,Q)),null!==(Q=g.updateQueue)&&(rQ(g,Q,e,C,t),C.state=g.memoizedState),"function"===typeof(Q=I.getDerivedStateFromProps)&&(bQ(g,I,Q,e),C.state=g.memoizedState),"function"===typeof I.getDerivedStateFromProps||"function"===typeof C.getSnapshotBeforeUpdate||"function"!==typeof C.UNSAFE_componentWillMount&&"function"!==typeof C.componentWillMount||(I=C.state,"function"===typeof C.componentWillMount&&C.componentWillMount(),"function"===typeof C.UNSAFE_componentWillMount&&C.UNSAFE_componentWillMount(),I!==C.state&&ZQ.enqueueReplaceState(C,C.state,null),null!==(Q=g.updateQueue)&&(rQ(g,Q,e,C,t),C.state=g.memoizedState)),"function"===typeof C.componentDidMount&&(g.effectTag|=4)}var GQ=Array.isArray;function LQ(g,I,e){if(null!==(g=e.ref)&&"function"!==typeof g&&"object"!==typeof g){if(e._owner){if(e=e._owner){if(1!==e.tag)throw Error(F(309));var t=e.stateNode}if(!t)throw Error(F(147,g));var C=""+g;return null!==I&&null!==I.ref&&"function"===typeof I.ref&&I.ref._stringRef===C?I.ref:((I=function(g){var I=t.refs;I===yQ&&(I=t.refs={}),null===g?delete I[C]:I[C]=g})._stringRef=C,I)}if("string"!==typeof g)throw Error(F(284));if(!e._owner)throw Error(F(290,g))}return g}function VQ(g,I){if("textarea"!==g.type)throw Error(F(31,"[object Object]"===Object.prototype.toString.call(I)?"object with keys {"+Object.keys(I).join(", ")+"}":I,""))}function hQ(g){function I(I,e){if(g){var t=I.lastEffect;null!==t?(t.nextEffect=e,I.lastEffect=e):I.firstEffect=I.lastEffect=e,e.nextEffect=null,e.effectTag=8}}function e(e,t){if(!g)return null;for(;null!==t;)I(e,t),t=t.sibling;return null}function t(g,I){for(g=new Map;null!==I;)null!==I.key?g.set(I.key,I):g.set(I.index,I),I=I.sibling;return g}function C(g,I,e){return(g=Dn(g,I)).index=0,g.sibling=null,g}function Q(I,e,t){return I.index=t,g?null!==(t=I.alternate)?(t=t.index)<e?(I.effectTag=2,e):t:(I.effectTag=2,e):e}function B(I){return g&&null===I.alternate&&(I.effectTag=2),I}function n(g,I,e,t){return null===I||6!==I.tag?((I=Nn(e,g.mode,t)).return=g,I):((I=C(I,e)).return=g,I)}function U(g,I,e,t){return null!==I&&I.elementType===e.type?((t=C(I,e.props)).ref=LQ(g,I,e),t.return=g,t):((t=pn(e.type,e.key,e.props,null,g.mode,t)).ref=LQ(g,I,e),t.return=g,t)}function s(g,I,e,t){return null===I||4!==I.tag||I.stateNode.containerInfo!==e.containerInfo||I.stateNode.implementation!==e.implementation?((I=Wn(e,g.mode,t)).return=g,I):((I=C(I,e.children||[])).return=g,I)}function i(g,I,e,t,Q){return null===I||7!==I.tag?((I=En(e,g.mode,t,Q)).return=g,I):((I=C(I,e)).return=g,I)}function c(g,I,e){if("string"===typeof I||"number"===typeof I)return(I=Nn(""+I,g.mode,e)).return=g,I;if("object"===typeof I&&null!==I){switch(I.$$typeof){case f:return(e=pn(I.type,I.key,I.props,null,g.mode,e)).ref=LQ(g,null,I),e.return=g,e;case X:return(I=Wn(I,g.mode,e)).return=g,I}if(GQ(I)||P(I))return(I=En(I,g.mode,e,null)).return=g,I;VQ(g,I)}return null}function A(g,I,e,t){var C=null!==I?I.key:null;if("string"===typeof e||"number"===typeof e)return null!==C?null:n(g,I,""+e,t);if("object"===typeof e&&null!==e){switch(e.$$typeof){case f:return e.key===C?e.type===J?i(g,I,e.props.children,t,C):U(g,I,e,t):null;case X:return e.key===C?s(g,I,e,t):null}if(GQ(e)||P(e))return null!==C?null:i(g,I,e,t,null);VQ(g,e)}return null}function l(g,I,e,t,C){if("string"===typeof t||"number"===typeof t)return n(I,g=g.get(e)||null,""+t,C);if("object"===typeof t&&null!==t){switch(t.$$typeof){case f:return g=g.get(null===t.key?e:t.key)||null,t.type===J?i(I,g,t.props.children,C,t.key):U(I,g,t,C);case X:return s(I,g=g.get(null===t.key?e:t.key)||null,t,C)}if(GQ(t)||P(t))return i(I,g=g.get(e)||null,t,C,null);VQ(I,t)}return null}function a(C,F,B,n){for(var U=null,s=null,i=F,a=F=0,r=null;null!==i&&a<B.length;a++){i.index>a?(r=i,i=null):r=i.sibling;var o=A(C,i,B[a],n);if(null===o){null===i&&(i=r);break}g&&i&&null===o.alternate&&I(C,i),F=Q(o,F,a),null===s?U=o:s.sibling=o,s=o,i=r}if(a===B.length)return e(C,i),U;if(null===i){for(;a<B.length;a++)null!==(i=c(C,B[a],n))&&(F=Q(i,F,a),null===s?U=i:s.sibling=i,s=i);return U}for(i=t(C,i);a<B.length;a++)null!==(r=l(i,C,a,B[a],n))&&(g&&null!==r.alternate&&i.delete(null===r.key?a:r.key),F=Q(r,F,a),null===s?U=r:s.sibling=r,s=r);return g&&i.forEach((function(g){return I(C,g)})),U}function r(C,B,n,U){var s=P(n);if("function"!==typeof s)throw Error(F(150));if(null==(n=s.call(n)))throw Error(F(151));for(var i=s=null,a=B,r=B=0,o=null,d=n.next();null!==a&&!d.done;r++,d=n.next()){a.index>r?(o=a,a=null):o=a.sibling;var u=A(C,a,d.value,U);if(null===u){null===a&&(a=o);break}g&&a&&null===u.alternate&&I(C,a),B=Q(u,B,r),null===i?s=u:i.sibling=u,i=u,a=o}if(d.done)return e(C,a),s;if(null===a){for(;!d.done;r++,d=n.next())null!==(d=c(C,d.value,U))&&(B=Q(d,B,r),null===i?s=d:i.sibling=d,i=d);return s}for(a=t(C,a);!d.done;r++,d=n.next())null!==(d=l(a,C,r,d.value,U))&&(g&&null!==d.alternate&&a.delete(null===d.key?r:d.key),B=Q(d,B,r),null===i?s=d:i.sibling=d,i=d);return g&&a.forEach((function(g){return I(C,g)})),s}return function(g,t,Q,n){var U="object"===typeof Q&&null!==Q&&Q.type===J&&null===Q.key;U&&(Q=Q.props.children);var s="object"===typeof Q&&null!==Q;if(s)switch(Q.$$typeof){case f:g:{for(s=Q.key,U=t;null!==U;){if(U.key===s){if(7===U.tag?Q.type===J:U.elementType===Q.type){e(g,U.sibling),(t=C(U,Q.type===J?Q.props.children:Q.props)).ref=LQ(g,U,Q),t.return=g,g=t;break g}e(g,U);break}I(g,U),U=U.sibling}Q.type===J?((t=En(Q.props.children,g.mode,n,Q.key)).return=g,g=t):((n=pn(Q.type,Q.key,Q.props,null,g.mode,n)).ref=LQ(g,t,Q),n.return=g,g=n)}return B(g);case X:g:{for(U=Q.key;null!==t;){if(t.key===U){if(4===t.tag&&t.stateNode.containerInfo===Q.containerInfo&&t.stateNode.implementation===Q.implementation){e(g,t.sibling),(t=C(t,Q.children||[])).return=g,g=t;break g}e(g,t);break}I(g,t),t=t.sibling}(t=Wn(Q,g.mode,n)).return=g,g=t}return B(g)}if("string"===typeof Q||"number"===typeof Q)return Q=""+Q,null!==t&&6===t.tag?(e(g,t.sibling),(t=C(t,Q)).return=g,g=t):(e(g,t),(t=Nn(Q,g.mode,n)).return=g,g=t),B(g);if(GQ(Q))return a(g,t,Q,n);if(P(Q))return r(g,t,Q,n);if(s&&VQ(g,Q),"undefined"===typeof Q&&!U)switch(g.tag){case 1:case 0:throw g=g.type,Error(F(152,g.displayName||g.name||"Component"))}return e(g,t)}}var DQ=hQ(!0),pQ=hQ(!1),EQ={},NQ={current:EQ},WQ={current:EQ},fQ={current:EQ};function XQ(g){if(g===EQ)throw Error(F(174));return g}function JQ(g,I){UC(fQ,I),UC(WQ,g),UC(NQ,EQ);var e=I.nodeType;switch(e){case 9:case 11:I=(I=I.documentElement)?I.namespaceURI:Hg(null,"");break;default:I=Hg(I=(e=8===e?I.parentNode:I).namespaceURI||null,e=e.tagName)}nC(NQ),UC(NQ,I)}function vQ(g){nC(NQ),nC(WQ),nC(fQ)}function kQ(g){XQ(fQ.current);var I=XQ(NQ.current),e=Hg(I,g.type);I!==e&&(UC(WQ,g),UC(NQ,e))}function HQ(g){WQ.current===g&&(nC(NQ),nC(WQ))}var MQ={current:0};function YQ(g){for(var I=g;null!==I;){if(13===I.tag){var e=I.memoizedState;if(null!==e&&(null===(e=e.dehydrated)||"$?"===e.data||"$!"===e.data))return I}else if(19===I.tag&&void 0!==I.memoizedProps.revealOrder){if(0!==(64&I.effectTag))return I}else if(null!==I.child){I.child.return=I,I=I.child;continue}if(I===g)break;for(;null===I.sibling;){if(null===I.return||I.return===g)return null;I=I.return}I.sibling.return=I.return,I=I.sibling}return null}function wQ(g,I){return{responder:g,props:I}}var TQ=E.ReactCurrentDispatcher,zQ=E.ReactCurrentBatchConfig,OQ=0,KQ=null,jQ=null,PQ=null,_Q=null,qQ=null,$Q=null,gF=0,IF=null,eF=0,tF=!1,CF=null,QF=0;function FF(){throw Error(F(321))}function BF(g,I){if(null===I)return!1;for(var e=0;e<I.length&&e<g.length;e++)if(!jt(g[e],I[e]))return!1;return!0}function nF(g,I,e,t,C,Q){if(OQ=Q,KQ=I,PQ=null!==g?g.memoizedState:null,TQ.current=null===PQ?GF:LF,I=e(t,C),tF){do{tF=!1,QF+=1,PQ=null!==g?g.memoizedState:null,$Q=_Q,IF=qQ=jQ=null,TQ.current=LF,I=e(t,C)}while(tF);CF=null,QF=0}if(TQ.current=SF,(g=KQ).memoizedState=_Q,g.expirationTime=gF,g.updateQueue=IF,g.effectTag|=eF,g=null!==jQ&&null!==jQ.next,OQ=0,$Q=qQ=_Q=PQ=jQ=KQ=null,gF=0,IF=null,eF=0,g)throw Error(F(300));return I}function UF(){TQ.current=SF,OQ=0,$Q=qQ=_Q=PQ=jQ=KQ=null,gF=0,IF=null,eF=0,tF=!1,CF=null,QF=0}function sF(){var g={memoizedState:null,baseState:null,queue:null,baseUpdate:null,next:null};return null===qQ?_Q=qQ=g:qQ=qQ.next=g,qQ}function iF(){if(null!==$Q)$Q=(qQ=$Q).next,PQ=null!==(jQ=PQ)?jQ.next:null;else{if(null===PQ)throw Error(F(310));var g={memoizedState:(jQ=PQ).memoizedState,baseState:jQ.baseState,queue:jQ.queue,baseUpdate:jQ.baseUpdate,next:null};qQ=null===qQ?_Q=g:qQ.next=g,PQ=jQ.next}return qQ}function cF(g,I){return"function"===typeof I?I(g):I}function AF(g){var I=iF(),e=I.queue;if(null===e)throw Error(F(311));if(e.lastRenderedReducer=g,0<QF){var t=e.dispatch;if(null!==CF){var C=CF.get(e);if(void 0!==C){CF.delete(e);var Q=I.memoizedState;do{Q=g(Q,C.action),C=C.next}while(null!==C);return jt(Q,I.memoizedState)||(vF=!0),I.memoizedState=Q,I.baseUpdate===e.last&&(I.baseState=Q),e.lastRenderedState=Q,[Q,t]}}return[I.memoizedState,t]}t=e.last;var B=I.baseUpdate;if(Q=I.baseState,null!==B?(null!==t&&(t.next=null),t=B.next):t=null!==t?t.next:null,null!==t){var n=C=null,U=t,s=!1;do{var i=U.expirationTime;i<OQ?(s||(s=!0,n=B,C=Q),i>gF&&sn(gF=i)):(Un(i,U.suspenseConfig),Q=U.eagerReducer===g?U.eagerState:g(Q,U.action)),B=U,U=U.next}while(null!==U&&U!==t);s||(n=B,C=Q),jt(Q,I.memoizedState)||(vF=!0),I.memoizedState=Q,I.baseUpdate=n,I.baseState=C,e.lastRenderedState=Q}return[I.memoizedState,e.dispatch]}function lF(g){var I=sF();return"function"===typeof g&&(g=g()),I.memoizedState=I.baseState=g,g=(g=I.queue={last:null,dispatch:null,lastRenderedReducer:cF,lastRenderedState:g}).dispatch=RF.bind(null,KQ,g),[I.memoizedState,g]}function aF(g){return AF(cF)}function rF(g,I,e,t){return g={tag:g,create:I,destroy:e,deps:t,next:null},null===IF?(IF={lastEffect:null}).lastEffect=g.next=g:null===(I=IF.lastEffect)?IF.lastEffect=g.next=g:(e=I.next,I.next=g,g.next=e,IF.lastEffect=g),g}function oF(g,I,e,t){var C=sF();eF|=g,C.memoizedState=rF(I,e,void 0,void 0===t?null:t)}function dF(g,I,e,t){var C=iF();t=void 0===t?null:t;var Q=void 0;if(null!==jQ){var F=jQ.memoizedState;if(Q=F.destroy,null!==t&&BF(t,F.deps))return void rF(0,e,Q,t)}eF|=g,C.memoizedState=rF(I,e,Q,t)}function uF(g,I){return oF(516,192,g,I)}function yF(g,I){return dF(516,192,g,I)}function bF(g,I){return"function"===typeof I?(g=g(),I(g),function(){I(null)}):null!==I&&void 0!==I?(g=g(),I.current=g,function(){I.current=null}):void 0}function ZF(){}function mF(g,I){return sF().memoizedState=[g,void 0===I?null:I],g}function xF(g,I){var e=iF();I=void 0===I?null:I;var t=e.memoizedState;return null!==t&&null!==I&&BF(I,t[1])?t[0]:(e.memoizedState=[g,I],g)}function RF(g,I,e){if(!(25>QF))throw Error(F(301));var t=g.alternate;if(g===KQ||null!==t&&t===KQ)if(tF=!0,g={expirationTime:OQ,suspenseConfig:null,action:e,eagerReducer:null,eagerState:null,next:null},null===CF&&(CF=new Map),void 0===(e=CF.get(I)))CF.set(I,g);else{for(I=e;null!==I.next;)I=I.next;I.next=g}else{var C=PB(),Q=uQ.suspense;Q={expirationTime:C=_B(C,g,Q),suspenseConfig:Q,action:e,eagerReducer:null,eagerState:null,next:null};var B=I.last;if(null===B)Q.next=Q;else{var n=B.next;null!==n&&(Q.next=n),B.next=Q}if(I.last=Q,0===g.expirationTime&&(null===t||0===t.expirationTime)&&null!==(t=I.lastRenderedReducer))try{var U=I.lastRenderedState,s=t(U,e);if(Q.eagerReducer=t,Q.eagerState=s,jt(s,U))return}catch(i){}qB(g,C)}}var SF={readContext:FQ,useCallback:FF,useContext:FF,useEffect:FF,useImperativeHandle:FF,useLayoutEffect:FF,useMemo:FF,useReducer:FF,useRef:FF,useState:FF,useDebugValue:FF,useResponder:FF,useDeferredValue:FF,useTransition:FF},GF={readContext:FQ,useCallback:mF,useContext:FQ,useEffect:uF,useImperativeHandle:function(g,I,e){return e=null!==e&&void 0!==e?e.concat([g]):null,oF(4,36,bF.bind(null,I,g),e)},useLayoutEffect:function(g,I){return oF(4,36,g,I)},useMemo:function(g,I){var e=sF();return I=void 0===I?null:I,g=g(),e.memoizedState=[g,I],g},useReducer:function(g,I,e){var t=sF();return I=void 0!==e?e(I):I,t.memoizedState=t.baseState=I,g=(g=t.queue={last:null,dispatch:null,lastRenderedReducer:g,lastRenderedState:I}).dispatch=RF.bind(null,KQ,g),[t.memoizedState,g]},useRef:function(g){return g={current:g},sF().memoizedState=g},useState:lF,useDebugValue:ZF,useResponder:wQ,useDeferredValue:function(g,I){var e=lF(g),t=e[0],C=e[1];return uF((function(){Q.unstable_next((function(){var e=zQ.suspense;zQ.suspense=void 0===I?null:I;try{C(g)}finally{zQ.suspense=e}}))}),[g,I]),t},useTransition:function(g){var I=lF(!1),e=I[0],t=I[1];return[mF((function(I){t(!0),Q.unstable_next((function(){var e=zQ.suspense;zQ.suspense=void 0===g?null:g;try{t(!1),I()}finally{zQ.suspense=e}}))}),[g,e]),e]}},LF={readContext:FQ,useCallback:xF,useContext:FQ,useEffect:yF,useImperativeHandle:function(g,I,e){return e=null!==e&&void 0!==e?e.concat([g]):null,dF(4,36,bF.bind(null,I,g),e)},useLayoutEffect:function(g,I){return dF(4,36,g,I)},useMemo:function(g,I){var e=iF();I=void 0===I?null:I;var t=e.memoizedState;return null!==t&&null!==I&&BF(I,t[1])?t[0]:(g=g(),e.memoizedState=[g,I],g)},useReducer:AF,useRef:function(){return iF().memoizedState},useState:aF,useDebugValue:ZF,useResponder:wQ,useDeferredValue:function(g,I){var e=aF(),t=e[0],C=e[1];return yF((function(){Q.unstable_next((function(){var e=zQ.suspense;zQ.suspense=void 0===I?null:I;try{C(g)}finally{zQ.suspense=e}}))}),[g,I]),t},useTransition:function(g){var I=aF(),e=I[0],t=I[1];return[xF((function(I){t(!0),Q.unstable_next((function(){var e=zQ.suspense;zQ.suspense=void 0===g?null:g;try{t(!1),I()}finally{zQ.suspense=e}}))}),[g,e]),e]}},VF=null,hF=null,DF=!1;function pF(g,I){var e=Vn(5,null,null,0);e.elementType="DELETED",e.type="DELETED",e.stateNode=I,e.return=g,e.effectTag=8,null!==g.lastEffect?(g.lastEffect.nextEffect=e,g.lastEffect=e):g.firstEffect=g.lastEffect=e}function EF(g,I){switch(g.tag){case 5:var e=g.type;return null!==(I=1!==I.nodeType||e.toLowerCase()!==I.nodeName.toLowerCase()?null:I)&&(g.stateNode=I,!0);case 6:return null!==(I=""===g.pendingProps||3!==I.nodeType?null:I)&&(g.stateNode=I,!0);case 13:default:return!1}}function NF(g){if(DF){var I=hF;if(I){var e=I;if(!EF(g,I)){if(!(I=It(e.nextSibling))||!EF(g,I))return g.effectTag=-1025&g.effectTag|2,DF=!1,void(VF=g);pF(VF,e)}VF=g,hF=It(I.firstChild)}else g.effectTag=-1025&g.effectTag|2,DF=!1,VF=g}}function WF(g){for(g=g.return;null!==g&&5!==g.tag&&3!==g.tag&&13!==g.tag;)g=g.return;VF=g}function fF(g){if(g!==VF)return!1;if(!DF)return WF(g),DF=!0,!1;var I=g.type;if(5!==g.tag||"head"!==I&&"body"!==I&&!qe(I,g.memoizedProps))for(I=hF;I;)pF(g,I),I=It(I.nextSibling);if(WF(g),13===g.tag){if(!(g=null!==(g=g.memoizedState)?g.dehydrated:null))throw Error(F(317));g:{for(g=g.nextSibling,I=0;g;){if(8===g.nodeType){var e=g.data;if("/$"===e){if(0===I){hF=It(g.nextSibling);break g}I--}else"$"!==e&&"$!"!==e&&"$?"!==e||I++}g=g.nextSibling}hF=null}}else hF=VF?It(g.stateNode.nextSibling):null;return!0}function XF(){hF=VF=null,DF=!1}var JF=E.ReactCurrentOwner,vF=!1;function kF(g,I,e,t){I.child=null===g?pQ(I,null,e,t):DQ(I,g.child,e,t)}function HF(g,I,e,t,C){e=e.render;var Q=I.ref;return QQ(I,C),t=nF(g,I,e,t,Q,C),null===g||vF?(I.effectTag|=1,kF(g,I,t,C),I.child):(I.updateQueue=g.updateQueue,I.effectTag&=-517,g.expirationTime<=C&&(g.expirationTime=0),tB(g,I,C))}function MF(g,I,e,t,C,Q){if(null===g){var F=e.type;return"function"!==typeof F||hn(F)||void 0!==F.defaultProps||null!==e.compare||void 0!==e.defaultProps?((g=pn(e.type,null,t,null,I.mode,Q)).ref=I.ref,g.return=I,I.child=g):(I.tag=15,I.type=F,YF(g,I,F,t,C,Q))}return F=g.child,C<Q&&(C=F.memoizedProps,(e=null!==(e=e.compare)?e:_t)(C,t)&&g.ref===I.ref)?tB(g,I,Q):(I.effectTag|=1,(g=Dn(F,t)).ref=I.ref,g.return=I,I.child=g)}function YF(g,I,e,t,C,Q){return null!==g&&_t(g.memoizedProps,t)&&g.ref===I.ref&&(vF=!1,C<Q)?tB(g,I,Q):TF(g,I,e,t,Q)}function wF(g,I){var e=I.ref;(null===g&&null!==e||null!==g&&g.ref!==e)&&(I.effectTag|=128)}function TF(g,I,e,t,C){var Q=aC(e)?AC:iC.current;return Q=lC(I,Q),QQ(I,C),e=nF(g,I,e,t,Q,C),null===g||vF?(I.effectTag|=1,kF(g,I,e,C),I.child):(I.updateQueue=g.updateQueue,I.effectTag&=-517,g.expirationTime<=C&&(g.expirationTime=0),tB(g,I,C))}function zF(g,I,e,t,C){if(aC(e)){var Q=!0;yC(I)}else Q=!1;if(QQ(I,C),null===I.stateNode)null!==g&&(g.alternate=null,I.alternate=null,I.effectTag|=2),xQ(I,e,t),SQ(I,e,t,C),t=!0;else if(null===g){var F=I.stateNode,B=I.memoizedProps;F.props=B;var n=F.context,U=e.contextType;"object"===typeof U&&null!==U?U=FQ(U):U=lC(I,U=aC(e)?AC:iC.current);var s=e.getDerivedStateFromProps,i="function"===typeof s||"function"===typeof F.getSnapshotBeforeUpdate;i||"function"!==typeof F.UNSAFE_componentWillReceiveProps&&"function"!==typeof F.componentWillReceiveProps||(B!==t||n!==U)&&RQ(I,F,t,U),BQ=!1;var c=I.memoizedState;n=F.state=c;var A=I.updateQueue;null!==A&&(rQ(I,A,t,F,C),n=I.memoizedState),B!==t||c!==n||cC.current||BQ?("function"===typeof s&&(bQ(I,e,s,t),n=I.memoizedState),(B=BQ||mQ(I,e,B,t,c,n,U))?(i||"function"!==typeof F.UNSAFE_componentWillMount&&"function"!==typeof F.componentWillMount||("function"===typeof F.componentWillMount&&F.componentWillMount(),"function"===typeof F.UNSAFE_componentWillMount&&F.UNSAFE_componentWillMount()),"function"===typeof F.componentDidMount&&(I.effectTag|=4)):("function"===typeof F.componentDidMount&&(I.effectTag|=4),I.memoizedProps=t,I.memoizedState=n),F.props=t,F.state=n,F.context=U,t=B):("function"===typeof F.componentDidMount&&(I.effectTag|=4),t=!1)}else F=I.stateNode,B=I.memoizedProps,F.props=I.type===I.elementType?B:PC(I.type,B),n=F.context,"object"===typeof(U=e.contextType)&&null!==U?U=FQ(U):U=lC(I,U=aC(e)?AC:iC.current),(i="function"===typeof(s=e.getDerivedStateFromProps)||"function"===typeof F.getSnapshotBeforeUpdate)||"function"!==typeof F.UNSAFE_componentWillReceiveProps&&"function"!==typeof F.componentWillReceiveProps||(B!==t||n!==U)&&RQ(I,F,t,U),BQ=!1,n=I.memoizedState,c=F.state=n,null!==(A=I.updateQueue)&&(rQ(I,A,t,F,C),c=I.memoizedState),B!==t||n!==c||cC.current||BQ?("function"===typeof s&&(bQ(I,e,s,t),c=I.memoizedState),(s=BQ||mQ(I,e,B,t,n,c,U))?(i||"function"!==typeof F.UNSAFE_componentWillUpdate&&"function"!==typeof F.componentWillUpdate||("function"===typeof F.componentWillUpdate&&F.componentWillUpdate(t,c,U),"function"===typeof F.UNSAFE_componentWillUpdate&&F.UNSAFE_componentWillUpdate(t,c,U)),"function"===typeof F.componentDidUpdate&&(I.effectTag|=4),"function"===typeof F.getSnapshotBeforeUpdate&&(I.effectTag|=256)):("function"!==typeof F.componentDidUpdate||B===g.memoizedProps&&n===g.memoizedState||(I.effectTag|=4),"function"!==typeof F.getSnapshotBeforeUpdate||B===g.memoizedProps&&n===g.memoizedState||(I.effectTag|=256),I.memoizedProps=t,I.memoizedState=c),F.props=t,F.state=c,F.context=U,t=s):("function"!==typeof F.componentDidUpdate||B===g.memoizedProps&&n===g.memoizedState||(I.effectTag|=4),"function"!==typeof F.getSnapshotBeforeUpdate||B===g.memoizedProps&&n===g.memoizedState||(I.effectTag|=256),t=!1);return OF(g,I,e,t,Q,C)}function OF(g,I,e,t,C,Q){wF(g,I);var F=0!==(64&I.effectTag);if(!t&&!F)return C&&bC(I,e,!1),tB(g,I,Q);t=I.stateNode,JF.current=I;var B=F&&"function"!==typeof e.getDerivedStateFromError?null:t.render();return I.effectTag|=1,null!==g&&F?(I.child=DQ(I,g.child,null,Q),I.child=DQ(I,null,B,Q)):kF(g,I,B,Q),I.memoizedState=t.state,C&&bC(I,e,!0),I.child}function KF(g){var I=g.stateNode;I.pendingContext?dC(0,I.pendingContext,I.pendingContext!==I.context):I.context&&dC(0,I.context,!1),JQ(g,I.containerInfo)}var jF,PF,_F,qF={dehydrated:null,retryTime:0};function $F(g,I,e){var t,C=I.mode,Q=I.pendingProps,F=MQ.current,B=!1;if((t=0!==(64&I.effectTag))||(t=0!==(2&F)&&(null===g||null!==g.memoizedState)),t?(B=!0,I.effectTag&=-65):null!==g&&null===g.memoizedState||void 0===Q.fallback||!0===Q.unstable_avoidThisFallback||(F|=1),UC(MQ,1&F),null===g){if(void 0!==Q.fallback&&NF(I),B){if(B=Q.fallback,(Q=En(null,C,0,null)).return=I,0===(2&I.mode))for(g=null!==I.memoizedState?I.child.child:I.child,Q.child=g;null!==g;)g.return=Q,g=g.sibling;return(e=En(B,C,e,null)).return=I,Q.sibling=e,I.memoizedState=qF,I.child=Q,e}return C=Q.children,I.memoizedState=null,I.child=pQ(I,null,C,e)}if(null!==g.memoizedState){if(C=(g=g.child).sibling,B){if(Q=Q.fallback,(e=Dn(g,g.pendingProps)).return=I,0===(2&I.mode)&&(B=null!==I.memoizedState?I.child.child:I.child)!==g.child)for(e.child=B;null!==B;)B.return=e,B=B.sibling;return(C=Dn(C,Q,C.expirationTime)).return=I,e.sibling=C,e.childExpirationTime=0,I.memoizedState=qF,I.child=e,C}return e=DQ(I,g.child,Q.children,e),I.memoizedState=null,I.child=e}if(g=g.child,B){if(B=Q.fallback,(Q=En(null,C,0,null)).return=I,Q.child=g,null!==g&&(g.return=Q),0===(2&I.mode))for(g=null!==I.memoizedState?I.child.child:I.child,Q.child=g;null!==g;)g.return=Q,g=g.sibling;return(e=En(B,C,e,null)).return=I,Q.sibling=e,e.effectTag|=2,Q.childExpirationTime=0,I.memoizedState=qF,I.child=Q,e}return I.memoizedState=null,I.child=DQ(I,g,Q.children,e)}function gB(g,I){g.expirationTime<I&&(g.expirationTime=I);var e=g.alternate;null!==e&&e.expirationTime<I&&(e.expirationTime=I),CQ(g.return,I)}function IB(g,I,e,t,C,Q){var F=g.memoizedState;null===F?g.memoizedState={isBackwards:I,rendering:null,last:t,tail:e,tailExpiration:0,tailMode:C,lastEffect:Q}:(F.isBackwards=I,F.rendering=null,F.last=t,F.tail=e,F.tailExpiration=0,F.tailMode=C,F.lastEffect=Q)}function eB(g,I,e){var t=I.pendingProps,C=t.revealOrder,Q=t.tail;if(kF(g,I,t.children,e),0!==(2&(t=MQ.current)))t=1&t|2,I.effectTag|=64;else{if(null!==g&&0!==(64&g.effectTag))g:for(g=I.child;null!==g;){if(13===g.tag)null!==g.memoizedState&&gB(g,e);else if(19===g.tag)gB(g,e);else if(null!==g.child){g.child.return=g,g=g.child;continue}if(g===I)break g;for(;null===g.sibling;){if(null===g.return||g.return===I)break g;g=g.return}g.sibling.return=g.return,g=g.sibling}t&=1}if(UC(MQ,t),0===(2&I.mode))I.memoizedState=null;else switch(C){case"forwards":for(e=I.child,C=null;null!==e;)null!==(g=e.alternate)&&null===YQ(g)&&(C=e),e=e.sibling;null===(e=C)?(C=I.child,I.child=null):(C=e.sibling,e.sibling=null),IB(I,!1,C,e,Q,I.lastEffect);break;case"backwards":for(e=null,C=I.child,I.child=null;null!==C;){if(null!==(g=C.alternate)&&null===YQ(g)){I.child=C;break}g=C.sibling,C.sibling=e,e=C,C=g}IB(I,!0,e,null,Q,I.lastEffect);break;case"together":IB(I,!1,null,null,void 0,I.lastEffect);break;default:I.memoizedState=null}return I.child}function tB(g,I,e){null!==g&&(I.dependencies=g.dependencies);var t=I.expirationTime;if(0!==t&&sn(t),I.childExpirationTime<e)return null;if(null!==g&&I.child!==g.child)throw Error(F(153));if(null!==I.child){for(e=Dn(g=I.child,g.pendingProps,g.expirationTime),I.child=e,e.return=I;null!==g.sibling;)g=g.sibling,(e=e.sibling=Dn(g,g.pendingProps,g.expirationTime)).return=I;e.sibling=null}return I.child}function CB(g){g.effectTag|=4}function QB(g,I){switch(g.tailMode){case"hidden":I=g.tail;for(var e=null;null!==I;)null!==I.alternate&&(e=I),I=I.sibling;null===e?g.tail=null:e.sibling=null;break;case"collapsed":e=g.tail;for(var t=null;null!==e;)null!==e.alternate&&(t=e),e=e.sibling;null===t?I||null===g.tail?g.tail=null:g.tail.sibling=null:t.sibling=null}}function FB(g){switch(g.tag){case 1:aC(g.type)&&rC();var I=g.effectTag;return 4096&I?(g.effectTag=-4097&I|64,g):null;case 3:if(vQ(),oC(),0!==(64&(I=g.effectTag)))throw Error(F(285));return g.effectTag=-4097&I|64,g;case 5:return HQ(g),null;case 13:return nC(MQ),4096&(I=g.effectTag)?(g.effectTag=-4097&I|64,g):null;case 19:return nC(MQ),null;case 4:return vQ(),null;case 10:return tQ(g),null;default:return null}}function BB(g,I){return{value:g,source:I,stack:q(I)}}jF=function(g,I){for(var e=I.child;null!==e;){if(5===e.tag||6===e.tag)g.appendChild(e.stateNode);else if(4!==e.tag&&null!==e.child){e.child.return=e,e=e.child;continue}if(e===I)break;for(;null===e.sibling;){if(null===e.return||e.return===I)return;e=e.return}e.sibling.return=e.return,e=e.sibling}},PF=function(g,I,e,t,Q){var F=g.memoizedProps;if(F!==t){var B,n,U=I.stateNode;switch(XQ(NQ.current),g=null,e){case"input":F=Sg(U,F),t=Sg(U,t),g=[];break;case"option":F=pg(U,F),t=pg(U,t),g=[];break;case"select":F=C({},F,{value:void 0}),t=C({},t,{value:void 0}),g=[];break;case"textarea":F=Ng(U,F),t=Ng(U,t),g=[];break;default:"function"!==typeof F.onClick&&"function"===typeof t.onClick&&(U.onclick=Ye)}for(B in ke(e,t),e=null,F)if(!t.hasOwnProperty(B)&&F.hasOwnProperty(B)&&null!=F[B])if("style"===B)for(n in U=F[B])U.hasOwnProperty(n)&&(e||(e={}),e[n]="");else"dangerouslySetInnerHTML"!==B&&"children"!==B&&"suppressContentEditableWarning"!==B&&"suppressHydrationWarning"!==B&&"autoFocus"!==B&&(A.hasOwnProperty(B)?g||(g=[]):(g=g||[]).push(B,null));for(B in t){var s=t[B];if(U=null!=F?F[B]:void 0,t.hasOwnProperty(B)&&s!==U&&(null!=s||null!=U))if("style"===B)if(U){for(n in U)!U.hasOwnProperty(n)||s&&s.hasOwnProperty(n)||(e||(e={}),e[n]="");for(n in s)s.hasOwnProperty(n)&&U[n]!==s[n]&&(e||(e={}),e[n]=s[n])}else e||(g||(g=[]),g.push(B,e)),e=s;else"dangerouslySetInnerHTML"===B?(s=s?s.__html:void 0,U=U?U.__html:void 0,null!=s&&U!==s&&(g=g||[]).push(B,""+s)):"children"===B?U===s||"string"!==typeof s&&"number"!==typeof s||(g=g||[]).push(B,""+s):"suppressContentEditableWarning"!==B&&"suppressHydrationWarning"!==B&&(A.hasOwnProperty(B)?(null!=s&&Me(Q,B),g||U===s||(g=[])):(g=g||[]).push(B,s))}e&&(g=g||[]).push("style",e),Q=g,(I.updateQueue=Q)&&CB(I)}},_F=function(g,I,e,t){e!==t&&CB(I)};var nB="function"===typeof WeakSet?WeakSet:Set;function UB(g,I){var e=I.source,t=I.stack;null===t&&null!==e&&(t=q(e)),null!==e&&_(e.type),I=I.value,null!==g&&1===g.tag&&_(g.type);try{console.error(I)}catch(C){setTimeout((function(){throw C}))}}function sB(g){var I=g.ref;if(null!==I)if("function"===typeof I)try{I(null)}catch(e){mn(g,e)}else I.current=null}function iB(g,I){switch(I.tag){case 0:case 11:case 15:cB(2,0,I);break;case 1:if(256&I.effectTag&&null!==g){var e=g.memoizedProps,t=g.memoizedState;I=(g=I.stateNode).getSnapshotBeforeUpdate(I.elementType===I.type?e:PC(I.type,e),t),g.__reactInternalSnapshotBeforeUpdate=I}break;case 3:case 5:case 6:case 4:case 17:break;default:throw Error(F(163))}}function cB(g,I,e){if(null!==(e=null!==(e=e.updateQueue)?e.lastEffect:null)){var t=e=e.next;do{if(0!==(t.tag&g)){var C=t.destroy;t.destroy=void 0,void 0!==C&&C()}0!==(t.tag&I)&&(C=t.create,t.destroy=C()),t=t.next}while(t!==e)}}function AB(g,I,e){switch("function"===typeof Gn&&Gn(I),I.tag){case 0:case 11:case 14:case 15:if(null!==(g=I.updateQueue)&&null!==(g=g.lastEffect)){var t=g.next;YC(97<e?97:e,(function(){var g=t;do{var e=g.destroy;if(void 0!==e){var C=I;try{e()}catch(Q){mn(C,Q)}}g=g.next}while(g!==t)}))}break;case 1:sB(I),"function"===typeof(e=I.stateNode).componentWillUnmount&&function(g,I){try{I.props=g.memoizedProps,I.state=g.memoizedState,I.componentWillUnmount()}catch(e){mn(g,e)}}(I,e);break;case 5:sB(I);break;case 4:oB(g,I,e)}}function lB(g){var I=g.alternate;g.return=null,g.child=null,g.memoizedState=null,g.updateQueue=null,g.dependencies=null,g.alternate=null,g.firstEffect=null,g.lastEffect=null,g.pendingProps=null,g.memoizedProps=null,null!==I&&lB(I)}function aB(g){return 5===g.tag||3===g.tag||4===g.tag}function rB(g){g:{for(var I=g.return;null!==I;){if(aB(I)){var e=I;break g}I=I.return}throw Error(F(160))}switch(I=e.stateNode,e.tag){case 5:var t=!1;break;case 3:case 4:I=I.containerInfo,t=!0;break;default:throw Error(F(161))}16&e.effectTag&&(wg(I,""),e.effectTag&=-17);g:I:for(e=g;;){for(;null===e.sibling;){if(null===e.return||aB(e.return)){e=null;break g}e=e.return}for(e.sibling.return=e.return,e=e.sibling;5!==e.tag&&6!==e.tag&&18!==e.tag;){if(2&e.effectTag)continue I;if(null===e.child||4===e.tag)continue I;e.child.return=e,e=e.child}if(!(2&e.effectTag)){e=e.stateNode;break g}}for(var C=g;;){var Q=5===C.tag||6===C.tag;if(Q){var B=Q?C.stateNode:C.stateNode.instance;if(e)if(t){var n=B;B=e,8===(Q=I).nodeType?Q.parentNode.insertBefore(n,B):Q.insertBefore(n,B)}else I.insertBefore(B,e);else t?(8===(n=I).nodeType?(Q=n.parentNode).insertBefore(B,n):(Q=n).appendChild(B),null!==(n=n._reactRootContainer)&&void 0!==n||null!==Q.onclick||(Q.onclick=Ye)):I.appendChild(B)}else if(4!==C.tag&&null!==C.child){C.child.return=C,C=C.child;continue}if(C===g)break;for(;null===C.sibling;){if(null===C.return||C.return===g)return;C=C.return}C.sibling.return=C.return,C=C.sibling}}function oB(g,I,e){for(var t,C,Q=I,B=!1;;){if(!B){B=Q.return;g:for(;;){if(null===B)throw Error(F(160));switch(t=B.stateNode,B.tag){case 5:C=!1;break g;case 3:case 4:t=t.containerInfo,C=!0;break g}B=B.return}B=!0}if(5===Q.tag||6===Q.tag){g:for(var n=g,U=Q,s=e,i=U;;)if(AB(n,i,s),null!==i.child&&4!==i.tag)i.child.return=i,i=i.child;else{if(i===U)break;for(;null===i.sibling;){if(null===i.return||i.return===U)break g;i=i.return}i.sibling.return=i.return,i=i.sibling}C?(n=t,U=Q.stateNode,8===n.nodeType?n.parentNode.removeChild(U):n.removeChild(U)):t.removeChild(Q.stateNode)}else if(4===Q.tag){if(null!==Q.child){t=Q.stateNode.containerInfo,C=!0,Q.child.return=Q,Q=Q.child;continue}}else if(AB(g,Q,e),null!==Q.child){Q.child.return=Q,Q=Q.child;continue}if(Q===I)break;for(;null===Q.sibling;){if(null===Q.return||Q.return===I)return;4===(Q=Q.return).tag&&(B=!1)}Q.sibling.return=Q.return,Q=Q.sibling}}function dB(g,I){switch(I.tag){case 0:case 11:case 14:case 15:cB(4,8,I);break;case 1:break;case 5:var e=I.stateNode;if(null!=e){var t=I.memoizedProps,C=null!==g?g.memoizedProps:t;g=I.type;var Q=I.updateQueue;if(I.updateQueue=null,null!==Q){for(e[Qt]=t,"input"===g&&"radio"===t.type&&null!=t.name&&Lg(e,t),He(g,C),I=He(g,t),C=0;C<Q.length;C+=2){var B=Q[C],n=Q[C+1];"style"===B?Je(e,n):"dangerouslySetInnerHTML"===B?Yg(e,n):"children"===B?wg(e,n):Zg(e,B,n,I)}switch(g){case"input":Vg(e,t);break;case"textarea":fg(e,t);break;case"select":I=e._wrapperState.wasMultiple,e._wrapperState.wasMultiple=!!t.multiple,null!=(g=t.value)?Eg(e,!!t.multiple,g,!1):I!==!!t.multiple&&(null!=t.defaultValue?Eg(e,!!t.multiple,t.defaultValue,!0):Eg(e,!!t.multiple,t.multiple?[]:"",!1))}}}break;case 6:if(null===I.stateNode)throw Error(F(162));I.stateNode.nodeValue=I.memoizedProps;break;case 3:(I=I.stateNode).hydrate&&(I.hydrate=!1,SI(I.containerInfo));break;case 12:break;case 13:if(e=I,null===I.memoizedState?t=!1:(t=!0,e=I.child,JB=kC()),null!==e)g:for(g=e;;){if(5===g.tag)Q=g.stateNode,t?"function"===typeof(Q=Q.style).setProperty?Q.setProperty("display","none","important"):Q.display="none":(Q=g.stateNode,C=void 0!==(C=g.memoizedProps.style)&&null!==C&&C.hasOwnProperty("display")?C.display:null,Q.style.display=Xe("display",C));else if(6===g.tag)g.stateNode.nodeValue=t?"":g.memoizedProps;else{if(13===g.tag&&null!==g.memoizedState&&null===g.memoizedState.dehydrated){(Q=g.child.sibling).return=g,g=Q;continue}if(null!==g.child){g.child.return=g,g=g.child;continue}}if(g===e)break g;for(;null===g.sibling;){if(null===g.return||g.return===e)break g;g=g.return}g.sibling.return=g.return,g=g.sibling}uB(I);break;case 19:uB(I);break;case 17:case 20:case 21:break;default:throw Error(F(163))}}function uB(g){var I=g.updateQueue;if(null!==I){g.updateQueue=null;var e=g.stateNode;null===e&&(e=g.stateNode=new nB),I.forEach((function(I){var t=Rn.bind(null,g,I);e.has(I)||(e.add(I),I.then(t,t))}))}}var yB="function"===typeof WeakMap?WeakMap:Map;function bB(g,I,e){(e=sQ(e,null)).tag=3,e.payload={element:null};var t=I.value;return e.callback=function(){kB||(kB=!0,HB=t),UB(g,I)},e}function ZB(g,I,e){(e=sQ(e,null)).tag=3;var t=g.type.getDerivedStateFromError;if("function"===typeof t){var C=I.value;e.payload=function(){return UB(g,I),t(C)}}var Q=g.stateNode;return null!==Q&&"function"===typeof Q.componentDidCatch&&(e.callback=function(){"function"!==typeof t&&(null===MB?MB=new Set([this]):MB.add(this),UB(g,I));var e=I.stack;this.componentDidCatch(I.value,{componentStack:null!==e?e:""})}),e}var mB,xB=Math.ceil,RB=E.ReactCurrentDispatcher,SB=E.ReactCurrentOwner,GB=0,LB=null,VB=null,hB=0,DB=0,pB=null,EB=1073741823,NB=1073741823,WB=null,fB=0,XB=!1,JB=0,vB=null,kB=!1,HB=null,MB=null,YB=!1,wB=null,TB=90,zB=null,OB=0,KB=null,jB=0;function PB(){return 0!==(48&GB)?1073741821-(kC()/10|0):0!==jB?jB:jB=1073741821-(kC()/10|0)}function _B(g,I,e){if(0===(2&(I=I.mode)))return 1073741823;var t=HC();if(0===(4&I))return 99===t?1073741823:1073741822;if(0!==(16&GB))return hB;if(null!==e)g=jC(g,0|e.timeoutMs||5e3,250);else switch(t){case 99:g=1073741823;break;case 98:g=jC(g,150,100);break;case 97:case 96:g=jC(g,5e3,250);break;case 95:g=2;break;default:throw Error(F(326))}return null!==LB&&g===hB&&--g,g}function qB(g,I){if(50<OB)throw OB=0,KB=null,Error(F(185));if(null!==(g=$B(g,I))){var e=HC();1073741823===I?0!==(8&GB)&&0===(48&GB)?tn(g):(In(g),0===GB&&zC()):In(g),0===(4&GB)||98!==e&&99!==e||(null===zB?zB=new Map([[g,I]]):(void 0===(e=zB.get(g))||e>I)&&zB.set(g,I))}}function $B(g,I){g.expirationTime<I&&(g.expirationTime=I);var e=g.alternate;null!==e&&e.expirationTime<I&&(e.expirationTime=I);var t=g.return,C=null;if(null===t&&3===g.tag)C=g.stateNode;else for(;null!==t;){if(e=t.alternate,t.childExpirationTime<I&&(t.childExpirationTime=I),null!==e&&e.childExpirationTime<I&&(e.childExpirationTime=I),null===t.return&&3===t.tag){C=t.stateNode;break}t=t.return}return null!==C&&(LB===C&&(sn(I),4===DB&&Jn(C,hB)),vn(C,I)),C}function gn(g){var I=g.lastExpiredTime;return 0!==I?I:Xn(g,I=g.firstPendingTime)?(I=g.lastPingedTime)>(g=g.nextKnownPendingLevel)?I:g:I}function In(g){if(0!==g.lastExpiredTime)g.callbackExpirationTime=1073741823,g.callbackPriority=99,g.callbackNode=TC(tn.bind(null,g));else{var I=gn(g),e=g.callbackNode;if(0===I)null!==e&&(g.callbackNode=null,g.callbackExpirationTime=0,g.callbackPriority=90);else{var t=PB();if(1073741823===I?t=99:1===I||2===I?t=95:t=0>=(t=10*(1073741821-I)-10*(1073741821-t))?99:250>=t?98:5250>=t?97:95,null!==e){var C=g.callbackPriority;if(g.callbackExpirationTime===I&&C>=t)return;e!==NC&&xC(e)}g.callbackExpirationTime=I,g.callbackPriority=t,I=1073741823===I?TC(tn.bind(null,g)):wC(t,en.bind(null,g),{timeout:10*(1073741821-I)-kC()}),g.callbackNode=I}}}function en(g,I){if(jB=0,I)return kn(g,I=PB()),In(g),null;var e=gn(g);if(0!==e){if(I=g.callbackNode,0!==(48&GB))throw Error(F(327));if(yn(),g===LB&&e===hB||Fn(g,e),null!==VB){var t=GB;GB|=16;for(var C=nn();;)try{An();break}catch(n){Bn(g,n)}if(IQ(),GB=t,RB.current=C,1===DB)throw I=pB,Fn(g,e),Jn(g,e),In(g),I;if(null===VB)switch(C=g.finishedWork=g.current.alternate,g.finishedExpirationTime=e,t=DB,LB=null,t){case 0:case 1:throw Error(F(345));case 2:kn(g,2<e?2:e);break;case 3:if(Jn(g,e),e===(t=g.lastSuspendedTime)&&(g.nextKnownPendingLevel=rn(C)),1073741823===EB&&10<(C=JB+500-kC())){if(XB){var Q=g.lastPingedTime;if(0===Q||Q>=e){g.lastPingedTime=e,Fn(g,e);break}}if(0!==(Q=gn(g))&&Q!==e)break;if(0!==t&&t!==e){g.lastPingedTime=t;break}g.timeoutHandle=$e(on.bind(null,g),C);break}on(g);break;case 4:if(Jn(g,e),e===(t=g.lastSuspendedTime)&&(g.nextKnownPendingLevel=rn(C)),XB&&(0===(C=g.lastPingedTime)||C>=e)){g.lastPingedTime=e,Fn(g,e);break}if(0!==(C=gn(g))&&C!==e)break;if(0!==t&&t!==e){g.lastPingedTime=t;break}if(1073741823!==NB?t=10*(1073741821-NB)-kC():1073741823===EB?t=0:(t=10*(1073741821-EB)-5e3,0>(t=(C=kC())-t)&&(t=0),(e=10*(1073741821-e)-C)<(t=(120>t?120:480>t?480:1080>t?1080:1920>t?1920:3e3>t?3e3:4320>t?4320:1960*xB(t/1960))-t)&&(t=e)),10<t){g.timeoutHandle=$e(on.bind(null,g),t);break}on(g);break;case 5:if(1073741823!==EB&&null!==WB){Q=EB;var B=WB;if(0>=(t=0|B.busyMinDurationMs)?t=0:(C=0|B.busyDelayMs,t=(Q=kC()-(10*(1073741821-Q)-(0|B.timeoutMs||5e3)))<=C?0:C+t-Q),10<t){Jn(g,e),g.timeoutHandle=$e(on.bind(null,g),t);break}}on(g);break;default:throw Error(F(329))}if(In(g),g.callbackNode===I)return en.bind(null,g)}}return null}function tn(g){var I=g.lastExpiredTime;if(I=0!==I?I:1073741823,g.finishedExpirationTime===I)on(g);else{if(0!==(48&GB))throw Error(F(327));if(yn(),g===LB&&I===hB||Fn(g,I),null!==VB){var e=GB;GB|=16;for(var t=nn();;)try{cn();break}catch(C){Bn(g,C)}if(IQ(),GB=e,RB.current=t,1===DB)throw e=pB,Fn(g,I),Jn(g,I),In(g),e;if(null!==VB)throw Error(F(261));g.finishedWork=g.current.alternate,g.finishedExpirationTime=I,LB=null,on(g),In(g)}}return null}function Cn(g,I){var e=GB;GB|=1;try{return g(I)}finally{0===(GB=e)&&zC()}}function Qn(g,I){var e=GB;GB&=-2,GB|=8;try{return g(I)}finally{0===(GB=e)&&zC()}}function Fn(g,I){g.finishedWork=null,g.finishedExpirationTime=0;var e=g.timeoutHandle;if(-1!==e&&(g.timeoutHandle=-1,gt(e)),null!==VB)for(e=VB.return;null!==e;){var t=e;switch(t.tag){case 1:var C=t.type.childContextTypes;null!==C&&void 0!==C&&rC();break;case 3:vQ(),oC();break;case 5:HQ(t);break;case 4:vQ();break;case 13:case 19:nC(MQ);break;case 10:tQ(t)}e=e.return}LB=g,VB=Dn(g.current,null),hB=I,DB=0,pB=null,NB=EB=1073741823,WB=null,fB=0,XB=!1}function Bn(g,I){for(;;){try{if(IQ(),UF(),null===VB||null===VB.return)return DB=1,pB=I,null;g:{var e=g,t=VB.return,C=VB,Q=I;if(I=hB,C.effectTag|=2048,C.firstEffect=C.lastEffect=null,null!==Q&&"object"===typeof Q&&"function"===typeof Q.then){var F=Q,B=0!==(1&MQ.current),n=t;do{var U;if(U=13===n.tag){var s=n.memoizedState;if(null!==s)U=null!==s.dehydrated;else{var i=n.memoizedProps;U=void 0!==i.fallback&&(!0!==i.unstable_avoidThisFallback||!B)}}if(U){var c=n.updateQueue;if(null===c){var A=new Set;A.add(F),n.updateQueue=A}else c.add(F);if(0===(2&n.mode)){if(n.effectTag|=64,C.effectTag&=-2981,1===C.tag)if(null===C.alternate)C.tag=17;else{var l=sQ(1073741823,null);l.tag=2,cQ(C,l)}C.expirationTime=1073741823;break g}Q=void 0,C=I;var a=e.pingCache;if(null===a?(a=e.pingCache=new yB,Q=new Set,a.set(F,Q)):void 0===(Q=a.get(F))&&(Q=new Set,a.set(F,Q)),!Q.has(C)){Q.add(C);var r=xn.bind(null,e,F,C);F.then(r,r)}n.effectTag|=4096,n.expirationTime=I;break g}n=n.return}while(null!==n);Q=Error((_(C.type)||"A React component")+" suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display."+q(C))}5!==DB&&(DB=2),Q=BB(Q,C),n=t;do{switch(n.tag){case 3:F=Q,n.effectTag|=4096,n.expirationTime=I,AQ(n,bB(n,F,I));break g;case 1:F=Q;var o=n.type,d=n.stateNode;if(0===(64&n.effectTag)&&("function"===typeof o.getDerivedStateFromError||null!==d&&"function"===typeof d.componentDidCatch&&(null===MB||!MB.has(d)))){n.effectTag|=4096,n.expirationTime=I,AQ(n,ZB(n,F,I));break g}}n=n.return}while(null!==n)}VB=an(VB)}catch(u){I=u;continue}break}}function nn(){var g=RB.current;return RB.current=SF,null===g?SF:g}function Un(g,I){g<EB&&2<g&&(EB=g),null!==I&&g<NB&&2<g&&(NB=g,WB=I)}function sn(g){g>fB&&(fB=g)}function cn(){for(;null!==VB;)VB=ln(VB)}function An(){for(;null!==VB&&!RC();)VB=ln(VB)}function ln(g){var I=mB(g.alternate,g,hB);return g.memoizedProps=g.pendingProps,null===I&&(I=an(g)),SB.current=null,I}function an(g){VB=g;do{var I=VB.alternate;if(g=VB.return,0===(2048&VB.effectTag)){g:{var e=I,t=hB,Q=(I=VB).pendingProps;switch(I.tag){case 2:case 16:break;case 15:case 0:break;case 1:aC(I.type)&&rC();break;case 3:vQ(),oC(),(Q=I.stateNode).pendingContext&&(Q.context=Q.pendingContext,Q.pendingContext=null),(null===e||null===e.child)&&fF(I)&&CB(I);break;case 5:HQ(I),t=XQ(fQ.current);var B=I.type;if(null!==e&&null!=I.stateNode)PF(e,I,B,Q,t),e.ref!==I.ref&&(I.effectTag|=128);else if(Q){var n=XQ(NQ.current);if(fF(I)){var U=(Q=I).stateNode;e=Q.type;var s=Q.memoizedProps,i=t;switch(U[Ct]=Q,U[Qt]=s,B=void 0,t=U,e){case"iframe":case"object":case"embed":xe("load",t);break;case"video":case"audio":for(U=0;U<gI.length;U++)xe(gI[U],t);break;case"source":xe("error",t);break;case"img":case"image":case"link":xe("error",t),xe("load",t);break;case"form":xe("reset",t),xe("submit",t);break;case"details":xe("toggle",t);break;case"input":Gg(t,s),xe("invalid",t),Me(i,"onChange");break;case"select":t._wrapperState={wasMultiple:!!s.multiple},xe("invalid",t),Me(i,"onChange");break;case"textarea":Wg(t,s),xe("invalid",t),Me(i,"onChange")}for(B in ke(e,s),U=null,s)s.hasOwnProperty(B)&&(n=s[B],"children"===B?"string"===typeof n?t.textContent!==n&&(U=["children",n]):"number"===typeof n&&t.textContent!==""+n&&(U=["children",""+n]):A.hasOwnProperty(B)&&null!=n&&Me(i,B));switch(e){case"input":xg(t),hg(t,s,!0);break;case"textarea":xg(t),Xg(t);break;case"select":case"option":break;default:"function"===typeof s.onClick&&(t.onclick=Ye)}B=U,Q.updateQueue=B,(Q=null!==B)&&CB(I)}else{e=I,i=B,s=Q,U=9===t.nodeType?t:t.ownerDocument,n===Jg&&(n=kg(i)),n===Jg?"script"===i?((s=U.createElement("div")).innerHTML="<script><\/script>",U=s.removeChild(s.firstChild)):"string"===typeof s.is?U=U.createElement(i,{is:s.is}):(U=U.createElement(i),"select"===i&&(i=U,s.multiple?i.multiple=!0:s.size&&(i.size=s.size))):U=U.createElementNS(n,i),(s=U)[Ct]=e,s[Qt]=Q,jF(s,I),I.stateNode=s;var c=t,l=He(i=B,e=Q);switch(i){case"iframe":case"object":case"embed":xe("load",s),t=e;break;case"video":case"audio":for(t=0;t<gI.length;t++)xe(gI[t],s);t=e;break;case"source":xe("error",s),t=e;break;case"img":case"image":case"link":xe("error",s),xe("load",s),t=e;break;case"form":xe("reset",s),xe("submit",s),t=e;break;case"details":xe("toggle",s),t=e;break;case"input":Gg(s,e),t=Sg(s,e),xe("invalid",s),Me(c,"onChange");break;case"option":t=pg(s,e);break;case"select":s._wrapperState={wasMultiple:!!e.multiple},t=C({},e,{value:void 0}),xe("invalid",s),Me(c,"onChange");break;case"textarea":Wg(s,e),t=Ng(s,e),xe("invalid",s),Me(c,"onChange");break;default:t=e}ke(i,t),U=void 0,n=i;var a=s,r=t;for(U in r)if(r.hasOwnProperty(U)){var o=r[U];"style"===U?Je(a,o):"dangerouslySetInnerHTML"===U?null!=(o=o?o.__html:void 0)&&Yg(a,o):"children"===U?"string"===typeof o?("textarea"!==n||""!==o)&&wg(a,o):"number"===typeof o&&wg(a,""+o):"suppressContentEditableWarning"!==U&&"suppressHydrationWarning"!==U&&"autoFocus"!==U&&(A.hasOwnProperty(U)?null!=o&&Me(c,U):null!=o&&Zg(a,U,o,l))}switch(i){case"input":xg(s),hg(s,e,!1);break;case"textarea":xg(s),Xg(s);break;case"option":null!=e.value&&s.setAttribute("value",""+bg(e.value));break;case"select":(t=s).multiple=!!e.multiple,null!=(s=e.value)?Eg(t,!!e.multiple,s,!1):null!=e.defaultValue&&Eg(t,!!e.multiple,e.defaultValue,!0);break;default:"function"===typeof t.onClick&&(s.onclick=Ye)}(Q=_e(B,Q))&&CB(I)}null!==I.ref&&(I.effectTag|=128)}else if(null===I.stateNode)throw Error(F(166));break;case 6:if(e&&null!=I.stateNode)_F(0,I,e.memoizedProps,Q);else{if("string"!==typeof Q&&null===I.stateNode)throw Error(F(166));t=XQ(fQ.current),XQ(NQ.current),fF(I)?(B=(Q=I).stateNode,t=Q.memoizedProps,B[Ct]=Q,(Q=B.nodeValue!==t)&&CB(I)):(B=I,(Q=(9===t.nodeType?t:t.ownerDocument).createTextNode(Q))[Ct]=B,I.stateNode=Q)}break;case 11:break;case 13:if(nC(MQ),Q=I.memoizedState,0!==(64&I.effectTag)){I.expirationTime=t;break g}Q=null!==Q,B=!1,null===e?void 0!==I.memoizedProps.fallback&&fF(I):(B=null!==(t=e.memoizedState),Q||null===t||null!==(t=e.child.sibling)&&(null!==(s=I.firstEffect)?(I.firstEffect=t,t.nextEffect=s):(I.firstEffect=I.lastEffect=t,t.nextEffect=null),t.effectTag=8)),Q&&!B&&0!==(2&I.mode)&&(null===e&&!0!==I.memoizedProps.unstable_avoidThisFallback||0!==(1&MQ.current)?0===DB&&(DB=3):(0!==DB&&3!==DB||(DB=4),0!==fB&&null!==LB&&(Jn(LB,hB),vn(LB,fB)))),(Q||B)&&(I.effectTag|=4);break;case 7:case 8:case 12:break;case 4:vQ();break;case 10:tQ(I);break;case 9:case 14:break;case 17:aC(I.type)&&rC();break;case 19:if(nC(MQ),null===(Q=I.memoizedState))break;if(B=0!==(64&I.effectTag),null===(s=Q.rendering)){if(B)QB(Q,!1);else if(0!==DB||null!==e&&0!==(64&e.effectTag))for(e=I.child;null!==e;){if(null!==(s=YQ(e))){for(I.effectTag|=64,QB(Q,!1),null!==(B=s.updateQueue)&&(I.updateQueue=B,I.effectTag|=4),null===Q.lastEffect&&(I.firstEffect=null),I.lastEffect=Q.lastEffect,Q=t,B=I.child;null!==B;)e=Q,(t=B).effectTag&=2,t.nextEffect=null,t.firstEffect=null,t.lastEffect=null,null===(s=t.alternate)?(t.childExpirationTime=0,t.expirationTime=e,t.child=null,t.memoizedProps=null,t.memoizedState=null,t.updateQueue=null,t.dependencies=null):(t.childExpirationTime=s.childExpirationTime,t.expirationTime=s.expirationTime,t.child=s.child,t.memoizedProps=s.memoizedProps,t.memoizedState=s.memoizedState,t.updateQueue=s.updateQueue,e=s.dependencies,t.dependencies=null===e?null:{expirationTime:e.expirationTime,firstContext:e.firstContext,responders:e.responders}),B=B.sibling;UC(MQ,1&MQ.current|2),I=I.child;break g}e=e.sibling}}else{if(!B)if(null!==(e=YQ(s))){if(I.effectTag|=64,B=!0,null!==(t=e.updateQueue)&&(I.updateQueue=t,I.effectTag|=4),QB(Q,!0),null===Q.tail&&"hidden"===Q.tailMode&&!s.alternate){null!==(I=I.lastEffect=Q.lastEffect)&&(I.nextEffect=null);break}}else kC()>Q.tailExpiration&&1<t&&(I.effectTag|=64,B=!0,QB(Q,!1),I.expirationTime=I.childExpirationTime=t-1);Q.isBackwards?(s.sibling=I.child,I.child=s):(null!==(t=Q.last)?t.sibling=s:I.child=s,Q.last=s)}if(null!==Q.tail){0===Q.tailExpiration&&(Q.tailExpiration=kC()+500),t=Q.tail,Q.rendering=t,Q.tail=t.sibling,Q.lastEffect=I.lastEffect,t.sibling=null,Q=MQ.current,UC(MQ,Q=B?1&Q|2:1&Q),I=t;break g}break;case 20:case 21:break;default:throw Error(F(156,I.tag))}I=null}if(Q=VB,1===hB||1!==Q.childExpirationTime){for(B=0,t=Q.child;null!==t;)(e=t.expirationTime)>B&&(B=e),(s=t.childExpirationTime)>B&&(B=s),t=t.sibling;Q.childExpirationTime=B}if(null!==I)return I;null!==g&&0===(2048&g.effectTag)&&(null===g.firstEffect&&(g.firstEffect=VB.firstEffect),null!==VB.lastEffect&&(null!==g.lastEffect&&(g.lastEffect.nextEffect=VB.firstEffect),g.lastEffect=VB.lastEffect),1<VB.effectTag&&(null!==g.lastEffect?g.lastEffect.nextEffect=VB:g.firstEffect=VB,g.lastEffect=VB))}else{if(null!==(I=FB(VB)))return I.effectTag&=2047,I;null!==g&&(g.firstEffect=g.lastEffect=null,g.effectTag|=2048)}if(null!==(I=VB.sibling))return I;VB=g}while(null!==VB);return 0===DB&&(DB=5),null}function rn(g){var I=g.expirationTime;return I>(g=g.childExpirationTime)?I:g}function on(g){var I=HC();return YC(99,dn.bind(null,g,I)),null}function dn(g,I){do{yn()}while(null!==wB);if(0!==(48&GB))throw Error(F(327));var e=g.finishedWork,t=g.finishedExpirationTime;if(null===e)return null;if(g.finishedWork=null,g.finishedExpirationTime=0,e===g.current)throw Error(F(177));g.callbackNode=null,g.callbackExpirationTime=0,g.callbackPriority=90,g.nextKnownPendingLevel=0;var C=rn(e);if(g.firstPendingTime=C,t<=g.lastSuspendedTime?g.firstSuspendedTime=g.lastSuspendedTime=g.nextKnownPendingLevel=0:t<=g.firstSuspendedTime&&(g.firstSuspendedTime=t-1),t<=g.lastPingedTime&&(g.lastPingedTime=0),t<=g.lastExpiredTime&&(g.lastExpiredTime=0),g===LB&&(VB=LB=null,hB=0),1<e.effectTag?null!==e.lastEffect?(e.lastEffect.nextEffect=e,C=e.firstEffect):C=e:C=e.firstEffect,null!==C){var Q=GB;GB|=32,SB.current=null,je=me;var B=Oe();if(Ke(B)){if("selectionStart"in B)var n={start:B.selectionStart,end:B.selectionEnd};else g:{var U=(n=(n=B.ownerDocument)&&n.defaultView||window).getSelection&&n.getSelection();if(U&&0!==U.rangeCount){n=U.anchorNode;var s=U.anchorOffset,i=U.focusNode;U=U.focusOffset;try{n.nodeType,i.nodeType}catch(W){n=null;break g}var c=0,A=-1,l=-1,a=0,r=0,o=B,d=null;I:for(;;){for(var u;o!==n||0!==s&&3!==o.nodeType||(A=c+s),o!==i||0!==U&&3!==o.nodeType||(l=c+U),3===o.nodeType&&(c+=o.nodeValue.length),null!==(u=o.firstChild);)d=o,o=u;for(;;){if(o===B)break I;if(d===n&&++a===s&&(A=c),d===i&&++r===U&&(l=c),null!==(u=o.nextSibling))break;d=(o=d).parentNode}o=u}n=-1===A||-1===l?null:{start:A,end:l}}else n=null}n=n||{start:0,end:0}}else n=null;Pe={focusedElem:B,selectionRange:n},me=!1,vB=C;do{try{un()}catch(W){if(null===vB)throw Error(F(330));mn(vB,W),vB=vB.nextEffect}}while(null!==vB);vB=C;do{try{for(B=g,n=I;null!==vB;){var y=vB.effectTag;if(16&y&&wg(vB.stateNode,""),128&y){var b=vB.alternate;if(null!==b){var Z=b.ref;null!==Z&&("function"===typeof Z?Z(null):Z.current=null)}}switch(1038&y){case 2:rB(vB),vB.effectTag&=-3;break;case 6:rB(vB),vB.effectTag&=-3,dB(vB.alternate,vB);break;case 1024:vB.effectTag&=-1025;break;case 1028:vB.effectTag&=-1025,dB(vB.alternate,vB);break;case 4:dB(vB.alternate,vB);break;case 8:oB(B,s=vB,n),lB(s)}vB=vB.nextEffect}}catch(W){if(null===vB)throw Error(F(330));mn(vB,W),vB=vB.nextEffect}}while(null!==vB);if(Z=Pe,b=Oe(),y=Z.focusedElem,n=Z.selectionRange,b!==y&&y&&y.ownerDocument&&function g(I,e){return!(!I||!e)&&(I===e||(!I||3!==I.nodeType)&&(e&&3===e.nodeType?g(I,e.parentNode):"contains"in I?I.contains(e):!!I.compareDocumentPosition&&!!(16&I.compareDocumentPosition(e))))}(y.ownerDocument.documentElement,y)){null!==n&&Ke(y)&&(b=n.start,void 0===(Z=n.end)&&(Z=b),"selectionStart"in y?(y.selectionStart=b,y.selectionEnd=Math.min(Z,y.value.length)):(Z=(b=y.ownerDocument||document)&&b.defaultView||window).getSelection&&(Z=Z.getSelection(),s=y.textContent.length,B=Math.min(n.start,s),n=void 0===n.end?B:Math.min(n.end,s),!Z.extend&&B>n&&(s=n,n=B,B=s),s=ze(y,B),i=ze(y,n),s&&i&&(1!==Z.rangeCount||Z.anchorNode!==s.node||Z.anchorOffset!==s.offset||Z.focusNode!==i.node||Z.focusOffset!==i.offset)&&((b=b.createRange()).setStart(s.node,s.offset),Z.removeAllRanges(),B>n?(Z.addRange(b),Z.extend(i.node,i.offset)):(b.setEnd(i.node,i.offset),Z.addRange(b))))),b=[];for(Z=y;Z=Z.parentNode;)1===Z.nodeType&&b.push({element:Z,left:Z.scrollLeft,top:Z.scrollTop});for("function"===typeof y.focus&&y.focus(),y=0;y<b.length;y++)(Z=b[y]).element.scrollLeft=Z.left,Z.element.scrollTop=Z.top}Pe=null,me=!!je,je=null,g.current=e,vB=C;do{try{for(y=t;null!==vB;){var m=vB.effectTag;if(36&m){var x=vB.alternate;switch(Z=y,(b=vB).tag){case 0:case 11:case 15:cB(16,32,b);break;case 1:var R=b.stateNode;if(4&b.effectTag)if(null===x)R.componentDidMount();else{var S=b.elementType===b.type?x.memoizedProps:PC(b.type,x.memoizedProps);R.componentDidUpdate(S,x.memoizedState,R.__reactInternalSnapshotBeforeUpdate)}var G=b.updateQueue;null!==G&&oQ(0,G,R);break;case 3:var L=b.updateQueue;if(null!==L){if(B=null,null!==b.child)switch(b.child.tag){case 5:B=b.child.stateNode;break;case 1:B=b.child.stateNode}oQ(0,L,B)}break;case 5:var V=b.stateNode;null===x&&4&b.effectTag&&_e(b.type,b.memoizedProps)&&V.focus();break;case 6:case 4:case 12:break;case 13:if(null===b.memoizedState){var h=b.alternate;if(null!==h){var D=h.memoizedState;if(null!==D){var p=D.dehydrated;null!==p&&SI(p)}}}break;case 19:case 17:case 20:case 21:break;default:throw Error(F(163))}}if(128&m){b=void 0;var E=vB.ref;if(null!==E){var N=vB.stateNode;switch(vB.tag){case 5:b=N;break;default:b=N}"function"===typeof E?E(b):E.current=b}}vB=vB.nextEffect}}catch(W){if(null===vB)throw Error(F(330));mn(vB,W),vB=vB.nextEffect}}while(null!==vB);vB=null,WC(),GB=Q}else g.current=e;if(YB)YB=!1,wB=g,TB=I;else for(vB=C;null!==vB;)I=vB.nextEffect,vB.nextEffect=null,vB=I;if(0===(I=g.firstPendingTime)&&(MB=null),1073741823===I?g===KB?OB++:(OB=0,KB=g):OB=0,"function"===typeof Sn&&Sn(e.stateNode,t),In(g),kB)throw kB=!1,g=HB,HB=null,g;return 0!==(8&GB)||zC(),null}function un(){for(;null!==vB;){var g=vB.effectTag;0!==(256&g)&&iB(vB.alternate,vB),0===(512&g)||YB||(YB=!0,wC(97,(function(){return yn(),null}))),vB=vB.nextEffect}}function yn(){if(90!==TB){var g=97<TB?97:TB;return TB=90,YC(g,bn)}}function bn(){if(null===wB)return!1;var g=wB;if(wB=null,0!==(48&GB))throw Error(F(331));var I=GB;for(GB|=32,g=g.current.firstEffect;null!==g;){try{var e=g;if(0!==(512&e.effectTag))switch(e.tag){case 0:case 11:case 15:cB(128,0,e),cB(0,64,e)}}catch(t){if(null===g)throw Error(F(330));mn(g,t)}e=g.nextEffect,g.nextEffect=null,g=e}return GB=I,zC(),!0}function Zn(g,I,e){cQ(g,I=bB(g,I=BB(e,I),1073741823)),null!==(g=$B(g,1073741823))&&In(g)}function mn(g,I){if(3===g.tag)Zn(g,g,I);else for(var e=g.return;null!==e;){if(3===e.tag){Zn(e,g,I);break}if(1===e.tag){var t=e.stateNode;if("function"===typeof e.type.getDerivedStateFromError||"function"===typeof t.componentDidCatch&&(null===MB||!MB.has(t))){cQ(e,g=ZB(e,g=BB(I,g),1073741823)),null!==(e=$B(e,1073741823))&&In(e);break}}e=e.return}}function xn(g,I,e){var t=g.pingCache;null!==t&&t.delete(I),LB===g&&hB===e?4===DB||3===DB&&1073741823===EB&&kC()-JB<500?Fn(g,hB):XB=!0:Xn(g,e)&&(0!==(I=g.lastPingedTime)&&I<e||(g.lastPingedTime=e,g.finishedExpirationTime===e&&(g.finishedExpirationTime=0,g.finishedWork=null),In(g)))}function Rn(g,I){var e=g.stateNode;null!==e&&e.delete(I),0===(I=0)&&(I=_B(I=PB(),g,null)),null!==(g=$B(g,I))&&In(g)}mB=function(g,I,e){var t=I.expirationTime;if(null!==g){var C=I.pendingProps;if(g.memoizedProps!==C||cC.current)vF=!0;else{if(t<e){switch(vF=!1,I.tag){case 3:KF(I),XF();break;case 5:if(kQ(I),4&I.mode&&1!==e&&C.hidden)return I.expirationTime=I.childExpirationTime=1,null;break;case 1:aC(I.type)&&yC(I);break;case 4:JQ(I,I.stateNode.containerInfo);break;case 10:eQ(I,I.memoizedProps.value);break;case 13:if(null!==I.memoizedState)return 0!==(t=I.child.childExpirationTime)&&t>=e?$F(g,I,e):(UC(MQ,1&MQ.current),null!==(I=tB(g,I,e))?I.sibling:null);UC(MQ,1&MQ.current);break;case 19:if(t=I.childExpirationTime>=e,0!==(64&g.effectTag)){if(t)return eB(g,I,e);I.effectTag|=64}if(null!==(C=I.memoizedState)&&(C.rendering=null,C.tail=null),UC(MQ,MQ.current),!t)return null}return tB(g,I,e)}vF=!1}}else vF=!1;switch(I.expirationTime=0,I.tag){case 2:if(t=I.type,null!==g&&(g.alternate=null,I.alternate=null,I.effectTag|=2),g=I.pendingProps,C=lC(I,iC.current),QQ(I,e),C=nF(null,I,t,g,C,e),I.effectTag|=1,"object"===typeof C&&null!==C&&"function"===typeof C.render&&void 0===C.$$typeof){if(I.tag=1,UF(),aC(t)){var Q=!0;yC(I)}else Q=!1;I.memoizedState=null!==C.state&&void 0!==C.state?C.state:null;var B=t.getDerivedStateFromProps;"function"===typeof B&&bQ(I,t,B,g),C.updater=ZQ,I.stateNode=C,C._reactInternalFiber=I,SQ(I,t,g,e),I=OF(null,I,t,!0,Q,e)}else I.tag=0,kF(null,I,C,e),I=I.child;return I;case 16:if(C=I.elementType,null!==g&&(g.alternate=null,I.alternate=null,I.effectTag|=2),g=I.pendingProps,function(g){if(-1===g._status){g._status=0;var I=g._ctor;I=I(),g._result=I,I.then((function(I){0===g._status&&(I=I.default,g._status=1,g._result=I)}),(function(I){0===g._status&&(g._status=2,g._result=I)}))}}(C),1!==C._status)throw C._result;switch(C=C._result,I.type=C,Q=I.tag=function(g){if("function"===typeof g)return hn(g)?1:0;if(void 0!==g&&null!==g){if((g=g.$$typeof)===w)return 11;if(g===O)return 14}return 2}(C),g=PC(C,g),Q){case 0:I=TF(null,I,C,g,e);break;case 1:I=zF(null,I,C,g,e);break;case 11:I=HF(null,I,C,g,e);break;case 14:I=MF(null,I,C,PC(C.type,g),t,e);break;default:throw Error(F(306,C,""))}return I;case 0:return t=I.type,C=I.pendingProps,TF(g,I,t,C=I.elementType===t?C:PC(t,C),e);case 1:return t=I.type,C=I.pendingProps,zF(g,I,t,C=I.elementType===t?C:PC(t,C),e);case 3:if(KF(I),null===(t=I.updateQueue))throw Error(F(282));if(C=null!==(C=I.memoizedState)?C.element:null,rQ(I,t,I.pendingProps,null,e),(t=I.memoizedState.element)===C)XF(),I=tB(g,I,e);else{if((C=I.stateNode.hydrate)&&(hF=It(I.stateNode.containerInfo.firstChild),VF=I,C=DF=!0),C)for(e=pQ(I,null,t,e),I.child=e;e;)e.effectTag=-3&e.effectTag|1024,e=e.sibling;else kF(g,I,t,e),XF();I=I.child}return I;case 5:return kQ(I),null===g&&NF(I),t=I.type,C=I.pendingProps,Q=null!==g?g.memoizedProps:null,B=C.children,qe(t,C)?B=null:null!==Q&&qe(t,Q)&&(I.effectTag|=16),wF(g,I),4&I.mode&&1!==e&&C.hidden?(I.expirationTime=I.childExpirationTime=1,I=null):(kF(g,I,B,e),I=I.child),I;case 6:return null===g&&NF(I),null;case 13:return $F(g,I,e);case 4:return JQ(I,I.stateNode.containerInfo),t=I.pendingProps,null===g?I.child=DQ(I,null,t,e):kF(g,I,t,e),I.child;case 11:return t=I.type,C=I.pendingProps,HF(g,I,t,C=I.elementType===t?C:PC(t,C),e);case 7:return kF(g,I,I.pendingProps,e),I.child;case 8:case 12:return kF(g,I,I.pendingProps.children,e),I.child;case 10:g:{if(t=I.type._context,C=I.pendingProps,B=I.memoizedProps,eQ(I,Q=C.value),null!==B){var n=B.value;if(0===(Q=jt(n,Q)?0:0|("function"===typeof t._calculateChangedBits?t._calculateChangedBits(n,Q):1073741823))){if(B.children===C.children&&!cC.current){I=tB(g,I,e);break g}}else for(null!==(n=I.child)&&(n.return=I);null!==n;){var U=n.dependencies;if(null!==U){B=n.child;for(var s=U.firstContext;null!==s;){if(s.context===t&&0!==(s.observedBits&Q)){1===n.tag&&((s=sQ(e,null)).tag=2,cQ(n,s)),n.expirationTime<e&&(n.expirationTime=e),null!==(s=n.alternate)&&s.expirationTime<e&&(s.expirationTime=e),CQ(n.return,e),U.expirationTime<e&&(U.expirationTime=e);break}s=s.next}}else B=10===n.tag&&n.type===I.type?null:n.child;if(null!==B)B.return=n;else for(B=n;null!==B;){if(B===I){B=null;break}if(null!==(n=B.sibling)){n.return=B.return,B=n;break}B=B.return}n=B}}kF(g,I,C.children,e),I=I.child}return I;case 9:return C=I.type,t=(Q=I.pendingProps).children,QQ(I,e),t=t(C=FQ(C,Q.unstable_observedBits)),I.effectTag|=1,kF(g,I,t,e),I.child;case 14:return Q=PC(C=I.type,I.pendingProps),MF(g,I,C,Q=PC(C.type,Q),t,e);case 15:return YF(g,I,I.type,I.pendingProps,t,e);case 17:return t=I.type,C=I.pendingProps,C=I.elementType===t?C:PC(t,C),null!==g&&(g.alternate=null,I.alternate=null,I.effectTag|=2),I.tag=1,aC(t)?(g=!0,yC(I)):g=!1,QQ(I,e),xQ(I,t,C),SQ(I,t,C,e),OF(null,I,t,!0,g,e);case 19:return eB(g,I,e)}throw Error(F(156,I.tag))};var Sn=null,Gn=null;function Ln(g,I,e,t){this.tag=g,this.key=e,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=I,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=t,this.effectTag=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childExpirationTime=this.expirationTime=0,this.alternate=null}function Vn(g,I,e,t){return new Ln(g,I,e,t)}function hn(g){return!(!(g=g.prototype)||!g.isReactComponent)}function Dn(g,I){var e=g.alternate;return null===e?((e=Vn(g.tag,I,g.key,g.mode)).elementType=g.elementType,e.type=g.type,e.stateNode=g.stateNode,e.alternate=g,g.alternate=e):(e.pendingProps=I,e.effectTag=0,e.nextEffect=null,e.firstEffect=null,e.lastEffect=null),e.childExpirationTime=g.childExpirationTime,e.expirationTime=g.expirationTime,e.child=g.child,e.memoizedProps=g.memoizedProps,e.memoizedState=g.memoizedState,e.updateQueue=g.updateQueue,I=g.dependencies,e.dependencies=null===I?null:{expirationTime:I.expirationTime,firstContext:I.firstContext,responders:I.responders},e.sibling=g.sibling,e.index=g.index,e.ref=g.ref,e}function pn(g,I,e,t,C,Q){var B=2;if(t=g,"function"===typeof g)hn(g)&&(B=1);else if("string"===typeof g)B=5;else g:switch(g){case J:return En(e.children,C,Q,I);case Y:B=8,C|=7;break;case v:B=8,C|=1;break;case k:return(g=Vn(12,e,I,8|C)).elementType=k,g.type=k,g.expirationTime=Q,g;case T:return(g=Vn(13,e,I,C)).type=T,g.elementType=T,g.expirationTime=Q,g;case z:return(g=Vn(19,e,I,C)).elementType=z,g.expirationTime=Q,g;default:if("object"===typeof g&&null!==g)switch(g.$$typeof){case H:B=10;break g;case M:B=9;break g;case w:B=11;break g;case O:B=14;break g;case K:B=16,t=null;break g}throw Error(F(130,null==g?g:typeof g,""))}return(I=Vn(B,e,I,C)).elementType=g,I.type=t,I.expirationTime=Q,I}function En(g,I,e,t){return(g=Vn(7,g,t,I)).expirationTime=e,g}function Nn(g,I,e){return(g=Vn(6,g,null,I)).expirationTime=e,g}function Wn(g,I,e){return(I=Vn(4,null!==g.children?g.children:[],g.key,I)).expirationTime=e,I.stateNode={containerInfo:g.containerInfo,pendingChildren:null,implementation:g.implementation},I}function fn(g,I,e){this.tag=I,this.current=null,this.containerInfo=g,this.pingCache=this.pendingChildren=null,this.finishedExpirationTime=0,this.finishedWork=null,this.timeoutHandle=-1,this.pendingContext=this.context=null,this.hydrate=e,this.callbackNode=null,this.callbackPriority=90,this.lastExpiredTime=this.lastPingedTime=this.nextKnownPendingLevel=this.lastSuspendedTime=this.firstSuspendedTime=this.firstPendingTime=0}function Xn(g,I){var e=g.firstSuspendedTime;return g=g.lastSuspendedTime,0!==e&&e>=I&&g<=I}function Jn(g,I){var e=g.firstSuspendedTime,t=g.lastSuspendedTime;e<I&&(g.firstSuspendedTime=I),(t>I||0===e)&&(g.lastSuspendedTime=I),I<=g.lastPingedTime&&(g.lastPingedTime=0),I<=g.lastExpiredTime&&(g.lastExpiredTime=0)}function vn(g,I){I>g.firstPendingTime&&(g.firstPendingTime=I);var e=g.firstSuspendedTime;0!==e&&(I>=e?g.firstSuspendedTime=g.lastSuspendedTime=g.nextKnownPendingLevel=0:I>=g.lastSuspendedTime&&(g.lastSuspendedTime=I+1),I>g.nextKnownPendingLevel&&(g.nextKnownPendingLevel=I))}function kn(g,I){var e=g.lastExpiredTime;(0===e||e>I)&&(g.lastExpiredTime=I)}function Hn(g,I,e,t){var C=I.current,Q=PB(),B=uQ.suspense;Q=_B(Q,C,B);g:if(e){I:{if(II(e=e._reactInternalFiber)!==e||1!==e.tag)throw Error(F(170));var n=e;do{switch(n.tag){case 3:n=n.stateNode.context;break I;case 1:if(aC(n.type)){n=n.stateNode.__reactInternalMemoizedMergedChildContext;break I}}n=n.return}while(null!==n);throw Error(F(171))}if(1===e.tag){var U=e.type;if(aC(U)){e=uC(e,U,n);break g}}e=n}else e=sC;return null===I.context?I.context=e:I.pendingContext=e,(I=sQ(Q,B)).payload={element:g},null!==(t=void 0===t?null:t)&&(I.callback=t),cQ(C,I),qB(C,Q),Q}function Mn(g){if(!(g=g.current).child)return null;switch(g.child.tag){case 5:default:return g.child.stateNode}}function Yn(g,I){null!==(g=g.memoizedState)&&null!==g.dehydrated&&g.retryTime<I&&(g.retryTime=I)}function wn(g,I){Yn(g,I),(g=g.alternate)&&Yn(g,I)}function Tn(g,I,e){var t=new fn(g,I,e=null!=e&&!0===e.hydrate),C=Vn(3,null,null,2===I?7:1===I?3:0);t.current=C,C.stateNode=t,g[Ft]=t.current,e&&0!==I&&function(g){var I=Ee(g);rI.forEach((function(e){Ne(e,g,I)})),oI.forEach((function(e){Ne(e,g,I)}))}(9===g.nodeType?g:g.ownerDocument),this._internalRoot=t}function zn(g){return!(!g||1!==g.nodeType&&9!==g.nodeType&&11!==g.nodeType&&(8!==g.nodeType||" react-mount-point-unstable "!==g.nodeValue))}function On(g,I,e,t,C){var Q=e._reactRootContainer;if(Q){var F=Q._internalRoot;if("function"===typeof C){var B=C;C=function(){var g=Mn(F);B.call(g)}}Hn(I,F,g,C)}else{if(Q=e._reactRootContainer=function(g,I){if(I||(I=!(!(I=g?9===g.nodeType?g.documentElement:g.firstChild:null)||1!==I.nodeType||!I.hasAttribute("data-reactroot"))),!I)for(var e;e=g.lastChild;)g.removeChild(e);return new Tn(g,0,I?{hydrate:!0}:void 0)}(e,t),F=Q._internalRoot,"function"===typeof C){var n=C;C=function(){var g=Mn(F);n.call(g)}}Qn((function(){Hn(I,F,g,C)}))}return Mn(F)}function Kn(g,I,e){var t=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:X,key:null==t?null:""+t,children:g,containerInfo:I,implementation:e}}function jn(g,I){var e=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!zn(I))throw Error(F(200));return Kn(g,I,null,e)}Tn.prototype.render=function(g,I){Hn(g,this._internalRoot,null,void 0===I?null:I)},Tn.prototype.unmount=function(g){var I=this._internalRoot,e=void 0===g?null:g,t=I.containerInfo;Hn(null,I,null,(function(){t[Ft]=null,null!==e&&e()}))},QI=function(g){if(13===g.tag){var I=jC(PB(),150,100);qB(g,I),wn(g,I)}},FI=function(g){if(13===g.tag){PB();var I=KC++;qB(g,I),wn(g,I)}},BI=function(g){if(13===g.tag){var I=PB();qB(g,I=_B(I,g,null)),wn(g,I)}},gg=function(g,I,e){switch(I){case"input":if(Vg(g,e),I=e.name,"radio"===e.type&&null!=I){for(e=g;e.parentNode;)e=e.parentNode;for(e=e.querySelectorAll("input[name="+JSON.stringify(""+I)+'][type="radio"]'),I=0;I<e.length;I++){var t=e[I];if(t!==g&&t.form===g.form){var C=st(t);if(!C)throw Error(F(90));Rg(t),Vg(t,C)}}}break;case"textarea":fg(g,e);break;case"select":null!=(I=e.value)&&Eg(g,!!e.multiple,I,!1)}},Fg=Cn,Bg=function(g,I,e,t){var C=GB;GB|=4;try{return YC(98,g.bind(null,I,e,t))}finally{0===(GB=C)&&zC()}},ng=function(){0===(49&GB)&&(function(){if(null!==zB){var g=zB;zB=null,g.forEach((function(g,I){kn(I,g),In(I)})),zC()}}(),yn())},Ug=function(g,I){var e=GB;GB|=2;try{return g(I)}finally{0===(GB=e)&&zC()}};var Pn={createPortal:jn,findDOMNode:function(g){if(null==g)return null;if(1===g.nodeType)return g;var I=g._reactInternalFiber;if(void 0===I){if("function"===typeof g.render)throw Error(F(188));throw Error(F(268,Object.keys(g)))}return g=null===(g=CI(I))?null:g.stateNode},hydrate:function(g,I,e){if(!zn(I))throw Error(F(200));return On(null,g,I,!0,e)},render:function(g,I,e){if(!zn(I))throw Error(F(200));return On(null,g,I,!1,e)},unstable_renderSubtreeIntoContainer:function(g,I,e,t){if(!zn(e))throw Error(F(200));if(null==g||void 0===g._reactInternalFiber)throw Error(F(38));return On(g,I,e,!1,t)},unmountComponentAtNode:function(g){if(!zn(g))throw Error(F(40));return!!g._reactRootContainer&&(Qn((function(){On(null,null,g,!1,(function(){g._reactRootContainer=null,g[Ft]=null}))})),!0)},unstable_createPortal:function(){return jn.apply(void 0,arguments)},unstable_batchedUpdates:Cn,flushSync:function(g,I){if(0!==(48&GB))throw Error(F(187));var e=GB;GB|=1;try{return YC(99,g.bind(null,I))}finally{GB=e,zC()}},__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{Events:[nt,Ut,st,D.injectEventPluginsByName,c,EI,function(g){G(g,pI)},Cg,Qg,Ve,h,yn,{current:!1}]}};!function(g){var I=g.findFiberByHostInstance;(function(g){if("undefined"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var I=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(I.isDisabled||!I.supportsFiber)return!0;try{var e=I.inject(g);Sn=function(g){try{I.onCommitFiberRoot(e,g,void 0,64===(64&g.current.effectTag))}catch(t){}},Gn=function(g){try{I.onCommitFiberUnmount(e,g)}catch(t){}}}catch(t){}})(C({},g,{overrideHookState:null,overrideProps:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:E.ReactCurrentDispatcher,findHostInstanceByFiber:function(g){return null===(g=CI(g))?null:g.stateNode},findFiberByHostInstance:function(g){return I?I(g):null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null}))}({findFiberByHostInstance:Bt,bundleType:0,version:"16.12.0",rendererPackageName:"react-dom"});var _n={default:Pn},qn=_n&&Pn||_n;g.exports=qn.default||qn},function(g,I,e){"use strict";g.exports=e(1157)},function(g,I,e){"use strict";var t,C,Q,F,B;if(Object.defineProperty(I,"__esModule",{value:!0}),"undefined"===typeof window||"function"!==typeof MessageChannel){var n=null,U=null,s=function g(){if(null!==n)try{var e=I.unstable_now();n(!0,e),n=null}catch(t){throw setTimeout(g,0),t}},i=Date.now();I.unstable_now=function(){return Date.now()-i},t=function(g){null!==n?setTimeout(t,0,g):(n=g,setTimeout(s,0))},C=function(g,I){U=setTimeout(g,I)},Q=function(){clearTimeout(U)},F=function(){return!1},B=I.unstable_forceFrameRate=function(){}}else{var c=window.performance,A=window.Date,l=window.setTimeout,a=window.clearTimeout;if("undefined"!==typeof console){var r=window.cancelAnimationFrame;"function"!==typeof window.requestAnimationFrame&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"),"function"!==typeof r&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills")}if("object"===typeof c&&"function"===typeof c.now)I.unstable_now=function(){return c.now()};else{var o=A.now();I.unstable_now=function(){return A.now()-o}}var d=!1,u=null,y=-1,b=5,Z=0;F=function(){return I.unstable_now()>=Z},B=function(){},I.unstable_forceFrameRate=function(g){0>g||125<g?console.error("forceFrameRate takes a positive int between 0 and 125, forcing framerates higher than 125 fps is not unsupported"):b=0<g?Math.floor(1e3/g):5};var m=new MessageChannel,x=m.port2;m.port1.onmessage=function(){if(null!==u){var g=I.unstable_now();Z=g+b;try{u(!0,g)?x.postMessage(null):(d=!1,u=null)}catch(e){throw x.postMessage(null),e}}else d=!1},t=function(g){u=g,d||(d=!0,x.postMessage(null))},C=function(g,e){y=l((function(){g(I.unstable_now())}),e)},Q=function(){a(y),y=-1}}function R(g,I){var e=g.length;g.push(I);g:for(;;){var t=Math.floor((e-1)/2),C=g[t];if(!(void 0!==C&&0<L(C,I)))break g;g[t]=I,g[e]=C,e=t}}function S(g){return void 0===(g=g[0])?null:g}function G(g){var I=g[0];if(void 0!==I){var e=g.pop();if(e!==I){g[0]=e;g:for(var t=0,C=g.length;t<C;){var Q=2*(t+1)-1,F=g[Q],B=Q+1,n=g[B];if(void 0!==F&&0>L(F,e))void 0!==n&&0>L(n,F)?(g[t]=n,g[B]=e,t=B):(g[t]=F,g[Q]=e,t=Q);else{if(!(void 0!==n&&0>L(n,e)))break g;g[t]=n,g[B]=e,t=B}}}return I}return null}function L(g,I){var e=g.sortIndex-I.sortIndex;return 0!==e?e:g.id-I.id}var V=[],h=[],D=1,p=null,E=3,N=!1,W=!1,f=!1;function X(g){for(var I=S(h);null!==I;){if(null===I.callback)G(h);else{if(!(I.startTime<=g))break;G(h),I.sortIndex=I.expirationTime,R(V,I)}I=S(h)}}function J(g){if(f=!1,X(g),!W)if(null!==S(V))W=!0,t(v);else{var I=S(h);null!==I&&C(J,I.startTime-g)}}function v(g,e){W=!1,f&&(f=!1,Q()),N=!0;var t=E;try{for(X(e),p=S(V);null!==p&&(!(p.expirationTime>e)||g&&!F());){var B=p.callback;if(null!==B){p.callback=null,E=p.priorityLevel;var n=B(p.expirationTime<=e);e=I.unstable_now(),"function"===typeof n?p.callback=n:p===S(V)&&G(V),X(e)}else G(V);p=S(V)}if(null!==p)var U=!0;else{var s=S(h);null!==s&&C(J,s.startTime-e),U=!1}return U}finally{p=null,E=t,N=!1}}function k(g){switch(g){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1e4;default:return 5e3}}var H=B;I.unstable_ImmediatePriority=1,I.unstable_UserBlockingPriority=2,I.unstable_NormalPriority=3,I.unstable_IdlePriority=5,I.unstable_LowPriority=4,I.unstable_runWithPriority=function(g,I){switch(g){case 1:case 2:case 3:case 4:case 5:break;default:g=3}var e=E;E=g;try{return I()}finally{E=e}},I.unstable_next=function(g){switch(E){case 1:case 2:case 3:var I=3;break;default:I=E}var e=E;E=I;try{return g()}finally{E=e}},I.unstable_scheduleCallback=function(g,e,F){var B=I.unstable_now();if("object"===typeof F&&null!==F){var n=F.delay;n="number"===typeof n&&0<n?B+n:B,F="number"===typeof F.timeout?F.timeout:k(g)}else F=k(g),n=B;return g={id:D++,callback:e,priorityLevel:g,startTime:n,expirationTime:F=n+F,sortIndex:-1},n>B?(g.sortIndex=n,R(h,g),null===S(V)&&g===S(h)&&(f?Q():f=!0,C(J,n-B))):(g.sortIndex=F,R(V,g),W||N||(W=!0,t(v))),g},I.unstable_cancelCallback=function(g){g.callback=null},I.unstable_wrapCallback=function(g){var I=E;return function(){var e=E;E=I;try{return g.apply(this,arguments)}finally{E=e}}},I.unstable_getCurrentPriorityLevel=function(){return E},I.unstable_shouldYield=function(){var g=I.unstable_now();X(g);var e=S(V);return e!==p&&null!==p&&null!==e&&null!==e.callback&&e.startTime<=g&&e.expirationTime<p.expirationTime||F()},I.unstable_requestPaint=H,I.unstable_continueExecution=function(){W||N||(W=!0,t(v))},I.unstable_pauseExecution=function(){},I.unstable_getFirstCallbackNode=function(){return S(V)},I.unstable_Profiling=null},,function(g,I,e){},function(g,I,e){var t=function(g){"use strict";var I=Object.prototype,e=I.hasOwnProperty,t="function"===typeof Symbol?Symbol:{},C=t.iterator||"@@iterator",Q=t.asyncIterator||"@@asyncIterator",F=t.toStringTag||"@@toStringTag";function B(g,I,e){return Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}),g[I]}try{B({},"")}catch(S){B=function(g,I,e){return g[I]=e}}function n(g,I,e,t){var C=I&&I.prototype instanceof i?I:i,Q=Object.create(C.prototype),F=new m(t||[]);return Q._invoke=function(g,I,e){var t="suspendedStart";return function(C,Q){if("executing"===t)throw new Error("Generator is already running");if("completed"===t){if("throw"===C)throw Q;return R()}for(e.method=C,e.arg=Q;;){var F=e.delegate;if(F){var B=y(F,e);if(B){if(B===s)continue;return B}}if("next"===e.method)e.sent=e._sent=e.arg;else if("throw"===e.method){if("suspendedStart"===t)throw t="completed",e.arg;e.dispatchException(e.arg)}else"return"===e.method&&e.abrupt("return",e.arg);t="executing";var n=U(g,I,e);if("normal"===n.type){if(t=e.done?"completed":"suspendedYield",n.arg===s)continue;return{value:n.arg,done:e.done}}"throw"===n.type&&(t="completed",e.method="throw",e.arg=n.arg)}}}(g,e,F),Q}function U(g,I,e){try{return{type:"normal",arg:g.call(I,e)}}catch(S){return{type:"throw",arg:S}}}g.wrap=n;var s={};function i(){}function c(){}function A(){}var l={};l[C]=function(){return this};var a=Object.getPrototypeOf,r=a&&a(a(x([])));r&&r!==I&&e.call(r,C)&&(l=r);var o=A.prototype=i.prototype=Object.create(l);function d(g){["next","throw","return"].forEach((function(I){B(g,I,(function(g){return this._invoke(I,g)}))}))}function u(g,I){var t;this._invoke=function(C,Q){function F(){return new I((function(t,F){!function t(C,Q,F,B){var n=U(g[C],g,Q);if("throw"!==n.type){var s=n.arg,i=s.value;return i&&"object"===typeof i&&e.call(i,"__await")?I.resolve(i.__await).then((function(g){t("next",g,F,B)}),(function(g){t("throw",g,F,B)})):I.resolve(i).then((function(g){s.value=g,F(s)}),(function(g){return t("throw",g,F,B)}))}B(n.arg)}(C,Q,t,F)}))}return t=t?t.then(F,F):F()}}function y(g,I){var e=g.iterator[I.method];if(void 0===e){if(I.delegate=null,"throw"===I.method){if(g.iterator.return&&(I.method="return",I.arg=void 0,y(g,I),"throw"===I.method))return s;I.method="throw",I.arg=new TypeError("The iterator does not provide a 'throw' method")}return s}var t=U(e,g.iterator,I.arg);if("throw"===t.type)return I.method="throw",I.arg=t.arg,I.delegate=null,s;var C=t.arg;return C?C.done?(I[g.resultName]=C.value,I.next=g.nextLoc,"return"!==I.method&&(I.method="next",I.arg=void 0),I.delegate=null,s):C:(I.method="throw",I.arg=new TypeError("iterator result is not an object"),I.delegate=null,s)}function b(g){var I={tryLoc:g[0]};1 in g&&(I.catchLoc=g[1]),2 in g&&(I.finallyLoc=g[2],I.afterLoc=g[3]),this.tryEntries.push(I)}function Z(g){var I=g.completion||{};I.type="normal",delete I.arg,g.completion=I}function m(g){this.tryEntries=[{tryLoc:"root"}],g.forEach(b,this),this.reset(!0)}function x(g){if(g){var I=g[C];if(I)return I.call(g);if("function"===typeof g.next)return g;if(!isNaN(g.length)){var t=-1,Q=function I(){for(;++t<g.length;)if(e.call(g,t))return I.value=g[t],I.done=!1,I;return I.value=void 0,I.done=!0,I};return Q.next=Q}}return{next:R}}function R(){return{value:void 0,done:!0}}return c.prototype=o.constructor=A,A.constructor=c,c.displayName=B(A,F,"GeneratorFunction"),g.isGeneratorFunction=function(g){var I="function"===typeof g&&g.constructor;return!!I&&(I===c||"GeneratorFunction"===(I.displayName||I.name))},g.mark=function(g){return Object.setPrototypeOf?Object.setPrototypeOf(g,A):(g.__proto__=A,B(g,F,"GeneratorFunction")),g.prototype=Object.create(o),g},g.awrap=function(g){return{__await:g}},d(u.prototype),u.prototype[Q]=function(){return this},g.AsyncIterator=u,g.async=function(I,e,t,C,Q){void 0===Q&&(Q=Promise);var F=new u(n(I,e,t,C),Q);return g.isGeneratorFunction(e)?F:F.next().then((function(g){return g.done?g.value:F.next()}))},d(o),B(o,F,"Generator"),o[C]=function(){return this},o.toString=function(){return"[object Generator]"},g.keys=function(g){var I=[];for(var e in g)I.push(e);return I.reverse(),function e(){for(;I.length;){var t=I.pop();if(t in g)return e.value=t,e.done=!1,e}return e.done=!0,e}},g.values=x,m.prototype={constructor:m,reset:function(g){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(Z),!g)for(var I in this)"t"===I.charAt(0)&&e.call(this,I)&&!isNaN(+I.slice(1))&&(this[I]=void 0)},stop:function(){this.done=!0;var g=this.tryEntries[0].completion;if("throw"===g.type)throw g.arg;return this.rval},dispatchException:function(g){if(this.done)throw g;var I=this;function t(e,t){return F.type="throw",F.arg=g,I.next=e,t&&(I.method="next",I.arg=void 0),!!t}for(var C=this.tryEntries.length-1;C>=0;--C){var Q=this.tryEntries[C],F=Q.completion;if("root"===Q.tryLoc)return t("end");if(Q.tryLoc<=this.prev){var B=e.call(Q,"catchLoc"),n=e.call(Q,"finallyLoc");if(B&&n){if(this.prev<Q.catchLoc)return t(Q.catchLoc,!0);if(this.prev<Q.finallyLoc)return t(Q.finallyLoc)}else if(B){if(this.prev<Q.catchLoc)return t(Q.catchLoc,!0)}else{if(!n)throw new Error("try statement without catch or finally");if(this.prev<Q.finallyLoc)return t(Q.finallyLoc)}}}},abrupt:function(g,I){for(var t=this.tryEntries.length-1;t>=0;--t){var C=this.tryEntries[t];if(C.tryLoc<=this.prev&&e.call(C,"finallyLoc")&&this.prev<C.finallyLoc){var Q=C;break}}Q&&("break"===g||"continue"===g)&&Q.tryLoc<=I&&I<=Q.finallyLoc&&(Q=null);var F=Q?Q.completion:{};return F.type=g,F.arg=I,Q?(this.method="next",this.next=Q.finallyLoc,s):this.complete(F)},complete:function(g,I){if("throw"===g.type)throw g.arg;return"break"===g.type||"continue"===g.type?this.next=g.arg:"return"===g.type?(this.rval=this.arg=g.arg,this.method="return",this.next="end"):"normal"===g.type&&I&&(this.next=I),s},finish:function(g){for(var I=this.tryEntries.length-1;I>=0;--I){var e=this.tryEntries[I];if(e.finallyLoc===g)return this.complete(e.completion,e.afterLoc),Z(e),s}},catch:function(g){for(var I=this.tryEntries.length-1;I>=0;--I){var e=this.tryEntries[I];if(e.tryLoc===g){var t=e.completion;if("throw"===t.type){var C=t.arg;Z(e)}return C}}throw new Error("illegal catch attempt")},delegateYield:function(g,I,e){return this.delegate={iterator:x(g),resultName:I,nextLoc:e},"next"===this.method&&(this.arg=void 0),s}},g}(g.exports);try{regeneratorRuntime=t}catch(C){Function("r","regeneratorRuntime = r")(t)}},,function(g,I,e){"use strict";var t=e(657);function C(){}function Q(){}Q.resetWarningCache=C,g.exports=function(){function g(g,I,e,C,Q,F){if(F!==t){var B=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw B.name="Invariant Violation",B}}function I(){return g}g.isRequired=g;var e={array:g,bool:g,func:g,number:g,object:g,string:g,symbol:g,any:g,arrayOf:I,element:g,elementType:g,instanceOf:I,node:g,objectOf:I,oneOf:I,oneOfType:I,shape:I,exact:I,checkPropTypes:Q,resetWarningCache:C};return e.PropTypes=e,e}},function(g,I,e){"use strict";var t="function"===typeof Symbol&&Symbol.for,C=t?Symbol.for("react.element"):60103,Q=t?Symbol.for("react.portal"):60106,F=t?Symbol.for("react.fragment"):60107,B=t?Symbol.for("react.strict_mode"):60108,n=t?Symbol.for("react.profiler"):60114,U=t?Symbol.for("react.provider"):60109,s=t?Symbol.for("react.context"):60110,i=t?Symbol.for("react.async_mode"):60111,c=t?Symbol.for("react.concurrent_mode"):60111,A=t?Symbol.for("react.forward_ref"):60112,l=t?Symbol.for("react.suspense"):60113,a=t?Symbol.for("react.suspense_list"):60120,r=t?Symbol.for("react.memo"):60115,o=t?Symbol.for("react.lazy"):60116,d=t?Symbol.for("react.block"):60121,u=t?Symbol.for("react.fundamental"):60117,y=t?Symbol.for("react.responder"):60118,b=t?Symbol.for("react.scope"):60119;function Z(g){if("object"===typeof g&&null!==g){var I=g.$$typeof;switch(I){case C:switch(g=g.type){case i:case c:case F:case n:case B:case l:return g;default:switch(g=g&&g.$$typeof){case s:case A:case o:case r:case U:return g;default:return I}}case Q:return I}}}function m(g){return Z(g)===c}I.AsyncMode=i,I.ConcurrentMode=c,I.ContextConsumer=s,I.ContextProvider=U,I.Element=C,I.ForwardRef=A,I.Fragment=F,I.Lazy=o,I.Memo=r,I.Portal=Q,I.Profiler=n,I.StrictMode=B,I.Suspense=l,I.isAsyncMode=function(g){return m(g)||Z(g)===i},I.isConcurrentMode=m,I.isContextConsumer=function(g){return Z(g)===s},I.isContextProvider=function(g){return Z(g)===U},I.isElement=function(g){return"object"===typeof g&&null!==g&&g.$$typeof===C},I.isForwardRef=function(g){return Z(g)===A},I.isFragment=function(g){return Z(g)===F},I.isLazy=function(g){return Z(g)===o},I.isMemo=function(g){return Z(g)===r},I.isPortal=function(g){return Z(g)===Q},I.isProfiler=function(g){return Z(g)===n},I.isStrictMode=function(g){return Z(g)===B},I.isSuspense=function(g){return Z(g)===l},I.isValidElementType=function(g){return"string"===typeof g||"function"===typeof g||g===F||g===c||g===n||g===B||g===l||g===a||"object"===typeof g&&null!==g&&(g.$$typeof===o||g.$$typeof===r||g.$$typeof===U||g.$$typeof===s||g.$$typeof===A||g.$$typeof===u||g.$$typeof===y||g.$$typeof===b||g.$$typeof===d)},I.typeOf=Z},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0});var t="function"===typeof Symbol&&Symbol.for,C=t?Symbol.for("react.element"):60103,Q=t?Symbol.for("react.portal"):60106,F=t?Symbol.for("react.fragment"):60107,B=t?Symbol.for("react.strict_mode"):60108,n=t?Symbol.for("react.profiler"):60114,U=t?Symbol.for("react.provider"):60109,s=t?Symbol.for("react.context"):60110,i=t?Symbol.for("react.async_mode"):60111,c=t?Symbol.for("react.concurrent_mode"):60111,A=t?Symbol.for("react.forward_ref"):60112,l=t?Symbol.for("react.suspense"):60113,a=t?Symbol.for("react.suspense_list"):60120,r=t?Symbol.for("react.memo"):60115,o=t?Symbol.for("react.lazy"):60116,d=t?Symbol.for("react.fundamental"):60117,u=t?Symbol.for("react.responder"):60118,y=t?Symbol.for("react.scope"):60119;function b(g){if("object"===typeof g&&null!==g){var I=g.$$typeof;switch(I){case C:switch(g=g.type){case i:case c:case F:case n:case B:case l:return g;default:switch(g=g&&g.$$typeof){case s:case A:case o:case r:case U:return g;default:return I}}case Q:return I}}}function Z(g){return b(g)===c}I.typeOf=b,I.AsyncMode=i,I.ConcurrentMode=c,I.ContextConsumer=s,I.ContextProvider=U,I.Element=C,I.ForwardRef=A,I.Fragment=F,I.Lazy=o,I.Memo=r,I.Portal=Q,I.Profiler=n,I.StrictMode=B,I.Suspense=l,I.isValidElementType=function(g){return"string"===typeof g||"function"===typeof g||g===F||g===c||g===n||g===B||g===l||g===a||"object"===typeof g&&null!==g&&(g.$$typeof===o||g.$$typeof===r||g.$$typeof===U||g.$$typeof===s||g.$$typeof===A||g.$$typeof===d||g.$$typeof===u||g.$$typeof===y)},I.isAsyncMode=function(g){return Z(g)||b(g)===i},I.isConcurrentMode=Z,I.isContextConsumer=function(g){return b(g)===s},I.isContextProvider=function(g){return b(g)===U},I.isElement=function(g){return"object"===typeof g&&null!==g&&g.$$typeof===C},I.isForwardRef=function(g){return b(g)===A},I.isFragment=function(g){return b(g)===F},I.isLazy=function(g){return b(g)===o},I.isMemo=function(g){return b(g)===r},I.isPortal=function(g){return b(g)===Q},I.isProfiler=function(g){return b(g)===n},I.isStrictMode=function(g){return b(g)===B},I.isSuspense=function(g){return b(g)===l}},function(g,I,e){"use strict";var t=e(150),C=e(658),Q=e(1166),F=e(664);function B(g){var I=new Q(g),e=C(Q.prototype.request,I);return t.extend(e,Q.prototype,I),t.extend(e,I),e}var n=B(e(661));n.Axios=Q,n.create=function(g){return B(F(n.defaults,g))},n.Cancel=e(665),n.CancelToken=e(1179),n.isCancel=e(660),n.all=function(g){return Promise.all(g)},n.spread=e(1180),g.exports=n,g.exports.default=n},function(g,I,e){"use strict";var t=e(150),C=e(659),Q=e(1167),F=e(1168),B=e(664);function n(g){this.defaults=g,this.interceptors={request:new Q,response:new Q}}n.prototype.request=function(g){"string"===typeof g?(g=arguments[1]||{}).url=arguments[0]:g=g||{},(g=B(this.defaults,g)).method?g.method=g.method.toLowerCase():this.defaults.method?g.method=this.defaults.method.toLowerCase():g.method="get";var I=[F,void 0],e=Promise.resolve(g);for(this.interceptors.request.forEach((function(g){I.unshift(g.fulfilled,g.rejected)})),this.interceptors.response.forEach((function(g){I.push(g.fulfilled,g.rejected)}));I.length;)e=e.then(I.shift(),I.shift());return e},n.prototype.getUri=function(g){return g=B(this.defaults,g),C(g.url,g.params,g.paramsSerializer).replace(/^\?/,"")},t.forEach(["delete","get","head","options"],(function(g){n.prototype[g]=function(I,e){return this.request(t.merge(e||{},{method:g,url:I}))}})),t.forEach(["post","put","patch"],(function(g){n.prototype[g]=function(I,e,C){return this.request(t.merge(C||{},{method:g,url:I,data:e}))}})),g.exports=n},function(g,I,e){"use strict";var t=e(150);function C(){this.handlers=[]}C.prototype.use=function(g,I){return this.handlers.push({fulfilled:g,rejected:I}),this.handlers.length-1},C.prototype.eject=function(g){this.handlers[g]&&(this.handlers[g]=null)},C.prototype.forEach=function(g){t.forEach(this.handlers,(function(I){null!==I&&g(I)}))},g.exports=C},function(g,I,e){"use strict";var t=e(150),C=e(1169),Q=e(660),F=e(661);function B(g){g.cancelToken&&g.cancelToken.throwIfRequested()}g.exports=function(g){return B(g),g.headers=g.headers||{},g.data=C(g.data,g.headers,g.transformRequest),g.headers=t.merge(g.headers.common||{},g.headers[g.method]||{},g.headers),t.forEach(["delete","get","head","post","put","patch","common"],(function(I){delete g.headers[I]})),(g.adapter||F.adapter)(g).then((function(I){return B(g),I.data=C(I.data,I.headers,g.transformResponse),I}),(function(I){return Q(I)||(B(g),I&&I.response&&(I.response.data=C(I.response.data,I.response.headers,g.transformResponse))),Promise.reject(I)}))}},function(g,I,e){"use strict";var t=e(150);g.exports=function(g,I,e){return t.forEach(e,(function(e){g=e(g,I)})),g}},function(g,I,e){"use strict";var t=e(150);g.exports=function(g,I){t.forEach(g,(function(e,t){t!==I&&t.toUpperCase()===I.toUpperCase()&&(g[I]=e,delete g[t])}))}},function(g,I,e){"use strict";var t=e(663);g.exports=function(g,I,e){var C=e.config.validateStatus;!C||C(e.status)?g(e):I(t("Request failed with status code "+e.status,e.config,null,e.request,e))}},function(g,I,e){"use strict";g.exports=function(g,I,e,t,C){return g.config=I,e&&(g.code=e),g.request=t,g.response=C,g.isAxiosError=!0,g.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},g}},function(g,I,e){"use strict";var t=e(1174),C=e(1175);g.exports=function(g,I){return g&&!t(I)?C(g,I):I}},function(g,I,e){"use strict";g.exports=function(g){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(g)}},function(g,I,e){"use strict";g.exports=function(g,I){return I?g.replace(/\/+$/,"")+"/"+I.replace(/^\/+/,""):g}},function(g,I,e){"use strict";var t=e(150),C=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];g.exports=function(g){var I,e,Q,F={};return g?(t.forEach(g.split("\n"),(function(g){if(Q=g.indexOf(":"),I=t.trim(g.substr(0,Q)).toLowerCase(),e=t.trim(g.substr(Q+1)),I){if(F[I]&&C.indexOf(I)>=0)return;F[I]="set-cookie"===I?(F[I]?F[I]:[]).concat([e]):F[I]?F[I]+", "+e:e}})),F):F}},function(g,I,e){"use strict";var t=e(150);g.exports=t.isStandardBrowserEnv()?function(){var g,I=/(msie|trident)/i.test(navigator.userAgent),e=document.createElement("a");function C(g){var t=g;return I&&(e.setAttribute("href",t),t=e.href),e.setAttribute("href",t),{href:e.href,protocol:e.protocol?e.protocol.replace(/:$/,""):"",host:e.host,search:e.search?e.search.replace(/^\?/,""):"",hash:e.hash?e.hash.replace(/^#/,""):"",hostname:e.hostname,port:e.port,pathname:"/"===e.pathname.charAt(0)?e.pathname:"/"+e.pathname}}return g=C(window.location.href),function(I){var e=t.isString(I)?C(I):I;return e.protocol===g.protocol&&e.host===g.host}}():function(){return!0}},function(g,I,e){"use strict";var t=e(150);g.exports=t.isStandardBrowserEnv()?{write:function(g,I,e,C,Q,F){var B=[];B.push(g+"="+encodeURIComponent(I)),t.isNumber(e)&&B.push("expires="+new Date(e).toGMTString()),t.isString(C)&&B.push("path="+C),t.isString(Q)&&B.push("domain="+Q),!0===F&&B.push("secure"),document.cookie=B.join("; ")},read:function(g){var I=document.cookie.match(new RegExp("(^|;\\s*)("+g+")=([^;]*)"));return I?decodeURIComponent(I[3]):null},remove:function(g){this.write(g,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},function(g,I,e){"use strict";var t=e(665);function C(g){if("function"!==typeof g)throw new TypeError("executor must be a function.");var I;this.promise=new Promise((function(g){I=g}));var e=this;g((function(g){e.reason||(e.reason=new t(g),I(e.reason))}))}C.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},C.source=function(){var g;return{token:new C((function(I){g=I})),cancel:g}},g.exports=C},function(g,I,e){"use strict";g.exports=function(g){return function(I){return g.apply(null,I)}}},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var t=function(g){if(g&&g.__esModule)return g;if(null===g||"object"!==A(g)&&"function"!==typeof g)return{default:g};var I=c();if(I&&I.has(g))return I.get(g);var e={},t=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var C in g)if(Object.prototype.hasOwnProperty.call(g,C)){var Q=t?Object.getOwnPropertyDescriptor(g,C):null;Q&&(Q.get||Q.set)?Object.defineProperty(e,C,Q):e[C]=g[C]}e.default=g,I&&I.set(g,e);return e}(e(0)),C=i(e(42)),Q=i(e(668)),F=i(e(669)),B=i(e(670)),n=i(e(671)),U=i(e(1184)),s=i(e(672));function i(g){return g&&g.__esModule?g:{default:g}}function c(){if("function"!==typeof WeakMap)return null;var g=new WeakMap;return c=function(){return g},g}function A(g){return(A="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"===typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g})(g)}function l(g,I){var e=Object.keys(g);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(g);I&&(t=t.filter((function(I){return Object.getOwnPropertyDescriptor(g,I).enumerable}))),e.push.apply(e,t)}return e}function a(g){for(var I=1;I<arguments.length;I++){var e=null!=arguments[I]?arguments[I]:{};I%2?l(Object(e),!0).forEach((function(I){m(g,I,e[I])})):Object.getOwnPropertyDescriptors?Object.defineProperties(g,Object.getOwnPropertyDescriptors(e)):l(Object(e)).forEach((function(I){Object.defineProperty(g,I,Object.getOwnPropertyDescriptor(e,I))}))}return g}function r(){return(r=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}function o(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}function d(g,I){return(d=Object.setPrototypeOf||function(g,I){return g.__proto__=I,g})(g,I)}function u(g){var I=function(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(g){return!1}}();return function(){var e,t=Z(g);if(I){var C=Z(this).constructor;e=Reflect.construct(t,arguments,C)}else e=t.apply(this,arguments);return y(this,e)}}function y(g,I){return!I||"object"!==A(I)&&"function"!==typeof I?b(g):I}function b(g){if(void 0===g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return g}function Z(g){return(Z=Object.setPrototypeOf?Object.getPrototypeOf:function(g){return g.__proto__||Object.getPrototypeOf(g)})(g)}function m(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}var x=function(){},R=function(g){!function(g,I){if("function"!==typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function");g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,writable:!0,configurable:!0}}),I&&d(g,I)}(A,g);var I,e,i,c=u(A);function A(g){var I;return function(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}(this,A),m(b(I=c.call(this,g)),"thumbsRef",void 0),m(b(I),"carouselWrapperRef",void 0),m(b(I),"listRef",void 0),m(b(I),"itemsRef",void 0),m(b(I),"timer",void 0),m(b(I),"setThumbsRef",(function(g){I.thumbsRef=g})),m(b(I),"setCarouselWrapperRef",(function(g){I.carouselWrapperRef=g})),m(b(I),"setListRef",(function(g){I.listRef=g})),m(b(I),"setItemsRef",(function(g,e){I.itemsRef||(I.itemsRef=[]),I.itemsRef[e]=g})),m(b(I),"autoPlay",(function(){t.Children.count(I.props.children)<=1||(I.clearAutoPlay(),I.timer=setTimeout((function(){I.increment()}),I.props.interval))})),m(b(I),"clearAutoPlay",(function(){I.timer&&clearTimeout(I.timer)})),m(b(I),"resetAutoPlay",(function(){I.clearAutoPlay(),I.autoPlay()})),m(b(I),"stopOnHover",(function(){I.setState({isMouseEntered:!0},I.clearAutoPlay)})),m(b(I),"startOnLeave",(function(){I.setState({isMouseEntered:!1},I.autoPlay)})),m(b(I),"isFocusWithinTheCarousel",(function(){return!!I.carouselWrapperRef&&!((0,U.default)().activeElement!==I.carouselWrapperRef&&!I.carouselWrapperRef.contains((0,U.default)().activeElement))})),m(b(I),"navigateWithKeyboard",(function(g){if(I.isFocusWithinTheCarousel()){var e="horizontal"===I.props.axis,t=e?37:38;(e?39:40)===g.keyCode?I.increment():t===g.keyCode&&I.decrement()}})),m(b(I),"updateSizes",(function(){if(I.state.initialized&&I.itemsRef&&0!==I.itemsRef.length){var g="horizontal"===I.props.axis,e=I.itemsRef[0];if(e){var t=g?e.clientWidth:e.clientHeight;I.setState({itemSize:t}),I.thumbsRef&&I.thumbsRef.updateSizes()}}})),m(b(I),"setMountState",(function(){I.setState({hasMount:!0}),I.updateSizes()})),m(b(I),"handleClickItem",(function(g,e){0!==t.Children.count(I.props.children)&&(I.state.cancelClick?I.setState({cancelClick:!1}):(I.props.onClickItem(g,e),g!==I.state.selectedItem&&I.setState({selectedItem:g})))})),m(b(I),"handleOnChange",(function(g,e){t.Children.count(I.props.children)<=1||I.props.onChange(g,e)})),m(b(I),"handleClickThumb",(function(g,e){I.props.onClickThumb(g,e),I.moveTo(g)})),m(b(I),"onSwipeStart",(function(g){I.setState({swiping:!0}),I.props.onSwipeStart(g),I.clearAutoPlay()})),m(b(I),"onSwipeEnd",(function(g){I.setState({swiping:!1,cancelClick:!1,swipeMovementStarted:!1}),I.props.onSwipeEnd(g),I.autoPlay()})),m(b(I),"onSwipeMove",(function(g,e){I.props.onSwipeMove(e);var C="horizontal"===I.props.axis,Q=t.Children.count(I.props.children),F=I.getPosition(I.state.selectedItem),B=I.props.infiniteLoop?I.getPosition(Q-1)-100:I.getPosition(Q-1),n=C?g.x:g.y,U=n;0===F&&n>0&&(U=0),F===B&&n<0&&(U=0);var s=F+100/(I.state.itemSize/U),i=Math.abs(n)>I.props.swipeScrollTolerance;return I.props.infiniteLoop&&i&&(0===I.state.selectedItem&&s>-100?s-=100*Q:I.state.selectedItem===Q-1&&s<100*-Q&&(s+=100*Q)),(!I.props.preventMovementUntilSwipeScrollTolerance||i||I.state.swipeMovementStarted)&&(I.state.swipeMovementStarted||I.setState({swipeMovementStarted:!0}),I.setPosition(s)),i&&!I.state.cancelClick&&I.setState({cancelClick:!0}),i})),m(b(I),"setPosition",(function(g,e){var t=C.default.findDOMNode(I.listRef);t instanceof HTMLElement&&(["WebkitTransform","MozTransform","MsTransform","OTransform","transform","msTransform"].forEach((function(e){t.style[e]=(0,B.default)(g,"%",I.props.axis)})),e&&t.offsetLeft)})),m(b(I),"resetPosition",(function(){var g=I.getPosition(I.state.selectedItem);I.setPosition(g)})),m(b(I),"decrement",(function(){var g=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];I.moveTo(I.state.selectedItem-("number"===typeof g?g:1),e)})),m(b(I),"increment",(function(){var g=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];I.moveTo(I.state.selectedItem+("number"===typeof g?g:1),e)})),m(b(I),"moveTo",(function(g,e){if("number"===typeof g){var C=t.Children.count(I.props.children)-1,Q=I.props.infiniteLoop&&!e&&(g<0||g>C),F=g;g<0&&(g=I.props.infiniteLoop?C:0),g>C&&(g=I.props.infiniteLoop?0:C),Q?I.setState({swiping:!0},(function(){F<0?I.props.centerMode&&I.props.centerSlidePercentage&&"horizontal"===I.props.axis?I.setPosition(-(C+2)*I.props.centerSlidePercentage-(100-I.props.centerSlidePercentage)/2,!0):I.setPosition(100*-(C+2),!0):F>C&&I.setPosition(0,!0),I.selectItem({selectedItem:g,swiping:!1})})):I.selectItem({selectedItem:g}),I.state.autoPlay&&!1===I.state.isMouseEntered&&I.resetAutoPlay()}})),m(b(I),"onClickNext",(function(){I.increment(1,!1)})),m(b(I),"onClickPrev",(function(){I.decrement(1,!1)})),m(b(I),"onSwipeForward",(function(){I.increment(1,!0),I.props.emulateTouch&&I.setState({cancelClick:!0})})),m(b(I),"onSwipeBackwards",(function(){I.decrement(1,!0),I.props.emulateTouch&&I.setState({cancelClick:!0})})),m(b(I),"changeItem",(function(g){return function(e){(function(g){return!!g&&g.hasOwnProperty("key")})(e)&&"Enter"!==e.key||I.moveTo(g)}})),m(b(I),"selectItem",(function(g,e){I.setState(g,e),I.handleOnChange(g.selectedItem,t.Children.toArray(I.props.children)[g.selectedItem])})),m(b(I),"getInitialImage",(function(){var g=I.props.selectedItem,e=I.itemsRef&&I.itemsRef[g];return(e&&e.getElementsByTagName("img")||[])[0]})),m(b(I),"getVariableItemHeight",(function(g){var e=I.itemsRef&&I.itemsRef[g];if(I.state.hasMount&&e&&e.children.length){var t=e.children[0].getElementsByTagName("img")||[];if(t.length>0){var C=t[0];if(!C.complete){C.addEventListener("load",(function g(){I.forceUpdate(),C.removeEventListener("load",g)}))}}var Q=(t[0]||e.children[0]).clientHeight;return Q>0?Q:null}return null})),I.state={initialized:!1,selectedItem:g.selectedItem,hasMount:!1,isMouseEntered:!1,autoPlay:g.autoPlay,swiping:!1,swipeMovementStarted:!1,cancelClick:!1,itemSize:1},I}return I=A,(e=[{key:"componentDidMount",value:function(){this.props.children&&this.setupCarousel()}},{key:"componentDidUpdate",value:function(g,I){g.children||!this.props.children||this.state.initialized||this.setupCarousel(),!g.autoFocus&&this.props.autoFocus&&this.forceFocus(),I.swiping&&!this.state.swiping&&this.resetPosition(),g.selectedItem===this.props.selectedItem&&g.centerMode===this.props.centerMode||(this.updateSizes(),this.moveTo(this.props.selectedItem)),g.autoPlay!==this.props.autoPlay&&(this.props.autoPlay?this.setupAutoPlay():this.destroyAutoPlay(),this.setState({autoPlay:this.props.autoPlay}))}},{key:"componentWillUnmount",value:function(){this.destroyCarousel()}},{key:"setupCarousel",value:function(){var g=this;this.bindEvents(),this.state.autoPlay&&t.Children.count(this.props.children)>1&&this.setupAutoPlay(),this.props.autoFocus&&this.forceFocus(),this.setState({initialized:!0},(function(){var I=g.getInitialImage();I&&!I.complete?I.addEventListener("load",g.setMountState):g.setMountState()}))}},{key:"destroyCarousel",value:function(){this.state.initialized&&(this.unbindEvents(),this.destroyAutoPlay())}},{key:"setupAutoPlay",value:function(){this.autoPlay();var g=this.carouselWrapperRef;this.props.stopOnHover&&g&&(g.addEventListener("mouseenter",this.stopOnHover),g.addEventListener("mouseleave",this.startOnLeave))}},{key:"destroyAutoPlay",value:function(){this.clearAutoPlay();var g=this.carouselWrapperRef;this.props.stopOnHover&&g&&(g.removeEventListener("mouseenter",this.stopOnHover),g.removeEventListener("mouseleave",this.startOnLeave))}},{key:"bindEvents",value:function(){(0,s.default)().addEventListener("resize",this.updateSizes),(0,s.default)().addEventListener("DOMContentLoaded",this.updateSizes),this.props.useKeyboardArrows&&(0,U.default)().addEventListener("keydown",this.navigateWithKeyboard)}},{key:"unbindEvents",value:function(){(0,s.default)().removeEventListener("resize",this.updateSizes),(0,s.default)().removeEventListener("DOMContentLoaded",this.updateSizes);var g=this.getInitialImage();g&&g.removeEventListener("load",this.setMountState),this.props.useKeyboardArrows&&(0,U.default)().removeEventListener("keydown",this.navigateWithKeyboard)}},{key:"forceFocus",value:function(){var g;null===(g=this.carouselWrapperRef)||void 0===g||g.focus()}},{key:"getPosition",value:function(g){if(this.props.infiniteLoop&&++g,0===g)return 0;var I=t.Children.count(this.props.children);if(this.props.centerMode&&"horizontal"===this.props.axis){var e=-g*this.props.centerSlidePercentage,C=I-1;return g&&(g!==C||this.props.infiniteLoop)?e+=(100-this.props.centerSlidePercentage)/2:g===C&&(e+=100-this.props.centerSlidePercentage),e}return 100*-g}},{key:"renderItems",value:function(g){var I=this;return this.props.children?t.Children.map(this.props.children,(function(e,C){var Q={ref:function(g){return I.setItemsRef(g,C)},key:"itemKey"+C+(g?"clone":""),className:F.default.ITEM(!0,C===I.state.selectedItem),onClick:I.handleClickItem.bind(I,C,e)},B={};return I.props.centerMode&&"horizontal"===I.props.axis&&(B.style={minWidth:I.props.centerSlidePercentage+"%"}),t.default.createElement("li",r({},Q,B),I.props.renderItem(e,{isSelected:C===I.state.selectedItem}))})):[]}},{key:"renderControls",value:function(){var g=this,I=this.props,e=I.showIndicators,C=I.labels,Q=I.renderIndicator,F=I.children;return e?t.default.createElement("ul",{className:"control-dots"},t.Children.map(F,(function(I,e){return Q&&Q(g.changeItem(e),e===g.state.selectedItem,e,C.item)}))):null}},{key:"renderStatus",value:function(){return this.props.showStatus?t.default.createElement("p",{className:"carousel-status"},this.props.statusFormatter(this.state.selectedItem+1,t.Children.count(this.props.children))):null}},{key:"renderThumbs",value:function(){return this.props.showThumbs&&this.props.children&&0!==t.Children.count(this.props.children)?t.default.createElement(n.default,{ref:this.setThumbsRef,onSelectItem:this.handleClickThumb,selectedItem:this.state.selectedItem,transitionTime:this.props.transitionTime,thumbWidth:this.props.thumbWidth,labels:this.props.labels},this.props.renderThumbs(this.props.children)):null}},{key:"render",value:function(){var g=this;if(!this.props.children||0===t.Children.count(this.props.children))return null;var I=this.props.swipeable&&t.Children.count(this.props.children)>1,e="horizontal"===this.props.axis,C=this.props.showArrows&&t.Children.count(this.props.children)>1,n=C&&(this.state.selectedItem>0||this.props.infiniteLoop)||!1,U=C&&(this.state.selectedItem<t.Children.count(this.props.children)-1||this.props.infiniteLoop)||!1,s={},i=this.getPosition(this.state.selectedItem),c=(0,B.default)(i,"%",this.props.axis),A=this.props.transitionTime+"ms";s={WebkitTransform:c,MozTransform:c,MsTransform:c,OTransform:c,transform:c,msTransform:c},this.state.swiping||(s=a(a({},s),{},{WebkitTransitionDuration:A,MozTransitionDuration:A,MsTransitionDuration:A,OTransitionDuration:A,transitionDuration:A,msTransitionDuration:A}));var l=this.renderItems(!0),o=l.shift(),d=l.pop(),u={className:F.default.SLIDER(!0,this.state.swiping),onSwipeMove:this.onSwipeMove,onSwipeStart:this.onSwipeStart,onSwipeEnd:this.onSwipeEnd,style:s,tolerance:this.props.swipeScrollTolerance},y={};if(e){if(u.onSwipeLeft=this.onSwipeForward,u.onSwipeRight=this.onSwipeBackwards,this.props.dynamicHeight){var b=this.getVariableItemHeight(this.state.selectedItem);u.style.height=b||"auto",y.height=b||"auto"}}else u.onSwipeUp="natural"===this.props.verticalSwipe?this.onSwipeBackwards:this.onSwipeForward,u.onSwipeDown="natural"===this.props.verticalSwipe?this.onSwipeForward:this.onSwipeBackwards,u.style.height=this.state.itemSize,y.height=this.state.itemSize;return t.default.createElement("div",{className:F.default.ROOT(this.props.className),ref:this.setCarouselWrapperRef,tabIndex:0},t.default.createElement("div",{className:F.default.CAROUSEL(!0),style:{width:this.props.width}},this.renderControls(),this.props.renderArrowPrev(this.onClickPrev,n,this.props.labels.leftArrow),t.default.createElement("div",{className:F.default.WRAPPER(!0,this.props.axis),style:y},I?t.default.createElement(Q.default,r({tagName:"ul",innerRef:this.setListRef},u,{allowMouseEvents:this.props.emulateTouch}),this.props.infiniteLoop&&d,this.renderItems(),this.props.infiniteLoop&&o):t.default.createElement("ul",{className:F.default.SLIDER(!0,this.state.swiping),ref:function(I){return g.setListRef(I)},style:s},this.props.infiniteLoop&&d,this.renderItems(),this.props.infiniteLoop&&o)),this.props.renderArrowNext(this.onClickNext,U,this.props.labels.rightArrow),this.renderStatus()),this.renderThumbs())}}])&&o(I.prototype,e),i&&o(I,i),A}(t.default.Component);I.default=R,m(R,"displayName","Carousel"),m(R,"defaultProps",{axis:"horizontal",centerSlidePercentage:80,interval:3e3,labels:{leftArrow:"previous slide / item",rightArrow:"next slide / item",item:"slide item"},onClickItem:x,onClickThumb:x,onChange:x,onSwipeStart:function(){},onSwipeEnd:function(){},onSwipeMove:function(){return!1},preventMovementUntilSwipeScrollTolerance:!1,renderArrowPrev:function(g,I,e){return t.default.createElement("button",{type:"button","aria-label":e,className:F.default.ARROW_PREV(!I),onClick:g})},renderArrowNext:function(g,I,e){return t.default.createElement("button",{type:"button","aria-label":e,className:F.default.ARROW_NEXT(!I),onClick:g})},renderIndicator:function(g,I,e,C){return t.default.createElement("li",{className:F.default.DOT(I),onClick:g,onKeyDown:g,value:e,key:e,role:"button",tabIndex:0,"aria-label":"".concat(C," ").concat(e+1)})},renderItem:function(g){return g},renderThumbs:function(g){var I=t.Children.map(g,(function(g){var I=g;if("img"!==g.type&&(I=t.Children.toArray(g.props.children).find((function(g){return"img"===g.type}))),I)return I}));return 0===I.filter((function(g){return g})).length?(console.warn("No images found! Can't build the thumb list without images. If you don't need thumbs, set showThumbs={false} in the Carousel. Note that it's not possible to get images rendered inside custom components. More info at https://github.com/leandrowd/react-responsive-carousel/blob/master/TROUBLESHOOTING.md"),[]):I},statusFormatter:function(g,I){return"".concat(g," of ").concat(I)},selectedItem:0,showArrows:!0,showIndicators:!0,showStatus:!0,showThumbs:!0,stopOnHover:!0,swipeScrollTolerance:5,swipeable:!0,transitionTime:350,verticalSwipe:"standard",width:"100%"})},function(g,I,e){var t,C,Q;C=[I,e(0),e(4)],void 0===(Q="function"===typeof(t=function(g,I,e){"use strict";Object.defineProperty(g,"__esModule",{value:!0}),g.setHasSupportToCaptureOption=i;var t=Q(I),C=Q(e);function Q(g){return g&&g.__esModule?g:{default:g}}var F=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g};function B(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}var n=function(){function g(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}return function(I,e,t){return e&&g(I.prototype,e),t&&g(I,t),I}}();function U(g,I){if(!g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!I||"object"!==typeof I&&"function"!==typeof I?g:I}var s=!1;function i(g){s=g}try{addEventListener("test",null,Object.defineProperty({},"capture",{get:function(){i(!0)}}))}catch(a){}function c(){var g=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{capture:!0};return s?g:g.capture}function A(g){if("touches"in g){var I=g.touches[0];return{x:I.pageX,y:I.pageY}}return{x:g.screenX,y:g.screenY}}var l=function(g){function I(){var g;B(this,I);for(var e=arguments.length,t=Array(e),C=0;C<e;C++)t[C]=arguments[C];var Q=U(this,(g=I.__proto__||Object.getPrototypeOf(I)).call.apply(g,[this].concat(t)));return Q._handleSwipeStart=Q._handleSwipeStart.bind(Q),Q._handleSwipeMove=Q._handleSwipeMove.bind(Q),Q._handleSwipeEnd=Q._handleSwipeEnd.bind(Q),Q._onMouseDown=Q._onMouseDown.bind(Q),Q._onMouseMove=Q._onMouseMove.bind(Q),Q._onMouseUp=Q._onMouseUp.bind(Q),Q._setSwiperRef=Q._setSwiperRef.bind(Q),Q}return function(g,I){if("function"!==typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function, not "+typeof I);g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,enumerable:!1,writable:!0,configurable:!0}}),I&&(Object.setPrototypeOf?Object.setPrototypeOf(g,I):g.__proto__=I)}(I,g),n(I,[{key:"componentDidMount",value:function(){this.swiper&&this.swiper.addEventListener("touchmove",this._handleSwipeMove,c({capture:!0,passive:!1}))}},{key:"componentWillUnmount",value:function(){this.swiper&&this.swiper.removeEventListener("touchmove",this._handleSwipeMove,c({capture:!0,passive:!1}))}},{key:"_onMouseDown",value:function(g){this.props.allowMouseEvents&&(this.mouseDown=!0,document.addEventListener("mouseup",this._onMouseUp),document.addEventListener("mousemove",this._onMouseMove),this._handleSwipeStart(g))}},{key:"_onMouseMove",value:function(g){this.mouseDown&&this._handleSwipeMove(g)}},{key:"_onMouseUp",value:function(g){this.mouseDown=!1,document.removeEventListener("mouseup",this._onMouseUp),document.removeEventListener("mousemove",this._onMouseMove),this._handleSwipeEnd(g)}},{key:"_handleSwipeStart",value:function(g){var I=A(g),e=I.x,t=I.y;this.moveStart={x:e,y:t},this.props.onSwipeStart(g)}},{key:"_handleSwipeMove",value:function(g){if(this.moveStart){var I=A(g),e=I.x,t=I.y,C=e-this.moveStart.x,Q=t-this.moveStart.y;this.moving=!0,this.props.onSwipeMove({x:C,y:Q},g)&&g.cancelable&&g.preventDefault(),this.movePosition={deltaX:C,deltaY:Q}}}},{key:"_handleSwipeEnd",value:function(g){this.props.onSwipeEnd(g);var I=this.props.tolerance;this.moving&&this.movePosition&&(this.movePosition.deltaX<-I?this.props.onSwipeLeft(1,g):this.movePosition.deltaX>I&&this.props.onSwipeRight(1,g),this.movePosition.deltaY<-I?this.props.onSwipeUp(1,g):this.movePosition.deltaY>I&&this.props.onSwipeDown(1,g)),this.moveStart=null,this.moving=!1,this.movePosition=null}},{key:"_setSwiperRef",value:function(g){this.swiper=g,this.props.innerRef(g)}},{key:"render",value:function(){var g=this.props,I=(g.tagName,g.className),e=g.style,C=g.children,Q=(g.allowMouseEvents,g.onSwipeUp,g.onSwipeDown,g.onSwipeLeft,g.onSwipeRight,g.onSwipeStart,g.onSwipeMove,g.onSwipeEnd,g.innerRef,g.tolerance,function(g,I){var e={};for(var t in g)I.indexOf(t)>=0||Object.prototype.hasOwnProperty.call(g,t)&&(e[t]=g[t]);return e}(g,["tagName","className","style","children","allowMouseEvents","onSwipeUp","onSwipeDown","onSwipeLeft","onSwipeRight","onSwipeStart","onSwipeMove","onSwipeEnd","innerRef","tolerance"]));return t.default.createElement(this.props.tagName,F({ref:this._setSwiperRef,onMouseDown:this._onMouseDown,onTouchStart:this._handleSwipeStart,onTouchEnd:this._handleSwipeEnd,className:I,style:e},Q),C)}}]),I}(I.Component);l.displayName="ReactSwipe",l.propTypes={tagName:C.default.string,className:C.default.string,style:C.default.object,children:C.default.node,allowMouseEvents:C.default.bool,onSwipeUp:C.default.func,onSwipeDown:C.default.func,onSwipeLeft:C.default.func,onSwipeRight:C.default.func,onSwipeStart:C.default.func,onSwipeMove:C.default.func,onSwipeEnd:C.default.func,innerRef:C.default.func,tolerance:C.default.number.isRequired},l.defaultProps={tagName:"div",allowMouseEvents:!1,onSwipeUp:function(){},onSwipeDown:function(){},onSwipeLeft:function(){},onSwipeRight:function(){},onSwipeStart:function(){},onSwipeMove:function(){},onSwipeEnd:function(){},innerRef:function(){},tolerance:0},g.default=l})?t.apply(I,C):t)||(g.exports=Q)},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0}),I.outerWidth=void 0;I.outerWidth=function(g){var I=g.offsetWidth,e=getComputedStyle(g);return I+=parseInt(e.marginLeft)+parseInt(e.marginRight)}},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;I.default=function(){return document}},function(g,I){g.exports=Array.isArray||function(g){return"[object Array]"==Object.prototype.toString.call(g)}},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0});var t="function"===typeof Symbol&&Symbol.for,C=t?Symbol.for("react.element"):60103,Q=t?Symbol.for("react.portal"):60106,F=t?Symbol.for("react.fragment"):60107,B=t?Symbol.for("react.strict_mode"):60108,n=t?Symbol.for("react.profiler"):60114,U=t?Symbol.for("react.provider"):60109,s=t?Symbol.for("react.context"):60110,i=t?Symbol.for("react.async_mode"):60111,c=t?Symbol.for("react.concurrent_mode"):60111,A=t?Symbol.for("react.forward_ref"):60112,l=t?Symbol.for("react.suspense"):60113,a=t?Symbol.for("react.suspense_list"):60120,r=t?Symbol.for("react.memo"):60115,o=t?Symbol.for("react.lazy"):60116,d=t?Symbol.for("react.fundamental"):60117,u=t?Symbol.for("react.responder"):60118,y=t?Symbol.for("react.scope"):60119;function b(g){if("object"===typeof g&&null!==g){var I=g.$$typeof;switch(I){case C:switch(g=g.type){case i:case c:case F:case n:case B:case l:return g;default:switch(g=g&&g.$$typeof){case s:case A:case o:case r:case U:return g;default:return I}}case Q:return I}}}function Z(g){return b(g)===c}I.typeOf=b,I.AsyncMode=i,I.ConcurrentMode=c,I.ContextConsumer=s,I.ContextProvider=U,I.Element=C,I.ForwardRef=A,I.Fragment=F,I.Lazy=o,I.Memo=r,I.Portal=Q,I.Profiler=n,I.StrictMode=B,I.Suspense=l,I.isValidElementType=function(g){return"string"===typeof g||"function"===typeof g||g===F||g===c||g===n||g===B||g===l||g===a||"object"===typeof g&&null!==g&&(g.$$typeof===o||g.$$typeof===r||g.$$typeof===U||g.$$typeof===s||g.$$typeof===A||g.$$typeof===d||g.$$typeof===u||g.$$typeof===y)},I.isAsyncMode=function(g){return Z(g)||b(g)===i},I.isConcurrentMode=Z,I.isContextConsumer=function(g){return b(g)===s},I.isContextProvider=function(g){return b(g)===U},I.isElement=function(g){return"object"===typeof g&&null!==g&&g.$$typeof===C},I.isForwardRef=function(g){return b(g)===A},I.isFragment=function(g){return b(g)===F},I.isLazy=function(g){return b(g)===o},I.isMemo=function(g){return b(g)===r},I.isPortal=function(g){return b(g)===Q},I.isProfiler=function(g){return b(g)===n},I.isStrictMode=function(g){return b(g)===B},I.isSuspense=function(g){return b(g)===l}},function(g,I,e){"use strict";var t=e(139),C="function"===typeof Symbol&&Symbol.for,Q=C?Symbol.for("react.element"):60103,F=C?Symbol.for("react.portal"):60106,B=C?Symbol.for("react.fragment"):60107,n=C?Symbol.for("react.strict_mode"):60108,U=C?Symbol.for("react.profiler"):60114,s=C?Symbol.for("react.provider"):60109,i=C?Symbol.for("react.context"):60110,c=C?Symbol.for("react.concurrent_mode"):60111,A=C?Symbol.for("react.forward_ref"):60112,l=C?Symbol.for("react.suspense"):60113,a=C?Symbol.for("react.memo"):60115,r=C?Symbol.for("react.lazy"):60116,o="function"===typeof Symbol&&Symbol.iterator;function d(g,I,e,t,C,Q,F,B){if(!g){if(g=void 0,void 0===I)g=Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var n=[e,t,C,Q,F,B],U=0;(g=Error(I.replace(/%s/g,(function(){return n[U++]})))).name="Invariant Violation"}throw g.framesToPop=1,g}}function u(g){for(var I=arguments.length-1,e="https://reactjs.org/docs/error-decoder.html?invariant="+g,t=0;t<I;t++)e+="&args[]="+encodeURIComponent(arguments[t+1]);d(!1,"Minified React error #"+g+"; visit %s for the full message or use the non-minified dev environment for full errors and additional helpful warnings. ",e)}var y={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},b={};function Z(g,I,e){this.props=g,this.context=I,this.refs=b,this.updater=e||y}function m(){}function x(g,I,e){this.props=g,this.context=I,this.refs=b,this.updater=e||y}Z.prototype.isReactComponent={},Z.prototype.setState=function(g,I){"object"!==typeof g&&"function"!==typeof g&&null!=g&&u("85"),this.updater.enqueueSetState(this,g,I,"setState")},Z.prototype.forceUpdate=function(g){this.updater.enqueueForceUpdate(this,g,"forceUpdate")},m.prototype=Z.prototype;var R=x.prototype=new m;R.constructor=x,t(R,Z.prototype),R.isPureReactComponent=!0;var S={current:null},G={current:null},L=Object.prototype.hasOwnProperty,V={key:!0,ref:!0,__self:!0,__source:!0};function h(g,I,e){var t=void 0,C={},F=null,B=null;if(null!=I)for(t in void 0!==I.ref&&(B=I.ref),void 0!==I.key&&(F=""+I.key),I)L.call(I,t)&&!V.hasOwnProperty(t)&&(C[t]=I[t]);var n=arguments.length-2;if(1===n)C.children=e;else if(1<n){for(var U=Array(n),s=0;s<n;s++)U[s]=arguments[s+2];C.children=U}if(g&&g.defaultProps)for(t in n=g.defaultProps)void 0===C[t]&&(C[t]=n[t]);return{$$typeof:Q,type:g,key:F,ref:B,props:C,_owner:G.current}}function D(g){return"object"===typeof g&&null!==g&&g.$$typeof===Q}var p=/\/+/g,E=[];function N(g,I,e,t){if(E.length){var C=E.pop();return C.result=g,C.keyPrefix=I,C.func=e,C.context=t,C.count=0,C}return{result:g,keyPrefix:I,func:e,context:t,count:0}}function W(g){g.result=null,g.keyPrefix=null,g.func=null,g.context=null,g.count=0,10>E.length&&E.push(g)}function f(g,I,e){return null==g?0:function g(I,e,t,C){var B=typeof I;"undefined"!==B&&"boolean"!==B||(I=null);var n=!1;if(null===I)n=!0;else switch(B){case"string":case"number":n=!0;break;case"object":switch(I.$$typeof){case Q:case F:n=!0}}if(n)return t(C,I,""===e?"."+X(I,0):e),1;if(n=0,e=""===e?".":e+":",Array.isArray(I))for(var U=0;U<I.length;U++){var s=e+X(B=I[U],U);n+=g(B,s,t,C)}else if(null===I||"object"!==typeof I?s=null:s="function"===typeof(s=o&&I[o]||I["@@iterator"])?s:null,"function"===typeof s)for(I=s.call(I),U=0;!(B=I.next()).done;)n+=g(B=B.value,s=e+X(B,U++),t,C);else"object"===B&&u("31","[object Object]"===(t=""+I)?"object with keys {"+Object.keys(I).join(", ")+"}":t,"");return n}(g,"",I,e)}function X(g,I){return"object"===typeof g&&null!==g&&null!=g.key?function(g){var I={"=":"=0",":":"=2"};return"$"+(""+g).replace(/[=:]/g,(function(g){return I[g]}))}(g.key):I.toString(36)}function J(g,I){g.func.call(g.context,I,g.count++)}function v(g,I,e){var t=g.result,C=g.keyPrefix;g=g.func.call(g.context,I,g.count++),Array.isArray(g)?k(g,t,e,(function(g){return g})):null!=g&&(D(g)&&(g=function(g,I){return{$$typeof:Q,type:g.type,key:I,ref:g.ref,props:g.props,_owner:g._owner}}(g,C+(!g.key||I&&I.key===g.key?"":(""+g.key).replace(p,"$&/")+"/")+e)),t.push(g))}function k(g,I,e,t,C){var Q="";null!=e&&(Q=(""+e).replace(p,"$&/")+"/"),f(g,v,I=N(I,Q,t,C)),W(I)}function H(){var g=S.current;return null===g&&u("307"),g}var M={Children:{map:function(g,I,e){if(null==g)return g;var t=[];return k(g,t,null,I,e),t},forEach:function(g,I,e){if(null==g)return g;f(g,J,I=N(null,null,I,e)),W(I)},count:function(g){return f(g,(function(){return null}),null)},toArray:function(g){var I=[];return k(g,I,null,(function(g){return g})),I},only:function(g){return D(g)||u("143"),g}},createRef:function(){return{current:null}},Component:Z,PureComponent:x,createContext:function(g,I){return void 0===I&&(I=null),(g={$$typeof:i,_calculateChangedBits:I,_currentValue:g,_currentValue2:g,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:s,_context:g},g.Consumer=g},forwardRef:function(g){return{$$typeof:A,render:g}},lazy:function(g){return{$$typeof:r,_ctor:g,_status:-1,_result:null}},memo:function(g,I){return{$$typeof:a,type:g,compare:void 0===I?null:I}},useCallback:function(g,I){return H().useCallback(g,I)},useContext:function(g,I){return H().useContext(g,I)},useEffect:function(g,I){return H().useEffect(g,I)},useImperativeHandle:function(g,I,e){return H().useImperativeHandle(g,I,e)},useDebugValue:function(){},useLayoutEffect:function(g,I){return H().useLayoutEffect(g,I)},useMemo:function(g,I){return H().useMemo(g,I)},useReducer:function(g,I,e){return H().useReducer(g,I,e)},useRef:function(g){return H().useRef(g)},useState:function(g){return H().useState(g)},Fragment:B,StrictMode:n,Suspense:l,createElement:h,cloneElement:function(g,I,e){(null===g||void 0===g)&&u("267",g);var C=void 0,F=t({},g.props),B=g.key,n=g.ref,U=g._owner;if(null!=I){void 0!==I.ref&&(n=I.ref,U=G.current),void 0!==I.key&&(B=""+I.key);var s=void 0;for(C in g.type&&g.type.defaultProps&&(s=g.type.defaultProps),I)L.call(I,C)&&!V.hasOwnProperty(C)&&(F[C]=void 0===I[C]&&void 0!==s?s[C]:I[C])}if(1===(C=arguments.length-2))F.children=e;else if(1<C){s=Array(C);for(var i=0;i<C;i++)s[i]=arguments[i+2];F.children=s}return{$$typeof:Q,type:g.type,key:B,ref:n,props:F,_owner:U}},createFactory:function(g){var I=h.bind(null,g);return I.type=g,I},isValidElement:D,version:"16.8.1",unstable_ConcurrentMode:c,unstable_Profiler:U,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{ReactCurrentDispatcher:S,ReactCurrentOwner:G,assign:t}},Y={default:M},w=Y&&M||Y;g.exports=w.default||w},function(g,I){var e=Object.prototype.toString;function t(g,I){return g<I}function C(g){return"symbol"==typeof g||function(g){return!!g&&"object"==typeof g}(g)&&"[object Symbol]"==e.call(g)}function Q(g){return g}g.exports=function(g){return g&&g.length?function(g,I,e){for(var t=-1,Q=g.length;++t<Q;){var F=g[t],B=I(F);if(null!=B&&(void 0===n?B===B&&!C(B):e(B,n)))var n=B,U=F}return U}(g,Q,t):void 0}},function(g,I,e){"use strict";e.r(I),function(g){e.d(I,"createGlobalStyle",(function(){return eI})),e.d(I,"css",(function(){return ug})),e.d(I,"isStyledComponent",(function(){return S})),e.d(I,"keyframes",(function(){return CI})),e.d(I,"ServerStyleSheet",(function(){return Og})),e.d(I,"StyleSheetConsumer",(function(){return jg})),e.d(I,"StyleSheetContext",(function(){return Kg})),e.d(I,"StyleSheetManager",(function(){return Pg})),e.d(I,"ThemeConsumer",(function(){return Tg})),e.d(I,"ThemeContext",(function(){return wg})),e.d(I,"ThemeProvider",(function(){return zg})),e.d(I,"withTheme",(function(){return QI})),e.d(I,"__DO_NOT_USE_OR_YOU_WILL_BE_HAUNTED_BY_SPOOKY_GHOSTS",(function(){return FI}));var t=e(571),C=e.n(t),Q=e(819),F=e.n(Q),B=e(63),n=e.n(B),U=e(442),s=e(572),i=e(573),c=(e(4),e(820)),A=e(923),l=function(g,I){for(var e=[g[0]],t=0,C=I.length;t<C;t+=1)e.push(I[t],g[t+1]);return e},a="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"===typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g},r=function(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")},o=function(){function g(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}return function(I,e,t){return e&&g(I.prototype,e),t&&g(I,t),I}}(),d=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g},u=function(g,I){if("function"!==typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function, not "+typeof I);g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,enumerable:!1,writable:!0,configurable:!0}}),I&&(Object.setPrototypeOf?Object.setPrototypeOf(g,I):g.__proto__=I)},y=function(g,I){if(!g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!I||"object"!==typeof I&&"function"!==typeof I?g:I},b=function(g){return"object"===("undefined"===typeof g?"undefined":a(g))&&g.constructor===Object},Z=Object.freeze([]),m=Object.freeze({});function x(g){return"function"===typeof g}function R(g){return g.displayName||g.name||"Component"}function S(g){return g&&"string"===typeof g.styledComponentId}var G="undefined"!==typeof g&&(Object({NODE_ENV:"production",PUBLIC_URL:"",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0}).REACT_APP_SC_ATTR||Object({NODE_ENV:"production",PUBLIC_URL:"",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0}).SC_ATTR)||"data-styled",L="undefined"!==typeof window&&"HTMLElement"in window,V="boolean"===typeof SC_DISABLE_SPEEDY&&SC_DISABLE_SPEEDY||"undefined"!==typeof g&&(Object({NODE_ENV:"production",PUBLIC_URL:"",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0}).REACT_APP_SC_DISABLE_SPEEDY||Object({NODE_ENV:"production",PUBLIC_URL:"",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0}).SC_DISABLE_SPEEDY)||!1,h={};var D=function(g){function I(e){r(this,I);for(var t=arguments.length,C=Array(t>1?t-1:0),Q=1;Q<t;Q++)C[Q-1]=arguments[Q];var F=y(this,g.call(this,"An error occurred. See https://github.com/styled-components/styled-components/blob/master/packages/styled-components/src/utils/errors.md#"+e+" for more information."+(C.length>0?" Additional arguments: "+C.join(", "):"")));return y(F)}return u(I,g),I}(Error),p=/^[^\S\n]*?\/\* sc-component-id:\s*(\S+)\s+\*\//gm,E=function(g){var I=""+(g||""),e=[];return I.replace(p,(function(g,I,t){return e.push({componentId:I,matchIndex:t}),g})),e.map((function(g,t){var C=g.componentId,Q=g.matchIndex,F=e[t+1];return{componentId:C,cssFromDOM:F?I.slice(Q,F.matchIndex):I.slice(Q)}}))},N=/^\s*\/\/.*$/gm,W=new C.a({global:!1,cascade:!0,keyframe:!1,prefix:!1,compress:!1,semicolon:!0}),f=new C.a({global:!1,cascade:!0,keyframe:!1,prefix:!0,compress:!1,semicolon:!1}),X=[],J=function(g){if(-2===g){var I=X;return X=[],I}},v=F()((function(g){X.push(g)})),k=void 0,H=void 0,M=void 0,Y=function(g,I,e){return I>0&&-1!==e.slice(0,I).indexOf(H)&&e.slice(I-H.length,I)!==H?"."+k:g};f.use([function(g,I,e){2===g&&e.length&&e[0].lastIndexOf(H)>0&&(e[0]=e[0].replace(M,Y))},v,J]),W.use([v,J]);var w=function(g){return W("",g)};function T(g,I,e){var t=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"&",C=g.join("").replace(N,""),Q=I&&e?e+" "+I+" { "+C+" }":C;return k=t,H=I,M=new RegExp("\\"+H+"\\b","g"),f(e||!I?"":I,Q)}var z=function(){return e.nc},O=function(g,I,e){e&&((g[I]||(g[I]=Object.create(null)))[e]=!0)},K=function(g,I){g[I]=Object.create(null)},j=function(g){return function(I,e){return void 0!==g[I]&&g[I][e]}},P=function(g){var I="";for(var e in g)I+=Object.keys(g[e]).join(" ")+" ";return I.trim()},_=function(g){if(g.sheet)return g.sheet;for(var I=g.ownerDocument.styleSheets.length,e=0;e<I;e+=1){var t=g.ownerDocument.styleSheets[e];if(t.ownerNode===g)return t}throw new D(10)},q=function(g,I,e){if(!I)return!1;var t=g.cssRules.length;try{g.insertRule(I,e<=t?e:t)}catch(C){return!1}return!0},$=function(g){return"\n/* sc-component-id: "+g+" */\n"},gg=function(g,I){for(var e=0,t=0;t<=I;t+=1)e+=g[t];return e},Ig=function(g,I){return function(e){var t=z();return"<style "+[t&&'nonce="'+t+'"',G+'="'+P(I)+'"','data-styled-version="4.4.1"',e].filter(Boolean).join(" ")+">"+g()+"</style>"}},eg=function(g,I){return function(){var e,t=((e={})[G]=P(I),e["data-styled-version"]="4.4.1",e),C=z();return C&&(t.nonce=C),n.a.createElement("style",d({},t,{dangerouslySetInnerHTML:{__html:g()}}))}},tg=function(g){return function(){return Object.keys(g)}},Cg=function(g,I){return g.createTextNode($(I))},Qg=function g(I,e){var t=void 0===I?Object.create(null):I,C=void 0===e?Object.create(null):e,Q=function(g){var I=C[g];return void 0!==I?I:C[g]=[""]},F=function(){var g="";for(var I in C){var e=C[I][0];e&&(g+=$(I)+e)}return g};return{clone:function(){var I=function(g){var I=Object.create(null);for(var e in g)I[e]=d({},g[e]);return I}(t),e=Object.create(null);for(var Q in C)e[Q]=[C[Q][0]];return g(I,e)},css:F,getIds:tg(C),hasNameForId:j(t),insertMarker:Q,insertRules:function(g,I,e){Q(g)[0]+=I.join(" "),O(t,g,e)},removeRules:function(g){var I=C[g];void 0!==I&&(I[0]="",K(t,g))},sealed:!1,styleTag:null,toElement:eg(F,t),toHTML:Ig(F,t)}},Fg=function(g,I,e,t,C){if(L&&!e){var Q=function(g,I,e){var t=document;g?t=g.ownerDocument:I&&(t=I.ownerDocument);var C=t.createElement("style");C.setAttribute(G,""),C.setAttribute("data-styled-version","4.4.1");var Q=z();if(Q&&C.setAttribute("nonce",Q),C.appendChild(t.createTextNode("")),g&&!I)g.appendChild(C);else{if(!I||!g||!I.parentNode)throw new D(6);I.parentNode.insertBefore(C,e?I:I.nextSibling)}return C}(g,I,t);return V?function(g,I){var e=Object.create(null),t=Object.create(null),C=void 0!==I,Q=!1,F=function(I){var C=t[I];return void 0!==C?C:(t[I]=Cg(g.ownerDocument,I),g.appendChild(t[I]),e[I]=Object.create(null),t[I])},B=function(){var g="";for(var I in t)g+=t[I].data;return g};return{clone:function(){throw new D(5)},css:B,getIds:tg(t),hasNameForId:j(e),insertMarker:F,insertRules:function(g,t,B){for(var n=F(g),U=[],s=t.length,i=0;i<s;i+=1){var c=t[i],A=C;if(A&&-1!==c.indexOf("@import"))U.push(c);else{A=!1;var l=i===s-1?"":" ";n.appendData(""+c+l)}}O(e,g,B),C&&U.length>0&&(Q=!0,I().insertRules(g+"-import",U))},removeRules:function(F){var B=t[F];if(void 0!==B){var n=Cg(g.ownerDocument,F);g.replaceChild(n,B),t[F]=n,K(e,F),C&&Q&&I().removeRules(F+"-import")}},sealed:!1,styleTag:g,toElement:eg(B,e),toHTML:Ig(B,e)}}(Q,C):function(g,I){var e=Object.create(null),t=Object.create(null),C=[],Q=void 0!==I,F=!1,B=function(g){var I=t[g];return void 0!==I?I:(t[g]=C.length,C.push(0),K(e,g),t[g])},n=function(){var I=_(g).cssRules,e="";for(var Q in t){e+=$(Q);for(var F=t[Q],B=gg(C,F),n=B-C[F];n<B;n+=1){var U=I[n];void 0!==U&&(e+=U.cssText)}}return e};return{clone:function(){throw new D(5)},css:n,getIds:tg(t),hasNameForId:j(e),insertMarker:B,insertRules:function(t,n,U){for(var s=B(t),i=_(g),c=gg(C,s),A=0,l=[],a=n.length,r=0;r<a;r+=1){var o=n[r],d=Q;d&&-1!==o.indexOf("@import")?l.push(o):q(i,o,c+A)&&(d=!1,A+=1)}Q&&l.length>0&&(F=!0,I().insertRules(t+"-import",l)),C[s]+=A,O(e,t,U)},removeRules:function(B){var n=t[B];if(void 0!==n&&!1!==g.isConnected){var U=C[n];!function(g,I,e){for(var t=I-e,C=I;C>t;C-=1)g.deleteRule(C)}(_(g),gg(C,n)-1,U),C[n]=0,K(e,B),Q&&F&&I().removeRules(B+"-import")}},sealed:!1,styleTag:g,toElement:eg(n,e),toHTML:Ig(n,e)}}(Q,C)}return Qg()},Bg=/\s+/,ng=void 0;ng=L?V?40:1e3:-1;var Ug=0,sg=void 0,ig=function(){function g(){var I=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:L?document.head:null,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];r(this,g),this.getImportRuleTag=function(){var g=I.importRuleTag;if(void 0!==g)return g;var e=I.tags[0];return I.importRuleTag=Fg(I.target,e?e.styleTag:null,I.forceServer,!0)},Ug+=1,this.id=Ug,this.forceServer=t,this.target=t?null:e,this.tagMap={},this.deferred={},this.rehydratedNames={},this.ignoreRehydratedNames={},this.tags=[],this.capacity=1,this.clones=[]}return g.prototype.rehydrate=function(){if(!L||this.forceServer)return this;var g=[],I=[],e=!1,t=document.querySelectorAll("style["+G+'][data-styled-version="4.4.1"]'),C=t.length;if(!C)return this;for(var Q=0;Q<C;Q+=1){var F=t[Q];e||(e=!!F.getAttribute("data-styled-streamed"));for(var B,n=(F.getAttribute(G)||"").trim().split(Bg),U=n.length,s=0;s<U;s+=1)B=n[s],this.rehydratedNames[B]=!0;I.push.apply(I,E(F.textContent)),g.push(F)}var i=I.length;if(!i)return this;var c=this.makeTag(null);!function(g,I,e){for(var t=0,C=e.length;t<C;t+=1){var Q=e[t],F=Q.componentId,B=Q.cssFromDOM,n=w(B);g.insertRules(F,n)}for(var U=0,s=I.length;U<s;U+=1){var i=I[U];i.parentNode&&i.parentNode.removeChild(i)}}(c,g,I),this.capacity=Math.max(1,ng-i),this.tags.push(c);for(var A=0;A<i;A+=1)this.tagMap[I[A].componentId]=c;return this},g.reset=function(){var I=arguments.length>0&&void 0!==arguments[0]&&arguments[0];sg=new g(void 0,I).rehydrate()},g.prototype.clone=function(){var I=new g(this.target,this.forceServer);return this.clones.push(I),I.tags=this.tags.map((function(g){for(var e=g.getIds(),t=g.clone(),C=0;C<e.length;C+=1)I.tagMap[e[C]]=t;return t})),I.rehydratedNames=d({},this.rehydratedNames),I.deferred=d({},this.deferred),I},g.prototype.sealAllTags=function(){this.capacity=1,this.tags.forEach((function(g){g.sealed=!0}))},g.prototype.makeTag=function(g){var I=g?g.styleTag:null;return Fg(this.target,I,this.forceServer,!1,this.getImportRuleTag)},g.prototype.getTagForId=function(g){var I=this.tagMap[g];if(void 0!==I&&!I.sealed)return I;var e=this.tags[this.tags.length-1];return this.capacity-=1,0===this.capacity&&(this.capacity=ng,e=this.makeTag(e),this.tags.push(e)),this.tagMap[g]=e},g.prototype.hasId=function(g){return void 0!==this.tagMap[g]},g.prototype.hasNameForId=function(g,I){if(void 0===this.ignoreRehydratedNames[g]&&this.rehydratedNames[I])return!0;var e=this.tagMap[g];return void 0!==e&&e.hasNameForId(g,I)},g.prototype.deferredInject=function(g,I){if(void 0===this.tagMap[g]){for(var e=this.clones,t=0;t<e.length;t+=1)e[t].deferredInject(g,I);this.getTagForId(g).insertMarker(g),this.deferred[g]=I}},g.prototype.inject=function(g,I,e){for(var t=this.clones,C=0;C<t.length;C+=1)t[C].inject(g,I,e);var Q=this.getTagForId(g);if(void 0!==this.deferred[g]){var F=this.deferred[g].concat(I);Q.insertRules(g,F,e),this.deferred[g]=void 0}else Q.insertRules(g,I,e)},g.prototype.remove=function(g){var I=this.tagMap[g];if(void 0!==I){for(var e=this.clones,t=0;t<e.length;t+=1)e[t].remove(g);I.removeRules(g),this.ignoreRehydratedNames[g]=!0,this.deferred[g]=void 0}},g.prototype.toHTML=function(){return this.tags.map((function(g){return g.toHTML()})).join("")},g.prototype.toReactElements=function(){var g=this.id;return this.tags.map((function(I,e){var t="sc-"+g+"-"+e;return Object(B.cloneElement)(I.toElement(),{key:t})}))},o(g,null,[{key:"master",get:function(){return sg||(sg=(new g).rehydrate())}},{key:"instance",get:function(){return g.master}}]),g}(),cg=function(){function g(I,e){var t=this;r(this,g),this.inject=function(g){g.hasNameForId(t.id,t.name)||g.inject(t.id,t.rules,t.name)},this.toString=function(){throw new D(12,String(t.name))},this.name=I,this.rules=e,this.id="sc-keyframes-"+I}return g.prototype.getName=function(){return this.name},g}(),Ag=/([A-Z])/g,lg=/^ms-/;function ag(g){return g.replace(Ag,"-$1").toLowerCase().replace(lg,"-ms-")}var rg=function(g){return void 0===g||null===g||!1===g||""===g},og=function g(I,e){var t=[];return Object.keys(I).forEach((function(e){if(!rg(I[e])){if(b(I[e]))return t.push.apply(t,g(I[e],e)),t;if(x(I[e]))return t.push(ag(e)+":",I[e],";"),t;t.push(ag(e)+": "+function(g,I){return null==I||"boolean"===typeof I||""===I?"":"number"!==typeof I||0===I||g in U.a?String(I).trim():I+"px"}(e,I[e])+";")}return t})),e?[e+" {"].concat(t,["}"]):t};function dg(g,I,e){if(Array.isArray(g)){for(var t,C=[],Q=0,F=g.length;Q<F;Q+=1)null!==(t=dg(g[Q],I,e))&&(Array.isArray(t)?C.push.apply(C,t):C.push(t));return C}return rg(g)?null:S(g)?"."+g.styledComponentId:x(g)?"function"!==typeof(B=g)||B.prototype&&B.prototype.isReactComponent||!I?g:dg(g(I),I,e):g instanceof cg?e?(g.inject(e),g.getName()):g:b(g)?og(g):g.toString();var B}function ug(g){for(var I=arguments.length,e=Array(I>1?I-1:0),t=1;t<I;t++)e[t-1]=arguments[t];return x(g)||b(g)?dg(l(Z,[g].concat(e))):dg(l(g,e))}function yg(g){for(var I,e=0|g.length,t=0|e,C=0;e>=4;)I=1540483477*(65535&(I=255&g.charCodeAt(C)|(255&g.charCodeAt(++C))<<8|(255&g.charCodeAt(++C))<<16|(255&g.charCodeAt(++C))<<24))+((1540483477*(I>>>16)&65535)<<16),t=1540483477*(65535&t)+((1540483477*(t>>>16)&65535)<<16)^(I=1540483477*(65535&(I^=I>>>24))+((1540483477*(I>>>16)&65535)<<16)),e-=4,++C;switch(e){case 3:t^=(255&g.charCodeAt(C+2))<<16;case 2:t^=(255&g.charCodeAt(C+1))<<8;case 1:t=1540483477*(65535&(t^=255&g.charCodeAt(C)))+((1540483477*(t>>>16)&65535)<<16)}return((t=1540483477*(65535&(t^=t>>>13))+((1540483477*(t>>>16)&65535)<<16))^t>>>15)>>>0}var bg=function(g){return String.fromCharCode(g+(g>25?39:97))};function Zg(g){var I="",e=void 0;for(e=g;e>52;e=Math.floor(e/52))I=bg(e%52)+I;return bg(e%52)+I}function mg(g,I){for(var e=0;e<g.length;e+=1){var t=g[e];if(Array.isArray(t)&&!mg(t,I))return!1;if(x(t)&&!S(t))return!1}return!I.some((function(g){return x(g)||function(g){for(var I in g)if(x(g[I]))return!0;return!1}(g)}))}var xg,Rg=function(g){return Zg(yg(g))},Sg=function(){function g(I,e,t){r(this,g),this.rules=I,this.isStatic=mg(I,e),this.componentId=t,ig.master.hasId(t)||ig.master.deferredInject(t,[])}return g.prototype.generateAndInjectStyles=function(g,I){var e=this.isStatic,t=this.componentId,C=this.lastClassName;if(L&&e&&"string"===typeof C&&I.hasNameForId(t,C))return C;var Q=dg(this.rules,g,I),F=Rg(this.componentId+Q.join(""));return I.hasNameForId(t,F)||I.inject(this.componentId,T(Q,"."+F,void 0,t),F),this.lastClassName=F,F},g.generateName=function(g){return Rg(g)},g}(),Gg=function(g,I){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:m,t=!!e&&g.theme===e.theme,C=g.theme&&!t?g.theme:I||e.theme;return C},Lg=/[[\].#*$><+~=|^:(),"'`-]+/g,Vg=/(^-|-$)/g;function hg(g){return g.replace(Lg,"-").replace(Vg,"")}function Dg(g){return"string"===typeof g&&!0}var pg={childContextTypes:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDerivedStateFromProps:!0,propTypes:!0,type:!0},Eg={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},Ng=((xg={})[s.ForwardRef]={$$typeof:!0,render:!0},xg),Wg=Object.defineProperty,fg=Object.getOwnPropertyNames,Xg=Object.getOwnPropertySymbols,Jg=void 0===Xg?function(){return[]}:Xg,vg=Object.getOwnPropertyDescriptor,kg=Object.getPrototypeOf,Hg=Object.prototype,Mg=Array.prototype;function Yg(g,I,e){if("string"!==typeof I){var t=kg(I);t&&t!==Hg&&Yg(g,t,e);for(var C=Mg.concat(fg(I),Jg(I)),Q=Ng[g.$$typeof]||pg,F=Ng[I.$$typeof]||pg,B=C.length,n=void 0,U=void 0;B--;)if(U=C[B],!Eg[U]&&(!e||!e[U])&&(!F||!F[U])&&(!Q||!Q[U])&&(n=vg(I,U)))try{Wg(g,U,n)}catch(s){}return g}return g}var wg=Object(B.createContext)(),Tg=wg.Consumer,zg=function(g){function I(e){r(this,I);var t=y(this,g.call(this,e));return t.getContext=Object(i.a)(t.getContext.bind(t)),t.renderInner=t.renderInner.bind(t),t}return u(I,g),I.prototype.render=function(){return this.props.children?n.a.createElement(wg.Consumer,null,this.renderInner):null},I.prototype.renderInner=function(g){var I=this.getContext(this.props.theme,g);return n.a.createElement(wg.Provider,{value:I},this.props.children)},I.prototype.getTheme=function(g,I){if(x(g))return g(I);if(null===g||Array.isArray(g)||"object"!==("undefined"===typeof g?"undefined":a(g)))throw new D(8);return d({},I,g)},I.prototype.getContext=function(g,I){return this.getTheme(g,I)},I}(B.Component),Og=function(){function g(){r(this,g),this.masterSheet=ig.master,this.instance=this.masterSheet.clone(),this.sealed=!1}return g.prototype.seal=function(){if(!this.sealed){var g=this.masterSheet.clones.indexOf(this.instance);this.masterSheet.clones.splice(g,1),this.sealed=!0}},g.prototype.collectStyles=function(g){if(this.sealed)throw new D(2);return n.a.createElement(Pg,{sheet:this.instance},g)},g.prototype.getStyleTags=function(){return this.seal(),this.instance.toHTML()},g.prototype.getStyleElement=function(){return this.seal(),this.instance.toReactElements()},g.prototype.interleaveWithNodeStream=function(g){throw new D(3)},g}(),Kg=Object(B.createContext)(),jg=Kg.Consumer,Pg=function(g){function I(e){r(this,I);var t=y(this,g.call(this,e));return t.getContext=Object(i.a)(t.getContext),t}return u(I,g),I.prototype.getContext=function(g,I){if(g)return g;if(I)return new ig(I);throw new D(4)},I.prototype.render=function(){var g=this.props,I=g.children,e=g.sheet,t=g.target;return n.a.createElement(Kg.Provider,{value:this.getContext(e,t)},I)},I}(B.Component),_g={};var qg=function(g){function I(){r(this,I);var e=y(this,g.call(this));return e.attrs={},e.renderOuter=e.renderOuter.bind(e),e.renderInner=e.renderInner.bind(e),e}return u(I,g),I.prototype.render=function(){return n.a.createElement(jg,null,this.renderOuter)},I.prototype.renderOuter=function(){var g=arguments.length>0&&void 0!==arguments[0]?arguments[0]:ig.master;return this.styleSheet=g,this.props.forwardedComponent.componentStyle.isStatic?this.renderInner():n.a.createElement(Tg,null,this.renderInner)},I.prototype.renderInner=function(g){var I=this.props.forwardedComponent,e=I.componentStyle,t=I.defaultProps,C=(I.displayName,I.foldedComponentIds),Q=I.styledComponentId,F=I.target,n=void 0;n=e.isStatic?this.generateAndInjectStyles(m,this.props):this.generateAndInjectStyles(Gg(this.props,g,t)||m,this.props);var U=this.props.as||this.attrs.as||F,s=Dg(U),i={},A=d({},this.props,this.attrs),l=void 0;for(l in A)"forwardedComponent"!==l&&"as"!==l&&("forwardedRef"===l?i.ref=A[l]:"forwardedAs"===l?i.as=A[l]:s&&!Object(c.a)(l)||(i[l]=A[l]));return this.props.style&&this.attrs.style&&(i.style=d({},this.attrs.style,this.props.style)),i.className=Array.prototype.concat(C,Q,n!==Q?n:null,this.props.className,this.attrs.className).filter(Boolean).join(" "),Object(B.createElement)(U,i)},I.prototype.buildExecutionContext=function(g,I,e){var t=this,C=d({},I,{theme:g});return e.length?(this.attrs={},e.forEach((function(g){var I,e=g,Q=!1,F=void 0,B=void 0;for(B in x(e)&&(e=e(C),Q=!0),e)F=e[B],Q||!x(F)||(I=F)&&I.prototype&&I.prototype.isReactComponent||S(F)||(F=F(C)),t.attrs[B]=F,C[B]=F})),C):C},I.prototype.generateAndInjectStyles=function(g,I){var e=I.forwardedComponent,t=e.attrs,C=e.componentStyle;e.warnTooManyClasses;return C.isStatic&&!t.length?C.generateAndInjectStyles(m,this.styleSheet):C.generateAndInjectStyles(this.buildExecutionContext(g,I,t),this.styleSheet)},I}(B.Component);function $g(g,I,e){var t=S(g),C=!Dg(g),Q=I.displayName,F=void 0===Q?function(g){return Dg(g)?"styled."+g:"Styled("+R(g)+")"}(g):Q,B=I.componentId,U=void 0===B?function(g,I,e){var t="string"!==typeof I?"sc":hg(I),C=(_g[t]||0)+1;_g[t]=C;var Q=t+"-"+g.generateName(t+C);return e?e+"-"+Q:Q}(Sg,I.displayName,I.parentComponentId):B,s=I.ParentComponent,i=void 0===s?qg:s,c=I.attrs,l=void 0===c?Z:c,a=I.displayName&&I.componentId?hg(I.displayName)+"-"+I.componentId:I.componentId||U,r=t&&g.attrs?Array.prototype.concat(g.attrs,l).filter(Boolean):l,o=new Sg(t?g.componentStyle.rules.concat(e):e,r,a),u=void 0,y=function(g,I){return n.a.createElement(i,d({},g,{forwardedComponent:u,forwardedRef:I}))};return y.displayName=F,(u=n.a.forwardRef(y)).displayName=F,u.attrs=r,u.componentStyle=o,u.foldedComponentIds=t?Array.prototype.concat(g.foldedComponentIds,g.styledComponentId):Z,u.styledComponentId=a,u.target=t?g.target:g,u.withComponent=function(g){var t=I.componentId,C=function(g,I){var e={};for(var t in g)I.indexOf(t)>=0||Object.prototype.hasOwnProperty.call(g,t)&&(e[t]=g[t]);return e}(I,["componentId"]),Q=t&&t+"-"+(Dg(g)?g:hg(R(g)));return $g(g,d({},C,{attrs:r,componentId:Q,ParentComponent:i}),e)},Object.defineProperty(u,"defaultProps",{get:function(){return this._foldedDefaultProps},set:function(I){this._foldedDefaultProps=t?Object(A.a)(g.defaultProps,I):I}}),u.toString=function(){return"."+u.styledComponentId},C&&Yg(u,g,{attrs:!0,componentStyle:!0,displayName:!0,foldedComponentIds:!0,styledComponentId:!0,target:!0,withComponent:!0}),u}var gI=function(g){return function g(I,e){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:m;if(!Object(s.isValidElementType)(e))throw new D(1,String(e));var C=function(){return I(e,t,ug.apply(void 0,arguments))};return C.withConfig=function(C){return g(I,e,d({},t,C))},C.attrs=function(C){return g(I,e,d({},t,{attrs:Array.prototype.concat(t.attrs,C).filter(Boolean)}))},C}($g,g)};["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","marquee","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","circle","clipPath","defs","ellipse","foreignObject","g","image","line","linearGradient","marker","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","tspan"].forEach((function(g){gI[g]=gI(g)}));var II=function(){function g(I,e){r(this,g),this.rules=I,this.componentId=e,this.isStatic=mg(I,Z),ig.master.hasId(e)||ig.master.deferredInject(e,[])}return g.prototype.createStyles=function(g,I){var e=T(dg(this.rules,g,I),"");I.inject(this.componentId,e)},g.prototype.removeStyles=function(g){var I=this.componentId;g.hasId(I)&&g.remove(I)},g.prototype.renderStyles=function(g,I){this.removeStyles(I),this.createStyles(g,I)},g}();function eI(g){for(var I=arguments.length,e=Array(I>1?I-1:0),t=1;t<I;t++)e[t-1]=arguments[t];var C=ug.apply(void 0,[g].concat(e)),Q="sc-global-"+yg(JSON.stringify(C)),F=new II(C,Q),B=function(g){function I(e){r(this,I);var t=y(this,g.call(this,e)),C=t.constructor,Q=C.globalStyle,F=C.styledComponentId;return L&&(window.scCGSHMRCache[F]=(window.scCGSHMRCache[F]||0)+1),t.state={globalStyle:Q,styledComponentId:F},t}return u(I,g),I.prototype.componentWillUnmount=function(){window.scCGSHMRCache[this.state.styledComponentId]&&(window.scCGSHMRCache[this.state.styledComponentId]-=1),0===window.scCGSHMRCache[this.state.styledComponentId]&&this.state.globalStyle.removeStyles(this.styleSheet)},I.prototype.render=function(){var g=this;return n.a.createElement(jg,null,(function(I){g.styleSheet=I||ig.master;var e=g.state.globalStyle;return e.isStatic?(e.renderStyles(h,g.styleSheet),null):n.a.createElement(Tg,null,(function(I){var t=g.constructor.defaultProps,C=d({},g.props);return"undefined"!==typeof I&&(C.theme=Gg(g.props,I,t)),e.renderStyles(C,g.styleSheet),null}))}))},I}(n.a.Component);return B.globalStyle=F,B.styledComponentId=Q,B}L&&(window.scCGSHMRCache={});var tI=function(g){return g.replace(/\s|\\n/g,"")};function CI(g){for(var I=arguments.length,e=Array(I>1?I-1:0),t=1;t<I;t++)e[t-1]=arguments[t];var C=ug.apply(void 0,[g].concat(e)),Q=Zg(yg(tI(JSON.stringify(C))));return new cg(Q,T(C,Q,"@keyframes"))}var QI=function(g){var I=n.a.forwardRef((function(I,e){return n.a.createElement(Tg,null,(function(t){var C=g.defaultProps,Q=Gg(I,t,C);return n.a.createElement(g,d({},I,{theme:Q,ref:e}))}))}));return Yg(I,g),I.displayName="WithTheme("+R(g)+")",I},FI={StyleSheet:ig};I.default=gI}.call(this,e(92))},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0});var t="function"===typeof Symbol&&Symbol.for,C=t?Symbol.for("react.element"):60103,Q=t?Symbol.for("react.portal"):60106,F=t?Symbol.for("react.fragment"):60107,B=t?Symbol.for("react.strict_mode"):60108,n=t?Symbol.for("react.profiler"):60114,U=t?Symbol.for("react.provider"):60109,s=t?Symbol.for("react.context"):60110,i=t?Symbol.for("react.async_mode"):60111,c=t?Symbol.for("react.concurrent_mode"):60111,A=t?Symbol.for("react.forward_ref"):60112,l=t?Symbol.for("react.suspense"):60113,a=t?Symbol.for("react.suspense_list"):60120,r=t?Symbol.for("react.memo"):60115,o=t?Symbol.for("react.lazy"):60116,d=t?Symbol.for("react.fundamental"):60117,u=t?Symbol.for("react.responder"):60118,y=t?Symbol.for("react.scope"):60119;function b(g){if("object"===typeof g&&null!==g){var I=g.$$typeof;switch(I){case C:switch(g=g.type){case i:case c:case F:case n:case B:case l:return g;default:switch(g=g&&g.$$typeof){case s:case A:case o:case r:case U:return g;default:return I}}case Q:return I}}}function Z(g){return b(g)===c}I.typeOf=b,I.AsyncMode=i,I.ConcurrentMode=c,I.ContextConsumer=s,I.ContextProvider=U,I.Element=C,I.ForwardRef=A,I.Fragment=F,I.Lazy=o,I.Memo=r,I.Portal=Q,I.Profiler=n,I.StrictMode=B,I.Suspense=l,I.isValidElementType=function(g){return"string"===typeof g||"function"===typeof g||g===F||g===c||g===n||g===B||g===l||g===a||"object"===typeof g&&null!==g&&(g.$$typeof===o||g.$$typeof===r||g.$$typeof===U||g.$$typeof===s||g.$$typeof===A||g.$$typeof===d||g.$$typeof===u||g.$$typeof===y)},I.isAsyncMode=function(g){return Z(g)||b(g)===i},I.isConcurrentMode=Z,I.isContextConsumer=function(g){return b(g)===s},I.isContextProvider=function(g){return b(g)===U},I.isElement=function(g){return"object"===typeof g&&null!==g&&g.$$typeof===C},I.isForwardRef=function(g){return b(g)===A},I.isFragment=function(g){return b(g)===F},I.isLazy=function(g){return b(g)===o},I.isMemo=function(g){return b(g)===r},I.isPortal=function(g){return b(g)===Q},I.isProfiler=function(g){return b(g)===n},I.isStrictMode=function(g){return b(g)===B},I.isSuspense=function(g){return b(g)===l}},function(g,I){var e=Object.prototype.toString;function t(g,I){return g>I}function C(g){return"symbol"==typeof g||function(g){return!!g&&"object"==typeof g}(g)&&"[object Symbol]"==e.call(g)}function Q(g){return g}g.exports=function(g){return g&&g.length?function(g,I,e){for(var t=-1,Q=g.length;++t<Q;){var F=g[t],B=I(F);if(null!=B&&(void 0===n?B===B&&!C(B):e(B,n)))var n=B,U=F}return U}(g,Q,t):void 0}},function(g,I,e){"use strict";function t(g){return g&&g.__esModule?g.default:g}I.__esModule=!0;var C=e(1193);I.Motion=t(C);var Q=e(1195);I.StaggeredMotion=t(Q);var F=e(1196);I.TransitionMotion=t(F);var B=e(1198);I.spring=t(B);var n=e(675);I.presets=t(n);var U=e(398);I.stripStyle=t(U);var s=e(1199);I.reorderKeys=t(s)},function(g,I,e){"use strict";I.__esModule=!0;var t=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g},C=function(){function g(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}return function(I,e,t){return e&&g(I.prototype,e),t&&g(I,t),I}}();function Q(g){return g&&g.__esModule?g:{default:g}}var F=Q(e(507)),B=Q(e(398)),n=Q(e(508)),U=Q(e(509)),s=Q(e(399)),i=Q(e(510)),c=Q(e(63)),A=Q(e(4)),l=function(g){function I(e){var C=this;!function(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}(this,I),g.call(this,e),this.wasAnimating=!1,this.animationID=null,this.prevTime=0,this.accumulatedTime=0,this.unreadPropStyle=null,this.clearUnreadPropStyle=function(g){var I=!1,e=C.state,Q=e.currentStyle,F=e.currentVelocity,B=e.lastIdealStyle,n=e.lastIdealVelocity;for(var U in g)if(Object.prototype.hasOwnProperty.call(g,U)){var s=g[U];"number"===typeof s&&(I||(I=!0,Q=t({},Q),F=t({},F),B=t({},B),n=t({},n)),Q[U]=s,F[U]=0,B[U]=s,n[U]=0)}I&&C.setState({currentStyle:Q,currentVelocity:F,lastIdealStyle:B,lastIdealVelocity:n})},this.startAnimationIfNecessary=function(){C.animationID=s.default((function(g){var I=C.props.style;if(i.default(C.state.currentStyle,I,C.state.currentVelocity))return C.wasAnimating&&C.props.onRest&&C.props.onRest(),C.animationID=null,C.wasAnimating=!1,void(C.accumulatedTime=0);C.wasAnimating=!0;var e=g||U.default(),t=e-C.prevTime;if(C.prevTime=e,C.accumulatedTime=C.accumulatedTime+t,C.accumulatedTime>1e3/60*10&&(C.accumulatedTime=0),0===C.accumulatedTime)return C.animationID=null,void C.startAnimationIfNecessary();var Q=(C.accumulatedTime-Math.floor(C.accumulatedTime/(1e3/60))*(1e3/60))/(1e3/60),F=Math.floor(C.accumulatedTime/(1e3/60)),B={},s={},c={},A={};for(var l in I)if(Object.prototype.hasOwnProperty.call(I,l)){var a=I[l];if("number"===typeof a)c[l]=a,A[l]=0,B[l]=a,s[l]=0;else{for(var r=C.state.lastIdealStyle[l],o=C.state.lastIdealVelocity[l],d=0;d<F;d++){var u=n.default(1e3/60/1e3,r,o,a.val,a.stiffness,a.damping,a.precision);r=u[0],o=u[1]}var y=n.default(1e3/60/1e3,r,o,a.val,a.stiffness,a.damping,a.precision),b=y[0],Z=y[1];c[l]=r+(b-r)*Q,A[l]=o+(Z-o)*Q,B[l]=r,s[l]=o}}C.animationID=null,C.accumulatedTime-=F*(1e3/60),C.setState({currentStyle:c,currentVelocity:A,lastIdealStyle:B,lastIdealVelocity:s}),C.unreadPropStyle=null,C.startAnimationIfNecessary()}))},this.state=this.defaultState()}return function(g,I){if("function"!==typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function, not "+typeof I);g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,enumerable:!1,writable:!0,configurable:!0}}),I&&(Object.setPrototypeOf?Object.setPrototypeOf(g,I):g.__proto__=I)}(I,g),C(I,null,[{key:"propTypes",value:{defaultStyle:A.default.objectOf(A.default.number),style:A.default.objectOf(A.default.oneOfType([A.default.number,A.default.object])).isRequired,children:A.default.func.isRequired,onRest:A.default.func},enumerable:!0}]),I.prototype.defaultState=function(){var g=this.props,I=g.defaultStyle,e=g.style,t=I||B.default(e),C=F.default(t);return{currentStyle:t,currentVelocity:C,lastIdealStyle:t,lastIdealVelocity:C}},I.prototype.componentDidMount=function(){this.prevTime=U.default(),this.startAnimationIfNecessary()},I.prototype.componentWillReceiveProps=function(g){null!=this.unreadPropStyle&&this.clearUnreadPropStyle(this.unreadPropStyle),this.unreadPropStyle=g.style,null==this.animationID&&(this.prevTime=U.default(),this.startAnimationIfNecessary())},I.prototype.componentWillUnmount=function(){null!=this.animationID&&(s.default.cancel(this.animationID),this.animationID=null)},I.prototype.render=function(){var g=this.props.children(this.state.currentStyle);return g&&c.default.Children.only(g)},I}(c.default.Component);I.default=l,g.exports=I.default},function(g,I,e){(function(I){(function(){var e,t,C,Q,F,B;"undefined"!==typeof performance&&null!==performance&&performance.now?g.exports=function(){return performance.now()}:"undefined"!==typeof I&&null!==I&&I.hrtime?(g.exports=function(){return(e()-F)/1e6},t=I.hrtime,Q=(e=function(){var g;return 1e9*(g=t())[0]+g[1]})(),B=1e9*I.uptime(),F=Q-B):Date.now?(g.exports=function(){return Date.now()-C},C=Date.now()):(g.exports=function(){return(new Date).getTime()-C},C=(new Date).getTime())}).call(this)}).call(this,e(92))},function(g,I,e){"use strict";I.__esModule=!0;var t=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g},C=function(){function g(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}return function(I,e,t){return e&&g(I.prototype,e),t&&g(I,t),I}}();function Q(g){return g&&g.__esModule?g:{default:g}}var F=Q(e(507)),B=Q(e(398)),n=Q(e(508)),U=Q(e(509)),s=Q(e(399)),i=Q(e(510)),c=Q(e(63)),A=Q(e(4));var l=function(g){function I(e){var C=this;!function(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}(this,I),g.call(this,e),this.animationID=null,this.prevTime=0,this.accumulatedTime=0,this.unreadPropStyles=null,this.clearUnreadPropStyle=function(g){for(var I=C.state,e=I.currentStyles,Q=I.currentVelocities,F=I.lastIdealStyles,B=I.lastIdealVelocities,n=!1,U=0;U<g.length;U++){var s=g[U],i=!1;for(var c in s)if(Object.prototype.hasOwnProperty.call(s,c)){var A=s[c];"number"===typeof A&&(i||(i=!0,n=!0,e[U]=t({},e[U]),Q[U]=t({},Q[U]),F[U]=t({},F[U]),B[U]=t({},B[U])),e[U][c]=A,Q[U][c]=0,F[U][c]=A,B[U][c]=0)}}n&&C.setState({currentStyles:e,currentVelocities:Q,lastIdealStyles:F,lastIdealVelocities:B})},this.startAnimationIfNecessary=function(){C.animationID=s.default((function(g){var I=C.props.styles(C.state.lastIdealStyles);if(function(g,I,e){for(var t=0;t<g.length;t++)if(!i.default(g[t],I[t],e[t]))return!1;return!0}(C.state.currentStyles,I,C.state.currentVelocities))return C.animationID=null,void(C.accumulatedTime=0);var e=g||U.default(),t=e-C.prevTime;if(C.prevTime=e,C.accumulatedTime=C.accumulatedTime+t,C.accumulatedTime>1e3/60*10&&(C.accumulatedTime=0),0===C.accumulatedTime)return C.animationID=null,void C.startAnimationIfNecessary();for(var Q=(C.accumulatedTime-Math.floor(C.accumulatedTime/(1e3/60))*(1e3/60))/(1e3/60),F=Math.floor(C.accumulatedTime/(1e3/60)),B=[],s=[],c=[],A=[],l=0;l<I.length;l++){var a=I[l],r={},o={},d={},u={};for(var y in a)if(Object.prototype.hasOwnProperty.call(a,y)){var b=a[y];if("number"===typeof b)r[y]=b,o[y]=0,d[y]=b,u[y]=0;else{for(var Z=C.state.lastIdealStyles[l][y],m=C.state.lastIdealVelocities[l][y],x=0;x<F;x++){var R=n.default(1e3/60/1e3,Z,m,b.val,b.stiffness,b.damping,b.precision);Z=R[0],m=R[1]}var S=n.default(1e3/60/1e3,Z,m,b.val,b.stiffness,b.damping,b.precision),G=S[0],L=S[1];r[y]=Z+(G-Z)*Q,o[y]=m+(L-m)*Q,d[y]=Z,u[y]=m}}c[l]=r,A[l]=o,B[l]=d,s[l]=u}C.animationID=null,C.accumulatedTime-=F*(1e3/60),C.setState({currentStyles:c,currentVelocities:A,lastIdealStyles:B,lastIdealVelocities:s}),C.unreadPropStyles=null,C.startAnimationIfNecessary()}))},this.state=this.defaultState()}return function(g,I){if("function"!==typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function, not "+typeof I);g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,enumerable:!1,writable:!0,configurable:!0}}),I&&(Object.setPrototypeOf?Object.setPrototypeOf(g,I):g.__proto__=I)}(I,g),C(I,null,[{key:"propTypes",value:{defaultStyles:A.default.arrayOf(A.default.objectOf(A.default.number)),styles:A.default.func.isRequired,children:A.default.func.isRequired},enumerable:!0}]),I.prototype.defaultState=function(){var g=this.props,I=g.defaultStyles,e=g.styles,t=I||e().map(B.default),C=t.map((function(g){return F.default(g)}));return{currentStyles:t,currentVelocities:C,lastIdealStyles:t,lastIdealVelocities:C}},I.prototype.componentDidMount=function(){this.prevTime=U.default(),this.startAnimationIfNecessary()},I.prototype.componentWillReceiveProps=function(g){null!=this.unreadPropStyles&&this.clearUnreadPropStyle(this.unreadPropStyles),this.unreadPropStyles=g.styles(this.state.lastIdealStyles),null==this.animationID&&(this.prevTime=U.default(),this.startAnimationIfNecessary())},I.prototype.componentWillUnmount=function(){null!=this.animationID&&(s.default.cancel(this.animationID),this.animationID=null)},I.prototype.render=function(){var g=this.props.children(this.state.currentStyles);return g&&c.default.Children.only(g)},I}(c.default.Component);I.default=l,g.exports=I.default},function(g,I,e){"use strict";I.__esModule=!0;var t=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g},C=function(){function g(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}return function(I,e,t){return e&&g(I.prototype,e),t&&g(I,t),I}}();function Q(g){return g&&g.__esModule?g:{default:g}}var F=Q(e(507)),B=Q(e(398)),n=Q(e(508)),U=Q(e(1197)),s=Q(e(509)),i=Q(e(399)),c=Q(e(510)),A=Q(e(63)),l=Q(e(4));function a(g,I,e){var t=I;return null==t?g.map((function(g,I){return{key:g.key,data:g.data,style:e[I]}})):g.map((function(g,I){for(var C=0;C<t.length;C++)if(t[C].key===g.key)return{key:t[C].key,data:t[C].data,style:e[I]};return{key:g.key,data:g.data,style:e[I]}}))}function r(g,I,e,t,C,Q,B,n,s){for(var i=U.default(t,C,(function(g,t){var C=I(t);return null==C||c.default(Q[g],C,B[g])?(e({key:t.key,data:t.data}),null):{key:t.key,data:t.data,style:C}})),A=[],l=[],a=[],r=[],o=0;o<i.length;o++){for(var d=i[o],u=null,y=0;y<t.length;y++)if(t[y].key===d.key){u=y;break}if(null==u){var b=g(d);A[o]=b,a[o]=b;var Z=F.default(d.style);l[o]=Z,r[o]=Z}else A[o]=Q[u],a[o]=n[u],l[o]=B[u],r[o]=s[u]}return[i,A,l,a,r]}var o=function(g){function I(e){var C=this;!function(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}(this,I),g.call(this,e),this.unmounting=!1,this.animationID=null,this.prevTime=0,this.accumulatedTime=0,this.unreadPropStyles=null,this.clearUnreadPropStyle=function(g){for(var I=r(C.props.willEnter,C.props.willLeave,C.props.didLeave,C.state.mergedPropsStyles,g,C.state.currentStyles,C.state.currentVelocities,C.state.lastIdealStyles,C.state.lastIdealVelocities),e=I[0],Q=I[1],F=I[2],B=I[3],n=I[4],U=0;U<g.length;U++){var s=g[U].style,i=!1;for(var c in s)if(Object.prototype.hasOwnProperty.call(s,c)){var A=s[c];"number"===typeof A&&(i||(i=!0,Q[U]=t({},Q[U]),F[U]=t({},F[U]),B[U]=t({},B[U]),n[U]=t({},n[U]),e[U]={key:e[U].key,data:e[U].data,style:t({},e[U].style)}),Q[U][c]=A,F[U][c]=0,B[U][c]=A,n[U][c]=0,e[U].style[c]=A)}}C.setState({currentStyles:Q,currentVelocities:F,mergedPropsStyles:e,lastIdealStyles:B,lastIdealVelocities:n})},this.startAnimationIfNecessary=function(){C.unmounting||(C.animationID=i.default((function(g){if(!C.unmounting){var I=C.props.styles,e="function"===typeof I?I(a(C.state.mergedPropsStyles,C.unreadPropStyles,C.state.lastIdealStyles)):I;if(function(g,I,e,t){if(t.length!==I.length)return!1;for(var C=0;C<t.length;C++)if(t[C].key!==I[C].key)return!1;for(C=0;C<t.length;C++)if(!c.default(g[C],I[C].style,e[C]))return!1;return!0}(C.state.currentStyles,e,C.state.currentVelocities,C.state.mergedPropsStyles))return C.animationID=null,void(C.accumulatedTime=0);var t=g||s.default(),Q=t-C.prevTime;if(C.prevTime=t,C.accumulatedTime=C.accumulatedTime+Q,C.accumulatedTime>1e3/60*10&&(C.accumulatedTime=0),0===C.accumulatedTime)return C.animationID=null,void C.startAnimationIfNecessary();for(var F=(C.accumulatedTime-Math.floor(C.accumulatedTime/(1e3/60))*(1e3/60))/(1e3/60),B=Math.floor(C.accumulatedTime/(1e3/60)),U=r(C.props.willEnter,C.props.willLeave,C.props.didLeave,C.state.mergedPropsStyles,e,C.state.currentStyles,C.state.currentVelocities,C.state.lastIdealStyles,C.state.lastIdealVelocities),i=U[0],A=U[1],l=U[2],o=U[3],d=U[4],u=0;u<i.length;u++){var y=i[u].style,b={},Z={},m={},x={};for(var R in y)if(Object.prototype.hasOwnProperty.call(y,R)){var S=y[R];if("number"===typeof S)b[R]=S,Z[R]=0,m[R]=S,x[R]=0;else{for(var G=o[u][R],L=d[u][R],V=0;V<B;V++){var h=n.default(1e3/60/1e3,G,L,S.val,S.stiffness,S.damping,S.precision);G=h[0],L=h[1]}var D=n.default(1e3/60/1e3,G,L,S.val,S.stiffness,S.damping,S.precision),p=D[0],E=D[1];b[R]=G+(p-G)*F,Z[R]=L+(E-L)*F,m[R]=G,x[R]=L}}o[u]=m,d[u]=x,A[u]=b,l[u]=Z}C.animationID=null,C.accumulatedTime-=B*(1e3/60),C.setState({currentStyles:A,currentVelocities:l,lastIdealStyles:o,lastIdealVelocities:d,mergedPropsStyles:i}),C.unreadPropStyles=null,C.startAnimationIfNecessary()}})))},this.state=this.defaultState()}return function(g,I){if("function"!==typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function, not "+typeof I);g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,enumerable:!1,writable:!0,configurable:!0}}),I&&(Object.setPrototypeOf?Object.setPrototypeOf(g,I):g.__proto__=I)}(I,g),C(I,null,[{key:"propTypes",value:{defaultStyles:l.default.arrayOf(l.default.shape({key:l.default.string.isRequired,data:l.default.any,style:l.default.objectOf(l.default.number).isRequired})),styles:l.default.oneOfType([l.default.func,l.default.arrayOf(l.default.shape({key:l.default.string.isRequired,data:l.default.any,style:l.default.objectOf(l.default.oneOfType([l.default.number,l.default.object])).isRequired}))]).isRequired,children:l.default.func.isRequired,willEnter:l.default.func,willLeave:l.default.func,didLeave:l.default.func},enumerable:!0},{key:"defaultProps",value:{willEnter:function(g){return B.default(g.style)},willLeave:function(){return null},didLeave:function(){}},enumerable:!0}]),I.prototype.defaultState=function(){var g=this.props,I=g.defaultStyles,e=g.styles,t=g.willEnter,C=g.willLeave,Q=g.didLeave,n="function"===typeof e?e(I):e,U=void 0;U=null==I?n:I.map((function(g){for(var I=0;I<n.length;I++)if(n[I].key===g.key)return n[I];return g}));var s=null==I?n.map((function(g){return B.default(g.style)})):I.map((function(g){return B.default(g.style)})),i=null==I?n.map((function(g){return F.default(g.style)})):I.map((function(g){return F.default(g.style)})),c=r(t,C,Q,U,n,s,i,s,i),A=c[0];return{currentStyles:c[1],currentVelocities:c[2],lastIdealStyles:c[3],lastIdealVelocities:c[4],mergedPropsStyles:A}},I.prototype.componentDidMount=function(){this.prevTime=s.default(),this.startAnimationIfNecessary()},I.prototype.componentWillReceiveProps=function(g){this.unreadPropStyles&&this.clearUnreadPropStyle(this.unreadPropStyles);var I=g.styles;this.unreadPropStyles="function"===typeof I?I(a(this.state.mergedPropsStyles,this.unreadPropStyles,this.state.lastIdealStyles)):I,null==this.animationID&&(this.prevTime=s.default(),this.startAnimationIfNecessary())},I.prototype.componentWillUnmount=function(){this.unmounting=!0,null!=this.animationID&&(i.default.cancel(this.animationID),this.animationID=null)},I.prototype.render=function(){var g=a(this.state.mergedPropsStyles,this.unreadPropStyles,this.state.currentStyles),I=this.props.children(g);return I&&A.default.Children.only(I)},I}(A.default.Component);I.default=o,g.exports=I.default},function(g,I,e){"use strict";I.__esModule=!0,I.default=function(g,I,e){for(var t={},C=0;C<g.length;C++)t[g[C].key]=C;var Q={};for(C=0;C<I.length;C++)Q[I[C].key]=C;var F=[];for(C=0;C<I.length;C++)F[C]=I[C];for(C=0;C<g.length;C++)if(!Object.prototype.hasOwnProperty.call(Q,g[C].key)){var B=e(C,g[C]);null!=B&&F.push(B)}return F.sort((function(g,e){var C=Q[g.key],F=Q[e.key],B=t[g.key],n=t[e.key];if(null!=C&&null!=F)return Q[g.key]-Q[e.key];if(null!=B&&null!=n)return t[g.key]-t[e.key];if(null!=C){for(var U=0;U<I.length;U++){var s=I[U].key;if(Object.prototype.hasOwnProperty.call(t,s)){if(C<Q[s]&&n>t[s])return-1;if(C>Q[s]&&n<t[s])return 1}}return 1}for(U=0;U<I.length;U++){s=I[U].key;if(Object.prototype.hasOwnProperty.call(t,s)){if(F<Q[s]&&B>t[s])return 1;if(F>Q[s]&&B<t[s])return-1}}return-1}))},g.exports=I.default},function(g,I,e){"use strict";I.__esModule=!0;var t=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g};I.default=function(g,I){return t({},B,I,{val:g})};var C,Q=e(675),F=(C=Q)&&C.__esModule?C:{default:C},B=t({},F.default.noWobble,{precision:.01});g.exports=I.default},function(g,I,e){"use strict";I.__esModule=!0,I.default=function(){0};g.exports=I.default},function(g,I,e){var t;!function(I,e){"use strict";"object"===typeof g.exports?g.exports=I.document?e(I,!0):function(g){if(!g.document)throw new Error("jQuery requires a window with a document");return e(g)}:e(I)}("undefined"!==typeof window?window:this,(function(e,C){"use strict";var Q=[],F=e.document,B=Object.getPrototypeOf,n=Q.slice,U=Q.concat,s=Q.push,i=Q.indexOf,c={},A=c.toString,l=c.hasOwnProperty,a=l.toString,r=a.call(Object),o={},d=function(g){return"function"===typeof g&&"number"!==typeof g.nodeType},u=function(g){return null!=g&&g===g.window},y={type:!0,src:!0,nonce:!0,noModule:!0};function b(g,I,e){var t,C,Q=(e=e||F).createElement("script");if(Q.text=g,I)for(t in y)(C=I[t]||I.getAttribute&&I.getAttribute(t))&&Q.setAttribute(t,C);e.head.appendChild(Q).parentNode.removeChild(Q)}function Z(g){return null==g?g+"":"object"===typeof g||"function"===typeof g?c[A.call(g)]||"object":typeof g}var m=function g(I,e){return new g.fn.init(I,e)},x=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function R(g){var I=!!g&&"length"in g&&g.length,e=Z(g);return!d(g)&&!u(g)&&("array"===e||0===I||"number"===typeof I&&I>0&&I-1 in g)}m.fn=m.prototype={jquery:"3.4.1",constructor:m,length:0,toArray:function(){return n.call(this)},get:function(g){return null==g?n.call(this):g<0?this[g+this.length]:this[g]},pushStack:function(g){var I=m.merge(this.constructor(),g);return I.prevObject=this,I},each:function(g){return m.each(this,g)},map:function(g){return this.pushStack(m.map(this,(function(I,e){return g.call(I,e,I)})))},slice:function(){return this.pushStack(n.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(g){var I=this.length,e=+g+(g<0?I:0);return this.pushStack(e>=0&&e<I?[this[e]]:[])},end:function(){return this.prevObject||this.constructor()},push:s,sort:Q.sort,splice:Q.splice},m.extend=m.fn.extend=function(){var g,I,e,t,C,Q,F=arguments[0]||{},B=1,n=arguments.length,U=!1;for("boolean"===typeof F&&(U=F,F=arguments[B]||{},B++),"object"===typeof F||d(F)||(F={}),B===n&&(F=this,B--);B<n;B++)if(null!=(g=arguments[B]))for(I in g)t=g[I],"__proto__"!==I&&F!==t&&(U&&t&&(m.isPlainObject(t)||(C=Array.isArray(t)))?(e=F[I],Q=C&&!Array.isArray(e)?[]:C||m.isPlainObject(e)?e:{},C=!1,F[I]=m.extend(U,Q,t)):void 0!==t&&(F[I]=t));return F},m.extend({expando:"jQuery"+("3.4.1"+Math.random()).replace(/\D/g,""),isReady:!0,error:function(g){throw new Error(g)},noop:function(){},isPlainObject:function(g){var I,e;return!(!g||"[object Object]"!==A.call(g))&&(!(I=B(g))||"function"===typeof(e=l.call(I,"constructor")&&I.constructor)&&a.call(e)===r)},isEmptyObject:function(g){var I;for(I in g)return!1;return!0},globalEval:function(g,I){b(g,{nonce:I&&I.nonce})},each:function(g,I){var e,t=0;if(R(g))for(e=g.length;t<e&&!1!==I.call(g[t],t,g[t]);t++);else for(t in g)if(!1===I.call(g[t],t,g[t]))break;return g},trim:function(g){return null==g?"":(g+"").replace(x,"")},makeArray:function(g,I){var e=I||[];return null!=g&&(R(Object(g))?m.merge(e,"string"===typeof g?[g]:g):s.call(e,g)),e},inArray:function(g,I,e){return null==I?-1:i.call(I,g,e)},merge:function(g,I){for(var e=+I.length,t=0,C=g.length;t<e;t++)g[C++]=I[t];return g.length=C,g},grep:function(g,I,e){for(var t=[],C=0,Q=g.length,F=!e;C<Q;C++)!I(g[C],C)!==F&&t.push(g[C]);return t},map:function(g,I,e){var t,C,Q=0,F=[];if(R(g))for(t=g.length;Q<t;Q++)null!=(C=I(g[Q],Q,e))&&F.push(C);else for(Q in g)null!=(C=I(g[Q],Q,e))&&F.push(C);return U.apply([],F)},guid:1,support:o}),"function"===typeof Symbol&&(m.fn[Symbol.iterator]=Q[Symbol.iterator]),m.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),(function(g,I){c["[object "+I+"]"]=I.toLowerCase()}));var S=function(g){var I,e,t,C,Q,F,B,n,U,s,i,c,A,l,a,r,o,d,u,y="sizzle"+1*new Date,b=g.document,Z=0,m=0,x=ng(),R=ng(),S=ng(),G=ng(),L=function(g,I){return g===I&&(i=!0),0},V={}.hasOwnProperty,h=[],D=h.pop,p=h.push,E=h.push,N=h.slice,W=function(g,I){for(var e=0,t=g.length;e<t;e++)if(g[e]===I)return e;return-1},f="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",X="[\\x20\\t\\r\\n\\f]",J="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",v="\\["+X+"*("+J+")(?:"+X+"*([*^$|!~]?=)"+X+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+J+"))|)"+X+"*\\]",k=":("+J+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+v+")*)|.*)\\)|)",H=new RegExp(X+"+","g"),M=new RegExp("^"+X+"+|((?:^|[^\\\\])(?:\\\\.)*)"+X+"+$","g"),Y=new RegExp("^"+X+"*,"+X+"*"),w=new RegExp("^"+X+"*([>+~]|"+X+")"+X+"*"),T=new RegExp(X+"|>"),z=new RegExp(k),O=new RegExp("^"+J+"$"),K={ID:new RegExp("^#("+J+")"),CLASS:new RegExp("^\\.("+J+")"),TAG:new RegExp("^("+J+"|[*])"),ATTR:new RegExp("^"+v),PSEUDO:new RegExp("^"+k),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+X+"*(even|odd|(([+-]|)(\\d*)n|)"+X+"*(?:([+-]|)"+X+"*(\\d+)|))"+X+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+X+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+X+"*((?:-\\d)?\\d*)"+X+"*\\)|)(?=[^-]|$)","i")},j=/HTML$/i,P=/^(?:input|select|textarea|button)$/i,_=/^h\d$/i,q=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,gg=/[+~]/,Ig=new RegExp("\\\\([\\da-f]{1,6}"+X+"?|("+X+")|.)","ig"),eg=function(g,I,e){var t="0x"+I-65536;return t!==t||e?I:t<0?String.fromCharCode(t+65536):String.fromCharCode(t>>10|55296,1023&t|56320)},tg=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,Cg=function(g,I){return I?"\0"===g?"\ufffd":g.slice(0,-1)+"\\"+g.charCodeAt(g.length-1).toString(16)+" ":"\\"+g},Qg=function(){c()},Fg=yg((function(g){return!0===g.disabled&&"fieldset"===g.nodeName.toLowerCase()}),{dir:"parentNode",next:"legend"});try{E.apply(h=N.call(b.childNodes),b.childNodes),h[b.childNodes.length].nodeType}catch(Rg){E={apply:h.length?function(g,I){p.apply(g,N.call(I))}:function(g,I){for(var e=g.length,t=0;g[e++]=I[t++];);g.length=e-1}}}function Bg(g,I,t,C){var Q,B,U,s,i,l,o,d=I&&I.ownerDocument,Z=I?I.nodeType:9;if(t=t||[],"string"!==typeof g||!g||1!==Z&&9!==Z&&11!==Z)return t;if(!C&&((I?I.ownerDocument||I:b)!==A&&c(I),I=I||A,a)){if(11!==Z&&(i=$.exec(g)))if(Q=i[1]){if(9===Z){if(!(U=I.getElementById(Q)))return t;if(U.id===Q)return t.push(U),t}else if(d&&(U=d.getElementById(Q))&&u(I,U)&&U.id===Q)return t.push(U),t}else{if(i[2])return E.apply(t,I.getElementsByTagName(g)),t;if((Q=i[3])&&e.getElementsByClassName&&I.getElementsByClassName)return E.apply(t,I.getElementsByClassName(Q)),t}if(e.qsa&&!G[g+" "]&&(!r||!r.test(g))&&(1!==Z||"object"!==I.nodeName.toLowerCase())){if(o=g,d=I,1===Z&&T.test(g)){for((s=I.getAttribute("id"))?s=s.replace(tg,Cg):I.setAttribute("id",s=y),B=(l=F(g)).length;B--;)l[B]="#"+s+" "+ug(l[B]);o=l.join(","),d=gg.test(g)&&og(I.parentNode)||I}try{return E.apply(t,d.querySelectorAll(o)),t}catch(m){G(g,!0)}finally{s===y&&I.removeAttribute("id")}}}return n(g.replace(M,"$1"),I,t,C)}function ng(){var g=[];return function I(e,C){return g.push(e+" ")>t.cacheLength&&delete I[g.shift()],I[e+" "]=C}}function Ug(g){return g[y]=!0,g}function sg(g){var I=A.createElement("fieldset");try{return!!g(I)}catch(Rg){return!1}finally{I.parentNode&&I.parentNode.removeChild(I),I=null}}function ig(g,I){for(var e=g.split("|"),C=e.length;C--;)t.attrHandle[e[C]]=I}function cg(g,I){var e=I&&g,t=e&&1===g.nodeType&&1===I.nodeType&&g.sourceIndex-I.sourceIndex;if(t)return t;if(e)for(;e=e.nextSibling;)if(e===I)return-1;return g?1:-1}function Ag(g){return function(I){return"input"===I.nodeName.toLowerCase()&&I.type===g}}function lg(g){return function(I){var e=I.nodeName.toLowerCase();return("input"===e||"button"===e)&&I.type===g}}function ag(g){return function(I){return"form"in I?I.parentNode&&!1===I.disabled?"label"in I?"label"in I.parentNode?I.parentNode.disabled===g:I.disabled===g:I.isDisabled===g||I.isDisabled!==!g&&Fg(I)===g:I.disabled===g:"label"in I&&I.disabled===g}}function rg(g){return Ug((function(I){return I=+I,Ug((function(e,t){for(var C,Q=g([],e.length,I),F=Q.length;F--;)e[C=Q[F]]&&(e[C]=!(t[C]=e[C]))}))}))}function og(g){return g&&"undefined"!==typeof g.getElementsByTagName&&g}for(I in e=Bg.support={},Q=Bg.isXML=function(g){var I=g.namespaceURI,e=(g.ownerDocument||g).documentElement;return!j.test(I||e&&e.nodeName||"HTML")},c=Bg.setDocument=function(g){var I,C,F=g?g.ownerDocument||g:b;return F!==A&&9===F.nodeType&&F.documentElement?(l=(A=F).documentElement,a=!Q(A),b!==A&&(C=A.defaultView)&&C.top!==C&&(C.addEventListener?C.addEventListener("unload",Qg,!1):C.attachEvent&&C.attachEvent("onunload",Qg)),e.attributes=sg((function(g){return g.className="i",!g.getAttribute("className")})),e.getElementsByTagName=sg((function(g){return g.appendChild(A.createComment("")),!g.getElementsByTagName("*").length})),e.getElementsByClassName=q.test(A.getElementsByClassName),e.getById=sg((function(g){return l.appendChild(g).id=y,!A.getElementsByName||!A.getElementsByName(y).length})),e.getById?(t.filter.ID=function(g){var I=g.replace(Ig,eg);return function(g){return g.getAttribute("id")===I}},t.find.ID=function(g,I){if("undefined"!==typeof I.getElementById&&a){var e=I.getElementById(g);return e?[e]:[]}}):(t.filter.ID=function(g){var I=g.replace(Ig,eg);return function(g){var e="undefined"!==typeof g.getAttributeNode&&g.getAttributeNode("id");return e&&e.value===I}},t.find.ID=function(g,I){if("undefined"!==typeof I.getElementById&&a){var e,t,C,Q=I.getElementById(g);if(Q){if((e=Q.getAttributeNode("id"))&&e.value===g)return[Q];for(C=I.getElementsByName(g),t=0;Q=C[t++];)if((e=Q.getAttributeNode("id"))&&e.value===g)return[Q]}return[]}}),t.find.TAG=e.getElementsByTagName?function(g,I){return"undefined"!==typeof I.getElementsByTagName?I.getElementsByTagName(g):e.qsa?I.querySelectorAll(g):void 0}:function(g,I){var e,t=[],C=0,Q=I.getElementsByTagName(g);if("*"===g){for(;e=Q[C++];)1===e.nodeType&&t.push(e);return t}return Q},t.find.CLASS=e.getElementsByClassName&&function(g,I){if("undefined"!==typeof I.getElementsByClassName&&a)return I.getElementsByClassName(g)},o=[],r=[],(e.qsa=q.test(A.querySelectorAll))&&(sg((function(g){l.appendChild(g).innerHTML="<a id='"+y+"'></a><select id='"+y+"-\r\\' msallowcapture=''><option selected=''></option></select>",g.querySelectorAll("[msallowcapture^='']").length&&r.push("[*^$]="+X+"*(?:''|\"\")"),g.querySelectorAll("[selected]").length||r.push("\\["+X+"*(?:value|"+f+")"),g.querySelectorAll("[id~="+y+"-]").length||r.push("~="),g.querySelectorAll(":checked").length||r.push(":checked"),g.querySelectorAll("a#"+y+"+*").length||r.push(".#.+[+~]")})),sg((function(g){g.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var I=A.createElement("input");I.setAttribute("type","hidden"),g.appendChild(I).setAttribute("name","D"),g.querySelectorAll("[name=d]").length&&r.push("name"+X+"*[*^$|!~]?="),2!==g.querySelectorAll(":enabled").length&&r.push(":enabled",":disabled"),l.appendChild(g).disabled=!0,2!==g.querySelectorAll(":disabled").length&&r.push(":enabled",":disabled"),g.querySelectorAll("*,:x"),r.push(",.*:")}))),(e.matchesSelector=q.test(d=l.matches||l.webkitMatchesSelector||l.mozMatchesSelector||l.oMatchesSelector||l.msMatchesSelector))&&sg((function(g){e.disconnectedMatch=d.call(g,"*"),d.call(g,"[s!='']:x"),o.push("!=",k)})),r=r.length&&new RegExp(r.join("|")),o=o.length&&new RegExp(o.join("|")),I=q.test(l.compareDocumentPosition),u=I||q.test(l.contains)?function(g,I){var e=9===g.nodeType?g.documentElement:g,t=I&&I.parentNode;return g===t||!(!t||1!==t.nodeType||!(e.contains?e.contains(t):g.compareDocumentPosition&&16&g.compareDocumentPosition(t)))}:function(g,I){if(I)for(;I=I.parentNode;)if(I===g)return!0;return!1},L=I?function(g,I){if(g===I)return i=!0,0;var t=!g.compareDocumentPosition-!I.compareDocumentPosition;return t||(1&(t=(g.ownerDocument||g)===(I.ownerDocument||I)?g.compareDocumentPosition(I):1)||!e.sortDetached&&I.compareDocumentPosition(g)===t?g===A||g.ownerDocument===b&&u(b,g)?-1:I===A||I.ownerDocument===b&&u(b,I)?1:s?W(s,g)-W(s,I):0:4&t?-1:1)}:function(g,I){if(g===I)return i=!0,0;var e,t=0,C=g.parentNode,Q=I.parentNode,F=[g],B=[I];if(!C||!Q)return g===A?-1:I===A?1:C?-1:Q?1:s?W(s,g)-W(s,I):0;if(C===Q)return cg(g,I);for(e=g;e=e.parentNode;)F.unshift(e);for(e=I;e=e.parentNode;)B.unshift(e);for(;F[t]===B[t];)t++;return t?cg(F[t],B[t]):F[t]===b?-1:B[t]===b?1:0},A):A},Bg.matches=function(g,I){return Bg(g,null,null,I)},Bg.matchesSelector=function(g,I){if((g.ownerDocument||g)!==A&&c(g),e.matchesSelector&&a&&!G[I+" "]&&(!o||!o.test(I))&&(!r||!r.test(I)))try{var t=d.call(g,I);if(t||e.disconnectedMatch||g.document&&11!==g.document.nodeType)return t}catch(Rg){G(I,!0)}return Bg(I,A,null,[g]).length>0},Bg.contains=function(g,I){return(g.ownerDocument||g)!==A&&c(g),u(g,I)},Bg.attr=function(g,I){(g.ownerDocument||g)!==A&&c(g);var C=t.attrHandle[I.toLowerCase()],Q=C&&V.call(t.attrHandle,I.toLowerCase())?C(g,I,!a):void 0;return void 0!==Q?Q:e.attributes||!a?g.getAttribute(I):(Q=g.getAttributeNode(I))&&Q.specified?Q.value:null},Bg.escape=function(g){return(g+"").replace(tg,Cg)},Bg.error=function(g){throw new Error("Syntax error, unrecognized expression: "+g)},Bg.uniqueSort=function(g){var I,t=[],C=0,Q=0;if(i=!e.detectDuplicates,s=!e.sortStable&&g.slice(0),g.sort(L),i){for(;I=g[Q++];)I===g[Q]&&(C=t.push(Q));for(;C--;)g.splice(t[C],1)}return s=null,g},C=Bg.getText=function(g){var I,e="",t=0,Q=g.nodeType;if(Q){if(1===Q||9===Q||11===Q){if("string"===typeof g.textContent)return g.textContent;for(g=g.firstChild;g;g=g.nextSibling)e+=C(g)}else if(3===Q||4===Q)return g.nodeValue}else for(;I=g[t++];)e+=C(I);return e},(t=Bg.selectors={cacheLength:50,createPseudo:Ug,match:K,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(g){return g[1]=g[1].replace(Ig,eg),g[3]=(g[3]||g[4]||g[5]||"").replace(Ig,eg),"~="===g[2]&&(g[3]=" "+g[3]+" "),g.slice(0,4)},CHILD:function(g){return g[1]=g[1].toLowerCase(),"nth"===g[1].slice(0,3)?(g[3]||Bg.error(g[0]),g[4]=+(g[4]?g[5]+(g[6]||1):2*("even"===g[3]||"odd"===g[3])),g[5]=+(g[7]+g[8]||"odd"===g[3])):g[3]&&Bg.error(g[0]),g},PSEUDO:function(g){var I,e=!g[6]&&g[2];return K.CHILD.test(g[0])?null:(g[3]?g[2]=g[4]||g[5]||"":e&&z.test(e)&&(I=F(e,!0))&&(I=e.indexOf(")",e.length-I)-e.length)&&(g[0]=g[0].slice(0,I),g[2]=e.slice(0,I)),g.slice(0,3))}},filter:{TAG:function(g){var I=g.replace(Ig,eg).toLowerCase();return"*"===g?function(){return!0}:function(g){return g.nodeName&&g.nodeName.toLowerCase()===I}},CLASS:function(g){var I=x[g+" "];return I||(I=new RegExp("(^|"+X+")"+g+"("+X+"|$)"))&&x(g,(function(g){return I.test("string"===typeof g.className&&g.className||"undefined"!==typeof g.getAttribute&&g.getAttribute("class")||"")}))},ATTR:function(g,I,e){return function(t){var C=Bg.attr(t,g);return null==C?"!="===I:!I||(C+="","="===I?C===e:"!="===I?C!==e:"^="===I?e&&0===C.indexOf(e):"*="===I?e&&C.indexOf(e)>-1:"$="===I?e&&C.slice(-e.length)===e:"~="===I?(" "+C.replace(H," ")+" ").indexOf(e)>-1:"|="===I&&(C===e||C.slice(0,e.length+1)===e+"-"))}},CHILD:function(g,I,e,t,C){var Q="nth"!==g.slice(0,3),F="last"!==g.slice(-4),B="of-type"===I;return 1===t&&0===C?function(g){return!!g.parentNode}:function(I,e,n){var U,s,i,c,A,l,a=Q!==F?"nextSibling":"previousSibling",r=I.parentNode,o=B&&I.nodeName.toLowerCase(),d=!n&&!B,u=!1;if(r){if(Q){for(;a;){for(c=I;c=c[a];)if(B?c.nodeName.toLowerCase()===o:1===c.nodeType)return!1;l=a="only"===g&&!l&&"nextSibling"}return!0}if(l=[F?r.firstChild:r.lastChild],F&&d){for(u=(A=(U=(s=(i=(c=r)[y]||(c[y]={}))[c.uniqueID]||(i[c.uniqueID]={}))[g]||[])[0]===Z&&U[1])&&U[2],c=A&&r.childNodes[A];c=++A&&c&&c[a]||(u=A=0)||l.pop();)if(1===c.nodeType&&++u&&c===I){s[g]=[Z,A,u];break}}else if(d&&(u=A=(U=(s=(i=(c=I)[y]||(c[y]={}))[c.uniqueID]||(i[c.uniqueID]={}))[g]||[])[0]===Z&&U[1]),!1===u)for(;(c=++A&&c&&c[a]||(u=A=0)||l.pop())&&((B?c.nodeName.toLowerCase()!==o:1!==c.nodeType)||!++u||(d&&((s=(i=c[y]||(c[y]={}))[c.uniqueID]||(i[c.uniqueID]={}))[g]=[Z,u]),c!==I)););return(u-=C)===t||u%t===0&&u/t>=0}}},PSEUDO:function(g,I){var e,C=t.pseudos[g]||t.setFilters[g.toLowerCase()]||Bg.error("unsupported pseudo: "+g);return C[y]?C(I):C.length>1?(e=[g,g,"",I],t.setFilters.hasOwnProperty(g.toLowerCase())?Ug((function(g,e){for(var t,Q=C(g,I),F=Q.length;F--;)g[t=W(g,Q[F])]=!(e[t]=Q[F])})):function(g){return C(g,0,e)}):C}},pseudos:{not:Ug((function(g){var I=[],e=[],t=B(g.replace(M,"$1"));return t[y]?Ug((function(g,I,e,C){for(var Q,F=t(g,null,C,[]),B=g.length;B--;)(Q=F[B])&&(g[B]=!(I[B]=Q))})):function(g,C,Q){return I[0]=g,t(I,null,Q,e),I[0]=null,!e.pop()}})),has:Ug((function(g){return function(I){return Bg(g,I).length>0}})),contains:Ug((function(g){return g=g.replace(Ig,eg),function(I){return(I.textContent||C(I)).indexOf(g)>-1}})),lang:Ug((function(g){return O.test(g||"")||Bg.error("unsupported lang: "+g),g=g.replace(Ig,eg).toLowerCase(),function(I){var e;do{if(e=a?I.lang:I.getAttribute("xml:lang")||I.getAttribute("lang"))return(e=e.toLowerCase())===g||0===e.indexOf(g+"-")}while((I=I.parentNode)&&1===I.nodeType);return!1}})),target:function(I){var e=g.location&&g.location.hash;return e&&e.slice(1)===I.id},root:function(g){return g===l},focus:function(g){return g===A.activeElement&&(!A.hasFocus||A.hasFocus())&&!!(g.type||g.href||~g.tabIndex)},enabled:ag(!1),disabled:ag(!0),checked:function(g){var I=g.nodeName.toLowerCase();return"input"===I&&!!g.checked||"option"===I&&!!g.selected},selected:function(g){return g.parentNode&&g.parentNode.selectedIndex,!0===g.selected},empty:function(g){for(g=g.firstChild;g;g=g.nextSibling)if(g.nodeType<6)return!1;return!0},parent:function(g){return!t.pseudos.empty(g)},header:function(g){return _.test(g.nodeName)},input:function(g){return P.test(g.nodeName)},button:function(g){var I=g.nodeName.toLowerCase();return"input"===I&&"button"===g.type||"button"===I},text:function(g){var I;return"input"===g.nodeName.toLowerCase()&&"text"===g.type&&(null==(I=g.getAttribute("type"))||"text"===I.toLowerCase())},first:rg((function(){return[0]})),last:rg((function(g,I){return[I-1]})),eq:rg((function(g,I,e){return[e<0?e+I:e]})),even:rg((function(g,I){for(var e=0;e<I;e+=2)g.push(e);return g})),odd:rg((function(g,I){for(var e=1;e<I;e+=2)g.push(e);return g})),lt:rg((function(g,I,e){for(var t=e<0?e+I:e>I?I:e;--t>=0;)g.push(t);return g})),gt:rg((function(g,I,e){for(var t=e<0?e+I:e;++t<I;)g.push(t);return g}))}}).pseudos.nth=t.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})t.pseudos[I]=Ag(I);for(I in{submit:!0,reset:!0})t.pseudos[I]=lg(I);function dg(){}function ug(g){for(var I=0,e=g.length,t="";I<e;I++)t+=g[I].value;return t}function yg(g,I,e){var t=I.dir,C=I.next,Q=C||t,F=e&&"parentNode"===Q,B=m++;return I.first?function(I,e,C){for(;I=I[t];)if(1===I.nodeType||F)return g(I,e,C);return!1}:function(I,e,n){var U,s,i,c=[Z,B];if(n){for(;I=I[t];)if((1===I.nodeType||F)&&g(I,e,n))return!0}else for(;I=I[t];)if(1===I.nodeType||F)if(s=(i=I[y]||(I[y]={}))[I.uniqueID]||(i[I.uniqueID]={}),C&&C===I.nodeName.toLowerCase())I=I[t]||I;else{if((U=s[Q])&&U[0]===Z&&U[1]===B)return c[2]=U[2];if(s[Q]=c,c[2]=g(I,e,n))return!0}return!1}}function bg(g){return g.length>1?function(I,e,t){for(var C=g.length;C--;)if(!g[C](I,e,t))return!1;return!0}:g[0]}function Zg(g,I,e,t,C){for(var Q,F=[],B=0,n=g.length,U=null!=I;B<n;B++)(Q=g[B])&&(e&&!e(Q,t,C)||(F.push(Q),U&&I.push(B)));return F}function mg(g,I,e,t,C,Q){return t&&!t[y]&&(t=mg(t)),C&&!C[y]&&(C=mg(C,Q)),Ug((function(Q,F,B,n){var U,s,i,c=[],A=[],l=F.length,a=Q||function(g,I,e){for(var t=0,C=I.length;t<C;t++)Bg(g,I[t],e);return e}(I||"*",B.nodeType?[B]:B,[]),r=!g||!Q&&I?a:Zg(a,c,g,B,n),o=e?C||(Q?g:l||t)?[]:F:r;if(e&&e(r,o,B,n),t)for(U=Zg(o,A),t(U,[],B,n),s=U.length;s--;)(i=U[s])&&(o[A[s]]=!(r[A[s]]=i));if(Q){if(C||g){if(C){for(U=[],s=o.length;s--;)(i=o[s])&&U.push(r[s]=i);C(null,o=[],U,n)}for(s=o.length;s--;)(i=o[s])&&(U=C?W(Q,i):c[s])>-1&&(Q[U]=!(F[U]=i))}}else o=Zg(o===F?o.splice(l,o.length):o),C?C(null,F,o,n):E.apply(F,o)}))}function xg(g){for(var I,e,C,Q=g.length,F=t.relative[g[0].type],B=F||t.relative[" "],n=F?1:0,s=yg((function(g){return g===I}),B,!0),i=yg((function(g){return W(I,g)>-1}),B,!0),c=[function(g,e,t){var C=!F&&(t||e!==U)||((I=e).nodeType?s(g,e,t):i(g,e,t));return I=null,C}];n<Q;n++)if(e=t.relative[g[n].type])c=[yg(bg(c),e)];else{if((e=t.filter[g[n].type].apply(null,g[n].matches))[y]){for(C=++n;C<Q&&!t.relative[g[C].type];C++);return mg(n>1&&bg(c),n>1&&ug(g.slice(0,n-1).concat({value:" "===g[n-2].type?"*":""})).replace(M,"$1"),e,n<C&&xg(g.slice(n,C)),C<Q&&xg(g=g.slice(C)),C<Q&&ug(g))}c.push(e)}return bg(c)}return dg.prototype=t.filters=t.pseudos,t.setFilters=new dg,F=Bg.tokenize=function(g,I){var e,C,Q,F,B,n,U,s=R[g+" "];if(s)return I?0:s.slice(0);for(B=g,n=[],U=t.preFilter;B;){for(F in e&&!(C=Y.exec(B))||(C&&(B=B.slice(C[0].length)||B),n.push(Q=[])),e=!1,(C=w.exec(B))&&(e=C.shift(),Q.push({value:e,type:C[0].replace(M," ")}),B=B.slice(e.length)),t.filter)!(C=K[F].exec(B))||U[F]&&!(C=U[F](C))||(e=C.shift(),Q.push({value:e,type:F,matches:C}),B=B.slice(e.length));if(!e)break}return I?B.length:B?Bg.error(g):R(g,n).slice(0)},B=Bg.compile=function(g,I){var e,C=[],Q=[],B=S[g+" "];if(!B){for(I||(I=F(g)),e=I.length;e--;)(B=xg(I[e]))[y]?C.push(B):Q.push(B);(B=S(g,function(g,I){var e=I.length>0,C=g.length>0,Q=function(Q,F,B,n,s){var i,l,r,o=0,d="0",u=Q&&[],y=[],b=U,m=Q||C&&t.find.TAG("*",s),x=Z+=null==b?1:Math.random()||.1,R=m.length;for(s&&(U=F===A||F||s);d!==R&&null!=(i=m[d]);d++){if(C&&i){for(l=0,F||i.ownerDocument===A||(c(i),B=!a);r=g[l++];)if(r(i,F||A,B)){n.push(i);break}s&&(Z=x)}e&&((i=!r&&i)&&o--,Q&&u.push(i))}if(o+=d,e&&d!==o){for(l=0;r=I[l++];)r(u,y,F,B);if(Q){if(o>0)for(;d--;)u[d]||y[d]||(y[d]=D.call(n));y=Zg(y)}E.apply(n,y),s&&!Q&&y.length>0&&o+I.length>1&&Bg.uniqueSort(n)}return s&&(Z=x,U=b),u};return e?Ug(Q):Q}(Q,C))).selector=g}return B},n=Bg.select=function(g,I,e,C){var Q,n,U,s,i,c="function"===typeof g&&g,A=!C&&F(g=c.selector||g);if(e=e||[],1===A.length){if((n=A[0]=A[0].slice(0)).length>2&&"ID"===(U=n[0]).type&&9===I.nodeType&&a&&t.relative[n[1].type]){if(!(I=(t.find.ID(U.matches[0].replace(Ig,eg),I)||[])[0]))return e;c&&(I=I.parentNode),g=g.slice(n.shift().value.length)}for(Q=K.needsContext.test(g)?0:n.length;Q--&&(U=n[Q],!t.relative[s=U.type]);)if((i=t.find[s])&&(C=i(U.matches[0].replace(Ig,eg),gg.test(n[0].type)&&og(I.parentNode)||I))){if(n.splice(Q,1),!(g=C.length&&ug(n)))return E.apply(e,C),e;break}}return(c||B(g,A))(C,I,!a,e,!I||gg.test(g)&&og(I.parentNode)||I),e},e.sortStable=y.split("").sort(L).join("")===y,e.detectDuplicates=!!i,c(),e.sortDetached=sg((function(g){return 1&g.compareDocumentPosition(A.createElement("fieldset"))})),sg((function(g){return g.innerHTML="<a href='#'></a>","#"===g.firstChild.getAttribute("href")}))||ig("type|href|height|width",(function(g,I,e){if(!e)return g.getAttribute(I,"type"===I.toLowerCase()?1:2)})),e.attributes&&sg((function(g){return g.innerHTML="<input/>",g.firstChild.setAttribute("value",""),""===g.firstChild.getAttribute("value")}))||ig("value",(function(g,I,e){if(!e&&"input"===g.nodeName.toLowerCase())return g.defaultValue})),sg((function(g){return null==g.getAttribute("disabled")}))||ig(f,(function(g,I,e){var t;if(!e)return!0===g[I]?I.toLowerCase():(t=g.getAttributeNode(I))&&t.specified?t.value:null})),Bg}(e);m.find=S,(m.expr=S.selectors)[":"]=m.expr.pseudos,m.uniqueSort=m.unique=S.uniqueSort,m.text=S.getText,m.isXMLDoc=S.isXML,m.contains=S.contains,m.escapeSelector=S.escape;var G=function(g,I,e){for(var t=[],C=void 0!==e;(g=g[I])&&9!==g.nodeType;)if(1===g.nodeType){if(C&&m(g).is(e))break;t.push(g)}return t},L=function(g,I){for(var e=[];g;g=g.nextSibling)1===g.nodeType&&g!==I&&e.push(g);return e},V=m.expr.match.needsContext;function h(g,I){return g.nodeName&&g.nodeName.toLowerCase()===I.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function p(g,I,e){return d(I)?m.grep(g,(function(g,t){return!!I.call(g,t,g)!==e})):I.nodeType?m.grep(g,(function(g){return g===I!==e})):"string"!==typeof I?m.grep(g,(function(g){return i.call(I,g)>-1!==e})):m.filter(I,g,e)}m.filter=function(g,I,e){var t=I[0];return e&&(g=":not("+g+")"),1===I.length&&1===t.nodeType?m.find.matchesSelector(t,g)?[t]:[]:m.find.matches(g,m.grep(I,(function(g){return 1===g.nodeType})))},m.fn.extend({find:function(g){var I,e,t=this.length,C=this;if("string"!==typeof g)return this.pushStack(m(g).filter((function(){for(I=0;I<t;I++)if(m.contains(C[I],this))return!0})));for(e=this.pushStack([]),I=0;I<t;I++)m.find(g,C[I],e);return t>1?m.uniqueSort(e):e},filter:function(g){return this.pushStack(p(this,g||[],!1))},not:function(g){return this.pushStack(p(this,g||[],!0))},is:function(g){return!!p(this,"string"===typeof g&&V.test(g)?m(g):g||[],!1).length}});var E,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(m.fn.init=function(g,I,e){var t,C;if(!g)return this;if(e=e||E,"string"===typeof g){if(!(t="<"===g[0]&&">"===g[g.length-1]&&g.length>=3?[null,g,null]:N.exec(g))||!t[1]&&I)return!I||I.jquery?(I||e).find(g):this.constructor(I).find(g);if(t[1]){if(I=I instanceof m?I[0]:I,m.merge(this,m.parseHTML(t[1],I&&I.nodeType?I.ownerDocument||I:F,!0)),D.test(t[1])&&m.isPlainObject(I))for(t in I)d(this[t])?this[t](I[t]):this.attr(t,I[t]);return this}return(C=F.getElementById(t[2]))&&(this[0]=C,this.length=1),this}return g.nodeType?(this[0]=g,this.length=1,this):d(g)?void 0!==e.ready?e.ready(g):g(m):m.makeArray(g,this)}).prototype=m.fn,E=m(F);var W=/^(?:parents|prev(?:Until|All))/,f={children:!0,contents:!0,next:!0,prev:!0};function X(g,I){for(;(g=g[I])&&1!==g.nodeType;);return g}m.fn.extend({has:function(g){var I=m(g,this),e=I.length;return this.filter((function(){for(var g=0;g<e;g++)if(m.contains(this,I[g]))return!0}))},closest:function(g,I){var e,t=0,C=this.length,Q=[],F="string"!==typeof g&&m(g);if(!V.test(g))for(;t<C;t++)for(e=this[t];e&&e!==I;e=e.parentNode)if(e.nodeType<11&&(F?F.index(e)>-1:1===e.nodeType&&m.find.matchesSelector(e,g))){Q.push(e);break}return this.pushStack(Q.length>1?m.uniqueSort(Q):Q)},index:function(g){return g?"string"===typeof g?i.call(m(g),this[0]):i.call(this,g.jquery?g[0]:g):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(g,I){return this.pushStack(m.uniqueSort(m.merge(this.get(),m(g,I))))},addBack:function(g){return this.add(null==g?this.prevObject:this.prevObject.filter(g))}}),m.each({parent:function(g){var I=g.parentNode;return I&&11!==I.nodeType?I:null},parents:function(g){return G(g,"parentNode")},parentsUntil:function(g,I,e){return G(g,"parentNode",e)},next:function(g){return X(g,"nextSibling")},prev:function(g){return X(g,"previousSibling")},nextAll:function(g){return G(g,"nextSibling")},prevAll:function(g){return G(g,"previousSibling")},nextUntil:function(g,I,e){return G(g,"nextSibling",e)},prevUntil:function(g,I,e){return G(g,"previousSibling",e)},siblings:function(g){return L((g.parentNode||{}).firstChild,g)},children:function(g){return L(g.firstChild)},contents:function(g){return"undefined"!==typeof g.contentDocument?g.contentDocument:(h(g,"template")&&(g=g.content||g),m.merge([],g.childNodes))}},(function(g,I){m.fn[g]=function(e,t){var C=m.map(this,I,e);return"Until"!==g.slice(-5)&&(t=e),t&&"string"===typeof t&&(C=m.filter(t,C)),this.length>1&&(f[g]||m.uniqueSort(C),W.test(g)&&C.reverse()),this.pushStack(C)}}));var J=/[^\x20\t\r\n\f]+/g;function v(g){return g}function k(g){throw g}function H(g,I,e,t){var C;try{g&&d(C=g.promise)?C.call(g).done(I).fail(e):g&&d(C=g.then)?C.call(g,I,e):I.apply(void 0,[g].slice(t))}catch(g){e.apply(void 0,[g])}}m.Callbacks=function(g){g="string"===typeof g?function(g){var I={};return m.each(g.match(J)||[],(function(g,e){I[e]=!0})),I}(g):m.extend({},g);var I,e,t,C,Q=[],F=[],B=-1,n=function(){for(C=C||g.once,t=I=!0;F.length;B=-1)for(e=F.shift();++B<Q.length;)!1===Q[B].apply(e[0],e[1])&&g.stopOnFalse&&(B=Q.length,e=!1);g.memory||(e=!1),I=!1,C&&(Q=e?[]:"")},U={add:function(){return Q&&(e&&!I&&(B=Q.length-1,F.push(e)),function I(e){m.each(e,(function(e,t){d(t)?g.unique&&U.has(t)||Q.push(t):t&&t.length&&"string"!==Z(t)&&I(t)}))}(arguments),e&&!I&&n()),this},remove:function(){return m.each(arguments,(function(g,I){for(var e;(e=m.inArray(I,Q,e))>-1;)Q.splice(e,1),e<=B&&B--})),this},has:function(g){return g?m.inArray(g,Q)>-1:Q.length>0},empty:function(){return Q&&(Q=[]),this},disable:function(){return C=F=[],Q=e="",this},disabled:function(){return!Q},lock:function(){return C=F=[],e||I||(Q=e=""),this},locked:function(){return!!C},fireWith:function(g,e){return C||(e=[g,(e=e||[]).slice?e.slice():e],F.push(e),I||n()),this},fire:function(){return U.fireWith(this,arguments),this},fired:function(){return!!t}};return U},m.extend({Deferred:function(g){var I=[["notify","progress",m.Callbacks("memory"),m.Callbacks("memory"),2],["resolve","done",m.Callbacks("once memory"),m.Callbacks("once memory"),0,"resolved"],["reject","fail",m.Callbacks("once memory"),m.Callbacks("once memory"),1,"rejected"]],t="pending",C={state:function(){return t},always:function(){return Q.done(arguments).fail(arguments),this},catch:function(g){return C.then(null,g)},pipe:function(){var g=arguments;return m.Deferred((function(e){m.each(I,(function(I,t){var C=d(g[t[4]])&&g[t[4]];Q[t[1]]((function(){var g=C&&C.apply(this,arguments);g&&d(g.promise)?g.promise().progress(e.notify).done(e.resolve).fail(e.reject):e[t[0]+"With"](this,C?[g]:arguments)}))})),g=null})).promise()},then:function(g,t,C){var Q=0;function F(g,I,t,C){return function(){var B=this,n=arguments,U=function(){var e,U;if(!(g<Q)){if((e=t.apply(B,n))===I.promise())throw new TypeError("Thenable self-resolution");U=e&&("object"===typeof e||"function"===typeof e)&&e.then,d(U)?C?U.call(e,F(Q,I,v,C),F(Q,I,k,C)):(Q++,U.call(e,F(Q,I,v,C),F(Q,I,k,C),F(Q,I,v,I.notifyWith))):(t!==v&&(B=void 0,n=[e]),(C||I.resolveWith)(B,n))}},s=C?U:function(){try{U()}catch(e){m.Deferred.exceptionHook&&m.Deferred.exceptionHook(e,s.stackTrace),g+1>=Q&&(t!==k&&(B=void 0,n=[e]),I.rejectWith(B,n))}};g?s():(m.Deferred.getStackHook&&(s.stackTrace=m.Deferred.getStackHook()),e.setTimeout(s))}}return m.Deferred((function(e){I[0][3].add(F(0,e,d(C)?C:v,e.notifyWith)),I[1][3].add(F(0,e,d(g)?g:v)),I[2][3].add(F(0,e,d(t)?t:k))})).promise()},promise:function(g){return null!=g?m.extend(g,C):C}},Q={};return m.each(I,(function(g,e){var F=e[2],B=e[5];C[e[1]]=F.add,B&&F.add((function(){t=B}),I[3-g][2].disable,I[3-g][3].disable,I[0][2].lock,I[0][3].lock),F.add(e[3].fire),Q[e[0]]=function(){return Q[e[0]+"With"](this===Q?void 0:this,arguments),this},Q[e[0]+"With"]=F.fireWith})),C.promise(Q),g&&g.call(Q,Q),Q},when:function(g){var I=arguments.length,e=I,t=Array(e),C=n.call(arguments),Q=m.Deferred(),F=function(g){return function(e){t[g]=this,C[g]=arguments.length>1?n.call(arguments):e,--I||Q.resolveWith(t,C)}};if(I<=1&&(H(g,Q.done(F(e)).resolve,Q.reject,!I),"pending"===Q.state()||d(C[e]&&C[e].then)))return Q.then();for(;e--;)H(C[e],F(e),Q.reject);return Q.promise()}});var M=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;m.Deferred.exceptionHook=function(g,I){e.console&&e.console.warn&&g&&M.test(g.name)&&e.console.warn("jQuery.Deferred exception: "+g.message,g.stack,I)},m.readyException=function(g){e.setTimeout((function(){throw g}))};var Y=m.Deferred();function w(){F.removeEventListener("DOMContentLoaded",w),e.removeEventListener("load",w),m.ready()}m.fn.ready=function(g){return Y.then(g).catch((function(g){m.readyException(g)})),this},m.extend({isReady:!1,readyWait:1,ready:function(g){(!0===g?--m.readyWait:m.isReady)||(m.isReady=!0,!0!==g&&--m.readyWait>0||Y.resolveWith(F,[m]))}}),m.ready.then=Y.then,"complete"===F.readyState||"loading"!==F.readyState&&!F.documentElement.doScroll?e.setTimeout(m.ready):(F.addEventListener("DOMContentLoaded",w),e.addEventListener("load",w));var T=function g(I,e,t,C,Q,F,B){var n=0,U=I.length,s=null==t;if("object"===Z(t))for(n in Q=!0,t)g(I,e,n,t[n],!0,F,B);else if(void 0!==C&&(Q=!0,d(C)||(B=!0),s&&(B?(e.call(I,C),e=null):(s=e,e=function(g,I,e){return s.call(m(g),e)})),e))for(;n<U;n++)e(I[n],t,B?C:C.call(I[n],n,e(I[n],t)));return Q?I:s?e.call(I):U?e(I[0],t):F},z=/^-ms-/,O=/-([a-z])/g;function K(g,I){return I.toUpperCase()}function j(g){return g.replace(z,"ms-").replace(O,K)}var P=function(g){return 1===g.nodeType||9===g.nodeType||!+g.nodeType};function _(){this.expando=m.expando+_.uid++}_.uid=1,_.prototype={cache:function(g){var I=g[this.expando];return I||(I={},P(g)&&(g.nodeType?g[this.expando]=I:Object.defineProperty(g,this.expando,{value:I,configurable:!0}))),I},set:function(g,I,e){var t,C=this.cache(g);if("string"===typeof I)C[j(I)]=e;else for(t in I)C[j(t)]=I[t];return C},get:function(g,I){return void 0===I?this.cache(g):g[this.expando]&&g[this.expando][j(I)]},access:function(g,I,e){return void 0===I||I&&"string"===typeof I&&void 0===e?this.get(g,I):(this.set(g,I,e),void 0!==e?e:I)},remove:function(g,I){var e,t=g[this.expando];if(void 0!==t){if(void 0!==I){e=(I=Array.isArray(I)?I.map(j):(I=j(I))in t?[I]:I.match(J)||[]).length;for(;e--;)delete t[I[e]]}(void 0===I||m.isEmptyObject(t))&&(g.nodeType?g[this.expando]=void 0:delete g[this.expando])}},hasData:function(g){var I=g[this.expando];return void 0!==I&&!m.isEmptyObject(I)}};var q=new _,$=new _,gg=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Ig=/[A-Z]/g;function eg(g,I,e){var t;if(void 0===e&&1===g.nodeType)if(t="data-"+I.replace(Ig,"-$&").toLowerCase(),"string"===typeof(e=g.getAttribute(t))){try{e=function(g){return"true"===g||"false"!==g&&("null"===g?null:g===+g+""?+g:gg.test(g)?JSON.parse(g):g)}(e)}catch(C){}$.set(g,I,e)}else e=void 0;return e}m.extend({hasData:function(g){return $.hasData(g)||q.hasData(g)},data:function(g,I,e){return $.access(g,I,e)},removeData:function(g,I){$.remove(g,I)},_data:function(g,I,e){return q.access(g,I,e)},_removeData:function(g,I){q.remove(g,I)}}),m.fn.extend({data:function(g,I){var e,t,C,Q=this[0],F=Q&&Q.attributes;if(void 0===g){if(this.length&&(C=$.get(Q),1===Q.nodeType&&!q.get(Q,"hasDataAttrs"))){for(e=F.length;e--;)F[e]&&0===(t=F[e].name).indexOf("data-")&&(t=j(t.slice(5)),eg(Q,t,C[t]));q.set(Q,"hasDataAttrs",!0)}return C}return"object"===typeof g?this.each((function(){$.set(this,g)})):T(this,(function(I){var e;if(Q&&void 0===I)return void 0!==(e=$.get(Q,g))||void 0!==(e=eg(Q,g))?e:void 0;this.each((function(){$.set(this,g,I)}))}),null,I,arguments.length>1,null,!0)},removeData:function(g){return this.each((function(){$.remove(this,g)}))}}),m.extend({queue:function(g,I,e){var t;if(g)return I=(I||"fx")+"queue",t=q.get(g,I),e&&(!t||Array.isArray(e)?t=q.access(g,I,m.makeArray(e)):t.push(e)),t||[]},dequeue:function(g,I){var e=m.queue(g,I=I||"fx"),t=e.length,C=e.shift(),Q=m._queueHooks(g,I);"inprogress"===C&&(C=e.shift(),t--),C&&("fx"===I&&e.unshift("inprogress"),delete Q.stop,C.call(g,(function(){m.dequeue(g,I)}),Q)),!t&&Q&&Q.empty.fire()},_queueHooks:function(g,I){var e=I+"queueHooks";return q.get(g,e)||q.access(g,e,{empty:m.Callbacks("once memory").add((function(){q.remove(g,[I+"queue",e])}))})}}),m.fn.extend({queue:function(g,I){var e=2;return"string"!==typeof g&&(I=g,g="fx",e--),arguments.length<e?m.queue(this[0],g):void 0===I?this:this.each((function(){var e=m.queue(this,g,I);m._queueHooks(this,g),"fx"===g&&"inprogress"!==e[0]&&m.dequeue(this,g)}))},dequeue:function(g){return this.each((function(){m.dequeue(this,g)}))},clearQueue:function(g){return this.queue(g||"fx",[])},promise:function(g,I){var e,t=1,C=m.Deferred(),Q=this,F=this.length,B=function(){--t||C.resolveWith(Q,[Q])};for("string"!==typeof g&&(I=g,g=void 0),g=g||"fx";F--;)(e=q.get(Q[F],g+"queueHooks"))&&e.empty&&(t++,e.empty.add(B));return B(),C.promise(I)}});var tg=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,Cg=new RegExp("^(?:([+-])=|)("+tg+")([a-z%]*)$","i"),Qg=["Top","Right","Bottom","Left"],Fg=F.documentElement,Bg=function(g){return m.contains(g.ownerDocument,g)},ng={composed:!0};Fg.getRootNode&&(Bg=function(g){return m.contains(g.ownerDocument,g)||g.getRootNode(ng)===g.ownerDocument});var Ug=function(g,I){return"none"===(g=I||g).style.display||""===g.style.display&&Bg(g)&&"none"===m.css(g,"display")},sg=function(g,I,e,t){var C,Q,F={};for(Q in I)F[Q]=g.style[Q],g.style[Q]=I[Q];for(Q in C=e.apply(g,t||[]),I)g.style[Q]=F[Q];return C};function ig(g,I,e,t){var C,Q,F=20,B=t?function(){return t.cur()}:function(){return m.css(g,I,"")},n=B(),U=e&&e[3]||(m.cssNumber[I]?"":"px"),s=g.nodeType&&(m.cssNumber[I]||"px"!==U&&+n)&&Cg.exec(m.css(g,I));if(s&&s[3]!==U){for(n/=2,U=U||s[3],s=+n||1;F--;)m.style(g,I,s+U),(1-Q)*(1-(Q=B()/n||.5))<=0&&(F=0),s/=Q;m.style(g,I,(s*=2)+U),e=e||[]}return e&&(s=+s||+n||0,C=e[1]?s+(e[1]+1)*e[2]:+e[2],t&&(t.unit=U,t.start=s,t.end=C)),C}var cg={};function Ag(g){var I,e=g.ownerDocument,t=g.nodeName,C=cg[t];return C||(I=e.body.appendChild(e.createElement(t)),C=m.css(I,"display"),I.parentNode.removeChild(I),"none"===C&&(C="block"),cg[t]=C,C)}function lg(g,I){for(var e,t,C=[],Q=0,F=g.length;Q<F;Q++)(t=g[Q]).style&&(e=t.style.display,I?("none"===e&&(C[Q]=q.get(t,"display")||null,C[Q]||(t.style.display="")),""===t.style.display&&Ug(t)&&(C[Q]=Ag(t))):"none"!==e&&(C[Q]="none",q.set(t,"display",e)));for(Q=0;Q<F;Q++)null!=C[Q]&&(g[Q].style.display=C[Q]);return g}m.fn.extend({show:function(){return lg(this,!0)},hide:function(){return lg(this)},toggle:function(g){return"boolean"===typeof g?g?this.show():this.hide():this.each((function(){Ug(this)?m(this).show():m(this).hide()}))}});var ag=/^(?:checkbox|radio)$/i,rg=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,og=/^$|^module$|\/(?:java|ecma)script/i,dg={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ug(g,I){var e;return e="undefined"!==typeof g.getElementsByTagName?g.getElementsByTagName(I||"*"):"undefined"!==typeof g.querySelectorAll?g.querySelectorAll(I||"*"):[],void 0===I||I&&h(g,I)?m.merge([g],e):e}function yg(g,I){for(var e=0,t=g.length;e<t;e++)q.set(g[e],"globalEval",!I||q.get(I[e],"globalEval"))}dg.optgroup=dg.option,dg.tbody=dg.tfoot=dg.colgroup=dg.caption=dg.thead,dg.th=dg.td;var bg=/<|&#?\w+;/;function Zg(g,I,e,t,C){for(var Q,F,B,n,U,s,i=I.createDocumentFragment(),c=[],A=0,l=g.length;A<l;A++)if((Q=g[A])||0===Q)if("object"===Z(Q))m.merge(c,Q.nodeType?[Q]:Q);else if(bg.test(Q)){for(F=F||i.appendChild(I.createElement("div")),B=(rg.exec(Q)||["",""])[1].toLowerCase(),n=dg[B]||dg._default,F.innerHTML=n[1]+m.htmlPrefilter(Q)+n[2],s=n[0];s--;)F=F.lastChild;m.merge(c,F.childNodes),(F=i.firstChild).textContent=""}else c.push(I.createTextNode(Q));for(i.textContent="",A=0;Q=c[A++];)if(t&&m.inArray(Q,t)>-1)C&&C.push(Q);else if(U=Bg(Q),F=ug(i.appendChild(Q),"script"),U&&yg(F),e)for(s=0;Q=F[s++];)og.test(Q.type||"")&&e.push(Q);return i}!function(){var g=F.createDocumentFragment().appendChild(F.createElement("div")),I=F.createElement("input");I.setAttribute("type","radio"),I.setAttribute("checked","checked"),I.setAttribute("name","t"),g.appendChild(I),o.checkClone=g.cloneNode(!0).cloneNode(!0).lastChild.checked,g.innerHTML="<textarea>x</textarea>",o.noCloneChecked=!!g.cloneNode(!0).lastChild.defaultValue}();var mg=/^key/,xg=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Rg=/^([^.]*)(?:\.(.+)|)/;function Sg(){return!0}function Gg(){return!1}function Lg(g,I){return g===function(){try{return F.activeElement}catch(g){}}()===("focus"===I)}function Vg(g,I,e,t,C,Q){var F,B;if("object"===typeof I){for(B in"string"!==typeof e&&(t=t||e,e=void 0),I)Vg(g,B,e,t,I[B],Q);return g}if(null==t&&null==C?(C=e,t=e=void 0):null==C&&("string"===typeof e?(C=t,t=void 0):(C=t,t=e,e=void 0)),!1===C)C=Gg;else if(!C)return g;return 1===Q&&(F=C,(C=function(g){return m().off(g),F.apply(this,arguments)}).guid=F.guid||(F.guid=m.guid++)),g.each((function(){m.event.add(this,I,C,t,e)}))}function hg(g,I,e){e?(q.set(g,I,!1),m.event.add(g,I,{namespace:!1,handler:function(g){var t,C,Q=q.get(this,I);if(1&g.isTrigger&&this[I]){if(Q.length)(m.event.special[I]||{}).delegateType&&g.stopPropagation();else if(Q=n.call(arguments),q.set(this,I,Q),t=e(this,I),this[I](),Q!==(C=q.get(this,I))||t?q.set(this,I,!1):C={},Q!==C)return g.stopImmediatePropagation(),g.preventDefault(),C.value}else Q.length&&(q.set(this,I,{value:m.event.trigger(m.extend(Q[0],m.Event.prototype),Q.slice(1),this)}),g.stopImmediatePropagation())}})):void 0===q.get(g,I)&&m.event.add(g,I,Sg)}m.event={global:{},add:function(g,I,e,t,C){var Q,F,B,n,U,s,i,c,A,l,a,r=q.get(g);if(r)for(e.handler&&(e=(Q=e).handler,C=Q.selector),C&&m.find.matchesSelector(Fg,C),e.guid||(e.guid=m.guid++),(n=r.events)||(n=r.events={}),(F=r.handle)||(F=r.handle=function(I){return m.event.triggered!==I.type?m.event.dispatch.apply(g,arguments):void 0}),U=(I=(I||"").match(J)||[""]).length;U--;)A=a=(B=Rg.exec(I[U])||[])[1],l=(B[2]||"").split(".").sort(),A&&(i=m.event.special[A]||{},A=(C?i.delegateType:i.bindType)||A,i=m.event.special[A]||{},s=m.extend({type:A,origType:a,data:t,handler:e,guid:e.guid,selector:C,needsContext:C&&m.expr.match.needsContext.test(C),namespace:l.join(".")},Q),(c=n[A])||((c=n[A]=[]).delegateCount=0,i.setup&&!1!==i.setup.call(g,t,l,F)||g.addEventListener&&g.addEventListener(A,F)),i.add&&(i.add.call(g,s),s.handler.guid||(s.handler.guid=e.guid)),C?c.splice(c.delegateCount++,0,s):c.push(s),m.event.global[A]=!0)},remove:function(g,I,e,t,C){var Q,F,B,n,U,s,i,c,A,l,a,r=q.hasData(g)&&q.get(g);if(r&&(n=r.events)){for(U=(I=(I||"").match(J)||[""]).length;U--;)if(A=a=(B=Rg.exec(I[U])||[])[1],l=(B[2]||"").split(".").sort(),A){for(i=m.event.special[A]||{},c=n[A=(t?i.delegateType:i.bindType)||A]||[],B=B[2]&&new RegExp("(^|\\.)"+l.join("\\.(?:.*\\.|)")+"(\\.|$)"),F=Q=c.length;Q--;)s=c[Q],!C&&a!==s.origType||e&&e.guid!==s.guid||B&&!B.test(s.namespace)||t&&t!==s.selector&&("**"!==t||!s.selector)||(c.splice(Q,1),s.selector&&c.delegateCount--,i.remove&&i.remove.call(g,s));F&&!c.length&&(i.teardown&&!1!==i.teardown.call(g,l,r.handle)||m.removeEvent(g,A,r.handle),delete n[A])}else for(A in n)m.event.remove(g,A+I[U],e,t,!0);m.isEmptyObject(n)&&q.remove(g,"handle events")}},dispatch:function(g){var I,e,t,C,Q,F,B=m.event.fix(g),n=new Array(arguments.length),U=(q.get(this,"events")||{})[B.type]||[],s=m.event.special[B.type]||{};for(n[0]=B,I=1;I<arguments.length;I++)n[I]=arguments[I];if(B.delegateTarget=this,!s.preDispatch||!1!==s.preDispatch.call(this,B)){for(F=m.event.handlers.call(this,B,U),I=0;(C=F[I++])&&!B.isPropagationStopped();)for(B.currentTarget=C.elem,e=0;(Q=C.handlers[e++])&&!B.isImmediatePropagationStopped();)B.rnamespace&&!1!==Q.namespace&&!B.rnamespace.test(Q.namespace)||(B.handleObj=Q,B.data=Q.data,void 0!==(t=((m.event.special[Q.origType]||{}).handle||Q.handler).apply(C.elem,n))&&!1===(B.result=t)&&(B.preventDefault(),B.stopPropagation()));return s.postDispatch&&s.postDispatch.call(this,B),B.result}},handlers:function(g,I){var e,t,C,Q,F,B=[],n=I.delegateCount,U=g.target;if(n&&U.nodeType&&!("click"===g.type&&g.button>=1))for(;U!==this;U=U.parentNode||this)if(1===U.nodeType&&("click"!==g.type||!0!==U.disabled)){for(Q=[],F={},e=0;e<n;e++)void 0===F[C=(t=I[e]).selector+" "]&&(F[C]=t.needsContext?m(C,this).index(U)>-1:m.find(C,this,null,[U]).length),F[C]&&Q.push(t);Q.length&&B.push({elem:U,handlers:Q})}return U=this,n<I.length&&B.push({elem:U,handlers:I.slice(n)}),B},addProp:function(g,I){Object.defineProperty(m.Event.prototype,g,{enumerable:!0,configurable:!0,get:d(I)?function(){if(this.originalEvent)return I(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[g]},set:function(I){Object.defineProperty(this,g,{enumerable:!0,configurable:!0,writable:!0,value:I})}})},fix:function(g){return g[m.expando]?g:new m.Event(g)},special:{load:{noBubble:!0},click:{setup:function(g){var I=this||g;return ag.test(I.type)&&I.click&&h(I,"input")&&hg(I,"click",Sg),!1},trigger:function(g){var I=this||g;return ag.test(I.type)&&I.click&&h(I,"input")&&hg(I,"click"),!0},_default:function(g){var I=g.target;return ag.test(I.type)&&I.click&&h(I,"input")&&q.get(I,"click")||h(I,"a")}},beforeunload:{postDispatch:function(g){void 0!==g.result&&g.originalEvent&&(g.originalEvent.returnValue=g.result)}}}},m.removeEvent=function(g,I,e){g.removeEventListener&&g.removeEventListener(I,e)},(m.Event=function(g,I){if(!(this instanceof m.Event))return new m.Event(g,I);g&&g.type?(this.originalEvent=g,this.type=g.type,this.isDefaultPrevented=g.defaultPrevented||void 0===g.defaultPrevented&&!1===g.returnValue?Sg:Gg,this.target=g.target&&3===g.target.nodeType?g.target.parentNode:g.target,this.currentTarget=g.currentTarget,this.relatedTarget=g.relatedTarget):this.type=g,I&&m.extend(this,I),this.timeStamp=g&&g.timeStamp||Date.now(),this[m.expando]=!0}).prototype={constructor:m.Event,isDefaultPrevented:Gg,isPropagationStopped:Gg,isImmediatePropagationStopped:Gg,isSimulated:!1,preventDefault:function(){var g=this.originalEvent;this.isDefaultPrevented=Sg,g&&!this.isSimulated&&g.preventDefault()},stopPropagation:function(){var g=this.originalEvent;this.isPropagationStopped=Sg,g&&!this.isSimulated&&g.stopPropagation()},stopImmediatePropagation:function(){var g=this.originalEvent;this.isImmediatePropagationStopped=Sg,g&&!this.isSimulated&&g.stopImmediatePropagation(),this.stopPropagation()}},m.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,char:!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(g){var I=g.button;return null==g.which&&mg.test(g.type)?null!=g.charCode?g.charCode:g.keyCode:!g.which&&void 0!==I&&xg.test(g.type)?1&I?1:2&I?3:4&I?2:0:g.which}},m.event.addProp),m.each({focus:"focusin",blur:"focusout"},(function(g,I){m.event.special[g]={setup:function(){return hg(this,g,Lg),!1},trigger:function(){return hg(this,g),!0},delegateType:I}})),m.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},(function(g,I){m.event.special[g]={delegateType:I,bindType:I,handle:function(g){var e,t=this,C=g.relatedTarget,Q=g.handleObj;return C&&(C===t||m.contains(t,C))||(g.type=Q.origType,e=Q.handler.apply(this,arguments),g.type=I),e}}})),m.fn.extend({on:function(g,I,e,t){return Vg(this,g,I,e,t)},one:function(g,I,e,t){return Vg(this,g,I,e,t,1)},off:function(g,I,e){var t,C;if(g&&g.preventDefault&&g.handleObj)return t=g.handleObj,m(g.delegateTarget).off(t.namespace?t.origType+"."+t.namespace:t.origType,t.selector,t.handler),this;if("object"===typeof g){for(C in g)this.off(C,I,g[C]);return this}return!1!==I&&"function"!==typeof I||(e=I,I=void 0),!1===e&&(e=Gg),this.each((function(){m.event.remove(this,g,e,I)}))}});var Dg=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,pg=/<script|<style|<link/i,Eg=/checked\s*(?:[^=]|=\s*.checked.)/i,Ng=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Wg(g,I){return h(g,"table")&&h(11!==I.nodeType?I:I.firstChild,"tr")&&m(g).children("tbody")[0]||g}function fg(g){return g.type=(null!==g.getAttribute("type"))+"/"+g.type,g}function Xg(g){return"true/"===(g.type||"").slice(0,5)?g.type=g.type.slice(5):g.removeAttribute("type"),g}function Jg(g,I){var e,t,C,Q,F,B,n,U;if(1===I.nodeType){if(q.hasData(g)&&(Q=q.access(g),F=q.set(I,Q),U=Q.events))for(C in delete F.handle,F.events={},U)for(e=0,t=U[C].length;e<t;e++)m.event.add(I,C,U[C][e]);$.hasData(g)&&(B=$.access(g),n=m.extend({},B),$.set(I,n))}}function vg(g,I){var e=I.nodeName.toLowerCase();"input"===e&&ag.test(g.type)?I.checked=g.checked:"input"!==e&&"textarea"!==e||(I.defaultValue=g.defaultValue)}function kg(g,I,e,t){I=U.apply([],I);var C,Q,F,B,n,s,i=0,c=g.length,A=c-1,l=I[0],a=d(l);if(a||c>1&&"string"===typeof l&&!o.checkClone&&Eg.test(l))return g.each((function(C){var Q=g.eq(C);a&&(I[0]=l.call(this,C,Q.html())),kg(Q,I,e,t)}));if(c&&(Q=(C=Zg(I,g[0].ownerDocument,!1,g,t)).firstChild,1===C.childNodes.length&&(C=Q),Q||t)){for(B=(F=m.map(ug(C,"script"),fg)).length;i<c;i++)n=C,i!==A&&(n=m.clone(n,!0,!0),B&&m.merge(F,ug(n,"script"))),e.call(g[i],n,i);if(B)for(s=F[F.length-1].ownerDocument,m.map(F,Xg),i=0;i<B;i++)n=F[i],og.test(n.type||"")&&!q.access(n,"globalEval")&&m.contains(s,n)&&(n.src&&"module"!==(n.type||"").toLowerCase()?m._evalUrl&&!n.noModule&&m._evalUrl(n.src,{nonce:n.nonce||n.getAttribute("nonce")}):b(n.textContent.replace(Ng,""),n,s))}return g}function Hg(g,I,e){for(var t,C=I?m.filter(I,g):g,Q=0;null!=(t=C[Q]);Q++)e||1!==t.nodeType||m.cleanData(ug(t)),t.parentNode&&(e&&Bg(t)&&yg(ug(t,"script")),t.parentNode.removeChild(t));return g}m.extend({htmlPrefilter:function(g){return g.replace(Dg,"<$1></$2>")},clone:function(g,I,e){var t,C,Q,F,B=g.cloneNode(!0),n=Bg(g);if(!o.noCloneChecked&&(1===g.nodeType||11===g.nodeType)&&!m.isXMLDoc(g))for(F=ug(B),t=0,C=(Q=ug(g)).length;t<C;t++)vg(Q[t],F[t]);if(I)if(e)for(Q=Q||ug(g),F=F||ug(B),t=0,C=Q.length;t<C;t++)Jg(Q[t],F[t]);else Jg(g,B);return(F=ug(B,"script")).length>0&&yg(F,!n&&ug(g,"script")),B},cleanData:function(g){for(var I,e,t,C=m.event.special,Q=0;void 0!==(e=g[Q]);Q++)if(P(e)){if(I=e[q.expando]){if(I.events)for(t in I.events)C[t]?m.event.remove(e,t):m.removeEvent(e,t,I.handle);e[q.expando]=void 0}e[$.expando]&&(e[$.expando]=void 0)}}}),m.fn.extend({detach:function(g){return Hg(this,g,!0)},remove:function(g){return Hg(this,g)},text:function(g){return T(this,(function(g){return void 0===g?m.text(this):this.empty().each((function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=g)}))}),null,g,arguments.length)},append:function(){return kg(this,arguments,(function(g){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Wg(this,g).appendChild(g)}))},prepend:function(){return kg(this,arguments,(function(g){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var I=Wg(this,g);I.insertBefore(g,I.firstChild)}}))},before:function(){return kg(this,arguments,(function(g){this.parentNode&&this.parentNode.insertBefore(g,this)}))},after:function(){return kg(this,arguments,(function(g){this.parentNode&&this.parentNode.insertBefore(g,this.nextSibling)}))},empty:function(){for(var g,I=0;null!=(g=this[I]);I++)1===g.nodeType&&(m.cleanData(ug(g,!1)),g.textContent="");return this},clone:function(g,I){return g=null!=g&&g,I=null==I?g:I,this.map((function(){return m.clone(this,g,I)}))},html:function(g){return T(this,(function(g){var I=this[0]||{},e=0,t=this.length;if(void 0===g&&1===I.nodeType)return I.innerHTML;if("string"===typeof g&&!pg.test(g)&&!dg[(rg.exec(g)||["",""])[1].toLowerCase()]){g=m.htmlPrefilter(g);try{for(;e<t;e++)1===(I=this[e]||{}).nodeType&&(m.cleanData(ug(I,!1)),I.innerHTML=g);I=0}catch(C){}}I&&this.empty().append(g)}),null,g,arguments.length)},replaceWith:function(){var g=[];return kg(this,arguments,(function(I){var e=this.parentNode;m.inArray(this,g)<0&&(m.cleanData(ug(this)),e&&e.replaceChild(I,this))}),g)}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},(function(g,I){m.fn[g]=function(g){for(var e,t=[],C=m(g),Q=C.length-1,F=0;F<=Q;F++)e=F===Q?this:this.clone(!0),m(C[F])[I](e),s.apply(t,e.get());return this.pushStack(t)}}));var Mg=new RegExp("^("+tg+")(?!px)[a-z%]+$","i"),Yg=function(g){var I=g.ownerDocument.defaultView;return I&&I.opener||(I=e),I.getComputedStyle(g)},wg=new RegExp(Qg.join("|"),"i");function Tg(g,I,e){var t,C,Q,F,B=g.style;return(e=e||Yg(g))&&(""!==(F=e.getPropertyValue(I)||e[I])||Bg(g)||(F=m.style(g,I)),!o.pixelBoxStyles()&&Mg.test(F)&&wg.test(I)&&(t=B.width,C=B.minWidth,Q=B.maxWidth,B.minWidth=B.maxWidth=B.width=F,F=e.width,B.width=t,B.minWidth=C,B.maxWidth=Q)),void 0!==F?F+"":F}function zg(g,I){return{get:function(){if(!g())return(this.get=I).apply(this,arguments);delete this.get}}}!function(){function g(){if(s){U.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",s.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",Fg.appendChild(U).appendChild(s);var g=e.getComputedStyle(s);t="1%"!==g.top,n=12===I(g.marginLeft),s.style.right="60%",B=36===I(g.right),C=36===I(g.width),s.style.position="absolute",Q=12===I(s.offsetWidth/3),Fg.removeChild(U),s=null}}function I(g){return Math.round(parseFloat(g))}var t,C,Q,B,n,U=F.createElement("div"),s=F.createElement("div");s.style&&(s.style.backgroundClip="content-box",s.cloneNode(!0).style.backgroundClip="",o.clearCloneStyle="content-box"===s.style.backgroundClip,m.extend(o,{boxSizingReliable:function(){return g(),C},pixelBoxStyles:function(){return g(),B},pixelPosition:function(){return g(),t},reliableMarginLeft:function(){return g(),n},scrollboxSize:function(){return g(),Q}}))}();var Og=["Webkit","Moz","ms"],Kg=F.createElement("div").style,jg={};function Pg(g){var I=m.cssProps[g]||jg[g];return I||(g in Kg?g:jg[g]=function(g){for(var I=g[0].toUpperCase()+g.slice(1),e=Og.length;e--;)if((g=Og[e]+I)in Kg)return g}(g)||g)}var _g=/^(none|table(?!-c[ea]).+)/,qg=/^--/,$g={position:"absolute",visibility:"hidden",display:"block"},gI={letterSpacing:"0",fontWeight:"400"};function II(g,I,e){var t=Cg.exec(I);return t?Math.max(0,t[2]-(e||0))+(t[3]||"px"):I}function eI(g,I,e,t,C,Q){var F="width"===I?1:0,B=0,n=0;if(e===(t?"border":"content"))return 0;for(;F<4;F+=2)"margin"===e&&(n+=m.css(g,e+Qg[F],!0,C)),t?("content"===e&&(n-=m.css(g,"padding"+Qg[F],!0,C)),"margin"!==e&&(n-=m.css(g,"border"+Qg[F]+"Width",!0,C))):(n+=m.css(g,"padding"+Qg[F],!0,C),"padding"!==e?n+=m.css(g,"border"+Qg[F]+"Width",!0,C):B+=m.css(g,"border"+Qg[F]+"Width",!0,C));return!t&&Q>=0&&(n+=Math.max(0,Math.ceil(g["offset"+I[0].toUpperCase()+I.slice(1)]-Q-n-B-.5))||0),n}function tI(g,I,e){var t=Yg(g),C=(!o.boxSizingReliable()||e)&&"border-box"===m.css(g,"boxSizing",!1,t),Q=C,F=Tg(g,I,t),B="offset"+I[0].toUpperCase()+I.slice(1);if(Mg.test(F)){if(!e)return F;F="auto"}return(!o.boxSizingReliable()&&C||"auto"===F||!parseFloat(F)&&"inline"===m.css(g,"display",!1,t))&&g.getClientRects().length&&(C="border-box"===m.css(g,"boxSizing",!1,t),(Q=B in g)&&(F=g[B])),(F=parseFloat(F)||0)+eI(g,I,e||(C?"border":"content"),Q,t,F)+"px"}function CI(g,I,e,t,C){return new CI.prototype.init(g,I,e,t,C)}m.extend({cssHooks:{opacity:{get:function(g,I){if(I){var e=Tg(g,"opacity");return""===e?"1":e}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(g,I,e,t){if(g&&3!==g.nodeType&&8!==g.nodeType&&g.style){var C,Q,F,B=j(I),n=qg.test(I),U=g.style;if(n||(I=Pg(B)),F=m.cssHooks[I]||m.cssHooks[B],void 0===e)return F&&"get"in F&&void 0!==(C=F.get(g,!1,t))?C:U[I];"string"===(Q=typeof e)&&(C=Cg.exec(e))&&C[1]&&(e=ig(g,I,C),Q="number"),null!=e&&e===e&&("number"!==Q||n||(e+=C&&C[3]||(m.cssNumber[B]?"":"px")),o.clearCloneStyle||""!==e||0!==I.indexOf("background")||(U[I]="inherit"),F&&"set"in F&&void 0===(e=F.set(g,e,t))||(n?U.setProperty(I,e):U[I]=e))}},css:function(g,I,e,t){var C,Q,F,B=j(I);return qg.test(I)||(I=Pg(B)),(F=m.cssHooks[I]||m.cssHooks[B])&&"get"in F&&(C=F.get(g,!0,e)),void 0===C&&(C=Tg(g,I,t)),"normal"===C&&I in gI&&(C=gI[I]),""===e||e?(Q=parseFloat(C),!0===e||isFinite(Q)?Q||0:C):C}}),m.each(["height","width"],(function(g,I){m.cssHooks[I]={get:function(g,e,t){if(e)return!_g.test(m.css(g,"display"))||g.getClientRects().length&&g.getBoundingClientRect().width?tI(g,I,t):sg(g,$g,(function(){return tI(g,I,t)}))},set:function(g,e,t){var C,Q=Yg(g),F=!o.scrollboxSize()&&"absolute"===Q.position,B=(F||t)&&"border-box"===m.css(g,"boxSizing",!1,Q),n=t?eI(g,I,t,B,Q):0;return B&&F&&(n-=Math.ceil(g["offset"+I[0].toUpperCase()+I.slice(1)]-parseFloat(Q[I])-eI(g,I,"border",!1,Q)-.5)),n&&(C=Cg.exec(e))&&"px"!==(C[3]||"px")&&(g.style[I]=e,e=m.css(g,I)),II(0,e,n)}}})),m.cssHooks.marginLeft=zg(o.reliableMarginLeft,(function(g,I){if(I)return(parseFloat(Tg(g,"marginLeft"))||g.getBoundingClientRect().left-sg(g,{marginLeft:0},(function(){return g.getBoundingClientRect().left})))+"px"})),m.each({margin:"",padding:"",border:"Width"},(function(g,I){m.cssHooks[g+I]={expand:function(e){for(var t=0,C={},Q="string"===typeof e?e.split(" "):[e];t<4;t++)C[g+Qg[t]+I]=Q[t]||Q[t-2]||Q[0];return C}},"margin"!==g&&(m.cssHooks[g+I].set=II)})),m.fn.extend({css:function(g,I){return T(this,(function(g,I,e){var t,C,Q={},F=0;if(Array.isArray(I)){for(t=Yg(g),C=I.length;F<C;F++)Q[I[F]]=m.css(g,I[F],!1,t);return Q}return void 0!==e?m.style(g,I,e):m.css(g,I)}),g,I,arguments.length>1)}}),m.Tween=CI,CI.prototype={constructor:CI,init:function(g,I,e,t,C,Q){this.elem=g,this.prop=e,this.easing=C||m.easing._default,this.options=I,this.start=this.now=this.cur(),this.end=t,this.unit=Q||(m.cssNumber[e]?"":"px")},cur:function(){var g=CI.propHooks[this.prop];return g&&g.get?g.get(this):CI.propHooks._default.get(this)},run:function(g){var I,e=CI.propHooks[this.prop];return this.options.duration?this.pos=I=m.easing[this.easing](g,this.options.duration*g,0,1,this.options.duration):this.pos=I=g,this.now=(this.end-this.start)*I+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),e&&e.set?e.set(this):CI.propHooks._default.set(this),this}},CI.prototype.init.prototype=CI.prototype,CI.propHooks={_default:{get:function(g){var I;return 1!==g.elem.nodeType||null!=g.elem[g.prop]&&null==g.elem.style[g.prop]?g.elem[g.prop]:(I=m.css(g.elem,g.prop,""))&&"auto"!==I?I:0},set:function(g){m.fx.step[g.prop]?m.fx.step[g.prop](g):1!==g.elem.nodeType||!m.cssHooks[g.prop]&&null==g.elem.style[Pg(g.prop)]?g.elem[g.prop]=g.now:m.style(g.elem,g.prop,g.now+g.unit)}}},CI.propHooks.scrollTop=CI.propHooks.scrollLeft={set:function(g){g.elem.nodeType&&g.elem.parentNode&&(g.elem[g.prop]=g.now)}},m.easing={linear:function(g){return g},swing:function(g){return.5-Math.cos(g*Math.PI)/2},_default:"swing"},(m.fx=CI.prototype.init).step={};var QI,FI,BI=/^(?:toggle|show|hide)$/,nI=/queueHooks$/;function UI(){FI&&(!1===F.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(UI):e.setTimeout(UI,m.fx.interval),m.fx.tick())}function sI(){return e.setTimeout((function(){QI=void 0})),QI=Date.now()}function iI(g,I){var e,t=0,C={height:g};for(I=I?1:0;t<4;t+=2-I)C["margin"+(e=Qg[t])]=C["padding"+e]=g;return I&&(C.opacity=C.width=g),C}function cI(g,I,e){for(var t,C=(AI.tweeners[I]||[]).concat(AI.tweeners["*"]),Q=0,F=C.length;Q<F;Q++)if(t=C[Q].call(e,I,g))return t}function AI(g,I,e){var t,C,Q=0,F=AI.prefilters.length,B=m.Deferred().always((function(){delete n.elem})),n=function(){if(C)return!1;for(var I=QI||sI(),e=Math.max(0,U.startTime+U.duration-I),t=1-(e/U.duration||0),Q=0,F=U.tweens.length;Q<F;Q++)U.tweens[Q].run(t);return B.notifyWith(g,[U,t,e]),t<1&&F?e:(F||B.notifyWith(g,[U,1,0]),B.resolveWith(g,[U]),!1)},U=B.promise({elem:g,props:m.extend({},I),opts:m.extend(!0,{specialEasing:{},easing:m.easing._default},e),originalProperties:I,originalOptions:e,startTime:QI||sI(),duration:e.duration,tweens:[],createTween:function(I,e){var t=m.Tween(g,U.opts,I,e,U.opts.specialEasing[I]||U.opts.easing);return U.tweens.push(t),t},stop:function(I){var e=0,t=I?U.tweens.length:0;if(C)return this;for(C=!0;e<t;e++)U.tweens[e].run(1);return I?(B.notifyWith(g,[U,1,0]),B.resolveWith(g,[U,I])):B.rejectWith(g,[U,I]),this}}),s=U.props;for(!function(g,I){var e,t,C,Q,F;for(e in g)if(C=I[t=j(e)],Q=g[e],Array.isArray(Q)&&(C=Q[1],Q=g[e]=Q[0]),e!==t&&(g[t]=Q,delete g[e]),(F=m.cssHooks[t])&&"expand"in F)for(e in Q=F.expand(Q),delete g[t],Q)e in g||(g[e]=Q[e],I[e]=C);else I[t]=C}(s,U.opts.specialEasing);Q<F;Q++)if(t=AI.prefilters[Q].call(U,g,s,U.opts))return d(t.stop)&&(m._queueHooks(U.elem,U.opts.queue).stop=t.stop.bind(t)),t;return m.map(s,cI,U),d(U.opts.start)&&U.opts.start.call(g,U),U.progress(U.opts.progress).done(U.opts.done,U.opts.complete).fail(U.opts.fail).always(U.opts.always),m.fx.timer(m.extend(n,{elem:g,anim:U,queue:U.opts.queue})),U}m.Animation=m.extend(AI,{tweeners:{"*":[function(g,I){var e=this.createTween(g,I);return ig(e.elem,g,Cg.exec(I),e),e}]},tweener:function(g,I){d(g)?(I=g,g=["*"]):g=g.match(J);for(var e,t=0,C=g.length;t<C;t++)e=g[t],AI.tweeners[e]=AI.tweeners[e]||[],AI.tweeners[e].unshift(I)},prefilters:[function(g,I,e){var t,C,Q,F,B,n,U,s,i="width"in I||"height"in I,c=this,A={},l=g.style,a=g.nodeType&&Ug(g),r=q.get(g,"fxshow");for(t in e.queue||(null==(F=m._queueHooks(g,"fx")).unqueued&&(F.unqueued=0,B=F.empty.fire,F.empty.fire=function(){F.unqueued||B()}),F.unqueued++,c.always((function(){c.always((function(){F.unqueued--,m.queue(g,"fx").length||F.empty.fire()}))}))),I)if(C=I[t],BI.test(C)){if(delete I[t],Q=Q||"toggle"===C,C===(a?"hide":"show")){if("show"!==C||!r||void 0===r[t])continue;a=!0}A[t]=r&&r[t]||m.style(g,t)}if((n=!m.isEmptyObject(I))||!m.isEmptyObject(A))for(t in i&&1===g.nodeType&&(e.overflow=[l.overflow,l.overflowX,l.overflowY],null==(U=r&&r.display)&&(U=q.get(g,"display")),"none"===(s=m.css(g,"display"))&&(U?s=U:(lg([g],!0),U=g.style.display||U,s=m.css(g,"display"),lg([g]))),("inline"===s||"inline-block"===s&&null!=U)&&"none"===m.css(g,"float")&&(n||(c.done((function(){l.display=U})),null==U&&(s=l.display,U="none"===s?"":s)),l.display="inline-block")),e.overflow&&(l.overflow="hidden",c.always((function(){l.overflow=e.overflow[0],l.overflowX=e.overflow[1],l.overflowY=e.overflow[2]}))),n=!1,A)n||(r?"hidden"in r&&(a=r.hidden):r=q.access(g,"fxshow",{display:U}),Q&&(r.hidden=!a),a&&lg([g],!0),c.done((function(){for(t in a||lg([g]),q.remove(g,"fxshow"),A)m.style(g,t,A[t])}))),n=cI(a?r[t]:0,t,c),t in r||(r[t]=n.start,a&&(n.end=n.start,n.start=0))}],prefilter:function(g,I){I?AI.prefilters.unshift(g):AI.prefilters.push(g)}}),m.speed=function(g,I,e){var t=g&&"object"===typeof g?m.extend({},g):{complete:e||!e&&I||d(g)&&g,duration:g,easing:e&&I||I&&!d(I)&&I};return m.fx.off?t.duration=0:"number"!==typeof t.duration&&(t.duration in m.fx.speeds?t.duration=m.fx.speeds[t.duration]:t.duration=m.fx.speeds._default),null!=t.queue&&!0!==t.queue||(t.queue="fx"),t.old=t.complete,t.complete=function(){d(t.old)&&t.old.call(this),t.queue&&m.dequeue(this,t.queue)},t},m.fn.extend({fadeTo:function(g,I,e,t){return this.filter(Ug).css("opacity",0).show().end().animate({opacity:I},g,e,t)},animate:function(g,I,e,t){var C=m.isEmptyObject(g),Q=m.speed(I,e,t),F=function(){var I=AI(this,m.extend({},g),Q);(C||q.get(this,"finish"))&&I.stop(!0)};return F.finish=F,C||!1===Q.queue?this.each(F):this.queue(Q.queue,F)},stop:function(g,I,e){var t=function(g){var I=g.stop;delete g.stop,I(e)};return"string"!==typeof g&&(e=I,I=g,g=void 0),I&&!1!==g&&this.queue(g||"fx",[]),this.each((function(){var I=!0,C=null!=g&&g+"queueHooks",Q=m.timers,F=q.get(this);if(C)F[C]&&F[C].stop&&t(F[C]);else for(C in F)F[C]&&F[C].stop&&nI.test(C)&&t(F[C]);for(C=Q.length;C--;)Q[C].elem!==this||null!=g&&Q[C].queue!==g||(Q[C].anim.stop(e),I=!1,Q.splice(C,1));!I&&e||m.dequeue(this,g)}))},finish:function(g){return!1!==g&&(g=g||"fx"),this.each((function(){var I,e=q.get(this),t=e[g+"queue"],C=e[g+"queueHooks"],Q=m.timers,F=t?t.length:0;for(e.finish=!0,m.queue(this,g,[]),C&&C.stop&&C.stop.call(this,!0),I=Q.length;I--;)Q[I].elem===this&&Q[I].queue===g&&(Q[I].anim.stop(!0),Q.splice(I,1));for(I=0;I<F;I++)t[I]&&t[I].finish&&t[I].finish.call(this);delete e.finish}))}}),m.each(["toggle","show","hide"],(function(g,I){var e=m.fn[I];m.fn[I]=function(g,t,C){return null==g||"boolean"===typeof g?e.apply(this,arguments):this.animate(iI(I,!0),g,t,C)}})),m.each({slideDown:iI("show"),slideUp:iI("hide"),slideToggle:iI("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},(function(g,I){m.fn[g]=function(g,e,t){return this.animate(I,g,e,t)}})),m.timers=[],m.fx.tick=function(){var g,I=0,e=m.timers;for(QI=Date.now();I<e.length;I++)(g=e[I])()||e[I]!==g||e.splice(I--,1);e.length||m.fx.stop(),QI=void 0},m.fx.timer=function(g){m.timers.push(g),m.fx.start()},m.fx.interval=13,m.fx.start=function(){FI||(FI=!0,UI())},m.fx.stop=function(){FI=null},m.fx.speeds={slow:600,fast:200,_default:400},m.fn.delay=function(g,I){return g=m.fx&&m.fx.speeds[g]||g,I=I||"fx",this.queue(I,(function(I,t){var C=e.setTimeout(I,g);t.stop=function(){e.clearTimeout(C)}}))},function(){var g=F.createElement("input"),I=F.createElement("select").appendChild(F.createElement("option"));g.type="checkbox",o.checkOn=""!==g.value,o.optSelected=I.selected,(g=F.createElement("input")).value="t",g.type="radio",o.radioValue="t"===g.value}();var lI,aI=m.expr.attrHandle;m.fn.extend({attr:function(g,I){return T(this,m.attr,g,I,arguments.length>1)},removeAttr:function(g){return this.each((function(){m.removeAttr(this,g)}))}}),m.extend({attr:function(g,I,e){var t,C,Q=g.nodeType;if(3!==Q&&8!==Q&&2!==Q)return"undefined"===typeof g.getAttribute?m.prop(g,I,e):(1===Q&&m.isXMLDoc(g)||(C=m.attrHooks[I.toLowerCase()]||(m.expr.match.bool.test(I)?lI:void 0)),void 0!==e?null===e?void m.removeAttr(g,I):C&&"set"in C&&void 0!==(t=C.set(g,e,I))?t:(g.setAttribute(I,e+""),e):C&&"get"in C&&null!==(t=C.get(g,I))?t:null==(t=m.find.attr(g,I))?void 0:t)},attrHooks:{type:{set:function(g,I){if(!o.radioValue&&"radio"===I&&h(g,"input")){var e=g.value;return g.setAttribute("type",I),e&&(g.value=e),I}}}},removeAttr:function(g,I){var e,t=0,C=I&&I.match(J);if(C&&1===g.nodeType)for(;e=C[t++];)g.removeAttribute(e)}}),lI={set:function(g,I,e){return!1===I?m.removeAttr(g,e):g.setAttribute(e,e),e}},m.each(m.expr.match.bool.source.match(/\w+/g),(function(g,I){var e=aI[I]||m.find.attr;aI[I]=function(g,I,t){var C,Q,F=I.toLowerCase();return t||(Q=aI[F],aI[F]=C,C=null!=e(g,I,t)?F:null,aI[F]=Q),C}}));var rI=/^(?:input|select|textarea|button)$/i,oI=/^(?:a|area)$/i;function dI(g){return(g.match(J)||[]).join(" ")}function uI(g){return g.getAttribute&&g.getAttribute("class")||""}function yI(g){return Array.isArray(g)?g:"string"===typeof g&&g.match(J)||[]}m.fn.extend({prop:function(g,I){return T(this,m.prop,g,I,arguments.length>1)},removeProp:function(g){return this.each((function(){delete this[m.propFix[g]||g]}))}}),m.extend({prop:function(g,I,e){var t,C,Q=g.nodeType;if(3!==Q&&8!==Q&&2!==Q)return 1===Q&&m.isXMLDoc(g)||(I=m.propFix[I]||I,C=m.propHooks[I]),void 0!==e?C&&"set"in C&&void 0!==(t=C.set(g,e,I))?t:g[I]=e:C&&"get"in C&&null!==(t=C.get(g,I))?t:g[I]},propHooks:{tabIndex:{get:function(g){var I=m.find.attr(g,"tabindex");return I?parseInt(I,10):rI.test(g.nodeName)||oI.test(g.nodeName)&&g.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),o.optSelected||(m.propHooks.selected={get:function(g){var I=g.parentNode;return I&&I.parentNode&&I.parentNode.selectedIndex,null},set:function(g){var I=g.parentNode;I&&(I.selectedIndex,I.parentNode&&I.parentNode.selectedIndex)}}),m.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],(function(){m.propFix[this.toLowerCase()]=this})),m.fn.extend({addClass:function(g){var I,e,t,C,Q,F,B,n=0;if(d(g))return this.each((function(I){m(this).addClass(g.call(this,I,uI(this)))}));if((I=yI(g)).length)for(;e=this[n++];)if(C=uI(e),t=1===e.nodeType&&" "+dI(C)+" "){for(F=0;Q=I[F++];)t.indexOf(" "+Q+" ")<0&&(t+=Q+" ");C!==(B=dI(t))&&e.setAttribute("class",B)}return this},removeClass:function(g){var I,e,t,C,Q,F,B,n=0;if(d(g))return this.each((function(I){m(this).removeClass(g.call(this,I,uI(this)))}));if(!arguments.length)return this.attr("class","");if((I=yI(g)).length)for(;e=this[n++];)if(C=uI(e),t=1===e.nodeType&&" "+dI(C)+" "){for(F=0;Q=I[F++];)for(;t.indexOf(" "+Q+" ")>-1;)t=t.replace(" "+Q+" "," ");C!==(B=dI(t))&&e.setAttribute("class",B)}return this},toggleClass:function(g,I){var e=typeof g,t="string"===e||Array.isArray(g);return"boolean"===typeof I&&t?I?this.addClass(g):this.removeClass(g):d(g)?this.each((function(e){m(this).toggleClass(g.call(this,e,uI(this),I),I)})):this.each((function(){var I,C,Q,F;if(t)for(C=0,Q=m(this),F=yI(g);I=F[C++];)Q.hasClass(I)?Q.removeClass(I):Q.addClass(I);else void 0!==g&&"boolean"!==e||((I=uI(this))&&q.set(this,"__className__",I),this.setAttribute&&this.setAttribute("class",I||!1===g?"":q.get(this,"__className__")||""))}))},hasClass:function(g){var I,e,t=0;for(I=" "+g+" ";e=this[t++];)if(1===e.nodeType&&(" "+dI(uI(e))+" ").indexOf(I)>-1)return!0;return!1}});var bI=/\r/g;m.fn.extend({val:function(g){var I,e,t,C=this[0];return arguments.length?(t=d(g),this.each((function(e){var C;1===this.nodeType&&(null==(C=t?g.call(this,e,m(this).val()):g)?C="":"number"===typeof C?C+="":Array.isArray(C)&&(C=m.map(C,(function(g){return null==g?"":g+""}))),(I=m.valHooks[this.type]||m.valHooks[this.nodeName.toLowerCase()])&&"set"in I&&void 0!==I.set(this,C,"value")||(this.value=C))}))):C?(I=m.valHooks[C.type]||m.valHooks[C.nodeName.toLowerCase()])&&"get"in I&&void 0!==(e=I.get(C,"value"))?e:"string"===typeof(e=C.value)?e.replace(bI,""):null==e?"":e:void 0}}),m.extend({valHooks:{option:{get:function(g){var I=m.find.attr(g,"value");return null!=I?I:dI(m.text(g))}},select:{get:function(g){var I,e,t,C=g.options,Q=g.selectedIndex,F="select-one"===g.type,B=F?null:[],n=F?Q+1:C.length;for(t=Q<0?n:F?Q:0;t<n;t++)if(((e=C[t]).selected||t===Q)&&!e.disabled&&(!e.parentNode.disabled||!h(e.parentNode,"optgroup"))){if(I=m(e).val(),F)return I;B.push(I)}return B},set:function(g,I){for(var e,t,C=g.options,Q=m.makeArray(I),F=C.length;F--;)((t=C[F]).selected=m.inArray(m.valHooks.option.get(t),Q)>-1)&&(e=!0);return e||(g.selectedIndex=-1),Q}}}}),m.each(["radio","checkbox"],(function(){m.valHooks[this]={set:function(g,I){if(Array.isArray(I))return g.checked=m.inArray(m(g).val(),I)>-1}},o.checkOn||(m.valHooks[this].get=function(g){return null===g.getAttribute("value")?"on":g.value})})),o.focusin="onfocusin"in e;var ZI=/^(?:focusinfocus|focusoutblur)$/,mI=function(g){g.stopPropagation()};m.extend(m.event,{trigger:function(g,I,t,C){var Q,B,n,U,s,i,c,A,a=[t||F],r=l.call(g,"type")?g.type:g,o=l.call(g,"namespace")?g.namespace.split("."):[];if(B=A=n=t=t||F,3!==t.nodeType&&8!==t.nodeType&&!ZI.test(r+m.event.triggered)&&(r.indexOf(".")>-1&&(o=r.split("."),r=o.shift(),o.sort()),s=r.indexOf(":")<0&&"on"+r,(g=g[m.expando]?g:new m.Event(r,"object"===typeof g&&g)).isTrigger=C?2:3,g.namespace=o.join("."),g.rnamespace=g.namespace?new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,g.result=void 0,g.target||(g.target=t),I=null==I?[g]:m.makeArray(I,[g]),c=m.event.special[r]||{},C||!c.trigger||!1!==c.trigger.apply(t,I))){if(!C&&!c.noBubble&&!u(t)){for(U=c.delegateType||r,ZI.test(U+r)||(B=B.parentNode);B;B=B.parentNode)a.push(B),n=B;n===(t.ownerDocument||F)&&a.push(n.defaultView||n.parentWindow||e)}for(Q=0;(B=a[Q++])&&!g.isPropagationStopped();)A=B,g.type=Q>1?U:c.bindType||r,(i=(q.get(B,"events")||{})[g.type]&&q.get(B,"handle"))&&i.apply(B,I),(i=s&&B[s])&&i.apply&&P(B)&&(g.result=i.apply(B,I),!1===g.result&&g.preventDefault());return g.type=r,C||g.isDefaultPrevented()||c._default&&!1!==c._default.apply(a.pop(),I)||!P(t)||s&&d(t[r])&&!u(t)&&((n=t[s])&&(t[s]=null),m.event.triggered=r,g.isPropagationStopped()&&A.addEventListener(r,mI),t[r](),g.isPropagationStopped()&&A.removeEventListener(r,mI),m.event.triggered=void 0,n&&(t[s]=n)),g.result}},simulate:function(g,I,e){var t=m.extend(new m.Event,e,{type:g,isSimulated:!0});m.event.trigger(t,null,I)}}),m.fn.extend({trigger:function(g,I){return this.each((function(){m.event.trigger(g,I,this)}))},triggerHandler:function(g,I){var e=this[0];if(e)return m.event.trigger(g,I,e,!0)}}),o.focusin||m.each({focus:"focusin",blur:"focusout"},(function(g,I){var e=function(g){m.event.simulate(I,g.target,m.event.fix(g))};m.event.special[I]={setup:function(){var t=this.ownerDocument||this,C=q.access(t,I);C||t.addEventListener(g,e,!0),q.access(t,I,(C||0)+1)},teardown:function(){var t=this.ownerDocument||this,C=q.access(t,I)-1;C?q.access(t,I,C):(t.removeEventListener(g,e,!0),q.remove(t,I))}}}));var xI=e.location,RI=Date.now(),SI=/\?/;m.parseXML=function(g){var I;if(!g||"string"!==typeof g)return null;try{I=(new e.DOMParser).parseFromString(g,"text/xml")}catch(t){I=void 0}return I&&!I.getElementsByTagName("parsererror").length||m.error("Invalid XML: "+g),I};var GI=/\[\]$/,LI=/\r?\n/g,VI=/^(?:submit|button|image|reset|file)$/i,hI=/^(?:input|select|textarea|keygen)/i;function DI(g,I,e,t){var C;if(Array.isArray(I))m.each(I,(function(I,C){e||GI.test(g)?t(g,C):DI(g+"["+("object"===typeof C&&null!=C?I:"")+"]",C,e,t)}));else if(e||"object"!==Z(I))t(g,I);else for(C in I)DI(g+"["+C+"]",I[C],e,t)}m.param=function(g,I){var e,t=[],C=function(g,I){var e=d(I)?I():I;t[t.length]=encodeURIComponent(g)+"="+encodeURIComponent(null==e?"":e)};if(null==g)return"";if(Array.isArray(g)||g.jquery&&!m.isPlainObject(g))m.each(g,(function(){C(this.name,this.value)}));else for(e in g)DI(e,g[e],I,C);return t.join("&")},m.fn.extend({serialize:function(){return m.param(this.serializeArray())},serializeArray:function(){return this.map((function(){var g=m.prop(this,"elements");return g?m.makeArray(g):this})).filter((function(){var g=this.type;return this.name&&!m(this).is(":disabled")&&hI.test(this.nodeName)&&!VI.test(g)&&(this.checked||!ag.test(g))})).map((function(g,I){var e=m(this).val();return null==e?null:Array.isArray(e)?m.map(e,(function(g){return{name:I.name,value:g.replace(LI,"\r\n")}})):{name:I.name,value:e.replace(LI,"\r\n")}})).get()}});var pI=/%20/g,EI=/#.*$/,NI=/([?&])_=[^&]*/,WI=/^(.*?):[ \t]*([^\r\n]*)$/gm,fI=/^(?:GET|HEAD)$/,XI=/^\/\//,JI={},vI={},kI="*/".concat("*"),HI=F.createElement("a");function MI(g){return function(I,e){"string"!==typeof I&&(e=I,I="*");var t,C=0,Q=I.toLowerCase().match(J)||[];if(d(e))for(;t=Q[C++];)"+"===t[0]?(t=t.slice(1)||"*",(g[t]=g[t]||[]).unshift(e)):(g[t]=g[t]||[]).push(e)}}function YI(g,I,e,t){var C={},Q=g===vI;function F(B){var n;return C[B]=!0,m.each(g[B]||[],(function(g,B){var U=B(I,e,t);return"string"!==typeof U||Q||C[U]?Q?!(n=U):void 0:(I.dataTypes.unshift(U),F(U),!1)})),n}return F(I.dataTypes[0])||!C["*"]&&F("*")}function wI(g,I){var e,t,C=m.ajaxSettings.flatOptions||{};for(e in I)void 0!==I[e]&&((C[e]?g:t||(t={}))[e]=I[e]);return t&&m.extend(!0,g,t),g}HI.href=xI.href,m.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:xI.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(xI.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":kI,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":m.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(g,I){return I?wI(wI(g,m.ajaxSettings),I):wI(m.ajaxSettings,g)},ajaxPrefilter:MI(JI),ajaxTransport:MI(vI),ajax:function(g,I){"object"===typeof g&&(I=g,g=void 0);var t,C,Q,B,n,U,s,i,c,A,l=m.ajaxSetup({},I=I||{}),a=l.context||l,r=l.context&&(a.nodeType||a.jquery)?m(a):m.event,o=m.Deferred(),d=m.Callbacks("once memory"),u=l.statusCode||{},y={},b={},Z="canceled",x={readyState:0,getResponseHeader:function(g){var I;if(s){if(!B)for(B={};I=WI.exec(Q);)B[I[1].toLowerCase()+" "]=(B[I[1].toLowerCase()+" "]||[]).concat(I[2]);I=B[g.toLowerCase()+" "]}return null==I?null:I.join(", ")},getAllResponseHeaders:function(){return s?Q:null},setRequestHeader:function(g,I){return null==s&&(g=b[g.toLowerCase()]=b[g.toLowerCase()]||g,y[g]=I),this},overrideMimeType:function(g){return null==s&&(l.mimeType=g),this},statusCode:function(g){var I;if(g)if(s)x.always(g[x.status]);else for(I in g)u[I]=[u[I],g[I]];return this},abort:function(g){var I=g||Z;return t&&t.abort(I),R(0,I),this}};if(o.promise(x),l.url=((g||l.url||xI.href)+"").replace(XI,xI.protocol+"//"),l.type=I.method||I.type||l.method||l.type,l.dataTypes=(l.dataType||"*").toLowerCase().match(J)||[""],null==l.crossDomain){U=F.createElement("a");try{U.href=l.url,U.href=U.href,l.crossDomain=HI.protocol+"//"+HI.host!==U.protocol+"//"+U.host}catch(S){l.crossDomain=!0}}if(l.data&&l.processData&&"string"!==typeof l.data&&(l.data=m.param(l.data,l.traditional)),YI(JI,l,I,x),s)return x;for(c in(i=m.event&&l.global)&&0===m.active++&&m.event.trigger("ajaxStart"),l.type=l.type.toUpperCase(),l.hasContent=!fI.test(l.type),C=l.url.replace(EI,""),l.hasContent?l.data&&l.processData&&0===(l.contentType||"").indexOf("application/x-www-form-urlencoded")&&(l.data=l.data.replace(pI,"+")):(A=l.url.slice(C.length),l.data&&(l.processData||"string"===typeof l.data)&&(C+=(SI.test(C)?"&":"?")+l.data,delete l.data),!1===l.cache&&(C=C.replace(NI,"$1"),A=(SI.test(C)?"&":"?")+"_="+RI+++A),l.url=C+A),l.ifModified&&(m.lastModified[C]&&x.setRequestHeader("If-Modified-Since",m.lastModified[C]),m.etag[C]&&x.setRequestHeader("If-None-Match",m.etag[C])),(l.data&&l.hasContent&&!1!==l.contentType||I.contentType)&&x.setRequestHeader("Content-Type",l.contentType),x.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+("*"!==l.dataTypes[0]?", "+kI+"; q=0.01":""):l.accepts["*"]),l.headers)x.setRequestHeader(c,l.headers[c]);if(l.beforeSend&&(!1===l.beforeSend.call(a,x,l)||s))return x.abort();if(Z="abort",d.add(l.complete),x.done(l.success),x.fail(l.error),t=YI(vI,l,I,x)){if(x.readyState=1,i&&r.trigger("ajaxSend",[x,l]),s)return x;l.async&&l.timeout>0&&(n=e.setTimeout((function(){x.abort("timeout")}),l.timeout));try{s=!1,t.send(y,R)}catch(S){if(s)throw S;R(-1,S)}}else R(-1,"No Transport");function R(g,I,F,B){var U,c,A,y,b,Z=I;s||(s=!0,n&&e.clearTimeout(n),t=void 0,Q=B||"",x.readyState=g>0?4:0,U=g>=200&&g<300||304===g,F&&(y=function(g,I,e){for(var t,C,Q,F,B=g.contents,n=g.dataTypes;"*"===n[0];)n.shift(),void 0===t&&(t=g.mimeType||I.getResponseHeader("Content-Type"));if(t)for(C in B)if(B[C]&&B[C].test(t)){n.unshift(C);break}if(n[0]in e)Q=n[0];else{for(C in e){if(!n[0]||g.converters[C+" "+n[0]]){Q=C;break}F||(F=C)}Q=Q||F}if(Q)return Q!==n[0]&&n.unshift(Q),e[Q]}(l,x,F)),y=function(g,I,e,t){var C,Q,F,B,n,U={},s=g.dataTypes.slice();if(s[1])for(F in g.converters)U[F.toLowerCase()]=g.converters[F];for(Q=s.shift();Q;)if(g.responseFields[Q]&&(e[g.responseFields[Q]]=I),!n&&t&&g.dataFilter&&(I=g.dataFilter(I,g.dataType)),n=Q,Q=s.shift())if("*"===Q)Q=n;else if("*"!==n&&n!==Q){if(!(F=U[n+" "+Q]||U["* "+Q]))for(C in U)if((B=C.split(" "))[1]===Q&&(F=U[n+" "+B[0]]||U["* "+B[0]])){!0===F?F=U[C]:!0!==U[C]&&(Q=B[0],s.unshift(B[1]));break}if(!0!==F)if(F&&g.throws)I=F(I);else try{I=F(I)}catch(S){return{state:"parsererror",error:F?S:"No conversion from "+n+" to "+Q}}}return{state:"success",data:I}}(l,y,x,U),U?(l.ifModified&&((b=x.getResponseHeader("Last-Modified"))&&(m.lastModified[C]=b),(b=x.getResponseHeader("etag"))&&(m.etag[C]=b)),204===g||"HEAD"===l.type?Z="nocontent":304===g?Z="notmodified":(Z=y.state,c=y.data,U=!(A=y.error))):(A=Z,!g&&Z||(Z="error",g<0&&(g=0))),x.status=g,x.statusText=(I||Z)+"",U?o.resolveWith(a,[c,Z,x]):o.rejectWith(a,[x,Z,A]),x.statusCode(u),u=void 0,i&&r.trigger(U?"ajaxSuccess":"ajaxError",[x,l,U?c:A]),d.fireWith(a,[x,Z]),i&&(r.trigger("ajaxComplete",[x,l]),--m.active||m.event.trigger("ajaxStop")))}return x},getJSON:function(g,I,e){return m.get(g,I,e,"json")},getScript:function(g,I){return m.get(g,void 0,I,"script")}}),m.each(["get","post"],(function(g,I){m[I]=function(g,e,t,C){return d(e)&&(C=C||t,t=e,e=void 0),m.ajax(m.extend({url:g,type:I,dataType:C,data:e,success:t},m.isPlainObject(g)&&g))}})),m._evalUrl=function(g,I){return m.ajax({url:g,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(g){m.globalEval(g,I)}})},m.fn.extend({wrapAll:function(g){var I;return this[0]&&(d(g)&&(g=g.call(this[0])),I=m(g,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&I.insertBefore(this[0]),I.map((function(){for(var g=this;g.firstElementChild;)g=g.firstElementChild;return g})).append(this)),this},wrapInner:function(g){return d(g)?this.each((function(I){m(this).wrapInner(g.call(this,I))})):this.each((function(){var I=m(this),e=I.contents();e.length?e.wrapAll(g):I.append(g)}))},wrap:function(g){var I=d(g);return this.each((function(e){m(this).wrapAll(I?g.call(this,e):g)}))},unwrap:function(g){return this.parent(g).not("body").each((function(){m(this).replaceWith(this.childNodes)})),this}}),m.expr.pseudos.hidden=function(g){return!m.expr.pseudos.visible(g)},m.expr.pseudos.visible=function(g){return!!(g.offsetWidth||g.offsetHeight||g.getClientRects().length)},m.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(g){}};var TI={0:200,1223:204},zI=m.ajaxSettings.xhr();o.cors=!!zI&&"withCredentials"in zI,o.ajax=zI=!!zI,m.ajaxTransport((function(g){var I,t;if(o.cors||zI&&!g.crossDomain)return{send:function(C,Q){var F,B=g.xhr();if(B.open(g.type,g.url,g.async,g.username,g.password),g.xhrFields)for(F in g.xhrFields)B[F]=g.xhrFields[F];for(F in g.mimeType&&B.overrideMimeType&&B.overrideMimeType(g.mimeType),g.crossDomain||C["X-Requested-With"]||(C["X-Requested-With"]="XMLHttpRequest"),C)B.setRequestHeader(F,C[F]);I=function(g){return function(){I&&(I=t=B.onload=B.onerror=B.onabort=B.ontimeout=B.onreadystatechange=null,"abort"===g?B.abort():"error"===g?"number"!==typeof B.status?Q(0,"error"):Q(B.status,B.statusText):Q(TI[B.status]||B.status,B.statusText,"text"!==(B.responseType||"text")||"string"!==typeof B.responseText?{binary:B.response}:{text:B.responseText},B.getAllResponseHeaders()))}},B.onload=I(),t=B.onerror=B.ontimeout=I("error"),void 0!==B.onabort?B.onabort=t:B.onreadystatechange=function(){4===B.readyState&&e.setTimeout((function(){I&&t()}))},I=I("abort");try{B.send(g.hasContent&&g.data||null)}catch(n){if(I)throw n}},abort:function(){I&&I()}}})),m.ajaxPrefilter((function(g){g.crossDomain&&(g.contents.script=!1)})),m.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(g){return m.globalEval(g),g}}}),m.ajaxPrefilter("script",(function(g){void 0===g.cache&&(g.cache=!1),g.crossDomain&&(g.type="GET")})),m.ajaxTransport("script",(function(g){var I,e;if(g.crossDomain||g.scriptAttrs)return{send:function(t,C){I=m("<script>").attr(g.scriptAttrs||{}).prop({charset:g.scriptCharset,src:g.url}).on("load error",e=function(g){I.remove(),e=null,g&&C("error"===g.type?404:200,g.type)}),F.head.appendChild(I[0])},abort:function(){e&&e()}}}));var OI=[],KI=/(=)\?(?=&|$)|\?\?/;m.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var g=OI.pop()||m.expando+"_"+RI++;return this[g]=!0,g}}),m.ajaxPrefilter("json jsonp",(function(g,I,t){var C,Q,F,B=!1!==g.jsonp&&(KI.test(g.url)?"url":"string"===typeof g.data&&0===(g.contentType||"").indexOf("application/x-www-form-urlencoded")&&KI.test(g.data)&&"data");if(B||"jsonp"===g.dataTypes[0])return C=g.jsonpCallback=d(g.jsonpCallback)?g.jsonpCallback():g.jsonpCallback,B?g[B]=g[B].replace(KI,"$1"+C):!1!==g.jsonp&&(g.url+=(SI.test(g.url)?"&":"?")+g.jsonp+"="+C),g.converters["script json"]=function(){return F||m.error(C+" was not called"),F[0]},g.dataTypes[0]="json",Q=e[C],e[C]=function(){F=arguments},t.always((function(){void 0===Q?m(e).removeProp(C):e[C]=Q,g[C]&&(g.jsonpCallback=I.jsonpCallback,OI.push(C)),F&&d(Q)&&Q(F[0]),F=Q=void 0})),"script"})),o.createHTMLDocument=function(){var g=F.implementation.createHTMLDocument("").body;return g.innerHTML="<form></form><form></form>",2===g.childNodes.length}(),m.parseHTML=function(g,I,e){return"string"!==typeof g?[]:("boolean"===typeof I&&(e=I,I=!1),I||(o.createHTMLDocument?((t=(I=F.implementation.createHTMLDocument("")).createElement("base")).href=F.location.href,I.head.appendChild(t)):I=F),Q=!e&&[],(C=D.exec(g))?[I.createElement(C[1])]:(C=Zg([g],I,Q),Q&&Q.length&&m(Q).remove(),m.merge([],C.childNodes)));var t,C,Q},m.fn.load=function(g,I,e){var t,C,Q,F=this,B=g.indexOf(" ");return B>-1&&(t=dI(g.slice(B)),g=g.slice(0,B)),d(I)?(e=I,I=void 0):I&&"object"===typeof I&&(C="POST"),F.length>0&&m.ajax({url:g,type:C||"GET",dataType:"html",data:I}).done((function(g){Q=arguments,F.html(t?m("<div>").append(m.parseHTML(g)).find(t):g)})).always(e&&function(g,I){F.each((function(){e.apply(this,Q||[g.responseText,I,g])}))}),this},m.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],(function(g,I){m.fn[I]=function(g){return this.on(I,g)}})),m.expr.pseudos.animated=function(g){return m.grep(m.timers,(function(I){return g===I.elem})).length},m.offset={setOffset:function(g,I,e){var t,C,Q,F,B,n,U=m.css(g,"position"),s=m(g),i={};"static"===U&&(g.style.position="relative"),B=s.offset(),Q=m.css(g,"top"),n=m.css(g,"left"),("absolute"===U||"fixed"===U)&&(Q+n).indexOf("auto")>-1?(F=(t=s.position()).top,C=t.left):(F=parseFloat(Q)||0,C=parseFloat(n)||0),d(I)&&(I=I.call(g,e,m.extend({},B))),null!=I.top&&(i.top=I.top-B.top+F),null!=I.left&&(i.left=I.left-B.left+C),"using"in I?I.using.call(g,i):s.css(i)}},m.fn.extend({offset:function(g){if(arguments.length)return void 0===g?this:this.each((function(I){m.offset.setOffset(this,g,I)}));var I,e,t=this[0];return t?t.getClientRects().length?(I=t.getBoundingClientRect(),e=t.ownerDocument.defaultView,{top:I.top+e.pageYOffset,left:I.left+e.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var g,I,e,t=this[0],C={top:0,left:0};if("fixed"===m.css(t,"position"))I=t.getBoundingClientRect();else{for(I=this.offset(),e=t.ownerDocument,g=t.offsetParent||e.documentElement;g&&(g===e.body||g===e.documentElement)&&"static"===m.css(g,"position");)g=g.parentNode;g&&g!==t&&1===g.nodeType&&((C=m(g).offset()).top+=m.css(g,"borderTopWidth",!0),C.left+=m.css(g,"borderLeftWidth",!0))}return{top:I.top-C.top-m.css(t,"marginTop",!0),left:I.left-C.left-m.css(t,"marginLeft",!0)}}},offsetParent:function(){return this.map((function(){for(var g=this.offsetParent;g&&"static"===m.css(g,"position");)g=g.offsetParent;return g||Fg}))}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},(function(g,I){var e="pageYOffset"===I;m.fn[g]=function(t){return T(this,(function(g,t,C){var Q;if(u(g)?Q=g:9===g.nodeType&&(Q=g.defaultView),void 0===C)return Q?Q[I]:g[t];Q?Q.scrollTo(e?Q.pageXOffset:C,e?C:Q.pageYOffset):g[t]=C}),g,t,arguments.length)}})),m.each(["top","left"],(function(g,I){m.cssHooks[I]=zg(o.pixelPosition,(function(g,e){if(e)return e=Tg(g,I),Mg.test(e)?m(g).position()[I]+"px":e}))})),m.each({Height:"height",Width:"width"},(function(g,I){m.each({padding:"inner"+g,content:I,"":"outer"+g},(function(e,t){m.fn[t]=function(C,Q){var F=arguments.length&&(e||"boolean"!==typeof C),B=e||(!0===C||!0===Q?"margin":"border");return T(this,(function(I,e,C){var Q;return u(I)?0===t.indexOf("outer")?I["inner"+g]:I.document.documentElement["client"+g]:9===I.nodeType?(Q=I.documentElement,Math.max(I.body["scroll"+g],Q["scroll"+g],I.body["offset"+g],Q["offset"+g],Q["client"+g])):void 0===C?m.css(I,e,B):m.style(I,e,C,B)}),I,F?C:void 0,F)}}))})),m.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),(function(g,I){m.fn[I]=function(g,e){return arguments.length>0?this.on(I,null,g,e):this.trigger(I)}})),m.fn.extend({hover:function(g,I){return this.mouseenter(g).mouseleave(I||g)}}),m.fn.extend({bind:function(g,I,e){return this.on(g,null,I,e)},unbind:function(g,I){return this.off(g,null,I)},delegate:function(g,I,e,t){return this.on(I,g,e,t)},undelegate:function(g,I,e){return 1===arguments.length?this.off(g,"**"):this.off(I,g||"**",e)}}),m.proxy=function(g,I){var e,t,C;if("string"===typeof I&&(e=g[I],I=g,g=e),d(g))return t=n.call(arguments,2),(C=function(){return g.apply(I||this,t.concat(n.call(arguments)))}).guid=g.guid=g.guid||m.guid++,C},m.holdReady=function(g){g?m.readyWait++:m.ready(!0)},m.isArray=Array.isArray,m.parseJSON=JSON.parse,m.nodeName=h,m.isFunction=d,m.isWindow=u,m.camelCase=j,m.type=Z,m.now=Date.now,m.isNumeric=function(g){var I=m.type(g);return("number"===I||"string"===I)&&!isNaN(g-parseFloat(g))},void 0===(t=function(){return m}.apply(I,[]))||(g.exports=t);var jI=e.jQuery,PI=e.$;return m.noConflict=function(g){return e.$===m&&(e.$=PI),g&&e.jQuery===m&&(e.jQuery=jI),m},C||(e.jQuery=e.$=m),m}))},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0});var t=function(){function g(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}return function(I,e,t){return e&&g(I.prototype,e),t&&g(I,t),I}}(),C=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g},Q=e(0),F=r(Q),B=r(e(400)),n=r(e(511)),U=r(e(93)),s=e(74),i=r(e(1202)),c=r(e(151)),A=r(e(258)),l=r(e(152)),a=e(1208);function r(g){return g&&g.__esModule?g:{default:g}}function o(g,I){var e={};for(var t in g)I.indexOf(t)>=0||Object.prototype.hasOwnProperty.call(g,t)&&(e[t]=g[t]);return e}var d=function(g){var I=g||{},e=(I.className,I.style,o(I,["className","style"]));return C(void 0!==g?{style:void 0!==g.style?g.style:{},className:void 0!==g.className?g.className:""}:{style:{},className:""},e)},u=function(g){var I=void 0!==g.animation?g.animation:"fade",e=void 0!==g.timeout?g.timeout:"fade"===I?500:200;return{className:void 0!==g.className?g.className:"",children:g.children?g.children:[],index:void 0!==g.index?g.index:0,strictIndexing:void 0===g.strictIndexing||g.strictIndexing,autoPlay:void 0===g.autoPlay||g.autoPlay,stopAutoPlayOnHover:void 0===g.stopAutoPlayOnHover||g.stopAutoPlayOnHover,interval:void 0!==g.interval?g.interval:4e3,animation:I,reverseEdgeAnimationDirection:void 0===g.reverseEdgeAnimationDirection||g.reverseEdgeAnimationDirection,timeout:e,swipe:void 0===g.swipe||g.swipe,navButtonsAlwaysInvisible:void 0!==g.navButtonsAlwaysInvisible&&g.navButtonsAlwaysInvisible,navButtonsAlwaysVisible:void 0!==g.navButtonsAlwaysVisible&&g.navButtonsAlwaysVisible,cycleNavigation:void 0===g.cycleNavigation||g.cycleNavigation,fullHeightHover:void 0===g.fullHeightHover||g.fullHeightHover,navButtonsWrapperProps:d(g.navButtonsWrapperProps),navButtonsProps:d(g.navButtonsProps),NavButton:g.NavButton,NextIcon:void 0!==g.NextIcon?g.NextIcon:F.default.createElement(l.default,null),PrevIcon:void 0!==g.PrevIcon?g.PrevIcon:F.default.createElement(A.default,null),indicators:void 0===g.indicators||g.indicators,indicatorContainerProps:d(g.indicatorContainerProps),indicatorIconButtonProps:d(g.indicatorIconButtonProps),activeIndicatorIconButtonProps:d(g.activeIndicatorIconButtonProps),IndicatorIcon:g.IndicatorIcon,onChange:void 0!==g.onChange?g.onChange:function(){},changeOnFirstRender:void 0!==g.changeOnFirstRender&&g.changeOnFirstRender,next:void 0!==g.next?g.next:function(){},prev:void 0!==g.prev?g.prev:function(){}}},y=function(g){function I(g){!function(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}(this,I);var e=function(g,I){if(!g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!I||"object"!==typeof I&&"function"!==typeof I?g:I}(this,(I.__proto__||Object.getPrototypeOf(I)).call(this,g));return(0,i.default)(e),e.state={active:0,prevActive:0,displayed:0},e.timer=null,e}return function(g,I){if("function"!==typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function, not "+typeof I);g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,enumerable:!1,writable:!0,configurable:!0}}),I&&(Object.setPrototypeOf?Object.setPrototypeOf(g,I):g.__proto__=I)}(I,g),t(I,[{key:"componentDidMount",value:function(){var g=u(this.props),I=g.index,e=g.changeOnFirstRender;this.setActive(I,void 0,e),this.start()}},{key:"componentWillUnmount",value:function(){this.stop()}},{key:"componentDidUpdate",value:function(g,I){g=u(g);var e=u(this.props),t=e.autoPlay,C=e.interval,Q=e.children,F=e.index;t===g.autoPlay&&C===g.interval||this.reset(),Q.length!==g.children.length&&this.setActive(F),g.index!==F&&this.setActive(F)}},{key:"stop",value:function(){this.timer&&(clearInterval(this.timer),this.timer=null)}},{key:"start",value:function(){var g=u(this.props),I=g.autoPlay,e=g.interval;I&&(this.timer=setInterval(this.next,e))}},{key:"reset",value:function(){var g=u(this.props).autoPlay;this.stop(),g&&this.start()}},{key:"setActive",value:function(g){var I=this,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){},t=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],C=u(this.props),Q=C.onChange,F=C.timeout,B=C.children,n=C.strictIndexing;Array.isArray(B)?(n&&g>B.length-1&&(g=B.length-1),n&&g<0&&(g=0)):g=0;var U=this.state.active;this.setState({active:g,prevActive:U,displayed:U},this.reset),setTimeout((function(){I.setState({displayed:g},(function(){t&&(e(g,U),Q(g,U))}))}),F.exit?F.exit:F)}},{key:"next",value:function(g){var I=u(this.props),e=I.children,t=I.next,C=I.cycleNavigation,Q=this.state.active+1>e.length-1?C?0:this.state.active:this.state.active+1;this.setActive(Q,t),g&&g.stopPropagation()}},{key:"prev",value:function(g){var I=u(this.props),e=I.children,t=I.prev,C=I.cycleNavigation,Q=this.state.active-1<0?C?e.length-1:this.state.active:this.state.active-1;this.setActive(Q,t),g&&g.stopPropagation()}},{key:"render",value:function(){var g=this,I=u(this.props),e=I.children,t=I.className,Q=I.stopAutoPlayOnHover,B=I.animation,n=I.reverseEdgeAnimationDirection,s=I.timeout,i=I.swipe,c=I.navButtonsAlwaysInvisible,A=I.navButtonsAlwaysVisible,l=I.cycleNavigation,a=I.fullHeightHover,r=I.navButtonsProps,d=I.navButtonsWrapperProps,y=I.NavButton,m=I.NextIcon,x=I.PrevIcon,R=I.indicators,S=I.indicatorContainerProps,G=I.indicatorIconButtonProps,L=I.activeIndicatorIconButtonProps,V=I.IndicatorIcon,h=this.props.classes,D=r.className,p=r.style,E=o(r,["className","style"]),N=d.className,W=d.style,f=o(d,["className","style"]),X=""+(A?h.buttonVisible:h.buttonHidden),J=h.button+" "+X+" "+(a?h.fullHeightHoverButton:"")+" "+D,v=h.buttonWrapper+" "+(a?h.fullHeightHoverWrapper:"")+" "+N,k=function(){var I=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return!!l||!(I&&g.state.active+1>e.length-1)&&!(!I&&g.state.active-1<0)};return F.default.createElement("div",{className:h.root+" "+(t||""),onMouseOver:function(){Q&&g.stop()},onMouseOut:function(){Q&&g.reset()},onFocus:function(){Q&&g.stop()},onBlur:function(){Q&&g.reset()}},Array.isArray(e)?e.map((function(I,t){return F.default.createElement(b,{key:"carousel-item"+t,display:t===g.state.displayed,active:t===g.state.active,isNext:0===g.state.active&&g.state.prevActive===e.length-1||g.state.active===e.length-1&&0===g.state.prevActive?n:g.state.active>g.state.prevActive,child:I,animation:B,timeout:s,swipe:i,next:g.next,prev:g.prev})})):F.default.createElement(b,{key:"carousel-item0",display:!0,active:!0,child:e,animation:B,timeout:s}),!c&&k(!0)&&F.default.createElement("div",C({className:v+" "+h.next,style:W},f),void 0!==y?y(C({onClick:this.next,className:J,style:p,next:!0,prev:!1},E)):F.default.createElement(U.default,C({className:""+J,onClick:this.next,"aria-label":"Next",style:p},E),m)),!c&&k(!1)&&F.default.createElement("div",C({className:v+" "+h.prev,style:W},f),void 0!==y?y.apply(void 0,[{onClick:this.prev,className:J,style:r.style,next:!1,prev:!0}].concat(function(g){if(Array.isArray(g)){for(var I=0,e=Array(g.length);I<g.length;I++)e[I]=g[I];return e}return Array.from(g)}(E))):F.default.createElement(U.default,C({className:""+J,onClick:this.prev,"aria-label":"Previous",style:r.style},E),x)),R?F.default.createElement(Z,{classes:h,length:e.length,active:this.state.active,press:this.setActive,indicatorContainerProps:S,indicatorIconButtonProps:G,activeIndicatorIconButtonProps:L,IndicatorIcon:V}):null)}}]),I}(Q.Component);function b(g){var I=(0,a.useSwipeable)({onSwipedLeft:function(){return g.next()},onSwipedRight:function(){return g.prev()}});return I=g.swipe?I:{},g.display?F.default.createElement("div",C({},I,{className:"CarouselItem"}),"slide"===g.animation?F.default.createElement(n.default,{direction:g.active?g.isNext?"left":"right":g.isNext?"right":"left",in:g.active,timeout:g.timeout},F.default.createElement("div",null,g.child)):F.default.createElement(B.default,{in:g.active,timeout:g.timeout},F.default.createElement("div",null,g.child))):null}function Z(g){for(var I=g.classes,e=void 0!==g.IndicatorIcon?g.IndicatorIcon:F.default.createElement(c.default,{size:"small",className:I.indicatorIcon}),t=g.indicatorIconButtonProps,Q=t.className,B=t.style,n=o(t,["className","style"]),s=g.activeIndicatorIconButtonProps,i=s.className,A=s.style,l=o(s,["className","style"]),a=[],r=function(t){var s=t===g.active?I.indicator+" "+Q+" "+I.active+" "+i:I.indicator+" "+Q,c=t===g.active?Object.assign({},B,A):B,r=t===g.active?Object.assign({},n,l):n;void 0===r["aria-label"]&&(r["aria-label"]="carousel indicator");var o=F.default.createElement(U.default,C({key:t,className:s,style:c,onClick:function(){g.press(t)},size:"small"},r,{"aria-label":r["aria-label"]+" "+(t+1)}),e);a.push(o)},d=0;d<g.length;d++)r(d);var u=g.indicatorContainerProps,y=u.className,b=u.style,Z=o(u,["className","style"]);return F.default.createElement("div",C({className:I.indicators+" "+y,style:b},Z),a)}I.default=(0,s.withStyles)({root:{position:"relative",overflow:"hidden"},indicators:{width:"100%",marginTop:"10px",textAlign:"center"},indicator:{cursor:"pointer",transition:"200ms",padding:0,color:"#afafaf","&:hover":{color:"#1f1f1f"},"&:active":{color:"#1f1f1f"}},indicatorIcon:{fontSize:"15px"},active:{color:"#494949"},buttonWrapper:{position:"absolute",height:"100px",backgroundColor:"transparent",top:"calc(50% - 70px)","&:hover":{"& $button":{backgroundColor:"black",filter:"brightness(120%)",opacity:"0.4"}}},fullHeightHoverWrapper:{height:"100%",top:"0"},fullHeightHoverButton:{},buttonVisible:{opacity:"1"},buttonHidden:{opacity:"0"},button:{margin:"0 10px",position:"relative",backgroundColor:"#494949",top:"calc(50% - 20px) !important",color:"white",fontSize:"30px",transition:"200ms",cursor:"pointer","&:hover":{opacity:"0.6 !important"}},next:{right:0},prev:{left:0}})(y)},function(g,I,e){"use strict";var t=e(1203),C=e(1207);g.exports=function(g,I){I=Object.assign({},I);var e,Q=function(g){var e=function(I){return"string"===typeof I?g===I:I.test(g)};return I.include?I.include.some(e):!I.exclude||!I.exclude.some(e)},F=C(function(g){var I=new Set;do{var e,t=C(Reflect.ownKeys(g));try{for(t.s();!(e=t.n()).done;){var Q=e.value;I.add([g,Q])}}catch(F){t.e(F)}finally{t.f()}}while((g=Reflect.getPrototypeOf(g))&&g!==Object.prototype);return I}(g.constructor.prototype));try{for(F.s();!(e=F.n()).done;){var B=t(e.value,2),n=B[0],U=B[1];if("constructor"!==U&&Q(U)){var s=Reflect.getOwnPropertyDescriptor(n,U);s&&"function"===typeof s.value&&(g[U]=g[U].bind(g))}}}catch(i){F.e(i)}finally{F.f()}return g};var Q=["componentWillMount","UNSAFE_componentWillMount","render","getSnapshotBeforeUpdate","componentDidMount","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","shouldComponentUpdate","componentWillUpdate","UNSAFE_componentWillUpdate","componentDidUpdate","componentWillUnmount","componentDidCatch","setState","forceUpdate"];g.exports.react=function(I,e){return(e=Object.assign({},e)).exclude=(e.exclude||[]).concat(Q),g.exports(I,e)}},function(g,I,e){var t=e(1204),C=e(1205),Q=e(512),F=e(1206);g.exports=function(g,I){return t(g)||C(g,I)||Q(g,I)||F()}},function(g,I){g.exports=function(g){if(Array.isArray(g))return g}},function(g,I){g.exports=function(g,I){if("undefined"!==typeof Symbol&&Symbol.iterator in Object(g)){var e=[],t=!0,C=!1,Q=void 0;try{for(var F,B=g[Symbol.iterator]();!(t=(F=B.next()).done)&&(e.push(F.value),!I||e.length!==I);t=!0);}catch(n){C=!0,Q=n}finally{try{t||null==B.return||B.return()}finally{if(C)throw Q}}return e}}},function(g,I){g.exports=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}},function(g,I,e){var t=e(512);g.exports=function(g){if("undefined"===typeof Symbol||null==g[Symbol.iterator]){if(Array.isArray(g)||(g=t(g))){var I=0,e=function(){};return{s:e,n:function(){return I>=g.length?{done:!0}:{done:!1,value:g[I++]}},e:function(g){throw g},f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var C,Q,F=!0,B=!1;return{s:function(){C=g[Symbol.iterator]()},n:function(){var g=C.next();return F=g.done,g},e:function(g){B=!0,Q=g},f:function(){try{F||null==C.return||C.return()}finally{if(B)throw Q}}}}},function(g,I,e){!function(g,I){function e(g){if(g&&g.__esModule)return g;var I=Object.create(null);return g&&Object.keys(g).forEach((function(e){if("default"!==e){var t=Object.getOwnPropertyDescriptor(g,e);Object.defineProperty(I,e,t.get?t:{enumerable:!0,get:function(){return g[e]}})}})),I.default=g,I}var t=e(I);function C(){return(C=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}var Q={delta:10,preventDefaultTouchmoveEvent:!1,rotationAngle:0,trackMouse:!1,trackTouch:!0},F={first:!0,initial:[0,0],start:0,swiping:!1,xy:[0,0]};function B(g,I){if(0===I)return g;var e=Math.PI/180*I;return[g[0]*Math.cos(e)+g[1]*Math.sin(e),g[1]*Math.cos(e)-g[0]*Math.sin(e)]}g.DOWN="Down",g.LEFT="Left",g.RIGHT="Right",g.UP="Up",g.useSwipeable=function(g){var I=g.trackMouse,e=t.useRef(C({},F)),n=t.useRef(C({},Q));n.current=C({},Q,g,{delta:void 0===g.delta?Q.delta:g.delta,rotationAngle:void 0===g.rotationAngle?Q.rotationAngle:g.rotationAngle,trackTouch:void 0===g.trackTouch?Q.trackTouch:g.trackTouch});var U=t.useMemo((function(){return function(g,I){var e=function(I){I&&"touches"in I&&I.touches.length>1||g((function(g,e){e.trackMouse&&(document.addEventListener("mousemove",t),document.addEventListener("mouseup",s));var Q="touches"in I?I.touches[0]:I,n=B([Q.clientX,Q.clientY],e.rotationAngle);return C({},g,F,{initial:[].concat(n),xy:n,start:I.timeStamp||0})}))},t=function(I){g((function(g,e){if("touches"in I&&I.touches.length>1)return g;var t="touches"in I?I.touches[0]:I,F=B([t.clientX,t.clientY],e.rotationAngle),n=F[0],U=F[1],s=n-g.xy[0],i=U-g.xy[1],c=Math.abs(s),A=Math.abs(i),l=(I.timeStamp||0)-g.start,a=Math.sqrt(c*c+A*A)/(l||1),r=[s/(l||1),i/(l||1)],o=function(g,I,e,t){return g>I?e>0?"Right":"Left":t>0?"Down":"Up"}(c,A,s,i),d="number"===typeof e.delta?e.delta:e.delta[o.toLowerCase()]||Q.delta;if(c<d&&A<d&&!g.swiping)return g;var u={absX:c,absY:A,deltaX:s,deltaY:i,dir:o,event:I,first:g.first,initial:g.initial,velocity:a,vxvy:r};u.first&&e.onSwipeStart&&e.onSwipeStart(u),e.onSwiping&&e.onSwiping(u);var y=!1;return(e.onSwiping||e.onSwiped||"onSwiped"+o in e)&&(y=!0),y&&e.preventDefaultTouchmoveEvent&&e.trackTouch&&I.cancelable&&I.preventDefault(),C({},g,{first:!1,eventData:u,swiping:!0})}))},n=function(I){g((function(g,e){var t;if(g.swiping&&g.eventData){t=C({},g.eventData,{event:I}),e.onSwiped&&e.onSwiped(t);var Q=e["onSwiped"+t.dir];Q&&Q(t)}else e.onTap&&e.onTap({event:I});return C({},g,F,{eventData:t})}))},U=function(){document.removeEventListener("mousemove",t),document.removeEventListener("mouseup",s)},s=function(g){U(),n(g)},i=function(g,I){var C=function(){};if(g&&g.addEventListener){var Q=[["touchstart",e],["touchmove",t],["touchend",n]];Q.forEach((function(e){var t=e[0],C=e[1];return g.addEventListener(t,C,{passive:I})})),C=function(){return Q.forEach((function(I){var e=I[0],t=I[1];return g.removeEventListener(e,t)}))}}return C},c={ref:function(I){null!==I&&g((function(g,e){if(g.el===I)return g;var t={};return g.el&&g.el!==I&&g.cleanUpTouch&&(g.cleanUpTouch(),t.cleanUpTouch=void 0),e.trackTouch&&I&&(t.cleanUpTouch=i(I,!e.preventDefaultTouchmoveEvent)),C({},g,{el:I},t)}))}};return I.trackMouse&&(c.onMouseDown=e),[c,i]}((function(g){return e.current=g(e.current,n.current)}),{trackMouse:I})}),[I]),s=U[0],i=U[1];return e.current=function(g,I,e){var t={};return!I.trackTouch&&g.cleanUpTouch?(g.cleanUpTouch(),t.cleanUpTouch=void 0):I.trackTouch&&!g.cleanUpTouch&&g.el&&(t.cleanUpTouch=e(g.el,!I.preventDefaultTouchmoveEvent)),C({},g,t)}(e.current,n.current,i),s}}(I,e(0))},function(g,I,e){"use strict";g.exports=e(1210)},function(g,I,e){"use strict";var t=e(139),C=e(679),Q=e(1212),F=e(1217),B=e(282),n=e(1218),U=e(1222),s=e(1223),i=e(1225),c=B.createElement,A=B.createFactory,l=B.cloneElement,a=t,r={Children:{map:Q.map,forEach:Q.forEach,count:Q.count,toArray:Q.toArray,only:i},Component:C.Component,PureComponent:C.PureComponent,createElement:c,cloneElement:l,isValidElement:B.isValidElement,PropTypes:n,createClass:s,createFactory:A,createMixin:function(g){return g},DOM:F,version:U,__spread:a};g.exports=r},function(g,I,e){"use strict";g.exports=function(){}},function(g,I,e){"use strict";var t=e(1213),C=e(282),Q=e(681),F=e(1214),B=t.twoArgumentPooler,n=t.fourArgumentPooler,U=/\/+/g;function s(g){return(""+g).replace(U,"$&/")}function i(g,I){this.func=g,this.context=I,this.count=0}function c(g,I,e){var t=g.func,C=g.context;t.call(C,I,g.count++)}function A(g,I,e,t){this.result=g,this.keyPrefix=I,this.func=e,this.context=t,this.count=0}function l(g,I,e){var t=g.result,F=g.keyPrefix,B=g.func,n=g.context,U=B.call(n,I,g.count++);Array.isArray(U)?a(U,t,e,Q.thatReturnsArgument):null!=U&&(C.isValidElement(U)&&(U=C.cloneAndReplaceKey(U,F+(!U.key||I&&I.key===U.key?"":s(U.key)+"/")+e)),t.push(U))}function a(g,I,e,t,C){var Q="";null!=e&&(Q=s(e)+"/");var B=A.getPooled(I,Q,t,C);F(g,l,B),A.release(B)}function r(g,I,e){return null}i.prototype.destructor=function(){this.func=null,this.context=null,this.count=0},t.addPoolingTo(i,B),A.prototype.destructor=function(){this.result=null,this.keyPrefix=null,this.func=null,this.context=null,this.count=0},t.addPoolingTo(A,n);var o={forEach:function(g,I,e){if(null==g)return g;var t=i.getPooled(I,e);F(g,c,t),i.release(t)},map:function(g,I,e){if(null==g)return g;var t=[];return a(g,t,null,I,e),t},mapIntoWithKeyPrefixInternal:a,count:function(g,I){return F(g,r,null)},toArray:function(g){var I=[];return a(g,I,null,Q.thatReturnsArgument),I}};g.exports=o},function(g,I,e){"use strict";var t=e(402),C=(e(337),function(g){if(this.instancePool.length){var I=this.instancePool.pop();return this.call(I,g),I}return new this(g)}),Q=function(g){g instanceof this||t("25"),g.destructor(),this.instancePool.length<this.poolSize&&this.instancePool.push(g)},F=C,B={addPoolingTo:function(g,I){var e=g;return e.instancePool=[],e.getPooled=I||F,e.poolSize||(e.poolSize=10),e.release=Q,e},oneArgumentPooler:C,twoArgumentPooler:function(g,I){if(this.instancePool.length){var e=this.instancePool.pop();return this.call(e,g,I),e}return new this(g,I)},threeArgumentPooler:function(g,I,e){if(this.instancePool.length){var t=this.instancePool.pop();return this.call(t,g,I,e),t}return new this(g,I,e)},fourArgumentPooler:function(g,I,e,t){if(this.instancePool.length){var C=this.instancePool.pop();return this.call(C,g,I,e,t),C}return new this(g,I,e,t)}};g.exports=B},function(g,I,e){"use strict";var t=e(402),C=(e(684),e(685)),Q=e(1215),F=(e(337),e(1216));e(513);function B(g,I){return g&&"object"===typeof g&&null!=g.key?F.escape(g.key):I.toString(36)}g.exports=function(g,I,e){return null==g?0:function g(I,e,n,U){var s,i=typeof I;if("undefined"!==i&&"boolean"!==i||(I=null),null===I||"string"===i||"number"===i||"object"===i&&I.$$typeof===C)return n(U,I,""===e?"."+B(I,0):e),1;var c=0,A=""===e?".":e+":";if(Array.isArray(I))for(var l=0;l<I.length;l++)c+=g(s=I[l],A+B(s,l),n,U);else{var a=Q(I);if(a){var r,o=a.call(I);if(a!==I.entries)for(var d=0;!(r=o.next()).done;)c+=g(s=r.value,A+B(s,d++),n,U);else for(;!(r=o.next()).done;){var u=r.value;u&&(c+=g(s=u[1],A+F.escape(u[0])+":"+B(s,0),n,U))}}else if("object"===i){var y=String(I);t("31","[object Object]"===y?"object with keys {"+Object.keys(I).join(", ")+"}":y,"")}}return c}(g,"",I,e)}},function(g,I,e){"use strict";var t="function"===typeof Symbol&&Symbol.iterator;g.exports=function(g){var I=g&&(t&&g[t]||g["@@iterator"]);if("function"===typeof I)return I}},function(g,I,e){"use strict";var t={escape:function(g){var I={"=":"=0",":":"=2"};return"$"+(""+g).replace(/[=:]/g,(function(g){return I[g]}))},unescape:function(g){var I={"=0":"=","=2":":"};return(""+("."===g[0]&&"$"===g[1]?g.substring(2):g.substring(1))).replace(/(=0|=2)/g,(function(g){return I[g]}))}};g.exports=t},function(g,I,e){"use strict";var t=e(282).createFactory,C={a:t("a"),abbr:t("abbr"),address:t("address"),area:t("area"),article:t("article"),aside:t("aside"),audio:t("audio"),b:t("b"),base:t("base"),bdi:t("bdi"),bdo:t("bdo"),big:t("big"),blockquote:t("blockquote"),body:t("body"),br:t("br"),button:t("button"),canvas:t("canvas"),caption:t("caption"),cite:t("cite"),code:t("code"),col:t("col"),colgroup:t("colgroup"),data:t("data"),datalist:t("datalist"),dd:t("dd"),del:t("del"),details:t("details"),dfn:t("dfn"),dialog:t("dialog"),div:t("div"),dl:t("dl"),dt:t("dt"),em:t("em"),embed:t("embed"),fieldset:t("fieldset"),figcaption:t("figcaption"),figure:t("figure"),footer:t("footer"),form:t("form"),h1:t("h1"),h2:t("h2"),h3:t("h3"),h4:t("h4"),h5:t("h5"),h6:t("h6"),head:t("head"),header:t("header"),hgroup:t("hgroup"),hr:t("hr"),html:t("html"),i:t("i"),iframe:t("iframe"),img:t("img"),input:t("input"),ins:t("ins"),kbd:t("kbd"),keygen:t("keygen"),label:t("label"),legend:t("legend"),li:t("li"),link:t("link"),main:t("main"),map:t("map"),mark:t("mark"),menu:t("menu"),menuitem:t("menuitem"),meta:t("meta"),meter:t("meter"),nav:t("nav"),noscript:t("noscript"),object:t("object"),ol:t("ol"),optgroup:t("optgroup"),option:t("option"),output:t("output"),p:t("p"),param:t("param"),picture:t("picture"),pre:t("pre"),progress:t("progress"),q:t("q"),rp:t("rp"),rt:t("rt"),ruby:t("ruby"),s:t("s"),samp:t("samp"),script:t("script"),section:t("section"),select:t("select"),small:t("small"),source:t("source"),span:t("span"),strong:t("strong"),style:t("style"),sub:t("sub"),summary:t("summary"),sup:t("sup"),table:t("table"),tbody:t("tbody"),td:t("td"),textarea:t("textarea"),tfoot:t("tfoot"),th:t("th"),thead:t("thead"),time:t("time"),title:t("title"),tr:t("tr"),track:t("track"),u:t("u"),ul:t("ul"),var:t("var"),video:t("video"),wbr:t("wbr"),circle:t("circle"),clipPath:t("clipPath"),defs:t("defs"),ellipse:t("ellipse"),g:t("g"),image:t("image"),line:t("line"),linearGradient:t("linearGradient"),mask:t("mask"),path:t("path"),pattern:t("pattern"),polygon:t("polygon"),polyline:t("polyline"),radialGradient:t("radialGradient"),rect:t("rect"),stop:t("stop"),svg:t("svg"),text:t("text"),tspan:t("tspan")};g.exports=C},function(g,I,e){"use strict";var t=e(282).isValidElement,C=e(1219);g.exports=C(t)},function(g,I,e){"use strict";var t=e(1220);g.exports=function(g){return t(g,!1)}},function(g,I,e){"use strict";var t=e(122),C=e(139),Q=e(657),F=e(1221),B=Function.call.bind(Object.prototype.hasOwnProperty);function n(){return null}g.exports=function(g,I){var e="function"===typeof Symbol&&Symbol.iterator;var U={array:A("array"),bool:A("boolean"),func:A("function"),number:A("number"),object:A("object"),string:A("string"),symbol:A("symbol"),any:c(n),arrayOf:function(g){return c((function(I,e,t,C,F){if("function"!==typeof g)return new i("Property `"+F+"` of component `"+t+"` has invalid PropType notation inside arrayOf.");var B=I[e];if(!Array.isArray(B))return new i("Invalid "+C+" `"+F+"` of type `"+a(B)+"` supplied to `"+t+"`, expected an array.");for(var n=0;n<B.length;n++){var U=g(B,n,t,C,F+"["+n+"]",Q);if(U instanceof Error)return U}return null}))},element:c((function(I,e,t,C,Q){var F=I[e];return g(F)?null:new i("Invalid "+C+" `"+Q+"` of type `"+a(F)+"` supplied to `"+t+"`, expected a single ReactElement.")})),elementType:c((function(g,I,e,C,Q){var F=g[I];return t.isValidElementType(F)?null:new i("Invalid "+C+" `"+Q+"` of type `"+a(F)+"` supplied to `"+e+"`, expected a single ReactElement type.")})),instanceOf:function(g){return c((function(I,e,t,C,Q){if(!(I[e]instanceof g)){var F=g.name||"<<anonymous>>";return new i("Invalid "+C+" `"+Q+"` of type `"+function(g){if(!g.constructor||!g.constructor.name)return"<<anonymous>>";return g.constructor.name}(I[e])+"` supplied to `"+t+"`, expected instance of `"+F+"`.")}return null}))},node:c((function(g,I,e,t,C){return l(g[I])?null:new i("Invalid "+t+" `"+C+"` supplied to `"+e+"`, expected a ReactNode.")})),objectOf:function(g){return c((function(I,e,t,C,F){if("function"!==typeof g)return new i("Property `"+F+"` of component `"+t+"` has invalid PropType notation inside objectOf.");var n=I[e],U=a(n);if("object"!==U)return new i("Invalid "+C+" `"+F+"` of type `"+U+"` supplied to `"+t+"`, expected an object.");for(var s in n)if(B(n,s)){var c=g(n,s,t,C,F+"."+s,Q);if(c instanceof Error)return c}return null}))},oneOf:function(g){if(!Array.isArray(g))return n;return c((function(I,e,t,C,Q){for(var F=I[e],B=0;B<g.length;B++)if(s(F,g[B]))return null;var n=JSON.stringify(g,(function(g,I){return"symbol"===r(I)?String(I):I}));return new i("Invalid "+C+" `"+Q+"` of value `"+String(F)+"` supplied to `"+t+"`, expected one of "+n+".")}))},oneOfType:function(g){if(!Array.isArray(g))return n;for(var I=0;I<g.length;I++){var e=g[I];if("function"!==typeof e)return o(e),n}return c((function(I,e,t,C,F){for(var B=0;B<g.length;B++){if(null==(0,g[B])(I,e,t,C,F,Q))return null}return new i("Invalid "+C+" `"+F+"` supplied to `"+t+"`.")}))},shape:function(g){return c((function(I,e,t,C,F){var B=I[e],n=a(B);if("object"!==n)return new i("Invalid "+C+" `"+F+"` of type `"+n+"` supplied to `"+t+"`, expected `object`.");for(var U in g){var s=g[U];if(s){var c=s(B,U,t,C,F+"."+U,Q);if(c)return c}}return null}))},exact:function(g){return c((function(I,e,t,F,B){var n=I[e],U=a(n);if("object"!==U)return new i("Invalid "+F+" `"+B+"` of type `"+U+"` supplied to `"+t+"`, expected `object`.");var s=C({},I[e],g);for(var c in s){var A=g[c];if(!A)return new i("Invalid "+F+" `"+B+"` key `"+c+"` supplied to `"+t+"`.\nBad object: "+JSON.stringify(I[e],null,"  ")+"\nValid keys: "+JSON.stringify(Object.keys(g),null,"  "));var l=A(n,c,t,F,B+"."+c,Q);if(l)return l}return null}))}};function s(g,I){return g===I?0!==g||1/g===1/I:g!==g&&I!==I}function i(g){this.message=g,this.stack=""}function c(g){function e(e,t,C,F,B,n,U){if((F=F||"<<anonymous>>",n=n||C,U!==Q)&&I){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}return null==t[C]?e?null===t[C]?new i("The "+B+" `"+n+"` is marked as required in `"+F+"`, but its value is `null`."):new i("The "+B+" `"+n+"` is marked as required in `"+F+"`, but its value is `undefined`."):null:g(t,C,F,B,n)}var t=e.bind(null,!1);return t.isRequired=e.bind(null,!0),t}function A(g){return c((function(I,e,t,C,Q,F){var B=I[e];return a(B)!==g?new i("Invalid "+C+" `"+Q+"` of type `"+r(B)+"` supplied to `"+t+"`, expected `"+g+"`."):null}))}function l(I){switch(typeof I){case"number":case"string":case"undefined":return!0;case"boolean":return!I;case"object":if(Array.isArray(I))return I.every(l);if(null===I||g(I))return!0;var t=function(g){var I=g&&(e&&g[e]||g["@@iterator"]);if("function"===typeof I)return I}(I);if(!t)return!1;var C,Q=t.call(I);if(t!==I.entries){for(;!(C=Q.next()).done;)if(!l(C.value))return!1}else for(;!(C=Q.next()).done;){var F=C.value;if(F&&!l(F[1]))return!1}return!0;default:return!1}}function a(g){var I=typeof g;return Array.isArray(g)?"array":g instanceof RegExp?"object":function(g,I){return"symbol"===g||!!I&&("Symbol"===I["@@toStringTag"]||"function"===typeof Symbol&&I instanceof Symbol)}(I,g)?"symbol":I}function r(g){if("undefined"===typeof g||null===g)return""+g;var I=a(g);if("object"===I){if(g instanceof Date)return"date";if(g instanceof RegExp)return"regexp"}return I}function o(g){var I=r(g);switch(I){case"array":case"object":return"an "+I;case"boolean":case"date":case"regexp":return"a "+I;default:return I}}return i.prototype=Error.prototype,U.checkPropTypes=F,U.resetWarningCache=F.resetWarningCache,U.PropTypes=U,U}},function(g,I,e){"use strict";function t(g,I,e,t,C){}t.resetWarningCache=function(){0},g.exports=t},function(g,I,e){"use strict";g.exports="15.6.2"},function(g,I,e){"use strict";var t=e(679).Component,C=e(282).isValidElement,Q=e(680),F=e(1224);g.exports=F(t,C,Q)},function(g,I,e){"use strict";var t=e(139),C=e(683),Q=e(337);g.exports=function(g,I,e){var F=[],B={mixins:"DEFINE_MANY",statics:"DEFINE_MANY",propTypes:"DEFINE_MANY",contextTypes:"DEFINE_MANY",childContextTypes:"DEFINE_MANY",getDefaultProps:"DEFINE_MANY_MERGED",getInitialState:"DEFINE_MANY_MERGED",getChildContext:"DEFINE_MANY_MERGED",render:"DEFINE_ONCE",componentWillMount:"DEFINE_MANY",componentDidMount:"DEFINE_MANY",componentWillReceiveProps:"DEFINE_MANY",shouldComponentUpdate:"DEFINE_ONCE",componentWillUpdate:"DEFINE_MANY",componentDidUpdate:"DEFINE_MANY",componentWillUnmount:"DEFINE_MANY",UNSAFE_componentWillMount:"DEFINE_MANY",UNSAFE_componentWillReceiveProps:"DEFINE_MANY",UNSAFE_componentWillUpdate:"DEFINE_MANY",updateComponent:"OVERRIDE_BASE"},n={getDerivedStateFromProps:"DEFINE_MANY_MERGED"},U={displayName:function(g,I){g.displayName=I},mixins:function(g,I){if(I)for(var e=0;e<I.length;e++)i(g,I[e])},childContextTypes:function(g,I){g.childContextTypes=t({},g.childContextTypes,I)},contextTypes:function(g,I){g.contextTypes=t({},g.contextTypes,I)},getDefaultProps:function(g,I){g.getDefaultProps?g.getDefaultProps=A(g.getDefaultProps,I):g.getDefaultProps=I},propTypes:function(g,I){g.propTypes=t({},g.propTypes,I)},statics:function(g,I){!function(g,I){if(!I)return;for(var e in I){var t=I[e];if(I.hasOwnProperty(e)){if(Q(!(e in U),'ReactClass: You are attempting to define a reserved property, `%s`, that shouldn\'t be on the "statics" key. Define it as an instance property instead; it will still be accessible on the constructor.',e),e in g){var C=n.hasOwnProperty(e)?n[e]:null;return Q("DEFINE_MANY_MERGED"===C,"ReactClass: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.",e),void(g[e]=A(g[e],t))}g[e]=t}}}(g,I)},autobind:function(){}};function s(g,I){var e=B.hasOwnProperty(I)?B[I]:null;d.hasOwnProperty(I)&&Q("OVERRIDE_BASE"===e,"ReactClassInterface: You are attempting to override `%s` from your class specification. Ensure that your method names do not overlap with React methods.",I),g&&Q("DEFINE_MANY"===e||"DEFINE_MANY_MERGED"===e,"ReactClassInterface: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.",I)}function i(g,e){if(e){Q("function"!==typeof e,"ReactClass: You're attempting to use a component class or function as a mixin. Instead, just use a regular object."),Q(!I(e),"ReactClass: You're attempting to use a component as a mixin. Instead, just use a regular object.");var t=g.prototype,C=t.__reactAutoBindPairs;for(var F in e.hasOwnProperty("mixins")&&U.mixins(g,e.mixins),e)if(e.hasOwnProperty(F)&&"mixins"!==F){var n=e[F],i=t.hasOwnProperty(F);if(s(i,F),U.hasOwnProperty(F))U[F](g,n);else{var c=B.hasOwnProperty(F);if("function"===typeof n&&!c&&!i&&!1!==e.autobind)C.push(F,n),t[F]=n;else if(i){var a=B[F];Q(c&&("DEFINE_MANY_MERGED"===a||"DEFINE_MANY"===a),"ReactClass: Unexpected spec policy %s for key %s when mixing in component specs.",a,F),"DEFINE_MANY_MERGED"===a?t[F]=A(t[F],n):"DEFINE_MANY"===a&&(t[F]=l(t[F],n))}else t[F]=n}}}else;}function c(g,I){for(var e in Q(g&&I&&"object"===typeof g&&"object"===typeof I,"mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects."),I)I.hasOwnProperty(e)&&(Q(void 0===g[e],"mergeIntoWithNoDuplicateKeys(): Tried to merge two objects with the same key: `%s`. This conflict may be due to a mixin; in particular, this may be caused by two getInitialState() or getDefaultProps() methods returning objects with clashing keys.",e),g[e]=I[e]);return g}function A(g,I){return function(){var e=g.apply(this,arguments),t=I.apply(this,arguments);if(null==e)return t;if(null==t)return e;var C={};return c(C,e),c(C,t),C}}function l(g,I){return function(){g.apply(this,arguments),I.apply(this,arguments)}}function a(g,I){return I.bind(g)}var r={componentDidMount:function(){this.__isMounted=!0}},o={componentWillUnmount:function(){this.__isMounted=!1}},d={replaceState:function(g,I){this.updater.enqueueReplaceState(this,g,I)},isMounted:function(){return!!this.__isMounted}},u=function(){};return t(u.prototype,g.prototype,d),function(g){var I=function(g,t,F){this.__reactAutoBindPairs.length&&function(g){for(var I=g.__reactAutoBindPairs,e=0;e<I.length;e+=2){var t=I[e],C=I[e+1];g[t]=a(g,C)}}(this),this.props=g,this.context=t,this.refs=C,this.updater=F||e,this.state=null;var B=this.getInitialState?this.getInitialState():null;Q("object"===typeof B&&!Array.isArray(B),"%s.getInitialState(): must return an object or null",I.displayName||"ReactCompositeComponent"),this.state=B};for(var t in I.prototype=new u,I.prototype.constructor=I,I.prototype.__reactAutoBindPairs=[],F.forEach(i.bind(null,I)),i(I,r),i(I,g),i(I,o),I.getDefaultProps&&(I.defaultProps=I.getDefaultProps()),Q(I.prototype.render,"createClass(...): Class specification must implement a `render` method."),B)I.prototype[t]||(I.prototype[t]=null);return I}}},function(g,I,e){"use strict";var t=e(402),C=e(282);e(337);g.exports=function(g){return C.isValidElement(g)||t("143"),g}},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0});var t=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g},C=n(e(1227)),Q=n(e(1234)),F=n(e(1235)),B=e(1258);function n(g){return g&&g.__esModule?g:{default:g}}function U(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}var s=function(g){return g.replace(/([A-Z])/g,(function(g){return"-"+g.toLowerCase()}))};I.default=function g(I){if(!(0,C.default)(I))return I;var e=void 0;return Object.keys(I).reduce((function(n,i){var c=i;if(e=I[c],(0,C.default)(e))return t({},n,U({},c,g(e)));if(-1===B.CSS_PROPERTIES.indexOf(c)||(0,F.default)(s(c),e)||(c=""+Q.default.js+c.charAt(0).toUpperCase()+c.slice(1)),"display"===i&&"flex"===I[i]&&!(0,F.default)("display","flex"))return t({},n,U({},c,"ms"===Q.default.js?"-ms-flexbox":Q.default.css+"flex"));if("transition"===i){var A=B.ANIMATABLE_VALUES.reduce((function(g,e){var C=s(e),B=new RegExp(C,"g");if(B.test(I[i])&&!(0,F.default)(C)){var n=I[i].replace(B,""+Q.default.css+C);return t({},g,U({},c,n))}return g}),{});return t({},n,A)}return t({},n,U({},c,e))}),{})}},function(g,I,e){var t=e(686),C=e(1232),Q=e(687),F=Function.prototype,B=Object.prototype,n=F.toString,U=B.hasOwnProperty,s=n.call(Object);g.exports=function(g){if(!Q(g)||"[object Object]"!=t(g))return!1;var I=C(g);if(null===I)return!0;var e=U.call(I,"constructor")&&I.constructor;return"function"==typeof e&&e instanceof e&&n.call(e)==s}},function(g,I,e){var t=e(1229),C="object"==typeof self&&self&&self.Object===Object&&self,Q=t||C||Function("return this")();g.exports=Q},function(g,I,e){(function(I){var e="object"==typeof I&&I&&I.Object===Object&&I;g.exports=e}).call(this,e(67))},function(g,I,e){var t=e(515),C=Object.prototype,Q=C.hasOwnProperty,F=C.toString,B=t?t.toStringTag:void 0;g.exports=function(g){var I=Q.call(g,B),e=g[B];try{g[B]=void 0;var t=!0}catch(n){}var C=F.call(g);return t&&(I?g[B]=e:delete g[B]),C}},function(g,I){var e=Object.prototype.toString;g.exports=function(g){return e.call(g)}},function(g,I,e){var t=e(1233)(Object.getPrototypeOf,Object);g.exports=t},function(g,I){g.exports=function(g,I){return function(e){return g(I(e))}}},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0});var t=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g},C={css:"",js:""};if(e(514).isBrowser){var Q=window.getComputedStyle(document.documentElement),F=Array.prototype.slice.call(Q).join(""),B=F.match(/-(moz|webkit|ms)-/),n=F.match(""===Q.OLink&&["","o"]),U=B||n,s=U?U[1]:"";"ms"!==(C={css:"-"+s+"-",js:s}).js&&(C=t({},C,{js:""+C.js.charAt(0).toUpperCase()+C.js.slice(1)}))}I.default=C},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0});var t,C=e(514),Q=e(1236),F=(t=Q)&&t.__esModule?t:{default:t};I.default=function(g,I){if(C.isBrowser){if("CSS"in window&&"supports"in window.CSS)return window.CSS.supports(g,I);if("supportsCSS"in window)return window.supportsCSS(g,I);var e=(0,F.default)(g),t=document.createElement("div"),Q=e in t.style;return t.style.cssText=g+":"+I,Q&&""!==t.style[e]}return!1}},function(g,I,e){var t=e(1237),C=e(1249)((function(g,I,e){return I=I.toLowerCase(),g+(e?t(I):I)}));g.exports=C},function(g,I,e){var t=e(403),C=e(1242);g.exports=function(g){return C(t(g).toLowerCase())}},function(g,I,e){var t=e(515),C=e(1239),Q=e(1240),F=e(1241),B=t?t.prototype:void 0,n=B?B.toString:void 0;g.exports=function g(I){if("string"==typeof I)return I;if(Q(I))return C(I,g)+"";if(F(I))return n?n.call(I):"";var e=I+"";return"0"==e&&1/I==-1/0?"-0":e}},function(g,I){g.exports=function(g,I){for(var e=-1,t=null==g?0:g.length,C=Array(t);++e<t;)C[e]=I(g[e],e,g);return C}},function(g,I){var e=Array.isArray;g.exports=e},function(g,I,e){var t=e(686),C=e(687);g.exports=function(g){return"symbol"==typeof g||C(g)&&"[object Symbol]"==t(g)}},function(g,I,e){var t=e(1243)("toUpperCase");g.exports=t},function(g,I,e){var t=e(1244),C=e(688),Q=e(1246),F=e(403);g.exports=function(g){return function(I){I=F(I);var e=C(I)?Q(I):void 0,B=e?e[0]:I.charAt(0),n=e?t(e,1).join(""):I.slice(1);return B[g]()+n}}},function(g,I,e){var t=e(1245);g.exports=function(g,I,e){var C=g.length;return e=void 0===e?C:e,!I&&e>=C?g:t(g,I,e)}},function(g,I){g.exports=function(g,I,e){var t=-1,C=g.length;I<0&&(I=-I>C?0:C+I),(e=e>C?C:e)<0&&(e+=C),C=I>e?0:e-I>>>0,I>>>=0;for(var Q=Array(C);++t<C;)Q[t]=g[t+I];return Q}},function(g,I,e){var t=e(1247),C=e(688),Q=e(1248);g.exports=function(g){return C(g)?Q(g):t(g)}},function(g,I){g.exports=function(g){return g.split("")}},function(g,I){var e="[\\ud800-\\udfff]",t="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",C="\\ud83c[\\udffb-\\udfff]",Q="[^\\ud800-\\udfff]",F="(?:\\ud83c[\\udde6-\\uddff]){2}",B="[\\ud800-\\udbff][\\udc00-\\udfff]",n="(?:"+t+"|"+C+")"+"?",U="[\\ufe0e\\ufe0f]?"+n+("(?:\\u200d(?:"+[Q,F,B].join("|")+")[\\ufe0e\\ufe0f]?"+n+")*"),s="(?:"+[Q+t+"?",t,F,B,e].join("|")+")",i=RegExp(C+"(?="+C+")|"+s+U,"g");g.exports=function(g){return g.match(i)||[]}},function(g,I,e){var t=e(1250),C=e(1251),Q=e(1254),F=RegExp("['\u2019]","g");g.exports=function(g){return function(I){return t(Q(C(I).replace(F,"")),g,"")}}},function(g,I){g.exports=function(g,I,e,t){var C=-1,Q=null==g?0:g.length;for(t&&Q&&(e=g[++C]);++C<Q;)e=I(e,g[C],C,g);return e}},function(g,I,e){var t=e(1252),C=e(403),Q=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,F=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]","g");g.exports=function(g){return(g=C(g))&&g.replace(Q,t).replace(F,"")}},function(g,I,e){var t=e(1253)({"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a","\xc7":"C","\xe7":"c","\xd0":"D","\xf0":"d","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xcc":"I","\xcd":"I","\xce":"I","\xcf":"I","\xec":"i","\xed":"i","\xee":"i","\xef":"i","\xd1":"N","\xf1":"n","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xf9":"u","\xfa":"u","\xfb":"u","\xfc":"u","\xdd":"Y","\xfd":"y","\xff":"y","\xc6":"Ae","\xe6":"ae","\xde":"Th","\xfe":"th","\xdf":"ss","\u0100":"A","\u0102":"A","\u0104":"A","\u0101":"a","\u0103":"a","\u0105":"a","\u0106":"C","\u0108":"C","\u010a":"C","\u010c":"C","\u0107":"c","\u0109":"c","\u010b":"c","\u010d":"c","\u010e":"D","\u0110":"D","\u010f":"d","\u0111":"d","\u0112":"E","\u0114":"E","\u0116":"E","\u0118":"E","\u011a":"E","\u0113":"e","\u0115":"e","\u0117":"e","\u0119":"e","\u011b":"e","\u011c":"G","\u011e":"G","\u0120":"G","\u0122":"G","\u011d":"g","\u011f":"g","\u0121":"g","\u0123":"g","\u0124":"H","\u0126":"H","\u0125":"h","\u0127":"h","\u0128":"I","\u012a":"I","\u012c":"I","\u012e":"I","\u0130":"I","\u0129":"i","\u012b":"i","\u012d":"i","\u012f":"i","\u0131":"i","\u0134":"J","\u0135":"j","\u0136":"K","\u0137":"k","\u0138":"k","\u0139":"L","\u013b":"L","\u013d":"L","\u013f":"L","\u0141":"L","\u013a":"l","\u013c":"l","\u013e":"l","\u0140":"l","\u0142":"l","\u0143":"N","\u0145":"N","\u0147":"N","\u014a":"N","\u0144":"n","\u0146":"n","\u0148":"n","\u014b":"n","\u014c":"O","\u014e":"O","\u0150":"O","\u014d":"o","\u014f":"o","\u0151":"o","\u0154":"R","\u0156":"R","\u0158":"R","\u0155":"r","\u0157":"r","\u0159":"r","\u015a":"S","\u015c":"S","\u015e":"S","\u0160":"S","\u015b":"s","\u015d":"s","\u015f":"s","\u0161":"s","\u0162":"T","\u0164":"T","\u0166":"T","\u0163":"t","\u0165":"t","\u0167":"t","\u0168":"U","\u016a":"U","\u016c":"U","\u016e":"U","\u0170":"U","\u0172":"U","\u0169":"u","\u016b":"u","\u016d":"u","\u016f":"u","\u0171":"u","\u0173":"u","\u0174":"W","\u0175":"w","\u0176":"Y","\u0177":"y","\u0178":"Y","\u0179":"Z","\u017b":"Z","\u017d":"Z","\u017a":"z","\u017c":"z","\u017e":"z","\u0132":"IJ","\u0133":"ij","\u0152":"Oe","\u0153":"oe","\u0149":"'n","\u017f":"s"});g.exports=t},function(g,I){g.exports=function(g){return function(I){return null==g?void 0:g[I]}}},function(g,I,e){var t=e(1255),C=e(1256),Q=e(403),F=e(1257);g.exports=function(g,I,e){return g=Q(g),void 0===(I=e?void 0:I)?C(g)?F(g):t(g):g.match(I)||[]}},function(g,I){var e=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;g.exports=function(g){return g.match(e)||[]}},function(g,I){var e=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;g.exports=function(g){return e.test(g)}},function(g,I){var e="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",t="["+e+"]",C="\\d+",Q="[\\u2700-\\u27bf]",F="[a-z\\xdf-\\xf6\\xf8-\\xff]",B="[^\\ud800-\\udfff"+e+C+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",n="(?:\\ud83c[\\udde6-\\uddff]){2}",U="[\\ud800-\\udbff][\\udc00-\\udfff]",s="[A-Z\\xc0-\\xd6\\xd8-\\xde]",i="(?:"+F+"|"+B+")",c="(?:"+s+"|"+B+")",A="(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?",l="[\\ufe0e\\ufe0f]?"+A+("(?:\\u200d(?:"+["[^\\ud800-\\udfff]",n,U].join("|")+")[\\ufe0e\\ufe0f]?"+A+")*"),a="(?:"+[Q,n,U].join("|")+")"+l,r=RegExp([s+"?"+F+"+(?:['\u2019](?:d|ll|m|re|s|t|ve))?(?="+[t,s,"$"].join("|")+")",c+"+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?(?="+[t,s+i,"$"].join("|")+")",s+"?"+i+"+(?:['\u2019](?:d|ll|m|re|s|t|ve))?",s+"+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",C,a].join("|"),"g");g.exports=function(g){return g.match(r)||[]}},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0});I.ANIMATABLE_VALUES=["columnCount","columnGap","columnRule","columnRuleColor","columnRuleWidth","columns","flex","flexBasis","flexGrow","flexShrink","order","perspective","perspectiveOrigin","perspectiveOriginX","perspectiveOriginY","scrollSnapCoordinate","scrollSnapDirection","textDecoration","textDecorationColor","transform","transformOrigin","transformOriginX","transformOriginY","transformOriginZ","transformStyle"],I.CSS_PROPERTIES=["alignContent","alignItems","alignSelf","animation","animationDelay","animationDirection","animationDuration","animationFillMode","animationIterationCount","animationName","animationPlayState","animationTimingFunction","appearance","aspectRatio","backfaceVisibility","backgroundClip","borderImage","borderImageSlice","boxShadow","columnCount","columnFill","columnGap","columnRule","columnRuleColor","columnRuleStyle","columnRuleWidth","columnSpan","columnWidth","columns","flex","flexBasis","flexDirection","flexFlow","flexGrow","flexShrink","flexWrap","fontFeatureSettings","fontKearning","fontVariantLigatures","justifyContent","grid","gridArea","gridAutoColumns","gridAutoFlow","gridAutoRows","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","gridTemplate","gridTemplateAreas","gridTemplateColumns","gridTemplateRows","hyphens","lineBreak","perspective","perspectiveOrigin","perspectiveOriginX","perspectiveOriginY","rubyPosition","scrollSnapCoordinate","scrollSnapDestination","scrollSnapPoints","scrollSnapPointsX","scrollSnapPointsY","scrollSnapType","tabSize","textDecoration","textDecorationColor","textDecorationLine","textDecorationStyle","textOrientation","textSizeAdjust","transform","transition","transformOrigin","transformOriginX","transformOriginY","transformOriginZ","transformStyle","transitionProperty","transitionDuration","transitionTimingFunction","transitionDelay","userModify","userSelect"]},,function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0});var t=function(){function g(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}return function(I,e,t){return e&&g(I.prototype,e),t&&g(I,t),I}}(),C=e(0),Q=n(C),F=n(e(42)),B=n(e(4));function n(g){return g&&g.__esModule?g:{default:g}}function U(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}function s(g,I){if(!g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!I||"object"!==typeof I&&"function"!==typeof I?g:I}var i=function(g){function I(){var g,e,t;U(this,I);for(var C=arguments.length,Q=Array(C),F=0;F<C;F++)Q[F]=arguments[F];return e=t=s(this,(g=I.__proto__||Object.getPrototypeOf(I)).call.apply(g,[this].concat(Q))),t.state={isSticky:!1,wasSticky:!1,style:{}},t.handleContainerEvent=function(g){var I=g.distanceFromTop,e=g.distanceFromBottom,C=g.eventSource,Q=t.context.getParent(),F=!1;t.props.relative&&(F=C!==Q,I=-(C.scrollTop+C.offsetTop)+t.placeholder.offsetTop);var B=t.placeholder.getBoundingClientRect(),n=t.content.getBoundingClientRect().height,U=e-t.props.bottomOffset-n,s=!!t.state.isSticky,i=F?s:I<=-t.props.topOffset&&e>-t.props.bottomOffset;e=(t.props.relative?Q.scrollHeight-Q.scrollTop:e)-n;var c=i?{position:"fixed",top:U>0?t.props.relative?Q.offsetTop-Q.offsetParent.scrollTop:0:U,left:B.left,width:B.width}:{};t.props.disableHardwareAcceleration||(c.transform="translateZ(0)"),t.setState({isSticky:i,wasSticky:s,distanceFromTop:I,distanceFromBottom:e,calculatedHeight:n,style:c})},s(t,e)}return function(g,I){if("function"!==typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function, not "+typeof I);g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,enumerable:!1,writable:!0,configurable:!0}}),I&&(Object.setPrototypeOf?Object.setPrototypeOf(g,I):g.__proto__=I)}(I,g),t(I,[{key:"componentWillMount",value:function(){if(!this.context.subscribe)throw new TypeError("Expected Sticky to be mounted within StickyContainer");this.context.subscribe(this.handleContainerEvent)}},{key:"componentWillUnmount",value:function(){this.context.unsubscribe(this.handleContainerEvent)}},{key:"componentDidUpdate",value:function(){this.placeholder.style.paddingBottom=this.props.disableCompensation?0:(this.state.isSticky?this.state.calculatedHeight:0)+"px"}},{key:"render",value:function(){var g=this,I=Q.default.cloneElement(this.props.children({isSticky:this.state.isSticky,wasSticky:this.state.wasSticky,distanceFromTop:this.state.distanceFromTop,distanceFromBottom:this.state.distanceFromBottom,calculatedHeight:this.state.calculatedHeight,style:this.state.style}),{ref:function(I){g.content=F.default.findDOMNode(I)}});return Q.default.createElement("div",null,Q.default.createElement("div",{ref:function(I){return g.placeholder=I}}),I)}}]),I}(C.Component);i.propTypes={topOffset:B.default.number,bottomOffset:B.default.number,relative:B.default.bool,children:B.default.func.isRequired},i.defaultProps={relative:!1,topOffset:0,bottomOffset:0,disableCompensation:!1,disableHardwareAcceleration:!1},i.contextTypes={subscribe:B.default.func,unsubscribe:B.default.func,getParent:B.default.func},I.default=i},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0});var t=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g},C=function(){function g(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}return function(I,e,t){return e&&g(I.prototype,e),t&&g(I,t),I}}(),Q=e(0),F=U(Q),B=U(e(4)),n=U(e(399));function U(g){return g&&g.__esModule?g:{default:g}}function s(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}function i(g,I){if(!g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!I||"object"!==typeof I&&"function"!==typeof I?g:I}var c=function(g){function I(){var g,e,t;s(this,I);for(var C=arguments.length,Q=Array(C),F=0;F<C;F++)Q[F]=arguments[F];return e=t=i(this,(g=I.__proto__||Object.getPrototypeOf(I)).call.apply(g,[this].concat(Q))),t.events=["resize","scroll","touchstart","touchmove","touchend","pageshow","load"],t.subscribers=[],t.rafHandle=null,t.subscribe=function(g){t.subscribers=t.subscribers.concat(g)},t.unsubscribe=function(g){t.subscribers=t.subscribers.filter((function(I){return I!==g}))},t.notifySubscribers=function(g){if(!t.framePending){var I=g.currentTarget;t.rafHandle=(0,n.default)((function(){t.framePending=!1;var g=t.node.getBoundingClientRect(),e=g.top,C=g.bottom;t.subscribers.forEach((function(g){return g({distanceFromTop:e,distanceFromBottom:C,eventSource:I===window?document.body:t.node})}))})),t.framePending=!0}},t.getParent=function(){return t.node},i(t,e)}return function(g,I){if("function"!==typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function, not "+typeof I);g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,enumerable:!1,writable:!0,configurable:!0}}),I&&(Object.setPrototypeOf?Object.setPrototypeOf(g,I):g.__proto__=I)}(I,g),C(I,[{key:"getChildContext",value:function(){return{subscribe:this.subscribe,unsubscribe:this.unsubscribe,getParent:this.getParent}}},{key:"componentDidMount",value:function(){var g=this;this.events.forEach((function(I){return window.addEventListener(I,g.notifySubscribers)}))}},{key:"componentWillUnmount",value:function(){var g=this;this.rafHandle&&(n.default.cancel(this.rafHandle),this.rafHandle=null),this.events.forEach((function(I){return window.removeEventListener(I,g.notifySubscribers)}))}},{key:"render",value:function(){var g=this;return F.default.createElement("div",t({},this.props,{ref:function(I){return g.node=I},onScroll:this.notifySubscribers,onTouchStart:this.notifySubscribers,onTouchMove:this.notifySubscribers,onTouchEnd:this.notifySubscribers}))}}]),I}(Q.PureComponent);c.childContextTypes={subscribe:B.default.func,unsubscribe:B.default.func,getParent:B.default.func},I.default=c},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0}),I.default=I.GA4=void 0;var t=U(e(1263)),C=U(e(1264)),Q=["eventCategory","eventAction","eventLabel","eventValue","hitType"],F=["title","location"],B=["page","hitType"],n=["action","category","label","value","nonInteraction","transport"];function U(g){return g&&g.__esModule?g:{default:g}}function s(g,I){if(null==g)return{};var e,t,C=function(g,I){if(null==g)return{};var e,t,C={},Q=Object.keys(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||(C[e]=g[e]);return C}(g,I);if(Object.getOwnPropertySymbols){var Q=Object.getOwnPropertySymbols(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||Object.prototype.propertyIsEnumerable.call(g,e)&&(C[e]=g[e])}return C}function i(g){return(i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"===typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g})(g)}function c(g){return function(g){if(Array.isArray(g))return o(g)}(g)||function(g){if("undefined"!==typeof Symbol&&null!=g[Symbol.iterator]||null!=g["@@iterator"])return Array.from(g)}(g)||r(g)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function A(g,I){var e=Object.keys(g);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(g);I&&(t=t.filter((function(I){return Object.getOwnPropertyDescriptor(g,I).enumerable}))),e.push.apply(e,t)}return e}function l(g){for(var I=1;I<arguments.length;I++){var e=null!=arguments[I]?arguments[I]:{};I%2?A(Object(e),!0).forEach((function(I){u(g,I,e[I])})):Object.getOwnPropertyDescriptors?Object.defineProperties(g,Object.getOwnPropertyDescriptors(e)):A(Object(e)).forEach((function(I){Object.defineProperty(g,I,Object.getOwnPropertyDescriptor(e,I))}))}return g}function a(g,I){return function(g){if(Array.isArray(g))return g}(g)||function(g,I){var e=null==g?null:"undefined"!==typeof Symbol&&g[Symbol.iterator]||g["@@iterator"];if(null==e)return;var t,C,Q=[],F=!0,B=!1;try{for(e=e.call(g);!(F=(t=e.next()).done)&&(Q.push(t.value),!I||Q.length!==I);F=!0);}catch(n){B=!0,C=n}finally{try{F||null==e.return||e.return()}finally{if(B)throw C}}return Q}(g,I)||r(g,I)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function r(g,I){if(g){if("string"===typeof g)return o(g,I);var e=Object.prototype.toString.call(g).slice(8,-1);return"Object"===e&&g.constructor&&(e=g.constructor.name),"Map"===e||"Set"===e?Array.from(g):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?o(g,I):void 0}}function o(g,I){(null==I||I>g.length)&&(I=g.length);for(var e=0,t=new Array(I);e<I;e++)t[e]=g[e];return t}function d(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}function u(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}var y=function(){function g(){var I=this;!function(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}(this,g),u(this,"reset",(function(){I.isInitialized=!1,I._testMode=!1,I._currentMeasurementId,I._hasLoadedGA=!1,I._isQueuing=!1,I._queueGtag=[]})),u(this,"_gtag",(function(){for(var g=arguments.length,e=new Array(g),C=0;C<g;C++)e[C]=arguments[C];I._testMode||I._isQueuing?I._queueGtag.push(e):t.default.apply(void 0,e)})),u(this,"_loadGA",(function(g,e){if("undefined"!==typeof window&&"undefined"!==typeof document&&!I._hasLoadedGA){var t=document.createElement("script");t.async=!0,t.src="https://www.googletagmanager.com/gtag/js?id=".concat(g),e&&t.setAttribute("nonce",e),document.body.appendChild(t),window.dataLayer=window.dataLayer||[],window.gtag=function(){window.dataLayer.push(arguments)},I._hasLoadedGA=!0}})),u(this,"_toGtagOptions",(function(g){if(g){var I={cookieUpdate:"cookie_update",cookieExpires:"cookie_expires",cookieDomain:"cookie_domain",cookieFlags:"cookie_flags",userId:"user_id",clientId:"client_id",anonymizeIp:"anonymize_ip",contentGroup1:"content_group1",contentGroup2:"content_group2",contentGroup3:"content_group3",contentGroup4:"content_group4",contentGroup5:"content_group5",allowAdFeatures:"allow_google_signals",allowAdPersonalizationSignals:"allow_ad_personalization_signals",nonInteraction:"non_interaction",page:"page_path",hitCallback:"event_callback"};return Object.entries(g).reduce((function(g,e){var t=a(e,2),C=t[0],Q=t[1];return I[C]?g[I[C]]=Q:g[C]=Q,g}),{})}})),u(this,"initialize",(function(g){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!g)throw new Error("Require GA_MEASUREMENT_ID");var t="string"===typeof g?[{trackingId:g}]:g;I._currentMeasurementId=t[0].trackingId;var C=e.gaOptions,Q=e.gtagOptions,F=e.legacyDimensionMetric,B=void 0===F||F,n=e.nonce,U=e.testMode,s=void 0!==U&&U;if(I._testMode=s,s||I._loadGA(I._currentMeasurementId,n),I.isInitialized||(I._gtag("js",new Date),t.forEach((function(g){var e=I._appendCustomMap(l(l(l({send_page_view:!1},I._toGtagOptions(l(l({},C),g.gaOptions))),Q),g.gtagOptions),B);I._gtag("config",g.trackingId,e)}))),I.isInitialized=!0,!s){var i=c(I._queueGtag);for(I._queueGtag=[],I._isQueuing=!1;i.length;){var A=i.shift();I._gtag.apply(I,c(A)),"get"===A[0]&&(I._isQueuing=!0)}}})),u(this,"set",(function(g){g?"object"===i(g)?(0===Object.keys(g).length&&console.warn("empty `fieldsObject` given to .set()"),I._gaCommand("set",g)):console.warn("Expected `fieldsObject` arg to be an Object"):console.warn("`fieldsObject` is required in .set()")})),u(this,"_gaCommandSendEvent",(function(g,e,t,C,Q){I._gtag("event",e,l(l({event_category:g,event_label:t,value:C},Q&&{non_interaction:Q.nonInteraction}),I._toGtagOptions(Q)))})),u(this,"_gaCommandSendEventParameters",(function(){for(var g=arguments.length,e=new Array(g),t=0;t<g;t++)e[t]=arguments[t];if("string"===typeof e[0])I._gaCommandSendEvent.apply(I,c(e.slice(1)));else{var C=e[0],F=C.eventCategory,B=C.eventAction,n=C.eventLabel,U=C.eventValue,i=(C.hitType,s(C,Q));I._gaCommandSendEvent(F,B,n,U,i)}})),u(this,"_gaCommandSendTiming",(function(g,e,t,C){I._gtag("event","timing_complete",{name:e,value:t,event_category:g,event_label:C})})),u(this,"_gaCommandSendPageview",(function(g,e){if(e&&Object.keys(e).length){var t=I._toGtagOptions(e),C=t.title,Q=t.location,B=s(t,F);I._gtag("event","page_view",l(l(l(l({},g&&{page_path:g}),C&&{page_title:C}),Q&&{page_location:Q}),B))}else g?I._gtag("event","page_view",{page_path:g}):I._gtag("event","page_view")})),u(this,"_gaCommandSendPageviewParameters",(function(){for(var g=arguments.length,e=new Array(g),t=0;t<g;t++)e[t]=arguments[t];if("string"===typeof e[0])I._gaCommandSendPageview.apply(I,c(e.slice(1)));else{var C=e[0],Q=C.page,F=(C.hitType,s(C,B));I._gaCommandSendPageview(Q,F)}})),u(this,"_gaCommandSend",(function(){for(var g=arguments.length,e=new Array(g),t=0;t<g;t++)e[t]=arguments[t];var C="string"===typeof e[0]?e[0]:e[0].hitType;switch(C){case"event":I._gaCommandSendEventParameters.apply(I,e);break;case"pageview":I._gaCommandSendPageviewParameters.apply(I,e);break;case"timing":I._gaCommandSendTiming.apply(I,c(e.slice(1)));break;case"screenview":case"transaction":case"item":case"social":case"exception":console.warn("Unsupported send command: ".concat(C));break;default:console.warn("Send command doesn't exist: ".concat(C))}})),u(this,"_gaCommandSet",(function(){for(var g=arguments.length,e=new Array(g),t=0;t<g;t++)e[t]=arguments[t];"string"===typeof e[0]&&(e[0]=u({},e[0],e[1])),I._gtag("set",I._toGtagOptions(e[0]))})),u(this,"_gaCommand",(function(g){for(var e=arguments.length,t=new Array(e>1?e-1:0),C=1;C<e;C++)t[C-1]=arguments[C];switch(g){case"send":I._gaCommandSend.apply(I,t);break;case"set":I._gaCommandSet.apply(I,t);break;default:console.warn("Command doesn't exist: ".concat(g))}})),u(this,"ga",(function(){for(var g=arguments.length,e=new Array(g),t=0;t<g;t++)e[t]=arguments[t];if("string"===typeof e[0])I._gaCommand.apply(I,e);else{var C=e[0];I._gtag("get",I._currentMeasurementId,"client_id",(function(g){I._isQueuing=!1;var e=I._queueGtag;for(C({get:function(e){return"clientId"===e?g:"trackingId"===e?I._currentMeasurementId:"apiVersion"===e?"1":void 0}});e.length;){var t=e.shift();I._gtag.apply(I,c(t))}})),I._isQueuing=!0}return I.ga})),u(this,"event",(function(g,e){if("string"===typeof g)I._gtag("event",g,I._toGtagOptions(e));else{var t=g.action,Q=g.category,F=g.label,B=g.value,U=g.nonInteraction,i=g.transport,c=s(g,n);if(!Q||!t)return void console.warn("args.category AND args.action are required in event()");var A={hitType:"event",eventCategory:(0,C.default)(Q),eventAction:(0,C.default)(t)};F&&(A.eventLabel=(0,C.default)(F)),"undefined"!==typeof B&&("number"!==typeof B?console.warn("Expected `args.value` arg to be a Number."):A.eventValue=B),"undefined"!==typeof U&&("boolean"!==typeof U?console.warn("`args.nonInteraction` must be a boolean."):A.nonInteraction=U),"undefined"!==typeof i&&("string"!==typeof i?console.warn("`args.transport` must be a string."):(-1===["beacon","xhr","image"].indexOf(i)&&console.warn("`args.transport` must be either one of these values: `beacon`, `xhr` or `image`"),A.transport=i)),Object.keys(c).filter((function(g){return"dimension"===g.substr(0,"dimension".length)})).forEach((function(g){A[g]=c[g]})),Object.keys(c).filter((function(g){return"metric"===g.substr(0,"metric".length)})).forEach((function(g){A[g]=c[g]})),I._gaCommand("send",A)}})),u(this,"send",(function(g){I._gaCommand("send",g)})),u(this,"pageview",(function(g,e,t){var C=null===g||void 0===g?void 0:g.trim();""!==C?I._gaCommand("send","pageview",C,{title:t}):console.warn("path cannot be an empty string in .pageview()")})),this.reset()}var I,e,U;return I=g,(e=[{key:"gtag",value:function(){this._gtag.apply(this,arguments)}},{key:"_appendCustomMap",value:function(g){var I=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(!I)return g;g.custom_map||(g.custom_map={});for(var e=1;e<=200;e++)g.custom_map["dimension".concat(e)]||(g.custom_map["dimension".concat(e)]="dimension".concat(e)),g.custom_map["metric".concat(e)]||(g.custom_map["metric".concat(e)]="metric".concat(e));return g}},{key:"outboundLink",value:function(g,I){var e=g.label;if("function"===typeof I)if(e){var t={hitType:"event",eventCategory:"Outbound",eventAction:"Click",eventLabel:(0,C.default)(e)},Q=!1,F=setTimeout((function(){Q=!0,I()}),250);t.hitCallback=function(){clearTimeout(F),Q||I()},this._gaCommand("send",t)}else console.warn("args.label is required in outboundLink()");else console.warn("hitCallback function is required")}}])&&d(I.prototype,e),U&&d(I,U),g}();I.GA4=y;var b=new y;I.default=b},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var t=function(){for(var g=arguments.length,I=new Array(g),e=0;e<g;e++)I[e]=arguments[e];var t;"undefined"!==typeof window&&("undefined"===typeof window.gtag&&(window.dataLayer=window.dataLayer||[],window.gtag=function(){window.dataLayer.push(arguments)}),(t=window).gtag.apply(t,I))};I.default=t},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0}),I.default=function(){var g=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",I=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],e=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],t=g||"";I&&(t=C(g));e&&(t=Q(t));return t};var t=/^(a|an|and|as|at|but|by|en|for|if|in|nor|of|on|or|per|the|to|vs?\.?|via)$/i;function C(g){return g.toString().trim().replace(/[A-Za-z0-9\u00C0-\u00FF]+[^\s-]*/g,(function(g,I,e){return I>0&&I+g.length!==e.length&&g.search(t)>-1&&":"!==e.charAt(I-2)&&("-"!==e.charAt(I+g.length)||"-"===e.charAt(I-1))&&e.charAt(I-1).search(/[^\s-]/)<0?g.toLowerCase():g.substr(1).search(/[A-Z]|\../)>-1?g:g.charAt(0).toUpperCase()+g.substr(1)}))}function Q(g){return"string"===typeof(I=g)&&-1!==I.indexOf("@")?(console.warn("This arg looks like an email address, redacting."),"REDACTED (Potential Email Address)"):g;var I}},,,function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0});var t=Q(e(0)),C=Q(e(516));function Q(g){return g&&g.__esModule?g:{default:g}}function F(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}function B(g,I){if(!g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!I||"object"!==typeof I&&"function"!==typeof I?g:I}var n=function(g){function I(){var g,e,C;F(this,I);for(var Q=arguments.length,n=Array(Q),U=0;U<Q;U++)n[U]=arguments[U];return e=C=B(this,(g=I.__proto__||Object.getPrototypeOf(I)).call.apply(g,[this].concat(n))),C.render=function(){return t.default.createElement("a",C.props,C.props.children)},B(C,e)}return function(g,I){if("function"!==typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function, not "+typeof I);g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,enumerable:!1,writable:!0,configurable:!0}}),I&&(Object.setPrototypeOf?Object.setPrototypeOf(g,I):g.__proto__=I)}(I,g),I}(t.default.Component);I.default=(0,C.default)(n)},function(g,I,e){(function(I){var e=/^\s+|\s+$/g,t=/^[-+]0x[0-9a-f]+$/i,C=/^0b[01]+$/i,Q=/^0o[0-7]+$/i,F=parseInt,B="object"==typeof I&&I&&I.Object===Object&&I,n="object"==typeof self&&self&&self.Object===Object&&self,U=B||n||Function("return this")(),s=Object.prototype.toString,i=Math.max,c=Math.min,A=function(){return U.Date.now()};function l(g,I,e){var t,C,Q,F,B,n,U=0,s=!1,l=!1,o=!0;if("function"!=typeof g)throw new TypeError("Expected a function");function d(I){var e=t,Q=C;return t=C=void 0,U=I,F=g.apply(Q,e)}function u(g){return U=g,B=setTimeout(b,I),s?d(g):F}function y(g){var e=g-n;return void 0===n||e>=I||e<0||l&&g-U>=Q}function b(){var g=A();if(y(g))return Z(g);B=setTimeout(b,function(g){var e=I-(g-n);return l?c(e,Q-(g-U)):e}(g))}function Z(g){return B=void 0,o&&t?d(g):(t=C=void 0,F)}function m(){var g=A(),e=y(g);if(t=arguments,C=this,n=g,e){if(void 0===B)return u(n);if(l)return B=setTimeout(b,I),d(n)}return void 0===B&&(B=setTimeout(b,I)),F}return I=r(I)||0,a(e)&&(s=!!e.leading,Q=(l="maxWait"in e)?i(r(e.maxWait)||0,I):Q,o="trailing"in e?!!e.trailing:o),m.cancel=function(){void 0!==B&&clearTimeout(B),U=0,t=n=C=B=void 0},m.flush=function(){return void 0===B?F:Z(A())},m}function a(g){var I=typeof g;return!!g&&("object"==I||"function"==I)}function r(g){if("number"==typeof g)return g;if(function(g){return"symbol"==typeof g||function(g){return!!g&&"object"==typeof g}(g)&&"[object Symbol]"==s.call(g)}(g))return NaN;if(a(g)){var I="function"==typeof g.valueOf?g.valueOf():g;g=a(I)?I+"":I}if("string"!=typeof g)return 0===g?g:+g;g=g.replace(e,"");var B=C.test(g);return B||Q.test(g)?F(g.slice(2),B?2:8):t.test(g)?NaN:+g}g.exports=function(g,I,e){var t=!0,C=!0;if("function"!=typeof g)throw new TypeError("Expected a function");return a(e)&&(t="leading"in e?!!e.leading:t,C="trailing"in e?!!e.trailing:C),l(g,I,{leading:t,maxWait:I,trailing:C})}}).call(this,e(67))},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0}),I.default={defaultEasing:function(g){return g<.5?Math.pow(2*g,2)/2:1-Math.pow(2*(1-g),2)/2},linear:function(g){return g},easeInQuad:function(g){return g*g},easeOutQuad:function(g){return g*(2-g)},easeInOutQuad:function(g){return g<.5?2*g*g:(4-2*g)*g-1},easeInCubic:function(g){return g*g*g},easeOutCubic:function(g){return--g*g*g+1},easeInOutCubic:function(g){return g<.5?4*g*g*g:(g-1)*(2*g-2)*(2*g-2)+1},easeInQuart:function(g){return g*g*g*g},easeOutQuart:function(g){return 1- --g*g*g*g},easeInOutQuart:function(g){return g<.5?8*g*g*g*g:1-8*--g*g*g*g},easeInQuint:function(g){return g*g*g*g*g},easeOutQuint:function(g){return 1+--g*g*g*g*g},easeInOutQuint:function(g){return g<.5?16*g*g*g*g*g:1+16*--g*g*g*g*g}}},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0});var t=e(518),C=["mousedown","mousewheel","touchmove","keydown"];I.default={subscribe:function(g){return"undefined"!==typeof document&&C.forEach((function(I){return(0,t.addPassiveEventListener)(document,I,g)}))}}},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0});var t=function(){function g(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}return function(I,e,t){return e&&g(I.prototype,e),t&&g(I,t),I}}(),C=F(e(0)),Q=F(e(516));function F(g){return g&&g.__esModule?g:{default:g}}function B(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}function n(g,I){if(!g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!I||"object"!==typeof I&&"function"!==typeof I?g:I}var U=function(g){function I(){return B(this,I),n(this,(I.__proto__||Object.getPrototypeOf(I)).apply(this,arguments))}return function(g,I){if("function"!==typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function, not "+typeof I);g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,enumerable:!1,writable:!0,configurable:!0}}),I&&(Object.setPrototypeOf?Object.setPrototypeOf(g,I):g.__proto__=I)}(I,g),t(I,[{key:"render",value:function(){return C.default.createElement("input",this.props,this.props.children)}}]),I}(C.default.Component);I.default=(0,Q.default)(U)},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0});var t=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g},C=function(){function g(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}return function(I,e,t){return e&&g(I.prototype,e),t&&g(I,t),I}}(),Q=n(e(0)),F=n(e(692)),B=n(e(4));function n(g){return g&&g.__esModule?g:{default:g}}function U(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}function s(g,I){if(!g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!I||"object"!==typeof I&&"function"!==typeof I?g:I}var i=function(g){function I(){return U(this,I),s(this,(I.__proto__||Object.getPrototypeOf(I)).apply(this,arguments))}return function(g,I){if("function"!==typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function, not "+typeof I);g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,enumerable:!1,writable:!0,configurable:!0}}),I&&(Object.setPrototypeOf?Object.setPrototypeOf(g,I):g.__proto__=I)}(I,g),C(I,[{key:"render",value:function(){var g=this,I=t({},this.props);return I.parentBindings&&delete I.parentBindings,Q.default.createElement("div",t({},I,{ref:function(I){g.props.parentBindings.domNode=I}}),this.props.children)}}]),I}(Q.default.Component);i.propTypes={name:B.default.string,id:B.default.string},I.default=(0,F.default)(i)},function(g,I,e){"use strict";var t=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g},C=function(){function g(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}return function(I,e,t){return e&&g(I.prototype,e),t&&g(I,t),I}}();function Q(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}function F(g,I){if(!g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!I||"object"!==typeof I&&"function"!==typeof I?g:I}function B(g,I){if("function"!==typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function, not "+typeof I);g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,enumerable:!1,writable:!0,configurable:!0}}),I&&(Object.setPrototypeOf?Object.setPrototypeOf(g,I):g.__proto__=I)}var n=e(0),U=(e(42),e(405),e(517)),s=e(404),i=e(4),c=e(691),A={to:i.string.isRequired,containerId:i.string,container:i.object,activeClass:i.string,spy:i.bool,smooth:i.oneOfType([i.bool,i.string]),offset:i.number,delay:i.number,isDynamic:i.bool,onClick:i.func,duration:i.oneOfType([i.number,i.func]),absolute:i.bool,onSetActive:i.func,onSetInactive:i.func,ignoreCancelEvents:i.bool,hashSpy:i.bool},l={Scroll:function(g,I){console.warn("Helpers.Scroll is deprecated since v1.7.0");var e=I||s,i=function(I){function s(g){Q(this,s);var I=F(this,(s.__proto__||Object.getPrototypeOf(s)).call(this,g));return l.call(I),I.state={active:!1},I}return B(s,I),C(s,[{key:"getScrollSpyContainer",value:function(){var g=this.props.containerId,I=this.props.container;return g?document.getElementById(g):I&&I.nodeType?I:document}},{key:"componentDidMount",value:function(){if(this.props.spy||this.props.hashSpy){var g=this.getScrollSpyContainer();U.isMounted(g)||U.mount(g),this.props.hashSpy&&(c.isMounted()||c.mount(e),c.mapContainer(this.props.to,g)),this.props.spy&&U.addStateHandler(this.stateHandler),U.addSpyHandler(this.spyHandler,g),this.setState({container:g})}}},{key:"componentWillUnmount",value:function(){U.unmount(this.stateHandler,this.spyHandler)}},{key:"render",value:function(){var I="";I=this.state&&this.state.active?((this.props.className||"")+" "+(this.props.activeClass||"active")).trim():this.props.className;var e=t({},this.props);for(var C in A)e.hasOwnProperty(C)&&delete e[C];return e.className=I,e.onClick=this.handleClick,n.createElement(g,e)}}]),s}(n.Component),l=function(){var g=this;this.scrollTo=function(I,C){e.scrollTo(I,t({},g.state,C))},this.handleClick=function(I){g.props.onClick&&g.props.onClick(I),I.stopPropagation&&I.stopPropagation(),I.preventDefault&&I.preventDefault(),g.scrollTo(g.props.to,g.props)},this.stateHandler=function(){e.getActiveLink()!==g.props.to&&(null!==g.state&&g.state.active&&g.props.onSetInactive&&g.props.onSetInactive(),g.setState({active:!1}))},this.spyHandler=function(I){var t=g.getScrollSpyContainer();if(!c.isMounted()||c.isInitialized()){var C=g.props.to,Q=null,F=0,B=0,n=0;if(t.getBoundingClientRect)n=t.getBoundingClientRect().top;if(!Q||g.props.isDynamic){if(!(Q=e.get(C)))return;var s=Q.getBoundingClientRect();B=(F=s.top-n+I)+s.height}var i=I-g.props.offset,A=i>=Math.floor(F)&&i<Math.floor(B),l=i<Math.floor(F)||i>=Math.floor(B),a=e.getActiveLink();return l?(C===a&&e.setActiveLink(void 0),g.props.hashSpy&&c.getHash()===C&&c.changeHash(),g.props.spy&&g.state.active&&(g.setState({active:!1}),g.props.onSetInactive&&g.props.onSetInactive()),U.updateStates()):A&&a!==C?(e.setActiveLink(C),g.props.hashSpy&&c.changeHash(C),g.props.spy&&(g.setState({active:!0}),g.props.onSetActive&&g.props.onSetActive(C)),U.updateStates()):void 0}}};return i.propTypes=A,i.defaultProps={offset:0},i},Element:function(g){console.warn("Helpers.Element is deprecated since v1.7.0");var I=function(I){function e(g){Q(this,e);var I=F(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,g));return I.childBindings={domNode:null},I}return B(e,I),C(e,[{key:"componentDidMount",value:function(){if("undefined"===typeof window)return!1;this.registerElems(this.props.name)}},{key:"componentDidUpdate",value:function(g){this.props.name!==g.name&&this.registerElems(this.props.name)}},{key:"componentWillUnmount",value:function(){if("undefined"===typeof window)return!1;s.unregister(this.props.name)}},{key:"registerElems",value:function(g){s.register(g,this.childBindings.domNode)}},{key:"render",value:function(){return n.createElement(g,t({},this.props,{parentBindings:this.childBindings}))}}]),e}(n.Component);return I.propTypes={name:i.string,id:i.string},I}};g.exports=l},function(g,I,e){"use strict";var t=e(0),C=e.n(t);function Q(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}function F(){return(F=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}function B(g,I){var e=Object.keys(g);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(g);I&&(t=t.filter((function(I){return Object.getOwnPropertyDescriptor(g,I).enumerable}))),e.push.apply(e,t)}return e}function n(g){for(var I=1;I<arguments.length;I++){var e=null!=arguments[I]?arguments[I]:{};I%2?B(Object(e),!0).forEach((function(I){Q(g,I,e[I])})):Object.getOwnPropertyDescriptors?Object.defineProperties(g,Object.getOwnPropertyDescriptors(e)):B(Object(e)).forEach((function(I){Object.defineProperty(g,I,Object.getOwnPropertyDescriptor(e,I))}))}return g}function U(g,I){if(null==g)return{};var e,t,C=function(g,I){if(null==g)return{};var e,t,C={},Q=Object.keys(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||(C[e]=g[e]);return C}(g,I);if(Object.getOwnPropertySymbols){var Q=Object.getOwnPropertySymbols(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||Object.prototype.propertyIsEnumerable.call(g,e)&&(C[e]=g[e])}return C}function s(g,I,e){return g(e={path:I,exports:{},require:function(g,I){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}((void 0===I||null===I)&&e.path)}},e.exports),e.exports}var i="function"===typeof Symbol&&Symbol.for,c=i?Symbol.for("react.element"):60103,A=i?Symbol.for("react.portal"):60106,l=i?Symbol.for("react.fragment"):60107,a=i?Symbol.for("react.strict_mode"):60108,r=i?Symbol.for("react.profiler"):60114,o=i?Symbol.for("react.provider"):60109,d=i?Symbol.for("react.context"):60110,u=i?Symbol.for("react.async_mode"):60111,y=i?Symbol.for("react.concurrent_mode"):60111,b=i?Symbol.for("react.forward_ref"):60112,Z=i?Symbol.for("react.suspense"):60113,m=i?Symbol.for("react.suspense_list"):60120,x=i?Symbol.for("react.memo"):60115,R=i?Symbol.for("react.lazy"):60116,S=i?Symbol.for("react.block"):60121,G=i?Symbol.for("react.fundamental"):60117,L=i?Symbol.for("react.responder"):60118,V=i?Symbol.for("react.scope"):60119;function h(g){if("object"===typeof g&&null!==g){var I=g.$$typeof;switch(I){case c:switch(g=g.type){case u:case y:case l:case r:case a:case Z:return g;default:switch(g=g&&g.$$typeof){case d:case b:case R:case x:case o:return g;default:return I}}case A:return I}}}function D(g){return h(g)===y}var p={AsyncMode:u,ConcurrentMode:y,ContextConsumer:d,ContextProvider:o,Element:c,ForwardRef:b,Fragment:l,Lazy:R,Memo:x,Portal:A,Profiler:r,StrictMode:a,Suspense:Z,isAsyncMode:function(g){return D(g)||h(g)===u},isConcurrentMode:D,isContextConsumer:function(g){return h(g)===d},isContextProvider:function(g){return h(g)===o},isElement:function(g){return"object"===typeof g&&null!==g&&g.$$typeof===c},isForwardRef:function(g){return h(g)===b},isFragment:function(g){return h(g)===l},isLazy:function(g){return h(g)===R},isMemo:function(g){return h(g)===x},isPortal:function(g){return h(g)===A},isProfiler:function(g){return h(g)===r},isStrictMode:function(g){return h(g)===a},isSuspense:function(g){return h(g)===Z},isValidElementType:function(g){return"string"===typeof g||"function"===typeof g||g===l||g===y||g===r||g===a||g===Z||g===m||"object"===typeof g&&null!==g&&(g.$$typeof===R||g.$$typeof===x||g.$$typeof===o||g.$$typeof===d||g.$$typeof===b||g.$$typeof===G||g.$$typeof===L||g.$$typeof===V||g.$$typeof===S)},typeOf:h},E=(s((function(g,I){0})),s((function(g){g.exports=p})),Object.getOwnPropertySymbols),N=Object.prototype.hasOwnProperty,W=Object.prototype.propertyIsEnumerable;function f(g){if(null===g||void 0===g)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(g)}(function(){try{if(!Object.assign)return!1;var g=new String("abc");if(g[5]="de","5"===Object.getOwnPropertyNames(g)[0])return!1;for(var I={},e=0;e<10;e++)I["_"+String.fromCharCode(e)]=e;if("0123456789"!==Object.getOwnPropertyNames(I).map((function(g){return I[g]})).join(""))return!1;var t={};return"abcdefghijklmnopqrst".split("").forEach((function(g){t[g]=g})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},t)).join("")}catch(C){return!1}})()&&Object.assign;var X="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED";function J(g,I,e,t,C){}J.resetWarningCache=function(){0};Function.call.bind(Object.prototype.hasOwnProperty);function v(){}function k(){}k.resetWarningCache=v;var H=s((function(g){g.exports=function(){function g(g,I,e,t,C,Q){if(Q!==X){var F=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw F.name="Invariant Violation",F}}function I(){return g}g.isRequired=g;var e={array:g,bool:g,func:g,number:g,object:g,string:g,symbol:g,any:g,arrayOf:I,element:g,elementType:g,instanceOf:I,node:g,objectOf:I,oneOf:I,oneOfType:I,shape:I,exact:I,checkPropTypes:k,resetWarningCache:v};return e.PropTypes=e,e}()}));function M(g,I,e){var t=void 0===I?null:I,C=function(g,I){var e=atob(g);if(I){for(var t=new Uint8Array(e.length),C=0,Q=e.length;C<Q;++C)t[C]=e.charCodeAt(C);return String.fromCharCode.apply(null,new Uint16Array(t.buffer))}return e}(g,void 0!==e&&e),Q=C.indexOf("\n",10)+1,F=C.substring(Q)+(t?"//# sourceMappingURL="+t:""),B=new Blob([F],{type:"application/javascript"});return URL.createObjectURL(B)}var Y=function(g,I,e){var t;return function(C){return t=t||M(g,I,e),new Worker(t,C)}}("Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewoJJ3VzZSBzdHJpY3QnOwoKCXZhciBjb21tb25qc0dsb2JhbCA9IHR5cGVvZiBnbG9iYWxUaGlzICE9PSAndW5kZWZpbmVkJyA/IGdsb2JhbFRoaXMgOiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdyA6IHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsIDogdHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnID8gc2VsZiA6IHt9OwoKCWZ1bmN0aW9uIGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZuLCBiYXNlZGlyLCBtb2R1bGUpIHsKCQlyZXR1cm4gbW9kdWxlID0gewoJCQlwYXRoOiBiYXNlZGlyLAoJCQlleHBvcnRzOiB7fSwKCQkJcmVxdWlyZTogZnVuY3Rpb24gKHBhdGgsIGJhc2UpIHsKCQkJCXJldHVybiBjb21tb25qc1JlcXVpcmUocGF0aCwgKGJhc2UgPT09IHVuZGVmaW5lZCB8fCBiYXNlID09PSBudWxsKSA/IG1vZHVsZS5wYXRoIDogYmFzZSk7CgkJCX0KCQl9LCBmbihtb2R1bGUsIG1vZHVsZS5leHBvcnRzKSwgbW9kdWxlLmV4cG9ydHM7Cgl9CgoJZnVuY3Rpb24gZ2V0QXVnbWVudGVkTmFtZXNwYWNlKG4pIHsKCQlpZiAobi5fX2VzTW9kdWxlKSByZXR1cm4gbjsKCQl2YXIgYSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ19fZXNNb2R1bGUnLCB7dmFsdWU6IHRydWV9KTsKCQlPYmplY3Qua2V5cyhuKS5mb3JFYWNoKGZ1bmN0aW9uIChrKSB7CgkJCXZhciBkID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLCBrKTsKCQkJT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsIGssIGQuZ2V0ID8gZCA6IHsKCQkJCWVudW1lcmFibGU6IHRydWUsCgkJCQlnZXQ6IGZ1bmN0aW9uICgpIHsKCQkJCQlyZXR1cm4gbltrXTsKCQkJCX0KCQkJfSk7CgkJfSk7CgkJcmV0dXJuIGE7Cgl9CgoJZnVuY3Rpb24gY29tbW9uanNSZXF1aXJlICgpIHsKCQl0aHJvdyBuZXcgRXJyb3IoJ0R5bmFtaWMgcmVxdWlyZXMgYXJlIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIGJ5IEByb2xsdXAvcGx1Z2luLWNvbW1vbmpzJyk7Cgl9CgoJZnVuY3Rpb24gZml4UHJvdG8odGFyZ2V0LCBwcm90b3R5cGUpIHsKCSAgdmFyIHNldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mOwoJICBzZXRQcm90b3R5cGVPZiA/IHNldFByb3RvdHlwZU9mKHRhcmdldCwgcHJvdG90eXBlKSA6IHRhcmdldC5fX3Byb3RvX18gPSBwcm90b3R5cGU7Cgl9CglmdW5jdGlvbiBmaXhTdGFjayh0YXJnZXQsIGZuKSB7CgkgIGlmIChmbiA9PT0gdm9pZCAwKSB7CgkgICAgZm4gPSB0YXJnZXQuY29uc3RydWN0b3I7CgkgIH0KCgkgIHZhciBjYXB0dXJlU3RhY2tUcmFjZSA9IEVycm9yLmNhcHR1cmVTdGFja1RyYWNlOwoJICBjYXB0dXJlU3RhY2tUcmFjZSAmJiBjYXB0dXJlU3RhY2tUcmFjZSh0YXJnZXQsIGZuKTsKCX0KCgl2YXIgX19leHRlbmRzID0gIGZ1bmN0aW9uICgpIHsKCSAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikgewoJICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgewoJICAgICAgX19wcm90b19fOiBbXQoJICAgIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgZC5fX3Byb3RvX18gPSBiOwoJICAgIH0gfHwgZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgIGZvciAodmFyIHAgaW4gYikgeyBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgeyBkW3BdID0gYltwXTsgfSB9CgkgICAgfTsKCgkgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgIH07CgoJICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICBleHRlbmRTdGF0aWNzKGQsIGIpOwoKCSAgICBmdW5jdGlvbiBfXygpIHsKCSAgICAgIHRoaXMuY29uc3RydWN0b3IgPSBkOwoJICAgIH0KCgkgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpOwoJICB9OwoJfSgpOwoKCXZhciBDdXN0b21FcnJvciA9IGZ1bmN0aW9uIChfc3VwZXIpIHsKCSAgX19leHRlbmRzKEN1c3RvbUVycm9yLCBfc3VwZXIpOwoKCSAgZnVuY3Rpb24gQ3VzdG9tRXJyb3IobWVzc2FnZSkgewoJICAgIHZhciBfbmV3VGFyZ2V0ID0gdGhpcy5jb25zdHJ1Y3RvcjsKCgkgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgbWVzc2FnZSkgfHwgdGhpczsKCgkgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF90aGlzLCAnbmFtZScsIHsKCSAgICAgIHZhbHVlOiBfbmV3VGFyZ2V0Lm5hbWUsCgkgICAgICBlbnVtZXJhYmxlOiBmYWxzZSwKCSAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZQoJICAgIH0pOwoJICAgIGZpeFByb3RvKF90aGlzLCBfbmV3VGFyZ2V0LnByb3RvdHlwZSk7CgkgICAgZml4U3RhY2soX3RoaXMpOwoJICAgIHJldHVybiBfdGhpczsKCSAgfQoKCSAgcmV0dXJuIEN1c3RvbUVycm9yOwoJfShFcnJvcik7CgoJdmFyIF9fc3ByZWFkQXJyYXlzID0gIGZ1bmN0aW9uICgpIHsKCSAgdmFyIGFyZ3VtZW50cyQxID0gYXJndW1lbnRzOwoKCSAgZm9yICh2YXIgcyA9IDAsIGkgPSAwLCBpbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBpbDsgaSsrKSB7IHMgKz0gYXJndW1lbnRzJDFbaV0ubGVuZ3RoOyB9CgoJICBmb3IgKHZhciByID0gQXJyYXkocyksIGsgPSAwLCBpID0gMDsgaSA8IGlsOyBpKyspIHsgZm9yICh2YXIgYSA9IGFyZ3VtZW50c1tpXSwgaiA9IDAsIGpsID0gYS5sZW5ndGg7IGogPCBqbDsgaisrLCBrKyspIHsgcltrXSA9IGFbal07IH0gfQoKCSAgcmV0dXJuIHI7Cgl9OwoJZnVuY3Rpb24gY3VzdG9tRXJyb3JGYWN0b3J5KGZuLCBwYXJlbnQpIHsKCSAgaWYgKHBhcmVudCA9PT0gdm9pZCAwKSB7CgkgICAgcGFyZW50ID0gRXJyb3I7CgkgIH0KCgkgIGZ1bmN0aW9uIEN1c3RvbUVycm9yKCkgewoJICAgIHZhciBhcmd1bWVudHMkMSA9IGFyZ3VtZW50czsKCgkgICAgdmFyIGFyZ3MgPSBbXTsKCgkgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHsKCSAgICAgIGFyZ3NbX2ldID0gYXJndW1lbnRzJDFbX2ldOwoJICAgIH0KCgkgICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEN1c3RvbUVycm9yKSkgeyByZXR1cm4gbmV3IChDdXN0b21FcnJvci5iaW5kLmFwcGx5KEN1c3RvbUVycm9yLCBfX3NwcmVhZEFycmF5cyhbdm9pZCAwXSwgYXJncykpKSgpOyB9CgkgICAgcGFyZW50LmFwcGx5KHRoaXMsIGFyZ3MpOwoJICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnbmFtZScsIHsKCSAgICAgIHZhbHVlOiBmbi5uYW1lIHx8IHBhcmVudC5uYW1lLAoJICAgICAgZW51bWVyYWJsZTogZmFsc2UsCgkgICAgICBjb25maWd1cmFibGU6IHRydWUKCSAgICB9KTsKCSAgICBmbi5hcHBseSh0aGlzLCBhcmdzKTsKCSAgICBmaXhTdGFjayh0aGlzLCBDdXN0b21FcnJvcik7CgkgIH0KCgkgIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhDdXN0b21FcnJvciwgewoJICAgIHByb3RvdHlwZTogewoJICAgICAgdmFsdWU6IE9iamVjdC5jcmVhdGUocGFyZW50LnByb3RvdHlwZSwgewoJICAgICAgICBjb25zdHJ1Y3RvcjogewoJICAgICAgICAgIHZhbHVlOiBDdXN0b21FcnJvciwKCSAgICAgICAgICB3cml0YWJsZTogdHJ1ZSwKCSAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUKCSAgICAgICAgfQoJICAgICAgfSkKCSAgICB9CgkgIH0pOwoJfQoKCXZhciBjdXN0b21FcnJvciA9IC8qI19fUFVSRV9fKi9PYmplY3QuZnJlZXplKHsKCQlfX3Byb3RvX186IG51bGwsCgkJQ3VzdG9tRXJyb3I6IEN1c3RvbUVycm9yLAoJCWN1c3RvbUVycm9yRmFjdG9yeTogY3VzdG9tRXJyb3JGYWN0b3J5Cgl9KTsKCgl2YXIgdHNfY3VzdG9tX2Vycm9yXzEgPSAvKkBfX1BVUkVfXyovZ2V0QXVnbWVudGVkTmFtZXNwYWNlKGN1c3RvbUVycm9yKTsKCgl2YXIgRXhjZXB0aW9uXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7Cgl2YXIgX19leHRlbmRzID0gKGNvbW1vbmpzR2xvYmFsICYmIGNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHsKCSAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwKCSAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHwKCSAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9OwoJICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICB9OwoJICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH0KCSAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpOwoJICAgIH07Cgl9KSgpOwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCgkvKioKCSAqIEN1c3RvbSBFcnJvciBjbGFzcyBvZiB0eXBlIEV4Y2VwdGlvbi4KCSAqLwoJdmFyIEV4Y2VwdGlvbiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHsKCSAgICBfX2V4dGVuZHMoRXhjZXB0aW9uLCBfc3VwZXIpOwoJICAgIC8qKgoJICAgICAqIEFsbG93cyBFeGNlcHRpb24gdG8gYmUgY29uc3RydWN0ZWQgZGlyZWN0bHkKCSAgICAgKiB3aXRoIHNvbWUgbWVzc2FnZSBhbmQgcHJvdG90eXBlIGRlZmluaXRpb24uCgkgICAgICovCgkgICAgZnVuY3Rpb24gRXhjZXB0aW9uKG1lc3NhZ2UpIHsKCSAgICAgICAgaWYgKG1lc3NhZ2UgPT09IHZvaWQgMCkgeyBtZXNzYWdlID0gdW5kZWZpbmVkOyB9CgkgICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIG1lc3NhZ2UpIHx8IHRoaXM7CgkgICAgICAgIF90aGlzLm1lc3NhZ2UgPSBtZXNzYWdlOwoJICAgICAgICByZXR1cm4gX3RoaXM7CgkgICAgfQoJICAgIEV4Y2VwdGlvbi5wcm90b3R5cGUuZ2V0S2luZCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgdmFyIGV4ID0gdGhpcy5jb25zdHJ1Y3RvcjsKCSAgICAgICAgcmV0dXJuIGV4LmtpbmQ7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBJdCdzIHR5cGVkIGFzIHN0cmluZyBzbyBpdCBjYW4gYmUgZXh0ZW5kZWQgYW5kIG92ZXJyaWRlbi4KCSAgICAgKi8KCSAgICBFeGNlcHRpb24ua2luZCA9ICdFeGNlcHRpb24nOwoJICAgIHJldHVybiBFeGNlcHRpb247Cgl9KHRzX2N1c3RvbV9lcnJvcl8xLkN1c3RvbUVycm9yKSk7CglleHBvcnRzLmRlZmF1bHQgPSBFeGNlcHRpb247CgoJfSk7CgoJdmFyIEFyZ3VtZW50RXhjZXB0aW9uXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7Cgl2YXIgX19leHRlbmRzID0gKGNvbW1vbmpzR2xvYmFsICYmIGNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHsKCSAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwKCSAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHwKCSAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9OwoJICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICB9OwoJICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH0KCSAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpOwoJICAgIH07Cgl9KSgpOwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCgkvKioKCSAqIEN1c3RvbSBFcnJvciBjbGFzcyBvZiB0eXBlIEV4Y2VwdGlvbi4KCSAqLwoJdmFyIEFyZ3VtZW50RXhjZXB0aW9uID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikgewoJICAgIF9fZXh0ZW5kcyhBcmd1bWVudEV4Y2VwdGlvbiwgX3N1cGVyKTsKCSAgICBmdW5jdGlvbiBBcmd1bWVudEV4Y2VwdGlvbigpIHsKCSAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzOwoJICAgIH0KCSAgICBBcmd1bWVudEV4Y2VwdGlvbi5raW5kID0gJ0FyZ3VtZW50RXhjZXB0aW9uJzsKCSAgICByZXR1cm4gQXJndW1lbnRFeGNlcHRpb247Cgl9KEV4Y2VwdGlvbl8xLmRlZmF1bHQpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IEFyZ3VtZW50RXhjZXB0aW9uOwoKCX0pOwoKCXZhciBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCXZhciBfX2V4dGVuZHMgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkgewoJICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fAoJICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fAoJICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07CgkgICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgIH07CgkgICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfQoJICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7CgkgICAgfTsKCX0pKCk7CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoKCS8qKgoJICogQ3VzdG9tIEVycm9yIGNsYXNzIG9mIHR5cGUgRXhjZXB0aW9uLgoJICovCgl2YXIgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikgewoJICAgIF9fZXh0ZW5kcyhJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24sIF9zdXBlcik7CgkgICAgZnVuY3Rpb24gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCkgewoJICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7CgkgICAgfQoJICAgIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbi5raW5kID0gJ0lsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbic7CgkgICAgcmV0dXJuIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbjsKCX0oRXhjZXB0aW9uXzEuZGVmYXVsdCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uOwoKCX0pOwoKCXZhciBCaW5hcnlCaXRtYXBfMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCS8qCgkgKiBDb3B5cmlnaHQgMjAwOSBaWGluZyBhdXRob3JzCgkgKgoJICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSAqCgkgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJICoKCSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJICovCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoKCXZhciBCaW5hcnlCaXRtYXAgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgZnVuY3Rpb24gQmluYXJ5Qml0bWFwKGJpbmFyaXplcikgewoJICAgICAgICB0aGlzLmJpbmFyaXplciA9IGJpbmFyaXplcjsKCSAgICAgICAgaWYgKGJpbmFyaXplciA9PT0gbnVsbCkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoJ0JpbmFyaXplciBtdXN0IGJlIG5vbi1udWxsLicpOwoJICAgICAgICB9CgkgICAgfQoJICAgIC8qKgoJICAgICAqIEByZXR1cm4gVGhlIHdpZHRoIG9mIHRoZSBiaXRtYXAuCgkgICAgICovCgkgICAgQmluYXJ5Qml0bWFwLnByb3RvdHlwZS5nZXRXaWR0aCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuYmluYXJpemVyLmdldFdpZHRoKCk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcmV0dXJuIFRoZSBoZWlnaHQgb2YgdGhlIGJpdG1hcC4KCSAgICAgKi8KCSAgICBCaW5hcnlCaXRtYXAucHJvdG90eXBlLmdldEhlaWdodCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuYmluYXJpemVyLmdldEhlaWdodCgpOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQ29udmVydHMgb25lIHJvdyBvZiBsdW1pbmFuY2UgZGF0YSB0byAxIGJpdCBkYXRhLiBNYXkgYWN0dWFsbHkgZG8gdGhlIGNvbnZlcnNpb24sIG9yIHJldHVybgoJICAgICAqIGNhY2hlZCBkYXRhLiBDYWxsZXJzIHNob3VsZCBhc3N1bWUgdGhpcyBtZXRob2QgaXMgZXhwZW5zaXZlIGFuZCBjYWxsIGl0IGFzIHNlbGRvbSBhcyBwb3NzaWJsZS4KCSAgICAgKiBUaGlzIG1ldGhvZCBpcyBpbnRlbmRlZCBmb3IgZGVjb2RpbmcgMUQgYmFyY29kZXMgYW5kIG1heSBjaG9vc2UgdG8gYXBwbHkgc2hhcnBlbmluZy4KCSAgICAgKgoJICAgICAqIEBwYXJhbSB5IFRoZSByb3cgdG8gZmV0Y2gsIHdoaWNoIG11c3QgYmUgaW4gWzAsIGJpdG1hcCBoZWlnaHQpCgkgICAgICogQHBhcmFtIHJvdyBBbiBvcHRpb25hbCBwcmVhbGxvY2F0ZWQgYXJyYXkuIElmIG51bGwgb3IgdG9vIHNtYWxsLCBpdCB3aWxsIGJlIGlnbm9yZWQuCgkgICAgICogICAgICAgICAgICBJZiB1c2VkLCB0aGUgQmluYXJpemVyIHdpbGwgY2FsbCBCaXRBcnJheS5jbGVhcigpLiBBbHdheXMgdXNlIHRoZSByZXR1cm5lZCBvYmplY3QuCgkgICAgICogQHJldHVybiBUaGUgYXJyYXkgb2YgYml0cyBmb3IgdGhpcyByb3cgKHRydWUgbWVhbnMgYmxhY2spLgoJICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb24gaWYgcm93IGNhbid0IGJlIGJpbmFyaXplZAoJICAgICAqLwoJICAgIEJpbmFyeUJpdG1hcC5wcm90b3R5cGUuZ2V0QmxhY2tSb3cgPSBmdW5jdGlvbiAoeSAvKmludCovLCByb3cpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuYmluYXJpemVyLmdldEJsYWNrUm93KHksIHJvdyk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBDb252ZXJ0cyBhIDJEIGFycmF5IG9mIGx1bWluYW5jZSBkYXRhIHRvIDEgYml0LiBBcyBhYm92ZSwgYXNzdW1lIHRoaXMgbWV0aG9kIGlzIGV4cGVuc2l2ZQoJICAgICAqIGFuZCBkbyBub3QgY2FsbCBpdCByZXBlYXRlZGx5LiBUaGlzIG1ldGhvZCBpcyBpbnRlbmRlZCBmb3IgZGVjb2RpbmcgMkQgYmFyY29kZXMgYW5kIG1heSBvcgoJICAgICAqIG1heSBub3QgYXBwbHkgc2hhcnBlbmluZy4gVGhlcmVmb3JlLCBhIHJvdyBmcm9tIHRoaXMgbWF0cml4IG1heSBub3QgYmUgaWRlbnRpY2FsIHRvIG9uZQoJICAgICAqIGZldGNoZWQgdXNpbmcgZ2V0QmxhY2tSb3coKSwgc28gZG9uJ3QgbWl4IGFuZCBtYXRjaCBiZXR3ZWVuIHRoZW0uCgkgICAgICoKCSAgICAgKiBAcmV0dXJuIFRoZSAyRCBhcnJheSBvZiBiaXRzIGZvciB0aGUgaW1hZ2UgKHRydWUgbWVhbnMgYmxhY2spLgoJICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb24gaWYgaW1hZ2UgY2FuJ3QgYmUgYmluYXJpemVkIHRvIG1ha2UgYSBtYXRyaXgKCSAgICAgKi8KCSAgICBCaW5hcnlCaXRtYXAucHJvdG90eXBlLmdldEJsYWNrTWF0cml4ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICAvLyBUaGUgbWF0cml4IGlzIGNyZWF0ZWQgb24gZGVtYW5kIHRoZSBmaXJzdCB0aW1lIGl0IGlzIHJlcXVlc3RlZCwgdGhlbiBjYWNoZWQuIFRoZXJlIGFyZSB0d28KCSAgICAgICAgLy8gcmVhc29ucyBmb3IgdGhpczoKCSAgICAgICAgLy8gMS4gVGhpcyB3b3JrIHdpbGwgbmV2ZXIgYmUgZG9uZSBpZiB0aGUgY2FsbGVyIG9ubHkgaW5zdGFsbHMgMUQgUmVhZGVyIG9iamVjdHMsIG9yIGlmIGEKCSAgICAgICAgLy8gICAgMUQgUmVhZGVyIGZpbmRzIGEgYmFyY29kZSBiZWZvcmUgdGhlIDJEIFJlYWRlcnMgcnVuLgoJICAgICAgICAvLyAyLiBUaGlzIHdvcmsgd2lsbCBvbmx5IGJlIGRvbmUgb25jZSBldmVuIGlmIHRoZSBjYWxsZXIgaW5zdGFsbHMgbXVsdGlwbGUgMkQgUmVhZGVycy4KCSAgICAgICAgaWYgKHRoaXMubWF0cml4ID09PSBudWxsIHx8IHRoaXMubWF0cml4ID09PSB1bmRlZmluZWQpIHsKCSAgICAgICAgICAgIHRoaXMubWF0cml4ID0gdGhpcy5iaW5hcml6ZXIuZ2V0QmxhY2tNYXRyaXgoKTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gdGhpcy5tYXRyaXg7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcmV0dXJuIFdoZXRoZXIgdGhpcyBiaXRtYXAgY2FuIGJlIGNyb3BwZWQuCgkgICAgICovCgkgICAgQmluYXJ5Qml0bWFwLnByb3RvdHlwZS5pc0Nyb3BTdXBwb3J0ZWQgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmJpbmFyaXplci5nZXRMdW1pbmFuY2VTb3VyY2UoKS5pc0Nyb3BTdXBwb3J0ZWQoKTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIFJldHVybnMgYSBuZXcgb2JqZWN0IHdpdGggY3JvcHBlZCBpbWFnZSBkYXRhLiBJbXBsZW1lbnRhdGlvbnMgbWF5IGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlCgkgICAgICogb3JpZ2luYWwgZGF0YSByYXRoZXIgdGhhbiBhIGNvcHkuIE9ubHkgY2FsbGFibGUgaWYgaXNDcm9wU3VwcG9ydGVkKCkgaXMgdHJ1ZS4KCSAgICAgKgoJICAgICAqIEBwYXJhbSBsZWZ0IFRoZSBsZWZ0IGNvb3JkaW5hdGUsIHdoaWNoIG11c3QgYmUgaW4gWzAsZ2V0V2lkdGgoKSkKCSAgICAgKiBAcGFyYW0gdG9wIFRoZSB0b3AgY29vcmRpbmF0ZSwgd2hpY2ggbXVzdCBiZSBpbiBbMCxnZXRIZWlnaHQoKSkKCSAgICAgKiBAcGFyYW0gd2lkdGggVGhlIHdpZHRoIG9mIHRoZSByZWN0YW5nbGUgdG8gY3JvcC4KCSAgICAgKiBAcGFyYW0gaGVpZ2h0IFRoZSBoZWlnaHQgb2YgdGhlIHJlY3RhbmdsZSB0byBjcm9wLgoJICAgICAqIEByZXR1cm4gQSBjcm9wcGVkIHZlcnNpb24gb2YgdGhpcyBvYmplY3QuCgkgICAgICovCgkgICAgQmluYXJ5Qml0bWFwLnByb3RvdHlwZS5jcm9wID0gZnVuY3Rpb24gKGxlZnQgLyppbnQqLywgdG9wIC8qaW50Ki8sIHdpZHRoIC8qaW50Ki8sIGhlaWdodCAvKmludCovKSB7CgkgICAgICAgIHZhciBuZXdTb3VyY2UgPSB0aGlzLmJpbmFyaXplci5nZXRMdW1pbmFuY2VTb3VyY2UoKS5jcm9wKGxlZnQsIHRvcCwgd2lkdGgsIGhlaWdodCk7CgkgICAgICAgIHJldHVybiBuZXcgQmluYXJ5Qml0bWFwKHRoaXMuYmluYXJpemVyLmNyZWF0ZUJpbmFyaXplcihuZXdTb3VyY2UpKTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEByZXR1cm4gV2hldGhlciB0aGlzIGJpdG1hcCBzdXBwb3J0cyBjb3VudGVyLWNsb2Nrd2lzZSByb3RhdGlvbi4KCSAgICAgKi8KCSAgICBCaW5hcnlCaXRtYXAucHJvdG90eXBlLmlzUm90YXRlU3VwcG9ydGVkID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5iaW5hcml6ZXIuZ2V0THVtaW5hbmNlU291cmNlKCkuaXNSb3RhdGVTdXBwb3J0ZWQoKTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIFJldHVybnMgYSBuZXcgb2JqZWN0IHdpdGggcm90YXRlZCBpbWFnZSBkYXRhIGJ5IDkwIGRlZ3JlZXMgY291bnRlcmNsb2Nrd2lzZS4KCSAgICAgKiBPbmx5IGNhbGxhYmxlIGlmIHtAbGluayAjaXNSb3RhdGVTdXBwb3J0ZWQoKX0gaXMgdHJ1ZS4KCSAgICAgKgoJICAgICAqIEByZXR1cm4gQSByb3RhdGVkIHZlcnNpb24gb2YgdGhpcyBvYmplY3QuCgkgICAgICovCgkgICAgQmluYXJ5Qml0bWFwLnByb3RvdHlwZS5yb3RhdGVDb3VudGVyQ2xvY2t3aXNlID0gZnVuY3Rpb24gKCkgewoJICAgICAgICB2YXIgbmV3U291cmNlID0gdGhpcy5iaW5hcml6ZXIuZ2V0THVtaW5hbmNlU291cmNlKCkucm90YXRlQ291bnRlckNsb2Nrd2lzZSgpOwoJICAgICAgICByZXR1cm4gbmV3IEJpbmFyeUJpdG1hcCh0aGlzLmJpbmFyaXplci5jcmVhdGVCaW5hcml6ZXIobmV3U291cmNlKSk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCB3aXRoIHJvdGF0ZWQgaW1hZ2UgZGF0YSBieSA0NSBkZWdyZWVzIGNvdW50ZXJjbG9ja3dpc2UuCgkgICAgICogT25seSBjYWxsYWJsZSBpZiB7QGxpbmsgI2lzUm90YXRlU3VwcG9ydGVkKCl9IGlzIHRydWUuCgkgICAgICoKCSAgICAgKiBAcmV0dXJuIEEgcm90YXRlZCB2ZXJzaW9uIG9mIHRoaXMgb2JqZWN0LgoJICAgICAqLwoJICAgIEJpbmFyeUJpdG1hcC5wcm90b3R5cGUucm90YXRlQ291bnRlckNsb2Nrd2lzZTQ1ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICB2YXIgbmV3U291cmNlID0gdGhpcy5iaW5hcml6ZXIuZ2V0THVtaW5hbmNlU291cmNlKCkucm90YXRlQ291bnRlckNsb2Nrd2lzZTQ1KCk7CgkgICAgICAgIHJldHVybiBuZXcgQmluYXJ5Qml0bWFwKHRoaXMuYmluYXJpemVyLmNyZWF0ZUJpbmFyaXplcihuZXdTb3VyY2UpKTsKCSAgICB9OwoJICAgIC8qQE92ZXJyaWRlKi8KCSAgICBCaW5hcnlCaXRtYXAucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkgewoJICAgICAgICB0cnkgewoJICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QmxhY2tNYXRyaXgoKS50b1N0cmluZygpOwoJICAgICAgICB9CgkgICAgICAgIGNhdGNoIChlIC8qOiBOb3RGb3VuZEV4Y2VwdGlvbiovKSB7CgkgICAgICAgICAgICByZXR1cm4gJyc7CgkgICAgICAgIH0KCSAgICB9OwoJICAgIHJldHVybiBCaW5hcnlCaXRtYXA7Cgl9KCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gQmluYXJ5Qml0bWFwOwoKCX0pOwoKCXZhciBDaGVja3N1bUV4Y2VwdGlvbl8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJdmFyIF9fZXh0ZW5kcyA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7CgkgICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8CgkgICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8CgkgICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTsKCSAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgfTsKCSAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9CgkgICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTsKCSAgICB9OwoJfSkoKTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgoJLyoqCgkgKiBDdXN0b20gRXJyb3IgY2xhc3Mgb2YgdHlwZSBFeGNlcHRpb24uCgkgKi8KCXZhciBDaGVja3N1bUV4Y2VwdGlvbiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHsKCSAgICBfX2V4dGVuZHMoQ2hlY2tzdW1FeGNlcHRpb24sIF9zdXBlcik7CgkgICAgZnVuY3Rpb24gQ2hlY2tzdW1FeGNlcHRpb24oKSB7CgkgICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpczsKCSAgICB9CgkgICAgQ2hlY2tzdW1FeGNlcHRpb24uZ2V0Q2hlY2tzdW1JbnN0YW5jZSA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIG5ldyBDaGVja3N1bUV4Y2VwdGlvbigpOwoJICAgIH07CgkgICAgQ2hlY2tzdW1FeGNlcHRpb24ua2luZCA9ICdDaGVja3N1bUV4Y2VwdGlvbic7CgkgICAgcmV0dXJuIENoZWNrc3VtRXhjZXB0aW9uOwoJfShFeGNlcHRpb25fMS5kZWZhdWx0KSk7CglleHBvcnRzLmRlZmF1bHQgPSBDaGVja3N1bUV4Y2VwdGlvbjsKCgl9KTsKCgl2YXIgQmluYXJpemVyXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CgkvKgoJICogQ29weXJpZ2h0IDIwMDkgWlhpbmcgYXV0aG9ycwoJICoKCSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkgKgoJICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSAqCgkgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSAqLwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCS8qKgoJICogVGhpcyBjbGFzcyBoaWVyYXJjaHkgcHJvdmlkZXMgYSBzZXQgb2YgbWV0aG9kcyB0byBjb252ZXJ0IGx1bWluYW5jZSBkYXRhIHRvIDEgYml0IGRhdGEuCgkgKiBJdCBhbGxvd3MgdGhlIGFsZ29yaXRobSB0byB2YXJ5IHBvbHltb3JwaGljYWxseSwgZm9yIGV4YW1wbGUgYWxsb3dpbmcgYSB2ZXJ5IGV4cGVuc2l2ZQoJICogdGhyZXNob2xkaW5nIHRlY2huaXF1ZSBmb3Igc2VydmVycyBhbmQgYSBmYXN0IG9uZSBmb3IgbW9iaWxlLiBJdCBhbHNvIHBlcm1pdHMgdGhlIGltcGxlbWVudGF0aW9uCgkgKiB0byB2YXJ5LCBlLmcuIGEgSk5JIHZlcnNpb24gZm9yIEFuZHJvaWQgYW5kIGEgSmF2YSBmYWxsYmFjayB2ZXJzaW9uIGZvciBvdGhlciBwbGF0Zm9ybXMuCgkgKgoJICogQGF1dGhvciBkc3dpdGtpbkBnb29nbGUuY29tIChEYW5pZWwgU3dpdGtpbikKCSAqLwoJdmFyIEJpbmFyaXplciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBCaW5hcml6ZXIoc291cmNlKSB7CgkgICAgICAgIHRoaXMuc291cmNlID0gc291cmNlOwoJICAgIH0KCSAgICBCaW5hcml6ZXIucHJvdG90eXBlLmdldEx1bWluYW5jZVNvdXJjZSA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuc291cmNlOwoJICAgIH07CgkgICAgQmluYXJpemVyLnByb3RvdHlwZS5nZXRXaWR0aCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuc291cmNlLmdldFdpZHRoKCk7CgkgICAgfTsKCSAgICBCaW5hcml6ZXIucHJvdG90eXBlLmdldEhlaWdodCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuc291cmNlLmdldEhlaWdodCgpOwoJICAgIH07CgkgICAgcmV0dXJuIEJpbmFyaXplcjsKCX0oKSk7CglleHBvcnRzLmRlZmF1bHQgPSBCaW5hcml6ZXI7CgoJfSk7CgoJdmFyIFN5c3RlbV8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCXZhciBTeXN0ZW0gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgZnVuY3Rpb24gU3lzdGVtKCkgewoJICAgIH0KCSAgICAvLyBwdWJsaWMgc3RhdGljIHZvaWQgYXJyYXljb3B5KE9iamVjdCBzcmMsIGludCBzcmNQb3MsIE9iamVjdCBkZXN0LCBpbnQgZGVzdFBvcywgaW50IGxlbmd0aCkKCSAgICAvKioKCSAgICAgKiBNYWtlcyBhIGNvcHkgb2YgYSBhcnJheS4KCSAgICAgKi8KCSAgICBTeXN0ZW0uYXJyYXljb3B5ID0gZnVuY3Rpb24gKHNyYywgc3JjUG9zLCBkZXN0LCBkZXN0UG9zLCBsZW5ndGgpIHsKCSAgICAgICAgLy8gVE9ETzogYmV0dGVyIHVzZSBzcGxpdCBvciBzZXQ/CgkgICAgICAgIHdoaWxlIChsZW5ndGgtLSkgewoJICAgICAgICAgICAgZGVzdFtkZXN0UG9zKytdID0gc3JjW3NyY1BvcysrXTsKCSAgICAgICAgfQoJICAgIH07CgkgICAgLyoqCgkgICAgICogUmV0dXJucyB0aGUgY3VycmVudCB0aW1lIGluIG1pbGxpc2Vjb25kcy4KCSAgICAgKi8KCSAgICBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiBEYXRlLm5vdygpOwoJICAgIH07CgkgICAgcmV0dXJuIFN5c3RlbTsKCX0oKSk7CglleHBvcnRzLmRlZmF1bHQgPSBTeXN0ZW07CgoJfSk7CgoJdmFyIEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb25fMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCXZhciBfX2V4dGVuZHMgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkgewoJICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fAoJICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fAoJICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07CgkgICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgIH07CgkgICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfQoJICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7CgkgICAgfTsKCX0pKCk7CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoKCS8qKgoJICogQ3VzdG9tIEVycm9yIGNsYXNzIG9mIHR5cGUgRXhjZXB0aW9uLgoJICovCgl2YXIgSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHsKCSAgICBfX2V4dGVuZHMoSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiwgX3N1cGVyKTsKCSAgICBmdW5jdGlvbiBJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uKCkgewoJICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7CgkgICAgfQoJICAgIEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24ua2luZCA9ICdJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uJzsKCSAgICByZXR1cm4gSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbjsKCX0oRXhjZXB0aW9uXzEuZGVmYXVsdCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbjsKCgl9KTsKCgl2YXIgQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7Cgl2YXIgX19leHRlbmRzID0gKGNvbW1vbmpzR2xvYmFsICYmIGNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHsKCSAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwKCSAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHwKCSAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9OwoJICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICB9OwoJICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH0KCSAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpOwoJICAgIH07Cgl9KSgpOwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCgkvKioKCSAqIEN1c3RvbSBFcnJvciBjbGFzcyBvZiB0eXBlIEV4Y2VwdGlvbi4KCSAqLwoJdmFyIEFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHsKCSAgICBfX2V4dGVuZHMoQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uLCBfc3VwZXIpOwoJICAgIGZ1bmN0aW9uIEFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbihpbmRleCwgbWVzc2FnZSkgewoJICAgICAgICBpZiAoaW5kZXggPT09IHZvaWQgMCkgeyBpbmRleCA9IHVuZGVmaW5lZDsgfQoJICAgICAgICBpZiAobWVzc2FnZSA9PT0gdm9pZCAwKSB7IG1lc3NhZ2UgPSB1bmRlZmluZWQ7IH0KCSAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgbWVzc2FnZSkgfHwgdGhpczsKCSAgICAgICAgX3RoaXMuaW5kZXggPSBpbmRleDsKCSAgICAgICAgX3RoaXMubWVzc2FnZSA9IG1lc3NhZ2U7CgkgICAgICAgIHJldHVybiBfdGhpczsKCSAgICB9CgkgICAgQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uLmtpbmQgPSAnQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uJzsKCSAgICByZXR1cm4gQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uOwoJfShJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uXzEuZGVmYXVsdCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uOwoKCX0pOwoKCXZhciBBcnJheXNfMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCXZhciBfX3ZhbHVlcyA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX3ZhbHVlcykgfHwgZnVuY3Rpb24obykgewoJICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gImZ1bmN0aW9uIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwOwoJICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pOwoJICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gIm51bWJlciIpIHJldHVybiB7CgkgICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7CgkgICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07CgkgICAgICAgIH0KCSAgICB9OwoJICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/ICJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLiIgOiAiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpOwoJfTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgoKCgl2YXIgQXJyYXlzID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIGZ1bmN0aW9uIEFycmF5cygpIHsKCSAgICB9CgkgICAgLyoqCgkgICAgICogQXNzaWducyB0aGUgc3BlY2lmaWVkIGludCB2YWx1ZSB0byBlYWNoIGVsZW1lbnQgb2YgdGhlIHNwZWNpZmllZCBhcnJheQoJICAgICAqIG9mIGludHMuCgkgICAgICoKCSAgICAgKiBAcGFyYW0gYSB0aGUgYXJyYXkgdG8gYmUgZmlsbGVkCgkgICAgICogQHBhcmFtIHZhbCB0aGUgdmFsdWUgdG8gYmUgc3RvcmVkIGluIGFsbCBlbGVtZW50cyBvZiB0aGUgYXJyYXkKCSAgICAgKi8KCSAgICBBcnJheXMuZmlsbCA9IGZ1bmN0aW9uIChhLCB2YWwpIHsKCSAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGEubGVuZ3RoOyBpIDwgbGVuOyBpKyspCgkgICAgICAgICAgICBhW2ldID0gdmFsOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQXNzaWducyB0aGUgc3BlY2lmaWVkIGludCB2YWx1ZSB0byBlYWNoIGVsZW1lbnQgb2YgdGhlIHNwZWNpZmllZAoJICAgICAqIHJhbmdlIG9mIHRoZSBzcGVjaWZpZWQgYXJyYXkgb2YgaW50cy4gIFRoZSByYW5nZSB0byBiZSBmaWxsZWQKCSAgICAgKiBleHRlbmRzIGZyb20gaW5kZXgge0Bjb2RlIGZyb21JbmRleH0sIGluY2x1c2l2ZSwgdG8gaW5kZXgKCSAgICAgKiB7QGNvZGUgdG9JbmRleH0sIGV4Y2x1c2l2ZS4gIChJZiB7QGNvZGUgZnJvbUluZGV4PT10b0luZGV4fSwgdGhlCgkgICAgICogcmFuZ2UgdG8gYmUgZmlsbGVkIGlzIGVtcHR5LikKCSAgICAgKgoJICAgICAqIEBwYXJhbSBhIHRoZSBhcnJheSB0byBiZSBmaWxsZWQKCSAgICAgKiBAcGFyYW0gZnJvbUluZGV4IHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZWxlbWVudCAoaW5jbHVzaXZlKSB0byBiZQoJICAgICAqICAgICAgICBmaWxsZWQgd2l0aCB0aGUgc3BlY2lmaWVkIHZhbHVlCgkgICAgICogQHBhcmFtIHRvSW5kZXggdGhlIGluZGV4IG9mIHRoZSBsYXN0IGVsZW1lbnQgKGV4Y2x1c2l2ZSkgdG8gYmUKCSAgICAgKiAgICAgICAgZmlsbGVkIHdpdGggdGhlIHNwZWNpZmllZCB2YWx1ZQoJICAgICAqIEBwYXJhbSB2YWwgdGhlIHZhbHVlIHRvIGJlIHN0b3JlZCBpbiBhbGwgZWxlbWVudHMgb2YgdGhlIGFycmF5CgkgICAgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYge0Bjb2RlIGZyb21JbmRleCA+IHRvSW5kZXh9CgkgICAgICogQHRocm93cyBBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gaWYge0Bjb2RlIGZyb21JbmRleCA8IDB9IG9yCgkgICAgICogICAgICAgICB7QGNvZGUgdG9JbmRleCA+IGEubGVuZ3RofQoJICAgICAqLwoJICAgIEFycmF5cy5maWxsV2l0aGluID0gZnVuY3Rpb24gKGEsIGZyb21JbmRleCwgdG9JbmRleCwgdmFsKSB7CgkgICAgICAgIEFycmF5cy5yYW5nZUNoZWNrKGEubGVuZ3RoLCBmcm9tSW5kZXgsIHRvSW5kZXgpOwoJICAgICAgICBmb3IgKHZhciBpID0gZnJvbUluZGV4OyBpIDwgdG9JbmRleDsgaSsrKQoJICAgICAgICAgICAgYVtpXSA9IHZhbDsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIENoZWNrcyB0aGF0IHtAY29kZSBmcm9tSW5kZXh9IGFuZCB7QGNvZGUgdG9JbmRleH0gYXJlIGluCgkgICAgICogdGhlIHJhbmdlIGFuZCB0aHJvd3MgYW4gZXhjZXB0aW9uIGlmIHRoZXkgYXJlbid0LgoJICAgICAqLwoJICAgIEFycmF5cy5yYW5nZUNoZWNrID0gZnVuY3Rpb24gKGFycmF5TGVuZ3RoLCBmcm9tSW5kZXgsIHRvSW5kZXgpIHsKCSAgICAgICAgaWYgKGZyb21JbmRleCA+IHRvSW5kZXgpIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCdmcm9tSW5kZXgoJyArIGZyb21JbmRleCArICcpID4gdG9JbmRleCgnICsgdG9JbmRleCArICcpJyk7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKGZyb21JbmRleCA8IDApIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb25fMS5kZWZhdWx0KGZyb21JbmRleCk7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKHRvSW5kZXggPiBhcnJheUxlbmd0aCkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IEFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbl8xLmRlZmF1bHQodG9JbmRleCk7CgkgICAgICAgIH0KCSAgICB9OwoJICAgIEFycmF5cy5hc0xpc3QgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHZhciBhcmdzID0gW107CgkgICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7CgkgICAgICAgICAgICBhcmdzW19pXSA9IGFyZ3VtZW50c1tfaV07CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIGFyZ3M7CgkgICAgfTsKCSAgICBBcnJheXMuY3JlYXRlID0gZnVuY3Rpb24gKHJvd3MsIGNvbHMsIHZhbHVlKSB7CgkgICAgICAgIHZhciBhcnIgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiByb3dzIH0pOwoJICAgICAgICByZXR1cm4gYXJyLm1hcChmdW5jdGlvbiAoeCkgeyByZXR1cm4gQXJyYXkuZnJvbSh7IGxlbmd0aDogY29scyB9KS5maWxsKHZhbHVlKTsgfSk7CgkgICAgfTsKCSAgICBBcnJheXMuY3JlYXRlSW50MzJBcnJheSA9IGZ1bmN0aW9uIChyb3dzLCBjb2xzLCB2YWx1ZSkgewoJICAgICAgICB2YXIgYXJyID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogcm93cyB9KTsKCSAgICAgICAgcmV0dXJuIGFyci5tYXAoZnVuY3Rpb24gKHgpIHsgcmV0dXJuIEludDMyQXJyYXkuZnJvbSh7IGxlbmd0aDogY29scyB9KS5maWxsKHZhbHVlKTsgfSk7CgkgICAgfTsKCSAgICBBcnJheXMuZXF1YWxzID0gZnVuY3Rpb24gKGZpcnN0LCBzZWNvbmQpIHsKCSAgICAgICAgaWYgKCFmaXJzdCkgewoJICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoJICAgICAgICB9CgkgICAgICAgIGlmICghc2Vjb25kKSB7CgkgICAgICAgICAgICByZXR1cm4gZmFsc2U7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKCFmaXJzdC5sZW5ndGgpIHsKCSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKCSAgICAgICAgfQoJICAgICAgICBpZiAoIXNlY29uZC5sZW5ndGgpIHsKCSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKCSAgICAgICAgfQoJICAgICAgICBpZiAoZmlyc3QubGVuZ3RoICE9PSBzZWNvbmQubGVuZ3RoKSB7CgkgICAgICAgICAgICByZXR1cm4gZmFsc2U7CgkgICAgICAgIH0KCSAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aF8xID0gZmlyc3QubGVuZ3RoOyBpIDwgbGVuZ3RoXzE7IGkrKykgewoJICAgICAgICAgICAgaWYgKGZpcnN0W2ldICE9PSBzZWNvbmRbaV0pIHsKCSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHRydWU7CgkgICAgfTsKCSAgICBBcnJheXMuaGFzaENvZGUgPSBmdW5jdGlvbiAoYSkgewoJICAgICAgICB2YXIgZV8xLCBfYTsKCSAgICAgICAgaWYgKGEgPT09IG51bGwpIHsKCSAgICAgICAgICAgIHJldHVybiAwOwoJICAgICAgICB9CgkgICAgICAgIHZhciByZXN1bHQgPSAxOwoJICAgICAgICB0cnkgewoJICAgICAgICAgICAgZm9yICh2YXIgYV8xID0gX192YWx1ZXMoYSksIGFfMV8xID0gYV8xLm5leHQoKTsgIWFfMV8xLmRvbmU7IGFfMV8xID0gYV8xLm5leHQoKSkgewoJICAgICAgICAgICAgICAgIHZhciBlbGVtZW50ID0gYV8xXzEudmFsdWU7CgkgICAgICAgICAgICAgICAgcmVzdWx0ID0gMzEgKiByZXN1bHQgKyBlbGVtZW50OwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9CgkgICAgICAgIGZpbmFsbHkgewoJICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICBpZiAoYV8xXzEgJiYgIWFfMV8xLmRvbmUgJiYgKF9hID0gYV8xLnJldHVybikpIF9hLmNhbGwoYV8xKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH0KCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gcmVzdWx0OwoJICAgIH07CgkgICAgQXJyYXlzLmZpbGxVaW50OEFycmF5ID0gZnVuY3Rpb24gKGEsIHZhbHVlKSB7CgkgICAgICAgIGZvciAodmFyIGkgPSAwOyBpICE9PSBhLmxlbmd0aDsgaSsrKSB7CgkgICAgICAgICAgICBhW2ldID0gdmFsdWU7CgkgICAgICAgIH0KCSAgICB9OwoJICAgIEFycmF5cy5jb3B5T2YgPSBmdW5jdGlvbiAob3JpZ2luYWwsIG5ld0xlbmd0aCkgewoJICAgICAgICByZXR1cm4gb3JpZ2luYWwuc2xpY2UoMCwgbmV3TGVuZ3RoKTsKCSAgICB9OwoJICAgIEFycmF5cy5jb3B5T2ZVaW50OEFycmF5ID0gZnVuY3Rpb24gKG9yaWdpbmFsLCBuZXdMZW5ndGgpIHsKCSAgICAgICAgaWYgKG9yaWdpbmFsLmxlbmd0aCA8PSBuZXdMZW5ndGgpIHsKCSAgICAgICAgICAgIHZhciBuZXdBcnJheSA9IG5ldyBVaW50OEFycmF5KG5ld0xlbmd0aCk7CgkgICAgICAgICAgICBuZXdBcnJheS5zZXQob3JpZ2luYWwpOwoJICAgICAgICAgICAgcmV0dXJuIG5ld0FycmF5OwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBvcmlnaW5hbC5zbGljZSgwLCBuZXdMZW5ndGgpOwoJICAgIH07CgkgICAgQXJyYXlzLmNvcHlPZlJhbmdlID0gZnVuY3Rpb24gKG9yaWdpbmFsLCBmcm9tLCB0bykgewoJICAgICAgICB2YXIgbmV3TGVuZ3RoID0gdG8gLSBmcm9tOwoJICAgICAgICB2YXIgY29weSA9IG5ldyBJbnQzMkFycmF5KG5ld0xlbmd0aCk7CgkgICAgICAgIFN5c3RlbV8xLmRlZmF1bHQuYXJyYXljb3B5KG9yaWdpbmFsLCBmcm9tLCBjb3B5LCAwLCBuZXdMZW5ndGgpOwoJICAgICAgICByZXR1cm4gY29weTsKCSAgICB9OwoJICAgIC8qCgkgICAgKiBSZXR1cm5zIHRoZSBpbmRleCBvZiBvZiB0aGUgZWxlbWVudCBpbiBhIHNvcnRlZCBhcnJheSBvciAoLW4tMSkgd2hlcmUgbiBpcyB0aGUgaW5zZXJ0aW9uIHBvaW50CgkgICAgKiBmb3IgdGhlIG5ldyBlbGVtZW50LgoJICAgICogUGFyYW1ldGVyczoKCSAgICAqICAgICBhciAtIEEgc29ydGVkIGFycmF5CgkgICAgKiAgICAgZWwgLSBBbiBlbGVtZW50IHRvIHNlYXJjaCBmb3IKCSAgICAqICAgICBjb21wYXJhdG9yIC0gQSBjb21wYXJhdG9yIGZ1bmN0aW9uLiBUaGUgZnVuY3Rpb24gdGFrZXMgdHdvIGFyZ3VtZW50czogKGEsIGIpIGFuZCByZXR1cm5zOgoJICAgICogICAgICAgIGEgbmVnYXRpdmUgbnVtYmVyICBpZiBhIGlzIGxlc3MgdGhhbiBiOwoJICAgICogICAgICAgIDAgaWYgYSBpcyBlcXVhbCB0byBiOwoJICAgICogICAgICAgIGEgcG9zaXRpdmUgbnVtYmVyIG9mIGEgaXMgZ3JlYXRlciB0aGFuIGIuCgkgICAgKiBUaGUgYXJyYXkgbWF5IGNvbnRhaW4gZHVwbGljYXRlIGVsZW1lbnRzLiBJZiB0aGVyZSBhcmUgbW9yZSB0aGFuIG9uZSBlcXVhbCBlbGVtZW50cyBpbiB0aGUgYXJyYXksCgkgICAgKiB0aGUgcmV0dXJuZWQgdmFsdWUgY2FuIGJlIHRoZSBpbmRleCBvZiBhbnkgb25lIG9mIHRoZSBlcXVhbCBlbGVtZW50cy4KCSAgICAqCgkgICAgKiBodHRwOi8vanNmaWRkbGUubmV0L2FyeXpob3YvcGtmc3Q1NTAvCgkgICAgKi8KCSAgICBBcnJheXMuYmluYXJ5U2VhcmNoID0gZnVuY3Rpb24gKGFyLCBlbCwgY29tcGFyYXRvcikgewoJICAgICAgICBpZiAodW5kZWZpbmVkID09PSBjb21wYXJhdG9yKSB7CgkgICAgICAgICAgICBjb21wYXJhdG9yID0gQXJyYXlzLm51bWJlckNvbXBhcmF0b3I7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIG0gPSAwOwoJICAgICAgICB2YXIgbiA9IGFyLmxlbmd0aCAtIDE7CgkgICAgICAgIHdoaWxlIChtIDw9IG4pIHsKCSAgICAgICAgICAgIHZhciBrID0gKG4gKyBtKSA+PiAxOwoJICAgICAgICAgICAgdmFyIGNtcCA9IGNvbXBhcmF0b3IoZWwsIGFyW2tdKTsKCSAgICAgICAgICAgIGlmIChjbXAgPiAwKSB7CgkgICAgICAgICAgICAgICAgbSA9IGsgKyAxOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZWxzZSBpZiAoY21wIDwgMCkgewoJICAgICAgICAgICAgICAgIG4gPSBrIC0gMTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgIHJldHVybiBrOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHJldHVybiAtbSAtIDE7CgkgICAgfTsKCSAgICBBcnJheXMubnVtYmVyQ29tcGFyYXRvciA9IGZ1bmN0aW9uIChhLCBiKSB7CgkgICAgICAgIHJldHVybiBhIC0gYjsKCSAgICB9OwoJICAgIHJldHVybiBBcnJheXM7Cgl9KCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gQXJyYXlzOwoKCX0pOwoKCXZhciBJbnRlZ2VyXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJLyoqCgkgKiBQb255ZmlsbCBmb3IgSmF2YSdzIEludGVnZXIgY2xhc3MuCgkgKi8KCXZhciBJbnRlZ2VyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIGZ1bmN0aW9uIEludGVnZXIoKSB7CgkgICAgfQoJICAgIEludGVnZXIubnVtYmVyT2ZUcmFpbGluZ1plcm9zID0gZnVuY3Rpb24gKGkpIHsKCSAgICAgICAgdmFyIHk7CgkgICAgICAgIGlmIChpID09PSAwKQoJICAgICAgICAgICAgcmV0dXJuIDMyOwoJICAgICAgICB2YXIgbiA9IDMxOwoJICAgICAgICB5ID0gaSA8PCAxNjsKCSAgICAgICAgaWYgKHkgIT09IDApIHsKCSAgICAgICAgICAgIG4gLT0gMTY7CgkgICAgICAgICAgICBpID0geTsKCSAgICAgICAgfQoJICAgICAgICB5ID0gaSA8PCA4OwoJICAgICAgICBpZiAoeSAhPT0gMCkgewoJICAgICAgICAgICAgbiAtPSA4OwoJICAgICAgICAgICAgaSA9IHk7CgkgICAgICAgIH0KCSAgICAgICAgeSA9IGkgPDwgNDsKCSAgICAgICAgaWYgKHkgIT09IDApIHsKCSAgICAgICAgICAgIG4gLT0gNDsKCSAgICAgICAgICAgIGkgPSB5OwoJICAgICAgICB9CgkgICAgICAgIHkgPSBpIDw8IDI7CgkgICAgICAgIGlmICh5ICE9PSAwKSB7CgkgICAgICAgICAgICBuIC09IDI7CgkgICAgICAgICAgICBpID0geTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gbiAtICgoaSA8PCAxKSA+Pj4gMzEpOwoJICAgIH07CgkgICAgSW50ZWdlci5udW1iZXJPZkxlYWRpbmdaZXJvcyA9IGZ1bmN0aW9uIChpKSB7CgkgICAgICAgIC8vIEhELCBGaWd1cmUgNS02CgkgICAgICAgIGlmIChpID09PSAwKSB7CgkgICAgICAgICAgICByZXR1cm4gMzI7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIG4gPSAxOwoJICAgICAgICBpZiAoaSA+Pj4gMTYgPT09IDApIHsKCSAgICAgICAgICAgIG4gKz0gMTY7CgkgICAgICAgICAgICBpIDw8PSAxNjsKCSAgICAgICAgfQoJICAgICAgICBpZiAoaSA+Pj4gMjQgPT09IDApIHsKCSAgICAgICAgICAgIG4gKz0gODsKCSAgICAgICAgICAgIGkgPDw9IDg7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKGkgPj4+IDI4ID09PSAwKSB7CgkgICAgICAgICAgICBuICs9IDQ7CgkgICAgICAgICAgICBpIDw8PSA0OwoJICAgICAgICB9CgkgICAgICAgIGlmIChpID4+PiAzMCA9PT0gMCkgewoJICAgICAgICAgICAgbiArPSAyOwoJICAgICAgICAgICAgaSA8PD0gMjsKCSAgICAgICAgfQoJICAgICAgICBuIC09IGkgPj4+IDMxOwoJICAgICAgICByZXR1cm4gbjsKCSAgICB9OwoJICAgIEludGVnZXIudG9IZXhTdHJpbmcgPSBmdW5jdGlvbiAoaSkgewoJICAgICAgICByZXR1cm4gaS50b1N0cmluZygxNik7CgkgICAgfTsKCSAgICBJbnRlZ2VyLnRvQmluYXJ5U3RyaW5nID0gZnVuY3Rpb24gKGludE51bWJlcikgewoJICAgICAgICByZXR1cm4gU3RyaW5nKHBhcnNlSW50KFN0cmluZyhpbnROdW1iZXIpLCAyKSk7CgkgICAgfTsKCSAgICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2Ygb25lLWJpdHMgaW4gdGhlIHR3bydzIGNvbXBsZW1lbnQgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzcGVjaWZpZWQgaW50IHZhbHVlLiBUaGlzIGZ1bmN0aW9uIGlzIHNvbWV0aW1lcyByZWZlcnJlZCB0byBhcyB0aGUgcG9wdWxhdGlvbiBjb3VudC4KCSAgICAvLyBSZXR1cm5zOgoJICAgIC8vIHRoZSBudW1iZXIgb2Ygb25lLWJpdHMgaW4gdGhlIHR3bydzIGNvbXBsZW1lbnQgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzcGVjaWZpZWQgaW50IHZhbHVlLgoJICAgIEludGVnZXIuYml0Q291bnQgPSBmdW5jdGlvbiAoaSkgewoJICAgICAgICAvLyBIRCwgRmlndXJlIDUtMgoJICAgICAgICBpID0gaSAtICgoaSA+Pj4gMSkgJiAweDU1NTU1NTU1KTsKCSAgICAgICAgaSA9IChpICYgMHgzMzMzMzMzMykgKyAoKGkgPj4+IDIpICYgMHgzMzMzMzMzMyk7CgkgICAgICAgIGkgPSAoaSArIChpID4+PiA0KSkgJiAweDBmMGYwZjBmOwoJICAgICAgICBpID0gaSArIChpID4+PiA4KTsKCSAgICAgICAgaSA9IGkgKyAoaSA+Pj4gMTYpOwoJICAgICAgICByZXR1cm4gaSAmIDB4M2Y7CgkgICAgfTsKCSAgICBJbnRlZ2VyLnRydW5jRGl2aXNpb24gPSBmdW5jdGlvbiAoZGl2aWRlbmQsIGRpdmlzb3IpIHsKCSAgICAgICAgcmV0dXJuIE1hdGgudHJ1bmMoZGl2aWRlbmQgLyBkaXZpc29yKTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIENvbnZlcnRzIEEgc3RyaW5nIHRvIGFuIGludGVnZXIuCgkgICAgICogQHBhcmFtIHMgQSBzdHJpbmcgdG8gY29udmVydCBpbnRvIGEgbnVtYmVyLgoJICAgICAqIEBwYXJhbSByYWRpeCBBIHZhbHVlIGJldHdlZW4gMiBhbmQgMzYgdGhhdCBzcGVjaWZpZXMgdGhlIGJhc2Ugb2YgdGhlIG51bWJlciBpbiBudW1TdHJpbmcuIElmIHRoaXMgYXJndW1lbnQgaXMgbm90IHN1cHBsaWVkLCBzdHJpbmdzIHdpdGggYSBwcmVmaXggb2YgJzB4JyBhcmUgY29uc2lkZXJlZCBoZXhhZGVjaW1hbC4gQWxsIG90aGVyIHN0cmluZ3MgYXJlIGNvbnNpZGVyZWQgZGVjaW1hbC4KCSAgICAgKi8KCSAgICBJbnRlZ2VyLnBhcnNlSW50ID0gZnVuY3Rpb24gKG51bSwgcmFkaXgpIHsKCSAgICAgICAgaWYgKHJhZGl4ID09PSB2b2lkIDApIHsgcmFkaXggPSB1bmRlZmluZWQ7IH0KCSAgICAgICAgcmV0dXJuIHBhcnNlSW50KG51bSwgcmFkaXgpOwoJICAgIH07CgkgICAgSW50ZWdlci5NSU5fVkFMVUVfMzJfQklUUyA9IC0yMTQ3NDgzNjQ4OwoJICAgIEludGVnZXIuTUFYX1ZBTFVFID0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7CgkgICAgcmV0dXJuIEludGVnZXI7Cgl9KCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gSW50ZWdlcjsKCgl9KTsKCgl2YXIgQml0QXJyYXlfMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCS8qCgkgKiBDb3B5cmlnaHQgMjAwNyBaWGluZyBhdXRob3JzCgkgKgoJICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSAqCgkgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJICoKCSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJICovCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJLypuYW1lc3BhY2UgY29tLmdvb2dsZS56eGluZy5jb21tb24geyovCgkvKmltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOyovCgoKCgoJLyoqCgkgKiA8cD5BIHNpbXBsZSwgZmFzdCBhcnJheSBvZiBiaXRzLCByZXByZXNlbnRlZCBjb21wYWN0bHkgYnkgYW4gYXJyYXkgb2YgaW50cyBpbnRlcm5hbGx5LjwvcD4KCSAqCgkgKiBAYXV0aG9yIFNlYW4gT3dlbgoJICovCgl2YXIgQml0QXJyYXkgLyppbXBsZW1lbnRzIENsb25lYWJsZSovID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIC8vIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHsKCSAgICAvLyAgIHRoaXMuc2l6ZSA9IDAKCSAgICAvLyAgIHRoaXMuYml0cyA9IG5ldyBJbnQzMkFycmF5KDEpCgkgICAgLy8gfQoJICAgIC8vIHB1YmxpYyBjb25zdHJ1Y3RvcihzaXplPzogbnVtYmVyIC8qaW50Ki8pIHsKCSAgICAvLyAgIGlmICh1bmRlZmluZWQgPT09IHNpemUpIHsKCSAgICAvLyAgICAgdGhpcy5zaXplID0gMAoJICAgIC8vICAgfSBlbHNlIHsKCSAgICAvLyAgICAgdGhpcy5zaXplID0gc2l6ZQoJICAgIC8vICAgfQoJICAgIC8vICAgdGhpcy5iaXRzID0gdGhpcy5tYWtlQXJyYXkoc2l6ZSkKCSAgICAvLyB9CgkgICAgLy8gRm9yIHRlc3Rpbmcgb25seQoJICAgIGZ1bmN0aW9uIEJpdEFycmF5KHNpemUgLyppbnQqLywgYml0cykgewoJICAgICAgICBpZiAodW5kZWZpbmVkID09PSBzaXplKSB7CgkgICAgICAgICAgICB0aGlzLnNpemUgPSAwOwoJICAgICAgICAgICAgdGhpcy5iaXRzID0gbmV3IEludDMyQXJyYXkoMSk7CgkgICAgICAgIH0KCSAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICB0aGlzLnNpemUgPSBzaXplOwoJICAgICAgICAgICAgaWYgKHVuZGVmaW5lZCA9PT0gYml0cyB8fCBudWxsID09PSBiaXRzKSB7CgkgICAgICAgICAgICAgICAgdGhpcy5iaXRzID0gQml0QXJyYXkubWFrZUFycmF5KHNpemUpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgdGhpcy5iaXRzID0gYml0czsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgIH0KCSAgICBCaXRBcnJheS5wcm90b3R5cGUuZ2V0U2l6ZSA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuc2l6ZTsKCSAgICB9OwoJICAgIEJpdEFycmF5LnByb3RvdHlwZS5nZXRTaXplSW5CeXRlcyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoKHRoaXMuc2l6ZSArIDcpIC8gOCk7CgkgICAgfTsKCSAgICBCaXRBcnJheS5wcm90b3R5cGUuZW5zdXJlQ2FwYWNpdHkgPSBmdW5jdGlvbiAoc2l6ZSAvKmludCovKSB7CgkgICAgICAgIGlmIChzaXplID4gdGhpcy5iaXRzLmxlbmd0aCAqIDMyKSB7CgkgICAgICAgICAgICB2YXIgbmV3Qml0cyA9IEJpdEFycmF5Lm1ha2VBcnJheShzaXplKTsKCSAgICAgICAgICAgIFN5c3RlbV8xLmRlZmF1bHQuYXJyYXljb3B5KHRoaXMuYml0cywgMCwgbmV3Qml0cywgMCwgdGhpcy5iaXRzLmxlbmd0aCk7CgkgICAgICAgICAgICB0aGlzLmJpdHMgPSBuZXdCaXRzOwoJICAgICAgICB9CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcGFyYW0gaSBiaXQgdG8gZ2V0CgkgICAgICogQHJldHVybiB0cnVlIGlmZiBiaXQgaSBpcyBzZXQKCSAgICAgKi8KCSAgICBCaXRBcnJheS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKGkgLyppbnQqLykgewoJICAgICAgICByZXR1cm4gKHRoaXMuYml0c1tNYXRoLmZsb29yKGkgLyAzMildICYgKDEgPDwgKGkgJiAweDFGKSkpICE9PSAwOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogU2V0cyBiaXQgaS4KCSAgICAgKgoJICAgICAqIEBwYXJhbSBpIGJpdCB0byBzZXQKCSAgICAgKi8KCSAgICBCaXRBcnJheS5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKGkgLyppbnQqLykgewoJICAgICAgICB0aGlzLmJpdHNbTWF0aC5mbG9vcihpIC8gMzIpXSB8PSAxIDw8IChpICYgMHgxRik7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBGbGlwcyBiaXQgaS4KCSAgICAgKgoJICAgICAqIEBwYXJhbSBpIGJpdCB0byBzZXQKCSAgICAgKi8KCSAgICBCaXRBcnJheS5wcm90b3R5cGUuZmxpcCA9IGZ1bmN0aW9uIChpIC8qaW50Ki8pIHsKCSAgICAgICAgdGhpcy5iaXRzW01hdGguZmxvb3IoaSAvIDMyKV0gXj0gMSA8PCAoaSAmIDB4MUYpOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQHBhcmFtIGZyb20gZmlyc3QgYml0IHRvIGNoZWNrCgkgICAgICogQHJldHVybiBpbmRleCBvZiBmaXJzdCBiaXQgdGhhdCBpcyBzZXQsIHN0YXJ0aW5nIGZyb20gdGhlIGdpdmVuIGluZGV4LCBvciBzaXplIGlmIG5vbmUgYXJlIHNldAoJICAgICAqICBhdCBvciBiZXlvbmQgdGhpcyBnaXZlbiBpbmRleAoJICAgICAqIEBzZWUgI2dldE5leHRVbnNldChpbnQpCgkgICAgICovCgkgICAgQml0QXJyYXkucHJvdG90eXBlLmdldE5leHRTZXQgPSBmdW5jdGlvbiAoZnJvbSAvKmludCovKSB7CgkgICAgICAgIHZhciBzaXplID0gdGhpcy5zaXplOwoJICAgICAgICBpZiAoZnJvbSA+PSBzaXplKSB7CgkgICAgICAgICAgICByZXR1cm4gc2l6ZTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgYml0cyA9IHRoaXMuYml0czsKCSAgICAgICAgdmFyIGJpdHNPZmZzZXQgPSBNYXRoLmZsb29yKGZyb20gLyAzMik7CgkgICAgICAgIHZhciBjdXJyZW50Qml0cyA9IGJpdHNbYml0c09mZnNldF07CgkgICAgICAgIC8vIG1hc2sgb2ZmIGxlc3NlciBiaXRzIGZpcnN0CgkgICAgICAgIGN1cnJlbnRCaXRzICY9IH4oKDEgPDwgKGZyb20gJiAweDFGKSkgLSAxKTsKCSAgICAgICAgdmFyIGxlbmd0aCA9IGJpdHMubGVuZ3RoOwoJICAgICAgICB3aGlsZSAoY3VycmVudEJpdHMgPT09IDApIHsKCSAgICAgICAgICAgIGlmICgrK2JpdHNPZmZzZXQgPT09IGxlbmd0aCkgewoJICAgICAgICAgICAgICAgIHJldHVybiBzaXplOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgY3VycmVudEJpdHMgPSBiaXRzW2JpdHNPZmZzZXRdOwoJICAgICAgICB9CgkgICAgICAgIHZhciByZXN1bHQgPSAoYml0c09mZnNldCAqIDMyKSArIEludGVnZXJfMS5kZWZhdWx0Lm51bWJlck9mVHJhaWxpbmdaZXJvcyhjdXJyZW50Qml0cyk7CgkgICAgICAgIHJldHVybiByZXN1bHQgPiBzaXplID8gc2l6ZSA6IHJlc3VsdDsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEBwYXJhbSBmcm9tIGluZGV4IHRvIHN0YXJ0IGxvb2tpbmcgZm9yIHVuc2V0IGJpdAoJICAgICAqIEByZXR1cm4gaW5kZXggb2YgbmV4dCB1bnNldCBiaXQsIG9yIHtAY29kZSBzaXplfSBpZiBub25lIGFyZSB1bnNldCB1bnRpbCB0aGUgZW5kCgkgICAgICogQHNlZSAjZ2V0TmV4dFNldChpbnQpCgkgICAgICovCgkgICAgQml0QXJyYXkucHJvdG90eXBlLmdldE5leHRVbnNldCA9IGZ1bmN0aW9uIChmcm9tIC8qaW50Ki8pIHsKCSAgICAgICAgdmFyIHNpemUgPSB0aGlzLnNpemU7CgkgICAgICAgIGlmIChmcm9tID49IHNpemUpIHsKCSAgICAgICAgICAgIHJldHVybiBzaXplOwoJICAgICAgICB9CgkgICAgICAgIHZhciBiaXRzID0gdGhpcy5iaXRzOwoJICAgICAgICB2YXIgYml0c09mZnNldCA9IE1hdGguZmxvb3IoZnJvbSAvIDMyKTsKCSAgICAgICAgdmFyIGN1cnJlbnRCaXRzID0gfmJpdHNbYml0c09mZnNldF07CgkgICAgICAgIC8vIG1hc2sgb2ZmIGxlc3NlciBiaXRzIGZpcnN0CgkgICAgICAgIGN1cnJlbnRCaXRzICY9IH4oKDEgPDwgKGZyb20gJiAweDFGKSkgLSAxKTsKCSAgICAgICAgdmFyIGxlbmd0aCA9IGJpdHMubGVuZ3RoOwoJICAgICAgICB3aGlsZSAoY3VycmVudEJpdHMgPT09IDApIHsKCSAgICAgICAgICAgIGlmICgrK2JpdHNPZmZzZXQgPT09IGxlbmd0aCkgewoJICAgICAgICAgICAgICAgIHJldHVybiBzaXplOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgY3VycmVudEJpdHMgPSB+Yml0c1tiaXRzT2Zmc2V0XTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgcmVzdWx0ID0gKGJpdHNPZmZzZXQgKiAzMikgKyBJbnRlZ2VyXzEuZGVmYXVsdC5udW1iZXJPZlRyYWlsaW5nWmVyb3MoY3VycmVudEJpdHMpOwoJICAgICAgICByZXR1cm4gcmVzdWx0ID4gc2l6ZSA/IHNpemUgOiByZXN1bHQ7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBTZXRzIGEgYmxvY2sgb2YgMzIgYml0cywgc3RhcnRpbmcgYXQgYml0IGkuCgkgICAgICoKCSAgICAgKiBAcGFyYW0gaSBmaXJzdCBiaXQgdG8gc2V0CgkgICAgICogQHBhcmFtIG5ld0JpdHMgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgbmV4dCAzMiBiaXRzLiBOb3RlIGFnYWluIHRoYXQgdGhlIGxlYXN0LXNpZ25pZmljYW50IGJpdAoJICAgICAqIGNvcnJlc3BvbmRzIHRvIGJpdCBpLCB0aGUgbmV4dC1sZWFzdC1zaWduaWZpY2FudCB0byBpKzEsIGFuZCBzbyBvbi4KCSAgICAgKi8KCSAgICBCaXRBcnJheS5wcm90b3R5cGUuc2V0QnVsayA9IGZ1bmN0aW9uIChpIC8qaW50Ki8sIG5ld0JpdHMgLyppbnQqLykgewoJICAgICAgICB0aGlzLmJpdHNbTWF0aC5mbG9vcihpIC8gMzIpXSA9IG5ld0JpdHM7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBTZXRzIGEgcmFuZ2Ugb2YgYml0cy4KCSAgICAgKgoJICAgICAqIEBwYXJhbSBzdGFydCBzdGFydCBvZiByYW5nZSwgaW5jbHVzaXZlLgoJICAgICAqIEBwYXJhbSBlbmQgZW5kIG9mIHJhbmdlLCBleGNsdXNpdmUKCSAgICAgKi8KCSAgICBCaXRBcnJheS5wcm90b3R5cGUuc2V0UmFuZ2UgPSBmdW5jdGlvbiAoc3RhcnQgLyppbnQqLywgZW5kIC8qaW50Ki8pIHsKCSAgICAgICAgaWYgKGVuZCA8IHN0YXJ0IHx8IHN0YXJ0IDwgMCB8fCBlbmQgPiB0aGlzLnNpemUpIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKGVuZCA9PT0gc3RhcnQpIHsKCSAgICAgICAgICAgIHJldHVybjsKCSAgICAgICAgfQoJICAgICAgICBlbmQtLTsgLy8gd2lsbCBiZSBlYXNpZXIgdG8gdHJlYXQgdGhpcyBhcyB0aGUgbGFzdCBhY3R1YWxseSBzZXQgYml0IC0tIGluY2x1c2l2ZQoJICAgICAgICB2YXIgZmlyc3RJbnQgPSBNYXRoLmZsb29yKHN0YXJ0IC8gMzIpOwoJICAgICAgICB2YXIgbGFzdEludCA9IE1hdGguZmxvb3IoZW5kIC8gMzIpOwoJICAgICAgICB2YXIgYml0cyA9IHRoaXMuYml0czsKCSAgICAgICAgZm9yICh2YXIgaSA9IGZpcnN0SW50OyBpIDw9IGxhc3RJbnQ7IGkrKykgewoJICAgICAgICAgICAgdmFyIGZpcnN0Qml0ID0gaSA+IGZpcnN0SW50ID8gMCA6IHN0YXJ0ICYgMHgxRjsKCSAgICAgICAgICAgIHZhciBsYXN0Qml0ID0gaSA8IGxhc3RJbnQgPyAzMSA6IGVuZCAmIDB4MUY7CgkgICAgICAgICAgICAvLyBPbmVzIGZyb20gZmlyc3RCaXQgdG8gbGFzdEJpdCwgaW5jbHVzaXZlCgkgICAgICAgICAgICB2YXIgbWFzayA9ICgyIDw8IGxhc3RCaXQpIC0gKDEgPDwgZmlyc3RCaXQpOwoJICAgICAgICAgICAgYml0c1tpXSB8PSBtYXNrOwoJICAgICAgICB9CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBDbGVhcnMgYWxsIGJpdHMgKHNldHMgdG8gZmFsc2UpLgoJICAgICAqLwoJICAgIEJpdEFycmF5LnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgdmFyIG1heCA9IHRoaXMuYml0cy5sZW5ndGg7CgkgICAgICAgIHZhciBiaXRzID0gdGhpcy5iaXRzOwoJICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1heDsgaSsrKSB7CgkgICAgICAgICAgICBiaXRzW2ldID0gMDsKCSAgICAgICAgfQoJICAgIH07CgkgICAgLyoqCgkgICAgICogRWZmaWNpZW50IG1ldGhvZCB0byBjaGVjayBpZiBhIHJhbmdlIG9mIGJpdHMgaXMgc2V0LCBvciBub3Qgc2V0LgoJICAgICAqCgkgICAgICogQHBhcmFtIHN0YXJ0IHN0YXJ0IG9mIHJhbmdlLCBpbmNsdXNpdmUuCgkgICAgICogQHBhcmFtIGVuZCBlbmQgb2YgcmFuZ2UsIGV4Y2x1c2l2ZQoJICAgICAqIEBwYXJhbSB2YWx1ZSBpZiB0cnVlLCBjaGVja3MgdGhhdCBiaXRzIGluIHJhbmdlIGFyZSBzZXQsIG90aGVyd2lzZSBjaGVja3MgdGhhdCB0aGV5IGFyZSBub3Qgc2V0CgkgICAgICogQHJldHVybiB0cnVlIGlmZiBhbGwgYml0cyBhcmUgc2V0IG9yIG5vdCBzZXQgaW4gcmFuZ2UsIGFjY29yZGluZyB0byB2YWx1ZSBhcmd1bWVudAoJICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIGVuZCBpcyBsZXNzIHRoYW4gc3RhcnQgb3IgdGhlIHJhbmdlIGlzIG5vdCBjb250YWluZWQgaW4gdGhlIGFycmF5CgkgICAgICovCgkgICAgQml0QXJyYXkucHJvdG90eXBlLmlzUmFuZ2UgPSBmdW5jdGlvbiAoc3RhcnQgLyppbnQqLywgZW5kIC8qaW50Ki8sIHZhbHVlKSB7CgkgICAgICAgIGlmIChlbmQgPCBzdGFydCB8fCBzdGFydCA8IDAgfHwgZW5kID4gdGhpcy5zaXplKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgICAgIGlmIChlbmQgPT09IHN0YXJ0KSB7CgkgICAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gZW1wdHkgcmFuZ2UgbWF0Y2hlcwoJICAgICAgICB9CgkgICAgICAgIGVuZC0tOyAvLyB3aWxsIGJlIGVhc2llciB0byB0cmVhdCB0aGlzIGFzIHRoZSBsYXN0IGFjdHVhbGx5IHNldCBiaXQgLS0gaW5jbHVzaXZlCgkgICAgICAgIHZhciBmaXJzdEludCA9IE1hdGguZmxvb3Ioc3RhcnQgLyAzMik7CgkgICAgICAgIHZhciBsYXN0SW50ID0gTWF0aC5mbG9vcihlbmQgLyAzMik7CgkgICAgICAgIHZhciBiaXRzID0gdGhpcy5iaXRzOwoJICAgICAgICBmb3IgKHZhciBpID0gZmlyc3RJbnQ7IGkgPD0gbGFzdEludDsgaSsrKSB7CgkgICAgICAgICAgICB2YXIgZmlyc3RCaXQgPSBpID4gZmlyc3RJbnQgPyAwIDogc3RhcnQgJiAweDFGOwoJICAgICAgICAgICAgdmFyIGxhc3RCaXQgPSBpIDwgbGFzdEludCA/IDMxIDogZW5kICYgMHgxRjsKCSAgICAgICAgICAgIC8vIE9uZXMgZnJvbSBmaXJzdEJpdCB0byBsYXN0Qml0LCBpbmNsdXNpdmUKCSAgICAgICAgICAgIHZhciBtYXNrID0gKDIgPDwgbGFzdEJpdCkgLSAoMSA8PCBmaXJzdEJpdCkgJiAweEZGRkZGRkZGOwoJICAgICAgICAgICAgLy8gVFlQRVNDUklQVFBPUlQ6ICYgMHhGRkZGRkZGRiBhZGRlZCB0byBkaXNjYXJkIGFueXRoaW5nIGFmdGVyIDMyIGJpdHMsIGFzIEVTIGhhcyA1MyBiaXRzCgkgICAgICAgICAgICAvLyBSZXR1cm4gZmFsc2UgaWYgd2UncmUgbG9va2luZyBmb3IgMXMgYW5kIHRoZSBtYXNrZWQgYml0c1tpXSBpc24ndCBhbGwgMXMgKGlzOiB0aGF0LAoJICAgICAgICAgICAgLy8gZXF1YWxzIHRoZSBtYXNrLCBvciB3ZSdyZSBsb29raW5nIGZvciAwcyBhbmQgdGhlIG1hc2tlZCBwb3J0aW9uIGlzIG5vdCBhbGwgMHMKCSAgICAgICAgICAgIGlmICgoYml0c1tpXSAmIG1hc2spICE9PSAodmFsdWUgPyBtYXNrIDogMCkpIHsKCSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHRydWU7CgkgICAgfTsKCSAgICBCaXRBcnJheS5wcm90b3R5cGUuYXBwZW5kQml0ID0gZnVuY3Rpb24gKGJpdCkgewoJICAgICAgICB0aGlzLmVuc3VyZUNhcGFjaXR5KHRoaXMuc2l6ZSArIDEpOwoJICAgICAgICBpZiAoYml0KSB7CgkgICAgICAgICAgICB0aGlzLmJpdHNbTWF0aC5mbG9vcih0aGlzLnNpemUgLyAzMildIHw9IDEgPDwgKHRoaXMuc2l6ZSAmIDB4MUYpOwoJICAgICAgICB9CgkgICAgICAgIHRoaXMuc2l6ZSsrOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQXBwZW5kcyB0aGUgbGVhc3Qtc2lnbmlmaWNhbnQgYml0cywgZnJvbSB2YWx1ZSwgaW4gb3JkZXIgZnJvbSBtb3N0LXNpZ25pZmljYW50IHRvCgkgICAgICogbGVhc3Qtc2lnbmlmaWNhbnQuIEZvciBleGFtcGxlLCBhcHBlbmRpbmcgNiBiaXRzIGZyb20gMHgwMDAwMDFFIHdpbGwgYXBwZW5kIHRoZSBiaXRzCgkgICAgICogMCwgMSwgMSwgMSwgMSwgMCBpbiB0aGF0IG9yZGVyLgoJICAgICAqCgkgICAgICogQHBhcmFtIHZhbHVlIHtAY29kZSBpbnR9IGNvbnRhaW5pbmcgYml0cyB0byBhcHBlbmQKCSAgICAgKiBAcGFyYW0gbnVtQml0cyBiaXRzIGZyb20gdmFsdWUgdG8gYXBwZW5kCgkgICAgICovCgkgICAgQml0QXJyYXkucHJvdG90eXBlLmFwcGVuZEJpdHMgPSBmdW5jdGlvbiAodmFsdWUgLyppbnQqLywgbnVtQml0cyAvKmludCovKSB7CgkgICAgICAgIGlmIChudW1CaXRzIDwgMCB8fCBudW1CaXRzID4gMzIpIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCdOdW0gYml0cyBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMzInKTsKCSAgICAgICAgfQoJICAgICAgICB0aGlzLmVuc3VyZUNhcGFjaXR5KHRoaXMuc2l6ZSArIG51bUJpdHMpOwoJICAgICAgICAvLyBjb25zdCBhcHBlbmRCaXQgPSB0aGlzLmFwcGVuZEJpdDsKCSAgICAgICAgZm9yICh2YXIgbnVtQml0c0xlZnQgPSBudW1CaXRzOyBudW1CaXRzTGVmdCA+IDA7IG51bUJpdHNMZWZ0LS0pIHsKCSAgICAgICAgICAgIHRoaXMuYXBwZW5kQml0KCgodmFsdWUgPj4gKG51bUJpdHNMZWZ0IC0gMSkpICYgMHgwMSkgPT09IDEpOwoJICAgICAgICB9CgkgICAgfTsKCSAgICBCaXRBcnJheS5wcm90b3R5cGUuYXBwZW5kQml0QXJyYXkgPSBmdW5jdGlvbiAob3RoZXIpIHsKCSAgICAgICAgdmFyIG90aGVyU2l6ZSA9IG90aGVyLnNpemU7CgkgICAgICAgIHRoaXMuZW5zdXJlQ2FwYWNpdHkodGhpcy5zaXplICsgb3RoZXJTaXplKTsKCSAgICAgICAgLy8gY29uc3QgYXBwZW5kQml0ID0gdGhpcy5hcHBlbmRCaXQ7CgkgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb3RoZXJTaXplOyBpKyspIHsKCSAgICAgICAgICAgIHRoaXMuYXBwZW5kQml0KG90aGVyLmdldChpKSk7CgkgICAgICAgIH0KCSAgICB9OwoJICAgIEJpdEFycmF5LnByb3RvdHlwZS54b3IgPSBmdW5jdGlvbiAob3RoZXIpIHsKCSAgICAgICAgaWYgKHRoaXMuc2l6ZSAhPT0gb3RoZXIuc2l6ZSkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoJ1NpemVzIGRvblwndCBtYXRjaCcpOwoJICAgICAgICB9CgkgICAgICAgIHZhciBiaXRzID0gdGhpcy5iaXRzOwoJICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoXzEgPSBiaXRzLmxlbmd0aDsgaSA8IGxlbmd0aF8xOyBpKyspIHsKCSAgICAgICAgICAgIC8vIFRoZSBsYXN0IGludCBjb3VsZCBiZSBpbmNvbXBsZXRlIChpLmUuIG5vdCBoYXZlIDMyIGJpdHMgaW4KCSAgICAgICAgICAgIC8vIGl0KSBidXQgdGhlcmUgaXMgbm8gcHJvYmxlbSBzaW5jZSAwIFhPUiAwID09IDAuCgkgICAgICAgICAgICBiaXRzW2ldIF49IG90aGVyLmJpdHNbaV07CgkgICAgICAgIH0KCSAgICB9OwoJICAgIC8qKgoJICAgICAqCgkgICAgICogQHBhcmFtIGJpdE9mZnNldCBmaXJzdCBiaXQgdG8gc3RhcnQgd3JpdGluZwoJICAgICAqIEBwYXJhbSBhcnJheSBhcnJheSB0byB3cml0ZSBpbnRvLiBCeXRlcyBhcmUgd3JpdHRlbiBtb3N0LXNpZ25pZmljYW50IGJ5dGUgZmlyc3QuIFRoaXMgaXMgdGhlIG9wcG9zaXRlCgkgICAgICogIG9mIHRoZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiwgd2hpY2ggaXMgZXhwb3NlZCBieSB7QGxpbmsgI2dldEJpdEFycmF5KCl9CgkgICAgICogQHBhcmFtIG9mZnNldCBwb3NpdGlvbiBpbiBhcnJheSB0byBzdGFydCB3cml0aW5nCgkgICAgICogQHBhcmFtIG51bUJ5dGVzIGhvdyBtYW55IGJ5dGVzIHRvIHdyaXRlCgkgICAgICovCgkgICAgQml0QXJyYXkucHJvdG90eXBlLnRvQnl0ZXMgPSBmdW5jdGlvbiAoYml0T2Zmc2V0IC8qaW50Ki8sIGFycmF5LCBvZmZzZXQgLyppbnQqLywgbnVtQnl0ZXMgLyppbnQqLykgewoJICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bUJ5dGVzOyBpKyspIHsKCSAgICAgICAgICAgIHZhciB0aGVCeXRlID0gMDsKCSAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB7CgkgICAgICAgICAgICAgICAgaWYgKHRoaXMuZ2V0KGJpdE9mZnNldCkpIHsKCSAgICAgICAgICAgICAgICAgICAgdGhlQnl0ZSB8PSAxIDw8ICg3IC0gaik7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGJpdE9mZnNldCsrOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgYXJyYXlbb2Zmc2V0ICsgaV0gPSAvKihieXRlKSovIHRoZUJ5dGU7CgkgICAgICAgIH0KCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEByZXR1cm4gdW5kZXJseWluZyBhcnJheSBvZiBpbnRzLiBUaGUgZmlyc3QgZWxlbWVudCBob2xkcyB0aGUgZmlyc3QgMzIgYml0cywgYW5kIHRoZSBsZWFzdAoJICAgICAqICAgICAgICAgc2lnbmlmaWNhbnQgYml0IGlzIGJpdCAwLgoJICAgICAqLwoJICAgIEJpdEFycmF5LnByb3RvdHlwZS5nZXRCaXRBcnJheSA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuYml0czsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIFJldmVyc2VzIGFsbCBiaXRzIGluIHRoZSBhcnJheS4KCSAgICAgKi8KCSAgICBCaXRBcnJheS5wcm90b3R5cGUucmV2ZXJzZSA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgdmFyIG5ld0JpdHMgPSBuZXcgSW50MzJBcnJheSh0aGlzLmJpdHMubGVuZ3RoKTsKCSAgICAgICAgLy8gcmV2ZXJzZSBhbGwgaW50J3MgZmlyc3QKCSAgICAgICAgdmFyIGxlbiA9IE1hdGguZmxvb3IoKHRoaXMuc2l6ZSAtIDEpIC8gMzIpOwoJICAgICAgICB2YXIgb2xkQml0c0xlbiA9IGxlbiArIDE7CgkgICAgICAgIHZhciBiaXRzID0gdGhpcy5iaXRzOwoJICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG9sZEJpdHNMZW47IGkrKykgewoJICAgICAgICAgICAgdmFyIHggPSBiaXRzW2ldOwoJICAgICAgICAgICAgeCA9ICgoeCA+PiAxKSAmIDB4NTU1NTU1NTUpIHwgKCh4ICYgMHg1NTU1NTU1NSkgPDwgMSk7CgkgICAgICAgICAgICB4ID0gKCh4ID4+IDIpICYgMHgzMzMzMzMzMykgfCAoKHggJiAweDMzMzMzMzMzKSA8PCAyKTsKCSAgICAgICAgICAgIHggPSAoKHggPj4gNCkgJiAweDBmMGYwZjBmKSB8ICgoeCAmIDB4MGYwZjBmMGYpIDw8IDQpOwoJICAgICAgICAgICAgeCA9ICgoeCA+PiA4KSAmIDB4MDBmZjAwZmYpIHwgKCh4ICYgMHgwMGZmMDBmZikgPDwgOCk7CgkgICAgICAgICAgICB4ID0gKCh4ID4+IDE2KSAmIDB4MDAwMGZmZmYpIHwgKCh4ICYgMHgwMDAwZmZmZikgPDwgMTYpOwoJICAgICAgICAgICAgbmV3Qml0c1tsZW4gLSBpXSA9IC8qKGludCkqLyB4OwoJICAgICAgICB9CgkgICAgICAgIC8vIG5vdyBjb3JyZWN0IHRoZSBpbnQncyBpZiB0aGUgYml0IHNpemUgaXNuJ3QgYSBtdWx0aXBsZSBvZiAzMgoJICAgICAgICBpZiAodGhpcy5zaXplICE9PSBvbGRCaXRzTGVuICogMzIpIHsKCSAgICAgICAgICAgIHZhciBsZWZ0T2Zmc2V0ID0gb2xkQml0c0xlbiAqIDMyIC0gdGhpcy5zaXplOwoJICAgICAgICAgICAgdmFyIGN1cnJlbnRJbnQgPSBuZXdCaXRzWzBdID4+PiBsZWZ0T2Zmc2V0OwoJICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBvbGRCaXRzTGVuOyBpKyspIHsKCSAgICAgICAgICAgICAgICB2YXIgbmV4dEludCA9IG5ld0JpdHNbaV07CgkgICAgICAgICAgICAgICAgY3VycmVudEludCB8PSBuZXh0SW50IDw8ICgzMiAtIGxlZnRPZmZzZXQpOwoJICAgICAgICAgICAgICAgIG5ld0JpdHNbaSAtIDFdID0gY3VycmVudEludDsKCSAgICAgICAgICAgICAgICBjdXJyZW50SW50ID0gbmV4dEludCA+Pj4gbGVmdE9mZnNldDsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIG5ld0JpdHNbb2xkQml0c0xlbiAtIDFdID0gY3VycmVudEludDsKCSAgICAgICAgfQoJICAgICAgICB0aGlzLmJpdHMgPSBuZXdCaXRzOwoJICAgIH07CgkgICAgQml0QXJyYXkubWFrZUFycmF5ID0gZnVuY3Rpb24gKHNpemUgLyppbnQqLykgewoJICAgICAgICByZXR1cm4gbmV3IEludDMyQXJyYXkoTWF0aC5mbG9vcigoc2l6ZSArIDMxKSAvIDMyKSk7CgkgICAgfTsKCSAgICAvKkBPdmVycmlkZSovCgkgICAgQml0QXJyYXkucHJvdG90eXBlLmVxdWFscyA9IGZ1bmN0aW9uIChvKSB7CgkgICAgICAgIGlmICghKG8gaW5zdGFuY2VvZiBCaXRBcnJheSkpIHsKCSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgb3RoZXIgPSBvOwoJICAgICAgICByZXR1cm4gdGhpcy5zaXplID09PSBvdGhlci5zaXplICYmIEFycmF5c18xLmRlZmF1bHQuZXF1YWxzKHRoaXMuYml0cywgb3RoZXIuYml0cyk7CgkgICAgfTsKCSAgICAvKkBPdmVycmlkZSovCgkgICAgQml0QXJyYXkucHJvdG90eXBlLmhhc2hDb2RlID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gMzEgKiB0aGlzLnNpemUgKyBBcnJheXNfMS5kZWZhdWx0Lmhhc2hDb2RlKHRoaXMuYml0cyk7CgkgICAgfTsKCSAgICAvKkBPdmVycmlkZSovCgkgICAgQml0QXJyYXkucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkgewoJICAgICAgICB2YXIgcmVzdWx0ID0gJyc7CgkgICAgICAgIGZvciAodmFyIGkgPSAwLCBzaXplID0gdGhpcy5zaXplOyBpIDwgc2l6ZTsgaSsrKSB7CgkgICAgICAgICAgICBpZiAoKGkgJiAweDA3KSA9PT0gMCkgewoJICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnICc7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICByZXN1bHQgKz0gdGhpcy5nZXQoaSkgPyAnWCcgOiAnLic7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHJlc3VsdDsKCSAgICB9OwoJICAgIC8qQE92ZXJyaWRlKi8KCSAgICBCaXRBcnJheS5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiBuZXcgQml0QXJyYXkodGhpcy5zaXplLCB0aGlzLmJpdHMuc2xpY2UoKSk7CgkgICAgfTsKCSAgICByZXR1cm4gQml0QXJyYXk7Cgl9KCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gQml0QXJyYXk7CgoJfSk7CgoJdmFyIERlY29kZUhpbnRUeXBlXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CgkvKgoJICogQ29weXJpZ2h0IDIwMDkgWlhpbmcgYXV0aG9ycwoJICoKCSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkgKgoJICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSAqCgkgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSAqLwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCS8qbmFtZXNwYWNlIGNvbS5nb29nbGUuenhpbmcgeyovCgkvKioKCSAqIEVuY2Fwc3VsYXRlcyBhIHR5cGUgb2YgaGludCB0aGF0IGEgY2FsbGVyIG1heSBwYXNzIHRvIGEgYmFyY29kZSByZWFkZXIgdG8gaGVscCBpdAoJICogbW9yZSBxdWlja2x5IG9yIGFjY3VyYXRlbHkgZGVjb2RlIGl0LiBJdCBpcyB1cCB0byBpbXBsZW1lbnRhdGlvbnMgdG8gZGVjaWRlIHdoYXQsCgkgKiBpZiBhbnl0aGluZywgdG8gZG8gd2l0aCB0aGUgaW5mb3JtYXRpb24gdGhhdCBpcyBzdXBwbGllZC4KCSAqCgkgKiBAYXV0aG9yIFNlYW4gT3dlbgoJICogQGF1dGhvciBkc3dpdGtpbkBnb29nbGUuY29tIChEYW5pZWwgU3dpdGtpbikKCSAqIEBzZWUgUmVhZGVyI2RlY29kZShCaW5hcnlCaXRtYXAsamF2YS51dGlsLk1hcCkKCSAqLwoJdmFyIERlY29kZUhpbnRUeXBlOwoJKGZ1bmN0aW9uIChEZWNvZGVIaW50VHlwZSkgewoJICAgIC8qKgoJICAgICAqIFVuc3BlY2lmaWVkLCBhcHBsaWNhdGlvbi1zcGVjaWZpYyBoaW50LiBNYXBzIHRvIGFuIHVuc3BlY2lmaWVkIHtAbGluayBPYmplY3R9LgoJICAgICAqLwoJICAgIERlY29kZUhpbnRUeXBlW0RlY29kZUhpbnRUeXBlWyJPVEhFUiJdID0gMF0gPSAiT1RIRVIiOyAvKihPYmplY3QuY2xhc3MpKi8KCSAgICAvKioKCSAgICAgKiBJbWFnZSBpcyBhIHB1cmUgbW9ub2Nocm9tZSBpbWFnZSBvZiBhIGJhcmNvZGUuIERvZXNuJ3QgbWF0dGVyIHdoYXQgaXQgbWFwcyB0bzsKCSAgICAgKiB1c2Uge0BsaW5rIEJvb2xlYW4jVFJVRX0uCgkgICAgICovCgkgICAgRGVjb2RlSGludFR5cGVbRGVjb2RlSGludFR5cGVbIlBVUkVfQkFSQ09ERSJdID0gMV0gPSAiUFVSRV9CQVJDT0RFIjsgLyooVm9pZC5jbGFzcykqLwoJICAgIC8qKgoJICAgICAqIEltYWdlIGlzIGtub3duIHRvIGJlIG9mIG9uZSBvZiBhIGZldyBwb3NzaWJsZSBmb3JtYXRzLgoJICAgICAqIE1hcHMgdG8gYSB7QGxpbmsgTGlzdH0gb2Yge0BsaW5rIEJhcmNvZGVGb3JtYXR9cy4KCSAgICAgKi8KCSAgICBEZWNvZGVIaW50VHlwZVtEZWNvZGVIaW50VHlwZVsiUE9TU0lCTEVfRk9STUFUUyJdID0gMl0gPSAiUE9TU0lCTEVfRk9STUFUUyI7IC8qKExpc3QuY2xhc3MpKi8KCSAgICAvKioKCSAgICAgKiBTcGVuZCBtb3JlIHRpbWUgdG8gdHJ5IHRvIGZpbmQgYSBiYXJjb2RlOyBvcHRpbWl6ZSBmb3IgYWNjdXJhY3ksIG5vdCBzcGVlZC4KCSAgICAgKiBEb2Vzbid0IG1hdHRlciB3aGF0IGl0IG1hcHMgdG87IHVzZSB7QGxpbmsgQm9vbGVhbiNUUlVFfS4KCSAgICAgKi8KCSAgICBEZWNvZGVIaW50VHlwZVtEZWNvZGVIaW50VHlwZVsiVFJZX0hBUkRFUiJdID0gM10gPSAiVFJZX0hBUkRFUiI7IC8qKFZvaWQuY2xhc3MpKi8KCSAgICAvKioKCSAgICAgKiBTcGVjaWZpZXMgd2hhdCBjaGFyYWN0ZXIgZW5jb2RpbmcgdG8gdXNlIHdoZW4gZGVjb2RpbmcsIHdoZXJlIGFwcGxpY2FibGUgKHR5cGUgU3RyaW5nKQoJICAgICAqLwoJICAgIERlY29kZUhpbnRUeXBlW0RlY29kZUhpbnRUeXBlWyJDSEFSQUNURVJfU0VUIl0gPSA0XSA9ICJDSEFSQUNURVJfU0VUIjsgLyooU3RyaW5nLmNsYXNzKSovCgkgICAgLyoqCgkgICAgICogQWxsb3dlZCBsZW5ndGhzIG9mIGVuY29kZWQgZGF0YSAtLSByZWplY3QgYW55dGhpbmcgZWxzZS4gTWFwcyB0byBhbiB7QGNvZGUgSW50MzJBcnJheX0uCgkgICAgICovCgkgICAgRGVjb2RlSGludFR5cGVbRGVjb2RlSGludFR5cGVbIkFMTE9XRURfTEVOR1RIUyJdID0gNV0gPSAiQUxMT1dFRF9MRU5HVEhTIjsgLyooSW50MzJBcnJheS5jbGFzcykqLwoJICAgIC8qKgoJICAgICAqIEFzc3VtZSBDb2RlIDM5IGNvZGVzIGVtcGxveSBhIGNoZWNrIGRpZ2l0LiBEb2Vzbid0IG1hdHRlciB3aGF0IGl0IG1hcHMgdG87CgkgICAgICogdXNlIHtAbGluayBCb29sZWFuI1RSVUV9LgoJICAgICAqLwoJICAgIERlY29kZUhpbnRUeXBlW0RlY29kZUhpbnRUeXBlWyJBU1NVTUVfQ09ERV8zOV9DSEVDS19ESUdJVCJdID0gNl0gPSAiQVNTVU1FX0NPREVfMzlfQ0hFQ0tfRElHSVQiOyAvKihWb2lkLmNsYXNzKSovCgkgICAgLyoqCgkgICAgICogQXNzdW1lIHRoZSBiYXJjb2RlIGlzIGJlaW5nIHByb2Nlc3NlZCBhcyBhIEdTMSBiYXJjb2RlLCBhbmQgbW9kaWZ5IGJlaGF2aW9yIGFzIG5lZWRlZC4KCSAgICAgKiBGb3IgZXhhbXBsZSB0aGlzIGFmZmVjdHMgRk5DMSBoYW5kbGluZyBmb3IgQ29kZSAxMjggKGFrYSBHUzEtMTI4KS4gRG9lc24ndCBtYXR0ZXIgd2hhdCBpdCBtYXBzIHRvOwoJICAgICAqIHVzZSB7QGxpbmsgQm9vbGVhbiNUUlVFfS4KCSAgICAgKi8KCSAgICBEZWNvZGVIaW50VHlwZVtEZWNvZGVIaW50VHlwZVsiQVNTVU1FX0dTMSJdID0gN10gPSAiQVNTVU1FX0dTMSI7IC8qKFZvaWQuY2xhc3MpKi8KCSAgICAvKioKCSAgICAgKiBJZiB0cnVlLCByZXR1cm4gdGhlIHN0YXJ0IGFuZCBlbmQgZGlnaXRzIGluIGEgQ29kYWJhciBiYXJjb2RlIGluc3RlYWQgb2Ygc3RyaXBwaW5nIHRoZW0uIFRoZXkKCSAgICAgKiBhcmUgYWxwaGEsIHdoZXJlYXMgdGhlIHJlc3QgYXJlIG51bWVyaWMuIEJ5IGRlZmF1bHQsIHRoZXkgYXJlIHN0cmlwcGVkLCBidXQgdGhpcyBjYXVzZXMgdGhlbQoJICAgICAqIHRvIG5vdCBiZS4gRG9lc24ndCBtYXR0ZXIgd2hhdCBpdCBtYXBzIHRvOyB1c2Uge0BsaW5rIEJvb2xlYW4jVFJVRX0uCgkgICAgICovCgkgICAgRGVjb2RlSGludFR5cGVbRGVjb2RlSGludFR5cGVbIlJFVFVSTl9DT0RBQkFSX1NUQVJUX0VORCJdID0gOF0gPSAiUkVUVVJOX0NPREFCQVJfU1RBUlRfRU5EIjsgLyooVm9pZC5jbGFzcykqLwoJICAgIC8qKgoJICAgICAqIFRoZSBjYWxsZXIgbmVlZHMgdG8gYmUgbm90aWZpZWQgdmlhIGNhbGxiYWNrIHdoZW4gYSBwb3NzaWJsZSB7QGxpbmsgUmVzdWx0UG9pbnR9CgkgICAgICogaXMgZm91bmQuIE1hcHMgdG8gYSB7QGxpbmsgUmVzdWx0UG9pbnRDYWxsYmFja30uCgkgICAgICovCgkgICAgRGVjb2RlSGludFR5cGVbRGVjb2RlSGludFR5cGVbIk5FRURfUkVTVUxUX1BPSU5UX0NBTExCQUNLIl0gPSA5XSA9ICJORUVEX1JFU1VMVF9QT0lOVF9DQUxMQkFDSyI7IC8qKFJlc3VsdFBvaW50Q2FsbGJhY2suY2xhc3MpKi8KCSAgICAvKioKCSAgICAgKiBBbGxvd2VkIGV4dGVuc2lvbiBsZW5ndGhzIGZvciBFQU4gb3IgVVBDIGJhcmNvZGVzLiBPdGhlciBmb3JtYXRzIHdpbGwgaWdub3JlIHRoaXMuCgkgICAgICogTWFwcyB0byBhbiB7QGNvZGUgSW50MzJBcnJheX0gb2YgdGhlIGFsbG93ZWQgZXh0ZW5zaW9uIGxlbmd0aHMsIGZvciBleGFtcGxlIFsyXSwgWzVdLCBvciBbMiwgNV0uCgkgICAgICogSWYgaXQgaXMgb3B0aW9uYWwgdG8gaGF2ZSBhbiBleHRlbnNpb24sIGRvIG5vdCBzZXQgdGhpcyBoaW50LiBJZiB0aGlzIGlzIHNldCwKCSAgICAgKiBhbmQgYSBVUEMgb3IgRUFOIGJhcmNvZGUgaXMgZm91bmQgYnV0IGFuIGV4dGVuc2lvbiBpcyBub3QsIHRoZW4gbm8gcmVzdWx0IHdpbGwgYmUgcmV0dXJuZWQKCSAgICAgKiBhdCBhbGwuCgkgICAgICovCgkgICAgRGVjb2RlSGludFR5cGVbRGVjb2RlSGludFR5cGVbIkFMTE9XRURfRUFOX0VYVEVOU0lPTlMiXSA9IDEwXSA9ICJBTExPV0VEX0VBTl9FWFRFTlNJT05TIjsgLyooSW50MzJBcnJheS5jbGFzcykqLwoJICAgIC8vIEVuZCBvZiBlbnVtZXJhdGlvbiB2YWx1ZXMuCgkgICAgLyoqCgkgICAgICogRGF0YSB0eXBlIHRoZSBoaW50IGlzIGV4cGVjdGluZy4KCSAgICAgKiBBbW9uZyB0aGUgcG9zc2libGUgdmFsdWVzIHRoZSB7QGxpbmsgVm9pZH0gc3RhbmRzIG91dCBhcyBiZWluZyB1c2VkIGZvcgoJICAgICAqIGhpbnRzIHRoYXQgZG8gbm90IGV4cGVjdCBhIHZhbHVlIHRvIGJlIHN1cHBsaWVkIChmbGFnIGhpbnRzKS4gU3VjaCBoaW50cwoJICAgICAqIHdpbGwgcG9zc2libHkgaGF2ZSB0aGVpciB2YWx1ZSBpZ25vcmVkLCBvciByZXBsYWNlZCBieSBhCgkgICAgICoge0BsaW5rIEJvb2xlYW4jVFJVRX0uIEhpbnQgc3VwcGxpZXJzIHNob3VsZCBwcm9iYWJseSB1c2UKCSAgICAgKiB7QGxpbmsgQm9vbGVhbiNUUlVFfSBhcyBkaXJlY3RlZCBieSB0aGUgYWN0dWFsIGhpbnQgZG9jdW1lbnRhdGlvbi4KCSAgICAgKi8KCSAgICAvLyBwcml2YXRlIHZhbHVlVHlwZTogQ2xhc3M8Pz4KCSAgICAvLyBEZWNvZGVIaW50VHlwZSh2YWx1ZVR5cGU6IENsYXNzPD8+KSB7CgkgICAgLy8gICB0aGlzLnZhbHVlVHlwZSA9IHZhbHVlVHlwZQoJICAgIC8vIH0KCSAgICAvLyBwdWJsaWMgZ2V0VmFsdWVUeXBlKCk6IENsYXNzPD8+IHsKCSAgICAvLyAgIHJldHVybiB2YWx1ZVR5cGUKCSAgICAvLyB9Cgl9KShEZWNvZGVIaW50VHlwZSB8fCAoRGVjb2RlSGludFR5cGUgPSB7fSkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gRGVjb2RlSGludFR5cGU7CgoJfSk7CgoJdmFyIEZvcm1hdEV4Y2VwdGlvbl8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJdmFyIF9fZXh0ZW5kcyA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7CgkgICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8CgkgICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8CgkgICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTsKCSAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgfTsKCSAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9CgkgICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTsKCSAgICB9OwoJfSkoKTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgoJLyoqCgkgKiBDdXN0b20gRXJyb3IgY2xhc3Mgb2YgdHlwZSBFeGNlcHRpb24uCgkgKi8KCXZhciBGb3JtYXRFeGNlcHRpb24gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7CgkgICAgX19leHRlbmRzKEZvcm1hdEV4Y2VwdGlvbiwgX3N1cGVyKTsKCSAgICBmdW5jdGlvbiBGb3JtYXRFeGNlcHRpb24oKSB7CgkgICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpczsKCSAgICB9CgkgICAgRm9ybWF0RXhjZXB0aW9uLmdldEZvcm1hdEluc3RhbmNlID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gbmV3IEZvcm1hdEV4Y2VwdGlvbigpOwoJICAgIH07CgkgICAgRm9ybWF0RXhjZXB0aW9uLmtpbmQgPSAnRm9ybWF0RXhjZXB0aW9uJzsKCSAgICByZXR1cm4gRm9ybWF0RXhjZXB0aW9uOwoJfShFeGNlcHRpb25fMS5kZWZhdWx0KSk7CglleHBvcnRzLmRlZmF1bHQgPSBGb3JtYXRFeGNlcHRpb247CgoJfSk7CgoJdmFyIENoYXJhY3RlclNldEVDSV8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJLyoKCSAqIENvcHlyaWdodCAyMDA4IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCXZhciBfX3ZhbHVlcyA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX3ZhbHVlcykgfHwgZnVuY3Rpb24obykgewoJICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gImZ1bmN0aW9uIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwOwoJICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pOwoJICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gIm51bWJlciIpIHJldHVybiB7CgkgICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7CgkgICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07CgkgICAgICAgIH0KCSAgICB9OwoJICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/ICJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLiIgOiAiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpOwoJfTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CglleHBvcnRzLkNoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnMgPSB2b2lkIDA7CgkvKm5hbWVzcGFjZSBjb20uZ29vZ2xlLnp4aW5nLmNvbW1vbiB7Ki8KCgkvKmltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsqLwoJLyppbXBvcnQgamF2YS51dGlsLk1hcDsqLwoJdmFyIENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnM7CgkoZnVuY3Rpb24gKENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnMpIHsKCSAgICBDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzW0NoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnNbIkNwNDM3Il0gPSAwXSA9ICJDcDQzNyI7CgkgICAgQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzWyJJU084ODU5XzEiXSA9IDFdID0gIklTTzg4NTlfMSI7CgkgICAgQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzWyJJU084ODU5XzIiXSA9IDJdID0gIklTTzg4NTlfMiI7CgkgICAgQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzWyJJU084ODU5XzMiXSA9IDNdID0gIklTTzg4NTlfMyI7CgkgICAgQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzWyJJU084ODU5XzQiXSA9IDRdID0gIklTTzg4NTlfNCI7CgkgICAgQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzWyJJU084ODU5XzUiXSA9IDVdID0gIklTTzg4NTlfNSI7CgkgICAgQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzWyJJU084ODU5XzYiXSA9IDZdID0gIklTTzg4NTlfNiI7CgkgICAgQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzWyJJU084ODU5XzciXSA9IDddID0gIklTTzg4NTlfNyI7CgkgICAgQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzWyJJU084ODU5XzgiXSA9IDhdID0gIklTTzg4NTlfOCI7CgkgICAgQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzWyJJU084ODU5XzkiXSA9IDldID0gIklTTzg4NTlfOSI7CgkgICAgQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzWyJJU084ODU5XzEwIl0gPSAxMF0gPSAiSVNPODg1OV8xMCI7CgkgICAgQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzWyJJU084ODU5XzExIl0gPSAxMV0gPSAiSVNPODg1OV8xMSI7CgkgICAgQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzWyJJU084ODU5XzEzIl0gPSAxMl0gPSAiSVNPODg1OV8xMyI7CgkgICAgQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzWyJJU084ODU5XzE0Il0gPSAxM10gPSAiSVNPODg1OV8xNCI7CgkgICAgQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzWyJJU084ODU5XzE1Il0gPSAxNF0gPSAiSVNPODg1OV8xNSI7CgkgICAgQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzWyJJU084ODU5XzE2Il0gPSAxNV0gPSAiSVNPODg1OV8xNiI7CgkgICAgQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzWyJTSklTIl0gPSAxNl0gPSAiU0pJUyI7CgkgICAgQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzWyJDcDEyNTAiXSA9IDE3XSA9ICJDcDEyNTAiOwoJICAgIENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnNbQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1siQ3AxMjUxIl0gPSAxOF0gPSAiQ3AxMjUxIjsKCSAgICBDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzW0NoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnNbIkNwMTI1MiJdID0gMTldID0gIkNwMTI1MiI7CgkgICAgQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzWyJDcDEyNTYiXSA9IDIwXSA9ICJDcDEyNTYiOwoJICAgIENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnNbQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1siVW5pY29kZUJpZ1VubWFya2VkIl0gPSAyMV0gPSAiVW5pY29kZUJpZ1VubWFya2VkIjsKCSAgICBDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzW0NoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnNbIlVURjgiXSA9IDIyXSA9ICJVVEY4IjsKCSAgICBDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzW0NoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnNbIkFTQ0lJIl0gPSAyM10gPSAiQVNDSUkiOwoJICAgIENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnNbQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1siQmlnNSJdID0gMjRdID0gIkJpZzUiOwoJICAgIENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnNbQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1siR0IxODAzMCJdID0gMjVdID0gIkdCMTgwMzAiOwoJICAgIENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnNbQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1siRVVDX0tSIl0gPSAyNl0gPSAiRVVDX0tSIjsKCX0pKENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnMgPSBleHBvcnRzLkNoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnMgfHwgKGV4cG9ydHMuQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVycyA9IHt9KSk7CgkvKioKCSAqIEVuY2Fwc3VsYXRlcyBhIENoYXJhY3RlciBTZXQgRUNJLCBhY2NvcmRpbmcgdG8gIkV4dGVuZGVkIENoYW5uZWwgSW50ZXJwcmV0YXRpb25zIiA1LjMuMS4xCgkgKiBvZiBJU08gMTgwMDQuCgkgKgoJICogQGF1dGhvciBTZWFuIE93ZW4KCSAqLwoJdmFyIENoYXJhY3RlclNldEVDSSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBDaGFyYWN0ZXJTZXRFQ0kodmFsdWVJZGVudGlmaWVyLCB2YWx1ZXNQYXJhbSwgbmFtZSkgewoJICAgICAgICB2YXIgZV8xLCBfYTsKCSAgICAgICAgdmFyIG90aGVyRW5jb2RpbmdOYW1lcyA9IFtdOwoJICAgICAgICBmb3IgKHZhciBfaSA9IDM7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykgewoJICAgICAgICAgICAgb3RoZXJFbmNvZGluZ05hbWVzW19pIC0gM10gPSBhcmd1bWVudHNbX2ldOwoJICAgICAgICB9CgkgICAgICAgIHRoaXMudmFsdWVJZGVudGlmaWVyID0gdmFsdWVJZGVudGlmaWVyOwoJICAgICAgICB0aGlzLm5hbWUgPSBuYW1lOwoJICAgICAgICBpZiAodHlwZW9mIHZhbHVlc1BhcmFtID09PSAnbnVtYmVyJykgewoJICAgICAgICAgICAgdGhpcy52YWx1ZXMgPSBJbnQzMkFycmF5LmZyb20oW3ZhbHVlc1BhcmFtXSk7CgkgICAgICAgIH0KCSAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICB0aGlzLnZhbHVlcyA9IHZhbHVlc1BhcmFtOwoJICAgICAgICB9CgkgICAgICAgIHRoaXMub3RoZXJFbmNvZGluZ05hbWVzID0gb3RoZXJFbmNvZGluZ05hbWVzOwoJICAgICAgICBDaGFyYWN0ZXJTZXRFQ0kuVkFMVUVfSURFTlRJRklFUl9UT19FQ0kuc2V0KHZhbHVlSWRlbnRpZmllciwgdGhpcyk7CgkgICAgICAgIENoYXJhY3RlclNldEVDSS5OQU1FX1RPX0VDSS5zZXQobmFtZSwgdGhpcyk7CgkgICAgICAgIHZhciB2YWx1ZXMgPSB0aGlzLnZhbHVlczsKCSAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aF8xID0gdmFsdWVzLmxlbmd0aDsgaSAhPT0gbGVuZ3RoXzE7IGkrKykgewoJICAgICAgICAgICAgdmFyIHYgPSB2YWx1ZXNbaV07CgkgICAgICAgICAgICBDaGFyYWN0ZXJTZXRFQ0kuVkFMVUVTX1RPX0VDSS5zZXQodiwgdGhpcyk7CgkgICAgICAgIH0KCSAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgIGZvciAodmFyIG90aGVyRW5jb2RpbmdOYW1lc18xID0gX192YWx1ZXMob3RoZXJFbmNvZGluZ05hbWVzKSwgb3RoZXJFbmNvZGluZ05hbWVzXzFfMSA9IG90aGVyRW5jb2RpbmdOYW1lc18xLm5leHQoKTsgIW90aGVyRW5jb2RpbmdOYW1lc18xXzEuZG9uZTsgb3RoZXJFbmNvZGluZ05hbWVzXzFfMSA9IG90aGVyRW5jb2RpbmdOYW1lc18xLm5leHQoKSkgewoJICAgICAgICAgICAgICAgIHZhciBvdGhlck5hbWUgPSBvdGhlckVuY29kaW5nTmFtZXNfMV8xLnZhbHVlOwoJICAgICAgICAgICAgICAgIENoYXJhY3RlclNldEVDSS5OQU1FX1RPX0VDSS5zZXQob3RoZXJOYW1lLCB0aGlzKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfQoJICAgICAgICBmaW5hbGx5IHsKCSAgICAgICAgICAgIHRyeSB7CgkgICAgICAgICAgICAgICAgaWYgKG90aGVyRW5jb2RpbmdOYW1lc18xXzEgJiYgIW90aGVyRW5jb2RpbmdOYW1lc18xXzEuZG9uZSAmJiAoX2EgPSBvdGhlckVuY29kaW5nTmFtZXNfMS5yZXR1cm4pKSBfYS5jYWxsKG90aGVyRW5jb2RpbmdOYW1lc18xKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH0KCSAgICAgICAgfQoJICAgIH0KCSAgICAvLyBDaGFyYWN0ZXJTZXRFQ0kodmFsdWU6IG51bWJlciAvKmludCovKSB7CgkgICAgLy8gICB0aGlzKG5ldyBJbnQzMkFycmF5IHt2YWx1ZX0pCgkgICAgLy8gfQoJICAgIC8vIENoYXJhY3RlclNldEVDSSh2YWx1ZTogbnVtYmVyIC8qaW50Ki8sIFN0cmluZy4uLiBvdGhlckVuY29kaW5nTmFtZXMpIHsKCSAgICAvLyAgIHRoaXMudmFsdWVzID0gbmV3IEludDMyQXJyYXkge3ZhbHVlfQoJICAgIC8vICAgdGhpcy5vdGhlckVuY29kaW5nTmFtZXMgPSBvdGhlckVuY29kaW5nTmFtZXMKCSAgICAvLyB9CgkgICAgLy8gQ2hhcmFjdGVyU2V0RUNJKHZhbHVlczogSW50MzJBcnJheSwgU3RyaW5nLi4uIG90aGVyRW5jb2RpbmdOYW1lcykgewoJICAgIC8vICAgdGhpcy52YWx1ZXMgPSB2YWx1ZXMKCSAgICAvLyAgIHRoaXMub3RoZXJFbmNvZGluZ05hbWVzID0gb3RoZXJFbmNvZGluZ05hbWVzCgkgICAgLy8gfQoJICAgIENoYXJhY3RlclNldEVDSS5wcm90b3R5cGUuZ2V0VmFsdWVJZGVudGlmaWVyID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy52YWx1ZUlkZW50aWZpZXI7CgkgICAgfTsKCSAgICBDaGFyYWN0ZXJTZXRFQ0kucHJvdG90eXBlLmdldE5hbWUgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLm5hbWU7CgkgICAgfTsKCSAgICBDaGFyYWN0ZXJTZXRFQ0kucHJvdG90eXBlLmdldFZhbHVlID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy52YWx1ZXNbMF07CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcGFyYW0gdmFsdWUgY2hhcmFjdGVyIHNldCBFQ0kgdmFsdWUKCSAgICAgKiBAcmV0dXJuIHtAY29kZSBDaGFyYWN0ZXJTZXRFQ0l9IHJlcHJlc2VudGluZyBFQ0kgb2YgZ2l2ZW4gdmFsdWUsIG9yIG51bGwgaWYgaXQgaXMgbGVnYWwgYnV0CgkgICAgICogICB1bnN1cHBvcnRlZAoJICAgICAqIEB0aHJvd3MgRm9ybWF0RXhjZXB0aW9uIGlmIEVDSSB2YWx1ZSBpcyBpbnZhbGlkCgkgICAgICovCgkgICAgQ2hhcmFjdGVyU2V0RUNJLmdldENoYXJhY3RlclNldEVDSUJ5VmFsdWUgPSBmdW5jdGlvbiAodmFsdWUgLyppbnQqLykgewoJICAgICAgICBpZiAodmFsdWUgPCAwIHx8IHZhbHVlID49IDkwMCkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoJ2luY29yZWN0IHZhbHVlJyk7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGNoYXJhY3RlclNldCA9IENoYXJhY3RlclNldEVDSS5WQUxVRVNfVE9fRUNJLmdldCh2YWx1ZSk7CgkgICAgICAgIGlmICh1bmRlZmluZWQgPT09IGNoYXJhY3RlclNldCkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoJ2luY29yZWN0IHZhbHVlJyk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIGNoYXJhY3RlclNldDsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEBwYXJhbSBuYW1lIGNoYXJhY3RlciBzZXQgRUNJIGVuY29kaW5nIG5hbWUKCSAgICAgKiBAcmV0dXJuIENoYXJhY3RlclNldEVDSSByZXByZXNlbnRpbmcgRUNJIGZvciBjaGFyYWN0ZXIgZW5jb2RpbmcsIG9yIG51bGwgaWYgaXQgaXMgbGVnYWwKCSAgICAgKiAgIGJ1dCB1bnN1cHBvcnRlZAoJICAgICAqLwoJICAgIENoYXJhY3RlclNldEVDSS5nZXRDaGFyYWN0ZXJTZXRFQ0lCeU5hbWUgPSBmdW5jdGlvbiAobmFtZSkgewoJICAgICAgICB2YXIgY2hhcmFjdGVyU2V0ID0gQ2hhcmFjdGVyU2V0RUNJLk5BTUVfVE9fRUNJLmdldChuYW1lKTsKCSAgICAgICAgaWYgKHVuZGVmaW5lZCA9PT0gY2hhcmFjdGVyU2V0KSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgnaW5jb3JlY3QgdmFsdWUnKTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gY2hhcmFjdGVyU2V0OwoJICAgIH07CgkgICAgQ2hhcmFjdGVyU2V0RUNJLnByb3RvdHlwZS5lcXVhbHMgPSBmdW5jdGlvbiAobykgewoJICAgICAgICBpZiAoIShvIGluc3RhbmNlb2YgQ2hhcmFjdGVyU2V0RUNJKSkgewoJICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoJICAgICAgICB9CgkgICAgICAgIHZhciBvdGhlciA9IG87CgkgICAgICAgIHJldHVybiB0aGlzLmdldE5hbWUoKSA9PT0gb3RoZXIuZ2V0TmFtZSgpOwoJICAgIH07CgkgICAgQ2hhcmFjdGVyU2V0RUNJLlZBTFVFX0lERU5USUZJRVJfVE9fRUNJID0gbmV3IE1hcCgpOwoJICAgIENoYXJhY3RlclNldEVDSS5WQUxVRVNfVE9fRUNJID0gbmV3IE1hcCgpOwoJICAgIENoYXJhY3RlclNldEVDSS5OQU1FX1RPX0VDSSA9IG5ldyBNYXAoKTsKCSAgICAvLyBFbnVtIG5hbWUgaXMgYSBKYXZhIGVuY29kaW5nIHZhbGlkIGZvciBqYXZhLmxhbmcgYW5kIGphdmEuaW8KCSAgICAvLyBUWVBFU0NSSVBUUE9SVDogY2hhbmdlZCB0aGUgbWFpbiBsYWJlbCBmb3IgSVNPIGFzIHRoZSBUZXh0RW5jb2RlciBkaWQgbm90IHJlY29nbml6ZWQgdGhlbSBpbiB0aGUgZm9ybSBmcm9tIGphdmEKCSAgICAvLyAoZWcgSVNPODg1OV8xIG11c3QgYmUgSVNPODg1OTEgb3IgSVNPODg1OS0xIG9yIElTTy04ODU5LTEpCgkgICAgLy8gbGF0ZXIgb246IHdlbGwsIGV4Y2VwdCAxNiB3aWNoIGRvZXMgbm90IHdvcmsgd2l0aCBJU084ODU5MTYgc28gdXNlZCBJU08tODg1OS0xIGZvcm0gZm9yIGRlZmF1bHQKCSAgICBDaGFyYWN0ZXJTZXRFQ0kuQ3A0MzcgPSBuZXcgQ2hhcmFjdGVyU2V0RUNJKENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnMuQ3A0MzcsIEludDMyQXJyYXkuZnJvbShbMCwgMl0pLCAnQ3A0MzcnKTsKCSAgICBDaGFyYWN0ZXJTZXRFQ0kuSVNPODg1OV8xID0gbmV3IENoYXJhY3RlclNldEVDSShDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzLklTTzg4NTlfMSwgSW50MzJBcnJheS5mcm9tKFsxLCAzXSksICdJU08tODg1OS0xJywgJ0lTTzg4NTkxJywgJ0lTTzg4NTlfMScpOwoJICAgIENoYXJhY3RlclNldEVDSS5JU084ODU5XzIgPSBuZXcgQ2hhcmFjdGVyU2V0RUNJKENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnMuSVNPODg1OV8yLCA0LCAnSVNPLTg4NTktMicsICdJU084ODU5MicsICdJU084ODU5XzInKTsKCSAgICBDaGFyYWN0ZXJTZXRFQ0kuSVNPODg1OV8zID0gbmV3IENoYXJhY3RlclNldEVDSShDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzLklTTzg4NTlfMywgNSwgJ0lTTy04ODU5LTMnLCAnSVNPODg1OTMnLCAnSVNPODg1OV8zJyk7CgkgICAgQ2hhcmFjdGVyU2V0RUNJLklTTzg4NTlfNCA9IG5ldyBDaGFyYWN0ZXJTZXRFQ0koQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVycy5JU084ODU5XzQsIDYsICdJU08tODg1OS00JywgJ0lTTzg4NTk0JywgJ0lTTzg4NTlfNCcpOwoJICAgIENoYXJhY3RlclNldEVDSS5JU084ODU5XzUgPSBuZXcgQ2hhcmFjdGVyU2V0RUNJKENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnMuSVNPODg1OV81LCA3LCAnSVNPLTg4NTktNScsICdJU084ODU5NScsICdJU084ODU5XzUnKTsKCSAgICBDaGFyYWN0ZXJTZXRFQ0kuSVNPODg1OV82ID0gbmV3IENoYXJhY3RlclNldEVDSShDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzLklTTzg4NTlfNiwgOCwgJ0lTTy04ODU5LTYnLCAnSVNPODg1OTYnLCAnSVNPODg1OV82Jyk7CgkgICAgQ2hhcmFjdGVyU2V0RUNJLklTTzg4NTlfNyA9IG5ldyBDaGFyYWN0ZXJTZXRFQ0koQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVycy5JU084ODU5XzcsIDksICdJU08tODg1OS03JywgJ0lTTzg4NTk3JywgJ0lTTzg4NTlfNycpOwoJICAgIENoYXJhY3RlclNldEVDSS5JU084ODU5XzggPSBuZXcgQ2hhcmFjdGVyU2V0RUNJKENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnMuSVNPODg1OV84LCAxMCwgJ0lTTy04ODU5LTgnLCAnSVNPODg1OTgnLCAnSVNPODg1OV84Jyk7CgkgICAgQ2hhcmFjdGVyU2V0RUNJLklTTzg4NTlfOSA9IG5ldyBDaGFyYWN0ZXJTZXRFQ0koQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVycy5JU084ODU5XzksIDExLCAnSVNPLTg4NTktOScsICdJU084ODU5OScsICdJU084ODU5XzknKTsKCSAgICBDaGFyYWN0ZXJTZXRFQ0kuSVNPODg1OV8xMCA9IG5ldyBDaGFyYWN0ZXJTZXRFQ0koQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVycy5JU084ODU5XzEwLCAxMiwgJ0lTTy04ODU5LTEwJywgJ0lTTzg4NTkxMCcsICdJU084ODU5XzEwJyk7CgkgICAgQ2hhcmFjdGVyU2V0RUNJLklTTzg4NTlfMTEgPSBuZXcgQ2hhcmFjdGVyU2V0RUNJKENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnMuSVNPODg1OV8xMSwgMTMsICdJU08tODg1OS0xMScsICdJU084ODU5MTEnLCAnSVNPODg1OV8xMScpOwoJICAgIENoYXJhY3RlclNldEVDSS5JU084ODU5XzEzID0gbmV3IENoYXJhY3RlclNldEVDSShDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzLklTTzg4NTlfMTMsIDE1LCAnSVNPLTg4NTktMTMnLCAnSVNPODg1OTEzJywgJ0lTTzg4NTlfMTMnKTsKCSAgICBDaGFyYWN0ZXJTZXRFQ0kuSVNPODg1OV8xNCA9IG5ldyBDaGFyYWN0ZXJTZXRFQ0koQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVycy5JU084ODU5XzE0LCAxNiwgJ0lTTy04ODU5LTE0JywgJ0lTTzg4NTkxNCcsICdJU084ODU5XzE0Jyk7CgkgICAgQ2hhcmFjdGVyU2V0RUNJLklTTzg4NTlfMTUgPSBuZXcgQ2hhcmFjdGVyU2V0RUNJKENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnMuSVNPODg1OV8xNSwgMTcsICdJU08tODg1OS0xNScsICdJU084ODU5MTUnLCAnSVNPODg1OV8xNScpOwoJICAgIENoYXJhY3RlclNldEVDSS5JU084ODU5XzE2ID0gbmV3IENoYXJhY3RlclNldEVDSShDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzLklTTzg4NTlfMTYsIDE4LCAnSVNPLTg4NTktMTYnLCAnSVNPODg1OTE2JywgJ0lTTzg4NTlfMTYnKTsKCSAgICBDaGFyYWN0ZXJTZXRFQ0kuU0pJUyA9IG5ldyBDaGFyYWN0ZXJTZXRFQ0koQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVycy5TSklTLCAyMCwgJ1NKSVMnLCAnU2hpZnRfSklTJyk7CgkgICAgQ2hhcmFjdGVyU2V0RUNJLkNwMTI1MCA9IG5ldyBDaGFyYWN0ZXJTZXRFQ0koQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVycy5DcDEyNTAsIDIxLCAnQ3AxMjUwJywgJ3dpbmRvd3MtMTI1MCcpOwoJICAgIENoYXJhY3RlclNldEVDSS5DcDEyNTEgPSBuZXcgQ2hhcmFjdGVyU2V0RUNJKENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnMuQ3AxMjUxLCAyMiwgJ0NwMTI1MScsICd3aW5kb3dzLTEyNTEnKTsKCSAgICBDaGFyYWN0ZXJTZXRFQ0kuQ3AxMjUyID0gbmV3IENoYXJhY3RlclNldEVDSShDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzLkNwMTI1MiwgMjMsICdDcDEyNTInLCAnd2luZG93cy0xMjUyJyk7CgkgICAgQ2hhcmFjdGVyU2V0RUNJLkNwMTI1NiA9IG5ldyBDaGFyYWN0ZXJTZXRFQ0koQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVycy5DcDEyNTYsIDI0LCAnQ3AxMjU2JywgJ3dpbmRvd3MtMTI1NicpOwoJICAgIENoYXJhY3RlclNldEVDSS5Vbmljb2RlQmlnVW5tYXJrZWQgPSBuZXcgQ2hhcmFjdGVyU2V0RUNJKENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnMuVW5pY29kZUJpZ1VubWFya2VkLCAyNSwgJ1VuaWNvZGVCaWdVbm1hcmtlZCcsICdVVEYtMTZCRScsICdVbmljb2RlQmlnJyk7CgkgICAgQ2hhcmFjdGVyU2V0RUNJLlVURjggPSBuZXcgQ2hhcmFjdGVyU2V0RUNJKENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnMuVVRGOCwgMjYsICdVVEY4JywgJ1VURi04Jyk7CgkgICAgQ2hhcmFjdGVyU2V0RUNJLkFTQ0lJID0gbmV3IENoYXJhY3RlclNldEVDSShDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzLkFTQ0lJLCBJbnQzMkFycmF5LmZyb20oWzI3LCAxNzBdKSwgJ0FTQ0lJJywgJ1VTLUFTQ0lJJyk7CgkgICAgQ2hhcmFjdGVyU2V0RUNJLkJpZzUgPSBuZXcgQ2hhcmFjdGVyU2V0RUNJKENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnMuQmlnNSwgMjgsICdCaWc1Jyk7CgkgICAgQ2hhcmFjdGVyU2V0RUNJLkdCMTgwMzAgPSBuZXcgQ2hhcmFjdGVyU2V0RUNJKENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnMuR0IxODAzMCwgMjksICdHQjE4MDMwJywgJ0dCMjMxMicsICdFVUNfQ04nLCAnR0JLJyk7CgkgICAgQ2hhcmFjdGVyU2V0RUNJLkVVQ19LUiA9IG5ldyBDaGFyYWN0ZXJTZXRFQ0koQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVycy5FVUNfS1IsIDMwLCAnRVVDX0tSJywgJ0VVQy1LUicpOwoJICAgIHJldHVybiBDaGFyYWN0ZXJTZXRFQ0k7Cgl9KCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gQ2hhcmFjdGVyU2V0RUNJOwoKCX0pOwoKCXZhciBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbl8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJdmFyIF9fZXh0ZW5kcyA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7CgkgICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8CgkgICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8CgkgICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTsKCSAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgfTsKCSAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9CgkgICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTsKCSAgICB9OwoJfSkoKTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgoJLyoqCgkgKiBDdXN0b20gRXJyb3IgY2xhc3Mgb2YgdHlwZSBFeGNlcHRpb24uCgkgKi8KCXZhciBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHsKCSAgICBfX2V4dGVuZHMoVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24sIF9zdXBlcik7CgkgICAgZnVuY3Rpb24gVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oKSB7CgkgICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpczsKCSAgICB9CgkgICAgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24ua2luZCA9ICdVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbic7CgkgICAgcmV0dXJuIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uOwoJfShFeGNlcHRpb25fMS5kZWZhdWx0KSk7CglleHBvcnRzLmRlZmF1bHQgPSBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbjsKCgl9KTsKCgl2YXIgU3RyaW5nRW5jb2RpbmdfMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgoKCS8qKgoJICogUmVzcG9uc2libGUgZm9yIGVuL2RlY29kaW5nIHN0cmluZ3MuCgkgKi8KCXZhciBTdHJpbmdFbmNvZGluZyA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBTdHJpbmdFbmNvZGluZygpIHsKCSAgICB9CgkgICAgLyoqCgkgICAgICogRGVjb2RlcyBzb21lIFVpbnQ4QXJyYXkgdG8gYSBzdHJpbmcgZm9ybWF0LgoJICAgICAqLwoJICAgIFN0cmluZ0VuY29kaW5nLmRlY29kZSA9IGZ1bmN0aW9uIChieXRlcywgZW5jb2RpbmcpIHsKCSAgICAgICAgdmFyIGVuY29kaW5nTmFtZSA9IHRoaXMuZW5jb2RpbmdOYW1lKGVuY29kaW5nKTsKCSAgICAgICAgaWYgKHRoaXMuY3VzdG9tRGVjb2RlcikgewoJICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3VzdG9tRGVjb2RlcihieXRlcywgZW5jb2RpbmdOYW1lKTsKCSAgICAgICAgfQoJICAgICAgICAvLyBJbmNyZWFzZXMgYnJvd3NlciBzdXBwb3J0LgoJICAgICAgICBpZiAodHlwZW9mIFRleHREZWNvZGVyID09PSAndW5kZWZpbmVkJyB8fCB0aGlzLnNob3VsZERlY29kZU9uRmFsbGJhY2soZW5jb2RpbmdOYW1lKSkgewoJICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVjb2RlRmFsbGJhY2soYnl0ZXMsIGVuY29kaW5nTmFtZSk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIG5ldyBUZXh0RGVjb2RlcihlbmNvZGluZ05hbWUpLmRlY29kZShieXRlcyk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBDaGVja3MgaWYgdGhlIGRlY29kaW5nIG1ldGhvZCBzaG91bGQgdXNlIHRoZSBmYWxsYmFjayBmb3IgZGVjb2RpbmcKCSAgICAgKiBvbmNlIE5vZGUgVGV4dERlY29kZXIgZG9lc24ndCBzdXBwb3J0IGFsbCBlbmNvZGluZyBmb3JtYXRzLgoJICAgICAqCgkgICAgICogQHBhcmFtIGVuY29kaW5nTmFtZQoJICAgICAqLwoJICAgIFN0cmluZ0VuY29kaW5nLnNob3VsZERlY29kZU9uRmFsbGJhY2sgPSBmdW5jdGlvbiAoZW5jb2RpbmdOYW1lKSB7CgkgICAgICAgIHJldHVybiAhU3RyaW5nRW5jb2RpbmcuaXNCcm93c2VyKCkgJiYgZW5jb2RpbmdOYW1lID09PSAnSVNPLTg4NTktMSc7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBFbmNvZGVzIHNvbWUgc3RyaW5nIGludG8gYSBVaW50OEFycmF5LgoJICAgICAqLwoJICAgIFN0cmluZ0VuY29kaW5nLmVuY29kZSA9IGZ1bmN0aW9uIChzLCBlbmNvZGluZykgewoJICAgICAgICB2YXIgZW5jb2RpbmdOYW1lID0gdGhpcy5lbmNvZGluZ05hbWUoZW5jb2RpbmcpOwoJICAgICAgICBpZiAodGhpcy5jdXN0b21FbmNvZGVyKSB7CgkgICAgICAgICAgICByZXR1cm4gdGhpcy5jdXN0b21FbmNvZGVyKHMsIGVuY29kaW5nTmFtZSk7CgkgICAgICAgIH0KCSAgICAgICAgLy8gSW5jcmVhc2VzIGJyb3dzZXIgc3VwcG9ydC4KCSAgICAgICAgaWYgKHR5cGVvZiBUZXh0RW5jb2RlciA9PT0gJ3VuZGVmaW5lZCcpIHsKCSAgICAgICAgICAgIHJldHVybiB0aGlzLmVuY29kZUZhbGxiYWNrKHMpOwoJICAgICAgICB9CgkgICAgICAgIC8vIFRleHRFbmNvZGVyIG9ubHkgZW5jb2RlcyB0byBVVEY4IGJ5IGRlZmF1bHQgYXMgc3BlY2lmaWVkIGJ5IGVuY29kaW5nLnNwZWMud2hhdHdnLm9yZwoJICAgICAgICByZXR1cm4gbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKHMpOwoJICAgIH07CgkgICAgU3RyaW5nRW5jb2RpbmcuaXNCcm93c2VyID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHt9LnRvU3RyaW5nLmNhbGwod2luZG93KSA9PT0gJ1tvYmplY3QgV2luZG93XScpOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogUmV0dXJucyB0aGUgc3RyaW5nIHZhbHVlIGZyb20gc29tZSBlbmNvZGluZyBjaGFyYWN0ZXIgc2V0LgoJICAgICAqLwoJICAgIFN0cmluZ0VuY29kaW5nLmVuY29kaW5nTmFtZSA9IGZ1bmN0aW9uIChlbmNvZGluZykgewoJICAgICAgICByZXR1cm4gdHlwZW9mIGVuY29kaW5nID09PSAnc3RyaW5nJwoJICAgICAgICAgICAgPyBlbmNvZGluZwoJICAgICAgICAgICAgOiBlbmNvZGluZy5nZXROYW1lKCk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBSZXR1cm5zIGNoYXJhY3RlciBzZXQgZnJvbSBzb21lIGVuY29kaW5nIGNoYXJhY3RlciBzZXQuCgkgICAgICovCgkgICAgU3RyaW5nRW5jb2RpbmcuZW5jb2RpbmdDaGFyYWN0ZXJTZXQgPSBmdW5jdGlvbiAoZW5jb2RpbmcpIHsKCSAgICAgICAgaWYgKGVuY29kaW5nIGluc3RhbmNlb2YgQ2hhcmFjdGVyU2V0RUNJXzEuZGVmYXVsdCkgewoJICAgICAgICAgICAgcmV0dXJuIGVuY29kaW5nOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBDaGFyYWN0ZXJTZXRFQ0lfMS5kZWZhdWx0LmdldENoYXJhY3RlclNldEVDSUJ5TmFtZShlbmNvZGluZyk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBSdW5zIGEgZmFsbGJhY2sgZm9yIHRoZSBuYXRpdmUgZGVjb2RpbmcgZnVuY2lvbi4KCSAgICAgKi8KCSAgICBTdHJpbmdFbmNvZGluZy5kZWNvZGVGYWxsYmFjayA9IGZ1bmN0aW9uIChieXRlcywgZW5jb2RpbmcpIHsKCSAgICAgICAgdmFyIGNoYXJhY3RlclNldCA9IHRoaXMuZW5jb2RpbmdDaGFyYWN0ZXJTZXQoZW5jb2RpbmcpOwoJICAgICAgICBpZiAoU3RyaW5nRW5jb2RpbmcuaXNEZWNvZGVGYWxsYmFja1N1cHBvcnRlZChjaGFyYWN0ZXJTZXQpKSB7CgkgICAgICAgICAgICB2YXIgcyA9ICcnOwoJICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aF8xID0gYnl0ZXMubGVuZ3RoOyBpIDwgbGVuZ3RoXzE7IGkrKykgewoJICAgICAgICAgICAgICAgIHZhciBoID0gYnl0ZXNbaV0udG9TdHJpbmcoMTYpOwoJICAgICAgICAgICAgICAgIGlmIChoLmxlbmd0aCA8IDIpIHsKCSAgICAgICAgICAgICAgICAgICAgaCA9ICcwJyArIGg7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIHMgKz0gJyUnICsgaDsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQocyk7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKGNoYXJhY3RlclNldC5lcXVhbHMoQ2hhcmFjdGVyU2V0RUNJXzEuZGVmYXVsdC5Vbmljb2RlQmlnVW5tYXJrZWQpKSB7CgkgICAgICAgICAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLCBuZXcgVWludDE2QXJyYXkoYnl0ZXMuYnVmZmVyKSk7CgkgICAgICAgIH0KCSAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uXzEuZGVmYXVsdCgiRW5jb2RpbmcgIiArIHRoaXMuZW5jb2RpbmdOYW1lKGVuY29kaW5nKSArICIgbm90IHN1cHBvcnRlZCBieSBmYWxsYmFjay4iKTsKCSAgICB9OwoJICAgIFN0cmluZ0VuY29kaW5nLmlzRGVjb2RlRmFsbGJhY2tTdXBwb3J0ZWQgPSBmdW5jdGlvbiAoY2hhcmFjdGVyU2V0KSB7CgkgICAgICAgIHJldHVybiBjaGFyYWN0ZXJTZXQuZXF1YWxzKENoYXJhY3RlclNldEVDSV8xLmRlZmF1bHQuVVRGOCkgfHwKCSAgICAgICAgICAgIGNoYXJhY3RlclNldC5lcXVhbHMoQ2hhcmFjdGVyU2V0RUNJXzEuZGVmYXVsdC5JU084ODU5XzEpIHx8CgkgICAgICAgICAgICBjaGFyYWN0ZXJTZXQuZXF1YWxzKENoYXJhY3RlclNldEVDSV8xLmRlZmF1bHQuQVNDSUkpOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogUnVucyBhIGZhbGxiYWNrIGZvciB0aGUgbmF0aXZlIGVuY29kaW5nIGZ1bmNpb24uCgkgICAgICoKCSAgICAgKiBAc2VlIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8xNzE5Mjg0NS80MzY3NjgzCgkgICAgICovCgkgICAgU3RyaW5nRW5jb2RpbmcuZW5jb2RlRmFsbGJhY2sgPSBmdW5jdGlvbiAocykgewoJICAgICAgICB2YXIgZW5jb2RlZFVSSXN0cmluZyA9IGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KHMpKSk7CgkgICAgICAgIHZhciBjaGFyTGlzdCA9IGVuY29kZWRVUklzdHJpbmcuc3BsaXQoJycpOwoJICAgICAgICB2YXIgdWludEFycmF5ID0gW107CgkgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hhckxpc3QubGVuZ3RoOyBpKyspIHsKCSAgICAgICAgICAgIHVpbnRBcnJheS5wdXNoKGNoYXJMaXN0W2ldLmNoYXJDb2RlQXQoMCkpOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBuZXcgVWludDhBcnJheSh1aW50QXJyYXkpOwoJICAgIH07CgkgICAgcmV0dXJuIFN0cmluZ0VuY29kaW5nOwoJfSgpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IFN0cmluZ0VuY29kaW5nOwoKCX0pOwoKCXZhciBTdHJpbmdVdGlsc18xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJLyoKCSAqIENvcHlyaWdodCAoQykgMjAxMCBaWGluZyBhdXRob3JzCgkgKgoJICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSAqCgkgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJICoKCSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJICovCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJLypuYW1lc3BhY2UgY29tLmdvb2dsZS56eGluZy5jb21tb24geyovCgkvKmltcG9ydCBqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXQ7Ki8KCS8qaW1wb3J0IGphdmEudXRpbC5NYXA7Ki8KCgoKCS8qKgoJICogQ29tbW9uIHN0cmluZy1yZWxhdGVkIGZ1bmN0aW9ucy4KCSAqCgkgKiBAYXV0aG9yIFNlYW4gT3dlbgoJICogQGF1dGhvciBBbGV4IER1cHJlCgkgKi8KCXZhciBTdHJpbmdVdGlscyA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBTdHJpbmdVdGlscygpIHsKCSAgICB9CgkgICAgLy8gU0hJRlRfSklTLmVxdWFsc0lnbm9yZUNhc2UoUExBVEZPUk1fREVGQVVMVF9FTkNPRElORykgfHwKCSAgICAvLyBFVUNfSlAuZXF1YWxzSWdub3JlQ2FzZShQTEFURk9STV9ERUZBVUxUX0VOQ09ESU5HKTsKCSAgICBTdHJpbmdVdGlscy5jYXN0QXNOb25VdGY4Q2hhciA9IGZ1bmN0aW9uIChjb2RlLCBlbmNvZGluZykgewoJICAgICAgICBpZiAoZW5jb2RpbmcgPT09IHZvaWQgMCkgeyBlbmNvZGluZyA9IG51bGw7IH0KCSAgICAgICAgLy8gSVNPIDg4NTktMSBpcyB0aGUgSmF2YSBkZWZhdWx0IGFzIFVURi04IGlzIEphdmFTY3JpcHRzCgkgICAgICAgIC8vIHlvdSBjYW4gc2VlIHRoaXMgbWV0aG9kIGFzIGEgSmF2YSB2ZXJzaW9uIG9mIFN0cmluZy5mcm9tQ2hhckNvZGUKCSAgICAgICAgdmFyIGUgPSBlbmNvZGluZyA/IGVuY29kaW5nLmdldE5hbWUoKSA6IHRoaXMuSVNPODg1OTE7CgkgICAgICAgIC8vIHVzZSBwYXNzZWQgZm9ybWF0IChmcm9tQ2hhckNvZGUgd2lsbCByZXR1cm4gVVRGOCBlbmNvZGluZykKCSAgICAgICAgcmV0dXJuIFN0cmluZ0VuY29kaW5nXzEuZGVmYXVsdC5kZWNvZGUobmV3IFVpbnQ4QXJyYXkoW2NvZGVdKSwgZSk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcGFyYW0gYnl0ZXMgYnl0ZXMgZW5jb2RpbmcgYSBzdHJpbmcsIHdob3NlIGVuY29kaW5nIHNob3VsZCBiZSBndWVzc2VkCgkgICAgICogQHBhcmFtIGhpbnRzIGRlY29kZSBoaW50cyBpZiBhcHBsaWNhYmxlCgkgICAgICogQHJldHVybiBuYW1lIG9mIGd1ZXNzZWQgZW5jb2Rpbmc7IGF0IHRoZSBtb21lbnQgd2lsbCBvbmx5IGd1ZXNzIG9uZSBvZjoKCSAgICAgKiAge0BsaW5rICNTSElGVF9KSVN9LCB7QGxpbmsgI1VURjh9LCB7QGxpbmsgI0lTTzg4NTkxfSwgb3IgdGhlIHBsYXRmb3JtCgkgICAgICogIGRlZmF1bHQgZW5jb2RpbmcgaWYgbm9uZSBvZiB0aGVzZSBjYW4gcG9zc2libHkgYmUgY29ycmVjdAoJICAgICAqLwoJICAgIFN0cmluZ1V0aWxzLmd1ZXNzRW5jb2RpbmcgPSBmdW5jdGlvbiAoYnl0ZXMsIGhpbnRzKSB7CgkgICAgICAgIGlmIChoaW50cyAhPT0gbnVsbCAmJiBoaW50cyAhPT0gdW5kZWZpbmVkICYmIHVuZGVmaW5lZCAhPT0gaGludHMuZ2V0KERlY29kZUhpbnRUeXBlXzEuZGVmYXVsdC5DSEFSQUNURVJfU0VUKSkgewoJICAgICAgICAgICAgcmV0dXJuIGhpbnRzLmdldChEZWNvZGVIaW50VHlwZV8xLmRlZmF1bHQuQ0hBUkFDVEVSX1NFVCkudG9TdHJpbmcoKTsKCSAgICAgICAgfQoJICAgICAgICAvLyBGb3Igbm93LCBtZXJlbHkgdHJpZXMgdG8gZGlzdGluZ3Vpc2ggSVNPLTg4NTktMSwgVVRGLTggYW5kIFNoaWZ0X0pJUywKCSAgICAgICAgLy8gd2hpY2ggc2hvdWxkIGJlIGJ5IGZhciB0aGUgbW9zdCBjb21tb24gZW5jb2RpbmdzLgoJICAgICAgICB2YXIgbGVuZ3RoID0gYnl0ZXMubGVuZ3RoOwoJICAgICAgICB2YXIgY2FuQmVJU084ODU5MSA9IHRydWU7CgkgICAgICAgIHZhciBjYW5CZVNoaWZ0SklTID0gdHJ1ZTsKCSAgICAgICAgdmFyIGNhbkJlVVRGOCA9IHRydWU7CgkgICAgICAgIHZhciB1dGY4Qnl0ZXNMZWZ0ID0gMDsKCSAgICAgICAgLy8gaW50IHV0ZjhMb3dDaGFycyA9IDAKCSAgICAgICAgdmFyIHV0ZjJCeXRlc0NoYXJzID0gMDsKCSAgICAgICAgdmFyIHV0ZjNCeXRlc0NoYXJzID0gMDsKCSAgICAgICAgdmFyIHV0ZjRCeXRlc0NoYXJzID0gMDsKCSAgICAgICAgdmFyIHNqaXNCeXRlc0xlZnQgPSAwOwoJICAgICAgICAvLyBpbnQgc2ppc0xvd0NoYXJzID0gMAoJICAgICAgICB2YXIgc2ppc0thdGFrYW5hQ2hhcnMgPSAwOwoJICAgICAgICAvLyBpbnQgc2ppc0RvdWJsZUJ5dGVzQ2hhcnMgPSAwCgkgICAgICAgIHZhciBzamlzQ3VyS2F0YWthbmFXb3JkTGVuZ3RoID0gMDsKCSAgICAgICAgdmFyIHNqaXNDdXJEb3VibGVCeXRlc1dvcmRMZW5ndGggPSAwOwoJICAgICAgICB2YXIgc2ppc01heEthdGFrYW5hV29yZExlbmd0aCA9IDA7CgkgICAgICAgIHZhciBzamlzTWF4RG91YmxlQnl0ZXNXb3JkTGVuZ3RoID0gMDsKCSAgICAgICAgLy8gaW50IGlzb0xvd0NoYXJzID0gMAoJICAgICAgICAvLyBpbnQgaXNvSGlnaENoYXJzID0gMAoJICAgICAgICB2YXIgaXNvSGlnaE90aGVyID0gMDsKCSAgICAgICAgdmFyIHV0Zjhib20gPSBieXRlcy5sZW5ndGggPiAzICYmCgkgICAgICAgICAgICBieXRlc1swXSA9PT0gLyooYnl0ZSkgKi8gMHhFRiAmJgoJICAgICAgICAgICAgYnl0ZXNbMV0gPT09IC8qKGJ5dGUpICovIDB4QkIgJiYKCSAgICAgICAgICAgIGJ5dGVzWzJdID09PSAvKihieXRlKSAqLyAweEJGOwoJICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aCAmJiAoY2FuQmVJU084ODU5MSB8fCBjYW5CZVNoaWZ0SklTIHx8IGNhbkJlVVRGOCk7IGkrKykgewoJICAgICAgICAgICAgdmFyIHZhbHVlID0gYnl0ZXNbaV0gJiAweEZGOwoJICAgICAgICAgICAgLy8gVVRGLTggc3R1ZmYKCSAgICAgICAgICAgIGlmIChjYW5CZVVURjgpIHsKCSAgICAgICAgICAgICAgICBpZiAodXRmOEJ5dGVzTGVmdCA+IDApIHsKCSAgICAgICAgICAgICAgICAgICAgaWYgKCh2YWx1ZSAmIDB4ODApID09PSAwKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBjYW5CZVVURjggPSBmYWxzZTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHV0ZjhCeXRlc0xlZnQtLTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBlbHNlIGlmICgodmFsdWUgJiAweDgwKSAhPT0gMCkgewoJICAgICAgICAgICAgICAgICAgICBpZiAoKHZhbHVlICYgMHg0MCkgPT09IDApIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIGNhbkJlVVRGOCA9IGZhbHNlOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgICAgICAgICAgdXRmOEJ5dGVzTGVmdCsrOwoJICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh2YWx1ZSAmIDB4MjApID09PSAwKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRmMkJ5dGVzQ2hhcnMrKzsKCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0ZjhCeXRlc0xlZnQrKzsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHZhbHVlICYgMHgxMCkgPT09IDApIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRmM0J5dGVzQ2hhcnMrKzsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0ZjhCeXRlc0xlZnQrKzsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh2YWx1ZSAmIDB4MDgpID09PSAwKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGY0Qnl0ZXNDaGFycysrOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuQmVVVEY4ID0gZmFsc2U7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB9IC8vIGVsc2UgewoJICAgICAgICAgICAgICAgIC8vIHV0ZjhMb3dDaGFycysrCgkgICAgICAgICAgICAgICAgLy8gfQoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgLy8gSVNPLTg4NTktMSBzdHVmZgoJICAgICAgICAgICAgaWYgKGNhbkJlSVNPODg1OTEpIHsKCSAgICAgICAgICAgICAgICBpZiAodmFsdWUgPiAweDdGICYmIHZhbHVlIDwgMHhBMCkgewoJICAgICAgICAgICAgICAgICAgICBjYW5CZUlTTzg4NTkxID0gZmFsc2U7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlID4gMHg5RikgewoJICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgPCAweEMwIHx8IHZhbHVlID09PSAweEQ3IHx8IHZhbHVlID09PSAweEY3KSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBpc29IaWdoT3RoZXIrKzsKCSAgICAgICAgICAgICAgICAgICAgfSAvLyBlbHNlIHsKCSAgICAgICAgICAgICAgICAgICAgLy8gaXNvSGlnaENoYXJzKysKCSAgICAgICAgICAgICAgICAgICAgLy8gfQoJICAgICAgICAgICAgICAgIH0gLy8gZWxzZSB7CgkgICAgICAgICAgICAgICAgLy8gaXNvTG93Q2hhcnMrKwoJICAgICAgICAgICAgICAgIC8vIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIC8vIFNoaWZ0X0pJUyBzdHVmZgoJICAgICAgICAgICAgaWYgKGNhbkJlU2hpZnRKSVMpIHsKCSAgICAgICAgICAgICAgICBpZiAoc2ppc0J5dGVzTGVmdCA+IDApIHsKCSAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlIDwgMHg0MCB8fCB2YWx1ZSA9PT0gMHg3RiB8fCB2YWx1ZSA+IDB4RkMpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIGNhbkJlU2hpZnRKSVMgPSBmYWxzZTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHNqaXNCeXRlc0xlZnQtLTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PT0gMHg4MCB8fCB2YWx1ZSA9PT0gMHhBMCB8fCB2YWx1ZSA+IDB4RUYpIHsKCSAgICAgICAgICAgICAgICAgICAgY2FuQmVTaGlmdEpJUyA9IGZhbHNlOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSA+IDB4QTAgJiYgdmFsdWUgPCAweEUwKSB7CgkgICAgICAgICAgICAgICAgICAgIHNqaXNLYXRha2FuYUNoYXJzKys7CgkgICAgICAgICAgICAgICAgICAgIHNqaXNDdXJEb3VibGVCeXRlc1dvcmRMZW5ndGggPSAwOwoJICAgICAgICAgICAgICAgICAgICBzamlzQ3VyS2F0YWthbmFXb3JkTGVuZ3RoKys7CgkgICAgICAgICAgICAgICAgICAgIGlmIChzamlzQ3VyS2F0YWthbmFXb3JkTGVuZ3RoID4gc2ppc01heEthdGFrYW5hV29yZExlbmd0aCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgc2ppc01heEthdGFrYW5hV29yZExlbmd0aCA9IHNqaXNDdXJLYXRha2FuYVdvcmRMZW5ndGg7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPiAweDdGKSB7CgkgICAgICAgICAgICAgICAgICAgIHNqaXNCeXRlc0xlZnQrKzsKCSAgICAgICAgICAgICAgICAgICAgLy8gc2ppc0RvdWJsZUJ5dGVzQ2hhcnMrKwoJICAgICAgICAgICAgICAgICAgICBzamlzQ3VyS2F0YWthbmFXb3JkTGVuZ3RoID0gMDsKCSAgICAgICAgICAgICAgICAgICAgc2ppc0N1ckRvdWJsZUJ5dGVzV29yZExlbmd0aCsrOwoJICAgICAgICAgICAgICAgICAgICBpZiAoc2ppc0N1ckRvdWJsZUJ5dGVzV29yZExlbmd0aCA+IHNqaXNNYXhEb3VibGVCeXRlc1dvcmRMZW5ndGgpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHNqaXNNYXhEb3VibGVCeXRlc1dvcmRMZW5ndGggPSBzamlzQ3VyRG91YmxlQnl0ZXNXb3JkTGVuZ3RoOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgICAgICAvLyBzamlzTG93Q2hhcnMrKwoJICAgICAgICAgICAgICAgICAgICBzamlzQ3VyS2F0YWthbmFXb3JkTGVuZ3RoID0gMDsKCSAgICAgICAgICAgICAgICAgICAgc2ppc0N1ckRvdWJsZUJ5dGVzV29yZExlbmd0aCA9IDA7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGlmIChjYW5CZVVURjggJiYgdXRmOEJ5dGVzTGVmdCA+IDApIHsKCSAgICAgICAgICAgIGNhbkJlVVRGOCA9IGZhbHNlOwoJICAgICAgICB9CgkgICAgICAgIGlmIChjYW5CZVNoaWZ0SklTICYmIHNqaXNCeXRlc0xlZnQgPiAwKSB7CgkgICAgICAgICAgICBjYW5CZVNoaWZ0SklTID0gZmFsc2U7CgkgICAgICAgIH0KCSAgICAgICAgLy8gRWFzeSAtLSBpZiB0aGVyZSBpcyBCT00gb3IgYXQgbGVhc3QgMSB2YWxpZCBub3Qtc2luZ2xlIGJ5dGUgY2hhcmFjdGVyIChhbmQgbm8gZXZpZGVuY2UgaXQgY2FuJ3QgYmUgVVRGLTgpLCBkb25lCgkgICAgICAgIGlmIChjYW5CZVVURjggJiYgKHV0Zjhib20gfHwgdXRmMkJ5dGVzQ2hhcnMgKyB1dGYzQnl0ZXNDaGFycyArIHV0ZjRCeXRlc0NoYXJzID4gMCkpIHsKCSAgICAgICAgICAgIHJldHVybiBTdHJpbmdVdGlscy5VVEY4OwoJICAgICAgICB9CgkgICAgICAgIC8vIEVhc3kgLS0gaWYgYXNzdW1pbmcgU2hpZnRfSklTIG9yIGF0IGxlYXN0IDMgdmFsaWQgY29uc2VjdXRpdmUgbm90LWFzY2lpIGNoYXJhY3RlcnMgKGFuZCBubyBldmlkZW5jZSBpdCBjYW4ndCBiZSksIGRvbmUKCSAgICAgICAgaWYgKGNhbkJlU2hpZnRKSVMgJiYgKFN0cmluZ1V0aWxzLkFTU1VNRV9TSElGVF9KSVMgfHwgc2ppc01heEthdGFrYW5hV29yZExlbmd0aCA+PSAzIHx8IHNqaXNNYXhEb3VibGVCeXRlc1dvcmRMZW5ndGggPj0gMykpIHsKCSAgICAgICAgICAgIHJldHVybiBTdHJpbmdVdGlscy5TSElGVF9KSVM7CgkgICAgICAgIH0KCSAgICAgICAgLy8gRGlzdGluZ3Vpc2hpbmcgU2hpZnRfSklTIGFuZCBJU08tODg1OS0xIGNhbiBiZSBhIGxpdHRsZSB0b3VnaCBmb3Igc2hvcnQgd29yZHMuIFRoZSBjcnVkZSBoZXVyaXN0aWMgaXM6CgkgICAgICAgIC8vIC0gSWYgd2Ugc2F3CgkgICAgICAgIC8vICAgLSBvbmx5IHR3byBjb25zZWN1dGl2ZSBrYXRha2FuYSBjaGFycyBpbiB0aGUgd2hvbGUgdGV4dCwgb3IKCSAgICAgICAgLy8gICAtIGF0IGxlYXN0IDEwJSBvZiBieXRlcyB0aGF0IGNvdWxkIGJlICJ1cHBlciIgbm90LWFscGhhbnVtZXJpYyBMYXRpbjEsCgkgICAgICAgIC8vIC0gdGhlbiB3ZSBjb25jbHVkZSBTaGlmdF9KSVMsIGVsc2UgSVNPLTg4NTktMQoJICAgICAgICBpZiAoY2FuQmVJU084ODU5MSAmJiBjYW5CZVNoaWZ0SklTKSB7CgkgICAgICAgICAgICByZXR1cm4gKHNqaXNNYXhLYXRha2FuYVdvcmRMZW5ndGggPT09IDIgJiYgc2ppc0thdGFrYW5hQ2hhcnMgPT09IDIpIHx8IGlzb0hpZ2hPdGhlciAqIDEwID49IGxlbmd0aAoJICAgICAgICAgICAgICAgID8gU3RyaW5nVXRpbHMuU0hJRlRfSklTIDogU3RyaW5nVXRpbHMuSVNPODg1OTE7CgkgICAgICAgIH0KCSAgICAgICAgLy8gT3RoZXJ3aXNlLCB0cnkgaW4gb3JkZXIgSVNPLTg4NTktMSwgU2hpZnQgSklTLCBVVEYtOCBhbmQgZmFsbCBiYWNrIHRvIGRlZmF1bHQgcGxhdGZvcm0gZW5jb2RpbmcKCSAgICAgICAgaWYgKGNhbkJlSVNPODg1OTEpIHsKCSAgICAgICAgICAgIHJldHVybiBTdHJpbmdVdGlscy5JU084ODU5MTsKCSAgICAgICAgfQoJICAgICAgICBpZiAoY2FuQmVTaGlmdEpJUykgewoJICAgICAgICAgICAgcmV0dXJuIFN0cmluZ1V0aWxzLlNISUZUX0pJUzsKCSAgICAgICAgfQoJICAgICAgICBpZiAoY2FuQmVVVEY4KSB7CgkgICAgICAgICAgICByZXR1cm4gU3RyaW5nVXRpbHMuVVRGODsKCSAgICAgICAgfQoJICAgICAgICAvLyBPdGhlcndpc2UsIHdlIHRha2UgYSB3aWxkIGd1ZXNzIHdpdGggcGxhdGZvcm0gZW5jb2RpbmcKCSAgICAgICAgcmV0dXJuIFN0cmluZ1V0aWxzLlBMQVRGT1JNX0RFRkFVTFRfRU5DT0RJTkc7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKgoJICAgICAqIEBzZWUgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzEzNDM5NzExLzQzNjc2ODMKCSAgICAgKgoJICAgICAqIEBwYXJhbSBhcHBlbmQgVGhlIG5ldyBzdHJpbmcgdG8gYXBwZW5kLgoJICAgICAqIEBwYXJhbSBhcmdzIEFyZ3VtZXRzIHZhbHVlcyB0byBiZSBmb3JtYXRlZC4KCSAgICAgKi8KCSAgICBTdHJpbmdVdGlscy5mb3JtYXQgPSBmdW5jdGlvbiAoYXBwZW5kKSB7CgkgICAgICAgIHZhciBhcmdzID0gW107CgkgICAgICAgIGZvciAodmFyIF9pID0gMTsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7CgkgICAgICAgICAgICBhcmdzW19pIC0gMV0gPSBhcmd1bWVudHNbX2ldOwoJICAgICAgICB9CgkgICAgICAgIHZhciBpID0gLTE7CgkgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKGV4cCwgcDAsIHAxLCBwMiwgcDMsIHA0KSB7CgkgICAgICAgICAgICBpZiAoZXhwID09PSAnJSUnKQoJICAgICAgICAgICAgICAgIHJldHVybiAnJSc7CgkgICAgICAgICAgICBpZiAoYXJnc1srK2ldID09PSB1bmRlZmluZWQpCgkgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKCSAgICAgICAgICAgIGV4cCA9IHAyID8gcGFyc2VJbnQocDIuc3Vic3RyKDEpKSA6IHVuZGVmaW5lZDsKCSAgICAgICAgICAgIHZhciBiYXNlID0gcDMgPyBwYXJzZUludChwMy5zdWJzdHIoMSkpIDogdW5kZWZpbmVkOwoJICAgICAgICAgICAgdmFyIHZhbDsKCSAgICAgICAgICAgIHN3aXRjaCAocDQpIHsKCSAgICAgICAgICAgICAgICBjYXNlICdzJzoKCSAgICAgICAgICAgICAgICAgICAgdmFsID0gYXJnc1tpXTsKCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgY2FzZSAnYyc6CgkgICAgICAgICAgICAgICAgICAgIHZhbCA9IGFyZ3NbaV1bMF07CgkgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgIGNhc2UgJ2YnOgoJICAgICAgICAgICAgICAgICAgICB2YWwgPSBwYXJzZUZsb2F0KGFyZ3NbaV0pLnRvRml4ZWQoZXhwKTsKCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgY2FzZSAncCc6CgkgICAgICAgICAgICAgICAgICAgIHZhbCA9IHBhcnNlRmxvYXQoYXJnc1tpXSkudG9QcmVjaXNpb24oZXhwKTsKCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgY2FzZSAnZSc6CgkgICAgICAgICAgICAgICAgICAgIHZhbCA9IHBhcnNlRmxvYXQoYXJnc1tpXSkudG9FeHBvbmVudGlhbChleHApOwoJICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICBjYXNlICd4JzoKCSAgICAgICAgICAgICAgICAgICAgdmFsID0gcGFyc2VJbnQoYXJnc1tpXSkudG9TdHJpbmcoYmFzZSA/IGJhc2UgOiAxNik7CgkgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgIGNhc2UgJ2QnOgoJICAgICAgICAgICAgICAgICAgICB2YWwgPSBwYXJzZUZsb2F0KHBhcnNlSW50KGFyZ3NbaV0sIGJhc2UgPyBiYXNlIDogMTApLnRvUHJlY2lzaW9uKGV4cCkpLnRvRml4ZWQoMCk7CgkgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgdmFsID0gdHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgPyBKU09OLnN0cmluZ2lmeSh2YWwpIDogKCt2YWwpLnRvU3RyaW5nKGJhc2UpOwoJICAgICAgICAgICAgdmFyIHNpemUgPSBwYXJzZUludChwMSk7IC8qIHBhZGRpbmcgc2l6ZSAqLwoJICAgICAgICAgICAgdmFyIGNoID0gcDEgJiYgKHAxWzBdICsgJycpID09PSAnMCcgPyAnMCcgOiAnICc7IC8qIGlzbnVsbD8gKi8KCSAgICAgICAgICAgIHdoaWxlICh2YWwubGVuZ3RoIDwgc2l6ZSkKCSAgICAgICAgICAgICAgICB2YWwgPSBwMCAhPT0gdW5kZWZpbmVkID8gdmFsICsgY2ggOiBjaCArIHZhbDsgLyogaXNtaW51cz8gKi8KCSAgICAgICAgICAgIHJldHVybiB2YWw7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIHJlZ2V4ID0gLyUoLSk/KDA/WzAtOV0rKT8oWy5dWzAtOV0rKT8oWyNdWzAtOV0rKT8oW3NjZnBleGQlXSkvZzsKCSAgICAgICAgcmV0dXJuIGFwcGVuZC5yZXBsYWNlKHJlZ2V4LCBjYWxsYmFjayk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKgoJICAgICAqLwoJICAgIFN0cmluZ1V0aWxzLmdldEJ5dGVzID0gZnVuY3Rpb24gKHN0ciwgZW5jb2RpbmcpIHsKCSAgICAgICAgcmV0dXJuIFN0cmluZ0VuY29kaW5nXzEuZGVmYXVsdC5lbmNvZGUoc3RyLCBlbmNvZGluZyk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBSZXR1cm5zIHRoZSBjaGFyY29kZSBhdCB0aGUgc3BlY2lmaWVkIGluZGV4IG9yIGF0IGluZGV4IHplcm8uCgkgICAgICovCgkgICAgU3RyaW5nVXRpbHMuZ2V0Q2hhckNvZGUgPSBmdW5jdGlvbiAoc3RyLCBpbmRleCkgewoJICAgICAgICBpZiAoaW5kZXggPT09IHZvaWQgMCkgeyBpbmRleCA9IDA7IH0KCSAgICAgICAgcmV0dXJuIHN0ci5jaGFyQ29kZUF0KGluZGV4KTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIFJldHVybnMgY2hhciBmb3IgZ2l2ZW4gY2hhcmNvZGUKCSAgICAgKi8KCSAgICBTdHJpbmdVdGlscy5nZXRDaGFyQXQgPSBmdW5jdGlvbiAoY2hhckNvZGUpIHsKCSAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoY2hhckNvZGUpOwoJICAgIH07CgkgICAgU3RyaW5nVXRpbHMuU0hJRlRfSklTID0gQ2hhcmFjdGVyU2V0RUNJXzEuZGVmYXVsdC5TSklTLmdldE5hbWUoKTsgLy8gIlNKSVMiCgkgICAgU3RyaW5nVXRpbHMuR0IyMzEyID0gJ0dCMjMxMic7CgkgICAgU3RyaW5nVXRpbHMuSVNPODg1OTEgPSBDaGFyYWN0ZXJTZXRFQ0lfMS5kZWZhdWx0LklTTzg4NTlfMS5nZXROYW1lKCk7IC8vICJJU084ODU5XzEiCgkgICAgU3RyaW5nVXRpbHMuRVVDX0pQID0gJ0VVQ19KUCc7CgkgICAgU3RyaW5nVXRpbHMuVVRGOCA9IENoYXJhY3RlclNldEVDSV8xLmRlZmF1bHQuVVRGOC5nZXROYW1lKCk7IC8vICJVVEY4IgoJICAgIFN0cmluZ1V0aWxzLlBMQVRGT1JNX0RFRkFVTFRfRU5DT0RJTkcgPSBTdHJpbmdVdGlscy5VVEY4OyAvLyAiVVRGOCIvL0NoYXJzZXQuZGVmYXVsdENoYXJzZXQoKS5uYW1lKCkKCSAgICBTdHJpbmdVdGlscy5BU1NVTUVfU0hJRlRfSklTID0gZmFsc2U7CgkgICAgcmV0dXJuIFN0cmluZ1V0aWxzOwoJfSgpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IFN0cmluZ1V0aWxzOwoKCX0pOwoKCXZhciBTdHJpbmdCdWlsZGVyXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoKCXZhciBTdHJpbmdCdWlsZGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIGZ1bmN0aW9uIFN0cmluZ0J1aWxkZXIodmFsdWUpIHsKCSAgICAgICAgaWYgKHZhbHVlID09PSB2b2lkIDApIHsgdmFsdWUgPSAnJzsgfQoJICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7CgkgICAgfQoJICAgIFN0cmluZ0J1aWxkZXIucHJvdG90eXBlLmVuYWJsZURlY29kaW5nID0gZnVuY3Rpb24gKGVuY29kaW5nKSB7CgkgICAgICAgIHRoaXMuZW5jb2RpbmcgPSBlbmNvZGluZzsKCSAgICAgICAgcmV0dXJuIHRoaXM7CgkgICAgfTsKCSAgICBTdHJpbmdCdWlsZGVyLnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbiAocykgewoJICAgICAgICBpZiAodHlwZW9mIHMgPT09ICdzdHJpbmcnKSB7CgkgICAgICAgICAgICB0aGlzLnZhbHVlICs9IHMudG9TdHJpbmcoKTsKCSAgICAgICAgfQoJICAgICAgICBlbHNlIGlmICh0aGlzLmVuY29kaW5nKSB7CgkgICAgICAgICAgICAvLyB1c2UgcGFzc2VkIGZvcm1hdCAoZnJvbUNoYXJDb2RlIHdpbGwgcmV0dXJuIFVURjggZW5jb2RpbmcpCgkgICAgICAgICAgICB0aGlzLnZhbHVlICs9IFN0cmluZ1V0aWxzXzEuZGVmYXVsdC5jYXN0QXNOb25VdGY4Q2hhcihzLCB0aGlzLmVuY29kaW5nKTsKCSAgICAgICAgfQoJICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgIC8vIGNvcnJlY3RseSBjb252ZXJ0cyBmcm9tIFVURi04LCBidXQgbm90IG90aGVyIGVuY29kaW5ncwoJICAgICAgICAgICAgdGhpcy52YWx1ZSArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHMpOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiB0aGlzOwoJICAgIH07CgkgICAgU3RyaW5nQnVpbGRlci5wcm90b3R5cGUuYXBwZW5kQ2hhcnMgPSBmdW5jdGlvbiAoc3RyLCBvZmZzZXQsIGxlbikgewoJICAgICAgICBmb3IgKHZhciBpID0gb2Zmc2V0OyBvZmZzZXQgPCBvZmZzZXQgKyBsZW47IGkrKykgewoJICAgICAgICAgICAgdGhpcy5hcHBlbmQoc3RyW2ldKTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gdGhpczsKCSAgICB9OwoJICAgIFN0cmluZ0J1aWxkZXIucHJvdG90eXBlLmxlbmd0aCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUubGVuZ3RoOwoJICAgIH07CgkgICAgU3RyaW5nQnVpbGRlci5wcm90b3R5cGUuY2hhckF0ID0gZnVuY3Rpb24gKG4pIHsKCSAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUuY2hhckF0KG4pOwoJICAgIH07CgkgICAgU3RyaW5nQnVpbGRlci5wcm90b3R5cGUuZGVsZXRlQ2hhckF0ID0gZnVuY3Rpb24gKG4pIHsKCSAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUuc3Vic3RyKDAsIG4pICsgdGhpcy52YWx1ZS5zdWJzdHJpbmcobiArIDEpOwoJICAgIH07CgkgICAgU3RyaW5nQnVpbGRlci5wcm90b3R5cGUuc2V0Q2hhckF0ID0gZnVuY3Rpb24gKG4sIGMpIHsKCSAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUuc3Vic3RyKDAsIG4pICsgYyArIHRoaXMudmFsdWUuc3Vic3RyKG4gKyAxKTsKCSAgICB9OwoJICAgIFN0cmluZ0J1aWxkZXIucHJvdG90eXBlLnN1YnN0cmluZyA9IGZ1bmN0aW9uIChzdGFydCwgZW5kKSB7CgkgICAgICAgIHJldHVybiB0aGlzLnZhbHVlLnN1YnN0cmluZyhzdGFydCwgZW5kKTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEBub3RlIGhlbHBlciBtZXRob2QgZm9yIFJTUyBFeHBhbmRlZAoJICAgICAqLwoJICAgIFN0cmluZ0J1aWxkZXIucHJvdG90eXBlLnNldExlbmd0aFRvWmVybyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgdGhpcy52YWx1ZSA9ICcnOwoJICAgIH07CgkgICAgU3RyaW5nQnVpbGRlci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLnZhbHVlOwoJICAgIH07CgkgICAgU3RyaW5nQnVpbGRlci5wcm90b3R5cGUuaW5zZXJ0ID0gZnVuY3Rpb24gKG4sIGMpIHsKCSAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUuc3Vic3RyKDAsIG4pICsgYyArIHRoaXMudmFsdWUuc3Vic3RyKG4gKyBjLmxlbmd0aCk7CgkgICAgfTsKCSAgICByZXR1cm4gU3RyaW5nQnVpbGRlcjsKCX0oKSk7CglleHBvcnRzLmRlZmF1bHQgPSBTdHJpbmdCdWlsZGVyOwoKCX0pOwoKCXZhciBCaXRNYXRyaXhfMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCS8qCgkgKiBDb3B5cmlnaHQgMjAwNyBaWGluZyBhdXRob3JzCgkgKgoJICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSAqCgkgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJICoKCSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJICovCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJLypuYW1lc3BhY2UgY29tLmdvb2dsZS56eGluZy5jb21tb24geyovCgkvKmltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOyovCgoKCgoKCS8qKgoJICogPHA+UmVwcmVzZW50cyBhIDJEIG1hdHJpeCBvZiBiaXRzLiBJbiBmdW5jdGlvbiBhcmd1bWVudHMgYmVsb3csIGFuZCB0aHJvdWdob3V0IHRoZSBjb21tb24KCSAqIG1vZHVsZSwgeCBpcyB0aGUgY29sdW1uIHBvc2l0aW9uLCBhbmQgeSBpcyB0aGUgcm93IHBvc2l0aW9uLiBUaGUgb3JkZXJpbmcgaXMgYWx3YXlzIHgsIHkuCgkgKiBUaGUgb3JpZ2luIGlzIGF0IHRoZSB0b3AtbGVmdC48L3A+CgkgKgoJICogPHA+SW50ZXJuYWxseSB0aGUgYml0cyBhcmUgcmVwcmVzZW50ZWQgaW4gYSAxLUQgYXJyYXkgb2YgMzItYml0IGludHMuIEhvd2V2ZXIsIGVhY2ggcm93IGJlZ2lucwoJICogd2l0aCBhIG5ldyBpbnQuIFRoaXMgaXMgZG9uZSBpbnRlbnRpb25hbGx5IHNvIHRoYXQgd2UgY2FuIGNvcHkgb3V0IGEgcm93IGludG8gYSBCaXRBcnJheSB2ZXJ5CgkgKiBlZmZpY2llbnRseS48L3A+CgkgKgoJICogPHA+VGhlIG9yZGVyaW5nIG9mIGJpdHMgaXMgcm93LW1ham9yLiBXaXRoaW4gZWFjaCBpbnQsIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXRzIGFyZSB1c2VkIGZpcnN0LAoJICogbWVhbmluZyB0aGV5IHJlcHJlc2VudCBsb3dlciB4IHZhbHVlcy4gVGhpcyBpcyBjb21wYXRpYmxlIHdpdGggQml0QXJyYXkncyBpbXBsZW1lbnRhdGlvbi48L3A+CgkgKgoJICogQGF1dGhvciBTZWFuIE93ZW4KCSAqIEBhdXRob3IgZHN3aXRraW5AZ29vZ2xlLmNvbSAoRGFuaWVsIFN3aXRraW4pCgkgKi8KCXZhciBCaXRNYXRyaXggLyppbXBsZW1lbnRzIENsb25lYWJsZSovID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIC8qKgoJICAgICAqIENyZWF0ZXMgYW4gZW1wdHkgc3F1YXJlIHtAbGluayBCaXRNYXRyaXh9LgoJICAgICAqCgkgICAgICogQHBhcmFtIGRpbWVuc2lvbiBoZWlnaHQgYW5kIHdpZHRoCgkgICAgICovCgkgICAgLy8gcHVibGljIGNvbnN0cnVjdG9yKGRpbWVuc2lvbjogbnVtYmVyIC8qaW50Ki8pIHsKCSAgICAvLyAgIHRoaXMoZGltZW5zaW9uLCBkaW1lbnNpb24pCgkgICAgLy8gfQoJICAgIC8qKgoJICAgICAqIENyZWF0ZXMgYW4gZW1wdHkge0BsaW5rIEJpdE1hdHJpeH0uCgkgICAgICoKCSAgICAgKiBAcGFyYW0gd2lkdGggYml0IG1hdHJpeCB3aWR0aAoJICAgICAqIEBwYXJhbSBoZWlnaHQgYml0IG1hdHJpeCBoZWlnaHQKCSAgICAgKi8KCSAgICAvLyBwdWJsaWMgY29uc3RydWN0b3Iod2lkdGg6IG51bWJlciAvKmludCovLCBoZWlnaHQ6IG51bWJlciAvKmludCovKSB7CgkgICAgLy8gICBpZiAod2lkdGggPCAxIHx8IGhlaWdodCA8IDEpIHsKCSAgICAvLyAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiQm90aCBkaW1lbnNpb25zIG11c3QgYmUgZ3JlYXRlciB0aGFuIDAiKQoJICAgIC8vICAgfQoJICAgIC8vICAgdGhpcy53aWR0aCA9IHdpZHRoCgkgICAgLy8gICB0aGlzLmhlaWdodCA9IGhlaWdodAoJICAgIC8vICAgdGhpcy5yb3dTaXplID0gKHdpZHRoICsgMzEpIC8gMzIKCSAgICAvLyAgIGJpdHMgPSBuZXcgaW50W3Jvd1NpemUgKiBoZWlnaHRdOwoJICAgIC8vIH0KCSAgICBmdW5jdGlvbiBCaXRNYXRyaXgod2lkdGggLyppbnQqLywgaGVpZ2h0IC8qaW50Ki8sIHJvd1NpemUgLyppbnQqLywgYml0cykgewoJICAgICAgICB0aGlzLndpZHRoID0gd2lkdGg7CgkgICAgICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0OwoJICAgICAgICB0aGlzLnJvd1NpemUgPSByb3dTaXplOwoJICAgICAgICB0aGlzLmJpdHMgPSBiaXRzOwoJICAgICAgICBpZiAodW5kZWZpbmVkID09PSBoZWlnaHQgfHwgbnVsbCA9PT0gaGVpZ2h0KSB7CgkgICAgICAgICAgICBoZWlnaHQgPSB3aWR0aDsKCSAgICAgICAgfQoJICAgICAgICB0aGlzLmhlaWdodCA9IGhlaWdodDsKCSAgICAgICAgaWYgKHdpZHRoIDwgMSB8fCBoZWlnaHQgPCAxKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgnQm90aCBkaW1lbnNpb25zIG11c3QgYmUgZ3JlYXRlciB0aGFuIDAnKTsKCSAgICAgICAgfQoJICAgICAgICBpZiAodW5kZWZpbmVkID09PSByb3dTaXplIHx8IG51bGwgPT09IHJvd1NpemUpIHsKCSAgICAgICAgICAgIHJvd1NpemUgPSBNYXRoLmZsb29yKCh3aWR0aCArIDMxKSAvIDMyKTsKCSAgICAgICAgfQoJICAgICAgICB0aGlzLnJvd1NpemUgPSByb3dTaXplOwoJICAgICAgICBpZiAodW5kZWZpbmVkID09PSBiaXRzIHx8IG51bGwgPT09IGJpdHMpIHsKCSAgICAgICAgICAgIHRoaXMuYml0cyA9IG5ldyBJbnQzMkFycmF5KHRoaXMucm93U2l6ZSAqIHRoaXMuaGVpZ2h0KTsKCSAgICAgICAgfQoJICAgIH0KCSAgICAvKioKCSAgICAgKiBJbnRlcnByZXRzIGEgMkQgYXJyYXkgb2YgYm9vbGVhbnMgYXMgYSB7QGxpbmsgQml0TWF0cml4fSwgd2hlcmUgInRydWUiIG1lYW5zIGFuICJvbiIgYml0LgoJICAgICAqCgkgICAgICogQGZ1bmN0aW9uIHBhcnNlCgkgICAgICogQHBhcmFtIGltYWdlIGJpdHMgb2YgdGhlIGltYWdlLCBhcyBhIHJvdy1tYWpvciAyRCBhcnJheS4gRWxlbWVudHMgYXJlIGFycmF5cyByZXByZXNlbnRpbmcgcm93cwoJICAgICAqIEByZXR1cm4ge0BsaW5rIEJpdE1hdHJpeH0gcmVwcmVzZW50YXRpb24gb2YgaW1hZ2UKCSAgICAgKi8KCSAgICBCaXRNYXRyaXgucGFyc2VGcm9tQm9vbGVhbkFycmF5ID0gZnVuY3Rpb24gKGltYWdlKSB7CgkgICAgICAgIHZhciBoZWlnaHQgPSBpbWFnZS5sZW5ndGg7CgkgICAgICAgIHZhciB3aWR0aCA9IGltYWdlWzBdLmxlbmd0aDsKCSAgICAgICAgdmFyIGJpdHMgPSBuZXcgQml0TWF0cml4KHdpZHRoLCBoZWlnaHQpOwoJICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGhlaWdodDsgaSsrKSB7CgkgICAgICAgICAgICB2YXIgaW1hZ2VJID0gaW1hZ2VbaV07CgkgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHdpZHRoOyBqKyspIHsKCSAgICAgICAgICAgICAgICBpZiAoaW1hZ2VJW2pdKSB7CgkgICAgICAgICAgICAgICAgICAgIGJpdHMuc2V0KGosIGkpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gYml0czsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqCgkgICAgICogQGZ1bmN0aW9uIHBhcnNlCgkgICAgICogQHBhcmFtIHN0cmluZ1JlcHJlc2VudGF0aW9uCgkgICAgICogQHBhcmFtIHNldFN0cmluZwoJICAgICAqIEBwYXJhbSB1bnNldFN0cmluZwoJICAgICAqLwoJICAgIEJpdE1hdHJpeC5wYXJzZUZyb21TdHJpbmcgPSBmdW5jdGlvbiAoc3RyaW5nUmVwcmVzZW50YXRpb24sIHNldFN0cmluZywgdW5zZXRTdHJpbmcpIHsKCSAgICAgICAgaWYgKHN0cmluZ1JlcHJlc2VudGF0aW9uID09PSBudWxsKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgnc3RyaW5nUmVwcmVzZW50YXRpb24gY2Fubm90IGJlIG51bGwnKTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgYml0cyA9IG5ldyBBcnJheShzdHJpbmdSZXByZXNlbnRhdGlvbi5sZW5ndGgpOwoJICAgICAgICB2YXIgYml0c1BvcyA9IDA7CgkgICAgICAgIHZhciByb3dTdGFydFBvcyA9IDA7CgkgICAgICAgIHZhciByb3dMZW5ndGggPSAtMTsKCSAgICAgICAgdmFyIG5Sb3dzID0gMDsKCSAgICAgICAgdmFyIHBvcyA9IDA7CgkgICAgICAgIHdoaWxlIChwb3MgPCBzdHJpbmdSZXByZXNlbnRhdGlvbi5sZW5ndGgpIHsKCSAgICAgICAgICAgIGlmIChzdHJpbmdSZXByZXNlbnRhdGlvbi5jaGFyQXQocG9zKSA9PT0gJ1xuJyB8fAoJICAgICAgICAgICAgICAgIHN0cmluZ1JlcHJlc2VudGF0aW9uLmNoYXJBdChwb3MpID09PSAnXHInKSB7CgkgICAgICAgICAgICAgICAgaWYgKGJpdHNQb3MgPiByb3dTdGFydFBvcykgewoJICAgICAgICAgICAgICAgICAgICBpZiAocm93TGVuZ3RoID09PSAtMSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgcm93TGVuZ3RoID0gYml0c1BvcyAtIHJvd1N0YXJ0UG9zOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGJpdHNQb3MgLSByb3dTdGFydFBvcyAhPT0gcm93TGVuZ3RoKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgncm93IGxlbmd0aHMgZG8gbm90IG1hdGNoJyk7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgcm93U3RhcnRQb3MgPSBiaXRzUG9zOwoJICAgICAgICAgICAgICAgICAgICBuUm93cysrOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBwb3MrKzsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGVsc2UgaWYgKHN0cmluZ1JlcHJlc2VudGF0aW9uLnN1YnN0cmluZyhwb3MsIHBvcyArIHNldFN0cmluZy5sZW5ndGgpID09PSBzZXRTdHJpbmcpIHsKCSAgICAgICAgICAgICAgICBwb3MgKz0gc2V0U3RyaW5nLmxlbmd0aDsKCSAgICAgICAgICAgICAgICBiaXRzW2JpdHNQb3NdID0gdHJ1ZTsKCSAgICAgICAgICAgICAgICBiaXRzUG9zKys7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlIGlmIChzdHJpbmdSZXByZXNlbnRhdGlvbi5zdWJzdHJpbmcocG9zLCBwb3MgKyB1bnNldFN0cmluZy5sZW5ndGgpID09PSB1bnNldFN0cmluZykgewoJICAgICAgICAgICAgICAgIHBvcyArPSB1bnNldFN0cmluZy5sZW5ndGg7CgkgICAgICAgICAgICAgICAgYml0c1tiaXRzUG9zXSA9IGZhbHNlOwoJICAgICAgICAgICAgICAgIGJpdHNQb3MrKzsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCdpbGxlZ2FsIGNoYXJhY3RlciBlbmNvdW50ZXJlZDogJyArIHN0cmluZ1JlcHJlc2VudGF0aW9uLnN1YnN0cmluZyhwb3MpKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICAvLyBubyBFT0wgYXQgZW5kPwoJICAgICAgICBpZiAoYml0c1BvcyA+IHJvd1N0YXJ0UG9zKSB7CgkgICAgICAgICAgICBpZiAocm93TGVuZ3RoID09PSAtMSkgewoJICAgICAgICAgICAgICAgIHJvd0xlbmd0aCA9IGJpdHNQb3MgLSByb3dTdGFydFBvczsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGVsc2UgaWYgKGJpdHNQb3MgLSByb3dTdGFydFBvcyAhPT0gcm93TGVuZ3RoKSB7CgkgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoJ3JvdyBsZW5ndGhzIGRvIG5vdCBtYXRjaCcpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgblJvd3MrKzsKCSAgICAgICAgfQoJICAgICAgICB2YXIgbWF0cml4ID0gbmV3IEJpdE1hdHJpeChyb3dMZW5ndGgsIG5Sb3dzKTsKCSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiaXRzUG9zOyBpKyspIHsKCSAgICAgICAgICAgIGlmIChiaXRzW2ldKSB7CgkgICAgICAgICAgICAgICAgbWF0cml4LnNldChNYXRoLmZsb29yKGkgJSByb3dMZW5ndGgpLCBNYXRoLmZsb29yKGkgLyByb3dMZW5ndGgpKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gbWF0cml4OwoJICAgIH07CgkgICAgLyoqCgkgICAgICogPHA+R2V0cyB0aGUgcmVxdWVzdGVkIGJpdCwgd2hlcmUgdHJ1ZSBtZWFucyBibGFjay48L3A+CgkgICAgICoKCSAgICAgKiBAcGFyYW0geCBUaGUgaG9yaXpvbnRhbCBjb21wb25lbnQgKGkuZS4gd2hpY2ggY29sdW1uKQoJICAgICAqIEBwYXJhbSB5IFRoZSB2ZXJ0aWNhbCBjb21wb25lbnQgKGkuZS4gd2hpY2ggcm93KQoJICAgICAqIEByZXR1cm4gdmFsdWUgb2YgZ2l2ZW4gYml0IGluIG1hdHJpeAoJICAgICAqLwoJICAgIEJpdE1hdHJpeC5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKHggLyppbnQqLywgeSAvKmludCovKSB7CgkgICAgICAgIHZhciBvZmZzZXQgPSB5ICogdGhpcy5yb3dTaXplICsgTWF0aC5mbG9vcih4IC8gMzIpOwoJICAgICAgICByZXR1cm4gKCh0aGlzLmJpdHNbb2Zmc2V0XSA+Pj4gKHggJiAweDFmKSkgJiAxKSAhPT0gMDsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIDxwPlNldHMgdGhlIGdpdmVuIGJpdCB0byB0cnVlLjwvcD4KCSAgICAgKgoJICAgICAqIEBwYXJhbSB4IFRoZSBob3Jpem9udGFsIGNvbXBvbmVudCAoaS5lLiB3aGljaCBjb2x1bW4pCgkgICAgICogQHBhcmFtIHkgVGhlIHZlcnRpY2FsIGNvbXBvbmVudCAoaS5lLiB3aGljaCByb3cpCgkgICAgICovCgkgICAgQml0TWF0cml4LnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAoeCAvKmludCovLCB5IC8qaW50Ki8pIHsKCSAgICAgICAgdmFyIG9mZnNldCA9IHkgKiB0aGlzLnJvd1NpemUgKyBNYXRoLmZsb29yKHggLyAzMik7CgkgICAgICAgIHRoaXMuYml0c1tvZmZzZXRdIHw9ICgxIDw8ICh4ICYgMHgxZikpICYgMHhGRkZGRkZGRjsKCSAgICB9OwoJICAgIEJpdE1hdHJpeC5wcm90b3R5cGUudW5zZXQgPSBmdW5jdGlvbiAoeCAvKmludCovLCB5IC8qaW50Ki8pIHsKCSAgICAgICAgdmFyIG9mZnNldCA9IHkgKiB0aGlzLnJvd1NpemUgKyBNYXRoLmZsb29yKHggLyAzMik7CgkgICAgICAgIHRoaXMuYml0c1tvZmZzZXRdICY9IH4oKDEgPDwgKHggJiAweDFmKSkgJiAweEZGRkZGRkZGKTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIDxwPkZsaXBzIHRoZSBnaXZlbiBiaXQuPC9wPgoJICAgICAqCgkgICAgICogQHBhcmFtIHggVGhlIGhvcml6b250YWwgY29tcG9uZW50IChpLmUuIHdoaWNoIGNvbHVtbikKCSAgICAgKiBAcGFyYW0geSBUaGUgdmVydGljYWwgY29tcG9uZW50IChpLmUuIHdoaWNoIHJvdykKCSAgICAgKi8KCSAgICBCaXRNYXRyaXgucHJvdG90eXBlLmZsaXAgPSBmdW5jdGlvbiAoeCAvKmludCovLCB5IC8qaW50Ki8pIHsKCSAgICAgICAgdmFyIG9mZnNldCA9IHkgKiB0aGlzLnJvd1NpemUgKyBNYXRoLmZsb29yKHggLyAzMik7CgkgICAgICAgIHRoaXMuYml0c1tvZmZzZXRdIF49ICgoMSA8PCAoeCAmIDB4MWYpKSAmIDB4RkZGRkZGRkYpOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogRXhjbHVzaXZlLW9yIChYT1IpOiBGbGlwIHRoZSBiaXQgaW4gdGhpcyB7QGNvZGUgQml0TWF0cml4fSBpZiB0aGUgY29ycmVzcG9uZGluZwoJICAgICAqIG1hc2sgYml0IGlzIHNldC4KCSAgICAgKgoJICAgICAqIEBwYXJhbSBtYXNrIFhPUiBtYXNrCgkgICAgICovCgkgICAgQml0TWF0cml4LnByb3RvdHlwZS54b3IgPSBmdW5jdGlvbiAobWFzaykgewoJICAgICAgICBpZiAodGhpcy53aWR0aCAhPT0gbWFzay5nZXRXaWR0aCgpIHx8IHRoaXMuaGVpZ2h0ICE9PSBtYXNrLmdldEhlaWdodCgpCgkgICAgICAgICAgICB8fCB0aGlzLnJvd1NpemUgIT09IG1hc2suZ2V0Um93U2l6ZSgpKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgnaW5wdXQgbWF0cml4IGRpbWVuc2lvbnMgZG8gbm90IG1hdGNoJyk7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIHJvd0FycmF5ID0gbmV3IEJpdEFycmF5XzEuZGVmYXVsdChNYXRoLmZsb29yKHRoaXMud2lkdGggLyAzMikgKyAxKTsKCSAgICAgICAgdmFyIHJvd1NpemUgPSB0aGlzLnJvd1NpemU7CgkgICAgICAgIHZhciBiaXRzID0gdGhpcy5iaXRzOwoJICAgICAgICBmb3IgKHZhciB5ID0gMCwgaGVpZ2h0ID0gdGhpcy5oZWlnaHQ7IHkgPCBoZWlnaHQ7IHkrKykgewoJICAgICAgICAgICAgdmFyIG9mZnNldCA9IHkgKiByb3dTaXplOwoJICAgICAgICAgICAgdmFyIHJvdyA9IG1hc2suZ2V0Um93KHksIHJvd0FycmF5KS5nZXRCaXRBcnJheSgpOwoJICAgICAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCByb3dTaXplOyB4KyspIHsKCSAgICAgICAgICAgICAgICBiaXRzW29mZnNldCArIHhdIF49IHJvd1t4XTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgIH07CgkgICAgLyoqCgkgICAgICogQ2xlYXJzIGFsbCBiaXRzIChzZXRzIHRvIGZhbHNlKS4KCSAgICAgKi8KCSAgICBCaXRNYXRyaXgucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gKCkgewoJICAgICAgICB2YXIgYml0cyA9IHRoaXMuYml0czsKCSAgICAgICAgdmFyIG1heCA9IGJpdHMubGVuZ3RoOwoJICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1heDsgaSsrKSB7CgkgICAgICAgICAgICBiaXRzW2ldID0gMDsKCSAgICAgICAgfQoJICAgIH07CgkgICAgLyoqCgkgICAgICogPHA+U2V0cyBhIHNxdWFyZSByZWdpb24gb2YgdGhlIGJpdCBtYXRyaXggdG8gdHJ1ZS48L3A+CgkgICAgICoKCSAgICAgKiBAcGFyYW0gbGVmdCBUaGUgaG9yaXpvbnRhbCBwb3NpdGlvbiB0byBiZWdpbiBhdCAoaW5jbHVzaXZlKQoJICAgICAqIEBwYXJhbSB0b3AgVGhlIHZlcnRpY2FsIHBvc2l0aW9uIHRvIGJlZ2luIGF0IChpbmNsdXNpdmUpCgkgICAgICogQHBhcmFtIHdpZHRoIFRoZSB3aWR0aCBvZiB0aGUgcmVnaW9uCgkgICAgICogQHBhcmFtIGhlaWdodCBUaGUgaGVpZ2h0IG9mIHRoZSByZWdpb24KCSAgICAgKi8KCSAgICBCaXRNYXRyaXgucHJvdG90eXBlLnNldFJlZ2lvbiA9IGZ1bmN0aW9uIChsZWZ0IC8qaW50Ki8sIHRvcCAvKmludCovLCB3aWR0aCAvKmludCovLCBoZWlnaHQgLyppbnQqLykgewoJICAgICAgICBpZiAodG9wIDwgMCB8fCBsZWZ0IDwgMCkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoJ0xlZnQgYW5kIHRvcCBtdXN0IGJlIG5vbm5lZ2F0aXZlJyk7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKGhlaWdodCA8IDEgfHwgd2lkdGggPCAxKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgnSGVpZ2h0IGFuZCB3aWR0aCBtdXN0IGJlIGF0IGxlYXN0IDEnKTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgcmlnaHQgPSBsZWZ0ICsgd2lkdGg7CgkgICAgICAgIHZhciBib3R0b20gPSB0b3AgKyBoZWlnaHQ7CgkgICAgICAgIGlmIChib3R0b20gPiB0aGlzLmhlaWdodCB8fCByaWdodCA+IHRoaXMud2lkdGgpIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCdUaGUgcmVnaW9uIG11c3QgZml0IGluc2lkZSB0aGUgbWF0cml4Jyk7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIHJvd1NpemUgPSB0aGlzLnJvd1NpemU7CgkgICAgICAgIHZhciBiaXRzID0gdGhpcy5iaXRzOwoJICAgICAgICBmb3IgKHZhciB5ID0gdG9wOyB5IDwgYm90dG9tOyB5KyspIHsKCSAgICAgICAgICAgIHZhciBvZmZzZXQgPSB5ICogcm93U2l6ZTsKCSAgICAgICAgICAgIGZvciAodmFyIHggPSBsZWZ0OyB4IDwgcmlnaHQ7IHgrKykgewoJICAgICAgICAgICAgICAgIGJpdHNbb2Zmc2V0ICsgTWF0aC5mbG9vcih4IC8gMzIpXSB8PSAoKDEgPDwgKHggJiAweDFmKSkgJiAweEZGRkZGRkZGKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgIH07CgkgICAgLyoqCgkgICAgICogQSBmYXN0IG1ldGhvZCB0byByZXRyaWV2ZSBvbmUgcm93IG9mIGRhdGEgZnJvbSB0aGUgbWF0cml4IGFzIGEgQml0QXJyYXkuCgkgICAgICoKCSAgICAgKiBAcGFyYW0geSBUaGUgcm93IHRvIHJldHJpZXZlCgkgICAgICogQHBhcmFtIHJvdyBBbiBvcHRpb25hbCBjYWxsZXItYWxsb2NhdGVkIEJpdEFycmF5LCB3aWxsIGJlIGFsbG9jYXRlZCBpZiBudWxsIG9yIHRvbyBzbWFsbAoJICAgICAqIEByZXR1cm4gVGhlIHJlc3VsdGluZyBCaXRBcnJheSAtIHRoaXMgcmVmZXJlbmNlIHNob3VsZCBhbHdheXMgYmUgdXNlZCBldmVuIHdoZW4gcGFzc2luZwoJICAgICAqICAgICAgICAgeW91ciBvd24gcm93CgkgICAgICovCgkgICAgQml0TWF0cml4LnByb3RvdHlwZS5nZXRSb3cgPSBmdW5jdGlvbiAoeSAvKmludCovLCByb3cpIHsKCSAgICAgICAgaWYgKHJvdyA9PT0gbnVsbCB8fCByb3cgPT09IHVuZGVmaW5lZCB8fCByb3cuZ2V0U2l6ZSgpIDwgdGhpcy53aWR0aCkgewoJICAgICAgICAgICAgcm93ID0gbmV3IEJpdEFycmF5XzEuZGVmYXVsdCh0aGlzLndpZHRoKTsKCSAgICAgICAgfQoJICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgIHJvdy5jbGVhcigpOwoJICAgICAgICB9CgkgICAgICAgIHZhciByb3dTaXplID0gdGhpcy5yb3dTaXplOwoJICAgICAgICB2YXIgYml0cyA9IHRoaXMuYml0czsKCSAgICAgICAgdmFyIG9mZnNldCA9IHkgKiByb3dTaXplOwoJICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IHJvd1NpemU7IHgrKykgewoJICAgICAgICAgICAgcm93LnNldEJ1bGsoeCAqIDMyLCBiaXRzW29mZnNldCArIHhdKTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gcm93OwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQHBhcmFtIHkgcm93IHRvIHNldAoJICAgICAqIEBwYXJhbSByb3cge0BsaW5rIEJpdEFycmF5fSB0byBjb3B5IGZyb20KCSAgICAgKi8KCSAgICBCaXRNYXRyaXgucHJvdG90eXBlLnNldFJvdyA9IGZ1bmN0aW9uICh5IC8qaW50Ki8sIHJvdykgewoJICAgICAgICBTeXN0ZW1fMS5kZWZhdWx0LmFycmF5Y29weShyb3cuZ2V0Qml0QXJyYXkoKSwgMCwgdGhpcy5iaXRzLCB5ICogdGhpcy5yb3dTaXplLCB0aGlzLnJvd1NpemUpOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogTW9kaWZpZXMgdGhpcyB7QGNvZGUgQml0TWF0cml4fSB0byByZXByZXNlbnQgdGhlIHNhbWUgYnV0IHJvdGF0ZWQgMTgwIGRlZ3JlZXMKCSAgICAgKi8KCSAgICBCaXRNYXRyaXgucHJvdG90eXBlLnJvdGF0ZTE4MCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgdmFyIHdpZHRoID0gdGhpcy5nZXRXaWR0aCgpOwoJICAgICAgICB2YXIgaGVpZ2h0ID0gdGhpcy5nZXRIZWlnaHQoKTsKCSAgICAgICAgdmFyIHRvcFJvdyA9IG5ldyBCaXRBcnJheV8xLmRlZmF1bHQod2lkdGgpOwoJICAgICAgICB2YXIgYm90dG9tUm93ID0gbmV3IEJpdEFycmF5XzEuZGVmYXVsdCh3aWR0aCk7CgkgICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGhfMSA9IE1hdGguZmxvb3IoKGhlaWdodCArIDEpIC8gMik7IGkgPCBsZW5ndGhfMTsgaSsrKSB7CgkgICAgICAgICAgICB0b3BSb3cgPSB0aGlzLmdldFJvdyhpLCB0b3BSb3cpOwoJICAgICAgICAgICAgYm90dG9tUm93ID0gdGhpcy5nZXRSb3coaGVpZ2h0IC0gMSAtIGksIGJvdHRvbVJvdyk7CgkgICAgICAgICAgICB0b3BSb3cucmV2ZXJzZSgpOwoJICAgICAgICAgICAgYm90dG9tUm93LnJldmVyc2UoKTsKCSAgICAgICAgICAgIHRoaXMuc2V0Um93KGksIGJvdHRvbVJvdyk7CgkgICAgICAgICAgICB0aGlzLnNldFJvdyhoZWlnaHQgLSAxIC0gaSwgdG9wUm93KTsKCSAgICAgICAgfQoJICAgIH07CgkgICAgLyoqCgkgICAgICogVGhpcyBpcyB1c2VmdWwgaW4gZGV0ZWN0aW5nIHRoZSBlbmNsb3NpbmcgcmVjdGFuZ2xlIG9mIGEgJ3B1cmUnIGJhcmNvZGUuCgkgICAgICoKCSAgICAgKiBAcmV0dXJuIHtAY29kZSBsZWZ0LHRvcCx3aWR0aCxoZWlnaHR9IGVuY2xvc2luZyByZWN0YW5nbGUgb2YgYWxsIDEgYml0cywgb3IgbnVsbCBpZiBpdCBpcyBhbGwgd2hpdGUKCSAgICAgKi8KCSAgICBCaXRNYXRyaXgucHJvdG90eXBlLmdldEVuY2xvc2luZ1JlY3RhbmdsZSA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgdmFyIHdpZHRoID0gdGhpcy53aWR0aDsKCSAgICAgICAgdmFyIGhlaWdodCA9IHRoaXMuaGVpZ2h0OwoJICAgICAgICB2YXIgcm93U2l6ZSA9IHRoaXMucm93U2l6ZTsKCSAgICAgICAgdmFyIGJpdHMgPSB0aGlzLmJpdHM7CgkgICAgICAgIHZhciBsZWZ0ID0gd2lkdGg7CgkgICAgICAgIHZhciB0b3AgPSBoZWlnaHQ7CgkgICAgICAgIHZhciByaWdodCA9IC0xOwoJICAgICAgICB2YXIgYm90dG9tID0gLTE7CgkgICAgICAgIGZvciAodmFyIHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspIHsKCSAgICAgICAgICAgIGZvciAodmFyIHgzMiA9IDA7IHgzMiA8IHJvd1NpemU7IHgzMisrKSB7CgkgICAgICAgICAgICAgICAgdmFyIHRoZUJpdHMgPSBiaXRzW3kgKiByb3dTaXplICsgeDMyXTsKCSAgICAgICAgICAgICAgICBpZiAodGhlQml0cyAhPT0gMCkgewoJICAgICAgICAgICAgICAgICAgICBpZiAoeSA8IHRvcCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgdG9wID0geTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICBpZiAoeSA+IGJvdHRvbSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgYm90dG9tID0geTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICBpZiAoeDMyICogMzIgPCBsZWZ0KSB7CgkgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYml0ID0gMDsKCSAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgoKHRoZUJpdHMgPDwgKDMxIC0gYml0KSkgJiAweEZGRkZGRkZGKSA9PT0gMCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpdCsrOwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh4MzIgKiAzMiArIGJpdCkgPCBsZWZ0KSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdCA9IHgzMiAqIDMyICsgYml0OwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIGlmICh4MzIgKiAzMiArIDMxID4gcmlnaHQpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiaXQgPSAzMTsKCSAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgodGhlQml0cyA+Pj4gYml0KSA9PT0gMCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpdC0tOwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh4MzIgKiAzMiArIGJpdCkgPiByaWdodCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0ID0geDMyICogMzIgKyBiaXQ7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgaWYgKHJpZ2h0IDwgbGVmdCB8fCBib3R0b20gPCB0b3ApIHsKCSAgICAgICAgICAgIHJldHVybiBudWxsOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBJbnQzMkFycmF5LmZyb20oW2xlZnQsIHRvcCwgcmlnaHQgLSBsZWZ0ICsgMSwgYm90dG9tIC0gdG9wICsgMV0pOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogVGhpcyBpcyB1c2VmdWwgaW4gZGV0ZWN0aW5nIGEgY29ybmVyIG9mIGEgJ3B1cmUnIGJhcmNvZGUuCgkgICAgICoKCSAgICAgKiBAcmV0dXJuIHtAY29kZSB4LHl9IGNvb3JkaW5hdGUgb2YgdG9wLWxlZnQtbW9zdCAxIGJpdCwgb3IgbnVsbCBpZiBpdCBpcyBhbGwgd2hpdGUKCSAgICAgKi8KCSAgICBCaXRNYXRyaXgucHJvdG90eXBlLmdldFRvcExlZnRPbkJpdCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgdmFyIHJvd1NpemUgPSB0aGlzLnJvd1NpemU7CgkgICAgICAgIHZhciBiaXRzID0gdGhpcy5iaXRzOwoJICAgICAgICB2YXIgYml0c09mZnNldCA9IDA7CgkgICAgICAgIHdoaWxlIChiaXRzT2Zmc2V0IDwgYml0cy5sZW5ndGggJiYgYml0c1tiaXRzT2Zmc2V0XSA9PT0gMCkgewoJICAgICAgICAgICAgYml0c09mZnNldCsrOwoJICAgICAgICB9CgkgICAgICAgIGlmIChiaXRzT2Zmc2V0ID09PSBiaXRzLmxlbmd0aCkgewoJICAgICAgICAgICAgcmV0dXJuIG51bGw7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIHkgPSBiaXRzT2Zmc2V0IC8gcm93U2l6ZTsKCSAgICAgICAgdmFyIHggPSAoYml0c09mZnNldCAlIHJvd1NpemUpICogMzI7CgkgICAgICAgIHZhciB0aGVCaXRzID0gYml0c1tiaXRzT2Zmc2V0XTsKCSAgICAgICAgdmFyIGJpdCA9IDA7CgkgICAgICAgIHdoaWxlICgoKHRoZUJpdHMgPDwgKDMxIC0gYml0KSkgJiAweEZGRkZGRkZGKSA9PT0gMCkgewoJICAgICAgICAgICAgYml0Kys7CgkgICAgICAgIH0KCSAgICAgICAgeCArPSBiaXQ7CgkgICAgICAgIHJldHVybiBJbnQzMkFycmF5LmZyb20oW3gsIHldKTsKCSAgICB9OwoJICAgIEJpdE1hdHJpeC5wcm90b3R5cGUuZ2V0Qm90dG9tUmlnaHRPbkJpdCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgdmFyIHJvd1NpemUgPSB0aGlzLnJvd1NpemU7CgkgICAgICAgIHZhciBiaXRzID0gdGhpcy5iaXRzOwoJICAgICAgICB2YXIgYml0c09mZnNldCA9IGJpdHMubGVuZ3RoIC0gMTsKCSAgICAgICAgd2hpbGUgKGJpdHNPZmZzZXQgPj0gMCAmJiBiaXRzW2JpdHNPZmZzZXRdID09PSAwKSB7CgkgICAgICAgICAgICBiaXRzT2Zmc2V0LS07CgkgICAgICAgIH0KCSAgICAgICAgaWYgKGJpdHNPZmZzZXQgPCAwKSB7CgkgICAgICAgICAgICByZXR1cm4gbnVsbDsKCSAgICAgICAgfQoJICAgICAgICB2YXIgeSA9IE1hdGguZmxvb3IoYml0c09mZnNldCAvIHJvd1NpemUpOwoJICAgICAgICB2YXIgeCA9IE1hdGguZmxvb3IoYml0c09mZnNldCAlIHJvd1NpemUpICogMzI7CgkgICAgICAgIHZhciB0aGVCaXRzID0gYml0c1tiaXRzT2Zmc2V0XTsKCSAgICAgICAgdmFyIGJpdCA9IDMxOwoJICAgICAgICB3aGlsZSAoKHRoZUJpdHMgPj4+IGJpdCkgPT09IDApIHsKCSAgICAgICAgICAgIGJpdC0tOwoJICAgICAgICB9CgkgICAgICAgIHggKz0gYml0OwoJICAgICAgICByZXR1cm4gSW50MzJBcnJheS5mcm9tKFt4LCB5XSk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcmV0dXJuIFRoZSB3aWR0aCBvZiB0aGUgbWF0cml4CgkgICAgICovCgkgICAgQml0TWF0cml4LnByb3RvdHlwZS5nZXRXaWR0aCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMud2lkdGg7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcmV0dXJuIFRoZSBoZWlnaHQgb2YgdGhlIG1hdHJpeAoJICAgICAqLwoJICAgIEJpdE1hdHJpeC5wcm90b3R5cGUuZ2V0SGVpZ2h0ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5oZWlnaHQ7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcmV0dXJuIFRoZSByb3cgc2l6ZSBvZiB0aGUgbWF0cml4CgkgICAgICovCgkgICAgQml0TWF0cml4LnByb3RvdHlwZS5nZXRSb3dTaXplID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5yb3dTaXplOwoJICAgIH07CgkgICAgLypAT3ZlcnJpZGUqLwoJICAgIEJpdE1hdHJpeC5wcm90b3R5cGUuZXF1YWxzID0gZnVuY3Rpb24gKG8pIHsKCSAgICAgICAgaWYgKCEobyBpbnN0YW5jZW9mIEJpdE1hdHJpeCkpIHsKCSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgb3RoZXIgPSBvOwoJICAgICAgICByZXR1cm4gdGhpcy53aWR0aCA9PT0gb3RoZXIud2lkdGggJiYgdGhpcy5oZWlnaHQgPT09IG90aGVyLmhlaWdodCAmJiB0aGlzLnJvd1NpemUgPT09IG90aGVyLnJvd1NpemUgJiYKCSAgICAgICAgICAgIEFycmF5c18xLmRlZmF1bHQuZXF1YWxzKHRoaXMuYml0cywgb3RoZXIuYml0cyk7CgkgICAgfTsKCSAgICAvKkBPdmVycmlkZSovCgkgICAgQml0TWF0cml4LnByb3RvdHlwZS5oYXNoQ29kZSA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgdmFyIGhhc2ggPSB0aGlzLndpZHRoOwoJICAgICAgICBoYXNoID0gMzEgKiBoYXNoICsgdGhpcy53aWR0aDsKCSAgICAgICAgaGFzaCA9IDMxICogaGFzaCArIHRoaXMuaGVpZ2h0OwoJICAgICAgICBoYXNoID0gMzEgKiBoYXNoICsgdGhpcy5yb3dTaXplOwoJICAgICAgICBoYXNoID0gMzEgKiBoYXNoICsgQXJyYXlzXzEuZGVmYXVsdC5oYXNoQ29kZSh0aGlzLmJpdHMpOwoJICAgICAgICByZXR1cm4gaGFzaDsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEByZXR1cm4gc3RyaW5nIHJlcHJlc2VudGF0aW9uIHVzaW5nICJYIiBmb3Igc2V0IGFuZCAiICIgZm9yIHVuc2V0IGJpdHMKCSAgICAgKi8KCSAgICAvKkBPdmVycmlkZSovCgkgICAgLy8gcHVibGljIHRvU3RyaW5nKCk6IHN0cmluZyB7CgkgICAgLy8gICByZXR1cm4gdG9TdHJpbmcoIjogIlgsICIgICIpCgkgICAgLy8gfQoJICAgIC8qKgoJICAgICAqIEBwYXJhbSBzZXRTdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBzZXQgYml0CgkgICAgICogQHBhcmFtIHVuc2V0U3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIHVuc2V0IGJpdAoJICAgICAqIEByZXR1cm4gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGVudGlyZSBtYXRyaXggdXRpbGl6aW5nIGdpdmVuIHN0cmluZ3MKCSAgICAgKi8KCSAgICAvLyBwdWJsaWMgdG9TdHJpbmcoc2V0U3RyaW5nOiBzdHJpbmcgPSAiWCAiLCB1bnNldFN0cmluZzogc3RyaW5nID0gIiAgIik6IHN0cmluZyB7CgkgICAgLy8gICByZXR1cm4gdGhpcy5idWlsZFRvU3RyaW5nKHNldFN0cmluZywgdW5zZXRTdHJpbmcsICJcbiIpCgkgICAgLy8gfQoJICAgIC8qKgoJICAgICAqIEBwYXJhbSBzZXRTdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBzZXQgYml0CgkgICAgICogQHBhcmFtIHVuc2V0U3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIHVuc2V0IGJpdAoJICAgICAqIEBwYXJhbSBsaW5lU2VwYXJhdG9yIG5ld2xpbmUgY2hhcmFjdGVyIGluIHN0cmluZyByZXByZXNlbnRhdGlvbgoJICAgICAqIEByZXR1cm4gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGVudGlyZSBtYXRyaXggdXRpbGl6aW5nIGdpdmVuIHN0cmluZ3MgYW5kIGxpbmUgc2VwYXJhdG9yCgkgICAgICogQGRlcHJlY2F0ZWQgY2FsbCB7QGxpbmsgI3RvU3RyaW5nKFN0cmluZyxTdHJpbmcpfSBvbmx5LCB3aGljaCB1c2VzIFxuIGxpbmUgc2VwYXJhdG9yIGFsd2F5cwoJICAgICAqLwoJICAgIC8vIEBEZXByZWNhdGVkCgkgICAgQml0TWF0cml4LnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIChzZXRTdHJpbmcsIHVuc2V0U3RyaW5nLCBsaW5lU2VwYXJhdG9yKSB7CgkgICAgICAgIGlmIChzZXRTdHJpbmcgPT09IHZvaWQgMCkgeyBzZXRTdHJpbmcgPSAnWCAnOyB9CgkgICAgICAgIGlmICh1bnNldFN0cmluZyA9PT0gdm9pZCAwKSB7IHVuc2V0U3RyaW5nID0gJyAgJzsgfQoJICAgICAgICBpZiAobGluZVNlcGFyYXRvciA9PT0gdm9pZCAwKSB7IGxpbmVTZXBhcmF0b3IgPSAnXG4nOyB9CgkgICAgICAgIHJldHVybiB0aGlzLmJ1aWxkVG9TdHJpbmcoc2V0U3RyaW5nLCB1bnNldFN0cmluZywgbGluZVNlcGFyYXRvcik7CgkgICAgfTsKCSAgICBCaXRNYXRyaXgucHJvdG90eXBlLmJ1aWxkVG9TdHJpbmcgPSBmdW5jdGlvbiAoc2V0U3RyaW5nLCB1bnNldFN0cmluZywgbGluZVNlcGFyYXRvcikgewoJICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1aWxkZXJfMS5kZWZhdWx0KCk7CgkgICAgICAgIC8vIHJlc3VsdC5hcHBlbmQobGluZVNlcGFyYXRvcik7CgkgICAgICAgIGZvciAodmFyIHkgPSAwLCBoZWlnaHQgPSB0aGlzLmhlaWdodDsgeSA8IGhlaWdodDsgeSsrKSB7CgkgICAgICAgICAgICBmb3IgKHZhciB4ID0gMCwgd2lkdGggPSB0aGlzLndpZHRoOyB4IDwgd2lkdGg7IHgrKykgewoJICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodGhpcy5nZXQoeCwgeSkgPyBzZXRTdHJpbmcgOiB1bnNldFN0cmluZyk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGxpbmVTZXBhcmF0b3IpOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKCSAgICB9OwoJICAgIC8qQE92ZXJyaWRlKi8KCSAgICBCaXRNYXRyaXgucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gbmV3IEJpdE1hdHJpeCh0aGlzLndpZHRoLCB0aGlzLmhlaWdodCwgdGhpcy5yb3dTaXplLCB0aGlzLmJpdHMuc2xpY2UoKSk7CgkgICAgfTsKCSAgICByZXR1cm4gQml0TWF0cml4OwoJfSgpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IEJpdE1hdHJpeDsKCgl9KTsKCgl2YXIgTm90Rm91bmRFeGNlcHRpb25fMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCXZhciBfX2V4dGVuZHMgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkgewoJICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fAoJICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fAoJICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07CgkgICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgIH07CgkgICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfQoJICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7CgkgICAgfTsKCX0pKCk7CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoKCS8qKgoJICogQ3VzdG9tIEVycm9yIGNsYXNzIG9mIHR5cGUgRXhjZXB0aW9uLgoJICovCgl2YXIgTm90Rm91bmRFeGNlcHRpb24gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7CgkgICAgX19leHRlbmRzKE5vdEZvdW5kRXhjZXB0aW9uLCBfc3VwZXIpOwoJICAgIGZ1bmN0aW9uIE5vdEZvdW5kRXhjZXB0aW9uKCkgewoJICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7CgkgICAgfQoJICAgIE5vdEZvdW5kRXhjZXB0aW9uLmdldE5vdEZvdW5kSW5zdGFuY2UgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiBuZXcgTm90Rm91bmRFeGNlcHRpb24oKTsKCSAgICB9OwoJICAgIE5vdEZvdW5kRXhjZXB0aW9uLmtpbmQgPSAnTm90Rm91bmRFeGNlcHRpb24nOwoJICAgIHJldHVybiBOb3RGb3VuZEV4Y2VwdGlvbjsKCX0oRXhjZXB0aW9uXzEuZGVmYXVsdCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gTm90Rm91bmRFeGNlcHRpb247CgoJfSk7CgoJdmFyIEdsb2JhbEhpc3RvZ3JhbUJpbmFyaXplcl8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJLyoKCSAqIENvcHlyaWdodCAyMDA5IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCXZhciBfX2V4dGVuZHMgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkgewoJICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fAoJICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fAoJICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07CgkgICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgIH07CgkgICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfQoJICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7CgkgICAgfTsKCX0pKCk7CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJLypuYW1lc3BhY2UgY29tLmdvb2dsZS56eGluZy5jb21tb24geyovCgoKCgoJLyoqCgkgKiBUaGlzIEJpbmFyaXplciBpbXBsZW1lbnRhdGlvbiB1c2VzIHRoZSBvbGQgWlhpbmcgZ2xvYmFsIGhpc3RvZ3JhbSBhcHByb2FjaC4gSXQgaXMgc3VpdGFibGUKCSAqIGZvciBsb3ctZW5kIG1vYmlsZSBkZXZpY2VzIHdoaWNoIGRvbid0IGhhdmUgZW5vdWdoIENQVSBvciBtZW1vcnkgdG8gdXNlIGEgbG9jYWwgdGhyZXNob2xkaW5nCgkgKiBhbGdvcml0aG0uIEhvd2V2ZXIsIGJlY2F1c2UgaXQgcGlja3MgYSBnbG9iYWwgYmxhY2sgcG9pbnQsIGl0IGNhbm5vdCBoYW5kbGUgZGlmZmljdWx0IHNoYWRvd3MKCSAqIGFuZCBncmFkaWVudHMuCgkgKgoJICogRmFzdGVyIG1vYmlsZSBkZXZpY2VzIGFuZCBhbGwgZGVza3RvcCBhcHBsaWNhdGlvbnMgc2hvdWxkIHByb2JhYmx5IHVzZSBIeWJyaWRCaW5hcml6ZXIgaW5zdGVhZC4KCSAqCgkgKiBAYXV0aG9yIGRzd2l0a2luQGdvb2dsZS5jb20gKERhbmllbCBTd2l0a2luKQoJICogQGF1dGhvciBTZWFuIE93ZW4KCSAqLwoJdmFyIEdsb2JhbEhpc3RvZ3JhbUJpbmFyaXplciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHsKCSAgICBfX2V4dGVuZHMoR2xvYmFsSGlzdG9ncmFtQmluYXJpemVyLCBfc3VwZXIpOwoJICAgIGZ1bmN0aW9uIEdsb2JhbEhpc3RvZ3JhbUJpbmFyaXplcihzb3VyY2UpIHsKCSAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgc291cmNlKSB8fCB0aGlzOwoJICAgICAgICBfdGhpcy5sdW1pbmFuY2VzID0gR2xvYmFsSGlzdG9ncmFtQmluYXJpemVyLkVNUFRZOwoJICAgICAgICBfdGhpcy5idWNrZXRzID0gbmV3IEludDMyQXJyYXkoR2xvYmFsSGlzdG9ncmFtQmluYXJpemVyLkxVTUlOQU5DRV9CVUNLRVRTKTsKCSAgICAgICAgcmV0dXJuIF90aGlzOwoJICAgIH0KCSAgICAvLyBBcHBsaWVzIHNpbXBsZSBzaGFycGVuaW5nIHRvIHRoZSByb3cgZGF0YSB0byBpbXByb3ZlIHBlcmZvcm1hbmNlIG9mIHRoZSAxRCBSZWFkZXJzLgoJICAgIC8qQE92ZXJyaWRlKi8KCSAgICBHbG9iYWxIaXN0b2dyYW1CaW5hcml6ZXIucHJvdG90eXBlLmdldEJsYWNrUm93ID0gZnVuY3Rpb24gKHkgLyppbnQqLywgcm93KSB7CgkgICAgICAgIHZhciBzb3VyY2UgPSB0aGlzLmdldEx1bWluYW5jZVNvdXJjZSgpOwoJICAgICAgICB2YXIgd2lkdGggPSBzb3VyY2UuZ2V0V2lkdGgoKTsKCSAgICAgICAgaWYgKHJvdyA9PT0gdW5kZWZpbmVkIHx8IHJvdyA9PT0gbnVsbCB8fCByb3cuZ2V0U2l6ZSgpIDwgd2lkdGgpIHsKCSAgICAgICAgICAgIHJvdyA9IG5ldyBCaXRBcnJheV8xLmRlZmF1bHQod2lkdGgpOwoJICAgICAgICB9CgkgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgcm93LmNsZWFyKCk7CgkgICAgICAgIH0KCSAgICAgICAgdGhpcy5pbml0QXJyYXlzKHdpZHRoKTsKCSAgICAgICAgdmFyIGxvY2FsTHVtaW5hbmNlcyA9IHNvdXJjZS5nZXRSb3coeSwgdGhpcy5sdW1pbmFuY2VzKTsKCSAgICAgICAgdmFyIGxvY2FsQnVja2V0cyA9IHRoaXMuYnVja2V0czsKCSAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7CgkgICAgICAgICAgICBsb2NhbEJ1Y2tldHNbKGxvY2FsTHVtaW5hbmNlc1t4XSAmIDB4ZmYpID4+IEdsb2JhbEhpc3RvZ3JhbUJpbmFyaXplci5MVU1JTkFOQ0VfU0hJRlRdKys7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGJsYWNrUG9pbnQgPSBHbG9iYWxIaXN0b2dyYW1CaW5hcml6ZXIuZXN0aW1hdGVCbGFja1BvaW50KGxvY2FsQnVja2V0cyk7CgkgICAgICAgIGlmICh3aWR0aCA8IDMpIHsKCSAgICAgICAgICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgdmVyeSBzbWFsbCBpbWFnZXMKCSAgICAgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgd2lkdGg7IHgrKykgewoJICAgICAgICAgICAgICAgIGlmICgobG9jYWxMdW1pbmFuY2VzW3hdICYgMHhmZikgPCBibGFja1BvaW50KSB7CgkgICAgICAgICAgICAgICAgICAgIHJvdy5zZXQoeCk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgdmFyIGxlZnQgPSBsb2NhbEx1bWluYW5jZXNbMF0gJiAweGZmOwoJICAgICAgICAgICAgdmFyIGNlbnRlciA9IGxvY2FsTHVtaW5hbmNlc1sxXSAmIDB4ZmY7CgkgICAgICAgICAgICBmb3IgKHZhciB4ID0gMTsgeCA8IHdpZHRoIC0gMTsgeCsrKSB7CgkgICAgICAgICAgICAgICAgdmFyIHJpZ2h0ID0gbG9jYWxMdW1pbmFuY2VzW3ggKyAxXSAmIDB4ZmY7CgkgICAgICAgICAgICAgICAgLy8gQSBzaW1wbGUgLTEgNCAtMSBib3ggZmlsdGVyIHdpdGggYSB3ZWlnaHQgb2YgMi4KCSAgICAgICAgICAgICAgICBpZiAoKChjZW50ZXIgKiA0KSAtIGxlZnQgLSByaWdodCkgLyAyIDwgYmxhY2tQb2ludCkgewoJICAgICAgICAgICAgICAgICAgICByb3cuc2V0KHgpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBsZWZ0ID0gY2VudGVyOwoJICAgICAgICAgICAgICAgIGNlbnRlciA9IHJpZ2h0OwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHJldHVybiByb3c7CgkgICAgfTsKCSAgICAvLyBEb2VzIG5vdCBzaGFycGVuIHRoZSBkYXRhLCBhcyB0aGlzIGNhbGwgaXMgaW50ZW5kZWQgdG8gb25seSBiZSB1c2VkIGJ5IDJEIFJlYWRlcnMuCgkgICAgLypAT3ZlcnJpZGUqLwoJICAgIEdsb2JhbEhpc3RvZ3JhbUJpbmFyaXplci5wcm90b3R5cGUuZ2V0QmxhY2tNYXRyaXggPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHZhciBzb3VyY2UgPSB0aGlzLmdldEx1bWluYW5jZVNvdXJjZSgpOwoJICAgICAgICB2YXIgd2lkdGggPSBzb3VyY2UuZ2V0V2lkdGgoKTsKCSAgICAgICAgdmFyIGhlaWdodCA9IHNvdXJjZS5nZXRIZWlnaHQoKTsKCSAgICAgICAgdmFyIG1hdHJpeCA9IG5ldyBCaXRNYXRyaXhfMS5kZWZhdWx0KHdpZHRoLCBoZWlnaHQpOwoJICAgICAgICAvLyBRdWlja2x5IGNhbGN1bGF0ZXMgdGhlIGhpc3RvZ3JhbSBieSBzYW1wbGluZyBmb3VyIHJvd3MgZnJvbSB0aGUgaW1hZ2UuIFRoaXMgcHJvdmVkIHRvIGJlCgkgICAgICAgIC8vIG1vcmUgcm9idXN0IG9uIHRoZSBibGFja2JveCB0ZXN0cyB0aGFuIHNhbXBsaW5nIGEgZGlhZ29uYWwgYXMgd2UgdXNlZCB0byBkby4KCSAgICAgICAgdGhpcy5pbml0QXJyYXlzKHdpZHRoKTsKCSAgICAgICAgdmFyIGxvY2FsQnVja2V0cyA9IHRoaXMuYnVja2V0czsKCSAgICAgICAgZm9yICh2YXIgeSA9IDE7IHkgPCA1OyB5KyspIHsKCSAgICAgICAgICAgIHZhciByb3cgPSBNYXRoLmZsb29yKChoZWlnaHQgKiB5KSAvIDUpOwoJICAgICAgICAgICAgdmFyIGxvY2FsTHVtaW5hbmNlc18xID0gc291cmNlLmdldFJvdyhyb3csIHRoaXMubHVtaW5hbmNlcyk7CgkgICAgICAgICAgICB2YXIgcmlnaHQgPSBNYXRoLmZsb29yKCh3aWR0aCAqIDQpIC8gNSk7CgkgICAgICAgICAgICBmb3IgKHZhciB4ID0gTWF0aC5mbG9vcih3aWR0aCAvIDUpOyB4IDwgcmlnaHQ7IHgrKykgewoJICAgICAgICAgICAgICAgIHZhciBwaXhlbCA9IGxvY2FsTHVtaW5hbmNlc18xW3hdICYgMHhmZjsKCSAgICAgICAgICAgICAgICBsb2NhbEJ1Y2tldHNbcGl4ZWwgPj4gR2xvYmFsSGlzdG9ncmFtQmluYXJpemVyLkxVTUlOQU5DRV9TSElGVF0rKzsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICB2YXIgYmxhY2tQb2ludCA9IEdsb2JhbEhpc3RvZ3JhbUJpbmFyaXplci5lc3RpbWF0ZUJsYWNrUG9pbnQobG9jYWxCdWNrZXRzKTsKCSAgICAgICAgLy8gV2UgZGVsYXkgcmVhZGluZyB0aGUgZW50aXJlIGltYWdlIGx1bWluYW5jZSB1bnRpbCB0aGUgYmxhY2sgcG9pbnQgZXN0aW1hdGlvbiBzdWNjZWVkcy4KCSAgICAgICAgLy8gQWx0aG91Z2ggd2UgZW5kIHVwIHJlYWRpbmcgZm91ciByb3dzIHR3aWNlLCBpdCBpcyBjb25zaXN0ZW50IHdpdGggb3VyIG1vdHRvIG9mCgkgICAgICAgIC8vICJmYWlsIHF1aWNrbHkiIHdoaWNoIGlzIG5lY2Vzc2FyeSBmb3IgY29udGludW91cyBzY2FubmluZy4KCSAgICAgICAgdmFyIGxvY2FsTHVtaW5hbmNlcyA9IHNvdXJjZS5nZXRNYXRyaXgoKTsKCSAgICAgICAgZm9yICh2YXIgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykgewoJICAgICAgICAgICAgdmFyIG9mZnNldCA9IHkgKiB3aWR0aDsKCSAgICAgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgd2lkdGg7IHgrKykgewoJICAgICAgICAgICAgICAgIHZhciBwaXhlbCA9IGxvY2FsTHVtaW5hbmNlc1tvZmZzZXQgKyB4XSAmIDB4ZmY7CgkgICAgICAgICAgICAgICAgaWYgKHBpeGVsIDwgYmxhY2tQb2ludCkgewoJICAgICAgICAgICAgICAgICAgICBtYXRyaXguc2V0KHgsIHkpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gbWF0cml4OwoJICAgIH07CgkgICAgLypAT3ZlcnJpZGUqLwoJICAgIEdsb2JhbEhpc3RvZ3JhbUJpbmFyaXplci5wcm90b3R5cGUuY3JlYXRlQmluYXJpemVyID0gZnVuY3Rpb24gKHNvdXJjZSkgewoJICAgICAgICByZXR1cm4gbmV3IEdsb2JhbEhpc3RvZ3JhbUJpbmFyaXplcihzb3VyY2UpOwoJICAgIH07CgkgICAgR2xvYmFsSGlzdG9ncmFtQmluYXJpemVyLnByb3RvdHlwZS5pbml0QXJyYXlzID0gZnVuY3Rpb24gKGx1bWluYW5jZVNpemUgLyppbnQqLykgewoJICAgICAgICBpZiAodGhpcy5sdW1pbmFuY2VzLmxlbmd0aCA8IGx1bWluYW5jZVNpemUpIHsKCSAgICAgICAgICAgIHRoaXMubHVtaW5hbmNlcyA9IG5ldyBVaW50OENsYW1wZWRBcnJheShsdW1pbmFuY2VTaXplKTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgYnVja2V0cyA9IHRoaXMuYnVja2V0czsKCSAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCBHbG9iYWxIaXN0b2dyYW1CaW5hcml6ZXIuTFVNSU5BTkNFX0JVQ0tFVFM7IHgrKykgewoJICAgICAgICAgICAgYnVja2V0c1t4XSA9IDA7CgkgICAgICAgIH0KCSAgICB9OwoJICAgIEdsb2JhbEhpc3RvZ3JhbUJpbmFyaXplci5lc3RpbWF0ZUJsYWNrUG9pbnQgPSBmdW5jdGlvbiAoYnVja2V0cykgewoJICAgICAgICAvLyBGaW5kIHRoZSB0YWxsZXN0IHBlYWsgaW4gdGhlIGhpc3RvZ3JhbS4KCSAgICAgICAgdmFyIG51bUJ1Y2tldHMgPSBidWNrZXRzLmxlbmd0aDsKCSAgICAgICAgdmFyIG1heEJ1Y2tldENvdW50ID0gMDsKCSAgICAgICAgdmFyIGZpcnN0UGVhayA9IDA7CgkgICAgICAgIHZhciBmaXJzdFBlYWtTaXplID0gMDsKCSAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCBudW1CdWNrZXRzOyB4KyspIHsKCSAgICAgICAgICAgIGlmIChidWNrZXRzW3hdID4gZmlyc3RQZWFrU2l6ZSkgewoJICAgICAgICAgICAgICAgIGZpcnN0UGVhayA9IHg7CgkgICAgICAgICAgICAgICAgZmlyc3RQZWFrU2l6ZSA9IGJ1Y2tldHNbeF07CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBpZiAoYnVja2V0c1t4XSA+IG1heEJ1Y2tldENvdW50KSB7CgkgICAgICAgICAgICAgICAgbWF4QnVja2V0Q291bnQgPSBidWNrZXRzW3hdOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIC8vIEZpbmQgdGhlIHNlY29uZC10YWxsZXN0IHBlYWsgd2hpY2ggaXMgc29tZXdoYXQgZmFyIGZyb20gdGhlIHRhbGxlc3QgcGVhay4KCSAgICAgICAgdmFyIHNlY29uZFBlYWsgPSAwOwoJICAgICAgICB2YXIgc2Vjb25kUGVha1Njb3JlID0gMDsKCSAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCBudW1CdWNrZXRzOyB4KyspIHsKCSAgICAgICAgICAgIHZhciBkaXN0YW5jZVRvQmlnZ2VzdCA9IHggLSBmaXJzdFBlYWs7CgkgICAgICAgICAgICAvLyBFbmNvdXJhZ2UgbW9yZSBkaXN0YW50IHNlY29uZCBwZWFrcyBieSBtdWx0aXBseWluZyBieSBzcXVhcmUgb2YgZGlzdGFuY2UuCgkgICAgICAgICAgICB2YXIgc2NvcmUgPSBidWNrZXRzW3hdICogZGlzdGFuY2VUb0JpZ2dlc3QgKiBkaXN0YW5jZVRvQmlnZ2VzdDsKCSAgICAgICAgICAgIGlmIChzY29yZSA+IHNlY29uZFBlYWtTY29yZSkgewoJICAgICAgICAgICAgICAgIHNlY29uZFBlYWsgPSB4OwoJICAgICAgICAgICAgICAgIHNlY29uZFBlYWtTY29yZSA9IHNjb3JlOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIC8vIE1ha2Ugc3VyZSBmaXJzdFBlYWsgY29ycmVzcG9uZHMgdG8gdGhlIGJsYWNrIHBlYWsuCgkgICAgICAgIGlmIChmaXJzdFBlYWsgPiBzZWNvbmRQZWFrKSB7CgkgICAgICAgICAgICB2YXIgdGVtcCA9IGZpcnN0UGVhazsKCSAgICAgICAgICAgIGZpcnN0UGVhayA9IHNlY29uZFBlYWs7CgkgICAgICAgICAgICBzZWNvbmRQZWFrID0gdGVtcDsKCSAgICAgICAgfQoJICAgICAgICAvLyBJZiB0aGVyZSBpcyB0b28gbGl0dGxlIGNvbnRyYXN0IGluIHRoZSBpbWFnZSB0byBwaWNrIGEgbWVhbmluZ2Z1bCBibGFjayBwb2ludCwgdGhyb3cgcmF0aGVyCgkgICAgICAgIC8vIHRoYW4gd2FzdGUgdGltZSB0cnlpbmcgdG8gZGVjb2RlIHRoZSBpbWFnZSwgYW5kIHJpc2sgZmFsc2UgcG9zaXRpdmVzLgoJICAgICAgICBpZiAoc2Vjb25kUGVhayAtIGZpcnN0UGVhayA8PSBudW1CdWNrZXRzIC8gMTYpIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgfQoJICAgICAgICAvLyBGaW5kIGEgdmFsbGV5IGJldHdlZW4gdGhlbSB0aGF0IGlzIGxvdyBhbmQgY2xvc2VyIHRvIHRoZSB3aGl0ZSBwZWFrLgoJICAgICAgICB2YXIgYmVzdFZhbGxleSA9IHNlY29uZFBlYWsgLSAxOwoJICAgICAgICB2YXIgYmVzdFZhbGxleVNjb3JlID0gLTE7CgkgICAgICAgIGZvciAodmFyIHggPSBzZWNvbmRQZWFrIC0gMTsgeCA+IGZpcnN0UGVhazsgeC0tKSB7CgkgICAgICAgICAgICB2YXIgZnJvbUZpcnN0ID0geCAtIGZpcnN0UGVhazsKCSAgICAgICAgICAgIHZhciBzY29yZSA9IGZyb21GaXJzdCAqIGZyb21GaXJzdCAqIChzZWNvbmRQZWFrIC0geCkgKiAobWF4QnVja2V0Q291bnQgLSBidWNrZXRzW3hdKTsKCSAgICAgICAgICAgIGlmIChzY29yZSA+IGJlc3RWYWxsZXlTY29yZSkgewoJICAgICAgICAgICAgICAgIGJlc3RWYWxsZXkgPSB4OwoJICAgICAgICAgICAgICAgIGJlc3RWYWxsZXlTY29yZSA9IHNjb3JlOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBiZXN0VmFsbGV5IDw8IEdsb2JhbEhpc3RvZ3JhbUJpbmFyaXplci5MVU1JTkFOQ0VfU0hJRlQ7CgkgICAgfTsKCSAgICBHbG9iYWxIaXN0b2dyYW1CaW5hcml6ZXIuTFVNSU5BTkNFX0JJVFMgPSA1OwoJICAgIEdsb2JhbEhpc3RvZ3JhbUJpbmFyaXplci5MVU1JTkFOQ0VfU0hJRlQgPSA4IC0gR2xvYmFsSGlzdG9ncmFtQmluYXJpemVyLkxVTUlOQU5DRV9CSVRTOwoJICAgIEdsb2JhbEhpc3RvZ3JhbUJpbmFyaXplci5MVU1JTkFOQ0VfQlVDS0VUUyA9IDEgPDwgR2xvYmFsSGlzdG9ncmFtQmluYXJpemVyLkxVTUlOQU5DRV9CSVRTOwoJICAgIEdsb2JhbEhpc3RvZ3JhbUJpbmFyaXplci5FTVBUWSA9IFVpbnQ4Q2xhbXBlZEFycmF5LmZyb20oWzBdKTsKCSAgICByZXR1cm4gR2xvYmFsSGlzdG9ncmFtQmluYXJpemVyOwoJfShCaW5hcml6ZXJfMS5kZWZhdWx0KSk7CglleHBvcnRzLmRlZmF1bHQgPSBHbG9iYWxIaXN0b2dyYW1CaW5hcml6ZXI7CgoJfSk7CgoJdmFyIEh5YnJpZEJpbmFyaXplcl8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJLyoKCSAqIENvcHlyaWdodCAyMDA5IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCXZhciBfX2V4dGVuZHMgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkgewoJICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fAoJICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fAoJICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07CgkgICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgIH07CgkgICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfQoJICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7CgkgICAgfTsKCX0pKCk7CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoKCgkvKioKCSAqIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBhIGxvY2FsIHRocmVzaG9sZGluZyBhbGdvcml0aG0sIHdoaWNoIHdoaWxlIHNsb3dlciB0aGFuIHRoZQoJICogR2xvYmFsSGlzdG9ncmFtQmluYXJpemVyLCBpcyBmYWlybHkgZWZmaWNpZW50IGZvciB3aGF0IGl0IGRvZXMuIEl0IGlzIGRlc2lnbmVkIGZvcgoJICogaGlnaCBmcmVxdWVuY3kgaW1hZ2VzIG9mIGJhcmNvZGVzIHdpdGggYmxhY2sgZGF0YSBvbiB3aGl0ZSBiYWNrZ3JvdW5kcy4gRm9yIHRoaXMgYXBwbGljYXRpb24sCgkgKiBpdCBkb2VzIGEgbXVjaCBiZXR0ZXIgam9iIHRoYW4gYSBnbG9iYWwgYmxhY2twb2ludCB3aXRoIHNldmVyZSBzaGFkb3dzIGFuZCBncmFkaWVudHMuCgkgKiBIb3dldmVyIGl0IHRlbmRzIHRvIHByb2R1Y2UgYXJ0aWZhY3RzIG9uIGxvd2VyIGZyZXF1ZW5jeSBpbWFnZXMgYW5kIGlzIHRoZXJlZm9yZSBub3QKCSAqIGEgZ29vZCBnZW5lcmFsIHB1cnBvc2UgYmluYXJpemVyIGZvciB1c2VzIG91dHNpZGUgWlhpbmcuCgkgKgoJICogVGhpcyBjbGFzcyBleHRlbmRzIEdsb2JhbEhpc3RvZ3JhbUJpbmFyaXplciwgdXNpbmcgdGhlIG9sZGVyIGhpc3RvZ3JhbSBhcHByb2FjaCBmb3IgMUQgcmVhZGVycywKCSAqIGFuZCB0aGUgbmV3ZXIgbG9jYWwgYXBwcm9hY2ggZm9yIDJEIHJlYWRlcnMuIDFEIGRlY29kaW5nIHVzaW5nIGEgcGVyLXJvdyBoaXN0b2dyYW0gaXMgYWxyZWFkeQoJICogaW5oZXJlbnRseSBsb2NhbCwgYW5kIG9ubHkgZmFpbHMgZm9yIGhvcml6b250YWwgZ3JhZGllbnRzLiBXZSBjYW4gcmV2aXNpdCB0aGF0IHByb2JsZW0gbGF0ZXIsCgkgKiBidXQgZm9yIG5vdyBpdCB3YXMgbm90IGEgd2luIHRvIHVzZSBsb2NhbCBibG9ja3MgZm9yIDFELgoJICoKCSAqIFRoaXMgQmluYXJpemVyIGlzIHRoZSBkZWZhdWx0IGZvciB0aGUgdW5pdCB0ZXN0cyBhbmQgdGhlIHJlY29tbWVuZGVkIGNsYXNzIGZvciBsaWJyYXJ5IHVzZXJzLgoJICoKCSAqIEBhdXRob3IgZHN3aXRraW5AZ29vZ2xlLmNvbSAoRGFuaWVsIFN3aXRraW4pCgkgKi8KCXZhciBIeWJyaWRCaW5hcml6ZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7CgkgICAgX19leHRlbmRzKEh5YnJpZEJpbmFyaXplciwgX3N1cGVyKTsKCSAgICBmdW5jdGlvbiBIeWJyaWRCaW5hcml6ZXIoc291cmNlKSB7CgkgICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIHNvdXJjZSkgfHwgdGhpczsKCSAgICAgICAgX3RoaXMubWF0cml4ID0gbnVsbDsKCSAgICAgICAgcmV0dXJuIF90aGlzOwoJICAgIH0KCSAgICAvKioKCSAgICAgKiBDYWxjdWxhdGVzIHRoZSBmaW5hbCBCaXRNYXRyaXggb25jZSBmb3IgYWxsIHJlcXVlc3RzLiBUaGlzIGNvdWxkIGJlIGNhbGxlZCBvbmNlIGZyb20gdGhlCgkgICAgICogY29uc3RydWN0b3IgaW5zdGVhZCwgYnV0IHRoZXJlIGFyZSBzb21lIGFkdmFudGFnZXMgdG8gZG9pbmcgaXQgbGF6aWx5LCBzdWNoIGFzIG1ha2luZwoJICAgICAqIHByb2ZpbGluZyBlYXNpZXIsIGFuZCBub3QgZG9pbmcgaGVhdnkgbGlmdGluZyB3aGVuIGNhbGxlcnMgZG9uJ3QgZXhwZWN0IGl0LgoJICAgICAqLwoJICAgIC8qQE92ZXJyaWRlKi8KCSAgICBIeWJyaWRCaW5hcml6ZXIucHJvdG90eXBlLmdldEJsYWNrTWF0cml4ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICBpZiAodGhpcy5tYXRyaXggIT09IG51bGwpIHsKCSAgICAgICAgICAgIHJldHVybiB0aGlzLm1hdHJpeDsKCSAgICAgICAgfQoJICAgICAgICB2YXIgc291cmNlID0gdGhpcy5nZXRMdW1pbmFuY2VTb3VyY2UoKTsKCSAgICAgICAgdmFyIHdpZHRoID0gc291cmNlLmdldFdpZHRoKCk7CgkgICAgICAgIHZhciBoZWlnaHQgPSBzb3VyY2UuZ2V0SGVpZ2h0KCk7CgkgICAgICAgIGlmICh3aWR0aCA+PSBIeWJyaWRCaW5hcml6ZXIuTUlOSU1VTV9ESU1FTlNJT04gJiYgaGVpZ2h0ID49IEh5YnJpZEJpbmFyaXplci5NSU5JTVVNX0RJTUVOU0lPTikgewoJICAgICAgICAgICAgdmFyIGx1bWluYW5jZXMgPSBzb3VyY2UuZ2V0TWF0cml4KCk7CgkgICAgICAgICAgICB2YXIgc3ViV2lkdGggPSB3aWR0aCA+PiBIeWJyaWRCaW5hcml6ZXIuQkxPQ0tfU0laRV9QT1dFUjsKCSAgICAgICAgICAgIGlmICgod2lkdGggJiBIeWJyaWRCaW5hcml6ZXIuQkxPQ0tfU0laRV9NQVNLKSAhPT0gMCkgewoJICAgICAgICAgICAgICAgIHN1YldpZHRoKys7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICB2YXIgc3ViSGVpZ2h0ID0gaGVpZ2h0ID4+IEh5YnJpZEJpbmFyaXplci5CTE9DS19TSVpFX1BPV0VSOwoJICAgICAgICAgICAgaWYgKChoZWlnaHQgJiBIeWJyaWRCaW5hcml6ZXIuQkxPQ0tfU0laRV9NQVNLKSAhPT0gMCkgewoJICAgICAgICAgICAgICAgIHN1YkhlaWdodCsrOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgdmFyIGJsYWNrUG9pbnRzID0gSHlicmlkQmluYXJpemVyLmNhbGN1bGF0ZUJsYWNrUG9pbnRzKGx1bWluYW5jZXMsIHN1YldpZHRoLCBzdWJIZWlnaHQsIHdpZHRoLCBoZWlnaHQpOwoJICAgICAgICAgICAgdmFyIG5ld01hdHJpeCA9IG5ldyBCaXRNYXRyaXhfMS5kZWZhdWx0KHdpZHRoLCBoZWlnaHQpOwoJICAgICAgICAgICAgSHlicmlkQmluYXJpemVyLmNhbGN1bGF0ZVRocmVzaG9sZEZvckJsb2NrKGx1bWluYW5jZXMsIHN1YldpZHRoLCBzdWJIZWlnaHQsIHdpZHRoLCBoZWlnaHQsIGJsYWNrUG9pbnRzLCBuZXdNYXRyaXgpOwoJICAgICAgICAgICAgdGhpcy5tYXRyaXggPSBuZXdNYXRyaXg7CgkgICAgICAgIH0KCSAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAvLyBJZiB0aGUgaW1hZ2UgaXMgdG9vIHNtYWxsLCBmYWxsIGJhY2sgdG8gdGhlIGdsb2JhbCBoaXN0b2dyYW0gYXBwcm9hY2guCgkgICAgICAgICAgICB0aGlzLm1hdHJpeCA9IF9zdXBlci5wcm90b3R5cGUuZ2V0QmxhY2tNYXRyaXguY2FsbCh0aGlzKTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gdGhpcy5tYXRyaXg7CgkgICAgfTsKCSAgICAvKkBPdmVycmlkZSovCgkgICAgSHlicmlkQmluYXJpemVyLnByb3RvdHlwZS5jcmVhdGVCaW5hcml6ZXIgPSBmdW5jdGlvbiAoc291cmNlKSB7CgkgICAgICAgIHJldHVybiBuZXcgSHlicmlkQmluYXJpemVyKHNvdXJjZSk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBGb3IgZWFjaCBibG9jayBpbiB0aGUgaW1hZ2UsIGNhbGN1bGF0ZSB0aGUgYXZlcmFnZSBibGFjayBwb2ludCB1c2luZyBhIDV4NSBncmlkCgkgICAgICogb2YgdGhlIGJsb2NrcyBhcm91bmQgaXQuIEFsc28gaGFuZGxlcyB0aGUgY29ybmVyIGNhc2VzIChmcmFjdGlvbmFsIGJsb2NrcyBhcmUgY29tcHV0ZWQgYmFzZWQKCSAgICAgKiBvbiB0aGUgbGFzdCBwaXhlbHMgaW4gdGhlIHJvdy9jb2x1bW4gd2hpY2ggYXJlIGFsc28gdXNlZCBpbiB0aGUgcHJldmlvdXMgYmxvY2spLgoJICAgICAqLwoJICAgIEh5YnJpZEJpbmFyaXplci5jYWxjdWxhdGVUaHJlc2hvbGRGb3JCbG9jayA9IGZ1bmN0aW9uIChsdW1pbmFuY2VzLCBzdWJXaWR0aCAvKmludCovLCBzdWJIZWlnaHQgLyppbnQqLywgd2lkdGggLyppbnQqLywgaGVpZ2h0IC8qaW50Ki8sIGJsYWNrUG9pbnRzLCBtYXRyaXgpIHsKCSAgICAgICAgdmFyIG1heFlPZmZzZXQgPSBoZWlnaHQgLSBIeWJyaWRCaW5hcml6ZXIuQkxPQ0tfU0laRTsKCSAgICAgICAgdmFyIG1heFhPZmZzZXQgPSB3aWR0aCAtIEh5YnJpZEJpbmFyaXplci5CTE9DS19TSVpFOwoJICAgICAgICBmb3IgKHZhciB5ID0gMDsgeSA8IHN1YkhlaWdodDsgeSsrKSB7CgkgICAgICAgICAgICB2YXIgeW9mZnNldCA9IHkgPDwgSHlicmlkQmluYXJpemVyLkJMT0NLX1NJWkVfUE9XRVI7CgkgICAgICAgICAgICBpZiAoeW9mZnNldCA+IG1heFlPZmZzZXQpIHsKCSAgICAgICAgICAgICAgICB5b2Zmc2V0ID0gbWF4WU9mZnNldDsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHZhciB0b3BfMSA9IEh5YnJpZEJpbmFyaXplci5jYXAoeSwgMiwgc3ViSGVpZ2h0IC0gMyk7CgkgICAgICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IHN1YldpZHRoOyB4KyspIHsKCSAgICAgICAgICAgICAgICB2YXIgeG9mZnNldCA9IHggPDwgSHlicmlkQmluYXJpemVyLkJMT0NLX1NJWkVfUE9XRVI7CgkgICAgICAgICAgICAgICAgaWYgKHhvZmZzZXQgPiBtYXhYT2Zmc2V0KSB7CgkgICAgICAgICAgICAgICAgICAgIHhvZmZzZXQgPSBtYXhYT2Zmc2V0OwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB2YXIgbGVmdCA9IEh5YnJpZEJpbmFyaXplci5jYXAoeCwgMiwgc3ViV2lkdGggLSAzKTsKCSAgICAgICAgICAgICAgICB2YXIgc3VtID0gMDsKCSAgICAgICAgICAgICAgICBmb3IgKHZhciB6ID0gLTI7IHogPD0gMjsgeisrKSB7CgkgICAgICAgICAgICAgICAgICAgIHZhciBibGFja1JvdyA9IGJsYWNrUG9pbnRzW3RvcF8xICsgel07CgkgICAgICAgICAgICAgICAgICAgIHN1bSArPSBibGFja1Jvd1tsZWZ0IC0gMl0gKyBibGFja1Jvd1tsZWZ0IC0gMV0gKyBibGFja1Jvd1tsZWZ0XSArIGJsYWNrUm93W2xlZnQgKyAxXSArIGJsYWNrUm93W2xlZnQgKyAyXTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgdmFyIGF2ZXJhZ2UgPSBzdW0gLyAyNTsKCSAgICAgICAgICAgICAgICBIeWJyaWRCaW5hcml6ZXIudGhyZXNob2xkQmxvY2sobHVtaW5hbmNlcywgeG9mZnNldCwgeW9mZnNldCwgYXZlcmFnZSwgd2lkdGgsIG1hdHJpeCk7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICB9OwoJICAgIEh5YnJpZEJpbmFyaXplci5jYXAgPSBmdW5jdGlvbiAodmFsdWUgLyppbnQqLywgbWluIC8qaW50Ki8sIG1heCAvKmludCovKSB7CgkgICAgICAgIHJldHVybiB2YWx1ZSA8IG1pbiA/IG1pbiA6IHZhbHVlID4gbWF4ID8gbWF4IDogdmFsdWU7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBBcHBsaWVzIGEgc2luZ2xlIHRocmVzaG9sZCB0byBhIGJsb2NrIG9mIHBpeGVscy4KCSAgICAgKi8KCSAgICBIeWJyaWRCaW5hcml6ZXIudGhyZXNob2xkQmxvY2sgPSBmdW5jdGlvbiAobHVtaW5hbmNlcywgeG9mZnNldCAvKmludCovLCB5b2Zmc2V0IC8qaW50Ki8sIHRocmVzaG9sZCAvKmludCovLCBzdHJpZGUgLyppbnQqLywgbWF0cml4KSB7CgkgICAgICAgIGZvciAodmFyIHkgPSAwLCBvZmZzZXQgPSB5b2Zmc2V0ICogc3RyaWRlICsgeG9mZnNldDsgeSA8IEh5YnJpZEJpbmFyaXplci5CTE9DS19TSVpFOyB5KyssIG9mZnNldCArPSBzdHJpZGUpIHsKCSAgICAgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgSHlicmlkQmluYXJpemVyLkJMT0NLX1NJWkU7IHgrKykgewoJICAgICAgICAgICAgICAgIC8vIENvbXBhcmlzb24gbmVlZHMgdG8gYmUgPD0gc28gdGhhdCBibGFjayA9PSAwIHBpeGVscyBhcmUgYmxhY2sgZXZlbiBpZiB0aGUgdGhyZXNob2xkIGlzIDAuCgkgICAgICAgICAgICAgICAgaWYgKChsdW1pbmFuY2VzW29mZnNldCArIHhdICYgMHhGRikgPD0gdGhyZXNob2xkKSB7CgkgICAgICAgICAgICAgICAgICAgIG1hdHJpeC5zZXQoeG9mZnNldCArIHgsIHlvZmZzZXQgKyB5KTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICB9OwoJICAgIC8qKgoJICAgICAqIENhbGN1bGF0ZXMgYSBzaW5nbGUgYmxhY2sgcG9pbnQgZm9yIGVhY2ggYmxvY2sgb2YgcGl4ZWxzIGFuZCBzYXZlcyBpdCBhd2F5LgoJICAgICAqIFNlZSB0aGUgZm9sbG93aW5nIHRocmVhZCBmb3IgYSBkaXNjdXNzaW9uIG9mIHRoaXMgYWxnb3JpdGhtOgoJICAgICAqICBodHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20vZ3JvdXAvenhpbmcvYnJvd3NlX3RocmVhZC90aHJlYWQvZDA2ZWZhMmMzNWE3ZGRjMAoJICAgICAqLwoJICAgIEh5YnJpZEJpbmFyaXplci5jYWxjdWxhdGVCbGFja1BvaW50cyA9IGZ1bmN0aW9uIChsdW1pbmFuY2VzLCBzdWJXaWR0aCAvKmludCovLCBzdWJIZWlnaHQgLyppbnQqLywgd2lkdGggLyppbnQqLywgaGVpZ2h0IC8qaW50Ki8pIHsKCSAgICAgICAgdmFyIG1heFlPZmZzZXQgPSBoZWlnaHQgLSBIeWJyaWRCaW5hcml6ZXIuQkxPQ0tfU0laRTsKCSAgICAgICAgdmFyIG1heFhPZmZzZXQgPSB3aWR0aCAtIEh5YnJpZEJpbmFyaXplci5CTE9DS19TSVpFOwoJICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6d2hpdGVzcGFjZQoJICAgICAgICB2YXIgYmxhY2tQb2ludHMgPSBuZXcgQXJyYXkoc3ViSGVpZ2h0KTsgLy8gc3ViV2lkdGgKCSAgICAgICAgZm9yICh2YXIgeSA9IDA7IHkgPCBzdWJIZWlnaHQ7IHkrKykgewoJICAgICAgICAgICAgYmxhY2tQb2ludHNbeV0gPSBuZXcgSW50MzJBcnJheShzdWJXaWR0aCk7CgkgICAgICAgICAgICB2YXIgeW9mZnNldCA9IHkgPDwgSHlicmlkQmluYXJpemVyLkJMT0NLX1NJWkVfUE9XRVI7CgkgICAgICAgICAgICBpZiAoeW9mZnNldCA+IG1heFlPZmZzZXQpIHsKCSAgICAgICAgICAgICAgICB5b2Zmc2V0ID0gbWF4WU9mZnNldDsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgc3ViV2lkdGg7IHgrKykgewoJICAgICAgICAgICAgICAgIHZhciB4b2Zmc2V0ID0geCA8PCBIeWJyaWRCaW5hcml6ZXIuQkxPQ0tfU0laRV9QT1dFUjsKCSAgICAgICAgICAgICAgICBpZiAoeG9mZnNldCA+IG1heFhPZmZzZXQpIHsKCSAgICAgICAgICAgICAgICAgICAgeG9mZnNldCA9IG1heFhPZmZzZXQ7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIHZhciBzdW0gPSAwOwoJICAgICAgICAgICAgICAgIHZhciBtaW4gPSAweEZGOwoJICAgICAgICAgICAgICAgIHZhciBtYXggPSAwOwoJICAgICAgICAgICAgICAgIGZvciAodmFyIHl5ID0gMCwgb2Zmc2V0ID0geW9mZnNldCAqIHdpZHRoICsgeG9mZnNldDsgeXkgPCBIeWJyaWRCaW5hcml6ZXIuQkxPQ0tfU0laRTsgeXkrKywgb2Zmc2V0ICs9IHdpZHRoKSB7CgkgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHh4ID0gMDsgeHggPCBIeWJyaWRCaW5hcml6ZXIuQkxPQ0tfU0laRTsgeHgrKykgewoJICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBpeGVsID0gbHVtaW5hbmNlc1tvZmZzZXQgKyB4eF0gJiAweEZGOwoJICAgICAgICAgICAgICAgICAgICAgICAgc3VtICs9IHBpeGVsOwoJICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RpbGwgbG9va2luZyBmb3IgZ29vZCBjb250cmFzdAoJICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBpeGVsIDwgbWluKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluID0gcGl4ZWw7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGl4ZWwgPiBtYXgpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXggPSBwaXhlbDsKCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAvLyBzaG9ydC1jaXJjdWl0IG1pbi9tYXggdGVzdHMgb25jZSBkeW5hbWljIHJhbmdlIGlzIG1ldAoJICAgICAgICAgICAgICAgICAgICBpZiAobWF4IC0gbWluID4gSHlicmlkQmluYXJpemVyLk1JTl9EWU5BTUlDX1JBTkdFKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAvLyBmaW5pc2ggdGhlIHJlc3Qgb2YgdGhlIHJvd3MgcXVpY2tseQoJICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh5eSsrLCBvZmZzZXQgKz0gd2lkdGg7IHl5IDwgSHlicmlkQmluYXJpemVyLkJMT0NLX1NJWkU7IHl5KyssIG9mZnNldCArPSB3aWR0aCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHh4ID0gMDsgeHggPCBIeWJyaWRCaW5hcml6ZXIuQkxPQ0tfU0laRTsgeHgrKykgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdW0gKz0gbHVtaW5hbmNlc1tvZmZzZXQgKyB4eF0gJiAweEZGOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAvLyBUaGUgZGVmYXVsdCBlc3RpbWF0ZSBpcyB0aGUgYXZlcmFnZSBvZiB0aGUgdmFsdWVzIGluIHRoZSBibG9jay4KCSAgICAgICAgICAgICAgICB2YXIgYXZlcmFnZSA9IHN1bSA+PiAoSHlicmlkQmluYXJpemVyLkJMT0NLX1NJWkVfUE9XRVIgKiAyKTsKCSAgICAgICAgICAgICAgICBpZiAobWF4IC0gbWluIDw9IEh5YnJpZEJpbmFyaXplci5NSU5fRFlOQU1JQ19SQU5HRSkgewoJICAgICAgICAgICAgICAgICAgICAvLyBJZiB2YXJpYXRpb24gd2l0aGluIHRoZSBibG9jayBpcyBsb3csIGFzc3VtZSB0aGlzIGlzIGEgYmxvY2sgd2l0aCBvbmx5IGxpZ2h0IG9yIG9ubHkKCSAgICAgICAgICAgICAgICAgICAgLy8gZGFyayBwaXhlbHMuIEluIHRoYXQgY2FzZSB3ZSBkbyBub3Qgd2FudCB0byB1c2UgdGhlIGF2ZXJhZ2UsIGFzIGl0IHdvdWxkIGRpdmlkZSB0aGlzCgkgICAgICAgICAgICAgICAgICAgIC8vIGxvdyBjb250cmFzdCBhcmVhIGludG8gYmxhY2sgYW5kIHdoaXRlIHBpeGVscywgZXNzZW50aWFsbHkgY3JlYXRpbmcgZGF0YSBvdXQgb2Ygbm9pc2UuCgkgICAgICAgICAgICAgICAgICAgIC8vCgkgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBkZWZhdWx0IGFzc3VtcHRpb24gaXMgdGhhdCB0aGUgYmxvY2sgaXMgbGlnaHQvYmFja2dyb3VuZC4gU2luY2Ugbm8gZXN0aW1hdGUgZm9yCgkgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBsZXZlbCBvZiBkYXJrIHBpeGVscyBleGlzdHMgbG9jYWxseSwgdXNlIGhhbGYgdGhlIG1pbiBmb3IgdGhlIGJsb2NrLgoJICAgICAgICAgICAgICAgICAgICBhdmVyYWdlID0gbWluIC8gMjsKCSAgICAgICAgICAgICAgICAgICAgaWYgKHkgPiAwICYmIHggPiAwKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb3JyZWN0IHRoZSAid2hpdGUgYmFja2dyb3VuZCIgYXNzdW1wdGlvbiBmb3IgYmxvY2tzIHRoYXQgaGF2ZSBuZWlnaGJvcnMgYnkgY29tcGFyaW5nCgkgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgcGl4ZWxzIGluIHRoaXMgYmxvY2sgdG8gdGhlIHByZXZpb3VzbHkgY2FsY3VsYXRlZCBibGFjayBwb2ludHMuIFRoaXMgaXMgYmFzZWQgb24KCSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBmYWN0IHRoYXQgZGFyayBiYXJjb2RlIHN5bWJvbG9neSBpcyBhbHdheXMgc3Vycm91bmRlZCBieSBzb21lIGFtb3VudCBvZiBsaWdodAoJICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmFja2dyb3VuZCBmb3Igd2hpY2ggcmVhc29uYWJsZSBibGFjayBwb2ludCBlc3RpbWF0ZXMgd2VyZSBtYWRlLiBUaGUgYnAgZXN0aW1hdGVkIGF0CgkgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgYm91bmRhcmllcyBpcyB1c2VkIGZvciB0aGUgaW50ZXJpb3IuCgkgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgKG1pbiA8IGJwKSBpcyBhcmJpdHJhcnkgYnV0IHdvcmtzIGJldHRlciB0aGFuIG90aGVyIGhldXJpc3RpY3MgdGhhdCB3ZXJlIHRyaWVkLgoJICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF2ZXJhZ2VOZWlnaGJvckJsYWNrUG9pbnQgPSAoYmxhY2tQb2ludHNbeSAtIDFdW3hdICsgKDIgKiBibGFja1BvaW50c1t5XVt4IC0gMV0pICsgYmxhY2tQb2ludHNbeSAtIDFdW3ggLSAxXSkgLyA0OwoJICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1pbiA8IGF2ZXJhZ2VOZWlnaGJvckJsYWNrUG9pbnQpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmVyYWdlID0gYXZlcmFnZU5laWdoYm9yQmxhY2tQb2ludDsKCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBibGFja1BvaW50c1t5XVt4XSA9IGF2ZXJhZ2U7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIGJsYWNrUG9pbnRzOwoJICAgIH07CgkgICAgLy8gVGhpcyBjbGFzcyB1c2VzIDV4NSBibG9ja3MgdG8gY29tcHV0ZSBsb2NhbCBsdW1pbmFuY2UsIHdoZXJlIGVhY2ggYmxvY2sgaXMgOHg4IHBpeGVscy4KCSAgICAvLyBTbyB0aGlzIGlzIHRoZSBzbWFsbGVzdCBkaW1lbnNpb24gaW4gZWFjaCBheGlzIHdlIGNhbiBhY2NlcHQuCgkgICAgSHlicmlkQmluYXJpemVyLkJMT0NLX1NJWkVfUE9XRVIgPSAzOwoJICAgIEh5YnJpZEJpbmFyaXplci5CTE9DS19TSVpFID0gMSA8PCBIeWJyaWRCaW5hcml6ZXIuQkxPQ0tfU0laRV9QT1dFUjsgLy8gLi4uMDEwMC4uLjAwCgkgICAgSHlicmlkQmluYXJpemVyLkJMT0NLX1NJWkVfTUFTSyA9IEh5YnJpZEJpbmFyaXplci5CTE9DS19TSVpFIC0gMTsgLy8gLi4uMDAxMS4uLjExCgkgICAgSHlicmlkQmluYXJpemVyLk1JTklNVU1fRElNRU5TSU9OID0gSHlicmlkQmluYXJpemVyLkJMT0NLX1NJWkUgKiA1OwoJICAgIEh5YnJpZEJpbmFyaXplci5NSU5fRFlOQU1JQ19SQU5HRSA9IDI0OwoJICAgIHJldHVybiBIeWJyaWRCaW5hcml6ZXI7Cgl9KEdsb2JhbEhpc3RvZ3JhbUJpbmFyaXplcl8xLmRlZmF1bHQpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IEh5YnJpZEJpbmFyaXplcjsKCgl9KTsKCgl2YXIgTHVtaW5hbmNlU291cmNlXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CgkvKgoJICogQ29weXJpZ2h0IDIwMDkgWlhpbmcgYXV0aG9ycwoJICoKCSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkgKgoJICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSAqCgkgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSAqLwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCgoJLypuYW1lc3BhY2UgY29tLmdvb2dsZS56eGluZyB7Ki8KCS8qKgoJICogVGhlIHB1cnBvc2Ugb2YgdGhpcyBjbGFzcyBoaWVyYXJjaHkgaXMgdG8gYWJzdHJhY3QgZGlmZmVyZW50IGJpdG1hcCBpbXBsZW1lbnRhdGlvbnMgYWNyb3NzCgkgKiBwbGF0Zm9ybXMgaW50byBhIHN0YW5kYXJkIGludGVyZmFjZSBmb3IgcmVxdWVzdGluZyBncmV5c2NhbGUgbHVtaW5hbmNlIHZhbHVlcy4gVGhlIGludGVyZmFjZQoJICogb25seSBwcm92aWRlcyBpbW11dGFibGUgbWV0aG9kczsgdGhlcmVmb3JlIGNyb3AgYW5kIHJvdGF0aW9uIGNyZWF0ZSBjb3BpZXMuIFRoaXMgaXMgdG8gZW5zdXJlCgkgKiB0aGF0IG9uZSBSZWFkZXIgZG9lcyBub3QgbW9kaWZ5IHRoZSBvcmlnaW5hbCBsdW1pbmFuY2Ugc291cmNlIGFuZCBsZWF2ZSBpdCBpbiBhbiB1bmtub3duIHN0YXRlCgkgKiBmb3Igb3RoZXIgUmVhZGVycyBpbiB0aGUgY2hhaW4uCgkgKgoJICogQGF1dGhvciBkc3dpdGtpbkBnb29nbGUuY29tIChEYW5pZWwgU3dpdGtpbikKCSAqLwoJdmFyIEx1bWluYW5jZVNvdXJjZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBMdW1pbmFuY2VTb3VyY2Uod2lkdGggLyppbnQqLywgaGVpZ2h0IC8qaW50Ki8pIHsKCSAgICAgICAgdGhpcy53aWR0aCA9IHdpZHRoOwoJICAgICAgICB0aGlzLmhlaWdodCA9IGhlaWdodDsKCSAgICB9CgkgICAgLyoqCgkgICAgICogQHJldHVybiBUaGUgd2lkdGggb2YgdGhlIGJpdG1hcC4KCSAgICAgKi8KCSAgICBMdW1pbmFuY2VTb3VyY2UucHJvdG90eXBlLmdldFdpZHRoID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy53aWR0aDsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEByZXR1cm4gVGhlIGhlaWdodCBvZiB0aGUgYml0bWFwLgoJICAgICAqLwoJICAgIEx1bWluYW5jZVNvdXJjZS5wcm90b3R5cGUuZ2V0SGVpZ2h0ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5oZWlnaHQ7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcmV0dXJuIFdoZXRoZXIgdGhpcyBzdWJjbGFzcyBzdXBwb3J0cyBjcm9wcGluZy4KCSAgICAgKi8KCSAgICBMdW1pbmFuY2VTb3VyY2UucHJvdG90eXBlLmlzQ3JvcFN1cHBvcnRlZCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIGZhbHNlOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogUmV0dXJucyBhIG5ldyBvYmplY3Qgd2l0aCBjcm9wcGVkIGltYWdlIGRhdGEuIEltcGxlbWVudGF0aW9ucyBtYXkga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUKCSAgICAgKiBvcmlnaW5hbCBkYXRhIHJhdGhlciB0aGFuIGEgY29weS4gT25seSBjYWxsYWJsZSBpZiBpc0Nyb3BTdXBwb3J0ZWQoKSBpcyB0cnVlLgoJICAgICAqCgkgICAgICogQHBhcmFtIGxlZnQgVGhlIGxlZnQgY29vcmRpbmF0ZSwgd2hpY2ggbXVzdCBiZSBpbiBbMCxnZXRXaWR0aCgpKQoJICAgICAqIEBwYXJhbSB0b3AgVGhlIHRvcCBjb29yZGluYXRlLCB3aGljaCBtdXN0IGJlIGluIFswLGdldEhlaWdodCgpKQoJICAgICAqIEBwYXJhbSB3aWR0aCBUaGUgd2lkdGggb2YgdGhlIHJlY3RhbmdsZSB0byBjcm9wLgoJICAgICAqIEBwYXJhbSBoZWlnaHQgVGhlIGhlaWdodCBvZiB0aGUgcmVjdGFuZ2xlIHRvIGNyb3AuCgkgICAgICogQHJldHVybiBBIGNyb3BwZWQgdmVyc2lvbiBvZiB0aGlzIG9iamVjdC4KCSAgICAgKi8KCSAgICBMdW1pbmFuY2VTb3VyY2UucHJvdG90eXBlLmNyb3AgPSBmdW5jdGlvbiAobGVmdCAvKmludCovLCB0b3AgLyppbnQqLywgd2lkdGggLyppbnQqLywgaGVpZ2h0IC8qaW50Ki8pIHsKCSAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uXzEuZGVmYXVsdCgnVGhpcyBsdW1pbmFuY2Ugc291cmNlIGRvZXMgbm90IHN1cHBvcnQgY3JvcHBpbmcuJyk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcmV0dXJuIFdoZXRoZXIgdGhpcyBzdWJjbGFzcyBzdXBwb3J0cyBjb3VudGVyLWNsb2Nrd2lzZSByb3RhdGlvbi4KCSAgICAgKi8KCSAgICBMdW1pbmFuY2VTb3VyY2UucHJvdG90eXBlLmlzUm90YXRlU3VwcG9ydGVkID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gZmFsc2U7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCB3aXRoIHJvdGF0ZWQgaW1hZ2UgZGF0YSBieSA5MCBkZWdyZWVzIGNvdW50ZXJjbG9ja3dpc2UuCgkgICAgICogT25seSBjYWxsYWJsZSBpZiB7QGxpbmsgI2lzUm90YXRlU3VwcG9ydGVkKCl9IGlzIHRydWUuCgkgICAgICoKCSAgICAgKiBAcmV0dXJuIEEgcm90YXRlZCB2ZXJzaW9uIG9mIHRoaXMgb2JqZWN0LgoJICAgICAqLwoJICAgIEx1bWluYW5jZVNvdXJjZS5wcm90b3R5cGUucm90YXRlQ291bnRlckNsb2Nrd2lzZSA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uXzEuZGVmYXVsdCgnVGhpcyBsdW1pbmFuY2Ugc291cmNlIGRvZXMgbm90IHN1cHBvcnQgcm90YXRpb24gYnkgOTAgZGVncmVlcy4nKTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIFJldHVybnMgYSBuZXcgb2JqZWN0IHdpdGggcm90YXRlZCBpbWFnZSBkYXRhIGJ5IDQ1IGRlZ3JlZXMgY291bnRlcmNsb2Nrd2lzZS4KCSAgICAgKiBPbmx5IGNhbGxhYmxlIGlmIHtAbGluayAjaXNSb3RhdGVTdXBwb3J0ZWQoKX0gaXMgdHJ1ZS4KCSAgICAgKgoJICAgICAqIEByZXR1cm4gQSByb3RhdGVkIHZlcnNpb24gb2YgdGhpcyBvYmplY3QuCgkgICAgICovCgkgICAgTHVtaW5hbmNlU291cmNlLnByb3RvdHlwZS5yb3RhdGVDb3VudGVyQ2xvY2t3aXNlNDUgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbl8xLmRlZmF1bHQoJ1RoaXMgbHVtaW5hbmNlIHNvdXJjZSBkb2VzIG5vdCBzdXBwb3J0IHJvdGF0aW9uIGJ5IDQ1IGRlZ3JlZXMuJyk7CgkgICAgfTsKCSAgICAvKkBPdmVycmlkZSovCgkgICAgTHVtaW5hbmNlU291cmNlLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgdmFyIHJvdyA9IG5ldyBVaW50OENsYW1wZWRBcnJheSh0aGlzLndpZHRoKTsKCSAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWlsZGVyXzEuZGVmYXVsdCgpOwoJICAgICAgICBmb3IgKHZhciB5ID0gMDsgeSA8IHRoaXMuaGVpZ2h0OyB5KyspIHsKCSAgICAgICAgICAgIHZhciBzb3VyY2VSb3cgPSB0aGlzLmdldFJvdyh5LCByb3cpOwoJICAgICAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCB0aGlzLndpZHRoOyB4KyspIHsKCSAgICAgICAgICAgICAgICB2YXIgbHVtaW5hbmNlID0gc291cmNlUm93W3hdICYgMHhGRjsKCSAgICAgICAgICAgICAgICB2YXIgYyA9IHZvaWQgMDsKCSAgICAgICAgICAgICAgICBpZiAobHVtaW5hbmNlIDwgMHg0MCkgewoJICAgICAgICAgICAgICAgICAgICBjID0gJyMnOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBlbHNlIGlmIChsdW1pbmFuY2UgPCAweDgwKSB7CgkgICAgICAgICAgICAgICAgICAgIGMgPSAnKyc7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGVsc2UgaWYgKGx1bWluYW5jZSA8IDB4QzApIHsKCSAgICAgICAgICAgICAgICAgICAgYyA9ICcuJzsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgICAgIGMgPSAnICc7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoYyk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCdcbicpOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKCSAgICB9OwoJICAgIHJldHVybiBMdW1pbmFuY2VTb3VyY2U7Cgl9KCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gTHVtaW5hbmNlU291cmNlOwoKCX0pOwoKCXZhciBJbnZlcnRlZEx1bWluYW5jZVNvdXJjZV8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJLyoKCSAqIENvcHlyaWdodCAyMDA5IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCXZhciBfX2V4dGVuZHMgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkgewoJICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fAoJICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fAoJICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07CgkgICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgIH07CgkgICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfQoJICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7CgkgICAgfTsKCX0pKCk7CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoKCS8qbmFtZXNwYWNlIGNvbS5nb29nbGUuenhpbmcgeyovCgkvKioKCSAqIEEgd3JhcHBlciBpbXBsZW1lbnRhdGlvbiBvZiB7QGxpbmsgTHVtaW5hbmNlU291cmNlfSB3aGljaCBpbnZlcnRzIHRoZSBsdW1pbmFuY2VzIGl0IHJldHVybnMgLS0gYmxhY2sgYmVjb21lcwoJICogd2hpdGUgYW5kIHZpY2UgdmVyc2EsIGFuZCBlYWNoIHZhbHVlIGJlY29tZXMgKDI1NS12YWx1ZSkuCgkgKgoJICogQGF1dGhvciBTZWFuIE93ZW4KCSAqLwoJdmFyIEludmVydGVkTHVtaW5hbmNlU291cmNlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikgewoJICAgIF9fZXh0ZW5kcyhJbnZlcnRlZEx1bWluYW5jZVNvdXJjZSwgX3N1cGVyKTsKCSAgICBmdW5jdGlvbiBJbnZlcnRlZEx1bWluYW5jZVNvdXJjZShkZWxlZ2F0ZSkgewoJICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBkZWxlZ2F0ZS5nZXRXaWR0aCgpLCBkZWxlZ2F0ZS5nZXRIZWlnaHQoKSkgfHwgdGhpczsKCSAgICAgICAgX3RoaXMuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKCSAgICAgICAgcmV0dXJuIF90aGlzOwoJICAgIH0KCSAgICAvKkBPdmVycmlkZSovCgkgICAgSW52ZXJ0ZWRMdW1pbmFuY2VTb3VyY2UucHJvdG90eXBlLmdldFJvdyA9IGZ1bmN0aW9uICh5IC8qaW50Ki8sIHJvdykgewoJICAgICAgICB2YXIgc291cmNlUm93ID0gdGhpcy5kZWxlZ2F0ZS5nZXRSb3coeSwgcm93KTsKCSAgICAgICAgdmFyIHdpZHRoID0gdGhpcy5nZXRXaWR0aCgpOwoJICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHdpZHRoOyBpKyspIHsKCSAgICAgICAgICAgIHNvdXJjZVJvd1tpXSA9IC8qKGJ5dGUpKi8gKDI1NSAtIChzb3VyY2VSb3dbaV0gJiAweEZGKSk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHNvdXJjZVJvdzsKCSAgICB9OwoJICAgIC8qQE92ZXJyaWRlKi8KCSAgICBJbnZlcnRlZEx1bWluYW5jZVNvdXJjZS5wcm90b3R5cGUuZ2V0TWF0cml4ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICB2YXIgbWF0cml4ID0gdGhpcy5kZWxlZ2F0ZS5nZXRNYXRyaXgoKTsKCSAgICAgICAgdmFyIGxlbmd0aCA9IHRoaXMuZ2V0V2lkdGgoKSAqIHRoaXMuZ2V0SGVpZ2h0KCk7CgkgICAgICAgIHZhciBpbnZlcnRlZE1hdHJpeCA9IG5ldyBVaW50OENsYW1wZWRBcnJheShsZW5ndGgpOwoJICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CgkgICAgICAgICAgICBpbnZlcnRlZE1hdHJpeFtpXSA9IC8qKGJ5dGUpKi8gKDI1NSAtIChtYXRyaXhbaV0gJiAweEZGKSk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIGludmVydGVkTWF0cml4OwoJICAgIH07CgkgICAgLypAT3ZlcnJpZGUqLwoJICAgIEludmVydGVkTHVtaW5hbmNlU291cmNlLnByb3RvdHlwZS5pc0Nyb3BTdXBwb3J0ZWQgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLmlzQ3JvcFN1cHBvcnRlZCgpOwoJICAgIH07CgkgICAgLypAT3ZlcnJpZGUqLwoJICAgIEludmVydGVkTHVtaW5hbmNlU291cmNlLnByb3RvdHlwZS5jcm9wID0gZnVuY3Rpb24gKGxlZnQgLyppbnQqLywgdG9wIC8qaW50Ki8sIHdpZHRoIC8qaW50Ki8sIGhlaWdodCAvKmludCovKSB7CgkgICAgICAgIHJldHVybiBuZXcgSW52ZXJ0ZWRMdW1pbmFuY2VTb3VyY2UodGhpcy5kZWxlZ2F0ZS5jcm9wKGxlZnQsIHRvcCwgd2lkdGgsIGhlaWdodCkpOwoJICAgIH07CgkgICAgLypAT3ZlcnJpZGUqLwoJICAgIEludmVydGVkTHVtaW5hbmNlU291cmNlLnByb3RvdHlwZS5pc1JvdGF0ZVN1cHBvcnRlZCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUuaXNSb3RhdGVTdXBwb3J0ZWQoKTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEByZXR1cm4gb3JpZ2luYWwgZGVsZWdhdGUge0BsaW5rIEx1bWluYW5jZVNvdXJjZX0gc2luY2UgaW52ZXJ0IHVuZG9lcyBpdHNlbGYKCSAgICAgKi8KCSAgICAvKkBPdmVycmlkZSovCgkgICAgSW52ZXJ0ZWRMdW1pbmFuY2VTb3VyY2UucHJvdG90eXBlLmludmVydCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuZGVsZWdhdGU7CgkgICAgfTsKCSAgICAvKkBPdmVycmlkZSovCgkgICAgSW52ZXJ0ZWRMdW1pbmFuY2VTb3VyY2UucHJvdG90eXBlLnJvdGF0ZUNvdW50ZXJDbG9ja3dpc2UgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiBuZXcgSW52ZXJ0ZWRMdW1pbmFuY2VTb3VyY2UodGhpcy5kZWxlZ2F0ZS5yb3RhdGVDb3VudGVyQ2xvY2t3aXNlKCkpOwoJICAgIH07CgkgICAgLypAT3ZlcnJpZGUqLwoJICAgIEludmVydGVkTHVtaW5hbmNlU291cmNlLnByb3RvdHlwZS5yb3RhdGVDb3VudGVyQ2xvY2t3aXNlNDUgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiBuZXcgSW52ZXJ0ZWRMdW1pbmFuY2VTb3VyY2UodGhpcy5kZWxlZ2F0ZS5yb3RhdGVDb3VudGVyQ2xvY2t3aXNlNDUoKSk7CgkgICAgfTsKCSAgICByZXR1cm4gSW52ZXJ0ZWRMdW1pbmFuY2VTb3VyY2U7Cgl9KEx1bWluYW5jZVNvdXJjZV8xLmRlZmF1bHQpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IEludmVydGVkTHVtaW5hbmNlU291cmNlOwoKCX0pOwoKCXZhciBIVE1MQ2FudmFzRWxlbWVudEx1bWluYW5jZVNvdXJjZV8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJdmFyIF9fZXh0ZW5kcyA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7CgkgICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8CgkgICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8CgkgICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTsKCSAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgfTsKCSAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9CgkgICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTsKCSAgICB9OwoJfSkoKTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CglleHBvcnRzLkhUTUxDYW52YXNFbGVtZW50THVtaW5hbmNlU291cmNlID0gdm9pZCAwOwoKCgoJLyoqCgkgKiBAZGVwcmVjYXRlZCBNb3ZpbmcgdG8gQHp4aW5nL2Jyb3dzZXIKCSAqLwoJdmFyIEhUTUxDYW52YXNFbGVtZW50THVtaW5hbmNlU291cmNlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikgewoJICAgIF9fZXh0ZW5kcyhIVE1MQ2FudmFzRWxlbWVudEx1bWluYW5jZVNvdXJjZSwgX3N1cGVyKTsKCSAgICBmdW5jdGlvbiBIVE1MQ2FudmFzRWxlbWVudEx1bWluYW5jZVNvdXJjZShjYW52YXMpIHsKCSAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KSB8fCB0aGlzOwoJICAgICAgICBfdGhpcy5jYW52YXMgPSBjYW52YXM7CgkgICAgICAgIF90aGlzLnRlbXBDYW52YXNFbGVtZW50ID0gbnVsbDsKCSAgICAgICAgX3RoaXMuYnVmZmVyID0gSFRNTENhbnZhc0VsZW1lbnRMdW1pbmFuY2VTb3VyY2UubWFrZUJ1ZmZlckZyb21DYW52YXNJbWFnZURhdGEoY2FudmFzKTsKCSAgICAgICAgcmV0dXJuIF90aGlzOwoJICAgIH0KCSAgICBIVE1MQ2FudmFzRWxlbWVudEx1bWluYW5jZVNvdXJjZS5tYWtlQnVmZmVyRnJvbUNhbnZhc0ltYWdlRGF0YSA9IGZ1bmN0aW9uIChjYW52YXMpIHsKCSAgICAgICAgdmFyIGltYWdlRGF0YSA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpLmdldEltYWdlRGF0YSgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpOwoJICAgICAgICByZXR1cm4gSFRNTENhbnZhc0VsZW1lbnRMdW1pbmFuY2VTb3VyY2UudG9HcmF5c2NhbGVCdWZmZXIoaW1hZ2VEYXRhLmRhdGEsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7CgkgICAgfTsKCSAgICBIVE1MQ2FudmFzRWxlbWVudEx1bWluYW5jZVNvdXJjZS50b0dyYXlzY2FsZUJ1ZmZlciA9IGZ1bmN0aW9uIChpbWFnZUJ1ZmZlciwgd2lkdGgsIGhlaWdodCkgewoJICAgICAgICB2YXIgZ3JheXNjYWxlQnVmZmVyID0gbmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHdpZHRoICogaGVpZ2h0KTsKCSAgICAgICAgZm9yICh2YXIgaSA9IDAsIGogPSAwLCBsZW5ndGhfMSA9IGltYWdlQnVmZmVyLmxlbmd0aDsgaSA8IGxlbmd0aF8xOyBpICs9IDQsIGorKykgewoJICAgICAgICAgICAgdmFyIGdyYXkgPSB2b2lkIDA7CgkgICAgICAgICAgICB2YXIgYWxwaGEgPSBpbWFnZUJ1ZmZlcltpICsgM107CgkgICAgICAgICAgICAvLyBUaGUgY29sb3Igb2YgZnVsbHktdHJhbnNwYXJlbnQgcGl4ZWxzIGlzIGlycmVsZXZhbnQuIFRoZXkgYXJlIG9mdGVuLCB0ZWNobmljYWxseSwgZnVsbHktdHJhbnNwYXJlbnQKCSAgICAgICAgICAgIC8vIGJsYWNrICgwIGFscGhhLCBhbmQgdGhlbiAwIFJHQikuIFRoZXkgYXJlIG9mdGVuIHVzZWQsIG9mIGNvdXJzZSBhcyB0aGUgIndoaXRlIiBhcmVhIGluIGEKCSAgICAgICAgICAgIC8vIGJhcmNvZGUgaW1hZ2UuIEZvcmNlIGFueSBzdWNoIHBpeGVsIHRvIGJlIHdoaXRlOgoJICAgICAgICAgICAgaWYgKGFscGhhID09PSAwKSB7CgkgICAgICAgICAgICAgICAgZ3JheSA9IDB4RkY7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICB2YXIgcGl4ZWxSID0gaW1hZ2VCdWZmZXJbaV07CgkgICAgICAgICAgICAgICAgdmFyIHBpeGVsRyA9IGltYWdlQnVmZmVyW2kgKyAxXTsKCSAgICAgICAgICAgICAgICB2YXIgcGl4ZWxCID0gaW1hZ2VCdWZmZXJbaSArIDJdOwoJICAgICAgICAgICAgICAgIC8vIC4yOTlSICsgMC41ODdHICsgMC4xMTRCIChZVVYvWUlRIGZvciBQQUwgYW5kIE5UU0MpLAoJICAgICAgICAgICAgICAgIC8vICgzMDYqUikgPj4gMTAgaXMgYXBwcm94aW1hdGVseSBlcXVhbCB0byBSKjAuMjk5LCBhbmQgc28gb24uCgkgICAgICAgICAgICAgICAgLy8gMHgyMDAgPj4gMTAgaXMgMC41LCBpdCBpbXBsZW1lbnRzIHJvdW5kaW5nLgoJICAgICAgICAgICAgICAgIGdyYXkgPSAoMzA2ICogcGl4ZWxSICsKCSAgICAgICAgICAgICAgICAgICAgNjAxICogcGl4ZWxHICsKCSAgICAgICAgICAgICAgICAgICAgMTE3ICogcGl4ZWxCICsKCSAgICAgICAgICAgICAgICAgICAgMHgyMDApID4+IDEwOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZ3JheXNjYWxlQnVmZmVyW2pdID0gZ3JheTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gZ3JheXNjYWxlQnVmZmVyOwoJICAgIH07CgkgICAgSFRNTENhbnZhc0VsZW1lbnRMdW1pbmFuY2VTb3VyY2UucHJvdG90eXBlLmdldFJvdyA9IGZ1bmN0aW9uICh5IC8qaW50Ki8sIHJvdykgewoJICAgICAgICBpZiAoeSA8IDAgfHwgeSA+PSB0aGlzLmdldEhlaWdodCgpKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgnUmVxdWVzdGVkIHJvdyBpcyBvdXRzaWRlIHRoZSBpbWFnZTogJyArIHkpOwoJICAgICAgICB9CgkgICAgICAgIHZhciB3aWR0aCA9IHRoaXMuZ2V0V2lkdGgoKTsKCSAgICAgICAgdmFyIHN0YXJ0ID0geSAqIHdpZHRoOwoJICAgICAgICBpZiAocm93ID09PSBudWxsKSB7CgkgICAgICAgICAgICByb3cgPSB0aGlzLmJ1ZmZlci5zbGljZShzdGFydCwgc3RhcnQgKyB3aWR0aCk7CgkgICAgICAgIH0KCSAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICBpZiAocm93Lmxlbmd0aCA8IHdpZHRoKSB7CgkgICAgICAgICAgICAgICAgcm93ID0gbmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHdpZHRoKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIC8vIFRoZSB1bmRlcmx5aW5nIHJhc3RlciBvZiBpbWFnZSBjb25zaXN0cyBvZiBieXRlcyB3aXRoIHRoZSBsdW1pbmFuY2UgdmFsdWVzCgkgICAgICAgICAgICAvLyBUT0RPOiBjYW4gYXZvaWQgc2V0L3NsaWNlPwoJICAgICAgICAgICAgcm93LnNldCh0aGlzLmJ1ZmZlci5zbGljZShzdGFydCwgc3RhcnQgKyB3aWR0aCkpOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiByb3c7CgkgICAgfTsKCSAgICBIVE1MQ2FudmFzRWxlbWVudEx1bWluYW5jZVNvdXJjZS5wcm90b3R5cGUuZ2V0TWF0cml4ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5idWZmZXI7CgkgICAgfTsKCSAgICBIVE1MQ2FudmFzRWxlbWVudEx1bWluYW5jZVNvdXJjZS5wcm90b3R5cGUuaXNDcm9wU3VwcG9ydGVkID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdHJ1ZTsKCSAgICB9OwoJICAgIEhUTUxDYW52YXNFbGVtZW50THVtaW5hbmNlU291cmNlLnByb3RvdHlwZS5jcm9wID0gZnVuY3Rpb24gKGxlZnQgLyppbnQqLywgdG9wIC8qaW50Ki8sIHdpZHRoIC8qaW50Ki8sIGhlaWdodCAvKmludCovKSB7CgkgICAgICAgIF9zdXBlci5wcm90b3R5cGUuY3JvcC5jYWxsKHRoaXMsIGxlZnQsIHRvcCwgd2lkdGgsIGhlaWdodCk7CgkgICAgICAgIHJldHVybiB0aGlzOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogVGhpcyBpcyBhbHdheXMgdHJ1ZSwgc2luY2UgdGhlIGltYWdlIGlzIGEgZ3JheS1zY2FsZSBpbWFnZS4KCSAgICAgKgoJICAgICAqIEByZXR1cm4gdHJ1ZQoJICAgICAqLwoJICAgIEhUTUxDYW52YXNFbGVtZW50THVtaW5hbmNlU291cmNlLnByb3RvdHlwZS5pc1JvdGF0ZVN1cHBvcnRlZCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRydWU7CgkgICAgfTsKCSAgICBIVE1MQ2FudmFzRWxlbWVudEx1bWluYW5jZVNvdXJjZS5wcm90b3R5cGUucm90YXRlQ291bnRlckNsb2Nrd2lzZSA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgdGhpcy5yb3RhdGUoLTkwKTsKCSAgICAgICAgcmV0dXJuIHRoaXM7CgkgICAgfTsKCSAgICBIVE1MQ2FudmFzRWxlbWVudEx1bWluYW5jZVNvdXJjZS5wcm90b3R5cGUucm90YXRlQ291bnRlckNsb2Nrd2lzZTQ1ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICB0aGlzLnJvdGF0ZSgtNDUpOwoJICAgICAgICByZXR1cm4gdGhpczsKCSAgICB9OwoJICAgIEhUTUxDYW52YXNFbGVtZW50THVtaW5hbmNlU291cmNlLnByb3RvdHlwZS5nZXRUZW1wQ2FudmFzRWxlbWVudCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgaWYgKG51bGwgPT09IHRoaXMudGVtcENhbnZhc0VsZW1lbnQpIHsKCSAgICAgICAgICAgIHZhciB0ZW1wQ2FudmFzRWxlbWVudCA9IHRoaXMuY2FudmFzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7CgkgICAgICAgICAgICB0ZW1wQ2FudmFzRWxlbWVudC53aWR0aCA9IHRoaXMuY2FudmFzLndpZHRoOwoJICAgICAgICAgICAgdGVtcENhbnZhc0VsZW1lbnQuaGVpZ2h0ID0gdGhpcy5jYW52YXMuaGVpZ2h0OwoJICAgICAgICAgICAgdGhpcy50ZW1wQ2FudmFzRWxlbWVudCA9IHRlbXBDYW52YXNFbGVtZW50OwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiB0aGlzLnRlbXBDYW52YXNFbGVtZW50OwoJICAgIH07CgkgICAgSFRNTENhbnZhc0VsZW1lbnRMdW1pbmFuY2VTb3VyY2UucHJvdG90eXBlLnJvdGF0ZSA9IGZ1bmN0aW9uIChhbmdsZSkgewoJICAgICAgICB2YXIgdGVtcENhbnZhc0VsZW1lbnQgPSB0aGlzLmdldFRlbXBDYW52YXNFbGVtZW50KCk7CgkgICAgICAgIHZhciB0ZW1wQ29udGV4dCA9IHRlbXBDYW52YXNFbGVtZW50LmdldENvbnRleHQoJzJkJyk7CgkgICAgICAgIHZhciBhbmdsZVJhZGlhbnMgPSBhbmdsZSAqIEhUTUxDYW52YXNFbGVtZW50THVtaW5hbmNlU291cmNlLkRFR1JFRV9UT19SQURJQU5TOwoJICAgICAgICAvLyBDYWxjdWxhdGUgYW5kIHNldCBuZXcgZGltZW5zaW9ucyBmb3IgdGVtcCBjYW52YXMKCSAgICAgICAgdmFyIHdpZHRoID0gdGhpcy5jYW52YXMud2lkdGg7CgkgICAgICAgIHZhciBoZWlnaHQgPSB0aGlzLmNhbnZhcy5oZWlnaHQ7CgkgICAgICAgIHZhciBuZXdXaWR0aCA9IE1hdGguY2VpbChNYXRoLmFicyhNYXRoLmNvcyhhbmdsZVJhZGlhbnMpKSAqIHdpZHRoICsgTWF0aC5hYnMoTWF0aC5zaW4oYW5nbGVSYWRpYW5zKSkgKiBoZWlnaHQpOwoJICAgICAgICB2YXIgbmV3SGVpZ2h0ID0gTWF0aC5jZWlsKE1hdGguYWJzKE1hdGguc2luKGFuZ2xlUmFkaWFucykpICogd2lkdGggKyBNYXRoLmFicyhNYXRoLmNvcyhhbmdsZVJhZGlhbnMpKSAqIGhlaWdodCk7CgkgICAgICAgIHRlbXBDYW52YXNFbGVtZW50LndpZHRoID0gbmV3V2lkdGg7CgkgICAgICAgIHRlbXBDYW52YXNFbGVtZW50LmhlaWdodCA9IG5ld0hlaWdodDsKCSAgICAgICAgLy8gRHJhdyBhdCBjZW50ZXIgb2YgdGVtcCBjYW52YXMgdG8gcHJldmVudCBjbGlwcGluZyBvZiBpbWFnZSBkYXRhCgkgICAgICAgIHRlbXBDb250ZXh0LnRyYW5zbGF0ZShuZXdXaWR0aCAvIDIsIG5ld0hlaWdodCAvIDIpOwoJICAgICAgICB0ZW1wQ29udGV4dC5yb3RhdGUoYW5nbGVSYWRpYW5zKTsKCSAgICAgICAgdGVtcENvbnRleHQuZHJhd0ltYWdlKHRoaXMuY2FudmFzLCB3aWR0aCAvIC0yLCBoZWlnaHQgLyAtMik7CgkgICAgICAgIHRoaXMuYnVmZmVyID0gSFRNTENhbnZhc0VsZW1lbnRMdW1pbmFuY2VTb3VyY2UubWFrZUJ1ZmZlckZyb21DYW52YXNJbWFnZURhdGEodGVtcENhbnZhc0VsZW1lbnQpOwoJICAgICAgICByZXR1cm4gdGhpczsKCSAgICB9OwoJICAgIEhUTUxDYW52YXNFbGVtZW50THVtaW5hbmNlU291cmNlLnByb3RvdHlwZS5pbnZlcnQgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiBuZXcgSW52ZXJ0ZWRMdW1pbmFuY2VTb3VyY2VfMS5kZWZhdWx0KHRoaXMpOwoJICAgIH07CgkgICAgSFRNTENhbnZhc0VsZW1lbnRMdW1pbmFuY2VTb3VyY2UuREVHUkVFX1RPX1JBRElBTlMgPSBNYXRoLlBJIC8gMTgwOwoJICAgIHJldHVybiBIVE1MQ2FudmFzRWxlbWVudEx1bWluYW5jZVNvdXJjZTsKCX0oTHVtaW5hbmNlU291cmNlXzEuZGVmYXVsdCkpOwoJZXhwb3J0cy5IVE1MQ2FudmFzRWxlbWVudEx1bWluYW5jZVNvdXJjZSA9IEhUTUxDYW52YXNFbGVtZW50THVtaW5hbmNlU291cmNlOwoKCX0pOwoKCXZhciBWaWRlb0lucHV0RGV2aWNlXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJZXhwb3J0cy5WaWRlb0lucHV0RGV2aWNlID0gdm9pZCAwOwoJLyoqCgkgKiBAZGVwcmVjYXRlZCBNb3ZpbmcgdG8gQHp4aW5nL2Jyb3dzZXIKCSAqCgkgKiBWaWRlbyBpbnB1dCBkZXZpY2UgbWV0YWRhdGEgY29udGFpbmluZyB0aGUgaWQgYW5kIGxhYmVsIG9mIHRoZSBkZXZpY2UgaWYgYXZhaWxhYmxlLgoJICovCgl2YXIgVmlkZW9JbnB1dERldmljZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICAvKioKCSAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIFZpZGVvSW5wdXREZXZpY2UuCgkgICAgICoKCSAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGV2aWNlSWQgdGhlIHZpZGVvIGlucHV0IGRldmljZSBpZAoJICAgICAqIEBwYXJhbSB7c3RyaW5nfSBsYWJlbCB0aGUgbGFiZWwgb2YgdGhlIGRldmljZSBpZiBhdmFpbGFibGUKCSAgICAgKi8KCSAgICBmdW5jdGlvbiBWaWRlb0lucHV0RGV2aWNlKGRldmljZUlkLCBsYWJlbCwgZ3JvdXBJZCkgewoJICAgICAgICB0aGlzLmRldmljZUlkID0gZGV2aWNlSWQ7CgkgICAgICAgIHRoaXMubGFiZWwgPSBsYWJlbDsKCSAgICAgICAgLyoqIEBpbmhlcml0ZG9jICovCgkgICAgICAgIHRoaXMua2luZCA9ICd2aWRlb2lucHV0JzsKCSAgICAgICAgdGhpcy5ncm91cElkID0gZ3JvdXBJZCB8fCB1bmRlZmluZWQ7CgkgICAgfQoJICAgIC8qKiBAaW5oZXJpdGRvYyAqLwoJICAgIFZpZGVvSW5wdXREZXZpY2UucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHsKCSAgICAgICAgICAgIGtpbmQ6IHRoaXMua2luZCwKCSAgICAgICAgICAgIGdyb3VwSWQ6IHRoaXMuZ3JvdXBJZCwKCSAgICAgICAgICAgIGRldmljZUlkOiB0aGlzLmRldmljZUlkLAoJICAgICAgICAgICAgbGFiZWw6IHRoaXMubGFiZWwsCgkgICAgICAgIH07CgkgICAgfTsKCSAgICByZXR1cm4gVmlkZW9JbnB1dERldmljZTsKCX0oKSk7CglleHBvcnRzLlZpZGVvSW5wdXREZXZpY2UgPSBWaWRlb0lucHV0RGV2aWNlOwoKCX0pOwoKCXZhciBCcm93c2VyQ29kZVJlYWRlcl8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJdmFyIF9fYXdhaXRlciA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHsKCSAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH0KCSAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKCSAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfQoJICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvclsidGhyb3ciXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9CgkgICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9CgkgICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTsKCSAgICB9KTsKCX07Cgl2YXIgX19nZW5lcmF0b3IgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7CgkgICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZzsKCSAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgInRocm93IjogdmVyYigxKSwgInJldHVybiI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gImZ1bmN0aW9uIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZzsKCSAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH0KCSAgICBmdW5jdGlvbiBzdGVwKG9wKSB7CgkgICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7CgkgICAgICAgIHdoaWxlIChfKSB0cnkgewoJICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVsicmV0dXJuIl0gOiBvcFswXSA/IHlbInRocm93Il0gfHwgKCh0ID0geVsicmV0dXJuIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0OwoJICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdOwoJICAgICAgICAgICAgc3dpdGNoIChvcFswXSkgewoJICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrOwoJICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07CgkgICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlOwoJICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTsKCSAgICAgICAgICAgICAgICBkZWZhdWx0OgoJICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH0KCSAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH0KCSAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9CgkgICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH0KCSAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpOwoJICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7CgkgICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH0KCSAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07CgkgICAgfQoJfTsKCXZhciBfX3ZhbHVlcyA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX3ZhbHVlcykgfHwgZnVuY3Rpb24obykgewoJICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gImZ1bmN0aW9uIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwOwoJICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pOwoJICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gIm51bWJlciIpIHJldHVybiB7CgkgICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7CgkgICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07CgkgICAgICAgIH0KCSAgICB9OwoJICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/ICJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLiIgOiAiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpOwoJfTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CglleHBvcnRzLkJyb3dzZXJDb2RlUmVhZGVyID0gdm9pZCAwOwoKCgoKCgoKCgkvKioKCSAqIEBkZXByZWNhdGVkIE1vdmluZyB0byBAenhpbmcvYnJvd3NlcgoJICoKCSAqIEJhc2UgY2xhc3MgZm9yIGJyb3dzZXIgY29kZSByZWFkZXIuCgkgKi8KCXZhciBCcm93c2VyQ29kZVJlYWRlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICAvKioKCSAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIEJyb3dzZXJDb2RlUmVhZGVyLgoJICAgICAqIEBwYXJhbSB7UmVhZGVyfSByZWFkZXIgVGhlIHJlYWRlciBpbnN0YW5jZSB0byBkZWNvZGUgdGhlIGJhcmNvZGUKCSAgICAgKiBAcGFyYW0ge251bWJlcn0gW3RpbWVCZXR3ZWVuU2NhbnNNaWxsaXM9NTAwXSB0aGUgdGltZSBkZWxheSBiZXR3ZWVuIHN1YnNlcXVlbnQgc3VjY2Vzc2Z1bCBkZWNvZGUgdHJpZXMKCSAgICAgKgoJICAgICAqIEBtZW1iZXJPZiBCcm93c2VyQ29kZVJlYWRlcgoJICAgICAqLwoJICAgIGZ1bmN0aW9uIEJyb3dzZXJDb2RlUmVhZGVyKHJlYWRlciwgdGltZUJldHdlZW5TY2Fuc01pbGxpcywgX2hpbnRzKSB7CgkgICAgICAgIGlmICh0aW1lQmV0d2VlblNjYW5zTWlsbGlzID09PSB2b2lkIDApIHsgdGltZUJldHdlZW5TY2Fuc01pbGxpcyA9IDUwMDsgfQoJICAgICAgICB0aGlzLnJlYWRlciA9IHJlYWRlcjsKCSAgICAgICAgdGhpcy50aW1lQmV0d2VlblNjYW5zTWlsbGlzID0gdGltZUJldHdlZW5TY2Fuc01pbGxpczsKCSAgICAgICAgdGhpcy5faGludHMgPSBfaGludHM7CgkgICAgICAgIC8qKgoJICAgICAgICAgKiBUaGlzIHdpbGwgYnJlYWsgdGhlIGxvb3AuCgkgICAgICAgICAqLwoJICAgICAgICB0aGlzLl9zdG9wQ29udGludW91c0RlY29kZSA9IGZhbHNlOwoJICAgICAgICAvKioKCSAgICAgICAgICogVGhpcyB3aWxsIGJyZWFrIHRoZSBsb29wLgoJICAgICAgICAgKi8KCSAgICAgICAgdGhpcy5fc3RvcEFzeW5jRGVjb2RlID0gZmFsc2U7CgkgICAgICAgIC8qKgoJICAgICAgICAgKiBEZWxheSB0aW1lIGJldHdlZW4gZGVjb2RlIGF0dGVtcHRzIG1hZGUgYnkgdGhlIHNjYW5uZXIuCgkgICAgICAgICAqLwoJICAgICAgICB0aGlzLl90aW1lQmV0d2VlbkRlY29kaW5nQXR0ZW1wdHMgPSAwOwoJICAgIH0KCSAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQnJvd3NlckNvZGVSZWFkZXIucHJvdG90eXBlLCAiaGFzTmF2aWdhdG9yIiwgewoJICAgICAgICAvKioKCSAgICAgICAgICogSWYgbmF2aWdhdG9yIGlzIHByZXNlbnQuCgkgICAgICAgICAqLwoJICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgICAgIHJldHVybiB0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJzsKCSAgICAgICAgfSwKCSAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsCgkgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZQoJICAgIH0pOwoJICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShCcm93c2VyQ29kZVJlYWRlci5wcm90b3R5cGUsICJpc01lZGlhRGV2aWNlc1N1cG9ydGVkIiwgewoJICAgICAgICAvKioKCSAgICAgICAgICogSWYgbWVkaWFEZXZpY2VzIHVuZGVyIG5hdmlnYXRvciBpcyBzdXBwb3J0ZWQuCgkgICAgICAgICAqLwoJICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgICAgIHJldHVybiB0aGlzLmhhc05hdmlnYXRvciAmJiAhIW5hdmlnYXRvci5tZWRpYURldmljZXM7CgkgICAgICAgIH0sCgkgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLAoJICAgICAgICBjb25maWd1cmFibGU6IHRydWUKCSAgICB9KTsKCSAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQnJvd3NlckNvZGVSZWFkZXIucHJvdG90eXBlLCAiY2FuRW51bWVyYXRlRGV2aWNlcyIsIHsKCSAgICAgICAgLyoqCgkgICAgICAgICAqIElmIGVudW1lcmF0ZURldmljZXMgdW5kZXIgbmF2aWdhdG9yIGlzIHN1cHBvcnRlZC4KCSAgICAgICAgICovCgkgICAgICAgIGdldDogZnVuY3Rpb24gKCkgewoJICAgICAgICAgICAgcmV0dXJuICEhKHRoaXMuaXNNZWRpYURldmljZXNTdXBvcnRlZCAmJiBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmVudW1lcmF0ZURldmljZXMpOwoJICAgICAgICB9LAoJICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSwKCSAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlCgkgICAgfSk7CgkgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEJyb3dzZXJDb2RlUmVhZGVyLnByb3RvdHlwZSwgInRpbWVCZXR3ZWVuRGVjb2RpbmdBdHRlbXB0cyIsIHsKCSAgICAgICAgLyoqIFRpbWUgYmV0d2VlbiB0d28gZGVjb2RpbmcgdHJpZXMgaW4gbWlsbGkgc2Vjb25kcy4gKi8KCSAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7CgkgICAgICAgICAgICByZXR1cm4gdGhpcy5fdGltZUJldHdlZW5EZWNvZGluZ0F0dGVtcHRzOwoJICAgICAgICB9LAoJICAgICAgICAvKioKCSAgICAgICAgICogQ2hhbmdlIHRoZSB0aW1lIHNwYW4gdGhlIGRlY29kZXIgd2FpdHMgYmV0d2VlbiB0d28gZGVjb2RpbmcgdHJpZXMuCgkgICAgICAgICAqCgkgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtaWxsaXMgVGltZSBiZXR3ZWVuIHR3byBkZWNvZGluZyB0cmllcyBpbiBtaWxsaSBzZWNvbmRzLgoJICAgICAgICAgKi8KCSAgICAgICAgc2V0OiBmdW5jdGlvbiAobWlsbGlzKSB7CgkgICAgICAgICAgICB0aGlzLl90aW1lQmV0d2VlbkRlY29kaW5nQXR0ZW1wdHMgPSBtaWxsaXMgPCAwID8gMCA6IG1pbGxpczsKCSAgICAgICAgfSwKCSAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsCgkgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZQoJICAgIH0pOwoJICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShCcm93c2VyQ29kZVJlYWRlci5wcm90b3R5cGUsICJoaW50cyIsIHsKCSAgICAgICAgLyoqCgkgICAgICAgICAqIFNldHMgdGhlIGhpbnRzLgoJICAgICAgICAgKi8KCSAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7CgkgICAgICAgICAgICByZXR1cm4gdGhpcy5faGludHM7CgkgICAgICAgIH0sCgkgICAgICAgIC8qKgoJICAgICAgICAgKiBTZXRzIHRoZSBoaW50cy4KCSAgICAgICAgICovCgkgICAgICAgIHNldDogZnVuY3Rpb24gKGhpbnRzKSB7CgkgICAgICAgICAgICB0aGlzLl9oaW50cyA9IGhpbnRzIHx8IG51bGw7CgkgICAgICAgIH0sCgkgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLAoJICAgICAgICBjb25maWd1cmFibGU6IHRydWUKCSAgICB9KTsKCSAgICAvKioKCSAgICAgKiBMaXN0cyBhbGwgdGhlIGF2YWlsYWJsZSB2aWRlbyBpbnB1dCBkZXZpY2VzLgoJICAgICAqLwoJICAgIEJyb3dzZXJDb2RlUmVhZGVyLnByb3RvdHlwZS5saXN0VmlkZW9JbnB1dERldmljZXMgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHsKCSAgICAgICAgICAgIHZhciBkZXZpY2VzLCB2aWRlb0RldmljZXMsIGRldmljZXNfMSwgZGV2aWNlc18xXzEsIGRldmljZSwga2luZCwgZGV2aWNlSWQsIGxhYmVsLCBncm91cElkLCB2aWRlb0RldmljZTsKCSAgICAgICAgICAgIHZhciBlXzEsIF9hOwoJICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYikgewoJICAgICAgICAgICAgICAgIHN3aXRjaCAoX2IubGFiZWwpIHsKCSAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgoJICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmhhc05hdmlnYXRvcikgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ2FuXCd0IGVudW1lcmF0ZSBkZXZpY2VzLCBuYXZpZ2F0b3IgaXMgbm90IHByZXNlbnQuJyk7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY2FuRW51bWVyYXRlRGV2aWNlcykgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ2FuXCd0IGVudW1lcmF0ZSBkZXZpY2VzLCBtZXRob2Qgbm90IHN1cHBvcnRlZC4nKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIG5hdmlnYXRvci5tZWRpYURldmljZXMuZW51bWVyYXRlRGV2aWNlcygpXTsKCSAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgoJICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlcyA9IF9iLnNlbnQoKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvRGV2aWNlcyA9IFtdOwoJICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGRldmljZXNfMSA9IF9fdmFsdWVzKGRldmljZXMpLCBkZXZpY2VzXzFfMSA9IGRldmljZXNfMS5uZXh0KCk7ICFkZXZpY2VzXzFfMS5kb25lOyBkZXZpY2VzXzFfMSA9IGRldmljZXNfMS5uZXh0KCkpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlID0gZGV2aWNlc18xXzEudmFsdWU7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQgPSBkZXZpY2Uua2luZCA9PT0gJ3ZpZGVvJyA/ICd2aWRlb2lucHV0JyA6IGRldmljZS5raW5kOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2luZCAhPT0gJ3ZpZGVvaW5wdXQnKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VJZCA9IGRldmljZS5kZXZpY2VJZCB8fCBkZXZpY2UuaWQ7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gZGV2aWNlLmxhYmVsIHx8ICJWaWRlbyBkZXZpY2UgIiArICh2aWRlb0RldmljZXMubGVuZ3RoICsgMSk7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwSWQgPSBkZXZpY2UuZ3JvdXBJZDsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9EZXZpY2UgPSB7IGRldmljZUlkOiBkZXZpY2VJZCwgbGFiZWw6IGxhYmVsLCBraW5kOiBraW5kLCBncm91cElkOiBncm91cElkIH07CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvRGV2aWNlcy5wdXNoKHZpZGVvRGV2aWNlKTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfQoJICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRldmljZXNfMV8xICYmICFkZXZpY2VzXzFfMS5kb25lICYmIChfYSA9IGRldmljZXNfMS5yZXR1cm4pKSBfYS5jYWxsKGRldmljZXNfMSk7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH0KCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovLCB2aWRlb0RldmljZXNdOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0pOwoJICAgICAgICB9KTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIE9idGFpbiB0aGUgbGlzdCBvZiBhdmFpbGFibGUgZGV2aWNlcyB3aXRoIHR5cGUgJ3ZpZGVvaW5wdXQnLgoJICAgICAqCgkgICAgICogQHJldHVybnMge1Byb21pc2U8VmlkZW9JbnB1dERldmljZVtdPn0gYW4gYXJyYXkgb2YgYXZhaWxhYmxlIHZpZGVvIGlucHV0IGRldmljZXMKCSAgICAgKgoJICAgICAqIEBtZW1iZXJPZiBCcm93c2VyQ29kZVJlYWRlcgoJICAgICAqCgkgICAgICogQGRlcHJlY2F0ZWQgVXNlIGBsaXN0VmlkZW9JbnB1dERldmljZXNgIGluc3RlYWQuCgkgICAgICovCgkgICAgQnJvd3NlckNvZGVSZWFkZXIucHJvdG90eXBlLmdldFZpZGVvSW5wdXREZXZpY2VzID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7CgkgICAgICAgICAgICB2YXIgZGV2aWNlczsKCSAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHsKCSAgICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7CgkgICAgICAgICAgICAgICAgICAgIGNhc2UgMDogcmV0dXJuIFs0IC8qeWllbGQqLywgdGhpcy5saXN0VmlkZW9JbnB1dERldmljZXMoKV07CgkgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKCSAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZXMgPSBfYS5zZW50KCk7CgkgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qLywgZGV2aWNlcy5tYXAoZnVuY3Rpb24gKGQpIHsgcmV0dXJuIG5ldyBWaWRlb0lucHV0RGV2aWNlXzEuVmlkZW9JbnB1dERldmljZShkLmRldmljZUlkLCBkLmxhYmVsKTsgfSldOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0pOwoJICAgICAgICB9KTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIExldCdzIHlvdSBmaW5kIGEgZGV2aWNlIHVzaW5nIGl0J3MgSWQuCgkgICAgICovCgkgICAgQnJvd3NlckNvZGVSZWFkZXIucHJvdG90eXBlLmZpbmREZXZpY2VCeUlkID0gZnVuY3Rpb24gKGRldmljZUlkKSB7CgkgICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHsKCSAgICAgICAgICAgIHZhciBkZXZpY2VzOwoJICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkgewoJICAgICAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHsKCSAgICAgICAgICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gWzQgLyp5aWVsZCovLCB0aGlzLmxpc3RWaWRlb0lucHV0RGV2aWNlcygpXTsKCSAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgoJICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlcyA9IF9hLnNlbnQoKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZGV2aWNlcykgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovLCBudWxsXTsKCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovLCBkZXZpY2VzLmZpbmQoZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHguZGV2aWNlSWQgPT09IGRldmljZUlkOyB9KV07CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfSk7CgkgICAgICAgIH0pOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogRGVjb2RlcyB0aGUgYmFyY29kZSBmcm9tIHRoZSBkZXZpY2Ugc3BlY2lmaWVkIGJ5IGRldmljZUlkIHdoaWxlIHNob3dpbmcgdGhlIHZpZGVvIGluIHRoZSBzcGVjaWZpZWQgdmlkZW8gZWxlbWVudC4KCSAgICAgKgoJICAgICAqIEBwYXJhbSBkZXZpY2VJZCB0aGUgaWQgb2Ygb25lIG9mIHRoZSBkZXZpY2VzIG9idGFpbmVkIGFmdGVyIGNhbGxpbmcgZ2V0VmlkZW9JbnB1dERldmljZXMuIENhbiBiZSB1bmRlZmluZWQsIGluIHRoaXMgY2FzZSBpdCB3aWxsIGRlY29kZSBmcm9tIG9uZSBvZiB0aGUgYXZhaWxhYmxlIGRldmljZXMsIHByZWZmZXJpbmcgdGhlIG1haW4gY2FtZXJhIChlbnZpcm9ubWVudCBmYWNpbmcpIGlmIGF2YWlsYWJsZS4KCSAgICAgKiBAcGFyYW0gdmlkZW8gdGhlIHZpZGVvIGVsZW1lbnQgaW4gcGFnZSB3aGVyZSB0byBzaG93IHRoZSB2aWRlbyB3aGlsZSBkZWNvZGluZy4gQ2FuIGJlIGVpdGhlciBhbiBlbGVtZW50IGlkIG9yIGRpcmVjdGx5IGFuIEhUTUxWaWRlb0VsZW1lbnQuIENhbiBiZSB1bmRlZmluZWQsIGluIHdoaWNoIGNhc2Ugbm8gdmlkZW8gd2lsbCBiZSBzaG93bi4KCSAgICAgKiBAcmV0dXJucyBUaGUgZGVjb2RpbmcgcmVzdWx0LgoJICAgICAqCgkgICAgICogQG1lbWJlck9mIEJyb3dzZXJDb2RlUmVhZGVyCgkgICAgICoKCSAgICAgKiBAZGVwcmVjYXRlZCBVc2UgYGRlY29kZU9uY2VGcm9tVmlkZW9EZXZpY2VgIGluc3RlYWQuCgkgICAgICovCgkgICAgQnJvd3NlckNvZGVSZWFkZXIucHJvdG90eXBlLmRlY29kZUZyb21JbnB1dFZpZGVvRGV2aWNlID0gZnVuY3Rpb24gKGRldmljZUlkLCB2aWRlb1NvdXJjZSkgewoJICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7CgkgICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7CgkgICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkgewoJICAgICAgICAgICAgICAgICAgICBjYXNlIDA6IHJldHVybiBbNCAvKnlpZWxkKi8sIHRoaXMuZGVjb2RlT25jZUZyb21WaWRlb0RldmljZShkZXZpY2VJZCwgdmlkZW9Tb3VyY2UpXTsKCSAgICAgICAgICAgICAgICAgICAgY2FzZSAxOiByZXR1cm4gWzIgLypyZXR1cm4qLywgX2Euc2VudCgpXTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9KTsKCSAgICAgICAgfSk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBJbiBvbmUgYXR0ZW1wdCwgdHJpZXMgdG8gZGVjb2RlIHRoZSBiYXJjb2RlIGZyb20gdGhlIGRldmljZSBzcGVjaWZpZWQgYnkgZGV2aWNlSWQgd2hpbGUgc2hvd2luZyB0aGUgdmlkZW8gaW4gdGhlIHNwZWNpZmllZCB2aWRlbyBlbGVtZW50LgoJICAgICAqCgkgICAgICogQHBhcmFtIGRldmljZUlkIHRoZSBpZCBvZiBvbmUgb2YgdGhlIGRldmljZXMgb2J0YWluZWQgYWZ0ZXIgY2FsbGluZyBnZXRWaWRlb0lucHV0RGV2aWNlcy4gQ2FuIGJlIHVuZGVmaW5lZCwgaW4gdGhpcyBjYXNlIGl0IHdpbGwgZGVjb2RlIGZyb20gb25lIG9mIHRoZSBhdmFpbGFibGUgZGV2aWNlcywgcHJlZmZlcmluZyB0aGUgbWFpbiBjYW1lcmEgKGVudmlyb25tZW50IGZhY2luZykgaWYgYXZhaWxhYmxlLgoJICAgICAqIEBwYXJhbSB2aWRlbyB0aGUgdmlkZW8gZWxlbWVudCBpbiBwYWdlIHdoZXJlIHRvIHNob3cgdGhlIHZpZGVvIHdoaWxlIGRlY29kaW5nLiBDYW4gYmUgZWl0aGVyIGFuIGVsZW1lbnQgaWQgb3IgZGlyZWN0bHkgYW4gSFRNTFZpZGVvRWxlbWVudC4gQ2FuIGJlIHVuZGVmaW5lZCwgaW4gd2hpY2ggY2FzZSBubyB2aWRlbyB3aWxsIGJlIHNob3duLgoJICAgICAqIEByZXR1cm5zIFRoZSBkZWNvZGluZyByZXN1bHQuCgkgICAgICoKCSAgICAgKiBAbWVtYmVyT2YgQnJvd3NlckNvZGVSZWFkZXIKCSAgICAgKi8KCSAgICBCcm93c2VyQ29kZVJlYWRlci5wcm90b3R5cGUuZGVjb2RlT25jZUZyb21WaWRlb0RldmljZSA9IGZ1bmN0aW9uIChkZXZpY2VJZCwgdmlkZW9Tb3VyY2UpIHsKCSAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkgewoJICAgICAgICAgICAgdmFyIHZpZGVvQ29uc3RyYWludHMsIGNvbnN0cmFpbnRzOwoJICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkgewoJICAgICAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHsKCSAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgoJICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNldCgpOwoJICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFkZXZpY2VJZCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvQ29uc3RyYWludHMgPSB7IGZhY2luZ01vZGU6ICdlbnZpcm9ubWVudCcgfTsKCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvQ29uc3RyYWludHMgPSB7IGRldmljZUlkOiB7IGV4YWN0OiBkZXZpY2VJZCB9IH07CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJhaW50cyA9IHsgdmlkZW86IHZpZGVvQ29uc3RyYWludHMgfTsKCSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIHRoaXMuZGVjb2RlT25jZUZyb21Db25zdHJhaW50cyhjb25zdHJhaW50cywgdmlkZW9Tb3VyY2UpXTsKCSAgICAgICAgICAgICAgICAgICAgY2FzZSAxOiByZXR1cm4gWzIgLypyZXR1cm4qLywgX2Euc2VudCgpXTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9KTsKCSAgICAgICAgfSk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBJbiBvbmUgYXR0ZW1wdCwgdHJpZXMgdG8gZGVjb2RlIHRoZSBiYXJjb2RlIGZyb20gYSBzdHJlYW0gb2J0YWluZWQgZnJvbSB0aGUgZ2l2ZW4gY29uc3RyYWludHMgd2hpbGUgc2hvd2luZyB0aGUgdmlkZW8gaW4gdGhlIHNwZWNpZmllZCB2aWRlbyBlbGVtZW50LgoJICAgICAqCgkgICAgICogQHBhcmFtIGNvbnN0cmFpbnRzIHRoZSBtZWRpYSBzdHJlYW0gY29uc3RyYWludHMgdG8gZ2V0IHMgdmFsaWQgbWVkaWEgc3RyZWFtIHRvIGRlY29kZSBmcm9tCgkgICAgICogQHBhcmFtIHZpZGVvIHRoZSB2aWRlbyBlbGVtZW50IGluIHBhZ2Ugd2hlcmUgdG8gc2hvdyB0aGUgdmlkZW8gd2hpbGUgZGVjb2RpbmcuIENhbiBiZSBlaXRoZXIgYW4gZWxlbWVudCBpZCBvciBkaXJlY3RseSBhbiBIVE1MVmlkZW9FbGVtZW50LiBDYW4gYmUgdW5kZWZpbmVkLCBpbiB3aGljaCBjYXNlIG5vIHZpZGVvIHdpbGwgYmUgc2hvd24uCgkgICAgICogQHJldHVybnMgVGhlIGRlY29kaW5nIHJlc3VsdC4KCSAgICAgKgoJICAgICAqIEBtZW1iZXJPZiBCcm93c2VyQ29kZVJlYWRlcgoJICAgICAqLwoJICAgIEJyb3dzZXJDb2RlUmVhZGVyLnByb3RvdHlwZS5kZWNvZGVPbmNlRnJvbUNvbnN0cmFpbnRzID0gZnVuY3Rpb24gKGNvbnN0cmFpbnRzLCB2aWRlb1NvdXJjZSkgewoJICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7CgkgICAgICAgICAgICB2YXIgc3RyZWFtOwoJICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkgewoJICAgICAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHsKCSAgICAgICAgICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gWzQgLyp5aWVsZCovLCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYShjb25zdHJhaW50cyldOwoJICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CgkgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW0gPSBfYS5zZW50KCk7CgkgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCB0aGlzLmRlY29kZU9uY2VGcm9tU3RyZWFtKHN0cmVhbSwgdmlkZW9Tb3VyY2UpXTsKCSAgICAgICAgICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gWzIgLypyZXR1cm4qLywgX2Euc2VudCgpXTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9KTsKCSAgICAgICAgfSk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBJbiBvbmUgYXR0ZW1wdCwgdHJpZXMgdG8gZGVjb2RlIHRoZSBiYXJjb2RlIGZyb20gYSBzdHJlYW0gb2J0YWluZWQgZnJvbSB0aGUgZ2l2ZW4gY29uc3RyYWludHMgd2hpbGUgc2hvd2luZyB0aGUgdmlkZW8gaW4gdGhlIHNwZWNpZmllZCB2aWRlbyBlbGVtZW50LgoJICAgICAqCgkgICAgICogQHBhcmFtIHtNZWRpYVN0cmVhbX0gW2NvbnN0cmFpbnRzXSB0aGUgbWVkaWEgc3RyZWFtIGNvbnN0cmFpbnRzIHRvIGdldCBzIHZhbGlkIG1lZGlhIHN0cmVhbSB0byBkZWNvZGUgZnJvbQoJICAgICAqIEBwYXJhbSB7c3RyaW5nfEhUTUxWaWRlb0VsZW1lbnR9IFt2aWRlb10gdGhlIHZpZGVvIGVsZW1lbnQgaW4gcGFnZSB3aGVyZSB0byBzaG93IHRoZSB2aWRlbyB3aGlsZSBkZWNvZGluZy4gQ2FuIGJlIGVpdGhlciBhbiBlbGVtZW50IGlkIG9yIGRpcmVjdGx5IGFuIEhUTUxWaWRlb0VsZW1lbnQuIENhbiBiZSB1bmRlZmluZWQsIGluIHdoaWNoIGNhc2Ugbm8gdmlkZW8gd2lsbCBiZSBzaG93bi4KCSAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTxSZXN1bHQ+fSBUaGUgZGVjb2RpbmcgcmVzdWx0LgoJICAgICAqCgkgICAgICogQG1lbWJlck9mIEJyb3dzZXJDb2RlUmVhZGVyCgkgICAgICovCgkgICAgQnJvd3NlckNvZGVSZWFkZXIucHJvdG90eXBlLmRlY29kZU9uY2VGcm9tU3RyZWFtID0gZnVuY3Rpb24gKHN0cmVhbSwgdmlkZW9Tb3VyY2UpIHsKCSAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkgewoJICAgICAgICAgICAgdmFyIHZpZGVvLCByZXN1bHQ7CgkgICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7CgkgICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkgewoJICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CgkgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc2V0KCk7CgkgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCB0aGlzLmF0dGFjaFN0cmVhbVRvVmlkZW8oc3RyZWFtLCB2aWRlb1NvdXJjZSldOwoJICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CgkgICAgICAgICAgICAgICAgICAgICAgICB2aWRlbyA9IF9hLnNlbnQoKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIHRoaXMuZGVjb2RlT25jZSh2aWRlbyldOwoJICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CgkgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBfYS5zZW50KCk7CgkgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qLywgcmVzdWx0XTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9KTsKCSAgICAgICAgfSk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBDb250aW51b3VzbHkgZGVjb2RlcyB0aGUgYmFyY29kZSBmcm9tIHRoZSBkZXZpY2Ugc3BlY2lmaWVkIGJ5IGRldmljZSB3aGlsZSBzaG93aW5nIHRoZSB2aWRlbyBpbiB0aGUgc3BlY2lmaWVkIHZpZGVvIGVsZW1lbnQuCgkgICAgICoKCSAgICAgKiBAcGFyYW0ge3N0cmluZ3xudWxsfSBbZGV2aWNlSWRdIHRoZSBpZCBvZiBvbmUgb2YgdGhlIGRldmljZXMgb2J0YWluZWQgYWZ0ZXIgY2FsbGluZyBnZXRWaWRlb0lucHV0RGV2aWNlcy4gQ2FuIGJlIHVuZGVmaW5lZCwgaW4gdGhpcyBjYXNlIGl0IHdpbGwgZGVjb2RlIGZyb20gb25lIG9mIHRoZSBhdmFpbGFibGUgZGV2aWNlcywgcHJlZmZlcmluZyB0aGUgbWFpbiBjYW1lcmEgKGVudmlyb25tZW50IGZhY2luZykgaWYgYXZhaWxhYmxlLgoJICAgICAqIEBwYXJhbSB7c3RyaW5nfEhUTUxWaWRlb0VsZW1lbnR8bnVsbH0gW3ZpZGVvXSB0aGUgdmlkZW8gZWxlbWVudCBpbiBwYWdlIHdoZXJlIHRvIHNob3cgdGhlIHZpZGVvIHdoaWxlIGRlY29kaW5nLiBDYW4gYmUgZWl0aGVyIGFuIGVsZW1lbnQgaWQgb3IgZGlyZWN0bHkgYW4gSFRNTFZpZGVvRWxlbWVudC4gQ2FuIGJlIHVuZGVmaW5lZCwgaW4gd2hpY2ggY2FzZSBubyB2aWRlbyB3aWxsIGJlIHNob3duLgoJICAgICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fQoJICAgICAqCgkgICAgICogQG1lbWJlck9mIEJyb3dzZXJDb2RlUmVhZGVyCgkgICAgICoKCSAgICAgKiBAZGVwcmVjYXRlZCBVc2UgYGRlY29kZUZyb21WaWRlb0RldmljZWAgaW5zdGVhZC4KCSAgICAgKi8KCSAgICBCcm93c2VyQ29kZVJlYWRlci5wcm90b3R5cGUuZGVjb2RlRnJvbUlucHV0VmlkZW9EZXZpY2VDb250aW51b3VzbHkgPSBmdW5jdGlvbiAoZGV2aWNlSWQsIHZpZGVvU291cmNlLCBjYWxsYmFja0ZuKSB7CgkgICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHsKCSAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHsKCSAgICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7CgkgICAgICAgICAgICAgICAgICAgIGNhc2UgMDogcmV0dXJuIFs0IC8qeWllbGQqLywgdGhpcy5kZWNvZGVGcm9tVmlkZW9EZXZpY2UoZGV2aWNlSWQsIHZpZGVvU291cmNlLCBjYWxsYmFja0ZuKV07CgkgICAgICAgICAgICAgICAgICAgIGNhc2UgMTogcmV0dXJuIFsyIC8qcmV0dXJuKi8sIF9hLnNlbnQoKV07CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfSk7CgkgICAgICAgIH0pOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQ29udGludW91c2x5IHRyaWVzIHRvIGRlY29kZSB0aGUgYmFyY29kZSBmcm9tIHRoZSBkZXZpY2Ugc3BlY2lmaWVkIGJ5IGRldmljZSB3aGlsZSBzaG93aW5nIHRoZSB2aWRlbyBpbiB0aGUgc3BlY2lmaWVkIHZpZGVvIGVsZW1lbnQuCgkgICAgICoKCSAgICAgKiBAcGFyYW0ge3N0cmluZ3xudWxsfSBbZGV2aWNlSWRdIHRoZSBpZCBvZiBvbmUgb2YgdGhlIGRldmljZXMgb2J0YWluZWQgYWZ0ZXIgY2FsbGluZyBnZXRWaWRlb0lucHV0RGV2aWNlcy4gQ2FuIGJlIHVuZGVmaW5lZCwgaW4gdGhpcyBjYXNlIGl0IHdpbGwgZGVjb2RlIGZyb20gb25lIG9mIHRoZSBhdmFpbGFibGUgZGV2aWNlcywgcHJlZmZlcmluZyB0aGUgbWFpbiBjYW1lcmEgKGVudmlyb25tZW50IGZhY2luZykgaWYgYXZhaWxhYmxlLgoJICAgICAqIEBwYXJhbSB7c3RyaW5nfEhUTUxWaWRlb0VsZW1lbnR8bnVsbH0gW3ZpZGVvXSB0aGUgdmlkZW8gZWxlbWVudCBpbiBwYWdlIHdoZXJlIHRvIHNob3cgdGhlIHZpZGVvIHdoaWxlIGRlY29kaW5nLiBDYW4gYmUgZWl0aGVyIGFuIGVsZW1lbnQgaWQgb3IgZGlyZWN0bHkgYW4gSFRNTFZpZGVvRWxlbWVudC4gQ2FuIGJlIHVuZGVmaW5lZCwgaW4gd2hpY2ggY2FzZSBubyB2aWRlbyB3aWxsIGJlIHNob3duLgoJICAgICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fQoJICAgICAqCgkgICAgICogQG1lbWJlck9mIEJyb3dzZXJDb2RlUmVhZGVyCgkgICAgICovCgkgICAgQnJvd3NlckNvZGVSZWFkZXIucHJvdG90eXBlLmRlY29kZUZyb21WaWRlb0RldmljZSA9IGZ1bmN0aW9uIChkZXZpY2VJZCwgdmlkZW9Tb3VyY2UsIGNhbGxiYWNrRm4pIHsKCSAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkgewoJICAgICAgICAgICAgdmFyIHZpZGVvQ29uc3RyYWludHMsIGNvbnN0cmFpbnRzOwoJICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkgewoJICAgICAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHsKCSAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgoJICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFkZXZpY2VJZCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvQ29uc3RyYWludHMgPSB7IGZhY2luZ01vZGU6ICdlbnZpcm9ubWVudCcgfTsKCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvQ29uc3RyYWludHMgPSB7IGRldmljZUlkOiB7IGV4YWN0OiBkZXZpY2VJZCB9IH07CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJhaW50cyA9IHsgdmlkZW86IHZpZGVvQ29uc3RyYWludHMgfTsKCSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIHRoaXMuZGVjb2RlRnJvbUNvbnN0cmFpbnRzKGNvbnN0cmFpbnRzLCB2aWRlb1NvdXJjZSwgY2FsbGJhY2tGbildOwoJICAgICAgICAgICAgICAgICAgICBjYXNlIDE6IHJldHVybiBbMiAvKnJldHVybiovLCBfYS5zZW50KCldOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0pOwoJICAgICAgICB9KTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIENvbnRpbnVvdXNseSB0cmllcyB0byBkZWNvZGUgdGhlIGJhcmNvZGUgZnJvbSBhIHN0cmVhbSBvYnRhaW5lZCBmcm9tIHRoZSBnaXZlbiBjb25zdHJhaW50cyB3aGlsZSBzaG93aW5nIHRoZSB2aWRlbyBpbiB0aGUgc3BlY2lmaWVkIHZpZGVvIGVsZW1lbnQuCgkgICAgICoKCSAgICAgKiBAcGFyYW0ge01lZGlhU3RyZWFtfSBbY29uc3RyYWludHNdIHRoZSBtZWRpYSBzdHJlYW0gY29uc3RyYWludHMgdG8gZ2V0IHMgdmFsaWQgbWVkaWEgc3RyZWFtIHRvIGRlY29kZSBmcm9tCgkgICAgICogQHBhcmFtIHtzdHJpbmd8SFRNTFZpZGVvRWxlbWVudH0gW3ZpZGVvXSB0aGUgdmlkZW8gZWxlbWVudCBpbiBwYWdlIHdoZXJlIHRvIHNob3cgdGhlIHZpZGVvIHdoaWxlIGRlY29kaW5nLiBDYW4gYmUgZWl0aGVyIGFuIGVsZW1lbnQgaWQgb3IgZGlyZWN0bHkgYW4gSFRNTFZpZGVvRWxlbWVudC4gQ2FuIGJlIHVuZGVmaW5lZCwgaW4gd2hpY2ggY2FzZSBubyB2aWRlbyB3aWxsIGJlIHNob3duLgoJICAgICAqIEByZXR1cm5zIHtQcm9taXNlPFJlc3VsdD59IFRoZSBkZWNvZGluZyByZXN1bHQuCgkgICAgICoKCSAgICAgKiBAbWVtYmVyT2YgQnJvd3NlckNvZGVSZWFkZXIKCSAgICAgKi8KCSAgICBCcm93c2VyQ29kZVJlYWRlci5wcm90b3R5cGUuZGVjb2RlRnJvbUNvbnN0cmFpbnRzID0gZnVuY3Rpb24gKGNvbnN0cmFpbnRzLCB2aWRlb1NvdXJjZSwgY2FsbGJhY2tGbikgewoJICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7CgkgICAgICAgICAgICB2YXIgc3RyZWFtOwoJICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkgewoJICAgICAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHsKCSAgICAgICAgICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gWzQgLyp5aWVsZCovLCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYShjb25zdHJhaW50cyldOwoJICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CgkgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW0gPSBfYS5zZW50KCk7CgkgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCB0aGlzLmRlY29kZUZyb21TdHJlYW0oc3RyZWFtLCB2aWRlb1NvdXJjZSwgY2FsbGJhY2tGbildOwoJICAgICAgICAgICAgICAgICAgICBjYXNlIDI6IHJldHVybiBbMiAvKnJldHVybiovLCBfYS5zZW50KCldOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0pOwoJICAgICAgICB9KTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEluIG9uZSBhdHRlbXB0LCB0cmllcyB0byBkZWNvZGUgdGhlIGJhcmNvZGUgZnJvbSBhIHN0cmVhbSBvYnRhaW5lZCBmcm9tIHRoZSBnaXZlbiBjb25zdHJhaW50cyB3aGlsZSBzaG93aW5nIHRoZSB2aWRlbyBpbiB0aGUgc3BlY2lmaWVkIHZpZGVvIGVsZW1lbnQuCgkgICAgICoKCSAgICAgKiBAcGFyYW0ge01lZGlhU3RyZWFtfSBbY29uc3RyYWludHNdIHRoZSBtZWRpYSBzdHJlYW0gY29uc3RyYWludHMgdG8gZ2V0IHMgdmFsaWQgbWVkaWEgc3RyZWFtIHRvIGRlY29kZSBmcm9tCgkgICAgICogQHBhcmFtIHtzdHJpbmd8SFRNTFZpZGVvRWxlbWVudH0gW3ZpZGVvXSB0aGUgdmlkZW8gZWxlbWVudCBpbiBwYWdlIHdoZXJlIHRvIHNob3cgdGhlIHZpZGVvIHdoaWxlIGRlY29kaW5nLiBDYW4gYmUgZWl0aGVyIGFuIGVsZW1lbnQgaWQgb3IgZGlyZWN0bHkgYW4gSFRNTFZpZGVvRWxlbWVudC4gQ2FuIGJlIHVuZGVmaW5lZCwgaW4gd2hpY2ggY2FzZSBubyB2aWRlbyB3aWxsIGJlIHNob3duLgoJICAgICAqIEByZXR1cm5zIHtQcm9taXNlPFJlc3VsdD59IFRoZSBkZWNvZGluZyByZXN1bHQuCgkgICAgICoKCSAgICAgKiBAbWVtYmVyT2YgQnJvd3NlckNvZGVSZWFkZXIKCSAgICAgKi8KCSAgICBCcm93c2VyQ29kZVJlYWRlci5wcm90b3R5cGUuZGVjb2RlRnJvbVN0cmVhbSA9IGZ1bmN0aW9uIChzdHJlYW0sIHZpZGVvU291cmNlLCBjYWxsYmFja0ZuKSB7CgkgICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHsKCSAgICAgICAgICAgIHZhciB2aWRlbzsKCSAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHsKCSAgICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7CgkgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKCSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVzZXQoKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIHRoaXMuYXR0YWNoU3RyZWFtVG9WaWRlbyhzdHJlYW0sIHZpZGVvU291cmNlKV07CgkgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKCSAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvID0gX2Euc2VudCgpOwoJICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgdGhpcy5kZWNvZGVDb250aW51b3VzbHkodmlkZW8sIGNhbGxiYWNrRm4pXTsKCSAgICAgICAgICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gWzIgLypyZXR1cm4qLywgX2Euc2VudCgpXTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9KTsKCSAgICAgICAgfSk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBCcmVha3MgdGhlIGRlY29kaW5nIGxvb3AuCgkgICAgICovCgkgICAgQnJvd3NlckNvZGVSZWFkZXIucHJvdG90eXBlLnN0b3BBc3luY0RlY29kZSA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgdGhpcy5fc3RvcEFzeW5jRGVjb2RlID0gdHJ1ZTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEJyZWFrcyB0aGUgZGVjb2RpbmcgbG9vcC4KCSAgICAgKi8KCSAgICBCcm93c2VyQ29kZVJlYWRlci5wcm90b3R5cGUuc3RvcENvbnRpbnVvdXNEZWNvZGUgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHRoaXMuX3N0b3BDb250aW51b3VzRGVjb2RlID0gdHJ1ZTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIFNldHMgdGhlIG5ldyBzdHJlYW0gYW5kIHJlcXVlc3QgYSBuZXcgZGVjb2Rpbmctd2l0aC1kZWxheS4KCSAgICAgKgoJICAgICAqIEBwYXJhbSBzdHJlYW0gVGhlIHN0cmVhbSB0byBiZSBzaG93biBpbiB0aGUgdmlkZW8gZWxlbWVudC4KCSAgICAgKiBAcGFyYW0gZGVjb2RlRm4gQSBjYWxsYmFjayBmb3IgdGhlIGRlY29kZSBtZXRob2QuCgkgICAgICovCgkgICAgQnJvd3NlckNvZGVSZWFkZXIucHJvdG90eXBlLmF0dGFjaFN0cmVhbVRvVmlkZW8gPSBmdW5jdGlvbiAoc3RyZWFtLCB2aWRlb1NvdXJjZSkgewoJICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7CgkgICAgICAgICAgICB2YXIgdmlkZW9FbGVtZW50OwoJICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkgewoJICAgICAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHsKCSAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgoJICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9FbGVtZW50ID0gdGhpcy5wcmVwYXJlVmlkZW9FbGVtZW50KHZpZGVvU291cmNlKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkVmlkZW9Tb3VyY2UodmlkZW9FbGVtZW50LCBzdHJlYW0pOwoJICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWRlb0VsZW1lbnQgPSB2aWRlb0VsZW1lbnQ7CgkgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0cmVhbSA9IHN0cmVhbTsKCSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIHRoaXMucGxheVZpZGVvT25Mb2FkQXN5bmModmlkZW9FbGVtZW50KV07CgkgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKCSAgICAgICAgICAgICAgICAgICAgICAgIF9hLnNlbnQoKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovLCB2aWRlb0VsZW1lbnRdOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0pOwoJICAgICAgICB9KTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqCgkgICAgICogQHBhcmFtIHZpZGVvRWxlbWVudAoJICAgICAqLwoJICAgIEJyb3dzZXJDb2RlUmVhZGVyLnByb3RvdHlwZS5wbGF5VmlkZW9PbkxvYWRBc3luYyA9IGZ1bmN0aW9uICh2aWRlb0VsZW1lbnQpIHsKCSAgICAgICAgdmFyIF90aGlzID0gdGhpczsKCSAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgcmV0dXJuIF90aGlzLnBsYXlWaWRlb09uTG9hZCh2aWRlb0VsZW1lbnQsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlc29sdmUoKTsgfSk7IH0pOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQmluZHMgbGlzdGVuZXJzIGFuZCBjYWxsYmFja3MgdG8gdGhlIHZpZGVvRWxlbWVudC4KCSAgICAgKgoJICAgICAqIEBwYXJhbSBlbGVtZW50CgkgICAgICogQHBhcmFtIGNhbGxiYWNrRm4KCSAgICAgKi8KCSAgICBCcm93c2VyQ29kZVJlYWRlci5wcm90b3R5cGUucGxheVZpZGVvT25Mb2FkID0gZnVuY3Rpb24gKGVsZW1lbnQsIGNhbGxiYWNrRm4pIHsKCSAgICAgICAgdmFyIF90aGlzID0gdGhpczsKCSAgICAgICAgdGhpcy52aWRlb0VuZGVkTGlzdGVuZXIgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBfdGhpcy5zdG9wU3RyZWFtcygpOyB9OwoJICAgICAgICB0aGlzLnZpZGVvQ2FuUGxheUxpc3RlbmVyID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gX3RoaXMudHJ5UGxheVZpZGVvKGVsZW1lbnQpOyB9OwoJICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2VuZGVkJywgdGhpcy52aWRlb0VuZGVkTGlzdGVuZXIpOwoJICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NhbnBsYXknLCB0aGlzLnZpZGVvQ2FuUGxheUxpc3RlbmVyKTsKCSAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdwbGF5aW5nJywgY2FsbGJhY2tGbik7CgkgICAgICAgIC8vIGlmIGNhbnBsYXkgd2FzIGFscmVhZHkgZmlyZWQsIHdlIHdvbid0IGtub3cgd2hlbiB0byBwbGF5LCBzbyBqdXN0IGdpdmUgaXQgYSB0cnkKCSAgICAgICAgdGhpcy50cnlQbGF5VmlkZW8oZWxlbWVudCk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBDaGVja3MgaWYgdGhlIGdpdmVuIHZpZGVvIGVsZW1lbnQgaXMgY3VycmVudGx5IHBsYXlpbmcuCgkgICAgICovCgkgICAgQnJvd3NlckNvZGVSZWFkZXIucHJvdG90eXBlLmlzVmlkZW9QbGF5aW5nID0gZnVuY3Rpb24gKHZpZGVvKSB7CgkgICAgICAgIHJldHVybiB2aWRlby5jdXJyZW50VGltZSA+IDAgJiYgIXZpZGVvLnBhdXNlZCAmJiAhdmlkZW8uZW5kZWQgJiYgdmlkZW8ucmVhZHlTdGF0ZSA+IDI7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBKdXN0IHRyaWVzIHRvIHBsYXkgdGhlIHZpZGVvIGFuZCBsb2dzIGFueSBlcnJvcnMuCgkgICAgICogVGhlIHBsYXkgY2FsbCBpcyBvbmx5IG1hZGUgaXMgdGhlIHZpZGVvIGlzIG5vdCBhbHJlYWR5IHBsYXlpbmcuCgkgICAgICovCgkgICAgQnJvd3NlckNvZGVSZWFkZXIucHJvdG90eXBlLnRyeVBsYXlWaWRlbyA9IGZ1bmN0aW9uICh2aWRlb0VsZW1lbnQpIHsKCSAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkgewoJICAgICAgICAgICAgdmFyIF9hOwoJICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYikgewoJICAgICAgICAgICAgICAgIHN3aXRjaCAoX2IubGFiZWwpIHsKCSAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgoJICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNWaWRlb1BsYXlpbmcodmlkZW9FbGVtZW50KSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignVHJ5aW5nIHRvIHBsYXkgdmlkZW8gdGhhdCBpcyBhbHJlYWR5IHBsYXlpbmcuJyk7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dOwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgX2IubGFiZWwgPSAxOwoJICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CgkgICAgICAgICAgICAgICAgICAgICAgICBfYi50cnlzLnB1c2goWzEsIDMsICwgNF0pOwoJICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgdmlkZW9FbGVtZW50LnBsYXkoKV07CgkgICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKCSAgICAgICAgICAgICAgICAgICAgICAgIF9iLnNlbnQoKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDRdOwoJICAgICAgICAgICAgICAgICAgICBjYXNlIDM6CgkgICAgICAgICAgICAgICAgICAgICAgICBfYSA9IF9iLnNlbnQoKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignSXQgd2FzIG5vdCBwb3NzaWJsZSB0byBwbGF5IHRoZSB2aWRlby4nKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDRdOwoJICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6IHJldHVybiBbMiAvKnJldHVybiovXTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9KTsKCSAgICAgICAgfSk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBTZWFyY2hlcyBhbmQgdmFsaWRhdGVzIGEgbWVkaWEgZWxlbWVudC4KCSAgICAgKi8KCSAgICBCcm93c2VyQ29kZVJlYWRlci5wcm90b3R5cGUuZ2V0TWVkaWFFbGVtZW50ID0gZnVuY3Rpb24gKG1lZGlhRWxlbWVudElkLCB0eXBlKSB7CgkgICAgICAgIHZhciBtZWRpYUVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChtZWRpYUVsZW1lbnRJZCk7CgkgICAgICAgIGlmICghbWVkaWFFbGVtZW50KSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCJlbGVtZW50IHdpdGggaWQgJyIgKyBtZWRpYUVsZW1lbnRJZCArICInIG5vdCBmb3VuZCIpOwoJICAgICAgICB9CgkgICAgICAgIGlmIChtZWRpYUVsZW1lbnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSAhPT0gdHlwZS50b0xvd2VyQ2FzZSgpKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCJlbGVtZW50IHdpdGggaWQgJyIgKyBtZWRpYUVsZW1lbnRJZCArICInIG11c3QgYmUgYW4gIiArIHR5cGUgKyAiIGVsZW1lbnQiKTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gbWVkaWFFbGVtZW50OwoJICAgIH07CgkgICAgLyoqCgkgICAgICogRGVjb2RlcyB0aGUgYmFyY29kZSBmcm9tIGFuIGltYWdlLgoJICAgICAqCgkgICAgICogQHBhcmFtIHsoc3RyaW5nfEhUTUxJbWFnZUVsZW1lbnQpfSBbc291cmNlXSBUaGUgaW1hZ2UgZWxlbWVudCB0aGF0IGNhbiBiZSBlaXRoZXIgYW4gZWxlbWVudCBpZCBvciB0aGUgZWxlbWVudCBpdHNlbGYuIENhbiBiZSB1bmRlZmluZWQgaW4gd2hpY2ggY2FzZSB0aGUgZGVjb2Rpbmcgd2lsbCBiZSBkb25lIGZyb20gdGhlIGltYWdlVXJsIHBhcmFtZXRlci4KCSAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3VybF0KCSAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTxSZXN1bHQ+fSBUaGUgZGVjb2RpbmcgcmVzdWx0LgoJICAgICAqCgkgICAgICogQG1lbWJlck9mIEJyb3dzZXJDb2RlUmVhZGVyCgkgICAgICovCgkgICAgQnJvd3NlckNvZGVSZWFkZXIucHJvdG90eXBlLmRlY29kZUZyb21JbWFnZSA9IGZ1bmN0aW9uIChzb3VyY2UsIHVybCkgewoJICAgICAgICBpZiAoIXNvdXJjZSAmJiAhdXJsKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCdlaXRoZXIgaW1hZ2VFbGVtZW50IHdpdGggYSBzcmMgc2V0IG9yIGFuIHVybCBtdXN0IGJlIHByb3ZpZGVkJyk7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKHVybCAmJiAhc291cmNlKSB7CgkgICAgICAgICAgICByZXR1cm4gdGhpcy5kZWNvZGVGcm9tSW1hZ2VVcmwodXJsKTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gdGhpcy5kZWNvZGVGcm9tSW1hZ2VFbGVtZW50KHNvdXJjZSk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBEZWNvZGVzIHRoZSBiYXJjb2RlIGZyb20gYSB2aWRlby4KCSAgICAgKgoJICAgICAqIEBwYXJhbSB7KHN0cmluZ3xIVE1MSW1hZ2VFbGVtZW50KX0gW3NvdXJjZV0gVGhlIGltYWdlIGVsZW1lbnQgdGhhdCBjYW4gYmUgZWl0aGVyIGFuIGVsZW1lbnQgaWQgb3IgdGhlIGVsZW1lbnQgaXRzZWxmLiBDYW4gYmUgdW5kZWZpbmVkIGluIHdoaWNoIGNhc2UgdGhlIGRlY29kaW5nIHdpbGwgYmUgZG9uZSBmcm9tIHRoZSBpbWFnZVVybCBwYXJhbWV0ZXIuCgkgICAgICogQHBhcmFtIHtzdHJpbmd9IFt1cmxdCgkgICAgICogQHJldHVybnMge1Byb21pc2U8UmVzdWx0Pn0gVGhlIGRlY29kaW5nIHJlc3VsdC4KCSAgICAgKgoJICAgICAqIEBtZW1iZXJPZiBCcm93c2VyQ29kZVJlYWRlcgoJICAgICAqLwoJICAgIEJyb3dzZXJDb2RlUmVhZGVyLnByb3RvdHlwZS5kZWNvZGVGcm9tVmlkZW8gPSBmdW5jdGlvbiAoc291cmNlLCB1cmwpIHsKCSAgICAgICAgaWYgKCFzb3VyY2UgJiYgIXVybCkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgnRWl0aGVyIGFuIGVsZW1lbnQgd2l0aCBhIHNyYyBzZXQgb3IgYW4gVVJMIG11c3QgYmUgcHJvdmlkZWQnKTsKCSAgICAgICAgfQoJICAgICAgICBpZiAodXJsICYmICFzb3VyY2UpIHsKCSAgICAgICAgICAgIHJldHVybiB0aGlzLmRlY29kZUZyb21WaWRlb1VybCh1cmwpOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiB0aGlzLmRlY29kZUZyb21WaWRlb0VsZW1lbnQoc291cmNlKTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIERlY29kZXMgY29udGludW91c2x5IHRoZSBiYXJjb2RlIGZyb20gYSB2aWRlby4KCSAgICAgKgoJICAgICAqIEBwYXJhbSB7KHN0cmluZ3xIVE1MSW1hZ2VFbGVtZW50KX0gW3NvdXJjZV0gVGhlIGltYWdlIGVsZW1lbnQgdGhhdCBjYW4gYmUgZWl0aGVyIGFuIGVsZW1lbnQgaWQgb3IgdGhlIGVsZW1lbnQgaXRzZWxmLiBDYW4gYmUgdW5kZWZpbmVkIGluIHdoaWNoIGNhc2UgdGhlIGRlY29kaW5nIHdpbGwgYmUgZG9uZSBmcm9tIHRoZSBpbWFnZVVybCBwYXJhbWV0ZXIuCgkgICAgICogQHBhcmFtIHtzdHJpbmd9IFt1cmxdCgkgICAgICogQHJldHVybnMge1Byb21pc2U8UmVzdWx0Pn0gVGhlIGRlY29kaW5nIHJlc3VsdC4KCSAgICAgKgoJICAgICAqIEBtZW1iZXJPZiBCcm93c2VyQ29kZVJlYWRlcgoJICAgICAqCgkgICAgICogQGV4cGVyaW1lbnRhbAoJICAgICAqLwoJICAgIEJyb3dzZXJDb2RlUmVhZGVyLnByb3RvdHlwZS5kZWNvZGVGcm9tVmlkZW9Db250aW51b3VzbHkgPSBmdW5jdGlvbiAoc291cmNlLCB1cmwsIGNhbGxiYWNrRm4pIHsKCSAgICAgICAgaWYgKHVuZGVmaW5lZCA9PT0gc291cmNlICYmIHVuZGVmaW5lZCA9PT0gdXJsKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCdFaXRoZXIgYW4gZWxlbWVudCB3aXRoIGEgc3JjIHNldCBvciBhbiBVUkwgbXVzdCBiZSBwcm92aWRlZCcpOwoJICAgICAgICB9CgkgICAgICAgIGlmICh1cmwgJiYgIXNvdXJjZSkgewoJICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVjb2RlRnJvbVZpZGVvVXJsQ29udGludW91c2x5KHVybCwgY2FsbGJhY2tGbik7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHRoaXMuZGVjb2RlRnJvbVZpZGVvRWxlbWVudENvbnRpbnVvdXNseShzb3VyY2UsIGNhbGxiYWNrRm4pOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogRGVjb2RlcyBzb21ldGhpbmcgZnJvbSBhbiBpbWFnZSBIVE1MIGVsZW1lbnQuCgkgICAgICovCgkgICAgQnJvd3NlckNvZGVSZWFkZXIucHJvdG90eXBlLmRlY29kZUZyb21JbWFnZUVsZW1lbnQgPSBmdW5jdGlvbiAoc291cmNlKSB7CgkgICAgICAgIGlmICghc291cmNlKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCdBbiBpbWFnZSBlbGVtZW50IG11c3QgYmUgcHJvdmlkZWQuJyk7CgkgICAgICAgIH0KCSAgICAgICAgdGhpcy5yZXNldCgpOwoJICAgICAgICB2YXIgZWxlbWVudCA9IHRoaXMucHJlcGFyZUltYWdlRWxlbWVudChzb3VyY2UpOwoJICAgICAgICB0aGlzLmltYWdlRWxlbWVudCA9IGVsZW1lbnQ7CgkgICAgICAgIHZhciB0YXNrOwoJICAgICAgICBpZiAodGhpcy5pc0ltYWdlTG9hZGVkKGVsZW1lbnQpKSB7CgkgICAgICAgICAgICB0YXNrID0gdGhpcy5kZWNvZGVPbmNlKGVsZW1lbnQsIGZhbHNlLCB0cnVlKTsKCSAgICAgICAgfQoJICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgIHRhc2sgPSB0aGlzLl9kZWNvZGVPbkxvYWRJbWFnZShlbGVtZW50KTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gdGFzazsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIERlY29kZXMgc29tZXRoaW5nIGZyb20gYW4gaW1hZ2UgSFRNTCBlbGVtZW50LgoJICAgICAqLwoJICAgIEJyb3dzZXJDb2RlUmVhZGVyLnByb3RvdHlwZS5kZWNvZGVGcm9tVmlkZW9FbGVtZW50ID0gZnVuY3Rpb24gKHNvdXJjZSkgewoJICAgICAgICB2YXIgZWxlbWVudCA9IHRoaXMuX2RlY29kZUZyb21WaWRlb0VsZW1lbnRTZXR1cChzb3VyY2UpOwoJICAgICAgICByZXR1cm4gdGhpcy5fZGVjb2RlT25Mb2FkVmlkZW8oZWxlbWVudCk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBEZWNvZGVzIHNvbWV0aGluZyBmcm9tIGFuIGltYWdlIEhUTUwgZWxlbWVudC4KCSAgICAgKi8KCSAgICBCcm93c2VyQ29kZVJlYWRlci5wcm90b3R5cGUuZGVjb2RlRnJvbVZpZGVvRWxlbWVudENvbnRpbnVvdXNseSA9IGZ1bmN0aW9uIChzb3VyY2UsIGNhbGxiYWNrRm4pIHsKCSAgICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzLl9kZWNvZGVGcm9tVmlkZW9FbGVtZW50U2V0dXAoc291cmNlKTsKCSAgICAgICAgcmV0dXJuIHRoaXMuX2RlY29kZU9uTG9hZFZpZGVvQ29udGludW91c2x5KGVsZW1lbnQsIGNhbGxiYWNrRm4pOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogU2V0cyB1cCB0aGUgdmlkZW8gc291cmNlIHNvIGl0IGNhbiBiZSBkZWNvZGVkIHdoZW4gbG9hZGVkLgoJICAgICAqCgkgICAgICogQHBhcmFtIHNvdXJjZSBUaGUgdmlkZW8gc291cmNlIGVsZW1lbnQuCgkgICAgICovCgkgICAgQnJvd3NlckNvZGVSZWFkZXIucHJvdG90eXBlLl9kZWNvZGVGcm9tVmlkZW9FbGVtZW50U2V0dXAgPSBmdW5jdGlvbiAoc291cmNlKSB7CgkgICAgICAgIGlmICghc291cmNlKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCdBIHZpZGVvIGVsZW1lbnQgbXVzdCBiZSBwcm92aWRlZC4nKTsKCSAgICAgICAgfQoJICAgICAgICB0aGlzLnJlc2V0KCk7CgkgICAgICAgIHZhciBlbGVtZW50ID0gdGhpcy5wcmVwYXJlVmlkZW9FbGVtZW50KHNvdXJjZSk7CgkgICAgICAgIC8vIGRlZmluZXMgdGhlIHZpZGVvIGVsZW1lbnQgYmVmb3JlIHN0YXJ0cyBkZWNvZGluZwoJICAgICAgICB0aGlzLnZpZGVvRWxlbWVudCA9IGVsZW1lbnQ7CgkgICAgICAgIHJldHVybiBlbGVtZW50OwoJICAgIH07CgkgICAgLyoqCgkgICAgICogRGVjb2RlcyBhbiBpbWFnZSBmcm9tIGEgVVJMLgoJICAgICAqLwoJICAgIEJyb3dzZXJDb2RlUmVhZGVyLnByb3RvdHlwZS5kZWNvZGVGcm9tSW1hZ2VVcmwgPSBmdW5jdGlvbiAodXJsKSB7CgkgICAgICAgIGlmICghdXJsKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCdBbiBVUkwgbXVzdCBiZSBwcm92aWRlZC4nKTsKCSAgICAgICAgfQoJICAgICAgICB0aGlzLnJlc2V0KCk7CgkgICAgICAgIHZhciBlbGVtZW50ID0gdGhpcy5wcmVwYXJlSW1hZ2VFbGVtZW50KCk7CgkgICAgICAgIHRoaXMuaW1hZ2VFbGVtZW50ID0gZWxlbWVudDsKCSAgICAgICAgdmFyIGRlY29kZVRhc2sgPSB0aGlzLl9kZWNvZGVPbkxvYWRJbWFnZShlbGVtZW50KTsKCSAgICAgICAgZWxlbWVudC5zcmMgPSB1cmw7CgkgICAgICAgIHJldHVybiBkZWNvZGVUYXNrOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogRGVjb2RlcyBhbiBpbWFnZSBmcm9tIGEgVVJMLgoJICAgICAqLwoJICAgIEJyb3dzZXJDb2RlUmVhZGVyLnByb3RvdHlwZS5kZWNvZGVGcm9tVmlkZW9VcmwgPSBmdW5jdGlvbiAodXJsKSB7CgkgICAgICAgIGlmICghdXJsKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCdBbiBVUkwgbXVzdCBiZSBwcm92aWRlZC4nKTsKCSAgICAgICAgfQoJICAgICAgICB0aGlzLnJlc2V0KCk7CgkgICAgICAgIC8vIGNyZWF0ZXMgYSBuZXcgZWxlbWVudAoJICAgICAgICB2YXIgZWxlbWVudCA9IHRoaXMucHJlcGFyZVZpZGVvRWxlbWVudCgpOwoJICAgICAgICB2YXIgZGVjb2RlVGFzayA9IHRoaXMuZGVjb2RlRnJvbVZpZGVvRWxlbWVudChlbGVtZW50KTsKCSAgICAgICAgZWxlbWVudC5zcmMgPSB1cmw7CgkgICAgICAgIHJldHVybiBkZWNvZGVUYXNrOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogRGVjb2RlcyBhbiBpbWFnZSBmcm9tIGEgVVJMLgoJICAgICAqCgkgICAgICogQGV4cGVyaW1lbnRhbAoJICAgICAqLwoJICAgIEJyb3dzZXJDb2RlUmVhZGVyLnByb3RvdHlwZS5kZWNvZGVGcm9tVmlkZW9VcmxDb250aW51b3VzbHkgPSBmdW5jdGlvbiAodXJsLCBjYWxsYmFja0ZuKSB7CgkgICAgICAgIGlmICghdXJsKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCdBbiBVUkwgbXVzdCBiZSBwcm92aWRlZC4nKTsKCSAgICAgICAgfQoJICAgICAgICB0aGlzLnJlc2V0KCk7CgkgICAgICAgIC8vIGNyZWF0ZXMgYSBuZXcgZWxlbWVudAoJICAgICAgICB2YXIgZWxlbWVudCA9IHRoaXMucHJlcGFyZVZpZGVvRWxlbWVudCgpOwoJICAgICAgICB2YXIgZGVjb2RlVGFzayA9IHRoaXMuZGVjb2RlRnJvbVZpZGVvRWxlbWVudENvbnRpbnVvdXNseShlbGVtZW50LCBjYWxsYmFja0ZuKTsKCSAgICAgICAgZWxlbWVudC5zcmMgPSB1cmw7CgkgICAgICAgIHJldHVybiBkZWNvZGVUYXNrOwoJICAgIH07CgkgICAgQnJvd3NlckNvZGVSZWFkZXIucHJvdG90eXBlLl9kZWNvZGVPbkxvYWRJbWFnZSA9IGZ1bmN0aW9uIChlbGVtZW50KSB7CgkgICAgICAgIHZhciBfdGhpcyA9IHRoaXM7CgkgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CgkgICAgICAgICAgICBfdGhpcy5pbWFnZUxvYWRlZExpc3RlbmVyID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gX3RoaXMuZGVjb2RlT25jZShlbGVtZW50LCBmYWxzZSwgdHJ1ZSkudGhlbihyZXNvbHZlLCByZWplY3QpOyB9OwoJICAgICAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgX3RoaXMuaW1hZ2VMb2FkZWRMaXN0ZW5lcik7CgkgICAgICAgIH0pOwoJICAgIH07CgkgICAgQnJvd3NlckNvZGVSZWFkZXIucHJvdG90eXBlLl9kZWNvZGVPbkxvYWRWaWRlbyA9IGZ1bmN0aW9uICh2aWRlb0VsZW1lbnQpIHsKCSAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkgewoJICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkgewoJICAgICAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHsKCSAgICAgICAgICAgICAgICAgICAgY2FzZSAwOiAKCSAgICAgICAgICAgICAgICAgICAgLy8gcGxheXMgdGhlIHZpZGVvCgkgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIHRoaXMucGxheVZpZGVvT25Mb2FkQXN5bmModmlkZW9FbGVtZW50KV07CgkgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKCSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBsYXlzIHRoZSB2aWRlbwoJICAgICAgICAgICAgICAgICAgICAgICAgX2Euc2VudCgpOwoJICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgdGhpcy5kZWNvZGVPbmNlKHZpZGVvRWxlbWVudCldOwoJICAgICAgICAgICAgICAgICAgICBjYXNlIDI6IAoJICAgICAgICAgICAgICAgICAgICAvLyBzdGFydHMgZGVjb2RpbmcgYWZ0ZXIgcGxheWVkIHRoZSB2aWRlbwoJICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qLywgX2Euc2VudCgpXTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9KTsKCSAgICAgICAgfSk7CgkgICAgfTsKCSAgICBCcm93c2VyQ29kZVJlYWRlci5wcm90b3R5cGUuX2RlY29kZU9uTG9hZFZpZGVvQ29udGludW91c2x5ID0gZnVuY3Rpb24gKHZpZGVvRWxlbWVudCwgY2FsbGJhY2tGbikgewoJICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7CgkgICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7CgkgICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkgewoJICAgICAgICAgICAgICAgICAgICBjYXNlIDA6IAoJICAgICAgICAgICAgICAgICAgICAvLyBwbGF5cyB0aGUgdmlkZW8KCSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgdGhpcy5wbGF5VmlkZW9PbkxvYWRBc3luYyh2aWRlb0VsZW1lbnQpXTsKCSAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgoJICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGxheXMgdGhlIHZpZGVvCgkgICAgICAgICAgICAgICAgICAgICAgICBfYS5zZW50KCk7CgkgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFydHMgZGVjb2RpbmcgYWZ0ZXIgcGxheWVkIHRoZSB2aWRlbwoJICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWNvZGVDb250aW51b3VzbHkodmlkZW9FbGVtZW50LCBjYWxsYmFja0ZuKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9KTsKCSAgICAgICAgfSk7CgkgICAgfTsKCSAgICBCcm93c2VyQ29kZVJlYWRlci5wcm90b3R5cGUuaXNJbWFnZUxvYWRlZCA9IGZ1bmN0aW9uIChpbWcpIHsKCSAgICAgICAgLy8gRHVyaW5nIHRoZSBvbmxvYWQgZXZlbnQsIElFIGNvcnJlY3RseSBpZGVudGlmaWVzIGFueSBpbWFnZXMgdGhhdAoJICAgICAgICAvLyB3ZXJlbuKAmXQgZG93bmxvYWRlZCBhcyBub3QgY29tcGxldGUuIE90aGVycyBzaG91bGQgdG9vLiBHZWNrby1iYXNlZAoJICAgICAgICAvLyBicm93c2VycyBhY3QgbGlrZSBOUzQgaW4gdGhhdCB0aGV5IHJlcG9ydCB0aGlzIGluY29ycmVjdGx5LgoJICAgICAgICBpZiAoIWltZy5jb21wbGV0ZSkgewoJICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoJICAgICAgICB9CgkgICAgICAgIC8vIEhvd2V2ZXIsIHRoZXkgZG8gaGF2ZSB0d28gdmVyeSB1c2VmdWwgcHJvcGVydGllczogbmF0dXJhbFdpZHRoIGFuZAoJICAgICAgICAvLyBuYXR1cmFsSGVpZ2h0LiBUaGVzZSBnaXZlIHRoZSB0cnVlIHNpemUgb2YgdGhlIGltYWdlLiBJZiBpdCBmYWlsZWQKCSAgICAgICAgLy8gdG8gbG9hZCwgZWl0aGVyIG9mIHRoZXNlIHNob3VsZCBiZSB6ZXJvLgoJICAgICAgICBpZiAoaW1nLm5hdHVyYWxXaWR0aCA9PT0gMCkgewoJICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoJICAgICAgICB9CgkgICAgICAgIC8vIE5vIG90aGVyIHdheSBvZiBjaGVja2luZzogYXNzdW1lIGl04oCZcyBvay4KCSAgICAgICAgcmV0dXJuIHRydWU7CgkgICAgfTsKCSAgICBCcm93c2VyQ29kZVJlYWRlci5wcm90b3R5cGUucHJlcGFyZUltYWdlRWxlbWVudCA9IGZ1bmN0aW9uIChpbWFnZVNvdXJjZSkgewoJICAgICAgICB2YXIgaW1hZ2VFbGVtZW50OwoJICAgICAgICBpZiAodHlwZW9mIGltYWdlU291cmNlID09PSAndW5kZWZpbmVkJykgewoJICAgICAgICAgICAgaW1hZ2VFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJyk7CgkgICAgICAgICAgICBpbWFnZUVsZW1lbnQud2lkdGggPSAyMDA7CgkgICAgICAgICAgICBpbWFnZUVsZW1lbnQuaGVpZ2h0ID0gMjAwOwoJICAgICAgICB9CgkgICAgICAgIGlmICh0eXBlb2YgaW1hZ2VTb3VyY2UgPT09ICdzdHJpbmcnKSB7CgkgICAgICAgICAgICBpbWFnZUVsZW1lbnQgPSB0aGlzLmdldE1lZGlhRWxlbWVudChpbWFnZVNvdXJjZSwgJ2ltZycpOwoJICAgICAgICB9CgkgICAgICAgIGlmIChpbWFnZVNvdXJjZSBpbnN0YW5jZW9mIEhUTUxJbWFnZUVsZW1lbnQpIHsKCSAgICAgICAgICAgIGltYWdlRWxlbWVudCA9IGltYWdlU291cmNlOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBpbWFnZUVsZW1lbnQ7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBTZXRzIGEgSFRNTFZpZGVvRWxlbWVudCBmb3Igc2Nhbm5pbmcgb3IgY3JlYXRlcyBhIG5ldyBvbmUuCgkgICAgICoKCSAgICAgKiBAcGFyYW0gdmlkZW9Tb3VyY2UgVGhlIEhUTUxWaWRlb0VsZW1lbnQgdG8gYmUgc2V0LgoJICAgICAqLwoJICAgIEJyb3dzZXJDb2RlUmVhZGVyLnByb3RvdHlwZS5wcmVwYXJlVmlkZW9FbGVtZW50ID0gZnVuY3Rpb24gKHZpZGVvU291cmNlKSB7CgkgICAgICAgIHZhciB2aWRlb0VsZW1lbnQ7CgkgICAgICAgIGlmICghdmlkZW9Tb3VyY2UgJiYgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykgewoJICAgICAgICAgICAgdmlkZW9FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndmlkZW8nKTsKCSAgICAgICAgICAgIHZpZGVvRWxlbWVudC53aWR0aCA9IDIwMDsKCSAgICAgICAgICAgIHZpZGVvRWxlbWVudC5oZWlnaHQgPSAyMDA7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKHR5cGVvZiB2aWRlb1NvdXJjZSA9PT0gJ3N0cmluZycpIHsKCSAgICAgICAgICAgIHZpZGVvRWxlbWVudCA9IHRoaXMuZ2V0TWVkaWFFbGVtZW50KHZpZGVvU291cmNlLCAndmlkZW8nKTsKCSAgICAgICAgfQoJICAgICAgICBpZiAodmlkZW9Tb3VyY2UgaW5zdGFuY2VvZiBIVE1MVmlkZW9FbGVtZW50KSB7CgkgICAgICAgICAgICB2aWRlb0VsZW1lbnQgPSB2aWRlb1NvdXJjZTsKCSAgICAgICAgfQoJICAgICAgICAvLyBOZWVkZWQgZm9yIGlPUyAxMQoJICAgICAgICB2aWRlb0VsZW1lbnQuc2V0QXR0cmlidXRlKCdhdXRvcGxheScsICd0cnVlJyk7CgkgICAgICAgIHZpZGVvRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ211dGVkJywgJ3RydWUnKTsKCSAgICAgICAgdmlkZW9FbGVtZW50LnNldEF0dHJpYnV0ZSgncGxheXNpbmxpbmUnLCAndHJ1ZScpOwoJICAgICAgICByZXR1cm4gdmlkZW9FbGVtZW50OwoJICAgIH07CgkgICAgLyoqCgkgICAgICogVHJpZXMgdG8gZGVjb2RlIGZyb20gdGhlIHZpZGVvIGlucHV0IHVudGlsIGl0IGZpbmRzIHNvbWUgdmFsdWUuCgkgICAgICovCgkgICAgQnJvd3NlckNvZGVSZWFkZXIucHJvdG90eXBlLmRlY29kZU9uY2UgPSBmdW5jdGlvbiAoZWxlbWVudCwgcmV0cnlJZk5vdEZvdW5kLCByZXRyeUlmQ2hlY2tzdW1PckZvcm1hdEVycm9yKSB7CgkgICAgICAgIHZhciBfdGhpcyA9IHRoaXM7CgkgICAgICAgIGlmIChyZXRyeUlmTm90Rm91bmQgPT09IHZvaWQgMCkgeyByZXRyeUlmTm90Rm91bmQgPSB0cnVlOyB9CgkgICAgICAgIGlmIChyZXRyeUlmQ2hlY2tzdW1PckZvcm1hdEVycm9yID09PSB2b2lkIDApIHsgcmV0cnlJZkNoZWNrc3VtT3JGb3JtYXRFcnJvciA9IHRydWU7IH0KCSAgICAgICAgdGhpcy5fc3RvcEFzeW5jRGVjb2RlID0gZmFsc2U7CgkgICAgICAgIHZhciBsb29wID0gZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewoJICAgICAgICAgICAgaWYgKF90aGlzLl9zdG9wQXN5bmNEZWNvZGUpIHsKCSAgICAgICAgICAgICAgICByZWplY3QobmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgnVmlkZW8gc3RyZWFtIGhhcyBlbmRlZCBiZWZvcmUgYW55IGNvZGUgY291bGQgYmUgZGV0ZWN0ZWQuJykpOwoJICAgICAgICAgICAgICAgIF90aGlzLl9zdG9wQXN5bmNEZWNvZGUgPSB1bmRlZmluZWQ7CgkgICAgICAgICAgICAgICAgcmV0dXJuOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gX3RoaXMuZGVjb2RlKGVsZW1lbnQpOwoJICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGNhdGNoIChlKSB7CgkgICAgICAgICAgICAgICAgdmFyIGlmTm90Rm91bmQgPSByZXRyeUlmTm90Rm91bmQgJiYgZSBpbnN0YW5jZW9mIE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdDsKCSAgICAgICAgICAgICAgICB2YXIgaXNDaGVja3N1bU9yRm9ybWF0RXJyb3IgPSBlIGluc3RhbmNlb2YgQ2hlY2tzdW1FeGNlcHRpb25fMS5kZWZhdWx0IHx8IGUgaW5zdGFuY2VvZiBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0OwoJICAgICAgICAgICAgICAgIHZhciBpZkNoZWNrc3VtT3JGb3JtYXQgPSBpc0NoZWNrc3VtT3JGb3JtYXRFcnJvciAmJiByZXRyeUlmQ2hlY2tzdW1PckZvcm1hdEVycm9yOwoJICAgICAgICAgICAgICAgIGlmIChpZk5vdEZvdW5kIHx8IGlmQ2hlY2tzdW1PckZvcm1hdCkgewoJICAgICAgICAgICAgICAgICAgICAvLyB0cnlpbmcgYWdhaW4KCSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQobG9vcCwgX3RoaXMuX3RpbWVCZXR3ZWVuRGVjb2RpbmdBdHRlbXB0cywgcmVzb2x2ZSwgcmVqZWN0KTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgcmVqZWN0KGUpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9OwoJICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyByZXR1cm4gbG9vcChyZXNvbHZlLCByZWplY3QpOyB9KTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIENvbnRpbnVvdXNseSBkZWNvZGVzIGZyb20gdmlkZW8gaW5wdXQuCgkgICAgICovCgkgICAgQnJvd3NlckNvZGVSZWFkZXIucHJvdG90eXBlLmRlY29kZUNvbnRpbnVvdXNseSA9IGZ1bmN0aW9uIChlbGVtZW50LCBjYWxsYmFja0ZuKSB7CgkgICAgICAgIHZhciBfdGhpcyA9IHRoaXM7CgkgICAgICAgIHRoaXMuX3N0b3BDb250aW51b3VzRGVjb2RlID0gZmFsc2U7CgkgICAgICAgIHZhciBsb29wID0gZnVuY3Rpb24gKCkgewoJICAgICAgICAgICAgaWYgKF90aGlzLl9zdG9wQ29udGludW91c0RlY29kZSkgewoJICAgICAgICAgICAgICAgIF90aGlzLl9zdG9wQ29udGludW91c0RlY29kZSA9IHVuZGVmaW5lZDsKCSAgICAgICAgICAgICAgICByZXR1cm47CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBfdGhpcy5kZWNvZGUoZWxlbWVudCk7CgkgICAgICAgICAgICAgICAgY2FsbGJhY2tGbihyZXN1bHQsIG51bGwpOwoJICAgICAgICAgICAgICAgIHNldFRpbWVvdXQobG9vcCwgX3RoaXMudGltZUJldHdlZW5TY2Fuc01pbGxpcyk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBjYXRjaCAoZSkgewoJICAgICAgICAgICAgICAgIGNhbGxiYWNrRm4obnVsbCwgZSk7CgkgICAgICAgICAgICAgICAgdmFyIGlzQ2hlY2tzdW1PckZvcm1hdEVycm9yID0gZSBpbnN0YW5jZW9mIENoZWNrc3VtRXhjZXB0aW9uXzEuZGVmYXVsdCB8fCBlIGluc3RhbmNlb2YgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdDsKCSAgICAgICAgICAgICAgICB2YXIgaXNOb3RGb3VuZCA9IGUgaW5zdGFuY2VvZiBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQ7CgkgICAgICAgICAgICAgICAgaWYgKGlzQ2hlY2tzdW1PckZvcm1hdEVycm9yIHx8IGlzTm90Rm91bmQpIHsKCSAgICAgICAgICAgICAgICAgICAgLy8gdHJ5aW5nIGFnYWluCgkgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQobG9vcCwgX3RoaXMuX3RpbWVCZXR3ZWVuRGVjb2RpbmdBdHRlbXB0cyk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICB9OwoJICAgICAgICBsb29wKCk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBHZXRzIHRoZSBCaW5hcnlCaXRtYXAgZm9yIHlhISAoYW5kIGRlY29kZXMgaXQpCgkgICAgICovCgkgICAgQnJvd3NlckNvZGVSZWFkZXIucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uIChlbGVtZW50KSB7CgkgICAgICAgIC8vIGdldCBiaW5hcnkgYml0bWFwIGZvciBkZWNvZGUgZnVuY3Rpb24KCSAgICAgICAgdmFyIGJpbmFyeUJpdG1hcCA9IHRoaXMuY3JlYXRlQmluYXJ5Qml0bWFwKGVsZW1lbnQpOwoJICAgICAgICByZXR1cm4gdGhpcy5kZWNvZGVCaXRtYXAoYmluYXJ5Qml0bWFwKTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIENyZWF0ZXMgYSBiaW5hcnlCaXRtYXAgYmFzZWQgaW4gc29tZSBpbWFnZSBzb3VyY2UuCgkgICAgICoKCSAgICAgKiBAcGFyYW0gbWVkaWFFbGVtZW50IEhUTUwgZWxlbWVudCBjb250YWluaW5nIGRyYXdhYmxlIGltYWdlIHNvdXJjZS4KCSAgICAgKi8KCSAgICBCcm93c2VyQ29kZVJlYWRlci5wcm90b3R5cGUuY3JlYXRlQmluYXJ5Qml0bWFwID0gZnVuY3Rpb24gKG1lZGlhRWxlbWVudCkgewoJICAgICAgICB2YXIgY3R4ID0gdGhpcy5nZXRDYXB0dXJlQ2FudmFzQ29udGV4dChtZWRpYUVsZW1lbnQpOwoJICAgICAgICB0aGlzLmRyYXdJbWFnZU9uQ2FudmFzKGN0eCwgbWVkaWFFbGVtZW50KTsKCSAgICAgICAgdmFyIGNhbnZhcyA9IHRoaXMuZ2V0Q2FwdHVyZUNhbnZhcyhtZWRpYUVsZW1lbnQpOwoJICAgICAgICB2YXIgbHVtaW5hbmNlU291cmNlID0gbmV3IEhUTUxDYW52YXNFbGVtZW50THVtaW5hbmNlU291cmNlXzEuSFRNTENhbnZhc0VsZW1lbnRMdW1pbmFuY2VTb3VyY2UoY2FudmFzKTsKCSAgICAgICAgdmFyIGh5YnJpZEJpbmFyaXplciA9IG5ldyBIeWJyaWRCaW5hcml6ZXJfMS5kZWZhdWx0KGx1bWluYW5jZVNvdXJjZSk7CgkgICAgICAgIHJldHVybiBuZXcgQmluYXJ5Qml0bWFwXzEuZGVmYXVsdChoeWJyaWRCaW5hcml6ZXIpOwoJICAgIH07CgkgICAgLyoqCgkgICAgICoKCSAgICAgKi8KCSAgICBCcm93c2VyQ29kZVJlYWRlci5wcm90b3R5cGUuZ2V0Q2FwdHVyZUNhbnZhc0NvbnRleHQgPSBmdW5jdGlvbiAobWVkaWFFbGVtZW50KSB7CgkgICAgICAgIGlmICghdGhpcy5jYXB0dXJlQ2FudmFzQ29udGV4dCkgewoJICAgICAgICAgICAgdmFyIGVsZW0gPSB0aGlzLmdldENhcHR1cmVDYW52YXMobWVkaWFFbGVtZW50KTsKCSAgICAgICAgICAgIHZhciBjdHggPSBlbGVtLmdldENvbnRleHQoJzJkJyk7CgkgICAgICAgICAgICB0aGlzLmNhcHR1cmVDYW52YXNDb250ZXh0ID0gY3R4OwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiB0aGlzLmNhcHR1cmVDYW52YXNDb250ZXh0OwoJICAgIH07CgkgICAgLyoqCgkgICAgICoKCSAgICAgKi8KCSAgICBCcm93c2VyQ29kZVJlYWRlci5wcm90b3R5cGUuZ2V0Q2FwdHVyZUNhbnZhcyA9IGZ1bmN0aW9uIChtZWRpYUVsZW1lbnQpIHsKCSAgICAgICAgaWYgKCF0aGlzLmNhcHR1cmVDYW52YXMpIHsKCSAgICAgICAgICAgIHZhciBlbGVtID0gdGhpcy5jcmVhdGVDYXB0dXJlQ2FudmFzKG1lZGlhRWxlbWVudCk7CgkgICAgICAgICAgICB0aGlzLmNhcHR1cmVDYW52YXMgPSBlbGVtOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiB0aGlzLmNhcHR1cmVDYW52YXM7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBPdmV3cml0aW5nIHRoaXMgYWxsb3dzIHlvdSB0byBtYW5pcHVsYXRlIHRoZSBzbmFwc2hvdCBpbWFnZSBpbiBhbnl3YXkgeW91IHdhbnQgYmVmb3JlIGRlY29kZS4KCSAgICAgKi8KCSAgICBCcm93c2VyQ29kZVJlYWRlci5wcm90b3R5cGUuZHJhd0ltYWdlT25DYW52YXMgPSBmdW5jdGlvbiAoY2FudmFzRWxlbWVudENvbnRleHQsIHNyY0VsZW1lbnQpIHsKCSAgICAgICAgY2FudmFzRWxlbWVudENvbnRleHQuZHJhd0ltYWdlKHNyY0VsZW1lbnQsIDAsIDApOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQ2FsbCB0aGUgZW5jYXBzdWxhdGVkIHJlYWRlcnMgZGVjb2RlCgkgICAgICovCgkgICAgQnJvd3NlckNvZGVSZWFkZXIucHJvdG90eXBlLmRlY29kZUJpdG1hcCA9IGZ1bmN0aW9uIChiaW5hcnlCaXRtYXApIHsKCSAgICAgICAgcmV0dXJuIHRoaXMucmVhZGVyLmRlY29kZShiaW5hcnlCaXRtYXAsIHRoaXMuX2hpbnRzKTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIPCflowgUHJlcGFyZXMgdGhlIGNhbnZhcyBmb3IgY2FwdHVyZSBhbmQgc2NhbiBmcmFtZXMuCgkgICAgICovCgkgICAgQnJvd3NlckNvZGVSZWFkZXIucHJvdG90eXBlLmNyZWF0ZUNhcHR1cmVDYW52YXMgPSBmdW5jdGlvbiAobWVkaWFFbGVtZW50KSB7CgkgICAgICAgIGlmICh0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSB7CgkgICAgICAgICAgICB0aGlzLl9kZXN0cm95Q2FwdHVyZUNhbnZhcygpOwoJICAgICAgICAgICAgcmV0dXJuIG51bGw7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGNhbnZhc0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsKCSAgICAgICAgdmFyIHdpZHRoOwoJICAgICAgICB2YXIgaGVpZ2h0OwoJICAgICAgICBpZiAodHlwZW9mIG1lZGlhRWxlbWVudCAhPT0gJ3VuZGVmaW5lZCcpIHsKCSAgICAgICAgICAgIGlmIChtZWRpYUVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MVmlkZW9FbGVtZW50KSB7CgkgICAgICAgICAgICAgICAgd2lkdGggPSBtZWRpYUVsZW1lbnQudmlkZW9XaWR0aDsKCSAgICAgICAgICAgICAgICBoZWlnaHQgPSBtZWRpYUVsZW1lbnQudmlkZW9IZWlnaHQ7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlIGlmIChtZWRpYUVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MSW1hZ2VFbGVtZW50KSB7CgkgICAgICAgICAgICAgICAgd2lkdGggPSBtZWRpYUVsZW1lbnQubmF0dXJhbFdpZHRoIHx8IG1lZGlhRWxlbWVudC53aWR0aDsKCSAgICAgICAgICAgICAgICBoZWlnaHQgPSBtZWRpYUVsZW1lbnQubmF0dXJhbEhlaWdodCB8fCBtZWRpYUVsZW1lbnQuaGVpZ2h0OwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGNhbnZhc0VsZW1lbnQuc3R5bGUud2lkdGggPSB3aWR0aCArICdweCc7CgkgICAgICAgIGNhbnZhc0VsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgJ3B4JzsKCSAgICAgICAgY2FudmFzRWxlbWVudC53aWR0aCA9IHdpZHRoOwoJICAgICAgICBjYW52YXNFbGVtZW50LmhlaWdodCA9IGhlaWdodDsKCSAgICAgICAgcmV0dXJuIGNhbnZhc0VsZW1lbnQ7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBTdG9wcyB0aGUgY29udGludW91cyBzY2FuIGFuZCBjbGVhbnMgdGhlIHN0cmVhbS4KCSAgICAgKi8KCSAgICBCcm93c2VyQ29kZVJlYWRlci5wcm90b3R5cGUuc3RvcFN0cmVhbXMgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIGlmICh0aGlzLnN0cmVhbSkgewoJICAgICAgICAgICAgdGhpcy5zdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5mb3JFYWNoKGZ1bmN0aW9uICh0KSB7IHJldHVybiB0LnN0b3AoKTsgfSk7CgkgICAgICAgICAgICB0aGlzLnN0cmVhbSA9IHVuZGVmaW5lZDsKCSAgICAgICAgfQoJICAgICAgICBpZiAodGhpcy5fc3RvcEFzeW5jRGVjb2RlID09PSBmYWxzZSkgewoJICAgICAgICAgICAgdGhpcy5zdG9wQXN5bmNEZWNvZGUoKTsKCSAgICAgICAgfQoJICAgICAgICBpZiAodGhpcy5fc3RvcENvbnRpbnVvdXNEZWNvZGUgPT09IGZhbHNlKSB7CgkgICAgICAgICAgICB0aGlzLnN0b3BDb250aW51b3VzRGVjb2RlKCk7CgkgICAgICAgIH0KCSAgICB9OwoJICAgIC8qKgoJICAgICAqIFJlc2V0cyB0aGUgY29kZSByZWFkZXIgdG8gdGhlIGluaXRpYWwgc3RhdGUuIENhbmNlbHMgYW55IG9uZ29pbmcgYmFyY29kZSBzY2FubmluZyBmcm9tIHZpZGVvIG9yIGNhbWVyYS4KCSAgICAgKgoJICAgICAqIEBtZW1iZXJPZiBCcm93c2VyQ29kZVJlYWRlcgoJICAgICAqLwoJICAgIEJyb3dzZXJDb2RlUmVhZGVyLnByb3RvdHlwZS5yZXNldCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgLy8gc3RvcHMgdGhlIGNhbWVyYSwgcHJldmlldyBhbmQgc2NhbiDwn5S0CgkgICAgICAgIHRoaXMuc3RvcFN0cmVhbXMoKTsKCSAgICAgICAgLy8gY2xlYW4gYW5kIGZvcmdldCBhYm91dCBIVE1MIGVsZW1lbnRzCgkgICAgICAgIHRoaXMuX2Rlc3Ryb3lWaWRlb0VsZW1lbnQoKTsKCSAgICAgICAgdGhpcy5fZGVzdHJveUltYWdlRWxlbWVudCgpOwoJICAgICAgICB0aGlzLl9kZXN0cm95Q2FwdHVyZUNhbnZhcygpOwoJICAgIH07CgkgICAgQnJvd3NlckNvZGVSZWFkZXIucHJvdG90eXBlLl9kZXN0cm95VmlkZW9FbGVtZW50ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICBpZiAoIXRoaXMudmlkZW9FbGVtZW50KSB7CgkgICAgICAgICAgICByZXR1cm47CgkgICAgICAgIH0KCSAgICAgICAgLy8gZmlyc3QgZ2l2ZXMgZnJlZWRvbiB0byB0aGUgZWxlbWVudCDwn5WKCgkgICAgICAgIGlmICh0eXBlb2YgdGhpcy52aWRlb0VuZGVkTGlzdGVuZXIgIT09ICd1bmRlZmluZWQnKSB7CgkgICAgICAgICAgICB0aGlzLnZpZGVvRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdlbmRlZCcsIHRoaXMudmlkZW9FbmRlZExpc3RlbmVyKTsKCSAgICAgICAgfQoJICAgICAgICBpZiAodHlwZW9mIHRoaXMudmlkZW9QbGF5aW5nRXZlbnRMaXN0ZW5lciAhPT0gJ3VuZGVmaW5lZCcpIHsKCSAgICAgICAgICAgIHRoaXMudmlkZW9FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BsYXlpbmcnLCB0aGlzLnZpZGVvUGxheWluZ0V2ZW50TGlzdGVuZXIpOwoJICAgICAgICB9CgkgICAgICAgIGlmICh0eXBlb2YgdGhpcy52aWRlb0NhblBsYXlMaXN0ZW5lciAhPT0gJ3VuZGVmaW5lZCcpIHsKCSAgICAgICAgICAgIHRoaXMudmlkZW9FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2xvYWRlZG1ldGFkYXRhJywgdGhpcy52aWRlb0NhblBsYXlMaXN0ZW5lcik7CgkgICAgICAgIH0KCSAgICAgICAgLy8gdGhlbiBmb3JnZXRzIGFib3V0IHRoYXQgZWxlbWVudCDwn5iiCgkgICAgICAgIHRoaXMuY2xlYW5WaWRlb1NvdXJjZSh0aGlzLnZpZGVvRWxlbWVudCk7CgkgICAgICAgIHRoaXMudmlkZW9FbGVtZW50ID0gdW5kZWZpbmVkOwoJICAgIH07CgkgICAgQnJvd3NlckNvZGVSZWFkZXIucHJvdG90eXBlLl9kZXN0cm95SW1hZ2VFbGVtZW50ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICBpZiAoIXRoaXMuaW1hZ2VFbGVtZW50KSB7CgkgICAgICAgICAgICByZXR1cm47CgkgICAgICAgIH0KCSAgICAgICAgLy8gZmlyc3QgZ2l2ZXMgZnJlZWRvbiB0byB0aGUgZWxlbWVudCDwn5WKCgkgICAgICAgIGlmICh1bmRlZmluZWQgIT09IHRoaXMuaW1hZ2VMb2FkZWRMaXN0ZW5lcikgewoJICAgICAgICAgICAgdGhpcy5pbWFnZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbG9hZCcsIHRoaXMuaW1hZ2VMb2FkZWRMaXN0ZW5lcik7CgkgICAgICAgIH0KCSAgICAgICAgLy8gdGhlbiBmb3JnZXQgYWJvdXQgdGhhdCBlbGVtZW50IPCfmKIKCSAgICAgICAgdGhpcy5pbWFnZUVsZW1lbnQuc3JjID0gdW5kZWZpbmVkOwoJICAgICAgICB0aGlzLmltYWdlRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ3NyYycpOwoJICAgICAgICB0aGlzLmltYWdlRWxlbWVudCA9IHVuZGVmaW5lZDsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIENsZWFucyBjYW52YXMgcmVmZXJlbmNlcyDwn5aMCgkgICAgICovCgkgICAgQnJvd3NlckNvZGVSZWFkZXIucHJvdG90eXBlLl9kZXN0cm95Q2FwdHVyZUNhbnZhcyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgLy8gdGhlbiBmb3JnZXQgYWJvdXQgdGhhdCBlbGVtZW50IPCfmKIKCSAgICAgICAgdGhpcy5jYXB0dXJlQ2FudmFzQ29udGV4dCA9IHVuZGVmaW5lZDsKCSAgICAgICAgdGhpcy5jYXB0dXJlQ2FudmFzID0gdW5kZWZpbmVkOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogRGVmaW5lcyB3aGF0IHRoZSB2aWRlb0VsZW1lbnQgc3JjIHdpbGwgYmUuCgkgICAgICoKCSAgICAgKiBAcGFyYW0gdmlkZW9FbGVtZW50CgkgICAgICogQHBhcmFtIHN0cmVhbQoJICAgICAqLwoJICAgIEJyb3dzZXJDb2RlUmVhZGVyLnByb3RvdHlwZS5hZGRWaWRlb1NvdXJjZSA9IGZ1bmN0aW9uICh2aWRlb0VsZW1lbnQsIHN0cmVhbSkgewoJICAgICAgICAvLyBPbGRlciBicm93c2VycyBtYXkgbm90IGhhdmUgYHNyY09iamVjdGAKCSAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgIC8vIEBub3RlIFRocm93cyBFeGNlcHRpb24gaWYgaW50ZXJydXB0ZWQgYnkgYSBuZXcgbG9hZGVkIHJlcXVlc3QKCSAgICAgICAgICAgIHZpZGVvRWxlbWVudC5zcmNPYmplY3QgPSBzdHJlYW07CgkgICAgICAgIH0KCSAgICAgICAgY2F0Y2ggKGVycikgewoJICAgICAgICAgICAgLy8gQG5vdGUgQXZvaWQgdXNpbmcgdGhpcyBpbiBuZXcgYnJvd3NlcnMsIGFzIGl0IGlzIGdvaW5nIGF3YXkuCgkgICAgICAgICAgICB2aWRlb0VsZW1lbnQuc3JjID0gVVJMLmNyZWF0ZU9iamVjdFVSTChzdHJlYW0pOwoJICAgICAgICB9CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBVbmJpbmRzIGEgSFRNTCB2aWRlbyBzcmMgcHJvcGVydHkuCgkgICAgICoKCSAgICAgKiBAcGFyYW0gdmlkZW9FbGVtZW50CgkgICAgICovCgkgICAgQnJvd3NlckNvZGVSZWFkZXIucHJvdG90eXBlLmNsZWFuVmlkZW9Tb3VyY2UgPSBmdW5jdGlvbiAodmlkZW9FbGVtZW50KSB7CgkgICAgICAgIHRyeSB7CgkgICAgICAgICAgICB2aWRlb0VsZW1lbnQuc3JjT2JqZWN0ID0gbnVsbDsKCSAgICAgICAgfQoJICAgICAgICBjYXRjaCAoZXJyKSB7CgkgICAgICAgICAgICB2aWRlb0VsZW1lbnQuc3JjID0gJyc7CgkgICAgICAgIH0KCSAgICAgICAgdGhpcy52aWRlb0VsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdzcmMnKTsKCSAgICB9OwoJICAgIHJldHVybiBCcm93c2VyQ29kZVJlYWRlcjsKCX0oKSk7CglleHBvcnRzLkJyb3dzZXJDb2RlUmVhZGVyID0gQnJvd3NlckNvZGVSZWFkZXI7CgoJfSk7CgoJdmFyIFJlc3VsdF8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJLyoKCSAqIENvcHlyaWdodCAyMDA3IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgoJLyoqCgkgKiA8cD5FbmNhcHN1bGF0ZXMgdGhlIHJlc3VsdCBvZiBkZWNvZGluZyBhIGJhcmNvZGUgd2l0aGluIGFuIGltYWdlLjwvcD4KCSAqCgkgKiBAYXV0aG9yIFNlYW4gT3dlbgoJICovCgl2YXIgUmVzdWx0ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIC8vIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHRleHQ6IHN0cmluZywKCSAgICAvLyAgICAgICAgICAgICAgIFVpbnQ4QXJyYXkgcmF3Qnl0ZXMsCgkgICAgLy8gICAgICAgICAgICAgICBSZXN1bHRQb2NvbnN0IHJlc3VsdFBvaW50czogSW50MzJBcnJheSwKCSAgICAvLyAgICAgICAgICAgICAgIEJhcmNvZGVGb3JtYXQgZm9ybWF0KSB7CgkgICAgLy8gICB0aGlzKHRleHQsIHJhd0J5dGVzLCByZXN1bHRQb2ludHMsIGZvcm1hdCwgU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCkpCgkgICAgLy8gfQoJICAgIC8vIHB1YmxpYyBjb25zdHJ1Y3Rvcih0ZXh0OiBzdHJpbmcsCgkgICAgLy8gICAgICAgICAgICAgICBVaW50OEFycmF5IHJhd0J5dGVzLAoJICAgIC8vICAgICAgICAgICAgICAgUmVzdWx0UG9jb25zdCByZXN1bHRQb2ludHM6IEludDMyQXJyYXksCgkgICAgLy8gICAgICAgICAgICAgICBCYXJjb2RlRm9ybWF0IGZvcm1hdCwKCSAgICAvLyAgICAgICAgICAgICAgIGxvbmcgdGltZXN0YW1wKSB7CgkgICAgLy8gICB0aGlzKHRleHQsIHJhd0J5dGVzLCByYXdCeXRlcyA9PSBudWxsID8gMCA6IDggKiByYXdCeXRlcy5sZW5ndGgsCgkgICAgLy8gICAgICAgIHJlc3VsdFBvaW50cywgZm9ybWF0LCB0aW1lc3RhbXApCgkgICAgLy8gfQoJICAgIGZ1bmN0aW9uIFJlc3VsdCh0ZXh0LCByYXdCeXRlcywgbnVtQml0cywgcmVzdWx0UG9pbnRzLCBmb3JtYXQsIHRpbWVzdGFtcCkgewoJICAgICAgICBpZiAobnVtQml0cyA9PT0gdm9pZCAwKSB7IG51bUJpdHMgPSByYXdCeXRlcyA9PSBudWxsID8gMCA6IDggKiByYXdCeXRlcy5sZW5ndGg7IH0KCSAgICAgICAgaWYgKHRpbWVzdGFtcCA9PT0gdm9pZCAwKSB7IHRpbWVzdGFtcCA9IFN5c3RlbV8xLmRlZmF1bHQuY3VycmVudFRpbWVNaWxsaXMoKTsgfQoJICAgICAgICB0aGlzLnRleHQgPSB0ZXh0OwoJICAgICAgICB0aGlzLnJhd0J5dGVzID0gcmF3Qnl0ZXM7CgkgICAgICAgIHRoaXMubnVtQml0cyA9IG51bUJpdHM7CgkgICAgICAgIHRoaXMucmVzdWx0UG9pbnRzID0gcmVzdWx0UG9pbnRzOwoJICAgICAgICB0aGlzLmZvcm1hdCA9IGZvcm1hdDsKCSAgICAgICAgdGhpcy50aW1lc3RhbXAgPSB0aW1lc3RhbXA7CgkgICAgICAgIHRoaXMudGV4dCA9IHRleHQ7CgkgICAgICAgIHRoaXMucmF3Qnl0ZXMgPSByYXdCeXRlczsKCSAgICAgICAgaWYgKHVuZGVmaW5lZCA9PT0gbnVtQml0cyB8fCBudWxsID09PSBudW1CaXRzKSB7CgkgICAgICAgICAgICB0aGlzLm51bUJpdHMgPSAocmF3Qnl0ZXMgPT09IG51bGwgfHwgcmF3Qnl0ZXMgPT09IHVuZGVmaW5lZCkgPyAwIDogOCAqIHJhd0J5dGVzLmxlbmd0aDsKCSAgICAgICAgfQoJICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgIHRoaXMubnVtQml0cyA9IG51bUJpdHM7CgkgICAgICAgIH0KCSAgICAgICAgdGhpcy5yZXN1bHRQb2ludHMgPSByZXN1bHRQb2ludHM7CgkgICAgICAgIHRoaXMuZm9ybWF0ID0gZm9ybWF0OwoJICAgICAgICB0aGlzLnJlc3VsdE1ldGFkYXRhID0gbnVsbDsKCSAgICAgICAgaWYgKHVuZGVmaW5lZCA9PT0gdGltZXN0YW1wIHx8IG51bGwgPT09IHRpbWVzdGFtcCkgewoJICAgICAgICAgICAgdGhpcy50aW1lc3RhbXAgPSBTeXN0ZW1fMS5kZWZhdWx0LmN1cnJlbnRUaW1lTWlsbGlzKCk7CgkgICAgICAgIH0KCSAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICB0aGlzLnRpbWVzdGFtcCA9IHRpbWVzdGFtcDsKCSAgICAgICAgfQoJICAgIH0KCSAgICAvKioKCSAgICAgKiBAcmV0dXJuIHJhdyB0ZXh0IGVuY29kZWQgYnkgdGhlIGJhcmNvZGUKCSAgICAgKi8KCSAgICBSZXN1bHQucHJvdG90eXBlLmdldFRleHQgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLnRleHQ7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcmV0dXJuIHJhdyBieXRlcyBlbmNvZGVkIGJ5IHRoZSBiYXJjb2RlLCBpZiBhcHBsaWNhYmxlLCBvdGhlcndpc2Uge0Bjb2RlIG51bGx9CgkgICAgICovCgkgICAgUmVzdWx0LnByb3RvdHlwZS5nZXRSYXdCeXRlcyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMucmF3Qnl0ZXM7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcmV0dXJuIGhvdyBtYW55IGJpdHMgb2Yge0BsaW5rICNnZXRSYXdCeXRlcygpfSBhcmUgdmFsaWQ7IHR5cGljYWxseSA4IHRpbWVzIGl0cyBsZW5ndGgKCSAgICAgKiBAc2luY2UgMy4zLjAKCSAgICAgKi8KCSAgICBSZXN1bHQucHJvdG90eXBlLmdldE51bUJpdHMgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLm51bUJpdHM7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcmV0dXJuIHBvaW50cyByZWxhdGVkIHRvIHRoZSBiYXJjb2RlIGluIHRoZSBpbWFnZS4gVGhlc2UgYXJlIHR5cGljYWxseSBwb2ludHMKCSAgICAgKiAgICAgICAgIGlkZW50aWZ5aW5nIGZpbmRlciBwYXR0ZXJucyBvciB0aGUgY29ybmVycyBvZiB0aGUgYmFyY29kZS4gVGhlIGV4YWN0IG1lYW5pbmcgaXMKCSAgICAgKiAgICAgICAgIHNwZWNpZmljIHRvIHRoZSB0eXBlIG9mIGJhcmNvZGUgdGhhdCB3YXMgZGVjb2RlZC4KCSAgICAgKi8KCSAgICBSZXN1bHQucHJvdG90eXBlLmdldFJlc3VsdFBvaW50cyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMucmVzdWx0UG9pbnRzOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQHJldHVybiB7QGxpbmsgQmFyY29kZUZvcm1hdH0gcmVwcmVzZW50aW5nIHRoZSBmb3JtYXQgb2YgdGhlIGJhcmNvZGUgdGhhdCB3YXMgZGVjb2RlZAoJICAgICAqLwoJICAgIFJlc3VsdC5wcm90b3R5cGUuZ2V0QmFyY29kZUZvcm1hdCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0OwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQHJldHVybiB7QGxpbmsgTWFwfSBtYXBwaW5nIHtAbGluayBSZXN1bHRNZXRhZGF0YVR5cGV9IGtleXMgdG8gdmFsdWVzLiBNYXkgYmUKCSAgICAgKiAgIHtAY29kZSBudWxsfS4gVGhpcyBjb250YWlucyBvcHRpb25hbCBtZXRhZGF0YSBhYm91dCB3aGF0IHdhcyBkZXRlY3RlZCBhYm91dCB0aGUgYmFyY29kZSwKCSAgICAgKiAgIGxpa2Ugb3JpZW50YXRpb24uCgkgICAgICovCgkgICAgUmVzdWx0LnByb3RvdHlwZS5nZXRSZXN1bHRNZXRhZGF0YSA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMucmVzdWx0TWV0YWRhdGE7CgkgICAgfTsKCSAgICBSZXN1bHQucHJvdG90eXBlLnB1dE1ldGFkYXRhID0gZnVuY3Rpb24gKHR5cGUsIHZhbHVlKSB7CgkgICAgICAgIGlmICh0aGlzLnJlc3VsdE1ldGFkYXRhID09PSBudWxsKSB7CgkgICAgICAgICAgICB0aGlzLnJlc3VsdE1ldGFkYXRhID0gbmV3IE1hcCgpOwoJICAgICAgICB9CgkgICAgICAgIHRoaXMucmVzdWx0TWV0YWRhdGEuc2V0KHR5cGUsIHZhbHVlKTsKCSAgICB9OwoJICAgIFJlc3VsdC5wcm90b3R5cGUucHV0QWxsTWV0YWRhdGEgPSBmdW5jdGlvbiAobWV0YWRhdGEpIHsKCSAgICAgICAgaWYgKG1ldGFkYXRhICE9PSBudWxsKSB7CgkgICAgICAgICAgICBpZiAodGhpcy5yZXN1bHRNZXRhZGF0YSA9PT0gbnVsbCkgewoJICAgICAgICAgICAgICAgIHRoaXMucmVzdWx0TWV0YWRhdGEgPSBtZXRhZGF0YTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgIHRoaXMucmVzdWx0TWV0YWRhdGEgPSBuZXcgTWFwKG1ldGFkYXRhKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgIH07CgkgICAgUmVzdWx0LnByb3RvdHlwZS5hZGRSZXN1bHRQb2ludHMgPSBmdW5jdGlvbiAobmV3UG9pbnRzKSB7CgkgICAgICAgIHZhciBvbGRQb2ludHMgPSB0aGlzLnJlc3VsdFBvaW50czsKCSAgICAgICAgaWYgKG9sZFBvaW50cyA9PT0gbnVsbCkgewoJICAgICAgICAgICAgdGhpcy5yZXN1bHRQb2ludHMgPSBuZXdQb2ludHM7CgkgICAgICAgIH0KCSAgICAgICAgZWxzZSBpZiAobmV3UG9pbnRzICE9PSBudWxsICYmIG5ld1BvaW50cy5sZW5ndGggPiAwKSB7CgkgICAgICAgICAgICB2YXIgYWxsUG9pbnRzID0gbmV3IEFycmF5KG9sZFBvaW50cy5sZW5ndGggKyBuZXdQb2ludHMubGVuZ3RoKTsKCSAgICAgICAgICAgIFN5c3RlbV8xLmRlZmF1bHQuYXJyYXljb3B5KG9sZFBvaW50cywgMCwgYWxsUG9pbnRzLCAwLCBvbGRQb2ludHMubGVuZ3RoKTsKCSAgICAgICAgICAgIFN5c3RlbV8xLmRlZmF1bHQuYXJyYXljb3B5KG5ld1BvaW50cywgMCwgYWxsUG9pbnRzLCBvbGRQb2ludHMubGVuZ3RoLCBuZXdQb2ludHMubGVuZ3RoKTsKCSAgICAgICAgICAgIHRoaXMucmVzdWx0UG9pbnRzID0gYWxsUG9pbnRzOwoJICAgICAgICB9CgkgICAgfTsKCSAgICBSZXN1bHQucHJvdG90eXBlLmdldFRpbWVzdGFtcCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMudGltZXN0YW1wOwoJICAgIH07CgkgICAgLypAT3ZlcnJpZGUqLwoJICAgIFJlc3VsdC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLnRleHQ7CgkgICAgfTsKCSAgICByZXR1cm4gUmVzdWx0OwoJfSgpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IFJlc3VsdDsKCgl9KTsKCgl2YXIgQmFyY29kZUZvcm1hdF8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJLyoKCSAqIERpcmVjdCBwb3J0IHRvIFR5cGVTY3JpcHQgb2YgWlhpbmcgYnkgQWRyaWFuIFRvyJljxIMKCSAqLwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCS8qCgkgKiBDb3B5cmlnaHQgMjAwOSBaWGluZyBhdXRob3JzCgkgKgoJICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSAqCgkgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJICoKCSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJICovCgkvKm5hbWVzcGFjZSBjb20uZ29vZ2xlLnp4aW5nIHsqLwoJLyoqCgkgKiBFbnVtZXJhdGVzIGJhcmNvZGUgZm9ybWF0cyBrbm93biB0byB0aGlzIHBhY2thZ2UuIFBsZWFzZSBrZWVwIGFscGhhYmV0aXplZC4KCSAqCgkgKiBAYXV0aG9yIFNlYW4gT3dlbgoJICovCgl2YXIgQmFyY29kZUZvcm1hdDsKCShmdW5jdGlvbiAoQmFyY29kZUZvcm1hdCkgewoJICAgIC8qKiBBenRlYyAyRCBiYXJjb2RlIGZvcm1hdC4gKi8KCSAgICBCYXJjb2RlRm9ybWF0W0JhcmNvZGVGb3JtYXRbIkFaVEVDIl0gPSAwXSA9ICJBWlRFQyI7CgkgICAgLyoqIENPREFCQVIgMUQgZm9ybWF0LiAqLwoJICAgIEJhcmNvZGVGb3JtYXRbQmFyY29kZUZvcm1hdFsiQ09EQUJBUiJdID0gMV0gPSAiQ09EQUJBUiI7CgkgICAgLyoqIENvZGUgMzkgMUQgZm9ybWF0LiAqLwoJICAgIEJhcmNvZGVGb3JtYXRbQmFyY29kZUZvcm1hdFsiQ09ERV8zOSJdID0gMl0gPSAiQ09ERV8zOSI7CgkgICAgLyoqIENvZGUgOTMgMUQgZm9ybWF0LiAqLwoJICAgIEJhcmNvZGVGb3JtYXRbQmFyY29kZUZvcm1hdFsiQ09ERV85MyJdID0gM10gPSAiQ09ERV85MyI7CgkgICAgLyoqIENvZGUgMTI4IDFEIGZvcm1hdC4gKi8KCSAgICBCYXJjb2RlRm9ybWF0W0JhcmNvZGVGb3JtYXRbIkNPREVfMTI4Il0gPSA0XSA9ICJDT0RFXzEyOCI7CgkgICAgLyoqIERhdGEgTWF0cml4IDJEIGJhcmNvZGUgZm9ybWF0LiAqLwoJICAgIEJhcmNvZGVGb3JtYXRbQmFyY29kZUZvcm1hdFsiREFUQV9NQVRSSVgiXSA9IDVdID0gIkRBVEFfTUFUUklYIjsKCSAgICAvKiogRUFOLTggMUQgZm9ybWF0LiAqLwoJICAgIEJhcmNvZGVGb3JtYXRbQmFyY29kZUZvcm1hdFsiRUFOXzgiXSA9IDZdID0gIkVBTl84IjsKCSAgICAvKiogRUFOLTEzIDFEIGZvcm1hdC4gKi8KCSAgICBCYXJjb2RlRm9ybWF0W0JhcmNvZGVGb3JtYXRbIkVBTl8xMyJdID0gN10gPSAiRUFOXzEzIjsKCSAgICAvKiogSVRGIChJbnRlcmxlYXZlZCBUd28gb2YgRml2ZSkgMUQgZm9ybWF0LiAqLwoJICAgIEJhcmNvZGVGb3JtYXRbQmFyY29kZUZvcm1hdFsiSVRGIl0gPSA4XSA9ICJJVEYiOwoJICAgIC8qKiBNYXhpQ29kZSAyRCBiYXJjb2RlIGZvcm1hdC4gKi8KCSAgICBCYXJjb2RlRm9ybWF0W0JhcmNvZGVGb3JtYXRbIk1BWElDT0RFIl0gPSA5XSA9ICJNQVhJQ09ERSI7CgkgICAgLyoqIFBERjQxNyBmb3JtYXQuICovCgkgICAgQmFyY29kZUZvcm1hdFtCYXJjb2RlRm9ybWF0WyJQREZfNDE3Il0gPSAxMF0gPSAiUERGXzQxNyI7CgkgICAgLyoqIFFSIENvZGUgMkQgYmFyY29kZSBmb3JtYXQuICovCgkgICAgQmFyY29kZUZvcm1hdFtCYXJjb2RlRm9ybWF0WyJRUl9DT0RFIl0gPSAxMV0gPSAiUVJfQ09ERSI7CgkgICAgLyoqIFJTUyAxNCAqLwoJICAgIEJhcmNvZGVGb3JtYXRbQmFyY29kZUZvcm1hdFsiUlNTXzE0Il0gPSAxMl0gPSAiUlNTXzE0IjsKCSAgICAvKiogUlNTIEVYUEFOREVEICovCgkgICAgQmFyY29kZUZvcm1hdFtCYXJjb2RlRm9ybWF0WyJSU1NfRVhQQU5ERUQiXSA9IDEzXSA9ICJSU1NfRVhQQU5ERUQiOwoJICAgIC8qKiBVUEMtQSAxRCBmb3JtYXQuICovCgkgICAgQmFyY29kZUZvcm1hdFtCYXJjb2RlRm9ybWF0WyJVUENfQSJdID0gMTRdID0gIlVQQ19BIjsKCSAgICAvKiogVVBDLUUgMUQgZm9ybWF0LiAqLwoJICAgIEJhcmNvZGVGb3JtYXRbQmFyY29kZUZvcm1hdFsiVVBDX0UiXSA9IDE1XSA9ICJVUENfRSI7CgkgICAgLyoqIFVQQy9FQU4gZXh0ZW5zaW9uIGZvcm1hdC4gTm90IGEgc3RhbmQtYWxvbmUgZm9ybWF0LiAqLwoJICAgIEJhcmNvZGVGb3JtYXRbQmFyY29kZUZvcm1hdFsiVVBDX0VBTl9FWFRFTlNJT04iXSA9IDE2XSA9ICJVUENfRUFOX0VYVEVOU0lPTiI7Cgl9KShCYXJjb2RlRm9ybWF0IHx8IChCYXJjb2RlRm9ybWF0ID0ge30pKTsKCWV4cG9ydHMuZGVmYXVsdCA9IEJhcmNvZGVGb3JtYXQ7CgoJfSk7CgoJdmFyIFJlc3VsdE1ldGFkYXRhVHlwZV8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJLyoKCSAqIENvcHlyaWdodCAyMDA4IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgkvKm5hbWVzcGFjZSBjb20uZ29vZ2xlLnp4aW5nIHsqLwoJLyoqCgkgKiBSZXByZXNlbnRzIHNvbWUgdHlwZSBvZiBtZXRhZGF0YSBhYm91dCB0aGUgcmVzdWx0IG9mIHRoZSBkZWNvZGluZyB0aGF0IHRoZSBkZWNvZGVyCgkgKiB3aXNoZXMgdG8gY29tbXVuaWNhdGUgYmFjayB0byB0aGUgY2FsbGVyLgoJICoKCSAqIEBhdXRob3IgU2VhbiBPd2VuCgkgKi8KCXZhciBSZXN1bHRNZXRhZGF0YVR5cGU7CgkoZnVuY3Rpb24gKFJlc3VsdE1ldGFkYXRhVHlwZSkgewoJICAgIC8qKgoJICAgICAqIFVuc3BlY2lmaWVkLCBhcHBsaWNhdGlvbi1zcGVjaWZpYyBtZXRhZGF0YS4gTWFwcyB0byBhbiB1bnNwZWNpZmllZCB7QGxpbmsgT2JqZWN0fS4KCSAgICAgKi8KCSAgICBSZXN1bHRNZXRhZGF0YVR5cGVbUmVzdWx0TWV0YWRhdGFUeXBlWyJPVEhFUiJdID0gMF0gPSAiT1RIRVIiOwoJICAgIC8qKgoJICAgICAqIERlbm90ZXMgdGhlIGxpa2VseSBhcHByb3hpbWF0ZSBvcmllbnRhdGlvbiBvZiB0aGUgYmFyY29kZSBpbiB0aGUgaW1hZ2UuIFRoaXMgdmFsdWUKCSAgICAgKiBpcyBnaXZlbiBhcyBkZWdyZWVzIHJvdGF0ZWQgY2xvY2t3aXNlIGZyb20gdGhlIG5vcm1hbCwgdXByaWdodCBvcmllbnRhdGlvbi4KCSAgICAgKiBGb3IgZXhhbXBsZSBhIDFEIGJhcmNvZGUgd2hpY2ggd2FzIGZvdW5kIGJ5IHJlYWRpbmcgdG9wLXRvLWJvdHRvbSB3b3VsZCBiZQoJICAgICAqIHNhaWQgdG8gaGF2ZSBvcmllbnRhdGlvbiAiOTAiLiBUaGlzIGtleSBtYXBzIHRvIGFuIHtAbGluayBJbnRlZ2VyfSB3aG9zZQoJICAgICAqIHZhbHVlIGlzIGluIHRoZSByYW5nZSBbMCwzNjApLgoJICAgICAqLwoJICAgIFJlc3VsdE1ldGFkYXRhVHlwZVtSZXN1bHRNZXRhZGF0YVR5cGVbIk9SSUVOVEFUSU9OIl0gPSAxXSA9ICJPUklFTlRBVElPTiI7CgkgICAgLyoqCgkgICAgICogPHA+MkQgYmFyY29kZSBmb3JtYXRzIHR5cGljYWxseSBlbmNvZGUgdGV4dCwgYnV0IGFsbG93IGZvciBhIHNvcnQgb2YgJ2J5dGUgbW9kZScKCSAgICAgKiB3aGljaCBpcyBzb21ldGltZXMgdXNlZCB0byBlbmNvZGUgYmluYXJ5IGRhdGEuIFdoaWxlIHtAbGluayBSZXN1bHR9IG1ha2VzIGF2YWlsYWJsZQoJICAgICAqIHRoZSBjb21wbGV0ZSByYXcgYnl0ZXMgaW4gdGhlIGJhcmNvZGUgZm9yIHRoZXNlIGZvcm1hdHMsIGl0IGRvZXMgbm90IG9mZmVyIHRoZSBieXRlcwoJICAgICAqIGZyb20gdGhlIGJ5dGUgc2VnbWVudHMgYWxvbmUuPC9wPgoJICAgICAqCgkgICAgICogPHA+VGhpcyBtYXBzIHRvIGEge0BsaW5rIGphdmEudXRpbC5MaXN0fSBvZiBieXRlIGFycmF5cyBjb3JyZXNwb25kaW5nIHRvIHRoZQoJICAgICAqIHJhdyBieXRlcyBpbiB0aGUgYnl0ZSBzZWdtZW50cyBpbiB0aGUgYmFyY29kZSwgaW4gb3JkZXIuPC9wPgoJICAgICAqLwoJICAgIFJlc3VsdE1ldGFkYXRhVHlwZVtSZXN1bHRNZXRhZGF0YVR5cGVbIkJZVEVfU0VHTUVOVFMiXSA9IDJdID0gIkJZVEVfU0VHTUVOVFMiOwoJICAgIC8qKgoJICAgICAqIEVycm9yIGNvcnJlY3Rpb24gbGV2ZWwgdXNlZCwgaWYgYXBwbGljYWJsZS4gVGhlIHZhbHVlIHR5cGUgZGVwZW5kcyBvbiB0aGUKCSAgICAgKiBmb3JtYXQsIGJ1dCBpcyB0eXBpY2FsbHkgYSBTdHJpbmcuCgkgICAgICovCgkgICAgUmVzdWx0TWV0YWRhdGFUeXBlW1Jlc3VsdE1ldGFkYXRhVHlwZVsiRVJST1JfQ09SUkVDVElPTl9MRVZFTCJdID0gM10gPSAiRVJST1JfQ09SUkVDVElPTl9MRVZFTCI7CgkgICAgLyoqCgkgICAgICogRm9yIHNvbWUgcGVyaW9kaWNhbHMsIGluZGljYXRlcyB0aGUgaXNzdWUgbnVtYmVyIGFzIGFuIHtAbGluayBJbnRlZ2VyfS4KCSAgICAgKi8KCSAgICBSZXN1bHRNZXRhZGF0YVR5cGVbUmVzdWx0TWV0YWRhdGFUeXBlWyJJU1NVRV9OVU1CRVIiXSA9IDRdID0gIklTU1VFX05VTUJFUiI7CgkgICAgLyoqCgkgICAgICogRm9yIHNvbWUgcHJvZHVjdHMsIGluZGljYXRlcyB0aGUgc3VnZ2VzdGVkIHJldGFpbCBwcmljZSBpbiB0aGUgYmFyY29kZSBhcyBhCgkgICAgICogZm9ybWF0dGVkIHtAbGluayBTdHJpbmd9LgoJICAgICAqLwoJICAgIFJlc3VsdE1ldGFkYXRhVHlwZVtSZXN1bHRNZXRhZGF0YVR5cGVbIlNVR0dFU1RFRF9QUklDRSJdID0gNV0gPSAiU1VHR0VTVEVEX1BSSUNFIjsKCSAgICAvKioKCSAgICAgKiBGb3Igc29tZSBwcm9kdWN0cywgdGhlIHBvc3NpYmxlIGNvdW50cnkgb2YgbWFudWZhY3R1cmUgYXMgYSB7QGxpbmsgU3RyaW5nfSBkZW5vdGluZyB0aGUKCSAgICAgKiBJU08gY291bnRyeSBjb2RlLiBTb21lIG1hcCB0byBtdWx0aXBsZSBwb3NzaWJsZSBjb3VudHJpZXMsIGxpa2UgIlVTL0NBIi4KCSAgICAgKi8KCSAgICBSZXN1bHRNZXRhZGF0YVR5cGVbUmVzdWx0TWV0YWRhdGFUeXBlWyJQT1NTSUJMRV9DT1VOVFJZIl0gPSA2XSA9ICJQT1NTSUJMRV9DT1VOVFJZIjsKCSAgICAvKioKCSAgICAgKiBGb3Igc29tZSBwcm9kdWN0cywgdGhlIGV4dGVuc2lvbiB0ZXh0CgkgICAgICovCgkgICAgUmVzdWx0TWV0YWRhdGFUeXBlW1Jlc3VsdE1ldGFkYXRhVHlwZVsiVVBDX0VBTl9FWFRFTlNJT04iXSA9IDddID0gIlVQQ19FQU5fRVhURU5TSU9OIjsKCSAgICAvKioKCSAgICAgKiBQREY0MTctc3BlY2lmaWMgbWV0YWRhdGEKCSAgICAgKi8KCSAgICBSZXN1bHRNZXRhZGF0YVR5cGVbUmVzdWx0TWV0YWRhdGFUeXBlWyJQREY0MTdfRVhUUkFfTUVUQURBVEEiXSA9IDhdID0gIlBERjQxN19FWFRSQV9NRVRBREFUQSI7CgkgICAgLyoqCgkgICAgICogSWYgdGhlIGNvZGUgZm9ybWF0IHN1cHBvcnRzIHN0cnVjdHVyZWQgYXBwZW5kIGFuZCB0aGUgY3VycmVudCBzY2FubmVkIGNvZGUgaXMgcGFydCBvZiBvbmUgdGhlbiB0aGUKCSAgICAgKiBzZXF1ZW5jZSBudW1iZXIgaXMgZ2l2ZW4gd2l0aCBpdC4KCSAgICAgKi8KCSAgICBSZXN1bHRNZXRhZGF0YVR5cGVbUmVzdWx0TWV0YWRhdGFUeXBlWyJTVFJVQ1RVUkVEX0FQUEVORF9TRVFVRU5DRSJdID0gOV0gPSAiU1RSVUNUVVJFRF9BUFBFTkRfU0VRVUVOQ0UiOwoJICAgIC8qKgoJICAgICAqIElmIHRoZSBjb2RlIGZvcm1hdCBzdXBwb3J0cyBzdHJ1Y3R1cmVkIGFwcGVuZCBhbmQgdGhlIGN1cnJlbnQgc2Nhbm5lZCBjb2RlIGlzIHBhcnQgb2Ygb25lIHRoZW4gdGhlCgkgICAgICogcGFyaXR5IGlzIGdpdmVuIHdpdGggaXQuCgkgICAgICovCgkgICAgUmVzdWx0TWV0YWRhdGFUeXBlW1Jlc3VsdE1ldGFkYXRhVHlwZVsiU1RSVUNUVVJFRF9BUFBFTkRfUEFSSVRZIl0gPSAxMF0gPSAiU1RSVUNUVVJFRF9BUFBFTkRfUEFSSVRZIjsKCX0pKFJlc3VsdE1ldGFkYXRhVHlwZSB8fCAoUmVzdWx0TWV0YWRhdGFUeXBlID0ge30pKTsKCWV4cG9ydHMuZGVmYXVsdCA9IFJlc3VsdE1ldGFkYXRhVHlwZTsKCgl9KTsKCgl2YXIgRGVjb2RlclJlc3VsdF8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJLyoKCSAqIENvcHlyaWdodCAyMDA3IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgkvKm5hbWVzcGFjZSBjb20uZ29vZ2xlLnp4aW5nLmNvbW1vbiB7Ki8KCS8qaW1wb3J0IGphdmEudXRpbC5MaXN0OyovCgkvKioKCSAqIDxwPkVuY2Fwc3VsYXRlcyB0aGUgcmVzdWx0IG9mIGRlY29kaW5nIGEgbWF0cml4IG9mIGJpdHMuIFRoaXMgdHlwaWNhbGx5CgkgKiBhcHBsaWVzIHRvIDJEIGJhcmNvZGUgZm9ybWF0cy4gRm9yIG5vdyBpdCBjb250YWlucyB0aGUgcmF3IGJ5dGVzIG9idGFpbmVkLAoJICogYXMgd2VsbCBhcyBhIFN0cmluZyBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSBieXRlcywgaWYgYXBwbGljYWJsZS48L3A+CgkgKgoJICogQGF1dGhvciBTZWFuIE93ZW4KCSAqLwoJdmFyIERlY29kZXJSZXN1bHQgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgLy8gcHVibGljIGNvbnN0cnVjdG9yKHJhd0J5dGVzOiBVaW50OEFycmF5LAoJICAgIC8vICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IHN0cmluZywKCSAgICAvLyAgICAgICAgICAgICAgICAgICAgICBMaXN0PFVpbnQ4QXJyYXk+IGJ5dGVTZWdtZW50cywKCSAgICAvLyAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZWNMZXZlbCkgewoJICAgIC8vICAgdGhpcyhyYXdCeXRlcywgdGV4dCwgYnl0ZVNlZ21lbnRzLCBlY0xldmVsLCAtMSwgLTEpCgkgICAgLy8gfQoJICAgIGZ1bmN0aW9uIERlY29kZXJSZXN1bHQocmF3Qnl0ZXMsIHRleHQsIGJ5dGVTZWdtZW50cywgZWNMZXZlbCwgc3RydWN0dXJlZEFwcGVuZFNlcXVlbmNlTnVtYmVyLCBzdHJ1Y3R1cmVkQXBwZW5kUGFyaXR5KSB7CgkgICAgICAgIGlmIChzdHJ1Y3R1cmVkQXBwZW5kU2VxdWVuY2VOdW1iZXIgPT09IHZvaWQgMCkgeyBzdHJ1Y3R1cmVkQXBwZW5kU2VxdWVuY2VOdW1iZXIgPSAtMTsgfQoJICAgICAgICBpZiAoc3RydWN0dXJlZEFwcGVuZFBhcml0eSA9PT0gdm9pZCAwKSB7IHN0cnVjdHVyZWRBcHBlbmRQYXJpdHkgPSAtMTsgfQoJICAgICAgICB0aGlzLnJhd0J5dGVzID0gcmF3Qnl0ZXM7CgkgICAgICAgIHRoaXMudGV4dCA9IHRleHQ7CgkgICAgICAgIHRoaXMuYnl0ZVNlZ21lbnRzID0gYnl0ZVNlZ21lbnRzOwoJICAgICAgICB0aGlzLmVjTGV2ZWwgPSBlY0xldmVsOwoJICAgICAgICB0aGlzLnN0cnVjdHVyZWRBcHBlbmRTZXF1ZW5jZU51bWJlciA9IHN0cnVjdHVyZWRBcHBlbmRTZXF1ZW5jZU51bWJlcjsKCSAgICAgICAgdGhpcy5zdHJ1Y3R1cmVkQXBwZW5kUGFyaXR5ID0gc3RydWN0dXJlZEFwcGVuZFBhcml0eTsKCSAgICAgICAgdGhpcy5udW1CaXRzID0gKHJhd0J5dGVzID09PSB1bmRlZmluZWQgfHwgcmF3Qnl0ZXMgPT09IG51bGwpID8gMCA6IDggKiByYXdCeXRlcy5sZW5ndGg7CgkgICAgfQoJICAgIC8qKgoJICAgICAqIEByZXR1cm4gcmF3IGJ5dGVzIHJlcHJlc2VudGluZyB0aGUgcmVzdWx0LCBvciB7QGNvZGUgbnVsbH0gaWYgbm90IGFwcGxpY2FibGUKCSAgICAgKi8KCSAgICBEZWNvZGVyUmVzdWx0LnByb3RvdHlwZS5nZXRSYXdCeXRlcyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMucmF3Qnl0ZXM7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcmV0dXJuIGhvdyBtYW55IGJpdHMgb2Yge0BsaW5rICNnZXRSYXdCeXRlcygpfSBhcmUgdmFsaWQ7IHR5cGljYWxseSA4IHRpbWVzIGl0cyBsZW5ndGgKCSAgICAgKiBAc2luY2UgMy4zLjAKCSAgICAgKi8KCSAgICBEZWNvZGVyUmVzdWx0LnByb3RvdHlwZS5nZXROdW1CaXRzID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5udW1CaXRzOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQHBhcmFtIG51bUJpdHMgb3ZlcnJpZGVzIHRoZSBudW1iZXIgb2YgYml0cyB0aGF0IGFyZSB2YWxpZCBpbiB7QGxpbmsgI2dldFJhd0J5dGVzKCl9CgkgICAgICogQHNpbmNlIDMuMy4wCgkgICAgICovCgkgICAgRGVjb2RlclJlc3VsdC5wcm90b3R5cGUuc2V0TnVtQml0cyA9IGZ1bmN0aW9uIChudW1CaXRzIC8qaW50Ki8pIHsKCSAgICAgICAgdGhpcy5udW1CaXRzID0gbnVtQml0czsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEByZXR1cm4gdGV4dCByZXByZXNlbnRhdGlvbiBvZiB0aGUgcmVzdWx0CgkgICAgICovCgkgICAgRGVjb2RlclJlc3VsdC5wcm90b3R5cGUuZ2V0VGV4dCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMudGV4dDsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEByZXR1cm4gbGlzdCBvZiBieXRlIHNlZ21lbnRzIGluIHRoZSByZXN1bHQsIG9yIHtAY29kZSBudWxsfSBpZiBub3QgYXBwbGljYWJsZQoJICAgICAqLwoJICAgIERlY29kZXJSZXN1bHQucHJvdG90eXBlLmdldEJ5dGVTZWdtZW50cyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuYnl0ZVNlZ21lbnRzOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQHJldHVybiBuYW1lIG9mIGVycm9yIGNvcnJlY3Rpb24gbGV2ZWwgdXNlZCwgb3Ige0Bjb2RlIG51bGx9IGlmIG5vdCBhcHBsaWNhYmxlCgkgICAgICovCgkgICAgRGVjb2RlclJlc3VsdC5wcm90b3R5cGUuZ2V0RUNMZXZlbCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuZWNMZXZlbDsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEByZXR1cm4gbnVtYmVyIG9mIGVycm9ycyBjb3JyZWN0ZWQsIG9yIHtAY29kZSBudWxsfSBpZiBub3QgYXBwbGljYWJsZQoJICAgICAqLwoJICAgIERlY29kZXJSZXN1bHQucHJvdG90eXBlLmdldEVycm9yc0NvcnJlY3RlZCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JzQ29ycmVjdGVkOwoJICAgIH07CgkgICAgRGVjb2RlclJlc3VsdC5wcm90b3R5cGUuc2V0RXJyb3JzQ29ycmVjdGVkID0gZnVuY3Rpb24gKGVycm9yc0NvcnJlY3RlZCAvKkludGVnZXIqLykgewoJICAgICAgICB0aGlzLmVycm9yc0NvcnJlY3RlZCA9IGVycm9yc0NvcnJlY3RlZDsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEByZXR1cm4gbnVtYmVyIG9mIGVyYXN1cmVzIGNvcnJlY3RlZCwgb3Ige0Bjb2RlIG51bGx9IGlmIG5vdCBhcHBsaWNhYmxlCgkgICAgICovCgkgICAgRGVjb2RlclJlc3VsdC5wcm90b3R5cGUuZ2V0RXJhc3VyZXMgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmVyYXN1cmVzOwoJICAgIH07CgkgICAgRGVjb2RlclJlc3VsdC5wcm90b3R5cGUuc2V0RXJhc3VyZXMgPSBmdW5jdGlvbiAoZXJhc3VyZXMgLypJbnRlZ2VyKi8pIHsKCSAgICAgICAgdGhpcy5lcmFzdXJlcyA9IGVyYXN1cmVzOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQHJldHVybiBhcmJpdHJhcnkgYWRkaXRpb25hbCBtZXRhZGF0YQoJICAgICAqLwoJICAgIERlY29kZXJSZXN1bHQucHJvdG90eXBlLmdldE90aGVyID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5vdGhlcjsKCSAgICB9OwoJICAgIERlY29kZXJSZXN1bHQucHJvdG90eXBlLnNldE90aGVyID0gZnVuY3Rpb24gKG90aGVyKSB7CgkgICAgICAgIHRoaXMub3RoZXIgPSBvdGhlcjsKCSAgICB9OwoJICAgIERlY29kZXJSZXN1bHQucHJvdG90eXBlLmhhc1N0cnVjdHVyZWRBcHBlbmQgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLnN0cnVjdHVyZWRBcHBlbmRQYXJpdHkgPj0gMCAmJiB0aGlzLnN0cnVjdHVyZWRBcHBlbmRTZXF1ZW5jZU51bWJlciA+PSAwOwoJICAgIH07CgkgICAgRGVjb2RlclJlc3VsdC5wcm90b3R5cGUuZ2V0U3RydWN0dXJlZEFwcGVuZFBhcml0eSA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuc3RydWN0dXJlZEFwcGVuZFBhcml0eTsKCSAgICB9OwoJICAgIERlY29kZXJSZXN1bHQucHJvdG90eXBlLmdldFN0cnVjdHVyZWRBcHBlbmRTZXF1ZW5jZU51bWJlciA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuc3RydWN0dXJlZEFwcGVuZFNlcXVlbmNlTnVtYmVyOwoJICAgIH07CgkgICAgcmV0dXJuIERlY29kZXJSZXN1bHQ7Cgl9KCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gRGVjb2RlclJlc3VsdDsKCgl9KTsKCgl2YXIgQWJzdHJhY3RHZW5lcmljR0ZfMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCS8qCgkgKiBDb3B5cmlnaHQgMjAwNyBaWGluZyBhdXRob3JzCgkgKgoJICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSAqCgkgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJICoKCSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJICovCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoKCS8qKgoJICogPHA+VGhpcyBjbGFzcyBjb250YWlucyB1dGlsaXR5IG1ldGhvZHMgZm9yIHBlcmZvcm1pbmcgbWF0aGVtYXRpY2FsIG9wZXJhdGlvbnMgb3ZlcgoJICogdGhlIEdhbG9pcyBGaWVsZHMuIE9wZXJhdGlvbnMgdXNlIGEgZ2l2ZW4gcHJpbWl0aXZlIHBvbHlub21pYWwgaW4gY2FsY3VsYXRpb25zLjwvcD4KCSAqCgkgKiA8cD5UaHJvdWdob3V0IHRoaXMgcGFja2FnZSwgZWxlbWVudHMgb2YgdGhlIEdGIGFyZSByZXByZXNlbnRlZCBhcyBhbiB7QGNvZGUgaW50fQoJICogZm9yIGNvbnZlbmllbmNlIGFuZCBzcGVlZCAoYnV0IGF0IHRoZSBjb3N0IG9mIG1lbW9yeSkuCgkgKiA8L3A+CgkgKgoJICogQGF1dGhvciBTZWFuIE93ZW4KCSAqIEBhdXRob3IgRGF2aWQgT2xpdmllcgoJICovCgl2YXIgQWJzdHJhY3RHZW5lcmljR0YgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgZnVuY3Rpb24gQWJzdHJhY3RHZW5lcmljR0YoKSB7CgkgICAgfQoJICAgIC8qKgoJICAgICAqIEByZXR1cm4gMiB0byB0aGUgcG93ZXIgb2YgYSBpbiBHRihzaXplKQoJICAgICAqLwoJICAgIEFic3RyYWN0R2VuZXJpY0dGLnByb3RvdHlwZS5leHAgPSBmdW5jdGlvbiAoYSkgewoJICAgICAgICByZXR1cm4gdGhpcy5leHBUYWJsZVthXTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEByZXR1cm4gYmFzZSAyIGxvZyBvZiBhIGluIEdGKHNpemUpCgkgICAgICovCgkgICAgQWJzdHJhY3RHZW5lcmljR0YucHJvdG90eXBlLmxvZyA9IGZ1bmN0aW9uIChhIC8qaW50Ki8pIHsKCSAgICAgICAgaWYgKGEgPT09IDApIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHRoaXMubG9nVGFibGVbYV07CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBJbXBsZW1lbnRzIGJvdGggYWRkaXRpb24gYW5kIHN1YnRyYWN0aW9uIC0tIHRoZXkgYXJlIHRoZSBzYW1lIGluIEdGKHNpemUpLgoJICAgICAqCgkgICAgICogQHJldHVybiBzdW0vZGlmZmVyZW5jZSBvZiBhIGFuZCBiCgkgICAgICovCgkgICAgQWJzdHJhY3RHZW5lcmljR0YuYWRkT3JTdWJ0cmFjdCA9IGZ1bmN0aW9uIChhIC8qaW50Ki8sIGIgLyppbnQqLykgewoJICAgICAgICByZXR1cm4gYSBeIGI7CgkgICAgfTsKCSAgICByZXR1cm4gQWJzdHJhY3RHZW5lcmljR0Y7Cgl9KCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gQWJzdHJhY3RHZW5lcmljR0Y7CgoJfSk7CgoJdmFyIEdlbmVyaWNHRlBvbHlfMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCS8qCgkgKiBDb3B5cmlnaHQgMjAwNyBaWGluZyBhdXRob3JzCgkgKgoJICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSAqCgkgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJICoKCSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJICovCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJLypuYW1lc3BhY2UgY29tLmdvb2dsZS56eGluZy5jb21tb24ucmVlZHNvbG9tb24geyovCgoKCgkvKioKCSAqIDxwPlJlcHJlc2VudHMgYSBwb2x5bm9taWFsIHdob3NlIGNvZWZmaWNpZW50cyBhcmUgZWxlbWVudHMgb2YgYSBHRi4KCSAqIEluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIGFyZSBpbW11dGFibGUuPC9wPgoJICoKCSAqIDxwPk11Y2ggY3JlZGl0IGlzIGR1ZSB0byBXaWxsaWFtIFJ1Y2tsaWRnZSBzaW5jZSBwb3J0aW9ucyBvZiB0aGlzIGNvZGUgYXJlIGFuIGluZGlyZWN0CgkgKiBwb3J0IG9mIGhpcyBDKysgUmVlZC1Tb2xvbW9uIGltcGxlbWVudGF0aW9uLjwvcD4KCSAqCgkgKiBAYXV0aG9yIFNlYW4gT3dlbgoJICovCgl2YXIgR2VuZXJpY0dGUG9seSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICAvKioKCSAgICAgKiBAcGFyYW0gZmllbGQgdGhlIHtAbGluayBHZW5lcmljR0Z9IGluc3RhbmNlIHJlcHJlc2VudGluZyB0aGUgZmllbGQgdG8gdXNlCgkgICAgICogdG8gcGVyZm9ybSBjb21wdXRhdGlvbnMKCSAgICAgKiBAcGFyYW0gY29lZmZpY2llbnRzIGNvZWZmaWNpZW50cyBhcyBpbnRzIHJlcHJlc2VudGluZyBlbGVtZW50cyBvZiBHRihzaXplKSwgYXJyYW5nZWQKCSAgICAgKiBmcm9tIG1vc3Qgc2lnbmlmaWNhbnQgKGhpZ2hlc3QtcG93ZXIgdGVybSkgY29lZmZpY2llbnQgdG8gbGVhc3Qgc2lnbmlmaWNhbnQKCSAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiBhcmd1bWVudCBpcyBudWxsIG9yIGVtcHR5LAoJICAgICAqIG9yIGlmIGxlYWRpbmcgY29lZmZpY2llbnQgaXMgMCBhbmQgdGhpcyBpcyBub3QgYQoJICAgICAqIGNvbnN0YW50IHBvbHlub21pYWwgKHRoYXQgaXMsIGl0IGlzIG5vdCB0aGUgbW9ub21pYWwgIjAiKQoJICAgICAqLwoJICAgIGZ1bmN0aW9uIEdlbmVyaWNHRlBvbHkoZmllbGQsIGNvZWZmaWNpZW50cykgewoJICAgICAgICBpZiAoY29lZmZpY2llbnRzLmxlbmd0aCA9PT0gMCkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgfQoJICAgICAgICB0aGlzLmZpZWxkID0gZmllbGQ7CgkgICAgICAgIHZhciBjb2VmZmljaWVudHNMZW5ndGggPSBjb2VmZmljaWVudHMubGVuZ3RoOwoJICAgICAgICBpZiAoY29lZmZpY2llbnRzTGVuZ3RoID4gMSAmJiBjb2VmZmljaWVudHNbMF0gPT09IDApIHsKCSAgICAgICAgICAgIC8vIExlYWRpbmcgdGVybSBtdXN0IGJlIG5vbi16ZXJvIGZvciBhbnl0aGluZyBleGNlcHQgdGhlIGNvbnN0YW50IHBvbHlub21pYWwgIjAiCgkgICAgICAgICAgICB2YXIgZmlyc3ROb25aZXJvID0gMTsKCSAgICAgICAgICAgIHdoaWxlIChmaXJzdE5vblplcm8gPCBjb2VmZmljaWVudHNMZW5ndGggJiYgY29lZmZpY2llbnRzW2ZpcnN0Tm9uWmVyb10gPT09IDApIHsKCSAgICAgICAgICAgICAgICBmaXJzdE5vblplcm8rKzsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGlmIChmaXJzdE5vblplcm8gPT09IGNvZWZmaWNpZW50c0xlbmd0aCkgewoJICAgICAgICAgICAgICAgIHRoaXMuY29lZmZpY2llbnRzID0gSW50MzJBcnJheS5mcm9tKFswXSk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICB0aGlzLmNvZWZmaWNpZW50cyA9IG5ldyBJbnQzMkFycmF5KGNvZWZmaWNpZW50c0xlbmd0aCAtIGZpcnN0Tm9uWmVybyk7CgkgICAgICAgICAgICAgICAgU3lzdGVtXzEuZGVmYXVsdC5hcnJheWNvcHkoY29lZmZpY2llbnRzLCBmaXJzdE5vblplcm8sIHRoaXMuY29lZmZpY2llbnRzLCAwLCB0aGlzLmNvZWZmaWNpZW50cy5sZW5ndGgpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgdGhpcy5jb2VmZmljaWVudHMgPSBjb2VmZmljaWVudHM7CgkgICAgICAgIH0KCSAgICB9CgkgICAgR2VuZXJpY0dGUG9seS5wcm90b3R5cGUuZ2V0Q29lZmZpY2llbnRzID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5jb2VmZmljaWVudHM7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcmV0dXJuIGRlZ3JlZSBvZiB0aGlzIHBvbHlub21pYWwKCSAgICAgKi8KCSAgICBHZW5lcmljR0ZQb2x5LnByb3RvdHlwZS5nZXREZWdyZWUgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmNvZWZmaWNpZW50cy5sZW5ndGggLSAxOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQHJldHVybiB0cnVlIGlmZiB0aGlzIHBvbHlub21pYWwgaXMgdGhlIG1vbm9taWFsICIwIgoJICAgICAqLwoJICAgIEdlbmVyaWNHRlBvbHkucHJvdG90eXBlLmlzWmVybyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuY29lZmZpY2llbnRzWzBdID09PSAwOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQHJldHVybiBjb2VmZmljaWVudCBvZiB4XmRlZ3JlZSB0ZXJtIGluIHRoaXMgcG9seW5vbWlhbAoJICAgICAqLwoJICAgIEdlbmVyaWNHRlBvbHkucHJvdG90eXBlLmdldENvZWZmaWNpZW50ID0gZnVuY3Rpb24gKGRlZ3JlZSAvKmludCovKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmNvZWZmaWNpZW50c1t0aGlzLmNvZWZmaWNpZW50cy5sZW5ndGggLSAxIC0gZGVncmVlXTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEByZXR1cm4gZXZhbHVhdGlvbiBvZiB0aGlzIHBvbHlub21pYWwgYXQgYSBnaXZlbiBwb2ludAoJICAgICAqLwoJICAgIEdlbmVyaWNHRlBvbHkucHJvdG90eXBlLmV2YWx1YXRlQXQgPSBmdW5jdGlvbiAoYSAvKmludCovKSB7CgkgICAgICAgIGlmIChhID09PSAwKSB7CgkgICAgICAgICAgICAvLyBKdXN0IHJldHVybiB0aGUgeF4wIGNvZWZmaWNpZW50CgkgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRDb2VmZmljaWVudCgwKTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgY29lZmZpY2llbnRzID0gdGhpcy5jb2VmZmljaWVudHM7CgkgICAgICAgIHZhciByZXN1bHQ7CgkgICAgICAgIGlmIChhID09PSAxKSB7CgkgICAgICAgICAgICAvLyBKdXN0IHRoZSBzdW0gb2YgdGhlIGNvZWZmaWNpZW50cwoJICAgICAgICAgICAgcmVzdWx0ID0gMDsKCSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGhfMSA9IGNvZWZmaWNpZW50cy5sZW5ndGg7IGkgIT09IGxlbmd0aF8xOyBpKyspIHsKCSAgICAgICAgICAgICAgICB2YXIgY29lZmZpY2llbnQgPSBjb2VmZmljaWVudHNbaV07CgkgICAgICAgICAgICAgICAgcmVzdWx0ID0gQWJzdHJhY3RHZW5lcmljR0ZfMS5kZWZhdWx0LmFkZE9yU3VidHJhY3QocmVzdWx0LCBjb2VmZmljaWVudCk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwoJICAgICAgICB9CgkgICAgICAgIHJlc3VsdCA9IGNvZWZmaWNpZW50c1swXTsKCSAgICAgICAgdmFyIHNpemUgPSBjb2VmZmljaWVudHMubGVuZ3RoOwoJICAgICAgICB2YXIgZmllbGQgPSB0aGlzLmZpZWxkOwoJICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IHNpemU7IGkrKykgewoJICAgICAgICAgICAgcmVzdWx0ID0gQWJzdHJhY3RHZW5lcmljR0ZfMS5kZWZhdWx0LmFkZE9yU3VidHJhY3QoZmllbGQubXVsdGlwbHkoYSwgcmVzdWx0KSwgY29lZmZpY2llbnRzW2ldKTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gcmVzdWx0OwoJICAgIH07CgkgICAgR2VuZXJpY0dGUG9seS5wcm90b3R5cGUuYWRkT3JTdWJ0cmFjdCA9IGZ1bmN0aW9uIChvdGhlcikgewoJICAgICAgICBpZiAoIXRoaXMuZmllbGQuZXF1YWxzKG90aGVyLmZpZWxkKSkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoJ0dlbmVyaWNHRlBvbHlzIGRvIG5vdCBoYXZlIHNhbWUgR2VuZXJpY0dGIGZpZWxkJyk7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKHRoaXMuaXNaZXJvKCkpIHsKCSAgICAgICAgICAgIHJldHVybiBvdGhlcjsKCSAgICAgICAgfQoJICAgICAgICBpZiAob3RoZXIuaXNaZXJvKCkpIHsKCSAgICAgICAgICAgIHJldHVybiB0aGlzOwoJICAgICAgICB9CgkgICAgICAgIHZhciBzbWFsbGVyQ29lZmZpY2llbnRzID0gdGhpcy5jb2VmZmljaWVudHM7CgkgICAgICAgIHZhciBsYXJnZXJDb2VmZmljaWVudHMgPSBvdGhlci5jb2VmZmljaWVudHM7CgkgICAgICAgIGlmIChzbWFsbGVyQ29lZmZpY2llbnRzLmxlbmd0aCA+IGxhcmdlckNvZWZmaWNpZW50cy5sZW5ndGgpIHsKCSAgICAgICAgICAgIHZhciB0ZW1wID0gc21hbGxlckNvZWZmaWNpZW50czsKCSAgICAgICAgICAgIHNtYWxsZXJDb2VmZmljaWVudHMgPSBsYXJnZXJDb2VmZmljaWVudHM7CgkgICAgICAgICAgICBsYXJnZXJDb2VmZmljaWVudHMgPSB0ZW1wOwoJICAgICAgICB9CgkgICAgICAgIHZhciBzdW1EaWZmID0gbmV3IEludDMyQXJyYXkobGFyZ2VyQ29lZmZpY2llbnRzLmxlbmd0aCk7CgkgICAgICAgIHZhciBsZW5ndGhEaWZmID0gbGFyZ2VyQ29lZmZpY2llbnRzLmxlbmd0aCAtIHNtYWxsZXJDb2VmZmljaWVudHMubGVuZ3RoOwoJICAgICAgICAvLyBDb3B5IGhpZ2gtb3JkZXIgdGVybXMgb25seSBmb3VuZCBpbiBoaWdoZXItZGVncmVlIHBvbHlub21pYWwncyBjb2VmZmljaWVudHMKCSAgICAgICAgU3lzdGVtXzEuZGVmYXVsdC5hcnJheWNvcHkobGFyZ2VyQ29lZmZpY2llbnRzLCAwLCBzdW1EaWZmLCAwLCBsZW5ndGhEaWZmKTsKCSAgICAgICAgZm9yICh2YXIgaSA9IGxlbmd0aERpZmY7IGkgPCBsYXJnZXJDb2VmZmljaWVudHMubGVuZ3RoOyBpKyspIHsKCSAgICAgICAgICAgIHN1bURpZmZbaV0gPSBBYnN0cmFjdEdlbmVyaWNHRl8xLmRlZmF1bHQuYWRkT3JTdWJ0cmFjdChzbWFsbGVyQ29lZmZpY2llbnRzW2kgLSBsZW5ndGhEaWZmXSwgbGFyZ2VyQ29lZmZpY2llbnRzW2ldKTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gbmV3IEdlbmVyaWNHRlBvbHkodGhpcy5maWVsZCwgc3VtRGlmZik7CgkgICAgfTsKCSAgICBHZW5lcmljR0ZQb2x5LnByb3RvdHlwZS5tdWx0aXBseSA9IGZ1bmN0aW9uIChvdGhlcikgewoJICAgICAgICBpZiAoIXRoaXMuZmllbGQuZXF1YWxzKG90aGVyLmZpZWxkKSkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoJ0dlbmVyaWNHRlBvbHlzIGRvIG5vdCBoYXZlIHNhbWUgR2VuZXJpY0dGIGZpZWxkJyk7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKHRoaXMuaXNaZXJvKCkgfHwgb3RoZXIuaXNaZXJvKCkpIHsKCSAgICAgICAgICAgIHJldHVybiB0aGlzLmZpZWxkLmdldFplcm8oKTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgYUNvZWZmaWNpZW50cyA9IHRoaXMuY29lZmZpY2llbnRzOwoJICAgICAgICB2YXIgYUxlbmd0aCA9IGFDb2VmZmljaWVudHMubGVuZ3RoOwoJICAgICAgICB2YXIgYkNvZWZmaWNpZW50cyA9IG90aGVyLmNvZWZmaWNpZW50czsKCSAgICAgICAgdmFyIGJMZW5ndGggPSBiQ29lZmZpY2llbnRzLmxlbmd0aDsKCSAgICAgICAgdmFyIHByb2R1Y3QgPSBuZXcgSW50MzJBcnJheShhTGVuZ3RoICsgYkxlbmd0aCAtIDEpOwoJICAgICAgICB2YXIgZmllbGQgPSB0aGlzLmZpZWxkOwoJICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFMZW5ndGg7IGkrKykgewoJICAgICAgICAgICAgdmFyIGFDb2VmZiA9IGFDb2VmZmljaWVudHNbaV07CgkgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGJMZW5ndGg7IGorKykgewoJICAgICAgICAgICAgICAgIHByb2R1Y3RbaSArIGpdID0gQWJzdHJhY3RHZW5lcmljR0ZfMS5kZWZhdWx0LmFkZE9yU3VidHJhY3QocHJvZHVjdFtpICsgal0sIGZpZWxkLm11bHRpcGx5KGFDb2VmZiwgYkNvZWZmaWNpZW50c1tqXSkpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBuZXcgR2VuZXJpY0dGUG9seShmaWVsZCwgcHJvZHVjdCk7CgkgICAgfTsKCSAgICBHZW5lcmljR0ZQb2x5LnByb3RvdHlwZS5tdWx0aXBseVNjYWxhciA9IGZ1bmN0aW9uIChzY2FsYXIgLyppbnQqLykgewoJICAgICAgICBpZiAoc2NhbGFyID09PSAwKSB7CgkgICAgICAgICAgICByZXR1cm4gdGhpcy5maWVsZC5nZXRaZXJvKCk7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKHNjYWxhciA9PT0gMSkgewoJICAgICAgICAgICAgcmV0dXJuIHRoaXM7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIHNpemUgPSB0aGlzLmNvZWZmaWNpZW50cy5sZW5ndGg7CgkgICAgICAgIHZhciBmaWVsZCA9IHRoaXMuZmllbGQ7CgkgICAgICAgIHZhciBwcm9kdWN0ID0gbmV3IEludDMyQXJyYXkoc2l6ZSk7CgkgICAgICAgIHZhciBjb2VmZmljaWVudHMgPSB0aGlzLmNvZWZmaWNpZW50czsKCSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKCSAgICAgICAgICAgIHByb2R1Y3RbaV0gPSBmaWVsZC5tdWx0aXBseShjb2VmZmljaWVudHNbaV0sIHNjYWxhcik7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIG5ldyBHZW5lcmljR0ZQb2x5KGZpZWxkLCBwcm9kdWN0KTsKCSAgICB9OwoJICAgIEdlbmVyaWNHRlBvbHkucHJvdG90eXBlLm11bHRpcGx5QnlNb25vbWlhbCA9IGZ1bmN0aW9uIChkZWdyZWUgLyppbnQqLywgY29lZmZpY2llbnQgLyppbnQqLykgewoJICAgICAgICBpZiAoZGVncmVlIDwgMCkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgfQoJICAgICAgICBpZiAoY29lZmZpY2llbnQgPT09IDApIHsKCSAgICAgICAgICAgIHJldHVybiB0aGlzLmZpZWxkLmdldFplcm8oKTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgY29lZmZpY2llbnRzID0gdGhpcy5jb2VmZmljaWVudHM7CgkgICAgICAgIHZhciBzaXplID0gY29lZmZpY2llbnRzLmxlbmd0aDsKCSAgICAgICAgdmFyIHByb2R1Y3QgPSBuZXcgSW50MzJBcnJheShzaXplICsgZGVncmVlKTsKCSAgICAgICAgdmFyIGZpZWxkID0gdGhpcy5maWVsZDsKCSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKCSAgICAgICAgICAgIHByb2R1Y3RbaV0gPSBmaWVsZC5tdWx0aXBseShjb2VmZmljaWVudHNbaV0sIGNvZWZmaWNpZW50KTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gbmV3IEdlbmVyaWNHRlBvbHkoZmllbGQsIHByb2R1Y3QpOwoJICAgIH07CgkgICAgR2VuZXJpY0dGUG9seS5wcm90b3R5cGUuZGl2aWRlID0gZnVuY3Rpb24gKG90aGVyKSB7CgkgICAgICAgIGlmICghdGhpcy5maWVsZC5lcXVhbHMob3RoZXIuZmllbGQpKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgnR2VuZXJpY0dGUG9seXMgZG8gbm90IGhhdmUgc2FtZSBHZW5lcmljR0YgZmllbGQnKTsKCSAgICAgICAgfQoJICAgICAgICBpZiAob3RoZXIuaXNaZXJvKCkpIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCdEaXZpZGUgYnkgMCcpOwoJICAgICAgICB9CgkgICAgICAgIHZhciBmaWVsZCA9IHRoaXMuZmllbGQ7CgkgICAgICAgIHZhciBxdW90aWVudCA9IGZpZWxkLmdldFplcm8oKTsKCSAgICAgICAgdmFyIHJlbWFpbmRlciA9IHRoaXM7CgkgICAgICAgIHZhciBkZW5vbWluYXRvckxlYWRpbmdUZXJtID0gb3RoZXIuZ2V0Q29lZmZpY2llbnQob3RoZXIuZ2V0RGVncmVlKCkpOwoJICAgICAgICB2YXIgaW52ZXJzZURlbm9taW5hdG9yTGVhZGluZ1Rlcm0gPSBmaWVsZC5pbnZlcnNlKGRlbm9taW5hdG9yTGVhZGluZ1Rlcm0pOwoJICAgICAgICB3aGlsZSAocmVtYWluZGVyLmdldERlZ3JlZSgpID49IG90aGVyLmdldERlZ3JlZSgpICYmICFyZW1haW5kZXIuaXNaZXJvKCkpIHsKCSAgICAgICAgICAgIHZhciBkZWdyZWVEaWZmZXJlbmNlID0gcmVtYWluZGVyLmdldERlZ3JlZSgpIC0gb3RoZXIuZ2V0RGVncmVlKCk7CgkgICAgICAgICAgICB2YXIgc2NhbGUgPSBmaWVsZC5tdWx0aXBseShyZW1haW5kZXIuZ2V0Q29lZmZpY2llbnQocmVtYWluZGVyLmdldERlZ3JlZSgpKSwgaW52ZXJzZURlbm9taW5hdG9yTGVhZGluZ1Rlcm0pOwoJICAgICAgICAgICAgdmFyIHRlcm0gPSBvdGhlci5tdWx0aXBseUJ5TW9ub21pYWwoZGVncmVlRGlmZmVyZW5jZSwgc2NhbGUpOwoJICAgICAgICAgICAgdmFyIGl0ZXJhdGlvblF1b3RpZW50ID0gZmllbGQuYnVpbGRNb25vbWlhbChkZWdyZWVEaWZmZXJlbmNlLCBzY2FsZSk7CgkgICAgICAgICAgICBxdW90aWVudCA9IHF1b3RpZW50LmFkZE9yU3VidHJhY3QoaXRlcmF0aW9uUXVvdGllbnQpOwoJICAgICAgICAgICAgcmVtYWluZGVyID0gcmVtYWluZGVyLmFkZE9yU3VidHJhY3QodGVybSk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIFtxdW90aWVudCwgcmVtYWluZGVyXTsKCSAgICB9OwoJICAgIC8qQE92ZXJyaWRlKi8KCSAgICBHZW5lcmljR0ZQb2x5LnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgdmFyIHJlc3VsdCA9ICcnOwoJICAgICAgICBmb3IgKHZhciBkZWdyZWUgPSB0aGlzLmdldERlZ3JlZSgpOyBkZWdyZWUgPj0gMDsgZGVncmVlLS0pIHsKCSAgICAgICAgICAgIHZhciBjb2VmZmljaWVudCA9IHRoaXMuZ2V0Q29lZmZpY2llbnQoZGVncmVlKTsKCSAgICAgICAgICAgIGlmIChjb2VmZmljaWVudCAhPT0gMCkgewoJICAgICAgICAgICAgICAgIGlmIChjb2VmZmljaWVudCA8IDApIHsKCSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICcgLSAnOwoJICAgICAgICAgICAgICAgICAgICBjb2VmZmljaWVudCA9IC1jb2VmZmljaWVudDsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoID4gMCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICcgKyAnOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGlmIChkZWdyZWUgPT09IDAgfHwgY29lZmZpY2llbnQgIT09IDEpIHsKCSAgICAgICAgICAgICAgICAgICAgdmFyIGFscGhhUG93ZXIgPSB0aGlzLmZpZWxkLmxvZyhjb2VmZmljaWVudCk7CgkgICAgICAgICAgICAgICAgICAgIGlmIChhbHBoYVBvd2VyID09PSAwKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJzEnOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGFscGhhUG93ZXIgPT09IDEpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnYSc7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ2FeJzsKCSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBhbHBoYVBvd2VyOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGlmIChkZWdyZWUgIT09IDApIHsKCSAgICAgICAgICAgICAgICAgICAgaWYgKGRlZ3JlZSA9PT0gMSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICd4JzsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAneF4nOwoJICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IGRlZ3JlZTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gcmVzdWx0OwoJICAgIH07CgkgICAgcmV0dXJuIEdlbmVyaWNHRlBvbHk7Cgl9KCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gR2VuZXJpY0dGUG9seTsKCgl9KTsKCgl2YXIgQXJpdGhtZXRpY0V4Y2VwdGlvbl8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJdmFyIF9fZXh0ZW5kcyA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7CgkgICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8CgkgICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8CgkgICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTsKCSAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgfTsKCSAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9CgkgICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTsKCSAgICB9OwoJfSkoKTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgoJLyoqCgkgKiBDdXN0b20gRXJyb3IgY2xhc3Mgb2YgdHlwZSBFeGNlcHRpb24uCgkgKi8KCXZhciBBcml0aG1ldGljRXhjZXB0aW9uID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikgewoJICAgIF9fZXh0ZW5kcyhBcml0aG1ldGljRXhjZXB0aW9uLCBfc3VwZXIpOwoJICAgIGZ1bmN0aW9uIEFyaXRobWV0aWNFeGNlcHRpb24oKSB7CgkgICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpczsKCSAgICB9CgkgICAgQXJpdGhtZXRpY0V4Y2VwdGlvbi5raW5kID0gJ0FyaXRobWV0aWNFeGNlcHRpb24nOwoJICAgIHJldHVybiBBcml0aG1ldGljRXhjZXB0aW9uOwoJfShFeGNlcHRpb25fMS5kZWZhdWx0KSk7CglleHBvcnRzLmRlZmF1bHQgPSBBcml0aG1ldGljRXhjZXB0aW9uOwoKCX0pOwoKCXZhciBHZW5lcmljR0ZfMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCS8qCgkgKiBDb3B5cmlnaHQgMjAwNyBaWGluZyBhdXRob3JzCgkgKgoJICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSAqCgkgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJICoKCSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJICovCgl2YXIgX19leHRlbmRzID0gKGNvbW1vbmpzR2xvYmFsICYmIGNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHsKCSAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwKCSAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHwKCSAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9OwoJICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICB9OwoJICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH0KCSAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpOwoJICAgIH07Cgl9KSgpOwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCS8qbmFtZXNwYWNlIGNvbS5nb29nbGUuenhpbmcuY29tbW9uLnJlZWRzb2xvbW9uIHsqLwoKCgoKCgkvKioKCSAqIDxwPlRoaXMgY2xhc3MgY29udGFpbnMgdXRpbGl0eSBtZXRob2RzIGZvciBwZXJmb3JtaW5nIG1hdGhlbWF0aWNhbCBvcGVyYXRpb25zIG92ZXIKCSAqIHRoZSBHYWxvaXMgRmllbGRzLiBPcGVyYXRpb25zIHVzZSBhIGdpdmVuIHByaW1pdGl2ZSBwb2x5bm9taWFsIGluIGNhbGN1bGF0aW9ucy48L3A+CgkgKgoJICogPHA+VGhyb3VnaG91dCB0aGlzIHBhY2thZ2UsIGVsZW1lbnRzIG9mIHRoZSBHRiBhcmUgcmVwcmVzZW50ZWQgYXMgYW4ge0Bjb2RlIGludH0KCSAqIGZvciBjb252ZW5pZW5jZSBhbmQgc3BlZWQgKGJ1dCBhdCB0aGUgY29zdCBvZiBtZW1vcnkpLgoJICogPC9wPgoJICoKCSAqIEBhdXRob3IgU2VhbiBPd2VuCgkgKiBAYXV0aG9yIERhdmlkIE9saXZpZXIKCSAqLwoJdmFyIEdlbmVyaWNHRiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHsKCSAgICBfX2V4dGVuZHMoR2VuZXJpY0dGLCBfc3VwZXIpOwoJICAgIC8qKgoJICAgICAqIENyZWF0ZSBhIHJlcHJlc2VudGF0aW9uIG9mIEdGKHNpemUpIHVzaW5nIHRoZSBnaXZlbiBwcmltaXRpdmUgcG9seW5vbWlhbC4KCSAgICAgKgoJICAgICAqIEBwYXJhbSBwcmltaXRpdmUgaXJyZWR1Y2libGUgcG9seW5vbWlhbCB3aG9zZSBjb2VmZmljaWVudHMgYXJlIHJlcHJlc2VudGVkIGJ5CgkgICAgICogIHRoZSBiaXRzIG9mIGFuIGludCwgd2hlcmUgdGhlIGxlYXN0LXNpZ25pZmljYW50IGJpdCByZXByZXNlbnRzIHRoZSBjb25zdGFudAoJICAgICAqICBjb2VmZmljaWVudAoJICAgICAqIEBwYXJhbSBzaXplIHRoZSBzaXplIG9mIHRoZSBmaWVsZAoJICAgICAqIEBwYXJhbSBiIHRoZSBmYWN0b3IgYiBpbiB0aGUgZ2VuZXJhdG9yIHBvbHlub21pYWwgY2FuIGJlIDAtIG9yIDEtYmFzZWQKCSAgICAgKiAgKGcoeCkgPSAoeCthXmIpKHgrYV4oYisxKSkuLi4oeCthXihiKzJ0LTEpKSkuCgkgICAgICogIEluIG1vc3QgY2FzZXMgaXQgc2hvdWxkIGJlIDEsIGJ1dCBmb3IgUVIgY29kZSBpdCBpcyAwLgoJICAgICAqLwoJICAgIGZ1bmN0aW9uIEdlbmVyaWNHRihwcmltaXRpdmUgLyppbnQqLywgc2l6ZSAvKmludCovLCBnZW5lcmF0b3JCYXNlIC8qaW50Ki8pIHsKCSAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpczsKCSAgICAgICAgX3RoaXMucHJpbWl0aXZlID0gcHJpbWl0aXZlOwoJICAgICAgICBfdGhpcy5zaXplID0gc2l6ZTsKCSAgICAgICAgX3RoaXMuZ2VuZXJhdG9yQmFzZSA9IGdlbmVyYXRvckJhc2U7CgkgICAgICAgIHZhciBleHBUYWJsZSA9IG5ldyBJbnQzMkFycmF5KHNpemUpOwoJICAgICAgICB2YXIgeCA9IDE7CgkgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CgkgICAgICAgICAgICBleHBUYWJsZVtpXSA9IHg7CgkgICAgICAgICAgICB4ICo9IDI7IC8vIHdlJ3JlIGFzc3VtaW5nIHRoZSBnZW5lcmF0b3IgYWxwaGEgaXMgMgoJICAgICAgICAgICAgaWYgKHggPj0gc2l6ZSkgewoJICAgICAgICAgICAgICAgIHggXj0gcHJpbWl0aXZlOwoJICAgICAgICAgICAgICAgIHggJj0gc2l6ZSAtIDE7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgX3RoaXMuZXhwVGFibGUgPSBleHBUYWJsZTsKCSAgICAgICAgdmFyIGxvZ1RhYmxlID0gbmV3IEludDMyQXJyYXkoc2l6ZSk7CgkgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZSAtIDE7IGkrKykgewoJICAgICAgICAgICAgbG9nVGFibGVbZXhwVGFibGVbaV1dID0gaTsKCSAgICAgICAgfQoJICAgICAgICBfdGhpcy5sb2dUYWJsZSA9IGxvZ1RhYmxlOwoJICAgICAgICAvLyBsb2dUYWJsZVswXSA9PSAwIGJ1dCB0aGlzIHNob3VsZCBuZXZlciBiZSB1c2VkCgkgICAgICAgIF90aGlzLnplcm8gPSBuZXcgR2VuZXJpY0dGUG9seV8xLmRlZmF1bHQoX3RoaXMsIEludDMyQXJyYXkuZnJvbShbMF0pKTsKCSAgICAgICAgX3RoaXMub25lID0gbmV3IEdlbmVyaWNHRlBvbHlfMS5kZWZhdWx0KF90aGlzLCBJbnQzMkFycmF5LmZyb20oWzFdKSk7CgkgICAgICAgIHJldHVybiBfdGhpczsKCSAgICB9CgkgICAgR2VuZXJpY0dGLnByb3RvdHlwZS5nZXRaZXJvID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy56ZXJvOwoJICAgIH07CgkgICAgR2VuZXJpY0dGLnByb3RvdHlwZS5nZXRPbmUgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLm9uZTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEByZXR1cm4gdGhlIG1vbm9taWFsIHJlcHJlc2VudGluZyBjb2VmZmljaWVudCAqIHheZGVncmVlCgkgICAgICovCgkgICAgR2VuZXJpY0dGLnByb3RvdHlwZS5idWlsZE1vbm9taWFsID0gZnVuY3Rpb24gKGRlZ3JlZSAvKmludCovLCBjb2VmZmljaWVudCAvKmludCovKSB7CgkgICAgICAgIGlmIChkZWdyZWUgPCAwKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgICAgIGlmIChjb2VmZmljaWVudCA9PT0gMCkgewoJICAgICAgICAgICAgcmV0dXJuIHRoaXMuemVybzsKCSAgICAgICAgfQoJICAgICAgICB2YXIgY29lZmZpY2llbnRzID0gbmV3IEludDMyQXJyYXkoZGVncmVlICsgMSk7CgkgICAgICAgIGNvZWZmaWNpZW50c1swXSA9IGNvZWZmaWNpZW50OwoJICAgICAgICByZXR1cm4gbmV3IEdlbmVyaWNHRlBvbHlfMS5kZWZhdWx0KHRoaXMsIGNvZWZmaWNpZW50cyk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcmV0dXJuIG11bHRpcGxpY2F0aXZlIGludmVyc2Ugb2YgYQoJICAgICAqLwoJICAgIEdlbmVyaWNHRi5wcm90b3R5cGUuaW52ZXJzZSA9IGZ1bmN0aW9uIChhIC8qaW50Ki8pIHsKCSAgICAgICAgaWYgKGEgPT09IDApIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBBcml0aG1ldGljRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiB0aGlzLmV4cFRhYmxlW3RoaXMuc2l6ZSAtIHRoaXMubG9nVGFibGVbYV0gLSAxXTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEByZXR1cm4gcHJvZHVjdCBvZiBhIGFuZCBiIGluIEdGKHNpemUpCgkgICAgICovCgkgICAgR2VuZXJpY0dGLnByb3RvdHlwZS5tdWx0aXBseSA9IGZ1bmN0aW9uIChhIC8qaW50Ki8sIGIgLyppbnQqLykgewoJICAgICAgICBpZiAoYSA9PT0gMCB8fCBiID09PSAwKSB7CgkgICAgICAgICAgICByZXR1cm4gMDsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gdGhpcy5leHBUYWJsZVsodGhpcy5sb2dUYWJsZVthXSArIHRoaXMubG9nVGFibGVbYl0pICUgKHRoaXMuc2l6ZSAtIDEpXTsKCSAgICB9OwoJICAgIEdlbmVyaWNHRi5wcm90b3R5cGUuZ2V0U2l6ZSA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuc2l6ZTsKCSAgICB9OwoJICAgIEdlbmVyaWNHRi5wcm90b3R5cGUuZ2V0R2VuZXJhdG9yQmFzZSA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuZ2VuZXJhdG9yQmFzZTsKCSAgICB9OwoJICAgIC8qQE92ZXJyaWRlKi8KCSAgICBHZW5lcmljR0YucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gKCdHRigweCcgKyBJbnRlZ2VyXzEuZGVmYXVsdC50b0hleFN0cmluZyh0aGlzLnByaW1pdGl2ZSkgKyAnLCcgKyB0aGlzLnNpemUgKyAnKScpOwoJICAgIH07CgkgICAgR2VuZXJpY0dGLnByb3RvdHlwZS5lcXVhbHMgPSBmdW5jdGlvbiAobykgewoJICAgICAgICByZXR1cm4gbyA9PT0gdGhpczsKCSAgICB9OwoJICAgIEdlbmVyaWNHRi5BWlRFQ19EQVRBXzEyID0gbmV3IEdlbmVyaWNHRigweDEwNjksIDQwOTYsIDEpOyAvLyB4XjEyICsgeF42ICsgeF41ICsgeF4zICsgMQoJICAgIEdlbmVyaWNHRi5BWlRFQ19EQVRBXzEwID0gbmV3IEdlbmVyaWNHRigweDQwOSwgMTAyNCwgMSk7IC8vIHheMTAgKyB4XjMgKyAxCgkgICAgR2VuZXJpY0dGLkFaVEVDX0RBVEFfNiA9IG5ldyBHZW5lcmljR0YoMHg0MywgNjQsIDEpOyAvLyB4XjYgKyB4ICsgMQoJICAgIEdlbmVyaWNHRi5BWlRFQ19QQVJBTSA9IG5ldyBHZW5lcmljR0YoMHgxMywgMTYsIDEpOyAvLyB4XjQgKyB4ICsgMQoJICAgIEdlbmVyaWNHRi5RUl9DT0RFX0ZJRUxEXzI1NiA9IG5ldyBHZW5lcmljR0YoMHgwMTFkLCAyNTYsIDApOyAvLyB4XjggKyB4XjQgKyB4XjMgKyB4XjIgKyAxCgkgICAgR2VuZXJpY0dGLkRBVEFfTUFUUklYX0ZJRUxEXzI1NiA9IG5ldyBHZW5lcmljR0YoMHgwMTJkLCAyNTYsIDEpOyAvLyB4XjggKyB4XjUgKyB4XjMgKyB4XjIgKyAxCgkgICAgR2VuZXJpY0dGLkFaVEVDX0RBVEFfOCA9IEdlbmVyaWNHRi5EQVRBX01BVFJJWF9GSUVMRF8yNTY7CgkgICAgR2VuZXJpY0dGLk1BWElDT0RFX0ZJRUxEXzY0ID0gR2VuZXJpY0dGLkFaVEVDX0RBVEFfNjsKCSAgICByZXR1cm4gR2VuZXJpY0dGOwoJfShBYnN0cmFjdEdlbmVyaWNHRl8xLmRlZmF1bHQpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IEdlbmVyaWNHRjsKCgl9KTsKCgl2YXIgUmVlZFNvbG9tb25FeGNlcHRpb25fMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCXZhciBfX2V4dGVuZHMgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkgewoJICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fAoJICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fAoJICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07CgkgICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgIH07CgkgICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfQoJICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7CgkgICAgfTsKCX0pKCk7CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoKCS8qKgoJICogQ3VzdG9tIEVycm9yIGNsYXNzIG9mIHR5cGUgRXhjZXB0aW9uLgoJICovCgl2YXIgUmVlZFNvbG9tb25FeGNlcHRpb24gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7CgkgICAgX19leHRlbmRzKFJlZWRTb2xvbW9uRXhjZXB0aW9uLCBfc3VwZXIpOwoJICAgIGZ1bmN0aW9uIFJlZWRTb2xvbW9uRXhjZXB0aW9uKCkgewoJICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7CgkgICAgfQoJICAgIFJlZWRTb2xvbW9uRXhjZXB0aW9uLmtpbmQgPSAnUmVlZFNvbG9tb25FeGNlcHRpb24nOwoJICAgIHJldHVybiBSZWVkU29sb21vbkV4Y2VwdGlvbjsKCX0oRXhjZXB0aW9uXzEuZGVmYXVsdCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gUmVlZFNvbG9tb25FeGNlcHRpb247CgoJfSk7CgoJdmFyIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbl8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJdmFyIF9fZXh0ZW5kcyA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7CgkgICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8CgkgICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8CgkgICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTsKCSAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgfTsKCSAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9CgkgICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTsKCSAgICB9OwoJfSkoKTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgoJLyoqCgkgKiBDdXN0b20gRXJyb3IgY2xhc3Mgb2YgdHlwZSBFeGNlcHRpb24uCgkgKi8KCXZhciBJbGxlZ2FsU3RhdGVFeGNlcHRpb24gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7CgkgICAgX19leHRlbmRzKElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiwgX3N1cGVyKTsKCSAgICBmdW5jdGlvbiBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oKSB7CgkgICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpczsKCSAgICB9CgkgICAgSWxsZWdhbFN0YXRlRXhjZXB0aW9uLmtpbmQgPSAnSWxsZWdhbFN0YXRlRXhjZXB0aW9uJzsKCSAgICByZXR1cm4gSWxsZWdhbFN0YXRlRXhjZXB0aW9uOwoJfShFeGNlcHRpb25fMS5kZWZhdWx0KSk7CglleHBvcnRzLmRlZmF1bHQgPSBJbGxlZ2FsU3RhdGVFeGNlcHRpb247CgoJfSk7CgoJdmFyIFJlZWRTb2xvbW9uRGVjb2Rlcl8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJLyoKCSAqIENvcHlyaWdodCAyMDA3IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgkvKm5hbWVzcGFjZSBjb20uZ29vZ2xlLnp4aW5nLmNvbW1vbi5yZWVkc29sb21vbiB7Ki8KCgoKCgkvKioKCSAqIDxwPkltcGxlbWVudHMgUmVlZC1Tb2xvbW9uIGRlY29kaW5nLCBhcyB0aGUgbmFtZSBpbXBsaWVzLjwvcD4KCSAqCgkgKiA8cD5UaGUgYWxnb3JpdGhtIHdpbGwgbm90IGJlIGV4cGxhaW5lZCBoZXJlLCBidXQgdGhlIGZvbGxvd2luZyByZWZlcmVuY2VzIHdlcmUgaGVscGZ1bAoJICogaW4gY3JlYXRpbmcgdGhpcyBpbXBsZW1lbnRhdGlvbjo8L3A+CgkgKgoJICogPHVsPgoJICogPGxpPkJydWNlIE1hZ2dzLgoJICogPGEgaHJlZj0iaHR0cDovL3d3dy5jcy5jbXUuZWR1L2Fmcy9jcy5jbXUuZWR1L3Byb2plY3QvcHNjaWNvLWd1eWIvcmVhbHdvcmxkL3d3dy9yc19kZWNvZGUucHMiPgoJICogIkRlY29kaW5nIFJlZWQtU29sb21vbiBDb2RlcyI8L2E+IChzZWUgZGlzY3Vzc2lvbiBvZiBGb3JuZXkncyBGb3JtdWxhKTwvbGk+CgkgKiA8bGk+Si5JLiBIYWxsLiA8YSBocmVmPSJ3d3cubXRoLm1zdS5lZHUvfmpoYWxsL2NsYXNzZXMvY29kZW5vdGVzL0dSUy5wZGYiPgoJICogIkNoYXB0ZXIgNS4gR2VuZXJhbGl6ZWQgUmVlZC1Tb2xvbW9uIENvZGVzIjwvYT4KCSAqIChzZWUgZGlzY3Vzc2lvbiBvZiBFdWNsaWRlYW4gYWxnb3JpdGhtKTwvbGk+CgkgKiA8L3VsPgoJICoKCSAqIDxwPk11Y2ggY3JlZGl0IGlzIGR1ZSB0byBXaWxsaWFtIFJ1Y2tsaWRnZSBzaW5jZSBwb3J0aW9ucyBvZiB0aGlzIGNvZGUgYXJlIGFuIGluZGlyZWN0CgkgKiBwb3J0IG9mIGhpcyBDKysgUmVlZC1Tb2xvbW9uIGltcGxlbWVudGF0aW9uLjwvcD4KCSAqCgkgKiBAYXV0aG9yIFNlYW4gT3dlbgoJICogQGF1dGhvciBXaWxsaWFtIFJ1Y2tsaWRnZQoJICogQGF1dGhvciBzYW5mb3Jkc3F1aXJlcwoJICovCgl2YXIgUmVlZFNvbG9tb25EZWNvZGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIGZ1bmN0aW9uIFJlZWRTb2xvbW9uRGVjb2RlcihmaWVsZCkgewoJICAgICAgICB0aGlzLmZpZWxkID0gZmllbGQ7CgkgICAgfQoJICAgIC8qKgoJICAgICAqIDxwPkRlY29kZXMgZ2l2ZW4gc2V0IG9mIHJlY2VpdmVkIGNvZGV3b3Jkcywgd2hpY2ggaW5jbHVkZSBib3RoIGRhdGEgYW5kIGVycm9yLWNvcnJlY3Rpb24KCSAgICAgKiBjb2Rld29yZHMuIFJlYWxseSwgdGhpcyBtZWFucyBpdCB1c2VzIFJlZWQtU29sb21vbiB0byBkZXRlY3QgYW5kIGNvcnJlY3QgZXJyb3JzLCBpbi1wbGFjZSwKCSAgICAgKiBpbiB0aGUgaW5wdXQuPC9wPgoJICAgICAqCgkgICAgICogQHBhcmFtIHJlY2VpdmVkIGRhdGEgYW5kIGVycm9yLWNvcnJlY3Rpb24gY29kZXdvcmRzCgkgICAgICogQHBhcmFtIHR3b1MgbnVtYmVyIG9mIGVycm9yLWNvcnJlY3Rpb24gY29kZXdvcmRzIGF2YWlsYWJsZQoJICAgICAqIEB0aHJvd3MgUmVlZFNvbG9tb25FeGNlcHRpb24gaWYgZGVjb2RpbmcgZmFpbHMgZm9yIGFueSByZWFzb24KCSAgICAgKi8KCSAgICBSZWVkU29sb21vbkRlY29kZXIucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uIChyZWNlaXZlZCwgdHdvUyAvKmludCovKSB7CgkgICAgICAgIHZhciBmaWVsZCA9IHRoaXMuZmllbGQ7CgkgICAgICAgIHZhciBwb2x5ID0gbmV3IEdlbmVyaWNHRlBvbHlfMS5kZWZhdWx0KGZpZWxkLCByZWNlaXZlZCk7CgkgICAgICAgIHZhciBzeW5kcm9tZUNvZWZmaWNpZW50cyA9IG5ldyBJbnQzMkFycmF5KHR3b1MpOwoJICAgICAgICB2YXIgbm9FcnJvciA9IHRydWU7CgkgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHdvUzsgaSsrKSB7CgkgICAgICAgICAgICB2YXIgZXZhbFJlc3VsdCA9IHBvbHkuZXZhbHVhdGVBdChmaWVsZC5leHAoaSArIGZpZWxkLmdldEdlbmVyYXRvckJhc2UoKSkpOwoJICAgICAgICAgICAgc3luZHJvbWVDb2VmZmljaWVudHNbc3luZHJvbWVDb2VmZmljaWVudHMubGVuZ3RoIC0gMSAtIGldID0gZXZhbFJlc3VsdDsKCSAgICAgICAgICAgIGlmIChldmFsUmVzdWx0ICE9PSAwKSB7CgkgICAgICAgICAgICAgICAgbm9FcnJvciA9IGZhbHNlOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGlmIChub0Vycm9yKSB7CgkgICAgICAgICAgICByZXR1cm47CgkgICAgICAgIH0KCSAgICAgICAgdmFyIHN5bmRyb21lID0gbmV3IEdlbmVyaWNHRlBvbHlfMS5kZWZhdWx0KGZpZWxkLCBzeW5kcm9tZUNvZWZmaWNpZW50cyk7CgkgICAgICAgIHZhciBzaWdtYU9tZWdhID0gdGhpcy5ydW5FdWNsaWRlYW5BbGdvcml0aG0oZmllbGQuYnVpbGRNb25vbWlhbCh0d29TLCAxKSwgc3luZHJvbWUsIHR3b1MpOwoJICAgICAgICB2YXIgc2lnbWEgPSBzaWdtYU9tZWdhWzBdOwoJICAgICAgICB2YXIgb21lZ2EgPSBzaWdtYU9tZWdhWzFdOwoJICAgICAgICB2YXIgZXJyb3JMb2NhdGlvbnMgPSB0aGlzLmZpbmRFcnJvckxvY2F0aW9ucyhzaWdtYSk7CgkgICAgICAgIHZhciBlcnJvck1hZ25pdHVkZXMgPSB0aGlzLmZpbmRFcnJvck1hZ25pdHVkZXMob21lZ2EsIGVycm9yTG9jYXRpb25zKTsKCSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlcnJvckxvY2F0aW9ucy5sZW5ndGg7IGkrKykgewoJICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0gcmVjZWl2ZWQubGVuZ3RoIC0gMSAtIGZpZWxkLmxvZyhlcnJvckxvY2F0aW9uc1tpXSk7CgkgICAgICAgICAgICBpZiAocG9zaXRpb24gPCAwKSB7CgkgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJlZWRTb2xvbW9uRXhjZXB0aW9uXzEuZGVmYXVsdCgnQmFkIGVycm9yIGxvY2F0aW9uJyk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICByZWNlaXZlZFtwb3NpdGlvbl0gPSBHZW5lcmljR0ZfMS5kZWZhdWx0LmFkZE9yU3VidHJhY3QocmVjZWl2ZWRbcG9zaXRpb25dLCBlcnJvck1hZ25pdHVkZXNbaV0pOwoJICAgICAgICB9CgkgICAgfTsKCSAgICBSZWVkU29sb21vbkRlY29kZXIucHJvdG90eXBlLnJ1bkV1Y2xpZGVhbkFsZ29yaXRobSA9IGZ1bmN0aW9uIChhLCBiLCBSIC8qaW50Ki8pIHsKCSAgICAgICAgLy8gQXNzdW1lIGEncyBkZWdyZWUgaXMgPj0gYidzCgkgICAgICAgIGlmIChhLmdldERlZ3JlZSgpIDwgYi5nZXREZWdyZWUoKSkgewoJICAgICAgICAgICAgdmFyIHRlbXAgPSBhOwoJICAgICAgICAgICAgYSA9IGI7CgkgICAgICAgICAgICBiID0gdGVtcDsKCSAgICAgICAgfQoJICAgICAgICB2YXIgZmllbGQgPSB0aGlzLmZpZWxkOwoJICAgICAgICB2YXIgckxhc3QgPSBhOwoJICAgICAgICB2YXIgciA9IGI7CgkgICAgICAgIHZhciB0TGFzdCA9IGZpZWxkLmdldFplcm8oKTsKCSAgICAgICAgdmFyIHQgPSBmaWVsZC5nZXRPbmUoKTsKCSAgICAgICAgLy8gUnVuIEV1Y2xpZGVhbiBhbGdvcml0aG0gdW50aWwgcidzIGRlZ3JlZSBpcyBsZXNzIHRoYW4gUi8yCgkgICAgICAgIHdoaWxlIChyLmdldERlZ3JlZSgpID49IChSIC8gMiB8IDApKSB7CgkgICAgICAgICAgICB2YXIgckxhc3RMYXN0ID0gckxhc3Q7CgkgICAgICAgICAgICB2YXIgdExhc3RMYXN0ID0gdExhc3Q7CgkgICAgICAgICAgICByTGFzdCA9IHI7CgkgICAgICAgICAgICB0TGFzdCA9IHQ7CgkgICAgICAgICAgICAvLyBEaXZpZGUgckxhc3RMYXN0IGJ5IHJMYXN0LCB3aXRoIHF1b3RpZW50IGluIHEgYW5kIHJlbWFpbmRlciBpbiByCgkgICAgICAgICAgICBpZiAockxhc3QuaXNaZXJvKCkpIHsKCSAgICAgICAgICAgICAgICAvLyBPb3BzLCBFdWNsaWRlYW4gYWxnb3JpdGhtIGFscmVhZHkgdGVybWluYXRlZD8KCSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmVlZFNvbG9tb25FeGNlcHRpb25fMS5kZWZhdWx0KCdyX3tpLTF9IHdhcyB6ZXJvJyk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICByID0gckxhc3RMYXN0OwoJICAgICAgICAgICAgdmFyIHEgPSBmaWVsZC5nZXRaZXJvKCk7CgkgICAgICAgICAgICB2YXIgZGVub21pbmF0b3JMZWFkaW5nVGVybSA9IHJMYXN0LmdldENvZWZmaWNpZW50KHJMYXN0LmdldERlZ3JlZSgpKTsKCSAgICAgICAgICAgIHZhciBkbHRJbnZlcnNlID0gZmllbGQuaW52ZXJzZShkZW5vbWluYXRvckxlYWRpbmdUZXJtKTsKCSAgICAgICAgICAgIHdoaWxlIChyLmdldERlZ3JlZSgpID49IHJMYXN0LmdldERlZ3JlZSgpICYmICFyLmlzWmVybygpKSB7CgkgICAgICAgICAgICAgICAgdmFyIGRlZ3JlZURpZmYgPSByLmdldERlZ3JlZSgpIC0gckxhc3QuZ2V0RGVncmVlKCk7CgkgICAgICAgICAgICAgICAgdmFyIHNjYWxlID0gZmllbGQubXVsdGlwbHkoci5nZXRDb2VmZmljaWVudChyLmdldERlZ3JlZSgpKSwgZGx0SW52ZXJzZSk7CgkgICAgICAgICAgICAgICAgcSA9IHEuYWRkT3JTdWJ0cmFjdChmaWVsZC5idWlsZE1vbm9taWFsKGRlZ3JlZURpZmYsIHNjYWxlKSk7CgkgICAgICAgICAgICAgICAgciA9IHIuYWRkT3JTdWJ0cmFjdChyTGFzdC5tdWx0aXBseUJ5TW9ub21pYWwoZGVncmVlRGlmZiwgc2NhbGUpKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHQgPSBxLm11bHRpcGx5KHRMYXN0KS5hZGRPclN1YnRyYWN0KHRMYXN0TGFzdCk7CgkgICAgICAgICAgICBpZiAoci5nZXREZWdyZWUoKSA+PSByTGFzdC5nZXREZWdyZWUoKSkgewoJICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb25fMS5kZWZhdWx0KCdEaXZpc2lvbiBhbGdvcml0aG0gZmFpbGVkIHRvIHJlZHVjZSBwb2x5bm9taWFsPycpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHZhciBzaWdtYVRpbGRlQXRaZXJvID0gdC5nZXRDb2VmZmljaWVudCgwKTsKCSAgICAgICAgaWYgKHNpZ21hVGlsZGVBdFplcm8gPT09IDApIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBSZWVkU29sb21vbkV4Y2VwdGlvbl8xLmRlZmF1bHQoJ3NpZ21hVGlsZGUoMCkgd2FzIHplcm8nKTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgaW52ZXJzZSA9IGZpZWxkLmludmVyc2Uoc2lnbWFUaWxkZUF0WmVybyk7CgkgICAgICAgIHZhciBzaWdtYSA9IHQubXVsdGlwbHlTY2FsYXIoaW52ZXJzZSk7CgkgICAgICAgIHZhciBvbWVnYSA9IHIubXVsdGlwbHlTY2FsYXIoaW52ZXJzZSk7CgkgICAgICAgIHJldHVybiBbc2lnbWEsIG9tZWdhXTsKCSAgICB9OwoJICAgIFJlZWRTb2xvbW9uRGVjb2Rlci5wcm90b3R5cGUuZmluZEVycm9yTG9jYXRpb25zID0gZnVuY3Rpb24gKGVycm9yTG9jYXRvcikgewoJICAgICAgICAvLyBUaGlzIGlzIGEgZGlyZWN0IGFwcGxpY2F0aW9uIG9mIENoaWVuJ3Mgc2VhcmNoCgkgICAgICAgIHZhciBudW1FcnJvcnMgPSBlcnJvckxvY2F0b3IuZ2V0RGVncmVlKCk7CgkgICAgICAgIGlmIChudW1FcnJvcnMgPT09IDEpIHsgLy8gc2hvcnRjdXQKCSAgICAgICAgICAgIHJldHVybiBJbnQzMkFycmF5LmZyb20oW2Vycm9yTG9jYXRvci5nZXRDb2VmZmljaWVudCgxKV0pOwoJICAgICAgICB9CgkgICAgICAgIHZhciByZXN1bHQgPSBuZXcgSW50MzJBcnJheShudW1FcnJvcnMpOwoJICAgICAgICB2YXIgZSA9IDA7CgkgICAgICAgIHZhciBmaWVsZCA9IHRoaXMuZmllbGQ7CgkgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgZmllbGQuZ2V0U2l6ZSgpICYmIGUgPCBudW1FcnJvcnM7IGkrKykgewoJICAgICAgICAgICAgaWYgKGVycm9yTG9jYXRvci5ldmFsdWF0ZUF0KGkpID09PSAwKSB7CgkgICAgICAgICAgICAgICAgcmVzdWx0W2VdID0gZmllbGQuaW52ZXJzZShpKTsKCSAgICAgICAgICAgICAgICBlKys7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgaWYgKGUgIT09IG51bUVycm9ycykgewoJICAgICAgICAgICAgdGhyb3cgbmV3IFJlZWRTb2xvbW9uRXhjZXB0aW9uXzEuZGVmYXVsdCgnRXJyb3IgbG9jYXRvciBkZWdyZWUgZG9lcyBub3QgbWF0Y2ggbnVtYmVyIG9mIHJvb3RzJyk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHJlc3VsdDsKCSAgICB9OwoJICAgIFJlZWRTb2xvbW9uRGVjb2Rlci5wcm90b3R5cGUuZmluZEVycm9yTWFnbml0dWRlcyA9IGZ1bmN0aW9uIChlcnJvckV2YWx1YXRvciwgZXJyb3JMb2NhdGlvbnMpIHsKCSAgICAgICAgLy8gVGhpcyBpcyBkaXJlY3RseSBhcHBseWluZyBGb3JuZXkncyBGb3JtdWxhCgkgICAgICAgIHZhciBzID0gZXJyb3JMb2NhdGlvbnMubGVuZ3RoOwoJICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IEludDMyQXJyYXkocyk7CgkgICAgICAgIHZhciBmaWVsZCA9IHRoaXMuZmllbGQ7CgkgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgczsgaSsrKSB7CgkgICAgICAgICAgICB2YXIgeGlJbnZlcnNlID0gZmllbGQuaW52ZXJzZShlcnJvckxvY2F0aW9uc1tpXSk7CgkgICAgICAgICAgICB2YXIgZGVub21pbmF0b3IgPSAxOwoJICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzOyBqKyspIHsKCSAgICAgICAgICAgICAgICBpZiAoaSAhPT0gaikgewoJICAgICAgICAgICAgICAgICAgICAvLyBkZW5vbWluYXRvciA9IGZpZWxkLm11bHRpcGx5KGRlbm9taW5hdG9yLAoJICAgICAgICAgICAgICAgICAgICAvLyAgICBHZW5lcmljR0YuYWRkT3JTdWJ0cmFjdCgxLCBmaWVsZC5tdWx0aXBseShlcnJvckxvY2F0aW9uc1tqXSwgeGlJbnZlcnNlKSkpCgkgICAgICAgICAgICAgICAgICAgIC8vIEFib3ZlIHNob3VsZCB3b3JrIGJ1dCBmYWlscyBvbiBzb21lIEFwcGxlIGFuZCBMaW51eCBKREtzIGR1ZSB0byBhIEhvdHNwb3QgYnVnLgoJICAgICAgICAgICAgICAgICAgICAvLyBCZWxvdyBpcyBhIGZ1bm55LWxvb2tpbmcgd29ya2Fyb3VuZCBmcm9tIFN0ZXZlbiBQYXJrZXMKCSAgICAgICAgICAgICAgICAgICAgdmFyIHRlcm0gPSBmaWVsZC5tdWx0aXBseShlcnJvckxvY2F0aW9uc1tqXSwgeGlJbnZlcnNlKTsKCSAgICAgICAgICAgICAgICAgICAgdmFyIHRlcm1QbHVzMSA9ICh0ZXJtICYgMHgxKSA9PT0gMCA/IHRlcm0gfCAxIDogdGVybSAmIH4xOwoJICAgICAgICAgICAgICAgICAgICBkZW5vbWluYXRvciA9IGZpZWxkLm11bHRpcGx5KGRlbm9taW5hdG9yLCB0ZXJtUGx1czEpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHJlc3VsdFtpXSA9IGZpZWxkLm11bHRpcGx5KGVycm9yRXZhbHVhdG9yLmV2YWx1YXRlQXQoeGlJbnZlcnNlKSwgZmllbGQuaW52ZXJzZShkZW5vbWluYXRvcikpOwoJICAgICAgICAgICAgaWYgKGZpZWxkLmdldEdlbmVyYXRvckJhc2UoKSAhPT0gMCkgewoJICAgICAgICAgICAgICAgIHJlc3VsdFtpXSA9IGZpZWxkLm11bHRpcGx5KHJlc3VsdFtpXSwgeGlJbnZlcnNlKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gcmVzdWx0OwoJICAgIH07CgkgICAgcmV0dXJuIFJlZWRTb2xvbW9uRGVjb2RlcjsKCX0oKSk7CglleHBvcnRzLmRlZmF1bHQgPSBSZWVkU29sb21vbkRlY29kZXI7CgoJfSk7CgoJdmFyIERlY29kZXJfMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCS8qCgkgKiBDb3B5cmlnaHQgMjAxMCBaWGluZyBhdXRob3JzCgkgKgoJICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSAqCgkgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJICoKCSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJICovCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoKCgoKCgoKCS8vIGltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOwoJdmFyIFRhYmxlOwoJKGZ1bmN0aW9uIChUYWJsZSkgewoJICAgIFRhYmxlW1RhYmxlWyJVUFBFUiJdID0gMF0gPSAiVVBQRVIiOwoJICAgIFRhYmxlW1RhYmxlWyJMT1dFUiJdID0gMV0gPSAiTE9XRVIiOwoJICAgIFRhYmxlW1RhYmxlWyJNSVhFRCJdID0gMl0gPSAiTUlYRUQiOwoJICAgIFRhYmxlW1RhYmxlWyJESUdJVCJdID0gM10gPSAiRElHSVQiOwoJICAgIFRhYmxlW1RhYmxlWyJQVU5DVCJdID0gNF0gPSAiUFVOQ1QiOwoJICAgIFRhYmxlW1RhYmxlWyJCSU5BUlkiXSA9IDVdID0gIkJJTkFSWSI7Cgl9KShUYWJsZSB8fCAoVGFibGUgPSB7fSkpOwoJLyoqCgkgKiA8cD5UaGUgbWFpbiBjbGFzcyB3aGljaCBpbXBsZW1lbnRzIEF6dGVjIENvZGUgZGVjb2RpbmcgLS0gYXMgb3Bwb3NlZCB0byBsb2NhdGluZyBhbmQgZXh0cmFjdGluZwoJICogdGhlIEF6dGVjIENvZGUgZnJvbSBhbiBpbWFnZS48L3A+CgkgKgoJICogQGF1dGhvciBEYXZpZCBPbGl2aWVyCgkgKi8KCXZhciBEZWNvZGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIGZ1bmN0aW9uIERlY29kZXIoKSB7CgkgICAgfQoJICAgIERlY29kZXIucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uIChkZXRlY3RvclJlc3VsdCkgewoJICAgICAgICB0aGlzLmRkYXRhID0gZGV0ZWN0b3JSZXN1bHQ7CgkgICAgICAgIHZhciBtYXRyaXggPSBkZXRlY3RvclJlc3VsdC5nZXRCaXRzKCk7CgkgICAgICAgIHZhciByYXdiaXRzID0gdGhpcy5leHRyYWN0Qml0cyhtYXRyaXgpOwoJICAgICAgICB2YXIgY29ycmVjdGVkQml0cyA9IHRoaXMuY29ycmVjdEJpdHMocmF3Yml0cyk7CgkgICAgICAgIHZhciByYXdCeXRlcyA9IERlY29kZXIuY29udmVydEJvb2xBcnJheVRvQnl0ZUFycmF5KGNvcnJlY3RlZEJpdHMpOwoJICAgICAgICB2YXIgcmVzdWx0ID0gRGVjb2Rlci5nZXRFbmNvZGVkRGF0YShjb3JyZWN0ZWRCaXRzKTsKCSAgICAgICAgdmFyIGRlY29kZXJSZXN1bHQgPSBuZXcgRGVjb2RlclJlc3VsdF8xLmRlZmF1bHQocmF3Qnl0ZXMsIHJlc3VsdCwgbnVsbCwgbnVsbCk7CgkgICAgICAgIGRlY29kZXJSZXN1bHQuc2V0TnVtQml0cyhjb3JyZWN0ZWRCaXRzLmxlbmd0aCk7CgkgICAgICAgIHJldHVybiBkZWNvZGVyUmVzdWx0OwoJICAgIH07CgkgICAgLy8gVGhpcyBtZXRob2QgaXMgdXNlZCBmb3IgdGVzdGluZyB0aGUgaGlnaC1sZXZlbCBlbmNvZGVyCgkgICAgRGVjb2Rlci5oaWdoTGV2ZWxEZWNvZGUgPSBmdW5jdGlvbiAoY29ycmVjdGVkQml0cykgewoJICAgICAgICByZXR1cm4gdGhpcy5nZXRFbmNvZGVkRGF0YShjb3JyZWN0ZWRCaXRzKTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEdldHMgdGhlIHN0cmluZyBlbmNvZGVkIGluIHRoZSBhenRlYyBjb2RlIGJpdHMKCSAgICAgKgoJICAgICAqIEByZXR1cm4gdGhlIGRlY29kZWQgc3RyaW5nCgkgICAgICovCgkgICAgRGVjb2Rlci5nZXRFbmNvZGVkRGF0YSA9IGZ1bmN0aW9uIChjb3JyZWN0ZWRCaXRzKSB7CgkgICAgICAgIHZhciBlbmRJbmRleCA9IGNvcnJlY3RlZEJpdHMubGVuZ3RoOwoJICAgICAgICB2YXIgbGF0Y2hUYWJsZSA9IFRhYmxlLlVQUEVSOyAvLyB0YWJsZSBtb3N0IHJlY2VudGx5IGxhdGNoZWQgdG8KCSAgICAgICAgdmFyIHNoaWZ0VGFibGUgPSBUYWJsZS5VUFBFUjsgLy8gdGFibGUgdG8gdXNlIGZvciB0aGUgbmV4dCByZWFkCgkgICAgICAgIHZhciByZXN1bHQgPSAnJzsKCSAgICAgICAgdmFyIGluZGV4ID0gMDsKCSAgICAgICAgd2hpbGUgKGluZGV4IDwgZW5kSW5kZXgpIHsKCSAgICAgICAgICAgIGlmIChzaGlmdFRhYmxlID09PSBUYWJsZS5CSU5BUlkpIHsKCSAgICAgICAgICAgICAgICBpZiAoZW5kSW5kZXggLSBpbmRleCA8IDUpIHsKCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIHZhciBsZW5ndGhfMSA9IERlY29kZXIucmVhZENvZGUoY29ycmVjdGVkQml0cywgaW5kZXgsIDUpOwoJICAgICAgICAgICAgICAgIGluZGV4ICs9IDU7CgkgICAgICAgICAgICAgICAgaWYgKGxlbmd0aF8xID09PSAwKSB7CgkgICAgICAgICAgICAgICAgICAgIGlmIChlbmRJbmRleCAtIGluZGV4IDwgMTEpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIGxlbmd0aF8xID0gRGVjb2Rlci5yZWFkQ29kZShjb3JyZWN0ZWRCaXRzLCBpbmRleCwgMTEpICsgMzE7CgkgICAgICAgICAgICAgICAgICAgIGluZGV4ICs9IDExOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBmb3IgKHZhciBjaGFyQ291bnQgPSAwOyBjaGFyQ291bnQgPCBsZW5ndGhfMTsgY2hhckNvdW50KyspIHsKCSAgICAgICAgICAgICAgICAgICAgaWYgKGVuZEluZGV4IC0gaW5kZXggPCA4KSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA9IGVuZEluZGV4OyAvLyBGb3JjZSBvdXRlciBsb29wIHRvIGV4aXQKCSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIHZhciBjb2RlID0gRGVjb2Rlci5yZWFkQ29kZShjb3JyZWN0ZWRCaXRzLCBpbmRleCwgOCk7CgkgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAvKihjaGFyKSovIFN0cmluZ1V0aWxzXzEuZGVmYXVsdC5jYXN0QXNOb25VdGY4Q2hhcihjb2RlKTsKCSAgICAgICAgICAgICAgICAgICAgaW5kZXggKz0gODsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgLy8gR28gYmFjayB0byB3aGF0ZXZlciBtb2RlIHdlIGhhZCBiZWVuIGluCgkgICAgICAgICAgICAgICAgc2hpZnRUYWJsZSA9IGxhdGNoVGFibGU7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICB2YXIgc2l6ZSA9IHNoaWZ0VGFibGUgPT09IFRhYmxlLkRJR0lUID8gNCA6IDU7CgkgICAgICAgICAgICAgICAgaWYgKGVuZEluZGV4IC0gaW5kZXggPCBzaXplKSB7CgkgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB2YXIgY29kZSA9IERlY29kZXIucmVhZENvZGUoY29ycmVjdGVkQml0cywgaW5kZXgsIHNpemUpOwoJICAgICAgICAgICAgICAgIGluZGV4ICs9IHNpemU7CgkgICAgICAgICAgICAgICAgdmFyIHN0ciA9IERlY29kZXIuZ2V0Q2hhcmFjdGVyKHNoaWZ0VGFibGUsIGNvZGUpOwoJICAgICAgICAgICAgICAgIGlmIChzdHIuc3RhcnRzV2l0aCgnQ1RSTF8nKSkgewoJICAgICAgICAgICAgICAgICAgICAvLyBUYWJsZSBjaGFuZ2VzCgkgICAgICAgICAgICAgICAgICAgIC8vIElTTy9JRUMgMjQ3Nzg6MjAwOCBwcmVzY3JpYmVzIGVuZGluZyBhIHNoaWZ0IHNlcXVlbmNlIGluIHRoZSBtb2RlIGZyb20gd2hpY2ggaXQgd2FzIGludm9rZWQuCgkgICAgICAgICAgICAgICAgICAgIC8vIFRoYXQncyBpbmNsdWRpbmcgd2hlbiB0aGF0IG1vZGUgaXMgYSBzaGlmdC4KCSAgICAgICAgICAgICAgICAgICAgLy8gT3VyIHRlc3QgY2FzZSBkbHVzYnMucG5nIGZvciBpc3N1ZSAjNjQyIGV4ZXJjaXNlcyB0aGF0LgoJICAgICAgICAgICAgICAgICAgICBsYXRjaFRhYmxlID0gc2hpZnRUYWJsZTsgLy8gTGF0Y2ggdGhlIGN1cnJlbnQgbW9kZSwgc28gYXMgdG8gcmV0dXJuIHRvIFVwcGVyIGFmdGVyIFUvUyBCL1MKCSAgICAgICAgICAgICAgICAgICAgc2hpZnRUYWJsZSA9IERlY29kZXIuZ2V0VGFibGUoc3RyLmNoYXJBdCg1KSk7CgkgICAgICAgICAgICAgICAgICAgIGlmIChzdHIuY2hhckF0KDYpID09PSAnTCcpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIGxhdGNoVGFibGUgPSBzaGlmdFRhYmxlOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gc3RyOwoJICAgICAgICAgICAgICAgICAgICAvLyBHbyBiYWNrIHRvIHdoYXRldmVyIG1vZGUgd2UgaGFkIGJlZW4gaW4KCSAgICAgICAgICAgICAgICAgICAgc2hpZnRUYWJsZSA9IGxhdGNoVGFibGU7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHJldHVybiByZXN1bHQ7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBnZXRzIHRoZSB0YWJsZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBjaGFyIHBhc3NlZAoJICAgICAqLwoJICAgIERlY29kZXIuZ2V0VGFibGUgPSBmdW5jdGlvbiAodCkgewoJICAgICAgICBzd2l0Y2ggKHQpIHsKCSAgICAgICAgICAgIGNhc2UgJ0wnOgoJICAgICAgICAgICAgICAgIHJldHVybiBUYWJsZS5MT1dFUjsKCSAgICAgICAgICAgIGNhc2UgJ1AnOgoJICAgICAgICAgICAgICAgIHJldHVybiBUYWJsZS5QVU5DVDsKCSAgICAgICAgICAgIGNhc2UgJ00nOgoJICAgICAgICAgICAgICAgIHJldHVybiBUYWJsZS5NSVhFRDsKCSAgICAgICAgICAgIGNhc2UgJ0QnOgoJICAgICAgICAgICAgICAgIHJldHVybiBUYWJsZS5ESUdJVDsKCSAgICAgICAgICAgIGNhc2UgJ0InOgoJICAgICAgICAgICAgICAgIHJldHVybiBUYWJsZS5CSU5BUlk7CgkgICAgICAgICAgICBjYXNlICdVJzoKCSAgICAgICAgICAgIGRlZmF1bHQ6CgkgICAgICAgICAgICAgICAgcmV0dXJuIFRhYmxlLlVQUEVSOwoJICAgICAgICB9CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBHZXRzIHRoZSBjaGFyYWN0ZXIgKG9yIHN0cmluZykgY29ycmVzcG9uZGluZyB0byB0aGUgcGFzc2VkIGNvZGUgaW4gdGhlIGdpdmVuIHRhYmxlCgkgICAgICoKCSAgICAgKiBAcGFyYW0gdGFibGUgdGhlIHRhYmxlIHVzZWQKCSAgICAgKiBAcGFyYW0gY29kZSB0aGUgY29kZSBvZiB0aGUgY2hhcmFjdGVyCgkgICAgICovCgkgICAgRGVjb2Rlci5nZXRDaGFyYWN0ZXIgPSBmdW5jdGlvbiAodGFibGUsIGNvZGUpIHsKCSAgICAgICAgc3dpdGNoICh0YWJsZSkgewoJICAgICAgICAgICAgY2FzZSBUYWJsZS5VUFBFUjoKCSAgICAgICAgICAgICAgICByZXR1cm4gRGVjb2Rlci5VUFBFUl9UQUJMRVtjb2RlXTsKCSAgICAgICAgICAgIGNhc2UgVGFibGUuTE9XRVI6CgkgICAgICAgICAgICAgICAgcmV0dXJuIERlY29kZXIuTE9XRVJfVEFCTEVbY29kZV07CgkgICAgICAgICAgICBjYXNlIFRhYmxlLk1JWEVEOgoJICAgICAgICAgICAgICAgIHJldHVybiBEZWNvZGVyLk1JWEVEX1RBQkxFW2NvZGVdOwoJICAgICAgICAgICAgY2FzZSBUYWJsZS5QVU5DVDoKCSAgICAgICAgICAgICAgICByZXR1cm4gRGVjb2Rlci5QVU5DVF9UQUJMRVtjb2RlXTsKCSAgICAgICAgICAgIGNhc2UgVGFibGUuRElHSVQ6CgkgICAgICAgICAgICAgICAgcmV0dXJuIERlY29kZXIuRElHSVRfVEFCTEVbY29kZV07CgkgICAgICAgICAgICBkZWZhdWx0OgoJICAgICAgICAgICAgICAgIC8vIFNob3VsZCBub3QgcmVhY2ggaGVyZS4KCSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uXzEuZGVmYXVsdCgnQmFkIHRhYmxlJyk7CgkgICAgICAgIH0KCSAgICB9OwoJICAgIC8qKgoJICAgICAqIDxwPlBlcmZvcm1zIFJTIGVycm9yIGNvcnJlY3Rpb24gb24gYW4gYXJyYXkgb2YgYml0cy48L3A+CgkgICAgICoKCSAgICAgKiBAcmV0dXJuIHRoZSBjb3JyZWN0ZWQgYXJyYXkKCSAgICAgKiBAdGhyb3dzIEZvcm1hdEV4Y2VwdGlvbiBpZiB0aGUgaW5wdXQgY29udGFpbnMgdG9vIG1hbnkgZXJyb3JzCgkgICAgICovCgkgICAgRGVjb2Rlci5wcm90b3R5cGUuY29ycmVjdEJpdHMgPSBmdW5jdGlvbiAocmF3Yml0cykgewoJICAgICAgICB2YXIgZ2Y7CgkgICAgICAgIHZhciBjb2Rld29yZFNpemU7CgkgICAgICAgIGlmICh0aGlzLmRkYXRhLmdldE5iTGF5ZXJzKCkgPD0gMikgewoJICAgICAgICAgICAgY29kZXdvcmRTaXplID0gNjsKCSAgICAgICAgICAgIGdmID0gR2VuZXJpY0dGXzEuZGVmYXVsdC5BWlRFQ19EQVRBXzY7CgkgICAgICAgIH0KCSAgICAgICAgZWxzZSBpZiAodGhpcy5kZGF0YS5nZXROYkxheWVycygpIDw9IDgpIHsKCSAgICAgICAgICAgIGNvZGV3b3JkU2l6ZSA9IDg7CgkgICAgICAgICAgICBnZiA9IEdlbmVyaWNHRl8xLmRlZmF1bHQuQVpURUNfREFUQV84OwoJICAgICAgICB9CgkgICAgICAgIGVsc2UgaWYgKHRoaXMuZGRhdGEuZ2V0TmJMYXllcnMoKSA8PSAyMikgewoJICAgICAgICAgICAgY29kZXdvcmRTaXplID0gMTA7CgkgICAgICAgICAgICBnZiA9IEdlbmVyaWNHRl8xLmRlZmF1bHQuQVpURUNfREFUQV8xMDsKCSAgICAgICAgfQoJICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgIGNvZGV3b3JkU2l6ZSA9IDEyOwoJICAgICAgICAgICAgZ2YgPSBHZW5lcmljR0ZfMS5kZWZhdWx0LkFaVEVDX0RBVEFfMTI7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIG51bURhdGFDb2Rld29yZHMgPSB0aGlzLmRkYXRhLmdldE5iRGF0YWJsb2NrcygpOwoJICAgICAgICB2YXIgbnVtQ29kZXdvcmRzID0gcmF3Yml0cy5sZW5ndGggLyBjb2Rld29yZFNpemU7CgkgICAgICAgIGlmIChudW1Db2Rld29yZHMgPCBudW1EYXRhQ29kZXdvcmRzKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgICAgIHZhciBvZmZzZXQgPSByYXdiaXRzLmxlbmd0aCAlIGNvZGV3b3JkU2l6ZTsKCSAgICAgICAgdmFyIGRhdGFXb3JkcyA9IG5ldyBJbnQzMkFycmF5KG51bUNvZGV3b3Jkcyk7CgkgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtQ29kZXdvcmRzOyBpKyssIG9mZnNldCArPSBjb2Rld29yZFNpemUpIHsKCSAgICAgICAgICAgIGRhdGFXb3Jkc1tpXSA9IERlY29kZXIucmVhZENvZGUocmF3Yml0cywgb2Zmc2V0LCBjb2Rld29yZFNpemUpOwoJICAgICAgICB9CgkgICAgICAgIHRyeSB7CgkgICAgICAgICAgICB2YXIgcnNEZWNvZGVyID0gbmV3IFJlZWRTb2xvbW9uRGVjb2Rlcl8xLmRlZmF1bHQoZ2YpOwoJICAgICAgICAgICAgcnNEZWNvZGVyLmRlY29kZShkYXRhV29yZHMsIG51bUNvZGV3b3JkcyAtIG51bURhdGFDb2Rld29yZHMpOwoJICAgICAgICB9CgkgICAgICAgIGNhdGNoIChleCkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoZXgpOwoJICAgICAgICB9CgkgICAgICAgIC8vIE5vdyBwZXJmb3JtIHRoZSB1bnN0dWZmaW5nIG9wZXJhdGlvbi4KCSAgICAgICAgLy8gRmlyc3QsIGNvdW50IGhvdyBtYW55IGJpdHMgYXJlIGdvaW5nIHRvIGJlIHRocm93biBvdXQgYXMgc3R1ZmZpbmcKCSAgICAgICAgdmFyIG1hc2sgPSAoMSA8PCBjb2Rld29yZFNpemUpIC0gMTsKCSAgICAgICAgdmFyIHN0dWZmZWRCaXRzID0gMDsKCSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1EYXRhQ29kZXdvcmRzOyBpKyspIHsKCSAgICAgICAgICAgIHZhciBkYXRhV29yZCA9IGRhdGFXb3Jkc1tpXTsKCSAgICAgICAgICAgIGlmIChkYXRhV29yZCA9PT0gMCB8fCBkYXRhV29yZCA9PT0gbWFzaykgewoJICAgICAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlIGlmIChkYXRhV29yZCA9PT0gMSB8fCBkYXRhV29yZCA9PT0gbWFzayAtIDEpIHsKCSAgICAgICAgICAgICAgICBzdHVmZmVkQml0cysrOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIC8vIE5vdywgYWN0dWFsbHkgdW5wYWNrIHRoZSBiaXRzIGFuZCByZW1vdmUgdGhlIHN0dWZmaW5nCgkgICAgICAgIHZhciBjb3JyZWN0ZWRCaXRzID0gbmV3IEFycmF5KG51bURhdGFDb2Rld29yZHMgKiBjb2Rld29yZFNpemUgLSBzdHVmZmVkQml0cyk7CgkgICAgICAgIHZhciBpbmRleCA9IDA7CgkgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtRGF0YUNvZGV3b3JkczsgaSsrKSB7CgkgICAgICAgICAgICB2YXIgZGF0YVdvcmQgPSBkYXRhV29yZHNbaV07CgkgICAgICAgICAgICBpZiAoZGF0YVdvcmQgPT09IDEgfHwgZGF0YVdvcmQgPT09IG1hc2sgLSAxKSB7CgkgICAgICAgICAgICAgICAgLy8gbmV4dCBjb2Rld29yZFNpemUtMSBiaXRzIGFyZSBhbGwgemVyb3Mgb3IgYWxsIG9uZXMKCSAgICAgICAgICAgICAgICBjb3JyZWN0ZWRCaXRzLmZpbGwoZGF0YVdvcmQgPiAxLCBpbmRleCwgaW5kZXggKyBjb2Rld29yZFNpemUgLSAxKTsKCSAgICAgICAgICAgICAgICAvLyBBcnJheXMuZmlsbChjb3JyZWN0ZWRCaXRzLCBpbmRleCwgaW5kZXggKyBjb2Rld29yZFNpemUgLSAxLCBkYXRhV29yZCA+IDEpOwoJICAgICAgICAgICAgICAgIGluZGV4ICs9IGNvZGV3b3JkU2l6ZSAtIDE7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICBmb3IgKHZhciBiaXQgPSBjb2Rld29yZFNpemUgLSAxOyBiaXQgPj0gMDsgLS1iaXQpIHsKCSAgICAgICAgICAgICAgICAgICAgY29ycmVjdGVkQml0c1tpbmRleCsrXSA9IChkYXRhV29yZCAmICgxIDw8IGJpdCkpICE9PSAwOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gY29ycmVjdGVkQml0czsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEdldHMgdGhlIGFycmF5IG9mIGJpdHMgZnJvbSBhbiBBenRlYyBDb2RlIG1hdHJpeAoJICAgICAqCgkgICAgICogQHJldHVybiB0aGUgYXJyYXkgb2YgYml0cwoJICAgICAqLwoJICAgIERlY29kZXIucHJvdG90eXBlLmV4dHJhY3RCaXRzID0gZnVuY3Rpb24gKG1hdHJpeCkgewoJICAgICAgICB2YXIgY29tcGFjdCA9IHRoaXMuZGRhdGEuaXNDb21wYWN0KCk7CgkgICAgICAgIHZhciBsYXllcnMgPSB0aGlzLmRkYXRhLmdldE5iTGF5ZXJzKCk7CgkgICAgICAgIHZhciBiYXNlTWF0cml4U2l6ZSA9IChjb21wYWN0ID8gMTEgOiAxNCkgKyBsYXllcnMgKiA0OyAvLyBub3QgaW5jbHVkaW5nIGFsaWdubWVudCBsaW5lcwoJICAgICAgICB2YXIgYWxpZ25tZW50TWFwID0gbmV3IEludDMyQXJyYXkoYmFzZU1hdHJpeFNpemUpOwoJICAgICAgICB2YXIgcmF3Yml0cyA9IG5ldyBBcnJheSh0aGlzLnRvdGFsQml0c0luTGF5ZXIobGF5ZXJzLCBjb21wYWN0KSk7CgkgICAgICAgIGlmIChjb21wYWN0KSB7CgkgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFsaWdubWVudE1hcC5sZW5ndGg7IGkrKykgewoJICAgICAgICAgICAgICAgIGFsaWdubWVudE1hcFtpXSA9IGk7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICB2YXIgbWF0cml4U2l6ZSA9IGJhc2VNYXRyaXhTaXplICsgMSArIDIgKiBJbnRlZ2VyXzEuZGVmYXVsdC50cnVuY0RpdmlzaW9uKChJbnRlZ2VyXzEuZGVmYXVsdC50cnVuY0RpdmlzaW9uKGJhc2VNYXRyaXhTaXplLCAyKSAtIDEpLCAxNSk7CgkgICAgICAgICAgICB2YXIgb3JpZ0NlbnRlciA9IGJhc2VNYXRyaXhTaXplIC8gMjsKCSAgICAgICAgICAgIHZhciBjZW50ZXIgPSBJbnRlZ2VyXzEuZGVmYXVsdC50cnVuY0RpdmlzaW9uKG1hdHJpeFNpemUsIDIpOwoJICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvcmlnQ2VudGVyOyBpKyspIHsKCSAgICAgICAgICAgICAgICB2YXIgbmV3T2Zmc2V0ID0gaSArIEludGVnZXJfMS5kZWZhdWx0LnRydW5jRGl2aXNpb24oaSwgMTUpOwoJICAgICAgICAgICAgICAgIGFsaWdubWVudE1hcFtvcmlnQ2VudGVyIC0gaSAtIDFdID0gY2VudGVyIC0gbmV3T2Zmc2V0IC0gMTsKCSAgICAgICAgICAgICAgICBhbGlnbm1lbnRNYXBbb3JpZ0NlbnRlciArIGldID0gY2VudGVyICsgbmV3T2Zmc2V0ICsgMTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICBmb3IgKHZhciBpID0gMCwgcm93T2Zmc2V0ID0gMDsgaSA8IGxheWVyczsgaSsrKSB7CgkgICAgICAgICAgICB2YXIgcm93U2l6ZSA9IChsYXllcnMgLSBpKSAqIDQgKyAoY29tcGFjdCA/IDkgOiAxMik7CgkgICAgICAgICAgICAvLyBUaGUgdG9wLWxlZnQgbW9zdCBwb2ludCBvZiB0aGlzIGxheWVyIGlzIDxsb3csIGxvdz4gKG5vdCBpbmNsdWRpbmcgYWxpZ25tZW50IGxpbmVzKQoJICAgICAgICAgICAgdmFyIGxvdyA9IGkgKiAyOwoJICAgICAgICAgICAgLy8gVGhlIGJvdHRvbS1yaWdodCBtb3N0IHBvaW50IG9mIHRoaXMgbGF5ZXIgaXMgPGhpZ2gsIGhpZ2g+IChub3QgaW5jbHVkaW5nIGFsaWdubWVudCBsaW5lcykKCSAgICAgICAgICAgIHZhciBoaWdoID0gYmFzZU1hdHJpeFNpemUgLSAxIC0gbG93OwoJICAgICAgICAgICAgLy8gV2UgcHVsbCBiaXRzIGZyb20gdGhlIHR3byAyIHggcm93U2l6ZSBjb2x1bW5zIGFuZCB0d28gcm93U2l6ZSB4IDIgcm93cwoJICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCByb3dTaXplOyBqKyspIHsKCSAgICAgICAgICAgICAgICB2YXIgY29sdW1uT2Zmc2V0ID0gaiAqIDI7CgkgICAgICAgICAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCAyOyBrKyspIHsKCSAgICAgICAgICAgICAgICAgICAgLy8gbGVmdCBjb2x1bW4KCSAgICAgICAgICAgICAgICAgICAgcmF3Yml0c1tyb3dPZmZzZXQgKyBjb2x1bW5PZmZzZXQgKyBrXSA9CgkgICAgICAgICAgICAgICAgICAgICAgICBtYXRyaXguZ2V0KGFsaWdubWVudE1hcFtsb3cgKyBrXSwgYWxpZ25tZW50TWFwW2xvdyArIGpdKTsKCSAgICAgICAgICAgICAgICAgICAgLy8gYm90dG9tIHJvdwoJICAgICAgICAgICAgICAgICAgICByYXdiaXRzW3Jvd09mZnNldCArIDIgKiByb3dTaXplICsgY29sdW1uT2Zmc2V0ICsga10gPQoJICAgICAgICAgICAgICAgICAgICAgICAgbWF0cml4LmdldChhbGlnbm1lbnRNYXBbbG93ICsgal0sIGFsaWdubWVudE1hcFtoaWdoIC0ga10pOwoJICAgICAgICAgICAgICAgICAgICAvLyByaWdodCBjb2x1bW4KCSAgICAgICAgICAgICAgICAgICAgcmF3Yml0c1tyb3dPZmZzZXQgKyA0ICogcm93U2l6ZSArIGNvbHVtbk9mZnNldCArIGtdID0KCSAgICAgICAgICAgICAgICAgICAgICAgIG1hdHJpeC5nZXQoYWxpZ25tZW50TWFwW2hpZ2ggLSBrXSwgYWxpZ25tZW50TWFwW2hpZ2ggLSBqXSk7CgkgICAgICAgICAgICAgICAgICAgIC8vIHRvcCByb3cKCSAgICAgICAgICAgICAgICAgICAgcmF3Yml0c1tyb3dPZmZzZXQgKyA2ICogcm93U2l6ZSArIGNvbHVtbk9mZnNldCArIGtdID0KCSAgICAgICAgICAgICAgICAgICAgICAgIG1hdHJpeC5nZXQoYWxpZ25tZW50TWFwW2hpZ2ggLSBqXSwgYWxpZ25tZW50TWFwW2xvdyArIGtdKTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICByb3dPZmZzZXQgKz0gcm93U2l6ZSAqIDg7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHJhd2JpdHM7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBSZWFkcyBhIGNvZGUgb2YgZ2l2ZW4gbGVuZ3RoIGFuZCBhdCBnaXZlbiBpbmRleCBpbiBhbiBhcnJheSBvZiBiaXRzCgkgICAgICovCgkgICAgRGVjb2Rlci5yZWFkQ29kZSA9IGZ1bmN0aW9uIChyYXdiaXRzLCBzdGFydEluZGV4LCBsZW5ndGgpIHsKCSAgICAgICAgdmFyIHJlcyA9IDA7CgkgICAgICAgIGZvciAodmFyIGkgPSBzdGFydEluZGV4OyBpIDwgc3RhcnRJbmRleCArIGxlbmd0aDsgaSsrKSB7CgkgICAgICAgICAgICByZXMgPDw9IDE7CgkgICAgICAgICAgICBpZiAocmF3Yml0c1tpXSkgewoJICAgICAgICAgICAgICAgIHJlcyB8PSAweDAxOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHJldHVybiByZXM7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBSZWFkcyBhIGNvZGUgb2YgbGVuZ3RoIDggaW4gYW4gYXJyYXkgb2YgYml0cywgcGFkZGluZyB3aXRoIHplcm9zCgkgICAgICovCgkgICAgRGVjb2Rlci5yZWFkQnl0ZSA9IGZ1bmN0aW9uIChyYXdiaXRzLCBzdGFydEluZGV4KSB7CgkgICAgICAgIHZhciBuID0gcmF3Yml0cy5sZW5ndGggLSBzdGFydEluZGV4OwoJICAgICAgICBpZiAobiA+PSA4KSB7CgkgICAgICAgICAgICByZXR1cm4gRGVjb2Rlci5yZWFkQ29kZShyYXdiaXRzLCBzdGFydEluZGV4LCA4KTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gRGVjb2Rlci5yZWFkQ29kZShyYXdiaXRzLCBzdGFydEluZGV4LCBuKSA8PCAoOCAtIG4pOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogUGFja3MgYSBiaXQgYXJyYXkgaW50byBieXRlcywgbW9zdCBzaWduaWZpY2FudCBiaXQgZmlyc3QKCSAgICAgKi8KCSAgICBEZWNvZGVyLmNvbnZlcnRCb29sQXJyYXlUb0J5dGVBcnJheSA9IGZ1bmN0aW9uIChib29sQXJyKSB7CgkgICAgICAgIHZhciBieXRlQXJyID0gbmV3IFVpbnQ4QXJyYXkoKGJvb2xBcnIubGVuZ3RoICsgNykgLyA4KTsKCSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBieXRlQXJyLmxlbmd0aDsgaSsrKSB7CgkgICAgICAgICAgICBieXRlQXJyW2ldID0gRGVjb2Rlci5yZWFkQnl0ZShib29sQXJyLCA4ICogaSk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIGJ5dGVBcnI7CgkgICAgfTsKCSAgICBEZWNvZGVyLnByb3RvdHlwZS50b3RhbEJpdHNJbkxheWVyID0gZnVuY3Rpb24gKGxheWVycywgY29tcGFjdCkgewoJICAgICAgICByZXR1cm4gKChjb21wYWN0ID8gODggOiAxMTIpICsgMTYgKiBsYXllcnMpICogbGF5ZXJzOwoJICAgIH07CgkgICAgRGVjb2Rlci5VUFBFUl9UQUJMRSA9IFsKCSAgICAgICAgJ0NUUkxfUFMnLCAnICcsICdBJywgJ0InLCAnQycsICdEJywgJ0UnLCAnRicsICdHJywgJ0gnLCAnSScsICdKJywgJ0snLCAnTCcsICdNJywgJ04nLCAnTycsICdQJywKCSAgICAgICAgJ1EnLCAnUicsICdTJywgJ1QnLCAnVScsICdWJywgJ1cnLCAnWCcsICdZJywgJ1onLCAnQ1RSTF9MTCcsICdDVFJMX01MJywgJ0NUUkxfREwnLCAnQ1RSTF9CUycKCSAgICBdOwoJICAgIERlY29kZXIuTE9XRVJfVEFCTEUgPSBbCgkgICAgICAgICdDVFJMX1BTJywgJyAnLCAnYScsICdiJywgJ2MnLCAnZCcsICdlJywgJ2YnLCAnZycsICdoJywgJ2knLCAnaicsICdrJywgJ2wnLCAnbScsICduJywgJ28nLCAncCcsCgkgICAgICAgICdxJywgJ3InLCAncycsICd0JywgJ3UnLCAndicsICd3JywgJ3gnLCAneScsICd6JywgJ0NUUkxfVVMnLCAnQ1RSTF9NTCcsICdDVFJMX0RMJywgJ0NUUkxfQlMnCgkgICAgXTsKCSAgICBEZWNvZGVyLk1JWEVEX1RBQkxFID0gWwoJICAgICAgICAvLyBNb2R1bGUgcGFyc2UgZmFpbGVkOiBPY3RhbCBsaXRlcmFsIGluIHN0cmljdCBtb2RlICg1MDoyOSkKCSAgICAgICAgLy8gc28gbnVtYmVyIHN0cmluZyB3ZXJlIHNjYXBlZAoJICAgICAgICAnQ1RSTF9QUycsICcgJywgJ1xcMScsICdcXDInLCAnXFwzJywgJ1xcNCcsICdcXDUnLCAnXFw2JywgJ1xcNycsICdcYicsICdcdCcsICdcbicsCgkgICAgICAgICdcXDEzJywgJ1xmJywgJ1xyJywgJ1xcMzMnLCAnXFwzNCcsICdcXDM1JywgJ1xcMzYnLCAnXFwzNycsICdAJywgJ1xcJywgJ14nLCAnXycsCgkgICAgICAgICdgJywgJ3wnLCAnficsICdcXDE3NycsICdDVFJMX0xMJywgJ0NUUkxfVUwnLCAnQ1RSTF9QTCcsICdDVFJMX0JTJwoJICAgIF07CgkgICAgRGVjb2Rlci5QVU5DVF9UQUJMRSA9IFsKCSAgICAgICAgJycsICdccicsICdcclxuJywgJy4gJywgJywgJywgJzogJywgJyEnLCAnIicsICcjJywgJyQnLCAnJScsICcmJywgJ1wnJywgJygnLCAnKScsCgkgICAgICAgICcqJywgJysnLCAnLCcsICctJywgJy4nLCAnLycsICc6JywgJzsnLCAnPCcsICc9JywgJz4nLCAnPycsICdbJywgJ10nLCAneycsICd9JywgJ0NUUkxfVUwnCgkgICAgXTsKCSAgICBEZWNvZGVyLkRJR0lUX1RBQkxFID0gWwoJICAgICAgICAnQ1RSTF9QUycsICcgJywgJzAnLCAnMScsICcyJywgJzMnLCAnNCcsICc1JywgJzYnLCAnNycsICc4JywgJzknLCAnLCcsICcuJywgJ0NUUkxfVUwnLCAnQ1RSTF9VUycKCSAgICBdOwoJICAgIHJldHVybiBEZWNvZGVyOwoJfSgpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IERlY29kZXI7CgoJfSk7CgoJdmFyIE1hdGhVdGlsc18xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJLyoKCSAqIENvcHlyaWdodCAyMDEyIFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgkvKm5hbWVzcGFjZSBjb20uZ29vZ2xlLnp4aW5nLmNvbW1vbi5kZXRlY3RvciB7Ki8KCS8qKgoJICogR2VuZXJhbCBtYXRoLXJlbGF0ZWQgYW5kIG51bWVyaWMgdXRpbGl0eSBmdW5jdGlvbnMuCgkgKi8KCXZhciBNYXRoVXRpbHMgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgZnVuY3Rpb24gTWF0aFV0aWxzKCkgewoJICAgIH0KCSAgICAvKioKCSAgICAgKiBFbmRzIHVwIGJlaW5nIGEgYml0IGZhc3RlciB0aGFuIHtAbGluayBNYXRoI3JvdW5kKGZsb2F0KX0uIFRoaXMgbWVyZWx5IHJvdW5kcyBpdHMKCSAgICAgKiBhcmd1bWVudCB0byB0aGUgbmVhcmVzdCBpbnQsIHdoZXJlIHguNSByb3VuZHMgdXAgdG8geCsxLiBTZW1hbnRpY3Mgb2YgdGhpcyBzaG9ydGN1dAoJICAgICAqIGRpZmZlciBzbGlnaHRseSBmcm9tIHtAbGluayBNYXRoI3JvdW5kKGZsb2F0KX0gaW4gdGhhdCBoYWxmIHJvdW5kcyBkb3duIGZvciBuZWdhdGl2ZQoJICAgICAqIHZhbHVlcy4gLTIuNSByb3VuZHMgdG8gLTMsIG5vdCAtMi4gRm9yIHB1cnBvc2VzIGhlcmUgaXQgbWFrZXMgbm8gZGlmZmVyZW5jZS4KCSAgICAgKgoJICAgICAqIEBwYXJhbSBkIHJlYWwgdmFsdWUgdG8gcm91bmQKCSAgICAgKiBAcmV0dXJuIG5lYXJlc3Qge0Bjb2RlIGludH0KCSAgICAgKi8KCSAgICBNYXRoVXRpbHMucm91bmQgPSBmdW5jdGlvbiAoZCAvKmZsb2F0Ki8pIHsKCSAgICAgICAgaWYgKE5hTiA9PT0gZCkKCSAgICAgICAgICAgIHJldHVybiAwOwoJICAgICAgICBpZiAoZCA8PSBOdW1iZXIuTUlOX1NBRkVfSU5URUdFUikKCSAgICAgICAgICAgIHJldHVybiBOdW1iZXIuTUlOX1NBRkVfSU5URUdFUjsKCSAgICAgICAgaWYgKGQgPj0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpCgkgICAgICAgICAgICByZXR1cm4gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7CgkgICAgICAgIHJldHVybiAvKihpbnQpICovIChkICsgKGQgPCAwLjAgPyAtMC41IDogMC41KSkgfCAwOwoJICAgIH07CgkgICAgLy8gVFlQRVNDUklQVFBPUlQ6IG1heWJlIHJlbW92ZSByb3VuZCBtZXRob2QgYW5kIGNhbGwgZGlyZWN0bHkgTWF0aC5yb3VuZCwgaXQgbG9va3MgbGlrZSBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgZm9yIGpzCgkgICAgLyoqCgkgICAgICogQHBhcmFtIGFYIHBvaW50IEEgeCBjb29yZGluYXRlCgkgICAgICogQHBhcmFtIGFZIHBvaW50IEEgeSBjb29yZGluYXRlCgkgICAgICogQHBhcmFtIGJYIHBvaW50IEIgeCBjb29yZGluYXRlCgkgICAgICogQHBhcmFtIGJZIHBvaW50IEIgeSBjb29yZGluYXRlCgkgICAgICogQHJldHVybiBFdWNsaWRlYW4gZGlzdGFuY2UgYmV0d2VlbiBwb2ludHMgQSBhbmQgQgoJICAgICAqLwoJICAgIE1hdGhVdGlscy5kaXN0YW5jZSA9IGZ1bmN0aW9uIChhWCAvKmZsb2F0fGludCovLCBhWSAvKmZsb2F0fGludCovLCBiWCAvKmZsb2F0fGludCovLCBiWSAvKmZsb2F0fGludCovKSB7CgkgICAgICAgIHZhciB4RGlmZiA9IGFYIC0gYlg7CgkgICAgICAgIHZhciB5RGlmZiA9IGFZIC0gYlk7CgkgICAgICAgIHJldHVybiAvKihmbG9hdCkgKi8gTWF0aC5zcXJ0KHhEaWZmICogeERpZmYgKyB5RGlmZiAqIHlEaWZmKTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEBwYXJhbSBhWCBwb2ludCBBIHggY29vcmRpbmF0ZQoJICAgICAqIEBwYXJhbSBhWSBwb2ludCBBIHkgY29vcmRpbmF0ZQoJICAgICAqIEBwYXJhbSBiWCBwb2ludCBCIHggY29vcmRpbmF0ZQoJICAgICAqIEBwYXJhbSBiWSBwb2ludCBCIHkgY29vcmRpbmF0ZQoJICAgICAqIEByZXR1cm4gRXVjbGlkZWFuIGRpc3RhbmNlIGJldHdlZW4gcG9pbnRzIEEgYW5kIEIKCSAgICAgKi8KCSAgICAvLyBwdWJsaWMgc3RhdGljIGRpc3RhbmNlKGFYOiBudW1iZXIgLyppbnQqLywgYVk6IG51bWJlciAvKmludCovLCBiWDogbnVtYmVyIC8qaW50Ki8sIGJZOiBudW1iZXIgLyppbnQqLyk6IGZsb2F0IHsKCSAgICAvLyAgIGNvbnN0IHhEaWZmID0gYVggLSBiWAoJICAgIC8vICAgY29uc3QgeURpZmYgPSBhWSAtIGJZCgkgICAgLy8gICByZXR1cm4gKGZsb2F0KSBNYXRoLnNxcnQoeERpZmYgKiB4RGlmZiArIHlEaWZmICogeURpZmYpOwoJICAgIC8vIH0KCSAgICAvKioKCSAgICAgKiBAcGFyYW0gYXJyYXkgdmFsdWVzIHRvIHN1bQoJICAgICAqIEByZXR1cm4gc3VtIG9mIHZhbHVlcyBpbiBhcnJheQoJICAgICAqLwoJICAgIE1hdGhVdGlscy5zdW0gPSBmdW5jdGlvbiAoYXJyYXkpIHsKCSAgICAgICAgdmFyIGNvdW50ID0gMDsKCSAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aF8xID0gYXJyYXkubGVuZ3RoOyBpICE9PSBsZW5ndGhfMTsgaSsrKSB7CgkgICAgICAgICAgICB2YXIgYSA9IGFycmF5W2ldOwoJICAgICAgICAgICAgY291bnQgKz0gYTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gY291bnQ7CgkgICAgfTsKCSAgICByZXR1cm4gTWF0aFV0aWxzOwoJfSgpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IE1hdGhVdGlsczsKCgl9KTsKCgl2YXIgRmxvYXRfMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgkvKioKCSAqIFBvbnlmaWxsIGZvciBKYXZhJ3MgRmxvYXQgY2xhc3MuCgkgKi8KCXZhciBGbG9hdCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBGbG9hdCgpIHsKCSAgICB9CgkgICAgLyoqCgkgICAgICogU2luY1RTIGhhcyBubyBkaWZmZXJlbmNlIGJldHdlZW4gaW50IGFuZCBmbG9hdCwgdGhlcmUncyBhbGwgbnVtYmVycywKCSAgICAgKiB0aGlzIGlzIHVzZWQgb25seSB0byBwb2x5ZmlsbCBKYXZhIGNvZGUuCgkgICAgICovCgkgICAgRmxvYXQuZmxvYXRUb0ludEJpdHMgPSBmdW5jdGlvbiAoZikgewoJICAgICAgICByZXR1cm4gZjsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIFRoZSBmbG9hdCBtYXggdmFsdWUgaW4gSlMgaXMgdGhlIG51bWJlciBtYXggdmFsdWUuCgkgICAgICovCgkgICAgRmxvYXQuTUFYX1ZBTFVFID0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7CgkgICAgcmV0dXJuIEZsb2F0OwoJfSgpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IEZsb2F0OwoKCX0pOwoKCXZhciBSZXN1bHRQb2ludF8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJLyoKCSAqIENvcHlyaWdodCAyMDA3IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgkvKm5hbWVzcGFjZSBjb20uZ29vZ2xlLnp4aW5nIHsqLwoKCgkvKioKCSAqIDxwPkVuY2Fwc3VsYXRlcyBhIHBvaW50IG9mIGludGVyZXN0IGluIGFuIGltYWdlIGNvbnRhaW5pbmcgYSBiYXJjb2RlLiBUeXBpY2FsbHksIHRoaXMKCSAqIHdvdWxkIGJlIHRoZSBsb2NhdGlvbiBvZiBhIGZpbmRlciBwYXR0ZXJuIG9yIHRoZSBjb3JuZXIgb2YgdGhlIGJhcmNvZGUsIGZvciBleGFtcGxlLjwvcD4KCSAqCgkgKiBAYXV0aG9yIFNlYW4gT3dlbgoJICovCgl2YXIgUmVzdWx0UG9pbnQgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgZnVuY3Rpb24gUmVzdWx0UG9pbnQoeCwgeSkgewoJICAgICAgICB0aGlzLnggPSB4OwoJICAgICAgICB0aGlzLnkgPSB5OwoJICAgIH0KCSAgICBSZXN1bHRQb2ludC5wcm90b3R5cGUuZ2V0WCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMueDsKCSAgICB9OwoJICAgIFJlc3VsdFBvaW50LnByb3RvdHlwZS5nZXRZID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy55OwoJICAgIH07CgkgICAgLypAT3ZlcnJpZGUqLwoJICAgIFJlc3VsdFBvaW50LnByb3RvdHlwZS5lcXVhbHMgPSBmdW5jdGlvbiAob3RoZXIpIHsKCSAgICAgICAgaWYgKG90aGVyIGluc3RhbmNlb2YgUmVzdWx0UG9pbnQpIHsKCSAgICAgICAgICAgIHZhciBvdGhlclBvaW50ID0gb3RoZXI7CgkgICAgICAgICAgICByZXR1cm4gdGhpcy54ID09PSBvdGhlclBvaW50LnggJiYgdGhpcy55ID09PSBvdGhlclBvaW50Lnk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIGZhbHNlOwoJICAgIH07CgkgICAgLypAT3ZlcnJpZGUqLwoJICAgIFJlc3VsdFBvaW50LnByb3RvdHlwZS5oYXNoQ29kZSA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIDMxICogRmxvYXRfMS5kZWZhdWx0LmZsb2F0VG9JbnRCaXRzKHRoaXMueCkgKyBGbG9hdF8xLmRlZmF1bHQuZmxvYXRUb0ludEJpdHModGhpcy55KTsKCSAgICB9OwoJICAgIC8qQE92ZXJyaWRlKi8KCSAgICBSZXN1bHRQb2ludC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiAnKCcgKyB0aGlzLnggKyAnLCcgKyB0aGlzLnkgKyAnKSc7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBPcmRlcnMgYW4gYXJyYXkgb2YgdGhyZWUgUmVzdWx0UG9pbnRzIGluIGFuIG9yZGVyIFtBLEIsQ10gc3VjaCB0aGF0IEFCIGlzIGxlc3MgdGhhbiBBQwoJICAgICAqIGFuZCBCQyBpcyBsZXNzIHRoYW4gQUMsIGFuZCB0aGUgYW5nbGUgYmV0d2VlbiBCQyBhbmQgQkEgaXMgbGVzcyB0aGFuIDE4MCBkZWdyZWVzLgoJICAgICAqCgkgICAgICogQHBhcmFtIHBhdHRlcm5zIGFycmF5IG9mIHRocmVlIHtAY29kZSBSZXN1bHRQb2ludH0gdG8gb3JkZXIKCSAgICAgKi8KCSAgICBSZXN1bHRQb2ludC5vcmRlckJlc3RQYXR0ZXJucyA9IGZ1bmN0aW9uIChwYXR0ZXJucykgewoJICAgICAgICAvLyBGaW5kIGRpc3RhbmNlcyBiZXR3ZWVuIHBhdHRlcm4gY2VudGVycwoJICAgICAgICB2YXIgemVyb09uZURpc3RhbmNlID0gdGhpcy5kaXN0YW5jZShwYXR0ZXJuc1swXSwgcGF0dGVybnNbMV0pOwoJICAgICAgICB2YXIgb25lVHdvRGlzdGFuY2UgPSB0aGlzLmRpc3RhbmNlKHBhdHRlcm5zWzFdLCBwYXR0ZXJuc1syXSk7CgkgICAgICAgIHZhciB6ZXJvVHdvRGlzdGFuY2UgPSB0aGlzLmRpc3RhbmNlKHBhdHRlcm5zWzBdLCBwYXR0ZXJuc1syXSk7CgkgICAgICAgIHZhciBwb2ludEE7CgkgICAgICAgIHZhciBwb2ludEI7CgkgICAgICAgIHZhciBwb2ludEM7CgkgICAgICAgIC8vIEFzc3VtZSBvbmUgY2xvc2VzdCB0byBvdGhlciB0d28gaXMgQjsgQSBhbmQgQyB3aWxsIGp1c3QgYmUgZ3Vlc3NlcyBhdCBmaXJzdAoJICAgICAgICBpZiAob25lVHdvRGlzdGFuY2UgPj0gemVyb09uZURpc3RhbmNlICYmIG9uZVR3b0Rpc3RhbmNlID49IHplcm9Ud29EaXN0YW5jZSkgewoJICAgICAgICAgICAgcG9pbnRCID0gcGF0dGVybnNbMF07CgkgICAgICAgICAgICBwb2ludEEgPSBwYXR0ZXJuc1sxXTsKCSAgICAgICAgICAgIHBvaW50QyA9IHBhdHRlcm5zWzJdOwoJICAgICAgICB9CgkgICAgICAgIGVsc2UgaWYgKHplcm9Ud29EaXN0YW5jZSA+PSBvbmVUd29EaXN0YW5jZSAmJiB6ZXJvVHdvRGlzdGFuY2UgPj0gemVyb09uZURpc3RhbmNlKSB7CgkgICAgICAgICAgICBwb2ludEIgPSBwYXR0ZXJuc1sxXTsKCSAgICAgICAgICAgIHBvaW50QSA9IHBhdHRlcm5zWzBdOwoJICAgICAgICAgICAgcG9pbnRDID0gcGF0dGVybnNbMl07CgkgICAgICAgIH0KCSAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICBwb2ludEIgPSBwYXR0ZXJuc1syXTsKCSAgICAgICAgICAgIHBvaW50QSA9IHBhdHRlcm5zWzBdOwoJICAgICAgICAgICAgcG9pbnRDID0gcGF0dGVybnNbMV07CgkgICAgICAgIH0KCSAgICAgICAgLy8gVXNlIGNyb3NzIHByb2R1Y3QgdG8gZmlndXJlIG91dCB3aGV0aGVyIEEgYW5kIEMgYXJlIGNvcnJlY3Qgb3IgZmxpcHBlZC4KCSAgICAgICAgLy8gVGhpcyBhc2tzIHdoZXRoZXIgQkMgeCBCQSBoYXMgYSBwb3NpdGl2ZSB6IGNvbXBvbmVudCwgd2hpY2ggaXMgdGhlIGFycmFuZ2VtZW50CgkgICAgICAgIC8vIHdlIHdhbnQgZm9yIEEsIEIsIEMuIElmIGl0J3MgbmVnYXRpdmUsIHRoZW4gd2UndmUgZ290IGl0IGZsaXBwZWQgYXJvdW5kIGFuZAoJICAgICAgICAvLyBzaG91bGQgc3dhcCBBIGFuZCBDLgoJICAgICAgICBpZiAodGhpcy5jcm9zc1Byb2R1Y3RaKHBvaW50QSwgcG9pbnRCLCBwb2ludEMpIDwgMC4wKSB7CgkgICAgICAgICAgICB2YXIgdGVtcCA9IHBvaW50QTsKCSAgICAgICAgICAgIHBvaW50QSA9IHBvaW50QzsKCSAgICAgICAgICAgIHBvaW50QyA9IHRlbXA7CgkgICAgICAgIH0KCSAgICAgICAgcGF0dGVybnNbMF0gPSBwb2ludEE7CgkgICAgICAgIHBhdHRlcm5zWzFdID0gcG9pbnRCOwoJICAgICAgICBwYXR0ZXJuc1syXSA9IHBvaW50QzsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEBwYXJhbSBwYXR0ZXJuMSBmaXJzdCBwYXR0ZXJuCgkgICAgICogQHBhcmFtIHBhdHRlcm4yIHNlY29uZCBwYXR0ZXJuCgkgICAgICogQHJldHVybiBkaXN0YW5jZSBiZXR3ZWVuIHR3byBwb2ludHMKCSAgICAgKi8KCSAgICBSZXN1bHRQb2ludC5kaXN0YW5jZSA9IGZ1bmN0aW9uIChwYXR0ZXJuMSwgcGF0dGVybjIpIHsKCSAgICAgICAgcmV0dXJuIE1hdGhVdGlsc18xLmRlZmF1bHQuZGlzdGFuY2UocGF0dGVybjEueCwgcGF0dGVybjEueSwgcGF0dGVybjIueCwgcGF0dGVybjIueSk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBSZXR1cm5zIHRoZSB6IGNvbXBvbmVudCBvZiB0aGUgY3Jvc3MgcHJvZHVjdCBiZXR3ZWVuIHZlY3RvcnMgQkMgYW5kIEJBLgoJICAgICAqLwoJICAgIFJlc3VsdFBvaW50LmNyb3NzUHJvZHVjdFogPSBmdW5jdGlvbiAocG9pbnRBLCBwb2ludEIsIHBvaW50QykgewoJICAgICAgICB2YXIgYlggPSBwb2ludEIueDsKCSAgICAgICAgdmFyIGJZID0gcG9pbnRCLnk7CgkgICAgICAgIHJldHVybiAoKHBvaW50Qy54IC0gYlgpICogKHBvaW50QS55IC0gYlkpKSAtICgocG9pbnRDLnkgLSBiWSkgKiAocG9pbnRBLnggLSBiWCkpOwoJICAgIH07CgkgICAgcmV0dXJuIFJlc3VsdFBvaW50OwoJfSgpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IFJlc3VsdFBvaW50OwoKCX0pOwoKCXZhciBEZXRlY3RvclJlc3VsdF8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJLyoKCSAqIENvcHlyaWdodCAyMDA3IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgkvKioKCSAqIDxwPkVuY2Fwc3VsYXRlcyB0aGUgcmVzdWx0IG9mIGRldGVjdGluZyBhIGJhcmNvZGUgaW4gYW4gaW1hZ2UuIFRoaXMgaW5jbHVkZXMgdGhlIHJhdwoJICogbWF0cml4IG9mIGJsYWNrL3doaXRlIHBpeGVscyBjb3JyZXNwb25kaW5nIHRvIHRoZSBiYXJjb2RlLCBhbmQgcG9zc2libHkgcG9pbnRzIG9mIGludGVyZXN0CgkgKiBpbiB0aGUgaW1hZ2UsIGxpa2UgdGhlIGxvY2F0aW9uIG9mIGZpbmRlciBwYXR0ZXJucyBvciBjb3JuZXJzIG9mIHRoZSBiYXJjb2RlIGluIHRoZSBpbWFnZS48L3A+CgkgKgoJICogQGF1dGhvciBTZWFuIE93ZW4KCSAqLwoJdmFyIERldGVjdG9yUmVzdWx0ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIGZ1bmN0aW9uIERldGVjdG9yUmVzdWx0KGJpdHMsIHBvaW50cykgewoJICAgICAgICB0aGlzLmJpdHMgPSBiaXRzOwoJICAgICAgICB0aGlzLnBvaW50cyA9IHBvaW50czsKCSAgICB9CgkgICAgRGV0ZWN0b3JSZXN1bHQucHJvdG90eXBlLmdldEJpdHMgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmJpdHM7CgkgICAgfTsKCSAgICBEZXRlY3RvclJlc3VsdC5wcm90b3R5cGUuZ2V0UG9pbnRzID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5wb2ludHM7CgkgICAgfTsKCSAgICByZXR1cm4gRGV0ZWN0b3JSZXN1bHQ7Cgl9KCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gRGV0ZWN0b3JSZXN1bHQ7CgoJfSk7CgoJdmFyIEF6dGVjRGV0ZWN0b3JSZXN1bHRfMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCS8qCgkgKiBDb3B5cmlnaHQgMjAxMCBaWGluZyBhdXRob3JzCgkgKgoJICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSAqCgkgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJICoKCSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJICovCgl2YXIgX19leHRlbmRzID0gKGNvbW1vbmpzR2xvYmFsICYmIGNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHsKCSAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwKCSAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHwKCSAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9OwoJICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICB9OwoJICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH0KCSAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpOwoJICAgIH07Cgl9KSgpOwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCgkvKioKCSAqIDxwPkV4dGVuZHMge0BsaW5rIERldGVjdG9yUmVzdWx0fSB3aXRoIG1vcmUgaW5mb3JtYXRpb24gc3BlY2lmaWMgdG8gdGhlIEF6dGVjIGZvcm1hdCwKCSAqIGxpa2UgdGhlIG51bWJlciBvZiBsYXllcnMgYW5kIHdoZXRoZXIgaXQncyBjb21wYWN0LjwvcD4KCSAqCgkgKiBAYXV0aG9yIFNlYW4gT3dlbgoJICovCgl2YXIgQXp0ZWNEZXRlY3RvclJlc3VsdCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHsKCSAgICBfX2V4dGVuZHMoQXp0ZWNEZXRlY3RvclJlc3VsdCwgX3N1cGVyKTsKCSAgICBmdW5jdGlvbiBBenRlY0RldGVjdG9yUmVzdWx0KGJpdHMsIHBvaW50cywgY29tcGFjdCwgbmJEYXRhYmxvY2tzLCBuYkxheWVycykgewoJICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBiaXRzLCBwb2ludHMpIHx8IHRoaXM7CgkgICAgICAgIF90aGlzLmNvbXBhY3QgPSBjb21wYWN0OwoJICAgICAgICBfdGhpcy5uYkRhdGFibG9ja3MgPSBuYkRhdGFibG9ja3M7CgkgICAgICAgIF90aGlzLm5iTGF5ZXJzID0gbmJMYXllcnM7CgkgICAgICAgIHJldHVybiBfdGhpczsKCSAgICB9CgkgICAgQXp0ZWNEZXRlY3RvclJlc3VsdC5wcm90b3R5cGUuZ2V0TmJMYXllcnMgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLm5iTGF5ZXJzOwoJICAgIH07CgkgICAgQXp0ZWNEZXRlY3RvclJlc3VsdC5wcm90b3R5cGUuZ2V0TmJEYXRhYmxvY2tzID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5uYkRhdGFibG9ja3M7CgkgICAgfTsKCSAgICBBenRlY0RldGVjdG9yUmVzdWx0LnByb3RvdHlwZS5pc0NvbXBhY3QgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmNvbXBhY3Q7CgkgICAgfTsKCSAgICByZXR1cm4gQXp0ZWNEZXRlY3RvclJlc3VsdDsKCX0oRGV0ZWN0b3JSZXN1bHRfMS5kZWZhdWx0KSk7CglleHBvcnRzLmRlZmF1bHQgPSBBenRlY0RldGVjdG9yUmVzdWx0OwoKCX0pOwoKCXZhciBXaGl0ZVJlY3RhbmdsZURldGVjdG9yXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CgkvKgoJICogQ29weXJpZ2h0IDIwMTAgWlhpbmcgYXV0aG9ycwoJICoKCSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkgKgoJICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSAqCgkgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSAqLwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCS8qbmFtZXNwYWNlIGNvbS5nb29nbGUuenhpbmcuY29tbW9uLmRldGVjdG9yIHsqLwoKCgoJLyoqCgkgKiA8cD4KCSAqIERldGVjdHMgYSBjYW5kaWRhdGUgYmFyY29kZS1saWtlIHJlY3Rhbmd1bGFyIHJlZ2lvbiB3aXRoaW4gYW4gaW1hZ2UuIEl0CgkgKiBzdGFydHMgYXJvdW5kIHRoZSBjZW50ZXIgb2YgdGhlIGltYWdlLCBpbmNyZWFzZXMgdGhlIHNpemUgb2YgdGhlIGNhbmRpZGF0ZQoJICogcmVnaW9uIHVudGlsIGl0IGZpbmRzIGEgd2hpdGUgcmVjdGFuZ3VsYXIgcmVnaW9uLiBCeSBrZWVwaW5nIHRyYWNrIG9mIHRoZQoJICogbGFzdCBibGFjayBwb2ludHMgaXQgZW5jb3VudGVyZWQsIGl0IGRldGVybWluZXMgdGhlIGNvcm5lcnMgb2YgdGhlIGJhcmNvZGUuCgkgKiA8L3A+CgkgKgoJICogQGF1dGhvciBEYXZpZCBPbGl2aWVyCgkgKi8KCXZhciBXaGl0ZVJlY3RhbmdsZURldGVjdG9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIC8vIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIGltYWdlOiBCaXRNYXRyaXgpIC8qdGhyb3dzIE5vdEZvdW5kRXhjZXB0aW9uKi8gewoJICAgIC8vICAgdGhpcyhpbWFnZSwgSU5JVF9TSVpFLCBpbWFnZS5nZXRXaWR0aCgpIC8gMiwgaW1hZ2UuZ2V0SGVpZ2h0KCkgLyAyKQoJICAgIC8vIH0KCSAgICAvKioKCSAgICAgKiBAcGFyYW0gaW1hZ2UgYmFyY29kZSBpbWFnZSB0byBmaW5kIGEgcmVjdGFuZ2xlIGluCgkgICAgICogQHBhcmFtIGluaXRTaXplIGluaXRpYWwgc2l6ZSBvZiBzZWFyY2ggYXJlYSBhcm91bmQgY2VudGVyCgkgICAgICogQHBhcmFtIHggeCBwb3NpdGlvbiBvZiBzZWFyY2ggY2VudGVyCgkgICAgICogQHBhcmFtIHkgeSBwb3NpdGlvbiBvZiBzZWFyY2ggY2VudGVyCgkgICAgICogQHRocm93cyBOb3RGb3VuZEV4Y2VwdGlvbiBpZiBpbWFnZSBpcyB0b28gc21hbGwgdG8gYWNjb21tb2RhdGUge0Bjb2RlIGluaXRTaXplfQoJICAgICAqLwoJICAgIGZ1bmN0aW9uIFdoaXRlUmVjdGFuZ2xlRGV0ZWN0b3IoaW1hZ2UsIGluaXRTaXplIC8qaW50Ki8sIHggLyppbnQqLywgeSAvKmludCovKSB7CgkgICAgICAgIHRoaXMuaW1hZ2UgPSBpbWFnZTsKCSAgICAgICAgdGhpcy5oZWlnaHQgPSBpbWFnZS5nZXRIZWlnaHQoKTsKCSAgICAgICAgdGhpcy53aWR0aCA9IGltYWdlLmdldFdpZHRoKCk7CgkgICAgICAgIGlmICh1bmRlZmluZWQgPT09IGluaXRTaXplIHx8IG51bGwgPT09IGluaXRTaXplKSB7CgkgICAgICAgICAgICBpbml0U2l6ZSA9IFdoaXRlUmVjdGFuZ2xlRGV0ZWN0b3IuSU5JVF9TSVpFOwoJICAgICAgICB9CgkgICAgICAgIGlmICh1bmRlZmluZWQgPT09IHggfHwgbnVsbCA9PT0geCkgewoJICAgICAgICAgICAgeCA9IGltYWdlLmdldFdpZHRoKCkgLyAyIHwgMDsKCSAgICAgICAgfQoJICAgICAgICBpZiAodW5kZWZpbmVkID09PSB5IHx8IG51bGwgPT09IHkpIHsKCSAgICAgICAgICAgIHkgPSBpbWFnZS5nZXRIZWlnaHQoKSAvIDIgfCAwOwoJICAgICAgICB9CgkgICAgICAgIHZhciBoYWxmc2l6ZSA9IGluaXRTaXplIC8gMiB8IDA7CgkgICAgICAgIHRoaXMubGVmdEluaXQgPSB4IC0gaGFsZnNpemU7CgkgICAgICAgIHRoaXMucmlnaHRJbml0ID0geCArIGhhbGZzaXplOwoJICAgICAgICB0aGlzLnVwSW5pdCA9IHkgLSBoYWxmc2l6ZTsKCSAgICAgICAgdGhpcy5kb3duSW5pdCA9IHkgKyBoYWxmc2l6ZTsKCSAgICAgICAgaWYgKHRoaXMudXBJbml0IDwgMCB8fCB0aGlzLmxlZnRJbml0IDwgMCB8fCB0aGlzLmRvd25Jbml0ID49IHRoaXMuaGVpZ2h0IHx8IHRoaXMucmlnaHRJbml0ID49IHRoaXMud2lkdGgpIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgfQoJICAgIH0KCSAgICAvKioKCSAgICAgKiA8cD4KCSAgICAgKiBEZXRlY3RzIGEgY2FuZGlkYXRlIGJhcmNvZGUtbGlrZSByZWN0YW5ndWxhciByZWdpb24gd2l0aGluIGFuIGltYWdlLiBJdAoJICAgICAqIHN0YXJ0cyBhcm91bmQgdGhlIGNlbnRlciBvZiB0aGUgaW1hZ2UsIGluY3JlYXNlcyB0aGUgc2l6ZSBvZiB0aGUgY2FuZGlkYXRlCgkgICAgICogcmVnaW9uIHVudGlsIGl0IGZpbmRzIGEgd2hpdGUgcmVjdGFuZ3VsYXIgcmVnaW9uLgoJICAgICAqIDwvcD4KCSAgICAgKgoJICAgICAqIEByZXR1cm4ge0BsaW5rIFJlc3VsdFBvaW50fVtdIGRlc2NyaWJpbmcgdGhlIGNvcm5lcnMgb2YgdGhlIHJlY3Rhbmd1bGFyCgkgICAgICogICAgICAgICByZWdpb24uIFRoZSBmaXJzdCBhbmQgbGFzdCBwb2ludHMgYXJlIG9wcG9zZWQgb24gdGhlIGRpYWdvbmFsLCBhcwoJICAgICAqICAgICAgICAgYXJlIHRoZSBzZWNvbmQgYW5kIHRoaXJkLiBUaGUgZmlyc3QgcG9pbnQgd2lsbCBiZSB0aGUgdG9wbW9zdAoJICAgICAqICAgICAgICAgcG9pbnQgYW5kIHRoZSBsYXN0LCB0aGUgYm90dG9tbW9zdC4gVGhlIHNlY29uZCBwb2ludCB3aWxsIGJlCgkgICAgICogICAgICAgICBsZWZ0bW9zdCBhbmQgdGhlIHRoaXJkLCB0aGUgcmlnaHRtb3N0CgkgICAgICogQHRocm93cyBOb3RGb3VuZEV4Y2VwdGlvbiBpZiBubyBEYXRhIE1hdHJpeCBDb2RlIGNhbiBiZSBmb3VuZAoJICAgICAqLwoJICAgIFdoaXRlUmVjdGFuZ2xlRGV0ZWN0b3IucHJvdG90eXBlLmRldGVjdCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgdmFyIGxlZnQgPSB0aGlzLmxlZnRJbml0OwoJICAgICAgICB2YXIgcmlnaHQgPSB0aGlzLnJpZ2h0SW5pdDsKCSAgICAgICAgdmFyIHVwID0gdGhpcy51cEluaXQ7CgkgICAgICAgIHZhciBkb3duID0gdGhpcy5kb3duSW5pdDsKCSAgICAgICAgdmFyIHNpemVFeGNlZWRlZCA9IGZhbHNlOwoJICAgICAgICB2YXIgYUJsYWNrUG9pbnRGb3VuZE9uQm9yZGVyID0gdHJ1ZTsKCSAgICAgICAgdmFyIGF0TGVhc3RPbmVCbGFja1BvaW50Rm91bmRPbkJvcmRlciA9IGZhbHNlOwoJICAgICAgICB2YXIgYXRMZWFzdE9uZUJsYWNrUG9pbnRGb3VuZE9uUmlnaHQgPSBmYWxzZTsKCSAgICAgICAgdmFyIGF0TGVhc3RPbmVCbGFja1BvaW50Rm91bmRPbkJvdHRvbSA9IGZhbHNlOwoJICAgICAgICB2YXIgYXRMZWFzdE9uZUJsYWNrUG9pbnRGb3VuZE9uTGVmdCA9IGZhbHNlOwoJICAgICAgICB2YXIgYXRMZWFzdE9uZUJsYWNrUG9pbnRGb3VuZE9uVG9wID0gZmFsc2U7CgkgICAgICAgIHZhciB3aWR0aCA9IHRoaXMud2lkdGg7CgkgICAgICAgIHZhciBoZWlnaHQgPSB0aGlzLmhlaWdodDsKCSAgICAgICAgd2hpbGUgKGFCbGFja1BvaW50Rm91bmRPbkJvcmRlcikgewoJICAgICAgICAgICAgYUJsYWNrUG9pbnRGb3VuZE9uQm9yZGVyID0gZmFsc2U7CgkgICAgICAgICAgICAvLyAuLi4uLgoJICAgICAgICAgICAgLy8gLiAgIHwKCSAgICAgICAgICAgIC8vIC4uLi4uCgkgICAgICAgICAgICB2YXIgcmlnaHRCb3JkZXJOb3RXaGl0ZSA9IHRydWU7CgkgICAgICAgICAgICB3aGlsZSAoKHJpZ2h0Qm9yZGVyTm90V2hpdGUgfHwgIWF0TGVhc3RPbmVCbGFja1BvaW50Rm91bmRPblJpZ2h0KSAmJiByaWdodCA8IHdpZHRoKSB7CgkgICAgICAgICAgICAgICAgcmlnaHRCb3JkZXJOb3RXaGl0ZSA9IHRoaXMuY29udGFpbnNCbGFja1BvaW50KHVwLCBkb3duLCByaWdodCwgZmFsc2UpOwoJICAgICAgICAgICAgICAgIGlmIChyaWdodEJvcmRlck5vdFdoaXRlKSB7CgkgICAgICAgICAgICAgICAgICAgIHJpZ2h0Kys7CgkgICAgICAgICAgICAgICAgICAgIGFCbGFja1BvaW50Rm91bmRPbkJvcmRlciA9IHRydWU7CgkgICAgICAgICAgICAgICAgICAgIGF0TGVhc3RPbmVCbGFja1BvaW50Rm91bmRPblJpZ2h0ID0gdHJ1ZTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgZWxzZSBpZiAoIWF0TGVhc3RPbmVCbGFja1BvaW50Rm91bmRPblJpZ2h0KSB7CgkgICAgICAgICAgICAgICAgICAgIHJpZ2h0Kys7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgaWYgKHJpZ2h0ID49IHdpZHRoKSB7CgkgICAgICAgICAgICAgICAgc2l6ZUV4Y2VlZGVkID0gdHJ1ZTsKCSAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIC8vIC4uLi4uCgkgICAgICAgICAgICAvLyAuICAgLgoJICAgICAgICAgICAgLy8gLl9fXy4KCSAgICAgICAgICAgIHZhciBib3R0b21Cb3JkZXJOb3RXaGl0ZSA9IHRydWU7CgkgICAgICAgICAgICB3aGlsZSAoKGJvdHRvbUJvcmRlck5vdFdoaXRlIHx8ICFhdExlYXN0T25lQmxhY2tQb2ludEZvdW5kT25Cb3R0b20pICYmIGRvd24gPCBoZWlnaHQpIHsKCSAgICAgICAgICAgICAgICBib3R0b21Cb3JkZXJOb3RXaGl0ZSA9IHRoaXMuY29udGFpbnNCbGFja1BvaW50KGxlZnQsIHJpZ2h0LCBkb3duLCB0cnVlKTsKCSAgICAgICAgICAgICAgICBpZiAoYm90dG9tQm9yZGVyTm90V2hpdGUpIHsKCSAgICAgICAgICAgICAgICAgICAgZG93bisrOwoJICAgICAgICAgICAgICAgICAgICBhQmxhY2tQb2ludEZvdW5kT25Cb3JkZXIgPSB0cnVlOwoJICAgICAgICAgICAgICAgICAgICBhdExlYXN0T25lQmxhY2tQb2ludEZvdW5kT25Cb3R0b20gPSB0cnVlOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBlbHNlIGlmICghYXRMZWFzdE9uZUJsYWNrUG9pbnRGb3VuZE9uQm90dG9tKSB7CgkgICAgICAgICAgICAgICAgICAgIGRvd24rKzsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBpZiAoZG93biA+PSBoZWlnaHQpIHsKCSAgICAgICAgICAgICAgICBzaXplRXhjZWVkZWQgPSB0cnVlOwoJICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgLy8gLi4uLi4KCSAgICAgICAgICAgIC8vIHwgICAuCgkgICAgICAgICAgICAvLyAuLi4uLgoJICAgICAgICAgICAgdmFyIGxlZnRCb3JkZXJOb3RXaGl0ZSA9IHRydWU7CgkgICAgICAgICAgICB3aGlsZSAoKGxlZnRCb3JkZXJOb3RXaGl0ZSB8fCAhYXRMZWFzdE9uZUJsYWNrUG9pbnRGb3VuZE9uTGVmdCkgJiYgbGVmdCA+PSAwKSB7CgkgICAgICAgICAgICAgICAgbGVmdEJvcmRlck5vdFdoaXRlID0gdGhpcy5jb250YWluc0JsYWNrUG9pbnQodXAsIGRvd24sIGxlZnQsIGZhbHNlKTsKCSAgICAgICAgICAgICAgICBpZiAobGVmdEJvcmRlck5vdFdoaXRlKSB7CgkgICAgICAgICAgICAgICAgICAgIGxlZnQtLTsKCSAgICAgICAgICAgICAgICAgICAgYUJsYWNrUG9pbnRGb3VuZE9uQm9yZGVyID0gdHJ1ZTsKCSAgICAgICAgICAgICAgICAgICAgYXRMZWFzdE9uZUJsYWNrUG9pbnRGb3VuZE9uTGVmdCA9IHRydWU7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFhdExlYXN0T25lQmxhY2tQb2ludEZvdW5kT25MZWZ0KSB7CgkgICAgICAgICAgICAgICAgICAgIGxlZnQtLTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBpZiAobGVmdCA8IDApIHsKCSAgICAgICAgICAgICAgICBzaXplRXhjZWVkZWQgPSB0cnVlOwoJICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgLy8gLl9fXy4KCSAgICAgICAgICAgIC8vIC4gICAuCgkgICAgICAgICAgICAvLyAuLi4uLgoJICAgICAgICAgICAgdmFyIHRvcEJvcmRlck5vdFdoaXRlID0gdHJ1ZTsKCSAgICAgICAgICAgIHdoaWxlICgodG9wQm9yZGVyTm90V2hpdGUgfHwgIWF0TGVhc3RPbmVCbGFja1BvaW50Rm91bmRPblRvcCkgJiYgdXAgPj0gMCkgewoJICAgICAgICAgICAgICAgIHRvcEJvcmRlck5vdFdoaXRlID0gdGhpcy5jb250YWluc0JsYWNrUG9pbnQobGVmdCwgcmlnaHQsIHVwLCB0cnVlKTsKCSAgICAgICAgICAgICAgICBpZiAodG9wQm9yZGVyTm90V2hpdGUpIHsKCSAgICAgICAgICAgICAgICAgICAgdXAtLTsKCSAgICAgICAgICAgICAgICAgICAgYUJsYWNrUG9pbnRGb3VuZE9uQm9yZGVyID0gdHJ1ZTsKCSAgICAgICAgICAgICAgICAgICAgYXRMZWFzdE9uZUJsYWNrUG9pbnRGb3VuZE9uVG9wID0gdHJ1ZTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgZWxzZSBpZiAoIWF0TGVhc3RPbmVCbGFja1BvaW50Rm91bmRPblRvcCkgewoJICAgICAgICAgICAgICAgICAgICB1cC0tOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGlmICh1cCA8IDApIHsKCSAgICAgICAgICAgICAgICBzaXplRXhjZWVkZWQgPSB0cnVlOwoJICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgaWYgKGFCbGFja1BvaW50Rm91bmRPbkJvcmRlcikgewoJICAgICAgICAgICAgICAgIGF0TGVhc3RPbmVCbGFja1BvaW50Rm91bmRPbkJvcmRlciA9IHRydWU7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgaWYgKCFzaXplRXhjZWVkZWQgJiYgYXRMZWFzdE9uZUJsYWNrUG9pbnRGb3VuZE9uQm9yZGVyKSB7CgkgICAgICAgICAgICB2YXIgbWF4U2l6ZSA9IHJpZ2h0IC0gbGVmdDsKCSAgICAgICAgICAgIHZhciB6ID0gbnVsbDsKCSAgICAgICAgICAgIGZvciAodmFyIGkgPSAxOyB6ID09PSBudWxsICYmIGkgPCBtYXhTaXplOyBpKyspIHsKCSAgICAgICAgICAgICAgICB6ID0gdGhpcy5nZXRCbGFja1BvaW50T25TZWdtZW50KGxlZnQsIGRvd24gLSBpLCBsZWZ0ICsgaSwgZG93bik7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBpZiAoeiA9PSBudWxsKSB7CgkgICAgICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgdmFyIHQgPSBudWxsOwoJICAgICAgICAgICAgLy8gZ28gZG93biByaWdodAoJICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IHQgPT09IG51bGwgJiYgaSA8IG1heFNpemU7IGkrKykgewoJICAgICAgICAgICAgICAgIHQgPSB0aGlzLmdldEJsYWNrUG9pbnRPblNlZ21lbnQobGVmdCwgdXAgKyBpLCBsZWZ0ICsgaSwgdXApOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgaWYgKHQgPT0gbnVsbCkgewoJICAgICAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHZhciB4ID0gbnVsbDsKCSAgICAgICAgICAgIC8vIGdvIGRvd24gbGVmdAoJICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IHggPT09IG51bGwgJiYgaSA8IG1heFNpemU7IGkrKykgewoJICAgICAgICAgICAgICAgIHggPSB0aGlzLmdldEJsYWNrUG9pbnRPblNlZ21lbnQocmlnaHQsIHVwICsgaSwgcmlnaHQgLSBpLCB1cCk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBpZiAoeCA9PSBudWxsKSB7CgkgICAgICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgdmFyIHkgPSBudWxsOwoJICAgICAgICAgICAgLy8gZ28gdXAgbGVmdAoJICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IHkgPT09IG51bGwgJiYgaSA8IG1heFNpemU7IGkrKykgewoJICAgICAgICAgICAgICAgIHkgPSB0aGlzLmdldEJsYWNrUG9pbnRPblNlZ21lbnQocmlnaHQsIGRvd24gLSBpLCByaWdodCAtIGksIGRvd24pOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgaWYgKHkgPT0gbnVsbCkgewoJICAgICAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHJldHVybiB0aGlzLmNlbnRlckVkZ2VzKHksIHosIHgsIHQpOwoJICAgICAgICB9CgkgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgfTsKCSAgICBXaGl0ZVJlY3RhbmdsZURldGVjdG9yLnByb3RvdHlwZS5nZXRCbGFja1BvaW50T25TZWdtZW50ID0gZnVuY3Rpb24gKGFYIC8qZmxvYXQqLywgYVkgLypmbG9hdCovLCBiWCAvKmZsb2F0Ki8sIGJZIC8qZmxvYXQqLykgewoJICAgICAgICB2YXIgZGlzdCA9IE1hdGhVdGlsc18xLmRlZmF1bHQucm91bmQoTWF0aFV0aWxzXzEuZGVmYXVsdC5kaXN0YW5jZShhWCwgYVksIGJYLCBiWSkpOwoJICAgICAgICB2YXIgeFN0ZXAgPSAoYlggLSBhWCkgLyBkaXN0OwoJICAgICAgICB2YXIgeVN0ZXAgPSAoYlkgLSBhWSkgLyBkaXN0OwoJICAgICAgICB2YXIgaW1hZ2UgPSB0aGlzLmltYWdlOwoJICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRpc3Q7IGkrKykgewoJICAgICAgICAgICAgdmFyIHggPSBNYXRoVXRpbHNfMS5kZWZhdWx0LnJvdW5kKGFYICsgaSAqIHhTdGVwKTsKCSAgICAgICAgICAgIHZhciB5ID0gTWF0aFV0aWxzXzEuZGVmYXVsdC5yb3VuZChhWSArIGkgKiB5U3RlcCk7CgkgICAgICAgICAgICBpZiAoaW1hZ2UuZ2V0KHgsIHkpKSB7CgkgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZXN1bHRQb2ludF8xLmRlZmF1bHQoeCwgeSk7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIG51bGw7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiByZWNlbnRlcnMgdGhlIHBvaW50cyBvZiBhIGNvbnN0YW50IGRpc3RhbmNlIHRvd2FyZHMgdGhlIGNlbnRlcgoJICAgICAqCgkgICAgICogQHBhcmFtIHkgYm90dG9tIG1vc3QgcG9pbnQKCSAgICAgKiBAcGFyYW0geiBsZWZ0IG1vc3QgcG9pbnQKCSAgICAgKiBAcGFyYW0geCByaWdodCBtb3N0IHBvaW50CgkgICAgICogQHBhcmFtIHQgdG9wIG1vc3QgcG9pbnQKCSAgICAgKiBAcmV0dXJuIHtAbGluayBSZXN1bHRQb2ludH1bXSBkZXNjcmliaW5nIHRoZSBjb3JuZXJzIG9mIHRoZSByZWN0YW5ndWxhcgoJICAgICAqICAgICAgICAgcmVnaW9uLiBUaGUgZmlyc3QgYW5kIGxhc3QgcG9pbnRzIGFyZSBvcHBvc2VkIG9uIHRoZSBkaWFnb25hbCwgYXMKCSAgICAgKiAgICAgICAgIGFyZSB0aGUgc2Vjb25kIGFuZCB0aGlyZC4gVGhlIGZpcnN0IHBvaW50IHdpbGwgYmUgdGhlIHRvcG1vc3QKCSAgICAgKiAgICAgICAgIHBvaW50IGFuZCB0aGUgbGFzdCwgdGhlIGJvdHRvbW1vc3QuIFRoZSBzZWNvbmQgcG9pbnQgd2lsbCBiZQoJICAgICAqICAgICAgICAgbGVmdG1vc3QgYW5kIHRoZSB0aGlyZCwgdGhlIHJpZ2h0bW9zdAoJICAgICAqLwoJICAgIFdoaXRlUmVjdGFuZ2xlRGV0ZWN0b3IucHJvdG90eXBlLmNlbnRlckVkZ2VzID0gZnVuY3Rpb24gKHksIHosIHgsIHQpIHsKCSAgICAgICAgLy8KCSAgICAgICAgLy8gICAgICAgdCAgICAgICAgICAgIHQKCSAgICAgICAgLy8gIHogICAgICAgICAgICAgICAgICAgICAgeAoJICAgICAgICAvLyAgICAgICAgeCAgICBPUiAgICB6CgkgICAgICAgIC8vICAgeSAgICAgICAgICAgICAgICAgICAgeQoJICAgICAgICAvLwoJICAgICAgICB2YXIgeWkgPSB5LmdldFgoKTsKCSAgICAgICAgdmFyIHlqID0geS5nZXRZKCk7CgkgICAgICAgIHZhciB6aSA9IHouZ2V0WCgpOwoJICAgICAgICB2YXIgemogPSB6LmdldFkoKTsKCSAgICAgICAgdmFyIHhpID0geC5nZXRYKCk7CgkgICAgICAgIHZhciB4aiA9IHguZ2V0WSgpOwoJICAgICAgICB2YXIgdGkgPSB0LmdldFgoKTsKCSAgICAgICAgdmFyIHRqID0gdC5nZXRZKCk7CgkgICAgICAgIHZhciBDT1JSID0gV2hpdGVSZWN0YW5nbGVEZXRlY3Rvci5DT1JSOwoJICAgICAgICBpZiAoeWkgPCB0aGlzLndpZHRoIC8gMi4wKSB7CgkgICAgICAgICAgICByZXR1cm4gWwoJICAgICAgICAgICAgICAgIG5ldyBSZXN1bHRQb2ludF8xLmRlZmF1bHQodGkgLSBDT1JSLCB0aiArIENPUlIpLAoJICAgICAgICAgICAgICAgIG5ldyBSZXN1bHRQb2ludF8xLmRlZmF1bHQoemkgKyBDT1JSLCB6aiArIENPUlIpLAoJICAgICAgICAgICAgICAgIG5ldyBSZXN1bHRQb2ludF8xLmRlZmF1bHQoeGkgLSBDT1JSLCB4aiAtIENPUlIpLAoJICAgICAgICAgICAgICAgIG5ldyBSZXN1bHRQb2ludF8xLmRlZmF1bHQoeWkgKyBDT1JSLCB5aiAtIENPUlIpCgkgICAgICAgICAgICBdOwoJICAgICAgICB9CgkgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgcmV0dXJuIFsKCSAgICAgICAgICAgICAgICBuZXcgUmVzdWx0UG9pbnRfMS5kZWZhdWx0KHRpICsgQ09SUiwgdGogKyBDT1JSKSwKCSAgICAgICAgICAgICAgICBuZXcgUmVzdWx0UG9pbnRfMS5kZWZhdWx0KHppICsgQ09SUiwgemogLSBDT1JSKSwKCSAgICAgICAgICAgICAgICBuZXcgUmVzdWx0UG9pbnRfMS5kZWZhdWx0KHhpIC0gQ09SUiwgeGogKyBDT1JSKSwKCSAgICAgICAgICAgICAgICBuZXcgUmVzdWx0UG9pbnRfMS5kZWZhdWx0KHlpIC0gQ09SUiwgeWogLSBDT1JSKQoJICAgICAgICAgICAgXTsKCSAgICAgICAgfQoJICAgIH07CgkgICAgLyoqCgkgICAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgc2VnbWVudCBjb250YWlucyBhIGJsYWNrIHBvaW50CgkgICAgICoKCSAgICAgKiBAcGFyYW0gYSAgICAgICAgICBtaW4gdmFsdWUgb2YgdGhlIHNjYW5uZWQgY29vcmRpbmF0ZQoJICAgICAqIEBwYXJhbSBiICAgICAgICAgIG1heCB2YWx1ZSBvZiB0aGUgc2Nhbm5lZCBjb29yZGluYXRlCgkgICAgICogQHBhcmFtIGZpeGVkICAgICAgdmFsdWUgb2YgZml4ZWQgY29vcmRpbmF0ZQoJICAgICAqIEBwYXJhbSBob3Jpem9udGFsIHNldCB0byB0cnVlIGlmIHNjYW4gbXVzdCBiZSBob3Jpem9udGFsLCBmYWxzZSBpZiB2ZXJ0aWNhbAoJICAgICAqIEByZXR1cm4gdHJ1ZSBpZiBhIGJsYWNrIHBvaW50IGhhcyBiZWVuIGZvdW5kLCBlbHNlIGZhbHNlLgoJICAgICAqLwoJICAgIFdoaXRlUmVjdGFuZ2xlRGV0ZWN0b3IucHJvdG90eXBlLmNvbnRhaW5zQmxhY2tQb2ludCA9IGZ1bmN0aW9uIChhIC8qaW50Ki8sIGIgLyppbnQqLywgZml4ZWQgLyppbnQqLywgaG9yaXpvbnRhbCkgewoJICAgICAgICB2YXIgaW1hZ2UgPSB0aGlzLmltYWdlOwoJICAgICAgICBpZiAoaG9yaXpvbnRhbCkgewoJICAgICAgICAgICAgZm9yICh2YXIgeCA9IGE7IHggPD0gYjsgeCsrKSB7CgkgICAgICAgICAgICAgICAgaWYgKGltYWdlLmdldCh4LCBmaXhlZCkpIHsKCSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgZm9yICh2YXIgeSA9IGE7IHkgPD0gYjsgeSsrKSB7CgkgICAgICAgICAgICAgICAgaWYgKGltYWdlLmdldChmaXhlZCwgeSkpIHsKCSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBmYWxzZTsKCSAgICB9OwoJICAgIFdoaXRlUmVjdGFuZ2xlRGV0ZWN0b3IuSU5JVF9TSVpFID0gMTA7CgkgICAgV2hpdGVSZWN0YW5nbGVEZXRlY3Rvci5DT1JSID0gMTsKCSAgICByZXR1cm4gV2hpdGVSZWN0YW5nbGVEZXRlY3RvcjsKCX0oKSk7CglleHBvcnRzLmRlZmF1bHQgPSBXaGl0ZVJlY3RhbmdsZURldGVjdG9yOwoKCX0pOwoKCXZhciBHcmlkU2FtcGxlcl8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJLyoKCSAqIENvcHlyaWdodCAyMDA3IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgoJLyoqCgkgKiBJbXBsZW1lbnRhdGlvbnMgb2YgdGhpcyBjbGFzcyBjYW4sIGdpdmVuIGxvY2F0aW9ucyBvZiBmaW5kZXIgcGF0dGVybnMgZm9yIGEgUVIgY29kZSBpbiBhbgoJICogaW1hZ2UsIHNhbXBsZSB0aGUgcmlnaHQgcG9pbnRzIGluIHRoZSBpbWFnZSB0byByZWNvbnN0cnVjdCB0aGUgUVIgY29kZSwgYWNjb3VudGluZyBmb3IKCSAqIHBlcnNwZWN0aXZlIGRpc3RvcnRpb24uIEl0IGlzIGFic3RyYWN0ZWQgc2luY2UgaXQgaXMgcmVsYXRpdmVseSBleHBlbnNpdmUgYW5kIHNob3VsZCBiZSBhbGxvd2VkCgkgKiB0byB0YWtlIGFkdmFudGFnZSBvZiBwbGF0Zm9ybS1zcGVjaWZpYyBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb25zLCBsaWtlIFN1bidzIEphdmEgQWR2YW5jZWQKCSAqIEltYWdpbmcgbGlicmFyeSwgYnV0IHdoaWNoIG1heSBub3QgYmUgYXZhaWxhYmxlIGluIG90aGVyIGVudmlyb25tZW50cyBzdWNoIGFzIEoyTUUsIGFuZCB2aWNlCgkgKiB2ZXJzYS4KCSAqCgkgKiBUaGUgaW1wbGVtZW50YXRpb24gdXNlZCBjYW4gYmUgY29udHJvbGxlZCBieSBjYWxsaW5nIHtAbGluayAjc2V0R3JpZFNhbXBsZXIoR3JpZFNhbXBsZXIpfQoJICogd2l0aCBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHdoaWNoIGltcGxlbWVudHMgdGhpcyBpbnRlcmZhY2UuCgkgKgoJICogQGF1dGhvciBTZWFuIE93ZW4KCSAqLwoJdmFyIEdyaWRTYW1wbGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIGZ1bmN0aW9uIEdyaWRTYW1wbGVyKCkgewoJICAgIH0KCSAgICAvKioKCSAgICAgKiA8cD5DaGVja3MgYSBzZXQgb2YgcG9pbnRzIHRoYXQgaGF2ZSBiZWVuIHRyYW5zZm9ybWVkIHRvIHNhbXBsZSBwb2ludHMgb24gYW4gaW1hZ2UgYWdhaW5zdAoJICAgICAqIHRoZSBpbWFnZSdzIGRpbWVuc2lvbnMgdG8gc2VlIGlmIHRoZSBwb2ludCBhcmUgZXZlbiB3aXRoaW4gdGhlIGltYWdlLjwvcD4KCSAgICAgKgoJICAgICAqIDxwPlRoaXMgbWV0aG9kIHdpbGwgYWN0dWFsbHkgIm51ZGdlIiB0aGUgZW5kcG9pbnRzIGJhY2sgb250byB0aGUgaW1hZ2UgaWYgdGhleSBhcmUgZm91bmQgdG8gYmUKCSAgICAgKiBiYXJlbHkgKGxlc3MgdGhhbiAxIHBpeGVsKSBvZmYgdGhlIGltYWdlLiBUaGlzIGFjY291bnRzIGZvciBpbXBlcmZlY3QgZGV0ZWN0aW9uIG9mIGZpbmRlcgoJICAgICAqIHBhdHRlcm5zIGluIGFuIGltYWdlIHdoZXJlIHRoZSBRUiBDb2RlIHJ1bnMgYWxsIHRoZSB3YXkgdG8gdGhlIGltYWdlIGJvcmRlci48L3A+CgkgICAgICoKCSAgICAgKiA8cD5Gb3IgZWZmaWNpZW5jeSwgdGhlIG1ldGhvZCB3aWxsIGNoZWNrIHBvaW50cyBmcm9tIGVpdGhlciBlbmQgb2YgdGhlIGxpbmUgdW50aWwgb25lIGlzIGZvdW5kCgkgICAgICogdG8gYmUgd2l0aGluIHRoZSBpbWFnZS4gQmVjYXVzZSB0aGUgc2V0IG9mIHBvaW50cyBhcmUgYXNzdW1lZCB0byBiZSBsaW5lYXIsIHRoaXMgaXMgdmFsaWQuPC9wPgoJICAgICAqCgkgICAgICogQHBhcmFtIGltYWdlIGltYWdlIGludG8gd2hpY2ggdGhlIHBvaW50cyBzaG91bGQgbWFwCgkgICAgICogQHBhcmFtIHBvaW50cyBhY3R1YWwgcG9pbnRzIGluIHgxLHkxLC4uLix4bix5biBmb3JtCgkgICAgICogQHRocm93cyBOb3RGb3VuZEV4Y2VwdGlvbiBpZiBhbiBlbmRwb2ludCBpcyBsaWVzIG91dHNpZGUgdGhlIGltYWdlIGJvdW5kYXJpZXMKCSAgICAgKi8KCSAgICBHcmlkU2FtcGxlci5jaGVja0FuZE51ZGdlUG9pbnRzID0gZnVuY3Rpb24gKGltYWdlLCBwb2ludHMpIHsKCSAgICAgICAgdmFyIHdpZHRoID0gaW1hZ2UuZ2V0V2lkdGgoKTsKCSAgICAgICAgdmFyIGhlaWdodCA9IGltYWdlLmdldEhlaWdodCgpOwoJICAgICAgICAvLyBDaGVjayBhbmQgbnVkZ2UgcG9pbnRzIGZyb20gc3RhcnQgdW50aWwgd2Ugc2VlIHNvbWUgdGhhdCBhcmUgT0s6CgkgICAgICAgIHZhciBudWRnZWQgPSB0cnVlOwoJICAgICAgICBmb3IgKHZhciBvZmZzZXQgPSAwOyBvZmZzZXQgPCBwb2ludHMubGVuZ3RoICYmIG51ZGdlZDsgb2Zmc2V0ICs9IDIpIHsKCSAgICAgICAgICAgIHZhciB4ID0gTWF0aC5mbG9vcihwb2ludHNbb2Zmc2V0XSk7CgkgICAgICAgICAgICB2YXIgeSA9IE1hdGguZmxvb3IocG9pbnRzW29mZnNldCArIDFdKTsKCSAgICAgICAgICAgIGlmICh4IDwgLTEgfHwgeCA+IHdpZHRoIHx8IHkgPCAtMSB8fCB5ID4gaGVpZ2h0KSB7CgkgICAgICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgbnVkZ2VkID0gZmFsc2U7CgkgICAgICAgICAgICBpZiAoeCA9PT0gLTEpIHsKCSAgICAgICAgICAgICAgICBwb2ludHNbb2Zmc2V0XSA9IDAuMDsKCSAgICAgICAgICAgICAgICBudWRnZWQgPSB0cnVlOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZWxzZSBpZiAoeCA9PT0gd2lkdGgpIHsKCSAgICAgICAgICAgICAgICBwb2ludHNbb2Zmc2V0XSA9IHdpZHRoIC0gMTsKCSAgICAgICAgICAgICAgICBudWRnZWQgPSB0cnVlOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgaWYgKHkgPT09IC0xKSB7CgkgICAgICAgICAgICAgICAgcG9pbnRzW29mZnNldCArIDFdID0gMC4wOwoJICAgICAgICAgICAgICAgIG51ZGdlZCA9IHRydWU7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlIGlmICh5ID09PSBoZWlnaHQpIHsKCSAgICAgICAgICAgICAgICBwb2ludHNbb2Zmc2V0ICsgMV0gPSBoZWlnaHQgLSAxOwoJICAgICAgICAgICAgICAgIG51ZGdlZCA9IHRydWU7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgLy8gQ2hlY2sgYW5kIG51ZGdlIHBvaW50cyBmcm9tIGVuZDoKCSAgICAgICAgbnVkZ2VkID0gdHJ1ZTsKCSAgICAgICAgZm9yICh2YXIgb2Zmc2V0ID0gcG9pbnRzLmxlbmd0aCAtIDI7IG9mZnNldCA+PSAwICYmIG51ZGdlZDsgb2Zmc2V0IC09IDIpIHsKCSAgICAgICAgICAgIHZhciB4ID0gTWF0aC5mbG9vcihwb2ludHNbb2Zmc2V0XSk7CgkgICAgICAgICAgICB2YXIgeSA9IE1hdGguZmxvb3IocG9pbnRzW29mZnNldCArIDFdKTsKCSAgICAgICAgICAgIGlmICh4IDwgLTEgfHwgeCA+IHdpZHRoIHx8IHkgPCAtMSB8fCB5ID4gaGVpZ2h0KSB7CgkgICAgICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgbnVkZ2VkID0gZmFsc2U7CgkgICAgICAgICAgICBpZiAoeCA9PT0gLTEpIHsKCSAgICAgICAgICAgICAgICBwb2ludHNbb2Zmc2V0XSA9IDAuMDsKCSAgICAgICAgICAgICAgICBudWRnZWQgPSB0cnVlOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZWxzZSBpZiAoeCA9PT0gd2lkdGgpIHsKCSAgICAgICAgICAgICAgICBwb2ludHNbb2Zmc2V0XSA9IHdpZHRoIC0gMTsKCSAgICAgICAgICAgICAgICBudWRnZWQgPSB0cnVlOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgaWYgKHkgPT09IC0xKSB7CgkgICAgICAgICAgICAgICAgcG9pbnRzW29mZnNldCArIDFdID0gMC4wOwoJICAgICAgICAgICAgICAgIG51ZGdlZCA9IHRydWU7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlIGlmICh5ID09PSBoZWlnaHQpIHsKCSAgICAgICAgICAgICAgICBwb2ludHNbb2Zmc2V0ICsgMV0gPSBoZWlnaHQgLSAxOwoJICAgICAgICAgICAgICAgIG51ZGdlZCA9IHRydWU7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICB9OwoJICAgIHJldHVybiBHcmlkU2FtcGxlcjsKCX0oKSk7CglleHBvcnRzLmRlZmF1bHQgPSBHcmlkU2FtcGxlcjsKCgl9KTsKCgl2YXIgUGVyc3BlY3RpdmVUcmFuc2Zvcm1fMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCS8qCgkgKiBDb3B5cmlnaHQgMjAwNyBaWGluZyBhdXRob3JzCgkgKgoJICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSAqCgkgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJICoKCSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJICovCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJLypuYW1lc3BhY2UgY29tLmdvb2dsZS56eGluZy5jb21tb24geyovCgkvKioKCSAqIDxwPlRoaXMgY2xhc3MgaW1wbGVtZW50cyBhIHBlcnNwZWN0aXZlIHRyYW5zZm9ybSBpbiB0d28gZGltZW5zaW9ucy4gR2l2ZW4gZm91ciBzb3VyY2UgYW5kIGZvdXIKCSAqIGRlc3RpbmF0aW9uIHBvaW50cywgaXQgd2lsbCBjb21wdXRlIHRoZSB0cmFuc2Zvcm1hdGlvbiBpbXBsaWVkIGJldHdlZW4gdGhlbS4gVGhlIGNvZGUgaXMgYmFzZWQKCSAqIGRpcmVjdGx5IHVwb24gc2VjdGlvbiAzLjQuMiBvZiBHZW9yZ2UgV29sYmVyZydzICJEaWdpdGFsIEltYWdlIFdhcnBpbmciOyBzZWUgcGFnZXMgNTQtNTYuPC9wPgoJICoKCSAqIEBhdXRob3IgU2VhbiBPd2VuCgkgKi8KCXZhciBQZXJzcGVjdGl2ZVRyYW5zZm9ybSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBQZXJzcGVjdGl2ZVRyYW5zZm9ybShhMTEgLypmbG9hdCovLCBhMjEgLypmbG9hdCovLCBhMzEgLypmbG9hdCovLCBhMTIgLypmbG9hdCovLCBhMjIgLypmbG9hdCovLCBhMzIgLypmbG9hdCovLCBhMTMgLypmbG9hdCovLCBhMjMgLypmbG9hdCovLCBhMzMgLypmbG9hdCovKSB7CgkgICAgICAgIHRoaXMuYTExID0gYTExOwoJICAgICAgICB0aGlzLmEyMSA9IGEyMTsKCSAgICAgICAgdGhpcy5hMzEgPSBhMzE7CgkgICAgICAgIHRoaXMuYTEyID0gYTEyOwoJICAgICAgICB0aGlzLmEyMiA9IGEyMjsKCSAgICAgICAgdGhpcy5hMzIgPSBhMzI7CgkgICAgICAgIHRoaXMuYTEzID0gYTEzOwoJICAgICAgICB0aGlzLmEyMyA9IGEyMzsKCSAgICAgICAgdGhpcy5hMzMgPSBhMzM7CgkgICAgfQoJICAgIFBlcnNwZWN0aXZlVHJhbnNmb3JtLnF1YWRyaWxhdGVyYWxUb1F1YWRyaWxhdGVyYWwgPSBmdW5jdGlvbiAoeDAgLypmbG9hdCovLCB5MCAvKmZsb2F0Ki8sIHgxIC8qZmxvYXQqLywgeTEgLypmbG9hdCovLCB4MiAvKmZsb2F0Ki8sIHkyIC8qZmxvYXQqLywgeDMgLypmbG9hdCovLCB5MyAvKmZsb2F0Ki8sIHgwcCAvKmZsb2F0Ki8sIHkwcCAvKmZsb2F0Ki8sIHgxcCAvKmZsb2F0Ki8sIHkxcCAvKmZsb2F0Ki8sIHgycCAvKmZsb2F0Ki8sIHkycCAvKmZsb2F0Ki8sIHgzcCAvKmZsb2F0Ki8sIHkzcCAvKmZsb2F0Ki8pIHsKCSAgICAgICAgdmFyIHFUb1MgPSBQZXJzcGVjdGl2ZVRyYW5zZm9ybS5xdWFkcmlsYXRlcmFsVG9TcXVhcmUoeDAsIHkwLCB4MSwgeTEsIHgyLCB5MiwgeDMsIHkzKTsKCSAgICAgICAgdmFyIHNUb1EgPSBQZXJzcGVjdGl2ZVRyYW5zZm9ybS5zcXVhcmVUb1F1YWRyaWxhdGVyYWwoeDBwLCB5MHAsIHgxcCwgeTFwLCB4MnAsIHkycCwgeDNwLCB5M3ApOwoJICAgICAgICByZXR1cm4gc1RvUS50aW1lcyhxVG9TKTsKCSAgICB9OwoJICAgIFBlcnNwZWN0aXZlVHJhbnNmb3JtLnByb3RvdHlwZS50cmFuc2Zvcm1Qb2ludHMgPSBmdW5jdGlvbiAocG9pbnRzKSB7CgkgICAgICAgIHZhciBtYXggPSBwb2ludHMubGVuZ3RoOwoJICAgICAgICB2YXIgYTExID0gdGhpcy5hMTE7CgkgICAgICAgIHZhciBhMTIgPSB0aGlzLmExMjsKCSAgICAgICAgdmFyIGExMyA9IHRoaXMuYTEzOwoJICAgICAgICB2YXIgYTIxID0gdGhpcy5hMjE7CgkgICAgICAgIHZhciBhMjIgPSB0aGlzLmEyMjsKCSAgICAgICAgdmFyIGEyMyA9IHRoaXMuYTIzOwoJICAgICAgICB2YXIgYTMxID0gdGhpcy5hMzE7CgkgICAgICAgIHZhciBhMzIgPSB0aGlzLmEzMjsKCSAgICAgICAgdmFyIGEzMyA9IHRoaXMuYTMzOwoJICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1heDsgaSArPSAyKSB7CgkgICAgICAgICAgICB2YXIgeCA9IHBvaW50c1tpXTsKCSAgICAgICAgICAgIHZhciB5ID0gcG9pbnRzW2kgKyAxXTsKCSAgICAgICAgICAgIHZhciBkZW5vbWluYXRvciA9IGExMyAqIHggKyBhMjMgKiB5ICsgYTMzOwoJICAgICAgICAgICAgcG9pbnRzW2ldID0gKGExMSAqIHggKyBhMjEgKiB5ICsgYTMxKSAvIGRlbm9taW5hdG9yOwoJICAgICAgICAgICAgcG9pbnRzW2kgKyAxXSA9IChhMTIgKiB4ICsgYTIyICogeSArIGEzMikgLyBkZW5vbWluYXRvcjsKCSAgICAgICAgfQoJICAgIH07CgkgICAgUGVyc3BlY3RpdmVUcmFuc2Zvcm0ucHJvdG90eXBlLnRyYW5zZm9ybVBvaW50c1dpdGhWYWx1ZXMgPSBmdW5jdGlvbiAoeFZhbHVlcywgeVZhbHVlcykgewoJICAgICAgICB2YXIgYTExID0gdGhpcy5hMTE7CgkgICAgICAgIHZhciBhMTIgPSB0aGlzLmExMjsKCSAgICAgICAgdmFyIGExMyA9IHRoaXMuYTEzOwoJICAgICAgICB2YXIgYTIxID0gdGhpcy5hMjE7CgkgICAgICAgIHZhciBhMjIgPSB0aGlzLmEyMjsKCSAgICAgICAgdmFyIGEyMyA9IHRoaXMuYTIzOwoJICAgICAgICB2YXIgYTMxID0gdGhpcy5hMzE7CgkgICAgICAgIHZhciBhMzIgPSB0aGlzLmEzMjsKCSAgICAgICAgdmFyIGEzMyA9IHRoaXMuYTMzOwoJICAgICAgICB2YXIgbiA9IHhWYWx1ZXMubGVuZ3RoOwoJICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykgewoJICAgICAgICAgICAgdmFyIHggPSB4VmFsdWVzW2ldOwoJICAgICAgICAgICAgdmFyIHkgPSB5VmFsdWVzW2ldOwoJICAgICAgICAgICAgdmFyIGRlbm9taW5hdG9yID0gYTEzICogeCArIGEyMyAqIHkgKyBhMzM7CgkgICAgICAgICAgICB4VmFsdWVzW2ldID0gKGExMSAqIHggKyBhMjEgKiB5ICsgYTMxKSAvIGRlbm9taW5hdG9yOwoJICAgICAgICAgICAgeVZhbHVlc1tpXSA9IChhMTIgKiB4ICsgYTIyICogeSArIGEzMikgLyBkZW5vbWluYXRvcjsKCSAgICAgICAgfQoJICAgIH07CgkgICAgUGVyc3BlY3RpdmVUcmFuc2Zvcm0uc3F1YXJlVG9RdWFkcmlsYXRlcmFsID0gZnVuY3Rpb24gKHgwIC8qZmxvYXQqLywgeTAgLypmbG9hdCovLCB4MSAvKmZsb2F0Ki8sIHkxIC8qZmxvYXQqLywgeDIgLypmbG9hdCovLCB5MiAvKmZsb2F0Ki8sIHgzIC8qZmxvYXQqLywgeTMgLypmbG9hdCovKSB7CgkgICAgICAgIHZhciBkeDMgPSB4MCAtIHgxICsgeDIgLSB4MzsKCSAgICAgICAgdmFyIGR5MyA9IHkwIC0geTEgKyB5MiAtIHkzOwoJICAgICAgICBpZiAoZHgzID09PSAwLjAgJiYgZHkzID09PSAwLjApIHsKCSAgICAgICAgICAgIC8vIEFmZmluZQoJICAgICAgICAgICAgcmV0dXJuIG5ldyBQZXJzcGVjdGl2ZVRyYW5zZm9ybSh4MSAtIHgwLCB4MiAtIHgxLCB4MCwgeTEgLSB5MCwgeTIgLSB5MSwgeTAsIDAuMCwgMC4wLCAxLjApOwoJICAgICAgICB9CgkgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgdmFyIGR4MSA9IHgxIC0geDI7CgkgICAgICAgICAgICB2YXIgZHgyID0geDMgLSB4MjsKCSAgICAgICAgICAgIHZhciBkeTEgPSB5MSAtIHkyOwoJICAgICAgICAgICAgdmFyIGR5MiA9IHkzIC0geTI7CgkgICAgICAgICAgICB2YXIgZGVub21pbmF0b3IgPSBkeDEgKiBkeTIgLSBkeDIgKiBkeTE7CgkgICAgICAgICAgICB2YXIgYTEzID0gKGR4MyAqIGR5MiAtIGR4MiAqIGR5MykgLyBkZW5vbWluYXRvcjsKCSAgICAgICAgICAgIHZhciBhMjMgPSAoZHgxICogZHkzIC0gZHgzICogZHkxKSAvIGRlbm9taW5hdG9yOwoJICAgICAgICAgICAgcmV0dXJuIG5ldyBQZXJzcGVjdGl2ZVRyYW5zZm9ybSh4MSAtIHgwICsgYTEzICogeDEsIHgzIC0geDAgKyBhMjMgKiB4MywgeDAsIHkxIC0geTAgKyBhMTMgKiB5MSwgeTMgLSB5MCArIGEyMyAqIHkzLCB5MCwgYTEzLCBhMjMsIDEuMCk7CgkgICAgICAgIH0KCSAgICB9OwoJICAgIFBlcnNwZWN0aXZlVHJhbnNmb3JtLnF1YWRyaWxhdGVyYWxUb1NxdWFyZSA9IGZ1bmN0aW9uICh4MCAvKmZsb2F0Ki8sIHkwIC8qZmxvYXQqLywgeDEgLypmbG9hdCovLCB5MSAvKmZsb2F0Ki8sIHgyIC8qZmxvYXQqLywgeTIgLypmbG9hdCovLCB4MyAvKmZsb2F0Ki8sIHkzIC8qZmxvYXQqLykgewoJICAgICAgICAvLyBIZXJlLCB0aGUgYWRqb2ludCBzZXJ2ZXMgYXMgdGhlIGludmVyc2U6CgkgICAgICAgIHJldHVybiBQZXJzcGVjdGl2ZVRyYW5zZm9ybS5zcXVhcmVUb1F1YWRyaWxhdGVyYWwoeDAsIHkwLCB4MSwgeTEsIHgyLCB5MiwgeDMsIHkzKS5idWlsZEFkam9pbnQoKTsKCSAgICB9OwoJICAgIFBlcnNwZWN0aXZlVHJhbnNmb3JtLnByb3RvdHlwZS5idWlsZEFkam9pbnQgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIC8vIEFkam9pbnQgaXMgdGhlIHRyYW5zcG9zZSBvZiB0aGUgY29mYWN0b3IgbWF0cml4OgoJICAgICAgICByZXR1cm4gbmV3IFBlcnNwZWN0aXZlVHJhbnNmb3JtKHRoaXMuYTIyICogdGhpcy5hMzMgLSB0aGlzLmEyMyAqIHRoaXMuYTMyLCB0aGlzLmEyMyAqIHRoaXMuYTMxIC0gdGhpcy5hMjEgKiB0aGlzLmEzMywgdGhpcy5hMjEgKiB0aGlzLmEzMiAtIHRoaXMuYTIyICogdGhpcy5hMzEsIHRoaXMuYTEzICogdGhpcy5hMzIgLSB0aGlzLmExMiAqIHRoaXMuYTMzLCB0aGlzLmExMSAqIHRoaXMuYTMzIC0gdGhpcy5hMTMgKiB0aGlzLmEzMSwgdGhpcy5hMTIgKiB0aGlzLmEzMSAtIHRoaXMuYTExICogdGhpcy5hMzIsIHRoaXMuYTEyICogdGhpcy5hMjMgLSB0aGlzLmExMyAqIHRoaXMuYTIyLCB0aGlzLmExMyAqIHRoaXMuYTIxIC0gdGhpcy5hMTEgKiB0aGlzLmEyMywgdGhpcy5hMTEgKiB0aGlzLmEyMiAtIHRoaXMuYTEyICogdGhpcy5hMjEpOwoJICAgIH07CgkgICAgUGVyc3BlY3RpdmVUcmFuc2Zvcm0ucHJvdG90eXBlLnRpbWVzID0gZnVuY3Rpb24gKG90aGVyKSB7CgkgICAgICAgIHJldHVybiBuZXcgUGVyc3BlY3RpdmVUcmFuc2Zvcm0odGhpcy5hMTEgKiBvdGhlci5hMTEgKyB0aGlzLmEyMSAqIG90aGVyLmExMiArIHRoaXMuYTMxICogb3RoZXIuYTEzLCB0aGlzLmExMSAqIG90aGVyLmEyMSArIHRoaXMuYTIxICogb3RoZXIuYTIyICsgdGhpcy5hMzEgKiBvdGhlci5hMjMsIHRoaXMuYTExICogb3RoZXIuYTMxICsgdGhpcy5hMjEgKiBvdGhlci5hMzIgKyB0aGlzLmEzMSAqIG90aGVyLmEzMywgdGhpcy5hMTIgKiBvdGhlci5hMTEgKyB0aGlzLmEyMiAqIG90aGVyLmExMiArIHRoaXMuYTMyICogb3RoZXIuYTEzLCB0aGlzLmExMiAqIG90aGVyLmEyMSArIHRoaXMuYTIyICogb3RoZXIuYTIyICsgdGhpcy5hMzIgKiBvdGhlci5hMjMsIHRoaXMuYTEyICogb3RoZXIuYTMxICsgdGhpcy5hMjIgKiBvdGhlci5hMzIgKyB0aGlzLmEzMiAqIG90aGVyLmEzMywgdGhpcy5hMTMgKiBvdGhlci5hMTEgKyB0aGlzLmEyMyAqIG90aGVyLmExMiArIHRoaXMuYTMzICogb3RoZXIuYTEzLCB0aGlzLmExMyAqIG90aGVyLmEyMSArIHRoaXMuYTIzICogb3RoZXIuYTIyICsgdGhpcy5hMzMgKiBvdGhlci5hMjMsIHRoaXMuYTEzICogb3RoZXIuYTMxICsgdGhpcy5hMjMgKiBvdGhlci5hMzIgKyB0aGlzLmEzMyAqIG90aGVyLmEzMyk7CgkgICAgfTsKCSAgICByZXR1cm4gUGVyc3BlY3RpdmVUcmFuc2Zvcm07Cgl9KCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gUGVyc3BlY3RpdmVUcmFuc2Zvcm07CgoJfSk7CgoJdmFyIERlZmF1bHRHcmlkU2FtcGxlcl8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJLyoKCSAqIENvcHlyaWdodCAyMDA3IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCXZhciBfX2V4dGVuZHMgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkgewoJICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fAoJICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fAoJICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07CgkgICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgIH07CgkgICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfQoJICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7CgkgICAgfTsKCX0pKCk7CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJLypuYW1lc3BhY2UgY29tLmdvb2dsZS56eGluZy5jb21tb24geyovCgoKCgoJLyoqCgkgKiBAYXV0aG9yIFNlYW4gT3dlbgoJICovCgl2YXIgRGVmYXVsdEdyaWRTYW1wbGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikgewoJICAgIF9fZXh0ZW5kcyhEZWZhdWx0R3JpZFNhbXBsZXIsIF9zdXBlcik7CgkgICAgZnVuY3Rpb24gRGVmYXVsdEdyaWRTYW1wbGVyKCkgewoJICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7CgkgICAgfQoJICAgIC8qQE92ZXJyaWRlKi8KCSAgICBEZWZhdWx0R3JpZFNhbXBsZXIucHJvdG90eXBlLnNhbXBsZUdyaWQgPSBmdW5jdGlvbiAoaW1hZ2UsIGRpbWVuc2lvblggLyppbnQqLywgZGltZW5zaW9uWSAvKmludCovLCBwMVRvWCAvKmZsb2F0Ki8sIHAxVG9ZIC8qZmxvYXQqLywgcDJUb1ggLypmbG9hdCovLCBwMlRvWSAvKmZsb2F0Ki8sIHAzVG9YIC8qZmxvYXQqLywgcDNUb1kgLypmbG9hdCovLCBwNFRvWCAvKmZsb2F0Ki8sIHA0VG9ZIC8qZmxvYXQqLywgcDFGcm9tWCAvKmZsb2F0Ki8sIHAxRnJvbVkgLypmbG9hdCovLCBwMkZyb21YIC8qZmxvYXQqLywgcDJGcm9tWSAvKmZsb2F0Ki8sIHAzRnJvbVggLypmbG9hdCovLCBwM0Zyb21ZIC8qZmxvYXQqLywgcDRGcm9tWCAvKmZsb2F0Ki8sIHA0RnJvbVkgLypmbG9hdCovKSB7CgkgICAgICAgIHZhciB0cmFuc2Zvcm0gPSBQZXJzcGVjdGl2ZVRyYW5zZm9ybV8xLmRlZmF1bHQucXVhZHJpbGF0ZXJhbFRvUXVhZHJpbGF0ZXJhbChwMVRvWCwgcDFUb1ksIHAyVG9YLCBwMlRvWSwgcDNUb1gsIHAzVG9ZLCBwNFRvWCwgcDRUb1ksIHAxRnJvbVgsIHAxRnJvbVksIHAyRnJvbVgsIHAyRnJvbVksIHAzRnJvbVgsIHAzRnJvbVksIHA0RnJvbVgsIHA0RnJvbVkpOwoJICAgICAgICByZXR1cm4gdGhpcy5zYW1wbGVHcmlkV2l0aFRyYW5zZm9ybShpbWFnZSwgZGltZW5zaW9uWCwgZGltZW5zaW9uWSwgdHJhbnNmb3JtKTsKCSAgICB9OwoJICAgIC8qQE92ZXJyaWRlKi8KCSAgICBEZWZhdWx0R3JpZFNhbXBsZXIucHJvdG90eXBlLnNhbXBsZUdyaWRXaXRoVHJhbnNmb3JtID0gZnVuY3Rpb24gKGltYWdlLCBkaW1lbnNpb25YIC8qaW50Ki8sIGRpbWVuc2lvblkgLyppbnQqLywgdHJhbnNmb3JtKSB7CgkgICAgICAgIGlmIChkaW1lbnNpb25YIDw9IDAgfHwgZGltZW5zaW9uWSA8PSAwKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGJpdHMgPSBuZXcgQml0TWF0cml4XzEuZGVmYXVsdChkaW1lbnNpb25YLCBkaW1lbnNpb25ZKTsKCSAgICAgICAgdmFyIHBvaW50cyA9IG5ldyBGbG9hdDMyQXJyYXkoMiAqIGRpbWVuc2lvblgpOwoJICAgICAgICBmb3IgKHZhciB5ID0gMDsgeSA8IGRpbWVuc2lvblk7IHkrKykgewoJICAgICAgICAgICAgdmFyIG1heCA9IHBvaW50cy5sZW5ndGg7CgkgICAgICAgICAgICB2YXIgaVZhbHVlID0geSArIDAuNTsKCSAgICAgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgbWF4OyB4ICs9IDIpIHsKCSAgICAgICAgICAgICAgICBwb2ludHNbeF0gPSAoeCAvIDIpICsgMC41OwoJICAgICAgICAgICAgICAgIHBvaW50c1t4ICsgMV0gPSBpVmFsdWU7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICB0cmFuc2Zvcm0udHJhbnNmb3JtUG9pbnRzKHBvaW50cyk7CgkgICAgICAgICAgICAvLyBRdWljayBjaGVjayB0byBzZWUgaWYgcG9pbnRzIHRyYW5zZm9ybWVkIHRvIHNvbWV0aGluZyBpbnNpZGUgdGhlIGltYWdlCgkgICAgICAgICAgICAvLyBzdWZmaWNpZW50IHRvIGNoZWNrIHRoZSBlbmRwb2ludHMKCSAgICAgICAgICAgIEdyaWRTYW1wbGVyXzEuZGVmYXVsdC5jaGVja0FuZE51ZGdlUG9pbnRzKGltYWdlLCBwb2ludHMpOwoJICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IG1heDsgeCArPSAyKSB7CgkgICAgICAgICAgICAgICAgICAgIGlmIChpbWFnZS5nZXQoTWF0aC5mbG9vcihwb2ludHNbeF0pLCBNYXRoLmZsb29yKHBvaW50c1t4ICsgMV0pKSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgLy8gQmxhY2soLWlzaCkgcGl4ZWwKCSAgICAgICAgICAgICAgICAgICAgICAgIGJpdHMuc2V0KHggLyAyLCB5KTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGNhdGNoIChhaW9vYmUgLyo6IEFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiovKSB7CgkgICAgICAgICAgICAgICAgLy8gVGhpcyBmZWVscyB3cm9uZywgYnV0LCBzb21ldGltZXMgaWYgdGhlIGZpbmRlciBwYXR0ZXJucyBhcmUgbWlzaWRlbnRpZmllZCwgdGhlIHJlc3VsdGluZwoJICAgICAgICAgICAgICAgIC8vIHRyYW5zZm9ybSBnZXRzICJ0d2lzdGVkIiBzdWNoIHRoYXQgaXQgbWFwcyBhIHN0cmFpZ2h0IGxpbmUgb2YgcG9pbnRzIHRvIGEgc2V0IG9mIHBvaW50cwoJICAgICAgICAgICAgICAgIC8vIHdob3NlIGVuZHBvaW50cyBhcmUgaW4gYm91bmRzLCBidXQgb3RoZXJzIGFyZSBub3QuIFRoZXJlIGlzIHByb2JhYmx5IHNvbWUgbWF0aGVtYXRpY2FsCgkgICAgICAgICAgICAgICAgLy8gd2F5IHRvIGRldGVjdCB0aGlzIGFib3V0IHRoZSB0cmFuc2Zvcm1hdGlvbiB0aGF0IEkgZG9uJ3Qga25vdyB5ZXQuCgkgICAgICAgICAgICAgICAgLy8gVGhpcyByZXN1bHRzIGluIGFuIHVnbHkgcnVudGltZSBleGNlcHRpb24gZGVzcGl0ZSBvdXIgY2xldmVyIGNoZWNrcyBhYm92ZSAtLSBjYW4ndCBoYXZlCgkgICAgICAgICAgICAgICAgLy8gdGhhdC4gV2UgY291bGQgY2hlY2sgZWFjaCBwb2ludCdzIGNvb3JkaW5hdGVzIGJ1dCB0aGF0IGZlZWxzIGR1cGxpY2F0aXZlLiBXZSBzZXR0bGUgZm9yCgkgICAgICAgICAgICAgICAgLy8gY2F0Y2hpbmcgYW5kIHdyYXBwaW5nIEFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbi4KCSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIGJpdHM7CgkgICAgfTsKCSAgICByZXR1cm4gRGVmYXVsdEdyaWRTYW1wbGVyOwoJfShHcmlkU2FtcGxlcl8xLmRlZmF1bHQpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IERlZmF1bHRHcmlkU2FtcGxlcjsKCgl9KTsKCgl2YXIgR3JpZFNhbXBsZXJJbnN0YW5jZV8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCgl2YXIgR3JpZFNhbXBsZXJJbnN0YW5jZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBHcmlkU2FtcGxlckluc3RhbmNlKCkgewoJICAgIH0KCSAgICAvKioKCSAgICAgKiBTZXRzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBHcmlkU2FtcGxlciB1c2VkIGJ5IHRoZSBsaWJyYXJ5LiBPbmUgZ2xvYmFsCgkgICAgICogaW5zdGFuY2UgaXMgc3RvcmVkLCB3aGljaCBtYXkgc291bmQgcHJvYmxlbWF0aWMuIEJ1dCwgdGhlIGltcGxlbWVudGF0aW9uIHByb3ZpZGVkCgkgICAgICogb3VnaHQgdG8gYmUgYXBwcm9wcmlhdGUgZm9yIHRoZSBlbnRpcmUgcGxhdGZvcm0sIGFuZCBhbGwgdXNlcyBvZiB0aGlzIGxpYnJhcnkKCSAgICAgKiBpbiB0aGUgd2hvbGUgbGlmZXRpbWUgb2YgdGhlIEpWTS4gRm9yIGluc3RhbmNlLCBhbiBBbmRyb2lkIGFjdGl2aXR5IGNhbiBzd2FwIGluCgkgICAgICogYW4gaW1wbGVtZW50YXRpb24gdGhhdCB0YWtlcyBhZHZhbnRhZ2Ugb2YgbmF0aXZlIHBsYXRmb3JtIGxpYnJhcmllcy4KCSAgICAgKgoJICAgICAqIEBwYXJhbSBuZXdHcmlkU2FtcGxlciBUaGUgcGxhdGZvcm0tc3BlY2lmaWMgb2JqZWN0IHRvIGluc3RhbGwuCgkgICAgICovCgkgICAgR3JpZFNhbXBsZXJJbnN0YW5jZS5zZXRHcmlkU2FtcGxlciA9IGZ1bmN0aW9uIChuZXdHcmlkU2FtcGxlcikgewoJICAgICAgICBHcmlkU2FtcGxlckluc3RhbmNlLmdyaWRTYW1wbGVyID0gbmV3R3JpZFNhbXBsZXI7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcmV0dXJuIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIEdyaWRTYW1wbGVyCgkgICAgICovCgkgICAgR3JpZFNhbXBsZXJJbnN0YW5jZS5nZXRJbnN0YW5jZSA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIEdyaWRTYW1wbGVySW5zdGFuY2UuZ3JpZFNhbXBsZXI7CgkgICAgfTsKCSAgICBHcmlkU2FtcGxlckluc3RhbmNlLmdyaWRTYW1wbGVyID0gbmV3IERlZmF1bHRHcmlkU2FtcGxlcl8xLmRlZmF1bHQoKTsKCSAgICByZXR1cm4gR3JpZFNhbXBsZXJJbnN0YW5jZTsKCX0oKSk7CglleHBvcnRzLmRlZmF1bHQgPSBHcmlkU2FtcGxlckluc3RhbmNlOwoKCX0pOwoKCXZhciBEZXRlY3Rvcl8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJLyoKCSAqIENvcHlyaWdodCAyMDEwIFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CglleHBvcnRzLlBvaW50ID0gdm9pZCAwOwoKCgoKCgoKCgoJdmFyIFBvaW50ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIGZ1bmN0aW9uIFBvaW50KHgsIHkpIHsKCSAgICAgICAgdGhpcy54ID0geDsKCSAgICAgICAgdGhpcy55ID0geTsKCSAgICB9CgkgICAgUG9pbnQucHJvdG90eXBlLnRvUmVzdWx0UG9pbnQgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiBuZXcgUmVzdWx0UG9pbnRfMS5kZWZhdWx0KHRoaXMuZ2V0WCgpLCB0aGlzLmdldFkoKSk7CgkgICAgfTsKCSAgICBQb2ludC5wcm90b3R5cGUuZ2V0WCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMueDsKCSAgICB9OwoJICAgIFBvaW50LnByb3RvdHlwZS5nZXRZID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy55OwoJICAgIH07CgkgICAgcmV0dXJuIFBvaW50OwoJfSgpKTsKCWV4cG9ydHMuUG9pbnQgPSBQb2ludDsKCS8qKgoJICogRW5jYXBzdWxhdGVzIGxvZ2ljIHRoYXQgY2FuIGRldGVjdCBhbiBBenRlYyBDb2RlIGluIGFuIGltYWdlLCBldmVuIGlmIHRoZSBBenRlYyBDb2RlCgkgKiBpcyByb3RhdGVkIG9yIHNrZXdlZCwgb3IgcGFydGlhbGx5IG9ic2N1cmVkLgoJICoKCSAqIEBhdXRob3IgRGF2aWQgT2xpdmllcgoJICogQGF1dGhvciBGcmFuayBZZWxsaW4KCSAqLwoJdmFyIERldGVjdG9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIGZ1bmN0aW9uIERldGVjdG9yKGltYWdlKSB7CgkgICAgICAgIHRoaXMuRVhQRUNURURfQ09STkVSX0JJVFMgPSBuZXcgSW50MzJBcnJheShbCgkgICAgICAgICAgICAweGVlMCwKCSAgICAgICAgICAgIDB4MWRjLAoJICAgICAgICAgICAgMHg4M2IsCgkgICAgICAgICAgICAweDcwNywKCSAgICAgICAgXSk7CgkgICAgICAgIHRoaXMuaW1hZ2UgPSBpbWFnZTsKCSAgICB9CgkgICAgRGV0ZWN0b3IucHJvdG90eXBlLmRldGVjdCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuZGV0ZWN0TWlycm9yKGZhbHNlKTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIERldGVjdHMgYW4gQXp0ZWMgQ29kZSBpbiBhbiBpbWFnZS4KCSAgICAgKgoJICAgICAqIEBwYXJhbSBpc01pcnJvciBpZiB0cnVlLCBpbWFnZSBpcyBhIG1pcnJvci1pbWFnZSBvZiBvcmlnaW5hbAoJICAgICAqIEByZXR1cm4ge0BsaW5rIEF6dGVjRGV0ZWN0b3JSZXN1bHR9IGVuY2Fwc3VsYXRpbmcgcmVzdWx0cyBvZiBkZXRlY3RpbmcgYW4gQXp0ZWMgQ29kZQoJICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb24gaWYgbm8gQXp0ZWMgQ29kZSBjYW4gYmUgZm91bmQKCSAgICAgKi8KCSAgICBEZXRlY3Rvci5wcm90b3R5cGUuZGV0ZWN0TWlycm9yID0gZnVuY3Rpb24gKGlzTWlycm9yKSB7CgkgICAgICAgIC8vIDEuIEdldCB0aGUgY2VudGVyIG9mIHRoZSBhenRlYyBtYXRyaXgKCSAgICAgICAgdmFyIHBDZW50ZXIgPSB0aGlzLmdldE1hdHJpeENlbnRlcigpOwoJICAgICAgICAvLyAyLiBHZXQgdGhlIGNlbnRlciBwb2ludHMgb2YgdGhlIGZvdXIgZGlhZ29uYWwgcG9pbnRzIGp1c3Qgb3V0c2lkZSB0aGUgYnVsbCdzIGV5ZQoJICAgICAgICAvLyAgW3RvcFJpZ2h0LCBib3R0b21SaWdodCwgYm90dG9tTGVmdCwgdG9wTGVmdF0KCSAgICAgICAgdmFyIGJ1bGxzRXllQ29ybmVycyA9IHRoaXMuZ2V0QnVsbHNFeWVDb3JuZXJzKHBDZW50ZXIpOwoJICAgICAgICBpZiAoaXNNaXJyb3IpIHsKCSAgICAgICAgICAgIHZhciB0ZW1wID0gYnVsbHNFeWVDb3JuZXJzWzBdOwoJICAgICAgICAgICAgYnVsbHNFeWVDb3JuZXJzWzBdID0gYnVsbHNFeWVDb3JuZXJzWzJdOwoJICAgICAgICAgICAgYnVsbHNFeWVDb3JuZXJzWzJdID0gdGVtcDsKCSAgICAgICAgfQoJICAgICAgICAvLyAzLiBHZXQgdGhlIHNpemUgb2YgdGhlIG1hdHJpeCBhbmQgb3RoZXIgcGFyYW1ldGVycyBmcm9tIHRoZSBidWxsJ3MgZXllCgkgICAgICAgIHRoaXMuZXh0cmFjdFBhcmFtZXRlcnMoYnVsbHNFeWVDb3JuZXJzKTsKCSAgICAgICAgLy8gNC4gU2FtcGxlIHRoZSBncmlkCgkgICAgICAgIHZhciBiaXRzID0gdGhpcy5zYW1wbGVHcmlkKHRoaXMuaW1hZ2UsIGJ1bGxzRXllQ29ybmVyc1t0aGlzLnNoaWZ0ICUgNF0sIGJ1bGxzRXllQ29ybmVyc1sodGhpcy5zaGlmdCArIDEpICUgNF0sIGJ1bGxzRXllQ29ybmVyc1sodGhpcy5zaGlmdCArIDIpICUgNF0sIGJ1bGxzRXllQ29ybmVyc1sodGhpcy5zaGlmdCArIDMpICUgNF0pOwoJICAgICAgICAvLyA1LiBHZXQgdGhlIGNvcm5lcnMgb2YgdGhlIG1hdHJpeC4KCSAgICAgICAgdmFyIGNvcm5lcnMgPSB0aGlzLmdldE1hdHJpeENvcm5lclBvaW50cyhidWxsc0V5ZUNvcm5lcnMpOwoJICAgICAgICByZXR1cm4gbmV3IEF6dGVjRGV0ZWN0b3JSZXN1bHRfMS5kZWZhdWx0KGJpdHMsIGNvcm5lcnMsIHRoaXMuY29tcGFjdCwgdGhpcy5uYkRhdGFCbG9ja3MsIHRoaXMubmJMYXllcnMpOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogRXh0cmFjdHMgdGhlIG51bWJlciBvZiBkYXRhIGxheWVycyBhbmQgZGF0YSBibG9ja3MgZnJvbSB0aGUgbGF5ZXIgYXJvdW5kIHRoZSBidWxsJ3MgZXllLgoJICAgICAqCgkgICAgICogQHBhcmFtIGJ1bGxzRXllQ29ybmVycyB0aGUgYXJyYXkgb2YgYnVsbCdzIGV5ZSBjb3JuZXJzCgkgICAgICogQHRocm93cyBOb3RGb3VuZEV4Y2VwdGlvbiBpbiBjYXNlIG9mIHRvbyBtYW55IGVycm9ycyBvciBpbnZhbGlkIHBhcmFtZXRlcnMKCSAgICAgKi8KCSAgICBEZXRlY3Rvci5wcm90b3R5cGUuZXh0cmFjdFBhcmFtZXRlcnMgPSBmdW5jdGlvbiAoYnVsbHNFeWVDb3JuZXJzKSB7CgkgICAgICAgIGlmICghdGhpcy5pc1ZhbGlkUG9pbnQoYnVsbHNFeWVDb3JuZXJzWzBdKSB8fCAhdGhpcy5pc1ZhbGlkUG9pbnQoYnVsbHNFeWVDb3JuZXJzWzFdKSB8fAoJICAgICAgICAgICAgIXRoaXMuaXNWYWxpZFBvaW50KGJ1bGxzRXllQ29ybmVyc1syXSkgfHwgIXRoaXMuaXNWYWxpZFBvaW50KGJ1bGxzRXllQ29ybmVyc1szXSkpIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgbGVuZ3RoID0gMiAqIHRoaXMubmJDZW50ZXJMYXllcnM7CgkgICAgICAgIC8vIEdldCB0aGUgYml0cyBhcm91bmQgdGhlIGJ1bGwncyBleWUKCSAgICAgICAgdmFyIHNpZGVzID0gbmV3IEludDMyQXJyYXkoWwoJICAgICAgICAgICAgdGhpcy5zYW1wbGVMaW5lKGJ1bGxzRXllQ29ybmVyc1swXSwgYnVsbHNFeWVDb3JuZXJzWzFdLCBsZW5ndGgpLAoJICAgICAgICAgICAgdGhpcy5zYW1wbGVMaW5lKGJ1bGxzRXllQ29ybmVyc1sxXSwgYnVsbHNFeWVDb3JuZXJzWzJdLCBsZW5ndGgpLAoJICAgICAgICAgICAgdGhpcy5zYW1wbGVMaW5lKGJ1bGxzRXllQ29ybmVyc1syXSwgYnVsbHNFeWVDb3JuZXJzWzNdLCBsZW5ndGgpLAoJICAgICAgICAgICAgdGhpcy5zYW1wbGVMaW5lKGJ1bGxzRXllQ29ybmVyc1szXSwgYnVsbHNFeWVDb3JuZXJzWzBdLCBsZW5ndGgpIC8vIFRvcAoJICAgICAgICBdKTsKCSAgICAgICAgLy8gYnVsbHNFeWVDb3JuZXJzW3NoaWZ0XSBpcyB0aGUgY29ybmVyIG9mIHRoZSBidWxscydleWUgdGhhdCBoYXMgdGhyZWUKCSAgICAgICAgLy8gb3JpZW50YXRpb24gbWFya3MuCgkgICAgICAgIC8vIHNpZGVzW3NoaWZ0XSBpcyB0aGUgcm93L2NvbHVtbiB0aGF0IGdvZXMgZnJvbSB0aGUgY29ybmVyIHdpdGggdGhyZWUKCSAgICAgICAgLy8gb3JpZW50YXRpb24gbWFya3MgdG8gdGhlIGNvcm5lciB3aXRoIHR3by4KCSAgICAgICAgdGhpcy5zaGlmdCA9IHRoaXMuZ2V0Um90YXRpb24oc2lkZXMsIGxlbmd0aCk7CgkgICAgICAgIC8vIEZsYXR0ZW4gdGhlIHBhcmFtZXRlciBiaXRzIGludG8gYSBzaW5nbGUgMjgtIG9yIDQwLWJpdCBsb25nCgkgICAgICAgIHZhciBwYXJhbWV0ZXJEYXRhID0gMDsKCSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHsKCSAgICAgICAgICAgIHZhciBzaWRlID0gc2lkZXNbKHRoaXMuc2hpZnQgKyBpKSAlIDRdOwoJICAgICAgICAgICAgaWYgKHRoaXMuY29tcGFjdCkgewoJICAgICAgICAgICAgICAgIC8vIEVhY2ggc2lkZSBvZiB0aGUgZm9ybSAuLlhYWFhYWFguIHdoZXJlIFhzIGFyZSBwYXJhbWV0ZXIgZGF0YQoJICAgICAgICAgICAgICAgIHBhcmFtZXRlckRhdGEgPDw9IDc7CgkgICAgICAgICAgICAgICAgcGFyYW1ldGVyRGF0YSArPSAoc2lkZSA+PiAxKSAmIDB4N0Y7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICAvLyBFYWNoIHNpZGUgb2YgdGhlIGZvcm0gLi5YWFhYWC5YWFhYWC4gd2hlcmUgWHMgYXJlIHBhcmFtZXRlciBkYXRhCgkgICAgICAgICAgICAgICAgcGFyYW1ldGVyRGF0YSA8PD0gMTA7CgkgICAgICAgICAgICAgICAgcGFyYW1ldGVyRGF0YSArPSAoKHNpZGUgPj4gMikgJiAoMHgxZiA8PCA1KSkgKyAoKHNpZGUgPj4gMSkgJiAweDFGKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICAvLyBDb3JyZWN0cyBwYXJhbWV0ZXIgZGF0YSB1c2luZyBSUy4gIFJldHVybnMganVzdCB0aGUgZGF0YSBwb3J0aW9uCgkgICAgICAgIC8vIHdpdGhvdXQgdGhlIGVycm9yIGNvcnJlY3Rpb24uCgkgICAgICAgIHZhciBjb3JyZWN0ZWREYXRhID0gdGhpcy5nZXRDb3JyZWN0ZWRQYXJhbWV0ZXJEYXRhKHBhcmFtZXRlckRhdGEsIHRoaXMuY29tcGFjdCk7CgkgICAgICAgIGlmICh0aGlzLmNvbXBhY3QpIHsKCSAgICAgICAgICAgIC8vIDggYml0czogIDIgYml0cyBsYXllcnMgYW5kIDYgYml0cyBkYXRhIGJsb2NrcwoJICAgICAgICAgICAgdGhpcy5uYkxheWVycyA9IChjb3JyZWN0ZWREYXRhID4+IDYpICsgMTsKCSAgICAgICAgICAgIHRoaXMubmJEYXRhQmxvY2tzID0gKGNvcnJlY3RlZERhdGEgJiAweDNGKSArIDE7CgkgICAgICAgIH0KCSAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAvLyAxNiBiaXRzOiAgNSBiaXRzIGxheWVycyBhbmQgMTEgYml0cyBkYXRhIGJsb2NrcwoJICAgICAgICAgICAgdGhpcy5uYkxheWVycyA9IChjb3JyZWN0ZWREYXRhID4+IDExKSArIDE7CgkgICAgICAgICAgICB0aGlzLm5iRGF0YUJsb2NrcyA9IChjb3JyZWN0ZWREYXRhICYgMHg3RkYpICsgMTsKCSAgICAgICAgfQoJICAgIH07CgkgICAgRGV0ZWN0b3IucHJvdG90eXBlLmdldFJvdGF0aW9uID0gZnVuY3Rpb24gKHNpZGVzLCBsZW5ndGgpIHsKCSAgICAgICAgLy8gSW4gYSBub3JtYWwgcGF0dGVybiwgd2UgZXhwZWN0IHRvIFNlZQoJICAgICAgICAvLyAgICoqICAgIC4qICAgICAgICAgICAgIEQgICAgICAgQQoJICAgICAgICAvLyAgICogICAgICAqCgkgICAgICAgIC8vCgkgICAgICAgIC8vICAgLiAgICAgICoKCSAgICAgICAgLy8gICAuLiAgICAuLiAgICAgICAgICAgICBDICAgICAgIEIKCSAgICAgICAgLy8KCSAgICAgICAgLy8gR3JhYiB0aGUgMyBiaXRzIGZyb20gZWFjaCBvZiB0aGUgc2lkZXMgdGhlIGZvcm0gdGhlIGxvY2F0b3IgcGF0dGVybiBhbmQgY29uY2F0ZW5hdGUKCSAgICAgICAgLy8gaW50byBhIDEyLWJpdCBpbnRlZ2VyLiAgU3RhcnQgd2l0aCB0aGUgYml0IGF0IEEKCSAgICAgICAgdmFyIGNvcm5lckJpdHMgPSAwOwoJICAgICAgICBzaWRlcy5mb3JFYWNoKGZ1bmN0aW9uIChzaWRlLCBpZHgsIGFycikgewoJICAgICAgICAgICAgLy8gWFguLi4uLi5YIHdoZXJlIFgncyBhcmUgb3JpZW50YXRpb24gbWFya3MKCSAgICAgICAgICAgIHZhciB0ID0gKChzaWRlID4+IChsZW5ndGggLSAyKSkgPDwgMSkgKyAoc2lkZSAmIDEpOwoJICAgICAgICAgICAgY29ybmVyQml0cyA9IChjb3JuZXJCaXRzIDw8IDMpICsgdDsKCSAgICAgICAgfSk7CgkgICAgICAgIC8vIGZvciAodmFyIHNpZGUgaW4gc2lkZXMpIHsKCSAgICAgICAgLy8gICAgIC8vIFhYLi4uLi4uWCB3aGVyZSBYJ3MgYXJlIG9yaWVudGF0aW9uIG1hcmtzCgkgICAgICAgIC8vICAgICB2YXIgdCA9ICgoc2lkZSA+PiAobGVuZ3RoIC0gMikpIDw8IDEpICsgKHNpZGUgJiAxKTsKCSAgICAgICAgLy8gICAgIGNvcm5lckJpdHMgPSAoY29ybmVyQml0cyA8PCAzKSArIHQ7CgkgICAgICAgIC8vIH0KCSAgICAgICAgLy8gTW92IHRoZSBib3R0b20gYml0IHRvIHRoZSB0b3AsIHNvIHRoYXQgdGhlIHRocmVlIGJpdHMgb2YgdGhlIGxvY2F0b3IgcGF0dGVybiBhdCBBIGFyZQoJICAgICAgICAvLyB0b2dldGhlci4gIGNvcm5lckJpdHMgaXMgbm93OgoJICAgICAgICAvLyAgMyBvcmllbnRhdGlvbiBiaXRzIGF0IEEgfHwgMyBvcmllbnRhdGlvbiBiaXRzIGF0IEIgfHwgLi4uIHx8IDMgb3JpZW50YXRpb24gYml0cyBhdCBECgkgICAgICAgIGNvcm5lckJpdHMgPSAoKGNvcm5lckJpdHMgJiAxKSA8PCAxMSkgKyAoY29ybmVyQml0cyA+PiAxKTsKCSAgICAgICAgLy8gVGhlIHJlc3VsdCBzaGlmdCBpbmRpY2F0ZXMgd2hpY2ggZWxlbWVudCBvZiBCdWxsc0V5ZUNvcm5lcnNbXSBnb2VzIGludG8gdGhlIHRvcC1sZWZ0CgkgICAgICAgIC8vIGNvcm5lci4gU2luY2UgdGhlIGZvdXIgcm90YXRpb24gdmFsdWVzIGhhdmUgYSBIYW1taW5nIGRpc3RhbmNlIG9mIDgsIHdlCgkgICAgICAgIC8vIGNhbiBlYXNpbHkgdG9sZXJhdGUgdHdvIGVycm9ycy4KCSAgICAgICAgZm9yICh2YXIgc2hpZnQgPSAwOyBzaGlmdCA8IDQ7IHNoaWZ0KyspIHsKCSAgICAgICAgICAgIGlmIChJbnRlZ2VyXzEuZGVmYXVsdC5iaXRDb3VudChjb3JuZXJCaXRzIF4gdGhpcy5FWFBFQ1RFRF9DT1JORVJfQklUU1tzaGlmdF0pIDw9IDIpIHsKCSAgICAgICAgICAgICAgICByZXR1cm4gc2hpZnQ7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQ29ycmVjdHMgdGhlIHBhcmFtZXRlciBiaXRzIHVzaW5nIFJlZWQtU29sb21vbiBhbGdvcml0aG0uCgkgICAgICoKCSAgICAgKiBAcGFyYW0gcGFyYW1ldGVyRGF0YSBwYXJhbWV0ZXIgYml0cwoJICAgICAqIEBwYXJhbSBjb21wYWN0IHRydWUgaWYgdGhpcyBpcyBhIGNvbXBhY3QgQXp0ZWMgY29kZQoJICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb24gaWYgdGhlIGFycmF5IGNvbnRhaW5zIHRvbyBtYW55IGVycm9ycwoJICAgICAqLwoJICAgIERldGVjdG9yLnByb3RvdHlwZS5nZXRDb3JyZWN0ZWRQYXJhbWV0ZXJEYXRhID0gZnVuY3Rpb24gKHBhcmFtZXRlckRhdGEsIGNvbXBhY3QpIHsKCSAgICAgICAgdmFyIG51bUNvZGV3b3JkczsKCSAgICAgICAgdmFyIG51bURhdGFDb2Rld29yZHM7CgkgICAgICAgIGlmIChjb21wYWN0KSB7CgkgICAgICAgICAgICBudW1Db2Rld29yZHMgPSA3OwoJICAgICAgICAgICAgbnVtRGF0YUNvZGV3b3JkcyA9IDI7CgkgICAgICAgIH0KCSAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICBudW1Db2Rld29yZHMgPSAxMDsKCSAgICAgICAgICAgIG51bURhdGFDb2Rld29yZHMgPSA0OwoJICAgICAgICB9CgkgICAgICAgIHZhciBudW1FQ0NvZGV3b3JkcyA9IG51bUNvZGV3b3JkcyAtIG51bURhdGFDb2Rld29yZHM7CgkgICAgICAgIHZhciBwYXJhbWV0ZXJXb3JkcyA9IG5ldyBJbnQzMkFycmF5KG51bUNvZGV3b3Jkcyk7CgkgICAgICAgIGZvciAodmFyIGkgPSBudW1Db2Rld29yZHMgLSAxOyBpID49IDA7IC0taSkgewoJICAgICAgICAgICAgcGFyYW1ldGVyV29yZHNbaV0gPSBwYXJhbWV0ZXJEYXRhICYgMHhGOwoJICAgICAgICAgICAgcGFyYW1ldGVyRGF0YSA+Pj0gNDsKCSAgICAgICAgfQoJICAgICAgICB0cnkgewoJICAgICAgICAgICAgdmFyIHJzRGVjb2RlciA9IG5ldyBSZWVkU29sb21vbkRlY29kZXJfMS5kZWZhdWx0KEdlbmVyaWNHRl8xLmRlZmF1bHQuQVpURUNfUEFSQU0pOwoJICAgICAgICAgICAgcnNEZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJXb3JkcywgbnVtRUNDb2Rld29yZHMpOwoJICAgICAgICB9CgkgICAgICAgIGNhdGNoIChpZ25vcmVkKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgIH0KCSAgICAgICAgLy8gVG9zcyB0aGUgZXJyb3IgY29ycmVjdGlvbi4gIEp1c3QgcmV0dXJuIHRoZSBkYXRhIGFzIGFuIGludGVnZXIKCSAgICAgICAgdmFyIHJlc3VsdCA9IDA7CgkgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtRGF0YUNvZGV3b3JkczsgaSsrKSB7CgkgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0IDw8IDQpICsgcGFyYW1ldGVyV29yZHNbaV07CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHJlc3VsdDsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEZpbmRzIHRoZSBjb3JuZXJzIG9mIGEgYnVsbC1leWUgY2VudGVyZWQgb24gdGhlIHBhc3NlZCBwb2ludC4KCSAgICAgKiBUaGlzIHJldHVybnMgdGhlIGNlbnRlcnMgb2YgdGhlIGRpYWdvbmFsIHBvaW50cyBqdXN0IG91dHNpZGUgdGhlIGJ1bGwncyBleWUKCSAgICAgKiBSZXR1cm5zIFt0b3BSaWdodCwgYm90dG9tUmlnaHQsIGJvdHRvbUxlZnQsIHRvcExlZnRdCgkgICAgICoKCSAgICAgKiBAcGFyYW0gcENlbnRlciBDZW50ZXIgcG9pbnQKCSAgICAgKiBAcmV0dXJuIFRoZSBjb3JuZXJzIG9mIHRoZSBidWxsLWV5ZQoJICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb24gSWYgbm8gdmFsaWQgYnVsbC1leWUgY2FuIGJlIGZvdW5kCgkgICAgICovCgkgICAgRGV0ZWN0b3IucHJvdG90eXBlLmdldEJ1bGxzRXllQ29ybmVycyA9IGZ1bmN0aW9uIChwQ2VudGVyKSB7CgkgICAgICAgIHZhciBwaW5hID0gcENlbnRlcjsKCSAgICAgICAgdmFyIHBpbmIgPSBwQ2VudGVyOwoJICAgICAgICB2YXIgcGluYyA9IHBDZW50ZXI7CgkgICAgICAgIHZhciBwaW5kID0gcENlbnRlcjsKCSAgICAgICAgdmFyIGNvbG9yID0gdHJ1ZTsKCSAgICAgICAgZm9yICh0aGlzLm5iQ2VudGVyTGF5ZXJzID0gMTsgdGhpcy5uYkNlbnRlckxheWVycyA8IDk7IHRoaXMubmJDZW50ZXJMYXllcnMrKykgewoJICAgICAgICAgICAgdmFyIHBvdXRhID0gdGhpcy5nZXRGaXJzdERpZmZlcmVudChwaW5hLCBjb2xvciwgMSwgLTEpOwoJICAgICAgICAgICAgdmFyIHBvdXRiID0gdGhpcy5nZXRGaXJzdERpZmZlcmVudChwaW5iLCBjb2xvciwgMSwgMSk7CgkgICAgICAgICAgICB2YXIgcG91dGMgPSB0aGlzLmdldEZpcnN0RGlmZmVyZW50KHBpbmMsIGNvbG9yLCAtMSwgMSk7CgkgICAgICAgICAgICB2YXIgcG91dGQgPSB0aGlzLmdldEZpcnN0RGlmZmVyZW50KHBpbmQsIGNvbG9yLCAtMSwgLTEpOwoJICAgICAgICAgICAgLy8gZCAgICAgIGEKCSAgICAgICAgICAgIC8vCgkgICAgICAgICAgICAvLyBjICAgICAgYgoJICAgICAgICAgICAgaWYgKHRoaXMubmJDZW50ZXJMYXllcnMgPiAyKSB7CgkgICAgICAgICAgICAgICAgdmFyIHEgPSAodGhpcy5kaXN0YW5jZVBvaW50KHBvdXRkLCBwb3V0YSkgKiB0aGlzLm5iQ2VudGVyTGF5ZXJzKSAvICh0aGlzLmRpc3RhbmNlUG9pbnQocGluZCwgcGluYSkgKiAodGhpcy5uYkNlbnRlckxheWVycyArIDIpKTsKCSAgICAgICAgICAgICAgICBpZiAocSA8IDAuNzUgfHwgcSA+IDEuMjUgfHwgIXRoaXMuaXNXaGl0ZU9yQmxhY2tSZWN0YW5nbGUocG91dGEsIHBvdXRiLCBwb3V0YywgcG91dGQpKSB7CgkgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHBpbmEgPSBwb3V0YTsKCSAgICAgICAgICAgIHBpbmIgPSBwb3V0YjsKCSAgICAgICAgICAgIHBpbmMgPSBwb3V0YzsKCSAgICAgICAgICAgIHBpbmQgPSBwb3V0ZDsKCSAgICAgICAgICAgIGNvbG9yID0gIWNvbG9yOwoJICAgICAgICB9CgkgICAgICAgIGlmICh0aGlzLm5iQ2VudGVyTGF5ZXJzICE9PSA1ICYmIHRoaXMubmJDZW50ZXJMYXllcnMgIT09IDcpIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgfQoJICAgICAgICB0aGlzLmNvbXBhY3QgPSB0aGlzLm5iQ2VudGVyTGF5ZXJzID09PSA1OwoJICAgICAgICAvLyBFeHBhbmQgdGhlIHNxdWFyZSBieSAuNSBwaXhlbCBpbiBlYWNoIGRpcmVjdGlvbiBzbyB0aGF0IHdlJ3JlIG9uIHRoZSBib3JkZXIKCSAgICAgICAgLy8gYmV0d2VlbiB0aGUgd2hpdGUgc3F1YXJlIGFuZCB0aGUgYmxhY2sgc3F1YXJlCgkgICAgICAgIHZhciBwaW5heCA9IG5ldyBSZXN1bHRQb2ludF8xLmRlZmF1bHQocGluYS5nZXRYKCkgKyAwLjUsIHBpbmEuZ2V0WSgpIC0gMC41KTsKCSAgICAgICAgdmFyIHBpbmJ4ID0gbmV3IFJlc3VsdFBvaW50XzEuZGVmYXVsdChwaW5iLmdldFgoKSArIDAuNSwgcGluYi5nZXRZKCkgKyAwLjUpOwoJICAgICAgICB2YXIgcGluY3ggPSBuZXcgUmVzdWx0UG9pbnRfMS5kZWZhdWx0KHBpbmMuZ2V0WCgpIC0gMC41LCBwaW5jLmdldFkoKSArIDAuNSk7CgkgICAgICAgIHZhciBwaW5keCA9IG5ldyBSZXN1bHRQb2ludF8xLmRlZmF1bHQocGluZC5nZXRYKCkgLSAwLjUsIHBpbmQuZ2V0WSgpIC0gMC41KTsKCSAgICAgICAgLy8gRXhwYW5kIHRoZSBzcXVhcmUgc28gdGhhdCBpdHMgY29ybmVycyBhcmUgdGhlIGNlbnRlcnMgb2YgdGhlIHBvaW50cwoJICAgICAgICAvLyBqdXN0IG91dHNpZGUgdGhlIGJ1bGwncyBleWUuCgkgICAgICAgIHJldHVybiB0aGlzLmV4cGFuZFNxdWFyZShbcGluYXgsIHBpbmJ4LCBwaW5jeCwgcGluZHhdLCAyICogdGhpcy5uYkNlbnRlckxheWVycyAtIDMsIDIgKiB0aGlzLm5iQ2VudGVyTGF5ZXJzKTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEZpbmRzIGEgY2FuZGlkYXRlIGNlbnRlciBwb2ludCBvZiBhbiBBenRlYyBjb2RlIGZyb20gYW4gaW1hZ2UKCSAgICAgKgoJICAgICAqIEByZXR1cm4gdGhlIGNlbnRlciBwb2ludAoJICAgICAqLwoJICAgIERldGVjdG9yLnByb3RvdHlwZS5nZXRNYXRyaXhDZW50ZXIgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHZhciBwb2ludEE7CgkgICAgICAgIHZhciBwb2ludEI7CgkgICAgICAgIHZhciBwb2ludEM7CgkgICAgICAgIHZhciBwb2ludEQ7CgkgICAgICAgIC8vIEdldCBhIHdoaXRlIHJlY3RhbmdsZSB0aGF0IGNhbiBiZSB0aGUgYm9yZGVyIG9mIHRoZSBtYXRyaXggaW4gY2VudGVyIGJ1bGwncyBleWUgb3IKCSAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgIHZhciBjb3JuZXJQb2ludHMgPSBuZXcgV2hpdGVSZWN0YW5nbGVEZXRlY3Rvcl8xLmRlZmF1bHQodGhpcy5pbWFnZSkuZGV0ZWN0KCk7CgkgICAgICAgICAgICBwb2ludEEgPSBjb3JuZXJQb2ludHNbMF07CgkgICAgICAgICAgICBwb2ludEIgPSBjb3JuZXJQb2ludHNbMV07CgkgICAgICAgICAgICBwb2ludEMgPSBjb3JuZXJQb2ludHNbMl07CgkgICAgICAgICAgICBwb2ludEQgPSBjb3JuZXJQb2ludHNbM107CgkgICAgICAgIH0KCSAgICAgICAgY2F0Y2ggKGUpIHsKCSAgICAgICAgICAgIC8vIFRoaXMgZXhjZXB0aW9uIGNhbiBiZSBpbiBjYXNlIHRoZSBpbml0aWFsIHJlY3RhbmdsZSBpcyB3aGl0ZQoJICAgICAgICAgICAgLy8gSW4gdGhhdCBjYXNlLCBzdXJlbHkgaW4gdGhlIGJ1bGwncyBleWUsIHdlIHRyeSB0byBleHBhbmQgdGhlIHJlY3RhbmdsZS4KCSAgICAgICAgICAgIHZhciBjeF8xID0gdGhpcy5pbWFnZS5nZXRXaWR0aCgpIC8gMjsKCSAgICAgICAgICAgIHZhciBjeV8xID0gdGhpcy5pbWFnZS5nZXRIZWlnaHQoKSAvIDI7CgkgICAgICAgICAgICBwb2ludEEgPSB0aGlzLmdldEZpcnN0RGlmZmVyZW50KG5ldyBQb2ludChjeF8xICsgNywgY3lfMSAtIDcpLCBmYWxzZSwgMSwgLTEpLnRvUmVzdWx0UG9pbnQoKTsKCSAgICAgICAgICAgIHBvaW50QiA9IHRoaXMuZ2V0Rmlyc3REaWZmZXJlbnQobmV3IFBvaW50KGN4XzEgKyA3LCBjeV8xICsgNyksIGZhbHNlLCAxLCAxKS50b1Jlc3VsdFBvaW50KCk7CgkgICAgICAgICAgICBwb2ludEMgPSB0aGlzLmdldEZpcnN0RGlmZmVyZW50KG5ldyBQb2ludChjeF8xIC0gNywgY3lfMSArIDcpLCBmYWxzZSwgLTEsIDEpLnRvUmVzdWx0UG9pbnQoKTsKCSAgICAgICAgICAgIHBvaW50RCA9IHRoaXMuZ2V0Rmlyc3REaWZmZXJlbnQobmV3IFBvaW50KGN4XzEgLSA3LCBjeV8xIC0gNyksIGZhbHNlLCAtMSwgLTEpLnRvUmVzdWx0UG9pbnQoKTsKCSAgICAgICAgfQoJICAgICAgICAvLyBDb21wdXRlIHRoZSBjZW50ZXIgb2YgdGhlIHJlY3RhbmdsZQoJICAgICAgICB2YXIgY3ggPSBNYXRoVXRpbHNfMS5kZWZhdWx0LnJvdW5kKChwb2ludEEuZ2V0WCgpICsgcG9pbnRELmdldFgoKSArIHBvaW50Qi5nZXRYKCkgKyBwb2ludEMuZ2V0WCgpKSAvIDQuMCk7CgkgICAgICAgIHZhciBjeSA9IE1hdGhVdGlsc18xLmRlZmF1bHQucm91bmQoKHBvaW50QS5nZXRZKCkgKyBwb2ludEQuZ2V0WSgpICsgcG9pbnRCLmdldFkoKSArIHBvaW50Qy5nZXRZKCkpIC8gNC4wKTsKCSAgICAgICAgLy8gUmVkZXRlcm1pbmUgdGhlIHdoaXRlIHJlY3RhbmdsZSBzdGFydGluZyBmcm9tIHByZXZpb3VzbHkgY29tcHV0ZWQgY2VudGVyLgoJICAgICAgICAvLyBUaGlzIHdpbGwgZW5zdXJlIHRoYXQgd2UgZW5kIHVwIHdpdGggYSB3aGl0ZSByZWN0YW5nbGUgaW4gY2VudGVyIGJ1bGwncyBleWUKCSAgICAgICAgLy8gaW4gb3JkZXIgdG8gY29tcHV0ZSBhIG1vcmUgYWNjdXJhdGUgY2VudGVyLgoJICAgICAgICB0cnkgewoJICAgICAgICAgICAgdmFyIGNvcm5lclBvaW50cyA9IG5ldyBXaGl0ZVJlY3RhbmdsZURldGVjdG9yXzEuZGVmYXVsdCh0aGlzLmltYWdlLCAxNSwgY3gsIGN5KS5kZXRlY3QoKTsKCSAgICAgICAgICAgIHBvaW50QSA9IGNvcm5lclBvaW50c1swXTsKCSAgICAgICAgICAgIHBvaW50QiA9IGNvcm5lclBvaW50c1sxXTsKCSAgICAgICAgICAgIHBvaW50QyA9IGNvcm5lclBvaW50c1syXTsKCSAgICAgICAgICAgIHBvaW50RCA9IGNvcm5lclBvaW50c1szXTsKCSAgICAgICAgfQoJICAgICAgICBjYXRjaCAoZSkgewoJICAgICAgICAgICAgLy8gVGhpcyBleGNlcHRpb24gY2FuIGJlIGluIGNhc2UgdGhlIGluaXRpYWwgcmVjdGFuZ2xlIGlzIHdoaXRlCgkgICAgICAgICAgICAvLyBJbiB0aGF0IGNhc2Ugd2UgdHJ5IHRvIGV4cGFuZCB0aGUgcmVjdGFuZ2xlLgoJICAgICAgICAgICAgcG9pbnRBID0gdGhpcy5nZXRGaXJzdERpZmZlcmVudChuZXcgUG9pbnQoY3ggKyA3LCBjeSAtIDcpLCBmYWxzZSwgMSwgLTEpLnRvUmVzdWx0UG9pbnQoKTsKCSAgICAgICAgICAgIHBvaW50QiA9IHRoaXMuZ2V0Rmlyc3REaWZmZXJlbnQobmV3IFBvaW50KGN4ICsgNywgY3kgKyA3KSwgZmFsc2UsIDEsIDEpLnRvUmVzdWx0UG9pbnQoKTsKCSAgICAgICAgICAgIHBvaW50QyA9IHRoaXMuZ2V0Rmlyc3REaWZmZXJlbnQobmV3IFBvaW50KGN4IC0gNywgY3kgKyA3KSwgZmFsc2UsIC0xLCAxKS50b1Jlc3VsdFBvaW50KCk7CgkgICAgICAgICAgICBwb2ludEQgPSB0aGlzLmdldEZpcnN0RGlmZmVyZW50KG5ldyBQb2ludChjeCAtIDcsIGN5IC0gNyksIGZhbHNlLCAtMSwgLTEpLnRvUmVzdWx0UG9pbnQoKTsKCSAgICAgICAgfQoJICAgICAgICAvLyBSZWNvbXB1dGUgdGhlIGNlbnRlciBvZiB0aGUgcmVjdGFuZ2xlCgkgICAgICAgIGN4ID0gTWF0aFV0aWxzXzEuZGVmYXVsdC5yb3VuZCgocG9pbnRBLmdldFgoKSArIHBvaW50RC5nZXRYKCkgKyBwb2ludEIuZ2V0WCgpICsgcG9pbnRDLmdldFgoKSkgLyA0LjApOwoJICAgICAgICBjeSA9IE1hdGhVdGlsc18xLmRlZmF1bHQucm91bmQoKHBvaW50QS5nZXRZKCkgKyBwb2ludEQuZ2V0WSgpICsgcG9pbnRCLmdldFkoKSArIHBvaW50Qy5nZXRZKCkpIC8gNC4wKTsKCSAgICAgICAgcmV0dXJuIG5ldyBQb2ludChjeCwgY3kpOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogR2V0cyB0aGUgQXp0ZWMgY29kZSBjb3JuZXJzIGZyb20gdGhlIGJ1bGwncyBleWUgY29ybmVycyBhbmQgdGhlIHBhcmFtZXRlcnMuCgkgICAgICoKCSAgICAgKiBAcGFyYW0gYnVsbHNFeWVDb3JuZXJzIHRoZSBhcnJheSBvZiBidWxsJ3MgZXllIGNvcm5lcnMKCSAgICAgKiBAcmV0dXJuIHRoZSBhcnJheSBvZiBhenRlYyBjb2RlIGNvcm5lcnMKCSAgICAgKi8KCSAgICBEZXRlY3Rvci5wcm90b3R5cGUuZ2V0TWF0cml4Q29ybmVyUG9pbnRzID0gZnVuY3Rpb24gKGJ1bGxzRXllQ29ybmVycykgewoJICAgICAgICByZXR1cm4gdGhpcy5leHBhbmRTcXVhcmUoYnVsbHNFeWVDb3JuZXJzLCAyICogdGhpcy5uYkNlbnRlckxheWVycywgdGhpcy5nZXREaW1lbnNpb24oKSk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBDcmVhdGVzIGEgQml0TWF0cml4IGJ5IHNhbXBsaW5nIHRoZSBwcm92aWRlZCBpbWFnZS4KCSAgICAgKiB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tUmlnaHQsIGFuZCBib3R0b21MZWZ0IGFyZSB0aGUgY2VudGVycyBvZiB0aGUgc3F1YXJlcyBvbiB0aGUKCSAgICAgKiBkaWFnb25hbCBqdXN0IG91dHNpZGUgdGhlIGJ1bGwncyBleWUuCgkgICAgICovCgkgICAgRGV0ZWN0b3IucHJvdG90eXBlLnNhbXBsZUdyaWQgPSBmdW5jdGlvbiAoaW1hZ2UsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21SaWdodCwgYm90dG9tTGVmdCkgewoJICAgICAgICB2YXIgc2FtcGxlciA9IEdyaWRTYW1wbGVySW5zdGFuY2VfMS5kZWZhdWx0LmdldEluc3RhbmNlKCk7CgkgICAgICAgIHZhciBkaW1lbnNpb24gPSB0aGlzLmdldERpbWVuc2lvbigpOwoJICAgICAgICB2YXIgbG93ID0gZGltZW5zaW9uIC8gMiAtIHRoaXMubmJDZW50ZXJMYXllcnM7CgkgICAgICAgIHZhciBoaWdoID0gZGltZW5zaW9uIC8gMiArIHRoaXMubmJDZW50ZXJMYXllcnM7CgkgICAgICAgIHJldHVybiBzYW1wbGVyLnNhbXBsZUdyaWQoaW1hZ2UsIGRpbWVuc2lvbiwgZGltZW5zaW9uLCBsb3csIGxvdywgLy8gdG9wbGVmdAoJICAgICAgICBoaWdoLCBsb3csIC8vIHRvcHJpZ2h0CgkgICAgICAgIGhpZ2gsIGhpZ2gsIC8vIGJvdHRvbXJpZ2h0CgkgICAgICAgIGxvdywgaGlnaCwgLy8gYm90dG9tbGVmdAoJICAgICAgICB0b3BMZWZ0LmdldFgoKSwgdG9wTGVmdC5nZXRZKCksIHRvcFJpZ2h0LmdldFgoKSwgdG9wUmlnaHQuZ2V0WSgpLCBib3R0b21SaWdodC5nZXRYKCksIGJvdHRvbVJpZ2h0LmdldFkoKSwgYm90dG9tTGVmdC5nZXRYKCksIGJvdHRvbUxlZnQuZ2V0WSgpKTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIFNhbXBsZXMgYSBsaW5lLgoJICAgICAqCgkgICAgICogQHBhcmFtIHAxICAgc3RhcnQgcG9pbnQgKGluY2x1c2l2ZSkKCSAgICAgKiBAcGFyYW0gcDIgICBlbmQgcG9pbnQgKGV4Y2x1c2l2ZSkKCSAgICAgKiBAcGFyYW0gc2l6ZSBudW1iZXIgb2YgYml0cwoJICAgICAqIEByZXR1cm4gdGhlIGFycmF5IG9mIGJpdHMgYXMgYW4gaW50IChmaXJzdCBiaXQgaXMgaGlnaC1vcmRlciBiaXQgb2YgcmVzdWx0KQoJICAgICAqLwoJICAgIERldGVjdG9yLnByb3RvdHlwZS5zYW1wbGVMaW5lID0gZnVuY3Rpb24gKHAxLCBwMiwgc2l6ZSkgewoJICAgICAgICB2YXIgcmVzdWx0ID0gMDsKCSAgICAgICAgdmFyIGQgPSB0aGlzLmRpc3RhbmNlUmVzdWx0UG9pbnQocDEsIHAyKTsKCSAgICAgICAgdmFyIG1vZHVsZVNpemUgPSBkIC8gc2l6ZTsKCSAgICAgICAgdmFyIHB4ID0gcDEuZ2V0WCgpOwoJICAgICAgICB2YXIgcHkgPSBwMS5nZXRZKCk7CgkgICAgICAgIHZhciBkeCA9IG1vZHVsZVNpemUgKiAocDIuZ2V0WCgpIC0gcDEuZ2V0WCgpKSAvIGQ7CgkgICAgICAgIHZhciBkeSA9IG1vZHVsZVNpemUgKiAocDIuZ2V0WSgpIC0gcDEuZ2V0WSgpKSAvIGQ7CgkgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CgkgICAgICAgICAgICBpZiAodGhpcy5pbWFnZS5nZXQoTWF0aFV0aWxzXzEuZGVmYXVsdC5yb3VuZChweCArIGkgKiBkeCksIE1hdGhVdGlsc18xLmRlZmF1bHQucm91bmQocHkgKyBpICogZHkpKSkgewoJICAgICAgICAgICAgICAgIHJlc3VsdCB8PSAxIDw8IChzaXplIC0gaSAtIDEpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHJldHVybiByZXN1bHQ7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGJvcmRlciBvZiB0aGUgcmVjdGFuZ2xlIHBhc3NlZCBpbiBwYXJhbWV0ZXIgaXMgY29tcG91bmQgb2Ygd2hpdGUgcG9pbnRzIG9ubHkKCSAgICAgKiAgICAgICAgIG9yIGJsYWNrIHBvaW50cyBvbmx5CgkgICAgICovCgkgICAgRGV0ZWN0b3IucHJvdG90eXBlLmlzV2hpdGVPckJsYWNrUmVjdGFuZ2xlID0gZnVuY3Rpb24gKHAxLCBwMiwgcDMsIHA0KSB7CgkgICAgICAgIHZhciBjb3JyID0gMzsKCSAgICAgICAgcDEgPSBuZXcgUG9pbnQocDEuZ2V0WCgpIC0gY29yciwgcDEuZ2V0WSgpICsgY29ycik7CgkgICAgICAgIHAyID0gbmV3IFBvaW50KHAyLmdldFgoKSAtIGNvcnIsIHAyLmdldFkoKSAtIGNvcnIpOwoJICAgICAgICBwMyA9IG5ldyBQb2ludChwMy5nZXRYKCkgKyBjb3JyLCBwMy5nZXRZKCkgLSBjb3JyKTsKCSAgICAgICAgcDQgPSBuZXcgUG9pbnQocDQuZ2V0WCgpICsgY29yciwgcDQuZ2V0WSgpICsgY29ycik7CgkgICAgICAgIHZhciBjSW5pdCA9IHRoaXMuZ2V0Q29sb3IocDQsIHAxKTsKCSAgICAgICAgaWYgKGNJbml0ID09PSAwKSB7CgkgICAgICAgICAgICByZXR1cm4gZmFsc2U7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGMgPSB0aGlzLmdldENvbG9yKHAxLCBwMik7CgkgICAgICAgIGlmIChjICE9PSBjSW5pdCkgewoJICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoJICAgICAgICB9CgkgICAgICAgIGMgPSB0aGlzLmdldENvbG9yKHAyLCBwMyk7CgkgICAgICAgIGlmIChjICE9PSBjSW5pdCkgewoJICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoJICAgICAgICB9CgkgICAgICAgIGMgPSB0aGlzLmdldENvbG9yKHAzLCBwNCk7CgkgICAgICAgIHJldHVybiBjID09PSBjSW5pdDsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEdldHMgdGhlIGNvbG9yIG9mIGEgc2VnbWVudAoJICAgICAqCgkgICAgICogQHJldHVybiAxIGlmIHNlZ21lbnQgbW9yZSB0aGFuIDkwJSBibGFjaywgLTEgaWYgc2VnbWVudCBpcyBtb3JlIHRoYW4gOTAlIHdoaXRlLCAwIGVsc2UKCSAgICAgKi8KCSAgICBEZXRlY3Rvci5wcm90b3R5cGUuZ2V0Q29sb3IgPSBmdW5jdGlvbiAocDEsIHAyKSB7CgkgICAgICAgIHZhciBkID0gdGhpcy5kaXN0YW5jZVBvaW50KHAxLCBwMik7CgkgICAgICAgIHZhciBkeCA9IChwMi5nZXRYKCkgLSBwMS5nZXRYKCkpIC8gZDsKCSAgICAgICAgdmFyIGR5ID0gKHAyLmdldFkoKSAtIHAxLmdldFkoKSkgLyBkOwoJICAgICAgICB2YXIgZXJyb3IgPSAwOwoJICAgICAgICB2YXIgcHggPSBwMS5nZXRYKCk7CgkgICAgICAgIHZhciBweSA9IHAxLmdldFkoKTsKCSAgICAgICAgdmFyIGNvbG9yTW9kZWwgPSB0aGlzLmltYWdlLmdldChwMS5nZXRYKCksIHAxLmdldFkoKSk7CgkgICAgICAgIHZhciBpTWF4ID0gTWF0aC5jZWlsKGQpOwoJICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGlNYXg7IGkrKykgewoJICAgICAgICAgICAgcHggKz0gZHg7CgkgICAgICAgICAgICBweSArPSBkeTsKCSAgICAgICAgICAgIGlmICh0aGlzLmltYWdlLmdldChNYXRoVXRpbHNfMS5kZWZhdWx0LnJvdW5kKHB4KSwgTWF0aFV0aWxzXzEuZGVmYXVsdC5yb3VuZChweSkpICE9PSBjb2xvck1vZGVsKSB7CgkgICAgICAgICAgICAgICAgZXJyb3IrKzsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICB2YXIgZXJyUmF0aW8gPSBlcnJvciAvIGQ7CgkgICAgICAgIGlmIChlcnJSYXRpbyA+IDAuMSAmJiBlcnJSYXRpbyA8IDAuOSkgewoJICAgICAgICAgICAgcmV0dXJuIDA7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIChlcnJSYXRpbyA8PSAwLjEpID09PSBjb2xvck1vZGVsID8gMSA6IC0xOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogR2V0cyB0aGUgY29vcmRpbmF0ZSBvZiB0aGUgZmlyc3QgcG9pbnQgd2l0aCBhIGRpZmZlcmVudCBjb2xvciBpbiB0aGUgZ2l2ZW4gZGlyZWN0aW9uCgkgICAgICovCgkgICAgRGV0ZWN0b3IucHJvdG90eXBlLmdldEZpcnN0RGlmZmVyZW50ID0gZnVuY3Rpb24gKGluaXQsIGNvbG9yLCBkeCwgZHkpIHsKCSAgICAgICAgdmFyIHggPSBpbml0LmdldFgoKSArIGR4OwoJICAgICAgICB2YXIgeSA9IGluaXQuZ2V0WSgpICsgZHk7CgkgICAgICAgIHdoaWxlICh0aGlzLmlzVmFsaWQoeCwgeSkgJiYgdGhpcy5pbWFnZS5nZXQoeCwgeSkgPT09IGNvbG9yKSB7CgkgICAgICAgICAgICB4ICs9IGR4OwoJICAgICAgICAgICAgeSArPSBkeTsKCSAgICAgICAgfQoJICAgICAgICB4IC09IGR4OwoJICAgICAgICB5IC09IGR5OwoJICAgICAgICB3aGlsZSAodGhpcy5pc1ZhbGlkKHgsIHkpICYmIHRoaXMuaW1hZ2UuZ2V0KHgsIHkpID09PSBjb2xvcikgewoJICAgICAgICAgICAgeCArPSBkeDsKCSAgICAgICAgfQoJICAgICAgICB4IC09IGR4OwoJICAgICAgICB3aGlsZSAodGhpcy5pc1ZhbGlkKHgsIHkpICYmIHRoaXMuaW1hZ2UuZ2V0KHgsIHkpID09PSBjb2xvcikgewoJICAgICAgICAgICAgeSArPSBkeTsKCSAgICAgICAgfQoJICAgICAgICB5IC09IGR5OwoJICAgICAgICByZXR1cm4gbmV3IFBvaW50KHgsIHkpOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogRXhwYW5kIHRoZSBzcXVhcmUgcmVwcmVzZW50ZWQgYnkgdGhlIGNvcm5lciBwb2ludHMgYnkgcHVzaGluZyBvdXQgZXF1YWxseSBpbiBhbGwgZGlyZWN0aW9ucwoJICAgICAqCgkgICAgICogQHBhcmFtIGNvcm5lclBvaW50cyB0aGUgY29ybmVycyBvZiB0aGUgc3F1YXJlLCB3aGljaCBoYXMgdGhlIGJ1bGwncyBleWUgYXQgaXRzIGNlbnRlcgoJICAgICAqIEBwYXJhbSBvbGRTaWRlIHRoZSBvcmlnaW5hbCBsZW5ndGggb2YgdGhlIHNpZGUgb2YgdGhlIHNxdWFyZSBpbiB0aGUgdGFyZ2V0IGJpdCBtYXRyaXgKCSAgICAgKiBAcGFyYW0gbmV3U2lkZSB0aGUgbmV3IGxlbmd0aCBvZiB0aGUgc2l6ZSBvZiB0aGUgc3F1YXJlIGluIHRoZSB0YXJnZXQgYml0IG1hdHJpeAoJICAgICAqIEByZXR1cm4gdGhlIGNvcm5lcnMgb2YgdGhlIGV4cGFuZGVkIHNxdWFyZQoJICAgICAqLwoJICAgIERldGVjdG9yLnByb3RvdHlwZS5leHBhbmRTcXVhcmUgPSBmdW5jdGlvbiAoY29ybmVyUG9pbnRzLCBvbGRTaWRlLCBuZXdTaWRlKSB7CgkgICAgICAgIHZhciByYXRpbyA9IG5ld1NpZGUgLyAoMi4wICogb2xkU2lkZSk7CgkgICAgICAgIHZhciBkeCA9IGNvcm5lclBvaW50c1swXS5nZXRYKCkgLSBjb3JuZXJQb2ludHNbMl0uZ2V0WCgpOwoJICAgICAgICB2YXIgZHkgPSBjb3JuZXJQb2ludHNbMF0uZ2V0WSgpIC0gY29ybmVyUG9pbnRzWzJdLmdldFkoKTsKCSAgICAgICAgdmFyIGNlbnRlcnggPSAoY29ybmVyUG9pbnRzWzBdLmdldFgoKSArIGNvcm5lclBvaW50c1syXS5nZXRYKCkpIC8gMi4wOwoJICAgICAgICB2YXIgY2VudGVyeSA9IChjb3JuZXJQb2ludHNbMF0uZ2V0WSgpICsgY29ybmVyUG9pbnRzWzJdLmdldFkoKSkgLyAyLjA7CgkgICAgICAgIHZhciByZXN1bHQwID0gbmV3IFJlc3VsdFBvaW50XzEuZGVmYXVsdChjZW50ZXJ4ICsgcmF0aW8gKiBkeCwgY2VudGVyeSArIHJhdGlvICogZHkpOwoJICAgICAgICB2YXIgcmVzdWx0MiA9IG5ldyBSZXN1bHRQb2ludF8xLmRlZmF1bHQoY2VudGVyeCAtIHJhdGlvICogZHgsIGNlbnRlcnkgLSByYXRpbyAqIGR5KTsKCSAgICAgICAgZHggPSBjb3JuZXJQb2ludHNbMV0uZ2V0WCgpIC0gY29ybmVyUG9pbnRzWzNdLmdldFgoKTsKCSAgICAgICAgZHkgPSBjb3JuZXJQb2ludHNbMV0uZ2V0WSgpIC0gY29ybmVyUG9pbnRzWzNdLmdldFkoKTsKCSAgICAgICAgY2VudGVyeCA9IChjb3JuZXJQb2ludHNbMV0uZ2V0WCgpICsgY29ybmVyUG9pbnRzWzNdLmdldFgoKSkgLyAyLjA7CgkgICAgICAgIGNlbnRlcnkgPSAoY29ybmVyUG9pbnRzWzFdLmdldFkoKSArIGNvcm5lclBvaW50c1szXS5nZXRZKCkpIC8gMi4wOwoJICAgICAgICB2YXIgcmVzdWx0MSA9IG5ldyBSZXN1bHRQb2ludF8xLmRlZmF1bHQoY2VudGVyeCArIHJhdGlvICogZHgsIGNlbnRlcnkgKyByYXRpbyAqIGR5KTsKCSAgICAgICAgdmFyIHJlc3VsdDMgPSBuZXcgUmVzdWx0UG9pbnRfMS5kZWZhdWx0KGNlbnRlcnggLSByYXRpbyAqIGR4LCBjZW50ZXJ5IC0gcmF0aW8gKiBkeSk7CgkgICAgICAgIHZhciByZXN1bHRzID0gW3Jlc3VsdDAsIHJlc3VsdDEsIHJlc3VsdDIsIHJlc3VsdDNdOwoJICAgICAgICByZXR1cm4gcmVzdWx0czsKCSAgICB9OwoJICAgIERldGVjdG9yLnByb3RvdHlwZS5pc1ZhbGlkID0gZnVuY3Rpb24gKHgsIHkpIHsKCSAgICAgICAgcmV0dXJuIHggPj0gMCAmJiB4IDwgdGhpcy5pbWFnZS5nZXRXaWR0aCgpICYmIHkgPiAwICYmIHkgPCB0aGlzLmltYWdlLmdldEhlaWdodCgpOwoJICAgIH07CgkgICAgRGV0ZWN0b3IucHJvdG90eXBlLmlzVmFsaWRQb2ludCA9IGZ1bmN0aW9uIChwb2ludCkgewoJICAgICAgICB2YXIgeCA9IE1hdGhVdGlsc18xLmRlZmF1bHQucm91bmQocG9pbnQuZ2V0WCgpKTsKCSAgICAgICAgdmFyIHkgPSBNYXRoVXRpbHNfMS5kZWZhdWx0LnJvdW5kKHBvaW50LmdldFkoKSk7CgkgICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQoeCwgeSk7CgkgICAgfTsKCSAgICBEZXRlY3Rvci5wcm90b3R5cGUuZGlzdGFuY2VQb2ludCA9IGZ1bmN0aW9uIChhLCBiKSB7CgkgICAgICAgIHJldHVybiBNYXRoVXRpbHNfMS5kZWZhdWx0LmRpc3RhbmNlKGEuZ2V0WCgpLCBhLmdldFkoKSwgYi5nZXRYKCksIGIuZ2V0WSgpKTsKCSAgICB9OwoJICAgIERldGVjdG9yLnByb3RvdHlwZS5kaXN0YW5jZVJlc3VsdFBvaW50ID0gZnVuY3Rpb24gKGEsIGIpIHsKCSAgICAgICAgcmV0dXJuIE1hdGhVdGlsc18xLmRlZmF1bHQuZGlzdGFuY2UoYS5nZXRYKCksIGEuZ2V0WSgpLCBiLmdldFgoKSwgYi5nZXRZKCkpOwoJICAgIH07CgkgICAgRGV0ZWN0b3IucHJvdG90eXBlLmdldERpbWVuc2lvbiA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgaWYgKHRoaXMuY29tcGFjdCkgewoJICAgICAgICAgICAgcmV0dXJuIDQgKiB0aGlzLm5iTGF5ZXJzICsgMTE7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKHRoaXMubmJMYXllcnMgPD0gNCkgewoJICAgICAgICAgICAgcmV0dXJuIDQgKiB0aGlzLm5iTGF5ZXJzICsgMTU7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIDQgKiB0aGlzLm5iTGF5ZXJzICsgMiAqIChJbnRlZ2VyXzEuZGVmYXVsdC50cnVuY0RpdmlzaW9uKCh0aGlzLm5iTGF5ZXJzIC0gNCksIDgpICsgMSkgKyAxNTsKCSAgICB9OwoJICAgIHJldHVybiBEZXRlY3RvcjsKCX0oKSk7CglleHBvcnRzLmRlZmF1bHQgPSBEZXRlY3RvcjsKCgl9KTsKCgl2YXIgQXp0ZWNSZWFkZXJfMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCS8qCgkgKiBDb3B5cmlnaHQgMjAxMCBaWGluZyBhdXRob3JzCgkgKgoJICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSAqCgkgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJICoKCSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJICovCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoKCgoKCgoKCS8vIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsKCS8vIGltcG9ydCBqYXZhLnV0aWwuTWFwOwoJLyoqCgkgKiBUaGlzIGltcGxlbWVudGF0aW9uIGNhbiBkZXRlY3QgYW5kIGRlY29kZSBBenRlYyBjb2RlcyBpbiBhbiBpbWFnZS4KCSAqCgkgKiBAYXV0aG9yIERhdmlkIE9saXZpZXIKCSAqLwoJdmFyIEF6dGVjUmVhZGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIGZ1bmN0aW9uIEF6dGVjUmVhZGVyKCkgewoJICAgIH0KCSAgICAvKioKCSAgICAgKiBMb2NhdGVzIGFuZCBkZWNvZGVzIGEgRGF0YSBNYXRyaXggY29kZSBpbiBhbiBpbWFnZS4KCSAgICAgKgoJICAgICAqIEByZXR1cm4gYSBTdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBjb250ZW50IGVuY29kZWQgYnkgdGhlIERhdGEgTWF0cml4IGNvZGUKCSAgICAgKiBAdGhyb3dzIE5vdEZvdW5kRXhjZXB0aW9uIGlmIGEgRGF0YSBNYXRyaXggY29kZSBjYW5ub3QgYmUgZm91bmQKCSAgICAgKiBAdGhyb3dzIEZvcm1hdEV4Y2VwdGlvbiBpZiBhIERhdGEgTWF0cml4IGNvZGUgY2Fubm90IGJlIGRlY29kZWQKCSAgICAgKi8KCSAgICBBenRlY1JlYWRlci5wcm90b3R5cGUuZGVjb2RlID0gZnVuY3Rpb24gKGltYWdlLCBoaW50cykgewoJICAgICAgICBpZiAoaGludHMgPT09IHZvaWQgMCkgeyBoaW50cyA9IG51bGw7IH0KCSAgICAgICAgdmFyIGV4Y2VwdGlvbiA9IG51bGw7CgkgICAgICAgIHZhciBkZXRlY3RvciA9IG5ldyBEZXRlY3Rvcl8xLmRlZmF1bHQoaW1hZ2UuZ2V0QmxhY2tNYXRyaXgoKSk7CgkgICAgICAgIHZhciBwb2ludHMgPSBudWxsOwoJICAgICAgICB2YXIgZGVjb2RlclJlc3VsdCA9IG51bGw7CgkgICAgICAgIHRyeSB7CgkgICAgICAgICAgICB2YXIgZGV0ZWN0b3JSZXN1bHQgPSBkZXRlY3Rvci5kZXRlY3RNaXJyb3IoZmFsc2UpOwoJICAgICAgICAgICAgcG9pbnRzID0gZGV0ZWN0b3JSZXN1bHQuZ2V0UG9pbnRzKCk7CgkgICAgICAgICAgICB0aGlzLnJlcG9ydEZvdW5kUmVzdWx0UG9pbnRzKGhpbnRzLCBwb2ludHMpOwoJICAgICAgICAgICAgZGVjb2RlclJlc3VsdCA9IG5ldyBEZWNvZGVyXzEuZGVmYXVsdCgpLmRlY29kZShkZXRlY3RvclJlc3VsdCk7CgkgICAgICAgIH0KCSAgICAgICAgY2F0Y2ggKGUpIHsKCSAgICAgICAgICAgIGV4Y2VwdGlvbiA9IGU7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKGRlY29kZXJSZXN1bHQgPT0gbnVsbCkgewoJICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICB2YXIgZGV0ZWN0b3JSZXN1bHQgPSBkZXRlY3Rvci5kZXRlY3RNaXJyb3IodHJ1ZSk7CgkgICAgICAgICAgICAgICAgcG9pbnRzID0gZGV0ZWN0b3JSZXN1bHQuZ2V0UG9pbnRzKCk7CgkgICAgICAgICAgICAgICAgdGhpcy5yZXBvcnRGb3VuZFJlc3VsdFBvaW50cyhoaW50cywgcG9pbnRzKTsKCSAgICAgICAgICAgICAgICBkZWNvZGVyUmVzdWx0ID0gbmV3IERlY29kZXJfMS5kZWZhdWx0KCkuZGVjb2RlKGRldGVjdG9yUmVzdWx0KTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGNhdGNoIChlKSB7CgkgICAgICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbiAhPSBudWxsKSB7CgkgICAgICAgICAgICAgICAgICAgIHRocm93IGV4Y2VwdGlvbjsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgdGhyb3cgZTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IFJlc3VsdF8xLmRlZmF1bHQoZGVjb2RlclJlc3VsdC5nZXRUZXh0KCksIGRlY29kZXJSZXN1bHQuZ2V0UmF3Qnl0ZXMoKSwgZGVjb2RlclJlc3VsdC5nZXROdW1CaXRzKCksIHBvaW50cywgQmFyY29kZUZvcm1hdF8xLmRlZmF1bHQuQVpURUMsIFN5c3RlbV8xLmRlZmF1bHQuY3VycmVudFRpbWVNaWxsaXMoKSk7CgkgICAgICAgIHZhciBieXRlU2VnbWVudHMgPSBkZWNvZGVyUmVzdWx0LmdldEJ5dGVTZWdtZW50cygpOwoJICAgICAgICBpZiAoYnl0ZVNlZ21lbnRzICE9IG51bGwpIHsKCSAgICAgICAgICAgIHJlc3VsdC5wdXRNZXRhZGF0YShSZXN1bHRNZXRhZGF0YVR5cGVfMS5kZWZhdWx0LkJZVEVfU0VHTUVOVFMsIGJ5dGVTZWdtZW50cyk7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGVjTGV2ZWwgPSBkZWNvZGVyUmVzdWx0LmdldEVDTGV2ZWwoKTsKCSAgICAgICAgaWYgKGVjTGV2ZWwgIT0gbnVsbCkgewoJICAgICAgICAgICAgcmVzdWx0LnB1dE1ldGFkYXRhKFJlc3VsdE1ldGFkYXRhVHlwZV8xLmRlZmF1bHQuRVJST1JfQ09SUkVDVElPTl9MRVZFTCwgZWNMZXZlbCk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHJlc3VsdDsKCSAgICB9OwoJICAgIEF6dGVjUmVhZGVyLnByb3RvdHlwZS5yZXBvcnRGb3VuZFJlc3VsdFBvaW50cyA9IGZ1bmN0aW9uIChoaW50cywgcG9pbnRzKSB7CgkgICAgICAgIGlmIChoaW50cyAhPSBudWxsKSB7CgkgICAgICAgICAgICB2YXIgcnBjYl8xID0gaGludHMuZ2V0KERlY29kZUhpbnRUeXBlXzEuZGVmYXVsdC5ORUVEX1JFU1VMVF9QT0lOVF9DQUxMQkFDSyk7CgkgICAgICAgICAgICBpZiAocnBjYl8xICE9IG51bGwpIHsKCSAgICAgICAgICAgICAgICBwb2ludHMuZm9yRWFjaChmdW5jdGlvbiAocG9pbnQsIGlkeCwgYXJyKSB7CgkgICAgICAgICAgICAgICAgICAgIHJwY2JfMS5mb3VuZFBvc3NpYmxlUmVzdWx0UG9pbnQocG9pbnQpOwoJICAgICAgICAgICAgICAgIH0pOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgfTsKCSAgICAvLyBAT3ZlcnJpZGUKCSAgICBBenRlY1JlYWRlci5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIC8vIGRvIG5vdGhpbmcKCSAgICB9OwoJICAgIHJldHVybiBBenRlY1JlYWRlcjsKCX0oKSk7CglleHBvcnRzLmRlZmF1bHQgPSBBenRlY1JlYWRlcjsKCgl9KTsKCgl2YXIgQnJvd3NlckF6dGVjQ29kZVJlYWRlcl8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJdmFyIF9fZXh0ZW5kcyA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7CgkgICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8CgkgICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8CgkgICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTsKCSAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgfTsKCSAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9CgkgICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTsKCSAgICB9OwoJfSkoKTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CglleHBvcnRzLkJyb3dzZXJBenRlY0NvZGVSZWFkZXIgPSB2b2lkIDA7CgoKCS8qKgoJICogQXp0ZWMgQ29kZSByZWFkZXIgdG8gdXNlIGZyb20gYnJvd3Nlci4KCSAqCgkgKiBAY2xhc3MgQnJvd3NlckF6dGVjQ29kZVJlYWRlcgoJICogQGV4dGVuZHMge0Jyb3dzZXJDb2RlUmVhZGVyfQoJICovCgl2YXIgQnJvd3NlckF6dGVjQ29kZVJlYWRlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHsKCSAgICBfX2V4dGVuZHMoQnJvd3NlckF6dGVjQ29kZVJlYWRlciwgX3N1cGVyKTsKCSAgICAvKioKCSAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIEJyb3dzZXJBenRlY0NvZGVSZWFkZXIuCgkgICAgICogQHBhcmFtIHtudW1iZXJ9IFt0aW1lQmV0d2VlblNjYW5zTWlsbGlzPTUwMF0gdGhlIHRpbWUgZGVsYXkgYmV0d2VlbiBzdWJzZXF1ZW50IGRlY29kZSB0cmllcwoJICAgICAqCgkgICAgICogQG1lbWJlck9mIEJyb3dzZXJBenRlY0NvZGVSZWFkZXIKCSAgICAgKi8KCSAgICBmdW5jdGlvbiBCcm93c2VyQXp0ZWNDb2RlUmVhZGVyKHRpbWVCZXR3ZWVuU2NhbnNNaWxsaXMpIHsKCSAgICAgICAgaWYgKHRpbWVCZXR3ZWVuU2NhbnNNaWxsaXMgPT09IHZvaWQgMCkgeyB0aW1lQmV0d2VlblNjYW5zTWlsbGlzID0gNTAwOyB9CgkgICAgICAgIHJldHVybiBfc3VwZXIuY2FsbCh0aGlzLCBuZXcgQXp0ZWNSZWFkZXJfMS5kZWZhdWx0KCksIHRpbWVCZXR3ZWVuU2NhbnNNaWxsaXMpIHx8IHRoaXM7CgkgICAgfQoJICAgIHJldHVybiBCcm93c2VyQXp0ZWNDb2RlUmVhZGVyOwoJfShCcm93c2VyQ29kZVJlYWRlcl8xLkJyb3dzZXJDb2RlUmVhZGVyKSk7CglleHBvcnRzLkJyb3dzZXJBenRlY0NvZGVSZWFkZXIgPSBCcm93c2VyQXp0ZWNDb2RlUmVhZGVyOwoKCX0pOwoKCXZhciBPbmVEUmVhZGVyXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CgkvKgoJICogQ29weXJpZ2h0IDIwMDggWlhpbmcgYXV0aG9ycwoJICoKCSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkgKgoJICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSAqCgkgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSAqLwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCgoKCgoJLyoqCgkgKiBFbmNhcHN1bGF0ZXMgZnVuY3Rpb25hbGl0eSBhbmQgaW1wbGVtZW50YXRpb24gdGhhdCBpcyBjb21tb24gdG8gYWxsIGZhbWlsaWVzCgkgKiBvZiBvbmUtZGltZW5zaW9uYWwgYmFyY29kZXMuCgkgKgoJICogQGF1dGhvciBkc3dpdGtpbkBnb29nbGUuY29tIChEYW5pZWwgU3dpdGtpbikKCSAqIEBhdXRob3IgU2VhbiBPd2VuCgkgKi8KCXZhciBPbmVEUmVhZGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIGZ1bmN0aW9uIE9uZURSZWFkZXIoKSB7CgkgICAgfQoJICAgIC8qCgkgICAgQE92ZXJyaWRlCgkgICAgcHVibGljIFJlc3VsdCBkZWNvZGUoQmluYXJ5Qml0bWFwIGltYWdlKSB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb24sIEZvcm1hdEV4Y2VwdGlvbiB7CgkgICAgICByZXR1cm4gZGVjb2RlKGltYWdlLCBudWxsKTsKCSAgICB9CgkgICAgKi8KCSAgICAvLyBOb3RlIHRoYXQgd2UgZG9uJ3QgdHJ5IHJvdGF0aW9uIHdpdGhvdXQgdGhlIHRyeSBoYXJkZXIgZmxhZywgZXZlbiBpZiByb3RhdGlvbiB3YXMgc3VwcG9ydGVkLgoJICAgIC8vIEBPdmVycmlkZQoJICAgIE9uZURSZWFkZXIucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uIChpbWFnZSwgaGludHMpIHsKCSAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgIHJldHVybiB0aGlzLmRvRGVjb2RlKGltYWdlLCBoaW50cyk7CgkgICAgICAgIH0KCSAgICAgICAgY2F0Y2ggKG5mZSkgewoJICAgICAgICAgICAgdmFyIHRyeUhhcmRlciA9IGhpbnRzICYmIChoaW50cy5nZXQoRGVjb2RlSGludFR5cGVfMS5kZWZhdWx0LlRSWV9IQVJERVIpID09PSB0cnVlKTsKCSAgICAgICAgICAgIGlmICh0cnlIYXJkZXIgJiYgaW1hZ2UuaXNSb3RhdGVTdXBwb3J0ZWQoKSkgewoJICAgICAgICAgICAgICAgIHZhciByb3RhdGVkSW1hZ2UgPSBpbWFnZS5yb3RhdGVDb3VudGVyQ2xvY2t3aXNlKCk7CgkgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuZG9EZWNvZGUocm90YXRlZEltYWdlLCBoaW50cyk7CgkgICAgICAgICAgICAgICAgLy8gUmVjb3JkIHRoYXQgd2UgZm91bmQgaXQgcm90YXRlZCA5MCBkZWdyZWVzIENDVyAvIDI3MCBkZWdyZWVzIENXCgkgICAgICAgICAgICAgICAgdmFyIG1ldGFkYXRhID0gcmVzdWx0LmdldFJlc3VsdE1ldGFkYXRhKCk7CgkgICAgICAgICAgICAgICAgdmFyIG9yaWVudGF0aW9uXzEgPSAyNzA7CgkgICAgICAgICAgICAgICAgaWYgKG1ldGFkYXRhICE9PSBudWxsICYmIChtZXRhZGF0YS5nZXQoUmVzdWx0TWV0YWRhdGFUeXBlXzEuZGVmYXVsdC5PUklFTlRBVElPTikgPT09IHRydWUpKSB7CgkgICAgICAgICAgICAgICAgICAgIC8vIEJ1dCBpZiB3ZSBmb3VuZCBpdCByZXZlcnNlZCBpbiBkb0RlY29kZSgpLCBhZGQgaW4gdGhhdCByZXN1bHQgaGVyZToKCSAgICAgICAgICAgICAgICAgICAgb3JpZW50YXRpb25fMSA9IChvcmllbnRhdGlvbl8xICsgbWV0YWRhdGEuZ2V0KFJlc3VsdE1ldGFkYXRhVHlwZV8xLmRlZmF1bHQuT1JJRU5UQVRJT04pICUgMzYwKTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgcmVzdWx0LnB1dE1ldGFkYXRhKFJlc3VsdE1ldGFkYXRhVHlwZV8xLmRlZmF1bHQuT1JJRU5UQVRJT04sIG9yaWVudGF0aW9uXzEpOwoJICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSByZXN1bHQgcG9pbnRzCgkgICAgICAgICAgICAgICAgdmFyIHBvaW50cyA9IHJlc3VsdC5nZXRSZXN1bHRQb2ludHMoKTsKCSAgICAgICAgICAgICAgICBpZiAocG9pbnRzICE9PSBudWxsKSB7CgkgICAgICAgICAgICAgICAgICAgIHZhciBoZWlnaHQgPSByb3RhdGVkSW1hZ2UuZ2V0SGVpZ2h0KCk7CgkgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBwb2ludHNbaV0gPSBuZXcgUmVzdWx0UG9pbnRfMS5kZWZhdWx0KGhlaWdodCAtIHBvaW50c1tpXS5nZXRZKCkgLSAxLCBwb2ludHNbaV0uZ2V0WCgpKTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgfTsKCSAgICAvLyBAT3ZlcnJpZGUKCSAgICBPbmVEUmVhZGVyLnByb3RvdHlwZS5yZXNldCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgLy8gZG8gbm90aGluZwoJICAgIH07CgkgICAgLyoqCgkgICAgICogV2UncmUgZ29pbmcgdG8gZXhhbWluZSByb3dzIGZyb20gdGhlIG1pZGRsZSBvdXR3YXJkLCBzZWFyY2hpbmcgYWx0ZXJuYXRlbHkgYWJvdmUgYW5kIGJlbG93IHRoZQoJICAgICAqIG1pZGRsZSwgYW5kIGZhcnRoZXIgb3V0IGVhY2ggdGltZS4gcm93U3RlcCBpcyB0aGUgbnVtYmVyIG9mIHJvd3MgYmV0d2VlbiBlYWNoIHN1Y2Nlc3NpdmUKCSAgICAgKiBhdHRlbXB0IGFib3ZlIGFuZCBiZWxvdyB0aGUgbWlkZGxlLiBTbyB3ZSdkIHNjYW4gcm93IG1pZGRsZSwgdGhlbiBtaWRkbGUgLSByb3dTdGVwLCB0aGVuCgkgICAgICogbWlkZGxlICsgcm93U3RlcCwgdGhlbiBtaWRkbGUgLSAoMiAqIHJvd1N0ZXApLCBldGMuCgkgICAgICogcm93U3RlcCBpcyBiaWdnZXIgYXMgdGhlIGltYWdlIGlzIHRhbGxlciwgYnV0IGlzIGFsd2F5cyBhdCBsZWFzdCAxLiBXZSd2ZSBzb21ld2hhdCBhcmJpdHJhcmlseQoJICAgICAqIGRlY2lkZWQgdGhhdCBtb3ZpbmcgdXAgYW5kIGRvd24gYnkgYWJvdXQgMS8xNiBvZiB0aGUgaW1hZ2UgaXMgcHJldHR5IGdvb2Q7IHdlIHRyeSBtb3JlIG9mIHRoZQoJICAgICAqIGltYWdlIGlmICJ0cnlpbmcgaGFyZGVyIi4KCSAgICAgKgoJICAgICAqIEBwYXJhbSBpbWFnZSBUaGUgaW1hZ2UgdG8gZGVjb2RlCgkgICAgICogQHBhcmFtIGhpbnRzIEFueSBoaW50cyB0aGF0IHdlcmUgcmVxdWVzdGVkCgkgICAgICogQHJldHVybiBUaGUgY29udGVudHMgb2YgdGhlIGRlY29kZWQgYmFyY29kZQoJICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb24gQW55IHNwb250YW5lb3VzIGVycm9ycyB3aGljaCBvY2N1cgoJICAgICAqLwoJICAgIE9uZURSZWFkZXIucHJvdG90eXBlLmRvRGVjb2RlID0gZnVuY3Rpb24gKGltYWdlLCBoaW50cykgewoJICAgICAgICB2YXIgd2lkdGggPSBpbWFnZS5nZXRXaWR0aCgpOwoJICAgICAgICB2YXIgaGVpZ2h0ID0gaW1hZ2UuZ2V0SGVpZ2h0KCk7CgkgICAgICAgIHZhciByb3cgPSBuZXcgQml0QXJyYXlfMS5kZWZhdWx0KHdpZHRoKTsKCSAgICAgICAgdmFyIHRyeUhhcmRlciA9IGhpbnRzICYmIChoaW50cy5nZXQoRGVjb2RlSGludFR5cGVfMS5kZWZhdWx0LlRSWV9IQVJERVIpID09PSB0cnVlKTsKCSAgICAgICAgdmFyIHJvd1N0ZXAgPSBNYXRoLm1heCgxLCBoZWlnaHQgPj4gKHRyeUhhcmRlciA/IDggOiA1KSk7CgkgICAgICAgIHZhciBtYXhMaW5lczsKCSAgICAgICAgaWYgKHRyeUhhcmRlcikgewoJICAgICAgICAgICAgbWF4TGluZXMgPSBoZWlnaHQ7IC8vIExvb2sgYXQgdGhlIHdob2xlIGltYWdlLCBub3QganVzdCB0aGUgY2VudGVyCgkgICAgICAgIH0KCSAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICBtYXhMaW5lcyA9IDE1OyAvLyAxNSByb3dzIHNwYWNlZCAxLzMyIGFwYXJ0IGlzIHJvdWdobHkgdGhlIG1pZGRsZSBoYWxmIG9mIHRoZSBpbWFnZQoJICAgICAgICB9CgkgICAgICAgIHZhciBtaWRkbGUgPSBNYXRoLnRydW5jKGhlaWdodCAvIDIpOwoJICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IG1heExpbmVzOyB4KyspIHsKCSAgICAgICAgICAgIC8vIFNjYW5uaW5nIGZyb20gdGhlIG1pZGRsZSBvdXQuIERldGVybWluZSB3aGljaCByb3cgd2UncmUgbG9va2luZyBhdCBuZXh0OgoJICAgICAgICAgICAgdmFyIHJvd1N0ZXBzQWJvdmVPckJlbG93ID0gTWF0aC50cnVuYygoeCArIDEpIC8gMik7CgkgICAgICAgICAgICB2YXIgaXNBYm92ZSA9ICh4ICYgMHgwMSkgPT09IDA7IC8vIGkuZS4gaXMgeCBldmVuPwoJICAgICAgICAgICAgdmFyIHJvd051bWJlciA9IG1pZGRsZSArIHJvd1N0ZXAgKiAoaXNBYm92ZSA/IHJvd1N0ZXBzQWJvdmVPckJlbG93IDogLXJvd1N0ZXBzQWJvdmVPckJlbG93KTsKCSAgICAgICAgICAgIGlmIChyb3dOdW1iZXIgPCAwIHx8IHJvd051bWJlciA+PSBoZWlnaHQpIHsKCSAgICAgICAgICAgICAgICAvLyBPb3BzLCBpZiB3ZSBydW4gb2ZmIHRoZSB0b3Agb3IgYm90dG9tLCBzdG9wCgkgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICAvLyBFc3RpbWF0ZSBibGFjayBwb2ludCBmb3IgdGhpcyByb3cgYW5kIGxvYWQgaXQ6CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIHJvdyA9IGltYWdlLmdldEJsYWNrUm93KHJvd051bWJlciwgcm93KTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGNhdGNoIChpZ25vcmVkKSB7CgkgICAgICAgICAgICAgICAgY29udGludWU7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIChhdHRlbXB0KSB7CgkgICAgICAgICAgICAgICAgaWYgKGF0dGVtcHQgPT09IDEpIHsgLy8gdHJ5aW5nIGFnYWluPwoJICAgICAgICAgICAgICAgICAgICByb3cucmV2ZXJzZSgpOyAvLyByZXZlcnNlIHRoZSByb3cgYW5kIGNvbnRpbnVlCgkgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgbWVhbnMgd2Ugd2lsbCBvbmx5IGV2ZXIgZHJhdyByZXN1bHQgcG9pbnRzICpvbmNlKiBpbiB0aGUgbGlmZSBvZiB0aGlzIG1ldGhvZAoJICAgICAgICAgICAgICAgICAgICAvLyBzaW5jZSB3ZSB3YW50IHRvIGF2b2lkIGRyYXdpbmcgdGhlIHdyb25nIHBvaW50cyBhZnRlciBmbGlwcGluZyB0aGUgcm93LCBhbmQsCgkgICAgICAgICAgICAgICAgICAgIC8vIGRvbid0IHdhbnQgdG8gY2x1dHRlciB3aXRoIG5vaXNlIGZyb20gZXZlcnkgc2luZ2xlIHJvdyBzY2FuIC0tIGp1c3QgdGhlIHNjYW5zCgkgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQgc3RhcnQgb24gdGhlIGNlbnRlciBsaW5lLgoJICAgICAgICAgICAgICAgICAgICBpZiAoaGludHMgJiYgKGhpbnRzLmdldChEZWNvZGVIaW50VHlwZV8xLmRlZmF1bHQuTkVFRF9SRVNVTFRfUE9JTlRfQ0FMTEJBQ0spID09PSB0cnVlKSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5ld0hpbnRzXzEgPSBuZXcgTWFwKCk7CgkgICAgICAgICAgICAgICAgICAgICAgICBoaW50cy5mb3JFYWNoKGZ1bmN0aW9uIChoaW50LCBrZXkpIHsgcmV0dXJuIG5ld0hpbnRzXzEuc2V0KGtleSwgaGludCk7IH0pOwoJICAgICAgICAgICAgICAgICAgICAgICAgbmV3SGludHNfMS5kZWxldGUoRGVjb2RlSGludFR5cGVfMS5kZWZhdWx0Lk5FRURfUkVTVUxUX1BPSU5UX0NBTExCQUNLKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIGhpbnRzID0gbmV3SGludHNfMTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgICAgICAvLyBMb29rIGZvciBhIGJhcmNvZGUKCSAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXNfMS5kZWNvZGVSb3cocm93TnVtYmVyLCByb3csIGhpbnRzKTsKCSAgICAgICAgICAgICAgICAgICAgLy8gV2UgZm91bmQgb3VyIGJhcmNvZGUKCSAgICAgICAgICAgICAgICAgICAgaWYgKGF0dGVtcHQgPT09IDEpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJ1dCBpdCB3YXMgdXBzaWRlIGRvd24sIHNvIG5vdGUgdGhhdAoJICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1dE1ldGFkYXRhKFJlc3VsdE1ldGFkYXRhVHlwZV8xLmRlZmF1bHQuT1JJRU5UQVRJT04sIDE4MCk7CgkgICAgICAgICAgICAgICAgICAgICAgICAvLyBBbmQgcmVtZW1iZXIgdG8gZmxpcCB0aGUgcmVzdWx0IHBvaW50cyBob3Jpem9udGFsbHkuCgkgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcG9pbnRzID0gcmVzdWx0LmdldFJlc3VsdFBvaW50cygpOwoJICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBvaW50cyAhPT0gbnVsbCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50c1swXSA9IG5ldyBSZXN1bHRQb2ludF8xLmRlZmF1bHQod2lkdGggLSBwb2ludHNbMF0uZ2V0WCgpIC0gMSwgcG9pbnRzWzBdLmdldFkoKSk7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzWzFdID0gbmV3IFJlc3VsdFBvaW50XzEuZGVmYXVsdCh3aWR0aCAtIHBvaW50c1sxXS5nZXRYKCkgLSAxLCBwb2ludHNbMV0uZ2V0WSgpKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogcmVzdWx0IH07CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGNhdGNoIChyZSkgewoJICAgICAgICAgICAgICAgICAgICAvLyBjb250aW51ZSAtLSBqdXN0IGNvdWxkbid0IGRlY29kZSB0aGlzIHJvdwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH07CgkgICAgICAgICAgICB2YXIgdGhpc18xID0gdGhpczsKCSAgICAgICAgICAgIC8vIFdoaWxlIHdlIGhhdmUgdGhlIGltYWdlIGRhdGEgaW4gYSBCaXRBcnJheSwgaXQncyBmYWlybHkgY2hlYXAgdG8gcmV2ZXJzZSBpdCBpbiBwbGFjZSB0bwoJICAgICAgICAgICAgLy8gaGFuZGxlIGRlY29kaW5nIHVwc2lkZSBkb3duIGJhcmNvZGVzLgoJICAgICAgICAgICAgZm9yICh2YXIgYXR0ZW1wdCA9IDA7IGF0dGVtcHQgPCAyOyBhdHRlbXB0KyspIHsKCSAgICAgICAgICAgICAgICB2YXIgc3RhdGVfMSA9IF9sb29wXzEoYXR0ZW1wdCk7CgkgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBzdGF0ZV8xID09PSAib2JqZWN0IikKCSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRlXzEudmFsdWU7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogUmVjb3JkcyB0aGUgc2l6ZSBvZiBzdWNjZXNzaXZlIHJ1bnMgb2Ygd2hpdGUgYW5kIGJsYWNrIHBpeGVscyBpbiBhIHJvdywgc3RhcnRpbmcgYXQgYSBnaXZlbiBwb2ludC4KCSAgICAgKiBUaGUgdmFsdWVzIGFyZSByZWNvcmRlZCBpbiB0aGUgZ2l2ZW4gYXJyYXksIGFuZCB0aGUgbnVtYmVyIG9mIHJ1bnMgcmVjb3JkZWQgaXMgZXF1YWwgdG8gdGhlIHNpemUKCSAgICAgKiBvZiB0aGUgYXJyYXkuIElmIHRoZSByb3cgc3RhcnRzIG9uIGEgd2hpdGUgcGl4ZWwgYXQgdGhlIGdpdmVuIHN0YXJ0IHBvaW50LCB0aGVuIHRoZSBmaXJzdCBjb3VudAoJICAgICAqIHJlY29yZGVkIGlzIHRoZSBydW4gb2Ygd2hpdGUgcGl4ZWxzIHN0YXJ0aW5nIGZyb20gdGhhdCBwb2ludDsgbGlrZXdpc2UgaXQgaXMgdGhlIGNvdW50IG9mIGEgcnVuCgkgICAgICogb2YgYmxhY2sgcGl4ZWxzIGlmIHRoZSByb3cgYmVnaW4gb24gYSBibGFjayBwaXhlbHMgYXQgdGhhdCBwb2ludC4KCSAgICAgKgoJICAgICAqIEBwYXJhbSByb3cgcm93IHRvIGNvdW50IGZyb20KCSAgICAgKiBAcGFyYW0gc3RhcnQgb2Zmc2V0IGludG8gcm93IHRvIHN0YXJ0IGF0CgkgICAgICogQHBhcmFtIGNvdW50ZXJzIGFycmF5IGludG8gd2hpY2ggdG8gcmVjb3JkIGNvdW50cwoJICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb24gaWYgY291bnRlcnMgY2Fubm90IGJlIGZpbGxlZCBlbnRpcmVseSBmcm9tIHJvdyBiZWZvcmUgcnVubmluZyBvdXQKCSAgICAgKiAgb2YgcGl4ZWxzCgkgICAgICovCgkgICAgT25lRFJlYWRlci5yZWNvcmRQYXR0ZXJuID0gZnVuY3Rpb24gKHJvdywgc3RhcnQsIGNvdW50ZXJzKSB7CgkgICAgICAgIHZhciBudW1Db3VudGVycyA9IGNvdW50ZXJzLmxlbmd0aDsKCSAgICAgICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IG51bUNvdW50ZXJzOyBpbmRleCsrKQoJICAgICAgICAgICAgY291bnRlcnNbaW5kZXhdID0gMDsKCSAgICAgICAgdmFyIGVuZCA9IHJvdy5nZXRTaXplKCk7CgkgICAgICAgIGlmIChzdGFydCA+PSBlbmQpIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgaXNXaGl0ZSA9ICFyb3cuZ2V0KHN0YXJ0KTsKCSAgICAgICAgdmFyIGNvdW50ZXJQb3NpdGlvbiA9IDA7CgkgICAgICAgIHZhciBpID0gc3RhcnQ7CgkgICAgICAgIHdoaWxlIChpIDwgZW5kKSB7CgkgICAgICAgICAgICBpZiAocm93LmdldChpKSAhPT0gaXNXaGl0ZSkgewoJICAgICAgICAgICAgICAgIGNvdW50ZXJzW2NvdW50ZXJQb3NpdGlvbl0rKzsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgIGlmICgrK2NvdW50ZXJQb3NpdGlvbiA9PT0gbnVtQ291bnRlcnMpIHsKCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgICAgICBjb3VudGVyc1tjb3VudGVyUG9zaXRpb25dID0gMTsKCSAgICAgICAgICAgICAgICAgICAgaXNXaGl0ZSA9ICFpc1doaXRlOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGkrKzsKCSAgICAgICAgfQoJICAgICAgICAvLyBJZiB3ZSByZWFkIGZ1bGx5IHRoZSBsYXN0IHNlY3Rpb24gb2YgcGl4ZWxzIGFuZCBmaWxsZWQgdXAgb3VyIGNvdW50ZXJzIC0tIG9yIGZpbGxlZAoJICAgICAgICAvLyB0aGUgbGFzdCBjb3VudGVyIGJ1dCByYW4gb2ZmIHRoZSBzaWRlIG9mIHRoZSBpbWFnZSwgT0suIE90aGVyd2lzZSwgYSBwcm9ibGVtLgoJICAgICAgICBpZiAoIShjb3VudGVyUG9zaXRpb24gPT09IG51bUNvdW50ZXJzIHx8IChjb3VudGVyUG9zaXRpb24gPT09IG51bUNvdW50ZXJzIC0gMSAmJiBpID09PSBlbmQpKSkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgfTsKCSAgICBPbmVEUmVhZGVyLnJlY29yZFBhdHRlcm5JblJldmVyc2UgPSBmdW5jdGlvbiAocm93LCBzdGFydCwgY291bnRlcnMpIHsKCSAgICAgICAgLy8gVGhpcyBjb3VsZCBiZSBtb3JlIGVmZmljaWVudCBJIGd1ZXNzCgkgICAgICAgIHZhciBudW1UcmFuc2l0aW9uc0xlZnQgPSBjb3VudGVycy5sZW5ndGg7CgkgICAgICAgIHZhciBsYXN0ID0gcm93LmdldChzdGFydCk7CgkgICAgICAgIHdoaWxlIChzdGFydCA+IDAgJiYgbnVtVHJhbnNpdGlvbnNMZWZ0ID49IDApIHsKCSAgICAgICAgICAgIGlmIChyb3cuZ2V0KC0tc3RhcnQpICE9PSBsYXN0KSB7CgkgICAgICAgICAgICAgICAgbnVtVHJhbnNpdGlvbnNMZWZ0LS07CgkgICAgICAgICAgICAgICAgbGFzdCA9ICFsYXN0OwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGlmIChudW1UcmFuc2l0aW9uc0xlZnQgPj0gMCkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgICAgIE9uZURSZWFkZXIucmVjb3JkUGF0dGVybihyb3csIHN0YXJ0ICsgMSwgY291bnRlcnMpOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogRGV0ZXJtaW5lcyBob3cgY2xvc2VseSBhIHNldCBvZiBvYnNlcnZlZCBjb3VudHMgb2YgcnVucyBvZiBibGFjay93aGl0ZSB2YWx1ZXMgbWF0Y2hlcyBhIGdpdmVuCgkgICAgICogdGFyZ2V0IHBhdHRlcm4uIFRoaXMgaXMgcmVwb3J0ZWQgYXMgdGhlIHJhdGlvIG9mIHRoZSB0b3RhbCB2YXJpYW5jZSBmcm9tIHRoZSBleHBlY3RlZCBwYXR0ZXJuCgkgICAgICogcHJvcG9ydGlvbnMgYWNyb3NzIGFsbCBwYXR0ZXJuIGVsZW1lbnRzLCB0byB0aGUgbGVuZ3RoIG9mIHRoZSBwYXR0ZXJuLgoJICAgICAqCgkgICAgICogQHBhcmFtIGNvdW50ZXJzIG9ic2VydmVkIGNvdW50ZXJzCgkgICAgICogQHBhcmFtIHBhdHRlcm4gZXhwZWN0ZWQgcGF0dGVybgoJICAgICAqIEBwYXJhbSBtYXhJbmRpdmlkdWFsVmFyaWFuY2UgVGhlIG1vc3QgYW55IGNvdW50ZXIgY2FuIGRpZmZlciBiZWZvcmUgd2UgZ2l2ZSB1cAoJICAgICAqIEByZXR1cm4gcmF0aW8gb2YgdG90YWwgdmFyaWFuY2UgYmV0d2VlbiBjb3VudGVycyBhbmQgcGF0dGVybiBjb21wYXJlZCB0byB0b3RhbCBwYXR0ZXJuIHNpemUKCSAgICAgKi8KCSAgICBPbmVEUmVhZGVyLnBhdHRlcm5NYXRjaFZhcmlhbmNlID0gZnVuY3Rpb24gKGNvdW50ZXJzLCBwYXR0ZXJuLCBtYXhJbmRpdmlkdWFsVmFyaWFuY2UpIHsKCSAgICAgICAgdmFyIG51bUNvdW50ZXJzID0gY291bnRlcnMubGVuZ3RoOwoJICAgICAgICB2YXIgdG90YWwgPSAwOwoJICAgICAgICB2YXIgcGF0dGVybkxlbmd0aCA9IDA7CgkgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtQ291bnRlcnM7IGkrKykgewoJICAgICAgICAgICAgdG90YWwgKz0gY291bnRlcnNbaV07CgkgICAgICAgICAgICBwYXR0ZXJuTGVuZ3RoICs9IHBhdHRlcm5baV07CgkgICAgICAgIH0KCSAgICAgICAgaWYgKHRvdGFsIDwgcGF0dGVybkxlbmd0aCkgewoJICAgICAgICAgICAgLy8gSWYgd2UgZG9uJ3QgZXZlbiBoYXZlIG9uZSBwaXhlbCBwZXIgdW5pdCBvZiBiYXIgd2lkdGgsIGFzc3VtZSB0aGlzIGlzIHRvbyBzbWFsbAoJICAgICAgICAgICAgLy8gdG8gcmVsaWFibHkgbWF0Y2gsIHNvIGZhaWw6CgkgICAgICAgICAgICByZXR1cm4gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZOwoJICAgICAgICB9CgkgICAgICAgIHZhciB1bml0QmFyV2lkdGggPSB0b3RhbCAvIHBhdHRlcm5MZW5ndGg7CgkgICAgICAgIG1heEluZGl2aWR1YWxWYXJpYW5jZSAqPSB1bml0QmFyV2lkdGg7CgkgICAgICAgIHZhciB0b3RhbFZhcmlhbmNlID0gMC4wOwoJICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IG51bUNvdW50ZXJzOyB4KyspIHsKCSAgICAgICAgICAgIHZhciBjb3VudGVyID0gY291bnRlcnNbeF07CgkgICAgICAgICAgICB2YXIgc2NhbGVkUGF0dGVybiA9IHBhdHRlcm5beF0gKiB1bml0QmFyV2lkdGg7CgkgICAgICAgICAgICB2YXIgdmFyaWFuY2UgPSBjb3VudGVyID4gc2NhbGVkUGF0dGVybiA/IGNvdW50ZXIgLSBzY2FsZWRQYXR0ZXJuIDogc2NhbGVkUGF0dGVybiAtIGNvdW50ZXI7CgkgICAgICAgICAgICBpZiAodmFyaWFuY2UgPiBtYXhJbmRpdmlkdWFsVmFyaWFuY2UpIHsKCSAgICAgICAgICAgICAgICByZXR1cm4gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgdG90YWxWYXJpYW5jZSArPSB2YXJpYW5jZTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gdG90YWxWYXJpYW5jZSAvIHRvdGFsOwoJICAgIH07CgkgICAgcmV0dXJuIE9uZURSZWFkZXI7Cgl9KCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gT25lRFJlYWRlcjsKCgl9KTsKCgl2YXIgQ29kZTEyOFJlYWRlcl8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJLyoKCSAqIENvcHlyaWdodCAyMDA4IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCXZhciBfX2V4dGVuZHMgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkgewoJICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fAoJICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fAoJICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07CgkgICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgIH07CgkgICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfQoJICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7CgkgICAgfTsKCX0pKCk7CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJLypuYW1lc3BhY2UgY29tLmdvb2dsZS56eGluZy5vbmVkIHsqLwoKCgoKCgkvLyBpbXBvcnQgUmVhZGVyIGZyb20gJy4uL1JlYWRlcic7CgoJLy8gaW1wb3J0IFJlc3VsdE1ldGFkYXRhVHlwZSBmcm9tICcuLi9SZXN1bHRNZXRhZGF0YVR5cGUnOwoKCgkvKioKCSAqIDxwPkRlY29kZXMgQ29kZSAxMjggYmFyY29kZXMuPC9wPgoJICoKCSAqIEBhdXRob3IgU2VhbiBPd2VuCgkgKi8KCXZhciBDb2RlMTI4UmVhZGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikgewoJICAgIF9fZXh0ZW5kcyhDb2RlMTI4UmVhZGVyLCBfc3VwZXIpOwoJICAgIGZ1bmN0aW9uIENvZGUxMjhSZWFkZXIoKSB7CgkgICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpczsKCSAgICB9CgkgICAgQ29kZTEyOFJlYWRlci5maW5kU3RhcnRQYXR0ZXJuID0gZnVuY3Rpb24gKHJvdykgewoJICAgICAgICB2YXIgd2lkdGggPSByb3cuZ2V0U2l6ZSgpOwoJICAgICAgICB2YXIgcm93T2Zmc2V0ID0gcm93LmdldE5leHRTZXQoMCk7CgkgICAgICAgIHZhciBjb3VudGVyUG9zaXRpb24gPSAwOwoJICAgICAgICB2YXIgY291bnRlcnMgPSBJbnQzMkFycmF5LmZyb20oWzAsIDAsIDAsIDAsIDAsIDBdKTsKCSAgICAgICAgdmFyIHBhdHRlcm5TdGFydCA9IHJvd09mZnNldDsKCSAgICAgICAgdmFyIGlzV2hpdGUgPSBmYWxzZTsKCSAgICAgICAgdmFyIHBhdHRlcm5MZW5ndGggPSA2OwoJICAgICAgICBmb3IgKHZhciBpID0gcm93T2Zmc2V0OyBpIDwgd2lkdGg7IGkrKykgewoJICAgICAgICAgICAgaWYgKHJvdy5nZXQoaSkgIT09IGlzV2hpdGUpIHsKCSAgICAgICAgICAgICAgICBjb3VudGVyc1tjb3VudGVyUG9zaXRpb25dKys7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICBpZiAoY291bnRlclBvc2l0aW9uID09PSAocGF0dGVybkxlbmd0aCAtIDEpKSB7CgkgICAgICAgICAgICAgICAgICAgIHZhciBiZXN0VmFyaWFuY2UgPSBDb2RlMTI4UmVhZGVyLk1BWF9BVkdfVkFSSUFOQ0U7CgkgICAgICAgICAgICAgICAgICAgIHZhciBiZXN0TWF0Y2ggPSAtMTsKCSAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgc3RhcnRDb2RlID0gQ29kZTEyOFJlYWRlci5DT0RFX1NUQVJUX0E7IHN0YXJ0Q29kZSA8PSBDb2RlMTI4UmVhZGVyLkNPREVfU1RBUlRfQzsgc3RhcnRDb2RlKyspIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YXJpYW5jZSA9IE9uZURSZWFkZXJfMS5kZWZhdWx0LnBhdHRlcm5NYXRjaFZhcmlhbmNlKGNvdW50ZXJzLCBDb2RlMTI4UmVhZGVyLkNPREVfUEFUVEVSTlNbc3RhcnRDb2RlXSwgQ29kZTEyOFJlYWRlci5NQVhfSU5ESVZJRFVBTF9WQVJJQU5DRSk7CgkgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFyaWFuY2UgPCBiZXN0VmFyaWFuY2UpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZXN0VmFyaWFuY2UgPSB2YXJpYW5jZTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZXN0TWF0Y2ggPSBzdGFydENvZGU7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgLy8gTG9vayBmb3Igd2hpdGVzcGFjZSBiZWZvcmUgc3RhcnQgcGF0dGVybiwgPj0gNTAlIG9mIHdpZHRoIG9mIHN0YXJ0IHBhdHRlcm4KCSAgICAgICAgICAgICAgICAgICAgaWYgKGJlc3RNYXRjaCA+PSAwICYmCgkgICAgICAgICAgICAgICAgICAgICAgICByb3cuaXNSYW5nZShNYXRoLm1heCgwLCBwYXR0ZXJuU3RhcnQgLSAoaSAtIHBhdHRlcm5TdGFydCkgLyAyKSwgcGF0dGVyblN0YXJ0LCBmYWxzZSkpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBJbnQzMkFycmF5LmZyb20oW3BhdHRlcm5TdGFydCwgaSwgYmVzdE1hdGNoXSk7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgcGF0dGVyblN0YXJ0ICs9IGNvdW50ZXJzWzBdICsgY291bnRlcnNbMV07CgkgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJzID0gY291bnRlcnMuc2xpY2UoMiwgY291bnRlcnMubGVuZ3RoIC0gMSk7CgkgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJzW2NvdW50ZXJQb3NpdGlvbiAtIDFdID0gMDsKCSAgICAgICAgICAgICAgICAgICAgY291bnRlcnNbY291bnRlclBvc2l0aW9uXSA9IDA7CgkgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJQb3NpdGlvbi0tOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICAgICAgY291bnRlclBvc2l0aW9uKys7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGNvdW50ZXJzW2NvdW50ZXJQb3NpdGlvbl0gPSAxOwoJICAgICAgICAgICAgICAgIGlzV2hpdGUgPSAhaXNXaGl0ZTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgfTsKCSAgICBDb2RlMTI4UmVhZGVyLmRlY29kZUNvZGUgPSBmdW5jdGlvbiAocm93LCBjb3VudGVycywgcm93T2Zmc2V0KSB7CgkgICAgICAgIE9uZURSZWFkZXJfMS5kZWZhdWx0LnJlY29yZFBhdHRlcm4ocm93LCByb3dPZmZzZXQsIGNvdW50ZXJzKTsKCSAgICAgICAgdmFyIGJlc3RWYXJpYW5jZSA9IENvZGUxMjhSZWFkZXIuTUFYX0FWR19WQVJJQU5DRTsgLy8gd29yc3QgdmFyaWFuY2Ugd2UnbGwgYWNjZXB0CgkgICAgICAgIHZhciBiZXN0TWF0Y2ggPSAtMTsKCSAgICAgICAgZm9yICh2YXIgZCA9IDA7IGQgPCBDb2RlMTI4UmVhZGVyLkNPREVfUEFUVEVSTlMubGVuZ3RoOyBkKyspIHsKCSAgICAgICAgICAgIHZhciBwYXR0ZXJuID0gQ29kZTEyOFJlYWRlci5DT0RFX1BBVFRFUk5TW2RdOwoJICAgICAgICAgICAgdmFyIHZhcmlhbmNlID0gdGhpcy5wYXR0ZXJuTWF0Y2hWYXJpYW5jZShjb3VudGVycywgcGF0dGVybiwgQ29kZTEyOFJlYWRlci5NQVhfSU5ESVZJRFVBTF9WQVJJQU5DRSk7CgkgICAgICAgICAgICBpZiAodmFyaWFuY2UgPCBiZXN0VmFyaWFuY2UpIHsKCSAgICAgICAgICAgICAgICBiZXN0VmFyaWFuY2UgPSB2YXJpYW5jZTsKCSAgICAgICAgICAgICAgICBiZXN0TWF0Y2ggPSBkOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIC8vIFRPRE8gV2UncmUgb3Zlcmxvb2tpbmcgdGhlIGZhY3QgdGhhdCB0aGUgU1RPUCBwYXR0ZXJuIGhhcyA3IHZhbHVlcywgbm90IDYuCgkgICAgICAgIGlmIChiZXN0TWF0Y2ggPj0gMCkgewoJICAgICAgICAgICAgcmV0dXJuIGJlc3RNYXRjaDsKCSAgICAgICAgfQoJICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgfQoJICAgIH07CgkgICAgQ29kZTEyOFJlYWRlci5wcm90b3R5cGUuZGVjb2RlUm93ID0gZnVuY3Rpb24gKHJvd051bWJlciwgcm93LCBoaW50cykgewoJICAgICAgICB2YXIgY29udmVydEZOQzEgPSBoaW50cyAmJiAoaGludHMuZ2V0KERlY29kZUhpbnRUeXBlXzEuZGVmYXVsdC5BU1NVTUVfR1MxKSA9PT0gdHJ1ZSk7CgkgICAgICAgIHZhciBzdGFydFBhdHRlcm5JbmZvID0gQ29kZTEyOFJlYWRlci5maW5kU3RhcnRQYXR0ZXJuKHJvdyk7CgkgICAgICAgIHZhciBzdGFydENvZGUgPSBzdGFydFBhdHRlcm5JbmZvWzJdOwoJICAgICAgICB2YXIgY3VycmVudFJhd0NvZGVzSW5kZXggPSAwOwoJICAgICAgICB2YXIgcmF3Q29kZXMgPSBuZXcgVWludDhBcnJheSgyMCk7CgkgICAgICAgIHJhd0NvZGVzW2N1cnJlbnRSYXdDb2Rlc0luZGV4KytdID0gc3RhcnRDb2RlOwoJICAgICAgICB2YXIgY29kZVNldDsKCSAgICAgICAgc3dpdGNoIChzdGFydENvZGUpIHsKCSAgICAgICAgICAgIGNhc2UgQ29kZTEyOFJlYWRlci5DT0RFX1NUQVJUX0E6CgkgICAgICAgICAgICAgICAgY29kZVNldCA9IENvZGUxMjhSZWFkZXIuQ09ERV9DT0RFX0E7CgkgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICBjYXNlIENvZGUxMjhSZWFkZXIuQ09ERV9TVEFSVF9COgoJICAgICAgICAgICAgICAgIGNvZGVTZXQgPSBDb2RlMTI4UmVhZGVyLkNPREVfQ09ERV9COwoJICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgY2FzZSBDb2RlMTI4UmVhZGVyLkNPREVfU1RBUlRfQzoKCSAgICAgICAgICAgICAgICBjb2RlU2V0ID0gQ29kZTEyOFJlYWRlci5DT0RFX0NPREVfQzsKCSAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgIGRlZmF1bHQ6CgkgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgZG9uZSA9IGZhbHNlOwoJICAgICAgICB2YXIgaXNOZXh0U2hpZnRlZCA9IGZhbHNlOwoJICAgICAgICB2YXIgcmVzdWx0ID0gJyc7CgkgICAgICAgIHZhciBsYXN0U3RhcnQgPSBzdGFydFBhdHRlcm5JbmZvWzBdOwoJICAgICAgICB2YXIgbmV4dFN0YXJ0ID0gc3RhcnRQYXR0ZXJuSW5mb1sxXTsKCSAgICAgICAgdmFyIGNvdW50ZXJzID0gSW50MzJBcnJheS5mcm9tKFswLCAwLCAwLCAwLCAwLCAwXSk7CgkgICAgICAgIHZhciBsYXN0Q29kZSA9IDA7CgkgICAgICAgIHZhciBjb2RlID0gMDsKCSAgICAgICAgdmFyIGNoZWNrc3VtVG90YWwgPSBzdGFydENvZGU7CgkgICAgICAgIHZhciBtdWx0aXBsaWVyID0gMDsKCSAgICAgICAgdmFyIGxhc3RDaGFyYWN0ZXJXYXNQcmludGFibGUgPSB0cnVlOwoJICAgICAgICB2YXIgdXBwZXJNb2RlID0gZmFsc2U7CgkgICAgICAgIHZhciBzaGlmdFVwcGVyTW9kZSA9IGZhbHNlOwoJICAgICAgICB3aGlsZSAoIWRvbmUpIHsKCSAgICAgICAgICAgIHZhciB1bnNoaWZ0ID0gaXNOZXh0U2hpZnRlZDsKCSAgICAgICAgICAgIGlzTmV4dFNoaWZ0ZWQgPSBmYWxzZTsKCSAgICAgICAgICAgIC8vIFNhdmUgb2ZmIGxhc3QgY29kZQoJICAgICAgICAgICAgbGFzdENvZGUgPSBjb2RlOwoJICAgICAgICAgICAgLy8gRGVjb2RlIGFub3RoZXIgY29kZSBmcm9tIGltYWdlCgkgICAgICAgICAgICBjb2RlID0gQ29kZTEyOFJlYWRlci5kZWNvZGVDb2RlKHJvdywgY291bnRlcnMsIG5leHRTdGFydCk7CgkgICAgICAgICAgICByYXdDb2Rlc1tjdXJyZW50UmF3Q29kZXNJbmRleCsrXSA9IGNvZGU7CgkgICAgICAgICAgICAvLyBSZW1lbWJlciB3aGV0aGVyIHRoZSBsYXN0IGNvZGUgd2FzIHByaW50YWJsZSBvciBub3QgKGV4Y2x1ZGluZyBDT0RFX1NUT1ApCgkgICAgICAgICAgICBpZiAoY29kZSAhPT0gQ29kZTEyOFJlYWRlci5DT0RFX1NUT1ApIHsKCSAgICAgICAgICAgICAgICBsYXN0Q2hhcmFjdGVyV2FzUHJpbnRhYmxlID0gdHJ1ZTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIC8vIEFkZCB0byBjaGVja3N1bSBjb21wdXRhdGlvbiAoaWYgbm90IENPREVfU1RPUCBvZiBjb3Vyc2UpCgkgICAgICAgICAgICBpZiAoY29kZSAhPT0gQ29kZTEyOFJlYWRlci5DT0RFX1NUT1ApIHsKCSAgICAgICAgICAgICAgICBtdWx0aXBsaWVyKys7CgkgICAgICAgICAgICAgICAgY2hlY2tzdW1Ub3RhbCArPSBtdWx0aXBsaWVyICogY29kZTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIC8vIEFkdmFuY2UgdG8gd2hlcmUgdGhlIG5leHQgY29kZSB3aWxsIHRvIHN0YXJ0CgkgICAgICAgICAgICBsYXN0U3RhcnQgPSBuZXh0U3RhcnQ7CgkgICAgICAgICAgICBuZXh0U3RhcnQgKz0gY291bnRlcnMucmVkdWNlKGZ1bmN0aW9uIChwcmV2aW91cywgY3VycmVudCkgeyByZXR1cm4gcHJldmlvdXMgKyBjdXJyZW50OyB9LCAwKTsKCSAgICAgICAgICAgIC8vIFRha2UgY2FyZSBvZiBpbGxlZ2FsIHN0YXJ0IGNvZGVzCgkgICAgICAgICAgICBzd2l0Y2ggKGNvZGUpIHsKCSAgICAgICAgICAgICAgICBjYXNlIENvZGUxMjhSZWFkZXIuQ09ERV9TVEFSVF9BOgoJICAgICAgICAgICAgICAgIGNhc2UgQ29kZTEyOFJlYWRlci5DT0RFX1NUQVJUX0I6CgkgICAgICAgICAgICAgICAgY2FzZSBDb2RlMTI4UmVhZGVyLkNPREVfU1RBUlRfQzoKCSAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHN3aXRjaCAoY29kZVNldCkgewoJICAgICAgICAgICAgICAgIGNhc2UgQ29kZTEyOFJlYWRlci5DT0RFX0NPREVfQToKCSAgICAgICAgICAgICAgICAgICAgaWYgKGNvZGUgPCA2NCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNoaWZ0VXBwZXJNb2RlID09PSB1cHBlck1vZGUpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoJyAnLmNoYXJDb2RlQXQoMCkgKyBjb2RlKSk7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoJyAnLmNoYXJDb2RlQXQoMCkgKyBjb2RlICsgMTI4KSk7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICBzaGlmdFVwcGVyTW9kZSA9IGZhbHNlOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNvZGUgPCA5NikgewoJICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNoaWZ0VXBwZXJNb2RlID09PSB1cHBlck1vZGUpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoY29kZSAtIDY0KSk7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoY29kZSArIDY0KSk7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICBzaGlmdFVwcGVyTW9kZSA9IGZhbHNlOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgbGV0IENPREVfU1RPUCwgd2hpY2ggYWx3YXlzIGFwcGVhcnMsIGFmZmVjdCB3aGV0aGVyIHdoZXRoZXIgd2UgdGhpbmsgdGhlIGxhc3QKCSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvZGUgd2FzIHByaW50YWJsZSBvciBub3QuCgkgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29kZSAhPT0gQ29kZTEyOFJlYWRlci5DT0RFX1NUT1ApIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0Q2hhcmFjdGVyV2FzUHJpbnRhYmxlID0gZmFsc2U7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvZGUpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIENvZGUxMjhSZWFkZXIuQ09ERV9GTkNfMToKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnZlcnRGTkMxKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA9PT0gMCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdTMSBzcGVjaWZpY2F0aW9uIDUuNC4zLjcuIGFuZCA1LjQuNi40LiBJZiB0aGUgZmlyc3QgY2hhciBhZnRlciB0aGUgc3RhcnQgY29kZQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIEZOQzEgdGhlbiB0aGlzIGlzIEdTMS0xMjguIFdlIGFkZCB0aGUgc3ltYm9sb2d5IGlkZW50aWZpZXIuCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICddQzEnOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1MxIHNwZWNpZmljYXRpb24gNS40LjcuNS4gRXZlcnkgc3Vic2VxdWVudCBGTkMxIGlzIHJldHVybmVkIGFzIEFTQ0lJIDI5IChHUykKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgyOSk7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBDb2RlMTI4UmVhZGVyLkNPREVfRk5DXzI6CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBDb2RlMTI4UmVhZGVyLkNPREVfRk5DXzM6CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvIG5vdGhpbmc/CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQ29kZTEyOFJlYWRlci5DT0RFX0ZOQ180X0E6CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdXBwZXJNb2RlICYmIHNoaWZ0VXBwZXJNb2RlKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cHBlck1vZGUgPSB0cnVlOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpZnRVcHBlck1vZGUgPSBmYWxzZTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh1cHBlck1vZGUgJiYgc2hpZnRVcHBlck1vZGUpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwcGVyTW9kZSA9IGZhbHNlOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpZnRVcHBlck1vZGUgPSBmYWxzZTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaWZ0VXBwZXJNb2RlID0gdHJ1ZTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIENvZGUxMjhSZWFkZXIuQ09ERV9TSElGVDoKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNOZXh0U2hpZnRlZCA9IHRydWU7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVTZXQgPSBDb2RlMTI4UmVhZGVyLkNPREVfQ09ERV9COwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIENvZGUxMjhSZWFkZXIuQ09ERV9DT0RFX0I6CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVTZXQgPSBDb2RlMTI4UmVhZGVyLkNPREVfQ09ERV9COwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIENvZGUxMjhSZWFkZXIuQ09ERV9DT0RFX0M6CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVTZXQgPSBDb2RlMTI4UmVhZGVyLkNPREVfQ09ERV9DOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIENvZGUxMjhSZWFkZXIuQ09ERV9TVE9QOgoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lID0gdHJ1ZTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgY2FzZSBDb2RlMTI4UmVhZGVyLkNPREVfQ09ERV9COgoJICAgICAgICAgICAgICAgICAgICBpZiAoY29kZSA8IDk2KSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2hpZnRVcHBlck1vZGUgPT09IHVwcGVyTW9kZSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKCgnICcuY2hhckNvZGVBdCgwKSArIGNvZGUpKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKCgnICcuY2hhckNvZGVBdCgwKSArIGNvZGUgKyAxMjgpKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgIHNoaWZ0VXBwZXJNb2RlID0gZmFsc2U7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29kZSAhPT0gQ29kZTEyOFJlYWRlci5DT0RFX1NUT1ApIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0Q2hhcmFjdGVyV2FzUHJpbnRhYmxlID0gZmFsc2U7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvZGUpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIENvZGUxMjhSZWFkZXIuQ09ERV9GTkNfMToKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnZlcnRGTkMxKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA9PT0gMCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdTMSBzcGVjaWZpY2F0aW9uIDUuNC4zLjcuIGFuZCA1LjQuNi40LiBJZiB0aGUgZmlyc3QgY2hhciBhZnRlciB0aGUgc3RhcnQgY29kZQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIEZOQzEgdGhlbiB0aGlzIGlzIEdTMS0xMjguIFdlIGFkZCB0aGUgc3ltYm9sb2d5IGlkZW50aWZpZXIuCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICddQzEnOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1MxIHNwZWNpZmljYXRpb24gNS40LjcuNS4gRXZlcnkgc3Vic2VxdWVudCBGTkMxIGlzIHJldHVybmVkIGFzIEFTQ0lJIDI5IChHUykKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgyOSk7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBDb2RlMTI4UmVhZGVyLkNPREVfRk5DXzI6CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBDb2RlMTI4UmVhZGVyLkNPREVfRk5DXzM6CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvIG5vdGhpbmc/CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQ29kZTEyOFJlYWRlci5DT0RFX0ZOQ180X0I6CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdXBwZXJNb2RlICYmIHNoaWZ0VXBwZXJNb2RlKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cHBlck1vZGUgPSB0cnVlOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpZnRVcHBlck1vZGUgPSBmYWxzZTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh1cHBlck1vZGUgJiYgc2hpZnRVcHBlck1vZGUpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwcGVyTW9kZSA9IGZhbHNlOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpZnRVcHBlck1vZGUgPSBmYWxzZTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaWZ0VXBwZXJNb2RlID0gdHJ1ZTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIENvZGUxMjhSZWFkZXIuQ09ERV9TSElGVDoKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNOZXh0U2hpZnRlZCA9IHRydWU7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVTZXQgPSBDb2RlMTI4UmVhZGVyLkNPREVfQ09ERV9BOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIENvZGUxMjhSZWFkZXIuQ09ERV9DT0RFX0E6CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVTZXQgPSBDb2RlMTI4UmVhZGVyLkNPREVfQ09ERV9BOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIENvZGUxMjhSZWFkZXIuQ09ERV9DT0RFX0M6CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVTZXQgPSBDb2RlMTI4UmVhZGVyLkNPREVfQ09ERV9DOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIENvZGUxMjhSZWFkZXIuQ09ERV9TVE9QOgoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lID0gdHJ1ZTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgY2FzZSBDb2RlMTI4UmVhZGVyLkNPREVfQ09ERV9DOgoJICAgICAgICAgICAgICAgICAgICBpZiAoY29kZSA8IDEwMCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvZGUgPCAxMCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnMCc7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gY29kZTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb2RlICE9PSBDb2RlMTI4UmVhZGVyLkNPREVfU1RPUCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RDaGFyYWN0ZXJXYXNQcmludGFibGUgPSBmYWxzZTsKCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoY29kZSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQ29kZTEyOFJlYWRlci5DT0RFX0ZOQ18xOgoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udmVydEZOQzEpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoID09PSAwKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1MxIHNwZWNpZmljYXRpb24gNS40LjMuNy4gYW5kIDUuNC42LjQuIElmIHRoZSBmaXJzdCBjaGFyIGFmdGVyIHRoZSBzdGFydCBjb2RlCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgRk5DMSB0aGVuIHRoaXMgaXMgR1MxLTEyOC4gV2UgYWRkIHRoZSBzeW1ib2xvZ3kgaWRlbnRpZmllci4KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ11DMSc7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUzEgc3BlY2lmaWNhdGlvbiA1LjQuNy41LiBFdmVyeSBzdWJzZXF1ZW50IEZOQzEgaXMgcmV0dXJuZWQgYXMgQVNDSUkgMjkgKEdTKQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDI5KTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIENvZGUxMjhSZWFkZXIuQ09ERV9DT0RFX0E6CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVTZXQgPSBDb2RlMTI4UmVhZGVyLkNPREVfQ09ERV9BOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIENvZGUxMjhSZWFkZXIuQ09ERV9DT0RFX0I6CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVTZXQgPSBDb2RlMTI4UmVhZGVyLkNPREVfQ09ERV9COwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIENvZGUxMjhSZWFkZXIuQ09ERV9TVE9QOgoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lID0gdHJ1ZTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICAvLyBVbnNoaWZ0IGJhY2sgdG8gYW5vdGhlciBjb2RlIHNldCBpZiB3ZSB3ZXJlIHNoaWZ0ZWQKCSAgICAgICAgICAgIGlmICh1bnNoaWZ0KSB7CgkgICAgICAgICAgICAgICAgY29kZVNldCA9IGNvZGVTZXQgPT09IENvZGUxMjhSZWFkZXIuQ09ERV9DT0RFX0EgPyBDb2RlMTI4UmVhZGVyLkNPREVfQ09ERV9CIDogQ29kZTEyOFJlYWRlci5DT0RFX0NPREVfQTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICB2YXIgbGFzdFBhdHRlcm5TaXplID0gbmV4dFN0YXJ0IC0gbGFzdFN0YXJ0OwoJICAgICAgICAvLyBDaGVjayBmb3IgYW1wbGUgd2hpdGVzcGFjZSBmb2xsb3dpbmcgcGF0dGVybiwgYnV0LCB0byBkbyB0aGlzIHdlIGZpcnN0IG5lZWQgdG8gcmVtZW1iZXIgdGhhdAoJICAgICAgICAvLyB3ZSBmdWRnZWQgZGVjb2RpbmcgQ09ERV9TVE9QIHNpbmNlIGl0IGFjdHVhbGx5IGhhcyA3IGJhcnMsIG5vdCA2LiBUaGVyZSBpcyBhIGJsYWNrIGJhciBsZWZ0CgkgICAgICAgIC8vIHRvIHJlYWQgb2ZmLiBXb3VsZCBiZSBzbGlnaHRseSBiZXR0ZXIgdG8gcHJvcGVybHkgcmVhZC4gSGVyZSB3ZSBqdXN0IHNraXAgaXQ6CgkgICAgICAgIG5leHRTdGFydCA9IHJvdy5nZXROZXh0VW5zZXQobmV4dFN0YXJ0KTsKCSAgICAgICAgaWYgKCFyb3cuaXNSYW5nZShuZXh0U3RhcnQsIE1hdGgubWluKHJvdy5nZXRTaXplKCksIG5leHRTdGFydCArIChuZXh0U3RhcnQgLSBsYXN0U3RhcnQpIC8gMiksIGZhbHNlKSkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgICAgIC8vIFB1bGwgb3V0IGZyb20gc3VtIHRoZSB2YWx1ZSBvZiB0aGUgcGVudWx0aW1hdGUgY2hlY2sgY29kZQoJICAgICAgICBjaGVja3N1bVRvdGFsIC09IG11bHRpcGxpZXIgKiBsYXN0Q29kZTsKCSAgICAgICAgLy8gbGFzdENvZGUgaXMgdGhlIGNoZWNrc3VtIHRoZW46CgkgICAgICAgIGlmIChjaGVja3N1bVRvdGFsICUgMTAzICE9PSBsYXN0Q29kZSkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IENoZWNrc3VtRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgICAgIC8vIE5lZWQgdG8gcHVsbCBvdXQgdGhlIGNoZWNrIGRpZ2l0cyBmcm9tIHN0cmluZwoJICAgICAgICB2YXIgcmVzdWx0TGVuZ3RoID0gcmVzdWx0Lmxlbmd0aDsKCSAgICAgICAgaWYgKHJlc3VsdExlbmd0aCA9PT0gMCkgewoJICAgICAgICAgICAgLy8gZmFsc2UgcG9zaXRpdmUKCSAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgfQoJICAgICAgICAvLyBPbmx5IGJvdGhlciBpZiB0aGUgcmVzdWx0IGhhZCBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBhbmQgaWYgdGhlIGNoZWNrc3VtIGRpZ2l0IGhhcHBlbmVkIHRvCgkgICAgICAgIC8vIGJlIGEgcHJpbnRhYmxlIGNoYXJhY3Rlci4gSWYgaXQgd2FzIGp1c3QgaW50ZXJwcmV0ZWQgYXMgYSBjb250cm9sIGNvZGUsIG5vdGhpbmcgdG8gcmVtb3ZlLgoJICAgICAgICBpZiAocmVzdWx0TGVuZ3RoID4gMCAmJiBsYXN0Q2hhcmFjdGVyV2FzUHJpbnRhYmxlKSB7CgkgICAgICAgICAgICBpZiAoY29kZVNldCA9PT0gQ29kZTEyOFJlYWRlci5DT0RFX0NPREVfQykgewoJICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5zdWJzdHJpbmcoMCwgcmVzdWx0TGVuZ3RoIC0gMik7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQuc3Vic3RyaW5nKDAsIHJlc3VsdExlbmd0aCAtIDEpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHZhciBsZWZ0ID0gKHN0YXJ0UGF0dGVybkluZm9bMV0gKyBzdGFydFBhdHRlcm5JbmZvWzBdKSAvIDIuMDsKCSAgICAgICAgdmFyIHJpZ2h0ID0gbGFzdFN0YXJ0ICsgbGFzdFBhdHRlcm5TaXplIC8gMi4wOwoJICAgICAgICB2YXIgcmF3Q29kZXNTaXplID0gcmF3Q29kZXMubGVuZ3RoOwoJICAgICAgICB2YXIgcmF3Qnl0ZXMgPSBuZXcgVWludDhBcnJheShyYXdDb2Rlc1NpemUpOwoJICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJhd0NvZGVzU2l6ZTsgaSsrKSB7CgkgICAgICAgICAgICByYXdCeXRlc1tpXSA9IHJhd0NvZGVzW2ldOwoJICAgICAgICB9CgkgICAgICAgIHZhciBwb2ludHMgPSBbbmV3IFJlc3VsdFBvaW50XzEuZGVmYXVsdChsZWZ0LCByb3dOdW1iZXIpLCBuZXcgUmVzdWx0UG9pbnRfMS5kZWZhdWx0KHJpZ2h0LCByb3dOdW1iZXIpXTsKCSAgICAgICAgcmV0dXJuIG5ldyBSZXN1bHRfMS5kZWZhdWx0KHJlc3VsdCwgcmF3Qnl0ZXMsIDAsIHBvaW50cywgQmFyY29kZUZvcm1hdF8xLmRlZmF1bHQuQ09ERV8xMjgsIG5ldyBEYXRlKCkuZ2V0VGltZSgpKTsKCSAgICB9OwoJICAgIENvZGUxMjhSZWFkZXIuQ09ERV9QQVRURVJOUyA9IFsKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsyLCAxLCAyLCAyLCAyLCAyXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMiwgMiwgMiwgMSwgMiwgMl0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzIsIDIsIDIsIDIsIDIsIDFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAyLCAxLCAyLCAyLCAzXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMiwgMSwgMywgMiwgMl0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDMsIDEsIDIsIDIsIDJdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAyLCAyLCAyLCAxLCAzXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMiwgMiwgMywgMSwgMl0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDMsIDIsIDIsIDEsIDJdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsyLCAyLCAxLCAyLCAxLCAzXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMiwgMiwgMSwgMywgMSwgMl0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzIsIDMsIDEsIDIsIDEsIDJdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAxLCAyLCAyLCAzLCAyXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMiwgMiwgMSwgMywgMl0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDIsIDIsIDIsIDMsIDFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAxLCAzLCAyLCAyLCAyXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMiwgMywgMSwgMiwgMl0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDIsIDMsIDIsIDIsIDFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsyLCAyLCAzLCAyLCAxLCAxXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMiwgMiwgMSwgMSwgMywgMl0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzIsIDIsIDEsIDIsIDMsIDFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsyLCAxLCAzLCAyLCAxLCAyXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMiwgMiwgMywgMSwgMSwgMl0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzMsIDEsIDIsIDEsIDMsIDFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFszLCAxLCAxLCAyLCAyLCAyXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMywgMiwgMSwgMSwgMiwgMl0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzMsIDIsIDEsIDIsIDIsIDFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFszLCAxLCAyLCAyLCAxLCAyXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMywgMiwgMiwgMSwgMSwgMl0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzMsIDIsIDIsIDIsIDEsIDFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsyLCAxLCAyLCAxLCAyLCAzXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMiwgMSwgMiwgMywgMiwgMV0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzIsIDMsIDIsIDEsIDIsIDFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAxLCAxLCAzLCAyLCAzXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMywgMSwgMSwgMiwgM10pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDMsIDEsIDMsIDIsIDFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAxLCAyLCAzLCAxLCAzXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMywgMiwgMSwgMSwgM10pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDMsIDIsIDMsIDEsIDFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsyLCAxLCAxLCAzLCAxLCAzXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMiwgMywgMSwgMSwgMSwgM10pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzIsIDMsIDEsIDMsIDEsIDFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAxLCAyLCAxLCAzLCAzXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMSwgMiwgMywgMywgMV0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDMsIDIsIDEsIDMsIDFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAxLCAzLCAxLCAyLCAzXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMSwgMywgMywgMiwgMV0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDMsIDMsIDEsIDIsIDFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFszLCAxLCAzLCAxLCAyLCAxXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMiwgMSwgMSwgMywgMywgMV0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzIsIDMsIDEsIDEsIDMsIDFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsyLCAxLCAzLCAxLCAxLCAzXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMiwgMSwgMywgMywgMSwgMV0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzIsIDEsIDMsIDEsIDMsIDFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFszLCAxLCAxLCAxLCAyLCAzXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMywgMSwgMSwgMywgMiwgMV0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzMsIDMsIDEsIDEsIDIsIDFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFszLCAxLCAyLCAxLCAxLCAzXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMywgMSwgMiwgMywgMSwgMV0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzMsIDMsIDIsIDEsIDEsIDFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFszLCAxLCA0LCAxLCAxLCAxXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMiwgMiwgMSwgNCwgMSwgMV0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzQsIDMsIDEsIDEsIDEsIDFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAxLCAxLCAyLCAyLCA0XSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMSwgMSwgNCwgMiwgMl0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDIsIDEsIDEsIDIsIDRdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAyLCAxLCA0LCAyLCAxXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgNCwgMSwgMSwgMiwgMl0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDQsIDEsIDIsIDIsIDFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAxLCAyLCAyLCAxLCA0XSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMSwgMiwgNCwgMSwgMl0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDIsIDIsIDEsIDEsIDRdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAyLCAyLCA0LCAxLCAxXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgNCwgMiwgMSwgMSwgMl0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDQsIDIsIDIsIDEsIDFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsyLCA0LCAxLCAyLCAxLCAxXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMiwgMiwgMSwgMSwgMSwgNF0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzQsIDEsIDMsIDEsIDEsIDFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsyLCA0LCAxLCAxLCAxLCAyXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMywgNCwgMSwgMSwgMV0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDEsIDEsIDIsIDQsIDJdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAyLCAxLCAxLCA0LCAyXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMiwgMSwgMiwgNCwgMV0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDEsIDQsIDIsIDEsIDJdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAyLCA0LCAxLCAxLCAyXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMiwgNCwgMiwgMSwgMV0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzQsIDEsIDEsIDIsIDEsIDJdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFs0LCAyLCAxLCAxLCAxLCAyXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbNCwgMiwgMSwgMiwgMSwgMV0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzIsIDEsIDIsIDEsIDQsIDFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsyLCAxLCA0LCAxLCAyLCAxXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbNCwgMSwgMiwgMSwgMiwgMV0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDEsIDEsIDEsIDQsIDNdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAxLCAxLCAzLCA0LCAxXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMywgMSwgMSwgNCwgMV0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDEsIDQsIDEsIDEsIDNdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAxLCA0LCAzLCAxLCAxXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbNCwgMSwgMSwgMSwgMSwgM10pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzQsIDEsIDEsIDMsIDEsIDFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAxLCAzLCAxLCA0LCAxXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMSwgNCwgMSwgMywgMV0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzMsIDEsIDEsIDEsIDQsIDFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFs0LCAxLCAxLCAxLCAzLCAxXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMiwgMSwgMSwgNCwgMSwgMl0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzIsIDEsIDEsIDIsIDEsIDRdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsyLCAxLCAxLCAyLCAzLCAyXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMiwgMywgMywgMSwgMSwgMSwgMl0pLAoJICAgIF07CgkgICAgQ29kZTEyOFJlYWRlci5NQVhfQVZHX1ZBUklBTkNFID0gMC4yNTsKCSAgICBDb2RlMTI4UmVhZGVyLk1BWF9JTkRJVklEVUFMX1ZBUklBTkNFID0gMC43OwoJICAgIENvZGUxMjhSZWFkZXIuQ09ERV9TSElGVCA9IDk4OwoJICAgIENvZGUxMjhSZWFkZXIuQ09ERV9DT0RFX0MgPSA5OTsKCSAgICBDb2RlMTI4UmVhZGVyLkNPREVfQ09ERV9CID0gMTAwOwoJICAgIENvZGUxMjhSZWFkZXIuQ09ERV9DT0RFX0EgPSAxMDE7CgkgICAgQ29kZTEyOFJlYWRlci5DT0RFX0ZOQ18xID0gMTAyOwoJICAgIENvZGUxMjhSZWFkZXIuQ09ERV9GTkNfMiA9IDk3OwoJICAgIENvZGUxMjhSZWFkZXIuQ09ERV9GTkNfMyA9IDk2OwoJICAgIENvZGUxMjhSZWFkZXIuQ09ERV9GTkNfNF9BID0gMTAxOwoJICAgIENvZGUxMjhSZWFkZXIuQ09ERV9GTkNfNF9CID0gMTAwOwoJICAgIENvZGUxMjhSZWFkZXIuQ09ERV9TVEFSVF9BID0gMTAzOwoJICAgIENvZGUxMjhSZWFkZXIuQ09ERV9TVEFSVF9CID0gMTA0OwoJICAgIENvZGUxMjhSZWFkZXIuQ09ERV9TVEFSVF9DID0gMTA1OwoJICAgIENvZGUxMjhSZWFkZXIuQ09ERV9TVE9QID0gMTA2OwoJICAgIHJldHVybiBDb2RlMTI4UmVhZGVyOwoJfShPbmVEUmVhZGVyXzEuZGVmYXVsdCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gQ29kZTEyOFJlYWRlcjsKCgl9KTsKCgl2YXIgQ29kZTM5UmVhZGVyXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CgkvKgoJICogQ29weXJpZ2h0IDIwMDggWlhpbmcgYXV0aG9ycwoJICoKCSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkgKgoJICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSAqCgkgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSAqLwoJdmFyIF9fZXh0ZW5kcyA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7CgkgICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8CgkgICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8CgkgICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTsKCSAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgfTsKCSAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9CgkgICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTsKCSAgICB9OwoJfSkoKTsKCXZhciBfX3ZhbHVlcyA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX3ZhbHVlcykgfHwgZnVuY3Rpb24obykgewoJICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gImZ1bmN0aW9uIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwOwoJICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pOwoJICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gIm51bWJlciIpIHJldHVybiB7CgkgICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7CgkgICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07CgkgICAgICAgIH0KCSAgICB9OwoJICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/ICJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLiIgOiAiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpOwoJfTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgkvKm5hbWVzcGFjZSBjb20uZ29vZ2xlLnp4aW5nLm9uZWQgeyovCgoKCgoKCgoJLyoqCgkgKiA8cD5EZWNvZGVzIENvZGUgMzkgYmFyY29kZXMuIFN1cHBvcnRzICJGdWxsIEFTQ0lJIENvZGUgMzkiIGlmIFVTRV9DT0RFXzM5X0VYVEVOREVEX01PREUgaXMgc2V0LjwvcD4KCSAqCgkgKiBAYXV0aG9yIFNlYW4gT3dlbgoJICogQHNlZSBDb2RlOTNSZWFkZXIKCSAqLwoJdmFyIENvZGUzOVJlYWRlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHsKCSAgICBfX2V4dGVuZHMoQ29kZTM5UmVhZGVyLCBfc3VwZXIpOwoJICAgIC8qKgoJICAgICAqIENyZWF0ZXMgYSByZWFkZXIgdGhhdCBhc3N1bWVzIGFsbCBlbmNvZGVkIGRhdGEgaXMgZGF0YSwgYW5kIGRvZXMgbm90IHRyZWF0IHRoZSBmaW5hbAoJICAgICAqIGNoYXJhY3RlciBhcyBhIGNoZWNrIGRpZ2l0LiBJdCB3aWxsIG5vdCBkZWNvZGVkICJleHRlbmRlZCBDb2RlIDM5IiBzZXF1ZW5jZXMuCgkgICAgICovCgkgICAgLy8gcHVibGljIENvZGUzOVJlYWRlcigpIHsKCSAgICAvLyAgIHRoaXMoZmFsc2UpOwoJICAgIC8vIH0KCSAgICAvKioKCSAgICAgKiBDcmVhdGVzIGEgcmVhZGVyIHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gY2hlY2sgdGhlIGxhc3QgY2hhcmFjdGVyIGFzIGEgY2hlY2sgZGlnaXQuCgkgICAgICogSXQgd2lsbCBub3QgZGVjb2RlZCAiZXh0ZW5kZWQgQ29kZSAzOSIgc2VxdWVuY2VzLgoJICAgICAqCgkgICAgICogQHBhcmFtIHVzaW5nQ2hlY2tEaWdpdCBpZiB0cnVlLCB0cmVhdCB0aGUgbGFzdCBkYXRhIGNoYXJhY3RlciBhcyBhIGNoZWNrIGRpZ2l0LCBub3QKCSAgICAgKiBkYXRhLCBhbmQgdmVyaWZ5IHRoYXQgdGhlIGNoZWNrc3VtIHBhc3Nlcy4KCSAgICAgKi8KCSAgICAvLyBwdWJsaWMgQ29kZTM5UmVhZGVyKGJvb2xlYW4gdXNpbmdDaGVja0RpZ2l0KSB7CgkgICAgLy8gICB0aGlzKHVzaW5nQ2hlY2tEaWdpdCwgZmFsc2UpOwoJICAgIC8vIH0KCSAgICAvKioKCSAgICAgKiBDcmVhdGVzIGEgcmVhZGVyIHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gY2hlY2sgdGhlIGxhc3QgY2hhcmFjdGVyIGFzIGEgY2hlY2sgZGlnaXQsCgkgICAgICogb3Igb3B0aW9uYWxseSBhdHRlbXB0IHRvIGRlY29kZSAiZXh0ZW5kZWQgQ29kZSAzOSIgc2VxdWVuY2VzIHRoYXQgYXJlIHVzZWQgdG8gZW5jb2RlCgkgICAgICogdGhlIGZ1bGwgQVNDSUkgY2hhcmFjdGVyIHNldC4KCSAgICAgKgoJICAgICAqIEBwYXJhbSB1c2luZ0NoZWNrRGlnaXQgaWYgdHJ1ZSwgdHJlYXQgdGhlIGxhc3QgZGF0YSBjaGFyYWN0ZXIgYXMgYSBjaGVjayBkaWdpdCwgbm90CgkgICAgICogZGF0YSwgYW5kIHZlcmlmeSB0aGF0IHRoZSBjaGVja3N1bSBwYXNzZXMuCgkgICAgICogQHBhcmFtIGV4dGVuZGVkTW9kZSBpZiB0cnVlLCB3aWxsIGF0dGVtcHQgdG8gZGVjb2RlIGV4dGVuZGVkIENvZGUgMzkgc2VxdWVuY2VzIGluIHRoZQoJICAgICAqIHRleHQuCgkgICAgICovCgkgICAgZnVuY3Rpb24gQ29kZTM5UmVhZGVyKHVzaW5nQ2hlY2tEaWdpdCwgZXh0ZW5kZWRNb2RlKSB7CgkgICAgICAgIGlmICh1c2luZ0NoZWNrRGlnaXQgPT09IHZvaWQgMCkgeyB1c2luZ0NoZWNrRGlnaXQgPSBmYWxzZTsgfQoJICAgICAgICBpZiAoZXh0ZW5kZWRNb2RlID09PSB2b2lkIDApIHsgZXh0ZW5kZWRNb2RlID0gZmFsc2U7IH0KCSAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpczsKCSAgICAgICAgX3RoaXMudXNpbmdDaGVja0RpZ2l0ID0gdXNpbmdDaGVja0RpZ2l0OwoJICAgICAgICBfdGhpcy5leHRlbmRlZE1vZGUgPSBleHRlbmRlZE1vZGU7CgkgICAgICAgIF90aGlzLmRlY29kZVJvd1Jlc3VsdCA9ICcnOwoJICAgICAgICBfdGhpcy5jb3VudGVycyA9IG5ldyBJbnQzMkFycmF5KDkpOwoJICAgICAgICByZXR1cm4gX3RoaXM7CgkgICAgfQoJICAgIENvZGUzOVJlYWRlci5wcm90b3R5cGUuZGVjb2RlUm93ID0gZnVuY3Rpb24gKHJvd051bWJlciwgcm93LCBoaW50cykgewoJICAgICAgICB2YXIgZV8xLCBfYSwgZV8yLCBfYjsKCSAgICAgICAgdmFyIHRoZUNvdW50ZXJzID0gdGhpcy5jb3VudGVyczsKCSAgICAgICAgdGhlQ291bnRlcnMuZmlsbCgwKTsKCSAgICAgICAgdGhpcy5kZWNvZGVSb3dSZXN1bHQgPSAnJzsKCSAgICAgICAgdmFyIHN0YXJ0ID0gQ29kZTM5UmVhZGVyLmZpbmRBc3Rlcmlza1BhdHRlcm4ocm93LCB0aGVDb3VudGVycyk7CgkgICAgICAgIC8vIFJlYWQgb2ZmIHdoaXRlIHNwYWNlCgkgICAgICAgIHZhciBuZXh0U3RhcnQgPSByb3cuZ2V0TmV4dFNldChzdGFydFsxXSk7CgkgICAgICAgIHZhciBlbmQgPSByb3cuZ2V0U2l6ZSgpOwoJICAgICAgICB2YXIgZGVjb2RlZENoYXI7CgkgICAgICAgIHZhciBsYXN0U3RhcnQ7CgkgICAgICAgIGRvIHsKCSAgICAgICAgICAgIENvZGUzOVJlYWRlci5yZWNvcmRQYXR0ZXJuKHJvdywgbmV4dFN0YXJ0LCB0aGVDb3VudGVycyk7CgkgICAgICAgICAgICB2YXIgcGF0dGVybiA9IENvZGUzOVJlYWRlci50b05hcnJvd1dpZGVQYXR0ZXJuKHRoZUNvdW50ZXJzKTsKCSAgICAgICAgICAgIGlmIChwYXR0ZXJuIDwgMCkgewoJICAgICAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGRlY29kZWRDaGFyID0gQ29kZTM5UmVhZGVyLnBhdHRlcm5Ub0NoYXIocGF0dGVybik7CgkgICAgICAgICAgICB0aGlzLmRlY29kZVJvd1Jlc3VsdCArPSBkZWNvZGVkQ2hhcjsKCSAgICAgICAgICAgIGxhc3RTdGFydCA9IG5leHRTdGFydDsKCSAgICAgICAgICAgIHRyeSB7CgkgICAgICAgICAgICAgICAgZm9yICh2YXIgdGhlQ291bnRlcnNfMSA9IChlXzEgPSB2b2lkIDAsIF9fdmFsdWVzKHRoZUNvdW50ZXJzKSksIHRoZUNvdW50ZXJzXzFfMSA9IHRoZUNvdW50ZXJzXzEubmV4dCgpOyAhdGhlQ291bnRlcnNfMV8xLmRvbmU7IHRoZUNvdW50ZXJzXzFfMSA9IHRoZUNvdW50ZXJzXzEubmV4dCgpKSB7CgkgICAgICAgICAgICAgICAgICAgIHZhciBjb3VudGVyID0gdGhlQ291bnRlcnNfMV8xLnZhbHVlOwoJICAgICAgICAgICAgICAgICAgICBuZXh0U3RhcnQgKz0gY291bnRlcjsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfQoJICAgICAgICAgICAgZmluYWxseSB7CgkgICAgICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICAgICAgaWYgKHRoZUNvdW50ZXJzXzFfMSAmJiAhdGhlQ291bnRlcnNfMV8xLmRvbmUgJiYgKF9hID0gdGhlQ291bnRlcnNfMS5yZXR1cm4pKSBfYS5jYWxsKHRoZUNvdW50ZXJzXzEpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICAvLyBSZWFkIG9mZiB3aGl0ZSBzcGFjZQoJICAgICAgICAgICAgbmV4dFN0YXJ0ID0gcm93LmdldE5leHRTZXQobmV4dFN0YXJ0KTsKCSAgICAgICAgfSB3aGlsZSAoZGVjb2RlZENoYXIgIT09ICcqJyk7CgkgICAgICAgIHRoaXMuZGVjb2RlUm93UmVzdWx0ID0gdGhpcy5kZWNvZGVSb3dSZXN1bHQuc3Vic3RyaW5nKDAsIHRoaXMuZGVjb2RlUm93UmVzdWx0Lmxlbmd0aCAtIDEpOyAvLyByZW1vdmUgYXN0ZXJpc2sKCSAgICAgICAgLy8gTG9vayBmb3Igd2hpdGVzcGFjZSBhZnRlciBwYXR0ZXJuOgoJICAgICAgICB2YXIgbGFzdFBhdHRlcm5TaXplID0gMDsKCSAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgIGZvciAodmFyIHRoZUNvdW50ZXJzXzIgPSBfX3ZhbHVlcyh0aGVDb3VudGVycyksIHRoZUNvdW50ZXJzXzJfMSA9IHRoZUNvdW50ZXJzXzIubmV4dCgpOyAhdGhlQ291bnRlcnNfMl8xLmRvbmU7IHRoZUNvdW50ZXJzXzJfMSA9IHRoZUNvdW50ZXJzXzIubmV4dCgpKSB7CgkgICAgICAgICAgICAgICAgdmFyIGNvdW50ZXIgPSB0aGVDb3VudGVyc18yXzEudmFsdWU7CgkgICAgICAgICAgICAgICAgbGFzdFBhdHRlcm5TaXplICs9IGNvdW50ZXI7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgY2F0Y2ggKGVfMl8xKSB7IGVfMiA9IHsgZXJyb3I6IGVfMl8xIH07IH0KCSAgICAgICAgZmluYWxseSB7CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIGlmICh0aGVDb3VudGVyc18yXzEgJiYgIXRoZUNvdW50ZXJzXzJfMS5kb25lICYmIChfYiA9IHRoZUNvdW50ZXJzXzIucmV0dXJuKSkgX2IuY2FsbCh0aGVDb3VudGVyc18yKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8yKSB0aHJvdyBlXzIuZXJyb3I7IH0KCSAgICAgICAgfQoJICAgICAgICB2YXIgd2hpdGVTcGFjZUFmdGVyRW5kID0gbmV4dFN0YXJ0IC0gbGFzdFN0YXJ0IC0gbGFzdFBhdHRlcm5TaXplOwoJICAgICAgICAvLyBJZiA1MCUgb2YgbGFzdCBwYXR0ZXJuIHNpemUsIGZvbGxvd2luZyBsYXN0IHBhdHRlcm4sIGlzIG5vdCB3aGl0ZXNwYWNlLCBmYWlsCgkgICAgICAgIC8vIChidXQgaWYgaXQncyB3aGl0ZXNwYWNlIHRvIHRoZSB2ZXJ5IGVuZCBvZiB0aGUgaW1hZ2UsIHRoYXQncyBPSykKCSAgICAgICAgaWYgKG5leHRTdGFydCAhPT0gZW5kICYmICh3aGl0ZVNwYWNlQWZ0ZXJFbmQgKiAyKSA8IGxhc3RQYXR0ZXJuU2l6ZSkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgICAgIGlmICh0aGlzLnVzaW5nQ2hlY2tEaWdpdCkgewoJICAgICAgICAgICAgdmFyIG1heCA9IHRoaXMuZGVjb2RlUm93UmVzdWx0Lmxlbmd0aCAtIDE7CgkgICAgICAgICAgICB2YXIgdG90YWwgPSAwOwoJICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXg7IGkrKykgewoJICAgICAgICAgICAgICAgIHRvdGFsICs9IENvZGUzOVJlYWRlci5BTFBIQUJFVF9TVFJJTkcuaW5kZXhPZih0aGlzLmRlY29kZVJvd1Jlc3VsdC5jaGFyQXQoaSkpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgaWYgKHRoaXMuZGVjb2RlUm93UmVzdWx0LmNoYXJBdChtYXgpICE9PSBDb2RlMzlSZWFkZXIuQUxQSEFCRVRfU1RSSU5HLmNoYXJBdCh0b3RhbCAlIDQzKSkgewoJICAgICAgICAgICAgICAgIHRocm93IG5ldyBDaGVja3N1bUV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHRoaXMuZGVjb2RlUm93UmVzdWx0ID0gdGhpcy5kZWNvZGVSb3dSZXN1bHQuc3Vic3RyaW5nKDAsIG1heCk7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKHRoaXMuZGVjb2RlUm93UmVzdWx0Lmxlbmd0aCA9PT0gMCkgewoJICAgICAgICAgICAgLy8gZmFsc2UgcG9zaXRpdmUKCSAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgcmVzdWx0U3RyaW5nOwoJICAgICAgICBpZiAodGhpcy5leHRlbmRlZE1vZGUpIHsKCSAgICAgICAgICAgIHJlc3VsdFN0cmluZyA9IENvZGUzOVJlYWRlci5kZWNvZGVFeHRlbmRlZCh0aGlzLmRlY29kZVJvd1Jlc3VsdCk7CgkgICAgICAgIH0KCSAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICByZXN1bHRTdHJpbmcgPSB0aGlzLmRlY29kZVJvd1Jlc3VsdDsKCSAgICAgICAgfQoJICAgICAgICB2YXIgbGVmdCA9IChzdGFydFsxXSArIHN0YXJ0WzBdKSAvIDIuMDsKCSAgICAgICAgdmFyIHJpZ2h0ID0gbGFzdFN0YXJ0ICsgbGFzdFBhdHRlcm5TaXplIC8gMi4wOwoJICAgICAgICByZXR1cm4gbmV3IFJlc3VsdF8xLmRlZmF1bHQocmVzdWx0U3RyaW5nLCBudWxsLCAwLCBbbmV3IFJlc3VsdFBvaW50XzEuZGVmYXVsdChsZWZ0LCByb3dOdW1iZXIpLCBuZXcgUmVzdWx0UG9pbnRfMS5kZWZhdWx0KHJpZ2h0LCByb3dOdW1iZXIpXSwgQmFyY29kZUZvcm1hdF8xLmRlZmF1bHQuQ09ERV8zOSwgbmV3IERhdGUoKS5nZXRUaW1lKCkpOwoJICAgIH07CgkgICAgQ29kZTM5UmVhZGVyLmZpbmRBc3Rlcmlza1BhdHRlcm4gPSBmdW5jdGlvbiAocm93LCBjb3VudGVycykgewoJICAgICAgICB2YXIgd2lkdGggPSByb3cuZ2V0U2l6ZSgpOwoJICAgICAgICB2YXIgcm93T2Zmc2V0ID0gcm93LmdldE5leHRTZXQoMCk7CgkgICAgICAgIHZhciBjb3VudGVyUG9zaXRpb24gPSAwOwoJICAgICAgICB2YXIgcGF0dGVyblN0YXJ0ID0gcm93T2Zmc2V0OwoJICAgICAgICB2YXIgaXNXaGl0ZSA9IGZhbHNlOwoJICAgICAgICB2YXIgcGF0dGVybkxlbmd0aCA9IGNvdW50ZXJzLmxlbmd0aDsKCSAgICAgICAgZm9yICh2YXIgaSA9IHJvd09mZnNldDsgaSA8IHdpZHRoOyBpKyspIHsKCSAgICAgICAgICAgIGlmIChyb3cuZ2V0KGkpICE9PSBpc1doaXRlKSB7CgkgICAgICAgICAgICAgICAgY291bnRlcnNbY291bnRlclBvc2l0aW9uXSsrOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgaWYgKGNvdW50ZXJQb3NpdGlvbiA9PT0gcGF0dGVybkxlbmd0aCAtIDEpIHsKCSAgICAgICAgICAgICAgICAgICAgLy8gTG9vayBmb3Igd2hpdGVzcGFjZSBiZWZvcmUgc3RhcnQgcGF0dGVybiwgPj0gNTAlIG9mIHdpZHRoIG9mIHN0YXJ0IHBhdHRlcm4KCSAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudG9OYXJyb3dXaWRlUGF0dGVybihjb3VudGVycykgPT09IENvZGUzOVJlYWRlci5BU1RFUklTS19FTkNPRElORyAmJgoJICAgICAgICAgICAgICAgICAgICAgICAgcm93LmlzUmFuZ2UoTWF0aC5tYXgoMCwgcGF0dGVyblN0YXJ0IC0gTWF0aC5mbG9vcigoaSAtIHBhdHRlcm5TdGFydCkgLyAyKSksIHBhdHRlcm5TdGFydCwgZmFsc2UpKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW3BhdHRlcm5TdGFydCwgaV07CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgcGF0dGVyblN0YXJ0ICs9IGNvdW50ZXJzWzBdICsgY291bnRlcnNbMV07CgkgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJzLmNvcHlXaXRoaW4oMCwgMiwgMiArIGNvdW50ZXJQb3NpdGlvbiAtIDEpOwoJICAgICAgICAgICAgICAgICAgICBjb3VudGVyc1tjb3VudGVyUG9zaXRpb24gLSAxXSA9IDA7CgkgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJzW2NvdW50ZXJQb3NpdGlvbl0gPSAwOwoJICAgICAgICAgICAgICAgICAgICBjb3VudGVyUG9zaXRpb24tLTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJQb3NpdGlvbisrOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBjb3VudGVyc1tjb3VudGVyUG9zaXRpb25dID0gMTsKCSAgICAgICAgICAgICAgICBpc1doaXRlID0gIWlzV2hpdGU7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgIH07CgkgICAgLy8gRm9yIGVmZmljaWVuY3ksIHJldHVybnMgLTEgb24gZmFpbHVyZS4gTm90IHRocm93aW5nIGhlcmUgc2F2ZWQgYXMgbWFueSBhcyA3MDAgZXhjZXB0aW9ucwoJICAgIC8vIHBlciBpbWFnZSB3aGVuIHVzaW5nIHNvbWUgb2Ygb3VyIGJsYWNrYm94IGltYWdlcy4KCSAgICBDb2RlMzlSZWFkZXIudG9OYXJyb3dXaWRlUGF0dGVybiA9IGZ1bmN0aW9uIChjb3VudGVycykgewoJICAgICAgICB2YXIgZV8zLCBfYTsKCSAgICAgICAgdmFyIG51bUNvdW50ZXJzID0gY291bnRlcnMubGVuZ3RoOwoJICAgICAgICB2YXIgbWF4TmFycm93Q291bnRlciA9IDA7CgkgICAgICAgIHZhciB3aWRlQ291bnRlcnM7CgkgICAgICAgIGRvIHsKCSAgICAgICAgICAgIHZhciBtaW5Db3VudGVyID0gMHg3ZmZmZmZmZjsKCSAgICAgICAgICAgIHRyeSB7CgkgICAgICAgICAgICAgICAgZm9yICh2YXIgY291bnRlcnNfMSA9IChlXzMgPSB2b2lkIDAsIF9fdmFsdWVzKGNvdW50ZXJzKSksIGNvdW50ZXJzXzFfMSA9IGNvdW50ZXJzXzEubmV4dCgpOyAhY291bnRlcnNfMV8xLmRvbmU7IGNvdW50ZXJzXzFfMSA9IGNvdW50ZXJzXzEubmV4dCgpKSB7CgkgICAgICAgICAgICAgICAgICAgIHZhciBjb3VudGVyID0gY291bnRlcnNfMV8xLnZhbHVlOwoJICAgICAgICAgICAgICAgICAgICBpZiAoY291bnRlciA8IG1pbkNvdW50ZXIgJiYgY291bnRlciA+IG1heE5hcnJvd0NvdW50ZXIpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIG1pbkNvdW50ZXIgPSBjb3VudGVyOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgY2F0Y2ggKGVfM18xKSB7IGVfMyA9IHsgZXJyb3I6IGVfM18xIH07IH0KCSAgICAgICAgICAgIGZpbmFsbHkgewoJICAgICAgICAgICAgICAgIHRyeSB7CgkgICAgICAgICAgICAgICAgICAgIGlmIChjb3VudGVyc18xXzEgJiYgIWNvdW50ZXJzXzFfMS5kb25lICYmIChfYSA9IGNvdW50ZXJzXzEucmV0dXJuKSkgX2EuY2FsbChjb3VudGVyc18xKTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzMpIHRocm93IGVfMy5lcnJvcjsgfQoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgbWF4TmFycm93Q291bnRlciA9IG1pbkNvdW50ZXI7CgkgICAgICAgICAgICB3aWRlQ291bnRlcnMgPSAwOwoJICAgICAgICAgICAgdmFyIHRvdGFsV2lkZUNvdW50ZXJzV2lkdGggPSAwOwoJICAgICAgICAgICAgdmFyIHBhdHRlcm4gPSAwOwoJICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1Db3VudGVyczsgaSsrKSB7CgkgICAgICAgICAgICAgICAgdmFyIGNvdW50ZXIgPSBjb3VudGVyc1tpXTsKCSAgICAgICAgICAgICAgICBpZiAoY291bnRlciA+IG1heE5hcnJvd0NvdW50ZXIpIHsKCSAgICAgICAgICAgICAgICAgICAgcGF0dGVybiB8PSAxIDw8IChudW1Db3VudGVycyAtIDEgLSBpKTsKCSAgICAgICAgICAgICAgICAgICAgd2lkZUNvdW50ZXJzKys7CgkgICAgICAgICAgICAgICAgICAgIHRvdGFsV2lkZUNvdW50ZXJzV2lkdGggKz0gY291bnRlcjsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBpZiAod2lkZUNvdW50ZXJzID09PSAzKSB7CgkgICAgICAgICAgICAgICAgLy8gRm91bmQgMyB3aWRlIGNvdW50ZXJzLCBidXQgYXJlIHRoZXkgY2xvc2UgZW5vdWdoIGluIHdpZHRoPwoJICAgICAgICAgICAgICAgIC8vIFdlIGNhbiBwZXJmb3JtIGEgY2hlYXAsIGNvbnNlcnZhdGl2ZSBjaGVjayB0byBzZWUgaWYgYW55IGluZGl2aWR1YWwKCSAgICAgICAgICAgICAgICAvLyBjb3VudGVyIGlzIG1vcmUgdGhhbiAxLjUgdGltZXMgdGhlIGF2ZXJhZ2U6CgkgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1Db3VudGVycyAmJiB3aWRlQ291bnRlcnMgPiAwOyBpKyspIHsKCSAgICAgICAgICAgICAgICAgICAgdmFyIGNvdW50ZXIgPSBjb3VudGVyc1tpXTsKCSAgICAgICAgICAgICAgICAgICAgaWYgKGNvdW50ZXIgPiBtYXhOYXJyb3dDb3VudGVyKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICB3aWRlQ291bnRlcnMtLTsKCSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvdGFsV2lkZUNvdW50ZXJzV2lkdGggPSAzICogYXZlcmFnZSwgc28gdGhpcyBjaGVja3MgaWYgY291bnRlciA+PSAzLzIgKiBhdmVyYWdlCgkgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGNvdW50ZXIgKiAyKSA+PSB0b3RhbFdpZGVDb3VudGVyc1dpZHRoKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIHJldHVybiBwYXR0ZXJuOwoJICAgICAgICAgICAgfQoJICAgICAgICB9IHdoaWxlICh3aWRlQ291bnRlcnMgPiAzKTsKCSAgICAgICAgcmV0dXJuIC0xOwoJICAgIH07CgkgICAgQ29kZTM5UmVhZGVyLnBhdHRlcm5Ub0NoYXIgPSBmdW5jdGlvbiAocGF0dGVybikgewoJICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IENvZGUzOVJlYWRlci5DSEFSQUNURVJfRU5DT0RJTkdTLmxlbmd0aDsgaSsrKSB7CgkgICAgICAgICAgICBpZiAoQ29kZTM5UmVhZGVyLkNIQVJBQ1RFUl9FTkNPRElOR1NbaV0gPT09IHBhdHRlcm4pIHsKCSAgICAgICAgICAgICAgICByZXR1cm4gQ29kZTM5UmVhZGVyLkFMUEhBQkVUX1NUUklORy5jaGFyQXQoaSk7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgaWYgKHBhdHRlcm4gPT09IENvZGUzOVJlYWRlci5BU1RFUklTS19FTkNPRElORykgewoJICAgICAgICAgICAgcmV0dXJuICcqJzsKCSAgICAgICAgfQoJICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgfTsKCSAgICBDb2RlMzlSZWFkZXIuZGVjb2RlRXh0ZW5kZWQgPSBmdW5jdGlvbiAoZW5jb2RlZCkgewoJICAgICAgICB2YXIgbGVuZ3RoID0gZW5jb2RlZC5sZW5ndGg7CgkgICAgICAgIHZhciBkZWNvZGVkID0gJyc7CgkgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKCSAgICAgICAgICAgIHZhciBjID0gZW5jb2RlZC5jaGFyQXQoaSk7CgkgICAgICAgICAgICBpZiAoYyA9PT0gJysnIHx8IGMgPT09ICckJyB8fCBjID09PSAnJScgfHwgYyA9PT0gJy8nKSB7CgkgICAgICAgICAgICAgICAgdmFyIG5leHQgPSBlbmNvZGVkLmNoYXJBdChpICsgMSk7CgkgICAgICAgICAgICAgICAgdmFyIGRlY29kZWRDaGFyID0gJ1wwJzsKCSAgICAgICAgICAgICAgICBzd2l0Y2ggKGMpIHsKCSAgICAgICAgICAgICAgICAgICAgY2FzZSAnKyc6CgkgICAgICAgICAgICAgICAgICAgICAgICAvLyArQSB0byArWiBtYXAgdG8gYSB0byB6CgkgICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV4dCA+PSAnQScgJiYgbmV4dCA8PSAnWicpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVkQ2hhciA9IFN0cmluZy5mcm9tQ2hhckNvZGUobmV4dC5jaGFyQ29kZUF0KDApICsgMzIpOwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgICAgICBjYXNlICckJzoKCSAgICAgICAgICAgICAgICAgICAgICAgIC8vICRBIHRvICRaIG1hcCB0byBjb250cm9sIGNvZGVzIFNIIHRvIFNCCgkgICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV4dCA+PSAnQScgJiYgbmV4dCA8PSAnWicpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVkQ2hhciA9IFN0cmluZy5mcm9tQ2hhckNvZGUobmV4dC5jaGFyQ29kZUF0KDApIC0gNjQpOwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgICAgICBjYXNlICclJzoKCSAgICAgICAgICAgICAgICAgICAgICAgIC8vICVBIHRvICVFIG1hcCB0byBjb250cm9sIGNvZGVzIEVTQyB0byBVUwoJICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5leHQgPj0gJ0EnICYmIG5leHQgPD0gJ0UnKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlZENoYXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKG5leHQuY2hhckNvZGVBdCgwKSAtIDM4KTsKCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5leHQgPj0gJ0YnICYmIG5leHQgPD0gJ0onKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlZENoYXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKG5leHQuY2hhckNvZGVBdCgwKSAtIDExKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5leHQgPj0gJ0snICYmIG5leHQgPD0gJ08nKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlZENoYXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKG5leHQuY2hhckNvZGVBdCgwKSArIDE2KTsKCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5leHQgPj0gJ1AnICYmIG5leHQgPD0gJ1QnKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlZENoYXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKG5leHQuY2hhckNvZGVBdCgwKSArIDQzKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5leHQgPT09ICdVJykgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZWRDaGFyID0gJ1wwJzsKCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5leHQgPT09ICdWJykgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZWRDaGFyID0gJ0AnOwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobmV4dCA9PT0gJ1cnKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlZENoYXIgPSAnYCc7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChuZXh0ID09PSAnWCcgfHwgbmV4dCA9PT0gJ1knIHx8IG5leHQgPT09ICdaJykgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZWRDaGFyID0gJ1x4N2YnOwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgICAgICBjYXNlICcvJzoKCSAgICAgICAgICAgICAgICAgICAgICAgIC8vIC9BIHRvIC9PIG1hcCB0byAhIHRvICwgYW5kIC9aIG1hcHMgdG8gOgoJICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5leHQgPj0gJ0EnICYmIG5leHQgPD0gJ08nKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlZENoYXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKG5leHQuY2hhckNvZGVBdCgwKSAtIDMyKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5leHQgPT09ICdaJykgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZWRDaGFyID0gJzonOwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBkZWNvZGVkICs9IGRlY29kZWRDaGFyOwoJICAgICAgICAgICAgICAgIC8vIGJ1bXAgdXAgaSBhZ2FpbiBzaW5jZSB3ZSByZWFkIHR3byBjaGFyYWN0ZXJzCgkgICAgICAgICAgICAgICAgaSsrOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgZGVjb2RlZCArPSBjOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBkZWNvZGVkOwoJICAgIH07CgkgICAgQ29kZTM5UmVhZGVyLkFMUEhBQkVUX1NUUklORyA9ICcwMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVotLiAkLyslJzsKCSAgICAvKioKCSAgICAgKiBUaGVzZSByZXByZXNlbnQgdGhlIGVuY29kaW5ncyBvZiBjaGFyYWN0ZXJzLCBhcyBwYXR0ZXJucyBvZiB3aWRlIGFuZCBuYXJyb3cgYmFycy4KCSAgICAgKiBUaGUgOSBsZWFzdC1zaWduaWZpY2FudCBiaXRzIG9mIGVhY2ggaW50IGNvcnJlc3BvbmQgdG8gdGhlIHBhdHRlcm4gb2Ygd2lkZSBhbmQgbmFycm93LAoJICAgICAqIHdpdGggMXMgcmVwcmVzZW50aW5nICJ3aWRlIiBhbmQgMHMgcmVwcmVzZW50aW5nIG5hcnJvdy4KCSAgICAgKi8KCSAgICBDb2RlMzlSZWFkZXIuQ0hBUkFDVEVSX0VOQ09ESU5HUyA9IFsKCSAgICAgICAgMHgwMzQsIDB4MTIxLCAweDA2MSwgMHgxNjAsIDB4MDMxLCAweDEzMCwgMHgwNzAsIDB4MDI1LCAweDEyNCwgMHgwNjQsCgkgICAgICAgIDB4MTA5LCAweDA0OSwgMHgxNDgsIDB4MDE5LCAweDExOCwgMHgwNTgsIDB4MDBELCAweDEwQywgMHgwNEMsIDB4MDFDLAoJICAgICAgICAweDEwMywgMHgwNDMsIDB4MTQyLCAweDAxMywgMHgxMTIsIDB4MDUyLCAweDAwNywgMHgxMDYsIDB4MDQ2LCAweDAxNiwKCSAgICAgICAgMHgxODEsIDB4MEMxLCAweDFDMCwgMHgwOTEsIDB4MTkwLCAweDBEMCwgMHgwODUsIDB4MTg0LCAweDBDNCwgMHgwQTgsCgkgICAgICAgIDB4MEEyLCAweDA4QSwgMHgwMkEgLy8gLy0lCgkgICAgXTsKCSAgICBDb2RlMzlSZWFkZXIuQVNURVJJU0tfRU5DT0RJTkcgPSAweDA5NDsKCSAgICByZXR1cm4gQ29kZTM5UmVhZGVyOwoJfShPbmVEUmVhZGVyXzEuZGVmYXVsdCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gQ29kZTM5UmVhZGVyOwoKCX0pOwoKCXZhciBJVEZSZWFkZXJfMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCS8qCgkgKiBDb3B5cmlnaHQgMjAwOCBaWGluZyBhdXRob3JzCgkgKgoJICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSAqCgkgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJICoKCSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJICovCgl2YXIgX19leHRlbmRzID0gKGNvbW1vbmpzR2xvYmFsICYmIGNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHsKCSAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwKCSAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHwKCSAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9OwoJICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICB9OwoJICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH0KCSAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpOwoJICAgIH07Cgl9KSgpOwoJdmFyIF9fdmFsdWVzID0gKGNvbW1vbmpzR2xvYmFsICYmIGNvbW1vbmpzR2xvYmFsLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7CgkgICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSAiZnVuY3Rpb24iICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7CgkgICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7CgkgICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSAibnVtYmVyIikgcmV0dXJuIHsKCSAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkgewoJICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDsKCSAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTsKCSAgICAgICAgfQoJICAgIH07CgkgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gIk9iamVjdCBpcyBub3QgaXRlcmFibGUuIiA6ICJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuIik7Cgl9OwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCS8qbmFtZXNwYWNlIGNvbS5nb29nbGUuenhpbmcub25lZCB7Ki8KCgoKCgoKCgoKCS8qKgoJICogPHA+RGVjb2RlcyBJVEYgYmFyY29kZXMuPC9wPgoJICoKCSAqIEBhdXRob3IgVGppZWNvCgkgKi8KCXZhciBJVEZSZWFkZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7CgkgICAgX19leHRlbmRzKElURlJlYWRlciwgX3N1cGVyKTsKCSAgICBmdW5jdGlvbiBJVEZSZWFkZXIoKSB7CgkgICAgICAgIC8vIHByaXZhdGUgc3RhdGljIFcgPSAzOyAvLyBQaXhlbCB3aWR0aCBvZiBhIDN4IHdpZGUgbGluZQoJICAgICAgICAvLyBwcml2YXRlIHN0YXRpYyB3ID0gMjsgLy8gUGl4ZWwgd2lkdGggb2YgYSAyeCB3aWRlIGxpbmUKCSAgICAgICAgLy8gcHJpdmF0ZSBzdGF0aWMgTiA9IDE7IC8vIFBpeGVkIHdpZHRoIG9mIGEgbmFycm93IGxpbmUKCSAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7CgkgICAgICAgIC8vIFN0b3JlcyB0aGUgYWN0dWFsIG5hcnJvdyBsaW5lIHdpZHRoIG9mIHRoZSBpbWFnZSBiZWluZyBkZWNvZGVkLgoJICAgICAgICBfdGhpcy5uYXJyb3dMaW5lV2lkdGggPSAtMTsKCSAgICAgICAgcmV0dXJuIF90aGlzOwoJICAgIH0KCSAgICAvLyBTZWUgSVRGV3JpdGVyLlBBVFRFUk5TCgkgICAgLyoKCSAgCgkgICAgLyEqKgoJICAgICAqIFBhdHRlcm5zIG9mIFdpZGUgLyBOYXJyb3cgbGluZXMgdG8gaW5kaWNhdGUgZWFjaCBkaWdpdAoJICAgICAqIS8KCSAgICAqLwoJICAgIElURlJlYWRlci5wcm90b3R5cGUuZGVjb2RlUm93ID0gZnVuY3Rpb24gKHJvd051bWJlciwgcm93LCBoaW50cykgewoJICAgICAgICB2YXIgZV8xLCBfYTsKCSAgICAgICAgLy8gRmluZCBvdXQgd2hlcmUgdGhlIE1pZGRsZSBzZWN0aW9uIChwYXlsb2FkKSBzdGFydHMgJiBlbmRzCgkgICAgICAgIHZhciBzdGFydFJhbmdlID0gdGhpcy5kZWNvZGVTdGFydChyb3cpOwoJICAgICAgICB2YXIgZW5kUmFuZ2UgPSB0aGlzLmRlY29kZUVuZChyb3cpOwoJICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1aWxkZXJfMS5kZWZhdWx0KCk7CgkgICAgICAgIElURlJlYWRlci5kZWNvZGVNaWRkbGUocm93LCBzdGFydFJhbmdlWzFdLCBlbmRSYW5nZVswXSwgcmVzdWx0KTsKCSAgICAgICAgdmFyIHJlc3VsdFN0cmluZyA9IHJlc3VsdC50b1N0cmluZygpOwoJICAgICAgICB2YXIgYWxsb3dlZExlbmd0aHMgPSBudWxsOwoJICAgICAgICBpZiAoaGludHMgIT0gbnVsbCkgewoJICAgICAgICAgICAgYWxsb3dlZExlbmd0aHMgPSBoaW50cy5nZXQoRGVjb2RlSGludFR5cGVfMS5kZWZhdWx0LkFMTE9XRURfTEVOR1RIUyk7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKGFsbG93ZWRMZW5ndGhzID09IG51bGwpIHsKCSAgICAgICAgICAgIGFsbG93ZWRMZW5ndGhzID0gSVRGUmVhZGVyLkRFRkFVTFRfQUxMT1dFRF9MRU5HVEhTOwoJICAgICAgICB9CgkgICAgICAgIC8vIFRvIGF2b2lkIGZhbHNlIHBvc2l0aXZlcyB3aXRoIDJEIGJhcmNvZGVzIChhbmQgb3RoZXIgcGF0dGVybnMpLCBtYWtlCgkgICAgICAgIC8vIGFuIGFzc3VtcHRpb24gdGhhdCB0aGUgZGVjb2RlZCBzdHJpbmcgbXVzdCBiZSBhICdzdGFuZGFyZCcgbGVuZ3RoIGlmIGl0J3Mgc2hvcnQKCSAgICAgICAgdmFyIGxlbmd0aCA9IHJlc3VsdFN0cmluZy5sZW5ndGg7CgkgICAgICAgIHZhciBsZW5ndGhPSyA9IGZhbHNlOwoJICAgICAgICB2YXIgbWF4QWxsb3dlZExlbmd0aCA9IDA7CgkgICAgICAgIHRyeSB7CgkgICAgICAgICAgICBmb3IgKHZhciBhbGxvd2VkTGVuZ3Roc18xID0gX192YWx1ZXMoYWxsb3dlZExlbmd0aHMpLCBhbGxvd2VkTGVuZ3Roc18xXzEgPSBhbGxvd2VkTGVuZ3Roc18xLm5leHQoKTsgIWFsbG93ZWRMZW5ndGhzXzFfMS5kb25lOyBhbGxvd2VkTGVuZ3Roc18xXzEgPSBhbGxvd2VkTGVuZ3Roc18xLm5leHQoKSkgewoJICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IGFsbG93ZWRMZW5ndGhzXzFfMS52YWx1ZTsKCSAgICAgICAgICAgICAgICBpZiAobGVuZ3RoID09PSB2YWx1ZSkgewoJICAgICAgICAgICAgICAgICAgICBsZW5ndGhPSyA9IHRydWU7CgkgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBpZiAodmFsdWUgPiBtYXhBbGxvd2VkTGVuZ3RoKSB7CgkgICAgICAgICAgICAgICAgICAgIG1heEFsbG93ZWRMZW5ndGggPSB2YWx1ZTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH0KCSAgICAgICAgZmluYWxseSB7CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIGlmIChhbGxvd2VkTGVuZ3Roc18xXzEgJiYgIWFsbG93ZWRMZW5ndGhzXzFfMS5kb25lICYmIChfYSA9IGFsbG93ZWRMZW5ndGhzXzEucmV0dXJuKSkgX2EuY2FsbChhbGxvd2VkTGVuZ3Roc18xKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH0KCSAgICAgICAgfQoJICAgICAgICBpZiAoIWxlbmd0aE9LICYmIGxlbmd0aCA+IG1heEFsbG93ZWRMZW5ndGgpIHsKCSAgICAgICAgICAgIGxlbmd0aE9LID0gdHJ1ZTsKCSAgICAgICAgfQoJICAgICAgICBpZiAoIWxlbmd0aE9LKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgICAgIHZhciBwb2ludHMgPSBbbmV3IFJlc3VsdFBvaW50XzEuZGVmYXVsdChzdGFydFJhbmdlWzFdLCByb3dOdW1iZXIpLCBuZXcgUmVzdWx0UG9pbnRfMS5kZWZhdWx0KGVuZFJhbmdlWzBdLCByb3dOdW1iZXIpXTsKCSAgICAgICAgdmFyIHJlc3VsdFJldHVybiA9IG5ldyBSZXN1bHRfMS5kZWZhdWx0KHJlc3VsdFN0cmluZywgbnVsbCwgLy8gbm8gbmF0dXJhbCBieXRlIHJlcHJlc2VudGF0aW9uIGZvciB0aGVzZSBiYXJjb2RlcwoJICAgICAgICAwLCBwb2ludHMsIEJhcmNvZGVGb3JtYXRfMS5kZWZhdWx0LklURiwgbmV3IERhdGUoKS5nZXRUaW1lKCkpOwoJICAgICAgICByZXR1cm4gcmVzdWx0UmV0dXJuOwoJICAgIH07CgkgICAgLyoKCSAgICAvISoqCgkgICAgICogQHBhcmFtIHJvdyAgICAgICAgICByb3cgb2YgYmxhY2svd2hpdGUgdmFsdWVzIHRvIHNlYXJjaAoJICAgICAqIEBwYXJhbSBwYXlsb2FkU3RhcnQgb2Zmc2V0IG9mIHN0YXJ0IHBhdHRlcm4KCSAgICAgKiBAcGFyYW0gcmVzdWx0U3RyaW5nIHtAbGluayBTdHJpbmdCdWlsZGVyfSB0byBhcHBlbmQgZGVjb2RlZCBjaGFycyB0bwoJICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb24gaWYgZGVjb2RpbmcgY291bGQgbm90IGNvbXBsZXRlIHN1Y2Nlc3NmdWxseQoJICAgICAqIS8qLwoJICAgIElURlJlYWRlci5kZWNvZGVNaWRkbGUgPSBmdW5jdGlvbiAocm93LCBwYXlsb2FkU3RhcnQsIHBheWxvYWRFbmQsIHJlc3VsdFN0cmluZykgewoJICAgICAgICAvLyBEaWdpdHMgYXJlIGludGVybGVhdmVkIGluIHBhaXJzIC0gNSBibGFjayBsaW5lcyBmb3Igb25lIGRpZ2l0LCBhbmQgdGhlCgkgICAgICAgIC8vIDUKCSAgICAgICAgLy8gaW50ZXJsZWF2ZWQgd2hpdGUgbGluZXMgZm9yIHRoZSBzZWNvbmQgZGlnaXQuCgkgICAgICAgIC8vIFRoZXJlZm9yZSwgbmVlZCB0byBzY2FuIDEwIGxpbmVzIGFuZCB0aGVuCgkgICAgICAgIC8vIHNwbGl0IHRoZXNlIGludG8gdHdvIGFycmF5cwoJICAgICAgICB2YXIgY291bnRlckRpZ2l0UGFpciA9IG5ldyBJbnQzMkFycmF5KDEwKTsgLy8gMTAKCSAgICAgICAgdmFyIGNvdW50ZXJCbGFjayA9IG5ldyBJbnQzMkFycmF5KDUpOyAvLyA1CgkgICAgICAgIHZhciBjb3VudGVyV2hpdGUgPSBuZXcgSW50MzJBcnJheSg1KTsgLy8gNQoJICAgICAgICBjb3VudGVyRGlnaXRQYWlyLmZpbGwoMCk7CgkgICAgICAgIGNvdW50ZXJCbGFjay5maWxsKDApOwoJICAgICAgICBjb3VudGVyV2hpdGUuZmlsbCgwKTsKCSAgICAgICAgd2hpbGUgKHBheWxvYWRTdGFydCA8IHBheWxvYWRFbmQpIHsKCSAgICAgICAgICAgIC8vIEdldCAxMCBydW5zIG9mIGJsYWNrL3doaXRlLgoJICAgICAgICAgICAgT25lRFJlYWRlcl8xLmRlZmF1bHQucmVjb3JkUGF0dGVybihyb3csIHBheWxvYWRTdGFydCwgY291bnRlckRpZ2l0UGFpcik7CgkgICAgICAgICAgICAvLyBTcGxpdCB0aGVtIGludG8gZWFjaCBhcnJheQoJICAgICAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCA1OyBrKyspIHsKCSAgICAgICAgICAgICAgICB2YXIgdHdvSyA9IDIgKiBrOwoJICAgICAgICAgICAgICAgIGNvdW50ZXJCbGFja1trXSA9IGNvdW50ZXJEaWdpdFBhaXJbdHdvS107CgkgICAgICAgICAgICAgICAgY291bnRlcldoaXRlW2tdID0gY291bnRlckRpZ2l0UGFpclt0d29LICsgMV07CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICB2YXIgYmVzdE1hdGNoID0gSVRGUmVhZGVyLmRlY29kZURpZ2l0KGNvdW50ZXJCbGFjayk7CgkgICAgICAgICAgICByZXN1bHRTdHJpbmcuYXBwZW5kKGJlc3RNYXRjaC50b1N0cmluZygpKTsKCSAgICAgICAgICAgIGJlc3RNYXRjaCA9IHRoaXMuZGVjb2RlRGlnaXQoY291bnRlcldoaXRlKTsKCSAgICAgICAgICAgIHJlc3VsdFN0cmluZy5hcHBlbmQoYmVzdE1hdGNoLnRvU3RyaW5nKCkpOwoJICAgICAgICAgICAgY291bnRlckRpZ2l0UGFpci5mb3JFYWNoKGZ1bmN0aW9uIChjb3VudGVyRGlnaXQpIHsKCSAgICAgICAgICAgICAgICBwYXlsb2FkU3RhcnQgKz0gY291bnRlckRpZ2l0OwoJICAgICAgICAgICAgfSk7CgkgICAgICAgIH0KCSAgICB9OwoJICAgIC8qLyEqKgoJICAgICAqIElkZW50aWZ5IHdoZXJlIHRoZSBzdGFydCBvZiB0aGUgbWlkZGxlIC8gcGF5bG9hZCBzZWN0aW9uIHN0YXJ0cy4KCSAgICAgKgoJICAgICAqIEBwYXJhbSByb3cgcm93IG9mIGJsYWNrL3doaXRlIHZhbHVlcyB0byBzZWFyY2gKCSAgICAgKiBAcmV0dXJuIEFycmF5LCBjb250YWluaW5nIGluZGV4IG9mIHN0YXJ0IG9mICdzdGFydCBibG9jaycgYW5kIGVuZCBvZgoJICAgICAqICAgICAgICAgJ3N0YXJ0IGJsb2NrJwoJICAgICAqIS8qLwoJICAgIElURlJlYWRlci5wcm90b3R5cGUuZGVjb2RlU3RhcnQgPSBmdW5jdGlvbiAocm93KSB7CgkgICAgICAgIHZhciBlbmRTdGFydCA9IElURlJlYWRlci5za2lwV2hpdGVTcGFjZShyb3cpOwoJICAgICAgICB2YXIgc3RhcnRQYXR0ZXJuID0gSVRGUmVhZGVyLmZpbmRHdWFyZFBhdHRlcm4ocm93LCBlbmRTdGFydCwgSVRGUmVhZGVyLlNUQVJUX1BBVFRFUk4pOwoJICAgICAgICAvLyBEZXRlcm1pbmUgdGhlIHdpZHRoIG9mIGEgbmFycm93IGxpbmUgaW4gcGl4ZWxzLiBXZSBjYW4gZG8gdGhpcyBieQoJICAgICAgICAvLyBnZXR0aW5nIHRoZSB3aWR0aCBvZiB0aGUgc3RhcnQgcGF0dGVybiBhbmQgZGl2aWRpbmcgYnkgNCBiZWNhdXNlIGl0cwoJICAgICAgICAvLyBtYWRlIHVwIG9mIDQgbmFycm93IGxpbmVzLgoJICAgICAgICB0aGlzLm5hcnJvd0xpbmVXaWR0aCA9IChzdGFydFBhdHRlcm5bMV0gLSBzdGFydFBhdHRlcm5bMF0pIC8gNDsKCSAgICAgICAgdGhpcy52YWxpZGF0ZVF1aWV0Wm9uZShyb3csIHN0YXJ0UGF0dGVyblswXSk7CgkgICAgICAgIHJldHVybiBzdGFydFBhdHRlcm47CgkgICAgfTsKCSAgICAvKi8hKioKCSAgICAgKiBUaGUgc3RhcnQgJiBlbmQgcGF0dGVybnMgbXVzdCBiZSBwcmUvcG9zdCBmaXhlZCBieSBhIHF1aWV0IHpvbmUuIFRoaXMKCSAgICAgKiB6b25lIG11c3QgYmUgYXQgbGVhc3QgMTAgdGltZXMgdGhlIHdpZHRoIG9mIGEgbmFycm93IGxpbmUuICBTY2FuIGJhY2sgdW50aWwKCSAgICAgKiB3ZSBlaXRoZXIgZ2V0IHRvIHRoZSBzdGFydCBvZiB0aGUgYmFyY29kZSBvciBtYXRjaCB0aGUgbmVjZXNzYXJ5IG51bWJlciBvZgoJICAgICAqIHF1aWV0IHpvbmUgcGl4ZWxzLgoJICAgICAqCgkgICAgICogTm90ZTogSXRzIGFzc3VtZWQgdGhlIHJvdyBpcyByZXZlcnNlZCB3aGVuIHVzaW5nIHRoaXMgbWV0aG9kIHRvIGZpbmQKCSAgICAgKiBxdWlldCB6b25lIGFmdGVyIHRoZSBlbmQgcGF0dGVybi4KCSAgICAgKgoJICAgICAqIHJlZjogaHR0cDovL3d3dy5iYXJjb2RlLTEubmV0L2kyNWNvZGUuaHRtbAoJICAgICAqCgkgICAgICogQHBhcmFtIHJvdyBiaXQgYXJyYXkgcmVwcmVzZW50aW5nIHRoZSBzY2FubmVkIGJhcmNvZGUuCgkgICAgICogQHBhcmFtIHN0YXJ0UGF0dGVybiBpbmRleCBpbnRvIHJvdyBvZiB0aGUgc3RhcnQgb3IgZW5kIHBhdHRlcm4uCgkgICAgICogQHRocm93cyBOb3RGb3VuZEV4Y2VwdGlvbiBpZiB0aGUgcXVpZXQgem9uZSBjYW5ub3QgYmUgZm91bmQKCSAgICAgKiEvKi8KCSAgICBJVEZSZWFkZXIucHJvdG90eXBlLnZhbGlkYXRlUXVpZXRab25lID0gZnVuY3Rpb24gKHJvdywgc3RhcnRQYXR0ZXJuKSB7CgkgICAgICAgIHZhciBxdWlldENvdW50ID0gdGhpcy5uYXJyb3dMaW5lV2lkdGggKiAxMDsgLy8gZXhwZWN0IHRvIGZpbmQgdGhpcyBtYW55IHBpeGVscyBvZiBxdWlldCB6b25lCgkgICAgICAgIC8vIGlmIHRoZXJlIGFyZSBub3Qgc28gbWFueSBwaXhlbCBhdCBhbGwgbGV0J3MgdHJ5IGFzIG1hbnkgYXMgcG9zc2libGUKCSAgICAgICAgcXVpZXRDb3VudCA9IHF1aWV0Q291bnQgPCBzdGFydFBhdHRlcm4gPyBxdWlldENvdW50IDogc3RhcnRQYXR0ZXJuOwoJICAgICAgICBmb3IgKHZhciBpID0gc3RhcnRQYXR0ZXJuIC0gMTsgcXVpZXRDb3VudCA+IDAgJiYgaSA+PSAwOyBpLS0pIHsKCSAgICAgICAgICAgIGlmIChyb3cuZ2V0KGkpKSB7CgkgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBxdWlldENvdW50LS07CgkgICAgICAgIH0KCSAgICAgICAgaWYgKHF1aWV0Q291bnQgIT09IDApIHsKCSAgICAgICAgICAgIC8vIFVuYWJsZSB0byBmaW5kIHRoZSBuZWNlc3NhcnkgbnVtYmVyIG9mIHF1aWV0IHpvbmUgcGl4ZWxzLgoJICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgfTsKCSAgICAvKgoJICAgIC8hKioKCSAgICAgKiBTa2lwIGFsbCB3aGl0ZXNwYWNlIHVudGlsIHdlIGdldCB0byB0aGUgZmlyc3QgYmxhY2sgbGluZS4KCSAgICAgKgoJICAgICAqIEBwYXJhbSByb3cgcm93IG9mIGJsYWNrL3doaXRlIHZhbHVlcyB0byBzZWFyY2gKCSAgICAgKiBAcmV0dXJuIGluZGV4IG9mIHRoZSBmaXJzdCBibGFjayBsaW5lLgoJICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb24gVGhyb3dzIGV4Y2VwdGlvbiBpZiBubyBibGFjayBsaW5lcyBhcmUgZm91bmQgaW4gdGhlIHJvdwoJICAgICAqIS8qLwoJICAgIElURlJlYWRlci5za2lwV2hpdGVTcGFjZSA9IGZ1bmN0aW9uIChyb3cpIHsKCSAgICAgICAgdmFyIHdpZHRoID0gcm93LmdldFNpemUoKTsKCSAgICAgICAgdmFyIGVuZFN0YXJ0ID0gcm93LmdldE5leHRTZXQoMCk7CgkgICAgICAgIGlmIChlbmRTdGFydCA9PT0gd2lkdGgpIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gZW5kU3RhcnQ7CgkgICAgfTsKCSAgICAvKi8hKioKCSAgICAgKiBJZGVudGlmeSB3aGVyZSB0aGUgZW5kIG9mIHRoZSBtaWRkbGUgLyBwYXlsb2FkIHNlY3Rpb24gZW5kcy4KCSAgICAgKgoJICAgICAqIEBwYXJhbSByb3cgcm93IG9mIGJsYWNrL3doaXRlIHZhbHVlcyB0byBzZWFyY2gKCSAgICAgKiBAcmV0dXJuIEFycmF5LCBjb250YWluaW5nIGluZGV4IG9mIHN0YXJ0IG9mICdlbmQgYmxvY2snIGFuZCBlbmQgb2YgJ2VuZAoJICAgICAqICAgICAgICAgYmxvY2snCgkgICAgICohLyovCgkgICAgSVRGUmVhZGVyLnByb3RvdHlwZS5kZWNvZGVFbmQgPSBmdW5jdGlvbiAocm93KSB7CgkgICAgICAgIC8vIEZvciBjb252ZW5pZW5jZSwgcmV2ZXJzZSB0aGUgcm93IGFuZCB0aGVuCgkgICAgICAgIC8vIHNlYXJjaCBmcm9tICd0aGUgc3RhcnQnIGZvciB0aGUgZW5kIGJsb2NrCgkgICAgICAgIHJvdy5yZXZlcnNlKCk7CgkgICAgICAgIHRyeSB7CgkgICAgICAgICAgICB2YXIgZW5kU3RhcnQgPSBJVEZSZWFkZXIuc2tpcFdoaXRlU3BhY2Uocm93KTsKCSAgICAgICAgICAgIHZhciBlbmRQYXR0ZXJuID0gdm9pZCAwOwoJICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICBlbmRQYXR0ZXJuID0gSVRGUmVhZGVyLmZpbmRHdWFyZFBhdHRlcm4ocm93LCBlbmRTdGFydCwgSVRGUmVhZGVyLkVORF9QQVRURVJOX1JFVkVSU0VEWzBdKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGNhdGNoIChlcnJvcikgewoJICAgICAgICAgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCkgewoJICAgICAgICAgICAgICAgICAgICBlbmRQYXR0ZXJuID0gSVRGUmVhZGVyLmZpbmRHdWFyZFBhdHRlcm4ocm93LCBlbmRTdGFydCwgSVRGUmVhZGVyLkVORF9QQVRURVJOX1JFVkVSU0VEWzFdKTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICAvLyBUaGUgc3RhcnQgJiBlbmQgcGF0dGVybnMgbXVzdCBiZSBwcmUvcG9zdCBmaXhlZCBieSBhIHF1aWV0IHpvbmUuIFRoaXMKCSAgICAgICAgICAgIC8vIHpvbmUgbXVzdCBiZSBhdCBsZWFzdCAxMCB0aW1lcyB0aGUgd2lkdGggb2YgYSBuYXJyb3cgbGluZS4KCSAgICAgICAgICAgIC8vIHJlZjogaHR0cDovL3d3dy5iYXJjb2RlLTEubmV0L2kyNWNvZGUuaHRtbAoJICAgICAgICAgICAgdGhpcy52YWxpZGF0ZVF1aWV0Wm9uZShyb3csIGVuZFBhdHRlcm5bMF0pOwoJICAgICAgICAgICAgLy8gTm93IHJlY2FsY3VsYXRlIHRoZSBpbmRpY2VzIG9mIHdoZXJlIHRoZSAnZW5kYmxvY2snIHN0YXJ0cyAmIHN0b3BzIHRvCgkgICAgICAgICAgICAvLyBhY2NvbW1vZGF0ZQoJICAgICAgICAgICAgLy8gdGhlIHJldmVyc2VkIG5hdHVyZSBvZiB0aGUgc2VhcmNoCgkgICAgICAgICAgICB2YXIgdGVtcCA9IGVuZFBhdHRlcm5bMF07CgkgICAgICAgICAgICBlbmRQYXR0ZXJuWzBdID0gcm93LmdldFNpemUoKSAtIGVuZFBhdHRlcm5bMV07CgkgICAgICAgICAgICBlbmRQYXR0ZXJuWzFdID0gcm93LmdldFNpemUoKSAtIHRlbXA7CgkgICAgICAgICAgICByZXR1cm4gZW5kUGF0dGVybjsKCSAgICAgICAgfQoJICAgICAgICBmaW5hbGx5IHsKCSAgICAgICAgICAgIC8vIFB1dCB0aGUgcm93IGJhY2sgdGhlIHJpZ2h0IHdheS4KCSAgICAgICAgICAgIHJvdy5yZXZlcnNlKCk7CgkgICAgICAgIH0KCSAgICB9OwoJICAgIC8qCgkgICAgLyEqKgoJICAgICAqIEBwYXJhbSByb3cgICAgICAgcm93IG9mIGJsYWNrL3doaXRlIHZhbHVlcyB0byBzZWFyY2gKCSAgICAgKiBAcGFyYW0gcm93T2Zmc2V0IHBvc2l0aW9uIHRvIHN0YXJ0IHNlYXJjaAoJICAgICAqIEBwYXJhbSBwYXR0ZXJuICAgcGF0dGVybiBvZiBjb3VudHMgb2YgbnVtYmVyIG9mIGJsYWNrIGFuZCB3aGl0ZSBwaXhlbHMgdGhhdCBhcmUKCSAgICAgKiAgICAgICAgICAgICAgICAgIGJlaW5nIHNlYXJjaGVkIGZvciBhcyBhIHBhdHRlcm4KCSAgICAgKiBAcmV0dXJuIHN0YXJ0L2VuZCBob3Jpem9udGFsIG9mZnNldCBvZiBndWFyZCBwYXR0ZXJuLCBhcyBhbiBhcnJheSBvZiB0d28KCSAgICAgKiAgICAgICAgIGludHMKCSAgICAgKiBAdGhyb3dzIE5vdEZvdW5kRXhjZXB0aW9uIGlmIHBhdHRlcm4gaXMgbm90IGZvdW5kCgkgICAgICohLyovCgkgICAgSVRGUmVhZGVyLmZpbmRHdWFyZFBhdHRlcm4gPSBmdW5jdGlvbiAocm93LCByb3dPZmZzZXQsIHBhdHRlcm4pIHsKCSAgICAgICAgdmFyIHBhdHRlcm5MZW5ndGggPSBwYXR0ZXJuLmxlbmd0aDsKCSAgICAgICAgdmFyIGNvdW50ZXJzID0gbmV3IEludDMyQXJyYXkocGF0dGVybkxlbmd0aCk7CgkgICAgICAgIHZhciB3aWR0aCA9IHJvdy5nZXRTaXplKCk7CgkgICAgICAgIHZhciBpc1doaXRlID0gZmFsc2U7CgkgICAgICAgIHZhciBjb3VudGVyUG9zaXRpb24gPSAwOwoJICAgICAgICB2YXIgcGF0dGVyblN0YXJ0ID0gcm93T2Zmc2V0OwoJICAgICAgICBjb3VudGVycy5maWxsKDApOwoJICAgICAgICBmb3IgKHZhciB4ID0gcm93T2Zmc2V0OyB4IDwgd2lkdGg7IHgrKykgewoJICAgICAgICAgICAgaWYgKHJvdy5nZXQoeCkgIT09IGlzV2hpdGUpIHsKCSAgICAgICAgICAgICAgICBjb3VudGVyc1tjb3VudGVyUG9zaXRpb25dKys7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICBpZiAoY291bnRlclBvc2l0aW9uID09PSBwYXR0ZXJuTGVuZ3RoIC0gMSkgewoJICAgICAgICAgICAgICAgICAgICBpZiAoT25lRFJlYWRlcl8xLmRlZmF1bHQucGF0dGVybk1hdGNoVmFyaWFuY2UoY291bnRlcnMsIHBhdHRlcm4sIElURlJlYWRlci5NQVhfSU5ESVZJRFVBTF9WQVJJQU5DRSkgPCBJVEZSZWFkZXIuTUFYX0FWR19WQVJJQU5DRSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtwYXR0ZXJuU3RhcnQsIHhdOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIHBhdHRlcm5TdGFydCArPSBjb3VudGVyc1swXSArIGNvdW50ZXJzWzFdOwoJICAgICAgICAgICAgICAgICAgICBTeXN0ZW1fMS5kZWZhdWx0LmFycmF5Y29weShjb3VudGVycywgMiwgY291bnRlcnMsIDAsIGNvdW50ZXJQb3NpdGlvbiAtIDEpOwoJICAgICAgICAgICAgICAgICAgICBjb3VudGVyc1tjb3VudGVyUG9zaXRpb24gLSAxXSA9IDA7CgkgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJzW2NvdW50ZXJQb3NpdGlvbl0gPSAwOwoJICAgICAgICAgICAgICAgICAgICBjb3VudGVyUG9zaXRpb24tLTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJQb3NpdGlvbisrOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBjb3VudGVyc1tjb3VudGVyUG9zaXRpb25dID0gMTsKCSAgICAgICAgICAgICAgICBpc1doaXRlID0gIWlzV2hpdGU7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgIH07CgkgICAgLyovISoqCgkgICAgICogQXR0ZW1wdHMgdG8gZGVjb2RlIGEgc2VxdWVuY2Ugb2YgSVRGIGJsYWNrL3doaXRlIGxpbmVzIGludG8gc2luZ2xlCgkgICAgICogZGlnaXQuCgkgICAgICoKCSAgICAgKiBAcGFyYW0gY291bnRlcnMgdGhlIGNvdW50cyBvZiBydW5zIG9mIG9ic2VydmVkIGJsYWNrL3doaXRlL2JsYWNrLy4uLiB2YWx1ZXMKCSAgICAgKiBAcmV0dXJuIFRoZSBkZWNvZGVkIGRpZ2l0CgkgICAgICogQHRocm93cyBOb3RGb3VuZEV4Y2VwdGlvbiBpZiBkaWdpdCBjYW5ub3QgYmUgZGVjb2RlZAoJICAgICAqIS8qLwoJICAgIElURlJlYWRlci5kZWNvZGVEaWdpdCA9IGZ1bmN0aW9uIChjb3VudGVycykgewoJICAgICAgICB2YXIgYmVzdFZhcmlhbmNlID0gSVRGUmVhZGVyLk1BWF9BVkdfVkFSSUFOQ0U7IC8vIHdvcnN0IHZhcmlhbmNlIHdlJ2xsIGFjY2VwdAoJICAgICAgICB2YXIgYmVzdE1hdGNoID0gLTE7CgkgICAgICAgIHZhciBtYXggPSBJVEZSZWFkZXIuUEFUVEVSTlMubGVuZ3RoOwoJICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1heDsgaSsrKSB7CgkgICAgICAgICAgICB2YXIgcGF0dGVybiA9IElURlJlYWRlci5QQVRURVJOU1tpXTsKCSAgICAgICAgICAgIHZhciB2YXJpYW5jZSA9IE9uZURSZWFkZXJfMS5kZWZhdWx0LnBhdHRlcm5NYXRjaFZhcmlhbmNlKGNvdW50ZXJzLCBwYXR0ZXJuLCBJVEZSZWFkZXIuTUFYX0lORElWSURVQUxfVkFSSUFOQ0UpOwoJICAgICAgICAgICAgaWYgKHZhcmlhbmNlIDwgYmVzdFZhcmlhbmNlKSB7CgkgICAgICAgICAgICAgICAgYmVzdFZhcmlhbmNlID0gdmFyaWFuY2U7CgkgICAgICAgICAgICAgICAgYmVzdE1hdGNoID0gaTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGVsc2UgaWYgKHZhcmlhbmNlID09PSBiZXN0VmFyaWFuY2UpIHsKCSAgICAgICAgICAgICAgICAvLyBpZiB3ZSBmaW5kIGEgc2Vjb25kICdiZXN0IG1hdGNoJyB3aXRoIHRoZSBzYW1lIHZhcmlhbmNlLCB3ZSBjYW4gbm90IHJlbGlhYmx5IHJlcG9ydCB0byBoYXZlIGEgc3VpdGFibGUgbWF0Y2gKCSAgICAgICAgICAgICAgICBiZXN0TWF0Y2ggPSAtMTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICBpZiAoYmVzdE1hdGNoID49IDApIHsKCSAgICAgICAgICAgIHJldHVybiBiZXN0TWF0Y2ggJSAxMDsKCSAgICAgICAgfQoJICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgfQoJICAgIH07CgkgICAgSVRGUmVhZGVyLlBBVFRFUk5TID0gWwoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDEsIDIsIDIsIDFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsyLCAxLCAxLCAxLCAyXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMiwgMSwgMSwgMl0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzIsIDIsIDEsIDEsIDFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAxLCAyLCAxLCAyXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMiwgMSwgMiwgMSwgMV0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDIsIDIsIDEsIDFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAxLCAxLCAyLCAyXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMiwgMSwgMSwgMiwgMV0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDIsIDEsIDIsIDFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAxLCAzLCAzLCAxXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMywgMSwgMSwgMSwgM10pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDMsIDEsIDEsIDNdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFszLCAzLCAxLCAxLCAxXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMSwgMywgMSwgM10pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzMsIDEsIDMsIDEsIDFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAzLCAzLCAxLCAxXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMSwgMSwgMywgM10pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzMsIDEsIDEsIDMsIDFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAzLCAxLCAzLCAxXSkgLy8gOQoJICAgIF07CgkgICAgSVRGUmVhZGVyLk1BWF9BVkdfVkFSSUFOQ0UgPSAwLjM4OwoJICAgIElURlJlYWRlci5NQVhfSU5ESVZJRFVBTF9WQVJJQU5DRSA9IDAuNTsKCSAgICAvKiAvISoqIFZhbGlkIElURiBsZW5ndGhzLiBBbnl0aGluZyBsb25nZXIgdGhhbiB0aGUgbGFyZ2VzdCB2YWx1ZSBpcyBhbHNvIGFsbG93ZWQuICohLyovCgkgICAgSVRGUmVhZGVyLkRFRkFVTFRfQUxMT1dFRF9MRU5HVEhTID0gWzYsIDgsIDEwLCAxMiwgMTRdOwoJICAgIC8qLyEqKgoJICAgICAqIFN0YXJ0L2VuZCBndWFyZCBwYXR0ZXJuLgoJICAgICAqCgkgICAgICogTm90ZTogVGhlIGVuZCBwYXR0ZXJuIGlzIHJldmVyc2VkIGJlY2F1c2UgdGhlIHJvdyBpcyByZXZlcnNlZCBiZWZvcmUKCSAgICAgKiBzZWFyY2hpbmcgZm9yIHRoZSBFTkRfUEFUVEVSTgoJICAgICAqIS8qLwoJICAgIElURlJlYWRlci5TVEFSVF9QQVRURVJOID0gSW50MzJBcnJheS5mcm9tKFsxLCAxLCAxLCAxXSk7CgkgICAgSVRGUmVhZGVyLkVORF9QQVRURVJOX1JFVkVSU0VEID0gWwoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDEsIDJdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAxLCAzXSkgLy8gM3gKCSAgICBdOwoJICAgIHJldHVybiBJVEZSZWFkZXI7Cgl9KE9uZURSZWFkZXJfMS5kZWZhdWx0KSk7CglleHBvcnRzLmRlZmF1bHQgPSBJVEZSZWFkZXI7CgoJfSk7CgoJdmFyIEFic3RyYWN0VVBDRUFOUmVhZGVyXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CgkvKgoJICogQ29weXJpZ2h0IDIwMDggWlhpbmcgYXV0aG9ycwoJICoKCSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkgKgoJICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSAqCgkgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSAqLwoJdmFyIF9fZXh0ZW5kcyA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7CgkgICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8CgkgICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8CgkgICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTsKCSAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgfTsKCSAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9CgkgICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTsKCSAgICB9OwoJfSkoKTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgoKCgkvKioKCSAqIDxwPkVuY2Fwc3VsYXRlcyBmdW5jdGlvbmFsaXR5IGFuZCBpbXBsZW1lbnRhdGlvbiB0aGF0IGlzIGNvbW1vbiB0byBVUEMgYW5kIEVBTiBmYW1pbGllcwoJICogb2Ygb25lLWRpbWVuc2lvbmFsIGJhcmNvZGVzLjwvcD4KCSAqCgkgKiBAYXV0aG9yIGRzd2l0a2luQGdvb2dsZS5jb20gKERhbmllbCBTd2l0a2luKQoJICogQGF1dGhvciBTZWFuIE93ZW4KCSAqIEBhdXRob3IgYWxhc2RhaXJAZ29vZ2xlLmNvbSAoQWxhc2RhaXIgTWFja2ludG9zaCkKCSAqLwoJdmFyIEFic3RyYWN0VVBDRUFOUmVhZGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikgewoJICAgIF9fZXh0ZW5kcyhBYnN0cmFjdFVQQ0VBTlJlYWRlciwgX3N1cGVyKTsKCSAgICBmdW5jdGlvbiBBYnN0cmFjdFVQQ0VBTlJlYWRlcigpIHsKCSAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7CgkgICAgICAgIF90aGlzLmRlY29kZVJvd1N0cmluZ0J1ZmZlciA9ICcnOwoJICAgICAgICByZXR1cm4gX3RoaXM7CgkgICAgfQoJICAgIC8vIHByaXZhdGUgZmluYWwgVVBDRUFORXh0ZW5zaW9uU3VwcG9ydCBleHRlbnNpb25SZWFkZXI7CgkgICAgLy8gcHJpdmF0ZSBmaW5hbCBFQU5NYW51ZmFjdHVyZXJPcmdTdXBwb3J0IGVhbk1hblN1cHBvcnQ7CgkgICAgLyoKCSAgICBwcm90ZWN0ZWQgVVBDRUFOUmVhZGVyKCkgewoJICAgICAgICBkZWNvZGVSb3dTdHJpbmdCdWZmZXIgPSBuZXcgU3RyaW5nQnVpbGRlcigyMCk7CgkgICAgICAgIGV4dGVuc2lvblJlYWRlciA9IG5ldyBVUENFQU5FeHRlbnNpb25TdXBwb3J0KCk7CgkgICAgICAgIGVhbk1hblN1cHBvcnQgPSBuZXcgRUFOTWFudWZhY3R1cmVyT3JnU3VwcG9ydCgpOwoJICAgIH0KCSAgICAqLwoJICAgIEFic3RyYWN0VVBDRUFOUmVhZGVyLmZpbmRTdGFydEd1YXJkUGF0dGVybiA9IGZ1bmN0aW9uIChyb3cpIHsKCSAgICAgICAgdmFyIGZvdW5kU3RhcnQgPSBmYWxzZTsKCSAgICAgICAgdmFyIHN0YXJ0UmFuZ2U7CgkgICAgICAgIHZhciBuZXh0U3RhcnQgPSAwOwoJICAgICAgICB2YXIgY291bnRlcnMgPSBJbnQzMkFycmF5LmZyb20oWzAsIDAsIDBdKTsKCSAgICAgICAgd2hpbGUgKCFmb3VuZFN0YXJ0KSB7CgkgICAgICAgICAgICBjb3VudGVycyA9IEludDMyQXJyYXkuZnJvbShbMCwgMCwgMF0pOwoJICAgICAgICAgICAgc3RhcnRSYW5nZSA9IEFic3RyYWN0VVBDRUFOUmVhZGVyLmZpbmRHdWFyZFBhdHRlcm4ocm93LCBuZXh0U3RhcnQsIGZhbHNlLCB0aGlzLlNUQVJUX0VORF9QQVRURVJOLCBjb3VudGVycyk7CgkgICAgICAgICAgICB2YXIgc3RhcnQgPSBzdGFydFJhbmdlWzBdOwoJICAgICAgICAgICAgbmV4dFN0YXJ0ID0gc3RhcnRSYW5nZVsxXTsKCSAgICAgICAgICAgIHZhciBxdWlldFN0YXJ0ID0gc3RhcnQgLSAobmV4dFN0YXJ0IC0gc3RhcnQpOwoJICAgICAgICAgICAgaWYgKHF1aWV0U3RhcnQgPj0gMCkgewoJICAgICAgICAgICAgICAgIGZvdW5kU3RhcnQgPSByb3cuaXNSYW5nZShxdWlldFN0YXJ0LCBzdGFydCwgZmFsc2UpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBzdGFydFJhbmdlOwoJICAgIH07CgkgICAgQWJzdHJhY3RVUENFQU5SZWFkZXIuY2hlY2tDaGVja3N1bSA9IGZ1bmN0aW9uIChzKSB7CgkgICAgICAgIHJldHVybiBBYnN0cmFjdFVQQ0VBTlJlYWRlci5jaGVja1N0YW5kYXJkVVBDRUFOQ2hlY2tzdW0ocyk7CgkgICAgfTsKCSAgICBBYnN0cmFjdFVQQ0VBTlJlYWRlci5jaGVja1N0YW5kYXJkVVBDRUFOQ2hlY2tzdW0gPSBmdW5jdGlvbiAocykgewoJICAgICAgICB2YXIgbGVuZ3RoID0gcy5sZW5ndGg7CgkgICAgICAgIGlmIChsZW5ndGggPT09IDApCgkgICAgICAgICAgICByZXR1cm4gZmFsc2U7CgkgICAgICAgIHZhciBjaGVjayA9IHBhcnNlSW50KHMuY2hhckF0KGxlbmd0aCAtIDEpLCAxMCk7CgkgICAgICAgIHJldHVybiBBYnN0cmFjdFVQQ0VBTlJlYWRlci5nZXRTdGFuZGFyZFVQQ0VBTkNoZWNrc3VtKHMuc3Vic3RyaW5nKDAsIGxlbmd0aCAtIDEpKSA9PT0gY2hlY2s7CgkgICAgfTsKCSAgICBBYnN0cmFjdFVQQ0VBTlJlYWRlci5nZXRTdGFuZGFyZFVQQ0VBTkNoZWNrc3VtID0gZnVuY3Rpb24gKHMpIHsKCSAgICAgICAgdmFyIGxlbmd0aCA9IHMubGVuZ3RoOwoJICAgICAgICB2YXIgc3VtID0gMDsKCSAgICAgICAgZm9yICh2YXIgaSA9IGxlbmd0aCAtIDE7IGkgPj0gMDsgaSAtPSAyKSB7CgkgICAgICAgICAgICB2YXIgZGlnaXQgPSBzLmNoYXJBdChpKS5jaGFyQ29kZUF0KDApIC0gJzAnLmNoYXJDb2RlQXQoMCk7CgkgICAgICAgICAgICBpZiAoZGlnaXQgPCAwIHx8IGRpZ2l0ID4gOSkgewoJICAgICAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBzdW0gKz0gZGlnaXQ7CgkgICAgICAgIH0KCSAgICAgICAgc3VtICo9IDM7CgkgICAgICAgIGZvciAodmFyIGkgPSBsZW5ndGggLSAyOyBpID49IDA7IGkgLT0gMikgewoJICAgICAgICAgICAgdmFyIGRpZ2l0ID0gcy5jaGFyQXQoaSkuY2hhckNvZGVBdCgwKSAtICcwJy5jaGFyQ29kZUF0KDApOwoJICAgICAgICAgICAgaWYgKGRpZ2l0IDwgMCB8fCBkaWdpdCA+IDkpIHsKCSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgc3VtICs9IGRpZ2l0OwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiAoMTAwMCAtIHN1bSkgJSAxMDsKCSAgICB9OwoJICAgIEFic3RyYWN0VVBDRUFOUmVhZGVyLmRlY29kZUVuZCA9IGZ1bmN0aW9uIChyb3csIGVuZFN0YXJ0KSB7CgkgICAgICAgIHJldHVybiBBYnN0cmFjdFVQQ0VBTlJlYWRlci5maW5kR3VhcmRQYXR0ZXJuKHJvdywgZW5kU3RhcnQsIGZhbHNlLCBBYnN0cmFjdFVQQ0VBTlJlYWRlci5TVEFSVF9FTkRfUEFUVEVSTiwgbmV3IEludDMyQXJyYXkoQWJzdHJhY3RVUENFQU5SZWFkZXIuU1RBUlRfRU5EX1BBVFRFUk4ubGVuZ3RoKS5maWxsKDApKTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb24KCSAgICAgKi8KCSAgICBBYnN0cmFjdFVQQ0VBTlJlYWRlci5maW5kR3VhcmRQYXR0ZXJuV2l0aG91dENvdW50ZXJzID0gZnVuY3Rpb24gKHJvdywgcm93T2Zmc2V0LCB3aGl0ZUZpcnN0LCBwYXR0ZXJuKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmZpbmRHdWFyZFBhdHRlcm4ocm93LCByb3dPZmZzZXQsIHdoaXRlRmlyc3QsIHBhdHRlcm4sIG5ldyBJbnQzMkFycmF5KHBhdHRlcm4ubGVuZ3RoKSk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcGFyYW0gcm93IHJvdyBvZiBibGFjay93aGl0ZSB2YWx1ZXMgdG8gc2VhcmNoCgkgICAgICogQHBhcmFtIHJvd09mZnNldCBwb3NpdGlvbiB0byBzdGFydCBzZWFyY2gKCSAgICAgKiBAcGFyYW0gd2hpdGVGaXJzdCBpZiB0cnVlLCBpbmRpY2F0ZXMgdGhhdCB0aGUgcGF0dGVybiBzcGVjaWZpZXMgd2hpdGUvYmxhY2svd2hpdGUvLi4uCgkgICAgICogcGl4ZWwgY291bnRzLCBvdGhlcndpc2UsIGl0IGlzIGludGVycHJldGVkIGFzIGJsYWNrL3doaXRlL2JsYWNrLy4uLgoJICAgICAqIEBwYXJhbSBwYXR0ZXJuIHBhdHRlcm4gb2YgY291bnRzIG9mIG51bWJlciBvZiBibGFjayBhbmQgd2hpdGUgcGl4ZWxzIHRoYXQgYXJlIGJlaW5nCgkgICAgICogc2VhcmNoZWQgZm9yIGFzIGEgcGF0dGVybgoJICAgICAqIEBwYXJhbSBjb3VudGVycyBhcnJheSBvZiBjb3VudGVycywgYXMgbG9uZyBhcyBwYXR0ZXJuLCB0byByZS11c2UKCSAgICAgKiBAcmV0dXJuIHN0YXJ0L2VuZCBob3Jpem9udGFsIG9mZnNldCBvZiBndWFyZCBwYXR0ZXJuLCBhcyBhbiBhcnJheSBvZiB0d28gaW50cwoJICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb24gaWYgcGF0dGVybiBpcyBub3QgZm91bmQKCSAgICAgKi8KCSAgICBBYnN0cmFjdFVQQ0VBTlJlYWRlci5maW5kR3VhcmRQYXR0ZXJuID0gZnVuY3Rpb24gKHJvdywgcm93T2Zmc2V0LCB3aGl0ZUZpcnN0LCBwYXR0ZXJuLCBjb3VudGVycykgewoJICAgICAgICB2YXIgd2lkdGggPSByb3cuZ2V0U2l6ZSgpOwoJICAgICAgICByb3dPZmZzZXQgPSB3aGl0ZUZpcnN0ID8gcm93LmdldE5leHRVbnNldChyb3dPZmZzZXQpIDogcm93LmdldE5leHRTZXQocm93T2Zmc2V0KTsKCSAgICAgICAgdmFyIGNvdW50ZXJQb3NpdGlvbiA9IDA7CgkgICAgICAgIHZhciBwYXR0ZXJuU3RhcnQgPSByb3dPZmZzZXQ7CgkgICAgICAgIHZhciBwYXR0ZXJuTGVuZ3RoID0gcGF0dGVybi5sZW5ndGg7CgkgICAgICAgIHZhciBpc1doaXRlID0gd2hpdGVGaXJzdDsKCSAgICAgICAgZm9yICh2YXIgeCA9IHJvd09mZnNldDsgeCA8IHdpZHRoOyB4KyspIHsKCSAgICAgICAgICAgIGlmIChyb3cuZ2V0KHgpICE9PSBpc1doaXRlKSB7CgkgICAgICAgICAgICAgICAgY291bnRlcnNbY291bnRlclBvc2l0aW9uXSsrOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgaWYgKGNvdW50ZXJQb3NpdGlvbiA9PT0gcGF0dGVybkxlbmd0aCAtIDEpIHsKCSAgICAgICAgICAgICAgICAgICAgaWYgKE9uZURSZWFkZXJfMS5kZWZhdWx0LnBhdHRlcm5NYXRjaFZhcmlhbmNlKGNvdW50ZXJzLCBwYXR0ZXJuLCBBYnN0cmFjdFVQQ0VBTlJlYWRlci5NQVhfSU5ESVZJRFVBTF9WQVJJQU5DRSkgPCBBYnN0cmFjdFVQQ0VBTlJlYWRlci5NQVhfQVZHX1ZBUklBTkNFKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSW50MzJBcnJheS5mcm9tKFtwYXR0ZXJuU3RhcnQsIHhdKTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuU3RhcnQgKz0gY291bnRlcnNbMF0gKyBjb3VudGVyc1sxXTsKCSAgICAgICAgICAgICAgICAgICAgdmFyIHNsaWNlID0gY291bnRlcnMuc2xpY2UoMiwgY291bnRlcnMubGVuZ3RoIC0gMSk7CgkgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnRlclBvc2l0aW9uIC0gMTsgaSsrKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyc1tpXSA9IHNsaWNlW2ldOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJzW2NvdW50ZXJQb3NpdGlvbiAtIDFdID0gMDsKCSAgICAgICAgICAgICAgICAgICAgY291bnRlcnNbY291bnRlclBvc2l0aW9uXSA9IDA7CgkgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJQb3NpdGlvbi0tOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICAgICAgY291bnRlclBvc2l0aW9uKys7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGNvdW50ZXJzW2NvdW50ZXJQb3NpdGlvbl0gPSAxOwoJICAgICAgICAgICAgICAgIGlzV2hpdGUgPSAhaXNXaGl0ZTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgfTsKCSAgICBBYnN0cmFjdFVQQ0VBTlJlYWRlci5kZWNvZGVEaWdpdCA9IGZ1bmN0aW9uIChyb3csIGNvdW50ZXJzLCByb3dPZmZzZXQsIHBhdHRlcm5zKSB7CgkgICAgICAgIHRoaXMucmVjb3JkUGF0dGVybihyb3csIHJvd09mZnNldCwgY291bnRlcnMpOwoJICAgICAgICB2YXIgYmVzdFZhcmlhbmNlID0gdGhpcy5NQVhfQVZHX1ZBUklBTkNFOwoJICAgICAgICB2YXIgYmVzdE1hdGNoID0gLTE7CgkgICAgICAgIHZhciBtYXggPSBwYXR0ZXJucy5sZW5ndGg7CgkgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWF4OyBpKyspIHsKCSAgICAgICAgICAgIHZhciBwYXR0ZXJuID0gcGF0dGVybnNbaV07CgkgICAgICAgICAgICB2YXIgdmFyaWFuY2UgPSBPbmVEUmVhZGVyXzEuZGVmYXVsdC5wYXR0ZXJuTWF0Y2hWYXJpYW5jZShjb3VudGVycywgcGF0dGVybiwgQWJzdHJhY3RVUENFQU5SZWFkZXIuTUFYX0lORElWSURVQUxfVkFSSUFOQ0UpOwoJICAgICAgICAgICAgaWYgKHZhcmlhbmNlIDwgYmVzdFZhcmlhbmNlKSB7CgkgICAgICAgICAgICAgICAgYmVzdFZhcmlhbmNlID0gdmFyaWFuY2U7CgkgICAgICAgICAgICAgICAgYmVzdE1hdGNoID0gaTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICBpZiAoYmVzdE1hdGNoID49IDApIHsKCSAgICAgICAgICAgIHJldHVybiBiZXN0TWF0Y2g7CgkgICAgICAgIH0KCSAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgIH0KCSAgICB9OwoJICAgIC8vIFRoZXNlIHR3byB2YWx1ZXMgYXJlIGNyaXRpY2FsIGZvciBkZXRlcm1pbmluZyBob3cgcGVybWlzc2l2ZSB0aGUgZGVjb2Rpbmcgd2lsbCBiZS4KCSAgICAvLyBXZSd2ZSBhcnJpdmVkIGF0IHRoZXNlIHZhbHVlcyB0aHJvdWdoIGEgbG90IG9mIHRyaWFsIGFuZCBlcnJvci4gU2V0dGluZyB0aGVtIGFueSBoaWdoZXIKCSAgICAvLyBsZXRzIGZhbHNlIHBvc2l0aXZlcyBjcmVlcCBpbiBxdWlja2x5LgoJICAgIEFic3RyYWN0VVBDRUFOUmVhZGVyLk1BWF9BVkdfVkFSSUFOQ0UgPSAwLjQ4OwoJICAgIEFic3RyYWN0VVBDRUFOUmVhZGVyLk1BWF9JTkRJVklEVUFMX1ZBUklBTkNFID0gMC43OwoJICAgIC8qKgoJICAgICAqIFN0YXJ0L2VuZCBndWFyZCBwYXR0ZXJuLgoJICAgICAqLwoJICAgIEFic3RyYWN0VVBDRUFOUmVhZGVyLlNUQVJUX0VORF9QQVRURVJOID0gSW50MzJBcnJheS5mcm9tKFsxLCAxLCAxXSk7CgkgICAgLyoqCgkgICAgICogUGF0dGVybiBtYXJraW5nIHRoZSBtaWRkbGUgb2YgYSBVUEMvRUFOIHBhdHRlcm4sIHNlcGFyYXRpbmcgdGhlIHR3byBoYWx2ZXMuCgkgICAgICovCgkgICAgQWJzdHJhY3RVUENFQU5SZWFkZXIuTUlERExFX1BBVFRFUk4gPSBJbnQzMkFycmF5LmZyb20oWzEsIDEsIDEsIDEsIDFdKTsKCSAgICAvKioKCSAgICAgKiBlbmQgZ3VhcmQgcGF0dGVybi4KCSAgICAgKi8KCSAgICBBYnN0cmFjdFVQQ0VBTlJlYWRlci5FTkRfUEFUVEVSTiA9IEludDMyQXJyYXkuZnJvbShbMSwgMSwgMSwgMSwgMSwgMV0pOwoJICAgIC8qKgoJICAgICAqICJPZGQiLCBvciAiTCIgcGF0dGVybnMgdXNlZCB0byBlbmNvZGUgVVBDL0VBTiBkaWdpdHMuCgkgICAgICovCgkgICAgQWJzdHJhY3RVUENFQU5SZWFkZXIuTF9QQVRURVJOUyA9IFsKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFszLCAyLCAxLCAxXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMiwgMiwgMiwgMV0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzIsIDEsIDIsIDJdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCA0LCAxLCAxXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMSwgMywgMl0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDIsIDMsIDFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAxLCAxLCA0XSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMywgMSwgMl0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDIsIDEsIDNdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFszLCAxLCAxLCAyXSksCgkgICAgXTsKCSAgICByZXR1cm4gQWJzdHJhY3RVUENFQU5SZWFkZXI7Cgl9KE9uZURSZWFkZXJfMS5kZWZhdWx0KSk7CglleHBvcnRzLmRlZmF1bHQgPSBBYnN0cmFjdFVQQ0VBTlJlYWRlcjsKCgl9KTsKCgl2YXIgVVBDRUFORXh0ZW5zaW9uNVN1cHBvcnRfMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCS8qCgkgKiBDb3B5cmlnaHQgKEMpIDIwMTAgWlhpbmcgYXV0aG9ycwoJICoKCSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkgKgoJICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSAqCgkgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSAqLwoJdmFyIF9fdmFsdWVzID0gKGNvbW1vbmpzR2xvYmFsICYmIGNvbW1vbmpzR2xvYmFsLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7CgkgICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSAiZnVuY3Rpb24iICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7CgkgICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7CgkgICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSAibnVtYmVyIikgcmV0dXJuIHsKCSAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkgewoJICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDsKCSAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTsKCSAgICAgICAgfQoJICAgIH07CgkgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gIk9iamVjdCBpcyBub3QgaXRlcmFibGUuIiA6ICJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuIik7Cgl9OwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCgkvLyBpbXBvcnQgVVBDRUFOUmVhZGVyIGZyb20gJy4vVVBDRUFOUmVhZGVyJzsKCgoKCgoJLyoqCgkgKiBAc2VlIFVQQ0VBTkV4dGVuc2lvbjJTdXBwb3J0CgkgKi8KCXZhciBVUENFQU5FeHRlbnNpb241U3VwcG9ydCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBVUENFQU5FeHRlbnNpb241U3VwcG9ydCgpIHsKCSAgICAgICAgdGhpcy5DSEVDS19ESUdJVF9FTkNPRElOR1MgPSBbMHgxOCwgMHgxNCwgMHgxMiwgMHgxMSwgMHgwQywgMHgwNiwgMHgwMywgMHgwQSwgMHgwOSwgMHgwNV07CgkgICAgICAgIHRoaXMuZGVjb2RlTWlkZGxlQ291bnRlcnMgPSBJbnQzMkFycmF5LmZyb20oWzAsIDAsIDAsIDBdKTsKCSAgICAgICAgdGhpcy5kZWNvZGVSb3dTdHJpbmdCdWZmZXIgPSAnJzsKCSAgICB9CgkgICAgVVBDRUFORXh0ZW5zaW9uNVN1cHBvcnQucHJvdG90eXBlLmRlY29kZVJvdyA9IGZ1bmN0aW9uIChyb3dOdW1iZXIsIHJvdywgZXh0ZW5zaW9uU3RhcnRSYW5nZSkgewoJICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5kZWNvZGVSb3dTdHJpbmdCdWZmZXI7CgkgICAgICAgIHZhciBlbmQgPSB0aGlzLmRlY29kZU1pZGRsZShyb3csIGV4dGVuc2lvblN0YXJ0UmFuZ2UsIHJlc3VsdCk7CgkgICAgICAgIHZhciByZXN1bHRTdHJpbmcgPSByZXN1bHQudG9TdHJpbmcoKTsKCSAgICAgICAgdmFyIGV4dGVuc2lvbkRhdGEgPSBVUENFQU5FeHRlbnNpb241U3VwcG9ydC5wYXJzZUV4dGVuc2lvblN0cmluZyhyZXN1bHRTdHJpbmcpOwoJICAgICAgICB2YXIgcmVzdWx0UG9pbnRzID0gWwoJICAgICAgICAgICAgbmV3IFJlc3VsdFBvaW50XzEuZGVmYXVsdCgoZXh0ZW5zaW9uU3RhcnRSYW5nZVswXSArIGV4dGVuc2lvblN0YXJ0UmFuZ2VbMV0pIC8gMi4wLCByb3dOdW1iZXIpLAoJICAgICAgICAgICAgbmV3IFJlc3VsdFBvaW50XzEuZGVmYXVsdChlbmQsIHJvd051bWJlcikKCSAgICAgICAgXTsKCSAgICAgICAgdmFyIGV4dGVuc2lvblJlc3VsdCA9IG5ldyBSZXN1bHRfMS5kZWZhdWx0KHJlc3VsdFN0cmluZywgbnVsbCwgMCwgcmVzdWx0UG9pbnRzLCBCYXJjb2RlRm9ybWF0XzEuZGVmYXVsdC5VUENfRUFOX0VYVEVOU0lPTiwgbmV3IERhdGUoKS5nZXRUaW1lKCkpOwoJICAgICAgICBpZiAoZXh0ZW5zaW9uRGF0YSAhPSBudWxsKSB7CgkgICAgICAgICAgICBleHRlbnNpb25SZXN1bHQucHV0QWxsTWV0YWRhdGEoZXh0ZW5zaW9uRGF0YSk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIGV4dGVuc2lvblJlc3VsdDsKCSAgICB9OwoJICAgIFVQQ0VBTkV4dGVuc2lvbjVTdXBwb3J0LnByb3RvdHlwZS5kZWNvZGVNaWRkbGUgPSBmdW5jdGlvbiAocm93LCBzdGFydFJhbmdlLCByZXN1bHRTdHJpbmcpIHsKCSAgICAgICAgdmFyIGVfMSwgX2E7CgkgICAgICAgIHZhciBjb3VudGVycyA9IHRoaXMuZGVjb2RlTWlkZGxlQ291bnRlcnM7CgkgICAgICAgIGNvdW50ZXJzWzBdID0gMDsKCSAgICAgICAgY291bnRlcnNbMV0gPSAwOwoJICAgICAgICBjb3VudGVyc1syXSA9IDA7CgkgICAgICAgIGNvdW50ZXJzWzNdID0gMDsKCSAgICAgICAgdmFyIGVuZCA9IHJvdy5nZXRTaXplKCk7CgkgICAgICAgIHZhciByb3dPZmZzZXQgPSBzdGFydFJhbmdlWzFdOwoJICAgICAgICB2YXIgbGdQYXR0ZXJuRm91bmQgPSAwOwoJICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IDUgJiYgcm93T2Zmc2V0IDwgZW5kOyB4KyspIHsKCSAgICAgICAgICAgIHZhciBiZXN0TWF0Y2ggPSBBYnN0cmFjdFVQQ0VBTlJlYWRlcl8xLmRlZmF1bHQuZGVjb2RlRGlnaXQocm93LCBjb3VudGVycywgcm93T2Zmc2V0LCBBYnN0cmFjdFVQQ0VBTlJlYWRlcl8xLmRlZmF1bHQuTF9BTkRfR19QQVRURVJOUyk7CgkgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoJzAnLmNoYXJDb2RlQXQoMCkgKyBiZXN0TWF0Y2ggJSAxMCkpOwoJICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICBmb3IgKHZhciBjb3VudGVyc18xID0gKGVfMSA9IHZvaWQgMCwgX192YWx1ZXMoY291bnRlcnMpKSwgY291bnRlcnNfMV8xID0gY291bnRlcnNfMS5uZXh0KCk7ICFjb3VudGVyc18xXzEuZG9uZTsgY291bnRlcnNfMV8xID0gY291bnRlcnNfMS5uZXh0KCkpIHsKCSAgICAgICAgICAgICAgICAgICAgdmFyIGNvdW50ZXIgPSBjb3VudGVyc18xXzEudmFsdWU7CgkgICAgICAgICAgICAgICAgICAgIHJvd09mZnNldCArPSBjb3VudGVyOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9CgkgICAgICAgICAgICBmaW5hbGx5IHsKCSAgICAgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgICAgICBpZiAoY291bnRlcnNfMV8xICYmICFjb3VudGVyc18xXzEuZG9uZSAmJiAoX2EgPSBjb3VudGVyc18xLnJldHVybikpIF9hLmNhbGwoY291bnRlcnNfMSk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGlmIChiZXN0TWF0Y2ggPj0gMTApIHsKCSAgICAgICAgICAgICAgICBsZ1BhdHRlcm5Gb3VuZCB8PSAxIDw8ICg0IC0geCk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBpZiAoeCAhPT0gNCkgewoJICAgICAgICAgICAgICAgIC8vIFJlYWQgb2ZmIHNlcGFyYXRvciBpZiBub3QgbGFzdAoJICAgICAgICAgICAgICAgIHJvd09mZnNldCA9IHJvdy5nZXROZXh0U2V0KHJvd09mZnNldCk7CgkgICAgICAgICAgICAgICAgcm93T2Zmc2V0ID0gcm93LmdldE5leHRVbnNldChyb3dPZmZzZXQpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGlmIChyZXN1bHRTdHJpbmcubGVuZ3RoICE9PSA1KSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGNoZWNrRGlnaXQgPSB0aGlzLmRldGVybWluZUNoZWNrRGlnaXQobGdQYXR0ZXJuRm91bmQpOwoJICAgICAgICBpZiAoVVBDRUFORXh0ZW5zaW9uNVN1cHBvcnQuZXh0ZW5zaW9uQ2hlY2tzdW0ocmVzdWx0U3RyaW5nLnRvU3RyaW5nKCkpICE9PSBjaGVja0RpZ2l0KSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHJvd09mZnNldDsKCSAgICB9OwoJICAgIFVQQ0VBTkV4dGVuc2lvbjVTdXBwb3J0LmV4dGVuc2lvbkNoZWNrc3VtID0gZnVuY3Rpb24gKHMpIHsKCSAgICAgICAgdmFyIGxlbmd0aCA9IHMubGVuZ3RoOwoJICAgICAgICB2YXIgc3VtID0gMDsKCSAgICAgICAgZm9yICh2YXIgaSA9IGxlbmd0aCAtIDI7IGkgPj0gMDsgaSAtPSAyKSB7CgkgICAgICAgICAgICBzdW0gKz0gcy5jaGFyQXQoaSkuY2hhckNvZGVBdCgwKSAtICcwJy5jaGFyQ29kZUF0KDApOwoJICAgICAgICB9CgkgICAgICAgIHN1bSAqPSAzOwoJICAgICAgICBmb3IgKHZhciBpID0gbGVuZ3RoIC0gMTsgaSA+PSAwOyBpIC09IDIpIHsKCSAgICAgICAgICAgIHN1bSArPSBzLmNoYXJBdChpKS5jaGFyQ29kZUF0KDApIC0gJzAnLmNoYXJDb2RlQXQoMCk7CgkgICAgICAgIH0KCSAgICAgICAgc3VtICo9IDM7CgkgICAgICAgIHJldHVybiBzdW0gJSAxMDsKCSAgICB9OwoJICAgIFVQQ0VBTkV4dGVuc2lvbjVTdXBwb3J0LnByb3RvdHlwZS5kZXRlcm1pbmVDaGVja0RpZ2l0ID0gZnVuY3Rpb24gKGxnUGF0dGVybkZvdW5kKSB7CgkgICAgICAgIGZvciAodmFyIGQgPSAwOyBkIDwgMTA7IGQrKykgewoJICAgICAgICAgICAgaWYgKGxnUGF0dGVybkZvdW5kID09PSB0aGlzLkNIRUNLX0RJR0lUX0VOQ09ESU5HU1tkXSkgewoJICAgICAgICAgICAgICAgIHJldHVybiBkOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICB9OwoJICAgIFVQQ0VBTkV4dGVuc2lvbjVTdXBwb3J0LnBhcnNlRXh0ZW5zaW9uU3RyaW5nID0gZnVuY3Rpb24gKHJhdykgewoJICAgICAgICBpZiAocmF3Lmxlbmd0aCAhPT0gNSkgewoJICAgICAgICAgICAgcmV0dXJuIG51bGw7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIHZhbHVlID0gVVBDRUFORXh0ZW5zaW9uNVN1cHBvcnQucGFyc2VFeHRlbnNpb241U3RyaW5nKHJhdyk7CgkgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7CgkgICAgICAgICAgICByZXR1cm4gbnVsbDsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gbmV3IE1hcChbW1Jlc3VsdE1ldGFkYXRhVHlwZV8xLmRlZmF1bHQuU1VHR0VTVEVEX1BSSUNFLCB2YWx1ZV1dKTsKCSAgICB9OwoJICAgIFVQQ0VBTkV4dGVuc2lvbjVTdXBwb3J0LnBhcnNlRXh0ZW5zaW9uNVN0cmluZyA9IGZ1bmN0aW9uIChyYXcpIHsKCSAgICAgICAgdmFyIGN1cnJlbmN5OwoJICAgICAgICBzd2l0Y2ggKHJhdy5jaGFyQXQoMCkpIHsKCSAgICAgICAgICAgIGNhc2UgJzAnOgoJICAgICAgICAgICAgICAgIGN1cnJlbmN5ID0gJ8KjJzsKCSAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgIGNhc2UgJzUnOgoJICAgICAgICAgICAgICAgIGN1cnJlbmN5ID0gJyQnOwoJICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgY2FzZSAnOSc6CgkgICAgICAgICAgICAgICAgLy8gUmVmZXJlbmNlOiBodHRwOi8vd3d3LmpvbGx5dGVjaC5jb20KCSAgICAgICAgICAgICAgICBzd2l0Y2ggKHJhdykgewoJICAgICAgICAgICAgICAgICAgICBjYXNlICc5MDAwMCc6CgkgICAgICAgICAgICAgICAgICAgICAgICAvLyBObyBzdWdnZXN0ZWQgcmV0YWlsIHByaWNlCgkgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKCSAgICAgICAgICAgICAgICAgICAgY2FzZSAnOTk5OTEnOgoJICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29tcGxlbWVudGFyeQoJICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcwLjAwJzsKCSAgICAgICAgICAgICAgICAgICAgY2FzZSAnOTk5OTAnOgoJICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdVc2VkJzsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLi4uIHVua25vd24gY3VycmVuY3k/CgkgICAgICAgICAgICAgICAgY3VycmVuY3kgPSAnJzsKCSAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgIGRlZmF1bHQ6CgkgICAgICAgICAgICAgICAgY3VycmVuY3kgPSAnJzsKCSAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgfQoJICAgICAgICB2YXIgcmF3QW1vdW50ID0gcGFyc2VJbnQocmF3LnN1YnN0cmluZygxKSk7CgkgICAgICAgIHZhciB1bml0c1N0cmluZyA9IChyYXdBbW91bnQgLyAxMDApLnRvU3RyaW5nKCk7CgkgICAgICAgIHZhciBodW5kcmVkdGhzID0gcmF3QW1vdW50ICUgMTAwOwoJICAgICAgICB2YXIgaHVuZHJlZHRoc1N0cmluZyA9IGh1bmRyZWR0aHMgPCAxMCA/ICcwJyArIGh1bmRyZWR0aHMgOiBodW5kcmVkdGhzLnRvU3RyaW5nKCk7IC8vIGZpeG1lCgkgICAgICAgIHJldHVybiBjdXJyZW5jeSArIHVuaXRzU3RyaW5nICsgJy4nICsgaHVuZHJlZHRoc1N0cmluZzsKCSAgICB9OwoJICAgIHJldHVybiBVUENFQU5FeHRlbnNpb241U3VwcG9ydDsKCX0oKSk7CglleHBvcnRzLmRlZmF1bHQgPSBVUENFQU5FeHRlbnNpb241U3VwcG9ydDsKCgl9KTsKCgl2YXIgVVBDRUFORXh0ZW5zaW9uMlN1cHBvcnRfMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCS8qCgkgKiBDb3B5cmlnaHQgKEMpIDIwMTIgWlhpbmcgYXV0aG9ycwoJICoKCSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkgKgoJICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSAqCgkgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSAqLwoJdmFyIF9fdmFsdWVzID0gKGNvbW1vbmpzR2xvYmFsICYmIGNvbW1vbmpzR2xvYmFsLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7CgkgICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSAiZnVuY3Rpb24iICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7CgkgICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7CgkgICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSAibnVtYmVyIikgcmV0dXJuIHsKCSAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkgewoJICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDsKCSAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTsKCSAgICAgICAgfQoJICAgIH07CgkgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gIk9iamVjdCBpcyBub3QgaXRlcmFibGUuIiA6ICJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuIik7Cgl9OwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCgoKCgoKCS8qKgoJICogQHNlZSBVUENFQU5FeHRlbnNpb241U3VwcG9ydAoJICovCgl2YXIgVVBDRUFORXh0ZW5zaW9uMlN1cHBvcnQgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgZnVuY3Rpb24gVVBDRUFORXh0ZW5zaW9uMlN1cHBvcnQoKSB7CgkgICAgICAgIHRoaXMuZGVjb2RlTWlkZGxlQ291bnRlcnMgPSBJbnQzMkFycmF5LmZyb20oWzAsIDAsIDAsIDBdKTsKCSAgICAgICAgdGhpcy5kZWNvZGVSb3dTdHJpbmdCdWZmZXIgPSAnJzsKCSAgICB9CgkgICAgVVBDRUFORXh0ZW5zaW9uMlN1cHBvcnQucHJvdG90eXBlLmRlY29kZVJvdyA9IGZ1bmN0aW9uIChyb3dOdW1iZXIsIHJvdywgZXh0ZW5zaW9uU3RhcnRSYW5nZSkgewoJICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5kZWNvZGVSb3dTdHJpbmdCdWZmZXI7CgkgICAgICAgIHZhciBlbmQgPSB0aGlzLmRlY29kZU1pZGRsZShyb3csIGV4dGVuc2lvblN0YXJ0UmFuZ2UsIHJlc3VsdCk7CgkgICAgICAgIHZhciByZXN1bHRTdHJpbmcgPSByZXN1bHQudG9TdHJpbmcoKTsKCSAgICAgICAgdmFyIGV4dGVuc2lvbkRhdGEgPSBVUENFQU5FeHRlbnNpb24yU3VwcG9ydC5wYXJzZUV4dGVuc2lvblN0cmluZyhyZXN1bHRTdHJpbmcpOwoJICAgICAgICB2YXIgcmVzdWx0UG9pbnRzID0gWwoJICAgICAgICAgICAgbmV3IFJlc3VsdFBvaW50XzEuZGVmYXVsdCgoZXh0ZW5zaW9uU3RhcnRSYW5nZVswXSArIGV4dGVuc2lvblN0YXJ0UmFuZ2VbMV0pIC8gMi4wLCByb3dOdW1iZXIpLAoJICAgICAgICAgICAgbmV3IFJlc3VsdFBvaW50XzEuZGVmYXVsdChlbmQsIHJvd051bWJlcikKCSAgICAgICAgXTsKCSAgICAgICAgdmFyIGV4dGVuc2lvblJlc3VsdCA9IG5ldyBSZXN1bHRfMS5kZWZhdWx0KHJlc3VsdFN0cmluZywgbnVsbCwgMCwgcmVzdWx0UG9pbnRzLCBCYXJjb2RlRm9ybWF0XzEuZGVmYXVsdC5VUENfRUFOX0VYVEVOU0lPTiwgbmV3IERhdGUoKS5nZXRUaW1lKCkpOwoJICAgICAgICBpZiAoZXh0ZW5zaW9uRGF0YSAhPSBudWxsKSB7CgkgICAgICAgICAgICBleHRlbnNpb25SZXN1bHQucHV0QWxsTWV0YWRhdGEoZXh0ZW5zaW9uRGF0YSk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIGV4dGVuc2lvblJlc3VsdDsKCSAgICB9OwoJICAgIFVQQ0VBTkV4dGVuc2lvbjJTdXBwb3J0LnByb3RvdHlwZS5kZWNvZGVNaWRkbGUgPSBmdW5jdGlvbiAocm93LCBzdGFydFJhbmdlLCByZXN1bHRTdHJpbmcpIHsKCSAgICAgICAgdmFyIGVfMSwgX2E7CgkgICAgICAgIHZhciBjb3VudGVycyA9IHRoaXMuZGVjb2RlTWlkZGxlQ291bnRlcnM7CgkgICAgICAgIGNvdW50ZXJzWzBdID0gMDsKCSAgICAgICAgY291bnRlcnNbMV0gPSAwOwoJICAgICAgICBjb3VudGVyc1syXSA9IDA7CgkgICAgICAgIGNvdW50ZXJzWzNdID0gMDsKCSAgICAgICAgdmFyIGVuZCA9IHJvdy5nZXRTaXplKCk7CgkgICAgICAgIHZhciByb3dPZmZzZXQgPSBzdGFydFJhbmdlWzFdOwoJICAgICAgICB2YXIgY2hlY2tQYXJpdHkgPSAwOwoJICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IDIgJiYgcm93T2Zmc2V0IDwgZW5kOyB4KyspIHsKCSAgICAgICAgICAgIHZhciBiZXN0TWF0Y2ggPSBBYnN0cmFjdFVQQ0VBTlJlYWRlcl8xLmRlZmF1bHQuZGVjb2RlRGlnaXQocm93LCBjb3VudGVycywgcm93T2Zmc2V0LCBBYnN0cmFjdFVQQ0VBTlJlYWRlcl8xLmRlZmF1bHQuTF9BTkRfR19QQVRURVJOUyk7CgkgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoJzAnLmNoYXJDb2RlQXQoMCkgKyBiZXN0TWF0Y2ggJSAxMCkpOwoJICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICBmb3IgKHZhciBjb3VudGVyc18xID0gKGVfMSA9IHZvaWQgMCwgX192YWx1ZXMoY291bnRlcnMpKSwgY291bnRlcnNfMV8xID0gY291bnRlcnNfMS5uZXh0KCk7ICFjb3VudGVyc18xXzEuZG9uZTsgY291bnRlcnNfMV8xID0gY291bnRlcnNfMS5uZXh0KCkpIHsKCSAgICAgICAgICAgICAgICAgICAgdmFyIGNvdW50ZXIgPSBjb3VudGVyc18xXzEudmFsdWU7CgkgICAgICAgICAgICAgICAgICAgIHJvd09mZnNldCArPSBjb3VudGVyOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9CgkgICAgICAgICAgICBmaW5hbGx5IHsKCSAgICAgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgICAgICBpZiAoY291bnRlcnNfMV8xICYmICFjb3VudGVyc18xXzEuZG9uZSAmJiAoX2EgPSBjb3VudGVyc18xLnJldHVybikpIF9hLmNhbGwoY291bnRlcnNfMSk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGlmIChiZXN0TWF0Y2ggPj0gMTApIHsKCSAgICAgICAgICAgICAgICBjaGVja1Bhcml0eSB8PSAxIDw8ICgxIC0geCk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBpZiAoeCAhPT0gMSkgewoJICAgICAgICAgICAgICAgIC8vIFJlYWQgb2ZmIHNlcGFyYXRvciBpZiBub3QgbGFzdAoJICAgICAgICAgICAgICAgIHJvd09mZnNldCA9IHJvdy5nZXROZXh0U2V0KHJvd09mZnNldCk7CgkgICAgICAgICAgICAgICAgcm93T2Zmc2V0ID0gcm93LmdldE5leHRVbnNldChyb3dPZmZzZXQpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGlmIChyZXN1bHRTdHJpbmcubGVuZ3RoICE9PSAyKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKHBhcnNlSW50KHJlc3VsdFN0cmluZy50b1N0cmluZygpKSAlIDQgIT09IGNoZWNrUGFyaXR5KSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHJvd09mZnNldDsKCSAgICB9OwoJICAgIFVQQ0VBTkV4dGVuc2lvbjJTdXBwb3J0LnBhcnNlRXh0ZW5zaW9uU3RyaW5nID0gZnVuY3Rpb24gKHJhdykgewoJICAgICAgICBpZiAocmF3Lmxlbmd0aCAhPT0gMikgewoJICAgICAgICAgICAgcmV0dXJuIG51bGw7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIG5ldyBNYXAoW1tSZXN1bHRNZXRhZGF0YVR5cGVfMS5kZWZhdWx0LklTU1VFX05VTUJFUiwgcGFyc2VJbnQocmF3KV1dKTsKCSAgICB9OwoJICAgIHJldHVybiBVUENFQU5FeHRlbnNpb24yU3VwcG9ydDsKCX0oKSk7CglleHBvcnRzLmRlZmF1bHQgPSBVUENFQU5FeHRlbnNpb24yU3VwcG9ydDsKCgl9KTsKCgl2YXIgVVBDRUFORXh0ZW5zaW9uU3VwcG9ydF8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJLyoKCSAqIENvcHlyaWdodCAoQykgMjAxMCBaWGluZyBhdXRob3JzCgkgKgoJICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSAqCgkgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJICoKCSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJICovCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoKCgoJdmFyIFVQQ0VBTkV4dGVuc2lvblN1cHBvcnQgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgZnVuY3Rpb24gVVBDRUFORXh0ZW5zaW9uU3VwcG9ydCgpIHsKCSAgICB9CgkgICAgVVBDRUFORXh0ZW5zaW9uU3VwcG9ydC5kZWNvZGVSb3cgPSBmdW5jdGlvbiAocm93TnVtYmVyLCByb3csIHJvd09mZnNldCkgewoJICAgICAgICB2YXIgZXh0ZW5zaW9uU3RhcnRSYW5nZSA9IEFic3RyYWN0VVBDRUFOUmVhZGVyXzEuZGVmYXVsdC5maW5kR3VhcmRQYXR0ZXJuKHJvdywgcm93T2Zmc2V0LCBmYWxzZSwgdGhpcy5FWFRFTlNJT05fU1RBUlRfUEFUVEVSTiwgbmV3IEludDMyQXJyYXkodGhpcy5FWFRFTlNJT05fU1RBUlRfUEFUVEVSTi5sZW5ndGgpLmZpbGwoMCkpOwoJICAgICAgICB0cnkgewoJICAgICAgICAgICAgLy8gcmV0dXJuIG51bGw7CgkgICAgICAgICAgICB2YXIgZml2ZVN1cHBvcnQgPSBuZXcgVVBDRUFORXh0ZW5zaW9uNVN1cHBvcnRfMS5kZWZhdWx0KCk7CgkgICAgICAgICAgICByZXR1cm4gZml2ZVN1cHBvcnQuZGVjb2RlUm93KHJvd051bWJlciwgcm93LCBleHRlbnNpb25TdGFydFJhbmdlKTsKCSAgICAgICAgfQoJICAgICAgICBjYXRjaCAoZXJyKSB7CgkgICAgICAgICAgICAvLyByZXR1cm4gbnVsbDsKCSAgICAgICAgICAgIHZhciB0d29TdXBwb3J0ID0gbmV3IFVQQ0VBTkV4dGVuc2lvbjJTdXBwb3J0XzEuZGVmYXVsdCgpOwoJICAgICAgICAgICAgcmV0dXJuIHR3b1N1cHBvcnQuZGVjb2RlUm93KHJvd051bWJlciwgcm93LCBleHRlbnNpb25TdGFydFJhbmdlKTsKCSAgICAgICAgfQoJICAgIH07CgkgICAgVVBDRUFORXh0ZW5zaW9uU3VwcG9ydC5FWFRFTlNJT05fU1RBUlRfUEFUVEVSTiA9IEludDMyQXJyYXkuZnJvbShbMSwgMSwgMl0pOwoJICAgIHJldHVybiBVUENFQU5FeHRlbnNpb25TdXBwb3J0OwoJfSgpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IFVQQ0VBTkV4dGVuc2lvblN1cHBvcnQ7CgoJfSk7CgoJdmFyIFVQQ0VBTlJlYWRlcl8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJLyoKCSAqIENvcHlyaWdodCAyMDA4IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCXZhciBfX2V4dGVuZHMgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkgewoJICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fAoJICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fAoJICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07CgkgICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgIH07CgkgICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfQoJICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7CgkgICAgfTsKCX0pKCk7CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoKCgoKCgoKCgoKCS8qKgoJICogPHA+RW5jYXBzdWxhdGVzIGZ1bmN0aW9uYWxpdHkgYW5kIGltcGxlbWVudGF0aW9uIHRoYXQgaXMgY29tbW9uIHRvIFVQQyBhbmQgRUFOIGZhbWlsaWVzCgkgKiBvZiBvbmUtZGltZW5zaW9uYWwgYmFyY29kZXMuPC9wPgoJICoKCSAqIEBhdXRob3IgZHN3aXRraW5AZ29vZ2xlLmNvbSAoRGFuaWVsIFN3aXRraW4pCgkgKiBAYXV0aG9yIFNlYW4gT3dlbgoJICogQGF1dGhvciBhbGFzZGFpckBnb29nbGUuY29tIChBbGFzZGFpciBNYWNraW50b3NoKQoJICovCgl2YXIgVVBDRUFOUmVhZGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikgewoJICAgIF9fZXh0ZW5kcyhVUENFQU5SZWFkZXIsIF9zdXBlcik7CgkgICAgZnVuY3Rpb24gVVBDRUFOUmVhZGVyKCkgewoJICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzOwoJICAgICAgICBfdGhpcy5kZWNvZGVSb3dTdHJpbmdCdWZmZXIgPSAnJzsKCSAgICAgICAgVVBDRUFOUmVhZGVyLkxfQU5EX0dfUEFUVEVSTlMgPSBVUENFQU5SZWFkZXIuTF9QQVRURVJOUy5tYXAoZnVuY3Rpb24gKGFycikgeyByZXR1cm4gSW50MzJBcnJheS5mcm9tKGFycik7IH0pOwoJICAgICAgICBmb3IgKHZhciBpID0gMTA7IGkgPCAyMDsgaSsrKSB7CgkgICAgICAgICAgICB2YXIgd2lkdGhzID0gVVBDRUFOUmVhZGVyLkxfUEFUVEVSTlNbaSAtIDEwXTsKCSAgICAgICAgICAgIHZhciByZXZlcnNlZFdpZHRocyA9IG5ldyBJbnQzMkFycmF5KHdpZHRocy5sZW5ndGgpOwoJICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB3aWR0aHMubGVuZ3RoOyBqKyspIHsKCSAgICAgICAgICAgICAgICByZXZlcnNlZFdpZHRoc1tqXSA9IHdpZHRoc1t3aWR0aHMubGVuZ3RoIC0gaiAtIDFdOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgVVBDRUFOUmVhZGVyLkxfQU5EX0dfUEFUVEVSTlNbaV0gPSByZXZlcnNlZFdpZHRoczsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gX3RoaXM7CgkgICAgfQoJICAgIFVQQ0VBTlJlYWRlci5wcm90b3R5cGUuZGVjb2RlUm93ID0gZnVuY3Rpb24gKHJvd051bWJlciwgcm93LCBoaW50cykgewoJICAgICAgICB2YXIgc3RhcnRHdWFyZFJhbmdlID0gVVBDRUFOUmVhZGVyLmZpbmRTdGFydEd1YXJkUGF0dGVybihyb3cpOwoJICAgICAgICB2YXIgcmVzdWx0UG9pbnRDYWxsYmFjayA9IGhpbnRzID09IG51bGwgPyBudWxsIDogaGludHMuZ2V0KERlY29kZUhpbnRUeXBlXzEuZGVmYXVsdC5ORUVEX1JFU1VMVF9QT0lOVF9DQUxMQkFDSyk7CgkgICAgICAgIGlmIChyZXN1bHRQb2ludENhbGxiYWNrICE9IG51bGwpIHsKCSAgICAgICAgICAgIHZhciByZXN1bHRQb2ludF8xID0gbmV3IFJlc3VsdFBvaW50XzEuZGVmYXVsdCgoc3RhcnRHdWFyZFJhbmdlWzBdICsgc3RhcnRHdWFyZFJhbmdlWzFdKSAvIDIuMCwgcm93TnVtYmVyKTsKCSAgICAgICAgICAgIHJlc3VsdFBvaW50Q2FsbGJhY2suZm91bmRQb3NzaWJsZVJlc3VsdFBvaW50KHJlc3VsdFBvaW50XzEpOwoJICAgICAgICB9CgkgICAgICAgIHZhciBidWRlbGxvID0gdGhpcy5kZWNvZGVNaWRkbGUocm93LCBzdGFydEd1YXJkUmFuZ2UsIHRoaXMuZGVjb2RlUm93U3RyaW5nQnVmZmVyKTsKCSAgICAgICAgdmFyIGVuZFN0YXJ0ID0gYnVkZWxsby5yb3dPZmZzZXQ7CgkgICAgICAgIHZhciByZXN1bHQgPSBidWRlbGxvLnJlc3VsdFN0cmluZzsKCSAgICAgICAgaWYgKHJlc3VsdFBvaW50Q2FsbGJhY2sgIT0gbnVsbCkgewoJICAgICAgICAgICAgdmFyIHJlc3VsdFBvaW50XzIgPSBuZXcgUmVzdWx0UG9pbnRfMS5kZWZhdWx0KGVuZFN0YXJ0LCByb3dOdW1iZXIpOwoJICAgICAgICAgICAgcmVzdWx0UG9pbnRDYWxsYmFjay5mb3VuZFBvc3NpYmxlUmVzdWx0UG9pbnQocmVzdWx0UG9pbnRfMik7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGVuZFJhbmdlID0gVVBDRUFOUmVhZGVyLmRlY29kZUVuZChyb3csIGVuZFN0YXJ0KTsKCSAgICAgICAgaWYgKHJlc3VsdFBvaW50Q2FsbGJhY2sgIT0gbnVsbCkgewoJICAgICAgICAgICAgdmFyIHJlc3VsdFBvaW50XzMgPSBuZXcgUmVzdWx0UG9pbnRfMS5kZWZhdWx0KChlbmRSYW5nZVswXSArIGVuZFJhbmdlWzFdKSAvIDIuMCwgcm93TnVtYmVyKTsKCSAgICAgICAgICAgIHJlc3VsdFBvaW50Q2FsbGJhY2suZm91bmRQb3NzaWJsZVJlc3VsdFBvaW50KHJlc3VsdFBvaW50XzMpOwoJICAgICAgICB9CgkgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGVyZSBpcyBhIHF1aWV0IHpvbmUgYXQgbGVhc3QgYXMgYmlnIGFzIHRoZSBlbmQgcGF0dGVybiBhZnRlciB0aGUgYmFyY29kZS4gVGhlCgkgICAgICAgIC8vIHNwZWMgbWlnaHQgd2FudCBtb3JlIHdoaXRlc3BhY2UsIGJ1dCBpbiBwcmFjdGljZSB0aGlzIGlzIHRoZSBtYXhpbXVtIHdlIGNhbiBjb3VudCBvbi4KCSAgICAgICAgdmFyIGVuZCA9IGVuZFJhbmdlWzFdOwoJICAgICAgICB2YXIgcXVpZXRFbmQgPSBlbmQgKyAoZW5kIC0gZW5kUmFuZ2VbMF0pOwoJICAgICAgICBpZiAocXVpZXRFbmQgPj0gcm93LmdldFNpemUoKSB8fCAhcm93LmlzUmFuZ2UoZW5kLCBxdWlldEVuZCwgZmFsc2UpKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIHJlc3VsdFN0cmluZyA9IHJlc3VsdC50b1N0cmluZygpOwoJICAgICAgICAvLyBVUEMvRUFOIHNob3VsZCBuZXZlciBiZSBsZXNzIHRoYW4gOCBjaGFycyBhbnl3YXkKCSAgICAgICAgaWYgKHJlc3VsdFN0cmluZy5sZW5ndGggPCA4KSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgICAgIGlmICghVVBDRUFOUmVhZGVyLmNoZWNrQ2hlY2tzdW0ocmVzdWx0U3RyaW5nKSkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IENoZWNrc3VtRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgICAgIHZhciBsZWZ0ID0gKHN0YXJ0R3VhcmRSYW5nZVsxXSArIHN0YXJ0R3VhcmRSYW5nZVswXSkgLyAyLjA7CgkgICAgICAgIHZhciByaWdodCA9IChlbmRSYW5nZVsxXSArIGVuZFJhbmdlWzBdKSAvIDIuMDsKCSAgICAgICAgdmFyIGZvcm1hdCA9IHRoaXMuZ2V0QmFyY29kZUZvcm1hdCgpOwoJICAgICAgICB2YXIgcmVzdWx0UG9pbnQgPSBbbmV3IFJlc3VsdFBvaW50XzEuZGVmYXVsdChsZWZ0LCByb3dOdW1iZXIpLCBuZXcgUmVzdWx0UG9pbnRfMS5kZWZhdWx0KHJpZ2h0LCByb3dOdW1iZXIpXTsKCSAgICAgICAgdmFyIGRlY29kZVJlc3VsdCA9IG5ldyBSZXN1bHRfMS5kZWZhdWx0KHJlc3VsdFN0cmluZywgbnVsbCwgMCwgcmVzdWx0UG9pbnQsIGZvcm1hdCwgbmV3IERhdGUoKS5nZXRUaW1lKCkpOwoJICAgICAgICB2YXIgZXh0ZW5zaW9uTGVuZ3RoID0gMDsKCSAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgIHZhciBleHRlbnNpb25SZXN1bHQgPSBVUENFQU5FeHRlbnNpb25TdXBwb3J0XzEuZGVmYXVsdC5kZWNvZGVSb3cocm93TnVtYmVyLCByb3csIGVuZFJhbmdlWzFdKTsKCSAgICAgICAgICAgIGRlY29kZVJlc3VsdC5wdXRNZXRhZGF0YShSZXN1bHRNZXRhZGF0YVR5cGVfMS5kZWZhdWx0LlVQQ19FQU5fRVhURU5TSU9OLCBleHRlbnNpb25SZXN1bHQuZ2V0VGV4dCgpKTsKCSAgICAgICAgICAgIGRlY29kZVJlc3VsdC5wdXRBbGxNZXRhZGF0YShleHRlbnNpb25SZXN1bHQuZ2V0UmVzdWx0TWV0YWRhdGEoKSk7CgkgICAgICAgICAgICBkZWNvZGVSZXN1bHQuYWRkUmVzdWx0UG9pbnRzKGV4dGVuc2lvblJlc3VsdC5nZXRSZXN1bHRQb2ludHMoKSk7CgkgICAgICAgICAgICBleHRlbnNpb25MZW5ndGggPSBleHRlbnNpb25SZXN1bHQuZ2V0VGV4dCgpLmxlbmd0aDsKCSAgICAgICAgfQoJICAgICAgICBjYXRjaCAoZXJyKSB7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGFsbG93ZWRFeHRlbnNpb25zID0gaGludHMgPT0gbnVsbCA/IG51bGwgOiBoaW50cy5nZXQoRGVjb2RlSGludFR5cGVfMS5kZWZhdWx0LkFMTE9XRURfRUFOX0VYVEVOU0lPTlMpOwoJICAgICAgICBpZiAoYWxsb3dlZEV4dGVuc2lvbnMgIT0gbnVsbCkgewoJICAgICAgICAgICAgdmFyIHZhbGlkID0gZmFsc2U7CgkgICAgICAgICAgICBmb3IgKHZhciBsZW5ndGhfMSBpbiBhbGxvd2VkRXh0ZW5zaW9ucykgewoJICAgICAgICAgICAgICAgIGlmIChleHRlbnNpb25MZW5ndGgudG9TdHJpbmcoKSA9PT0gbGVuZ3RoXzEpIHsgLy8gY2hlY2sgbWUKCSAgICAgICAgICAgICAgICAgICAgdmFsaWQgPSB0cnVlOwoJICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBpZiAoIXZhbGlkKSB7CgkgICAgICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGlmIChmb3JtYXQgPT09IEJhcmNvZGVGb3JtYXRfMS5kZWZhdWx0LkVBTl8xMyB8fCBmb3JtYXQgPT09IEJhcmNvZGVGb3JtYXRfMS5kZWZhdWx0LlVQQ19BKSA7CgkgICAgICAgIHJldHVybiBkZWNvZGVSZXN1bHQ7CgkgICAgfTsKCSAgICBVUENFQU5SZWFkZXIuY2hlY2tDaGVja3N1bSA9IGZ1bmN0aW9uIChzKSB7CgkgICAgICAgIHJldHVybiBVUENFQU5SZWFkZXIuY2hlY2tTdGFuZGFyZFVQQ0VBTkNoZWNrc3VtKHMpOwoJICAgIH07CgkgICAgVVBDRUFOUmVhZGVyLmNoZWNrU3RhbmRhcmRVUENFQU5DaGVja3N1bSA9IGZ1bmN0aW9uIChzKSB7CgkgICAgICAgIHZhciBsZW5ndGggPSBzLmxlbmd0aDsKCSAgICAgICAgaWYgKGxlbmd0aCA9PT0gMCkKCSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKCSAgICAgICAgdmFyIGNoZWNrID0gcGFyc2VJbnQocy5jaGFyQXQobGVuZ3RoIC0gMSksIDEwKTsKCSAgICAgICAgcmV0dXJuIFVQQ0VBTlJlYWRlci5nZXRTdGFuZGFyZFVQQ0VBTkNoZWNrc3VtKHMuc3Vic3RyaW5nKDAsIGxlbmd0aCAtIDEpKSA9PT0gY2hlY2s7CgkgICAgfTsKCSAgICBVUENFQU5SZWFkZXIuZ2V0U3RhbmRhcmRVUENFQU5DaGVja3N1bSA9IGZ1bmN0aW9uIChzKSB7CgkgICAgICAgIHZhciBsZW5ndGggPSBzLmxlbmd0aDsKCSAgICAgICAgdmFyIHN1bSA9IDA7CgkgICAgICAgIGZvciAodmFyIGkgPSBsZW5ndGggLSAxOyBpID49IDA7IGkgLT0gMikgewoJICAgICAgICAgICAgdmFyIGRpZ2l0ID0gcy5jaGFyQXQoaSkuY2hhckNvZGVBdCgwKSAtICcwJy5jaGFyQ29kZUF0KDApOwoJICAgICAgICAgICAgaWYgKGRpZ2l0IDwgMCB8fCBkaWdpdCA+IDkpIHsKCSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgc3VtICs9IGRpZ2l0OwoJICAgICAgICB9CgkgICAgICAgIHN1bSAqPSAzOwoJICAgICAgICBmb3IgKHZhciBpID0gbGVuZ3RoIC0gMjsgaSA+PSAwOyBpIC09IDIpIHsKCSAgICAgICAgICAgIHZhciBkaWdpdCA9IHMuY2hhckF0KGkpLmNoYXJDb2RlQXQoMCkgLSAnMCcuY2hhckNvZGVBdCgwKTsKCSAgICAgICAgICAgIGlmIChkaWdpdCA8IDAgfHwgZGlnaXQgPiA5KSB7CgkgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHN1bSArPSBkaWdpdDsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gKDEwMDAgLSBzdW0pICUgMTA7CgkgICAgfTsKCSAgICBVUENFQU5SZWFkZXIuZGVjb2RlRW5kID0gZnVuY3Rpb24gKHJvdywgZW5kU3RhcnQpIHsKCSAgICAgICAgcmV0dXJuIFVQQ0VBTlJlYWRlci5maW5kR3VhcmRQYXR0ZXJuKHJvdywgZW5kU3RhcnQsIGZhbHNlLCBVUENFQU5SZWFkZXIuU1RBUlRfRU5EX1BBVFRFUk4sIG5ldyBJbnQzMkFycmF5KFVQQ0VBTlJlYWRlci5TVEFSVF9FTkRfUEFUVEVSTi5sZW5ndGgpLmZpbGwoMCkpOwoJICAgIH07CgkgICAgcmV0dXJuIFVQQ0VBTlJlYWRlcjsKCX0oQWJzdHJhY3RVUENFQU5SZWFkZXJfMS5kZWZhdWx0KSk7CglleHBvcnRzLmRlZmF1bHQgPSBVUENFQU5SZWFkZXI7CgoJfSk7CgoJdmFyIEVBTjEzUmVhZGVyXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CgkvKgoJICogQ29weXJpZ2h0IDIwMDggWlhpbmcgYXV0aG9ycwoJICoKCSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkgKgoJICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSAqCgkgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSAqLwoJdmFyIF9fZXh0ZW5kcyA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7CgkgICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8CgkgICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8CgkgICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTsKCSAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgfTsKCSAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9CgkgICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTsKCSAgICB9OwoJfSkoKTsKCXZhciBfX3ZhbHVlcyA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX3ZhbHVlcykgfHwgZnVuY3Rpb24obykgewoJICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gImZ1bmN0aW9uIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwOwoJICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pOwoJICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gIm51bWJlciIpIHJldHVybiB7CgkgICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7CgkgICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07CgkgICAgICAgIH0KCSAgICB9OwoJICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/ICJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLiIgOiAiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpOwoJfTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgoKCgkvKioKCSAqIDxwPkltcGxlbWVudHMgZGVjb2Rpbmcgb2YgdGhlIEVBTi0xMyBmb3JtYXQuPC9wPgoJICoKCSAqIEBhdXRob3IgZHN3aXRraW5AZ29vZ2xlLmNvbSAoRGFuaWVsIFN3aXRraW4pCgkgKiBAYXV0aG9yIFNlYW4gT3dlbgoJICogQGF1dGhvciBhbGFzZGFpckBnb29nbGUuY29tIChBbGFzZGFpciBNYWNraW50b3NoKQoJICovCgl2YXIgRUFOMTNSZWFkZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7CgkgICAgX19leHRlbmRzKEVBTjEzUmVhZGVyLCBfc3VwZXIpOwoJICAgIGZ1bmN0aW9uIEVBTjEzUmVhZGVyKCkgewoJICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzOwoJICAgICAgICBfdGhpcy5kZWNvZGVNaWRkbGVDb3VudGVycyA9IEludDMyQXJyYXkuZnJvbShbMCwgMCwgMCwgMF0pOwoJICAgICAgICByZXR1cm4gX3RoaXM7CgkgICAgfQoJICAgIEVBTjEzUmVhZGVyLnByb3RvdHlwZS5kZWNvZGVNaWRkbGUgPSBmdW5jdGlvbiAocm93LCBzdGFydFJhbmdlLCByZXN1bHRTdHJpbmcpIHsKCSAgICAgICAgdmFyIGVfMSwgX2EsIGVfMiwgX2I7CgkgICAgICAgIHZhciBjb3VudGVycyA9IHRoaXMuZGVjb2RlTWlkZGxlQ291bnRlcnM7CgkgICAgICAgIGNvdW50ZXJzWzBdID0gMDsKCSAgICAgICAgY291bnRlcnNbMV0gPSAwOwoJICAgICAgICBjb3VudGVyc1syXSA9IDA7CgkgICAgICAgIGNvdW50ZXJzWzNdID0gMDsKCSAgICAgICAgdmFyIGVuZCA9IHJvdy5nZXRTaXplKCk7CgkgICAgICAgIHZhciByb3dPZmZzZXQgPSBzdGFydFJhbmdlWzFdOwoJICAgICAgICB2YXIgbGdQYXR0ZXJuRm91bmQgPSAwOwoJICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IDYgJiYgcm93T2Zmc2V0IDwgZW5kOyB4KyspIHsKCSAgICAgICAgICAgIHZhciBiZXN0TWF0Y2ggPSBVUENFQU5SZWFkZXJfMS5kZWZhdWx0LmRlY29kZURpZ2l0KHJvdywgY291bnRlcnMsIHJvd09mZnNldCwgVVBDRUFOUmVhZGVyXzEuZGVmYXVsdC5MX0FORF9HX1BBVFRFUk5TKTsKCSAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKCgnMCcuY2hhckNvZGVBdCgwKSArIGJlc3RNYXRjaCAlIDEwKSk7CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIGZvciAodmFyIGNvdW50ZXJzXzEgPSAoZV8xID0gdm9pZCAwLCBfX3ZhbHVlcyhjb3VudGVycykpLCBjb3VudGVyc18xXzEgPSBjb3VudGVyc18xLm5leHQoKTsgIWNvdW50ZXJzXzFfMS5kb25lOyBjb3VudGVyc18xXzEgPSBjb3VudGVyc18xLm5leHQoKSkgewoJICAgICAgICAgICAgICAgICAgICB2YXIgY291bnRlciA9IGNvdW50ZXJzXzFfMS52YWx1ZTsKCSAgICAgICAgICAgICAgICAgICAgcm93T2Zmc2V0ICs9IGNvdW50ZXI7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH0KCSAgICAgICAgICAgIGZpbmFsbHkgewoJICAgICAgICAgICAgICAgIHRyeSB7CgkgICAgICAgICAgICAgICAgICAgIGlmIChjb3VudGVyc18xXzEgJiYgIWNvdW50ZXJzXzFfMS5kb25lICYmIChfYSA9IGNvdW50ZXJzXzEucmV0dXJuKSkgX2EuY2FsbChjb3VudGVyc18xKTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfQoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgaWYgKGJlc3RNYXRjaCA+PSAxMCkgewoJICAgICAgICAgICAgICAgIGxnUGF0dGVybkZvdW5kIHw9IDEgPDwgKDUgLSB4KTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICByZXN1bHRTdHJpbmcgPSBFQU4xM1JlYWRlci5kZXRlcm1pbmVGaXJzdERpZ2l0KHJlc3VsdFN0cmluZywgbGdQYXR0ZXJuRm91bmQpOwoJICAgICAgICB2YXIgbWlkZGxlUmFuZ2UgPSBVUENFQU5SZWFkZXJfMS5kZWZhdWx0LmZpbmRHdWFyZFBhdHRlcm4ocm93LCByb3dPZmZzZXQsIHRydWUsIFVQQ0VBTlJlYWRlcl8xLmRlZmF1bHQuTUlERExFX1BBVFRFUk4sIG5ldyBJbnQzMkFycmF5KFVQQ0VBTlJlYWRlcl8xLmRlZmF1bHQuTUlERExFX1BBVFRFUk4ubGVuZ3RoKS5maWxsKDApKTsKCSAgICAgICAgcm93T2Zmc2V0ID0gbWlkZGxlUmFuZ2VbMV07CgkgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgNiAmJiByb3dPZmZzZXQgPCBlbmQ7IHgrKykgewoJICAgICAgICAgICAgdmFyIGJlc3RNYXRjaCA9IFVQQ0VBTlJlYWRlcl8xLmRlZmF1bHQuZGVjb2RlRGlnaXQocm93LCBjb3VudGVycywgcm93T2Zmc2V0LCBVUENFQU5SZWFkZXJfMS5kZWZhdWx0LkxfUEFUVEVSTlMpOwoJICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKCcwJy5jaGFyQ29kZUF0KDApICsgYmVzdE1hdGNoKSk7CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIGZvciAodmFyIGNvdW50ZXJzXzIgPSAoZV8yID0gdm9pZCAwLCBfX3ZhbHVlcyhjb3VudGVycykpLCBjb3VudGVyc18yXzEgPSBjb3VudGVyc18yLm5leHQoKTsgIWNvdW50ZXJzXzJfMS5kb25lOyBjb3VudGVyc18yXzEgPSBjb3VudGVyc18yLm5leHQoKSkgewoJICAgICAgICAgICAgICAgICAgICB2YXIgY291bnRlciA9IGNvdW50ZXJzXzJfMS52YWx1ZTsKCSAgICAgICAgICAgICAgICAgICAgcm93T2Zmc2V0ICs9IGNvdW50ZXI7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgY2F0Y2ggKGVfMl8xKSB7IGVfMiA9IHsgZXJyb3I6IGVfMl8xIH07IH0KCSAgICAgICAgICAgIGZpbmFsbHkgewoJICAgICAgICAgICAgICAgIHRyeSB7CgkgICAgICAgICAgICAgICAgICAgIGlmIChjb3VudGVyc18yXzEgJiYgIWNvdW50ZXJzXzJfMS5kb25lICYmIChfYiA9IGNvdW50ZXJzXzIucmV0dXJuKSkgX2IuY2FsbChjb3VudGVyc18yKTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzIpIHRocm93IGVfMi5lcnJvcjsgfQoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHJldHVybiB7IHJvd09mZnNldDogcm93T2Zmc2V0LCByZXN1bHRTdHJpbmc6IHJlc3VsdFN0cmluZyB9OwoJICAgIH07CgkgICAgRUFOMTNSZWFkZXIucHJvdG90eXBlLmdldEJhcmNvZGVGb3JtYXQgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiBCYXJjb2RlRm9ybWF0XzEuZGVmYXVsdC5FQU5fMTM7CgkgICAgfTsKCSAgICBFQU4xM1JlYWRlci5kZXRlcm1pbmVGaXJzdERpZ2l0ID0gZnVuY3Rpb24gKHJlc3VsdFN0cmluZywgbGdQYXR0ZXJuRm91bmQpIHsKCSAgICAgICAgZm9yICh2YXIgZCA9IDA7IGQgPCAxMDsgZCsrKSB7CgkgICAgICAgICAgICBpZiAobGdQYXR0ZXJuRm91bmQgPT09IHRoaXMuRklSU1RfRElHSVRfRU5DT0RJTkdTW2RdKSB7CgkgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nID0gU3RyaW5nLmZyb21DaGFyQ29kZSgoJzAnLmNoYXJDb2RlQXQoMCkgKyBkKSkgKyByZXN1bHRTdHJpbmc7CgkgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFN0cmluZzsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgfTsKCSAgICBFQU4xM1JlYWRlci5GSVJTVF9ESUdJVF9FTkNPRElOR1MgPSBbMHgwMCwgMHgwQiwgMHgwRCwgMHhFLCAweDEzLCAweDE5LCAweDFDLCAweDE1LCAweDE2LCAweDFBXTsKCSAgICByZXR1cm4gRUFOMTNSZWFkZXI7Cgl9KFVQQ0VBTlJlYWRlcl8xLmRlZmF1bHQpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IEVBTjEzUmVhZGVyOwoKCX0pOwoKCXZhciBFQU44UmVhZGVyXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CgkvKgoJICogQ29weXJpZ2h0IDIwMDggWlhpbmcgYXV0aG9ycwoJICoKCSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkgKgoJICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSAqCgkgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSAqLwoJdmFyIF9fZXh0ZW5kcyA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7CgkgICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8CgkgICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8CgkgICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTsKCSAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgfTsKCSAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9CgkgICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTsKCSAgICB9OwoJfSkoKTsKCXZhciBfX3ZhbHVlcyA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX3ZhbHVlcykgfHwgZnVuY3Rpb24obykgewoJICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gImZ1bmN0aW9uIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwOwoJICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pOwoJICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gIm51bWJlciIpIHJldHVybiB7CgkgICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7CgkgICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07CgkgICAgICAgIH0KCSAgICB9OwoJICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/ICJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLiIgOiAiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpOwoJfTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgoKCS8qKgoJICogPHA+SW1wbGVtZW50cyBkZWNvZGluZyBvZiB0aGUgRUFOLTggZm9ybWF0LjwvcD4KCSAqCgkgKiBAYXV0aG9yIFNlYW4gT3dlbgoJICovCgl2YXIgRUFOOFJlYWRlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHsKCSAgICBfX2V4dGVuZHMoRUFOOFJlYWRlciwgX3N1cGVyKTsKCSAgICBmdW5jdGlvbiBFQU44UmVhZGVyKCkgewoJICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzOwoJICAgICAgICBfdGhpcy5kZWNvZGVNaWRkbGVDb3VudGVycyA9IEludDMyQXJyYXkuZnJvbShbMCwgMCwgMCwgMF0pOwoJICAgICAgICByZXR1cm4gX3RoaXM7CgkgICAgfQoJICAgIEVBTjhSZWFkZXIucHJvdG90eXBlLmRlY29kZU1pZGRsZSA9IGZ1bmN0aW9uIChyb3csIHN0YXJ0UmFuZ2UsIHJlc3VsdFN0cmluZykgewoJICAgICAgICB2YXIgZV8xLCBfYSwgZV8yLCBfYjsKCSAgICAgICAgdmFyIGNvdW50ZXJzID0gdGhpcy5kZWNvZGVNaWRkbGVDb3VudGVyczsKCSAgICAgICAgY291bnRlcnNbMF0gPSAwOwoJICAgICAgICBjb3VudGVyc1sxXSA9IDA7CgkgICAgICAgIGNvdW50ZXJzWzJdID0gMDsKCSAgICAgICAgY291bnRlcnNbM10gPSAwOwoJICAgICAgICB2YXIgZW5kID0gcm93LmdldFNpemUoKTsKCSAgICAgICAgdmFyIHJvd09mZnNldCA9IHN0YXJ0UmFuZ2VbMV07CgkgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgNCAmJiByb3dPZmZzZXQgPCBlbmQ7IHgrKykgewoJICAgICAgICAgICAgdmFyIGJlc3RNYXRjaCA9IFVQQ0VBTlJlYWRlcl8xLmRlZmF1bHQuZGVjb2RlRGlnaXQocm93LCBjb3VudGVycywgcm93T2Zmc2V0LCBVUENFQU5SZWFkZXJfMS5kZWZhdWx0LkxfUEFUVEVSTlMpOwoJICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKCcwJy5jaGFyQ29kZUF0KDApICsgYmVzdE1hdGNoKSk7CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIGZvciAodmFyIGNvdW50ZXJzXzEgPSAoZV8xID0gdm9pZCAwLCBfX3ZhbHVlcyhjb3VudGVycykpLCBjb3VudGVyc18xXzEgPSBjb3VudGVyc18xLm5leHQoKTsgIWNvdW50ZXJzXzFfMS5kb25lOyBjb3VudGVyc18xXzEgPSBjb3VudGVyc18xLm5leHQoKSkgewoJICAgICAgICAgICAgICAgICAgICB2YXIgY291bnRlciA9IGNvdW50ZXJzXzFfMS52YWx1ZTsKCSAgICAgICAgICAgICAgICAgICAgcm93T2Zmc2V0ICs9IGNvdW50ZXI7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH0KCSAgICAgICAgICAgIGZpbmFsbHkgewoJICAgICAgICAgICAgICAgIHRyeSB7CgkgICAgICAgICAgICAgICAgICAgIGlmIChjb3VudGVyc18xXzEgJiYgIWNvdW50ZXJzXzFfMS5kb25lICYmIChfYSA9IGNvdW50ZXJzXzEucmV0dXJuKSkgX2EuY2FsbChjb3VudGVyc18xKTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfQoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHZhciBtaWRkbGVSYW5nZSA9IFVQQ0VBTlJlYWRlcl8xLmRlZmF1bHQuZmluZEd1YXJkUGF0dGVybihyb3csIHJvd09mZnNldCwgdHJ1ZSwgVVBDRUFOUmVhZGVyXzEuZGVmYXVsdC5NSURETEVfUEFUVEVSTiwgbmV3IEludDMyQXJyYXkoVVBDRUFOUmVhZGVyXzEuZGVmYXVsdC5NSURETEVfUEFUVEVSTi5sZW5ndGgpLmZpbGwoMCkpOwoJICAgICAgICByb3dPZmZzZXQgPSBtaWRkbGVSYW5nZVsxXTsKCSAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCA0ICYmIHJvd09mZnNldCA8IGVuZDsgeCsrKSB7CgkgICAgICAgICAgICB2YXIgYmVzdE1hdGNoID0gVVBDRUFOUmVhZGVyXzEuZGVmYXVsdC5kZWNvZGVEaWdpdChyb3csIGNvdW50ZXJzLCByb3dPZmZzZXQsIFVQQ0VBTlJlYWRlcl8xLmRlZmF1bHQuTF9QQVRURVJOUyk7CgkgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoJzAnLmNoYXJDb2RlQXQoMCkgKyBiZXN0TWF0Y2gpKTsKCSAgICAgICAgICAgIHRyeSB7CgkgICAgICAgICAgICAgICAgZm9yICh2YXIgY291bnRlcnNfMiA9IChlXzIgPSB2b2lkIDAsIF9fdmFsdWVzKGNvdW50ZXJzKSksIGNvdW50ZXJzXzJfMSA9IGNvdW50ZXJzXzIubmV4dCgpOyAhY291bnRlcnNfMl8xLmRvbmU7IGNvdW50ZXJzXzJfMSA9IGNvdW50ZXJzXzIubmV4dCgpKSB7CgkgICAgICAgICAgICAgICAgICAgIHZhciBjb3VudGVyID0gY291bnRlcnNfMl8xLnZhbHVlOwoJICAgICAgICAgICAgICAgICAgICByb3dPZmZzZXQgKz0gY291bnRlcjsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBjYXRjaCAoZV8yXzEpIHsgZV8yID0geyBlcnJvcjogZV8yXzEgfTsgfQoJICAgICAgICAgICAgZmluYWxseSB7CgkgICAgICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICAgICAgaWYgKGNvdW50ZXJzXzJfMSAmJiAhY291bnRlcnNfMl8xLmRvbmUgJiYgKF9iID0gY291bnRlcnNfMi5yZXR1cm4pKSBfYi5jYWxsKGNvdW50ZXJzXzIpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMikgdGhyb3cgZV8yLmVycm9yOyB9CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHsgcm93T2Zmc2V0OiByb3dPZmZzZXQsIHJlc3VsdFN0cmluZzogcmVzdWx0U3RyaW5nIH07CgkgICAgfTsKCSAgICBFQU44UmVhZGVyLnByb3RvdHlwZS5nZXRCYXJjb2RlRm9ybWF0ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gQmFyY29kZUZvcm1hdF8xLmRlZmF1bHQuRUFOXzg7CgkgICAgfTsKCSAgICByZXR1cm4gRUFOOFJlYWRlcjsKCX0oVVBDRUFOUmVhZGVyXzEuZGVmYXVsdCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gRUFOOFJlYWRlcjsKCgl9KTsKCgl2YXIgVVBDQVJlYWRlcl8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJLyoKCSAqIENvcHlyaWdodCAyMDA4IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCXZhciBfX2V4dGVuZHMgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkgewoJICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fAoJICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fAoJICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07CgkgICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgIH07CgkgICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfQoJICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7CgkgICAgfTsKCX0pKCk7CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJLypuYW1lc3BhY2UgY29tLmdvb2dsZS56eGluZy5vbmVkIHsqLwoKCgoKCgkvKioKCSAqIEVuY2Fwc3VsYXRlcyBmdW5jdGlvbmFsaXR5IGFuZCBpbXBsZW1lbnRhdGlvbiB0aGF0IGlzIGNvbW1vbiB0byBhbGwgZmFtaWxpZXMKCSAqIG9mIG9uZS1kaW1lbnNpb25hbCBiYXJjb2Rlcy4KCSAqCgkgKiBAYXV0aG9yIGRzd2l0a2luQGdvb2dsZS5jb20gKERhbmllbCBTd2l0a2luKQoJICogQGF1dGhvciBTZWFuIE93ZW4KCSAqIEBhdXRob3Igc2FtMjMzMiAoU2FtIFJ1ZGxvZmYpCgkgKgoJICogQHNvdXJjZSBodHRwczovL2dpdGh1Yi5jb20venhpbmcvenhpbmcvYmxvYi8zYzk2OTIzMjc2ZGQ1Nzg1ZDU4ZWI5NzBiNmJhM2Y4MGQzNmE5NTA1L2NvcmUvc3JjL21haW4vamF2YS9jb20vZ29vZ2xlL3p4aW5nL29uZWQvVVBDQVJlYWRlci5qYXZhCgkgKgoJICogQGV4cGVyaW1lbnRhbAoJICovCgl2YXIgVVBDQVJlYWRlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHsKCSAgICBfX2V4dGVuZHMoVVBDQVJlYWRlciwgX3N1cGVyKTsKCSAgICBmdW5jdGlvbiBVUENBUmVhZGVyKCkgewoJICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpczsKCSAgICAgICAgX3RoaXMuZWFuMTNSZWFkZXIgPSBuZXcgRUFOMTNSZWFkZXJfMS5kZWZhdWx0KCk7CgkgICAgICAgIHJldHVybiBfdGhpczsKCSAgICB9CgkgICAgLy8gQE92ZXJyaWRlCgkgICAgVVBDQVJlYWRlci5wcm90b3R5cGUuZ2V0QmFyY29kZUZvcm1hdCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIEJhcmNvZGVGb3JtYXRfMS5kZWZhdWx0LlVQQ19BOwoJICAgIH07CgkgICAgLy8gTm90ZSB0aGF0IHdlIGRvbid0IHRyeSByb3RhdGlvbiB3aXRob3V0IHRoZSB0cnkgaGFyZGVyIGZsYWcsIGV2ZW4gaWYgcm90YXRpb24gd2FzIHN1cHBvcnRlZC4KCSAgICAvLyBAT3ZlcnJpZGUKCSAgICBVUENBUmVhZGVyLnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbiAoaW1hZ2UsIGhpbnRzKSB7CgkgICAgICAgIHJldHVybiB0aGlzLm1heWJlUmV0dXJuUmVzdWx0KHRoaXMuZWFuMTNSZWFkZXIuZGVjb2RlKGltYWdlKSk7CgkgICAgfTsKCSAgICAvLyBAT3ZlcnJpZGUKCSAgICBVUENBUmVhZGVyLnByb3RvdHlwZS5kZWNvZGVSb3cgPSBmdW5jdGlvbiAocm93TnVtYmVyLCByb3csIGhpbnRzKSB7CgkgICAgICAgIHJldHVybiB0aGlzLm1heWJlUmV0dXJuUmVzdWx0KHRoaXMuZWFuMTNSZWFkZXIuZGVjb2RlUm93KHJvd051bWJlciwgcm93LCBoaW50cykpOwoJICAgIH07CgkgICAgLy8gQE92ZXJyaWRlCgkgICAgVVBDQVJlYWRlci5wcm90b3R5cGUuZGVjb2RlTWlkZGxlID0gZnVuY3Rpb24gKHJvdywgc3RhcnRSYW5nZSwgcmVzdWx0U3RyaW5nKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmVhbjEzUmVhZGVyLmRlY29kZU1pZGRsZShyb3csIHN0YXJ0UmFuZ2UsIHJlc3VsdFN0cmluZyk7CgkgICAgfTsKCSAgICBVUENBUmVhZGVyLnByb3RvdHlwZS5tYXliZVJldHVyblJlc3VsdCA9IGZ1bmN0aW9uIChyZXN1bHQpIHsKCSAgICAgICAgdmFyIHRleHQgPSByZXN1bHQuZ2V0VGV4dCgpOwoJICAgICAgICBpZiAodGV4dC5jaGFyQXQoMCkgPT09ICcwJykgewoJICAgICAgICAgICAgdmFyIHVwY2FSZXN1bHQgPSBuZXcgUmVzdWx0XzEuZGVmYXVsdCh0ZXh0LnN1YnN0cmluZygxKSwgbnVsbCwgbnVsbCwgcmVzdWx0LmdldFJlc3VsdFBvaW50cygpLCBCYXJjb2RlRm9ybWF0XzEuZGVmYXVsdC5VUENfQSk7CgkgICAgICAgICAgICBpZiAocmVzdWx0LmdldFJlc3VsdE1ldGFkYXRhKCkgIT0gbnVsbCkgewoJICAgICAgICAgICAgICAgIHVwY2FSZXN1bHQucHV0QWxsTWV0YWRhdGEocmVzdWx0LmdldFJlc3VsdE1ldGFkYXRhKCkpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgcmV0dXJuIHVwY2FSZXN1bHQ7CgkgICAgICAgIH0KCSAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgIH0KCSAgICB9OwoJICAgIFVQQ0FSZWFkZXIucHJvdG90eXBlLnJlc2V0ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICB0aGlzLmVhbjEzUmVhZGVyLnJlc2V0KCk7CgkgICAgfTsKCSAgICByZXR1cm4gVVBDQVJlYWRlcjsKCX0oVVBDRUFOUmVhZGVyXzEuZGVmYXVsdCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gVVBDQVJlYWRlcjsKCgl9KTsKCgl2YXIgVVBDRVJlYWRlcl8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJLyoKCSAqIENvcHlyaWdodCAyMDA4IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCXZhciBfX2V4dGVuZHMgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkgewoJICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fAoJICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fAoJICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07CgkgICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgIH07CgkgICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfQoJICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7CgkgICAgfTsKCX0pKCk7Cgl2YXIgX192YWx1ZXMgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX192YWx1ZXMpIHx8IGZ1bmN0aW9uKG8pIHsKCSAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09ICJmdW5jdGlvbiIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDsKCSAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTsKCSAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09ICJudW1iZXIiKSByZXR1cm4gewoJICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7CgkgICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwOwoJICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9OwoJICAgICAgICB9CgkgICAgfTsKCSAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyAiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS4iIDogIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC4iKTsKCX07CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoKCgoKCS8vIHBhY2thZ2UgY29tLmdvb2dsZS56eGluZy5vbmVkOwoJLy8gaW1wb3J0IGNvbS5nb29nbGUuenhpbmcuQmFyY29kZUZvcm1hdDsKCS8vIGltcG9ydCBjb20uZ29vZ2xlLnp4aW5nLkZvcm1hdEV4Y2VwdGlvbjsKCS8vIGltcG9ydCBjb20uZ29vZ2xlLnp4aW5nLk5vdEZvdW5kRXhjZXB0aW9uOwoJLy8gaW1wb3J0IGNvbS5nb29nbGUuenhpbmcuY29tbW9uLkJpdEFycmF5OwoJLyoqCgkgKiA8cD5JbXBsZW1lbnRzIGRlY29kaW5nIG9mIHRoZSBVUEMtRSBmb3JtYXQuPC9wPgoJICogPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5iYXJjb2RlaXNsYW5kLmNvbS91cGNlLnBodG1sIj5UaGlzPC9hPiBpcyBhIGdyZWF0IHJlZmVyZW5jZSBmb3IKCSAqIFVQQy1FIGluZm9ybWF0aW9uLjwvcD4KCSAqCgkgKiBAYXV0aG9yIFNlYW4gT3dlbgoJICoKCSAqIEBzb3VyY2UgaHR0cHM6Ly9naXRodWIuY29tL3p4aW5nL3p4aW5nL2Jsb2IvM2M5NjkyMzI3NmRkNTc4NWQ1OGViOTcwYjZiYTNmODBkMzZhOTUwNS9jb3JlL3NyYy9tYWluL2phdmEvY29tL2dvb2dsZS96eGluZy9vbmVkL1VQQ0VSZWFkZXIuamF2YQoJICoKCSAqIEBleHBlcmltZW50YWwKCSAqLwoJdmFyIFVQQ0VSZWFkZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7CgkgICAgX19leHRlbmRzKFVQQ0VSZWFkZXIsIF9zdXBlcik7CgkgICAgZnVuY3Rpb24gVVBDRVJlYWRlcigpIHsKCSAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpczsKCSAgICAgICAgX3RoaXMuZGVjb2RlTWlkZGxlQ291bnRlcnMgPSBuZXcgSW50MzJBcnJheSg0KTsKCSAgICAgICAgcmV0dXJuIF90aGlzOwoJICAgIH0KCSAgICAvKioKCSAgICAgKiBAdGhyb3dzIE5vdEZvdW5kRXhjZXB0aW9uCgkgICAgICovCgkgICAgLy8gQE92ZXJyaWRlCgkgICAgVVBDRVJlYWRlci5wcm90b3R5cGUuZGVjb2RlTWlkZGxlID0gZnVuY3Rpb24gKHJvdywgc3RhcnRSYW5nZSwgcmVzdWx0KSB7CgkgICAgICAgIHZhciBlXzEsIF9hOwoJICAgICAgICB2YXIgY291bnRlcnMgPSB0aGlzLmRlY29kZU1pZGRsZUNvdW50ZXJzLm1hcChmdW5jdGlvbiAoeCkgeyByZXR1cm4geDsgfSk7CgkgICAgICAgIGNvdW50ZXJzWzBdID0gMDsKCSAgICAgICAgY291bnRlcnNbMV0gPSAwOwoJICAgICAgICBjb3VudGVyc1syXSA9IDA7CgkgICAgICAgIGNvdW50ZXJzWzNdID0gMDsKCSAgICAgICAgdmFyIGVuZCA9IHJvdy5nZXRTaXplKCk7CgkgICAgICAgIHZhciByb3dPZmZzZXQgPSBzdGFydFJhbmdlWzFdOwoJICAgICAgICB2YXIgbGdQYXR0ZXJuRm91bmQgPSAwOwoJICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IDYgJiYgcm93T2Zmc2V0IDwgZW5kOyB4KyspIHsKCSAgICAgICAgICAgIHZhciBiZXN0TWF0Y2ggPSBVUENFUmVhZGVyLmRlY29kZURpZ2l0KHJvdywgY291bnRlcnMsIHJvd09mZnNldCwgVVBDRVJlYWRlci5MX0FORF9HX1BBVFRFUk5TKTsKCSAgICAgICAgICAgIHJlc3VsdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKCgnMCcuY2hhckNvZGVBdCgwKSArIGJlc3RNYXRjaCAlIDEwKSk7CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIGZvciAodmFyIGNvdW50ZXJzXzEgPSAoZV8xID0gdm9pZCAwLCBfX3ZhbHVlcyhjb3VudGVycykpLCBjb3VudGVyc18xXzEgPSBjb3VudGVyc18xLm5leHQoKTsgIWNvdW50ZXJzXzFfMS5kb25lOyBjb3VudGVyc18xXzEgPSBjb3VudGVyc18xLm5leHQoKSkgewoJICAgICAgICAgICAgICAgICAgICB2YXIgY291bnRlciA9IGNvdW50ZXJzXzFfMS52YWx1ZTsKCSAgICAgICAgICAgICAgICAgICAgcm93T2Zmc2V0ICs9IGNvdW50ZXI7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH0KCSAgICAgICAgICAgIGZpbmFsbHkgewoJICAgICAgICAgICAgICAgIHRyeSB7CgkgICAgICAgICAgICAgICAgICAgIGlmIChjb3VudGVyc18xXzEgJiYgIWNvdW50ZXJzXzFfMS5kb25lICYmIChfYSA9IGNvdW50ZXJzXzEucmV0dXJuKSkgX2EuY2FsbChjb3VudGVyc18xKTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfQoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgaWYgKGJlc3RNYXRjaCA+PSAxMCkgewoJICAgICAgICAgICAgICAgIGxnUGF0dGVybkZvdW5kIHw9IDEgPDwgKDUgLSB4KTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICBVUENFUmVhZGVyLmRldGVybWluZU51bVN5c0FuZENoZWNrRGlnaXQobmV3IFN0cmluZ0J1aWxkZXJfMS5kZWZhdWx0KHJlc3VsdCksIGxnUGF0dGVybkZvdW5kKTsKCSAgICAgICAgcmV0dXJuIHJvd09mZnNldDsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb24KCSAgICAgKi8KCSAgICAvLyBAT3ZlcnJpZGUKCSAgICBVUENFUmVhZGVyLnByb3RvdHlwZS5kZWNvZGVFbmQgPSBmdW5jdGlvbiAocm93LCBlbmRTdGFydCkgewoJICAgICAgICByZXR1cm4gVVBDRVJlYWRlci5maW5kR3VhcmRQYXR0ZXJuV2l0aG91dENvdW50ZXJzKHJvdywgZW5kU3RhcnQsIHRydWUsIFVQQ0VSZWFkZXIuTUlERExFX0VORF9QQVRURVJOKTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEB0aHJvd3MgRm9ybWF0RXhjZXB0aW9uCgkgICAgICovCgkgICAgLy8gQE92ZXJyaWRlCgkgICAgVVBDRVJlYWRlci5wcm90b3R5cGUuY2hlY2tDaGVja3N1bSA9IGZ1bmN0aW9uIChzKSB7CgkgICAgICAgIHJldHVybiBVUENFQU5SZWFkZXJfMS5kZWZhdWx0LmNoZWNrQ2hlY2tzdW0oVVBDRVJlYWRlci5jb252ZXJ0VVBDRXRvVVBDQShzKSk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAdGhyb3dzIE5vdEZvdW5kRXhjZXB0aW9uCgkgICAgICovCgkgICAgVVBDRVJlYWRlci5kZXRlcm1pbmVOdW1TeXNBbmRDaGVja0RpZ2l0ID0gZnVuY3Rpb24gKHJlc3VsdFN0cmluZywgbGdQYXR0ZXJuRm91bmQpIHsKCSAgICAgICAgZm9yICh2YXIgbnVtU3lzID0gMDsgbnVtU3lzIDw9IDE7IG51bVN5cysrKSB7CgkgICAgICAgICAgICBmb3IgKHZhciBkID0gMDsgZCA8IDEwOyBkKyspIHsKCSAgICAgICAgICAgICAgICBpZiAobGdQYXR0ZXJuRm91bmQgPT09IHRoaXMuTlVNU1lTX0FORF9DSEVDS19ESUdJVF9QQVRURVJOU1tudW1TeXNdW2RdKSB7CgkgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZy5pbnNlcnQoMCwgLyooY2hhcikqLyAoJzAnICsgbnVtU3lzKSk7CgkgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZy5hcHBlbmQoLyooY2hhcikqLyAoJzAnICsgZCkpOwoJICAgICAgICAgICAgICAgICAgICByZXR1cm47CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHRocm93IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdC5nZXROb3RGb3VuZEluc3RhbmNlKCk7CgkgICAgfTsKCSAgICAvLyBAT3ZlcnJpZGUKCSAgICBVUENFUmVhZGVyLnByb3RvdHlwZS5nZXRCYXJjb2RlRm9ybWF0ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gQmFyY29kZUZvcm1hdF8xLmRlZmF1bHQuVVBDX0U7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBFeHBhbmRzIGEgVVBDLUUgdmFsdWUgYmFjayBpbnRvIGl0cyBmdWxsLCBlcXVpdmFsZW50IFVQQy1BIGNvZGUgdmFsdWUuCgkgICAgICoKCSAgICAgKiBAcGFyYW0gdXBjZSBVUEMtRSBjb2RlIGFzIHN0cmluZyBvZiBkaWdpdHMKCSAgICAgKiBAcmV0dXJuIGVxdWl2YWxlbnQgVVBDLUEgY29kZSBhcyBzdHJpbmcgb2YgZGlnaXRzCgkgICAgICovCgkgICAgVVBDRVJlYWRlci5jb252ZXJ0VVBDRXRvVVBDQSA9IGZ1bmN0aW9uICh1cGNlKSB7CgkgICAgICAgIC8vIHRoZSBmb2xsb3dpbmcgbGluZSBpcyBlcXVpdmFsZW50IHRvIHVwY2UuZ2V0Q2hhcnMoMSwgNywgdXBjZUNoYXJzLCAwKTsKCSAgICAgICAgdmFyIHVwY2VDaGFycyA9IHVwY2Uuc2xpY2UoMSwgNykuc3BsaXQoJycpLm1hcChmdW5jdGlvbiAoeCkgeyByZXR1cm4geC5jaGFyQ29kZUF0KDApOyB9KTsKCSAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWlsZGVyXzEuZGVmYXVsdCggLyoxMiovKTsKCSAgICAgICAgcmVzdWx0LmFwcGVuZCh1cGNlLmNoYXJBdCgwKSk7CgkgICAgICAgIHZhciBsYXN0Q2hhciA9IHVwY2VDaGFyc1s1XTsKCSAgICAgICAgc3dpdGNoIChsYXN0Q2hhcikgewoJICAgICAgICAgICAgY2FzZSAwOgoJICAgICAgICAgICAgY2FzZSAxOgoJICAgICAgICAgICAgY2FzZSAyOgoJICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRDaGFycyh1cGNlQ2hhcnMsIDAsIDIpOwoJICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQobGFzdENoYXIpOwoJICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJzAwMDAnKTsKCSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kQ2hhcnModXBjZUNoYXJzLCAyLCAzKTsKCSAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgIGNhc2UgMzoKCSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kQ2hhcnModXBjZUNoYXJzLCAwLCAzKTsKCSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcwMDAwMCcpOwoJICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRDaGFycyh1cGNlQ2hhcnMsIDMsIDIpOwoJICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgY2FzZSA0OgoJICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRDaGFycyh1cGNlQ2hhcnMsIDAsIDQpOwoJICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJzAwMDAwJyk7CgkgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh1cGNlQ2hhcnNbNF0pOwoJICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgZGVmYXVsdDoKCSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kQ2hhcnModXBjZUNoYXJzLCAwLCA1KTsKCSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcwMDAwJyk7CgkgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChsYXN0Q2hhcik7CgkgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgIH0KCSAgICAgICAgLy8gT25seSBhcHBlbmQgY2hlY2sgZGlnaXQgaW4gY29udmVyc2lvbiBpZiBzdXBwbGllZAoJICAgICAgICBpZiAodXBjZS5sZW5ndGggPj0gOCkgewoJICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh1cGNlLmNoYXJBdCg3KSk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogVGhlIHBhdHRlcm4gdGhhdCBtYXJrcyB0aGUgbWlkZGxlLCBhbmQgZW5kLCBvZiBhIFVQQy1FIHBhdHRlcm4uCgkgICAgICogVGhlcmUgaXMgbm8gInNlY29uZCBoYWxmIiB0byBhIFVQQy1FIGJhcmNvZGUuCgkgICAgICovCgkgICAgVVBDRVJlYWRlci5NSURETEVfRU5EX1BBVFRFUk4gPSBJbnQzMkFycmF5LmZyb20oWzEsIDEsIDEsIDEsIDEsIDFdKTsKCSAgICAvLyBGb3IgYW4gVVBDLUUgYmFyY29kZSwgdGhlIGZpbmFsIGRpZ2l0IGlzIHJlcHJlc2VudGVkIGJ5IHRoZSBwYXJpdGllcyB1c2VkCgkgICAgLy8gdG8gZW5jb2RlIHRoZSBtaWRkbGUgc2l4IGRpZ2l0cywgYWNjb3JkaW5nIHRvIHRoZSB0YWJsZSBiZWxvdy4KCSAgICAvLwoJICAgIC8vICAgICAgICAgICAgICAgIFBhcml0eSBvZiBuZXh0IDYgZGlnaXRzCgkgICAgLy8gICAgRGlnaXQgICAwICAgICAxICAgICAyICAgICAzICAgICA0ICAgICA1CgkgICAgLy8gICAgICAgMCAgICBFdmVuICAgRXZlbiAgRXZlbiBPZGQgIE9kZCAgIE9kZAoJICAgIC8vICAgICAgIDEgICAgRXZlbiAgIEV2ZW4gIE9kZCAgRXZlbiBPZGQgICBPZGQKCSAgICAvLyAgICAgICAyICAgIEV2ZW4gICBFdmVuICBPZGQgIE9kZCAgRXZlbiAgT2RkCgkgICAgLy8gICAgICAgMyAgICBFdmVuICAgRXZlbiAgT2RkICBPZGQgIE9kZCAgIEV2ZW4KCSAgICAvLyAgICAgICA0ICAgIEV2ZW4gICBPZGQgICBFdmVuIEV2ZW4gT2RkICAgT2RkCgkgICAgLy8gICAgICAgNSAgICBFdmVuICAgT2RkICAgT2RkICBFdmVuIEV2ZW4gIE9kZAoJICAgIC8vICAgICAgIDYgICAgRXZlbiAgIE9kZCAgIE9kZCAgT2RkICBFdmVuICBFdmVuCgkgICAgLy8gICAgICAgNyAgICBFdmVuICAgT2RkICAgRXZlbiBPZGQgIEV2ZW4gIE9kZAoJICAgIC8vICAgICAgIDggICAgRXZlbiAgIE9kZCAgIEV2ZW4gT2RkICBPZGQgICBFdmVuCgkgICAgLy8gICAgICAgOSAgICBFdmVuICAgT2RkICAgT2RkICBFdmVuIE9kZCAgIEV2ZW4KCSAgICAvLwoJICAgIC8vIFRoZSBlbmNvZGluZyBpcyByZXByZXNlbnRlZCBieSB0aGUgZm9sbG93aW5nIGFycmF5LCB3aGljaCBpcyBhIGJpdCBwYXR0ZXJuCgkgICAgLy8gdXNpbmcgT2RkID0gMCBhbmQgRXZlbiA9IDEuIEZvciBleGFtcGxlLCA1IGlzIHJlcHJlc2VudGVkIGJ5OgoJICAgIC8vCgkgICAgLy8gICAgICAgICAgICAgIE9kZCBFdmVuIEV2ZW4gT2RkIE9kZCBFdmVuCgkgICAgLy8gaW4gYmluYXJ5OgoJICAgIC8vICAgICAgICAgICAgICAgIDAgICAgMSAgICAxICAgMCAgIDAgICAgMSAgID09IDB4MTkKCSAgICAvLwoJICAgIC8qKgoJICAgICAqIFNlZSB7QGxpbmsgI0xfQU5EX0dfUEFUVEVSTlN9OyB0aGVzZSB2YWx1ZXMgc2ltaWxhcmx5IHJlcHJlc2VudCBwYXR0ZXJucyBvZgoJICAgICAqIGV2ZW4tb2RkIHBhcml0eSBlbmNvZGluZ3Mgb2YgZGlnaXRzIHRoYXQgaW1wbHkgYm90aCB0aGUgbnVtYmVyIHN5c3RlbSAoMCBvciAxKQoJICAgICAqIHVzZWQsIGFuZCB0aGUgY2hlY2sgZGlnaXQuCgkgICAgICovCgkgICAgVVBDRVJlYWRlci5OVU1TWVNfQU5EX0NIRUNLX0RJR0lUX1BBVFRFUk5TID0gWwoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzB4MzgsIDB4MzQsIDB4MzIsIDB4MzEsIDB4MkMsIDB4MjYsIDB4MjMsIDB4MkEsIDB4MjksIDB4MjVdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsweDA3LCAweDBCLCAweDBELCAweDBFLCAweDEzLCAweDE5LCAweDFDLCAweDE1LCAweDE2LCAweDFdKSwKCSAgICBdOwoJICAgIHJldHVybiBVUENFUmVhZGVyOwoJfShVUENFQU5SZWFkZXJfMS5kZWZhdWx0KSk7CglleHBvcnRzLmRlZmF1bHQgPSBVUENFUmVhZGVyOwoKCX0pOwoKCXZhciBNdWx0aUZvcm1hdFVQQ0VBTlJlYWRlcl8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJLyoKCSAqIENvcHlyaWdodCAyMDA4IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCXZhciBfX2V4dGVuZHMgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkgewoJICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fAoJICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fAoJICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07CgkgICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgIH07CgkgICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfQoJICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7CgkgICAgfTsKCX0pKCk7Cgl2YXIgX192YWx1ZXMgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX192YWx1ZXMpIHx8IGZ1bmN0aW9uKG8pIHsKCSAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09ICJmdW5jdGlvbiIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDsKCSAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTsKCSAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09ICJudW1iZXIiKSByZXR1cm4gewoJICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7CgkgICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwOwoJICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9OwoJICAgICAgICB9CgkgICAgfTsKCSAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyAiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS4iIDogIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC4iKTsKCX07CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoKCgoKCgoKCgoJLyoqCgkgKiA8cD5BIHJlYWRlciB0aGF0IGNhbiByZWFkIGFsbCBhdmFpbGFibGUgVVBDL0VBTiBmb3JtYXRzLiBJZiBhIGNhbGxlciB3YW50cyB0byB0cnkgdG8KCSAqIHJlYWQgYWxsIHN1Y2ggZm9ybWF0cywgaXQgaXMgbW9zdCBlZmZpY2llbnQgdG8gdXNlIHRoaXMgaW1wbGVtZW50YXRpb24gcmF0aGVyIHRoYW4gaW52b2tlCgkgKiBpbmRpdmlkdWFsIHJlYWRlcnMuPC9wPgoJICoKCSAqIEBhdXRob3IgU2VhbiBPd2VuCgkgKi8KCXZhciBNdWx0aUZvcm1hdFVQQ0VBTlJlYWRlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHsKCSAgICBfX2V4dGVuZHMoTXVsdGlGb3JtYXRVUENFQU5SZWFkZXIsIF9zdXBlcik7CgkgICAgZnVuY3Rpb24gTXVsdGlGb3JtYXRVUENFQU5SZWFkZXIoaGludHMpIHsKCSAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpczsKCSAgICAgICAgdmFyIHBvc3NpYmxlRm9ybWF0cyA9IGhpbnRzID09IG51bGwgPyBudWxsIDogaGludHMuZ2V0KERlY29kZUhpbnRUeXBlXzEuZGVmYXVsdC5QT1NTSUJMRV9GT1JNQVRTKTsKCSAgICAgICAgdmFyIHJlYWRlcnMgPSBbXTsKCSAgICAgICAgaWYgKHBvc3NpYmxlRm9ybWF0cyAhPSBudWxsKSB7CgkgICAgICAgICAgICBpZiAocG9zc2libGVGb3JtYXRzLmluZGV4T2YoQmFyY29kZUZvcm1hdF8xLmRlZmF1bHQuRUFOXzEzKSA+IC0xKSB7CgkgICAgICAgICAgICAgICAgcmVhZGVycy5wdXNoKG5ldyBFQU4xM1JlYWRlcl8xLmRlZmF1bHQoKSk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlIGlmIChwb3NzaWJsZUZvcm1hdHMuaW5kZXhPZihCYXJjb2RlRm9ybWF0XzEuZGVmYXVsdC5VUENfQSkgPiAtMSkgewoJICAgICAgICAgICAgICAgIHJlYWRlcnMucHVzaChuZXcgVVBDQVJlYWRlcl8xLmRlZmF1bHQoKSk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBpZiAocG9zc2libGVGb3JtYXRzLmluZGV4T2YoQmFyY29kZUZvcm1hdF8xLmRlZmF1bHQuRUFOXzgpID4gLTEpIHsKCSAgICAgICAgICAgICAgICByZWFkZXJzLnB1c2gobmV3IEVBTjhSZWFkZXJfMS5kZWZhdWx0KCkpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgaWYgKHBvc3NpYmxlRm9ybWF0cy5pbmRleE9mKEJhcmNvZGVGb3JtYXRfMS5kZWZhdWx0LlVQQ19FKSA+IC0xKSB7CgkgICAgICAgICAgICAgICAgcmVhZGVycy5wdXNoKG5ldyBVUENFUmVhZGVyXzEuZGVmYXVsdCgpKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICBpZiAocmVhZGVycy5sZW5ndGggPT09IDApIHsKCSAgICAgICAgICAgIHJlYWRlcnMucHVzaChuZXcgRUFOMTNSZWFkZXJfMS5kZWZhdWx0KCkpOwoJICAgICAgICAgICAgLy8gVVBDLUEgaXMgY292ZXJlZCBieSBFQU4tMTMKCSAgICAgICAgICAgIHJlYWRlcnMucHVzaChuZXcgRUFOOFJlYWRlcl8xLmRlZmF1bHQoKSk7CgkgICAgICAgICAgICByZWFkZXJzLnB1c2gobmV3IFVQQ0VSZWFkZXJfMS5kZWZhdWx0KCkpOwoJICAgICAgICB9CgkgICAgICAgIF90aGlzLnJlYWRlcnMgPSByZWFkZXJzOwoJICAgICAgICByZXR1cm4gX3RoaXM7CgkgICAgfQoJICAgIE11bHRpRm9ybWF0VVBDRUFOUmVhZGVyLnByb3RvdHlwZS5kZWNvZGVSb3cgPSBmdW5jdGlvbiAocm93TnVtYmVyLCByb3csIGhpbnRzKSB7CgkgICAgICAgIHZhciBlXzEsIF9hOwoJICAgICAgICB0cnkgewoJICAgICAgICAgICAgZm9yICh2YXIgX2IgPSBfX3ZhbHVlcyh0aGlzLnJlYWRlcnMpLCBfYyA9IF9iLm5leHQoKTsgIV9jLmRvbmU7IF9jID0gX2IubmV4dCgpKSB7CgkgICAgICAgICAgICAgICAgdmFyIHJlYWRlciA9IF9jLnZhbHVlOwoJICAgICAgICAgICAgICAgIHRyeSB7CgkgICAgICAgICAgICAgICAgICAgIC8vIGNvbnN0IHJlc3VsdDogUmVzdWx0ID0gcmVhZGVyLmRlY29kZVJvdyhyb3dOdW1iZXIsIHJvdywgc3RhcnRHdWFyZFBhdHRlcm4sIGhpbnRzKTsKCSAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHJlYWRlci5kZWNvZGVSb3cocm93TnVtYmVyLCByb3csIGhpbnRzKTsKCSAgICAgICAgICAgICAgICAgICAgLy8gU3BlY2lhbCBjYXNlOiBhIDEyLWRpZ2l0IGNvZGUgZW5jb2RlZCBpbiBVUEMtQSBpcyBpZGVudGljYWwgdG8gYSAiMCIKCSAgICAgICAgICAgICAgICAgICAgLy8gZm9sbG93ZWQgYnkgdGhvc2UgMTIgZGlnaXRzIGVuY29kZWQgYXMgRUFOLTEzLiBFYWNoIHdpbGwgcmVjb2duaXplIHN1Y2ggYSBjb2RlLAoJICAgICAgICAgICAgICAgICAgICAvLyBVUEMtQSBhcyBhIDEyLWRpZ2l0IHN0cmluZyBhbmQgRUFOLTEzIGFzIGEgMTMtZGlnaXQgc3RyaW5nIHN0YXJ0aW5nIHdpdGggIjAiLgoJICAgICAgICAgICAgICAgICAgICAvLyBJbmRpdmlkdWFsbHkgdGhlc2UgYXJlIGNvcnJlY3QgYW5kIHRoZWlyIHJlYWRlcnMgd2lsbCBib3RoIHJlYWQgc3VjaCBhIGNvZGUKCSAgICAgICAgICAgICAgICAgICAgLy8gYW5kIGNvcnJlY3RseSBjYWxsIGl0IEVBTi0xMywgb3IgVVBDLUEsIHJlc3BlY3RpdmVseS4KCSAgICAgICAgICAgICAgICAgICAgLy8KCSAgICAgICAgICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNlLCBpZiB3ZSd2ZSBiZWVuIGxvb2tpbmcgZm9yIGJvdGggdHlwZXMsIHdlJ2QgbGlrZSB0byBjYWxsIGl0CgkgICAgICAgICAgICAgICAgICAgIC8vIGEgVVBDLUEgY29kZS4gQnV0IGZvciBlZmZpY2llbmN5IHdlIG9ubHkgcnVuIHRoZSBFQU4tMTMgZGVjb2RlciB0byBhbHNvIHJlYWQKCSAgICAgICAgICAgICAgICAgICAgLy8gVVBDLUEuIFNvIHdlIHNwZWNpYWwgY2FzZSBpdCBoZXJlLCBhbmQgY29udmVydCBhbiBFQU4tMTMgcmVzdWx0IHRvIGEgVVBDLUEKCSAgICAgICAgICAgICAgICAgICAgLy8gcmVzdWx0IGlmIGFwcHJvcHJpYXRlLgoJICAgICAgICAgICAgICAgICAgICAvLwoJICAgICAgICAgICAgICAgICAgICAvLyBCdXQsIGRvbid0IHJldHVybiBVUEMtQSBpZiBVUEMtQSB3YXMgbm90IGEgcmVxdWVzdGVkIGZvcm1hdCEKCSAgICAgICAgICAgICAgICAgICAgdmFyIGVhbjEzTWF5QmVVUENBID0gcmVzdWx0LmdldEJhcmNvZGVGb3JtYXQoKSA9PT0gQmFyY29kZUZvcm1hdF8xLmRlZmF1bHQuRUFOXzEzICYmCgkgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuZ2V0VGV4dCgpLmNoYXJBdCgwKSA9PT0gJzAnOwoJICAgICAgICAgICAgICAgICAgICAvLyBAU3VwcHJlc3NXYXJuaW5ncygidW5jaGVja2VkIikKCSAgICAgICAgICAgICAgICAgICAgdmFyIHBvc3NpYmxlRm9ybWF0cyA9IGhpbnRzID09IG51bGwgPyBudWxsIDogaGludHMuZ2V0KERlY29kZUhpbnRUeXBlXzEuZGVmYXVsdC5QT1NTSUJMRV9GT1JNQVRTKTsKCSAgICAgICAgICAgICAgICAgICAgdmFyIGNhblJldHVyblVQQ0EgPSBwb3NzaWJsZUZvcm1hdHMgPT0gbnVsbCB8fCBwb3NzaWJsZUZvcm1hdHMuaW5jbHVkZXMoQmFyY29kZUZvcm1hdF8xLmRlZmF1bHQuVVBDX0EpOwoJICAgICAgICAgICAgICAgICAgICBpZiAoZWFuMTNNYXlCZVVQQ0EgJiYgY2FuUmV0dXJuVVBDQSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJhd0J5dGVzID0gcmVzdWx0LmdldFJhd0J5dGVzKCk7CgkgICAgICAgICAgICAgICAgICAgICAgICAvLyBUcmFuc2ZlciB0aGUgbWV0YWRhdGEgYWNyb3NzCgkgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0VVBDQSA9IG5ldyBSZXN1bHRfMS5kZWZhdWx0KHJlc3VsdC5nZXRUZXh0KCkuc3Vic3RyaW5nKDEpLCByYXdCeXRlcywgcmF3Qnl0ZXMubGVuZ3RoLCByZXN1bHQuZ2V0UmVzdWx0UG9pbnRzKCksIEJhcmNvZGVGb3JtYXRfMS5kZWZhdWx0LlVQQ19BKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFVQQ0EucHV0QWxsTWV0YWRhdGEocmVzdWx0LmdldFJlc3VsdE1ldGFkYXRhKCkpOwoJICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFVQQ0E7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgY2F0Y2ggKGVycikgewoJICAgICAgICAgICAgICAgICAgICAvLyBjb250aW51ZTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH0KCSAgICAgICAgZmluYWxseSB7CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIGlmIChfYyAmJiAhX2MuZG9uZSAmJiAoX2EgPSBfYi5yZXR1cm4pKSBfYS5jYWxsKF9iKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH0KCSAgICAgICAgfQoJICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgfTsKCSAgICBNdWx0aUZvcm1hdFVQQ0VBTlJlYWRlci5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHZhciBlXzIsIF9hOwoJICAgICAgICB0cnkgewoJICAgICAgICAgICAgZm9yICh2YXIgX2IgPSBfX3ZhbHVlcyh0aGlzLnJlYWRlcnMpLCBfYyA9IF9iLm5leHQoKTsgIV9jLmRvbmU7IF9jID0gX2IubmV4dCgpKSB7CgkgICAgICAgICAgICAgICAgdmFyIHJlYWRlciA9IF9jLnZhbHVlOwoJICAgICAgICAgICAgICAgIHJlYWRlci5yZXNldCgpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGNhdGNoIChlXzJfMSkgeyBlXzIgPSB7IGVycm9yOiBlXzJfMSB9OyB9CgkgICAgICAgIGZpbmFsbHkgewoJICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICBpZiAoX2MgJiYgIV9jLmRvbmUgJiYgKF9hID0gX2IucmV0dXJuKSkgX2EuY2FsbChfYik7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMikgdGhyb3cgZV8yLmVycm9yOyB9CgkgICAgICAgIH0KCSAgICB9OwoJICAgIHJldHVybiBNdWx0aUZvcm1hdFVQQ0VBTlJlYWRlcjsKCX0oT25lRFJlYWRlcl8xLmRlZmF1bHQpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IE11bHRpRm9ybWF0VVBDRUFOUmVhZGVyOwoKCX0pOwoKCXZhciBBYnN0cmFjdFJTU1JlYWRlcl8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJdmFyIF9fZXh0ZW5kcyA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7CgkgICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8CgkgICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8CgkgICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTsKCSAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgfTsKCSAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9CgkgICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTsKCSAgICB9OwoJfSkoKTsKCXZhciBfX3ZhbHVlcyA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX3ZhbHVlcykgfHwgZnVuY3Rpb24obykgewoJICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gImZ1bmN0aW9uIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwOwoJICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pOwoJICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gIm51bWJlciIpIHJldHVybiB7CgkgICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7CgkgICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07CgkgICAgICAgIH0KCSAgICB9OwoJICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/ICJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLiIgOiAiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpOwoJfTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgoKCgkvLyBpbXBvcnQgSW50ZWdlciBmcm9tICcuLi8uLi91dGlsL0ludGVnZXInOwoJLy8gaW1wb3J0IEZsb2F0IGZyb20gJy4uLy4uL3V0aWwvRmxvYXQnOwoJdmFyIEFic3RyYWN0UlNTUmVhZGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikgewoJICAgIF9fZXh0ZW5kcyhBYnN0cmFjdFJTU1JlYWRlciwgX3N1cGVyKTsKCSAgICBmdW5jdGlvbiBBYnN0cmFjdFJTU1JlYWRlcigpIHsKCSAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpczsKCSAgICAgICAgX3RoaXMuZGVjb2RlRmluZGVyQ291bnRlcnMgPSBuZXcgSW50MzJBcnJheSg0KTsKCSAgICAgICAgX3RoaXMuZGF0YUNoYXJhY3RlckNvdW50ZXJzID0gbmV3IEludDMyQXJyYXkoOCk7CgkgICAgICAgIF90aGlzLm9kZFJvdW5kaW5nRXJyb3JzID0gbmV3IEFycmF5KDQpOwoJICAgICAgICBfdGhpcy5ldmVuUm91bmRpbmdFcnJvcnMgPSBuZXcgQXJyYXkoNCk7CgkgICAgICAgIF90aGlzLm9kZENvdW50cyA9IG5ldyBBcnJheShfdGhpcy5kYXRhQ2hhcmFjdGVyQ291bnRlcnMubGVuZ3RoIC8gMik7CgkgICAgICAgIF90aGlzLmV2ZW5Db3VudHMgPSBuZXcgQXJyYXkoX3RoaXMuZGF0YUNoYXJhY3RlckNvdW50ZXJzLmxlbmd0aCAvIDIpOwoJICAgICAgICByZXR1cm4gX3RoaXM7CgkgICAgfQoJICAgIEFic3RyYWN0UlNTUmVhZGVyLnByb3RvdHlwZS5nZXREZWNvZGVGaW5kZXJDb3VudGVycyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuZGVjb2RlRmluZGVyQ291bnRlcnM7CgkgICAgfTsKCSAgICBBYnN0cmFjdFJTU1JlYWRlci5wcm90b3R5cGUuZ2V0RGF0YUNoYXJhY3RlckNvdW50ZXJzID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5kYXRhQ2hhcmFjdGVyQ291bnRlcnM7CgkgICAgfTsKCSAgICBBYnN0cmFjdFJTU1JlYWRlci5wcm90b3R5cGUuZ2V0T2RkUm91bmRpbmdFcnJvcnMgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLm9kZFJvdW5kaW5nRXJyb3JzOwoJICAgIH07CgkgICAgQWJzdHJhY3RSU1NSZWFkZXIucHJvdG90eXBlLmdldEV2ZW5Sb3VuZGluZ0Vycm9ycyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuZXZlblJvdW5kaW5nRXJyb3JzOwoJICAgIH07CgkgICAgQWJzdHJhY3RSU1NSZWFkZXIucHJvdG90eXBlLmdldE9kZENvdW50cyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMub2RkQ291bnRzOwoJICAgIH07CgkgICAgQWJzdHJhY3RSU1NSZWFkZXIucHJvdG90eXBlLmdldEV2ZW5Db3VudHMgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmV2ZW5Db3VudHM7CgkgICAgfTsKCSAgICBBYnN0cmFjdFJTU1JlYWRlci5wcm90b3R5cGUucGFyc2VGaW5kZXJWYWx1ZSA9IGZ1bmN0aW9uIChjb3VudGVycywgZmluZGVyUGF0dGVybnMpIHsKCSAgICAgICAgZm9yICh2YXIgdmFsdWUgPSAwOyB2YWx1ZSA8IGZpbmRlclBhdHRlcm5zLmxlbmd0aDsgdmFsdWUrKykgewoJICAgICAgICAgICAgaWYgKE9uZURSZWFkZXJfMS5kZWZhdWx0LnBhdHRlcm5NYXRjaFZhcmlhbmNlKGNvdW50ZXJzLCBmaW5kZXJQYXR0ZXJuc1t2YWx1ZV0sIEFic3RyYWN0UlNTUmVhZGVyLk1BWF9JTkRJVklEVUFMX1ZBUklBTkNFKSA8IEFic3RyYWN0UlNTUmVhZGVyLk1BWF9BVkdfVkFSSUFOQ0UpIHsKCSAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQHBhcmFtIGFycmF5IHZhbHVlcyB0byBzdW0KCSAgICAgKiBAcmV0dXJuIHN1bSBvZiB2YWx1ZXMKCSAgICAgKiBAZGVwcmVjYXRlZCBjYWxsIHtAbGluayBNYXRoVXRpbHMjc3VtKGludFtdKX0KCSAgICAgKi8KCSAgICBBYnN0cmFjdFJTU1JlYWRlci5jb3VudCA9IGZ1bmN0aW9uIChhcnJheSkgewoJICAgICAgICByZXR1cm4gTWF0aFV0aWxzXzEuZGVmYXVsdC5zdW0obmV3IEludDMyQXJyYXkoYXJyYXkpKTsKCSAgICB9OwoJICAgIEFic3RyYWN0UlNTUmVhZGVyLmluY3JlbWVudCA9IGZ1bmN0aW9uIChhcnJheSwgZXJyb3JzKSB7CgkgICAgICAgIHZhciBpbmRleCA9IDA7CgkgICAgICAgIHZhciBiaWdnZXN0RXJyb3IgPSBlcnJvcnNbMF07CgkgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHsKCSAgICAgICAgICAgIGlmIChlcnJvcnNbaV0gPiBiaWdnZXN0RXJyb3IpIHsKCSAgICAgICAgICAgICAgICBiaWdnZXN0RXJyb3IgPSBlcnJvcnNbaV07CgkgICAgICAgICAgICAgICAgaW5kZXggPSBpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGFycmF5W2luZGV4XSsrOwoJICAgIH07CgkgICAgQWJzdHJhY3RSU1NSZWFkZXIuZGVjcmVtZW50ID0gZnVuY3Rpb24gKGFycmF5LCBlcnJvcnMpIHsKCSAgICAgICAgdmFyIGluZGV4ID0gMDsKCSAgICAgICAgdmFyIGJpZ2dlc3RFcnJvciA9IGVycm9yc1swXTsKCSAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykgewoJICAgICAgICAgICAgaWYgKGVycm9yc1tpXSA8IGJpZ2dlc3RFcnJvcikgewoJICAgICAgICAgICAgICAgIGJpZ2dlc3RFcnJvciA9IGVycm9yc1tpXTsKCSAgICAgICAgICAgICAgICBpbmRleCA9IGk7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgYXJyYXlbaW5kZXhdLS07CgkgICAgfTsKCSAgICBBYnN0cmFjdFJTU1JlYWRlci5pc0ZpbmRlclBhdHRlcm4gPSBmdW5jdGlvbiAoY291bnRlcnMpIHsKCSAgICAgICAgdmFyIGVfMSwgX2E7CgkgICAgICAgIHZhciBmaXJzdFR3b1N1bSA9IGNvdW50ZXJzWzBdICsgY291bnRlcnNbMV07CgkgICAgICAgIHZhciBzdW0gPSBmaXJzdFR3b1N1bSArIGNvdW50ZXJzWzJdICsgY291bnRlcnNbM107CgkgICAgICAgIHZhciByYXRpbyA9IGZpcnN0VHdvU3VtIC8gc3VtOwoJICAgICAgICBpZiAocmF0aW8gPj0gQWJzdHJhY3RSU1NSZWFkZXIuTUlOX0ZJTkRFUl9QQVRURVJOX1JBVElPICYmIHJhdGlvIDw9IEFic3RyYWN0UlNTUmVhZGVyLk1BWF9GSU5ERVJfUEFUVEVSTl9SQVRJTykgewoJICAgICAgICAgICAgLy8gcGFzc2VzIHJhdGlvIHRlc3QgaW4gc3BlYywgYnV0IHNlZSBpZiB0aGUgY291bnRzIGFyZSB1bnJlYXNvbmFibGUKCSAgICAgICAgICAgIHZhciBtaW5Db3VudGVyID0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7CgkgICAgICAgICAgICB2YXIgbWF4Q291bnRlciA9IE51bWJlci5NSU5fU0FGRV9JTlRFR0VSOwoJICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICBmb3IgKHZhciBjb3VudGVyc18xID0gX192YWx1ZXMoY291bnRlcnMpLCBjb3VudGVyc18xXzEgPSBjb3VudGVyc18xLm5leHQoKTsgIWNvdW50ZXJzXzFfMS5kb25lOyBjb3VudGVyc18xXzEgPSBjb3VudGVyc18xLm5leHQoKSkgewoJICAgICAgICAgICAgICAgICAgICB2YXIgY291bnRlciA9IGNvdW50ZXJzXzFfMS52YWx1ZTsKCSAgICAgICAgICAgICAgICAgICAgaWYgKGNvdW50ZXIgPiBtYXhDb3VudGVyKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBtYXhDb3VudGVyID0gY291bnRlcjsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICBpZiAoY291bnRlciA8IG1pbkNvdW50ZXIpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIG1pbkNvdW50ZXIgPSBjb3VudGVyOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH0KCSAgICAgICAgICAgIGZpbmFsbHkgewoJICAgICAgICAgICAgICAgIHRyeSB7CgkgICAgICAgICAgICAgICAgICAgIGlmIChjb3VudGVyc18xXzEgJiYgIWNvdW50ZXJzXzFfMS5kb25lICYmIChfYSA9IGNvdW50ZXJzXzEucmV0dXJuKSkgX2EuY2FsbChjb3VudGVyc18xKTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfQoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgcmV0dXJuIG1heENvdW50ZXIgPCAxMCAqIG1pbkNvdW50ZXI7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIGZhbHNlOwoJICAgIH07CgkgICAgQWJzdHJhY3RSU1NSZWFkZXIuTUFYX0FWR19WQVJJQU5DRSA9IDAuMjsKCSAgICBBYnN0cmFjdFJTU1JlYWRlci5NQVhfSU5ESVZJRFVBTF9WQVJJQU5DRSA9IDAuNDU7CgkgICAgQWJzdHJhY3RSU1NSZWFkZXIuTUlOX0ZJTkRFUl9QQVRURVJOX1JBVElPID0gOS41IC8gMTIuMDsKCSAgICBBYnN0cmFjdFJTU1JlYWRlci5NQVhfRklOREVSX1BBVFRFUk5fUkFUSU8gPSAxMi41IC8gMTQuMDsKCSAgICByZXR1cm4gQWJzdHJhY3RSU1NSZWFkZXI7Cgl9KE9uZURSZWFkZXJfMS5kZWZhdWx0KSk7CglleHBvcnRzLmRlZmF1bHQgPSBBYnN0cmFjdFJTU1JlYWRlcjsKCgl9KTsKCgl2YXIgRGF0YUNoYXJhY3Rlcl8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCXZhciBEYXRhQ2hhcmFjdGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIGZ1bmN0aW9uIERhdGFDaGFyYWN0ZXIodmFsdWUsIGNoZWNrc3VtUG9ydGlvbikgewoJICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7CgkgICAgICAgIHRoaXMuY2hlY2tzdW1Qb3J0aW9uID0gY2hlY2tzdW1Qb3J0aW9uOwoJICAgIH0KCSAgICBEYXRhQ2hhcmFjdGVyLnByb3RvdHlwZS5nZXRWYWx1ZSA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7CgkgICAgfTsKCSAgICBEYXRhQ2hhcmFjdGVyLnByb3RvdHlwZS5nZXRDaGVja3N1bVBvcnRpb24gPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmNoZWNrc3VtUG9ydGlvbjsKCSAgICB9OwoJICAgIERhdGFDaGFyYWN0ZXIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy52YWx1ZSArICcoJyArIHRoaXMuY2hlY2tzdW1Qb3J0aW9uICsgJyknOwoJICAgIH07CgkgICAgRGF0YUNoYXJhY3Rlci5wcm90b3R5cGUuZXF1YWxzID0gZnVuY3Rpb24gKG8pIHsKCSAgICAgICAgaWYgKCEobyBpbnN0YW5jZW9mIERhdGFDaGFyYWN0ZXIpKSB7CgkgICAgICAgICAgICByZXR1cm4gZmFsc2U7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIHRoYXQgPSBvOwoJICAgICAgICByZXR1cm4gdGhpcy52YWx1ZSA9PT0gdGhhdC52YWx1ZSAmJiB0aGlzLmNoZWNrc3VtUG9ydGlvbiA9PT0gdGhhdC5jaGVja3N1bVBvcnRpb247CgkgICAgfTsKCSAgICBEYXRhQ2hhcmFjdGVyLnByb3RvdHlwZS5oYXNoQ29kZSA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUgXiB0aGlzLmNoZWNrc3VtUG9ydGlvbjsKCSAgICB9OwoJICAgIHJldHVybiBEYXRhQ2hhcmFjdGVyOwoJfSgpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IERhdGFDaGFyYWN0ZXI7CgoJfSk7CgoJdmFyIEZpbmRlclBhdHRlcm5fMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgoJdmFyIEZpbmRlclBhdHRlcm4gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgZnVuY3Rpb24gRmluZGVyUGF0dGVybih2YWx1ZSwgc3RhcnRFbmQsIHN0YXJ0LCBlbmQsIHJvd051bWJlcikgewoJICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7CgkgICAgICAgIHRoaXMuc3RhcnRFbmQgPSBzdGFydEVuZDsKCSAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlOwoJICAgICAgICB0aGlzLnN0YXJ0RW5kID0gc3RhcnRFbmQ7CgkgICAgICAgIHRoaXMucmVzdWx0UG9pbnRzID0gbmV3IEFycmF5KCk7CgkgICAgICAgIHRoaXMucmVzdWx0UG9pbnRzLnB1c2gobmV3IFJlc3VsdFBvaW50XzEuZGVmYXVsdChzdGFydCwgcm93TnVtYmVyKSk7CgkgICAgICAgIHRoaXMucmVzdWx0UG9pbnRzLnB1c2gobmV3IFJlc3VsdFBvaW50XzEuZGVmYXVsdChlbmQsIHJvd051bWJlcikpOwoJICAgIH0KCSAgICBGaW5kZXJQYXR0ZXJuLnByb3RvdHlwZS5nZXRWYWx1ZSA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7CgkgICAgfTsKCSAgICBGaW5kZXJQYXR0ZXJuLnByb3RvdHlwZS5nZXRTdGFydEVuZCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnRFbmQ7CgkgICAgfTsKCSAgICBGaW5kZXJQYXR0ZXJuLnByb3RvdHlwZS5nZXRSZXN1bHRQb2ludHMgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLnJlc3VsdFBvaW50czsKCSAgICB9OwoJICAgIEZpbmRlclBhdHRlcm4ucHJvdG90eXBlLmVxdWFscyA9IGZ1bmN0aW9uIChvKSB7CgkgICAgICAgIGlmICghKG8gaW5zdGFuY2VvZiBGaW5kZXJQYXR0ZXJuKSkgewoJICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoJICAgICAgICB9CgkgICAgICAgIHZhciB0aGF0ID0gbzsKCSAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUgPT09IHRoYXQudmFsdWU7CgkgICAgfTsKCSAgICBGaW5kZXJQYXR0ZXJuLnByb3RvdHlwZS5oYXNoQ29kZSA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7CgkgICAgfTsKCSAgICByZXR1cm4gRmluZGVyUGF0dGVybjsKCX0oKSk7CglleHBvcnRzLmRlZmF1bHQgPSBGaW5kZXJQYXR0ZXJuOwoKCX0pOwoKCXZhciBSU1NVdGlsc18xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJdmFyIF9fdmFsdWVzID0gKGNvbW1vbmpzR2xvYmFsICYmIGNvbW1vbmpzR2xvYmFsLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7CgkgICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSAiZnVuY3Rpb24iICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7CgkgICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7CgkgICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSAibnVtYmVyIikgcmV0dXJuIHsKCSAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkgewoJICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDsKCSAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTsKCSAgICAgICAgfQoJICAgIH07CgkgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gIk9iamVjdCBpcyBub3QgaXRlcmFibGUuIiA6ICJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuIik7Cgl9OwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCS8qKgoJICogUlNTIHV0aWwgZnVuY3Rpb25zLgoJICovCgl2YXIgUlNTVXRpbHMgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgZnVuY3Rpb24gUlNTVXRpbHMoKSB7CgkgICAgfQoJICAgIFJTU1V0aWxzLmdldFJTU3ZhbHVlID0gZnVuY3Rpb24gKHdpZHRocywgbWF4V2lkdGgsIG5vTmFycm93KSB7CgkgICAgICAgIHZhciBlXzEsIF9hOwoJICAgICAgICB2YXIgbiA9IDA7CgkgICAgICAgIHRyeSB7CgkgICAgICAgICAgICBmb3IgKHZhciB3aWR0aHNfMSA9IF9fdmFsdWVzKHdpZHRocyksIHdpZHRoc18xXzEgPSB3aWR0aHNfMS5uZXh0KCk7ICF3aWR0aHNfMV8xLmRvbmU7IHdpZHRoc18xXzEgPSB3aWR0aHNfMS5uZXh0KCkpIHsKCSAgICAgICAgICAgICAgICB2YXIgd2lkdGggPSB3aWR0aHNfMV8xLnZhbHVlOwoJICAgICAgICAgICAgICAgIG4gKz0gd2lkdGg7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH0KCSAgICAgICAgZmluYWxseSB7CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIGlmICh3aWR0aHNfMV8xICYmICF3aWR0aHNfMV8xLmRvbmUgJiYgKF9hID0gd2lkdGhzXzEucmV0dXJuKSkgX2EuY2FsbCh3aWR0aHNfMSk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9CgkgICAgICAgIH0KCSAgICAgICAgdmFyIHZhbCA9IDA7CgkgICAgICAgIHZhciBuYXJyb3dNYXNrID0gMDsKCSAgICAgICAgdmFyIGVsZW1lbnRzID0gd2lkdGhzLmxlbmd0aDsKCSAgICAgICAgZm9yICh2YXIgYmFyID0gMDsgYmFyIDwgZWxlbWVudHMgLSAxOyBiYXIrKykgewoJICAgICAgICAgICAgdmFyIGVsbVdpZHRoID0gdm9pZCAwOwoJICAgICAgICAgICAgZm9yIChlbG1XaWR0aCA9IDEsIG5hcnJvd01hc2sgfD0gMSA8PCBiYXI7IGVsbVdpZHRoIDwgd2lkdGhzW2Jhcl07IGVsbVdpZHRoKyssIG5hcnJvd01hc2sgJj0gfigxIDw8IGJhcikpIHsKCSAgICAgICAgICAgICAgICB2YXIgc3ViVmFsID0gUlNTVXRpbHMuY29tYmlucyhuIC0gZWxtV2lkdGggLSAxLCBlbGVtZW50cyAtIGJhciAtIDIpOwoJICAgICAgICAgICAgICAgIGlmIChub05hcnJvdyAmJiAobmFycm93TWFzayA9PT0gMCkgJiYgKG4gLSBlbG1XaWR0aCAtIChlbGVtZW50cyAtIGJhciAtIDEpID49IGVsZW1lbnRzIC0gYmFyIC0gMSkpIHsKCSAgICAgICAgICAgICAgICAgICAgc3ViVmFsIC09IFJTU1V0aWxzLmNvbWJpbnMobiAtIGVsbVdpZHRoIC0gKGVsZW1lbnRzIC0gYmFyKSwgZWxlbWVudHMgLSBiYXIgLSAyKTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnRzIC0gYmFyIC0gMSA+IDEpIHsKCSAgICAgICAgICAgICAgICAgICAgdmFyIGxlc3NWYWwgPSAwOwoJICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBteHdFbGVtZW50ID0gbiAtIGVsbVdpZHRoIC0gKGVsZW1lbnRzIC0gYmFyIC0gMik7IG14d0VsZW1lbnQgPiBtYXhXaWR0aDsgbXh3RWxlbWVudC0tKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBsZXNzVmFsICs9IFJTU1V0aWxzLmNvbWJpbnMobiAtIGVsbVdpZHRoIC0gbXh3RWxlbWVudCAtIDEsIGVsZW1lbnRzIC0gYmFyIC0gMyk7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgc3ViVmFsIC09IGxlc3NWYWwgKiAoZWxlbWVudHMgLSAxIC0gYmFyKTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgZWxzZSBpZiAobiAtIGVsbVdpZHRoID4gbWF4V2lkdGgpIHsKCSAgICAgICAgICAgICAgICAgICAgc3ViVmFsLS07CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIHZhbCArPSBzdWJWYWw7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBuIC09IGVsbVdpZHRoOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiB2YWw7CgkgICAgfTsKCSAgICBSU1NVdGlscy5jb21iaW5zID0gZnVuY3Rpb24gKG4sIHIpIHsKCSAgICAgICAgdmFyIG1heERlbm9tOwoJICAgICAgICB2YXIgbWluRGVub207CgkgICAgICAgIGlmIChuIC0gciA+IHIpIHsKCSAgICAgICAgICAgIG1pbkRlbm9tID0gcjsKCSAgICAgICAgICAgIG1heERlbm9tID0gbiAtIHI7CgkgICAgICAgIH0KCSAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICBtaW5EZW5vbSA9IG4gLSByOwoJICAgICAgICAgICAgbWF4RGVub20gPSByOwoJICAgICAgICB9CgkgICAgICAgIHZhciB2YWwgPSAxOwoJICAgICAgICB2YXIgaiA9IDE7CgkgICAgICAgIGZvciAodmFyIGkgPSBuOyBpID4gbWF4RGVub207IGktLSkgewoJICAgICAgICAgICAgdmFsICo9IGk7CgkgICAgICAgICAgICBpZiAoaiA8PSBtaW5EZW5vbSkgewoJICAgICAgICAgICAgICAgIHZhbCAvPSBqOwoJICAgICAgICAgICAgICAgIGorKzsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICB3aGlsZSAoKGogPD0gbWluRGVub20pKSB7CgkgICAgICAgICAgICB2YWwgLz0gajsKCSAgICAgICAgICAgIGorKzsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gdmFsOwoJICAgIH07CgkgICAgcmV0dXJuIFJTU1V0aWxzOwoJfSgpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IFJTU1V0aWxzOwoKCX0pOwoKCXZhciBCaXRBcnJheUJ1aWxkZXJfMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgoJdmFyIEJpdEFycmF5QnVpbGRlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBCaXRBcnJheUJ1aWxkZXIoKSB7CgkgICAgfQoJICAgIEJpdEFycmF5QnVpbGRlci5idWlsZEJpdEFycmF5ID0gZnVuY3Rpb24gKHBhaXJzKSB7CgkgICAgICAgIHZhciBjaGFyTnVtYmVyID0gKHBhaXJzLmxlbmd0aCAqIDIpIC0gMTsKCSAgICAgICAgaWYgKHBhaXJzW3BhaXJzLmxlbmd0aCAtIDFdLmdldFJpZ2h0Q2hhcigpID09IG51bGwpIHsKCSAgICAgICAgICAgIGNoYXJOdW1iZXIgLT0gMTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgc2l6ZSA9IDEyICogY2hhck51bWJlcjsKCSAgICAgICAgdmFyIGJpbmFyeSA9IG5ldyBCaXRBcnJheV8xLmRlZmF1bHQoc2l6ZSk7CgkgICAgICAgIHZhciBhY2NQb3MgPSAwOwoJICAgICAgICB2YXIgZmlyc3RQYWlyID0gcGFpcnNbMF07CgkgICAgICAgIHZhciBmaXJzdFZhbHVlID0gZmlyc3RQYWlyLmdldFJpZ2h0Q2hhcigpLmdldFZhbHVlKCk7CgkgICAgICAgIGZvciAodmFyIGkgPSAxMTsgaSA+PSAwOyAtLWkpIHsKCSAgICAgICAgICAgIGlmICgoZmlyc3RWYWx1ZSAmICgxIDw8IGkpKSAhPSAwKSB7CgkgICAgICAgICAgICAgICAgYmluYXJ5LnNldChhY2NQb3MpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgYWNjUG9zKys7CgkgICAgICAgIH0KCSAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBwYWlycy5sZW5ndGg7ICsraSkgewoJICAgICAgICAgICAgdmFyIGN1cnJlbnRQYWlyID0gcGFpcnNbaV07CgkgICAgICAgICAgICB2YXIgbGVmdFZhbHVlID0gY3VycmVudFBhaXIuZ2V0TGVmdENoYXIoKS5nZXRWYWx1ZSgpOwoJICAgICAgICAgICAgZm9yICh2YXIgaiA9IDExOyBqID49IDA7IC0taikgewoJICAgICAgICAgICAgICAgIGlmICgobGVmdFZhbHVlICYgKDEgPDwgaikpICE9IDApIHsKCSAgICAgICAgICAgICAgICAgICAgYmluYXJ5LnNldChhY2NQb3MpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBhY2NQb3MrKzsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGlmIChjdXJyZW50UGFpci5nZXRSaWdodENoYXIoKSAhPSBudWxsKSB7CgkgICAgICAgICAgICAgICAgdmFyIHJpZ2h0VmFsdWUgPSBjdXJyZW50UGFpci5nZXRSaWdodENoYXIoKS5nZXRWYWx1ZSgpOwoJICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAxMTsgaiA+PSAwOyAtLWopIHsKCSAgICAgICAgICAgICAgICAgICAgaWYgKChyaWdodFZhbHVlICYgKDEgPDwgaikpICE9IDApIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIGJpbmFyeS5zZXQoYWNjUG9zKTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICBhY2NQb3MrKzsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIGJpbmFyeTsKCSAgICB9OwoJICAgIHJldHVybiBCaXRBcnJheUJ1aWxkZXI7Cgl9KCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gQml0QXJyYXlCdWlsZGVyOwoKCX0pOwoKCXZhciBCbG9ja1BhcnNlZFJlc3VsdF8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCXZhciBCbG9ja1BhcnNlZFJlc3VsdCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBCbG9ja1BhcnNlZFJlc3VsdChmaW5pc2hlZCwgZGVjb2RlZEluZm9ybWF0aW9uKSB7CgkgICAgICAgIGlmIChkZWNvZGVkSW5mb3JtYXRpb24pIHsKCSAgICAgICAgICAgIHRoaXMuZGVjb2RlZEluZm9ybWF0aW9uID0gbnVsbDsKCSAgICAgICAgfQoJICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgIHRoaXMuZmluaXNoZWQgPSBmaW5pc2hlZDsKCSAgICAgICAgICAgIHRoaXMuZGVjb2RlZEluZm9ybWF0aW9uID0gZGVjb2RlZEluZm9ybWF0aW9uOwoJICAgICAgICB9CgkgICAgfQoJICAgIEJsb2NrUGFyc2VkUmVzdWx0LnByb3RvdHlwZS5nZXREZWNvZGVkSW5mb3JtYXRpb24gPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmRlY29kZWRJbmZvcm1hdGlvbjsKCSAgICB9OwoJICAgIEJsb2NrUGFyc2VkUmVzdWx0LnByb3RvdHlwZS5pc0ZpbmlzaGVkID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5maW5pc2hlZDsKCSAgICB9OwoJICAgIHJldHVybiBCbG9ja1BhcnNlZFJlc3VsdDsKCX0oKSk7CglleHBvcnRzLmRlZmF1bHQgPSBCbG9ja1BhcnNlZFJlc3VsdDsKCgl9KTsKCgl2YXIgRGVjb2RlZE9iamVjdF8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCXZhciBEZWNvZGVkT2JqZWN0ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIGZ1bmN0aW9uIERlY29kZWRPYmplY3QobmV3UG9zaXRpb24pIHsKCSAgICAgICAgdGhpcy5uZXdQb3NpdGlvbiA9IG5ld1Bvc2l0aW9uOwoJICAgIH0KCSAgICBEZWNvZGVkT2JqZWN0LnByb3RvdHlwZS5nZXROZXdQb3NpdGlvbiA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMubmV3UG9zaXRpb247CgkgICAgfTsKCSAgICByZXR1cm4gRGVjb2RlZE9iamVjdDsKCX0oKSk7CglleHBvcnRzLmRlZmF1bHQgPSBEZWNvZGVkT2JqZWN0OwoKCX0pOwoKCXZhciBEZWNvZGVkQ2hhcl8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJdmFyIF9fZXh0ZW5kcyA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7CgkgICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8CgkgICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8CgkgICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTsKCSAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgfTsKCSAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9CgkgICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTsKCSAgICB9OwoJfSkoKTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgoJdmFyIERlY29kZWRDaGFyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikgewoJICAgIF9fZXh0ZW5kcyhEZWNvZGVkQ2hhciwgX3N1cGVyKTsKCSAgICBmdW5jdGlvbiBEZWNvZGVkQ2hhcihuZXdQb3NpdGlvbiwgdmFsdWUpIHsKCSAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgbmV3UG9zaXRpb24pIHx8IHRoaXM7CgkgICAgICAgIF90aGlzLnZhbHVlID0gdmFsdWU7CgkgICAgICAgIHJldHVybiBfdGhpczsKCSAgICB9CgkgICAgRGVjb2RlZENoYXIucHJvdG90eXBlLmdldFZhbHVlID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTsKCSAgICB9OwoJICAgIERlY29kZWRDaGFyLnByb3RvdHlwZS5pc0ZOQzEgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLnZhbHVlID09PSBEZWNvZGVkQ2hhci5GTkMxOwoJICAgIH07CgkgICAgRGVjb2RlZENoYXIuRk5DMSA9ICckJzsKCSAgICByZXR1cm4gRGVjb2RlZENoYXI7Cgl9KERlY29kZWRPYmplY3RfMS5kZWZhdWx0KSk7CglleHBvcnRzLmRlZmF1bHQgPSBEZWNvZGVkQ2hhcjsKCgl9KTsKCgl2YXIgRGVjb2RlZEluZm9ybWF0aW9uXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7Cgl2YXIgX19leHRlbmRzID0gKGNvbW1vbmpzR2xvYmFsICYmIGNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHsKCSAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwKCSAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHwKCSAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9OwoJICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICB9OwoJICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH0KCSAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpOwoJICAgIH07Cgl9KSgpOwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCgl2YXIgRGVjb2RlZEluZm9ybWF0aW9uID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikgewoJICAgIF9fZXh0ZW5kcyhEZWNvZGVkSW5mb3JtYXRpb24sIF9zdXBlcik7CgkgICAgZnVuY3Rpb24gRGVjb2RlZEluZm9ybWF0aW9uKG5ld1Bvc2l0aW9uLCBuZXdTdHJpbmcsIHJlbWFpbmluZ1ZhbHVlKSB7CgkgICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIG5ld1Bvc2l0aW9uKSB8fCB0aGlzOwoJICAgICAgICBpZiAocmVtYWluaW5nVmFsdWUpIHsKCSAgICAgICAgICAgIF90aGlzLnJlbWFpbmluZyA9IHRydWU7CgkgICAgICAgICAgICBfdGhpcy5yZW1haW5pbmdWYWx1ZSA9IF90aGlzLnJlbWFpbmluZ1ZhbHVlOwoJICAgICAgICB9CgkgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgX3RoaXMucmVtYWluaW5nID0gZmFsc2U7CgkgICAgICAgICAgICBfdGhpcy5yZW1haW5pbmdWYWx1ZSA9IDA7CgkgICAgICAgIH0KCSAgICAgICAgX3RoaXMubmV3U3RyaW5nID0gbmV3U3RyaW5nOwoJICAgICAgICByZXR1cm4gX3RoaXM7CgkgICAgfQoJICAgIERlY29kZWRJbmZvcm1hdGlvbi5wcm90b3R5cGUuZ2V0TmV3U3RyaW5nID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5uZXdTdHJpbmc7CgkgICAgfTsKCSAgICBEZWNvZGVkSW5mb3JtYXRpb24ucHJvdG90eXBlLmlzUmVtYWluaW5nID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5yZW1haW5pbmc7CgkgICAgfTsKCSAgICBEZWNvZGVkSW5mb3JtYXRpb24ucHJvdG90eXBlLmdldFJlbWFpbmluZ1ZhbHVlID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5yZW1haW5pbmdWYWx1ZTsKCSAgICB9OwoJICAgIHJldHVybiBEZWNvZGVkSW5mb3JtYXRpb247Cgl9KERlY29kZWRPYmplY3RfMS5kZWZhdWx0KSk7CglleHBvcnRzLmRlZmF1bHQgPSBEZWNvZGVkSW5mb3JtYXRpb247CgoJfSk7CgoJdmFyIERlY29kZWROdW1lcmljXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7Cgl2YXIgX19leHRlbmRzID0gKGNvbW1vbmpzR2xvYmFsICYmIGNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHsKCSAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwKCSAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHwKCSAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9OwoJICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICB9OwoJICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH0KCSAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpOwoJICAgIH07Cgl9KSgpOwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCgoJdmFyIERlY29kZWROdW1lcmljID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikgewoJICAgIF9fZXh0ZW5kcyhEZWNvZGVkTnVtZXJpYywgX3N1cGVyKTsKCSAgICBmdW5jdGlvbiBEZWNvZGVkTnVtZXJpYyhuZXdQb3NpdGlvbiwgZmlyc3REaWdpdCwgc2Vjb25kRGlnaXQpIHsKCSAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgbmV3UG9zaXRpb24pIHx8IHRoaXM7CgkgICAgICAgIGlmIChmaXJzdERpZ2l0IDwgMCB8fCBmaXJzdERpZ2l0ID4gMTAgfHwgc2Vjb25kRGlnaXQgPCAwIHx8IHNlY29uZERpZ2l0ID4gMTApIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgIH0KCSAgICAgICAgX3RoaXMuZmlyc3REaWdpdCA9IGZpcnN0RGlnaXQ7CgkgICAgICAgIF90aGlzLnNlY29uZERpZ2l0ID0gc2Vjb25kRGlnaXQ7CgkgICAgICAgIHJldHVybiBfdGhpczsKCSAgICB9CgkgICAgRGVjb2RlZE51bWVyaWMucHJvdG90eXBlLmdldEZpcnN0RGlnaXQgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmZpcnN0RGlnaXQ7CgkgICAgfTsKCSAgICBEZWNvZGVkTnVtZXJpYy5wcm90b3R5cGUuZ2V0U2Vjb25kRGlnaXQgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLnNlY29uZERpZ2l0OwoJICAgIH07CgkgICAgRGVjb2RlZE51bWVyaWMucHJvdG90eXBlLmdldFZhbHVlID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5maXJzdERpZ2l0ICogMTAgKyB0aGlzLnNlY29uZERpZ2l0OwoJICAgIH07CgkgICAgRGVjb2RlZE51bWVyaWMucHJvdG90eXBlLmlzRmlyc3REaWdpdEZOQzEgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmZpcnN0RGlnaXQgPT09IERlY29kZWROdW1lcmljLkZOQzE7CgkgICAgfTsKCSAgICBEZWNvZGVkTnVtZXJpYy5wcm90b3R5cGUuaXNTZWNvbmREaWdpdEZOQzEgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLnNlY29uZERpZ2l0ID09PSBEZWNvZGVkTnVtZXJpYy5GTkMxOwoJICAgIH07CgkgICAgRGVjb2RlZE51bWVyaWMucHJvdG90eXBlLmlzQW55Rk5DMSA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuZmlyc3REaWdpdCA9PT0gRGVjb2RlZE51bWVyaWMuRk5DMSB8fCB0aGlzLnNlY29uZERpZ2l0ID09PSBEZWNvZGVkTnVtZXJpYy5GTkMxOwoJICAgIH07CgkgICAgRGVjb2RlZE51bWVyaWMuRk5DMSA9IDEwOwoJICAgIHJldHVybiBEZWNvZGVkTnVtZXJpYzsKCX0oRGVjb2RlZE9iamVjdF8xLmRlZmF1bHQpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IERlY29kZWROdW1lcmljOwoKCX0pOwoKCXZhciBGaWVsZFBhcnNlcl8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJdmFyIF9fdmFsdWVzID0gKGNvbW1vbmpzR2xvYmFsICYmIGNvbW1vbmpzR2xvYmFsLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7CgkgICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSAiZnVuY3Rpb24iICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7CgkgICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7CgkgICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSAibnVtYmVyIikgcmV0dXJuIHsKCSAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkgewoJICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDsKCSAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTsKCSAgICAgICAgfQoJICAgIH07CgkgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gIk9iamVjdCBpcyBub3QgaXRlcmFibGUuIiA6ICJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuIik7Cgl9OwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCgl2YXIgRmllbGRQYXJzZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgZnVuY3Rpb24gRmllbGRQYXJzZXIoKSB7CgkgICAgfQoJICAgIEZpZWxkUGFyc2VyLnBhcnNlRmllbGRzSW5HZW5lcmFsUHVycG9zZSA9IGZ1bmN0aW9uIChyYXdJbmZvcm1hdGlvbikgewoJICAgICAgICB2YXIgZV8xLCBfYSwgZV8yLCBfYiwgZV8zLCBfYywgZV80LCBfZDsKCSAgICAgICAgaWYgKCFyYXdJbmZvcm1hdGlvbikgewoJICAgICAgICAgICAgcmV0dXJuIG51bGw7CgkgICAgICAgIH0KCSAgICAgICAgLy8gUHJvY2Vzc2luZyAyLWRpZ2l0IEFJcwoJICAgICAgICBpZiAocmF3SW5mb3JtYXRpb24ubGVuZ3RoIDwgMikgewoJICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgICAgIHZhciBmaXJzdFR3b0RpZ2l0cyA9IHJhd0luZm9ybWF0aW9uLnN1YnN0cmluZygwLCAyKTsKCSAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgIGZvciAodmFyIF9lID0gX192YWx1ZXMoRmllbGRQYXJzZXIuVFdPX0RJR0lUX0RBVEFfTEVOR1RIKSwgX2YgPSBfZS5uZXh0KCk7ICFfZi5kb25lOyBfZiA9IF9lLm5leHQoKSkgewoJICAgICAgICAgICAgICAgIHZhciBkYXRhTGVuZ3RoID0gX2YudmFsdWU7CgkgICAgICAgICAgICAgICAgaWYgKGRhdGFMZW5ndGhbMF0gPT09IGZpcnN0VHdvRGlnaXRzKSB7CgkgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhTGVuZ3RoWzFdID09PSBGaWVsZFBhcnNlci5WQVJJQUJMRV9MRU5HVEgpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGaWVsZFBhcnNlci5wcm9jZXNzVmFyaWFibGVBSSgyLCBkYXRhTGVuZ3RoWzJdLCByYXdJbmZvcm1hdGlvbik7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZpZWxkUGFyc2VyLnByb2Nlc3NGaXhlZEFJKDIsIGRhdGFMZW5ndGhbMV0sIHJhd0luZm9ybWF0aW9uKTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH0KCSAgICAgICAgZmluYWxseSB7CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIGlmIChfZiAmJiAhX2YuZG9uZSAmJiAoX2EgPSBfZS5yZXR1cm4pKSBfYS5jYWxsKF9lKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH0KCSAgICAgICAgfQoJICAgICAgICBpZiAocmF3SW5mb3JtYXRpb24ubGVuZ3RoIDwgMykgewoJICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgICAgIHZhciBmaXJzdFRocmVlRGlnaXRzID0gcmF3SW5mb3JtYXRpb24uc3Vic3RyaW5nKDAsIDMpOwoJICAgICAgICB0cnkgewoJICAgICAgICAgICAgZm9yICh2YXIgX2cgPSBfX3ZhbHVlcyhGaWVsZFBhcnNlci5USFJFRV9ESUdJVF9EQVRBX0xFTkdUSCksIF9oID0gX2cubmV4dCgpOyAhX2guZG9uZTsgX2ggPSBfZy5uZXh0KCkpIHsKCSAgICAgICAgICAgICAgICB2YXIgZGF0YUxlbmd0aCA9IF9oLnZhbHVlOwoJICAgICAgICAgICAgICAgIGlmIChkYXRhTGVuZ3RoWzBdID09PSBmaXJzdFRocmVlRGlnaXRzKSB7CgkgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhTGVuZ3RoWzFdID09PSBGaWVsZFBhcnNlci5WQVJJQUJMRV9MRU5HVEgpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGaWVsZFBhcnNlci5wcm9jZXNzVmFyaWFibGVBSSgzLCBkYXRhTGVuZ3RoWzJdLCByYXdJbmZvcm1hdGlvbik7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZpZWxkUGFyc2VyLnByb2Nlc3NGaXhlZEFJKDMsIGRhdGFMZW5ndGhbMV0sIHJhd0luZm9ybWF0aW9uKTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgY2F0Y2ggKGVfMl8xKSB7IGVfMiA9IHsgZXJyb3I6IGVfMl8xIH07IH0KCSAgICAgICAgZmluYWxseSB7CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIGlmIChfaCAmJiAhX2guZG9uZSAmJiAoX2IgPSBfZy5yZXR1cm4pKSBfYi5jYWxsKF9nKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8yKSB0aHJvdyBlXzIuZXJyb3I7IH0KCSAgICAgICAgfQoJICAgICAgICB0cnkgewoJICAgICAgICAgICAgZm9yICh2YXIgX2ogPSBfX3ZhbHVlcyhGaWVsZFBhcnNlci5USFJFRV9ESUdJVF9QTFVTX0RJR0lUX0RBVEFfTEVOR1RIKSwgX2sgPSBfai5uZXh0KCk7ICFfay5kb25lOyBfayA9IF9qLm5leHQoKSkgewoJICAgICAgICAgICAgICAgIHZhciBkYXRhTGVuZ3RoID0gX2sudmFsdWU7CgkgICAgICAgICAgICAgICAgaWYgKGRhdGFMZW5ndGhbMF0gPT09IGZpcnN0VGhyZWVEaWdpdHMpIHsKCSAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFMZW5ndGhbMV0gPT09IEZpZWxkUGFyc2VyLlZBUklBQkxFX0xFTkdUSCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZpZWxkUGFyc2VyLnByb2Nlc3NWYXJpYWJsZUFJKDQsIGRhdGFMZW5ndGhbMl0sIHJhd0luZm9ybWF0aW9uKTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmllbGRQYXJzZXIucHJvY2Vzc0ZpeGVkQUkoNCwgZGF0YUxlbmd0aFsxXSwgcmF3SW5mb3JtYXRpb24pOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICBjYXRjaCAoZV8zXzEpIHsgZV8zID0geyBlcnJvcjogZV8zXzEgfTsgfQoJICAgICAgICBmaW5hbGx5IHsKCSAgICAgICAgICAgIHRyeSB7CgkgICAgICAgICAgICAgICAgaWYgKF9rICYmICFfay5kb25lICYmIChfYyA9IF9qLnJldHVybikpIF9jLmNhbGwoX2opOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzMpIHRocm93IGVfMy5lcnJvcjsgfQoJICAgICAgICB9CgkgICAgICAgIGlmIChyYXdJbmZvcm1hdGlvbi5sZW5ndGggPCA0KSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGZpcnN0Rm91ckRpZ2l0cyA9IHJhd0luZm9ybWF0aW9uLnN1YnN0cmluZygwLCA0KTsKCSAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgIGZvciAodmFyIF9sID0gX192YWx1ZXMoRmllbGRQYXJzZXIuRk9VUl9ESUdJVF9EQVRBX0xFTkdUSCksIF9tID0gX2wubmV4dCgpOyAhX20uZG9uZTsgX20gPSBfbC5uZXh0KCkpIHsKCSAgICAgICAgICAgICAgICB2YXIgZGF0YUxlbmd0aCA9IF9tLnZhbHVlOwoJICAgICAgICAgICAgICAgIGlmIChkYXRhTGVuZ3RoWzBdID09PSBmaXJzdEZvdXJEaWdpdHMpIHsKCSAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFMZW5ndGhbMV0gPT09IEZpZWxkUGFyc2VyLlZBUklBQkxFX0xFTkdUSCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZpZWxkUGFyc2VyLnByb2Nlc3NWYXJpYWJsZUFJKDQsIGRhdGFMZW5ndGhbMl0sIHJhd0luZm9ybWF0aW9uKTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmllbGRQYXJzZXIucHJvY2Vzc0ZpeGVkQUkoNCwgZGF0YUxlbmd0aFsxXSwgcmF3SW5mb3JtYXRpb24pOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICBjYXRjaCAoZV80XzEpIHsgZV80ID0geyBlcnJvcjogZV80XzEgfTsgfQoJICAgICAgICBmaW5hbGx5IHsKCSAgICAgICAgICAgIHRyeSB7CgkgICAgICAgICAgICAgICAgaWYgKF9tICYmICFfbS5kb25lICYmIChfZCA9IF9sLnJldHVybikpIF9kLmNhbGwoX2wpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzQpIHRocm93IGVfNC5lcnJvcjsgfQoJICAgICAgICB9CgkgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICB9OwoJICAgIEZpZWxkUGFyc2VyLnByb2Nlc3NGaXhlZEFJID0gZnVuY3Rpb24gKGFpU2l6ZSwgZmllbGRTaXplLCByYXdJbmZvcm1hdGlvbikgewoJICAgICAgICBpZiAocmF3SW5mb3JtYXRpb24ubGVuZ3RoIDwgYWlTaXplKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGFpID0gcmF3SW5mb3JtYXRpb24uc3Vic3RyaW5nKDAsIGFpU2l6ZSk7CgkgICAgICAgIGlmIChyYXdJbmZvcm1hdGlvbi5sZW5ndGggPCBhaVNpemUgKyBmaWVsZFNpemUpIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgZmllbGQgPSByYXdJbmZvcm1hdGlvbi5zdWJzdHJpbmcoYWlTaXplLCBhaVNpemUgKyBmaWVsZFNpemUpOwoJICAgICAgICB2YXIgcmVtYWluaW5nID0gcmF3SW5mb3JtYXRpb24uc3Vic3RyaW5nKGFpU2l6ZSArIGZpZWxkU2l6ZSk7CgkgICAgICAgIHZhciByZXN1bHQgPSAnKCcgKyBhaSArICcpJyArIGZpZWxkOwoJICAgICAgICB2YXIgcGFyc2VkQUkgPSBGaWVsZFBhcnNlci5wYXJzZUZpZWxkc0luR2VuZXJhbFB1cnBvc2UocmVtYWluaW5nKTsKCSAgICAgICAgcmV0dXJuIHBhcnNlZEFJID09IG51bGwgPyByZXN1bHQgOiByZXN1bHQgKyBwYXJzZWRBSTsKCSAgICB9OwoJICAgIEZpZWxkUGFyc2VyLnByb2Nlc3NWYXJpYWJsZUFJID0gZnVuY3Rpb24gKGFpU2l6ZSwgdmFyaWFibGVGaWVsZFNpemUsIHJhd0luZm9ybWF0aW9uKSB7CgkgICAgICAgIHZhciBhaSA9IHJhd0luZm9ybWF0aW9uLnN1YnN0cmluZygwLCBhaVNpemUpOwoJICAgICAgICB2YXIgbWF4U2l6ZTsKCSAgICAgICAgaWYgKHJhd0luZm9ybWF0aW9uLmxlbmd0aCA8IGFpU2l6ZSArIHZhcmlhYmxlRmllbGRTaXplKSB7CgkgICAgICAgICAgICBtYXhTaXplID0gcmF3SW5mb3JtYXRpb24ubGVuZ3RoOwoJICAgICAgICB9CgkgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgbWF4U2l6ZSA9IGFpU2l6ZSArIHZhcmlhYmxlRmllbGRTaXplOwoJICAgICAgICB9CgkgICAgICAgIHZhciBmaWVsZCA9IHJhd0luZm9ybWF0aW9uLnN1YnN0cmluZyhhaVNpemUsIG1heFNpemUpOwoJICAgICAgICB2YXIgcmVtYWluaW5nID0gcmF3SW5mb3JtYXRpb24uc3Vic3RyaW5nKG1heFNpemUpOwoJICAgICAgICB2YXIgcmVzdWx0ID0gJygnICsgYWkgKyAnKScgKyBmaWVsZDsKCSAgICAgICAgdmFyIHBhcnNlZEFJID0gRmllbGRQYXJzZXIucGFyc2VGaWVsZHNJbkdlbmVyYWxQdXJwb3NlKHJlbWFpbmluZyk7CgkgICAgICAgIHJldHVybiBwYXJzZWRBSSA9PSBudWxsID8gcmVzdWx0IDogcmVzdWx0ICsgcGFyc2VkQUk7CgkgICAgfTsKCSAgICBGaWVsZFBhcnNlci5WQVJJQUJMRV9MRU5HVEggPSBbXTsKCSAgICBGaWVsZFBhcnNlci5UV09fRElHSVRfREFUQV9MRU5HVEggPSBbCgkgICAgICAgIFsnMDAnLCAxOF0sCgkgICAgICAgIFsnMDEnLCAxNF0sCgkgICAgICAgIFsnMDInLCAxNF0sCgkgICAgICAgIFsnMTAnLCBGaWVsZFBhcnNlci5WQVJJQUJMRV9MRU5HVEgsIDIwXSwKCSAgICAgICAgWycxMScsIDZdLAoJICAgICAgICBbJzEyJywgNl0sCgkgICAgICAgIFsnMTMnLCA2XSwKCSAgICAgICAgWycxNScsIDZdLAoJICAgICAgICBbJzE3JywgNl0sCgkgICAgICAgIFsnMjAnLCAyXSwKCSAgICAgICAgWycyMScsIEZpZWxkUGFyc2VyLlZBUklBQkxFX0xFTkdUSCwgMjBdLAoJICAgICAgICBbJzIyJywgRmllbGRQYXJzZXIuVkFSSUFCTEVfTEVOR1RILCAyOV0sCgkgICAgICAgIFsnMzAnLCBGaWVsZFBhcnNlci5WQVJJQUJMRV9MRU5HVEgsIDhdLAoJICAgICAgICBbJzM3JywgRmllbGRQYXJzZXIuVkFSSUFCTEVfTEVOR1RILCA4XSwKCSAgICAgICAgLy8gaW50ZXJuYWwgY29tcGFueSBjb2RlcwoJICAgICAgICBbJzkwJywgRmllbGRQYXJzZXIuVkFSSUFCTEVfTEVOR1RILCAzMF0sCgkgICAgICAgIFsnOTEnLCBGaWVsZFBhcnNlci5WQVJJQUJMRV9MRU5HVEgsIDMwXSwKCSAgICAgICAgWyc5MicsIEZpZWxkUGFyc2VyLlZBUklBQkxFX0xFTkdUSCwgMzBdLAoJICAgICAgICBbJzkzJywgRmllbGRQYXJzZXIuVkFSSUFCTEVfTEVOR1RILCAzMF0sCgkgICAgICAgIFsnOTQnLCBGaWVsZFBhcnNlci5WQVJJQUJMRV9MRU5HVEgsIDMwXSwKCSAgICAgICAgWyc5NScsIEZpZWxkUGFyc2VyLlZBUklBQkxFX0xFTkdUSCwgMzBdLAoJICAgICAgICBbJzk2JywgRmllbGRQYXJzZXIuVkFSSUFCTEVfTEVOR1RILCAzMF0sCgkgICAgICAgIFsnOTcnLCBGaWVsZFBhcnNlci5WQVJJQUJMRV9MRU5HVEgsIDNdLAoJICAgICAgICBbJzk4JywgRmllbGRQYXJzZXIuVkFSSUFCTEVfTEVOR1RILCAzMF0sCgkgICAgICAgIFsnOTknLCBGaWVsZFBhcnNlci5WQVJJQUJMRV9MRU5HVEgsIDMwXSwKCSAgICBdOwoJICAgIEZpZWxkUGFyc2VyLlRIUkVFX0RJR0lUX0RBVEFfTEVOR1RIID0gWwoJICAgICAgICAvLyBTYW1lIGZvcm1hdCBhcyBhYm92ZQoJICAgICAgICBbJzI0MCcsIEZpZWxkUGFyc2VyLlZBUklBQkxFX0xFTkdUSCwgMzBdLAoJICAgICAgICBbJzI0MScsIEZpZWxkUGFyc2VyLlZBUklBQkxFX0xFTkdUSCwgMzBdLAoJICAgICAgICBbJzI0MicsIEZpZWxkUGFyc2VyLlZBUklBQkxFX0xFTkdUSCwgNl0sCgkgICAgICAgIFsnMjUwJywgRmllbGRQYXJzZXIuVkFSSUFCTEVfTEVOR1RILCAzMF0sCgkgICAgICAgIFsnMjUxJywgRmllbGRQYXJzZXIuVkFSSUFCTEVfTEVOR1RILCAzMF0sCgkgICAgICAgIFsnMjUzJywgRmllbGRQYXJzZXIuVkFSSUFCTEVfTEVOR1RILCAxN10sCgkgICAgICAgIFsnMjU0JywgRmllbGRQYXJzZXIuVkFSSUFCTEVfTEVOR1RILCAyMF0sCgkgICAgICAgIFsnNDAwJywgRmllbGRQYXJzZXIuVkFSSUFCTEVfTEVOR1RILCAzMF0sCgkgICAgICAgIFsnNDAxJywgRmllbGRQYXJzZXIuVkFSSUFCTEVfTEVOR1RILCAzMF0sCgkgICAgICAgIFsnNDAyJywgMTddLAoJICAgICAgICBbJzQwMycsIEZpZWxkUGFyc2VyLlZBUklBQkxFX0xFTkdUSCwgMzBdLAoJICAgICAgICBbJzQxMCcsIDEzXSwKCSAgICAgICAgWyc0MTEnLCAxM10sCgkgICAgICAgIFsnNDEyJywgMTNdLAoJICAgICAgICBbJzQxMycsIDEzXSwKCSAgICAgICAgWyc0MTQnLCAxM10sCgkgICAgICAgIFsnNDIwJywgRmllbGRQYXJzZXIuVkFSSUFCTEVfTEVOR1RILCAyMF0sCgkgICAgICAgIFsnNDIxJywgRmllbGRQYXJzZXIuVkFSSUFCTEVfTEVOR1RILCAxNV0sCgkgICAgICAgIFsnNDIyJywgM10sCgkgICAgICAgIFsnNDIzJywgRmllbGRQYXJzZXIuVkFSSUFCTEVfTEVOR1RILCAxNV0sCgkgICAgICAgIFsnNDI0JywgM10sCgkgICAgICAgIFsnNDI1JywgM10sCgkgICAgICAgIFsnNDI2JywgM10sCgkgICAgXTsKCSAgICBGaWVsZFBhcnNlci5USFJFRV9ESUdJVF9QTFVTX0RJR0lUX0RBVEFfTEVOR1RIID0gWwoJICAgICAgICAvLyBTYW1lIGZvcm1hdCBhcyBhYm92ZQoJICAgICAgICBbJzMxMCcsIDZdLAoJICAgICAgICBbJzMxMScsIDZdLAoJICAgICAgICBbJzMxMicsIDZdLAoJICAgICAgICBbJzMxMycsIDZdLAoJICAgICAgICBbJzMxNCcsIDZdLAoJICAgICAgICBbJzMxNScsIDZdLAoJICAgICAgICBbJzMxNicsIDZdLAoJICAgICAgICBbJzMyMCcsIDZdLAoJICAgICAgICBbJzMyMScsIDZdLAoJICAgICAgICBbJzMyMicsIDZdLAoJICAgICAgICBbJzMyMycsIDZdLAoJICAgICAgICBbJzMyNCcsIDZdLAoJICAgICAgICBbJzMyNScsIDZdLAoJICAgICAgICBbJzMyNicsIDZdLAoJICAgICAgICBbJzMyNycsIDZdLAoJICAgICAgICBbJzMyOCcsIDZdLAoJICAgICAgICBbJzMyOScsIDZdLAoJICAgICAgICBbJzMzMCcsIDZdLAoJICAgICAgICBbJzMzMScsIDZdLAoJICAgICAgICBbJzMzMicsIDZdLAoJICAgICAgICBbJzMzMycsIDZdLAoJICAgICAgICBbJzMzNCcsIDZdLAoJICAgICAgICBbJzMzNScsIDZdLAoJICAgICAgICBbJzMzNicsIDZdLAoJICAgICAgICBbJzM0MCcsIDZdLAoJICAgICAgICBbJzM0MScsIDZdLAoJICAgICAgICBbJzM0MicsIDZdLAoJICAgICAgICBbJzM0MycsIDZdLAoJICAgICAgICBbJzM0NCcsIDZdLAoJICAgICAgICBbJzM0NScsIDZdLAoJICAgICAgICBbJzM0NicsIDZdLAoJICAgICAgICBbJzM0NycsIDZdLAoJICAgICAgICBbJzM0OCcsIDZdLAoJICAgICAgICBbJzM0OScsIDZdLAoJICAgICAgICBbJzM1MCcsIDZdLAoJICAgICAgICBbJzM1MScsIDZdLAoJICAgICAgICBbJzM1MicsIDZdLAoJICAgICAgICBbJzM1MycsIDZdLAoJICAgICAgICBbJzM1NCcsIDZdLAoJICAgICAgICBbJzM1NScsIDZdLAoJICAgICAgICBbJzM1NicsIDZdLAoJICAgICAgICBbJzM1NycsIDZdLAoJICAgICAgICBbJzM2MCcsIDZdLAoJICAgICAgICBbJzM2MScsIDZdLAoJICAgICAgICBbJzM2MicsIDZdLAoJICAgICAgICBbJzM2MycsIDZdLAoJICAgICAgICBbJzM2NCcsIDZdLAoJICAgICAgICBbJzM2NScsIDZdLAoJICAgICAgICBbJzM2NicsIDZdLAoJICAgICAgICBbJzM2NycsIDZdLAoJICAgICAgICBbJzM2OCcsIDZdLAoJICAgICAgICBbJzM2OScsIDZdLAoJICAgICAgICBbJzM5MCcsIEZpZWxkUGFyc2VyLlZBUklBQkxFX0xFTkdUSCwgMTVdLAoJICAgICAgICBbJzM5MScsIEZpZWxkUGFyc2VyLlZBUklBQkxFX0xFTkdUSCwgMThdLAoJICAgICAgICBbJzM5MicsIEZpZWxkUGFyc2VyLlZBUklBQkxFX0xFTkdUSCwgMTVdLAoJICAgICAgICBbJzM5MycsIEZpZWxkUGFyc2VyLlZBUklBQkxFX0xFTkdUSCwgMThdLAoJICAgICAgICBbJzcwMycsIEZpZWxkUGFyc2VyLlZBUklBQkxFX0xFTkdUSCwgMzBdLAoJICAgIF07CgkgICAgRmllbGRQYXJzZXIuRk9VUl9ESUdJVF9EQVRBX0xFTkdUSCA9IFsKCSAgICAgICAgLy8gU2FtZSBmb3JtYXQgYXMgYWJvdmUKCSAgICAgICAgWyc3MDAxJywgMTNdLAoJICAgICAgICBbJzcwMDInLCBGaWVsZFBhcnNlci5WQVJJQUJMRV9MRU5HVEgsIDMwXSwKCSAgICAgICAgWyc3MDAzJywgMTBdLAoJICAgICAgICBbJzgwMDEnLCAxNF0sCgkgICAgICAgIFsnODAwMicsIEZpZWxkUGFyc2VyLlZBUklBQkxFX0xFTkdUSCwgMjBdLAoJICAgICAgICBbJzgwMDMnLCBGaWVsZFBhcnNlci5WQVJJQUJMRV9MRU5HVEgsIDMwXSwKCSAgICAgICAgWyc4MDA0JywgRmllbGRQYXJzZXIuVkFSSUFCTEVfTEVOR1RILCAzMF0sCgkgICAgICAgIFsnODAwNScsIDZdLAoJICAgICAgICBbJzgwMDYnLCAxOF0sCgkgICAgICAgIFsnODAwNycsIEZpZWxkUGFyc2VyLlZBUklBQkxFX0xFTkdUSCwgMzBdLAoJICAgICAgICBbJzgwMDgnLCBGaWVsZFBhcnNlci5WQVJJQUJMRV9MRU5HVEgsIDEyXSwKCSAgICAgICAgWyc4MDE4JywgMThdLAoJICAgICAgICBbJzgwMjAnLCBGaWVsZFBhcnNlci5WQVJJQUJMRV9MRU5HVEgsIDI1XSwKCSAgICAgICAgWyc4MTAwJywgNl0sCgkgICAgICAgIFsnODEwMScsIDEwXSwKCSAgICAgICAgWyc4MTAyJywgMl0sCgkgICAgICAgIFsnODExMCcsIEZpZWxkUGFyc2VyLlZBUklBQkxFX0xFTkdUSCwgNzBdLAoJICAgICAgICBbJzgyMDAnLCBGaWVsZFBhcnNlci5WQVJJQUJMRV9MRU5HVEgsIDcwXSwKCSAgICBdOwoJICAgIHJldHVybiBGaWVsZFBhcnNlcjsKCX0oKSk7CglleHBvcnRzLmRlZmF1bHQgPSBGaWVsZFBhcnNlcjsKCgl9KTsKCgl2YXIgR2VuZXJhbEFwcElkRGVjb2Rlcl8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCgoKCgoKCgoJdmFyIEdlbmVyYWxBcHBJZERlY29kZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgZnVuY3Rpb24gR2VuZXJhbEFwcElkRGVjb2RlcihpbmZvcm1hdGlvbikgewoJICAgICAgICB0aGlzLmJ1ZmZlciA9IG5ldyBTdHJpbmdCdWlsZGVyXzEuZGVmYXVsdCgpOwoJICAgICAgICB0aGlzLmluZm9ybWF0aW9uID0gaW5mb3JtYXRpb247CgkgICAgfQoJICAgIEdlbmVyYWxBcHBJZERlY29kZXIucHJvdG90eXBlLmRlY29kZUFsbENvZGVzID0gZnVuY3Rpb24gKGJ1ZmYsIGluaXRpYWxQb3NpdGlvbikgewoJICAgICAgICB2YXIgY3VycmVudFBvc2l0aW9uID0gaW5pdGlhbFBvc2l0aW9uOwoJICAgICAgICB2YXIgcmVtYWluaW5nID0gbnVsbDsKCSAgICAgICAgZG8gewoJICAgICAgICAgICAgdmFyIGluZm8gPSB0aGlzLmRlY29kZUdlbmVyYWxQdXJwb3NlRmllbGQoY3VycmVudFBvc2l0aW9uLCByZW1haW5pbmcpOwoJICAgICAgICAgICAgdmFyIHBhcnNlZEZpZWxkcyA9IEZpZWxkUGFyc2VyXzEuZGVmYXVsdC5wYXJzZUZpZWxkc0luR2VuZXJhbFB1cnBvc2UoaW5mby5nZXROZXdTdHJpbmcoKSk7CgkgICAgICAgICAgICBpZiAocGFyc2VkRmllbGRzICE9IG51bGwpIHsKCSAgICAgICAgICAgICAgICBidWZmLmFwcGVuZChwYXJzZWRGaWVsZHMpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgaWYgKGluZm8uaXNSZW1haW5pbmcoKSkgewoJICAgICAgICAgICAgICAgIHJlbWFpbmluZyA9ICcnICsgaW5mby5nZXRSZW1haW5pbmdWYWx1ZSgpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgcmVtYWluaW5nID0gbnVsbDsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGlmIChjdXJyZW50UG9zaXRpb24gPT09IGluZm8uZ2V0TmV3UG9zaXRpb24oKSkgeyAvLyBObyBzdGVwIGZvcndhcmQhCgkgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBjdXJyZW50UG9zaXRpb24gPSBpbmZvLmdldE5ld1Bvc2l0aW9uKCk7CgkgICAgICAgIH0gd2hpbGUgKHRydWUpOwoJICAgICAgICByZXR1cm4gYnVmZi50b1N0cmluZygpOwoJICAgIH07CgkgICAgR2VuZXJhbEFwcElkRGVjb2Rlci5wcm90b3R5cGUuaXNTdGlsbE51bWVyaWMgPSBmdW5jdGlvbiAocG9zKSB7CgkgICAgICAgIC8vIEl0J3MgbnVtZXJpYyBpZiBpdCBzdGlsbCBoYXMgNyBwb3NpdGlvbnMKCSAgICAgICAgLy8gYW5kIG9uZSBvZiB0aGUgZmlyc3QgNCBiaXRzIGlzICIxIi4KCSAgICAgICAgaWYgKHBvcyArIDcgPiB0aGlzLmluZm9ybWF0aW9uLmdldFNpemUoKSkgewoJICAgICAgICAgICAgcmV0dXJuIHBvcyArIDQgPD0gdGhpcy5pbmZvcm1hdGlvbi5nZXRTaXplKCk7CgkgICAgICAgIH0KCSAgICAgICAgZm9yICh2YXIgaSA9IHBvczsgaSA8IHBvcyArIDM7ICsraSkgewoJICAgICAgICAgICAgaWYgKHRoaXMuaW5mb3JtYXRpb24uZ2V0KGkpKSB7CgkgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHRoaXMuaW5mb3JtYXRpb24uZ2V0KHBvcyArIDMpOwoJICAgIH07CgkgICAgR2VuZXJhbEFwcElkRGVjb2Rlci5wcm90b3R5cGUuZGVjb2RlTnVtZXJpYyA9IGZ1bmN0aW9uIChwb3MpIHsKCSAgICAgICAgaWYgKHBvcyArIDcgPiB0aGlzLmluZm9ybWF0aW9uLmdldFNpemUoKSkgewoJICAgICAgICAgICAgdmFyIG51bWVyaWNfMSA9IHRoaXMuZXh0cmFjdE51bWVyaWNWYWx1ZUZyb21CaXRBcnJheShwb3MsIDQpOwoJICAgICAgICAgICAgaWYgKG51bWVyaWNfMSA9PT0gMCkgewoJICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRGVjb2RlZE51bWVyaWNfMS5kZWZhdWx0KHRoaXMuaW5mb3JtYXRpb24uZ2V0U2l6ZSgpLCBEZWNvZGVkTnVtZXJpY18xLmRlZmF1bHQuRk5DMSwgRGVjb2RlZE51bWVyaWNfMS5kZWZhdWx0LkZOQzEpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgcmV0dXJuIG5ldyBEZWNvZGVkTnVtZXJpY18xLmRlZmF1bHQodGhpcy5pbmZvcm1hdGlvbi5nZXRTaXplKCksIG51bWVyaWNfMSAtIDEsIERlY29kZWROdW1lcmljXzEuZGVmYXVsdC5GTkMxKTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgbnVtZXJpYyA9IHRoaXMuZXh0cmFjdE51bWVyaWNWYWx1ZUZyb21CaXRBcnJheShwb3MsIDcpOwoJICAgICAgICB2YXIgZGlnaXQxID0gKG51bWVyaWMgLSA4KSAvIDExOwoJICAgICAgICB2YXIgZGlnaXQyID0gKG51bWVyaWMgLSA4KSAlIDExOwoJICAgICAgICByZXR1cm4gbmV3IERlY29kZWROdW1lcmljXzEuZGVmYXVsdChwb3MgKyA3LCBkaWdpdDEsIGRpZ2l0Mik7CgkgICAgfTsKCSAgICBHZW5lcmFsQXBwSWREZWNvZGVyLnByb3RvdHlwZS5leHRyYWN0TnVtZXJpY1ZhbHVlRnJvbUJpdEFycmF5ID0gZnVuY3Rpb24gKHBvcywgYml0cykgewoJICAgICAgICByZXR1cm4gR2VuZXJhbEFwcElkRGVjb2Rlci5leHRyYWN0TnVtZXJpY1ZhbHVlRnJvbUJpdEFycmF5KHRoaXMuaW5mb3JtYXRpb24sIHBvcywgYml0cyk7CgkgICAgfTsKCSAgICBHZW5lcmFsQXBwSWREZWNvZGVyLmV4dHJhY3ROdW1lcmljVmFsdWVGcm9tQml0QXJyYXkgPSBmdW5jdGlvbiAoaW5mb3JtYXRpb24sIHBvcywgYml0cykgewoJICAgICAgICB2YXIgdmFsdWUgPSAwOwoJICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJpdHM7ICsraSkgewoJICAgICAgICAgICAgaWYgKGluZm9ybWF0aW9uLmdldChwb3MgKyBpKSkgewoJICAgICAgICAgICAgICAgIHZhbHVlIHw9IDEgPDwgKGJpdHMgLSBpIC0gMSk7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHZhbHVlOwoJICAgIH07CgkgICAgR2VuZXJhbEFwcElkRGVjb2Rlci5wcm90b3R5cGUuZGVjb2RlR2VuZXJhbFB1cnBvc2VGaWVsZCA9IGZ1bmN0aW9uIChwb3MsIHJlbWFpbmluZykgewoJICAgICAgICAvLyB0aGlzLmJ1ZmZlci5zZXRMZW5ndGgoMCk7CgkgICAgICAgIHRoaXMuYnVmZmVyLnNldExlbmd0aFRvWmVybygpOwoJICAgICAgICBpZiAocmVtYWluaW5nICE9IG51bGwpIHsKCSAgICAgICAgICAgIHRoaXMuYnVmZmVyLmFwcGVuZChyZW1haW5pbmcpOwoJICAgICAgICB9CgkgICAgICAgIHRoaXMuY3VycmVudC5zZXRQb3NpdGlvbihwb3MpOwoJICAgICAgICB2YXIgbGFzdERlY29kZWQgPSB0aGlzLnBhcnNlQmxvY2tzKCk7CgkgICAgICAgIGlmIChsYXN0RGVjb2RlZCAhPSBudWxsICYmIGxhc3REZWNvZGVkLmlzUmVtYWluaW5nKCkpIHsKCSAgICAgICAgICAgIHJldHVybiBuZXcgRGVjb2RlZEluZm9ybWF0aW9uXzEuZGVmYXVsdCh0aGlzLmN1cnJlbnQuZ2V0UG9zaXRpb24oKSwgdGhpcy5idWZmZXIudG9TdHJpbmcoKSwgbGFzdERlY29kZWQuZ2V0UmVtYWluaW5nVmFsdWUoKSk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIG5ldyBEZWNvZGVkSW5mb3JtYXRpb25fMS5kZWZhdWx0KHRoaXMuY3VycmVudC5nZXRQb3NpdGlvbigpLCB0aGlzLmJ1ZmZlci50b1N0cmluZygpKTsKCSAgICB9OwoJICAgIEdlbmVyYWxBcHBJZERlY29kZXIucHJvdG90eXBlLnBhcnNlQmxvY2tzID0gZnVuY3Rpb24gKCkgewoJICAgICAgICB2YXIgaXNGaW5pc2hlZDsKCSAgICAgICAgdmFyIHJlc3VsdDsKCSAgICAgICAgZG8gewoJICAgICAgICAgICAgdmFyIGluaXRpYWxQb3NpdGlvbiA9IHRoaXMuY3VycmVudC5nZXRQb3NpdGlvbigpOwoJICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudC5pc0FscGhhKCkpIHsKCSAgICAgICAgICAgICAgICByZXN1bHQgPSB0aGlzLnBhcnNlQWxwaGFCbG9jaygpOwoJICAgICAgICAgICAgICAgIGlzRmluaXNoZWQgPSByZXN1bHQuaXNGaW5pc2hlZCgpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5jdXJyZW50LmlzSXNvSWVjNjQ2KCkpIHsKCSAgICAgICAgICAgICAgICByZXN1bHQgPSB0aGlzLnBhcnNlSXNvSWVjNjQ2QmxvY2soKTsKCSAgICAgICAgICAgICAgICBpc0ZpbmlzaGVkID0gcmVzdWx0LmlzRmluaXNoZWQoKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGVsc2UgeyAvLyBpdCBtdXN0IGJlIG51bWVyaWMKCSAgICAgICAgICAgICAgICByZXN1bHQgPSB0aGlzLnBhcnNlTnVtZXJpY0Jsb2NrKCk7CgkgICAgICAgICAgICAgICAgaXNGaW5pc2hlZCA9IHJlc3VsdC5pc0ZpbmlzaGVkKCk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICB2YXIgcG9zaXRpb25DaGFuZ2VkID0gaW5pdGlhbFBvc2l0aW9uICE9PSB0aGlzLmN1cnJlbnQuZ2V0UG9zaXRpb24oKTsKCSAgICAgICAgICAgIGlmICghcG9zaXRpb25DaGFuZ2VkICYmICFpc0ZpbmlzaGVkKSB7CgkgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0gd2hpbGUgKCFpc0ZpbmlzaGVkKTsKCSAgICAgICAgcmV0dXJuIHJlc3VsdC5nZXREZWNvZGVkSW5mb3JtYXRpb24oKTsKCSAgICB9OwoJICAgIEdlbmVyYWxBcHBJZERlY29kZXIucHJvdG90eXBlLnBhcnNlTnVtZXJpY0Jsb2NrID0gZnVuY3Rpb24gKCkgewoJICAgICAgICB3aGlsZSAodGhpcy5pc1N0aWxsTnVtZXJpYyh0aGlzLmN1cnJlbnQuZ2V0UG9zaXRpb24oKSkpIHsKCSAgICAgICAgICAgIHZhciBudW1lcmljID0gdGhpcy5kZWNvZGVOdW1lcmljKHRoaXMuY3VycmVudC5nZXRQb3NpdGlvbigpKTsKCSAgICAgICAgICAgIHRoaXMuY3VycmVudC5zZXRQb3NpdGlvbihudW1lcmljLmdldE5ld1Bvc2l0aW9uKCkpOwoJICAgICAgICAgICAgaWYgKG51bWVyaWMuaXNGaXJzdERpZ2l0Rk5DMSgpKSB7CgkgICAgICAgICAgICAgICAgdmFyIGluZm9ybWF0aW9uID0gdm9pZCAwOwoJICAgICAgICAgICAgICAgIGlmIChudW1lcmljLmlzU2Vjb25kRGlnaXRGTkMxKCkpIHsKCSAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gPSBuZXcgRGVjb2RlZEluZm9ybWF0aW9uXzEuZGVmYXVsdCh0aGlzLmN1cnJlbnQuZ2V0UG9zaXRpb24oKSwgdGhpcy5idWZmZXIudG9TdHJpbmcoKSk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiA9IG5ldyBEZWNvZGVkSW5mb3JtYXRpb25fMS5kZWZhdWx0KHRoaXMuY3VycmVudC5nZXRQb3NpdGlvbigpLCB0aGlzLmJ1ZmZlci50b1N0cmluZygpLCBudW1lcmljLmdldFNlY29uZERpZ2l0KCkpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEJsb2NrUGFyc2VkUmVzdWx0XzEuZGVmYXVsdCh0cnVlLCBpbmZvcm1hdGlvbik7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICB0aGlzLmJ1ZmZlci5hcHBlbmQobnVtZXJpYy5nZXRGaXJzdERpZ2l0KCkpOwoJICAgICAgICAgICAgaWYgKG51bWVyaWMuaXNTZWNvbmREaWdpdEZOQzEoKSkgewoJICAgICAgICAgICAgICAgIHZhciBpbmZvcm1hdGlvbiA9IG5ldyBEZWNvZGVkSW5mb3JtYXRpb25fMS5kZWZhdWx0KHRoaXMuY3VycmVudC5nZXRQb3NpdGlvbigpLCB0aGlzLmJ1ZmZlci50b1N0cmluZygpKTsKCSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEJsb2NrUGFyc2VkUmVzdWx0XzEuZGVmYXVsdCh0cnVlLCBpbmZvcm1hdGlvbik7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICB0aGlzLmJ1ZmZlci5hcHBlbmQobnVtZXJpYy5nZXRTZWNvbmREaWdpdCgpKTsKCSAgICAgICAgfQoJICAgICAgICBpZiAodGhpcy5pc051bWVyaWNUb0FscGhhTnVtZXJpY0xhdGNoKHRoaXMuY3VycmVudC5nZXRQb3NpdGlvbigpKSkgewoJICAgICAgICAgICAgdGhpcy5jdXJyZW50LnNldEFscGhhKCk7CgkgICAgICAgICAgICB0aGlzLmN1cnJlbnQuaW5jcmVtZW50UG9zaXRpb24oNCk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIG5ldyBCbG9ja1BhcnNlZFJlc3VsdF8xLmRlZmF1bHQoZmFsc2UpOwoJICAgIH07CgkgICAgR2VuZXJhbEFwcElkRGVjb2Rlci5wcm90b3R5cGUucGFyc2VJc29JZWM2NDZCbG9jayA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgd2hpbGUgKHRoaXMuaXNTdGlsbElzb0llYzY0Nih0aGlzLmN1cnJlbnQuZ2V0UG9zaXRpb24oKSkpIHsKCSAgICAgICAgICAgIHZhciBpc28gPSB0aGlzLmRlY29kZUlzb0llYzY0Nih0aGlzLmN1cnJlbnQuZ2V0UG9zaXRpb24oKSk7CgkgICAgICAgICAgICB0aGlzLmN1cnJlbnQuc2V0UG9zaXRpb24oaXNvLmdldE5ld1Bvc2l0aW9uKCkpOwoJICAgICAgICAgICAgaWYgKGlzby5pc0ZOQzEoKSkgewoJICAgICAgICAgICAgICAgIHZhciBpbmZvcm1hdGlvbiA9IG5ldyBEZWNvZGVkSW5mb3JtYXRpb25fMS5kZWZhdWx0KHRoaXMuY3VycmVudC5nZXRQb3NpdGlvbigpLCB0aGlzLmJ1ZmZlci50b1N0cmluZygpKTsKCSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEJsb2NrUGFyc2VkUmVzdWx0XzEuZGVmYXVsdCh0cnVlLCBpbmZvcm1hdGlvbik7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICB0aGlzLmJ1ZmZlci5hcHBlbmQoaXNvLmdldFZhbHVlKCkpOwoJICAgICAgICB9CgkgICAgICAgIGlmICh0aGlzLmlzQWxwaGFPcjY0NlRvTnVtZXJpY0xhdGNoKHRoaXMuY3VycmVudC5nZXRQb3NpdGlvbigpKSkgewoJICAgICAgICAgICAgdGhpcy5jdXJyZW50LmluY3JlbWVudFBvc2l0aW9uKDMpOwoJICAgICAgICAgICAgdGhpcy5jdXJyZW50LnNldE51bWVyaWMoKTsKCSAgICAgICAgfQoJICAgICAgICBlbHNlIGlmICh0aGlzLmlzQWxwaGFUbzY0NlRvQWxwaGFMYXRjaCh0aGlzLmN1cnJlbnQuZ2V0UG9zaXRpb24oKSkpIHsKCSAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnQuZ2V0UG9zaXRpb24oKSArIDUgPCB0aGlzLmluZm9ybWF0aW9uLmdldFNpemUoKSkgewoJICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudC5pbmNyZW1lbnRQb3NpdGlvbig1KTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudC5zZXRQb3NpdGlvbih0aGlzLmluZm9ybWF0aW9uLmdldFNpemUoKSk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICB0aGlzLmN1cnJlbnQuc2V0QWxwaGEoKTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gbmV3IEJsb2NrUGFyc2VkUmVzdWx0XzEuZGVmYXVsdChmYWxzZSk7CgkgICAgfTsKCSAgICBHZW5lcmFsQXBwSWREZWNvZGVyLnByb3RvdHlwZS5wYXJzZUFscGhhQmxvY2sgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHdoaWxlICh0aGlzLmlzU3RpbGxBbHBoYSh0aGlzLmN1cnJlbnQuZ2V0UG9zaXRpb24oKSkpIHsKCSAgICAgICAgICAgIHZhciBhbHBoYSA9IHRoaXMuZGVjb2RlQWxwaGFudW1lcmljKHRoaXMuY3VycmVudC5nZXRQb3NpdGlvbigpKTsKCSAgICAgICAgICAgIHRoaXMuY3VycmVudC5zZXRQb3NpdGlvbihhbHBoYS5nZXROZXdQb3NpdGlvbigpKTsKCSAgICAgICAgICAgIGlmIChhbHBoYS5pc0ZOQzEoKSkgewoJICAgICAgICAgICAgICAgIHZhciBpbmZvcm1hdGlvbiA9IG5ldyBEZWNvZGVkSW5mb3JtYXRpb25fMS5kZWZhdWx0KHRoaXMuY3VycmVudC5nZXRQb3NpdGlvbigpLCB0aGlzLmJ1ZmZlci50b1N0cmluZygpKTsKCSAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEJsb2NrUGFyc2VkUmVzdWx0XzEuZGVmYXVsdCh0cnVlLCBpbmZvcm1hdGlvbik7IC8vIGVuZCBvZiB0aGUgY2hhciBibG9jawoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgdGhpcy5idWZmZXIuYXBwZW5kKGFscGhhLmdldFZhbHVlKCkpOwoJICAgICAgICB9CgkgICAgICAgIGlmICh0aGlzLmlzQWxwaGFPcjY0NlRvTnVtZXJpY0xhdGNoKHRoaXMuY3VycmVudC5nZXRQb3NpdGlvbigpKSkgewoJICAgICAgICAgICAgdGhpcy5jdXJyZW50LmluY3JlbWVudFBvc2l0aW9uKDMpOwoJICAgICAgICAgICAgdGhpcy5jdXJyZW50LnNldE51bWVyaWMoKTsKCSAgICAgICAgfQoJICAgICAgICBlbHNlIGlmICh0aGlzLmlzQWxwaGFUbzY0NlRvQWxwaGFMYXRjaCh0aGlzLmN1cnJlbnQuZ2V0UG9zaXRpb24oKSkpIHsKCSAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnQuZ2V0UG9zaXRpb24oKSArIDUgPCB0aGlzLmluZm9ybWF0aW9uLmdldFNpemUoKSkgewoJICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudC5pbmNyZW1lbnRQb3NpdGlvbig1KTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudC5zZXRQb3NpdGlvbih0aGlzLmluZm9ybWF0aW9uLmdldFNpemUoKSk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICB0aGlzLmN1cnJlbnQuc2V0SXNvSWVjNjQ2KCk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIG5ldyBCbG9ja1BhcnNlZFJlc3VsdF8xLmRlZmF1bHQoZmFsc2UpOwoJICAgIH07CgkgICAgR2VuZXJhbEFwcElkRGVjb2Rlci5wcm90b3R5cGUuaXNTdGlsbElzb0llYzY0NiA9IGZ1bmN0aW9uIChwb3MpIHsKCSAgICAgICAgaWYgKHBvcyArIDUgPiB0aGlzLmluZm9ybWF0aW9uLmdldFNpemUoKSkgewoJICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoJICAgICAgICB9CgkgICAgICAgIHZhciBmaXZlQml0VmFsdWUgPSB0aGlzLmV4dHJhY3ROdW1lcmljVmFsdWVGcm9tQml0QXJyYXkocG9zLCA1KTsKCSAgICAgICAgaWYgKGZpdmVCaXRWYWx1ZSA+PSA1ICYmIGZpdmVCaXRWYWx1ZSA8IDE2KSB7CgkgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKCSAgICAgICAgfQoJICAgICAgICBpZiAocG9zICsgNyA+IHRoaXMuaW5mb3JtYXRpb24uZ2V0U2l6ZSgpKSB7CgkgICAgICAgICAgICByZXR1cm4gZmFsc2U7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIHNldmVuQml0VmFsdWUgPSB0aGlzLmV4dHJhY3ROdW1lcmljVmFsdWVGcm9tQml0QXJyYXkocG9zLCA3KTsKCSAgICAgICAgaWYgKHNldmVuQml0VmFsdWUgPj0gNjQgJiYgc2V2ZW5CaXRWYWx1ZSA8IDExNikgewoJICAgICAgICAgICAgcmV0dXJuIHRydWU7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKHBvcyArIDggPiB0aGlzLmluZm9ybWF0aW9uLmdldFNpemUoKSkgewoJICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoJICAgICAgICB9CgkgICAgICAgIHZhciBlaWdodEJpdFZhbHVlID0gdGhpcy5leHRyYWN0TnVtZXJpY1ZhbHVlRnJvbUJpdEFycmF5KHBvcywgOCk7CgkgICAgICAgIHJldHVybiBlaWdodEJpdFZhbHVlID49IDIzMiAmJiBlaWdodEJpdFZhbHVlIDwgMjUzOwoJICAgIH07CgkgICAgR2VuZXJhbEFwcElkRGVjb2Rlci5wcm90b3R5cGUuZGVjb2RlSXNvSWVjNjQ2ID0gZnVuY3Rpb24gKHBvcykgewoJICAgICAgICB2YXIgZml2ZUJpdFZhbHVlID0gdGhpcy5leHRyYWN0TnVtZXJpY1ZhbHVlRnJvbUJpdEFycmF5KHBvcywgNSk7CgkgICAgICAgIGlmIChmaXZlQml0VmFsdWUgPT09IDE1KSB7CgkgICAgICAgICAgICByZXR1cm4gbmV3IERlY29kZWRDaGFyXzEuZGVmYXVsdChwb3MgKyA1LCBEZWNvZGVkQ2hhcl8xLmRlZmF1bHQuRk5DMSk7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKGZpdmVCaXRWYWx1ZSA+PSA1ICYmIGZpdmVCaXRWYWx1ZSA8IDE1KSB7CgkgICAgICAgICAgICByZXR1cm4gbmV3IERlY29kZWRDaGFyXzEuZGVmYXVsdChwb3MgKyA1LCAoJzAnICsgKGZpdmVCaXRWYWx1ZSAtIDUpKSk7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIHNldmVuQml0VmFsdWUgPSB0aGlzLmV4dHJhY3ROdW1lcmljVmFsdWVGcm9tQml0QXJyYXkocG9zLCA3KTsKCSAgICAgICAgaWYgKHNldmVuQml0VmFsdWUgPj0gNjQgJiYgc2V2ZW5CaXRWYWx1ZSA8IDkwKSB7CgkgICAgICAgICAgICByZXR1cm4gbmV3IERlY29kZWRDaGFyXzEuZGVmYXVsdChwb3MgKyA3LCAoJycgKyAoc2V2ZW5CaXRWYWx1ZSArIDEpKSk7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKHNldmVuQml0VmFsdWUgPj0gOTAgJiYgc2V2ZW5CaXRWYWx1ZSA8IDExNikgewoJICAgICAgICAgICAgcmV0dXJuIG5ldyBEZWNvZGVkQ2hhcl8xLmRlZmF1bHQocG9zICsgNywgKCcnICsgKHNldmVuQml0VmFsdWUgKyA3KSkpOwoJICAgICAgICB9CgkgICAgICAgIHZhciBlaWdodEJpdFZhbHVlID0gdGhpcy5leHRyYWN0TnVtZXJpY1ZhbHVlRnJvbUJpdEFycmF5KHBvcywgOCk7CgkgICAgICAgIHZhciBjOwoJICAgICAgICBzd2l0Y2ggKGVpZ2h0Qml0VmFsdWUpIHsKCSAgICAgICAgICAgIGNhc2UgMjMyOgoJICAgICAgICAgICAgICAgIGMgPSAnISc7CgkgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICBjYXNlIDIzMzoKCSAgICAgICAgICAgICAgICBjID0gJyInOwoJICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgY2FzZSAyMzQ6CgkgICAgICAgICAgICAgICAgYyA9ICclJzsKCSAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgIGNhc2UgMjM1OgoJICAgICAgICAgICAgICAgIGMgPSAnJic7CgkgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICBjYXNlIDIzNjoKCSAgICAgICAgICAgICAgICBjID0gJ1wnJzsKCSAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgIGNhc2UgMjM3OgoJICAgICAgICAgICAgICAgIGMgPSAnKCc7CgkgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICBjYXNlIDIzODoKCSAgICAgICAgICAgICAgICBjID0gJyknOwoJICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgY2FzZSAyMzk6CgkgICAgICAgICAgICAgICAgYyA9ICcqJzsKCSAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgIGNhc2UgMjQwOgoJICAgICAgICAgICAgICAgIGMgPSAnKyc7CgkgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICBjYXNlIDI0MToKCSAgICAgICAgICAgICAgICBjID0gJywnOwoJICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgY2FzZSAyNDI6CgkgICAgICAgICAgICAgICAgYyA9ICctJzsKCSAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgIGNhc2UgMjQzOgoJICAgICAgICAgICAgICAgIGMgPSAnLic7CgkgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICBjYXNlIDI0NDoKCSAgICAgICAgICAgICAgICBjID0gJy8nOwoJICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgY2FzZSAyNDU6CgkgICAgICAgICAgICAgICAgYyA9ICc6JzsKCSAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgIGNhc2UgMjQ2OgoJICAgICAgICAgICAgICAgIGMgPSAnOyc7CgkgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICBjYXNlIDI0NzoKCSAgICAgICAgICAgICAgICBjID0gJzwnOwoJICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgY2FzZSAyNDg6CgkgICAgICAgICAgICAgICAgYyA9ICc9JzsKCSAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgIGNhc2UgMjQ5OgoJICAgICAgICAgICAgICAgIGMgPSAnPic7CgkgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICBjYXNlIDI1MDoKCSAgICAgICAgICAgICAgICBjID0gJz8nOwoJICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgY2FzZSAyNTE6CgkgICAgICAgICAgICAgICAgYyA9ICdfJzsKCSAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgIGNhc2UgMjUyOgoJICAgICAgICAgICAgICAgIGMgPSAnICc7CgkgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICBkZWZhdWx0OgoJICAgICAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIG5ldyBEZWNvZGVkQ2hhcl8xLmRlZmF1bHQocG9zICsgOCwgYyk7CgkgICAgfTsKCSAgICBHZW5lcmFsQXBwSWREZWNvZGVyLnByb3RvdHlwZS5pc1N0aWxsQWxwaGEgPSBmdW5jdGlvbiAocG9zKSB7CgkgICAgICAgIGlmIChwb3MgKyA1ID4gdGhpcy5pbmZvcm1hdGlvbi5nZXRTaXplKCkpIHsKCSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKCSAgICAgICAgfQoJICAgICAgICAvLyBXZSBub3cgY2hlY2sgaWYgaXQncyBhIHZhbGlkIDUtYml0IHZhbHVlICgwLi45IGFuZCBGTkMxKQoJICAgICAgICB2YXIgZml2ZUJpdFZhbHVlID0gdGhpcy5leHRyYWN0TnVtZXJpY1ZhbHVlRnJvbUJpdEFycmF5KHBvcywgNSk7CgkgICAgICAgIGlmIChmaXZlQml0VmFsdWUgPj0gNSAmJiBmaXZlQml0VmFsdWUgPCAxNikgewoJICAgICAgICAgICAgcmV0dXJuIHRydWU7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKHBvcyArIDYgPiB0aGlzLmluZm9ybWF0aW9uLmdldFNpemUoKSkgewoJICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoJICAgICAgICB9CgkgICAgICAgIHZhciBzaXhCaXRWYWx1ZSA9IHRoaXMuZXh0cmFjdE51bWVyaWNWYWx1ZUZyb21CaXRBcnJheShwb3MsIDYpOwoJICAgICAgICByZXR1cm4gc2l4Qml0VmFsdWUgPj0gMTYgJiYgc2l4Qml0VmFsdWUgPCA2MzsgLy8gNjMgbm90IGluY2x1ZGVkCgkgICAgfTsKCSAgICBHZW5lcmFsQXBwSWREZWNvZGVyLnByb3RvdHlwZS5kZWNvZGVBbHBoYW51bWVyaWMgPSBmdW5jdGlvbiAocG9zKSB7CgkgICAgICAgIHZhciBmaXZlQml0VmFsdWUgPSB0aGlzLmV4dHJhY3ROdW1lcmljVmFsdWVGcm9tQml0QXJyYXkocG9zLCA1KTsKCSAgICAgICAgaWYgKGZpdmVCaXRWYWx1ZSA9PT0gMTUpIHsKCSAgICAgICAgICAgIHJldHVybiBuZXcgRGVjb2RlZENoYXJfMS5kZWZhdWx0KHBvcyArIDUsIERlY29kZWRDaGFyXzEuZGVmYXVsdC5GTkMxKTsKCSAgICAgICAgfQoJICAgICAgICBpZiAoZml2ZUJpdFZhbHVlID49IDUgJiYgZml2ZUJpdFZhbHVlIDwgMTUpIHsKCSAgICAgICAgICAgIHJldHVybiBuZXcgRGVjb2RlZENoYXJfMS5kZWZhdWx0KHBvcyArIDUsICgnMCcgKyAoZml2ZUJpdFZhbHVlIC0gNSkpKTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgc2l4Qml0VmFsdWUgPSB0aGlzLmV4dHJhY3ROdW1lcmljVmFsdWVGcm9tQml0QXJyYXkocG9zLCA2KTsKCSAgICAgICAgaWYgKHNpeEJpdFZhbHVlID49IDMyICYmIHNpeEJpdFZhbHVlIDwgNTgpIHsKCSAgICAgICAgICAgIHJldHVybiBuZXcgRGVjb2RlZENoYXJfMS5kZWZhdWx0KHBvcyArIDYsICgnJyArIChzaXhCaXRWYWx1ZSArIDMzKSkpOwoJICAgICAgICB9CgkgICAgICAgIHZhciBjOwoJICAgICAgICBzd2l0Y2ggKHNpeEJpdFZhbHVlKSB7CgkgICAgICAgICAgICBjYXNlIDU4OgoJICAgICAgICAgICAgICAgIGMgPSAnKic7CgkgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICBjYXNlIDU5OgoJICAgICAgICAgICAgICAgIGMgPSAnLCc7CgkgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICBjYXNlIDYwOgoJICAgICAgICAgICAgICAgIGMgPSAnLSc7CgkgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICBjYXNlIDYxOgoJICAgICAgICAgICAgICAgIGMgPSAnLic7CgkgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICBjYXNlIDYyOgoJICAgICAgICAgICAgICAgIGMgPSAnLyc7CgkgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICBkZWZhdWx0OgoJICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb25fMS5kZWZhdWx0KCdEZWNvZGluZyBpbnZhbGlkIGFscGhhbnVtZXJpYyB2YWx1ZTogJyArIHNpeEJpdFZhbHVlKTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gbmV3IERlY29kZWRDaGFyXzEuZGVmYXVsdChwb3MgKyA2LCBjKTsKCSAgICB9OwoJICAgIEdlbmVyYWxBcHBJZERlY29kZXIucHJvdG90eXBlLmlzQWxwaGFUbzY0NlRvQWxwaGFMYXRjaCA9IGZ1bmN0aW9uIChwb3MpIHsKCSAgICAgICAgaWYgKHBvcyArIDEgPiB0aGlzLmluZm9ybWF0aW9uLmdldFNpemUoKSkgewoJICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoJICAgICAgICB9CgkgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNSAmJiBpICsgcG9zIDwgdGhpcy5pbmZvcm1hdGlvbi5nZXRTaXplKCk7ICsraSkgewoJICAgICAgICAgICAgaWYgKGkgPT09IDIpIHsKCSAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaW5mb3JtYXRpb24uZ2V0KHBvcyArIDIpKSB7CgkgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlIGlmICh0aGlzLmluZm9ybWF0aW9uLmdldChwb3MgKyBpKSkgewoJICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gdHJ1ZTsKCSAgICB9OwoJICAgIEdlbmVyYWxBcHBJZERlY29kZXIucHJvdG90eXBlLmlzQWxwaGFPcjY0NlRvTnVtZXJpY0xhdGNoID0gZnVuY3Rpb24gKHBvcykgewoJICAgICAgICAvLyBOZXh0IGlzIGFscGhhbnVtZXJpYyBpZiB0aGVyZSBhcmUgMyBwb3NpdGlvbnMgYW5kIHRoZXkgYXJlIGFsbCB6ZXJvcwoJICAgICAgICBpZiAocG9zICsgMyA+IHRoaXMuaW5mb3JtYXRpb24uZ2V0U2l6ZSgpKSB7CgkgICAgICAgICAgICByZXR1cm4gZmFsc2U7CgkgICAgICAgIH0KCSAgICAgICAgZm9yICh2YXIgaSA9IHBvczsgaSA8IHBvcyArIDM7ICsraSkgewoJICAgICAgICAgICAgaWYgKHRoaXMuaW5mb3JtYXRpb24uZ2V0KGkpKSB7CgkgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHJldHVybiB0cnVlOwoJICAgIH07CgkgICAgR2VuZXJhbEFwcElkRGVjb2Rlci5wcm90b3R5cGUuaXNOdW1lcmljVG9BbHBoYU51bWVyaWNMYXRjaCA9IGZ1bmN0aW9uIChwb3MpIHsKCSAgICAgICAgLy8gTmV4dCBpcyBhbHBoYW51bWVyaWMgaWYgdGhlcmUgYXJlIDQgcG9zaXRpb25zIGFuZCB0aGV5IGFyZSBhbGwgemVyb3MsIG9yCgkgICAgICAgIC8vIGlmIHRoZXJlIGlzIGEgc3Vic2V0IG9mIHRoaXMganVzdCBiZWZvcmUgdGhlIGVuZCBvZiB0aGUgc3ltYm9sCgkgICAgICAgIGlmIChwb3MgKyAxID4gdGhpcy5pbmZvcm1hdGlvbi5nZXRTaXplKCkpIHsKCSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKCSAgICAgICAgfQoJICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQgJiYgaSArIHBvcyA8IHRoaXMuaW5mb3JtYXRpb24uZ2V0U2l6ZSgpOyArK2kpIHsKCSAgICAgICAgICAgIGlmICh0aGlzLmluZm9ybWF0aW9uLmdldChwb3MgKyBpKSkgewoJICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gdHJ1ZTsKCSAgICB9OwoJICAgIHJldHVybiBHZW5lcmFsQXBwSWREZWNvZGVyOwoJfSgpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IEdlbmVyYWxBcHBJZERlY29kZXI7CgoJfSk7CgoJdmFyIEFic3RyYWN0RXhwYW5kZWREZWNvZGVyXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoKCXZhciBBYnN0cmFjdEV4cGFuZGVkRGVjb2RlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBBYnN0cmFjdEV4cGFuZGVkRGVjb2RlcihpbmZvcm1hdGlvbikgewoJICAgICAgICB0aGlzLmluZm9ybWF0aW9uID0gaW5mb3JtYXRpb247CgkgICAgICAgIHRoaXMuZ2VuZXJhbERlY29kZXIgPSBuZXcgR2VuZXJhbEFwcElkRGVjb2Rlcl8xLmRlZmF1bHQoaW5mb3JtYXRpb24pOwoJICAgIH0KCSAgICBBYnN0cmFjdEV4cGFuZGVkRGVjb2Rlci5wcm90b3R5cGUuZ2V0SW5mb3JtYXRpb24gPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmluZm9ybWF0aW9uOwoJICAgIH07CgkgICAgQWJzdHJhY3RFeHBhbmRlZERlY29kZXIucHJvdG90eXBlLmdldEdlbmVyYWxEZWNvZGVyID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5nZW5lcmFsRGVjb2RlcjsKCSAgICB9OwoJICAgIHJldHVybiBBYnN0cmFjdEV4cGFuZGVkRGVjb2RlcjsKCX0oKSk7CglleHBvcnRzLmRlZmF1bHQgPSBBYnN0cmFjdEV4cGFuZGVkRGVjb2RlcjsKCgl9KTsKCgl2YXIgQUkwMWRlY29kZXJfMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCXZhciBfX2V4dGVuZHMgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkgewoJICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fAoJICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fAoJICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07CgkgICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgIH07CgkgICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfQoJICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7CgkgICAgfTsKCX0pKCk7CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoKCXZhciBBSTAxZGVjb2RlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHsKCSAgICBfX2V4dGVuZHMoQUkwMWRlY29kZXIsIF9zdXBlcik7CgkgICAgZnVuY3Rpb24gQUkwMWRlY29kZXIoaW5mb3JtYXRpb24pIHsKCSAgICAgICAgcmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsIGluZm9ybWF0aW9uKSB8fCB0aGlzOwoJICAgIH0KCSAgICBBSTAxZGVjb2Rlci5wcm90b3R5cGUuZW5jb2RlQ29tcHJlc3NlZEd0aW4gPSBmdW5jdGlvbiAoYnVmLCBjdXJyZW50UG9zKSB7CgkgICAgICAgIGJ1Zi5hcHBlbmQoJygwMSknKTsKCSAgICAgICAgdmFyIGluaXRpYWxQb3NpdGlvbiA9IGJ1Zi5sZW5ndGgoKTsKCSAgICAgICAgYnVmLmFwcGVuZCgnOScpOwoJICAgICAgICB0aGlzLmVuY29kZUNvbXByZXNzZWRHdGluV2l0aG91dEFJKGJ1ZiwgY3VycmVudFBvcywgaW5pdGlhbFBvc2l0aW9uKTsKCSAgICB9OwoJICAgIEFJMDFkZWNvZGVyLnByb3RvdHlwZS5lbmNvZGVDb21wcmVzc2VkR3RpbldpdGhvdXRBSSA9IGZ1bmN0aW9uIChidWYsIGN1cnJlbnRQb3MsIGluaXRpYWxCdWZmZXJQb3NpdGlvbikgewoJICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7ICsraSkgewoJICAgICAgICAgICAgdmFyIGN1cnJlbnRCbG9jayA9IHRoaXMuZ2V0R2VuZXJhbERlY29kZXIoKS5leHRyYWN0TnVtZXJpY1ZhbHVlRnJvbUJpdEFycmF5KGN1cnJlbnRQb3MgKyAxMCAqIGksIDEwKTsKCSAgICAgICAgICAgIGlmIChjdXJyZW50QmxvY2sgLyAxMDAgPT09IDApIHsKCSAgICAgICAgICAgICAgICBidWYuYXBwZW5kKCcwJyk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBpZiAoY3VycmVudEJsb2NrIC8gMTAgPT09IDApIHsKCSAgICAgICAgICAgICAgICBidWYuYXBwZW5kKCcwJyk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBidWYuYXBwZW5kKGN1cnJlbnRCbG9jayk7CgkgICAgICAgIH0KCSAgICAgICAgQUkwMWRlY29kZXIuYXBwZW5kQ2hlY2tEaWdpdChidWYsIGluaXRpYWxCdWZmZXJQb3NpdGlvbik7CgkgICAgfTsKCSAgICBBSTAxZGVjb2Rlci5hcHBlbmRDaGVja0RpZ2l0ID0gZnVuY3Rpb24gKGJ1ZiwgY3VycmVudFBvcykgewoJICAgICAgICB2YXIgY2hlY2tEaWdpdCA9IDA7CgkgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTM7IGkrKykgewoJICAgICAgICAgICAgLy8gbGV0IGRpZ2l0ID0gYnVmLmNoYXJBdChpICsgY3VycmVudFBvcykgLSAnMCc7CgkgICAgICAgICAgICAvLyBUbyBiZSBjaGVja2VkCgkgICAgICAgICAgICB2YXIgZGlnaXQgPSBidWYuY2hhckF0KGkgKyBjdXJyZW50UG9zKS5jaGFyQ29kZUF0KDApIC0gJzAnLmNoYXJDb2RlQXQoMCk7CgkgICAgICAgICAgICBjaGVja0RpZ2l0ICs9IChpICYgMHgwMSkgPT09IDAgPyAzICogZGlnaXQgOiBkaWdpdDsKCSAgICAgICAgfQoJICAgICAgICBjaGVja0RpZ2l0ID0gMTAgLSAoY2hlY2tEaWdpdCAlIDEwKTsKCSAgICAgICAgaWYgKGNoZWNrRGlnaXQgPT09IDEwKSB7CgkgICAgICAgICAgICBjaGVja0RpZ2l0ID0gMDsKCSAgICAgICAgfQoJICAgICAgICBidWYuYXBwZW5kKGNoZWNrRGlnaXQpOwoJICAgIH07CgkgICAgQUkwMWRlY29kZXIuR1RJTl9TSVpFID0gNDA7CgkgICAgcmV0dXJuIEFJMDFkZWNvZGVyOwoJfShBYnN0cmFjdEV4cGFuZGVkRGVjb2Rlcl8xLmRlZmF1bHQpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IEFJMDFkZWNvZGVyOwoKCX0pOwoKCXZhciBBSTAxQW5kT3RoZXJBSXNfMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCXZhciBfX2V4dGVuZHMgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkgewoJICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fAoJICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fAoJICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07CgkgICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgIH07CgkgICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfQoJICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7CgkgICAgfTsKCX0pKCk7CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoKCgl2YXIgQUkwMUFuZE90aGVyQUlzID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikgewoJICAgIF9fZXh0ZW5kcyhBSTAxQW5kT3RoZXJBSXMsIF9zdXBlcik7CgkgICAgLy8gdGhlIHNlY29uZCBvbmUgaXMgdGhlIGVuY29kYXRpb24gbWV0aG9kLCBhbmQgdGhlIG90aGVyIHR3byBhcmUgZm9yIHRoZSB2YXJpYWJsZSBsZW5ndGgKCSAgICBmdW5jdGlvbiBBSTAxQW5kT3RoZXJBSXMoaW5mb3JtYXRpb24pIHsKCSAgICAgICAgcmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsIGluZm9ybWF0aW9uKSB8fCB0aGlzOwoJICAgIH0KCSAgICBBSTAxQW5kT3RoZXJBSXMucHJvdG90eXBlLnBhcnNlSW5mb3JtYXRpb24gPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHZhciBidWZmID0gbmV3IFN0cmluZ0J1aWxkZXJfMS5kZWZhdWx0KCk7CgkgICAgICAgIGJ1ZmYuYXBwZW5kKCcoMDEpJyk7CgkgICAgICAgIHZhciBpbml0aWFsR3RpblBvc2l0aW9uID0gYnVmZi5sZW5ndGgoKTsKCSAgICAgICAgdmFyIGZpcnN0R3RpbkRpZ2l0ID0gdGhpcy5nZXRHZW5lcmFsRGVjb2RlcigpLmV4dHJhY3ROdW1lcmljVmFsdWVGcm9tQml0QXJyYXkoQUkwMUFuZE90aGVyQUlzLkhFQURFUl9TSVpFLCA0KTsKCSAgICAgICAgYnVmZi5hcHBlbmQoZmlyc3RHdGluRGlnaXQpOwoJICAgICAgICB0aGlzLmVuY29kZUNvbXByZXNzZWRHdGluV2l0aG91dEFJKGJ1ZmYsIEFJMDFBbmRPdGhlckFJcy5IRUFERVJfU0laRSArIDQsIGluaXRpYWxHdGluUG9zaXRpb24pOwoJICAgICAgICByZXR1cm4gdGhpcy5nZXRHZW5lcmFsRGVjb2RlcigpLmRlY29kZUFsbENvZGVzKGJ1ZmYsIEFJMDFBbmRPdGhlckFJcy5IRUFERVJfU0laRSArIDQ0KTsKCSAgICB9OwoJICAgIEFJMDFBbmRPdGhlckFJcy5IRUFERVJfU0laRSA9IDEgKyAxICsgMjsgLy8gZmlyc3QgYml0IGVuY29kZXMgdGhlIGxpbmthZ2UgZmxhZywKCSAgICByZXR1cm4gQUkwMUFuZE90aGVyQUlzOwoJfShBSTAxZGVjb2Rlcl8xLmRlZmF1bHQpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IEFJMDFBbmRPdGhlckFJczsKCgl9KTsKCgl2YXIgQW55QUlEZWNvZGVyXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7Cgl2YXIgX19leHRlbmRzID0gKGNvbW1vbmpzR2xvYmFsICYmIGNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHsKCSAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwKCSAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHwKCSAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9OwoJICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICB9OwoJICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH0KCSAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpOwoJICAgIH07Cgl9KSgpOwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCgoJdmFyIEFueUFJRGVjb2RlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHsKCSAgICBfX2V4dGVuZHMoQW55QUlEZWNvZGVyLCBfc3VwZXIpOwoJICAgIGZ1bmN0aW9uIEFueUFJRGVjb2RlcihpbmZvcm1hdGlvbikgewoJICAgICAgICByZXR1cm4gX3N1cGVyLmNhbGwodGhpcywgaW5mb3JtYXRpb24pIHx8IHRoaXM7CgkgICAgfQoJICAgIEFueUFJRGVjb2Rlci5wcm90b3R5cGUucGFyc2VJbmZvcm1hdGlvbiA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgdmFyIGJ1ZiA9IG5ldyBTdHJpbmdCdWlsZGVyXzEuZGVmYXVsdCgpOwoJICAgICAgICByZXR1cm4gdGhpcy5nZXRHZW5lcmFsRGVjb2RlcigpLmRlY29kZUFsbENvZGVzKGJ1ZiwgQW55QUlEZWNvZGVyLkhFQURFUl9TSVpFKTsKCSAgICB9OwoJICAgIEFueUFJRGVjb2Rlci5IRUFERVJfU0laRSA9IDIgKyAxICsgMjsKCSAgICByZXR1cm4gQW55QUlEZWNvZGVyOwoJfShBYnN0cmFjdEV4cGFuZGVkRGVjb2Rlcl8xLmRlZmF1bHQpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IEFueUFJRGVjb2RlcjsKCgl9KTsKCgl2YXIgQUkwMXdlaWdodERlY29kZXJfMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCXZhciBfX2V4dGVuZHMgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkgewoJICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fAoJICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fAoJICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07CgkgICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgIH07CgkgICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfQoJICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7CgkgICAgfTsKCX0pKCk7CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoKCXZhciBBSTAxd2VpZ2h0RGVjb2RlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHsKCSAgICBfX2V4dGVuZHMoQUkwMXdlaWdodERlY29kZXIsIF9zdXBlcik7CgkgICAgZnVuY3Rpb24gQUkwMXdlaWdodERlY29kZXIoaW5mb3JtYXRpb24pIHsKCSAgICAgICAgcmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsIGluZm9ybWF0aW9uKSB8fCB0aGlzOwoJICAgIH0KCSAgICBBSTAxd2VpZ2h0RGVjb2Rlci5wcm90b3R5cGUuZW5jb2RlQ29tcHJlc3NlZFdlaWdodCA9IGZ1bmN0aW9uIChidWYsIGN1cnJlbnRQb3MsIHdlaWdodFNpemUpIHsKCSAgICAgICAgdmFyIG9yaWdpbmFsV2VpZ2h0TnVtZXJpYyA9IHRoaXMuZ2V0R2VuZXJhbERlY29kZXIoKS5leHRyYWN0TnVtZXJpY1ZhbHVlRnJvbUJpdEFycmF5KGN1cnJlbnRQb3MsIHdlaWdodFNpemUpOwoJICAgICAgICB0aGlzLmFkZFdlaWdodENvZGUoYnVmLCBvcmlnaW5hbFdlaWdodE51bWVyaWMpOwoJICAgICAgICB2YXIgd2VpZ2h0TnVtZXJpYyA9IHRoaXMuY2hlY2tXZWlnaHQob3JpZ2luYWxXZWlnaHROdW1lcmljKTsKCSAgICAgICAgdmFyIGN1cnJlbnREaXZpc29yID0gMTAwMDAwOwoJICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDU7ICsraSkgewoJICAgICAgICAgICAgaWYgKHdlaWdodE51bWVyaWMgLyBjdXJyZW50RGl2aXNvciA9PT0gMCkgewoJICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoJzAnKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGN1cnJlbnREaXZpc29yIC89IDEwOwoJICAgICAgICB9CgkgICAgICAgIGJ1Zi5hcHBlbmQod2VpZ2h0TnVtZXJpYyk7CgkgICAgfTsKCSAgICByZXR1cm4gQUkwMXdlaWdodERlY29kZXI7Cgl9KEFJMDFkZWNvZGVyXzEuZGVmYXVsdCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gQUkwMXdlaWdodERlY29kZXI7CgoJfSk7CgoJdmFyIEFJMDEzeDB4RGVjb2Rlcl8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJdmFyIF9fZXh0ZW5kcyA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7CgkgICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8CgkgICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8CgkgICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTsKCSAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgfTsKCSAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9CgkgICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTsKCSAgICB9OwoJfSkoKTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgoKCgl2YXIgQUkwMTN4MHhEZWNvZGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikgewoJICAgIF9fZXh0ZW5kcyhBSTAxM3gweERlY29kZXIsIF9zdXBlcik7CgkgICAgZnVuY3Rpb24gQUkwMTN4MHhEZWNvZGVyKGluZm9ybWF0aW9uKSB7CgkgICAgICAgIHJldHVybiBfc3VwZXIuY2FsbCh0aGlzLCBpbmZvcm1hdGlvbikgfHwgdGhpczsKCSAgICB9CgkgICAgQUkwMTN4MHhEZWNvZGVyLnByb3RvdHlwZS5wYXJzZUluZm9ybWF0aW9uID0gZnVuY3Rpb24gKCkgewoJICAgICAgICBpZiAodGhpcy5nZXRJbmZvcm1hdGlvbigpLmdldFNpemUoKSAhPSBBSTAxM3gweERlY29kZXIuSEVBREVSX1NJWkUgKyBBSTAxd2VpZ2h0RGVjb2Rlcl8xLmRlZmF1bHQuR1RJTl9TSVpFICsgQUkwMTN4MHhEZWNvZGVyLldFSUdIVF9TSVpFKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGJ1ZiA9IG5ldyBTdHJpbmdCdWlsZGVyXzEuZGVmYXVsdCgpOwoJICAgICAgICB0aGlzLmVuY29kZUNvbXByZXNzZWRHdGluKGJ1ZiwgQUkwMTN4MHhEZWNvZGVyLkhFQURFUl9TSVpFKTsKCSAgICAgICAgdGhpcy5lbmNvZGVDb21wcmVzc2VkV2VpZ2h0KGJ1ZiwgQUkwMTN4MHhEZWNvZGVyLkhFQURFUl9TSVpFICsgQUkwMXdlaWdodERlY29kZXJfMS5kZWZhdWx0LkdUSU5fU0laRSwgQUkwMTN4MHhEZWNvZGVyLldFSUdIVF9TSVpFKTsKCSAgICAgICAgcmV0dXJuIGJ1Zi50b1N0cmluZygpOwoJICAgIH07CgkgICAgQUkwMTN4MHhEZWNvZGVyLkhFQURFUl9TSVpFID0gNCArIDE7CgkgICAgQUkwMTN4MHhEZWNvZGVyLldFSUdIVF9TSVpFID0gMTU7CgkgICAgcmV0dXJuIEFJMDEzeDB4RGVjb2RlcjsKCX0oQUkwMXdlaWdodERlY29kZXJfMS5kZWZhdWx0KSk7CglleHBvcnRzLmRlZmF1bHQgPSBBSTAxM3gweERlY29kZXI7CgoJfSk7CgoJdmFyIEFJMDEzMTAzZGVjb2Rlcl8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJdmFyIF9fZXh0ZW5kcyA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7CgkgICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8CgkgICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8CgkgICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTsKCSAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgfTsKCSAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9CgkgICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTsKCSAgICB9OwoJfSkoKTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgoJdmFyIEFJMDEzMTAzZGVjb2RlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHsKCSAgICBfX2V4dGVuZHMoQUkwMTMxMDNkZWNvZGVyLCBfc3VwZXIpOwoJICAgIGZ1bmN0aW9uIEFJMDEzMTAzZGVjb2RlcihpbmZvcm1hdGlvbikgewoJICAgICAgICByZXR1cm4gX3N1cGVyLmNhbGwodGhpcywgaW5mb3JtYXRpb24pIHx8IHRoaXM7CgkgICAgfQoJICAgIEFJMDEzMTAzZGVjb2Rlci5wcm90b3R5cGUuYWRkV2VpZ2h0Q29kZSA9IGZ1bmN0aW9uIChidWYsIHdlaWdodCkgewoJICAgICAgICBidWYuYXBwZW5kKCcoMzEwMyknKTsKCSAgICB9OwoJICAgIEFJMDEzMTAzZGVjb2Rlci5wcm90b3R5cGUuY2hlY2tXZWlnaHQgPSBmdW5jdGlvbiAod2VpZ2h0KSB7CgkgICAgICAgIHJldHVybiB3ZWlnaHQ7CgkgICAgfTsKCSAgICByZXR1cm4gQUkwMTMxMDNkZWNvZGVyOwoJfShBSTAxM3gweERlY29kZXJfMS5kZWZhdWx0KSk7CglleHBvcnRzLmRlZmF1bHQgPSBBSTAxMzEwM2RlY29kZXI7CgoJfSk7CgoJdmFyIEFJMDEzMjB4RGVjb2Rlcl8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJdmFyIF9fZXh0ZW5kcyA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7CgkgICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8CgkgICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8CgkgICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTsKCSAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgfTsKCSAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9CgkgICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTsKCSAgICB9OwoJfSkoKTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgoJdmFyIEFJMDEzMjB4RGVjb2RlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHsKCSAgICBfX2V4dGVuZHMoQUkwMTMyMHhEZWNvZGVyLCBfc3VwZXIpOwoJICAgIGZ1bmN0aW9uIEFJMDEzMjB4RGVjb2RlcihpbmZvcm1hdGlvbikgewoJICAgICAgICByZXR1cm4gX3N1cGVyLmNhbGwodGhpcywgaW5mb3JtYXRpb24pIHx8IHRoaXM7CgkgICAgfQoJICAgIEFJMDEzMjB4RGVjb2Rlci5wcm90b3R5cGUuYWRkV2VpZ2h0Q29kZSA9IGZ1bmN0aW9uIChidWYsIHdlaWdodCkgewoJICAgICAgICBpZiAod2VpZ2h0IDwgMTAwMDApIHsKCSAgICAgICAgICAgIGJ1Zi5hcHBlbmQoJygzMjAyKScpOwoJICAgICAgICB9CgkgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgYnVmLmFwcGVuZCgnKDMyMDMpJyk7CgkgICAgICAgIH0KCSAgICB9OwoJICAgIEFJMDEzMjB4RGVjb2Rlci5wcm90b3R5cGUuY2hlY2tXZWlnaHQgPSBmdW5jdGlvbiAod2VpZ2h0KSB7CgkgICAgICAgIGlmICh3ZWlnaHQgPCAxMDAwMCkgewoJICAgICAgICAgICAgcmV0dXJuIHdlaWdodDsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gd2VpZ2h0IC0gMTAwMDA7CgkgICAgfTsKCSAgICByZXR1cm4gQUkwMTMyMHhEZWNvZGVyOwoJfShBSTAxM3gweERlY29kZXJfMS5kZWZhdWx0KSk7CglleHBvcnRzLmRlZmF1bHQgPSBBSTAxMzIweERlY29kZXI7CgoJfSk7CgoJdmFyIEFJMDEzOTJ4RGVjb2Rlcl8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJdmFyIF9fZXh0ZW5kcyA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7CgkgICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8CgkgICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8CgkgICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTsKCSAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgfTsKCSAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9CgkgICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTsKCSAgICB9OwoJfSkoKTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgoKCgl2YXIgQUkwMTM5MnhEZWNvZGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikgewoJICAgIF9fZXh0ZW5kcyhBSTAxMzkyeERlY29kZXIsIF9zdXBlcik7CgkgICAgZnVuY3Rpb24gQUkwMTM5MnhEZWNvZGVyKGluZm9ybWF0aW9uKSB7CgkgICAgICAgIHJldHVybiBfc3VwZXIuY2FsbCh0aGlzLCBpbmZvcm1hdGlvbikgfHwgdGhpczsKCSAgICB9CgkgICAgQUkwMTM5MnhEZWNvZGVyLnByb3RvdHlwZS5wYXJzZUluZm9ybWF0aW9uID0gZnVuY3Rpb24gKCkgewoJICAgICAgICBpZiAodGhpcy5nZXRJbmZvcm1hdGlvbigpLmdldFNpemUoKSA8IEFJMDEzOTJ4RGVjb2Rlci5IRUFERVJfU0laRSArIEFJMDFkZWNvZGVyXzEuZGVmYXVsdC5HVElOX1NJWkUpIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgYnVmID0gbmV3IFN0cmluZ0J1aWxkZXJfMS5kZWZhdWx0KCk7CgkgICAgICAgIHRoaXMuZW5jb2RlQ29tcHJlc3NlZEd0aW4oYnVmLCBBSTAxMzkyeERlY29kZXIuSEVBREVSX1NJWkUpOwoJICAgICAgICB2YXIgbGFzdEFJZGlnaXQgPSB0aGlzLmdldEdlbmVyYWxEZWNvZGVyKCkuZXh0cmFjdE51bWVyaWNWYWx1ZUZyb21CaXRBcnJheShBSTAxMzkyeERlY29kZXIuSEVBREVSX1NJWkUgKyBBSTAxZGVjb2Rlcl8xLmRlZmF1bHQuR1RJTl9TSVpFLCBBSTAxMzkyeERlY29kZXIuTEFTVF9ESUdJVF9TSVpFKTsKCSAgICAgICAgYnVmLmFwcGVuZCgnKDM5MicpOwoJICAgICAgICBidWYuYXBwZW5kKGxhc3RBSWRpZ2l0KTsKCSAgICAgICAgYnVmLmFwcGVuZCgnKScpOwoJICAgICAgICB2YXIgZGVjb2RlZEluZm9ybWF0aW9uID0gdGhpcy5nZXRHZW5lcmFsRGVjb2RlcigpLmRlY29kZUdlbmVyYWxQdXJwb3NlRmllbGQoQUkwMTM5MnhEZWNvZGVyLkhFQURFUl9TSVpFICsgQUkwMWRlY29kZXJfMS5kZWZhdWx0LkdUSU5fU0laRSArIEFJMDEzOTJ4RGVjb2Rlci5MQVNUX0RJR0lUX1NJWkUsIG51bGwpOwoJICAgICAgICBidWYuYXBwZW5kKGRlY29kZWRJbmZvcm1hdGlvbi5nZXROZXdTdHJpbmcoKSk7CgkgICAgICAgIHJldHVybiBidWYudG9TdHJpbmcoKTsKCSAgICB9OwoJICAgIEFJMDEzOTJ4RGVjb2Rlci5IRUFERVJfU0laRSA9IDUgKyAxICsgMjsKCSAgICBBSTAxMzkyeERlY29kZXIuTEFTVF9ESUdJVF9TSVpFID0gMjsKCSAgICByZXR1cm4gQUkwMTM5MnhEZWNvZGVyOwoJfShBSTAxZGVjb2Rlcl8xLmRlZmF1bHQpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IEFJMDEzOTJ4RGVjb2RlcjsKCgl9KTsKCgl2YXIgQUkwMTM5M3hEZWNvZGVyXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7Cgl2YXIgX19leHRlbmRzID0gKGNvbW1vbmpzR2xvYmFsICYmIGNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHsKCSAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwKCSAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHwKCSAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9OwoJICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICB9OwoJICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH0KCSAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpOwoJICAgIH07Cgl9KSgpOwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCgoKCXZhciBBSTAxMzkzeERlY29kZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7CgkgICAgX19leHRlbmRzKEFJMDEzOTN4RGVjb2RlciwgX3N1cGVyKTsKCSAgICBmdW5jdGlvbiBBSTAxMzkzeERlY29kZXIoaW5mb3JtYXRpb24pIHsKCSAgICAgICAgcmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsIGluZm9ybWF0aW9uKSB8fCB0aGlzOwoJICAgIH0KCSAgICBBSTAxMzkzeERlY29kZXIucHJvdG90eXBlLnBhcnNlSW5mb3JtYXRpb24gPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIGlmICh0aGlzLmdldEluZm9ybWF0aW9uKCkuZ2V0U2l6ZSgpIDwgQUkwMTM5M3hEZWNvZGVyLkhFQURFUl9TSVpFICsgQUkwMWRlY29kZXJfMS5kZWZhdWx0LkdUSU5fU0laRSkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgICAgIHZhciBidWYgPSBuZXcgU3RyaW5nQnVpbGRlcl8xLmRlZmF1bHQoKTsKCSAgICAgICAgdGhpcy5lbmNvZGVDb21wcmVzc2VkR3RpbihidWYsIEFJMDEzOTN4RGVjb2Rlci5IRUFERVJfU0laRSk7CgkgICAgICAgIHZhciBsYXN0QUlkaWdpdCA9IHRoaXMuZ2V0R2VuZXJhbERlY29kZXIoKS5leHRyYWN0TnVtZXJpY1ZhbHVlRnJvbUJpdEFycmF5KEFJMDEzOTN4RGVjb2Rlci5IRUFERVJfU0laRSArIEFJMDFkZWNvZGVyXzEuZGVmYXVsdC5HVElOX1NJWkUsIEFJMDEzOTN4RGVjb2Rlci5MQVNUX0RJR0lUX1NJWkUpOwoJICAgICAgICBidWYuYXBwZW5kKCcoMzkzJyk7CgkgICAgICAgIGJ1Zi5hcHBlbmQobGFzdEFJZGlnaXQpOwoJICAgICAgICBidWYuYXBwZW5kKCcpJyk7CgkgICAgICAgIHZhciBmaXJzdFRocmVlRGlnaXRzID0gdGhpcy5nZXRHZW5lcmFsRGVjb2RlcigpLmV4dHJhY3ROdW1lcmljVmFsdWVGcm9tQml0QXJyYXkoQUkwMTM5M3hEZWNvZGVyLkhFQURFUl9TSVpFICsgQUkwMWRlY29kZXJfMS5kZWZhdWx0LkdUSU5fU0laRSArIEFJMDEzOTN4RGVjb2Rlci5MQVNUX0RJR0lUX1NJWkUsIEFJMDEzOTN4RGVjb2Rlci5GSVJTVF9USFJFRV9ESUdJVFNfU0laRSk7CgkgICAgICAgIGlmIChmaXJzdFRocmVlRGlnaXRzIC8gMTAwID09IDApIHsKCSAgICAgICAgICAgIGJ1Zi5hcHBlbmQoJzAnKTsKCSAgICAgICAgfQoJICAgICAgICBpZiAoZmlyc3RUaHJlZURpZ2l0cyAvIDEwID09IDApIHsKCSAgICAgICAgICAgIGJ1Zi5hcHBlbmQoJzAnKTsKCSAgICAgICAgfQoJICAgICAgICBidWYuYXBwZW5kKGZpcnN0VGhyZWVEaWdpdHMpOwoJICAgICAgICB2YXIgZ2VuZXJhbEluZm9ybWF0aW9uID0gdGhpcy5nZXRHZW5lcmFsRGVjb2RlcigpLmRlY29kZUdlbmVyYWxQdXJwb3NlRmllbGQoQUkwMTM5M3hEZWNvZGVyLkhFQURFUl9TSVpFICsgQUkwMWRlY29kZXJfMS5kZWZhdWx0LkdUSU5fU0laRSArIEFJMDEzOTN4RGVjb2Rlci5MQVNUX0RJR0lUX1NJWkUgKyBBSTAxMzkzeERlY29kZXIuRklSU1RfVEhSRUVfRElHSVRTX1NJWkUsIG51bGwpOwoJICAgICAgICBidWYuYXBwZW5kKGdlbmVyYWxJbmZvcm1hdGlvbi5nZXROZXdTdHJpbmcoKSk7CgkgICAgICAgIHJldHVybiBidWYudG9TdHJpbmcoKTsKCSAgICB9OwoJICAgIEFJMDEzOTN4RGVjb2Rlci5IRUFERVJfU0laRSA9IDUgKyAxICsgMjsKCSAgICBBSTAxMzkzeERlY29kZXIuTEFTVF9ESUdJVF9TSVpFID0gMjsKCSAgICBBSTAxMzkzeERlY29kZXIuRklSU1RfVEhSRUVfRElHSVRTX1NJWkUgPSAxMDsKCSAgICByZXR1cm4gQUkwMTM5M3hEZWNvZGVyOwoJfShBSTAxZGVjb2Rlcl8xLmRlZmF1bHQpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IEFJMDEzOTN4RGVjb2RlcjsKCgl9KTsKCgl2YXIgQUkwMTN4MHgxeERlY29kZXJfMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCXZhciBfX2V4dGVuZHMgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkgewoJICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fAoJICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fAoJICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07CgkgICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgIH07CgkgICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfQoJICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7CgkgICAgfTsKCX0pKCk7CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoKCgoJdmFyIEFJMDEzeDB4MXhEZWNvZGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikgewoJICAgIF9fZXh0ZW5kcyhBSTAxM3gweDF4RGVjb2RlciwgX3N1cGVyKTsKCSAgICBmdW5jdGlvbiBBSTAxM3gweDF4RGVjb2RlcihpbmZvcm1hdGlvbiwgZmlyc3RBSWRpZ2l0cywgZGF0ZUNvZGUpIHsKCSAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgaW5mb3JtYXRpb24pIHx8IHRoaXM7CgkgICAgICAgIF90aGlzLmRhdGVDb2RlID0gZGF0ZUNvZGU7CgkgICAgICAgIF90aGlzLmZpcnN0QUlkaWdpdHMgPSBmaXJzdEFJZGlnaXRzOwoJICAgICAgICByZXR1cm4gX3RoaXM7CgkgICAgfQoJICAgIEFJMDEzeDB4MXhEZWNvZGVyLnByb3RvdHlwZS5wYXJzZUluZm9ybWF0aW9uID0gZnVuY3Rpb24gKCkgewoJICAgICAgICBpZiAodGhpcy5nZXRJbmZvcm1hdGlvbigpLmdldFNpemUoKSAhPSBBSTAxM3gweDF4RGVjb2Rlci5IRUFERVJfU0laRSArIEFJMDEzeDB4MXhEZWNvZGVyLkdUSU5fU0laRSArIEFJMDEzeDB4MXhEZWNvZGVyLldFSUdIVF9TSVpFICsgQUkwMTN4MHgxeERlY29kZXIuREFURV9TSVpFKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGJ1ZiA9IG5ldyBTdHJpbmdCdWlsZGVyXzEuZGVmYXVsdCgpOwoJICAgICAgICB0aGlzLmVuY29kZUNvbXByZXNzZWRHdGluKGJ1ZiwgQUkwMTN4MHgxeERlY29kZXIuSEVBREVSX1NJWkUpOwoJICAgICAgICB0aGlzLmVuY29kZUNvbXByZXNzZWRXZWlnaHQoYnVmLCBBSTAxM3gweDF4RGVjb2Rlci5IRUFERVJfU0laRSArIEFJMDEzeDB4MXhEZWNvZGVyLkdUSU5fU0laRSwgQUkwMTN4MHgxeERlY29kZXIuV0VJR0hUX1NJWkUpOwoJICAgICAgICB0aGlzLmVuY29kZUNvbXByZXNzZWREYXRlKGJ1ZiwgQUkwMTN4MHgxeERlY29kZXIuSEVBREVSX1NJWkUgKyBBSTAxM3gweDF4RGVjb2Rlci5HVElOX1NJWkUgKyBBSTAxM3gweDF4RGVjb2Rlci5XRUlHSFRfU0laRSk7CgkgICAgICAgIHJldHVybiBidWYudG9TdHJpbmcoKTsKCSAgICB9OwoJICAgIEFJMDEzeDB4MXhEZWNvZGVyLnByb3RvdHlwZS5lbmNvZGVDb21wcmVzc2VkRGF0ZSA9IGZ1bmN0aW9uIChidWYsIGN1cnJlbnRQb3MpIHsKCSAgICAgICAgdmFyIG51bWVyaWNEYXRlID0gdGhpcy5nZXRHZW5lcmFsRGVjb2RlcigpLmV4dHJhY3ROdW1lcmljVmFsdWVGcm9tQml0QXJyYXkoY3VycmVudFBvcywgQUkwMTN4MHgxeERlY29kZXIuREFURV9TSVpFKTsKCSAgICAgICAgaWYgKG51bWVyaWNEYXRlID09IDM4NDAwKSB7CgkgICAgICAgICAgICByZXR1cm47CgkgICAgICAgIH0KCSAgICAgICAgYnVmLmFwcGVuZCgnKCcpOwoJICAgICAgICBidWYuYXBwZW5kKHRoaXMuZGF0ZUNvZGUpOwoJICAgICAgICBidWYuYXBwZW5kKCcpJyk7CgkgICAgICAgIHZhciBkYXkgPSBudW1lcmljRGF0ZSAlIDMyOwoJICAgICAgICBudW1lcmljRGF0ZSAvPSAzMjsKCSAgICAgICAgdmFyIG1vbnRoID0gbnVtZXJpY0RhdGUgJSAxMiArIDE7CgkgICAgICAgIG51bWVyaWNEYXRlIC89IDEyOwoJICAgICAgICB2YXIgeWVhciA9IG51bWVyaWNEYXRlOwoJICAgICAgICBpZiAoeWVhciAvIDEwID09IDApIHsKCSAgICAgICAgICAgIGJ1Zi5hcHBlbmQoJzAnKTsKCSAgICAgICAgfQoJICAgICAgICBidWYuYXBwZW5kKHllYXIpOwoJICAgICAgICBpZiAobW9udGggLyAxMCA9PSAwKSB7CgkgICAgICAgICAgICBidWYuYXBwZW5kKCcwJyk7CgkgICAgICAgIH0KCSAgICAgICAgYnVmLmFwcGVuZChtb250aCk7CgkgICAgICAgIGlmIChkYXkgLyAxMCA9PSAwKSB7CgkgICAgICAgICAgICBidWYuYXBwZW5kKCcwJyk7CgkgICAgICAgIH0KCSAgICAgICAgYnVmLmFwcGVuZChkYXkpOwoJICAgIH07CgkgICAgQUkwMTN4MHgxeERlY29kZXIucHJvdG90eXBlLmFkZFdlaWdodENvZGUgPSBmdW5jdGlvbiAoYnVmLCB3ZWlnaHQpIHsKCSAgICAgICAgYnVmLmFwcGVuZCgnKCcpOwoJICAgICAgICBidWYuYXBwZW5kKHRoaXMuZmlyc3RBSWRpZ2l0cyk7CgkgICAgICAgIGJ1Zi5hcHBlbmQod2VpZ2h0IC8gMTAwMDAwKTsKCSAgICAgICAgYnVmLmFwcGVuZCgnKScpOwoJICAgIH07CgkgICAgQUkwMTN4MHgxeERlY29kZXIucHJvdG90eXBlLmNoZWNrV2VpZ2h0ID0gZnVuY3Rpb24gKHdlaWdodCkgewoJICAgICAgICByZXR1cm4gd2VpZ2h0ICUgMTAwMDAwOwoJICAgIH07CgkgICAgQUkwMTN4MHgxeERlY29kZXIuSEVBREVSX1NJWkUgPSA3ICsgMTsKCSAgICBBSTAxM3gweDF4RGVjb2Rlci5XRUlHSFRfU0laRSA9IDIwOwoJICAgIEFJMDEzeDB4MXhEZWNvZGVyLkRBVEVfU0laRSA9IDE2OwoJICAgIHJldHVybiBBSTAxM3gweDF4RGVjb2RlcjsKCX0oQUkwMXdlaWdodERlY29kZXJfMS5kZWZhdWx0KSk7CglleHBvcnRzLmRlZmF1bHQgPSBBSTAxM3gweDF4RGVjb2RlcjsKCgl9KTsKCgl2YXIgQWJzdHJhY3RFeHBhbmRlZERlY29kZXJDb21wbGVtZW50ID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCWV4cG9ydHMuY3JlYXRlRGVjb2RlciA9IHZvaWQgMDsKCgoKCgoKCgoKCWZ1bmN0aW9uIGNyZWF0ZURlY29kZXIoaW5mb3JtYXRpb24pIHsKCSAgICB0cnkgewoJICAgICAgICBpZiAoaW5mb3JtYXRpb24uZ2V0KDEpKSB7CgkgICAgICAgICAgICByZXR1cm4gbmV3IEFJMDFBbmRPdGhlckFJc18xLmRlZmF1bHQoaW5mb3JtYXRpb24pOwoJICAgICAgICB9CgkgICAgICAgIGlmICghaW5mb3JtYXRpb24uZ2V0KDIpKSB7CgkgICAgICAgICAgICByZXR1cm4gbmV3IEFueUFJRGVjb2Rlcl8xLmRlZmF1bHQoaW5mb3JtYXRpb24pOwoJICAgICAgICB9CgkgICAgICAgIHZhciBmb3VyQml0RW5jb2RhdGlvbk1ldGhvZCA9IEdlbmVyYWxBcHBJZERlY29kZXJfMS5kZWZhdWx0LmV4dHJhY3ROdW1lcmljVmFsdWVGcm9tQml0QXJyYXkoaW5mb3JtYXRpb24sIDEsIDQpOwoJICAgICAgICBzd2l0Y2ggKGZvdXJCaXRFbmNvZGF0aW9uTWV0aG9kKSB7CgkgICAgICAgICAgICBjYXNlIDQ6IHJldHVybiBuZXcgQUkwMTMxMDNkZWNvZGVyXzEuZGVmYXVsdChpbmZvcm1hdGlvbik7CgkgICAgICAgICAgICBjYXNlIDU6IHJldHVybiBuZXcgQUkwMTMyMHhEZWNvZGVyXzEuZGVmYXVsdChpbmZvcm1hdGlvbik7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGZpdmVCaXRFbmNvZGF0aW9uTWV0aG9kID0gR2VuZXJhbEFwcElkRGVjb2Rlcl8xLmRlZmF1bHQuZXh0cmFjdE51bWVyaWNWYWx1ZUZyb21CaXRBcnJheShpbmZvcm1hdGlvbiwgMSwgNSk7CgkgICAgICAgIHN3aXRjaCAoZml2ZUJpdEVuY29kYXRpb25NZXRob2QpIHsKCSAgICAgICAgICAgIGNhc2UgMTI6IHJldHVybiBuZXcgQUkwMTM5MnhEZWNvZGVyXzEuZGVmYXVsdChpbmZvcm1hdGlvbik7CgkgICAgICAgICAgICBjYXNlIDEzOiByZXR1cm4gbmV3IEFJMDEzOTN4RGVjb2Rlcl8xLmRlZmF1bHQoaW5mb3JtYXRpb24pOwoJICAgICAgICB9CgkgICAgICAgIHZhciBzZXZlbkJpdEVuY29kYXRpb25NZXRob2QgPSBHZW5lcmFsQXBwSWREZWNvZGVyXzEuZGVmYXVsdC5leHRyYWN0TnVtZXJpY1ZhbHVlRnJvbUJpdEFycmF5KGluZm9ybWF0aW9uLCAxLCA3KTsKCSAgICAgICAgc3dpdGNoIChzZXZlbkJpdEVuY29kYXRpb25NZXRob2QpIHsKCSAgICAgICAgICAgIGNhc2UgNTY6IHJldHVybiBuZXcgQUkwMTN4MHgxeERlY29kZXJfMS5kZWZhdWx0KGluZm9ybWF0aW9uLCAnMzEwJywgJzExJyk7CgkgICAgICAgICAgICBjYXNlIDU3OiByZXR1cm4gbmV3IEFJMDEzeDB4MXhEZWNvZGVyXzEuZGVmYXVsdChpbmZvcm1hdGlvbiwgJzMyMCcsICcxMScpOwoJICAgICAgICAgICAgY2FzZSA1ODogcmV0dXJuIG5ldyBBSTAxM3gweDF4RGVjb2Rlcl8xLmRlZmF1bHQoaW5mb3JtYXRpb24sICczMTAnLCAnMTMnKTsKCSAgICAgICAgICAgIGNhc2UgNTk6IHJldHVybiBuZXcgQUkwMTN4MHgxeERlY29kZXJfMS5kZWZhdWx0KGluZm9ybWF0aW9uLCAnMzIwJywgJzEzJyk7CgkgICAgICAgICAgICBjYXNlIDYwOiByZXR1cm4gbmV3IEFJMDEzeDB4MXhEZWNvZGVyXzEuZGVmYXVsdChpbmZvcm1hdGlvbiwgJzMxMCcsICcxNScpOwoJICAgICAgICAgICAgY2FzZSA2MTogcmV0dXJuIG5ldyBBSTAxM3gweDF4RGVjb2Rlcl8xLmRlZmF1bHQoaW5mb3JtYXRpb24sICczMjAnLCAnMTUnKTsKCSAgICAgICAgICAgIGNhc2UgNjI6IHJldHVybiBuZXcgQUkwMTN4MHgxeERlY29kZXJfMS5kZWZhdWx0KGluZm9ybWF0aW9uLCAnMzEwJywgJzE3Jyk7CgkgICAgICAgICAgICBjYXNlIDYzOiByZXR1cm4gbmV3IEFJMDEzeDB4MXhEZWNvZGVyXzEuZGVmYXVsdChpbmZvcm1hdGlvbiwgJzMyMCcsICcxNycpOwoJICAgICAgICB9CgkgICAgfQoJICAgIGNhdGNoIChlKSB7CgkgICAgICAgIGNvbnNvbGUubG9nKGUpOwoJICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uXzEuZGVmYXVsdCgndW5rbm93biBkZWNvZGVyOiAnICsgaW5mb3JtYXRpb24pOwoJICAgIH0KCX0KCWV4cG9ydHMuY3JlYXRlRGVjb2RlciA9IGNyZWF0ZURlY29kZXI7CgoJfSk7CgoJdmFyIEV4cGFuZGVkUGFpcl8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCXZhciBFeHBhbmRlZFBhaXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgZnVuY3Rpb24gRXhwYW5kZWRQYWlyKGxlZnRDaGFyLCByaWdodENoYXIsIGZpbmRlclBhdHRlciwgbWF5QmVMYXN0KSB7CgkgICAgICAgIHRoaXMubGVmdGNoYXIgPSBsZWZ0Q2hhcjsKCSAgICAgICAgdGhpcy5yaWdodGNoYXIgPSByaWdodENoYXI7CgkgICAgICAgIHRoaXMuZmluZGVycGF0dGVybiA9IGZpbmRlclBhdHRlcjsKCSAgICAgICAgdGhpcy5tYXliZUxhc3QgPSBtYXlCZUxhc3Q7CgkgICAgfQoJICAgIEV4cGFuZGVkUGFpci5wcm90b3R5cGUubWF5QmVMYXN0ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5tYXliZUxhc3Q7CgkgICAgfTsKCSAgICBFeHBhbmRlZFBhaXIucHJvdG90eXBlLmdldExlZnRDaGFyID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5sZWZ0Y2hhcjsKCSAgICB9OwoJICAgIEV4cGFuZGVkUGFpci5wcm90b3R5cGUuZ2V0UmlnaHRDaGFyID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5yaWdodGNoYXI7CgkgICAgfTsKCSAgICBFeHBhbmRlZFBhaXIucHJvdG90eXBlLmdldEZpbmRlclBhdHRlcm4gPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmZpbmRlcnBhdHRlcm47CgkgICAgfTsKCSAgICBFeHBhbmRlZFBhaXIucHJvdG90eXBlLm11c3RCZUxhc3QgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLnJpZ2h0Y2hhciA9PSBudWxsOwoJICAgIH07CgkgICAgRXhwYW5kZWRQYWlyLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuICdbICcgKyB0aGlzLmxlZnRjaGFyICsgJywgJyArIHRoaXMucmlnaHRjaGFyICsgJyA6ICcgKyAodGhpcy5maW5kZXJwYXR0ZXJuID09IG51bGwgPyAnbnVsbCcgOiB0aGlzLmZpbmRlcnBhdHRlcm4uZ2V0VmFsdWUoKSkgKyAnIF0nOwoJICAgIH07CgkgICAgRXhwYW5kZWRQYWlyLmVxdWFscyA9IGZ1bmN0aW9uIChvMSwgbzIpIHsKCSAgICAgICAgaWYgKCEobzEgaW5zdGFuY2VvZiBFeHBhbmRlZFBhaXIpKSB7CgkgICAgICAgICAgICByZXR1cm4gZmFsc2U7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIEV4cGFuZGVkUGFpci5lcXVhbHNPck51bGwobzEubGVmdGNoYXIsIG8yLmxlZnRjaGFyKSAmJgoJICAgICAgICAgICAgRXhwYW5kZWRQYWlyLmVxdWFsc09yTnVsbChvMS5yaWdodGNoYXIsIG8yLnJpZ2h0Y2hhcikgJiYKCSAgICAgICAgICAgIEV4cGFuZGVkUGFpci5lcXVhbHNPck51bGwobzEuZmluZGVycGF0dGVybiwgbzIuZmluZGVycGF0dGVybik7CgkgICAgfTsKCSAgICBFeHBhbmRlZFBhaXIuZXF1YWxzT3JOdWxsID0gZnVuY3Rpb24gKG8xLCBvMikgewoJICAgICAgICByZXR1cm4gbzEgPT09IG51bGwgPyBvMiA9PT0gbnVsbCA6IEV4cGFuZGVkUGFpci5lcXVhbHMobzEsIG8yKTsKCSAgICB9OwoJICAgIEV4cGFuZGVkUGFpci5wcm90b3R5cGUuaGFzaENvZGUgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIC8vIHJldHVybiBFeHBhbmRlZFBhaXIuaGFzaE5vdE51bGwobGVmdENoYXIpIF4gaGFzaE5vdE51bGwocmlnaHRDaGFyKSBeIGhhc2hOb3ROdWxsKGZpbmRlclBhdHRlcm4pOwoJICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLmxlZnRjaGFyLmdldFZhbHVlKCkgXiB0aGlzLnJpZ2h0Y2hhci5nZXRWYWx1ZSgpIF4gdGhpcy5maW5kZXJwYXR0ZXJuLmdldFZhbHVlKCk7CgkgICAgICAgIHJldHVybiB2YWx1ZTsKCSAgICB9OwoJICAgIHJldHVybiBFeHBhbmRlZFBhaXI7Cgl9KCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gRXhwYW5kZWRQYWlyOwoKCX0pOwoKCXZhciBFeHBhbmRlZFJvd18xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCXZhciBFeHBhbmRlZFJvdyA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBFeHBhbmRlZFJvdyhwYWlycywgcm93TnVtYmVyLCB3YXNSZXZlcnNlZCkgewoJICAgICAgICB0aGlzLnBhaXJzID0gcGFpcnM7CgkgICAgICAgIHRoaXMucm93TnVtYmVyID0gcm93TnVtYmVyOwoJICAgICAgICB0aGlzLndhc1JldmVyc2VkID0gd2FzUmV2ZXJzZWQ7CgkgICAgfQoJICAgIEV4cGFuZGVkUm93LnByb3RvdHlwZS5nZXRQYWlycyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMucGFpcnM7CgkgICAgfTsKCSAgICBFeHBhbmRlZFJvdy5wcm90b3R5cGUuZ2V0Um93TnVtYmVyID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5yb3dOdW1iZXI7CgkgICAgfTsKCSAgICBFeHBhbmRlZFJvdy5wcm90b3R5cGUuaXNSZXZlcnNlZCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMud2FzUmV2ZXJzZWQ7CgkgICAgfTsKCSAgICAvLyBjaGVjayBpbXBsZW1lbnRhdGlvbgoJICAgIEV4cGFuZGVkUm93LnByb3RvdHlwZS5pc0VxdWl2YWxlbnQgPSBmdW5jdGlvbiAob3RoZXJQYWlycykgewoJICAgICAgICByZXR1cm4gdGhpcy5jaGVja0VxdWFsaXRpdHkodGhpcywgb3RoZXJQYWlycyk7CgkgICAgfTsKCSAgICAvLyBAT3ZlcnJpZGUKCSAgICBFeHBhbmRlZFJvdy5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiAneyAnICsgdGhpcy5wYWlycyArICcgfSc7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBUd28gcm93cyBhcmUgZXF1YWwgaWYgdGhleSBjb250YWluIHRoZSBzYW1lIHBhaXJzIGluIHRoZSBzYW1lIG9yZGVyLgoJICAgICAqLwoJICAgIC8vIEBPdmVycmlkZQoJICAgIC8vIGNoZWNrIGltcGxlbWVudGF0aW9uCgkgICAgRXhwYW5kZWRSb3cucHJvdG90eXBlLmVxdWFscyA9IGZ1bmN0aW9uIChvMSwgbzIpIHsKCSAgICAgICAgaWYgKCEobzEgaW5zdGFuY2VvZiBFeHBhbmRlZFJvdykpIHsKCSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gdGhpcy5jaGVja0VxdWFsaXRpdHkobzEsIG8yKSAmJiBvMS53YXNSZXZlcnNlZCA9PT0gbzIud2FzUmV2ZXJzZWQ7CgkgICAgfTsKCSAgICBFeHBhbmRlZFJvdy5wcm90b3R5cGUuY2hlY2tFcXVhbGl0aXR5ID0gZnVuY3Rpb24gKHBhaXIxLCBwYWlyMikgewoJICAgICAgICBpZiAoIXBhaXIxIHx8ICFwYWlyMikKCSAgICAgICAgICAgIHJldHVybjsKCSAgICAgICAgdmFyIHJlc3VsdDsKCSAgICAgICAgcGFpcjEuZm9yRWFjaChmdW5jdGlvbiAoZTEsIGkpIHsKCSAgICAgICAgICAgIHBhaXIyLmZvckVhY2goZnVuY3Rpb24gKGUyKSB7CgkgICAgICAgICAgICAgICAgaWYgKGUxLmdldExlZnRDaGFyKCkuZ2V0VmFsdWUoKSA9PT0gZTIuZ2V0TGVmdENoYXIoKS5nZXRWYWx1ZSgpICYmIGUxLmdldFJpZ2h0Q2hhcigpLmdldFZhbHVlKCkgPT09IGUyLmdldFJpZ2h0Q2hhcigpLmdldFZhbHVlKCkgJiYgZTEuZ2V0RmluZGVyUGF0dGVyKCkuZ2V0VmFsdWUoKSA9PT0gZTIuZ2V0RmluZGVyUGF0dGVyKCkuZ2V0VmFsdWUoKSkgewoJICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB0cnVlOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0pOwoJICAgICAgICB9KTsKCSAgICAgICAgcmV0dXJuIHJlc3VsdDsKCSAgICB9OwoJICAgIHJldHVybiBFeHBhbmRlZFJvdzsKCX0oKSk7CglleHBvcnRzLmRlZmF1bHQgPSBFeHBhbmRlZFJvdzsKCgl9KTsKCgl2YXIgUlNTRXhwYW5kZWRSZWFkZXJfMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCXZhciBfX2V4dGVuZHMgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkgewoJICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fAoJICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fAoJICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07CgkgICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgIH07CgkgICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfQoJICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7CgkgICAgfTsKCX0pKCk7Cgl2YXIgX192YWx1ZXMgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX192YWx1ZXMpIHx8IGZ1bmN0aW9uKG8pIHsKCSAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09ICJmdW5jdGlvbiIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDsKCSAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTsKCSAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09ICJudW1iZXIiKSByZXR1cm4gewoJICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7CgkgICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwOwoJICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9OwoJICAgICAgICB9CgkgICAgfTsKCSAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyAiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS4iIDogIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC4iKTsKCX07CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoKCgkvLyBpbXBvcnQgRm9ybWF0RXhjZXB0aW9uIGZyb20gJy4uLy4uLy4uL0Zvcm1hdEV4Y2VwdGlvbic7CgoKCgoKCgoKCgoKCS8vIGltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwoJLy8gaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKCS8vIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsKCS8vIGltcG9ydCBqYXZhLnV0aWwuTWFwOwoJLy8gaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKCXZhciBSU1NFeHBhbmRlZFJlYWRlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHsKCSAgICBfX2V4dGVuZHMoUlNTRXhwYW5kZWRSZWFkZXIsIF9zdXBlcik7CgkgICAgZnVuY3Rpb24gUlNTRXhwYW5kZWRSZWFkZXIoKSB7CgkgICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzOwoJICAgICAgICBfdGhpcy5wYWlycyA9IG5ldyBBcnJheShSU1NFeHBhbmRlZFJlYWRlci5NQVhfUEFJUlMpOwoJICAgICAgICBfdGhpcy5yb3dzID0gbmV3IEFycmF5KCk7CgkgICAgICAgIF90aGlzLnN0YXJ0RW5kID0gWzJdOwoJICAgICAgICByZXR1cm4gX3RoaXM7CgkgICAgfQoJICAgIFJTU0V4cGFuZGVkUmVhZGVyLnByb3RvdHlwZS5kZWNvZGVSb3cgPSBmdW5jdGlvbiAocm93TnVtYmVyLCByb3csIGhpbnRzKSB7CgkgICAgICAgIC8vIFJvd3MgY2FuIHN0YXJ0IHdpdGggZXZlbiBwYXR0ZXJuIGluIGNhc2UgaW4gcHJldiByb3dzIHRoZXJlIHdoZXJlIG9kZCBudW1iZXIgb2YgcGF0dGVycy4KCSAgICAgICAgLy8gU28gbGV0cyB0cnkgdHdpY2UKCSAgICAgICAgLy8gdGhpcy5wYWlycy5jbGVhcigpOwoJICAgICAgICB0aGlzLnBhaXJzLmxlbmd0aCA9IDA7CgkgICAgICAgIHRoaXMuc3RhcnRGcm9tRXZlbiA9IGZhbHNlOwoJICAgICAgICB0cnkgewoJICAgICAgICAgICAgcmV0dXJuIFJTU0V4cGFuZGVkUmVhZGVyLmNvbnN0cnVjdFJlc3VsdCh0aGlzLmRlY29kZVJvdzJwYWlycyhyb3dOdW1iZXIsIHJvdykpOwoJICAgICAgICB9CgkgICAgICAgIGNhdGNoIChlKSB7CgkgICAgICAgICAgICAvLyBPSwoJICAgICAgICAgICAgY29uc29sZS5sb2coZSk7CgkgICAgICAgIH0KCSAgICAgICAgdGhpcy5wYWlycy5sZW5ndGggPSAwOwoJICAgICAgICB0aGlzLnN0YXJ0RnJvbUV2ZW4gPSB0cnVlOwoJICAgICAgICByZXR1cm4gUlNTRXhwYW5kZWRSZWFkZXIuY29uc3RydWN0UmVzdWx0KHRoaXMuZGVjb2RlUm93MnBhaXJzKHJvd051bWJlciwgcm93KSk7CgkgICAgfTsKCSAgICBSU1NFeHBhbmRlZFJlYWRlci5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHRoaXMucGFpcnMubGVuZ3RoID0gMDsKCSAgICAgICAgdGhpcy5yb3dzLmxlbmd0aCA9IDA7CgkgICAgfTsKCSAgICAvLyBOb3QgcHJpdmF0ZSBmb3IgdGVzdGluZwoJICAgIFJTU0V4cGFuZGVkUmVhZGVyLnByb3RvdHlwZS5kZWNvZGVSb3cycGFpcnMgPSBmdW5jdGlvbiAocm93TnVtYmVyLCByb3cpIHsKCSAgICAgICAgdmFyIGRvbmUgPSBmYWxzZTsKCSAgICAgICAgd2hpbGUgKCFkb25lKSB7CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIHRoaXMucGFpcnMucHVzaCh0aGlzLnJldHJpZXZlTmV4dFBhaXIocm93LCB0aGlzLnBhaXJzLCByb3dOdW1iZXIpKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGNhdGNoIChlcnJvcikgewoJICAgICAgICAgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCkgewoJICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMucGFpcnMubGVuZ3RoKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgLy8gZXhpdCB0aGlzIGxvb3Agd2hlbiByZXRyaWV2ZU5leHRQYWlyKCkgZmFpbHMgYW5kIHRocm93cwoJICAgICAgICAgICAgICAgICAgICBkb25lID0gdHJ1ZTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgLy8gVE9ETzogdmVyaWZ5IHNlcXVlbmNlIG9mIGZpbmRlciBwYXR0ZXJucyBhcyBpbiBjaGVja1BhaXJTZXF1ZW5jZSgpCgkgICAgICAgIGlmICh0aGlzLmNoZWNrQ2hlY2tzdW0oKSkgewoJICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFpcnM7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIHRyeVN0YWNrZWREZWNvZGU7CgkgICAgICAgIGlmICh0aGlzLnJvd3MubGVuZ3RoKSB7CgkgICAgICAgICAgICB0cnlTdGFja2VkRGVjb2RlID0gdHJ1ZTsKCSAgICAgICAgfQoJICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgIHRyeVN0YWNrZWREZWNvZGUgPSBmYWxzZTsKCSAgICAgICAgfQoJICAgICAgICAvLyBsZXQgdHJ5U3RhY2tlZERlY29kZSA9ICF0aGlzLnJvd3MuaXNFbXB0eSgpOwoJICAgICAgICB0aGlzLnN0b3JlUm93KHJvd051bWJlciwgZmFsc2UpOyAvLyBUT0RPOiBkZWFsIHdpdGggcmV2ZXJzZWQgcm93cwoJICAgICAgICBpZiAodHJ5U3RhY2tlZERlY29kZSkgewoJICAgICAgICAgICAgLy8gV2hlbiB0aGUgaW1hZ2UgaXMgMTgwLXJvdGF0ZWQsIHRoZW4gcm93cyBhcmUgc29ydGVkIGluIHdyb25nIGRpcmVjdGlvbi4KCSAgICAgICAgICAgIC8vIFRyeSB0d2ljZSB3aXRoIGJvdGggdGhlIGRpcmVjdGlvbnMuCgkgICAgICAgICAgICB2YXIgcHMgPSB0aGlzLmNoZWNrUm93c0Jvb2xlYW4oZmFsc2UpOwoJICAgICAgICAgICAgaWYgKHBzICE9IG51bGwpIHsKCSAgICAgICAgICAgICAgICByZXR1cm4gcHM7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBwcyA9IHRoaXMuY2hlY2tSb3dzQm9vbGVhbih0cnVlKTsKCSAgICAgICAgICAgIGlmIChwcyAhPSBudWxsKSB7CgkgICAgICAgICAgICAgICAgcmV0dXJuIHBzOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICB9OwoJICAgIC8vIE5lZWQgdG8gVmVyaWZ5CgkgICAgUlNTRXhwYW5kZWRSZWFkZXIucHJvdG90eXBlLmNoZWNrUm93c0Jvb2xlYW4gPSBmdW5jdGlvbiAocmV2ZXJzZSkgewoJICAgICAgICAvLyBMaW1pdCBudW1iZXIgb2Ygcm93cyB3ZSBhcmUgY2hlY2tpbmcKCSAgICAgICAgLy8gV2UgdXNlIHJlY3Vyc2l2ZSBhbGdvcml0aG0gd2l0aCBwdXJlIGNvbXBsZXhpdHkgYW5kIGRvbid0IHdhbnQgaXQgdG8gdGFrZSBmb3JldmVyCgkgICAgICAgIC8vIFN0YWNrZWQgYmFyY29kZSBjYW4gaGF2ZSB1cCB0byAxMSByb3dzLCBzbyAyNSBzZWVtcyByZWFzb25hYmxlIGVub3VnaAoJICAgICAgICBpZiAodGhpcy5yb3dzLmxlbmd0aCA+IDI1KSB7CgkgICAgICAgICAgICB0aGlzLnJvd3MubGVuZ3RoID0gMDsgLy8gV2Ugd2lsbCBuZXZlciBoYXZlIGEgY2hhbmNlIHRvIGdldCByZXN1bHQsIHNvIGNsZWFyIGl0CgkgICAgICAgICAgICByZXR1cm4gbnVsbDsKCSAgICAgICAgfQoJICAgICAgICB0aGlzLnBhaXJzLmxlbmd0aCA9IDA7CgkgICAgICAgIGlmIChyZXZlcnNlKSB7CgkgICAgICAgICAgICB0aGlzLnJvd3MgPSB0aGlzLnJvd3MucmV2ZXJzZSgpOwoJICAgICAgICAgICAgLy8gQ29sbGVjdGlvbnMucmV2ZXJzZSh0aGlzLnJvd3MpOwoJICAgICAgICB9CgkgICAgICAgIHZhciBwcyA9IG51bGw7CgkgICAgICAgIHRyeSB7CgkgICAgICAgICAgICBwcyA9IHRoaXMuY2hlY2tSb3dzKG5ldyBBcnJheSgpLCAwKTsKCSAgICAgICAgfQoJICAgICAgICBjYXRjaCAoZSkgewoJICAgICAgICAgICAgLy8gT0sKCSAgICAgICAgICAgIGNvbnNvbGUubG9nKGUpOwoJICAgICAgICB9CgkgICAgICAgIGlmIChyZXZlcnNlKSB7CgkgICAgICAgICAgICB0aGlzLnJvd3MgPSB0aGlzLnJvd3MucmV2ZXJzZSgpOwoJICAgICAgICAgICAgLy8gQ29sbGVjdGlvbnMucmV2ZXJzZSh0aGlzLnJvd3MpOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBwczsKCSAgICB9OwoJICAgIC8vIFRyeSB0byBjb25zdHJ1Y3QgYSB2YWxpZCByb3dzIHNlcXVlbmNlCgkgICAgLy8gUmVjdXJzaW9uIGlzIHVzZWQgdG8gaW1wbGVtZW50IGJhY2t0cmFja2luZwoJICAgIFJTU0V4cGFuZGVkUmVhZGVyLnByb3RvdHlwZS5jaGVja1Jvd3MgPSBmdW5jdGlvbiAoY29sbGVjdGVkUm93cywgY3VycmVudFJvdykgewoJICAgICAgICB2YXIgZV8xLCBfYTsKCSAgICAgICAgZm9yICh2YXIgaSA9IGN1cnJlbnRSb3c7IGkgPCB0aGlzLnJvd3MubGVuZ3RoOyBpKyspIHsKCSAgICAgICAgICAgIHZhciByb3cgPSB0aGlzLnJvd3NbaV07CgkgICAgICAgICAgICB0aGlzLnBhaXJzLmxlbmd0aCA9IDA7CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIGZvciAodmFyIGNvbGxlY3RlZFJvd3NfMSA9IChlXzEgPSB2b2lkIDAsIF9fdmFsdWVzKGNvbGxlY3RlZFJvd3MpKSwgY29sbGVjdGVkUm93c18xXzEgPSBjb2xsZWN0ZWRSb3dzXzEubmV4dCgpOyAhY29sbGVjdGVkUm93c18xXzEuZG9uZTsgY29sbGVjdGVkUm93c18xXzEgPSBjb2xsZWN0ZWRSb3dzXzEubmV4dCgpKSB7CgkgICAgICAgICAgICAgICAgICAgIHZhciBjb2xsZWN0ZWRSb3cgPSBjb2xsZWN0ZWRSb3dzXzFfMS52YWx1ZTsKCSAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWlycy5wdXNoKGNvbGxlY3RlZFJvdy5nZXRQYWlycygpKTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfQoJICAgICAgICAgICAgZmluYWxseSB7CgkgICAgICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICAgICAgaWYgKGNvbGxlY3RlZFJvd3NfMV8xICYmICFjb2xsZWN0ZWRSb3dzXzFfMS5kb25lICYmIChfYSA9IGNvbGxlY3RlZFJvd3NfMS5yZXR1cm4pKSBfYS5jYWxsKGNvbGxlY3RlZFJvd3NfMSk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHRoaXMucGFpcnMucHVzaChyb3cuZ2V0UGFpcnMoKSk7CgkgICAgICAgICAgICBpZiAoIVJTU0V4cGFuZGVkUmVhZGVyLmlzVmFsaWRTZXF1ZW5jZSh0aGlzLnBhaXJzKSkgewoJICAgICAgICAgICAgICAgIGNvbnRpbnVlOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgaWYgKHRoaXMuY2hlY2tDaGVja3N1bSgpKSB7CgkgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFpcnM7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICB2YXIgcnMgPSBuZXcgQXJyYXkoY29sbGVjdGVkUm93cyk7CgkgICAgICAgICAgICBycy5wdXNoKHJvdyk7CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIC8vIFJlY3Vyc2lvbjogdHJ5IHRvIGFkZCBtb3JlIHJvd3MKCSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jaGVja1Jvd3MocnMsIGkgKyAxKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGNhdGNoIChlKSB7CgkgICAgICAgICAgICAgICAgLy8gV2UgZmFpbGVkLCB0cnkgdGhlIG5leHQgY2FuZGlkYXRlCgkgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZSk7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgIH07CgkgICAgLy8gV2hldGhlciB0aGUgcGFpcnMgZm9ybSBhIHZhbGlkIGZpbmQgcGF0dGVybiBzZXF1ZW5jZSwKCSAgICAvLyBlaXRoZXIgY29tcGxldGUgb3IgYSBwcmVmaXgKCSAgICBSU1NFeHBhbmRlZFJlYWRlci5pc1ZhbGlkU2VxdWVuY2UgPSBmdW5jdGlvbiAocGFpcnMpIHsKCSAgICAgICAgdmFyIGVfMiwgX2E7CgkgICAgICAgIHRyeSB7CgkgICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKFJTU0V4cGFuZGVkUmVhZGVyLkZJTkRFUl9QQVRURVJOX1NFUVVFTkNFUyksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHsKCSAgICAgICAgICAgICAgICB2YXIgc2VxdWVuY2UgPSBfYy52YWx1ZTsKCSAgICAgICAgICAgICAgICBpZiAocGFpcnMubGVuZ3RoID4gc2VxdWVuY2UubGVuZ3RoKSB7CgkgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB2YXIgc3RvcF8xID0gdHJ1ZTsKCSAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHBhaXJzLmxlbmd0aDsgaisrKSB7CgkgICAgICAgICAgICAgICAgICAgIGlmIChwYWlyc1tqXS5nZXRGaW5kZXJQYXR0ZXJuKCkuZ2V0VmFsdWUoKSAhPSBzZXF1ZW5jZVtqXSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgc3RvcF8xID0gZmFsc2U7CgkgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBpZiAoc3RvcF8xKSB7CgkgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICBjYXRjaCAoZV8yXzEpIHsgZV8yID0geyBlcnJvcjogZV8yXzEgfTsgfQoJICAgICAgICBmaW5hbGx5IHsKCSAgICAgICAgICAgIHRyeSB7CgkgICAgICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzIpIHRocm93IGVfMi5lcnJvcjsgfQoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBmYWxzZTsKCSAgICB9OwoJICAgIFJTU0V4cGFuZGVkUmVhZGVyLnByb3RvdHlwZS5zdG9yZVJvdyA9IGZ1bmN0aW9uIChyb3dOdW1iZXIsIHdhc1JldmVyc2VkKSB7CgkgICAgICAgIC8vIERpc2NhcmQgaWYgZHVwbGljYXRlIGFib3ZlIG9yIGJlbG93OyBvdGhlcndpc2UgaW5zZXJ0IGluIG9yZGVyIGJ5IHJvdyBudW1iZXIuCgkgICAgICAgIHZhciBpbnNlcnRQb3MgPSAwOwoJICAgICAgICB2YXIgcHJldklzU2FtZSA9IGZhbHNlOwoJICAgICAgICB2YXIgbmV4dElzU2FtZSA9IGZhbHNlOwoJICAgICAgICB3aGlsZSAoaW5zZXJ0UG9zIDwgdGhpcy5yb3dzLmxlbmd0aCkgewoJICAgICAgICAgICAgdmFyIGVyb3cgPSB0aGlzLnJvd3NbaW5zZXJ0UG9zXTsKCSAgICAgICAgICAgIGlmIChlcm93LmdldFJvd051bWJlcigpID4gcm93TnVtYmVyKSB7CgkgICAgICAgICAgICAgICAgbmV4dElzU2FtZSA9IGVyb3cuaXNFcXVpdmFsZW50KHRoaXMucGFpcnMpOwoJICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgcHJldklzU2FtZSA9IGVyb3cuaXNFcXVpdmFsZW50KHRoaXMucGFpcnMpOwoJICAgICAgICAgICAgaW5zZXJ0UG9zKys7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKG5leHRJc1NhbWUgfHwgcHJldklzU2FtZSkgewoJICAgICAgICAgICAgcmV0dXJuOwoJICAgICAgICB9CgkgICAgICAgIC8vIFdoZW4gdGhlIHJvdyB3YXMgcGFydGlhbGx5IGRlY29kZWQgKGUuZy4gMiBwYWlycyBmb3VuZCBpbnN0ZWFkIG9mIDMpLAoJICAgICAgICAvLyBpdCB3aWxsIHByZXZlbnQgdXMgZnJvbSBkZXRlY3RpbmcgdGhlIGJhcmNvZGUuCgkgICAgICAgIC8vIFRyeSB0byBtZXJnZSBwYXJ0aWFsIHJvd3MKCSAgICAgICAgLy8gQ2hlY2sgd2hldGhlciB0aGUgcm93IGlzIHBhcnQgb2YgYW4gYWxscmVhZHkgZGV0ZWN0ZWQgcm93CgkgICAgICAgIGlmIChSU1NFeHBhbmRlZFJlYWRlci5pc1BhcnRpYWxSb3codGhpcy5wYWlycywgdGhpcy5yb3dzKSkgewoJICAgICAgICAgICAgcmV0dXJuOwoJICAgICAgICB9CgkgICAgICAgIHRoaXMucm93cy5wdXNoKGluc2VydFBvcywgbmV3IEV4cGFuZGVkUm93XzEuZGVmYXVsdCh0aGlzLnBhaXJzLCByb3dOdW1iZXIsIHdhc1JldmVyc2VkKSk7CgkgICAgICAgIHRoaXMucmVtb3ZlUGFydGlhbFJvd3ModGhpcy5wYWlycywgdGhpcy5yb3dzKTsKCSAgICB9OwoJICAgIC8vIFJlbW92ZSBhbGwgdGhlIHJvd3MgdGhhdCBjb250YWlucyBvbmx5IHNwZWNpZmllZCBwYWlycwoJICAgIFJTU0V4cGFuZGVkUmVhZGVyLnByb3RvdHlwZS5yZW1vdmVQYXJ0aWFsUm93cyA9IGZ1bmN0aW9uIChwYWlycywgcm93cykgewoJICAgICAgICB2YXIgZV8zLCBfYSwgZV80LCBfYiwgZV81LCBfYzsKCSAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgIC8vIGZvciAoSXRlcmF0b3I8RXhwYW5kZWRSb3c+IGl0ZXJhdG9yID0gcm93cy5pdGVyYXRvcigpOyBpdGVyYXRvci5oYXNOZXh0KCk7KSB7CgkgICAgICAgICAgICAvLyAgIEV4cGFuZGVkUm93IHIgPSBpdGVyYXRvci5uZXh0KCk7CgkgICAgICAgICAgICAvLyAgIGlmIChyLmdldFBhaXJzKCkuc2l6ZSgpID09IHBhaXJzLnNpemUoKSkgewoJICAgICAgICAgICAgLy8gICAgIGNvbnRpbnVlOwoJICAgICAgICAgICAgLy8gICB9CgkgICAgICAgICAgICAvLyAgIGJvb2xlYW4gYWxsRm91bmQgPSB0cnVlOwoJICAgICAgICAgICAgLy8gICBmb3IgKEV4cGFuZGVkUGFpciBwIDogci5nZXRQYWlycygpKSB7CgkgICAgICAgICAgICAvLyAgICAgYm9vbGVhbiBmb3VuZCA9IGZhbHNlOwoJICAgICAgICAgICAgLy8gICAgIGZvciAoRXhwYW5kZWRQYWlyIHBwIDogcGFpcnMpIHsKCSAgICAgICAgICAgIC8vICAgICAgIGlmIChwLmVxdWFscyhwcCkpIHsKCSAgICAgICAgICAgIC8vICAgICAgICAgZm91bmQgPSB0cnVlOwoJICAgICAgICAgICAgLy8gICAgICAgICBicmVhazsKCSAgICAgICAgICAgIC8vICAgICAgIH0KCSAgICAgICAgICAgIC8vICAgICB9CgkgICAgICAgICAgICAvLyAgICAgaWYgKCFmb3VuZCkgewoJICAgICAgICAgICAgLy8gICAgICAgYWxsRm91bmQgPSBmYWxzZTsKCSAgICAgICAgICAgIC8vICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgLy8gICAgIH0KCSAgICAgICAgICAgIC8vICAgfQoJICAgICAgICAgICAgLy8gICBpZiAoYWxsRm91bmQpIHsKCSAgICAgICAgICAgIC8vICAgICAvLyAncGFpcnMnIGNvbnRhaW5zIGFsbCB0aGUgcGFpcnMgZnJvbSB0aGUgcm93ICdyJwoJICAgICAgICAgICAgLy8gICAgIGl0ZXJhdG9yLnJlbW92ZSgpOwoJICAgICAgICAgICAgLy8gICB9CgkgICAgICAgICAgICAvLyB9CgkgICAgICAgICAgICBmb3IgKHZhciByb3dzXzEgPSBfX3ZhbHVlcyhyb3dzKSwgcm93c18xXzEgPSByb3dzXzEubmV4dCgpOyAhcm93c18xXzEuZG9uZTsgcm93c18xXzEgPSByb3dzXzEubmV4dCgpKSB7CgkgICAgICAgICAgICAgICAgdmFyIHJvdyA9IHJvd3NfMV8xLnZhbHVlOwoJICAgICAgICAgICAgICAgIGlmIChyb3cuZ2V0UGFpcnMoKS5sZW5ndGggPT09IHBhaXJzLmxlbmd0aCkgewoJICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgdmFyIGFsbEZvdW5kID0gdHJ1ZTsKCSAgICAgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBfZCA9IChlXzQgPSB2b2lkIDAsIF9fdmFsdWVzKHJvdy5nZXRQYWlycygpKSksIF9lID0gX2QubmV4dCgpOyAhX2UuZG9uZTsgX2UgPSBfZC5uZXh0KCkpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwID0gX2UudmFsdWU7CgkgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZm91bmQgPSBmYWxzZTsKCSAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcGFpcnNfMSA9IChlXzUgPSB2b2lkIDAsIF9fdmFsdWVzKHBhaXJzKSksIHBhaXJzXzFfMSA9IHBhaXJzXzEubmV4dCgpOyAhcGFpcnNfMV8xLmRvbmU7IHBhaXJzXzFfMSA9IHBhaXJzXzEubmV4dCgpKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwcCA9IHBhaXJzXzFfMS52YWx1ZTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEV4cGFuZGVkUGFpcl8xLmRlZmF1bHQuZXF1YWxzKHAsIHBwKSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZV81XzEpIHsgZV81ID0geyBlcnJvcjogZV81XzEgfTsgfQoJICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhaXJzXzFfMSAmJiAhcGFpcnNfMV8xLmRvbmUgJiYgKF9jID0gcGFpcnNfMS5yZXR1cm4pKSBfYy5jYWxsKHBhaXJzXzEpOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfNSkgdGhyb3cgZV81LmVycm9yOyB9CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWZvdW5kKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsRm91bmQgPSBmYWxzZTsKCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBjYXRjaCAoZV80XzEpIHsgZV80ID0geyBlcnJvcjogZV80XzEgfTsgfQoJICAgICAgICAgICAgICAgIGZpbmFsbHkgewoJICAgICAgICAgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9lICYmICFfZS5kb25lICYmIChfYiA9IF9kLnJldHVybikpIF9iLmNhbGwoX2QpOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV80KSB0aHJvdyBlXzQuZXJyb3I7IH0KCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgY2F0Y2ggKGVfM18xKSB7IGVfMyA9IHsgZXJyb3I6IGVfM18xIH07IH0KCSAgICAgICAgZmluYWxseSB7CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIGlmIChyb3dzXzFfMSAmJiAhcm93c18xXzEuZG9uZSAmJiAoX2EgPSByb3dzXzEucmV0dXJuKSkgX2EuY2FsbChyb3dzXzEpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzMpIHRocm93IGVfMy5lcnJvcjsgfQoJICAgICAgICB9CgkgICAgfTsKCSAgICAvLyBSZXR1cm5zIHRydWUgd2hlbiBvbmUgb2YgdGhlIHJvd3MgYWxyZWFkeSBjb250YWlucyBhbGwgdGhlIHBhaXJzCgkgICAgUlNTRXhwYW5kZWRSZWFkZXIuaXNQYXJ0aWFsUm93ID0gZnVuY3Rpb24gKHBhaXJzLCByb3dzKSB7CgkgICAgICAgIHZhciBlXzYsIF9hLCBlXzcsIF9iLCBlXzgsIF9jOwoJICAgICAgICB0cnkgewoJICAgICAgICAgICAgZm9yICh2YXIgcm93c18yID0gX192YWx1ZXMocm93cyksIHJvd3NfMl8xID0gcm93c18yLm5leHQoKTsgIXJvd3NfMl8xLmRvbmU7IHJvd3NfMl8xID0gcm93c18yLm5leHQoKSkgewoJICAgICAgICAgICAgICAgIHZhciByID0gcm93c18yXzEudmFsdWU7CgkgICAgICAgICAgICAgICAgdmFyIGFsbEZvdW5kID0gdHJ1ZTsKCSAgICAgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBwYWlyc18yID0gKGVfNyA9IHZvaWQgMCwgX192YWx1ZXMocGFpcnMpKSwgcGFpcnNfMl8xID0gcGFpcnNfMi5uZXh0KCk7ICFwYWlyc18yXzEuZG9uZTsgcGFpcnNfMl8xID0gcGFpcnNfMi5uZXh0KCkpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwID0gcGFpcnNfMl8xLnZhbHVlOwoJICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZvdW5kID0gZmFsc2U7CgkgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIF9kID0gKGVfOCA9IHZvaWQgMCwgX192YWx1ZXMoci5nZXRQYWlycygpKSksIF9lID0gX2QubmV4dCgpOyAhX2UuZG9uZTsgX2UgPSBfZC5uZXh0KCkpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBwID0gX2UudmFsdWU7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwLmVxdWFscyhwcCkpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGVfOF8xKSB7IGVfOCA9IHsgZXJyb3I6IGVfOF8xIH07IH0KCSAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsbHkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfZSAmJiAhX2UuZG9uZSAmJiAoX2MgPSBfZC5yZXR1cm4pKSBfYy5jYWxsKF9kKTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzgpIHRocm93IGVfOC5lcnJvcjsgfQoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmb3VuZCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbEZvdW5kID0gZmFsc2U7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgY2F0Y2ggKGVfN18xKSB7IGVfNyA9IHsgZXJyb3I6IGVfN18xIH07IH0KCSAgICAgICAgICAgICAgICBmaW5hbGx5IHsKCSAgICAgICAgICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYWlyc18yXzEgJiYgIXBhaXJzXzJfMS5kb25lICYmIChfYiA9IHBhaXJzXzIucmV0dXJuKSkgX2IuY2FsbChwYWlyc18yKTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfNykgdGhyb3cgZV83LmVycm9yOyB9CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGlmIChhbGxGb3VuZCkgewoJICAgICAgICAgICAgICAgICAgICAvLyB0aGUgcm93ICdyJyBjb250YWluIGFsbCB0aGUgcGFpcnMgZnJvbSAncGFpcnMnCgkgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICBjYXRjaCAoZV82XzEpIHsgZV82ID0geyBlcnJvcjogZV82XzEgfTsgfQoJICAgICAgICBmaW5hbGx5IHsKCSAgICAgICAgICAgIHRyeSB7CgkgICAgICAgICAgICAgICAgaWYgKHJvd3NfMl8xICYmICFyb3dzXzJfMS5kb25lICYmIChfYSA9IHJvd3NfMi5yZXR1cm4pKSBfYS5jYWxsKHJvd3NfMik7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfNikgdGhyb3cgZV82LmVycm9yOyB9CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIGZhbHNlOwoJICAgIH07CgkgICAgLy8gT25seSB1c2VkIGZvciB1bml0IHRlc3RpbmcKCSAgICBSU1NFeHBhbmRlZFJlYWRlci5wcm90b3R5cGUuZ2V0Um93cyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMucm93czsKCSAgICB9OwoJICAgIC8vIE5vdCBwcml2YXRlIGZvciB1bml0IHRlc3RpbmcKCSAgICBSU1NFeHBhbmRlZFJlYWRlci5jb25zdHJ1Y3RSZXN1bHQgPSBmdW5jdGlvbiAocGFpcnMpIHsKCSAgICAgICAgdmFyIGJpbmFyeSA9IEJpdEFycmF5QnVpbGRlcl8xLmRlZmF1bHQuYnVpbGRCaXRBcnJheShwYWlycyk7CgkgICAgICAgIHZhciBkZWNvZGVyID0gQWJzdHJhY3RFeHBhbmRlZERlY29kZXJDb21wbGVtZW50LmNyZWF0ZURlY29kZXIoYmluYXJ5KTsKCSAgICAgICAgdmFyIHJlc3VsdGluZ1N0cmluZyA9IGRlY29kZXIucGFyc2VJbmZvcm1hdGlvbigpOwoJICAgICAgICB2YXIgZmlyc3RQb2ludHMgPSBwYWlyc1swXS5nZXRGaW5kZXJQYXR0ZXJuKCkuZ2V0UmVzdWx0UG9pbnRzKCk7CgkgICAgICAgIHZhciBsYXN0UG9pbnRzID0gcGFpcnNbcGFpcnMubGVuZ3RoIC0gMV0uZ2V0RmluZGVyUGF0dGVybigpLmdldFJlc3VsdFBvaW50cygpOwoJICAgICAgICB2YXIgcG9pbnRzID0gW2ZpcnN0UG9pbnRzWzBdLCBmaXJzdFBvaW50c1sxXSwgbGFzdFBvaW50c1swXSwgbGFzdFBvaW50c1sxXV07CgkgICAgICAgIHJldHVybiBuZXcgUmVzdWx0XzEuZGVmYXVsdChyZXN1bHRpbmdTdHJpbmcsIG51bGwsIG51bGwsIHBvaW50cywgQmFyY29kZUZvcm1hdF8xLmRlZmF1bHQuUlNTX0VYUEFOREVELCBudWxsKTsKCSAgICB9OwoJICAgIFJTU0V4cGFuZGVkUmVhZGVyLnByb3RvdHlwZS5jaGVja0NoZWNrc3VtID0gZnVuY3Rpb24gKCkgewoJICAgICAgICB2YXIgZmlyc3RQYWlyID0gdGhpcy5wYWlycy5nZXQoMCk7CgkgICAgICAgIHZhciBjaGVja0NoYXJhY3RlciA9IGZpcnN0UGFpci5nZXRMZWZ0Q2hhcigpOwoJICAgICAgICB2YXIgZmlyc3RDaGFyYWN0ZXIgPSBmaXJzdFBhaXIuZ2V0UmlnaHRDaGFyKCk7CgkgICAgICAgIGlmIChmaXJzdENoYXJhY3RlciA9PSBudWxsKSB7CgkgICAgICAgICAgICByZXR1cm4gZmFsc2U7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGNoZWNrc3VtID0gZmlyc3RDaGFyYWN0ZXIuZ2V0Q2hlY2tzdW1Qb3J0aW9uKCk7CgkgICAgICAgIHZhciBzID0gMjsKCSAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCB0aGlzLnBhaXJzLnNpemUoKTsgKytpKSB7CgkgICAgICAgICAgICB2YXIgY3VycmVudFBhaXIgPSB0aGlzLnBhaXJzLmdldChpKTsKCSAgICAgICAgICAgIGNoZWNrc3VtICs9IGN1cnJlbnRQYWlyLmdldExlZnRDaGFyKCkuZ2V0Q2hlY2tzdW1Qb3J0aW9uKCk7CgkgICAgICAgICAgICBzKys7CgkgICAgICAgICAgICB2YXIgY3VycmVudFJpZ2h0Q2hhciA9IGN1cnJlbnRQYWlyLmdldFJpZ2h0Q2hhcigpOwoJICAgICAgICAgICAgaWYgKGN1cnJlbnRSaWdodENoYXIgIT0gbnVsbCkgewoJICAgICAgICAgICAgICAgIGNoZWNrc3VtICs9IGN1cnJlbnRSaWdodENoYXIuZ2V0Q2hlY2tzdW1Qb3J0aW9uKCk7CgkgICAgICAgICAgICAgICAgcysrOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGNoZWNrc3VtICU9IDIxMTsKCSAgICAgICAgdmFyIGNoZWNrQ2hhcmFjdGVyVmFsdWUgPSAyMTEgKiAocyAtIDQpICsgY2hlY2tzdW07CgkgICAgICAgIHJldHVybiBjaGVja0NoYXJhY3RlclZhbHVlID09IGNoZWNrQ2hhcmFjdGVyLmdldFZhbHVlKCk7CgkgICAgfTsKCSAgICBSU1NFeHBhbmRlZFJlYWRlci5nZXROZXh0U2Vjb25kQmFyID0gZnVuY3Rpb24gKHJvdywgaW5pdGlhbFBvcykgewoJICAgICAgICB2YXIgY3VycmVudFBvczsKCSAgICAgICAgaWYgKHJvdy5nZXQoaW5pdGlhbFBvcykpIHsKCSAgICAgICAgICAgIGN1cnJlbnRQb3MgPSByb3cuZ2V0TmV4dFVuc2V0KGluaXRpYWxQb3MpOwoJICAgICAgICAgICAgY3VycmVudFBvcyA9IHJvdy5nZXROZXh0U2V0KGN1cnJlbnRQb3MpOwoJICAgICAgICB9CgkgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgY3VycmVudFBvcyA9IHJvdy5nZXROZXh0U2V0KGluaXRpYWxQb3MpOwoJICAgICAgICAgICAgY3VycmVudFBvcyA9IHJvdy5nZXROZXh0VW5zZXQoY3VycmVudFBvcyk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIGN1cnJlbnRQb3M7CgkgICAgfTsKCSAgICAvLyBub3QgcHJpdmF0ZSBmb3IgdGVzdGluZwoJICAgIFJTU0V4cGFuZGVkUmVhZGVyLnByb3RvdHlwZS5yZXRyaWV2ZU5leHRQYWlyID0gZnVuY3Rpb24gKHJvdywgcHJldmlvdXNQYWlycywgcm93TnVtYmVyKSB7CgkgICAgICAgIHZhciBpc09kZFBhdHRlcm4gPSBwcmV2aW91c1BhaXJzLmxlbmd0aCAlIDIgPT0gMDsKCSAgICAgICAgaWYgKHRoaXMuc3RhcnRGcm9tRXZlbikgewoJICAgICAgICAgICAgaXNPZGRQYXR0ZXJuID0gIWlzT2RkUGF0dGVybjsKCSAgICAgICAgfQoJICAgICAgICB2YXIgcGF0dGVybjsKCSAgICAgICAgdmFyIGtlZXBGaW5kaW5nID0gdHJ1ZTsKCSAgICAgICAgdmFyIGZvcmNlZE9mZnNldCA9IC0xOwoJICAgICAgICBkbyB7CgkgICAgICAgICAgICB0aGlzLmZpbmROZXh0UGFpcihyb3csIHByZXZpb3VzUGFpcnMsIGZvcmNlZE9mZnNldCk7CgkgICAgICAgICAgICBwYXR0ZXJuID0gdGhpcy5wYXJzZUZvdW5kRmluZGVyUGF0dGVybihyb3csIHJvd051bWJlciwgaXNPZGRQYXR0ZXJuKTsKCSAgICAgICAgICAgIGlmIChwYXR0ZXJuID09IG51bGwpIHsKCSAgICAgICAgICAgICAgICBmb3JjZWRPZmZzZXQgPSBSU1NFeHBhbmRlZFJlYWRlci5nZXROZXh0U2Vjb25kQmFyKHJvdywgdGhpcy5zdGFydEVuZFswXSk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICBrZWVwRmluZGluZyA9IGZhbHNlOwoJICAgICAgICAgICAgfQoJICAgICAgICB9IHdoaWxlIChrZWVwRmluZGluZyk7CgkgICAgICAgIC8vIFdoZW4gc3RhY2tlZCBzeW1ib2wgaXMgc3BsaXQgb3ZlciBtdWx0aXBsZSByb3dzLCB0aGVyZSdzIG5vIHdheSB0byBndWVzcyBpZiB0aGlzIHBhaXIgY2FuIGJlIGxhc3Qgb3Igbm90LgoJICAgICAgICAvLyBib29sZWFuIG1heUJlTGFzdCA9IGNoZWNrUGFpclNlcXVlbmNlKHByZXZpb3VzUGFpcnMsIHBhdHRlcm4pOwoJICAgICAgICB2YXIgbGVmdENoYXIgPSB0aGlzLmRlY29kZURhdGFDaGFyYWN0ZXIocm93LCBwYXR0ZXJuLCBpc09kZFBhdHRlcm4sIHRydWUpOwoJICAgICAgICBpZiAoIXRoaXMuaXNFbXB0eVBhaXIocHJldmlvdXNQYWlycykgJiYgcHJldmlvdXNQYWlyc1twcmV2aW91c1BhaXJzLmxlbmd0aCAtIDFdLm11c3RCZUxhc3QoKSkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgICAgIHZhciByaWdodENoYXI7CgkgICAgICAgIHRyeSB7CgkgICAgICAgICAgICByaWdodENoYXIgPSB0aGlzLmRlY29kZURhdGFDaGFyYWN0ZXIocm93LCBwYXR0ZXJuLCBpc09kZFBhdHRlcm4sIGZhbHNlKTsKCSAgICAgICAgfQoJICAgICAgICBjYXRjaCAoZSkgewoJICAgICAgICAgICAgcmlnaHRDaGFyID0gbnVsbDsKCSAgICAgICAgICAgIGNvbnNvbGUubG9nKGUpOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBuZXcgRXhwYW5kZWRQYWlyXzEuZGVmYXVsdChsZWZ0Q2hhciwgcmlnaHRDaGFyLCBwYXR0ZXJuLCB0cnVlKTsKCSAgICB9OwoJICAgIFJTU0V4cGFuZGVkUmVhZGVyLnByb3RvdHlwZS5pc0VtcHR5UGFpciA9IGZ1bmN0aW9uIChwYWlycykgewoJICAgICAgICBpZiAocGFpcnMubGVuZ3RoID09PSAwKSB7CgkgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gZmFsc2U7CgkgICAgfTsKCSAgICBSU1NFeHBhbmRlZFJlYWRlci5wcm90b3R5cGUuZmluZE5leHRQYWlyID0gZnVuY3Rpb24gKHJvdywgcHJldmlvdXNQYWlycywgZm9yY2VkT2Zmc2V0KSB7CgkgICAgICAgIHZhciBjb3VudGVycyA9IHRoaXMuZ2V0RGVjb2RlRmluZGVyQ291bnRlcnMoKTsKCSAgICAgICAgY291bnRlcnNbMF0gPSAwOwoJICAgICAgICBjb3VudGVyc1sxXSA9IDA7CgkgICAgICAgIGNvdW50ZXJzWzJdID0gMDsKCSAgICAgICAgY291bnRlcnNbM10gPSAwOwoJICAgICAgICB2YXIgd2lkdGggPSByb3cuZ2V0U2l6ZSgpOwoJICAgICAgICB2YXIgcm93T2Zmc2V0OwoJICAgICAgICBpZiAoZm9yY2VkT2Zmc2V0ID49IDApIHsKCSAgICAgICAgICAgIHJvd09mZnNldCA9IGZvcmNlZE9mZnNldDsKCSAgICAgICAgfQoJICAgICAgICBlbHNlIGlmICh0aGlzLmlzRW1wdHlQYWlyKHByZXZpb3VzUGFpcnMpKSB7CgkgICAgICAgICAgICByb3dPZmZzZXQgPSAwOwoJICAgICAgICB9CgkgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgdmFyIGxhc3RQYWlyID0gcHJldmlvdXNQYWlyc1twcmV2aW91c1BhaXJzLmxlbmd0aCAtIDFdOwoJICAgICAgICAgICAgcm93T2Zmc2V0ID0gbGFzdFBhaXIuZ2V0RmluZGVyUGF0dGVybigpLmdldFN0YXJ0RW5kKClbMV07CgkgICAgICAgIH0KCSAgICAgICAgdmFyIHNlYXJjaGluZ0V2ZW5QYWlyID0gcHJldmlvdXNQYWlycy5sZW5ndGggJSAyICE9IDA7CgkgICAgICAgIGlmICh0aGlzLnN0YXJ0RnJvbUV2ZW4pIHsKCSAgICAgICAgICAgIHNlYXJjaGluZ0V2ZW5QYWlyID0gIXNlYXJjaGluZ0V2ZW5QYWlyOwoJICAgICAgICB9CgkgICAgICAgIHZhciBpc1doaXRlID0gZmFsc2U7CgkgICAgICAgIHdoaWxlIChyb3dPZmZzZXQgPCB3aWR0aCkgewoJICAgICAgICAgICAgaXNXaGl0ZSA9ICFyb3cuZ2V0KHJvd09mZnNldCk7CgkgICAgICAgICAgICBpZiAoIWlzV2hpdGUpIHsKCSAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHJvd09mZnNldCsrOwoJICAgICAgICB9CgkgICAgICAgIHZhciBjb3VudGVyUG9zaXRpb24gPSAwOwoJICAgICAgICB2YXIgcGF0dGVyblN0YXJ0ID0gcm93T2Zmc2V0OwoJICAgICAgICBmb3IgKHZhciB4ID0gcm93T2Zmc2V0OyB4IDwgd2lkdGg7IHgrKykgewoJICAgICAgICAgICAgaWYgKHJvdy5nZXQoeCkgIT0gaXNXaGl0ZSkgewoJICAgICAgICAgICAgICAgIGNvdW50ZXJzW2NvdW50ZXJQb3NpdGlvbl0rKzsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgIGlmIChjb3VudGVyUG9zaXRpb24gPT0gMykgewoJICAgICAgICAgICAgICAgICAgICBpZiAoc2VhcmNoaW5nRXZlblBhaXIpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIFJTU0V4cGFuZGVkUmVhZGVyLnJldmVyc2VDb3VudGVycyhjb3VudGVycyk7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgaWYgKFJTU0V4cGFuZGVkUmVhZGVyLmlzRmluZGVyUGF0dGVybihjb3VudGVycykpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRFbmRbMF0gPSBwYXR0ZXJuU3RhcnQ7CgkgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0RW5kWzFdID0geDsKCSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICBpZiAoc2VhcmNoaW5nRXZlblBhaXIpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIFJTU0V4cGFuZGVkUmVhZGVyLnJldmVyc2VDb3VudGVycyhjb3VudGVycyk7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgcGF0dGVyblN0YXJ0ICs9IGNvdW50ZXJzWzBdICsgY291bnRlcnNbMV07CgkgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJzWzBdID0gY291bnRlcnNbMl07CgkgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJzWzFdID0gY291bnRlcnNbM107CgkgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJzWzJdID0gMDsKCSAgICAgICAgICAgICAgICAgICAgY291bnRlcnNbM10gPSAwOwoJICAgICAgICAgICAgICAgICAgICBjb3VudGVyUG9zaXRpb24tLTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJQb3NpdGlvbisrOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBjb3VudGVyc1tjb3VudGVyUG9zaXRpb25dID0gMTsKCSAgICAgICAgICAgICAgICBpc1doaXRlID0gIWlzV2hpdGU7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgIH07CgkgICAgUlNTRXhwYW5kZWRSZWFkZXIucmV2ZXJzZUNvdW50ZXJzID0gZnVuY3Rpb24gKGNvdW50ZXJzKSB7CgkgICAgICAgIHZhciBsZW5ndGggPSBjb3VudGVycy5sZW5ndGg7CgkgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoIC8gMjsgKytpKSB7CgkgICAgICAgICAgICB2YXIgdG1wID0gY291bnRlcnNbaV07CgkgICAgICAgICAgICBjb3VudGVyc1tpXSA9IGNvdW50ZXJzW2xlbmd0aCAtIGkgLSAxXTsKCSAgICAgICAgICAgIGNvdW50ZXJzW2xlbmd0aCAtIGkgLSAxXSA9IHRtcDsKCSAgICAgICAgfQoJICAgIH07CgkgICAgUlNTRXhwYW5kZWRSZWFkZXIucHJvdG90eXBlLnBhcnNlRm91bmRGaW5kZXJQYXR0ZXJuID0gZnVuY3Rpb24gKHJvdywgcm93TnVtYmVyLCBvZGRQYXR0ZXJuKSB7CgkgICAgICAgIC8vIEFjdHVhbGx5IHdlIGZvdW5kIGVsZW1lbnRzIDItNS4KCSAgICAgICAgdmFyIGZpcnN0Q291bnRlcjsKCSAgICAgICAgdmFyIHN0YXJ0OwoJICAgICAgICB2YXIgZW5kOwoJICAgICAgICBpZiAob2RkUGF0dGVybikgewoJICAgICAgICAgICAgLy8gSWYgcGF0dGVybiBudW1iZXIgaXMgb2RkLCB3ZSBuZWVkIHRvIGxvY2F0ZSBlbGVtZW50IDEgKmJlZm9yZSogdGhlIGN1cnJlbnQgYmxvY2suCgkgICAgICAgICAgICB2YXIgZmlyc3RFbGVtZW50U3RhcnQgPSB0aGlzLnN0YXJ0RW5kWzBdIC0gMTsKCSAgICAgICAgICAgIC8vIExvY2F0ZSBlbGVtZW50IDEKCSAgICAgICAgICAgIHdoaWxlIChmaXJzdEVsZW1lbnRTdGFydCA+PSAwICYmICFyb3cuZ2V0KGZpcnN0RWxlbWVudFN0YXJ0KSkgewoJICAgICAgICAgICAgICAgIGZpcnN0RWxlbWVudFN0YXJ0LS07CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBmaXJzdEVsZW1lbnRTdGFydCsrOwoJICAgICAgICAgICAgZmlyc3RDb3VudGVyID0gdGhpcy5zdGFydEVuZFswXSAtIGZpcnN0RWxlbWVudFN0YXJ0OwoJICAgICAgICAgICAgc3RhcnQgPSBmaXJzdEVsZW1lbnRTdGFydDsKCSAgICAgICAgICAgIGVuZCA9IHRoaXMuc3RhcnRFbmRbMV07CgkgICAgICAgIH0KCSAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAvLyBJZiBwYXR0ZXJuIG51bWJlciBpcyBldmVuLCB0aGUgcGF0dGVybiBpcyByZXZlcnNlZCwgc28gd2UgbmVlZCB0byBsb2NhdGUgZWxlbWVudCAxICphZnRlciogdGhlIGN1cnJlbnQgYmxvY2suCgkgICAgICAgICAgICBzdGFydCA9IHRoaXMuc3RhcnRFbmRbMF07CgkgICAgICAgICAgICBlbmQgPSByb3cuZ2V0TmV4dFVuc2V0KHRoaXMuc3RhcnRFbmRbMV0gKyAxKTsKCSAgICAgICAgICAgIGZpcnN0Q291bnRlciA9IGVuZCAtIHRoaXMuc3RhcnRFbmRbMV07CgkgICAgICAgIH0KCSAgICAgICAgLy8gTWFrZSAnY291bnRlcnMnIGhvbGQgMS00CgkgICAgICAgIHZhciBjb3VudGVycyA9IHRoaXMuZ2V0RGVjb2RlRmluZGVyQ291bnRlcnMoKTsKCSAgICAgICAgU3lzdGVtXzEuZGVmYXVsdC5hcnJheWNvcHkoY291bnRlcnMsIDAsIGNvdW50ZXJzLCAxLCBjb3VudGVycy5sZW5ndGggLSAxKTsKCSAgICAgICAgY291bnRlcnNbMF0gPSBmaXJzdENvdW50ZXI7CgkgICAgICAgIHZhciB2YWx1ZTsKCSAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgIHZhbHVlID0gdGhpcy5wYXJzZUZpbmRlclZhbHVlKGNvdW50ZXJzLCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUVEVSTlMpOwoJICAgICAgICB9CgkgICAgICAgIGNhdGNoIChlKSB7CgkgICAgICAgICAgICByZXR1cm4gbnVsbDsKCSAgICAgICAgfQoJICAgICAgICAvLyByZXR1cm4gbmV3IEZpbmRlclBhdHRlcm4odmFsdWUsIG5ldyBpbnRbXSB7IHN0YXJ0LCBlbmQgfSwgc3RhcnQsIGVuZCwgcm93TnVtYmVyfSk7CgkgICAgICAgIHJldHVybiBuZXcgRmluZGVyUGF0dGVybl8xLmRlZmF1bHQodmFsdWUsIFtzdGFydCwgZW5kXSwgc3RhcnQsIGVuZCwgcm93TnVtYmVyKTsKCSAgICB9OwoJICAgIFJTU0V4cGFuZGVkUmVhZGVyLnByb3RvdHlwZS5kZWNvZGVEYXRhQ2hhcmFjdGVyID0gZnVuY3Rpb24gKHJvdywgcGF0dGVybiwgaXNPZGRQYXR0ZXJuLCBsZWZ0Q2hhcikgewoJICAgICAgICB2YXIgY291bnRlcnMgPSB0aGlzLmdldERhdGFDaGFyYWN0ZXJDb3VudGVycygpOwoJICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IGNvdW50ZXJzLmxlbmd0aDsgeCsrKSB7CgkgICAgICAgICAgICBjb3VudGVyc1t4XSA9IDA7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKGxlZnRDaGFyKSB7CgkgICAgICAgICAgICBSU1NFeHBhbmRlZFJlYWRlci5yZWNvcmRQYXR0ZXJuSW5SZXZlcnNlKHJvdywgcGF0dGVybi5nZXRTdGFydEVuZCgpWzBdLCBjb3VudGVycyk7CgkgICAgICAgIH0KCSAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICBSU1NFeHBhbmRlZFJlYWRlci5yZWNvcmRQYXR0ZXJuKHJvdywgcGF0dGVybi5nZXRTdGFydEVuZCgpWzFdLCBjb3VudGVycyk7CgkgICAgICAgICAgICAvLyByZXZlcnNlIGl0CgkgICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgaiA9IGNvdW50ZXJzLmxlbmd0aCAtIDE7IGkgPCBqOyBpKyssIGotLSkgewoJICAgICAgICAgICAgICAgIHZhciB0ZW1wID0gY291bnRlcnNbaV07CgkgICAgICAgICAgICAgICAgY291bnRlcnNbaV0gPSBjb3VudGVyc1tqXTsKCSAgICAgICAgICAgICAgICBjb3VudGVyc1tqXSA9IHRlbXA7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0gLy8gY291bnRlcnNbXSBoYXMgdGhlIHBpeGVscyBvZiB0aGUgbW9kdWxlCgkgICAgICAgIHZhciBudW1Nb2R1bGVzID0gMTc7IC8vIGxlZnQgYW5kIHJpZ2h0IGRhdGEgY2hhcmFjdGVycyBoYXZlIGFsbCB0aGUgc2FtZSBsZW5ndGgKCSAgICAgICAgdmFyIGVsZW1lbnRXaWR0aCA9IE1hdGhVdGlsc18xLmRlZmF1bHQuc3VtKG5ldyBJbnQzMkFycmF5KGNvdW50ZXJzKSkgLyBudW1Nb2R1bGVzOwoJICAgICAgICAvLyBTYW5pdHkgY2hlY2s6IGVsZW1lbnQgd2lkdGggZm9yIHBhdHRlcm4gYW5kIHRoZSBjaGFyYWN0ZXIgc2hvdWxkIG1hdGNoCgkgICAgICAgIHZhciBleHBlY3RlZEVsZW1lbnRXaWR0aCA9IChwYXR0ZXJuLmdldFN0YXJ0RW5kKClbMV0gLSBwYXR0ZXJuLmdldFN0YXJ0RW5kKClbMF0pIC8gMTUuMDsKCSAgICAgICAgaWYgKE1hdGguYWJzKGVsZW1lbnRXaWR0aCAtIGV4cGVjdGVkRWxlbWVudFdpZHRoKSAvIGV4cGVjdGVkRWxlbWVudFdpZHRoID4gMC4zKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIG9kZENvdW50cyA9IHRoaXMuZ2V0T2RkQ291bnRzKCk7CgkgICAgICAgIHZhciBldmVuQ291bnRzID0gdGhpcy5nZXRFdmVuQ291bnRzKCk7CgkgICAgICAgIHZhciBvZGRSb3VuZGluZ0Vycm9ycyA9IHRoaXMuZ2V0T2RkUm91bmRpbmdFcnJvcnMoKTsKCSAgICAgICAgdmFyIGV2ZW5Sb3VuZGluZ0Vycm9ycyA9IHRoaXMuZ2V0RXZlblJvdW5kaW5nRXJyb3JzKCk7CgkgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnRlcnMubGVuZ3RoOyBpKyspIHsKCSAgICAgICAgICAgIHZhciB2YWx1ZV8xID0gMS4wICogY291bnRlcnNbaV0gLyBlbGVtZW50V2lkdGg7CgkgICAgICAgICAgICB2YXIgY291bnQgPSB2YWx1ZV8xICsgMC41OyAvLyBSb3VuZAoJICAgICAgICAgICAgaWYgKGNvdW50IDwgMSkgewoJICAgICAgICAgICAgICAgIGlmICh2YWx1ZV8xIDwgMC4zKSB7CgkgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgY291bnQgPSAxOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZWxzZSBpZiAoY291bnQgPiA4KSB7CgkgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzEgPiA4LjcpIHsKCSAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBjb3VudCA9IDg7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICB2YXIgb2Zmc2V0ID0gaSAvIDI7CgkgICAgICAgICAgICBpZiAoKGkgJiAweDAxKSA9PSAwKSB7CgkgICAgICAgICAgICAgICAgb2RkQ291bnRzW29mZnNldF0gPSBjb3VudDsKCSAgICAgICAgICAgICAgICBvZGRSb3VuZGluZ0Vycm9yc1tvZmZzZXRdID0gdmFsdWVfMSAtIGNvdW50OwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgZXZlbkNvdW50c1tvZmZzZXRdID0gY291bnQ7CgkgICAgICAgICAgICAgICAgZXZlblJvdW5kaW5nRXJyb3JzW29mZnNldF0gPSB2YWx1ZV8xIC0gY291bnQ7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgdGhpcy5hZGp1c3RPZGRFdmVuQ291bnRzKG51bU1vZHVsZXMpOwoJICAgICAgICB2YXIgd2VpZ2h0Um93TnVtYmVyID0gNCAqIHBhdHRlcm4uZ2V0VmFsdWUoKSArIChpc09kZFBhdHRlcm4gPyAwIDogMikgKyAobGVmdENoYXIgPyAwIDogMSkgLSAxOwoJICAgICAgICB2YXIgb2RkU3VtID0gMDsKCSAgICAgICAgdmFyIG9kZENoZWNrc3VtUG9ydGlvbiA9IDA7CgkgICAgICAgIGZvciAodmFyIGkgPSBvZGRDb3VudHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsKCSAgICAgICAgICAgIGlmIChSU1NFeHBhbmRlZFJlYWRlci5pc05vdEExbGVmdChwYXR0ZXJuLCBpc09kZFBhdHRlcm4sIGxlZnRDaGFyKSkgewoJICAgICAgICAgICAgICAgIHZhciB3ZWlnaHQgPSBSU1NFeHBhbmRlZFJlYWRlci5XRUlHSFRTW3dlaWdodFJvd051bWJlcl1bMiAqIGldOwoJICAgICAgICAgICAgICAgIG9kZENoZWNrc3VtUG9ydGlvbiArPSBvZGRDb3VudHNbaV0gKiB3ZWlnaHQ7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBvZGRTdW0gKz0gb2RkQ291bnRzW2ldOwoJICAgICAgICB9CgkgICAgICAgIHZhciBldmVuQ2hlY2tzdW1Qb3J0aW9uID0gMDsKCSAgICAgICAgLy8gaW50IGV2ZW5TdW0gPSAwOwoJICAgICAgICBmb3IgKHZhciBpID0gZXZlbkNvdW50cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgewoJICAgICAgICAgICAgaWYgKFJTU0V4cGFuZGVkUmVhZGVyLmlzTm90QTFsZWZ0KHBhdHRlcm4sIGlzT2RkUGF0dGVybiwgbGVmdENoYXIpKSB7CgkgICAgICAgICAgICAgICAgdmFyIHdlaWdodCA9IFJTU0V4cGFuZGVkUmVhZGVyLldFSUdIVFNbd2VpZ2h0Um93TnVtYmVyXVsyICogaSArIDFdOwoJICAgICAgICAgICAgICAgIGV2ZW5DaGVja3N1bVBvcnRpb24gKz0gZXZlbkNvdW50c1tpXSAqIHdlaWdodDsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIC8vIGV2ZW5TdW0gKz0gZXZlbkNvdW50c1tpXTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgY2hlY2tzdW1Qb3J0aW9uID0gb2RkQ2hlY2tzdW1Qb3J0aW9uICsgZXZlbkNoZWNrc3VtUG9ydGlvbjsKCSAgICAgICAgaWYgKChvZGRTdW0gJiAweDAxKSAhPSAwIHx8IG9kZFN1bSA+IDEzIHx8IG9kZFN1bSA8IDQpIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgZ3JvdXAgPSAoMTMgLSBvZGRTdW0pIC8gMjsKCSAgICAgICAgdmFyIG9kZFdpZGVzdCA9IFJTU0V4cGFuZGVkUmVhZGVyLlNZTUJPTF9XSURFU1RbZ3JvdXBdOwoJICAgICAgICB2YXIgZXZlbldpZGVzdCA9IDkgLSBvZGRXaWRlc3Q7CgkgICAgICAgIHZhciB2T2RkID0gUlNTVXRpbHNfMS5kZWZhdWx0LmdldFJTU3ZhbHVlKG9kZENvdW50cywgb2RkV2lkZXN0LCB0cnVlKTsKCSAgICAgICAgdmFyIHZFdmVuID0gUlNTVXRpbHNfMS5kZWZhdWx0LmdldFJTU3ZhbHVlKGV2ZW5Db3VudHMsIGV2ZW5XaWRlc3QsIGZhbHNlKTsKCSAgICAgICAgdmFyIHRFdmVuID0gUlNTRXhwYW5kZWRSZWFkZXIuRVZFTl9UT1RBTF9TVUJTRVRbZ3JvdXBdOwoJICAgICAgICB2YXIgZ1N1bSA9IFJTU0V4cGFuZGVkUmVhZGVyLkdTVU1bZ3JvdXBdOwoJICAgICAgICB2YXIgdmFsdWUgPSB2T2RkICogdEV2ZW4gKyB2RXZlbiArIGdTdW07CgkgICAgICAgIHJldHVybiBuZXcgRGF0YUNoYXJhY3Rlcl8xLmRlZmF1bHQodmFsdWUsIGNoZWNrc3VtUG9ydGlvbik7CgkgICAgfTsKCSAgICBSU1NFeHBhbmRlZFJlYWRlci5pc05vdEExbGVmdCA9IGZ1bmN0aW9uIChwYXR0ZXJuLCBpc09kZFBhdHRlcm4sIGxlZnRDaGFyKSB7CgkgICAgICAgIC8vIEExOiBwYXR0ZXJuLmdldFZhbHVlIGlzIDAgKEEpLCBhbmQgaXQncyBhbiBvZGRQYXR0ZXJuLCBhbmQgaXQgaXMgYSBsZWZ0IGNoYXIKCSAgICAgICAgcmV0dXJuICEocGF0dGVybi5nZXRWYWx1ZSgpID09IDAgJiYgaXNPZGRQYXR0ZXJuICYmIGxlZnRDaGFyKTsKCSAgICB9OwoJICAgIFJTU0V4cGFuZGVkUmVhZGVyLnByb3RvdHlwZS5hZGp1c3RPZGRFdmVuQ291bnRzID0gZnVuY3Rpb24gKG51bU1vZHVsZXMpIHsKCSAgICAgICAgdmFyIG9kZFN1bSA9IE1hdGhVdGlsc18xLmRlZmF1bHQuc3VtKG5ldyBJbnQzMkFycmF5KHRoaXMuZ2V0T2RkQ291bnRzKCkpKTsKCSAgICAgICAgdmFyIGV2ZW5TdW0gPSBNYXRoVXRpbHNfMS5kZWZhdWx0LnN1bShuZXcgSW50MzJBcnJheSh0aGlzLmdldEV2ZW5Db3VudHMoKSkpOwoJICAgICAgICB2YXIgaW5jcmVtZW50T2RkID0gZmFsc2U7CgkgICAgICAgIHZhciBkZWNyZW1lbnRPZGQgPSBmYWxzZTsKCSAgICAgICAgaWYgKG9kZFN1bSA+IDEzKSB7CgkgICAgICAgICAgICBkZWNyZW1lbnRPZGQgPSB0cnVlOwoJICAgICAgICB9CgkgICAgICAgIGVsc2UgaWYgKG9kZFN1bSA8IDQpIHsKCSAgICAgICAgICAgIGluY3JlbWVudE9kZCA9IHRydWU7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGluY3JlbWVudEV2ZW4gPSBmYWxzZTsKCSAgICAgICAgdmFyIGRlY3JlbWVudEV2ZW4gPSBmYWxzZTsKCSAgICAgICAgaWYgKGV2ZW5TdW0gPiAxMykgewoJICAgICAgICAgICAgZGVjcmVtZW50RXZlbiA9IHRydWU7CgkgICAgICAgIH0KCSAgICAgICAgZWxzZSBpZiAoZXZlblN1bSA8IDQpIHsKCSAgICAgICAgICAgIGluY3JlbWVudEV2ZW4gPSB0cnVlOwoJICAgICAgICB9CgkgICAgICAgIHZhciBtaXNtYXRjaCA9IG9kZFN1bSArIGV2ZW5TdW0gLSBudW1Nb2R1bGVzOwoJICAgICAgICB2YXIgb2RkUGFyaXR5QmFkID0gKG9kZFN1bSAmIDB4MDEpID09IDE7CgkgICAgICAgIHZhciBldmVuUGFyaXR5QmFkID0gKGV2ZW5TdW0gJiAweDAxKSA9PSAwOwoJICAgICAgICBpZiAobWlzbWF0Y2ggPT0gMSkgewoJICAgICAgICAgICAgaWYgKG9kZFBhcml0eUJhZCkgewoJICAgICAgICAgICAgICAgIGlmIChldmVuUGFyaXR5QmFkKSB7CgkgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgZGVjcmVtZW50T2RkID0gdHJ1ZTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgIGlmICghZXZlblBhcml0eUJhZCkgewoJICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGRlY3JlbWVudEV2ZW4gPSB0cnVlOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGVsc2UgaWYgKG1pc21hdGNoID09IC0xKSB7CgkgICAgICAgICAgICBpZiAob2RkUGFyaXR5QmFkKSB7CgkgICAgICAgICAgICAgICAgaWYgKGV2ZW5QYXJpdHlCYWQpIHsKCSAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBpbmNyZW1lbnRPZGQgPSB0cnVlOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgaWYgKCFldmVuUGFyaXR5QmFkKSB7CgkgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgaW5jcmVtZW50RXZlbiA9IHRydWU7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgZWxzZSBpZiAobWlzbWF0Y2ggPT0gMCkgewoJICAgICAgICAgICAgaWYgKG9kZFBhcml0eUJhZCkgewoJICAgICAgICAgICAgICAgIGlmICghZXZlblBhcml0eUJhZCkgewoJICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIC8vIEJvdGggYmFkCgkgICAgICAgICAgICAgICAgaWYgKG9kZFN1bSA8IGV2ZW5TdW0pIHsKCSAgICAgICAgICAgICAgICAgICAgaW5jcmVtZW50T2RkID0gdHJ1ZTsKCSAgICAgICAgICAgICAgICAgICAgZGVjcmVtZW50RXZlbiA9IHRydWU7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgICAgICBkZWNyZW1lbnRPZGQgPSB0cnVlOwoJICAgICAgICAgICAgICAgICAgICBpbmNyZW1lbnRFdmVuID0gdHJ1ZTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICBpZiAoZXZlblBhcml0eUJhZCkgewoJICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIC8vIE5vdGhpbmcgdG8gZG8hCgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKGluY3JlbWVudE9kZCkgewoJICAgICAgICAgICAgaWYgKGRlY3JlbWVudE9kZCkgewoJICAgICAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIFJTU0V4cGFuZGVkUmVhZGVyLmluY3JlbWVudCh0aGlzLmdldE9kZENvdW50cygpLCB0aGlzLmdldE9kZFJvdW5kaW5nRXJyb3JzKCkpOwoJICAgICAgICB9CgkgICAgICAgIGlmIChkZWNyZW1lbnRPZGQpIHsKCSAgICAgICAgICAgIFJTU0V4cGFuZGVkUmVhZGVyLmRlY3JlbWVudCh0aGlzLmdldE9kZENvdW50cygpLCB0aGlzLmdldE9kZFJvdW5kaW5nRXJyb3JzKCkpOwoJICAgICAgICB9CgkgICAgICAgIGlmIChpbmNyZW1lbnRFdmVuKSB7CgkgICAgICAgICAgICBpZiAoZGVjcmVtZW50RXZlbikgewoJICAgICAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIFJTU0V4cGFuZGVkUmVhZGVyLmluY3JlbWVudCh0aGlzLmdldEV2ZW5Db3VudHMoKSwgdGhpcy5nZXRPZGRSb3VuZGluZ0Vycm9ycygpKTsKCSAgICAgICAgfQoJICAgICAgICBpZiAoZGVjcmVtZW50RXZlbikgewoJICAgICAgICAgICAgUlNTRXhwYW5kZWRSZWFkZXIuZGVjcmVtZW50KHRoaXMuZ2V0RXZlbkNvdW50cygpLCB0aGlzLmdldEV2ZW5Sb3VuZGluZ0Vycm9ycygpKTsKCSAgICAgICAgfQoJICAgIH07CgkgICAgUlNTRXhwYW5kZWRSZWFkZXIuU1lNQk9MX1dJREVTVCA9IFs3LCA1LCA0LCAzLCAxXTsKCSAgICBSU1NFeHBhbmRlZFJlYWRlci5FVkVOX1RPVEFMX1NVQlNFVCA9IFs0LCAyMCwgNTIsIDEwNCwgMjA0XTsKCSAgICBSU1NFeHBhbmRlZFJlYWRlci5HU1VNID0gWzAsIDM0OCwgMTM4OCwgMjk0OCwgMzk4OF07CgkgICAgUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVFRFUk5TID0gWwoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDgsIDQsIDFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFszLCA2LCA0LCAxXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMywgNCwgNiwgMV0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzMsIDIsIDgsIDFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsyLCA2LCA1LCAxXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMiwgMiwgOSwgMV0pIC8vIEYKCSAgICBdOwoJICAgIFJTU0V4cGFuZGVkUmVhZGVyLldFSUdIVFMgPSBbCgkgICAgICAgIFsxLCAzLCA5LCAyNywgODEsIDMyLCA5NiwgNzddLAoJICAgICAgICBbMjAsIDYwLCAxODAsIDExOCwgMTQzLCA3LCAyMSwgNjNdLAoJICAgICAgICBbMTg5LCAxNDUsIDEzLCAzOSwgMTE3LCAxNDAsIDIwOSwgMjA1XSwKCSAgICAgICAgWzE5MywgMTU3LCA0OSwgMTQ3LCAxOSwgNTcsIDE3MSwgOTFdLAoJICAgICAgICBbNjIsIDE4NiwgMTM2LCAxOTcsIDE2OSwgODUsIDQ0LCAxMzJdLAoJICAgICAgICBbMTg1LCAxMzMsIDE4OCwgMTQyLCA0LCAxMiwgMzYsIDEwOF0sCgkgICAgICAgIFsxMTMsIDEyOCwgMTczLCA5NywgODAsIDI5LCA4NywgNTBdLAoJICAgICAgICBbMTUwLCAyOCwgODQsIDQxLCAxMjMsIDE1OCwgNTIsIDE1Nl0sCgkgICAgICAgIFs0NiwgMTM4LCAyMDMsIDE4NywgMTM5LCAyMDYsIDE5NiwgMTY2XSwKCSAgICAgICAgWzc2LCAxNywgNTEsIDE1MywgMzcsIDExMSwgMTIyLCAxNTVdLAoJICAgICAgICBbNDMsIDEyOSwgMTc2LCAxMDYsIDEwNywgMTEwLCAxMTksIDE0Nl0sCgkgICAgICAgIFsxNiwgNDgsIDE0NCwgMTAsIDMwLCA5MCwgNTksIDE3N10sCgkgICAgICAgIFsxMDksIDExNiwgMTM3LCAyMDAsIDE3OCwgMTEyLCAxMjUsIDE2NF0sCgkgICAgICAgIFs3MCwgMjEwLCAyMDgsIDIwMiwgMTg0LCAxMzAsIDE3OSwgMTE1XSwKCSAgICAgICAgWzEzNCwgMTkxLCAxNTEsIDMxLCA5MywgNjgsIDIwNCwgMTkwXSwKCSAgICAgICAgWzE0OCwgMjIsIDY2LCAxOTgsIDE3MiwgOTQsIDcxLCAyXSwKCSAgICAgICAgWzYsIDE4LCA1NCwgMTYyLCA2NCwgMTkyLCAxNTQsIDQwXSwKCSAgICAgICAgWzEyMCwgMTQ5LCAyNSwgNzUsIDE0LCA0MiwgMTI2LCAxNjddLAoJICAgICAgICBbNzksIDI2LCA3OCwgMjMsIDY5LCAyMDcsIDE5OSwgMTc1XSwKCSAgICAgICAgWzEwMywgOTgsIDgzLCAzOCwgMTE0LCAxMzEsIDE4MiwgMTI0XSwKCSAgICAgICAgWzE2MSwgNjEsIDE4MywgMTI3LCAxNzAsIDg4LCA1MywgMTU5XSwKCSAgICAgICAgWzU1LCAxNjUsIDczLCA4LCAyNCwgNzIsIDUsIDE1XSwKCSAgICAgICAgWzQ1LCAxMzUsIDE5NCwgMTYwLCA1OCwgMTc0LCAxMDAsIDg5XQoJICAgIF07CgkgICAgUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9BID0gMDsKCSAgICBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0IgPSAxOwoJICAgIFJTU0V4cGFuZGVkUmVhZGVyLkZJTkRFUl9QQVRfQyA9IDI7CgkgICAgUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9EID0gMzsKCSAgICBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0UgPSA0OwoJICAgIFJTU0V4cGFuZGVkUmVhZGVyLkZJTkRFUl9QQVRfRiA9IDU7CgkgICAgUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVFRFUk5fU0VRVUVOQ0VTID0gWwoJICAgICAgICBbUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9BLCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0FdLAoJICAgICAgICBbUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9BLCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0IsIFJTU0V4cGFuZGVkUmVhZGVyLkZJTkRFUl9QQVRfQl0sCgkgICAgICAgIFtSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0EsIFJTU0V4cGFuZGVkUmVhZGVyLkZJTkRFUl9QQVRfQywgUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9CLCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0RdLAoJICAgICAgICBbUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9BLCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0UsIFJTU0V4cGFuZGVkUmVhZGVyLkZJTkRFUl9QQVRfQiwgUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9ELCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0NdLAoJICAgICAgICBbUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9BLCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0UsIFJTU0V4cGFuZGVkUmVhZGVyLkZJTkRFUl9QQVRfQiwgUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9ELCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0QsIFJTU0V4cGFuZGVkUmVhZGVyLkZJTkRFUl9QQVRfRl0sCgkgICAgICAgIFtSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0EsIFJTU0V4cGFuZGVkUmVhZGVyLkZJTkRFUl9QQVRfRSwgUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9CLCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0QsIFJTU0V4cGFuZGVkUmVhZGVyLkZJTkRFUl9QQVRfRSwgUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9GLCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0ZdLAoJICAgICAgICBbUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9BLCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0EsIFJTU0V4cGFuZGVkUmVhZGVyLkZJTkRFUl9QQVRfQiwgUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9CLCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0MsIFJTU0V4cGFuZGVkUmVhZGVyLkZJTkRFUl9QQVRfQywgUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9ELCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0RdLAoJICAgICAgICBbUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9BLCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0EsIFJTU0V4cGFuZGVkUmVhZGVyLkZJTkRFUl9QQVRfQiwgUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9CLCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0MsIFJTU0V4cGFuZGVkUmVhZGVyLkZJTkRFUl9QQVRfQywgUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9ELCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0UsIFJTU0V4cGFuZGVkUmVhZGVyLkZJTkRFUl9QQVRfRV0sCgkgICAgICAgIFtSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0EsIFJTU0V4cGFuZGVkUmVhZGVyLkZJTkRFUl9QQVRfQSwgUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9CLCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0IsIFJTU0V4cGFuZGVkUmVhZGVyLkZJTkRFUl9QQVRfQywgUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9DLCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0QsIFJTU0V4cGFuZGVkUmVhZGVyLkZJTkRFUl9QQVRfRSwgUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9GLCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0ZdLAoJICAgICAgICBbUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9BLCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0EsIFJTU0V4cGFuZGVkUmVhZGVyLkZJTkRFUl9QQVRfQiwgUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9CLCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0MsIFJTU0V4cGFuZGVkUmVhZGVyLkZJTkRFUl9QQVRfRCwgUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9ELCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0UsIFJTU0V4cGFuZGVkUmVhZGVyLkZJTkRFUl9QQVRfRSwgUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9GLCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0ZdLAoJICAgIF07CgkgICAgUlNTRXhwYW5kZWRSZWFkZXIuTUFYX1BBSVJTID0gMTE7CgkgICAgcmV0dXJuIFJTU0V4cGFuZGVkUmVhZGVyOwoJfShBYnN0cmFjdFJTU1JlYWRlcl8xLmRlZmF1bHQpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IFJTU0V4cGFuZGVkUmVhZGVyOwoKCX0pOwoKCXZhciBQYWlyXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7Cgl2YXIgX19leHRlbmRzID0gKGNvbW1vbmpzR2xvYmFsICYmIGNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHsKCSAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwKCSAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHwKCSAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9OwoJICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICB9OwoJICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH0KCSAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpOwoJICAgIH07Cgl9KSgpOwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCgl2YXIgUGFpciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHsKCSAgICBfX2V4dGVuZHMoUGFpciwgX3N1cGVyKTsKCSAgICBmdW5jdGlvbiBQYWlyKHZhbHVlLCBjaGVja3N1bVBvcnRpb24sIGZpbmRlclBhdHRlcm4pIHsKCSAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgdmFsdWUsIGNoZWNrc3VtUG9ydGlvbikgfHwgdGhpczsKCSAgICAgICAgX3RoaXMuY291bnQgPSAwOwoJICAgICAgICBfdGhpcy5maW5kZXJQYXR0ZXJuID0gZmluZGVyUGF0dGVybjsKCSAgICAgICAgcmV0dXJuIF90aGlzOwoJICAgIH0KCSAgICBQYWlyLnByb3RvdHlwZS5nZXRGaW5kZXJQYXR0ZXJuID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5maW5kZXJQYXR0ZXJuOwoJICAgIH07CgkgICAgUGFpci5wcm90b3R5cGUuZ2V0Q291bnQgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmNvdW50OwoJICAgIH07CgkgICAgUGFpci5wcm90b3R5cGUuaW5jcmVtZW50Q291bnQgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHRoaXMuY291bnQrKzsKCSAgICB9OwoJICAgIHJldHVybiBQYWlyOwoJfShEYXRhQ2hhcmFjdGVyXzEuZGVmYXVsdCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gUGFpcjsKCgl9KTsKCgl2YXIgUlNTMTRSZWFkZXJfMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCXZhciBfX2V4dGVuZHMgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkgewoJICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fAoJICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fAoJICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07CgkgICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgIH07CgkgICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfQoJICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7CgkgICAgfTsKCX0pKCk7Cgl2YXIgX192YWx1ZXMgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX192YWx1ZXMpIHx8IGZ1bmN0aW9uKG8pIHsKCSAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09ICJmdW5jdGlvbiIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDsKCSAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTsKCSAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09ICJudW1iZXIiKSByZXR1cm4gewoJICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7CgkgICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwOwoJICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9OwoJICAgICAgICB9CgkgICAgfTsKCSAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyAiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS4iIDogIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC4iKTsKCX07CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoKCgoKCgoKCgoKCgoKCgl2YXIgUlNTMTRSZWFkZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7CgkgICAgX19leHRlbmRzKFJTUzE0UmVhZGVyLCBfc3VwZXIpOwoJICAgIGZ1bmN0aW9uIFJTUzE0UmVhZGVyKCkgewoJICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpczsKCSAgICAgICAgX3RoaXMucG9zc2libGVMZWZ0UGFpcnMgPSBbXTsKCSAgICAgICAgX3RoaXMucG9zc2libGVSaWdodFBhaXJzID0gW107CgkgICAgICAgIHJldHVybiBfdGhpczsKCSAgICB9CgkgICAgUlNTMTRSZWFkZXIucHJvdG90eXBlLmRlY29kZVJvdyA9IGZ1bmN0aW9uIChyb3dOdW1iZXIsIHJvdywgaGludHMpIHsKCSAgICAgICAgdmFyIGVfMSwgX2EsIGVfMiwgX2I7CgkgICAgICAgIHZhciBsZWZ0UGFpciA9IHRoaXMuZGVjb2RlUGFpcihyb3csIGZhbHNlLCByb3dOdW1iZXIsIGhpbnRzKTsKCSAgICAgICAgUlNTMTRSZWFkZXIuYWRkT3JUYWxseSh0aGlzLnBvc3NpYmxlTGVmdFBhaXJzLCBsZWZ0UGFpcik7CgkgICAgICAgIHJvdy5yZXZlcnNlKCk7CgkgICAgICAgIHZhciByaWdodFBhaXIgPSB0aGlzLmRlY29kZVBhaXIocm93LCB0cnVlLCByb3dOdW1iZXIsIGhpbnRzKTsKCSAgICAgICAgUlNTMTRSZWFkZXIuYWRkT3JUYWxseSh0aGlzLnBvc3NpYmxlUmlnaHRQYWlycywgcmlnaHRQYWlyKTsKCSAgICAgICAgcm93LnJldmVyc2UoKTsKCSAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgIGZvciAodmFyIF9jID0gX192YWx1ZXModGhpcy5wb3NzaWJsZUxlZnRQYWlycyksIF9kID0gX2MubmV4dCgpOyAhX2QuZG9uZTsgX2QgPSBfYy5uZXh0KCkpIHsKCSAgICAgICAgICAgICAgICB2YXIgbGVmdCA9IF9kLnZhbHVlOwoJICAgICAgICAgICAgICAgIGlmIChsZWZ0LmdldENvdW50KCkgPiAxKSB7CgkgICAgICAgICAgICAgICAgICAgIHRyeSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBfZSA9IChlXzIgPSB2b2lkIDAsIF9fdmFsdWVzKHRoaXMucG9zc2libGVSaWdodFBhaXJzKSksIF9mID0gX2UubmV4dCgpOyAhX2YuZG9uZTsgX2YgPSBfZS5uZXh0KCkpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmlnaHQgPSBfZi52YWx1ZTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmlnaHQuZ2V0Q291bnQoKSA+IDEgJiYgUlNTMTRSZWFkZXIuY2hlY2tDaGVja3N1bShsZWZ0LCByaWdodCkpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJTUzE0UmVhZGVyLmNvbnN0cnVjdFJlc3VsdChsZWZ0LCByaWdodCk7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIGNhdGNoIChlXzJfMSkgeyBlXzIgPSB7IGVycm9yOiBlXzJfMSB9OyB9CgkgICAgICAgICAgICAgICAgICAgIGZpbmFsbHkgewoJICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2YgJiYgIV9mLmRvbmUgJiYgKF9iID0gX2UucmV0dXJuKSkgX2IuY2FsbChfZSk7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMikgdGhyb3cgZV8yLmVycm9yOyB9CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH0KCSAgICAgICAgZmluYWxseSB7CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIGlmIChfZCAmJiAhX2QuZG9uZSAmJiAoX2EgPSBfYy5yZXR1cm4pKSBfYS5jYWxsKF9jKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH0KCSAgICAgICAgfQoJICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgfTsKCSAgICBSU1MxNFJlYWRlci5hZGRPclRhbGx5ID0gZnVuY3Rpb24gKHBvc3NpYmxlUGFpcnMsIHBhaXIpIHsKCSAgICAgICAgdmFyIGVfMywgX2E7CgkgICAgICAgIGlmIChwYWlyID09IG51bGwpIHsKCSAgICAgICAgICAgIHJldHVybjsKCSAgICAgICAgfQoJICAgICAgICB2YXIgZm91bmQgPSBmYWxzZTsKCSAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgIGZvciAodmFyIHBvc3NpYmxlUGFpcnNfMSA9IF9fdmFsdWVzKHBvc3NpYmxlUGFpcnMpLCBwb3NzaWJsZVBhaXJzXzFfMSA9IHBvc3NpYmxlUGFpcnNfMS5uZXh0KCk7ICFwb3NzaWJsZVBhaXJzXzFfMS5kb25lOyBwb3NzaWJsZVBhaXJzXzFfMSA9IHBvc3NpYmxlUGFpcnNfMS5uZXh0KCkpIHsKCSAgICAgICAgICAgICAgICB2YXIgb3RoZXIgPSBwb3NzaWJsZVBhaXJzXzFfMS52YWx1ZTsKCSAgICAgICAgICAgICAgICBpZiAob3RoZXIuZ2V0VmFsdWUoKSA9PT0gcGFpci5nZXRWYWx1ZSgpKSB7CgkgICAgICAgICAgICAgICAgICAgIG90aGVyLmluY3JlbWVudENvdW50KCk7CgkgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGNhdGNoIChlXzNfMSkgeyBlXzMgPSB7IGVycm9yOiBlXzNfMSB9OyB9CgkgICAgICAgIGZpbmFsbHkgewoJICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICBpZiAocG9zc2libGVQYWlyc18xXzEgJiYgIXBvc3NpYmxlUGFpcnNfMV8xLmRvbmUgJiYgKF9hID0gcG9zc2libGVQYWlyc18xLnJldHVybikpIF9hLmNhbGwocG9zc2libGVQYWlyc18xKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8zKSB0aHJvdyBlXzMuZXJyb3I7IH0KCSAgICAgICAgfQoJICAgICAgICBpZiAoIWZvdW5kKSB7CgkgICAgICAgICAgICBwb3NzaWJsZVBhaXJzLnB1c2gocGFpcik7CgkgICAgICAgIH0KCSAgICB9OwoJICAgIFJTUzE0UmVhZGVyLnByb3RvdHlwZS5yZXNldCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgdGhpcy5wb3NzaWJsZUxlZnRQYWlycy5sZW5ndGggPSAwOwoJICAgICAgICB0aGlzLnBvc3NpYmxlUmlnaHRQYWlycy5sZW5ndGggPSAwOwoJICAgIH07CgkgICAgUlNTMTRSZWFkZXIuY29uc3RydWN0UmVzdWx0ID0gZnVuY3Rpb24gKGxlZnRQYWlyLCByaWdodFBhaXIpIHsKCSAgICAgICAgdmFyIHN5bWJvbFZhbHVlID0gNDUzNzA3NyAqIGxlZnRQYWlyLmdldFZhbHVlKCkgKyByaWdodFBhaXIuZ2V0VmFsdWUoKTsKCSAgICAgICAgdmFyIHRleHQgPSBuZXcgU3RyaW5nKHN5bWJvbFZhbHVlKS50b1N0cmluZygpOwoJICAgICAgICB2YXIgYnVmZmVyID0gbmV3IFN0cmluZ0J1aWxkZXJfMS5kZWZhdWx0KCk7CgkgICAgICAgIGZvciAodmFyIGkgPSAxMyAtIHRleHQubGVuZ3RoOyBpID4gMDsgaS0tKSB7CgkgICAgICAgICAgICBidWZmZXIuYXBwZW5kKCcwJyk7CgkgICAgICAgIH0KCSAgICAgICAgYnVmZmVyLmFwcGVuZCh0ZXh0KTsKCSAgICAgICAgdmFyIGNoZWNrRGlnaXQgPSAwOwoJICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEzOyBpKyspIHsKCSAgICAgICAgICAgIHZhciBkaWdpdCA9IGJ1ZmZlci5jaGFyQXQoaSkuY2hhckNvZGVBdCgwKSAtICcwJy5jaGFyQ29kZUF0KDApOwoJICAgICAgICAgICAgY2hlY2tEaWdpdCArPSAoKGkgJiAweDAxKSA9PT0gMCkgPyAzICogZGlnaXQgOiBkaWdpdDsKCSAgICAgICAgfQoJICAgICAgICBjaGVja0RpZ2l0ID0gMTAgLSAoY2hlY2tEaWdpdCAlIDEwKTsKCSAgICAgICAgaWYgKGNoZWNrRGlnaXQgPT09IDEwKSB7CgkgICAgICAgICAgICBjaGVja0RpZ2l0ID0gMDsKCSAgICAgICAgfQoJICAgICAgICBidWZmZXIuYXBwZW5kKGNoZWNrRGlnaXQudG9TdHJpbmcoKSk7CgkgICAgICAgIHZhciBsZWZ0UG9pbnRzID0gbGVmdFBhaXIuZ2V0RmluZGVyUGF0dGVybigpLmdldFJlc3VsdFBvaW50cygpOwoJICAgICAgICB2YXIgcmlnaHRQb2ludHMgPSByaWdodFBhaXIuZ2V0RmluZGVyUGF0dGVybigpLmdldFJlc3VsdFBvaW50cygpOwoJICAgICAgICByZXR1cm4gbmV3IFJlc3VsdF8xLmRlZmF1bHQoYnVmZmVyLnRvU3RyaW5nKCksIG51bGwsIDAsIFtsZWZ0UG9pbnRzWzBdLCBsZWZ0UG9pbnRzWzFdLCByaWdodFBvaW50c1swXSwgcmlnaHRQb2ludHNbMV1dLCBCYXJjb2RlRm9ybWF0XzEuZGVmYXVsdC5SU1NfMTQsIG5ldyBEYXRlKCkuZ2V0VGltZSgpKTsKCSAgICB9OwoJICAgIFJTUzE0UmVhZGVyLmNoZWNrQ2hlY2tzdW0gPSBmdW5jdGlvbiAobGVmdFBhaXIsIHJpZ2h0UGFpcikgewoJICAgICAgICB2YXIgY2hlY2tWYWx1ZSA9IChsZWZ0UGFpci5nZXRDaGVja3N1bVBvcnRpb24oKSArIDE2ICogcmlnaHRQYWlyLmdldENoZWNrc3VtUG9ydGlvbigpKSAlIDc5OwoJICAgICAgICB2YXIgdGFyZ2V0Q2hlY2tWYWx1ZSA9IDkgKiBsZWZ0UGFpci5nZXRGaW5kZXJQYXR0ZXJuKCkuZ2V0VmFsdWUoKSArIHJpZ2h0UGFpci5nZXRGaW5kZXJQYXR0ZXJuKCkuZ2V0VmFsdWUoKTsKCSAgICAgICAgaWYgKHRhcmdldENoZWNrVmFsdWUgPiA3MikgewoJICAgICAgICAgICAgdGFyZ2V0Q2hlY2tWYWx1ZS0tOwoJICAgICAgICB9CgkgICAgICAgIGlmICh0YXJnZXRDaGVja1ZhbHVlID4gOCkgewoJICAgICAgICAgICAgdGFyZ2V0Q2hlY2tWYWx1ZS0tOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBjaGVja1ZhbHVlID09PSB0YXJnZXRDaGVja1ZhbHVlOwoJICAgIH07CgkgICAgUlNTMTRSZWFkZXIucHJvdG90eXBlLmRlY29kZVBhaXIgPSBmdW5jdGlvbiAocm93LCByaWdodCwgcm93TnVtYmVyLCBoaW50cykgewoJICAgICAgICB0cnkgewoJICAgICAgICAgICAgdmFyIHN0YXJ0RW5kID0gdGhpcy5maW5kRmluZGVyUGF0dGVybihyb3csIHJpZ2h0KTsKCSAgICAgICAgICAgIHZhciBwYXR0ZXJuID0gdGhpcy5wYXJzZUZvdW5kRmluZGVyUGF0dGVybihyb3csIHJvd051bWJlciwgcmlnaHQsIHN0YXJ0RW5kKTsKCSAgICAgICAgICAgIHZhciByZXN1bHRQb2ludENhbGxiYWNrID0gaGludHMgPT0gbnVsbCA/IG51bGwgOiBoaW50cy5nZXQoRGVjb2RlSGludFR5cGVfMS5kZWZhdWx0Lk5FRURfUkVTVUxUX1BPSU5UX0NBTExCQUNLKTsKCSAgICAgICAgICAgIGlmIChyZXN1bHRQb2ludENhbGxiYWNrICE9IG51bGwpIHsKCSAgICAgICAgICAgICAgICB2YXIgY2VudGVyID0gKHN0YXJ0RW5kWzBdICsgc3RhcnRFbmRbMV0pIC8gMi4wOwoJICAgICAgICAgICAgICAgIGlmIChyaWdodCkgewoJICAgICAgICAgICAgICAgICAgICAvLyByb3cgaXMgYWN0dWFsbHkgcmV2ZXJzZWQKCSAgICAgICAgICAgICAgICAgICAgY2VudGVyID0gcm93LmdldFNpemUoKSAtIDEgLSBjZW50ZXI7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIHJlc3VsdFBvaW50Q2FsbGJhY2suZm91bmRQb3NzaWJsZVJlc3VsdFBvaW50KG5ldyBSZXN1bHRQb2ludF8xLmRlZmF1bHQoY2VudGVyLCByb3dOdW1iZXIpKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHZhciBvdXRzaWRlID0gdGhpcy5kZWNvZGVEYXRhQ2hhcmFjdGVyKHJvdywgcGF0dGVybiwgdHJ1ZSk7CgkgICAgICAgICAgICB2YXIgaW5zaWRlID0gdGhpcy5kZWNvZGVEYXRhQ2hhcmFjdGVyKHJvdywgcGF0dGVybiwgZmFsc2UpOwoJICAgICAgICAgICAgcmV0dXJuIG5ldyBQYWlyXzEuZGVmYXVsdCgxNTk3ICogb3V0c2lkZS5nZXRWYWx1ZSgpICsgaW5zaWRlLmdldFZhbHVlKCksIG91dHNpZGUuZ2V0Q2hlY2tzdW1Qb3J0aW9uKCkgKyA0ICogaW5zaWRlLmdldENoZWNrc3VtUG9ydGlvbigpLCBwYXR0ZXJuKTsKCSAgICAgICAgfQoJICAgICAgICBjYXRjaCAoZXJyKSB7CgkgICAgICAgICAgICByZXR1cm4gbnVsbDsKCSAgICAgICAgfQoJICAgIH07CgkgICAgUlNTMTRSZWFkZXIucHJvdG90eXBlLmRlY29kZURhdGFDaGFyYWN0ZXIgPSBmdW5jdGlvbiAocm93LCBwYXR0ZXJuLCBvdXRzaWRlQ2hhcikgewoJICAgICAgICB2YXIgY291bnRlcnMgPSB0aGlzLmdldERhdGFDaGFyYWN0ZXJDb3VudGVycygpOwoJICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IGNvdW50ZXJzLmxlbmd0aDsgeCsrKSB7CgkgICAgICAgICAgICBjb3VudGVyc1t4XSA9IDA7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKG91dHNpZGVDaGFyKSB7CgkgICAgICAgICAgICBPbmVEUmVhZGVyXzEuZGVmYXVsdC5yZWNvcmRQYXR0ZXJuSW5SZXZlcnNlKHJvdywgcGF0dGVybi5nZXRTdGFydEVuZCgpWzBdLCBjb3VudGVycyk7CgkgICAgICAgIH0KCSAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICBPbmVEUmVhZGVyXzEuZGVmYXVsdC5yZWNvcmRQYXR0ZXJuKHJvdywgcGF0dGVybi5nZXRTdGFydEVuZCgpWzFdICsgMSwgY291bnRlcnMpOwoJICAgICAgICAgICAgLy8gcmV2ZXJzZSBpdAoJICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGogPSBjb3VudGVycy5sZW5ndGggLSAxOyBpIDwgajsgaSsrLCBqLS0pIHsKCSAgICAgICAgICAgICAgICB2YXIgdGVtcCA9IGNvdW50ZXJzW2ldOwoJICAgICAgICAgICAgICAgIGNvdW50ZXJzW2ldID0gY291bnRlcnNbal07CgkgICAgICAgICAgICAgICAgY291bnRlcnNbal0gPSB0ZW1wOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHZhciBudW1Nb2R1bGVzID0gb3V0c2lkZUNoYXIgPyAxNiA6IDE1OwoJICAgICAgICB2YXIgZWxlbWVudFdpZHRoID0gTWF0aFV0aWxzXzEuZGVmYXVsdC5zdW0obmV3IEludDMyQXJyYXkoY291bnRlcnMpKSAvIG51bU1vZHVsZXM7CgkgICAgICAgIHZhciBvZGRDb3VudHMgPSB0aGlzLmdldE9kZENvdW50cygpOwoJICAgICAgICB2YXIgZXZlbkNvdW50cyA9IHRoaXMuZ2V0RXZlbkNvdW50cygpOwoJICAgICAgICB2YXIgb2RkUm91bmRpbmdFcnJvcnMgPSB0aGlzLmdldE9kZFJvdW5kaW5nRXJyb3JzKCk7CgkgICAgICAgIHZhciBldmVuUm91bmRpbmdFcnJvcnMgPSB0aGlzLmdldEV2ZW5Sb3VuZGluZ0Vycm9ycygpOwoJICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50ZXJzLmxlbmd0aDsgaSsrKSB7CgkgICAgICAgICAgICB2YXIgdmFsdWUgPSBjb3VudGVyc1tpXSAvIGVsZW1lbnRXaWR0aDsKCSAgICAgICAgICAgIHZhciBjb3VudCA9IE1hdGguZmxvb3IodmFsdWUgKyAwLjUpOwoJICAgICAgICAgICAgaWYgKGNvdW50IDwgMSkgewoJICAgICAgICAgICAgICAgIGNvdW50ID0gMTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGVsc2UgaWYgKGNvdW50ID4gOCkgewoJICAgICAgICAgICAgICAgIGNvdW50ID0gODsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHZhciBvZmZzZXQgPSBNYXRoLmZsb29yKGkgLyAyKTsKCSAgICAgICAgICAgIGlmICgoaSAmIDB4MDEpID09PSAwKSB7CgkgICAgICAgICAgICAgICAgb2RkQ291bnRzW29mZnNldF0gPSBjb3VudDsKCSAgICAgICAgICAgICAgICBvZGRSb3VuZGluZ0Vycm9yc1tvZmZzZXRdID0gdmFsdWUgLSBjb3VudDsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgIGV2ZW5Db3VudHNbb2Zmc2V0XSA9IGNvdW50OwoJICAgICAgICAgICAgICAgIGV2ZW5Sb3VuZGluZ0Vycm9yc1tvZmZzZXRdID0gdmFsdWUgLSBjb3VudDsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICB0aGlzLmFkanVzdE9kZEV2ZW5Db3VudHMob3V0c2lkZUNoYXIsIG51bU1vZHVsZXMpOwoJICAgICAgICB2YXIgb2RkU3VtID0gMDsKCSAgICAgICAgdmFyIG9kZENoZWNrc3VtUG9ydGlvbiA9IDA7CgkgICAgICAgIGZvciAodmFyIGkgPSBvZGRDb3VudHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsKCSAgICAgICAgICAgIG9kZENoZWNrc3VtUG9ydGlvbiAqPSA5OwoJICAgICAgICAgICAgb2RkQ2hlY2tzdW1Qb3J0aW9uICs9IG9kZENvdW50c1tpXTsKCSAgICAgICAgICAgIG9kZFN1bSArPSBvZGRDb3VudHNbaV07CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGV2ZW5DaGVja3N1bVBvcnRpb24gPSAwOwoJICAgICAgICB2YXIgZXZlblN1bSA9IDA7CgkgICAgICAgIGZvciAodmFyIGkgPSBldmVuQ291bnRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7CgkgICAgICAgICAgICBldmVuQ2hlY2tzdW1Qb3J0aW9uICo9IDk7CgkgICAgICAgICAgICBldmVuQ2hlY2tzdW1Qb3J0aW9uICs9IGV2ZW5Db3VudHNbaV07CgkgICAgICAgICAgICBldmVuU3VtICs9IGV2ZW5Db3VudHNbaV07CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGNoZWNrc3VtUG9ydGlvbiA9IG9kZENoZWNrc3VtUG9ydGlvbiArIDMgKiBldmVuQ2hlY2tzdW1Qb3J0aW9uOwoJICAgICAgICBpZiAob3V0c2lkZUNoYXIpIHsKCSAgICAgICAgICAgIGlmICgob2RkU3VtICYgMHgwMSkgIT09IDAgfHwgb2RkU3VtID4gMTIgfHwgb2RkU3VtIDwgNCkgewoJICAgICAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHZhciBncm91cCA9ICgxMiAtIG9kZFN1bSkgLyAyOwoJICAgICAgICAgICAgdmFyIG9kZFdpZGVzdCA9IFJTUzE0UmVhZGVyLk9VVFNJREVfT0REX1dJREVTVFtncm91cF07CgkgICAgICAgICAgICB2YXIgZXZlbldpZGVzdCA9IDkgLSBvZGRXaWRlc3Q7CgkgICAgICAgICAgICB2YXIgdk9kZCA9IFJTU1V0aWxzXzEuZGVmYXVsdC5nZXRSU1N2YWx1ZShvZGRDb3VudHMsIG9kZFdpZGVzdCwgZmFsc2UpOwoJICAgICAgICAgICAgdmFyIHZFdmVuID0gUlNTVXRpbHNfMS5kZWZhdWx0LmdldFJTU3ZhbHVlKGV2ZW5Db3VudHMsIGV2ZW5XaWRlc3QsIHRydWUpOwoJICAgICAgICAgICAgdmFyIHRFdmVuID0gUlNTMTRSZWFkZXIuT1VUU0lERV9FVkVOX1RPVEFMX1NVQlNFVFtncm91cF07CgkgICAgICAgICAgICB2YXIgZ1N1bSA9IFJTUzE0UmVhZGVyLk9VVFNJREVfR1NVTVtncm91cF07CgkgICAgICAgICAgICByZXR1cm4gbmV3IERhdGFDaGFyYWN0ZXJfMS5kZWZhdWx0KHZPZGQgKiB0RXZlbiArIHZFdmVuICsgZ1N1bSwgY2hlY2tzdW1Qb3J0aW9uKTsKCSAgICAgICAgfQoJICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgIGlmICgoZXZlblN1bSAmIDB4MDEpICE9PSAwIHx8IGV2ZW5TdW0gPiAxMCB8fCBldmVuU3VtIDwgNCkgewoJICAgICAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHZhciBncm91cCA9ICgxMCAtIGV2ZW5TdW0pIC8gMjsKCSAgICAgICAgICAgIHZhciBvZGRXaWRlc3QgPSBSU1MxNFJlYWRlci5JTlNJREVfT0REX1dJREVTVFtncm91cF07CgkgICAgICAgICAgICB2YXIgZXZlbldpZGVzdCA9IDkgLSBvZGRXaWRlc3Q7CgkgICAgICAgICAgICB2YXIgdk9kZCA9IFJTU1V0aWxzXzEuZGVmYXVsdC5nZXRSU1N2YWx1ZShvZGRDb3VudHMsIG9kZFdpZGVzdCwgdHJ1ZSk7CgkgICAgICAgICAgICB2YXIgdkV2ZW4gPSBSU1NVdGlsc18xLmRlZmF1bHQuZ2V0UlNTdmFsdWUoZXZlbkNvdW50cywgZXZlbldpZGVzdCwgZmFsc2UpOwoJICAgICAgICAgICAgdmFyIHRPZGQgPSBSU1MxNFJlYWRlci5JTlNJREVfT0REX1RPVEFMX1NVQlNFVFtncm91cF07CgkgICAgICAgICAgICB2YXIgZ1N1bSA9IFJTUzE0UmVhZGVyLklOU0lERV9HU1VNW2dyb3VwXTsKCSAgICAgICAgICAgIHJldHVybiBuZXcgRGF0YUNoYXJhY3Rlcl8xLmRlZmF1bHQodkV2ZW4gKiB0T2RkICsgdk9kZCArIGdTdW0sIGNoZWNrc3VtUG9ydGlvbik7CgkgICAgICAgIH0KCSAgICB9OwoJICAgIFJTUzE0UmVhZGVyLnByb3RvdHlwZS5maW5kRmluZGVyUGF0dGVybiA9IGZ1bmN0aW9uIChyb3csIHJpZ2h0RmluZGVyUGF0dGVybikgewoJICAgICAgICB2YXIgY291bnRlcnMgPSB0aGlzLmdldERlY29kZUZpbmRlckNvdW50ZXJzKCk7CgkgICAgICAgIGNvdW50ZXJzWzBdID0gMDsKCSAgICAgICAgY291bnRlcnNbMV0gPSAwOwoJICAgICAgICBjb3VudGVyc1syXSA9IDA7CgkgICAgICAgIGNvdW50ZXJzWzNdID0gMDsKCSAgICAgICAgdmFyIHdpZHRoID0gcm93LmdldFNpemUoKTsKCSAgICAgICAgdmFyIGlzV2hpdGUgPSBmYWxzZTsKCSAgICAgICAgdmFyIHJvd09mZnNldCA9IDA7CgkgICAgICAgIHdoaWxlIChyb3dPZmZzZXQgPCB3aWR0aCkgewoJICAgICAgICAgICAgaXNXaGl0ZSA9ICFyb3cuZ2V0KHJvd09mZnNldCk7CgkgICAgICAgICAgICBpZiAocmlnaHRGaW5kZXJQYXR0ZXJuID09PSBpc1doaXRlKSB7CgkgICAgICAgICAgICAgICAgLy8gV2lsbCBlbmNvdW50ZXIgd2hpdGUgZmlyc3Qgd2hlbiBzZWFyY2hpbmcgZm9yIHJpZ2h0IGZpbmRlciBwYXR0ZXJuCgkgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICByb3dPZmZzZXQrKzsKCSAgICAgICAgfQoJICAgICAgICB2YXIgY291bnRlclBvc2l0aW9uID0gMDsKCSAgICAgICAgdmFyIHBhdHRlcm5TdGFydCA9IHJvd09mZnNldDsKCSAgICAgICAgZm9yICh2YXIgeCA9IHJvd09mZnNldDsgeCA8IHdpZHRoOyB4KyspIHsKCSAgICAgICAgICAgIGlmIChyb3cuZ2V0KHgpICE9PSBpc1doaXRlKSB7CgkgICAgICAgICAgICAgICAgY291bnRlcnNbY291bnRlclBvc2l0aW9uXSsrOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgaWYgKGNvdW50ZXJQb3NpdGlvbiA9PT0gMykgewoJICAgICAgICAgICAgICAgICAgICBpZiAoQWJzdHJhY3RSU1NSZWFkZXJfMS5kZWZhdWx0LmlzRmluZGVyUGF0dGVybihjb3VudGVycykpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbcGF0dGVyblN0YXJ0LCB4XTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuU3RhcnQgKz0gY291bnRlcnNbMF0gKyBjb3VudGVyc1sxXTsKCSAgICAgICAgICAgICAgICAgICAgY291bnRlcnNbMF0gPSBjb3VudGVyc1syXTsKCSAgICAgICAgICAgICAgICAgICAgY291bnRlcnNbMV0gPSBjb3VudGVyc1szXTsKCSAgICAgICAgICAgICAgICAgICAgY291bnRlcnNbMl0gPSAwOwoJICAgICAgICAgICAgICAgICAgICBjb3VudGVyc1szXSA9IDA7CgkgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJQb3NpdGlvbi0tOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICAgICAgY291bnRlclBvc2l0aW9uKys7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGNvdW50ZXJzW2NvdW50ZXJQb3NpdGlvbl0gPSAxOwoJICAgICAgICAgICAgICAgIGlzV2hpdGUgPSAhaXNXaGl0ZTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgfTsKCSAgICBSU1MxNFJlYWRlci5wcm90b3R5cGUucGFyc2VGb3VuZEZpbmRlclBhdHRlcm4gPSBmdW5jdGlvbiAocm93LCByb3dOdW1iZXIsIHJpZ2h0LCBzdGFydEVuZCkgewoJICAgICAgICAvLyBBY3R1YWxseSB3ZSBmb3VuZCBlbGVtZW50cyAyLTUKCSAgICAgICAgdmFyIGZpcnN0SXNCbGFjayA9IHJvdy5nZXQoc3RhcnRFbmRbMF0pOwoJICAgICAgICB2YXIgZmlyc3RFbGVtZW50U3RhcnQgPSBzdGFydEVuZFswXSAtIDE7CgkgICAgICAgIC8vIExvY2F0ZSBlbGVtZW50IDEKCSAgICAgICAgd2hpbGUgKGZpcnN0RWxlbWVudFN0YXJ0ID49IDAgJiYgZmlyc3RJc0JsYWNrICE9PSByb3cuZ2V0KGZpcnN0RWxlbWVudFN0YXJ0KSkgewoJICAgICAgICAgICAgZmlyc3RFbGVtZW50U3RhcnQtLTsKCSAgICAgICAgfQoJICAgICAgICBmaXJzdEVsZW1lbnRTdGFydCsrOwoJICAgICAgICB2YXIgZmlyc3RDb3VudGVyID0gc3RhcnRFbmRbMF0gLSBmaXJzdEVsZW1lbnRTdGFydDsKCSAgICAgICAgLy8gTWFrZSAnY291bnRlcnMnIGhvbGQgMS00CgkgICAgICAgIHZhciBjb3VudGVycyA9IHRoaXMuZ2V0RGVjb2RlRmluZGVyQ291bnRlcnMoKTsKCSAgICAgICAgdmFyIGNvcHkgPSBuZXcgSW50MzJBcnJheShjb3VudGVycy5sZW5ndGgpOwoJICAgICAgICBTeXN0ZW1fMS5kZWZhdWx0LmFycmF5Y29weShjb3VudGVycywgMCwgY29weSwgMSwgY291bnRlcnMubGVuZ3RoIC0gMSk7CgkgICAgICAgIGNvcHlbMF0gPSBmaXJzdENvdW50ZXI7CgkgICAgICAgIHZhciB2YWx1ZSA9IHRoaXMucGFyc2VGaW5kZXJWYWx1ZShjb3B5LCBSU1MxNFJlYWRlci5GSU5ERVJfUEFUVEVSTlMpOwoJICAgICAgICB2YXIgc3RhcnQgPSBmaXJzdEVsZW1lbnRTdGFydDsKCSAgICAgICAgdmFyIGVuZCA9IHN0YXJ0RW5kWzFdOwoJICAgICAgICBpZiAocmlnaHQpIHsKCSAgICAgICAgICAgIC8vIHJvdyBpcyBhY3R1YWxseSByZXZlcnNlZAoJICAgICAgICAgICAgc3RhcnQgPSByb3cuZ2V0U2l6ZSgpIC0gMSAtIHN0YXJ0OwoJICAgICAgICAgICAgZW5kID0gcm93LmdldFNpemUoKSAtIDEgLSBlbmQ7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIG5ldyBGaW5kZXJQYXR0ZXJuXzEuZGVmYXVsdCh2YWx1ZSwgW2ZpcnN0RWxlbWVudFN0YXJ0LCBzdGFydEVuZFsxXV0sIHN0YXJ0LCBlbmQsIHJvd051bWJlcik7CgkgICAgfTsKCSAgICBSU1MxNFJlYWRlci5wcm90b3R5cGUuYWRqdXN0T2RkRXZlbkNvdW50cyA9IGZ1bmN0aW9uIChvdXRzaWRlQ2hhciwgbnVtTW9kdWxlcykgewoJICAgICAgICB2YXIgb2RkU3VtID0gTWF0aFV0aWxzXzEuZGVmYXVsdC5zdW0obmV3IEludDMyQXJyYXkodGhpcy5nZXRPZGRDb3VudHMoKSkpOwoJICAgICAgICB2YXIgZXZlblN1bSA9IE1hdGhVdGlsc18xLmRlZmF1bHQuc3VtKG5ldyBJbnQzMkFycmF5KHRoaXMuZ2V0RXZlbkNvdW50cygpKSk7CgkgICAgICAgIHZhciBpbmNyZW1lbnRPZGQgPSBmYWxzZTsKCSAgICAgICAgdmFyIGRlY3JlbWVudE9kZCA9IGZhbHNlOwoJICAgICAgICB2YXIgaW5jcmVtZW50RXZlbiA9IGZhbHNlOwoJICAgICAgICB2YXIgZGVjcmVtZW50RXZlbiA9IGZhbHNlOwoJICAgICAgICBpZiAob3V0c2lkZUNoYXIpIHsKCSAgICAgICAgICAgIGlmIChvZGRTdW0gPiAxMikgewoJICAgICAgICAgICAgICAgIGRlY3JlbWVudE9kZCA9IHRydWU7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlIGlmIChvZGRTdW0gPCA0KSB7CgkgICAgICAgICAgICAgICAgaW5jcmVtZW50T2RkID0gdHJ1ZTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGlmIChldmVuU3VtID4gMTIpIHsKCSAgICAgICAgICAgICAgICBkZWNyZW1lbnRFdmVuID0gdHJ1ZTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW5TdW0gPCA0KSB7CgkgICAgICAgICAgICAgICAgaW5jcmVtZW50RXZlbiA9IHRydWU7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICBpZiAob2RkU3VtID4gMTEpIHsKCSAgICAgICAgICAgICAgICBkZWNyZW1lbnRPZGQgPSB0cnVlOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZWxzZSBpZiAob2RkU3VtIDwgNSkgewoJICAgICAgICAgICAgICAgIGluY3JlbWVudE9kZCA9IHRydWU7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBpZiAoZXZlblN1bSA+IDEwKSB7CgkgICAgICAgICAgICAgICAgZGVjcmVtZW50RXZlbiA9IHRydWU7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlIGlmIChldmVuU3VtIDwgNCkgewoJICAgICAgICAgICAgICAgIGluY3JlbWVudEV2ZW4gPSB0cnVlOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHZhciBtaXNtYXRjaCA9IG9kZFN1bSArIGV2ZW5TdW0gLSBudW1Nb2R1bGVzOwoJICAgICAgICB2YXIgb2RkUGFyaXR5QmFkID0gKG9kZFN1bSAmIDB4MDEpID09PSAob3V0c2lkZUNoYXIgPyAxIDogMCk7CgkgICAgICAgIHZhciBldmVuUGFyaXR5QmFkID0gKGV2ZW5TdW0gJiAweDAxKSA9PT0gMTsKCSAgICAgICAgaWYgKG1pc21hdGNoID09PSAxKSB7CgkgICAgICAgICAgICBpZiAob2RkUGFyaXR5QmFkKSB7CgkgICAgICAgICAgICAgICAgaWYgKGV2ZW5QYXJpdHlCYWQpIHsKCSAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBkZWNyZW1lbnRPZGQgPSB0cnVlOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgaWYgKCFldmVuUGFyaXR5QmFkKSB7CgkgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgZGVjcmVtZW50RXZlbiA9IHRydWU7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgZWxzZSBpZiAobWlzbWF0Y2ggPT09IC0xKSB7CgkgICAgICAgICAgICBpZiAob2RkUGFyaXR5QmFkKSB7CgkgICAgICAgICAgICAgICAgaWYgKGV2ZW5QYXJpdHlCYWQpIHsKCSAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBpbmNyZW1lbnRPZGQgPSB0cnVlOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgaWYgKCFldmVuUGFyaXR5QmFkKSB7CgkgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgaW5jcmVtZW50RXZlbiA9IHRydWU7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgZWxzZSBpZiAobWlzbWF0Y2ggPT09IDApIHsKCSAgICAgICAgICAgIGlmIChvZGRQYXJpdHlCYWQpIHsKCSAgICAgICAgICAgICAgICBpZiAoIWV2ZW5QYXJpdHlCYWQpIHsKCSAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAvLyBCb3RoIGJhZAoJICAgICAgICAgICAgICAgIGlmIChvZGRTdW0gPCBldmVuU3VtKSB7CgkgICAgICAgICAgICAgICAgICAgIGluY3JlbWVudE9kZCA9IHRydWU7CgkgICAgICAgICAgICAgICAgICAgIGRlY3JlbWVudEV2ZW4gPSB0cnVlOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICAgICAgZGVjcmVtZW50T2RkID0gdHJ1ZTsKCSAgICAgICAgICAgICAgICAgICAgaW5jcmVtZW50RXZlbiA9IHRydWU7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgaWYgKGV2ZW5QYXJpdHlCYWQpIHsKCSAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAvLyBOb3RoaW5nIHRvIGRvIQoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgICAgIGlmIChpbmNyZW1lbnRPZGQpIHsKCSAgICAgICAgICAgIGlmIChkZWNyZW1lbnRPZGQpIHsKCSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBBYnN0cmFjdFJTU1JlYWRlcl8xLmRlZmF1bHQuaW5jcmVtZW50KHRoaXMuZ2V0T2RkQ291bnRzKCksIHRoaXMuZ2V0T2RkUm91bmRpbmdFcnJvcnMoKSk7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKGRlY3JlbWVudE9kZCkgewoJICAgICAgICAgICAgQWJzdHJhY3RSU1NSZWFkZXJfMS5kZWZhdWx0LmRlY3JlbWVudCh0aGlzLmdldE9kZENvdW50cygpLCB0aGlzLmdldE9kZFJvdW5kaW5nRXJyb3JzKCkpOwoJICAgICAgICB9CgkgICAgICAgIGlmIChpbmNyZW1lbnRFdmVuKSB7CgkgICAgICAgICAgICBpZiAoZGVjcmVtZW50RXZlbikgewoJICAgICAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIEFic3RyYWN0UlNTUmVhZGVyXzEuZGVmYXVsdC5pbmNyZW1lbnQodGhpcy5nZXRFdmVuQ291bnRzKCksIHRoaXMuZ2V0T2RkUm91bmRpbmdFcnJvcnMoKSk7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKGRlY3JlbWVudEV2ZW4pIHsKCSAgICAgICAgICAgIEFic3RyYWN0UlNTUmVhZGVyXzEuZGVmYXVsdC5kZWNyZW1lbnQodGhpcy5nZXRFdmVuQ291bnRzKCksIHRoaXMuZ2V0RXZlblJvdW5kaW5nRXJyb3JzKCkpOwoJICAgICAgICB9CgkgICAgfTsKCSAgICBSU1MxNFJlYWRlci5PVVRTSURFX0VWRU5fVE9UQUxfU1VCU0VUID0gWzEsIDEwLCAzNCwgNzAsIDEyNl07CgkgICAgUlNTMTRSZWFkZXIuSU5TSURFX09ERF9UT1RBTF9TVUJTRVQgPSBbNCwgMjAsIDQ4LCA4MV07CgkgICAgUlNTMTRSZWFkZXIuT1VUU0lERV9HU1VNID0gWzAsIDE2MSwgOTYxLCAyMDE1LCAyNzE1XTsKCSAgICBSU1MxNFJlYWRlci5JTlNJREVfR1NVTSA9IFswLCAzMzYsIDEwMzYsIDE1MTZdOwoJICAgIFJTUzE0UmVhZGVyLk9VVFNJREVfT0REX1dJREVTVCA9IFs4LCA2LCA0LCAzLCAxXTsKCSAgICBSU1MxNFJlYWRlci5JTlNJREVfT0REX1dJREVTVCA9IFsyLCA0LCA2LCA4XTsKCSAgICBSU1MxNFJlYWRlci5GSU5ERVJfUEFUVEVSTlMgPSBbCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMywgOCwgMiwgMV0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzMsIDUsIDUsIDFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFszLCAzLCA3LCAxXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMywgMSwgOSwgMV0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzIsIDcsIDQsIDFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsyLCA1LCA2LCAxXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMiwgMywgOCwgMV0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDUsIDcsIDFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAzLCA5LCAxXSksCgkgICAgXTsKCSAgICByZXR1cm4gUlNTMTRSZWFkZXI7Cgl9KEFic3RyYWN0UlNTUmVhZGVyXzEuZGVmYXVsdCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gUlNTMTRSZWFkZXI7CgoJfSk7CgoJdmFyIE11bHRpRm9ybWF0T25lRFJlYWRlcl8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJLyoKCSAqIENvcHlyaWdodCAyMDA4IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCXZhciBfX2V4dGVuZHMgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkgewoJICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fAoJICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fAoJICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07CgkgICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgIH07CgkgICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfQoJICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7CgkgICAgfTsKCX0pKCk7CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJLypuYW1lc3BhY2UgY29tLmdvb2dsZS56eGluZy5vbmVkIHsqLwoKCgoKCgoKCgoKCS8qKgoJICogQGF1dGhvciBEYW5pZWwgU3dpdGtpbiA8ZHN3aXRraW5AZ29vZ2xlLmNvbT4KCSAqIEBhdXRob3IgU2VhbiBPd2VuCgkgKi8KCXZhciBNdWx0aUZvcm1hdE9uZURSZWFkZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7CgkgICAgX19leHRlbmRzKE11bHRpRm9ybWF0T25lRFJlYWRlciwgX3N1cGVyKTsKCSAgICBmdW5jdGlvbiBNdWx0aUZvcm1hdE9uZURSZWFkZXIoaGludHMpIHsKCSAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpczsKCSAgICAgICAgX3RoaXMucmVhZGVycyA9IFtdOwoJICAgICAgICB2YXIgcG9zc2libGVGb3JtYXRzID0gIWhpbnRzID8gbnVsbCA6IGhpbnRzLmdldChEZWNvZGVIaW50VHlwZV8xLmRlZmF1bHQuUE9TU0lCTEVfRk9STUFUUyk7CgkgICAgICAgIHZhciB1c2VDb2RlMzlDaGVja0RpZ2l0ID0gaGludHMgJiYgaGludHMuZ2V0KERlY29kZUhpbnRUeXBlXzEuZGVmYXVsdC5BU1NVTUVfQ09ERV8zOV9DSEVDS19ESUdJVCkgIT09IHVuZGVmaW5lZDsKCSAgICAgICAgaWYgKHBvc3NpYmxlRm9ybWF0cykgewoJICAgICAgICAgICAgaWYgKHBvc3NpYmxlRm9ybWF0cy5pbmNsdWRlcyhCYXJjb2RlRm9ybWF0XzEuZGVmYXVsdC5FQU5fMTMpIHx8CgkgICAgICAgICAgICAgICAgcG9zc2libGVGb3JtYXRzLmluY2x1ZGVzKEJhcmNvZGVGb3JtYXRfMS5kZWZhdWx0LlVQQ19BKSB8fAoJICAgICAgICAgICAgICAgIHBvc3NpYmxlRm9ybWF0cy5pbmNsdWRlcyhCYXJjb2RlRm9ybWF0XzEuZGVmYXVsdC5FQU5fOCkgfHwKCSAgICAgICAgICAgICAgICBwb3NzaWJsZUZvcm1hdHMuaW5jbHVkZXMoQmFyY29kZUZvcm1hdF8xLmRlZmF1bHQuVVBDX0UpKSB7CgkgICAgICAgICAgICAgICAgX3RoaXMucmVhZGVycy5wdXNoKG5ldyBNdWx0aUZvcm1hdFVQQ0VBTlJlYWRlcl8xLmRlZmF1bHQoaGludHMpKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGlmIChwb3NzaWJsZUZvcm1hdHMuaW5jbHVkZXMoQmFyY29kZUZvcm1hdF8xLmRlZmF1bHQuQ09ERV8zOSkpIHsKCSAgICAgICAgICAgICAgICBfdGhpcy5yZWFkZXJzLnB1c2gobmV3IENvZGUzOVJlYWRlcl8xLmRlZmF1bHQodXNlQ29kZTM5Q2hlY2tEaWdpdCkpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgLy8gaWYgKHBvc3NpYmxlRm9ybWF0cy5pbmNsdWRlcyhCYXJjb2RlRm9ybWF0LkNPREVfOTMpKSB7CgkgICAgICAgICAgICAvLyAgICB0aGlzLnJlYWRlcnMucHVzaChuZXcgQ29kZTkzUmVhZGVyKCkpOwoJICAgICAgICAgICAgLy8gfQoJICAgICAgICAgICAgaWYgKHBvc3NpYmxlRm9ybWF0cy5pbmNsdWRlcyhCYXJjb2RlRm9ybWF0XzEuZGVmYXVsdC5DT0RFXzEyOCkpIHsKCSAgICAgICAgICAgICAgICBfdGhpcy5yZWFkZXJzLnB1c2gobmV3IENvZGUxMjhSZWFkZXJfMS5kZWZhdWx0KCkpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgaWYgKHBvc3NpYmxlRm9ybWF0cy5pbmNsdWRlcyhCYXJjb2RlRm9ybWF0XzEuZGVmYXVsdC5JVEYpKSB7CgkgICAgICAgICAgICAgICAgX3RoaXMucmVhZGVycy5wdXNoKG5ldyBJVEZSZWFkZXJfMS5kZWZhdWx0KCkpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgLy8gaWYgKHBvc3NpYmxlRm9ybWF0cy5pbmNsdWRlcyhCYXJjb2RlRm9ybWF0LkNPREFCQVIpKSB7CgkgICAgICAgICAgICAvLyAgICB0aGlzLnJlYWRlcnMucHVzaChuZXcgQ29kYUJhclJlYWRlcigpKTsKCSAgICAgICAgICAgIC8vIH0KCSAgICAgICAgICAgIGlmIChwb3NzaWJsZUZvcm1hdHMuaW5jbHVkZXMoQmFyY29kZUZvcm1hdF8xLmRlZmF1bHQuUlNTXzE0KSkgewoJICAgICAgICAgICAgICAgIF90aGlzLnJlYWRlcnMucHVzaChuZXcgUlNTMTRSZWFkZXJfMS5kZWZhdWx0KCkpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgaWYgKHBvc3NpYmxlRm9ybWF0cy5pbmNsdWRlcyhCYXJjb2RlRm9ybWF0XzEuZGVmYXVsdC5SU1NfRVhQQU5ERUQpKSB7CgkgICAgICAgICAgICAgICAgX3RoaXMucmVhZGVycy5wdXNoKG5ldyBSU1NFeHBhbmRlZFJlYWRlcl8xLmRlZmF1bHQoKSk7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgaWYgKF90aGlzLnJlYWRlcnMubGVuZ3RoID09PSAwKSB7CgkgICAgICAgICAgICBfdGhpcy5yZWFkZXJzLnB1c2gobmV3IE11bHRpRm9ybWF0VVBDRUFOUmVhZGVyXzEuZGVmYXVsdChoaW50cykpOwoJICAgICAgICAgICAgX3RoaXMucmVhZGVycy5wdXNoKG5ldyBDb2RlMzlSZWFkZXJfMS5kZWZhdWx0KCkpOwoJICAgICAgICAgICAgLy8gdGhpcy5yZWFkZXJzLnB1c2gobmV3IENvZGFCYXJSZWFkZXIoKSk7CgkgICAgICAgICAgICAvLyB0aGlzLnJlYWRlcnMucHVzaChuZXcgQ29kZTkzUmVhZGVyKCkpOwoJICAgICAgICAgICAgX3RoaXMucmVhZGVycy5wdXNoKG5ldyBNdWx0aUZvcm1hdFVQQ0VBTlJlYWRlcl8xLmRlZmF1bHQoaGludHMpKTsKCSAgICAgICAgICAgIF90aGlzLnJlYWRlcnMucHVzaChuZXcgQ29kZTEyOFJlYWRlcl8xLmRlZmF1bHQoKSk7CgkgICAgICAgICAgICBfdGhpcy5yZWFkZXJzLnB1c2gobmV3IElURlJlYWRlcl8xLmRlZmF1bHQoKSk7CgkgICAgICAgICAgICBfdGhpcy5yZWFkZXJzLnB1c2gobmV3IFJTUzE0UmVhZGVyXzEuZGVmYXVsdCgpKTsKCSAgICAgICAgICAgIF90aGlzLnJlYWRlcnMucHVzaChuZXcgUlNTRXhwYW5kZWRSZWFkZXJfMS5kZWZhdWx0KCkpOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBfdGhpczsKCSAgICB9CgkgICAgLy8gQE92ZXJyaWRlCgkgICAgTXVsdGlGb3JtYXRPbmVEUmVhZGVyLnByb3RvdHlwZS5kZWNvZGVSb3cgPSBmdW5jdGlvbiAocm93TnVtYmVyLCByb3csIGhpbnRzKSB7CgkgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5yZWFkZXJzLmxlbmd0aDsgaSsrKSB7CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlYWRlcnNbaV0uZGVjb2RlUm93KHJvd051bWJlciwgcm93LCBoaW50cyk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBjYXRjaCAocmUpIHsKCSAgICAgICAgICAgICAgICAvLyBjb250aW51ZQoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICB9OwoJICAgIC8vIEBPdmVycmlkZQoJICAgIE11bHRpRm9ybWF0T25lRFJlYWRlci5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHRoaXMucmVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uIChyZWFkZXIpIHsgcmV0dXJuIHJlYWRlci5yZXNldCgpOyB9KTsKCSAgICB9OwoJICAgIHJldHVybiBNdWx0aUZvcm1hdE9uZURSZWFkZXI7Cgl9KE9uZURSZWFkZXJfMS5kZWZhdWx0KSk7CglleHBvcnRzLmRlZmF1bHQgPSBNdWx0aUZvcm1hdE9uZURSZWFkZXI7CgoJfSk7CgoJdmFyIEJyb3dzZXJCYXJjb2RlUmVhZGVyXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7Cgl2YXIgX19leHRlbmRzID0gKGNvbW1vbmpzR2xvYmFsICYmIGNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHsKCSAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwKCSAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHwKCSAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9OwoJICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICB9OwoJICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH0KCSAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpOwoJICAgIH07Cgl9KSgpOwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCWV4cG9ydHMuQnJvd3NlckJhcmNvZGVSZWFkZXIgPSB2b2lkIDA7CgoKCS8qKgoJICogQGRlcHJlY2F0ZWQgTW92aW5nIHRvIEB6eGluZy9icm93c2VyCgkgKgoJICogQmFyY29kZSByZWFkZXIgcmVhZGVyIHRvIHVzZSBmcm9tIGJyb3dzZXIuCgkgKi8KCXZhciBCcm93c2VyQmFyY29kZVJlYWRlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHsKCSAgICBfX2V4dGVuZHMoQnJvd3NlckJhcmNvZGVSZWFkZXIsIF9zdXBlcik7CgkgICAgLyoqCgkgICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBCcm93c2VyQmFyY29kZVJlYWRlci4KCSAgICAgKiBAcGFyYW0ge251bWJlcn0gW3RpbWVCZXR3ZWVuU2NhbnNNaWxsaXM9NTAwXSB0aGUgdGltZSBkZWxheSBiZXR3ZWVuIHN1YnNlcXVlbnQgZGVjb2RlIHRyaWVzCgkgICAgICogQHBhcmFtIHtNYXA8RGVjb2RlSGludFR5cGUsIGFueT59IGhpbnRzCgkgICAgICovCgkgICAgZnVuY3Rpb24gQnJvd3NlckJhcmNvZGVSZWFkZXIodGltZUJldHdlZW5TY2Fuc01pbGxpcywgaGludHMpIHsKCSAgICAgICAgaWYgKHRpbWVCZXR3ZWVuU2NhbnNNaWxsaXMgPT09IHZvaWQgMCkgeyB0aW1lQmV0d2VlblNjYW5zTWlsbGlzID0gNTAwOyB9CgkgICAgICAgIHJldHVybiBfc3VwZXIuY2FsbCh0aGlzLCBuZXcgTXVsdGlGb3JtYXRPbmVEUmVhZGVyXzEuZGVmYXVsdChoaW50cyksIHRpbWVCZXR3ZWVuU2NhbnNNaWxsaXMsIGhpbnRzKSB8fCB0aGlzOwoJICAgIH0KCSAgICByZXR1cm4gQnJvd3NlckJhcmNvZGVSZWFkZXI7Cgl9KEJyb3dzZXJDb2RlUmVhZGVyXzEuQnJvd3NlckNvZGVSZWFkZXIpKTsKCWV4cG9ydHMuQnJvd3NlckJhcmNvZGVSZWFkZXIgPSBCcm93c2VyQmFyY29kZVJlYWRlcjsKCgl9KTsKCgl2YXIgVmVyc2lvbl8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJdmFyIF9fdmFsdWVzID0gKGNvbW1vbmpzR2xvYmFsICYmIGNvbW1vbmpzR2xvYmFsLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7CgkgICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSAiZnVuY3Rpb24iICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7CgkgICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7CgkgICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSAibnVtYmVyIikgcmV0dXJuIHsKCSAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkgewoJICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDsKCSAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTsKCSAgICAgICAgfQoJICAgIH07CgkgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gIk9iamVjdCBpcyBub3QgaXRlcmFibGUuIiA6ICJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuIik7Cgl9OwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCWV4cG9ydHMuRUNCID0gZXhwb3J0cy5FQ0Jsb2NrcyA9IHZvaWQgMDsKCgkvKgoJICogQ29weXJpZ2h0IDIwMDcgWlhpbmcgYXV0aG9ycwoJICoKCSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkgKgoJICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSAqCgkgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSAqLwoJLyoqCgkgKiA8cD5FbmNhcHN1bGF0ZXMgYSBzZXQgb2YgZXJyb3ItY29ycmVjdGlvbiBibG9ja3MgaW4gb25lIHN5bWJvbCB2ZXJzaW9uLiBNb3N0IHZlcnNpb25zIHdpbGwKCSAqIHVzZSBibG9ja3Mgb2YgZGlmZmVyaW5nIHNpemVzIHdpdGhpbiBvbmUgdmVyc2lvbiwgc28sIHRoaXMgZW5jYXBzdWxhdGVzIHRoZSBwYXJhbWV0ZXJzIGZvcgoJICogZWFjaCBzZXQgb2YgYmxvY2tzLiBJdCBhbHNvIGhvbGRzIHRoZSBudW1iZXIgb2YgZXJyb3ItY29ycmVjdGlvbiBjb2Rld29yZHMgcGVyIGJsb2NrIHNpbmNlIGl0CgkgKiB3aWxsIGJlIHRoZSBzYW1lIGFjcm9zcyBhbGwgYmxvY2tzIHdpdGhpbiBvbmUgdmVyc2lvbi48L3A+CgkgKi8KCXZhciBFQ0Jsb2NrcyA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBFQ0Jsb2NrcyhlY0NvZGV3b3JkcywgZWNCbG9ja3MxLCBlY0Jsb2NrczIpIHsKCSAgICAgICAgdGhpcy5lY0NvZGV3b3JkcyA9IGVjQ29kZXdvcmRzOwoJICAgICAgICB0aGlzLmVjQmxvY2tzID0gW2VjQmxvY2tzMV07CgkgICAgICAgIGVjQmxvY2tzMiAmJiB0aGlzLmVjQmxvY2tzLnB1c2goZWNCbG9ja3MyKTsKCSAgICB9CgkgICAgRUNCbG9ja3MucHJvdG90eXBlLmdldEVDQ29kZXdvcmRzID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5lY0NvZGV3b3JkczsKCSAgICB9OwoJICAgIEVDQmxvY2tzLnByb3RvdHlwZS5nZXRFQ0Jsb2NrcyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuZWNCbG9ja3M7CgkgICAgfTsKCSAgICByZXR1cm4gRUNCbG9ja3M7Cgl9KCkpOwoJZXhwb3J0cy5FQ0Jsb2NrcyA9IEVDQmxvY2tzOwoJLyoqCgkgKiA8cD5FbmNhcHN1bGF0ZXMgdGhlIHBhcmFtZXRlcnMgZm9yIG9uZSBlcnJvci1jb3JyZWN0aW9uIGJsb2NrIGluIG9uZSBzeW1ib2wgdmVyc2lvbi4KCSAqIFRoaXMgaW5jbHVkZXMgdGhlIG51bWJlciBvZiBkYXRhIGNvZGV3b3JkcywgYW5kIHRoZSBudW1iZXIgb2YgdGltZXMgYSBibG9jayB3aXRoIHRoZXNlCgkgKiBwYXJhbWV0ZXJzIGlzIHVzZWQgY29uc2VjdXRpdmVseSBpbiB0aGUgRGF0YSBNYXRyaXggY29kZSB2ZXJzaW9uJ3MgZm9ybWF0LjwvcD4KCSAqLwoJdmFyIEVDQiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBFQ0IoY291bnQsIGRhdGFDb2Rld29yZHMpIHsKCSAgICAgICAgdGhpcy5jb3VudCA9IGNvdW50OwoJICAgICAgICB0aGlzLmRhdGFDb2Rld29yZHMgPSBkYXRhQ29kZXdvcmRzOwoJICAgIH0KCSAgICBFQ0IucHJvdG90eXBlLmdldENvdW50ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5jb3VudDsKCSAgICB9OwoJICAgIEVDQi5wcm90b3R5cGUuZ2V0RGF0YUNvZGV3b3JkcyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuZGF0YUNvZGV3b3JkczsKCSAgICB9OwoJICAgIHJldHVybiBFQ0I7Cgl9KCkpOwoJZXhwb3J0cy5FQ0IgPSBFQ0I7CgkvKioKCSAqIFRoZSBWZXJzaW9uIG9iamVjdCBlbmNhcHN1bGF0ZXMgYXR0cmlidXRlcyBhYm91dCBhIHBhcnRpY3VsYXIKCSAqIHNpemUgRGF0YSBNYXRyaXggQ29kZS4KCSAqCgkgKiBAYXV0aG9yIGJicm93bkBnb29nbGUuY29tIChCcmlhbiBCcm93bikKCSAqLwoJdmFyIFZlcnNpb24gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgZnVuY3Rpb24gVmVyc2lvbih2ZXJzaW9uTnVtYmVyLCBzeW1ib2xTaXplUm93cywgc3ltYm9sU2l6ZUNvbHVtbnMsIGRhdGFSZWdpb25TaXplUm93cywgZGF0YVJlZ2lvblNpemVDb2x1bW5zLCBlY0Jsb2NrcykgewoJICAgICAgICB2YXIgZV8xLCBfYTsKCSAgICAgICAgdGhpcy52ZXJzaW9uTnVtYmVyID0gdmVyc2lvbk51bWJlcjsKCSAgICAgICAgdGhpcy5zeW1ib2xTaXplUm93cyA9IHN5bWJvbFNpemVSb3dzOwoJICAgICAgICB0aGlzLnN5bWJvbFNpemVDb2x1bW5zID0gc3ltYm9sU2l6ZUNvbHVtbnM7CgkgICAgICAgIHRoaXMuZGF0YVJlZ2lvblNpemVSb3dzID0gZGF0YVJlZ2lvblNpemVSb3dzOwoJICAgICAgICB0aGlzLmRhdGFSZWdpb25TaXplQ29sdW1ucyA9IGRhdGFSZWdpb25TaXplQ29sdW1uczsKCSAgICAgICAgdGhpcy5lY0Jsb2NrcyA9IGVjQmxvY2tzOwoJICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIHRvdGFsIG51bWJlciBvZiBjb2Rld29yZHMKCSAgICAgICAgdmFyIHRvdGFsID0gMDsKCSAgICAgICAgdmFyIGVjQ29kZXdvcmRzID0gZWNCbG9ja3MuZ2V0RUNDb2Rld29yZHMoKTsKCSAgICAgICAgdmFyIGVjYkFycmF5ID0gZWNCbG9ja3MuZ2V0RUNCbG9ja3MoKTsKCSAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgIGZvciAodmFyIGVjYkFycmF5XzEgPSBfX3ZhbHVlcyhlY2JBcnJheSksIGVjYkFycmF5XzFfMSA9IGVjYkFycmF5XzEubmV4dCgpOyAhZWNiQXJyYXlfMV8xLmRvbmU7IGVjYkFycmF5XzFfMSA9IGVjYkFycmF5XzEubmV4dCgpKSB7CgkgICAgICAgICAgICAgICAgdmFyIGVjQmxvY2sgPSBlY2JBcnJheV8xXzEudmFsdWU7CgkgICAgICAgICAgICAgICAgdG90YWwgKz0gZWNCbG9jay5nZXRDb3VudCgpICogKGVjQmxvY2suZ2V0RGF0YUNvZGV3b3JkcygpICsgZWNDb2Rld29yZHMpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9CgkgICAgICAgIGZpbmFsbHkgewoJICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICBpZiAoZWNiQXJyYXlfMV8xICYmICFlY2JBcnJheV8xXzEuZG9uZSAmJiAoX2EgPSBlY2JBcnJheV8xLnJldHVybikpIF9hLmNhbGwoZWNiQXJyYXlfMSk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9CgkgICAgICAgIH0KCSAgICAgICAgdGhpcy50b3RhbENvZGV3b3JkcyA9IHRvdGFsOwoJICAgIH0KCSAgICBWZXJzaW9uLnByb3RvdHlwZS5nZXRWZXJzaW9uTnVtYmVyID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy52ZXJzaW9uTnVtYmVyOwoJICAgIH07CgkgICAgVmVyc2lvbi5wcm90b3R5cGUuZ2V0U3ltYm9sU2l6ZVJvd3MgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLnN5bWJvbFNpemVSb3dzOwoJICAgIH07CgkgICAgVmVyc2lvbi5wcm90b3R5cGUuZ2V0U3ltYm9sU2l6ZUNvbHVtbnMgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLnN5bWJvbFNpemVDb2x1bW5zOwoJICAgIH07CgkgICAgVmVyc2lvbi5wcm90b3R5cGUuZ2V0RGF0YVJlZ2lvblNpemVSb3dzID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5kYXRhUmVnaW9uU2l6ZVJvd3M7CgkgICAgfTsKCSAgICBWZXJzaW9uLnByb3RvdHlwZS5nZXREYXRhUmVnaW9uU2l6ZUNvbHVtbnMgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmRhdGFSZWdpb25TaXplQ29sdW1uczsKCSAgICB9OwoJICAgIFZlcnNpb24ucHJvdG90eXBlLmdldFRvdGFsQ29kZXdvcmRzID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy50b3RhbENvZGV3b3JkczsKCSAgICB9OwoJICAgIFZlcnNpb24ucHJvdG90eXBlLmdldEVDQmxvY2tzID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5lY0Jsb2NrczsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIDxwPkRlZHVjZXMgdmVyc2lvbiBpbmZvcm1hdGlvbiBmcm9tIERhdGEgTWF0cml4IGRpbWVuc2lvbnMuPC9wPgoJICAgICAqCgkgICAgICogQHBhcmFtIG51bVJvd3MgTnVtYmVyIG9mIHJvd3MgaW4gbW9kdWxlcwoJICAgICAqIEBwYXJhbSBudW1Db2x1bW5zIE51bWJlciBvZiBjb2x1bW5zIGluIG1vZHVsZXMKCSAgICAgKiBAcmV0dXJuIFZlcnNpb24gZm9yIGEgRGF0YSBNYXRyaXggQ29kZSBvZiB0aG9zZSBkaW1lbnNpb25zCgkgICAgICogQHRocm93cyBGb3JtYXRFeGNlcHRpb24gaWYgZGltZW5zaW9ucyBkbyBjb3JyZXNwb25kIHRvIGEgdmFsaWQgRGF0YSBNYXRyaXggc2l6ZQoJICAgICAqLwoJICAgIFZlcnNpb24uZ2V0VmVyc2lvbkZvckRpbWVuc2lvbnMgPSBmdW5jdGlvbiAobnVtUm93cywgbnVtQ29sdW1ucykgewoJICAgICAgICB2YXIgZV8yLCBfYTsKCSAgICAgICAgaWYgKChudW1Sb3dzICYgMHgwMSkgIT09IDAgfHwgKG51bUNvbHVtbnMgJiAweDAxKSAhPT0gMCkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgfQoJICAgICAgICB0cnkgewoJICAgICAgICAgICAgZm9yICh2YXIgX2IgPSBfX3ZhbHVlcyhWZXJzaW9uLlZFUlNJT05TKSwgX2MgPSBfYi5uZXh0KCk7ICFfYy5kb25lOyBfYyA9IF9iLm5leHQoKSkgewoJICAgICAgICAgICAgICAgIHZhciB2ZXJzaW9uID0gX2MudmFsdWU7CgkgICAgICAgICAgICAgICAgaWYgKHZlcnNpb24uc3ltYm9sU2l6ZVJvd3MgPT09IG51bVJvd3MgJiYgdmVyc2lvbi5zeW1ib2xTaXplQ29sdW1ucyA9PT0gbnVtQ29sdW1ucykgewoJICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmVyc2lvbjsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgY2F0Y2ggKGVfMl8xKSB7IGVfMiA9IHsgZXJyb3I6IGVfMl8xIH07IH0KCSAgICAgICAgZmluYWxseSB7CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIGlmIChfYyAmJiAhX2MuZG9uZSAmJiAoX2EgPSBfYi5yZXR1cm4pKSBfYS5jYWxsKF9iKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8yKSB0aHJvdyBlXzIuZXJyb3I7IH0KCSAgICAgICAgfQoJICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgIH07CgkgICAgLy8gIEBPdmVycmlkZQoJICAgIFZlcnNpb24ucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gJycgKyB0aGlzLnZlcnNpb25OdW1iZXI7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBTZWUgSVNPIDE2MDIyOjIwMDYgNS41LjEgVGFibGUgNwoJICAgICAqLwoJICAgIFZlcnNpb24uYnVpbGRWZXJzaW9ucyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIFsKCSAgICAgICAgICAgIG5ldyBWZXJzaW9uKDEsIDEwLCAxMCwgOCwgOCwgbmV3IEVDQmxvY2tzKDUsIG5ldyBFQ0IoMSwgMykpKSwKCSAgICAgICAgICAgIG5ldyBWZXJzaW9uKDIsIDEyLCAxMiwgMTAsIDEwLCBuZXcgRUNCbG9ja3MoNywgbmV3IEVDQigxLCA1KSkpLAoJICAgICAgICAgICAgbmV3IFZlcnNpb24oMywgMTQsIDE0LCAxMiwgMTIsIG5ldyBFQ0Jsb2NrcygxMCwgbmV3IEVDQigxLCA4KSkpLAoJICAgICAgICAgICAgbmV3IFZlcnNpb24oNCwgMTYsIDE2LCAxNCwgMTQsIG5ldyBFQ0Jsb2NrcygxMiwgbmV3IEVDQigxLCAxMikpKSwKCSAgICAgICAgICAgIG5ldyBWZXJzaW9uKDUsIDE4LCAxOCwgMTYsIDE2LCBuZXcgRUNCbG9ja3MoMTQsIG5ldyBFQ0IoMSwgMTgpKSksCgkgICAgICAgICAgICBuZXcgVmVyc2lvbig2LCAyMCwgMjAsIDE4LCAxOCwgbmV3IEVDQmxvY2tzKDE4LCBuZXcgRUNCKDEsIDIyKSkpLAoJICAgICAgICAgICAgbmV3IFZlcnNpb24oNywgMjIsIDIyLCAyMCwgMjAsIG5ldyBFQ0Jsb2NrcygyMCwgbmV3IEVDQigxLCAzMCkpKSwKCSAgICAgICAgICAgIG5ldyBWZXJzaW9uKDgsIDI0LCAyNCwgMjIsIDIyLCBuZXcgRUNCbG9ja3MoMjQsIG5ldyBFQ0IoMSwgMzYpKSksCgkgICAgICAgICAgICBuZXcgVmVyc2lvbig5LCAyNiwgMjYsIDI0LCAyNCwgbmV3IEVDQmxvY2tzKDI4LCBuZXcgRUNCKDEsIDQ0KSkpLAoJICAgICAgICAgICAgbmV3IFZlcnNpb24oMTAsIDMyLCAzMiwgMTQsIDE0LCBuZXcgRUNCbG9ja3MoMzYsIG5ldyBFQ0IoMSwgNjIpKSksCgkgICAgICAgICAgICBuZXcgVmVyc2lvbigxMSwgMzYsIDM2LCAxNiwgMTYsIG5ldyBFQ0Jsb2Nrcyg0MiwgbmV3IEVDQigxLCA4NikpKSwKCSAgICAgICAgICAgIG5ldyBWZXJzaW9uKDEyLCA0MCwgNDAsIDE4LCAxOCwgbmV3IEVDQmxvY2tzKDQ4LCBuZXcgRUNCKDEsIDExNCkpKSwKCSAgICAgICAgICAgIG5ldyBWZXJzaW9uKDEzLCA0NCwgNDQsIDIwLCAyMCwgbmV3IEVDQmxvY2tzKDU2LCBuZXcgRUNCKDEsIDE0NCkpKSwKCSAgICAgICAgICAgIG5ldyBWZXJzaW9uKDE0LCA0OCwgNDgsIDIyLCAyMiwgbmV3IEVDQmxvY2tzKDY4LCBuZXcgRUNCKDEsIDE3NCkpKSwKCSAgICAgICAgICAgIG5ldyBWZXJzaW9uKDE1LCA1MiwgNTIsIDI0LCAyNCwgbmV3IEVDQmxvY2tzKDQyLCBuZXcgRUNCKDIsIDEwMikpKSwKCSAgICAgICAgICAgIG5ldyBWZXJzaW9uKDE2LCA2NCwgNjQsIDE0LCAxNCwgbmV3IEVDQmxvY2tzKDU2LCBuZXcgRUNCKDIsIDE0MCkpKSwKCSAgICAgICAgICAgIG5ldyBWZXJzaW9uKDE3LCA3MiwgNzIsIDE2LCAxNiwgbmV3IEVDQmxvY2tzKDM2LCBuZXcgRUNCKDQsIDkyKSkpLAoJICAgICAgICAgICAgbmV3IFZlcnNpb24oMTgsIDgwLCA4MCwgMTgsIDE4LCBuZXcgRUNCbG9ja3MoNDgsIG5ldyBFQ0IoNCwgMTE0KSkpLAoJICAgICAgICAgICAgbmV3IFZlcnNpb24oMTksIDg4LCA4OCwgMjAsIDIwLCBuZXcgRUNCbG9ja3MoNTYsIG5ldyBFQ0IoNCwgMTQ0KSkpLAoJICAgICAgICAgICAgbmV3IFZlcnNpb24oMjAsIDk2LCA5NiwgMjIsIDIyLCBuZXcgRUNCbG9ja3MoNjgsIG5ldyBFQ0IoNCwgMTc0KSkpLAoJICAgICAgICAgICAgbmV3IFZlcnNpb24oMjEsIDEwNCwgMTA0LCAyNCwgMjQsIG5ldyBFQ0Jsb2Nrcyg1NiwgbmV3IEVDQig2LCAxMzYpKSksCgkgICAgICAgICAgICBuZXcgVmVyc2lvbigyMiwgMTIwLCAxMjAsIDE4LCAxOCwgbmV3IEVDQmxvY2tzKDY4LCBuZXcgRUNCKDYsIDE3NSkpKSwKCSAgICAgICAgICAgIG5ldyBWZXJzaW9uKDIzLCAxMzIsIDEzMiwgMjAsIDIwLCBuZXcgRUNCbG9ja3MoNjIsIG5ldyBFQ0IoOCwgMTYzKSkpLAoJICAgICAgICAgICAgbmV3IFZlcnNpb24oMjQsIDE0NCwgMTQ0LCAyMiwgMjIsIG5ldyBFQ0Jsb2Nrcyg2MiwgbmV3IEVDQig4LCAxNTYpLCBuZXcgRUNCKDIsIDE1NSkpKSwKCSAgICAgICAgICAgIG5ldyBWZXJzaW9uKDI1LCA4LCAxOCwgNiwgMTYsIG5ldyBFQ0Jsb2Nrcyg3LCBuZXcgRUNCKDEsIDUpKSksCgkgICAgICAgICAgICBuZXcgVmVyc2lvbigyNiwgOCwgMzIsIDYsIDE0LCBuZXcgRUNCbG9ja3MoMTEsIG5ldyBFQ0IoMSwgMTApKSksCgkgICAgICAgICAgICBuZXcgVmVyc2lvbigyNywgMTIsIDI2LCAxMCwgMjQsIG5ldyBFQ0Jsb2NrcygxNCwgbmV3IEVDQigxLCAxNikpKSwKCSAgICAgICAgICAgIG5ldyBWZXJzaW9uKDI4LCAxMiwgMzYsIDEwLCAxNiwgbmV3IEVDQmxvY2tzKDE4LCBuZXcgRUNCKDEsIDIyKSkpLAoJICAgICAgICAgICAgbmV3IFZlcnNpb24oMjksIDE2LCAzNiwgMTQsIDE2LCBuZXcgRUNCbG9ja3MoMjQsIG5ldyBFQ0IoMSwgMzIpKSksCgkgICAgICAgICAgICBuZXcgVmVyc2lvbigzMCwgMTYsIDQ4LCAxNCwgMjIsIG5ldyBFQ0Jsb2NrcygyOCwgbmV3IEVDQigxLCA0OSkpKQoJICAgICAgICBdOwoJICAgIH07CgkgICAgVmVyc2lvbi5WRVJTSU9OUyA9IFZlcnNpb24uYnVpbGRWZXJzaW9ucygpOwoJICAgIHJldHVybiBWZXJzaW9uOwoJfSgpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IFZlcnNpb247CgoJfSk7CgoJdmFyIEJpdE1hdHJpeFBhcnNlcl8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCgoKCgkvKgoJICogQ29weXJpZ2h0IDIwMDcgWlhpbmcgYXV0aG9ycwoJICoKCSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkgKgoJICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSAqCgkgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSAqLwoJLyoqCgkgKiBAYXV0aG9yIGJicm93bkBnb29nbGUuY29tIChCcmlhbiBCcm93bikKCSAqLwoJdmFyIEJpdE1hdHJpeFBhcnNlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICAvKioKCSAgICAgKiBAcGFyYW0gYml0TWF0cml4IHtAbGluayBCaXRNYXRyaXh9IHRvIHBhcnNlCgkgICAgICogQHRocm93cyBGb3JtYXRFeGNlcHRpb24gaWYgZGltZW5zaW9uIGlzIDwgOCBvciA+IDE0NCBvciBub3QgMCBtb2QgMgoJICAgICAqLwoJICAgIGZ1bmN0aW9uIEJpdE1hdHJpeFBhcnNlcihiaXRNYXRyaXgpIHsKCSAgICAgICAgdmFyIGRpbWVuc2lvbiA9IGJpdE1hdHJpeC5nZXRIZWlnaHQoKTsKCSAgICAgICAgaWYgKGRpbWVuc2lvbiA8IDggfHwgZGltZW5zaW9uID4gMTQ0IHx8IChkaW1lbnNpb24gJiAweDAxKSAhPT0gMCkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgfQoJICAgICAgICB0aGlzLnZlcnNpb24gPSBCaXRNYXRyaXhQYXJzZXIucmVhZFZlcnNpb24oYml0TWF0cml4KTsKCSAgICAgICAgdGhpcy5tYXBwaW5nQml0TWF0cml4ID0gdGhpcy5leHRyYWN0RGF0YVJlZ2lvbihiaXRNYXRyaXgpOwoJICAgICAgICB0aGlzLnJlYWRNYXBwaW5nTWF0cml4ID0gbmV3IEJpdE1hdHJpeF8xLmRlZmF1bHQodGhpcy5tYXBwaW5nQml0TWF0cml4LmdldFdpZHRoKCksIHRoaXMubWFwcGluZ0JpdE1hdHJpeC5nZXRIZWlnaHQoKSk7CgkgICAgfQoJICAgIEJpdE1hdHJpeFBhcnNlci5wcm90b3R5cGUuZ2V0VmVyc2lvbiA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMudmVyc2lvbjsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIDxwPkNyZWF0ZXMgdGhlIHZlcnNpb24gb2JqZWN0IGJhc2VkIG9uIHRoZSBkaW1lbnNpb24gb2YgdGhlIG9yaWdpbmFsIGJpdCBtYXRyaXggZnJvbQoJICAgICAqIHRoZSBkYXRhbWF0cml4IGNvZGUuPC9wPgoJICAgICAqCgkgICAgICogPHA+U2VlIElTTyAxNjAyMjoyMDA2IFRhYmxlIDcgLSBFQ0MgMjAwIHN5bWJvbCBhdHRyaWJ1dGVzPC9wPgoJICAgICAqCgkgICAgICogQHBhcmFtIGJpdE1hdHJpeCBPcmlnaW5hbCB7QGxpbmsgQml0TWF0cml4fSBpbmNsdWRpbmcgYWxpZ25tZW50IHBhdHRlcm5zCgkgICAgICogQHJldHVybiB7QGxpbmsgVmVyc2lvbn0gZW5jYXBzdWxhdGluZyB0aGUgRGF0YSBNYXRyaXggQ29kZSdzICJ2ZXJzaW9uIgoJICAgICAqIEB0aHJvd3MgRm9ybWF0RXhjZXB0aW9uIGlmIHRoZSBkaW1lbnNpb25zIG9mIHRoZSBtYXBwaW5nIG1hdHJpeCBhcmUgbm90IHZhbGlkCgkgICAgICogRGF0YSBNYXRyaXggZGltZW5zaW9ucy4KCSAgICAgKi8KCSAgICBCaXRNYXRyaXhQYXJzZXIucmVhZFZlcnNpb24gPSBmdW5jdGlvbiAoYml0TWF0cml4KSB7CgkgICAgICAgIHZhciBudW1Sb3dzID0gYml0TWF0cml4LmdldEhlaWdodCgpOwoJICAgICAgICB2YXIgbnVtQ29sdW1ucyA9IGJpdE1hdHJpeC5nZXRXaWR0aCgpOwoJICAgICAgICByZXR1cm4gVmVyc2lvbl8xLmRlZmF1bHQuZ2V0VmVyc2lvbkZvckRpbWVuc2lvbnMobnVtUm93cywgbnVtQ29sdW1ucyk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiA8cD5SZWFkcyB0aGUgYml0cyBpbiB0aGUge0BsaW5rIEJpdE1hdHJpeH0gcmVwcmVzZW50aW5nIHRoZSBtYXBwaW5nIG1hdHJpeCAoTm8gYWxpZ25tZW50IHBhdHRlcm5zKQoJICAgICAqIGluIHRoZSBjb3JyZWN0IG9yZGVyIGluIG9yZGVyIHRvIHJlY29uc3RpdHV0ZSB0aGUgY29kZXdvcmRzIGJ5dGVzIGNvbnRhaW5lZCB3aXRoaW4gdGhlCgkgICAgICogRGF0YSBNYXRyaXggQ29kZS48L3A+CgkgICAgICoKCSAgICAgKiBAcmV0dXJuIGJ5dGVzIGVuY29kZWQgd2l0aGluIHRoZSBEYXRhIE1hdHJpeCBDb2RlCgkgICAgICogQHRocm93cyBGb3JtYXRFeGNlcHRpb24gaWYgdGhlIGV4YWN0IG51bWJlciBvZiBieXRlcyBleHBlY3RlZCBpcyBub3QgcmVhZAoJICAgICAqLwoJICAgIEJpdE1hdHJpeFBhcnNlci5wcm90b3R5cGUucmVhZENvZGV3b3JkcyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBJbnQ4QXJyYXkodGhpcy52ZXJzaW9uLmdldFRvdGFsQ29kZXdvcmRzKCkpOwoJICAgICAgICB2YXIgcmVzdWx0T2Zmc2V0ID0gMDsKCSAgICAgICAgdmFyIHJvdyA9IDQ7CgkgICAgICAgIHZhciBjb2x1bW4gPSAwOwoJICAgICAgICB2YXIgbnVtUm93cyA9IHRoaXMubWFwcGluZ0JpdE1hdHJpeC5nZXRIZWlnaHQoKTsKCSAgICAgICAgdmFyIG51bUNvbHVtbnMgPSB0aGlzLm1hcHBpbmdCaXRNYXRyaXguZ2V0V2lkdGgoKTsKCSAgICAgICAgdmFyIGNvcm5lcjFSZWFkID0gZmFsc2U7CgkgICAgICAgIHZhciBjb3JuZXIyUmVhZCA9IGZhbHNlOwoJICAgICAgICB2YXIgY29ybmVyM1JlYWQgPSBmYWxzZTsKCSAgICAgICAgdmFyIGNvcm5lcjRSZWFkID0gZmFsc2U7CgkgICAgICAgIC8vIFJlYWQgYWxsIG9mIHRoZSBjb2Rld29yZHMKCSAgICAgICAgZG8gewoJICAgICAgICAgICAgLy8gQ2hlY2sgdGhlIGZvdXIgY29ybmVyIGNhc2VzCgkgICAgICAgICAgICBpZiAoKHJvdyA9PT0gbnVtUm93cykgJiYgKGNvbHVtbiA9PT0gMCkgJiYgIWNvcm5lcjFSZWFkKSB7CgkgICAgICAgICAgICAgICAgcmVzdWx0W3Jlc3VsdE9mZnNldCsrXSA9IHRoaXMucmVhZENvcm5lcjEobnVtUm93cywgbnVtQ29sdW1ucykgJiAweGZmOwoJICAgICAgICAgICAgICAgIHJvdyAtPSAyOwoJICAgICAgICAgICAgICAgIGNvbHVtbiArPSAyOwoJICAgICAgICAgICAgICAgIGNvcm5lcjFSZWFkID0gdHJ1ZTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGVsc2UgaWYgKChyb3cgPT09IG51bVJvd3MgLSAyKSAmJiAoY29sdW1uID09PSAwKSAmJiAoKG51bUNvbHVtbnMgJiAweDAzKSAhPT0gMCkgJiYgIWNvcm5lcjJSZWFkKSB7CgkgICAgICAgICAgICAgICAgcmVzdWx0W3Jlc3VsdE9mZnNldCsrXSA9IHRoaXMucmVhZENvcm5lcjIobnVtUm93cywgbnVtQ29sdW1ucykgJiAweGZmOwoJICAgICAgICAgICAgICAgIHJvdyAtPSAyOwoJICAgICAgICAgICAgICAgIGNvbHVtbiArPSAyOwoJICAgICAgICAgICAgICAgIGNvcm5lcjJSZWFkID0gdHJ1ZTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGVsc2UgaWYgKChyb3cgPT09IG51bVJvd3MgKyA0KSAmJiAoY29sdW1uID09PSAyKSAmJiAoKG51bUNvbHVtbnMgJiAweDA3KSA9PT0gMCkgJiYgIWNvcm5lcjNSZWFkKSB7CgkgICAgICAgICAgICAgICAgcmVzdWx0W3Jlc3VsdE9mZnNldCsrXSA9IHRoaXMucmVhZENvcm5lcjMobnVtUm93cywgbnVtQ29sdW1ucykgJiAweGZmOwoJICAgICAgICAgICAgICAgIHJvdyAtPSAyOwoJICAgICAgICAgICAgICAgIGNvbHVtbiArPSAyOwoJICAgICAgICAgICAgICAgIGNvcm5lcjNSZWFkID0gdHJ1ZTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGVsc2UgaWYgKChyb3cgPT09IG51bVJvd3MgLSAyKSAmJiAoY29sdW1uID09PSAwKSAmJiAoKG51bUNvbHVtbnMgJiAweDA3KSA9PT0gNCkgJiYgIWNvcm5lcjRSZWFkKSB7CgkgICAgICAgICAgICAgICAgcmVzdWx0W3Jlc3VsdE9mZnNldCsrXSA9IHRoaXMucmVhZENvcm5lcjQobnVtUm93cywgbnVtQ29sdW1ucykgJiAweGZmOwoJICAgICAgICAgICAgICAgIHJvdyAtPSAyOwoJICAgICAgICAgICAgICAgIGNvbHVtbiArPSAyOwoJICAgICAgICAgICAgICAgIGNvcm5lcjRSZWFkID0gdHJ1ZTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgIC8vIFN3ZWVwIHVwd2FyZCBkaWFnb25hbGx5IHRvIHRoZSByaWdodAoJICAgICAgICAgICAgICAgIGRvIHsKCSAgICAgICAgICAgICAgICAgICAgaWYgKChyb3cgPCBudW1Sb3dzKSAmJiAoY29sdW1uID49IDApICYmICF0aGlzLnJlYWRNYXBwaW5nTWF0cml4LmdldChjb2x1bW4sIHJvdykpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFtyZXN1bHRPZmZzZXQrK10gPSB0aGlzLnJlYWRVdGFoKHJvdywgY29sdW1uLCBudW1Sb3dzLCBudW1Db2x1bW5zKSAmIDB4ZmY7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgcm93IC09IDI7CgkgICAgICAgICAgICAgICAgICAgIGNvbHVtbiArPSAyOwoJICAgICAgICAgICAgICAgIH0gd2hpbGUgKChyb3cgPj0gMCkgJiYgKGNvbHVtbiA8IG51bUNvbHVtbnMpKTsKCSAgICAgICAgICAgICAgICByb3cgKz0gMTsKCSAgICAgICAgICAgICAgICBjb2x1bW4gKz0gMzsKCSAgICAgICAgICAgICAgICAvLyBTd2VlcCBkb3dud2FyZCBkaWFnb25hbGx5IHRvIHRoZSBsZWZ0CgkgICAgICAgICAgICAgICAgZG8gewoJICAgICAgICAgICAgICAgICAgICBpZiAoKHJvdyA+PSAwKSAmJiAoY29sdW1uIDwgbnVtQ29sdW1ucykgJiYgIXRoaXMucmVhZE1hcHBpbmdNYXRyaXguZ2V0KGNvbHVtbiwgcm93KSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0W3Jlc3VsdE9mZnNldCsrXSA9IHRoaXMucmVhZFV0YWgocm93LCBjb2x1bW4sIG51bVJvd3MsIG51bUNvbHVtbnMpICYgMHhmZjsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICByb3cgKz0gMjsKCSAgICAgICAgICAgICAgICAgICAgY29sdW1uIC09IDI7CgkgICAgICAgICAgICAgICAgfSB3aGlsZSAoKHJvdyA8IG51bVJvd3MpICYmIChjb2x1bW4gPj0gMCkpOwoJICAgICAgICAgICAgICAgIHJvdyArPSAzOwoJICAgICAgICAgICAgICAgIGNvbHVtbiArPSAxOwoJICAgICAgICAgICAgfQoJICAgICAgICB9IHdoaWxlICgocm93IDwgbnVtUm93cykgfHwgKGNvbHVtbiA8IG51bUNvbHVtbnMpKTsKCSAgICAgICAgaWYgKHJlc3VsdE9mZnNldCAhPT0gdGhpcy52ZXJzaW9uLmdldFRvdGFsQ29kZXdvcmRzKCkpIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHJlc3VsdDsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIDxwPlJlYWRzIGEgYml0IG9mIHRoZSBtYXBwaW5nIG1hdHJpeCBhY2NvdW50aW5nIGZvciBib3VuZGFyeSB3cmFwcGluZy48L3A+CgkgICAgICoKCSAgICAgKiBAcGFyYW0gcm93IFJvdyB0byByZWFkIGluIHRoZSBtYXBwaW5nIG1hdHJpeAoJICAgICAqIEBwYXJhbSBjb2x1bW4gQ29sdW1uIHRvIHJlYWQgaW4gdGhlIG1hcHBpbmcgbWF0cml4CgkgICAgICogQHBhcmFtIG51bVJvd3MgTnVtYmVyIG9mIHJvd3MgaW4gdGhlIG1hcHBpbmcgbWF0cml4CgkgICAgICogQHBhcmFtIG51bUNvbHVtbnMgTnVtYmVyIG9mIGNvbHVtbnMgaW4gdGhlIG1hcHBpbmcgbWF0cml4CgkgICAgICogQHJldHVybiB2YWx1ZSBvZiB0aGUgZ2l2ZW4gYml0IGluIHRoZSBtYXBwaW5nIG1hdHJpeAoJICAgICAqLwoJICAgIEJpdE1hdHJpeFBhcnNlci5wcm90b3R5cGUucmVhZE1vZHVsZSA9IGZ1bmN0aW9uIChyb3csIGNvbHVtbiwgbnVtUm93cywgbnVtQ29sdW1ucykgewoJICAgICAgICAvLyBBZGp1c3QgdGhlIHJvdyBhbmQgY29sdW1uIGluZGljZXMgYmFzZWQgb24gYm91bmRhcnkgd3JhcHBpbmcKCSAgICAgICAgaWYgKHJvdyA8IDApIHsKCSAgICAgICAgICAgIHJvdyArPSBudW1Sb3dzOwoJICAgICAgICAgICAgY29sdW1uICs9IDQgLSAoKG51bVJvd3MgKyA0KSAmIDB4MDcpOwoJICAgICAgICB9CgkgICAgICAgIGlmIChjb2x1bW4gPCAwKSB7CgkgICAgICAgICAgICBjb2x1bW4gKz0gbnVtQ29sdW1uczsKCSAgICAgICAgICAgIHJvdyArPSA0IC0gKChudW1Db2x1bW5zICsgNCkgJiAweDA3KTsKCSAgICAgICAgfQoJICAgICAgICB0aGlzLnJlYWRNYXBwaW5nTWF0cml4LnNldChjb2x1bW4sIHJvdyk7CgkgICAgICAgIHJldHVybiB0aGlzLm1hcHBpbmdCaXRNYXRyaXguZ2V0KGNvbHVtbiwgcm93KTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIDxwPlJlYWRzIHRoZSA4IGJpdHMgb2YgdGhlIHN0YW5kYXJkIFV0YWgtc2hhcGVkIHBhdHRlcm4uPC9wPgoJICAgICAqCgkgICAgICogPHA+U2VlIElTTyAxNjAyMjoyMDA2LCA1LjguMSBGaWd1cmUgNjwvcD4KCSAgICAgKgoJICAgICAqIEBwYXJhbSByb3cgQ3VycmVudCByb3cgaW4gdGhlIG1hcHBpbmcgbWF0cml4LCBhbmNob3JlZCBhdCB0aGUgOHRoIGJpdCAoTFNCKSBvZiB0aGUgcGF0dGVybgoJICAgICAqIEBwYXJhbSBjb2x1bW4gQ3VycmVudCBjb2x1bW4gaW4gdGhlIG1hcHBpbmcgbWF0cml4LCBhbmNob3JlZCBhdCB0aGUgOHRoIGJpdCAoTFNCKSBvZiB0aGUgcGF0dGVybgoJICAgICAqIEBwYXJhbSBudW1Sb3dzIE51bWJlciBvZiByb3dzIGluIHRoZSBtYXBwaW5nIG1hdHJpeAoJICAgICAqIEBwYXJhbSBudW1Db2x1bW5zIE51bWJlciBvZiBjb2x1bW5zIGluIHRoZSBtYXBwaW5nIG1hdHJpeAoJICAgICAqIEByZXR1cm4gYnl0ZSBmcm9tIHRoZSB1dGFoIHNoYXBlCgkgICAgICovCgkgICAgQml0TWF0cml4UGFyc2VyLnByb3RvdHlwZS5yZWFkVXRhaCA9IGZ1bmN0aW9uIChyb3csIGNvbHVtbiwgbnVtUm93cywgbnVtQ29sdW1ucykgewoJICAgICAgICB2YXIgY3VycmVudEJ5dGUgPSAwOwoJICAgICAgICBpZiAodGhpcy5yZWFkTW9kdWxlKHJvdyAtIDIsIGNvbHVtbiAtIDIsIG51bVJvd3MsIG51bUNvbHVtbnMpKSB7CgkgICAgICAgICAgICBjdXJyZW50Qnl0ZSB8PSAxOwoJICAgICAgICB9CgkgICAgICAgIGN1cnJlbnRCeXRlIDw8PSAxOwoJICAgICAgICBpZiAodGhpcy5yZWFkTW9kdWxlKHJvdyAtIDIsIGNvbHVtbiAtIDEsIG51bVJvd3MsIG51bUNvbHVtbnMpKSB7CgkgICAgICAgICAgICBjdXJyZW50Qnl0ZSB8PSAxOwoJICAgICAgICB9CgkgICAgICAgIGN1cnJlbnRCeXRlIDw8PSAxOwoJICAgICAgICBpZiAodGhpcy5yZWFkTW9kdWxlKHJvdyAtIDEsIGNvbHVtbiAtIDIsIG51bVJvd3MsIG51bUNvbHVtbnMpKSB7CgkgICAgICAgICAgICBjdXJyZW50Qnl0ZSB8PSAxOwoJICAgICAgICB9CgkgICAgICAgIGN1cnJlbnRCeXRlIDw8PSAxOwoJICAgICAgICBpZiAodGhpcy5yZWFkTW9kdWxlKHJvdyAtIDEsIGNvbHVtbiAtIDEsIG51bVJvd3MsIG51bUNvbHVtbnMpKSB7CgkgICAgICAgICAgICBjdXJyZW50Qnl0ZSB8PSAxOwoJICAgICAgICB9CgkgICAgICAgIGN1cnJlbnRCeXRlIDw8PSAxOwoJICAgICAgICBpZiAodGhpcy5yZWFkTW9kdWxlKHJvdyAtIDEsIGNvbHVtbiwgbnVtUm93cywgbnVtQ29sdW1ucykpIHsKCSAgICAgICAgICAgIGN1cnJlbnRCeXRlIHw9IDE7CgkgICAgICAgIH0KCSAgICAgICAgY3VycmVudEJ5dGUgPDw9IDE7CgkgICAgICAgIGlmICh0aGlzLnJlYWRNb2R1bGUocm93LCBjb2x1bW4gLSAyLCBudW1Sb3dzLCBudW1Db2x1bW5zKSkgewoJICAgICAgICAgICAgY3VycmVudEJ5dGUgfD0gMTsKCSAgICAgICAgfQoJICAgICAgICBjdXJyZW50Qnl0ZSA8PD0gMTsKCSAgICAgICAgaWYgKHRoaXMucmVhZE1vZHVsZShyb3csIGNvbHVtbiAtIDEsIG51bVJvd3MsIG51bUNvbHVtbnMpKSB7CgkgICAgICAgICAgICBjdXJyZW50Qnl0ZSB8PSAxOwoJICAgICAgICB9CgkgICAgICAgIGN1cnJlbnRCeXRlIDw8PSAxOwoJICAgICAgICBpZiAodGhpcy5yZWFkTW9kdWxlKHJvdywgY29sdW1uLCBudW1Sb3dzLCBudW1Db2x1bW5zKSkgewoJICAgICAgICAgICAgY3VycmVudEJ5dGUgfD0gMTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gY3VycmVudEJ5dGU7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiA8cD5SZWFkcyB0aGUgOCBiaXRzIG9mIHRoZSBzcGVjaWFsIGNvcm5lciBjb25kaXRpb24gMS48L3A+CgkgICAgICoKCSAgICAgKiA8cD5TZWUgSVNPIDE2MDIyOjIwMDYsIEZpZ3VyZSBGLjM8L3A+CgkgICAgICoKCSAgICAgKiBAcGFyYW0gbnVtUm93cyBOdW1iZXIgb2Ygcm93cyBpbiB0aGUgbWFwcGluZyBtYXRyaXgKCSAgICAgKiBAcGFyYW0gbnVtQ29sdW1ucyBOdW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgbWFwcGluZyBtYXRyaXgKCSAgICAgKiBAcmV0dXJuIGJ5dGUgZnJvbSB0aGUgQ29ybmVyIGNvbmRpdGlvbiAxCgkgICAgICovCgkgICAgQml0TWF0cml4UGFyc2VyLnByb3RvdHlwZS5yZWFkQ29ybmVyMSA9IGZ1bmN0aW9uIChudW1Sb3dzLCBudW1Db2x1bW5zKSB7CgkgICAgICAgIHZhciBjdXJyZW50Qnl0ZSA9IDA7CgkgICAgICAgIGlmICh0aGlzLnJlYWRNb2R1bGUobnVtUm93cyAtIDEsIDAsIG51bVJvd3MsIG51bUNvbHVtbnMpKSB7CgkgICAgICAgICAgICBjdXJyZW50Qnl0ZSB8PSAxOwoJICAgICAgICB9CgkgICAgICAgIGN1cnJlbnRCeXRlIDw8PSAxOwoJICAgICAgICBpZiAodGhpcy5yZWFkTW9kdWxlKG51bVJvd3MgLSAxLCAxLCBudW1Sb3dzLCBudW1Db2x1bW5zKSkgewoJICAgICAgICAgICAgY3VycmVudEJ5dGUgfD0gMTsKCSAgICAgICAgfQoJICAgICAgICBjdXJyZW50Qnl0ZSA8PD0gMTsKCSAgICAgICAgaWYgKHRoaXMucmVhZE1vZHVsZShudW1Sb3dzIC0gMSwgMiwgbnVtUm93cywgbnVtQ29sdW1ucykpIHsKCSAgICAgICAgICAgIGN1cnJlbnRCeXRlIHw9IDE7CgkgICAgICAgIH0KCSAgICAgICAgY3VycmVudEJ5dGUgPDw9IDE7CgkgICAgICAgIGlmICh0aGlzLnJlYWRNb2R1bGUoMCwgbnVtQ29sdW1ucyAtIDIsIG51bVJvd3MsIG51bUNvbHVtbnMpKSB7CgkgICAgICAgICAgICBjdXJyZW50Qnl0ZSB8PSAxOwoJICAgICAgICB9CgkgICAgICAgIGN1cnJlbnRCeXRlIDw8PSAxOwoJICAgICAgICBpZiAodGhpcy5yZWFkTW9kdWxlKDAsIG51bUNvbHVtbnMgLSAxLCBudW1Sb3dzLCBudW1Db2x1bW5zKSkgewoJICAgICAgICAgICAgY3VycmVudEJ5dGUgfD0gMTsKCSAgICAgICAgfQoJICAgICAgICBjdXJyZW50Qnl0ZSA8PD0gMTsKCSAgICAgICAgaWYgKHRoaXMucmVhZE1vZHVsZSgxLCBudW1Db2x1bW5zIC0gMSwgbnVtUm93cywgbnVtQ29sdW1ucykpIHsKCSAgICAgICAgICAgIGN1cnJlbnRCeXRlIHw9IDE7CgkgICAgICAgIH0KCSAgICAgICAgY3VycmVudEJ5dGUgPDw9IDE7CgkgICAgICAgIGlmICh0aGlzLnJlYWRNb2R1bGUoMiwgbnVtQ29sdW1ucyAtIDEsIG51bVJvd3MsIG51bUNvbHVtbnMpKSB7CgkgICAgICAgICAgICBjdXJyZW50Qnl0ZSB8PSAxOwoJICAgICAgICB9CgkgICAgICAgIGN1cnJlbnRCeXRlIDw8PSAxOwoJICAgICAgICBpZiAodGhpcy5yZWFkTW9kdWxlKDMsIG51bUNvbHVtbnMgLSAxLCBudW1Sb3dzLCBudW1Db2x1bW5zKSkgewoJICAgICAgICAgICAgY3VycmVudEJ5dGUgfD0gMTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gY3VycmVudEJ5dGU7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiA8cD5SZWFkcyB0aGUgOCBiaXRzIG9mIHRoZSBzcGVjaWFsIGNvcm5lciBjb25kaXRpb24gMi48L3A+CgkgICAgICoKCSAgICAgKiA8cD5TZWUgSVNPIDE2MDIyOjIwMDYsIEZpZ3VyZSBGLjQ8L3A+CgkgICAgICoKCSAgICAgKiBAcGFyYW0gbnVtUm93cyBOdW1iZXIgb2Ygcm93cyBpbiB0aGUgbWFwcGluZyBtYXRyaXgKCSAgICAgKiBAcGFyYW0gbnVtQ29sdW1ucyBOdW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgbWFwcGluZyBtYXRyaXgKCSAgICAgKiBAcmV0dXJuIGJ5dGUgZnJvbSB0aGUgQ29ybmVyIGNvbmRpdGlvbiAyCgkgICAgICovCgkgICAgQml0TWF0cml4UGFyc2VyLnByb3RvdHlwZS5yZWFkQ29ybmVyMiA9IGZ1bmN0aW9uIChudW1Sb3dzLCBudW1Db2x1bW5zKSB7CgkgICAgICAgIHZhciBjdXJyZW50Qnl0ZSA9IDA7CgkgICAgICAgIGlmICh0aGlzLnJlYWRNb2R1bGUobnVtUm93cyAtIDMsIDAsIG51bVJvd3MsIG51bUNvbHVtbnMpKSB7CgkgICAgICAgICAgICBjdXJyZW50Qnl0ZSB8PSAxOwoJICAgICAgICB9CgkgICAgICAgIGN1cnJlbnRCeXRlIDw8PSAxOwoJICAgICAgICBpZiAodGhpcy5yZWFkTW9kdWxlKG51bVJvd3MgLSAyLCAwLCBudW1Sb3dzLCBudW1Db2x1bW5zKSkgewoJICAgICAgICAgICAgY3VycmVudEJ5dGUgfD0gMTsKCSAgICAgICAgfQoJICAgICAgICBjdXJyZW50Qnl0ZSA8PD0gMTsKCSAgICAgICAgaWYgKHRoaXMucmVhZE1vZHVsZShudW1Sb3dzIC0gMSwgMCwgbnVtUm93cywgbnVtQ29sdW1ucykpIHsKCSAgICAgICAgICAgIGN1cnJlbnRCeXRlIHw9IDE7CgkgICAgICAgIH0KCSAgICAgICAgY3VycmVudEJ5dGUgPDw9IDE7CgkgICAgICAgIGlmICh0aGlzLnJlYWRNb2R1bGUoMCwgbnVtQ29sdW1ucyAtIDQsIG51bVJvd3MsIG51bUNvbHVtbnMpKSB7CgkgICAgICAgICAgICBjdXJyZW50Qnl0ZSB8PSAxOwoJICAgICAgICB9CgkgICAgICAgIGN1cnJlbnRCeXRlIDw8PSAxOwoJICAgICAgICBpZiAodGhpcy5yZWFkTW9kdWxlKDAsIG51bUNvbHVtbnMgLSAzLCBudW1Sb3dzLCBudW1Db2x1bW5zKSkgewoJICAgICAgICAgICAgY3VycmVudEJ5dGUgfD0gMTsKCSAgICAgICAgfQoJICAgICAgICBjdXJyZW50Qnl0ZSA8PD0gMTsKCSAgICAgICAgaWYgKHRoaXMucmVhZE1vZHVsZSgwLCBudW1Db2x1bW5zIC0gMiwgbnVtUm93cywgbnVtQ29sdW1ucykpIHsKCSAgICAgICAgICAgIGN1cnJlbnRCeXRlIHw9IDE7CgkgICAgICAgIH0KCSAgICAgICAgY3VycmVudEJ5dGUgPDw9IDE7CgkgICAgICAgIGlmICh0aGlzLnJlYWRNb2R1bGUoMCwgbnVtQ29sdW1ucyAtIDEsIG51bVJvd3MsIG51bUNvbHVtbnMpKSB7CgkgICAgICAgICAgICBjdXJyZW50Qnl0ZSB8PSAxOwoJICAgICAgICB9CgkgICAgICAgIGN1cnJlbnRCeXRlIDw8PSAxOwoJICAgICAgICBpZiAodGhpcy5yZWFkTW9kdWxlKDEsIG51bUNvbHVtbnMgLSAxLCBudW1Sb3dzLCBudW1Db2x1bW5zKSkgewoJICAgICAgICAgICAgY3VycmVudEJ5dGUgfD0gMTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gY3VycmVudEJ5dGU7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiA8cD5SZWFkcyB0aGUgOCBiaXRzIG9mIHRoZSBzcGVjaWFsIGNvcm5lciBjb25kaXRpb24gMy48L3A+CgkgICAgICoKCSAgICAgKiA8cD5TZWUgSVNPIDE2MDIyOjIwMDYsIEZpZ3VyZSBGLjU8L3A+CgkgICAgICoKCSAgICAgKiBAcGFyYW0gbnVtUm93cyBOdW1iZXIgb2Ygcm93cyBpbiB0aGUgbWFwcGluZyBtYXRyaXgKCSAgICAgKiBAcGFyYW0gbnVtQ29sdW1ucyBOdW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgbWFwcGluZyBtYXRyaXgKCSAgICAgKiBAcmV0dXJuIGJ5dGUgZnJvbSB0aGUgQ29ybmVyIGNvbmRpdGlvbiAzCgkgICAgICovCgkgICAgQml0TWF0cml4UGFyc2VyLnByb3RvdHlwZS5yZWFkQ29ybmVyMyA9IGZ1bmN0aW9uIChudW1Sb3dzLCBudW1Db2x1bW5zKSB7CgkgICAgICAgIHZhciBjdXJyZW50Qnl0ZSA9IDA7CgkgICAgICAgIGlmICh0aGlzLnJlYWRNb2R1bGUobnVtUm93cyAtIDEsIDAsIG51bVJvd3MsIG51bUNvbHVtbnMpKSB7CgkgICAgICAgICAgICBjdXJyZW50Qnl0ZSB8PSAxOwoJICAgICAgICB9CgkgICAgICAgIGN1cnJlbnRCeXRlIDw8PSAxOwoJICAgICAgICBpZiAodGhpcy5yZWFkTW9kdWxlKG51bVJvd3MgLSAxLCBudW1Db2x1bW5zIC0gMSwgbnVtUm93cywgbnVtQ29sdW1ucykpIHsKCSAgICAgICAgICAgIGN1cnJlbnRCeXRlIHw9IDE7CgkgICAgICAgIH0KCSAgICAgICAgY3VycmVudEJ5dGUgPDw9IDE7CgkgICAgICAgIGlmICh0aGlzLnJlYWRNb2R1bGUoMCwgbnVtQ29sdW1ucyAtIDMsIG51bVJvd3MsIG51bUNvbHVtbnMpKSB7CgkgICAgICAgICAgICBjdXJyZW50Qnl0ZSB8PSAxOwoJICAgICAgICB9CgkgICAgICAgIGN1cnJlbnRCeXRlIDw8PSAxOwoJICAgICAgICBpZiAodGhpcy5yZWFkTW9kdWxlKDAsIG51bUNvbHVtbnMgLSAyLCBudW1Sb3dzLCBudW1Db2x1bW5zKSkgewoJICAgICAgICAgICAgY3VycmVudEJ5dGUgfD0gMTsKCSAgICAgICAgfQoJICAgICAgICBjdXJyZW50Qnl0ZSA8PD0gMTsKCSAgICAgICAgaWYgKHRoaXMucmVhZE1vZHVsZSgwLCBudW1Db2x1bW5zIC0gMSwgbnVtUm93cywgbnVtQ29sdW1ucykpIHsKCSAgICAgICAgICAgIGN1cnJlbnRCeXRlIHw9IDE7CgkgICAgICAgIH0KCSAgICAgICAgY3VycmVudEJ5dGUgPDw9IDE7CgkgICAgICAgIGlmICh0aGlzLnJlYWRNb2R1bGUoMSwgbnVtQ29sdW1ucyAtIDMsIG51bVJvd3MsIG51bUNvbHVtbnMpKSB7CgkgICAgICAgICAgICBjdXJyZW50Qnl0ZSB8PSAxOwoJICAgICAgICB9CgkgICAgICAgIGN1cnJlbnRCeXRlIDw8PSAxOwoJICAgICAgICBpZiAodGhpcy5yZWFkTW9kdWxlKDEsIG51bUNvbHVtbnMgLSAyLCBudW1Sb3dzLCBudW1Db2x1bW5zKSkgewoJICAgICAgICAgICAgY3VycmVudEJ5dGUgfD0gMTsKCSAgICAgICAgfQoJICAgICAgICBjdXJyZW50Qnl0ZSA8PD0gMTsKCSAgICAgICAgaWYgKHRoaXMucmVhZE1vZHVsZSgxLCBudW1Db2x1bW5zIC0gMSwgbnVtUm93cywgbnVtQ29sdW1ucykpIHsKCSAgICAgICAgICAgIGN1cnJlbnRCeXRlIHw9IDE7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIGN1cnJlbnRCeXRlOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogPHA+UmVhZHMgdGhlIDggYml0cyBvZiB0aGUgc3BlY2lhbCBjb3JuZXIgY29uZGl0aW9uIDQuPC9wPgoJICAgICAqCgkgICAgICogPHA+U2VlIElTTyAxNjAyMjoyMDA2LCBGaWd1cmUgRi42PC9wPgoJICAgICAqCgkgICAgICogQHBhcmFtIG51bVJvd3MgTnVtYmVyIG9mIHJvd3MgaW4gdGhlIG1hcHBpbmcgbWF0cml4CgkgICAgICogQHBhcmFtIG51bUNvbHVtbnMgTnVtYmVyIG9mIGNvbHVtbnMgaW4gdGhlIG1hcHBpbmcgbWF0cml4CgkgICAgICogQHJldHVybiBieXRlIGZyb20gdGhlIENvcm5lciBjb25kaXRpb24gNAoJICAgICAqLwoJICAgIEJpdE1hdHJpeFBhcnNlci5wcm90b3R5cGUucmVhZENvcm5lcjQgPSBmdW5jdGlvbiAobnVtUm93cywgbnVtQ29sdW1ucykgewoJICAgICAgICB2YXIgY3VycmVudEJ5dGUgPSAwOwoJICAgICAgICBpZiAodGhpcy5yZWFkTW9kdWxlKG51bVJvd3MgLSAzLCAwLCBudW1Sb3dzLCBudW1Db2x1bW5zKSkgewoJICAgICAgICAgICAgY3VycmVudEJ5dGUgfD0gMTsKCSAgICAgICAgfQoJICAgICAgICBjdXJyZW50Qnl0ZSA8PD0gMTsKCSAgICAgICAgaWYgKHRoaXMucmVhZE1vZHVsZShudW1Sb3dzIC0gMiwgMCwgbnVtUm93cywgbnVtQ29sdW1ucykpIHsKCSAgICAgICAgICAgIGN1cnJlbnRCeXRlIHw9IDE7CgkgICAgICAgIH0KCSAgICAgICAgY3VycmVudEJ5dGUgPDw9IDE7CgkgICAgICAgIGlmICh0aGlzLnJlYWRNb2R1bGUobnVtUm93cyAtIDEsIDAsIG51bVJvd3MsIG51bUNvbHVtbnMpKSB7CgkgICAgICAgICAgICBjdXJyZW50Qnl0ZSB8PSAxOwoJICAgICAgICB9CgkgICAgICAgIGN1cnJlbnRCeXRlIDw8PSAxOwoJICAgICAgICBpZiAodGhpcy5yZWFkTW9kdWxlKDAsIG51bUNvbHVtbnMgLSAyLCBudW1Sb3dzLCBudW1Db2x1bW5zKSkgewoJICAgICAgICAgICAgY3VycmVudEJ5dGUgfD0gMTsKCSAgICAgICAgfQoJICAgICAgICBjdXJyZW50Qnl0ZSA8PD0gMTsKCSAgICAgICAgaWYgKHRoaXMucmVhZE1vZHVsZSgwLCBudW1Db2x1bW5zIC0gMSwgbnVtUm93cywgbnVtQ29sdW1ucykpIHsKCSAgICAgICAgICAgIGN1cnJlbnRCeXRlIHw9IDE7CgkgICAgICAgIH0KCSAgICAgICAgY3VycmVudEJ5dGUgPDw9IDE7CgkgICAgICAgIGlmICh0aGlzLnJlYWRNb2R1bGUoMSwgbnVtQ29sdW1ucyAtIDEsIG51bVJvd3MsIG51bUNvbHVtbnMpKSB7CgkgICAgICAgICAgICBjdXJyZW50Qnl0ZSB8PSAxOwoJICAgICAgICB9CgkgICAgICAgIGN1cnJlbnRCeXRlIDw8PSAxOwoJICAgICAgICBpZiAodGhpcy5yZWFkTW9kdWxlKDIsIG51bUNvbHVtbnMgLSAxLCBudW1Sb3dzLCBudW1Db2x1bW5zKSkgewoJICAgICAgICAgICAgY3VycmVudEJ5dGUgfD0gMTsKCSAgICAgICAgfQoJICAgICAgICBjdXJyZW50Qnl0ZSA8PD0gMTsKCSAgICAgICAgaWYgKHRoaXMucmVhZE1vZHVsZSgzLCBudW1Db2x1bW5zIC0gMSwgbnVtUm93cywgbnVtQ29sdW1ucykpIHsKCSAgICAgICAgICAgIGN1cnJlbnRCeXRlIHw9IDE7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIGN1cnJlbnRCeXRlOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogPHA+RXh0cmFjdHMgdGhlIGRhdGEgcmVnaW9uIGZyb20gYSB7QGxpbmsgQml0TWF0cml4fSB0aGF0IGNvbnRhaW5zCgkgICAgICogYWxpZ25tZW50IHBhdHRlcm5zLjwvcD4KCSAgICAgKgoJICAgICAqIEBwYXJhbSBiaXRNYXRyaXggT3JpZ2luYWwge0BsaW5rIEJpdE1hdHJpeH0gd2l0aCBhbGlnbm1lbnQgcGF0dGVybnMKCSAgICAgKiBAcmV0dXJuIEJpdE1hdHJpeCB0aGF0IGhhcyB0aGUgYWxpZ25tZW50IHBhdHRlcm5zIHJlbW92ZWQKCSAgICAgKi8KCSAgICBCaXRNYXRyaXhQYXJzZXIucHJvdG90eXBlLmV4dHJhY3REYXRhUmVnaW9uID0gZnVuY3Rpb24gKGJpdE1hdHJpeCkgewoJICAgICAgICB2YXIgc3ltYm9sU2l6ZVJvd3MgPSB0aGlzLnZlcnNpb24uZ2V0U3ltYm9sU2l6ZVJvd3MoKTsKCSAgICAgICAgdmFyIHN5bWJvbFNpemVDb2x1bW5zID0gdGhpcy52ZXJzaW9uLmdldFN5bWJvbFNpemVDb2x1bW5zKCk7CgkgICAgICAgIGlmIChiaXRNYXRyaXguZ2V0SGVpZ2h0KCkgIT09IHN5bWJvbFNpemVSb3dzKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgnRGltZW5zaW9uIG9mIGJpdE1hdHJpeCBtdXN0IG1hdGNoIHRoZSB2ZXJzaW9uIHNpemUnKTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgZGF0YVJlZ2lvblNpemVSb3dzID0gdGhpcy52ZXJzaW9uLmdldERhdGFSZWdpb25TaXplUm93cygpOwoJICAgICAgICB2YXIgZGF0YVJlZ2lvblNpemVDb2x1bW5zID0gdGhpcy52ZXJzaW9uLmdldERhdGFSZWdpb25TaXplQ29sdW1ucygpOwoJICAgICAgICB2YXIgbnVtRGF0YVJlZ2lvbnNSb3cgPSBzeW1ib2xTaXplUm93cyAvIGRhdGFSZWdpb25TaXplUm93cyB8IDA7CgkgICAgICAgIHZhciBudW1EYXRhUmVnaW9uc0NvbHVtbiA9IHN5bWJvbFNpemVDb2x1bW5zIC8gZGF0YVJlZ2lvblNpemVDb2x1bW5zIHwgMDsKCSAgICAgICAgdmFyIHNpemVEYXRhUmVnaW9uUm93ID0gbnVtRGF0YVJlZ2lvbnNSb3cgKiBkYXRhUmVnaW9uU2l6ZVJvd3M7CgkgICAgICAgIHZhciBzaXplRGF0YVJlZ2lvbkNvbHVtbiA9IG51bURhdGFSZWdpb25zQ29sdW1uICogZGF0YVJlZ2lvblNpemVDb2x1bW5zOwoJICAgICAgICB2YXIgYml0TWF0cml4V2l0aG91dEFsaWdubWVudCA9IG5ldyBCaXRNYXRyaXhfMS5kZWZhdWx0KHNpemVEYXRhUmVnaW9uQ29sdW1uLCBzaXplRGF0YVJlZ2lvblJvdyk7CgkgICAgICAgIGZvciAodmFyIGRhdGFSZWdpb25Sb3cgPSAwOyBkYXRhUmVnaW9uUm93IDwgbnVtRGF0YVJlZ2lvbnNSb3c7ICsrZGF0YVJlZ2lvblJvdykgewoJICAgICAgICAgICAgdmFyIGRhdGFSZWdpb25Sb3dPZmZzZXQgPSBkYXRhUmVnaW9uUm93ICogZGF0YVJlZ2lvblNpemVSb3dzOwoJICAgICAgICAgICAgZm9yICh2YXIgZGF0YVJlZ2lvbkNvbHVtbiA9IDA7IGRhdGFSZWdpb25Db2x1bW4gPCBudW1EYXRhUmVnaW9uc0NvbHVtbjsgKytkYXRhUmVnaW9uQ29sdW1uKSB7CgkgICAgICAgICAgICAgICAgdmFyIGRhdGFSZWdpb25Db2x1bW5PZmZzZXQgPSBkYXRhUmVnaW9uQ29sdW1uICogZGF0YVJlZ2lvblNpemVDb2x1bW5zOwoJICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YVJlZ2lvblNpemVSb3dzOyArK2kpIHsKCSAgICAgICAgICAgICAgICAgICAgdmFyIHJlYWRSb3dPZmZzZXQgPSBkYXRhUmVnaW9uUm93ICogKGRhdGFSZWdpb25TaXplUm93cyArIDIpICsgMSArIGk7CgkgICAgICAgICAgICAgICAgICAgIHZhciB3cml0ZVJvd09mZnNldCA9IGRhdGFSZWdpb25Sb3dPZmZzZXQgKyBpOwoJICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGRhdGFSZWdpb25TaXplQ29sdW1uczsgKytqKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVhZENvbHVtbk9mZnNldCA9IGRhdGFSZWdpb25Db2x1bW4gKiAoZGF0YVJlZ2lvblNpemVDb2x1bW5zICsgMikgKyAxICsgajsKCSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiaXRNYXRyaXguZ2V0KHJlYWRDb2x1bW5PZmZzZXQsIHJlYWRSb3dPZmZzZXQpKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHdyaXRlQ29sdW1uT2Zmc2V0ID0gZGF0YVJlZ2lvbkNvbHVtbk9mZnNldCArIGo7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgYml0TWF0cml4V2l0aG91dEFsaWdubWVudC5zZXQod3JpdGVDb2x1bW5PZmZzZXQsIHdyaXRlUm93T2Zmc2V0KTsKCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gYml0TWF0cml4V2l0aG91dEFsaWdubWVudDsKCSAgICB9OwoJICAgIHJldHVybiBCaXRNYXRyaXhQYXJzZXI7Cgl9KCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gQml0TWF0cml4UGFyc2VyOwoKCX0pOwoKCXZhciBEYXRhQmxvY2tfMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCXZhciBfX3ZhbHVlcyA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX3ZhbHVlcykgfHwgZnVuY3Rpb24obykgewoJICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gImZ1bmN0aW9uIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwOwoJICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pOwoJICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gIm51bWJlciIpIHJldHVybiB7CgkgICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7CgkgICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07CgkgICAgICAgIH0KCSAgICB9OwoJICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/ICJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLiIgOiAiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpOwoJfTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgoJLyoKCSAqIENvcHlyaWdodCAyMDA4IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCS8qKgoJICogPHA+RW5jYXBzdWxhdGVzIGEgYmxvY2sgb2YgZGF0YSB3aXRoaW4gYSBEYXRhIE1hdHJpeCBDb2RlLiBEYXRhIE1hdHJpeCBDb2RlcyBtYXkgc3BsaXQgdGhlaXIgZGF0YSBpbnRvCgkgKiBtdWx0aXBsZSBibG9ja3MsIGVhY2ggb2Ygd2hpY2ggaXMgYSB1bml0IG9mIGRhdGEgYW5kIGVycm9yLWNvcnJlY3Rpb24gY29kZXdvcmRzLiBFYWNoCgkgKiBpcyByZXByZXNlbnRlZCBieSBhbiBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzLjwvcD4KCSAqCgkgKiBAYXV0aG9yIGJicm93bkBnb29nbGUuY29tIChCcmlhbiBCcm93bikKCSAqLwoJdmFyIERhdGFCbG9jayA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBEYXRhQmxvY2sobnVtRGF0YUNvZGV3b3JkcywgY29kZXdvcmRzKSB7CgkgICAgICAgIHRoaXMubnVtRGF0YUNvZGV3b3JkcyA9IG51bURhdGFDb2Rld29yZHM7CgkgICAgICAgIHRoaXMuY29kZXdvcmRzID0gY29kZXdvcmRzOwoJICAgIH0KCSAgICAvKioKCSAgICAgKiA8cD5XaGVuIERhdGEgTWF0cml4IENvZGVzIHVzZSBtdWx0aXBsZSBkYXRhIGJsb2NrcywgdGhleSBhY3R1YWxseSBpbnRlcmxlYXZlIHRoZSBieXRlcyBvZiBlYWNoIG9mIHRoZW0uCgkgICAgICogVGhhdCBpcywgdGhlIGZpcnN0IGJ5dGUgb2YgZGF0YSBibG9jayAxIHRvIG4gaXMgd3JpdHRlbiwgdGhlbiB0aGUgc2Vjb25kIGJ5dGVzLCBhbmQgc28gb24uIFRoaXMKCSAgICAgKiBtZXRob2Qgd2lsbCBzZXBhcmF0ZSB0aGUgZGF0YSBpbnRvIG9yaWdpbmFsIGJsb2Nrcy48L3A+CgkgICAgICoKCSAgICAgKiBAcGFyYW0gcmF3Q29kZXdvcmRzIGJ5dGVzIGFzIHJlYWQgZGlyZWN0bHkgZnJvbSB0aGUgRGF0YSBNYXRyaXggQ29kZQoJICAgICAqIEBwYXJhbSB2ZXJzaW9uIHZlcnNpb24gb2YgdGhlIERhdGEgTWF0cml4IENvZGUKCSAgICAgKiBAcmV0dXJuIERhdGFCbG9ja3MgY29udGFpbmluZyBvcmlnaW5hbCBieXRlcywgImRlLWludGVybGVhdmVkIiBmcm9tIHJlcHJlc2VudGF0aW9uIGluIHRoZQoJICAgICAqICAgICAgICAgRGF0YSBNYXRyaXggQ29kZQoJICAgICAqLwoJICAgIERhdGFCbG9jay5nZXREYXRhQmxvY2tzID0gZnVuY3Rpb24gKHJhd0NvZGV3b3JkcywgdmVyc2lvbikgewoJICAgICAgICB2YXIgZV8xLCBfYSwgZV8yLCBfYjsKCSAgICAgICAgLy8gRmlndXJlIG91dCB0aGUgbnVtYmVyIGFuZCBzaXplIG9mIGRhdGEgYmxvY2tzIHVzZWQgYnkgdGhpcyB2ZXJzaW9uCgkgICAgICAgIHZhciBlY0Jsb2NrcyA9IHZlcnNpb24uZ2V0RUNCbG9ja3MoKTsKCSAgICAgICAgLy8gRmlyc3QgY291bnQgdGhlIHRvdGFsIG51bWJlciBvZiBkYXRhIGJsb2NrcwoJICAgICAgICB2YXIgdG90YWxCbG9ja3MgPSAwOwoJICAgICAgICB2YXIgZWNCbG9ja0FycmF5ID0gZWNCbG9ja3MuZ2V0RUNCbG9ja3MoKTsKCSAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgIGZvciAodmFyIGVjQmxvY2tBcnJheV8xID0gX192YWx1ZXMoZWNCbG9ja0FycmF5KSwgZWNCbG9ja0FycmF5XzFfMSA9IGVjQmxvY2tBcnJheV8xLm5leHQoKTsgIWVjQmxvY2tBcnJheV8xXzEuZG9uZTsgZWNCbG9ja0FycmF5XzFfMSA9IGVjQmxvY2tBcnJheV8xLm5leHQoKSkgewoJICAgICAgICAgICAgICAgIHZhciBlY0Jsb2NrID0gZWNCbG9ja0FycmF5XzFfMS52YWx1ZTsKCSAgICAgICAgICAgICAgICB0b3RhbEJsb2NrcyArPSBlY0Jsb2NrLmdldENvdW50KCk7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH0KCSAgICAgICAgZmluYWxseSB7CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIGlmIChlY0Jsb2NrQXJyYXlfMV8xICYmICFlY0Jsb2NrQXJyYXlfMV8xLmRvbmUgJiYgKF9hID0gZWNCbG9ja0FycmF5XzEucmV0dXJuKSkgX2EuY2FsbChlY0Jsb2NrQXJyYXlfMSk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9CgkgICAgICAgIH0KCSAgICAgICAgLy8gTm93IGVzdGFibGlzaCBEYXRhQmxvY2tzIG9mIHRoZSBhcHByb3ByaWF0ZSBzaXplIGFuZCBudW1iZXIgb2YgZGF0YSBjb2Rld29yZHMKCSAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBBcnJheSh0b3RhbEJsb2Nrcyk7CgkgICAgICAgIHZhciBudW1SZXN1bHRCbG9ja3MgPSAwOwoJICAgICAgICB0cnkgewoJICAgICAgICAgICAgZm9yICh2YXIgZWNCbG9ja0FycmF5XzIgPSBfX3ZhbHVlcyhlY0Jsb2NrQXJyYXkpLCBlY0Jsb2NrQXJyYXlfMl8xID0gZWNCbG9ja0FycmF5XzIubmV4dCgpOyAhZWNCbG9ja0FycmF5XzJfMS5kb25lOyBlY0Jsb2NrQXJyYXlfMl8xID0gZWNCbG9ja0FycmF5XzIubmV4dCgpKSB7CgkgICAgICAgICAgICAgICAgdmFyIGVjQmxvY2sgPSBlY0Jsb2NrQXJyYXlfMl8xLnZhbHVlOwoJICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWNCbG9jay5nZXRDb3VudCgpOyBpKyspIHsKCSAgICAgICAgICAgICAgICAgICAgdmFyIG51bURhdGFDb2Rld29yZHMgPSBlY0Jsb2NrLmdldERhdGFDb2Rld29yZHMoKTsKCSAgICAgICAgICAgICAgICAgICAgdmFyIG51bUJsb2NrQ29kZXdvcmRzID0gZWNCbG9ja3MuZ2V0RUNDb2Rld29yZHMoKSArIG51bURhdGFDb2Rld29yZHM7CgkgICAgICAgICAgICAgICAgICAgIHJlc3VsdFtudW1SZXN1bHRCbG9ja3MrK10gPSBuZXcgRGF0YUJsb2NrKG51bURhdGFDb2Rld29yZHMsIG5ldyBVaW50OEFycmF5KG51bUJsb2NrQ29kZXdvcmRzKSk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGNhdGNoIChlXzJfMSkgeyBlXzIgPSB7IGVycm9yOiBlXzJfMSB9OyB9CgkgICAgICAgIGZpbmFsbHkgewoJICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICBpZiAoZWNCbG9ja0FycmF5XzJfMSAmJiAhZWNCbG9ja0FycmF5XzJfMS5kb25lICYmIChfYiA9IGVjQmxvY2tBcnJheV8yLnJldHVybikpIF9iLmNhbGwoZWNCbG9ja0FycmF5XzIpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzIpIHRocm93IGVfMi5lcnJvcjsgfQoJICAgICAgICB9CgkgICAgICAgIC8vIEFsbCBibG9ja3MgaGF2ZSB0aGUgc2FtZSBhbW91bnQgb2YgZGF0YSwgZXhjZXB0IHRoYXQgdGhlIGxhc3QgbgoJICAgICAgICAvLyAod2hlcmUgbiBtYXkgYmUgMCkgaGF2ZSAxIGxlc3MgYnl0ZS4gRmlndXJlIG91dCB3aGVyZSB0aGVzZSBzdGFydC4KCSAgICAgICAgLy8gVE9ETyhiYnJvd24pOiBUaGVyZSBpcyBvbmx5IG9uZSBjYXNlIHdoZXJlIHRoZXJlIGlzIGEgZGlmZmVyZW5jZSBmb3IgRGF0YSBNYXRyaXggZm9yIHNpemUgMTQ0CgkgICAgICAgIHZhciBsb25nZXJCbG9ja3NUb3RhbENvZGV3b3JkcyA9IHJlc3VsdFswXS5jb2Rld29yZHMubGVuZ3RoOwoJICAgICAgICAvLyBpbnQgc2hvcnRlckJsb2Nrc1RvdGFsQ29kZXdvcmRzID0gbG9uZ2VyQmxvY2tzVG90YWxDb2Rld29yZHMgLSAxOwoJICAgICAgICB2YXIgbG9uZ2VyQmxvY2tzTnVtRGF0YUNvZGV3b3JkcyA9IGxvbmdlckJsb2Nrc1RvdGFsQ29kZXdvcmRzIC0gZWNCbG9ja3MuZ2V0RUNDb2Rld29yZHMoKTsKCSAgICAgICAgdmFyIHNob3J0ZXJCbG9ja3NOdW1EYXRhQ29kZXdvcmRzID0gbG9uZ2VyQmxvY2tzTnVtRGF0YUNvZGV3b3JkcyAtIDE7CgkgICAgICAgIC8vIFRoZSBsYXN0IGVsZW1lbnRzIG9mIHJlc3VsdCBtYXkgYmUgMSBlbGVtZW50IHNob3J0ZXIgZm9yIDE0NCBtYXRyaXgKCSAgICAgICAgLy8gZmlyc3QgZmlsbCBvdXQgYXMgbWFueSBlbGVtZW50cyBhcyBhbGwgb2YgdGhlbSBoYXZlIG1pbnVzIDEKCSAgICAgICAgdmFyIHJhd0NvZGV3b3Jkc09mZnNldCA9IDA7CgkgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2hvcnRlckJsb2Nrc051bURhdGFDb2Rld29yZHM7IGkrKykgewoJICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBudW1SZXN1bHRCbG9ja3M7IGorKykgewoJICAgICAgICAgICAgICAgIHJlc3VsdFtqXS5jb2Rld29yZHNbaV0gPSByYXdDb2Rld29yZHNbcmF3Q29kZXdvcmRzT2Zmc2V0KytdOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIC8vIEZpbGwgb3V0IHRoZSBsYXN0IGRhdGEgYmxvY2sgaW4gdGhlIGxvbmdlciBvbmVzCgkgICAgICAgIHZhciBzcGVjaWFsVmVyc2lvbiA9IHZlcnNpb24uZ2V0VmVyc2lvbk51bWJlcigpID09PSAyNDsKCSAgICAgICAgdmFyIG51bUxvbmdlckJsb2NrcyA9IHNwZWNpYWxWZXJzaW9uID8gOCA6IG51bVJlc3VsdEJsb2NrczsKCSAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBudW1Mb25nZXJCbG9ja3M7IGorKykgewoJICAgICAgICAgICAgcmVzdWx0W2pdLmNvZGV3b3Jkc1tsb25nZXJCbG9ja3NOdW1EYXRhQ29kZXdvcmRzIC0gMV0gPSByYXdDb2Rld29yZHNbcmF3Q29kZXdvcmRzT2Zmc2V0KytdOwoJICAgICAgICB9CgkgICAgICAgIC8vIE5vdyBhZGQgaW4gZXJyb3IgY29ycmVjdGlvbiBibG9ja3MKCSAgICAgICAgdmFyIG1heCA9IHJlc3VsdFswXS5jb2Rld29yZHMubGVuZ3RoOwoJICAgICAgICBmb3IgKHZhciBpID0gbG9uZ2VyQmxvY2tzTnVtRGF0YUNvZGV3b3JkczsgaSA8IG1heDsgaSsrKSB7CgkgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG51bVJlc3VsdEJsb2NrczsgaisrKSB7CgkgICAgICAgICAgICAgICAgdmFyIGpPZmZzZXQgPSBzcGVjaWFsVmVyc2lvbiA/IChqICsgOCkgJSBudW1SZXN1bHRCbG9ja3MgOiBqOwoJICAgICAgICAgICAgICAgIHZhciBpT2Zmc2V0ID0gc3BlY2lhbFZlcnNpb24gJiYgak9mZnNldCA+IDcgPyBpIC0gMSA6IGk7CgkgICAgICAgICAgICAgICAgcmVzdWx0W2pPZmZzZXRdLmNvZGV3b3Jkc1tpT2Zmc2V0XSA9IHJhd0NvZGV3b3Jkc1tyYXdDb2Rld29yZHNPZmZzZXQrK107CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgaWYgKHJhd0NvZGV3b3Jkc09mZnNldCAhPT0gcmF3Q29kZXdvcmRzLmxlbmd0aCkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gcmVzdWx0OwoJICAgIH07CgkgICAgRGF0YUJsb2NrLnByb3RvdHlwZS5nZXROdW1EYXRhQ29kZXdvcmRzID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5udW1EYXRhQ29kZXdvcmRzOwoJICAgIH07CgkgICAgRGF0YUJsb2NrLnByb3RvdHlwZS5nZXRDb2Rld29yZHMgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmNvZGV3b3JkczsKCSAgICB9OwoJICAgIHJldHVybiBEYXRhQmxvY2s7Cgl9KCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gRGF0YUJsb2NrOwoKCX0pOwoKCXZhciBCaXRTb3VyY2VfMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCS8qCgkgKiBDb3B5cmlnaHQgMjAwNyBaWGluZyBhdXRob3JzCgkgKgoJICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSAqCgkgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJICoKCSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJICovCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJLypuYW1lc3BhY2UgY29tLmdvb2dsZS56eGluZy5jb21tb24geyovCgoJLyoqCgkgKiA8cD5UaGlzIHByb3ZpZGVzIGFuIGVhc3kgYWJzdHJhY3Rpb24gdG8gcmVhZCBiaXRzIGF0IGEgdGltZSBmcm9tIGEgc2VxdWVuY2Ugb2YgYnl0ZXMsIHdoZXJlIHRoZQoJICogbnVtYmVyIG9mIGJpdHMgcmVhZCBpcyBub3Qgb2Z0ZW4gYSBtdWx0aXBsZSBvZiA4LjwvcD4KCSAqCgkgKiA8cD5UaGlzIGNsYXNzIGlzIHRocmVhZC1zYWZlIGJ1dCBub3QgcmVlbnRyYW50IC0tIHVubGVzcyB0aGUgY2FsbGVyIG1vZGlmaWVzIHRoZSBieXRlcyBhcnJheQoJICogaXQgcGFzc2VkIGluLCBpbiB3aGljaCBjYXNlIGFsbCBiZXRzIGFyZSBvZmYuPC9wPgoJICoKCSAqIEBhdXRob3IgU2VhbiBPd2VuCgkgKi8KCXZhciBCaXRTb3VyY2UgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgLyoqCgkgICAgICogQHBhcmFtIGJ5dGVzIGJ5dGVzIGZyb20gd2hpY2ggdGhpcyB3aWxsIHJlYWQgYml0cy4gQml0cyB3aWxsIGJlIHJlYWQgZnJvbSB0aGUgZmlyc3QgYnl0ZSBmaXJzdC4KCSAgICAgKiBCaXRzIGFyZSByZWFkIHdpdGhpbiBhIGJ5dGUgZnJvbSBtb3N0LXNpZ25pZmljYW50IHRvIGxlYXN0LXNpZ25pZmljYW50IGJpdC4KCSAgICAgKi8KCSAgICBmdW5jdGlvbiBCaXRTb3VyY2UoYnl0ZXMpIHsKCSAgICAgICAgdGhpcy5ieXRlcyA9IGJ5dGVzOwoJICAgICAgICB0aGlzLmJ5dGVPZmZzZXQgPSAwOwoJICAgICAgICB0aGlzLmJpdE9mZnNldCA9IDA7CgkgICAgfQoJICAgIC8qKgoJICAgICAqIEByZXR1cm4gaW5kZXggb2YgbmV4dCBiaXQgaW4gY3VycmVudCBieXRlIHdoaWNoIHdvdWxkIGJlIHJlYWQgYnkgdGhlIG5leHQgY2FsbCB0byB7QGxpbmsgI3JlYWRCaXRzKGludCl9LgoJICAgICAqLwoJICAgIEJpdFNvdXJjZS5wcm90b3R5cGUuZ2V0Qml0T2Zmc2V0ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5iaXRPZmZzZXQ7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcmV0dXJuIGluZGV4IG9mIG5leHQgYnl0ZSBpbiBpbnB1dCBieXRlIGFycmF5IHdoaWNoIHdvdWxkIGJlIHJlYWQgYnkgdGhlIG5leHQgY2FsbCB0byB7QGxpbmsgI3JlYWRCaXRzKGludCl9LgoJICAgICAqLwoJICAgIEJpdFNvdXJjZS5wcm90b3R5cGUuZ2V0Qnl0ZU9mZnNldCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuYnl0ZU9mZnNldDsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEBwYXJhbSBudW1CaXRzIG51bWJlciBvZiBiaXRzIHRvIHJlYWQKCSAgICAgKiBAcmV0dXJuIGludCByZXByZXNlbnRpbmcgdGhlIGJpdHMgcmVhZC4gVGhlIGJpdHMgd2lsbCBhcHBlYXIgYXMgdGhlIGxlYXN0LXNpZ25pZmljYW50CgkgICAgICogICAgICAgICBiaXRzIG9mIHRoZSBpbnQKCSAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiBudW1CaXRzIGlzbid0IGluIFsxLDMyXSBvciBtb3JlIHRoYW4gaXMgYXZhaWxhYmxlCgkgICAgICovCgkgICAgQml0U291cmNlLnByb3RvdHlwZS5yZWFkQml0cyA9IGZ1bmN0aW9uIChudW1CaXRzIC8qaW50Ki8pIHsKCSAgICAgICAgaWYgKG51bUJpdHMgPCAxIHx8IG51bUJpdHMgPiAzMiB8fCBudW1CaXRzID4gdGhpcy5hdmFpbGFibGUoKSkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoJycgKyBudW1CaXRzKTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgcmVzdWx0ID0gMDsKCSAgICAgICAgdmFyIGJpdE9mZnNldCA9IHRoaXMuYml0T2Zmc2V0OwoJICAgICAgICB2YXIgYnl0ZU9mZnNldCA9IHRoaXMuYnl0ZU9mZnNldDsKCSAgICAgICAgdmFyIGJ5dGVzID0gdGhpcy5ieXRlczsKCSAgICAgICAgLy8gRmlyc3QsIHJlYWQgcmVtYWluZGVyIGZyb20gY3VycmVudCBieXRlCgkgICAgICAgIGlmIChiaXRPZmZzZXQgPiAwKSB7CgkgICAgICAgICAgICB2YXIgYml0c0xlZnQgPSA4IC0gYml0T2Zmc2V0OwoJICAgICAgICAgICAgdmFyIHRvUmVhZCA9IG51bUJpdHMgPCBiaXRzTGVmdCA/IG51bUJpdHMgOiBiaXRzTGVmdDsKCSAgICAgICAgICAgIHZhciBiaXRzVG9Ob3RSZWFkID0gYml0c0xlZnQgLSB0b1JlYWQ7CgkgICAgICAgICAgICB2YXIgbWFzayA9ICgweEZGID4+ICg4IC0gdG9SZWFkKSkgPDwgYml0c1RvTm90UmVhZDsKCSAgICAgICAgICAgIHJlc3VsdCA9IChieXRlc1tieXRlT2Zmc2V0XSAmIG1hc2spID4+IGJpdHNUb05vdFJlYWQ7CgkgICAgICAgICAgICBudW1CaXRzIC09IHRvUmVhZDsKCSAgICAgICAgICAgIGJpdE9mZnNldCArPSB0b1JlYWQ7CgkgICAgICAgICAgICBpZiAoYml0T2Zmc2V0ID09PSA4KSB7CgkgICAgICAgICAgICAgICAgYml0T2Zmc2V0ID0gMDsKCSAgICAgICAgICAgICAgICBieXRlT2Zmc2V0Kys7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgLy8gTmV4dCByZWFkIHdob2xlIGJ5dGVzCgkgICAgICAgIGlmIChudW1CaXRzID4gMCkgewoJICAgICAgICAgICAgd2hpbGUgKG51bUJpdHMgPj0gOCkgewoJICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgPDwgOCkgfCAoYnl0ZXNbYnl0ZU9mZnNldF0gJiAweEZGKTsKCSAgICAgICAgICAgICAgICBieXRlT2Zmc2V0Kys7CgkgICAgICAgICAgICAgICAgbnVtQml0cyAtPSA4OwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgLy8gRmluYWxseSByZWFkIGEgcGFydGlhbCBieXRlCgkgICAgICAgICAgICBpZiAobnVtQml0cyA+IDApIHsKCSAgICAgICAgICAgICAgICB2YXIgYml0c1RvTm90UmVhZCA9IDggLSBudW1CaXRzOwoJICAgICAgICAgICAgICAgIHZhciBtYXNrID0gKDB4RkYgPj4gYml0c1RvTm90UmVhZCkgPDwgYml0c1RvTm90UmVhZDsKCSAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0IDw8IG51bUJpdHMpIHwgKChieXRlc1tieXRlT2Zmc2V0XSAmIG1hc2spID4+IGJpdHNUb05vdFJlYWQpOwoJICAgICAgICAgICAgICAgIGJpdE9mZnNldCArPSBudW1CaXRzOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHRoaXMuYml0T2Zmc2V0ID0gYml0T2Zmc2V0OwoJICAgICAgICB0aGlzLmJ5dGVPZmZzZXQgPSBieXRlT2Zmc2V0OwoJICAgICAgICByZXR1cm4gcmVzdWx0OwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQHJldHVybiBudW1iZXIgb2YgYml0cyB0aGF0IGNhbiBiZSByZWFkIHN1Y2Nlc3NmdWxseQoJICAgICAqLwoJICAgIEJpdFNvdXJjZS5wcm90b3R5cGUuYXZhaWxhYmxlID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gOCAqICh0aGlzLmJ5dGVzLmxlbmd0aCAtIHRoaXMuYnl0ZU9mZnNldCkgLSB0aGlzLmJpdE9mZnNldDsKCSAgICB9OwoJICAgIHJldHVybiBCaXRTb3VyY2U7Cgl9KCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gQml0U291cmNlOwoKCX0pOwoKCXZhciBEZWNvZGVkQml0U3RyZWFtUGFyc2VyXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoKCgoKCgoKCS8qCgkgKiBDb3B5cmlnaHQgMjAwOCBaWGluZyBhdXRob3JzCgkgKgoJICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSAqCgkgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJICoKCSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJICovCgl2YXIgTW9kZTsKCShmdW5jdGlvbiAoTW9kZSkgewoJICAgIE1vZGVbTW9kZVsiUEFEX0VOQ09ERSJdID0gMF0gPSAiUEFEX0VOQ09ERSI7CgkgICAgTW9kZVtNb2RlWyJBU0NJSV9FTkNPREUiXSA9IDFdID0gIkFTQ0lJX0VOQ09ERSI7CgkgICAgTW9kZVtNb2RlWyJDNDBfRU5DT0RFIl0gPSAyXSA9ICJDNDBfRU5DT0RFIjsKCSAgICBNb2RlW01vZGVbIlRFWFRfRU5DT0RFIl0gPSAzXSA9ICJURVhUX0VOQ09ERSI7CgkgICAgTW9kZVtNb2RlWyJBTlNJWDEyX0VOQ09ERSJdID0gNF0gPSAiQU5TSVgxMl9FTkNPREUiOwoJICAgIE1vZGVbTW9kZVsiRURJRkFDVF9FTkNPREUiXSA9IDVdID0gIkVESUZBQ1RfRU5DT0RFIjsKCSAgICBNb2RlW01vZGVbIkJBU0UyNTZfRU5DT0RFIl0gPSA2XSA9ICJCQVNFMjU2X0VOQ09ERSI7Cgl9KShNb2RlIHx8IChNb2RlID0ge30pKTsKCS8qKgoJICogPHA+RGF0YSBNYXRyaXggQ29kZXMgY2FuIGVuY29kZSB0ZXh0IGFzIGJpdHMgaW4gb25lIG9mIHNldmVyYWwgbW9kZXMsIGFuZCBjYW4gdXNlIG11bHRpcGxlIG1vZGVzCgkgKiBpbiBvbmUgRGF0YSBNYXRyaXggQ29kZS4gVGhpcyBjbGFzcyBkZWNvZGVzIHRoZSBiaXRzIGJhY2sgaW50byB0ZXh0LjwvcD4KCSAqCgkgKiA8cD5TZWUgSVNPIDE2MDIyOjIwMDYsIDUuMi4xIC0gNS4yLjkuMjwvcD4KCSAqCgkgKiBAYXV0aG9yIGJicm93bkBnb29nbGUuY29tIChCcmlhbiBCcm93bikKCSAqIEBhdXRob3IgU2VhbiBPd2VuCgkgKi8KCXZhciBEZWNvZGVkQml0U3RyZWFtUGFyc2VyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIGZ1bmN0aW9uIERlY29kZWRCaXRTdHJlYW1QYXJzZXIoKSB7CgkgICAgfQoJICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuZGVjb2RlID0gZnVuY3Rpb24gKGJ5dGVzKSB7CgkgICAgICAgIHZhciBiaXRzID0gbmV3IEJpdFNvdXJjZV8xLmRlZmF1bHQoYnl0ZXMpOwoJICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1aWxkZXJfMS5kZWZhdWx0KCk7CgkgICAgICAgIHZhciByZXN1bHRUcmFpbGVyID0gbmV3IFN0cmluZ0J1aWxkZXJfMS5kZWZhdWx0KCk7CgkgICAgICAgIHZhciBieXRlU2VnbWVudHMgPSBuZXcgQXJyYXkoKTsKCSAgICAgICAgdmFyIG1vZGUgPSBNb2RlLkFTQ0lJX0VOQ09ERTsKCSAgICAgICAgZG8gewoJICAgICAgICAgICAgaWYgKG1vZGUgPT09IE1vZGUuQVNDSUlfRU5DT0RFKSB7CgkgICAgICAgICAgICAgICAgbW9kZSA9IHRoaXMuZGVjb2RlQXNjaWlTZWdtZW50KGJpdHMsIHJlc3VsdCwgcmVzdWx0VHJhaWxlcik7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICBzd2l0Y2ggKG1vZGUpIHsKCSAgICAgICAgICAgICAgICAgICAgY2FzZSBNb2RlLkM0MF9FTkNPREU6CgkgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlY29kZUM0MFNlZ21lbnQoYml0cywgcmVzdWx0KTsKCSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgICAgICBjYXNlIE1vZGUuVEVYVF9FTkNPREU6CgkgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlY29kZVRleHRTZWdtZW50KGJpdHMsIHJlc3VsdCk7CgkgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICAgICAgY2FzZSBNb2RlLkFOU0lYMTJfRU5DT0RFOgoJICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWNvZGVBbnNpWDEyU2VnbWVudChiaXRzLCByZXN1bHQpOwoJICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgICAgIGNhc2UgTW9kZS5FRElGQUNUX0VOQ09ERToKCSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVjb2RlRWRpZmFjdFNlZ21lbnQoYml0cywgcmVzdWx0KTsKCSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgICAgICBjYXNlIE1vZGUuQkFTRTI1Nl9FTkNPREU6CgkgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlY29kZUJhc2UyNTZTZWdtZW50KGJpdHMsIHJlc3VsdCwgYnl0ZVNlZ21lbnRzKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgoJICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgbW9kZSA9IE1vZGUuQVNDSUlfRU5DT0RFOwoJICAgICAgICAgICAgfQoJICAgICAgICB9IHdoaWxlIChtb2RlICE9PSBNb2RlLlBBRF9FTkNPREUgJiYgYml0cy5hdmFpbGFibGUoKSA+IDApOwoJICAgICAgICBpZiAocmVzdWx0VHJhaWxlci5sZW5ndGgoKSA+IDApIHsKCSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocmVzdWx0VHJhaWxlci50b1N0cmluZygpKTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gbmV3IERlY29kZXJSZXN1bHRfMS5kZWZhdWx0KGJ5dGVzLCByZXN1bHQudG9TdHJpbmcoKSwgYnl0ZVNlZ21lbnRzLmxlbmd0aCA9PT0gMCA/IG51bGwgOiBieXRlU2VnbWVudHMsIG51bGwpOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogU2VlIElTTyAxNjAyMjoyMDA2LCA1LjIuMyBhbmQgQW5uZXggQywgVGFibGUgQy4yCgkgICAgICovCgkgICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5kZWNvZGVBc2NpaVNlZ21lbnQgPSBmdW5jdGlvbiAoYml0cywgcmVzdWx0LCByZXN1bHRUcmFpbGVyKSB7CgkgICAgICAgIHZhciB1cHBlclNoaWZ0ID0gZmFsc2U7CgkgICAgICAgIGRvIHsKCSAgICAgICAgICAgIHZhciBvbmVCeXRlID0gYml0cy5yZWFkQml0cyg4KTsKCSAgICAgICAgICAgIGlmIChvbmVCeXRlID09PSAwKSB7CgkgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGVsc2UgaWYgKG9uZUJ5dGUgPD0gMTI4KSB7IC8vIEFTQ0lJIGRhdGEgKEFTQ0lJIHZhbHVlICsgMSkKCSAgICAgICAgICAgICAgICBpZiAodXBwZXJTaGlmdCkgewoJICAgICAgICAgICAgICAgICAgICBvbmVCeXRlICs9IDEyODsKCSAgICAgICAgICAgICAgICAgICAgLy8gdXBwZXJTaGlmdCA9IGZhbHNlOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZy5mcm9tQ2hhckNvZGUob25lQnl0ZSAtIDEpKTsKCSAgICAgICAgICAgICAgICByZXR1cm4gTW9kZS5BU0NJSV9FTkNPREU7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlIGlmIChvbmVCeXRlID09PSAxMjkpIHsgLy8gUGFkCgkgICAgICAgICAgICAgICAgcmV0dXJuIE1vZGUuUEFEX0VOQ09ERTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGVsc2UgaWYgKG9uZUJ5dGUgPD0gMjI5KSB7IC8vIDItZGlnaXQgZGF0YSAwMC05OSAoTnVtZXJpYyBWYWx1ZSArIDEzMCkKCSAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBvbmVCeXRlIC0gMTMwOwoJICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA8IDEwKSB7IC8vIHBhZCB3aXRoICcwJyBmb3Igc2luZ2xlIGRpZ2l0IHZhbHVlcwoJICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcwJyk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJycgKyB2YWx1ZSk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICBzd2l0Y2ggKG9uZUJ5dGUpIHsKCSAgICAgICAgICAgICAgICAgICAgY2FzZSAyMzA6IC8vIExhdGNoIHRvIEM0MCBlbmNvZGF0aW9uCgkgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTW9kZS5DNDBfRU5DT0RFOwoJICAgICAgICAgICAgICAgICAgICBjYXNlIDIzMTogLy8gTGF0Y2ggdG8gQmFzZSAyNTYgZW5jb2RhdGlvbgoJICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE1vZGUuQkFTRTI1Nl9FTkNPREU7CgkgICAgICAgICAgICAgICAgICAgIGNhc2UgMjMyOiAvLyBGTkMxCgkgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZy5mcm9tQ2hhckNvZGUoMjkpKTsgLy8gdHJhbnNsYXRlIGFzIEFTQ0lJIDI5CgkgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICAgICAgY2FzZSAyMzM6IC8vIFN0cnVjdHVyZWQgQXBwZW5kCgkgICAgICAgICAgICAgICAgICAgIGNhc2UgMjM0OiAvLyBSZWFkZXIgUHJvZ3JhbW1pbmcKCSAgICAgICAgICAgICAgICAgICAgICAgIC8vIElnbm9yZSB0aGVzZSBzeW1ib2xzIGZvciBub3cKCSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRocm93IFJlYWRlckV4Y2VwdGlvbi5nZXRJbnN0YW5jZSgpOwoJICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgICAgIGNhc2UgMjM1OiAvLyBVcHBlciBTaGlmdCAoc2hpZnQgdG8gRXh0ZW5kZWQgQVNDSUkpCgkgICAgICAgICAgICAgICAgICAgICAgICB1cHBlclNoaWZ0ID0gdHJ1ZTsKCSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgICAgICBjYXNlIDIzNjogLy8gMDUgTWFjcm8KCSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1spPlx1MDAxRTA1XHUwMDFEJyk7CgkgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRUcmFpbGVyLmluc2VydCgwLCAnXHUwMDFFXHUwMDA0Jyk7CgkgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICAgICAgY2FzZSAyMzc6IC8vIDA2IE1hY3JvCgkgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCdbKT5cdTAwMUUwNlx1MDAxRCcpOwoJICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0VHJhaWxlci5pbnNlcnQoMCwgJ1x1MDAxRVx1MDAwNCcpOwoJICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgICAgIGNhc2UgMjM4OiAvLyBMYXRjaCB0byBBTlNJIFgxMiBlbmNvZGF0aW9uCgkgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTW9kZS5BTlNJWDEyX0VOQ09ERTsKCSAgICAgICAgICAgICAgICAgICAgY2FzZSAyMzk6IC8vIExhdGNoIHRvIFRleHQgZW5jb2RhdGlvbgoJICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE1vZGUuVEVYVF9FTkNPREU7CgkgICAgICAgICAgICAgICAgICAgIGNhc2UgMjQwOiAvLyBMYXRjaCB0byBFRElGQUNUIGVuY29kYXRpb24KCSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBNb2RlLkVESUZBQ1RfRU5DT0RFOwoJICAgICAgICAgICAgICAgICAgICBjYXNlIDI0MTogLy8gRUNJIENoYXJhY3RlcgoJICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9ETyhiYnJvd24pOiBJIHRoaW5rIHdlIG5lZWQgdG8gc3VwcG9ydCBFQ0kKCSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRocm93IFJlYWRlckV4Y2VwdGlvbi5nZXRJbnN0YW5jZSgpOwoJICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWdub3JlIHRoaXMgc3ltYm9sIGZvciBub3cKCSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgoJICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm90IHRvIGJlIHVzZWQgaW4gQVNDSUkgZW5jb2RhdGlvbgoJICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnV0IHdvcmsgYXJvdW5kIGVuY29kZXJzIHRoYXQgZW5kIHdpdGggMjU0LCBsYXRjaCBiYWNrIHRvIEFTQ0lJCgkgICAgICAgICAgICAgICAgICAgICAgICBpZiAob25lQnl0ZSAhPT0gMjU0IHx8IGJpdHMuYXZhaWxhYmxlKCkgIT09IDApIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICB9IHdoaWxlIChiaXRzLmF2YWlsYWJsZSgpID4gMCk7CgkgICAgICAgIHJldHVybiBNb2RlLkFTQ0lJX0VOQ09ERTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIFNlZSBJU08gMTYwMjI6MjAwNiwgNS4yLjUgYW5kIEFubmV4IEMsIFRhYmxlIEMuMQoJICAgICAqLwoJICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuZGVjb2RlQzQwU2VnbWVudCA9IGZ1bmN0aW9uIChiaXRzLCByZXN1bHQpIHsKCSAgICAgICAgLy8gVGhyZWUgQzQwIHZhbHVlcyBhcmUgZW5jb2RlZCBpbiBhIDE2LWJpdCB2YWx1ZSBhcwoJICAgICAgICAvLyAoMTYwMCAqIEMxKSArICg0MCAqIEMyKSArIEMzICsgMQoJICAgICAgICAvLyBUT0RPKGJicm93bik6IFRoZSBVcHBlciBTaGlmdCB3aXRoIEM0MCBkb2Vzbid0IHdvcmsgaW4gdGhlIDQgdmFsdWUgc2NlbmFyaW8gYWxsIHRoZSB0aW1lCgkgICAgICAgIHZhciB1cHBlclNoaWZ0ID0gZmFsc2U7CgkgICAgICAgIHZhciBjVmFsdWVzID0gW107CgkgICAgICAgIHZhciBzaGlmdCA9IDA7CgkgICAgICAgIGRvIHsKCSAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG9ubHkgb25lIGJ5dGUgbGVmdCB0aGVuIGl0IHdpbGwgYmUgZW5jb2RlZCBhcyBBU0NJSQoJICAgICAgICAgICAgaWYgKGJpdHMuYXZhaWxhYmxlKCkgPT09IDgpIHsKCSAgICAgICAgICAgICAgICByZXR1cm47CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICB2YXIgZmlyc3RCeXRlID0gYml0cy5yZWFkQml0cyg4KTsKCSAgICAgICAgICAgIGlmIChmaXJzdEJ5dGUgPT09IDI1NCkgeyAvLyBVbmxhdGNoIGNvZGV3b3JkCgkgICAgICAgICAgICAgICAgcmV0dXJuOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgdGhpcy5wYXJzZVR3b0J5dGVzKGZpcnN0Qnl0ZSwgYml0cy5yZWFkQml0cyg4KSwgY1ZhbHVlcyk7CgkgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDM7IGkrKykgewoJICAgICAgICAgICAgICAgIHZhciBjVmFsdWUgPSBjVmFsdWVzW2ldOwoJICAgICAgICAgICAgICAgIHN3aXRjaCAoc2hpZnQpIHsKCSAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgoJICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNWYWx1ZSA8IDMpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGlmdCA9IGNWYWx1ZSArIDE7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjVmFsdWUgPCB0aGlzLkM0MF9CQVNJQ19TRVRfQ0hBUlMubGVuZ3RoKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGM0MGNoYXIgPSB0aGlzLkM0MF9CQVNJQ19TRVRfQ0hBUlNbY1ZhbHVlXTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodXBwZXJTaGlmdCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZy5mcm9tQ2hhckNvZGUoYzQwY2hhci5jaGFyQ29kZUF0KDApICsgMTI4KSk7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwcGVyU2hpZnQgPSBmYWxzZTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoYzQwY2hhcik7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CgkgICAgICAgICAgICAgICAgICAgICAgICBpZiAodXBwZXJTaGlmdCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nLmZyb21DaGFyQ29kZShjVmFsdWUgKyAxMjgpKTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cHBlclNoaWZ0ID0gZmFsc2U7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZy5mcm9tQ2hhckNvZGUoY1ZhbHVlKSk7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICBzaGlmdCA9IDA7CgkgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICAgICAgY2FzZSAyOgoJICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNWYWx1ZSA8IHRoaXMuQzQwX1NISUZUMl9TRVRfQ0hBUlMubGVuZ3RoKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGM0MGNoYXIgPSB0aGlzLkM0MF9TSElGVDJfU0VUX0NIQVJTW2NWYWx1ZV07CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVwcGVyU2hpZnQpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmcuZnJvbUNoYXJDb2RlKGM0MGNoYXIuY2hhckNvZGVBdCgwKSArIDEyOCkpOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cHBlclNoaWZ0ID0gZmFsc2U7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGM0MGNoYXIpOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoY1ZhbHVlKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjc6IC8vIEZOQzEKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nLmZyb21DaGFyQ29kZSgyOSkpOyAvLyB0cmFuc2xhdGUgYXMgQVNDSUkgMjkKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDMwOiAvLyBVcHBlciBTaGlmdAoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBwZXJTaGlmdCA9IHRydWU7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgc2hpZnQgPSAwOwoJICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKCSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1cHBlclNoaWZ0KSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmcuZnJvbUNoYXJDb2RlKGNWYWx1ZSArIDIyNCkpOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwcGVyU2hpZnQgPSBmYWxzZTsKCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nLmZyb21DaGFyQ29kZShjVmFsdWUgKyA5NikpOwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgc2hpZnQgPSAwOwoJICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CgkgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgfSB3aGlsZSAoYml0cy5hdmFpbGFibGUoKSA+IDApOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogU2VlIElTTyAxNjAyMjoyMDA2LCA1LjIuNiBhbmQgQW5uZXggQywgVGFibGUgQy4yCgkgICAgICovCgkgICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5kZWNvZGVUZXh0U2VnbWVudCA9IGZ1bmN0aW9uIChiaXRzLCByZXN1bHQpIHsKCSAgICAgICAgLy8gVGhyZWUgVGV4dCB2YWx1ZXMgYXJlIGVuY29kZWQgaW4gYSAxNi1iaXQgdmFsdWUgYXMKCSAgICAgICAgLy8gKDE2MDAgKiBDMSkgKyAoNDAgKiBDMikgKyBDMyArIDEKCSAgICAgICAgLy8gVE9ETyhiYnJvd24pOiBUaGUgVXBwZXIgU2hpZnQgd2l0aCBUZXh0IGRvZXNuJ3Qgd29yayBpbiB0aGUgNCB2YWx1ZSBzY2VuYXJpbyBhbGwgdGhlIHRpbWUKCSAgICAgICAgdmFyIHVwcGVyU2hpZnQgPSBmYWxzZTsKCSAgICAgICAgdmFyIGNWYWx1ZXMgPSBbXTsKCSAgICAgICAgdmFyIHNoaWZ0ID0gMDsKCSAgICAgICAgZG8gewoJICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgb25seSBvbmUgYnl0ZSBsZWZ0IHRoZW4gaXQgd2lsbCBiZSBlbmNvZGVkIGFzIEFTQ0lJCgkgICAgICAgICAgICBpZiAoYml0cy5hdmFpbGFibGUoKSA9PT0gOCkgewoJICAgICAgICAgICAgICAgIHJldHVybjsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHZhciBmaXJzdEJ5dGUgPSBiaXRzLnJlYWRCaXRzKDgpOwoJICAgICAgICAgICAgaWYgKGZpcnN0Qnl0ZSA9PT0gMjU0KSB7IC8vIFVubGF0Y2ggY29kZXdvcmQKCSAgICAgICAgICAgICAgICByZXR1cm47CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICB0aGlzLnBhcnNlVHdvQnl0ZXMoZmlyc3RCeXRlLCBiaXRzLnJlYWRCaXRzKDgpLCBjVmFsdWVzKTsKCSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMzsgaSsrKSB7CgkgICAgICAgICAgICAgICAgdmFyIGNWYWx1ZSA9IGNWYWx1ZXNbaV07CgkgICAgICAgICAgICAgICAgc3dpdGNoIChzaGlmdCkgewoJICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CgkgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY1ZhbHVlIDwgMykgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaWZ0ID0gY1ZhbHVlICsgMTsKCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNWYWx1ZSA8IHRoaXMuVEVYVF9CQVNJQ19TRVRfQ0hBUlMubGVuZ3RoKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRleHRDaGFyID0gdGhpcy5URVhUX0JBU0lDX1NFVF9DSEFSU1tjVmFsdWVdOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1cHBlclNoaWZ0KSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nLmZyb21DaGFyQ29kZSh0ZXh0Q2hhci5jaGFyQ29kZUF0KDApICsgMTI4KSk7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwcGVyU2hpZnQgPSBmYWxzZTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodGV4dENoYXIpOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgoJICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVwcGVyU2hpZnQpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZy5mcm9tQ2hhckNvZGUoY1ZhbHVlICsgMTI4KSk7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBwZXJTaGlmdCA9IGZhbHNlOwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmcuZnJvbUNoYXJDb2RlKGNWYWx1ZSkpOwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgc2hpZnQgPSAwOwoJICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKCSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNoaWZ0IDIgZm9yIFRleHQgaXMgdGhlIHNhbWUgZW5jb2RpbmcgYXMgQzQwCgkgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY1ZhbHVlIDwgdGhpcy5URVhUX1NISUZUMl9TRVRfQ0hBUlMubGVuZ3RoKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRleHRDaGFyID0gdGhpcy5URVhUX1NISUZUMl9TRVRfQ0hBUlNbY1ZhbHVlXTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodXBwZXJTaGlmdCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZy5mcm9tQ2hhckNvZGUodGV4dENoYXIuY2hhckNvZGVBdCgwKSArIDEyOCkpOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cHBlclNoaWZ0ID0gZmFsc2U7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHRleHRDaGFyKTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNWYWx1ZSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI3OiAvLyBGTkMxCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZy5mcm9tQ2hhckNvZGUoMjkpKTsgLy8gdHJhbnNsYXRlIGFzIEFTQ0lJIDI5CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzMDogLy8gVXBwZXIgU2hpZnQKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwcGVyU2hpZnQgPSB0cnVlOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgIHNoaWZ0ID0gMDsKCSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgICAgICBjYXNlIDM6CgkgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY1ZhbHVlIDwgdGhpcy5URVhUX1NISUZUM19TRVRfQ0hBUlMubGVuZ3RoKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRleHRDaGFyID0gdGhpcy5URVhUX1NISUZUM19TRVRfQ0hBUlNbY1ZhbHVlXTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodXBwZXJTaGlmdCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZy5mcm9tQ2hhckNvZGUodGV4dENoYXIuY2hhckNvZGVBdCgwKSArIDEyOCkpOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cHBlclNoaWZ0ID0gZmFsc2U7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHRleHRDaGFyKTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpZnQgPSAwOwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgoJICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgIH0gd2hpbGUgKGJpdHMuYXZhaWxhYmxlKCkgPiAwKTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIFNlZSBJU08gMTYwMjI6MjAwNiwgNS4yLjcKCSAgICAgKi8KCSAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLmRlY29kZUFuc2lYMTJTZWdtZW50ID0gZnVuY3Rpb24gKGJpdHMsIHJlc3VsdCkgewoJICAgICAgICAvLyBUaHJlZSBBTlNJIFgxMiB2YWx1ZXMgYXJlIGVuY29kZWQgaW4gYSAxNi1iaXQgdmFsdWUgYXMKCSAgICAgICAgLy8gKDE2MDAgKiBDMSkgKyAoNDAgKiBDMikgKyBDMyArIDEKCSAgICAgICAgdmFyIGNWYWx1ZXMgPSBbXTsKCSAgICAgICAgZG8gewoJICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgb25seSBvbmUgYnl0ZSBsZWZ0IHRoZW4gaXQgd2lsbCBiZSBlbmNvZGVkIGFzIEFTQ0lJCgkgICAgICAgICAgICBpZiAoYml0cy5hdmFpbGFibGUoKSA9PT0gOCkgewoJICAgICAgICAgICAgICAgIHJldHVybjsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHZhciBmaXJzdEJ5dGUgPSBiaXRzLnJlYWRCaXRzKDgpOwoJICAgICAgICAgICAgaWYgKGZpcnN0Qnl0ZSA9PT0gMjU0KSB7IC8vIFVubGF0Y2ggY29kZXdvcmQKCSAgICAgICAgICAgICAgICByZXR1cm47CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICB0aGlzLnBhcnNlVHdvQnl0ZXMoZmlyc3RCeXRlLCBiaXRzLnJlYWRCaXRzKDgpLCBjVmFsdWVzKTsKCSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMzsgaSsrKSB7CgkgICAgICAgICAgICAgICAgdmFyIGNWYWx1ZSA9IGNWYWx1ZXNbaV07CgkgICAgICAgICAgICAgICAgc3dpdGNoIChjVmFsdWUpIHsKCSAgICAgICAgICAgICAgICAgICAgY2FzZSAwOiAvLyBYMTIgc2VnbWVudCB0ZXJtaW5hdG9yIDxDUj4KCSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xyJyk7CgkgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICAgICAgY2FzZSAxOiAvLyBYMTIgc2VnbWVudCBzZXBhcmF0b3IgKgoJICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKicpOwoJICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgICAgIGNhc2UgMjogLy8gWDEyIHN1Yi1lbGVtZW50IHNlcGFyYXRvciA+CgkgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCc+Jyk7CgkgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICAgICAgY2FzZSAzOiAvLyBzcGFjZQoJICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOwoJICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CgkgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY1ZhbHVlIDwgMTQpIHsgLy8gMCAtIDkKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZy5mcm9tQ2hhckNvZGUoY1ZhbHVlICsgNDQpKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNWYWx1ZSA8IDQwKSB7IC8vIEEgLSBaCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmcuZnJvbUNoYXJDb2RlKGNWYWx1ZSArIDUxKSk7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICB9IHdoaWxlIChiaXRzLmF2YWlsYWJsZSgpID4gMCk7CgkgICAgfTsKCSAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLnBhcnNlVHdvQnl0ZXMgPSBmdW5jdGlvbiAoZmlyc3RCeXRlLCBzZWNvbmRCeXRlLCByZXN1bHQpIHsKCSAgICAgICAgdmFyIGZ1bGxCaXRWYWx1ZSA9IChmaXJzdEJ5dGUgPDwgOCkgKyBzZWNvbmRCeXRlIC0gMTsKCSAgICAgICAgdmFyIHRlbXAgPSBNYXRoLmZsb29yKGZ1bGxCaXRWYWx1ZSAvIDE2MDApOwoJICAgICAgICByZXN1bHRbMF0gPSB0ZW1wOwoJICAgICAgICBmdWxsQml0VmFsdWUgLT0gdGVtcCAqIDE2MDA7CgkgICAgICAgIHRlbXAgPSBNYXRoLmZsb29yKGZ1bGxCaXRWYWx1ZSAvIDQwKTsKCSAgICAgICAgcmVzdWx0WzFdID0gdGVtcDsKCSAgICAgICAgcmVzdWx0WzJdID0gZnVsbEJpdFZhbHVlIC0gdGVtcCAqIDQwOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogU2VlIElTTyAxNjAyMjoyMDA2LCA1LjIuOCBhbmQgQW5uZXggQyBUYWJsZSBDLjMKCSAgICAgKi8KCSAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLmRlY29kZUVkaWZhY3RTZWdtZW50ID0gZnVuY3Rpb24gKGJpdHMsIHJlc3VsdCkgewoJICAgICAgICBkbyB7CgkgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBvbmx5IHR3byBvciBsZXNzIGJ5dGVzIGxlZnQgdGhlbiBpdCB3aWxsIGJlIGVuY29kZWQgYXMgQVNDSUkKCSAgICAgICAgICAgIGlmIChiaXRzLmF2YWlsYWJsZSgpIDw9IDE2KSB7CgkgICAgICAgICAgICAgICAgcmV0dXJuOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHsKCSAgICAgICAgICAgICAgICB2YXIgZWRpZmFjdFZhbHVlID0gYml0cy5yZWFkQml0cyg2KTsKCSAgICAgICAgICAgICAgICAvLyBDaGVjayBmb3IgdGhlIHVubGF0Y2ggY2hhcmFjdGVyCgkgICAgICAgICAgICAgICAgaWYgKGVkaWZhY3RWYWx1ZSA9PT0gMHgxRikgeyAvLyAwMTExMTEKCSAgICAgICAgICAgICAgICAgICAgLy8gUmVhZCByZXN0IG9mIGJ5dGUsIHdoaWNoIHNob3VsZCBiZSAwLCBhbmQgc3RvcAoJICAgICAgICAgICAgICAgICAgICB2YXIgYml0c0xlZnQgPSA4IC0gYml0cy5nZXRCaXRPZmZzZXQoKTsKCSAgICAgICAgICAgICAgICAgICAgaWYgKGJpdHNMZWZ0ICE9PSA4KSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBiaXRzLnJlYWRCaXRzKGJpdHNMZWZ0KTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICByZXR1cm47CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGlmICgoZWRpZmFjdFZhbHVlICYgMHgyMCkgPT09IDApIHsgLy8gbm8gMSBpbiB0aGUgbGVhZGluZyAoNnRoKSBiaXQKCSAgICAgICAgICAgICAgICAgICAgZWRpZmFjdFZhbHVlIHw9IDB4NDA7IC8vIEFkZCBhIGxlYWRpbmcgMDEgdG8gdGhlIDYgYml0IGJpbmFyeSB2YWx1ZQoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZy5mcm9tQ2hhckNvZGUoZWRpZmFjdFZhbHVlKSk7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0gd2hpbGUgKGJpdHMuYXZhaWxhYmxlKCkgPiAwKTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIFNlZSBJU08gMTYwMjI6MjAwNiwgNS4yLjkgYW5kIEFubmV4IEIsIEIuMgoJICAgICAqLwoJICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuZGVjb2RlQmFzZTI1NlNlZ21lbnQgPSBmdW5jdGlvbiAoYml0cywgcmVzdWx0LCBieXRlU2VnbWVudHMpIHsKCSAgICAgICAgLy8gRmlndXJlIG91dCBob3cgbG9uZyB0aGUgQmFzZSAyNTYgU2VnbWVudCBpcy4KCSAgICAgICAgdmFyIGNvZGV3b3JkUG9zaXRpb24gPSAxICsgYml0cy5nZXRCeXRlT2Zmc2V0KCk7IC8vIHBvc2l0aW9uIGlzIDEtaW5kZXhlZAoJICAgICAgICB2YXIgZDEgPSB0aGlzLnVucmFuZG9taXplMjU1U3RhdGUoYml0cy5yZWFkQml0cyg4KSwgY29kZXdvcmRQb3NpdGlvbisrKTsKCSAgICAgICAgdmFyIGNvdW50OwoJICAgICAgICBpZiAoZDEgPT09IDApIHsgLy8gUmVhZCB0aGUgcmVtYWluZGVyIG9mIHRoZSBzeW1ib2wKCSAgICAgICAgICAgIGNvdW50ID0gYml0cy5hdmFpbGFibGUoKSAvIDggfCAwOwoJICAgICAgICB9CgkgICAgICAgIGVsc2UgaWYgKGQxIDwgMjUwKSB7CgkgICAgICAgICAgICBjb3VudCA9IGQxOwoJICAgICAgICB9CgkgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgY291bnQgPSAyNTAgKiAoZDEgLSAyNDkpICsgdGhpcy51bnJhbmRvbWl6ZTI1NVN0YXRlKGJpdHMucmVhZEJpdHMoOCksIGNvZGV3b3JkUG9zaXRpb24rKyk7CgkgICAgICAgIH0KCSAgICAgICAgLy8gV2UncmUgc2VlaW5nIE5lZ2F0aXZlQXJyYXlTaXplRXhjZXB0aW9uIGVycm9ycyBmcm9tIHVzZXJzLgoJICAgICAgICBpZiAoY291bnQgPCAwKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGNvdW50KTsKCSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CgkgICAgICAgICAgICAvLyBIYXZlIHNlZW4gdGhpcyBwYXJ0aWN1bGFyIGVycm9yIGluIHRoZSB3aWxkLCBzdWNoIGFzIGF0CgkgICAgICAgICAgICAvLyBodHRwOi8vd3d3LmJjZ2VuLmNvbS9kZW1vL0lEQXV0b21hdGlvblN0cmVhbWluZ0RhdGFNYXRyaXguYXNweD9NT0RFPTMmRD1GcmVkJlBGTVQ9MyZQVD1GJlg9MC4zJk89MCZMTT0wLjIKCSAgICAgICAgICAgIGlmIChiaXRzLmF2YWlsYWJsZSgpIDwgOCkgewoJICAgICAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBieXRlc1tpXSA9IHRoaXMudW5yYW5kb21pemUyNTVTdGF0ZShiaXRzLnJlYWRCaXRzKDgpLCBjb2Rld29yZFBvc2l0aW9uKyspOwoJICAgICAgICB9CgkgICAgICAgIGJ5dGVTZWdtZW50cy5wdXNoKGJ5dGVzKTsKCSAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nRW5jb2RpbmdfMS5kZWZhdWx0LmRlY29kZShieXRlcywgU3RyaW5nVXRpbHNfMS5kZWZhdWx0LklTTzg4NTkxKSk7CgkgICAgICAgIH0KCSAgICAgICAgY2F0Y2ggKHVlZSkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbl8xLmRlZmF1bHQoJ1BsYXRmb3JtIGRvZXMgbm90IHN1cHBvcnQgcmVxdWlyZWQgZW5jb2Rpbmc6ICcgKyB1ZWUubWVzc2FnZSk7CgkgICAgICAgIH0KCSAgICB9OwoJICAgIC8qKgoJICAgICAqIFNlZSBJU08gMTYwMjI6MjAwNiwgQW5uZXggQiwgQi4yCgkgICAgICovCgkgICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci51bnJhbmRvbWl6ZTI1NVN0YXRlID0gZnVuY3Rpb24gKHJhbmRvbWl6ZWRCYXNlMjU2Q29kZXdvcmQsIGJhc2UyNTZDb2Rld29yZFBvc2l0aW9uKSB7CgkgICAgICAgIHZhciBwc2V1ZG9SYW5kb21OdW1iZXIgPSAoKDE0OSAqIGJhc2UyNTZDb2Rld29yZFBvc2l0aW9uKSAlIDI1NSkgKyAxOwoJICAgICAgICB2YXIgdGVtcFZhcmlhYmxlID0gcmFuZG9taXplZEJhc2UyNTZDb2Rld29yZCAtIHBzZXVkb1JhbmRvbU51bWJlcjsKCSAgICAgICAgcmV0dXJuIHRlbXBWYXJpYWJsZSA+PSAwID8gdGVtcFZhcmlhYmxlIDogdGVtcFZhcmlhYmxlICsgMjU2OwoJICAgIH07CgkgICAgLyoqCgkgICAgICogU2VlIElTTyAxNjAyMjoyMDA2LCBBbm5leCBDIFRhYmxlIEMuMQoJICAgICAqIFRoZSBDNDAgQmFzaWMgQ2hhcmFjdGVyIFNldCAoKidzIHVzZWQgZm9yIHBsYWNlaG9sZGVycyBmb3IgdGhlIHNoaWZ0IHZhbHVlcykKCSAgICAgKi8KCSAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLkM0MF9CQVNJQ19TRVRfQ0hBUlMgPSBbCgkgICAgICAgICcqJywgJyonLCAnKicsICcgJywgJzAnLCAnMScsICcyJywgJzMnLCAnNCcsICc1JywgJzYnLCAnNycsICc4JywgJzknLAoJICAgICAgICAnQScsICdCJywgJ0MnLCAnRCcsICdFJywgJ0YnLCAnRycsICdIJywgJ0knLCAnSicsICdLJywgJ0wnLCAnTScsICdOJywKCSAgICAgICAgJ08nLCAnUCcsICdRJywgJ1InLCAnUycsICdUJywgJ1UnLCAnVicsICdXJywgJ1gnLCAnWScsICdaJwoJICAgIF07CgkgICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5DNDBfU0hJRlQyX1NFVF9DSEFSUyA9IFsKCSAgICAgICAgJyEnLCAnIicsICcjJywgJyQnLCAnJScsICcmJywgJ1wnJywgJygnLCAnKScsICcqJywgJysnLCAnLCcsICctJywgJy4nLAoJICAgICAgICAnLycsICc6JywgJzsnLCAnPCcsICc9JywgJz4nLCAnPycsICdAJywgJ1snLCAnXFwnLCAnXScsICdeJywgJ18nCgkgICAgXTsKCSAgICAvKioKCSAgICAgKiBTZWUgSVNPIDE2MDIyOjIwMDYsIEFubmV4IEMgVGFibGUgQy4yCgkgICAgICogVGhlIFRleHQgQmFzaWMgQ2hhcmFjdGVyIFNldCAoKidzIHVzZWQgZm9yIHBsYWNlaG9sZGVycyBmb3IgdGhlIHNoaWZ0IHZhbHVlcykKCSAgICAgKi8KCSAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLlRFWFRfQkFTSUNfU0VUX0NIQVJTID0gWwoJICAgICAgICAnKicsICcqJywgJyonLCAnICcsICcwJywgJzEnLCAnMicsICczJywgJzQnLCAnNScsICc2JywgJzcnLCAnOCcsICc5JywKCSAgICAgICAgJ2EnLCAnYicsICdjJywgJ2QnLCAnZScsICdmJywgJ2cnLCAnaCcsICdpJywgJ2onLCAnaycsICdsJywgJ20nLCAnbicsCgkgICAgICAgICdvJywgJ3AnLCAncScsICdyJywgJ3MnLCAndCcsICd1JywgJ3YnLCAndycsICd4JywgJ3knLCAneicKCSAgICBdOwoJICAgIC8vIFNoaWZ0IDIgZm9yIFRleHQgaXMgdGhlIHNhbWUgZW5jb2RpbmcgYXMgQzQwCgkgICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5URVhUX1NISUZUMl9TRVRfQ0hBUlMgPSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLkM0MF9TSElGVDJfU0VUX0NIQVJTOwoJICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuVEVYVF9TSElGVDNfU0VUX0NIQVJTID0gWwoJICAgICAgICAnYCcsICdBJywgJ0InLCAnQycsICdEJywgJ0UnLCAnRicsICdHJywgJ0gnLCAnSScsICdKJywgJ0snLCAnTCcsICdNJywgJ04nLAoJICAgICAgICAnTycsICdQJywgJ1EnLCAnUicsICdTJywgJ1QnLCAnVScsICdWJywgJ1cnLCAnWCcsICdZJywgJ1onLCAneycsICd8JywgJ30nLCAnficsIFN0cmluZy5mcm9tQ2hhckNvZGUoMTI3KQoJICAgIF07CgkgICAgcmV0dXJuIERlY29kZWRCaXRTdHJlYW1QYXJzZXI7Cgl9KCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gRGVjb2RlZEJpdFN0cmVhbVBhcnNlcjsKCgl9KTsKCgl2YXIgRGVjb2Rlcl8xJDEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7Cgl2YXIgX192YWx1ZXMgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX192YWx1ZXMpIHx8IGZ1bmN0aW9uKG8pIHsKCSAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09ICJmdW5jdGlvbiIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDsKCSAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTsKCSAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09ICJudW1iZXIiKSByZXR1cm4gewoJICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7CgkgICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwOwoJICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9OwoJICAgICAgICB9CgkgICAgfTsKCSAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyAiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS4iIDogIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC4iKTsKCX07CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoKCgoKCgoJLyoKCSAqIENvcHlyaWdodCAyMDA3IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCS8qKgoJICogPHA+VGhlIG1haW4gY2xhc3Mgd2hpY2ggaW1wbGVtZW50cyBEYXRhIE1hdHJpeCBDb2RlIGRlY29kaW5nIC0tIGFzIG9wcG9zZWQgdG8gbG9jYXRpbmcgYW5kIGV4dHJhY3RpbmcKCSAqIHRoZSBEYXRhIE1hdHJpeCBDb2RlIGZyb20gYW4gaW1hZ2UuPC9wPgoJICoKCSAqIEBhdXRob3IgYmJyb3duQGdvb2dsZS5jb20gKEJyaWFuIEJyb3duKQoJICovCgl2YXIgRGVjb2RlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBEZWNvZGVyKCkgewoJICAgICAgICB0aGlzLnJzRGVjb2RlciA9IG5ldyBSZWVkU29sb21vbkRlY29kZXJfMS5kZWZhdWx0KEdlbmVyaWNHRl8xLmRlZmF1bHQuREFUQV9NQVRSSVhfRklFTERfMjU2KTsKCSAgICB9CgkgICAgLyoqCgkgICAgICogPHA+RGVjb2RlcyBhIERhdGEgTWF0cml4IENvZGUgcmVwcmVzZW50ZWQgYXMgYSB7QGxpbmsgQml0TWF0cml4fS4gQSAxIG9yICJ0cnVlIiBpcyB0YWtlbgoJICAgICAqIHRvIG1lYW4gYSBibGFjayBtb2R1bGUuPC9wPgoJICAgICAqCgkgICAgICogQHBhcmFtIGJpdHMgYm9vbGVhbnMgcmVwcmVzZW50aW5nIHdoaXRlL2JsYWNrIERhdGEgTWF0cml4IENvZGUgbW9kdWxlcwoJICAgICAqIEByZXR1cm4gdGV4dCBhbmQgYnl0ZXMgZW5jb2RlZCB3aXRoaW4gdGhlIERhdGEgTWF0cml4IENvZGUKCSAgICAgKiBAdGhyb3dzIEZvcm1hdEV4Y2VwdGlvbiBpZiB0aGUgRGF0YSBNYXRyaXggQ29kZSBjYW5ub3QgYmUgZGVjb2RlZAoJICAgICAqIEB0aHJvd3MgQ2hlY2tzdW1FeGNlcHRpb24gaWYgZXJyb3IgY29ycmVjdGlvbiBmYWlscwoJICAgICAqLwoJICAgIERlY29kZXIucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uIChiaXRzKSB7CgkgICAgICAgIHZhciBlXzEsIF9hOwoJICAgICAgICAvLyBDb25zdHJ1Y3QgYSBwYXJzZXIgYW5kIHJlYWQgdmVyc2lvbiwgZXJyb3ItY29ycmVjdGlvbiBsZXZlbAoJICAgICAgICB2YXIgcGFyc2VyID0gbmV3IEJpdE1hdHJpeFBhcnNlcl8xLmRlZmF1bHQoYml0cyk7CgkgICAgICAgIHZhciB2ZXJzaW9uID0gcGFyc2VyLmdldFZlcnNpb24oKTsKCSAgICAgICAgLy8gUmVhZCBjb2Rld29yZHMKCSAgICAgICAgdmFyIGNvZGV3b3JkcyA9IHBhcnNlci5yZWFkQ29kZXdvcmRzKCk7CgkgICAgICAgIC8vIFNlcGFyYXRlIGludG8gZGF0YSBibG9ja3MKCSAgICAgICAgdmFyIGRhdGFCbG9ja3MgPSBEYXRhQmxvY2tfMS5kZWZhdWx0LmdldERhdGFCbG9ja3MoY29kZXdvcmRzLCB2ZXJzaW9uKTsKCSAgICAgICAgLy8gQ291bnQgdG90YWwgbnVtYmVyIG9mIGRhdGEgYnl0ZXMKCSAgICAgICAgdmFyIHRvdGFsQnl0ZXMgPSAwOwoJICAgICAgICB0cnkgewoJICAgICAgICAgICAgZm9yICh2YXIgZGF0YUJsb2Nrc18xID0gX192YWx1ZXMoZGF0YUJsb2NrcyksIGRhdGFCbG9ja3NfMV8xID0gZGF0YUJsb2Nrc18xLm5leHQoKTsgIWRhdGFCbG9ja3NfMV8xLmRvbmU7IGRhdGFCbG9ja3NfMV8xID0gZGF0YUJsb2Nrc18xLm5leHQoKSkgewoJICAgICAgICAgICAgICAgIHZhciBkYiA9IGRhdGFCbG9ja3NfMV8xLnZhbHVlOwoJICAgICAgICAgICAgICAgIHRvdGFsQnl0ZXMgKz0gZGIuZ2V0TnVtRGF0YUNvZGV3b3JkcygpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9CgkgICAgICAgIGZpbmFsbHkgewoJICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICBpZiAoZGF0YUJsb2Nrc18xXzEgJiYgIWRhdGFCbG9ja3NfMV8xLmRvbmUgJiYgKF9hID0gZGF0YUJsb2Nrc18xLnJldHVybikpIF9hLmNhbGwoZGF0YUJsb2Nrc18xKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH0KCSAgICAgICAgfQoJICAgICAgICB2YXIgcmVzdWx0Qnl0ZXMgPSBuZXcgVWludDhBcnJheSh0b3RhbEJ5dGVzKTsKCSAgICAgICAgdmFyIGRhdGFCbG9ja3NDb3VudCA9IGRhdGFCbG9ja3MubGVuZ3RoOwoJICAgICAgICAvLyBFcnJvci1jb3JyZWN0IGFuZCBjb3B5IGRhdGEgYmxvY2tzIHRvZ2V0aGVyIGludG8gYSBzdHJlYW0gb2YgYnl0ZXMKCSAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBkYXRhQmxvY2tzQ291bnQ7IGorKykgewoJICAgICAgICAgICAgdmFyIGRhdGFCbG9jayA9IGRhdGFCbG9ja3Nbal07CgkgICAgICAgICAgICB2YXIgY29kZXdvcmRCeXRlcyA9IGRhdGFCbG9jay5nZXRDb2Rld29yZHMoKTsKCSAgICAgICAgICAgIHZhciBudW1EYXRhQ29kZXdvcmRzID0gZGF0YUJsb2NrLmdldE51bURhdGFDb2Rld29yZHMoKTsKCSAgICAgICAgICAgIHRoaXMuY29ycmVjdEVycm9ycyhjb2Rld29yZEJ5dGVzLCBudW1EYXRhQ29kZXdvcmRzKTsKCSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtRGF0YUNvZGV3b3JkczsgaSsrKSB7CgkgICAgICAgICAgICAgICAgLy8gRGUtaW50ZXJsYWNlIGRhdGEgYmxvY2tzLgoJICAgICAgICAgICAgICAgIHJlc3VsdEJ5dGVzW2kgKiBkYXRhQmxvY2tzQ291bnQgKyBqXSA9IGNvZGV3b3JkQnl0ZXNbaV07CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgLy8gRGVjb2RlIHRoZSBjb250ZW50cyBvZiB0aGF0IHN0cmVhbSBvZiBieXRlcwoJICAgICAgICByZXR1cm4gRGVjb2RlZEJpdFN0cmVhbVBhcnNlcl8xLmRlZmF1bHQuZGVjb2RlKHJlc3VsdEJ5dGVzKTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIDxwPkdpdmVuIGRhdGEgYW5kIGVycm9yLWNvcnJlY3Rpb24gY29kZXdvcmRzIHJlY2VpdmVkLCBwb3NzaWJseSBjb3JydXB0ZWQgYnkgZXJyb3JzLCBhdHRlbXB0cyB0bwoJICAgICAqIGNvcnJlY3QgdGhlIGVycm9ycyBpbi1wbGFjZSB1c2luZyBSZWVkLVNvbG9tb24gZXJyb3IgY29ycmVjdGlvbi48L3A+CgkgICAgICoKCSAgICAgKiBAcGFyYW0gY29kZXdvcmRCeXRlcyBkYXRhIGFuZCBlcnJvciBjb3JyZWN0aW9uIGNvZGV3b3JkcwoJICAgICAqIEBwYXJhbSBudW1EYXRhQ29kZXdvcmRzIG51bWJlciBvZiBjb2Rld29yZHMgdGhhdCBhcmUgZGF0YSBieXRlcwoJICAgICAqIEB0aHJvd3MgQ2hlY2tzdW1FeGNlcHRpb24gaWYgZXJyb3IgY29ycmVjdGlvbiBmYWlscwoJICAgICAqLwoJICAgIERlY29kZXIucHJvdG90eXBlLmNvcnJlY3RFcnJvcnMgPSBmdW5jdGlvbiAoY29kZXdvcmRCeXRlcywgbnVtRGF0YUNvZGV3b3JkcykgewoJICAgICAgICAvLyBjb25zdCBudW1Db2Rld29yZHMgPSBjb2Rld29yZEJ5dGVzLmxlbmd0aDsKCSAgICAgICAgLy8gRmlyc3QgcmVhZCBpbnRvIGFuIGFycmF5IG9mIGludHMKCSAgICAgICAgdmFyIGNvZGV3b3Jkc0ludHMgPSBuZXcgSW50MzJBcnJheShjb2Rld29yZEJ5dGVzKTsKCSAgICAgICAgLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBudW1Db2Rld29yZHM7IGkrKykgewoJICAgICAgICAvLyAgIGNvZGV3b3Jkc0ludHNbaV0gPSBjb2Rld29yZEJ5dGVzW2ldICYgMHhGRjsKCSAgICAgICAgLy8gfQoJICAgICAgICB0cnkgewoJICAgICAgICAgICAgdGhpcy5yc0RlY29kZXIuZGVjb2RlKGNvZGV3b3Jkc0ludHMsIGNvZGV3b3JkQnl0ZXMubGVuZ3RoIC0gbnVtRGF0YUNvZGV3b3Jkcyk7CgkgICAgICAgIH0KCSAgICAgICAgY2F0Y2ggKGlnbm9yZWQgLyogUmVlZFNvbG9tb25FeGNlcHRpb24gKi8pIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBDaGVja3N1bUV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgfQoJICAgICAgICAvLyBDb3B5IGJhY2sgaW50byBhcnJheSBvZiBieXRlcyAtLSBvbmx5IG5lZWQgdG8gd29ycnkgYWJvdXQgdGhlIGJ5dGVzIHRoYXQgd2VyZSBkYXRhCgkgICAgICAgIC8vIFdlIGRvbid0IGNhcmUgYWJvdXQgZXJyb3JzIGluIHRoZSBlcnJvci1jb3JyZWN0aW9uIGNvZGV3b3JkcwoJICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bURhdGFDb2Rld29yZHM7IGkrKykgewoJICAgICAgICAgICAgY29kZXdvcmRCeXRlc1tpXSA9IGNvZGV3b3Jkc0ludHNbaV07CgkgICAgICAgIH0KCSAgICB9OwoJICAgIHJldHVybiBEZWNvZGVyOwoJfSgpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IERlY29kZXI7CgoJfSk7CgoJdmFyIERldGVjdG9yXzEkMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgoKCgoKCS8qCgkgKiBDb3B5cmlnaHQgMjAwOCBaWGluZyBhdXRob3JzCgkgKgoJICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSAqCgkgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJICoKCSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJICovCgkvKioKCSAqIDxwPkVuY2Fwc3VsYXRlcyBsb2dpYyB0aGF0IGNhbiBkZXRlY3QgYSBEYXRhIE1hdHJpeCBDb2RlIGluIGFuIGltYWdlLCBldmVuIGlmIHRoZSBEYXRhIE1hdHJpeCBDb2RlCgkgKiBpcyByb3RhdGVkIG9yIHNrZXdlZCwgb3IgcGFydGlhbGx5IG9ic2N1cmVkLjwvcD4KCSAqCgkgKiBAYXV0aG9yIFNlYW4gT3dlbgoJICovCgl2YXIgRGV0ZWN0b3IgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgZnVuY3Rpb24gRGV0ZWN0b3IoaW1hZ2UpIHsKCSAgICAgICAgdGhpcy5pbWFnZSA9IGltYWdlOwoJICAgICAgICB0aGlzLnJlY3RhbmdsZURldGVjdG9yID0gbmV3IFdoaXRlUmVjdGFuZ2xlRGV0ZWN0b3JfMS5kZWZhdWx0KHRoaXMuaW1hZ2UpOwoJICAgIH0KCSAgICAvKioKCSAgICAgKiA8cD5EZXRlY3RzIGEgRGF0YSBNYXRyaXggQ29kZSBpbiBhbiBpbWFnZS48L3A+CgkgICAgICoKCSAgICAgKiBAcmV0dXJuIHtAbGluayBEZXRlY3RvclJlc3VsdH0gZW5jYXBzdWxhdGluZyByZXN1bHRzIG9mIGRldGVjdGluZyBhIERhdGEgTWF0cml4IENvZGUKCSAgICAgKiBAdGhyb3dzIE5vdEZvdW5kRXhjZXB0aW9uIGlmIG5vIERhdGEgTWF0cml4IENvZGUgY2FuIGJlIGZvdW5kCgkgICAgICovCgkgICAgRGV0ZWN0b3IucHJvdG90eXBlLmRldGVjdCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgdmFyIGNvcm5lclBvaW50cyA9IHRoaXMucmVjdGFuZ2xlRGV0ZWN0b3IuZGV0ZWN0KCk7CgkgICAgICAgIHZhciBwb2ludHMgPSB0aGlzLmRldGVjdFNvbGlkMShjb3JuZXJQb2ludHMpOwoJICAgICAgICBwb2ludHMgPSB0aGlzLmRldGVjdFNvbGlkMihwb2ludHMpOwoJICAgICAgICBwb2ludHNbM10gPSB0aGlzLmNvcnJlY3RUb3BSaWdodChwb2ludHMpOwoJICAgICAgICBpZiAoIXBvaW50c1szXSkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgICAgIHBvaW50cyA9IHRoaXMuc2hpZnRUb01vZHVsZUNlbnRlcihwb2ludHMpOwoJICAgICAgICB2YXIgdG9wTGVmdCA9IHBvaW50c1swXTsKCSAgICAgICAgdmFyIGJvdHRvbUxlZnQgPSBwb2ludHNbMV07CgkgICAgICAgIHZhciBib3R0b21SaWdodCA9IHBvaW50c1syXTsKCSAgICAgICAgdmFyIHRvcFJpZ2h0ID0gcG9pbnRzWzNdOwoJICAgICAgICB2YXIgZGltZW5zaW9uVG9wID0gdGhpcy50cmFuc2l0aW9uc0JldHdlZW4odG9wTGVmdCwgdG9wUmlnaHQpICsgMTsKCSAgICAgICAgdmFyIGRpbWVuc2lvblJpZ2h0ID0gdGhpcy50cmFuc2l0aW9uc0JldHdlZW4oYm90dG9tUmlnaHQsIHRvcFJpZ2h0KSArIDE7CgkgICAgICAgIGlmICgoZGltZW5zaW9uVG9wICYgMHgwMSkgPT09IDEpIHsKCSAgICAgICAgICAgIGRpbWVuc2lvblRvcCArPSAxOwoJICAgICAgICB9CgkgICAgICAgIGlmICgoZGltZW5zaW9uUmlnaHQgJiAweDAxKSA9PT0gMSkgewoJICAgICAgICAgICAgZGltZW5zaW9uUmlnaHQgKz0gMTsKCSAgICAgICAgfQoJICAgICAgICBpZiAoNCAqIGRpbWVuc2lvblRvcCA8IDcgKiBkaW1lbnNpb25SaWdodCAmJiA0ICogZGltZW5zaW9uUmlnaHQgPCA3ICogZGltZW5zaW9uVG9wKSB7CgkgICAgICAgICAgICAvLyBUaGUgbWF0cml4IGlzIHNxdWFyZQoJICAgICAgICAgICAgZGltZW5zaW9uVG9wID0gZGltZW5zaW9uUmlnaHQgPSBNYXRoLm1heChkaW1lbnNpb25Ub3AsIGRpbWVuc2lvblJpZ2h0KTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgYml0cyA9IERldGVjdG9yLnNhbXBsZUdyaWQodGhpcy5pbWFnZSwgdG9wTGVmdCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQsIHRvcFJpZ2h0LCBkaW1lbnNpb25Ub3AsIGRpbWVuc2lvblJpZ2h0KTsKCSAgICAgICAgcmV0dXJuIG5ldyBEZXRlY3RvclJlc3VsdF8xLmRlZmF1bHQoYml0cywgW3RvcExlZnQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0LCB0b3BSaWdodF0pOwoJICAgIH07CgkgICAgRGV0ZWN0b3Iuc2hpZnRQb2ludCA9IGZ1bmN0aW9uIChwb2ludCwgdG8sIGRpdikgewoJICAgICAgICB2YXIgeCA9ICh0by5nZXRYKCkgLSBwb2ludC5nZXRYKCkpIC8gKGRpdiArIDEpOwoJICAgICAgICB2YXIgeSA9ICh0by5nZXRZKCkgLSBwb2ludC5nZXRZKCkpIC8gKGRpdiArIDEpOwoJICAgICAgICByZXR1cm4gbmV3IFJlc3VsdFBvaW50XzEuZGVmYXVsdChwb2ludC5nZXRYKCkgKyB4LCBwb2ludC5nZXRZKCkgKyB5KTsKCSAgICB9OwoJICAgIERldGVjdG9yLm1vdmVBd2F5ID0gZnVuY3Rpb24gKHBvaW50LCBmcm9tWCwgZnJvbVkpIHsKCSAgICAgICAgdmFyIHggPSBwb2ludC5nZXRYKCk7CgkgICAgICAgIHZhciB5ID0gcG9pbnQuZ2V0WSgpOwoJICAgICAgICBpZiAoeCA8IGZyb21YKSB7CgkgICAgICAgICAgICB4IC09IDE7CgkgICAgICAgIH0KCSAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICB4ICs9IDE7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKHkgPCBmcm9tWSkgewoJICAgICAgICAgICAgeSAtPSAxOwoJICAgICAgICB9CgkgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgeSArPSAxOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBuZXcgUmVzdWx0UG9pbnRfMS5kZWZhdWx0KHgsIHkpOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogRGV0ZWN0IGEgc29saWQgc2lkZSB3aGljaCBoYXMgbWluaW11bSB0cmFuc2l0aW9uLgoJICAgICAqLwoJICAgIERldGVjdG9yLnByb3RvdHlwZS5kZXRlY3RTb2xpZDEgPSBmdW5jdGlvbiAoY29ybmVyUG9pbnRzKSB7CgkgICAgICAgIC8vIDAgIDIKCSAgICAgICAgLy8gMSAgMwoJICAgICAgICB2YXIgcG9pbnRBID0gY29ybmVyUG9pbnRzWzBdOwoJICAgICAgICB2YXIgcG9pbnRCID0gY29ybmVyUG9pbnRzWzFdOwoJICAgICAgICB2YXIgcG9pbnRDID0gY29ybmVyUG9pbnRzWzNdOwoJICAgICAgICB2YXIgcG9pbnREID0gY29ybmVyUG9pbnRzWzJdOwoJICAgICAgICB2YXIgdHJBQiA9IHRoaXMudHJhbnNpdGlvbnNCZXR3ZWVuKHBvaW50QSwgcG9pbnRCKTsKCSAgICAgICAgdmFyIHRyQkMgPSB0aGlzLnRyYW5zaXRpb25zQmV0d2Vlbihwb2ludEIsIHBvaW50Qyk7CgkgICAgICAgIHZhciB0ckNEID0gdGhpcy50cmFuc2l0aW9uc0JldHdlZW4ocG9pbnRDLCBwb2ludEQpOwoJICAgICAgICB2YXIgdHJEQSA9IHRoaXMudHJhbnNpdGlvbnNCZXR3ZWVuKHBvaW50RCwgcG9pbnRBKTsKCSAgICAgICAgLy8gMC4uMwoJICAgICAgICAvLyA6ICA6CgkgICAgICAgIC8vIDEtLTIKCSAgICAgICAgdmFyIG1pbiA9IHRyQUI7CgkgICAgICAgIHZhciBwb2ludHMgPSBbcG9pbnRELCBwb2ludEEsIHBvaW50QiwgcG9pbnRDXTsKCSAgICAgICAgaWYgKG1pbiA+IHRyQkMpIHsKCSAgICAgICAgICAgIG1pbiA9IHRyQkM7CgkgICAgICAgICAgICBwb2ludHNbMF0gPSBwb2ludEE7CgkgICAgICAgICAgICBwb2ludHNbMV0gPSBwb2ludEI7CgkgICAgICAgICAgICBwb2ludHNbMl0gPSBwb2ludEM7CgkgICAgICAgICAgICBwb2ludHNbM10gPSBwb2ludEQ7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKG1pbiA+IHRyQ0QpIHsKCSAgICAgICAgICAgIG1pbiA9IHRyQ0Q7CgkgICAgICAgICAgICBwb2ludHNbMF0gPSBwb2ludEI7CgkgICAgICAgICAgICBwb2ludHNbMV0gPSBwb2ludEM7CgkgICAgICAgICAgICBwb2ludHNbMl0gPSBwb2ludEQ7CgkgICAgICAgICAgICBwb2ludHNbM10gPSBwb2ludEE7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKG1pbiA+IHRyREEpIHsKCSAgICAgICAgICAgIHBvaW50c1swXSA9IHBvaW50QzsKCSAgICAgICAgICAgIHBvaW50c1sxXSA9IHBvaW50RDsKCSAgICAgICAgICAgIHBvaW50c1syXSA9IHBvaW50QTsKCSAgICAgICAgICAgIHBvaW50c1szXSA9IHBvaW50QjsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gcG9pbnRzOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogRGV0ZWN0IGEgc2Vjb25kIHNvbGlkIHNpZGUgbmV4dCB0byBmaXJzdCBzb2xpZCBzaWRlLgoJICAgICAqLwoJICAgIERldGVjdG9yLnByb3RvdHlwZS5kZXRlY3RTb2xpZDIgPSBmdW5jdGlvbiAocG9pbnRzKSB7CgkgICAgICAgIC8vIEEuLkQKCSAgICAgICAgLy8gOiAgOgoJICAgICAgICAvLyBCLS1DCgkgICAgICAgIHZhciBwb2ludEEgPSBwb2ludHNbMF07CgkgICAgICAgIHZhciBwb2ludEIgPSBwb2ludHNbMV07CgkgICAgICAgIHZhciBwb2ludEMgPSBwb2ludHNbMl07CgkgICAgICAgIHZhciBwb2ludEQgPSBwb2ludHNbM107CgkgICAgICAgIC8vIFRyYW5zaXRpb24gZGV0ZWN0aW9uIG9uIHRoZSBlZGdlIGlzIG5vdCBzdGFibGUuCgkgICAgICAgIC8vIFRvIHNhZmVseSBkZXRlY3QsIHNoaWZ0IHRoZSBwb2ludHMgdG8gdGhlIG1vZHVsZSBjZW50ZXIuCgkgICAgICAgIHZhciB0ciA9IHRoaXMudHJhbnNpdGlvbnNCZXR3ZWVuKHBvaW50QSwgcG9pbnREKTsKCSAgICAgICAgdmFyIHBvaW50QnMgPSBEZXRlY3Rvci5zaGlmdFBvaW50KHBvaW50QiwgcG9pbnRDLCAodHIgKyAxKSAqIDQpOwoJICAgICAgICB2YXIgcG9pbnRDcyA9IERldGVjdG9yLnNoaWZ0UG9pbnQocG9pbnRDLCBwb2ludEIsICh0ciArIDEpICogNCk7CgkgICAgICAgIHZhciB0ckJBID0gdGhpcy50cmFuc2l0aW9uc0JldHdlZW4ocG9pbnRCcywgcG9pbnRBKTsKCSAgICAgICAgdmFyIHRyQ0QgPSB0aGlzLnRyYW5zaXRpb25zQmV0d2Vlbihwb2ludENzLCBwb2ludEQpOwoJICAgICAgICAvLyAwLi4zCgkgICAgICAgIC8vIHwgIDoKCSAgICAgICAgLy8gMS0tMgoJICAgICAgICBpZiAodHJCQSA8IHRyQ0QpIHsKCSAgICAgICAgICAgIC8vIHNvbGlkIHNpZGVzOiBBLUItQwoJICAgICAgICAgICAgcG9pbnRzWzBdID0gcG9pbnRBOwoJICAgICAgICAgICAgcG9pbnRzWzFdID0gcG9pbnRCOwoJICAgICAgICAgICAgcG9pbnRzWzJdID0gcG9pbnRDOwoJICAgICAgICAgICAgcG9pbnRzWzNdID0gcG9pbnREOwoJICAgICAgICB9CgkgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgLy8gc29saWQgc2lkZXM6IEItQy1ECgkgICAgICAgICAgICBwb2ludHNbMF0gPSBwb2ludEI7CgkgICAgICAgICAgICBwb2ludHNbMV0gPSBwb2ludEM7CgkgICAgICAgICAgICBwb2ludHNbMl0gPSBwb2ludEQ7CgkgICAgICAgICAgICBwb2ludHNbM10gPSBwb2ludEE7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHBvaW50czsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIENhbGN1bGF0ZXMgdGhlIGNvcm5lciBwb3NpdGlvbiBvZiB0aGUgd2hpdGUgdG9wIHJpZ2h0IG1vZHVsZS4KCSAgICAgKi8KCSAgICBEZXRlY3Rvci5wcm90b3R5cGUuY29ycmVjdFRvcFJpZ2h0ID0gZnVuY3Rpb24gKHBvaW50cykgewoJICAgICAgICAvLyBBLi5ECgkgICAgICAgIC8vIHwgIDoKCSAgICAgICAgLy8gQi0tQwoJICAgICAgICB2YXIgcG9pbnRBID0gcG9pbnRzWzBdOwoJICAgICAgICB2YXIgcG9pbnRCID0gcG9pbnRzWzFdOwoJICAgICAgICB2YXIgcG9pbnRDID0gcG9pbnRzWzJdOwoJICAgICAgICB2YXIgcG9pbnREID0gcG9pbnRzWzNdOwoJICAgICAgICAvLyBzaGlmdCBwb2ludHMgZm9yIHNhZmUgdHJhbnNpdGlvbiBkZXRlY3Rpb24uCgkgICAgICAgIHZhciB0clRvcCA9IHRoaXMudHJhbnNpdGlvbnNCZXR3ZWVuKHBvaW50QSwgcG9pbnREKTsKCSAgICAgICAgdmFyIHRyUmlnaHQgPSB0aGlzLnRyYW5zaXRpb25zQmV0d2Vlbihwb2ludEIsIHBvaW50RCk7CgkgICAgICAgIHZhciBwb2ludEFzID0gRGV0ZWN0b3Iuc2hpZnRQb2ludChwb2ludEEsIHBvaW50QiwgKHRyUmlnaHQgKyAxKSAqIDQpOwoJICAgICAgICB2YXIgcG9pbnRDcyA9IERldGVjdG9yLnNoaWZ0UG9pbnQocG9pbnRDLCBwb2ludEIsICh0clRvcCArIDEpICogNCk7CgkgICAgICAgIHRyVG9wID0gdGhpcy50cmFuc2l0aW9uc0JldHdlZW4ocG9pbnRBcywgcG9pbnREKTsKCSAgICAgICAgdHJSaWdodCA9IHRoaXMudHJhbnNpdGlvbnNCZXR3ZWVuKHBvaW50Q3MsIHBvaW50RCk7CgkgICAgICAgIHZhciBjYW5kaWRhdGUxID0gbmV3IFJlc3VsdFBvaW50XzEuZGVmYXVsdChwb2ludEQuZ2V0WCgpICsgKHBvaW50Qy5nZXRYKCkgLSBwb2ludEIuZ2V0WCgpKSAvICh0clRvcCArIDEpLCBwb2ludEQuZ2V0WSgpICsgKHBvaW50Qy5nZXRZKCkgLSBwb2ludEIuZ2V0WSgpKSAvICh0clRvcCArIDEpKTsKCSAgICAgICAgdmFyIGNhbmRpZGF0ZTIgPSBuZXcgUmVzdWx0UG9pbnRfMS5kZWZhdWx0KHBvaW50RC5nZXRYKCkgKyAocG9pbnRBLmdldFgoKSAtIHBvaW50Qi5nZXRYKCkpIC8gKHRyUmlnaHQgKyAxKSwgcG9pbnRELmdldFkoKSArIChwb2ludEEuZ2V0WSgpIC0gcG9pbnRCLmdldFkoKSkgLyAodHJSaWdodCArIDEpKTsKCSAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoY2FuZGlkYXRlMSkpIHsKCSAgICAgICAgICAgIGlmICh0aGlzLmlzVmFsaWQoY2FuZGlkYXRlMikpIHsKCSAgICAgICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlMjsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHJldHVybiBudWxsOwoJICAgICAgICB9CgkgICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKGNhbmRpZGF0ZTIpKSB7CgkgICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlMTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgc3VtYzEgPSB0aGlzLnRyYW5zaXRpb25zQmV0d2Vlbihwb2ludEFzLCBjYW5kaWRhdGUxKSArIHRoaXMudHJhbnNpdGlvbnNCZXR3ZWVuKHBvaW50Q3MsIGNhbmRpZGF0ZTEpOwoJICAgICAgICB2YXIgc3VtYzIgPSB0aGlzLnRyYW5zaXRpb25zQmV0d2Vlbihwb2ludEFzLCBjYW5kaWRhdGUyKSArIHRoaXMudHJhbnNpdGlvbnNCZXR3ZWVuKHBvaW50Q3MsIGNhbmRpZGF0ZTIpOwoJICAgICAgICBpZiAoc3VtYzEgPiBzdW1jMikgewoJICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZTE7CgkgICAgICAgIH0KCSAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlMjsKCSAgICAgICAgfQoJICAgIH07CgkgICAgLyoqCgkgICAgICogU2hpZnQgdGhlIGVkZ2UgcG9pbnRzIHRvIHRoZSBtb2R1bGUgY2VudGVyLgoJICAgICAqLwoJICAgIERldGVjdG9yLnByb3RvdHlwZS5zaGlmdFRvTW9kdWxlQ2VudGVyID0gZnVuY3Rpb24gKHBvaW50cykgewoJICAgICAgICAvLyBBLi5ECgkgICAgICAgIC8vIHwgIDoKCSAgICAgICAgLy8gQi0tQwoJICAgICAgICB2YXIgcG9pbnRBID0gcG9pbnRzWzBdOwoJICAgICAgICB2YXIgcG9pbnRCID0gcG9pbnRzWzFdOwoJICAgICAgICB2YXIgcG9pbnRDID0gcG9pbnRzWzJdOwoJICAgICAgICB2YXIgcG9pbnREID0gcG9pbnRzWzNdOwoJICAgICAgICAvLyBjYWxjdWxhdGUgcHNldWRvIGRpbWVuc2lvbnMKCSAgICAgICAgdmFyIGRpbUggPSB0aGlzLnRyYW5zaXRpb25zQmV0d2Vlbihwb2ludEEsIHBvaW50RCkgKyAxOwoJICAgICAgICB2YXIgZGltViA9IHRoaXMudHJhbnNpdGlvbnNCZXR3ZWVuKHBvaW50QywgcG9pbnREKSArIDE7CgkgICAgICAgIC8vIHNoaWZ0IHBvaW50cyBmb3Igc2FmZSBkaW1lbnNpb24gZGV0ZWN0aW9uCgkgICAgICAgIHZhciBwb2ludEFzID0gRGV0ZWN0b3Iuc2hpZnRQb2ludChwb2ludEEsIHBvaW50QiwgZGltViAqIDQpOwoJICAgICAgICB2YXIgcG9pbnRDcyA9IERldGVjdG9yLnNoaWZ0UG9pbnQocG9pbnRDLCBwb2ludEIsIGRpbUggKiA0KTsKCSAgICAgICAgLy8gIGNhbGN1bGF0ZSBtb3JlIHByZWNpc2UgZGltZW5zaW9ucwoJICAgICAgICBkaW1IID0gdGhpcy50cmFuc2l0aW9uc0JldHdlZW4ocG9pbnRBcywgcG9pbnREKSArIDE7CgkgICAgICAgIGRpbVYgPSB0aGlzLnRyYW5zaXRpb25zQmV0d2Vlbihwb2ludENzLCBwb2ludEQpICsgMTsKCSAgICAgICAgaWYgKChkaW1IICYgMHgwMSkgPT09IDEpIHsKCSAgICAgICAgICAgIGRpbUggKz0gMTsKCSAgICAgICAgfQoJICAgICAgICBpZiAoKGRpbVYgJiAweDAxKSA9PT0gMSkgewoJICAgICAgICAgICAgZGltViArPSAxOwoJICAgICAgICB9CgkgICAgICAgIC8vIFdoaXRlUmVjdGFuZ2xlRGV0ZWN0b3IgcmV0dXJucyBwb2ludHMgaW5zaWRlIG9mIHRoZSByZWN0YW5nbGUuCgkgICAgICAgIC8vIEkgd2FudCBwb2ludHMgb24gdGhlIGVkZ2VzLgoJICAgICAgICB2YXIgY2VudGVyWCA9IChwb2ludEEuZ2V0WCgpICsgcG9pbnRCLmdldFgoKSArIHBvaW50Qy5nZXRYKCkgKyBwb2ludEQuZ2V0WCgpKSAvIDQ7CgkgICAgICAgIHZhciBjZW50ZXJZID0gKHBvaW50QS5nZXRZKCkgKyBwb2ludEIuZ2V0WSgpICsgcG9pbnRDLmdldFkoKSArIHBvaW50RC5nZXRZKCkpIC8gNDsKCSAgICAgICAgcG9pbnRBID0gRGV0ZWN0b3IubW92ZUF3YXkocG9pbnRBLCBjZW50ZXJYLCBjZW50ZXJZKTsKCSAgICAgICAgcG9pbnRCID0gRGV0ZWN0b3IubW92ZUF3YXkocG9pbnRCLCBjZW50ZXJYLCBjZW50ZXJZKTsKCSAgICAgICAgcG9pbnRDID0gRGV0ZWN0b3IubW92ZUF3YXkocG9pbnRDLCBjZW50ZXJYLCBjZW50ZXJZKTsKCSAgICAgICAgcG9pbnREID0gRGV0ZWN0b3IubW92ZUF3YXkocG9pbnRELCBjZW50ZXJYLCBjZW50ZXJZKTsKCSAgICAgICAgdmFyIHBvaW50QnM7CgkgICAgICAgIHZhciBwb2ludERzOwoJICAgICAgICAvLyBzaGlmdCBwb2ludHMgdG8gdGhlIGNlbnRlciBvZiBlYWNoIG1vZHVsZXMKCSAgICAgICAgcG9pbnRBcyA9IERldGVjdG9yLnNoaWZ0UG9pbnQocG9pbnRBLCBwb2ludEIsIGRpbVYgKiA0KTsKCSAgICAgICAgcG9pbnRBcyA9IERldGVjdG9yLnNoaWZ0UG9pbnQocG9pbnRBcywgcG9pbnRELCBkaW1IICogNCk7CgkgICAgICAgIHBvaW50QnMgPSBEZXRlY3Rvci5zaGlmdFBvaW50KHBvaW50QiwgcG9pbnRBLCBkaW1WICogNCk7CgkgICAgICAgIHBvaW50QnMgPSBEZXRlY3Rvci5zaGlmdFBvaW50KHBvaW50QnMsIHBvaW50QywgZGltSCAqIDQpOwoJICAgICAgICBwb2ludENzID0gRGV0ZWN0b3Iuc2hpZnRQb2ludChwb2ludEMsIHBvaW50RCwgZGltViAqIDQpOwoJICAgICAgICBwb2ludENzID0gRGV0ZWN0b3Iuc2hpZnRQb2ludChwb2ludENzLCBwb2ludEIsIGRpbUggKiA0KTsKCSAgICAgICAgcG9pbnREcyA9IERldGVjdG9yLnNoaWZ0UG9pbnQocG9pbnRELCBwb2ludEMsIGRpbVYgKiA0KTsKCSAgICAgICAgcG9pbnREcyA9IERldGVjdG9yLnNoaWZ0UG9pbnQocG9pbnREcywgcG9pbnRBLCBkaW1IICogNCk7CgkgICAgICAgIHJldHVybiBbcG9pbnRBcywgcG9pbnRCcywgcG9pbnRDcywgcG9pbnREc107CgkgICAgfTsKCSAgICBEZXRlY3Rvci5wcm90b3R5cGUuaXNWYWxpZCA9IGZ1bmN0aW9uIChwKSB7CgkgICAgICAgIHJldHVybiBwLmdldFgoKSA+PSAwICYmIHAuZ2V0WCgpIDwgdGhpcy5pbWFnZS5nZXRXaWR0aCgpICYmIHAuZ2V0WSgpID4gMCAmJiBwLmdldFkoKSA8IHRoaXMuaW1hZ2UuZ2V0SGVpZ2h0KCk7CgkgICAgfTsKCSAgICBEZXRlY3Rvci5zYW1wbGVHcmlkID0gZnVuY3Rpb24gKGltYWdlLCB0b3BMZWZ0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCwgdG9wUmlnaHQsIGRpbWVuc2lvblgsIGRpbWVuc2lvblkpIHsKCSAgICAgICAgdmFyIHNhbXBsZXIgPSBHcmlkU2FtcGxlckluc3RhbmNlXzEuZGVmYXVsdC5nZXRJbnN0YW5jZSgpOwoJICAgICAgICByZXR1cm4gc2FtcGxlci5zYW1wbGVHcmlkKGltYWdlLCBkaW1lbnNpb25YLCBkaW1lbnNpb25ZLCAwLjUsIDAuNSwgZGltZW5zaW9uWCAtIDAuNSwgMC41LCBkaW1lbnNpb25YIC0gMC41LCBkaW1lbnNpb25ZIC0gMC41LCAwLjUsIGRpbWVuc2lvblkgLSAwLjUsIHRvcExlZnQuZ2V0WCgpLCB0b3BMZWZ0LmdldFkoKSwgdG9wUmlnaHQuZ2V0WCgpLCB0b3BSaWdodC5nZXRZKCksIGJvdHRvbVJpZ2h0LmdldFgoKSwgYm90dG9tUmlnaHQuZ2V0WSgpLCBib3R0b21MZWZ0LmdldFgoKSwgYm90dG9tTGVmdC5nZXRZKCkpOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQ291bnRzIHRoZSBudW1iZXIgb2YgYmxhY2svd2hpdGUgdHJhbnNpdGlvbnMgYmV0d2VlbiB0d28gcG9pbnRzLCB1c2luZyBzb21ldGhpbmcgbGlrZSBCcmVzZW5oYW0ncyBhbGdvcml0aG0uCgkgICAgICovCgkgICAgRGV0ZWN0b3IucHJvdG90eXBlLnRyYW5zaXRpb25zQmV0d2VlbiA9IGZ1bmN0aW9uIChmcm9tLCB0bykgewoJICAgICAgICAvLyBTZWUgUVIgQ29kZSBEZXRlY3Rvciwgc2l6ZU9mQmxhY2tXaGl0ZUJsYWNrUnVuKCkKCSAgICAgICAgdmFyIGZyb21YID0gTWF0aC50cnVuYyhmcm9tLmdldFgoKSk7CgkgICAgICAgIHZhciBmcm9tWSA9IE1hdGgudHJ1bmMoZnJvbS5nZXRZKCkpOwoJICAgICAgICB2YXIgdG9YID0gTWF0aC50cnVuYyh0by5nZXRYKCkpOwoJICAgICAgICB2YXIgdG9ZID0gTWF0aC50cnVuYyh0by5nZXRZKCkpOwoJICAgICAgICB2YXIgc3RlZXAgPSBNYXRoLmFicyh0b1kgLSBmcm9tWSkgPiBNYXRoLmFicyh0b1ggLSBmcm9tWCk7CgkgICAgICAgIGlmIChzdGVlcCkgewoJICAgICAgICAgICAgdmFyIHRlbXAgPSBmcm9tWDsKCSAgICAgICAgICAgIGZyb21YID0gZnJvbVk7CgkgICAgICAgICAgICBmcm9tWSA9IHRlbXA7CgkgICAgICAgICAgICB0ZW1wID0gdG9YOwoJICAgICAgICAgICAgdG9YID0gdG9ZOwoJICAgICAgICAgICAgdG9ZID0gdGVtcDsKCSAgICAgICAgfQoJICAgICAgICB2YXIgZHggPSBNYXRoLmFicyh0b1ggLSBmcm9tWCk7CgkgICAgICAgIHZhciBkeSA9IE1hdGguYWJzKHRvWSAtIGZyb21ZKTsKCSAgICAgICAgdmFyIGVycm9yID0gLWR4IC8gMjsKCSAgICAgICAgdmFyIHlzdGVwID0gZnJvbVkgPCB0b1kgPyAxIDogLTE7CgkgICAgICAgIHZhciB4c3RlcCA9IGZyb21YIDwgdG9YID8gMSA6IC0xOwoJICAgICAgICB2YXIgdHJhbnNpdGlvbnMgPSAwOwoJICAgICAgICB2YXIgaW5CbGFjayA9IHRoaXMuaW1hZ2UuZ2V0KHN0ZWVwID8gZnJvbVkgOiBmcm9tWCwgc3RlZXAgPyBmcm9tWCA6IGZyb21ZKTsKCSAgICAgICAgZm9yICh2YXIgeCA9IGZyb21YLCB5ID0gZnJvbVk7IHggIT09IHRvWDsgeCArPSB4c3RlcCkgewoJICAgICAgICAgICAgdmFyIGlzQmxhY2sgPSB0aGlzLmltYWdlLmdldChzdGVlcCA/IHkgOiB4LCBzdGVlcCA/IHggOiB5KTsKCSAgICAgICAgICAgIGlmIChpc0JsYWNrICE9PSBpbkJsYWNrKSB7CgkgICAgICAgICAgICAgICAgdHJhbnNpdGlvbnMrKzsKCSAgICAgICAgICAgICAgICBpbkJsYWNrID0gaXNCbGFjazsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGVycm9yICs9IGR5OwoJICAgICAgICAgICAgaWYgKGVycm9yID4gMCkgewoJICAgICAgICAgICAgICAgIGlmICh5ID09PSB0b1kpIHsKCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIHkgKz0geXN0ZXA7CgkgICAgICAgICAgICAgICAgZXJyb3IgLT0gZHg7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHRyYW5zaXRpb25zOwoJICAgIH07CgkgICAgcmV0dXJuIERldGVjdG9yOwoJfSgpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IERldGVjdG9yOwoKCX0pOwoKCXZhciBEYXRhTWF0cml4UmVhZGVyXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoKCgoKCgoKCgoJLyoKCSAqIENvcHlyaWdodCAyMDA3IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCS8qKgoJICogVGhpcyBpbXBsZW1lbnRhdGlvbiBjYW4gZGV0ZWN0IGFuZCBkZWNvZGUgRGF0YSBNYXRyaXggY29kZXMgaW4gYW4gaW1hZ2UuCgkgKgoJICogQGF1dGhvciBiYnJvd25AZ29vZ2xlLmNvbSAoQnJpYW4gQnJvd24pCgkgKi8KCXZhciBEYXRhTWF0cml4UmVhZGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIGZ1bmN0aW9uIERhdGFNYXRyaXhSZWFkZXIoKSB7CgkgICAgICAgIHRoaXMuZGVjb2RlciA9IG5ldyBEZWNvZGVyXzEkMS5kZWZhdWx0KCk7CgkgICAgfQoJICAgIC8qKgoJICAgICAqIExvY2F0ZXMgYW5kIGRlY29kZXMgYSBEYXRhIE1hdHJpeCBjb2RlIGluIGFuIGltYWdlLgoJICAgICAqCgkgICAgICogQHJldHVybiBhIFN0cmluZyByZXByZXNlbnRpbmcgdGhlIGNvbnRlbnQgZW5jb2RlZCBieSB0aGUgRGF0YSBNYXRyaXggY29kZQoJICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb24gaWYgYSBEYXRhIE1hdHJpeCBjb2RlIGNhbm5vdCBiZSBmb3VuZAoJICAgICAqIEB0aHJvd3MgRm9ybWF0RXhjZXB0aW9uIGlmIGEgRGF0YSBNYXRyaXggY29kZSBjYW5ub3QgYmUgZGVjb2RlZAoJICAgICAqIEB0aHJvd3MgQ2hlY2tzdW1FeGNlcHRpb24gaWYgZXJyb3IgY29ycmVjdGlvbiBmYWlscwoJICAgICAqLwoJICAgIC8vIEBPdmVycmlkZQoJICAgIC8vIHB1YmxpYyBSZXN1bHQgZGVjb2RlKEJpbmFyeUJpdG1hcCBpbWFnZSkgdGhyb3dzIE5vdEZvdW5kRXhjZXB0aW9uLCBDaGVja3N1bUV4Y2VwdGlvbiwgRm9ybWF0RXhjZXB0aW9uIHsKCSAgICAvLyAgIHJldHVybiBkZWNvZGUoaW1hZ2UsIG51bGwpOwoJICAgIC8vIH0KCSAgICAvLyBAT3ZlcnJpZGUKCSAgICBEYXRhTWF0cml4UmVhZGVyLnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbiAoaW1hZ2UsIGhpbnRzKSB7CgkgICAgICAgIGlmIChoaW50cyA9PT0gdm9pZCAwKSB7IGhpbnRzID0gbnVsbDsgfQoJICAgICAgICB2YXIgZGVjb2RlclJlc3VsdDsKCSAgICAgICAgdmFyIHBvaW50czsKCSAgICAgICAgaWYgKGhpbnRzICE9IG51bGwgJiYgaGludHMuaGFzKERlY29kZUhpbnRUeXBlXzEuZGVmYXVsdC5QVVJFX0JBUkNPREUpKSB7CgkgICAgICAgICAgICB2YXIgYml0cyA9IERhdGFNYXRyaXhSZWFkZXIuZXh0cmFjdFB1cmVCaXRzKGltYWdlLmdldEJsYWNrTWF0cml4KCkpOwoJICAgICAgICAgICAgZGVjb2RlclJlc3VsdCA9IHRoaXMuZGVjb2Rlci5kZWNvZGUoYml0cyk7CgkgICAgICAgICAgICBwb2ludHMgPSBEYXRhTWF0cml4UmVhZGVyLk5PX1BPSU5UUzsKCSAgICAgICAgfQoJICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgIHZhciBkZXRlY3RvclJlc3VsdCA9IG5ldyBEZXRlY3Rvcl8xJDEuZGVmYXVsdChpbWFnZS5nZXRCbGFja01hdHJpeCgpKS5kZXRlY3QoKTsKCSAgICAgICAgICAgIGRlY29kZXJSZXN1bHQgPSB0aGlzLmRlY29kZXIuZGVjb2RlKGRldGVjdG9yUmVzdWx0LmdldEJpdHMoKSk7CgkgICAgICAgICAgICBwb2ludHMgPSBkZXRlY3RvclJlc3VsdC5nZXRQb2ludHMoKTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgcmF3Qnl0ZXMgPSBkZWNvZGVyUmVzdWx0LmdldFJhd0J5dGVzKCk7CgkgICAgICAgIHZhciByZXN1bHQgPSBuZXcgUmVzdWx0XzEuZGVmYXVsdChkZWNvZGVyUmVzdWx0LmdldFRleHQoKSwgcmF3Qnl0ZXMsIDggKiByYXdCeXRlcy5sZW5ndGgsIHBvaW50cywgQmFyY29kZUZvcm1hdF8xLmRlZmF1bHQuREFUQV9NQVRSSVgsIFN5c3RlbV8xLmRlZmF1bHQuY3VycmVudFRpbWVNaWxsaXMoKSk7CgkgICAgICAgIHZhciBieXRlU2VnbWVudHMgPSBkZWNvZGVyUmVzdWx0LmdldEJ5dGVTZWdtZW50cygpOwoJICAgICAgICBpZiAoYnl0ZVNlZ21lbnRzICE9IG51bGwpIHsKCSAgICAgICAgICAgIHJlc3VsdC5wdXRNZXRhZGF0YShSZXN1bHRNZXRhZGF0YVR5cGVfMS5kZWZhdWx0LkJZVEVfU0VHTUVOVFMsIGJ5dGVTZWdtZW50cyk7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGVjTGV2ZWwgPSBkZWNvZGVyUmVzdWx0LmdldEVDTGV2ZWwoKTsKCSAgICAgICAgaWYgKGVjTGV2ZWwgIT0gbnVsbCkgewoJICAgICAgICAgICAgcmVzdWx0LnB1dE1ldGFkYXRhKFJlc3VsdE1ldGFkYXRhVHlwZV8xLmRlZmF1bHQuRVJST1JfQ09SUkVDVElPTl9MRVZFTCwgZWNMZXZlbCk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHJlc3VsdDsKCSAgICB9OwoJICAgIC8vIEBPdmVycmlkZQoJICAgIERhdGFNYXRyaXhSZWFkZXIucHJvdG90eXBlLnJlc2V0ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICAvLyBkbyBub3RoaW5nCgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBUaGlzIG1ldGhvZCBkZXRlY3RzIGEgY29kZSBpbiBhICJwdXJlIiBpbWFnZSAtLSB0aGF0IGlzLCBwdXJlIG1vbm9jaHJvbWUgaW1hZ2UKCSAgICAgKiB3aGljaCBjb250YWlucyBvbmx5IGFuIHVucm90YXRlZCwgdW5za2V3ZWQsIGltYWdlIG9mIGEgY29kZSwgd2l0aCBzb21lIHdoaXRlIGJvcmRlcgoJICAgICAqIGFyb3VuZCBpdC4gVGhpcyBpcyBhIHNwZWNpYWxpemVkIG1ldGhvZCB0aGF0IHdvcmtzIGV4Y2VwdGlvbmFsbHkgZmFzdCBpbiB0aGlzIHNwZWNpYWwKCSAgICAgKiBjYXNlLgoJICAgICAqCgkgICAgICogQHNlZSBjb20uZ29vZ2xlLnp4aW5nLnFyY29kZS5RUkNvZGVSZWFkZXIjZXh0cmFjdFB1cmVCaXRzKEJpdE1hdHJpeCkKCSAgICAgKi8KCSAgICBEYXRhTWF0cml4UmVhZGVyLmV4dHJhY3RQdXJlQml0cyA9IGZ1bmN0aW9uIChpbWFnZSkgewoJICAgICAgICB2YXIgbGVmdFRvcEJsYWNrID0gaW1hZ2UuZ2V0VG9wTGVmdE9uQml0KCk7CgkgICAgICAgIHZhciByaWdodEJvdHRvbUJsYWNrID0gaW1hZ2UuZ2V0Qm90dG9tUmlnaHRPbkJpdCgpOwoJICAgICAgICBpZiAobGVmdFRvcEJsYWNrID09IG51bGwgfHwgcmlnaHRCb3R0b21CbGFjayA9PSBudWxsKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIG1vZHVsZVNpemUgPSB0aGlzLm1vZHVsZVNpemUobGVmdFRvcEJsYWNrLCBpbWFnZSk7CgkgICAgICAgIHZhciB0b3AgPSBsZWZ0VG9wQmxhY2tbMV07CgkgICAgICAgIHZhciBib3R0b20gPSByaWdodEJvdHRvbUJsYWNrWzFdOwoJICAgICAgICB2YXIgbGVmdCA9IGxlZnRUb3BCbGFja1swXTsKCSAgICAgICAgdmFyIHJpZ2h0ID0gcmlnaHRCb3R0b21CbGFja1swXTsKCSAgICAgICAgdmFyIG1hdHJpeFdpZHRoID0gKHJpZ2h0IC0gbGVmdCArIDEpIC8gbW9kdWxlU2l6ZTsKCSAgICAgICAgdmFyIG1hdHJpeEhlaWdodCA9IChib3R0b20gLSB0b3AgKyAxKSAvIG1vZHVsZVNpemU7CgkgICAgICAgIGlmIChtYXRyaXhXaWR0aCA8PSAwIHx8IG1hdHJpeEhlaWdodCA8PSAwKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgIH0KCSAgICAgICAgLy8gUHVzaCBpbiB0aGUgImJvcmRlciIgYnkgaGFsZiB0aGUgbW9kdWxlIHdpZHRoIHNvIHRoYXQgd2Ugc3RhcnQKCSAgICAgICAgLy8gc2FtcGxpbmcgaW4gdGhlIG1pZGRsZSBvZiB0aGUgbW9kdWxlLiBKdXN0IGluIGNhc2UgdGhlIGltYWdlIGlzIGEKCSAgICAgICAgLy8gbGl0dGxlIG9mZiwgdGhpcyB3aWxsIGhlbHAgcmVjb3Zlci4KCSAgICAgICAgdmFyIG51ZGdlID0gbW9kdWxlU2l6ZSAvIDI7CgkgICAgICAgIHRvcCArPSBudWRnZTsKCSAgICAgICAgbGVmdCArPSBudWRnZTsKCSAgICAgICAgLy8gTm93IGp1c3QgcmVhZCBvZmYgdGhlIGJpdHMKCSAgICAgICAgdmFyIGJpdHMgPSBuZXcgQml0TWF0cml4XzEuZGVmYXVsdChtYXRyaXhXaWR0aCwgbWF0cml4SGVpZ2h0KTsKCSAgICAgICAgZm9yICh2YXIgeSA9IDA7IHkgPCBtYXRyaXhIZWlnaHQ7IHkrKykgewoJICAgICAgICAgICAgdmFyIGlPZmZzZXQgPSB0b3AgKyB5ICogbW9kdWxlU2l6ZTsKCSAgICAgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgbWF0cml4V2lkdGg7IHgrKykgewoJICAgICAgICAgICAgICAgIGlmIChpbWFnZS5nZXQobGVmdCArIHggKiBtb2R1bGVTaXplLCBpT2Zmc2V0KSkgewoJICAgICAgICAgICAgICAgICAgICBiaXRzLnNldCh4LCB5KTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIGJpdHM7CgkgICAgfTsKCSAgICBEYXRhTWF0cml4UmVhZGVyLm1vZHVsZVNpemUgPSBmdW5jdGlvbiAobGVmdFRvcEJsYWNrLCBpbWFnZSkgewoJICAgICAgICB2YXIgd2lkdGggPSBpbWFnZS5nZXRXaWR0aCgpOwoJICAgICAgICB2YXIgeCA9IGxlZnRUb3BCbGFja1swXTsKCSAgICAgICAgdmFyIHkgPSBsZWZ0VG9wQmxhY2tbMV07CgkgICAgICAgIHdoaWxlICh4IDwgd2lkdGggJiYgaW1hZ2UuZ2V0KHgsIHkpKSB7CgkgICAgICAgICAgICB4Kys7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKHggPT09IHdpZHRoKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIG1vZHVsZVNpemUgPSB4IC0gbGVmdFRvcEJsYWNrWzBdOwoJICAgICAgICBpZiAobW9kdWxlU2l6ZSA9PT0gMCkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBtb2R1bGVTaXplOwoJICAgIH07CgkgICAgRGF0YU1hdHJpeFJlYWRlci5OT19QT0lOVFMgPSBbXTsKCSAgICByZXR1cm4gRGF0YU1hdHJpeFJlYWRlcjsKCX0oKSk7CglleHBvcnRzLmRlZmF1bHQgPSBEYXRhTWF0cml4UmVhZGVyOwoKCX0pOwoKCXZhciBCcm93c2VyRGF0YW1hdHJpeENvZGVSZWFkZXJfMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCXZhciBfX2V4dGVuZHMgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkgewoJICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fAoJICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fAoJICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07CgkgICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgIH07CgkgICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfQoJICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7CgkgICAgfTsKCX0pKCk7CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJZXhwb3J0cy5Ccm93c2VyRGF0YW1hdHJpeENvZGVSZWFkZXIgPSB2b2lkIDA7CgoKCS8qKgoJICogQGRlcHJlY2F0ZWQgTW92aW5nIHRvIEB6eGluZy9icm93c2VyCgkgKgoJICogUVIgQ29kZSByZWFkZXIgdG8gdXNlIGZyb20gYnJvd3Nlci4KCSAqLwoJdmFyIEJyb3dzZXJEYXRhbWF0cml4Q29kZVJlYWRlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHsKCSAgICBfX2V4dGVuZHMoQnJvd3NlckRhdGFtYXRyaXhDb2RlUmVhZGVyLCBfc3VwZXIpOwoJICAgIC8qKgoJICAgICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgQnJvd3NlclFSQ29kZVJlYWRlci4KCSAgICAgKiBAcGFyYW0ge251bWJlcn0gW3RpbWVCZXR3ZWVuU2NhbnNNaWxsaXM9NTAwXSB0aGUgdGltZSBkZWxheSBiZXR3ZWVuIHN1YnNlcXVlbnQgZGVjb2RlIHRyaWVzCgkgICAgICovCgkgICAgZnVuY3Rpb24gQnJvd3NlckRhdGFtYXRyaXhDb2RlUmVhZGVyKHRpbWVCZXR3ZWVuU2NhbnNNaWxsaXMpIHsKCSAgICAgICAgaWYgKHRpbWVCZXR3ZWVuU2NhbnNNaWxsaXMgPT09IHZvaWQgMCkgeyB0aW1lQmV0d2VlblNjYW5zTWlsbGlzID0gNTAwOyB9CgkgICAgICAgIHJldHVybiBfc3VwZXIuY2FsbCh0aGlzLCBuZXcgRGF0YU1hdHJpeFJlYWRlcl8xLmRlZmF1bHQoKSwgdGltZUJldHdlZW5TY2Fuc01pbGxpcykgfHwgdGhpczsKCSAgICB9CgkgICAgcmV0dXJuIEJyb3dzZXJEYXRhbWF0cml4Q29kZVJlYWRlcjsKCX0oQnJvd3NlckNvZGVSZWFkZXJfMS5Ccm93c2VyQ29kZVJlYWRlcikpOwoJZXhwb3J0cy5Ccm93c2VyRGF0YW1hdHJpeENvZGVSZWFkZXIgPSBCcm93c2VyRGF0YW1hdHJpeENvZGVSZWFkZXI7CgoJfSk7CgoJdmFyIEVycm9yQ29ycmVjdGlvbkxldmVsXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CgkvKgoJICogQ29weXJpZ2h0IDIwMDcgWlhpbmcgYXV0aG9ycwoJICoKCSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkgKgoJICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSAqCgkgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSAqLwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCWV4cG9ydHMuRXJyb3JDb3JyZWN0aW9uTGV2ZWxWYWx1ZXMgPSB2b2lkIDA7CgkvKm5hbWVzcGFjZSBjb20uZ29vZ2xlLnp4aW5nLnFyY29kZS5kZWNvZGVyIHsqLwoKCgl2YXIgRXJyb3JDb3JyZWN0aW9uTGV2ZWxWYWx1ZXM7CgkoZnVuY3Rpb24gKEVycm9yQ29ycmVjdGlvbkxldmVsVmFsdWVzKSB7CgkgICAgRXJyb3JDb3JyZWN0aW9uTGV2ZWxWYWx1ZXNbRXJyb3JDb3JyZWN0aW9uTGV2ZWxWYWx1ZXNbIkwiXSA9IDBdID0gIkwiOwoJICAgIEVycm9yQ29ycmVjdGlvbkxldmVsVmFsdWVzW0Vycm9yQ29ycmVjdGlvbkxldmVsVmFsdWVzWyJNIl0gPSAxXSA9ICJNIjsKCSAgICBFcnJvckNvcnJlY3Rpb25MZXZlbFZhbHVlc1tFcnJvckNvcnJlY3Rpb25MZXZlbFZhbHVlc1siUSJdID0gMl0gPSAiUSI7CgkgICAgRXJyb3JDb3JyZWN0aW9uTGV2ZWxWYWx1ZXNbRXJyb3JDb3JyZWN0aW9uTGV2ZWxWYWx1ZXNbIkgiXSA9IDNdID0gIkgiOwoJfSkoRXJyb3JDb3JyZWN0aW9uTGV2ZWxWYWx1ZXMgPSBleHBvcnRzLkVycm9yQ29ycmVjdGlvbkxldmVsVmFsdWVzIHx8IChleHBvcnRzLkVycm9yQ29ycmVjdGlvbkxldmVsVmFsdWVzID0ge30pKTsKCS8qKgoJICogPHA+U2VlIElTTyAxODAwNDoyMDA2LCA2LjUuMS4gVGhpcyBlbnVtIGVuY2Fwc3VsYXRlcyB0aGUgZm91ciBlcnJvciBjb3JyZWN0aW9uIGxldmVscwoJICogZGVmaW5lZCBieSB0aGUgUVIgY29kZSBzdGFuZGFyZC48L3A+CgkgKgoJICogQGF1dGhvciBTZWFuIE93ZW4KCSAqLwoJdmFyIEVycm9yQ29ycmVjdGlvbkxldmVsID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIGZ1bmN0aW9uIEVycm9yQ29ycmVjdGlvbkxldmVsKHZhbHVlLCBzdHJpbmdWYWx1ZSwgYml0cyAvKmludCovKSB7CgkgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTsKCSAgICAgICAgdGhpcy5zdHJpbmdWYWx1ZSA9IHN0cmluZ1ZhbHVlOwoJICAgICAgICB0aGlzLmJpdHMgPSBiaXRzOwoJICAgICAgICBFcnJvckNvcnJlY3Rpb25MZXZlbC5GT1JfQklUUy5zZXQoYml0cywgdGhpcyk7CgkgICAgICAgIEVycm9yQ29ycmVjdGlvbkxldmVsLkZPUl9WQUxVRS5zZXQodmFsdWUsIHRoaXMpOwoJICAgIH0KCSAgICBFcnJvckNvcnJlY3Rpb25MZXZlbC5wcm90b3R5cGUuZ2V0VmFsdWUgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLnZhbHVlOwoJICAgIH07CgkgICAgRXJyb3JDb3JyZWN0aW9uTGV2ZWwucHJvdG90eXBlLmdldEJpdHMgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmJpdHM7CgkgICAgfTsKCSAgICBFcnJvckNvcnJlY3Rpb25MZXZlbC5mcm9tU3RyaW5nID0gZnVuY3Rpb24gKHMpIHsKCSAgICAgICAgc3dpdGNoIChzKSB7CgkgICAgICAgICAgICBjYXNlICdMJzogcmV0dXJuIEVycm9yQ29ycmVjdGlvbkxldmVsLkw7CgkgICAgICAgICAgICBjYXNlICdNJzogcmV0dXJuIEVycm9yQ29ycmVjdGlvbkxldmVsLk07CgkgICAgICAgICAgICBjYXNlICdRJzogcmV0dXJuIEVycm9yQ29ycmVjdGlvbkxldmVsLlE7CgkgICAgICAgICAgICBjYXNlICdIJzogcmV0dXJuIEVycm9yQ29ycmVjdGlvbkxldmVsLkg7CgkgICAgICAgICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KHMgKyAnbm90IGF2YWlsYWJsZScpOwoJICAgICAgICB9CgkgICAgfTsKCSAgICBFcnJvckNvcnJlY3Rpb25MZXZlbC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLnN0cmluZ1ZhbHVlOwoJICAgIH07CgkgICAgRXJyb3JDb3JyZWN0aW9uTGV2ZWwucHJvdG90eXBlLmVxdWFscyA9IGZ1bmN0aW9uIChvKSB7CgkgICAgICAgIGlmICghKG8gaW5zdGFuY2VvZiBFcnJvckNvcnJlY3Rpb25MZXZlbCkpIHsKCSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgb3RoZXIgPSBvOwoJICAgICAgICByZXR1cm4gdGhpcy52YWx1ZSA9PT0gb3RoZXIudmFsdWU7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcGFyYW0gYml0cyBpbnQgY29udGFpbmluZyB0aGUgdHdvIGJpdHMgZW5jb2RpbmcgYSBRUiBDb2RlJ3MgZXJyb3IgY29ycmVjdGlvbiBsZXZlbAoJICAgICAqIEByZXR1cm4gRXJyb3JDb3JyZWN0aW9uTGV2ZWwgcmVwcmVzZW50aW5nIHRoZSBlbmNvZGVkIGVycm9yIGNvcnJlY3Rpb24gbGV2ZWwKCSAgICAgKi8KCSAgICBFcnJvckNvcnJlY3Rpb25MZXZlbC5mb3JCaXRzID0gZnVuY3Rpb24gKGJpdHMgLyppbnQqLykgewoJICAgICAgICBpZiAoYml0cyA8IDAgfHwgYml0cyA+PSBFcnJvckNvcnJlY3Rpb25MZXZlbC5GT1JfQklUUy5zaXplKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBFcnJvckNvcnJlY3Rpb25MZXZlbC5GT1JfQklUUy5nZXQoYml0cyk7CgkgICAgfTsKCSAgICBFcnJvckNvcnJlY3Rpb25MZXZlbC5GT1JfQklUUyA9IG5ldyBNYXAoKTsKCSAgICBFcnJvckNvcnJlY3Rpb25MZXZlbC5GT1JfVkFMVUUgPSBuZXcgTWFwKCk7CgkgICAgLyoqIEwgPSB+NyUgY29ycmVjdGlvbiAqLwoJICAgIEVycm9yQ29ycmVjdGlvbkxldmVsLkwgPSBuZXcgRXJyb3JDb3JyZWN0aW9uTGV2ZWwoRXJyb3JDb3JyZWN0aW9uTGV2ZWxWYWx1ZXMuTCwgJ0wnLCAweDAxKTsKCSAgICAvKiogTSA9IH4xNSUgY29ycmVjdGlvbiAqLwoJICAgIEVycm9yQ29ycmVjdGlvbkxldmVsLk0gPSBuZXcgRXJyb3JDb3JyZWN0aW9uTGV2ZWwoRXJyb3JDb3JyZWN0aW9uTGV2ZWxWYWx1ZXMuTSwgJ00nLCAweDAwKTsKCSAgICAvKiogUSA9IH4yNSUgY29ycmVjdGlvbiAqLwoJICAgIEVycm9yQ29ycmVjdGlvbkxldmVsLlEgPSBuZXcgRXJyb3JDb3JyZWN0aW9uTGV2ZWwoRXJyb3JDb3JyZWN0aW9uTGV2ZWxWYWx1ZXMuUSwgJ1EnLCAweDAzKTsKCSAgICAvKiogSCA9IH4zMCUgY29ycmVjdGlvbiAqLwoJICAgIEVycm9yQ29ycmVjdGlvbkxldmVsLkggPSBuZXcgRXJyb3JDb3JyZWN0aW9uTGV2ZWwoRXJyb3JDb3JyZWN0aW9uTGV2ZWxWYWx1ZXMuSCwgJ0gnLCAweDAyKTsKCSAgICByZXR1cm4gRXJyb3JDb3JyZWN0aW9uTGV2ZWw7Cgl9KCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gRXJyb3JDb3JyZWN0aW9uTGV2ZWw7CgoJfSk7CgoJdmFyIEZvcm1hdEluZm9ybWF0aW9uXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CgkvKgoJICogQ29weXJpZ2h0IDIwMDcgWlhpbmcgYXV0aG9ycwoJICoKCSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkgKgoJICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSAqCgkgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSAqLwoJdmFyIF9fdmFsdWVzID0gKGNvbW1vbmpzR2xvYmFsICYmIGNvbW1vbmpzR2xvYmFsLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7CgkgICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSAiZnVuY3Rpb24iICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7CgkgICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7CgkgICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSAibnVtYmVyIikgcmV0dXJuIHsKCSAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkgewoJICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDsKCSAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTsKCSAgICAgICAgfQoJICAgIH07CgkgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gIk9iamVjdCBpcyBub3QgaXRlcmFibGUuIiA6ICJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuIik7Cgl9OwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCS8qbmFtZXNwYWNlIGNvbS5nb29nbGUuenhpbmcucXJjb2RlLmRlY29kZXIgeyovCgoKCS8qKgoJICogPHA+RW5jYXBzdWxhdGVzIGEgUVIgQ29kZSdzIGZvcm1hdCBpbmZvcm1hdGlvbiwgaW5jbHVkaW5nIHRoZSBkYXRhIG1hc2sgdXNlZCBhbmQKCSAqIGVycm9yIGNvcnJlY3Rpb24gbGV2ZWwuPC9wPgoJICoKCSAqIEBhdXRob3IgU2VhbiBPd2VuCgkgKiBAc2VlIERhdGFNYXNrCgkgKiBAc2VlIEVycm9yQ29ycmVjdGlvbkxldmVsCgkgKi8KCXZhciBGb3JtYXRJbmZvcm1hdGlvbiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBGb3JtYXRJbmZvcm1hdGlvbihmb3JtYXRJbmZvIC8qaW50Ki8pIHsKCSAgICAgICAgLy8gQml0cyAzLDQKCSAgICAgICAgdGhpcy5lcnJvckNvcnJlY3Rpb25MZXZlbCA9IEVycm9yQ29ycmVjdGlvbkxldmVsXzEuZGVmYXVsdC5mb3JCaXRzKChmb3JtYXRJbmZvID4+IDMpICYgMHgwMyk7CgkgICAgICAgIC8vIEJvdHRvbSAzIGJpdHMKCSAgICAgICAgdGhpcy5kYXRhTWFzayA9IC8qKGJ5dGUpICovIChmb3JtYXRJbmZvICYgMHgwNyk7CgkgICAgfQoJICAgIEZvcm1hdEluZm9ybWF0aW9uLm51bUJpdHNEaWZmZXJpbmcgPSBmdW5jdGlvbiAoYSAvKmludCovLCBiIC8qaW50Ki8pIHsKCSAgICAgICAgcmV0dXJuIEludGVnZXJfMS5kZWZhdWx0LmJpdENvdW50KGEgXiBiKTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEBwYXJhbSBtYXNrZWRGb3JtYXRJbmZvMSBmb3JtYXQgaW5mbyBpbmRpY2F0b3IsIHdpdGggbWFzayBzdGlsbCBhcHBsaWVkCgkgICAgICogQHBhcmFtIG1hc2tlZEZvcm1hdEluZm8yIHNlY29uZCBjb3B5IG9mIHNhbWUgaW5mbzsgYm90aCBhcmUgY2hlY2tlZCBhdCB0aGUgc2FtZSB0aW1lCgkgICAgICogIHRvIGVzdGFibGlzaCBiZXN0IG1hdGNoCgkgICAgICogQHJldHVybiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZm9ybWF0IGl0IHNwZWNpZmllcywgb3Ige0Bjb2RlIG51bGx9CgkgICAgICogIGlmIGRvZXNuJ3Qgc2VlbSB0byBtYXRjaCBhbnkga25vd24gcGF0dGVybgoJICAgICAqLwoJICAgIEZvcm1hdEluZm9ybWF0aW9uLmRlY29kZUZvcm1hdEluZm9ybWF0aW9uID0gZnVuY3Rpb24gKG1hc2tlZEZvcm1hdEluZm8xIC8qaW50Ki8sIG1hc2tlZEZvcm1hdEluZm8yIC8qaW50Ki8pIHsKCSAgICAgICAgdmFyIGZvcm1hdEluZm8gPSBGb3JtYXRJbmZvcm1hdGlvbi5kb0RlY29kZUZvcm1hdEluZm9ybWF0aW9uKG1hc2tlZEZvcm1hdEluZm8xLCBtYXNrZWRGb3JtYXRJbmZvMik7CgkgICAgICAgIGlmIChmb3JtYXRJbmZvICE9PSBudWxsKSB7CgkgICAgICAgICAgICByZXR1cm4gZm9ybWF0SW5mbzsKCSAgICAgICAgfQoJICAgICAgICAvLyBTaG91bGQgcmV0dXJuIG51bGwsIGJ1dCwgc29tZSBRUiBjb2RlcyBhcHBhcmVudGx5CgkgICAgICAgIC8vIGRvIG5vdCBtYXNrIHRoaXMgaW5mby4gVHJ5IGFnYWluIGJ5IGFjdHVhbGx5IG1hc2tpbmcgdGhlIHBhdHRlcm4KCSAgICAgICAgLy8gZmlyc3QKCSAgICAgICAgcmV0dXJuIEZvcm1hdEluZm9ybWF0aW9uLmRvRGVjb2RlRm9ybWF0SW5mb3JtYXRpb24obWFza2VkRm9ybWF0SW5mbzEgXiBGb3JtYXRJbmZvcm1hdGlvbi5GT1JNQVRfSU5GT19NQVNLX1FSLCBtYXNrZWRGb3JtYXRJbmZvMiBeIEZvcm1hdEluZm9ybWF0aW9uLkZPUk1BVF9JTkZPX01BU0tfUVIpOwoJICAgIH07CgkgICAgRm9ybWF0SW5mb3JtYXRpb24uZG9EZWNvZGVGb3JtYXRJbmZvcm1hdGlvbiA9IGZ1bmN0aW9uIChtYXNrZWRGb3JtYXRJbmZvMSAvKmludCovLCBtYXNrZWRGb3JtYXRJbmZvMiAvKmludCovKSB7CgkgICAgICAgIHZhciBlXzEsIF9hOwoJICAgICAgICAvLyBGaW5kIHRoZSBpbnQgaW4gRk9STUFUX0lORk9fREVDT0RFX0xPT0tVUCB3aXRoIGZld2VzdCBiaXRzIGRpZmZlcmluZwoJICAgICAgICB2YXIgYmVzdERpZmZlcmVuY2UgPSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUjsKCSAgICAgICAgdmFyIGJlc3RGb3JtYXRJbmZvID0gMDsKCSAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgIGZvciAodmFyIF9iID0gX192YWx1ZXMoRm9ybWF0SW5mb3JtYXRpb24uRk9STUFUX0lORk9fREVDT0RFX0xPT0tVUCksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHsKCSAgICAgICAgICAgICAgICB2YXIgZGVjb2RlSW5mbyA9IF9jLnZhbHVlOwoJICAgICAgICAgICAgICAgIHZhciB0YXJnZXRJbmZvID0gZGVjb2RlSW5mb1swXTsKCSAgICAgICAgICAgICAgICBpZiAodGFyZ2V0SW5mbyA9PT0gbWFza2VkRm9ybWF0SW5mbzEgfHwgdGFyZ2V0SW5mbyA9PT0gbWFza2VkRm9ybWF0SW5mbzIpIHsKCSAgICAgICAgICAgICAgICAgICAgLy8gRm91bmQgYW4gZXhhY3QgbWF0Y2gKCSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGb3JtYXRJbmZvcm1hdGlvbihkZWNvZGVJbmZvWzFdKTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgdmFyIGJpdHNEaWZmZXJlbmNlID0gRm9ybWF0SW5mb3JtYXRpb24ubnVtQml0c0RpZmZlcmluZyhtYXNrZWRGb3JtYXRJbmZvMSwgdGFyZ2V0SW5mbyk7CgkgICAgICAgICAgICAgICAgaWYgKGJpdHNEaWZmZXJlbmNlIDwgYmVzdERpZmZlcmVuY2UpIHsKCSAgICAgICAgICAgICAgICAgICAgYmVzdEZvcm1hdEluZm8gPSBkZWNvZGVJbmZvWzFdOwoJICAgICAgICAgICAgICAgICAgICBiZXN0RGlmZmVyZW5jZSA9IGJpdHNEaWZmZXJlbmNlOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBpZiAobWFza2VkRm9ybWF0SW5mbzEgIT09IG1hc2tlZEZvcm1hdEluZm8yKSB7CgkgICAgICAgICAgICAgICAgICAgIC8vIGFsc28gdHJ5IHRoZSBvdGhlciBvcHRpb24KCSAgICAgICAgICAgICAgICAgICAgYml0c0RpZmZlcmVuY2UgPSBGb3JtYXRJbmZvcm1hdGlvbi5udW1CaXRzRGlmZmVyaW5nKG1hc2tlZEZvcm1hdEluZm8yLCB0YXJnZXRJbmZvKTsKCSAgICAgICAgICAgICAgICAgICAgaWYgKGJpdHNEaWZmZXJlbmNlIDwgYmVzdERpZmZlcmVuY2UpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIGJlc3RGb3JtYXRJbmZvID0gZGVjb2RlSW5mb1sxXTsKCSAgICAgICAgICAgICAgICAgICAgICAgIGJlc3REaWZmZXJlbmNlID0gYml0c0RpZmZlcmVuY2U7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH0KCSAgICAgICAgZmluYWxseSB7CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIGlmIChfYyAmJiAhX2MuZG9uZSAmJiAoX2EgPSBfYi5yZXR1cm4pKSBfYS5jYWxsKF9iKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH0KCSAgICAgICAgfQoJICAgICAgICAvLyBIYW1taW5nIGRpc3RhbmNlIG9mIHRoZSAzMiBtYXNrZWQgY29kZXMgaXMgNywgYnkgY29uc3RydWN0aW9uLCBzbyA8PSAzIGJpdHMKCSAgICAgICAgLy8gZGlmZmVyaW5nIG1lYW5zIHdlIGZvdW5kIGEgbWF0Y2gKCSAgICAgICAgaWYgKGJlc3REaWZmZXJlbmNlIDw9IDMpIHsKCSAgICAgICAgICAgIHJldHVybiBuZXcgRm9ybWF0SW5mb3JtYXRpb24oYmVzdEZvcm1hdEluZm8pOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBudWxsOwoJICAgIH07CgkgICAgRm9ybWF0SW5mb3JtYXRpb24ucHJvdG90eXBlLmdldEVycm9yQ29ycmVjdGlvbkxldmVsID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5lcnJvckNvcnJlY3Rpb25MZXZlbDsKCSAgICB9OwoJICAgIEZvcm1hdEluZm9ybWF0aW9uLnByb3RvdHlwZS5nZXREYXRhTWFzayA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuZGF0YU1hc2s7CgkgICAgfTsKCSAgICAvKkBPdmVycmlkZSovCgkgICAgRm9ybWF0SW5mb3JtYXRpb24ucHJvdG90eXBlLmhhc2hDb2RlID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gKHRoaXMuZXJyb3JDb3JyZWN0aW9uTGV2ZWwuZ2V0Qml0cygpIDw8IDMpIHwgdGhpcy5kYXRhTWFzazsKCSAgICB9OwoJICAgIC8qQE92ZXJyaWRlKi8KCSAgICBGb3JtYXRJbmZvcm1hdGlvbi5wcm90b3R5cGUuZXF1YWxzID0gZnVuY3Rpb24gKG8pIHsKCSAgICAgICAgaWYgKCEobyBpbnN0YW5jZW9mIEZvcm1hdEluZm9ybWF0aW9uKSkgewoJICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoJICAgICAgICB9CgkgICAgICAgIHZhciBvdGhlciA9IG87CgkgICAgICAgIHJldHVybiB0aGlzLmVycm9yQ29ycmVjdGlvbkxldmVsID09PSBvdGhlci5lcnJvckNvcnJlY3Rpb25MZXZlbCAmJgoJICAgICAgICAgICAgdGhpcy5kYXRhTWFzayA9PT0gb3RoZXIuZGF0YU1hc2s7CgkgICAgfTsKCSAgICBGb3JtYXRJbmZvcm1hdGlvbi5GT1JNQVRfSU5GT19NQVNLX1FSID0gMHg1NDEyOwoJICAgIC8qKgoJICAgICAqIFNlZSBJU08gMTgwMDQ6MjAwNiwgQW5uZXggQywgVGFibGUgQy4xCgkgICAgICovCgkgICAgRm9ybWF0SW5mb3JtYXRpb24uRk9STUFUX0lORk9fREVDT0RFX0xPT0tVUCA9IFsKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsweDU0MTIsIDB4MDBdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsweDUxMjUsIDB4MDFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsweDVFN0MsIDB4MDJdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsweDVCNEIsIDB4MDNdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsweDQ1RjksIDB4MDRdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsweDQwQ0UsIDB4MDVdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsweDRGOTcsIDB4MDZdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsweDRBQTAsIDB4MDddKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsweDc3QzQsIDB4MDhdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsweDcyRjMsIDB4MDldKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsweDdEQUEsIDB4MEFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsweDc4OUQsIDB4MEJdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsweDY2MkYsIDB4MENdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsweDYzMTgsIDB4MERdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsweDZDNDEsIDB4MEVdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsweDY5NzYsIDB4MEZdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsweDE2ODksIDB4MTBdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsweDEzQkUsIDB4MTFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsweDFDRTcsIDB4MTJdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsweDE5RDAsIDB4MTNdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsweDA3NjIsIDB4MTRdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsweDAyNTUsIDB4MTVdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsweDBEMEMsIDB4MTZdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsweDA4M0IsIDB4MTddKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsweDM1NUYsIDB4MThdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsweDMwNjgsIDB4MTldKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsweDNGMzEsIDB4MUFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsweDNBMDYsIDB4MUJdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsweDI0QjQsIDB4MUNdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsweDIxODMsIDB4MURdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsweDJFREEsIDB4MUVdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsweDJCRUQsIDB4MUZdKSwKCSAgICBdOwoJICAgIHJldHVybiBGb3JtYXRJbmZvcm1hdGlvbjsKCX0oKSk7CglleHBvcnRzLmRlZmF1bHQgPSBGb3JtYXRJbmZvcm1hdGlvbjsKCgl9KTsKCgl2YXIgRUNCbG9ja3NfMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCXZhciBfX3ZhbHVlcyA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX3ZhbHVlcykgfHwgZnVuY3Rpb24obykgewoJICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gImZ1bmN0aW9uIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwOwoJICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pOwoJICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gIm51bWJlciIpIHJldHVybiB7CgkgICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7CgkgICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07CgkgICAgICAgIH0KCSAgICB9OwoJICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/ICJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLiIgOiAiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpOwoJfTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgkvKioKCSAqIDxwPkVuY2Fwc3VsYXRlcyBhIHNldCBvZiBlcnJvci1jb3JyZWN0aW9uIGJsb2NrcyBpbiBvbmUgc3ltYm9sIHZlcnNpb24uIE1vc3QgdmVyc2lvbnMgd2lsbAoJICogdXNlIGJsb2NrcyBvZiBkaWZmZXJpbmcgc2l6ZXMgd2l0aGluIG9uZSB2ZXJzaW9uLCBzbywgdGhpcyBlbmNhcHN1bGF0ZXMgdGhlIHBhcmFtZXRlcnMgZm9yCgkgKiBlYWNoIHNldCBvZiBibG9ja3MuIEl0IGFsc28gaG9sZHMgdGhlIG51bWJlciBvZiBlcnJvci1jb3JyZWN0aW9uIGNvZGV3b3JkcyBwZXIgYmxvY2sgc2luY2UgaXQKCSAqIHdpbGwgYmUgdGhlIHNhbWUgYWNyb3NzIGFsbCBibG9ja3Mgd2l0aGluIG9uZSB2ZXJzaW9uLjwvcD4KCSAqLwoJdmFyIEVDQmxvY2tzID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIGZ1bmN0aW9uIEVDQmxvY2tzKGVjQ29kZXdvcmRzUGVyQmxvY2sgLyppbnQqLykgewoJICAgICAgICB2YXIgZWNCbG9ja3MgPSBbXTsKCSAgICAgICAgZm9yICh2YXIgX2kgPSAxOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHsKCSAgICAgICAgICAgIGVjQmxvY2tzW19pIC0gMV0gPSBhcmd1bWVudHNbX2ldOwoJICAgICAgICB9CgkgICAgICAgIHRoaXMuZWNDb2Rld29yZHNQZXJCbG9jayA9IGVjQ29kZXdvcmRzUGVyQmxvY2s7CgkgICAgICAgIHRoaXMuZWNCbG9ja3MgPSBlY0Jsb2NrczsKCSAgICB9CgkgICAgRUNCbG9ja3MucHJvdG90eXBlLmdldEVDQ29kZXdvcmRzUGVyQmxvY2sgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmVjQ29kZXdvcmRzUGVyQmxvY2s7CgkgICAgfTsKCSAgICBFQ0Jsb2Nrcy5wcm90b3R5cGUuZ2V0TnVtQmxvY2tzID0gZnVuY3Rpb24gKCkgewoJICAgICAgICB2YXIgZV8xLCBfYTsKCSAgICAgICAgdmFyIHRvdGFsID0gMDsKCSAgICAgICAgdmFyIGVjQmxvY2tzID0gdGhpcy5lY0Jsb2NrczsKCSAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgIGZvciAodmFyIGVjQmxvY2tzXzEgPSBfX3ZhbHVlcyhlY0Jsb2NrcyksIGVjQmxvY2tzXzFfMSA9IGVjQmxvY2tzXzEubmV4dCgpOyAhZWNCbG9ja3NfMV8xLmRvbmU7IGVjQmxvY2tzXzFfMSA9IGVjQmxvY2tzXzEubmV4dCgpKSB7CgkgICAgICAgICAgICAgICAgdmFyIGVjQmxvY2sgPSBlY0Jsb2Nrc18xXzEudmFsdWU7CgkgICAgICAgICAgICAgICAgdG90YWwgKz0gZWNCbG9jay5nZXRDb3VudCgpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9CgkgICAgICAgIGZpbmFsbHkgewoJICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICBpZiAoZWNCbG9ja3NfMV8xICYmICFlY0Jsb2Nrc18xXzEuZG9uZSAmJiAoX2EgPSBlY0Jsb2Nrc18xLnJldHVybikpIF9hLmNhbGwoZWNCbG9ja3NfMSk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHRvdGFsOwoJICAgIH07CgkgICAgRUNCbG9ja3MucHJvdG90eXBlLmdldFRvdGFsRUNDb2Rld29yZHMgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmVjQ29kZXdvcmRzUGVyQmxvY2sgKiB0aGlzLmdldE51bUJsb2NrcygpOwoJICAgIH07CgkgICAgRUNCbG9ja3MucHJvdG90eXBlLmdldEVDQmxvY2tzID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5lY0Jsb2NrczsKCSAgICB9OwoJICAgIHJldHVybiBFQ0Jsb2NrczsKCX0oKSk7CglleHBvcnRzLmRlZmF1bHQgPSBFQ0Jsb2NrczsKCgl9KTsKCgl2YXIgRUNCXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJLyoqCgkgKiA8cD5FbmNhcHN1bGF0ZXMgdGhlIHBhcmFtZXRlcnMgZm9yIG9uZSBlcnJvci1jb3JyZWN0aW9uIGJsb2NrIGluIG9uZSBzeW1ib2wgdmVyc2lvbi4KCSAqIFRoaXMgaW5jbHVkZXMgdGhlIG51bWJlciBvZiBkYXRhIGNvZGV3b3JkcywgYW5kIHRoZSBudW1iZXIgb2YgdGltZXMgYSBibG9jayB3aXRoIHRoZXNlCgkgKiBwYXJhbWV0ZXJzIGlzIHVzZWQgY29uc2VjdXRpdmVseSBpbiB0aGUgUVIgY29kZSB2ZXJzaW9uJ3MgZm9ybWF0LjwvcD4KCSAqLwoJdmFyIEVDQiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBFQ0IoY291bnQgLyppbnQqLywgZGF0YUNvZGV3b3JkcyAvKmludCovKSB7CgkgICAgICAgIHRoaXMuY291bnQgPSBjb3VudDsKCSAgICAgICAgdGhpcy5kYXRhQ29kZXdvcmRzID0gZGF0YUNvZGV3b3JkczsKCSAgICB9CgkgICAgRUNCLnByb3RvdHlwZS5nZXRDb3VudCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuY291bnQ7CgkgICAgfTsKCSAgICBFQ0IucHJvdG90eXBlLmdldERhdGFDb2Rld29yZHMgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmRhdGFDb2Rld29yZHM7CgkgICAgfTsKCSAgICByZXR1cm4gRUNCOwoJfSgpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IEVDQjsKCgl9KTsKCgl2YXIgVmVyc2lvbl8xJDEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CgkvKgoJICogQ29weXJpZ2h0IDIwMDcgWlhpbmcgYXV0aG9ycwoJICoKCSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkgKgoJICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSAqCgkgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSAqLwoJdmFyIF9fdmFsdWVzID0gKGNvbW1vbmpzR2xvYmFsICYmIGNvbW1vbmpzR2xvYmFsLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7CgkgICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSAiZnVuY3Rpb24iICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7CgkgICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7CgkgICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSAibnVtYmVyIikgcmV0dXJuIHsKCSAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkgewoJICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDsKCSAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTsKCSAgICAgICAgfQoJICAgIH07CgkgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gIk9iamVjdCBpcyBub3QgaXRlcmFibGUuIiA6ICJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuIik7Cgl9OwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCS8qbmFtZXNwYWNlIGNvbS5nb29nbGUuenhpbmcucXJjb2RlLmRlY29kZXIgeyovCgoKCgoKCgkvKioKCSAqIFNlZSBJU08gMTgwMDQ6MjAwNiBBbm5leCBECgkgKgoJICogQGF1dGhvciBTZWFuIE93ZW4KCSAqLwoJdmFyIFZlcnNpb24gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgZnVuY3Rpb24gVmVyc2lvbih2ZXJzaW9uTnVtYmVyIC8qaW50Ki8sIGFsaWdubWVudFBhdHRlcm5DZW50ZXJzKSB7CgkgICAgICAgIHZhciBlXzEsIF9hOwoJICAgICAgICB2YXIgZWNCbG9ja3MgPSBbXTsKCSAgICAgICAgZm9yICh2YXIgX2kgPSAyOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHsKCSAgICAgICAgICAgIGVjQmxvY2tzW19pIC0gMl0gPSBhcmd1bWVudHNbX2ldOwoJICAgICAgICB9CgkgICAgICAgIHRoaXMudmVyc2lvbk51bWJlciA9IHZlcnNpb25OdW1iZXI7CgkgICAgICAgIHRoaXMuYWxpZ25tZW50UGF0dGVybkNlbnRlcnMgPSBhbGlnbm1lbnRQYXR0ZXJuQ2VudGVyczsKCSAgICAgICAgdGhpcy5lY0Jsb2NrcyA9IGVjQmxvY2tzOwoJICAgICAgICB2YXIgdG90YWwgPSAwOwoJICAgICAgICB2YXIgZWNDb2Rld29yZHMgPSBlY0Jsb2Nrc1swXS5nZXRFQ0NvZGV3b3Jkc1BlckJsb2NrKCk7CgkgICAgICAgIHZhciBlY2JBcnJheSA9IGVjQmxvY2tzWzBdLmdldEVDQmxvY2tzKCk7CgkgICAgICAgIHRyeSB7CgkgICAgICAgICAgICBmb3IgKHZhciBlY2JBcnJheV8xID0gX192YWx1ZXMoZWNiQXJyYXkpLCBlY2JBcnJheV8xXzEgPSBlY2JBcnJheV8xLm5leHQoKTsgIWVjYkFycmF5XzFfMS5kb25lOyBlY2JBcnJheV8xXzEgPSBlY2JBcnJheV8xLm5leHQoKSkgewoJICAgICAgICAgICAgICAgIHZhciBlY0Jsb2NrID0gZWNiQXJyYXlfMV8xLnZhbHVlOwoJICAgICAgICAgICAgICAgIHRvdGFsICs9IGVjQmxvY2suZ2V0Q291bnQoKSAqIChlY0Jsb2NrLmdldERhdGFDb2Rld29yZHMoKSArIGVjQ29kZXdvcmRzKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfQoJICAgICAgICBmaW5hbGx5IHsKCSAgICAgICAgICAgIHRyeSB7CgkgICAgICAgICAgICAgICAgaWYgKGVjYkFycmF5XzFfMSAmJiAhZWNiQXJyYXlfMV8xLmRvbmUgJiYgKF9hID0gZWNiQXJyYXlfMS5yZXR1cm4pKSBfYS5jYWxsKGVjYkFycmF5XzEpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfQoJICAgICAgICB9CgkgICAgICAgIHRoaXMudG90YWxDb2Rld29yZHMgPSB0b3RhbDsKCSAgICB9CgkgICAgVmVyc2lvbi5wcm90b3R5cGUuZ2V0VmVyc2lvbk51bWJlciA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMudmVyc2lvbk51bWJlcjsKCSAgICB9OwoJICAgIFZlcnNpb24ucHJvdG90eXBlLmdldEFsaWdubWVudFBhdHRlcm5DZW50ZXJzID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5hbGlnbm1lbnRQYXR0ZXJuQ2VudGVyczsKCSAgICB9OwoJICAgIFZlcnNpb24ucHJvdG90eXBlLmdldFRvdGFsQ29kZXdvcmRzID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy50b3RhbENvZGV3b3JkczsKCSAgICB9OwoJICAgIFZlcnNpb24ucHJvdG90eXBlLmdldERpbWVuc2lvbkZvclZlcnNpb24gPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiAxNyArIDQgKiB0aGlzLnZlcnNpb25OdW1iZXI7CgkgICAgfTsKCSAgICBWZXJzaW9uLnByb3RvdHlwZS5nZXRFQ0Jsb2Nrc0ZvckxldmVsID0gZnVuY3Rpb24gKGVjTGV2ZWwpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuZWNCbG9ja3NbZWNMZXZlbC5nZXRWYWx1ZSgpXTsKCSAgICAgICAgLy8gVFlQRVNDUklQVFBPUlQ6IG9yaWdpbmFsIHdhcyB1c2luZyBvcmRpbmFsLCBhbmQgdXNpbmcgdGhlIG9yZGVyIG9mIGxldmVscyBhcyBkZWZpbmVkIGluIEVycm9yQ29ycmVjdGlvbkxldmVsIGVudW0gKExNUUgpCgkgICAgICAgIC8vIEkgd2lsbCB1c2UgdGhlIGRpcmVjdCB2YWx1ZSBmcm9tIEVycm9yQ29ycmVjdGlvbkxldmVsVmFsdWVzIGVudW0gd2hpY2ggaW4gdHlwZXNjcmlwdCBnb2VzIHRvIGEgbnVtYmVyCgkgICAgfTsKCSAgICAvKioKCSAgICAgKiA8cD5EZWR1Y2VzIHZlcnNpb24gaW5mb3JtYXRpb24gcHVyZWx5IGZyb20gUVIgQ29kZSBkaW1lbnNpb25zLjwvcD4KCSAgICAgKgoJICAgICAqIEBwYXJhbSBkaW1lbnNpb24gZGltZW5zaW9uIGluIG1vZHVsZXMKCSAgICAgKiBAcmV0dXJuIFZlcnNpb24gZm9yIGEgUVIgQ29kZSBvZiB0aGF0IGRpbWVuc2lvbgoJICAgICAqIEB0aHJvd3MgRm9ybWF0RXhjZXB0aW9uIGlmIGRpbWVuc2lvbiBpcyBub3QgMSBtb2QgNAoJICAgICAqLwoJICAgIFZlcnNpb24uZ2V0UHJvdmlzaW9uYWxWZXJzaW9uRm9yRGltZW5zaW9uID0gZnVuY3Rpb24gKGRpbWVuc2lvbiAvKmludCovKSB7CgkgICAgICAgIGlmIChkaW1lbnNpb24gJSA0ICE9PSAxKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgICAgIHRyeSB7CgkgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRWZXJzaW9uRm9yTnVtYmVyKChkaW1lbnNpb24gLSAxNykgLyA0KTsKCSAgICAgICAgfQoJICAgICAgICBjYXRjaCAoaWdub3JlZCAvKjogSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKi8pIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgIH0KCSAgICB9OwoJICAgIFZlcnNpb24uZ2V0VmVyc2lvbkZvck51bWJlciA9IGZ1bmN0aW9uICh2ZXJzaW9uTnVtYmVyIC8qaW50Ki8pIHsKCSAgICAgICAgaWYgKHZlcnNpb25OdW1iZXIgPCAxIHx8IHZlcnNpb25OdW1iZXIgPiA0MCkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gVmVyc2lvbi5WRVJTSU9OU1t2ZXJzaW9uTnVtYmVyIC0gMV07CgkgICAgfTsKCSAgICBWZXJzaW9uLmRlY29kZVZlcnNpb25JbmZvcm1hdGlvbiA9IGZ1bmN0aW9uICh2ZXJzaW9uQml0cyAvKmludCovKSB7CgkgICAgICAgIHZhciBiZXN0RGlmZmVyZW5jZSA9IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSOwoJICAgICAgICB2YXIgYmVzdFZlcnNpb24gPSAwOwoJICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IFZlcnNpb24uVkVSU0lPTl9ERUNPREVfSU5GTy5sZW5ndGg7IGkrKykgewoJICAgICAgICAgICAgdmFyIHRhcmdldFZlcnNpb24gPSBWZXJzaW9uLlZFUlNJT05fREVDT0RFX0lORk9baV07CgkgICAgICAgICAgICAvLyBEbyB0aGUgdmVyc2lvbiBpbmZvIGJpdHMgbWF0Y2ggZXhhY3RseT8gZG9uZS4KCSAgICAgICAgICAgIGlmICh0YXJnZXRWZXJzaW9uID09PSB2ZXJzaW9uQml0cykgewoJICAgICAgICAgICAgICAgIHJldHVybiBWZXJzaW9uLmdldFZlcnNpb25Gb3JOdW1iZXIoaSArIDcpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIHNlZSBpZiB0aGlzIGlzIHRoZSBjbG9zZXN0IHRvIGEgcmVhbCB2ZXJzaW9uIGluZm8gYml0IHN0cmluZwoJICAgICAgICAgICAgLy8gd2UgaGF2ZSBzZWVuIHNvIGZhcgoJICAgICAgICAgICAgdmFyIGJpdHNEaWZmZXJlbmNlID0gRm9ybWF0SW5mb3JtYXRpb25fMS5kZWZhdWx0Lm51bUJpdHNEaWZmZXJpbmcodmVyc2lvbkJpdHMsIHRhcmdldFZlcnNpb24pOwoJICAgICAgICAgICAgaWYgKGJpdHNEaWZmZXJlbmNlIDwgYmVzdERpZmZlcmVuY2UpIHsKCSAgICAgICAgICAgICAgICBiZXN0VmVyc2lvbiA9IGkgKyA3OwoJICAgICAgICAgICAgICAgIGJlc3REaWZmZXJlbmNlID0gYml0c0RpZmZlcmVuY2U7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgLy8gV2UgY2FuIHRvbGVyYXRlIHVwIHRvIDMgYml0cyBvZiBlcnJvciBzaW5jZSBubyB0d28gdmVyc2lvbiBpbmZvIGNvZGV3b3JkcyB3aWxsCgkgICAgICAgIC8vIGRpZmZlciBpbiBsZXNzIHRoYW4gOCBiaXRzLgoJICAgICAgICBpZiAoYmVzdERpZmZlcmVuY2UgPD0gMykgewoJICAgICAgICAgICAgcmV0dXJuIFZlcnNpb24uZ2V0VmVyc2lvbkZvck51bWJlcihiZXN0VmVyc2lvbik7CgkgICAgICAgIH0KCSAgICAgICAgLy8gSWYgd2UgZGlkbid0IGZpbmQgYSBjbG9zZSBlbm91Z2ggbWF0Y2gsIGZhaWwKCSAgICAgICAgcmV0dXJuIG51bGw7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBTZWUgSVNPIDE4MDA0OjIwMDYgQW5uZXggRQoJICAgICAqLwoJICAgIFZlcnNpb24ucHJvdG90eXBlLmJ1aWxkRnVuY3Rpb25QYXR0ZXJuID0gZnVuY3Rpb24gKCkgewoJICAgICAgICB2YXIgZGltZW5zaW9uID0gdGhpcy5nZXREaW1lbnNpb25Gb3JWZXJzaW9uKCk7CgkgICAgICAgIHZhciBiaXRNYXRyaXggPSBuZXcgQml0TWF0cml4XzEuZGVmYXVsdChkaW1lbnNpb24pOwoJICAgICAgICAvLyBUb3AgbGVmdCBmaW5kZXIgcGF0dGVybiArIHNlcGFyYXRvciArIGZvcm1hdAoJICAgICAgICBiaXRNYXRyaXguc2V0UmVnaW9uKDAsIDAsIDksIDkpOwoJICAgICAgICAvLyBUb3AgcmlnaHQgZmluZGVyIHBhdHRlcm4gKyBzZXBhcmF0b3IgKyBmb3JtYXQKCSAgICAgICAgYml0TWF0cml4LnNldFJlZ2lvbihkaW1lbnNpb24gLSA4LCAwLCA4LCA5KTsKCSAgICAgICAgLy8gQm90dG9tIGxlZnQgZmluZGVyIHBhdHRlcm4gKyBzZXBhcmF0b3IgKyBmb3JtYXQKCSAgICAgICAgYml0TWF0cml4LnNldFJlZ2lvbigwLCBkaW1lbnNpb24gLSA4LCA5LCA4KTsKCSAgICAgICAgLy8gQWxpZ25tZW50IHBhdHRlcm5zCgkgICAgICAgIHZhciBtYXggPSB0aGlzLmFsaWdubWVudFBhdHRlcm5DZW50ZXJzLmxlbmd0aDsKCSAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCBtYXg7IHgrKykgewoJICAgICAgICAgICAgdmFyIGkgPSB0aGlzLmFsaWdubWVudFBhdHRlcm5DZW50ZXJzW3hdIC0gMjsKCSAgICAgICAgICAgIGZvciAodmFyIHkgPSAwOyB5IDwgbWF4OyB5KyspIHsKCSAgICAgICAgICAgICAgICBpZiAoKHggPT09IDAgJiYgKHkgPT09IDAgfHwgeSA9PT0gbWF4IC0gMSkpIHx8ICh4ID09PSBtYXggLSAxICYmIHkgPT09IDApKSB7CgkgICAgICAgICAgICAgICAgICAgIC8vIE5vIGFsaWdubWVudCBwYXR0ZXJucyBuZWFyIHRoZSB0aHJlZSBmaW5kZXIgcGF0dGVybnMKCSAgICAgICAgICAgICAgICAgICAgY29udGludWU7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGJpdE1hdHJpeC5zZXRSZWdpb24odGhpcy5hbGlnbm1lbnRQYXR0ZXJuQ2VudGVyc1t5XSAtIDIsIGksIDUsIDUpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIC8vIFZlcnRpY2FsIHRpbWluZyBwYXR0ZXJuCgkgICAgICAgIGJpdE1hdHJpeC5zZXRSZWdpb24oNiwgOSwgMSwgZGltZW5zaW9uIC0gMTcpOwoJICAgICAgICAvLyBIb3Jpem9udGFsIHRpbWluZyBwYXR0ZXJuCgkgICAgICAgIGJpdE1hdHJpeC5zZXRSZWdpb24oOSwgNiwgZGltZW5zaW9uIC0gMTcsIDEpOwoJICAgICAgICBpZiAodGhpcy52ZXJzaW9uTnVtYmVyID4gNikgewoJICAgICAgICAgICAgLy8gVmVyc2lvbiBpbmZvLCB0b3AgcmlnaHQKCSAgICAgICAgICAgIGJpdE1hdHJpeC5zZXRSZWdpb24oZGltZW5zaW9uIC0gMTEsIDAsIDMsIDYpOwoJICAgICAgICAgICAgLy8gVmVyc2lvbiBpbmZvLCBib3R0b20gbGVmdAoJICAgICAgICAgICAgYml0TWF0cml4LnNldFJlZ2lvbigwLCBkaW1lbnNpb24gLSAxMSwgNiwgMyk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIGJpdE1hdHJpeDsKCSAgICB9OwoJICAgIC8qQE92ZXJyaWRlKi8KCSAgICBWZXJzaW9uLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuICcnICsgdGhpcy52ZXJzaW9uTnVtYmVyOwoJICAgIH07CgkgICAgLyoqCgkgICAgICAgKiBTZWUgSVNPIDE4MDA0OjIwMDYgQW5uZXggRC4KCSAgICAgICAqIEVsZW1lbnQgaSByZXByZXNlbnRzIHRoZSByYXcgdmVyc2lvbiBiaXRzIHRoYXQgc3BlY2lmeSB2ZXJzaW9uIGkgKyA3CgkgICAgICAgKi8KCSAgICBWZXJzaW9uLlZFUlNJT05fREVDT0RFX0lORk8gPSBJbnQzMkFycmF5LmZyb20oWwoJICAgICAgICAweDA3Qzk0LCAweDA4NUJDLCAweDA5QTk5LCAweDBBNEQzLCAweDBCQkY2LAoJICAgICAgICAweDBDNzYyLCAweDBEODQ3LCAweDBFNjBELCAweDBGOTI4LCAweDEwQjc4LAoJICAgICAgICAweDExNDVELCAweDEyQTE3LCAweDEzNTMyLCAweDE0OUE2LCAweDE1NjgzLAoJICAgICAgICAweDE2OEM5LCAweDE3N0VDLCAweDE4RUM0LCAweDE5MUUxLCAweDFBRkFCLAoJICAgICAgICAweDFCMDhFLCAweDFDQzFBLCAweDFEMzNGLCAweDFFRDc1LCAweDFGMjUwLAoJICAgICAgICAweDIwOUQ1LCAweDIxNkYwLCAweDIyOEJBLCAweDIzNzlGLCAweDI0QjBCLAoJICAgICAgICAweDI1NDJFLCAweDI2QTY0LCAweDI3NTQxLCAweDI4QzY5CgkgICAgXSk7CgkgICAgLyoqCgkgICAgICAgKiBTZWUgSVNPIDE4MDA0OjIwMDYgNi41LjEgVGFibGUgOQoJICAgICAgICovCgkgICAgVmVyc2lvbi5WRVJTSU9OUyA9IFsKCSAgICAgICAgbmV3IFZlcnNpb24oMSwgbmV3IEludDMyQXJyYXkoMCksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoNywgbmV3IEVDQl8xLmRlZmF1bHQoMSwgMTkpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgxMCwgbmV3IEVDQl8xLmRlZmF1bHQoMSwgMTYpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgxMywgbmV3IEVDQl8xLmRlZmF1bHQoMSwgMTMpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgxNywgbmV3IEVDQl8xLmRlZmF1bHQoMSwgOSkpKSwKCSAgICAgICAgbmV3IFZlcnNpb24oMiwgSW50MzJBcnJheS5mcm9tKFs2LCAxOF0pLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDEwLCBuZXcgRUNCXzEuZGVmYXVsdCgxLCAzNCkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDE2LCBuZXcgRUNCXzEuZGVmYXVsdCgxLCAyOCkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDIyLCBuZXcgRUNCXzEuZGVmYXVsdCgxLCAyMikpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI4LCBuZXcgRUNCXzEuZGVmYXVsdCgxLCAxNikpKSwKCSAgICAgICAgbmV3IFZlcnNpb24oMywgSW50MzJBcnJheS5mcm9tKFs2LCAyMl0pLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDE1LCBuZXcgRUNCXzEuZGVmYXVsdCgxLCA1NSkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI2LCBuZXcgRUNCXzEuZGVmYXVsdCgxLCA0NCkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDE4LCBuZXcgRUNCXzEuZGVmYXVsdCgyLCAxNykpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDIyLCBuZXcgRUNCXzEuZGVmYXVsdCgyLCAxMykpKSwKCSAgICAgICAgbmV3IFZlcnNpb24oNCwgSW50MzJBcnJheS5mcm9tKFs2LCAyNl0pLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDIwLCBuZXcgRUNCXzEuZGVmYXVsdCgxLCA4MCkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDE4LCBuZXcgRUNCXzEuZGVmYXVsdCgyLCAzMikpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI2LCBuZXcgRUNCXzEuZGVmYXVsdCgyLCAyNCkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDE2LCBuZXcgRUNCXzEuZGVmYXVsdCg0LCA5KSkpLAoJICAgICAgICBuZXcgVmVyc2lvbig1LCBJbnQzMkFycmF5LmZyb20oWzYsIDMwXSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjYsIG5ldyBFQ0JfMS5kZWZhdWx0KDEsIDEwOCkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI0LCBuZXcgRUNCXzEuZGVmYXVsdCgyLCA0MykpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDE4LCBuZXcgRUNCXzEuZGVmYXVsdCgyLCAxNSksIG5ldyBFQ0JfMS5kZWZhdWx0KDIsIDE2KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjIsIG5ldyBFQ0JfMS5kZWZhdWx0KDIsIDExKSwgbmV3IEVDQl8xLmRlZmF1bHQoMiwgMTIpKSksCgkgICAgICAgIG5ldyBWZXJzaW9uKDYsIEludDMyQXJyYXkuZnJvbShbNiwgMzRdKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgxOCwgbmV3IEVDQl8xLmRlZmF1bHQoMiwgNjgpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgxNiwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgMjcpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyNCwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgMTkpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyOCwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgMTUpKSksCgkgICAgICAgIG5ldyBWZXJzaW9uKDcsIEludDMyQXJyYXkuZnJvbShbNiwgMjIsIDM4XSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjAsIG5ldyBFQ0JfMS5kZWZhdWx0KDIsIDc4KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMTgsIG5ldyBFQ0JfMS5kZWZhdWx0KDQsIDMxKSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMTgsIG5ldyBFQ0JfMS5kZWZhdWx0KDIsIDE0KSwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgMTUpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyNiwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgMTMpLCBuZXcgRUNCXzEuZGVmYXVsdCgxLCAxNCkpKSwKCSAgICAgICAgbmV3IFZlcnNpb24oOCwgSW50MzJBcnJheS5mcm9tKFs2LCAyNCwgNDJdKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyNCwgbmV3IEVDQl8xLmRlZmF1bHQoMiwgOTcpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyMiwgbmV3IEVDQl8xLmRlZmF1bHQoMiwgMzgpLCBuZXcgRUNCXzEuZGVmYXVsdCgyLCAzOSkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDIyLCBuZXcgRUNCXzEuZGVmYXVsdCg0LCAxOCksIG5ldyBFQ0JfMS5kZWZhdWx0KDIsIDE5KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjYsIG5ldyBFQ0JfMS5kZWZhdWx0KDQsIDE0KSwgbmV3IEVDQl8xLmRlZmF1bHQoMiwgMTUpKSksCgkgICAgICAgIG5ldyBWZXJzaW9uKDksIEludDMyQXJyYXkuZnJvbShbNiwgMjYsIDQ2XSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDIsIDExNikpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDIyLCBuZXcgRUNCXzEuZGVmYXVsdCgzLCAzNiksIG5ldyBFQ0JfMS5kZWZhdWx0KDIsIDM3KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjAsIG5ldyBFQ0JfMS5kZWZhdWx0KDQsIDE2KSwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgMTcpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyNCwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgMTIpLCBuZXcgRUNCXzEuZGVmYXVsdCg0LCAxMykpKSwKCSAgICAgICAgbmV3IFZlcnNpb24oMTAsIEludDMyQXJyYXkuZnJvbShbNiwgMjgsIDUwXSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMTgsIG5ldyBFQ0JfMS5kZWZhdWx0KDIsIDY4KSwgbmV3IEVDQl8xLmRlZmF1bHQoMiwgNjkpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyNiwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgNDMpLCBuZXcgRUNCXzEuZGVmYXVsdCgxLCA0NCkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI0LCBuZXcgRUNCXzEuZGVmYXVsdCg2LCAxOSksIG5ldyBFQ0JfMS5kZWZhdWx0KDIsIDIwKSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjgsIG5ldyBFQ0JfMS5kZWZhdWx0KDYsIDE1KSwgbmV3IEVDQl8xLmRlZmF1bHQoMiwgMTYpKSksCgkgICAgICAgIG5ldyBWZXJzaW9uKDExLCBJbnQzMkFycmF5LmZyb20oWzYsIDMwLCA1NF0pLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDIwLCBuZXcgRUNCXzEuZGVmYXVsdCg0LCA4MSkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCgxLCA1MCksIG5ldyBFQ0JfMS5kZWZhdWx0KDQsIDUxKSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjgsIG5ldyBFQ0JfMS5kZWZhdWx0KDQsIDIyKSwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgMjMpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyNCwgbmV3IEVDQl8xLmRlZmF1bHQoMywgMTIpLCBuZXcgRUNCXzEuZGVmYXVsdCg4LCAxMykpKSwKCSAgICAgICAgbmV3IFZlcnNpb24oMTIsIEludDMyQXJyYXkuZnJvbShbNiwgMzIsIDU4XSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjQsIG5ldyBFQ0JfMS5kZWZhdWx0KDIsIDkyKSwgbmV3IEVDQl8xLmRlZmF1bHQoMiwgOTMpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyMiwgbmV3IEVDQl8xLmRlZmF1bHQoNiwgMzYpLCBuZXcgRUNCXzEuZGVmYXVsdCgyLCAzNykpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI2LCBuZXcgRUNCXzEuZGVmYXVsdCg0LCAyMCksIG5ldyBFQ0JfMS5kZWZhdWx0KDYsIDIxKSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjgsIG5ldyBFQ0JfMS5kZWZhdWx0KDcsIDE0KSwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgMTUpKSksCgkgICAgICAgIG5ldyBWZXJzaW9uKDEzLCBJbnQzMkFycmF5LmZyb20oWzYsIDM0LCA2Ml0pLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI2LCBuZXcgRUNCXzEuZGVmYXVsdCg0LCAxMDcpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyMiwgbmV3IEVDQl8xLmRlZmF1bHQoOCwgMzcpLCBuZXcgRUNCXzEuZGVmYXVsdCgxLCAzOCkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI0LCBuZXcgRUNCXzEuZGVmYXVsdCg4LCAyMCksIG5ldyBFQ0JfMS5kZWZhdWx0KDQsIDIxKSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjIsIG5ldyBFQ0JfMS5kZWZhdWx0KDEyLCAxMSksIG5ldyBFQ0JfMS5kZWZhdWx0KDQsIDEyKSkpLAoJICAgICAgICBuZXcgVmVyc2lvbigxNCwgSW50MzJBcnJheS5mcm9tKFs2LCAyNiwgNDYsIDY2XSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDMsIDExNSksIG5ldyBFQ0JfMS5kZWZhdWx0KDEsIDExNikpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI0LCBuZXcgRUNCXzEuZGVmYXVsdCg0LCA0MCksIG5ldyBFQ0JfMS5kZWZhdWx0KDUsIDQxKSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjAsIG5ldyBFQ0JfMS5kZWZhdWx0KDExLCAxNiksIG5ldyBFQ0JfMS5kZWZhdWx0KDUsIDE3KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjQsIG5ldyBFQ0JfMS5kZWZhdWx0KDExLCAxMiksIG5ldyBFQ0JfMS5kZWZhdWx0KDUsIDEzKSkpLAoJICAgICAgICBuZXcgVmVyc2lvbigxNSwgSW50MzJBcnJheS5mcm9tKFs2LCAyNiwgNDgsIDcwXSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjIsIG5ldyBFQ0JfMS5kZWZhdWx0KDUsIDg3KSwgbmV3IEVDQl8xLmRlZmF1bHQoMSwgODgpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyNCwgbmV3IEVDQl8xLmRlZmF1bHQoNSwgNDEpLCBuZXcgRUNCXzEuZGVmYXVsdCg1LCA0MikpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCg1LCAyNCksIG5ldyBFQ0JfMS5kZWZhdWx0KDcsIDI1KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjQsIG5ldyBFQ0JfMS5kZWZhdWx0KDExLCAxMiksIG5ldyBFQ0JfMS5kZWZhdWx0KDcsIDEzKSkpLAoJICAgICAgICBuZXcgVmVyc2lvbigxNiwgSW50MzJBcnJheS5mcm9tKFs2LCAyNiwgNTAsIDc0XSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjQsIG5ldyBFQ0JfMS5kZWZhdWx0KDUsIDk4KSwgbmV3IEVDQl8xLmRlZmF1bHQoMSwgOTkpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyOCwgbmV3IEVDQl8xLmRlZmF1bHQoNywgNDUpLCBuZXcgRUNCXzEuZGVmYXVsdCgzLCA0NikpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI0LCBuZXcgRUNCXzEuZGVmYXVsdCgxNSwgMTkpLCBuZXcgRUNCXzEuZGVmYXVsdCgyLCAyMCkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCgzLCAxNSksIG5ldyBFQ0JfMS5kZWZhdWx0KDEzLCAxNikpKSwKCSAgICAgICAgbmV3IFZlcnNpb24oMTcsIEludDMyQXJyYXkuZnJvbShbNiwgMzAsIDU0LCA3OF0pLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI4LCBuZXcgRUNCXzEuZGVmYXVsdCgxLCAxMDcpLCBuZXcgRUNCXzEuZGVmYXVsdCg1LCAxMDgpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyOCwgbmV3IEVDQl8xLmRlZmF1bHQoMTAsIDQ2KSwgbmV3IEVDQl8xLmRlZmF1bHQoMSwgNDcpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyOCwgbmV3IEVDQl8xLmRlZmF1bHQoMSwgMjIpLCBuZXcgRUNCXzEuZGVmYXVsdCgxNSwgMjMpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyOCwgbmV3IEVDQl8xLmRlZmF1bHQoMiwgMTQpLCBuZXcgRUNCXzEuZGVmYXVsdCgxNywgMTUpKSksCgkgICAgICAgIG5ldyBWZXJzaW9uKDE4LCBJbnQzMkFycmF5LmZyb20oWzYsIDMwLCA1NiwgODJdKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoNSwgMTIwKSwgbmV3IEVDQl8xLmRlZmF1bHQoMSwgMTIxKSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjYsIG5ldyBFQ0JfMS5kZWZhdWx0KDksIDQzKSwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgNDQpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyOCwgbmV3IEVDQl8xLmRlZmF1bHQoMTcsIDIyKSwgbmV3IEVDQl8xLmRlZmF1bHQoMSwgMjMpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyOCwgbmV3IEVDQl8xLmRlZmF1bHQoMiwgMTQpLCBuZXcgRUNCXzEuZGVmYXVsdCgxOSwgMTUpKSksCgkgICAgICAgIG5ldyBWZXJzaW9uKDE5LCBJbnQzMkFycmF5LmZyb20oWzYsIDMwLCA1OCwgODZdKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyOCwgbmV3IEVDQl8xLmRlZmF1bHQoMywgMTEzKSwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgMTE0KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjYsIG5ldyBFQ0JfMS5kZWZhdWx0KDMsIDQ0KSwgbmV3IEVDQl8xLmRlZmF1bHQoMTEsIDQ1KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjYsIG5ldyBFQ0JfMS5kZWZhdWx0KDE3LCAyMSksIG5ldyBFQ0JfMS5kZWZhdWx0KDQsIDIyKSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjYsIG5ldyBFQ0JfMS5kZWZhdWx0KDksIDEzKSwgbmV3IEVDQl8xLmRlZmF1bHQoMTYsIDE0KSkpLAoJICAgICAgICBuZXcgVmVyc2lvbigyMCwgSW50MzJBcnJheS5mcm9tKFs2LCAzNCwgNjIsIDkwXSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjgsIG5ldyBFQ0JfMS5kZWZhdWx0KDMsIDEwNyksIG5ldyBFQ0JfMS5kZWZhdWx0KDUsIDEwOCkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI2LCBuZXcgRUNCXzEuZGVmYXVsdCgzLCA0MSksIG5ldyBFQ0JfMS5kZWZhdWx0KDEzLCA0MikpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCgxNSwgMjQpLCBuZXcgRUNCXzEuZGVmYXVsdCg1LCAyNSkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI4LCBuZXcgRUNCXzEuZGVmYXVsdCgxNSwgMTUpLCBuZXcgRUNCXzEuZGVmYXVsdCgxMCwgMTYpKSksCgkgICAgICAgIG5ldyBWZXJzaW9uKDIxLCBJbnQzMkFycmF5LmZyb20oWzYsIDI4LCA1MCwgNzIsIDk0XSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjgsIG5ldyBFQ0JfMS5kZWZhdWx0KDQsIDExNiksIG5ldyBFQ0JfMS5kZWZhdWx0KDQsIDExNykpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI2LCBuZXcgRUNCXzEuZGVmYXVsdCgxNywgNDIpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyOCwgbmV3IEVDQl8xLmRlZmF1bHQoMTcsIDIyKSwgbmV3IEVDQl8xLmRlZmF1bHQoNiwgMjMpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMTksIDE2KSwgbmV3IEVDQl8xLmRlZmF1bHQoNiwgMTcpKSksCgkgICAgICAgIG5ldyBWZXJzaW9uKDIyLCBJbnQzMkFycmF5LmZyb20oWzYsIDI2LCA1MCwgNzQsIDk4XSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjgsIG5ldyBFQ0JfMS5kZWZhdWx0KDIsIDExMSksIG5ldyBFQ0JfMS5kZWZhdWx0KDcsIDExMikpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI4LCBuZXcgRUNCXzEuZGVmYXVsdCgxNywgNDYpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoNywgMjQpLCBuZXcgRUNCXzEuZGVmYXVsdCgxNiwgMjUpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyNCwgbmV3IEVDQl8xLmRlZmF1bHQoMzQsIDEzKSkpLAoJICAgICAgICBuZXcgVmVyc2lvbigyMywgSW50MzJBcnJheS5mcm9tKFs2LCAzMCwgNTQsIDc4LCAxMDJdKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgMTIxKSwgbmV3IEVDQl8xLmRlZmF1bHQoNSwgMTIyKSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjgsIG5ldyBFQ0JfMS5kZWZhdWx0KDQsIDQ3KSwgbmV3IEVDQl8xLmRlZmF1bHQoMTQsIDQ4KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDExLCAyNCksIG5ldyBFQ0JfMS5kZWZhdWx0KDE0LCAyNSkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCgxNiwgMTUpLCBuZXcgRUNCXzEuZGVmYXVsdCgxNCwgMTYpKSksCgkgICAgICAgIG5ldyBWZXJzaW9uKDI0LCBJbnQzMkFycmF5LmZyb20oWzYsIDI4LCA1NCwgODAsIDEwNl0pLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCg2LCAxMTcpLCBuZXcgRUNCXzEuZGVmYXVsdCg0LCAxMTgpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyOCwgbmV3IEVDQl8xLmRlZmF1bHQoNiwgNDUpLCBuZXcgRUNCXzEuZGVmYXVsdCgxNCwgNDYpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMTEsIDI0KSwgbmV3IEVDQl8xLmRlZmF1bHQoMTYsIDI1KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDMwLCAxNiksIG5ldyBFQ0JfMS5kZWZhdWx0KDIsIDE3KSkpLAoJICAgICAgICBuZXcgVmVyc2lvbigyNSwgSW50MzJBcnJheS5mcm9tKFs2LCAzMiwgNTgsIDg0LCAxMTBdKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyNiwgbmV3IEVDQl8xLmRlZmF1bHQoOCwgMTA2KSwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgMTA3KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjgsIG5ldyBFQ0JfMS5kZWZhdWx0KDgsIDQ3KSwgbmV3IEVDQl8xLmRlZmF1bHQoMTMsIDQ4KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDcsIDI0KSwgbmV3IEVDQl8xLmRlZmF1bHQoMjIsIDI1KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDIyLCAxNSksIG5ldyBFQ0JfMS5kZWZhdWx0KDEzLCAxNikpKSwKCSAgICAgICAgbmV3IFZlcnNpb24oMjYsIEludDMyQXJyYXkuZnJvbShbNiwgMzAsIDU4LCA4NiwgMTE0XSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjgsIG5ldyBFQ0JfMS5kZWZhdWx0KDEwLCAxMTQpLCBuZXcgRUNCXzEuZGVmYXVsdCgyLCAxMTUpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyOCwgbmV3IEVDQl8xLmRlZmF1bHQoMTksIDQ2KSwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgNDcpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyOCwgbmV3IEVDQl8xLmRlZmF1bHQoMjgsIDIyKSwgbmV3IEVDQl8xLmRlZmF1bHQoNiwgMjMpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMzMsIDE2KSwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgMTcpKSksCgkgICAgICAgIG5ldyBWZXJzaW9uKDI3LCBJbnQzMkFycmF5LmZyb20oWzYsIDM0LCA2MiwgOTAsIDExOF0pLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCg4LCAxMjIpLCBuZXcgRUNCXzEuZGVmYXVsdCg0LCAxMjMpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyOCwgbmV3IEVDQl8xLmRlZmF1bHQoMjIsIDQ1KSwgbmV3IEVDQl8xLmRlZmF1bHQoMywgNDYpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoOCwgMjMpLCBuZXcgRUNCXzEuZGVmYXVsdCgyNiwgMjQpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMTIsIDE1KSwgbmV3IEVDQl8xLmRlZmF1bHQoMjgsIDE2KSkpLAoJICAgICAgICBuZXcgVmVyc2lvbigyOCwgSW50MzJBcnJheS5mcm9tKFs2LCAyNiwgNTAsIDc0LCA5OCwgMTIyXSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDMsIDExNyksIG5ldyBFQ0JfMS5kZWZhdWx0KDEwLCAxMTgpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyOCwgbmV3IEVDQl8xLmRlZmF1bHQoMywgNDUpLCBuZXcgRUNCXzEuZGVmYXVsdCgyMywgNDYpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgMjQpLCBuZXcgRUNCXzEuZGVmYXVsdCgzMSwgMjUpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMTEsIDE1KSwgbmV3IEVDQl8xLmRlZmF1bHQoMzEsIDE2KSkpLAoJICAgICAgICBuZXcgVmVyc2lvbigyOSwgSW50MzJBcnJheS5mcm9tKFs2LCAzMCwgNTQsIDc4LCAxMDIsIDEyNl0pLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCg3LCAxMTYpLCBuZXcgRUNCXzEuZGVmYXVsdCg3LCAxMTcpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyOCwgbmV3IEVDQl8xLmRlZmF1bHQoMjEsIDQ1KSwgbmV3IEVDQl8xLmRlZmF1bHQoNywgNDYpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMSwgMjMpLCBuZXcgRUNCXzEuZGVmYXVsdCgzNywgMjQpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMTksIDE1KSwgbmV3IEVDQl8xLmRlZmF1bHQoMjYsIDE2KSkpLAoJICAgICAgICBuZXcgVmVyc2lvbigzMCwgSW50MzJBcnJheS5mcm9tKFs2LCAyNiwgNTIsIDc4LCAxMDQsIDEzMF0pLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCg1LCAxMTUpLCBuZXcgRUNCXzEuZGVmYXVsdCgxMCwgMTE2KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjgsIG5ldyBFQ0JfMS5kZWZhdWx0KDE5LCA0NyksIG5ldyBFQ0JfMS5kZWZhdWx0KDEwLCA0OCkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCgxNSwgMjQpLCBuZXcgRUNCXzEuZGVmYXVsdCgyNSwgMjUpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMjMsIDE1KSwgbmV3IEVDQl8xLmRlZmF1bHQoMjUsIDE2KSkpLAoJICAgICAgICBuZXcgVmVyc2lvbigzMSwgSW50MzJBcnJheS5mcm9tKFs2LCAzMCwgNTYsIDgyLCAxMDgsIDEzNF0pLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCgxMywgMTE1KSwgbmV3IEVDQl8xLmRlZmF1bHQoMywgMTE2KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjgsIG5ldyBFQ0JfMS5kZWZhdWx0KDIsIDQ2KSwgbmV3IEVDQl8xLmRlZmF1bHQoMjksIDQ3KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDQyLCAyNCksIG5ldyBFQ0JfMS5kZWZhdWx0KDEsIDI1KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDIzLCAxNSksIG5ldyBFQ0JfMS5kZWZhdWx0KDI4LCAxNikpKSwKCSAgICAgICAgbmV3IFZlcnNpb24oMzIsIEludDMyQXJyYXkuZnJvbShbNiwgMzQsIDYwLCA4NiwgMTEyLCAxMzhdKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMTcsIDExNSkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI4LCBuZXcgRUNCXzEuZGVmYXVsdCgxMCwgNDYpLCBuZXcgRUNCXzEuZGVmYXVsdCgyMywgNDcpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMTAsIDI0KSwgbmV3IEVDQl8xLmRlZmF1bHQoMzUsIDI1KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDE5LCAxNSksIG5ldyBFQ0JfMS5kZWZhdWx0KDM1LCAxNikpKSwKCSAgICAgICAgbmV3IFZlcnNpb24oMzMsIEludDMyQXJyYXkuZnJvbShbNiwgMzAsIDU4LCA4NiwgMTE0LCAxNDJdKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMTcsIDExNSksIG5ldyBFQ0JfMS5kZWZhdWx0KDEsIDExNikpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI4LCBuZXcgRUNCXzEuZGVmYXVsdCgxNCwgNDYpLCBuZXcgRUNCXzEuZGVmYXVsdCgyMSwgNDcpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMjksIDI0KSwgbmV3IEVDQl8xLmRlZmF1bHQoMTksIDI1KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDExLCAxNSksIG5ldyBFQ0JfMS5kZWZhdWx0KDQ2LCAxNikpKSwKCSAgICAgICAgbmV3IFZlcnNpb24oMzQsIEludDMyQXJyYXkuZnJvbShbNiwgMzQsIDYyLCA5MCwgMTE4LCAxNDZdKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMTMsIDExNSksIG5ldyBFQ0JfMS5kZWZhdWx0KDYsIDExNikpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI4LCBuZXcgRUNCXzEuZGVmYXVsdCgxNCwgNDYpLCBuZXcgRUNCXzEuZGVmYXVsdCgyMywgNDcpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoNDQsIDI0KSwgbmV3IEVDQl8xLmRlZmF1bHQoNywgMjUpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoNTksIDE2KSwgbmV3IEVDQl8xLmRlZmF1bHQoMSwgMTcpKSksCgkgICAgICAgIG5ldyBWZXJzaW9uKDM1LCBJbnQzMkFycmF5LmZyb20oWzYsIDMwLCA1NCwgNzgsIDEwMiwgMTI2LCAxNTBdKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMTIsIDEyMSksIG5ldyBFQ0JfMS5kZWZhdWx0KDcsIDEyMikpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI4LCBuZXcgRUNCXzEuZGVmYXVsdCgxMiwgNDcpLCBuZXcgRUNCXzEuZGVmYXVsdCgyNiwgNDgpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMzksIDI0KSwgbmV3IEVDQl8xLmRlZmF1bHQoMTQsIDI1KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDIyLCAxNSksIG5ldyBFQ0JfMS5kZWZhdWx0KDQxLCAxNikpKSwKCSAgICAgICAgbmV3IFZlcnNpb24oMzYsIEludDMyQXJyYXkuZnJvbShbNiwgMjQsIDUwLCA3NiwgMTAyLCAxMjgsIDE1NF0pLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCg2LCAxMjEpLCBuZXcgRUNCXzEuZGVmYXVsdCgxNCwgMTIyKSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjgsIG5ldyBFQ0JfMS5kZWZhdWx0KDYsIDQ3KSwgbmV3IEVDQl8xLmRlZmF1bHQoMzQsIDQ4KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDQ2LCAyNCksIG5ldyBFQ0JfMS5kZWZhdWx0KDEwLCAyNSkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCgyLCAxNSksIG5ldyBFQ0JfMS5kZWZhdWx0KDY0LCAxNikpKSwKCSAgICAgICAgbmV3IFZlcnNpb24oMzcsIEludDMyQXJyYXkuZnJvbShbNiwgMjgsIDU0LCA4MCwgMTA2LCAxMzIsIDE1OF0pLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCgxNywgMTIyKSwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgMTIzKSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjgsIG5ldyBFQ0JfMS5kZWZhdWx0KDI5LCA0NiksIG5ldyBFQ0JfMS5kZWZhdWx0KDE0LCA0NykpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCg0OSwgMjQpLCBuZXcgRUNCXzEuZGVmYXVsdCgxMCwgMjUpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMjQsIDE1KSwgbmV3IEVDQl8xLmRlZmF1bHQoNDYsIDE2KSkpLAoJICAgICAgICBuZXcgVmVyc2lvbigzOCwgSW50MzJBcnJheS5mcm9tKFs2LCAzMiwgNTgsIDg0LCAxMTAsIDEzNiwgMTYyXSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDQsIDEyMiksIG5ldyBFQ0JfMS5kZWZhdWx0KDE4LCAxMjMpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyOCwgbmV3IEVDQl8xLmRlZmF1bHQoMTMsIDQ2KSwgbmV3IEVDQl8xLmRlZmF1bHQoMzIsIDQ3KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDQ4LCAyNCksIG5ldyBFQ0JfMS5kZWZhdWx0KDE0LCAyNSkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCg0MiwgMTUpLCBuZXcgRUNCXzEuZGVmYXVsdCgzMiwgMTYpKSksCgkgICAgICAgIG5ldyBWZXJzaW9uKDM5LCBJbnQzMkFycmF5LmZyb20oWzYsIDI2LCA1NCwgODIsIDExMCwgMTM4LCAxNjZdKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMjAsIDExNyksIG5ldyBFQ0JfMS5kZWZhdWx0KDQsIDExOCkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI4LCBuZXcgRUNCXzEuZGVmYXVsdCg0MCwgNDcpLCBuZXcgRUNCXzEuZGVmYXVsdCg3LCA0OCkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCg0MywgMjQpLCBuZXcgRUNCXzEuZGVmYXVsdCgyMiwgMjUpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMTAsIDE1KSwgbmV3IEVDQl8xLmRlZmF1bHQoNjcsIDE2KSkpLAoJICAgICAgICBuZXcgVmVyc2lvbig0MCwgSW50MzJBcnJheS5mcm9tKFs2LCAzMCwgNTgsIDg2LCAxMTQsIDE0MiwgMTcwXSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDE5LCAxMTgpLCBuZXcgRUNCXzEuZGVmYXVsdCg2LCAxMTkpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyOCwgbmV3IEVDQl8xLmRlZmF1bHQoMTgsIDQ3KSwgbmV3IEVDQl8xLmRlZmF1bHQoMzEsIDQ4KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDM0LCAyNCksIG5ldyBFQ0JfMS5kZWZhdWx0KDM0LCAyNSkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCgyMCwgMTUpLCBuZXcgRUNCXzEuZGVmYXVsdCg2MSwgMTYpKSkKCSAgICBdOwoJICAgIHJldHVybiBWZXJzaW9uOwoJfSgpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IFZlcnNpb247CgoJfSk7CgoJdmFyIERhdGFNYXNrXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CgkvKgoJICogQ29weXJpZ2h0IDIwMDcgWlhpbmcgYXV0aG9ycwoJICoKCSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkgKgoJICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSAqCgkgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSAqLwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCWV4cG9ydHMuRGF0YU1hc2tWYWx1ZXMgPSB2b2lkIDA7Cgl2YXIgRGF0YU1hc2tWYWx1ZXM7CgkoZnVuY3Rpb24gKERhdGFNYXNrVmFsdWVzKSB7CgkgICAgRGF0YU1hc2tWYWx1ZXNbRGF0YU1hc2tWYWx1ZXNbIkRBVEFfTUFTS18wMDAiXSA9IDBdID0gIkRBVEFfTUFTS18wMDAiOwoJICAgIERhdGFNYXNrVmFsdWVzW0RhdGFNYXNrVmFsdWVzWyJEQVRBX01BU0tfMDAxIl0gPSAxXSA9ICJEQVRBX01BU0tfMDAxIjsKCSAgICBEYXRhTWFza1ZhbHVlc1tEYXRhTWFza1ZhbHVlc1siREFUQV9NQVNLXzAxMCJdID0gMl0gPSAiREFUQV9NQVNLXzAxMCI7CgkgICAgRGF0YU1hc2tWYWx1ZXNbRGF0YU1hc2tWYWx1ZXNbIkRBVEFfTUFTS18wMTEiXSA9IDNdID0gIkRBVEFfTUFTS18wMTEiOwoJICAgIERhdGFNYXNrVmFsdWVzW0RhdGFNYXNrVmFsdWVzWyJEQVRBX01BU0tfMTAwIl0gPSA0XSA9ICJEQVRBX01BU0tfMTAwIjsKCSAgICBEYXRhTWFza1ZhbHVlc1tEYXRhTWFza1ZhbHVlc1siREFUQV9NQVNLXzEwMSJdID0gNV0gPSAiREFUQV9NQVNLXzEwMSI7CgkgICAgRGF0YU1hc2tWYWx1ZXNbRGF0YU1hc2tWYWx1ZXNbIkRBVEFfTUFTS18xMTAiXSA9IDZdID0gIkRBVEFfTUFTS18xMTAiOwoJICAgIERhdGFNYXNrVmFsdWVzW0RhdGFNYXNrVmFsdWVzWyJEQVRBX01BU0tfMTExIl0gPSA3XSA9ICJEQVRBX01BU0tfMTExIjsKCX0pKERhdGFNYXNrVmFsdWVzID0gZXhwb3J0cy5EYXRhTWFza1ZhbHVlcyB8fCAoZXhwb3J0cy5EYXRhTWFza1ZhbHVlcyA9IHt9KSk7CgkvKioKCSAqIDxwPkVuY2Fwc3VsYXRlcyBkYXRhIG1hc2tzIGZvciB0aGUgZGF0YSBiaXRzIGluIGEgUVIgY29kZSwgcGVyIElTTyAxODAwNDoyMDA2IDYuOC4gSW1wbGVtZW50YXRpb25zCgkgKiBvZiB0aGlzIGNsYXNzIGNhbiB1bi1tYXNrIGEgcmF3IEJpdE1hdHJpeC4gRm9yIHNpbXBsaWNpdHksIHRoZXkgd2lsbCB1bm1hc2sgdGhlIGVudGlyZSBCaXRNYXRyaXgsCgkgKiBpbmNsdWRpbmcgYXJlYXMgdXNlZCBmb3IgZmluZGVyIHBhdHRlcm5zLCB0aW1pbmcgcGF0dGVybnMsIGV0Yy4gVGhlc2UgYXJlYXMgc2hvdWxkIGJlIHVudXNlZAoJICogYWZ0ZXIgdGhlIHBvaW50IHRoZXkgYXJlIHVubWFza2VkIGFueXdheS48L3A+CgkgKgoJICogPHA+Tm90ZSB0aGF0IHRoZSBkaWFncmFtIGluIHNlY3Rpb24gNi44LjEgaXMgbWlzbGVhZGluZyBzaW5jZSBpdCBpbmRpY2F0ZXMgdGhhdCBpIGlzIGNvbHVtbiBwb3NpdGlvbgoJICogYW5kIGogaXMgcm93IHBvc2l0aW9uLiBJbiBmYWN0LCBhcyB0aGUgdGV4dCBzYXlzLCBpIGlzIHJvdyBwb3NpdGlvbiBhbmQgaiBpcyBjb2x1bW4gcG9zaXRpb24uPC9wPgoJICoKCSAqIEBhdXRob3IgU2VhbiBPd2VuCgkgKi8KCXZhciBEYXRhTWFzayA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICAvLyBTZWUgSVNPIDE4MDA0OjIwMDYgNi44LjEKCSAgICBmdW5jdGlvbiBEYXRhTWFzayh2YWx1ZSwgaXNNYXNrZWQpIHsKCSAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlOwoJICAgICAgICB0aGlzLmlzTWFza2VkID0gaXNNYXNrZWQ7CgkgICAgfQoJICAgIC8vIEVuZCBvZiBlbnVtIGNvbnN0YW50cy4KCSAgICAvKioKCSAgICAgKiA8cD5JbXBsZW1lbnRhdGlvbnMgb2YgdGhpcyBtZXRob2QgcmV2ZXJzZSB0aGUgZGF0YSBtYXNraW5nIHByb2Nlc3MgYXBwbGllZCB0byBhIFFSIENvZGUgYW5kCgkgICAgICogbWFrZSBpdHMgYml0cyByZWFkeSB0byByZWFkLjwvcD4KCSAgICAgKgoJICAgICAqIEBwYXJhbSBiaXRzIHJlcHJlc2VudGF0aW9uIG9mIFFSIENvZGUgYml0cwoJICAgICAqIEBwYXJhbSBkaW1lbnNpb24gZGltZW5zaW9uIG9mIFFSIENvZGUsIHJlcHJlc2VudGVkIGJ5IGJpdHMsIGJlaW5nIHVubWFza2VkCgkgICAgICovCgkgICAgRGF0YU1hc2sucHJvdG90eXBlLnVubWFza0JpdE1hdHJpeCA9IGZ1bmN0aW9uIChiaXRzLCBkaW1lbnNpb24gLyppbnQqLykgewoJICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRpbWVuc2lvbjsgaSsrKSB7CgkgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGRpbWVuc2lvbjsgaisrKSB7CgkgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNNYXNrZWQoaSwgaikpIHsKCSAgICAgICAgICAgICAgICAgICAgYml0cy5mbGlwKGosIGkpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgIH07CgkgICAgRGF0YU1hc2sudmFsdWVzID0gbmV3IE1hcChbCgkgICAgICAgIC8qKgoJICAgICAgICAgKiAwMDA6IG1hc2sgYml0cyBmb3Igd2hpY2ggKHggKyB5KSBtb2QgMiA9PSAwCgkgICAgICAgICAqLwoJICAgICAgICBbRGF0YU1hc2tWYWx1ZXMuREFUQV9NQVNLXzAwMCwgbmV3IERhdGFNYXNrKERhdGFNYXNrVmFsdWVzLkRBVEFfTUFTS18wMDAsIGZ1bmN0aW9uIChpIC8qaW50Ki8sIGogLyppbnQqLykgeyByZXR1cm4gKChpICsgaikgJiAweDAxKSA9PT0gMDsgfSldLAoJICAgICAgICAvKioKCSAgICAgICAgICogMDAxOiBtYXNrIGJpdHMgZm9yIHdoaWNoIHggbW9kIDIgPT0gMAoJICAgICAgICAgKi8KCSAgICAgICAgW0RhdGFNYXNrVmFsdWVzLkRBVEFfTUFTS18wMDEsIG5ldyBEYXRhTWFzayhEYXRhTWFza1ZhbHVlcy5EQVRBX01BU0tfMDAxLCBmdW5jdGlvbiAoaSAvKmludCovLCBqIC8qaW50Ki8pIHsgcmV0dXJuIChpICYgMHgwMSkgPT09IDA7IH0pXSwKCSAgICAgICAgLyoqCgkgICAgICAgICAqIDAxMDogbWFzayBiaXRzIGZvciB3aGljaCB5IG1vZCAzID09IDAKCSAgICAgICAgICovCgkgICAgICAgIFtEYXRhTWFza1ZhbHVlcy5EQVRBX01BU0tfMDEwLCBuZXcgRGF0YU1hc2soRGF0YU1hc2tWYWx1ZXMuREFUQV9NQVNLXzAxMCwgZnVuY3Rpb24gKGkgLyppbnQqLywgaiAvKmludCovKSB7IHJldHVybiBqICUgMyA9PT0gMDsgfSldLAoJICAgICAgICAvKioKCSAgICAgICAgICogMDExOiBtYXNrIGJpdHMgZm9yIHdoaWNoICh4ICsgeSkgbW9kIDMgPT0gMAoJICAgICAgICAgKi8KCSAgICAgICAgW0RhdGFNYXNrVmFsdWVzLkRBVEFfTUFTS18wMTEsIG5ldyBEYXRhTWFzayhEYXRhTWFza1ZhbHVlcy5EQVRBX01BU0tfMDExLCBmdW5jdGlvbiAoaSAvKmludCovLCBqIC8qaW50Ki8pIHsgcmV0dXJuIChpICsgaikgJSAzID09PSAwOyB9KV0sCgkgICAgICAgIC8qKgoJICAgICAgICAgKiAxMDA6IG1hc2sgYml0cyBmb3Igd2hpY2ggKHgvMiArIHkvMykgbW9kIDIgPT0gMAoJICAgICAgICAgKi8KCSAgICAgICAgW0RhdGFNYXNrVmFsdWVzLkRBVEFfTUFTS18xMDAsIG5ldyBEYXRhTWFzayhEYXRhTWFza1ZhbHVlcy5EQVRBX01BU0tfMTAwLCBmdW5jdGlvbiAoaSAvKmludCovLCBqIC8qaW50Ki8pIHsgcmV0dXJuICgoTWF0aC5mbG9vcihpIC8gMikgKyBNYXRoLmZsb29yKGogLyAzKSkgJiAweDAxKSA9PT0gMDsgfSldLAoJICAgICAgICAvKioKCSAgICAgICAgICogMTAxOiBtYXNrIGJpdHMgZm9yIHdoaWNoIHh5IG1vZCAyICsgeHkgbW9kIDMgPT0gMAoJICAgICAgICAgKiBlcXVpdmFsZW50bHksIHN1Y2ggdGhhdCB4eSBtb2QgNiA9PSAwCgkgICAgICAgICAqLwoJICAgICAgICBbRGF0YU1hc2tWYWx1ZXMuREFUQV9NQVNLXzEwMSwgbmV3IERhdGFNYXNrKERhdGFNYXNrVmFsdWVzLkRBVEFfTUFTS18xMDEsIGZ1bmN0aW9uIChpIC8qaW50Ki8sIGogLyppbnQqLykgeyByZXR1cm4gKGkgKiBqKSAlIDYgPT09IDA7IH0pXSwKCSAgICAgICAgLyoqCgkgICAgICAgICAqIDExMDogbWFzayBiaXRzIGZvciB3aGljaCAoeHkgbW9kIDIgKyB4eSBtb2QgMykgbW9kIDIgPT0gMAoJICAgICAgICAgKiBlcXVpdmFsZW50bHksIHN1Y2ggdGhhdCB4eSBtb2QgNiA8IDMKCSAgICAgICAgICovCgkgICAgICAgIFtEYXRhTWFza1ZhbHVlcy5EQVRBX01BU0tfMTEwLCBuZXcgRGF0YU1hc2soRGF0YU1hc2tWYWx1ZXMuREFUQV9NQVNLXzExMCwgZnVuY3Rpb24gKGkgLyppbnQqLywgaiAvKmludCovKSB7IHJldHVybiAoKGkgKiBqKSAlIDYpIDwgMzsgfSldLAoJICAgICAgICAvKioKCSAgICAgICAgICogMTExOiBtYXNrIGJpdHMgZm9yIHdoaWNoICgoeCt5KW1vZCAyICsgeHkgbW9kIDMpIG1vZCAyID09IDAKCSAgICAgICAgICogZXF1aXZhbGVudGx5LCBzdWNoIHRoYXQgKHggKyB5ICsgeHkgbW9kIDMpIG1vZCAyID09IDAKCSAgICAgICAgICovCgkgICAgICAgIFtEYXRhTWFza1ZhbHVlcy5EQVRBX01BU0tfMTExLCBuZXcgRGF0YU1hc2soRGF0YU1hc2tWYWx1ZXMuREFUQV9NQVNLXzExMSwgZnVuY3Rpb24gKGkgLyppbnQqLywgaiAvKmludCovKSB7IHJldHVybiAoKGkgKyBqICsgKChpICogaikgJSAzKSkgJiAweDAxKSA9PT0gMDsgfSldLAoJICAgIF0pOwoJICAgIHJldHVybiBEYXRhTWFzazsKCX0oKSk7CglleHBvcnRzLmRlZmF1bHQgPSBEYXRhTWFzazsKCgl9KTsKCgl2YXIgQml0TWF0cml4UGFyc2VyXzEkMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCS8qCgkgKiBDb3B5cmlnaHQgMjAwNyBaWGluZyBhdXRob3JzCgkgKgoJICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSAqCgkgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJICoKCSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJICovCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoKCgoKCS8qKgoJICogQGF1dGhvciBTZWFuIE93ZW4KCSAqLwoJdmFyIEJpdE1hdHJpeFBhcnNlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICAvKioKCSAgICAgKiBAcGFyYW0gYml0TWF0cml4IHtAbGluayBCaXRNYXRyaXh9IHRvIHBhcnNlCgkgICAgICogQHRocm93cyBGb3JtYXRFeGNlcHRpb24gaWYgZGltZW5zaW9uIGlzIG5vdCA+PSAyMSBhbmQgMSBtb2QgNAoJICAgICAqLwoJICAgIGZ1bmN0aW9uIEJpdE1hdHJpeFBhcnNlcihiaXRNYXRyaXgpIHsKCSAgICAgICAgdmFyIGRpbWVuc2lvbiA9IGJpdE1hdHJpeC5nZXRIZWlnaHQoKTsKCSAgICAgICAgaWYgKGRpbWVuc2lvbiA8IDIxIHx8IChkaW1lbnNpb24gJiAweDAzKSAhPT0gMSkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgfQoJICAgICAgICB0aGlzLmJpdE1hdHJpeCA9IGJpdE1hdHJpeDsKCSAgICB9CgkgICAgLyoqCgkgICAgICogPHA+UmVhZHMgZm9ybWF0IGluZm9ybWF0aW9uIGZyb20gb25lIG9mIGl0cyB0d28gbG9jYXRpb25zIHdpdGhpbiB0aGUgUVIgQ29kZS48L3A+CgkgICAgICoKCSAgICAgKiBAcmV0dXJuIHtAbGluayBGb3JtYXRJbmZvcm1hdGlvbn0gZW5jYXBzdWxhdGluZyB0aGUgUVIgQ29kZSdzIGZvcm1hdCBpbmZvCgkgICAgICogQHRocm93cyBGb3JtYXRFeGNlcHRpb24gaWYgYm90aCBmb3JtYXQgaW5mb3JtYXRpb24gbG9jYXRpb25zIGNhbm5vdCBiZSBwYXJzZWQgYXMKCSAgICAgKiB0aGUgdmFsaWQgZW5jb2Rpbmcgb2YgZm9ybWF0IGluZm9ybWF0aW9uCgkgICAgICovCgkgICAgQml0TWF0cml4UGFyc2VyLnByb3RvdHlwZS5yZWFkRm9ybWF0SW5mb3JtYXRpb24gPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIGlmICh0aGlzLnBhcnNlZEZvcm1hdEluZm8gIT09IG51bGwgJiYgdGhpcy5wYXJzZWRGb3JtYXRJbmZvICE9PSB1bmRlZmluZWQpIHsKCSAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlZEZvcm1hdEluZm87CgkgICAgICAgIH0KCSAgICAgICAgLy8gUmVhZCB0b3AtbGVmdCBmb3JtYXQgaW5mbyBiaXRzCgkgICAgICAgIHZhciBmb3JtYXRJbmZvQml0czEgPSAwOwoJICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKykgewoJICAgICAgICAgICAgZm9ybWF0SW5mb0JpdHMxID0gdGhpcy5jb3B5Qml0KGksIDgsIGZvcm1hdEluZm9CaXRzMSk7CgkgICAgICAgIH0KCSAgICAgICAgLy8gLi4gYW5kIHNraXAgYSBiaXQgaW4gdGhlIHRpbWluZyBwYXR0ZXJuIC4uLgoJICAgICAgICBmb3JtYXRJbmZvQml0czEgPSB0aGlzLmNvcHlCaXQoNywgOCwgZm9ybWF0SW5mb0JpdHMxKTsKCSAgICAgICAgZm9ybWF0SW5mb0JpdHMxID0gdGhpcy5jb3B5Qml0KDgsIDgsIGZvcm1hdEluZm9CaXRzMSk7CgkgICAgICAgIGZvcm1hdEluZm9CaXRzMSA9IHRoaXMuY29weUJpdCg4LCA3LCBmb3JtYXRJbmZvQml0czEpOwoJICAgICAgICAvLyAuLiBhbmQgc2tpcCBhIGJpdCBpbiB0aGUgdGltaW5nIHBhdHRlcm4gLi4uCgkgICAgICAgIGZvciAodmFyIGogPSA1OyBqID49IDA7IGotLSkgewoJICAgICAgICAgICAgZm9ybWF0SW5mb0JpdHMxID0gdGhpcy5jb3B5Qml0KDgsIGosIGZvcm1hdEluZm9CaXRzMSk7CgkgICAgICAgIH0KCSAgICAgICAgLy8gUmVhZCB0aGUgdG9wLXJpZ2h0L2JvdHRvbS1sZWZ0IHBhdHRlcm4gdG9vCgkgICAgICAgIHZhciBkaW1lbnNpb24gPSB0aGlzLmJpdE1hdHJpeC5nZXRIZWlnaHQoKTsKCSAgICAgICAgdmFyIGZvcm1hdEluZm9CaXRzMiA9IDA7CgkgICAgICAgIHZhciBqTWluID0gZGltZW5zaW9uIC0gNzsKCSAgICAgICAgZm9yICh2YXIgaiA9IGRpbWVuc2lvbiAtIDE7IGogPj0gak1pbjsgai0tKSB7CgkgICAgICAgICAgICBmb3JtYXRJbmZvQml0czIgPSB0aGlzLmNvcHlCaXQoOCwgaiwgZm9ybWF0SW5mb0JpdHMyKTsKCSAgICAgICAgfQoJICAgICAgICBmb3IgKHZhciBpID0gZGltZW5zaW9uIC0gODsgaSA8IGRpbWVuc2lvbjsgaSsrKSB7CgkgICAgICAgICAgICBmb3JtYXRJbmZvQml0czIgPSB0aGlzLmNvcHlCaXQoaSwgOCwgZm9ybWF0SW5mb0JpdHMyKTsKCSAgICAgICAgfQoJICAgICAgICB0aGlzLnBhcnNlZEZvcm1hdEluZm8gPSBGb3JtYXRJbmZvcm1hdGlvbl8xLmRlZmF1bHQuZGVjb2RlRm9ybWF0SW5mb3JtYXRpb24oZm9ybWF0SW5mb0JpdHMxLCBmb3JtYXRJbmZvQml0czIpOwoJICAgICAgICBpZiAodGhpcy5wYXJzZWRGb3JtYXRJbmZvICE9PSBudWxsKSB7CgkgICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZWRGb3JtYXRJbmZvOwoJICAgICAgICB9CgkgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiA8cD5SZWFkcyB2ZXJzaW9uIGluZm9ybWF0aW9uIGZyb20gb25lIG9mIGl0cyB0d28gbG9jYXRpb25zIHdpdGhpbiB0aGUgUVIgQ29kZS48L3A+CgkgICAgICoKCSAgICAgKiBAcmV0dXJuIHtAbGluayBWZXJzaW9ufSBlbmNhcHN1bGF0aW5nIHRoZSBRUiBDb2RlJ3MgdmVyc2lvbgoJICAgICAqIEB0aHJvd3MgRm9ybWF0RXhjZXB0aW9uIGlmIGJvdGggdmVyc2lvbiBpbmZvcm1hdGlvbiBsb2NhdGlvbnMgY2Fubm90IGJlIHBhcnNlZCBhcwoJICAgICAqIHRoZSB2YWxpZCBlbmNvZGluZyBvZiB2ZXJzaW9uIGluZm9ybWF0aW9uCgkgICAgICovCgkgICAgQml0TWF0cml4UGFyc2VyLnByb3RvdHlwZS5yZWFkVmVyc2lvbiA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgaWYgKHRoaXMucGFyc2VkVmVyc2lvbiAhPT0gbnVsbCAmJiB0aGlzLnBhcnNlZFZlcnNpb24gIT09IHVuZGVmaW5lZCkgewoJICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VkVmVyc2lvbjsKCSAgICAgICAgfQoJICAgICAgICB2YXIgZGltZW5zaW9uID0gdGhpcy5iaXRNYXRyaXguZ2V0SGVpZ2h0KCk7CgkgICAgICAgIHZhciBwcm92aXNpb25hbFZlcnNpb24gPSBNYXRoLmZsb29yKChkaW1lbnNpb24gLSAxNykgLyA0KTsKCSAgICAgICAgaWYgKHByb3Zpc2lvbmFsVmVyc2lvbiA8PSA2KSB7CgkgICAgICAgICAgICByZXR1cm4gVmVyc2lvbl8xJDEuZGVmYXVsdC5nZXRWZXJzaW9uRm9yTnVtYmVyKHByb3Zpc2lvbmFsVmVyc2lvbik7CgkgICAgICAgIH0KCSAgICAgICAgLy8gUmVhZCB0b3AtcmlnaHQgdmVyc2lvbiBpbmZvOiAzIHdpZGUgYnkgNiB0YWxsCgkgICAgICAgIHZhciB2ZXJzaW9uQml0cyA9IDA7CgkgICAgICAgIHZhciBpak1pbiA9IGRpbWVuc2lvbiAtIDExOwoJICAgICAgICBmb3IgKHZhciBqID0gNTsgaiA+PSAwOyBqLS0pIHsKCSAgICAgICAgICAgIGZvciAodmFyIGkgPSBkaW1lbnNpb24gLSA5OyBpID49IGlqTWluOyBpLS0pIHsKCSAgICAgICAgICAgICAgICB2ZXJzaW9uQml0cyA9IHRoaXMuY29weUJpdChpLCBqLCB2ZXJzaW9uQml0cyk7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgdmFyIHRoZVBhcnNlZFZlcnNpb24gPSBWZXJzaW9uXzEkMS5kZWZhdWx0LmRlY29kZVZlcnNpb25JbmZvcm1hdGlvbih2ZXJzaW9uQml0cyk7CgkgICAgICAgIGlmICh0aGVQYXJzZWRWZXJzaW9uICE9PSBudWxsICYmIHRoZVBhcnNlZFZlcnNpb24uZ2V0RGltZW5zaW9uRm9yVmVyc2lvbigpID09PSBkaW1lbnNpb24pIHsKCSAgICAgICAgICAgIHRoaXMucGFyc2VkVmVyc2lvbiA9IHRoZVBhcnNlZFZlcnNpb247CgkgICAgICAgICAgICByZXR1cm4gdGhlUGFyc2VkVmVyc2lvbjsKCSAgICAgICAgfQoJICAgICAgICAvLyBIbW0sIGZhaWxlZC4gVHJ5IGJvdHRvbSBsZWZ0OiA2IHdpZGUgYnkgMyB0YWxsCgkgICAgICAgIHZlcnNpb25CaXRzID0gMDsKCSAgICAgICAgZm9yICh2YXIgaSA9IDU7IGkgPj0gMDsgaS0tKSB7CgkgICAgICAgICAgICBmb3IgKHZhciBqID0gZGltZW5zaW9uIC0gOTsgaiA+PSBpak1pbjsgai0tKSB7CgkgICAgICAgICAgICAgICAgdmVyc2lvbkJpdHMgPSB0aGlzLmNvcHlCaXQoaSwgaiwgdmVyc2lvbkJpdHMpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHRoZVBhcnNlZFZlcnNpb24gPSBWZXJzaW9uXzEkMS5kZWZhdWx0LmRlY29kZVZlcnNpb25JbmZvcm1hdGlvbih2ZXJzaW9uQml0cyk7CgkgICAgICAgIGlmICh0aGVQYXJzZWRWZXJzaW9uICE9PSBudWxsICYmIHRoZVBhcnNlZFZlcnNpb24uZ2V0RGltZW5zaW9uRm9yVmVyc2lvbigpID09PSBkaW1lbnNpb24pIHsKCSAgICAgICAgICAgIHRoaXMucGFyc2VkVmVyc2lvbiA9IHRoZVBhcnNlZFZlcnNpb247CgkgICAgICAgICAgICByZXR1cm4gdGhlUGFyc2VkVmVyc2lvbjsKCSAgICAgICAgfQoJICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgIH07CgkgICAgQml0TWF0cml4UGFyc2VyLnByb3RvdHlwZS5jb3B5Qml0ID0gZnVuY3Rpb24gKGkgLyppbnQqLywgaiAvKmludCovLCB2ZXJzaW9uQml0cyAvKmludCovKSB7CgkgICAgICAgIHZhciBiaXQgPSB0aGlzLmlzTWlycm9yID8gdGhpcy5iaXRNYXRyaXguZ2V0KGosIGkpIDogdGhpcy5iaXRNYXRyaXguZ2V0KGksIGopOwoJICAgICAgICByZXR1cm4gYml0ID8gKHZlcnNpb25CaXRzIDw8IDEpIHwgMHgxIDogdmVyc2lvbkJpdHMgPDwgMTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIDxwPlJlYWRzIHRoZSBiaXRzIGluIHRoZSB7QGxpbmsgQml0TWF0cml4fSByZXByZXNlbnRpbmcgdGhlIGZpbmRlciBwYXR0ZXJuIGluIHRoZQoJICAgICAqIGNvcnJlY3Qgb3JkZXIgaW4gb3JkZXIgdG8gcmVjb25zdHJ1Y3QgdGhlIGNvZGV3b3JkcyBieXRlcyBjb250YWluZWQgd2l0aGluIHRoZQoJICAgICAqIFFSIENvZGUuPC9wPgoJICAgICAqCgkgICAgICogQHJldHVybiBieXRlcyBlbmNvZGVkIHdpdGhpbiB0aGUgUVIgQ29kZQoJICAgICAqIEB0aHJvd3MgRm9ybWF0RXhjZXB0aW9uIGlmIHRoZSBleGFjdCBudW1iZXIgb2YgYnl0ZXMgZXhwZWN0ZWQgaXMgbm90IHJlYWQKCSAgICAgKi8KCSAgICBCaXRNYXRyaXhQYXJzZXIucHJvdG90eXBlLnJlYWRDb2Rld29yZHMgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHZhciBmb3JtYXRJbmZvID0gdGhpcy5yZWFkRm9ybWF0SW5mb3JtYXRpb24oKTsKCSAgICAgICAgdmFyIHZlcnNpb24gPSB0aGlzLnJlYWRWZXJzaW9uKCk7CgkgICAgICAgIC8vIEdldCB0aGUgZGF0YSBtYXNrIGZvciB0aGUgZm9ybWF0IHVzZWQgaW4gdGhpcyBRUiBDb2RlLiBUaGlzIHdpbGwgZXhjbHVkZQoJICAgICAgICAvLyBzb21lIGJpdHMgZnJvbSByZWFkaW5nIGFzIHdlIHdpbmQgdGhyb3VnaCB0aGUgYml0IG1hdHJpeC4KCSAgICAgICAgdmFyIGRhdGFNYXNrID0gRGF0YU1hc2tfMS5kZWZhdWx0LnZhbHVlcy5nZXQoZm9ybWF0SW5mby5nZXREYXRhTWFzaygpKTsKCSAgICAgICAgdmFyIGRpbWVuc2lvbiA9IHRoaXMuYml0TWF0cml4LmdldEhlaWdodCgpOwoJICAgICAgICBkYXRhTWFzay51bm1hc2tCaXRNYXRyaXgodGhpcy5iaXRNYXRyaXgsIGRpbWVuc2lvbik7CgkgICAgICAgIHZhciBmdW5jdGlvblBhdHRlcm4gPSB2ZXJzaW9uLmJ1aWxkRnVuY3Rpb25QYXR0ZXJuKCk7CgkgICAgICAgIHZhciByZWFkaW5nVXAgPSB0cnVlOwoJICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IFVpbnQ4QXJyYXkodmVyc2lvbi5nZXRUb3RhbENvZGV3b3JkcygpKTsKCSAgICAgICAgdmFyIHJlc3VsdE9mZnNldCA9IDA7CgkgICAgICAgIHZhciBjdXJyZW50Qnl0ZSA9IDA7CgkgICAgICAgIHZhciBiaXRzUmVhZCA9IDA7CgkgICAgICAgIC8vIFJlYWQgY29sdW1ucyBpbiBwYWlycywgZnJvbSByaWdodCB0byBsZWZ0CgkgICAgICAgIGZvciAodmFyIGogPSBkaW1lbnNpb24gLSAxOyBqID4gMDsgaiAtPSAyKSB7CgkgICAgICAgICAgICBpZiAoaiA9PT0gNikgewoJICAgICAgICAgICAgICAgIC8vIFNraXAgd2hvbGUgY29sdW1uIHdpdGggdmVydGljYWwgYWxpZ25tZW50IHBhdHRlcm4KCSAgICAgICAgICAgICAgICAvLyBzYXZlcyB0aW1lIGFuZCBtYWtlcyB0aGUgb3RoZXIgY29kZSBwcm9jZWVkIG1vcmUgY2xlYW5seQoJICAgICAgICAgICAgICAgIGotLTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIC8vIFJlYWQgYWx0ZXJuYXRpbmdseSBmcm9tIGJvdHRvbSB0byB0b3AgdGhlbiB0b3AgdG8gYm90dG9tCgkgICAgICAgICAgICBmb3IgKHZhciBjb3VudCA9IDA7IGNvdW50IDwgZGltZW5zaW9uOyBjb3VudCsrKSB7CgkgICAgICAgICAgICAgICAgdmFyIGkgPSByZWFkaW5nVXAgPyBkaW1lbnNpb24gLSAxIC0gY291bnQgOiBjb3VudDsKCSAgICAgICAgICAgICAgICBmb3IgKHZhciBjb2wgPSAwOyBjb2wgPCAyOyBjb2wrKykgewoJICAgICAgICAgICAgICAgICAgICAvLyBJZ25vcmUgYml0cyBjb3ZlcmVkIGJ5IHRoZSBmdW5jdGlvbiBwYXR0ZXJuCgkgICAgICAgICAgICAgICAgICAgIGlmICghZnVuY3Rpb25QYXR0ZXJuLmdldChqIC0gY29sLCBpKSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVhZCBhIGJpdAoJICAgICAgICAgICAgICAgICAgICAgICAgYml0c1JlYWQrKzsKCSAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRCeXRlIDw8PSAxOwoJICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYml0TWF0cml4LmdldChqIC0gY29sLCBpKSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRCeXRlIHw9IDE7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB3ZSd2ZSBtYWRlIGEgd2hvbGUgYnl0ZSwgc2F2ZSBpdCBvZmYKCSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiaXRzUmVhZCA9PT0gOCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFtyZXN1bHRPZmZzZXQrK10gPSAvKihieXRlKSAqLyBjdXJyZW50Qnl0ZTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaXRzUmVhZCA9IDA7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEJ5dGUgPSAwOwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgcmVhZGluZ1VwID0gIXJlYWRpbmdVcDsgLy8gcmVhZGluZ1VwIF49IHRydWU7IC8vIHJlYWRpbmdVcCA9ICFyZWFkaW5nVXA7IC8vIHN3aXRjaCBkaXJlY3Rpb25zCgkgICAgICAgIH0KCSAgICAgICAgaWYgKHJlc3VsdE9mZnNldCAhPT0gdmVyc2lvbi5nZXRUb3RhbENvZGV3b3JkcygpKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiByZXN1bHQ7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBSZXZlcnQgdGhlIG1hc2sgcmVtb3ZhbCBkb25lIHdoaWxlIHJlYWRpbmcgdGhlIGNvZGUgd29yZHMuIFRoZSBiaXQgbWF0cml4IHNob3VsZCByZXZlcnQgdG8gaXRzIG9yaWdpbmFsIHN0YXRlLgoJICAgICAqLwoJICAgIEJpdE1hdHJpeFBhcnNlci5wcm90b3R5cGUucmVtYXNrID0gZnVuY3Rpb24gKCkgewoJICAgICAgICBpZiAodGhpcy5wYXJzZWRGb3JtYXRJbmZvID09PSBudWxsKSB7CgkgICAgICAgICAgICByZXR1cm47IC8vIFdlIGhhdmUgbm8gZm9ybWF0IGluZm9ybWF0aW9uLCBhbmQgaGF2ZSBubyBkYXRhIG1hc2sKCSAgICAgICAgfQoJICAgICAgICB2YXIgZGF0YU1hc2sgPSBEYXRhTWFza18xLmRlZmF1bHQudmFsdWVzW3RoaXMucGFyc2VkRm9ybWF0SW5mby5nZXREYXRhTWFzaygpXTsKCSAgICAgICAgdmFyIGRpbWVuc2lvbiA9IHRoaXMuYml0TWF0cml4LmdldEhlaWdodCgpOwoJICAgICAgICBkYXRhTWFzay51bm1hc2tCaXRNYXRyaXgodGhpcy5iaXRNYXRyaXgsIGRpbWVuc2lvbik7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBQcmVwYXJlIHRoZSBwYXJzZXIgZm9yIGEgbWlycm9yZWQgb3BlcmF0aW9uLgoJICAgICAqIFRoaXMgZmxhZyBoYXMgZWZmZWN0IG9ubHkgb24gdGhlIHtAbGluayAjcmVhZEZvcm1hdEluZm9ybWF0aW9uKCl9IGFuZCB0aGUKCSAgICAgKiB7QGxpbmsgI3JlYWRWZXJzaW9uKCl9LiBCZWZvcmUgcHJvY2VlZGluZyB3aXRoIHtAbGluayAjcmVhZENvZGV3b3JkcygpfSB0aGUKCSAgICAgKiB7QGxpbmsgI21pcnJvcigpfSBtZXRob2Qgc2hvdWxkIGJlIGNhbGxlZC4KCSAgICAgKgoJICAgICAqIEBwYXJhbSBtaXJyb3IgV2hldGhlciB0byByZWFkIHZlcnNpb24gYW5kIGZvcm1hdCBpbmZvcm1hdGlvbiBtaXJyb3JlZC4KCSAgICAgKi8KCSAgICBCaXRNYXRyaXhQYXJzZXIucHJvdG90eXBlLnNldE1pcnJvciA9IGZ1bmN0aW9uIChpc01pcnJvcikgewoJICAgICAgICB0aGlzLnBhcnNlZFZlcnNpb24gPSBudWxsOwoJICAgICAgICB0aGlzLnBhcnNlZEZvcm1hdEluZm8gPSBudWxsOwoJICAgICAgICB0aGlzLmlzTWlycm9yID0gaXNNaXJyb3I7CgkgICAgfTsKCSAgICAvKiogTWlycm9yIHRoZSBiaXQgbWF0cml4IGluIG9yZGVyIHRvIGF0dGVtcHQgYSBzZWNvbmQgcmVhZGluZy4gKi8KCSAgICBCaXRNYXRyaXhQYXJzZXIucHJvdG90eXBlLm1pcnJvciA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgdmFyIGJpdE1hdHJpeCA9IHRoaXMuYml0TWF0cml4OwoJICAgICAgICBmb3IgKHZhciB4ID0gMCwgd2lkdGggPSBiaXRNYXRyaXguZ2V0V2lkdGgoKTsgeCA8IHdpZHRoOyB4KyspIHsKCSAgICAgICAgICAgIGZvciAodmFyIHkgPSB4ICsgMSwgaGVpZ2h0ID0gYml0TWF0cml4LmdldEhlaWdodCgpOyB5IDwgaGVpZ2h0OyB5KyspIHsKCSAgICAgICAgICAgICAgICBpZiAoYml0TWF0cml4LmdldCh4LCB5KSAhPT0gYml0TWF0cml4LmdldCh5LCB4KSkgewoJICAgICAgICAgICAgICAgICAgICBiaXRNYXRyaXguZmxpcCh5LCB4KTsKCSAgICAgICAgICAgICAgICAgICAgYml0TWF0cml4LmZsaXAoeCwgeSk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgfTsKCSAgICByZXR1cm4gQml0TWF0cml4UGFyc2VyOwoJfSgpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IEJpdE1hdHJpeFBhcnNlcjsKCgl9KTsKCgl2YXIgRGF0YUJsb2NrXzEkMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCS8qCgkgKiBDb3B5cmlnaHQgMjAwNyBaWGluZyBhdXRob3JzCgkgKgoJICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSAqCgkgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJICoKCSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJICovCgl2YXIgX192YWx1ZXMgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX192YWx1ZXMpIHx8IGZ1bmN0aW9uKG8pIHsKCSAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09ICJmdW5jdGlvbiIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDsKCSAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTsKCSAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09ICJudW1iZXIiKSByZXR1cm4gewoJICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7CgkgICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwOwoJICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9OwoJICAgICAgICB9CgkgICAgfTsKCSAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyAiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS4iIDogIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC4iKTsKCX07CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoKCS8qKgoJICogPHA+RW5jYXBzdWxhdGVzIGEgYmxvY2sgb2YgZGF0YSB3aXRoaW4gYSBRUiBDb2RlLiBRUiBDb2RlcyBtYXkgc3BsaXQgdGhlaXIgZGF0YSBpbnRvCgkgKiBtdWx0aXBsZSBibG9ja3MsIGVhY2ggb2Ygd2hpY2ggaXMgYSB1bml0IG9mIGRhdGEgYW5kIGVycm9yLWNvcnJlY3Rpb24gY29kZXdvcmRzLiBFYWNoCgkgKiBpcyByZXByZXNlbnRlZCBieSBhbiBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzLjwvcD4KCSAqCgkgKiBAYXV0aG9yIFNlYW4gT3dlbgoJICovCgl2YXIgRGF0YUJsb2NrID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIGZ1bmN0aW9uIERhdGFCbG9jayhudW1EYXRhQ29kZXdvcmRzIC8qaW50Ki8sIGNvZGV3b3JkcykgewoJICAgICAgICB0aGlzLm51bURhdGFDb2Rld29yZHMgPSBudW1EYXRhQ29kZXdvcmRzOwoJICAgICAgICB0aGlzLmNvZGV3b3JkcyA9IGNvZGV3b3JkczsKCSAgICB9CgkgICAgLyoqCgkgICAgICogPHA+V2hlbiBRUiBDb2RlcyB1c2UgbXVsdGlwbGUgZGF0YSBibG9ja3MsIHRoZXkgYXJlIGFjdHVhbGx5IGludGVybGVhdmVkLgoJICAgICAqIFRoYXQgaXMsIHRoZSBmaXJzdCBieXRlIG9mIGRhdGEgYmxvY2sgMSB0byBuIGlzIHdyaXR0ZW4sIHRoZW4gdGhlIHNlY29uZCBieXRlcywgYW5kIHNvIG9uLiBUaGlzCgkgICAgICogbWV0aG9kIHdpbGwgc2VwYXJhdGUgdGhlIGRhdGEgaW50byBvcmlnaW5hbCBibG9ja3MuPC9wPgoJICAgICAqCgkgICAgICogQHBhcmFtIHJhd0NvZGV3b3JkcyBieXRlcyBhcyByZWFkIGRpcmVjdGx5IGZyb20gdGhlIFFSIENvZGUKCSAgICAgKiBAcGFyYW0gdmVyc2lvbiB2ZXJzaW9uIG9mIHRoZSBRUiBDb2RlCgkgICAgICogQHBhcmFtIGVjTGV2ZWwgZXJyb3ItY29ycmVjdGlvbiBsZXZlbCBvZiB0aGUgUVIgQ29kZQoJICAgICAqIEByZXR1cm4gRGF0YUJsb2NrcyBjb250YWluaW5nIG9yaWdpbmFsIGJ5dGVzLCAiZGUtaW50ZXJsZWF2ZWQiIGZyb20gcmVwcmVzZW50YXRpb24gaW4gdGhlCgkgICAgICogICAgICAgICBRUiBDb2RlCgkgICAgICovCgkgICAgRGF0YUJsb2NrLmdldERhdGFCbG9ja3MgPSBmdW5jdGlvbiAocmF3Q29kZXdvcmRzLCB2ZXJzaW9uLCBlY0xldmVsKSB7CgkgICAgICAgIHZhciBlXzEsIF9hLCBlXzIsIF9iOwoJICAgICAgICBpZiAocmF3Q29kZXdvcmRzLmxlbmd0aCAhPT0gdmVyc2lvbi5nZXRUb3RhbENvZGV3b3JkcygpKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgICAgIC8vIEZpZ3VyZSBvdXQgdGhlIG51bWJlciBhbmQgc2l6ZSBvZiBkYXRhIGJsb2NrcyB1c2VkIGJ5IHRoaXMgdmVyc2lvbiBhbmQKCSAgICAgICAgLy8gZXJyb3IgY29ycmVjdGlvbiBsZXZlbAoJICAgICAgICB2YXIgZWNCbG9ja3MgPSB2ZXJzaW9uLmdldEVDQmxvY2tzRm9yTGV2ZWwoZWNMZXZlbCk7CgkgICAgICAgIC8vIEZpcnN0IGNvdW50IHRoZSB0b3RhbCBudW1iZXIgb2YgZGF0YSBibG9ja3MKCSAgICAgICAgdmFyIHRvdGFsQmxvY2tzID0gMDsKCSAgICAgICAgdmFyIGVjQmxvY2tBcnJheSA9IGVjQmxvY2tzLmdldEVDQmxvY2tzKCk7CgkgICAgICAgIHRyeSB7CgkgICAgICAgICAgICBmb3IgKHZhciBlY0Jsb2NrQXJyYXlfMSA9IF9fdmFsdWVzKGVjQmxvY2tBcnJheSksIGVjQmxvY2tBcnJheV8xXzEgPSBlY0Jsb2NrQXJyYXlfMS5uZXh0KCk7ICFlY0Jsb2NrQXJyYXlfMV8xLmRvbmU7IGVjQmxvY2tBcnJheV8xXzEgPSBlY0Jsb2NrQXJyYXlfMS5uZXh0KCkpIHsKCSAgICAgICAgICAgICAgICB2YXIgZWNCbG9jayA9IGVjQmxvY2tBcnJheV8xXzEudmFsdWU7CgkgICAgICAgICAgICAgICAgdG90YWxCbG9ja3MgKz0gZWNCbG9jay5nZXRDb3VudCgpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9CgkgICAgICAgIGZpbmFsbHkgewoJICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICBpZiAoZWNCbG9ja0FycmF5XzFfMSAmJiAhZWNCbG9ja0FycmF5XzFfMS5kb25lICYmIChfYSA9IGVjQmxvY2tBcnJheV8xLnJldHVybikpIF9hLmNhbGwoZWNCbG9ja0FycmF5XzEpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfQoJICAgICAgICB9CgkgICAgICAgIC8vIE5vdyBlc3RhYmxpc2ggRGF0YUJsb2NrcyBvZiB0aGUgYXBwcm9wcmlhdGUgc2l6ZSBhbmQgbnVtYmVyIG9mIGRhdGEgY29kZXdvcmRzCgkgICAgICAgIHZhciByZXN1bHQgPSBuZXcgQXJyYXkodG90YWxCbG9ja3MpOwoJICAgICAgICB2YXIgbnVtUmVzdWx0QmxvY2tzID0gMDsKCSAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgIGZvciAodmFyIGVjQmxvY2tBcnJheV8yID0gX192YWx1ZXMoZWNCbG9ja0FycmF5KSwgZWNCbG9ja0FycmF5XzJfMSA9IGVjQmxvY2tBcnJheV8yLm5leHQoKTsgIWVjQmxvY2tBcnJheV8yXzEuZG9uZTsgZWNCbG9ja0FycmF5XzJfMSA9IGVjQmxvY2tBcnJheV8yLm5leHQoKSkgewoJICAgICAgICAgICAgICAgIHZhciBlY0Jsb2NrID0gZWNCbG9ja0FycmF5XzJfMS52YWx1ZTsKCSAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVjQmxvY2suZ2V0Q291bnQoKTsgaSsrKSB7CgkgICAgICAgICAgICAgICAgICAgIHZhciBudW1EYXRhQ29kZXdvcmRzID0gZWNCbG9jay5nZXREYXRhQ29kZXdvcmRzKCk7CgkgICAgICAgICAgICAgICAgICAgIHZhciBudW1CbG9ja0NvZGV3b3JkcyA9IGVjQmxvY2tzLmdldEVDQ29kZXdvcmRzUGVyQmxvY2soKSArIG51bURhdGFDb2Rld29yZHM7CgkgICAgICAgICAgICAgICAgICAgIHJlc3VsdFtudW1SZXN1bHRCbG9ja3MrK10gPSBuZXcgRGF0YUJsb2NrKG51bURhdGFDb2Rld29yZHMsIG5ldyBVaW50OEFycmF5KG51bUJsb2NrQ29kZXdvcmRzKSk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGNhdGNoIChlXzJfMSkgeyBlXzIgPSB7IGVycm9yOiBlXzJfMSB9OyB9CgkgICAgICAgIGZpbmFsbHkgewoJICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICBpZiAoZWNCbG9ja0FycmF5XzJfMSAmJiAhZWNCbG9ja0FycmF5XzJfMS5kb25lICYmIChfYiA9IGVjQmxvY2tBcnJheV8yLnJldHVybikpIF9iLmNhbGwoZWNCbG9ja0FycmF5XzIpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzIpIHRocm93IGVfMi5lcnJvcjsgfQoJICAgICAgICB9CgkgICAgICAgIC8vIEFsbCBibG9ja3MgaGF2ZSB0aGUgc2FtZSBhbW91bnQgb2YgZGF0YSwgZXhjZXB0IHRoYXQgdGhlIGxhc3QgbgoJICAgICAgICAvLyAod2hlcmUgbiBtYXkgYmUgMCkgaGF2ZSAxIG1vcmUgYnl0ZS4gRmlndXJlIG91dCB3aGVyZSB0aGVzZSBzdGFydC4KCSAgICAgICAgdmFyIHNob3J0ZXJCbG9ja3NUb3RhbENvZGV3b3JkcyA9IHJlc3VsdFswXS5jb2Rld29yZHMubGVuZ3RoOwoJICAgICAgICB2YXIgbG9uZ2VyQmxvY2tzU3RhcnRBdCA9IHJlc3VsdC5sZW5ndGggLSAxOwoJICAgICAgICAvLyBUWVBFU0NSSVBUUE9SVDogY2hlY2sgbGVuZ3RoIGlzIGNvcnJlY3QgaGVyZQoJICAgICAgICB3aGlsZSAobG9uZ2VyQmxvY2tzU3RhcnRBdCA+PSAwKSB7CgkgICAgICAgICAgICB2YXIgbnVtQ29kZXdvcmRzID0gcmVzdWx0W2xvbmdlckJsb2Nrc1N0YXJ0QXRdLmNvZGV3b3Jkcy5sZW5ndGg7CgkgICAgICAgICAgICBpZiAobnVtQ29kZXdvcmRzID09PSBzaG9ydGVyQmxvY2tzVG90YWxDb2Rld29yZHMpIHsKCSAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGxvbmdlckJsb2Nrc1N0YXJ0QXQtLTsKCSAgICAgICAgfQoJICAgICAgICBsb25nZXJCbG9ja3NTdGFydEF0Kys7CgkgICAgICAgIHZhciBzaG9ydGVyQmxvY2tzTnVtRGF0YUNvZGV3b3JkcyA9IHNob3J0ZXJCbG9ja3NUb3RhbENvZGV3b3JkcyAtIGVjQmxvY2tzLmdldEVDQ29kZXdvcmRzUGVyQmxvY2soKTsKCSAgICAgICAgLy8gVGhlIGxhc3QgZWxlbWVudHMgb2YgcmVzdWx0IG1heSBiZSAxIGVsZW1lbnQgbG9uZ2VyCgkgICAgICAgIC8vIGZpcnN0IGZpbGwgb3V0IGFzIG1hbnkgZWxlbWVudHMgYXMgYWxsIG9mIHRoZW0gaGF2ZQoJICAgICAgICB2YXIgcmF3Q29kZXdvcmRzT2Zmc2V0ID0gMDsKCSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaG9ydGVyQmxvY2tzTnVtRGF0YUNvZGV3b3JkczsgaSsrKSB7CgkgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG51bVJlc3VsdEJsb2NrczsgaisrKSB7CgkgICAgICAgICAgICAgICAgcmVzdWx0W2pdLmNvZGV3b3Jkc1tpXSA9IHJhd0NvZGV3b3Jkc1tyYXdDb2Rld29yZHNPZmZzZXQrK107CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgLy8gRmlsbCBvdXQgdGhlIGxhc3QgZGF0YSBibG9jayBpbiB0aGUgbG9uZ2VyIG9uZXMKCSAgICAgICAgZm9yICh2YXIgaiA9IGxvbmdlckJsb2Nrc1N0YXJ0QXQ7IGogPCBudW1SZXN1bHRCbG9ja3M7IGorKykgewoJICAgICAgICAgICAgcmVzdWx0W2pdLmNvZGV3b3Jkc1tzaG9ydGVyQmxvY2tzTnVtRGF0YUNvZGV3b3Jkc10gPSByYXdDb2Rld29yZHNbcmF3Q29kZXdvcmRzT2Zmc2V0KytdOwoJICAgICAgICB9CgkgICAgICAgIC8vIE5vdyBhZGQgaW4gZXJyb3IgY29ycmVjdGlvbiBibG9ja3MKCSAgICAgICAgdmFyIG1heCA9IHJlc3VsdFswXS5jb2Rld29yZHMubGVuZ3RoOwoJICAgICAgICBmb3IgKHZhciBpID0gc2hvcnRlckJsb2Nrc051bURhdGFDb2Rld29yZHM7IGkgPCBtYXg7IGkrKykgewoJICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBudW1SZXN1bHRCbG9ja3M7IGorKykgewoJICAgICAgICAgICAgICAgIHZhciBpT2Zmc2V0ID0gaiA8IGxvbmdlckJsb2Nrc1N0YXJ0QXQgPyBpIDogaSArIDE7CgkgICAgICAgICAgICAgICAgcmVzdWx0W2pdLmNvZGV3b3Jkc1tpT2Zmc2V0XSA9IHJhd0NvZGV3b3Jkc1tyYXdDb2Rld29yZHNPZmZzZXQrK107CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHJlc3VsdDsKCSAgICB9OwoJICAgIERhdGFCbG9jay5wcm90b3R5cGUuZ2V0TnVtRGF0YUNvZGV3b3JkcyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMubnVtRGF0YUNvZGV3b3JkczsKCSAgICB9OwoJICAgIERhdGFCbG9jay5wcm90b3R5cGUuZ2V0Q29kZXdvcmRzID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5jb2Rld29yZHM7CgkgICAgfTsKCSAgICByZXR1cm4gRGF0YUJsb2NrOwoJfSgpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IERhdGFCbG9jazsKCgl9KTsKCgl2YXIgTW9kZV8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJLyoKCSAqIENvcHlyaWdodCAyMDA3IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CglleHBvcnRzLk1vZGVWYWx1ZXMgPSB2b2lkIDA7CgoJdmFyIE1vZGVWYWx1ZXM7CgkoZnVuY3Rpb24gKE1vZGVWYWx1ZXMpIHsKCSAgICBNb2RlVmFsdWVzW01vZGVWYWx1ZXNbIlRFUk1JTkFUT1IiXSA9IDBdID0gIlRFUk1JTkFUT1IiOwoJICAgIE1vZGVWYWx1ZXNbTW9kZVZhbHVlc1siTlVNRVJJQyJdID0gMV0gPSAiTlVNRVJJQyI7CgkgICAgTW9kZVZhbHVlc1tNb2RlVmFsdWVzWyJBTFBIQU5VTUVSSUMiXSA9IDJdID0gIkFMUEhBTlVNRVJJQyI7CgkgICAgTW9kZVZhbHVlc1tNb2RlVmFsdWVzWyJTVFJVQ1RVUkVEX0FQUEVORCJdID0gM10gPSAiU1RSVUNUVVJFRF9BUFBFTkQiOwoJICAgIE1vZGVWYWx1ZXNbTW9kZVZhbHVlc1siQllURSJdID0gNF0gPSAiQllURSI7CgkgICAgTW9kZVZhbHVlc1tNb2RlVmFsdWVzWyJFQ0kiXSA9IDVdID0gIkVDSSI7CgkgICAgTW9kZVZhbHVlc1tNb2RlVmFsdWVzWyJLQU5KSSJdID0gNl0gPSAiS0FOSkkiOwoJICAgIE1vZGVWYWx1ZXNbTW9kZVZhbHVlc1siRk5DMV9GSVJTVF9QT1NJVElPTiJdID0gN10gPSAiRk5DMV9GSVJTVF9QT1NJVElPTiI7CgkgICAgTW9kZVZhbHVlc1tNb2RlVmFsdWVzWyJGTkMxX1NFQ09ORF9QT1NJVElPTiJdID0gOF0gPSAiRk5DMV9TRUNPTkRfUE9TSVRJT04iOwoJICAgIC8qKiBTZWUgR0JUIDE4Mjg0LTIwMDA7ICJIYW56aSIgaXMgYSB0cmFuc2xpdGVyYXRpb24gb2YgdGhpcyBtb2RlIG5hbWUuICovCgkgICAgTW9kZVZhbHVlc1tNb2RlVmFsdWVzWyJIQU5aSSJdID0gOV0gPSAiSEFOWkkiOwoJfSkoTW9kZVZhbHVlcyA9IGV4cG9ydHMuTW9kZVZhbHVlcyB8fCAoZXhwb3J0cy5Nb2RlVmFsdWVzID0ge30pKTsKCS8qKgoJICogPHA+U2VlIElTTyAxODAwNDoyMDA2LCA2LjQuMSwgVGFibGVzIDIgYW5kIDMuIFRoaXMgZW51bSBlbmNhcHN1bGF0ZXMgdGhlIHZhcmlvdXMgbW9kZXMgaW4gd2hpY2gKCSAqIGRhdGEgY2FuIGJlIGVuY29kZWQgdG8gYml0cyBpbiB0aGUgUVIgY29kZSBzdGFuZGFyZC48L3A+CgkgKgoJICogQGF1dGhvciBTZWFuIE93ZW4KCSAqLwoJdmFyIE1vZGUgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgZnVuY3Rpb24gTW9kZSh2YWx1ZSwgc3RyaW5nVmFsdWUsIGNoYXJhY3RlckNvdW50Qml0c0ZvclZlcnNpb25zLCBiaXRzIC8qaW50Ki8pIHsKCSAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlOwoJICAgICAgICB0aGlzLnN0cmluZ1ZhbHVlID0gc3RyaW5nVmFsdWU7CgkgICAgICAgIHRoaXMuY2hhcmFjdGVyQ291bnRCaXRzRm9yVmVyc2lvbnMgPSBjaGFyYWN0ZXJDb3VudEJpdHNGb3JWZXJzaW9uczsKCSAgICAgICAgdGhpcy5iaXRzID0gYml0czsKCSAgICAgICAgTW9kZS5GT1JfQklUUy5zZXQoYml0cywgdGhpcyk7CgkgICAgICAgIE1vZGUuRk9SX1ZBTFVFLnNldCh2YWx1ZSwgdGhpcyk7CgkgICAgfQoJICAgIC8qKgoJICAgICAqIEBwYXJhbSBiaXRzIGZvdXIgYml0cyBlbmNvZGluZyBhIFFSIENvZGUgZGF0YSBtb2RlCgkgICAgICogQHJldHVybiBNb2RlIGVuY29kZWQgYnkgdGhlc2UgYml0cwoJICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIGJpdHMgZG8gbm90IGNvcnJlc3BvbmQgdG8gYSBrbm93biBtb2RlCgkgICAgICovCgkgICAgTW9kZS5mb3JCaXRzID0gZnVuY3Rpb24gKGJpdHMgLyppbnQqLykgewoJICAgICAgICB2YXIgbW9kZSA9IE1vZGUuRk9SX0JJVFMuZ2V0KGJpdHMpOwoJICAgICAgICBpZiAodW5kZWZpbmVkID09PSBtb2RlKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBtb2RlOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQHBhcmFtIHZlcnNpb24gdmVyc2lvbiBpbiBxdWVzdGlvbgoJICAgICAqIEByZXR1cm4gbnVtYmVyIG9mIGJpdHMgdXNlZCwgaW4gdGhpcyBRUiBDb2RlIHN5bWJvbCB7QGxpbmsgVmVyc2lvbn0sIHRvIGVuY29kZSB0aGUKCSAgICAgKiAgICAgICAgIGNvdW50IG9mIGNoYXJhY3RlcnMgdGhhdCB3aWxsIGZvbGxvdyBlbmNvZGVkIGluIHRoaXMgTW9kZQoJICAgICAqLwoJICAgIE1vZGUucHJvdG90eXBlLmdldENoYXJhY3RlckNvdW50Qml0cyA9IGZ1bmN0aW9uICh2ZXJzaW9uKSB7CgkgICAgICAgIHZhciB2ZXJzaW9uTnVtYmVyID0gdmVyc2lvbi5nZXRWZXJzaW9uTnVtYmVyKCk7CgkgICAgICAgIHZhciBvZmZzZXQ7CgkgICAgICAgIGlmICh2ZXJzaW9uTnVtYmVyIDw9IDkpIHsKCSAgICAgICAgICAgIG9mZnNldCA9IDA7CgkgICAgICAgIH0KCSAgICAgICAgZWxzZSBpZiAodmVyc2lvbk51bWJlciA8PSAyNikgewoJICAgICAgICAgICAgb2Zmc2V0ID0gMTsKCSAgICAgICAgfQoJICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgIG9mZnNldCA9IDI7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHRoaXMuY2hhcmFjdGVyQ291bnRCaXRzRm9yVmVyc2lvbnNbb2Zmc2V0XTsKCSAgICB9OwoJICAgIE1vZGUucHJvdG90eXBlLmdldFZhbHVlID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTsKCSAgICB9OwoJICAgIE1vZGUucHJvdG90eXBlLmdldEJpdHMgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmJpdHM7CgkgICAgfTsKCSAgICBNb2RlLnByb3RvdHlwZS5lcXVhbHMgPSBmdW5jdGlvbiAobykgewoJICAgICAgICBpZiAoIShvIGluc3RhbmNlb2YgTW9kZSkpIHsKCSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgb3RoZXIgPSBvOwoJICAgICAgICByZXR1cm4gdGhpcy52YWx1ZSA9PT0gb3RoZXIudmFsdWU7CgkgICAgfTsKCSAgICBNb2RlLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuc3RyaW5nVmFsdWU7CgkgICAgfTsKCSAgICBNb2RlLkZPUl9CSVRTID0gbmV3IE1hcCgpOwoJICAgIE1vZGUuRk9SX1ZBTFVFID0gbmV3IE1hcCgpOwoJICAgIE1vZGUuVEVSTUlOQVRPUiA9IG5ldyBNb2RlKE1vZGVWYWx1ZXMuVEVSTUlOQVRPUiwgJ1RFUk1JTkFUT1InLCBJbnQzMkFycmF5LmZyb20oWzAsIDAsIDBdKSwgMHgwMCk7IC8vIE5vdCByZWFsbHkgYSBtb2RlLi4uCgkgICAgTW9kZS5OVU1FUklDID0gbmV3IE1vZGUoTW9kZVZhbHVlcy5OVU1FUklDLCAnTlVNRVJJQycsIEludDMyQXJyYXkuZnJvbShbMTAsIDEyLCAxNF0pLCAweDAxKTsKCSAgICBNb2RlLkFMUEhBTlVNRVJJQyA9IG5ldyBNb2RlKE1vZGVWYWx1ZXMuQUxQSEFOVU1FUklDLCAnQUxQSEFOVU1FUklDJywgSW50MzJBcnJheS5mcm9tKFs5LCAxMSwgMTNdKSwgMHgwMik7CgkgICAgTW9kZS5TVFJVQ1RVUkVEX0FQUEVORCA9IG5ldyBNb2RlKE1vZGVWYWx1ZXMuU1RSVUNUVVJFRF9BUFBFTkQsICdTVFJVQ1RVUkVEX0FQUEVORCcsIEludDMyQXJyYXkuZnJvbShbMCwgMCwgMF0pLCAweDAzKTsgLy8gTm90IHN1cHBvcnRlZAoJICAgIE1vZGUuQllURSA9IG5ldyBNb2RlKE1vZGVWYWx1ZXMuQllURSwgJ0JZVEUnLCBJbnQzMkFycmF5LmZyb20oWzgsIDE2LCAxNl0pLCAweDA0KTsKCSAgICBNb2RlLkVDSSA9IG5ldyBNb2RlKE1vZGVWYWx1ZXMuRUNJLCAnRUNJJywgSW50MzJBcnJheS5mcm9tKFswLCAwLCAwXSksIDB4MDcpOyAvLyBjaGFyYWN0ZXIgY291bnRzIGRvbid0IGFwcGx5CgkgICAgTW9kZS5LQU5KSSA9IG5ldyBNb2RlKE1vZGVWYWx1ZXMuS0FOSkksICdLQU5KSScsIEludDMyQXJyYXkuZnJvbShbOCwgMTAsIDEyXSksIDB4MDgpOwoJICAgIE1vZGUuRk5DMV9GSVJTVF9QT1NJVElPTiA9IG5ldyBNb2RlKE1vZGVWYWx1ZXMuRk5DMV9GSVJTVF9QT1NJVElPTiwgJ0ZOQzFfRklSU1RfUE9TSVRJT04nLCBJbnQzMkFycmF5LmZyb20oWzAsIDAsIDBdKSwgMHgwNSk7CgkgICAgTW9kZS5GTkMxX1NFQ09ORF9QT1NJVElPTiA9IG5ldyBNb2RlKE1vZGVWYWx1ZXMuRk5DMV9TRUNPTkRfUE9TSVRJT04sICdGTkMxX1NFQ09ORF9QT1NJVElPTicsIEludDMyQXJyYXkuZnJvbShbMCwgMCwgMF0pLCAweDA5KTsKCSAgICAvKiogU2VlIEdCVCAxODI4NC0yMDAwOyAiSGFuemkiIGlzIGEgdHJhbnNsaXRlcmF0aW9uIG9mIHRoaXMgbW9kZSBuYW1lLiAqLwoJICAgIE1vZGUuSEFOWkkgPSBuZXcgTW9kZShNb2RlVmFsdWVzLkhBTlpJLCAnSEFOWkknLCBJbnQzMkFycmF5LmZyb20oWzgsIDEwLCAxMl0pLCAweDBEKTsKCSAgICByZXR1cm4gTW9kZTsKCX0oKSk7CglleHBvcnRzLmRlZmF1bHQgPSBNb2RlOwoKCX0pOwoKCXZhciBEZWNvZGVkQml0U3RyZWFtUGFyc2VyXzEkMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCS8qCgkgKiBDb3B5cmlnaHQgMjAwNyBaWGluZyBhdXRob3JzCgkgKgoJICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSAqCgkgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJICoKCSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJICovCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJLypuYW1lc3BhY2UgY29tLmdvb2dsZS56eGluZy5xcmNvZGUuZGVjb2RlciB7Ki8KCgoKCgoKCgoJLyppbXBvcnQgamF2YS5pby5VbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uOyovCgkvKmltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OyovCgkvKmltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsqLwoJLyppbXBvcnQgamF2YS51dGlsLkxpc3Q7Ki8KCS8qaW1wb3J0IGphdmEudXRpbC5NYXA7Ki8KCS8qKgoJICogPHA+UVIgQ29kZXMgY2FuIGVuY29kZSB0ZXh0IGFzIGJpdHMgaW4gb25lIG9mIHNldmVyYWwgbW9kZXMsIGFuZCBjYW4gdXNlIG11bHRpcGxlIG1vZGVzCgkgKiBpbiBvbmUgUVIgQ29kZS4gVGhpcyBjbGFzcyBkZWNvZGVzIHRoZSBiaXRzIGJhY2sgaW50byB0ZXh0LjwvcD4KCSAqCgkgKiA8cD5TZWUgSVNPIDE4MDA0OjIwMDYsIDYuNC4zIC0gNi40Ljc8L3A+CgkgKgoJICogQGF1dGhvciBTZWFuIE93ZW4KCSAqLwoJdmFyIERlY29kZWRCaXRTdHJlYW1QYXJzZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgZnVuY3Rpb24gRGVjb2RlZEJpdFN0cmVhbVBhcnNlcigpIHsKCSAgICB9CgkgICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5kZWNvZGUgPSBmdW5jdGlvbiAoYnl0ZXMsIHZlcnNpb24sIGVjTGV2ZWwsIGhpbnRzKSB7CgkgICAgICAgIHZhciBiaXRzID0gbmV3IEJpdFNvdXJjZV8xLmRlZmF1bHQoYnl0ZXMpOwoJICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1aWxkZXJfMS5kZWZhdWx0KCk7CgkgICAgICAgIHZhciBieXRlU2VnbWVudHMgPSBuZXcgQXJyYXkoKTsgLy8gMQoJICAgICAgICAvLyBUWVBFU0NSSVBUUE9SVDogSSBkbyBub3QgdXNlIGNvbnN0cnVjdG9yIHdpdGggc2l6ZSAxIGFzIGluIG9yaWdpbmFsIEphdmEgbWVhbnMgY2FwYWNpdHkgYW5kIHRoZSBhcnJheSBsZW5ndGggaXMgY2hlY2tlZCBiZWxvdwoJICAgICAgICB2YXIgc3ltYm9sU2VxdWVuY2UgPSAtMTsKCSAgICAgICAgdmFyIHBhcml0eURhdGEgPSAtMTsKCSAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgIHZhciBjdXJyZW50Q2hhcmFjdGVyU2V0RUNJID0gbnVsbDsKCSAgICAgICAgICAgIHZhciBmYzFJbkVmZmVjdCA9IGZhbHNlOwoJICAgICAgICAgICAgdmFyIG1vZGUgPSB2b2lkIDA7CgkgICAgICAgICAgICBkbyB7CgkgICAgICAgICAgICAgICAgLy8gV2hpbGUgc3RpbGwgYW5vdGhlciBzZWdtZW50IHRvIHJlYWQuLi4KCSAgICAgICAgICAgICAgICBpZiAoYml0cy5hdmFpbGFibGUoKSA8IDQpIHsKCSAgICAgICAgICAgICAgICAgICAgLy8gT0ssIGFzc3VtZSB3ZSdyZSBkb25lLiBSZWFsbHksIGEgVEVSTUlOQVRPUiBtb2RlIHNob3VsZCBoYXZlIGJlZW4gcmVjb3JkZWQgaGVyZQoJICAgICAgICAgICAgICAgICAgICBtb2RlID0gTW9kZV8xLmRlZmF1bHQuVEVSTUlOQVRPUjsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgICAgIHZhciBtb2RlQml0cyA9IGJpdHMucmVhZEJpdHMoNCk7CgkgICAgICAgICAgICAgICAgICAgIG1vZGUgPSBNb2RlXzEuZGVmYXVsdC5mb3JCaXRzKG1vZGVCaXRzKTsgLy8gbW9kZSBpcyBlbmNvZGVkIGJ5IDQgYml0cwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBzd2l0Y2ggKG1vZGUpIHsKCSAgICAgICAgICAgICAgICAgICAgY2FzZSBNb2RlXzEuZGVmYXVsdC5URVJNSU5BVE9SOgoJICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgICAgIGNhc2UgTW9kZV8xLmRlZmF1bHQuRk5DMV9GSVJTVF9QT1NJVElPTjoKCSAgICAgICAgICAgICAgICAgICAgY2FzZSBNb2RlXzEuZGVmYXVsdC5GTkMxX1NFQ09ORF9QT1NJVElPTjoKCSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGRvIGxpdHRsZSB3aXRoIEZOQzEgZXhjZXB0IGFsdGVyIHRoZSBwYXJzZWQgcmVzdWx0IGEgYml0IGFjY29yZGluZyB0byB0aGUgc3BlYwoJICAgICAgICAgICAgICAgICAgICAgICAgZmMxSW5FZmZlY3QgPSB0cnVlOwoJICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgICAgIGNhc2UgTW9kZV8xLmRlZmF1bHQuU1RSVUNUVVJFRF9BUFBFTkQ6CgkgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYml0cy5hdmFpbGFibGUoKSA8IDE2KSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNlcXVlbmNlIG51bWJlciBhbmQgcGFyaXR5IGlzIGFkZGVkIGxhdGVyIHRvIHRoZSByZXN1bHQgbWV0YWRhdGEKCSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlYWQgbmV4dCA4IGJpdHMgKHN5bWJvbCBzZXF1ZW5jZSAjKSBhbmQgOCBiaXRzIChkYXRhOiBwYXJpdHkpLCB0aGVuIGNvbnRpbnVlCgkgICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2xTZXF1ZW5jZSA9IGJpdHMucmVhZEJpdHMoOCk7CgkgICAgICAgICAgICAgICAgICAgICAgICBwYXJpdHlEYXRhID0gYml0cy5yZWFkQml0cyg4KTsKCSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgICAgICBjYXNlIE1vZGVfMS5kZWZhdWx0LkVDSToKCSAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvdW50IGRvZXNuJ3QgYXBwbHkgdG8gRUNJCgkgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLnBhcnNlRUNJVmFsdWUoYml0cyk7CgkgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q2hhcmFjdGVyU2V0RUNJID0gQ2hhcmFjdGVyU2V0RUNJXzEuZGVmYXVsdC5nZXRDaGFyYWN0ZXJTZXRFQ0lCeVZhbHVlKHZhbHVlKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Q2hhcmFjdGVyU2V0RUNJID09PSBudWxsKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgICAgICBjYXNlIE1vZGVfMS5kZWZhdWx0LkhBTlpJOgoJICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmlyc3QgaGFuZGxlIEhhbnppIG1vZGUgd2hpY2ggZG9lcyBub3Qgc3RhcnQgd2l0aCBjaGFyYWN0ZXIgY291bnQKCSAgICAgICAgICAgICAgICAgICAgICAgIC8vIENoaW5lc2UgbW9kZSBjb250YWlucyBhIHN1YiBzZXQgaW5kaWNhdG9yIHJpZ2h0IGFmdGVyIG1vZGUgaW5kaWNhdG9yCgkgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3Vic2V0ID0gYml0cy5yZWFkQml0cyg0KTsKCSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb3VudEhhbnppID0gYml0cy5yZWFkQml0cyhtb2RlLmdldENoYXJhY3RlckNvdW50Qml0cyh2ZXJzaW9uKSk7CgkgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3Vic2V0ID09PSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLkdCMjMxMl9TVUJTRVQpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLmRlY29kZUhhbnppU2VnbWVudChiaXRzLCByZXN1bHQsIGNvdW50SGFuemkpOwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CgkgICAgICAgICAgICAgICAgICAgICAgICAvLyAiTm9ybWFsIiBRUiBjb2RlIG1vZGVzOgoJICAgICAgICAgICAgICAgICAgICAgICAgLy8gSG93IG1hbnkgY2hhcmFjdGVycyB3aWxsIGZvbGxvdywgZW5jb2RlZCBpbiB0aGlzIG1vZGU/CgkgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY291bnQgPSBiaXRzLnJlYWRCaXRzKG1vZGUuZ2V0Q2hhcmFjdGVyQ291bnRCaXRzKHZlcnNpb24pKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobW9kZSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgTW9kZV8xLmRlZmF1bHQuTlVNRVJJQzoKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5kZWNvZGVOdW1lcmljU2VnbWVudChiaXRzLCByZXN1bHQsIGNvdW50KTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBNb2RlXzEuZGVmYXVsdC5BTFBIQU5VTUVSSUM6CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuZGVjb2RlQWxwaGFudW1lcmljU2VnbWVudChiaXRzLCByZXN1bHQsIGNvdW50LCBmYzFJbkVmZmVjdCk7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgTW9kZV8xLmRlZmF1bHQuQllURToKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5kZWNvZGVCeXRlU2VnbWVudChiaXRzLCByZXN1bHQsIGNvdW50LCBjdXJyZW50Q2hhcmFjdGVyU2V0RUNJLCBieXRlU2VnbWVudHMsIGhpbnRzKTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBNb2RlXzEuZGVmYXVsdC5LQU5KSToKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5kZWNvZGVLYW5qaVNlZ21lbnQoYml0cywgcmVzdWx0LCBjb3VudCk7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9IHdoaWxlIChtb2RlICE9PSBNb2RlXzEuZGVmYXVsdC5URVJNSU5BVE9SKTsKCSAgICAgICAgfQoJICAgICAgICBjYXRjaCAoaWFlIC8qOiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24qLykgewoJICAgICAgICAgICAgLy8gZnJvbSByZWFkQml0cygpIGNhbGxzCgkgICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBuZXcgRGVjb2RlclJlc3VsdF8xLmRlZmF1bHQoYnl0ZXMsIHJlc3VsdC50b1N0cmluZygpLCBieXRlU2VnbWVudHMubGVuZ3RoID09PSAwID8gbnVsbCA6IGJ5dGVTZWdtZW50cywgZWNMZXZlbCA9PT0gbnVsbCA/IG51bGwgOiBlY0xldmVsLnRvU3RyaW5nKCksIHN5bWJvbFNlcXVlbmNlLCBwYXJpdHlEYXRhKTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIFNlZSBzcGVjaWZpY2F0aW9uIEdCVCAxODI4NC0yMDAwCgkgICAgICovCgkgICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5kZWNvZGVIYW56aVNlZ21lbnQgPSBmdW5jdGlvbiAoYml0cywgcmVzdWx0LCBjb3VudCAvKmludCovKSB7CgkgICAgICAgIC8vIERvbid0IGNyYXNoIHRyeWluZyB0byByZWFkIG1vcmUgYml0cyB0aGFuIHdlIGhhdmUgYXZhaWxhYmxlLgoJICAgICAgICBpZiAoY291bnQgKiAxMyA+IGJpdHMuYXZhaWxhYmxlKCkpIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgIH0KCSAgICAgICAgLy8gRWFjaCBjaGFyYWN0ZXIgd2lsbCByZXF1aXJlIDIgYnl0ZXMuIFJlYWQgdGhlIGNoYXJhY3RlcnMgYXMgMi1ieXRlIHBhaXJzCgkgICAgICAgIC8vIGFuZCBkZWNvZGUgYXMgR0IyMzEyIGFmdGVyd2FyZHMKCSAgICAgICAgdmFyIGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KDIgKiBjb3VudCk7CgkgICAgICAgIHZhciBvZmZzZXQgPSAwOwoJICAgICAgICB3aGlsZSAoY291bnQgPiAwKSB7CgkgICAgICAgICAgICAvLyBFYWNoIDEzIGJpdHMgZW5jb2RlcyBhIDItYnl0ZSBjaGFyYWN0ZXIKCSAgICAgICAgICAgIHZhciB0d29CeXRlcyA9IGJpdHMucmVhZEJpdHMoMTMpOwoJICAgICAgICAgICAgdmFyIGFzc2VtYmxlZFR3b0J5dGVzID0gKCgodHdvQnl0ZXMgLyAweDA2MCkgPDwgOCkgJiAweEZGRkZGRkZGKSB8ICh0d29CeXRlcyAlIDB4MDYwKTsKCSAgICAgICAgICAgIGlmIChhc3NlbWJsZWRUd29CeXRlcyA8IDB4MDAzQkYpIHsKCSAgICAgICAgICAgICAgICAvLyBJbiB0aGUgMHhBMUExIHRvIDB4QUFGRSByYW5nZQoJICAgICAgICAgICAgICAgIGFzc2VtYmxlZFR3b0J5dGVzICs9IDB4MEExQTE7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICAvLyBJbiB0aGUgMHhCMEExIHRvIDB4RkFGRSByYW5nZQoJICAgICAgICAgICAgICAgIGFzc2VtYmxlZFR3b0J5dGVzICs9IDB4MEE2QTE7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBidWZmZXJbb2Zmc2V0XSA9IC8qKGJ5dGUpICovICgoYXNzZW1ibGVkVHdvQnl0ZXMgPj4gOCkgJiAweEZGKTsKCSAgICAgICAgICAgIGJ1ZmZlcltvZmZzZXQgKyAxXSA9IC8qKGJ5dGUpICovIChhc3NlbWJsZWRUd29CeXRlcyAmIDB4RkYpOwoJICAgICAgICAgICAgb2Zmc2V0ICs9IDI7CgkgICAgICAgICAgICBjb3VudC0tOwoJICAgICAgICB9CgkgICAgICAgIHRyeSB7CgkgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZ0VuY29kaW5nXzEuZGVmYXVsdC5kZWNvZGUoYnVmZmVyLCBTdHJpbmdVdGlsc18xLmRlZmF1bHQuR0IyMzEyKSk7CgkgICAgICAgICAgICAvLyBUWVBFU0NSSVBUUE9SVDogVE9ETzogaW1wbGVtZW50IEdCMjMxMiBkZWNvZGUuIFN0cmluZ1ZpZXcgZnJvbSBNRE4gY291bGQgYmUgYSBzdGFydGluZyBwb2ludAoJICAgICAgICB9CgkgICAgICAgIGNhdGNoIChpZ25vcmVkIC8qOiBVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uKi8pIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KGlnbm9yZWQpOwoJICAgICAgICB9CgkgICAgfTsKCSAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLmRlY29kZUthbmppU2VnbWVudCA9IGZ1bmN0aW9uIChiaXRzLCByZXN1bHQsIGNvdW50IC8qaW50Ki8pIHsKCSAgICAgICAgLy8gRG9uJ3QgY3Jhc2ggdHJ5aW5nIHRvIHJlYWQgbW9yZSBiaXRzIHRoYW4gd2UgaGF2ZSBhdmFpbGFibGUuCgkgICAgICAgIGlmIChjb3VudCAqIDEzID4gYml0cy5hdmFpbGFibGUoKSkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgfQoJICAgICAgICAvLyBFYWNoIGNoYXJhY3RlciB3aWxsIHJlcXVpcmUgMiBieXRlcy4gUmVhZCB0aGUgY2hhcmFjdGVycyBhcyAyLWJ5dGUgcGFpcnMKCSAgICAgICAgLy8gYW5kIGRlY29kZSBhcyBTaGlmdF9KSVMgYWZ0ZXJ3YXJkcwoJICAgICAgICB2YXIgYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkoMiAqIGNvdW50KTsKCSAgICAgICAgdmFyIG9mZnNldCA9IDA7CgkgICAgICAgIHdoaWxlIChjb3VudCA+IDApIHsKCSAgICAgICAgICAgIC8vIEVhY2ggMTMgYml0cyBlbmNvZGVzIGEgMi1ieXRlIGNoYXJhY3RlcgoJICAgICAgICAgICAgdmFyIHR3b0J5dGVzID0gYml0cy5yZWFkQml0cygxMyk7CgkgICAgICAgICAgICB2YXIgYXNzZW1ibGVkVHdvQnl0ZXMgPSAoKCh0d29CeXRlcyAvIDB4MEMwKSA8PCA4KSAmIDB4RkZGRkZGRkYpIHwgKHR3b0J5dGVzICUgMHgwQzApOwoJICAgICAgICAgICAgaWYgKGFzc2VtYmxlZFR3b0J5dGVzIDwgMHgwMUYwMCkgewoJICAgICAgICAgICAgICAgIC8vIEluIHRoZSAweDgxNDAgdG8gMHg5RkZDIHJhbmdlCgkgICAgICAgICAgICAgICAgYXNzZW1ibGVkVHdvQnl0ZXMgKz0gMHgwODE0MDsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgIC8vIEluIHRoZSAweEUwNDAgdG8gMHhFQkJGIHJhbmdlCgkgICAgICAgICAgICAgICAgYXNzZW1ibGVkVHdvQnl0ZXMgKz0gMHgwQzE0MDsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGJ1ZmZlcltvZmZzZXRdID0gLyooYnl0ZSkgKi8gKGFzc2VtYmxlZFR3b0J5dGVzID4+IDgpOwoJICAgICAgICAgICAgYnVmZmVyW29mZnNldCArIDFdID0gLyooYnl0ZSkgKi8gYXNzZW1ibGVkVHdvQnl0ZXM7CgkgICAgICAgICAgICBvZmZzZXQgKz0gMjsKCSAgICAgICAgICAgIGNvdW50LS07CgkgICAgICAgIH0KCSAgICAgICAgLy8gU2hpZnRfSklTIG1heSBub3QgYmUgc3VwcG9ydGVkIGluIHNvbWUgZW52aXJvbm1lbnRzOgoJICAgICAgICB0cnkgewoJICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmdFbmNvZGluZ18xLmRlZmF1bHQuZGVjb2RlKGJ1ZmZlciwgU3RyaW5nVXRpbHNfMS5kZWZhdWx0LlNISUZUX0pJUykpOwoJICAgICAgICAgICAgLy8gVFlQRVNDUklQVFBPUlQ6IFRPRE86IGltcGxlbWVudCBTSElGVF9KSVMgZGVjb2RlLiBTdHJpbmdWaWV3IGZyb20gTUROIGNvdWxkIGJlIGEgc3RhcnRpbmcgcG9pbnQKCSAgICAgICAgfQoJICAgICAgICBjYXRjaCAoaWdub3JlZCAvKjogVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiovKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdChpZ25vcmVkKTsKCSAgICAgICAgfQoJICAgIH07CgkgICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5kZWNvZGVCeXRlU2VnbWVudCA9IGZ1bmN0aW9uIChiaXRzLCByZXN1bHQsIGNvdW50IC8qaW50Ki8sIGN1cnJlbnRDaGFyYWN0ZXJTZXRFQ0ksIGJ5dGVTZWdtZW50cywgaGludHMpIHsKCSAgICAgICAgLy8gRG9uJ3QgY3Jhc2ggdHJ5aW5nIHRvIHJlYWQgbW9yZSBiaXRzIHRoYW4gd2UgaGF2ZSBhdmFpbGFibGUuCgkgICAgICAgIGlmICg4ICogY291bnQgPiBiaXRzLmF2YWlsYWJsZSgpKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgICAgIHZhciByZWFkQnl0ZXMgPSBuZXcgVWludDhBcnJheShjb3VudCk7CgkgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewoJICAgICAgICAgICAgcmVhZEJ5dGVzW2ldID0gLyooYnl0ZSkgKi8gYml0cy5yZWFkQml0cyg4KTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgZW5jb2Rpbmc7CgkgICAgICAgIGlmIChjdXJyZW50Q2hhcmFjdGVyU2V0RUNJID09PSBudWxsKSB7CgkgICAgICAgICAgICAvLyBUaGUgc3BlYyBpc24ndCBjbGVhciBvbiB0aGlzIG1vZGU7IHNlZQoJICAgICAgICAgICAgLy8gc2VjdGlvbiA2LjQuNTogdCBkb2VzIG5vdCBzYXkgd2hpY2ggZW5jb2RpbmcgdG8gYXNzdW1pbmcKCSAgICAgICAgICAgIC8vIHVwb24gZGVjb2RpbmcuIEkgaGF2ZSBzZWVuIElTTy04ODU5LTEgdXNlZCBhcyB3ZWxsIGFzCgkgICAgICAgICAgICAvLyBTaGlmdF9KSVMgLS0gd2l0aG91dCBhbnl0aGluZyBsaWtlIGFuIEVDSSBkZXNpZ25hdG9yIHRvCgkgICAgICAgICAgICAvLyBnaXZlIGEgaGludC4KCSAgICAgICAgICAgIGVuY29kaW5nID0gU3RyaW5nVXRpbHNfMS5kZWZhdWx0Lmd1ZXNzRW5jb2RpbmcocmVhZEJ5dGVzLCBoaW50cyk7CgkgICAgICAgIH0KCSAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICBlbmNvZGluZyA9IGN1cnJlbnRDaGFyYWN0ZXJTZXRFQ0kuZ2V0TmFtZSgpOwoJICAgICAgICB9CgkgICAgICAgIHRyeSB7CgkgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZ0VuY29kaW5nXzEuZGVmYXVsdC5kZWNvZGUocmVhZEJ5dGVzLCBlbmNvZGluZykpOwoJICAgICAgICB9CgkgICAgICAgIGNhdGNoIChpZ25vcmVkIC8qOiBVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uKi8pIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KGlnbm9yZWQpOwoJICAgICAgICB9CgkgICAgICAgIGJ5dGVTZWdtZW50cy5wdXNoKHJlYWRCeXRlcyk7CgkgICAgfTsKCSAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLnRvQWxwaGFOdW1lcmljQ2hhciA9IGZ1bmN0aW9uICh2YWx1ZSAvKmludCovKSB7CgkgICAgICAgIGlmICh2YWx1ZSA+PSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLkFMUEhBTlVNRVJJQ19DSEFSUy5sZW5ndGgpIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuQUxQSEFOVU1FUklDX0NIQVJTW3ZhbHVlXTsKCSAgICB9OwoJICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuZGVjb2RlQWxwaGFudW1lcmljU2VnbWVudCA9IGZ1bmN0aW9uIChiaXRzLCByZXN1bHQsIGNvdW50IC8qaW50Ki8sIGZjMUluRWZmZWN0KSB7CgkgICAgICAgIC8vIFJlYWQgdHdvIGNoYXJhY3RlcnMgYXQgYSB0aW1lCgkgICAgICAgIHZhciBzdGFydCA9IHJlc3VsdC5sZW5ndGgoKTsKCSAgICAgICAgd2hpbGUgKGNvdW50ID4gMSkgewoJICAgICAgICAgICAgaWYgKGJpdHMuYXZhaWxhYmxlKCkgPCAxMSkgewoJICAgICAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICB2YXIgbmV4dFR3b0NoYXJzQml0cyA9IGJpdHMucmVhZEJpdHMoMTEpOwoJICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChEZWNvZGVkQml0U3RyZWFtUGFyc2VyLnRvQWxwaGFOdW1lcmljQ2hhcihNYXRoLmZsb29yKG5leHRUd29DaGFyc0JpdHMgLyA0NSkpKTsKCSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoRGVjb2RlZEJpdFN0cmVhbVBhcnNlci50b0FscGhhTnVtZXJpY0NoYXIobmV4dFR3b0NoYXJzQml0cyAlIDQ1KSk7CgkgICAgICAgICAgICBjb3VudCAtPSAyOwoJICAgICAgICB9CgkgICAgICAgIGlmIChjb3VudCA9PT0gMSkgewoJICAgICAgICAgICAgLy8gc3BlY2lhbCBjYXNlOiBvbmUgY2hhcmFjdGVyIGxlZnQKCSAgICAgICAgICAgIGlmIChiaXRzLmF2YWlsYWJsZSgpIDwgNikgewoJICAgICAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICByZXN1bHQuYXBwZW5kKERlY29kZWRCaXRTdHJlYW1QYXJzZXIudG9BbHBoYU51bWVyaWNDaGFyKGJpdHMucmVhZEJpdHMoNikpKTsKCSAgICAgICAgfQoJICAgICAgICAvLyBTZWUgc2VjdGlvbiA2LjQuOC4xLCA2LjQuOC4yCgkgICAgICAgIGlmIChmYzFJbkVmZmVjdCkgewoJICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBtYXNzYWdlIHRoZSByZXN1bHQgYSBiaXQgaWYgaW4gYW4gRk5DMSBtb2RlOgoJICAgICAgICAgICAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgcmVzdWx0Lmxlbmd0aCgpOyBpKyspIHsKCSAgICAgICAgICAgICAgICBpZiAocmVzdWx0LmNoYXJBdChpKSA9PT0gJyUnKSB7CgkgICAgICAgICAgICAgICAgICAgIGlmIChpIDwgcmVzdWx0Lmxlbmd0aCgpIC0gMSAmJiByZXN1bHQuY2hhckF0KGkgKyAxKSA9PT0gJyUnKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAvLyAlJSBpcyByZW5kZXJlZCBhcyAlCgkgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuZGVsZXRlQ2hhckF0KGkgKyAxKTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluIGFscGhhIG1vZGUsICUgc2hvdWxkIGJlIGNvbnZlcnRlZCB0byBGTkMxIHNlcGFyYXRvciAweDFECgkgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuc2V0Q2hhckF0KGksIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgxRCkpOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgfTsKCSAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLmRlY29kZU51bWVyaWNTZWdtZW50ID0gZnVuY3Rpb24gKGJpdHMsIHJlc3VsdCwgY291bnQgLyppbnQqLykgewoJICAgICAgICAvLyBSZWFkIHRocmVlIGRpZ2l0cyBhdCBhIHRpbWUKCSAgICAgICAgd2hpbGUgKGNvdW50ID49IDMpIHsKCSAgICAgICAgICAgIC8vIEVhY2ggMTAgYml0cyBlbmNvZGVzIHRocmVlIGRpZ2l0cwoJICAgICAgICAgICAgaWYgKGJpdHMuYXZhaWxhYmxlKCkgPCAxMCkgewoJICAgICAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICB2YXIgdGhyZWVEaWdpdHNCaXRzID0gYml0cy5yZWFkQml0cygxMCk7CgkgICAgICAgICAgICBpZiAodGhyZWVEaWdpdHNCaXRzID49IDEwMDApIHsKCSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChEZWNvZGVkQml0U3RyZWFtUGFyc2VyLnRvQWxwaGFOdW1lcmljQ2hhcihNYXRoLmZsb29yKHRocmVlRGlnaXRzQml0cyAvIDEwMCkpKTsKCSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoRGVjb2RlZEJpdFN0cmVhbVBhcnNlci50b0FscGhhTnVtZXJpY0NoYXIoTWF0aC5mbG9vcih0aHJlZURpZ2l0c0JpdHMgLyAxMCkgJSAxMCkpOwoJICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChEZWNvZGVkQml0U3RyZWFtUGFyc2VyLnRvQWxwaGFOdW1lcmljQ2hhcih0aHJlZURpZ2l0c0JpdHMgJSAxMCkpOwoJICAgICAgICAgICAgY291bnQgLT0gMzsKCSAgICAgICAgfQoJICAgICAgICBpZiAoY291bnQgPT09IDIpIHsKCSAgICAgICAgICAgIC8vIFR3byBkaWdpdHMgbGVmdCBvdmVyIHRvIHJlYWQsIGVuY29kZWQgaW4gNyBiaXRzCgkgICAgICAgICAgICBpZiAoYml0cy5hdmFpbGFibGUoKSA8IDcpIHsKCSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgdmFyIHR3b0RpZ2l0c0JpdHMgPSBiaXRzLnJlYWRCaXRzKDcpOwoJICAgICAgICAgICAgaWYgKHR3b0RpZ2l0c0JpdHMgPj0gMTAwKSB7CgkgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoRGVjb2RlZEJpdFN0cmVhbVBhcnNlci50b0FscGhhTnVtZXJpY0NoYXIoTWF0aC5mbG9vcih0d29EaWdpdHNCaXRzIC8gMTApKSk7CgkgICAgICAgICAgICByZXN1bHQuYXBwZW5kKERlY29kZWRCaXRTdHJlYW1QYXJzZXIudG9BbHBoYU51bWVyaWNDaGFyKHR3b0RpZ2l0c0JpdHMgJSAxMCkpOwoJICAgICAgICB9CgkgICAgICAgIGVsc2UgaWYgKGNvdW50ID09PSAxKSB7CgkgICAgICAgICAgICAvLyBPbmUgZGlnaXQgbGVmdCBvdmVyIHRvIHJlYWQKCSAgICAgICAgICAgIGlmIChiaXRzLmF2YWlsYWJsZSgpIDwgNCkgewoJICAgICAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICB2YXIgZGlnaXRCaXRzID0gYml0cy5yZWFkQml0cyg0KTsKCSAgICAgICAgICAgIGlmIChkaWdpdEJpdHMgPj0gMTApIHsKCSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChEZWNvZGVkQml0U3RyZWFtUGFyc2VyLnRvQWxwaGFOdW1lcmljQ2hhcihkaWdpdEJpdHMpKTsKCSAgICAgICAgfQoJICAgIH07CgkgICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5wYXJzZUVDSVZhbHVlID0gZnVuY3Rpb24gKGJpdHMpIHsKCSAgICAgICAgdmFyIGZpcnN0Qnl0ZSA9IGJpdHMucmVhZEJpdHMoOCk7CgkgICAgICAgIGlmICgoZmlyc3RCeXRlICYgMHg4MCkgPT09IDApIHsKCSAgICAgICAgICAgIC8vIGp1c3Qgb25lIGJ5dGUKCSAgICAgICAgICAgIHJldHVybiBmaXJzdEJ5dGUgJiAweDdGOwoJICAgICAgICB9CgkgICAgICAgIGlmICgoZmlyc3RCeXRlICYgMHhDMCkgPT09IDB4ODApIHsKCSAgICAgICAgICAgIC8vIHR3byBieXRlcwoJICAgICAgICAgICAgdmFyIHNlY29uZEJ5dGUgPSBiaXRzLnJlYWRCaXRzKDgpOwoJICAgICAgICAgICAgcmV0dXJuICgoKGZpcnN0Qnl0ZSAmIDB4M0YpIDw8IDgpICYgMHhGRkZGRkZGRikgfCBzZWNvbmRCeXRlOwoJICAgICAgICB9CgkgICAgICAgIGlmICgoZmlyc3RCeXRlICYgMHhFMCkgPT09IDB4QzApIHsKCSAgICAgICAgICAgIC8vIHRocmVlIGJ5dGVzCgkgICAgICAgICAgICB2YXIgc2Vjb25kVGhpcmRCeXRlcyA9IGJpdHMucmVhZEJpdHMoMTYpOwoJICAgICAgICAgICAgcmV0dXJuICgoKGZpcnN0Qnl0ZSAmIDB4MUYpIDw8IDE2KSAmIDB4RkZGRkZGRkYpIHwgc2Vjb25kVGhpcmRCeXRlczsKCSAgICAgICAgfQoJICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogU2VlIElTTyAxODAwNDoyMDA2LCA2LjQuNCBUYWJsZSA1CgkgICAgICovCgkgICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5BTFBIQU5VTUVSSUNfQ0hBUlMgPSAnMDEyMzQ1Njc4OUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaICQlKistLi86JzsKCSAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLkdCMjMxMl9TVUJTRVQgPSAxOwoJICAgIHJldHVybiBEZWNvZGVkQml0U3RyZWFtUGFyc2VyOwoJfSgpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IERlY29kZWRCaXRTdHJlYW1QYXJzZXI7CgkvLyBmdW5jdGlvbiBVaW50OEFycmF5VG9TdHJpbmcoYTogVWludDhBcnJheSk6IHN0cmluZyB7CgkvLyAgICAgY29uc3QgQ0hVTktfU1ogPSAweDgwMDA7CgkvLyAgICAgY29uc3QgYyA9IG5ldyBTdHJpbmdCdWlsZGVyKCk7CgkvLyAgICAgZm9yIChsZXQgaSA9IDAsIGxlbmd0aCA9IGEubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpICs9IENIVU5LX1NaKSB7CgkvLyAgICAgICAgIGMuYXBwZW5kKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCwgYS5zdWJhcnJheShpLCBpICsgQ0hVTktfU1opKSk7CgkvLyAgICAgfQoJLy8gICAgIHJldHVybiBjLnRvU3RyaW5nKCk7CgkvLyB9CgoJfSk7CgoJdmFyIFFSQ29kZURlY29kZXJNZXRhRGF0YV8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJLyoKCSAqIENvcHlyaWdodCAyMDEzIFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgkvKioKCSAqIE1ldGEtZGF0YSBjb250YWluZXIgZm9yIFFSIENvZGUgZGVjb2RpbmcuIEluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIG1heSBiZSB1c2VkIHRvIGNvbnZleSBpbmZvcm1hdGlvbiBiYWNrIHRvIHRoZQoJICogZGVjb2RpbmcgY2FsbGVyLiBDYWxsZXJzIGFyZSBleHBlY3RlZCB0byBwcm9jZXNzIHRoaXMuCgkgKgoJICogQHNlZSBjb20uZ29vZ2xlLnp4aW5nLmNvbW1vbi5EZWNvZGVyUmVzdWx0I2dldE90aGVyKCkKCSAqLwoJdmFyIFFSQ29kZURlY29kZXJNZXRhRGF0YSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBRUkNvZGVEZWNvZGVyTWV0YURhdGEobWlycm9yZWQpIHsKCSAgICAgICAgdGhpcy5taXJyb3JlZCA9IG1pcnJvcmVkOwoJICAgIH0KCSAgICAvKioKCSAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIFFSIENvZGUgd2FzIG1pcnJvcmVkLgoJICAgICAqLwoJICAgIFFSQ29kZURlY29kZXJNZXRhRGF0YS5wcm90b3R5cGUuaXNNaXJyb3JlZCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMubWlycm9yZWQ7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBBcHBseSB0aGUgcmVzdWx0IHBvaW50cycgb3JkZXIgY29ycmVjdGlvbiBkdWUgdG8gbWlycm9yaW5nLgoJICAgICAqCgkgICAgICogQHBhcmFtIHBvaW50cyBBcnJheSBvZiBwb2ludHMgdG8gYXBwbHkgbWlycm9yIGNvcnJlY3Rpb24gdG8uCgkgICAgICovCgkgICAgUVJDb2RlRGVjb2Rlck1ldGFEYXRhLnByb3RvdHlwZS5hcHBseU1pcnJvcmVkQ29ycmVjdGlvbiA9IGZ1bmN0aW9uIChwb2ludHMpIHsKCSAgICAgICAgaWYgKCF0aGlzLm1pcnJvcmVkIHx8IHBvaW50cyA9PT0gbnVsbCB8fCBwb2ludHMubGVuZ3RoIDwgMykgewoJICAgICAgICAgICAgcmV0dXJuOwoJICAgICAgICB9CgkgICAgICAgIHZhciBib3R0b21MZWZ0ID0gcG9pbnRzWzBdOwoJICAgICAgICBwb2ludHNbMF0gPSBwb2ludHNbMl07CgkgICAgICAgIHBvaW50c1syXSA9IGJvdHRvbUxlZnQ7CgkgICAgICAgIC8vIE5vIG5lZWQgdG8gJ2ZpeCcgdG9wLWxlZnQgYW5kIGFsaWdubWVudCBwYXR0ZXJuLgoJICAgIH07CgkgICAgcmV0dXJuIFFSQ29kZURlY29kZXJNZXRhRGF0YTsKCX0oKSk7CglleHBvcnRzLmRlZmF1bHQgPSBRUkNvZGVEZWNvZGVyTWV0YURhdGE7CgoJfSk7CgoJdmFyIERlY29kZXJfMSQyID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJLyoKCSAqIENvcHlyaWdodCAyMDA3IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCXZhciBfX3ZhbHVlcyA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX3ZhbHVlcykgfHwgZnVuY3Rpb24obykgewoJICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gImZ1bmN0aW9uIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwOwoJICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pOwoJICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gIm51bWJlciIpIHJldHVybiB7CgkgICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7CgkgICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07CgkgICAgICAgIH0KCSAgICB9OwoJICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/ICJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLiIgOiAiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpOwoJfTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgkvKm5hbWVzcGFjZSBjb20uZ29vZ2xlLnp4aW5nLnFyY29kZS5kZWNvZGVyIHsqLwoKCgoKCgoKCgkvKmltcG9ydCBqYXZhLnV0aWwuTWFwOyovCgkvKioKCSAqIDxwPlRoZSBtYWluIGNsYXNzIHdoaWNoIGltcGxlbWVudHMgUVIgQ29kZSBkZWNvZGluZyAtLSBhcyBvcHBvc2VkIHRvIGxvY2F0aW5nIGFuZCBleHRyYWN0aW5nCgkgKiB0aGUgUVIgQ29kZSBmcm9tIGFuIGltYWdlLjwvcD4KCSAqCgkgKiBAYXV0aG9yIFNlYW4gT3dlbgoJICovCgl2YXIgRGVjb2RlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBEZWNvZGVyKCkgewoJICAgICAgICB0aGlzLnJzRGVjb2RlciA9IG5ldyBSZWVkU29sb21vbkRlY29kZXJfMS5kZWZhdWx0KEdlbmVyaWNHRl8xLmRlZmF1bHQuUVJfQ09ERV9GSUVMRF8yNTYpOwoJICAgIH0KCSAgICAvLyBwdWJsaWMgZGVjb2RlKGltYWdlOiBib29sZWFuW11bXSk6IERlY29kZXJSZXN1bHQgLyp0aHJvd3MgQ2hlY2tzdW1FeGNlcHRpb24sIEZvcm1hdEV4Y2VwdGlvbiovIHsKCSAgICAvLyAgIHJldHVybiBkZWNvZGUoaW1hZ2UsIG51bGwpCgkgICAgLy8gfQoJICAgIC8qKgoJICAgICAqIDxwPkNvbnZlbmllbmNlIG1ldGhvZCB0aGF0IGNhbiBkZWNvZGUgYSBRUiBDb2RlIHJlcHJlc2VudGVkIGFzIGEgMkQgYXJyYXkgb2YgYm9vbGVhbnMuCgkgICAgICogInRydWUiIGlzIHRha2VuIHRvIG1lYW4gYSBibGFjayBtb2R1bGUuPC9wPgoJICAgICAqCgkgICAgICogQHBhcmFtIGltYWdlIGJvb2xlYW5zIHJlcHJlc2VudGluZyB3aGl0ZS9ibGFjayBRUiBDb2RlIG1vZHVsZXMKCSAgICAgKiBAcGFyYW0gaGludHMgZGVjb2RpbmcgaGludHMgdGhhdCBzaG91bGQgYmUgdXNlZCB0byBpbmZsdWVuY2UgZGVjb2RpbmcKCSAgICAgKiBAcmV0dXJuIHRleHQgYW5kIGJ5dGVzIGVuY29kZWQgd2l0aGluIHRoZSBRUiBDb2RlCgkgICAgICogQHRocm93cyBGb3JtYXRFeGNlcHRpb24gaWYgdGhlIFFSIENvZGUgY2Fubm90IGJlIGRlY29kZWQKCSAgICAgKiBAdGhyb3dzIENoZWNrc3VtRXhjZXB0aW9uIGlmIGVycm9yIGNvcnJlY3Rpb24gZmFpbHMKCSAgICAgKi8KCSAgICBEZWNvZGVyLnByb3RvdHlwZS5kZWNvZGVCb29sZWFuQXJyYXkgPSBmdW5jdGlvbiAoaW1hZ2UsIGhpbnRzKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmRlY29kZUJpdE1hdHJpeChCaXRNYXRyaXhfMS5kZWZhdWx0LnBhcnNlRnJvbUJvb2xlYW5BcnJheShpbWFnZSksIGhpbnRzKTsKCSAgICB9OwoJICAgIC8vIHB1YmxpYyBkZWNvZGVCaXRNYXRyaXgoYml0czogQml0TWF0cml4KTogRGVjb2RlclJlc3VsdCAvKnRocm93cyBDaGVja3N1bUV4Y2VwdGlvbiwgRm9ybWF0RXhjZXB0aW9uKi8gewoJICAgIC8vICAgcmV0dXJuIGRlY29kZShiaXRzLCBudWxsKQoJICAgIC8vIH0KCSAgICAvKioKCSAgICAgKiA8cD5EZWNvZGVzIGEgUVIgQ29kZSByZXByZXNlbnRlZCBhcyBhIHtAbGluayBCaXRNYXRyaXh9LiBBIDEgb3IgInRydWUiIGlzIHRha2VuIHRvIG1lYW4gYSBibGFjayBtb2R1bGUuPC9wPgoJICAgICAqCgkgICAgICogQHBhcmFtIGJpdHMgYm9vbGVhbnMgcmVwcmVzZW50aW5nIHdoaXRlL2JsYWNrIFFSIENvZGUgbW9kdWxlcwoJICAgICAqIEBwYXJhbSBoaW50cyBkZWNvZGluZyBoaW50cyB0aGF0IHNob3VsZCBiZSB1c2VkIHRvIGluZmx1ZW5jZSBkZWNvZGluZwoJICAgICAqIEByZXR1cm4gdGV4dCBhbmQgYnl0ZXMgZW5jb2RlZCB3aXRoaW4gdGhlIFFSIENvZGUKCSAgICAgKiBAdGhyb3dzIEZvcm1hdEV4Y2VwdGlvbiBpZiB0aGUgUVIgQ29kZSBjYW5ub3QgYmUgZGVjb2RlZAoJICAgICAqIEB0aHJvd3MgQ2hlY2tzdW1FeGNlcHRpb24gaWYgZXJyb3IgY29ycmVjdGlvbiBmYWlscwoJICAgICAqLwoJICAgIERlY29kZXIucHJvdG90eXBlLmRlY29kZUJpdE1hdHJpeCA9IGZ1bmN0aW9uIChiaXRzLCBoaW50cykgewoJICAgICAgICAvLyBDb25zdHJ1Y3QgYSBwYXJzZXIgYW5kIHJlYWQgdmVyc2lvbiwgZXJyb3ItY29ycmVjdGlvbiBsZXZlbAoJICAgICAgICB2YXIgcGFyc2VyID0gbmV3IEJpdE1hdHJpeFBhcnNlcl8xJDEuZGVmYXVsdChiaXRzKTsKCSAgICAgICAgdmFyIGV4ID0gbnVsbDsKCSAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgIHJldHVybiB0aGlzLmRlY29kZUJpdE1hdHJpeFBhcnNlcihwYXJzZXIsIGhpbnRzKTsKCSAgICAgICAgfQoJICAgICAgICBjYXRjaCAoZSAvKjogRm9ybWF0RXhjZXB0aW9uLCBDaGVja3N1bUV4Y2VwdGlvbiovKSB7CgkgICAgICAgICAgICBleCA9IGU7CgkgICAgICAgIH0KCSAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgIC8vIFJldmVydCB0aGUgYml0IG1hdHJpeAoJICAgICAgICAgICAgcGFyc2VyLnJlbWFzaygpOwoJICAgICAgICAgICAgLy8gV2lsbCBiZSBhdHRlbXB0aW5nIGEgbWlycm9yZWQgcmVhZGluZyBvZiB0aGUgdmVyc2lvbiBhbmQgZm9ybWF0IGluZm8uCgkgICAgICAgICAgICBwYXJzZXIuc2V0TWlycm9yKHRydWUpOwoJICAgICAgICAgICAgLy8gUHJlZW1wdGl2ZWx5IHJlYWQgdGhlIHZlcnNpb24uCgkgICAgICAgICAgICBwYXJzZXIucmVhZFZlcnNpb24oKTsKCSAgICAgICAgICAgIC8vIFByZWVtcHRpdmVseSByZWFkIHRoZSBmb3JtYXQgaW5mb3JtYXRpb24uCgkgICAgICAgICAgICBwYXJzZXIucmVhZEZvcm1hdEluZm9ybWF0aW9uKCk7CgkgICAgICAgICAgICAvKgoJICAgICAgICAgICAgICogU2luY2Ugd2UncmUgaGVyZSwgdGhpcyBtZWFucyB3ZSBoYXZlIHN1Y2Nlc3NmdWxseSBkZXRlY3RlZCBzb21lIGtpbmQKCSAgICAgICAgICAgICAqIG9mIHZlcnNpb24gYW5kIGZvcm1hdCBpbmZvcm1hdGlvbiB3aGVuIG1pcnJvcmVkLiBUaGlzIGlzIGEgZ29vZCBzaWduLAoJICAgICAgICAgICAgICogdGhhdCB0aGUgUVIgY29kZSBtYXkgYmUgbWlycm9yZWQsIGFuZCB3ZSBzaG91bGQgdHJ5IG9uY2UgbW9yZSB3aXRoIGEKCSAgICAgICAgICAgICAqIG1pcnJvcmVkIGNvbnRlbnQuCgkgICAgICAgICAgICAgKi8KCSAgICAgICAgICAgIC8vIFByZXBhcmUgZm9yIGEgbWlycm9yZWQgcmVhZGluZy4KCSAgICAgICAgICAgIHBhcnNlci5taXJyb3IoKTsKCSAgICAgICAgICAgIHZhciByZXN1bHQgPSB0aGlzLmRlY29kZUJpdE1hdHJpeFBhcnNlcihwYXJzZXIsIGhpbnRzKTsKCSAgICAgICAgICAgIC8vIFN1Y2Nlc3MhIE5vdGlmeSB0aGUgY2FsbGVyIHRoYXQgdGhlIGNvZGUgd2FzIG1pcnJvcmVkLgoJICAgICAgICAgICAgcmVzdWx0LnNldE90aGVyKG5ldyBRUkNvZGVEZWNvZGVyTWV0YURhdGFfMS5kZWZhdWx0KHRydWUpKTsKCSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CgkgICAgICAgIH0KCSAgICAgICAgY2F0Y2ggKGUgLypGb3JtYXRFeGNlcHRpb24gfCBDaGVja3N1bUV4Y2VwdGlvbiovKSB7CgkgICAgICAgICAgICAvLyBUaHJvdyB0aGUgZXhjZXB0aW9uIGZyb20gdGhlIG9yaWdpbmFsIHJlYWRpbmcKCSAgICAgICAgICAgIGlmIChleCAhPT0gbnVsbCkgewoJICAgICAgICAgICAgICAgIHRocm93IGV4OwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgdGhyb3cgZTsKCSAgICAgICAgfQoJICAgIH07CgkgICAgRGVjb2Rlci5wcm90b3R5cGUuZGVjb2RlQml0TWF0cml4UGFyc2VyID0gZnVuY3Rpb24gKHBhcnNlciwgaGludHMpIHsKCSAgICAgICAgdmFyIGVfMSwgX2EsIGVfMiwgX2I7CgkgICAgICAgIHZhciB2ZXJzaW9uID0gcGFyc2VyLnJlYWRWZXJzaW9uKCk7CgkgICAgICAgIHZhciBlY0xldmVsID0gcGFyc2VyLnJlYWRGb3JtYXRJbmZvcm1hdGlvbigpLmdldEVycm9yQ29ycmVjdGlvbkxldmVsKCk7CgkgICAgICAgIC8vIFJlYWQgY29kZXdvcmRzCgkgICAgICAgIHZhciBjb2Rld29yZHMgPSBwYXJzZXIucmVhZENvZGV3b3JkcygpOwoJICAgICAgICAvLyBTZXBhcmF0ZSBpbnRvIGRhdGEgYmxvY2tzCgkgICAgICAgIHZhciBkYXRhQmxvY2tzID0gRGF0YUJsb2NrXzEkMS5kZWZhdWx0LmdldERhdGFCbG9ja3MoY29kZXdvcmRzLCB2ZXJzaW9uLCBlY0xldmVsKTsKCSAgICAgICAgLy8gQ291bnQgdG90YWwgbnVtYmVyIG9mIGRhdGEgYnl0ZXMKCSAgICAgICAgdmFyIHRvdGFsQnl0ZXMgPSAwOwoJICAgICAgICB0cnkgewoJICAgICAgICAgICAgZm9yICh2YXIgZGF0YUJsb2Nrc18xID0gX192YWx1ZXMoZGF0YUJsb2NrcyksIGRhdGFCbG9ja3NfMV8xID0gZGF0YUJsb2Nrc18xLm5leHQoKTsgIWRhdGFCbG9ja3NfMV8xLmRvbmU7IGRhdGFCbG9ja3NfMV8xID0gZGF0YUJsb2Nrc18xLm5leHQoKSkgewoJICAgICAgICAgICAgICAgIHZhciBkYXRhQmxvY2sgPSBkYXRhQmxvY2tzXzFfMS52YWx1ZTsKCSAgICAgICAgICAgICAgICB0b3RhbEJ5dGVzICs9IGRhdGFCbG9jay5nZXROdW1EYXRhQ29kZXdvcmRzKCk7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH0KCSAgICAgICAgZmluYWxseSB7CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIGlmIChkYXRhQmxvY2tzXzFfMSAmJiAhZGF0YUJsb2Nrc18xXzEuZG9uZSAmJiAoX2EgPSBkYXRhQmxvY2tzXzEucmV0dXJuKSkgX2EuY2FsbChkYXRhQmxvY2tzXzEpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfQoJICAgICAgICB9CgkgICAgICAgIHZhciByZXN1bHRCeXRlcyA9IG5ldyBVaW50OEFycmF5KHRvdGFsQnl0ZXMpOwoJICAgICAgICB2YXIgcmVzdWx0T2Zmc2V0ID0gMDsKCSAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgIC8vIEVycm9yLWNvcnJlY3QgYW5kIGNvcHkgZGF0YSBibG9ja3MgdG9nZXRoZXIgaW50byBhIHN0cmVhbSBvZiBieXRlcwoJICAgICAgICAgICAgZm9yICh2YXIgZGF0YUJsb2Nrc18yID0gX192YWx1ZXMoZGF0YUJsb2NrcyksIGRhdGFCbG9ja3NfMl8xID0gZGF0YUJsb2Nrc18yLm5leHQoKTsgIWRhdGFCbG9ja3NfMl8xLmRvbmU7IGRhdGFCbG9ja3NfMl8xID0gZGF0YUJsb2Nrc18yLm5leHQoKSkgewoJICAgICAgICAgICAgICAgIHZhciBkYXRhQmxvY2sgPSBkYXRhQmxvY2tzXzJfMS52YWx1ZTsKCSAgICAgICAgICAgICAgICB2YXIgY29kZXdvcmRCeXRlcyA9IGRhdGFCbG9jay5nZXRDb2Rld29yZHMoKTsKCSAgICAgICAgICAgICAgICB2YXIgbnVtRGF0YUNvZGV3b3JkcyA9IGRhdGFCbG9jay5nZXROdW1EYXRhQ29kZXdvcmRzKCk7CgkgICAgICAgICAgICAgICAgdGhpcy5jb3JyZWN0RXJyb3JzKGNvZGV3b3JkQnl0ZXMsIG51bURhdGFDb2Rld29yZHMpOwoJICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtRGF0YUNvZGV3b3JkczsgaSsrKSB7CgkgICAgICAgICAgICAgICAgICAgIHJlc3VsdEJ5dGVzW3Jlc3VsdE9mZnNldCsrXSA9IGNvZGV3b3JkQnl0ZXNbaV07CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGNhdGNoIChlXzJfMSkgeyBlXzIgPSB7IGVycm9yOiBlXzJfMSB9OyB9CgkgICAgICAgIGZpbmFsbHkgewoJICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICBpZiAoZGF0YUJsb2Nrc18yXzEgJiYgIWRhdGFCbG9ja3NfMl8xLmRvbmUgJiYgKF9iID0gZGF0YUJsb2Nrc18yLnJldHVybikpIF9iLmNhbGwoZGF0YUJsb2Nrc18yKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8yKSB0aHJvdyBlXzIuZXJyb3I7IH0KCSAgICAgICAgfQoJICAgICAgICAvLyBEZWNvZGUgdGhlIGNvbnRlbnRzIG9mIHRoYXQgc3RyZWFtIG9mIGJ5dGVzCgkgICAgICAgIHJldHVybiBEZWNvZGVkQml0U3RyZWFtUGFyc2VyXzEkMS5kZWZhdWx0LmRlY29kZShyZXN1bHRCeXRlcywgdmVyc2lvbiwgZWNMZXZlbCwgaGludHMpOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogPHA+R2l2ZW4gZGF0YSBhbmQgZXJyb3ItY29ycmVjdGlvbiBjb2Rld29yZHMgcmVjZWl2ZWQsIHBvc3NpYmx5IGNvcnJ1cHRlZCBieSBlcnJvcnMsIGF0dGVtcHRzIHRvCgkgICAgICogY29ycmVjdCB0aGUgZXJyb3JzIGluLXBsYWNlIHVzaW5nIFJlZWQtU29sb21vbiBlcnJvciBjb3JyZWN0aW9uLjwvcD4KCSAgICAgKgoJICAgICAqIEBwYXJhbSBjb2Rld29yZEJ5dGVzIGRhdGEgYW5kIGVycm9yIGNvcnJlY3Rpb24gY29kZXdvcmRzCgkgICAgICogQHBhcmFtIG51bURhdGFDb2Rld29yZHMgbnVtYmVyIG9mIGNvZGV3b3JkcyB0aGF0IGFyZSBkYXRhIGJ5dGVzCgkgICAgICogQHRocm93cyBDaGVja3N1bUV4Y2VwdGlvbiBpZiBlcnJvciBjb3JyZWN0aW9uIGZhaWxzCgkgICAgICovCgkgICAgRGVjb2Rlci5wcm90b3R5cGUuY29ycmVjdEVycm9ycyA9IGZ1bmN0aW9uIChjb2Rld29yZEJ5dGVzLCBudW1EYXRhQ29kZXdvcmRzIC8qaW50Ki8pIHsKCSAgICAgICAgLy8gY29uc3QgbnVtQ29kZXdvcmRzID0gY29kZXdvcmRCeXRlcy5sZW5ndGg7CgkgICAgICAgIC8vIEZpcnN0IHJlYWQgaW50byBhbiBhcnJheSBvZiBpbnRzCgkgICAgICAgIHZhciBjb2Rld29yZHNJbnRzID0gbmV3IEludDMyQXJyYXkoY29kZXdvcmRCeXRlcyk7CgkgICAgICAgIC8vIFRZUEVTQ1JJUFRQT1JUOiBub3QgcmVhbHkgbmVjZXNzYXJ5IHRvIHRyYW5zZm9ybSB0byBpbnRzPyBjb3VsZCByZWRlc2lnbiBldmVyeXRoaW5nIHRvIHdvcmsgd2l0aCB1bnNpZ25lZCBieXRlcz8KCSAgICAgICAgLy8gY29uc3QgY29kZXdvcmRzSW50cyA9IG5ldyBJbnQzMkFycmF5KG51bUNvZGV3b3JkcykKCSAgICAgICAgLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBudW1Db2Rld29yZHM7IGkrKykgewoJICAgICAgICAvLyAgIGNvZGV3b3Jkc0ludHNbaV0gPSBjb2Rld29yZEJ5dGVzW2ldICYgMHhGRgoJICAgICAgICAvLyB9CgkgICAgICAgIHRyeSB7CgkgICAgICAgICAgICB0aGlzLnJzRGVjb2Rlci5kZWNvZGUoY29kZXdvcmRzSW50cywgY29kZXdvcmRCeXRlcy5sZW5ndGggLSBudW1EYXRhQ29kZXdvcmRzKTsKCSAgICAgICAgfQoJICAgICAgICBjYXRjaCAoaWdub3JlZCAvKjogUmVlZFNvbG9tb25FeGNlcHRpb24qLykgewoJICAgICAgICAgICAgdGhyb3cgbmV3IENoZWNrc3VtRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgICAgIC8vIENvcHkgYmFjayBpbnRvIGFycmF5IG9mIGJ5dGVzIC0tIG9ubHkgbmVlZCB0byB3b3JyeSBhYm91dCB0aGUgYnl0ZXMgdGhhdCB3ZXJlIGRhdGEKCSAgICAgICAgLy8gV2UgZG9uJ3QgY2FyZSBhYm91dCBlcnJvcnMgaW4gdGhlIGVycm9yLWNvcnJlY3Rpb24gY29kZXdvcmRzCgkgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtRGF0YUNvZGV3b3JkczsgaSsrKSB7CgkgICAgICAgICAgICBjb2Rld29yZEJ5dGVzW2ldID0gLyooYnl0ZSkgKi8gY29kZXdvcmRzSW50c1tpXTsKCSAgICAgICAgfQoJICAgIH07CgkgICAgcmV0dXJuIERlY29kZXI7Cgl9KCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gRGVjb2RlcjsKCgl9KTsKCgl2YXIgQWxpZ25tZW50UGF0dGVybl8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJLyoKCSAqIENvcHlyaWdodCAyMDA3IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCXZhciBfX2V4dGVuZHMgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkgewoJICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fAoJICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fAoJICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07CgkgICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgIH07CgkgICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfQoJICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7CgkgICAgfTsKCX0pKCk7CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJLypuYW1lc3BhY2UgY29tLmdvb2dsZS56eGluZy5xcmNvZGUuZGV0ZWN0b3IgeyovCgoJLyoqCgkgKiA8cD5FbmNhcHN1bGF0ZXMgYW4gYWxpZ25tZW50IHBhdHRlcm4sIHdoaWNoIGFyZSB0aGUgc21hbGxlciBzcXVhcmUgcGF0dGVybnMgZm91bmQgaW4KCSAqIGFsbCBidXQgdGhlIHNpbXBsZXN0IFFSIENvZGVzLjwvcD4KCSAqCgkgKiBAYXV0aG9yIFNlYW4gT3dlbgoJICovCgl2YXIgQWxpZ25tZW50UGF0dGVybiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHsKCSAgICBfX2V4dGVuZHMoQWxpZ25tZW50UGF0dGVybiwgX3N1cGVyKTsKCSAgICBmdW5jdGlvbiBBbGlnbm1lbnRQYXR0ZXJuKHBvc1ggLypmbG9hdCovLCBwb3NZIC8qZmxvYXQqLywgZXN0aW1hdGVkTW9kdWxlU2l6ZSAvKmZsb2F0Ki8pIHsKCSAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgcG9zWCwgcG9zWSkgfHwgdGhpczsKCSAgICAgICAgX3RoaXMuZXN0aW1hdGVkTW9kdWxlU2l6ZSA9IGVzdGltYXRlZE1vZHVsZVNpemU7CgkgICAgICAgIHJldHVybiBfdGhpczsKCSAgICB9CgkgICAgLyoqCgkgICAgICogPHA+RGV0ZXJtaW5lcyBpZiB0aGlzIGFsaWdubWVudCBwYXR0ZXJuICJhYm91dCBlcXVhbHMiIGFuIGFsaWdubWVudCBwYXR0ZXJuIGF0IHRoZSBzdGF0ZWQKCSAgICAgKiBwb3NpdGlvbiBhbmQgc2l6ZSAtLSBtZWFuaW5nLCBpdCBpcyBhdCBuZWFybHkgdGhlIHNhbWUgY2VudGVyIHdpdGggbmVhcmx5IHRoZSBzYW1lIHNpemUuPC9wPgoJICAgICAqLwoJICAgIEFsaWdubWVudFBhdHRlcm4ucHJvdG90eXBlLmFib3V0RXF1YWxzID0gZnVuY3Rpb24gKG1vZHVsZVNpemUgLypmbG9hdCovLCBpIC8qZmxvYXQqLywgaiAvKmZsb2F0Ki8pIHsKCSAgICAgICAgaWYgKE1hdGguYWJzKGkgLSB0aGlzLmdldFkoKSkgPD0gbW9kdWxlU2l6ZSAmJiBNYXRoLmFicyhqIC0gdGhpcy5nZXRYKCkpIDw9IG1vZHVsZVNpemUpIHsKCSAgICAgICAgICAgIHZhciBtb2R1bGVTaXplRGlmZiA9IE1hdGguYWJzKG1vZHVsZVNpemUgLSB0aGlzLmVzdGltYXRlZE1vZHVsZVNpemUpOwoJICAgICAgICAgICAgcmV0dXJuIG1vZHVsZVNpemVEaWZmIDw9IDEuMCB8fCBtb2R1bGVTaXplRGlmZiA8PSB0aGlzLmVzdGltYXRlZE1vZHVsZVNpemU7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIGZhbHNlOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQ29tYmluZXMgdGhpcyBvYmplY3QncyBjdXJyZW50IGVzdGltYXRlIG9mIGEgZmluZGVyIHBhdHRlcm4gcG9zaXRpb24gYW5kIG1vZHVsZSBzaXplCgkgICAgICogd2l0aCBhIG5ldyBlc3RpbWF0ZS4gSXQgcmV0dXJucyBhIG5ldyB7QGNvZGUgRmluZGVyUGF0dGVybn0gY29udGFpbmluZyBhbiBhdmVyYWdlIG9mIHRoZSB0d28uCgkgICAgICovCgkgICAgQWxpZ25tZW50UGF0dGVybi5wcm90b3R5cGUuY29tYmluZUVzdGltYXRlID0gZnVuY3Rpb24gKGkgLypmbG9hdCovLCBqIC8qZmxvYXQqLywgbmV3TW9kdWxlU2l6ZSAvKmZsb2F0Ki8pIHsKCSAgICAgICAgdmFyIGNvbWJpbmVkWCA9ICh0aGlzLmdldFgoKSArIGopIC8gMi4wOwoJICAgICAgICB2YXIgY29tYmluZWRZID0gKHRoaXMuZ2V0WSgpICsgaSkgLyAyLjA7CgkgICAgICAgIHZhciBjb21iaW5lZE1vZHVsZVNpemUgPSAodGhpcy5lc3RpbWF0ZWRNb2R1bGVTaXplICsgbmV3TW9kdWxlU2l6ZSkgLyAyLjA7CgkgICAgICAgIHJldHVybiBuZXcgQWxpZ25tZW50UGF0dGVybihjb21iaW5lZFgsIGNvbWJpbmVkWSwgY29tYmluZWRNb2R1bGVTaXplKTsKCSAgICB9OwoJICAgIHJldHVybiBBbGlnbm1lbnRQYXR0ZXJuOwoJfShSZXN1bHRQb2ludF8xLmRlZmF1bHQpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IEFsaWdubWVudFBhdHRlcm47CgoJfSk7CgoJdmFyIEFsaWdubWVudFBhdHRlcm5GaW5kZXJfMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCS8qCgkgKiBDb3B5cmlnaHQgMjAwNyBaWGluZyBhdXRob3JzCgkgKgoJICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSAqCgkgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJICoKCSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJICovCgl2YXIgX192YWx1ZXMgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX192YWx1ZXMpIHx8IGZ1bmN0aW9uKG8pIHsKCSAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09ICJmdW5jdGlvbiIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDsKCSAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTsKCSAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09ICJudW1iZXIiKSByZXR1cm4gewoJICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7CgkgICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwOwoJICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9OwoJICAgICAgICB9CgkgICAgfTsKCSAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyAiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS4iIDogIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC4iKTsKCX07CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoKCgkvKmltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OyovCgkvKmltcG9ydCBqYXZhLnV0aWwuTGlzdDsqLwoJLyoqCgkgKiA8cD5UaGlzIGNsYXNzIGF0dGVtcHRzIHRvIGZpbmQgYWxpZ25tZW50IHBhdHRlcm5zIGluIGEgUVIgQ29kZS4gQWxpZ25tZW50IHBhdHRlcm5zIGxvb2sgbGlrZSBmaW5kZXIKCSAqIHBhdHRlcm5zIGJ1dCBhcmUgc21hbGxlciBhbmQgYXBwZWFyIGF0IHJlZ3VsYXIgaW50ZXJ2YWxzIHRocm91Z2hvdXQgdGhlIGltYWdlLjwvcD4KCSAqCgkgKiA8cD5BdCB0aGUgbW9tZW50IHRoaXMgb25seSBsb29rcyBmb3IgdGhlIGJvdHRvbS1yaWdodCBhbGlnbm1lbnQgcGF0dGVybi48L3A+CgkgKgoJICogPHA+VGhpcyBpcyBtb3N0bHkgYSBzaW1wbGlmaWVkIGNvcHkgb2Yge0BsaW5rIEZpbmRlclBhdHRlcm5GaW5kZXJ9LiBJdCBpcyBjb3BpZWQsCgkgKiBwYXN0ZWQgYW5kIHN0cmlwcGVkIGRvd24gaGVyZSBmb3IgbWF4aW11bSBwZXJmb3JtYW5jZSBidXQgZG9lcyB1bmZvcnR1bmF0ZWx5IGR1cGxpY2F0ZQoJICogc29tZSBjb2RlLjwvcD4KCSAqCgkgKiA8cD5UaGlzIGNsYXNzIGlzIHRocmVhZC1zYWZlIGJ1dCBub3QgcmVlbnRyYW50LiBFYWNoIHRocmVhZCBtdXN0IGFsbG9jYXRlIGl0cyBvd24gb2JqZWN0LjwvcD4KCSAqCgkgKiBAYXV0aG9yIFNlYW4gT3dlbgoJICovCgl2YXIgQWxpZ25tZW50UGF0dGVybkZpbmRlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICAvKioKCSAgICAgKiA8cD5DcmVhdGVzIGEgZmluZGVyIHRoYXQgd2lsbCBsb29rIGluIGEgcG9ydGlvbiBvZiB0aGUgd2hvbGUgaW1hZ2UuPC9wPgoJICAgICAqCgkgICAgICogQHBhcmFtIGltYWdlIGltYWdlIHRvIHNlYXJjaAoJICAgICAqIEBwYXJhbSBzdGFydFggbGVmdCBjb2x1bW4gZnJvbSB3aGljaCB0byBzdGFydCBzZWFyY2hpbmcKCSAgICAgKiBAcGFyYW0gc3RhcnRZIHRvcCByb3cgZnJvbSB3aGljaCB0byBzdGFydCBzZWFyY2hpbmcKCSAgICAgKiBAcGFyYW0gd2lkdGggd2lkdGggb2YgcmVnaW9uIHRvIHNlYXJjaAoJICAgICAqIEBwYXJhbSBoZWlnaHQgaGVpZ2h0IG9mIHJlZ2lvbiB0byBzZWFyY2gKCSAgICAgKiBAcGFyYW0gbW9kdWxlU2l6ZSBlc3RpbWF0ZWQgbW9kdWxlIHNpemUgc28gZmFyCgkgICAgICovCgkgICAgZnVuY3Rpb24gQWxpZ25tZW50UGF0dGVybkZpbmRlcihpbWFnZSwgc3RhcnRYIC8qaW50Ki8sIHN0YXJ0WSAvKmludCovLCB3aWR0aCAvKmludCovLCBoZWlnaHQgLyppbnQqLywgbW9kdWxlU2l6ZSAvKmZsb2F0Ki8sIHJlc3VsdFBvaW50Q2FsbGJhY2spIHsKCSAgICAgICAgdGhpcy5pbWFnZSA9IGltYWdlOwoJICAgICAgICB0aGlzLnN0YXJ0WCA9IHN0YXJ0WDsKCSAgICAgICAgdGhpcy5zdGFydFkgPSBzdGFydFk7CgkgICAgICAgIHRoaXMud2lkdGggPSB3aWR0aDsKCSAgICAgICAgdGhpcy5oZWlnaHQgPSBoZWlnaHQ7CgkgICAgICAgIHRoaXMubW9kdWxlU2l6ZSA9IG1vZHVsZVNpemU7CgkgICAgICAgIHRoaXMucmVzdWx0UG9pbnRDYWxsYmFjayA9IHJlc3VsdFBvaW50Q2FsbGJhY2s7CgkgICAgICAgIHRoaXMucG9zc2libGVDZW50ZXJzID0gW107IC8vIG5ldyBBcnJheTxhbnk+KDUpKQoJICAgICAgICAvLyBUWVBFU0NSSVBUUE9SVDogYXJyYXkgaW5pdGlhbGl6YXRpb24gd2l0aG91dCBzaXplIGFzIHRoZSBsZW5ndGggaXMgY2hlY2tlZCBiZWxvdwoJICAgICAgICB0aGlzLmNyb3NzQ2hlY2tTdGF0ZUNvdW50ID0gbmV3IEludDMyQXJyYXkoMyk7CgkgICAgfQoJICAgIC8qKgoJICAgICAqIDxwPlRoaXMgbWV0aG9kIGF0dGVtcHRzIHRvIGZpbmQgdGhlIGJvdHRvbS1yaWdodCBhbGlnbm1lbnQgcGF0dGVybiBpbiB0aGUgaW1hZ2UuIEl0IGlzIGEgYml0IG1lc3N5IHNpbmNlCgkgICAgICogaXQncyBwcmV0dHkgcGVyZm9ybWFuY2UtY3JpdGljYWwgYW5kIHNvIGlzIHdyaXR0ZW4gdG8gYmUgZmFzdCBmb3JlbW9zdC48L3A+CgkgICAgICoKCSAgICAgKiBAcmV0dXJuIHtAbGluayBBbGlnbm1lbnRQYXR0ZXJufSBpZiBmb3VuZAoJICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb24gaWYgbm90IGZvdW5kCgkgICAgICovCgkgICAgQWxpZ25tZW50UGF0dGVybkZpbmRlci5wcm90b3R5cGUuZmluZCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgdmFyIHN0YXJ0WCA9IHRoaXMuc3RhcnRYOwoJICAgICAgICB2YXIgaGVpZ2h0ID0gdGhpcy5oZWlnaHQ7CgkgICAgICAgIHZhciB3aWR0aCA9IHRoaXMud2lkdGg7CgkgICAgICAgIHZhciBtYXhKID0gc3RhcnRYICsgd2lkdGg7CgkgICAgICAgIHZhciBtaWRkbGVJID0gdGhpcy5zdGFydFkgKyAoaGVpZ2h0IC8gMik7CgkgICAgICAgIC8vIFdlIGFyZSBsb29raW5nIGZvciBibGFjay93aGl0ZS9ibGFjayBtb2R1bGVzIGluIDE6MToxIHJhdGlvCgkgICAgICAgIC8vIHRoaXMgdHJhY2tzIHRoZSBudW1iZXIgb2YgYmxhY2svd2hpdGUvYmxhY2sgbW9kdWxlcyBzZWVuIHNvIGZhcgoJICAgICAgICB2YXIgc3RhdGVDb3VudCA9IG5ldyBJbnQzMkFycmF5KDMpOwoJICAgICAgICB2YXIgaW1hZ2UgPSB0aGlzLmltYWdlOwoJICAgICAgICBmb3IgKHZhciBpR2VuID0gMDsgaUdlbiA8IGhlaWdodDsgaUdlbisrKSB7CgkgICAgICAgICAgICAvLyBTZWFyY2ggZnJvbSBtaWRkbGUgb3V0d2FyZHMKCSAgICAgICAgICAgIHZhciBpID0gbWlkZGxlSSArICgoaUdlbiAmIDB4MDEpID09PSAwID8gTWF0aC5mbG9vcigoaUdlbiArIDEpIC8gMikgOiAtTWF0aC5mbG9vcigoaUdlbiArIDEpIC8gMikpOwoJICAgICAgICAgICAgc3RhdGVDb3VudFswXSA9IDA7CgkgICAgICAgICAgICBzdGF0ZUNvdW50WzFdID0gMDsKCSAgICAgICAgICAgIHN0YXRlQ291bnRbMl0gPSAwOwoJICAgICAgICAgICAgdmFyIGogPSBzdGFydFg7CgkgICAgICAgICAgICAvLyBCdXJuIG9mZiBsZWFkaW5nIHdoaXRlIHBpeGVscyBiZWZvcmUgYW55dGhpbmcgZWxzZTsgaWYgd2Ugc3RhcnQgaW4gdGhlIG1pZGRsZSBvZgoJICAgICAgICAgICAgLy8gYSB3aGl0ZSBydW4sIGl0IGRvZXNuJ3QgbWFrZSBzZW5zZSB0byBjb3VudCBpdHMgbGVuZ3RoLCBzaW5jZSB3ZSBkb24ndCBrbm93IGlmIHRoZQoJICAgICAgICAgICAgLy8gd2hpdGUgcnVuIGNvbnRpbnVlZCB0byB0aGUgbGVmdCBvZiB0aGUgc3RhcnQgcG9pbnQKCSAgICAgICAgICAgIHdoaWxlIChqIDwgbWF4SiAmJiAhaW1hZ2UuZ2V0KGosIGkpKSB7CgkgICAgICAgICAgICAgICAgaisrOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgdmFyIGN1cnJlbnRTdGF0ZSA9IDA7CgkgICAgICAgICAgICB3aGlsZSAoaiA8IG1heEopIHsKCSAgICAgICAgICAgICAgICBpZiAoaW1hZ2UuZ2V0KGosIGkpKSB7CgkgICAgICAgICAgICAgICAgICAgIC8vIEJsYWNrIHBpeGVsCgkgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50U3RhdGUgPT09IDEpIHsgLy8gQ291bnRpbmcgYmxhY2sgcGl4ZWxzCgkgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZUNvdW50WzFdKys7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgZWxzZSB7IC8vIENvdW50aW5nIHdoaXRlIHBpeGVscwoJICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRTdGF0ZSA9PT0gMikgeyAvLyBBIHdpbm5lcj8KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5mb3VuZFBhdHRlcm5Dcm9zcyhzdGF0ZUNvdW50KSkgeyAvLyBZZXMKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbmZpcm1lZCA9IHRoaXMuaGFuZGxlUG9zc2libGVDZW50ZXIoc3RhdGVDb3VudCwgaSwgaik7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maXJtZWQgIT09IG51bGwpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb25maXJtZWQ7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVDb3VudFswXSA9IHN0YXRlQ291bnRbMl07CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVDb3VudFsxXSA9IDE7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVDb3VudFsyXSA9IDA7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFN0YXRlID0gMTsKCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlQ291bnRbKytjdXJyZW50U3RhdGVdKys7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgZWxzZSB7IC8vIFdoaXRlIHBpeGVsCgkgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50U3RhdGUgPT09IDEpIHsgLy8gQ291bnRpbmcgYmxhY2sgcGl4ZWxzCgkgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RhdGUrKzsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICBzdGF0ZUNvdW50W2N1cnJlbnRTdGF0ZV0rKzsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgaisrOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgaWYgKHRoaXMuZm91bmRQYXR0ZXJuQ3Jvc3Moc3RhdGVDb3VudCkpIHsKCSAgICAgICAgICAgICAgICB2YXIgY29uZmlybWVkID0gdGhpcy5oYW5kbGVQb3NzaWJsZUNlbnRlcihzdGF0ZUNvdW50LCBpLCBtYXhKKTsKCSAgICAgICAgICAgICAgICBpZiAoY29uZmlybWVkICE9PSBudWxsKSB7CgkgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb25maXJtZWQ7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIC8vIEhtbSwgbm90aGluZyB3ZSBzYXcgd2FzIG9ic2VydmVkIGFuZCBjb25maXJtZWQgdHdpY2UuIElmIHdlIGhhZAoJICAgICAgICAvLyBhbnkgZ3Vlc3MgYXQgYWxsLCByZXR1cm4gaXQuCgkgICAgICAgIGlmICh0aGlzLnBvc3NpYmxlQ2VudGVycy5sZW5ndGggIT09IDApIHsKCSAgICAgICAgICAgIHJldHVybiB0aGlzLnBvc3NpYmxlQ2VudGVyc1swXTsKCSAgICAgICAgfQoJICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBHaXZlbiBhIGNvdW50IG9mIGJsYWNrL3doaXRlL2JsYWNrIHBpeGVscyBqdXN0IHNlZW4gYW5kIGFuIGVuZCBwb3NpdGlvbiwKCSAgICAgKiBmaWd1cmVzIHRoZSBsb2NhdGlvbiBvZiB0aGUgY2VudGVyIG9mIHRoaXMgYmxhY2svd2hpdGUvYmxhY2sgcnVuLgoJICAgICAqLwoJICAgIEFsaWdubWVudFBhdHRlcm5GaW5kZXIuY2VudGVyRnJvbUVuZCA9IGZ1bmN0aW9uIChzdGF0ZUNvdW50LCBlbmQgLyppbnQqLykgewoJICAgICAgICByZXR1cm4gKGVuZCAtIHN0YXRlQ291bnRbMl0pIC0gc3RhdGVDb3VudFsxXSAvIDIuMDsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEBwYXJhbSBzdGF0ZUNvdW50IGNvdW50IG9mIGJsYWNrL3doaXRlL2JsYWNrIHBpeGVscyBqdXN0IHJlYWQKCSAgICAgKiBAcmV0dXJuIHRydWUgaWZmIHRoZSBwcm9wb3J0aW9ucyBvZiB0aGUgY291bnRzIGlzIGNsb3NlIGVub3VnaCB0byB0aGUgMS8xLzEgcmF0aW9zCgkgICAgICogICAgICAgICB1c2VkIGJ5IGFsaWdubWVudCBwYXR0ZXJucyB0byBiZSBjb25zaWRlcmVkIGEgbWF0Y2gKCSAgICAgKi8KCSAgICBBbGlnbm1lbnRQYXR0ZXJuRmluZGVyLnByb3RvdHlwZS5mb3VuZFBhdHRlcm5Dcm9zcyA9IGZ1bmN0aW9uIChzdGF0ZUNvdW50KSB7CgkgICAgICAgIHZhciBtb2R1bGVTaXplID0gdGhpcy5tb2R1bGVTaXplOwoJICAgICAgICB2YXIgbWF4VmFyaWFuY2UgPSBtb2R1bGVTaXplIC8gMi4wOwoJICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDM7IGkrKykgewoJICAgICAgICAgICAgaWYgKE1hdGguYWJzKG1vZHVsZVNpemUgLSBzdGF0ZUNvdW50W2ldKSA+PSBtYXhWYXJpYW5jZSkgewoJICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gdHJ1ZTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIDxwPkFmdGVyIGEgaG9yaXpvbnRhbCBzY2FuIGZpbmRzIGEgcG90ZW50aWFsIGFsaWdubWVudCBwYXR0ZXJuLCB0aGlzIG1ldGhvZAoJICAgICAqICJjcm9zcy1jaGVja3MiIGJ5IHNjYW5uaW5nIGRvd24gdmVydGljYWxseSB0aHJvdWdoIHRoZSBjZW50ZXIgb2YgdGhlIHBvc3NpYmxlCgkgICAgICogYWxpZ25tZW50IHBhdHRlcm4gdG8gc2VlIGlmIHRoZSBzYW1lIHByb3BvcnRpb24gaXMgZGV0ZWN0ZWQuPC9wPgoJICAgICAqCgkgICAgICogQHBhcmFtIHN0YXJ0SSByb3cgd2hlcmUgYW4gYWxpZ25tZW50IHBhdHRlcm4gd2FzIGRldGVjdGVkCgkgICAgICogQHBhcmFtIGNlbnRlckogY2VudGVyIG9mIHRoZSBzZWN0aW9uIHRoYXQgYXBwZWFycyB0byBjcm9zcyBhbiBhbGlnbm1lbnQgcGF0dGVybgoJICAgICAqIEBwYXJhbSBtYXhDb3VudCBtYXhpbXVtIHJlYXNvbmFibGUgbnVtYmVyIG9mIG1vZHVsZXMgdGhhdCBzaG91bGQgYmUKCSAgICAgKiBvYnNlcnZlZCBpbiBhbnkgcmVhZGluZyBzdGF0ZSwgYmFzZWQgb24gdGhlIHJlc3VsdHMgb2YgdGhlIGhvcml6b250YWwgc2NhbgoJICAgICAqIEByZXR1cm4gdmVydGljYWwgY2VudGVyIG9mIGFsaWdubWVudCBwYXR0ZXJuLCBvciB7QGxpbmsgRmxvYXQjTmFOfSBpZiBub3QgZm91bmQKCSAgICAgKi8KCSAgICBBbGlnbm1lbnRQYXR0ZXJuRmluZGVyLnByb3RvdHlwZS5jcm9zc0NoZWNrVmVydGljYWwgPSBmdW5jdGlvbiAoc3RhcnRJIC8qaW50Ki8sIGNlbnRlckogLyppbnQqLywgbWF4Q291bnQgLyppbnQqLywgb3JpZ2luYWxTdGF0ZUNvdW50VG90YWwgLyppbnQqLykgewoJICAgICAgICB2YXIgaW1hZ2UgPSB0aGlzLmltYWdlOwoJICAgICAgICB2YXIgbWF4SSA9IGltYWdlLmdldEhlaWdodCgpOwoJICAgICAgICB2YXIgc3RhdGVDb3VudCA9IHRoaXMuY3Jvc3NDaGVja1N0YXRlQ291bnQ7CgkgICAgICAgIHN0YXRlQ291bnRbMF0gPSAwOwoJICAgICAgICBzdGF0ZUNvdW50WzFdID0gMDsKCSAgICAgICAgc3RhdGVDb3VudFsyXSA9IDA7CgkgICAgICAgIC8vIFN0YXJ0IGNvdW50aW5nIHVwIGZyb20gY2VudGVyCgkgICAgICAgIHZhciBpID0gc3RhcnRJOwoJICAgICAgICB3aGlsZSAoaSA+PSAwICYmIGltYWdlLmdldChjZW50ZXJKLCBpKSAmJiBzdGF0ZUNvdW50WzFdIDw9IG1heENvdW50KSB7CgkgICAgICAgICAgICBzdGF0ZUNvdW50WzFdKys7CgkgICAgICAgICAgICBpLS07CgkgICAgICAgIH0KCSAgICAgICAgLy8gSWYgYWxyZWFkeSB0b28gbWFueSBtb2R1bGVzIGluIHRoaXMgc3RhdGUgb3IgcmFuIG9mZiB0aGUgZWRnZToKCSAgICAgICAgaWYgKGkgPCAwIHx8IHN0YXRlQ291bnRbMV0gPiBtYXhDb3VudCkgewoJICAgICAgICAgICAgcmV0dXJuIE5hTjsKCSAgICAgICAgfQoJICAgICAgICB3aGlsZSAoaSA+PSAwICYmICFpbWFnZS5nZXQoY2VudGVySiwgaSkgJiYgc3RhdGVDb3VudFswXSA8PSBtYXhDb3VudCkgewoJICAgICAgICAgICAgc3RhdGVDb3VudFswXSsrOwoJICAgICAgICAgICAgaS0tOwoJICAgICAgICB9CgkgICAgICAgIGlmIChzdGF0ZUNvdW50WzBdID4gbWF4Q291bnQpIHsKCSAgICAgICAgICAgIHJldHVybiBOYU47CgkgICAgICAgIH0KCSAgICAgICAgLy8gTm93IGFsc28gY291bnQgZG93biBmcm9tIGNlbnRlcgoJICAgICAgICBpID0gc3RhcnRJICsgMTsKCSAgICAgICAgd2hpbGUgKGkgPCBtYXhJICYmIGltYWdlLmdldChjZW50ZXJKLCBpKSAmJiBzdGF0ZUNvdW50WzFdIDw9IG1heENvdW50KSB7CgkgICAgICAgICAgICBzdGF0ZUNvdW50WzFdKys7CgkgICAgICAgICAgICBpKys7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKGkgPT09IG1heEkgfHwgc3RhdGVDb3VudFsxXSA+IG1heENvdW50KSB7CgkgICAgICAgICAgICByZXR1cm4gTmFOOwoJICAgICAgICB9CgkgICAgICAgIHdoaWxlIChpIDwgbWF4SSAmJiAhaW1hZ2UuZ2V0KGNlbnRlckosIGkpICYmIHN0YXRlQ291bnRbMl0gPD0gbWF4Q291bnQpIHsKCSAgICAgICAgICAgIHN0YXRlQ291bnRbMl0rKzsKCSAgICAgICAgICAgIGkrKzsKCSAgICAgICAgfQoJICAgICAgICBpZiAoc3RhdGVDb3VudFsyXSA+IG1heENvdW50KSB7CgkgICAgICAgICAgICByZXR1cm4gTmFOOwoJICAgICAgICB9CgkgICAgICAgIHZhciBzdGF0ZUNvdW50VG90YWwgPSBzdGF0ZUNvdW50WzBdICsgc3RhdGVDb3VudFsxXSArIHN0YXRlQ291bnRbMl07CgkgICAgICAgIGlmICg1ICogTWF0aC5hYnMoc3RhdGVDb3VudFRvdGFsIC0gb3JpZ2luYWxTdGF0ZUNvdW50VG90YWwpID49IDIgKiBvcmlnaW5hbFN0YXRlQ291bnRUb3RhbCkgewoJICAgICAgICAgICAgcmV0dXJuIE5hTjsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gdGhpcy5mb3VuZFBhdHRlcm5Dcm9zcyhzdGF0ZUNvdW50KSA/IEFsaWdubWVudFBhdHRlcm5GaW5kZXIuY2VudGVyRnJvbUVuZChzdGF0ZUNvdW50LCBpKSA6IE5hTjsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIDxwPlRoaXMgaXMgY2FsbGVkIHdoZW4gYSBob3Jpem9udGFsIHNjYW4gZmluZHMgYSBwb3NzaWJsZSBhbGlnbm1lbnQgcGF0dGVybi4gSXQgd2lsbAoJICAgICAqIGNyb3NzIGNoZWNrIHdpdGggYSB2ZXJ0aWNhbCBzY2FuLCBhbmQgaWYgc3VjY2Vzc2Z1bCwgd2lsbCBzZWUgaWYgdGhpcyBwYXR0ZXJuIGhhZCBiZWVuCgkgICAgICogZm91bmQgb24gYSBwcmV2aW91cyBob3Jpem9udGFsIHNjYW4uIElmIHNvLCB3ZSBjb25zaWRlciBpdCBjb25maXJtZWQgYW5kIGNvbmNsdWRlIHdlIGhhdmUKCSAgICAgKiBmb3VuZCB0aGUgYWxpZ25tZW50IHBhdHRlcm4uPC9wPgoJICAgICAqCgkgICAgICogQHBhcmFtIHN0YXRlQ291bnQgcmVhZGluZyBzdGF0ZSBtb2R1bGUgY291bnRzIGZyb20gaG9yaXpvbnRhbCBzY2FuCgkgICAgICogQHBhcmFtIGkgcm93IHdoZXJlIGFsaWdubWVudCBwYXR0ZXJuIG1heSBiZSBmb3VuZAoJICAgICAqIEBwYXJhbSBqIGVuZCBvZiBwb3NzaWJsZSBhbGlnbm1lbnQgcGF0dGVybiBpbiByb3cKCSAgICAgKiBAcmV0dXJuIHtAbGluayBBbGlnbm1lbnRQYXR0ZXJufSBpZiB3ZSBoYXZlIGZvdW5kIHRoZSBzYW1lIHBhdHRlcm4gdHdpY2UsIG9yIG51bGwgaWYgbm90CgkgICAgICovCgkgICAgQWxpZ25tZW50UGF0dGVybkZpbmRlci5wcm90b3R5cGUuaGFuZGxlUG9zc2libGVDZW50ZXIgPSBmdW5jdGlvbiAoc3RhdGVDb3VudCwgaSAvKmludCovLCBqIC8qaW50Ki8pIHsKCSAgICAgICAgdmFyIGVfMSwgX2E7CgkgICAgICAgIHZhciBzdGF0ZUNvdW50VG90YWwgPSBzdGF0ZUNvdW50WzBdICsgc3RhdGVDb3VudFsxXSArIHN0YXRlQ291bnRbMl07CgkgICAgICAgIHZhciBjZW50ZXJKID0gQWxpZ25tZW50UGF0dGVybkZpbmRlci5jZW50ZXJGcm9tRW5kKHN0YXRlQ291bnQsIGopOwoJICAgICAgICB2YXIgY2VudGVySSA9IHRoaXMuY3Jvc3NDaGVja1ZlcnRpY2FsKGksIC8qKGludCkgKi8gY2VudGVySiwgMiAqIHN0YXRlQ291bnRbMV0sIHN0YXRlQ291bnRUb3RhbCk7CgkgICAgICAgIGlmICghaXNOYU4oY2VudGVySSkpIHsKCSAgICAgICAgICAgIHZhciBlc3RpbWF0ZWRNb2R1bGVTaXplID0gKHN0YXRlQ291bnRbMF0gKyBzdGF0ZUNvdW50WzFdICsgc3RhdGVDb3VudFsyXSkgLyAzLjA7CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIGZvciAodmFyIF9iID0gX192YWx1ZXModGhpcy5wb3NzaWJsZUNlbnRlcnMpLCBfYyA9IF9iLm5leHQoKTsgIV9jLmRvbmU7IF9jID0gX2IubmV4dCgpKSB7CgkgICAgICAgICAgICAgICAgICAgIHZhciBjZW50ZXIgPSBfYy52YWx1ZTsKCSAgICAgICAgICAgICAgICAgICAgLy8gTG9vayBmb3IgYWJvdXQgdGhlIHNhbWUgY2VudGVyIGFuZCBtb2R1bGUgc2l6ZToKCSAgICAgICAgICAgICAgICAgICAgaWYgKGNlbnRlci5hYm91dEVxdWFscyhlc3RpbWF0ZWRNb2R1bGVTaXplLCBjZW50ZXJJLCBjZW50ZXJKKSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNlbnRlci5jb21iaW5lRXN0aW1hdGUoY2VudGVySSwgY2VudGVySiwgZXN0aW1hdGVkTW9kdWxlU2l6ZSk7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfQoJICAgICAgICAgICAgZmluYWxseSB7CgkgICAgICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICAvLyBIYWRuJ3QgZm91bmQgdGhpcyBiZWZvcmU7IHNhdmUgaXQKCSAgICAgICAgICAgIHZhciBwb2ludCA9IG5ldyBBbGlnbm1lbnRQYXR0ZXJuXzEuZGVmYXVsdChjZW50ZXJKLCBjZW50ZXJJLCBlc3RpbWF0ZWRNb2R1bGVTaXplKTsKCSAgICAgICAgICAgIHRoaXMucG9zc2libGVDZW50ZXJzLnB1c2gocG9pbnQpOwoJICAgICAgICAgICAgaWYgKHRoaXMucmVzdWx0UG9pbnRDYWxsYmFjayAhPT0gbnVsbCAmJiB0aGlzLnJlc3VsdFBvaW50Q2FsbGJhY2sgIT09IHVuZGVmaW5lZCkgewoJICAgICAgICAgICAgICAgIHRoaXMucmVzdWx0UG9pbnRDYWxsYmFjay5mb3VuZFBvc3NpYmxlUmVzdWx0UG9pbnQocG9pbnQpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBudWxsOwoJICAgIH07CgkgICAgcmV0dXJuIEFsaWdubWVudFBhdHRlcm5GaW5kZXI7Cgl9KCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gQWxpZ25tZW50UGF0dGVybkZpbmRlcjsKCgl9KTsKCgl2YXIgRmluZGVyUGF0dGVybl8xJDEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CgkvKgoJICogQ29weXJpZ2h0IDIwMDcgWlhpbmcgYXV0aG9ycwoJICoKCSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkgKgoJICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSAqCgkgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSAqLwoJdmFyIF9fZXh0ZW5kcyA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7CgkgICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8CgkgICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8CgkgICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTsKCSAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgfTsKCSAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9CgkgICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTsKCSAgICB9OwoJfSkoKTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgkvKm5hbWVzcGFjZSBjb20uZ29vZ2xlLnp4aW5nLnFyY29kZS5kZXRlY3RvciB7Ki8KCgkvKioKCSAqIDxwPkVuY2Fwc3VsYXRlcyBhIGZpbmRlciBwYXR0ZXJuLCB3aGljaCBhcmUgdGhlIHRocmVlIHNxdWFyZSBwYXR0ZXJucyBmb3VuZCBpbgoJICogdGhlIGNvcm5lcnMgb2YgUVIgQ29kZXMuIEl0IGFsc28gZW5jYXBzdWxhdGVzIGEgY291bnQgb2Ygc2ltaWxhciBmaW5kZXIgcGF0dGVybnMsCgkgKiBhcyBhIGNvbnZlbmllbmNlIHRvIHRoZSBmaW5kZXIncyBib29ra2VlcGluZy48L3A+CgkgKgoJICogQGF1dGhvciBTZWFuIE93ZW4KCSAqLwoJdmFyIEZpbmRlclBhdHRlcm4gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7CgkgICAgX19leHRlbmRzKEZpbmRlclBhdHRlcm4sIF9zdXBlcik7CgkgICAgLy8gRmluZGVyUGF0dGVybihwb3NYOiBudW1iZXIvKmZsb2F0Ki8sIHBvc1k6IG51bWJlci8qZmxvYXQqLywgZXN0aW1hdGVkTW9kdWxlU2l6ZTogbnVtYmVyLypmbG9hdCovKSB7CgkgICAgLy8gICB0aGlzKHBvc1gsIHBvc1ksIGVzdGltYXRlZE1vZHVsZVNpemUsIDEpCgkgICAgLy8gfQoJICAgIGZ1bmN0aW9uIEZpbmRlclBhdHRlcm4ocG9zWCAvKmZsb2F0Ki8sIHBvc1kgLypmbG9hdCovLCBlc3RpbWF0ZWRNb2R1bGVTaXplIC8qZmxvYXQqLywgY291bnQgLyppbnQqLykgewoJICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBwb3NYLCBwb3NZKSB8fCB0aGlzOwoJICAgICAgICBfdGhpcy5lc3RpbWF0ZWRNb2R1bGVTaXplID0gZXN0aW1hdGVkTW9kdWxlU2l6ZTsKCSAgICAgICAgX3RoaXMuY291bnQgPSBjb3VudDsKCSAgICAgICAgaWYgKHVuZGVmaW5lZCA9PT0gY291bnQpIHsKCSAgICAgICAgICAgIF90aGlzLmNvdW50ID0gMTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gX3RoaXM7CgkgICAgfQoJICAgIEZpbmRlclBhdHRlcm4ucHJvdG90eXBlLmdldEVzdGltYXRlZE1vZHVsZVNpemUgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmVzdGltYXRlZE1vZHVsZVNpemU7CgkgICAgfTsKCSAgICBGaW5kZXJQYXR0ZXJuLnByb3RvdHlwZS5nZXRDb3VudCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuY291bnQ7CgkgICAgfTsKCSAgICAvKgoJICAgIHZvaWQgaW5jcmVtZW50Q291bnQoKSB7CgkgICAgICB0aGlzLmNvdW50KysKCSAgICB9CgkgICAgICovCgkgICAgLyoqCgkgICAgICogPHA+RGV0ZXJtaW5lcyBpZiB0aGlzIGZpbmRlciBwYXR0ZXJuICJhYm91dCBlcXVhbHMiIGEgZmluZGVyIHBhdHRlcm4gYXQgdGhlIHN0YXRlZAoJICAgICAqIHBvc2l0aW9uIGFuZCBzaXplIC0tIG1lYW5pbmcsIGl0IGlzIGF0IG5lYXJseSB0aGUgc2FtZSBjZW50ZXIgd2l0aCBuZWFybHkgdGhlIHNhbWUgc2l6ZS48L3A+CgkgICAgICovCgkgICAgRmluZGVyUGF0dGVybi5wcm90b3R5cGUuYWJvdXRFcXVhbHMgPSBmdW5jdGlvbiAobW9kdWxlU2l6ZSAvKmZsb2F0Ki8sIGkgLypmbG9hdCovLCBqIC8qZmxvYXQqLykgewoJICAgICAgICBpZiAoTWF0aC5hYnMoaSAtIHRoaXMuZ2V0WSgpKSA8PSBtb2R1bGVTaXplICYmIE1hdGguYWJzKGogLSB0aGlzLmdldFgoKSkgPD0gbW9kdWxlU2l6ZSkgewoJICAgICAgICAgICAgdmFyIG1vZHVsZVNpemVEaWZmID0gTWF0aC5hYnMobW9kdWxlU2l6ZSAtIHRoaXMuZXN0aW1hdGVkTW9kdWxlU2l6ZSk7CgkgICAgICAgICAgICByZXR1cm4gbW9kdWxlU2l6ZURpZmYgPD0gMS4wIHx8IG1vZHVsZVNpemVEaWZmIDw9IHRoaXMuZXN0aW1hdGVkTW9kdWxlU2l6ZTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gZmFsc2U7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBDb21iaW5lcyB0aGlzIG9iamVjdCdzIGN1cnJlbnQgZXN0aW1hdGUgb2YgYSBmaW5kZXIgcGF0dGVybiBwb3NpdGlvbiBhbmQgbW9kdWxlIHNpemUKCSAgICAgKiB3aXRoIGEgbmV3IGVzdGltYXRlLiBJdCByZXR1cm5zIGEgbmV3IHtAY29kZSBGaW5kZXJQYXR0ZXJufSBjb250YWluaW5nIGEgd2VpZ2h0ZWQgYXZlcmFnZQoJICAgICAqIGJhc2VkIG9uIGNvdW50LgoJICAgICAqLwoJICAgIEZpbmRlclBhdHRlcm4ucHJvdG90eXBlLmNvbWJpbmVFc3RpbWF0ZSA9IGZ1bmN0aW9uIChpIC8qZmxvYXQqLywgaiAvKmZsb2F0Ki8sIG5ld01vZHVsZVNpemUgLypmbG9hdCovKSB7CgkgICAgICAgIHZhciBjb21iaW5lZENvdW50ID0gdGhpcy5jb3VudCArIDE7CgkgICAgICAgIHZhciBjb21iaW5lZFggPSAodGhpcy5jb3VudCAqIHRoaXMuZ2V0WCgpICsgaikgLyBjb21iaW5lZENvdW50OwoJICAgICAgICB2YXIgY29tYmluZWRZID0gKHRoaXMuY291bnQgKiB0aGlzLmdldFkoKSArIGkpIC8gY29tYmluZWRDb3VudDsKCSAgICAgICAgdmFyIGNvbWJpbmVkTW9kdWxlU2l6ZSA9ICh0aGlzLmNvdW50ICogdGhpcy5lc3RpbWF0ZWRNb2R1bGVTaXplICsgbmV3TW9kdWxlU2l6ZSkgLyBjb21iaW5lZENvdW50OwoJICAgICAgICByZXR1cm4gbmV3IEZpbmRlclBhdHRlcm4oY29tYmluZWRYLCBjb21iaW5lZFksIGNvbWJpbmVkTW9kdWxlU2l6ZSwgY29tYmluZWRDb3VudCk7CgkgICAgfTsKCSAgICByZXR1cm4gRmluZGVyUGF0dGVybjsKCX0oUmVzdWx0UG9pbnRfMS5kZWZhdWx0KSk7CglleHBvcnRzLmRlZmF1bHQgPSBGaW5kZXJQYXR0ZXJuOwoKCX0pOwoKCXZhciBGaW5kZXJQYXR0ZXJuSW5mb18xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJLyoKCSAqIENvcHlyaWdodCAyMDA3IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgkvKioKCSAqIDxwPkVuY2Fwc3VsYXRlcyBpbmZvcm1hdGlvbiBhYm91dCBmaW5kZXIgcGF0dGVybnMgaW4gYW4gaW1hZ2UsIGluY2x1ZGluZyB0aGUgbG9jYXRpb24gb2YKCSAqIHRoZSB0aHJlZSBmaW5kZXIgcGF0dGVybnMsIGFuZCB0aGVpciBlc3RpbWF0ZWQgbW9kdWxlIHNpemUuPC9wPgoJICoKCSAqIEBhdXRob3IgU2VhbiBPd2VuCgkgKi8KCXZhciBGaW5kZXJQYXR0ZXJuSW5mbyA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBGaW5kZXJQYXR0ZXJuSW5mbyhwYXR0ZXJuQ2VudGVycykgewoJICAgICAgICB0aGlzLmJvdHRvbUxlZnQgPSBwYXR0ZXJuQ2VudGVyc1swXTsKCSAgICAgICAgdGhpcy50b3BMZWZ0ID0gcGF0dGVybkNlbnRlcnNbMV07CgkgICAgICAgIHRoaXMudG9wUmlnaHQgPSBwYXR0ZXJuQ2VudGVyc1syXTsKCSAgICB9CgkgICAgRmluZGVyUGF0dGVybkluZm8ucHJvdG90eXBlLmdldEJvdHRvbUxlZnQgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmJvdHRvbUxlZnQ7CgkgICAgfTsKCSAgICBGaW5kZXJQYXR0ZXJuSW5mby5wcm90b3R5cGUuZ2V0VG9wTGVmdCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMudG9wTGVmdDsKCSAgICB9OwoJICAgIEZpbmRlclBhdHRlcm5JbmZvLnByb3RvdHlwZS5nZXRUb3BSaWdodCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMudG9wUmlnaHQ7CgkgICAgfTsKCSAgICByZXR1cm4gRmluZGVyUGF0dGVybkluZm87Cgl9KCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gRmluZGVyUGF0dGVybkluZm87CgoJfSk7CgoJdmFyIEZpbmRlclBhdHRlcm5GaW5kZXJfMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCS8qCgkgKiBDb3B5cmlnaHQgMjAwNyBaWGluZyBhdXRob3JzCgkgKgoJICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSAqCgkgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJICoKCSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJICovCgl2YXIgX192YWx1ZXMgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX192YWx1ZXMpIHx8IGZ1bmN0aW9uKG8pIHsKCSAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09ICJmdW5jdGlvbiIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDsKCSAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTsKCSAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09ICJudW1iZXIiKSByZXR1cm4gewoJICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7CgkgICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwOwoJICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9OwoJICAgICAgICB9CgkgICAgfTsKCSAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyAiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS4iIDogIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC4iKTsKCX07CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJLypuYW1lc3BhY2UgY29tLmdvb2dsZS56eGluZy5xcmNvZGUuZGV0ZWN0b3IgeyovCgoKCgoKCS8qaW1wb3J0IGphdmEuaW8uU2VyaWFsaXphYmxlOyovCgkvKmltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OyovCgkvKmltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7Ki8KCS8qaW1wb3J0IGphdmEudXRpbC5Db21wYXJhdG9yOyovCgkvKmltcG9ydCBqYXZhLnV0aWwuTGlzdDsqLwoJLyppbXBvcnQgamF2YS51dGlsLk1hcDsqLwoJLyoqCgkgKiA8cD5UaGlzIGNsYXNzIGF0dGVtcHRzIHRvIGZpbmQgZmluZGVyIHBhdHRlcm5zIGluIGEgUVIgQ29kZS4gRmluZGVyIHBhdHRlcm5zIGFyZSB0aGUgc3F1YXJlCgkgKiBtYXJrZXJzIGF0IHRocmVlIGNvcm5lcnMgb2YgYSBRUiBDb2RlLjwvcD4KCSAqCgkgKiA8cD5UaGlzIGNsYXNzIGlzIHRocmVhZC1zYWZlIGJ1dCBub3QgcmVlbnRyYW50LiBFYWNoIHRocmVhZCBtdXN0IGFsbG9jYXRlIGl0cyBvd24gb2JqZWN0LgoJICoKCSAqIEBhdXRob3IgU2VhbiBPd2VuCgkgKi8KCXZhciBGaW5kZXJQYXR0ZXJuRmluZGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIC8qKgoJICAgICAqIDxwPkNyZWF0ZXMgYSBmaW5kZXIgdGhhdCB3aWxsIHNlYXJjaCB0aGUgaW1hZ2UgZm9yIHRocmVlIGZpbmRlciBwYXR0ZXJucy48L3A+CgkgICAgICoKCSAgICAgKiBAcGFyYW0gaW1hZ2UgaW1hZ2UgdG8gc2VhcmNoCgkgICAgICovCgkgICAgLy8gcHVibGljIGNvbnN0cnVjdG9yKGltYWdlOiBCaXRNYXRyaXgpIHsKCSAgICAvLyAgIHRoaXMoaW1hZ2UsIG51bGwpCgkgICAgLy8gfQoJICAgIGZ1bmN0aW9uIEZpbmRlclBhdHRlcm5GaW5kZXIoaW1hZ2UsIHJlc3VsdFBvaW50Q2FsbGJhY2spIHsKCSAgICAgICAgdGhpcy5pbWFnZSA9IGltYWdlOwoJICAgICAgICB0aGlzLnJlc3VsdFBvaW50Q2FsbGJhY2sgPSByZXN1bHRQb2ludENhbGxiYWNrOwoJICAgICAgICB0aGlzLnBvc3NpYmxlQ2VudGVycyA9IFtdOwoJICAgICAgICB0aGlzLmNyb3NzQ2hlY2tTdGF0ZUNvdW50ID0gbmV3IEludDMyQXJyYXkoNSk7CgkgICAgICAgIHRoaXMucmVzdWx0UG9pbnRDYWxsYmFjayA9IHJlc3VsdFBvaW50Q2FsbGJhY2s7CgkgICAgfQoJICAgIEZpbmRlclBhdHRlcm5GaW5kZXIucHJvdG90eXBlLmdldEltYWdlID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5pbWFnZTsKCSAgICB9OwoJICAgIEZpbmRlclBhdHRlcm5GaW5kZXIucHJvdG90eXBlLmdldFBvc3NpYmxlQ2VudGVycyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMucG9zc2libGVDZW50ZXJzOwoJICAgIH07CgkgICAgRmluZGVyUGF0dGVybkZpbmRlci5wcm90b3R5cGUuZmluZCA9IGZ1bmN0aW9uIChoaW50cykgewoJICAgICAgICB2YXIgdHJ5SGFyZGVyID0gKGhpbnRzICE9PSBudWxsICYmIGhpbnRzICE9PSB1bmRlZmluZWQpICYmIHVuZGVmaW5lZCAhPT0gaGludHMuZ2V0KERlY29kZUhpbnRUeXBlXzEuZGVmYXVsdC5UUllfSEFSREVSKTsKCSAgICAgICAgdmFyIHB1cmVCYXJjb2RlID0gKGhpbnRzICE9PSBudWxsICYmIGhpbnRzICE9PSB1bmRlZmluZWQpICYmIHVuZGVmaW5lZCAhPT0gaGludHMuZ2V0KERlY29kZUhpbnRUeXBlXzEuZGVmYXVsdC5QVVJFX0JBUkNPREUpOwoJICAgICAgICB2YXIgaW1hZ2UgPSB0aGlzLmltYWdlOwoJICAgICAgICB2YXIgbWF4SSA9IGltYWdlLmdldEhlaWdodCgpOwoJICAgICAgICB2YXIgbWF4SiA9IGltYWdlLmdldFdpZHRoKCk7CgkgICAgICAgIC8vIFdlIGFyZSBsb29raW5nIGZvciBibGFjay93aGl0ZS9ibGFjay93aGl0ZS9ibGFjayBtb2R1bGVzIGluCgkgICAgICAgIC8vIDE6MTozOjE6MSByYXRpbzsgdGhpcyB0cmFja3MgdGhlIG51bWJlciBvZiBzdWNoIG1vZHVsZXMgc2VlbiBzbyBmYXIKCSAgICAgICAgLy8gTGV0J3MgYXNzdW1lIHRoYXQgdGhlIG1heGltdW0gdmVyc2lvbiBRUiBDb2RlIHdlIHN1cHBvcnQgdGFrZXMgdXAgMS80IHRoZSBoZWlnaHQgb2YgdGhlCgkgICAgICAgIC8vIGltYWdlLCBhbmQgdGhlbiBhY2NvdW50IGZvciB0aGUgY2VudGVyIGJlaW5nIDMgbW9kdWxlcyBpbiBzaXplLiBUaGlzIGdpdmVzIHRoZSBzbWFsbGVzdAoJICAgICAgICAvLyBudW1iZXIgb2YgcGl4ZWxzIHRoZSBjZW50ZXIgY291bGQgYmUsIHNvIHNraXAgdGhpcyBvZnRlbi4gV2hlbiB0cnlpbmcgaGFyZGVyLCBsb29rIGZvciBhbGwKCSAgICAgICAgLy8gUVIgdmVyc2lvbnMgcmVnYXJkbGVzcyBvZiBob3cgZGVuc2UgdGhleSBhcmUuCgkgICAgICAgIHZhciBpU2tpcCA9IE1hdGguZmxvb3IoKDMgKiBtYXhJKSAvICg0ICogRmluZGVyUGF0dGVybkZpbmRlci5NQVhfTU9EVUxFUykpOwoJICAgICAgICBpZiAoaVNraXAgPCBGaW5kZXJQYXR0ZXJuRmluZGVyLk1JTl9TS0lQIHx8IHRyeUhhcmRlcikgewoJICAgICAgICAgICAgaVNraXAgPSBGaW5kZXJQYXR0ZXJuRmluZGVyLk1JTl9TS0lQOwoJICAgICAgICB9CgkgICAgICAgIHZhciBkb25lID0gZmFsc2U7CgkgICAgICAgIHZhciBzdGF0ZUNvdW50ID0gbmV3IEludDMyQXJyYXkoNSk7CgkgICAgICAgIGZvciAodmFyIGkgPSBpU2tpcCAtIDE7IGkgPCBtYXhJICYmICFkb25lOyBpICs9IGlTa2lwKSB7CgkgICAgICAgICAgICAvLyBHZXQgYSByb3cgb2YgYmxhY2svd2hpdGUgdmFsdWVzCgkgICAgICAgICAgICBzdGF0ZUNvdW50WzBdID0gMDsKCSAgICAgICAgICAgIHN0YXRlQ291bnRbMV0gPSAwOwoJICAgICAgICAgICAgc3RhdGVDb3VudFsyXSA9IDA7CgkgICAgICAgICAgICBzdGF0ZUNvdW50WzNdID0gMDsKCSAgICAgICAgICAgIHN0YXRlQ291bnRbNF0gPSAwOwoJICAgICAgICAgICAgdmFyIGN1cnJlbnRTdGF0ZSA9IDA7CgkgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG1heEo7IGorKykgewoJICAgICAgICAgICAgICAgIGlmIChpbWFnZS5nZXQoaiwgaSkpIHsKCSAgICAgICAgICAgICAgICAgICAgLy8gQmxhY2sgcGl4ZWwKCSAgICAgICAgICAgICAgICAgICAgaWYgKChjdXJyZW50U3RhdGUgJiAxKSA9PT0gMSkgeyAvLyBDb3VudGluZyB3aGl0ZSBwaXhlbHMKCSAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdGF0ZSsrOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIHN0YXRlQ291bnRbY3VycmVudFN0YXRlXSsrOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBlbHNlIHsgLy8gV2hpdGUgcGl4ZWwKCSAgICAgICAgICAgICAgICAgICAgaWYgKChjdXJyZW50U3RhdGUgJiAxKSA9PT0gMCkgeyAvLyBDb3VudGluZyBibGFjayBwaXhlbHMKCSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50U3RhdGUgPT09IDQpIHsgLy8gQSB3aW5uZXI/CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEZpbmRlclBhdHRlcm5GaW5kZXIuZm91bmRQYXR0ZXJuQ3Jvc3Moc3RhdGVDb3VudCkpIHsgLy8gWWVzCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb25maXJtZWQgPSB0aGlzLmhhbmRsZVBvc3NpYmxlQ2VudGVyKHN0YXRlQ291bnQsIGksIGosIHB1cmVCYXJjb2RlKTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpcm1lZCA9PT0gdHJ1ZSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3RhcnQgZXhhbWluaW5nIGV2ZXJ5IG90aGVyIGxpbmUuIENoZWNraW5nIGVhY2ggbGluZSB0dXJuZWQgb3V0IHRvIGJlIHRvbwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXhwZW5zaXZlIGFuZCBkaWRuJ3QgaW1wcm92ZSBwZXJmb3JtYW5jZS4KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlTa2lwID0gMjsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmhhc1NraXBwZWQgPT09IHRydWUpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lID0gdGhpcy5oYXZlTXVsdGlwbHlDb25maXJtZWRDZW50ZXJzKCk7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcm93U2tpcCA9IHRoaXMuZmluZFJvd1NraXAoKTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocm93U2tpcCA+IHN0YXRlQ291bnRbMl0pIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2tpcCByb3dzIGJldHdlZW4gcm93IG9mIGxvd2VyIGNvbmZpcm1lZCBjZW50ZXIKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHRvcCBvZiBwcmVzdW1lZCB0aGlyZCBjb25maXJtZWQgY2VudGVyCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ1dCBiYWNrIHVwIGEgYml0IHRvIGdldCBhIGZ1bGwgY2hhbmNlIG9mIGRldGVjdGluZwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpdCwgZW50aXJlIHdpZHRoIG9mIGNlbnRlciBvZiBmaW5kZXIgcGF0dGVybgoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTa2lwIGJ5IHJvd1NraXAsIGJ1dCBiYWNrIG9mZiBieSBzdGF0ZUNvdW50WzJdIChzaXplIG9mIGxhc3QgY2VudGVyCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9mIHBhdHRlcm4gd2Ugc2F3KSB0byBiZSBjb25zZXJ2YXRpdmUsIGFuZCBhbHNvIGJhY2sgb2ZmIGJ5IGlTa2lwIHdoaWNoCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIGFib3V0IHRvIGJlIHJlLWFkZGVkCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgKz0gcm93U2tpcCAtIHN0YXRlQ291bnRbMl0gLSBpU2tpcDsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IG1heEogLSAxOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlQ291bnRbMF0gPSBzdGF0ZUNvdW50WzJdOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVDb3VudFsxXSA9IHN0YXRlQ291bnRbM107CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZUNvdW50WzJdID0gc3RhdGVDb3VudFs0XTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlQ291bnRbM10gPSAxOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVDb3VudFs0XSA9IDA7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RhdGUgPSAzOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2xlYXIgc3RhdGUgdG8gc3RhcnQgbG9va2luZyBhZ2FpbgoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RhdGUgPSAwOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZUNvdW50WzBdID0gMDsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVDb3VudFsxXSA9IDA7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlQ291bnRbMl0gPSAwOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZUNvdW50WzNdID0gMDsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVDb3VudFs0XSA9IDA7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeyAvLyBObywgc2hpZnQgY291bnRzIGJhY2sgYnkgdHdvCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlQ291bnRbMF0gPSBzdGF0ZUNvdW50WzJdOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZUNvdW50WzFdID0gc3RhdGVDb3VudFszXTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVDb3VudFsyXSA9IHN0YXRlQ291bnRbNF07CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlQ291bnRbM10gPSAxOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZUNvdW50WzRdID0gMDsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFN0YXRlID0gMzsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZUNvdW50WysrY3VycmVudFN0YXRlXSsrOwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIGVsc2UgeyAvLyBDb3VudGluZyB3aGl0ZSBwaXhlbHMKCSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlQ291bnRbY3VycmVudFN0YXRlXSsrOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgaWYgKEZpbmRlclBhdHRlcm5GaW5kZXIuZm91bmRQYXR0ZXJuQ3Jvc3Moc3RhdGVDb3VudCkpIHsKCSAgICAgICAgICAgICAgICB2YXIgY29uZmlybWVkID0gdGhpcy5oYW5kbGVQb3NzaWJsZUNlbnRlcihzdGF0ZUNvdW50LCBpLCBtYXhKLCBwdXJlQmFyY29kZSk7CgkgICAgICAgICAgICAgICAgaWYgKGNvbmZpcm1lZCA9PT0gdHJ1ZSkgewoJICAgICAgICAgICAgICAgICAgICBpU2tpcCA9IHN0YXRlQ291bnRbMF07CgkgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmhhc1NraXBwZWQpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZvdW5kIGEgdGhpcmQgb25lCgkgICAgICAgICAgICAgICAgICAgICAgICBkb25lID0gdGhpcy5oYXZlTXVsdGlwbHlDb25maXJtZWRDZW50ZXJzKCk7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgdmFyIHBhdHRlcm5JbmZvID0gdGhpcy5zZWxlY3RCZXN0UGF0dGVybnMoKTsKCSAgICAgICAgUmVzdWx0UG9pbnRfMS5kZWZhdWx0Lm9yZGVyQmVzdFBhdHRlcm5zKHBhdHRlcm5JbmZvKTsKCSAgICAgICAgcmV0dXJuIG5ldyBGaW5kZXJQYXR0ZXJuSW5mb18xLmRlZmF1bHQocGF0dGVybkluZm8pOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogR2l2ZW4gYSBjb3VudCBvZiBibGFjay93aGl0ZS9ibGFjay93aGl0ZS9ibGFjayBwaXhlbHMganVzdCBzZWVuIGFuZCBhbiBlbmQgcG9zaXRpb24sCgkgICAgICogZmlndXJlcyB0aGUgbG9jYXRpb24gb2YgdGhlIGNlbnRlciBvZiB0aGlzIHJ1bi4KCSAgICAgKi8KCSAgICBGaW5kZXJQYXR0ZXJuRmluZGVyLmNlbnRlckZyb21FbmQgPSBmdW5jdGlvbiAoc3RhdGVDb3VudCwgZW5kIC8qaW50Ki8pIHsKCSAgICAgICAgcmV0dXJuIChlbmQgLSBzdGF0ZUNvdW50WzRdIC0gc3RhdGVDb3VudFszXSkgLSBzdGF0ZUNvdW50WzJdIC8gMi4wOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQHBhcmFtIHN0YXRlQ291bnQgY291bnQgb2YgYmxhY2svd2hpdGUvYmxhY2svd2hpdGUvYmxhY2sgcGl4ZWxzIGp1c3QgcmVhZAoJICAgICAqIEByZXR1cm4gdHJ1ZSBpZmYgdGhlIHByb3BvcnRpb25zIG9mIHRoZSBjb3VudHMgaXMgY2xvc2UgZW5vdWdoIHRvIHRoZSAxLzEvMy8xLzEgcmF0aW9zCgkgICAgICogICAgICAgICB1c2VkIGJ5IGZpbmRlciBwYXR0ZXJucyB0byBiZSBjb25zaWRlcmVkIGEgbWF0Y2gKCSAgICAgKi8KCSAgICBGaW5kZXJQYXR0ZXJuRmluZGVyLmZvdW5kUGF0dGVybkNyb3NzID0gZnVuY3Rpb24gKHN0YXRlQ291bnQpIHsKCSAgICAgICAgdmFyIHRvdGFsTW9kdWxlU2l6ZSA9IDA7CgkgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNTsgaSsrKSB7CgkgICAgICAgICAgICB2YXIgY291bnQgPSBzdGF0ZUNvdW50W2ldOwoJICAgICAgICAgICAgaWYgKGNvdW50ID09PSAwKSB7CgkgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgdG90YWxNb2R1bGVTaXplICs9IGNvdW50OwoJICAgICAgICB9CgkgICAgICAgIGlmICh0b3RhbE1vZHVsZVNpemUgPCA3KSB7CgkgICAgICAgICAgICByZXR1cm4gZmFsc2U7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIG1vZHVsZVNpemUgPSB0b3RhbE1vZHVsZVNpemUgLyA3LjA7CgkgICAgICAgIHZhciBtYXhWYXJpYW5jZSA9IG1vZHVsZVNpemUgLyAyLjA7CgkgICAgICAgIC8vIEFsbG93IGxlc3MgdGhhbiA1MCUgdmFyaWFuY2UgZnJvbSAxLTEtMy0xLTEgcHJvcG9ydGlvbnMKCSAgICAgICAgcmV0dXJuIE1hdGguYWJzKG1vZHVsZVNpemUgLSBzdGF0ZUNvdW50WzBdKSA8IG1heFZhcmlhbmNlICYmCgkgICAgICAgICAgICBNYXRoLmFicyhtb2R1bGVTaXplIC0gc3RhdGVDb3VudFsxXSkgPCBtYXhWYXJpYW5jZSAmJgoJICAgICAgICAgICAgTWF0aC5hYnMoMy4wICogbW9kdWxlU2l6ZSAtIHN0YXRlQ291bnRbMl0pIDwgMyAqIG1heFZhcmlhbmNlICYmCgkgICAgICAgICAgICBNYXRoLmFicyhtb2R1bGVTaXplIC0gc3RhdGVDb3VudFszXSkgPCBtYXhWYXJpYW5jZSAmJgoJICAgICAgICAgICAgTWF0aC5hYnMobW9kdWxlU2l6ZSAtIHN0YXRlQ291bnRbNF0pIDwgbWF4VmFyaWFuY2U7CgkgICAgfTsKCSAgICBGaW5kZXJQYXR0ZXJuRmluZGVyLnByb3RvdHlwZS5nZXRDcm9zc0NoZWNrU3RhdGVDb3VudCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgdmFyIGNyb3NzQ2hlY2tTdGF0ZUNvdW50ID0gdGhpcy5jcm9zc0NoZWNrU3RhdGVDb3VudDsKCSAgICAgICAgY3Jvc3NDaGVja1N0YXRlQ291bnRbMF0gPSAwOwoJICAgICAgICBjcm9zc0NoZWNrU3RhdGVDb3VudFsxXSA9IDA7CgkgICAgICAgIGNyb3NzQ2hlY2tTdGF0ZUNvdW50WzJdID0gMDsKCSAgICAgICAgY3Jvc3NDaGVja1N0YXRlQ291bnRbM10gPSAwOwoJICAgICAgICBjcm9zc0NoZWNrU3RhdGVDb3VudFs0XSA9IDA7CgkgICAgICAgIHJldHVybiBjcm9zc0NoZWNrU3RhdGVDb3VudDsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEFmdGVyIGEgdmVydGljYWwgYW5kIGhvcml6b250YWwgc2NhbiBmaW5kcyBhIHBvdGVudGlhbCBmaW5kZXIgcGF0dGVybiwgdGhpcyBtZXRob2QKCSAgICAgKiAiY3Jvc3MtY3Jvc3MtY3Jvc3MtY2hlY2tzIiBieSBzY2FubmluZyBkb3duIGRpYWdvbmFsbHkgdGhyb3VnaCB0aGUgY2VudGVyIG9mIHRoZSBwb3NzaWJsZQoJICAgICAqIGZpbmRlciBwYXR0ZXJuIHRvIHNlZSBpZiB0aGUgc2FtZSBwcm9wb3J0aW9uIGlzIGRldGVjdGVkLgoJICAgICAqCgkgICAgICogQHBhcmFtIHN0YXJ0SSByb3cgd2hlcmUgYSBmaW5kZXIgcGF0dGVybiB3YXMgZGV0ZWN0ZWQKCSAgICAgKiBAcGFyYW0gY2VudGVySiBjZW50ZXIgb2YgdGhlIHNlY3Rpb24gdGhhdCBhcHBlYXJzIHRvIGNyb3NzIGEgZmluZGVyIHBhdHRlcm4KCSAgICAgKiBAcGFyYW0gbWF4Q291bnQgbWF4aW11bSByZWFzb25hYmxlIG51bWJlciBvZiBtb2R1bGVzIHRoYXQgc2hvdWxkIGJlCgkgICAgICogIG9ic2VydmVkIGluIGFueSByZWFkaW5nIHN0YXRlLCBiYXNlZCBvbiB0aGUgcmVzdWx0cyBvZiB0aGUgaG9yaXpvbnRhbCBzY2FuCgkgICAgICogQHBhcmFtIG9yaWdpbmFsU3RhdGVDb3VudFRvdGFsIFRoZSBvcmlnaW5hbCBzdGF0ZSBjb3VudCB0b3RhbC4KCSAgICAgKiBAcmV0dXJuIHRydWUgaWYgcHJvcG9ydGlvbnMgYXJlIHdpdGhpbmcgZXhwZWN0ZWQgbGltaXRzCgkgICAgICovCgkgICAgRmluZGVyUGF0dGVybkZpbmRlci5wcm90b3R5cGUuY3Jvc3NDaGVja0RpYWdvbmFsID0gZnVuY3Rpb24gKHN0YXJ0SSAvKmludCovLCBjZW50ZXJKIC8qaW50Ki8sIG1heENvdW50IC8qaW50Ki8sIG9yaWdpbmFsU3RhdGVDb3VudFRvdGFsIC8qaW50Ki8pIHsKCSAgICAgICAgdmFyIHN0YXRlQ291bnQgPSB0aGlzLmdldENyb3NzQ2hlY2tTdGF0ZUNvdW50KCk7CgkgICAgICAgIC8vIFN0YXJ0IGNvdW50aW5nIHVwLCBsZWZ0IGZyb20gY2VudGVyIGZpbmRpbmcgYmxhY2sgY2VudGVyIG1hc3MKCSAgICAgICAgdmFyIGkgPSAwOwoJICAgICAgICB2YXIgaW1hZ2UgPSB0aGlzLmltYWdlOwoJICAgICAgICB3aGlsZSAoc3RhcnRJID49IGkgJiYgY2VudGVySiA+PSBpICYmIGltYWdlLmdldChjZW50ZXJKIC0gaSwgc3RhcnRJIC0gaSkpIHsKCSAgICAgICAgICAgIHN0YXRlQ291bnRbMl0rKzsKCSAgICAgICAgICAgIGkrKzsKCSAgICAgICAgfQoJICAgICAgICBpZiAoc3RhcnRJIDwgaSB8fCBjZW50ZXJKIDwgaSkgewoJICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoJICAgICAgICB9CgkgICAgICAgIC8vIENvbnRpbnVlIHVwLCBsZWZ0IGZpbmRpbmcgd2hpdGUgc3BhY2UKCSAgICAgICAgd2hpbGUgKHN0YXJ0SSA+PSBpICYmIGNlbnRlckogPj0gaSAmJiAhaW1hZ2UuZ2V0KGNlbnRlckogLSBpLCBzdGFydEkgLSBpKSAmJgoJICAgICAgICAgICAgc3RhdGVDb3VudFsxXSA8PSBtYXhDb3VudCkgewoJICAgICAgICAgICAgc3RhdGVDb3VudFsxXSsrOwoJICAgICAgICAgICAgaSsrOwoJICAgICAgICB9CgkgICAgICAgIC8vIElmIGFscmVhZHkgdG9vIG1hbnkgbW9kdWxlcyBpbiB0aGlzIHN0YXRlIG9yIHJhbiBvZmYgdGhlIGVkZ2U6CgkgICAgICAgIGlmIChzdGFydEkgPCBpIHx8IGNlbnRlckogPCBpIHx8IHN0YXRlQ291bnRbMV0gPiBtYXhDb3VudCkgewoJICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoJICAgICAgICB9CgkgICAgICAgIC8vIENvbnRpbnVlIHVwLCBsZWZ0IGZpbmRpbmcgYmxhY2sgYm9yZGVyCgkgICAgICAgIHdoaWxlIChzdGFydEkgPj0gaSAmJiBjZW50ZXJKID49IGkgJiYgaW1hZ2UuZ2V0KGNlbnRlckogLSBpLCBzdGFydEkgLSBpKSAmJgoJICAgICAgICAgICAgc3RhdGVDb3VudFswXSA8PSBtYXhDb3VudCkgewoJICAgICAgICAgICAgc3RhdGVDb3VudFswXSsrOwoJICAgICAgICAgICAgaSsrOwoJICAgICAgICB9CgkgICAgICAgIGlmIChzdGF0ZUNvdW50WzBdID4gbWF4Q291bnQpIHsKCSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgbWF4SSA9IGltYWdlLmdldEhlaWdodCgpOwoJICAgICAgICB2YXIgbWF4SiA9IGltYWdlLmdldFdpZHRoKCk7CgkgICAgICAgIC8vIE5vdyBhbHNvIGNvdW50IGRvd24sIHJpZ2h0IGZyb20gY2VudGVyCgkgICAgICAgIGkgPSAxOwoJICAgICAgICB3aGlsZSAoc3RhcnRJICsgaSA8IG1heEkgJiYgY2VudGVySiArIGkgPCBtYXhKICYmIGltYWdlLmdldChjZW50ZXJKICsgaSwgc3RhcnRJICsgaSkpIHsKCSAgICAgICAgICAgIHN0YXRlQ291bnRbMl0rKzsKCSAgICAgICAgICAgIGkrKzsKCSAgICAgICAgfQoJICAgICAgICAvLyBSYW4gb2ZmIHRoZSBlZGdlPwoJICAgICAgICBpZiAoc3RhcnRJICsgaSA+PSBtYXhJIHx8IGNlbnRlckogKyBpID49IG1heEopIHsKCSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKCSAgICAgICAgfQoJICAgICAgICB3aGlsZSAoc3RhcnRJICsgaSA8IG1heEkgJiYgY2VudGVySiArIGkgPCBtYXhKICYmICFpbWFnZS5nZXQoY2VudGVySiArIGksIHN0YXJ0SSArIGkpICYmCgkgICAgICAgICAgICBzdGF0ZUNvdW50WzNdIDwgbWF4Q291bnQpIHsKCSAgICAgICAgICAgIHN0YXRlQ291bnRbM10rKzsKCSAgICAgICAgICAgIGkrKzsKCSAgICAgICAgfQoJICAgICAgICBpZiAoc3RhcnRJICsgaSA+PSBtYXhJIHx8IGNlbnRlckogKyBpID49IG1heEogfHwgc3RhdGVDb3VudFszXSA+PSBtYXhDb3VudCkgewoJICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoJICAgICAgICB9CgkgICAgICAgIHdoaWxlIChzdGFydEkgKyBpIDwgbWF4SSAmJiBjZW50ZXJKICsgaSA8IG1heEogJiYgaW1hZ2UuZ2V0KGNlbnRlckogKyBpLCBzdGFydEkgKyBpKSAmJgoJICAgICAgICAgICAgc3RhdGVDb3VudFs0XSA8IG1heENvdW50KSB7CgkgICAgICAgICAgICBzdGF0ZUNvdW50WzRdKys7CgkgICAgICAgICAgICBpKys7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKHN0YXRlQ291bnRbNF0gPj0gbWF4Q291bnQpIHsKCSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKCSAgICAgICAgfQoJICAgICAgICAvLyBJZiB3ZSBmb3VuZCBhIGZpbmRlci1wYXR0ZXJuLWxpa2Ugc2VjdGlvbiwgYnV0IGl0cyBzaXplIGlzIG1vcmUgdGhhbiAxMDAlIGRpZmZlcmVudCB0aGFuCgkgICAgICAgIC8vIHRoZSBvcmlnaW5hbCwgYXNzdW1lIGl0J3MgYSBmYWxzZSBwb3NpdGl2ZQoJICAgICAgICB2YXIgc3RhdGVDb3VudFRvdGFsID0gc3RhdGVDb3VudFswXSArIHN0YXRlQ291bnRbMV0gKyBzdGF0ZUNvdW50WzJdICsgc3RhdGVDb3VudFszXSArIHN0YXRlQ291bnRbNF07CgkgICAgICAgIHJldHVybiBNYXRoLmFicyhzdGF0ZUNvdW50VG90YWwgLSBvcmlnaW5hbFN0YXRlQ291bnRUb3RhbCkgPCAyICogb3JpZ2luYWxTdGF0ZUNvdW50VG90YWwgJiYKCSAgICAgICAgICAgIEZpbmRlclBhdHRlcm5GaW5kZXIuZm91bmRQYXR0ZXJuQ3Jvc3Moc3RhdGVDb3VudCk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiA8cD5BZnRlciBhIGhvcml6b250YWwgc2NhbiBmaW5kcyBhIHBvdGVudGlhbCBmaW5kZXIgcGF0dGVybiwgdGhpcyBtZXRob2QKCSAgICAgKiAiY3Jvc3MtY2hlY2tzIiBieSBzY2FubmluZyBkb3duIHZlcnRpY2FsbHkgdGhyb3VnaCB0aGUgY2VudGVyIG9mIHRoZSBwb3NzaWJsZQoJICAgICAqIGZpbmRlciBwYXR0ZXJuIHRvIHNlZSBpZiB0aGUgc2FtZSBwcm9wb3J0aW9uIGlzIGRldGVjdGVkLjwvcD4KCSAgICAgKgoJICAgICAqIEBwYXJhbSBzdGFydEkgcm93IHdoZXJlIGEgZmluZGVyIHBhdHRlcm4gd2FzIGRldGVjdGVkCgkgICAgICogQHBhcmFtIGNlbnRlckogY2VudGVyIG9mIHRoZSBzZWN0aW9uIHRoYXQgYXBwZWFycyB0byBjcm9zcyBhIGZpbmRlciBwYXR0ZXJuCgkgICAgICogQHBhcmFtIG1heENvdW50IG1heGltdW0gcmVhc29uYWJsZSBudW1iZXIgb2YgbW9kdWxlcyB0aGF0IHNob3VsZCBiZQoJICAgICAqIG9ic2VydmVkIGluIGFueSByZWFkaW5nIHN0YXRlLCBiYXNlZCBvbiB0aGUgcmVzdWx0cyBvZiB0aGUgaG9yaXpvbnRhbCBzY2FuCgkgICAgICogQHJldHVybiB2ZXJ0aWNhbCBjZW50ZXIgb2YgZmluZGVyIHBhdHRlcm4sIG9yIHtAbGluayBGbG9hdCNOYU59IGlmIG5vdCBmb3VuZAoJICAgICAqLwoJICAgIEZpbmRlclBhdHRlcm5GaW5kZXIucHJvdG90eXBlLmNyb3NzQ2hlY2tWZXJ0aWNhbCA9IGZ1bmN0aW9uIChzdGFydEkgLyppbnQqLywgY2VudGVySiAvKmludCovLCBtYXhDb3VudCAvKmludCovLCBvcmlnaW5hbFN0YXRlQ291bnRUb3RhbCAvKmludCovKSB7CgkgICAgICAgIHZhciBpbWFnZSA9IHRoaXMuaW1hZ2U7CgkgICAgICAgIHZhciBtYXhJID0gaW1hZ2UuZ2V0SGVpZ2h0KCk7CgkgICAgICAgIHZhciBzdGF0ZUNvdW50ID0gdGhpcy5nZXRDcm9zc0NoZWNrU3RhdGVDb3VudCgpOwoJICAgICAgICAvLyBTdGFydCBjb3VudGluZyB1cCBmcm9tIGNlbnRlcgoJICAgICAgICB2YXIgaSA9IHN0YXJ0STsKCSAgICAgICAgd2hpbGUgKGkgPj0gMCAmJiBpbWFnZS5nZXQoY2VudGVySiwgaSkpIHsKCSAgICAgICAgICAgIHN0YXRlQ291bnRbMl0rKzsKCSAgICAgICAgICAgIGktLTsKCSAgICAgICAgfQoJICAgICAgICBpZiAoaSA8IDApIHsKCSAgICAgICAgICAgIHJldHVybiBOYU47CgkgICAgICAgIH0KCSAgICAgICAgd2hpbGUgKGkgPj0gMCAmJiAhaW1hZ2UuZ2V0KGNlbnRlckosIGkpICYmIHN0YXRlQ291bnRbMV0gPD0gbWF4Q291bnQpIHsKCSAgICAgICAgICAgIHN0YXRlQ291bnRbMV0rKzsKCSAgICAgICAgICAgIGktLTsKCSAgICAgICAgfQoJICAgICAgICAvLyBJZiBhbHJlYWR5IHRvbyBtYW55IG1vZHVsZXMgaW4gdGhpcyBzdGF0ZSBvciByYW4gb2ZmIHRoZSBlZGdlOgoJICAgICAgICBpZiAoaSA8IDAgfHwgc3RhdGVDb3VudFsxXSA+IG1heENvdW50KSB7CgkgICAgICAgICAgICByZXR1cm4gTmFOOwoJICAgICAgICB9CgkgICAgICAgIHdoaWxlIChpID49IDAgJiYgaW1hZ2UuZ2V0KGNlbnRlckosIGkpICYmIHN0YXRlQ291bnRbMF0gPD0gbWF4Q291bnQpIHsKCSAgICAgICAgICAgIHN0YXRlQ291bnRbMF0rKzsKCSAgICAgICAgICAgIGktLTsKCSAgICAgICAgfQoJICAgICAgICBpZiAoc3RhdGVDb3VudFswXSA+IG1heENvdW50KSB7CgkgICAgICAgICAgICByZXR1cm4gTmFOOwoJICAgICAgICB9CgkgICAgICAgIC8vIE5vdyBhbHNvIGNvdW50IGRvd24gZnJvbSBjZW50ZXIKCSAgICAgICAgaSA9IHN0YXJ0SSArIDE7CgkgICAgICAgIHdoaWxlIChpIDwgbWF4SSAmJiBpbWFnZS5nZXQoY2VudGVySiwgaSkpIHsKCSAgICAgICAgICAgIHN0YXRlQ291bnRbMl0rKzsKCSAgICAgICAgICAgIGkrKzsKCSAgICAgICAgfQoJICAgICAgICBpZiAoaSA9PT0gbWF4SSkgewoJICAgICAgICAgICAgcmV0dXJuIE5hTjsKCSAgICAgICAgfQoJICAgICAgICB3aGlsZSAoaSA8IG1heEkgJiYgIWltYWdlLmdldChjZW50ZXJKLCBpKSAmJiBzdGF0ZUNvdW50WzNdIDwgbWF4Q291bnQpIHsKCSAgICAgICAgICAgIHN0YXRlQ291bnRbM10rKzsKCSAgICAgICAgICAgIGkrKzsKCSAgICAgICAgfQoJICAgICAgICBpZiAoaSA9PT0gbWF4SSB8fCBzdGF0ZUNvdW50WzNdID49IG1heENvdW50KSB7CgkgICAgICAgICAgICByZXR1cm4gTmFOOwoJICAgICAgICB9CgkgICAgICAgIHdoaWxlIChpIDwgbWF4SSAmJiBpbWFnZS5nZXQoY2VudGVySiwgaSkgJiYgc3RhdGVDb3VudFs0XSA8IG1heENvdW50KSB7CgkgICAgICAgICAgICBzdGF0ZUNvdW50WzRdKys7CgkgICAgICAgICAgICBpKys7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKHN0YXRlQ291bnRbNF0gPj0gbWF4Q291bnQpIHsKCSAgICAgICAgICAgIHJldHVybiBOYU47CgkgICAgICAgIH0KCSAgICAgICAgLy8gSWYgd2UgZm91bmQgYSBmaW5kZXItcGF0dGVybi1saWtlIHNlY3Rpb24sIGJ1dCBpdHMgc2l6ZSBpcyBtb3JlIHRoYW4gNDAlIGRpZmZlcmVudCB0aGFuCgkgICAgICAgIC8vIHRoZSBvcmlnaW5hbCwgYXNzdW1lIGl0J3MgYSBmYWxzZSBwb3NpdGl2ZQoJICAgICAgICB2YXIgc3RhdGVDb3VudFRvdGFsID0gc3RhdGVDb3VudFswXSArIHN0YXRlQ291bnRbMV0gKyBzdGF0ZUNvdW50WzJdICsgc3RhdGVDb3VudFszXSArCgkgICAgICAgICAgICBzdGF0ZUNvdW50WzRdOwoJICAgICAgICBpZiAoNSAqIE1hdGguYWJzKHN0YXRlQ291bnRUb3RhbCAtIG9yaWdpbmFsU3RhdGVDb3VudFRvdGFsKSA+PSAyICogb3JpZ2luYWxTdGF0ZUNvdW50VG90YWwpIHsKCSAgICAgICAgICAgIHJldHVybiBOYU47CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIEZpbmRlclBhdHRlcm5GaW5kZXIuZm91bmRQYXR0ZXJuQ3Jvc3Moc3RhdGVDb3VudCkgPyBGaW5kZXJQYXR0ZXJuRmluZGVyLmNlbnRlckZyb21FbmQoc3RhdGVDb3VudCwgaSkgOiBOYU47CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiA8cD5MaWtlIHtAbGluayAjY3Jvc3NDaGVja1ZlcnRpY2FsKGludCwgaW50LCBpbnQsIGludCl9LCBhbmQgaW4gZmFjdCBpcyBiYXNpY2FsbHkgaWRlbnRpY2FsLAoJICAgICAqIGV4Y2VwdCBpdCByZWFkcyBob3Jpem9udGFsbHkgaW5zdGVhZCBvZiB2ZXJ0aWNhbGx5LiBUaGlzIGlzIHVzZWQgdG8gY3Jvc3MtY3Jvc3MKCSAgICAgKiBjaGVjayBhIHZlcnRpY2FsIGNyb3NzIGNoZWNrIGFuZCBsb2NhdGUgdGhlIHJlYWwgY2VudGVyIG9mIHRoZSBhbGlnbm1lbnQgcGF0dGVybi48L3A+CgkgICAgICovCgkgICAgRmluZGVyUGF0dGVybkZpbmRlci5wcm90b3R5cGUuY3Jvc3NDaGVja0hvcml6b250YWwgPSBmdW5jdGlvbiAoc3RhcnRKIC8qaW50Ki8sIGNlbnRlckkgLyppbnQqLywgbWF4Q291bnQgLyppbnQqLywgb3JpZ2luYWxTdGF0ZUNvdW50VG90YWwgLyppbnQqLykgewoJICAgICAgICB2YXIgaW1hZ2UgPSB0aGlzLmltYWdlOwoJICAgICAgICB2YXIgbWF4SiA9IGltYWdlLmdldFdpZHRoKCk7CgkgICAgICAgIHZhciBzdGF0ZUNvdW50ID0gdGhpcy5nZXRDcm9zc0NoZWNrU3RhdGVDb3VudCgpOwoJICAgICAgICB2YXIgaiA9IHN0YXJ0SjsKCSAgICAgICAgd2hpbGUgKGogPj0gMCAmJiBpbWFnZS5nZXQoaiwgY2VudGVySSkpIHsKCSAgICAgICAgICAgIHN0YXRlQ291bnRbMl0rKzsKCSAgICAgICAgICAgIGotLTsKCSAgICAgICAgfQoJICAgICAgICBpZiAoaiA8IDApIHsKCSAgICAgICAgICAgIHJldHVybiBOYU47CgkgICAgICAgIH0KCSAgICAgICAgd2hpbGUgKGogPj0gMCAmJiAhaW1hZ2UuZ2V0KGosIGNlbnRlckkpICYmIHN0YXRlQ291bnRbMV0gPD0gbWF4Q291bnQpIHsKCSAgICAgICAgICAgIHN0YXRlQ291bnRbMV0rKzsKCSAgICAgICAgICAgIGotLTsKCSAgICAgICAgfQoJICAgICAgICBpZiAoaiA8IDAgfHwgc3RhdGVDb3VudFsxXSA+IG1heENvdW50KSB7CgkgICAgICAgICAgICByZXR1cm4gTmFOOwoJICAgICAgICB9CgkgICAgICAgIHdoaWxlIChqID49IDAgJiYgaW1hZ2UuZ2V0KGosIGNlbnRlckkpICYmIHN0YXRlQ291bnRbMF0gPD0gbWF4Q291bnQpIHsKCSAgICAgICAgICAgIHN0YXRlQ291bnRbMF0rKzsKCSAgICAgICAgICAgIGotLTsKCSAgICAgICAgfQoJICAgICAgICBpZiAoc3RhdGVDb3VudFswXSA+IG1heENvdW50KSB7CgkgICAgICAgICAgICByZXR1cm4gTmFOOwoJICAgICAgICB9CgkgICAgICAgIGogPSBzdGFydEogKyAxOwoJICAgICAgICB3aGlsZSAoaiA8IG1heEogJiYgaW1hZ2UuZ2V0KGosIGNlbnRlckkpKSB7CgkgICAgICAgICAgICBzdGF0ZUNvdW50WzJdKys7CgkgICAgICAgICAgICBqKys7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKGogPT09IG1heEopIHsKCSAgICAgICAgICAgIHJldHVybiBOYU47CgkgICAgICAgIH0KCSAgICAgICAgd2hpbGUgKGogPCBtYXhKICYmICFpbWFnZS5nZXQoaiwgY2VudGVySSkgJiYgc3RhdGVDb3VudFszXSA8IG1heENvdW50KSB7CgkgICAgICAgICAgICBzdGF0ZUNvdW50WzNdKys7CgkgICAgICAgICAgICBqKys7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKGogPT09IG1heEogfHwgc3RhdGVDb3VudFszXSA+PSBtYXhDb3VudCkgewoJICAgICAgICAgICAgcmV0dXJuIE5hTjsKCSAgICAgICAgfQoJICAgICAgICB3aGlsZSAoaiA8IG1heEogJiYgaW1hZ2UuZ2V0KGosIGNlbnRlckkpICYmIHN0YXRlQ291bnRbNF0gPCBtYXhDb3VudCkgewoJICAgICAgICAgICAgc3RhdGVDb3VudFs0XSsrOwoJICAgICAgICAgICAgaisrOwoJICAgICAgICB9CgkgICAgICAgIGlmIChzdGF0ZUNvdW50WzRdID49IG1heENvdW50KSB7CgkgICAgICAgICAgICByZXR1cm4gTmFOOwoJICAgICAgICB9CgkgICAgICAgIC8vIElmIHdlIGZvdW5kIGEgZmluZGVyLXBhdHRlcm4tbGlrZSBzZWN0aW9uLCBidXQgaXRzIHNpemUgaXMgc2lnbmlmaWNhbnRseSBkaWZmZXJlbnQgdGhhbgoJICAgICAgICAvLyB0aGUgb3JpZ2luYWwsIGFzc3VtZSBpdCdzIGEgZmFsc2UgcG9zaXRpdmUKCSAgICAgICAgdmFyIHN0YXRlQ291bnRUb3RhbCA9IHN0YXRlQ291bnRbMF0gKyBzdGF0ZUNvdW50WzFdICsgc3RhdGVDb3VudFsyXSArIHN0YXRlQ291bnRbM10gKwoJICAgICAgICAgICAgc3RhdGVDb3VudFs0XTsKCSAgICAgICAgaWYgKDUgKiBNYXRoLmFicyhzdGF0ZUNvdW50VG90YWwgLSBvcmlnaW5hbFN0YXRlQ291bnRUb3RhbCkgPj0gb3JpZ2luYWxTdGF0ZUNvdW50VG90YWwpIHsKCSAgICAgICAgICAgIHJldHVybiBOYU47CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIEZpbmRlclBhdHRlcm5GaW5kZXIuZm91bmRQYXR0ZXJuQ3Jvc3Moc3RhdGVDb3VudCkgPyBGaW5kZXJQYXR0ZXJuRmluZGVyLmNlbnRlckZyb21FbmQoc3RhdGVDb3VudCwgaikgOiBOYU47CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiA8cD5UaGlzIGlzIGNhbGxlZCB3aGVuIGEgaG9yaXpvbnRhbCBzY2FuIGZpbmRzIGEgcG9zc2libGUgYWxpZ25tZW50IHBhdHRlcm4uIEl0IHdpbGwKCSAgICAgKiBjcm9zcyBjaGVjayB3aXRoIGEgdmVydGljYWwgc2NhbiwgYW5kIGlmIHN1Y2Nlc3NmdWwsIHdpbGwsIGFoLCBjcm9zcy1jcm9zcy1jaGVjawoJICAgICAqIHdpdGggYW5vdGhlciBob3Jpem9udGFsIHNjYW4uIFRoaXMgaXMgbmVlZGVkIHByaW1hcmlseSB0byBsb2NhdGUgdGhlIHJlYWwgaG9yaXpvbnRhbAoJICAgICAqIGNlbnRlciBvZiB0aGUgcGF0dGVybiBpbiBjYXNlcyBvZiBleHRyZW1lIHNrZXcuCgkgICAgICogQW5kIHRoZW4gd2UgY3Jvc3MtY3Jvc3MtY3Jvc3MgY2hlY2sgd2l0aCBhbm90aGVyIGRpYWdvbmFsIHNjYW4uPC9wPgoJICAgICAqCgkgICAgICogPHA+SWYgdGhhdCBzdWNjZWVkcyB0aGUgZmluZGVyIHBhdHRlcm4gbG9jYXRpb24gaXMgYWRkZWQgdG8gYSBsaXN0IHRoYXQgdHJhY2tzCgkgICAgICogdGhlIG51bWJlciBvZiB0aW1lcyBlYWNoIGxvY2F0aW9uIGhhcyBiZWVuIG5lYXJseS1tYXRjaGVkIGFzIGEgZmluZGVyIHBhdHRlcm4uCgkgICAgICogRWFjaCBhZGRpdGlvbmFsIGZpbmQgaXMgbW9yZSBldmlkZW5jZSB0aGF0IHRoZSBsb2NhdGlvbiBpcyBpbiBmYWN0IGEgZmluZGVyCgkgICAgICogcGF0dGVybiBjZW50ZXIKCSAgICAgKgoJICAgICAqIEBwYXJhbSBzdGF0ZUNvdW50IHJlYWRpbmcgc3RhdGUgbW9kdWxlIGNvdW50cyBmcm9tIGhvcml6b250YWwgc2NhbgoJICAgICAqIEBwYXJhbSBpIHJvdyB3aGVyZSBmaW5kZXIgcGF0dGVybiBtYXkgYmUgZm91bmQKCSAgICAgKiBAcGFyYW0gaiBlbmQgb2YgcG9zc2libGUgZmluZGVyIHBhdHRlcm4gaW4gcm93CgkgICAgICogQHBhcmFtIHB1cmVCYXJjb2RlIHRydWUgaWYgaW4gInB1cmUgYmFyY29kZSIgbW9kZQoJICAgICAqIEByZXR1cm4gdHJ1ZSBpZiBhIGZpbmRlciBwYXR0ZXJuIGNhbmRpZGF0ZSB3YXMgZm91bmQgdGhpcyB0aW1lCgkgICAgICovCgkgICAgRmluZGVyUGF0dGVybkZpbmRlci5wcm90b3R5cGUuaGFuZGxlUG9zc2libGVDZW50ZXIgPSBmdW5jdGlvbiAoc3RhdGVDb3VudCwgaSAvKmludCovLCBqIC8qaW50Ki8sIHB1cmVCYXJjb2RlKSB7CgkgICAgICAgIHZhciBzdGF0ZUNvdW50VG90YWwgPSBzdGF0ZUNvdW50WzBdICsgc3RhdGVDb3VudFsxXSArIHN0YXRlQ291bnRbMl0gKyBzdGF0ZUNvdW50WzNdICsKCSAgICAgICAgICAgIHN0YXRlQ291bnRbNF07CgkgICAgICAgIHZhciBjZW50ZXJKID0gRmluZGVyUGF0dGVybkZpbmRlci5jZW50ZXJGcm9tRW5kKHN0YXRlQ291bnQsIGopOwoJICAgICAgICB2YXIgY2VudGVySSA9IHRoaXMuY3Jvc3NDaGVja1ZlcnRpY2FsKGksIC8qKGludCkgKi8gTWF0aC5mbG9vcihjZW50ZXJKKSwgc3RhdGVDb3VudFsyXSwgc3RhdGVDb3VudFRvdGFsKTsKCSAgICAgICAgaWYgKCFpc05hTihjZW50ZXJJKSkgewoJICAgICAgICAgICAgLy8gUmUtY3Jvc3MgY2hlY2sKCSAgICAgICAgICAgIGNlbnRlckogPSB0aGlzLmNyb3NzQ2hlY2tIb3Jpem9udGFsKC8qKGludCkgKi8gTWF0aC5mbG9vcihjZW50ZXJKKSwgLyooaW50KSAqLyBNYXRoLmZsb29yKGNlbnRlckkpLCBzdGF0ZUNvdW50WzJdLCBzdGF0ZUNvdW50VG90YWwpOwoJICAgICAgICAgICAgaWYgKCFpc05hTihjZW50ZXJKKSAmJgoJICAgICAgICAgICAgICAgICghcHVyZUJhcmNvZGUgfHwgdGhpcy5jcm9zc0NoZWNrRGlhZ29uYWwoLyooaW50KSAqLyBNYXRoLmZsb29yKGNlbnRlckkpLCAvKihpbnQpICovIE1hdGguZmxvb3IoY2VudGVySiksIHN0YXRlQ291bnRbMl0sIHN0YXRlQ291bnRUb3RhbCkpKSB7CgkgICAgICAgICAgICAgICAgdmFyIGVzdGltYXRlZE1vZHVsZVNpemUgPSBzdGF0ZUNvdW50VG90YWwgLyA3LjA7CgkgICAgICAgICAgICAgICAgdmFyIGZvdW5kID0gZmFsc2U7CgkgICAgICAgICAgICAgICAgdmFyIHBvc3NpYmxlQ2VudGVycyA9IHRoaXMucG9zc2libGVDZW50ZXJzOwoJICAgICAgICAgICAgICAgIGZvciAodmFyIGluZGV4ID0gMCwgbGVuZ3RoXzEgPSBwb3NzaWJsZUNlbnRlcnMubGVuZ3RoOyBpbmRleCA8IGxlbmd0aF8xOyBpbmRleCsrKSB7CgkgICAgICAgICAgICAgICAgICAgIHZhciBjZW50ZXIgPSBwb3NzaWJsZUNlbnRlcnNbaW5kZXhdOwoJICAgICAgICAgICAgICAgICAgICAvLyBMb29rIGZvciBhYm91dCB0aGUgc2FtZSBjZW50ZXIgYW5kIG1vZHVsZSBzaXplOgoJICAgICAgICAgICAgICAgICAgICBpZiAoY2VudGVyLmFib3V0RXF1YWxzKGVzdGltYXRlZE1vZHVsZVNpemUsIGNlbnRlckksIGNlbnRlckopKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBwb3NzaWJsZUNlbnRlcnNbaW5kZXhdID0gY2VudGVyLmNvbWJpbmVFc3RpbWF0ZShjZW50ZXJJLCBjZW50ZXJKLCBlc3RpbWF0ZWRNb2R1bGVTaXplKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKCSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGlmICghZm91bmQpIHsKCSAgICAgICAgICAgICAgICAgICAgdmFyIHBvaW50ID0gbmV3IEZpbmRlclBhdHRlcm5fMSQxLmRlZmF1bHQoY2VudGVySiwgY2VudGVySSwgZXN0aW1hdGVkTW9kdWxlU2l6ZSk7CgkgICAgICAgICAgICAgICAgICAgIHBvc3NpYmxlQ2VudGVycy5wdXNoKHBvaW50KTsKCSAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVzdWx0UG9pbnRDYWxsYmFjayAhPT0gbnVsbCAmJiB0aGlzLnJlc3VsdFBvaW50Q2FsbGJhY2sgIT09IHVuZGVmaW5lZCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXN1bHRQb2ludENhbGxiYWNrLmZvdW5kUG9zc2libGVSZXN1bHRQb2ludChwb2ludCk7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIGZhbHNlOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQHJldHVybiBudW1iZXIgb2Ygcm93cyB3ZSBjb3VsZCBzYWZlbHkgc2tpcCBkdXJpbmcgc2Nhbm5pbmcsIGJhc2VkIG9uIHRoZSBmaXJzdAoJICAgICAqICAgICAgICAgdHdvIGZpbmRlciBwYXR0ZXJucyB0aGF0IGhhdmUgYmVlbiBsb2NhdGVkLiBJbiBzb21lIGNhc2VzIHRoZWlyIHBvc2l0aW9uIHdpbGwKCSAgICAgKiAgICAgICAgIGFsbG93IHVzIHRvIGluZmVyIHRoYXQgdGhlIHRoaXJkIHBhdHRlcm4gbXVzdCBsaWUgYmVsb3cgYSBjZXJ0YWluIHBvaW50IGZhcnRoZXIKCSAgICAgKiAgICAgICAgIGRvd24gaW4gdGhlIGltYWdlLgoJICAgICAqLwoJICAgIEZpbmRlclBhdHRlcm5GaW5kZXIucHJvdG90eXBlLmZpbmRSb3dTa2lwID0gZnVuY3Rpb24gKCkgewoJICAgICAgICB2YXIgZV8xLCBfYTsKCSAgICAgICAgdmFyIG1heCA9IHRoaXMucG9zc2libGVDZW50ZXJzLmxlbmd0aDsKCSAgICAgICAgaWYgKG1heCA8PSAxKSB7CgkgICAgICAgICAgICByZXR1cm4gMDsKCSAgICAgICAgfQoJICAgICAgICB2YXIgZmlyc3RDb25maXJtZWRDZW50ZXIgPSBudWxsOwoJICAgICAgICB0cnkgewoJICAgICAgICAgICAgZm9yICh2YXIgX2IgPSBfX3ZhbHVlcyh0aGlzLnBvc3NpYmxlQ2VudGVycyksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHsKCSAgICAgICAgICAgICAgICB2YXIgY2VudGVyID0gX2MudmFsdWU7CgkgICAgICAgICAgICAgICAgaWYgKGNlbnRlci5nZXRDb3VudCgpID49IEZpbmRlclBhdHRlcm5GaW5kZXIuQ0VOVEVSX1FVT1JVTSkgewoJICAgICAgICAgICAgICAgICAgICBpZiAoZmlyc3RDb25maXJtZWRDZW50ZXIgPT0gbnVsbCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RDb25maXJtZWRDZW50ZXIgPSBjZW50ZXI7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIHR3byBjb25maXJtZWQgY2VudGVycwoJICAgICAgICAgICAgICAgICAgICAgICAgLy8gSG93IGZhciBkb3duIGNhbiB3ZSBza2lwIGJlZm9yZSByZXN1bWluZyBsb29raW5nIGZvciB0aGUgbmV4dAoJICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGF0dGVybj8gSW4gdGhlIHdvcnN0IGNhc2UsIG9ubHkgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUKCSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRpZmZlcmVuY2UgaW4gdGhlIHggLyB5IGNvb3JkaW5hdGVzIG9mIHRoZSB0d28gY2VudGVycy4KCSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGNhc2Ugd2hlcmUgeW91IGZpbmQgdG9wIGxlZnQgbGFzdC4KCSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFzU2tpcHBlZCA9IHRydWU7CgkgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyooaW50KSAqLyBNYXRoLmZsb29yKChNYXRoLmFicyhmaXJzdENvbmZpcm1lZENlbnRlci5nZXRYKCkgLSBjZW50ZXIuZ2V0WCgpKSAtCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5hYnMoZmlyc3RDb25maXJtZWRDZW50ZXIuZ2V0WSgpIC0gY2VudGVyLmdldFkoKSkpIC8gMik7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH0KCSAgICAgICAgZmluYWxseSB7CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIGlmIChfYyAmJiAhX2MuZG9uZSAmJiAoX2EgPSBfYi5yZXR1cm4pKSBfYS5jYWxsKF9iKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH0KCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gMDsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEByZXR1cm4gdHJ1ZSBpZmYgd2UgaGF2ZSBmb3VuZCBhdCBsZWFzdCAzIGZpbmRlciBwYXR0ZXJucyB0aGF0IGhhdmUgYmVlbiBkZXRlY3RlZAoJICAgICAqICAgICAgICAgYXQgbGVhc3Qge0BsaW5rICNDRU5URVJfUVVPUlVNfSB0aW1lcyBlYWNoLCBhbmQsIHRoZSBlc3RpbWF0ZWQgbW9kdWxlIHNpemUgb2YgdGhlCgkgICAgICogICAgICAgICBjYW5kaWRhdGVzIGlzICJwcmV0dHkgc2ltaWxhciIKCSAgICAgKi8KCSAgICBGaW5kZXJQYXR0ZXJuRmluZGVyLnByb3RvdHlwZS5oYXZlTXVsdGlwbHlDb25maXJtZWRDZW50ZXJzID0gZnVuY3Rpb24gKCkgewoJICAgICAgICB2YXIgZV8yLCBfYSwgZV8zLCBfYjsKCSAgICAgICAgdmFyIGNvbmZpcm1lZENvdW50ID0gMDsKCSAgICAgICAgdmFyIHRvdGFsTW9kdWxlU2l6ZSA9IDAuMDsKCSAgICAgICAgdmFyIG1heCA9IHRoaXMucG9zc2libGVDZW50ZXJzLmxlbmd0aDsKCSAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgIGZvciAodmFyIF9jID0gX192YWx1ZXModGhpcy5wb3NzaWJsZUNlbnRlcnMpLCBfZCA9IF9jLm5leHQoKTsgIV9kLmRvbmU7IF9kID0gX2MubmV4dCgpKSB7CgkgICAgICAgICAgICAgICAgdmFyIHBhdHRlcm4gPSBfZC52YWx1ZTsKCSAgICAgICAgICAgICAgICBpZiAocGF0dGVybi5nZXRDb3VudCgpID49IEZpbmRlclBhdHRlcm5GaW5kZXIuQ0VOVEVSX1FVT1JVTSkgewoJICAgICAgICAgICAgICAgICAgICBjb25maXJtZWRDb3VudCsrOwoJICAgICAgICAgICAgICAgICAgICB0b3RhbE1vZHVsZVNpemUgKz0gcGF0dGVybi5nZXRFc3RpbWF0ZWRNb2R1bGVTaXplKCk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGNhdGNoIChlXzJfMSkgeyBlXzIgPSB7IGVycm9yOiBlXzJfMSB9OyB9CgkgICAgICAgIGZpbmFsbHkgewoJICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICBpZiAoX2QgJiYgIV9kLmRvbmUgJiYgKF9hID0gX2MucmV0dXJuKSkgX2EuY2FsbChfYyk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMikgdGhyb3cgZV8yLmVycm9yOyB9CgkgICAgICAgIH0KCSAgICAgICAgaWYgKGNvbmZpcm1lZENvdW50IDwgMykgewoJICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoJICAgICAgICB9CgkgICAgICAgIC8vIE9LLCB3ZSBoYXZlIGF0IGxlYXN0IDMgY29uZmlybWVkIGNlbnRlcnMsIGJ1dCwgaXQncyBwb3NzaWJsZSB0aGF0IG9uZSBpcyBhICJmYWxzZSBwb3NpdGl2ZSIKCSAgICAgICAgLy8gYW5kIHRoYXQgd2UgbmVlZCB0byBrZWVwIGxvb2tpbmcuIFdlIGRldGVjdCB0aGlzIGJ5IGFza2luZyBpZiB0aGUgZXN0aW1hdGVkIG1vZHVsZSBzaXplcwoJICAgICAgICAvLyB2YXJ5IHRvbyBtdWNoLiBXZSBhcmJpdHJhcmlseSBzYXkgdGhhdCB3aGVuIHRoZSB0b3RhbCBkZXZpYXRpb24gZnJvbSBhdmVyYWdlIGV4Y2VlZHMKCSAgICAgICAgLy8gNSUgb2YgdGhlIHRvdGFsIG1vZHVsZSBzaXplIGVzdGltYXRlcywgaXQncyB0b28gbXVjaC4KCSAgICAgICAgdmFyIGF2ZXJhZ2UgPSB0b3RhbE1vZHVsZVNpemUgLyBtYXg7CgkgICAgICAgIHZhciB0b3RhbERldmlhdGlvbiA9IDAuMDsKCSAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgIGZvciAodmFyIF9lID0gX192YWx1ZXModGhpcy5wb3NzaWJsZUNlbnRlcnMpLCBfZiA9IF9lLm5leHQoKTsgIV9mLmRvbmU7IF9mID0gX2UubmV4dCgpKSB7CgkgICAgICAgICAgICAgICAgdmFyIHBhdHRlcm4gPSBfZi52YWx1ZTsKCSAgICAgICAgICAgICAgICB0b3RhbERldmlhdGlvbiArPSBNYXRoLmFicyhwYXR0ZXJuLmdldEVzdGltYXRlZE1vZHVsZVNpemUoKSAtIGF2ZXJhZ2UpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGNhdGNoIChlXzNfMSkgeyBlXzMgPSB7IGVycm9yOiBlXzNfMSB9OyB9CgkgICAgICAgIGZpbmFsbHkgewoJICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICBpZiAoX2YgJiYgIV9mLmRvbmUgJiYgKF9iID0gX2UucmV0dXJuKSkgX2IuY2FsbChfZSk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMykgdGhyb3cgZV8zLmVycm9yOyB9CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHRvdGFsRGV2aWF0aW9uIDw9IDAuMDUgKiB0b3RhbE1vZHVsZVNpemU7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcmV0dXJuIHRoZSAzIGJlc3Qge0BsaW5rIEZpbmRlclBhdHRlcm59cyBmcm9tIG91ciBsaXN0IG9mIGNhbmRpZGF0ZXMuIFRoZSAiYmVzdCIgYXJlCgkgICAgICogICAgICAgICB0aG9zZSB0aGF0IGhhdmUgYmVlbiBkZXRlY3RlZCBhdCBsZWFzdCB7QGxpbmsgI0NFTlRFUl9RVU9SVU19IHRpbWVzLCBhbmQgd2hvc2UgbW9kdWxlCgkgICAgICogICAgICAgICBzaXplIGRpZmZlcnMgZnJvbSB0aGUgYXZlcmFnZSBhbW9uZyB0aG9zZSBwYXR0ZXJucyB0aGUgbGVhc3QKCSAgICAgKiBAdGhyb3dzIE5vdEZvdW5kRXhjZXB0aW9uIGlmIDMgc3VjaCBmaW5kZXIgcGF0dGVybnMgZG8gbm90IGV4aXN0CgkgICAgICovCgkgICAgRmluZGVyUGF0dGVybkZpbmRlci5wcm90b3R5cGUuc2VsZWN0QmVzdFBhdHRlcm5zID0gZnVuY3Rpb24gKCkgewoJICAgICAgICB2YXIgZV80LCBfYSwgZV81LCBfYjsKCSAgICAgICAgdmFyIHN0YXJ0U2l6ZSA9IHRoaXMucG9zc2libGVDZW50ZXJzLmxlbmd0aDsKCSAgICAgICAgaWYgKHN0YXJ0U2l6ZSA8IDMpIHsKCSAgICAgICAgICAgIC8vIENvdWxkbid0IGZpbmQgZW5vdWdoIGZpbmRlciBwYXR0ZXJucwoJICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgICAgIHZhciBwb3NzaWJsZUNlbnRlcnMgPSB0aGlzLnBvc3NpYmxlQ2VudGVyczsKCSAgICAgICAgdmFyIGF2ZXJhZ2U7CgkgICAgICAgIC8vIEZpbHRlciBvdXRsaWVyIHBvc3NpYmlsaXRpZXMgd2hvc2UgbW9kdWxlIHNpemUgaXMgdG9vIGRpZmZlcmVudAoJICAgICAgICBpZiAoc3RhcnRTaXplID4gMykgewoJICAgICAgICAgICAgLy8gQnV0IHdlIGNhbiBvbmx5IGFmZm9yZCB0byBkbyBzbyBpZiB3ZSBoYXZlIGF0IGxlYXN0IDQgcG9zc2liaWxpdGllcyB0byBjaG9vc2UgZnJvbQoJICAgICAgICAgICAgdmFyIHRvdGFsTW9kdWxlU2l6ZSA9IDAuMDsKCSAgICAgICAgICAgIHZhciBzcXVhcmUgPSAwLjA7CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIGZvciAodmFyIF9jID0gX192YWx1ZXModGhpcy5wb3NzaWJsZUNlbnRlcnMpLCBfZCA9IF9jLm5leHQoKTsgIV9kLmRvbmU7IF9kID0gX2MubmV4dCgpKSB7CgkgICAgICAgICAgICAgICAgICAgIHZhciBjZW50ZXIgPSBfZC52YWx1ZTsKCSAgICAgICAgICAgICAgICAgICAgdmFyIHNpemUgPSBjZW50ZXIuZ2V0RXN0aW1hdGVkTW9kdWxlU2l6ZSgpOwoJICAgICAgICAgICAgICAgICAgICB0b3RhbE1vZHVsZVNpemUgKz0gc2l6ZTsKCSAgICAgICAgICAgICAgICAgICAgc3F1YXJlICs9IHNpemUgKiBzaXplOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGNhdGNoIChlXzRfMSkgeyBlXzQgPSB7IGVycm9yOiBlXzRfMSB9OyB9CgkgICAgICAgICAgICBmaW5hbGx5IHsKCSAgICAgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgICAgICBpZiAoX2QgJiYgIV9kLmRvbmUgJiYgKF9hID0gX2MucmV0dXJuKSkgX2EuY2FsbChfYyk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV80KSB0aHJvdyBlXzQuZXJyb3I7IH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGF2ZXJhZ2UgPSB0b3RhbE1vZHVsZVNpemUgLyBzdGFydFNpemU7CgkgICAgICAgICAgICB2YXIgc3RkRGV2ID0gTWF0aC5zcXJ0KHNxdWFyZSAvIHN0YXJ0U2l6ZSAtIGF2ZXJhZ2UgKiBhdmVyYWdlKTsKCSAgICAgICAgICAgIHBvc3NpYmxlQ2VudGVycy5zb3J0KAoJICAgICAgICAgICAgLyoqCgkgICAgICAgICAgICAgKiA8cD5PcmRlcnMgYnkgZnVydGhlc3QgZnJvbSBhdmVyYWdlPC9wPgoJICAgICAgICAgICAgICovCgkgICAgICAgICAgICAvLyBGdXJ0aGVzdEZyb21BdmVyYWdlQ29tcGFyYXRvciBpbXBsZW1lbnRzIENvbXBhcmF0b3I8RmluZGVyUGF0dGVybj4KCSAgICAgICAgICAgIGZ1bmN0aW9uIChjZW50ZXIxLCBjZW50ZXIyKSB7CgkgICAgICAgICAgICAgICAgdmFyIGRBID0gTWF0aC5hYnMoY2VudGVyMi5nZXRFc3RpbWF0ZWRNb2R1bGVTaXplKCkgLSBhdmVyYWdlKTsKCSAgICAgICAgICAgICAgICB2YXIgZEIgPSBNYXRoLmFicyhjZW50ZXIxLmdldEVzdGltYXRlZE1vZHVsZVNpemUoKSAtIGF2ZXJhZ2UpOwoJICAgICAgICAgICAgICAgIHJldHVybiBkQSA8IGRCID8gLTEgOiBkQSA+IGRCID8gMSA6IDA7CgkgICAgICAgICAgICB9KTsKCSAgICAgICAgICAgIHZhciBsaW1pdCA9IE1hdGgubWF4KDAuMiAqIGF2ZXJhZ2UsIHN0ZERldik7CgkgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBvc3NpYmxlQ2VudGVycy5sZW5ndGggJiYgcG9zc2libGVDZW50ZXJzLmxlbmd0aCA+IDM7IGkrKykgewoJICAgICAgICAgICAgICAgIHZhciBwYXR0ZXJuID0gcG9zc2libGVDZW50ZXJzW2ldOwoJICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhwYXR0ZXJuLmdldEVzdGltYXRlZE1vZHVsZVNpemUoKSAtIGF2ZXJhZ2UpID4gbGltaXQpIHsKCSAgICAgICAgICAgICAgICAgICAgcG9zc2libGVDZW50ZXJzLnNwbGljZShpLCAxKTsKCSAgICAgICAgICAgICAgICAgICAgaS0tOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICBpZiAocG9zc2libGVDZW50ZXJzLmxlbmd0aCA+IDMpIHsKCSAgICAgICAgICAgIC8vIFRocm93IGF3YXkgYWxsIGJ1dCB0aG9zZSBmaXJzdCBzaXplIGNhbmRpZGF0ZSBwb2ludHMgd2UgZm91bmQuCgkgICAgICAgICAgICB2YXIgdG90YWxNb2R1bGVTaXplID0gMC4wOwoJICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICBmb3IgKHZhciBwb3NzaWJsZUNlbnRlcnNfMSA9IF9fdmFsdWVzKHBvc3NpYmxlQ2VudGVycyksIHBvc3NpYmxlQ2VudGVyc18xXzEgPSBwb3NzaWJsZUNlbnRlcnNfMS5uZXh0KCk7ICFwb3NzaWJsZUNlbnRlcnNfMV8xLmRvbmU7IHBvc3NpYmxlQ2VudGVyc18xXzEgPSBwb3NzaWJsZUNlbnRlcnNfMS5uZXh0KCkpIHsKCSAgICAgICAgICAgICAgICAgICAgdmFyIHBvc3NpYmxlQ2VudGVyID0gcG9zc2libGVDZW50ZXJzXzFfMS52YWx1ZTsKCSAgICAgICAgICAgICAgICAgICAgdG90YWxNb2R1bGVTaXplICs9IHBvc3NpYmxlQ2VudGVyLmdldEVzdGltYXRlZE1vZHVsZVNpemUoKTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBjYXRjaCAoZV81XzEpIHsgZV81ID0geyBlcnJvcjogZV81XzEgfTsgfQoJICAgICAgICAgICAgZmluYWxseSB7CgkgICAgICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICAgICAgaWYgKHBvc3NpYmxlQ2VudGVyc18xXzEgJiYgIXBvc3NpYmxlQ2VudGVyc18xXzEuZG9uZSAmJiAoX2IgPSBwb3NzaWJsZUNlbnRlcnNfMS5yZXR1cm4pKSBfYi5jYWxsKHBvc3NpYmxlQ2VudGVyc18xKTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzUpIHRocm93IGVfNS5lcnJvcjsgfQoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgYXZlcmFnZSA9IHRvdGFsTW9kdWxlU2l6ZSAvIHBvc3NpYmxlQ2VudGVycy5sZW5ndGg7CgkgICAgICAgICAgICBwb3NzaWJsZUNlbnRlcnMuc29ydCgKCSAgICAgICAgICAgIC8qKgoJICAgICAgICAgICAgICogPHA+T3JkZXJzIGJ5IHtAbGluayBGaW5kZXJQYXR0ZXJuI2dldENvdW50KCl9LCBkZXNjZW5kaW5nLjwvcD4KCSAgICAgICAgICAgICAqLwoJICAgICAgICAgICAgLy8gQ2VudGVyQ29tcGFyYXRvciBpbXBsZW1lbnRzIENvbXBhcmF0b3I8RmluZGVyUGF0dGVybj4KCSAgICAgICAgICAgIGZ1bmN0aW9uIChjZW50ZXIxLCBjZW50ZXIyKSB7CgkgICAgICAgICAgICAgICAgaWYgKGNlbnRlcjIuZ2V0Q291bnQoKSA9PT0gY2VudGVyMS5nZXRDb3VudCgpKSB7CgkgICAgICAgICAgICAgICAgICAgIHZhciBkQSA9IE1hdGguYWJzKGNlbnRlcjIuZ2V0RXN0aW1hdGVkTW9kdWxlU2l6ZSgpIC0gYXZlcmFnZSk7CgkgICAgICAgICAgICAgICAgICAgIHZhciBkQiA9IE1hdGguYWJzKGNlbnRlcjEuZ2V0RXN0aW1hdGVkTW9kdWxlU2l6ZSgpIC0gYXZlcmFnZSk7CgkgICAgICAgICAgICAgICAgICAgIHJldHVybiBkQSA8IGRCID8gMSA6IGRBID4gZEIgPyAtMSA6IDA7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2VudGVyMi5nZXRDb3VudCgpIC0gY2VudGVyMS5nZXRDb3VudCgpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0pOwoJICAgICAgICAgICAgcG9zc2libGVDZW50ZXJzLnNwbGljZSgzKTsgLy8gdGhpcyBpcyBub3QgcmVhbHkgbmVjZXNzYXJ5IGFzIHdlIG9ubHkgcmV0dXJuIGZpcnN0IDMgYW55d2F5CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIFsKCSAgICAgICAgICAgIHBvc3NpYmxlQ2VudGVyc1swXSwKCSAgICAgICAgICAgIHBvc3NpYmxlQ2VudGVyc1sxXSwKCSAgICAgICAgICAgIHBvc3NpYmxlQ2VudGVyc1syXQoJICAgICAgICBdOwoJICAgIH07CgkgICAgRmluZGVyUGF0dGVybkZpbmRlci5DRU5URVJfUVVPUlVNID0gMjsKCSAgICBGaW5kZXJQYXR0ZXJuRmluZGVyLk1JTl9TS0lQID0gMzsgLy8gMSBwaXhlbC9tb2R1bGUgdGltZXMgMyBtb2R1bGVzL2NlbnRlcgoJICAgIEZpbmRlclBhdHRlcm5GaW5kZXIuTUFYX01PRFVMRVMgPSA1NzsgLy8gc3VwcG9ydCB1cCB0byB2ZXJzaW9uIDEwIGZvciBtb2JpbGUgY2xpZW50cwoJICAgIHJldHVybiBGaW5kZXJQYXR0ZXJuRmluZGVyOwoJfSgpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IEZpbmRlclBhdHRlcm5GaW5kZXI7CgoJfSk7CgoJdmFyIERldGVjdG9yXzEkMiA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCS8qCgkgKiBDb3B5cmlnaHQgMjAwNyBaWGluZyBhdXRob3JzCgkgKgoJICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSAqCgkgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJICoKCSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJICovCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoKCgkvLyBpbXBvcnQgR3JpZFNhbXBsZXIgZnJvbSAnLi4vLi4vY29tbW9uL0dyaWRTYW1wbGVyJzsKCgoKCgoKCgoJLyppbXBvcnQgamF2YS51dGlsLk1hcDsqLwoJLyoqCgkgKiA8cD5FbmNhcHN1bGF0ZXMgbG9naWMgdGhhdCBjYW4gZGV0ZWN0IGEgUVIgQ29kZSBpbiBhbiBpbWFnZSwgZXZlbiBpZiB0aGUgUVIgQ29kZQoJICogaXMgcm90YXRlZCBvciBza2V3ZWQsIG9yIHBhcnRpYWxseSBvYnNjdXJlZC48L3A+CgkgKgoJICogQGF1dGhvciBTZWFuIE93ZW4KCSAqLwoJdmFyIERldGVjdG9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIGZ1bmN0aW9uIERldGVjdG9yKGltYWdlKSB7CgkgICAgICAgIHRoaXMuaW1hZ2UgPSBpbWFnZTsKCSAgICB9CgkgICAgRGV0ZWN0b3IucHJvdG90eXBlLmdldEltYWdlID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5pbWFnZTsKCSAgICB9OwoJICAgIERldGVjdG9yLnByb3RvdHlwZS5nZXRSZXN1bHRQb2ludENhbGxiYWNrID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5yZXN1bHRQb2ludENhbGxiYWNrOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogPHA+RGV0ZWN0cyBhIFFSIENvZGUgaW4gYW4gaW1hZ2UuPC9wPgoJICAgICAqCgkgICAgICogQHJldHVybiB7QGxpbmsgRGV0ZWN0b3JSZXN1bHR9IGVuY2Fwc3VsYXRpbmcgcmVzdWx0cyBvZiBkZXRlY3RpbmcgYSBRUiBDb2RlCgkgICAgICogQHRocm93cyBOb3RGb3VuZEV4Y2VwdGlvbiBpZiBRUiBDb2RlIGNhbm5vdCBiZSBmb3VuZAoJICAgICAqIEB0aHJvd3MgRm9ybWF0RXhjZXB0aW9uIGlmIGEgUVIgQ29kZSBjYW5ub3QgYmUgZGVjb2RlZAoJICAgICAqLwoJICAgIC8vIHB1YmxpYyBkZXRlY3QoKTogRGV0ZWN0b3JSZXN1bHQgLyp0aHJvd3MgTm90Rm91bmRFeGNlcHRpb24sIEZvcm1hdEV4Y2VwdGlvbiovIHsKCSAgICAvLyAgIHJldHVybiBkZXRlY3QobnVsbCkKCSAgICAvLyB9CgkgICAgLyoqCgkgICAgICogPHA+RGV0ZWN0cyBhIFFSIENvZGUgaW4gYW4gaW1hZ2UuPC9wPgoJICAgICAqCgkgICAgICogQHBhcmFtIGhpbnRzIG9wdGlvbmFsIGhpbnRzIHRvIGRldGVjdG9yCgkgICAgICogQHJldHVybiB7QGxpbmsgRGV0ZWN0b3JSZXN1bHR9IGVuY2Fwc3VsYXRpbmcgcmVzdWx0cyBvZiBkZXRlY3RpbmcgYSBRUiBDb2RlCgkgICAgICogQHRocm93cyBOb3RGb3VuZEV4Y2VwdGlvbiBpZiBRUiBDb2RlIGNhbm5vdCBiZSBmb3VuZAoJICAgICAqIEB0aHJvd3MgRm9ybWF0RXhjZXB0aW9uIGlmIGEgUVIgQ29kZSBjYW5ub3QgYmUgZGVjb2RlZAoJICAgICAqLwoJICAgIERldGVjdG9yLnByb3RvdHlwZS5kZXRlY3QgPSBmdW5jdGlvbiAoaGludHMpIHsKCSAgICAgICAgdGhpcy5yZXN1bHRQb2ludENhbGxiYWNrID0gKGhpbnRzID09PSBudWxsIHx8IGhpbnRzID09PSB1bmRlZmluZWQpID8gbnVsbCA6CgkgICAgICAgICAgICAvKihSZXN1bHRQb2ludENhbGxiYWNrKSAqLyBoaW50cy5nZXQoRGVjb2RlSGludFR5cGVfMS5kZWZhdWx0Lk5FRURfUkVTVUxUX1BPSU5UX0NBTExCQUNLKTsKCSAgICAgICAgdmFyIGZpbmRlciA9IG5ldyBGaW5kZXJQYXR0ZXJuRmluZGVyXzEuZGVmYXVsdCh0aGlzLmltYWdlLCB0aGlzLnJlc3VsdFBvaW50Q2FsbGJhY2spOwoJICAgICAgICB2YXIgaW5mbyA9IGZpbmRlci5maW5kKGhpbnRzKTsKCSAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc0ZpbmRlclBhdHRlcm5JbmZvKGluZm8pOwoJICAgIH07CgkgICAgRGV0ZWN0b3IucHJvdG90eXBlLnByb2Nlc3NGaW5kZXJQYXR0ZXJuSW5mbyA9IGZ1bmN0aW9uIChpbmZvKSB7CgkgICAgICAgIHZhciB0b3BMZWZ0ID0gaW5mby5nZXRUb3BMZWZ0KCk7CgkgICAgICAgIHZhciB0b3BSaWdodCA9IGluZm8uZ2V0VG9wUmlnaHQoKTsKCSAgICAgICAgdmFyIGJvdHRvbUxlZnQgPSBpbmZvLmdldEJvdHRvbUxlZnQoKTsKCSAgICAgICAgdmFyIG1vZHVsZVNpemUgPSB0aGlzLmNhbGN1bGF0ZU1vZHVsZVNpemUodG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQpOwoJICAgICAgICBpZiAobW9kdWxlU2l6ZSA8IDEuMCkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgnTm8gcGF0dGVybiBmb3VuZCBpbiBwcm9jY2VzcyBmaW5kZXIuJyk7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGRpbWVuc2lvbiA9IERldGVjdG9yLmNvbXB1dGVEaW1lbnNpb24odG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIG1vZHVsZVNpemUpOwoJICAgICAgICB2YXIgcHJvdmlzaW9uYWxWZXJzaW9uID0gVmVyc2lvbl8xJDEuZGVmYXVsdC5nZXRQcm92aXNpb25hbFZlcnNpb25Gb3JEaW1lbnNpb24oZGltZW5zaW9uKTsKCSAgICAgICAgdmFyIG1vZHVsZXNCZXR3ZWVuRlBDZW50ZXJzID0gcHJvdmlzaW9uYWxWZXJzaW9uLmdldERpbWVuc2lvbkZvclZlcnNpb24oKSAtIDc7CgkgICAgICAgIHZhciBhbGlnbm1lbnRQYXR0ZXJuID0gbnVsbDsKCSAgICAgICAgLy8gQW55dGhpbmcgYWJvdmUgdmVyc2lvbiAxIGhhcyBhbiBhbGlnbm1lbnQgcGF0dGVybgoJICAgICAgICBpZiAocHJvdmlzaW9uYWxWZXJzaW9uLmdldEFsaWdubWVudFBhdHRlcm5DZW50ZXJzKCkubGVuZ3RoID4gMCkgewoJICAgICAgICAgICAgLy8gR3Vlc3Mgd2hlcmUgYSAiYm90dG9tIHJpZ2h0IiBmaW5kZXIgcGF0dGVybiB3b3VsZCBoYXZlIGJlZW4KCSAgICAgICAgICAgIHZhciBib3R0b21SaWdodFggPSB0b3BSaWdodC5nZXRYKCkgLSB0b3BMZWZ0LmdldFgoKSArIGJvdHRvbUxlZnQuZ2V0WCgpOwoJICAgICAgICAgICAgdmFyIGJvdHRvbVJpZ2h0WSA9IHRvcFJpZ2h0LmdldFkoKSAtIHRvcExlZnQuZ2V0WSgpICsgYm90dG9tTGVmdC5nZXRZKCk7CgkgICAgICAgICAgICAvLyBFc3RpbWF0ZSB0aGF0IGFsaWdubWVudCBwYXR0ZXJuIGlzIGNsb3NlciBieSAzIG1vZHVsZXMKCSAgICAgICAgICAgIC8vIGZyb20gImJvdHRvbSByaWdodCIgdG8ga25vd24gdG9wIGxlZnQgbG9jYXRpb24KCSAgICAgICAgICAgIHZhciBjb3JyZWN0aW9uVG9Ub3BMZWZ0ID0gMS4wIC0gMy4wIC8gbW9kdWxlc0JldHdlZW5GUENlbnRlcnM7CgkgICAgICAgICAgICB2YXIgZXN0QWxpZ25tZW50WCA9IC8qKGludCkgKi8gTWF0aC5mbG9vcih0b3BMZWZ0LmdldFgoKSArIGNvcnJlY3Rpb25Ub1RvcExlZnQgKiAoYm90dG9tUmlnaHRYIC0gdG9wTGVmdC5nZXRYKCkpKTsKCSAgICAgICAgICAgIHZhciBlc3RBbGlnbm1lbnRZID0gLyooaW50KSAqLyBNYXRoLmZsb29yKHRvcExlZnQuZ2V0WSgpICsgY29ycmVjdGlvblRvVG9wTGVmdCAqIChib3R0b21SaWdodFkgLSB0b3BMZWZ0LmdldFkoKSkpOwoJICAgICAgICAgICAgLy8gS2luZCBvZiBhcmJpdHJhcnkgLS0gZXhwYW5kIHNlYXJjaCByYWRpdXMgYmVmb3JlIGdpdmluZyB1cAoJICAgICAgICAgICAgZm9yICh2YXIgaSA9IDQ7IGkgPD0gMTY7IGkgPDw9IDEpIHsKCSAgICAgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgICAgICBhbGlnbm1lbnRQYXR0ZXJuID0gdGhpcy5maW5kQWxpZ25tZW50SW5SZWdpb24obW9kdWxlU2l6ZSwgZXN0QWxpZ25tZW50WCwgZXN0QWxpZ25tZW50WSwgaSk7CgkgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBjYXRjaCAocmUgLypOb3RGb3VuZEV4Y2VwdGlvbiovKSB7CgkgICAgICAgICAgICAgICAgICAgIGlmICghKHJlIGluc3RhbmNlb2YgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmU7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgLy8gdHJ5IG5leHQgcm91bmQKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICAvLyBJZiB3ZSBkaWRuJ3QgZmluZCBhbGlnbm1lbnQgcGF0dGVybi4uLiB3ZWxsIHRyeSBhbnl3YXkgd2l0aG91dCBpdAoJICAgICAgICB9CgkgICAgICAgIHZhciB0cmFuc2Zvcm0gPSBEZXRlY3Rvci5jcmVhdGVUcmFuc2Zvcm0odG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGFsaWdubWVudFBhdHRlcm4sIGRpbWVuc2lvbik7CgkgICAgICAgIHZhciBiaXRzID0gRGV0ZWN0b3Iuc2FtcGxlR3JpZCh0aGlzLmltYWdlLCB0cmFuc2Zvcm0sIGRpbWVuc2lvbik7CgkgICAgICAgIHZhciBwb2ludHM7CgkgICAgICAgIGlmIChhbGlnbm1lbnRQYXR0ZXJuID09PSBudWxsKSB7CgkgICAgICAgICAgICBwb2ludHMgPSBbYm90dG9tTGVmdCwgdG9wTGVmdCwgdG9wUmlnaHRdOwoJICAgICAgICB9CgkgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgcG9pbnRzID0gW2JvdHRvbUxlZnQsIHRvcExlZnQsIHRvcFJpZ2h0LCBhbGlnbm1lbnRQYXR0ZXJuXTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gbmV3IERldGVjdG9yUmVzdWx0XzEuZGVmYXVsdChiaXRzLCBwb2ludHMpOwoJICAgIH07CgkgICAgRGV0ZWN0b3IuY3JlYXRlVHJhbnNmb3JtID0gZnVuY3Rpb24gKHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBhbGlnbm1lbnRQYXR0ZXJuLCBkaW1lbnNpb24gLyppbnQqLykgewoJICAgICAgICB2YXIgZGltTWludXNUaHJlZSA9IGRpbWVuc2lvbiAtIDMuNTsKCSAgICAgICAgdmFyIGJvdHRvbVJpZ2h0WDsgLypmbG9hdCovCgkgICAgICAgIHZhciBib3R0b21SaWdodFk7IC8qZmxvYXQqLwoJICAgICAgICB2YXIgc291cmNlQm90dG9tUmlnaHRYOyAvKmZsb2F0Ki8KCSAgICAgICAgdmFyIHNvdXJjZUJvdHRvbVJpZ2h0WTsgLypmbG9hdCovCgkgICAgICAgIGlmIChhbGlnbm1lbnRQYXR0ZXJuICE9PSBudWxsKSB7CgkgICAgICAgICAgICBib3R0b21SaWdodFggPSBhbGlnbm1lbnRQYXR0ZXJuLmdldFgoKTsKCSAgICAgICAgICAgIGJvdHRvbVJpZ2h0WSA9IGFsaWdubWVudFBhdHRlcm4uZ2V0WSgpOwoJICAgICAgICAgICAgc291cmNlQm90dG9tUmlnaHRYID0gZGltTWludXNUaHJlZSAtIDMuMDsKCSAgICAgICAgICAgIHNvdXJjZUJvdHRvbVJpZ2h0WSA9IHNvdXJjZUJvdHRvbVJpZ2h0WDsKCSAgICAgICAgfQoJICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgIC8vIERvbid0IGhhdmUgYW4gYWxpZ25tZW50IHBhdHRlcm4sIGp1c3QgbWFrZSB1cCB0aGUgYm90dG9tLXJpZ2h0IHBvaW50CgkgICAgICAgICAgICBib3R0b21SaWdodFggPSAodG9wUmlnaHQuZ2V0WCgpIC0gdG9wTGVmdC5nZXRYKCkpICsgYm90dG9tTGVmdC5nZXRYKCk7CgkgICAgICAgICAgICBib3R0b21SaWdodFkgPSAodG9wUmlnaHQuZ2V0WSgpIC0gdG9wTGVmdC5nZXRZKCkpICsgYm90dG9tTGVmdC5nZXRZKCk7CgkgICAgICAgICAgICBzb3VyY2VCb3R0b21SaWdodFggPSBkaW1NaW51c1RocmVlOwoJICAgICAgICAgICAgc291cmNlQm90dG9tUmlnaHRZID0gZGltTWludXNUaHJlZTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gUGVyc3BlY3RpdmVUcmFuc2Zvcm1fMS5kZWZhdWx0LnF1YWRyaWxhdGVyYWxUb1F1YWRyaWxhdGVyYWwoMy41LCAzLjUsIGRpbU1pbnVzVGhyZWUsIDMuNSwgc291cmNlQm90dG9tUmlnaHRYLCBzb3VyY2VCb3R0b21SaWdodFksIDMuNSwgZGltTWludXNUaHJlZSwgdG9wTGVmdC5nZXRYKCksIHRvcExlZnQuZ2V0WSgpLCB0b3BSaWdodC5nZXRYKCksIHRvcFJpZ2h0LmdldFkoKSwgYm90dG9tUmlnaHRYLCBib3R0b21SaWdodFksIGJvdHRvbUxlZnQuZ2V0WCgpLCBib3R0b21MZWZ0LmdldFkoKSk7CgkgICAgfTsKCSAgICBEZXRlY3Rvci5zYW1wbGVHcmlkID0gZnVuY3Rpb24gKGltYWdlLCB0cmFuc2Zvcm0sIGRpbWVuc2lvbiAvKmludCovKSB7CgkgICAgICAgIHZhciBzYW1wbGVyID0gR3JpZFNhbXBsZXJJbnN0YW5jZV8xLmRlZmF1bHQuZ2V0SW5zdGFuY2UoKTsKCSAgICAgICAgcmV0dXJuIHNhbXBsZXIuc2FtcGxlR3JpZFdpdGhUcmFuc2Zvcm0oaW1hZ2UsIGRpbWVuc2lvbiwgZGltZW5zaW9uLCB0cmFuc2Zvcm0pOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogPHA+Q29tcHV0ZXMgdGhlIGRpbWVuc2lvbiAobnVtYmVyIG9mIG1vZHVsZXMgb24gYSBzaXplKSBvZiB0aGUgUVIgQ29kZSBiYXNlZCBvbiB0aGUgcG9zaXRpb24KCSAgICAgKiBvZiB0aGUgZmluZGVyIHBhdHRlcm5zIGFuZCBlc3RpbWF0ZWQgbW9kdWxlIHNpemUuPC9wPgoJICAgICAqLwoJICAgIERldGVjdG9yLmNvbXB1dGVEaW1lbnNpb24gPSBmdW5jdGlvbiAodG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIG1vZHVsZVNpemUgLypmbG9hdCovKSB7CgkgICAgICAgIHZhciB0bHRyQ2VudGVyc0RpbWVuc2lvbiA9IE1hdGhVdGlsc18xLmRlZmF1bHQucm91bmQoUmVzdWx0UG9pbnRfMS5kZWZhdWx0LmRpc3RhbmNlKHRvcExlZnQsIHRvcFJpZ2h0KSAvIG1vZHVsZVNpemUpOwoJICAgICAgICB2YXIgdGxibENlbnRlcnNEaW1lbnNpb24gPSBNYXRoVXRpbHNfMS5kZWZhdWx0LnJvdW5kKFJlc3VsdFBvaW50XzEuZGVmYXVsdC5kaXN0YW5jZSh0b3BMZWZ0LCBib3R0b21MZWZ0KSAvIG1vZHVsZVNpemUpOwoJICAgICAgICB2YXIgZGltZW5zaW9uID0gTWF0aC5mbG9vcigodGx0ckNlbnRlcnNEaW1lbnNpb24gKyB0bGJsQ2VudGVyc0RpbWVuc2lvbikgLyAyKSArIDc7CgkgICAgICAgIHN3aXRjaCAoZGltZW5zaW9uICYgMHgwMykgeyAvLyBtb2QgNAoJICAgICAgICAgICAgY2FzZSAwOgoJICAgICAgICAgICAgICAgIGRpbWVuc2lvbisrOwoJICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgLy8gMT8gZG8gbm90aGluZwoJICAgICAgICAgICAgY2FzZSAyOgoJICAgICAgICAgICAgICAgIGRpbWVuc2lvbi0tOwoJICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgY2FzZSAzOgoJICAgICAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoJ0RpbWVuc2lvbnMgY291bGQgYmUgbm90IGZvdW5kLicpOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBkaW1lbnNpb247CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiA8cD5Db21wdXRlcyBhbiBhdmVyYWdlIGVzdGltYXRlZCBtb2R1bGUgc2l6ZSBiYXNlZCBvbiBlc3RpbWF0ZWQgZGVyaXZlZCBmcm9tIHRoZSBwb3NpdGlvbnMKCSAgICAgKiBvZiB0aGUgdGhyZWUgZmluZGVyIHBhdHRlcm5zLjwvcD4KCSAgICAgKgoJICAgICAqIEBwYXJhbSB0b3BMZWZ0IGRldGVjdGVkIHRvcC1sZWZ0IGZpbmRlciBwYXR0ZXJuIGNlbnRlcgoJICAgICAqIEBwYXJhbSB0b3BSaWdodCBkZXRlY3RlZCB0b3AtcmlnaHQgZmluZGVyIHBhdHRlcm4gY2VudGVyCgkgICAgICogQHBhcmFtIGJvdHRvbUxlZnQgZGV0ZWN0ZWQgYm90dG9tLWxlZnQgZmluZGVyIHBhdHRlcm4gY2VudGVyCgkgICAgICogQHJldHVybiBlc3RpbWF0ZWQgbW9kdWxlIHNpemUKCSAgICAgKi8KCSAgICBEZXRlY3Rvci5wcm90b3R5cGUuY2FsY3VsYXRlTW9kdWxlU2l6ZSA9IGZ1bmN0aW9uICh0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCkgewoJICAgICAgICAvLyBUYWtlIHRoZSBhdmVyYWdlCgkgICAgICAgIHJldHVybiAodGhpcy5jYWxjdWxhdGVNb2R1bGVTaXplT25lV2F5KHRvcExlZnQsIHRvcFJpZ2h0KSArCgkgICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZU1vZHVsZVNpemVPbmVXYXkodG9wTGVmdCwgYm90dG9tTGVmdCkpIC8gMi4wOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogPHA+RXN0aW1hdGVzIG1vZHVsZSBzaXplIGJhc2VkIG9uIHR3byBmaW5kZXIgcGF0dGVybnMgLS0gaXQgdXNlcwoJICAgICAqIHtAbGluayAjc2l6ZU9mQmxhY2tXaGl0ZUJsYWNrUnVuQm90aFdheXMoaW50LCBpbnQsIGludCwgaW50KX0gdG8gZmlndXJlIHRoZQoJICAgICAqIHdpZHRoIG9mIGVhY2gsIG1lYXN1cmluZyBhbG9uZyB0aGUgYXhpcyBiZXR3ZWVuIHRoZWlyIGNlbnRlcnMuPC9wPgoJICAgICAqLwoJICAgIERldGVjdG9yLnByb3RvdHlwZS5jYWxjdWxhdGVNb2R1bGVTaXplT25lV2F5ID0gZnVuY3Rpb24gKHBhdHRlcm4sIG90aGVyUGF0dGVybikgewoJICAgICAgICB2YXIgbW9kdWxlU2l6ZUVzdDEgPSB0aGlzLnNpemVPZkJsYWNrV2hpdGVCbGFja1J1bkJvdGhXYXlzKC8qKGludCkgKi8gTWF0aC5mbG9vcihwYXR0ZXJuLmdldFgoKSksIAoJICAgICAgICAvKihpbnQpICovIE1hdGguZmxvb3IocGF0dGVybi5nZXRZKCkpLCAKCSAgICAgICAgLyooaW50KSAqLyBNYXRoLmZsb29yKG90aGVyUGF0dGVybi5nZXRYKCkpLCAKCSAgICAgICAgLyooaW50KSAqLyBNYXRoLmZsb29yKG90aGVyUGF0dGVybi5nZXRZKCkpKTsKCSAgICAgICAgdmFyIG1vZHVsZVNpemVFc3QyID0gdGhpcy5zaXplT2ZCbGFja1doaXRlQmxhY2tSdW5Cb3RoV2F5cygvKihpbnQpICovIE1hdGguZmxvb3Iob3RoZXJQYXR0ZXJuLmdldFgoKSksIAoJICAgICAgICAvKihpbnQpICovIE1hdGguZmxvb3Iob3RoZXJQYXR0ZXJuLmdldFkoKSksIAoJICAgICAgICAvKihpbnQpICovIE1hdGguZmxvb3IocGF0dGVybi5nZXRYKCkpLCAKCSAgICAgICAgLyooaW50KSAqLyBNYXRoLmZsb29yKHBhdHRlcm4uZ2V0WSgpKSk7CgkgICAgICAgIGlmIChpc05hTihtb2R1bGVTaXplRXN0MSkpIHsKCSAgICAgICAgICAgIHJldHVybiBtb2R1bGVTaXplRXN0MiAvIDcuMDsKCSAgICAgICAgfQoJICAgICAgICBpZiAoaXNOYU4obW9kdWxlU2l6ZUVzdDIpKSB7CgkgICAgICAgICAgICByZXR1cm4gbW9kdWxlU2l6ZUVzdDEgLyA3LjA7CgkgICAgICAgIH0KCSAgICAgICAgLy8gQXZlcmFnZSB0aGVtLCBhbmQgZGl2aWRlIGJ5IDcgc2luY2Ugd2UndmUgY291bnRlZCB0aGUgd2lkdGggb2YgMyBibGFjayBtb2R1bGVzLAoJICAgICAgICAvLyBhbmQgMSB3aGl0ZSBhbmQgMSBibGFjayBtb2R1bGUgb24gZWl0aGVyIHNpZGUuIEVyZ28sIGRpdmlkZSBzdW0gYnkgMTQuCgkgICAgICAgIHJldHVybiAobW9kdWxlU2l6ZUVzdDEgKyBtb2R1bGVTaXplRXN0MikgLyAxNC4wOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogU2VlIHtAbGluayAjc2l6ZU9mQmxhY2tXaGl0ZUJsYWNrUnVuKGludCwgaW50LCBpbnQsIGludCl9OyBjb21wdXRlcyB0aGUgdG90YWwgd2lkdGggb2YKCSAgICAgKiBhIGZpbmRlciBwYXR0ZXJuIGJ5IGxvb2tpbmcgZm9yIGEgYmxhY2std2hpdGUtYmxhY2sgcnVuIGZyb20gdGhlIGNlbnRlciBpbiB0aGUgZGlyZWN0aW9uCgkgICAgICogb2YgYW5vdGhlciBwb2ludCAoYW5vdGhlciBmaW5kZXIgcGF0dGVybiBjZW50ZXIpLCBhbmQgaW4gdGhlIG9wcG9zaXRlIGRpcmVjdGlvbiB0b28uCgkgICAgICovCgkgICAgRGV0ZWN0b3IucHJvdG90eXBlLnNpemVPZkJsYWNrV2hpdGVCbGFja1J1bkJvdGhXYXlzID0gZnVuY3Rpb24gKGZyb21YIC8qaW50Ki8sIGZyb21ZIC8qaW50Ki8sIHRvWCAvKmludCovLCB0b1kgLyppbnQqLykgewoJICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5zaXplT2ZCbGFja1doaXRlQmxhY2tSdW4oZnJvbVgsIGZyb21ZLCB0b1gsIHRvWSk7CgkgICAgICAgIC8vIE5vdyBjb3VudCBvdGhlciB3YXkgLS0gZG9uJ3QgcnVuIG9mZiBpbWFnZSB0aG91Z2ggb2YgY291cnNlCgkgICAgICAgIHZhciBzY2FsZSA9IDEuMDsKCSAgICAgICAgdmFyIG90aGVyVG9YID0gZnJvbVggLSAodG9YIC0gZnJvbVgpOwoJICAgICAgICBpZiAob3RoZXJUb1ggPCAwKSB7CgkgICAgICAgICAgICBzY2FsZSA9IGZyb21YIC8gLyooZmxvYXQpICovIChmcm9tWCAtIG90aGVyVG9YKTsKCSAgICAgICAgICAgIG90aGVyVG9YID0gMDsKCSAgICAgICAgfQoJICAgICAgICBlbHNlIGlmIChvdGhlclRvWCA+PSB0aGlzLmltYWdlLmdldFdpZHRoKCkpIHsKCSAgICAgICAgICAgIHNjYWxlID0gKHRoaXMuaW1hZ2UuZ2V0V2lkdGgoKSAtIDEgLSBmcm9tWCkgLyAvKihmbG9hdCkgKi8gKG90aGVyVG9YIC0gZnJvbVgpOwoJICAgICAgICAgICAgb3RoZXJUb1ggPSB0aGlzLmltYWdlLmdldFdpZHRoKCkgLSAxOwoJICAgICAgICB9CgkgICAgICAgIHZhciBvdGhlclRvWSA9IC8qKGludCkgKi8gTWF0aC5mbG9vcihmcm9tWSAtICh0b1kgLSBmcm9tWSkgKiBzY2FsZSk7CgkgICAgICAgIHNjYWxlID0gMS4wOwoJICAgICAgICBpZiAob3RoZXJUb1kgPCAwKSB7CgkgICAgICAgICAgICBzY2FsZSA9IGZyb21ZIC8gLyooZmxvYXQpICovIChmcm9tWSAtIG90aGVyVG9ZKTsKCSAgICAgICAgICAgIG90aGVyVG9ZID0gMDsKCSAgICAgICAgfQoJICAgICAgICBlbHNlIGlmIChvdGhlclRvWSA+PSB0aGlzLmltYWdlLmdldEhlaWdodCgpKSB7CgkgICAgICAgICAgICBzY2FsZSA9ICh0aGlzLmltYWdlLmdldEhlaWdodCgpIC0gMSAtIGZyb21ZKSAvIC8qKGZsb2F0KSAqLyAob3RoZXJUb1kgLSBmcm9tWSk7CgkgICAgICAgICAgICBvdGhlclRvWSA9IHRoaXMuaW1hZ2UuZ2V0SGVpZ2h0KCkgLSAxOwoJICAgICAgICB9CgkgICAgICAgIG90aGVyVG9YID0gLyooaW50KSAqLyBNYXRoLmZsb29yKGZyb21YICsgKG90aGVyVG9YIC0gZnJvbVgpICogc2NhbGUpOwoJICAgICAgICByZXN1bHQgKz0gdGhpcy5zaXplT2ZCbGFja1doaXRlQmxhY2tSdW4oZnJvbVgsIGZyb21ZLCBvdGhlclRvWCwgb3RoZXJUb1kpOwoJICAgICAgICAvLyBNaWRkbGUgcGl4ZWwgaXMgZG91YmxlLWNvdW50ZWQgdGhpcyB3YXk7IHN1YnRyYWN0IDEKCSAgICAgICAgcmV0dXJuIHJlc3VsdCAtIDEuMDsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIDxwPlRoaXMgbWV0aG9kIHRyYWNlcyBhIGxpbmUgZnJvbSBhIHBvaW50IGluIHRoZSBpbWFnZSwgaW4gdGhlIGRpcmVjdGlvbiB0b3dhcmRzIGFub3RoZXIgcG9pbnQuCgkgICAgICogSXQgYmVnaW5zIGluIGEgYmxhY2sgcmVnaW9uLCBhbmQga2VlcHMgZ29pbmcgdW50aWwgaXQgZmluZHMgd2hpdGUsIHRoZW4gYmxhY2ssIHRoZW4gd2hpdGUgYWdhaW4uCgkgICAgICogSXQgcmVwb3J0cyB0aGUgZGlzdGFuY2UgZnJvbSB0aGUgc3RhcnQgdG8gdGhpcyBwb2ludC48L3A+CgkgICAgICoKCSAgICAgKiA8cD5UaGlzIGlzIHVzZWQgd2hlbiBmaWd1cmluZyBvdXQgaG93IHdpZGUgYSBmaW5kZXIgcGF0dGVybiBpcywgd2hlbiB0aGUgZmluZGVyIHBhdHRlcm4KCSAgICAgKiBtYXkgYmUgc2tld2VkIG9yIHJvdGF0ZWQuPC9wPgoJICAgICAqLwoJICAgIERldGVjdG9yLnByb3RvdHlwZS5zaXplT2ZCbGFja1doaXRlQmxhY2tSdW4gPSBmdW5jdGlvbiAoZnJvbVggLyppbnQqLywgZnJvbVkgLyppbnQqLywgdG9YIC8qaW50Ki8sIHRvWSAvKmludCovKSB7CgkgICAgICAgIC8vIE1pbGQgdmFyaWFudCBvZiBCcmVzZW5oYW0ncyBhbGdvcml0aG0KCSAgICAgICAgLy8gc2VlIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQnJlc2VuaGFtJ3NfbGluZV9hbGdvcml0aG0KCSAgICAgICAgdmFyIHN0ZWVwID0gTWF0aC5hYnModG9ZIC0gZnJvbVkpID4gTWF0aC5hYnModG9YIC0gZnJvbVgpOwoJICAgICAgICBpZiAoc3RlZXApIHsKCSAgICAgICAgICAgIHZhciB0ZW1wID0gZnJvbVg7CgkgICAgICAgICAgICBmcm9tWCA9IGZyb21ZOwoJICAgICAgICAgICAgZnJvbVkgPSB0ZW1wOwoJICAgICAgICAgICAgdGVtcCA9IHRvWDsKCSAgICAgICAgICAgIHRvWCA9IHRvWTsKCSAgICAgICAgICAgIHRvWSA9IHRlbXA7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGR4ID0gTWF0aC5hYnModG9YIC0gZnJvbVgpOwoJICAgICAgICB2YXIgZHkgPSBNYXRoLmFicyh0b1kgLSBmcm9tWSk7CgkgICAgICAgIHZhciBlcnJvciA9IC1keCAvIDI7CgkgICAgICAgIHZhciB4c3RlcCA9IGZyb21YIDwgdG9YID8gMSA6IC0xOwoJICAgICAgICB2YXIgeXN0ZXAgPSBmcm9tWSA8IHRvWSA/IDEgOiAtMTsKCSAgICAgICAgLy8gSW4gYmxhY2sgcGl4ZWxzLCBsb29raW5nIGZvciB3aGl0ZSwgZmlyc3Qgb3Igc2Vjb25kIHRpbWUuCgkgICAgICAgIHZhciBzdGF0ZSA9IDA7CgkgICAgICAgIC8vIExvb3AgdXAgdW50aWwgeCA9PSB0b1gsIGJ1dCBub3QgYmV5b25kCgkgICAgICAgIHZhciB4TGltaXQgPSB0b1ggKyB4c3RlcDsKCSAgICAgICAgZm9yICh2YXIgeCA9IGZyb21YLCB5ID0gZnJvbVk7IHggIT09IHhMaW1pdDsgeCArPSB4c3RlcCkgewoJICAgICAgICAgICAgdmFyIHJlYWxYID0gc3RlZXAgPyB5IDogeDsKCSAgICAgICAgICAgIHZhciByZWFsWSA9IHN0ZWVwID8geCA6IHk7CgkgICAgICAgICAgICAvLyBEb2VzIGN1cnJlbnQgcGl4ZWwgbWVhbiB3ZSBoYXZlIG1vdmVkIHdoaXRlIHRvIGJsYWNrIG9yIHZpY2UgdmVyc2E/CgkgICAgICAgICAgICAvLyBTY2FubmluZyBibGFjayBpbiBzdGF0ZSAwLDIgYW5kIHdoaXRlIGluIHN0YXRlIDEsIHNvIGlmIHdlIGZpbmQgdGhlIHdyb25nCgkgICAgICAgICAgICAvLyBjb2xvciwgYWR2YW5jZSB0byBuZXh0IHN0YXRlIG9yIGVuZCBpZiB3ZSBhcmUgaW4gc3RhdGUgMiBhbHJlYWR5CgkgICAgICAgICAgICBpZiAoKHN0YXRlID09PSAxKSA9PT0gdGhpcy5pbWFnZS5nZXQocmVhbFgsIHJlYWxZKSkgewoJICAgICAgICAgICAgICAgIGlmIChzdGF0ZSA9PT0gMikgewoJICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWF0aFV0aWxzXzEuZGVmYXVsdC5kaXN0YW5jZSh4LCB5LCBmcm9tWCwgZnJvbVkpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBzdGF0ZSsrOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZXJyb3IgKz0gZHk7CgkgICAgICAgICAgICBpZiAoZXJyb3IgPiAwKSB7CgkgICAgICAgICAgICAgICAgaWYgKHkgPT09IHRvWSkgewoJICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgeSArPSB5c3RlcDsKCSAgICAgICAgICAgICAgICBlcnJvciAtPSBkeDsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICAvLyBGb3VuZCBibGFjay13aGl0ZS1ibGFjazsgZ2l2ZSB0aGUgYmVuZWZpdCBvZiB0aGUgZG91YnQgdGhhdCB0aGUgbmV4dCBwaXhlbCBvdXRzaWRlIHRoZSBpbWFnZQoJICAgICAgICAvLyBpcyAid2hpdGUiIHNvIHRoaXMgbGFzdCBwb2ludCBhdCAodG9YK3hTdGVwLHRvWSkgaXMgdGhlIHJpZ2h0IGVuZGluZy4gVGhpcyBpcyByZWFsbHkgYQoJICAgICAgICAvLyBzbWFsbCBhcHByb3hpbWF0aW9uOyAodG9YK3hTdGVwLHRvWSt5U3RlcCkgbWlnaHQgYmUgcmVhbGx5IGNvcnJlY3QuIElnbm9yZSB0aGlzLgoJICAgICAgICBpZiAoc3RhdGUgPT09IDIpIHsKCSAgICAgICAgICAgIHJldHVybiBNYXRoVXRpbHNfMS5kZWZhdWx0LmRpc3RhbmNlKHRvWCArIHhzdGVwLCB0b1ksIGZyb21YLCBmcm9tWSk7CgkgICAgICAgIH0KCSAgICAgICAgLy8gZWxzZSB3ZSBkaWRuJ3QgZmluZCBldmVuIGJsYWNrLXdoaXRlLWJsYWNrOyBubyBlc3RpbWF0ZSBpcyByZWFsbHkgcG9zc2libGUKCSAgICAgICAgcmV0dXJuIE5hTjsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIDxwPkF0dGVtcHRzIHRvIGxvY2F0ZSBhbiBhbGlnbm1lbnQgcGF0dGVybiBpbiBhIGxpbWl0ZWQgcmVnaW9uIG9mIHRoZSBpbWFnZSwgd2hpY2ggaXMKCSAgICAgKiBndWVzc2VkIHRvIGNvbnRhaW4gaXQuIFRoaXMgbWV0aG9kIHVzZXMge0BsaW5rIEFsaWdubWVudFBhdHRlcm59LjwvcD4KCSAgICAgKgoJICAgICAqIEBwYXJhbSBvdmVyYWxsRXN0TW9kdWxlU2l6ZSBlc3RpbWF0ZWQgbW9kdWxlIHNpemUgc28gZmFyCgkgICAgICogQHBhcmFtIGVzdEFsaWdubWVudFggeCBjb29yZGluYXRlIG9mIGNlbnRlciBvZiBhcmVhIHByb2JhYmx5IGNvbnRhaW5pbmcgYWxpZ25tZW50IHBhdHRlcm4KCSAgICAgKiBAcGFyYW0gZXN0QWxpZ25tZW50WSB5IGNvb3JkaW5hdGUgb2YgYWJvdmUKCSAgICAgKiBAcGFyYW0gYWxsb3dhbmNlRmFjdG9yIG51bWJlciBvZiBwaXhlbHMgaW4gYWxsIGRpcmVjdGlvbnMgdG8gc2VhcmNoIGZyb20gdGhlIGNlbnRlcgoJICAgICAqIEByZXR1cm4ge0BsaW5rIEFsaWdubWVudFBhdHRlcm59IGlmIGZvdW5kLCBvciBudWxsIG90aGVyd2lzZQoJICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb24gaWYgYW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cnMgZHVyaW5nIGRldGVjdGlvbgoJICAgICAqLwoJICAgIERldGVjdG9yLnByb3RvdHlwZS5maW5kQWxpZ25tZW50SW5SZWdpb24gPSBmdW5jdGlvbiAob3ZlcmFsbEVzdE1vZHVsZVNpemUgLypmbG9hdCovLCBlc3RBbGlnbm1lbnRYIC8qaW50Ki8sIGVzdEFsaWdubWVudFkgLyppbnQqLywgYWxsb3dhbmNlRmFjdG9yIC8qZmxvYXQqLykgewoJICAgICAgICAvLyBMb29rIGZvciBhbiBhbGlnbm1lbnQgcGF0dGVybiAoMyBtb2R1bGVzIGluIHNpemUpIGFyb3VuZCB3aGVyZSBpdAoJICAgICAgICAvLyBzaG91bGQgYmUKCSAgICAgICAgdmFyIGFsbG93YW5jZSA9IC8qKGludCkgKi8gTWF0aC5mbG9vcihhbGxvd2FuY2VGYWN0b3IgKiBvdmVyYWxsRXN0TW9kdWxlU2l6ZSk7CgkgICAgICAgIHZhciBhbGlnbm1lbnRBcmVhTGVmdFggPSBNYXRoLm1heCgwLCBlc3RBbGlnbm1lbnRYIC0gYWxsb3dhbmNlKTsKCSAgICAgICAgdmFyIGFsaWdubWVudEFyZWFSaWdodFggPSBNYXRoLm1pbih0aGlzLmltYWdlLmdldFdpZHRoKCkgLSAxLCBlc3RBbGlnbm1lbnRYICsgYWxsb3dhbmNlKTsKCSAgICAgICAgaWYgKGFsaWdubWVudEFyZWFSaWdodFggLSBhbGlnbm1lbnRBcmVhTGVmdFggPCBvdmVyYWxsRXN0TW9kdWxlU2l6ZSAqIDMpIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoJ0FsaWdubWVudCB0b3AgZXhjZWVkcyBlc3RpbWF0ZWQgbW9kdWxlIHNpemUuJyk7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGFsaWdubWVudEFyZWFUb3BZID0gTWF0aC5tYXgoMCwgZXN0QWxpZ25tZW50WSAtIGFsbG93YW5jZSk7CgkgICAgICAgIHZhciBhbGlnbm1lbnRBcmVhQm90dG9tWSA9IE1hdGgubWluKHRoaXMuaW1hZ2UuZ2V0SGVpZ2h0KCkgLSAxLCBlc3RBbGlnbm1lbnRZICsgYWxsb3dhbmNlKTsKCSAgICAgICAgaWYgKGFsaWdubWVudEFyZWFCb3R0b21ZIC0gYWxpZ25tZW50QXJlYVRvcFkgPCBvdmVyYWxsRXN0TW9kdWxlU2l6ZSAqIDMpIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoJ0FsaWdubWVudCBib3R0b20gZXhjZWVkcyBlc3RpbWF0ZWQgbW9kdWxlIHNpemUuJyk7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGFsaWdubWVudEZpbmRlciA9IG5ldyBBbGlnbm1lbnRQYXR0ZXJuRmluZGVyXzEuZGVmYXVsdCh0aGlzLmltYWdlLCBhbGlnbm1lbnRBcmVhTGVmdFgsIGFsaWdubWVudEFyZWFUb3BZLCBhbGlnbm1lbnRBcmVhUmlnaHRYIC0gYWxpZ25tZW50QXJlYUxlZnRYLCBhbGlnbm1lbnRBcmVhQm90dG9tWSAtIGFsaWdubWVudEFyZWFUb3BZLCBvdmVyYWxsRXN0TW9kdWxlU2l6ZSwgdGhpcy5yZXN1bHRQb2ludENhbGxiYWNrKTsKCSAgICAgICAgcmV0dXJuIGFsaWdubWVudEZpbmRlci5maW5kKCk7CgkgICAgfTsKCSAgICByZXR1cm4gRGV0ZWN0b3I7Cgl9KCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gRGV0ZWN0b3I7CgoJfSk7CgoJdmFyIFFSQ29kZVJlYWRlcl8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJLyoKCSAqIENvcHlyaWdodCAyMDA3IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgkvKm5hbWVzcGFjZSBjb20uZ29vZ2xlLnp4aW5nLnFyY29kZSB7Ki8KCgoKCgoKCS8vIGltcG9ydCBEZXRlY3RvclJlc3VsdCBmcm9tICcuLi9jb21tb24vRGV0ZWN0b3JSZXN1bHQnOwoKCgoJLyppbXBvcnQgamF2YS51dGlsLkxpc3Q7Ki8KCS8qaW1wb3J0IGphdmEudXRpbC5NYXA7Ki8KCS8qKgoJICogVGhpcyBpbXBsZW1lbnRhdGlvbiBjYW4gZGV0ZWN0IGFuZCBkZWNvZGUgUVIgQ29kZXMgaW4gYW4gaW1hZ2UuCgkgKgoJICogQGF1dGhvciBTZWFuIE93ZW4KCSAqLwoJdmFyIFFSQ29kZVJlYWRlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBRUkNvZGVSZWFkZXIoKSB7CgkgICAgICAgIHRoaXMuZGVjb2RlciA9IG5ldyBEZWNvZGVyXzEkMi5kZWZhdWx0KCk7CgkgICAgfQoJICAgIFFSQ29kZVJlYWRlci5wcm90b3R5cGUuZ2V0RGVjb2RlciA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuZGVjb2RlcjsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIExvY2F0ZXMgYW5kIGRlY29kZXMgYSBRUiBjb2RlIGluIGFuIGltYWdlLgoJICAgICAqCgkgICAgICogQHJldHVybiBhIHJlcHJlc2VudGluZzogc3RyaW5nIHRoZSBjb250ZW50IGVuY29kZWQgYnkgdGhlIFFSIGNvZGUKCSAgICAgKiBAdGhyb3dzIE5vdEZvdW5kRXhjZXB0aW9uIGlmIGEgUVIgY29kZSBjYW5ub3QgYmUgZm91bmQKCSAgICAgKiBAdGhyb3dzIEZvcm1hdEV4Y2VwdGlvbiBpZiBhIFFSIGNvZGUgY2Fubm90IGJlIGRlY29kZWQKCSAgICAgKiBAdGhyb3dzIENoZWNrc3VtRXhjZXB0aW9uIGlmIGVycm9yIGNvcnJlY3Rpb24gZmFpbHMKCSAgICAgKi8KCSAgICAvKkBPdmVycmlkZSovCgkgICAgLy8gcHVibGljIGRlY29kZShpbWFnZTogQmluYXJ5Qml0bWFwKTogUmVzdWx0IC8qdGhyb3dzIE5vdEZvdW5kRXhjZXB0aW9uLCBDaGVja3N1bUV4Y2VwdGlvbiwgRm9ybWF0RXhjZXB0aW9uICovIHsKCSAgICAvLyAgIHJldHVybiB0aGlzLmRlY29kZShpbWFnZSwgbnVsbCkKCSAgICAvLyB9CgkgICAgLypAT3ZlcnJpZGUqLwoJICAgIFFSQ29kZVJlYWRlci5wcm90b3R5cGUuZGVjb2RlID0gZnVuY3Rpb24gKGltYWdlLCBoaW50cykgewoJICAgICAgICB2YXIgZGVjb2RlclJlc3VsdDsKCSAgICAgICAgdmFyIHBvaW50czsKCSAgICAgICAgaWYgKGhpbnRzICE9PSB1bmRlZmluZWQgJiYgaGludHMgIT09IG51bGwgJiYgdW5kZWZpbmVkICE9PSBoaW50cy5nZXQoRGVjb2RlSGludFR5cGVfMS5kZWZhdWx0LlBVUkVfQkFSQ09ERSkpIHsKCSAgICAgICAgICAgIHZhciBiaXRzID0gUVJDb2RlUmVhZGVyLmV4dHJhY3RQdXJlQml0cyhpbWFnZS5nZXRCbGFja01hdHJpeCgpKTsKCSAgICAgICAgICAgIGRlY29kZXJSZXN1bHQgPSB0aGlzLmRlY29kZXIuZGVjb2RlQml0TWF0cml4KGJpdHMsIGhpbnRzKTsKCSAgICAgICAgICAgIHBvaW50cyA9IFFSQ29kZVJlYWRlci5OT19QT0lOVFM7CgkgICAgICAgIH0KCSAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICB2YXIgZGV0ZWN0b3JSZXN1bHQgPSBuZXcgRGV0ZWN0b3JfMSQyLmRlZmF1bHQoaW1hZ2UuZ2V0QmxhY2tNYXRyaXgoKSkuZGV0ZWN0KGhpbnRzKTsKCSAgICAgICAgICAgIGRlY29kZXJSZXN1bHQgPSB0aGlzLmRlY29kZXIuZGVjb2RlQml0TWF0cml4KGRldGVjdG9yUmVzdWx0LmdldEJpdHMoKSwgaGludHMpOwoJICAgICAgICAgICAgcG9pbnRzID0gZGV0ZWN0b3JSZXN1bHQuZ2V0UG9pbnRzKCk7CgkgICAgICAgIH0KCSAgICAgICAgLy8gSWYgdGhlIGNvZGUgd2FzIG1pcnJvcmVkOiBzd2FwIHRoZSBib3R0b20tbGVmdCBhbmQgdGhlIHRvcC1yaWdodCBwb2ludHMuCgkgICAgICAgIGlmIChkZWNvZGVyUmVzdWx0LmdldE90aGVyKCkgaW5zdGFuY2VvZiBRUkNvZGVEZWNvZGVyTWV0YURhdGFfMS5kZWZhdWx0KSB7CgkgICAgICAgICAgICBkZWNvZGVyUmVzdWx0LmdldE90aGVyKCkuYXBwbHlNaXJyb3JlZENvcnJlY3Rpb24ocG9pbnRzKTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IFJlc3VsdF8xLmRlZmF1bHQoZGVjb2RlclJlc3VsdC5nZXRUZXh0KCksIGRlY29kZXJSZXN1bHQuZ2V0UmF3Qnl0ZXMoKSwgdW5kZWZpbmVkLCBwb2ludHMsIEJhcmNvZGVGb3JtYXRfMS5kZWZhdWx0LlFSX0NPREUsIHVuZGVmaW5lZCk7CgkgICAgICAgIHZhciBieXRlU2VnbWVudHMgPSBkZWNvZGVyUmVzdWx0LmdldEJ5dGVTZWdtZW50cygpOwoJICAgICAgICBpZiAoYnl0ZVNlZ21lbnRzICE9PSBudWxsKSB7CgkgICAgICAgICAgICByZXN1bHQucHV0TWV0YWRhdGEoUmVzdWx0TWV0YWRhdGFUeXBlXzEuZGVmYXVsdC5CWVRFX1NFR01FTlRTLCBieXRlU2VnbWVudHMpOwoJICAgICAgICB9CgkgICAgICAgIHZhciBlY0xldmVsID0gZGVjb2RlclJlc3VsdC5nZXRFQ0xldmVsKCk7CgkgICAgICAgIGlmIChlY0xldmVsICE9PSBudWxsKSB7CgkgICAgICAgICAgICByZXN1bHQucHV0TWV0YWRhdGEoUmVzdWx0TWV0YWRhdGFUeXBlXzEuZGVmYXVsdC5FUlJPUl9DT1JSRUNUSU9OX0xFVkVMLCBlY0xldmVsKTsKCSAgICAgICAgfQoJICAgICAgICBpZiAoZGVjb2RlclJlc3VsdC5oYXNTdHJ1Y3R1cmVkQXBwZW5kKCkpIHsKCSAgICAgICAgICAgIHJlc3VsdC5wdXRNZXRhZGF0YShSZXN1bHRNZXRhZGF0YVR5cGVfMS5kZWZhdWx0LlNUUlVDVFVSRURfQVBQRU5EX1NFUVVFTkNFLCBkZWNvZGVyUmVzdWx0LmdldFN0cnVjdHVyZWRBcHBlbmRTZXF1ZW5jZU51bWJlcigpKTsKCSAgICAgICAgICAgIHJlc3VsdC5wdXRNZXRhZGF0YShSZXN1bHRNZXRhZGF0YVR5cGVfMS5kZWZhdWx0LlNUUlVDVFVSRURfQVBQRU5EX1BBUklUWSwgZGVjb2RlclJlc3VsdC5nZXRTdHJ1Y3R1cmVkQXBwZW5kUGFyaXR5KCkpOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiByZXN1bHQ7CgkgICAgfTsKCSAgICAvKkBPdmVycmlkZSovCgkgICAgUVJDb2RlUmVhZGVyLnByb3RvdHlwZS5yZXNldCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgLy8gZG8gbm90aGluZwoJICAgIH07CgkgICAgLyoqCgkgICAgICogVGhpcyBtZXRob2QgZGV0ZWN0cyBhIGNvZGUgaW4gYSAicHVyZSIgaW1hZ2UgLS0gdGhhdCBpcywgcHVyZSBtb25vY2hyb21lIGltYWdlCgkgICAgICogd2hpY2ggY29udGFpbnMgb25seSBhbiB1bnJvdGF0ZWQsIHVuc2tld2VkLCBpbWFnZSBvZiBhIGNvZGUsIHdpdGggc29tZSB3aGl0ZSBib3JkZXIKCSAgICAgKiBhcm91bmQgaXQuIFRoaXMgaXMgYSBzcGVjaWFsaXplZCBtZXRob2QgdGhhdCB3b3JrcyBleGNlcHRpb25hbGx5IGZhc3QgaW4gdGhpcyBzcGVjaWFsCgkgICAgICogY2FzZS4KCSAgICAgKgoJICAgICAqIEBzZWUgY29tLmdvb2dsZS56eGluZy5kYXRhbWF0cml4LkRhdGFNYXRyaXhSZWFkZXIjZXh0cmFjdFB1cmVCaXRzKEJpdE1hdHJpeCkKCSAgICAgKi8KCSAgICBRUkNvZGVSZWFkZXIuZXh0cmFjdFB1cmVCaXRzID0gZnVuY3Rpb24gKGltYWdlKSB7CgkgICAgICAgIHZhciBsZWZ0VG9wQmxhY2sgPSBpbWFnZS5nZXRUb3BMZWZ0T25CaXQoKTsKCSAgICAgICAgdmFyIHJpZ2h0Qm90dG9tQmxhY2sgPSBpbWFnZS5nZXRCb3R0b21SaWdodE9uQml0KCk7CgkgICAgICAgIGlmIChsZWZ0VG9wQmxhY2sgPT09IG51bGwgfHwgcmlnaHRCb3R0b21CbGFjayA9PT0gbnVsbCkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgICAgIHZhciBtb2R1bGVTaXplID0gdGhpcy5tb2R1bGVTaXplKGxlZnRUb3BCbGFjaywgaW1hZ2UpOwoJICAgICAgICB2YXIgdG9wID0gbGVmdFRvcEJsYWNrWzFdOwoJICAgICAgICB2YXIgYm90dG9tID0gcmlnaHRCb3R0b21CbGFja1sxXTsKCSAgICAgICAgdmFyIGxlZnQgPSBsZWZ0VG9wQmxhY2tbMF07CgkgICAgICAgIHZhciByaWdodCA9IHJpZ2h0Qm90dG9tQmxhY2tbMF07CgkgICAgICAgIC8vIFNhbml0eSBjaGVjayEKCSAgICAgICAgaWYgKGxlZnQgPj0gcmlnaHQgfHwgdG9wID49IGJvdHRvbSkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgICAgIGlmIChib3R0b20gLSB0b3AgIT09IHJpZ2h0IC0gbGVmdCkgewoJICAgICAgICAgICAgLy8gU3BlY2lhbCBjYXNlLCB3aGVyZSBib3R0b20tcmlnaHQgbW9kdWxlIHdhc24ndCBibGFjayBzbyB3ZSBmb3VuZCBzb21ldGhpbmcgZWxzZSBpbiB0aGUgbGFzdCByb3cKCSAgICAgICAgICAgIC8vIEFzc3VtZSBpdCdzIGEgc3F1YXJlLCBzbyB1c2UgaGVpZ2h0IGFzIHRoZSB3aWR0aAoJICAgICAgICAgICAgcmlnaHQgPSBsZWZ0ICsgKGJvdHRvbSAtIHRvcCk7CgkgICAgICAgICAgICBpZiAocmlnaHQgPj0gaW1hZ2UuZ2V0V2lkdGgoKSkgewoJICAgICAgICAgICAgICAgIC8vIEFib3J0IGlmIHRoYXQgd291bGQgbm90IG1ha2Ugc2Vuc2UgLS0gb2ZmIGltYWdlCgkgICAgICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHZhciBtYXRyaXhXaWR0aCA9IE1hdGgucm91bmQoKHJpZ2h0IC0gbGVmdCArIDEpIC8gbW9kdWxlU2l6ZSk7CgkgICAgICAgIHZhciBtYXRyaXhIZWlnaHQgPSBNYXRoLnJvdW5kKChib3R0b20gLSB0b3AgKyAxKSAvIG1vZHVsZVNpemUpOwoJICAgICAgICBpZiAobWF0cml4V2lkdGggPD0gMCB8fCBtYXRyaXhIZWlnaHQgPD0gMCkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgICAgIGlmIChtYXRyaXhIZWlnaHQgIT09IG1hdHJpeFdpZHRoKSB7CgkgICAgICAgICAgICAvLyBPbmx5IHBvc3NpYmx5IGRlY29kZSBzcXVhcmUgcmVnaW9ucwoJICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgICAgIC8vIFB1c2ggaW4gdGhlICJib3JkZXIiIGJ5IGhhbGYgdGhlIG1vZHVsZSB3aWR0aCBzbyB0aGF0IHdlIHN0YXJ0CgkgICAgICAgIC8vIHNhbXBsaW5nIGluIHRoZSBtaWRkbGUgb2YgdGhlIG1vZHVsZS4gSnVzdCBpbiBjYXNlIHRoZSBpbWFnZSBpcyBhCgkgICAgICAgIC8vIGxpdHRsZSBvZmYsIHRoaXMgd2lsbCBoZWxwIHJlY292ZXIuCgkgICAgICAgIHZhciBudWRnZSA9IC8qKGludCkgKi8gTWF0aC5mbG9vcihtb2R1bGVTaXplIC8gMi4wKTsKCSAgICAgICAgdG9wICs9IG51ZGdlOwoJICAgICAgICBsZWZ0ICs9IG51ZGdlOwoJICAgICAgICAvLyBCdXQgY2FyZWZ1bCB0aGF0IHRoaXMgZG9lcyBub3Qgc2FtcGxlIG9mZiB0aGUgZWRnZQoJICAgICAgICAvLyAicmlnaHQiIGlzIHRoZSBmYXJ0aGVzdC1yaWdodCB2YWxpZCBwaXhlbCBsb2NhdGlvbiAtLSByaWdodCsxIGlzIG5vdCBuZWNlc3NhcmlseQoJICAgICAgICAvLyBUaGlzIGlzIHBvc2l0aXZlIGJ5IGhvdyBtdWNoIHRoZSBpbm5lciB4IGxvb3AgYmVsb3cgd291bGQgYmUgdG9vIGxhcmdlCgkgICAgICAgIHZhciBudWRnZWRUb29GYXJSaWdodCA9IGxlZnQgKyAvKihpbnQpICovIE1hdGguZmxvb3IoKG1hdHJpeFdpZHRoIC0gMSkgKiBtb2R1bGVTaXplKSAtIHJpZ2h0OwoJICAgICAgICBpZiAobnVkZ2VkVG9vRmFyUmlnaHQgPiAwKSB7CgkgICAgICAgICAgICBpZiAobnVkZ2VkVG9vRmFyUmlnaHQgPiBudWRnZSkgewoJICAgICAgICAgICAgICAgIC8vIE5laXRoZXIgd2F5IGZpdHM7IGFib3J0CgkgICAgICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgbGVmdCAtPSBudWRnZWRUb29GYXJSaWdodDsKCSAgICAgICAgfQoJICAgICAgICAvLyBTZWUgbG9naWMgYWJvdmUKCSAgICAgICAgdmFyIG51ZGdlZFRvb0ZhckRvd24gPSB0b3AgKyAvKihpbnQpICovIE1hdGguZmxvb3IoKG1hdHJpeEhlaWdodCAtIDEpICogbW9kdWxlU2l6ZSkgLSBib3R0b207CgkgICAgICAgIGlmIChudWRnZWRUb29GYXJEb3duID4gMCkgewoJICAgICAgICAgICAgaWYgKG51ZGdlZFRvb0ZhckRvd24gPiBudWRnZSkgewoJICAgICAgICAgICAgICAgIC8vIE5laXRoZXIgd2F5IGZpdHM7IGFib3J0CgkgICAgICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgdG9wIC09IG51ZGdlZFRvb0ZhckRvd247CgkgICAgICAgIH0KCSAgICAgICAgLy8gTm93IGp1c3QgcmVhZCBvZmYgdGhlIGJpdHMKCSAgICAgICAgdmFyIGJpdHMgPSBuZXcgQml0TWF0cml4XzEuZGVmYXVsdChtYXRyaXhXaWR0aCwgbWF0cml4SGVpZ2h0KTsKCSAgICAgICAgZm9yICh2YXIgeSA9IDA7IHkgPCBtYXRyaXhIZWlnaHQ7IHkrKykgewoJICAgICAgICAgICAgdmFyIGlPZmZzZXQgPSB0b3AgKyAvKihpbnQpICovIE1hdGguZmxvb3IoeSAqIG1vZHVsZVNpemUpOwoJICAgICAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCBtYXRyaXhXaWR0aDsgeCsrKSB7CgkgICAgICAgICAgICAgICAgaWYgKGltYWdlLmdldChsZWZ0ICsgLyooaW50KSAqLyBNYXRoLmZsb29yKHggKiBtb2R1bGVTaXplKSwgaU9mZnNldCkpIHsKCSAgICAgICAgICAgICAgICAgICAgYml0cy5zZXQoeCwgeSk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBiaXRzOwoJICAgIH07CgkgICAgUVJDb2RlUmVhZGVyLm1vZHVsZVNpemUgPSBmdW5jdGlvbiAobGVmdFRvcEJsYWNrLCBpbWFnZSkgewoJICAgICAgICB2YXIgaGVpZ2h0ID0gaW1hZ2UuZ2V0SGVpZ2h0KCk7CgkgICAgICAgIHZhciB3aWR0aCA9IGltYWdlLmdldFdpZHRoKCk7CgkgICAgICAgIHZhciB4ID0gbGVmdFRvcEJsYWNrWzBdOwoJICAgICAgICB2YXIgeSA9IGxlZnRUb3BCbGFja1sxXTsKCSAgICAgICAgdmFyIGluQmxhY2sgPSB0cnVlOwoJICAgICAgICB2YXIgdHJhbnNpdGlvbnMgPSAwOwoJICAgICAgICB3aGlsZSAoeCA8IHdpZHRoICYmIHkgPCBoZWlnaHQpIHsKCSAgICAgICAgICAgIGlmIChpbkJsYWNrICE9PSBpbWFnZS5nZXQoeCwgeSkpIHsKCSAgICAgICAgICAgICAgICBpZiAoKyt0cmFuc2l0aW9ucyA9PT0gNSkgewoJICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgaW5CbGFjayA9ICFpbkJsYWNrOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgeCsrOwoJICAgICAgICAgICAgeSsrOwoJICAgICAgICB9CgkgICAgICAgIGlmICh4ID09PSB3aWR0aCB8fCB5ID09PSBoZWlnaHQpIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gKHggLSBsZWZ0VG9wQmxhY2tbMF0pIC8gNy4wOwoJICAgIH07CgkgICAgUVJDb2RlUmVhZGVyLk5PX1BPSU5UUyA9IG5ldyBBcnJheSgpOwoJICAgIHJldHVybiBRUkNvZGVSZWFkZXI7Cgl9KCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gUVJDb2RlUmVhZGVyOwoKCX0pOwoKCXZhciBQREY0MTdDb21tb25fMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCS8qCgkqIENvcHlyaWdodCAyMDA5IFpYaW5nIGF1dGhvcnMKCSoKCSogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkqCgkqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkqCgkqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkqLwoJLy8gcGFja2FnZSBjb20uZ29vZ2xlLnp4aW5nLnBkZjQxNzsKCXZhciBfX3ZhbHVlcyA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX3ZhbHVlcykgfHwgZnVuY3Rpb24obykgewoJICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gImZ1bmN0aW9uIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwOwoJICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pOwoJICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gIm51bWJlciIpIHJldHVybiB7CgkgICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7CgkgICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07CgkgICAgICAgIH0KCSAgICB9OwoJICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/ICJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLiIgOiAiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpOwoJfTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgkvLyBpbXBvcnQgamF2YS51dGlsLkFycmF5czsKCgkvLyBpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247CgkvLyBpbXBvcnQgY29tLmdvb2dsZS56eGluZy5jb21tb24uZGV0ZWN0b3IuTWF0aFV0aWxzOwoKCS8qKgoJICogQGF1dGhvciBTSVRBIExhYiAoa2V2aW4ub3N1bGxpdmFuQHNpdGEuYWVybykKCSAqIEBhdXRob3IgR3VlbnRoZXIgR3JhdQoJICovCgl2YXIgUERGNDE3Q29tbW9uID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIGZ1bmN0aW9uIFBERjQxN0NvbW1vbigpIHsKCSAgICB9CgkgICAgUERGNDE3Q29tbW9uLnByb3RvdHlwZS5QREY0MTdDb21tb24gPSBmdW5jdGlvbiAoKSB7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcGFyYW0gbW9kdWxlQml0Q291bnQgdmFsdWVzIHRvIHN1bQoJICAgICAqIEByZXR1cm4gc3VtIG9mIHZhbHVlcwoJICAgICAqIEBkZXByZWNhdGVkIGNhbGwge0BsaW5rIE1hdGhVdGlscyNzdW0oaW50W10pfQoJICAgICAqLwoJICAgIC8vIEBEZXByZWNhdGVkCgkgICAgUERGNDE3Q29tbW9uLmdldEJpdENvdW50U3VtID0gZnVuY3Rpb24gKG1vZHVsZUJpdENvdW50KSB7CgkgICAgICAgIHJldHVybiBNYXRoVXRpbHNfMS5kZWZhdWx0LnN1bShtb2R1bGVCaXRDb3VudCk7CgkgICAgfTsKCSAgICBQREY0MTdDb21tb24udG9JbnRBcnJheSA9IGZ1bmN0aW9uIChsaXN0KSB7CgkgICAgICAgIHZhciBlXzEsIF9hOwoJICAgICAgICBpZiAobGlzdCA9PSBudWxsIHx8ICFsaXN0Lmxlbmd0aCkgewoJICAgICAgICAgICAgcmV0dXJuIFBERjQxN0NvbW1vbi5FTVBUWV9JTlRfQVJSQVk7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBJbnQzMkFycmF5KGxpc3QubGVuZ3RoKTsKCSAgICAgICAgdmFyIGkgPSAwOwoJICAgICAgICB0cnkgewoJICAgICAgICAgICAgZm9yICh2YXIgbGlzdF8xID0gX192YWx1ZXMobGlzdCksIGxpc3RfMV8xID0gbGlzdF8xLm5leHQoKTsgIWxpc3RfMV8xLmRvbmU7IGxpc3RfMV8xID0gbGlzdF8xLm5leHQoKSkgewoJICAgICAgICAgICAgICAgIHZhciBpbnRlZ2VyID0gbGlzdF8xXzEudmFsdWU7CgkgICAgICAgICAgICAgICAgcmVzdWx0W2krK10gPSBpbnRlZ2VyOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9CgkgICAgICAgIGZpbmFsbHkgewoJICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICBpZiAobGlzdF8xXzEgJiYgIWxpc3RfMV8xLmRvbmUgJiYgKF9hID0gbGlzdF8xLnJldHVybikpIF9hLmNhbGwobGlzdF8xKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH0KCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gcmVzdWx0OwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQHBhcmFtIHN5bWJvbCBlbmNvZGVkIHN5bWJvbCB0byB0cmFuc2xhdGUgdG8gYSBjb2Rld29yZAoJICAgICAqIEByZXR1cm4gdGhlIGNvZGV3b3JkIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHN5bWJvbC4KCSAgICAgKi8KCSAgICBQREY0MTdDb21tb24uZ2V0Q29kZXdvcmQgPSBmdW5jdGlvbiAoc3ltYm9sIC8qaW50Ki8pIHsKCSAgICAgICAgdmFyIGkgPSBBcnJheXNfMS5kZWZhdWx0LmJpbmFyeVNlYXJjaChQREY0MTdDb21tb24uU1lNQk9MX1RBQkxFLCBzeW1ib2wgJiAweDNGRkZGKTsKCSAgICAgICAgaWYgKGkgPCAwKSB7CgkgICAgICAgICAgICByZXR1cm4gLTE7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIChQREY0MTdDb21tb24uQ09ERVdPUkRfVEFCTEVbaV0gLSAxKSAlIFBERjQxN0NvbW1vbi5OVU1CRVJfT0ZfQ09ERVdPUkRTOwoJICAgIH07CgkgICAgUERGNDE3Q29tbW9uLk5VTUJFUl9PRl9DT0RFV09SRFMgPSA5Mjk7CgkgICAgLy8gTWF4aW11bSBDb2Rld29yZHMgKERhdGEgKyBFcnJvcikuCgkgICAgUERGNDE3Q29tbW9uLk1BWF9DT0RFV09SRFNfSU5fQkFSQ09ERSA9IFBERjQxN0NvbW1vbi5OVU1CRVJfT0ZfQ09ERVdPUkRTIC0gMTsKCSAgICBQREY0MTdDb21tb24uTUlOX1JPV1NfSU5fQkFSQ09ERSA9IDM7CgkgICAgUERGNDE3Q29tbW9uLk1BWF9ST1dTX0lOX0JBUkNPREUgPSA5MDsKCSAgICAvLyBPbmUgbGVmdCByb3cgaW5kaWNhdGlvbiBjb2x1bW4gKyBtYXggMzAgZGF0YSBjb2x1bW5zICsgb25lIHJpZ2h0IHJvdyBpbmRpY2F0b3IgY29sdW1uCgkgICAgLy8gcHVibGljIHN0YXRpYyAvKmZpbmFsKi8gTUFYX0NPREVXT1JEU19JTl9ST1c6IC8qaW50Ki8gbnVtYmVyID0gMzI7CgkgICAgUERGNDE3Q29tbW9uLk1PRFVMRVNfSU5fQ09ERVdPUkQgPSAxNzsKCSAgICBQREY0MTdDb21tb24uTU9EVUxFU19JTl9TVE9QX1BBVFRFUk4gPSAxODsKCSAgICBQREY0MTdDb21tb24uQkFSU19JTl9NT0RVTEUgPSA4OwoJICAgIFBERjQxN0NvbW1vbi5FTVBUWV9JTlRfQVJSQVkgPSBuZXcgSW50MzJBcnJheShbXSk7CgkgICAgLyoqCgkgICAgICogVGhlIHNvcnRlZCB0YWJsZSBvZiBhbGwgcG9zc2libGUgc3ltYm9scy4gRXh0cmFjdGVkIGZyb20gdGhlIFBERjQxNwoJICAgICAqIHNwZWNpZmljYXRpb24uIFRoZSBpbmRleCBvZiBhIHN5bWJvbCBpbiB0aGlzIHRhYmxlIGNvcnJlc3BvbmRzIHRvIHRoZQoJICAgICAqIGluZGV4IGludG8gdGhlIGNvZGV3b3JkIHRhYmxlLgoJICAgICAqLwoJICAgIFBERjQxN0NvbW1vbi5TWU1CT0xfVEFCTEUgPSBJbnQzMkFycmF5LmZyb20oWwoJICAgICAgICAweDEwMjVlLCAweDEwMjdhLCAweDEwMjllLCAweDEwMmJjLCAweDEwMmYyLCAweDEwMmY0LCAweDEwMzJlLCAweDEwMzRlLCAweDEwMzVjLCAweDEwMzk2LCAweDEwM2E2LCAweDEwM2FjLAoJICAgICAgICAweDEwNDIyLCAweDEwNDI4LCAweDEwNDM2LCAweDEwNDQyLCAweDEwNDQ0LCAweDEwNDQ4LCAweDEwNDUwLCAweDEwNDVlLCAweDEwNDY2LCAweDEwNDZjLCAweDEwNDdhLCAweDEwNDgyLAoJICAgICAgICAweDEwNDllLCAweDEwNGEwLCAweDEwNGJjLCAweDEwNGM2LCAweDEwNGQ4LCAweDEwNGVlLCAweDEwNGYyLCAweDEwNGY0LCAweDEwNTA0LCAweDEwNTA4LCAweDEwNTEwLCAweDEwNTFlLAoJICAgICAgICAweDEwNTIwLCAweDEwNTNjLCAweDEwNTQwLCAweDEwNTc4LCAweDEwNTg2LCAweDEwNThjLCAweDEwNTk4LCAweDEwNWIwLCAweDEwNWJlLCAweDEwNWNlLCAweDEwNWRjLCAweDEwNWUyLAoJICAgICAgICAweDEwNWU0LCAweDEwNWU4LCAweDEwNWY2LCAweDEwNjJlLCAweDEwNjRlLCAweDEwNjVjLCAweDEwNjhlLCAweDEwNjljLCAweDEwNmI4LCAweDEwNmRlLCAweDEwNmZhLCAweDEwNzE2LAoJICAgICAgICAweDEwNzI2LCAweDEwNzJjLCAweDEwNzQ2LCAweDEwNzRjLCAweDEwNzU4LCAweDEwNzZlLCAweDEwNzkyLCAweDEwNzk0LCAweDEwN2EyLCAweDEwN2E0LCAweDEwN2E4LCAweDEwN2I2LAoJICAgICAgICAweDEwODIyLCAweDEwODI4LCAweDEwODQyLCAweDEwODQ4LCAweDEwODUwLCAweDEwODVlLCAweDEwODY2LCAweDEwODZjLCAweDEwODdhLCAweDEwODgyLCAweDEwODg0LCAweDEwODkwLAoJICAgICAgICAweDEwODllLCAweDEwOGEwLCAweDEwOGJjLCAweDEwOGM2LCAweDEwOGNjLCAweDEwOGQ4LCAweDEwOGVlLCAweDEwOGYyLCAweDEwOGY0LCAweDEwOTAyLCAweDEwOTA4LCAweDEwOTFlLAoJICAgICAgICAweDEwOTIwLCAweDEwOTNjLCAweDEwOTQwLCAweDEwOTc4LCAweDEwOTg2LCAweDEwOTk4LCAweDEwOWIwLCAweDEwOWJlLCAweDEwOWNlLCAweDEwOWRjLCAweDEwOWUyLCAweDEwOWU0LAoJICAgICAgICAweDEwOWU4LCAweDEwOWY2LCAweDEwYTA4LCAweDEwYTEwLCAweDEwYTFlLCAweDEwYTIwLCAweDEwYTNjLCAweDEwYTQwLCAweDEwYTc4LCAweDEwYWYwLCAweDEwYjA2LCAweDEwYjBjLAoJICAgICAgICAweDEwYjE4LCAweDEwYjMwLCAweDEwYjNlLCAweDEwYjYwLCAweDEwYjdjLCAweDEwYjhlLCAweDEwYjljLCAweDEwYmI4LCAweDEwYmMyLCAweDEwYmM0LCAweDEwYmM4LCAweDEwYmQwLAoJICAgICAgICAweDEwYmRlLCAweDEwYmU2LCAweDEwYmVjLCAweDEwYzJlLCAweDEwYzRlLCAweDEwYzVjLCAweDEwYzYyLCAweDEwYzY0LCAweDEwYzY4LCAweDEwYzc2LCAweDEwYzhlLCAweDEwYzljLAoJICAgICAgICAweDEwY2I4LCAweDEwY2MyLCAweDEwY2M0LCAweDEwY2M4LCAweDEwY2QwLCAweDEwY2RlLCAweDEwY2U2LCAweDEwY2VjLCAweDEwY2ZhLCAweDEwZDBlLCAweDEwZDFjLCAweDEwZDM4LAoJICAgICAgICAweDEwZDcwLCAweDEwZDdlLCAweDEwZDgyLCAweDEwZDg0LCAweDEwZDg4LCAweDEwZDkwLCAweDEwZDllLCAweDEwZGEwLCAweDEwZGJjLCAweDEwZGM2LCAweDEwZGNjLCAweDEwZGQ4LAoJICAgICAgICAweDEwZGVlLCAweDEwZGYyLCAweDEwZGY0LCAweDEwZTE2LCAweDEwZTI2LCAweDEwZTJjLCAweDEwZTQ2LCAweDEwZTU4LCAweDEwZTZlLCAweDEwZTg2LCAweDEwZThjLCAweDEwZTk4LAoJICAgICAgICAweDEwZWIwLCAweDEwZWJlLCAweDEwZWNlLCAweDEwZWRjLCAweDEwZjBhLCAweDEwZjEyLCAweDEwZjE0LCAweDEwZjIyLCAweDEwZjI4LCAweDEwZjM2LCAweDEwZjQyLCAweDEwZjQ0LAoJICAgICAgICAweDEwZjQ4LCAweDEwZjUwLCAweDEwZjVlLCAweDEwZjY2LCAweDEwZjZjLCAweDEwZmIyLCAweDEwZmI0LCAweDExMDIyLCAweDExMDI4LCAweDExMDQyLCAweDExMDQ4LCAweDExMDUwLAoJICAgICAgICAweDExMDVlLCAweDExMDdhLCAweDExMDgyLCAweDExMDg0LCAweDExMDkwLCAweDExMDllLCAweDExMGEwLCAweDExMGJjLCAweDExMGM2LCAweDExMGNjLCAweDExMGQ4LCAweDExMGVlLAoJICAgICAgICAweDExMGYyLCAweDExMGY0LCAweDExMTAyLCAweDExMTFlLCAweDExMTIwLCAweDExMTNjLCAweDExMTQwLCAweDExMTc4LCAweDExMTg2LCAweDExMTk4LCAweDExMWIwLCAweDExMWJlLAoJICAgICAgICAweDExMWNlLCAweDExMWRjLCAweDExMWUyLCAweDExMWU0LCAweDExMWU4LCAweDExMWY2LCAweDExMjA4LCAweDExMjFlLCAweDExMjIwLCAweDExMjc4LCAweDExMmYwLCAweDExMzBjLAoJICAgICAgICAweDExMzMwLCAweDExMzNlLCAweDExMzYwLCAweDExMzdjLCAweDExMzhlLCAweDExMzljLCAweDExM2I4LCAweDExM2MyLCAweDExM2M4LCAweDExM2QwLCAweDExM2RlLCAweDExM2U2LAoJICAgICAgICAweDExM2VjLCAweDExNDA4LCAweDExNDEwLCAweDExNDFlLCAweDExNDIwLCAweDExNDNjLCAweDExNDQwLCAweDExNDc4LCAweDExNGYwLCAweDExNWUwLCAweDExNjBjLCAweDExNjE4LAoJICAgICAgICAweDExNjMwLCAweDExNjNlLCAweDExNjYwLCAweDExNjdjLCAweDExNmMwLCAweDExNmY4LCAweDExNzFjLCAweDExNzM4LCAweDExNzcwLCAweDExNzdlLCAweDExNzgyLCAweDExNzg0LAoJICAgICAgICAweDExNzg4LCAweDExNzkwLCAweDExNzllLCAweDExN2EwLCAweDExN2JjLCAweDExN2M2LCAweDExN2NjLCAweDExN2Q4LCAweDExN2VlLCAweDExODJlLCAweDExODM0LCAweDExODRlLAoJICAgICAgICAweDExODVjLCAweDExODYyLCAweDExODY0LCAweDExODY4LCAweDExODc2LCAweDExODhlLCAweDExODljLCAweDExOGI4LCAweDExOGMyLCAweDExOGM4LCAweDExOGQwLCAweDExOGRlLAoJICAgICAgICAweDExOGU2LCAweDExOGVjLCAweDExOGZhLCAweDExOTBlLCAweDExOTFjLCAweDExOTM4LCAweDExOTcwLCAweDExOTdlLCAweDExOTgyLCAweDExOTg0LCAweDExOTkwLCAweDExOTllLAoJICAgICAgICAweDExOWEwLCAweDExOWJjLCAweDExOWM2LCAweDExOWNjLCAweDExOWQ4LCAweDExOWVlLCAweDExOWYyLCAweDExOWY0LCAweDExYTBlLCAweDExYTFjLCAweDExYTM4LCAweDExYTcwLAoJICAgICAgICAweDExYTdlLCAweDExYWUwLCAweDExYWZjLCAweDExYjA4LCAweDExYjEwLCAweDExYjFlLCAweDExYjIwLCAweDExYjNjLCAweDExYjQwLCAweDExYjc4LCAweDExYjhjLCAweDExYjk4LAoJICAgICAgICAweDExYmIwLCAweDExYmJlLCAweDExYmNlLCAweDExYmRjLCAweDExYmUyLCAweDExYmU0LCAweDExYmU4LCAweDExYmY2LCAweDExYzE2LCAweDExYzI2LCAweDExYzJjLCAweDExYzQ2LAoJICAgICAgICAweDExYzRjLCAweDExYzU4LCAweDExYzZlLCAweDExYzg2LCAweDExYzk4LCAweDExY2IwLCAweDExY2JlLCAweDExY2NlLCAweDExY2RjLCAweDExY2UyLCAweDExY2U0LCAweDExY2U4LAoJICAgICAgICAweDExY2Y2LCAweDExZDA2LCAweDExZDBjLCAweDExZDE4LCAweDExZDMwLCAweDExZDNlLCAweDExZDYwLCAweDExZDdjLCAweDExZDhlLCAweDExZDljLCAweDExZGI4LCAweDExZGM0LAoJICAgICAgICAweDExZGM4LCAweDExZGQwLCAweDExZGRlLCAweDExZGU2LCAweDExZGVjLCAweDExZGZhLCAweDExZTBhLCAweDExZTEyLCAweDExZTE0LCAweDExZTIyLCAweDExZTI0LCAweDExZTI4LAoJICAgICAgICAweDExZTM2LCAweDExZTQyLCAweDExZTQ0LCAweDExZTUwLCAweDExZTVlLCAweDExZTY2LCAweDExZTZjLCAweDExZTgyLCAweDExZTg0LCAweDExZTg4LCAweDExZTkwLCAweDExZTllLAoJICAgICAgICAweDExZWEwLCAweDExZWJjLCAweDExZWM2LCAweDExZWNjLCAweDExZWQ4LCAweDExZWVlLCAweDExZjFhLCAweDExZjJlLCAweDExZjMyLCAweDExZjM0LCAweDExZjRlLCAweDExZjVjLAoJICAgICAgICAweDExZjYyLCAweDExZjY0LCAweDExZjY4LCAweDExZjc2LCAweDEyMDQ4LCAweDEyMDVlLCAweDEyMDgyLCAweDEyMDg0LCAweDEyMDkwLCAweDEyMDllLCAweDEyMGEwLCAweDEyMGJjLAoJICAgICAgICAweDEyMGQ4LCAweDEyMGYyLCAweDEyMGY0LCAweDEyMTA4LCAweDEyMTFlLCAweDEyMTIwLCAweDEyMTNjLCAweDEyMTQwLCAweDEyMTc4LCAweDEyMTg2LCAweDEyMTk4LCAweDEyMWIwLAoJICAgICAgICAweDEyMWJlLCAweDEyMWUyLCAweDEyMWU0LCAweDEyMWU4LCAweDEyMWY2LCAweDEyMjA0LCAweDEyMjEwLCAweDEyMjFlLCAweDEyMjIwLCAweDEyMjc4LCAweDEyMmYwLCAweDEyMzA2LAoJICAgICAgICAweDEyMzBjLCAweDEyMzMwLCAweDEyMzNlLCAweDEyMzYwLCAweDEyMzdjLCAweDEyMzhlLCAweDEyMzljLCAweDEyM2I4LCAweDEyM2MyLCAweDEyM2M4LCAweDEyM2QwLCAweDEyM2U2LAoJICAgICAgICAweDEyM2VjLCAweDEyNDFlLCAweDEyNDIwLCAweDEyNDNjLCAweDEyNGYwLCAweDEyNWUwLCAweDEyNjE4LCAweDEyNjNlLCAweDEyNjYwLCAweDEyNjdjLCAweDEyNmMwLCAweDEyNmY4LAoJICAgICAgICAweDEyNzM4LCAweDEyNzcwLCAweDEyNzdlLCAweDEyNzgyLCAweDEyNzg0LCAweDEyNzkwLCAweDEyNzllLCAweDEyN2EwLCAweDEyN2JjLCAweDEyN2M2LCAweDEyN2NjLCAweDEyN2Q4LAoJICAgICAgICAweDEyN2VlLCAweDEyODIwLCAweDEyODNjLCAweDEyODQwLCAweDEyODc4LCAweDEyOGYwLCAweDEyOWUwLCAweDEyYmMwLCAweDEyYzE4LCAweDEyYzMwLCAweDEyYzNlLCAweDEyYzYwLAoJICAgICAgICAweDEyYzdjLCAweDEyY2MwLCAweDEyY2Y4LCAweDEyZGYwLCAweDEyZTFjLCAweDEyZTM4LCAweDEyZTcwLCAweDEyZTdlLCAweDEyZWUwLCAweDEyZWZjLCAweDEyZjA0LCAweDEyZjA4LAoJICAgICAgICAweDEyZjEwLCAweDEyZjIwLCAweDEyZjNjLCAweDEyZjQwLCAweDEyZjc4LCAweDEyZjg2LCAweDEyZjhjLCAweDEyZjk4LCAweDEyZmIwLCAweDEyZmJlLCAweDEyZmNlLCAweDEyZmRjLAoJICAgICAgICAweDEzMDJlLCAweDEzMDRlLCAweDEzMDVjLCAweDEzMDYyLCAweDEzMDY4LCAweDEzMDhlLCAweDEzMDljLCAweDEzMGI4LCAweDEzMGMyLCAweDEzMGM4LCAweDEzMGQwLCAweDEzMGRlLAoJICAgICAgICAweDEzMGVjLCAweDEzMGZhLCAweDEzMTBlLCAweDEzMTM4LCAweDEzMTcwLCAweDEzMTdlLCAweDEzMTgyLCAweDEzMTg0LCAweDEzMTkwLCAweDEzMTllLCAweDEzMWEwLCAweDEzMWJjLAoJICAgICAgICAweDEzMWM2LCAweDEzMWNjLCAweDEzMWQ4LCAweDEzMWYyLCAweDEzMWY0LCAweDEzMjBlLCAweDEzMjFjLCAweDEzMjcwLCAweDEzMjdlLCAweDEzMmUwLCAweDEzMmZjLCAweDEzMzA4LAoJICAgICAgICAweDEzMzFlLCAweDEzMzIwLCAweDEzMzNjLCAweDEzMzQwLCAweDEzMzc4LCAweDEzMzg2LCAweDEzMzk4LCAweDEzM2IwLCAweDEzM2JlLCAweDEzM2NlLCAweDEzM2RjLCAweDEzM2UyLAoJICAgICAgICAweDEzM2U0LCAweDEzM2U4LCAweDEzM2Y2LCAweDEzNDBlLCAweDEzNDFjLCAweDEzNDM4LCAweDEzNDcwLCAweDEzNDdlLCAweDEzNGUwLCAweDEzNGZjLCAweDEzNWMwLCAweDEzNWY4LAoJICAgICAgICAweDEzNjA4LCAweDEzNjEwLCAweDEzNjFlLCAweDEzNjIwLCAweDEzNjNjLCAweDEzNjQwLCAweDEzNjc4LCAweDEzNmYwLCAweDEzNzBjLCAweDEzNzE4LCAweDEzNzMwLCAweDEzNzNlLAoJICAgICAgICAweDEzNzYwLCAweDEzNzdjLCAweDEzNzljLCAweDEzN2I4LCAweDEzN2MyLCAweDEzN2M0LCAweDEzN2M4LCAweDEzN2QwLCAweDEzN2RlLCAweDEzN2U2LCAweDEzN2VjLCAweDEzODE2LAoJICAgICAgICAweDEzODI2LCAweDEzODJjLCAweDEzODQ2LCAweDEzODRjLCAweDEzODU4LCAweDEzODZlLCAweDEzODc0LCAweDEzODg2LCAweDEzODk4LCAweDEzOGIwLCAweDEzOGJlLCAweDEzOGNlLAoJICAgICAgICAweDEzOGRjLCAweDEzOGUyLCAweDEzOGU0LCAweDEzOGU4LCAweDEzOTA2LCAweDEzOTBjLCAweDEzOTMwLCAweDEzOTNlLCAweDEzOTYwLCAweDEzOTdjLCAweDEzOThlLCAweDEzOTljLAoJICAgICAgICAweDEzOWI4LCAweDEzOWM4LCAweDEzOWQwLCAweDEzOWRlLCAweDEzOWU2LCAweDEzOWVjLCAweDEzOWZhLCAweDEzYTA2LCAweDEzYTBjLCAweDEzYTE4LCAweDEzYTMwLCAweDEzYTNlLAoJICAgICAgICAweDEzYTYwLCAweDEzYTdjLCAweDEzYWMwLCAweDEzYWY4LCAweDEzYjBlLCAweDEzYjFjLCAweDEzYjM4LCAweDEzYjcwLCAweDEzYjdlLCAweDEzYjg4LCAweDEzYjkwLCAweDEzYjllLAoJICAgICAgICAweDEzYmEwLCAweDEzYmJjLCAweDEzYmNjLCAweDEzYmQ4LCAweDEzYmVlLCAweDEzYmYyLCAweDEzYmY0LCAweDEzYzEyLCAweDEzYzE0LCAweDEzYzIyLCAweDEzYzI0LCAweDEzYzI4LAoJICAgICAgICAweDEzYzM2LCAweDEzYzQyLCAweDEzYzQ4LCAweDEzYzUwLCAweDEzYzVlLCAweDEzYzY2LCAweDEzYzZjLCAweDEzYzgyLCAweDEzYzg0LCAweDEzYzkwLCAweDEzYzllLCAweDEzY2EwLAoJICAgICAgICAweDEzY2JjLCAweDEzY2M2LCAweDEzY2NjLCAweDEzY2Q4LCAweDEzY2VlLCAweDEzZDAyLCAweDEzZDA0LCAweDEzZDA4LCAweDEzZDEwLCAweDEzZDFlLCAweDEzZDIwLCAweDEzZDNjLAoJICAgICAgICAweDEzZDQwLCAweDEzZDc4LCAweDEzZDg2LCAweDEzZDhjLCAweDEzZDk4LCAweDEzZGIwLCAweDEzZGJlLCAweDEzZGNlLCAweDEzZGRjLCAweDEzZGU0LCAweDEzZGU4LCAweDEzZGY2LAoJICAgICAgICAweDEzZTFhLCAweDEzZTJlLCAweDEzZTMyLCAweDEzZTM0LCAweDEzZTRlLCAweDEzZTVjLCAweDEzZTYyLCAweDEzZTY0LCAweDEzZTY4LCAweDEzZTc2LCAweDEzZThlLCAweDEzZTljLAoJICAgICAgICAweDEzZWI4LCAweDEzZWMyLCAweDEzZWM0LCAweDEzZWM4LCAweDEzZWQwLCAweDEzZWRlLCAweDEzZWU2LCAweDEzZWVjLCAweDEzZjI2LCAweDEzZjJjLCAweDEzZjNhLCAweDEzZjQ2LAoJICAgICAgICAweDEzZjRjLCAweDEzZjU4LCAweDEzZjZlLCAweDEzZjcyLCAweDEzZjc0LCAweDE0MDgyLCAweDE0MDllLCAweDE0MGEwLCAweDE0MGJjLCAweDE0MTA0LCAweDE0MTA4LCAweDE0MTEwLAoJICAgICAgICAweDE0MTFlLCAweDE0MTIwLCAweDE0MTNjLCAweDE0MTQwLCAweDE0MTc4LCAweDE0MThjLCAweDE0MTk4LCAweDE0MWIwLCAweDE0MWJlLCAweDE0MWUyLCAweDE0MWU0LCAweDE0MWU4LAoJICAgICAgICAweDE0MjA4LCAweDE0MjEwLCAweDE0MjFlLCAweDE0MjIwLCAweDE0MjNjLCAweDE0MjQwLCAweDE0Mjc4LCAweDE0MmYwLCAweDE0MzA2LCAweDE0MzBjLCAweDE0MzE4LCAweDE0MzMwLAoJICAgICAgICAweDE0MzNlLCAweDE0MzYwLCAweDE0MzdjLCAweDE0MzhlLCAweDE0M2MyLCAweDE0M2M0LCAweDE0M2M4LCAweDE0M2QwLCAweDE0M2U2LCAweDE0M2VjLCAweDE0NDA4LCAweDE0NDEwLAoJICAgICAgICAweDE0NDFlLCAweDE0NDIwLCAweDE0NDNjLCAweDE0NDQwLCAweDE0NDc4LCAweDE0NGYwLCAweDE0NWUwLCAweDE0NjBjLCAweDE0NjE4LCAweDE0NjMwLCAweDE0NjNlLCAweDE0NjYwLAoJICAgICAgICAweDE0NjdjLCAweDE0NmMwLCAweDE0NmY4LCAweDE0NzFjLCAweDE0NzM4LCAweDE0NzcwLCAweDE0NzdlLCAweDE0NzgyLCAweDE0Nzg0LCAweDE0Nzg4LCAweDE0NzkwLCAweDE0N2EwLAoJICAgICAgICAweDE0N2JjLCAweDE0N2M2LCAweDE0N2NjLCAweDE0N2Q4LCAweDE0N2VlLCAweDE0ODEwLCAweDE0ODIwLCAweDE0ODNjLCAweDE0ODQwLCAweDE0ODc4LCAweDE0OGYwLCAweDE0OWUwLAoJICAgICAgICAweDE0YmMwLCAweDE0YzMwLCAweDE0YzNlLCAweDE0YzYwLCAweDE0YzdjLCAweDE0Y2MwLCAweDE0Y2Y4LCAweDE0ZGYwLCAweDE0ZTM4LCAweDE0ZTcwLCAweDE0ZTdlLCAweDE0ZWUwLAoJICAgICAgICAweDE0ZWZjLCAweDE0ZjA0LCAweDE0ZjA4LCAweDE0ZjEwLCAweDE0ZjFlLCAweDE0ZjIwLCAweDE0ZjNjLCAweDE0ZjQwLCAweDE0Zjc4LCAweDE0Zjg2LCAweDE0ZjhjLCAweDE0Zjk4LAoJICAgICAgICAweDE0ZmIwLCAweDE0ZmNlLCAweDE0ZmRjLCAweDE1MDIwLCAweDE1MDQwLCAweDE1MDc4LCAweDE1MGYwLCAweDE1MWUwLCAweDE1M2MwLCAweDE1ODYwLCAweDE1ODdjLCAweDE1OGMwLAoJICAgICAgICAweDE1OGY4LCAweDE1OWYwLCAweDE1YmUwLCAweDE1YzcwLCAweDE1YzdlLCAweDE1Y2UwLCAweDE1Y2ZjLCAweDE1ZGMwLCAweDE1ZGY4LCAweDE1ZTA4LCAweDE1ZTEwLCAweDE1ZTIwLAoJICAgICAgICAweDE1ZTQwLCAweDE1ZTc4LCAweDE1ZWYwLCAweDE1ZjBjLCAweDE1ZjE4LCAweDE1ZjMwLCAweDE1ZjYwLCAweDE1ZjdjLCAweDE1ZjhlLCAweDE1ZjljLCAweDE1ZmI4LCAweDE2MDRlLAoJICAgICAgICAweDE2MDVjLCAweDE2MDhlLCAweDE2MDljLCAweDE2MGI4LCAweDE2MGMyLCAweDE2MGM0LCAweDE2MGM4LCAweDE2MGRlLCAweDE2MTBlLCAweDE2MTFjLCAweDE2MTM4LCAweDE2MTcwLAoJICAgICAgICAweDE2MTdlLCAweDE2MTg0LCAweDE2MTg4LCAweDE2MTkwLCAweDE2MTllLCAweDE2MWEwLCAweDE2MWJjLCAweDE2MWM2LCAweDE2MWNjLCAweDE2MWQ4LCAweDE2MWYyLCAweDE2MWY0LAoJICAgICAgICAweDE2MjBlLCAweDE2MjFjLCAweDE2MjM4LCAweDE2MjcwLCAweDE2MjdlLCAweDE2MmUwLCAweDE2MmZjLCAweDE2MzA0LCAweDE2MzA4LCAweDE2MzEwLCAweDE2MzFlLCAweDE2MzIwLAoJICAgICAgICAweDE2MzNjLCAweDE2MzQwLCAweDE2Mzc4LCAweDE2Mzg2LCAweDE2MzhjLCAweDE2Mzk4LCAweDE2M2IwLCAweDE2M2JlLCAweDE2M2NlLCAweDE2M2RjLCAweDE2M2UyLCAweDE2M2U0LAoJICAgICAgICAweDE2M2U4LCAweDE2M2Y2LCAweDE2NDBlLCAweDE2NDFjLCAweDE2NDM4LCAweDE2NDcwLCAweDE2NDdlLCAweDE2NGUwLCAweDE2NGZjLCAweDE2NWMwLCAweDE2NWY4LCAweDE2NjEwLAoJICAgICAgICAweDE2NjFlLCAweDE2NjIwLCAweDE2NjNjLCAweDE2NjQwLCAweDE2Njc4LCAweDE2NmYwLCAweDE2NzE4LCAweDE2NzMwLCAweDE2NzNlLCAweDE2NzYwLCAweDE2NzdjLCAweDE2NzhlLAoJICAgICAgICAweDE2NzljLCAweDE2N2I4LCAweDE2N2MyLCAweDE2N2M0LCAweDE2N2M4LCAweDE2N2QwLCAweDE2N2RlLCAweDE2N2U2LCAweDE2N2VjLCAweDE2ODFjLCAweDE2ODM4LCAweDE2ODcwLAoJICAgICAgICAweDE2OGUwLCAweDE2OGZjLCAweDE2OWMwLCAweDE2OWY4LCAweDE2YmYwLCAweDE2YzEwLCAweDE2YzFlLCAweDE2YzIwLCAweDE2YzNjLCAweDE2YzQwLCAweDE2Yzc4LCAweDE2Y2YwLAoJICAgICAgICAweDE2ZGUwLCAweDE2ZTE4LCAweDE2ZTMwLCAweDE2ZTNlLCAweDE2ZTYwLCAweDE2ZTdjLCAweDE2ZWMwLCAweDE2ZWY4LCAweDE2ZjFjLCAweDE2ZjM4LCAweDE2ZjcwLCAweDE2ZjdlLAoJICAgICAgICAweDE2Zjg0LCAweDE2Zjg4LCAweDE2ZjkwLCAweDE2ZjllLCAweDE2ZmEwLCAweDE2ZmJjLCAweDE2ZmM2LCAweDE2ZmNjLCAweDE2ZmQ4LCAweDE3MDI2LCAweDE3MDJjLCAweDE3MDQ2LAoJICAgICAgICAweDE3MDRjLCAweDE3MDU4LCAweDE3MDZlLCAweDE3MDg2LCAweDE3MDhjLCAweDE3MDk4LCAweDE3MGIwLCAweDE3MGJlLCAweDE3MGNlLCAweDE3MGRjLCAweDE3MGU4LCAweDE3MTA2LAoJICAgICAgICAweDE3MTBjLCAweDE3MTE4LCAweDE3MTMwLCAweDE3MTNlLCAweDE3MTYwLCAweDE3MTdjLCAweDE3MThlLCAweDE3MTljLCAweDE3MWI4LCAweDE3MWMyLCAweDE3MWM0LCAweDE3MWM4LAoJICAgICAgICAweDE3MWQwLCAweDE3MWRlLCAweDE3MWU2LCAweDE3MWVjLCAweDE3MWZhLCAweDE3MjA2LCAweDE3MjBjLCAweDE3MjE4LCAweDE3MjMwLCAweDE3MjNlLCAweDE3MjYwLCAweDE3MjdjLAoJICAgICAgICAweDE3MmMwLCAweDE3MmY4LCAweDE3MzBlLCAweDE3MzFjLCAweDE3MzM4LCAweDE3MzcwLCAweDE3MzdlLCAweDE3Mzg4LCAweDE3MzkwLCAweDE3MzllLCAweDE3M2EwLCAweDE3M2JjLAoJICAgICAgICAweDE3M2NjLCAweDE3M2Q4LCAweDE3M2VlLCAweDE3M2YyLCAweDE3M2Y0LCAweDE3NDBjLCAweDE3NDE4LCAweDE3NDMwLCAweDE3NDNlLCAweDE3NDYwLCAweDE3NDdjLCAweDE3NGMwLAoJICAgICAgICAweDE3NGY4LCAweDE3NWYwLCAweDE3NjBlLCAweDE3NjFjLCAweDE3NjM4LCAweDE3NjcwLCAweDE3NjdlLCAweDE3NmUwLCAweDE3NmZjLCAweDE3NzA4LCAweDE3NzEwLCAweDE3NzFlLAoJICAgICAgICAweDE3NzIwLCAweDE3NzNjLCAweDE3NzQwLCAweDE3Nzc4LCAweDE3Nzk4LCAweDE3N2IwLCAweDE3N2JlLCAweDE3N2RjLCAweDE3N2UyLCAweDE3N2U0LCAweDE3N2U4LCAweDE3ODIyLAoJICAgICAgICAweDE3ODI0LCAweDE3ODI4LCAweDE3ODM2LCAweDE3ODQyLCAweDE3ODQ0LCAweDE3ODQ4LCAweDE3ODUwLCAweDE3ODVlLCAweDE3ODY2LCAweDE3ODZjLCAweDE3ODgyLCAweDE3ODg0LAoJICAgICAgICAweDE3ODg4LCAweDE3ODkwLCAweDE3ODllLCAweDE3OGEwLCAweDE3OGJjLCAweDE3OGM2LCAweDE3OGNjLCAweDE3OGQ4LCAweDE3OGVlLCAweDE3OGYyLCAweDE3OGY0LCAweDE3OTAyLAoJICAgICAgICAweDE3OTA0LCAweDE3OTA4LCAweDE3OTEwLCAweDE3OTFlLCAweDE3OTIwLCAweDE3OTNjLCAweDE3OTQwLCAweDE3OTc4LCAweDE3OTg2LCAweDE3OThjLCAweDE3OTk4LCAweDE3OWIwLAoJICAgICAgICAweDE3OWJlLCAweDE3OWNlLCAweDE3OWRjLCAweDE3OWUyLCAweDE3OWU0LCAweDE3OWU4LCAweDE3OWY2LCAweDE3YTA0LCAweDE3YTA4LCAweDE3YTEwLCAweDE3YTFlLCAweDE3YTIwLAoJICAgICAgICAweDE3YTNjLCAweDE3YTQwLCAweDE3YTc4LCAweDE3YWYwLCAweDE3YjA2LCAweDE3YjBjLCAweDE3YjE4LCAweDE3YjMwLCAweDE3YjNlLCAweDE3YjYwLCAweDE3YjdjLCAweDE3YjhlLAoJICAgICAgICAweDE3YjljLCAweDE3YmI4LCAweDE3YmM0LCAweDE3YmM4LCAweDE3YmQwLCAweDE3YmRlLCAweDE3YmU2LCAweDE3YmVjLCAweDE3YzJlLCAweDE3YzMyLCAweDE3YzM0LCAweDE3YzRlLAoJICAgICAgICAweDE3YzVjLCAweDE3YzYyLCAweDE3YzY0LCAweDE3YzY4LCAweDE3Yzc2LCAweDE3YzhlLCAweDE3YzljLCAweDE3Y2I4LCAweDE3Y2MyLCAweDE3Y2M0LCAweDE3Y2M4LCAweDE3Y2QwLAoJICAgICAgICAweDE3Y2RlLCAweDE3Y2U2LCAweDE3Y2VjLCAweDE3ZDBlLCAweDE3ZDFjLCAweDE3ZDM4LCAweDE3ZDcwLCAweDE3ZDgyLCAweDE3ZDg0LCAweDE3ZDg4LCAweDE3ZDkwLCAweDE3ZDllLAoJICAgICAgICAweDE3ZGEwLCAweDE3ZGJjLCAweDE3ZGM2LCAweDE3ZGNjLCAweDE3ZGQ4LCAweDE3ZGVlLCAweDE3ZTI2LCAweDE3ZTJjLCAweDE3ZTNhLCAweDE3ZTQ2LCAweDE3ZTRjLCAweDE3ZTU4LAoJICAgICAgICAweDE3ZTZlLCAweDE3ZTcyLCAweDE3ZTc0LCAweDE3ZTg2LCAweDE3ZThjLCAweDE3ZTk4LCAweDE3ZWIwLCAweDE3ZWNlLCAweDE3ZWRjLCAweDE3ZWUyLCAweDE3ZWU0LCAweDE3ZWU4LAoJICAgICAgICAweDE3ZWY2LCAweDE4MTNhLCAweDE4MTcyLCAweDE4MTc0LCAweDE4MjE2LCAweDE4MjI2LCAweDE4MjNhLCAweDE4MjRjLCAweDE4MjU4LCAweDE4MjZlLCAweDE4MjcyLCAweDE4Mjc0LAoJICAgICAgICAweDE4Mjk4LCAweDE4MmJlLCAweDE4MmUyLCAweDE4MmU0LCAweDE4MmU4LCAweDE4MmY2LCAweDE4MzVlLCAweDE4MzdhLCAweDE4M2FlLCAweDE4M2Q2LCAweDE4NDE2LCAweDE4NDI2LAoJICAgICAgICAweDE4NDJjLCAweDE4NDNhLCAweDE4NDQ2LCAweDE4NDU4LCAweDE4NDZlLCAweDE4NDcyLCAweDE4NDc0LCAweDE4NDg2LCAweDE4NGIwLCAweDE4NGJlLCAweDE4NGNlLCAweDE4NGRjLAoJICAgICAgICAweDE4NGUyLCAweDE4NGU0LCAweDE4NGU4LCAweDE4NGY2LCAweDE4NTA2LCAweDE4NTBjLCAweDE4NTE4LCAweDE4NTMwLCAweDE4NTNlLCAweDE4NTYwLCAweDE4NTdjLCAweDE4NThlLAoJICAgICAgICAweDE4NTljLCAweDE4NWI4LCAweDE4NWMyLCAweDE4NWM0LCAweDE4NWM4LCAweDE4NWQwLCAweDE4NWRlLCAweDE4NWU2LCAweDE4NWVjLCAweDE4NWZhLCAweDE4NjEyLCAweDE4NjE0LAoJICAgICAgICAweDE4NjIyLCAweDE4NjI4LCAweDE4NjM2LCAweDE4NjQyLCAweDE4NjUwLCAweDE4NjVlLCAweDE4NjdhLCAweDE4NjgyLCAweDE4Njg0LCAweDE4Njg4LCAweDE4NjkwLCAweDE4NjllLAoJICAgICAgICAweDE4NmEwLCAweDE4NmJjLCAweDE4NmM2LCAweDE4NmNjLCAweDE4NmQ4LCAweDE4NmVlLCAweDE4NmYyLCAweDE4NmY0LCAweDE4NzJlLCAweDE4NzRlLCAweDE4NzVjLCAweDE4Nzk2LAoJICAgICAgICAweDE4N2E2LCAweDE4N2FjLCAweDE4N2QyLCAweDE4N2Q0LCAweDE4ODI2LCAweDE4ODJjLCAweDE4ODNhLCAweDE4ODQ2LCAweDE4ODRjLCAweDE4ODU4LCAweDE4ODZlLCAweDE4ODcyLAoJICAgICAgICAweDE4ODc0LCAweDE4ODg2LCAweDE4ODk4LCAweDE4OGIwLCAweDE4OGJlLCAweDE4OGNlLCAweDE4OGRjLCAweDE4OGUyLCAweDE4OGU0LCAweDE4OGU4LCAweDE4OGY2LCAweDE4OTBjLAoJICAgICAgICAweDE4OTMwLCAweDE4OTNlLCAweDE4OTYwLCAweDE4OTdjLCAweDE4OThlLCAweDE4OWI4LCAweDE4OWMyLCAweDE4OWM4LCAweDE4OWQwLCAweDE4OWRlLCAweDE4OWU2LCAweDE4OWVjLAoJICAgICAgICAweDE4OWZhLCAweDE4YTE4LCAweDE4YTMwLCAweDE4YTNlLCAweDE4YTYwLCAweDE4YTdjLCAweDE4YWMwLCAweDE4YWY4LCAweDE4YjFjLCAweDE4YjM4LCAweDE4YjcwLCAweDE4YjdlLAoJICAgICAgICAweDE4YjgyLCAweDE4Yjg0LCAweDE4Yjg4LCAweDE4YjkwLCAweDE4YjllLCAweDE4YmEwLCAweDE4YmJjLCAweDE4YmM2LCAweDE4YmNjLCAweDE4YmQ4LCAweDE4YmVlLCAweDE4YmYyLAoJICAgICAgICAweDE4YmY0LCAweDE4YzIyLCAweDE4YzI0LCAweDE4YzI4LCAweDE4YzM2LCAweDE4YzQyLCAweDE4YzQ4LCAweDE4YzUwLCAweDE4YzVlLCAweDE4YzY2LCAweDE4YzdhLCAweDE4YzgyLAoJICAgICAgICAweDE4Yzg0LCAweDE4YzkwLCAweDE4YzllLCAweDE4Y2EwLCAweDE4Y2JjLCAweDE4Y2NjLCAweDE4Y2YyLCAweDE4Y2Y0LCAweDE4ZDA0LCAweDE4ZDA4LCAweDE4ZDEwLCAweDE4ZDFlLAoJICAgICAgICAweDE4ZDIwLCAweDE4ZDNjLCAweDE4ZDQwLCAweDE4ZDc4LCAweDE4ZDg2LCAweDE4ZDk4LCAweDE4ZGNlLCAweDE4ZGUyLCAweDE4ZGU0LCAweDE4ZGU4LCAweDE4ZTJlLCAweDE4ZTMyLAoJICAgICAgICAweDE4ZTM0LCAweDE4ZTRlLCAweDE4ZTVjLCAweDE4ZTYyLCAweDE4ZTY0LCAweDE4ZTY4LCAweDE4ZThlLCAweDE4ZTljLCAweDE4ZWI4LCAweDE4ZWMyLCAweDE4ZWM0LCAweDE4ZWM4LAoJICAgICAgICAweDE4ZWQwLCAweDE4ZWZhLCAweDE4ZjE2LCAweDE4ZjI2LCAweDE4ZjJjLCAweDE4ZjQ2LCAweDE4ZjRjLCAweDE4ZjU4LCAweDE4ZjZlLCAweDE4ZjhhLCAweDE4ZjkyLCAweDE4Zjk0LAoJICAgICAgICAweDE4ZmEyLCAweDE4ZmE0LCAweDE4ZmE4LCAweDE4ZmI2LCAweDE5MDJjLCAweDE5MDNhLCAweDE5MDQ2LCAweDE5MDRjLCAweDE5MDU4LCAweDE5MDcyLCAweDE5MDc0LCAweDE5MDg2LAoJICAgICAgICAweDE5MDk4LCAweDE5MGIwLCAweDE5MGJlLCAweDE5MGNlLCAweDE5MGRjLCAweDE5MGUyLCAweDE5MGU4LCAweDE5MGY2LCAweDE5MTA2LCAweDE5MTBjLCAweDE5MTMwLCAweDE5MTNlLAoJICAgICAgICAweDE5MTYwLCAweDE5MTdjLCAweDE5MThlLCAweDE5MTljLCAweDE5MWI4LCAweDE5MWMyLCAweDE5MWM4LCAweDE5MWQwLCAweDE5MWRlLCAweDE5MWU2LCAweDE5MWVjLCAweDE5MWZhLAoJICAgICAgICAweDE5MjE4LCAweDE5MjNlLCAweDE5MjYwLCAweDE5MjdjLCAweDE5MmMwLCAweDE5MmY4LCAweDE5MzM4LCAweDE5MzcwLCAweDE5MzdlLCAweDE5MzgyLCAweDE5Mzg0LCAweDE5MzkwLAoJICAgICAgICAweDE5MzllLCAweDE5M2EwLCAweDE5M2JjLCAweDE5M2M2LCAweDE5M2NjLCAweDE5M2Q4LCAweDE5M2VlLCAweDE5M2YyLCAweDE5M2Y0LCAweDE5NDMwLCAweDE5NDNlLCAweDE5NDYwLAoJICAgICAgICAweDE5NDdjLCAweDE5NGMwLCAweDE5NGY4LCAweDE5NWYwLCAweDE5NjM4LCAweDE5NjcwLCAweDE5NjdlLCAweDE5NmUwLCAweDE5NmZjLCAweDE5NzAyLCAweDE5NzA0LCAweDE5NzA4LAoJICAgICAgICAweDE5NzEwLCAweDE5NzIwLCAweDE5NzNjLCAweDE5NzQwLCAweDE5Nzc4LCAweDE5Nzg2LCAweDE5NzhjLCAweDE5Nzk4LCAweDE5N2IwLCAweDE5N2JlLCAweDE5N2NlLCAweDE5N2RjLAoJICAgICAgICAweDE5N2UyLCAweDE5N2U0LCAweDE5N2U4LCAweDE5ODIyLCAweDE5ODI0LCAweDE5ODQyLCAweDE5ODQ4LCAweDE5ODUwLCAweDE5ODVlLCAweDE5ODY2LCAweDE5ODdhLCAweDE5ODgyLAoJICAgICAgICAweDE5ODg0LCAweDE5ODkwLCAweDE5ODllLCAweDE5OGEwLCAweDE5OGJjLCAweDE5OGNjLCAweDE5OGYyLCAweDE5OGY0LCAweDE5OTAyLCAweDE5OTA4LCAweDE5OTFlLCAweDE5OTIwLAoJICAgICAgICAweDE5OTNjLCAweDE5OTQwLCAweDE5OTc4LCAweDE5OTg2LCAweDE5OTk4LCAweDE5OWNlLCAweDE5OWUyLCAweDE5OWU0LCAweDE5OWU4LCAweDE5YTA4LCAweDE5YTEwLCAweDE5YTFlLAoJICAgICAgICAweDE5YTIwLCAweDE5YTNjLCAweDE5YTQwLCAweDE5YTc4LCAweDE5YWYwLCAweDE5YjE4LCAweDE5YjNlLCAweDE5YjYwLCAweDE5YjljLCAweDE5YmMyLCAweDE5YmM0LCAweDE5YmM4LAoJICAgICAgICAweDE5YmQwLCAweDE5YmU2LCAweDE5YzJlLCAweDE5YzM0LCAweDE5YzRlLCAweDE5YzVjLCAweDE5YzYyLCAweDE5YzY0LCAweDE5YzY4LCAweDE5YzhlLCAweDE5YzljLCAweDE5Y2I4LAoJICAgICAgICAweDE5Y2MyLCAweDE5Y2M4LCAweDE5Y2QwLCAweDE5Y2U2LCAweDE5Y2ZhLCAweDE5ZDBlLCAweDE5ZDFjLCAweDE5ZDM4LCAweDE5ZDcwLCAweDE5ZDdlLCAweDE5ZDgyLCAweDE5ZDg0LAoJICAgICAgICAweDE5ZDg4LCAweDE5ZDkwLCAweDE5ZGEwLCAweDE5ZGNjLCAweDE5ZGYyLCAweDE5ZGY0LCAweDE5ZTE2LCAweDE5ZTI2LCAweDE5ZTJjLCAweDE5ZTQ2LCAweDE5ZTRjLCAweDE5ZTU4LAoJICAgICAgICAweDE5ZTc0LCAweDE5ZTg2LCAweDE5ZThjLCAweDE5ZTk4LCAweDE5ZWIwLCAweDE5ZWJlLCAweDE5ZWNlLCAweDE5ZWUyLCAweDE5ZWU0LCAweDE5ZWU4LCAweDE5ZjBhLCAweDE5ZjEyLAoJICAgICAgICAweDE5ZjE0LCAweDE5ZjIyLCAweDE5ZjI0LCAweDE5ZjI4LCAweDE5ZjQyLCAweDE5ZjQ0LCAweDE5ZjQ4LCAweDE5ZjUwLCAweDE5ZjVlLCAweDE5ZjZjLCAweDE5ZjlhLCAweDE5ZmFlLAoJICAgICAgICAweDE5ZmIyLCAweDE5ZmI0LCAweDFhMDQ2LCAweDFhMDRjLCAweDFhMDcyLCAweDFhMDc0LCAweDFhMDg2LCAweDFhMDhjLCAweDFhMDk4LCAweDFhMGIwLCAweDFhMGJlLCAweDFhMGUyLAoJICAgICAgICAweDFhMGU0LCAweDFhMGU4LCAweDFhMGY2LCAweDFhMTA2LCAweDFhMTBjLCAweDFhMTE4LCAweDFhMTMwLCAweDFhMTNlLCAweDFhMTYwLCAweDFhMTdjLCAweDFhMThlLCAweDFhMTljLAoJICAgICAgICAweDFhMWI4LCAweDFhMWMyLCAweDFhMWM0LCAweDFhMWM4LCAweDFhMWQwLCAweDFhMWRlLCAweDFhMWU2LCAweDFhMWVjLCAweDFhMjE4LCAweDFhMjMwLCAweDFhMjNlLCAweDFhMjYwLAoJICAgICAgICAweDFhMjdjLCAweDFhMmMwLCAweDFhMmY4LCAweDFhMzFjLCAweDFhMzM4LCAweDFhMzcwLCAweDFhMzdlLCAweDFhMzgyLCAweDFhMzg0LCAweDFhMzg4LCAweDFhMzkwLCAweDFhMzllLAoJICAgICAgICAweDFhM2EwLCAweDFhM2JjLCAweDFhM2M2LCAweDFhM2NjLCAweDFhM2Q4LCAweDFhM2VlLCAweDFhM2YyLCAweDFhM2Y0LCAweDFhNDE4LCAweDFhNDMwLCAweDFhNDNlLCAweDFhNDYwLAoJICAgICAgICAweDFhNDdjLCAweDFhNGMwLCAweDFhNGY4LCAweDFhNWYwLCAweDFhNjFjLCAweDFhNjM4LCAweDFhNjcwLCAweDFhNjdlLCAweDFhNmUwLCAweDFhNmZjLCAweDFhNzAyLCAweDFhNzA0LAoJICAgICAgICAweDFhNzA4LCAweDFhNzEwLCAweDFhNzFlLCAweDFhNzIwLCAweDFhNzNjLCAweDFhNzQwLCAweDFhNzc4LCAweDFhNzg2LCAweDFhNzhjLCAweDFhNzk4LCAweDFhN2IwLCAweDFhN2JlLAoJICAgICAgICAweDFhN2NlLCAweDFhN2RjLCAweDFhN2UyLCAweDFhN2U0LCAweDFhN2U4LCAweDFhODMwLCAweDFhODYwLCAweDFhODdjLCAweDFhOGMwLCAweDFhOGY4LCAweDFhOWYwLCAweDFhYmUwLAoJICAgICAgICAweDFhYzcwLCAweDFhYzdlLCAweDFhY2UwLCAweDFhY2ZjLCAweDFhZGMwLCAweDFhZGY4LCAweDFhZTA0LCAweDFhZTA4LCAweDFhZTEwLCAweDFhZTIwLCAweDFhZTNjLCAweDFhZTQwLAoJICAgICAgICAweDFhZTc4LCAweDFhZWYwLCAweDFhZjA2LCAweDFhZjBjLCAweDFhZjE4LCAweDFhZjMwLCAweDFhZjNlLCAweDFhZjYwLCAweDFhZjdjLCAweDFhZjhlLCAweDFhZjljLCAweDFhZmI4LAoJICAgICAgICAweDFhZmM0LCAweDFhZmM4LCAweDFhZmQwLCAweDFhZmRlLCAweDFiMDQyLCAweDFiMDVlLCAweDFiMDdhLCAweDFiMDgyLCAweDFiMDg0LCAweDFiMDg4LCAweDFiMDkwLCAweDFiMDllLAoJICAgICAgICAweDFiMGEwLCAweDFiMGJjLCAweDFiMGNjLCAweDFiMGYyLCAweDFiMGY0LCAweDFiMTAyLCAweDFiMTA0LCAweDFiMTA4LCAweDFiMTEwLCAweDFiMTFlLCAweDFiMTIwLCAweDFiMTNjLAoJICAgICAgICAweDFiMTQwLCAweDFiMTc4LCAweDFiMTg2LCAweDFiMTk4LCAweDFiMWNlLCAweDFiMWUyLCAweDFiMWU0LCAweDFiMWU4LCAweDFiMjA0LCAweDFiMjA4LCAweDFiMjEwLCAweDFiMjFlLAoJICAgICAgICAweDFiMjIwLCAweDFiMjNjLCAweDFiMjQwLCAweDFiMjc4LCAweDFiMmYwLCAweDFiMzBjLCAweDFiMzNlLCAweDFiMzYwLCAweDFiMzljLCAweDFiM2MyLCAweDFiM2M0LCAweDFiM2M4LAoJICAgICAgICAweDFiM2QwLCAweDFiM2U2LCAweDFiNDEwLCAweDFiNDFlLCAweDFiNDIwLCAweDFiNDNjLCAweDFiNDQwLCAweDFiNDc4LCAweDFiNGYwLCAweDFiNWUwLCAweDFiNjE4LCAweDFiNjYwLAoJICAgICAgICAweDFiNjdjLCAweDFiNmMwLCAweDFiNzM4LCAweDFiNzgyLCAweDFiNzg0LCAweDFiNzg4LCAweDFiNzkwLCAweDFiNzllLCAweDFiN2EwLCAweDFiN2NjLCAweDFiODJlLCAweDFiODRlLAoJICAgICAgICAweDFiODVjLCAweDFiODhlLCAweDFiODljLCAweDFiOGI4LCAweDFiOGMyLCAweDFiOGM0LCAweDFiOGM4LCAweDFiOGQwLCAweDFiOGU2LCAweDFiOGZhLCAweDFiOTBlLCAweDFiOTFjLAoJICAgICAgICAweDFiOTM4LCAweDFiOTcwLCAweDFiOTdlLCAweDFiOTgyLCAweDFiOTg0LCAweDFiOTg4LCAweDFiOTkwLCAweDFiOTllLCAweDFiOWEwLCAweDFiOWNjLCAweDFiOWYyLCAweDFiOWY0LAoJICAgICAgICAweDFiYTBlLCAweDFiYTFjLCAweDFiYTM4LCAweDFiYTcwLCAweDFiYTdlLCAweDFiYWUwLCAweDFiYWZjLCAweDFiYjA4LCAweDFiYjEwLCAweDFiYjIwLCAweDFiYjNjLCAweDFiYjQwLAoJICAgICAgICAweDFiYjk4LCAweDFiYmNlLCAweDFiYmUyLCAweDFiYmU0LCAweDFiYmU4LCAweDFiYzE2LCAweDFiYzI2LCAweDFiYzJjLCAweDFiYzQ2LCAweDFiYzRjLCAweDFiYzU4LCAweDFiYzcyLAoJICAgICAgICAweDFiYzc0LCAweDFiYzg2LCAweDFiYzhjLCAweDFiYzk4LCAweDFiY2IwLCAweDFiY2JlLCAweDFiY2NlLCAweDFiY2UyLCAweDFiY2U0LCAweDFiY2U4LCAweDFiZDA2LCAweDFiZDBjLAoJICAgICAgICAweDFiZDE4LCAweDFiZDMwLCAweDFiZDNlLCAweDFiZDYwLCAweDFiZDdjLCAweDFiZDljLCAweDFiZGMyLCAweDFiZGM0LCAweDFiZGM4LCAweDFiZGQwLCAweDFiZGU2LCAweDFiZGZhLAoJICAgICAgICAweDFiZTEyLCAweDFiZTE0LCAweDFiZTIyLCAweDFiZTI0LCAweDFiZTI4LCAweDFiZTQyLCAweDFiZTQ0LCAweDFiZTQ4LCAweDFiZTUwLCAweDFiZTVlLCAweDFiZTY2LCAweDFiZTgyLAoJICAgICAgICAweDFiZTg0LCAweDFiZTg4LCAweDFiZTkwLCAweDFiZTllLCAweDFiZWEwLCAweDFiZWJjLCAweDFiZWNjLCAweDFiZWY0LCAweDFiZjFhLCAweDFiZjJlLCAweDFiZjMyLCAweDFiZjM0LAoJICAgICAgICAweDFiZjRlLCAweDFiZjVjLCAweDFiZjYyLCAweDFiZjY0LCAweDFiZjY4LCAweDFjMDlhLCAweDFjMGIyLCAweDFjMGI0LCAweDFjMTFhLCAweDFjMTMyLCAweDFjMTM0LCAweDFjMTYyLAoJICAgICAgICAweDFjMTY0LCAweDFjMTY4LCAweDFjMTc2LCAweDFjMWJhLCAweDFjMjFhLCAweDFjMjMyLCAweDFjMjM0LCAweDFjMjRlLCAweDFjMjVjLCAweDFjMjYyLCAweDFjMjY0LCAweDFjMjY4LAoJICAgICAgICAweDFjMjc2LCAweDFjMjhlLCAweDFjMmMyLCAweDFjMmM0LCAweDFjMmM4LCAweDFjMmQwLCAweDFjMmRlLCAweDFjMmU2LCAweDFjMmVjLCAweDFjMmZhLCAweDFjMzE2LCAweDFjMzI2LAoJICAgICAgICAweDFjMzNhLCAweDFjMzQ2LCAweDFjMzRjLCAweDFjMzcyLCAweDFjMzc0LCAweDFjNDFhLCAweDFjNDJlLCAweDFjNDMyLCAweDFjNDM0LCAweDFjNDRlLCAweDFjNDVjLCAweDFjNDYyLAoJICAgICAgICAweDFjNDY0LCAweDFjNDY4LCAweDFjNDc2LCAweDFjNDhlLCAweDFjNDljLCAweDFjNGI4LCAweDFjNGMyLCAweDFjNGM4LCAweDFjNGQwLCAweDFjNGRlLCAweDFjNGU2LCAweDFjNGVjLAoJICAgICAgICAweDFjNGZhLCAweDFjNTFjLCAweDFjNTM4LCAweDFjNTcwLCAweDFjNTdlLCAweDFjNTgyLCAweDFjNTg0LCAweDFjNTg4LCAweDFjNTkwLCAweDFjNTllLCAweDFjNWEwLCAweDFjNWJjLAoJICAgICAgICAweDFjNWM2LCAweDFjNWNjLCAweDFjNWQ4LCAweDFjNWVlLCAweDFjNWYyLCAweDFjNWY0LCAweDFjNjE2LCAweDFjNjI2LCAweDFjNjJjLCAweDFjNjNhLCAweDFjNjQ2LCAweDFjNjRjLAoJICAgICAgICAweDFjNjU4LCAweDFjNjZlLCAweDFjNjcyLCAweDFjNjc0LCAweDFjNjg2LCAweDFjNjhjLCAweDFjNjk4LCAweDFjNmIwLCAweDFjNmJlLCAweDFjNmNlLCAweDFjNmRjLCAweDFjNmUyLAoJICAgICAgICAweDFjNmU0LCAweDFjNmU4LCAweDFjNzEyLCAweDFjNzE0LCAweDFjNzIyLCAweDFjNzI4LCAweDFjNzM2LCAweDFjNzQyLCAweDFjNzQ0LCAweDFjNzQ4LCAweDFjNzUwLCAweDFjNzVlLAoJICAgICAgICAweDFjNzY2LCAweDFjNzZjLCAweDFjNzdhLCAweDFjN2FlLCAweDFjN2Q2LCAweDFjN2VhLCAweDFjODFhLCAweDFjODJlLCAweDFjODMyLCAweDFjODM0LCAweDFjODRlLCAweDFjODVjLAoJICAgICAgICAweDFjODYyLCAweDFjODY0LCAweDFjODY4LCAweDFjODc2LCAweDFjODhlLCAweDFjODljLCAweDFjOGI4LCAweDFjOGMyLCAweDFjOGM4LCAweDFjOGQwLCAweDFjOGRlLCAweDFjOGU2LAoJICAgICAgICAweDFjOGVjLCAweDFjOGZhLCAweDFjOTBlLCAweDFjOTM4LCAweDFjOTcwLCAweDFjOTdlLCAweDFjOTgyLCAweDFjOTg0LCAweDFjOTkwLCAweDFjOTllLCAweDFjOWEwLCAweDFjOWJjLAoJICAgICAgICAweDFjOWM2LCAweDFjOWNjLCAweDFjOWQ4LCAweDFjOWVlLCAweDFjOWYyLCAweDFjOWY0LCAweDFjYTM4LCAweDFjYTcwLCAweDFjYTdlLCAweDFjYWUwLCAweDFjYWZjLCAweDFjYjAyLAoJICAgICAgICAweDFjYjA0LCAweDFjYjA4LCAweDFjYjEwLCAweDFjYjIwLCAweDFjYjNjLCAweDFjYjQwLCAweDFjYjc4LCAweDFjYjg2LCAweDFjYjhjLCAweDFjYjk4LCAweDFjYmIwLCAweDFjYmJlLAoJICAgICAgICAweDFjYmNlLCAweDFjYmRjLCAweDFjYmUyLCAweDFjYmU0LCAweDFjYmU4LCAweDFjYmY2LCAweDFjYzE2LCAweDFjYzI2LCAweDFjYzJjLCAweDFjYzNhLCAweDFjYzQ2LCAweDFjYzU4LAoJICAgICAgICAweDFjYzcyLCAweDFjYzc0LCAweDFjYzg2LCAweDFjY2IwLCAweDFjY2JlLCAweDFjY2NlLCAweDFjY2UyLCAweDFjY2U0LCAweDFjY2U4LCAweDFjZDA2LCAweDFjZDBjLCAweDFjZDE4LAoJICAgICAgICAweDFjZDMwLCAweDFjZDNlLCAweDFjZDYwLCAweDFjZDdjLCAweDFjZDljLCAweDFjZGMyLCAweDFjZGM0LCAweDFjZGM4LCAweDFjZGQwLCAweDFjZGRlLCAweDFjZGU2LCAweDFjZGZhLAoJICAgICAgICAweDFjZTIyLCAweDFjZTI4LCAweDFjZTQyLCAweDFjZTUwLCAweDFjZTVlLCAweDFjZTY2LCAweDFjZTdhLCAweDFjZTgyLCAweDFjZTg0LCAweDFjZTg4LCAweDFjZTkwLCAweDFjZTllLAoJICAgICAgICAweDFjZWEwLCAweDFjZWJjLCAweDFjZWNjLCAweDFjZWYyLCAweDFjZWY0LCAweDFjZjJlLCAweDFjZjMyLCAweDFjZjM0LCAweDFjZjRlLCAweDFjZjVjLCAweDFjZjYyLCAweDFjZjY0LAoJICAgICAgICAweDFjZjY4LCAweDFjZjk2LCAweDFjZmE2LCAweDFjZmFjLCAweDFjZmNhLCAweDFjZmQyLCAweDFjZmQ0LCAweDFkMDJlLCAweDFkMDMyLCAweDFkMDM0LCAweDFkMDRlLCAweDFkMDVjLAoJICAgICAgICAweDFkMDYyLCAweDFkMDY0LCAweDFkMDY4LCAweDFkMDc2LCAweDFkMDhlLCAweDFkMDljLCAweDFkMGI4LCAweDFkMGMyLCAweDFkMGM0LCAweDFkMGM4LCAweDFkMGQwLCAweDFkMGRlLAoJICAgICAgICAweDFkMGU2LCAweDFkMGVjLCAweDFkMGZhLCAweDFkMTFjLCAweDFkMTM4LCAweDFkMTcwLCAweDFkMTdlLCAweDFkMTgyLCAweDFkMTg0LCAweDFkMTg4LCAweDFkMTkwLCAweDFkMTllLAoJICAgICAgICAweDFkMWEwLCAweDFkMWJjLCAweDFkMWM2LCAweDFkMWNjLCAweDFkMWQ4LCAweDFkMWVlLCAweDFkMWYyLCAweDFkMWY0LCAweDFkMjFjLCAweDFkMjM4LCAweDFkMjcwLCAweDFkMjdlLAoJICAgICAgICAweDFkMmUwLCAweDFkMmZjLCAweDFkMzAyLCAweDFkMzA0LCAweDFkMzA4LCAweDFkMzEwLCAweDFkMzFlLCAweDFkMzIwLCAweDFkMzNjLCAweDFkMzQwLCAweDFkMzc4LCAweDFkMzg2LAoJICAgICAgICAweDFkMzhjLCAweDFkMzk4LCAweDFkM2IwLCAweDFkM2JlLCAweDFkM2NlLCAweDFkM2RjLCAweDFkM2UyLCAweDFkM2U0LCAweDFkM2U4LCAweDFkM2Y2LCAweDFkNDcwLCAweDFkNDdlLAoJICAgICAgICAweDFkNGUwLCAweDFkNGZjLCAweDFkNWMwLCAweDFkNWY4LCAweDFkNjA0LCAweDFkNjA4LCAweDFkNjEwLCAweDFkNjIwLCAweDFkNjQwLCAweDFkNjc4LCAweDFkNmYwLCAweDFkNzA2LAoJICAgICAgICAweDFkNzBjLCAweDFkNzE4LCAweDFkNzMwLCAweDFkNzNlLCAweDFkNzYwLCAweDFkNzdjLCAweDFkNzhlLCAweDFkNzljLCAweDFkN2I4LCAweDFkN2MyLCAweDFkN2M0LCAweDFkN2M4LAoJICAgICAgICAweDFkN2QwLCAweDFkN2RlLCAweDFkN2U2LCAweDFkN2VjLCAweDFkODI2LCAweDFkODJjLCAweDFkODNhLCAweDFkODQ2LCAweDFkODRjLCAweDFkODU4LCAweDFkODcyLCAweDFkODc0LAoJICAgICAgICAweDFkODg2LCAweDFkODhjLCAweDFkODk4LCAweDFkOGIwLCAweDFkOGJlLCAweDFkOGNlLCAweDFkOGUyLCAweDFkOGU0LCAweDFkOGU4LCAweDFkOGY2LCAweDFkOTBjLCAweDFkOTE4LAoJICAgICAgICAweDFkOTMwLCAweDFkOTNlLCAweDFkOTYwLCAweDFkOTdjLCAweDFkOTljLCAweDFkOWMyLCAweDFkOWM0LCAweDFkOWM4LCAweDFkOWQwLCAweDFkOWU2LCAweDFkOWZhLCAweDFkYTBjLAoJICAgICAgICAweDFkYTE4LCAweDFkYTMwLCAweDFkYTNlLCAweDFkYTYwLCAweDFkYTdjLCAweDFkYWMwLCAweDFkYWY4LCAweDFkYjM4LCAweDFkYjgyLCAweDFkYjg0LCAweDFkYjg4LCAweDFkYjkwLAoJICAgICAgICAweDFkYjllLCAweDFkYmEwLCAweDFkYmNjLCAweDFkYmYyLCAweDFkYmY0LCAweDFkYzIyLCAweDFkYzQyLCAweDFkYzQ0LCAweDFkYzQ4LCAweDFkYzUwLCAweDFkYzVlLCAweDFkYzY2LAoJICAgICAgICAweDFkYzdhLCAweDFkYzgyLCAweDFkYzg0LCAweDFkYzg4LCAweDFkYzkwLCAweDFkYzllLCAweDFkY2EwLCAweDFkY2JjLCAweDFkY2NjLCAweDFkY2YyLCAweDFkY2Y0LCAweDFkZDA0LAoJICAgICAgICAweDFkZDA4LCAweDFkZDEwLCAweDFkZDFlLCAweDFkZDIwLCAweDFkZDNjLCAweDFkZDQwLCAweDFkZDc4LCAweDFkZDg2LCAweDFkZDk4LCAweDFkZGNlLCAweDFkZGUyLCAweDFkZGU0LAoJICAgICAgICAweDFkZGU4LCAweDFkZTJlLCAweDFkZTMyLCAweDFkZTM0LCAweDFkZTRlLCAweDFkZTVjLCAweDFkZTYyLCAweDFkZTY0LCAweDFkZTY4LCAweDFkZThlLCAweDFkZTljLCAweDFkZWI4LAoJICAgICAgICAweDFkZWMyLCAweDFkZWM0LCAweDFkZWM4LCAweDFkZWQwLCAweDFkZWU2LCAweDFkZWZhLCAweDFkZjE2LCAweDFkZjI2LCAweDFkZjJjLCAweDFkZjQ2LCAweDFkZjRjLCAweDFkZjU4LAoJICAgICAgICAweDFkZjcyLCAweDFkZjc0LCAweDFkZjhhLCAweDFkZjkyLCAweDFkZjk0LCAweDFkZmEyLCAweDFkZmE0LCAweDFkZmE4LCAweDFlMDhhLCAweDFlMDkyLCAweDFlMDk0LCAweDFlMGEyLAoJICAgICAgICAweDFlMGE0LCAweDFlMGE4LCAweDFlMGI2LCAweDFlMGRhLCAweDFlMTBhLCAweDFlMTEyLCAweDFlMTE0LCAweDFlMTIyLCAweDFlMTI0LCAweDFlMTI4LCAweDFlMTM2LCAweDFlMTQyLAoJICAgICAgICAweDFlMTQ0LCAweDFlMTQ4LCAweDFlMTUwLCAweDFlMTY2LCAweDFlMTZjLCAweDFlMTdhLCAweDFlMTlhLCAweDFlMWIyLCAweDFlMWI0LCAweDFlMjBhLCAweDFlMjEyLCAweDFlMjE0LAoJICAgICAgICAweDFlMjIyLCAweDFlMjI0LCAweDFlMjI4LCAweDFlMjM2LCAweDFlMjQyLCAweDFlMjQ4LCAweDFlMjUwLCAweDFlMjVlLCAweDFlMjY2LCAweDFlMjZjLCAweDFlMjdhLCAweDFlMjgyLAoJICAgICAgICAweDFlMjg0LCAweDFlMjg4LCAweDFlMjkwLCAweDFlMmEwLCAweDFlMmJjLCAweDFlMmM2LCAweDFlMmNjLCAweDFlMmQ4LCAweDFlMmVlLCAweDFlMmYyLCAweDFlMmY0LCAweDFlMzFhLAoJICAgICAgICAweDFlMzMyLCAweDFlMzM0LCAweDFlMzVjLCAweDFlMzYyLCAweDFlMzY0LCAweDFlMzY4LCAweDFlM2JhLCAweDFlNDBhLCAweDFlNDEyLCAweDFlNDE0LCAweDFlNDIyLCAweDFlNDI4LAoJICAgICAgICAweDFlNDM2LCAweDFlNDQyLCAweDFlNDQ4LCAweDFlNDUwLCAweDFlNDVlLCAweDFlNDY2LCAweDFlNDZjLCAweDFlNDdhLCAweDFlNDgyLCAweDFlNDg0LCAweDFlNDkwLCAweDFlNDllLAoJICAgICAgICAweDFlNGEwLCAweDFlNGJjLCAweDFlNGM2LCAweDFlNGNjLCAweDFlNGQ4LCAweDFlNGVlLCAweDFlNGYyLCAweDFlNGY0LCAweDFlNTAyLCAweDFlNTA0LCAweDFlNTA4LCAweDFlNTEwLAoJICAgICAgICAweDFlNTFlLCAweDFlNTIwLCAweDFlNTNjLCAweDFlNTQwLCAweDFlNTc4LCAweDFlNTg2LCAweDFlNThjLCAweDFlNTk4LCAweDFlNWIwLCAweDFlNWJlLCAweDFlNWNlLCAweDFlNWRjLAoJICAgICAgICAweDFlNWUyLCAweDFlNWU0LCAweDFlNWU4LCAweDFlNWY2LCAweDFlNjFhLCAweDFlNjJlLCAweDFlNjMyLCAweDFlNjM0LCAweDFlNjRlLCAweDFlNjVjLCAweDFlNjYyLCAweDFlNjY4LAoJICAgICAgICAweDFlNjhlLCAweDFlNjljLCAweDFlNmI4LCAweDFlNmMyLCAweDFlNmM0LCAweDFlNmM4LCAweDFlNmQwLCAweDFlNmU2LCAweDFlNmZhLCAweDFlNzE2LCAweDFlNzI2LCAweDFlNzJjLAoJICAgICAgICAweDFlNzNhLCAweDFlNzQ2LCAweDFlNzRjLCAweDFlNzU4LCAweDFlNzcyLCAweDFlNzc0LCAweDFlNzkyLCAweDFlNzk0LCAweDFlN2EyLCAweDFlN2E0LCAweDFlN2E4LCAweDFlN2I2LAoJICAgICAgICAweDFlODEyLCAweDFlODE0LCAweDFlODIyLCAweDFlODI0LCAweDFlODI4LCAweDFlODM2LCAweDFlODQyLCAweDFlODQ0LCAweDFlODQ4LCAweDFlODUwLCAweDFlODVlLCAweDFlODY2LAoJICAgICAgICAweDFlODZjLCAweDFlODdhLCAweDFlODgyLCAweDFlODg0LCAweDFlODg4LCAweDFlODkwLCAweDFlODllLCAweDFlOGEwLCAweDFlOGJjLCAweDFlOGM2LCAweDFlOGNjLCAweDFlOGQ4LAoJICAgICAgICAweDFlOGVlLCAweDFlOGYyLCAweDFlOGY0LCAweDFlOTAyLCAweDFlOTA0LCAweDFlOTA4LCAweDFlOTEwLCAweDFlOTIwLCAweDFlOTNjLCAweDFlOTQwLCAweDFlOTc4LCAweDFlOTg2LAoJICAgICAgICAweDFlOThjLCAweDFlOTk4LCAweDFlOWIwLCAweDFlOWJlLCAweDFlOWNlLCAweDFlOWRjLCAweDFlOWUyLCAweDFlOWU0LCAweDFlOWU4LCAweDFlOWY2LCAweDFlYTA0LCAweDFlYTA4LAoJICAgICAgICAweDFlYTEwLCAweDFlYTIwLCAweDFlYTQwLCAweDFlYTc4LCAweDFlYWYwLCAweDFlYjA2LCAweDFlYjBjLCAweDFlYjE4LCAweDFlYjMwLCAweDFlYjNlLCAweDFlYjYwLCAweDFlYjdjLAoJICAgICAgICAweDFlYjhlLCAweDFlYjljLCAweDFlYmI4LCAweDFlYmMyLCAweDFlYmM0LCAweDFlYmM4LCAweDFlYmQwLCAweDFlYmRlLCAweDFlYmU2LCAweDFlYmVjLCAweDFlYzFhLCAweDFlYzJlLAoJICAgICAgICAweDFlYzMyLCAweDFlYzM0LCAweDFlYzRlLCAweDFlYzVjLCAweDFlYzYyLCAweDFlYzY0LCAweDFlYzY4LCAweDFlYzhlLCAweDFlYzljLCAweDFlY2I4LCAweDFlY2MyLCAweDFlY2M0LAoJICAgICAgICAweDFlY2M4LCAweDFlY2QwLCAweDFlY2U2LCAweDFlY2ZhLCAweDFlZDBlLCAweDFlZDFjLCAweDFlZDM4LCAweDFlZDcwLCAweDFlZDdlLCAweDFlZDgyLCAweDFlZDg0LCAweDFlZDg4LAoJICAgICAgICAweDFlZDkwLCAweDFlZDllLCAweDFlZGEwLCAweDFlZGNjLCAweDFlZGYyLCAweDFlZGY0LCAweDFlZTE2LCAweDFlZTI2LCAweDFlZTJjLCAweDFlZTNhLCAweDFlZTQ2LCAweDFlZTRjLAoJICAgICAgICAweDFlZTU4LCAweDFlZTZlLCAweDFlZTcyLCAweDFlZTc0LCAweDFlZTg2LCAweDFlZThjLCAweDFlZTk4LCAweDFlZWIwLCAweDFlZWJlLCAweDFlZWNlLCAweDFlZWRjLCAweDFlZWUyLAoJICAgICAgICAweDFlZWU0LCAweDFlZWU4LCAweDFlZjEyLCAweDFlZjIyLCAweDFlZjI0LCAweDFlZjI4LCAweDFlZjM2LCAweDFlZjQyLCAweDFlZjQ0LCAweDFlZjQ4LCAweDFlZjUwLCAweDFlZjVlLAoJICAgICAgICAweDFlZjY2LCAweDFlZjZjLCAweDFlZjdhLCAweDFlZmFlLCAweDFlZmIyLCAweDFlZmI0LCAweDFlZmQ2LCAweDFmMDk2LCAweDFmMGE2LCAweDFmMGFjLCAweDFmMGJhLCAweDFmMGNhLAoJICAgICAgICAweDFmMGQyLCAweDFmMGQ0LCAweDFmMTE2LCAweDFmMTI2LCAweDFmMTJjLCAweDFmMTNhLCAweDFmMTQ2LCAweDFmMTRjLCAweDFmMTU4LCAweDFmMTZlLCAweDFmMTcyLCAweDFmMTc0LAoJICAgICAgICAweDFmMThhLCAweDFmMTkyLCAweDFmMTk0LCAweDFmMWEyLCAweDFmMWE0LCAweDFmMWE4LCAweDFmMWRhLCAweDFmMjE2LCAweDFmMjI2LCAweDFmMjJjLCAweDFmMjNhLCAweDFmMjQ2LAoJICAgICAgICAweDFmMjU4LCAweDFmMjZlLCAweDFmMjcyLCAweDFmMjc0LCAweDFmMjg2LCAweDFmMjhjLCAweDFmMjk4LCAweDFmMmIwLCAweDFmMmJlLCAweDFmMmNlLCAweDFmMmRjLCAweDFmMmUyLAoJICAgICAgICAweDFmMmU0LCAweDFmMmU4LCAweDFmMmY2LCAweDFmMzBhLCAweDFmMzEyLCAweDFmMzE0LCAweDFmMzIyLCAweDFmMzI4LCAweDFmMzQyLCAweDFmMzQ0LCAweDFmMzQ4LCAweDFmMzUwLAoJICAgICAgICAweDFmMzVlLCAweDFmMzY2LCAweDFmMzdhLCAweDFmMzlhLCAweDFmM2FlLCAweDFmM2IyLCAweDFmM2I0LCAweDFmNDE2LCAweDFmNDI2LCAweDFmNDJjLCAweDFmNDNhLCAweDFmNDQ2LAoJICAgICAgICAweDFmNDRjLCAweDFmNDU4LCAweDFmNDZlLCAweDFmNDcyLCAweDFmNDc0LCAweDFmNDg2LCAweDFmNDhjLCAweDFmNDk4LCAweDFmNGIwLCAweDFmNGJlLCAweDFmNGNlLCAweDFmNGRjLAoJICAgICAgICAweDFmNGUyLCAweDFmNGU0LCAweDFmNGU4LCAweDFmNGY2LCAweDFmNTA2LCAweDFmNTBjLCAweDFmNTE4LCAweDFmNTMwLCAweDFmNTNlLCAweDFmNTYwLCAweDFmNTdjLCAweDFmNThlLAoJICAgICAgICAweDFmNTljLCAweDFmNWI4LCAweDFmNWMyLCAweDFmNWM0LCAweDFmNWM4LCAweDFmNWQwLCAweDFmNWRlLCAweDFmNWU2LCAweDFmNWVjLCAweDFmNWZhLCAweDFmNjBhLCAweDFmNjEyLAoJICAgICAgICAweDFmNjE0LCAweDFmNjIyLCAweDFmNjI0LCAweDFmNjI4LCAweDFmNjM2LCAweDFmNjQyLCAweDFmNjQ0LCAweDFmNjQ4LCAweDFmNjUwLCAweDFmNjVlLCAweDFmNjY2LCAweDFmNjdhLAoJICAgICAgICAweDFmNjgyLCAweDFmNjg0LCAweDFmNjg4LCAweDFmNjkwLCAweDFmNjllLCAweDFmNmEwLCAweDFmNmJjLCAweDFmNmNjLCAweDFmNmYyLCAweDFmNmY0LCAweDFmNzFhLCAweDFmNzJlLAoJICAgICAgICAweDFmNzMyLCAweDFmNzM0LCAweDFmNzRlLCAweDFmNzVjLCAweDFmNzYyLCAweDFmNzY0LCAweDFmNzY4LCAweDFmNzc2LCAweDFmNzk2LCAweDFmN2E2LCAweDFmN2FjLCAweDFmN2JhLAoJICAgICAgICAweDFmN2QyLCAweDFmN2Q0LCAweDFmODlhLCAweDFmOGFlLCAweDFmOGIyLCAweDFmOGI0LCAweDFmOGQ2LCAweDFmOGVhLCAweDFmOTFhLCAweDFmOTJlLCAweDFmOTMyLCAweDFmOTM0LAoJICAgICAgICAweDFmOTRlLCAweDFmOTVjLCAweDFmOTYyLCAweDFmOTY0LCAweDFmOTY4LCAweDFmOTc2LCAweDFmOTk2LCAweDFmOWE2LCAweDFmOWFjLCAweDFmOWJhLCAweDFmOWNhLCAweDFmOWQyLAoJICAgICAgICAweDFmOWQ0LCAweDFmYTFhLCAweDFmYTJlLCAweDFmYTMyLCAweDFmYTM0LCAweDFmYTRlLCAweDFmYTVjLCAweDFmYTYyLCAweDFmYTY0LCAweDFmYTY4LCAweDFmYTc2LCAweDFmYThlLAoJICAgICAgICAweDFmYTljLCAweDFmYWI4LCAweDFmYWMyLCAweDFmYWM0LCAweDFmYWM4LCAweDFmYWQwLCAweDFmYWRlLCAweDFmYWU2LCAweDFmYWVjLCAweDFmYjE2LCAweDFmYjI2LCAweDFmYjJjLAoJICAgICAgICAweDFmYjNhLCAweDFmYjQ2LCAweDFmYjRjLCAweDFmYjU4LCAweDFmYjZlLCAweDFmYjcyLCAweDFmYjc0LCAweDFmYjhhLCAweDFmYjkyLCAweDFmYjk0LCAweDFmYmEyLCAweDFmYmE0LAoJICAgICAgICAweDFmYmE4LCAweDFmYmI2LCAweDFmYmRhCgkgICAgXSk7CgkgICAgLyoqCgkgICAgICogVGhpcyB0YWJsZSBjb250YWlucyB0byBjb2Rld29yZHMgZm9yIGFsbCBzeW1ib2xzLgoJICAgICAqLwoJICAgIFBERjQxN0NvbW1vbi5DT0RFV09SRF9UQUJMRSA9IEludDMyQXJyYXkuZnJvbShbCgkgICAgICAgIDI2MjcsIDE4MTksIDI2MjIsIDI2MjEsIDE4MTMsIDE4MTIsIDI3MjksIDI3MjQsIDI3MjMsIDI3NzksIDI3NzQsIDI3NzMsIDkwMiwgODk2LCA5MDgsIDg2OCwgODY1LCA4NjEsIDg1OSwgMjUxMSwKCSAgICAgICAgODczLCA4NzEsIDE3ODAsIDgzNSwgMjQ5MywgODI1LCAyNDkxLCA4NDIsIDgzNywgODQ0LCAxNzY0LCAxNzYyLCA4MTEsIDgxMCwgODA5LCAyNDgzLCA4MDcsIDI0ODIsIDgwNiwgMjQ4MCwgODE1LAoJICAgICAgICA4MTQsIDgxMywgODEyLCAyNDg0LCA4MTcsIDgxNiwgMTc0NSwgMTc0NCwgMTc0MiwgMTc0NiwgMjY1NSwgMjYzNywgMjYzNSwgMjYyNiwgMjYyNSwgMjYyMywgMjYyOCwgMTgyMCwgMjc1MiwKCSAgICAgICAgMjczOSwgMjczNywgMjcyOCwgMjcyNywgMjcyNSwgMjczMCwgMjc4NSwgMjc4MywgMjc3OCwgMjc3NywgMjc3NSwgMjc4MCwgNzg3LCA3ODEsIDc0NywgNzM5LCA3MzYsIDI0MTMsIDc1NCwgNzUyLAoJICAgICAgICAxNzE5LCA2OTIsIDY4OSwgNjgxLCAyMzcxLCA2NzgsIDIzNjksIDcwMCwgNjk3LCA2OTQsIDcwMywgMTY4OCwgMTY4NiwgNjQyLCA2MzgsIDIzNDMsIDYzMSwgMjM0MSwgNjI3LCAyMzM4LCA2NTEsCgkgICAgICAgIDY0NiwgNjQzLCAyMzQ1LCA2NTQsIDY1MiwgMTY1MiwgMTY1MCwgMTY0NywgMTY1NCwgNjAxLCA1OTksIDIzMjIsIDU5NiwgMjMyMSwgNTk0LCAyMzE5LCAyMzE3LCA2MTEsIDYxMCwgNjA4LCA2MDYsCgkgICAgICAgIDIzMjQsIDYwMywgMjMyMywgNjE1LCA2MTQsIDYxMiwgMTYxNywgMTYxNiwgMTYxNCwgMTYxMiwgNjE2LCAxNjE5LCAxNjE4LCAyNTc1LCAyNTM4LCAyNTM2LCA5MDUsIDkwMSwgODk4LCA5MDksCgkgICAgICAgIDI1MDksIDI1MDcsIDI1MDQsIDg3MCwgODY3LCA4NjQsIDg2MCwgMjUxMiwgODc1LCA4NzIsIDE3ODEsIDI0OTAsIDI0ODksIDI0ODcsIDI0ODUsIDE3NDgsIDgzNiwgODM0LCA4MzIsIDgzMCwKCSAgICAgICAgMjQ5NCwgODI3LCAyNDkyLCA4NDMsIDg0MSwgODM5LCA4NDUsIDE3NjUsIDE3NjMsIDI3MDEsIDI2NzYsIDI2NzQsIDI2NTMsIDI2NDgsIDI2NTYsIDI2MzQsIDI2MzMsIDI2MzEsIDI2MjksCgkgICAgICAgIDE4MjEsIDI2MzgsIDI2MzYsIDI3NzAsIDI3NjMsIDI3NjEsIDI3NTAsIDI3NDUsIDI3NTMsIDI3MzYsIDI3MzUsIDI3MzMsIDI3MzEsIDE4NDgsIDI3NDAsIDI3MzgsIDI3ODYsIDI3ODQsIDU5MSwKCSAgICAgICAgNTg4LCA1NzYsIDU2OSwgNTY2LCAyMjk2LCAxNTkwLCA1MzcsIDUzNCwgNTI2LCAyMjc2LCA1MjIsIDIyNzQsIDU0NSwgNTQyLCA1MzksIDU0OCwgMTU3MiwgMTU3MCwgNDgxLCAyMjQ1LCA0NjYsCgkgICAgICAgIDIyNDIsIDQ2MiwgMjIzOSwgNDkyLCA0ODUsIDQ4MiwgMjI0OSwgNDk2LCA0OTQsIDE1MzQsIDE1MzEsIDE1MjgsIDE1MzgsIDQxMywgMjE5NiwgNDA2LCAyMTkxLCAyMTg4LCA0MjUsIDQxOSwKCSAgICAgICAgMjIwMiwgNDE1LCAyMTk5LCA0MzIsIDQzMCwgNDI3LCAxNDcyLCAxNDY3LCAxNDY0LCA0MzMsIDE0NzYsIDE0NzQsIDM2OCwgMzY3LCAyMTYwLCAzNjUsIDIxNTksIDM2MiwgMjE1NywgMjE1NSwKCSAgICAgICAgMjE1MiwgMzc4LCAzNzcsIDM3NSwgMjE2NiwgMzcyLCAyMTY1LCAzNjksIDIxNjIsIDM4MywgMzgxLCAzNzksIDIxNjgsIDE0MTksIDE0MTgsIDE0MTYsIDE0MTQsIDM4NSwgMTQxMSwgMzg0LAoJICAgICAgICAxNDIzLCAxNDIyLCAxNDIwLCAxNDI0LCAyNDYxLCA4MDIsIDI0NDEsIDI0MzksIDc5MCwgNzg2LCA3ODMsIDc5NCwgMjQwOSwgMjQwNiwgMjQwMywgNzUwLCA3NDIsIDczOCwgMjQxNCwgNzU2LAoJICAgICAgICA3NTMsIDE3MjAsIDIzNjcsIDIzNjUsIDIzNjIsIDIzNTksIDE2NjMsIDY5MywgNjkxLCA2ODQsIDIzNzMsIDY4MCwgMjM3MCwgNzAyLCA2OTksIDY5NiwgNzA0LCAxNjkwLCAxNjg3LCAyMzM3LAoJICAgICAgICAyMzM2LCAyMzM0LCAyMzMyLCAxNjI0LCAyMzI5LCAxNjIyLCA2NDAsIDYzNywgMjM0NCwgNjM0LCAyMzQyLCA2MzAsIDIzNDAsIDY1MCwgNjQ4LCA2NDUsIDIzNDYsIDY1NSwgNjUzLCAxNjUzLAoJICAgICAgICAxNjUxLCAxNjQ5LCAxNjU1LCAyNjEyLCAyNTk3LCAyNTk1LCAyNTcxLCAyNTY4LCAyNTY1LCAyNTc2LCAyNTM0LCAyNTI5LCAyNTI2LCAxNzg3LCAyNTQwLCAyNTM3LCA5MDcsIDkwNCwgOTAwLAoJICAgICAgICA5MTAsIDI1MDMsIDI1MDIsIDI1MDAsIDI0OTgsIDE3NjgsIDI0OTUsIDE3NjcsIDI1MTAsIDI1MDgsIDI1MDYsIDg2OSwgODY2LCA4NjMsIDI1MTMsIDg3NiwgODc0LCAxNzgyLCAyNzIwLCAyNzEzLAoJICAgICAgICAyNzExLCAyNjk3LCAyNjk0LCAyNjkxLCAyNzAyLCAyNjcyLCAyNjcwLCAyNjY0LCAxODI4LCAyNjc4LCAyNjc1LCAyNjQ3LCAyNjQ2LCAyNjQ0LCAyNjQyLCAxODIzLCAyNjM5LCAxODIyLCAyNjU0LAoJICAgICAgICAyNjUyLCAyNjUwLCAyNjU3LCAyNzcxLCAxODU1LCAyNzY1LCAyNzYyLCAxODUwLCAxODQ5LCAyNzUxLCAyNzQ5LCAyNzQ3LCAyNzU0LCAzNTMsIDIxNDgsIDM0NCwgMzQyLCAzMzYsIDIxNDIsCgkgICAgICAgIDMzMiwgMjE0MCwgMzQ1LCAxMzc1LCAxMzczLCAzMDYsIDIxMzAsIDI5OSwgMjEyOCwgMjk1LCAyMTI1LCAzMTksIDMxNCwgMzExLCAyMTMyLCAxMzU0LCAxMzUyLCAxMzQ5LCAxMzU2LCAyNjIsCgkgICAgICAgIDI1NywgMjEwMSwgMjUzLCAyMDk2LCAyMDkzLCAyNzQsIDI3MywgMjY3LCAyMTA3LCAyNjMsIDIxMDQsIDI4MCwgMjc4LCAyNzUsIDEzMTYsIDEzMTEsIDEzMDgsIDEzMjAsIDEzMTgsIDIwNTIsCgkgICAgICAgIDIwMiwgMjA1MCwgMjA0NCwgMjA0MCwgMjE5LCAyMDYzLCAyMTIsIDIwNjAsIDIwOCwgMjA1NSwgMjI0LCAyMjEsIDIwNjYsIDEyNjAsIDEyNTgsIDEyNTIsIDIzMSwgMTI0OCwgMjI5LCAxMjY2LAoJICAgICAgICAxMjY0LCAxMjYxLCAxMjY4LCAxNTUsIDE5OTgsIDE1MywgMTk5NiwgMTk5NCwgMTk5MSwgMTk4OCwgMTY1LCAxNjQsIDIwMDcsIDE2MiwgMjAwNiwgMTU5LCAyMDAzLCAyMDAwLCAxNzIsIDE3MSwKCSAgICAgICAgMTY5LCAyMDEyLCAxNjYsIDIwMTAsIDExODYsIDExODQsIDExODIsIDExNzksIDE3NSwgMTE3NiwgMTczLCAxMTkyLCAxMTkxLCAxMTg5LCAxMTg3LCAxNzYsIDExOTQsIDExOTMsIDIzMTMsCgkgICAgICAgIDIzMDcsIDIzMDUsIDU5MiwgNTg5LCAyMjk0LCAyMjkyLCAyMjg5LCA1NzgsIDU3MiwgNTY4LCAyMjk3LCA1ODAsIDE1OTEsIDIyNzIsIDIyNjcsIDIyNjQsIDE1NDcsIDUzOCwgNTM2LCA1MjksCgkgICAgICAgIDIyNzgsIDUyNSwgMjI3NSwgNTQ3LCA1NDQsIDU0MSwgMTU3NCwgMTU3MSwgMjIzNywgMjIzNSwgMjIyOSwgMTQ5MywgMjIyNSwgMTQ4OSwgNDc4LCAyMjQ3LCA0NzAsIDIyNDQsIDQ2NSwgMjI0MSwKCSAgICAgICAgNDkzLCA0ODgsIDQ4NCwgMjI1MCwgNDk4LCA0OTUsIDE1MzYsIDE1MzMsIDE1MzAsIDE1MzksIDIxODcsIDIxODYsIDIxODQsIDIxODIsIDE0MzIsIDIxNzksIDE0MzAsIDIxNzYsIDE0MjcsIDQxNCwKCSAgICAgICAgNDEyLCAyMTk3LCA0MDksIDIxOTUsIDQwNSwgMjE5MywgMjE5MCwgNDI2LCA0MjQsIDQyMSwgMjIwMywgNDE4LCAyMjAxLCA0MzEsIDQyOSwgMTQ3MywgMTQ3MSwgMTQ2OSwgMTQ2NiwgNDM0LAoJICAgICAgICAxNDc3LCAxNDc1LCAyNDc4LCAyNDcyLCAyNDcwLCAyNDU5LCAyNDU3LCAyNDU0LCAyNDYyLCA4MDMsIDI0MzcsIDI0MzIsIDI0MjksIDE3MjYsIDI0NDMsIDI0NDAsIDc5MiwgNzg5LCA3ODUsCgkgICAgICAgIDI0MDEsIDIzOTksIDIzOTMsIDE3MDIsIDIzODksIDE2OTksIDI0MTEsIDI0MDgsIDI0MDUsIDc0NSwgNzQxLCAyNDE1LCA3NTgsIDc1NSwgMTcyMSwgMjM1OCwgMjM1NywgMjM1NSwgMjM1MywKCSAgICAgICAgMTY2MSwgMjM1MCwgMTY2MCwgMjM0NywgMTY1NywgMjM2OCwgMjM2NiwgMjM2NCwgMjM2MSwgMTY2NiwgNjkwLCA2ODcsIDIzNzQsIDY4MywgMjM3MiwgNzAxLCA2OTgsIDcwNSwgMTY5MSwgMTY4OSwKCSAgICAgICAgMjYxOSwgMjYxNywgMjYxMCwgMjYwOCwgMjYwNSwgMjYxMywgMjU5MywgMjU4OCwgMjU4NSwgMTgwMywgMjU5OSwgMjU5NiwgMjU2MywgMjU2MSwgMjU1NSwgMTc5NywgMjU1MSwgMTc5NSwgMjU3MywKCSAgICAgICAgMjU3MCwgMjU2NywgMjU3NywgMjUyNSwgMjUyNCwgMjUyMiwgMjUyMCwgMTc4NiwgMjUxNywgMTc4NSwgMjUxNCwgMTc4MywgMjUzNSwgMjUzMywgMjUzMSwgMjUyOCwgMTc4OCwgMjU0MSwgMjUzOSwKCSAgICAgICAgOTA2LCA5MDMsIDkxMSwgMjcyMSwgMTg0NCwgMjcxNSwgMjcxMiwgMTgzOCwgMTgzNiwgMjY5OSwgMjY5NiwgMjY5MywgMjcwMywgMTgyNywgMTgyNiwgMTgyNCwgMjY3MywgMjY3MSwgMjY2OSwKCSAgICAgICAgMjY2NiwgMTgyOSwgMjY3OSwgMjY3NywgMTg1OCwgMTg1NywgMjc3MiwgMTg1NCwgMTg1MywgMTg1MSwgMTg1NiwgMjc2NiwgMjc2NCwgMTQzLCAxOTg3LCAxMzksIDE5ODYsIDEzNSwgMTMzLAoJICAgICAgICAxMzEsIDE5ODQsIDEyOCwgMTk4MywgMTI1LCAxOTgxLCAxMzgsIDEzNywgMTM2LCAxOTg1LCAxMTMzLCAxMTMyLCAxMTMwLCAxMTIsIDExMCwgMTk3NCwgMTA3LCAxOTczLCAxMDQsIDE5NzEsCgkgICAgICAgIDE5NjksIDEyMiwgMTIxLCAxMTksIDExNywgMTk3NywgMTE0LCAxOTc2LCAxMjQsIDExMTUsIDExMTQsIDExMTIsIDExMTAsIDExMTcsIDExMTYsIDg0LCA4MywgMTk1MywgODEsIDE5NTIsIDc4LAoJICAgICAgICAxOTUwLCAxOTQ4LCAxOTQ1LCA5NCwgOTMsIDkxLCAxOTU5LCA4OCwgMTk1OCwgODUsIDE5NTUsIDk5LCA5NywgOTUsIDE5NjEsIDEwODYsIDEwODUsIDEwODMsIDEwODEsIDEwNzgsIDEwMCwKCSAgICAgICAgMTA5MCwgMTA4OSwgMTA4NywgMTA5MSwgNDksIDQ3LCAxOTE3LCA0NCwgMTkxNSwgMTkxMywgMTkxMCwgMTkwNywgNTksIDE5MjYsIDU2LCAxOTI1LCA1MywgMTkyMiwgMTkxOSwgNjYsIDY0LAoJICAgICAgICAxOTMxLCA2MSwgMTkyOSwgMTA0MiwgMTA0MCwgMTAzOCwgNzEsIDEwMzUsIDcwLCAxMDMyLCA2OCwgMTA0OCwgMTA0NywgMTA0NSwgMTA0MywgMTA1MCwgMTA0OSwgMTIsIDEwLCAxODY5LCAxODY3LAoJICAgICAgICAxODY0LCAxODYxLCAyMSwgMTg4MCwgMTksIDE4NzcsIDE4NzQsIDE4NzEsIDI4LCAxODg4LCAyNSwgMTg4NiwgMjIsIDE4ODMsIDk4MiwgOTgwLCA5NzcsIDk3NCwgMzIsIDMwLCA5OTEsIDk4OSwKCSAgICAgICAgOTg3LCA5ODQsIDM0LCA5OTUsIDk5NCwgOTkyLCAyMTUxLCAyMTUwLCAyMTQ3LCAyMTQ2LCAyMTQ0LCAzNTYsIDM1NSwgMzU0LCAyMTQ5LCAyMTM5LCAyMTM4LCAyMTM2LCAyMTM0LCAxMzU5LAoJICAgICAgICAzNDMsIDM0MSwgMzM4LCAyMTQzLCAzMzUsIDIxNDEsIDM0OCwgMzQ3LCAzNDYsIDEzNzYsIDEzNzQsIDIxMjQsIDIxMjMsIDIxMjEsIDIxMTksIDEzMjYsIDIxMTYsIDEzMjQsIDMxMCwgMzA4LAoJICAgICAgICAzMDUsIDIxMzEsIDMwMiwgMjEyOSwgMjk4LCAyMTI3LCAzMjAsIDMxOCwgMzE2LCAzMTMsIDIxMzMsIDMyMiwgMzIxLCAxMzU1LCAxMzUzLCAxMzUxLCAxMzU3LCAyMDkyLCAyMDkxLCAyMDg5LAoJICAgICAgICAyMDg3LCAxMjc2LCAyMDg0LCAxMjc0LCAyMDgxLCAxMjcxLCAyNTksIDIxMDIsIDI1NiwgMjEwMCwgMjUyLCAyMDk4LCAyMDk1LCAyNzIsIDI2OSwgMjEwOCwgMjY2LCAyMTA2LCAyODEsIDI3OSwKCSAgICAgICAgMjc3LCAxMzE3LCAxMzE1LCAxMzEzLCAxMzEwLCAyODIsIDEzMjEsIDEzMTksIDIwMzksIDIwMzcsIDIwMzUsIDIwMzIsIDEyMDMsIDIwMjksIDEyMDAsIDExOTcsIDIwNywgMjA1MywgMjA1LAoJICAgICAgICAyMDUxLCAyMDEsIDIwNDksIDIwNDYsIDIwNDMsIDIyMCwgMjE4LCAyMDY0LCAyMTUsIDIwNjIsIDIxMSwgMjA1OSwgMjI4LCAyMjYsIDIyMywgMjA2OSwgMTI1OSwgMTI1NywgMTI1NCwgMjMyLAoJICAgICAgICAxMjUxLCAyMzAsIDEyNjcsIDEyNjUsIDEyNjMsIDIzMTYsIDIzMTUsIDIzMTIsIDIzMTEsIDIzMDksIDIzMTQsIDIzMDQsIDIzMDMsIDIzMDEsIDIyOTksIDE1OTMsIDIzMDgsIDIzMDYsIDU5MCwKCSAgICAgICAgMjI4OCwgMjI4NywgMjI4NSwgMjI4MywgMTU3OCwgMjI4MCwgMTU3NywgMjI5NSwgMjI5MywgMjI5MSwgNTc5LCA1NzcsIDU3NCwgNTcxLCAyMjk4LCA1ODIsIDU4MSwgMTU5MiwgMjI2MywgMjI2MiwKCSAgICAgICAgMjI2MCwgMjI1OCwgMTU0NSwgMjI1NSwgMTU0NCwgMjI1MiwgMTU0MSwgMjI3MywgMjI3MSwgMjI2OSwgMjI2NiwgMTU1MCwgNTM1LCA1MzIsIDIyNzksIDUyOCwgMjI3NywgNTQ2LCA1NDMsIDU0OSwKCSAgICAgICAgMTU3NSwgMTU3MywgMjIyNCwgMjIyMiwgMjIyMCwgMTQ4NiwgMjIxNywgMTQ4NSwgMjIxNCwgMTQ4MiwgMTQ3OSwgMjIzOCwgMjIzNiwgMjIzNCwgMjIzMSwgMTQ5NiwgMjIyOCwgMTQ5MiwgNDgwLAoJICAgICAgICA0NzcsIDIyNDgsIDQ3MywgMjI0NiwgNDY5LCAyMjQzLCA0OTAsIDQ4NywgMjI1MSwgNDk3LCAxNTM3LCAxNTM1LCAxNTMyLCAyNDc3LCAyNDc2LCAyNDc0LCAyNDc5LCAyNDY5LCAyNDY4LCAyNDY2LAoJICAgICAgICAyNDY0LCAxNzMwLCAyNDczLCAyNDcxLCAyNDUzLCAyNDUyLCAyNDUwLCAyNDQ4LCAxNzI5LCAyNDQ1LCAxNzI4LCAyNDYwLCAyNDU4LCAyNDU2LCAyNDYzLCA4MDUsIDgwNCwgMjQyOCwgMjQyNywKCSAgICAgICAgMjQyNSwgMjQyMywgMTcyNSwgMjQyMCwgMTcyNCwgMjQxNywgMTcyMiwgMjQzOCwgMjQzNiwgMjQzNCwgMjQzMSwgMTcyNywgMjQ0NCwgMjQ0MiwgNzkzLCA3OTEsIDc4OCwgNzk1LCAyMzg4LAoJICAgICAgICAyMzg2LCAyMzg0LCAxNjk3LCAyMzgxLCAxNjk2LCAyMzc4LCAxNjk0LCAxNjkyLCAyNDAyLCAyNDAwLCAyMzk4LCAyMzk1LCAxNzAzLCAyMzkyLCAxNzAxLCAyNDEyLCAyNDEwLCAyNDA3LCA3NTEsCgkgICAgICAgIDc0OCwgNzQ0LCAyNDE2LCA3NTksIDc1NywgMTgwNywgMjYyMCwgMjYxOCwgMTgwNiwgMTgwNSwgMjYxMSwgMjYwOSwgMjYwNywgMjYxNCwgMTgwMiwgMTgwMSwgMTc5OSwgMjU5NCwgMjU5MiwKCSAgICAgICAgMjU5MCwgMjU4NywgMTgwNCwgMjYwMCwgMjU5OCwgMTc5NCwgMTc5MywgMTc5MSwgMTc4OSwgMjU2NCwgMjU2MiwgMjU2MCwgMjU1NywgMTc5OCwgMjU1NCwgMTc5NiwgMjU3NCwgMjU3MiwgMjU2OSwKCSAgICAgICAgMjU3OCwgMTg0NywgMTg0NiwgMjcyMiwgMTg0MywgMTg0MiwgMTg0MCwgMTg0NSwgMjcxNiwgMjcxNCwgMTgzNSwgMTgzNCwgMTgzMiwgMTgzMCwgMTgzOSwgMTgzNywgMjcwMCwgMjY5OCwgMjY5NSwKCSAgICAgICAgMjcwNCwgMTgxNywgMTgxMSwgMTgxMCwgODk3LCA4NjIsIDE3NzcsIDgyOSwgODI2LCA4MzgsIDE3NjAsIDE3NTgsIDgwOCwgMjQ4MSwgMTc0MSwgMTc0MCwgMTczOCwgMTc0MywgMjYyNCwgMTgxOCwKCSAgICAgICAgMjcyNiwgMjc3NiwgNzgyLCA3NDAsIDczNywgMTcxNSwgNjg2LCA2NzksIDY5NSwgMTY4MiwgMTY4MCwgNjM5LCA2MjgsIDIzMzksIDY0NywgNjQ0LCAxNjQ1LCAxNjQzLCAxNjQwLCAxNjQ4LAoJICAgICAgICA2MDIsIDYwMCwgNTk3LCA1OTUsIDIzMjAsIDU5MywgMjMxOCwgNjA5LCA2MDcsIDYwNCwgMTYxMSwgMTYxMCwgMTYwOCwgMTYwNiwgNjEzLCAxNjE1LCAxNjEzLCAyMzI4LCA5MjYsIDkyNCwgODkyLAoJICAgICAgICA4ODYsIDg5OSwgODU3LCA4NTAsIDI1MDUsIDE3NzgsIDgyNCwgODIzLCA4MjEsIDgxOSwgMjQ4OCwgODE4LCAyNDg2LCA4MzMsIDgzMSwgODI4LCA4NDAsIDE3NjEsIDE3NTksIDI2NDksIDI2MzIsCgkgICAgICAgIDI2MzAsIDI3NDYsIDI3MzQsIDI3MzIsIDI3ODIsIDI3ODEsIDU3MCwgNTY3LCAxNTg3LCA1MzEsIDUyNywgNTIzLCA1NDAsIDE1NjYsIDE1NjQsIDQ3NiwgNDY3LCA0NjMsIDIyNDAsIDQ4NiwKCSAgICAgICAgNDgzLCAxNTI0LCAxNTIxLCAxNTE4LCAxNTI5LCA0MTEsIDQwMywgMjE5MiwgMzk5LCAyMTg5LCA0MjMsIDQxNiwgMTQ2MiwgMTQ1NywgMTQ1NCwgNDI4LCAxNDY4LCAxNDY1LCAyMjEwLCAzNjYsCgkgICAgICAgIDM2MywgMjE1OCwgMzYwLCAyMTU2LCAzNTcsIDIxNTMsIDM3NiwgMzczLCAzNzAsIDIxNjMsIDE0MTAsIDE0MDksIDE0MDcsIDE0MDUsIDM4MiwgMTQwMiwgMzgwLCAxNDE3LCAxNDE1LCAxNDEyLAoJICAgICAgICAxNDIxLCAyMTc1LCAyMTc0LCA3NzcsIDc3NCwgNzcxLCA3ODQsIDczMiwgNzI1LCA3MjIsIDI0MDQsIDc0MywgMTcxNiwgNjc2LCA2NzQsIDY2OCwgMjM2MywgNjY1LCAyMzYwLCA2ODUsIDE2ODQsCgkgICAgICAgIDE2ODEsIDYyNiwgNjI0LCA2MjIsIDIzMzUsIDYyMCwgMjMzMywgNjE3LCAyMzMwLCA2NDEsIDYzNSwgNjQ5LCAxNjQ2LCAxNjQ0LCAxNjQyLCAyNTY2LCA5MjgsIDkyNSwgMjUzMCwgMjUyNywKCSAgICAgICAgODk0LCA4OTEsIDg4OCwgMjUwMSwgMjQ5OSwgMjQ5NiwgODU4LCA4NTYsIDg1NCwgODUxLCAxNzc5LCAyNjkyLCAyNjY4LCAyNjY1LCAyNjQ1LCAyNjQzLCAyNjQwLCAyNjUxLCAyNzY4LCAyNzU5LAoJICAgICAgICAyNzU3LCAyNzQ0LCAyNzQzLCAyNzQxLCAyNzQ4LCAzNTIsIDEzODIsIDM0MCwgMzM3LCAzMzMsIDEzNzEsIDEzNjksIDMwNywgMzAwLCAyOTYsIDIxMjYsIDMxNSwgMzEyLCAxMzQ3LCAxMzQyLAoJICAgICAgICAxMzUwLCAyNjEsIDI1OCwgMjUwLCAyMDk3LCAyNDYsIDIwOTQsIDI3MSwgMjY4LCAyNjQsIDEzMDYsIDEzMDEsIDEyOTgsIDI3NiwgMTMxMiwgMTMwOSwgMjExNSwgMjAzLCAyMDQ4LCAxOTUsCgkgICAgICAgIDIwNDUsIDE5MSwgMjA0MSwgMjEzLCAyMDksIDIwNTYsIDEyNDYsIDEyNDQsIDEyMzgsIDIyNSwgMTIzNCwgMjIyLCAxMjU2LCAxMjUzLCAxMjQ5LCAxMjYyLCAyMDgwLCAyMDc5LCAxNTQsIDE5OTcsCgkgICAgICAgIDE1MCwgMTk5NSwgMTQ3LCAxOTkyLCAxOTg5LCAxNjMsIDE2MCwgMjAwNCwgMTU2LCAyMDAxLCAxMTc1LCAxMTc0LCAxMTcyLCAxMTcwLCAxMTY3LCAxNzAsIDExNjQsIDE2NywgMTE4NSwgMTE4MywKCSAgICAgICAgMTE4MCwgMTE3NywgMTc0LCAxMTkwLCAxMTg4LCAyMDI1LCAyMDI0LCAyMDIyLCA1ODcsIDU4NiwgNTY0LCA1NTksIDU1NiwgMjI5MCwgNTczLCAxNTg4LCA1MjAsIDUxOCwgNTEyLCAyMjY4LAoJICAgICAgICA1MDgsIDIyNjUsIDUzMCwgMTU2OCwgMTU2NSwgNDYxLCA0NTcsIDIyMzMsIDQ1MCwgMjIzMCwgNDQ2LCAyMjI2LCA0NzksIDQ3MSwgNDg5LCAxNTI2LCAxNTIzLCAxNTIwLCAzOTcsIDM5NSwKCSAgICAgICAgMjE4NSwgMzkyLCAyMTgzLCAzODksIDIxODAsIDIxNzcsIDQxMCwgMjE5NCwgNDAyLCA0MjIsIDE0NjMsIDE0NjEsIDE0NTksIDE0NTYsIDE0NzAsIDI0NTUsIDc5OSwgMjQzMywgMjQzMCwgNzc5LAoJICAgICAgICA3NzYsIDc3MywgMjM5NywgMjM5NCwgMjM5MCwgNzM0LCA3MjgsIDcyNCwgNzQ2LCAxNzE3LCAyMzU2LCAyMzU0LCAyMzUxLCAyMzQ4LCAxNjU4LCA2NzcsIDY3NSwgNjczLCA2NzAsIDY2NywgNjg4LAoJICAgICAgICAxNjg1LCAxNjgzLCAyNjA2LCAyNTg5LCAyNTg2LCAyNTU5LCAyNTU2LCAyNTUyLCA5MjcsIDI1MjMsIDI1MjEsIDI1MTgsIDI1MTUsIDE3ODQsIDI1MzIsIDg5NSwgODkzLCA4OTAsIDI3MTgsCgkgICAgICAgIDI3MDksIDI3MDcsIDI2ODksIDI2ODcsIDI2ODQsIDI2NjMsIDI2NjIsIDI2NjAsIDI2NTgsIDE4MjUsIDI2NjcsIDI3NjksIDE4NTIsIDI3NjAsIDI3NTgsIDE0MiwgMTQxLCAxMTM5LCAxMTM4LAoJICAgICAgICAxMzQsIDEzMiwgMTI5LCAxMjYsIDE5ODIsIDExMjksIDExMjgsIDExMjYsIDExMzEsIDExMywgMTExLCAxMDgsIDEwNSwgMTk3MiwgMTAxLCAxOTcwLCAxMjAsIDExOCwgMTE1LCAxMTA5LCAxMTA4LAoJICAgICAgICAxMTA2LCAxMTA0LCAxMjMsIDExMTMsIDExMTEsIDgyLCA3OSwgMTk1MSwgNzUsIDE5NDksIDcyLCAxOTQ2LCA5MiwgODksIDg2LCAxOTU2LCAxMDc3LCAxMDc2LCAxMDc0LCAxMDcyLCA5OCwKCSAgICAgICAgMTA2OSwgOTYsIDEwODQsIDEwODIsIDEwNzksIDEwODgsIDE5NjgsIDE5NjcsIDQ4LCA0NSwgMTkxNiwgNDIsIDE5MTQsIDM5LCAxOTExLCAxOTA4LCA2MCwgNTcsIDU0LCAxOTIzLCA1MCwgMTkyMCwKCSAgICAgICAgMTAzMSwgMTAzMCwgMTAyOCwgMTAyNiwgNjcsIDEwMjMsIDY1LCAxMDIwLCA2MiwgMTA0MSwgMTAzOSwgMTAzNiwgMTAzMywgNjksIDEwNDYsIDEwNDQsIDE5NDQsIDE5NDMsIDE5NDEsIDExLCA5LAoJICAgICAgICAxODY4LCA3LCAxODY1LCAxODYyLCAxODU5LCAyMCwgMTg3OCwgMTYsIDE4NzUsIDEzLCAxODcyLCA5NzAsIDk2OCwgOTY2LCA5NjMsIDI5LCA5NjAsIDI2LCAyMywgOTgzLCA5ODEsIDk3OCwgOTc1LAoJICAgICAgICAzMywgOTcxLCAzMSwgOTkwLCA5ODgsIDk4NSwgMTkwNiwgMTkwNCwgMTkwMiwgOTkzLCAzNTEsIDIxNDUsIDEzODMsIDMzMSwgMzMwLCAzMjgsIDMyNiwgMjEzNywgMzIzLCAyMTM1LCAzMzksCgkgICAgICAgIDEzNzIsIDEzNzAsIDI5NCwgMjkzLCAyOTEsIDI4OSwgMjEyMiwgMjg2LCAyMTIwLCAyODMsIDIxMTcsIDMwOSwgMzAzLCAzMTcsIDEzNDgsIDEzNDYsIDEzNDQsIDI0NSwgMjQ0LCAyNDIsIDIwOTAsCgkgICAgICAgIDIzOSwgMjA4OCwgMjM2LCAyMDg1LCAyMDgyLCAyNjAsIDIwOTksIDI0OSwgMjcwLCAxMzA3LCAxMzA1LCAxMzAzLCAxMzAwLCAxMzE0LCAxODksIDIwMzgsIDE4NiwgMjAzNiwgMTgzLCAyMDMzLAoJICAgICAgICAyMDMwLCAyMDI2LCAyMDYsIDE5OCwgMjA0NywgMTk0LCAyMTYsIDEyNDcsIDEyNDUsIDEyNDMsIDEyNDAsIDIyNywgMTIzNywgMTI1NSwgMjMxMCwgMjMwMiwgMjMwMCwgMjI4NiwgMjI4NCwKCSAgICAgICAgMjI4MSwgNTY1LCA1NjMsIDU2MSwgNTU4LCA1NzUsIDE1ODksIDIyNjEsIDIyNTksIDIyNTYsIDIyNTMsIDE1NDIsIDUyMSwgNTE5LCA1MTcsIDUxNCwgMjI3MCwgNTExLCA1MzMsIDE1NjksCgkgICAgICAgIDE1NjcsIDIyMjMsIDIyMjEsIDIyMTgsIDIyMTUsIDE0ODMsIDIyMTEsIDE0ODAsIDQ1OSwgNDU2LCA0NTMsIDIyMzIsIDQ0OSwgNDc0LCA0OTEsIDE1MjcsIDE1MjUsIDE1MjIsIDI0NzUsIDI0NjcsCgkgICAgICAgIDI0NjUsIDI0NTEsIDI0NDksIDI0NDYsIDgwMSwgODAwLCAyNDI2LCAyNDI0LCAyNDIxLCAyNDE4LCAxNzIzLCAyNDM1LCA3ODAsIDc3OCwgNzc1LCAyMzg3LCAyMzg1LCAyMzgyLCAyMzc5LAoJICAgICAgICAxNjk1LCAyMzc1LCAxNjkzLCAyMzk2LCA3MzUsIDczMywgNzMwLCA3MjcsIDc0OSwgMTcxOCwgMjYxNiwgMjYxNSwgMjYwNCwgMjYwMywgMjYwMSwgMjU4NCwgMjU4MywgMjU4MSwgMjU3OSwKCSAgICAgICAgMTgwMCwgMjU5MSwgMjU1MCwgMjU0OSwgMjU0NywgMjU0NSwgMTc5MiwgMjU0MiwgMTc5MCwgMjU1OCwgOTI5LCAyNzE5LCAxODQxLCAyNzEwLCAyNzA4LCAxODMzLCAxODMxLCAyNjkwLCAyNjg4LAoJICAgICAgICAyNjg2LCAxODE1LCAxODA5LCAxODA4LCAxNzc0LCAxNzU2LCAxNzU0LCAxNzM3LCAxNzM2LCAxNzM0LCAxNzM5LCAxODE2LCAxNzExLCAxNjc2LCAxNjc0LCA2MzMsIDYyOSwgMTYzOCwgMTYzNiwKCSAgICAgICAgMTYzMywgMTY0MSwgNTk4LCAxNjA1LCAxNjA0LCAxNjAyLCAxNjAwLCA2MDUsIDE2MDksIDE2MDcsIDIzMjcsIDg4NywgODUzLCAxNzc1LCA4MjIsIDgyMCwgMTc1NywgMTc1NSwgMTU4NCwgNTI0LAoJICAgICAgICAxNTYwLCAxNTU4LCA0NjgsIDQ2NCwgMTUxNCwgMTUxMSwgMTUwOCwgMTUxOSwgNDA4LCA0MDQsIDQwMCwgMTQ1MiwgMTQ0NywgMTQ0NCwgNDE3LCAxNDU4LCAxNDU1LCAyMjA4LCAzNjQsIDM2MSwKCSAgICAgICAgMzU4LCAyMTU0LCAxNDAxLCAxNDAwLCAxMzk4LCAxMzk2LCAzNzQsIDEzOTMsIDM3MSwgMTQwOCwgMTQwNiwgMTQwMywgMTQxMywgMjE3MywgMjE3MiwgNzcyLCA3MjYsIDcyMywgMTcxMiwgNjcyLAoJICAgICAgICA2NjksIDY2NiwgNjgyLCAxNjc4LCAxNjc1LCA2MjUsIDYyMywgNjIxLCA2MTgsIDIzMzEsIDYzNiwgNjMyLCAxNjM5LCAxNjM3LCAxNjM1LCA5MjAsIDkxOCwgODg0LCA4ODAsIDg4OSwgODQ5LAoJICAgICAgICA4NDgsIDg0NywgODQ2LCAyNDk3LCA4NTUsIDg1MiwgMTc3NiwgMjY0MSwgMjc0MiwgMjc4NywgMTM4MCwgMzM0LCAxMzY3LCAxMzY1LCAzMDEsIDI5NywgMTM0MCwgMTMzOCwgMTMzNSwgMTM0MywKCSAgICAgICAgMjU1LCAyNTEsIDI0NywgMTI5NiwgMTI5MSwgMTI4OCwgMjY1LCAxMzAyLCAxMjk5LCAyMTEzLCAyMDQsIDE5NiwgMTkyLCAyMDQyLCAxMjMyLCAxMjMwLCAxMjI0LCAyMTQsIDEyMjAsIDIxMCwKCSAgICAgICAgMTI0MiwgMTIzOSwgMTIzNSwgMTI1MCwgMjA3NywgMjA3NSwgMTUxLCAxNDgsIDE5OTMsIDE0NCwgMTk5MCwgMTE2MywgMTE2MiwgMTE2MCwgMTE1OCwgMTE1NSwgMTYxLCAxMTUyLCAxNTcsCgkgICAgICAgIDExNzMsIDExNzEsIDExNjgsIDExNjUsIDE2OCwgMTE4MSwgMTE3OCwgMjAyMSwgMjAyMCwgMjAxOCwgMjAyMywgNTg1LCA1NjAsIDU1NywgMTU4NSwgNTE2LCA1MDksIDE1NjIsIDE1NTksIDQ1OCwKCSAgICAgICAgNDQ3LCAyMjI3LCA0NzIsIDE1MTYsIDE1MTMsIDE1MTAsIDM5OCwgMzk2LCAzOTMsIDM5MCwgMjE4MSwgMzg2LCAyMTc4LCA0MDcsIDE0NTMsIDE0NTEsIDE0NDksIDE0NDYsIDQyMCwgMTQ2MCwKCSAgICAgICAgMjIwOSwgNzY5LCA3NjQsIDcyMCwgNzEyLCAyMzkxLCA3MjksIDE3MTMsIDY2NCwgNjYzLCA2NjEsIDY1OSwgMjM1MiwgNjU2LCAyMzQ5LCA2NzEsIDE2NzksIDE2NzcsIDI1NTMsIDkyMiwgOTE5LAoJICAgICAgICAyNTE5LCAyNTE2LCA4ODUsIDg4MywgODgxLCAyNjg1LCAyNjYxLCAyNjU5LCAyNzY3LCAyNzU2LCAyNzU1LCAxNDAsIDExMzcsIDExMzYsIDEzMCwgMTI3LCAxMTI1LCAxMTI0LCAxMTIyLCAxMTI3LAoJICAgICAgICAxMDksIDEwNiwgMTAyLCAxMTAzLCAxMTAyLCAxMTAwLCAxMDk4LCAxMTYsIDExMDcsIDExMDUsIDE5ODAsIDgwLCA3NiwgNzMsIDE5NDcsIDEwNjgsIDEwNjcsIDEwNjUsIDEwNjMsIDkwLCAxMDYwLAoJICAgICAgICA4NywgMTA3NSwgMTA3MywgMTA3MCwgMTA4MCwgMTk2NiwgMTk2NSwgNDYsIDQzLCA0MCwgMTkxMiwgMzYsIDE5MDksIDEwMTksIDEwMTgsIDEwMTYsIDEwMTQsIDU4LCAxMDExLCA1NSwgMTAwOCwKCSAgICAgICAgNTEsIDEwMjksIDEwMjcsIDEwMjQsIDEwMjEsIDYzLCAxMDM3LCAxMDM0LCAxOTQwLCAxOTM5LCAxOTM3LCAxOTQyLCA4LCAxODY2LCA0LCAxODYzLCAxLCAxODYwLCA5NTYsIDk1NCwgOTUyLAoJICAgICAgICA5NDksIDk0NiwgMTcsIDE0LCA5NjksIDk2NywgOTY0LCA5NjEsIDI3LCA5NTcsIDI0LCA5NzksIDk3NiwgOTcyLCAxOTAxLCAxOTAwLCAxODk4LCAxODk2LCA5ODYsIDE5MDUsIDE5MDMsIDM1MCwKCSAgICAgICAgMzQ5LCAxMzgxLCAzMjksIDMyNywgMzI0LCAxMzY4LCAxMzY2LCAyOTIsIDI5MCwgMjg3LCAyODQsIDIxMTgsIDMwNCwgMTM0MSwgMTMzOSwgMTMzNywgMTM0NSwgMjQzLCAyNDAsIDIzNywgMjA4NiwKCSAgICAgICAgMjMzLCAyMDgzLCAyNTQsIDEyOTcsIDEyOTUsIDEyOTMsIDEyOTAsIDEzMDQsIDIxMTQsIDE5MCwgMTg3LCAxODQsIDIwMzQsIDE4MCwgMjAzMSwgMTc3LCAyMDI3LCAxOTksIDEyMzMsIDEyMzEsCgkgICAgICAgIDEyMjksIDEyMjYsIDIxNywgMTIyMywgMTI0MSwgMjA3OCwgMjA3NiwgNTg0LCA1NTUsIDU1NCwgNTUyLCA1NTAsIDIyODIsIDU2MiwgMTU4NiwgNTA3LCA1MDYsIDUwNCwgNTAyLCAyMjU3LCA0OTksCgkgICAgICAgIDIyNTQsIDUxNSwgMTU2MywgMTU2MSwgNDQ1LCA0NDMsIDQ0MSwgMjIxOSwgNDM4LCAyMjE2LCA0MzUsIDIyMTIsIDQ2MCwgNDU0LCA0NzUsIDE1MTcsIDE1MTUsIDE1MTIsIDI0NDcsIDc5OCwKCSAgICAgICAgNzk3LCAyNDIyLCAyNDE5LCA3NzAsIDc2OCwgNzY2LCAyMzgzLCAyMzgwLCAyMzc2LCA3MjEsIDcxOSwgNzE3LCA3MTQsIDczMSwgMTcxNCwgMjYwMiwgMjU4MiwgMjU4MCwgMjU0OCwgMjU0NiwKCSAgICAgICAgMjU0MywgOTIzLCA5MjEsIDI3MTcsIDI3MDYsIDI3MDUsIDI2ODMsIDI2ODIsIDI2ODAsIDE3NzEsIDE3NTIsIDE3NTAsIDE3MzMsIDE3MzIsIDE3MzEsIDE3MzUsIDE4MTQsIDE3MDcsIDE2NzAsCgkgICAgICAgIDE2NjgsIDE2MzEsIDE2MjksIDE2MjYsIDE2MzQsIDE1OTksIDE1OTgsIDE1OTYsIDE1OTQsIDE2MDMsIDE2MDEsIDIzMjYsIDE3NzIsIDE3NTMsIDE3NTEsIDE1ODEsIDE1NTQsIDE1NTIsIDE1MDQsCgkgICAgICAgIDE1MDEsIDE0OTgsIDE1MDksIDE0NDIsIDE0MzcsIDE0MzQsIDQwMSwgMTQ0OCwgMTQ0NSwgMjIwNiwgMTM5MiwgMTM5MSwgMTM4OSwgMTM4NywgMTM4NCwgMzU5LCAxMzk5LCAxMzk3LCAxMzk0LAoJICAgICAgICAxNDA0LCAyMTcxLCAyMTcwLCAxNzA4LCAxNjcyLCAxNjY5LCA2MTksIDE2MzIsIDE2MzAsIDE2MjgsIDE3NzMsIDEzNzgsIDEzNjMsIDEzNjEsIDEzMzMsIDEzMjgsIDEzMzYsIDEyODYsIDEyODEsCgkgICAgICAgIDEyNzgsIDI0OCwgMTI5MiwgMTI4OSwgMjExMSwgMTIxOCwgMTIxNiwgMTIxMCwgMTk3LCAxMjA2LCAxOTMsIDEyMjgsIDEyMjUsIDEyMjEsIDEyMzYsIDIwNzMsIDIwNzEsIDExNTEsIDExNTAsCgkgICAgICAgIDExNDgsIDExNDYsIDE1MiwgMTE0MywgMTQ5LCAxMTQwLCAxNDUsIDExNjEsIDExNTksIDExNTYsIDExNTMsIDE1OCwgMTE2OSwgMTE2NiwgMjAxNywgMjAxNiwgMjAxNCwgMjAxOSwgMTU4MiwKCSAgICAgICAgNTEwLCAxNTU2LCAxNTUzLCA0NTIsIDQ0OCwgMTUwNiwgMTUwMCwgMzk0LCAzOTEsIDM4NywgMTQ0MywgMTQ0MSwgMTQzOSwgMTQzNiwgMTQ1MCwgMjIwNywgNzY1LCA3MTYsIDcxMywgMTcwOSwKCSAgICAgICAgNjYyLCA2NjAsIDY1NywgMTY3MywgMTY3MSwgOTE2LCA5MTQsIDg3OSwgODc4LCA4NzcsIDg4MiwgMTEzNSwgMTEzNCwgMTEyMSwgMTEyMCwgMTExOCwgMTEyMywgMTA5NywgMTA5NiwgMTA5NCwKCSAgICAgICAgMTA5MiwgMTAzLCAxMTAxLCAxMDk5LCAxOTc5LCAxMDU5LCAxMDU4LCAxMDU2LCAxMDU0LCA3NywgMTA1MSwgNzQsIDEwNjYsIDEwNjQsIDEwNjEsIDEwNzEsIDE5NjQsIDE5NjMsIDEwMDcsCgkgICAgICAgIDEwMDYsIDEwMDQsIDEwMDIsIDk5OSwgNDEsIDk5NiwgMzcsIDEwMTcsIDEwMTUsIDEwMTIsIDEwMDksIDUyLCAxMDI1LCAxMDIyLCAxOTM2LCAxOTM1LCAxOTMzLCAxOTM4LCA5NDIsIDk0MCwKCSAgICAgICAgOTM4LCA5MzUsIDkzMiwgNSwgMiwgOTU1LCA5NTMsIDk1MCwgOTQ3LCAxOCwgOTQzLCAxNSwgOTY1LCA5NjIsIDk1OCwgMTg5NSwgMTg5NCwgMTg5MiwgMTg5MCwgOTczLCAxODk5LCAxODk3LAoJICAgICAgICAxMzc5LCAzMjUsIDEzNjQsIDEzNjIsIDI4OCwgMjg1LCAxMzM0LCAxMzMyLCAxMzMwLCAyNDEsIDIzOCwgMjM0LCAxMjg3LCAxMjg1LCAxMjgzLCAxMjgwLCAxMjk0LCAyMTEyLCAxODgsIDE4NSwKCSAgICAgICAgMTgxLCAxNzgsIDIwMjgsIDEyMTksIDEyMTcsIDEyMTUsIDEyMTIsIDIwMCwgMTIwOSwgMTIyNywgMjA3NCwgMjA3MiwgNTgzLCA1NTMsIDU1MSwgMTU4MywgNTA1LCA1MDMsIDUwMCwgNTEzLAoJICAgICAgICAxNTU3LCAxNTU1LCA0NDQsIDQ0MiwgNDM5LCA0MzYsIDIyMTMsIDQ1NSwgNDUxLCAxNTA3LCAxNTA1LCAxNTAyLCA3OTYsIDc2MywgNzYyLCA3NjAsIDc2NywgNzExLCA3MTAsIDcwOCwgNzA2LAoJICAgICAgICAyMzc3LCA3MTgsIDcxNSwgMTcxMCwgMjU0NCwgOTE3LCA5MTUsIDI2ODEsIDE2MjcsIDE1OTcsIDE1OTUsIDIzMjUsIDE3NjksIDE3NDksIDE3NDcsIDE0OTksIDE0MzgsIDE0MzUsIDIyMDQsCgkgICAgICAgIDEzOTAsIDEzODgsIDEzODUsIDEzOTUsIDIxNjksIDIxNjcsIDE3MDQsIDE2NjUsIDE2NjIsIDE2MjUsIDE2MjMsIDE2MjAsIDE3NzAsIDEzMjksIDEyODIsIDEyNzksIDIxMDksIDEyMTQsIDEyMDcsCgkgICAgICAgIDEyMjIsIDIwNjgsIDIwNjUsIDExNDksIDExNDcsIDExNDQsIDExNDEsIDE0NiwgMTE1NywgMTE1NCwgMjAxMywgMjAxMSwgMjAwOCwgMjAxNSwgMTU3OSwgMTU0OSwgMTU0NiwgMTQ5NSwgMTQ4NywKCSAgICAgICAgMTQzMywgMTQzMSwgMTQyOCwgMTQyNSwgMzg4LCAxNDQwLCAyMjA1LCAxNzA1LCA2NTgsIDE2NjcsIDE2NjQsIDExMTksIDEwOTUsIDEwOTMsIDE5NzgsIDEwNTcsIDEwNTUsIDEwNTIsIDEwNjIsCgkgICAgICAgIDE5NjIsIDE5NjAsIDEwMDUsIDEwMDMsIDEwMDAsIDk5NywgMzgsIDEwMTMsIDEwMTAsIDE5MzIsIDE5MzAsIDE5MjcsIDE5MzQsIDk0MSwgOTM5LCA5MzYsIDkzMywgNiwgOTMwLCAzLCA5NTEsCgkgICAgICAgIDk0OCwgOTQ0LCAxODg5LCAxODg3LCAxODg0LCAxODgxLCA5NTksIDE4OTMsIDE4OTEsIDM1LCAxMzc3LCAxMzYwLCAxMzU4LCAxMzI3LCAxMzI1LCAxMzIyLCAxMzMxLCAxMjc3LCAxMjc1LAoJICAgICAgICAxMjcyLCAxMjY5LCAyMzUsIDEyODQsIDIxMTAsIDEyMDUsIDEyMDQsIDEyMDEsIDExOTgsIDE4MiwgMTE5NSwgMTc5LCAxMjEzLCAyMDcwLCAyMDY3LCAxNTgwLCA1MDEsIDE1NTEsIDE1NDgsCgkgICAgICAgIDQ0MCwgNDM3LCAxNDk3LCAxNDk0LCAxNDkwLCAxNTAzLCA3NjEsIDcwOSwgNzA3LCAxNzA2LCA5MTMsIDkxMiwgMjE5OCwgMTM4NiwgMjE2NCwgMjE2MSwgMTYyMSwgMTc2NiwgMjEwMywgMTIwOCwKCSAgICAgICAgMjA1OCwgMjA1NCwgMTE0NSwgMTE0MiwgMjAwNSwgMjAwMiwgMTk5OSwgMjAwOSwgMTQ4OCwgMTQyOSwgMTQyNiwgMjIwMCwgMTY5OCwgMTY1OSwgMTY1NiwgMTk3NSwgMTA1MywgMTk1NywgMTk1NCwKCSAgICAgICAgMTAwMSwgOTk4LCAxOTI0LCAxOTIxLCAxOTE4LCAxOTI4LCA5MzcsIDkzNCwgOTMxLCAxODc5LCAxODc2LCAxODczLCAxODcwLCA5NDUsIDE4ODUsIDE4ODIsIDEzMjMsIDEyNzMsIDEyNzAsCgkgICAgICAgIDIxMDUsIDEyMDIsIDExOTksIDExOTYsIDEyMTEsIDIwNjEsIDIwNTcsIDE1NzYsIDE1NDMsIDE1NDAsIDE0ODQsIDE0ODEsIDE0NzgsIDE0OTEsIDE3MDAKCSAgICBdKTsKCSAgICByZXR1cm4gUERGNDE3Q29tbW9uOwoJfSgpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IFBERjQxN0NvbW1vbjsKCgl9KTsKCgl2YXIgUERGNDE3RGV0ZWN0b3JSZXN1bHRfMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCS8qCgkqIENvcHlyaWdodCAyMDA3IFpYaW5nIGF1dGhvcnMKCSoKCSogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkqCgkqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkqCgkqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkqLwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCS8vIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsKCS8qKgoJICogQGF1dGhvciBHdWVudGhlciBHcmF1CgkgKi8KCXZhciBQREY0MTdEZXRlY3RvclJlc3VsdCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBQREY0MTdEZXRlY3RvclJlc3VsdChiaXRzLCBwb2ludHMpIHsKCSAgICAgICAgdGhpcy5iaXRzID0gYml0czsKCSAgICAgICAgdGhpcy5wb2ludHMgPSBwb2ludHM7CgkgICAgfQoJICAgIFBERjQxN0RldGVjdG9yUmVzdWx0LnByb3RvdHlwZS5nZXRCaXRzID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5iaXRzOwoJICAgIH07CgkgICAgUERGNDE3RGV0ZWN0b3JSZXN1bHQucHJvdG90eXBlLmdldFBvaW50cyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMucG9pbnRzOwoJICAgIH07CgkgICAgcmV0dXJuIFBERjQxN0RldGVjdG9yUmVzdWx0OwoJfSgpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IFBERjQxN0RldGVjdG9yUmVzdWx0OwoKCX0pOwoKCXZhciBEZXRlY3Rvcl8xJDMgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CgkvKgoJKiBDb3B5cmlnaHQgMjAwOSBaWGluZyBhdXRob3JzCgkqCgkqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJKgoJKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJKgoJKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJKi8KCXZhciBfX3ZhbHVlcyA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX3ZhbHVlcykgfHwgZnVuY3Rpb24obykgewoJICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gImZ1bmN0aW9uIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwOwoJICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pOwoJICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gIm51bWJlciIpIHJldHVybiB7CgkgICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7CgkgICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07CgkgICAgICAgIH0KCSAgICB9OwoJICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/ICJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLiIgOiAiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpOwoJfTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgkvLyBpbXBvcnQgY29tLmdvb2dsZS56eGluZy5Ob3RGb3VuZEV4Y2VwdGlvbjsKCS8vIGltcG9ydCBjb20uZ29vZ2xlLnp4aW5nLlJlc3VsdFBvaW50OwoKCgoKCS8vIGltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwoJLy8gaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CgkvLyBpbXBvcnQgamF2YS51dGlsLkxpc3Q7CgkvLyBpbXBvcnQgamF2YS51dGlsLk1hcDsKCS8qKgoJICogPHA+RW5jYXBzdWxhdGVzIGxvZ2ljIHRoYXQgY2FuIGRldGVjdCBhIFBERjQxNyBDb2RlIGluIGFuIGltYWdlLCBldmVuIGlmIHRoZQoJICogUERGNDE3IENvZGUgaXMgcm90YXRlZCBvciBza2V3ZWQsIG9yIHBhcnRpYWxseSBvYnNjdXJlZC48L3A+CgkgKgoJICogQGF1dGhvciBTSVRBIExhYiAoa2V2aW4ub3N1bGxpdmFuQHNpdGEuYWVybykKCSAqIEBhdXRob3IgZHN3aXRraW5AZ29vZ2xlLmNvbSAoRGFuaWVsIFN3aXRraW4pCgkgKiBAYXV0aG9yIEd1ZW50aGVyIEdyYXUKCSAqLwoJdmFyIERldGVjdG9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIGZ1bmN0aW9uIERldGVjdG9yKCkgewoJICAgIH0KCSAgICAvKioKCSAgICAgKiA8cD5EZXRlY3RzIGEgUERGNDE3IENvZGUgaW4gYW4gaW1hZ2UuIE9ubHkgY2hlY2tzIDAgYW5kIDE4MCBkZWdyZWUgcm90YXRpb25zLjwvcD4KCSAgICAgKgoJICAgICAqIEBwYXJhbSBpbWFnZSBiYXJjb2RlIGltYWdlIHRvIGRlY29kZQoJICAgICAqIEBwYXJhbSBoaW50cyBvcHRpb25hbCBoaW50cyB0byBkZXRlY3RvcgoJICAgICAqIEBwYXJhbSBtdWx0aXBsZSBpZiB0cnVlLCB0aGVuIHRoZSBpbWFnZSBpcyBzZWFyY2hlZCBmb3IgbXVsdGlwbGUgY29kZXMuIElmIGZhbHNlLCB0aGVuIGF0IG1vc3Qgb25lIGNvZGUgd2lsbAoJICAgICAqIGJlIGZvdW5kIGFuZCByZXR1cm5lZAoJICAgICAqIEByZXR1cm4ge0BsaW5rIFBERjQxN0RldGVjdG9yUmVzdWx0fSBlbmNhcHN1bGF0aW5nIHJlc3VsdHMgb2YgZGV0ZWN0aW5nIGEgUERGNDE3IGNvZGUKCSAgICAgKiBAdGhyb3dzIE5vdEZvdW5kRXhjZXB0aW9uIGlmIG5vIFBERjQxNyBDb2RlIGNhbiBiZSBmb3VuZAoJICAgICAqLwoJICAgIERldGVjdG9yLmRldGVjdE11bHRpcGxlID0gZnVuY3Rpb24gKGltYWdlLCBoaW50cywgbXVsdGlwbGUpIHsKCSAgICAgICAgLy8gVE9ETyBkZXRlY3Rpb24gaW1wcm92ZW1lbnQsIHRyeUhhcmRlciBjb3VsZCB0cnkgc2V2ZXJhbCBkaWZmZXJlbnQgbHVtaW5hbmNlIHRocmVzaG9sZHMvYmxhY2twb2ludHMgb3IgZXZlbgoJICAgICAgICAvLyBkaWZmZXJlbnQgYmluYXJpemVycwoJICAgICAgICAvLyBib29sZWFuIHRyeUhhcmRlciA9IGhpbnRzICE9IG51bGwgJiYgaGludHMuY29udGFpbnNLZXkoRGVjb2RlSGludFR5cGUuVFJZX0hBUkRFUik7CgkgICAgICAgIHZhciBiaXRNYXRyaXggPSBpbWFnZS5nZXRCbGFja01hdHJpeCgpOwoJICAgICAgICB2YXIgYmFyY29kZUNvb3JkaW5hdGVzID0gRGV0ZWN0b3IuZGV0ZWN0KG11bHRpcGxlLCBiaXRNYXRyaXgpOwoJICAgICAgICBpZiAoIWJhcmNvZGVDb29yZGluYXRlcy5sZW5ndGgpIHsKCSAgICAgICAgICAgIGJpdE1hdHJpeCA9IGJpdE1hdHJpeC5jbG9uZSgpOwoJICAgICAgICAgICAgYml0TWF0cml4LnJvdGF0ZTE4MCgpOwoJICAgICAgICAgICAgYmFyY29kZUNvb3JkaW5hdGVzID0gRGV0ZWN0b3IuZGV0ZWN0KG11bHRpcGxlLCBiaXRNYXRyaXgpOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBuZXcgUERGNDE3RGV0ZWN0b3JSZXN1bHRfMS5kZWZhdWx0KGJpdE1hdHJpeCwgYmFyY29kZUNvb3JkaW5hdGVzKTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIERldGVjdHMgUERGNDE3IGNvZGVzIGluIGFuIGltYWdlLiBPbmx5IGNoZWNrcyAwIGRlZ3JlZSByb3RhdGlvbgoJICAgICAqIEBwYXJhbSBtdWx0aXBsZSBpZiB0cnVlLCB0aGVuIHRoZSBpbWFnZSBpcyBzZWFyY2hlZCBmb3IgbXVsdGlwbGUgY29kZXMuIElmIGZhbHNlLCB0aGVuIGF0IG1vc3Qgb25lIGNvZGUgd2lsbAoJICAgICAqIGJlIGZvdW5kIGFuZCByZXR1cm5lZAoJICAgICAqIEBwYXJhbSBiaXRNYXRyaXggYml0IG1hdHJpeCB0byBkZXRlY3QgYmFyY29kZXMgaW4KCSAgICAgKiBAcmV0dXJuIExpc3Qgb2YgUmVzdWx0UG9pbnQgYXJyYXlzIGNvbnRhaW5pbmcgdGhlIGNvb3JkaW5hdGVzIG9mIGZvdW5kIGJhcmNvZGVzCgkgICAgICovCgkgICAgRGV0ZWN0b3IuZGV0ZWN0ID0gZnVuY3Rpb24gKG11bHRpcGxlLCBiaXRNYXRyaXgpIHsKCSAgICAgICAgdmFyIGVfMSwgX2E7CgkgICAgICAgIHZhciBiYXJjb2RlQ29vcmRpbmF0ZXMgPSBuZXcgQXJyYXkoKTsKCSAgICAgICAgdmFyIHJvdyA9IDA7CgkgICAgICAgIHZhciBjb2x1bW4gPSAwOwoJICAgICAgICB2YXIgZm91bmRCYXJjb2RlSW5Sb3cgPSBmYWxzZTsKCSAgICAgICAgd2hpbGUgKHJvdyA8IGJpdE1hdHJpeC5nZXRIZWlnaHQoKSkgewoJICAgICAgICAgICAgdmFyIHZlcnRpY2VzID0gRGV0ZWN0b3IuZmluZFZlcnRpY2VzKGJpdE1hdHJpeCwgcm93LCBjb2x1bW4pOwoJICAgICAgICAgICAgaWYgKHZlcnRpY2VzWzBdID09IG51bGwgJiYgdmVydGljZXNbM10gPT0gbnVsbCkgewoJICAgICAgICAgICAgICAgIGlmICghZm91bmRCYXJjb2RlSW5Sb3cpIHsKCSAgICAgICAgICAgICAgICAgICAgLy8gd2UgZGlkbid0IGZpbmQgYW55IGJhcmNvZGUgc28gdGhhdCdzIHRoZSBlbmQgb2Ygc2VhcmNoaW5nCgkgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAvLyB3ZSBkaWRuJ3QgZmluZCBhIGJhcmNvZGUgc3RhcnRpbmcgYXQgdGhlIGdpdmVuIGNvbHVtbiBhbmQgcm93LiBUcnkgYWdhaW4gZnJvbSB0aGUgZmlyc3QgY29sdW1uIGFuZCBzbGlnaHRseQoJICAgICAgICAgICAgICAgIC8vIGJlbG93IHRoZSBsb3dlc3QgYmFyY29kZSB3ZSBmb3VuZCBzbyBmYXIuCgkgICAgICAgICAgICAgICAgZm91bmRCYXJjb2RlSW5Sb3cgPSBmYWxzZTsKCSAgICAgICAgICAgICAgICBjb2x1bW4gPSAwOwoJICAgICAgICAgICAgICAgIHRyeSB7CgkgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGJhcmNvZGVDb29yZGluYXRlc18xID0gKGVfMSA9IHZvaWQgMCwgX192YWx1ZXMoYmFyY29kZUNvb3JkaW5hdGVzKSksIGJhcmNvZGVDb29yZGluYXRlc18xXzEgPSBiYXJjb2RlQ29vcmRpbmF0ZXNfMS5uZXh0KCk7ICFiYXJjb2RlQ29vcmRpbmF0ZXNfMV8xLmRvbmU7IGJhcmNvZGVDb29yZGluYXRlc18xXzEgPSBiYXJjb2RlQ29vcmRpbmF0ZXNfMS5uZXh0KCkpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiYXJjb2RlQ29vcmRpbmF0ZSA9IGJhcmNvZGVDb29yZGluYXRlc18xXzEudmFsdWU7CgkgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmFyY29kZUNvb3JkaW5hdGVbMV0gIT0gbnVsbCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdyA9IE1hdGgudHJ1bmMoTWF0aC5tYXgocm93LCBiYXJjb2RlQ29vcmRpbmF0ZVsxXS5nZXRZKCkpKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiYXJjb2RlQ29vcmRpbmF0ZVszXSAhPSBudWxsKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93ID0gTWF0aC5tYXgocm93LCBNYXRoLnRydW5jKGJhcmNvZGVDb29yZGluYXRlWzNdLmdldFkoKSkpOwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9CgkgICAgICAgICAgICAgICAgZmluYWxseSB7CgkgICAgICAgICAgICAgICAgICAgIHRyeSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmFyY29kZUNvb3JkaW5hdGVzXzFfMSAmJiAhYmFyY29kZUNvb3JkaW5hdGVzXzFfMS5kb25lICYmIChfYSA9IGJhcmNvZGVDb29yZGluYXRlc18xLnJldHVybikpIF9hLmNhbGwoYmFyY29kZUNvb3JkaW5hdGVzXzEpOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH0KCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgcm93ICs9IERldGVjdG9yLlJPV19TVEVQOwoJICAgICAgICAgICAgICAgIGNvbnRpbnVlOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZm91bmRCYXJjb2RlSW5Sb3cgPSB0cnVlOwoJICAgICAgICAgICAgYmFyY29kZUNvb3JkaW5hdGVzLnB1c2godmVydGljZXMpOwoJICAgICAgICAgICAgaWYgKCFtdWx0aXBsZSkgewoJICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgLy8gaWYgd2UgZGlkbid0IGZpbmQgYSByaWdodCByb3cgaW5kaWNhdG9yIGNvbHVtbiwgdGhlbiBjb250aW51ZSB0aGUgc2VhcmNoIGZvciB0aGUgbmV4dCBiYXJjb2RlIGFmdGVyIHRoZQoJICAgICAgICAgICAgLy8gc3RhcnQgcGF0dGVybiBvZiB0aGUgYmFyY29kZSBqdXN0IGZvdW5kLgoJICAgICAgICAgICAgaWYgKHZlcnRpY2VzWzJdICE9IG51bGwpIHsKCSAgICAgICAgICAgICAgICBjb2x1bW4gPSBNYXRoLnRydW5jKHZlcnRpY2VzWzJdLmdldFgoKSk7CgkgICAgICAgICAgICAgICAgcm93ID0gTWF0aC50cnVuYyh2ZXJ0aWNlc1syXS5nZXRZKCkpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgY29sdW1uID0gTWF0aC50cnVuYyh2ZXJ0aWNlc1s0XS5nZXRYKCkpOwoJICAgICAgICAgICAgICAgIHJvdyA9IE1hdGgudHJ1bmModmVydGljZXNbNF0uZ2V0WSgpKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gYmFyY29kZUNvb3JkaW5hdGVzOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogTG9jYXRlIHRoZSB2ZXJ0aWNlcyBhbmQgdGhlIGNvZGV3b3JkcyBhcmVhIG9mIGEgYmxhY2sgYmxvYiB1c2luZyB0aGUgU3RhcnQKCSAgICAgKiBhbmQgU3RvcCBwYXR0ZXJucyBhcyBsb2NhdG9ycy4KCSAgICAgKgoJICAgICAqIEBwYXJhbSBtYXRyaXggdGhlIHNjYW5uZWQgYmFyY29kZSBpbWFnZS4KCSAgICAgKiBAcmV0dXJuIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIHZlcnRpY2VzOgoJICAgICAqICAgICAgICAgICB2ZXJ0aWNlc1swXSB4LCB5IHRvcCBsZWZ0IGJhcmNvZGUKCSAgICAgKiAgICAgICAgICAgdmVydGljZXNbMV0geCwgeSBib3R0b20gbGVmdCBiYXJjb2RlCgkgICAgICogICAgICAgICAgIHZlcnRpY2VzWzJdIHgsIHkgdG9wIHJpZ2h0IGJhcmNvZGUKCSAgICAgKiAgICAgICAgICAgdmVydGljZXNbM10geCwgeSBib3R0b20gcmlnaHQgYmFyY29kZQoJICAgICAqICAgICAgICAgICB2ZXJ0aWNlc1s0XSB4LCB5IHRvcCBsZWZ0IGNvZGV3b3JkIGFyZWEKCSAgICAgKiAgICAgICAgICAgdmVydGljZXNbNV0geCwgeSBib3R0b20gbGVmdCBjb2Rld29yZCBhcmVhCgkgICAgICogICAgICAgICAgIHZlcnRpY2VzWzZdIHgsIHkgdG9wIHJpZ2h0IGNvZGV3b3JkIGFyZWEKCSAgICAgKiAgICAgICAgICAgdmVydGljZXNbN10geCwgeSBib3R0b20gcmlnaHQgY29kZXdvcmQgYXJlYQoJICAgICAqLwoJICAgIERldGVjdG9yLmZpbmRWZXJ0aWNlcyA9IGZ1bmN0aW9uIChtYXRyaXgsIHN0YXJ0Um93LCBzdGFydENvbHVtbikgewoJICAgICAgICB2YXIgaGVpZ2h0ID0gbWF0cml4LmdldEhlaWdodCgpOwoJICAgICAgICB2YXIgd2lkdGggPSBtYXRyaXguZ2V0V2lkdGgoKTsKCSAgICAgICAgLy8gY29uc3QgcmVzdWx0ID0gbmV3IFJlc3VsdFBvaW50WzhdOwoJICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IEFycmF5KDgpOwoJICAgICAgICBEZXRlY3Rvci5jb3B5VG9SZXN1bHQocmVzdWx0LCBEZXRlY3Rvci5maW5kUm93c1dpdGhQYXR0ZXJuKG1hdHJpeCwgaGVpZ2h0LCB3aWR0aCwgc3RhcnRSb3csIHN0YXJ0Q29sdW1uLCBEZXRlY3Rvci5TVEFSVF9QQVRURVJOKSwgRGV0ZWN0b3IuSU5ERVhFU19TVEFSVF9QQVRURVJOKTsKCSAgICAgICAgaWYgKHJlc3VsdFs0XSAhPSBudWxsKSB7CgkgICAgICAgICAgICBzdGFydENvbHVtbiA9IE1hdGgudHJ1bmMocmVzdWx0WzRdLmdldFgoKSk7CgkgICAgICAgICAgICBzdGFydFJvdyA9IE1hdGgudHJ1bmMocmVzdWx0WzRdLmdldFkoKSk7CgkgICAgICAgIH0KCSAgICAgICAgRGV0ZWN0b3IuY29weVRvUmVzdWx0KHJlc3VsdCwgRGV0ZWN0b3IuZmluZFJvd3NXaXRoUGF0dGVybihtYXRyaXgsIGhlaWdodCwgd2lkdGgsIHN0YXJ0Um93LCBzdGFydENvbHVtbiwgRGV0ZWN0b3IuU1RPUF9QQVRURVJOKSwgRGV0ZWN0b3IuSU5ERVhFU19TVE9QX1BBVFRFUk4pOwoJICAgICAgICByZXR1cm4gcmVzdWx0OwoJICAgIH07CgkgICAgRGV0ZWN0b3IuY29weVRvUmVzdWx0ID0gZnVuY3Rpb24gKHJlc3VsdCwgdG1wUmVzdWx0LCBkZXN0aW5hdGlvbkluZGV4ZXMpIHsKCSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZXN0aW5hdGlvbkluZGV4ZXMubGVuZ3RoOyBpKyspIHsKCSAgICAgICAgICAgIHJlc3VsdFtkZXN0aW5hdGlvbkluZGV4ZXNbaV1dID0gdG1wUmVzdWx0W2ldOwoJICAgICAgICB9CgkgICAgfTsKCSAgICBEZXRlY3Rvci5maW5kUm93c1dpdGhQYXR0ZXJuID0gZnVuY3Rpb24gKG1hdHJpeCwgaGVpZ2h0LCB3aWR0aCwgc3RhcnRSb3csIHN0YXJ0Q29sdW1uLCBwYXR0ZXJuKSB7CgkgICAgICAgIC8vIGNvbnN0IHJlc3VsdCA9IG5ldyBSZXN1bHRQb2ludFs0XTsKCSAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBBcnJheSg0KTsKCSAgICAgICAgdmFyIGZvdW5kID0gZmFsc2U7CgkgICAgICAgIHZhciBjb3VudGVycyA9IG5ldyBJbnQzMkFycmF5KHBhdHRlcm4ubGVuZ3RoKTsKCSAgICAgICAgZm9yICg7IHN0YXJ0Um93IDwgaGVpZ2h0OyBzdGFydFJvdyArPSBEZXRlY3Rvci5ST1dfU1RFUCkgewoJICAgICAgICAgICAgdmFyIGxvYyA9IERldGVjdG9yLmZpbmRHdWFyZFBhdHRlcm4obWF0cml4LCBzdGFydENvbHVtbiwgc3RhcnRSb3csIHdpZHRoLCBmYWxzZSwgcGF0dGVybiwgY291bnRlcnMpOwoJICAgICAgICAgICAgaWYgKGxvYyAhPSBudWxsKSB7CgkgICAgICAgICAgICAgICAgd2hpbGUgKHN0YXJ0Um93ID4gMCkgewoJICAgICAgICAgICAgICAgICAgICB2YXIgcHJldmlvdXNSb3dMb2MgPSBEZXRlY3Rvci5maW5kR3VhcmRQYXR0ZXJuKG1hdHJpeCwgc3RhcnRDb2x1bW4sIC0tc3RhcnRSb3csIHdpZHRoLCBmYWxzZSwgcGF0dGVybiwgY291bnRlcnMpOwoJICAgICAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNSb3dMb2MgIT0gbnVsbCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgbG9jID0gcHJldmlvdXNSb3dMb2M7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFJvdysrOwoJICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgcmVzdWx0WzBdID0gbmV3IFJlc3VsdFBvaW50XzEuZGVmYXVsdChsb2NbMF0sIHN0YXJ0Um93KTsKCSAgICAgICAgICAgICAgICByZXN1bHRbMV0gPSBuZXcgUmVzdWx0UG9pbnRfMS5kZWZhdWx0KGxvY1sxXSwgc3RhcnRSb3cpOwoJICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKCSAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICB2YXIgc3RvcFJvdyA9IHN0YXJ0Um93ICsgMTsKCSAgICAgICAgLy8gTGFzdCByb3cgb2YgdGhlIGN1cnJlbnQgc3ltYm9sIHRoYXQgY29udGFpbnMgcGF0dGVybgoJICAgICAgICBpZiAoZm91bmQpIHsKCSAgICAgICAgICAgIHZhciBza2lwcGVkUm93Q291bnQgPSAwOwoJICAgICAgICAgICAgdmFyIHByZXZpb3VzUm93TG9jID0gSW50MzJBcnJheS5mcm9tKFtNYXRoLnRydW5jKHJlc3VsdFswXS5nZXRYKCkpLCBNYXRoLnRydW5jKHJlc3VsdFsxXS5nZXRYKCkpXSk7CgkgICAgICAgICAgICBmb3IgKDsgc3RvcFJvdyA8IGhlaWdodDsgc3RvcFJvdysrKSB7CgkgICAgICAgICAgICAgICAgdmFyIGxvYyA9IERldGVjdG9yLmZpbmRHdWFyZFBhdHRlcm4obWF0cml4LCBwcmV2aW91c1Jvd0xvY1swXSwgc3RvcFJvdywgd2lkdGgsIGZhbHNlLCBwYXR0ZXJuLCBjb3VudGVycyk7CgkgICAgICAgICAgICAgICAgLy8gYSBmb3VuZCBwYXR0ZXJuIGlzIG9ubHkgY29uc2lkZXJlZCB0byBiZWxvbmcgdG8gdGhlIHNhbWUgYmFyY29kZSBpZiB0aGUgc3RhcnQgYW5kIGVuZCBwb3NpdGlvbnMKCSAgICAgICAgICAgICAgICAvLyBkb24ndCBkaWZmZXIgdG9vIG11Y2guIFBhdHRlcm4gZHJpZnQgc2hvdWxkIGJlIG5vdCBiaWdnZXIgdGhhbiB0d28gZm9yIGNvbnNlY3V0aXZlIHJvd3MuIFdpdGgKCSAgICAgICAgICAgICAgICAvLyBhIGhpZ2hlciBudW1iZXIgb2Ygc2tpcHBlZCByb3dzIGRyaWZ0IGNvdWxkIGJlIGxhcmdlci4gVG8ga2VlcCBpdCBzaW1wbGUgZm9yIG5vdywgd2UgYWxsb3cgYSBzbGlnaHRseQoJICAgICAgICAgICAgICAgIC8vIGxhcmdlciBkcmlmdCBhbmQgZG9uJ3QgY2hlY2sgZm9yIHNraXBwZWQgcm93cy4KCSAgICAgICAgICAgICAgICBpZiAobG9jICE9IG51bGwgJiYKCSAgICAgICAgICAgICAgICAgICAgTWF0aC5hYnMocHJldmlvdXNSb3dMb2NbMF0gLSBsb2NbMF0pIDwgRGV0ZWN0b3IuTUFYX1BBVFRFUk5fRFJJRlQgJiYKCSAgICAgICAgICAgICAgICAgICAgTWF0aC5hYnMocHJldmlvdXNSb3dMb2NbMV0gLSBsb2NbMV0pIDwgRGV0ZWN0b3IuTUFYX1BBVFRFUk5fRFJJRlQpIHsKCSAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNSb3dMb2MgPSBsb2M7CgkgICAgICAgICAgICAgICAgICAgIHNraXBwZWRSb3dDb3VudCA9IDA7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgICAgICBpZiAoc2tpcHBlZFJvd0NvdW50ID4gRGV0ZWN0b3IuU0tJUFBFRF9ST1dfQ09VTlRfTUFYKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHNraXBwZWRSb3dDb3VudCsrOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgc3RvcFJvdyAtPSBza2lwcGVkUm93Q291bnQgKyAxOwoJICAgICAgICAgICAgcmVzdWx0WzJdID0gbmV3IFJlc3VsdFBvaW50XzEuZGVmYXVsdChwcmV2aW91c1Jvd0xvY1swXSwgc3RvcFJvdyk7CgkgICAgICAgICAgICByZXN1bHRbM10gPSBuZXcgUmVzdWx0UG9pbnRfMS5kZWZhdWx0KHByZXZpb3VzUm93TG9jWzFdLCBzdG9wUm93KTsKCSAgICAgICAgfQoJICAgICAgICBpZiAoc3RvcFJvdyAtIHN0YXJ0Um93IDwgRGV0ZWN0b3IuQkFSQ09ERV9NSU5fSEVJR0hUKSB7CgkgICAgICAgICAgICBBcnJheXNfMS5kZWZhdWx0LmZpbGwocmVzdWx0LCBudWxsKTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gcmVzdWx0OwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQHBhcmFtIG1hdHJpeCByb3cgb2YgYmxhY2svd2hpdGUgdmFsdWVzIHRvIHNlYXJjaAoJICAgICAqIEBwYXJhbSBjb2x1bW4geCBwb3NpdGlvbiB0byBzdGFydCBzZWFyY2gKCSAgICAgKiBAcGFyYW0gcm93IHkgcG9zaXRpb24gdG8gc3RhcnQgc2VhcmNoCgkgICAgICogQHBhcmFtIHdpZHRoIHRoZSBudW1iZXIgb2YgcGl4ZWxzIHRvIHNlYXJjaCBvbiB0aGlzIHJvdwoJICAgICAqIEBwYXJhbSBwYXR0ZXJuIHBhdHRlcm4gb2YgY291bnRzIG9mIG51bWJlciBvZiBibGFjayBhbmQgd2hpdGUgcGl4ZWxzIHRoYXQgYXJlCgkgICAgICogICAgICAgICAgICAgICAgIGJlaW5nIHNlYXJjaGVkIGZvciBhcyBhIHBhdHRlcm4KCSAgICAgKiBAcGFyYW0gY291bnRlcnMgYXJyYXkgb2YgY291bnRlcnMsIGFzIGxvbmcgYXMgcGF0dGVybiwgdG8gcmUtdXNlCgkgICAgICogQHJldHVybiBzdGFydC9lbmQgaG9yaXpvbnRhbCBvZmZzZXQgb2YgZ3VhcmQgcGF0dGVybiwgYXMgYW4gYXJyYXkgb2YgdHdvIGludHMuCgkgICAgICovCgkgICAgRGV0ZWN0b3IuZmluZEd1YXJkUGF0dGVybiA9IGZ1bmN0aW9uIChtYXRyaXgsIGNvbHVtbiwgcm93LCB3aWR0aCwgd2hpdGVGaXJzdCwgcGF0dGVybiwgY291bnRlcnMpIHsKCSAgICAgICAgQXJyYXlzXzEuZGVmYXVsdC5maWxsV2l0aGluKGNvdW50ZXJzLCAwLCBjb3VudGVycy5sZW5ndGgsIDApOwoJICAgICAgICB2YXIgcGF0dGVyblN0YXJ0ID0gY29sdW1uOwoJICAgICAgICB2YXIgcGl4ZWxEcmlmdCA9IDA7CgkgICAgICAgIC8vIGlmIHRoZXJlIGFyZSBibGFjayBwaXhlbHMgbGVmdCBvZiB0aGUgY3VycmVudCBwaXhlbCBzaGlmdCB0byB0aGUgbGVmdCwgYnV0IG9ubHkgZm9yIE1BWF9QSVhFTF9EUklGVCBwaXhlbHMKCSAgICAgICAgd2hpbGUgKG1hdHJpeC5nZXQocGF0dGVyblN0YXJ0LCByb3cpICYmIHBhdHRlcm5TdGFydCA+IDAgJiYgcGl4ZWxEcmlmdCsrIDwgRGV0ZWN0b3IuTUFYX1BJWEVMX0RSSUZUKSB7CgkgICAgICAgICAgICBwYXR0ZXJuU3RhcnQtLTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgeCA9IHBhdHRlcm5TdGFydDsKCSAgICAgICAgdmFyIGNvdW50ZXJQb3NpdGlvbiA9IDA7CgkgICAgICAgIHZhciBwYXR0ZXJuTGVuZ3RoID0gcGF0dGVybi5sZW5ndGg7CgkgICAgICAgIGZvciAodmFyIGlzV2hpdGUgPSB3aGl0ZUZpcnN0OyB4IDwgd2lkdGg7IHgrKykgewoJICAgICAgICAgICAgdmFyIHBpeGVsID0gbWF0cml4LmdldCh4LCByb3cpOwoJICAgICAgICAgICAgaWYgKHBpeGVsICE9PSBpc1doaXRlKSB7CgkgICAgICAgICAgICAgICAgY291bnRlcnNbY291bnRlclBvc2l0aW9uXSsrOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgaWYgKGNvdW50ZXJQb3NpdGlvbiA9PT0gcGF0dGVybkxlbmd0aCAtIDEpIHsKCSAgICAgICAgICAgICAgICAgICAgaWYgKERldGVjdG9yLnBhdHRlcm5NYXRjaFZhcmlhbmNlKGNvdW50ZXJzLCBwYXR0ZXJuLCBEZXRlY3Rvci5NQVhfSU5ESVZJRFVBTF9WQVJJQU5DRSkgPCBEZXRlY3Rvci5NQVhfQVZHX1ZBUklBTkNFKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEludDMyQXJyYXkoW3BhdHRlcm5TdGFydCwgeF0pOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIHBhdHRlcm5TdGFydCArPSBjb3VudGVyc1swXSArIGNvdW50ZXJzWzFdOwoJICAgICAgICAgICAgICAgICAgICBTeXN0ZW1fMS5kZWZhdWx0LmFycmF5Y29weShjb3VudGVycywgMiwgY291bnRlcnMsIDAsIGNvdW50ZXJQb3NpdGlvbiAtIDEpOwoJICAgICAgICAgICAgICAgICAgICBjb3VudGVyc1tjb3VudGVyUG9zaXRpb24gLSAxXSA9IDA7CgkgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJzW2NvdW50ZXJQb3NpdGlvbl0gPSAwOwoJICAgICAgICAgICAgICAgICAgICBjb3VudGVyUG9zaXRpb24tLTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJQb3NpdGlvbisrOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBjb3VudGVyc1tjb3VudGVyUG9zaXRpb25dID0gMTsKCSAgICAgICAgICAgICAgICBpc1doaXRlID0gIWlzV2hpdGU7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgaWYgKGNvdW50ZXJQb3NpdGlvbiA9PT0gcGF0dGVybkxlbmd0aCAtIDEgJiYKCSAgICAgICAgICAgIERldGVjdG9yLnBhdHRlcm5NYXRjaFZhcmlhbmNlKGNvdW50ZXJzLCBwYXR0ZXJuLCBEZXRlY3Rvci5NQVhfSU5ESVZJRFVBTF9WQVJJQU5DRSkgPCBEZXRlY3Rvci5NQVhfQVZHX1ZBUklBTkNFKSB7CgkgICAgICAgICAgICByZXR1cm4gbmV3IEludDMyQXJyYXkoW3BhdHRlcm5TdGFydCwgeCAtIDFdKTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gbnVsbDsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIERldGVybWluZXMgaG93IGNsb3NlbHkgYSBzZXQgb2Ygb2JzZXJ2ZWQgY291bnRzIG9mIHJ1bnMgb2YgYmxhY2svd2hpdGUKCSAgICAgKiB2YWx1ZXMgbWF0Y2hlcyBhIGdpdmVuIHRhcmdldCBwYXR0ZXJuLiBUaGlzIGlzIHJlcG9ydGVkIGFzIHRoZSByYXRpbyBvZgoJICAgICAqIHRoZSB0b3RhbCB2YXJpYW5jZSBmcm9tIHRoZSBleHBlY3RlZCBwYXR0ZXJuIHByb3BvcnRpb25zIGFjcm9zcyBhbGwKCSAgICAgKiBwYXR0ZXJuIGVsZW1lbnRzLCB0byB0aGUgbGVuZ3RoIG9mIHRoZSBwYXR0ZXJuLgoJICAgICAqCgkgICAgICogQHBhcmFtIGNvdW50ZXJzIG9ic2VydmVkIGNvdW50ZXJzCgkgICAgICogQHBhcmFtIHBhdHRlcm4gZXhwZWN0ZWQgcGF0dGVybgoJICAgICAqIEBwYXJhbSBtYXhJbmRpdmlkdWFsVmFyaWFuY2UgVGhlIG1vc3QgYW55IGNvdW50ZXIgY2FuIGRpZmZlciBiZWZvcmUgd2UgZ2l2ZSB1cAoJICAgICAqIEByZXR1cm4gcmF0aW8gb2YgdG90YWwgdmFyaWFuY2UgYmV0d2VlbiBjb3VudGVycyBhbmQgcGF0dGVybiBjb21wYXJlZCB0byB0b3RhbCBwYXR0ZXJuIHNpemUKCSAgICAgKi8KCSAgICBEZXRlY3Rvci5wYXR0ZXJuTWF0Y2hWYXJpYW5jZSA9IGZ1bmN0aW9uIChjb3VudGVycywgcGF0dGVybiwgbWF4SW5kaXZpZHVhbFZhcmlhbmNlKSB7CgkgICAgICAgIHZhciBudW1Db3VudGVycyA9IGNvdW50ZXJzLmxlbmd0aDsKCSAgICAgICAgdmFyIHRvdGFsID0gMDsKCSAgICAgICAgdmFyIHBhdHRlcm5MZW5ndGggPSAwOwoJICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bUNvdW50ZXJzOyBpKyspIHsKCSAgICAgICAgICAgIHRvdGFsICs9IGNvdW50ZXJzW2ldOwoJICAgICAgICAgICAgcGF0dGVybkxlbmd0aCArPSBwYXR0ZXJuW2ldOwoJICAgICAgICB9CgkgICAgICAgIGlmICh0b3RhbCA8IHBhdHRlcm5MZW5ndGgpIHsKCSAgICAgICAgICAgIC8vIElmIHdlIGRvbid0IGV2ZW4gaGF2ZSBvbmUgcGl4ZWwgcGVyIHVuaXQgb2YgYmFyIHdpZHRoLCBhc3N1bWUgdGhpcwoJICAgICAgICAgICAgLy8gaXMgdG9vIHNtYWxsIHRvIHJlbGlhYmx5IG1hdGNoLCBzbyBmYWlsOgoJICAgICAgICAgICAgcmV0dXJuIC8qRmxvYXQuUE9TSVRJVkVfSU5GSU5JVFkqLyBJbmZpbml0eTsKCSAgICAgICAgfQoJICAgICAgICAvLyBXZSdyZSBnb2luZyB0byBmYWtlIGZsb2F0aW5nLXBvaW50IG1hdGggaW4gaW50ZWdlcnMuIFdlIGp1c3QgbmVlZCB0byB1c2UgbW9yZSBiaXRzLgoJICAgICAgICAvLyBTY2FsZSB1cCBwYXR0ZXJuTGVuZ3RoIHNvIHRoYXQgaW50ZXJtZWRpYXRlIHZhbHVlcyBiZWxvdyBsaWtlIHNjYWxlZENvdW50ZXIgd2lsbCBoYXZlCgkgICAgICAgIC8vIG1vcmUgInNpZ25pZmljYW50IGRpZ2l0cyIuCgkgICAgICAgIHZhciB1bml0QmFyV2lkdGggPSB0b3RhbCAvIHBhdHRlcm5MZW5ndGg7CgkgICAgICAgIG1heEluZGl2aWR1YWxWYXJpYW5jZSAqPSB1bml0QmFyV2lkdGg7CgkgICAgICAgIHZhciB0b3RhbFZhcmlhbmNlID0gMC4wOwoJICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IG51bUNvdW50ZXJzOyB4KyspIHsKCSAgICAgICAgICAgIHZhciBjb3VudGVyID0gY291bnRlcnNbeF07CgkgICAgICAgICAgICB2YXIgc2NhbGVkUGF0dGVybiA9IHBhdHRlcm5beF0gKiB1bml0QmFyV2lkdGg7CgkgICAgICAgICAgICB2YXIgdmFyaWFuY2UgPSBjb3VudGVyID4gc2NhbGVkUGF0dGVybiA/IGNvdW50ZXIgLSBzY2FsZWRQYXR0ZXJuIDogc2NhbGVkUGF0dGVybiAtIGNvdW50ZXI7CgkgICAgICAgICAgICBpZiAodmFyaWFuY2UgPiBtYXhJbmRpdmlkdWFsVmFyaWFuY2UpIHsKCSAgICAgICAgICAgICAgICByZXR1cm4gLypGbG9hdC5QT1NJVElWRV9JTkZJTklUWSovIEluZmluaXR5OwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgdG90YWxWYXJpYW5jZSArPSB2YXJpYW5jZTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gdG90YWxWYXJpYW5jZSAvIHRvdGFsOwoJICAgIH07CgkgICAgRGV0ZWN0b3IuSU5ERVhFU19TVEFSVF9QQVRURVJOID0gSW50MzJBcnJheS5mcm9tKFswLCA0LCAxLCA1XSk7CgkgICAgRGV0ZWN0b3IuSU5ERVhFU19TVE9QX1BBVFRFUk4gPSBJbnQzMkFycmF5LmZyb20oWzYsIDIsIDcsIDNdKTsKCSAgICBEZXRlY3Rvci5NQVhfQVZHX1ZBUklBTkNFID0gMC40MjsKCSAgICBEZXRlY3Rvci5NQVhfSU5ESVZJRFVBTF9WQVJJQU5DRSA9IDAuODsKCSAgICAvLyBCIFMgQiBTIEIgUyBCIFMgQmFyL1NwYWNlIHBhdHRlcm4KCSAgICAvLyAxMTExMTExMSAwIDEgMCAxIDAgMSAwMDAKCSAgICBEZXRlY3Rvci5TVEFSVF9QQVRURVJOID0gSW50MzJBcnJheS5mcm9tKFs4LCAxLCAxLCAxLCAxLCAxLCAxLCAzXSk7CgkgICAgLy8gMTExMTExMSAwIDEgMDAwIDEgMCAxIDAwIDEKCSAgICBEZXRlY3Rvci5TVE9QX1BBVFRFUk4gPSBJbnQzMkFycmF5LmZyb20oWzcsIDEsIDEsIDMsIDEsIDEsIDEsIDIsIDFdKTsKCSAgICBEZXRlY3Rvci5NQVhfUElYRUxfRFJJRlQgPSAzOwoJICAgIERldGVjdG9yLk1BWF9QQVRURVJOX0RSSUZUID0gNTsKCSAgICAvLyBpZiB3ZSBzZXQgdGhlIHZhbHVlIHRvbyBsb3csIHRoZW4gd2UgZG9uJ3QgZGV0ZWN0IHRoZSBjb3JyZWN0IGhlaWdodCBvZiB0aGUgYmFyIGlmIHRoZSBzdGFydCBwYXR0ZXJucyBhcmUgZGFtYWdlZC4KCSAgICAvLyBpZiB3ZSBzZXQgdGhlIHZhbHVlIHRvbyBoaWdoLCB0aGVuIHdlIG1pZ2h0IGRldGVjdCB0aGUgc3RhcnQgcGF0dGVybiBmcm9tIGEgbmVpZ2hib3IgYmFyY29kZS4KCSAgICBEZXRlY3Rvci5TS0lQUEVEX1JPV19DT1VOVF9NQVggPSAyNTsKCSAgICAvLyBBIFBERjQ3MSBiYXJjb2RlIHNob3VsZCBoYXZlIGF0IGxlYXN0IDMgcm93cywgd2l0aCBlYWNoIHJvdyBiZWluZyA+PSAzIHRpbWVzIHRoZSBtb2R1bGUgd2lkdGguIFRoZXJlZm9yZSBpdCBzaG91bGQgYmUgYXQgbGVhc3QKCSAgICAvLyA5IHBpeGVscyB0YWxsLiBUbyBiZSBjb25zZXJ2YXRpdmUsIHdlIHVzZSBhYm91dCBoYWxmIHRoZSBzaXplIHRvIGVuc3VyZSB3ZSBkb24ndCBtaXNzIGl0LgoJICAgIERldGVjdG9yLlJPV19TVEVQID0gNTsKCSAgICBEZXRlY3Rvci5CQVJDT0RFX01JTl9IRUlHSFQgPSAxMDsKCSAgICByZXR1cm4gRGV0ZWN0b3I7Cgl9KCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gRGV0ZWN0b3I7CgoJfSk7CgoJdmFyIE1vZHVsdXNQb2x5XzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CgkvKgoJKiBDb3B5cmlnaHQgMjAxMiBaWGluZyBhdXRob3JzCgkqCgkqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJKgoJKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJKgoJKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJKi8KCXZhciBfX3ZhbHVlcyA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX3ZhbHVlcykgfHwgZnVuY3Rpb24obykgewoJICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gImZ1bmN0aW9uIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwOwoJICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pOwoJICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gIm51bWJlciIpIHJldHVybiB7CgkgICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7CgkgICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07CgkgICAgICAgIH0KCSAgICB9OwoJICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/ICJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLiIgOiAiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpOwoJfTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgkvLyBwYWNrYWdlIGNvbS5nb29nbGUuenhpbmcucGRmNDE3LmRlY29kZXIuZWM7CgoKCgkvKioKCSAqIEBhdXRob3IgU2VhbiBPd2VuCgkgKiBAc2VlIGNvbS5nb29nbGUuenhpbmcuY29tbW9uLnJlZWRzb2xvbW9uLkdlbmVyaWNHRlBvbHkKCSAqLwoJdmFyIE1vZHVsdXNQb2x5ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIGZ1bmN0aW9uIE1vZHVsdXNQb2x5KGZpZWxkLCBjb2VmZmljaWVudHMpIHsKCSAgICAgICAgaWYgKGNvZWZmaWNpZW50cy5sZW5ndGggPT09IDApIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgIH0KCSAgICAgICAgdGhpcy5maWVsZCA9IGZpZWxkOwoJICAgICAgICB2YXIgY29lZmZpY2llbnRzTGVuZ3RoID0gLyppbnQqLyBjb2VmZmljaWVudHMubGVuZ3RoOwoJICAgICAgICBpZiAoY29lZmZpY2llbnRzTGVuZ3RoID4gMSAmJiBjb2VmZmljaWVudHNbMF0gPT09IDApIHsKCSAgICAgICAgICAgIC8vIExlYWRpbmcgdGVybSBtdXN0IGJlIG5vbi16ZXJvIGZvciBhbnl0aGluZyBleGNlcHQgdGhlIGNvbnN0YW50IHBvbHlub21pYWwgIjAiCgkgICAgICAgICAgICB2YXIgZmlyc3ROb25aZXJvID0gLyppbnQqLyAxOwoJICAgICAgICAgICAgd2hpbGUgKGZpcnN0Tm9uWmVybyA8IGNvZWZmaWNpZW50c0xlbmd0aCAmJiBjb2VmZmljaWVudHNbZmlyc3ROb25aZXJvXSA9PT0gMCkgewoJICAgICAgICAgICAgICAgIGZpcnN0Tm9uWmVybysrOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgaWYgKGZpcnN0Tm9uWmVybyA9PT0gY29lZmZpY2llbnRzTGVuZ3RoKSB7CgkgICAgICAgICAgICAgICAgdGhpcy5jb2VmZmljaWVudHMgPSBuZXcgSW50MzJBcnJheShbMF0pOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgdGhpcy5jb2VmZmljaWVudHMgPSBuZXcgSW50MzJBcnJheShjb2VmZmljaWVudHNMZW5ndGggLSBmaXJzdE5vblplcm8pOwoJICAgICAgICAgICAgICAgIFN5c3RlbV8xLmRlZmF1bHQuYXJyYXljb3B5KGNvZWZmaWNpZW50cywgZmlyc3ROb25aZXJvLCB0aGlzLmNvZWZmaWNpZW50cywgMCwgdGhpcy5jb2VmZmljaWVudHMubGVuZ3RoKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgIHRoaXMuY29lZmZpY2llbnRzID0gY29lZmZpY2llbnRzOwoJICAgICAgICB9CgkgICAgfQoJICAgIE1vZHVsdXNQb2x5LnByb3RvdHlwZS5nZXRDb2VmZmljaWVudHMgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmNvZWZmaWNpZW50czsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEByZXR1cm4gZGVncmVlIG9mIHRoaXMgcG9seW5vbWlhbAoJICAgICAqLwoJICAgIE1vZHVsdXNQb2x5LnByb3RvdHlwZS5nZXREZWdyZWUgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmNvZWZmaWNpZW50cy5sZW5ndGggLSAxOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQHJldHVybiB0cnVlIGlmZiB0aGlzIHBvbHlub21pYWwgaXMgdGhlIG1vbm9taWFsICIwIgoJICAgICAqLwoJICAgIE1vZHVsdXNQb2x5LnByb3RvdHlwZS5pc1plcm8gPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmNvZWZmaWNpZW50c1swXSA9PT0gMDsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEByZXR1cm4gY29lZmZpY2llbnQgb2YgeF5kZWdyZWUgdGVybSBpbiB0aGlzIHBvbHlub21pYWwKCSAgICAgKi8KCSAgICBNb2R1bHVzUG9seS5wcm90b3R5cGUuZ2V0Q29lZmZpY2llbnQgPSBmdW5jdGlvbiAoZGVncmVlKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmNvZWZmaWNpZW50c1t0aGlzLmNvZWZmaWNpZW50cy5sZW5ndGggLSAxIC0gZGVncmVlXTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEByZXR1cm4gZXZhbHVhdGlvbiBvZiB0aGlzIHBvbHlub21pYWwgYXQgYSBnaXZlbiBwb2ludAoJICAgICAqLwoJICAgIE1vZHVsdXNQb2x5LnByb3RvdHlwZS5ldmFsdWF0ZUF0ID0gZnVuY3Rpb24gKGEpIHsKCSAgICAgICAgdmFyIGVfMSwgX2E7CgkgICAgICAgIGlmIChhID09PSAwKSB7CgkgICAgICAgICAgICAvLyBKdXN0IHJldHVybiB0aGUgeF4wIGNvZWZmaWNpZW50CgkgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRDb2VmZmljaWVudCgwKTsKCSAgICAgICAgfQoJICAgICAgICBpZiAoYSA9PT0gMSkgewoJICAgICAgICAgICAgLy8gSnVzdCB0aGUgc3VtIG9mIHRoZSBjb2VmZmljaWVudHMKCSAgICAgICAgICAgIHZhciBzdW0gPSAvKmludCovIDA7CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIGZvciAodmFyIF9iID0gX192YWx1ZXModGhpcy5jb2VmZmljaWVudHMpLCBfYyA9IF9iLm5leHQoKTsgIV9jLmRvbmU7IF9jID0gX2IubmV4dCgpKSB7CgkgICAgICAgICAgICAgICAgICAgIHZhciBjb2VmZmljaWVudCA9IF9jLnZhbHVlIC8qaW50Ki87CgkgICAgICAgICAgICAgICAgICAgIHN1bSA9IHRoaXMuZmllbGQuYWRkKHN1bSwgY29lZmZpY2llbnQpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9CgkgICAgICAgICAgICBmaW5hbGx5IHsKCSAgICAgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgICAgICBpZiAoX2MgJiYgIV9jLmRvbmUgJiYgKF9hID0gX2IucmV0dXJuKSkgX2EuY2FsbChfYik7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHJldHVybiBzdW07CgkgICAgICAgIH0KCSAgICAgICAgdmFyIHJlc3VsdCA9IC8qaW50Ki8gdGhpcy5jb2VmZmljaWVudHNbMF07CgkgICAgICAgIHZhciBzaXplID0gLyppbnQqLyB0aGlzLmNvZWZmaWNpZW50cy5sZW5ndGg7CgkgICAgICAgIGZvciAodmFyIGkgLyppbnQqLyA9IDE7IGkgPCBzaXplOyBpKyspIHsKCSAgICAgICAgICAgIHJlc3VsdCA9IHRoaXMuZmllbGQuYWRkKHRoaXMuZmllbGQubXVsdGlwbHkoYSwgcmVzdWx0KSwgdGhpcy5jb2VmZmljaWVudHNbaV0pOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiByZXN1bHQ7CgkgICAgfTsKCSAgICBNb2R1bHVzUG9seS5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKG90aGVyKSB7CgkgICAgICAgIGlmICghdGhpcy5maWVsZC5lcXVhbHMob3RoZXIuZmllbGQpKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgnTW9kdWx1c1BvbHlzIGRvIG5vdCBoYXZlIHNhbWUgTW9kdWx1c0dGIGZpZWxkJyk7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKHRoaXMuaXNaZXJvKCkpIHsKCSAgICAgICAgICAgIHJldHVybiBvdGhlcjsKCSAgICAgICAgfQoJICAgICAgICBpZiAob3RoZXIuaXNaZXJvKCkpIHsKCSAgICAgICAgICAgIHJldHVybiB0aGlzOwoJICAgICAgICB9CgkgICAgICAgIHZhciBzbWFsbGVyQ29lZmZpY2llbnRzID0gdGhpcy5jb2VmZmljaWVudHM7CgkgICAgICAgIHZhciBsYXJnZXJDb2VmZmljaWVudHMgPSBvdGhlci5jb2VmZmljaWVudHM7CgkgICAgICAgIGlmIChzbWFsbGVyQ29lZmZpY2llbnRzLmxlbmd0aCA+IGxhcmdlckNvZWZmaWNpZW50cy5sZW5ndGgpIHsKCSAgICAgICAgICAgIHZhciB0ZW1wID0gc21hbGxlckNvZWZmaWNpZW50czsKCSAgICAgICAgICAgIHNtYWxsZXJDb2VmZmljaWVudHMgPSBsYXJnZXJDb2VmZmljaWVudHM7CgkgICAgICAgICAgICBsYXJnZXJDb2VmZmljaWVudHMgPSB0ZW1wOwoJICAgICAgICB9CgkgICAgICAgIHZhciBzdW1EaWZmID0gbmV3IEludDMyQXJyYXkobGFyZ2VyQ29lZmZpY2llbnRzLmxlbmd0aCk7CgkgICAgICAgIHZhciBsZW5ndGhEaWZmID0gLyppbnQqLyBsYXJnZXJDb2VmZmljaWVudHMubGVuZ3RoIC0gc21hbGxlckNvZWZmaWNpZW50cy5sZW5ndGg7CgkgICAgICAgIC8vIENvcHkgaGlnaC1vcmRlciB0ZXJtcyBvbmx5IGZvdW5kIGluIGhpZ2hlci1kZWdyZWUgcG9seW5vbWlhbCdzIGNvZWZmaWNpZW50cwoJICAgICAgICBTeXN0ZW1fMS5kZWZhdWx0LmFycmF5Y29weShsYXJnZXJDb2VmZmljaWVudHMsIDAsIHN1bURpZmYsIDAsIGxlbmd0aERpZmYpOwoJICAgICAgICBmb3IgKHZhciBpIC8qaW50Ki8gPSBsZW5ndGhEaWZmOyBpIDwgbGFyZ2VyQ29lZmZpY2llbnRzLmxlbmd0aDsgaSsrKSB7CgkgICAgICAgICAgICBzdW1EaWZmW2ldID0gdGhpcy5maWVsZC5hZGQoc21hbGxlckNvZWZmaWNpZW50c1tpIC0gbGVuZ3RoRGlmZl0sIGxhcmdlckNvZWZmaWNpZW50c1tpXSk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIG5ldyBNb2R1bHVzUG9seSh0aGlzLmZpZWxkLCBzdW1EaWZmKTsKCSAgICB9OwoJICAgIE1vZHVsdXNQb2x5LnByb3RvdHlwZS5zdWJ0cmFjdCA9IGZ1bmN0aW9uIChvdGhlcikgewoJICAgICAgICBpZiAoIXRoaXMuZmllbGQuZXF1YWxzKG90aGVyLmZpZWxkKSkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoJ01vZHVsdXNQb2x5cyBkbyBub3QgaGF2ZSBzYW1lIE1vZHVsdXNHRiBmaWVsZCcpOwoJICAgICAgICB9CgkgICAgICAgIGlmIChvdGhlci5pc1plcm8oKSkgewoJICAgICAgICAgICAgcmV0dXJuIHRoaXM7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHRoaXMuYWRkKG90aGVyLm5lZ2F0aXZlKCkpOwoJICAgIH07CgkgICAgTW9kdWx1c1BvbHkucHJvdG90eXBlLm11bHRpcGx5ID0gZnVuY3Rpb24gKG90aGVyKSB7CgkgICAgICAgIGlmIChvdGhlciBpbnN0YW5jZW9mIE1vZHVsdXNQb2x5KSB7CgkgICAgICAgICAgICByZXR1cm4gdGhpcy5tdWx0aXBseU90aGVyKG90aGVyKTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gdGhpcy5tdWx0aXBseVNjYWxhcihvdGhlcik7CgkgICAgfTsKCSAgICBNb2R1bHVzUG9seS5wcm90b3R5cGUubXVsdGlwbHlPdGhlciA9IGZ1bmN0aW9uIChvdGhlcikgewoJICAgICAgICBpZiAoIXRoaXMuZmllbGQuZXF1YWxzKG90aGVyLmZpZWxkKSkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoJ01vZHVsdXNQb2x5cyBkbyBub3QgaGF2ZSBzYW1lIE1vZHVsdXNHRiBmaWVsZCcpOwoJICAgICAgICB9CgkgICAgICAgIGlmICh0aGlzLmlzWmVybygpIHx8IG90aGVyLmlzWmVybygpKSB7CgkgICAgICAgICAgICAvLyByZXR1cm4gdGhpcy5maWVsZC5nZXRaZXJvKCk7CgkgICAgICAgICAgICByZXR1cm4gbmV3IE1vZHVsdXNQb2x5KHRoaXMuZmllbGQsIG5ldyBJbnQzMkFycmF5KFswXSkpOwoJICAgICAgICB9CgkgICAgICAgIHZhciBhQ29lZmZpY2llbnRzID0gdGhpcy5jb2VmZmljaWVudHM7CgkgICAgICAgIHZhciBhTGVuZ3RoID0gLyppbnQqLyBhQ29lZmZpY2llbnRzLmxlbmd0aDsKCSAgICAgICAgdmFyIGJDb2VmZmljaWVudHMgPSBvdGhlci5jb2VmZmljaWVudHM7CgkgICAgICAgIHZhciBiTGVuZ3RoID0gLyppbnQqLyBiQ29lZmZpY2llbnRzLmxlbmd0aDsKCSAgICAgICAgdmFyIHByb2R1Y3QgPSBuZXcgSW50MzJBcnJheShhTGVuZ3RoICsgYkxlbmd0aCAtIDEpOwoJICAgICAgICBmb3IgKHZhciBpIC8qaW50Ki8gPSAwOyBpIDwgYUxlbmd0aDsgaSsrKSB7CgkgICAgICAgICAgICB2YXIgYUNvZWZmID0gLyppbnQqLyBhQ29lZmZpY2llbnRzW2ldOwoJICAgICAgICAgICAgZm9yICh2YXIgaiAvKmludCovID0gMDsgaiA8IGJMZW5ndGg7IGorKykgewoJICAgICAgICAgICAgICAgIHByb2R1Y3RbaSArIGpdID0gdGhpcy5maWVsZC5hZGQocHJvZHVjdFtpICsgal0sIHRoaXMuZmllbGQubXVsdGlwbHkoYUNvZWZmLCBiQ29lZmZpY2llbnRzW2pdKSk7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIG5ldyBNb2R1bHVzUG9seSh0aGlzLmZpZWxkLCBwcm9kdWN0KTsKCSAgICB9OwoJICAgIE1vZHVsdXNQb2x5LnByb3RvdHlwZS5uZWdhdGl2ZSA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgdmFyIHNpemUgPSAvKmludCovIHRoaXMuY29lZmZpY2llbnRzLmxlbmd0aDsKCSAgICAgICAgdmFyIG5lZ2F0aXZlQ29lZmZpY2llbnRzID0gbmV3IEludDMyQXJyYXkoc2l6ZSk7CgkgICAgICAgIGZvciAodmFyIGkgLyppbnQqLyA9IDA7IGkgPCBzaXplOyBpKyspIHsKCSAgICAgICAgICAgIG5lZ2F0aXZlQ29lZmZpY2llbnRzW2ldID0gdGhpcy5maWVsZC5zdWJ0cmFjdCgwLCB0aGlzLmNvZWZmaWNpZW50c1tpXSk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIG5ldyBNb2R1bHVzUG9seSh0aGlzLmZpZWxkLCBuZWdhdGl2ZUNvZWZmaWNpZW50cyk7CgkgICAgfTsKCSAgICBNb2R1bHVzUG9seS5wcm90b3R5cGUubXVsdGlwbHlTY2FsYXIgPSBmdW5jdGlvbiAoc2NhbGFyKSB7CgkgICAgICAgIGlmIChzY2FsYXIgPT09IDApIHsKCSAgICAgICAgICAgIHJldHVybiBuZXcgTW9kdWx1c1BvbHkodGhpcy5maWVsZCwgbmV3IEludDMyQXJyYXkoWzBdKSk7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKHNjYWxhciA9PT0gMSkgewoJICAgICAgICAgICAgcmV0dXJuIHRoaXM7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIHNpemUgPSAvKmludCovIHRoaXMuY29lZmZpY2llbnRzLmxlbmd0aDsKCSAgICAgICAgdmFyIHByb2R1Y3QgPSBuZXcgSW50MzJBcnJheShzaXplKTsKCSAgICAgICAgZm9yICh2YXIgaSAvKmludCovID0gMDsgaSA8IHNpemU7IGkrKykgewoJICAgICAgICAgICAgcHJvZHVjdFtpXSA9IHRoaXMuZmllbGQubXVsdGlwbHkodGhpcy5jb2VmZmljaWVudHNbaV0sIHNjYWxhcik7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIG5ldyBNb2R1bHVzUG9seSh0aGlzLmZpZWxkLCBwcm9kdWN0KTsKCSAgICB9OwoJICAgIE1vZHVsdXNQb2x5LnByb3RvdHlwZS5tdWx0aXBseUJ5TW9ub21pYWwgPSBmdW5jdGlvbiAoZGVncmVlLCBjb2VmZmljaWVudCkgewoJICAgICAgICBpZiAoZGVncmVlIDwgMCkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgfQoJICAgICAgICBpZiAoY29lZmZpY2llbnQgPT09IDApIHsKCSAgICAgICAgICAgIHJldHVybiBuZXcgTW9kdWx1c1BvbHkodGhpcy5maWVsZCwgbmV3IEludDMyQXJyYXkoWzBdKSk7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIHNpemUgPSAvKmludCovIHRoaXMuY29lZmZpY2llbnRzLmxlbmd0aDsKCSAgICAgICAgdmFyIHByb2R1Y3QgPSBuZXcgSW50MzJBcnJheShzaXplICsgZGVncmVlKTsKCSAgICAgICAgZm9yICh2YXIgaSAvKmludCovID0gMDsgaSA8IHNpemU7IGkrKykgewoJICAgICAgICAgICAgcHJvZHVjdFtpXSA9IHRoaXMuZmllbGQubXVsdGlwbHkodGhpcy5jb2VmZmljaWVudHNbaV0sIGNvZWZmaWNpZW50KTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gbmV3IE1vZHVsdXNQb2x5KHRoaXMuZmllbGQsIHByb2R1Y3QpOwoJICAgIH07CgkgICAgLyoKCSAgICBNb2R1bHVzUG9seVtdIGRpdmlkZShvdGhlcjogTW9kdWx1c1BvbHkpIHsKCSAgICAgIGlmICghZmllbGQuZXF1YWxzKG90aGVyLmZpZWxkKSkgewoJICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJNb2R1bHVzUG9seXMgZG8gbm90IGhhdmUgc2FtZSBNb2R1bHVzR0YgZmllbGQiKTsKCSAgICAgIH0KCSAgICAgIGlmIChvdGhlci5pc1plcm8oKSkgewoJICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJEaXZpZGUgYnkgMCIpOwoJICAgICAgfQoJICAKCSAgICAgIGxldCBxdW90aWVudDogTW9kdWx1c1BvbHkgPSBmaWVsZC5nZXRaZXJvKCk7CgkgICAgICBsZXQgcmVtYWluZGVyOiBNb2R1bHVzUG9seSA9IHRoaXM7CgkgIAoJICAgICAgbGV0IGRlbm9taW5hdG9yTGVhZGluZ1Rlcm06IC8qaW50LyBudW1iZXIgPSBvdGhlci5nZXRDb2VmZmljaWVudChvdGhlci5nZXREZWdyZWUoKSk7CgkgICAgICBsZXQgaW52ZXJzZURlbm9taW5hdG9yTGVhZGluZ1Rlcm06IC8qaW50LyBudW1iZXIgPSBmaWVsZC5pbnZlcnNlKGRlbm9taW5hdG9yTGVhZGluZ1Rlcm0pOwoJICAKCSAgICAgIHdoaWxlIChyZW1haW5kZXIuZ2V0RGVncmVlKCkgPj0gb3RoZXIuZ2V0RGVncmVlKCkgJiYgIXJlbWFpbmRlci5pc1plcm8oKSkgewoJICAgICAgICBsZXQgZGVncmVlRGlmZmVyZW5jZTogLyppbnQvIG51bWJlciA9IHJlbWFpbmRlci5nZXREZWdyZWUoKSAtIG90aGVyLmdldERlZ3JlZSgpOwoJICAgICAgICBsZXQgc2NhbGU6IC8qaW50LyBudW1iZXIgPSBmaWVsZC5tdWx0aXBseShyZW1haW5kZXIuZ2V0Q29lZmZpY2llbnQocmVtYWluZGVyLmdldERlZ3JlZSgpKSwgaW52ZXJzZURlbm9taW5hdG9yTGVhZGluZ1Rlcm0pOwoJICAgICAgICBsZXQgdGVybTogTW9kdWx1c1BvbHkgPSBvdGhlci5tdWx0aXBseUJ5TW9ub21pYWwoZGVncmVlRGlmZmVyZW5jZSwgc2NhbGUpOwoJICAgICAgICBsZXQgaXRlcmF0aW9uUXVvdGllbnQ6IE1vZHVsdXNQb2x5ID0gZmllbGQuYnVpbGRNb25vbWlhbChkZWdyZWVEaWZmZXJlbmNlLCBzY2FsZSk7CgkgICAgICAgIHF1b3RpZW50ID0gcXVvdGllbnQuYWRkKGl0ZXJhdGlvblF1b3RpZW50KTsKCSAgICAgICAgcmVtYWluZGVyID0gcmVtYWluZGVyLnN1YnRyYWN0KHRlcm0pOwoJICAgICAgfQoJICAKCSAgICAgIHJldHVybiBuZXcgTW9kdWx1c1BvbHlbXSB7IHF1b3RpZW50LCByZW1haW5kZXIgfTsKCSAgICB9CgkgICAgKi8KCSAgICAvLyBAT3ZlcnJpZGUKCSAgICBNb2R1bHVzUG9seS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHZhciByZXN1bHQgPSBuZXcgU3RyaW5nQnVpbGRlcl8xLmRlZmF1bHQoIC8qOCAqIHRoaXMuZ2V0RGVncmVlKCkqLyk7IC8vIGR5bmFtaWMgc3RyaW5nIHNpemUgaW4gSlMKCSAgICAgICAgZm9yICh2YXIgZGVncmVlIC8qaW50Ki8gPSB0aGlzLmdldERlZ3JlZSgpOyBkZWdyZWUgPj0gMDsgZGVncmVlLS0pIHsKCSAgICAgICAgICAgIHZhciBjb2VmZmljaWVudCA9IC8qaW50Ki8gdGhpcy5nZXRDb2VmZmljaWVudChkZWdyZWUpOwoJICAgICAgICAgICAgaWYgKGNvZWZmaWNpZW50ICE9PSAwKSB7CgkgICAgICAgICAgICAgICAgaWYgKGNvZWZmaWNpZW50IDwgMCkgewoJICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgLSAnKTsKCSAgICAgICAgICAgICAgICAgICAgY29lZmZpY2llbnQgPSAtY29lZmZpY2llbnQ7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCgpID4gMCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICsgJyk7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgaWYgKGRlZ3JlZSA9PT0gMCB8fCBjb2VmZmljaWVudCAhPT0gMSkgewoJICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGNvZWZmaWNpZW50KTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgaWYgKGRlZ3JlZSAhPT0gMCkgewoJICAgICAgICAgICAgICAgICAgICBpZiAoZGVncmVlID09PSAxKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd4Jyk7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd4XicpOwoJICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChkZWdyZWUpOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKCSAgICB9OwoJICAgIHJldHVybiBNb2R1bHVzUG9seTsKCX0oKSk7CglleHBvcnRzLmRlZmF1bHQgPSBNb2R1bHVzUG9seTsKCgl9KTsKCgl2YXIgTW9kdWx1c0Jhc2VfMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgoKCXZhciBNb2R1bHVzQmFzZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBNb2R1bHVzQmFzZSgpIHsKCSAgICB9CgkgICAgTW9kdWx1c0Jhc2UucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIChhLCBiKSB7CgkgICAgICAgIHJldHVybiAoYSArIGIpICUgdGhpcy5tb2R1bHVzOwoJICAgIH07CgkgICAgTW9kdWx1c0Jhc2UucHJvdG90eXBlLnN1YnRyYWN0ID0gZnVuY3Rpb24gKGEsIGIpIHsKCSAgICAgICAgcmV0dXJuICh0aGlzLm1vZHVsdXMgKyBhIC0gYikgJSB0aGlzLm1vZHVsdXM7CgkgICAgfTsKCSAgICBNb2R1bHVzQmFzZS5wcm90b3R5cGUuZXhwID0gZnVuY3Rpb24gKGEpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuZXhwVGFibGVbYV07CgkgICAgfTsKCSAgICBNb2R1bHVzQmFzZS5wcm90b3R5cGUubG9nID0gZnVuY3Rpb24gKGEpIHsKCSAgICAgICAgaWYgKGEgPT09IDApIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHRoaXMubG9nVGFibGVbYV07CgkgICAgfTsKCSAgICBNb2R1bHVzQmFzZS5wcm90b3R5cGUuaW52ZXJzZSA9IGZ1bmN0aW9uIChhKSB7CgkgICAgICAgIGlmIChhID09PSAwKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgQXJpdGhtZXRpY0V4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gdGhpcy5leHBUYWJsZVt0aGlzLm1vZHVsdXMgLSB0aGlzLmxvZ1RhYmxlW2FdIC0gMV07CgkgICAgfTsKCSAgICBNb2R1bHVzQmFzZS5wcm90b3R5cGUubXVsdGlwbHkgPSBmdW5jdGlvbiAoYSwgYikgewoJICAgICAgICBpZiAoYSA9PT0gMCB8fCBiID09PSAwKSB7CgkgICAgICAgICAgICByZXR1cm4gMDsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gdGhpcy5leHBUYWJsZVsodGhpcy5sb2dUYWJsZVthXSArIHRoaXMubG9nVGFibGVbYl0pICUgKHRoaXMubW9kdWx1cyAtIDEpXTsKCSAgICB9OwoJICAgIE1vZHVsdXNCYXNlLnByb3RvdHlwZS5nZXRTaXplID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5tb2R1bHVzOwoJICAgIH07CgkgICAgTW9kdWx1c0Jhc2UucHJvdG90eXBlLmVxdWFscyA9IGZ1bmN0aW9uIChvKSB7CgkgICAgICAgIHJldHVybiBvID09PSB0aGlzOwoJICAgIH07CgkgICAgcmV0dXJuIE1vZHVsdXNCYXNlOwoJfSgpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IE1vZHVsdXNCYXNlOwoKCX0pOwoKCXZhciBNb2R1bHVzR0ZfMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCS8qCgkgKiBDb3B5cmlnaHQgMjAxMiBaWGluZyBhdXRob3JzCgkgKgoJICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSAqCgkgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJICoKCSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJICovCgl2YXIgX19leHRlbmRzID0gKGNvbW1vbmpzR2xvYmFsICYmIGNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHsKCSAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwKCSAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHwKCSAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9OwoJICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICB9OwoJICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH0KCSAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpOwoJICAgIH07Cgl9KSgpOwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCS8vIHBhY2thZ2UgY29tLmdvb2dsZS56eGluZy5wZGY0MTcuZGVjb2Rlci5lYzsKCS8vIGltcG9ydCBjb20uZ29vZ2xlLnp4aW5nLnBkZjQxNy5QREY0MTdDb21tb247CgoKCgoJLyoqCgkgKiA8cD5BIGZpZWxkIGJhc2VkIG9uIHBvd2VycyBvZiBhIGdlbmVyYXRvciBpbnRlZ2VyLCBtb2R1bG8gc29tZSBtb2R1bHVzLjwvcD4KCSAqCgkgKiBAYXV0aG9yIFNlYW4gT3dlbgoJICogQHNlZSBjb20uZ29vZ2xlLnp4aW5nLmNvbW1vbi5yZWVkc29sb21vbi5HZW5lcmljR0YKCSAqLwoJdmFyIE1vZHVsdXNHRiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHsKCSAgICBfX2V4dGVuZHMoTW9kdWx1c0dGLCBfc3VwZXIpOwoJICAgIC8vIHByaXZhdGUgLypmaW5hbCovIG1vZHVsdXM6IC8qaW50Ki8gbnVtYmVyOwoJICAgIGZ1bmN0aW9uIE1vZHVsdXNHRihtb2R1bHVzLCBnZW5lcmF0b3IpIHsKCSAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpczsKCSAgICAgICAgX3RoaXMubW9kdWx1cyA9IG1vZHVsdXM7CgkgICAgICAgIF90aGlzLmV4cFRhYmxlID0gbmV3IEludDMyQXJyYXkobW9kdWx1cyk7CgkgICAgICAgIF90aGlzLmxvZ1RhYmxlID0gbmV3IEludDMyQXJyYXkobW9kdWx1cyk7CgkgICAgICAgIHZhciB4ID0gLyppbnQqLyAxOwoJICAgICAgICBmb3IgKHZhciBpIC8qaW50Ki8gPSAwOyBpIDwgbW9kdWx1czsgaSsrKSB7CgkgICAgICAgICAgICBfdGhpcy5leHBUYWJsZVtpXSA9IHg7CgkgICAgICAgICAgICB4ID0gKHggKiBnZW5lcmF0b3IpICUgbW9kdWx1czsKCSAgICAgICAgfQoJICAgICAgICBmb3IgKHZhciBpIC8qaW50Ki8gPSAwOyBpIDwgbW9kdWx1cyAtIDE7IGkrKykgewoJICAgICAgICAgICAgX3RoaXMubG9nVGFibGVbX3RoaXMuZXhwVGFibGVbaV1dID0gaTsKCSAgICAgICAgfQoJICAgICAgICAvLyBsb2dUYWJsZVswXSA9PSAwIGJ1dCB0aGlzIHNob3VsZCBuZXZlciBiZSB1c2VkCgkgICAgICAgIF90aGlzLnplcm8gPSBuZXcgTW9kdWx1c1BvbHlfMS5kZWZhdWx0KF90aGlzLCBuZXcgSW50MzJBcnJheShbMF0pKTsKCSAgICAgICAgX3RoaXMub25lID0gbmV3IE1vZHVsdXNQb2x5XzEuZGVmYXVsdChfdGhpcywgbmV3IEludDMyQXJyYXkoWzFdKSk7CgkgICAgICAgIHJldHVybiBfdGhpczsKCSAgICB9CgkgICAgTW9kdWx1c0dGLnByb3RvdHlwZS5nZXRaZXJvID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy56ZXJvOwoJICAgIH07CgkgICAgTW9kdWx1c0dGLnByb3RvdHlwZS5nZXRPbmUgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLm9uZTsKCSAgICB9OwoJICAgIE1vZHVsdXNHRi5wcm90b3R5cGUuYnVpbGRNb25vbWlhbCA9IGZ1bmN0aW9uIChkZWdyZWUsIGNvZWZmaWNpZW50KSB7CgkgICAgICAgIGlmIChkZWdyZWUgPCAwKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgICAgIGlmIChjb2VmZmljaWVudCA9PT0gMCkgewoJICAgICAgICAgICAgcmV0dXJuIHRoaXMuemVybzsKCSAgICAgICAgfQoJICAgICAgICB2YXIgY29lZmZpY2llbnRzID0gbmV3IEludDMyQXJyYXkoZGVncmVlICsgMSk7CgkgICAgICAgIGNvZWZmaWNpZW50c1swXSA9IGNvZWZmaWNpZW50OwoJICAgICAgICByZXR1cm4gbmV3IE1vZHVsdXNQb2x5XzEuZGVmYXVsdCh0aGlzLCBjb2VmZmljaWVudHMpOwoJICAgIH07CgkgICAgTW9kdWx1c0dGLlBERjQxN19HRiA9IG5ldyBNb2R1bHVzR0YoUERGNDE3Q29tbW9uXzEuZGVmYXVsdC5OVU1CRVJfT0ZfQ09ERVdPUkRTLCAzKTsKCSAgICByZXR1cm4gTW9kdWx1c0dGOwoJfShNb2R1bHVzQmFzZV8xLmRlZmF1bHQpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IE1vZHVsdXNHRjsKCgl9KTsKCgl2YXIgRXJyb3JDb3JyZWN0aW9uXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CgkvKgoJKiBDb3B5cmlnaHQgMjAxMiBaWGluZyBhdXRob3JzCgkqCgkqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJKgoJKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJKgoJKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJKi8KCXZhciBfX3ZhbHVlcyA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX3ZhbHVlcykgfHwgZnVuY3Rpb24obykgewoJICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gImZ1bmN0aW9uIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwOwoJICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pOwoJICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gIm51bWJlciIpIHJldHVybiB7CgkgICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7CgkgICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07CgkgICAgICAgIH0KCSAgICB9OwoJICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/ICJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLiIgOiAiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpOwoJfTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgkvLyBwYWNrYWdlIGNvbS5nb29nbGUuenhpbmcucGRmNDE3LmRlY29kZXIuZWM7CgkvLyBpbXBvcnQgY29tLmdvb2dsZS56eGluZy5DaGVja3N1bUV4Y2VwdGlvbjsKCgoKCS8qKgoJICogPHA+UERGNDE3IGVycm9yIGNvcnJlY3Rpb24gaW1wbGVtZW50YXRpb24uPC9wPgoJICoKCSAqIDxwPlRoaXMgPGEgaHJlZj0iaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZWVkJUUyJTgwJTkzU29sb21vbl9lcnJvcl9jb3JyZWN0aW9uI0V4YW1wbGUiPmV4YW1wbGU8L2E+CgkgKiBpcyBxdWl0ZSB1c2VmdWwgaW4gdW5kZXJzdGFuZGluZyB0aGUgYWxnb3JpdGhtLjwvcD4KCSAqCgkgKiBAYXV0aG9yIFNlYW4gT3dlbgoJICogQHNlZSBjb20uZ29vZ2xlLnp4aW5nLmNvbW1vbi5yZWVkc29sb21vbi5SZWVkU29sb21vbkRlY29kZXIKCSAqLwoJdmFyIEVycm9yQ29ycmVjdGlvbiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBFcnJvckNvcnJlY3Rpb24oKSB7CgkgICAgICAgIHRoaXMuZmllbGQgPSBNb2R1bHVzR0ZfMS5kZWZhdWx0LlBERjQxN19HRjsKCSAgICB9CgkgICAgLyoqCgkgICAgICogQHBhcmFtIHJlY2VpdmVkIHJlY2VpdmVkIGNvZGV3b3JkcwoJICAgICAqIEBwYXJhbSBudW1FQ0NvZGV3b3JkcyBudW1iZXIgb2YgdGhvc2UgY29kZXdvcmRzIHVzZWQgZm9yIEVDCgkgICAgICogQHBhcmFtIGVyYXN1cmVzIGxvY2F0aW9uIG9mIGVyYXN1cmVzCgkgICAgICogQHJldHVybiBudW1iZXIgb2YgZXJyb3JzCgkgICAgICogQHRocm93cyBDaGVja3N1bUV4Y2VwdGlvbiBpZiBlcnJvcnMgY2Fubm90IGJlIGNvcnJlY3RlZCwgbWF5YmUgYmVjYXVzZSBvZiB0b28gbWFueSBlcnJvcnMKCSAgICAgKi8KCSAgICBFcnJvckNvcnJlY3Rpb24ucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uIChyZWNlaXZlZCwgbnVtRUNDb2Rld29yZHMsIGVyYXN1cmVzKSB7CgkgICAgICAgIHZhciBlXzEsIF9hOwoJICAgICAgICB2YXIgcG9seSA9IG5ldyBNb2R1bHVzUG9seV8xLmRlZmF1bHQodGhpcy5maWVsZCwgcmVjZWl2ZWQpOwoJICAgICAgICB2YXIgUyA9IG5ldyBJbnQzMkFycmF5KG51bUVDQ29kZXdvcmRzKTsKCSAgICAgICAgdmFyIGVycm9yID0gZmFsc2U7CgkgICAgICAgIGZvciAodmFyIGkgLyppbnQqLyA9IG51bUVDQ29kZXdvcmRzOyBpID4gMDsgaS0tKSB7CgkgICAgICAgICAgICB2YXIgZXZhbHVhdGlvbiA9IHBvbHkuZXZhbHVhdGVBdCh0aGlzLmZpZWxkLmV4cChpKSk7CgkgICAgICAgICAgICBTW251bUVDQ29kZXdvcmRzIC0gaV0gPSBldmFsdWF0aW9uOwoJICAgICAgICAgICAgaWYgKGV2YWx1YXRpb24gIT09IDApIHsKCSAgICAgICAgICAgICAgICBlcnJvciA9IHRydWU7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgaWYgKCFlcnJvcikgewoJICAgICAgICAgICAgcmV0dXJuIDA7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGtub3duRXJyb3JzID0gdGhpcy5maWVsZC5nZXRPbmUoKTsKCSAgICAgICAgaWYgKGVyYXN1cmVzICE9IG51bGwpIHsKCSAgICAgICAgICAgIHRyeSB7CgkgICAgICAgICAgICAgICAgZm9yICh2YXIgZXJhc3VyZXNfMSA9IF9fdmFsdWVzKGVyYXN1cmVzKSwgZXJhc3VyZXNfMV8xID0gZXJhc3VyZXNfMS5uZXh0KCk7ICFlcmFzdXJlc18xXzEuZG9uZTsgZXJhc3VyZXNfMV8xID0gZXJhc3VyZXNfMS5uZXh0KCkpIHsKCSAgICAgICAgICAgICAgICAgICAgdmFyIGVyYXN1cmUgPSBlcmFzdXJlc18xXzEudmFsdWU7CgkgICAgICAgICAgICAgICAgICAgIHZhciBiID0gdGhpcy5maWVsZC5leHAocmVjZWl2ZWQubGVuZ3RoIC0gMSAtIGVyYXN1cmUpOwoJICAgICAgICAgICAgICAgICAgICAvLyBBZGQgKDEgLSBieCkgdGVybToKCSAgICAgICAgICAgICAgICAgICAgdmFyIHRlcm0gPSBuZXcgTW9kdWx1c1BvbHlfMS5kZWZhdWx0KHRoaXMuZmllbGQsIG5ldyBJbnQzMkFycmF5KFt0aGlzLmZpZWxkLnN1YnRyYWN0KDAsIGIpLCAxXSkpOwoJICAgICAgICAgICAgICAgICAgICBrbm93bkVycm9ycyA9IGtub3duRXJyb3JzLm11bHRpcGx5KHRlcm0pOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9CgkgICAgICAgICAgICBmaW5hbGx5IHsKCSAgICAgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgICAgICBpZiAoZXJhc3VyZXNfMV8xICYmICFlcmFzdXJlc18xXzEuZG9uZSAmJiAoX2EgPSBlcmFzdXJlc18xLnJldHVybikpIF9hLmNhbGwoZXJhc3VyZXNfMSk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICB2YXIgc3luZHJvbWUgPSBuZXcgTW9kdWx1c1BvbHlfMS5kZWZhdWx0KHRoaXMuZmllbGQsIFMpOwoJICAgICAgICAvLyBzeW5kcm9tZSA9IHN5bmRyb21lLm11bHRpcGx5KGtub3duRXJyb3JzKTsKCSAgICAgICAgdmFyIHNpZ21hT21lZ2EgPSB0aGlzLnJ1bkV1Y2xpZGVhbkFsZ29yaXRobSh0aGlzLmZpZWxkLmJ1aWxkTW9ub21pYWwobnVtRUNDb2Rld29yZHMsIDEpLCBzeW5kcm9tZSwgbnVtRUNDb2Rld29yZHMpOwoJICAgICAgICB2YXIgc2lnbWEgPSBzaWdtYU9tZWdhWzBdOwoJICAgICAgICB2YXIgb21lZ2EgPSBzaWdtYU9tZWdhWzFdOwoJICAgICAgICAvLyBzaWdtYSA9IHNpZ21hLm11bHRpcGx5KGtub3duRXJyb3JzKTsKCSAgICAgICAgdmFyIGVycm9yTG9jYXRpb25zID0gdGhpcy5maW5kRXJyb3JMb2NhdGlvbnMoc2lnbWEpOwoJICAgICAgICB2YXIgZXJyb3JNYWduaXR1ZGVzID0gdGhpcy5maW5kRXJyb3JNYWduaXR1ZGVzKG9tZWdhLCBzaWdtYSwgZXJyb3JMb2NhdGlvbnMpOwoJICAgICAgICBmb3IgKHZhciBpIC8qaW50Ki8gPSAwOyBpIDwgZXJyb3JMb2NhdGlvbnMubGVuZ3RoOyBpKyspIHsKCSAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHJlY2VpdmVkLmxlbmd0aCAtIDEgLSB0aGlzLmZpZWxkLmxvZyhlcnJvckxvY2F0aW9uc1tpXSk7CgkgICAgICAgICAgICBpZiAocG9zaXRpb24gPCAwKSB7CgkgICAgICAgICAgICAgICAgdGhyb3cgQ2hlY2tzdW1FeGNlcHRpb25fMS5kZWZhdWx0LmdldENoZWNrc3VtSW5zdGFuY2UoKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHJlY2VpdmVkW3Bvc2l0aW9uXSA9IHRoaXMuZmllbGQuc3VidHJhY3QocmVjZWl2ZWRbcG9zaXRpb25dLCBlcnJvck1hZ25pdHVkZXNbaV0pOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBlcnJvckxvY2F0aW9ucy5sZW5ndGg7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKgoJICAgICAqIEBwYXJhbSBNb2R1bHVzUG9seQoJICAgICAqIEBwYXJhbSBhCgkgICAgICogQHBhcmFtIE1vZHVsdXNQb2x5CgkgICAgICogQHBhcmFtIGIKCSAgICAgKiBAcGFyYW0gaW50CgkgICAgICogQHBhcmFtIFIKCSAgICAgKiBAdGhyb3dzIENoZWNrc3VtRXhjZXB0aW9uCgkgICAgICovCgkgICAgRXJyb3JDb3JyZWN0aW9uLnByb3RvdHlwZS5ydW5FdWNsaWRlYW5BbGdvcml0aG0gPSBmdW5jdGlvbiAoYSwgYiwgUikgewoJICAgICAgICAvLyBBc3N1bWUgYSdzIGRlZ3JlZSBpcyA+PSBiJ3MKCSAgICAgICAgaWYgKGEuZ2V0RGVncmVlKCkgPCBiLmdldERlZ3JlZSgpKSB7CgkgICAgICAgICAgICB2YXIgdGVtcCA9IGE7CgkgICAgICAgICAgICBhID0gYjsKCSAgICAgICAgICAgIGIgPSB0ZW1wOwoJICAgICAgICB9CgkgICAgICAgIHZhciByTGFzdCA9IGE7CgkgICAgICAgIHZhciByID0gYjsKCSAgICAgICAgdmFyIHRMYXN0ID0gdGhpcy5maWVsZC5nZXRaZXJvKCk7CgkgICAgICAgIHZhciB0ID0gdGhpcy5maWVsZC5nZXRPbmUoKTsKCSAgICAgICAgLy8gUnVuIEV1Y2xpZGVhbiBhbGdvcml0aG0gdW50aWwgcidzIGRlZ3JlZSBpcyBsZXNzIHRoYW4gUi8yCgkgICAgICAgIHdoaWxlIChyLmdldERlZ3JlZSgpID49IE1hdGgucm91bmQoUiAvIDIpKSB7CgkgICAgICAgICAgICB2YXIgckxhc3RMYXN0ID0gckxhc3Q7CgkgICAgICAgICAgICB2YXIgdExhc3RMYXN0ID0gdExhc3Q7CgkgICAgICAgICAgICByTGFzdCA9IHI7CgkgICAgICAgICAgICB0TGFzdCA9IHQ7CgkgICAgICAgICAgICAvLyBEaXZpZGUgckxhc3RMYXN0IGJ5IHJMYXN0LCB3aXRoIHF1b3RpZW50IGluIHEgYW5kIHJlbWFpbmRlciBpbiByCgkgICAgICAgICAgICBpZiAockxhc3QuaXNaZXJvKCkpIHsKCSAgICAgICAgICAgICAgICAvLyBPb3BzLCBFdWNsaWRlYW4gYWxnb3JpdGhtIGFscmVhZHkgdGVybWluYXRlZD8KCSAgICAgICAgICAgICAgICB0aHJvdyBDaGVja3N1bUV4Y2VwdGlvbl8xLmRlZmF1bHQuZ2V0Q2hlY2tzdW1JbnN0YW5jZSgpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgciA9IHJMYXN0TGFzdDsKCSAgICAgICAgICAgIHZhciBxID0gdGhpcy5maWVsZC5nZXRaZXJvKCk7CgkgICAgICAgICAgICB2YXIgZGVub21pbmF0b3JMZWFkaW5nVGVybSA9IHJMYXN0LmdldENvZWZmaWNpZW50KHJMYXN0LmdldERlZ3JlZSgpKTsKCSAgICAgICAgICAgIHZhciBkbHRJbnZlcnNlID0gdGhpcy5maWVsZC5pbnZlcnNlKGRlbm9taW5hdG9yTGVhZGluZ1Rlcm0pOwoJICAgICAgICAgICAgd2hpbGUgKHIuZ2V0RGVncmVlKCkgPj0gckxhc3QuZ2V0RGVncmVlKCkgJiYgIXIuaXNaZXJvKCkpIHsKCSAgICAgICAgICAgICAgICB2YXIgZGVncmVlRGlmZiA9IHIuZ2V0RGVncmVlKCkgLSByTGFzdC5nZXREZWdyZWUoKTsKCSAgICAgICAgICAgICAgICB2YXIgc2NhbGUgPSB0aGlzLmZpZWxkLm11bHRpcGx5KHIuZ2V0Q29lZmZpY2llbnQoci5nZXREZWdyZWUoKSksIGRsdEludmVyc2UpOwoJICAgICAgICAgICAgICAgIHEgPSBxLmFkZCh0aGlzLmZpZWxkLmJ1aWxkTW9ub21pYWwoZGVncmVlRGlmZiwgc2NhbGUpKTsKCSAgICAgICAgICAgICAgICByID0gci5zdWJ0cmFjdChyTGFzdC5tdWx0aXBseUJ5TW9ub21pYWwoZGVncmVlRGlmZiwgc2NhbGUpKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHQgPSBxLm11bHRpcGx5KHRMYXN0KS5zdWJ0cmFjdCh0TGFzdExhc3QpLm5lZ2F0aXZlKCk7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIHNpZ21hVGlsZGVBdFplcm8gPSB0LmdldENvZWZmaWNpZW50KDApOwoJICAgICAgICBpZiAoc2lnbWFUaWxkZUF0WmVybyA9PT0gMCkgewoJICAgICAgICAgICAgdGhyb3cgQ2hlY2tzdW1FeGNlcHRpb25fMS5kZWZhdWx0LmdldENoZWNrc3VtSW5zdGFuY2UoKTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgaW52ZXJzZSA9IHRoaXMuZmllbGQuaW52ZXJzZShzaWdtYVRpbGRlQXRaZXJvKTsKCSAgICAgICAgdmFyIHNpZ21hID0gdC5tdWx0aXBseShpbnZlcnNlKTsKCSAgICAgICAgdmFyIG9tZWdhID0gci5tdWx0aXBseShpbnZlcnNlKTsKCSAgICAgICAgcmV0dXJuIFtzaWdtYSwgb21lZ2FdOwoJICAgIH07CgkgICAgLyoqCgkgICAgICoKCSAgICAgKiBAcGFyYW0gZXJyb3JMb2NhdG9yCgkgICAgICogQHRocm93cyBDaGVja3N1bUV4Y2VwdGlvbgoJICAgICAqLwoJICAgIEVycm9yQ29ycmVjdGlvbi5wcm90b3R5cGUuZmluZEVycm9yTG9jYXRpb25zID0gZnVuY3Rpb24gKGVycm9yTG9jYXRvcikgewoJICAgICAgICAvLyBUaGlzIGlzIGEgZGlyZWN0IGFwcGxpY2F0aW9uIG9mIENoaWVuJ3Mgc2VhcmNoCgkgICAgICAgIHZhciBudW1FcnJvcnMgPSBlcnJvckxvY2F0b3IuZ2V0RGVncmVlKCk7CgkgICAgICAgIHZhciByZXN1bHQgPSBuZXcgSW50MzJBcnJheShudW1FcnJvcnMpOwoJICAgICAgICB2YXIgZSA9IDA7CgkgICAgICAgIGZvciAodmFyIGkgLyppbnQqLyA9IDE7IGkgPCB0aGlzLmZpZWxkLmdldFNpemUoKSAmJiBlIDwgbnVtRXJyb3JzOyBpKyspIHsKCSAgICAgICAgICAgIGlmIChlcnJvckxvY2F0b3IuZXZhbHVhdGVBdChpKSA9PT0gMCkgewoJICAgICAgICAgICAgICAgIHJlc3VsdFtlXSA9IHRoaXMuZmllbGQuaW52ZXJzZShpKTsKCSAgICAgICAgICAgICAgICBlKys7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgaWYgKGUgIT09IG51bUVycm9ycykgewoJICAgICAgICAgICAgdGhyb3cgQ2hlY2tzdW1FeGNlcHRpb25fMS5kZWZhdWx0LmdldENoZWNrc3VtSW5zdGFuY2UoKTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gcmVzdWx0OwoJICAgIH07CgkgICAgRXJyb3JDb3JyZWN0aW9uLnByb3RvdHlwZS5maW5kRXJyb3JNYWduaXR1ZGVzID0gZnVuY3Rpb24gKGVycm9yRXZhbHVhdG9yLCBlcnJvckxvY2F0b3IsIGVycm9yTG9jYXRpb25zKSB7CgkgICAgICAgIHZhciBlcnJvckxvY2F0b3JEZWdyZWUgPSBlcnJvckxvY2F0b3IuZ2V0RGVncmVlKCk7CgkgICAgICAgIHZhciBmb3JtYWxEZXJpdmF0aXZlQ29lZmZpY2llbnRzID0gbmV3IEludDMyQXJyYXkoZXJyb3JMb2NhdG9yRGVncmVlKTsKCSAgICAgICAgZm9yICh2YXIgaSAvKmludCovID0gMTsgaSA8PSBlcnJvckxvY2F0b3JEZWdyZWU7IGkrKykgewoJICAgICAgICAgICAgZm9ybWFsRGVyaXZhdGl2ZUNvZWZmaWNpZW50c1tlcnJvckxvY2F0b3JEZWdyZWUgLSBpXSA9CgkgICAgICAgICAgICAgICAgdGhpcy5maWVsZC5tdWx0aXBseShpLCBlcnJvckxvY2F0b3IuZ2V0Q29lZmZpY2llbnQoaSkpOwoJICAgICAgICB9CgkgICAgICAgIHZhciBmb3JtYWxEZXJpdmF0aXZlID0gbmV3IE1vZHVsdXNQb2x5XzEuZGVmYXVsdCh0aGlzLmZpZWxkLCBmb3JtYWxEZXJpdmF0aXZlQ29lZmZpY2llbnRzKTsKCSAgICAgICAgLy8gVGhpcyBpcyBkaXJlY3RseSBhcHBseWluZyBGb3JuZXkncyBGb3JtdWxhCgkgICAgICAgIHZhciBzID0gZXJyb3JMb2NhdGlvbnMubGVuZ3RoOwoJICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IEludDMyQXJyYXkocyk7CgkgICAgICAgIGZvciAodmFyIGkgLyppbnQqLyA9IDA7IGkgPCBzOyBpKyspIHsKCSAgICAgICAgICAgIHZhciB4aUludmVyc2UgPSB0aGlzLmZpZWxkLmludmVyc2UoZXJyb3JMb2NhdGlvbnNbaV0pOwoJICAgICAgICAgICAgdmFyIG51bWVyYXRvciA9IHRoaXMuZmllbGQuc3VidHJhY3QoMCwgZXJyb3JFdmFsdWF0b3IuZXZhbHVhdGVBdCh4aUludmVyc2UpKTsKCSAgICAgICAgICAgIHZhciBkZW5vbWluYXRvciA9IHRoaXMuZmllbGQuaW52ZXJzZShmb3JtYWxEZXJpdmF0aXZlLmV2YWx1YXRlQXQoeGlJbnZlcnNlKSk7CgkgICAgICAgICAgICByZXN1bHRbaV0gPSB0aGlzLmZpZWxkLm11bHRpcGx5KG51bWVyYXRvciwgZGVub21pbmF0b3IpOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiByZXN1bHQ7CgkgICAgfTsKCSAgICByZXR1cm4gRXJyb3JDb3JyZWN0aW9uOwoJfSgpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IEVycm9yQ29ycmVjdGlvbjsKCgl9KTsKCgl2YXIgQm91bmRpbmdCb3hfMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCS8qCgkqIENvcHlyaWdodCAyMDEzIFpYaW5nIGF1dGhvcnMKCSoKCSogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkqCgkqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkqCgkqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkqLwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCS8vIHBhY2thZ2UgY29tLmdvb2dsZS56eGluZy5wZGY0MTcuZGVjb2RlcjsKCS8vIGltcG9ydCBjb20uZ29vZ2xlLnp4aW5nLk5vdEZvdW5kRXhjZXB0aW9uOwoKCS8vIGltcG9ydCBjb20uZ29vZ2xlLnp4aW5nLlJlc3VsdFBvaW50OwoKCS8qKgoJICogQGF1dGhvciBHdWVudGhlciBHcmF1CgkgKi8KCXZhciBCb3VuZGluZ0JveCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBCb3VuZGluZ0JveChpbWFnZSwgdG9wTGVmdCwgYm90dG9tTGVmdCwgdG9wUmlnaHQsIGJvdHRvbVJpZ2h0KSB7CgkgICAgICAgIGlmIChpbWFnZSBpbnN0YW5jZW9mIEJvdW5kaW5nQm94KSB7CgkgICAgICAgICAgICB0aGlzLmNvbnN0cnVjdG9yXzIoaW1hZ2UpOwoJICAgICAgICB9CgkgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgdGhpcy5jb25zdHJ1Y3Rvcl8xKGltYWdlLCB0b3BMZWZ0LCBib3R0b21MZWZ0LCB0b3BSaWdodCwgYm90dG9tUmlnaHQpOwoJICAgICAgICB9CgkgICAgfQoJICAgIC8qKgoJICAgICAqCgkgICAgICogQHBhcmFtIGltYWdlCgkgICAgICogQHBhcmFtIHRvcExlZnQKCSAgICAgKiBAcGFyYW0gYm90dG9tTGVmdAoJICAgICAqIEBwYXJhbSB0b3BSaWdodAoJICAgICAqIEBwYXJhbSBib3R0b21SaWdodAoJICAgICAqCgkgICAgICogQHRocm93cyBOb3RGb3VuZEV4Y2VwdGlvbgoJICAgICAqLwoJICAgIEJvdW5kaW5nQm94LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcl8xID0gZnVuY3Rpb24gKGltYWdlLCB0b3BMZWZ0LCBib3R0b21MZWZ0LCB0b3BSaWdodCwgYm90dG9tUmlnaHQpIHsKCSAgICAgICAgdmFyIGxlZnRVbnNwZWNpZmllZCA9IHRvcExlZnQgPT0gbnVsbCB8fCBib3R0b21MZWZ0ID09IG51bGw7CgkgICAgICAgIHZhciByaWdodFVuc3BlY2lmaWVkID0gdG9wUmlnaHQgPT0gbnVsbCB8fCBib3R0b21SaWdodCA9PSBudWxsOwoJICAgICAgICBpZiAobGVmdFVuc3BlY2lmaWVkICYmIHJpZ2h0VW5zcGVjaWZpZWQpIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgfQoJICAgICAgICBpZiAobGVmdFVuc3BlY2lmaWVkKSB7CgkgICAgICAgICAgICB0b3BMZWZ0ID0gbmV3IFJlc3VsdFBvaW50XzEuZGVmYXVsdCgwLCB0b3BSaWdodC5nZXRZKCkpOwoJICAgICAgICAgICAgYm90dG9tTGVmdCA9IG5ldyBSZXN1bHRQb2ludF8xLmRlZmF1bHQoMCwgYm90dG9tUmlnaHQuZ2V0WSgpKTsKCSAgICAgICAgfQoJICAgICAgICBlbHNlIGlmIChyaWdodFVuc3BlY2lmaWVkKSB7CgkgICAgICAgICAgICB0b3BSaWdodCA9IG5ldyBSZXN1bHRQb2ludF8xLmRlZmF1bHQoaW1hZ2UuZ2V0V2lkdGgoKSAtIDEsIHRvcExlZnQuZ2V0WSgpKTsKCSAgICAgICAgICAgIGJvdHRvbVJpZ2h0ID0gbmV3IFJlc3VsdFBvaW50XzEuZGVmYXVsdChpbWFnZS5nZXRXaWR0aCgpIC0gMSwgYm90dG9tTGVmdC5nZXRZKCkpOwoJICAgICAgICB9CgkgICAgICAgIHRoaXMuaW1hZ2UgPSBpbWFnZTsKCSAgICAgICAgdGhpcy50b3BMZWZ0ID0gdG9wTGVmdDsKCSAgICAgICAgdGhpcy5ib3R0b21MZWZ0ID0gYm90dG9tTGVmdDsKCSAgICAgICAgdGhpcy50b3BSaWdodCA9IHRvcFJpZ2h0OwoJICAgICAgICB0aGlzLmJvdHRvbVJpZ2h0ID0gYm90dG9tUmlnaHQ7CgkgICAgICAgIHRoaXMubWluWCA9IE1hdGgudHJ1bmMoTWF0aC5taW4odG9wTGVmdC5nZXRYKCksIGJvdHRvbUxlZnQuZ2V0WCgpKSk7CgkgICAgICAgIHRoaXMubWF4WCA9IE1hdGgudHJ1bmMoTWF0aC5tYXgodG9wUmlnaHQuZ2V0WCgpLCBib3R0b21SaWdodC5nZXRYKCkpKTsKCSAgICAgICAgdGhpcy5taW5ZID0gTWF0aC50cnVuYyhNYXRoLm1pbih0b3BMZWZ0LmdldFkoKSwgdG9wUmlnaHQuZ2V0WSgpKSk7CgkgICAgICAgIHRoaXMubWF4WSA9IE1hdGgudHJ1bmMoTWF0aC5tYXgoYm90dG9tTGVmdC5nZXRZKCksIGJvdHRvbVJpZ2h0LmdldFkoKSkpOwoJICAgIH07CgkgICAgQm91bmRpbmdCb3gucHJvdG90eXBlLmNvbnN0cnVjdG9yXzIgPSBmdW5jdGlvbiAoYm91bmRpbmdCb3gpIHsKCSAgICAgICAgdGhpcy5pbWFnZSA9IGJvdW5kaW5nQm94LmltYWdlOwoJICAgICAgICB0aGlzLnRvcExlZnQgPSBib3VuZGluZ0JveC5nZXRUb3BMZWZ0KCk7CgkgICAgICAgIHRoaXMuYm90dG9tTGVmdCA9IGJvdW5kaW5nQm94LmdldEJvdHRvbUxlZnQoKTsKCSAgICAgICAgdGhpcy50b3BSaWdodCA9IGJvdW5kaW5nQm94LmdldFRvcFJpZ2h0KCk7CgkgICAgICAgIHRoaXMuYm90dG9tUmlnaHQgPSBib3VuZGluZ0JveC5nZXRCb3R0b21SaWdodCgpOwoJICAgICAgICB0aGlzLm1pblggPSBib3VuZGluZ0JveC5nZXRNaW5YKCk7CgkgICAgICAgIHRoaXMubWF4WCA9IGJvdW5kaW5nQm94LmdldE1heFgoKTsKCSAgICAgICAgdGhpcy5taW5ZID0gYm91bmRpbmdCb3guZ2V0TWluWSgpOwoJICAgICAgICB0aGlzLm1heFkgPSBib3VuZGluZ0JveC5nZXRNYXhZKCk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAdGhyb3dzIE5vdEZvdW5kRXhjZXB0aW9uCgkgICAgICovCgkgICAgQm91bmRpbmdCb3gubWVyZ2UgPSBmdW5jdGlvbiAobGVmdEJveCwgcmlnaHRCb3gpIHsKCSAgICAgICAgaWYgKGxlZnRCb3ggPT0gbnVsbCkgewoJICAgICAgICAgICAgcmV0dXJuIHJpZ2h0Qm94OwoJICAgICAgICB9CgkgICAgICAgIGlmIChyaWdodEJveCA9PSBudWxsKSB7CgkgICAgICAgICAgICByZXR1cm4gbGVmdEJveDsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gbmV3IEJvdW5kaW5nQm94KGxlZnRCb3guaW1hZ2UsIGxlZnRCb3gudG9wTGVmdCwgbGVmdEJveC5ib3R0b21MZWZ0LCByaWdodEJveC50b3BSaWdodCwgcmlnaHRCb3guYm90dG9tUmlnaHQpOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQHRocm93cyBOb3RGb3VuZEV4Y2VwdGlvbgoJICAgICAqLwoJICAgIEJvdW5kaW5nQm94LnByb3RvdHlwZS5hZGRNaXNzaW5nUm93cyA9IGZ1bmN0aW9uIChtaXNzaW5nU3RhcnRSb3dzLCBtaXNzaW5nRW5kUm93cywgaXNMZWZ0KSB7CgkgICAgICAgIHZhciBuZXdUb3BMZWZ0ID0gdGhpcy50b3BMZWZ0OwoJICAgICAgICB2YXIgbmV3Qm90dG9tTGVmdCA9IHRoaXMuYm90dG9tTGVmdDsKCSAgICAgICAgdmFyIG5ld1RvcFJpZ2h0ID0gdGhpcy50b3BSaWdodDsKCSAgICAgICAgdmFyIG5ld0JvdHRvbVJpZ2h0ID0gdGhpcy5ib3R0b21SaWdodDsKCSAgICAgICAgaWYgKG1pc3NpbmdTdGFydFJvd3MgPiAwKSB7CgkgICAgICAgICAgICB2YXIgdG9wXzEgPSBpc0xlZnQgPyB0aGlzLnRvcExlZnQgOiB0aGlzLnRvcFJpZ2h0OwoJICAgICAgICAgICAgdmFyIG5ld01pblkgPSBNYXRoLnRydW5jKHRvcF8xLmdldFkoKSAtIG1pc3NpbmdTdGFydFJvd3MpOwoJICAgICAgICAgICAgaWYgKG5ld01pblkgPCAwKSB7CgkgICAgICAgICAgICAgICAgbmV3TWluWSA9IDA7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICB2YXIgbmV3VG9wID0gbmV3IFJlc3VsdFBvaW50XzEuZGVmYXVsdCh0b3BfMS5nZXRYKCksIG5ld01pblkpOwoJICAgICAgICAgICAgaWYgKGlzTGVmdCkgewoJICAgICAgICAgICAgICAgIG5ld1RvcExlZnQgPSBuZXdUb3A7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICBuZXdUb3BSaWdodCA9IG5ld1RvcDsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICBpZiAobWlzc2luZ0VuZFJvd3MgPiAwKSB7CgkgICAgICAgICAgICB2YXIgYm90dG9tID0gaXNMZWZ0ID8gdGhpcy5ib3R0b21MZWZ0IDogdGhpcy5ib3R0b21SaWdodDsKCSAgICAgICAgICAgIHZhciBuZXdNYXhZID0gTWF0aC50cnVuYyhib3R0b20uZ2V0WSgpICsgbWlzc2luZ0VuZFJvd3MpOwoJICAgICAgICAgICAgaWYgKG5ld01heFkgPj0gdGhpcy5pbWFnZS5nZXRIZWlnaHQoKSkgewoJICAgICAgICAgICAgICAgIG5ld01heFkgPSB0aGlzLmltYWdlLmdldEhlaWdodCgpIC0gMTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHZhciBuZXdCb3R0b20gPSBuZXcgUmVzdWx0UG9pbnRfMS5kZWZhdWx0KGJvdHRvbS5nZXRYKCksIG5ld01heFkpOwoJICAgICAgICAgICAgaWYgKGlzTGVmdCkgewoJICAgICAgICAgICAgICAgIG5ld0JvdHRvbUxlZnQgPSBuZXdCb3R0b207CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICBuZXdCb3R0b21SaWdodCA9IG5ld0JvdHRvbTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gbmV3IEJvdW5kaW5nQm94KHRoaXMuaW1hZ2UsIG5ld1RvcExlZnQsIG5ld0JvdHRvbUxlZnQsIG5ld1RvcFJpZ2h0LCBuZXdCb3R0b21SaWdodCk7CgkgICAgfTsKCSAgICBCb3VuZGluZ0JveC5wcm90b3R5cGUuZ2V0TWluWCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMubWluWDsKCSAgICB9OwoJICAgIEJvdW5kaW5nQm94LnByb3RvdHlwZS5nZXRNYXhYID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5tYXhYOwoJICAgIH07CgkgICAgQm91bmRpbmdCb3gucHJvdG90eXBlLmdldE1pblkgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLm1pblk7CgkgICAgfTsKCSAgICBCb3VuZGluZ0JveC5wcm90b3R5cGUuZ2V0TWF4WSA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMubWF4WTsKCSAgICB9OwoJICAgIEJvdW5kaW5nQm94LnByb3RvdHlwZS5nZXRUb3BMZWZ0ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy50b3BMZWZ0OwoJICAgIH07CgkgICAgQm91bmRpbmdCb3gucHJvdG90eXBlLmdldFRvcFJpZ2h0ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy50b3BSaWdodDsKCSAgICB9OwoJICAgIEJvdW5kaW5nQm94LnByb3RvdHlwZS5nZXRCb3R0b21MZWZ0ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5ib3R0b21MZWZ0OwoJICAgIH07CgkgICAgQm91bmRpbmdCb3gucHJvdG90eXBlLmdldEJvdHRvbVJpZ2h0ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5ib3R0b21SaWdodDsKCSAgICB9OwoJICAgIHJldHVybiBCb3VuZGluZ0JveDsKCX0oKSk7CglleHBvcnRzLmRlZmF1bHQgPSBCb3VuZGluZ0JveDsKCgl9KTsKCgl2YXIgQmFyY29kZU1ldGFkYXRhXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CgkvKgoJICogQ29weXJpZ2h0IDIwMTMgWlhpbmcgYXV0aG9ycwoJICoKCSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkgKgoJICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSAqCgkgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSAqLwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCS8vIHBhY2thZ2UgY29tLmdvb2dsZS56eGluZy5wZGY0MTcuZGVjb2RlcjsKCS8qKgoJICogQGF1dGhvciBHdWVudGhlciBHcmF1CgkgKi8KCXZhciBCYXJjb2RlTWV0YWRhdGEgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgZnVuY3Rpb24gQmFyY29kZU1ldGFkYXRhKGNvbHVtbkNvdW50LCByb3dDb3VudFVwcGVyUGFydCwgcm93Q291bnRMb3dlclBhcnQsIGVycm9yQ29ycmVjdGlvbkxldmVsKSB7CgkgICAgICAgIHRoaXMuY29sdW1uQ291bnQgPSBjb2x1bW5Db3VudDsKCSAgICAgICAgdGhpcy5lcnJvckNvcnJlY3Rpb25MZXZlbCA9IGVycm9yQ29ycmVjdGlvbkxldmVsOwoJICAgICAgICB0aGlzLnJvd0NvdW50VXBwZXJQYXJ0ID0gcm93Q291bnRVcHBlclBhcnQ7CgkgICAgICAgIHRoaXMucm93Q291bnRMb3dlclBhcnQgPSByb3dDb3VudExvd2VyUGFydDsKCSAgICAgICAgdGhpcy5yb3dDb3VudCA9IHJvd0NvdW50VXBwZXJQYXJ0ICsgcm93Q291bnRMb3dlclBhcnQ7CgkgICAgfQoJICAgIEJhcmNvZGVNZXRhZGF0YS5wcm90b3R5cGUuZ2V0Q29sdW1uQ291bnQgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmNvbHVtbkNvdW50OwoJICAgIH07CgkgICAgQmFyY29kZU1ldGFkYXRhLnByb3RvdHlwZS5nZXRFcnJvckNvcnJlY3Rpb25MZXZlbCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JDb3JyZWN0aW9uTGV2ZWw7CgkgICAgfTsKCSAgICBCYXJjb2RlTWV0YWRhdGEucHJvdG90eXBlLmdldFJvd0NvdW50ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5yb3dDb3VudDsKCSAgICB9OwoJICAgIEJhcmNvZGVNZXRhZGF0YS5wcm90b3R5cGUuZ2V0Um93Q291bnRVcHBlclBhcnQgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLnJvd0NvdW50VXBwZXJQYXJ0OwoJICAgIH07CgkgICAgQmFyY29kZU1ldGFkYXRhLnByb3RvdHlwZS5nZXRSb3dDb3VudExvd2VyUGFydCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMucm93Q291bnRMb3dlclBhcnQ7CgkgICAgfTsKCSAgICByZXR1cm4gQmFyY29kZU1ldGFkYXRhOwoJfSgpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IEJhcmNvZGVNZXRhZGF0YTsKCgl9KTsKCgl2YXIgRm9ybWF0dGVyXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJLyoqCgkgKiBKYXZhIEZvcm1hdHRlciBjbGFzcyBwb2x5ZmlsbCB0aGF0IHdvcmtzIGluIHRoZSBKUyB3YXkuCgkgKi8KCXZhciBGb3JtYXR0ZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgZnVuY3Rpb24gRm9ybWF0dGVyKCkgewoJICAgICAgICB0aGlzLmJ1ZmZlciA9ICcnOwoJICAgIH0KCSAgICAvKioKCSAgICAgKgoJICAgICAqIEBzZWUgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzEzNDM5NzExLzQzNjc2ODMKCSAgICAgKgoJICAgICAqIEBwYXJhbSBzdHIKCSAgICAgKiBAcGFyYW0gYXJyCgkgICAgICovCgkgICAgRm9ybWF0dGVyLmZvcm0gPSBmdW5jdGlvbiAoc3RyLCBhcnIpIHsKCSAgICAgICAgdmFyIGkgPSAtMTsKCSAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soZXhwLCBwMCwgcDEsIHAyLCBwMywgcDQpIHsKCSAgICAgICAgICAgIGlmIChleHAgPT09ICclJScpCgkgICAgICAgICAgICAgICAgcmV0dXJuICclJzsKCSAgICAgICAgICAgIGlmIChhcnJbKytpXSA9PT0gdW5kZWZpbmVkKQoJICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CgkgICAgICAgICAgICBleHAgPSBwMiA/IHBhcnNlSW50KHAyLnN1YnN0cigxKSkgOiB1bmRlZmluZWQ7CgkgICAgICAgICAgICB2YXIgYmFzZSA9IHAzID8gcGFyc2VJbnQocDMuc3Vic3RyKDEpKSA6IHVuZGVmaW5lZDsKCSAgICAgICAgICAgIHZhciB2YWw7CgkgICAgICAgICAgICBzd2l0Y2ggKHA0KSB7CgkgICAgICAgICAgICAgICAgY2FzZSAncyc6CgkgICAgICAgICAgICAgICAgICAgIHZhbCA9IGFycltpXTsKCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgY2FzZSAnYyc6CgkgICAgICAgICAgICAgICAgICAgIHZhbCA9IGFycltpXVswXTsKCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgY2FzZSAnZic6CgkgICAgICAgICAgICAgICAgICAgIHZhbCA9IHBhcnNlRmxvYXQoYXJyW2ldKS50b0ZpeGVkKGV4cCk7CgkgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgIGNhc2UgJ3AnOgoJICAgICAgICAgICAgICAgICAgICB2YWwgPSBwYXJzZUZsb2F0KGFycltpXSkudG9QcmVjaXNpb24oZXhwKTsKCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgY2FzZSAnZSc6CgkgICAgICAgICAgICAgICAgICAgIHZhbCA9IHBhcnNlRmxvYXQoYXJyW2ldKS50b0V4cG9uZW50aWFsKGV4cCk7CgkgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgIGNhc2UgJ3gnOgoJICAgICAgICAgICAgICAgICAgICB2YWwgPSBwYXJzZUludChhcnJbaV0pLnRvU3RyaW5nKGJhc2UgPyBiYXNlIDogMTYpOwoJICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICBjYXNlICdkJzoKCSAgICAgICAgICAgICAgICAgICAgdmFsID0gcGFyc2VGbG9hdChwYXJzZUludChhcnJbaV0sIGJhc2UgPyBiYXNlIDogMTApLnRvUHJlY2lzaW9uKGV4cCkpLnRvRml4ZWQoMCk7CgkgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgdmFsID0gdHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgPyBKU09OLnN0cmluZ2lmeSh2YWwpIDogKCt2YWwpLnRvU3RyaW5nKGJhc2UpOwoJICAgICAgICAgICAgdmFyIHNpemUgPSBwYXJzZUludChwMSk7IC8qIHBhZGRpbmcgc2l6ZSAqLwoJICAgICAgICAgICAgdmFyIGNoID0gcDEgJiYgKHAxWzBdICsgJycpID09PSAnMCcgPyAnMCcgOiAnICc7IC8qIGlzbnVsbD8gKi8KCSAgICAgICAgICAgIHdoaWxlICh2YWwubGVuZ3RoIDwgc2l6ZSkKCSAgICAgICAgICAgICAgICB2YWwgPSBwMCAhPT0gdW5kZWZpbmVkID8gdmFsICsgY2ggOiBjaCArIHZhbDsgLyogaXNtaW51cz8gKi8KCSAgICAgICAgICAgIHJldHVybiB2YWw7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIHJlZ2V4ID0gLyUoLSk/KDA/WzAtOV0rKT8oWy5dWzAtOV0rKT8oWyNdWzAtOV0rKT8oW3NjZnBleGQlXSkvZzsKCSAgICAgICAgcmV0dXJuIHN0ci5yZXBsYWNlKHJlZ2V4LCBjYWxsYmFjayk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKgoJICAgICAqIEBwYXJhbSBhcHBlbmQgVGhlIG5ldyBzdHJpbmcgdG8gYXBwZW5kLgoJICAgICAqIEBwYXJhbSBhcmdzIEFyZ3VtZXRzIHZhbHVlcyB0byBiZSBmb3JtYXRlZC4KCSAgICAgKi8KCSAgICBGb3JtYXR0ZXIucHJvdG90eXBlLmZvcm1hdCA9IGZ1bmN0aW9uIChhcHBlbmQpIHsKCSAgICAgICAgdmFyIGFyZ3MgPSBbXTsKCSAgICAgICAgZm9yICh2YXIgX2kgPSAxOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHsKCSAgICAgICAgICAgIGFyZ3NbX2kgLSAxXSA9IGFyZ3VtZW50c1tfaV07CgkgICAgICAgIH0KCSAgICAgICAgdGhpcy5idWZmZXIgKz0gRm9ybWF0dGVyLmZvcm0oYXBwZW5kLCBhcmdzKTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIFJldHVybnMgdGhlIEZvcm1hdHRlciBzdHJpbmcgdmFsdWUuCgkgICAgICovCgkgICAgRm9ybWF0dGVyLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuYnVmZmVyOwoJICAgIH07CgkgICAgcmV0dXJuIEZvcm1hdHRlcjsKCX0oKSk7CglleHBvcnRzLmRlZmF1bHQgPSBGb3JtYXR0ZXI7CgoJfSk7CgoJdmFyIERldGVjdGlvblJlc3VsdENvbHVtbl8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJLyoKCSAqIENvcHlyaWdodCAyMDEzIFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCXZhciBfX3ZhbHVlcyA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX3ZhbHVlcykgfHwgZnVuY3Rpb24obykgewoJICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gImZ1bmN0aW9uIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwOwoJICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pOwoJICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gIm51bWJlciIpIHJldHVybiB7CgkgICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7CgkgICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07CgkgICAgICAgIH0KCSAgICB9OwoJICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/ICJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLiIgOiAiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpOwoJfTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgkvLyBwYWNrYWdlIGNvbS5nb29nbGUuenhpbmcucGRmNDE3LmRlY29kZXI7CgkvLyBpbXBvcnQgamF2YS51dGlsLkZvcm1hdHRlcjsKCgoJLyoqCgkgKiBAYXV0aG9yIEd1ZW50aGVyIEdyYXUKCSAqLwoJdmFyIERldGVjdGlvblJlc3VsdENvbHVtbiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBEZXRlY3Rpb25SZXN1bHRDb2x1bW4oYm91bmRpbmdCb3gpIHsKCSAgICAgICAgdGhpcy5ib3VuZGluZ0JveCA9IG5ldyBCb3VuZGluZ0JveF8xLmRlZmF1bHQoYm91bmRpbmdCb3gpOwoJICAgICAgICAvLyB0aGlzLmNvZGV3b3JkcyA9IG5ldyBDb2Rld29yZFtib3VuZGluZ0JveC5nZXRNYXhZKCkgLSBib3VuZGluZ0JveC5nZXRNaW5ZKCkgKyAxXTsKCSAgICAgICAgdGhpcy5jb2Rld29yZHMgPSBuZXcgQXJyYXkoYm91bmRpbmdCb3guZ2V0TWF4WSgpIC0gYm91bmRpbmdCb3guZ2V0TWluWSgpICsgMSk7CgkgICAgfQoJICAgIC8qZmluYWwqLyBEZXRlY3Rpb25SZXN1bHRDb2x1bW4ucHJvdG90eXBlLmdldENvZGV3b3JkTmVhcmJ5ID0gZnVuY3Rpb24gKGltYWdlUm93KSB7CgkgICAgICAgIHZhciBjb2Rld29yZCA9IHRoaXMuZ2V0Q29kZXdvcmQoaW1hZ2VSb3cpOwoJICAgICAgICBpZiAoY29kZXdvcmQgIT0gbnVsbCkgewoJICAgICAgICAgICAgcmV0dXJuIGNvZGV3b3JkOwoJICAgICAgICB9CgkgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgRGV0ZWN0aW9uUmVzdWx0Q29sdW1uLk1BWF9ORUFSQllfRElTVEFOQ0U7IGkrKykgewoJICAgICAgICAgICAgdmFyIG5lYXJJbWFnZVJvdyA9IHRoaXMuaW1hZ2VSb3dUb0NvZGV3b3JkSW5kZXgoaW1hZ2VSb3cpIC0gaTsKCSAgICAgICAgICAgIGlmIChuZWFySW1hZ2VSb3cgPj0gMCkgewoJICAgICAgICAgICAgICAgIGNvZGV3b3JkID0gdGhpcy5jb2Rld29yZHNbbmVhckltYWdlUm93XTsKCSAgICAgICAgICAgICAgICBpZiAoY29kZXdvcmQgIT0gbnVsbCkgewoJICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29kZXdvcmQ7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgbmVhckltYWdlUm93ID0gdGhpcy5pbWFnZVJvd1RvQ29kZXdvcmRJbmRleChpbWFnZVJvdykgKyBpOwoJICAgICAgICAgICAgaWYgKG5lYXJJbWFnZVJvdyA8IHRoaXMuY29kZXdvcmRzLmxlbmd0aCkgewoJICAgICAgICAgICAgICAgIGNvZGV3b3JkID0gdGhpcy5jb2Rld29yZHNbbmVhckltYWdlUm93XTsKCSAgICAgICAgICAgICAgICBpZiAoY29kZXdvcmQgIT0gbnVsbCkgewoJICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29kZXdvcmQ7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBudWxsOwoJICAgIH07CgkgICAgLypmaW5hbCBpbnQqLyBEZXRlY3Rpb25SZXN1bHRDb2x1bW4ucHJvdG90eXBlLmltYWdlUm93VG9Db2Rld29yZEluZGV4ID0gZnVuY3Rpb24gKGltYWdlUm93KSB7CgkgICAgICAgIHJldHVybiBpbWFnZVJvdyAtIHRoaXMuYm91bmRpbmdCb3guZ2V0TWluWSgpOwoJICAgIH07CgkgICAgLypmaW5hbCB2b2lkKi8gRGV0ZWN0aW9uUmVzdWx0Q29sdW1uLnByb3RvdHlwZS5zZXRDb2Rld29yZCA9IGZ1bmN0aW9uIChpbWFnZVJvdywgY29kZXdvcmQpIHsKCSAgICAgICAgdGhpcy5jb2Rld29yZHNbdGhpcy5pbWFnZVJvd1RvQ29kZXdvcmRJbmRleChpbWFnZVJvdyldID0gY29kZXdvcmQ7CgkgICAgfTsKCSAgICAvKmZpbmFsKi8gRGV0ZWN0aW9uUmVzdWx0Q29sdW1uLnByb3RvdHlwZS5nZXRDb2Rld29yZCA9IGZ1bmN0aW9uIChpbWFnZVJvdykgewoJICAgICAgICByZXR1cm4gdGhpcy5jb2Rld29yZHNbdGhpcy5pbWFnZVJvd1RvQ29kZXdvcmRJbmRleChpbWFnZVJvdyldOwoJICAgIH07CgkgICAgLypmaW5hbCovIERldGVjdGlvblJlc3VsdENvbHVtbi5wcm90b3R5cGUuZ2V0Qm91bmRpbmdCb3ggPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmJvdW5kaW5nQm94OwoJICAgIH07CgkgICAgLypmaW5hbCovIERldGVjdGlvblJlc3VsdENvbHVtbi5wcm90b3R5cGUuZ2V0Q29kZXdvcmRzID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5jb2Rld29yZHM7CgkgICAgfTsKCSAgICAvLyBAT3ZlcnJpZGUKCSAgICBEZXRlY3Rpb25SZXN1bHRDb2x1bW4ucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkgewoJICAgICAgICB2YXIgZV8xLCBfYTsKCSAgICAgICAgdmFyIGZvcm1hdHRlciA9IG5ldyBGb3JtYXR0ZXJfMS5kZWZhdWx0KCk7CgkgICAgICAgIHZhciByb3cgPSAwOwoJICAgICAgICB0cnkgewoJICAgICAgICAgICAgZm9yICh2YXIgX2IgPSBfX3ZhbHVlcyh0aGlzLmNvZGV3b3JkcyksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHsKCSAgICAgICAgICAgICAgICB2YXIgY29kZXdvcmQgPSBfYy52YWx1ZTsKCSAgICAgICAgICAgICAgICBpZiAoY29kZXdvcmQgPT0gbnVsbCkgewoJICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZXIuZm9ybWF0KCclM2Q6ICAgIHwgICAlbicsIHJvdysrKTsKCSAgICAgICAgICAgICAgICAgICAgY29udGludWU7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGZvcm1hdHRlci5mb3JtYXQoJyUzZDogJTNkfCUzZCVuJywgcm93KyssIGNvZGV3b3JkLmdldFJvd051bWJlcigpLCBjb2Rld29yZC5nZXRWYWx1ZSgpKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfQoJICAgICAgICBmaW5hbGx5IHsKCSAgICAgICAgICAgIHRyeSB7CgkgICAgICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfQoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBmb3JtYXR0ZXIudG9TdHJpbmcoKTsKCSAgICB9OwoJICAgIERldGVjdGlvblJlc3VsdENvbHVtbi5NQVhfTkVBUkJZX0RJU1RBTkNFID0gNTsKCSAgICByZXR1cm4gRGV0ZWN0aW9uUmVzdWx0Q29sdW1uOwoJfSgpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IERldGVjdGlvblJlc3VsdENvbHVtbjsKCgl9KTsKCgl2YXIgQmFyY29kZVZhbHVlXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CgkvKgoJICogQ29weXJpZ2h0IDIwMTMgWlhpbmcgYXV0aG9ycwoJICoKCSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkgKgoJICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSAqCgkgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSAqLwoJdmFyIF9fdmFsdWVzID0gKGNvbW1vbmpzR2xvYmFsICYmIGNvbW1vbmpzR2xvYmFsLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7CgkgICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSAiZnVuY3Rpb24iICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7CgkgICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7CgkgICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSAibnVtYmVyIikgcmV0dXJuIHsKCSAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkgewoJICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDsKCSAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTsKCSAgICAgICAgfQoJICAgIH07CgkgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gIk9iamVjdCBpcyBub3QgaXRlcmFibGUuIiA6ICJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuIik7Cgl9OwoJdmFyIF9fcmVhZCA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX3JlYWQpIHx8IGZ1bmN0aW9uIChvLCBuKSB7CgkgICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSAiZnVuY3Rpb24iICYmIG9bU3ltYm9sLml0ZXJhdG9yXTsKCSAgICBpZiAoIW0pIHJldHVybiBvOwoJICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlOwoJICAgIHRyeSB7CgkgICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpOwoJICAgIH0KCSAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH0KCSAgICBmaW5hbGx5IHsKCSAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpWyJyZXR1cm4iXSkpIG0uY2FsbChpKTsKCSAgICAgICAgfQoJICAgICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH0KCSAgICB9CgkgICAgcmV0dXJuIGFyOwoJfTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgkvLyBwYWNrYWdlIGNvbS5nb29nbGUuenhpbmcucGRmNDE3LmRlY29kZXI7CgkvLyBpbXBvcnQgY29tLmdvb2dsZS56eGluZy5wZGY0MTcuUERGNDE3Q29tbW9uOwoKCS8vIGltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwoJLy8gaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOwoJLy8gaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwoJLy8gaW1wb3J0IGphdmEudXRpbC5NYXA7CgkvLyBpbXBvcnQgamF2YS51dGlsLk1hcC5FbnRyeTsKCS8qKgoJICogQGF1dGhvciBHdWVudGhlciBHcmF1CgkgKi8KCXZhciBCYXJjb2RlVmFsdWUgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgZnVuY3Rpb24gQmFyY29kZVZhbHVlKCkgewoJICAgICAgICB0aGlzLnZhbHVlcyA9IG5ldyBNYXAoKTsKCSAgICB9CgkgICAgLyoqCgkgICAgICogQWRkIGFuIG9jY3VycmVuY2Ugb2YgYSB2YWx1ZQoJICAgICAqLwoJICAgIEJhcmNvZGVWYWx1ZS5wcm90b3R5cGUuc2V0VmFsdWUgPSBmdW5jdGlvbiAodmFsdWUpIHsKCSAgICAgICAgdmFsdWUgPSBNYXRoLnRydW5jKHZhbHVlKTsKCSAgICAgICAgdmFyIGNvbmZpZGVuY2UgPSB0aGlzLnZhbHVlcy5nZXQodmFsdWUpOwoJICAgICAgICBpZiAoY29uZmlkZW5jZSA9PSBudWxsKSB7CgkgICAgICAgICAgICBjb25maWRlbmNlID0gMDsKCSAgICAgICAgfQoJICAgICAgICBjb25maWRlbmNlKys7CgkgICAgICAgIHRoaXMudmFsdWVzLnNldCh2YWx1ZSwgY29uZmlkZW5jZSk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBEZXRlcm1pbmVzIHRoZSBtYXhpbXVtIG9jY3VycmVuY2Ugb2YgYSBzZXQgdmFsdWUgYW5kIHJldHVybnMgYWxsIHZhbHVlcyB3aGljaCB3ZXJlIHNldCB3aXRoIHRoaXMgb2NjdXJyZW5jZS4KCSAgICAgKiBAcmV0dXJuIGFuIGFycmF5IG9mIGludCwgY29udGFpbmluZyB0aGUgdmFsdWVzIHdpdGggdGhlIGhpZ2hlc3Qgb2NjdXJyZW5jZSwgb3IgbnVsbCwgaWYgbm8gdmFsdWUgd2FzIHNldAoJICAgICAqLwoJICAgIEJhcmNvZGVWYWx1ZS5wcm90b3R5cGUuZ2V0VmFsdWUgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHZhciBlXzEsIF9hOwoJICAgICAgICB2YXIgbWF4Q29uZmlkZW5jZSA9IC0xOwoJICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IEFycmF5KCk7CgkgICAgICAgIHZhciBfbG9vcF8xID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHsKCSAgICAgICAgICAgIHZhciBlbnRyeSA9IHsKCSAgICAgICAgICAgICAgICBnZXRLZXk6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGtleTsgfSwKCSAgICAgICAgICAgICAgICBnZXRWYWx1ZTogZnVuY3Rpb24gKCkgeyByZXR1cm4gdmFsdWU7IH0sCgkgICAgICAgICAgICB9OwoJICAgICAgICAgICAgaWYgKGVudHJ5LmdldFZhbHVlKCkgPiBtYXhDb25maWRlbmNlKSB7CgkgICAgICAgICAgICAgICAgbWF4Q29uZmlkZW5jZSA9IGVudHJ5LmdldFZhbHVlKCk7CgkgICAgICAgICAgICAgICAgcmVzdWx0ID0gW107CgkgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goZW50cnkuZ2V0S2V5KCkpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZWxzZSBpZiAoZW50cnkuZ2V0VmFsdWUoKSA9PT0gbWF4Q29uZmlkZW5jZSkgewoJICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGVudHJ5LmdldEtleSgpKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfTsKCSAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgIGZvciAodmFyIF9iID0gX192YWx1ZXModGhpcy52YWx1ZXMuZW50cmllcygpKSwgX2MgPSBfYi5uZXh0KCk7ICFfYy5kb25lOyBfYyA9IF9iLm5leHQoKSkgewoJICAgICAgICAgICAgICAgIHZhciBfZCA9IF9fcmVhZChfYy52YWx1ZSwgMiksIGtleSA9IF9kWzBdLCB2YWx1ZSA9IF9kWzFdOwoJICAgICAgICAgICAgICAgIF9sb29wXzEoa2V5LCB2YWx1ZSk7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH0KCSAgICAgICAgZmluYWxseSB7CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIGlmIChfYyAmJiAhX2MuZG9uZSAmJiAoX2EgPSBfYi5yZXR1cm4pKSBfYS5jYWxsKF9iKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH0KCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gUERGNDE3Q29tbW9uXzEuZGVmYXVsdC50b0ludEFycmF5KHJlc3VsdCk7CgkgICAgfTsKCSAgICBCYXJjb2RlVmFsdWUucHJvdG90eXBlLmdldENvbmZpZGVuY2UgPSBmdW5jdGlvbiAodmFsdWUpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVzLmdldCh2YWx1ZSk7CgkgICAgfTsKCSAgICByZXR1cm4gQmFyY29kZVZhbHVlOwoJfSgpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IEJhcmNvZGVWYWx1ZTsKCgl9KTsKCgl2YXIgRGV0ZWN0aW9uUmVzdWx0Um93SW5kaWNhdG9yQ29sdW1uXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CgkvKgoJICogQ29weXJpZ2h0IDIwMTMgWlhpbmcgYXV0aG9ycwoJICoKCSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkgKgoJICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSAqCgkgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSAqLwoJdmFyIF9fZXh0ZW5kcyA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7CgkgICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8CgkgICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8CgkgICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTsKCSAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgfTsKCSAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9CgkgICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTsKCSAgICB9OwoJfSkoKTsKCXZhciBfX3ZhbHVlcyA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX3ZhbHVlcykgfHwgZnVuY3Rpb24obykgewoJICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gImZ1bmN0aW9uIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwOwoJICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pOwoJICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gIm51bWJlciIpIHJldHVybiB7CgkgICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7CgkgICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07CgkgICAgICAgIH0KCSAgICB9OwoJICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/ICJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLiIgOiAiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpOwoJfTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgkvLyBpbXBvcnQgY29tLmdvb2dsZS56eGluZy5wZGY0MTcuUERGNDE3Q29tbW9uOwoKCgoKCS8qKgoJICogQGF1dGhvciBHdWVudGhlciBHcmF1CgkgKi8KCXZhciBEZXRlY3Rpb25SZXN1bHRSb3dJbmRpY2F0b3JDb2x1bW4gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7CgkgICAgX19leHRlbmRzKERldGVjdGlvblJlc3VsdFJvd0luZGljYXRvckNvbHVtbiwgX3N1cGVyKTsKCSAgICBmdW5jdGlvbiBEZXRlY3Rpb25SZXN1bHRSb3dJbmRpY2F0b3JDb2x1bW4oYm91bmRpbmdCb3gsIGlzTGVmdCkgewoJICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBib3VuZGluZ0JveCkgfHwgdGhpczsKCSAgICAgICAgX3RoaXMuX2lzTGVmdCA9IGlzTGVmdDsKCSAgICAgICAgcmV0dXJuIF90aGlzOwoJICAgIH0KCSAgICBEZXRlY3Rpb25SZXN1bHRSb3dJbmRpY2F0b3JDb2x1bW4ucHJvdG90eXBlLnNldFJvd051bWJlcnMgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHZhciBlXzEsIF9hOwoJICAgICAgICB0cnkgewoJICAgICAgICAgICAgZm9yICh2YXIgX2IgPSBfX3ZhbHVlcyh0aGlzLmdldENvZGV3b3JkcygpKSwgX2MgPSBfYi5uZXh0KCk7ICFfYy5kb25lOyBfYyA9IF9iLm5leHQoKSkgewoJICAgICAgICAgICAgICAgIHZhciBjb2Rld29yZCA9IF9jLnZhbHVlIC8qQ29kZXdvcmQqLzsKCSAgICAgICAgICAgICAgICBpZiAoY29kZXdvcmQgIT0gbnVsbCkgewoJICAgICAgICAgICAgICAgICAgICBjb2Rld29yZC5zZXRSb3dOdW1iZXJBc1Jvd0luZGljYXRvckNvbHVtbigpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfQoJICAgICAgICBmaW5hbGx5IHsKCSAgICAgICAgICAgIHRyeSB7CgkgICAgICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfQoJICAgICAgICB9CgkgICAgfTsKCSAgICAvLyBUT0RPIGltcGxlbWVudCBwcm9wZXJseQoJICAgIC8vIFRPRE8gbWF5YmUgd2Ugc2hvdWxkIGFkZCBtaXNzaW5nIGNvZGV3b3JkcyB0byBzdG9yZSB0aGUgY29ycmVjdCByb3cgbnVtYmVyIHRvIG1ha2UKCSAgICAvLyBmaW5kaW5nIHJvdyBudW1iZXJzIGZvciBvdGhlciBjb2x1bW5zIGVhc2llcgoJICAgIC8vIHVzZSByb3cgaGVpZ2h0IGNvdW50IHRvIG1ha2UgZGV0ZWN0aW9uIG9mIGludmFsaWQgcm93IG51bWJlcnMgbW9yZSByZWxpYWJsZQoJICAgIERldGVjdGlvblJlc3VsdFJvd0luZGljYXRvckNvbHVtbi5wcm90b3R5cGUuYWRqdXN0Q29tcGxldGVJbmRpY2F0b3JDb2x1bW5Sb3dOdW1iZXJzID0gZnVuY3Rpb24gKGJhcmNvZGVNZXRhZGF0YSkgewoJICAgICAgICB2YXIgY29kZXdvcmRzID0gdGhpcy5nZXRDb2Rld29yZHMoKTsKCSAgICAgICAgdGhpcy5zZXRSb3dOdW1iZXJzKCk7CgkgICAgICAgIHRoaXMucmVtb3ZlSW5jb3JyZWN0Q29kZXdvcmRzKGNvZGV3b3JkcywgYmFyY29kZU1ldGFkYXRhKTsKCSAgICAgICAgdmFyIGJvdW5kaW5nQm94ID0gdGhpcy5nZXRCb3VuZGluZ0JveCgpOwoJICAgICAgICB2YXIgdG9wID0gdGhpcy5faXNMZWZ0ID8gYm91bmRpbmdCb3guZ2V0VG9wTGVmdCgpIDogYm91bmRpbmdCb3guZ2V0VG9wUmlnaHQoKTsKCSAgICAgICAgdmFyIGJvdHRvbSA9IHRoaXMuX2lzTGVmdCA/IGJvdW5kaW5nQm94LmdldEJvdHRvbUxlZnQoKSA6IGJvdW5kaW5nQm94LmdldEJvdHRvbVJpZ2h0KCk7CgkgICAgICAgIHZhciBmaXJzdFJvdyA9IHRoaXMuaW1hZ2VSb3dUb0NvZGV3b3JkSW5kZXgoTWF0aC50cnVuYyh0b3AuZ2V0WSgpKSk7CgkgICAgICAgIHZhciBsYXN0Um93ID0gdGhpcy5pbWFnZVJvd1RvQ29kZXdvcmRJbmRleChNYXRoLnRydW5jKGJvdHRvbS5nZXRZKCkpKTsKCSAgICAgICAgLy8gV2UgbmVlZCB0byBiZSBjYXJlZnVsIHVzaW5nIHRoZSBhdmVyYWdlIHJvdyBoZWlnaHQuIEJhcmNvZGUgY291bGQgYmUgc2tld2VkIHNvIHRoYXQgd2UgaGF2ZSBzbWFsbGVyIGFuZAoJICAgICAgICAvLyB0YWxsZXIgcm93cwoJICAgICAgICAvLyBmbG9hdCBhdmVyYWdlUm93SGVpZ2h0ID0gKGxhc3RSb3cgLSBmaXJzdFJvdykgLyAvKihmbG9hdCkqLyBiYXJjb2RlTWV0YWRhdGEuZ2V0Um93Q291bnQoKTsKCSAgICAgICAgdmFyIGJhcmNvZGVSb3cgPSAtMTsKCSAgICAgICAgdmFyIG1heFJvd0hlaWdodCA9IDE7CgkgICAgICAgIHZhciBjdXJyZW50Um93SGVpZ2h0ID0gMDsKCSAgICAgICAgZm9yICh2YXIgY29kZXdvcmRzUm93IC8qaW50Ki8gPSBmaXJzdFJvdzsgY29kZXdvcmRzUm93IDwgbGFzdFJvdzsgY29kZXdvcmRzUm93KyspIHsKCSAgICAgICAgICAgIGlmIChjb2Rld29yZHNbY29kZXdvcmRzUm93XSA9PSBudWxsKSB7CgkgICAgICAgICAgICAgICAgY29udGludWU7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICB2YXIgY29kZXdvcmQgPSBjb2Rld29yZHNbY29kZXdvcmRzUm93XTsKCSAgICAgICAgICAgIC8vICAgICAgZmxvYXQgZXhwZWN0ZWRSb3dOdW1iZXIgPSAoY29kZXdvcmRzUm93IC0gZmlyc3RSb3cpIC8gYXZlcmFnZVJvd0hlaWdodDsKCSAgICAgICAgICAgIC8vICAgICAgaWYgKE1hdGguYWJzKGNvZGV3b3JkLmdldFJvd051bWJlcigpIC0gZXhwZWN0ZWRSb3dOdW1iZXIpID4gMikgewoJICAgICAgICAgICAgLy8gICAgICAgIFNpbXBsZUxvZy5sb2coTEVWRUwuV0FSTklORywKCSAgICAgICAgICAgIC8vICAgICAgICAgICAgIlJlbW92aW5nIGNvZGV3b3JkLCByb3dOdW1iZXJTa2V3IHRvbyBoaWdoLCBjb2Rld29yZFsiICsgY29kZXdvcmRzUm93ICsgIl06IEV4cGVjdGVkIFJvdzogIiArCgkgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICBleHBlY3RlZFJvd051bWJlciArICIsIFJlYWxSb3c6ICIgKyBjb2Rld29yZC5nZXRSb3dOdW1iZXIoKSArICIsIHZhbHVlOiAiICsgY29kZXdvcmQuZ2V0VmFsdWUoKSk7CgkgICAgICAgICAgICAvLyAgICAgICAgY29kZXdvcmRzW2NvZGV3b3Jkc1Jvd10gPSBudWxsOwoJICAgICAgICAgICAgLy8gICAgICB9CgkgICAgICAgICAgICB2YXIgcm93RGlmZmVyZW5jZSA9IGNvZGV3b3JkLmdldFJvd051bWJlcigpIC0gYmFyY29kZVJvdzsKCSAgICAgICAgICAgIC8vIFRPRE8gaW1wcm92ZSBoYW5kbGluZyB3aXRoIGNhc2Ugd2hlcmUgZmlyc3Qgcm93IGluZGljYXRvciBkb2Vzbid0IHN0YXJ0IHdpdGggMAoJICAgICAgICAgICAgaWYgKHJvd0RpZmZlcmVuY2UgPT09IDApIHsKCSAgICAgICAgICAgICAgICBjdXJyZW50Um93SGVpZ2h0Kys7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlIGlmIChyb3dEaWZmZXJlbmNlID09PSAxKSB7CgkgICAgICAgICAgICAgICAgbWF4Um93SGVpZ2h0ID0gTWF0aC5tYXgobWF4Um93SGVpZ2h0LCBjdXJyZW50Um93SGVpZ2h0KTsKCSAgICAgICAgICAgICAgICBjdXJyZW50Um93SGVpZ2h0ID0gMTsKCSAgICAgICAgICAgICAgICBiYXJjb2RlUm93ID0gY29kZXdvcmQuZ2V0Um93TnVtYmVyKCk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlIGlmIChyb3dEaWZmZXJlbmNlIDwgMCB8fAoJICAgICAgICAgICAgICAgIGNvZGV3b3JkLmdldFJvd051bWJlcigpID49IGJhcmNvZGVNZXRhZGF0YS5nZXRSb3dDb3VudCgpIHx8CgkgICAgICAgICAgICAgICAgcm93RGlmZmVyZW5jZSA+IGNvZGV3b3Jkc1JvdykgewoJICAgICAgICAgICAgICAgIGNvZGV3b3Jkc1tjb2Rld29yZHNSb3ddID0gbnVsbDsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgIHZhciBjaGVja2VkUm93cyA9IHZvaWQgMDsKCSAgICAgICAgICAgICAgICBpZiAobWF4Um93SGVpZ2h0ID4gMikgewoJICAgICAgICAgICAgICAgICAgICBjaGVja2VkUm93cyA9IChtYXhSb3dIZWlnaHQgLSAyKSAqIHJvd0RpZmZlcmVuY2U7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgICAgICBjaGVja2VkUm93cyA9IHJvd0RpZmZlcmVuY2U7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIHZhciBjbG9zZVByZXZpb3VzQ29kZXdvcmRGb3VuZCA9IGNoZWNrZWRSb3dzID49IGNvZGV3b3Jkc1JvdzsKCSAgICAgICAgICAgICAgICBmb3IgKHZhciBpIC8qaW50Ki8gPSAxOyBpIDw9IGNoZWNrZWRSb3dzICYmICFjbG9zZVByZXZpb3VzQ29kZXdvcmRGb3VuZDsgaSsrKSB7CgkgICAgICAgICAgICAgICAgICAgIC8vIHRoZXJlIG11c3QgYmUgKGhlaWdodCAqIHJvd0RpZmZlcmVuY2UpIG51bWJlciBvZiBjb2Rld29yZHMgbWlzc2luZy4gRm9yIG5vdyB3ZSBhc3N1bWUgaGVpZ2h0ID0gMS4KCSAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBzaG91bGQgaG9wZWZ1bGx5IGdldCByaWQgb2YgbW9zdCBwcm9ibGVtcyBhbHJlYWR5LgoJICAgICAgICAgICAgICAgICAgICBjbG9zZVByZXZpb3VzQ29kZXdvcmRGb3VuZCA9IGNvZGV3b3Jkc1tjb2Rld29yZHNSb3cgLSBpXSAhPSBudWxsOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBpZiAoY2xvc2VQcmV2aW91c0NvZGV3b3JkRm91bmQpIHsKCSAgICAgICAgICAgICAgICAgICAgY29kZXdvcmRzW2NvZGV3b3Jkc1Jvd10gPSBudWxsOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICAgICAgYmFyY29kZVJvdyA9IGNvZGV3b3JkLmdldFJvd051bWJlcigpOwoJICAgICAgICAgICAgICAgICAgICBjdXJyZW50Um93SGVpZ2h0ID0gMTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgLy8gcmV0dXJuIChpbnQpIChhdmVyYWdlUm93SGVpZ2h0ICsgMC41KTsKCSAgICB9OwoJICAgIERldGVjdGlvblJlc3VsdFJvd0luZGljYXRvckNvbHVtbi5wcm90b3R5cGUuZ2V0Um93SGVpZ2h0cyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgdmFyIGVfMiwgX2E7CgkgICAgICAgIHZhciBiYXJjb2RlTWV0YWRhdGEgPSB0aGlzLmdldEJhcmNvZGVNZXRhZGF0YSgpOwoJICAgICAgICBpZiAoYmFyY29kZU1ldGFkYXRhID09IG51bGwpIHsKCSAgICAgICAgICAgIHJldHVybiBudWxsOwoJICAgICAgICB9CgkgICAgICAgIHRoaXMuYWRqdXN0SW5jb21wbGV0ZUluZGljYXRvckNvbHVtblJvd051bWJlcnMoYmFyY29kZU1ldGFkYXRhKTsKCSAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBJbnQzMkFycmF5KGJhcmNvZGVNZXRhZGF0YS5nZXRSb3dDb3VudCgpKTsKCSAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgIGZvciAodmFyIF9iID0gX192YWx1ZXModGhpcy5nZXRDb2Rld29yZHMoKSksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHsKCSAgICAgICAgICAgICAgICB2YXIgY29kZXdvcmQgPSBfYy52YWx1ZSAvKkNvZGV3b3JkKi87CgkgICAgICAgICAgICAgICAgaWYgKGNvZGV3b3JkICE9IG51bGwpIHsKCSAgICAgICAgICAgICAgICAgICAgdmFyIHJvd051bWJlciA9IGNvZGV3b3JkLmdldFJvd051bWJlcigpOwoJICAgICAgICAgICAgICAgICAgICBpZiAocm93TnVtYmVyID49IHJlc3VsdC5sZW5ndGgpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgbW9yZSByb3dzIHRoYW4gdGhlIGJhcmNvZGUgbWV0YWRhdGEgYWxsb3dzIGZvciwgaWdub3JlIHRoZW0uCgkgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICByZXN1bHRbcm93TnVtYmVyXSsrOwoJICAgICAgICAgICAgICAgIH0gLy8gZWxzZSB0aHJvdyBleGNlcHRpb24/CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgY2F0Y2ggKGVfMl8xKSB7IGVfMiA9IHsgZXJyb3I6IGVfMl8xIH07IH0KCSAgICAgICAgZmluYWxseSB7CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIGlmIChfYyAmJiAhX2MuZG9uZSAmJiAoX2EgPSBfYi5yZXR1cm4pKSBfYS5jYWxsKF9iKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8yKSB0aHJvdyBlXzIuZXJyb3I7IH0KCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gcmVzdWx0OwoJICAgIH07CgkgICAgLy8gVE9ETyBtYXliZSB3ZSBzaG91bGQgYWRkIG1pc3NpbmcgY29kZXdvcmRzIHRvIHN0b3JlIHRoZSBjb3JyZWN0IHJvdyBudW1iZXIgdG8gbWFrZQoJICAgIC8vIGZpbmRpbmcgcm93IG51bWJlcnMgZm9yIG90aGVyIGNvbHVtbnMgZWFzaWVyCgkgICAgLy8gdXNlIHJvdyBoZWlnaHQgY291bnQgdG8gbWFrZSBkZXRlY3Rpb24gb2YgaW52YWxpZCByb3cgbnVtYmVycyBtb3JlIHJlbGlhYmxlCgkgICAgRGV0ZWN0aW9uUmVzdWx0Um93SW5kaWNhdG9yQ29sdW1uLnByb3RvdHlwZS5hZGp1c3RJbmNvbXBsZXRlSW5kaWNhdG9yQ29sdW1uUm93TnVtYmVycyA9IGZ1bmN0aW9uIChiYXJjb2RlTWV0YWRhdGEpIHsKCSAgICAgICAgdmFyIGJvdW5kaW5nQm94ID0gdGhpcy5nZXRCb3VuZGluZ0JveCgpOwoJICAgICAgICB2YXIgdG9wID0gdGhpcy5faXNMZWZ0ID8gYm91bmRpbmdCb3guZ2V0VG9wTGVmdCgpIDogYm91bmRpbmdCb3guZ2V0VG9wUmlnaHQoKTsKCSAgICAgICAgdmFyIGJvdHRvbSA9IHRoaXMuX2lzTGVmdCA/IGJvdW5kaW5nQm94LmdldEJvdHRvbUxlZnQoKSA6IGJvdW5kaW5nQm94LmdldEJvdHRvbVJpZ2h0KCk7CgkgICAgICAgIHZhciBmaXJzdFJvdyA9IHRoaXMuaW1hZ2VSb3dUb0NvZGV3b3JkSW5kZXgoTWF0aC50cnVuYyh0b3AuZ2V0WSgpKSk7CgkgICAgICAgIHZhciBsYXN0Um93ID0gdGhpcy5pbWFnZVJvd1RvQ29kZXdvcmRJbmRleChNYXRoLnRydW5jKGJvdHRvbS5nZXRZKCkpKTsKCSAgICAgICAgLy8gZmxvYXQgYXZlcmFnZVJvd0hlaWdodCA9IChsYXN0Um93IC0gZmlyc3RSb3cpIC8gLyooZmxvYXQpKi8gYmFyY29kZU1ldGFkYXRhLmdldFJvd0NvdW50KCk7CgkgICAgICAgIHZhciBjb2Rld29yZHMgPSB0aGlzLmdldENvZGV3b3JkcygpOwoJICAgICAgICB2YXIgYmFyY29kZVJvdyA9IC0xOwoJICAgICAgICBmb3IgKHZhciBjb2Rld29yZHNSb3cgLyppbnQqLyA9IGZpcnN0Um93OyBjb2Rld29yZHNSb3cgPCBsYXN0Um93OyBjb2Rld29yZHNSb3crKykgewoJICAgICAgICAgICAgaWYgKGNvZGV3b3Jkc1tjb2Rld29yZHNSb3ddID09IG51bGwpIHsKCSAgICAgICAgICAgICAgICBjb250aW51ZTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHZhciBjb2Rld29yZCA9IGNvZGV3b3Jkc1tjb2Rld29yZHNSb3ddOwoJICAgICAgICAgICAgY29kZXdvcmQuc2V0Um93TnVtYmVyQXNSb3dJbmRpY2F0b3JDb2x1bW4oKTsKCSAgICAgICAgICAgIHZhciByb3dEaWZmZXJlbmNlID0gY29kZXdvcmQuZ2V0Um93TnVtYmVyKCkgLSBiYXJjb2RlUm93OwoJICAgICAgICAgICAgLy8gVE9ETyBpbXByb3ZlIGhhbmRsaW5nIHdpdGggY2FzZSB3aGVyZSBmaXJzdCByb3cgaW5kaWNhdG9yIGRvZXNuJ3Qgc3RhcnQgd2l0aCAwCgkgICAgICAgICAgICBpZiAocm93RGlmZmVyZW5jZSA9PT0gMCkgOwoJICAgICAgICAgICAgZWxzZSBpZiAocm93RGlmZmVyZW5jZSA9PT0gMSkgewoJICAgICAgICAgICAgICAgIGJhcmNvZGVSb3cgPSBjb2Rld29yZC5nZXRSb3dOdW1iZXIoKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGVsc2UgaWYgKGNvZGV3b3JkLmdldFJvd051bWJlcigpID49IGJhcmNvZGVNZXRhZGF0YS5nZXRSb3dDb3VudCgpKSB7CgkgICAgICAgICAgICAgICAgY29kZXdvcmRzW2NvZGV3b3Jkc1Jvd10gPSBudWxsOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgYmFyY29kZVJvdyA9IGNvZGV3b3JkLmdldFJvd051bWJlcigpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIC8vIHJldHVybiAoaW50KSAoYXZlcmFnZVJvd0hlaWdodCArIDAuNSk7CgkgICAgfTsKCSAgICBEZXRlY3Rpb25SZXN1bHRSb3dJbmRpY2F0b3JDb2x1bW4ucHJvdG90eXBlLmdldEJhcmNvZGVNZXRhZGF0YSA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgdmFyIGVfMywgX2E7CgkgICAgICAgIHZhciBjb2Rld29yZHMgPSB0aGlzLmdldENvZGV3b3JkcygpOwoJICAgICAgICB2YXIgYmFyY29kZUNvbHVtbkNvdW50ID0gbmV3IEJhcmNvZGVWYWx1ZV8xLmRlZmF1bHQoKTsKCSAgICAgICAgdmFyIGJhcmNvZGVSb3dDb3VudFVwcGVyUGFydCA9IG5ldyBCYXJjb2RlVmFsdWVfMS5kZWZhdWx0KCk7CgkgICAgICAgIHZhciBiYXJjb2RlUm93Q291bnRMb3dlclBhcnQgPSBuZXcgQmFyY29kZVZhbHVlXzEuZGVmYXVsdCgpOwoJICAgICAgICB2YXIgYmFyY29kZUVDTGV2ZWwgPSBuZXcgQmFyY29kZVZhbHVlXzEuZGVmYXVsdCgpOwoJICAgICAgICB0cnkgewoJICAgICAgICAgICAgZm9yICh2YXIgY29kZXdvcmRzXzEgPSBfX3ZhbHVlcyhjb2Rld29yZHMpLCBjb2Rld29yZHNfMV8xID0gY29kZXdvcmRzXzEubmV4dCgpOyAhY29kZXdvcmRzXzFfMS5kb25lOyBjb2Rld29yZHNfMV8xID0gY29kZXdvcmRzXzEubmV4dCgpKSB7CgkgICAgICAgICAgICAgICAgdmFyIGNvZGV3b3JkID0gY29kZXdvcmRzXzFfMS52YWx1ZSAvKkNvZGV3b3JkKi87CgkgICAgICAgICAgICAgICAgaWYgKGNvZGV3b3JkID09IG51bGwpIHsKCSAgICAgICAgICAgICAgICAgICAgY29udGludWU7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGNvZGV3b3JkLnNldFJvd051bWJlckFzUm93SW5kaWNhdG9yQ29sdW1uKCk7CgkgICAgICAgICAgICAgICAgdmFyIHJvd0luZGljYXRvclZhbHVlID0gY29kZXdvcmQuZ2V0VmFsdWUoKSAlIDMwOwoJICAgICAgICAgICAgICAgIHZhciBjb2Rld29yZFJvd051bWJlciA9IGNvZGV3b3JkLmdldFJvd051bWJlcigpOwoJICAgICAgICAgICAgICAgIGlmICghdGhpcy5faXNMZWZ0KSB7CgkgICAgICAgICAgICAgICAgICAgIGNvZGV3b3JkUm93TnVtYmVyICs9IDI7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIHN3aXRjaCAoY29kZXdvcmRSb3dOdW1iZXIgJSAzKSB7CgkgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKCSAgICAgICAgICAgICAgICAgICAgICAgIGJhcmNvZGVSb3dDb3VudFVwcGVyUGFydC5zZXRWYWx1ZShyb3dJbmRpY2F0b3JWYWx1ZSAqIDMgKyAxKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CgkgICAgICAgICAgICAgICAgICAgICAgICBiYXJjb2RlRUNMZXZlbC5zZXRWYWx1ZShyb3dJbmRpY2F0b3JWYWx1ZSAvIDMpOwoJICAgICAgICAgICAgICAgICAgICAgICAgYmFyY29kZVJvd0NvdW50TG93ZXJQYXJ0LnNldFZhbHVlKHJvd0luZGljYXRvclZhbHVlICUgMyk7CgkgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICAgICAgY2FzZSAyOgoJICAgICAgICAgICAgICAgICAgICAgICAgYmFyY29kZUNvbHVtbkNvdW50LnNldFZhbHVlKHJvd0luZGljYXRvclZhbHVlICsgMSk7CgkgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgY2F0Y2ggKGVfM18xKSB7IGVfMyA9IHsgZXJyb3I6IGVfM18xIH07IH0KCSAgICAgICAgZmluYWxseSB7CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIGlmIChjb2Rld29yZHNfMV8xICYmICFjb2Rld29yZHNfMV8xLmRvbmUgJiYgKF9hID0gY29kZXdvcmRzXzEucmV0dXJuKSkgX2EuY2FsbChjb2Rld29yZHNfMSk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMykgdGhyb3cgZV8zLmVycm9yOyB9CgkgICAgICAgIH0KCSAgICAgICAgLy8gTWF5YmUgd2Ugc2hvdWxkIGNoZWNrIGlmIHdlIGhhdmUgYW1iaWd1b3VzIHZhbHVlcz8KCSAgICAgICAgaWYgKChiYXJjb2RlQ29sdW1uQ291bnQuZ2V0VmFsdWUoKS5sZW5ndGggPT09IDApIHx8CgkgICAgICAgICAgICAoYmFyY29kZVJvd0NvdW50VXBwZXJQYXJ0LmdldFZhbHVlKCkubGVuZ3RoID09PSAwKSB8fAoJICAgICAgICAgICAgKGJhcmNvZGVSb3dDb3VudExvd2VyUGFydC5nZXRWYWx1ZSgpLmxlbmd0aCA9PT0gMCkgfHwKCSAgICAgICAgICAgIChiYXJjb2RlRUNMZXZlbC5nZXRWYWx1ZSgpLmxlbmd0aCA9PT0gMCkgfHwKCSAgICAgICAgICAgIGJhcmNvZGVDb2x1bW5Db3VudC5nZXRWYWx1ZSgpWzBdIDwgMSB8fAoJICAgICAgICAgICAgYmFyY29kZVJvd0NvdW50VXBwZXJQYXJ0LmdldFZhbHVlKClbMF0gKyBiYXJjb2RlUm93Q291bnRMb3dlclBhcnQuZ2V0VmFsdWUoKVswXSA8IFBERjQxN0NvbW1vbl8xLmRlZmF1bHQuTUlOX1JPV1NfSU5fQkFSQ09ERSB8fAoJICAgICAgICAgICAgYmFyY29kZVJvd0NvdW50VXBwZXJQYXJ0LmdldFZhbHVlKClbMF0gKyBiYXJjb2RlUm93Q291bnRMb3dlclBhcnQuZ2V0VmFsdWUoKVswXSA+IFBERjQxN0NvbW1vbl8xLmRlZmF1bHQuTUFYX1JPV1NfSU5fQkFSQ09ERSkgewoJICAgICAgICAgICAgcmV0dXJuIG51bGw7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGJhcmNvZGVNZXRhZGF0YSA9IG5ldyBCYXJjb2RlTWV0YWRhdGFfMS5kZWZhdWx0KGJhcmNvZGVDb2x1bW5Db3VudC5nZXRWYWx1ZSgpWzBdLCBiYXJjb2RlUm93Q291bnRVcHBlclBhcnQuZ2V0VmFsdWUoKVswXSwgYmFyY29kZVJvd0NvdW50TG93ZXJQYXJ0LmdldFZhbHVlKClbMF0sIGJhcmNvZGVFQ0xldmVsLmdldFZhbHVlKClbMF0pOwoJICAgICAgICB0aGlzLnJlbW92ZUluY29ycmVjdENvZGV3b3Jkcyhjb2Rld29yZHMsIGJhcmNvZGVNZXRhZGF0YSk7CgkgICAgICAgIHJldHVybiBiYXJjb2RlTWV0YWRhdGE7CgkgICAgfTsKCSAgICBEZXRlY3Rpb25SZXN1bHRSb3dJbmRpY2F0b3JDb2x1bW4ucHJvdG90eXBlLnJlbW92ZUluY29ycmVjdENvZGV3b3JkcyA9IGZ1bmN0aW9uIChjb2Rld29yZHMsIGJhcmNvZGVNZXRhZGF0YSkgewoJICAgICAgICAvLyBSZW1vdmUgY29kZXdvcmRzIHdoaWNoIGRvIG5vdCBtYXRjaCB0aGUgbWV0YWRhdGEKCSAgICAgICAgLy8gVE9ETyBNYXliZSB3ZSBzaG91bGQga2VlcCB0aGUgaW5jb3JyZWN0IGNvZGV3b3JkcyBmb3IgdGhlIHN0YXJ0IGFuZCBlbmQgcG9zaXRpb25zPwoJICAgICAgICBmb3IgKHZhciBjb2Rld29yZFJvdyAvKmludCovID0gMDsgY29kZXdvcmRSb3cgPCBjb2Rld29yZHMubGVuZ3RoOyBjb2Rld29yZFJvdysrKSB7CgkgICAgICAgICAgICB2YXIgY29kZXdvcmQgPSBjb2Rld29yZHNbY29kZXdvcmRSb3ddOwoJICAgICAgICAgICAgaWYgKGNvZGV3b3Jkc1tjb2Rld29yZFJvd10gPT0gbnVsbCkgewoJICAgICAgICAgICAgICAgIGNvbnRpbnVlOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgdmFyIHJvd0luZGljYXRvclZhbHVlID0gY29kZXdvcmQuZ2V0VmFsdWUoKSAlIDMwOwoJICAgICAgICAgICAgdmFyIGNvZGV3b3JkUm93TnVtYmVyID0gY29kZXdvcmQuZ2V0Um93TnVtYmVyKCk7CgkgICAgICAgICAgICBpZiAoY29kZXdvcmRSb3dOdW1iZXIgPiBiYXJjb2RlTWV0YWRhdGEuZ2V0Um93Q291bnQoKSkgewoJICAgICAgICAgICAgICAgIGNvZGV3b3Jkc1tjb2Rld29yZFJvd10gPSBudWxsOwoJICAgICAgICAgICAgICAgIGNvbnRpbnVlOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgaWYgKCF0aGlzLl9pc0xlZnQpIHsKCSAgICAgICAgICAgICAgICBjb2Rld29yZFJvd051bWJlciArPSAyOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgc3dpdGNoIChjb2Rld29yZFJvd051bWJlciAlIDMpIHsKCSAgICAgICAgICAgICAgICBjYXNlIDA6CgkgICAgICAgICAgICAgICAgICAgIGlmIChyb3dJbmRpY2F0b3JWYWx1ZSAqIDMgKyAxICE9PSBiYXJjb2RlTWV0YWRhdGEuZ2V0Um93Q291bnRVcHBlclBhcnQoKSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgY29kZXdvcmRzW2NvZGV3b3JkUm93XSA9IG51bGw7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgY2FzZSAxOgoJICAgICAgICAgICAgICAgICAgICBpZiAoTWF0aC50cnVuYyhyb3dJbmRpY2F0b3JWYWx1ZSAvIDMpICE9PSBiYXJjb2RlTWV0YWRhdGEuZ2V0RXJyb3JDb3JyZWN0aW9uTGV2ZWwoKSB8fAoJICAgICAgICAgICAgICAgICAgICAgICAgcm93SW5kaWNhdG9yVmFsdWUgJSAzICE9PSBiYXJjb2RlTWV0YWRhdGEuZ2V0Um93Q291bnRMb3dlclBhcnQoKSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgY29kZXdvcmRzW2NvZGV3b3JkUm93XSA9IG51bGw7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgY2FzZSAyOgoJICAgICAgICAgICAgICAgICAgICBpZiAocm93SW5kaWNhdG9yVmFsdWUgKyAxICE9PSBiYXJjb2RlTWV0YWRhdGEuZ2V0Q29sdW1uQ291bnQoKSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgY29kZXdvcmRzW2NvZGV3b3JkUm93XSA9IG51bGw7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICB9OwoJICAgIERldGVjdGlvblJlc3VsdFJvd0luZGljYXRvckNvbHVtbi5wcm90b3R5cGUuaXNMZWZ0ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5faXNMZWZ0OwoJICAgIH07CgkgICAgLy8gQE92ZXJyaWRlCgkgICAgRGV0ZWN0aW9uUmVzdWx0Um93SW5kaWNhdG9yQ29sdW1uLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuICdJc0xlZnQ6ICcgKyB0aGlzLl9pc0xlZnQgKyAnXG4nICsgX3N1cGVyLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHRoaXMpOwoJICAgIH07CgkgICAgcmV0dXJuIERldGVjdGlvblJlc3VsdFJvd0luZGljYXRvckNvbHVtbjsKCX0oRGV0ZWN0aW9uUmVzdWx0Q29sdW1uXzEuZGVmYXVsdCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gRGV0ZWN0aW9uUmVzdWx0Um93SW5kaWNhdG9yQ29sdW1uOwoKCX0pOwoKCXZhciBEZXRlY3Rpb25SZXN1bHRfMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCS8qCgkgKiBDb3B5cmlnaHQgMjAxMyBaWGluZyBhdXRob3JzCgkgKgoJICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSAqCgkgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJICoKCSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJICovCgl2YXIgX192YWx1ZXMgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX192YWx1ZXMpIHx8IGZ1bmN0aW9uKG8pIHsKCSAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09ICJmdW5jdGlvbiIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDsKCSAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTsKCSAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09ICJudW1iZXIiKSByZXR1cm4gewoJICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7CgkgICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwOwoJICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9OwoJICAgICAgICB9CgkgICAgfTsKCSAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyAiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS4iIDogIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC4iKTsKCX07CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJLy8gcGFja2FnZSBjb20uZ29vZ2xlLnp4aW5nLnBkZjQxNy5kZWNvZGVyOwoJLy8gaW1wb3J0IGNvbS5nb29nbGUuenhpbmcucGRmNDE3LlBERjQxN0NvbW1vbjsKCgoJLyoqCgkgKiBAYXV0aG9yIEd1ZW50aGVyIEdyYXUKCSAqLwoJdmFyIERldGVjdGlvblJlc3VsdCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBEZXRlY3Rpb25SZXN1bHQoYmFyY29kZU1ldGFkYXRhLCBib3VuZGluZ0JveCkgewoJICAgICAgICAvKmZpbmFsKi8gdGhpcy5BREpVU1RfUk9XX05VTUJFUl9TS0lQID0gMjsKCSAgICAgICAgdGhpcy5iYXJjb2RlTWV0YWRhdGEgPSBiYXJjb2RlTWV0YWRhdGE7CgkgICAgICAgIHRoaXMuYmFyY29kZUNvbHVtbkNvdW50ID0gYmFyY29kZU1ldGFkYXRhLmdldENvbHVtbkNvdW50KCk7CgkgICAgICAgIHRoaXMuYm91bmRpbmdCb3ggPSBib3VuZGluZ0JveDsKCSAgICAgICAgLy8gdGhpcy5kZXRlY3Rpb25SZXN1bHRDb2x1bW5zID0gbmV3IERldGVjdGlvblJlc3VsdENvbHVtblt0aGlzLmJhcmNvZGVDb2x1bW5Db3VudCArIDJdOwoJICAgICAgICB0aGlzLmRldGVjdGlvblJlc3VsdENvbHVtbnMgPSBuZXcgQXJyYXkodGhpcy5iYXJjb2RlQ29sdW1uQ291bnQgKyAyKTsKCSAgICB9CgkgICAgRGV0ZWN0aW9uUmVzdWx0LnByb3RvdHlwZS5nZXREZXRlY3Rpb25SZXN1bHRDb2x1bW5zID0gZnVuY3Rpb24gKCkgewoJICAgICAgICB0aGlzLmFkanVzdEluZGljYXRvckNvbHVtblJvd051bWJlcnModGhpcy5kZXRlY3Rpb25SZXN1bHRDb2x1bW5zWzBdKTsKCSAgICAgICAgdGhpcy5hZGp1c3RJbmRpY2F0b3JDb2x1bW5Sb3dOdW1iZXJzKHRoaXMuZGV0ZWN0aW9uUmVzdWx0Q29sdW1uc1t0aGlzLmJhcmNvZGVDb2x1bW5Db3VudCArIDFdKTsKCSAgICAgICAgdmFyIHVuYWRqdXN0ZWRDb2Rld29yZENvdW50ID0gUERGNDE3Q29tbW9uXzEuZGVmYXVsdC5NQVhfQ09ERVdPUkRTX0lOX0JBUkNPREU7CgkgICAgICAgIHZhciBwcmV2aW91c1VuYWRqdXN0ZWRDb3VudDsKCSAgICAgICAgZG8gewoJICAgICAgICAgICAgcHJldmlvdXNVbmFkanVzdGVkQ291bnQgPSB1bmFkanVzdGVkQ29kZXdvcmRDb3VudDsKCSAgICAgICAgICAgIHVuYWRqdXN0ZWRDb2Rld29yZENvdW50ID0gdGhpcy5hZGp1c3RSb3dOdW1iZXJzQW5kR2V0Q291bnQoKTsKCSAgICAgICAgfSB3aGlsZSAodW5hZGp1c3RlZENvZGV3b3JkQ291bnQgPiAwICYmIHVuYWRqdXN0ZWRDb2Rld29yZENvdW50IDwgcHJldmlvdXNVbmFkanVzdGVkQ291bnQpOwoJICAgICAgICByZXR1cm4gdGhpcy5kZXRlY3Rpb25SZXN1bHRDb2x1bW5zOwoJICAgIH07CgkgICAgRGV0ZWN0aW9uUmVzdWx0LnByb3RvdHlwZS5hZGp1c3RJbmRpY2F0b3JDb2x1bW5Sb3dOdW1iZXJzID0gZnVuY3Rpb24gKGRldGVjdGlvblJlc3VsdENvbHVtbikgewoJICAgICAgICBpZiAoZGV0ZWN0aW9uUmVzdWx0Q29sdW1uICE9IG51bGwpIHsKCSAgICAgICAgICAgIGRldGVjdGlvblJlc3VsdENvbHVtbgoJICAgICAgICAgICAgICAgIC5hZGp1c3RDb21wbGV0ZUluZGljYXRvckNvbHVtblJvd051bWJlcnModGhpcy5iYXJjb2RlTWV0YWRhdGEpOwoJICAgICAgICB9CgkgICAgfTsKCSAgICAvLyBUT0RPIGVuc3VyZSB0aGF0IG5vIGRldGVjdGVkIGNvZGV3b3JkcyB3aXRoIHVua25vd24gcm93IG51bWJlciBhcmUgbGVmdAoJICAgIC8vIHdlIHNob3VsZCBiZSBhYmxlIHRvIGVzdGltYXRlIHRoZSByb3cgaGVpZ2h0IGFuZCB1c2UgaXQgYXMgYSBoaW50IGZvciB0aGUgcm93IG51bWJlcgoJICAgIC8vIHdlIHNob3VsZCBhbHNvIGZpbGwgdGhlIHJvd3MgdG9wIHRvIGJvdHRvbSBhbmQgYm90dG9tIHRvIHRvcAoJICAgIC8qKgoJICAgICAqIEByZXR1cm4gbnVtYmVyIG9mIGNvZGV3b3JkcyB3aGljaCBkb24ndCBoYXZlIGEgdmFsaWQgcm93IG51bWJlci4gTm90ZSB0aGF0IHRoZSBjb3VudCBpcyBub3QgYWNjdXJhdGUgYXMgY29kZXdvcmRzCgkgICAgICogd2lsbCBiZSBjb3VudGVkIHNldmVyYWwgdGltZXMuIEl0IGp1c3Qgc2VydmVzIGFzIGFuIGluZGljYXRvciB0byBzZWUgd2hlbiB3ZSBjYW4gc3RvcCBhZGp1c3Rpbmcgcm93IG51bWJlcnMKCSAgICAgKi8KCSAgICBEZXRlY3Rpb25SZXN1bHQucHJvdG90eXBlLmFkanVzdFJvd051bWJlcnNBbmRHZXRDb3VudCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgdmFyIHVuYWRqdXN0ZWRDb3VudCA9IHRoaXMuYWRqdXN0Um93TnVtYmVyc0J5Um93KCk7CgkgICAgICAgIGlmICh1bmFkanVzdGVkQ291bnQgPT09IDApIHsKCSAgICAgICAgICAgIHJldHVybiAwOwoJICAgICAgICB9CgkgICAgICAgIGZvciAodmFyIGJhcmNvZGVDb2x1bW4gLyppbnQqLyA9IDE7IGJhcmNvZGVDb2x1bW4gPCB0aGlzLmJhcmNvZGVDb2x1bW5Db3VudCArIDE7IGJhcmNvZGVDb2x1bW4rKykgewoJICAgICAgICAgICAgdmFyIGNvZGV3b3JkcyA9IHRoaXMuZGV0ZWN0aW9uUmVzdWx0Q29sdW1uc1tiYXJjb2RlQ29sdW1uXS5nZXRDb2Rld29yZHMoKTsKCSAgICAgICAgICAgIGZvciAodmFyIGNvZGV3b3Jkc1JvdyAvKmludCovID0gMDsgY29kZXdvcmRzUm93IDwgY29kZXdvcmRzLmxlbmd0aDsgY29kZXdvcmRzUm93KyspIHsKCSAgICAgICAgICAgICAgICBpZiAoY29kZXdvcmRzW2NvZGV3b3Jkc1Jvd10gPT0gbnVsbCkgewoJICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgaWYgKCFjb2Rld29yZHNbY29kZXdvcmRzUm93XS5oYXNWYWxpZFJvd051bWJlcigpKSB7CgkgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRqdXN0Um93TnVtYmVycyhiYXJjb2RlQ29sdW1uLCBjb2Rld29yZHNSb3csIGNvZGV3b3Jkcyk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHJldHVybiB1bmFkanVzdGVkQ291bnQ7CgkgICAgfTsKCSAgICBEZXRlY3Rpb25SZXN1bHQucHJvdG90eXBlLmFkanVzdFJvd051bWJlcnNCeVJvdyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgdGhpcy5hZGp1c3RSb3dOdW1iZXJzRnJvbUJvdGhSSSgpOwoJICAgICAgICAvLyBUT0RPIHdlIHNob3VsZCBvbmx5IGRvIGZ1bGwgcm93IGFkanVzdG1lbnRzIGlmIHJvdyBudW1iZXJzIG9mIGxlZnQgYW5kIHJpZ2h0IHJvdyBpbmRpY2F0b3IgY29sdW1uIG1hdGNoLgoJICAgICAgICAvLyBNYXliZSBpdCdzIGV2ZW4gYmV0dGVyIHRvIGNhbGN1bGF0ZWQgdGhlIGhlaWdodCAocm93czogZCkgYW5kIGRpdmlkZSBpdCBieSB0aGUgbnVtYmVyIG9mIGJhcmNvZGUKCSAgICAgICAgLy8gcm93cy4gVGhpcywgdG9nZXRoZXIgd2l0aCB0aGUgTFJJIGFuZCBSUkkgcm93IG51bWJlcnMgc2hvdWxkIGFsbG93IHVzIHRvIGdldCBhIGdvb2QgZXN0aW1hdGUgd2hlcmUgYSByb3cKCSAgICAgICAgLy8gbnVtYmVyIHN0YXJ0cyBhbmQgZW5kcy4KCSAgICAgICAgdmFyIHVuYWRqdXN0ZWRDb3VudCA9IHRoaXMuYWRqdXN0Um93TnVtYmVyc0Zyb21MUkkoKTsKCSAgICAgICAgcmV0dXJuIHVuYWRqdXN0ZWRDb3VudCArIHRoaXMuYWRqdXN0Um93TnVtYmVyc0Zyb21SUkkoKTsKCSAgICB9OwoJICAgIERldGVjdGlvblJlc3VsdC5wcm90b3R5cGUuYWRqdXN0Um93TnVtYmVyc0Zyb21Cb3RoUkkgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIGlmICh0aGlzLmRldGVjdGlvblJlc3VsdENvbHVtbnNbMF0gPT0gbnVsbCB8fCB0aGlzLmRldGVjdGlvblJlc3VsdENvbHVtbnNbdGhpcy5iYXJjb2RlQ29sdW1uQ291bnQgKyAxXSA9PSBudWxsKSB7CgkgICAgICAgICAgICByZXR1cm47CgkgICAgICAgIH0KCSAgICAgICAgdmFyIExSSWNvZGV3b3JkcyA9IHRoaXMuZGV0ZWN0aW9uUmVzdWx0Q29sdW1uc1swXS5nZXRDb2Rld29yZHMoKTsKCSAgICAgICAgdmFyIFJSSWNvZGV3b3JkcyA9IHRoaXMuZGV0ZWN0aW9uUmVzdWx0Q29sdW1uc1t0aGlzLmJhcmNvZGVDb2x1bW5Db3VudCArIDFdLmdldENvZGV3b3JkcygpOwoJICAgICAgICBmb3IgKHZhciBjb2Rld29yZHNSb3cgLyppbnQqLyA9IDA7IGNvZGV3b3Jkc1JvdyA8IExSSWNvZGV3b3Jkcy5sZW5ndGg7IGNvZGV3b3Jkc1JvdysrKSB7CgkgICAgICAgICAgICBpZiAoTFJJY29kZXdvcmRzW2NvZGV3b3Jkc1Jvd10gIT0gbnVsbCAmJgoJICAgICAgICAgICAgICAgIFJSSWNvZGV3b3Jkc1tjb2Rld29yZHNSb3ddICE9IG51bGwgJiYKCSAgICAgICAgICAgICAgICBMUkljb2Rld29yZHNbY29kZXdvcmRzUm93XS5nZXRSb3dOdW1iZXIoKSA9PT0gUlJJY29kZXdvcmRzW2NvZGV3b3Jkc1Jvd10uZ2V0Um93TnVtYmVyKCkpIHsKCSAgICAgICAgICAgICAgICBmb3IgKHZhciBiYXJjb2RlQ29sdW1uIC8qaW50Ki8gPSAxOyBiYXJjb2RlQ29sdW1uIDw9IHRoaXMuYmFyY29kZUNvbHVtbkNvdW50OyBiYXJjb2RlQ29sdW1uKyspIHsKCSAgICAgICAgICAgICAgICAgICAgdmFyIGNvZGV3b3JkID0gdGhpcy5kZXRlY3Rpb25SZXN1bHRDb2x1bW5zW2JhcmNvZGVDb2x1bW5dLmdldENvZGV3b3JkcygpW2NvZGV3b3Jkc1Jvd107CgkgICAgICAgICAgICAgICAgICAgIGlmIChjb2Rld29yZCA9PSBudWxsKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICBjb2Rld29yZC5zZXRSb3dOdW1iZXIoTFJJY29kZXdvcmRzW2NvZGV3b3Jkc1Jvd10uZ2V0Um93TnVtYmVyKCkpOwoJICAgICAgICAgICAgICAgICAgICBpZiAoIWNvZGV3b3JkLmhhc1ZhbGlkUm93TnVtYmVyKCkpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGV0ZWN0aW9uUmVzdWx0Q29sdW1uc1tiYXJjb2RlQ29sdW1uXS5nZXRDb2Rld29yZHMoKVtjb2Rld29yZHNSb3ddID0gbnVsbDsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgIH07CgkgICAgRGV0ZWN0aW9uUmVzdWx0LnByb3RvdHlwZS5hZGp1c3RSb3dOdW1iZXJzRnJvbVJSSSA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgaWYgKHRoaXMuZGV0ZWN0aW9uUmVzdWx0Q29sdW1uc1t0aGlzLmJhcmNvZGVDb2x1bW5Db3VudCArIDFdID09IG51bGwpIHsKCSAgICAgICAgICAgIHJldHVybiAwOwoJICAgICAgICB9CgkgICAgICAgIHZhciB1bmFkanVzdGVkQ291bnQgPSAwOwoJICAgICAgICB2YXIgY29kZXdvcmRzID0gdGhpcy5kZXRlY3Rpb25SZXN1bHRDb2x1bW5zW3RoaXMuYmFyY29kZUNvbHVtbkNvdW50ICsgMV0uZ2V0Q29kZXdvcmRzKCk7CgkgICAgICAgIGZvciAodmFyIGNvZGV3b3Jkc1JvdyAvKmludCovID0gMDsgY29kZXdvcmRzUm93IDwgY29kZXdvcmRzLmxlbmd0aDsgY29kZXdvcmRzUm93KyspIHsKCSAgICAgICAgICAgIGlmIChjb2Rld29yZHNbY29kZXdvcmRzUm93XSA9PSBudWxsKSB7CgkgICAgICAgICAgICAgICAgY29udGludWU7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICB2YXIgcm93SW5kaWNhdG9yUm93TnVtYmVyID0gY29kZXdvcmRzW2NvZGV3b3Jkc1Jvd10uZ2V0Um93TnVtYmVyKCk7CgkgICAgICAgICAgICB2YXIgaW52YWxpZFJvd0NvdW50cyA9IDA7CgkgICAgICAgICAgICBmb3IgKHZhciBiYXJjb2RlQ29sdW1uIC8qaW50Ki8gPSB0aGlzLmJhcmNvZGVDb2x1bW5Db3VudCArIDE7IGJhcmNvZGVDb2x1bW4gPiAwICYmIGludmFsaWRSb3dDb3VudHMgPCB0aGlzLkFESlVTVF9ST1dfTlVNQkVSX1NLSVA7IGJhcmNvZGVDb2x1bW4tLSkgewoJICAgICAgICAgICAgICAgIHZhciBjb2Rld29yZCA9IHRoaXMuZGV0ZWN0aW9uUmVzdWx0Q29sdW1uc1tiYXJjb2RlQ29sdW1uXS5nZXRDb2Rld29yZHMoKVtjb2Rld29yZHNSb3ddOwoJICAgICAgICAgICAgICAgIGlmIChjb2Rld29yZCAhPSBudWxsKSB7CgkgICAgICAgICAgICAgICAgICAgIGludmFsaWRSb3dDb3VudHMgPSBEZXRlY3Rpb25SZXN1bHQuYWRqdXN0Um93TnVtYmVySWZWYWxpZChyb3dJbmRpY2F0b3JSb3dOdW1iZXIsIGludmFsaWRSb3dDb3VudHMsIGNvZGV3b3JkKTsKCSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb2Rld29yZC5oYXNWYWxpZFJvd051bWJlcigpKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICB1bmFkanVzdGVkQ291bnQrKzsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gdW5hZGp1c3RlZENvdW50OwoJICAgIH07CgkgICAgRGV0ZWN0aW9uUmVzdWx0LnByb3RvdHlwZS5hZGp1c3RSb3dOdW1iZXJzRnJvbUxSSSA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgaWYgKHRoaXMuZGV0ZWN0aW9uUmVzdWx0Q29sdW1uc1swXSA9PSBudWxsKSB7CgkgICAgICAgICAgICByZXR1cm4gMDsKCSAgICAgICAgfQoJICAgICAgICB2YXIgdW5hZGp1c3RlZENvdW50ID0gMDsKCSAgICAgICAgdmFyIGNvZGV3b3JkcyA9IHRoaXMuZGV0ZWN0aW9uUmVzdWx0Q29sdW1uc1swXS5nZXRDb2Rld29yZHMoKTsKCSAgICAgICAgZm9yICh2YXIgY29kZXdvcmRzUm93IC8qaW50Ki8gPSAwOyBjb2Rld29yZHNSb3cgPCBjb2Rld29yZHMubGVuZ3RoOyBjb2Rld29yZHNSb3crKykgewoJICAgICAgICAgICAgaWYgKGNvZGV3b3Jkc1tjb2Rld29yZHNSb3ddID09IG51bGwpIHsKCSAgICAgICAgICAgICAgICBjb250aW51ZTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHZhciByb3dJbmRpY2F0b3JSb3dOdW1iZXIgPSBjb2Rld29yZHNbY29kZXdvcmRzUm93XS5nZXRSb3dOdW1iZXIoKTsKCSAgICAgICAgICAgIHZhciBpbnZhbGlkUm93Q291bnRzID0gMDsKCSAgICAgICAgICAgIGZvciAodmFyIGJhcmNvZGVDb2x1bW4gLyppbnQqLyA9IDE7IGJhcmNvZGVDb2x1bW4gPCB0aGlzLmJhcmNvZGVDb2x1bW5Db3VudCArIDEgJiYgaW52YWxpZFJvd0NvdW50cyA8IHRoaXMuQURKVVNUX1JPV19OVU1CRVJfU0tJUDsgYmFyY29kZUNvbHVtbisrKSB7CgkgICAgICAgICAgICAgICAgdmFyIGNvZGV3b3JkID0gdGhpcy5kZXRlY3Rpb25SZXN1bHRDb2x1bW5zW2JhcmNvZGVDb2x1bW5dLmdldENvZGV3b3JkcygpW2NvZGV3b3Jkc1Jvd107CgkgICAgICAgICAgICAgICAgaWYgKGNvZGV3b3JkICE9IG51bGwpIHsKCSAgICAgICAgICAgICAgICAgICAgaW52YWxpZFJvd0NvdW50cyA9IERldGVjdGlvblJlc3VsdC5hZGp1c3RSb3dOdW1iZXJJZlZhbGlkKHJvd0luZGljYXRvclJvd051bWJlciwgaW52YWxpZFJvd0NvdW50cywgY29kZXdvcmQpOwoJICAgICAgICAgICAgICAgICAgICBpZiAoIWNvZGV3b3JkLmhhc1ZhbGlkUm93TnVtYmVyKCkpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHVuYWRqdXN0ZWRDb3VudCsrOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHJldHVybiB1bmFkanVzdGVkQ291bnQ7CgkgICAgfTsKCSAgICBEZXRlY3Rpb25SZXN1bHQuYWRqdXN0Um93TnVtYmVySWZWYWxpZCA9IGZ1bmN0aW9uIChyb3dJbmRpY2F0b3JSb3dOdW1iZXIsIGludmFsaWRSb3dDb3VudHMsIGNvZGV3b3JkKSB7CgkgICAgICAgIGlmIChjb2Rld29yZCA9PSBudWxsKSB7CgkgICAgICAgICAgICByZXR1cm4gaW52YWxpZFJvd0NvdW50czsKCSAgICAgICAgfQoJICAgICAgICBpZiAoIWNvZGV3b3JkLmhhc1ZhbGlkUm93TnVtYmVyKCkpIHsKCSAgICAgICAgICAgIGlmIChjb2Rld29yZC5pc1ZhbGlkUm93TnVtYmVyKHJvd0luZGljYXRvclJvd051bWJlcikpIHsKCSAgICAgICAgICAgICAgICBjb2Rld29yZC5zZXRSb3dOdW1iZXIocm93SW5kaWNhdG9yUm93TnVtYmVyKTsKCSAgICAgICAgICAgICAgICBpbnZhbGlkUm93Q291bnRzID0gMDsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgICsraW52YWxpZFJvd0NvdW50czsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gaW52YWxpZFJvd0NvdW50czsKCSAgICB9OwoJICAgIERldGVjdGlvblJlc3VsdC5wcm90b3R5cGUuYWRqdXN0Um93TnVtYmVycyA9IGZ1bmN0aW9uIChiYXJjb2RlQ29sdW1uLCBjb2Rld29yZHNSb3csIGNvZGV3b3JkcykgewoJICAgICAgICB2YXIgZV8xLCBfYTsKCSAgICAgICAgdmFyIGNvZGV3b3JkID0gY29kZXdvcmRzW2NvZGV3b3Jkc1Jvd107CgkgICAgICAgIHZhciBwcmV2aW91c0NvbHVtbkNvZGV3b3JkcyA9IHRoaXMuZGV0ZWN0aW9uUmVzdWx0Q29sdW1uc1tiYXJjb2RlQ29sdW1uIC0gMV0uZ2V0Q29kZXdvcmRzKCk7CgkgICAgICAgIHZhciBuZXh0Q29sdW1uQ29kZXdvcmRzID0gcHJldmlvdXNDb2x1bW5Db2Rld29yZHM7CgkgICAgICAgIGlmICh0aGlzLmRldGVjdGlvblJlc3VsdENvbHVtbnNbYmFyY29kZUNvbHVtbiArIDFdICE9IG51bGwpIHsKCSAgICAgICAgICAgIG5leHRDb2x1bW5Db2Rld29yZHMgPSB0aGlzLmRldGVjdGlvblJlc3VsdENvbHVtbnNbYmFyY29kZUNvbHVtbiArIDFdLmdldENvZGV3b3JkcygpOwoJICAgICAgICB9CgkgICAgICAgIC8vIGxldCBvdGhlckNvZGV3b3JkczogQ29kZXdvcmRbXSA9IG5ldyBDb2Rld29yZFsxNF07CgkgICAgICAgIHZhciBvdGhlckNvZGV3b3JkcyA9IG5ldyBBcnJheSgxNCk7CgkgICAgICAgIG90aGVyQ29kZXdvcmRzWzJdID0gcHJldmlvdXNDb2x1bW5Db2Rld29yZHNbY29kZXdvcmRzUm93XTsKCSAgICAgICAgb3RoZXJDb2Rld29yZHNbM10gPSBuZXh0Q29sdW1uQ29kZXdvcmRzW2NvZGV3b3Jkc1Jvd107CgkgICAgICAgIGlmIChjb2Rld29yZHNSb3cgPiAwKSB7CgkgICAgICAgICAgICBvdGhlckNvZGV3b3Jkc1swXSA9IGNvZGV3b3Jkc1tjb2Rld29yZHNSb3cgLSAxXTsKCSAgICAgICAgICAgIG90aGVyQ29kZXdvcmRzWzRdID0gcHJldmlvdXNDb2x1bW5Db2Rld29yZHNbY29kZXdvcmRzUm93IC0gMV07CgkgICAgICAgICAgICBvdGhlckNvZGV3b3Jkc1s1XSA9IG5leHRDb2x1bW5Db2Rld29yZHNbY29kZXdvcmRzUm93IC0gMV07CgkgICAgICAgIH0KCSAgICAgICAgaWYgKGNvZGV3b3Jkc1JvdyA+IDEpIHsKCSAgICAgICAgICAgIG90aGVyQ29kZXdvcmRzWzhdID0gY29kZXdvcmRzW2NvZGV3b3Jkc1JvdyAtIDJdOwoJICAgICAgICAgICAgb3RoZXJDb2Rld29yZHNbMTBdID0gcHJldmlvdXNDb2x1bW5Db2Rld29yZHNbY29kZXdvcmRzUm93IC0gMl07CgkgICAgICAgICAgICBvdGhlckNvZGV3b3Jkc1sxMV0gPSBuZXh0Q29sdW1uQ29kZXdvcmRzW2NvZGV3b3Jkc1JvdyAtIDJdOwoJICAgICAgICB9CgkgICAgICAgIGlmIChjb2Rld29yZHNSb3cgPCBjb2Rld29yZHMubGVuZ3RoIC0gMSkgewoJICAgICAgICAgICAgb3RoZXJDb2Rld29yZHNbMV0gPSBjb2Rld29yZHNbY29kZXdvcmRzUm93ICsgMV07CgkgICAgICAgICAgICBvdGhlckNvZGV3b3Jkc1s2XSA9IHByZXZpb3VzQ29sdW1uQ29kZXdvcmRzW2NvZGV3b3Jkc1JvdyArIDFdOwoJICAgICAgICAgICAgb3RoZXJDb2Rld29yZHNbN10gPSBuZXh0Q29sdW1uQ29kZXdvcmRzW2NvZGV3b3Jkc1JvdyArIDFdOwoJICAgICAgICB9CgkgICAgICAgIGlmIChjb2Rld29yZHNSb3cgPCBjb2Rld29yZHMubGVuZ3RoIC0gMikgewoJICAgICAgICAgICAgb3RoZXJDb2Rld29yZHNbOV0gPSBjb2Rld29yZHNbY29kZXdvcmRzUm93ICsgMl07CgkgICAgICAgICAgICBvdGhlckNvZGV3b3Jkc1sxMl0gPSBwcmV2aW91c0NvbHVtbkNvZGV3b3Jkc1tjb2Rld29yZHNSb3cgKyAyXTsKCSAgICAgICAgICAgIG90aGVyQ29kZXdvcmRzWzEzXSA9IG5leHRDb2x1bW5Db2Rld29yZHNbY29kZXdvcmRzUm93ICsgMl07CgkgICAgICAgIH0KCSAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgIGZvciAodmFyIG90aGVyQ29kZXdvcmRzXzEgPSBfX3ZhbHVlcyhvdGhlckNvZGV3b3JkcyksIG90aGVyQ29kZXdvcmRzXzFfMSA9IG90aGVyQ29kZXdvcmRzXzEubmV4dCgpOyAhb3RoZXJDb2Rld29yZHNfMV8xLmRvbmU7IG90aGVyQ29kZXdvcmRzXzFfMSA9IG90aGVyQ29kZXdvcmRzXzEubmV4dCgpKSB7CgkgICAgICAgICAgICAgICAgdmFyIG90aGVyQ29kZXdvcmQgPSBvdGhlckNvZGV3b3Jkc18xXzEudmFsdWU7CgkgICAgICAgICAgICAgICAgaWYgKERldGVjdGlvblJlc3VsdC5hZGp1c3RSb3dOdW1iZXIoY29kZXdvcmQsIG90aGVyQ29kZXdvcmQpKSB7CgkgICAgICAgICAgICAgICAgICAgIHJldHVybjsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH0KCSAgICAgICAgZmluYWxseSB7CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIGlmIChvdGhlckNvZGV3b3Jkc18xXzEgJiYgIW90aGVyQ29kZXdvcmRzXzFfMS5kb25lICYmIChfYSA9IG90aGVyQ29kZXdvcmRzXzEucmV0dXJuKSkgX2EuY2FsbChvdGhlckNvZGV3b3Jkc18xKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH0KCSAgICAgICAgfQoJICAgIH07CgkgICAgLyoqCgkgICAgICogQHJldHVybiB0cnVlLCBpZiByb3cgbnVtYmVyIHdhcyBhZGp1c3RlZCwgZmFsc2Ugb3RoZXJ3aXNlCgkgICAgICovCgkgICAgRGV0ZWN0aW9uUmVzdWx0LmFkanVzdFJvd051bWJlciA9IGZ1bmN0aW9uIChjb2Rld29yZCwgb3RoZXJDb2Rld29yZCkgewoJICAgICAgICBpZiAob3RoZXJDb2Rld29yZCA9PSBudWxsKSB7CgkgICAgICAgICAgICByZXR1cm4gZmFsc2U7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKG90aGVyQ29kZXdvcmQuaGFzVmFsaWRSb3dOdW1iZXIoKSAmJiBvdGhlckNvZGV3b3JkLmdldEJ1Y2tldCgpID09PSBjb2Rld29yZC5nZXRCdWNrZXQoKSkgewoJICAgICAgICAgICAgY29kZXdvcmQuc2V0Um93TnVtYmVyKG90aGVyQ29kZXdvcmQuZ2V0Um93TnVtYmVyKCkpOwoJICAgICAgICAgICAgcmV0dXJuIHRydWU7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIGZhbHNlOwoJICAgIH07CgkgICAgRGV0ZWN0aW9uUmVzdWx0LnByb3RvdHlwZS5nZXRCYXJjb2RlQ29sdW1uQ291bnQgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmJhcmNvZGVDb2x1bW5Db3VudDsKCSAgICB9OwoJICAgIERldGVjdGlvblJlc3VsdC5wcm90b3R5cGUuZ2V0QmFyY29kZVJvd0NvdW50ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5iYXJjb2RlTWV0YWRhdGEuZ2V0Um93Q291bnQoKTsKCSAgICB9OwoJICAgIERldGVjdGlvblJlc3VsdC5wcm90b3R5cGUuZ2V0QmFyY29kZUVDTGV2ZWwgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmJhcmNvZGVNZXRhZGF0YS5nZXRFcnJvckNvcnJlY3Rpb25MZXZlbCgpOwoJICAgIH07CgkgICAgRGV0ZWN0aW9uUmVzdWx0LnByb3RvdHlwZS5zZXRCb3VuZGluZ0JveCA9IGZ1bmN0aW9uIChib3VuZGluZ0JveCkgewoJICAgICAgICB0aGlzLmJvdW5kaW5nQm94ID0gYm91bmRpbmdCb3g7CgkgICAgfTsKCSAgICBEZXRlY3Rpb25SZXN1bHQucHJvdG90eXBlLmdldEJvdW5kaW5nQm94ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5ib3VuZGluZ0JveDsKCSAgICB9OwoJICAgIERldGVjdGlvblJlc3VsdC5wcm90b3R5cGUuc2V0RGV0ZWN0aW9uUmVzdWx0Q29sdW1uID0gZnVuY3Rpb24gKGJhcmNvZGVDb2x1bW4sIGRldGVjdGlvblJlc3VsdENvbHVtbikgewoJICAgICAgICB0aGlzLmRldGVjdGlvblJlc3VsdENvbHVtbnNbYmFyY29kZUNvbHVtbl0gPSBkZXRlY3Rpb25SZXN1bHRDb2x1bW47CgkgICAgfTsKCSAgICBEZXRlY3Rpb25SZXN1bHQucHJvdG90eXBlLmdldERldGVjdGlvblJlc3VsdENvbHVtbiA9IGZ1bmN0aW9uIChiYXJjb2RlQ29sdW1uKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmRldGVjdGlvblJlc3VsdENvbHVtbnNbYmFyY29kZUNvbHVtbl07CgkgICAgfTsKCSAgICAvLyBAT3ZlcnJpZGUKCSAgICBEZXRlY3Rpb25SZXN1bHQucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkgewoJICAgICAgICB2YXIgcm93SW5kaWNhdG9yQ29sdW1uID0gdGhpcy5kZXRlY3Rpb25SZXN1bHRDb2x1bW5zWzBdOwoJICAgICAgICBpZiAocm93SW5kaWNhdG9yQ29sdW1uID09IG51bGwpIHsKCSAgICAgICAgICAgIHJvd0luZGljYXRvckNvbHVtbiA9IHRoaXMuZGV0ZWN0aW9uUmVzdWx0Q29sdW1uc1t0aGlzLmJhcmNvZGVDb2x1bW5Db3VudCArIDFdOwoJICAgICAgICB9CgkgICAgICAgIC8vIHRyeSAoCgkgICAgICAgIHZhciBmb3JtYXR0ZXIgPSBuZXcgRm9ybWF0dGVyXzEuZGVmYXVsdCgpOwoJICAgICAgICAvLyApIHsKCSAgICAgICAgZm9yICh2YXIgY29kZXdvcmRzUm93IC8qaW50Ki8gPSAwOyBjb2Rld29yZHNSb3cgPCByb3dJbmRpY2F0b3JDb2x1bW4uZ2V0Q29kZXdvcmRzKCkubGVuZ3RoOyBjb2Rld29yZHNSb3crKykgewoJICAgICAgICAgICAgZm9ybWF0dGVyLmZvcm1hdCgnQ1cgJTNkOicsIGNvZGV3b3Jkc1Jvdyk7CgkgICAgICAgICAgICBmb3IgKHZhciBiYXJjb2RlQ29sdW1uIC8qaW50Ki8gPSAwOyBiYXJjb2RlQ29sdW1uIDwgdGhpcy5iYXJjb2RlQ29sdW1uQ291bnQgKyAyOyBiYXJjb2RlQ29sdW1uKyspIHsKCSAgICAgICAgICAgICAgICBpZiAodGhpcy5kZXRlY3Rpb25SZXN1bHRDb2x1bW5zW2JhcmNvZGVDb2x1bW5dID09IG51bGwpIHsKCSAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyLmZvcm1hdCgnICAgIHwgICAnKTsKCSAgICAgICAgICAgICAgICAgICAgY29udGludWU7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIHZhciBjb2Rld29yZCA9IHRoaXMuZGV0ZWN0aW9uUmVzdWx0Q29sdW1uc1tiYXJjb2RlQ29sdW1uXS5nZXRDb2Rld29yZHMoKVtjb2Rld29yZHNSb3ddOwoJICAgICAgICAgICAgICAgIGlmIChjb2Rld29yZCA9PSBudWxsKSB7CgkgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlci5mb3JtYXQoJyAgICB8ICAgJyk7CgkgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBmb3JtYXR0ZXIuZm9ybWF0KCcgJTNkfCUzZCcsIGNvZGV3b3JkLmdldFJvd051bWJlcigpLCBjb2Rld29yZC5nZXRWYWx1ZSgpKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGZvcm1hdHRlci5mb3JtYXQoJyVuJyk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIGZvcm1hdHRlci50b1N0cmluZygpOwoJICAgICAgICAvLyB9CgkgICAgfTsKCSAgICByZXR1cm4gRGV0ZWN0aW9uUmVzdWx0OwoJfSgpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IERldGVjdGlvblJlc3VsdDsKCgl9KTsKCgl2YXIgQ29kZXdvcmRfMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCS8qCgkgKiBDb3B5cmlnaHQgMjAxMyBaWGluZyBhdXRob3JzCgkgKgoJICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSAqCgkgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJICoKCSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJICovCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJLy8gcGFja2FnZSBjb20uZ29vZ2xlLnp4aW5nLnBkZjQxNy5kZWNvZGVyOwoJLyoqCgkgKiBAYXV0aG9yIEd1ZW50aGVyIEdyYXUKCSAqLwoJdmFyIENvZGV3b3JkID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIGZ1bmN0aW9uIENvZGV3b3JkKHN0YXJ0WCwgZW5kWCwgYnVja2V0LCB2YWx1ZSkgewoJICAgICAgICB0aGlzLnJvd051bWJlciA9IENvZGV3b3JkLkJBUkNPREVfUk9XX1VOS05PV047CgkgICAgICAgIHRoaXMuc3RhcnRYID0gTWF0aC50cnVuYyhzdGFydFgpOwoJICAgICAgICB0aGlzLmVuZFggPSBNYXRoLnRydW5jKGVuZFgpOwoJICAgICAgICB0aGlzLmJ1Y2tldCA9IE1hdGgudHJ1bmMoYnVja2V0KTsKCSAgICAgICAgdGhpcy52YWx1ZSA9IE1hdGgudHJ1bmModmFsdWUpOwoJICAgIH0KCSAgICBDb2Rld29yZC5wcm90b3R5cGUuaGFzVmFsaWRSb3dOdW1iZXIgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWRSb3dOdW1iZXIodGhpcy5yb3dOdW1iZXIpOwoJICAgIH07CgkgICAgQ29kZXdvcmQucHJvdG90eXBlLmlzVmFsaWRSb3dOdW1iZXIgPSBmdW5jdGlvbiAocm93TnVtYmVyKSB7CgkgICAgICAgIHJldHVybiByb3dOdW1iZXIgIT09IENvZGV3b3JkLkJBUkNPREVfUk9XX1VOS05PV04gJiYgdGhpcy5idWNrZXQgPT09IChyb3dOdW1iZXIgJSAzKSAqIDM7CgkgICAgfTsKCSAgICBDb2Rld29yZC5wcm90b3R5cGUuc2V0Um93TnVtYmVyQXNSb3dJbmRpY2F0b3JDb2x1bW4gPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHRoaXMucm93TnVtYmVyID0gTWF0aC50cnVuYygoTWF0aC50cnVuYyh0aGlzLnZhbHVlIC8gMzApKSAqIDMgKyBNYXRoLnRydW5jKHRoaXMuYnVja2V0IC8gMykpOwoJICAgIH07CgkgICAgQ29kZXdvcmQucHJvdG90eXBlLmdldFdpZHRoID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5lbmRYIC0gdGhpcy5zdGFydFg7CgkgICAgfTsKCSAgICBDb2Rld29yZC5wcm90b3R5cGUuZ2V0U3RhcnRYID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5zdGFydFg7CgkgICAgfTsKCSAgICBDb2Rld29yZC5wcm90b3R5cGUuZ2V0RW5kWCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuZW5kWDsKCSAgICB9OwoJICAgIENvZGV3b3JkLnByb3RvdHlwZS5nZXRCdWNrZXQgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmJ1Y2tldDsKCSAgICB9OwoJICAgIENvZGV3b3JkLnByb3RvdHlwZS5nZXRWYWx1ZSA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7CgkgICAgfTsKCSAgICBDb2Rld29yZC5wcm90b3R5cGUuZ2V0Um93TnVtYmVyID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5yb3dOdW1iZXI7CgkgICAgfTsKCSAgICBDb2Rld29yZC5wcm90b3R5cGUuc2V0Um93TnVtYmVyID0gZnVuY3Rpb24gKHJvd051bWJlcikgewoJICAgICAgICB0aGlzLnJvd051bWJlciA9IHJvd051bWJlcjsKCSAgICB9OwoJICAgIC8vICAgQE92ZXJyaWRlCgkgICAgQ29kZXdvcmQucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5yb3dOdW1iZXIgKyAnfCcgKyB0aGlzLnZhbHVlOwoJICAgIH07CgkgICAgQ29kZXdvcmQuQkFSQ09ERV9ST1dfVU5LTk9XTiA9IC0xOwoJICAgIHJldHVybiBDb2Rld29yZDsKCX0oKSk7CglleHBvcnRzLmRlZmF1bHQgPSBDb2Rld29yZDsKCgl9KTsKCgl2YXIgUERGNDE3Q29kZXdvcmREZWNvZGVyXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CgkvKgoJKiBDb3B5cmlnaHQgMjAxMyBaWGluZyBhdXRob3JzCgkqCgkqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJKgoJKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJKgoJKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJKi8KCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgkvLyBwYWNrYWdlIGNvbS5nb29nbGUuenhpbmcucGRmNDE3LmRlY29kZXI7CgkvLyBpbXBvcnQgY29tLmdvb2dsZS56eGluZy5jb21tb24uZGV0ZWN0b3IuTWF0aFV0aWxzOwoKCS8vIGltcG9ydCBjb20uZ29vZ2xlLnp4aW5nLnBkZjQxNy5QREY0MTdDb21tb247CgoKCS8qKgoJICogQGF1dGhvciBHdWVudGhlciBHcmF1CgkgKiBAYXV0aG9yIGNyZWF0YWxlIEdtYkggKGNocmlzdG9waC5zY2h1bHpAY3JlYXRhbGUuZGUpCgkgKi8KCXZhciBQREY0MTdDb2Rld29yZERlY29kZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgZnVuY3Rpb24gUERGNDE3Q29kZXdvcmREZWNvZGVyKCkgewoJICAgIH0KCSAgICAvKiBAbm90ZQoJICAgICAqIHRoaXMgYWN0aW9uIGhhdmUgdG8gYmUgcGVyZm9ybWVkIGJlZm9yZSBmaXJzdCB1c2Ugb2YgY2xhc3MKCSAgICAgKiAtIHN0YXRpYyBjb25zdHJ1Y3RvcgoJICAgICAqIHdvcmtpbmcgd2l0aCAzMmJpdCBmbG9hdCAoYmFzZWQgZnJvbSBKYXZhIGxvZ2ljKQoJICAgICovCgkgICAgUERGNDE3Q29kZXdvcmREZWNvZGVyLmluaXRpYWxpemUgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIC8vIFByZS1jb21wdXRlcyB0aGUgc3ltYm9sIHJhdGlvIHRhYmxlLgoJICAgICAgICBmb3IgKCAvKmludCovdmFyIGkgPSAwOyBpIDwgUERGNDE3Q29tbW9uXzEuZGVmYXVsdC5TWU1CT0xfVEFCTEUubGVuZ3RoOyBpKyspIHsKCSAgICAgICAgICAgIHZhciBjdXJyZW50U3ltYm9sID0gUERGNDE3Q29tbW9uXzEuZGVmYXVsdC5TWU1CT0xfVEFCTEVbaV07CgkgICAgICAgICAgICB2YXIgY3VycmVudEJpdCA9IGN1cnJlbnRTeW1ib2wgJiAweDE7CgkgICAgICAgICAgICBmb3IgKCAvKmludCovdmFyIGogPSAwOyBqIDwgUERGNDE3Q29tbW9uXzEuZGVmYXVsdC5CQVJTX0lOX01PRFVMRTsgaisrKSB7CgkgICAgICAgICAgICAgICAgdmFyIHNpemUgPSAwLjA7CgkgICAgICAgICAgICAgICAgd2hpbGUgKChjdXJyZW50U3ltYm9sICYgMHgxKSA9PT0gY3VycmVudEJpdCkgewoJICAgICAgICAgICAgICAgICAgICBzaXplICs9IDEuMDsKCSAgICAgICAgICAgICAgICAgICAgY3VycmVudFN5bWJvbCA+Pj0gMTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgY3VycmVudEJpdCA9IGN1cnJlbnRTeW1ib2wgJiAweDE7CgkgICAgICAgICAgICAgICAgaWYgKCFQREY0MTdDb2Rld29yZERlY29kZXIuUkFUSU9TX1RBQkxFW2ldKSB7CgkgICAgICAgICAgICAgICAgICAgIFBERjQxN0NvZGV3b3JkRGVjb2Rlci5SQVRJT1NfVEFCTEVbaV0gPSBuZXcgQXJyYXkoUERGNDE3Q29tbW9uXzEuZGVmYXVsdC5CQVJTX0lOX01PRFVMRSk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIFBERjQxN0NvZGV3b3JkRGVjb2Rlci5SQVRJT1NfVEFCTEVbaV1bUERGNDE3Q29tbW9uXzEuZGVmYXVsdC5CQVJTX0lOX01PRFVMRSAtIGogLSAxXSA9IE1hdGguZnJvdW5kKHNpemUgLyBQREY0MTdDb21tb25fMS5kZWZhdWx0Lk1PRFVMRVNfSU5fQ09ERVdPUkQpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHRoaXMuYlN5bWJvbFRhYmxlUmVhZHkgPSB0cnVlOwoJICAgIH07CgkgICAgUERGNDE3Q29kZXdvcmREZWNvZGVyLmdldERlY29kZWRWYWx1ZSA9IGZ1bmN0aW9uIChtb2R1bGVCaXRDb3VudCkgewoJICAgICAgICB2YXIgZGVjb2RlZFZhbHVlID0gUERGNDE3Q29kZXdvcmREZWNvZGVyLmdldERlY29kZWRDb2Rld29yZFZhbHVlKFBERjQxN0NvZGV3b3JkRGVjb2Rlci5zYW1wbGVCaXRDb3VudHMobW9kdWxlQml0Q291bnQpKTsKCSAgICAgICAgaWYgKGRlY29kZWRWYWx1ZSAhPT0gLTEpIHsKCSAgICAgICAgICAgIHJldHVybiBkZWNvZGVkVmFsdWU7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIFBERjQxN0NvZGV3b3JkRGVjb2Rlci5nZXRDbG9zZXN0RGVjb2RlZFZhbHVlKG1vZHVsZUJpdENvdW50KTsKCSAgICB9OwoJICAgIFBERjQxN0NvZGV3b3JkRGVjb2Rlci5zYW1wbGVCaXRDb3VudHMgPSBmdW5jdGlvbiAobW9kdWxlQml0Q291bnQpIHsKCSAgICAgICAgdmFyIGJpdENvdW50U3VtID0gTWF0aFV0aWxzXzEuZGVmYXVsdC5zdW0obW9kdWxlQml0Q291bnQpOwoJICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IEludDMyQXJyYXkoUERGNDE3Q29tbW9uXzEuZGVmYXVsdC5CQVJTX0lOX01PRFVMRSk7CgkgICAgICAgIHZhciBiaXRDb3VudEluZGV4ID0gMDsKCSAgICAgICAgdmFyIHN1bVByZXZpb3VzQml0cyA9IDA7CgkgICAgICAgIGZvciAoIC8qaW50Ki92YXIgaSA9IDA7IGkgPCBQREY0MTdDb21tb25fMS5kZWZhdWx0Lk1PRFVMRVNfSU5fQ09ERVdPUkQ7IGkrKykgewoJICAgICAgICAgICAgdmFyIHNhbXBsZUluZGV4ID0gYml0Q291bnRTdW0gLyAoMiAqIFBERjQxN0NvbW1vbl8xLmRlZmF1bHQuTU9EVUxFU19JTl9DT0RFV09SRCkgKwoJICAgICAgICAgICAgICAgIChpICogYml0Q291bnRTdW0pIC8gUERGNDE3Q29tbW9uXzEuZGVmYXVsdC5NT0RVTEVTX0lOX0NPREVXT1JEOwoJICAgICAgICAgICAgaWYgKHN1bVByZXZpb3VzQml0cyArIG1vZHVsZUJpdENvdW50W2JpdENvdW50SW5kZXhdIDw9IHNhbXBsZUluZGV4KSB7CgkgICAgICAgICAgICAgICAgc3VtUHJldmlvdXNCaXRzICs9IG1vZHVsZUJpdENvdW50W2JpdENvdW50SW5kZXhdOwoJICAgICAgICAgICAgICAgIGJpdENvdW50SW5kZXgrKzsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHJlc3VsdFtiaXRDb3VudEluZGV4XSsrOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiByZXN1bHQ7CgkgICAgfTsKCSAgICBQREY0MTdDb2Rld29yZERlY29kZXIuZ2V0RGVjb2RlZENvZGV3b3JkVmFsdWUgPSBmdW5jdGlvbiAobW9kdWxlQml0Q291bnQpIHsKCSAgICAgICAgdmFyIGRlY29kZWRWYWx1ZSA9IFBERjQxN0NvZGV3b3JkRGVjb2Rlci5nZXRCaXRWYWx1ZShtb2R1bGVCaXRDb3VudCk7CgkgICAgICAgIHJldHVybiBQREY0MTdDb21tb25fMS5kZWZhdWx0LmdldENvZGV3b3JkKGRlY29kZWRWYWx1ZSkgPT09IC0xID8gLTEgOiBkZWNvZGVkVmFsdWU7CgkgICAgfTsKCSAgICBQREY0MTdDb2Rld29yZERlY29kZXIuZ2V0Qml0VmFsdWUgPSBmdW5jdGlvbiAobW9kdWxlQml0Q291bnQpIHsKCSAgICAgICAgdmFyIHJlc3VsdCA9IC8qbG9uZyovIDA7CgkgICAgICAgIGZvciAodmFyIC8qaW50Ki8gaSA9IDA7IGkgPCBtb2R1bGVCaXRDb3VudC5sZW5ndGg7IGkrKykgewoJICAgICAgICAgICAgZm9yICggLyppbnQqL3ZhciBiaXQgPSAwOyBiaXQgPCBtb2R1bGVCaXRDb3VudFtpXTsgYml0KyspIHsKCSAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0IDw8IDEpIHwgKGkgJSAyID09PSAwID8gMSA6IDApOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBNYXRoLnRydW5jKHJlc3VsdCk7CgkgICAgfTsKCSAgICAvLyB3b3JraW5nIHdpdGggMzJiaXQgZmxvYXQgKGFzIGluIEphdmEpCgkgICAgUERGNDE3Q29kZXdvcmREZWNvZGVyLmdldENsb3Nlc3REZWNvZGVkVmFsdWUgPSBmdW5jdGlvbiAobW9kdWxlQml0Q291bnQpIHsKCSAgICAgICAgdmFyIGJpdENvdW50U3VtID0gTWF0aFV0aWxzXzEuZGVmYXVsdC5zdW0obW9kdWxlQml0Q291bnQpOwoJICAgICAgICB2YXIgYml0Q291bnRSYXRpb3MgPSBuZXcgQXJyYXkoUERGNDE3Q29tbW9uXzEuZGVmYXVsdC5CQVJTX0lOX01PRFVMRSk7CgkgICAgICAgIGlmIChiaXRDb3VudFN1bSA+IDEpIHsKCSAgICAgICAgICAgIGZvciAodmFyIC8qaW50Ki8gaSA9IDA7IGkgPCBiaXRDb3VudFJhdGlvcy5sZW5ndGg7IGkrKykgewoJICAgICAgICAgICAgICAgIGJpdENvdW50UmF0aW9zW2ldID0gTWF0aC5mcm91bmQobW9kdWxlQml0Q291bnRbaV0gLyBiaXRDb3VudFN1bSk7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGJlc3RNYXRjaEVycm9yID0gRmxvYXRfMS5kZWZhdWx0Lk1BWF9WQUxVRTsKCSAgICAgICAgdmFyIGJlc3RNYXRjaCA9IC0xOwoJICAgICAgICBpZiAoIXRoaXMuYlN5bWJvbFRhYmxlUmVhZHkpIHsKCSAgICAgICAgICAgIFBERjQxN0NvZGV3b3JkRGVjb2Rlci5pbml0aWFsaXplKCk7CgkgICAgICAgIH0KCSAgICAgICAgZm9yICggLyppbnQqL3ZhciBqID0gMDsgaiA8IFBERjQxN0NvZGV3b3JkRGVjb2Rlci5SQVRJT1NfVEFCTEUubGVuZ3RoOyBqKyspIHsKCSAgICAgICAgICAgIHZhciBlcnJvciA9IDAuMDsKCSAgICAgICAgICAgIHZhciByYXRpb1RhYmxlUm93ID0gUERGNDE3Q29kZXdvcmREZWNvZGVyLlJBVElPU19UQUJMRVtqXTsKCSAgICAgICAgICAgIGZvciAoIC8qaW50Ki92YXIgayA9IDA7IGsgPCBQREY0MTdDb21tb25fMS5kZWZhdWx0LkJBUlNfSU5fTU9EVUxFOyBrKyspIHsKCSAgICAgICAgICAgICAgICB2YXIgZGlmZiA9IE1hdGguZnJvdW5kKHJhdGlvVGFibGVSb3dba10gLSBiaXRDb3VudFJhdGlvc1trXSk7CgkgICAgICAgICAgICAgICAgZXJyb3IgKz0gTWF0aC5mcm91bmQoZGlmZiAqIGRpZmYpOwoJICAgICAgICAgICAgICAgIGlmIChlcnJvciA+PSBiZXN0TWF0Y2hFcnJvcikgewoJICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBpZiAoZXJyb3IgPCBiZXN0TWF0Y2hFcnJvcikgewoJICAgICAgICAgICAgICAgIGJlc3RNYXRjaEVycm9yID0gZXJyb3I7CgkgICAgICAgICAgICAgICAgYmVzdE1hdGNoID0gUERGNDE3Q29tbW9uXzEuZGVmYXVsdC5TWU1CT0xfVEFCTEVbal07CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIGJlc3RNYXRjaDsKCSAgICB9OwoJICAgIC8vIGZsYWcgdGhhdCB0aGUgdGFibGUgaXMgcmVhZHkgZm9yIHVzZQoJICAgIFBERjQxN0NvZGV3b3JkRGVjb2Rlci5iU3ltYm9sVGFibGVSZWFkeSA9IGZhbHNlOwoJICAgIFBERjQxN0NvZGV3b3JkRGVjb2Rlci5SQVRJT1NfVEFCTEUgPSBuZXcgQXJyYXkoUERGNDE3Q29tbW9uXzEuZGVmYXVsdC5TWU1CT0xfVEFCTEUubGVuZ3RoKS5tYXAoZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHggPSBuZXcgQXJyYXkoUERGNDE3Q29tbW9uXzEuZGVmYXVsdC5CQVJTX0lOX01PRFVMRSk7IH0pOwoJICAgIHJldHVybiBQREY0MTdDb2Rld29yZERlY29kZXI7Cgl9KCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gUERGNDE3Q29kZXdvcmREZWNvZGVyOwoKCX0pOwoKCXZhciBQREY0MTdSZXN1bHRNZXRhZGF0YV8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJLyoKCSAqIENvcHlyaWdodCAyMDEzIFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgkvLyBwYWNrYWdlIGNvbS5nb29nbGUuenhpbmcucGRmNDE3OwoJLyoqCgkgKiBAYXV0aG9yIEd1ZW50aGVyIEdyYXUKCSAqLwoJdmFyIFBERjQxN1Jlc3VsdE1ldGFkYXRhID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIGZ1bmN0aW9uIFBERjQxN1Jlc3VsdE1ldGFkYXRhKCkgewoJICAgICAgICB0aGlzLnNlZ21lbnRDb3VudCA9IC0xOwoJICAgICAgICB0aGlzLmZpbGVTaXplID0gLTE7CgkgICAgICAgIHRoaXMudGltZXN0YW1wID0gLTE7CgkgICAgICAgIHRoaXMuY2hlY2tzdW0gPSAtMTsKCSAgICB9CgkgICAgLyoqCgkgICAgICogVGhlIFNlZ21lbnQgSUQgcmVwcmVzZW50cyB0aGUgc2VnbWVudCBvZiB0aGUgd2hvbGUgZmlsZSBkaXN0cmlidXRlZCBvdmVyIGRpZmZlcmVudCBzeW1ib2xzLgoJICAgICAqCgkgICAgICogQHJldHVybiBGaWxlIHNlZ21lbnQgaW5kZXgKCSAgICAgKi8KCSAgICBQREY0MTdSZXN1bHRNZXRhZGF0YS5wcm90b3R5cGUuZ2V0U2VnbWVudEluZGV4ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5zZWdtZW50SW5kZXg7CgkgICAgfTsKCSAgICBQREY0MTdSZXN1bHRNZXRhZGF0YS5wcm90b3R5cGUuc2V0U2VnbWVudEluZGV4ID0gZnVuY3Rpb24gKHNlZ21lbnRJbmRleCkgewoJICAgICAgICB0aGlzLnNlZ21lbnRJbmRleCA9IHNlZ21lbnRJbmRleDsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIElzIHRoZSBzYW1lIGZvciBlYWNoIHJlbGF0ZWQgUERGNDE3IHN5bWJvbAoJICAgICAqCgkgICAgICogQHJldHVybiBGaWxlIElECgkgICAgICovCgkgICAgUERGNDE3UmVzdWx0TWV0YWRhdGEucHJvdG90eXBlLmdldEZpbGVJZCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuZmlsZUlkOwoJICAgIH07CgkgICAgUERGNDE3UmVzdWx0TWV0YWRhdGEucHJvdG90eXBlLnNldEZpbGVJZCA9IGZ1bmN0aW9uIChmaWxlSWQpIHsKCSAgICAgICAgdGhpcy5maWxlSWQgPSBmaWxlSWQ7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcmV0dXJuIGFsd2F5cyBudWxsCgkgICAgICogQGRlcHJlY2F0ZWQgdXNlIGRlZGljYXRlZCBhbHJlYWR5IHBhcnNlZCBmaWVsZHMKCSAgICAgKi8KCSAgICAvLyAgIEBEZXByZWNhdGVkCgkgICAgUERGNDE3UmVzdWx0TWV0YWRhdGEucHJvdG90eXBlLmdldE9wdGlvbmFsRGF0YSA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uYWxEYXRhOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQHBhcmFtIG9wdGlvbmFsRGF0YSBvbGQgb3B0aW9uYWwgZGF0YSBmb3JtYXQgYXMgaW50IGFycmF5CgkgICAgICogQGRlcHJlY2F0ZWQgcGFyc2UgYW5kIHVzZSBuZXcgZmllbGRzCgkgICAgICovCgkgICAgLy8gICBARGVwcmVjYXRlZAoJICAgIFBERjQxN1Jlc3VsdE1ldGFkYXRhLnByb3RvdHlwZS5zZXRPcHRpb25hbERhdGEgPSBmdW5jdGlvbiAob3B0aW9uYWxEYXRhKSB7CgkgICAgICAgIHRoaXMub3B0aW9uYWxEYXRhID0gb3B0aW9uYWxEYXRhOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQHJldHVybiB0cnVlIGlmIGl0IGlzIHRoZSBsYXN0IHNlZ21lbnQKCSAgICAgKi8KCSAgICBQREY0MTdSZXN1bHRNZXRhZGF0YS5wcm90b3R5cGUuaXNMYXN0U2VnbWVudCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMubGFzdFNlZ21lbnQ7CgkgICAgfTsKCSAgICBQREY0MTdSZXN1bHRNZXRhZGF0YS5wcm90b3R5cGUuc2V0TGFzdFNlZ21lbnQgPSBmdW5jdGlvbiAobGFzdFNlZ21lbnQpIHsKCSAgICAgICAgdGhpcy5sYXN0U2VnbWVudCA9IGxhc3RTZWdtZW50OwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQHJldHVybiBjb3VudCBvZiBzZWdtZW50cywgLTEgaWYgbm90IHNldAoJICAgICAqLwoJICAgIFBERjQxN1Jlc3VsdE1ldGFkYXRhLnByb3RvdHlwZS5nZXRTZWdtZW50Q291bnQgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLnNlZ21lbnRDb3VudDsKCSAgICB9OwoJICAgIFBERjQxN1Jlc3VsdE1ldGFkYXRhLnByb3RvdHlwZS5zZXRTZWdtZW50Q291bnQgPSBmdW5jdGlvbiAoc2VnbWVudENvdW50IC8qaW50Ki8pIHsKCSAgICAgICAgdGhpcy5zZWdtZW50Q291bnQgPSBzZWdtZW50Q291bnQ7CgkgICAgfTsKCSAgICBQREY0MTdSZXN1bHRNZXRhZGF0YS5wcm90b3R5cGUuZ2V0U2VuZGVyID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5zZW5kZXIgfHwgbnVsbDsKCSAgICB9OwoJICAgIFBERjQxN1Jlc3VsdE1ldGFkYXRhLnByb3RvdHlwZS5zZXRTZW5kZXIgPSBmdW5jdGlvbiAoc2VuZGVyKSB7CgkgICAgICAgIHRoaXMuc2VuZGVyID0gc2VuZGVyOwoJICAgIH07CgkgICAgUERGNDE3UmVzdWx0TWV0YWRhdGEucHJvdG90eXBlLmdldEFkZHJlc3NlZSA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuYWRkcmVzc2VlIHx8IG51bGw7CgkgICAgfTsKCSAgICBQREY0MTdSZXN1bHRNZXRhZGF0YS5wcm90b3R5cGUuc2V0QWRkcmVzc2VlID0gZnVuY3Rpb24gKGFkZHJlc3NlZSkgewoJICAgICAgICB0aGlzLmFkZHJlc3NlZSA9IGFkZHJlc3NlZTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEZpbGVuYW1lIG9mIHRoZSBlbmNvZGVkIGZpbGUKCSAgICAgKgoJICAgICAqIEByZXR1cm4gZmlsZW5hbWUKCSAgICAgKi8KCSAgICBQREY0MTdSZXN1bHRNZXRhZGF0YS5wcm90b3R5cGUuZ2V0RmlsZU5hbWUgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmZpbGVOYW1lOwoJICAgIH07CgkgICAgUERGNDE3UmVzdWx0TWV0YWRhdGEucHJvdG90eXBlLnNldEZpbGVOYW1lID0gZnVuY3Rpb24gKGZpbGVOYW1lKSB7CgkgICAgICAgIHRoaXMuZmlsZU5hbWUgPSBmaWxlTmFtZTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIGZpbGVzaXplIGluIGJ5dGVzIG9mIHRoZSBlbmNvZGVkIGZpbGUKCSAgICAgKgoJICAgICAqIEByZXR1cm4gZmlsZXNpemUgaW4gYnl0ZXMsIC0xIGlmIG5vdCBzZXQKCSAgICAgKi8KCSAgICBQREY0MTdSZXN1bHRNZXRhZGF0YS5wcm90b3R5cGUuZ2V0RmlsZVNpemUgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmZpbGVTaXplOwoJICAgIH07CgkgICAgUERGNDE3UmVzdWx0TWV0YWRhdGEucHJvdG90eXBlLnNldEZpbGVTaXplID0gZnVuY3Rpb24gKGZpbGVTaXplIC8qbG9uZyovKSB7CgkgICAgICAgIHRoaXMuZmlsZVNpemUgPSBmaWxlU2l6ZTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIDE2LWJpdCBDUkMgY2hlY2tzdW0gdXNpbmcgQ0NJVFQtMTYKCSAgICAgKgoJICAgICAqIEByZXR1cm4gY3JjIGNoZWNrc3VtLCAtMSBpZiBub3Qgc2V0CgkgICAgICovCgkgICAgUERGNDE3UmVzdWx0TWV0YWRhdGEucHJvdG90eXBlLmdldENoZWNrc3VtID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5jaGVja3N1bTsKCSAgICB9OwoJICAgIFBERjQxN1Jlc3VsdE1ldGFkYXRhLnByb3RvdHlwZS5zZXRDaGVja3N1bSA9IGZ1bmN0aW9uIChjaGVja3N1bSAvKmludCovKSB7CgkgICAgICAgIHRoaXMuY2hlY2tzdW0gPSBjaGVja3N1bTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIHVuaXggZXBvY2sgdGltZXN0YW1wLCBlbGFwc2VkIHNlY29uZHMgc2luY2UgMTk3MC0wMS0wMQoJICAgICAqCgkgICAgICogQHJldHVybiBlbGFwc2VkIHNlY29uZHMsIC0xIGlmIG5vdCBzZXQKCSAgICAgKi8KCSAgICBQREY0MTdSZXN1bHRNZXRhZGF0YS5wcm90b3R5cGUuZ2V0VGltZXN0YW1wID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy50aW1lc3RhbXA7CgkgICAgfTsKCSAgICBQREY0MTdSZXN1bHRNZXRhZGF0YS5wcm90b3R5cGUuc2V0VGltZXN0YW1wID0gZnVuY3Rpb24gKHRpbWVzdGFtcCAvKmxvbmcqLykgewoJICAgICAgICB0aGlzLnRpbWVzdGFtcCA9IHRpbWVzdGFtcDsKCSAgICB9OwoJICAgIHJldHVybiBQREY0MTdSZXN1bHRNZXRhZGF0YTsKCX0oKSk7CglleHBvcnRzLmRlZmF1bHQgPSBQREY0MTdSZXN1bHRNZXRhZGF0YTsKCgl9KTsKCgl2YXIgTG9uZ18xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCS8qKgoJICogUG9ueWZpbGwgZm9yIEphdmEncyBMb25nIGNsYXNzLgoJICovCgl2YXIgTG9uZyA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBMb25nKCkgewoJICAgIH0KCSAgICAvKioKCSAgICAgKiBQYXJzZXMgYSBzdHJpbmcgdG8gYSBudW1iZXIsIHNpbmNlIEpTIGhhcyBubyByZWFsbHkgSW50NjQuCgkgICAgICoKCSAgICAgKiBAcGFyYW0gbnVtIE51bWVyaWMgc3RyaW5nLgoJICAgICAqIEBwYXJhbSByYWRpeCBEZXN0aW5hdGlvbiByYWRpeC4KCSAgICAgKi8KCSAgICBMb25nLnBhcnNlTG9uZyA9IGZ1bmN0aW9uIChudW0sIHJhZGl4KSB7CgkgICAgICAgIGlmIChyYWRpeCA9PT0gdm9pZCAwKSB7IHJhZGl4ID0gdW5kZWZpbmVkOyB9CgkgICAgICAgIHJldHVybiBwYXJzZUludChudW0sIHJhZGl4KTsKCSAgICB9OwoJICAgIHJldHVybiBMb25nOwoJfSgpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IExvbmc7CgoJfSk7CgoJdmFyIE51bGxQb2ludGVyRXhjZXB0aW9uXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7Cgl2YXIgX19leHRlbmRzID0gKGNvbW1vbmpzR2xvYmFsICYmIGNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHsKCSAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwKCSAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHwKCSAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9OwoJICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICB9OwoJICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH0KCSAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpOwoJICAgIH07Cgl9KSgpOwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCgkvKioKCSAqIEN1c3RvbSBFcnJvciBjbGFzcyBvZiB0eXBlIEV4Y2VwdGlvbi4KCSAqLwoJdmFyIE51bGxQb2ludGVyRXhjZXB0aW9uID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikgewoJICAgIF9fZXh0ZW5kcyhOdWxsUG9pbnRlckV4Y2VwdGlvbiwgX3N1cGVyKTsKCSAgICBmdW5jdGlvbiBOdWxsUG9pbnRlckV4Y2VwdGlvbigpIHsKCSAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzOwoJICAgIH0KCSAgICBOdWxsUG9pbnRlckV4Y2VwdGlvbi5raW5kID0gJ051bGxQb2ludGVyRXhjZXB0aW9uJzsKCSAgICByZXR1cm4gTnVsbFBvaW50ZXJFeGNlcHRpb247Cgl9KEV4Y2VwdGlvbl8xLmRlZmF1bHQpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IE51bGxQb2ludGVyRXhjZXB0aW9uOwoKCX0pOwoKCXZhciBPdXRwdXRTdHJlYW1fMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgoKCS8qCgkgKiBDb3B5cmlnaHQgKGMpIDE5OTQsIDIwMDQsIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgkgKiBETyBOT1QgQUxURVIgT1IgUkVNT1ZFIENPUFlSSUdIVCBOT1RJQ0VTIE9SIFRISVMgRklMRSBIRUFERVIuCgkgKgoJICogVGhpcyBjb2RlIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKCSAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIG9ubHksIGFzCgkgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4gIE9yYWNsZSBkZXNpZ25hdGVzIHRoaXMKCSAqIHBhcnRpY3VsYXIgZmlsZSBhcyBzdWJqZWN0IHRvIHRoZSAiQ2xhc3NwYXRoIiBleGNlcHRpb24gYXMgcHJvdmlkZWQKCSAqIGJ5IE9yYWNsZSBpbiB0aGUgTElDRU5TRSBmaWxlIHRoYXQgYWNjb21wYW5pZWQgdGhpcyBjb2RlLgoJICoKCSAqIFRoaXMgY29kZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAoJICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yCgkgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKCSAqIHZlcnNpb24gMiBmb3IgbW9yZSBkZXRhaWxzIChhIGNvcHkgaXMgaW5jbHVkZWQgaW4gdGhlIExJQ0VOU0UgZmlsZSB0aGF0CgkgKiBhY2NvbXBhbmllZCB0aGlzIGNvZGUpLgoJICoKCSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24KCSAqIDIgYWxvbmcgd2l0aCB0aGlzIHdvcms7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKCSAqIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQS4KCSAqCgkgKiBQbGVhc2UgY29udGFjdCBPcmFjbGUsIDUwMCBPcmFjbGUgUGFya3dheSwgUmVkd29vZCBTaG9yZXMsIENBIDk0MDY1IFVTQQoJICogb3IgdmlzaXQgd3d3Lm9yYWNsZS5jb20gaWYgeW91IG5lZWQgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvciBoYXZlIGFueQoJICogcXVlc3Rpb25zLgoJICovCgkvLyBwYWNrYWdlIGphdmEuaW87CgkvKioKCSAqIFRoaXMgYWJzdHJhY3QgY2xhc3MgaXMgdGhlIHN1cGVyY2xhc3Mgb2YgYWxsIGNsYXNzZXMgcmVwcmVzZW50aW5nCgkgKiBhbiBvdXRwdXQgc3RyZWFtIG9mIGJ5dGVzLiBBbiBvdXRwdXQgc3RyZWFtIGFjY2VwdHMgb3V0cHV0IGJ5dGVzCgkgKiBhbmQgc2VuZHMgdGhlbSB0byBzb21lIHNpbmsuCgkgKiA8cD4KCSAqIEFwcGxpY2F0aW9ucyB0aGF0IG5lZWQgdG8gZGVmaW5lIGEgc3ViY2xhc3Mgb2YKCSAqIDxjb2RlPk91dHB1dFN0cmVhbTwvY29kZT4gbXVzdCBhbHdheXMgcHJvdmlkZSBhdCBsZWFzdCBhIG1ldGhvZAoJICogdGhhdCB3cml0ZXMgb25lIGJ5dGUgb2Ygb3V0cHV0LgoJICoKCSAqIEBhdXRob3IgIEFydGh1ciB2YW4gSG9mZgoJICogQHNlZSAgICAgamF2YS5pby5CdWZmZXJlZE91dHB1dFN0cmVhbQoJICogQHNlZSAgICAgamF2YS5pby5CeXRlQXJyYXlPdXRwdXRTdHJlYW0KCSAqIEBzZWUgICAgIGphdmEuaW8uRGF0YU91dHB1dFN0cmVhbQoJICogQHNlZSAgICAgamF2YS5pby5GaWx0ZXJPdXRwdXRTdHJlYW0KCSAqIEBzZWUgICAgIGphdmEuaW8uSW5wdXRTdHJlYW0KCSAqIEBzZWUgICAgIGphdmEuaW8uT3V0cHV0U3RyZWFtI3dyaXRlKGludCkKCSAqIEBzaW5jZSAgIEpESzEuMAoJICovCgl2YXIgT3V0cHV0U3RyZWFtIC8qaW1wbGVtZW50cyBDbG9zZWFibGUsIEZsdXNoYWJsZSovID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIGZ1bmN0aW9uIE91dHB1dFN0cmVhbSgpIHsKCSAgICB9CgkgICAgLyoqCgkgICAgICogV3JpdGVzIDxjb2RlPmIubGVuZ3RoPC9jb2RlPiBieXRlcyBmcm9tIHRoZSBzcGVjaWZpZWQgYnl0ZSBhcnJheQoJICAgICAqIHRvIHRoaXMgb3V0cHV0IHN0cmVhbS4gVGhlIGdlbmVyYWwgY29udHJhY3QgZm9yIDxjb2RlPndyaXRlKGIpPC9jb2RlPgoJICAgICAqIGlzIHRoYXQgaXQgc2hvdWxkIGhhdmUgZXhhY3RseSB0aGUgc2FtZSBlZmZlY3QgYXMgdGhlIGNhbGwKCSAgICAgKiA8Y29kZT53cml0ZShiLCAwLCBiLmxlbmd0aCk8L2NvZGU+LgoJICAgICAqCgkgICAgICogQHBhcmFtICAgICAgYiAgIHRoZSBkYXRhLgoJICAgICAqIEBleGNlcHRpb24gIElPRXhjZXB0aW9uICBpZiBhbiBJL08gZXJyb3Igb2NjdXJzLgoJICAgICAqIEBzZWUgICAgICAgIGphdmEuaW8uT3V0cHV0U3RyZWFtI3dyaXRlKGJ5dGVbXSwgaW50LCBpbnQpCgkgICAgICovCgkgICAgT3V0cHV0U3RyZWFtLnByb3RvdHlwZS53cml0ZUJ5dGVzID0gZnVuY3Rpb24gKGIpIHsKCSAgICAgICAgdGhpcy53cml0ZUJ5dGVzT2Zmc2V0KGIsIDAsIGIubGVuZ3RoKTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIFdyaXRlcyA8Y29kZT5sZW48L2NvZGU+IGJ5dGVzIGZyb20gdGhlIHNwZWNpZmllZCBieXRlIGFycmF5CgkgICAgICogc3RhcnRpbmcgYXQgb2Zmc2V0IDxjb2RlPm9mZjwvY29kZT4gdG8gdGhpcyBvdXRwdXQgc3RyZWFtLgoJICAgICAqIFRoZSBnZW5lcmFsIGNvbnRyYWN0IGZvciA8Y29kZT53cml0ZShiLCBvZmYsIGxlbik8L2NvZGU+IGlzIHRoYXQKCSAgICAgKiBzb21lIG9mIHRoZSBieXRlcyBpbiB0aGUgYXJyYXkgPGNvZGU+YjwvY29kZT4gYXJlIHdyaXR0ZW4gdG8gdGhlCgkgICAgICogb3V0cHV0IHN0cmVhbSBpbiBvcmRlcjsgZWxlbWVudCA8Y29kZT5iW29mZl08L2NvZGU+IGlzIHRoZSBmaXJzdAoJICAgICAqIGJ5dGUgd3JpdHRlbiBhbmQgPGNvZGU+YltvZmYrbGVuLTFdPC9jb2RlPiBpcyB0aGUgbGFzdCBieXRlIHdyaXR0ZW4KCSAgICAgKiBieSB0aGlzIG9wZXJhdGlvbi4KCSAgICAgKiA8cD4KCSAgICAgKiBUaGUgPGNvZGU+d3JpdGU8L2NvZGU+IG1ldGhvZCBvZiA8Y29kZT5PdXRwdXRTdHJlYW08L2NvZGU+IGNhbGxzCgkgICAgICogdGhlIHdyaXRlIG1ldGhvZCBvZiBvbmUgYXJndW1lbnQgb24gZWFjaCBvZiB0aGUgYnl0ZXMgdG8gYmUKCSAgICAgKiB3cml0dGVuIG91dC4gU3ViY2xhc3NlcyBhcmUgZW5jb3VyYWdlZCB0byBvdmVycmlkZSB0aGlzIG1ldGhvZCBhbmQKCSAgICAgKiBwcm92aWRlIGEgbW9yZSBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24uCgkgICAgICogPHA+CgkgICAgICogSWYgPGNvZGU+YjwvY29kZT4gaXMgPGNvZGU+bnVsbDwvY29kZT4sIGEKCSAgICAgKiA8Y29kZT5OdWxsUG9pbnRlckV4Y2VwdGlvbjwvY29kZT4gaXMgdGhyb3duLgoJICAgICAqIDxwPgoJICAgICAqIElmIDxjb2RlPm9mZjwvY29kZT4gaXMgbmVnYXRpdmUsIG9yIDxjb2RlPmxlbjwvY29kZT4gaXMgbmVnYXRpdmUsIG9yCgkgICAgICogPGNvZGU+b2ZmK2xlbjwvY29kZT4gaXMgZ3JlYXRlciB0aGFuIHRoZSBsZW5ndGggb2YgdGhlIGFycmF5CgkgICAgICogPGNvZGU+YjwvY29kZT4sIHRoZW4gYW4gPHR0PkluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb248L3R0PiBpcyB0aHJvd24uCgkgICAgICoKCSAgICAgKiBAcGFyYW0gICAgICBiICAgICB0aGUgZGF0YS4KCSAgICAgKiBAcGFyYW0gICAgICBvZmYgICB0aGUgc3RhcnQgb2Zmc2V0IGluIHRoZSBkYXRhLgoJICAgICAqIEBwYXJhbSAgICAgIGxlbiAgIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gd3JpdGUuCgkgICAgICogQGV4Y2VwdGlvbiAgSU9FeGNlcHRpb24gIGlmIGFuIEkvTyBlcnJvciBvY2N1cnMuIEluIHBhcnRpY3VsYXIsCgkgICAgICogICAgICAgICAgICAgYW4gPGNvZGU+SU9FeGNlcHRpb248L2NvZGU+IGlzIHRocm93biBpZiB0aGUgb3V0cHV0CgkgICAgICogICAgICAgICAgICAgc3RyZWFtIGlzIGNsb3NlZC4KCSAgICAgKi8KCSAgICBPdXRwdXRTdHJlYW0ucHJvdG90eXBlLndyaXRlQnl0ZXNPZmZzZXQgPSBmdW5jdGlvbiAoYiwgb2ZmLCBsZW4pIHsKCSAgICAgICAgaWYgKGIgPT0gbnVsbCkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgICAgIGVsc2UgaWYgKChvZmYgPCAwKSB8fCAob2ZmID4gYi5sZW5ndGgpIHx8IChsZW4gPCAwKSB8fAoJICAgICAgICAgICAgKChvZmYgKyBsZW4pID4gYi5sZW5ndGgpIHx8ICgob2ZmICsgbGVuKSA8IDApKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgfQoJICAgICAgICBlbHNlIGlmIChsZW4gPT09IDApIHsKCSAgICAgICAgICAgIHJldHVybjsKCSAgICAgICAgfQoJICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7CgkgICAgICAgICAgICB0aGlzLndyaXRlKGJbb2ZmICsgaV0pOwoJICAgICAgICB9CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBGbHVzaGVzIHRoaXMgb3V0cHV0IHN0cmVhbSBhbmQgZm9yY2VzIGFueSBidWZmZXJlZCBvdXRwdXQgYnl0ZXMKCSAgICAgKiB0byBiZSB3cml0dGVuIG91dC4gVGhlIGdlbmVyYWwgY29udHJhY3Qgb2YgPGNvZGU+Zmx1c2g8L2NvZGU+IGlzCgkgICAgICogdGhhdCBjYWxsaW5nIGl0IGlzIGFuIGluZGljYXRpb24gdGhhdCwgaWYgYW55IGJ5dGVzIHByZXZpb3VzbHkKCSAgICAgKiB3cml0dGVuIGhhdmUgYmVlbiBidWZmZXJlZCBieSB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIG91dHB1dAoJICAgICAqIHN0cmVhbSwgc3VjaCBieXRlcyBzaG91bGQgaW1tZWRpYXRlbHkgYmUgd3JpdHRlbiB0byB0aGVpcgoJICAgICAqIGludGVuZGVkIGRlc3RpbmF0aW9uLgoJICAgICAqIDxwPgoJICAgICAqIElmIHRoZSBpbnRlbmRlZCBkZXN0aW5hdGlvbiBvZiB0aGlzIHN0cmVhbSBpcyBhbiBhYnN0cmFjdGlvbiBwcm92aWRlZCBieQoJICAgICAqIHRoZSB1bmRlcmx5aW5nIG9wZXJhdGluZyBzeXN0ZW0sIGZvciBleGFtcGxlIGEgZmlsZSwgdGhlbiBmbHVzaGluZyB0aGUKCSAgICAgKiBzdHJlYW0gZ3VhcmFudGVlcyBvbmx5IHRoYXQgYnl0ZXMgcHJldmlvdXNseSB3cml0dGVuIHRvIHRoZSBzdHJlYW0gYXJlCgkgICAgICogcGFzc2VkIHRvIHRoZSBvcGVyYXRpbmcgc3lzdGVtIGZvciB3cml0aW5nOyBpdCBkb2VzIG5vdCBndWFyYW50ZWUgdGhhdAoJICAgICAqIHRoZXkgYXJlIGFjdHVhbGx5IHdyaXR0ZW4gdG8gYSBwaHlzaWNhbCBkZXZpY2Ugc3VjaCBhcyBhIGRpc2sgZHJpdmUuCgkgICAgICogPHA+CgkgICAgICogVGhlIDxjb2RlPmZsdXNoPC9jb2RlPiBtZXRob2Qgb2YgPGNvZGU+T3V0cHV0U3RyZWFtPC9jb2RlPiBkb2VzIG5vdGhpbmcuCgkgICAgICoKCSAgICAgKiBAZXhjZXB0aW9uICBJT0V4Y2VwdGlvbiAgaWYgYW4gSS9PIGVycm9yIG9jY3Vycy4KCSAgICAgKi8KCSAgICBPdXRwdXRTdHJlYW0ucHJvdG90eXBlLmZsdXNoID0gZnVuY3Rpb24gKCkgewoJICAgIH07CgkgICAgLyoqCgkgICAgICogQ2xvc2VzIHRoaXMgb3V0cHV0IHN0cmVhbSBhbmQgcmVsZWFzZXMgYW55IHN5c3RlbSByZXNvdXJjZXMKCSAgICAgKiBhc3NvY2lhdGVkIHdpdGggdGhpcyBzdHJlYW0uIFRoZSBnZW5lcmFsIGNvbnRyYWN0IG9mIDxjb2RlPmNsb3NlPC9jb2RlPgoJICAgICAqIGlzIHRoYXQgaXQgY2xvc2VzIHRoZSBvdXRwdXQgc3RyZWFtLiBBIGNsb3NlZCBzdHJlYW0gY2Fubm90IHBlcmZvcm0KCSAgICAgKiBvdXRwdXQgb3BlcmF0aW9ucyBhbmQgY2Fubm90IGJlIHJlb3BlbmVkLgoJICAgICAqIDxwPgoJICAgICAqIFRoZSA8Y29kZT5jbG9zZTwvY29kZT4gbWV0aG9kIG9mIDxjb2RlPk91dHB1dFN0cmVhbTwvY29kZT4gZG9lcyBub3RoaW5nLgoJICAgICAqCgkgICAgICogQGV4Y2VwdGlvbiAgSU9FeGNlcHRpb24gIGlmIGFuIEkvTyBlcnJvciBvY2N1cnMuCgkgICAgICovCgkgICAgT3V0cHV0U3RyZWFtLnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uICgpIHsKCSAgICB9OwoJICAgIHJldHVybiBPdXRwdXRTdHJlYW07Cgl9KCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gT3V0cHV0U3RyZWFtOwoKCX0pOwoKCXZhciBPdXRPZk1lbW9yeUVycm9yXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7Cgl2YXIgX19leHRlbmRzID0gKGNvbW1vbmpzR2xvYmFsICYmIGNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHsKCSAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwKCSAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHwKCSAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9OwoJICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICB9OwoJICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH0KCSAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpOwoJICAgIH07Cgl9KSgpOwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCgkvKioKCSAqIEN1c3RvbSBFcnJvciBjbGFzcyBvZiB0eXBlIEV4Y2VwdGlvbi4KCSAqLwoJdmFyIE91dE9mTWVtb3J5RXJyb3IgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7CgkgICAgX19leHRlbmRzKE91dE9mTWVtb3J5RXJyb3IsIF9zdXBlcik7CgkgICAgZnVuY3Rpb24gT3V0T2ZNZW1vcnlFcnJvcigpIHsKCSAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzOwoJICAgIH0KCSAgICByZXR1cm4gT3V0T2ZNZW1vcnlFcnJvcjsKCX0oRXhjZXB0aW9uXzEuZGVmYXVsdCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gT3V0T2ZNZW1vcnlFcnJvcjsKCgl9KTsKCgl2YXIgQnl0ZUFycmF5T3V0cHV0U3RyZWFtXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CgkvKgoJICogQ29weXJpZ2h0IChjKSAxOTk0LCAyMDEwLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgoJICogRE8gTk9UIEFMVEVSIE9SIFJFTU9WRSBDT1BZUklHSFQgTk9USUNFUyBPUiBUSElTIEZJTEUgSEVBREVSLgoJICoKCSAqIFRoaXMgY29kZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CgkgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvbmx5LCBhcwoJICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uICBPcmFjbGUgZGVzaWduYXRlcyB0aGlzCgkgKiBwYXJ0aWN1bGFyIGZpbGUgYXMgc3ViamVjdCB0byB0aGUgIkNsYXNzcGF0aCIgZXhjZXB0aW9uIGFzIHByb3ZpZGVkCgkgKiBieSBPcmFjbGUgaW4gdGhlIExJQ0VOU0UgZmlsZSB0aGF0IGFjY29tcGFuaWVkIHRoaXMgY29kZS4KCSAqCgkgKiBUaGlzIGNvZGUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKCSAqIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvcgoJICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCgkgKiB2ZXJzaW9uIDIgZm9yIG1vcmUgZGV0YWlscyAoYSBjb3B5IGlzIGluY2x1ZGVkIGluIHRoZSBMSUNFTlNFIGZpbGUgdGhhdAoJICogYWNjb21wYW5pZWQgdGhpcyBjb2RlKS4KCSAqCgkgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uCgkgKiAyIGFsb25nIHdpdGggdGhpcyB3b3JrOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCgkgKiBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCgkgKgoJICogUGxlYXNlIGNvbnRhY3QgT3JhY2xlLCA1MDAgT3JhY2xlIFBhcmt3YXksIFJlZHdvb2QgU2hvcmVzLCBDQSA5NDA2NSBVU0EKCSAqIG9yIHZpc2l0IHd3dy5vcmFjbGUuY29tIGlmIHlvdSBuZWVkIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb3IgaGF2ZSBhbnkKCSAqIHF1ZXN0aW9ucy4KCSAqLwoJdmFyIF9fZXh0ZW5kcyA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7CgkgICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8CgkgICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8CgkgICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTsKCSAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgfTsKCSAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9CgkgICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTsKCSAgICB9OwoJfSkoKTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgkvLyBwYWNrYWdlIGphdmEuaW87CgkvLyBpbXBvcnQgamF2YS51dGlsLkFycmF5czsKCgoKCgoKCgkvKioKCSAqIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBhbiBvdXRwdXQgc3RyZWFtIGluIHdoaWNoIHRoZSBkYXRhIGlzCgkgKiB3cml0dGVuIGludG8gYSBieXRlIGFycmF5LiBUaGUgYnVmZmVyIGF1dG9tYXRpY2FsbHkgZ3Jvd3MgYXMgZGF0YQoJICogaXMgd3JpdHRlbiB0byBpdC4KCSAqIFRoZSBkYXRhIGNhbiBiZSByZXRyaWV2ZWQgdXNpbmcgPGNvZGU+dG9CeXRlQXJyYXkoKTwvY29kZT4gYW5kCgkgKiA8Y29kZT50b1N0cmluZygpPC9jb2RlPi4KCSAqIDxwPgoJICogQ2xvc2luZyBhIDx0dD5CeXRlQXJyYXlPdXRwdXRTdHJlYW08L3R0PiBoYXMgbm8gZWZmZWN0LiBUaGUgbWV0aG9kcyBpbgoJICogdGhpcyBjbGFzcyBjYW4gYmUgY2FsbGVkIGFmdGVyIHRoZSBzdHJlYW0gaGFzIGJlZW4gY2xvc2VkIHdpdGhvdXQKCSAqIGdlbmVyYXRpbmcgYW4gPHR0PklPRXhjZXB0aW9uPC90dD4uCgkgKgoJICogQGF1dGhvciAgQXJ0aHVyIHZhbiBIb2ZmCgkgKiBAc2luY2UgICBKREsxLjAKCSAqLwoJdmFyIEJ5dGVBcnJheU91dHB1dFN0cmVhbSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHsKCSAgICBfX2V4dGVuZHMoQnl0ZUFycmF5T3V0cHV0U3RyZWFtLCBfc3VwZXIpOwoJICAgIC8qKgoJICAgICAqIENyZWF0ZXMgYSBuZXcgYnl0ZSBhcnJheSBvdXRwdXQgc3RyZWFtLiBUaGUgYnVmZmVyIGNhcGFjaXR5IGlzCgkgICAgICogaW5pdGlhbGx5IDMyIGJ5dGVzLCB0aG91Z2ggaXRzIHNpemUgaW5jcmVhc2VzIGlmIG5lY2Vzc2FyeS4KCSAgICAgKi8KCSAgICAvLyBwdWJsaWMgY29uc3RydWN0b3IoKSB7CgkgICAgLy8gICAgIHRoaXMoMzIpOwoJICAgIC8vIH0KCSAgICAvKioKCSAgICAgKiBDcmVhdGVzIGEgbmV3IGJ5dGUgYXJyYXkgb3V0cHV0IHN0cmVhbSwgd2l0aCBhIGJ1ZmZlciBjYXBhY2l0eSBvZgoJICAgICAqIHRoZSBzcGVjaWZpZWQgc2l6ZSwgaW4gYnl0ZXMuCgkgICAgICoKCSAgICAgKiBAcGFyYW0gICBzaXplICAgdGhlIGluaXRpYWwgc2l6ZS4KCSAgICAgKiBAZXhjZXB0aW9uICBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgc2l6ZSBpcyBuZWdhdGl2ZS4KCSAgICAgKi8KCSAgICBmdW5jdGlvbiBCeXRlQXJyYXlPdXRwdXRTdHJlYW0oc2l6ZSkgewoJICAgICAgICBpZiAoc2l6ZSA9PT0gdm9pZCAwKSB7IHNpemUgPSAzMjsgfQoJICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzOwoJICAgICAgICAvKioKCSAgICAgICAgICogVGhlIG51bWJlciBvZiB2YWxpZCBieXRlcyBpbiB0aGUgYnVmZmVyLgoJICAgICAgICAgKi8KCSAgICAgICAgX3RoaXMuY291bnQgPSAwOwoJICAgICAgICBpZiAoc2l6ZSA8IDApIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCdOZWdhdGl2ZSBpbml0aWFsIHNpemU6ICcKCSAgICAgICAgICAgICAgICArIHNpemUpOwoJICAgICAgICB9CgkgICAgICAgIF90aGlzLmJ1ZiA9IG5ldyBVaW50OEFycmF5KHNpemUpOwoJICAgICAgICByZXR1cm4gX3RoaXM7CgkgICAgfQoJICAgIC8qKgoJICAgICAqIEluY3JlYXNlcyB0aGUgY2FwYWNpdHkgaWYgbmVjZXNzYXJ5IHRvIGVuc3VyZSB0aGF0IGl0IGNhbiBob2xkCgkgICAgICogYXQgbGVhc3QgdGhlIG51bWJlciBvZiBlbGVtZW50cyBzcGVjaWZpZWQgYnkgdGhlIG1pbmltdW0KCSAgICAgKiBjYXBhY2l0eSBhcmd1bWVudC4KCSAgICAgKgoJICAgICAqIEBwYXJhbSBtaW5DYXBhY2l0eSB0aGUgZGVzaXJlZCBtaW5pbXVtIGNhcGFjaXR5CgkgICAgICogQHRocm93cyBPdXRPZk1lbW9yeUVycm9yIGlmIHtAY29kZSBtaW5DYXBhY2l0eSA8IDB9LiAgVGhpcyBpcwoJICAgICAqIGludGVycHJldGVkIGFzIGEgcmVxdWVzdCBmb3IgdGhlIHVuc2F0aXNmaWFibHkgbGFyZ2UgY2FwYWNpdHkKCSAgICAgKiB7QGNvZGUgKGxvbmcpIEludGVnZXIuTUFYX1ZBTFVFICsgKG1pbkNhcGFjaXR5IC0gSW50ZWdlci5NQVhfVkFMVUUpfS4KCSAgICAgKi8KCSAgICBCeXRlQXJyYXlPdXRwdXRTdHJlYW0ucHJvdG90eXBlLmVuc3VyZUNhcGFjaXR5ID0gZnVuY3Rpb24gKG1pbkNhcGFjaXR5KSB7CgkgICAgICAgIC8vIG92ZXJmbG93LWNvbnNjaW91cyBjb2RlCgkgICAgICAgIGlmIChtaW5DYXBhY2l0eSAtIHRoaXMuYnVmLmxlbmd0aCA+IDApCgkgICAgICAgICAgICB0aGlzLmdyb3cobWluQ2FwYWNpdHkpOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogSW5jcmVhc2VzIHRoZSBjYXBhY2l0eSB0byBlbnN1cmUgdGhhdCBpdCBjYW4gaG9sZCBhdCBsZWFzdCB0aGUKCSAgICAgKiBudW1iZXIgb2YgZWxlbWVudHMgc3BlY2lmaWVkIGJ5IHRoZSBtaW5pbXVtIGNhcGFjaXR5IGFyZ3VtZW50LgoJICAgICAqCgkgICAgICogQHBhcmFtIG1pbkNhcGFjaXR5IHRoZSBkZXNpcmVkIG1pbmltdW0gY2FwYWNpdHkKCSAgICAgKi8KCSAgICBCeXRlQXJyYXlPdXRwdXRTdHJlYW0ucHJvdG90eXBlLmdyb3cgPSBmdW5jdGlvbiAobWluQ2FwYWNpdHkpIHsKCSAgICAgICAgLy8gb3ZlcmZsb3ctY29uc2Npb3VzIGNvZGUKCSAgICAgICAgdmFyIG9sZENhcGFjaXR5ID0gdGhpcy5idWYubGVuZ3RoOwoJICAgICAgICB2YXIgbmV3Q2FwYWNpdHkgPSBvbGRDYXBhY2l0eSA8PCAxOwoJICAgICAgICBpZiAobmV3Q2FwYWNpdHkgLSBtaW5DYXBhY2l0eSA8IDApCgkgICAgICAgICAgICBuZXdDYXBhY2l0eSA9IG1pbkNhcGFjaXR5OwoJICAgICAgICBpZiAobmV3Q2FwYWNpdHkgPCAwKSB7CgkgICAgICAgICAgICBpZiAobWluQ2FwYWNpdHkgPCAwKSAvLyBvdmVyZmxvdwoJICAgICAgICAgICAgICAgIHRocm93IG5ldyBPdXRPZk1lbW9yeUVycm9yXzEuZGVmYXVsdCgpOwoJICAgICAgICAgICAgbmV3Q2FwYWNpdHkgPSBJbnRlZ2VyXzEuZGVmYXVsdC5NQVhfVkFMVUU7CgkgICAgICAgIH0KCSAgICAgICAgdGhpcy5idWYgPSBBcnJheXNfMS5kZWZhdWx0LmNvcHlPZlVpbnQ4QXJyYXkodGhpcy5idWYsIG5ld0NhcGFjaXR5KTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIFdyaXRlcyB0aGUgc3BlY2lmaWVkIGJ5dGUgdG8gdGhpcyBieXRlIGFycmF5IG91dHB1dCBzdHJlYW0uCgkgICAgICoKCSAgICAgKiBAcGFyYW0gICBiICAgdGhlIGJ5dGUgdG8gYmUgd3JpdHRlbi4KCSAgICAgKi8KCSAgICBCeXRlQXJyYXlPdXRwdXRTdHJlYW0ucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gKGIpIHsKCSAgICAgICAgdGhpcy5lbnN1cmVDYXBhY2l0eSh0aGlzLmNvdW50ICsgMSk7CgkgICAgICAgIHRoaXMuYnVmW3RoaXMuY291bnRdID0gLyooYnl0ZSkqLyBiOwoJICAgICAgICB0aGlzLmNvdW50ICs9IDE7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBXcml0ZXMgPGNvZGU+bGVuPC9jb2RlPiBieXRlcyBmcm9tIHRoZSBzcGVjaWZpZWQgYnl0ZSBhcnJheQoJICAgICAqIHN0YXJ0aW5nIGF0IG9mZnNldCA8Y29kZT5vZmY8L2NvZGU+IHRvIHRoaXMgYnl0ZSBhcnJheSBvdXRwdXQgc3RyZWFtLgoJICAgICAqCgkgICAgICogQHBhcmFtICAgYiAgICAgdGhlIGRhdGEuCgkgICAgICogQHBhcmFtICAgb2ZmICAgdGhlIHN0YXJ0IG9mZnNldCBpbiB0aGUgZGF0YS4KCSAgICAgKiBAcGFyYW0gICBsZW4gICB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIHdyaXRlLgoJICAgICAqLwoJICAgIEJ5dGVBcnJheU91dHB1dFN0cmVhbS5wcm90b3R5cGUud3JpdGVCeXRlc09mZnNldCA9IGZ1bmN0aW9uIChiLCBvZmYsIGxlbikgewoJICAgICAgICBpZiAoKG9mZiA8IDApIHx8IChvZmYgPiBiLmxlbmd0aCkgfHwgKGxlbiA8IDApIHx8CgkgICAgICAgICAgICAoKG9mZiArIGxlbikgLSBiLmxlbmd0aCA+IDApKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgfQoJICAgICAgICB0aGlzLmVuc3VyZUNhcGFjaXR5KHRoaXMuY291bnQgKyBsZW4pOwoJICAgICAgICBTeXN0ZW1fMS5kZWZhdWx0LmFycmF5Y29weShiLCBvZmYsIHRoaXMuYnVmLCB0aGlzLmNvdW50LCBsZW4pOwoJICAgICAgICB0aGlzLmNvdW50ICs9IGxlbjsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIFdyaXRlcyB0aGUgY29tcGxldGUgY29udGVudHMgb2YgdGhpcyBieXRlIGFycmF5IG91dHB1dCBzdHJlYW0gdG8KCSAgICAgKiB0aGUgc3BlY2lmaWVkIG91dHB1dCBzdHJlYW0gYXJndW1lbnQsIGFzIGlmIGJ5IGNhbGxpbmcgdGhlIG91dHB1dAoJICAgICAqIHN0cmVhbSdzIHdyaXRlIG1ldGhvZCB1c2luZyA8Y29kZT5vdXQud3JpdGUoYnVmLCAwLCBjb3VudCk8L2NvZGU+LgoJICAgICAqCgkgICAgICogQHBhcmFtICAgICAgb3V0ICAgdGhlIG91dHB1dCBzdHJlYW0gdG8gd2hpY2ggdG8gd3JpdGUgdGhlIGRhdGEuCgkgICAgICogQGV4Y2VwdGlvbiAgSU9FeGNlcHRpb24gIGlmIGFuIEkvTyBlcnJvciBvY2N1cnMuCgkgICAgICovCgkgICAgQnl0ZUFycmF5T3V0cHV0U3RyZWFtLnByb3RvdHlwZS53cml0ZVRvID0gZnVuY3Rpb24gKG91dCkgewoJICAgICAgICBvdXQud3JpdGVCeXRlc09mZnNldCh0aGlzLmJ1ZiwgMCwgdGhpcy5jb3VudCk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBSZXNldHMgdGhlIDxjb2RlPmNvdW50PC9jb2RlPiBmaWVsZCBvZiB0aGlzIGJ5dGUgYXJyYXkgb3V0cHV0CgkgICAgICogc3RyZWFtIHRvIHplcm8sIHNvIHRoYXQgYWxsIGN1cnJlbnRseSBhY2N1bXVsYXRlZCBvdXRwdXQgaW4gdGhlCgkgICAgICogb3V0cHV0IHN0cmVhbSBpcyBkaXNjYXJkZWQuIFRoZSBvdXRwdXQgc3RyZWFtIGNhbiBiZSB1c2VkIGFnYWluLAoJICAgICAqIHJldXNpbmcgdGhlIGFscmVhZHkgYWxsb2NhdGVkIGJ1ZmZlciBzcGFjZS4KCSAgICAgKgoJICAgICAqIEBzZWUgICAgIGphdmEuaW8uQnl0ZUFycmF5SW5wdXRTdHJlYW0jY291bnQKCSAgICAgKi8KCSAgICBCeXRlQXJyYXlPdXRwdXRTdHJlYW0ucHJvdG90eXBlLnJlc2V0ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICB0aGlzLmNvdW50ID0gMDsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIENyZWF0ZXMgYSBuZXdseSBhbGxvY2F0ZWQgYnl0ZSBhcnJheS4gSXRzIHNpemUgaXMgdGhlIGN1cnJlbnQKCSAgICAgKiBzaXplIG9mIHRoaXMgb3V0cHV0IHN0cmVhbSBhbmQgdGhlIHZhbGlkIGNvbnRlbnRzIG9mIHRoZSBidWZmZXIKCSAgICAgKiBoYXZlIGJlZW4gY29waWVkIGludG8gaXQuCgkgICAgICoKCSAgICAgKiBAcmV0dXJuICB0aGUgY3VycmVudCBjb250ZW50cyBvZiB0aGlzIG91dHB1dCBzdHJlYW0sIGFzIGEgYnl0ZSBhcnJheS4KCSAgICAgKiBAc2VlICAgICBqYXZhLmlvLkJ5dGVBcnJheU91dHB1dFN0cmVhbSNzaXplKCkKCSAgICAgKi8KCSAgICBCeXRlQXJyYXlPdXRwdXRTdHJlYW0ucHJvdG90eXBlLnRvQnl0ZUFycmF5ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gQXJyYXlzXzEuZGVmYXVsdC5jb3B5T2ZVaW50OEFycmF5KHRoaXMuYnVmLCB0aGlzLmNvdW50KTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIFJldHVybnMgdGhlIGN1cnJlbnQgc2l6ZSBvZiB0aGUgYnVmZmVyLgoJICAgICAqCgkgICAgICogQHJldHVybiAgdGhlIHZhbHVlIG9mIHRoZSA8Y29kZT5jb3VudDwvY29kZT4gZmllbGQsIHdoaWNoIGlzIHRoZSBudW1iZXIKCSAgICAgKiAgICAgICAgICBvZiB2YWxpZCBieXRlcyBpbiB0aGlzIG91dHB1dCBzdHJlYW0uCgkgICAgICogQHNlZSAgICAgamF2YS5pby5CeXRlQXJyYXlPdXRwdXRTdHJlYW0jY291bnQKCSAgICAgKi8KCSAgICBCeXRlQXJyYXlPdXRwdXRTdHJlYW0ucHJvdG90eXBlLnNpemUgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmNvdW50OwoJICAgIH07CgkgICAgQnl0ZUFycmF5T3V0cHV0U3RyZWFtLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIChwYXJhbSkgewoJICAgICAgICBpZiAoIXBhcmFtKSB7CgkgICAgICAgICAgICByZXR1cm4gdGhpcy50b1N0cmluZ192b2lkKCk7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKHR5cGVvZiBwYXJhbSA9PT0gJ3N0cmluZycpIHsKCSAgICAgICAgICAgIHJldHVybiB0aGlzLnRvU3RyaW5nX3N0cmluZyhwYXJhbSk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHRoaXMudG9TdHJpbmdfbnVtYmVyKHBhcmFtKTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIENvbnZlcnRzIHRoZSBidWZmZXIncyBjb250ZW50cyBpbnRvIGEgc3RyaW5nIGRlY29kaW5nIGJ5dGVzIHVzaW5nIHRoZQoJICAgICAqIHBsYXRmb3JtJ3MgZGVmYXVsdCBjaGFyYWN0ZXIgc2V0LiBUaGUgbGVuZ3RoIG9mIHRoZSBuZXcgPHR0PlN0cmluZzwvdHQ+CgkgICAgICogaXMgYSBmdW5jdGlvbiBvZiB0aGUgY2hhcmFjdGVyIHNldCwgYW5kIGhlbmNlIG1heSBub3QgYmUgZXF1YWwgdG8gdGhlCgkgICAgICogc2l6ZSBvZiB0aGUgYnVmZmVyLgoJICAgICAqCgkgICAgICogPHA+IFRoaXMgbWV0aG9kIGFsd2F5cyByZXBsYWNlcyBtYWxmb3JtZWQtaW5wdXQgYW5kIHVubWFwcGFibGUtY2hhcmFjdGVyCgkgICAgICogc2VxdWVuY2VzIHdpdGggdGhlIGRlZmF1bHQgcmVwbGFjZW1lbnQgc3RyaW5nIGZvciB0aGUgcGxhdGZvcm0ncwoJICAgICAqIGRlZmF1bHQgY2hhcmFjdGVyIHNldC4gVGhlIHtAbGlua3BsYWluIGphdmEubmlvLmNoYXJzZXQuQ2hhcnNldERlY29kZXJ9CgkgICAgICogY2xhc3Mgc2hvdWxkIGJlIHVzZWQgd2hlbiBtb3JlIGNvbnRyb2wgb3ZlciB0aGUgZGVjb2RpbmcgcHJvY2VzcyBpcwoJICAgICAqIHJlcXVpcmVkLgoJICAgICAqCgkgICAgICogQHJldHVybiBTdHJpbmcgZGVjb2RlZCBmcm9tIHRoZSBidWZmZXIncyBjb250ZW50cy4KCSAgICAgKiBAc2luY2UgIEpESzEuMQoJICAgICAqLwoJICAgIEJ5dGVBcnJheU91dHB1dFN0cmVhbS5wcm90b3R5cGUudG9TdHJpbmdfdm9pZCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIG5ldyBTdHJpbmcodGhpcy5idWYgLyosIDAsIHRoaXMuY291bnQqLykudG9TdHJpbmcoKTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIENvbnZlcnRzIHRoZSBidWZmZXIncyBjb250ZW50cyBpbnRvIGEgc3RyaW5nIGJ5IGRlY29kaW5nIHRoZSBieXRlcyB1c2luZwoJICAgICAqIHRoZSBzcGVjaWZpZWQge0BsaW5rIGphdmEubmlvLmNoYXJzZXQuQ2hhcnNldCBjaGFyc2V0TmFtZX0uIFRoZSBsZW5ndGggb2YKCSAgICAgKiB0aGUgbmV3IDx0dD5TdHJpbmc8L3R0PiBpcyBhIGZ1bmN0aW9uIG9mIHRoZSBjaGFyc2V0LCBhbmQgaGVuY2UgbWF5IG5vdCBiZQoJICAgICAqIGVxdWFsIHRvIHRoZSBsZW5ndGggb2YgdGhlIGJ5dGUgYXJyYXkuCgkgICAgICoKCSAgICAgKiA8cD4gVGhpcyBtZXRob2QgYWx3YXlzIHJlcGxhY2VzIG1hbGZvcm1lZC1pbnB1dCBhbmQgdW5tYXBwYWJsZS1jaGFyYWN0ZXIKCSAgICAgKiBzZXF1ZW5jZXMgd2l0aCB0aGlzIGNoYXJzZXQncyBkZWZhdWx0IHJlcGxhY2VtZW50IHN0cmluZy4gVGhlIHtAbGluawoJICAgICAqIGphdmEubmlvLmNoYXJzZXQuQ2hhcnNldERlY29kZXJ9IGNsYXNzIHNob3VsZCBiZSB1c2VkIHdoZW4gbW9yZSBjb250cm9sCgkgICAgICogb3ZlciB0aGUgZGVjb2RpbmcgcHJvY2VzcyBpcyByZXF1aXJlZC4KCSAgICAgKgoJICAgICAqIEBwYXJhbSAgY2hhcnNldE5hbWUgIHRoZSBuYW1lIG9mIGEgc3VwcG9ydGVkCgkgICAgICogICAgICAgICAgICAgIHtAbGlua3BsYWluIGphdmEubmlvLmNoYXJzZXQuQ2hhcnNldCA8L2NvZGU+Y2hhcnNldDxjb2RlPn0KCSAgICAgKiBAcmV0dXJuIFN0cmluZyBkZWNvZGVkIGZyb20gdGhlIGJ1ZmZlcidzIGNvbnRlbnRzLgoJICAgICAqIEBleGNlcHRpb24gIFVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24KCSAgICAgKiAgICAgICAgICAgICBJZiB0aGUgbmFtZWQgY2hhcnNldCBpcyBub3Qgc3VwcG9ydGVkCgkgICAgICogQHNpbmNlICAgSkRLMS4xCgkgICAgICovCgkgICAgQnl0ZUFycmF5T3V0cHV0U3RyZWFtLnByb3RvdHlwZS50b1N0cmluZ19zdHJpbmcgPSBmdW5jdGlvbiAoY2hhcnNldE5hbWUpIHsKCSAgICAgICAgcmV0dXJuIG5ldyBTdHJpbmcodGhpcy5idWYgLyosIDAsIHRoaXMuY291bnQsIGNoYXJzZXROYW1lKi8pLnRvU3RyaW5nKCk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBDcmVhdGVzIGEgbmV3bHkgYWxsb2NhdGVkIHN0cmluZy4gSXRzIHNpemUgaXMgdGhlIGN1cnJlbnQgc2l6ZSBvZgoJICAgICAqIHRoZSBvdXRwdXQgc3RyZWFtIGFuZCB0aGUgdmFsaWQgY29udGVudHMgb2YgdGhlIGJ1ZmZlciBoYXZlIGJlZW4KCSAgICAgKiBjb3BpZWQgaW50byBpdC4gRWFjaCBjaGFyYWN0ZXIgPGk+YzwvaT4gaW4gdGhlIHJlc3VsdGluZyBzdHJpbmcgaXMKCSAgICAgKiBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgPGk+YjwvaT4gaW4gdGhlIGJ5dGUKCSAgICAgKiBhcnJheSBzdWNoIHRoYXQ6CgkgICAgICogPGJsb2NrcXVvdGU+PHByZT4KCSAgICAgKiAgICAgYyA9PSAoY2hhcikoKChoaWJ5dGUgJmFtcDsgMHhmZikgJmx0OyZsdDsgOCkgfCAoYiAmYW1wOyAweGZmKSkKCSAgICAgKiA8L3ByZT48L2Jsb2NrcXVvdGU+CgkgICAgICoKCSAgICAgKiBAZGVwcmVjYXRlZCBUaGlzIG1ldGhvZCBkb2VzIG5vdCBwcm9wZXJseSBjb252ZXJ0IGJ5dGVzIGludG8gY2hhcmFjdGVycy4KCSAgICAgKiBBcyBvZiBKREsmbmJzcDsxLjEsIHRoZSBwcmVmZXJyZWQgd2F5IHRvIGRvIHRoaXMgaXMgdmlhIHRoZQoJICAgICAqIDxjb2RlPnRvU3RyaW5nKFN0cmluZyBlbmMpPC9jb2RlPiBtZXRob2QsIHdoaWNoIHRha2VzIGFuIGVuY29kaW5nLW5hbWUKCSAgICAgKiBhcmd1bWVudCwgb3IgdGhlIDxjb2RlPnRvU3RyaW5nKCk8L2NvZGU+IG1ldGhvZCwgd2hpY2ggdXNlcyB0aGUKCSAgICAgKiBwbGF0Zm9ybSdzIGRlZmF1bHQgY2hhcmFjdGVyIGVuY29kaW5nLgoJICAgICAqCgkgICAgICogQHBhcmFtICAgICAgaGlieXRlICAgIHRoZSBoaWdoIGJ5dGUgb2YgZWFjaCByZXN1bHRpbmcgVW5pY29kZSBjaGFyYWN0ZXIuCgkgICAgICogQHJldHVybiAgICAgdGhlIGN1cnJlbnQgY29udGVudHMgb2YgdGhlIG91dHB1dCBzdHJlYW0sIGFzIGEgc3RyaW5nLgoJICAgICAqIEBzZWUgICAgICAgIGphdmEuaW8uQnl0ZUFycmF5T3V0cHV0U3RyZWFtI3NpemUoKQoJICAgICAqIEBzZWUgICAgICAgIGphdmEuaW8uQnl0ZUFycmF5T3V0cHV0U3RyZWFtI3RvU3RyaW5nKFN0cmluZykKCSAgICAgKiBAc2VlICAgICAgICBqYXZhLmlvLkJ5dGVBcnJheU91dHB1dFN0cmVhbSN0b1N0cmluZygpCgkgICAgICovCgkgICAgLy8gQERlcHJlY2F0ZWQKCSAgICBCeXRlQXJyYXlPdXRwdXRTdHJlYW0ucHJvdG90eXBlLnRvU3RyaW5nX251bWJlciA9IGZ1bmN0aW9uIChoaWJ5dGUpIHsKCSAgICAgICAgcmV0dXJuIG5ldyBTdHJpbmcodGhpcy5idWYgLyosIGhpYnl0ZSwgMCwgdGhpcy5jb3VudCovKS50b1N0cmluZygpOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQ2xvc2luZyBhIDx0dD5CeXRlQXJyYXlPdXRwdXRTdHJlYW08L3R0PiBoYXMgbm8gZWZmZWN0LiBUaGUgbWV0aG9kcyBpbgoJICAgICAqIHRoaXMgY2xhc3MgY2FuIGJlIGNhbGxlZCBhZnRlciB0aGUgc3RyZWFtIGhhcyBiZWVuIGNsb3NlZCB3aXRob3V0CgkgICAgICogZ2VuZXJhdGluZyBhbiA8dHQ+SU9FeGNlcHRpb248L3R0Pi4KCSAgICAgKiA8cD4KCSAgICAgKgoJICAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24KCSAgICAgKi8KCSAgICBCeXRlQXJyYXlPdXRwdXRTdHJlYW0ucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24gKCkgewoJICAgIH07CgkgICAgcmV0dXJuIEJ5dGVBcnJheU91dHB1dFN0cmVhbTsKCX0oT3V0cHV0U3RyZWFtXzEuZGVmYXVsdCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gQnl0ZUFycmF5T3V0cHV0U3RyZWFtOwoKCX0pOwoKCXZhciBEZWNvZGVkQml0U3RyZWFtUGFyc2VyXzEkMiA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCS8qCgkgKiBDb3B5cmlnaHQgMjAwOSBaWGluZyBhdXRob3JzCgkgKgoJICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSAqCgkgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJICoKCSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJICovCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJLy8gcGFja2FnZSBjb20uZ29vZ2xlLnp4aW5nLnBkZjQxNy5kZWNvZGVyOwoJLy8gaW1wb3J0IGNvbS5nb29nbGUuenhpbmcuRm9ybWF0RXhjZXB0aW9uOwoKCS8vIGltcG9ydCBjb20uZ29vZ2xlLnp4aW5nLmNvbW1vbi5DaGFyYWN0ZXJTZXRFQ0k7CgoJLy8gaW1wb3J0IGNvbS5nb29nbGUuenhpbmcuY29tbW9uLkRlY29kZXJSZXN1bHQ7CgoJLy8gaW1wb3J0IGNvbS5nb29nbGUuenhpbmcucGRmNDE3LlBERjQxN1Jlc3VsdE1ldGFkYXRhOwoKCS8vIGltcG9ydCBqYXZhLmlvLkJ5dGVBcnJheU91dHB1dFN0cmVhbTsKCS8vIGltcG9ydCBqYXZhLm1hdGguQmlnSW50ZWdlcjsKCS8vIGltcG9ydCBqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXQ7CgkvLyBpbXBvcnQgamF2YS5uaW8uY2hhcnNldC5TdGFuZGFyZENoYXJzZXRzOwoJLy8gaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CgoKCgoKCgkvKnByaXZhdGUqLyB2YXIgTW9kZTsKCShmdW5jdGlvbiAoTW9kZSkgewoJICAgIE1vZGVbTW9kZVsiQUxQSEEiXSA9IDBdID0gIkFMUEhBIjsKCSAgICBNb2RlW01vZGVbIkxPV0VSIl0gPSAxXSA9ICJMT1dFUiI7CgkgICAgTW9kZVtNb2RlWyJNSVhFRCJdID0gMl0gPSAiTUlYRUQiOwoJICAgIE1vZGVbTW9kZVsiUFVOQ1QiXSA9IDNdID0gIlBVTkNUIjsKCSAgICBNb2RlW01vZGVbIkFMUEhBX1NISUZUIl0gPSA0XSA9ICJBTFBIQV9TSElGVCI7CgkgICAgTW9kZVtNb2RlWyJQVU5DVF9TSElGVCJdID0gNV0gPSAiUFVOQ1RfU0hJRlQiOwoJfSkoTW9kZSB8fCAoTW9kZSA9IHt9KSk7CgkvKioKCSAqIEluZGlyZWN0bHkgYWNjZXNzIHRoZSBnbG9iYWwgQmlnSW50IGNvbnN0cnVjdG9yLCBpdAoJICogYWxsb3dzIGJyb3dzZXJzIHRoYXQgZG9lc24ndCBzdXBwb3J0IEJpZ0ludCB0byBydW4KCSAqIHRoZSBsaWJyYXJ5IHdpdGhvdXQgYnJlYWtpbmcgZHVlIHRvICJ1bmRlZmluZWQgQmlnSW50IgoJICogZXJyb3JzLgoJICovCglmdW5jdGlvbiBnZXRCaWdJbnRDb25zdHJ1Y3RvcigpIHsKCSAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHsKCSAgICAgICAgcmV0dXJuIHdpbmRvd1snQmlnSW50J10gfHwgbnVsbDsKCSAgICB9CgkgICAgaWYgKHR5cGVvZiBjb21tb25qc0dsb2JhbCAhPT0gJ3VuZGVmaW5lZCcpIHsKCSAgICAgICAgcmV0dXJuIGNvbW1vbmpzR2xvYmFsWydCaWdJbnQnXSB8fCBudWxsOwoJICAgIH0KCSAgICBpZiAodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnKSB7CgkgICAgICAgIHJldHVybiBzZWxmWydCaWdJbnQnXSB8fCBudWxsOwoJICAgIH0KCSAgICB0aHJvdyBuZXcgRXJyb3IoJ0NhblwndCBzZWFyY2ggZ2xvYmFscyBmb3IgQmlnSW50IScpOwoJfQoJLyoqCgkgKiBVc2VkIHRvIHN0b3JlIHRoZSBCaWdJbnQgY29uc3RydWN0b3IuCgkgKi8KCXZhciBCaWdJbnRlZ2VyOwoJLyoqCgkgKiBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgYSBiaWdpbnQgdmFsdWUuIEl0IGFsbG93cyBicm93c2VycwoJICogdGhhdCBkb2Vzbid0IHN1cHBvcnQgQmlnSW50IHRvIHJ1biB0aGUgcmVzdCBvZiB0aGUgbGlicmFyeQoJICogYnkgbm90IGRpcmVjdGx5IGFjY2Vzc2luZyB0aGUgQmlnSW50IGNvbnN0cnVjdG9yLgoJICovCglmdW5jdGlvbiBjcmVhdGVCaWdJbnQobnVtKSB7CgkgICAgaWYgKHR5cGVvZiBCaWdJbnRlZ2VyID09PSAndW5kZWZpbmVkJykgewoJICAgICAgICBCaWdJbnRlZ2VyID0gZ2V0QmlnSW50Q29uc3RydWN0b3IoKTsKCSAgICB9CgkgICAgaWYgKEJpZ0ludGVnZXIgPT09IG51bGwpIHsKCSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdCaWdJbnQgaXMgbm90IHN1cHBvcnRlZCEnKTsKCSAgICB9CgkgICAgcmV0dXJuIEJpZ0ludGVnZXIobnVtKTsKCX0KCWZ1bmN0aW9uIGdldEVYUDkwMCgpIHsKCSAgICAvLyBpbiBKYXZhIC0gYXJyYXkgd2l0aCBsZW5ndGggPSAxNgoJICAgIHZhciBFWFA5MDAgPSBbXTsKCSAgICBFWFA5MDBbMF0gPSBjcmVhdGVCaWdJbnQoMSk7CgkgICAgdmFyIG5pbmVIdW5kcmVkID0gY3JlYXRlQmlnSW50KDkwMCk7CgkgICAgRVhQOTAwWzFdID0gbmluZUh1bmRyZWQ7CgkgICAgLy8gaW4gSmF2YSAtIGFycmF5IHdpdGggbGVuZ3RoID0gMTYKCSAgICBmb3IgKHZhciBpIC8qaW50Ki8gPSAyOyBpIDwgMTY7IGkrKykgewoJICAgICAgICBFWFA5MDBbaV0gPSBFWFA5MDBbaSAtIDFdICogbmluZUh1bmRyZWQ7CgkgICAgfQoJICAgIHJldHVybiBFWFA5MDA7Cgl9CgkvKioKCSAqIDxwPlRoaXMgY2xhc3MgY29udGFpbnMgdGhlIG1ldGhvZHMgZm9yIGRlY29kaW5nIHRoZSBQREY0MTcgY29kZXdvcmRzLjwvcD4KCSAqCgkgKiBAYXV0aG9yIFNJVEEgTGFiIChrZXZpbi5vc3VsbGl2YW5Ac2l0YS5hZXJvKQoJICogQGF1dGhvciBHdWVudGhlciBHcmF1CgkgKi8KCXZhciBEZWNvZGVkQml0U3RyZWFtUGFyc2VyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIGZ1bmN0aW9uIERlY29kZWRCaXRTdHJlYW1QYXJzZXIoKSB7CgkgICAgfQoJICAgIC8vICAgcHJpdmF0ZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyKCkgewoJICAgIC8vIH0KCSAgICAvKioKCSAgICAgKgoJICAgICAqIEBwYXJhbSBjb2Rld29yZHMKCSAgICAgKiBAcGFyYW0gZWNMZXZlbAoJICAgICAqCgkgICAgICogQHRocm93cyBGb3JtYXRFeGNlcHRpb24KCSAgICAgKi8KCSAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLmRlY29kZSA9IGZ1bmN0aW9uIChjb2Rld29yZHMsIGVjTGV2ZWwpIHsKCSAgICAgICAgLy8gcGFzcyBlbmNvZGluZyB0byByZXN1bHQgKHdpbGwgYmUgdXNlZCBmb3IgZGVjb2RlIHN5bWJvbHMgaW4gYnl0ZSBtb2RlKQoJICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1aWxkZXJfMS5kZWZhdWx0KCcnKTsKCSAgICAgICAgLy8gbGV0IGVuY29kaW5nOiBDaGFyc2V0ID0gU3RhbmRhcmRDaGFyc2V0cy5JU09fODg1OV8xOwoJICAgICAgICB2YXIgZW5jb2RpbmcgPSBDaGFyYWN0ZXJTZXRFQ0lfMS5kZWZhdWx0LklTTzg4NTlfMTsKCSAgICAgICAgLyoqCgkgICAgICAgICAqIEBub3RlIHRoZSBuZXh0IGNvbW1hbmQgaXMgc3BlY2lmaWMgZnJvbSB0aGlzIFR5cGVTY3JpcHQgbGlicmFyeQoJICAgICAgICAgKiBiZWNhdXNlIFRTIGNhbid0IHByb3Blcmx5IGNhc3Qgc29tZSB2YWx1ZXMgdG8gY2hhciBhbmQKCSAgICAgICAgICogY29udmVydCBpdCB0byBzdHJpbmcgbGF0ZXIgY29ycmVjdGx5IGR1ZSB0byBlbmNvZGluZwoJICAgICAgICAgKiBkaWZmZXJlbmNlcyBmcm9tIEphdmEgdmVyc2lvbi4gQXMgcmVwb3J0ZWQgaGVyZToKCSAgICAgICAgICogaHR0cHM6Ly9naXRodWIuY29tL3p4aW5nLWpzL2xpYnJhcnkvcHVsbC8yNjQvZmlsZXMjcjM4MjgzMTU5MwoJICAgICAgICAgKi8KCSAgICAgICAgcmVzdWx0LmVuYWJsZURlY29kaW5nKGVuY29kaW5nKTsKCSAgICAgICAgLy8gR2V0IGNvbXBhY3Rpb24gbW9kZQoJICAgICAgICB2YXIgY29kZUluZGV4ID0gMTsKCSAgICAgICAgdmFyIGNvZGUgPSBjb2Rld29yZHNbY29kZUluZGV4KytdOwoJICAgICAgICB2YXIgcmVzdWx0TWV0YWRhdGEgPSBuZXcgUERGNDE3UmVzdWx0TWV0YWRhdGFfMS5kZWZhdWx0KCk7CgkgICAgICAgIHdoaWxlIChjb2RlSW5kZXggPCBjb2Rld29yZHNbMF0pIHsKCSAgICAgICAgICAgIHN3aXRjaCAoY29kZSkgewoJICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5URVhUX0NPTVBBQ1RJT05fTU9ERV9MQVRDSDoKCSAgICAgICAgICAgICAgICAgICAgY29kZUluZGV4ID0gRGVjb2RlZEJpdFN0cmVhbVBhcnNlci50ZXh0Q29tcGFjdGlvbihjb2Rld29yZHMsIGNvZGVJbmRleCwgcmVzdWx0KTsKCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLkJZVEVfQ09NUEFDVElPTl9NT0RFX0xBVENIOgoJICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5CWVRFX0NPTVBBQ1RJT05fTU9ERV9MQVRDSF82OgoJICAgICAgICAgICAgICAgICAgICBjb2RlSW5kZXggPSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLmJ5dGVDb21wYWN0aW9uKGNvZGUsIGNvZGV3b3JkcywgZW5jb2RpbmcsIGNvZGVJbmRleCwgcmVzdWx0KTsKCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLk1PREVfU0hJRlRfVE9fQllURV9DT01QQUNUSU9OX01PREU6CgkgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoLyooY2hhcikqLyBjb2Rld29yZHNbY29kZUluZGV4KytdKTsKCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLk5VTUVSSUNfQ09NUEFDVElPTl9NT0RFX0xBVENIOgoJICAgICAgICAgICAgICAgICAgICBjb2RlSW5kZXggPSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLm51bWVyaWNDb21wYWN0aW9uKGNvZGV3b3JkcywgY29kZUluZGV4LCByZXN1bHQpOwoJICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICBjYXNlIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuRUNJX0NIQVJTRVQ6CgkgICAgICAgICAgICAgICAgICAgIHZhciBjaGFyc2V0RUNJID0gQ2hhcmFjdGVyU2V0RUNJXzEuZGVmYXVsdC5nZXRDaGFyYWN0ZXJTZXRFQ0lCeVZhbHVlKGNvZGV3b3Jkc1tjb2RlSW5kZXgrK10pOwoJICAgICAgICAgICAgICAgICAgICAvLyBlbmNvZGluZyA9IENoYXJzZXQuZm9yTmFtZShjaGFyc2V0RUNJLmdldE5hbWUoKSk7CgkgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5FQ0lfR0VORVJBTF9QVVJQT1NFOgoJICAgICAgICAgICAgICAgICAgICAvLyBDYW4ndCBkbyBhbnl0aGluZyB3aXRoIGdlbmVyaWMgRUNJOyBza2lwIGl0cyAyIGNoYXJhY3RlcnMKCSAgICAgICAgICAgICAgICAgICAgY29kZUluZGV4ICs9IDI7CgkgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5FQ0lfVVNFUl9ERUZJTkVEOgoJICAgICAgICAgICAgICAgICAgICAvLyBDYW4ndCBkbyBhbnl0aGluZyB3aXRoIHVzZXIgRUNJOyBza2lwIGl0cyAxIGNoYXJhY3RlcgoJICAgICAgICAgICAgICAgICAgICBjb2RlSW5kZXgrKzsKCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLkJFR0lOX01BQ1JPX1BERjQxN19DT05UUk9MX0JMT0NLOgoJICAgICAgICAgICAgICAgICAgICBjb2RlSW5kZXggPSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLmRlY29kZU1hY3JvQmxvY2soY29kZXdvcmRzLCBjb2RlSW5kZXgsIHJlc3VsdE1ldGFkYXRhKTsKCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLkJFR0lOX01BQ1JPX1BERjQxN19PUFRJT05BTF9GSUVMRDoKCSAgICAgICAgICAgICAgICBjYXNlIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuTUFDUk9fUERGNDE3X1RFUk1JTkFUT1I6CgkgICAgICAgICAgICAgICAgICAgIC8vIFNob3VsZCBub3Qgc2VlIHRoZXNlIG91dHNpZGUgYSBtYWNybyBibG9jawoJICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICAgICAgICAgIGRlZmF1bHQ6CgkgICAgICAgICAgICAgICAgICAgIC8vIERlZmF1bHQgdG8gdGV4dCBjb21wYWN0aW9uLiBEdXJpbmcgdGVzdGluZyBudW1lcm91cyBiYXJjb2RlcwoJICAgICAgICAgICAgICAgICAgICAvLyBhcHBlYXJlZCB0byBiZSBtaXNzaW5nIHRoZSBzdGFydGluZyBtb2RlLiBJbiB0aGVzZSBjYXNlcyBkZWZhdWx0aW5nCgkgICAgICAgICAgICAgICAgICAgIC8vIHRvIHRleHQgY29tcGFjdGlvbiBzZWVtcyB0byB3b3JrLgoJICAgICAgICAgICAgICAgICAgICBjb2RlSW5kZXgtLTsKCSAgICAgICAgICAgICAgICAgICAgY29kZUluZGV4ID0gRGVjb2RlZEJpdFN0cmVhbVBhcnNlci50ZXh0Q29tcGFjdGlvbihjb2Rld29yZHMsIGNvZGVJbmRleCwgcmVzdWx0KTsKCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBpZiAoY29kZUluZGV4IDwgY29kZXdvcmRzLmxlbmd0aCkgewoJICAgICAgICAgICAgICAgIGNvZGUgPSBjb2Rld29yZHNbY29kZUluZGV4KytdOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgdGhyb3cgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdC5nZXRGb3JtYXRJbnN0YW5jZSgpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoKCkgPT09IDApIHsKCSAgICAgICAgICAgIHRocm93IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQuZ2V0Rm9ybWF0SW5zdGFuY2UoKTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgZGVjb2RlclJlc3VsdCA9IG5ldyBEZWNvZGVyUmVzdWx0XzEuZGVmYXVsdChudWxsLCByZXN1bHQudG9TdHJpbmcoKSwgbnVsbCwgZWNMZXZlbCk7CgkgICAgICAgIGRlY29kZXJSZXN1bHQuc2V0T3RoZXIocmVzdWx0TWV0YWRhdGEpOwoJICAgICAgICByZXR1cm4gZGVjb2RlclJlc3VsdDsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqCgkgICAgICogQHBhcmFtIGludAoJICAgICAqIEBwYXJhbSBwYXJhbTEKCSAgICAgKiBAcGFyYW0gY29kZXdvcmRzCgkgICAgICogQHBhcmFtIGludAoJICAgICAqIEBwYXJhbSBjb2RlSW5kZXgKCSAgICAgKiBAcGFyYW0gUERGNDE3UmVzdWx0TWV0YWRhdGEKCSAgICAgKiBAcGFyYW0gcmVzdWx0TWV0YWRhdGEKCSAgICAgKgoJICAgICAqIEB0aHJvd3MgRm9ybWF0RXhjZXB0aW9uCgkgICAgICovCgkgICAgLy8gQFN1cHByZXNzV2FybmluZ3MoImRlcHJlY2F0aW9uIikKCSAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLmRlY29kZU1hY3JvQmxvY2sgPSBmdW5jdGlvbiAoY29kZXdvcmRzLCBjb2RlSW5kZXgsIHJlc3VsdE1ldGFkYXRhKSB7CgkgICAgICAgIGlmIChjb2RlSW5kZXggKyBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLk5VTUJFUl9PRl9TRVFVRU5DRV9DT0RFV09SRFMgPiBjb2Rld29yZHNbMF0pIHsKCSAgICAgICAgICAgIC8vIHdlIG11c3QgaGF2ZSBhdCBsZWFzdCB0d28gYnl0ZXMgbGVmdCBmb3IgdGhlIHNlZ21lbnQgaW5kZXgKCSAgICAgICAgICAgIHRocm93IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQuZ2V0Rm9ybWF0SW5zdGFuY2UoKTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgc2VnbWVudEluZGV4QXJyYXkgPSBuZXcgSW50MzJBcnJheShEZWNvZGVkQml0U3RyZWFtUGFyc2VyLk5VTUJFUl9PRl9TRVFVRU5DRV9DT0RFV09SRFMpOwoJICAgICAgICBmb3IgKHZhciBpIC8qaW50Ki8gPSAwOyBpIDwgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5OVU1CRVJfT0ZfU0VRVUVOQ0VfQ09ERVdPUkRTOyBpKyssIGNvZGVJbmRleCsrKSB7CgkgICAgICAgICAgICBzZWdtZW50SW5kZXhBcnJheVtpXSA9IGNvZGV3b3Jkc1tjb2RlSW5kZXhdOwoJICAgICAgICB9CgkgICAgICAgIHJlc3VsdE1ldGFkYXRhLnNldFNlZ21lbnRJbmRleChJbnRlZ2VyXzEuZGVmYXVsdC5wYXJzZUludChEZWNvZGVkQml0U3RyZWFtUGFyc2VyLmRlY29kZUJhc2U5MDB0b0Jhc2UxMChzZWdtZW50SW5kZXhBcnJheSwgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5OVU1CRVJfT0ZfU0VRVUVOQ0VfQ09ERVdPUkRTKSkpOwoJICAgICAgICB2YXIgZmlsZUlkID0gbmV3IFN0cmluZ0J1aWxkZXJfMS5kZWZhdWx0KCk7CgkgICAgICAgIGNvZGVJbmRleCA9IERlY29kZWRCaXRTdHJlYW1QYXJzZXIudGV4dENvbXBhY3Rpb24oY29kZXdvcmRzLCBjb2RlSW5kZXgsIGZpbGVJZCk7CgkgICAgICAgIHJlc3VsdE1ldGFkYXRhLnNldEZpbGVJZChmaWxlSWQudG9TdHJpbmcoKSk7CgkgICAgICAgIHZhciBvcHRpb25hbEZpZWxkc1N0YXJ0ID0gLTE7CgkgICAgICAgIGlmIChjb2Rld29yZHNbY29kZUluZGV4XSA9PT0gRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5CRUdJTl9NQUNST19QREY0MTdfT1BUSU9OQUxfRklFTEQpIHsKCSAgICAgICAgICAgIG9wdGlvbmFsRmllbGRzU3RhcnQgPSBjb2RlSW5kZXggKyAxOwoJICAgICAgICB9CgkgICAgICAgIHdoaWxlIChjb2RlSW5kZXggPCBjb2Rld29yZHNbMF0pIHsKCSAgICAgICAgICAgIHN3aXRjaCAoY29kZXdvcmRzW2NvZGVJbmRleF0pIHsKCSAgICAgICAgICAgICAgICBjYXNlIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuQkVHSU5fTUFDUk9fUERGNDE3X09QVElPTkFMX0ZJRUxEOgoJICAgICAgICAgICAgICAgICAgICBjb2RlSW5kZXgrKzsKCSAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChjb2Rld29yZHNbY29kZUluZGV4XSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLk1BQ1JPX1BERjQxN19PUFRJT05BTF9GSUVMRF9GSUxFX05BTUU6CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZpbGVOYW1lID0gbmV3IFN0cmluZ0J1aWxkZXJfMS5kZWZhdWx0KCk7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZUluZGV4ID0gRGVjb2RlZEJpdFN0cmVhbVBhcnNlci50ZXh0Q29tcGFjdGlvbihjb2Rld29yZHMsIGNvZGVJbmRleCArIDEsIGZpbGVOYW1lKTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRNZXRhZGF0YS5zZXRGaWxlTmFtZShmaWxlTmFtZS50b1N0cmluZygpKTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5NQUNST19QREY0MTdfT1BUSU9OQUxfRklFTERfU0VOREVSOgoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzZW5kZXIgPSBuZXcgU3RyaW5nQnVpbGRlcl8xLmRlZmF1bHQoKTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlSW5kZXggPSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLnRleHRDb21wYWN0aW9uKGNvZGV3b3JkcywgY29kZUluZGV4ICsgMSwgc2VuZGVyKTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRNZXRhZGF0YS5zZXRTZW5kZXIoc2VuZGVyLnRvU3RyaW5nKCkpOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLk1BQ1JPX1BERjQxN19PUFRJT05BTF9GSUVMRF9BRERSRVNTRUU6CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFkZHJlc3NlZSA9IG5ldyBTdHJpbmdCdWlsZGVyXzEuZGVmYXVsdCgpOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVJbmRleCA9IERlY29kZWRCaXRTdHJlYW1QYXJzZXIudGV4dENvbXBhY3Rpb24oY29kZXdvcmRzLCBjb2RlSW5kZXggKyAxLCBhZGRyZXNzZWUpOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdE1ldGFkYXRhLnNldEFkZHJlc3NlZShhZGRyZXNzZWUudG9TdHJpbmcoKSk7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuTUFDUk9fUERGNDE3X09QVElPTkFMX0ZJRUxEX1NFR01FTlRfQ09VTlQ6CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNlZ21lbnRDb3VudCA9IG5ldyBTdHJpbmdCdWlsZGVyXzEuZGVmYXVsdCgpOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVJbmRleCA9IERlY29kZWRCaXRTdHJlYW1QYXJzZXIubnVtZXJpY0NvbXBhY3Rpb24oY29kZXdvcmRzLCBjb2RlSW5kZXggKyAxLCBzZWdtZW50Q291bnQpOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdE1ldGFkYXRhLnNldFNlZ21lbnRDb3VudChJbnRlZ2VyXzEuZGVmYXVsdC5wYXJzZUludChzZWdtZW50Q291bnQudG9TdHJpbmcoKSkpOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLk1BQ1JPX1BERjQxN19PUFRJT05BTF9GSUVMRF9USU1FX1NUQU1QOgoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0aW1lc3RhbXAgPSBuZXcgU3RyaW5nQnVpbGRlcl8xLmRlZmF1bHQoKTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlSW5kZXggPSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLm51bWVyaWNDb21wYWN0aW9uKGNvZGV3b3JkcywgY29kZUluZGV4ICsgMSwgdGltZXN0YW1wKTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRNZXRhZGF0YS5zZXRUaW1lc3RhbXAoTG9uZ18xLmRlZmF1bHQucGFyc2VMb25nKHRpbWVzdGFtcC50b1N0cmluZygpKSk7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuTUFDUk9fUERGNDE3X09QVElPTkFMX0ZJRUxEX0NIRUNLU1VNOgoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjaGVja3N1bSA9IG5ldyBTdHJpbmdCdWlsZGVyXzEuZGVmYXVsdCgpOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVJbmRleCA9IERlY29kZWRCaXRTdHJlYW1QYXJzZXIubnVtZXJpY0NvbXBhY3Rpb24oY29kZXdvcmRzLCBjb2RlSW5kZXggKyAxLCBjaGVja3N1bSk7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TWV0YWRhdGEuc2V0Q2hlY2tzdW0oSW50ZWdlcl8xLmRlZmF1bHQucGFyc2VJbnQoY2hlY2tzdW0udG9TdHJpbmcoKSkpOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLk1BQ1JPX1BERjQxN19PUFRJT05BTF9GSUVMRF9GSUxFX1NJWkU6CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZpbGVTaXplID0gbmV3IFN0cmluZ0J1aWxkZXJfMS5kZWZhdWx0KCk7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZUluZGV4ID0gRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5udW1lcmljQ29tcGFjdGlvbihjb2Rld29yZHMsIGNvZGVJbmRleCArIDEsIGZpbGVTaXplKTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRNZXRhZGF0YS5zZXRGaWxlU2l6ZShMb25nXzEuZGVmYXVsdC5wYXJzZUxvbmcoZmlsZVNpemUudG9TdHJpbmcoKSkpOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0LmdldEZvcm1hdEluc3RhbmNlKCk7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLk1BQ1JPX1BERjQxN19URVJNSU5BVE9SOgoJICAgICAgICAgICAgICAgICAgICBjb2RlSW5kZXgrKzsKCSAgICAgICAgICAgICAgICAgICAgcmVzdWx0TWV0YWRhdGEuc2V0TGFzdFNlZ21lbnQodHJ1ZSk7CgkgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgIGRlZmF1bHQ6CgkgICAgICAgICAgICAgICAgICAgIHRocm93IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQuZ2V0Rm9ybWF0SW5zdGFuY2UoKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICAvLyBjb3B5IG9wdGlvbmFsIGZpZWxkcyB0byBhZGRpdGlvbmFsIG9wdGlvbnMKCSAgICAgICAgaWYgKG9wdGlvbmFsRmllbGRzU3RhcnQgIT09IC0xKSB7CgkgICAgICAgICAgICB2YXIgb3B0aW9uYWxGaWVsZHNMZW5ndGggPSBjb2RlSW5kZXggLSBvcHRpb25hbEZpZWxkc1N0YXJ0OwoJICAgICAgICAgICAgaWYgKHJlc3VsdE1ldGFkYXRhLmlzTGFzdFNlZ21lbnQoKSkgewoJICAgICAgICAgICAgICAgIC8vIGRvIG5vdCBpbmNsdWRlIHRlcm1pbmF0b3IKCSAgICAgICAgICAgICAgICBvcHRpb25hbEZpZWxkc0xlbmd0aC0tOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgcmVzdWx0TWV0YWRhdGEuc2V0T3B0aW9uYWxEYXRhKEFycmF5c18xLmRlZmF1bHQuY29weU9mUmFuZ2UoY29kZXdvcmRzLCBvcHRpb25hbEZpZWxkc1N0YXJ0LCBvcHRpb25hbEZpZWxkc1N0YXJ0ICsgb3B0aW9uYWxGaWVsZHNMZW5ndGgpKTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gY29kZUluZGV4OwoJICAgIH07CgkgICAgLyoqCgkgICAgICogVGV4dCBDb21wYWN0aW9uIG1vZGUgKHNlZSA1LjQuMS41KSBwZXJtaXRzIGFsbCBwcmludGFibGUgQVNDSUkgY2hhcmFjdGVycyB0byBiZQoJICAgICAqIGVuY29kZWQsIGkuZS4gdmFsdWVzIDMyIC0gMTI2IGluY2x1c2l2ZSBpbiBhY2NvcmRhbmNlIHdpdGggSVNPL0lFQyA2NDYgKElSViksIGFzCgkgICAgICogd2VsbCBhcyBzZWxlY3RlZCBjb250cm9sIGNoYXJhY3RlcnMuCgkgICAgICoKCSAgICAgKiBAcGFyYW0gY29kZXdvcmRzIFRoZSBhcnJheSBvZiBjb2Rld29yZHMgKGRhdGEgKyBlcnJvcikKCSAgICAgKiBAcGFyYW0gY29kZUluZGV4IFRoZSBjdXJyZW50IGluZGV4IGludG8gdGhlIGNvZGV3b3JkIGFycmF5LgoJICAgICAqIEBwYXJhbSByZXN1bHQgICAgVGhlIGRlY29kZWQgZGF0YSBpcyBhcHBlbmRlZCB0byB0aGUgcmVzdWx0LgoJICAgICAqIEByZXR1cm4gVGhlIG5leHQgaW5kZXggaW50byB0aGUgY29kZXdvcmQgYXJyYXkuCgkgICAgICovCgkgICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci50ZXh0Q29tcGFjdGlvbiA9IGZ1bmN0aW9uIChjb2Rld29yZHMsIGNvZGVJbmRleCwgcmVzdWx0KSB7CgkgICAgICAgIC8vIDIgY2hhcmFjdGVyIHBlciBjb2Rld29yZAoJICAgICAgICB2YXIgdGV4dENvbXBhY3Rpb25EYXRhID0gbmV3IEludDMyQXJyYXkoKGNvZGV3b3Jkc1swXSAtIGNvZGVJbmRleCkgKiAyKTsKCSAgICAgICAgLy8gVXNlZCB0byBob2xkIHRoZSBieXRlIGNvbXBhY3Rpb24gdmFsdWUgaWYgdGhlcmUgaXMgYSBtb2RlIHNoaWZ0CgkgICAgICAgIHZhciBieXRlQ29tcGFjdGlvbkRhdGEgPSBuZXcgSW50MzJBcnJheSgoY29kZXdvcmRzWzBdIC0gY29kZUluZGV4KSAqIDIpOwoJICAgICAgICB2YXIgaW5kZXggPSAwOwoJICAgICAgICB2YXIgZW5kID0gZmFsc2U7CgkgICAgICAgIHdoaWxlICgoY29kZUluZGV4IDwgY29kZXdvcmRzWzBdKSAmJiAhZW5kKSB7CgkgICAgICAgICAgICB2YXIgY29kZSA9IGNvZGV3b3Jkc1tjb2RlSW5kZXgrK107CgkgICAgICAgICAgICBpZiAoY29kZSA8IERlY29kZWRCaXRTdHJlYW1QYXJzZXIuVEVYVF9DT01QQUNUSU9OX01PREVfTEFUQ0gpIHsKCSAgICAgICAgICAgICAgICB0ZXh0Q29tcGFjdGlvbkRhdGFbaW5kZXhdID0gY29kZSAvIDMwOwoJICAgICAgICAgICAgICAgIHRleHRDb21wYWN0aW9uRGF0YVtpbmRleCArIDFdID0gY29kZSAlIDMwOwoJICAgICAgICAgICAgICAgIGluZGV4ICs9IDI7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvZGUpIHsKCSAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLlRFWFRfQ09NUEFDVElPTl9NT0RFX0xBVENIOgoJICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVpbml0aWFsaXplIHRleHQgY29tcGFjdGlvbiBtb2RlIHRvIGFscGhhIHN1YiBtb2RlCgkgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0Q29tcGFjdGlvbkRhdGFbaW5kZXgrK10gPSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLlRFWFRfQ09NUEFDVElPTl9NT0RFX0xBVENIOwoJICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5CWVRFX0NPTVBBQ1RJT05fTU9ERV9MQVRDSDoKCSAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLkJZVEVfQ09NUEFDVElPTl9NT0RFX0xBVENIXzY6CgkgICAgICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5OVU1FUklDX0NPTVBBQ1RJT05fTU9ERV9MQVRDSDoKCSAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLkJFR0lOX01BQ1JPX1BERjQxN19DT05UUk9MX0JMT0NLOgoJICAgICAgICAgICAgICAgICAgICBjYXNlIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuQkVHSU5fTUFDUk9fUERGNDE3X09QVElPTkFMX0ZJRUxEOgoJICAgICAgICAgICAgICAgICAgICBjYXNlIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuTUFDUk9fUERGNDE3X1RFUk1JTkFUT1I6CgkgICAgICAgICAgICAgICAgICAgICAgICBjb2RlSW5kZXgtLTsKCSAgICAgICAgICAgICAgICAgICAgICAgIGVuZCA9IHRydWU7CgkgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLk1PREVfU0hJRlRfVE9fQllURV9DT01QQUNUSU9OX01PREU6CgkgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgTW9kZSBTaGlmdCBjb2Rld29yZCA5MTMgc2hhbGwgY2F1c2UgYSB0ZW1wb3JhcnkKCSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN3aXRjaCBmcm9tIFRleHQgQ29tcGFjdGlvbiBtb2RlIHRvIEJ5dGUgQ29tcGFjdGlvbiBtb2RlLgoJICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBzd2l0Y2ggc2hhbGwgYmUgaW4gZWZmZWN0IGZvciBvbmx5IHRoZSBuZXh0IGNvZGV3b3JkLAoJICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWZ0ZXIgd2hpY2ggdGhlIG1vZGUgc2hhbGwgcmV2ZXJ0IHRvIHRoZSBwcmV2YWlsaW5nIHN1Yi1tb2RlCgkgICAgICAgICAgICAgICAgICAgICAgICAvLyBvZiB0aGUgVGV4dCBDb21wYWN0aW9uIG1vZGUuIENvZGV3b3JkIDkxMyBpcyBvbmx5IGF2YWlsYWJsZQoJICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW4gVGV4dCBDb21wYWN0aW9uIG1vZGU7IGl0cyB1c2UgaXMgZGVzY3JpYmVkIGluIDUuNC4yLjQuCgkgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0Q29tcGFjdGlvbkRhdGFbaW5kZXhdID0gRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5NT0RFX1NISUZUX1RPX0JZVEVfQ09NUEFDVElPTl9NT0RFOwoJICAgICAgICAgICAgICAgICAgICAgICAgY29kZSA9IGNvZGV3b3Jkc1tjb2RlSW5kZXgrK107CgkgICAgICAgICAgICAgICAgICAgICAgICBieXRlQ29tcGFjdGlvbkRhdGFbaW5kZXhdID0gY29kZTsKCSAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4Kys7CgkgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5kZWNvZGVUZXh0Q29tcGFjdGlvbih0ZXh0Q29tcGFjdGlvbkRhdGEsIGJ5dGVDb21wYWN0aW9uRGF0YSwgaW5kZXgsIHJlc3VsdCk7CgkgICAgICAgIHJldHVybiBjb2RlSW5kZXg7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBUaGUgVGV4dCBDb21wYWN0aW9uIG1vZGUgaW5jbHVkZXMgYWxsIHRoZSBwcmludGFibGUgQVNDSUkgY2hhcmFjdGVycwoJICAgICAqIChpLmUuIHZhbHVlcyBmcm9tIDMyIHRvIDEyNikgYW5kIHRocmVlIEFTQ0lJIGNvbnRyb2wgY2hhcmFjdGVyczogSFQgb3IgdGFiCgkgICAgICogKDk6IGUpLCBMRiBvciBsaW5lIGZlZWQgKDEwOiBlKSwgYW5kIENSIG9yIGNhcnJpYWdlCgkgICAgICogcmV0dXJuICgxMzogZSkuIFRoZSBUZXh0IENvbXBhY3Rpb24gbW9kZSBhbHNvIGluY2x1ZGVzIHZhcmlvdXMgbGF0Y2gKCSAgICAgKiBhbmQgc2hpZnQgY2hhcmFjdGVycyB3aGljaCBhcmUgdXNlZCBleGNsdXNpdmVseSB3aXRoaW4gdGhlIG1vZGUuIFRoZSBUZXh0CgkgICAgICogQ29tcGFjdGlvbiBtb2RlIGVuY29kZXMgdXAgdG8gMiBjaGFyYWN0ZXJzIHBlciBjb2Rld29yZC4gVGhlIGNvbXBhY3Rpb24gcnVsZXMKCSAgICAgKiBmb3IgY29udmVydGluZyBkYXRhIGludG8gUERGNDE3IGNvZGV3b3JkcyBhcmUgZGVmaW5lZCBpbiA1LjQuMi4yLiBUaGUgc3ViLW1vZGUKCSAgICAgKiBzd2l0Y2hlcyBhcmUgZGVmaW5lZCBpbiA1LjQuMi4zLgoJICAgICAqCgkgICAgICogQHBhcmFtIHRleHRDb21wYWN0aW9uRGF0YSBUaGUgdGV4dCBjb21wYWN0aW9uIGRhdGEuCgkgICAgICogQHBhcmFtIGJ5dGVDb21wYWN0aW9uRGF0YSBUaGUgYnl0ZSBjb21wYWN0aW9uIGRhdGEgaWYgdGhlcmUKCSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcyBhIG1vZGUgc2hpZnQuCgkgICAgICogQHBhcmFtIGxlbmd0aCAgICAgICAgICAgICBUaGUgc2l6ZSBvZiB0aGUgdGV4dCBjb21wYWN0aW9uIGFuZCBieXRlIGNvbXBhY3Rpb24gZGF0YS4KCSAgICAgKiBAcGFyYW0gcmVzdWx0ICAgICAgICAgICAgIFRoZSBkZWNvZGVkIGRhdGEgaXMgYXBwZW5kZWQgdG8gdGhlIHJlc3VsdC4KCSAgICAgKi8KCSAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLmRlY29kZVRleHRDb21wYWN0aW9uID0gZnVuY3Rpb24gKHRleHRDb21wYWN0aW9uRGF0YSwgYnl0ZUNvbXBhY3Rpb25EYXRhLCBsZW5ndGgsIHJlc3VsdCkgewoJICAgICAgICAvLyBCZWdpbm5pbmcgZnJvbSBhbiBpbml0aWFsIHN0YXRlIG9mIHRoZSBBbHBoYSBzdWItbW9kZQoJICAgICAgICAvLyBUaGUgZGVmYXVsdCBjb21wYWN0aW9uIG1vZGUgZm9yIFBERjQxNyBpbiBlZmZlY3QgYXQgdGhlIHN0YXJ0IG9mIGVhY2ggc3ltYm9sIHNoYWxsIGFsd2F5cyBiZSBUZXh0CgkgICAgICAgIC8vIENvbXBhY3Rpb24gbW9kZSBBbHBoYSBzdWItbW9kZSAoYWxwaGFiZXRpYzogdXBwZXJjYXNlKS4gQSBsYXRjaCBjb2Rld29yZCBmcm9tIGFub3RoZXIgbW9kZSB0byB0aGUgVGV4dAoJICAgICAgICAvLyBDb21wYWN0aW9uIG1vZGUgc2hhbGwgYWx3YXlzIHN3aXRjaCB0byB0aGUgVGV4dCBDb21wYWN0aW9uIEFscGhhIHN1Yi1tb2RlLgoJICAgICAgICB2YXIgc3ViTW9kZSA9IE1vZGUuQUxQSEE7CgkgICAgICAgIHZhciBwcmlvclRvU2hpZnRNb2RlID0gTW9kZS5BTFBIQTsKCSAgICAgICAgdmFyIGkgPSAwOwoJICAgICAgICB3aGlsZSAoaSA8IGxlbmd0aCkgewoJICAgICAgICAgICAgdmFyIHN1Yk1vZGVDaCA9IHRleHRDb21wYWN0aW9uRGF0YVtpXTsKCSAgICAgICAgICAgIHZhciBjaCA9IC8qY2hhciovICcnOwoJICAgICAgICAgICAgc3dpdGNoIChzdWJNb2RlKSB7CgkgICAgICAgICAgICAgICAgY2FzZSBNb2RlLkFMUEhBOgoJICAgICAgICAgICAgICAgICAgICAvLyBBbHBoYSAoYWxwaGFiZXRpYzogdXBwZXJjYXNlKQoJICAgICAgICAgICAgICAgICAgICBpZiAoc3ViTW9kZUNoIDwgMjYpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVwcGVyIGNhc2UgQWxwaGEgQ2hhcmFjdGVyCgkgICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3RlOiA2NSA9ICdBJyBBU0NJSSAtPiB0aGVyZSBpcyBieXRlIGNvZGUgb2Ygc3ltYm9sCgkgICAgICAgICAgICAgICAgICAgICAgICBjaCA9IC8qKGNoYXIpKCdBJyArIHN1Yk1vZGVDaCkgKi8gU3RyaW5nLmZyb21DaGFyQ29kZSg2NSArIHN1Yk1vZGVDaCk7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHN1Yk1vZGVDaCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjY6CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoID0gJyAnOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuTEw6CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Yk1vZGUgPSBNb2RlLkxPV0VSOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuTUw6CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Yk1vZGUgPSBNb2RlLk1JWEVEOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuUFM6CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNoaWZ0IHRvIHB1bmN0dWF0aW9uCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW9yVG9TaGlmdE1vZGUgPSBzdWJNb2RlOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJNb2RlID0gTW9kZS5QVU5DVF9TSElGVDsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLk1PREVfU0hJRlRfVE9fQllURV9DT01QQUNUSU9OX01PREU6CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoLyooY2hhcikqLyBieXRlQ29tcGFjdGlvbkRhdGFbaV0pOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuVEVYVF9DT01QQUNUSU9OX01PREVfTEFUQ0g6CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Yk1vZGUgPSBNb2RlLkFMUEhBOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICBjYXNlIE1vZGUuTE9XRVI6CgkgICAgICAgICAgICAgICAgICAgIC8vIExvd2VyIChhbHBoYWJldGljOiBsb3dlcmNhc2UpCgkgICAgICAgICAgICAgICAgICAgIGlmIChzdWJNb2RlQ2ggPCAyNikgewoJICAgICAgICAgICAgICAgICAgICAgICAgY2ggPSAvKihjaGFyKSgnYScgKyBzdWJNb2RlQ2gpKi8gU3RyaW5nLmZyb21DaGFyQ29kZSg5NyArIHN1Yk1vZGVDaCk7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHN1Yk1vZGVDaCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjY6CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoID0gJyAnOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuQVM6CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNoaWZ0IHRvIGFscGhhCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW9yVG9TaGlmdE1vZGUgPSBzdWJNb2RlOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJNb2RlID0gTW9kZS5BTFBIQV9TSElGVDsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLk1MOgoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJNb2RlID0gTW9kZS5NSVhFRDsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLlBTOgoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTaGlmdCB0byBwdW5jdHVhdGlvbgoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmlvclRvU2hpZnRNb2RlID0gc3ViTW9kZTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViTW9kZSA9IE1vZGUuUFVOQ1RfU0hJRlQ7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5NT0RFX1NISUZUX1RPX0JZVEVfQ09NUEFDVElPTl9NT0RFOgoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUT0RPIERvZXMgdGhpcyBuZWVkIHRvIHVzZSB0aGUgY3VycmVudCBjaGFyYWN0ZXIgZW5jb2Rpbmc/IFNlZSBvdGhlciBvY2N1cnJlbmNlcyBiZWxvdwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKC8qKGNoYXIpKi8gYnl0ZUNvbXBhY3Rpb25EYXRhW2ldKTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLlRFWFRfQ09NUEFDVElPTl9NT0RFX0xBVENIOgoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJNb2RlID0gTW9kZS5BTFBIQTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgY2FzZSBNb2RlLk1JWEVEOgoJICAgICAgICAgICAgICAgICAgICAvLyBNaXhlZCAocHVuY3R1YXRpb246IGUpCgkgICAgICAgICAgICAgICAgICAgIGlmIChzdWJNb2RlQ2ggPCBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLlBMKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBjaCA9IERlY29kZWRCaXRTdHJlYW1QYXJzZXIuTUlYRURfQ0hBUlNbc3ViTW9kZUNoXTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoc3ViTW9kZUNoKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLlBMOgoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJNb2RlID0gTW9kZS5QVU5DVDsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyNjoKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2ggPSAnICc7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5MTDoKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViTW9kZSA9IE1vZGUuTE9XRVI7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5BTDoKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViTW9kZSA9IE1vZGUuQUxQSEE7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5QUzoKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2hpZnQgdG8gcHVuY3R1YXRpb24KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpb3JUb1NoaWZ0TW9kZSA9IHN1Yk1vZGU7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Yk1vZGUgPSBNb2RlLlBVTkNUX1NISUZUOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuTU9ERV9TSElGVF9UT19CWVRFX0NPTVBBQ1RJT05fTU9ERToKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgvKihjaGFyKSovIGJ5dGVDb21wYWN0aW9uRGF0YVtpXSk7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5URVhUX0NPTVBBQ1RJT05fTU9ERV9MQVRDSDoKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViTW9kZSA9IE1vZGUuQUxQSEE7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgIGNhc2UgTW9kZS5QVU5DVDoKCSAgICAgICAgICAgICAgICAgICAgLy8gUHVuY3R1YXRpb24KCSAgICAgICAgICAgICAgICAgICAgaWYgKHN1Yk1vZGVDaCA8IERlY29kZWRCaXRTdHJlYW1QYXJzZXIuUEFMKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBjaCA9IERlY29kZWRCaXRTdHJlYW1QYXJzZXIuUFVOQ1RfQ0hBUlNbc3ViTW9kZUNoXTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoc3ViTW9kZUNoKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLlBBTDoKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViTW9kZSA9IE1vZGUuQUxQSEE7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5NT0RFX1NISUZUX1RPX0JZVEVfQ09NUEFDVElPTl9NT0RFOgoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKC8qKGNoYXIpKi8gYnl0ZUNvbXBhY3Rpb25EYXRhW2ldKTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLlRFWFRfQ09NUEFDVElPTl9NT0RFX0xBVENIOgoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJNb2RlID0gTW9kZS5BTFBIQTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgY2FzZSBNb2RlLkFMUEhBX1NISUZUOgoJICAgICAgICAgICAgICAgICAgICAvLyBSZXN0b3JlIHN1Yi1tb2RlCgkgICAgICAgICAgICAgICAgICAgIHN1Yk1vZGUgPSBwcmlvclRvU2hpZnRNb2RlOwoJICAgICAgICAgICAgICAgICAgICBpZiAoc3ViTW9kZUNoIDwgMjYpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIGNoID0gLyooY2hhcikoJ0EnICsgc3ViTW9kZUNoKSovIFN0cmluZy5mcm9tQ2hhckNvZGUoNjUgKyBzdWJNb2RlQ2gpOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChzdWJNb2RlQ2gpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI2OgoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaCA9ICcgJzsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLlRFWFRfQ09NUEFDVElPTl9NT0RFX0xBVENIOgoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJNb2RlID0gTW9kZS5BTFBIQTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgY2FzZSBNb2RlLlBVTkNUX1NISUZUOgoJICAgICAgICAgICAgICAgICAgICAvLyBSZXN0b3JlIHN1Yi1tb2RlCgkgICAgICAgICAgICAgICAgICAgIHN1Yk1vZGUgPSBwcmlvclRvU2hpZnRNb2RlOwoJICAgICAgICAgICAgICAgICAgICBpZiAoc3ViTW9kZUNoIDwgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5QQUwpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIGNoID0gRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5QVU5DVF9DSEFSU1tzdWJNb2RlQ2hdOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChzdWJNb2RlQ2gpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuUEFMOgoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJNb2RlID0gTW9kZS5BTFBIQTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLk1PREVfU0hJRlRfVE9fQllURV9DT01QQUNUSU9OX01PREU6CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBTIGJlZm9yZSBTaGlmdC10by1CeXRlIGlzIHVzZWQgYXMgYSBwYWRkaW5nIGNoYXJhY3RlciwKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2VlIDUuNC4yLjQgb2YgdGhlIHNwZWNpZmljYXRpb24KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgvKihjaGFyKSovIGJ5dGVDb21wYWN0aW9uRGF0YVtpXSk7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5URVhUX0NPTVBBQ1RJT05fTU9ERV9MQVRDSDoKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViTW9kZSA9IE1vZGUuQUxQSEE7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgLy8gaWYgKGNoICE9PSAwKSB7CgkgICAgICAgICAgICBpZiAoY2ggIT09ICcnKSB7CgkgICAgICAgICAgICAgICAgLy8gQXBwZW5kIGRlY29kZWQgY2hhcmFjdGVyIHRvIHJlc3VsdAoJICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY2gpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgaSsrOwoJICAgICAgICB9CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBCeXRlIENvbXBhY3Rpb24gbW9kZSAoc2VlIDUuNC4zKSBwZXJtaXRzIGFsbCAyNTYgcG9zc2libGUgOC1iaXQgYnl0ZSB2YWx1ZXMgdG8gYmUgZW5jb2RlZC4KCSAgICAgKiBUaGlzIGluY2x1ZGVzIGFsbCBBU0NJSSBjaGFyYWN0ZXJzIHZhbHVlIDAgdG8gMTI3IGluY2x1c2l2ZSBhbmQgcHJvdmlkZXMgZm9yIGludGVybmF0aW9uYWwKCSAgICAgKiBjaGFyYWN0ZXIgc2V0IHN1cHBvcnQuCgkgICAgICoKCSAgICAgKiBAcGFyYW0gbW9kZSAgICAgIFRoZSBieXRlIGNvbXBhY3Rpb24gbW9kZSBpLmUuIDkwMSBvciA5MjQKCSAgICAgKiBAcGFyYW0gY29kZXdvcmRzIFRoZSBhcnJheSBvZiBjb2Rld29yZHMgKGRhdGEgKyBlcnJvcikKCSAgICAgKiBAcGFyYW0gZW5jb2RpbmcgIEN1cnJlbnRseSBhY3RpdmUgY2hhcmFjdGVyIGVuY29kaW5nCgkgICAgICogQHBhcmFtIGNvZGVJbmRleCBUaGUgY3VycmVudCBpbmRleCBpbnRvIHRoZSBjb2Rld29yZCBhcnJheS4KCSAgICAgKiBAcGFyYW0gcmVzdWx0ICAgIFRoZSBkZWNvZGVkIGRhdGEgaXMgYXBwZW5kZWQgdG8gdGhlIHJlc3VsdC4KCSAgICAgKiBAcmV0dXJuIFRoZSBuZXh0IGluZGV4IGludG8gdGhlIGNvZGV3b3JkIGFycmF5LgoJICAgICAqLwoJICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuYnl0ZUNvbXBhY3Rpb24gPSBmdW5jdGlvbiAobW9kZSwgY29kZXdvcmRzLCBlbmNvZGluZywgY29kZUluZGV4LCByZXN1bHQpIHsKCSAgICAgICAgdmFyIGRlY29kZWRCeXRlcyA9IG5ldyBCeXRlQXJyYXlPdXRwdXRTdHJlYW1fMS5kZWZhdWx0KCk7CgkgICAgICAgIHZhciBjb3VudCA9IDA7CgkgICAgICAgIHZhciB2YWx1ZSA9IC8qbG9uZyovIDA7CgkgICAgICAgIHZhciBlbmQgPSBmYWxzZTsKCSAgICAgICAgc3dpdGNoIChtb2RlKSB7CgkgICAgICAgICAgICBjYXNlIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuQllURV9DT01QQUNUSU9OX01PREVfTEFUQ0g6CgkgICAgICAgICAgICAgICAgLy8gVG90YWwgbnVtYmVyIG9mIEJ5dGUgQ29tcGFjdGlvbiBjaGFyYWN0ZXJzIHRvIGJlIGVuY29kZWQKCSAgICAgICAgICAgICAgICAvLyBpcyBub3QgYSBtdWx0aXBsZSBvZiA2CgkgICAgICAgICAgICAgICAgdmFyIGJ5dGVDb21wYWN0ZWRDb2Rld29yZHMgPSBuZXcgSW50MzJBcnJheSg2KTsKCSAgICAgICAgICAgICAgICB2YXIgbmV4dENvZGUgPSBjb2Rld29yZHNbY29kZUluZGV4KytdOwoJICAgICAgICAgICAgICAgIHdoaWxlICgoY29kZUluZGV4IDwgY29kZXdvcmRzWzBdKSAmJiAhZW5kKSB7CgkgICAgICAgICAgICAgICAgICAgIGJ5dGVDb21wYWN0ZWRDb2Rld29yZHNbY291bnQrK10gPSBuZXh0Q29kZTsKCSAgICAgICAgICAgICAgICAgICAgLy8gQmFzZSA5MDAKCSAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSA5MDAgKiB2YWx1ZSArIG5leHRDb2RlOwoJICAgICAgICAgICAgICAgICAgICBuZXh0Q29kZSA9IGNvZGV3b3Jkc1tjb2RlSW5kZXgrK107CgkgICAgICAgICAgICAgICAgICAgIC8vIHBlcmhhcHMgaXQgc2hvdWxkIGJlIG9rIHRvIGNoZWNrIG9ubHkgbmV4dENvZGUgPj0gVEVYVF9DT01QQUNUSU9OX01PREVfTEFUQ0gKCSAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChuZXh0Q29kZSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLlRFWFRfQ09NUEFDVElPTl9NT0RFX0xBVENIOgoJICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLkJZVEVfQ09NUEFDVElPTl9NT0RFX0xBVENIOgoJICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLk5VTUVSSUNfQ09NUEFDVElPTl9NT0RFX0xBVENIOgoJICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLkJZVEVfQ09NUEFDVElPTl9NT0RFX0xBVENIXzY6CgkgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuQkVHSU5fTUFDUk9fUERGNDE3X0NPTlRST0xfQkxPQ0s6CgkgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuQkVHSU5fTUFDUk9fUERGNDE3X09QVElPTkFMX0ZJRUxEOgoJICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLk1BQ1JPX1BERjQxN19URVJNSU5BVE9SOgoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVJbmRleC0tOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCA9IHRydWU7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoY291bnQgJSA1ID09PSAwKSAmJiAoY291bnQgPiAwKSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWNvZGUgZXZlcnkgNSBjb2Rld29yZHMKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29udmVydCB0byBCYXNlIDI1NgoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqIC8qaW50Ki8gPSAwOyBqIDwgNjsgKytqKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBAbm90ZQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSmF2YVNjcmlwdCBzdG9yZXMgbnVtYmVycyBhcyA2NCBiaXRzIGZsb2F0aW5nIHBvaW50IG51bWJlcnMsIGJ1dCBhbGwgYml0d2lzZSBvcGVyYXRpb25zIGFyZSBwZXJmb3JtZWQgb24gMzIgYml0cyBiaW5hcnkgbnVtYmVycy4KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIFNvIHRoZSBuZXh0IGJpdHdpc2Ugb3BlcmF0aW9uIGNvdWxkIG5vdCBiZSBkb25lIHdpdGggc2ltcGxlIG51bWJlcnMKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlZEJ5dGVzLndyaXRlKC8qKGJ5dGUpKi8gTnVtYmVyKGNyZWF0ZUJpZ0ludCh2YWx1ZSkgPj4gY3JlYXRlQmlnSW50KDggKiAoNSAtIGopKSkpOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gMDsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQgPSAwOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAvLyBpZiB0aGUgZW5kIG9mIGFsbCBjb2Rld29yZHMgaXMgcmVhY2hlZCB0aGUgbGFzdCBjb2Rld29yZCBuZWVkcyB0byBiZSBhZGRlZAoJICAgICAgICAgICAgICAgIGlmIChjb2RlSW5kZXggPT09IGNvZGV3b3Jkc1swXSAmJiBuZXh0Q29kZSA8IERlY29kZWRCaXRTdHJlYW1QYXJzZXIuVEVYVF9DT01QQUNUSU9OX01PREVfTEFUQ0gpIHsKCSAgICAgICAgICAgICAgICAgICAgYnl0ZUNvbXBhY3RlZENvZGV3b3Jkc1tjb3VudCsrXSA9IG5leHRDb2RlOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAvLyBJZiBCeXRlIENvbXBhY3Rpb24gbW9kZSBpcyBpbnZva2VkIHdpdGggY29kZXdvcmQgOTAxLAoJICAgICAgICAgICAgICAgIC8vIHRoZSBsYXN0IGdyb3VwIG9mIGNvZGV3b3JkcyBpcyBpbnRlcnByZXRlZCBkaXJlY3RseQoJICAgICAgICAgICAgICAgIC8vIGFzIG9uZSBieXRlIHBlciBjb2Rld29yZCwgd2l0aG91dCBjb21wYWN0aW9uLgoJICAgICAgICAgICAgICAgIGZvciAodmFyIGkgLyppbnQqLyA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CgkgICAgICAgICAgICAgICAgICAgIGRlY29kZWRCeXRlcy53cml0ZSgvKihieXRlKSovIGJ5dGVDb21wYWN0ZWRDb2Rld29yZHNbaV0pOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5CWVRFX0NPTVBBQ1RJT05fTU9ERV9MQVRDSF82OgoJICAgICAgICAgICAgICAgIC8vIFRvdGFsIG51bWJlciBvZiBCeXRlIENvbXBhY3Rpb24gY2hhcmFjdGVycyB0byBiZSBlbmNvZGVkCgkgICAgICAgICAgICAgICAgLy8gaXMgYW4gaW50ZWdlciBtdWx0aXBsZSBvZiA2CgkgICAgICAgICAgICAgICAgd2hpbGUgKGNvZGVJbmRleCA8IGNvZGV3b3Jkc1swXSAmJiAhZW5kKSB7CgkgICAgICAgICAgICAgICAgICAgIHZhciBjb2RlID0gY29kZXdvcmRzW2NvZGVJbmRleCsrXTsKCSAgICAgICAgICAgICAgICAgICAgaWYgKGNvZGUgPCBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLlRFWFRfQ09NUEFDVElPTl9NT0RFX0xBVENIKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCsrOwoJICAgICAgICAgICAgICAgICAgICAgICAgLy8gQmFzZSA5MDAKCSAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gOTAwICogdmFsdWUgKyBjb2RlOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChjb2RlKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLlRFWFRfQ09NUEFDVElPTl9NT0RFX0xBVENIOgoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5CWVRFX0NPTVBBQ1RJT05fTU9ERV9MQVRDSDoKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuTlVNRVJJQ19DT01QQUNUSU9OX01PREVfTEFUQ0g6CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLkJZVEVfQ09NUEFDVElPTl9NT0RFX0xBVENIXzY6CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLkJFR0lOX01BQ1JPX1BERjQxN19DT05UUk9MX0JMT0NLOgoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5CRUdJTl9NQUNST19QREY0MTdfT1BUSU9OQUxfRklFTEQ6CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLk1BQ1JPX1BERjQxN19URVJNSU5BVE9SOgoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlSW5kZXgtLTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kID0gdHJ1ZTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgaWYgKChjb3VudCAlIDUgPT09IDApICYmIChjb3VudCA+IDApKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWNvZGUgZXZlcnkgNSBjb2Rld29yZHMKCSAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvbnZlcnQgdG8gQmFzZSAyNTYKCSAgICAgICAgICAgICAgICAgICAgICAgIC8qIEBub3RlCgkgICAgICAgICAgICAgICAgICAgICAgICAgKiBKYXZhU2NyaXB0IHN0b3JlcyBudW1iZXJzIGFzIDY0IGJpdHMgZmxvYXRpbmcgcG9pbnQgbnVtYmVycywgYnV0IGFsbCBiaXR3aXNlIG9wZXJhdGlvbnMgYXJlIHBlcmZvcm1lZCBvbiAzMiBiaXRzIGJpbmFyeSBudW1iZXJzLgoJICAgICAgICAgICAgICAgICAgICAgICAgICogU28gdGhlIG5leHQgYml0d2lzZSBvcGVyYXRpb24gY291bGQgbm90IGJlIGRvbmUgd2l0aCBzaW1wbGUgbnVtYmVycwoJICAgICAgICAgICAgICAgICAgICAgICAgKi8KCSAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogLyppbnQqLyA9IDA7IGogPCA2OyArK2opIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVkQnl0ZXMud3JpdGUoLyooYnl0ZSkqLyBOdW1iZXIoY3JlYXRlQmlnSW50KHZhbHVlKSA+PiBjcmVhdGVCaWdJbnQoOCAqICg1IC0gaikpKSk7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IDA7CgkgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCA9IDA7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgIH0KCSAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmdFbmNvZGluZ18xLmRlZmF1bHQuZGVjb2RlKGRlY29kZWRCeXRlcy50b0J5dGVBcnJheSgpLCBlbmNvZGluZykpOwoJICAgICAgICByZXR1cm4gY29kZUluZGV4OwoJICAgIH07CgkgICAgLyoqCgkgICAgICogTnVtZXJpYyBDb21wYWN0aW9uIG1vZGUgKHNlZSA1LjQuNCkgcGVybWl0cyBlZmZpY2llbnQgZW5jb2Rpbmcgb2YgbnVtZXJpYyBkYXRhIHN0cmluZ3MuCgkgICAgICoKCSAgICAgKiBAcGFyYW0gY29kZXdvcmRzIFRoZSBhcnJheSBvZiBjb2Rld29yZHMgKGRhdGEgKyBlcnJvcikKCSAgICAgKiBAcGFyYW0gY29kZUluZGV4IFRoZSBjdXJyZW50IGluZGV4IGludG8gdGhlIGNvZGV3b3JkIGFycmF5LgoJICAgICAqIEBwYXJhbSByZXN1bHQgICAgVGhlIGRlY29kZWQgZGF0YSBpcyBhcHBlbmRlZCB0byB0aGUgcmVzdWx0LgoJICAgICAqIEByZXR1cm4gVGhlIG5leHQgaW5kZXggaW50byB0aGUgY29kZXdvcmQgYXJyYXkuCgkgICAgICoKCSAgICAgKiBAdGhyb3dzIEZvcm1hdEV4Y2VwdGlvbgoJICAgICAqLwoJICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIubnVtZXJpY0NvbXBhY3Rpb24gPSBmdW5jdGlvbiAoY29kZXdvcmRzLCBjb2RlSW5kZXggLyppbnQqLywgcmVzdWx0KSB7CgkgICAgICAgIHZhciBjb3VudCA9IDA7CgkgICAgICAgIHZhciBlbmQgPSBmYWxzZTsKCSAgICAgICAgdmFyIG51bWVyaWNDb2Rld29yZHMgPSBuZXcgSW50MzJBcnJheShEZWNvZGVkQml0U3RyZWFtUGFyc2VyLk1BWF9OVU1FUklDX0NPREVXT1JEUyk7CgkgICAgICAgIHdoaWxlIChjb2RlSW5kZXggPCBjb2Rld29yZHNbMF0gJiYgIWVuZCkgewoJICAgICAgICAgICAgdmFyIGNvZGUgPSBjb2Rld29yZHNbY29kZUluZGV4KytdOwoJICAgICAgICAgICAgaWYgKGNvZGVJbmRleCA9PT0gY29kZXdvcmRzWzBdKSB7CgkgICAgICAgICAgICAgICAgZW5kID0gdHJ1ZTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGlmIChjb2RlIDwgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5URVhUX0NPTVBBQ1RJT05fTU9ERV9MQVRDSCkgewoJICAgICAgICAgICAgICAgIG51bWVyaWNDb2Rld29yZHNbY291bnRdID0gY29kZTsKCSAgICAgICAgICAgICAgICBjb3VudCsrOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgc3dpdGNoIChjb2RlKSB7CgkgICAgICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5URVhUX0NPTVBBQ1RJT05fTU9ERV9MQVRDSDoKCSAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLkJZVEVfQ09NUEFDVElPTl9NT0RFX0xBVENIOgoJICAgICAgICAgICAgICAgICAgICBjYXNlIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuQllURV9DT01QQUNUSU9OX01PREVfTEFUQ0hfNjoKCSAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLkJFR0lOX01BQ1JPX1BERjQxN19DT05UUk9MX0JMT0NLOgoJICAgICAgICAgICAgICAgICAgICBjYXNlIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuQkVHSU5fTUFDUk9fUERGNDE3X09QVElPTkFMX0ZJRUxEOgoJICAgICAgICAgICAgICAgICAgICBjYXNlIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuTUFDUk9fUERGNDE3X1RFUk1JTkFUT1I6CgkgICAgICAgICAgICAgICAgICAgICAgICBjb2RlSW5kZXgtLTsKCSAgICAgICAgICAgICAgICAgICAgICAgIGVuZCA9IHRydWU7CgkgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBpZiAoKGNvdW50ICUgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5NQVhfTlVNRVJJQ19DT0RFV09SRFMgPT09IDAgfHwgY29kZSA9PT0gRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5OVU1FUklDX0NPTVBBQ1RJT05fTU9ERV9MQVRDSCB8fCBlbmQpICYmIGNvdW50ID4gMCkgewoJICAgICAgICAgICAgICAgIC8vIFJlLWludm9raW5nIE51bWVyaWMgQ29tcGFjdGlvbiBtb2RlIChieSB1c2luZyBjb2Rld29yZCA5MDIKCSAgICAgICAgICAgICAgICAvLyB3aGlsZSBpbiBOdW1lcmljIENvbXBhY3Rpb24gbW9kZSkgc2VydmVzICB0byB0ZXJtaW5hdGUgdGhlCgkgICAgICAgICAgICAgICAgLy8gY3VycmVudCBOdW1lcmljIENvbXBhY3Rpb24gbW9kZSBncm91cGluZyBhcyBkZXNjcmliZWQgaW4gNS40LjQuMiwKCSAgICAgICAgICAgICAgICAvLyBhbmQgdGhlbiB0byBzdGFydCBhIG5ldyBvbmUgZ3JvdXBpbmcuCgkgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChEZWNvZGVkQml0U3RyZWFtUGFyc2VyLmRlY29kZUJhc2U5MDB0b0Jhc2UxMChudW1lcmljQ29kZXdvcmRzLCBjb3VudCkpOwoJICAgICAgICAgICAgICAgIGNvdW50ID0gMDsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gY29kZUluZGV4OwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQ29udmVydCBhIGxpc3Qgb2YgTnVtZXJpYyBDb21wYWN0ZWQgY29kZXdvcmRzIGZyb20gQmFzZSA5MDAgdG8gQmFzZSAxMC4KCSAgICAgKgoJICAgICAqIEBwYXJhbSBjb2Rld29yZHMgVGhlIGFycmF5IG9mIGNvZGV3b3JkcwoJICAgICAqIEBwYXJhbSBjb3VudCAgICAgVGhlIG51bWJlciBvZiBjb2Rld29yZHMKCSAgICAgKiBAcmV0dXJuIFRoZSBkZWNvZGVkIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIE51bWVyaWMgZGF0YS4KCSAgICAgKgoJICAgICAqIEVYQU1QTEUKCSAgICAgKiBFbmNvZGUgdGhlIGZpZnRlZW4gZGlnaXQgbnVtZXJpYyBzdHJpbmcgMDAwMjEzMjk4MTc0MDAwCgkgICAgICogUHJlZml4IHRoZSBudW1lcmljIHN0cmluZyB3aXRoIGEgMSBhbmQgc2V0IHRoZSBpbml0aWFsIHZhbHVlIG9mCgkgICAgICogdCA9IDEgMDAwIDIxMyAyOTggMTc0IDAwMAoJICAgICAqIENhbGN1bGF0ZSBjb2Rld29yZCAwCgkgICAgICogZDAgPSAxIDAwMCAyMTMgMjk4IDE3NCAwMDAgbW9kIDkwMCA9IDIwMAoJICAgICAqCgkgICAgICogdCA9IDEgMDAwIDIxMyAyOTggMTc0IDAwMCBkaXYgOTAwID0gMSAxMTEgMzQ4IDEwOSAwODIKCSAgICAgKiBDYWxjdWxhdGUgY29kZXdvcmQgMQoJICAgICAqIGQxID0gMSAxMTEgMzQ4IDEwOSAwODIgbW9kIDkwMCA9IDI4MgoJICAgICAqCgkgICAgICogdCA9IDEgMTExIDM0OCAxMDkgMDgyIGRpdiA5MDAgPSAxIDIzNCA4MzEgMjMyCgkgICAgICogQ2FsY3VsYXRlIGNvZGV3b3JkIDIKCSAgICAgKiBkMiA9IDEgMjM0IDgzMSAyMzIgbW9kIDkwMCA9IDYzMgoJICAgICAqCgkgICAgICogdCA9IDEgMjM0IDgzMSAyMzIgZGl2IDkwMCA9IDEgMzcyIDAzNAoJICAgICAqIENhbGN1bGF0ZSBjb2Rld29yZCAzCgkgICAgICogZDMgPSAxIDM3MiAwMzQgbW9kIDkwMCA9IDQzNAoJICAgICAqCgkgICAgICogdCA9IDEgMzcyIDAzNCBkaXYgOTAwID0gMSA1MjQKCSAgICAgKiBDYWxjdWxhdGUgY29kZXdvcmQgNAoJICAgICAqIGQ0ID0gMSA1MjQgbW9kIDkwMCA9IDYyNAoJICAgICAqCgkgICAgICogdCA9IDEgNTI0IGRpdiA5MDAgPSAxCgkgICAgICogQ2FsY3VsYXRlIGNvZGV3b3JkIDUKCSAgICAgKiBkNSA9IDEgbW9kIDkwMCA9IDEKCSAgICAgKiB0ID0gMSBkaXYgOTAwID0gMAoJICAgICAqIENvZGV3b3JkIHNlcXVlbmNlIGlzOiAxLCA2MjQsIDQzNCwgNjMyLCAyODIsIDIwMAoJICAgICAqCgkgICAgICogRGVjb2RlIHRoZSBhYm92ZSBjb2Rld29yZHMgaW52b2x2ZXMKCSAgICAgKiAgIDEgeCA5MDAgcG93ZXIgb2YgNSArIDYyNCB4IDkwMCBwb3dlciBvZiA0ICsgNDM0IHggOTAwIHBvd2VyIG9mIDMgKwoJICAgICAqIDYzMiB4IDkwMCBwb3dlciBvZiAyICsgMjgyIHggOTAwIHBvd2VyIG9mIDEgKyAyMDAgeCA5MDAgcG93ZXIgb2YgMCA9IDEwMDAyMTMyOTgxNzQwMDAKCSAgICAgKgoJICAgICAqIFJlbW92ZSBsZWFkaW5nIDEgPT4gIFJlc3VsdCBpcyAwMDAyMTMyOTgxNzQwMDAKCSAgICAgKgoJICAgICAqIEB0aHJvd3MgRm9ybWF0RXhjZXB0aW9uCgkgICAgICovCgkgICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5kZWNvZGVCYXNlOTAwdG9CYXNlMTAgPSBmdW5jdGlvbiAoY29kZXdvcmRzLCBjb3VudCkgewoJICAgICAgICB2YXIgcmVzdWx0ID0gY3JlYXRlQmlnSW50KDApOwoJICAgICAgICBmb3IgKHZhciBpIC8qaW50Ki8gPSAwOyBpIDwgY291bnQ7IGkrKykgewoJICAgICAgICAgICAgcmVzdWx0ICs9IERlY29kZWRCaXRTdHJlYW1QYXJzZXIuRVhQOTAwW2NvdW50IC0gaSAtIDFdICogY3JlYXRlQmlnSW50KGNvZGV3b3Jkc1tpXSk7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIHJlc3VsdFN0cmluZyA9IHJlc3VsdC50b1N0cmluZygpOwoJICAgICAgICBpZiAocmVzdWx0U3RyaW5nLmNoYXJBdCgwKSAhPT0gJzEnKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiByZXN1bHRTdHJpbmcuc3Vic3RyaW5nKDEpOwoJICAgIH07CgkgICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5URVhUX0NPTVBBQ1RJT05fTU9ERV9MQVRDSCA9IDkwMDsKCSAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLkJZVEVfQ09NUEFDVElPTl9NT0RFX0xBVENIID0gOTAxOwoJICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuTlVNRVJJQ19DT01QQUNUSU9OX01PREVfTEFUQ0ggPSA5MDI7CgkgICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5CWVRFX0NPTVBBQ1RJT05fTU9ERV9MQVRDSF82ID0gOTI0OwoJICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuRUNJX1VTRVJfREVGSU5FRCA9IDkyNTsKCSAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLkVDSV9HRU5FUkFMX1BVUlBPU0UgPSA5MjY7CgkgICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5FQ0lfQ0hBUlNFVCA9IDkyNzsKCSAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLkJFR0lOX01BQ1JPX1BERjQxN19DT05UUk9MX0JMT0NLID0gOTI4OwoJICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuQkVHSU5fTUFDUk9fUERGNDE3X09QVElPTkFMX0ZJRUxEID0gOTIzOwoJICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuTUFDUk9fUERGNDE3X1RFUk1JTkFUT1IgPSA5MjI7CgkgICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5NT0RFX1NISUZUX1RPX0JZVEVfQ09NUEFDVElPTl9NT0RFID0gOTEzOwoJICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuTUFYX05VTUVSSUNfQ09ERVdPUkRTID0gMTU7CgkgICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5NQUNST19QREY0MTdfT1BUSU9OQUxfRklFTERfRklMRV9OQU1FID0gMDsKCSAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLk1BQ1JPX1BERjQxN19PUFRJT05BTF9GSUVMRF9TRUdNRU5UX0NPVU5UID0gMTsKCSAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLk1BQ1JPX1BERjQxN19PUFRJT05BTF9GSUVMRF9USU1FX1NUQU1QID0gMjsKCSAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLk1BQ1JPX1BERjQxN19PUFRJT05BTF9GSUVMRF9TRU5ERVIgPSAzOwoJICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuTUFDUk9fUERGNDE3X09QVElPTkFMX0ZJRUxEX0FERFJFU1NFRSA9IDQ7CgkgICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5NQUNST19QREY0MTdfT1BUSU9OQUxfRklFTERfRklMRV9TSVpFID0gNTsKCSAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLk1BQ1JPX1BERjQxN19PUFRJT05BTF9GSUVMRF9DSEVDS1NVTSA9IDY7CgkgICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5QTCA9IDI1OwoJICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuTEwgPSAyNzsKCSAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLkFTID0gMjc7CgkgICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5NTCA9IDI4OwoJICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuQUwgPSAyODsKCSAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLlBTID0gMjk7CgkgICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5QQUwgPSAyOTsKCSAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLlBVTkNUX0NIQVJTID0gJzs8PkBbXFxdX2B+IVxyXHQsOlxuLS4kLyJ8KigpP3t9XCcnOwoJICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuTUlYRURfQ0hBUlMgPSAnMDEyMzQ1Njc4OSZcclx0LDojLS4kLyslKj1eJzsKCSAgICAvKioKCSAgICAgKiBUYWJsZSBjb250YWluaW5nIHZhbHVlcyBmb3IgdGhlIGV4cG9uZW50IG9mIDkwMC4KCSAgICAgKiBUaGlzIGlzIHVzZWQgaW4gdGhlIG51bWVyaWMgY29tcGFjdGlvbiBkZWNvZGUgYWxnb3JpdGhtLgoJICAgICAqLwoJICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuRVhQOTAwID0gZ2V0QmlnSW50Q29uc3RydWN0b3IoKSA/IGdldEVYUDkwMCgpIDogW107CgkgICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5OVU1CRVJfT0ZfU0VRVUVOQ0VfQ09ERVdPUkRTID0gMjsKCSAgICByZXR1cm4gRGVjb2RlZEJpdFN0cmVhbVBhcnNlcjsKCX0oKSk7CglleHBvcnRzLmRlZmF1bHQgPSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyOwoKCX0pOwoKCXZhciBQREY0MTdTY2FubmluZ0RlY29kZXJfMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCS8qCgkqIENvcHlyaWdodCAyMDEzIFpYaW5nIGF1dGhvcnMKCSoKCSogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkqCgkqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkqCgkqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkqLwoJdmFyIF9fdmFsdWVzID0gKGNvbW1vbmpzR2xvYmFsICYmIGNvbW1vbmpzR2xvYmFsLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7CgkgICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSAiZnVuY3Rpb24iICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7CgkgICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7CgkgICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSAibnVtYmVyIikgcmV0dXJuIHsKCSAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkgewoJICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDsKCSAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTsKCSAgICAgICAgfQoJICAgIH07CgkgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gIk9iamVjdCBpcyBub3QgaXRlcmFibGUuIiA6ICJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuIik7Cgl9OwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCS8vIHBhY2thZ2UgY29tLmdvb2dsZS56eGluZy5wZGY0MTcuZGVjb2RlcjsKCS8vIGltcG9ydCBjb20uZ29vZ2xlLnp4aW5nLkNoZWNrc3VtRXhjZXB0aW9uOwoKCS8vIGltcG9ydCBjb20uZ29vZ2xlLnp4aW5nLkZvcm1hdEV4Y2VwdGlvbjsKCgkvLyBpbXBvcnQgY29tLmdvb2dsZS56eGluZy5Ob3RGb3VuZEV4Y2VwdGlvbjsKCgkvLyBpbXBvcnQgY29tLmdvb2dsZS56eGluZy5jb21tb24uZGV0ZWN0b3IuTWF0aFV0aWxzOwoKCS8vIGltcG9ydCBjb20uZ29vZ2xlLnp4aW5nLnBkZjQxNy5QREY0MTdDb21tb247CgoJLy8gaW1wb3J0IGNvbS5nb29nbGUuenhpbmcucGRmNDE3LmRlY29kZXIuZWMuRXJyb3JDb3JyZWN0aW9uOwoKCS8vIGxvY2FsCgoKCgoKCgoKCS8vIHV0aWxzCgoJLy8gaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CgkvLyBpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247CgkvLyBpbXBvcnQgamF2YS51dGlsLkZvcm1hdHRlcjsKCS8vIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsKCS8qKgoJICogQGF1dGhvciBHdWVudGhlciBHcmF1CgkgKi8KCXZhciBQREY0MTdTY2FubmluZ0RlY29kZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgZnVuY3Rpb24gUERGNDE3U2Nhbm5pbmdEZWNvZGVyKCkgewoJICAgIH0KCSAgICAvKioKCSAgICAgKiBAVE9ETyBkb24ndCBwYXNzIGluIG1pbkNvZGV3b3JkV2lkdGggYW5kIG1heENvZGV3b3JkV2lkdGgsIHBhc3MgaW4gYmFyY29kZSBjb2x1bW5zIGZvciBzdGFydCBhbmQgc3RvcCBwYXR0ZXJuCgkgICAgICoKCSAgICAgKiBjb2x1bW5zLiBUaGF0IHdheSB3aWR0aCBjYW4gYmUgZGVkdWN0ZWQgZnJvbSB0aGUgcGF0dGVybiBjb2x1bW4uCgkgICAgICogVGhpcyBhcHByb2FjaCBhbHNvIGFsbG93cyB0byBkZXRlY3QgbW9yZSBkZXRhaWxzIGFib3V0IHRoZSBiYXJjb2RlLCBlLmcuIGlmIGEgYmFyIHR5cGUgKHdoaXRlIG9yIGJsYWNrKSBpcyB3aWRlcgoJICAgICAqIHRoYW4gaXQgc2hvdWxkIGJlLiBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlIHNjYW5uZXIgdXNlZCBhIGJhZCBibGFja3BvaW50LgoJICAgICAqCgkgICAgICogQHBhcmFtIEJpdE1hdHJpeAoJICAgICAqIEBwYXJhbSBpbWFnZQoJICAgICAqIEBwYXJhbSBSZXN1bHRQb2ludAoJICAgICAqIEBwYXJhbSBpbWFnZVRvcExlZnQKCSAgICAgKiBAcGFyYW0gUmVzdWx0UG9pbnQKCSAgICAgKiBAcGFyYW0gaW1hZ2VCb3R0b21MZWZ0CgkgICAgICogQHBhcmFtIFJlc3VsdFBvaW50CgkgICAgICogQHBhcmFtIGltYWdlVG9wUmlnaHQKCSAgICAgKiBAcGFyYW0gUmVzdWx0UG9pbnQKCSAgICAgKiBAcGFyYW0gaW1hZ2VCb3R0b21SaWdodAoJICAgICAqIEBwYXJhbSBpbnQKCSAgICAgKiBAcGFyYW0gbWluQ29kZXdvcmRXaWR0aAoJICAgICAqIEBwYXJhbSBpbnQKCSAgICAgKiBAcGFyYW0gbWF4Q29kZXdvcmRXaWR0aAoJICAgICAqCgkgICAgICogQHRocm93cyBOb3RGb3VuZEV4Y2VwdGlvbgoJICAgICAqIEB0aHJvd3MgRm9ybWF0RXhjZXB0aW9uCgkgICAgICogQHRocm93cyBDaGVja3N1bUV4Y2VwdGlvbgoJICAgICAqLwoJICAgIFBERjQxN1NjYW5uaW5nRGVjb2Rlci5kZWNvZGUgPSBmdW5jdGlvbiAoaW1hZ2UsIGltYWdlVG9wTGVmdCwgaW1hZ2VCb3R0b21MZWZ0LCBpbWFnZVRvcFJpZ2h0LCBpbWFnZUJvdHRvbVJpZ2h0LCBtaW5Db2Rld29yZFdpZHRoLCBtYXhDb2Rld29yZFdpZHRoKSB7CgkgICAgICAgIHZhciBib3VuZGluZ0JveCA9IG5ldyBCb3VuZGluZ0JveF8xLmRlZmF1bHQoaW1hZ2UsIGltYWdlVG9wTGVmdCwgaW1hZ2VCb3R0b21MZWZ0LCBpbWFnZVRvcFJpZ2h0LCBpbWFnZUJvdHRvbVJpZ2h0KTsKCSAgICAgICAgdmFyIGxlZnRSb3dJbmRpY2F0b3JDb2x1bW4gPSBudWxsOwoJICAgICAgICB2YXIgcmlnaHRSb3dJbmRpY2F0b3JDb2x1bW4gPSBudWxsOwoJICAgICAgICB2YXIgZGV0ZWN0aW9uUmVzdWx0OwoJICAgICAgICBmb3IgKHZhciBmaXJzdFBhc3MgLypib29sZWFuKi8gPSB0cnVlOzsgZmlyc3RQYXNzID0gZmFsc2UpIHsKCSAgICAgICAgICAgIGlmIChpbWFnZVRvcExlZnQgIT0gbnVsbCkgewoJICAgICAgICAgICAgICAgIGxlZnRSb3dJbmRpY2F0b3JDb2x1bW4gPSBQREY0MTdTY2FubmluZ0RlY29kZXIuZ2V0Um93SW5kaWNhdG9yQ29sdW1uKGltYWdlLCBib3VuZGluZ0JveCwgaW1hZ2VUb3BMZWZ0LCB0cnVlLCBtaW5Db2Rld29yZFdpZHRoLCBtYXhDb2Rld29yZFdpZHRoKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGlmIChpbWFnZVRvcFJpZ2h0ICE9IG51bGwpIHsKCSAgICAgICAgICAgICAgICByaWdodFJvd0luZGljYXRvckNvbHVtbiA9IFBERjQxN1NjYW5uaW5nRGVjb2Rlci5nZXRSb3dJbmRpY2F0b3JDb2x1bW4oaW1hZ2UsIGJvdW5kaW5nQm94LCBpbWFnZVRvcFJpZ2h0LCBmYWxzZSwgbWluQ29kZXdvcmRXaWR0aCwgbWF4Q29kZXdvcmRXaWR0aCk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBkZXRlY3Rpb25SZXN1bHQgPSBQREY0MTdTY2FubmluZ0RlY29kZXIubWVyZ2UobGVmdFJvd0luZGljYXRvckNvbHVtbiwgcmlnaHRSb3dJbmRpY2F0b3JDb2x1bW4pOwoJICAgICAgICAgICAgaWYgKGRldGVjdGlvblJlc3VsdCA9PSBudWxsKSB7CgkgICAgICAgICAgICAgICAgdGhyb3cgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0LmdldE5vdEZvdW5kSW5zdGFuY2UoKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHZhciByZXN1bHRCb3ggPSBkZXRlY3Rpb25SZXN1bHQuZ2V0Qm91bmRpbmdCb3goKTsKCSAgICAgICAgICAgIGlmIChmaXJzdFBhc3MgJiYgcmVzdWx0Qm94ICE9IG51bGwgJiYKCSAgICAgICAgICAgICAgICAocmVzdWx0Qm94LmdldE1pblkoKSA8IGJvdW5kaW5nQm94LmdldE1pblkoKSB8fCByZXN1bHRCb3guZ2V0TWF4WSgpID4gYm91bmRpbmdCb3guZ2V0TWF4WSgpKSkgewoJICAgICAgICAgICAgICAgIGJvdW5kaW5nQm94ID0gcmVzdWx0Qm94OwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgZGV0ZWN0aW9uUmVzdWx0LnNldEJvdW5kaW5nQm94KGJvdW5kaW5nQm94KTsKCSAgICAgICAgdmFyIG1heEJhcmNvZGVDb2x1bW4gPSBkZXRlY3Rpb25SZXN1bHQuZ2V0QmFyY29kZUNvbHVtbkNvdW50KCkgKyAxOwoJICAgICAgICBkZXRlY3Rpb25SZXN1bHQuc2V0RGV0ZWN0aW9uUmVzdWx0Q29sdW1uKDAsIGxlZnRSb3dJbmRpY2F0b3JDb2x1bW4pOwoJICAgICAgICBkZXRlY3Rpb25SZXN1bHQuc2V0RGV0ZWN0aW9uUmVzdWx0Q29sdW1uKG1heEJhcmNvZGVDb2x1bW4sIHJpZ2h0Um93SW5kaWNhdG9yQ29sdW1uKTsKCSAgICAgICAgdmFyIGxlZnRUb1JpZ2h0ID0gbGVmdFJvd0luZGljYXRvckNvbHVtbiAhPSBudWxsOwoJICAgICAgICBmb3IgKHZhciBiYXJjb2RlQ29sdW1uQ291bnQgLyppbnQqLyA9IDE7IGJhcmNvZGVDb2x1bW5Db3VudCA8PSBtYXhCYXJjb2RlQ29sdW1uOyBiYXJjb2RlQ29sdW1uQ291bnQrKykgewoJICAgICAgICAgICAgdmFyIGJhcmNvZGVDb2x1bW4gPSBsZWZ0VG9SaWdodCA/IGJhcmNvZGVDb2x1bW5Db3VudCA6IG1heEJhcmNvZGVDb2x1bW4gLSBiYXJjb2RlQ29sdW1uQ291bnQ7CgkgICAgICAgICAgICBpZiAoZGV0ZWN0aW9uUmVzdWx0LmdldERldGVjdGlvblJlc3VsdENvbHVtbihiYXJjb2RlQ29sdW1uKSAhPT0gLyogbnVsbCAqLyB1bmRlZmluZWQpIHsKCSAgICAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgYmUgdGhlIGNhc2UgZm9yIHRoZSBvcHBvc2l0ZSByb3cgaW5kaWNhdG9yIGNvbHVtbiwgd2hpY2ggZG9lc24ndCBuZWVkIHRvIGJlIGRlY29kZWQgYWdhaW4uCgkgICAgICAgICAgICAgICAgY29udGludWU7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICB2YXIgZGV0ZWN0aW9uUmVzdWx0Q29sdW1uID0gdm9pZCAwOwoJICAgICAgICAgICAgaWYgKGJhcmNvZGVDb2x1bW4gPT09IDAgfHwgYmFyY29kZUNvbHVtbiA9PT0gbWF4QmFyY29kZUNvbHVtbikgewoJICAgICAgICAgICAgICAgIGRldGVjdGlvblJlc3VsdENvbHVtbiA9IG5ldyBEZXRlY3Rpb25SZXN1bHRSb3dJbmRpY2F0b3JDb2x1bW5fMS5kZWZhdWx0KGJvdW5kaW5nQm94LCBiYXJjb2RlQ29sdW1uID09PSAwKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgIGRldGVjdGlvblJlc3VsdENvbHVtbiA9IG5ldyBEZXRlY3Rpb25SZXN1bHRDb2x1bW5fMS5kZWZhdWx0KGJvdW5kaW5nQm94KTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGRldGVjdGlvblJlc3VsdC5zZXREZXRlY3Rpb25SZXN1bHRDb2x1bW4oYmFyY29kZUNvbHVtbiwgZGV0ZWN0aW9uUmVzdWx0Q29sdW1uKTsKCSAgICAgICAgICAgIHZhciBzdGFydENvbHVtbiA9IC0xOwoJICAgICAgICAgICAgdmFyIHByZXZpb3VzU3RhcnRDb2x1bW4gPSBzdGFydENvbHVtbjsKCSAgICAgICAgICAgIC8vIFRPRE8gc3RhcnQgYXQgYSByb3cgZm9yIHdoaWNoIHdlIGtub3cgdGhlIHN0YXJ0IHBvc2l0aW9uLCB0aGVuIGRldGVjdCB1cHdhcmRzIGFuZCBkb3dud2FyZHMgZnJvbSB0aGVyZS4KCSAgICAgICAgICAgIGZvciAodmFyIGltYWdlUm93IC8qaW50Ki8gPSBib3VuZGluZ0JveC5nZXRNaW5ZKCk7IGltYWdlUm93IDw9IGJvdW5kaW5nQm94LmdldE1heFkoKTsgaW1hZ2VSb3crKykgewoJICAgICAgICAgICAgICAgIHN0YXJ0Q29sdW1uID0gUERGNDE3U2Nhbm5pbmdEZWNvZGVyLmdldFN0YXJ0Q29sdW1uKGRldGVjdGlvblJlc3VsdCwgYmFyY29kZUNvbHVtbiwgaW1hZ2VSb3csIGxlZnRUb1JpZ2h0KTsKCSAgICAgICAgICAgICAgICBpZiAoc3RhcnRDb2x1bW4gPCAwIHx8IHN0YXJ0Q29sdW1uID4gYm91bmRpbmdCb3guZ2V0TWF4WCgpKSB7CgkgICAgICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c1N0YXJ0Q29sdW1uID09PSAtMSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgc3RhcnRDb2x1bW4gPSBwcmV2aW91c1N0YXJ0Q29sdW1uOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB2YXIgY29kZXdvcmQgPSBQREY0MTdTY2FubmluZ0RlY29kZXIuZGV0ZWN0Q29kZXdvcmQoaW1hZ2UsIGJvdW5kaW5nQm94LmdldE1pblgoKSwgYm91bmRpbmdCb3guZ2V0TWF4WCgpLCBsZWZ0VG9SaWdodCwgc3RhcnRDb2x1bW4sIGltYWdlUm93LCBtaW5Db2Rld29yZFdpZHRoLCBtYXhDb2Rld29yZFdpZHRoKTsKCSAgICAgICAgICAgICAgICBpZiAoY29kZXdvcmQgIT0gbnVsbCkgewoJICAgICAgICAgICAgICAgICAgICBkZXRlY3Rpb25SZXN1bHRDb2x1bW4uc2V0Q29kZXdvcmQoaW1hZ2VSb3csIGNvZGV3b3JkKTsKCSAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNTdGFydENvbHVtbiA9IHN0YXJ0Q29sdW1uOwoJICAgICAgICAgICAgICAgICAgICBtaW5Db2Rld29yZFdpZHRoID0gTWF0aC5taW4obWluQ29kZXdvcmRXaWR0aCwgY29kZXdvcmQuZ2V0V2lkdGgoKSk7CgkgICAgICAgICAgICAgICAgICAgIG1heENvZGV3b3JkV2lkdGggPSBNYXRoLm1heChtYXhDb2Rld29yZFdpZHRoLCBjb2Rld29yZC5nZXRXaWR0aCgpKTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIFBERjQxN1NjYW5uaW5nRGVjb2Rlci5jcmVhdGVEZWNvZGVyUmVzdWx0KGRldGVjdGlvblJlc3VsdCk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKgoJICAgICAqIEBwYXJhbSBsZWZ0Um93SW5kaWNhdG9yQ29sdW1uCgkgICAgICogQHBhcmFtIHJpZ2h0Um93SW5kaWNhdG9yQ29sdW1uCgkgICAgICoKCSAgICAgKiBAdGhyb3dzIE5vdEZvdW5kRXhjZXB0aW9uCgkgICAgICovCgkgICAgUERGNDE3U2Nhbm5pbmdEZWNvZGVyLm1lcmdlID0gZnVuY3Rpb24gKGxlZnRSb3dJbmRpY2F0b3JDb2x1bW4sIHJpZ2h0Um93SW5kaWNhdG9yQ29sdW1uKSB7CgkgICAgICAgIGlmIChsZWZ0Um93SW5kaWNhdG9yQ29sdW1uID09IG51bGwgJiYgcmlnaHRSb3dJbmRpY2F0b3JDb2x1bW4gPT0gbnVsbCkgewoJICAgICAgICAgICAgcmV0dXJuIG51bGw7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGJhcmNvZGVNZXRhZGF0YSA9IFBERjQxN1NjYW5uaW5nRGVjb2Rlci5nZXRCYXJjb2RlTWV0YWRhdGEobGVmdFJvd0luZGljYXRvckNvbHVtbiwgcmlnaHRSb3dJbmRpY2F0b3JDb2x1bW4pOwoJICAgICAgICBpZiAoYmFyY29kZU1ldGFkYXRhID09IG51bGwpIHsKCSAgICAgICAgICAgIHJldHVybiBudWxsOwoJICAgICAgICB9CgkgICAgICAgIHZhciBib3VuZGluZ0JveCA9IEJvdW5kaW5nQm94XzEuZGVmYXVsdC5tZXJnZShQREY0MTdTY2FubmluZ0RlY29kZXIuYWRqdXN0Qm91bmRpbmdCb3gobGVmdFJvd0luZGljYXRvckNvbHVtbiksIFBERjQxN1NjYW5uaW5nRGVjb2Rlci5hZGp1c3RCb3VuZGluZ0JveChyaWdodFJvd0luZGljYXRvckNvbHVtbikpOwoJICAgICAgICByZXR1cm4gbmV3IERldGVjdGlvblJlc3VsdF8xLmRlZmF1bHQoYmFyY29kZU1ldGFkYXRhLCBib3VuZGluZ0JveCk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKgoJICAgICAqIEBwYXJhbSByb3dJbmRpY2F0b3JDb2x1bW4KCSAgICAgKgoJICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb24KCSAgICAgKi8KCSAgICBQREY0MTdTY2FubmluZ0RlY29kZXIuYWRqdXN0Qm91bmRpbmdCb3ggPSBmdW5jdGlvbiAocm93SW5kaWNhdG9yQ29sdW1uKSB7CgkgICAgICAgIHZhciBlXzEsIF9hOwoJICAgICAgICBpZiAocm93SW5kaWNhdG9yQ29sdW1uID09IG51bGwpIHsKCSAgICAgICAgICAgIHJldHVybiBudWxsOwoJICAgICAgICB9CgkgICAgICAgIHZhciByb3dIZWlnaHRzID0gcm93SW5kaWNhdG9yQ29sdW1uLmdldFJvd0hlaWdodHMoKTsKCSAgICAgICAgaWYgKHJvd0hlaWdodHMgPT0gbnVsbCkgewoJICAgICAgICAgICAgcmV0dXJuIG51bGw7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIG1heFJvd0hlaWdodCA9IFBERjQxN1NjYW5uaW5nRGVjb2Rlci5nZXRNYXgocm93SGVpZ2h0cyk7CgkgICAgICAgIHZhciBtaXNzaW5nU3RhcnRSb3dzID0gMDsKCSAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgIGZvciAodmFyIHJvd0hlaWdodHNfMSA9IF9fdmFsdWVzKHJvd0hlaWdodHMpLCByb3dIZWlnaHRzXzFfMSA9IHJvd0hlaWdodHNfMS5uZXh0KCk7ICFyb3dIZWlnaHRzXzFfMS5kb25lOyByb3dIZWlnaHRzXzFfMSA9IHJvd0hlaWdodHNfMS5uZXh0KCkpIHsKCSAgICAgICAgICAgICAgICB2YXIgcm93SGVpZ2h0ID0gcm93SGVpZ2h0c18xXzEudmFsdWUgLyppbnQqLzsKCSAgICAgICAgICAgICAgICBtaXNzaW5nU3RhcnRSb3dzICs9IG1heFJvd0hlaWdodCAtIHJvd0hlaWdodDsKCSAgICAgICAgICAgICAgICBpZiAocm93SGVpZ2h0ID4gMCkgewoJICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH0KCSAgICAgICAgZmluYWxseSB7CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIGlmIChyb3dIZWlnaHRzXzFfMSAmJiAhcm93SGVpZ2h0c18xXzEuZG9uZSAmJiAoX2EgPSByb3dIZWlnaHRzXzEucmV0dXJuKSkgX2EuY2FsbChyb3dIZWlnaHRzXzEpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfQoJICAgICAgICB9CgkgICAgICAgIHZhciBjb2Rld29yZHMgPSByb3dJbmRpY2F0b3JDb2x1bW4uZ2V0Q29kZXdvcmRzKCk7CgkgICAgICAgIGZvciAodmFyIHJvdyAvKmludCovID0gMDsgbWlzc2luZ1N0YXJ0Um93cyA+IDAgJiYgY29kZXdvcmRzW3Jvd10gPT0gbnVsbDsgcm93KyspIHsKCSAgICAgICAgICAgIG1pc3NpbmdTdGFydFJvd3MtLTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgbWlzc2luZ0VuZFJvd3MgPSAwOwoJICAgICAgICBmb3IgKHZhciByb3cgLyppbnQqLyA9IHJvd0hlaWdodHMubGVuZ3RoIC0gMTsgcm93ID49IDA7IHJvdy0tKSB7CgkgICAgICAgICAgICBtaXNzaW5nRW5kUm93cyArPSBtYXhSb3dIZWlnaHQgLSByb3dIZWlnaHRzW3Jvd107CgkgICAgICAgICAgICBpZiAocm93SGVpZ2h0c1tyb3ddID4gMCkgewoJICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGZvciAodmFyIHJvdyAvKmludCovID0gY29kZXdvcmRzLmxlbmd0aCAtIDE7IG1pc3NpbmdFbmRSb3dzID4gMCAmJiBjb2Rld29yZHNbcm93XSA9PSBudWxsOyByb3ctLSkgewoJICAgICAgICAgICAgbWlzc2luZ0VuZFJvd3MtLTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gcm93SW5kaWNhdG9yQ29sdW1uLmdldEJvdW5kaW5nQm94KCkuYWRkTWlzc2luZ1Jvd3MobWlzc2luZ1N0YXJ0Um93cywgbWlzc2luZ0VuZFJvd3MsIHJvd0luZGljYXRvckNvbHVtbi5pc0xlZnQoKSk7CgkgICAgfTsKCSAgICBQREY0MTdTY2FubmluZ0RlY29kZXIuZ2V0TWF4ID0gZnVuY3Rpb24gKHZhbHVlcykgewoJICAgICAgICB2YXIgZV8yLCBfYTsKCSAgICAgICAgdmFyIG1heFZhbHVlID0gLTE7CgkgICAgICAgIHRyeSB7CgkgICAgICAgICAgICBmb3IgKHZhciB2YWx1ZXNfMSA9IF9fdmFsdWVzKHZhbHVlcyksIHZhbHVlc18xXzEgPSB2YWx1ZXNfMS5uZXh0KCk7ICF2YWx1ZXNfMV8xLmRvbmU7IHZhbHVlc18xXzEgPSB2YWx1ZXNfMS5uZXh0KCkpIHsKCSAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSB2YWx1ZXNfMV8xLnZhbHVlIC8qaW50Ki87CgkgICAgICAgICAgICAgICAgbWF4VmFsdWUgPSBNYXRoLm1heChtYXhWYWx1ZSwgdmFsdWUpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGNhdGNoIChlXzJfMSkgeyBlXzIgPSB7IGVycm9yOiBlXzJfMSB9OyB9CgkgICAgICAgIGZpbmFsbHkgewoJICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICBpZiAodmFsdWVzXzFfMSAmJiAhdmFsdWVzXzFfMS5kb25lICYmIChfYSA9IHZhbHVlc18xLnJldHVybikpIF9hLmNhbGwodmFsdWVzXzEpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzIpIHRocm93IGVfMi5lcnJvcjsgfQoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBtYXhWYWx1ZTsKCSAgICB9OwoJICAgIFBERjQxN1NjYW5uaW5nRGVjb2Rlci5nZXRCYXJjb2RlTWV0YWRhdGEgPSBmdW5jdGlvbiAobGVmdFJvd0luZGljYXRvckNvbHVtbiwgcmlnaHRSb3dJbmRpY2F0b3JDb2x1bW4pIHsKCSAgICAgICAgdmFyIGxlZnRCYXJjb2RlTWV0YWRhdGE7CgkgICAgICAgIGlmIChsZWZ0Um93SW5kaWNhdG9yQ29sdW1uID09IG51bGwgfHwKCSAgICAgICAgICAgIChsZWZ0QmFyY29kZU1ldGFkYXRhID0gbGVmdFJvd0luZGljYXRvckNvbHVtbi5nZXRCYXJjb2RlTWV0YWRhdGEoKSkgPT0gbnVsbCkgewoJICAgICAgICAgICAgcmV0dXJuIHJpZ2h0Um93SW5kaWNhdG9yQ29sdW1uID09IG51bGwgPyBudWxsIDogcmlnaHRSb3dJbmRpY2F0b3JDb2x1bW4uZ2V0QmFyY29kZU1ldGFkYXRhKCk7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIHJpZ2h0QmFyY29kZU1ldGFkYXRhOwoJICAgICAgICBpZiAocmlnaHRSb3dJbmRpY2F0b3JDb2x1bW4gPT0gbnVsbCB8fAoJICAgICAgICAgICAgKHJpZ2h0QmFyY29kZU1ldGFkYXRhID0gcmlnaHRSb3dJbmRpY2F0b3JDb2x1bW4uZ2V0QmFyY29kZU1ldGFkYXRhKCkpID09IG51bGwpIHsKCSAgICAgICAgICAgIHJldHVybiBsZWZ0QmFyY29kZU1ldGFkYXRhOwoJICAgICAgICB9CgkgICAgICAgIGlmIChsZWZ0QmFyY29kZU1ldGFkYXRhLmdldENvbHVtbkNvdW50KCkgIT09IHJpZ2h0QmFyY29kZU1ldGFkYXRhLmdldENvbHVtbkNvdW50KCkgJiYKCSAgICAgICAgICAgIGxlZnRCYXJjb2RlTWV0YWRhdGEuZ2V0RXJyb3JDb3JyZWN0aW9uTGV2ZWwoKSAhPT0gcmlnaHRCYXJjb2RlTWV0YWRhdGEuZ2V0RXJyb3JDb3JyZWN0aW9uTGV2ZWwoKSAmJgoJICAgICAgICAgICAgbGVmdEJhcmNvZGVNZXRhZGF0YS5nZXRSb3dDb3VudCgpICE9PSByaWdodEJhcmNvZGVNZXRhZGF0YS5nZXRSb3dDb3VudCgpKSB7CgkgICAgICAgICAgICByZXR1cm4gbnVsbDsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gbGVmdEJhcmNvZGVNZXRhZGF0YTsKCSAgICB9OwoJICAgIFBERjQxN1NjYW5uaW5nRGVjb2Rlci5nZXRSb3dJbmRpY2F0b3JDb2x1bW4gPSBmdW5jdGlvbiAoaW1hZ2UsIGJvdW5kaW5nQm94LCBzdGFydFBvaW50LCBsZWZ0VG9SaWdodCwgbWluQ29kZXdvcmRXaWR0aCwgbWF4Q29kZXdvcmRXaWR0aCkgewoJICAgICAgICB2YXIgcm93SW5kaWNhdG9yQ29sdW1uID0gbmV3IERldGVjdGlvblJlc3VsdFJvd0luZGljYXRvckNvbHVtbl8xLmRlZmF1bHQoYm91bmRpbmdCb3gsIGxlZnRUb1JpZ2h0KTsKCSAgICAgICAgZm9yICh2YXIgaSAvKmludCovID0gMDsgaSA8IDI7IGkrKykgewoJICAgICAgICAgICAgdmFyIGluY3JlbWVudCA9IGkgPT09IDAgPyAxIDogLTE7CgkgICAgICAgICAgICB2YXIgc3RhcnRDb2x1bW4gPSBNYXRoLnRydW5jKE1hdGgudHJ1bmMoc3RhcnRQb2ludC5nZXRYKCkpKTsKCSAgICAgICAgICAgIGZvciAodmFyIGltYWdlUm93IC8qaW50Ki8gPSBNYXRoLnRydW5jKE1hdGgudHJ1bmMoc3RhcnRQb2ludC5nZXRZKCkpKTsgaW1hZ2VSb3cgPD0gYm91bmRpbmdCb3guZ2V0TWF4WSgpICYmCgkgICAgICAgICAgICAgICAgaW1hZ2VSb3cgPj0gYm91bmRpbmdCb3guZ2V0TWluWSgpOyBpbWFnZVJvdyArPSBpbmNyZW1lbnQpIHsKCSAgICAgICAgICAgICAgICB2YXIgY29kZXdvcmQgPSBQREY0MTdTY2FubmluZ0RlY29kZXIuZGV0ZWN0Q29kZXdvcmQoaW1hZ2UsIDAsIGltYWdlLmdldFdpZHRoKCksIGxlZnRUb1JpZ2h0LCBzdGFydENvbHVtbiwgaW1hZ2VSb3csIG1pbkNvZGV3b3JkV2lkdGgsIG1heENvZGV3b3JkV2lkdGgpOwoJICAgICAgICAgICAgICAgIGlmIChjb2Rld29yZCAhPSBudWxsKSB7CgkgICAgICAgICAgICAgICAgICAgIHJvd0luZGljYXRvckNvbHVtbi5zZXRDb2Rld29yZChpbWFnZVJvdywgY29kZXdvcmQpOwoJICAgICAgICAgICAgICAgICAgICBpZiAobGVmdFRvUmlnaHQpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0Q29sdW1uID0gY29kZXdvcmQuZ2V0U3RhcnRYKCk7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBzdGFydENvbHVtbiA9IGNvZGV3b3JkLmdldEVuZFgoKTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gcm93SW5kaWNhdG9yQ29sdW1uOwoJICAgIH07CgkgICAgLyoqCgkgICAgICoKCSAgICAgKiBAcGFyYW0gZGV0ZWN0aW9uUmVzdWx0CgkgICAgICogQHBhcmFtIEJhcmNvZGVWYWx1ZQoJICAgICAqIEBwYXJhbSBwYXJhbTIKCSAgICAgKiBAcGFyYW0gcGFyYW0zCgkgICAgICogQHBhcmFtIGJhcmNvZGVNYXRyaXgKCSAgICAgKgoJICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb24KCSAgICAgKi8KCSAgICBQREY0MTdTY2FubmluZ0RlY29kZXIuYWRqdXN0Q29kZXdvcmRDb3VudCA9IGZ1bmN0aW9uIChkZXRlY3Rpb25SZXN1bHQsIGJhcmNvZGVNYXRyaXgpIHsKCSAgICAgICAgdmFyIGJhcmNvZGVNYXRyaXgwMSA9IGJhcmNvZGVNYXRyaXhbMF1bMV07CgkgICAgICAgIHZhciBudW1iZXJPZkNvZGV3b3JkcyA9IGJhcmNvZGVNYXRyaXgwMS5nZXRWYWx1ZSgpOwoJICAgICAgICB2YXIgY2FsY3VsYXRlZE51bWJlck9mQ29kZXdvcmRzID0gZGV0ZWN0aW9uUmVzdWx0LmdldEJhcmNvZGVDb2x1bW5Db3VudCgpICoKCSAgICAgICAgICAgIGRldGVjdGlvblJlc3VsdC5nZXRCYXJjb2RlUm93Q291bnQoKSAtCgkgICAgICAgICAgICBQREY0MTdTY2FubmluZ0RlY29kZXIuZ2V0TnVtYmVyT2ZFQ0NvZGVXb3JkcyhkZXRlY3Rpb25SZXN1bHQuZ2V0QmFyY29kZUVDTGV2ZWwoKSk7CgkgICAgICAgIGlmIChudW1iZXJPZkNvZGV3b3Jkcy5sZW5ndGggPT09IDApIHsKCSAgICAgICAgICAgIGlmIChjYWxjdWxhdGVkTnVtYmVyT2ZDb2Rld29yZHMgPCAxIHx8IGNhbGN1bGF0ZWROdW1iZXJPZkNvZGV3b3JkcyA+IFBERjQxN0NvbW1vbl8xLmRlZmF1bHQuTUFYX0NPREVXT1JEU19JTl9CQVJDT0RFKSB7CgkgICAgICAgICAgICAgICAgdGhyb3cgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0LmdldE5vdEZvdW5kSW5zdGFuY2UoKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGJhcmNvZGVNYXRyaXgwMS5zZXRWYWx1ZShjYWxjdWxhdGVkTnVtYmVyT2ZDb2Rld29yZHMpOwoJICAgICAgICB9CgkgICAgICAgIGVsc2UgaWYgKG51bWJlck9mQ29kZXdvcmRzWzBdICE9PSBjYWxjdWxhdGVkTnVtYmVyT2ZDb2Rld29yZHMpIHsKCSAgICAgICAgICAgIC8vIFRoZSBjYWxjdWxhdGVkIG9uZSBpcyBtb3JlIHJlbGlhYmxlIGFzIGl0IGlzIGRlcml2ZWQgZnJvbSB0aGUgcm93IGluZGljYXRvciBjb2x1bW5zCgkgICAgICAgICAgICBiYXJjb2RlTWF0cml4MDEuc2V0VmFsdWUoY2FsY3VsYXRlZE51bWJlck9mQ29kZXdvcmRzKTsKCSAgICAgICAgfQoJICAgIH07CgkgICAgLyoqCgkgICAgICoKCSAgICAgKiBAcGFyYW0gZGV0ZWN0aW9uUmVzdWx0CgkgICAgICoKCSAgICAgKiBAdGhyb3dzIEZvcm1hdEV4Y2VwdGlvbgoJICAgICAqIEB0aHJvd3MgQ2hlY2tzdW1FeGNlcHRpb24KCSAgICAgKiBAdGhyb3dzIE5vdEZvdW5kRXhjZXB0aW9uCgkgICAgICovCgkgICAgUERGNDE3U2Nhbm5pbmdEZWNvZGVyLmNyZWF0ZURlY29kZXJSZXN1bHQgPSBmdW5jdGlvbiAoZGV0ZWN0aW9uUmVzdWx0KSB7CgkgICAgICAgIHZhciBiYXJjb2RlTWF0cml4ID0gUERGNDE3U2Nhbm5pbmdEZWNvZGVyLmNyZWF0ZUJhcmNvZGVNYXRyaXgoZGV0ZWN0aW9uUmVzdWx0KTsKCSAgICAgICAgUERGNDE3U2Nhbm5pbmdEZWNvZGVyLmFkanVzdENvZGV3b3JkQ291bnQoZGV0ZWN0aW9uUmVzdWx0LCBiYXJjb2RlTWF0cml4KTsKCSAgICAgICAgdmFyIGVyYXN1cmVzIC8qQ29sbGVjdGlvbjxJbnRlZ2VyPiovID0gbmV3IEFycmF5KCk7CgkgICAgICAgIHZhciBjb2Rld29yZHMgPSBuZXcgSW50MzJBcnJheShkZXRlY3Rpb25SZXN1bHQuZ2V0QmFyY29kZVJvd0NvdW50KCkgKiBkZXRlY3Rpb25SZXN1bHQuZ2V0QmFyY29kZUNvbHVtbkNvdW50KCkpOwoJICAgICAgICB2YXIgYW1iaWd1b3VzSW5kZXhWYWx1ZXNMaXN0ID0gLypMaXN0PGludFtdPiovIFtdOwoJICAgICAgICB2YXIgYW1iaWd1b3VzSW5kZXhlc0xpc3QgPSAvKkNvbGxlY3Rpb248SW50ZWdlcj4qLyBuZXcgQXJyYXkoKTsKCSAgICAgICAgZm9yICh2YXIgcm93IC8qaW50Ki8gPSAwOyByb3cgPCBkZXRlY3Rpb25SZXN1bHQuZ2V0QmFyY29kZVJvd0NvdW50KCk7IHJvdysrKSB7CgkgICAgICAgICAgICBmb3IgKHZhciBjb2x1bW4gLyppbnQqLyA9IDA7IGNvbHVtbiA8IGRldGVjdGlvblJlc3VsdC5nZXRCYXJjb2RlQ29sdW1uQ291bnQoKTsgY29sdW1uKyspIHsKCSAgICAgICAgICAgICAgICB2YXIgdmFsdWVzID0gYmFyY29kZU1hdHJpeFtyb3ddW2NvbHVtbiArIDFdLmdldFZhbHVlKCk7CgkgICAgICAgICAgICAgICAgdmFyIGNvZGV3b3JkSW5kZXggPSByb3cgKiBkZXRlY3Rpb25SZXN1bHQuZ2V0QmFyY29kZUNvbHVtbkNvdW50KCkgKyBjb2x1bW47CgkgICAgICAgICAgICAgICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApIHsKCSAgICAgICAgICAgICAgICAgICAgZXJhc3VyZXMucHVzaChjb2Rld29yZEluZGV4KTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgZWxzZSBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMSkgewoJICAgICAgICAgICAgICAgICAgICBjb2Rld29yZHNbY29kZXdvcmRJbmRleF0gPSB2YWx1ZXNbMF07CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgICAgICBhbWJpZ3VvdXNJbmRleGVzTGlzdC5wdXNoKGNvZGV3b3JkSW5kZXgpOwoJICAgICAgICAgICAgICAgICAgICBhbWJpZ3VvdXNJbmRleFZhbHVlc0xpc3QucHVzaCh2YWx1ZXMpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICB2YXIgYW1iaWd1b3VzSW5kZXhWYWx1ZXMgPSBuZXcgQXJyYXkoYW1iaWd1b3VzSW5kZXhWYWx1ZXNMaXN0Lmxlbmd0aCk7CgkgICAgICAgIGZvciAodmFyIGkgLyppbnQqLyA9IDA7IGkgPCBhbWJpZ3VvdXNJbmRleFZhbHVlcy5sZW5ndGg7IGkrKykgewoJICAgICAgICAgICAgYW1iaWd1b3VzSW5kZXhWYWx1ZXNbaV0gPSBhbWJpZ3VvdXNJbmRleFZhbHVlc0xpc3RbaV07CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIFBERjQxN1NjYW5uaW5nRGVjb2Rlci5jcmVhdGVEZWNvZGVyUmVzdWx0RnJvbUFtYmlndW91c1ZhbHVlcyhkZXRlY3Rpb25SZXN1bHQuZ2V0QmFyY29kZUVDTGV2ZWwoKSwgY29kZXdvcmRzLCBQREY0MTdDb21tb25fMS5kZWZhdWx0LnRvSW50QXJyYXkoZXJhc3VyZXMpLCBQREY0MTdDb21tb25fMS5kZWZhdWx0LnRvSW50QXJyYXkoYW1iaWd1b3VzSW5kZXhlc0xpc3QpLCBhbWJpZ3VvdXNJbmRleFZhbHVlcyk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBUaGlzIG1ldGhvZCBkZWFscyB3aXRoIHRoZSBmYWN0LCB0aGF0IHRoZSBkZWNvZGluZyBwcm9jZXNzIGRvZXNuJ3QgYWx3YXlzIHlpZWxkIGEgc2luZ2xlIG1vc3QgbGlrZWx5IHZhbHVlLiBUaGUKCSAgICAgKiBjdXJyZW50IGVycm9yIGNvcnJlY3Rpb24gaW1wbGVtZW50YXRpb24gZG9lc24ndCBkZWFsIHdpdGggZXJhc3VyZXMgdmVyeSB3ZWxsLCBzbyBpdCdzIGJldHRlciB0byBwcm92aWRlIGEgdmFsdWUKCSAgICAgKiBmb3IgdGhlc2UgYW1iaWd1b3VzIGNvZGV3b3JkcyBpbnN0ZWFkIG9mIHRyZWF0aW5nIGl0IGFzIGFuIGVyYXN1cmUuIFRoZSBwcm9ibGVtIGlzIHRoYXQgd2UgZG9uJ3Qga25vdyB3aGljaCBvZgoJICAgICAqIHRoZSBhbWJpZ3VvdXMgdmFsdWVzIHRvIGNob29zZS4gV2UgdHJ5IGRlY29kZSB1c2luZyB0aGUgZmlyc3QgdmFsdWUsIGFuZCBpZiB0aGF0IGZhaWxzLCB3ZSB1c2UgYW5vdGhlciBvZiB0aGUKCSAgICAgKiBhbWJpZ3VvdXMgdmFsdWVzIGFuZCB0cnkgdG8gZGVjb2RlIGFnYWluLiBUaGlzIHVzdWFsbHkgb25seSBoYXBwZW5zIG9uIHZlcnkgaGFyZCB0byByZWFkIGFuZCBkZWNvZGUgYmFyY29kZXMsCgkgICAgICogc28gZGVjb2RpbmcgdGhlIG5vcm1hbCBiYXJjb2RlcyBpcyBub3QgYWZmZWN0ZWQgYnkgdGhpcy4KCSAgICAgKgoJICAgICAqIEBwYXJhbSBlcmFzdXJlQXJyYXkgY29udGFpbnMgdGhlIGluZGV4ZXMgb2YgZXJhc3VyZXMKCSAgICAgKiBAcGFyYW0gYW1iaWd1b3VzSW5kZXhlcyBhcnJheSB3aXRoIHRoZSBpbmRleGVzIHRoYXQgaGF2ZSBtb3JlIHRoYW4gb25lIG1vc3QgbGlrZWx5IHZhbHVlCgkgICAgICogQHBhcmFtIGFtYmlndW91c0luZGV4VmFsdWVzIHR3byBkaW1lbnNpb25hbCBhcnJheSB0aGF0IGNvbnRhaW5zIHRoZSBhbWJpZ3VvdXMgdmFsdWVzLiBUaGUgZmlyc3QgZGltZW5zaW9uIG11c3QKCSAgICAgKiBiZSB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIGFtYmlndW91c0luZGV4ZXMgYXJyYXkKCSAgICAgKgoJICAgICAqIEB0aHJvd3MgRm9ybWF0RXhjZXB0aW9uCgkgICAgICogQHRocm93cyBDaGVja3N1bUV4Y2VwdGlvbgoJICAgICAqLwoJICAgIFBERjQxN1NjYW5uaW5nRGVjb2Rlci5jcmVhdGVEZWNvZGVyUmVzdWx0RnJvbUFtYmlndW91c1ZhbHVlcyA9IGZ1bmN0aW9uIChlY0xldmVsLCBjb2Rld29yZHMsIGVyYXN1cmVBcnJheSwgYW1iaWd1b3VzSW5kZXhlcywgYW1iaWd1b3VzSW5kZXhWYWx1ZXMpIHsKCSAgICAgICAgdmFyIGFtYmlndW91c0luZGV4Q291bnQgPSBuZXcgSW50MzJBcnJheShhbWJpZ3VvdXNJbmRleGVzLmxlbmd0aCk7CgkgICAgICAgIHZhciB0cmllcyA9IDEwMDsKCSAgICAgICAgd2hpbGUgKHRyaWVzLS0gPiAwKSB7CgkgICAgICAgICAgICBmb3IgKHZhciBpIC8qaW50Ki8gPSAwOyBpIDwgYW1iaWd1b3VzSW5kZXhDb3VudC5sZW5ndGg7IGkrKykgewoJICAgICAgICAgICAgICAgIGNvZGV3b3Jkc1thbWJpZ3VvdXNJbmRleGVzW2ldXSA9IGFtYmlndW91c0luZGV4VmFsdWVzW2ldW2FtYmlndW91c0luZGV4Q291bnRbaV1dOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICByZXR1cm4gUERGNDE3U2Nhbm5pbmdEZWNvZGVyLmRlY29kZUNvZGV3b3Jkcyhjb2Rld29yZHMsIGVjTGV2ZWwsIGVyYXN1cmVBcnJheSk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBjYXRjaCAoZXJyKSB7CgkgICAgICAgICAgICAgICAgdmFyIGlnbm9yZWQgPSBlcnIgaW5zdGFuY2VvZiBDaGVja3N1bUV4Y2VwdGlvbl8xLmRlZmF1bHQ7CgkgICAgICAgICAgICAgICAgaWYgKCFpZ25vcmVkKSB7CgkgICAgICAgICAgICAgICAgICAgIHRocm93IGVycjsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBpZiAoYW1iaWd1b3VzSW5kZXhDb3VudC5sZW5ndGggPT09IDApIHsKCSAgICAgICAgICAgICAgICB0aHJvdyBDaGVja3N1bUV4Y2VwdGlvbl8xLmRlZmF1bHQuZ2V0Q2hlY2tzdW1JbnN0YW5jZSgpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZm9yICh2YXIgaSAvKmludCovID0gMDsgaSA8IGFtYmlndW91c0luZGV4Q291bnQubGVuZ3RoOyBpKyspIHsKCSAgICAgICAgICAgICAgICBpZiAoYW1iaWd1b3VzSW5kZXhDb3VudFtpXSA8IGFtYmlndW91c0luZGV4VmFsdWVzW2ldLmxlbmd0aCAtIDEpIHsKCSAgICAgICAgICAgICAgICAgICAgYW1iaWd1b3VzSW5kZXhDb3VudFtpXSsrOwoJICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgICAgIGFtYmlndW91c0luZGV4Q291bnRbaV0gPSAwOwoJICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gYW1iaWd1b3VzSW5kZXhDb3VudC5sZW5ndGggLSAxKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBDaGVja3N1bUV4Y2VwdGlvbl8xLmRlZmF1bHQuZ2V0Q2hlY2tzdW1JbnN0YW5jZSgpOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHRocm93IENoZWNrc3VtRXhjZXB0aW9uXzEuZGVmYXVsdC5nZXRDaGVja3N1bUluc3RhbmNlKCk7CgkgICAgfTsKCSAgICBQREY0MTdTY2FubmluZ0RlY29kZXIuY3JlYXRlQmFyY29kZU1hdHJpeCA9IGZ1bmN0aW9uIChkZXRlY3Rpb25SZXN1bHQpIHsKCSAgICAgICAgdmFyIGVfMywgX2EsIGVfNCwgX2I7CgkgICAgICAgIC8vIGxldCBiYXJjb2RlTWF0cml4OiBCYXJjb2RlVmFsdWVbXVtdID0KCSAgICAgICAgLy8gbmV3IEJhcmNvZGVWYWx1ZVtkZXRlY3Rpb25SZXN1bHQuZ2V0QmFyY29kZVJvd0NvdW50KCldW2RldGVjdGlvblJlc3VsdC5nZXRCYXJjb2RlQ29sdW1uQ291bnQoKSArIDJdOwoJICAgICAgICB2YXIgYmFyY29kZU1hdHJpeCA9IEFycmF5LmZyb20oeyBsZW5ndGg6IGRldGVjdGlvblJlc3VsdC5nZXRCYXJjb2RlUm93Q291bnQoKSB9LCBmdW5jdGlvbiAoKSB7IHJldHVybiBuZXcgQXJyYXkoZGV0ZWN0aW9uUmVzdWx0LmdldEJhcmNvZGVDb2x1bW5Db3VudCgpICsgMik7IH0pOwoJICAgICAgICBmb3IgKHZhciByb3cgLyppbnQqLyA9IDA7IHJvdyA8IGJhcmNvZGVNYXRyaXgubGVuZ3RoOyByb3crKykgewoJICAgICAgICAgICAgZm9yICh2YXIgY29sdW1uXzEgLyppbnQqLyA9IDA7IGNvbHVtbl8xIDwgYmFyY29kZU1hdHJpeFtyb3ddLmxlbmd0aDsgY29sdW1uXzErKykgewoJICAgICAgICAgICAgICAgIGJhcmNvZGVNYXRyaXhbcm93XVtjb2x1bW5fMV0gPSBuZXcgQmFyY29kZVZhbHVlXzEuZGVmYXVsdCgpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHZhciBjb2x1bW4gPSAwOwoJICAgICAgICB0cnkgewoJICAgICAgICAgICAgZm9yICh2YXIgX2MgPSBfX3ZhbHVlcyhkZXRlY3Rpb25SZXN1bHQuZ2V0RGV0ZWN0aW9uUmVzdWx0Q29sdW1ucygpKSwgX2QgPSBfYy5uZXh0KCk7ICFfZC5kb25lOyBfZCA9IF9jLm5leHQoKSkgewoJICAgICAgICAgICAgICAgIHZhciBkZXRlY3Rpb25SZXN1bHRDb2x1bW4gPSBfZC52YWx1ZSAvKkRldGVjdGlvblJlc3VsdENvbHVtbiovOwoJICAgICAgICAgICAgICAgIGlmIChkZXRlY3Rpb25SZXN1bHRDb2x1bW4gIT0gbnVsbCkgewoJICAgICAgICAgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgX2UgPSAoZV80ID0gdm9pZCAwLCBfX3ZhbHVlcyhkZXRlY3Rpb25SZXN1bHRDb2x1bW4uZ2V0Q29kZXdvcmRzKCkpKSwgX2YgPSBfZS5uZXh0KCk7ICFfZi5kb25lOyBfZiA9IF9lLm5leHQoKSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb2Rld29yZCA9IF9mLnZhbHVlIC8qQ29kZXdvcmQqLzsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29kZXdvcmQgIT0gbnVsbCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcm93TnVtYmVyID0gY29kZXdvcmQuZ2V0Um93TnVtYmVyKCk7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyb3dOdW1iZXIgPj0gMCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJvd051bWJlciA+PSBiYXJjb2RlTWF0cml4Lmxlbmd0aCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgbW9yZSByb3dzIHRoYW4gdGhlIGJhcmNvZGUgbWV0YWRhdGEgYWxsb3dzIGZvciwgaWdub3JlIHRoZW0uCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXJjb2RlTWF0cml4W3Jvd051bWJlcl1bY29sdW1uXS5zZXRWYWx1ZShjb2Rld29yZC5nZXRWYWx1ZSgpKTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZV80XzEpIHsgZV80ID0geyBlcnJvcjogZV80XzEgfTsgfQoJICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9mICYmICFfZi5kb25lICYmIChfYiA9IF9lLnJldHVybikpIF9iLmNhbGwoX2UpOwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzQpIHRocm93IGVfNC5lcnJvcjsgfQoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGNvbHVtbisrOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGNhdGNoIChlXzNfMSkgeyBlXzMgPSB7IGVycm9yOiBlXzNfMSB9OyB9CgkgICAgICAgIGZpbmFsbHkgewoJICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICBpZiAoX2QgJiYgIV9kLmRvbmUgJiYgKF9hID0gX2MucmV0dXJuKSkgX2EuY2FsbChfYyk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMykgdGhyb3cgZV8zLmVycm9yOyB9CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIGJhcmNvZGVNYXRyaXg7CgkgICAgfTsKCSAgICBQREY0MTdTY2FubmluZ0RlY29kZXIuaXNWYWxpZEJhcmNvZGVDb2x1bW4gPSBmdW5jdGlvbiAoZGV0ZWN0aW9uUmVzdWx0LCBiYXJjb2RlQ29sdW1uKSB7CgkgICAgICAgIHJldHVybiBiYXJjb2RlQ29sdW1uID49IDAgJiYgYmFyY29kZUNvbHVtbiA8PSBkZXRlY3Rpb25SZXN1bHQuZ2V0QmFyY29kZUNvbHVtbkNvdW50KCkgKyAxOwoJICAgIH07CgkgICAgUERGNDE3U2Nhbm5pbmdEZWNvZGVyLmdldFN0YXJ0Q29sdW1uID0gZnVuY3Rpb24gKGRldGVjdGlvblJlc3VsdCwgYmFyY29kZUNvbHVtbiwgaW1hZ2VSb3csIGxlZnRUb1JpZ2h0KSB7CgkgICAgICAgIHZhciBlXzUsIF9hOwoJICAgICAgICB2YXIgb2Zmc2V0ID0gbGVmdFRvUmlnaHQgPyAxIDogLTE7CgkgICAgICAgIHZhciBjb2Rld29yZCA9IG51bGw7CgkgICAgICAgIGlmIChQREY0MTdTY2FubmluZ0RlY29kZXIuaXNWYWxpZEJhcmNvZGVDb2x1bW4oZGV0ZWN0aW9uUmVzdWx0LCBiYXJjb2RlQ29sdW1uIC0gb2Zmc2V0KSkgewoJICAgICAgICAgICAgY29kZXdvcmQgPSBkZXRlY3Rpb25SZXN1bHQuZ2V0RGV0ZWN0aW9uUmVzdWx0Q29sdW1uKGJhcmNvZGVDb2x1bW4gLSBvZmZzZXQpLmdldENvZGV3b3JkKGltYWdlUm93KTsKCSAgICAgICAgfQoJICAgICAgICBpZiAoY29kZXdvcmQgIT0gbnVsbCkgewoJICAgICAgICAgICAgcmV0dXJuIGxlZnRUb1JpZ2h0ID8gY29kZXdvcmQuZ2V0RW5kWCgpIDogY29kZXdvcmQuZ2V0U3RhcnRYKCk7CgkgICAgICAgIH0KCSAgICAgICAgY29kZXdvcmQgPSBkZXRlY3Rpb25SZXN1bHQuZ2V0RGV0ZWN0aW9uUmVzdWx0Q29sdW1uKGJhcmNvZGVDb2x1bW4pLmdldENvZGV3b3JkTmVhcmJ5KGltYWdlUm93KTsKCSAgICAgICAgaWYgKGNvZGV3b3JkICE9IG51bGwpIHsKCSAgICAgICAgICAgIHJldHVybiBsZWZ0VG9SaWdodCA/IGNvZGV3b3JkLmdldFN0YXJ0WCgpIDogY29kZXdvcmQuZ2V0RW5kWCgpOwoJICAgICAgICB9CgkgICAgICAgIGlmIChQREY0MTdTY2FubmluZ0RlY29kZXIuaXNWYWxpZEJhcmNvZGVDb2x1bW4oZGV0ZWN0aW9uUmVzdWx0LCBiYXJjb2RlQ29sdW1uIC0gb2Zmc2V0KSkgewoJICAgICAgICAgICAgY29kZXdvcmQgPSBkZXRlY3Rpb25SZXN1bHQuZ2V0RGV0ZWN0aW9uUmVzdWx0Q29sdW1uKGJhcmNvZGVDb2x1bW4gLSBvZmZzZXQpLmdldENvZGV3b3JkTmVhcmJ5KGltYWdlUm93KTsKCSAgICAgICAgfQoJICAgICAgICBpZiAoY29kZXdvcmQgIT0gbnVsbCkgewoJICAgICAgICAgICAgcmV0dXJuIGxlZnRUb1JpZ2h0ID8gY29kZXdvcmQuZ2V0RW5kWCgpIDogY29kZXdvcmQuZ2V0U3RhcnRYKCk7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIHNraXBwZWRDb2x1bW5zID0gMDsKCSAgICAgICAgd2hpbGUgKFBERjQxN1NjYW5uaW5nRGVjb2Rlci5pc1ZhbGlkQmFyY29kZUNvbHVtbihkZXRlY3Rpb25SZXN1bHQsIGJhcmNvZGVDb2x1bW4gLSBvZmZzZXQpKSB7CgkgICAgICAgICAgICBiYXJjb2RlQ29sdW1uIC09IG9mZnNldDsKCSAgICAgICAgICAgIHRyeSB7CgkgICAgICAgICAgICAgICAgZm9yICh2YXIgX2IgPSAoZV81ID0gdm9pZCAwLCBfX3ZhbHVlcyhkZXRlY3Rpb25SZXN1bHQuZ2V0RGV0ZWN0aW9uUmVzdWx0Q29sdW1uKGJhcmNvZGVDb2x1bW4pLmdldENvZGV3b3JkcygpKSksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHsKCSAgICAgICAgICAgICAgICAgICAgdmFyIHByZXZpb3VzUm93Q29kZXdvcmQgPSBfYy52YWx1ZSAvKkNvZGV3b3JkKi87CgkgICAgICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c1Jvd0NvZGV3b3JkICE9IG51bGwpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAobGVmdFRvUmlnaHQgPyBwcmV2aW91c1Jvd0NvZGV3b3JkLmdldEVuZFgoKSA6IHByZXZpb3VzUm93Q29kZXdvcmQuZ2V0U3RhcnRYKCkpICsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKgoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwcGVkQ29sdW1ucyAqCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmV2aW91c1Jvd0NvZGV3b3JkLmdldEVuZFgoKSAtIHByZXZpb3VzUm93Q29kZXdvcmQuZ2V0U3RhcnRYKCkpOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgY2F0Y2ggKGVfNV8xKSB7IGVfNSA9IHsgZXJyb3I6IGVfNV8xIH07IH0KCSAgICAgICAgICAgIGZpbmFsbHkgewoJICAgICAgICAgICAgICAgIHRyeSB7CgkgICAgICAgICAgICAgICAgICAgIGlmIChfYyAmJiAhX2MuZG9uZSAmJiAoX2EgPSBfYi5yZXR1cm4pKSBfYS5jYWxsKF9iKTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzUpIHRocm93IGVfNS5lcnJvcjsgfQoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgc2tpcHBlZENvbHVtbnMrKzsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gbGVmdFRvUmlnaHQgPyBkZXRlY3Rpb25SZXN1bHQuZ2V0Qm91bmRpbmdCb3goKS5nZXRNaW5YKCkgOiBkZXRlY3Rpb25SZXN1bHQuZ2V0Qm91bmRpbmdCb3goKS5nZXRNYXhYKCk7CgkgICAgfTsKCSAgICBQREY0MTdTY2FubmluZ0RlY29kZXIuZGV0ZWN0Q29kZXdvcmQgPSBmdW5jdGlvbiAoaW1hZ2UsIG1pbkNvbHVtbiwgbWF4Q29sdW1uLCBsZWZ0VG9SaWdodCwgc3RhcnRDb2x1bW4sIGltYWdlUm93LCBtaW5Db2Rld29yZFdpZHRoLCBtYXhDb2Rld29yZFdpZHRoKSB7CgkgICAgICAgIHN0YXJ0Q29sdW1uID0gUERGNDE3U2Nhbm5pbmdEZWNvZGVyLmFkanVzdENvZGV3b3JkU3RhcnRDb2x1bW4oaW1hZ2UsIG1pbkNvbHVtbiwgbWF4Q29sdW1uLCBsZWZ0VG9SaWdodCwgc3RhcnRDb2x1bW4sIGltYWdlUm93KTsKCSAgICAgICAgLy8gd2UgdXN1YWxseSBrbm93IGZhaXJseSBleGFjdCBub3cgaG93IGxvbmcgYSBjb2Rld29yZCBpcy4gV2Ugc2hvdWxkIHByb3ZpZGUgbWluaW11bSBhbmQgbWF4aW11bSBleHBlY3RlZCBsZW5ndGgKCSAgICAgICAgLy8gYW5kIHRyeSB0byBhZGp1c3QgdGhlIHJlYWQgcGl4ZWxzLCBlLmcuIHJlbW92ZSBzaW5nbGUgcGl4ZWwgZXJyb3JzIG9yIHRyeSB0byBjdXQgb2ZmIGV4Y2VlZGluZyBwaXhlbHMuCgkgICAgICAgIC8vIG1pbiBhbmQgbWF4Q29kZXdvcmRXaWR0aCBzaG91bGQgbm90IGJlIHVzZWQgYXMgdGhleSBhcmUgY2FsY3VsYXRlZCBmb3IgdGhlIHdob2xlIGJhcmNvZGUgYW4gY2FuIGJlIGluYWNjdXJhdGUKCSAgICAgICAgLy8gZm9yIHRoZSBjdXJyZW50IHBvc2l0aW9uCgkgICAgICAgIHZhciBtb2R1bGVCaXRDb3VudCA9IFBERjQxN1NjYW5uaW5nRGVjb2Rlci5nZXRNb2R1bGVCaXRDb3VudChpbWFnZSwgbWluQ29sdW1uLCBtYXhDb2x1bW4sIGxlZnRUb1JpZ2h0LCBzdGFydENvbHVtbiwgaW1hZ2VSb3cpOwoJICAgICAgICBpZiAobW9kdWxlQml0Q291bnQgPT0gbnVsbCkgewoJICAgICAgICAgICAgcmV0dXJuIG51bGw7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGVuZENvbHVtbjsKCSAgICAgICAgdmFyIGNvZGV3b3JkQml0Q291bnQgPSBNYXRoVXRpbHNfMS5kZWZhdWx0LnN1bShtb2R1bGVCaXRDb3VudCk7CgkgICAgICAgIGlmIChsZWZ0VG9SaWdodCkgewoJICAgICAgICAgICAgZW5kQ29sdW1uID0gc3RhcnRDb2x1bW4gKyBjb2Rld29yZEJpdENvdW50OwoJICAgICAgICB9CgkgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgZm9yICh2YXIgaSAvKmludCovID0gMDsgaSA8IG1vZHVsZUJpdENvdW50Lmxlbmd0aCAvIDI7IGkrKykgewoJICAgICAgICAgICAgICAgIHZhciB0bXBDb3VudCA9IG1vZHVsZUJpdENvdW50W2ldOwoJICAgICAgICAgICAgICAgIG1vZHVsZUJpdENvdW50W2ldID0gbW9kdWxlQml0Q291bnRbbW9kdWxlQml0Q291bnQubGVuZ3RoIC0gMSAtIGldOwoJICAgICAgICAgICAgICAgIG1vZHVsZUJpdENvdW50W21vZHVsZUJpdENvdW50Lmxlbmd0aCAtIDEgLSBpXSA9IHRtcENvdW50OwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZW5kQ29sdW1uID0gc3RhcnRDb2x1bW47CgkgICAgICAgICAgICBzdGFydENvbHVtbiA9IGVuZENvbHVtbiAtIGNvZGV3b3JkQml0Q291bnQ7CgkgICAgICAgIH0KCSAgICAgICAgLy8gVE9ETyBpbXBsZW1lbnQgY2hlY2sgZm9yIHdpZHRoIGFuZCBjb3JyZWN0aW9uIG9mIGJsYWNrIGFuZCB3aGl0ZSBiYXJzCgkgICAgICAgIC8vIHVzZSBzdGFydCAoYW5kIG1heWJlIHN0b3AgcGF0dGVybikgdG8gZGV0ZXJtaW5lIGlmIGJsYWNrIGJhcnMgYXJlIHdpZGVyIHRoYW4gd2hpdGUgYmFycy4gSWYgc28sIGFkanVzdC4KCSAgICAgICAgLy8gc2hvdWxkIHByb2JhYmx5IGRvbmUgb25seSBmb3IgY29kZXdvcmRzIHdpdGggYSBsb3QgbW9yZSB0aGFuIDE3IGJpdHMuCgkgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgZml4ZXMgMTAtMS5wbmcsIHdoaWNoIGhhcyB3aWRlIGJsYWNrIGJhcnMgYW5kIHNtYWxsIHdoaXRlIGJhcnMKCSAgICAgICAgLy8gICAgZm9yIChsZXQgaSAvKmludCovID0gMDsgaSA8IG1vZHVsZUJpdENvdW50Lmxlbmd0aDsgaSsrKSB7CgkgICAgICAgIC8vICAgICAgaWYgKGkgJSAyID09PSAwKSB7CgkgICAgICAgIC8vICAgICAgICBtb2R1bGVCaXRDb3VudFtpXS0tOwoJICAgICAgICAvLyAgICAgIH0gZWxzZSB7CgkgICAgICAgIC8vICAgICAgICBtb2R1bGVCaXRDb3VudFtpXSsrOwoJICAgICAgICAvLyAgICAgIH0KCSAgICAgICAgLy8gICAgfQoJICAgICAgICAvLyBXZSBjb3VsZCBhbHNvIHVzZSB0aGUgd2lkdGggb2Ygc3Vycm91bmRpbmcgY29kZXdvcmRzIGZvciBtb3JlIGFjY3VyYXRlIHJlc3VsdHMsIGJ1dCB0aGlzIHNlZW1zCgkgICAgICAgIC8vIHN1ZmZpY2llbnQgZm9yIG5vdwoJICAgICAgICBpZiAoIVBERjQxN1NjYW5uaW5nRGVjb2Rlci5jaGVja0NvZGV3b3JkU2tldyhjb2Rld29yZEJpdENvdW50LCBtaW5Db2Rld29yZFdpZHRoLCBtYXhDb2Rld29yZFdpZHRoKSkgewoJICAgICAgICAgICAgLy8gV2UgY291bGQgdHJ5IHRvIHVzZSB0aGUgc3RhcnRYIGFuZCBlbmRYIHBvc2l0aW9uIG9mIHRoZSBjb2Rld29yZCBpbiB0aGUgc2FtZSBjb2x1bW4gaW4gdGhlIHByZXZpb3VzIHJvdywKCSAgICAgICAgICAgIC8vIGNyZWF0ZSB0aGUgYml0IGNvdW50IGZyb20gaXQgYW5kIG5vcm1hbGl6ZSBpdCB0byA4LiBUaGlzIHdvdWxkIGhlbHAgd2l0aCBzaW5nbGUgcGl4ZWwgZXJyb3JzLgoJICAgICAgICAgICAgcmV0dXJuIG51bGw7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGRlY29kZWRWYWx1ZSA9IFBERjQxN0NvZGV3b3JkRGVjb2Rlcl8xLmRlZmF1bHQuZ2V0RGVjb2RlZFZhbHVlKG1vZHVsZUJpdENvdW50KTsKCSAgICAgICAgdmFyIGNvZGV3b3JkID0gUERGNDE3Q29tbW9uXzEuZGVmYXVsdC5nZXRDb2Rld29yZChkZWNvZGVkVmFsdWUpOwoJICAgICAgICBpZiAoY29kZXdvcmQgPT09IC0xKSB7CgkgICAgICAgICAgICByZXR1cm4gbnVsbDsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gbmV3IENvZGV3b3JkXzEuZGVmYXVsdChzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBQREY0MTdTY2FubmluZ0RlY29kZXIuZ2V0Q29kZXdvcmRCdWNrZXROdW1iZXIoZGVjb2RlZFZhbHVlKSwgY29kZXdvcmQpOwoJICAgIH07CgkgICAgUERGNDE3U2Nhbm5pbmdEZWNvZGVyLmdldE1vZHVsZUJpdENvdW50ID0gZnVuY3Rpb24gKGltYWdlLCBtaW5Db2x1bW4sIG1heENvbHVtbiwgbGVmdFRvUmlnaHQsIHN0YXJ0Q29sdW1uLCBpbWFnZVJvdykgewoJICAgICAgICB2YXIgaW1hZ2VDb2x1bW4gPSBzdGFydENvbHVtbjsKCSAgICAgICAgdmFyIG1vZHVsZUJpdENvdW50ID0gbmV3IEludDMyQXJyYXkoOCk7CgkgICAgICAgIHZhciBtb2R1bGVOdW1iZXIgPSAwOwoJICAgICAgICB2YXIgaW5jcmVtZW50ID0gbGVmdFRvUmlnaHQgPyAxIDogLTE7CgkgICAgICAgIHZhciBwcmV2aW91c1BpeGVsVmFsdWUgPSBsZWZ0VG9SaWdodDsKCSAgICAgICAgd2hpbGUgKChsZWZ0VG9SaWdodCA/IGltYWdlQ29sdW1uIDwgbWF4Q29sdW1uIDogaW1hZ2VDb2x1bW4gPj0gbWluQ29sdW1uKSAmJgoJICAgICAgICAgICAgbW9kdWxlTnVtYmVyIDwgbW9kdWxlQml0Q291bnQubGVuZ3RoKSB7CgkgICAgICAgICAgICBpZiAoaW1hZ2UuZ2V0KGltYWdlQ29sdW1uLCBpbWFnZVJvdykgPT09IHByZXZpb3VzUGl4ZWxWYWx1ZSkgewoJICAgICAgICAgICAgICAgIG1vZHVsZUJpdENvdW50W21vZHVsZU51bWJlcl0rKzsKCSAgICAgICAgICAgICAgICBpbWFnZUNvbHVtbiArPSBpbmNyZW1lbnQ7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICBtb2R1bGVOdW1iZXIrKzsKCSAgICAgICAgICAgICAgICBwcmV2aW91c1BpeGVsVmFsdWUgPSAhcHJldmlvdXNQaXhlbFZhbHVlOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGlmIChtb2R1bGVOdW1iZXIgPT09IG1vZHVsZUJpdENvdW50Lmxlbmd0aCB8fAoJICAgICAgICAgICAgKChpbWFnZUNvbHVtbiA9PT0gKGxlZnRUb1JpZ2h0ID8gbWF4Q29sdW1uIDogbWluQ29sdW1uKSkgJiYKCSAgICAgICAgICAgICAgICBtb2R1bGVOdW1iZXIgPT09IG1vZHVsZUJpdENvdW50Lmxlbmd0aCAtIDEpKSB7CgkgICAgICAgICAgICByZXR1cm4gbW9kdWxlQml0Q291bnQ7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIG51bGw7CgkgICAgfTsKCSAgICBQREY0MTdTY2FubmluZ0RlY29kZXIuZ2V0TnVtYmVyT2ZFQ0NvZGVXb3JkcyA9IGZ1bmN0aW9uIChiYXJjb2RlRUNMZXZlbCkgewoJICAgICAgICByZXR1cm4gMiA8PCBiYXJjb2RlRUNMZXZlbDsKCSAgICB9OwoJICAgIFBERjQxN1NjYW5uaW5nRGVjb2Rlci5hZGp1c3RDb2Rld29yZFN0YXJ0Q29sdW1uID0gZnVuY3Rpb24gKGltYWdlLCBtaW5Db2x1bW4sIG1heENvbHVtbiwgbGVmdFRvUmlnaHQsIGNvZGV3b3JkU3RhcnRDb2x1bW4sIGltYWdlUm93KSB7CgkgICAgICAgIHZhciBjb3JyZWN0ZWRTdGFydENvbHVtbiA9IGNvZGV3b3JkU3RhcnRDb2x1bW47CgkgICAgICAgIHZhciBpbmNyZW1lbnQgPSBsZWZ0VG9SaWdodCA/IC0xIDogMTsKCSAgICAgICAgLy8gdGhlcmUgc2hvdWxkIGJlIG5vIGJsYWNrIHBpeGVscyBiZWZvcmUgdGhlIHN0YXJ0IGNvbHVtbi4gSWYgdGhlcmUgYXJlLCB0aGVuIHdlIG5lZWQgdG8gc3RhcnQgZWFybGllci4KCSAgICAgICAgZm9yICh2YXIgaSAvKmludCovID0gMDsgaSA8IDI7IGkrKykgewoJICAgICAgICAgICAgd2hpbGUgKChsZWZ0VG9SaWdodCA/IGNvcnJlY3RlZFN0YXJ0Q29sdW1uID49IG1pbkNvbHVtbiA6IGNvcnJlY3RlZFN0YXJ0Q29sdW1uIDwgbWF4Q29sdW1uKSAmJgoJICAgICAgICAgICAgICAgIGxlZnRUb1JpZ2h0ID09PSBpbWFnZS5nZXQoY29ycmVjdGVkU3RhcnRDb2x1bW4sIGltYWdlUm93KSkgewoJICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhjb2Rld29yZFN0YXJ0Q29sdW1uIC0gY29ycmVjdGVkU3RhcnRDb2x1bW4pID4gUERGNDE3U2Nhbm5pbmdEZWNvZGVyLkNPREVXT1JEX1NLRVdfU0laRSkgewoJICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29kZXdvcmRTdGFydENvbHVtbjsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgY29ycmVjdGVkU3RhcnRDb2x1bW4gKz0gaW5jcmVtZW50OwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgaW5jcmVtZW50ID0gLWluY3JlbWVudDsKCSAgICAgICAgICAgIGxlZnRUb1JpZ2h0ID0gIWxlZnRUb1JpZ2h0OwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBjb3JyZWN0ZWRTdGFydENvbHVtbjsKCSAgICB9OwoJICAgIFBERjQxN1NjYW5uaW5nRGVjb2Rlci5jaGVja0NvZGV3b3JkU2tldyA9IGZ1bmN0aW9uIChjb2Rld29yZFNpemUsIG1pbkNvZGV3b3JkV2lkdGgsIG1heENvZGV3b3JkV2lkdGgpIHsKCSAgICAgICAgcmV0dXJuIG1pbkNvZGV3b3JkV2lkdGggLSBQREY0MTdTY2FubmluZ0RlY29kZXIuQ09ERVdPUkRfU0tFV19TSVpFIDw9IGNvZGV3b3JkU2l6ZSAmJgoJICAgICAgICAgICAgY29kZXdvcmRTaXplIDw9IG1heENvZGV3b3JkV2lkdGggKyBQREY0MTdTY2FubmluZ0RlY29kZXIuQ09ERVdPUkRfU0tFV19TSVpFOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQHRocm93cyBGb3JtYXRFeGNlcHRpb24sCgkgICAgICogQHRocm93cyBDaGVja3N1bUV4Y2VwdGlvbgoJICAgICAqLwoJICAgIFBERjQxN1NjYW5uaW5nRGVjb2Rlci5kZWNvZGVDb2Rld29yZHMgPSBmdW5jdGlvbiAoY29kZXdvcmRzLCBlY0xldmVsLCBlcmFzdXJlcykgewoJICAgICAgICBpZiAoY29kZXdvcmRzLmxlbmd0aCA9PT0gMCkgewoJICAgICAgICAgICAgdGhyb3cgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdC5nZXRGb3JtYXRJbnN0YW5jZSgpOwoJICAgICAgICB9CgkgICAgICAgIHZhciBudW1FQ0NvZGV3b3JkcyA9IDEgPDwgKGVjTGV2ZWwgKyAxKTsKCSAgICAgICAgdmFyIGNvcnJlY3RlZEVycm9yc0NvdW50ID0gUERGNDE3U2Nhbm5pbmdEZWNvZGVyLmNvcnJlY3RFcnJvcnMoY29kZXdvcmRzLCBlcmFzdXJlcywgbnVtRUNDb2Rld29yZHMpOwoJICAgICAgICBQREY0MTdTY2FubmluZ0RlY29kZXIudmVyaWZ5Q29kZXdvcmRDb3VudChjb2Rld29yZHMsIG51bUVDQ29kZXdvcmRzKTsKCSAgICAgICAgLy8gRGVjb2RlIHRoZSBjb2Rld29yZHMKCSAgICAgICAgdmFyIGRlY29kZXJSZXN1bHQgPSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyXzEkMi5kZWZhdWx0LmRlY29kZShjb2Rld29yZHMsICcnICsgZWNMZXZlbCk7CgkgICAgICAgIGRlY29kZXJSZXN1bHQuc2V0RXJyb3JzQ29ycmVjdGVkKGNvcnJlY3RlZEVycm9yc0NvdW50KTsKCSAgICAgICAgZGVjb2RlclJlc3VsdC5zZXRFcmFzdXJlcyhlcmFzdXJlcy5sZW5ndGgpOwoJICAgICAgICByZXR1cm4gZGVjb2RlclJlc3VsdDsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIDxwPkdpdmVuIGRhdGEgYW5kIGVycm9yLWNvcnJlY3Rpb24gY29kZXdvcmRzIHJlY2VpdmVkLCBwb3NzaWJseSBjb3JydXB0ZWQgYnkgZXJyb3JzLCBhdHRlbXB0cyB0bwoJICAgICAqIGNvcnJlY3QgdGhlIGVycm9ycyBpbi1wbGFjZS48L3A+CgkgICAgICoKCSAgICAgKiBAcGFyYW0gY29kZXdvcmRzICAgZGF0YSBhbmQgZXJyb3IgY29ycmVjdGlvbiBjb2Rld29yZHMKCSAgICAgKiBAcGFyYW0gZXJhc3VyZXMgcG9zaXRpb25zIG9mIGFueSBrbm93biBlcmFzdXJlcwoJICAgICAqIEBwYXJhbSBudW1FQ0NvZGV3b3JkcyBudW1iZXIgb2YgZXJyb3IgY29ycmVjdGlvbiBjb2Rld29yZHMgdGhhdCBhcmUgYXZhaWxhYmxlIGluIGNvZGV3b3JkcwoJICAgICAqIEB0aHJvd3MgQ2hlY2tzdW1FeGNlcHRpb24gaWYgZXJyb3IgY29ycmVjdGlvbiBmYWlscwoJICAgICAqLwoJICAgIFBERjQxN1NjYW5uaW5nRGVjb2Rlci5jb3JyZWN0RXJyb3JzID0gZnVuY3Rpb24gKGNvZGV3b3JkcywgZXJhc3VyZXMsIG51bUVDQ29kZXdvcmRzKSB7CgkgICAgICAgIGlmIChlcmFzdXJlcyAhPSBudWxsICYmCgkgICAgICAgICAgICBlcmFzdXJlcy5sZW5ndGggPiBudW1FQ0NvZGV3b3JkcyAvIDIgKyBQREY0MTdTY2FubmluZ0RlY29kZXIuTUFYX0VSUk9SUyB8fAoJICAgICAgICAgICAgbnVtRUNDb2Rld29yZHMgPCAwIHx8CgkgICAgICAgICAgICBudW1FQ0NvZGV3b3JkcyA+IFBERjQxN1NjYW5uaW5nRGVjb2Rlci5NQVhfRUNfQ09ERVdPUkRTKSB7CgkgICAgICAgICAgICAvLyBUb28gbWFueSBlcnJvcnMgb3IgRUMgQ29kZXdvcmRzIGlzIGNvcnJ1cHRlZAoJICAgICAgICAgICAgdGhyb3cgQ2hlY2tzdW1FeGNlcHRpb25fMS5kZWZhdWx0LmdldENoZWNrc3VtSW5zdGFuY2UoKTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gUERGNDE3U2Nhbm5pbmdEZWNvZGVyLmVycm9yQ29ycmVjdGlvbi5kZWNvZGUoY29kZXdvcmRzLCBudW1FQ0NvZGV3b3JkcywgZXJhc3VyZXMpOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogVmVyaWZ5IHRoYXQgYWxsIGlzIE9LIHdpdGggdGhlIGNvZGV3b3JkIGFycmF5LgoJICAgICAqIEB0aHJvd3MgRm9ybWF0RXhjZXB0aW9uCgkgICAgICovCgkgICAgUERGNDE3U2Nhbm5pbmdEZWNvZGVyLnZlcmlmeUNvZGV3b3JkQ291bnQgPSBmdW5jdGlvbiAoY29kZXdvcmRzLCBudW1FQ0NvZGV3b3JkcykgewoJICAgICAgICBpZiAoY29kZXdvcmRzLmxlbmd0aCA8IDQpIHsKCSAgICAgICAgICAgIC8vIENvZGV3b3JkIGFycmF5IHNpemUgc2hvdWxkIGJlIGF0IGxlYXN0IDQgYWxsb3dpbmcgZm9yCgkgICAgICAgICAgICAvLyBDb3VudCBDVywgQXQgbGVhc3Qgb25lIERhdGEgQ1csIEVycm9yIENvcnJlY3Rpb24gQ1csIEVycm9yIENvcnJlY3Rpb24gQ1cKCSAgICAgICAgICAgIHRocm93IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQuZ2V0Rm9ybWF0SW5zdGFuY2UoKTsKCSAgICAgICAgfQoJICAgICAgICAvLyBUaGUgZmlyc3QgY29kZXdvcmQsIHRoZSBTeW1ib2wgTGVuZ3RoIERlc2NyaXB0b3IsIHNoYWxsIGFsd2F5cyBlbmNvZGUgdGhlIHRvdGFsIG51bWJlciBvZiBkYXRhCgkgICAgICAgIC8vIGNvZGV3b3JkcyBpbiB0aGUgc3ltYm9sLCBpbmNsdWRpbmcgdGhlIFN5bWJvbCBMZW5ndGggRGVzY3JpcHRvciBpdHNlbGYsIGRhdGEgY29kZXdvcmRzIGFuZCBwYWQKCSAgICAgICAgLy8gY29kZXdvcmRzLCBidXQgZXhjbHVkaW5nIHRoZSBudW1iZXIgb2YgZXJyb3IgY29ycmVjdGlvbiBjb2Rld29yZHMuCgkgICAgICAgIHZhciBudW1iZXJPZkNvZGV3b3JkcyA9IGNvZGV3b3Jkc1swXTsKCSAgICAgICAgaWYgKG51bWJlck9mQ29kZXdvcmRzID4gY29kZXdvcmRzLmxlbmd0aCkgewoJICAgICAgICAgICAgdGhyb3cgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdC5nZXRGb3JtYXRJbnN0YW5jZSgpOwoJICAgICAgICB9CgkgICAgICAgIGlmIChudW1iZXJPZkNvZGV3b3JkcyA9PT0gMCkgewoJICAgICAgICAgICAgLy8gUmVzZXQgdG8gdGhlIGxlbmd0aCBvZiB0aGUgYXJyYXkgLSA4IChBbGxvdyBmb3IgYXQgbGVhc3QgbGV2ZWwgMyBFcnJvciBDb3JyZWN0aW9uICg4IEVycm9yIENvZGV3b3JkcykKCSAgICAgICAgICAgIGlmIChudW1FQ0NvZGV3b3JkcyA8IGNvZGV3b3Jkcy5sZW5ndGgpIHsKCSAgICAgICAgICAgICAgICBjb2Rld29yZHNbMF0gPSBjb2Rld29yZHMubGVuZ3RoIC0gbnVtRUNDb2Rld29yZHM7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICB0aHJvdyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0LmdldEZvcm1hdEluc3RhbmNlKCk7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICB9OwoJICAgIFBERjQxN1NjYW5uaW5nRGVjb2Rlci5nZXRCaXRDb3VudEZvckNvZGV3b3JkID0gZnVuY3Rpb24gKGNvZGV3b3JkKSB7CgkgICAgICAgIHZhciByZXN1bHQgPSBuZXcgSW50MzJBcnJheSg4KTsKCSAgICAgICAgdmFyIHByZXZpb3VzVmFsdWUgPSAwOwoJICAgICAgICB2YXIgaSA9IHJlc3VsdC5sZW5ndGggLSAxOwoJICAgICAgICB3aGlsZSAodHJ1ZSkgewoJICAgICAgICAgICAgaWYgKChjb2Rld29yZCAmIDB4MSkgIT09IHByZXZpb3VzVmFsdWUpIHsKCSAgICAgICAgICAgICAgICBwcmV2aW91c1ZhbHVlID0gY29kZXdvcmQgJiAweDE7CgkgICAgICAgICAgICAgICAgaS0tOwoJICAgICAgICAgICAgICAgIGlmIChpIDwgMCkgewoJICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICByZXN1bHRbaV0rKzsKCSAgICAgICAgICAgIGNvZGV3b3JkID4+PSAxOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiByZXN1bHQ7CgkgICAgfTsKCSAgICBQREY0MTdTY2FubmluZ0RlY29kZXIuZ2V0Q29kZXdvcmRCdWNrZXROdW1iZXIgPSBmdW5jdGlvbiAoY29kZXdvcmQpIHsKCSAgICAgICAgaWYgKGNvZGV3b3JkIGluc3RhbmNlb2YgSW50MzJBcnJheSkgewoJICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q29kZXdvcmRCdWNrZXROdW1iZXJfSW50MzJBcnJheShjb2Rld29yZCk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q29kZXdvcmRCdWNrZXROdW1iZXJfbnVtYmVyKGNvZGV3b3JkKTsKCSAgICB9OwoJICAgIFBERjQxN1NjYW5uaW5nRGVjb2Rlci5nZXRDb2Rld29yZEJ1Y2tldE51bWJlcl9udW1iZXIgPSBmdW5jdGlvbiAoY29kZXdvcmQpIHsKCSAgICAgICAgcmV0dXJuIFBERjQxN1NjYW5uaW5nRGVjb2Rlci5nZXRDb2Rld29yZEJ1Y2tldE51bWJlcihQREY0MTdTY2FubmluZ0RlY29kZXIuZ2V0Qml0Q291bnRGb3JDb2Rld29yZChjb2Rld29yZCkpOwoJICAgIH07CgkgICAgUERGNDE3U2Nhbm5pbmdEZWNvZGVyLmdldENvZGV3b3JkQnVja2V0TnVtYmVyX0ludDMyQXJyYXkgPSBmdW5jdGlvbiAobW9kdWxlQml0Q291bnQpIHsKCSAgICAgICAgcmV0dXJuIChtb2R1bGVCaXRDb3VudFswXSAtIG1vZHVsZUJpdENvdW50WzJdICsgbW9kdWxlQml0Q291bnRbNF0gLSBtb2R1bGVCaXRDb3VudFs2XSArIDkpICUgOTsKCSAgICB9OwoJICAgIFBERjQxN1NjYW5uaW5nRGVjb2Rlci50b1N0cmluZyA9IGZ1bmN0aW9uIChiYXJjb2RlTWF0cml4KSB7CgkgICAgICAgIHZhciBmb3JtYXR0ZXIgPSBuZXcgRm9ybWF0dGVyXzEuZGVmYXVsdCgpOwoJICAgICAgICAvLyB0cnkgKGxldCBmb3JtYXR0ZXIgPSBuZXcgRm9ybWF0dGVyKCkpIHsKCSAgICAgICAgZm9yICh2YXIgcm93IC8qaW50Ki8gPSAwOyByb3cgPCBiYXJjb2RlTWF0cml4Lmxlbmd0aDsgcm93KyspIHsKCSAgICAgICAgICAgIGZvcm1hdHRlci5mb3JtYXQoJ1JvdyAlMmQ6ICcsIHJvdyk7CgkgICAgICAgICAgICBmb3IgKHZhciBjb2x1bW4gLyppbnQqLyA9IDA7IGNvbHVtbiA8IGJhcmNvZGVNYXRyaXhbcm93XS5sZW5ndGg7IGNvbHVtbisrKSB7CgkgICAgICAgICAgICAgICAgdmFyIGJhcmNvZGVWYWx1ZSA9IGJhcmNvZGVNYXRyaXhbcm93XVtjb2x1bW5dOwoJICAgICAgICAgICAgICAgIGlmIChiYXJjb2RlVmFsdWUuZ2V0VmFsdWUoKS5sZW5ndGggPT09IDApIHsKCSAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyLmZvcm1hdCgnICAgICAgICAnLCBudWxsKTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlci5mb3JtYXQoJyU0ZCglMmQpJywgYmFyY29kZVZhbHVlLmdldFZhbHVlKClbMF0sIGJhcmNvZGVWYWx1ZS5nZXRDb25maWRlbmNlKGJhcmNvZGVWYWx1ZS5nZXRWYWx1ZSgpWzBdKSk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZm9ybWF0dGVyLmZvcm1hdCgnJW4nKTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gZm9ybWF0dGVyLnRvU3RyaW5nKCk7CgkgICAgICAgIC8vIH0KCSAgICB9OwoJICAgIC8qZmluYWwqLyBQREY0MTdTY2FubmluZ0RlY29kZXIuQ09ERVdPUkRfU0tFV19TSVpFID0gMjsKCSAgICAvKmZpbmFsKi8gUERGNDE3U2Nhbm5pbmdEZWNvZGVyLk1BWF9FUlJPUlMgPSAzOwoJICAgIC8qZmluYWwqLyBQREY0MTdTY2FubmluZ0RlY29kZXIuTUFYX0VDX0NPREVXT1JEUyA9IDUxMjsKCSAgICAvKmZpbmFsKi8gUERGNDE3U2Nhbm5pbmdEZWNvZGVyLmVycm9yQ29ycmVjdGlvbiA9IG5ldyBFcnJvckNvcnJlY3Rpb25fMS5kZWZhdWx0KCk7CgkgICAgcmV0dXJuIFBERjQxN1NjYW5uaW5nRGVjb2RlcjsKCX0oKSk7CglleHBvcnRzLmRlZmF1bHQgPSBQREY0MTdTY2FubmluZ0RlY29kZXI7CgoJfSk7CgoJdmFyIFBERjQxN1JlYWRlcl8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJLyoKCSAqIENvcHlyaWdodCAyMDA5IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCXZhciBfX3ZhbHVlcyA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX3ZhbHVlcykgfHwgZnVuY3Rpb24obykgewoJICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gImZ1bmN0aW9uIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwOwoJICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pOwoJICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gIm51bWJlciIpIHJldHVybiB7CgkgICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7CgkgICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07CgkgICAgICAgIH0KCSAgICB9OwoJICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/ICJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLiIgOiAiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpOwoJfTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgkvLyBwYWNrYWdlIGNvbS5nb29nbGUuenhpbmcucGRmNDE3OwoJLy8gaW1wb3J0IGNvbS5nb29nbGUuenhpbmcuQmFyY29kZUZvcm1hdDsKCgkvLyBpbXBvcnQgY29tLmdvb2dsZS56eGluZy5DaGVja3N1bUV4Y2VwdGlvbjsKCgkvLyBpbXBvcnQgY29tLmdvb2dsZS56eGluZy5Gb3JtYXRFeGNlcHRpb247CgoJLy8gaW1wb3J0IGNvbS5nb29nbGUuenhpbmcuTm90Rm91bmRFeGNlcHRpb247CgoJLy8gaW1wb3J0IGNvbS5nb29nbGUuenhpbmcuUmVzdWx0OwoKCS8vIGltcG9ydCBjb20uZ29vZ2xlLnp4aW5nLmNvbW1vbi5EZWNvZGVyUmVzdWx0OwoJLy8gaW1wb3J0IGNvbS5nb29nbGUuenhpbmcubXVsdGkuTXVsdGlwbGVCYXJjb2RlUmVhZGVyOwoJLy8gaW1wb3J0IGNvbS5nb29nbGUuenhpbmcucGRmNDE3LmRlY29kZXIuUERGNDE3U2Nhbm5pbmdEZWNvZGVyOwoJLy8gaW1wb3J0IGNvbS5nb29nbGUuenhpbmcucGRmNDE3LmRldGVjdG9yLkRldGVjdG9yOwoJLy8gaW1wb3J0IGNvbS5nb29nbGUuenhpbmcucGRmNDE3LmRldGVjdG9yLlBERjQxN0RldGVjdG9yUmVzdWx0OwoKCgoKCgkvLyBpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKCS8vIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsKCS8vIGltcG9ydCBqYXZhLnV0aWwuTWFwOwoJLyoqCgkgKiBUaGlzIGltcGxlbWVudGF0aW9uIGNhbiBkZXRlY3QgYW5kIGRlY29kZSBQREY0MTcgY29kZXMgaW4gYW4gaW1hZ2UuCgkgKgoJICogQGF1dGhvciBHdWVudGhlciBHcmF1CgkgKi8KCXZhciBQREY0MTdSZWFkZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgZnVuY3Rpb24gUERGNDE3UmVhZGVyKCkgewoJICAgIH0KCSAgICAvLyBwcml2YXRlIHN0YXRpYyAvKmZpbmFsIFJlc3VsdFtdKi8gRU1QVFlfUkVTVUxUX0FSUkFZOiBSZXN1bHRbXSA9IG5ldyBSZXN1bHQoWzBdKTsKCSAgICAvKioKCSAgICAgKiBMb2NhdGVzIGFuZCBkZWNvZGVzIGEgUERGNDE3IGNvZGUgaW4gYW4gaW1hZ2UuCgkgICAgICoKCSAgICAgKiBAcmV0dXJuIGEgU3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY29udGVudCBlbmNvZGVkIGJ5IHRoZSBQREY0MTcgY29kZQoJICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb24gaWYgYSBQREY0MTcgY29kZSBjYW5ub3QgYmUgZm91bmQsCgkgICAgICogQHRocm93cyBGb3JtYXRFeGNlcHRpb24gaWYgYSBQREY0MTcgY2Fubm90IGJlIGRlY29kZWQKCSAgICAgKiBAdGhyb3dzIENoZWNrc3VtRXhjZXB0aW9uCgkgICAgICovCgkgICAgLy8gQE92ZXJyaWRlCgkgICAgUERGNDE3UmVhZGVyLnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbiAoaW1hZ2UsIGhpbnRzKSB7CgkgICAgICAgIGlmIChoaW50cyA9PT0gdm9pZCAwKSB7IGhpbnRzID0gbnVsbDsgfQoJICAgICAgICB2YXIgcmVzdWx0ID0gUERGNDE3UmVhZGVyLmRlY29kZShpbWFnZSwgaGludHMsIGZhbHNlKTsKCSAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsIHx8IHJlc3VsdC5sZW5ndGggPT09IDAgfHwgcmVzdWx0WzBdID09IG51bGwpIHsKCSAgICAgICAgICAgIHRocm93IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdC5nZXROb3RGb3VuZEluc3RhbmNlKCk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHJlc3VsdFswXTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqCgkgICAgICogQHBhcmFtIEJpbmFyeUJpdG1hcAoJICAgICAqIEBwYXJhbSBpbWFnZQoJICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb24KCSAgICAgKi8KCSAgICAvLyAgIEBPdmVycmlkZQoJICAgIFBERjQxN1JlYWRlci5wcm90b3R5cGUuZGVjb2RlTXVsdGlwbGUgPSBmdW5jdGlvbiAoaW1hZ2UsIGhpbnRzKSB7CgkgICAgICAgIGlmIChoaW50cyA9PT0gdm9pZCAwKSB7IGhpbnRzID0gbnVsbDsgfQoJICAgICAgICB0cnkgewoJICAgICAgICAgICAgcmV0dXJuIFBERjQxN1JlYWRlci5kZWNvZGUoaW1hZ2UsIGhpbnRzLCB0cnVlKTsKCSAgICAgICAgfQoJICAgICAgICBjYXRjaCAoaWdub3JlZCkgewoJICAgICAgICAgICAgaWYgKGlnbm9yZWQgaW5zdGFuY2VvZiBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0IHx8IGlnbm9yZWQgaW5zdGFuY2VvZiBDaGVja3N1bUV4Y2VwdGlvbl8xLmRlZmF1bHQpIHsKCSAgICAgICAgICAgICAgICB0aHJvdyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQuZ2V0Tm90Rm91bmRJbnN0YW5jZSgpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgdGhyb3cgaWdub3JlZDsKCSAgICAgICAgfQoJICAgIH07CgkgICAgLyoqCgkgICAgICoKCSAgICAgKiBAcGFyYW0gaW1hZ2UKCSAgICAgKiBAcGFyYW0gaGludHMKCSAgICAgKiBAcGFyYW0gbXVsdGlwbGUKCSAgICAgKgoJICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb24KCSAgICAgKiBAdGhyb3dzIEZvcm1hdEV4Y2VwdGlvbsOfCgkgICAgICogQHRocm93cyBDaGVja3N1bUV4Y2VwdGlvbgoJICAgICAqLwoJICAgIFBERjQxN1JlYWRlci5kZWNvZGUgPSBmdW5jdGlvbiAoaW1hZ2UsIGhpbnRzLCBtdWx0aXBsZSkgewoJICAgICAgICB2YXIgZV8xLCBfYTsKCSAgICAgICAgdmFyIHJlc3VsdHMgPSBuZXcgQXJyYXkoKTsKCSAgICAgICAgdmFyIGRldGVjdG9yUmVzdWx0ID0gRGV0ZWN0b3JfMSQzLmRlZmF1bHQuZGV0ZWN0TXVsdGlwbGUoaW1hZ2UsIGhpbnRzLCBtdWx0aXBsZSk7CgkgICAgICAgIHRyeSB7CgkgICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKGRldGVjdG9yUmVzdWx0LmdldFBvaW50cygpKSwgX2MgPSBfYi5uZXh0KCk7ICFfYy5kb25lOyBfYyA9IF9iLm5leHQoKSkgewoJICAgICAgICAgICAgICAgIHZhciBwb2ludHMgPSBfYy52YWx1ZTsKCSAgICAgICAgICAgICAgICB2YXIgZGVjb2RlclJlc3VsdCA9IFBERjQxN1NjYW5uaW5nRGVjb2Rlcl8xLmRlZmF1bHQuZGVjb2RlKGRldGVjdG9yUmVzdWx0LmdldEJpdHMoKSwgcG9pbnRzWzRdLCBwb2ludHNbNV0sIHBvaW50c1s2XSwgcG9pbnRzWzddLCBQREY0MTdSZWFkZXIuZ2V0TWluQ29kZXdvcmRXaWR0aChwb2ludHMpLCBQREY0MTdSZWFkZXIuZ2V0TWF4Q29kZXdvcmRXaWR0aChwb2ludHMpKTsKCSAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IFJlc3VsdF8xLmRlZmF1bHQoZGVjb2RlclJlc3VsdC5nZXRUZXh0KCksIGRlY29kZXJSZXN1bHQuZ2V0UmF3Qnl0ZXMoKSwgdW5kZWZpbmVkLCBwb2ludHMsIEJhcmNvZGVGb3JtYXRfMS5kZWZhdWx0LlBERl80MTcpOwoJICAgICAgICAgICAgICAgIHJlc3VsdC5wdXRNZXRhZGF0YShSZXN1bHRNZXRhZGF0YVR5cGVfMS5kZWZhdWx0LkVSUk9SX0NPUlJFQ1RJT05fTEVWRUwsIGRlY29kZXJSZXN1bHQuZ2V0RUNMZXZlbCgpKTsKCSAgICAgICAgICAgICAgICB2YXIgcGRmNDE3UmVzdWx0TWV0YWRhdGEgPSBkZWNvZGVyUmVzdWx0LmdldE90aGVyKCk7CgkgICAgICAgICAgICAgICAgaWYgKHBkZjQxN1Jlc3VsdE1ldGFkYXRhICE9IG51bGwpIHsKCSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1dE1ldGFkYXRhKFJlc3VsdE1ldGFkYXRhVHlwZV8xLmRlZmF1bHQuUERGNDE3X0VYVFJBX01FVEFEQVRBLCBwZGY0MTdSZXN1bHRNZXRhZGF0YSk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaChyZXN1bHQpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9CgkgICAgICAgIGZpbmFsbHkgewoJICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICBpZiAoX2MgJiYgIV9jLmRvbmUgJiYgKF9hID0gX2IucmV0dXJuKSkgX2EuY2FsbChfYik7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHJlc3VsdHMubWFwKGZ1bmN0aW9uICh4KSB7IHJldHVybiB4OyB9KTsKCSAgICB9OwoJICAgIFBERjQxN1JlYWRlci5nZXRNYXhXaWR0aCA9IGZ1bmN0aW9uIChwMSwgcDIpIHsKCSAgICAgICAgaWYgKHAxID09IG51bGwgfHwgcDIgPT0gbnVsbCkgewoJICAgICAgICAgICAgcmV0dXJuIDA7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIE1hdGgudHJ1bmMoTWF0aC5hYnMocDEuZ2V0WCgpIC0gcDIuZ2V0WCgpKSk7CgkgICAgfTsKCSAgICBQREY0MTdSZWFkZXIuZ2V0TWluV2lkdGggPSBmdW5jdGlvbiAocDEsIHAyKSB7CgkgICAgICAgIGlmIChwMSA9PSBudWxsIHx8IHAyID09IG51bGwpIHsKCSAgICAgICAgICAgIHJldHVybiBJbnRlZ2VyXzEuZGVmYXVsdC5NQVhfVkFMVUU7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIE1hdGgudHJ1bmMoTWF0aC5hYnMocDEuZ2V0WCgpIC0gcDIuZ2V0WCgpKSk7CgkgICAgfTsKCSAgICBQREY0MTdSZWFkZXIuZ2V0TWF4Q29kZXdvcmRXaWR0aCA9IGZ1bmN0aW9uIChwKSB7CgkgICAgICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgubWF4KE1hdGgubWF4KFBERjQxN1JlYWRlci5nZXRNYXhXaWR0aChwWzBdLCBwWzRdKSwgUERGNDE3UmVhZGVyLmdldE1heFdpZHRoKHBbNl0sIHBbMl0pICogUERGNDE3Q29tbW9uXzEuZGVmYXVsdC5NT0RVTEVTX0lOX0NPREVXT1JEIC8KCSAgICAgICAgICAgIFBERjQxN0NvbW1vbl8xLmRlZmF1bHQuTU9EVUxFU19JTl9TVE9QX1BBVFRFUk4pLCBNYXRoLm1heChQREY0MTdSZWFkZXIuZ2V0TWF4V2lkdGgocFsxXSwgcFs1XSksIFBERjQxN1JlYWRlci5nZXRNYXhXaWR0aChwWzddLCBwWzNdKSAqIFBERjQxN0NvbW1vbl8xLmRlZmF1bHQuTU9EVUxFU19JTl9DT0RFV09SRCAvCgkgICAgICAgICAgICBQREY0MTdDb21tb25fMS5kZWZhdWx0Lk1PRFVMRVNfSU5fU1RPUF9QQVRURVJOKSkpOwoJICAgIH07CgkgICAgUERGNDE3UmVhZGVyLmdldE1pbkNvZGV3b3JkV2lkdGggPSBmdW5jdGlvbiAocCkgewoJICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihNYXRoLm1pbihNYXRoLm1pbihQREY0MTdSZWFkZXIuZ2V0TWluV2lkdGgocFswXSwgcFs0XSksIFBERjQxN1JlYWRlci5nZXRNaW5XaWR0aChwWzZdLCBwWzJdKSAqIFBERjQxN0NvbW1vbl8xLmRlZmF1bHQuTU9EVUxFU19JTl9DT0RFV09SRCAvCgkgICAgICAgICAgICBQREY0MTdDb21tb25fMS5kZWZhdWx0Lk1PRFVMRVNfSU5fU1RPUF9QQVRURVJOKSwgTWF0aC5taW4oUERGNDE3UmVhZGVyLmdldE1pbldpZHRoKHBbMV0sIHBbNV0pLCBQREY0MTdSZWFkZXIuZ2V0TWluV2lkdGgocFs3XSwgcFszXSkgKiBQREY0MTdDb21tb25fMS5kZWZhdWx0Lk1PRFVMRVNfSU5fQ09ERVdPUkQgLwoJICAgICAgICAgICAgUERGNDE3Q29tbW9uXzEuZGVmYXVsdC5NT0RVTEVTX0lOX1NUT1BfUEFUVEVSTikpKTsKCSAgICB9OwoJICAgIC8vIEBPdmVycmlkZQoJICAgIFBERjQxN1JlYWRlci5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIC8vIG5vdGhpbmcgbmVlZHMgdG8gYmUgcmVzZXQKCSAgICB9OwoJICAgIHJldHVybiBQREY0MTdSZWFkZXI7Cgl9KCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gUERGNDE3UmVhZGVyOwoKCX0pOwoKCXZhciBSZWFkZXJFeGNlcHRpb25fMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCXZhciBfX2V4dGVuZHMgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkgewoJICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fAoJICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fAoJICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07CgkgICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgIH07CgkgICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfQoJICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7CgkgICAgfTsKCX0pKCk7CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoKCS8qKgoJICogQ3VzdG9tIEVycm9yIGNsYXNzIG9mIHR5cGUgRXhjZXB0aW9uLgoJICovCgl2YXIgUmVhZGVyRXhjZXB0aW9uID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikgewoJICAgIF9fZXh0ZW5kcyhSZWFkZXJFeGNlcHRpb24sIF9zdXBlcik7CgkgICAgZnVuY3Rpb24gUmVhZGVyRXhjZXB0aW9uKCkgewoJICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7CgkgICAgfQoJICAgIFJlYWRlckV4Y2VwdGlvbi5raW5kID0gJ1JlYWRlckV4Y2VwdGlvbic7CgkgICAgcmV0dXJuIFJlYWRlckV4Y2VwdGlvbjsKCX0oRXhjZXB0aW9uXzEuZGVmYXVsdCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gUmVhZGVyRXhjZXB0aW9uOwoKCX0pOwoKCXZhciBNdWx0aUZvcm1hdFJlYWRlcl8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJLyoKCSAqIENvcHlyaWdodCAyMDA5IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCXZhciBfX3ZhbHVlcyA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX3ZhbHVlcykgfHwgZnVuY3Rpb24obykgewoJICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gImZ1bmN0aW9uIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwOwoJICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pOwoJICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gIm51bWJlciIpIHJldHVybiB7CgkgICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7CgkgICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07CgkgICAgICAgIH0KCSAgICB9OwoJICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/ICJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLiIgOiAiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpOwoJfTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgoKCgoKCgoKCgkvKm5hbWVzcGFjZSBjb20uZ29vZ2xlLnp4aW5nIHsqLwoJLyoqCgkgKiBNdWx0aUZvcm1hdFJlYWRlciBpcyBhIGNvbnZlbmllbmNlIGNsYXNzIGFuZCB0aGUgbWFpbiBlbnRyeSBwb2ludCBpbnRvIHRoZSBsaWJyYXJ5IGZvciBtb3N0IHVzZXMuCgkgKiBCeSBkZWZhdWx0IGl0IGF0dGVtcHRzIHRvIGRlY29kZSBhbGwgYmFyY29kZSBmb3JtYXRzIHRoYXQgdGhlIGxpYnJhcnkgc3VwcG9ydHMuIE9wdGlvbmFsbHksIHlvdQoJICogY2FuIHByb3ZpZGUgYSBoaW50cyBvYmplY3QgdG8gcmVxdWVzdCBkaWZmZXJlbnQgYmVoYXZpb3IsIGZvciBleGFtcGxlIG9ubHkgZGVjb2RpbmcgUVIgY29kZXMuCgkgKgoJICogQGF1dGhvciBTZWFuIE93ZW4KCSAqIEBhdXRob3IgZHN3aXRraW5AZ29vZ2xlLmNvbSAoRGFuaWVsIFN3aXRraW4pCgkgKi8KCXZhciBNdWx0aUZvcm1hdFJlYWRlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBNdWx0aUZvcm1hdFJlYWRlcigpIHsKCSAgICB9CgkgICAgLyoqCgkgICAgICogVGhpcyB2ZXJzaW9uIG9mIGRlY29kZSBob25vcnMgdGhlIGludGVudCBvZiBSZWFkZXIuZGVjb2RlKEJpbmFyeUJpdG1hcCkgaW4gdGhhdCBpdAoJICAgICAqIHBhc3NlcyBudWxsIGFzIGEgaGludCB0byB0aGUgZGVjb2RlcnMuIEhvd2V2ZXIsIHRoYXQgbWFrZXMgaXQgaW5lZmZpY2llbnQgdG8gY2FsbCByZXBlYXRlZGx5LgoJICAgICAqIFVzZSBzZXRIaW50cygpIGZvbGxvd2VkIGJ5IGRlY29kZVdpdGhTdGF0ZSgpIGZvciBjb250aW51b3VzIHNjYW4gYXBwbGljYXRpb25zLgoJICAgICAqCgkgICAgICogQHBhcmFtIGltYWdlIFRoZSBwaXhlbCBkYXRhIHRvIGRlY29kZQoJICAgICAqIEByZXR1cm4gVGhlIGNvbnRlbnRzIG9mIHRoZSBpbWFnZQoJICAgICAqCgkgICAgICogQHRocm93cyBOb3RGb3VuZEV4Y2VwdGlvbiBBbnkgZXJyb3JzIHdoaWNoIG9jY3VycmVkCgkgICAgICovCgkgICAgLypAT3ZlcnJpZGUqLwoJICAgIC8vIHB1YmxpYyBkZWNvZGUoaW1hZ2U6IEJpbmFyeUJpdG1hcCk6IFJlc3VsdCB7CgkgICAgLy8gICBzZXRIaW50cyhudWxsKQoJICAgIC8vICAgcmV0dXJuIGRlY29kZUludGVybmFsKGltYWdlKQoJICAgIC8vIH0KCSAgICAvKioKCSAgICAgKiBEZWNvZGUgYW4gaW1hZ2UgdXNpbmcgdGhlIGhpbnRzIHByb3ZpZGVkLiBEb2VzIG5vdCBob25vciBleGlzdGluZyBzdGF0ZS4KCSAgICAgKgoJICAgICAqIEBwYXJhbSBpbWFnZSBUaGUgcGl4ZWwgZGF0YSB0byBkZWNvZGUKCSAgICAgKiBAcGFyYW0gaGludHMgVGhlIGhpbnRzIHRvIHVzZSwgY2xlYXJpbmcgdGhlIHByZXZpb3VzIHN0YXRlLgoJICAgICAqIEByZXR1cm4gVGhlIGNvbnRlbnRzIG9mIHRoZSBpbWFnZQoJICAgICAqCgkgICAgICogQHRocm93cyBOb3RGb3VuZEV4Y2VwdGlvbiBBbnkgZXJyb3JzIHdoaWNoIG9jY3VycmVkCgkgICAgICovCgkgICAgLypAT3ZlcnJpZGUqLwoJICAgIE11bHRpRm9ybWF0UmVhZGVyLnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbiAoaW1hZ2UsIGhpbnRzKSB7CgkgICAgICAgIHRoaXMuc2V0SGludHMoaGludHMpOwoJICAgICAgICByZXR1cm4gdGhpcy5kZWNvZGVJbnRlcm5hbChpbWFnZSk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBEZWNvZGUgYW4gaW1hZ2UgdXNpbmcgdGhlIHN0YXRlIHNldCB1cCBieSBjYWxsaW5nIHNldEhpbnRzKCkgcHJldmlvdXNseS4gQ29udGludW91cyBzY2FuCgkgICAgICogY2xpZW50cyB3aWxsIGdldCBhIDxiPmxhcmdlPC9iPiBzcGVlZCBpbmNyZWFzZSBieSB1c2luZyB0aGlzIGluc3RlYWQgb2YgZGVjb2RlKCkuCgkgICAgICoKCSAgICAgKiBAcGFyYW0gaW1hZ2UgVGhlIHBpeGVsIGRhdGEgdG8gZGVjb2RlCgkgICAgICogQHJldHVybiBUaGUgY29udGVudHMgb2YgdGhlIGltYWdlCgkgICAgICoKCSAgICAgKiBAdGhyb3dzIE5vdEZvdW5kRXhjZXB0aW9uIEFueSBlcnJvcnMgd2hpY2ggb2NjdXJyZWQKCSAgICAgKi8KCSAgICBNdWx0aUZvcm1hdFJlYWRlci5wcm90b3R5cGUuZGVjb2RlV2l0aFN0YXRlID0gZnVuY3Rpb24gKGltYWdlKSB7CgkgICAgICAgIC8vIE1ha2Ugc3VyZSB0byBzZXQgdXAgdGhlIGRlZmF1bHQgc3RhdGUgc28gd2UgZG9uJ3QgY3Jhc2gKCSAgICAgICAgaWYgKHRoaXMucmVhZGVycyA9PT0gbnVsbCB8fCB0aGlzLnJlYWRlcnMgPT09IHVuZGVmaW5lZCkgewoJICAgICAgICAgICAgdGhpcy5zZXRIaW50cyhudWxsKTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gdGhpcy5kZWNvZGVJbnRlcm5hbChpbWFnZSk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBUaGlzIG1ldGhvZCBhZGRzIHN0YXRlIHRvIHRoZSBNdWx0aUZvcm1hdFJlYWRlci4gQnkgc2V0dGluZyB0aGUgaGludHMgb25jZSwgc3Vic2VxdWVudCBjYWxscwoJICAgICAqIHRvIGRlY29kZVdpdGhTdGF0ZShpbWFnZSkgY2FuIHJldXNlIHRoZSBzYW1lIHNldCBvZiByZWFkZXJzIHdpdGhvdXQgcmVhbGxvY2F0aW5nIG1lbW9yeS4gVGhpcwoJICAgICAqIGlzIGltcG9ydGFudCBmb3IgcGVyZm9ybWFuY2UgaW4gY29udGludW91cyBzY2FuIGNsaWVudHMuCgkgICAgICoKCSAgICAgKiBAcGFyYW0gaGludHMgVGhlIHNldCBvZiBoaW50cyB0byB1c2UgZm9yIHN1YnNlcXVlbnQgY2FsbHMgdG8gZGVjb2RlKGltYWdlKQoJICAgICAqLwoJICAgIE11bHRpRm9ybWF0UmVhZGVyLnByb3RvdHlwZS5zZXRIaW50cyA9IGZ1bmN0aW9uIChoaW50cykgewoJICAgICAgICB0aGlzLmhpbnRzID0gaGludHM7CgkgICAgICAgIHZhciB0cnlIYXJkZXIgPSBoaW50cyAhPT0gbnVsbCAmJiBoaW50cyAhPT0gdW5kZWZpbmVkICYmIHVuZGVmaW5lZCAhPT0gaGludHMuZ2V0KERlY29kZUhpbnRUeXBlXzEuZGVmYXVsdC5UUllfSEFSREVSKTsKCSAgICAgICAgLypAU3VwcHJlc3NXYXJuaW5ncygidW5jaGVja2VkIikqLwoJICAgICAgICB2YXIgZm9ybWF0cyA9IGhpbnRzID09PSBudWxsIHx8IGhpbnRzID09PSB1bmRlZmluZWQgPyBudWxsIDogaGludHMuZ2V0KERlY29kZUhpbnRUeXBlXzEuZGVmYXVsdC5QT1NTSUJMRV9GT1JNQVRTKTsKCSAgICAgICAgdmFyIHJlYWRlcnMgPSBuZXcgQXJyYXkoKTsKCSAgICAgICAgaWYgKGZvcm1hdHMgIT09IG51bGwgJiYgZm9ybWF0cyAhPT0gdW5kZWZpbmVkKSB7CgkgICAgICAgICAgICB2YXIgYWRkT25lRFJlYWRlciA9IGZvcm1hdHMuc29tZShmdW5jdGlvbiAoZikgewoJICAgICAgICAgICAgICAgIHJldHVybiBmID09PSBCYXJjb2RlRm9ybWF0XzEuZGVmYXVsdC5VUENfQSB8fAoJICAgICAgICAgICAgICAgICAgICBmID09PSBCYXJjb2RlRm9ybWF0XzEuZGVmYXVsdC5VUENfRSB8fAoJICAgICAgICAgICAgICAgICAgICBmID09PSBCYXJjb2RlRm9ybWF0XzEuZGVmYXVsdC5FQU5fMTMgfHwKCSAgICAgICAgICAgICAgICAgICAgZiA9PT0gQmFyY29kZUZvcm1hdF8xLmRlZmF1bHQuRUFOXzggfHwKCSAgICAgICAgICAgICAgICAgICAgZiA9PT0gQmFyY29kZUZvcm1hdF8xLmRlZmF1bHQuQ09EQUJBUiB8fAoJICAgICAgICAgICAgICAgICAgICBmID09PSBCYXJjb2RlRm9ybWF0XzEuZGVmYXVsdC5DT0RFXzM5IHx8CgkgICAgICAgICAgICAgICAgICAgIGYgPT09IEJhcmNvZGVGb3JtYXRfMS5kZWZhdWx0LkNPREVfOTMgfHwKCSAgICAgICAgICAgICAgICAgICAgZiA9PT0gQmFyY29kZUZvcm1hdF8xLmRlZmF1bHQuQ09ERV8xMjggfHwKCSAgICAgICAgICAgICAgICAgICAgZiA9PT0gQmFyY29kZUZvcm1hdF8xLmRlZmF1bHQuSVRGIHx8CgkgICAgICAgICAgICAgICAgICAgIGYgPT09IEJhcmNvZGVGb3JtYXRfMS5kZWZhdWx0LlJTU18xNCB8fAoJICAgICAgICAgICAgICAgICAgICBmID09PSBCYXJjb2RlRm9ybWF0XzEuZGVmYXVsdC5SU1NfRVhQQU5ERUQ7CgkgICAgICAgICAgICB9KTsKCSAgICAgICAgICAgIC8vIFB1dCAxRCByZWFkZXJzIHVwZnJvbnQgaW4gIm5vcm1hbCIgbW9kZQoJICAgICAgICAgICAgLy8gVFlQRVNDUklQVFBPUlQ6IFRPRE86IHVuY29tbWVudCBiZWxvdyBhcyB0aGV5IGFyZSBwb3J0ZWQKCSAgICAgICAgICAgIGlmIChhZGRPbmVEUmVhZGVyICYmICF0cnlIYXJkZXIpIHsKCSAgICAgICAgICAgICAgICByZWFkZXJzLnB1c2gobmV3IE11bHRpRm9ybWF0T25lRFJlYWRlcl8xLmRlZmF1bHQoaGludHMpKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGlmIChmb3JtYXRzLmluY2x1ZGVzKEJhcmNvZGVGb3JtYXRfMS5kZWZhdWx0LlFSX0NPREUpKSB7CgkgICAgICAgICAgICAgICAgcmVhZGVycy5wdXNoKG5ldyBRUkNvZGVSZWFkZXJfMS5kZWZhdWx0KCkpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgaWYgKGZvcm1hdHMuaW5jbHVkZXMoQmFyY29kZUZvcm1hdF8xLmRlZmF1bHQuREFUQV9NQVRSSVgpKSB7CgkgICAgICAgICAgICAgICAgcmVhZGVycy5wdXNoKG5ldyBEYXRhTWF0cml4UmVhZGVyXzEuZGVmYXVsdCgpKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGlmIChmb3JtYXRzLmluY2x1ZGVzKEJhcmNvZGVGb3JtYXRfMS5kZWZhdWx0LkFaVEVDKSkgewoJICAgICAgICAgICAgICAgIHJlYWRlcnMucHVzaChuZXcgQXp0ZWNSZWFkZXJfMS5kZWZhdWx0KCkpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgaWYgKGZvcm1hdHMuaW5jbHVkZXMoQmFyY29kZUZvcm1hdF8xLmRlZmF1bHQuUERGXzQxNykpIHsKCSAgICAgICAgICAgICAgICByZWFkZXJzLnB1c2gobmV3IFBERjQxN1JlYWRlcl8xLmRlZmF1bHQoKSk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICAvLyBpZiAoZm9ybWF0cy5pbmNsdWRlcyhCYXJjb2RlRm9ybWF0Lk1BWElDT0RFKSkgewoJICAgICAgICAgICAgLy8gICAgcmVhZGVycy5wdXNoKG5ldyBNYXhpQ29kZVJlYWRlcigpKQoJICAgICAgICAgICAgLy8gfQoJICAgICAgICAgICAgLy8gQXQgZW5kIGluICJ0cnkgaGFyZGVyIiBtb2RlCgkgICAgICAgICAgICBpZiAoYWRkT25lRFJlYWRlciAmJiB0cnlIYXJkZXIpIHsKCSAgICAgICAgICAgICAgICByZWFkZXJzLnB1c2gobmV3IE11bHRpRm9ybWF0T25lRFJlYWRlcl8xLmRlZmF1bHQoaGludHMpKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICBpZiAocmVhZGVycy5sZW5ndGggPT09IDApIHsKCSAgICAgICAgICAgIGlmICghdHJ5SGFyZGVyKSB7CgkgICAgICAgICAgICAgICAgcmVhZGVycy5wdXNoKG5ldyBNdWx0aUZvcm1hdE9uZURSZWFkZXJfMS5kZWZhdWx0KGhpbnRzKSk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICByZWFkZXJzLnB1c2gobmV3IFFSQ29kZVJlYWRlcl8xLmRlZmF1bHQoKSk7CgkgICAgICAgICAgICByZWFkZXJzLnB1c2gobmV3IERhdGFNYXRyaXhSZWFkZXJfMS5kZWZhdWx0KCkpOwoJICAgICAgICAgICAgcmVhZGVycy5wdXNoKG5ldyBBenRlY1JlYWRlcl8xLmRlZmF1bHQoKSk7CgkgICAgICAgICAgICByZWFkZXJzLnB1c2gobmV3IFBERjQxN1JlYWRlcl8xLmRlZmF1bHQoKSk7CgkgICAgICAgICAgICAvLyByZWFkZXJzLnB1c2gobmV3IE1heGlDb2RlUmVhZGVyKCkpCgkgICAgICAgICAgICBpZiAodHJ5SGFyZGVyKSB7CgkgICAgICAgICAgICAgICAgcmVhZGVycy5wdXNoKG5ldyBNdWx0aUZvcm1hdE9uZURSZWFkZXJfMS5kZWZhdWx0KGhpbnRzKSk7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgdGhpcy5yZWFkZXJzID0gcmVhZGVyczsgLy8gLnRvQXJyYXkobmV3IFJlYWRlcltyZWFkZXJzLnNpemUoKV0pCgkgICAgfTsKCSAgICAvKkBPdmVycmlkZSovCgkgICAgTXVsdGlGb3JtYXRSZWFkZXIucHJvdG90eXBlLnJlc2V0ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICB2YXIgZV8xLCBfYTsKCSAgICAgICAgaWYgKHRoaXMucmVhZGVycyAhPT0gbnVsbCkgewoJICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKHRoaXMucmVhZGVycyksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHsKCSAgICAgICAgICAgICAgICAgICAgdmFyIHJlYWRlciA9IF9jLnZhbHVlOwoJICAgICAgICAgICAgICAgICAgICByZWFkZXIucmVzZXQoKTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfQoJICAgICAgICAgICAgZmluYWxseSB7CgkgICAgICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb24KCSAgICAgKi8KCSAgICBNdWx0aUZvcm1hdFJlYWRlci5wcm90b3R5cGUuZGVjb2RlSW50ZXJuYWwgPSBmdW5jdGlvbiAoaW1hZ2UpIHsKCSAgICAgICAgdmFyIGVfMiwgX2E7CgkgICAgICAgIGlmICh0aGlzLnJlYWRlcnMgPT09IG51bGwpIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBSZWFkZXJFeGNlcHRpb25fMS5kZWZhdWx0KCdObyByZWFkZXJzIHdoZXJlIHNlbGVjdGVkLCBub3RoaW5nIGNhbiBiZSByZWFkLicpOwoJICAgICAgICB9CgkgICAgICAgIHRyeSB7CgkgICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKHRoaXMucmVhZGVycyksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHsKCSAgICAgICAgICAgICAgICB2YXIgcmVhZGVyID0gX2MudmFsdWU7CgkgICAgICAgICAgICAgICAgLy8gVHJ5aW5nIHRvIGRlY29kZSB3aXRoICR7cmVhZGVyfSByZWFkZXIuCgkgICAgICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlYWRlci5kZWNvZGUoaW1hZ2UsIHRoaXMuaGludHMpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBjYXRjaCAoZXgpIHsKCSAgICAgICAgICAgICAgICAgICAgaWYgKGV4IGluc3RhbmNlb2YgUmVhZGVyRXhjZXB0aW9uXzEuZGVmYXVsdCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgLy8gQmFkIEV4Y2VwdGlvbi4KCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgY2F0Y2ggKGVfMl8xKSB7IGVfMiA9IHsgZXJyb3I6IGVfMl8xIH07IH0KCSAgICAgICAgZmluYWxseSB7CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIGlmIChfYyAmJiAhX2MuZG9uZSAmJiAoX2EgPSBfYi5yZXR1cm4pKSBfYS5jYWxsKF9iKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8yKSB0aHJvdyBlXzIuZXJyb3I7IH0KCSAgICAgICAgfQoJICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCdObyBNdWx0aUZvcm1hdCBSZWFkZXJzIHdlcmUgYWJsZSB0byBkZXRlY3QgdGhlIGNvZGUuJyk7CgkgICAgfTsKCSAgICByZXR1cm4gTXVsdGlGb3JtYXRSZWFkZXI7Cgl9KCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gTXVsdGlGb3JtYXRSZWFkZXI7CgoJfSk7CgoJdmFyIEJyb3dzZXJNdWx0aUZvcm1hdFJlYWRlcl8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJdmFyIF9fZXh0ZW5kcyA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7CgkgICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8CgkgICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8CgkgICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTsKCSAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgfTsKCSAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9CgkgICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTsKCSAgICB9OwoJfSkoKTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CglleHBvcnRzLkJyb3dzZXJNdWx0aUZvcm1hdFJlYWRlciA9IHZvaWQgMDsKCgoJdmFyIEJyb3dzZXJNdWx0aUZvcm1hdFJlYWRlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHsKCSAgICBfX2V4dGVuZHMoQnJvd3Nlck11bHRpRm9ybWF0UmVhZGVyLCBfc3VwZXIpOwoJICAgIGZ1bmN0aW9uIEJyb3dzZXJNdWx0aUZvcm1hdFJlYWRlcihoaW50cywgdGltZUJldHdlZW5TY2Fuc01pbGxpcykgewoJICAgICAgICBpZiAoaGludHMgPT09IHZvaWQgMCkgeyBoaW50cyA9IG51bGw7IH0KCSAgICAgICAgaWYgKHRpbWVCZXR3ZWVuU2NhbnNNaWxsaXMgPT09IHZvaWQgMCkgeyB0aW1lQmV0d2VlblNjYW5zTWlsbGlzID0gNTAwOyB9CgkgICAgICAgIHZhciBfdGhpcyA9IHRoaXM7CgkgICAgICAgIHZhciByZWFkZXIgPSBuZXcgTXVsdGlGb3JtYXRSZWFkZXJfMS5kZWZhdWx0KCk7CgkgICAgICAgIHJlYWRlci5zZXRIaW50cyhoaW50cyk7CgkgICAgICAgIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgcmVhZGVyLCB0aW1lQmV0d2VlblNjYW5zTWlsbGlzKSB8fCB0aGlzOwoJICAgICAgICByZXR1cm4gX3RoaXM7CgkgICAgfQoJICAgIC8qKgoJICAgICAqIE92ZXJ3cml0ZSBkZWNvZGVCaXRtYXAgdG8gY2FsbCBkZWNvZGVXaXRoU3RhdGUsIHdoaWNoIHdpbGwgcGF5CgkgICAgICogYXR0ZW50aW9uIHRvIHRoZSBoaW50cyBzZXQgaW4gdGhlIGNvbnN0cnVjdG9yIGZ1bmN0aW9uCgkgICAgICovCgkgICAgQnJvd3Nlck11bHRpRm9ybWF0UmVhZGVyLnByb3RvdHlwZS5kZWNvZGVCaXRtYXAgPSBmdW5jdGlvbiAoYmluYXJ5Qml0bWFwKSB7CgkgICAgICAgIHJldHVybiB0aGlzLnJlYWRlci5kZWNvZGVXaXRoU3RhdGUoYmluYXJ5Qml0bWFwKTsKCSAgICB9OwoJICAgIHJldHVybiBCcm93c2VyTXVsdGlGb3JtYXRSZWFkZXI7Cgl9KEJyb3dzZXJDb2RlUmVhZGVyXzEuQnJvd3NlckNvZGVSZWFkZXIpKTsKCWV4cG9ydHMuQnJvd3Nlck11bHRpRm9ybWF0UmVhZGVyID0gQnJvd3Nlck11bHRpRm9ybWF0UmVhZGVyOwoKCX0pOwoKCXZhciBCcm93c2VyUERGNDE3UmVhZGVyXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7Cgl2YXIgX19leHRlbmRzID0gKGNvbW1vbmpzR2xvYmFsICYmIGNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHsKCSAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwKCSAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHwKCSAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9OwoJICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICB9OwoJICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH0KCSAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpOwoJICAgIH07Cgl9KSgpOwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCWV4cG9ydHMuQnJvd3NlclBERjQxN1JlYWRlciA9IHZvaWQgMDsKCgoJLyoqCgkgKiBAZGVwcmVjYXRlZCBNb3ZpbmcgdG8gQHp4aW5nL2Jyb3dzZXIKCSAqCgkgKiBRUiBDb2RlIHJlYWRlciB0byB1c2UgZnJvbSBicm93c2VyLgoJICovCgl2YXIgQnJvd3NlclBERjQxN1JlYWRlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHsKCSAgICBfX2V4dGVuZHMoQnJvd3NlclBERjQxN1JlYWRlciwgX3N1cGVyKTsKCSAgICAvKioKCSAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIEJyb3dzZXJQREY0MTdSZWFkZXIuCgkgICAgICogQHBhcmFtIHtudW1iZXJ9IFt0aW1lQmV0d2VlblNjYW5zTWlsbGlzPTUwMF0gdGhlIHRpbWUgZGVsYXkgYmV0d2VlbiBzdWJzZXF1ZW50IGRlY29kZSB0cmllcwoJICAgICAqLwoJICAgIGZ1bmN0aW9uIEJyb3dzZXJQREY0MTdSZWFkZXIodGltZUJldHdlZW5TY2Fuc01pbGxpcykgewoJICAgICAgICBpZiAodGltZUJldHdlZW5TY2Fuc01pbGxpcyA9PT0gdm9pZCAwKSB7IHRpbWVCZXR3ZWVuU2NhbnNNaWxsaXMgPSA1MDA7IH0KCSAgICAgICAgcmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsIG5ldyBQREY0MTdSZWFkZXJfMS5kZWZhdWx0KCksIHRpbWVCZXR3ZWVuU2NhbnNNaWxsaXMpIHx8IHRoaXM7CgkgICAgfQoJICAgIHJldHVybiBCcm93c2VyUERGNDE3UmVhZGVyOwoJfShCcm93c2VyQ29kZVJlYWRlcl8xLkJyb3dzZXJDb2RlUmVhZGVyKSk7CglleHBvcnRzLkJyb3dzZXJQREY0MTdSZWFkZXIgPSBCcm93c2VyUERGNDE3UmVhZGVyOwoKCX0pOwoKCXZhciBCcm93c2VyUVJDb2RlUmVhZGVyXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7Cgl2YXIgX19leHRlbmRzID0gKGNvbW1vbmpzR2xvYmFsICYmIGNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHsKCSAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwKCSAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHwKCSAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9OwoJICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICB9OwoJICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH0KCSAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpOwoJICAgIH07Cgl9KSgpOwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCWV4cG9ydHMuQnJvd3NlclFSQ29kZVJlYWRlciA9IHZvaWQgMDsKCgoJLyoqCgkgKiBAZGVwcmVjYXRlZCBNb3ZpbmcgdG8gQHp4aW5nL2Jyb3dzZXIKCSAqCgkgKiBRUiBDb2RlIHJlYWRlciB0byB1c2UgZnJvbSBicm93c2VyLgoJICovCgl2YXIgQnJvd3NlclFSQ29kZVJlYWRlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHsKCSAgICBfX2V4dGVuZHMoQnJvd3NlclFSQ29kZVJlYWRlciwgX3N1cGVyKTsKCSAgICAvKioKCSAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIEJyb3dzZXJRUkNvZGVSZWFkZXIuCgkgICAgICogQHBhcmFtIHtudW1iZXJ9IFt0aW1lQmV0d2VlblNjYW5zTWlsbGlzPTUwMF0gdGhlIHRpbWUgZGVsYXkgYmV0d2VlbiBzdWJzZXF1ZW50IGRlY29kZSB0cmllcwoJICAgICAqLwoJICAgIGZ1bmN0aW9uIEJyb3dzZXJRUkNvZGVSZWFkZXIodGltZUJldHdlZW5TY2Fuc01pbGxpcykgewoJICAgICAgICBpZiAodGltZUJldHdlZW5TY2Fuc01pbGxpcyA9PT0gdm9pZCAwKSB7IHRpbWVCZXR3ZWVuU2NhbnNNaWxsaXMgPSA1MDA7IH0KCSAgICAgICAgcmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsIG5ldyBRUkNvZGVSZWFkZXJfMS5kZWZhdWx0KCksIHRpbWVCZXR3ZWVuU2NhbnNNaWxsaXMpIHx8IHRoaXM7CgkgICAgfQoJICAgIHJldHVybiBCcm93c2VyUVJDb2RlUmVhZGVyOwoJfShCcm93c2VyQ29kZVJlYWRlcl8xLkJyb3dzZXJDb2RlUmVhZGVyKSk7CglleHBvcnRzLkJyb3dzZXJRUkNvZGVSZWFkZXIgPSBCcm93c2VyUVJDb2RlUmVhZGVyOwoKCX0pOwoKCXZhciBFbmNvZGVIaW50VHlwZV8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJLyoKCSAqIENvcHlyaWdodCAyMDA5IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgkvKm5hbWVzcGFjZSBjb20uZ29vZ2xlLnp4aW5nIHsqLwoJLyoqCgkgKiBUaGVzZSBhcmUgYSBzZXQgb2YgaGludHMgdGhhdCB5b3UgbWF5IHBhc3MgdG8gV3JpdGVycyB0byBzcGVjaWZ5IHRoZWlyIGJlaGF2aW9yLgoJICoKCSAqIEBhdXRob3IgZHN3aXRraW5AZ29vZ2xlLmNvbSAoRGFuaWVsIFN3aXRraW4pCgkgKi8KCXZhciBFbmNvZGVIaW50VHlwZTsKCShmdW5jdGlvbiAoRW5jb2RlSGludFR5cGUpIHsKCSAgICAvKioKCSAgICAgKiBTcGVjaWZpZXMgd2hhdCBkZWdyZWUgb2YgZXJyb3IgY29ycmVjdGlvbiB0byB1c2UsIGZvciBleGFtcGxlIGluIFFSIENvZGVzLgoJICAgICAqIFR5cGUgZGVwZW5kcyBvbiB0aGUgZW5jb2Rlci4gRm9yIGV4YW1wbGUgZm9yIFFSIGNvZGVzIGl0J3MgdHlwZQoJICAgICAqIHtAbGluayBjb20uZ29vZ2xlLnp4aW5nLnFyY29kZS5kZWNvZGVyLkVycm9yQ29ycmVjdGlvbkxldmVsIEVycm9yQ29ycmVjdGlvbkxldmVsfS4KCSAgICAgKiBGb3IgQXp0ZWMgaXQgaXMgb2YgdHlwZSB7QGxpbmsgSW50ZWdlcn0sIHJlcHJlc2VudGluZyB0aGUgbWluaW1hbCBwZXJjZW50YWdlIG9mIGVycm9yIGNvcnJlY3Rpb24gd29yZHMuCgkgICAgICogRm9yIFBERjQxNyBpdCBpcyBvZiB0eXBlIHtAbGluayBJbnRlZ2VyfSwgdmFsaWQgdmFsdWVzIGJlaW5nIDAgdG8gOC4KCSAgICAgKiBJbiBhbGwgY2FzZXMsIGl0IGNhbiBhbHNvIGJlIGEge0BsaW5rIFN0cmluZ30gcmVwcmVzZW50YXRpb24gb2YgdGhlIGRlc2lyZWQgdmFsdWUgYXMgd2VsbC4KCSAgICAgKiBOb3RlOiBhbiBBenRlYyBzeW1ib2wgc2hvdWxkIGhhdmUgYSBtaW5pbXVtIG9mIDI1JSBFQyB3b3Jkcy4KCSAgICAgKi8KCSAgICBFbmNvZGVIaW50VHlwZVtFbmNvZGVIaW50VHlwZVsiRVJST1JfQ09SUkVDVElPTiJdID0gMF0gPSAiRVJST1JfQ09SUkVDVElPTiI7CgkgICAgLyoqCgkgICAgICogU3BlY2lmaWVzIHdoYXQgY2hhcmFjdGVyIGVuY29kaW5nIHRvIHVzZSB3aGVyZSBhcHBsaWNhYmxlICh0eXBlIHtAbGluayBTdHJpbmd9KQoJICAgICAqLwoJICAgIEVuY29kZUhpbnRUeXBlW0VuY29kZUhpbnRUeXBlWyJDSEFSQUNURVJfU0VUIl0gPSAxXSA9ICJDSEFSQUNURVJfU0VUIjsKCSAgICAvKioKCSAgICAgKiBTcGVjaWZpZXMgdGhlIG1hdHJpeCBzaGFwZSBmb3IgRGF0YSBNYXRyaXggKHR5cGUge0BsaW5rIGNvbS5nb29nbGUuenhpbmcuZGF0YW1hdHJpeC5lbmNvZGVyLlN5bWJvbFNoYXBlSGludH0pCgkgICAgICovCgkgICAgRW5jb2RlSGludFR5cGVbRW5jb2RlSGludFR5cGVbIkRBVEFfTUFUUklYX1NIQVBFIl0gPSAyXSA9ICJEQVRBX01BVFJJWF9TSEFQRSI7CgkgICAgLyoqCgkgICAgICogU3BlY2lmaWVzIGEgbWluaW11bSBiYXJjb2RlIHNpemUgKHR5cGUge0BsaW5rIERpbWVuc2lvbn0pLiBPbmx5IGFwcGxpY2FibGUgdG8gRGF0YSBNYXRyaXggbm93LgoJICAgICAqCgkgICAgICogQGRlcHJlY2F0ZWQgdXNlIHdpZHRoL2hlaWdodCBwYXJhbXMgaW4KCSAgICAgKiB7QGxpbmsgY29tLmdvb2dsZS56eGluZy5kYXRhbWF0cml4LkRhdGFNYXRyaXhXcml0ZXIjZW5jb2RlKFN0cmluZywgQmFyY29kZUZvcm1hdCwgaW50LCBpbnQpfQoJICAgICAqLwoJICAgIC8qQERlcHJlY2F0ZWQqLwoJICAgIEVuY29kZUhpbnRUeXBlW0VuY29kZUhpbnRUeXBlWyJNSU5fU0laRSJdID0gM10gPSAiTUlOX1NJWkUiOwoJICAgIC8qKgoJICAgICAqIFNwZWNpZmllcyBhIG1heGltdW0gYmFyY29kZSBzaXplICh0eXBlIHtAbGluayBEaW1lbnNpb259KS4gT25seSBhcHBsaWNhYmxlIHRvIERhdGEgTWF0cml4IG5vdy4KCSAgICAgKgoJICAgICAqIEBkZXByZWNhdGVkIHdpdGhvdXQgcmVwbGFjZW1lbnQKCSAgICAgKi8KCSAgICAvKkBEZXByZWNhdGVkKi8KCSAgICBFbmNvZGVIaW50VHlwZVtFbmNvZGVIaW50VHlwZVsiTUFYX1NJWkUiXSA9IDRdID0gIk1BWF9TSVpFIjsKCSAgICAvKioKCSAgICAgKiBTcGVjaWZpZXMgbWFyZ2luLCBpbiBwaXhlbHMsIHRvIHVzZSB3aGVuIGdlbmVyYXRpbmcgdGhlIGJhcmNvZGUuIFRoZSBtZWFuaW5nIGNhbiB2YXJ5CgkgICAgICogYnkgZm9ybWF0OyBmb3IgZXhhbXBsZSBpdCBjb250cm9scyBtYXJnaW4gYmVmb3JlIGFuZCBhZnRlciB0aGUgYmFyY29kZSBob3Jpem9udGFsbHkgZm9yCgkgICAgICogbW9zdCAxRCBmb3JtYXRzLiAoVHlwZSB7QGxpbmsgSW50ZWdlcn0sIG9yIHtAbGluayBTdHJpbmd9IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBpbnRlZ2VyIHZhbHVlKS4KCSAgICAgKi8KCSAgICBFbmNvZGVIaW50VHlwZVtFbmNvZGVIaW50VHlwZVsiTUFSR0lOIl0gPSA1XSA9ICJNQVJHSU4iOwoJICAgIC8qKgoJICAgICAqIFNwZWNpZmllcyB3aGV0aGVyIHRvIHVzZSBjb21wYWN0IG1vZGUgZm9yIFBERjQxNyAodHlwZSB7QGxpbmsgQm9vbGVhbn0sIG9yICJ0cnVlIiBvciAiZmFsc2UiCgkgICAgICoge0BsaW5rIFN0cmluZ30gdmFsdWUpLgoJICAgICAqLwoJICAgIEVuY29kZUhpbnRUeXBlW0VuY29kZUhpbnRUeXBlWyJQREY0MTdfQ09NUEFDVCJdID0gNl0gPSAiUERGNDE3X0NPTVBBQ1QiOwoJICAgIC8qKgoJICAgICAqIFNwZWNpZmllcyB3aGF0IGNvbXBhY3Rpb24gbW9kZSB0byB1c2UgZm9yIFBERjQxNyAodHlwZQoJICAgICAqIHtAbGluayBjb20uZ29vZ2xlLnp4aW5nLnBkZjQxNy5lbmNvZGVyLkNvbXBhY3Rpb24gQ29tcGFjdGlvbn0gb3Ige0BsaW5rIFN0cmluZ30gdmFsdWUgb2Ygb25lIG9mIGl0cwoJICAgICAqIGVudW0gdmFsdWVzKS4KCSAgICAgKi8KCSAgICBFbmNvZGVIaW50VHlwZVtFbmNvZGVIaW50VHlwZVsiUERGNDE3X0NPTVBBQ1RJT04iXSA9IDddID0gIlBERjQxN19DT01QQUNUSU9OIjsKCSAgICAvKioKCSAgICAgKiBTcGVjaWZpZXMgdGhlIG1pbmltdW0gYW5kIG1heGltdW0gbnVtYmVyIG9mIHJvd3MgYW5kIGNvbHVtbnMgZm9yIFBERjQxNyAodHlwZQoJICAgICAqIHtAbGluayBjb20uZ29vZ2xlLnp4aW5nLnBkZjQxNy5lbmNvZGVyLkRpbWVuc2lvbnMgRGltZW5zaW9uc30pLgoJICAgICAqLwoJICAgIEVuY29kZUhpbnRUeXBlW0VuY29kZUhpbnRUeXBlWyJQREY0MTdfRElNRU5TSU9OUyJdID0gOF0gPSAiUERGNDE3X0RJTUVOU0lPTlMiOwoJICAgIC8qKgoJICAgICAqIFNwZWNpZmllcyB0aGUgcmVxdWlyZWQgbnVtYmVyIG9mIGxheWVycyBmb3IgYW4gQXp0ZWMgY29kZS4KCSAgICAgKiBBIG5lZ2F0aXZlIG51bWJlciAoLTEsIC0yLCAtMywgLTQpIHNwZWNpZmllcyBhIGNvbXBhY3QgQXp0ZWMgY29kZS4KCSAgICAgKiAwIGluZGljYXRlcyB0byB1c2UgdGhlIG1pbmltdW0gbnVtYmVyIG9mIGxheWVycyAodGhlIGRlZmF1bHQpLgoJICAgICAqIEEgcG9zaXRpdmUgbnVtYmVyICgxLCAyLCAuLiAzMikgc3BlY2lmaWVzIGEgbm9ybWFsIChub24tY29tcGFjdCkgQXp0ZWMgY29kZS4KCSAgICAgKiAoVHlwZSB7QGxpbmsgSW50ZWdlcn0sIG9yIHtAbGluayBTdHJpbmd9IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBpbnRlZ2VyIHZhbHVlKS4KCSAgICAgKi8KCSAgICBFbmNvZGVIaW50VHlwZVtFbmNvZGVIaW50VHlwZVsiQVpURUNfTEFZRVJTIl0gPSA5XSA9ICJBWlRFQ19MQVlFUlMiOwoJICAgIC8qKgoJICAgICAqIFNwZWNpZmllcyB0aGUgZXhhY3QgdmVyc2lvbiBvZiBRUiBjb2RlIHRvIGJlIGVuY29kZWQuCgkgICAgICogKFR5cGUge0BsaW5rIEludGVnZXJ9LCBvciB7QGxpbmsgU3RyaW5nfSByZXByZXNlbnRhdGlvbiBvZiB0aGUgaW50ZWdlciB2YWx1ZSkuCgkgICAgICovCgkgICAgRW5jb2RlSGludFR5cGVbRW5jb2RlSGludFR5cGVbIlFSX1ZFUlNJT04iXSA9IDEwXSA9ICJRUl9WRVJTSU9OIjsKCX0pKEVuY29kZUhpbnRUeXBlIHx8IChFbmNvZGVIaW50VHlwZSA9IHt9KSk7CglleHBvcnRzLmRlZmF1bHQgPSBFbmNvZGVIaW50VHlwZTsKCgl9KTsKCgl2YXIgUmVlZFNvbG9tb25FbmNvZGVyXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CgkvKgoJICogQ29weXJpZ2h0IDIwMDggWlhpbmcgYXV0aG9ycwoJICoKCSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkgKgoJICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSAqCgkgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSAqLwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCgoKCS8qKgoJICogPHA+SW1wbGVtZW50cyBSZWVkLVNvbG9tb24gZW5jb2RpbmcsIGFzIHRoZSBuYW1lIGltcGxpZXMuPC9wPgoJICoKCSAqIEBhdXRob3IgU2VhbiBPd2VuCgkgKiBAYXV0aG9yIFdpbGxpYW0gUnVja2xpZGdlCgkgKi8KCXZhciBSZWVkU29sb21vbkVuY29kZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgLyoqCgkgICAgICogQSByZWVkIHNvbG9tb24gZXJyb3ItY29ycmVjdGluZyBlbmNvZGluZyBjb25zdHJ1Y3RvciBpcyBjcmVhdGVkIGJ5CgkgICAgICogcGFzc2luZyBhcyBHYWxvaXMgRmllbGQgd2l0aCBvZiBzaXplIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgY29kZQoJICAgICAqIHdvcmRzIChzeW1ib2xzKSBpbiB0aGUgYWxwaGFiZXQgKHRoZSBudW1iZXIgb2YgdmFsdWVzIGluIGVhY2gKCSAgICAgKiBlbGVtZW50IG9mIGFycmF5cyB0aGF0IGFyZSBlbmNvZGVkL2RlY29kZWQpLgoJICAgICAqIEBwYXJhbSBmaWVsZCBBIGdhbG9pcyBmaWVsZCB3aXRoIGEgbnVtYmVyIG9mIGVsZW1lbnRzIGVxdWFsIHRvIHRoZSBzaXplCgkgICAgICogb2YgdGhlIGFscGhhYmV0IG9mIHN5bWJvbHMgdG8gZW5jb2RlLgoJICAgICAqLwoJICAgIGZ1bmN0aW9uIFJlZWRTb2xvbW9uRW5jb2RlcihmaWVsZCkgewoJICAgICAgICB0aGlzLmZpZWxkID0gZmllbGQ7CgkgICAgICAgIHRoaXMuY2FjaGVkR2VuZXJhdG9ycyA9IFtdOwoJICAgICAgICB0aGlzLmNhY2hlZEdlbmVyYXRvcnMucHVzaChuZXcgR2VuZXJpY0dGUG9seV8xLmRlZmF1bHQoZmllbGQsIEludDMyQXJyYXkuZnJvbShbMV0pKSk7CgkgICAgfQoJICAgIFJlZWRTb2xvbW9uRW5jb2Rlci5wcm90b3R5cGUuYnVpbGRHZW5lcmF0b3IgPSBmdW5jdGlvbiAoZGVncmVlIC8qaW50Ki8pIHsKCSAgICAgICAgdmFyIGNhY2hlZEdlbmVyYXRvcnMgPSB0aGlzLmNhY2hlZEdlbmVyYXRvcnM7CgkgICAgICAgIGlmIChkZWdyZWUgPj0gY2FjaGVkR2VuZXJhdG9ycy5sZW5ndGgpIHsKCSAgICAgICAgICAgIHZhciBsYXN0R2VuZXJhdG9yID0gY2FjaGVkR2VuZXJhdG9yc1tjYWNoZWRHZW5lcmF0b3JzLmxlbmd0aCAtIDFdOwoJICAgICAgICAgICAgdmFyIGZpZWxkID0gdGhpcy5maWVsZDsKCSAgICAgICAgICAgIGZvciAodmFyIGQgPSBjYWNoZWRHZW5lcmF0b3JzLmxlbmd0aDsgZCA8PSBkZWdyZWU7IGQrKykgewoJICAgICAgICAgICAgICAgIHZhciBuZXh0R2VuZXJhdG9yID0gbGFzdEdlbmVyYXRvci5tdWx0aXBseShuZXcgR2VuZXJpY0dGUG9seV8xLmRlZmF1bHQoZmllbGQsIEludDMyQXJyYXkuZnJvbShbMSwgZmllbGQuZXhwKGQgLSAxICsgZmllbGQuZ2V0R2VuZXJhdG9yQmFzZSgpKV0pKSk7CgkgICAgICAgICAgICAgICAgY2FjaGVkR2VuZXJhdG9ycy5wdXNoKG5leHRHZW5lcmF0b3IpOwoJICAgICAgICAgICAgICAgIGxhc3RHZW5lcmF0b3IgPSBuZXh0R2VuZXJhdG9yOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBjYWNoZWRHZW5lcmF0b3JzW2RlZ3JlZV07CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiA8cD5FbmNvZGUgYSBzZXF1ZW5jZSBvZiBjb2RlIHdvcmRzIChzeW1ib2xzKSB1c2luZyBSZWVkLVNvbG9tb24gdG8gYWxsb3cgZGVjb2RlcnMKCSAgICAgKiB0byBkZXRlY3QgYW5kIGNvcnJlY3QgZXJyb3JzIHRoYXQgbWF5IGhhdmUgYmVlbiBpbnRyb2R1Y2VkIHdoZW4gdGhlIHJlc3VsdGluZwoJICAgICAqIGRhdGEgaXMgc3RvcmVkIG9yIHRyYW5zbWl0dGVkLjwvcD4KCSAgICAgKgoJICAgICAqIEBwYXJhbSB0b0VuY29kZSBhcnJheSB1c2VkIGZvciBib3RoIGFuZCBvdXRwdXQuIENhbGxlciBpbml0aWFsaXplcyB0aGUgYXJyYXkgd2l0aAoJICAgICAqIHRoZSBjb2RlIHdvcmRzIChzeW1ib2xzKSB0byBiZSBlbmNvZGVkIGZvbGxvd2VkIGJ5IGVtcHR5IGVsZW1lbnRzIGFsbG9jYXRlZCB0byBtYWtlCgkgICAgICogc3BhY2UgZm9yIGVycm9yLWNvcnJlY3Rpb24gY29kZSB3b3JkcyBpbiB0aGUgZW5jb2RlZCBvdXRwdXQuIFRoZSBhcnJheSBjb250YWlucwoJICAgICAqIHRoZSBlbmNkb2RlZCBvdXRwdXQgd2hlbiBlbmNvZGUgcmV0dXJucy4gQ29kZSB3b3JkcyBhcmUgZW5jb2RlZCBhcyBudW1iZXJzIGZyb20KCSAgICAgKiAwIHRvIG4tMSwgd2hlcmUgbiBpcyB0aGUgbnVtYmVyIG9mIHBvc3NpYmxlIGNvZGUgd29yZHMgKHN5bWJvbHMpLCBhcyBkZXRlcm1pbmVkCgkgICAgICogYnkgdGhlIHNpemUgb2YgdGhlIEdhbG9pcyBGaWVsZCBwYXNzZWQgaW4gdGhlIGNvbnN0cnVjdG9yIG9mIHRoaXMgb2JqZWN0LgoJICAgICAqIEBwYXJhbSBlY0J5dGVzIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgcmVzZXJ2ZWQgaW4gdGhlIGFycmF5IChmaXJzdCBwYXJhbWV0ZXIpCgkgICAgICogdG8gc3RvcmUgZXJyb3ItY29ycmVjdGlvbiBjb2RlIHdvcmRzLiBUaHVzLCB0aGUgbnVtYmVyIG9mIGNvZGUgd29yZHMgKHN5bWJvbHMpCgkgICAgICogdG8gZW5jb2RlIGluIHRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgdGh1cyB0b0VuY29kZS5sZW5ndGggLSBlY0J5dGVzLgoJICAgICAqIE5vdGUsIHRoZSB1c2Ugb2YgImJ5dGVzIiBpbiB0aGUgbmFtZSBvZiB0aGlzIHBhcmFtZXRlciBpcyBtaXNsZWFkaW5nLCBhcyB0aGVyZSBtYXkKCSAgICAgKiBiZSBtb3JlIG9yIGZld2VyIHRoYW4gMjU2IHN5bWJvbHMgYmVpbmcgZW5jb2RlZCwgYXMgZGV0ZXJtaW5lZCBieSB0aGUgbnVtYmVyIG9mCgkgICAgICogZWxlbWVudHMgaW4gdGhlIEdhbG9pcyBGaWVsZCBwYXNzZWQgYXMgYSBjb25zdHJ1Y3RvciB0byB0aGlzIG9iamVjdC4KCSAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiB0aHJvd24gaW4gcmVzcG9uc2UgdG8gdmFsaWRhdGlvbiBlcnJyb3MuCgkgICAgICovCgkgICAgUmVlZFNvbG9tb25FbmNvZGVyLnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbiAodG9FbmNvZGUsIGVjQnl0ZXMgLyppbnQqLykgewoJICAgICAgICBpZiAoZWNCeXRlcyA9PT0gMCkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoJ05vIGVycm9yIGNvcnJlY3Rpb24gYnl0ZXMnKTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgZGF0YUJ5dGVzID0gdG9FbmNvZGUubGVuZ3RoIC0gZWNCeXRlczsKCSAgICAgICAgaWYgKGRhdGFCeXRlcyA8PSAwKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgnTm8gZGF0YSBieXRlcyBwcm92aWRlZCcpOwoJICAgICAgICB9CgkgICAgICAgIHZhciBnZW5lcmF0b3IgPSB0aGlzLmJ1aWxkR2VuZXJhdG9yKGVjQnl0ZXMpOwoJICAgICAgICB2YXIgaW5mb0NvZWZmaWNpZW50cyA9IG5ldyBJbnQzMkFycmF5KGRhdGFCeXRlcyk7CgkgICAgICAgIFN5c3RlbV8xLmRlZmF1bHQuYXJyYXljb3B5KHRvRW5jb2RlLCAwLCBpbmZvQ29lZmZpY2llbnRzLCAwLCBkYXRhQnl0ZXMpOwoJICAgICAgICB2YXIgaW5mbyA9IG5ldyBHZW5lcmljR0ZQb2x5XzEuZGVmYXVsdCh0aGlzLmZpZWxkLCBpbmZvQ29lZmZpY2llbnRzKTsKCSAgICAgICAgaW5mbyA9IGluZm8ubXVsdGlwbHlCeU1vbm9taWFsKGVjQnl0ZXMsIDEpOwoJICAgICAgICB2YXIgcmVtYWluZGVyID0gaW5mby5kaXZpZGUoZ2VuZXJhdG9yKVsxXTsKCSAgICAgICAgdmFyIGNvZWZmaWNpZW50cyA9IHJlbWFpbmRlci5nZXRDb2VmZmljaWVudHMoKTsKCSAgICAgICAgdmFyIG51bVplcm9Db2VmZmljaWVudHMgPSBlY0J5dGVzIC0gY29lZmZpY2llbnRzLmxlbmd0aDsKCSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1aZXJvQ29lZmZpY2llbnRzOyBpKyspIHsKCSAgICAgICAgICAgIHRvRW5jb2RlW2RhdGFCeXRlcyArIGldID0gMDsKCSAgICAgICAgfQoJICAgICAgICBTeXN0ZW1fMS5kZWZhdWx0LmFycmF5Y29weShjb2VmZmljaWVudHMsIDAsIHRvRW5jb2RlLCBkYXRhQnl0ZXMgKyBudW1aZXJvQ29lZmZpY2llbnRzLCBjb2VmZmljaWVudHMubGVuZ3RoKTsKCSAgICB9OwoJICAgIHJldHVybiBSZWVkU29sb21vbkVuY29kZXI7Cgl9KCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gUmVlZFNvbG9tb25FbmNvZGVyOwoKCX0pOwoKCXZhciBNYXNrVXRpbF8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJLyoKCSAqIENvcHlyaWdodCAyMDA4IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgoJLyoqCgkgKiBAYXV0aG9yIFNhdG9ydSBUYWthYmF5YXNoaQoJICogQGF1dGhvciBEYW5pZWwgU3dpdGtpbgoJICogQGF1dGhvciBTZWFuIE93ZW4KCSAqLwoJdmFyIE1hc2tVdGlsID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIGZ1bmN0aW9uIE1hc2tVdGlsKCkgewoJICAgICAgICAvLyBkbyBub3RoaW5nCgkgICAgfQoJICAgIC8qKgoJICAgICAqIEFwcGx5IG1hc2sgcGVuYWx0eSBydWxlIDEgYW5kIHJldHVybiB0aGUgcGVuYWx0eS4gRmluZCByZXBldGl0aXZlIGNlbGxzIHdpdGggdGhlIHNhbWUgY29sb3IgYW5kCgkgICAgICogZ2l2ZSBwZW5hbHR5IHRvIHRoZW0uIEV4YW1wbGU6IDAwMDAwIG9yIDExMTExLgoJICAgICAqLwoJICAgIE1hc2tVdGlsLmFwcGx5TWFza1BlbmFsdHlSdWxlMSA9IGZ1bmN0aW9uIChtYXRyaXgpIHsKCSAgICAgICAgcmV0dXJuIE1hc2tVdGlsLmFwcGx5TWFza1BlbmFsdHlSdWxlMUludGVybmFsKG1hdHJpeCwgdHJ1ZSkgKyBNYXNrVXRpbC5hcHBseU1hc2tQZW5hbHR5UnVsZTFJbnRlcm5hbChtYXRyaXgsIGZhbHNlKTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEFwcGx5IG1hc2sgcGVuYWx0eSBydWxlIDIgYW5kIHJldHVybiB0aGUgcGVuYWx0eS4gRmluZCAyeDIgYmxvY2tzIHdpdGggdGhlIHNhbWUgY29sb3IgYW5kIGdpdmUKCSAgICAgKiBwZW5hbHR5IHRvIHRoZW0uIFRoaXMgaXMgYWN0dWFsbHkgZXF1aXZhbGVudCB0byB0aGUgc3BlYydzIHJ1bGUsIHdoaWNoIGlzIHRvIGZpbmQgTXhOIGJsb2NrcyBhbmQgZ2l2ZSBhCgkgICAgICogcGVuYWx0eSBwcm9wb3J0aW9uYWwgdG8gKE0tMSl4KE4tMSksIGJlY2F1c2UgdGhpcyBpcyB0aGUgbnVtYmVyIG9mIDJ4MiBibG9ja3MgaW5zaWRlIHN1Y2ggYSBibG9jay4KCSAgICAgKi8KCSAgICBNYXNrVXRpbC5hcHBseU1hc2tQZW5hbHR5UnVsZTIgPSBmdW5jdGlvbiAobWF0cml4KSB7CgkgICAgICAgIHZhciBwZW5hbHR5ID0gMDsKCSAgICAgICAgdmFyIGFycmF5ID0gbWF0cml4LmdldEFycmF5KCk7CgkgICAgICAgIHZhciB3aWR0aCA9IG1hdHJpeC5nZXRXaWR0aCgpOwoJICAgICAgICB2YXIgaGVpZ2h0ID0gbWF0cml4LmdldEhlaWdodCgpOwoJICAgICAgICBmb3IgKHZhciB5ID0gMDsgeSA8IGhlaWdodCAtIDE7IHkrKykgewoJICAgICAgICAgICAgdmFyIGFycmF5WSA9IGFycmF5W3ldOwoJICAgICAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCB3aWR0aCAtIDE7IHgrKykgewoJICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IGFycmF5WVt4XTsKCSAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT09IGFycmF5WVt4ICsgMV0gJiYgdmFsdWUgPT09IGFycmF5W3kgKyAxXVt4XSAmJiB2YWx1ZSA9PT0gYXJyYXlbeSArIDFdW3ggKyAxXSkgewoJICAgICAgICAgICAgICAgICAgICBwZW5hbHR5Kys7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBNYXNrVXRpbC5OMiAqIHBlbmFsdHk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBBcHBseSBtYXNrIHBlbmFsdHkgcnVsZSAzIGFuZCByZXR1cm4gdGhlIHBlbmFsdHkuIEZpbmQgY29uc2VjdXRpdmUgcnVucyBvZiAxOjE6MzoxOjE6NAoJICAgICAqIHN0YXJ0aW5nIHdpdGggYmxhY2ssIG9yIDQ6MToxOjM6MToxIHN0YXJ0aW5nIHdpdGggd2hpdGUsIGFuZCBnaXZlIHBlbmFsdHkgdG8gdGhlbS4gIElmIHdlCgkgICAgICogZmluZCBwYXR0ZXJucyBsaWtlIDAwMDAxMDExMTAxMDAwMCwgd2UgZ2l2ZSBwZW5hbHR5IG9uY2UuCgkgICAgICovCgkgICAgTWFza1V0aWwuYXBwbHlNYXNrUGVuYWx0eVJ1bGUzID0gZnVuY3Rpb24gKG1hdHJpeCkgewoJICAgICAgICB2YXIgbnVtUGVuYWx0aWVzID0gMDsKCSAgICAgICAgdmFyIGFycmF5ID0gbWF0cml4LmdldEFycmF5KCk7CgkgICAgICAgIHZhciB3aWR0aCA9IG1hdHJpeC5nZXRXaWR0aCgpOwoJICAgICAgICB2YXIgaGVpZ2h0ID0gbWF0cml4LmdldEhlaWdodCgpOwoJICAgICAgICBmb3IgKHZhciB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKSB7CgkgICAgICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHsKCSAgICAgICAgICAgICAgICB2YXIgYXJyYXlZID0gYXJyYXlbeV07IC8vIFdlIGNhbiBhdCBsZWFzdCBvcHRpbWl6ZSB0aGlzIGFjY2VzcwoJICAgICAgICAgICAgICAgIGlmICh4ICsgNiA8IHdpZHRoICYmCgkgICAgICAgICAgICAgICAgICAgIGFycmF5WVt4XSA9PT0gMSAmJgoJICAgICAgICAgICAgICAgICAgICBhcnJheVlbeCArIDFdID09PSAwICYmCgkgICAgICAgICAgICAgICAgICAgIGFycmF5WVt4ICsgMl0gPT09IDEgJiYKCSAgICAgICAgICAgICAgICAgICAgYXJyYXlZW3ggKyAzXSA9PT0gMSAmJgoJICAgICAgICAgICAgICAgICAgICBhcnJheVlbeCArIDRdID09PSAxICYmCgkgICAgICAgICAgICAgICAgICAgIGFycmF5WVt4ICsgNV0gPT09IDAgJiYKCSAgICAgICAgICAgICAgICAgICAgYXJyYXlZW3ggKyA2XSA9PT0gMSAmJgoJICAgICAgICAgICAgICAgICAgICAoTWFza1V0aWwuaXNXaGl0ZUhvcml6b250YWwoYXJyYXlZLCB4IC0gNCwgeCkgfHwgTWFza1V0aWwuaXNXaGl0ZUhvcml6b250YWwoYXJyYXlZLCB4ICsgNywgeCArIDExKSkpIHsKCSAgICAgICAgICAgICAgICAgICAgbnVtUGVuYWx0aWVzKys7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGlmICh5ICsgNiA8IGhlaWdodCAmJgoJICAgICAgICAgICAgICAgICAgICBhcnJheVt5XVt4XSA9PT0gMSAmJgoJICAgICAgICAgICAgICAgICAgICBhcnJheVt5ICsgMV1beF0gPT09IDAgJiYKCSAgICAgICAgICAgICAgICAgICAgYXJyYXlbeSArIDJdW3hdID09PSAxICYmCgkgICAgICAgICAgICAgICAgICAgIGFycmF5W3kgKyAzXVt4XSA9PT0gMSAmJgoJICAgICAgICAgICAgICAgICAgICBhcnJheVt5ICsgNF1beF0gPT09IDEgJiYKCSAgICAgICAgICAgICAgICAgICAgYXJyYXlbeSArIDVdW3hdID09PSAwICYmCgkgICAgICAgICAgICAgICAgICAgIGFycmF5W3kgKyA2XVt4XSA9PT0gMSAmJgoJICAgICAgICAgICAgICAgICAgICAoTWFza1V0aWwuaXNXaGl0ZVZlcnRpY2FsKGFycmF5LCB4LCB5IC0gNCwgeSkgfHwgTWFza1V0aWwuaXNXaGl0ZVZlcnRpY2FsKGFycmF5LCB4LCB5ICsgNywgeSArIDExKSkpIHsKCSAgICAgICAgICAgICAgICAgICAgbnVtUGVuYWx0aWVzKys7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBudW1QZW5hbHRpZXMgKiBNYXNrVXRpbC5OMzsKCSAgICB9OwoJICAgIE1hc2tVdGlsLmlzV2hpdGVIb3Jpem9udGFsID0gZnVuY3Rpb24gKHJvd0FycmF5LCBmcm9tIC8qaW50Ki8sIHRvIC8qaW50Ki8pIHsKCSAgICAgICAgZnJvbSA9IE1hdGgubWF4KGZyb20sIDApOwoJICAgICAgICB0byA9IE1hdGgubWluKHRvLCByb3dBcnJheS5sZW5ndGgpOwoJICAgICAgICBmb3IgKHZhciBpID0gZnJvbTsgaSA8IHRvOyBpKyspIHsKCSAgICAgICAgICAgIGlmIChyb3dBcnJheVtpXSA9PT0gMSkgewoJICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gdHJ1ZTsKCSAgICB9OwoJICAgIE1hc2tVdGlsLmlzV2hpdGVWZXJ0aWNhbCA9IGZ1bmN0aW9uIChhcnJheSwgY29sIC8qaW50Ki8sIGZyb20gLyppbnQqLywgdG8gLyppbnQqLykgewoJICAgICAgICBmcm9tID0gTWF0aC5tYXgoZnJvbSwgMCk7CgkgICAgICAgIHRvID0gTWF0aC5taW4odG8sIGFycmF5Lmxlbmd0aCk7CgkgICAgICAgIGZvciAodmFyIGkgPSBmcm9tOyBpIDwgdG87IGkrKykgewoJICAgICAgICAgICAgaWYgKGFycmF5W2ldW2NvbF0gPT09IDEpIHsKCSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHRydWU7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBBcHBseSBtYXNrIHBlbmFsdHkgcnVsZSA0IGFuZCByZXR1cm4gdGhlIHBlbmFsdHkuIENhbGN1bGF0ZSB0aGUgcmF0aW8gb2YgZGFyayBjZWxscyBhbmQgZ2l2ZQoJICAgICAqIHBlbmFsdHkgaWYgdGhlIHJhdGlvIGlzIGZhciBmcm9tIDUwJS4gSXQgZ2l2ZXMgMTAgcGVuYWx0eSBmb3IgNSUgZGlzdGFuY2UuCgkgICAgICovCgkgICAgTWFza1V0aWwuYXBwbHlNYXNrUGVuYWx0eVJ1bGU0ID0gZnVuY3Rpb24gKG1hdHJpeCkgewoJICAgICAgICB2YXIgbnVtRGFya0NlbGxzID0gMDsKCSAgICAgICAgdmFyIGFycmF5ID0gbWF0cml4LmdldEFycmF5KCk7CgkgICAgICAgIHZhciB3aWR0aCA9IG1hdHJpeC5nZXRXaWR0aCgpOwoJICAgICAgICB2YXIgaGVpZ2h0ID0gbWF0cml4LmdldEhlaWdodCgpOwoJICAgICAgICBmb3IgKHZhciB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKSB7CgkgICAgICAgICAgICB2YXIgYXJyYXlZID0gYXJyYXlbeV07CgkgICAgICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHsKCSAgICAgICAgICAgICAgICBpZiAoYXJyYXlZW3hdID09PSAxKSB7CgkgICAgICAgICAgICAgICAgICAgIG51bURhcmtDZWxscysrOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICB2YXIgbnVtVG90YWxDZWxscyA9IG1hdHJpeC5nZXRIZWlnaHQoKSAqIG1hdHJpeC5nZXRXaWR0aCgpOwoJICAgICAgICB2YXIgZml2ZVBlcmNlbnRWYXJpYW5jZXMgPSBNYXRoLmZsb29yKE1hdGguYWJzKG51bURhcmtDZWxscyAqIDIgLSBudW1Ub3RhbENlbGxzKSAqIDEwIC8gbnVtVG90YWxDZWxscyk7CgkgICAgICAgIHJldHVybiBmaXZlUGVyY2VudFZhcmlhbmNlcyAqIE1hc2tVdGlsLk40OwoJICAgIH07CgkgICAgLyoqCgkgICAgICogUmV0dXJuIHRoZSBtYXNrIGJpdCBmb3IgImdldE1hc2tQYXR0ZXJuIiBhdCAieCIgYW5kICJ5Ii4gU2VlIDguOCBvZiBKSVNYMDUxMDoyMDA0IGZvciBtYXNrCgkgICAgICogcGF0dGVybiBjb25kaXRpb25zLgoJICAgICAqLwoJICAgIE1hc2tVdGlsLmdldERhdGFNYXNrQml0ID0gZnVuY3Rpb24gKG1hc2tQYXR0ZXJuIC8qaW50Ki8sIHggLyppbnQqLywgeSAvKmludCovKSB7CgkgICAgICAgIHZhciBpbnRlcm1lZGlhdGU7IC8qaW50Ki8KCSAgICAgICAgdmFyIHRlbXA7IC8qaW50Ki8KCSAgICAgICAgc3dpdGNoIChtYXNrUGF0dGVybikgewoJICAgICAgICAgICAgY2FzZSAwOgoJICAgICAgICAgICAgICAgIGludGVybWVkaWF0ZSA9ICh5ICsgeCkgJiAweDE7CgkgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICBjYXNlIDE6CgkgICAgICAgICAgICAgICAgaW50ZXJtZWRpYXRlID0geSAmIDB4MTsKCSAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgIGNhc2UgMjoKCSAgICAgICAgICAgICAgICBpbnRlcm1lZGlhdGUgPSB4ICUgMzsKCSAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgIGNhc2UgMzoKCSAgICAgICAgICAgICAgICBpbnRlcm1lZGlhdGUgPSAoeSArIHgpICUgMzsKCSAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgIGNhc2UgNDoKCSAgICAgICAgICAgICAgICBpbnRlcm1lZGlhdGUgPSAoTWF0aC5mbG9vcih5IC8gMikgKyBNYXRoLmZsb29yKHggLyAzKSkgJiAweDE7CgkgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICBjYXNlIDU6CgkgICAgICAgICAgICAgICAgdGVtcCA9IHkgKiB4OwoJICAgICAgICAgICAgICAgIGludGVybWVkaWF0ZSA9ICh0ZW1wICYgMHgxKSArICh0ZW1wICUgMyk7CgkgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICBjYXNlIDY6CgkgICAgICAgICAgICAgICAgdGVtcCA9IHkgKiB4OwoJICAgICAgICAgICAgICAgIGludGVybWVkaWF0ZSA9ICgodGVtcCAmIDB4MSkgKyAodGVtcCAlIDMpKSAmIDB4MTsKCSAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgIGNhc2UgNzoKCSAgICAgICAgICAgICAgICB0ZW1wID0geSAqIHg7CgkgICAgICAgICAgICAgICAgaW50ZXJtZWRpYXRlID0gKCh0ZW1wICUgMykgKyAoKHkgKyB4KSAmIDB4MSkpICYgMHgxOwoJICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgZGVmYXVsdDoKCSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgnSW52YWxpZCBtYXNrIHBhdHRlcm46ICcgKyBtYXNrUGF0dGVybik7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIGludGVybWVkaWF0ZSA9PT0gMDsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEhlbHBlciBmdW5jdGlvbiBmb3IgYXBwbHlNYXNrUGVuYWx0eVJ1bGUxLiBXZSBuZWVkIHRoaXMgZm9yIGRvaW5nIHRoaXMgY2FsY3VsYXRpb24gaW4gYm90aAoJICAgICAqIHZlcnRpY2FsIGFuZCBob3Jpem9udGFsIG9yZGVycyByZXNwZWN0aXZlbHkuCgkgICAgICovCgkgICAgTWFza1V0aWwuYXBwbHlNYXNrUGVuYWx0eVJ1bGUxSW50ZXJuYWwgPSBmdW5jdGlvbiAobWF0cml4LCBpc0hvcml6b250YWwpIHsKCSAgICAgICAgdmFyIHBlbmFsdHkgPSAwOwoJICAgICAgICB2YXIgaUxpbWl0ID0gaXNIb3Jpem9udGFsID8gbWF0cml4LmdldEhlaWdodCgpIDogbWF0cml4LmdldFdpZHRoKCk7CgkgICAgICAgIHZhciBqTGltaXQgPSBpc0hvcml6b250YWwgPyBtYXRyaXguZ2V0V2lkdGgoKSA6IG1hdHJpeC5nZXRIZWlnaHQoKTsKCSAgICAgICAgdmFyIGFycmF5ID0gbWF0cml4LmdldEFycmF5KCk7CgkgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaUxpbWl0OyBpKyspIHsKCSAgICAgICAgICAgIHZhciBudW1TYW1lQml0Q2VsbHMgPSAwOwoJICAgICAgICAgICAgdmFyIHByZXZCaXQgPSAtMTsKCSAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgakxpbWl0OyBqKyspIHsKCSAgICAgICAgICAgICAgICB2YXIgYml0ID0gaXNIb3Jpem9udGFsID8gYXJyYXlbaV1bal0gOiBhcnJheVtqXVtpXTsKCSAgICAgICAgICAgICAgICBpZiAoYml0ID09PSBwcmV2Qml0KSB7CgkgICAgICAgICAgICAgICAgICAgIG51bVNhbWVCaXRDZWxscysrOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICAgICAgaWYgKG51bVNhbWVCaXRDZWxscyA+PSA1KSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBwZW5hbHR5ICs9IE1hc2tVdGlsLk4xICsgKG51bVNhbWVCaXRDZWxscyAtIDUpOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIG51bVNhbWVCaXRDZWxscyA9IDE7IC8vIEluY2x1ZGUgdGhlIGNlbGwgaXRzZWxmLgoJICAgICAgICAgICAgICAgICAgICBwcmV2Qml0ID0gYml0OwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGlmIChudW1TYW1lQml0Q2VsbHMgPj0gNSkgewoJICAgICAgICAgICAgICAgIHBlbmFsdHkgKz0gTWFza1V0aWwuTjEgKyAobnVtU2FtZUJpdENlbGxzIC0gNSk7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHBlbmFsdHk7CgkgICAgfTsKCSAgICAvLyBQZW5hbHR5IHdlaWdodHMgZnJvbSBzZWN0aW9uIDYuOC4yLjEKCSAgICBNYXNrVXRpbC5OMSA9IDM7CgkgICAgTWFza1V0aWwuTjIgPSAzOwoJICAgIE1hc2tVdGlsLk4zID0gNDA7CgkgICAgTWFza1V0aWwuTjQgPSAxMDsKCSAgICByZXR1cm4gTWFza1V0aWw7Cgl9KCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gTWFza1V0aWw7CgoJfSk7CgoJdmFyIEJ5dGVNYXRyaXhfMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCS8qCgkgKiBDb3B5cmlnaHQgMjAwOCBaWGluZyBhdXRob3JzCgkgKgoJICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSAqCgkgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJICoKCSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJICovCgl2YXIgX192YWx1ZXMgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX192YWx1ZXMpIHx8IGZ1bmN0aW9uKG8pIHsKCSAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09ICJmdW5jdGlvbiIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDsKCSAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTsKCSAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09ICJudW1iZXIiKSByZXR1cm4gewoJICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7CgkgICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwOwoJICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9OwoJICAgICAgICB9CgkgICAgfTsKCSAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyAiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS4iIDogIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC4iKTsKCX07CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJLypuYW1lc3BhY2UgY29tLmdvb2dsZS56eGluZy5xcmNvZGUuZW5jb2RlciB7Ki8KCS8qaW1wb3J0IGphdmEudXRpbC5BcnJheXM7Ki8KCgoJLyoqCgkgKiBKQVZBUE9SVDogVGhlIG9yaWdpbmFsIGNvZGUgd2FzIGEgMkQgYXJyYXkgb2YgaW50cywgYnV0IHNpbmNlIGl0IG9ubHkgZXZlciBnZXRzIGFzc2lnbmVkCgkgKiAtMSwgMCwgYW5kIDEsIEknbSBnb2luZyB0byB1c2UgbGVzcyBtZW1vcnkgYW5kIGdvIHdpdGggYnl0ZXMuCgkgKgoJICogQGF1dGhvciBkc3dpdGtpbkBnb29nbGUuY29tIChEYW5pZWwgU3dpdGtpbikKCSAqLwoJdmFyIEJ5dGVNYXRyaXggPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgZnVuY3Rpb24gQnl0ZU1hdHJpeCh3aWR0aCAvKmludCovLCBoZWlnaHQgLyppbnQqLykgewoJICAgICAgICB0aGlzLndpZHRoID0gd2lkdGg7CgkgICAgICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0OwoJICAgICAgICB2YXIgYnl0ZXMgPSBuZXcgQXJyYXkoaGVpZ2h0KTsgLy8gW2hlaWdodF1bd2lkdGhdCgkgICAgICAgIGZvciAodmFyIGkgPSAwOyBpICE9PSBoZWlnaHQ7IGkrKykgewoJICAgICAgICAgICAgYnl0ZXNbaV0gPSBuZXcgVWludDhBcnJheSh3aWR0aCk7CgkgICAgICAgIH0KCSAgICAgICAgdGhpcy5ieXRlcyA9IGJ5dGVzOwoJICAgIH0KCSAgICBCeXRlTWF0cml4LnByb3RvdHlwZS5nZXRIZWlnaHQgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmhlaWdodDsKCSAgICB9OwoJICAgIEJ5dGVNYXRyaXgucHJvdG90eXBlLmdldFdpZHRoID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy53aWR0aDsKCSAgICB9OwoJICAgIEJ5dGVNYXRyaXgucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uICh4IC8qaW50Ki8sIHkgLyppbnQqLykgewoJICAgICAgICByZXR1cm4gdGhpcy5ieXRlc1t5XVt4XTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEByZXR1cm4gYW4gaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gYXMgYnl0ZXMsIGluIHJvdy1tYWpvciBvcmRlci4gYXJyYXlbeV1beF0gcmVwcmVzZW50cyBwb2ludCAoeCx5KQoJICAgICAqLwoJICAgIEJ5dGVNYXRyaXgucHJvdG90eXBlLmdldEFycmF5ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5ieXRlczsKCSAgICB9OwoJICAgIC8vIFRZUEVTQ1JJUFRQT1JUOiBwcmVmZmVyIHRvIGxldCB0d28gbWV0aG9kcyBpbnN0ZWFkIG9mIG92ZXJyaWRlIHRvIGF2b2lkIHR5cGUgY29tcGFyaXNvbiBpbnNpZGUKCSAgICBCeXRlTWF0cml4LnByb3RvdHlwZS5zZXROdW1iZXIgPSBmdW5jdGlvbiAoeCAvKmludCovLCB5IC8qaW50Ki8sIHZhbHVlIC8qYnl0ZXxpbnQqLykgewoJICAgICAgICB0aGlzLmJ5dGVzW3ldW3hdID0gdmFsdWU7CgkgICAgfTsKCSAgICAvLyBwdWJsaWMgc2V0KHg6IG51bWJlciAvKmludCovLCB5OiBudW1iZXIgLyppbnQqLywgdmFsdWU6IG51bWJlciAvKmludCovKTogdm9pZCB7CgkgICAgLy8gICBieXRlc1t5XVt4XSA9IChieXRlKSB2YWx1ZQoJICAgIC8vIH0KCSAgICBCeXRlTWF0cml4LnByb3RvdHlwZS5zZXRCb29sZWFuID0gZnVuY3Rpb24gKHggLyppbnQqLywgeSAvKmludCovLCB2YWx1ZSkgewoJICAgICAgICB0aGlzLmJ5dGVzW3ldW3hdID0gLyooYnl0ZSkgKi8gKHZhbHVlID8gMSA6IDApOwoJICAgIH07CgkgICAgQnl0ZU1hdHJpeC5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiAodmFsdWUgLypieXRlKi8pIHsKCSAgICAgICAgdmFyIGVfMSwgX2E7CgkgICAgICAgIHRyeSB7CgkgICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKHRoaXMuYnl0ZXMpLCBfYyA9IF9iLm5leHQoKTsgIV9jLmRvbmU7IF9jID0gX2IubmV4dCgpKSB7CgkgICAgICAgICAgICAgICAgdmFyIGFCeXRlID0gX2MudmFsdWU7CgkgICAgICAgICAgICAgICAgQXJyYXlzXzEuZGVmYXVsdC5maWxsKGFCeXRlLCB2YWx1ZSk7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH0KCSAgICAgICAgZmluYWxseSB7CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIGlmIChfYyAmJiAhX2MuZG9uZSAmJiAoX2EgPSBfYi5yZXR1cm4pKSBfYS5jYWxsKF9iKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH0KCSAgICAgICAgfQoJICAgIH07CgkgICAgQnl0ZU1hdHJpeC5wcm90b3R5cGUuZXF1YWxzID0gZnVuY3Rpb24gKG8pIHsKCSAgICAgICAgaWYgKCEobyBpbnN0YW5jZW9mIEJ5dGVNYXRyaXgpKSB7CgkgICAgICAgICAgICByZXR1cm4gZmFsc2U7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIG90aGVyID0gbzsKCSAgICAgICAgaWYgKHRoaXMud2lkdGggIT09IG90aGVyLndpZHRoKSB7CgkgICAgICAgICAgICByZXR1cm4gZmFsc2U7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKHRoaXMuaGVpZ2h0ICE9PSBvdGhlci5oZWlnaHQpIHsKCSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKCSAgICAgICAgfQoJICAgICAgICBmb3IgKHZhciB5ID0gMCwgaGVpZ2h0ID0gdGhpcy5oZWlnaHQ7IHkgPCBoZWlnaHQ7ICsreSkgewoJICAgICAgICAgICAgdmFyIGJ5dGVzWSA9IHRoaXMuYnl0ZXNbeV07CgkgICAgICAgICAgICB2YXIgb3RoZXJCeXRlc1kgPSBvdGhlci5ieXRlc1t5XTsKCSAgICAgICAgICAgIGZvciAodmFyIHggPSAwLCB3aWR0aCA9IHRoaXMud2lkdGg7IHggPCB3aWR0aDsgKyt4KSB7CgkgICAgICAgICAgICAgICAgaWYgKGJ5dGVzWVt4XSAhPT0gb3RoZXJCeXRlc1lbeF0pIHsKCSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gdHJ1ZTsKCSAgICB9OwoJICAgIC8qQE92ZXJyaWRlKi8KCSAgICBCeXRlTWF0cml4LnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWlsZGVyXzEuZGVmYXVsdCgpOyAvLyAoMiAqIHdpZHRoICogaGVpZ2h0ICsgMikKCSAgICAgICAgZm9yICh2YXIgeSA9IDAsIGhlaWdodCA9IHRoaXMuaGVpZ2h0OyB5IDwgaGVpZ2h0OyArK3kpIHsKCSAgICAgICAgICAgIHZhciBieXRlc1kgPSB0aGlzLmJ5dGVzW3ldOwoJICAgICAgICAgICAgZm9yICh2YXIgeCA9IDAsIHdpZHRoID0gdGhpcy53aWR0aDsgeCA8IHdpZHRoOyArK3gpIHsKCSAgICAgICAgICAgICAgICBzd2l0Y2ggKGJ5dGVzWVt4XSkgewoJICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CgkgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgMCcpOwoJICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKCSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAxJyk7CgkgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKCSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgJyk7CgkgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCdcbicpOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKCSAgICB9OwoJICAgIHJldHVybiBCeXRlTWF0cml4OwoJfSgpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IEJ5dGVNYXRyaXg7CgoJfSk7CgoJdmFyIFFSQ29kZV8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJLyoKCSAqIENvcHlyaWdodCAyMDA4IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgoJLyoqCgkgKiBAYXV0aG9yIHNhdG9ydXhAZ29vZ2xlLmNvbSAoU2F0b3J1IFRha2FiYXlhc2hpKSAtIGNyZWF0b3IKCSAqIEBhdXRob3IgZHN3aXRraW5AZ29vZ2xlLmNvbSAoRGFuaWVsIFN3aXRraW4pIC0gcG9ydGVkIGZyb20gQysrCgkgKi8KCXZhciBRUkNvZGUgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgZnVuY3Rpb24gUVJDb2RlKCkgewoJICAgICAgICB0aGlzLm1hc2tQYXR0ZXJuID0gLTE7CgkgICAgfQoJICAgIFFSQ29kZS5wcm90b3R5cGUuZ2V0TW9kZSA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMubW9kZTsKCSAgICB9OwoJICAgIFFSQ29kZS5wcm90b3R5cGUuZ2V0RUNMZXZlbCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuZWNMZXZlbDsKCSAgICB9OwoJICAgIFFSQ29kZS5wcm90b3R5cGUuZ2V0VmVyc2lvbiA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMudmVyc2lvbjsKCSAgICB9OwoJICAgIFFSQ29kZS5wcm90b3R5cGUuZ2V0TWFza1BhdHRlcm4gPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLm1hc2tQYXR0ZXJuOwoJICAgIH07CgkgICAgUVJDb2RlLnByb3RvdHlwZS5nZXRNYXRyaXggPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLm1hdHJpeDsKCSAgICB9OwoJICAgIC8qQE92ZXJyaWRlKi8KCSAgICBRUkNvZGUucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkgewoJICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1aWxkZXJfMS5kZWZhdWx0KCk7IC8vICgyMDApCgkgICAgICAgIHJlc3VsdC5hcHBlbmQoJzw8XG4nKTsKCSAgICAgICAgcmVzdWx0LmFwcGVuZCgnIG1vZGU6ICcpOwoJICAgICAgICByZXN1bHQuYXBwZW5kKHRoaXMubW9kZSA/IHRoaXMubW9kZS50b1N0cmluZygpIDogJ251bGwnKTsKCSAgICAgICAgcmVzdWx0LmFwcGVuZCgnXG4gZWNMZXZlbDogJyk7CgkgICAgICAgIHJlc3VsdC5hcHBlbmQodGhpcy5lY0xldmVsID8gdGhpcy5lY0xldmVsLnRvU3RyaW5nKCkgOiAnbnVsbCcpOwoJICAgICAgICByZXN1bHQuYXBwZW5kKCdcbiB2ZXJzaW9uOiAnKTsKCSAgICAgICAgcmVzdWx0LmFwcGVuZCh0aGlzLnZlcnNpb24gPyB0aGlzLnZlcnNpb24udG9TdHJpbmcoKSA6ICdudWxsJyk7CgkgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xuIG1hc2tQYXR0ZXJuOiAnKTsKCSAgICAgICAgcmVzdWx0LmFwcGVuZCh0aGlzLm1hc2tQYXR0ZXJuLnRvU3RyaW5nKCkpOwoJICAgICAgICBpZiAodGhpcy5tYXRyaXgpIHsKCSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xuIG1hdHJpeDpcbicpOwoJICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh0aGlzLm1hdHJpeC50b1N0cmluZygpKTsKCSAgICAgICAgfQoJICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xuIG1hdHJpeDogbnVsbFxuJyk7CgkgICAgICAgIH0KCSAgICAgICAgcmVzdWx0LmFwcGVuZCgnPj5cbicpOwoJICAgICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CgkgICAgfTsKCSAgICBRUkNvZGUucHJvdG90eXBlLnNldE1vZGUgPSBmdW5jdGlvbiAodmFsdWUpIHsKCSAgICAgICAgdGhpcy5tb2RlID0gdmFsdWU7CgkgICAgfTsKCSAgICBRUkNvZGUucHJvdG90eXBlLnNldEVDTGV2ZWwgPSBmdW5jdGlvbiAodmFsdWUpIHsKCSAgICAgICAgdGhpcy5lY0xldmVsID0gdmFsdWU7CgkgICAgfTsKCSAgICBRUkNvZGUucHJvdG90eXBlLnNldFZlcnNpb24gPSBmdW5jdGlvbiAodmVyc2lvbikgewoJICAgICAgICB0aGlzLnZlcnNpb24gPSB2ZXJzaW9uOwoJICAgIH07CgkgICAgUVJDb2RlLnByb3RvdHlwZS5zZXRNYXNrUGF0dGVybiA9IGZ1bmN0aW9uICh2YWx1ZSAvKmludCovKSB7CgkgICAgICAgIHRoaXMubWFza1BhdHRlcm4gPSB2YWx1ZTsKCSAgICB9OwoJICAgIFFSQ29kZS5wcm90b3R5cGUuc2V0TWF0cml4ID0gZnVuY3Rpb24gKHZhbHVlKSB7CgkgICAgICAgIHRoaXMubWF0cml4ID0gdmFsdWU7CgkgICAgfTsKCSAgICAvLyBDaGVjayBpZiAibWFza19wYXR0ZXJuIiBpcyB2YWxpZC4KCSAgICBRUkNvZGUuaXNWYWxpZE1hc2tQYXR0ZXJuID0gZnVuY3Rpb24gKG1hc2tQYXR0ZXJuIC8qaW50Ki8pIHsKCSAgICAgICAgcmV0dXJuIG1hc2tQYXR0ZXJuID49IDAgJiYgbWFza1BhdHRlcm4gPCBRUkNvZGUuTlVNX01BU0tfUEFUVEVSTlM7CgkgICAgfTsKCSAgICBRUkNvZGUuTlVNX01BU0tfUEFUVEVSTlMgPSA4OwoJICAgIHJldHVybiBRUkNvZGU7Cgl9KCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gUVJDb2RlOwoKCX0pOwoKCXZhciBXcml0ZXJFeGNlcHRpb25fMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCXZhciBfX2V4dGVuZHMgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkgewoJICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fAoJICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fAoJICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07CgkgICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgIH07CgkgICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfQoJICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7CgkgICAgfTsKCX0pKCk7CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoKCS8qKgoJICogQ3VzdG9tIEVycm9yIGNsYXNzIG9mIHR5cGUgRXhjZXB0aW9uLgoJICovCgl2YXIgV3JpdGVyRXhjZXB0aW9uID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikgewoJICAgIF9fZXh0ZW5kcyhXcml0ZXJFeGNlcHRpb24sIF9zdXBlcik7CgkgICAgZnVuY3Rpb24gV3JpdGVyRXhjZXB0aW9uKCkgewoJICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7CgkgICAgfQoJICAgIFdyaXRlckV4Y2VwdGlvbi5raW5kID0gJ1dyaXRlckV4Y2VwdGlvbic7CgkgICAgcmV0dXJuIFdyaXRlckV4Y2VwdGlvbjsKCX0oRXhjZXB0aW9uXzEuZGVmYXVsdCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gV3JpdGVyRXhjZXB0aW9uOwoKCX0pOwoKCXZhciBNYXRyaXhVdGlsXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CgkvKgoJICogQ29weXJpZ2h0IDIwMDggWlhpbmcgYXV0aG9ycwoJICoKCSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkgKgoJICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSAqCgkgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSAqLwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCS8qbmFtZXNwYWNlIGNvbS5nb29nbGUuenhpbmcucXJjb2RlLmVuY29kZXIgeyovCgoKCgoKCgkvKioKCSAqIEBhdXRob3Igc2F0b3J1eEBnb29nbGUuY29tIChTYXRvcnUgVGFrYWJheWFzaGkpIC0gY3JlYXRvcgoJICogQGF1dGhvciBkc3dpdGtpbkBnb29nbGUuY29tIChEYW5pZWwgU3dpdGtpbikgLSBwb3J0ZWQgZnJvbSBDKysKCSAqLwoJdmFyIE1hdHJpeFV0aWwgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgZnVuY3Rpb24gTWF0cml4VXRpbCgpIHsKCSAgICAgICAgLy8gZG8gbm90aGluZwoJICAgIH0KCSAgICAvLyBTZXQgYWxsIGNlbGxzIHRvIC0xIChUWVBFU0NSSVBUUE9SVDogMjU1KS4gIC0xIChUWVBFU0NSSVBUUE9SVDogMjU1KSBtZWFucyB0aGF0IHRoZSBjZWxsIGlzIGVtcHR5IChub3Qgc2V0IHlldCkuCgkgICAgLy8KCSAgICAvLyBKQVZBUE9SVDogV2Ugc2hvdWxkbid0IG5lZWQgdG8gZG8gdGhpcyBhdCBhbGwuIFRoZSBjb2RlIHNob3VsZCBiZSByZXdyaXR0ZW4gdG8gYmVnaW4gZW5jb2RpbmcKCSAgICAvLyB3aXRoIHRoZSBCeXRlTWF0cml4IGluaXRpYWxpemVkIGFsbCB0byB6ZXJvLgoJICAgIE1hdHJpeFV0aWwuY2xlYXJNYXRyaXggPSBmdW5jdGlvbiAobWF0cml4KSB7CgkgICAgICAgIC8vIFRZUEVTQ1JJUFRQT1JUOiB3ZSB1c2UgVWludEFycmF5IHNlIGNoYW5nZWQgaGVyZSBmcm9tIC0xIHRvIDI1NQoJICAgICAgICBtYXRyaXguY2xlYXIoLyooYnl0ZSkgKi8gLyotMSovIDI1NSk7CgkgICAgfTsKCSAgICAvLyBCdWlsZCAyRCBtYXRyaXggb2YgUVIgQ29kZSBmcm9tICJkYXRhQml0cyIgd2l0aCAiZWNMZXZlbCIsICJ2ZXJzaW9uIiBhbmQgImdldE1hc2tQYXR0ZXJuIi4gT24KCSAgICAvLyBzdWNjZXNzLCBzdG9yZSB0aGUgcmVzdWx0IGluICJtYXRyaXgiIGFuZCByZXR1cm4gdHJ1ZS4KCSAgICBNYXRyaXhVdGlsLmJ1aWxkTWF0cml4ID0gZnVuY3Rpb24gKGRhdGFCaXRzLCBlY0xldmVsLCB2ZXJzaW9uLCBtYXNrUGF0dGVybiAvKmludCovLCBtYXRyaXgpIHsKCSAgICAgICAgTWF0cml4VXRpbC5jbGVhck1hdHJpeChtYXRyaXgpOwoJICAgICAgICBNYXRyaXhVdGlsLmVtYmVkQmFzaWNQYXR0ZXJucyh2ZXJzaW9uLCBtYXRyaXgpOwoJICAgICAgICAvLyBUeXBlIGluZm9ybWF0aW9uIGFwcGVhciB3aXRoIGFueSB2ZXJzaW9uLgoJICAgICAgICBNYXRyaXhVdGlsLmVtYmVkVHlwZUluZm8oZWNMZXZlbCwgbWFza1BhdHRlcm4sIG1hdHJpeCk7CgkgICAgICAgIC8vIFZlcnNpb24gaW5mbyBhcHBlYXIgaWYgdmVyc2lvbiA+PSA3LgoJICAgICAgICBNYXRyaXhVdGlsLm1heWJlRW1iZWRWZXJzaW9uSW5mbyh2ZXJzaW9uLCBtYXRyaXgpOwoJICAgICAgICAvLyBEYXRhIHNob3VsZCBiZSBlbWJlZGRlZCBhdCBlbmQuCgkgICAgICAgIE1hdHJpeFV0aWwuZW1iZWREYXRhQml0cyhkYXRhQml0cywgbWFza1BhdHRlcm4sIG1hdHJpeCk7CgkgICAgfTsKCSAgICAvLyBFbWJlZCBiYXNpYyBwYXR0ZXJucy4gT24gc3VjY2VzcywgbW9kaWZ5IHRoZSBtYXRyaXggYW5kIHJldHVybiB0cnVlLgoJICAgIC8vIFRoZSBiYXNpYyBwYXR0ZXJucyBhcmU6CgkgICAgLy8gLSBQb3NpdGlvbiBkZXRlY3Rpb24gcGF0dGVybnMKCSAgICAvLyAtIFRpbWluZyBwYXR0ZXJucwoJICAgIC8vIC0gRGFyayBkb3QgYXQgdGhlIGxlZnQgYm90dG9tIGNvcm5lcgoJICAgIC8vIC0gUG9zaXRpb24gYWRqdXN0bWVudCBwYXR0ZXJucywgaWYgbmVlZCBiZQoJICAgIE1hdHJpeFV0aWwuZW1iZWRCYXNpY1BhdHRlcm5zID0gZnVuY3Rpb24gKHZlcnNpb24sIG1hdHJpeCkgewoJICAgICAgICAvLyBMZXQncyBnZXQgc3RhcnRlZCB3aXRoIGVtYmVkZGluZyBiaWcgc3F1YXJlcyBhdCBjb3JuZXJzLgoJICAgICAgICBNYXRyaXhVdGlsLmVtYmVkUG9zaXRpb25EZXRlY3Rpb25QYXR0ZXJuc0FuZFNlcGFyYXRvcnMobWF0cml4KTsKCSAgICAgICAgLy8gVGhlbiwgZW1iZWQgdGhlIGRhcmsgZG90IGF0IHRoZSBsZWZ0IGJvdHRvbSBjb3JuZXIuCgkgICAgICAgIE1hdHJpeFV0aWwuZW1iZWREYXJrRG90QXRMZWZ0Qm90dG9tQ29ybmVyKG1hdHJpeCk7CgkgICAgICAgIC8vIFBvc2l0aW9uIGFkanVzdG1lbnQgcGF0dGVybnMgYXBwZWFyIGlmIHZlcnNpb24gPj0gMi4KCSAgICAgICAgTWF0cml4VXRpbC5tYXliZUVtYmVkUG9zaXRpb25BZGp1c3RtZW50UGF0dGVybnModmVyc2lvbiwgbWF0cml4KTsKCSAgICAgICAgLy8gVGltaW5nIHBhdHRlcm5zIHNob3VsZCBiZSBlbWJlZGRlZCBhZnRlciBwb3NpdGlvbiBhZGouIHBhdHRlcm5zLgoJICAgICAgICBNYXRyaXhVdGlsLmVtYmVkVGltaW5nUGF0dGVybnMobWF0cml4KTsKCSAgICB9OwoJICAgIC8vIEVtYmVkIHR5cGUgaW5mb3JtYXRpb24uIE9uIHN1Y2Nlc3MsIG1vZGlmeSB0aGUgbWF0cml4LgoJICAgIE1hdHJpeFV0aWwuZW1iZWRUeXBlSW5mbyA9IGZ1bmN0aW9uIChlY0xldmVsLCBtYXNrUGF0dGVybiAvKmludCovLCBtYXRyaXgpIHsKCSAgICAgICAgdmFyIHR5cGVJbmZvQml0cyA9IG5ldyBCaXRBcnJheV8xLmRlZmF1bHQoKTsKCSAgICAgICAgTWF0cml4VXRpbC5tYWtlVHlwZUluZm9CaXRzKGVjTGV2ZWwsIG1hc2tQYXR0ZXJuLCB0eXBlSW5mb0JpdHMpOwoJICAgICAgICBmb3IgKHZhciBpID0gMCwgc2l6ZSA9IHR5cGVJbmZvQml0cy5nZXRTaXplKCk7IGkgPCBzaXplOyArK2kpIHsKCSAgICAgICAgICAgIC8vIFBsYWNlIGJpdHMgaW4gTFNCIHRvIE1TQiBvcmRlci4gIExTQiAobGVhc3Qgc2lnbmlmaWNhbnQgYml0KSBpcyB0aGUgbGFzdCB2YWx1ZSBpbgoJICAgICAgICAgICAgLy8gInR5cGVJbmZvQml0cyIuCgkgICAgICAgICAgICB2YXIgYml0ID0gdHlwZUluZm9CaXRzLmdldCh0eXBlSW5mb0JpdHMuZ2V0U2l6ZSgpIC0gMSAtIGkpOwoJICAgICAgICAgICAgLy8gVHlwZSBpbmZvIGJpdHMgYXQgdGhlIGxlZnQgdG9wIGNvcm5lci4gU2VlIDguOSBvZiBKSVNYMDUxMDoyMDA0IChwLjQ2KS4KCSAgICAgICAgICAgIHZhciBjb29yZGluYXRlcyA9IE1hdHJpeFV0aWwuVFlQRV9JTkZPX0NPT1JESU5BVEVTW2ldOwoJICAgICAgICAgICAgdmFyIHgxID0gY29vcmRpbmF0ZXNbMF07CgkgICAgICAgICAgICB2YXIgeTEgPSBjb29yZGluYXRlc1sxXTsKCSAgICAgICAgICAgIG1hdHJpeC5zZXRCb29sZWFuKHgxLCB5MSwgYml0KTsKCSAgICAgICAgICAgIGlmIChpIDwgOCkgewoJICAgICAgICAgICAgICAgIC8vIFJpZ2h0IHRvcCBjb3JuZXIuCgkgICAgICAgICAgICAgICAgdmFyIHgyID0gbWF0cml4LmdldFdpZHRoKCkgLSBpIC0gMTsKCSAgICAgICAgICAgICAgICB2YXIgeTIgPSA4OwoJICAgICAgICAgICAgICAgIG1hdHJpeC5zZXRCb29sZWFuKHgyLCB5MiwgYml0KTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgIC8vIExlZnQgYm90dG9tIGNvcm5lci4KCSAgICAgICAgICAgICAgICB2YXIgeDIgPSA4OwoJICAgICAgICAgICAgICAgIHZhciB5MiA9IG1hdHJpeC5nZXRIZWlnaHQoKSAtIDcgKyAoaSAtIDgpOwoJICAgICAgICAgICAgICAgIG1hdHJpeC5zZXRCb29sZWFuKHgyLCB5MiwgYml0KTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgIH07CgkgICAgLy8gRW1iZWQgdmVyc2lvbiBpbmZvcm1hdGlvbiBpZiBuZWVkIGJlLiBPbiBzdWNjZXNzLCBtb2RpZnkgdGhlIG1hdHJpeCBhbmQgcmV0dXJuIHRydWUuCgkgICAgLy8gU2VlIDguMTAgb2YgSklTWDA1MTA6MjAwNCAocC40NykgZm9yIGhvdyB0byBlbWJlZCB2ZXJzaW9uIGluZm9ybWF0aW9uLgoJICAgIE1hdHJpeFV0aWwubWF5YmVFbWJlZFZlcnNpb25JbmZvID0gZnVuY3Rpb24gKHZlcnNpb24sIG1hdHJpeCkgewoJICAgICAgICBpZiAodmVyc2lvbi5nZXRWZXJzaW9uTnVtYmVyKCkgPCA3KSB7IC8vIFZlcnNpb24gaW5mbyBpcyBuZWNlc3NhcnkgaWYgdmVyc2lvbiA+PSA3LgoJICAgICAgICAgICAgcmV0dXJuOyAvLyBEb24ndCBuZWVkIHZlcnNpb24gaW5mby4KCSAgICAgICAgfQoJICAgICAgICB2YXIgdmVyc2lvbkluZm9CaXRzID0gbmV3IEJpdEFycmF5XzEuZGVmYXVsdCgpOwoJICAgICAgICBNYXRyaXhVdGlsLm1ha2VWZXJzaW9uSW5mb0JpdHModmVyc2lvbiwgdmVyc2lvbkluZm9CaXRzKTsKCSAgICAgICAgdmFyIGJpdEluZGV4ID0gNiAqIDMgLSAxOyAvLyBJdCB3aWxsIGRlY3JlYXNlIGZyb20gMTcgdG8gMC4KCSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyArK2kpIHsKCSAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgMzsgKytqKSB7CgkgICAgICAgICAgICAgICAgLy8gUGxhY2UgYml0cyBpbiBMU0IgKGxlYXN0IHNpZ25pZmljYW50IGJpdCkgdG8gTVNCIG9yZGVyLgoJICAgICAgICAgICAgICAgIHZhciBiaXQgPSB2ZXJzaW9uSW5mb0JpdHMuZ2V0KGJpdEluZGV4KTsKCSAgICAgICAgICAgICAgICBiaXRJbmRleC0tOwoJICAgICAgICAgICAgICAgIC8vIExlZnQgYm90dG9tIGNvcm5lci4KCSAgICAgICAgICAgICAgICBtYXRyaXguc2V0Qm9vbGVhbihpLCBtYXRyaXguZ2V0SGVpZ2h0KCkgLSAxMSArIGosIGJpdCk7CgkgICAgICAgICAgICAgICAgLy8gUmlnaHQgYm90dG9tIGNvcm5lci4KCSAgICAgICAgICAgICAgICBtYXRyaXguc2V0Qm9vbGVhbihtYXRyaXguZ2V0SGVpZ2h0KCkgLSAxMSArIGosIGksIGJpdCk7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICB9OwoJICAgIC8vIEVtYmVkICJkYXRhQml0cyIgdXNpbmcgImdldE1hc2tQYXR0ZXJuIi4gT24gc3VjY2VzcywgbW9kaWZ5IHRoZSBtYXRyaXggYW5kIHJldHVybiB0cnVlLgoJICAgIC8vIEZvciBkZWJ1Z2dpbmcgcHVycG9zZXMsIGl0IHNraXBzIG1hc2tpbmcgcHJvY2VzcyBpZiAiZ2V0TWFza1BhdHRlcm4iIGlzIC0xKFRZUEVTQ1JJUFRQT1JUOiAyNTUpLgoJICAgIC8vIFNlZSA4Ljcgb2YgSklTWDA1MTA6MjAwNCAocC4zOCkgZm9yIGhvdyB0byBlbWJlZCBkYXRhIGJpdHMuCgkgICAgTWF0cml4VXRpbC5lbWJlZERhdGFCaXRzID0gZnVuY3Rpb24gKGRhdGFCaXRzLCBtYXNrUGF0dGVybiAvKmludCovLCBtYXRyaXgpIHsKCSAgICAgICAgdmFyIGJpdEluZGV4ID0gMDsKCSAgICAgICAgdmFyIGRpcmVjdGlvbiA9IC0xOwoJICAgICAgICAvLyBTdGFydCBmcm9tIHRoZSByaWdodCBib3R0b20gY2VsbC4KCSAgICAgICAgdmFyIHggPSBtYXRyaXguZ2V0V2lkdGgoKSAtIDE7CgkgICAgICAgIHZhciB5ID0gbWF0cml4LmdldEhlaWdodCgpIC0gMTsKCSAgICAgICAgd2hpbGUgKHggPiAwKSB7CgkgICAgICAgICAgICAvLyBTa2lwIHRoZSB2ZXJ0aWNhbCB0aW1pbmcgcGF0dGVybi4KCSAgICAgICAgICAgIGlmICh4ID09PSA2KSB7CgkgICAgICAgICAgICAgICAgeCAtPSAxOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgd2hpbGUgKHkgPj0gMCAmJiB5IDwgbWF0cml4LmdldEhlaWdodCgpKSB7CgkgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyOyArK2kpIHsKCSAgICAgICAgICAgICAgICAgICAgdmFyIHh4ID0geCAtIGk7CgkgICAgICAgICAgICAgICAgICAgIC8vIFNraXAgdGhlIGNlbGwgaWYgaXQncyBub3QgZW1wdHkuCgkgICAgICAgICAgICAgICAgICAgIGlmICghTWF0cml4VXRpbC5pc0VtcHR5KG1hdHJpeC5nZXQoeHgsIHkpKSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgdmFyIGJpdCA9IHZvaWQgMDsKCSAgICAgICAgICAgICAgICAgICAgaWYgKGJpdEluZGV4IDwgZGF0YUJpdHMuZ2V0U2l6ZSgpKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBiaXQgPSBkYXRhQml0cy5nZXQoYml0SW5kZXgpOwoJICAgICAgICAgICAgICAgICAgICAgICAgKytiaXRJbmRleDsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBhZGRpbmcgYml0LiBJZiB0aGVyZSBpcyBubyBiaXQgbGVmdCwgd2UnbGwgZmlsbCB0aGUgbGVmdCBjZWxscyB3aXRoIDAsIGFzIGRlc2NyaWJlZAoJICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW4gOC40Ljkgb2YgSklTWDA1MTA6MjAwNCAocC4gMjQpLgoJICAgICAgICAgICAgICAgICAgICAgICAgYml0ID0gZmFsc2U7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgLy8gU2tpcCBtYXNraW5nIGlmIG1hc2tfcGF0dGVybiBpcyAtMSAoVFlQRVNDUklQVFBPUlQ6IDI1NSkuCgkgICAgICAgICAgICAgICAgICAgIGlmIChtYXNrUGF0dGVybiAhPT0gMjU1ICYmIE1hc2tVdGlsXzEuZGVmYXVsdC5nZXREYXRhTWFza0JpdChtYXNrUGF0dGVybiwgeHgsIHkpKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBiaXQgPSAhYml0OwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIG1hdHJpeC5zZXRCb29sZWFuKHh4LCB5LCBiaXQpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB5ICs9IGRpcmVjdGlvbjsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGRpcmVjdGlvbiA9IC1kaXJlY3Rpb247IC8vIFJldmVyc2UgdGhlIGRpcmVjdGlvbi4KCSAgICAgICAgICAgIHkgKz0gZGlyZWN0aW9uOwoJICAgICAgICAgICAgeCAtPSAyOyAvLyBNb3ZlIHRvIHRoZSBsZWZ0LgoJICAgICAgICB9CgkgICAgICAgIC8vIEFsbCBiaXRzIHNob3VsZCBiZSBjb25zdW1lZC4KCSAgICAgICAgaWYgKGJpdEluZGV4ICE9PSBkYXRhQml0cy5nZXRTaXplKCkpIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBXcml0ZXJFeGNlcHRpb25fMS5kZWZhdWx0KCdOb3QgYWxsIGJpdHMgY29uc3VtZWQ6ICcgKyBiaXRJbmRleCArICcvJyArIGRhdGFCaXRzLmdldFNpemUoKSk7CgkgICAgICAgIH0KCSAgICB9OwoJICAgIC8vIFJldHVybiB0aGUgcG9zaXRpb24gb2YgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0IHNldCAob25lOiB0bykgaW4gdGhlICJ2YWx1ZSIuIFRoZSBtb3N0CgkgICAgLy8gc2lnbmlmaWNhbnQgYml0IGlzIHBvc2l0aW9uIDMyLiBJZiB0aGVyZSBpcyBubyBiaXQgc2V0LCByZXR1cm4gMC4gRXhhbXBsZXM6CgkgICAgLy8gLSBmaW5kTVNCU2V0KDApID0+IDAKCSAgICAvLyAtIGZpbmRNU0JTZXQoMSkgPT4gMQoJICAgIC8vIC0gZmluZE1TQlNldCgyNTUpID0+IDgKCSAgICBNYXRyaXhVdGlsLmZpbmRNU0JTZXQgPSBmdW5jdGlvbiAodmFsdWUgLyppbnQqLykgewoJICAgICAgICByZXR1cm4gMzIgLSBJbnRlZ2VyXzEuZGVmYXVsdC5udW1iZXJPZkxlYWRpbmdaZXJvcyh2YWx1ZSk7CgkgICAgfTsKCSAgICAvLyBDYWxjdWxhdGUgQkNIIChCb3NlLUNoYXVkaHVyaS1Ib2NxdWVuZ2hlbSkgY29kZSBmb3IgInZhbHVlIiB1c2luZyBwb2x5bm9taWFsICJwb2x5Ii4gVGhlIEJDSAoJICAgIC8vIGNvZGUgaXMgdXNlZCBmb3IgZW5jb2RpbmcgdHlwZSBpbmZvcm1hdGlvbiBhbmQgdmVyc2lvbiBpbmZvcm1hdGlvbi4KCSAgICAvLyBFeGFtcGxlOiBDYWxjdWxhdGlvbiBvZiB2ZXJzaW9uIGluZm9ybWF0aW9uIG9mIDcuCgkgICAgLy8gZih4KSBpcyBjcmVhdGVkIGZyb20gNy4KCSAgICAvLyAgIC0gNyA9IDAwMDExMSBpbiA2IGJpdHMKCSAgICAvLyAgIC0gZih4KSA9IHheMiArIHheMSArIHheMAoJICAgIC8vIGcoeCkgaXMgZ2l2ZW4gYnkgdGhlIHN0YW5kYXJkIChwLiA2NykKCSAgICAvLyAgIC0gZyh4KSA9IHheMTIgKyB4XjExICsgeF4xMCArIHheOSArIHheOCArIHheNSArIHheMiArIDEKCSAgICAvLyBNdWx0aXBseSBmKHgpIGJ5IHheKDE4IC0gNikKCSAgICAvLyAgIC0gZicoeCkgPSBmKHgpICogeF4oMTggLSA2KQoJICAgIC8vICAgLSBmJyh4KSA9IHheMTQgKyB4XjEzICsgeF4xMgoJICAgIC8vIENhbGN1bGF0ZSB0aGUgcmVtYWluZGVyIG9mIGYnKHgpIC8gZyh4KQoJICAgIC8vICAgICAgICAgeF4yCgkgICAgLy8gICAgICAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwoJICAgIC8vICAgZyh4KSApeF4xNCArIHheMTMgKyB4XjEyCgkgICAgLy8gICAgICAgICB4XjE0ICsgeF4xMyArIHheMTIgKyB4XjExICsgeF4xMCArIHheNyArIHheNCArIHheMgoJICAgIC8vICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCSAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHheMTEgKyB4XjEwICsgeF43ICsgeF40ICsgeF4yCgkgICAgLy8KCSAgICAvLyBUaGUgcmVtYWluZGVyIGlzIHheMTEgKyB4XjEwICsgeF43ICsgeF40ICsgeF4yCgkgICAgLy8gRW5jb2RlIGl0IGluIGJpbmFyeTogMTEwMDEwMDEwMTAwCgkgICAgLy8gVGhlIHJldHVybiB2YWx1ZSBpcyAweGM5NCAoMTEwMCAxMDAxIDAxMDApCgkgICAgLy8KCSAgICAvLyBTaW5jZSBhbGwgY29lZmZpY2llbnRzIGluIHRoZSBwb2x5bm9taWFscyBhcmUgMSBvciAwLCB3ZSBjYW4gZG8gdGhlIGNhbGN1bGF0aW9uIGJ5IGJpdAoJICAgIC8vIG9wZXJhdGlvbnMuIFdlIGRvbid0IGNhcmUgaWYgY29lZmZpY2llbnRzIGFyZSBwb3NpdGl2ZSBvciBuZWdhdGl2ZS4KCSAgICBNYXRyaXhVdGlsLmNhbGN1bGF0ZUJDSENvZGUgPSBmdW5jdGlvbiAodmFsdWUgLyppbnQqLywgcG9seSAvKmludCovKSB7CgkgICAgICAgIGlmIChwb2x5ID09PSAwKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgnMCBwb2x5bm9taWFsJyk7CgkgICAgICAgIH0KCSAgICAgICAgLy8gSWYgcG9seSBpcyAiMSAxMTExIDAwMTAgMDEwMSIgKHZlcnNpb24gaW5mbyBwb2x5KSwgbXNiU2V0SW5Qb2x5IGlzIDEzLiBXZSdsbCBzdWJ0cmFjdCAxCgkgICAgICAgIC8vIGZyb20gMTMgdG8gbWFrZSBpdCAxMi4KCSAgICAgICAgdmFyIG1zYlNldEluUG9seSA9IE1hdHJpeFV0aWwuZmluZE1TQlNldChwb2x5KTsKCSAgICAgICAgdmFsdWUgPDw9IG1zYlNldEluUG9seSAtIDE7CgkgICAgICAgIC8vIERvIHRoZSBkaXZpc2lvbiBidXNpbmVzcyB1c2luZyBleGNsdXNpdmUtb3Igb3BlcmF0aW9ucy4KCSAgICAgICAgd2hpbGUgKE1hdHJpeFV0aWwuZmluZE1TQlNldCh2YWx1ZSkgPj0gbXNiU2V0SW5Qb2x5KSB7CgkgICAgICAgICAgICB2YWx1ZSBePSBwb2x5IDw8IChNYXRyaXhVdGlsLmZpbmRNU0JTZXQodmFsdWUpIC0gbXNiU2V0SW5Qb2x5KTsKCSAgICAgICAgfQoJICAgICAgICAvLyBOb3cgdGhlICJ2YWx1ZSIgaXMgdGhlIHJlbWFpbmRlciAoaS5lLiB0aGUgQkNIIGNvZGUpCgkgICAgICAgIHJldHVybiB2YWx1ZTsKCSAgICB9OwoJICAgIC8vIE1ha2UgYml0IHZlY3RvciBvZiB0eXBlIGluZm9ybWF0aW9uLiBPbiBzdWNjZXNzLCBzdG9yZSB0aGUgcmVzdWx0IGluICJiaXRzIiBhbmQgcmV0dXJuIHRydWUuCgkgICAgLy8gRW5jb2RlIGVycm9yIGNvcnJlY3Rpb24gbGV2ZWwgYW5kIG1hc2sgcGF0dGVybi4gU2VlIDguOSBvZgoJICAgIC8vIEpJU1gwNTEwOjIwMDQgKHAuNDUpIGZvciBkZXRhaWxzLgoJICAgIE1hdHJpeFV0aWwubWFrZVR5cGVJbmZvQml0cyA9IGZ1bmN0aW9uIChlY0xldmVsLCBtYXNrUGF0dGVybiAvKmludCovLCBiaXRzKSB7CgkgICAgICAgIGlmICghUVJDb2RlXzEuZGVmYXVsdC5pc1ZhbGlkTWFza1BhdHRlcm4obWFza1BhdHRlcm4pKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgV3JpdGVyRXhjZXB0aW9uXzEuZGVmYXVsdCgnSW52YWxpZCBtYXNrIHBhdHRlcm4nKTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgdHlwZUluZm8gPSAoZWNMZXZlbC5nZXRCaXRzKCkgPDwgMykgfCBtYXNrUGF0dGVybjsKCSAgICAgICAgYml0cy5hcHBlbmRCaXRzKHR5cGVJbmZvLCA1KTsKCSAgICAgICAgdmFyIGJjaENvZGUgPSBNYXRyaXhVdGlsLmNhbGN1bGF0ZUJDSENvZGUodHlwZUluZm8sIE1hdHJpeFV0aWwuVFlQRV9JTkZPX1BPTFkpOwoJICAgICAgICBiaXRzLmFwcGVuZEJpdHMoYmNoQ29kZSwgMTApOwoJICAgICAgICB2YXIgbWFza0JpdHMgPSBuZXcgQml0QXJyYXlfMS5kZWZhdWx0KCk7CgkgICAgICAgIG1hc2tCaXRzLmFwcGVuZEJpdHMoTWF0cml4VXRpbC5UWVBFX0lORk9fTUFTS19QQVRURVJOLCAxNSk7CgkgICAgICAgIGJpdHMueG9yKG1hc2tCaXRzKTsKCSAgICAgICAgaWYgKGJpdHMuZ2V0U2l6ZSgpICE9PSAxNSkgeyAvLyBKdXN0IGluIGNhc2UuCgkgICAgICAgICAgICB0aHJvdyBuZXcgV3JpdGVyRXhjZXB0aW9uXzEuZGVmYXVsdCgnc2hvdWxkIG5vdCBoYXBwZW4gYnV0IHdlIGdvdDogJyArIGJpdHMuZ2V0U2l6ZSgpKTsKCSAgICAgICAgfQoJICAgIH07CgkgICAgLy8gTWFrZSBiaXQgdmVjdG9yIG9mIHZlcnNpb24gaW5mb3JtYXRpb24uIE9uIHN1Y2Nlc3MsIHN0b3JlIHRoZSByZXN1bHQgaW4gImJpdHMiIGFuZCByZXR1cm4gdHJ1ZS4KCSAgICAvLyBTZWUgOC4xMCBvZiBKSVNYMDUxMDoyMDA0IChwLjQ1KSBmb3IgZGV0YWlscy4KCSAgICBNYXRyaXhVdGlsLm1ha2VWZXJzaW9uSW5mb0JpdHMgPSBmdW5jdGlvbiAodmVyc2lvbiwgYml0cykgewoJICAgICAgICBiaXRzLmFwcGVuZEJpdHModmVyc2lvbi5nZXRWZXJzaW9uTnVtYmVyKCksIDYpOwoJICAgICAgICB2YXIgYmNoQ29kZSA9IE1hdHJpeFV0aWwuY2FsY3VsYXRlQkNIQ29kZSh2ZXJzaW9uLmdldFZlcnNpb25OdW1iZXIoKSwgTWF0cml4VXRpbC5WRVJTSU9OX0lORk9fUE9MWSk7CgkgICAgICAgIGJpdHMuYXBwZW5kQml0cyhiY2hDb2RlLCAxMik7CgkgICAgICAgIGlmIChiaXRzLmdldFNpemUoKSAhPT0gMTgpIHsgLy8gSnVzdCBpbiBjYXNlLgoJICAgICAgICAgICAgdGhyb3cgbmV3IFdyaXRlckV4Y2VwdGlvbl8xLmRlZmF1bHQoJ3Nob3VsZCBub3QgaGFwcGVuIGJ1dCB3ZSBnb3Q6ICcgKyBiaXRzLmdldFNpemUoKSk7CgkgICAgICAgIH0KCSAgICB9OwoJICAgIC8vIENoZWNrIGlmICJ2YWx1ZSIgaXMgZW1wdHkuCgkgICAgTWF0cml4VXRpbC5pc0VtcHR5ID0gZnVuY3Rpb24gKHZhbHVlIC8qaW50Ki8pIHsKCSAgICAgICAgcmV0dXJuIHZhbHVlID09PSAyNTU7IC8vIC0xCgkgICAgfTsKCSAgICBNYXRyaXhVdGlsLmVtYmVkVGltaW5nUGF0dGVybnMgPSBmdW5jdGlvbiAobWF0cml4KSB7CgkgICAgICAgIC8vIC04IGlzIGZvciBza2lwcGluZyBwb3NpdGlvbiBkZXRlY3Rpb24gcGF0dGVybnMgKDc6IHNpemUpLCBhbmQgdHdvIGhvcml6b250YWwvdmVydGljYWwKCSAgICAgICAgLy8gc2VwYXJhdGlvbiBwYXR0ZXJucyAoMTogc2l6ZSkuIFRodXMsIDggPSA3ICsgMS4KCSAgICAgICAgZm9yICh2YXIgaSA9IDg7IGkgPCBtYXRyaXguZ2V0V2lkdGgoKSAtIDg7ICsraSkgewoJICAgICAgICAgICAgdmFyIGJpdCA9IChpICsgMSkgJSAyOwoJICAgICAgICAgICAgLy8gSG9yaXpvbnRhbCBsaW5lLgoJICAgICAgICAgICAgaWYgKE1hdHJpeFV0aWwuaXNFbXB0eShtYXRyaXguZ2V0KGksIDYpKSkgewoJICAgICAgICAgICAgICAgIG1hdHJpeC5zZXROdW1iZXIoaSwgNiwgYml0KTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIC8vIFZlcnRpY2FsIGxpbmUuCgkgICAgICAgICAgICBpZiAoTWF0cml4VXRpbC5pc0VtcHR5KG1hdHJpeC5nZXQoNiwgaSkpKSB7CgkgICAgICAgICAgICAgICAgbWF0cml4LnNldE51bWJlcig2LCBpLCBiaXQpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgfTsKCSAgICAvLyBFbWJlZCB0aGUgbG9uZWx5IGRhcmsgZG90IGF0IGxlZnQgYm90dG9tIGNvcm5lci4gSklTWDA1MTA6MjAwNCAocC40NikKCSAgICBNYXRyaXhVdGlsLmVtYmVkRGFya0RvdEF0TGVmdEJvdHRvbUNvcm5lciA9IGZ1bmN0aW9uIChtYXRyaXgpIHsKCSAgICAgICAgaWYgKG1hdHJpeC5nZXQoOCwgbWF0cml4LmdldEhlaWdodCgpIC0gOCkgPT09IDApIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBXcml0ZXJFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgIH0KCSAgICAgICAgbWF0cml4LnNldE51bWJlcig4LCBtYXRyaXguZ2V0SGVpZ2h0KCkgLSA4LCAxKTsKCSAgICB9OwoJICAgIE1hdHJpeFV0aWwuZW1iZWRIb3Jpem9udGFsU2VwYXJhdGlvblBhdHRlcm4gPSBmdW5jdGlvbiAoeFN0YXJ0IC8qaW50Ki8sIHlTdGFydCAvKmludCovLCBtYXRyaXgpIHsKCSAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCA4OyArK3gpIHsKCSAgICAgICAgICAgIGlmICghTWF0cml4VXRpbC5pc0VtcHR5KG1hdHJpeC5nZXQoeFN0YXJ0ICsgeCwgeVN0YXJ0KSkpIHsKCSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV3JpdGVyRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgbWF0cml4LnNldE51bWJlcih4U3RhcnQgKyB4LCB5U3RhcnQsIDApOwoJICAgICAgICB9CgkgICAgfTsKCSAgICBNYXRyaXhVdGlsLmVtYmVkVmVydGljYWxTZXBhcmF0aW9uUGF0dGVybiA9IGZ1bmN0aW9uICh4U3RhcnQgLyppbnQqLywgeVN0YXJ0IC8qaW50Ki8sIG1hdHJpeCkgewoJICAgICAgICBmb3IgKHZhciB5ID0gMDsgeSA8IDc7ICsreSkgewoJICAgICAgICAgICAgaWYgKCFNYXRyaXhVdGlsLmlzRW1wdHkobWF0cml4LmdldCh4U3RhcnQsIHlTdGFydCArIHkpKSkgewoJICAgICAgICAgICAgICAgIHRocm93IG5ldyBXcml0ZXJFeGNlcHRpb25fMS5kZWZhdWx0KCk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBtYXRyaXguc2V0TnVtYmVyKHhTdGFydCwgeVN0YXJ0ICsgeSwgMCk7CgkgICAgICAgIH0KCSAgICB9OwoJICAgIE1hdHJpeFV0aWwuZW1iZWRQb3NpdGlvbkFkanVzdG1lbnRQYXR0ZXJuID0gZnVuY3Rpb24gKHhTdGFydCAvKmludCovLCB5U3RhcnQgLyppbnQqLywgbWF0cml4KSB7CgkgICAgICAgIGZvciAodmFyIHkgPSAwOyB5IDwgNTsgKyt5KSB7CgkgICAgICAgICAgICB2YXIgcGF0dGVyblkgPSBNYXRyaXhVdGlsLlBPU0lUSU9OX0FESlVTVE1FTlRfUEFUVEVSTlt5XTsKCSAgICAgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgNTsgKyt4KSB7CgkgICAgICAgICAgICAgICAgbWF0cml4LnNldE51bWJlcih4U3RhcnQgKyB4LCB5U3RhcnQgKyB5LCBwYXR0ZXJuWVt4XSk7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICB9OwoJICAgIE1hdHJpeFV0aWwuZW1iZWRQb3NpdGlvbkRldGVjdGlvblBhdHRlcm4gPSBmdW5jdGlvbiAoeFN0YXJ0IC8qaW50Ki8sIHlTdGFydCAvKmludCovLCBtYXRyaXgpIHsKCSAgICAgICAgZm9yICh2YXIgeSA9IDA7IHkgPCA3OyArK3kpIHsKCSAgICAgICAgICAgIHZhciBwYXR0ZXJuWSA9IE1hdHJpeFV0aWwuUE9TSVRJT05fREVURUNUSU9OX1BBVFRFUk5beV07CgkgICAgICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IDc7ICsreCkgewoJICAgICAgICAgICAgICAgIG1hdHJpeC5zZXROdW1iZXIoeFN0YXJ0ICsgeCwgeVN0YXJ0ICsgeSwgcGF0dGVybllbeF0pOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgfTsKCSAgICAvLyBFbWJlZCBwb3NpdGlvbiBkZXRlY3Rpb24gcGF0dGVybnMgYW5kIHN1cnJvdW5kaW5nIHZlcnRpY2FsL2hvcml6b250YWwgc2VwYXJhdG9ycy4KCSAgICBNYXRyaXhVdGlsLmVtYmVkUG9zaXRpb25EZXRlY3Rpb25QYXR0ZXJuc0FuZFNlcGFyYXRvcnMgPSBmdW5jdGlvbiAobWF0cml4KSB7CgkgICAgICAgIC8vIEVtYmVkIHRocmVlIGJpZyBzcXVhcmVzIGF0IGNvcm5lcnMuCgkgICAgICAgIHZhciBwZHBXaWR0aCA9IE1hdHJpeFV0aWwuUE9TSVRJT05fREVURUNUSU9OX1BBVFRFUk5bMF0ubGVuZ3RoOwoJICAgICAgICAvLyBMZWZ0IHRvcCBjb3JuZXIuCgkgICAgICAgIE1hdHJpeFV0aWwuZW1iZWRQb3NpdGlvbkRldGVjdGlvblBhdHRlcm4oMCwgMCwgbWF0cml4KTsKCSAgICAgICAgLy8gUmlnaHQgdG9wIGNvcm5lci4KCSAgICAgICAgTWF0cml4VXRpbC5lbWJlZFBvc2l0aW9uRGV0ZWN0aW9uUGF0dGVybihtYXRyaXguZ2V0V2lkdGgoKSAtIHBkcFdpZHRoLCAwLCBtYXRyaXgpOwoJICAgICAgICAvLyBMZWZ0IGJvdHRvbSBjb3JuZXIuCgkgICAgICAgIE1hdHJpeFV0aWwuZW1iZWRQb3NpdGlvbkRldGVjdGlvblBhdHRlcm4oMCwgbWF0cml4LmdldFdpZHRoKCkgLSBwZHBXaWR0aCwgbWF0cml4KTsKCSAgICAgICAgLy8gRW1iZWQgaG9yaXpvbnRhbCBzZXBhcmF0aW9uIHBhdHRlcm5zIGFyb3VuZCB0aGUgc3F1YXJlcy4KCSAgICAgICAgdmFyIGhzcFdpZHRoID0gODsKCSAgICAgICAgLy8gTGVmdCB0b3AgY29ybmVyLgoJICAgICAgICBNYXRyaXhVdGlsLmVtYmVkSG9yaXpvbnRhbFNlcGFyYXRpb25QYXR0ZXJuKDAsIGhzcFdpZHRoIC0gMSwgbWF0cml4KTsKCSAgICAgICAgLy8gUmlnaHQgdG9wIGNvcm5lci4KCSAgICAgICAgTWF0cml4VXRpbC5lbWJlZEhvcml6b250YWxTZXBhcmF0aW9uUGF0dGVybihtYXRyaXguZ2V0V2lkdGgoKSAtIGhzcFdpZHRoLCBoc3BXaWR0aCAtIDEsIG1hdHJpeCk7CgkgICAgICAgIC8vIExlZnQgYm90dG9tIGNvcm5lci4KCSAgICAgICAgTWF0cml4VXRpbC5lbWJlZEhvcml6b250YWxTZXBhcmF0aW9uUGF0dGVybigwLCBtYXRyaXguZ2V0V2lkdGgoKSAtIGhzcFdpZHRoLCBtYXRyaXgpOwoJICAgICAgICAvLyBFbWJlZCB2ZXJ0aWNhbCBzZXBhcmF0aW9uIHBhdHRlcm5zIGFyb3VuZCB0aGUgc3F1YXJlcy4KCSAgICAgICAgdmFyIHZzcFNpemUgPSA3OwoJICAgICAgICAvLyBMZWZ0IHRvcCBjb3JuZXIuCgkgICAgICAgIE1hdHJpeFV0aWwuZW1iZWRWZXJ0aWNhbFNlcGFyYXRpb25QYXR0ZXJuKHZzcFNpemUsIDAsIG1hdHJpeCk7CgkgICAgICAgIC8vIFJpZ2h0IHRvcCBjb3JuZXIuCgkgICAgICAgIE1hdHJpeFV0aWwuZW1iZWRWZXJ0aWNhbFNlcGFyYXRpb25QYXR0ZXJuKG1hdHJpeC5nZXRIZWlnaHQoKSAtIHZzcFNpemUgLSAxLCAwLCBtYXRyaXgpOwoJICAgICAgICAvLyBMZWZ0IGJvdHRvbSBjb3JuZXIuCgkgICAgICAgIE1hdHJpeFV0aWwuZW1iZWRWZXJ0aWNhbFNlcGFyYXRpb25QYXR0ZXJuKHZzcFNpemUsIG1hdHJpeC5nZXRIZWlnaHQoKSAtIHZzcFNpemUsIG1hdHJpeCk7CgkgICAgfTsKCSAgICAvLyBFbWJlZCBwb3NpdGlvbiBhZGp1c3RtZW50IHBhdHRlcm5zIGlmIG5lZWQgYmUuCgkgICAgTWF0cml4VXRpbC5tYXliZUVtYmVkUG9zaXRpb25BZGp1c3RtZW50UGF0dGVybnMgPSBmdW5jdGlvbiAodmVyc2lvbiwgbWF0cml4KSB7CgkgICAgICAgIGlmICh2ZXJzaW9uLmdldFZlcnNpb25OdW1iZXIoKSA8IDIpIHsgLy8gVGhlIHBhdHRlcm5zIGFwcGVhciBpZiB2ZXJzaW9uID49IDIKCSAgICAgICAgICAgIHJldHVybjsKCSAgICAgICAgfQoJICAgICAgICB2YXIgaW5kZXggPSB2ZXJzaW9uLmdldFZlcnNpb25OdW1iZXIoKSAtIDE7CgkgICAgICAgIHZhciBjb29yZGluYXRlcyA9IE1hdHJpeFV0aWwuUE9TSVRJT05fQURKVVNUTUVOVF9QQVRURVJOX0NPT1JESU5BVEVfVEFCTEVbaW5kZXhdOwoJICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoXzEgPSBjb29yZGluYXRlcy5sZW5ndGg7IGkgIT09IGxlbmd0aF8xOyBpKyspIHsKCSAgICAgICAgICAgIHZhciB5ID0gY29vcmRpbmF0ZXNbaV07CgkgICAgICAgICAgICBpZiAoeSA+PSAwKSB7CgkgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogIT09IGxlbmd0aF8xOyBqKyspIHsKCSAgICAgICAgICAgICAgICAgICAgdmFyIHggPSBjb29yZGluYXRlc1tqXTsKCSAgICAgICAgICAgICAgICAgICAgaWYgKHggPj0gMCAmJiBNYXRyaXhVdGlsLmlzRW1wdHkobWF0cml4LmdldCh4LCB5KSkpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBjZWxsIGlzIHVuc2V0LCB3ZSBlbWJlZCB0aGUgcG9zaXRpb24gYWRqdXN0bWVudCBwYXR0ZXJuIGhlcmUuCgkgICAgICAgICAgICAgICAgICAgICAgICAvLyAtMiBpcyBuZWNlc3Nhcnkgc2luY2UgdGhlIHgveSBjb29yZGluYXRlcyBwb2ludCB0byB0aGUgY2VudGVyIG9mIHRoZSBwYXR0ZXJuLCBub3QgdGhlCgkgICAgICAgICAgICAgICAgICAgICAgICAvLyBsZWZ0IHRvcCBjb3JuZXIuCgkgICAgICAgICAgICAgICAgICAgICAgICBNYXRyaXhVdGlsLmVtYmVkUG9zaXRpb25BZGp1c3RtZW50UGF0dGVybih4IC0gMiwgeSAtIDIsIG1hdHJpeCk7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICB9OwoJICAgIE1hdHJpeFV0aWwuUE9TSVRJT05fREVURUNUSU9OX1BBVFRFUk4gPSBBcnJheS5mcm9tKFsKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAxLCAxLCAxLCAxLCAxLCAxXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMCwgMCwgMCwgMCwgMCwgMV0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDAsIDEsIDEsIDEsIDAsIDFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAwLCAxLCAxLCAxLCAwLCAxXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMCwgMSwgMSwgMSwgMCwgMV0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDAsIDAsIDAsIDAsIDAsIDFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAxLCAxLCAxLCAxLCAxLCAxXSksCgkgICAgXSk7CgkgICAgTWF0cml4VXRpbC5QT1NJVElPTl9BREpVU1RNRU5UX1BBVFRFUk4gPSBBcnJheS5mcm9tKFsKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAxLCAxLCAxLCAxXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMCwgMCwgMCwgMV0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDAsIDEsIDAsIDFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAwLCAwLCAwLCAxXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMSwgMSwgMSwgMV0pLAoJICAgIF0pOwoJICAgIC8vIEZyb20gQXBwZW5kaXggRS4gVGFibGUgMSwgSklTMDUxMFg6MjAwNCAoNzE6IHApLiBUaGUgdGFibGUgd2FzIGRvdWJsZS1jaGVja2VkIGJ5IGtvbWF0c3UuCgkgICAgTWF0cml4VXRpbC5QT1NJVElPTl9BREpVU1RNRU5UX1BBVFRFUk5fQ09PUkRJTkFURV9UQUJMRSA9IEFycmF5LmZyb20oWwoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWy0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbNiwgMTgsIC0xLCAtMSwgLTEsIC0xLCAtMV0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzYsIDIyLCAtMSwgLTEsIC0xLCAtMSwgLTFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFs2LCAyNiwgLTEsIC0xLCAtMSwgLTEsIC0xXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbNiwgMzAsIC0xLCAtMSwgLTEsIC0xLCAtMV0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzYsIDM0LCAtMSwgLTEsIC0xLCAtMSwgLTFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFs2LCAyMiwgMzgsIC0xLCAtMSwgLTEsIC0xXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbNiwgMjQsIDQyLCAtMSwgLTEsIC0xLCAtMV0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzYsIDI2LCA0NiwgLTEsIC0xLCAtMSwgLTFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFs2LCAyOCwgNTAsIC0xLCAtMSwgLTEsIC0xXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbNiwgMzAsIDU0LCAtMSwgLTEsIC0xLCAtMV0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzYsIDMyLCA1OCwgLTEsIC0xLCAtMSwgLTFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFs2LCAzNCwgNjIsIC0xLCAtMSwgLTEsIC0xXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbNiwgMjYsIDQ2LCA2NiwgLTEsIC0xLCAtMV0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzYsIDI2LCA0OCwgNzAsIC0xLCAtMSwgLTFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFs2LCAyNiwgNTAsIDc0LCAtMSwgLTEsIC0xXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbNiwgMzAsIDU0LCA3OCwgLTEsIC0xLCAtMV0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzYsIDMwLCA1NiwgODIsIC0xLCAtMSwgLTFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFs2LCAzMCwgNTgsIDg2LCAtMSwgLTEsIC0xXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbNiwgMzQsIDYyLCA5MCwgLTEsIC0xLCAtMV0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzYsIDI4LCA1MCwgNzIsIDk0LCAtMSwgLTFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFs2LCAyNiwgNTAsIDc0LCA5OCwgLTEsIC0xXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbNiwgMzAsIDU0LCA3OCwgMTAyLCAtMSwgLTFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFs2LCAyOCwgNTQsIDgwLCAxMDYsIC0xLCAtMV0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzYsIDMyLCA1OCwgODQsIDExMCwgLTEsIC0xXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbNiwgMzAsIDU4LCA4NiwgMTE0LCAtMSwgLTFdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFs2LCAzNCwgNjIsIDkwLCAxMTgsIC0xLCAtMV0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzYsIDI2LCA1MCwgNzQsIDk4LCAxMjIsIC0xXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbNiwgMzAsIDU0LCA3OCwgMTAyLCAxMjYsIC0xXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbNiwgMjYsIDUyLCA3OCwgMTA0LCAxMzAsIC0xXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbNiwgMzAsIDU2LCA4MiwgMTA4LCAxMzQsIC0xXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbNiwgMzQsIDYwLCA4NiwgMTEyLCAxMzgsIC0xXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbNiwgMzAsIDU4LCA4NiwgMTE0LCAxNDIsIC0xXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbNiwgMzQsIDYyLCA5MCwgMTE4LCAxNDYsIC0xXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbNiwgMzAsIDU0LCA3OCwgMTAyLCAxMjYsIDE1MF0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzYsIDI0LCA1MCwgNzYsIDEwMiwgMTI4LCAxNTRdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFs2LCAyOCwgNTQsIDgwLCAxMDYsIDEzMiwgMTU4XSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbNiwgMzIsIDU4LCA4NCwgMTEwLCAxMzYsIDE2Ml0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzYsIDI2LCA1NCwgODIsIDExMCwgMTM4LCAxNjZdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFs2LCAzMCwgNTgsIDg2LCAxMTQsIDE0MiwgMTcwXSksCgkgICAgXSk7CgkgICAgLy8gVHlwZSBpbmZvIGNlbGxzIGF0IHRoZSBsZWZ0IHRvcCBjb3JuZXIuCgkgICAgTWF0cml4VXRpbC5UWVBFX0lORk9fQ09PUkRJTkFURVMgPSBBcnJheS5mcm9tKFsKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFs4LCAwXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbOCwgMV0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzgsIDJdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFs4LCAzXSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbOCwgNF0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzgsIDVdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFs4LCA3XSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbOCwgOF0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzcsIDhdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFs1LCA4XSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbNCwgOF0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzMsIDhdKSwKCSAgICAgICAgSW50MzJBcnJheS5mcm9tKFsyLCA4XSksCgkgICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgOF0pLAoJICAgICAgICBJbnQzMkFycmF5LmZyb20oWzAsIDhdKSwKCSAgICBdKTsKCSAgICAvLyBGcm9tIEFwcGVuZGl4IEQgaW4gSklTWDA1MTA6MjAwNCAocC4gNjcpCgkgICAgTWF0cml4VXRpbC5WRVJTSU9OX0lORk9fUE9MWSA9IDB4MWYyNTsgLy8gMSAxMTExIDAwMTAgMDEwMQoJICAgIC8vIEZyb20gQXBwZW5kaXggQyBpbiBKSVNYMDUxMDoyMDA0IChwLjY1KS4KCSAgICBNYXRyaXhVdGlsLlRZUEVfSU5GT19QT0xZID0gMHg1Mzc7CgkgICAgTWF0cml4VXRpbC5UWVBFX0lORk9fTUFTS19QQVRURVJOID0gMHg1NDEyOwoJICAgIHJldHVybiBNYXRyaXhVdGlsOwoJfSgpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IE1hdHJpeFV0aWw7CgoJfSk7CgoJdmFyIEJsb2NrUGFpcl8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJLyoKCSAqIENvcHlyaWdodCAyMDA4IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgkvKm5hbWVzcGFjZSBjb20uZ29vZ2xlLnp4aW5nLnFyY29kZS5lbmNvZGVyIHsqLwoJdmFyIEJsb2NrUGFpciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBCbG9ja1BhaXIoZGF0YUJ5dGVzLCBlcnJvckNvcnJlY3Rpb25CeXRlcykgewoJICAgICAgICB0aGlzLmRhdGFCeXRlcyA9IGRhdGFCeXRlczsKCSAgICAgICAgdGhpcy5lcnJvckNvcnJlY3Rpb25CeXRlcyA9IGVycm9yQ29ycmVjdGlvbkJ5dGVzOwoJICAgIH0KCSAgICBCbG9ja1BhaXIucHJvdG90eXBlLmdldERhdGFCeXRlcyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuZGF0YUJ5dGVzOwoJICAgIH07CgkgICAgQmxvY2tQYWlyLnByb3RvdHlwZS5nZXRFcnJvckNvcnJlY3Rpb25CeXRlcyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JDb3JyZWN0aW9uQnl0ZXM7CgkgICAgfTsKCSAgICByZXR1cm4gQmxvY2tQYWlyOwoJfSgpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IEJsb2NrUGFpcjsKCgl9KTsKCgl2YXIgRW5jb2Rlcl8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJLyoKCSAqIENvcHlyaWdodCAyMDA4IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCXZhciBfX3ZhbHVlcyA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX3ZhbHVlcykgfHwgZnVuY3Rpb24obykgewoJICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gImZ1bmN0aW9uIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwOwoJICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pOwoJICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gIm51bWJlciIpIHJldHVybiB7CgkgICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7CgkgICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07CgkgICAgICAgIH0KCSAgICB9OwoJICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/ICJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLiIgOiAiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpOwoJfTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgkvKm5hbWVzcGFjZSBjb20uZ29vZ2xlLnp4aW5nLnFyY29kZS5lbmNvZGVyIHsqLwoKCgoKCgoKCgoKCgoKCgkvKmltcG9ydCBqYXZhLmlvLlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb247Ki8KCS8qaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ki8KCS8qaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOyovCgkvKmltcG9ydCBqYXZhLnV0aWwuTWFwOyovCgkvKioKCSAqIEBhdXRob3Igc2F0b3J1eEBnb29nbGUuY29tIChTYXRvcnUgVGFrYWJheWFzaGkpIC0gY3JlYXRvcgoJICogQGF1dGhvciBkc3dpdGtpbkBnb29nbGUuY29tIChEYW5pZWwgU3dpdGtpbikgLSBwb3J0ZWQgZnJvbSBDKysKCSAqLwoJdmFyIEVuY29kZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgLy8gVFlQRVNDUklQVFBPUlQ6IGNoYW5nZWQgdG8gVVRGOCwgdGhlIGRlZmF1bHQgZm9yIGpzCgkgICAgZnVuY3Rpb24gRW5jb2RlcigpIHsKCSAgICB9CgkgICAgLy8gVGhlIG1hc2sgcGVuYWx0eSBjYWxjdWxhdGlvbiBpcyBjb21wbGljYXRlZC4gIFNlZSBUYWJsZSAyMSBvZiBKSVNYMDUxMDoyMDA0IChwLjQ1KSBmb3IgZGV0YWlscy4KCSAgICAvLyBCYXNpY2FsbHkgaXQgYXBwbGllcyBmb3VyIHJ1bGVzIGFuZCBzdW1tYXRlIGFsbCBwZW5hbHRpZXMuCgkgICAgRW5jb2Rlci5jYWxjdWxhdGVNYXNrUGVuYWx0eSA9IGZ1bmN0aW9uIChtYXRyaXgpIHsKCSAgICAgICAgcmV0dXJuIE1hc2tVdGlsXzEuZGVmYXVsdC5hcHBseU1hc2tQZW5hbHR5UnVsZTEobWF0cml4KQoJICAgICAgICAgICAgKyBNYXNrVXRpbF8xLmRlZmF1bHQuYXBwbHlNYXNrUGVuYWx0eVJ1bGUyKG1hdHJpeCkKCSAgICAgICAgICAgICsgTWFza1V0aWxfMS5kZWZhdWx0LmFwcGx5TWFza1BlbmFsdHlSdWxlMyhtYXRyaXgpCgkgICAgICAgICAgICArIE1hc2tVdGlsXzEuZGVmYXVsdC5hcHBseU1hc2tQZW5hbHR5UnVsZTQobWF0cml4KTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEBwYXJhbSBjb250ZW50IHRleHQgdG8gZW5jb2RlCgkgICAgICogQHBhcmFtIGVjTGV2ZWwgZXJyb3IgY29ycmVjdGlvbiBsZXZlbCB0byB1c2UKCSAgICAgKiBAcmV0dXJuIHtAbGluayBRUkNvZGV9IHJlcHJlc2VudGluZyB0aGUgZW5jb2RlZCBRUiBjb2RlCgkgICAgICogQHRocm93cyBXcml0ZXJFeGNlcHRpb24gaWYgZW5jb2RpbmcgY2FuJ3Qgc3VjY2VlZCwgYmVjYXVzZSBvZiBmb3IgZXhhbXBsZSBpbnZhbGlkIGNvbnRlbnQKCSAgICAgKiAgIG9yIGNvbmZpZ3VyYXRpb24KCSAgICAgKi8KCSAgICAvLyBwdWJsaWMgc3RhdGljIGVuY29kZShjb250ZW50OiBzdHJpbmcsIGVjTGV2ZWw6IEVycm9yQ29ycmVjdGlvbkxldmVsKTogUVJDb2RlIC8qdGhyb3dzIFdyaXRlckV4Y2VwdGlvbiovIHsKCSAgICAvLyAgIHJldHVybiBlbmNvZGUoY29udGVudCwgZWNMZXZlbCwgbnVsbCkKCSAgICAvLyB9CgkgICAgRW5jb2Rlci5lbmNvZGUgPSBmdW5jdGlvbiAoY29udGVudCwgZWNMZXZlbCwgaGludHMpIHsKCSAgICAgICAgaWYgKGhpbnRzID09PSB2b2lkIDApIHsgaGludHMgPSBudWxsOyB9CgkgICAgICAgIC8vIERldGVybWluZSB3aGF0IGNoYXJhY3RlciBlbmNvZGluZyBoYXMgYmVlbiBzcGVjaWZpZWQgYnkgdGhlIGNhbGxlciwgaWYgYW55CgkgICAgICAgIHZhciBlbmNvZGluZyA9IEVuY29kZXIuREVGQVVMVF9CWVRFX01PREVfRU5DT0RJTkc7CgkgICAgICAgIHZhciBoYXNFbmNvZGluZ0hpbnQgPSBoaW50cyAhPT0gbnVsbCAmJiB1bmRlZmluZWQgIT09IGhpbnRzLmdldChFbmNvZGVIaW50VHlwZV8xLmRlZmF1bHQuQ0hBUkFDVEVSX1NFVCk7CgkgICAgICAgIGlmIChoYXNFbmNvZGluZ0hpbnQpIHsKCSAgICAgICAgICAgIGVuY29kaW5nID0gaGludHMuZ2V0KEVuY29kZUhpbnRUeXBlXzEuZGVmYXVsdC5DSEFSQUNURVJfU0VUKS50b1N0cmluZygpOwoJICAgICAgICB9CgkgICAgICAgIC8vIFBpY2sgYW4gZW5jb2RpbmcgbW9kZSBhcHByb3ByaWF0ZSBmb3IgdGhlIGNvbnRlbnQuIE5vdGUgdGhhdCB0aGlzIHdpbGwgbm90IGF0dGVtcHQgdG8gdXNlCgkgICAgICAgIC8vIG11bHRpcGxlIG1vZGVzIC8gc2VnbWVudHMgZXZlbiBpZiB0aGF0IHdlcmUgbW9yZSBlZmZpY2llbnQuIFR3b3VsZCBiZSBuaWNlLgoJICAgICAgICB2YXIgbW9kZSA9IHRoaXMuY2hvb3NlTW9kZShjb250ZW50LCBlbmNvZGluZyk7CgkgICAgICAgIC8vIFRoaXMgd2lsbCBzdG9yZSB0aGUgaGVhZGVyIGluZm9ybWF0aW9uLCBsaWtlIG1vZGUgYW5kCgkgICAgICAgIC8vIGxlbmd0aCwgYXMgd2VsbCBhcyAiaGVhZGVyIiBzZWdtZW50cyBsaWtlIGFuIEVDSSBzZWdtZW50LgoJICAgICAgICB2YXIgaGVhZGVyQml0cyA9IG5ldyBCaXRBcnJheV8xLmRlZmF1bHQoKTsKCSAgICAgICAgLy8gQXBwZW5kIEVDSSBzZWdtZW50IGlmIGFwcGxpY2FibGUKCSAgICAgICAgaWYgKG1vZGUgPT09IE1vZGVfMS5kZWZhdWx0LkJZVEUgJiYgKGhhc0VuY29kaW5nSGludCB8fCBFbmNvZGVyLkRFRkFVTFRfQllURV9NT0RFX0VOQ09ESU5HICE9PSBlbmNvZGluZykpIHsKCSAgICAgICAgICAgIHZhciBlY2kgPSBDaGFyYWN0ZXJTZXRFQ0lfMS5kZWZhdWx0LmdldENoYXJhY3RlclNldEVDSUJ5TmFtZShlbmNvZGluZyk7CgkgICAgICAgICAgICBpZiAoZWNpICE9PSB1bmRlZmluZWQpIHsKCSAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZEVDSShlY2ksIGhlYWRlckJpdHMpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIC8vIChXaXRoIEVDSSBpbiBwbGFjZSwpIFdyaXRlIHRoZSBtb2RlIG1hcmtlcgoJICAgICAgICB0aGlzLmFwcGVuZE1vZGVJbmZvKG1vZGUsIGhlYWRlckJpdHMpOwoJICAgICAgICAvLyBDb2xsZWN0IGRhdGEgd2l0aGluIHRoZSBtYWluIHNlZ21lbnQsIHNlcGFyYXRlbHksIHRvIGNvdW50IGl0cyBzaXplIGlmIG5lZWRlZC4gRG9uJ3QgYWRkIGl0IHRvCgkgICAgICAgIC8vIG1haW4gcGF5bG9hZCB5ZXQuCgkgICAgICAgIHZhciBkYXRhQml0cyA9IG5ldyBCaXRBcnJheV8xLmRlZmF1bHQoKTsKCSAgICAgICAgdGhpcy5hcHBlbmRCeXRlcyhjb250ZW50LCBtb2RlLCBkYXRhQml0cywgZW5jb2RpbmcpOwoJICAgICAgICB2YXIgdmVyc2lvbjsKCSAgICAgICAgaWYgKGhpbnRzICE9PSBudWxsICYmIHVuZGVmaW5lZCAhPT0gaGludHMuZ2V0KEVuY29kZUhpbnRUeXBlXzEuZGVmYXVsdC5RUl9WRVJTSU9OKSkgewoJICAgICAgICAgICAgdmFyIHZlcnNpb25OdW1iZXIgPSBOdW1iZXIucGFyc2VJbnQoaGludHMuZ2V0KEVuY29kZUhpbnRUeXBlXzEuZGVmYXVsdC5RUl9WRVJTSU9OKS50b1N0cmluZygpLCAxMCk7CgkgICAgICAgICAgICB2ZXJzaW9uID0gVmVyc2lvbl8xJDEuZGVmYXVsdC5nZXRWZXJzaW9uRm9yTnVtYmVyKHZlcnNpb25OdW1iZXIpOwoJICAgICAgICAgICAgdmFyIGJpdHNOZWVkZWQgPSB0aGlzLmNhbGN1bGF0ZUJpdHNOZWVkZWQobW9kZSwgaGVhZGVyQml0cywgZGF0YUJpdHMsIHZlcnNpb24pOwoJICAgICAgICAgICAgaWYgKCF0aGlzLndpbGxGaXQoYml0c05lZWRlZCwgdmVyc2lvbiwgZWNMZXZlbCkpIHsKCSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV3JpdGVyRXhjZXB0aW9uXzEuZGVmYXVsdCgnRGF0YSB0b28gYmlnIGZvciByZXF1ZXN0ZWQgdmVyc2lvbicpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgdmVyc2lvbiA9IHRoaXMucmVjb21tZW5kVmVyc2lvbihlY0xldmVsLCBtb2RlLCBoZWFkZXJCaXRzLCBkYXRhQml0cyk7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGhlYWRlckFuZERhdGFCaXRzID0gbmV3IEJpdEFycmF5XzEuZGVmYXVsdCgpOwoJICAgICAgICBoZWFkZXJBbmREYXRhQml0cy5hcHBlbmRCaXRBcnJheShoZWFkZXJCaXRzKTsKCSAgICAgICAgLy8gRmluZCAibGVuZ3RoIiBvZiBtYWluIHNlZ21lbnQgYW5kIHdyaXRlIGl0CgkgICAgICAgIHZhciBudW1MZXR0ZXJzID0gbW9kZSA9PT0gTW9kZV8xLmRlZmF1bHQuQllURSA/IGRhdGFCaXRzLmdldFNpemVJbkJ5dGVzKCkgOiBjb250ZW50Lmxlbmd0aDsKCSAgICAgICAgdGhpcy5hcHBlbmRMZW5ndGhJbmZvKG51bUxldHRlcnMsIHZlcnNpb24sIG1vZGUsIGhlYWRlckFuZERhdGFCaXRzKTsKCSAgICAgICAgLy8gUHV0IGRhdGEgdG9nZXRoZXIgaW50byB0aGUgb3ZlcmFsbCBwYXlsb2FkCgkgICAgICAgIGhlYWRlckFuZERhdGFCaXRzLmFwcGVuZEJpdEFycmF5KGRhdGFCaXRzKTsKCSAgICAgICAgdmFyIGVjQmxvY2tzID0gdmVyc2lvbi5nZXRFQ0Jsb2Nrc0ZvckxldmVsKGVjTGV2ZWwpOwoJICAgICAgICB2YXIgbnVtRGF0YUJ5dGVzID0gdmVyc2lvbi5nZXRUb3RhbENvZGV3b3JkcygpIC0gZWNCbG9ja3MuZ2V0VG90YWxFQ0NvZGV3b3JkcygpOwoJICAgICAgICAvLyBUZXJtaW5hdGUgdGhlIGJpdHMgcHJvcGVybHkuCgkgICAgICAgIHRoaXMudGVybWluYXRlQml0cyhudW1EYXRhQnl0ZXMsIGhlYWRlckFuZERhdGFCaXRzKTsKCSAgICAgICAgLy8gSW50ZXJsZWF2ZSBkYXRhIGJpdHMgd2l0aCBlcnJvciBjb3JyZWN0aW9uIGNvZGUuCgkgICAgICAgIHZhciBmaW5hbEJpdHMgPSB0aGlzLmludGVybGVhdmVXaXRoRUNCeXRlcyhoZWFkZXJBbmREYXRhQml0cywgdmVyc2lvbi5nZXRUb3RhbENvZGV3b3JkcygpLCBudW1EYXRhQnl0ZXMsIGVjQmxvY2tzLmdldE51bUJsb2NrcygpKTsKCSAgICAgICAgdmFyIHFyQ29kZSA9IG5ldyBRUkNvZGVfMS5kZWZhdWx0KCk7CgkgICAgICAgIHFyQ29kZS5zZXRFQ0xldmVsKGVjTGV2ZWwpOwoJICAgICAgICBxckNvZGUuc2V0TW9kZShtb2RlKTsKCSAgICAgICAgcXJDb2RlLnNldFZlcnNpb24odmVyc2lvbik7CgkgICAgICAgIC8vICBDaG9vc2UgdGhlIG1hc2sgcGF0dGVybiBhbmQgc2V0IHRvICJxckNvZGUiLgoJICAgICAgICB2YXIgZGltZW5zaW9uID0gdmVyc2lvbi5nZXREaW1lbnNpb25Gb3JWZXJzaW9uKCk7CgkgICAgICAgIHZhciBtYXRyaXggPSBuZXcgQnl0ZU1hdHJpeF8xLmRlZmF1bHQoZGltZW5zaW9uLCBkaW1lbnNpb24pOwoJICAgICAgICB2YXIgbWFza1BhdHRlcm4gPSB0aGlzLmNob29zZU1hc2tQYXR0ZXJuKGZpbmFsQml0cywgZWNMZXZlbCwgdmVyc2lvbiwgbWF0cml4KTsKCSAgICAgICAgcXJDb2RlLnNldE1hc2tQYXR0ZXJuKG1hc2tQYXR0ZXJuKTsKCSAgICAgICAgLy8gQnVpbGQgdGhlIG1hdHJpeCBhbmQgc2V0IGl0IHRvICJxckNvZGUiLgoJICAgICAgICBNYXRyaXhVdGlsXzEuZGVmYXVsdC5idWlsZE1hdHJpeChmaW5hbEJpdHMsIGVjTGV2ZWwsIHZlcnNpb24sIG1hc2tQYXR0ZXJuLCBtYXRyaXgpOwoJICAgICAgICBxckNvZGUuc2V0TWF0cml4KG1hdHJpeCk7CgkgICAgICAgIHJldHVybiBxckNvZGU7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBEZWNpZGVzIHRoZSBzbWFsbGVzdCB2ZXJzaW9uIG9mIFFSIGNvZGUgdGhhdCB3aWxsIGNvbnRhaW4gYWxsIG9mIHRoZSBwcm92aWRlZCBkYXRhLgoJICAgICAqCgkgICAgICogQHRocm93cyBXcml0ZXJFeGNlcHRpb24gaWYgdGhlIGRhdGEgY2Fubm90IGZpdCBpbiBhbnkgdmVyc2lvbgoJICAgICAqLwoJICAgIEVuY29kZXIucmVjb21tZW5kVmVyc2lvbiA9IGZ1bmN0aW9uIChlY0xldmVsLCBtb2RlLCBoZWFkZXJCaXRzLCBkYXRhQml0cykgewoJICAgICAgICAvLyBIYXJkIHBhcnQ6IG5lZWQgdG8ga25vdyB2ZXJzaW9uIHRvIGtub3cgaG93IG1hbnkgYml0cyBsZW5ndGggdGFrZXMuIEJ1dCBuZWVkIHRvIGtub3cgaG93IG1hbnkKCSAgICAgICAgLy8gYml0cyBpdCB0YWtlcyB0byBrbm93IHZlcnNpb24uIEZpcnN0IHdlIHRha2UgYSBndWVzcyBhdCB2ZXJzaW9uIGJ5IGFzc3VtaW5nIHZlcnNpb24gd2lsbCBiZQoJICAgICAgICAvLyB0aGUgbWluaW11bSwgMToKCSAgICAgICAgdmFyIHByb3Zpc2lvbmFsQml0c05lZWRlZCA9IHRoaXMuY2FsY3VsYXRlQml0c05lZWRlZChtb2RlLCBoZWFkZXJCaXRzLCBkYXRhQml0cywgVmVyc2lvbl8xJDEuZGVmYXVsdC5nZXRWZXJzaW9uRm9yTnVtYmVyKDEpKTsKCSAgICAgICAgdmFyIHByb3Zpc2lvbmFsVmVyc2lvbiA9IHRoaXMuY2hvb3NlVmVyc2lvbihwcm92aXNpb25hbEJpdHNOZWVkZWQsIGVjTGV2ZWwpOwoJICAgICAgICAvLyBVc2UgdGhhdCBndWVzcyB0byBjYWxjdWxhdGUgdGhlIHJpZ2h0IHZlcnNpb24uIEkgYW0gc3RpbGwgbm90IHN1cmUgdGhpcyB3b3JrcyBpbiAxMDAlIG9mIGNhc2VzLgoJICAgICAgICB2YXIgYml0c05lZWRlZCA9IHRoaXMuY2FsY3VsYXRlQml0c05lZWRlZChtb2RlLCBoZWFkZXJCaXRzLCBkYXRhQml0cywgcHJvdmlzaW9uYWxWZXJzaW9uKTsKCSAgICAgICAgcmV0dXJuIHRoaXMuY2hvb3NlVmVyc2lvbihiaXRzTmVlZGVkLCBlY0xldmVsKTsKCSAgICB9OwoJICAgIEVuY29kZXIuY2FsY3VsYXRlQml0c05lZWRlZCA9IGZ1bmN0aW9uIChtb2RlLCBoZWFkZXJCaXRzLCBkYXRhQml0cywgdmVyc2lvbikgewoJICAgICAgICByZXR1cm4gaGVhZGVyQml0cy5nZXRTaXplKCkgKyBtb2RlLmdldENoYXJhY3RlckNvdW50Qml0cyh2ZXJzaW9uKSArIGRhdGFCaXRzLmdldFNpemUoKTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEByZXR1cm4gdGhlIGNvZGUgcG9pbnQgb2YgdGhlIHRhYmxlIHVzZWQgaW4gYWxwaGFudW1lcmljIG1vZGUgb3IKCSAgICAgKiAgLTEgaWYgdGhlcmUgaXMgbm8gY29ycmVzcG9uZGluZyBjb2RlIGluIHRoZSB0YWJsZS4KCSAgICAgKi8KCSAgICBFbmNvZGVyLmdldEFscGhhbnVtZXJpY0NvZGUgPSBmdW5jdGlvbiAoY29kZSAvKmludCovKSB7CgkgICAgICAgIGlmIChjb2RlIDwgRW5jb2Rlci5BTFBIQU5VTUVSSUNfVEFCTEUubGVuZ3RoKSB7CgkgICAgICAgICAgICByZXR1cm4gRW5jb2Rlci5BTFBIQU5VTUVSSUNfVEFCTEVbY29kZV07CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIC0xOwoJICAgIH07CgkgICAgLy8gcHVibGljIHN0YXRpYyBjaG9vc2VNb2RlKGNvbnRlbnQ6IHN0cmluZyk6IE1vZGUgewoJICAgIC8vICAgcmV0dXJuIGNob29zZU1vZGUoY29udGVudCwgbnVsbCk7CgkgICAgLy8gfQoJICAgIC8qKgoJICAgICAqIENob29zZSB0aGUgYmVzdCBtb2RlIGJ5IGV4YW1pbmluZyB0aGUgY29udGVudC4gTm90ZSB0aGF0ICdlbmNvZGluZycgaXMgdXNlZCBhcyBhIGhpbnQ7CgkgICAgICogaWYgaXQgaXMgU2hpZnRfSklTLCBhbmQgdGhlIGlucHV0IGlzIG9ubHkgZG91YmxlLWJ5dGUgS2FuamksIHRoZW4gd2UgcmV0dXJuIHtAbGluayBNb2RlI0tBTkpJfS4KCSAgICAgKi8KCSAgICBFbmNvZGVyLmNob29zZU1vZGUgPSBmdW5jdGlvbiAoY29udGVudCwgZW5jb2RpbmcpIHsKCSAgICAgICAgaWYgKGVuY29kaW5nID09PSB2b2lkIDApIHsgZW5jb2RpbmcgPSBudWxsOyB9CgkgICAgICAgIGlmIChDaGFyYWN0ZXJTZXRFQ0lfMS5kZWZhdWx0LlNKSVMuZ2V0TmFtZSgpID09PSBlbmNvZGluZyAmJiB0aGlzLmlzT25seURvdWJsZUJ5dGVLYW5qaShjb250ZW50KSkgewoJICAgICAgICAgICAgLy8gQ2hvb3NlIEthbmppIG1vZGUgaWYgYWxsIGlucHV0IGFyZSBkb3VibGUtYnl0ZSBjaGFyYWN0ZXJzCgkgICAgICAgICAgICByZXR1cm4gTW9kZV8xLmRlZmF1bHQuS0FOSkk7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGhhc051bWVyaWMgPSBmYWxzZTsKCSAgICAgICAgdmFyIGhhc0FscGhhbnVtZXJpYyA9IGZhbHNlOwoJICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoXzEgPSBjb250ZW50Lmxlbmd0aDsgaSA8IGxlbmd0aF8xOyArK2kpIHsKCSAgICAgICAgICAgIHZhciBjID0gY29udGVudC5jaGFyQXQoaSk7CgkgICAgICAgICAgICBpZiAoRW5jb2Rlci5pc0RpZ2l0KGMpKSB7CgkgICAgICAgICAgICAgICAgaGFzTnVtZXJpYyA9IHRydWU7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlIGlmICh0aGlzLmdldEFscGhhbnVtZXJpY0NvZGUoYy5jaGFyQ29kZUF0KDApKSAhPT0gLTEpIHsKCSAgICAgICAgICAgICAgICBoYXNBbHBoYW51bWVyaWMgPSB0cnVlOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgcmV0dXJuIE1vZGVfMS5kZWZhdWx0LkJZVEU7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgaWYgKGhhc0FscGhhbnVtZXJpYykgewoJICAgICAgICAgICAgcmV0dXJuIE1vZGVfMS5kZWZhdWx0LkFMUEhBTlVNRVJJQzsKCSAgICAgICAgfQoJICAgICAgICBpZiAoaGFzTnVtZXJpYykgewoJICAgICAgICAgICAgcmV0dXJuIE1vZGVfMS5kZWZhdWx0Lk5VTUVSSUM7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIE1vZGVfMS5kZWZhdWx0LkJZVEU7CgkgICAgfTsKCSAgICBFbmNvZGVyLmlzT25seURvdWJsZUJ5dGVLYW5qaSA9IGZ1bmN0aW9uIChjb250ZW50KSB7CgkgICAgICAgIHZhciBieXRlczsKCSAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgIGJ5dGVzID0gU3RyaW5nRW5jb2RpbmdfMS5kZWZhdWx0LmVuY29kZShjb250ZW50LCBDaGFyYWN0ZXJTZXRFQ0lfMS5kZWZhdWx0LlNKSVMpOyAvLyBjb250ZW50LmdldEJ5dGVzKCJTaGlmdF9KSVMiKSkKCSAgICAgICAgfQoJICAgICAgICBjYXRjaCAoaWdub3JlZCAvKjogVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiovKSB7CgkgICAgICAgICAgICByZXR1cm4gZmFsc2U7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGxlbmd0aCA9IGJ5dGVzLmxlbmd0aDsKCSAgICAgICAgaWYgKGxlbmd0aCAlIDIgIT09IDApIHsKCSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKCSAgICAgICAgfQoJICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSArPSAyKSB7CgkgICAgICAgICAgICB2YXIgYnl0ZTEgPSBieXRlc1tpXSAmIDB4RkY7CgkgICAgICAgICAgICBpZiAoKGJ5dGUxIDwgMHg4MSB8fCBieXRlMSA+IDB4OUYpICYmIChieXRlMSA8IDB4RTAgfHwgYnl0ZTEgPiAweEVCKSkgewoJICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gdHJ1ZTsKCSAgICB9OwoJICAgIEVuY29kZXIuY2hvb3NlTWFza1BhdHRlcm4gPSBmdW5jdGlvbiAoYml0cywgZWNMZXZlbCwgdmVyc2lvbiwgbWF0cml4KSB7CgkgICAgICAgIHZhciBtaW5QZW5hbHR5ID0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7IC8vIExvd2VyIHBlbmFsdHkgaXMgYmV0dGVyLgoJICAgICAgICB2YXIgYmVzdE1hc2tQYXR0ZXJuID0gLTE7CgkgICAgICAgIC8vIFdlIHRyeSBhbGwgbWFzayBwYXR0ZXJucyB0byBjaG9vc2UgdGhlIGJlc3Qgb25lLgoJICAgICAgICBmb3IgKHZhciBtYXNrUGF0dGVybiA9IDA7IG1hc2tQYXR0ZXJuIDwgUVJDb2RlXzEuZGVmYXVsdC5OVU1fTUFTS19QQVRURVJOUzsgbWFza1BhdHRlcm4rKykgewoJICAgICAgICAgICAgTWF0cml4VXRpbF8xLmRlZmF1bHQuYnVpbGRNYXRyaXgoYml0cywgZWNMZXZlbCwgdmVyc2lvbiwgbWFza1BhdHRlcm4sIG1hdHJpeCk7CgkgICAgICAgICAgICB2YXIgcGVuYWx0eSA9IHRoaXMuY2FsY3VsYXRlTWFza1BlbmFsdHkobWF0cml4KTsKCSAgICAgICAgICAgIGlmIChwZW5hbHR5IDwgbWluUGVuYWx0eSkgewoJICAgICAgICAgICAgICAgIG1pblBlbmFsdHkgPSBwZW5hbHR5OwoJICAgICAgICAgICAgICAgIGJlc3RNYXNrUGF0dGVybiA9IG1hc2tQYXR0ZXJuOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBiZXN0TWFza1BhdHRlcm47CgkgICAgfTsKCSAgICBFbmNvZGVyLmNob29zZVZlcnNpb24gPSBmdW5jdGlvbiAobnVtSW5wdXRCaXRzIC8qaW50Ki8sIGVjTGV2ZWwpIHsKCSAgICAgICAgZm9yICh2YXIgdmVyc2lvbk51bSA9IDE7IHZlcnNpb25OdW0gPD0gNDA7IHZlcnNpb25OdW0rKykgewoJICAgICAgICAgICAgdmFyIHZlcnNpb24gPSBWZXJzaW9uXzEkMS5kZWZhdWx0LmdldFZlcnNpb25Gb3JOdW1iZXIodmVyc2lvbk51bSk7CgkgICAgICAgICAgICBpZiAoRW5jb2Rlci53aWxsRml0KG51bUlucHV0Qml0cywgdmVyc2lvbiwgZWNMZXZlbCkpIHsKCSAgICAgICAgICAgICAgICByZXR1cm4gdmVyc2lvbjsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICB0aHJvdyBuZXcgV3JpdGVyRXhjZXB0aW9uXzEuZGVmYXVsdCgnRGF0YSB0b28gYmlnJyk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIG51bWJlciBvZiBpbnB1dCBiaXRzIHdpbGwgZml0IGluIGEgY29kZSB3aXRoIHRoZSBzcGVjaWZpZWQgdmVyc2lvbiBhbmQKCSAgICAgKiBlcnJvciBjb3JyZWN0aW9uIGxldmVsLgoJICAgICAqLwoJICAgIEVuY29kZXIud2lsbEZpdCA9IGZ1bmN0aW9uIChudW1JbnB1dEJpdHMgLyppbnQqLywgdmVyc2lvbiwgZWNMZXZlbCkgewoJICAgICAgICAvLyBJbiB0aGUgZm9sbG93aW5nIGNvbW1lbnRzLCB3ZSB1c2UgbnVtYmVycyBvZiBWZXJzaW9uIDctSC4KCSAgICAgICAgLy8gbnVtQnl0ZXMgPSAxOTYKCSAgICAgICAgdmFyIG51bUJ5dGVzID0gdmVyc2lvbi5nZXRUb3RhbENvZGV3b3JkcygpOwoJICAgICAgICAvLyBnZXROdW1FQ0J5dGVzID0gMTMwCgkgICAgICAgIHZhciBlY0Jsb2NrcyA9IHZlcnNpb24uZ2V0RUNCbG9ja3NGb3JMZXZlbChlY0xldmVsKTsKCSAgICAgICAgdmFyIG51bUVjQnl0ZXMgPSBlY0Jsb2Nrcy5nZXRUb3RhbEVDQ29kZXdvcmRzKCk7CgkgICAgICAgIC8vIGdldE51bURhdGFCeXRlcyA9IDE5NiAtIDEzMCA9IDY2CgkgICAgICAgIHZhciBudW1EYXRhQnl0ZXMgPSBudW1CeXRlcyAtIG51bUVjQnl0ZXM7CgkgICAgICAgIHZhciB0b3RhbElucHV0Qnl0ZXMgPSAobnVtSW5wdXRCaXRzICsgNykgLyA4OwoJICAgICAgICByZXR1cm4gbnVtRGF0YUJ5dGVzID49IHRvdGFsSW5wdXRCeXRlczsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIFRlcm1pbmF0ZSBiaXRzIGFzIGRlc2NyaWJlZCBpbiA4LjQuOCBhbmQgOC40Ljkgb2YgSklTWDA1MTA6MjAwNCAocC4yNCkuCgkgICAgICovCgkgICAgRW5jb2Rlci50ZXJtaW5hdGVCaXRzID0gZnVuY3Rpb24gKG51bURhdGFCeXRlcyAvKmludCovLCBiaXRzKSB7CgkgICAgICAgIHZhciBjYXBhY2l0eSA9IG51bURhdGFCeXRlcyAqIDg7CgkgICAgICAgIGlmIChiaXRzLmdldFNpemUoKSA+IGNhcGFjaXR5KSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgV3JpdGVyRXhjZXB0aW9uXzEuZGVmYXVsdCgnZGF0YSBiaXRzIGNhbm5vdCBmaXQgaW4gdGhlIFFSIENvZGUnICsgYml0cy5nZXRTaXplKCkgKyAnID4gJyArCgkgICAgICAgICAgICAgICAgY2FwYWNpdHkpOwoJICAgICAgICB9CgkgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNCAmJiBiaXRzLmdldFNpemUoKSA8IGNhcGFjaXR5OyArK2kpIHsKCSAgICAgICAgICAgIGJpdHMuYXBwZW5kQml0KGZhbHNlKTsKCSAgICAgICAgfQoJICAgICAgICAvLyBBcHBlbmQgdGVybWluYXRpb24gYml0cy4gU2VlIDguNC44IG9mIEpJU1gwNTEwOjIwMDQgKHAuMjQpIGZvciBkZXRhaWxzLgoJICAgICAgICAvLyBJZiB0aGUgbGFzdCBieXRlIGlzbid0IDgtYml0IGFsaWduZWQsIHdlJ2xsIGFkZCBwYWRkaW5nIGJpdHMuCgkgICAgICAgIHZhciBudW1CaXRzSW5MYXN0Qnl0ZSA9IGJpdHMuZ2V0U2l6ZSgpICYgMHgwNzsKCSAgICAgICAgaWYgKG51bUJpdHNJbkxhc3RCeXRlID4gMCkgewoJICAgICAgICAgICAgZm9yICh2YXIgaSA9IG51bUJpdHNJbkxhc3RCeXRlOyBpIDwgODsgaSsrKSB7CgkgICAgICAgICAgICAgICAgYml0cy5hcHBlbmRCaXQoZmFsc2UpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIC8vIElmIHdlIGhhdmUgbW9yZSBzcGFjZSwgd2UnbGwgZmlsbCB0aGUgc3BhY2Ugd2l0aCBwYWRkaW5nIHBhdHRlcm5zIGRlZmluZWQgaW4gOC40LjkgKHAuMjQpLgoJICAgICAgICB2YXIgbnVtUGFkZGluZ0J5dGVzID0gbnVtRGF0YUJ5dGVzIC0gYml0cy5nZXRTaXplSW5CeXRlcygpOwoJICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bVBhZGRpbmdCeXRlczsgKytpKSB7CgkgICAgICAgICAgICBiaXRzLmFwcGVuZEJpdHMoKGkgJiAweDAxKSA9PT0gMCA/IDB4RUMgOiAweDExLCA4KTsKCSAgICAgICAgfQoJICAgICAgICBpZiAoYml0cy5nZXRTaXplKCkgIT09IGNhcGFjaXR5KSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgV3JpdGVyRXhjZXB0aW9uXzEuZGVmYXVsdCgnQml0cyBzaXplIGRvZXMgbm90IGVxdWFsIGNhcGFjaXR5Jyk7CgkgICAgICAgIH0KCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEdldCBudW1iZXIgb2YgZGF0YSBieXRlcyBhbmQgbnVtYmVyIG9mIGVycm9yIGNvcnJlY3Rpb24gYnl0ZXMgZm9yIGJsb2NrIGlkICJibG9ja0lEIi4gU3RvcmUKCSAgICAgKiB0aGUgcmVzdWx0IGluICJudW1EYXRhQnl0ZXNJbkJsb2NrIiwgYW5kICJudW1FQ0J5dGVzSW5CbG9jayIuIFNlZSB0YWJsZSAxMiBpbiA4LjUuMSBvZgoJICAgICAqIEpJU1gwNTEwOjIwMDQgKHAuMzApCgkgICAgICovCgkgICAgRW5jb2Rlci5nZXROdW1EYXRhQnl0ZXNBbmROdW1FQ0J5dGVzRm9yQmxvY2tJRCA9IGZ1bmN0aW9uIChudW1Ub3RhbEJ5dGVzIC8qaW50Ki8sIG51bURhdGFCeXRlcyAvKmludCovLCBudW1SU0Jsb2NrcyAvKmludCovLCBibG9ja0lEIC8qaW50Ki8sIG51bURhdGFCeXRlc0luQmxvY2ssIG51bUVDQnl0ZXNJbkJsb2NrKSB7CgkgICAgICAgIGlmIChibG9ja0lEID49IG51bVJTQmxvY2tzKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgV3JpdGVyRXhjZXB0aW9uXzEuZGVmYXVsdCgnQmxvY2sgSUQgdG9vIGxhcmdlJyk7CgkgICAgICAgIH0KCSAgICAgICAgLy8gbnVtUnNCbG9ja3NJbkdyb3VwMiA9IDE5NiAlIDUgPSAxCgkgICAgICAgIHZhciBudW1Sc0Jsb2Nrc0luR3JvdXAyID0gbnVtVG90YWxCeXRlcyAlIG51bVJTQmxvY2tzOwoJICAgICAgICAvLyBudW1Sc0Jsb2Nrc0luR3JvdXAxID0gNSAtIDEgPSA0CgkgICAgICAgIHZhciBudW1Sc0Jsb2Nrc0luR3JvdXAxID0gbnVtUlNCbG9ja3MgLSBudW1Sc0Jsb2Nrc0luR3JvdXAyOwoJICAgICAgICAvLyBudW1Ub3RhbEJ5dGVzSW5Hcm91cDEgPSAxOTYgLyA1ID0gMzkKCSAgICAgICAgdmFyIG51bVRvdGFsQnl0ZXNJbkdyb3VwMSA9IE1hdGguZmxvb3IobnVtVG90YWxCeXRlcyAvIG51bVJTQmxvY2tzKTsKCSAgICAgICAgLy8gbnVtVG90YWxCeXRlc0luR3JvdXAyID0gMzkgKyAxID0gNDAKCSAgICAgICAgdmFyIG51bVRvdGFsQnl0ZXNJbkdyb3VwMiA9IG51bVRvdGFsQnl0ZXNJbkdyb3VwMSArIDE7CgkgICAgICAgIC8vIG51bURhdGFCeXRlc0luR3JvdXAxID0gNjYgLyA1ID0gMTMKCSAgICAgICAgdmFyIG51bURhdGFCeXRlc0luR3JvdXAxID0gTWF0aC5mbG9vcihudW1EYXRhQnl0ZXMgLyBudW1SU0Jsb2Nrcyk7CgkgICAgICAgIC8vIG51bURhdGFCeXRlc0luR3JvdXAyID0gMTMgKyAxID0gMTQKCSAgICAgICAgdmFyIG51bURhdGFCeXRlc0luR3JvdXAyID0gbnVtRGF0YUJ5dGVzSW5Hcm91cDEgKyAxOwoJICAgICAgICAvLyBudW1FY0J5dGVzSW5Hcm91cDEgPSAzOSAtIDEzID0gMjYKCSAgICAgICAgdmFyIG51bUVjQnl0ZXNJbkdyb3VwMSA9IG51bVRvdGFsQnl0ZXNJbkdyb3VwMSAtIG51bURhdGFCeXRlc0luR3JvdXAxOwoJICAgICAgICAvLyBudW1FY0J5dGVzSW5Hcm91cDIgPSA0MCAtIDE0ID0gMjYKCSAgICAgICAgdmFyIG51bUVjQnl0ZXNJbkdyb3VwMiA9IG51bVRvdGFsQnl0ZXNJbkdyb3VwMiAtIG51bURhdGFCeXRlc0luR3JvdXAyOwoJICAgICAgICAvLyBTYW5pdHkgY2hlY2tzLgoJICAgICAgICAvLyAyNiA9IDI2CgkgICAgICAgIGlmIChudW1FY0J5dGVzSW5Hcm91cDEgIT09IG51bUVjQnl0ZXNJbkdyb3VwMikgewoJICAgICAgICAgICAgdGhyb3cgbmV3IFdyaXRlckV4Y2VwdGlvbl8xLmRlZmF1bHQoJ0VDIGJ5dGVzIG1pc21hdGNoJyk7CgkgICAgICAgIH0KCSAgICAgICAgLy8gNSA9IDQgKyAxLgoJICAgICAgICBpZiAobnVtUlNCbG9ja3MgIT09IG51bVJzQmxvY2tzSW5Hcm91cDEgKyBudW1Sc0Jsb2Nrc0luR3JvdXAyKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgV3JpdGVyRXhjZXB0aW9uXzEuZGVmYXVsdCgnUlMgYmxvY2tzIG1pc21hdGNoJyk7CgkgICAgICAgIH0KCSAgICAgICAgLy8gMTk2ID0gKDEzICsgMjYpICogNCArICgxNCArIDI2KSAqIDEKCSAgICAgICAgaWYgKG51bVRvdGFsQnl0ZXMgIT09CgkgICAgICAgICAgICAoKG51bURhdGFCeXRlc0luR3JvdXAxICsgbnVtRWNCeXRlc0luR3JvdXAxKSAqCgkgICAgICAgICAgICAgICAgbnVtUnNCbG9ja3NJbkdyb3VwMSkgKwoJICAgICAgICAgICAgICAgICgobnVtRGF0YUJ5dGVzSW5Hcm91cDIgKyBudW1FY0J5dGVzSW5Hcm91cDIpICoKCSAgICAgICAgICAgICAgICAgICAgbnVtUnNCbG9ja3NJbkdyb3VwMikpIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBXcml0ZXJFeGNlcHRpb25fMS5kZWZhdWx0KCdUb3RhbCBieXRlcyBtaXNtYXRjaCcpOwoJICAgICAgICB9CgkgICAgICAgIGlmIChibG9ja0lEIDwgbnVtUnNCbG9ja3NJbkdyb3VwMSkgewoJICAgICAgICAgICAgbnVtRGF0YUJ5dGVzSW5CbG9ja1swXSA9IG51bURhdGFCeXRlc0luR3JvdXAxOwoJICAgICAgICAgICAgbnVtRUNCeXRlc0luQmxvY2tbMF0gPSBudW1FY0J5dGVzSW5Hcm91cDE7CgkgICAgICAgIH0KCSAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICBudW1EYXRhQnl0ZXNJbkJsb2NrWzBdID0gbnVtRGF0YUJ5dGVzSW5Hcm91cDI7CgkgICAgICAgICAgICBudW1FQ0J5dGVzSW5CbG9ja1swXSA9IG51bUVjQnl0ZXNJbkdyb3VwMjsKCSAgICAgICAgfQoJICAgIH07CgkgICAgLyoqCgkgICAgICogSW50ZXJsZWF2ZSAiYml0cyIgd2l0aCBjb3JyZXNwb25kaW5nIGVycm9yIGNvcnJlY3Rpb24gYnl0ZXMuIE9uIHN1Y2Nlc3MsIHN0b3JlIHRoZSByZXN1bHQgaW4KCSAgICAgKiAicmVzdWx0Ii4gVGhlIGludGVybGVhdmUgcnVsZSBpcyBjb21wbGljYXRlZC4gU2VlIDguNiBvZiBKSVNYMDUxMDoyMDA0IChwLjM3KSBmb3IgZGV0YWlscy4KCSAgICAgKi8KCSAgICBFbmNvZGVyLmludGVybGVhdmVXaXRoRUNCeXRlcyA9IGZ1bmN0aW9uIChiaXRzLCBudW1Ub3RhbEJ5dGVzIC8qaW50Ki8sIG51bURhdGFCeXRlcyAvKmludCovLCBudW1SU0Jsb2NrcyAvKmludCovKSB7CgkgICAgICAgIHZhciBlXzEsIF9hLCBlXzIsIF9iOwoJICAgICAgICAvLyAiYml0cyIgbXVzdCBoYXZlICJnZXROdW1EYXRhQnl0ZXMiIGJ5dGVzIG9mIGRhdGEuCgkgICAgICAgIGlmIChiaXRzLmdldFNpemVJbkJ5dGVzKCkgIT09IG51bURhdGFCeXRlcykgewoJICAgICAgICAgICAgdGhyb3cgbmV3IFdyaXRlckV4Y2VwdGlvbl8xLmRlZmF1bHQoJ051bWJlciBvZiBiaXRzIGFuZCBkYXRhIGJ5dGVzIGRvZXMgbm90IG1hdGNoJyk7CgkgICAgICAgIH0KCSAgICAgICAgLy8gU3RlcCAxLiAgRGl2aWRlIGRhdGEgYnl0ZXMgaW50byBibG9ja3MgYW5kIGdlbmVyYXRlIGVycm9yIGNvcnJlY3Rpb24gYnl0ZXMgZm9yIHRoZW0uIFdlJ2xsCgkgICAgICAgIC8vIHN0b3JlIHRoZSBkaXZpZGVkIGRhdGEgYnl0ZXMgYmxvY2tzIGFuZCBlcnJvciBjb3JyZWN0aW9uIGJ5dGVzIGJsb2NrcyBpbnRvICJibG9ja3MiLgoJICAgICAgICB2YXIgZGF0YUJ5dGVzT2Zmc2V0ID0gMDsKCSAgICAgICAgdmFyIG1heE51bURhdGFCeXRlcyA9IDA7CgkgICAgICAgIHZhciBtYXhOdW1FY0J5dGVzID0gMDsKCSAgICAgICAgLy8gU2luY2UsIHdlIGtub3cgdGhlIG51bWJlciBvZiByZWVkc29sbW9uIGJsb2Nrcywgd2UgY2FuIGluaXRpYWxpemUgdGhlIHZlY3RvciB3aXRoIHRoZSBudW1iZXIuCgkgICAgICAgIHZhciBibG9ja3MgPSBuZXcgQXJyYXkoKTsgLy8gbmV3IEFycmF5PEJsb2NrUGFpcj4obnVtUlNCbG9ja3MpCgkgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtUlNCbG9ja3M7ICsraSkgewoJICAgICAgICAgICAgdmFyIG51bURhdGFCeXRlc0luQmxvY2sgPSBuZXcgSW50MzJBcnJheSgxKTsKCSAgICAgICAgICAgIHZhciBudW1FY0J5dGVzSW5CbG9jayA9IG5ldyBJbnQzMkFycmF5KDEpOwoJICAgICAgICAgICAgRW5jb2Rlci5nZXROdW1EYXRhQnl0ZXNBbmROdW1FQ0J5dGVzRm9yQmxvY2tJRChudW1Ub3RhbEJ5dGVzLCBudW1EYXRhQnl0ZXMsIG51bVJTQmxvY2tzLCBpLCBudW1EYXRhQnl0ZXNJbkJsb2NrLCBudW1FY0J5dGVzSW5CbG9jayk7CgkgICAgICAgICAgICB2YXIgc2l6ZSA9IG51bURhdGFCeXRlc0luQmxvY2tbMF07CgkgICAgICAgICAgICB2YXIgZGF0YUJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoc2l6ZSk7CgkgICAgICAgICAgICBiaXRzLnRvQnl0ZXMoOCAqIGRhdGFCeXRlc09mZnNldCwgZGF0YUJ5dGVzLCAwLCBzaXplKTsKCSAgICAgICAgICAgIHZhciBlY0J5dGVzID0gRW5jb2Rlci5nZW5lcmF0ZUVDQnl0ZXMoZGF0YUJ5dGVzLCBudW1FY0J5dGVzSW5CbG9ja1swXSk7CgkgICAgICAgICAgICBibG9ja3MucHVzaChuZXcgQmxvY2tQYWlyXzEuZGVmYXVsdChkYXRhQnl0ZXMsIGVjQnl0ZXMpKTsKCSAgICAgICAgICAgIG1heE51bURhdGFCeXRlcyA9IE1hdGgubWF4KG1heE51bURhdGFCeXRlcywgc2l6ZSk7CgkgICAgICAgICAgICBtYXhOdW1FY0J5dGVzID0gTWF0aC5tYXgobWF4TnVtRWNCeXRlcywgZWNCeXRlcy5sZW5ndGgpOwoJICAgICAgICAgICAgZGF0YUJ5dGVzT2Zmc2V0ICs9IG51bURhdGFCeXRlc0luQmxvY2tbMF07CgkgICAgICAgIH0KCSAgICAgICAgaWYgKG51bURhdGFCeXRlcyAhPT0gZGF0YUJ5dGVzT2Zmc2V0KSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgV3JpdGVyRXhjZXB0aW9uXzEuZGVmYXVsdCgnRGF0YSBieXRlcyBkb2VzIG5vdCBtYXRjaCBvZmZzZXQnKTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IEJpdEFycmF5XzEuZGVmYXVsdCgpOwoJICAgICAgICAvLyBGaXJzdCwgcGxhY2UgZGF0YSBibG9ja3MuCgkgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWF4TnVtRGF0YUJ5dGVzOyArK2kpIHsKCSAgICAgICAgICAgIHRyeSB7CgkgICAgICAgICAgICAgICAgZm9yICh2YXIgYmxvY2tzXzEgPSAoZV8xID0gdm9pZCAwLCBfX3ZhbHVlcyhibG9ja3MpKSwgYmxvY2tzXzFfMSA9IGJsb2Nrc18xLm5leHQoKTsgIWJsb2Nrc18xXzEuZG9uZTsgYmxvY2tzXzFfMSA9IGJsb2Nrc18xLm5leHQoKSkgewoJICAgICAgICAgICAgICAgICAgICB2YXIgYmxvY2sgPSBibG9ja3NfMV8xLnZhbHVlOwoJICAgICAgICAgICAgICAgICAgICB2YXIgZGF0YUJ5dGVzID0gYmxvY2suZ2V0RGF0YUJ5dGVzKCk7CgkgICAgICAgICAgICAgICAgICAgIGlmIChpIDwgZGF0YUJ5dGVzLmxlbmd0aCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZEJpdHMoZGF0YUJ5dGVzW2ldLCA4KTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9CgkgICAgICAgICAgICBmaW5hbGx5IHsKCSAgICAgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgICAgICBpZiAoYmxvY2tzXzFfMSAmJiAhYmxvY2tzXzFfMS5kb25lICYmIChfYSA9IGJsb2Nrc18xLnJldHVybikpIF9hLmNhbGwoYmxvY2tzXzEpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgLy8gVGhlbiwgcGxhY2UgZXJyb3IgY29ycmVjdGlvbiBibG9ja3MuCgkgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWF4TnVtRWNCeXRlczsgKytpKSB7CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIGZvciAodmFyIGJsb2Nrc18yID0gKGVfMiA9IHZvaWQgMCwgX192YWx1ZXMoYmxvY2tzKSksIGJsb2Nrc18yXzEgPSBibG9ja3NfMi5uZXh0KCk7ICFibG9ja3NfMl8xLmRvbmU7IGJsb2Nrc18yXzEgPSBibG9ja3NfMi5uZXh0KCkpIHsKCSAgICAgICAgICAgICAgICAgICAgdmFyIGJsb2NrID0gYmxvY2tzXzJfMS52YWx1ZTsKCSAgICAgICAgICAgICAgICAgICAgdmFyIGVjQnl0ZXMgPSBibG9jay5nZXRFcnJvckNvcnJlY3Rpb25CeXRlcygpOwoJICAgICAgICAgICAgICAgICAgICBpZiAoaSA8IGVjQnl0ZXMubGVuZ3RoKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kQml0cyhlY0J5dGVzW2ldLCA4KTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGNhdGNoIChlXzJfMSkgeyBlXzIgPSB7IGVycm9yOiBlXzJfMSB9OyB9CgkgICAgICAgICAgICBmaW5hbGx5IHsKCSAgICAgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgICAgICBpZiAoYmxvY2tzXzJfMSAmJiAhYmxvY2tzXzJfMS5kb25lICYmIChfYiA9IGJsb2Nrc18yLnJldHVybikpIF9iLmNhbGwoYmxvY2tzXzIpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMikgdGhyb3cgZV8yLmVycm9yOyB9CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgaWYgKG51bVRvdGFsQnl0ZXMgIT09IHJlc3VsdC5nZXRTaXplSW5CeXRlcygpKSB7IC8vIFNob3VsZCBiZSBzYW1lLgoJICAgICAgICAgICAgdGhyb3cgbmV3IFdyaXRlckV4Y2VwdGlvbl8xLmRlZmF1bHQoJ0ludGVybGVhdmluZyBlcnJvcjogJyArIG51bVRvdGFsQnl0ZXMgKyAnIGFuZCAnICsKCSAgICAgICAgICAgICAgICByZXN1bHQuZ2V0U2l6ZUluQnl0ZXMoKSArICcgZGlmZmVyLicpOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiByZXN1bHQ7CgkgICAgfTsKCSAgICBFbmNvZGVyLmdlbmVyYXRlRUNCeXRlcyA9IGZ1bmN0aW9uIChkYXRhQnl0ZXMsIG51bUVjQnl0ZXNJbkJsb2NrIC8qaW50Ki8pIHsKCSAgICAgICAgdmFyIG51bURhdGFCeXRlcyA9IGRhdGFCeXRlcy5sZW5ndGg7CgkgICAgICAgIHZhciB0b0VuY29kZSA9IG5ldyBJbnQzMkFycmF5KG51bURhdGFCeXRlcyArIG51bUVjQnl0ZXNJbkJsb2NrKTsgLy8gaW50W251bURhdGFCeXRlcyArIG51bUVjQnl0ZXNJbkJsb2NrXQoJICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bURhdGFCeXRlczsgaSsrKSB7CgkgICAgICAgICAgICB0b0VuY29kZVtpXSA9IGRhdGFCeXRlc1tpXSAmIDB4RkY7CgkgICAgICAgIH0KCSAgICAgICAgbmV3IFJlZWRTb2xvbW9uRW5jb2Rlcl8xLmRlZmF1bHQoR2VuZXJpY0dGXzEuZGVmYXVsdC5RUl9DT0RFX0ZJRUxEXzI1NikuZW5jb2RlKHRvRW5jb2RlLCBudW1FY0J5dGVzSW5CbG9jayk7CgkgICAgICAgIHZhciBlY0J5dGVzID0gbmV3IFVpbnQ4QXJyYXkobnVtRWNCeXRlc0luQmxvY2spOwoJICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bUVjQnl0ZXNJbkJsb2NrOyBpKyspIHsKCSAgICAgICAgICAgIGVjQnl0ZXNbaV0gPSAvKihieXRlKSAqLyB0b0VuY29kZVtudW1EYXRhQnl0ZXMgKyBpXTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gZWNCeXRlczsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEFwcGVuZCBtb2RlIGluZm8uIE9uIHN1Y2Nlc3MsIHN0b3JlIHRoZSByZXN1bHQgaW4gImJpdHMiLgoJICAgICAqLwoJICAgIEVuY29kZXIuYXBwZW5kTW9kZUluZm8gPSBmdW5jdGlvbiAobW9kZSwgYml0cykgewoJICAgICAgICBiaXRzLmFwcGVuZEJpdHMobW9kZS5nZXRCaXRzKCksIDQpOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQXBwZW5kIGxlbmd0aCBpbmZvLiBPbiBzdWNjZXNzLCBzdG9yZSB0aGUgcmVzdWx0IGluICJiaXRzIi4KCSAgICAgKi8KCSAgICBFbmNvZGVyLmFwcGVuZExlbmd0aEluZm8gPSBmdW5jdGlvbiAobnVtTGV0dGVycyAvKmludCovLCB2ZXJzaW9uLCBtb2RlLCBiaXRzKSB7CgkgICAgICAgIHZhciBudW1CaXRzID0gbW9kZS5nZXRDaGFyYWN0ZXJDb3VudEJpdHModmVyc2lvbik7CgkgICAgICAgIGlmIChudW1MZXR0ZXJzID49ICgxIDw8IG51bUJpdHMpKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgV3JpdGVyRXhjZXB0aW9uXzEuZGVmYXVsdChudW1MZXR0ZXJzICsgJyBpcyBiaWdnZXIgdGhhbiAnICsgKCgxIDw8IG51bUJpdHMpIC0gMSkpOwoJICAgICAgICB9CgkgICAgICAgIGJpdHMuYXBwZW5kQml0cyhudW1MZXR0ZXJzLCBudW1CaXRzKTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEFwcGVuZCAiYnl0ZXMiIGluICJtb2RlIiBtb2RlIChlbmNvZGluZykgaW50byAiYml0cyIuIE9uIHN1Y2Nlc3MsIHN0b3JlIHRoZSByZXN1bHQgaW4gImJpdHMiLgoJICAgICAqLwoJICAgIEVuY29kZXIuYXBwZW5kQnl0ZXMgPSBmdW5jdGlvbiAoY29udGVudCwgbW9kZSwgYml0cywgZW5jb2RpbmcpIHsKCSAgICAgICAgc3dpdGNoIChtb2RlKSB7CgkgICAgICAgICAgICBjYXNlIE1vZGVfMS5kZWZhdWx0Lk5VTUVSSUM6CgkgICAgICAgICAgICAgICAgRW5jb2Rlci5hcHBlbmROdW1lcmljQnl0ZXMoY29udGVudCwgYml0cyk7CgkgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICBjYXNlIE1vZGVfMS5kZWZhdWx0LkFMUEhBTlVNRVJJQzoKCSAgICAgICAgICAgICAgICBFbmNvZGVyLmFwcGVuZEFscGhhbnVtZXJpY0J5dGVzKGNvbnRlbnQsIGJpdHMpOwoJICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgY2FzZSBNb2RlXzEuZGVmYXVsdC5CWVRFOgoJICAgICAgICAgICAgICAgIEVuY29kZXIuYXBwZW5kOEJpdEJ5dGVzKGNvbnRlbnQsIGJpdHMsIGVuY29kaW5nKTsKCSAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgIGNhc2UgTW9kZV8xLmRlZmF1bHQuS0FOSkk6CgkgICAgICAgICAgICAgICAgRW5jb2Rlci5hcHBlbmRLYW5qaUJ5dGVzKGNvbnRlbnQsIGJpdHMpOwoJICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgZGVmYXVsdDoKCSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV3JpdGVyRXhjZXB0aW9uXzEuZGVmYXVsdCgnSW52YWxpZCBtb2RlOiAnICsgbW9kZSk7CgkgICAgICAgIH0KCSAgICB9OwoJICAgIEVuY29kZXIuZ2V0RGlnaXQgPSBmdW5jdGlvbiAoc2luZ2xlQ2hhcmFjdGVyKSB7CgkgICAgICAgIHJldHVybiBzaW5nbGVDaGFyYWN0ZXIuY2hhckNvZGVBdCgwKSAtIDQ4OwoJICAgIH07CgkgICAgRW5jb2Rlci5pc0RpZ2l0ID0gZnVuY3Rpb24gKHNpbmdsZUNoYXJhY3RlcikgewoJICAgICAgICB2YXIgY24gPSBFbmNvZGVyLmdldERpZ2l0KHNpbmdsZUNoYXJhY3Rlcik7CgkgICAgICAgIHJldHVybiBjbiA+PSAwICYmIGNuIDw9IDk7CgkgICAgfTsKCSAgICBFbmNvZGVyLmFwcGVuZE51bWVyaWNCeXRlcyA9IGZ1bmN0aW9uIChjb250ZW50LCBiaXRzKSB7CgkgICAgICAgIHZhciBsZW5ndGggPSBjb250ZW50Lmxlbmd0aDsKCSAgICAgICAgdmFyIGkgPSAwOwoJICAgICAgICB3aGlsZSAoaSA8IGxlbmd0aCkgewoJICAgICAgICAgICAgdmFyIG51bTEgPSBFbmNvZGVyLmdldERpZ2l0KGNvbnRlbnQuY2hhckF0KGkpKTsKCSAgICAgICAgICAgIGlmIChpICsgMiA8IGxlbmd0aCkgewoJICAgICAgICAgICAgICAgIC8vIEVuY29kZSB0aHJlZSBudW1lcmljIGxldHRlcnMgaW4gdGVuIGJpdHMuCgkgICAgICAgICAgICAgICAgdmFyIG51bTIgPSBFbmNvZGVyLmdldERpZ2l0KGNvbnRlbnQuY2hhckF0KGkgKyAxKSk7CgkgICAgICAgICAgICAgICAgdmFyIG51bTMgPSBFbmNvZGVyLmdldERpZ2l0KGNvbnRlbnQuY2hhckF0KGkgKyAyKSk7CgkgICAgICAgICAgICAgICAgYml0cy5hcHBlbmRCaXRzKG51bTEgKiAxMDAgKyBudW0yICogMTAgKyBudW0zLCAxMCk7CgkgICAgICAgICAgICAgICAgaSArPSAzOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZWxzZSBpZiAoaSArIDEgPCBsZW5ndGgpIHsKCSAgICAgICAgICAgICAgICAvLyBFbmNvZGUgdHdvIG51bWVyaWMgbGV0dGVycyBpbiBzZXZlbiBiaXRzLgoJICAgICAgICAgICAgICAgIHZhciBudW0yID0gRW5jb2Rlci5nZXREaWdpdChjb250ZW50LmNoYXJBdChpICsgMSkpOwoJICAgICAgICAgICAgICAgIGJpdHMuYXBwZW5kQml0cyhudW0xICogMTAgKyBudW0yLCA3KTsKCSAgICAgICAgICAgICAgICBpICs9IDI7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICAvLyBFbmNvZGUgb25lIG51bWVyaWMgbGV0dGVyIGluIGZvdXIgYml0cy4KCSAgICAgICAgICAgICAgICBiaXRzLmFwcGVuZEJpdHMobnVtMSwgNCk7CgkgICAgICAgICAgICAgICAgaSsrOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgfTsKCSAgICBFbmNvZGVyLmFwcGVuZEFscGhhbnVtZXJpY0J5dGVzID0gZnVuY3Rpb24gKGNvbnRlbnQsIGJpdHMpIHsKCSAgICAgICAgdmFyIGxlbmd0aCA9IGNvbnRlbnQubGVuZ3RoOwoJICAgICAgICB2YXIgaSA9IDA7CgkgICAgICAgIHdoaWxlIChpIDwgbGVuZ3RoKSB7CgkgICAgICAgICAgICB2YXIgY29kZTEgPSBFbmNvZGVyLmdldEFscGhhbnVtZXJpY0NvZGUoY29udGVudC5jaGFyQ29kZUF0KGkpKTsKCSAgICAgICAgICAgIGlmIChjb2RlMSA9PT0gLTEpIHsKCSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV3JpdGVyRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgaWYgKGkgKyAxIDwgbGVuZ3RoKSB7CgkgICAgICAgICAgICAgICAgdmFyIGNvZGUyID0gRW5jb2Rlci5nZXRBbHBoYW51bWVyaWNDb2RlKGNvbnRlbnQuY2hhckNvZGVBdChpICsgMSkpOwoJICAgICAgICAgICAgICAgIGlmIChjb2RlMiA9PT0gLTEpIHsKCSAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdyaXRlckV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgLy8gRW5jb2RlIHR3byBhbHBoYW51bWVyaWMgbGV0dGVycyBpbiAxMSBiaXRzLgoJICAgICAgICAgICAgICAgIGJpdHMuYXBwZW5kQml0cyhjb2RlMSAqIDQ1ICsgY29kZTIsIDExKTsKCSAgICAgICAgICAgICAgICBpICs9IDI7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICAvLyBFbmNvZGUgb25lIGFscGhhbnVtZXJpYyBsZXR0ZXIgaW4gc2l4IGJpdHMuCgkgICAgICAgICAgICAgICAgYml0cy5hcHBlbmRCaXRzKGNvZGUxLCA2KTsKCSAgICAgICAgICAgICAgICBpKys7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICB9OwoJICAgIEVuY29kZXIuYXBwZW5kOEJpdEJ5dGVzID0gZnVuY3Rpb24gKGNvbnRlbnQsIGJpdHMsIGVuY29kaW5nKSB7CgkgICAgICAgIHZhciBieXRlczsKCSAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgIGJ5dGVzID0gU3RyaW5nRW5jb2RpbmdfMS5kZWZhdWx0LmVuY29kZShjb250ZW50LCBlbmNvZGluZyk7CgkgICAgICAgIH0KCSAgICAgICAgY2F0Y2ggKHVlZSAvKjogVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiovKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgV3JpdGVyRXhjZXB0aW9uXzEuZGVmYXVsdCh1ZWUpOwoJICAgICAgICB9CgkgICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGhfMiA9IGJ5dGVzLmxlbmd0aDsgaSAhPT0gbGVuZ3RoXzI7IGkrKykgewoJICAgICAgICAgICAgdmFyIGIgPSBieXRlc1tpXTsKCSAgICAgICAgICAgIGJpdHMuYXBwZW5kQml0cyhiLCA4KTsKCSAgICAgICAgfQoJICAgIH07CgkgICAgLyoqCgkgICAgICogQHRocm93cyBXcml0ZXJFeGNlcHRpb24KCSAgICAgKi8KCSAgICBFbmNvZGVyLmFwcGVuZEthbmppQnl0ZXMgPSBmdW5jdGlvbiAoY29udGVudCwgYml0cykgewoJICAgICAgICB2YXIgYnl0ZXM7CgkgICAgICAgIHRyeSB7CgkgICAgICAgICAgICBieXRlcyA9IFN0cmluZ0VuY29kaW5nXzEuZGVmYXVsdC5lbmNvZGUoY29udGVudCwgQ2hhcmFjdGVyU2V0RUNJXzEuZGVmYXVsdC5TSklTKTsKCSAgICAgICAgfQoJICAgICAgICBjYXRjaCAodWVlIC8qOiBVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uKi8pIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBXcml0ZXJFeGNlcHRpb25fMS5kZWZhdWx0KHVlZSk7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGxlbmd0aCA9IGJ5dGVzLmxlbmd0aDsKCSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkgKz0gMikgewoJICAgICAgICAgICAgdmFyIGJ5dGUxID0gYnl0ZXNbaV0gJiAweEZGOwoJICAgICAgICAgICAgdmFyIGJ5dGUyID0gYnl0ZXNbaSArIDFdICYgMHhGRjsKCSAgICAgICAgICAgIHZhciBjb2RlID0gKChieXRlMSA8PCA4KSAmIDB4RkZGRkZGRkYpIHwgYnl0ZTI7CgkgICAgICAgICAgICB2YXIgc3VidHJhY3RlZCA9IC0xOwoJICAgICAgICAgICAgaWYgKGNvZGUgPj0gMHg4MTQwICYmIGNvZGUgPD0gMHg5ZmZjKSB7CgkgICAgICAgICAgICAgICAgc3VidHJhY3RlZCA9IGNvZGUgLSAweDgxNDA7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlIGlmIChjb2RlID49IDB4ZTA0MCAmJiBjb2RlIDw9IDB4ZWJiZikgewoJICAgICAgICAgICAgICAgIHN1YnRyYWN0ZWQgPSBjb2RlIC0gMHhjMTQwOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgaWYgKHN1YnRyYWN0ZWQgPT09IC0xKSB7CgkgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdyaXRlckV4Y2VwdGlvbl8xLmRlZmF1bHQoJ0ludmFsaWQgYnl0ZSBzZXF1ZW5jZScpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgdmFyIGVuY29kZWQgPSAoKHN1YnRyYWN0ZWQgPj4gOCkgKiAweGMwKSArIChzdWJ0cmFjdGVkICYgMHhmZik7CgkgICAgICAgICAgICBiaXRzLmFwcGVuZEJpdHMoZW5jb2RlZCwgMTMpOwoJICAgICAgICB9CgkgICAgfTsKCSAgICBFbmNvZGVyLmFwcGVuZEVDSSA9IGZ1bmN0aW9uIChlY2ksIGJpdHMpIHsKCSAgICAgICAgYml0cy5hcHBlbmRCaXRzKE1vZGVfMS5kZWZhdWx0LkVDSS5nZXRCaXRzKCksIDQpOwoJICAgICAgICAvLyBUaGlzIGlzIGNvcnJlY3QgZm9yIHZhbHVlcyB1cCB0byAxMjcsIHdoaWNoIGlzIGFsbCB3ZSBuZWVkIG5vdy4KCSAgICAgICAgYml0cy5hcHBlbmRCaXRzKGVjaS5nZXRWYWx1ZSgpLCA4KTsKCSAgICB9OwoJICAgIC8vIFRoZSBvcmlnaW5hbCB0YWJsZSBpcyBkZWZpbmVkIGluIHRoZSB0YWJsZSA1IG9mIEpJU1gwNTEwOjIwMDQgKHAuMTkpLgoJICAgIEVuY29kZXIuQUxQSEFOVU1FUklDX1RBQkxFID0gSW50MzJBcnJheS5mcm9tKFsKCSAgICAgICAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsCgkgICAgICAgIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLAoJICAgICAgICAzNiwgLTEsIC0xLCAtMSwgMzcsIDM4LCAtMSwgLTEsIC0xLCAtMSwgMzksIDQwLCAtMSwgNDEsIDQyLCA0MywKCSAgICAgICAgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgNDQsIC0xLCAtMSwgLTEsIC0xLCAtMSwKCSAgICAgICAgLTEsIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjQsCgkgICAgICAgIDI1LCAyNiwgMjcsIDI4LCAyOSwgMzAsIDMxLCAzMiwgMzMsIDM0LCAzNSwgLTEsIC0xLCAtMSwgLTEsIC0xLAoJICAgIF0pOwoJICAgIEVuY29kZXIuREVGQVVMVF9CWVRFX01PREVfRU5DT0RJTkcgPSBDaGFyYWN0ZXJTZXRFQ0lfMS5kZWZhdWx0LlVURjguZ2V0TmFtZSgpOyAvLyAiSVNPLTg4NTktMSIKCSAgICByZXR1cm4gRW5jb2RlcjsKCX0oKSk7CglleHBvcnRzLmRlZmF1bHQgPSBFbmNvZGVyOwoKCX0pOwoKCXZhciBCcm93c2VyUVJDb2RlU3ZnV3JpdGVyXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJZXhwb3J0cy5Ccm93c2VyUVJDb2RlU3ZnV3JpdGVyID0gdm9pZCAwOwoKCgoKCgkvKioKCSAqIEBkZXByZWNhdGVkIE1vdmluZyB0byBAenhpbmcvYnJvd3NlcgoJICovCgl2YXIgQnJvd3NlclFSQ29kZVN2Z1dyaXRlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBCcm93c2VyUVJDb2RlU3ZnV3JpdGVyKCkgewoJICAgIH0KCSAgICAvKioKCSAgICAgKiBXcml0ZXMgYW5kIHJlbmRlcnMgYSBRUkNvZGUgU1ZHIGVsZW1lbnQuCgkgICAgICoKCSAgICAgKiBAcGFyYW0gY29udGVudHMKCSAgICAgKiBAcGFyYW0gd2lkdGgKCSAgICAgKiBAcGFyYW0gaGVpZ2h0CgkgICAgICogQHBhcmFtIGhpbnRzCgkgICAgICovCgkgICAgQnJvd3NlclFSQ29kZVN2Z1dyaXRlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiAoY29udGVudHMsIHdpZHRoLCBoZWlnaHQsIGhpbnRzKSB7CgkgICAgICAgIGlmIChoaW50cyA9PT0gdm9pZCAwKSB7IGhpbnRzID0gbnVsbDsgfQoJICAgICAgICBpZiAoY29udGVudHMubGVuZ3RoID09PSAwKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgnRm91bmQgZW1wdHkgY29udGVudHMnKTsKCSAgICAgICAgfQoJICAgICAgICAvLyBpZiAoZm9ybWF0ICE9IEJhcmNvZGVGb3JtYXQuUVJfQ09ERSkgewoJICAgICAgICAvLyAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkNhbiBvbmx5IGVuY29kZSBRUl9DT0RFLCBidXQgZ290ICIgKyBmb3JtYXQpCgkgICAgICAgIC8vIH0KCSAgICAgICAgaWYgKHdpZHRoIDwgMCB8fCBoZWlnaHQgPCAwKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgnUmVxdWVzdGVkIGRpbWVuc2lvbnMgYXJlIHRvbyBzbWFsbDogJyArIHdpZHRoICsgJ3gnICsgaGVpZ2h0KTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgZXJyb3JDb3JyZWN0aW9uTGV2ZWwgPSBFcnJvckNvcnJlY3Rpb25MZXZlbF8xLmRlZmF1bHQuTDsKCSAgICAgICAgdmFyIHF1aWV0Wm9uZSA9IEJyb3dzZXJRUkNvZGVTdmdXcml0ZXIuUVVJRVRfWk9ORV9TSVpFOwoJICAgICAgICBpZiAoaGludHMgIT09IG51bGwpIHsKCSAgICAgICAgICAgIGlmICh1bmRlZmluZWQgIT09IGhpbnRzLmdldChFbmNvZGVIaW50VHlwZV8xLmRlZmF1bHQuRVJST1JfQ09SUkVDVElPTikpIHsKCSAgICAgICAgICAgICAgICBlcnJvckNvcnJlY3Rpb25MZXZlbCA9IEVycm9yQ29ycmVjdGlvbkxldmVsXzEuZGVmYXVsdC5mcm9tU3RyaW5nKGhpbnRzLmdldChFbmNvZGVIaW50VHlwZV8xLmRlZmF1bHQuRVJST1JfQ09SUkVDVElPTikudG9TdHJpbmcoKSk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBpZiAodW5kZWZpbmVkICE9PSBoaW50cy5nZXQoRW5jb2RlSGludFR5cGVfMS5kZWZhdWx0Lk1BUkdJTikpIHsKCSAgICAgICAgICAgICAgICBxdWlldFpvbmUgPSBOdW1iZXIucGFyc2VJbnQoaGludHMuZ2V0KEVuY29kZUhpbnRUeXBlXzEuZGVmYXVsdC5NQVJHSU4pLnRvU3RyaW5nKCksIDEwKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICB2YXIgY29kZSA9IEVuY29kZXJfMS5kZWZhdWx0LmVuY29kZShjb250ZW50cywgZXJyb3JDb3JyZWN0aW9uTGV2ZWwsIGhpbnRzKTsKCSAgICAgICAgcmV0dXJuIHRoaXMucmVuZGVyUmVzdWx0KGNvZGUsIHdpZHRoLCBoZWlnaHQsIHF1aWV0Wm9uZSk7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBSZW5kZXJzIHRoZSByZXN1bHQgYW5kIHRoZW4gYXBwZW5kcyBpdCB0byB0aGUgRE9NLgoJICAgICAqLwoJICAgIEJyb3dzZXJRUkNvZGVTdmdXcml0ZXIucHJvdG90eXBlLndyaXRlVG9Eb20gPSBmdW5jdGlvbiAoY29udGFpbmVyRWxlbWVudCwgY29udGVudHMsIHdpZHRoLCBoZWlnaHQsIGhpbnRzKSB7CgkgICAgICAgIGlmIChoaW50cyA9PT0gdm9pZCAwKSB7IGhpbnRzID0gbnVsbDsgfQoJICAgICAgICBpZiAodHlwZW9mIGNvbnRhaW5lckVsZW1lbnQgPT09ICdzdHJpbmcnKSB7CgkgICAgICAgICAgICBjb250YWluZXJFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcihjb250YWluZXJFbGVtZW50KTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgc3ZnRWxlbWVudCA9IHRoaXMud3JpdGUoY29udGVudHMsIHdpZHRoLCBoZWlnaHQsIGhpbnRzKTsKCSAgICAgICAgaWYgKGNvbnRhaW5lckVsZW1lbnQpCgkgICAgICAgICAgICBjb250YWluZXJFbGVtZW50LmFwcGVuZENoaWxkKHN2Z0VsZW1lbnQpOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogTm90ZSB0aGF0IHRoZSBpbnB1dCBtYXRyaXggdXNlcyAwID09IHdoaXRlLCAxID09IGJsYWNrLgoJICAgICAqIFRoZSBvdXRwdXQgbWF0cml4IHVzZXMgMCA9PSBibGFjaywgMjU1ID09IHdoaXRlIChpLmUuIGFuIDggYml0IGdyZXlzY2FsZSBiaXRtYXApLgoJICAgICAqLwoJICAgIEJyb3dzZXJRUkNvZGVTdmdXcml0ZXIucHJvdG90eXBlLnJlbmRlclJlc3VsdCA9IGZ1bmN0aW9uIChjb2RlLCB3aWR0aCAvKmludCovLCBoZWlnaHQgLyppbnQqLywgcXVpZXRab25lIC8qaW50Ki8pIHsKCSAgICAgICAgdmFyIGlucHV0ID0gY29kZS5nZXRNYXRyaXgoKTsKCSAgICAgICAgaWYgKGlucHV0ID09PSBudWxsKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uXzEuZGVmYXVsdCgpOwoJICAgICAgICB9CgkgICAgICAgIHZhciBpbnB1dFdpZHRoID0gaW5wdXQuZ2V0V2lkdGgoKTsKCSAgICAgICAgdmFyIGlucHV0SGVpZ2h0ID0gaW5wdXQuZ2V0SGVpZ2h0KCk7CgkgICAgICAgIHZhciBxcldpZHRoID0gaW5wdXRXaWR0aCArIChxdWlldFpvbmUgKiAyKTsKCSAgICAgICAgdmFyIHFySGVpZ2h0ID0gaW5wdXRIZWlnaHQgKyAocXVpZXRab25lICogMik7CgkgICAgICAgIHZhciBvdXRwdXRXaWR0aCA9IE1hdGgubWF4KHdpZHRoLCBxcldpZHRoKTsKCSAgICAgICAgdmFyIG91dHB1dEhlaWdodCA9IE1hdGgubWF4KGhlaWdodCwgcXJIZWlnaHQpOwoJICAgICAgICB2YXIgbXVsdGlwbGUgPSBNYXRoLm1pbihNYXRoLmZsb29yKG91dHB1dFdpZHRoIC8gcXJXaWR0aCksIE1hdGguZmxvb3Iob3V0cHV0SGVpZ2h0IC8gcXJIZWlnaHQpKTsKCSAgICAgICAgLy8gUGFkZGluZyBpbmNsdWRlcyBib3RoIHRoZSBxdWlldCB6b25lIGFuZCB0aGUgZXh0cmEgd2hpdGUgcGl4ZWxzIHRvIGFjY29tbW9kYXRlIHRoZSByZXF1ZXN0ZWQKCSAgICAgICAgLy8gZGltZW5zaW9ucy4gRm9yIGV4YW1wbGUsIGlmIGlucHV0IGlzIDI1eDI1IHRoZSBRUiB3aWxsIGJlIDMzeDMzIGluY2x1ZGluZyB0aGUgcXVpZXQgem9uZS4KCSAgICAgICAgLy8gSWYgdGhlIHJlcXVlc3RlZCBzaXplIGlzIDIwMHgxNjAsIHRoZSBtdWx0aXBsZSB3aWxsIGJlIDQsIGZvciBhIFFSIG9mIDEzMngxMzIuIFRoZXNlIHdpbGwKCSAgICAgICAgLy8gaGFuZGxlIGFsbCB0aGUgcGFkZGluZyBmcm9tIDEwMHgxMDAgKHRoZSBhY3R1YWwgUVIpIHVwIHRvIDIwMHgxNjAuCgkgICAgICAgIHZhciBsZWZ0UGFkZGluZyA9IE1hdGguZmxvb3IoKG91dHB1dFdpZHRoIC0gKGlucHV0V2lkdGggKiBtdWx0aXBsZSkpIC8gMik7CgkgICAgICAgIHZhciB0b3BQYWRkaW5nID0gTWF0aC5mbG9vcigob3V0cHV0SGVpZ2h0IC0gKGlucHV0SGVpZ2h0ICogbXVsdGlwbGUpKSAvIDIpOwoJICAgICAgICB2YXIgc3ZnRWxlbWVudCA9IHRoaXMuY3JlYXRlU1ZHRWxlbWVudChvdXRwdXRXaWR0aCwgb3V0cHV0SGVpZ2h0KTsKCSAgICAgICAgZm9yICh2YXIgaW5wdXRZID0gMCwgb3V0cHV0WSA9IHRvcFBhZGRpbmc7IGlucHV0WSA8IGlucHV0SGVpZ2h0OyBpbnB1dFkrKywgb3V0cHV0WSArPSBtdWx0aXBsZSkgewoJICAgICAgICAgICAgLy8gV3JpdGUgdGhlIGNvbnRlbnRzIG9mIHRoaXMgcm93IG9mIHRoZSBiYXJjb2RlCgkgICAgICAgICAgICBmb3IgKHZhciBpbnB1dFggPSAwLCBvdXRwdXRYID0gbGVmdFBhZGRpbmc7IGlucHV0WCA8IGlucHV0V2lkdGg7IGlucHV0WCsrLCBvdXRwdXRYICs9IG11bHRpcGxlKSB7CgkgICAgICAgICAgICAgICAgaWYgKGlucHV0LmdldChpbnB1dFgsIGlucHV0WSkgPT09IDEpIHsKCSAgICAgICAgICAgICAgICAgICAgdmFyIHN2Z1JlY3RFbGVtZW50ID0gdGhpcy5jcmVhdGVTdmdSZWN0RWxlbWVudChvdXRwdXRYLCBvdXRwdXRZLCBtdWx0aXBsZSwgbXVsdGlwbGUpOwoJICAgICAgICAgICAgICAgICAgICBzdmdFbGVtZW50LmFwcGVuZENoaWxkKHN2Z1JlY3RFbGVtZW50KTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHN2Z0VsZW1lbnQ7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBDcmVhdGVzIGEgU1ZHIGVsZW1lbnQuCgkgICAgICoKCSAgICAgKiBAcGFyYW0gdyBTVkcncyB3aWR0aCBhdHRyaWJ1dGUKCSAgICAgKiBAcGFyYW0gaCBTVkcncyBoZWlnaHQgYXR0cmlidXRlCgkgICAgICovCgkgICAgQnJvd3NlclFSQ29kZVN2Z1dyaXRlci5wcm90b3R5cGUuY3JlYXRlU1ZHRWxlbWVudCA9IGZ1bmN0aW9uICh3LCBoKSB7CgkgICAgICAgIHZhciBzdmdFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKEJyb3dzZXJRUkNvZGVTdmdXcml0ZXIuU1ZHX05TLCAnc3ZnJyk7CgkgICAgICAgIHN2Z0VsZW1lbnQuc2V0QXR0cmlidXRlTlMobnVsbCwgJ2hlaWdodCcsIHcudG9TdHJpbmcoKSk7CgkgICAgICAgIHN2Z0VsZW1lbnQuc2V0QXR0cmlidXRlTlMobnVsbCwgJ3dpZHRoJywgaC50b1N0cmluZygpKTsKCSAgICAgICAgcmV0dXJuIHN2Z0VsZW1lbnQ7CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBDcmVhdGVzIGEgU1ZHIHJlY3QgZWxlbWVudC4KCSAgICAgKgoJICAgICAqIEBwYXJhbSB4IEVsZW1lbnQncyB4IGNvb3JkaW5hdGUKCSAgICAgKiBAcGFyYW0geSBFbGVtZW50J3MgeSBjb29yZGluYXRlCgkgICAgICogQHBhcmFtIHcgRWxlbWVudCdzIHdpZHRoIGF0dHJpYnV0ZQoJICAgICAqIEBwYXJhbSBoIEVsZW1lbnQncyBoZWlnaHQgYXR0cmlidXRlCgkgICAgICovCgkgICAgQnJvd3NlclFSQ29kZVN2Z1dyaXRlci5wcm90b3R5cGUuY3JlYXRlU3ZnUmVjdEVsZW1lbnQgPSBmdW5jdGlvbiAoeCwgeSwgdywgaCkgewoJICAgICAgICB2YXIgcmVjdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhCcm93c2VyUVJDb2RlU3ZnV3JpdGVyLlNWR19OUywgJ3JlY3QnKTsKCSAgICAgICAgcmVjdC5zZXRBdHRyaWJ1dGVOUyhudWxsLCAneCcsIHgudG9TdHJpbmcoKSk7CgkgICAgICAgIHJlY3Quc2V0QXR0cmlidXRlTlMobnVsbCwgJ3knLCB5LnRvU3RyaW5nKCkpOwoJICAgICAgICByZWN0LnNldEF0dHJpYnV0ZU5TKG51bGwsICdoZWlnaHQnLCB3LnRvU3RyaW5nKCkpOwoJICAgICAgICByZWN0LnNldEF0dHJpYnV0ZU5TKG51bGwsICd3aWR0aCcsIGgudG9TdHJpbmcoKSk7CgkgICAgICAgIHJlY3Quc2V0QXR0cmlidXRlTlMobnVsbCwgJ2ZpbGwnLCAnIzAwMDAwMCcpOwoJICAgICAgICByZXR1cm4gcmVjdDsKCSAgICB9OwoJICAgIEJyb3dzZXJRUkNvZGVTdmdXcml0ZXIuUVVJRVRfWk9ORV9TSVpFID0gNDsKCSAgICAvKioKCSAgICAgKiBTVkcgbWFya3VwIE5hbWVTcGFjZQoJICAgICAqLwoJICAgIEJyb3dzZXJRUkNvZGVTdmdXcml0ZXIuU1ZHX05TID0gJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJzsKCSAgICByZXR1cm4gQnJvd3NlclFSQ29kZVN2Z1dyaXRlcjsKCX0oKSk7CglleHBvcnRzLkJyb3dzZXJRUkNvZGVTdmdXcml0ZXIgPSBCcm93c2VyUVJDb2RlU3ZnV3JpdGVyOwoKCX0pOwoKCXZhciBEZWNvZGVDb250aW51b3VzbHlDYWxsYmFjayA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgoJfSk7CgoJdmFyIEhUTUxWaXN1YWxNZWRpYUVsZW1lbnQgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoKCX0pOwoKCXZhciBicm93c2VyID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJdmFyIF9fY3JlYXRlQmluZGluZyA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX2NyZWF0ZUJpbmRpbmcpIHx8IChPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7CgkgICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gazsKCSAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgazIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ba107IH0gfSk7Cgl9KSA6IChmdW5jdGlvbihvLCBtLCBrLCBrMikgewoJICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7CgkgICAgb1trMl0gPSBtW2tdOwoJfSkpOwoJdmFyIF9fZXhwb3J0U3RhciA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX2V4cG9ydFN0YXIpIHx8IGZ1bmN0aW9uKG0sIGV4cG9ydHMpIHsKCSAgICBmb3IgKHZhciBwIGluIG0pIGlmIChwICE9PSAiZGVmYXVsdCIgJiYgIWV4cG9ydHMuaGFzT3duUHJvcGVydHkocCkpIF9fY3JlYXRlQmluZGluZyhleHBvcnRzLCBtLCBwKTsKCX07CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJLy8gYnJvd3NlcgoJX19leHBvcnRTdGFyKEJyb3dzZXJBenRlY0NvZGVSZWFkZXJfMSwgZXhwb3J0cyk7CglfX2V4cG9ydFN0YXIoQnJvd3NlckJhcmNvZGVSZWFkZXJfMSwgZXhwb3J0cyk7CglfX2V4cG9ydFN0YXIoQnJvd3NlckNvZGVSZWFkZXJfMSwgZXhwb3J0cyk7CglfX2V4cG9ydFN0YXIoQnJvd3NlckRhdGFtYXRyaXhDb2RlUmVhZGVyXzEsIGV4cG9ydHMpOwoJX19leHBvcnRTdGFyKEJyb3dzZXJNdWx0aUZvcm1hdFJlYWRlcl8xLCBleHBvcnRzKTsKCV9fZXhwb3J0U3RhcihCcm93c2VyUERGNDE3UmVhZGVyXzEsIGV4cG9ydHMpOwoJX19leHBvcnRTdGFyKEJyb3dzZXJRUkNvZGVSZWFkZXJfMSwgZXhwb3J0cyk7CglfX2V4cG9ydFN0YXIoQnJvd3NlclFSQ29kZVN2Z1dyaXRlcl8xLCBleHBvcnRzKTsKCV9fZXhwb3J0U3RhcihEZWNvZGVDb250aW51b3VzbHlDYWxsYmFjaywgZXhwb3J0cyk7CglfX2V4cG9ydFN0YXIoSFRNTENhbnZhc0VsZW1lbnRMdW1pbmFuY2VTb3VyY2VfMSwgZXhwb3J0cyk7CglfX2V4cG9ydFN0YXIoSFRNTFZpc3VhbE1lZGlhRWxlbWVudCwgZXhwb3J0cyk7CglfX2V4cG9ydFN0YXIoVmlkZW9JbnB1dERldmljZV8xLCBleHBvcnRzKTsKCgl9KTsKCgl2YXIgUVJDb2RlV3JpdGVyXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CgkvKgoJICogQ29weXJpZ2h0IDIwMDggWlhpbmcgYXV0aG9ycwoJICoKCSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkgKgoJICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSAqCgkgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSAqLwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCS8qbmFtZXNwYWNlIGNvbS5nb29nbGUuenhpbmcucXJjb2RlIHsqLwoKCgoKCgoKCS8qaW1wb3J0IGphdmEudXRpbC5NYXA7Ki8KCS8qKgoJICogVGhpcyBvYmplY3QgcmVuZGVycyBhIFFSIENvZGUgYXMgYSBCaXRNYXRyaXggMkQgYXJyYXkgb2YgZ3JleXNjYWxlIHZhbHVlcy4KCSAqCgkgKiBAYXV0aG9yIGRzd2l0a2luQGdvb2dsZS5jb20gKERhbmllbCBTd2l0a2luKQoJICovCgl2YXIgUVJDb2RlV3JpdGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIGZ1bmN0aW9uIFFSQ29kZVdyaXRlcigpIHsKCSAgICB9CgkgICAgLypAT3ZlcnJpZGUqLwoJICAgIC8vIHB1YmxpYyBlbmNvZGUoY29udGVudHM6IHN0cmluZywgZm9ybWF0OiBCYXJjb2RlRm9ybWF0LCB3aWR0aDogbnVtYmVyIC8qaW50Ki8sIGhlaWdodDogbnVtYmVyIC8qaW50Ki8pOiBCaXRNYXRyaXgKCSAgICAvLyAgICAgLyp0aHJvd3MgV3JpdGVyRXhjZXB0aW9uICovIHsKCSAgICAvLyAgIHJldHVybiBlbmNvZGUoY29udGVudHMsIGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgbnVsbCkKCSAgICAvLyB9CgkgICAgLypAT3ZlcnJpZGUqLwoJICAgIFFSQ29kZVdyaXRlci5wcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24gKGNvbnRlbnRzLCBmb3JtYXQsIHdpZHRoIC8qaW50Ki8sIGhlaWdodCAvKmludCovLCBoaW50cykgewoJICAgICAgICBpZiAoY29udGVudHMubGVuZ3RoID09PSAwKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgnRm91bmQgZW1wdHkgY29udGVudHMnKTsKCSAgICAgICAgfQoJICAgICAgICBpZiAoZm9ybWF0ICE9PSBCYXJjb2RlRm9ybWF0XzEuZGVmYXVsdC5RUl9DT0RFKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgnQ2FuIG9ubHkgZW5jb2RlIFFSX0NPREUsIGJ1dCBnb3QgJyArIGZvcm1hdCk7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKHdpZHRoIDwgMCB8fCBoZWlnaHQgPCAwKSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgiUmVxdWVzdGVkIGRpbWVuc2lvbnMgYXJlIHRvbyBzbWFsbDogIiArIHdpZHRoICsgIngiICsgaGVpZ2h0KTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgZXJyb3JDb3JyZWN0aW9uTGV2ZWwgPSBFcnJvckNvcnJlY3Rpb25MZXZlbF8xLmRlZmF1bHQuTDsKCSAgICAgICAgdmFyIHF1aWV0Wm9uZSA9IFFSQ29kZVdyaXRlci5RVUlFVF9aT05FX1NJWkU7CgkgICAgICAgIGlmIChoaW50cyAhPT0gbnVsbCkgewoJICAgICAgICAgICAgaWYgKHVuZGVmaW5lZCAhPT0gaGludHMuZ2V0KEVuY29kZUhpbnRUeXBlXzEuZGVmYXVsdC5FUlJPUl9DT1JSRUNUSU9OKSkgewoJICAgICAgICAgICAgICAgIGVycm9yQ29ycmVjdGlvbkxldmVsID0gRXJyb3JDb3JyZWN0aW9uTGV2ZWxfMS5kZWZhdWx0LmZyb21TdHJpbmcoaGludHMuZ2V0KEVuY29kZUhpbnRUeXBlXzEuZGVmYXVsdC5FUlJPUl9DT1JSRUNUSU9OKS50b1N0cmluZygpKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGlmICh1bmRlZmluZWQgIT09IGhpbnRzLmdldChFbmNvZGVIaW50VHlwZV8xLmRlZmF1bHQuTUFSR0lOKSkgewoJICAgICAgICAgICAgICAgIHF1aWV0Wm9uZSA9IE51bWJlci5wYXJzZUludChoaW50cy5nZXQoRW5jb2RlSGludFR5cGVfMS5kZWZhdWx0Lk1BUkdJTikudG9TdHJpbmcoKSwgMTApOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHZhciBjb2RlID0gRW5jb2Rlcl8xLmRlZmF1bHQuZW5jb2RlKGNvbnRlbnRzLCBlcnJvckNvcnJlY3Rpb25MZXZlbCwgaGludHMpOwoJICAgICAgICByZXR1cm4gUVJDb2RlV3JpdGVyLnJlbmRlclJlc3VsdChjb2RlLCB3aWR0aCwgaGVpZ2h0LCBxdWlldFpvbmUpOwoJICAgIH07CgkgICAgLy8gTm90ZSB0aGF0IHRoZSBpbnB1dCBtYXRyaXggdXNlcyAwID09IHdoaXRlLCAxID09IGJsYWNrLCB3aGlsZSB0aGUgb3V0cHV0IG1hdHJpeCB1c2VzCgkgICAgLy8gMCA9PSBibGFjaywgMjU1ID09IHdoaXRlIChpLmUuIGFuIDggYml0IGdyZXlzY2FsZSBiaXRtYXApLgoJICAgIFFSQ29kZVdyaXRlci5yZW5kZXJSZXN1bHQgPSBmdW5jdGlvbiAoY29kZSwgd2lkdGggLyppbnQqLywgaGVpZ2h0IC8qaW50Ki8sIHF1aWV0Wm9uZSAvKmludCovKSB7CgkgICAgICAgIHZhciBpbnB1dCA9IGNvZGUuZ2V0TWF0cml4KCk7CgkgICAgICAgIGlmIChpbnB1dCA9PT0gbnVsbCkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgaW5wdXRXaWR0aCA9IGlucHV0LmdldFdpZHRoKCk7CgkgICAgICAgIHZhciBpbnB1dEhlaWdodCA9IGlucHV0LmdldEhlaWdodCgpOwoJICAgICAgICB2YXIgcXJXaWR0aCA9IGlucHV0V2lkdGggKyAocXVpZXRab25lICogMik7CgkgICAgICAgIHZhciBxckhlaWdodCA9IGlucHV0SGVpZ2h0ICsgKHF1aWV0Wm9uZSAqIDIpOwoJICAgICAgICB2YXIgb3V0cHV0V2lkdGggPSBNYXRoLm1heCh3aWR0aCwgcXJXaWR0aCk7CgkgICAgICAgIHZhciBvdXRwdXRIZWlnaHQgPSBNYXRoLm1heChoZWlnaHQsIHFySGVpZ2h0KTsKCSAgICAgICAgdmFyIG11bHRpcGxlID0gTWF0aC5taW4oTWF0aC5mbG9vcihvdXRwdXRXaWR0aCAvIHFyV2lkdGgpLCBNYXRoLmZsb29yKG91dHB1dEhlaWdodCAvIHFySGVpZ2h0KSk7CgkgICAgICAgIC8vIFBhZGRpbmcgaW5jbHVkZXMgYm90aCB0aGUgcXVpZXQgem9uZSBhbmQgdGhlIGV4dHJhIHdoaXRlIHBpeGVscyB0byBhY2NvbW1vZGF0ZSB0aGUgcmVxdWVzdGVkCgkgICAgICAgIC8vIGRpbWVuc2lvbnMuIEZvciBleGFtcGxlLCBpZiBpbnB1dCBpcyAyNXgyNSB0aGUgUVIgd2lsbCBiZSAzM3gzMyBpbmNsdWRpbmcgdGhlIHF1aWV0IHpvbmUuCgkgICAgICAgIC8vIElmIHRoZSByZXF1ZXN0ZWQgc2l6ZSBpcyAyMDB4MTYwLCB0aGUgbXVsdGlwbGUgd2lsbCBiZSA0LCBmb3IgYSBRUiBvZiAxMzJ4MTMyLiBUaGVzZSB3aWxsCgkgICAgICAgIC8vIGhhbmRsZSBhbGwgdGhlIHBhZGRpbmcgZnJvbSAxMDB4MTAwICh0aGUgYWN0dWFsIFFSKSB1cCB0byAyMDB4MTYwLgoJICAgICAgICB2YXIgbGVmdFBhZGRpbmcgPSBNYXRoLmZsb29yKChvdXRwdXRXaWR0aCAtIChpbnB1dFdpZHRoICogbXVsdGlwbGUpKSAvIDIpOwoJICAgICAgICB2YXIgdG9wUGFkZGluZyA9IE1hdGguZmxvb3IoKG91dHB1dEhlaWdodCAtIChpbnB1dEhlaWdodCAqIG11bHRpcGxlKSkgLyAyKTsKCSAgICAgICAgdmFyIG91dHB1dCA9IG5ldyBCaXRNYXRyaXhfMS5kZWZhdWx0KG91dHB1dFdpZHRoLCBvdXRwdXRIZWlnaHQpOwoJICAgICAgICBmb3IgKHZhciBpbnB1dFkgPSAwLCBvdXRwdXRZID0gdG9wUGFkZGluZzsgaW5wdXRZIDwgaW5wdXRIZWlnaHQ7IGlucHV0WSsrLCBvdXRwdXRZICs9IG11bHRpcGxlKSB7CgkgICAgICAgICAgICAvLyBXcml0ZSB0aGUgY29udGVudHMgb2YgdGhpcyByb3cgb2YgdGhlIGJhcmNvZGUKCSAgICAgICAgICAgIGZvciAodmFyIGlucHV0WCA9IDAsIG91dHB1dFggPSBsZWZ0UGFkZGluZzsgaW5wdXRYIDwgaW5wdXRXaWR0aDsgaW5wdXRYKyssIG91dHB1dFggKz0gbXVsdGlwbGUpIHsKCSAgICAgICAgICAgICAgICBpZiAoaW5wdXQuZ2V0KGlucHV0WCwgaW5wdXRZKSA9PT0gMSkgewoJICAgICAgICAgICAgICAgICAgICBvdXRwdXQuc2V0UmVnaW9uKG91dHB1dFgsIG91dHB1dFksIG11bHRpcGxlLCBtdWx0aXBsZSk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBvdXRwdXQ7CgkgICAgfTsKCSAgICBRUkNvZGVXcml0ZXIuUVVJRVRfWk9ORV9TSVpFID0gNDsKCSAgICByZXR1cm4gUVJDb2RlV3JpdGVyOwoJfSgpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IFFSQ29kZVdyaXRlcjsKCgl9KTsKCgl2YXIgTXVsdGlGb3JtYXRXcml0ZXJfMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCS8qCgkgKiBDb3B5cmlnaHQgMjAwOCBaWGluZyBhdXRob3JzCgkgKgoJICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSAqCgkgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJICoKCSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJICovCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJLy8gaW1wb3J0IERhdGFNYXRyaXhXcml0ZXIgZnJvbSAnLi9kYXRhbWF0cml4L0RhdGFNYXRyaXhXcml0ZXInCgkvLyBpbXBvcnQgQ29kYUJhcldyaXRlciBmcm9tICcuL29uZWQvQ29kYUJhcldyaXRlcicKCS8vIGltcG9ydCBDb2RlMTI4V3JpdGVyIGZyb20gJy4vb25lZC9Db2RlMTI4V3JpdGVyJwoJLy8gaW1wb3J0IENvZGUzOVdyaXRlciBmcm9tICcuL29uZWQvQ29kZTM5V3JpdGVyJwoJLy8gaW1wb3J0IENvZGU5M1dyaXRlciBmcm9tICcuL29uZWQvQ29kZTkzV3JpdGVyJwoJLy8gaW1wb3J0IEVBTjEzV3JpdGVyIGZyb20gJy4vb25lZC9FQU4xM1dyaXRlcicKCS8vIGltcG9ydCBFQU44V3JpdGVyIGZyb20gJy4vb25lZC9FQU44V3JpdGVyJwoJLy8gaW1wb3J0IElURldyaXRlciBmcm9tICcuL29uZWQvSVRGV3JpdGVyJwoJLy8gaW1wb3J0IFVQQ0FXcml0ZXIgZnJvbSAnLi9vbmVkL1VQQ0FXcml0ZXInCgkvLyBpbXBvcnQgVVBDRVdyaXRlciBmcm9tICcuL29uZWQvVVBDRVdyaXRlcicKCS8vIGltcG9ydCBQREY0MTdXcml0ZXIgZnJvbSAnLi9wZGY0MTcvUERGNDE3V3JpdGVyJwoKCgoJLyppbXBvcnQgamF2YS51dGlsLk1hcDsqLwoJLyoqCgkgKiBUaGlzIGlzIGEgZmFjdG9yeSBjbGFzcyB3aGljaCBmaW5kcyB0aGUgYXBwcm9wcmlhdGUgV3JpdGVyIHN1YmNsYXNzIGZvciB0aGUgQmFyY29kZUZvcm1hdAoJICogcmVxdWVzdGVkIGFuZCBlbmNvZGVzIHRoZSBiYXJjb2RlIHdpdGggdGhlIHN1cHBsaWVkIGNvbnRlbnRzLgoJICoKCSAqIEBhdXRob3IgZHN3aXRraW5AZ29vZ2xlLmNvbSAoRGFuaWVsIFN3aXRraW4pCgkgKi8KCXZhciBNdWx0aUZvcm1hdFdyaXRlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBNdWx0aUZvcm1hdFdyaXRlcigpIHsKCSAgICB9CgkgICAgLypAT3ZlcnJpZGUqLwoJICAgIC8vIHB1YmxpYyBlbmNvZGUoY29udGVudHM6IHN0cmluZywKCSAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ6IEJhcmNvZGVGb3JtYXQsCgkgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IG51bWJlciAvKmludCovLAoJICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogbnVtYmVyIC8qaW50Ki8pOiBCaXRNYXRyaXggLyp0aHJvd3MgV3JpdGVyRXhjZXB0aW9uICovIHsKCSAgICAvLyAgIHJldHVybiBlbmNvZGUoY29udGVudHMsIGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgbnVsbCkKCSAgICAvLyB9CgkgICAgLypAT3ZlcnJpZGUqLwoJICAgIE11bHRpRm9ybWF0V3JpdGVyLnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbiAoY29udGVudHMsIGZvcm1hdCwgd2lkdGggLyppbnQqLywgaGVpZ2h0IC8qaW50Ki8sIGhpbnRzKSB7CgkgICAgICAgIHZhciB3cml0ZXI7CgkgICAgICAgIHN3aXRjaCAoZm9ybWF0KSB7CgkgICAgICAgICAgICAvLyBjYXNlIEJhcmNvZGVGb3JtYXQuRUFOXzg6CgkgICAgICAgICAgICAvLyAgIHdyaXRlciA9IG5ldyBFQU44V3JpdGVyKCkKCSAgICAgICAgICAgIC8vICAgYnJlYWsKCSAgICAgICAgICAgIC8vIGNhc2UgQmFyY29kZUZvcm1hdC5VUENfRToKCSAgICAgICAgICAgIC8vICAgd3JpdGVyID0gbmV3IFVQQ0VXcml0ZXIoKQoJICAgICAgICAgICAgLy8gICBicmVhawoJICAgICAgICAgICAgLy8gY2FzZSBCYXJjb2RlRm9ybWF0LkVBTl8xMzoKCSAgICAgICAgICAgIC8vICAgd3JpdGVyID0gbmV3IEVBTjEzV3JpdGVyKCkKCSAgICAgICAgICAgIC8vICAgYnJlYWsKCSAgICAgICAgICAgIC8vIGNhc2UgQmFyY29kZUZvcm1hdC5VUENfQToKCSAgICAgICAgICAgIC8vICAgd3JpdGVyID0gbmV3IFVQQ0FXcml0ZXIoKQoJICAgICAgICAgICAgLy8gICBicmVhawoJICAgICAgICAgICAgY2FzZSBCYXJjb2RlRm9ybWF0XzEuZGVmYXVsdC5RUl9DT0RFOgoJICAgICAgICAgICAgICAgIHdyaXRlciA9IG5ldyBRUkNvZGVXcml0ZXJfMS5kZWZhdWx0KCk7CgkgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAvLyBjYXNlIEJhcmNvZGVGb3JtYXQuQ09ERV8zOToKCSAgICAgICAgICAgIC8vICAgd3JpdGVyID0gbmV3IENvZGUzOVdyaXRlcigpCgkgICAgICAgICAgICAvLyAgIGJyZWFrCgkgICAgICAgICAgICAvLyBjYXNlIEJhcmNvZGVGb3JtYXQuQ09ERV85MzoKCSAgICAgICAgICAgIC8vICAgd3JpdGVyID0gbmV3IENvZGU5M1dyaXRlcigpCgkgICAgICAgICAgICAvLyAgIGJyZWFrCgkgICAgICAgICAgICAvLyBjYXNlIEJhcmNvZGVGb3JtYXQuQ09ERV8xMjg6CgkgICAgICAgICAgICAvLyAgIHdyaXRlciA9IG5ldyBDb2RlMTI4V3JpdGVyKCkKCSAgICAgICAgICAgIC8vICAgYnJlYWsKCSAgICAgICAgICAgIC8vIGNhc2UgQmFyY29kZUZvcm1hdC5JVEY6CgkgICAgICAgICAgICAvLyAgIHdyaXRlciA9IG5ldyBJVEZXcml0ZXIoKQoJICAgICAgICAgICAgLy8gICBicmVhawoJICAgICAgICAgICAgLy8gY2FzZSBCYXJjb2RlRm9ybWF0LlBERl80MTc6CgkgICAgICAgICAgICAvLyAgIHdyaXRlciA9IG5ldyBQREY0MTdXcml0ZXIoKQoJICAgICAgICAgICAgLy8gICBicmVhawoJICAgICAgICAgICAgLy8gY2FzZSBCYXJjb2RlRm9ybWF0LkNPREFCQVI6CgkgICAgICAgICAgICAvLyAgIHdyaXRlciA9IG5ldyBDb2RhQmFyV3JpdGVyKCkKCSAgICAgICAgICAgIC8vICAgYnJlYWsKCSAgICAgICAgICAgIC8vIGNhc2UgQmFyY29kZUZvcm1hdC5EQVRBX01BVFJJWDoKCSAgICAgICAgICAgIC8vICAgd3JpdGVyID0gbmV3IERhdGFNYXRyaXhXcml0ZXIoKQoJICAgICAgICAgICAgLy8gICBicmVhawoJICAgICAgICAgICAgLy8gY2FzZSBCYXJjb2RlRm9ybWF0LkFaVEVDOgoJICAgICAgICAgICAgLy8gICB3cml0ZXIgPSBuZXcgQXp0ZWNXcml0ZXIoKQoJICAgICAgICAgICAgLy8gICBicmVhawoJICAgICAgICAgICAgZGVmYXVsdDoKCSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgnTm8gZW5jb2RlciBhdmFpbGFibGUgZm9yIGZvcm1hdCAnICsgZm9ybWF0KTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gd3JpdGVyLmVuY29kZShjb250ZW50cywgZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBoaW50cyk7CgkgICAgfTsKCSAgICByZXR1cm4gTXVsdGlGb3JtYXRXcml0ZXI7Cgl9KCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gTXVsdGlGb3JtYXRXcml0ZXI7CgoJfSk7CgoJdmFyIFBsYW5hcllVVkx1bWluYW5jZVNvdXJjZV8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJLyoKCSAqIENvcHlyaWdodCAyMDA5IFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCXZhciBfX2V4dGVuZHMgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkgewoJICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fAoJICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fAoJICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07CgkgICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgIH07CgkgICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfQoJICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7CgkgICAgfTsKCX0pKCk7CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJLypuYW1lc3BhY2UgY29tLmdvb2dsZS56eGluZyB7Ki8KCgoKCgkvKioKCSAqIFRoaXMgb2JqZWN0IGV4dGVuZHMgTHVtaW5hbmNlU291cmNlIGFyb3VuZCBhbiBhcnJheSBvZiBZVVYgZGF0YSByZXR1cm5lZCBmcm9tIHRoZSBjYW1lcmEgZHJpdmVyLAoJICogd2l0aCB0aGUgb3B0aW9uIHRvIGNyb3AgdG8gYSByZWN0YW5nbGUgd2l0aGluIHRoZSBmdWxsIGRhdGEuIFRoaXMgY2FuIGJlIHVzZWQgdG8gZXhjbHVkZQoJICogc3VwZXJmbHVvdXMgcGl4ZWxzIGFyb3VuZCB0aGUgcGVyaW1ldGVyIGFuZCBzcGVlZCB1cCBkZWNvZGluZy4KCSAqCgkgKiBJdCB3b3JrcyBmb3IgYW55IHBpeGVsIGZvcm1hdCB3aGVyZSB0aGUgWSBjaGFubmVsIGlzIHBsYW5hciBhbmQgYXBwZWFycyBmaXJzdCwgaW5jbHVkaW5nCgkgKiBZQ2JDcl80MjBfU1AgYW5kIFlDYkNyXzQyMl9TUC4KCSAqCgkgKiBAYXV0aG9yIGRzd2l0a2luQGdvb2dsZS5jb20gKERhbmllbCBTd2l0a2luKQoJICovCgl2YXIgUGxhbmFyWVVWTHVtaW5hbmNlU291cmNlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikgewoJICAgIF9fZXh0ZW5kcyhQbGFuYXJZVVZMdW1pbmFuY2VTb3VyY2UsIF9zdXBlcik7CgkgICAgZnVuY3Rpb24gUGxhbmFyWVVWTHVtaW5hbmNlU291cmNlKHl1dkRhdGEsIGRhdGFXaWR0aCAvKmludCovLCBkYXRhSGVpZ2h0IC8qaW50Ki8sIGxlZnQgLyppbnQqLywgdG9wIC8qaW50Ki8sIHdpZHRoIC8qaW50Ki8sIGhlaWdodCAvKmludCovLCByZXZlcnNlSG9yaXpvbnRhbCkgewoJICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCB3aWR0aCwgaGVpZ2h0KSB8fCB0aGlzOwoJICAgICAgICBfdGhpcy55dXZEYXRhID0geXV2RGF0YTsKCSAgICAgICAgX3RoaXMuZGF0YVdpZHRoID0gZGF0YVdpZHRoOwoJICAgICAgICBfdGhpcy5kYXRhSGVpZ2h0ID0gZGF0YUhlaWdodDsKCSAgICAgICAgX3RoaXMubGVmdCA9IGxlZnQ7CgkgICAgICAgIF90aGlzLnRvcCA9IHRvcDsKCSAgICAgICAgaWYgKGxlZnQgKyB3aWR0aCA+IGRhdGFXaWR0aCB8fCB0b3AgKyBoZWlnaHQgPiBkYXRhSGVpZ2h0KSB7CgkgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgnQ3JvcCByZWN0YW5nbGUgZG9lcyBub3QgZml0IHdpdGhpbiBpbWFnZSBkYXRhLicpOwoJICAgICAgICB9CgkgICAgICAgIGlmIChyZXZlcnNlSG9yaXpvbnRhbCkgewoJICAgICAgICAgICAgX3RoaXMucmV2ZXJzZUhvcml6b250YWwod2lkdGgsIGhlaWdodCk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIF90aGlzOwoJICAgIH0KCSAgICAvKkBPdmVycmlkZSovCgkgICAgUGxhbmFyWVVWTHVtaW5hbmNlU291cmNlLnByb3RvdHlwZS5nZXRSb3cgPSBmdW5jdGlvbiAoeSAvKmludCovLCByb3cpIHsKCSAgICAgICAgaWYgKHkgPCAwIHx8IHkgPj0gdGhpcy5nZXRIZWlnaHQoKSkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoJ1JlcXVlc3RlZCByb3cgaXMgb3V0c2lkZSB0aGUgaW1hZ2U6ICcgKyB5KTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgd2lkdGggPSB0aGlzLmdldFdpZHRoKCk7CgkgICAgICAgIGlmIChyb3cgPT09IG51bGwgfHwgcm93ID09PSB1bmRlZmluZWQgfHwgcm93Lmxlbmd0aCA8IHdpZHRoKSB7CgkgICAgICAgICAgICByb3cgPSBuZXcgVWludDhDbGFtcGVkQXJyYXkod2lkdGgpOwoJICAgICAgICB9CgkgICAgICAgIHZhciBvZmZzZXQgPSAoeSArIHRoaXMudG9wKSAqIHRoaXMuZGF0YVdpZHRoICsgdGhpcy5sZWZ0OwoJICAgICAgICBTeXN0ZW1fMS5kZWZhdWx0LmFycmF5Y29weSh0aGlzLnl1dkRhdGEsIG9mZnNldCwgcm93LCAwLCB3aWR0aCk7CgkgICAgICAgIHJldHVybiByb3c7CgkgICAgfTsKCSAgICAvKkBPdmVycmlkZSovCgkgICAgUGxhbmFyWVVWTHVtaW5hbmNlU291cmNlLnByb3RvdHlwZS5nZXRNYXRyaXggPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHZhciB3aWR0aCA9IHRoaXMuZ2V0V2lkdGgoKTsKCSAgICAgICAgdmFyIGhlaWdodCA9IHRoaXMuZ2V0SGVpZ2h0KCk7CgkgICAgICAgIC8vIElmIHRoZSBjYWxsZXIgYXNrcyBmb3IgdGhlIGVudGlyZSB1bmRlcmx5aW5nIGltYWdlLCBzYXZlIHRoZSBjb3B5IGFuZCBnaXZlIHRoZW0gdGhlCgkgICAgICAgIC8vIG9yaWdpbmFsIGRhdGEuIFRoZSBkb2NzIHNwZWNpZmljYWxseSB3YXJuIHRoYXQgcmVzdWx0Lmxlbmd0aCBtdXN0IGJlIGlnbm9yZWQuCgkgICAgICAgIGlmICh3aWR0aCA9PT0gdGhpcy5kYXRhV2lkdGggJiYgaGVpZ2h0ID09PSB0aGlzLmRhdGFIZWlnaHQpIHsKCSAgICAgICAgICAgIHJldHVybiB0aGlzLnl1dkRhdGE7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGFyZWEgPSB3aWR0aCAqIGhlaWdodDsKCSAgICAgICAgdmFyIG1hdHJpeCA9IG5ldyBVaW50OENsYW1wZWRBcnJheShhcmVhKTsKCSAgICAgICAgdmFyIGlucHV0T2Zmc2V0ID0gdGhpcy50b3AgKiB0aGlzLmRhdGFXaWR0aCArIHRoaXMubGVmdDsKCSAgICAgICAgLy8gSWYgdGhlIHdpZHRoIG1hdGNoZXMgdGhlIGZ1bGwgd2lkdGggb2YgdGhlIHVuZGVybHlpbmcgZGF0YSwgcGVyZm9ybSBhIHNpbmdsZSBjb3B5LgoJICAgICAgICBpZiAod2lkdGggPT09IHRoaXMuZGF0YVdpZHRoKSB7CgkgICAgICAgICAgICBTeXN0ZW1fMS5kZWZhdWx0LmFycmF5Y29weSh0aGlzLnl1dkRhdGEsIGlucHV0T2Zmc2V0LCBtYXRyaXgsIDAsIGFyZWEpOwoJICAgICAgICAgICAgcmV0dXJuIG1hdHJpeDsKCSAgICAgICAgfQoJICAgICAgICAvLyBPdGhlcndpc2UgY29weSBvbmUgY3JvcHBlZCByb3cgYXQgYSB0aW1lLgoJICAgICAgICBmb3IgKHZhciB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKSB7CgkgICAgICAgICAgICB2YXIgb3V0cHV0T2Zmc2V0ID0geSAqIHdpZHRoOwoJICAgICAgICAgICAgU3lzdGVtXzEuZGVmYXVsdC5hcnJheWNvcHkodGhpcy55dXZEYXRhLCBpbnB1dE9mZnNldCwgbWF0cml4LCBvdXRwdXRPZmZzZXQsIHdpZHRoKTsKCSAgICAgICAgICAgIGlucHV0T2Zmc2V0ICs9IHRoaXMuZGF0YVdpZHRoOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBtYXRyaXg7CgkgICAgfTsKCSAgICAvKkBPdmVycmlkZSovCgkgICAgUGxhbmFyWVVWTHVtaW5hbmNlU291cmNlLnByb3RvdHlwZS5pc0Nyb3BTdXBwb3J0ZWQgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0cnVlOwoJICAgIH07CgkgICAgLypAT3ZlcnJpZGUqLwoJICAgIFBsYW5hcllVVkx1bWluYW5jZVNvdXJjZS5wcm90b3R5cGUuY3JvcCA9IGZ1bmN0aW9uIChsZWZ0IC8qaW50Ki8sIHRvcCAvKmludCovLCB3aWR0aCAvKmludCovLCBoZWlnaHQgLyppbnQqLykgewoJICAgICAgICByZXR1cm4gbmV3IFBsYW5hcllVVkx1bWluYW5jZVNvdXJjZSh0aGlzLnl1dkRhdGEsIHRoaXMuZGF0YVdpZHRoLCB0aGlzLmRhdGFIZWlnaHQsIHRoaXMubGVmdCArIGxlZnQsIHRoaXMudG9wICsgdG9wLCB3aWR0aCwgaGVpZ2h0LCBmYWxzZSk7CgkgICAgfTsKCSAgICBQbGFuYXJZVVZMdW1pbmFuY2VTb3VyY2UucHJvdG90eXBlLnJlbmRlclRodW1ibmFpbCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgdmFyIHdpZHRoID0gdGhpcy5nZXRXaWR0aCgpIC8gUGxhbmFyWVVWTHVtaW5hbmNlU291cmNlLlRIVU1CTkFJTF9TQ0FMRV9GQUNUT1I7CgkgICAgICAgIHZhciBoZWlnaHQgPSB0aGlzLmdldEhlaWdodCgpIC8gUGxhbmFyWVVWTHVtaW5hbmNlU291cmNlLlRIVU1CTkFJTF9TQ0FMRV9GQUNUT1I7CgkgICAgICAgIHZhciBwaXhlbHMgPSBuZXcgSW50MzJBcnJheSh3aWR0aCAqIGhlaWdodCk7CgkgICAgICAgIHZhciB5dXYgPSB0aGlzLnl1dkRhdGE7CgkgICAgICAgIHZhciBpbnB1dE9mZnNldCA9IHRoaXMudG9wICogdGhpcy5kYXRhV2lkdGggKyB0aGlzLmxlZnQ7CgkgICAgICAgIGZvciAodmFyIHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspIHsKCSAgICAgICAgICAgIHZhciBvdXRwdXRPZmZzZXQgPSB5ICogd2lkdGg7CgkgICAgICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHsKCSAgICAgICAgICAgICAgICB2YXIgZ3JleSA9IHl1dltpbnB1dE9mZnNldCArIHggKiBQbGFuYXJZVVZMdW1pbmFuY2VTb3VyY2UuVEhVTUJOQUlMX1NDQUxFX0ZBQ1RPUl0gJiAweGZmOwoJICAgICAgICAgICAgICAgIHBpeGVsc1tvdXRwdXRPZmZzZXQgKyB4XSA9IDB4RkYwMDAwMDAgfCAoZ3JleSAqIDB4MDAwMTAxMDEpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgaW5wdXRPZmZzZXQgKz0gdGhpcy5kYXRhV2lkdGggKiBQbGFuYXJZVVZMdW1pbmFuY2VTb3VyY2UuVEhVTUJOQUlMX1NDQUxFX0ZBQ1RPUjsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gcGl4ZWxzOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQHJldHVybiB3aWR0aCBvZiBpbWFnZSBmcm9tIHtAbGluayAjcmVuZGVyVGh1bWJuYWlsKCl9CgkgICAgICovCgkgICAgUGxhbmFyWVVWTHVtaW5hbmNlU291cmNlLnByb3RvdHlwZS5nZXRUaHVtYm5haWxXaWR0aCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMuZ2V0V2lkdGgoKSAvIFBsYW5hcllVVkx1bWluYW5jZVNvdXJjZS5USFVNQk5BSUxfU0NBTEVfRkFDVE9SOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQHJldHVybiBoZWlnaHQgb2YgaW1hZ2UgZnJvbSB7QGxpbmsgI3JlbmRlclRodW1ibmFpbCgpfQoJICAgICAqLwoJICAgIFBsYW5hcllVVkx1bWluYW5jZVNvdXJjZS5wcm90b3R5cGUuZ2V0VGh1bWJuYWlsSGVpZ2h0ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5nZXRIZWlnaHQoKSAvIFBsYW5hcllVVkx1bWluYW5jZVNvdXJjZS5USFVNQk5BSUxfU0NBTEVfRkFDVE9SOwoJICAgIH07CgkgICAgUGxhbmFyWVVWTHVtaW5hbmNlU291cmNlLnByb3RvdHlwZS5yZXZlcnNlSG9yaXpvbnRhbCA9IGZ1bmN0aW9uICh3aWR0aCAvKmludCovLCBoZWlnaHQgLyppbnQqLykgewoJICAgICAgICB2YXIgeXV2RGF0YSA9IHRoaXMueXV2RGF0YTsKCSAgICAgICAgZm9yICh2YXIgeSA9IDAsIHJvd1N0YXJ0ID0gdGhpcy50b3AgKiB0aGlzLmRhdGFXaWR0aCArIHRoaXMubGVmdDsgeSA8IGhlaWdodDsgeSsrLCByb3dTdGFydCArPSB0aGlzLmRhdGFXaWR0aCkgewoJICAgICAgICAgICAgdmFyIG1pZGRsZSA9IHJvd1N0YXJ0ICsgd2lkdGggLyAyOwoJICAgICAgICAgICAgZm9yICh2YXIgeDEgPSByb3dTdGFydCwgeDIgPSByb3dTdGFydCArIHdpZHRoIC0gMTsgeDEgPCBtaWRkbGU7IHgxKyssIHgyLS0pIHsKCSAgICAgICAgICAgICAgICB2YXIgdGVtcCA9IHl1dkRhdGFbeDFdOwoJICAgICAgICAgICAgICAgIHl1dkRhdGFbeDFdID0geXV2RGF0YVt4Ml07CgkgICAgICAgICAgICAgICAgeXV2RGF0YVt4Ml0gPSB0ZW1wOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgfTsKCSAgICBQbGFuYXJZVVZMdW1pbmFuY2VTb3VyY2UucHJvdG90eXBlLmludmVydCA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIG5ldyBJbnZlcnRlZEx1bWluYW5jZVNvdXJjZV8xLmRlZmF1bHQodGhpcyk7CgkgICAgfTsKCSAgICBQbGFuYXJZVVZMdW1pbmFuY2VTb3VyY2UuVEhVTUJOQUlMX1NDQUxFX0ZBQ1RPUiA9IDI7CgkgICAgcmV0dXJuIFBsYW5hcllVVkx1bWluYW5jZVNvdXJjZTsKCX0oTHVtaW5hbmNlU291cmNlXzEuZGVmYXVsdCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gUGxhbmFyWVVWTHVtaW5hbmNlU291cmNlOwoKCX0pOwoKCXZhciBSR0JMdW1pbmFuY2VTb3VyY2VfMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCS8qCgkgKiBDb3B5cmlnaHQgMjAwOSBaWGluZyBhdXRob3JzCgkgKgoJICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSAqCgkgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJICoKCSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJICovCgl2YXIgX19leHRlbmRzID0gKGNvbW1vbmpzR2xvYmFsICYmIGNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHsKCSAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwKCSAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHwKCSAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9OwoJICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICB9OwoJICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH0KCSAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpOwoJICAgIH07Cgl9KSgpOwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCS8qbmFtZXNwYWNlIGNvbS5nb29nbGUuenhpbmcgeyovCgkgLy8gcmVxdWlyZWQgYmVjYXVzZSBvZiBjaXJjdWxhciBkZXBlbmRlbmNpZXMgYmV0d2VlbiBMdW1pbmFuY2VTb3VyY2UgYW5kIEludmVydGVkTHVtaW5hbmNlU291cmNlCgl2YXIgSW52ZXJ0ZWRMdW1pbmFuY2VTb3VyY2VfMSQxID0gSW52ZXJ0ZWRMdW1pbmFuY2VTb3VyY2VfMTsKCgoKCS8qKgoJICogVGhpcyBjbGFzcyBpcyB1c2VkIHRvIGhlbHAgZGVjb2RlIGltYWdlcyBmcm9tIGZpbGVzIHdoaWNoIGFycml2ZSBhcyBSR0IgZGF0YSBmcm9tCgkgKiBhbiBBUkdCIHBpeGVsIGFycmF5LiBJdCBkb2VzIG5vdCBzdXBwb3J0IHJvdGF0aW9uLgoJICoKCSAqIEBhdXRob3IgZHN3aXRraW5AZ29vZ2xlLmNvbSAoRGFuaWVsIFN3aXRraW4pCgkgKiBAYXV0aG9yIEJldGFtaW5vcwoJICovCgl2YXIgUkdCTHVtaW5hbmNlU291cmNlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikgewoJICAgIF9fZXh0ZW5kcyhSR0JMdW1pbmFuY2VTb3VyY2UsIF9zdXBlcik7CgkgICAgZnVuY3Rpb24gUkdCTHVtaW5hbmNlU291cmNlKGx1bWluYW5jZXMsIHdpZHRoIC8qaW50Ki8sIGhlaWdodCAvKmludCovLCBkYXRhV2lkdGggLyppbnQqLywgZGF0YUhlaWdodCAvKmludCovLCBsZWZ0IC8qaW50Ki8sIHRvcCAvKmludCovKSB7CgkgICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIHdpZHRoLCBoZWlnaHQpIHx8IHRoaXM7CgkgICAgICAgIF90aGlzLmRhdGFXaWR0aCA9IGRhdGFXaWR0aDsKCSAgICAgICAgX3RoaXMuZGF0YUhlaWdodCA9IGRhdGFIZWlnaHQ7CgkgICAgICAgIF90aGlzLmxlZnQgPSBsZWZ0OwoJICAgICAgICBfdGhpcy50b3AgPSB0b3A7CgkgICAgICAgIGlmIChsdW1pbmFuY2VzLkJZVEVTX1BFUl9FTEVNRU5UID09PSA0KSB7IC8vIEludDMyQXJyYXkKCSAgICAgICAgICAgIHZhciBzaXplID0gd2lkdGggKiBoZWlnaHQ7CgkgICAgICAgICAgICB2YXIgbHVtaW5hbmNlc1VpbnQ4QXJyYXkgPSBuZXcgVWludDhDbGFtcGVkQXJyYXkoc2l6ZSk7CgkgICAgICAgICAgICBmb3IgKHZhciBvZmZzZXQgPSAwOyBvZmZzZXQgPCBzaXplOyBvZmZzZXQrKykgewoJICAgICAgICAgICAgICAgIHZhciBwaXhlbCA9IGx1bWluYW5jZXNbb2Zmc2V0XTsKCSAgICAgICAgICAgICAgICB2YXIgciA9IChwaXhlbCA+PiAxNikgJiAweGZmOyAvLyByZWQKCSAgICAgICAgICAgICAgICB2YXIgZzIgPSAocGl4ZWwgPj4gNykgJiAweDFmZTsgLy8gMiAqIGdyZWVuCgkgICAgICAgICAgICAgICAgdmFyIGIgPSBwaXhlbCAmIDB4ZmY7IC8vIGJsdWUKCSAgICAgICAgICAgICAgICAvLyBDYWxjdWxhdGUgZ3JlZW4tZmF2b3VyaW5nIGF2ZXJhZ2UgY2hlYXBseQoJICAgICAgICAgICAgICAgIGx1bWluYW5jZXNVaW50OEFycmF5W29mZnNldF0gPSAvKihieXRlKSAqLyAoKHIgKyBnMiArIGIpIC8gNCkgJiAweEZGOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgX3RoaXMubHVtaW5hbmNlcyA9IGx1bWluYW5jZXNVaW50OEFycmF5OwoJICAgICAgICB9CgkgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgX3RoaXMubHVtaW5hbmNlcyA9IGx1bWluYW5jZXM7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKHVuZGVmaW5lZCA9PT0gZGF0YVdpZHRoKSB7CgkgICAgICAgICAgICBfdGhpcy5kYXRhV2lkdGggPSB3aWR0aDsKCSAgICAgICAgfQoJICAgICAgICBpZiAodW5kZWZpbmVkID09PSBkYXRhSGVpZ2h0KSB7CgkgICAgICAgICAgICBfdGhpcy5kYXRhSGVpZ2h0ID0gaGVpZ2h0OwoJICAgICAgICB9CgkgICAgICAgIGlmICh1bmRlZmluZWQgPT09IGxlZnQpIHsKCSAgICAgICAgICAgIF90aGlzLmxlZnQgPSAwOwoJICAgICAgICB9CgkgICAgICAgIGlmICh1bmRlZmluZWQgPT09IHRvcCkgewoJICAgICAgICAgICAgX3RoaXMudG9wID0gMDsKCSAgICAgICAgfQoJICAgICAgICBpZiAoX3RoaXMubGVmdCArIHdpZHRoID4gX3RoaXMuZGF0YVdpZHRoIHx8IF90aGlzLnRvcCArIGhlaWdodCA+IF90aGlzLmRhdGFIZWlnaHQpIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCdDcm9wIHJlY3RhbmdsZSBkb2VzIG5vdCBmaXQgd2l0aGluIGltYWdlIGRhdGEuJyk7CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIF90aGlzOwoJICAgIH0KCSAgICAvKkBPdmVycmlkZSovCgkgICAgUkdCTHVtaW5hbmNlU291cmNlLnByb3RvdHlwZS5nZXRSb3cgPSBmdW5jdGlvbiAoeSAvKmludCovLCByb3cpIHsKCSAgICAgICAgaWYgKHkgPCAwIHx8IHkgPj0gdGhpcy5nZXRIZWlnaHQoKSkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoJ1JlcXVlc3RlZCByb3cgaXMgb3V0c2lkZSB0aGUgaW1hZ2U6ICcgKyB5KTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgd2lkdGggPSB0aGlzLmdldFdpZHRoKCk7CgkgICAgICAgIGlmIChyb3cgPT09IG51bGwgfHwgcm93ID09PSB1bmRlZmluZWQgfHwgcm93Lmxlbmd0aCA8IHdpZHRoKSB7CgkgICAgICAgICAgICByb3cgPSBuZXcgVWludDhDbGFtcGVkQXJyYXkod2lkdGgpOwoJICAgICAgICB9CgkgICAgICAgIHZhciBvZmZzZXQgPSAoeSArIHRoaXMudG9wKSAqIHRoaXMuZGF0YVdpZHRoICsgdGhpcy5sZWZ0OwoJICAgICAgICBTeXN0ZW1fMS5kZWZhdWx0LmFycmF5Y29weSh0aGlzLmx1bWluYW5jZXMsIG9mZnNldCwgcm93LCAwLCB3aWR0aCk7CgkgICAgICAgIHJldHVybiByb3c7CgkgICAgfTsKCSAgICAvKkBPdmVycmlkZSovCgkgICAgUkdCTHVtaW5hbmNlU291cmNlLnByb3RvdHlwZS5nZXRNYXRyaXggPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHZhciB3aWR0aCA9IHRoaXMuZ2V0V2lkdGgoKTsKCSAgICAgICAgdmFyIGhlaWdodCA9IHRoaXMuZ2V0SGVpZ2h0KCk7CgkgICAgICAgIC8vIElmIHRoZSBjYWxsZXIgYXNrcyBmb3IgdGhlIGVudGlyZSB1bmRlcmx5aW5nIGltYWdlLCBzYXZlIHRoZSBjb3B5IGFuZCBnaXZlIHRoZW0gdGhlCgkgICAgICAgIC8vIG9yaWdpbmFsIGRhdGEuIFRoZSBkb2NzIHNwZWNpZmljYWxseSB3YXJuIHRoYXQgcmVzdWx0Lmxlbmd0aCBtdXN0IGJlIGlnbm9yZWQuCgkgICAgICAgIGlmICh3aWR0aCA9PT0gdGhpcy5kYXRhV2lkdGggJiYgaGVpZ2h0ID09PSB0aGlzLmRhdGFIZWlnaHQpIHsKCSAgICAgICAgICAgIHJldHVybiB0aGlzLmx1bWluYW5jZXM7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGFyZWEgPSB3aWR0aCAqIGhlaWdodDsKCSAgICAgICAgdmFyIG1hdHJpeCA9IG5ldyBVaW50OENsYW1wZWRBcnJheShhcmVhKTsKCSAgICAgICAgdmFyIGlucHV0T2Zmc2V0ID0gdGhpcy50b3AgKiB0aGlzLmRhdGFXaWR0aCArIHRoaXMubGVmdDsKCSAgICAgICAgLy8gSWYgdGhlIHdpZHRoIG1hdGNoZXMgdGhlIGZ1bGwgd2lkdGggb2YgdGhlIHVuZGVybHlpbmcgZGF0YSwgcGVyZm9ybSBhIHNpbmdsZSBjb3B5LgoJICAgICAgICBpZiAod2lkdGggPT09IHRoaXMuZGF0YVdpZHRoKSB7CgkgICAgICAgICAgICBTeXN0ZW1fMS5kZWZhdWx0LmFycmF5Y29weSh0aGlzLmx1bWluYW5jZXMsIGlucHV0T2Zmc2V0LCBtYXRyaXgsIDAsIGFyZWEpOwoJICAgICAgICAgICAgcmV0dXJuIG1hdHJpeDsKCSAgICAgICAgfQoJICAgICAgICAvLyBPdGhlcndpc2UgY29weSBvbmUgY3JvcHBlZCByb3cgYXQgYSB0aW1lLgoJICAgICAgICBmb3IgKHZhciB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKSB7CgkgICAgICAgICAgICB2YXIgb3V0cHV0T2Zmc2V0ID0geSAqIHdpZHRoOwoJICAgICAgICAgICAgU3lzdGVtXzEuZGVmYXVsdC5hcnJheWNvcHkodGhpcy5sdW1pbmFuY2VzLCBpbnB1dE9mZnNldCwgbWF0cml4LCBvdXRwdXRPZmZzZXQsIHdpZHRoKTsKCSAgICAgICAgICAgIGlucHV0T2Zmc2V0ICs9IHRoaXMuZGF0YVdpZHRoOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBtYXRyaXg7CgkgICAgfTsKCSAgICAvKkBPdmVycmlkZSovCgkgICAgUkdCTHVtaW5hbmNlU291cmNlLnByb3RvdHlwZS5pc0Nyb3BTdXBwb3J0ZWQgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0cnVlOwoJICAgIH07CgkgICAgLypAT3ZlcnJpZGUqLwoJICAgIFJHQkx1bWluYW5jZVNvdXJjZS5wcm90b3R5cGUuY3JvcCA9IGZ1bmN0aW9uIChsZWZ0IC8qaW50Ki8sIHRvcCAvKmludCovLCB3aWR0aCAvKmludCovLCBoZWlnaHQgLyppbnQqLykgewoJICAgICAgICByZXR1cm4gbmV3IFJHQkx1bWluYW5jZVNvdXJjZSh0aGlzLmx1bWluYW5jZXMsIHdpZHRoLCBoZWlnaHQsIHRoaXMuZGF0YVdpZHRoLCB0aGlzLmRhdGFIZWlnaHQsIHRoaXMubGVmdCArIGxlZnQsIHRoaXMudG9wICsgdG9wKTsKCSAgICB9OwoJICAgIFJHQkx1bWluYW5jZVNvdXJjZS5wcm90b3R5cGUuaW52ZXJ0ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gbmV3IEludmVydGVkTHVtaW5hbmNlU291cmNlXzEkMS5kZWZhdWx0KHRoaXMpOwoJICAgIH07CgkgICAgcmV0dXJuIFJHQkx1bWluYW5jZVNvdXJjZTsKCX0oTHVtaW5hbmNlU291cmNlXzEuZGVmYXVsdCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gUkdCTHVtaW5hbmNlU291cmNlOwoKCX0pOwoKCXZhciBDaGFyc2V0XzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7Cgl2YXIgX19leHRlbmRzID0gKGNvbW1vbmpzR2xvYmFsICYmIGNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHsKCSAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwKCSAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHwKCSAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9OwoJICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICB9OwoJICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH0KCSAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpOwoJICAgIH07Cgl9KSgpOwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCgkvKioKCSAqIEp1c3QgdG8gbWFrZSBhIHNob3J0Y3V0IGJldHdlZW4gSmF2YSBjb2RlIGFuZCBUUyBjb2RlLgoJICovCgl2YXIgQ2hhcnNldCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHsKCSAgICBfX2V4dGVuZHMoQ2hhcnNldCwgX3N1cGVyKTsKCSAgICBmdW5jdGlvbiBDaGFyc2V0KCkgewoJICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7CgkgICAgfQoJICAgIENoYXJzZXQuZm9yTmFtZSA9IGZ1bmN0aW9uIChuYW1lKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmdldENoYXJhY3RlclNldEVDSUJ5TmFtZShuYW1lKTsKCSAgICB9OwoJICAgIHJldHVybiBDaGFyc2V0OwoJfShDaGFyYWN0ZXJTZXRFQ0lfMS5kZWZhdWx0KSk7CglleHBvcnRzLmRlZmF1bHQgPSBDaGFyc2V0OwoKCX0pOwoKCXZhciBTdGFuZGFyZENoYXJzZXRzXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoKCS8qKgoJICogSnVzdCB0byBtYWtlIGEgc2hvcnRjdXQgYmV0d2VlbiBKYXZhIGNvZGUgYW5kIFRTIGNvZGUuCgkgKi8KCXZhciBTdGFuZGFyZENoYXJzZXRzID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIGZ1bmN0aW9uIFN0YW5kYXJkQ2hhcnNldHMoKSB7CgkgICAgfQoJICAgIFN0YW5kYXJkQ2hhcnNldHMuSVNPXzg4NTlfMSA9IENoYXJhY3RlclNldEVDSV8xLmRlZmF1bHQuSVNPODg1OV8xOwoJICAgIHJldHVybiBTdGFuZGFyZENoYXJzZXRzOwoJfSgpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IFN0YW5kYXJkQ2hhcnNldHM7CgoJfSk7CgoJdmFyIEF6dGVjQ29kZV8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJLyoKCSogQ29weXJpZ2h0IDIwMTMgWlhpbmcgYXV0aG9ycwoJKgoJKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSoKCSogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSoKCSogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSovCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJLyoqCgkgKiBBenRlYyAyRCBjb2RlIHJlcHJlc2VudGF0aW9uCgkgKgoJICogQGF1dGhvciBSdXN0YW0gQWJkdWxsYWV2CgkgKi8KCXZhciBBenRlY0NvZGUgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgZnVuY3Rpb24gQXp0ZWNDb2RlKCkgewoJICAgIH0KCSAgICAvKioKCSAgICAgKiBAcmV0dXJuIHtAY29kZSB0cnVlfSBpZiBjb21wYWN0IGluc3RlYWQgb2YgZnVsbCBtb2RlCgkgICAgICovCgkgICAgQXp0ZWNDb2RlLnByb3RvdHlwZS5pc0NvbXBhY3QgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmNvbXBhY3Q7CgkgICAgfTsKCSAgICBBenRlY0NvZGUucHJvdG90eXBlLnNldENvbXBhY3QgPSBmdW5jdGlvbiAoY29tcGFjdCkgewoJICAgICAgICB0aGlzLmNvbXBhY3QgPSBjb21wYWN0OwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQHJldHVybiBzaXplIGluIHBpeGVscyAod2lkdGggYW5kIGhlaWdodCkKCSAgICAgKi8KCSAgICBBenRlY0NvZGUucHJvdG90eXBlLmdldFNpemUgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLnNpemU7CgkgICAgfTsKCSAgICBBenRlY0NvZGUucHJvdG90eXBlLnNldFNpemUgPSBmdW5jdGlvbiAoc2l6ZSkgewoJICAgICAgICB0aGlzLnNpemUgPSBzaXplOwoJICAgIH07CgkgICAgLyoqCgkgICAgICogQHJldHVybiBudW1iZXIgb2YgbGV2ZWxzCgkgICAgICovCgkgICAgQXp0ZWNDb2RlLnByb3RvdHlwZS5nZXRMYXllcnMgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmxheWVyczsKCSAgICB9OwoJICAgIEF6dGVjQ29kZS5wcm90b3R5cGUuc2V0TGF5ZXJzID0gZnVuY3Rpb24gKGxheWVycykgewoJICAgICAgICB0aGlzLmxheWVycyA9IGxheWVyczsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEByZXR1cm4gbnVtYmVyIG9mIGRhdGEgY29kZXdvcmRzCgkgICAgICovCgkgICAgQXp0ZWNDb2RlLnByb3RvdHlwZS5nZXRDb2RlV29yZHMgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmNvZGVXb3JkczsKCSAgICB9OwoJICAgIEF6dGVjQ29kZS5wcm90b3R5cGUuc2V0Q29kZVdvcmRzID0gZnVuY3Rpb24gKGNvZGVXb3JkcykgewoJICAgICAgICB0aGlzLmNvZGVXb3JkcyA9IGNvZGVXb3JkczsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEByZXR1cm4gdGhlIHN5bWJvbCBpbWFnZQoJICAgICAqLwoJICAgIEF6dGVjQ29kZS5wcm90b3R5cGUuZ2V0TWF0cml4ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5tYXRyaXg7CgkgICAgfTsKCSAgICBBenRlY0NvZGUucHJvdG90eXBlLnNldE1hdHJpeCA9IGZ1bmN0aW9uIChtYXRyaXgpIHsKCSAgICAgICAgdGhpcy5tYXRyaXggPSBtYXRyaXg7CgkgICAgfTsKCSAgICByZXR1cm4gQXp0ZWNDb2RlOwoJfSgpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IEF6dGVjQ29kZTsKCgl9KTsKCgl2YXIgQ29sbGVjdGlvbnNfMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7Cgl2YXIgQ29sbGVjdGlvbnMgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgZnVuY3Rpb24gQ29sbGVjdGlvbnMoKSB7CgkgICAgfQoJICAgIC8qKgoJICAgICAqIFRoZSBzaW5nbGV0b25MaXN0KFQpIG1ldGhvZCBpcyB1c2VkIHRvIHJldHVybiBhbiBpbW11dGFibGUgbGlzdCBjb250YWluaW5nIG9ubHkgdGhlIHNwZWNpZmllZCBvYmplY3QuCgkgICAgICovCgkgICAgQ29sbGVjdGlvbnMuc2luZ2xldG9uTGlzdCA9IGZ1bmN0aW9uIChpdGVtKSB7CgkgICAgICAgIHJldHVybiBbaXRlbV07CgkgICAgfTsKCSAgICAvKioKCSAgICAgKiBUaGUgbWluKENvbGxlY3Rpb248PyBleHRlbmRzIFQ+LCBDb21wYXJhdG9yPD8gc3VwZXIgVD4pIG1ldGhvZCBpcyB1c2VkIHRvIHJldHVybiB0aGUgbWluaW11bSBlbGVtZW50IG9mIHRoZSBnaXZlbiBjb2xsZWN0aW9uLCBhY2NvcmRpbmcgdG8gdGhlIG9yZGVyIGluZHVjZWQgYnkgdGhlIHNwZWNpZmllZCBjb21wYXJhdG9yLgoJICAgICAqLwoJICAgIENvbGxlY3Rpb25zLm1pbiA9IGZ1bmN0aW9uIChjb2xsZWN0aW9uLCBjb21wYXJhdG9yKSB7CgkgICAgICAgIHJldHVybiBjb2xsZWN0aW9uLnNvcnQoY29tcGFyYXRvcilbMF07CgkgICAgfTsKCSAgICByZXR1cm4gQ29sbGVjdGlvbnM7Cgl9KCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gQ29sbGVjdGlvbnM7CgoJfSk7CgoJdmFyIFRva2VuXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CgkvKgoJKiBDb3B5cmlnaHQgMjAxMyBaWGluZyBhdXRob3JzCgkqCgkqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJKgoJKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJKgoJKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJKi8KCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7Cgl2YXIgVG9rZW4gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7CgkgICAgZnVuY3Rpb24gVG9rZW4ocHJldmlvdXMpIHsKCSAgICAgICAgdGhpcy5wcmV2aW91cyA9IHByZXZpb3VzOwoJICAgIH0KCSAgICBUb2tlbi5wcm90b3R5cGUuZ2V0UHJldmlvdXMgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLnByZXZpb3VzOwoJICAgIH07CgkgICAgcmV0dXJuIFRva2VuOwoJfSgpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IFRva2VuOwoKCX0pOwoKCXZhciBTaW1wbGVUb2tlbl8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJLyoKCSogQ29weXJpZ2h0IDIwMTMgWlhpbmcgYXV0aG9ycwoJKgoJKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSoKCSogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSoKCSogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSovCgl2YXIgX19leHRlbmRzID0gKGNvbW1vbmpzR2xvYmFsICYmIGNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHsKCSAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7CgkgICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwKCSAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHwKCSAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9OwoJICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICB9OwoJICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpOwoJICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH0KCSAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpOwoJICAgIH07Cgl9KSgpOwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCgoJdmFyIFNpbXBsZVRva2VuID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikgewoJICAgIF9fZXh0ZW5kcyhTaW1wbGVUb2tlbiwgX3N1cGVyKTsKCSAgICBmdW5jdGlvbiBTaW1wbGVUb2tlbihwcmV2aW91cywgdmFsdWUsIGJpdENvdW50KSB7CgkgICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIHByZXZpb3VzKSB8fCB0aGlzOwoJICAgICAgICBfdGhpcy52YWx1ZSA9IHZhbHVlOwoJICAgICAgICBfdGhpcy5iaXRDb3VudCA9IGJpdENvdW50OwoJICAgICAgICByZXR1cm4gX3RoaXM7CgkgICAgfQoJICAgIC8qKgoJICAgICAqIEBPdmVycmlkZQoJICAgICAqLwoJICAgIFNpbXBsZVRva2VuLnByb3RvdHlwZS5hcHBlbmRUbyA9IGZ1bmN0aW9uIChiaXRBcnJheSwgdGV4dCkgewoJICAgICAgICBiaXRBcnJheS5hcHBlbmRCaXRzKHRoaXMudmFsdWUsIHRoaXMuYml0Q291bnQpOwoJICAgIH07CgkgICAgU2ltcGxlVG9rZW4ucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh2YWx1ZSwgYml0Q291bnQpIHsKCSAgICAgICAgcmV0dXJuIG5ldyBTaW1wbGVUb2tlbih0aGlzLCB2YWx1ZSwgYml0Q291bnQpOwoJICAgIH07CgkgICAgU2ltcGxlVG9rZW4ucHJvdG90eXBlLmFkZEJpbmFyeVNoaWZ0ID0gZnVuY3Rpb24gKHN0YXJ0LCBieXRlQ291bnQpIHsKCSAgICAgICAgLy8gbm8tb3AgY2FuJ3QgYmluYXJ5IHNoaWZ0IGEgc2ltcGxlIHRva2VuCgkgICAgICAgIGNvbnNvbGUud2FybignYWRkQmluYXJ5U2hpZnQgb24gU2ltcGxlVG9rZW4sIHRoaXMgc2ltcGx5IHJldHVybnMgYSBjb3B5IG9mIHRoaXMgdG9rZW4nKTsKCSAgICAgICAgcmV0dXJuIG5ldyBTaW1wbGVUb2tlbih0aGlzLCBzdGFydCwgYnl0ZUNvdW50KTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEBPdmVycmlkZQoJICAgICAqLwoJICAgIFNpbXBsZVRva2VuLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgdmFyIHZhbHVlID0gdGhpcy52YWx1ZSAmICgoMSA8PCB0aGlzLmJpdENvdW50KSAtIDEpOwoJICAgICAgICB2YWx1ZSB8PSAxIDw8IHRoaXMuYml0Q291bnQ7CgkgICAgICAgIHJldHVybiAnPCcgKyBJbnRlZ2VyXzEuZGVmYXVsdC50b0JpbmFyeVN0cmluZyh2YWx1ZSB8ICgxIDw8IHRoaXMuYml0Q291bnQpKS5zdWJzdHJpbmcoMSkgKyAnPic7CgkgICAgfTsKCSAgICByZXR1cm4gU2ltcGxlVG9rZW47Cgl9KFRva2VuXzEuZGVmYXVsdCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gU2ltcGxlVG9rZW47CgoJfSk7CgoJdmFyIEJpbmFyeVNoaWZ0VG9rZW5fMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCS8qCgkqIENvcHlyaWdodCAyMDEzIFpYaW5nIGF1dGhvcnMKCSoKCSogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkqCgkqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkqCgkqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkqLwoJdmFyIF9fZXh0ZW5kcyA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7CgkgICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikgewoJICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8CgkgICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8CgkgICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTsKCSAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7CgkgICAgfTsKCSAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHsKCSAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTsKCSAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9CgkgICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTsKCSAgICB9OwoJfSkoKTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgoJdmFyIEJpbmFyeVNoaWZ0VG9rZW4gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7CgkgICAgX19leHRlbmRzKEJpbmFyeVNoaWZ0VG9rZW4sIF9zdXBlcik7CgkgICAgZnVuY3Rpb24gQmluYXJ5U2hpZnRUb2tlbihwcmV2aW91cywgYmluYXJ5U2hpZnRTdGFydCwgYmluYXJ5U2hpZnRCeXRlQ291bnQpIHsKCSAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgcHJldmlvdXMsIDAsIDApIHx8IHRoaXM7CgkgICAgICAgIF90aGlzLmJpbmFyeVNoaWZ0U3RhcnQgPSBiaW5hcnlTaGlmdFN0YXJ0OwoJICAgICAgICBfdGhpcy5iaW5hcnlTaGlmdEJ5dGVDb3VudCA9IGJpbmFyeVNoaWZ0Qnl0ZUNvdW50OwoJICAgICAgICByZXR1cm4gX3RoaXM7CgkgICAgfQoJICAgIC8qKgoJICAgICAqIEBPdmVycmlkZQoJICAgICAqLwoJICAgIEJpbmFyeVNoaWZ0VG9rZW4ucHJvdG90eXBlLmFwcGVuZFRvID0gZnVuY3Rpb24gKGJpdEFycmF5LCB0ZXh0KSB7CgkgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5iaW5hcnlTaGlmdEJ5dGVDb3VudDsgaSsrKSB7CgkgICAgICAgICAgICBpZiAoaSA9PT0gMCB8fCAoaSA9PT0gMzEgJiYgdGhpcy5iaW5hcnlTaGlmdEJ5dGVDb3VudCA8PSA2MikpIHsKCSAgICAgICAgICAgICAgICAvLyBXZSBuZWVkIGEgaGVhZGVyIGJlZm9yZSB0aGUgZmlyc3QgY2hhcmFjdGVyLCBhbmQgYmVmb3JlCgkgICAgICAgICAgICAgICAgLy8gY2hhcmFjdGVyIDMxIHdoZW4gdGhlIHRvdGFsIGJ5dGUgY29kZSBpcyA8PSA2MgoJICAgICAgICAgICAgICAgIGJpdEFycmF5LmFwcGVuZEJpdHMoMzEsIDUpOyAvLyBCSU5BUllfU0hJRlQKCSAgICAgICAgICAgICAgICBpZiAodGhpcy5iaW5hcnlTaGlmdEJ5dGVDb3VudCA+IDYyKSB7CgkgICAgICAgICAgICAgICAgICAgIGJpdEFycmF5LmFwcGVuZEJpdHModGhpcy5iaW5hcnlTaGlmdEJ5dGVDb3VudCAtIDMxLCAxNik7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGVsc2UgaWYgKGkgPT09IDApIHsKCSAgICAgICAgICAgICAgICAgICAgLy8gMSA8PSBiaW5hcnlTaGlmdEJ5dGVDb2RlIDw9IDYyCgkgICAgICAgICAgICAgICAgICAgIGJpdEFycmF5LmFwcGVuZEJpdHMoTWF0aC5taW4odGhpcy5iaW5hcnlTaGlmdEJ5dGVDb3VudCwgMzEpLCA1KTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgICAgIC8vIDMyIDw9IGJpbmFyeVNoaWZ0Q291bnQgPD0gNjIgYW5kIGkgPT0gMzEKCSAgICAgICAgICAgICAgICAgICAgYml0QXJyYXkuYXBwZW5kQml0cyh0aGlzLmJpbmFyeVNoaWZ0Qnl0ZUNvdW50IC0gMzEsIDUpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGJpdEFycmF5LmFwcGVuZEJpdHModGV4dFt0aGlzLmJpbmFyeVNoaWZ0U3RhcnQgKyBpXSwgOCk7CgkgICAgICAgIH0KCSAgICB9OwoJICAgIEJpbmFyeVNoaWZ0VG9rZW4ucHJvdG90eXBlLmFkZEJpbmFyeVNoaWZ0ID0gZnVuY3Rpb24gKHN0YXJ0LCBieXRlQ291bnQpIHsKCSAgICAgICAgLy8gaW50IGJpdENvdW50ID0gKGJ5dGVDb3VudCAqIDgpICsgKGJ5dGVDb3VudCA8PSAzMSA/IDEwIDogYnl0ZUNvdW50IDw9IDYyID8gMjAgOiAyMSk7CgkgICAgICAgIHJldHVybiBuZXcgQmluYXJ5U2hpZnRUb2tlbih0aGlzLCBzdGFydCwgYnl0ZUNvdW50KTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEBPdmVycmlkZQoJICAgICAqLwoJICAgIEJpbmFyeVNoaWZ0VG9rZW4ucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gJzwnICsgdGhpcy5iaW5hcnlTaGlmdFN0YXJ0ICsgJzo6JyArICh0aGlzLmJpbmFyeVNoaWZ0U3RhcnQgKyB0aGlzLmJpbmFyeVNoaWZ0Qnl0ZUNvdW50IC0gMSkgKyAnPic7CgkgICAgfTsKCSAgICByZXR1cm4gQmluYXJ5U2hpZnRUb2tlbjsKCX0oU2ltcGxlVG9rZW5fMS5kZWZhdWx0KSk7CglleHBvcnRzLmRlZmF1bHQgPSBCaW5hcnlTaGlmdFRva2VuOwoKCX0pOwoKCXZhciBUb2tlbkhlbHBlcnMgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJZXhwb3J0cy5hZGQgPSBleHBvcnRzLmFkZEJpbmFyeVNoaWZ0ID0gdm9pZCAwOwoKCglmdW5jdGlvbiBhZGRCaW5hcnlTaGlmdCh0b2tlbiwgc3RhcnQsIGJ5dGVDb3VudCkgewoJICAgIC8vIGludCBiaXRDb3VudCA9IChieXRlQ291bnQgKiA4KSArIChieXRlQ291bnQgPD0gMzEgPyAxMCA6IGJ5dGVDb3VudCA8PSA2MiA/IDIwIDogMjEpOwoJICAgIHJldHVybiBuZXcgQmluYXJ5U2hpZnRUb2tlbl8xLmRlZmF1bHQodG9rZW4sIHN0YXJ0LCBieXRlQ291bnQpOwoJfQoJZXhwb3J0cy5hZGRCaW5hcnlTaGlmdCA9IGFkZEJpbmFyeVNoaWZ0OwoJZnVuY3Rpb24gYWRkKHRva2VuLCB2YWx1ZSwgYml0Q291bnQpIHsKCSAgICByZXR1cm4gbmV3IFNpbXBsZVRva2VuXzEuZGVmYXVsdCh0b2tlbiwgdmFsdWUsIGJpdENvdW50KTsKCX0KCWV4cG9ydHMuYWRkID0gYWRkOwoKCX0pOwoKCXZhciBFbmNvZGVyQ29uc3RhbnRzID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCWV4cG9ydHMuRU1QVFlfVE9LRU4gPSBleHBvcnRzLk1PREVfUFVOQ1QgPSBleHBvcnRzLk1PREVfTUlYRUQgPSBleHBvcnRzLk1PREVfRElHSVQgPSBleHBvcnRzLk1PREVfTE9XRVIgPSBleHBvcnRzLk1PREVfVVBQRVIgPSBleHBvcnRzLk1PREVfTkFNRVMgPSB2b2lkIDA7CgoJZXhwb3J0cy5NT0RFX05BTUVTID0gWwoJICAgICdVUFBFUicsCgkgICAgJ0xPV0VSJywKCSAgICAnRElHSVQnLAoJICAgICdNSVhFRCcsCgkgICAgJ1BVTkNUJwoJXTsKCWV4cG9ydHMuTU9ERV9VUFBFUiA9IDA7IC8vIDUgYml0cwoJZXhwb3J0cy5NT0RFX0xPV0VSID0gMTsgLy8gNSBiaXRzCglleHBvcnRzLk1PREVfRElHSVQgPSAyOyAvLyA0IGJpdHMKCWV4cG9ydHMuTU9ERV9NSVhFRCA9IDM7IC8vIDUgYml0cwoJZXhwb3J0cy5NT0RFX1BVTkNUID0gNDsgLy8gNSBiaXRzCglleHBvcnRzLkVNUFRZX1RPS0VOID0gbmV3IFNpbXBsZVRva2VuXzEuZGVmYXVsdChudWxsLCAwLCAwKTsKCgl9KTsKCgl2YXIgTGF0Y2hUYWJsZSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CglleHBvcnRzLkxBVENIX1RBQkxFID0gdm9pZCAwOwoJLy8gVGhlIExhdGNoIFRhYmxlIHNob3dzLCBmb3IgZWFjaCBwYWlyIG9mIE1vZGVzLCB0aGUgb3B0aW1hbCBtZXRob2QgZm9yCgkvLyBnZXR0aW5nIGZyb20gb25lIG1vZGUgdG8gYW5vdGhlci4gIEluIHRoZSB3b3JzdCBwb3NzaWJsZSBjYXNlLCB0aGlzIGNhbgoJLy8gYmUgdXAgdG8gMTQgYml0cy4gIEluIHRoZSBiZXN0IHBvc3NpYmxlIGNhc2UsIHdlIGFyZSBhbHJlYWR5IHRoZXJlIQoJLy8gVGhlIGhpZ2ggaGFsZi13b3JkIG9mIGVhY2ggZW50cnkgZ2l2ZXMgdGhlIG51bWJlciBvZiBiaXRzLgoJLy8gVGhlIGxvdyBoYWxmLXdvcmQgb2YgZWFjaCBlbnRyeSBhcmUgdGhlIGFjdHVhbCBiaXRzIG5lY2Vzc2FyeSB0byBjaGFuZ2UKCWV4cG9ydHMuTEFUQ0hfVEFCTEUgPSBbCgkgICAgSW50MzJBcnJheS5mcm9tKFsKCSAgICAgICAgMCwKCSAgICAgICAgKDUgPDwgMTYpICsgMjgsCgkgICAgICAgICg1IDw8IDE2KSArIDMwLAoJICAgICAgICAoNSA8PCAxNikgKyAyOSwKCSAgICAgICAgKDEwIDw8IDE2KSArICgyOSA8PCA1KSArIDMwIC8vIFVQUEVSIC0+IE1JWEVEIC0+IFBVTkNUCgkgICAgXSksCgkgICAgSW50MzJBcnJheS5mcm9tKFsKCSAgICAgICAgKDkgPDwgMTYpICsgKDMwIDw8IDQpICsgMTQsCgkgICAgICAgIDAsCgkgICAgICAgICg1IDw8IDE2KSArIDMwLAoJICAgICAgICAoNSA8PCAxNikgKyAyOSwKCSAgICAgICAgKDEwIDw8IDE2KSArICgyOSA8PCA1KSArIDMwIC8vIExPV0VSIC0+IE1JWEVEIC0+IFBVTkNUCgkgICAgXSksCgkgICAgSW50MzJBcnJheS5mcm9tKFsKCSAgICAgICAgKDQgPDwgMTYpICsgMTQsCgkgICAgICAgICg5IDw8IDE2KSArICgxNCA8PCA1KSArIDI4LAoJICAgICAgICAwLAoJICAgICAgICAoOSA8PCAxNikgKyAoMTQgPDwgNSkgKyAyOSwKCSAgICAgICAgKDE0IDw8IDE2KSArICgxNCA8PCAxMCkgKyAoMjkgPDwgNSkgKyAzMAoJICAgICAgICAvLyBESUdJVCAtPiBVUFBFUiAtPiBNSVhFRCAtPiBQVU5DVAoJICAgIF0pLAoJICAgIEludDMyQXJyYXkuZnJvbShbCgkgICAgICAgICg1IDw8IDE2KSArIDI5LAoJICAgICAgICAoNSA8PCAxNikgKyAyOCwKCSAgICAgICAgKDEwIDw8IDE2KSArICgyOSA8PCA1KSArIDMwLAoJICAgICAgICAwLAoJICAgICAgICAoNSA8PCAxNikgKyAzMCAvLyBNSVhFRCAtPiBQVU5DVAoJICAgIF0pLAoJICAgIEludDMyQXJyYXkuZnJvbShbCgkgICAgICAgICg1IDw8IDE2KSArIDMxLAoJICAgICAgICAoMTAgPDwgMTYpICsgKDMxIDw8IDUpICsgMjgsCgkgICAgICAgICgxMCA8PCAxNikgKyAoMzEgPDwgNSkgKyAzMCwKCSAgICAgICAgKDEwIDw8IDE2KSArICgzMSA8PCA1KSArIDI5LAoJICAgICAgICAwCgkgICAgXSkKCV07CgoJfSk7CgoJdmFyIFNoaWZ0VGFibGUgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7Cgl2YXIgX192YWx1ZXMgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX192YWx1ZXMpIHx8IGZ1bmN0aW9uKG8pIHsKCSAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09ICJmdW5jdGlvbiIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDsKCSAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTsKCSAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09ICJudW1iZXIiKSByZXR1cm4gewoJICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7CgkgICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwOwoJICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9OwoJICAgICAgICB9CgkgICAgfTsKCSAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyAiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS4iIDogIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC4iKTsKCX07CglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIl9fZXNNb2R1bGUiLCB7IHZhbHVlOiB0cnVlIH0pOwoJZXhwb3J0cy5TSElGVF9UQUJMRSA9IGV4cG9ydHMuc3RhdGljX1NISUZUX1RBQkxFID0gdm9pZCAwOwoKCglmdW5jdGlvbiBzdGF0aWNfU0hJRlRfVEFCTEUoU0hJRlRfVEFCTEUpIHsKCSAgICB2YXIgZV8xLCBfYTsKCSAgICB0cnkgewoJICAgICAgICBmb3IgKHZhciBTSElGVF9UQUJMRV8xID0gX192YWx1ZXMoU0hJRlRfVEFCTEUpLCBTSElGVF9UQUJMRV8xXzEgPSBTSElGVF9UQUJMRV8xLm5leHQoKTsgIVNISUZUX1RBQkxFXzFfMS5kb25lOyBTSElGVF9UQUJMRV8xXzEgPSBTSElGVF9UQUJMRV8xLm5leHQoKSkgewoJICAgICAgICAgICAgdmFyIHRhYmxlID0gU0hJRlRfVEFCTEVfMV8xLnZhbHVlIC8qSW50MzJBcnJheSovOwoJICAgICAgICAgICAgQXJyYXlzXzEuZGVmYXVsdC5maWxsKHRhYmxlLCAtMSk7CgkgICAgICAgIH0KCSAgICB9CgkgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH0KCSAgICBmaW5hbGx5IHsKCSAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgIGlmIChTSElGVF9UQUJMRV8xXzEgJiYgIVNISUZUX1RBQkxFXzFfMS5kb25lICYmIChfYSA9IFNISUZUX1RBQkxFXzEucmV0dXJuKSkgX2EuY2FsbChTSElGVF9UQUJMRV8xKTsKCSAgICAgICAgfQoJICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9CgkgICAgfQoJICAgIFNISUZUX1RBQkxFW0VuY29kZXJDb25zdGFudHMuTU9ERV9VUFBFUl1bRW5jb2RlckNvbnN0YW50cy5NT0RFX1BVTkNUXSA9IDA7CgkgICAgU0hJRlRfVEFCTEVbRW5jb2RlckNvbnN0YW50cy5NT0RFX0xPV0VSXVtFbmNvZGVyQ29uc3RhbnRzLk1PREVfUFVOQ1RdID0gMDsKCSAgICBTSElGVF9UQUJMRVtFbmNvZGVyQ29uc3RhbnRzLk1PREVfTE9XRVJdW0VuY29kZXJDb25zdGFudHMuTU9ERV9VUFBFUl0gPSAyODsKCSAgICBTSElGVF9UQUJMRVtFbmNvZGVyQ29uc3RhbnRzLk1PREVfTUlYRURdW0VuY29kZXJDb25zdGFudHMuTU9ERV9QVU5DVF0gPSAwOwoJICAgIFNISUZUX1RBQkxFW0VuY29kZXJDb25zdGFudHMuTU9ERV9ESUdJVF1bRW5jb2RlckNvbnN0YW50cy5NT0RFX1BVTkNUXSA9IDA7CgkgICAgU0hJRlRfVEFCTEVbRW5jb2RlckNvbnN0YW50cy5NT0RFX0RJR0lUXVtFbmNvZGVyQ29uc3RhbnRzLk1PREVfVVBQRVJdID0gMTU7CgkgICAgcmV0dXJuIFNISUZUX1RBQkxFOwoJfQoJZXhwb3J0cy5zdGF0aWNfU0hJRlRfVEFCTEUgPSBzdGF0aWNfU0hJRlRfVEFCTEU7CglleHBvcnRzLlNISUZUX1RBQkxFID0gc3RhdGljX1NISUZUX1RBQkxFKEFycmF5c18xLmRlZmF1bHQuY3JlYXRlSW50MzJBcnJheSg2LCA2KSk7IC8vIG1vZGUgc2hpZnQgY29kZXMsIHBlciB0YWJsZQoKCX0pOwoKCXZhciBTdGF0ZV8xID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJLyoKCSAqIENvcHlyaWdodCAyMDEzIFpYaW5nIGF1dGhvcnMKCSAqCgkgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKCSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoJICoKCSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkgKgoJICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQoJICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgoJICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAoJICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkgKi8KCXZhciBfX3ZhbHVlcyA9IChjb21tb25qc0dsb2JhbCAmJiBjb21tb25qc0dsb2JhbC5fX3ZhbHVlcykgfHwgZnVuY3Rpb24obykgewoJICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gImZ1bmN0aW9uIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwOwoJICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pOwoJICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gIm51bWJlciIpIHJldHVybiB7CgkgICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7CgkgICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07CgkgICAgICAgIH0KCSAgICB9OwoJICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/ICJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLiIgOiAiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpOwoJfTsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CgkvLyBwYWNrYWdlIGNvbS5nb29nbGUuenhpbmcuYXp0ZWMuZW5jb2RlcjsKCS8vIGltcG9ydCBqYXZhLnV0aWwuRGVxdWU7CgkvLyBpbXBvcnQgamF2YS51dGlsLkxpbmtlZExpc3Q7CgkvLyBpbXBvcnQgY29tLmdvb2dsZS56eGluZy5jb21tb24uQml0QXJyYXk7CgoKCgoKCgkvKioKCSAqIFN0YXRlIHJlcHJlc2VudHMgYWxsIGluZm9ybWF0aW9uIGFib3V0IGEgc2VxdWVuY2UgbmVjZXNzYXJ5IHRvIGdlbmVyYXRlIHRoZSBjdXJyZW50IG91dHB1dC4KCSAqIE5vdGUgdGhhdCBhIHN0YXRlIGlzIGltbXV0YWJsZS4KCSAqLwoJdmFyIFN0YXRlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIGZ1bmN0aW9uIFN0YXRlKHRva2VuLCBtb2RlLCBiaW5hcnlCeXRlcywgYml0Q291bnQpIHsKCSAgICAgICAgdGhpcy50b2tlbiA9IHRva2VuOwoJICAgICAgICB0aGlzLm1vZGUgPSBtb2RlOwoJICAgICAgICB0aGlzLmJpbmFyeVNoaWZ0Qnl0ZUNvdW50ID0gYmluYXJ5Qnl0ZXM7CgkgICAgICAgIHRoaXMuYml0Q291bnQgPSBiaXRDb3VudDsKCSAgICAgICAgLy8gTWFrZSBzdXJlIHdlIG1hdGNoIHRoZSB0b2tlbgoJICAgICAgICAvLyBpbnQgYmluYXJ5U2hpZnRCaXRDb3VudCA9IChiaW5hcnlTaGlmdEJ5dGVDb3VudCAqIDgpICsKCSAgICAgICAgLy8gICAgKGJpbmFyeVNoaWZ0Qnl0ZUNvdW50ID09PSAwID8gMCA6CgkgICAgICAgIC8vICAgICBiaW5hcnlTaGlmdEJ5dGVDb3VudCA8PSAzMSA/IDEwIDoKCSAgICAgICAgLy8gICAgIGJpbmFyeVNoaWZ0Qnl0ZUNvdW50IDw9IDYyID8gMjAgOiAyMSk7CgkgICAgICAgIC8vIGFzc2VydCB0aGlzLmJpdENvdW50ID09PSB0b2tlbi5nZXRUb3RhbEJpdENvdW50KCkgKyBiaW5hcnlTaGlmdEJpdENvdW50OwoJICAgIH0KCSAgICBTdGF0ZS5wcm90b3R5cGUuZ2V0TW9kZSA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMubW9kZTsKCSAgICB9OwoJICAgIFN0YXRlLnByb3RvdHlwZS5nZXRUb2tlbiA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIHRoaXMudG9rZW47CgkgICAgfTsKCSAgICBTdGF0ZS5wcm90b3R5cGUuZ2V0QmluYXJ5U2hpZnRCeXRlQ291bnQgPSBmdW5jdGlvbiAoKSB7CgkgICAgICAgIHJldHVybiB0aGlzLmJpbmFyeVNoaWZ0Qnl0ZUNvdW50OwoJICAgIH07CgkgICAgU3RhdGUucHJvdG90eXBlLmdldEJpdENvdW50ID0gZnVuY3Rpb24gKCkgewoJICAgICAgICByZXR1cm4gdGhpcy5iaXRDb3VudDsKCSAgICB9OwoJICAgIC8vIENyZWF0ZSBhIG5ldyBzdGF0ZSByZXByZXNlbnRpbmcgdGhpcyBzdGF0ZSB3aXRoIGEgbGF0Y2ggdG8gYSAobm90CgkgICAgLy8gbmVjZXNzYXJ5IGRpZmZlcmVudCkgbW9kZSwgYW5kIHRoZW4gYSBjb2RlLgoJICAgIFN0YXRlLnByb3RvdHlwZS5sYXRjaEFuZEFwcGVuZCA9IGZ1bmN0aW9uIChtb2RlLCB2YWx1ZSkgewoJICAgICAgICAvLyBhc3NlcnQgYmluYXJ5U2hpZnRCeXRlQ291bnQgPT09IDA7CgkgICAgICAgIHZhciBiaXRDb3VudCA9IHRoaXMuYml0Q291bnQ7CgkgICAgICAgIHZhciB0b2tlbiA9IHRoaXMudG9rZW47CgkgICAgICAgIGlmIChtb2RlICE9PSB0aGlzLm1vZGUpIHsKCSAgICAgICAgICAgIHZhciBsYXRjaCA9IExhdGNoVGFibGUuTEFUQ0hfVEFCTEVbdGhpcy5tb2RlXVttb2RlXTsKCSAgICAgICAgICAgIHRva2VuID0gVG9rZW5IZWxwZXJzLmFkZCh0b2tlbiwgbGF0Y2ggJiAweGZmZmYsIGxhdGNoID4+IDE2KTsKCSAgICAgICAgICAgIGJpdENvdW50ICs9IGxhdGNoID4+IDE2OwoJICAgICAgICB9CgkgICAgICAgIHZhciBsYXRjaE1vZGVCaXRDb3VudCA9IG1vZGUgPT09IEVuY29kZXJDb25zdGFudHMuTU9ERV9ESUdJVCA/IDQgOiA1OwoJICAgICAgICB0b2tlbiA9IFRva2VuSGVscGVycy5hZGQodG9rZW4sIHZhbHVlLCBsYXRjaE1vZGVCaXRDb3VudCk7CgkgICAgICAgIHJldHVybiBuZXcgU3RhdGUodG9rZW4sIG1vZGUsIDAsIGJpdENvdW50ICsgbGF0Y2hNb2RlQml0Q291bnQpOwoJICAgIH07CgkgICAgLy8gQ3JlYXRlIGEgbmV3IHN0YXRlIHJlcHJlc2VudGluZyB0aGlzIHN0YXRlLCB3aXRoIGEgdGVtcG9yYXJ5IHNoaWZ0CgkgICAgLy8gdG8gYSBkaWZmZXJlbnQgbW9kZSB0byBvdXRwdXQgYSBzaW5nbGUgdmFsdWUuCgkgICAgU3RhdGUucHJvdG90eXBlLnNoaWZ0QW5kQXBwZW5kID0gZnVuY3Rpb24gKG1vZGUsIHZhbHVlKSB7CgkgICAgICAgIC8vIGFzc2VydCBiaW5hcnlTaGlmdEJ5dGVDb3VudCA9PT0gMCAmJiB0aGlzLm1vZGUgIT09IG1vZGU7CgkgICAgICAgIHZhciB0b2tlbiA9IHRoaXMudG9rZW47CgkgICAgICAgIHZhciB0aGlzTW9kZUJpdENvdW50ID0gdGhpcy5tb2RlID09PSBFbmNvZGVyQ29uc3RhbnRzLk1PREVfRElHSVQgPyA0IDogNTsKCSAgICAgICAgLy8gU2hpZnRzIGV4aXN0IG9ubHkgdG8gVVBQRVIgYW5kIFBVTkNULCBib3RoIHdpdGggdG9rZW5zIHNpemUgNS4KCSAgICAgICAgdG9rZW4gPSBUb2tlbkhlbHBlcnMuYWRkKHRva2VuLCBTaGlmdFRhYmxlLlNISUZUX1RBQkxFW3RoaXMubW9kZV1bbW9kZV0sIHRoaXNNb2RlQml0Q291bnQpOwoJICAgICAgICB0b2tlbiA9IFRva2VuSGVscGVycy5hZGQodG9rZW4sIHZhbHVlLCA1KTsKCSAgICAgICAgcmV0dXJuIG5ldyBTdGF0ZSh0b2tlbiwgdGhpcy5tb2RlLCAwLCB0aGlzLmJpdENvdW50ICsgdGhpc01vZGVCaXRDb3VudCArIDUpOwoJICAgIH07CgkgICAgLy8gQ3JlYXRlIGEgbmV3IHN0YXRlIHJlcHJlc2VudGluZyB0aGlzIHN0YXRlLCBidXQgYW4gYWRkaXRpb25hbCBjaGFyYWN0ZXIKCSAgICAvLyBvdXRwdXQgaW4gQmluYXJ5IFNoaWZ0IG1vZGUuCgkgICAgU3RhdGUucHJvdG90eXBlLmFkZEJpbmFyeVNoaWZ0Q2hhciA9IGZ1bmN0aW9uIChpbmRleCkgewoJICAgICAgICB2YXIgdG9rZW4gPSB0aGlzLnRva2VuOwoJICAgICAgICB2YXIgbW9kZSA9IHRoaXMubW9kZTsKCSAgICAgICAgdmFyIGJpdENvdW50ID0gdGhpcy5iaXRDb3VudDsKCSAgICAgICAgaWYgKHRoaXMubW9kZSA9PT0gRW5jb2RlckNvbnN0YW50cy5NT0RFX1BVTkNUIHx8IHRoaXMubW9kZSA9PT0gRW5jb2RlckNvbnN0YW50cy5NT0RFX0RJR0lUKSB7CgkgICAgICAgICAgICAvLyBhc3NlcnQgYmluYXJ5U2hpZnRCeXRlQ291bnQgPT09IDA7CgkgICAgICAgICAgICB2YXIgbGF0Y2ggPSBMYXRjaFRhYmxlLkxBVENIX1RBQkxFW21vZGVdW0VuY29kZXJDb25zdGFudHMuTU9ERV9VUFBFUl07CgkgICAgICAgICAgICB0b2tlbiA9IFRva2VuSGVscGVycy5hZGQodG9rZW4sIGxhdGNoICYgMHhmZmZmLCBsYXRjaCA+PiAxNik7CgkgICAgICAgICAgICBiaXRDb3VudCArPSBsYXRjaCA+PiAxNjsKCSAgICAgICAgICAgIG1vZGUgPSBFbmNvZGVyQ29uc3RhbnRzLk1PREVfVVBQRVI7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGRlbHRhQml0Q291bnQgPSB0aGlzLmJpbmFyeVNoaWZ0Qnl0ZUNvdW50ID09PSAwIHx8IHRoaXMuYmluYXJ5U2hpZnRCeXRlQ291bnQgPT09IDMxCgkgICAgICAgICAgICA/IDE4CgkgICAgICAgICAgICA6IHRoaXMuYmluYXJ5U2hpZnRCeXRlQ291bnQgPT09IDYyCgkgICAgICAgICAgICAgICAgPyA5CgkgICAgICAgICAgICAgICAgOiA4OwoJICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IFN0YXRlKHRva2VuLCBtb2RlLCB0aGlzLmJpbmFyeVNoaWZ0Qnl0ZUNvdW50ICsgMSwgYml0Q291bnQgKyBkZWx0YUJpdENvdW50KTsKCSAgICAgICAgaWYgKHJlc3VsdC5iaW5hcnlTaGlmdEJ5dGVDb3VudCA9PT0gMjA0NyArIDMxKSB7CgkgICAgICAgICAgICAvLyBUaGUgc3RyaW5nIGlzIGFzIGxvbmcgYXMgaXQncyBhbGxvd2VkIHRvIGJlLiAgV2Ugc2hvdWxkIGVuZCBpdC4KCSAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5lbmRCaW5hcnlTaGlmdChpbmRleCArIDEpOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiByZXN1bHQ7CgkgICAgfTsKCSAgICAvLyBDcmVhdGUgdGhlIHN0YXRlIGlkZW50aWNhbCB0byB0aGlzIG9uZSwgYnV0IHdlIGFyZSBubyBsb25nZXIgaW4KCSAgICAvLyBCaW5hcnkgU2hpZnQgbW9kZS4KCSAgICBTdGF0ZS5wcm90b3R5cGUuZW5kQmluYXJ5U2hpZnQgPSBmdW5jdGlvbiAoaW5kZXgpIHsKCSAgICAgICAgaWYgKHRoaXMuYmluYXJ5U2hpZnRCeXRlQ291bnQgPT09IDApIHsKCSAgICAgICAgICAgIHJldHVybiB0aGlzOwoJICAgICAgICB9CgkgICAgICAgIHZhciB0b2tlbiA9IHRoaXMudG9rZW47CgkgICAgICAgIHRva2VuID0gVG9rZW5IZWxwZXJzLmFkZEJpbmFyeVNoaWZ0KHRva2VuLCBpbmRleCAtIHRoaXMuYmluYXJ5U2hpZnRCeXRlQ291bnQsIHRoaXMuYmluYXJ5U2hpZnRCeXRlQ291bnQpOwoJICAgICAgICAvLyBhc3NlcnQgdG9rZW4uZ2V0VG90YWxCaXRDb3VudCgpID09PSB0aGlzLmJpdENvdW50OwoJICAgICAgICByZXR1cm4gbmV3IFN0YXRlKHRva2VuLCB0aGlzLm1vZGUsIDAsIHRoaXMuYml0Q291bnQpOwoJICAgIH07CgkgICAgLy8gUmV0dXJucyB0cnVlIGlmICJ0aGlzIiBzdGF0ZSBpcyBiZXR0ZXIgKGVxdWFsOiBvcikgdG8gYmUgaW4gdGhhbiAidGhhdCIKCSAgICAvLyBzdGF0ZSB1bmRlciBhbGwgcG9zc2libGUgY2lyY3Vtc3RhbmNlcy4KCSAgICBTdGF0ZS5wcm90b3R5cGUuaXNCZXR0ZXJUaGFuT3JFcXVhbFRvID0gZnVuY3Rpb24gKG90aGVyKSB7CgkgICAgICAgIHZhciBuZXdNb2RlQml0Q291bnQgPSB0aGlzLmJpdENvdW50ICsgKExhdGNoVGFibGUuTEFUQ0hfVEFCTEVbdGhpcy5tb2RlXVtvdGhlci5tb2RlXSA+PiAxNik7CgkgICAgICAgIGlmICh0aGlzLmJpbmFyeVNoaWZ0Qnl0ZUNvdW50IDwgb3RoZXIuYmluYXJ5U2hpZnRCeXRlQ291bnQpIHsKCSAgICAgICAgICAgIC8vIGFkZCBhZGRpdGlvbmFsIEIvUyBlbmNvZGluZyBjb3N0IG9mIG90aGVyLCBpZiBhbnkKCSAgICAgICAgICAgIG5ld01vZGVCaXRDb3VudCArPQoJICAgICAgICAgICAgICAgIFN0YXRlLmNhbGN1bGF0ZUJpbmFyeVNoaWZ0Q29zdChvdGhlcikgLQoJICAgICAgICAgICAgICAgICAgICBTdGF0ZS5jYWxjdWxhdGVCaW5hcnlTaGlmdENvc3QodGhpcyk7CgkgICAgICAgIH0KCSAgICAgICAgZWxzZSBpZiAodGhpcy5iaW5hcnlTaGlmdEJ5dGVDb3VudCA+IG90aGVyLmJpbmFyeVNoaWZ0Qnl0ZUNvdW50ICYmCgkgICAgICAgICAgICBvdGhlci5iaW5hcnlTaGlmdEJ5dGVDb3VudCA+IDApIHsKCSAgICAgICAgICAgIC8vIG1heGltdW0gcG9zc2libGUgYWRkaXRpb25hbCBjb3N0IChpdDogaCkKCSAgICAgICAgICAgIG5ld01vZGVCaXRDb3VudCArPSAxMDsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gbmV3TW9kZUJpdENvdW50IDw9IG90aGVyLmJpdENvdW50OwoJICAgIH07CgkgICAgU3RhdGUucHJvdG90eXBlLnRvQml0QXJyYXkgPSBmdW5jdGlvbiAodGV4dCkgewoJICAgICAgICB2YXIgZV8xLCBfYTsKCSAgICAgICAgLy8gUmV2ZXJzZSB0aGUgdG9rZW5zLCBzbyB0aGF0IHRoZXkgYXJlIGluIHRoZSBvcmRlciB0aGF0IHRoZXkgc2hvdWxkCgkgICAgICAgIC8vIGJlIG91dHB1dAoJICAgICAgICB2YXIgc3ltYm9scyA9IFtdOwoJICAgICAgICBmb3IgKHZhciB0b2tlbiA9IHRoaXMuZW5kQmluYXJ5U2hpZnQodGV4dC5sZW5ndGgpLnRva2VuOyB0b2tlbiAhPT0gbnVsbDsgdG9rZW4gPSB0b2tlbi5nZXRQcmV2aW91cygpKSB7CgkgICAgICAgICAgICBzeW1ib2xzLnVuc2hpZnQodG9rZW4pOwoJICAgICAgICB9CgkgICAgICAgIHZhciBiaXRBcnJheSA9IG5ldyBCaXRBcnJheV8xLmRlZmF1bHQoKTsKCSAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgIC8vIEFkZCBlYWNoIHRva2VuIHRvIHRoZSByZXN1bHQuCgkgICAgICAgICAgICBmb3IgKHZhciBzeW1ib2xzXzEgPSBfX3ZhbHVlcyhzeW1ib2xzKSwgc3ltYm9sc18xXzEgPSBzeW1ib2xzXzEubmV4dCgpOyAhc3ltYm9sc18xXzEuZG9uZTsgc3ltYm9sc18xXzEgPSBzeW1ib2xzXzEubmV4dCgpKSB7CgkgICAgICAgICAgICAgICAgdmFyIHN5bWJvbCA9IHN5bWJvbHNfMV8xLnZhbHVlOwoJICAgICAgICAgICAgICAgIHN5bWJvbC5hcHBlbmRUbyhiaXRBcnJheSwgdGV4dCk7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH0KCSAgICAgICAgZmluYWxseSB7CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIGlmIChzeW1ib2xzXzFfMSAmJiAhc3ltYm9sc18xXzEuZG9uZSAmJiAoX2EgPSBzeW1ib2xzXzEucmV0dXJuKSkgX2EuY2FsbChzeW1ib2xzXzEpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfQoJICAgICAgICB9CgkgICAgICAgIC8vIGFzc2VydCBiaXRBcnJheS5nZXRTaXplKCkgPT09IHRoaXMuYml0Q291bnQ7CgkgICAgICAgIHJldHVybiBiaXRBcnJheTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEBPdmVycmlkZQoJICAgICAqLwoJICAgIFN0YXRlLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHsKCSAgICAgICAgcmV0dXJuIFN0cmluZ1V0aWxzXzEuZGVmYXVsdC5mb3JtYXQoJyVzIGJpdHM9JWQgYnl0ZXM9JWQnLCBFbmNvZGVyQ29uc3RhbnRzLk1PREVfTkFNRVNbdGhpcy5tb2RlXSwgdGhpcy5iaXRDb3VudCwgdGhpcy5iaW5hcnlTaGlmdEJ5dGVDb3VudCk7CgkgICAgfTsKCSAgICBTdGF0ZS5jYWxjdWxhdGVCaW5hcnlTaGlmdENvc3QgPSBmdW5jdGlvbiAoc3RhdGUpIHsKCSAgICAgICAgaWYgKHN0YXRlLmJpbmFyeVNoaWZ0Qnl0ZUNvdW50ID4gNjIpIHsKCSAgICAgICAgICAgIHJldHVybiAyMTsgLy8gQi9TIHdpdGggZXh0ZW5kZWQgbGVuZ3RoCgkgICAgICAgIH0KCSAgICAgICAgaWYgKHN0YXRlLmJpbmFyeVNoaWZ0Qnl0ZUNvdW50ID4gMzEpIHsKCSAgICAgICAgICAgIHJldHVybiAyMDsgLy8gdHdvIEIvUwoJICAgICAgICB9CgkgICAgICAgIGlmIChzdGF0ZS5iaW5hcnlTaGlmdEJ5dGVDb3VudCA+IDApIHsKCSAgICAgICAgICAgIHJldHVybiAxMDsgLy8gb25lIEIvUwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiAwOwoJICAgIH07CgkgICAgU3RhdGUuSU5JVElBTF9TVEFURSA9IG5ldyBTdGF0ZShFbmNvZGVyQ29uc3RhbnRzLkVNUFRZX1RPS0VOLCBFbmNvZGVyQ29uc3RhbnRzLk1PREVfVVBQRVIsIDAsIDApOwoJICAgIHJldHVybiBTdGF0ZTsKCX0oKSk7CglleHBvcnRzLmRlZmF1bHQgPSBTdGF0ZTsKCgl9KTsKCgl2YXIgQ2hhck1hcCA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6IHRydWUgfSk7CglleHBvcnRzLkNIQVJfTUFQID0gZXhwb3J0cy5zdGF0aWNfQ0hBUl9NQVAgPSB2b2lkIDA7CgoKCglmdW5jdGlvbiBzdGF0aWNfQ0hBUl9NQVAoQ0hBUl9NQVApIHsKCSAgICB2YXIgc3BhY2VDaGFyQ29kZSA9IFN0cmluZ1V0aWxzXzEuZGVmYXVsdC5nZXRDaGFyQ29kZSgnICcpOwoJICAgIHZhciBwb2ludENoYXJDb2RlID0gU3RyaW5nVXRpbHNfMS5kZWZhdWx0LmdldENoYXJDb2RlKCcuJyk7CgkgICAgdmFyIGNvbW1hQ2hhckNvZGUgPSBTdHJpbmdVdGlsc18xLmRlZmF1bHQuZ2V0Q2hhckNvZGUoJywnKTsKCSAgICBDSEFSX01BUFtFbmNvZGVyQ29uc3RhbnRzLk1PREVfVVBQRVJdW3NwYWNlQ2hhckNvZGVdID0gMTsKCSAgICB2YXIgelVwcGVyQ2hhckNvZGUgPSBTdHJpbmdVdGlsc18xLmRlZmF1bHQuZ2V0Q2hhckNvZGUoJ1onKTsKCSAgICB2YXIgYVVwcGVyQ2hhckNvZGUgPSBTdHJpbmdVdGlsc18xLmRlZmF1bHQuZ2V0Q2hhckNvZGUoJ0EnKTsKCSAgICBmb3IgKHZhciBjID0gYVVwcGVyQ2hhckNvZGU7IGMgPD0gelVwcGVyQ2hhckNvZGU7IGMrKykgewoJICAgICAgICBDSEFSX01BUFtFbmNvZGVyQ29uc3RhbnRzLk1PREVfVVBQRVJdW2NdID0gYyAtIGFVcHBlckNoYXJDb2RlICsgMjsKCSAgICB9CgkgICAgQ0hBUl9NQVBbRW5jb2RlckNvbnN0YW50cy5NT0RFX0xPV0VSXVtzcGFjZUNoYXJDb2RlXSA9IDE7CgkgICAgdmFyIHpMb3dlckNoYXJDb2RlID0gU3RyaW5nVXRpbHNfMS5kZWZhdWx0LmdldENoYXJDb2RlKCd6Jyk7CgkgICAgdmFyIGFMb3dlckNoYXJDb2RlID0gU3RyaW5nVXRpbHNfMS5kZWZhdWx0LmdldENoYXJDb2RlKCdhJyk7CgkgICAgZm9yICh2YXIgYyA9IGFMb3dlckNoYXJDb2RlOyBjIDw9IHpMb3dlckNoYXJDb2RlOyBjKyspIHsKCSAgICAgICAgQ0hBUl9NQVBbRW5jb2RlckNvbnN0YW50cy5NT0RFX0xPV0VSXVtjXSA9IGMgLSBhTG93ZXJDaGFyQ29kZSArIDI7CgkgICAgfQoJICAgIENIQVJfTUFQW0VuY29kZXJDb25zdGFudHMuTU9ERV9ESUdJVF1bc3BhY2VDaGFyQ29kZV0gPSAxOwoJICAgIHZhciBuaW5lQ2hhckNvZGUgPSBTdHJpbmdVdGlsc18xLmRlZmF1bHQuZ2V0Q2hhckNvZGUoJzknKTsKCSAgICB2YXIgemVyb0NoYXJDb2RlID0gU3RyaW5nVXRpbHNfMS5kZWZhdWx0LmdldENoYXJDb2RlKCcwJyk7CgkgICAgZm9yICh2YXIgYyA9IHplcm9DaGFyQ29kZTsgYyA8PSBuaW5lQ2hhckNvZGU7IGMrKykgewoJICAgICAgICBDSEFSX01BUFtFbmNvZGVyQ29uc3RhbnRzLk1PREVfRElHSVRdW2NdID0gYyAtIHplcm9DaGFyQ29kZSArIDI7CgkgICAgfQoJICAgIENIQVJfTUFQW0VuY29kZXJDb25zdGFudHMuTU9ERV9ESUdJVF1bY29tbWFDaGFyQ29kZV0gPSAxMjsKCSAgICBDSEFSX01BUFtFbmNvZGVyQ29uc3RhbnRzLk1PREVfRElHSVRdW3BvaW50Q2hhckNvZGVdID0gMTM7CgkgICAgdmFyIG1peGVkVGFibGUgPSBbCgkgICAgICAgICdceDAwJywKCSAgICAgICAgJyAnLAoJICAgICAgICAnXHgwMScsCgkgICAgICAgICdceDAyJywKCSAgICAgICAgJ1x4MDMnLAoJICAgICAgICAnXHgwNCcsCgkgICAgICAgICdceDA1JywKCSAgICAgICAgJ1x4MDYnLAoJICAgICAgICAnXHgwNycsCgkgICAgICAgICdcYicsCgkgICAgICAgICdcdCcsCgkgICAgICAgICdcbicsCgkgICAgICAgICdceDBiJywKCSAgICAgICAgJ1xmJywKCSAgICAgICAgJ1xyJywKCSAgICAgICAgJ1x4MWInLAoJICAgICAgICAnXHgxYycsCgkgICAgICAgICdceDFkJywKCSAgICAgICAgJ1x4MWUnLAoJICAgICAgICAnXHgxZicsCgkgICAgICAgICdAJywKCSAgICAgICAgJ1xcJywKCSAgICAgICAgJ14nLAoJICAgICAgICAnXycsCgkgICAgICAgICdgJywKCSAgICAgICAgJ3wnLAoJICAgICAgICAnficsCgkgICAgICAgICdceDdmJwoJICAgIF07CgkgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtaXhlZFRhYmxlLmxlbmd0aDsgaSsrKSB7CgkgICAgICAgIENIQVJfTUFQW0VuY29kZXJDb25zdGFudHMuTU9ERV9NSVhFRF1bU3RyaW5nVXRpbHNfMS5kZWZhdWx0LmdldENoYXJDb2RlKG1peGVkVGFibGVbaV0pXSA9IGk7CgkgICAgfQoJICAgIHZhciBwdW5jdFRhYmxlID0gWwoJICAgICAgICAnXHgwMCcsCgkgICAgICAgICdccicsCgkgICAgICAgICdceDAwJywKCSAgICAgICAgJ1x4MDAnLAoJICAgICAgICAnXHgwMCcsCgkgICAgICAgICdceDAwJywKCSAgICAgICAgJyEnLAoJICAgICAgICAnXCcnLAoJICAgICAgICAnIycsCgkgICAgICAgICckJywKCSAgICAgICAgJyUnLAoJICAgICAgICAnJicsCgkgICAgICAgICdcJycsCgkgICAgICAgICcoJywKCSAgICAgICAgJyknLAoJICAgICAgICAnKicsCgkgICAgICAgICcrJywKCSAgICAgICAgJywnLAoJICAgICAgICAnLScsCgkgICAgICAgICcuJywKCSAgICAgICAgJy8nLAoJICAgICAgICAnOicsCgkgICAgICAgICc7JywKCSAgICAgICAgJzwnLAoJICAgICAgICAnPScsCgkgICAgICAgICc+JywKCSAgICAgICAgJz8nLAoJICAgICAgICAnWycsCgkgICAgICAgICddJywKCSAgICAgICAgJ3snLAoJICAgICAgICAnfScKCSAgICBdOwoJICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHVuY3RUYWJsZS5sZW5ndGg7IGkrKykgewoJICAgICAgICBpZiAoU3RyaW5nVXRpbHNfMS5kZWZhdWx0LmdldENoYXJDb2RlKHB1bmN0VGFibGVbaV0pID4gMCkgewoJICAgICAgICAgICAgQ0hBUl9NQVBbRW5jb2RlckNvbnN0YW50cy5NT0RFX1BVTkNUXVtTdHJpbmdVdGlsc18xLmRlZmF1bHQuZ2V0Q2hhckNvZGUocHVuY3RUYWJsZVtpXSldID0gaTsKCSAgICAgICAgfQoJICAgIH0KCSAgICByZXR1cm4gQ0hBUl9NQVA7Cgl9CglleHBvcnRzLnN0YXRpY19DSEFSX01BUCA9IHN0YXRpY19DSEFSX01BUDsKCWV4cG9ydHMuQ0hBUl9NQVAgPSBzdGF0aWNfQ0hBUl9NQVAoQXJyYXlzXzEuZGVmYXVsdC5jcmVhdGVJbnQzMkFycmF5KDUsIDI1NikpOwoKCX0pOwoKCXZhciBIaWdoTGV2ZWxFbmNvZGVyXzEgPSBjcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CgkvKgoJICogQ29weXJpZ2h0IDIwMTMgWlhpbmcgYXV0aG9ycwoJICoKCSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwoJICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgoJICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkgKgoJICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCSAqCgkgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCgkgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAoJICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCgkgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCSAqLwoJdmFyIF9fdmFsdWVzID0gKGNvbW1vbmpzR2xvYmFsICYmIGNvbW1vbmpzR2xvYmFsLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7CgkgICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSAiZnVuY3Rpb24iICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7CgkgICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7CgkgICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSAibnVtYmVyIikgcmV0dXJuIHsKCSAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkgewoJICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDsKCSAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTsKCSAgICAgICAgfQoJICAgIH07CgkgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gIk9iamVjdCBpcyBub3QgaXRlcmFibGUuIiA6ICJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuIik7Cgl9OwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCS8vIGltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKCS8vIGltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7CgoJLy8gaW1wb3J0IGphdmEudXRpbC5Db21wYXJhdG9yOwoJLy8gaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKCS8vIGltcG9ydCBqYXZhLnV0aWwuTGlua2VkTGlzdDsKCgoKCgoJLyoqCgkgKiBUaGlzIHByb2R1Y2VzIG5lYXJseSBvcHRpbWFsIGVuY29kaW5ncyBvZiB0ZXh0IGludG8gdGhlIGZpcnN0LWxldmVsIG9mCgkgKiBlbmNvZGluZyB1c2VkIGJ5IEF6dGVjIGNvZGUuCgkgKgoJICogSXQgdXNlcyBhIGR5bmFtaWMgYWxnb3JpdGhtLiAgRm9yIGVhY2ggcHJlZml4IG9mIHRoZSBzdHJpbmcsIGl0IGRldGVybWluZXMKCSAqIGEgc2V0IG9mIGVuY29kaW5ncyB0aGF0IGNvdWxkIGxlYWQgdG8gdGhpcyBwcmVmaXguICBXZSByZXBlYXRlZGx5IGFkZCBhCgkgKiBjaGFyYWN0ZXIgYW5kIGdlbmVyYXRlIGEgbmV3IHNldCBvZiBvcHRpbWFsIGVuY29kaW5ncyB1bnRpbCB3ZSBoYXZlIHJlYWQKCSAqIHRocm91Z2ggdGhlIGVudGlyZSBpbnB1dC4KCSAqCgkgKiBAYXV0aG9yIEZyYW5rIFllbGxpbgoJICogQGF1dGhvciBSdXN0YW0gQWJkdWxsYWV2CgkgKi8KCXZhciBIaWdoTGV2ZWxFbmNvZGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgewoJICAgIGZ1bmN0aW9uIEhpZ2hMZXZlbEVuY29kZXIodGV4dCkgewoJICAgICAgICB0aGlzLnRleHQgPSB0ZXh0OwoJICAgIH0KCSAgICAvKioKCSAgICAgKiBAcmV0dXJuIHRleHQgcmVwcmVzZW50ZWQgYnkgdGhpcyBlbmNvZGVyIGVuY29kZWQgYXMgYSB7QGxpbmsgQml0QXJyYXl9CgkgICAgICovCgkgICAgSGlnaExldmVsRW5jb2Rlci5wcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24gKCkgewoJICAgICAgICB2YXIgc3BhY2VDaGFyQ29kZSA9IFN0cmluZ1V0aWxzXzEuZGVmYXVsdC5nZXRDaGFyQ29kZSgnICcpOwoJICAgICAgICB2YXIgbGluZUJyZWFrQ2hhckNvZGUgPSBTdHJpbmdVdGlsc18xLmRlZmF1bHQuZ2V0Q2hhckNvZGUoJ1xuJyk7CgkgICAgICAgIHZhciBzdGF0ZXMgPSBDb2xsZWN0aW9uc18xLmRlZmF1bHQuc2luZ2xldG9uTGlzdChTdGF0ZV8xLmRlZmF1bHQuSU5JVElBTF9TVEFURSk7CgkgICAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLnRleHQubGVuZ3RoOyBpbmRleCsrKSB7CgkgICAgICAgICAgICB2YXIgcGFpckNvZGUgPSB2b2lkIDA7CgkgICAgICAgICAgICB2YXIgbmV4dENoYXIgPSBpbmRleCArIDEgPCB0aGlzLnRleHQubGVuZ3RoID8gdGhpcy50ZXh0W2luZGV4ICsgMV0gOiAwOwoJICAgICAgICAgICAgc3dpdGNoICh0aGlzLnRleHRbaW5kZXhdKSB7CgkgICAgICAgICAgICAgICAgY2FzZSBTdHJpbmdVdGlsc18xLmRlZmF1bHQuZ2V0Q2hhckNvZGUoJ1xyJyk6CgkgICAgICAgICAgICAgICAgICAgIHBhaXJDb2RlID0gbmV4dENoYXIgPT09IGxpbmVCcmVha0NoYXJDb2RlID8gMiA6IDA7CgkgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgIGNhc2UgU3RyaW5nVXRpbHNfMS5kZWZhdWx0LmdldENoYXJDb2RlKCcuJyk6CgkgICAgICAgICAgICAgICAgICAgIHBhaXJDb2RlID0gbmV4dENoYXIgPT09IHNwYWNlQ2hhckNvZGUgPyAzIDogMDsKCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgY2FzZSBTdHJpbmdVdGlsc18xLmRlZmF1bHQuZ2V0Q2hhckNvZGUoJywnKToKCSAgICAgICAgICAgICAgICAgICAgcGFpckNvZGUgPSBuZXh0Q2hhciA9PT0gc3BhY2VDaGFyQ29kZSA/IDQgOiAwOwoJICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICBjYXNlIFN0cmluZ1V0aWxzXzEuZGVmYXVsdC5nZXRDaGFyQ29kZSgnOicpOgoJICAgICAgICAgICAgICAgICAgICBwYWlyQ29kZSA9IG5leHRDaGFyID09PSBzcGFjZUNoYXJDb2RlID8gNSA6IDA7CgkgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgIGRlZmF1bHQ6CgkgICAgICAgICAgICAgICAgICAgIHBhaXJDb2RlID0gMDsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGlmIChwYWlyQ29kZSA+IDApIHsKCSAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIG9uZSBvZiB0aGUgZm91ciBzcGVjaWFsIFBVTkNUIHBhaXJzLiAgVHJlYXQgdGhlbSBzcGVjaWFsbHkuCgkgICAgICAgICAgICAgICAgLy8gR2V0IGEgbmV3IHNldCBvZiBzdGF0ZXMgZm9yIHRoZSB0d28gbmV3IGNoYXJhY3RlcnMuCgkgICAgICAgICAgICAgICAgc3RhdGVzID0gSGlnaExldmVsRW5jb2Rlci51cGRhdGVTdGF0ZUxpc3RGb3JQYWlyKHN0YXRlcywgaW5kZXgsIHBhaXJDb2RlKTsKCSAgICAgICAgICAgICAgICBpbmRleCsrOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgLy8gR2V0IGEgbmV3IHNldCBvZiBzdGF0ZXMgZm9yIHRoZSBuZXcgY2hhcmFjdGVyLgoJICAgICAgICAgICAgICAgIHN0YXRlcyA9IHRoaXMudXBkYXRlU3RhdGVMaXN0Rm9yQ2hhcihzdGF0ZXMsIGluZGV4KTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICAvLyBXZSBhcmUgbGVmdCB3aXRoIGEgc2V0IG9mIHN0YXRlcy4gIEZpbmQgdGhlIHNob3J0ZXN0IG9uZS4KCSAgICAgICAgdmFyIG1pblN0YXRlID0gQ29sbGVjdGlvbnNfMS5kZWZhdWx0Lm1pbihzdGF0ZXMsIGZ1bmN0aW9uIChhLCBiKSB7CgkgICAgICAgICAgICByZXR1cm4gYS5nZXRCaXRDb3VudCgpIC0gYi5nZXRCaXRDb3VudCgpOwoJICAgICAgICB9KTsKCSAgICAgICAgLy8gQ29udmVydCBpdCB0byBhIGJpdCBhcnJheSwgYW5kIHJldHVybi4KCSAgICAgICAgcmV0dXJuIG1pblN0YXRlLnRvQml0QXJyYXkodGhpcy50ZXh0KTsKCSAgICB9OwoJICAgIC8vIFdlIHVwZGF0ZSBhIHNldCBvZiBzdGF0ZXMgZm9yIGEgbmV3IGNoYXJhY3RlciBieSB1cGRhdGluZyBlYWNoIHN0YXRlCgkgICAgLy8gZm9yIHRoZSBuZXcgY2hhcmFjdGVyLCBtZXJnaW5nIHRoZSByZXN1bHRzLCBhbmQgdGhlbiByZW1vdmluZyB0aGUKCSAgICAvLyBub24tb3B0aW1hbCBzdGF0ZXMuCgkgICAgSGlnaExldmVsRW5jb2Rlci5wcm90b3R5cGUudXBkYXRlU3RhdGVMaXN0Rm9yQ2hhciA9IGZ1bmN0aW9uIChzdGF0ZXMsIGluZGV4KSB7CgkgICAgICAgIHZhciBlXzEsIF9hOwoJICAgICAgICB2YXIgcmVzdWx0ID0gW107CgkgICAgICAgIHRyeSB7CgkgICAgICAgICAgICBmb3IgKHZhciBzdGF0ZXNfMSA9IF9fdmFsdWVzKHN0YXRlcyksIHN0YXRlc18xXzEgPSBzdGF0ZXNfMS5uZXh0KCk7ICFzdGF0ZXNfMV8xLmRvbmU7IHN0YXRlc18xXzEgPSBzdGF0ZXNfMS5uZXh0KCkpIHsKCSAgICAgICAgICAgICAgICB2YXIgc3RhdGUgPSBzdGF0ZXNfMV8xLnZhbHVlIC8qU3RhdGUqLzsKCSAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVN0YXRlRm9yQ2hhcihzdGF0ZSwgaW5kZXgsIHJlc3VsdCk7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH0KCSAgICAgICAgZmluYWxseSB7CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIGlmIChzdGF0ZXNfMV8xICYmICFzdGF0ZXNfMV8xLmRvbmUgJiYgKF9hID0gc3RhdGVzXzEucmV0dXJuKSkgX2EuY2FsbChzdGF0ZXNfMSk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIEhpZ2hMZXZlbEVuY29kZXIuc2ltcGxpZnlTdGF0ZXMocmVzdWx0KTsKCSAgICB9OwoJICAgIC8vIFJldHVybiBhIHNldCBvZiBzdGF0ZXMgdGhhdCByZXByZXNlbnQgdGhlIHBvc3NpYmxlIHdheXMgb2YgdXBkYXRpbmcgdGhpcwoJICAgIC8vIHN0YXRlIGZvciB0aGUgbmV4dCBjaGFyYWN0ZXIuICBUaGUgcmVzdWx0aW5nIHNldCBvZiBzdGF0ZXMgYXJlIGFkZGVkIHRvCgkgICAgLy8gdGhlICJyZXN1bHQiIGxpc3QuCgkgICAgSGlnaExldmVsRW5jb2Rlci5wcm90b3R5cGUudXBkYXRlU3RhdGVGb3JDaGFyID0gZnVuY3Rpb24gKHN0YXRlLCBpbmRleCwgcmVzdWx0KSB7CgkgICAgICAgIHZhciBjaCA9ICh0aGlzLnRleHRbaW5kZXhdICYgMHhmZik7CgkgICAgICAgIHZhciBjaGFySW5DdXJyZW50VGFibGUgPSBDaGFyTWFwLkNIQVJfTUFQW3N0YXRlLmdldE1vZGUoKV1bY2hdID4gMDsKCSAgICAgICAgdmFyIHN0YXRlTm9CaW5hcnkgPSBudWxsOwoJICAgICAgICBmb3IgKHZhciBtb2RlIC8qaW50Ki8gPSAwOyBtb2RlIDw9IEVuY29kZXJDb25zdGFudHMuTU9ERV9QVU5DVDsgbW9kZSsrKSB7CgkgICAgICAgICAgICB2YXIgY2hhckluTW9kZSA9IENoYXJNYXAuQ0hBUl9NQVBbbW9kZV1bY2hdOwoJICAgICAgICAgICAgaWYgKGNoYXJJbk1vZGUgPiAwKSB7CgkgICAgICAgICAgICAgICAgaWYgKHN0YXRlTm9CaW5hcnkgPT0gbnVsbCkgewoJICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IGNyZWF0ZSBzdGF0ZU5vQmluYXJ5IHRoZSBmaXJzdCB0aW1lIGl0J3MgcmVxdWlyZWQuCgkgICAgICAgICAgICAgICAgICAgIHN0YXRlTm9CaW5hcnkgPSBzdGF0ZS5lbmRCaW5hcnlTaGlmdChpbmRleCk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIC8vIFRyeSBnZW5lcmF0aW5nIHRoZSBjaGFyYWN0ZXIgYnkgbGF0Y2hpbmcgdG8gaXRzIG1vZGUKCSAgICAgICAgICAgICAgICBpZiAoIWNoYXJJbkN1cnJlbnRUYWJsZSB8fAoJICAgICAgICAgICAgICAgICAgICBtb2RlID09PSBzdGF0ZS5nZXRNb2RlKCkgfHwKCSAgICAgICAgICAgICAgICAgICAgbW9kZSA9PT0gRW5jb2RlckNvbnN0YW50cy5NT0RFX0RJR0lUKSB7CgkgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBjaGFyYWN0ZXIgaXMgaW4gdGhlIGN1cnJlbnQgdGFibGUsIHdlIGRvbid0IHdhbnQgdG8gbGF0Y2ggdG8KCSAgICAgICAgICAgICAgICAgICAgLy8gYW55IG90aGVyIG1vZGUgZXhjZXB0IHBvc3NpYmx5IGRpZ2l0ICh3aGljaCB1c2VzIG9ubHkgNCBiaXRzKS4gIEFueQoJICAgICAgICAgICAgICAgICAgICAvLyBvdGhlciBsYXRjaCB3b3VsZCBiZSBlcXVhbGx5IHN1Y2Nlc3NmdWwgKmFmdGVyKiB0aGlzIGNoYXJhY3RlciwgYW5kCgkgICAgICAgICAgICAgICAgICAgIC8vIHNvIHdvdWxkbid0IHNhdmUgYW55IGJpdHMuCgkgICAgICAgICAgICAgICAgICAgIHZhciBsYXRjaFN0YXRlID0gc3RhdGVOb0JpbmFyeS5sYXRjaEFuZEFwcGVuZChtb2RlLCBjaGFySW5Nb2RlKTsKCSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobGF0Y2hTdGF0ZSk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIC8vIFRyeSBnZW5lcmF0aW5nIHRoZSBjaGFyYWN0ZXIgYnkgc3dpdGNoaW5nIHRvIGl0cyBtb2RlLgoJICAgICAgICAgICAgICAgIGlmICghY2hhckluQ3VycmVudFRhYmxlICYmCgkgICAgICAgICAgICAgICAgICAgIFNoaWZ0VGFibGUuU0hJRlRfVEFCTEVbc3RhdGUuZ2V0TW9kZSgpXVttb2RlXSA+PSAwKSB7CgkgICAgICAgICAgICAgICAgICAgIC8vIEl0IG5ldmVyIG1ha2VzIHNlbnNlIHRvIHRlbXBvcmFyaWx5IHNoaWZ0IHRvIGFub3RoZXIgbW9kZSBpZiB0aGUKCSAgICAgICAgICAgICAgICAgICAgLy8gY2hhcmFjdGVyIGV4aXN0cyBpbiB0aGUgY3VycmVudCBtb2RlLiAgVGhhdCBjYW4gbmV2ZXIgc2F2ZSBiaXRzLgoJICAgICAgICAgICAgICAgICAgICB2YXIgc2hpZnRTdGF0ZSA9IHN0YXRlTm9CaW5hcnkuc2hpZnRBbmRBcHBlbmQobW9kZSwgY2hhckluTW9kZSk7CgkgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHNoaWZ0U3RhdGUpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICBpZiAoc3RhdGUuZ2V0QmluYXJ5U2hpZnRCeXRlQ291bnQoKSA+IDAgfHwKCSAgICAgICAgICAgIENoYXJNYXAuQ0hBUl9NQVBbc3RhdGUuZ2V0TW9kZSgpXVtjaF0gPT09IDApIHsKCSAgICAgICAgICAgIC8vIEl0J3MgbmV2ZXIgd29ydGh3aGlsZSB0byBnbyBpbnRvIGJpbmFyeSBzaGlmdCBtb2RlIGlmIHlvdSdyZSBub3QgYWxyZWFkeQoJICAgICAgICAgICAgLy8gaW4gYmluYXJ5IHNoaWZ0IG1vZGUsIGFuZCB0aGUgY2hhcmFjdGVyIGV4aXN0cyBpbiB5b3VyIGN1cnJlbnQgbW9kZS4KCSAgICAgICAgICAgIC8vIFRoYXQgY2FuIG5ldmVyIHNhdmUgYml0cyBvdmVyIGp1c3Qgb3V0cHV0dGluZyB0aGUgY2hhciBpbiB0aGUgY3VycmVudCBtb2RlLgoJICAgICAgICAgICAgdmFyIGJpbmFyeVN0YXRlID0gc3RhdGUuYWRkQmluYXJ5U2hpZnRDaGFyKGluZGV4KTsKCSAgICAgICAgICAgIHJlc3VsdC5wdXNoKGJpbmFyeVN0YXRlKTsKCSAgICAgICAgfQoJICAgIH07CgkgICAgSGlnaExldmVsRW5jb2Rlci51cGRhdGVTdGF0ZUxpc3RGb3JQYWlyID0gZnVuY3Rpb24gKHN0YXRlcywgaW5kZXgsIHBhaXJDb2RlKSB7CgkgICAgICAgIHZhciBlXzIsIF9hOwoJICAgICAgICB2YXIgcmVzdWx0ID0gW107CgkgICAgICAgIHRyeSB7CgkgICAgICAgICAgICBmb3IgKHZhciBzdGF0ZXNfMiA9IF9fdmFsdWVzKHN0YXRlcyksIHN0YXRlc18yXzEgPSBzdGF0ZXNfMi5uZXh0KCk7ICFzdGF0ZXNfMl8xLmRvbmU7IHN0YXRlc18yXzEgPSBzdGF0ZXNfMi5uZXh0KCkpIHsKCSAgICAgICAgICAgICAgICB2YXIgc3RhdGUgPSBzdGF0ZXNfMl8xLnZhbHVlIC8qU3RhdGUqLzsKCSAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVN0YXRlRm9yUGFpcihzdGF0ZSwgaW5kZXgsIHBhaXJDb2RlLCByZXN1bHQpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGNhdGNoIChlXzJfMSkgeyBlXzIgPSB7IGVycm9yOiBlXzJfMSB9OyB9CgkgICAgICAgIGZpbmFsbHkgewoJICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICBpZiAoc3RhdGVzXzJfMSAmJiAhc3RhdGVzXzJfMS5kb25lICYmIChfYSA9IHN0YXRlc18yLnJldHVybikpIF9hLmNhbGwoc3RhdGVzXzIpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzIpIHRocm93IGVfMi5lcnJvcjsgfQoJICAgICAgICB9CgkgICAgICAgIHJldHVybiB0aGlzLnNpbXBsaWZ5U3RhdGVzKHJlc3VsdCk7CgkgICAgfTsKCSAgICBIaWdoTGV2ZWxFbmNvZGVyLnVwZGF0ZVN0YXRlRm9yUGFpciA9IGZ1bmN0aW9uIChzdGF0ZSwgaW5kZXgsIHBhaXJDb2RlLCByZXN1bHQpIHsKCSAgICAgICAgdmFyIHN0YXRlTm9CaW5hcnkgPSBzdGF0ZS5lbmRCaW5hcnlTaGlmdChpbmRleCk7CgkgICAgICAgIC8vIFBvc3NpYmlsaXR5IDEuICBMYXRjaCB0byBDLk1PREVfUFVOQ1QsIGFuZCB0aGVuIGFwcGVuZCB0aGlzIGNvZGUKCSAgICAgICAgcmVzdWx0LnB1c2goc3RhdGVOb0JpbmFyeS5sYXRjaEFuZEFwcGVuZChFbmNvZGVyQ29uc3RhbnRzLk1PREVfUFVOQ1QsIHBhaXJDb2RlKSk7CgkgICAgICAgIGlmIChzdGF0ZS5nZXRNb2RlKCkgIT09IEVuY29kZXJDb25zdGFudHMuTU9ERV9QVU5DVCkgewoJICAgICAgICAgICAgLy8gUG9zc2liaWxpdHkgMi4gIFNoaWZ0IHRvIEMuTU9ERV9QVU5DVCwgYW5kIHRoZW4gYXBwZW5kIHRoaXMgY29kZS4KCSAgICAgICAgICAgIC8vIEV2ZXJ5IHN0YXRlIGV4Y2VwdCBDLk1PREVfUFVOQ1QgKGhhbmRsZWQgYWJvdmUpIGNhbiBzaGlmdAoJICAgICAgICAgICAgcmVzdWx0LnB1c2goc3RhdGVOb0JpbmFyeS5zaGlmdEFuZEFwcGVuZChFbmNvZGVyQ29uc3RhbnRzLk1PREVfUFVOQ1QsIHBhaXJDb2RlKSk7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKHBhaXJDb2RlID09PSAzIHx8IHBhaXJDb2RlID09PSA0KSB7CgkgICAgICAgICAgICAvLyBib3RoIGNoYXJhY3RlcnMgYXJlIGluIERJR0lUUy4gIFNvbWV0aW1lcyBiZXR0ZXIgdG8ganVzdCBhZGQgdHdvIGRpZ2l0cwoJICAgICAgICAgICAgdmFyIGRpZ2l0U3RhdGUgPSBzdGF0ZU5vQmluYXJ5CgkgICAgICAgICAgICAgICAgLmxhdGNoQW5kQXBwZW5kKEVuY29kZXJDb25zdGFudHMuTU9ERV9ESUdJVCwgMTYgLSBwYWlyQ29kZSkgLy8gcGVyaW9kIG9yIGNvbW1hIGluIERJR0lUCgkgICAgICAgICAgICAgICAgLmxhdGNoQW5kQXBwZW5kKEVuY29kZXJDb25zdGFudHMuTU9ERV9ESUdJVCwgMSk7IC8vIHNwYWNlIGluIERJR0lUCgkgICAgICAgICAgICByZXN1bHQucHVzaChkaWdpdFN0YXRlKTsKCSAgICAgICAgfQoJICAgICAgICBpZiAoc3RhdGUuZ2V0QmluYXJ5U2hpZnRCeXRlQ291bnQoKSA+IDApIHsKCSAgICAgICAgICAgIC8vIEl0IG9ubHkgbWFrZXMgc2Vuc2UgdG8gZG8gdGhlIGNoYXJhY3RlcnMgYXMgYmluYXJ5IGlmIHdlJ3JlIGFscmVhZHkKCSAgICAgICAgICAgIC8vIGluIGJpbmFyeSBtb2RlLgoJICAgICAgICAgICAgdmFyIGJpbmFyeVN0YXRlID0gc3RhdGUKCSAgICAgICAgICAgICAgICAuYWRkQmluYXJ5U2hpZnRDaGFyKGluZGV4KQoJICAgICAgICAgICAgICAgIC5hZGRCaW5hcnlTaGlmdENoYXIoaW5kZXggKyAxKTsKCSAgICAgICAgICAgIHJlc3VsdC5wdXNoKGJpbmFyeVN0YXRlKTsKCSAgICAgICAgfQoJICAgIH07CgkgICAgSGlnaExldmVsRW5jb2Rlci5zaW1wbGlmeVN0YXRlcyA9IGZ1bmN0aW9uIChzdGF0ZXMpIHsKCSAgICAgICAgdmFyIGVfMywgX2EsIGVfNCwgX2I7CgkgICAgICAgIHZhciByZXN1bHQgPSBbXTsKCSAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgIGZvciAodmFyIHN0YXRlc18zID0gX192YWx1ZXMoc3RhdGVzKSwgc3RhdGVzXzNfMSA9IHN0YXRlc18zLm5leHQoKTsgIXN0YXRlc18zXzEuZG9uZTsgc3RhdGVzXzNfMSA9IHN0YXRlc18zLm5leHQoKSkgewoJICAgICAgICAgICAgICAgIHZhciBuZXdTdGF0ZSA9IHN0YXRlc18zXzEudmFsdWU7CgkgICAgICAgICAgICAgICAgdmFyIGFkZCA9IHRydWU7CgkgICAgICAgICAgICAgICAgdmFyIF9sb29wXzEgPSBmdW5jdGlvbiAob2xkU3RhdGUpIHsKCSAgICAgICAgICAgICAgICAgICAgaWYgKG9sZFN0YXRlLmlzQmV0dGVyVGhhbk9yRXF1YWxUbyhuZXdTdGF0ZSkpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIGFkZCA9IGZhbHNlOwoJICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJicmVhayI7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgaWYgKG5ld1N0YXRlLmlzQmV0dGVyVGhhbk9yRXF1YWxUbyhvbGRTdGF0ZSkpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0ZXJhdG9yLnJlbW92ZSgpOwoJICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmZpbHRlcihmdW5jdGlvbiAoeCkgeyByZXR1cm4geCAhPT0gb2xkU3RhdGU7IH0pOyAvLyByZW1vdmUgb2xkIHN0YXRlCgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB9OwoJICAgICAgICAgICAgICAgIHRyeSB7CgkgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHJlc3VsdF8xID0gKGVfNCA9IHZvaWQgMCwgX192YWx1ZXMocmVzdWx0KSksIHJlc3VsdF8xXzEgPSByZXN1bHRfMS5uZXh0KCk7ICFyZXN1bHRfMV8xLmRvbmU7IHJlc3VsdF8xXzEgPSByZXN1bHRfMS5uZXh0KCkpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvbGRTdGF0ZSA9IHJlc3VsdF8xXzEudmFsdWU7CgkgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdGVfMSA9IF9sb29wXzEob2xkU3RhdGUpOwoJICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlXzEgPT09ICJicmVhayIpCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgY2F0Y2ggKGVfNF8xKSB7IGVfNCA9IHsgZXJyb3I6IGVfNF8xIH07IH0KCSAgICAgICAgICAgICAgICBmaW5hbGx5IHsKCSAgICAgICAgICAgICAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHRfMV8xICYmICFyZXN1bHRfMV8xLmRvbmUgJiYgKF9iID0gcmVzdWx0XzEucmV0dXJuKSkgX2IuY2FsbChyZXN1bHRfMSk7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzQpIHRocm93IGVfNC5lcnJvcjsgfQoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBpZiAoYWRkKSB7CgkgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ld1N0YXRlKTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgY2F0Y2ggKGVfM18xKSB7IGVfMyA9IHsgZXJyb3I6IGVfM18xIH07IH0KCSAgICAgICAgZmluYWxseSB7CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIGlmIChzdGF0ZXNfM18xICYmICFzdGF0ZXNfM18xLmRvbmUgJiYgKF9hID0gc3RhdGVzXzMucmV0dXJuKSkgX2EuY2FsbChzdGF0ZXNfMyk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMykgdGhyb3cgZV8zLmVycm9yOyB9CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHJlc3VsdDsKCSAgICB9OwoJICAgIHJldHVybiBIaWdoTGV2ZWxFbmNvZGVyOwoJfSgpKTsKCWV4cG9ydHMuZGVmYXVsdCA9IEhpZ2hMZXZlbEVuY29kZXI7CgoJfSk7CgoJdmFyIEVuY29kZXJfMSQxID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewoJdmFyIF9fdmFsdWVzID0gKGNvbW1vbmpzR2xvYmFsICYmIGNvbW1vbmpzR2xvYmFsLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7CgkgICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSAiZnVuY3Rpb24iICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7CgkgICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7CgkgICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSAibnVtYmVyIikgcmV0dXJuIHsKCSAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkgewoJICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDsKCSAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTsKCSAgICAgICAgfQoJICAgIH07CgkgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gIk9iamVjdCBpcyBub3QgaXRlcmFibGUuIiA6ICJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuIik7Cgl9OwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCgoKCgoKCgoKCS8qCgkgKiBDb3B5cmlnaHQgMjAxMyBaWGluZyBhdXRob3JzCgkgKgoJICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCgkgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCSAqCgkgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoJICoKCSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCgkgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KCSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoJICovCgkvLyBwYWNrYWdlIGNvbS5nb29nbGUuenhpbmcuYXp0ZWMuZW5jb2RlcjsKCS8vIGltcG9ydCBjb20uZ29vZ2xlLnp4aW5nLmNvbW1vbi5CaXRBcnJheTsKCS8vIGltcG9ydCBjb20uZ29vZ2xlLnp4aW5nLmNvbW1vbi5CaXRNYXRyaXg7CgkvLyBpbXBvcnQgY29tLmdvb2dsZS56eGluZy5jb21tb24ucmVlZHNvbG9tb24uR2VuZXJpY0dGOwoJLy8gaW1wb3J0IGNvbS5nb29nbGUuenhpbmcuY29tbW9uLnJlZWRzb2xvbW9uLlJlZWRTb2xvbW9uRW5jb2RlcjsKCS8qKgoJICogR2VuZXJhdGVzIEF6dGVjIDJEIGJhcmNvZGVzLgoJICoKCSAqIEBhdXRob3IgUnVzdGFtIEFiZHVsbGFldgoJICovCgl2YXIgRW5jb2RlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBFbmNvZGVyKCkgewoJICAgIH0KCSAgICAvKioKCSAgICAgKiBFbmNvZGVzIHRoZSBnaXZlbiBiaW5hcnkgY29udGVudCBhcyBhbiBBenRlYyBzeW1ib2wKCSAgICAgKgoJICAgICAqIEBwYXJhbSBkYXRhIGlucHV0IGRhdGEgc3RyaW5nCgkgICAgICogQHJldHVybiBBenRlYyBzeW1ib2wgbWF0cml4IHdpdGggbWV0YWRhdGEKCSAgICAgKi8KCSAgICBFbmNvZGVyLmVuY29kZUJ5dGVzID0gZnVuY3Rpb24gKGRhdGEpIHsKCSAgICAgICAgcmV0dXJuIEVuY29kZXIuZW5jb2RlKGRhdGEsIEVuY29kZXIuREVGQVVMVF9FQ19QRVJDRU5ULCBFbmNvZGVyLkRFRkFVTFRfQVpURUNfTEFZRVJTKTsKCSAgICB9OwoJICAgIC8qKgoJICAgICAqIEVuY29kZXMgdGhlIGdpdmVuIGJpbmFyeSBjb250ZW50IGFzIGFuIEF6dGVjIHN5bWJvbAoJICAgICAqCgkgICAgICogQHBhcmFtIGRhdGEgaW5wdXQgZGF0YSBzdHJpbmcKCSAgICAgKiBAcGFyYW0gbWluRUNDUGVyY2VudCBtaW5pbWFsIHBlcmNlbnRhZ2Ugb2YgZXJyb3IgY2hlY2sgd29yZHMgKEFjY29yZGluZyB0byBJU08vSUVDIDI0Nzc4OjIwMDgsCgkgICAgICogICAgICAgICAgICAgICAgICAgICAgYSBtaW5pbXVtIG9mIDIzJSArIDMgd29yZHMgaXMgcmVjb21tZW5kZWQpCgkgICAgICogQHBhcmFtIHVzZXJTcGVjaWZpZWRMYXllcnMgaWYgbm9uLXplcm8sIGEgdXNlci1zcGVjaWZpZWQgdmFsdWUgZm9yIHRoZSBudW1iZXIgb2YgbGF5ZXJzCgkgICAgICogQHJldHVybiBBenRlYyBzeW1ib2wgbWF0cml4IHdpdGggbWV0YWRhdGEKCSAgICAgKi8KCSAgICBFbmNvZGVyLmVuY29kZSA9IGZ1bmN0aW9uIChkYXRhLCBtaW5FQ0NQZXJjZW50LCB1c2VyU3BlY2lmaWVkTGF5ZXJzKSB7CgkgICAgICAgIC8vIEhpZ2gtbGV2ZWwgZW5jb2RlCgkgICAgICAgIHZhciBiaXRzID0gbmV3IEhpZ2hMZXZlbEVuY29kZXJfMS5kZWZhdWx0KGRhdGEpLmVuY29kZSgpOwoJICAgICAgICAvLyBzdHVmZiBiaXRzIGFuZCBjaG9vc2Ugc3ltYm9sIHNpemUKCSAgICAgICAgdmFyIGVjY0JpdHMgPSBJbnRlZ2VyXzEuZGVmYXVsdC50cnVuY0RpdmlzaW9uKChiaXRzLmdldFNpemUoKSAqIG1pbkVDQ1BlcmNlbnQpLCAxMDApICsgMTE7CgkgICAgICAgIHZhciB0b3RhbFNpemVCaXRzID0gYml0cy5nZXRTaXplKCkgKyBlY2NCaXRzOwoJICAgICAgICB2YXIgY29tcGFjdDsKCSAgICAgICAgdmFyIGxheWVyczsKCSAgICAgICAgdmFyIHRvdGFsQml0c0luTGF5ZXI7CgkgICAgICAgIHZhciB3b3JkU2l6ZTsKCSAgICAgICAgdmFyIHN0dWZmZWRCaXRzOwoJICAgICAgICBpZiAodXNlclNwZWNpZmllZExheWVycyAhPT0gRW5jb2Rlci5ERUZBVUxUX0FaVEVDX0xBWUVSUykgewoJICAgICAgICAgICAgY29tcGFjdCA9IHVzZXJTcGVjaWZpZWRMYXllcnMgPCAwOwoJICAgICAgICAgICAgbGF5ZXJzID0gTWF0aC5hYnModXNlclNwZWNpZmllZExheWVycyk7CgkgICAgICAgICAgICBpZiAobGF5ZXJzID4gKGNvbXBhY3QgPyBFbmNvZGVyLk1BWF9OQl9CSVRTX0NPTVBBQ1QgOiBFbmNvZGVyLk1BWF9OQl9CSVRTKSkgewoJICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KFN0cmluZ1V0aWxzXzEuZGVmYXVsdC5mb3JtYXQoJ0lsbGVnYWwgdmFsdWUgJXMgZm9yIGxheWVycycsIHVzZXJTcGVjaWZpZWRMYXllcnMpKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHRvdGFsQml0c0luTGF5ZXIgPSBFbmNvZGVyLnRvdGFsQml0c0luTGF5ZXIobGF5ZXJzLCBjb21wYWN0KTsKCSAgICAgICAgICAgIHdvcmRTaXplID0gRW5jb2Rlci5XT1JEX1NJWkVbbGF5ZXJzXTsKCSAgICAgICAgICAgIHZhciB1c2FibGVCaXRzSW5MYXllcnMgPSB0b3RhbEJpdHNJbkxheWVyIC0gKHRvdGFsQml0c0luTGF5ZXIgJSB3b3JkU2l6ZSk7CgkgICAgICAgICAgICBzdHVmZmVkQml0cyA9IEVuY29kZXIuc3R1ZmZCaXRzKGJpdHMsIHdvcmRTaXplKTsKCSAgICAgICAgICAgIGlmIChzdHVmZmVkQml0cy5nZXRTaXplKCkgKyBlY2NCaXRzID4gdXNhYmxlQml0c0luTGF5ZXJzKSB7CgkgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoJ0RhdGEgdG8gbGFyZ2UgZm9yIHVzZXIgc3BlY2lmaWVkIGxheWVyJyk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBpZiAoY29tcGFjdCAmJiBzdHVmZmVkQml0cy5nZXRTaXplKCkgPiB3b3JkU2l6ZSAqIDY0KSB7CgkgICAgICAgICAgICAgICAgLy8gQ29tcGFjdCBmb3JtYXQgb25seSBhbGxvd3MgNjQgZGF0YSB3b3JkcywgdGhvdWdoIEM0IGNhbiBob2xkIG1vcmUgd29yZHMgdGhhbiB0aGF0CgkgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoJ0RhdGEgdG8gbGFyZ2UgZm9yIHVzZXIgc3BlY2lmaWVkIGxheWVyJyk7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICB3b3JkU2l6ZSA9IDA7CgkgICAgICAgICAgICBzdHVmZmVkQml0cyA9IG51bGw7CgkgICAgICAgICAgICAvLyBXZSBsb29rIGF0IHRoZSBwb3NzaWJsZSB0YWJsZSBzaXplcyBpbiB0aGUgb3JkZXIgQ29tcGFjdDEsIENvbXBhY3QyLCBDb21wYWN0MywKCSAgICAgICAgICAgIC8vIENvbXBhY3Q0LCBOb3JtYWw0LC4uLiAgTm9ybWFsKGkpIGZvciBpIDwgNCBpc24ndCB0eXBpY2FsbHkgdXNlZCBzaW5jZSBDb21wYWN0KGkrMSkKCSAgICAgICAgICAgIC8vIGlzIHRoZSBzYW1lIHNpemUsIGJ1dCBoYXMgbW9yZSBkYXRhLgoJICAgICAgICAgICAgZm9yICh2YXIgaSAvKmludCovID0gMDs7IGkrKykgewoJICAgICAgICAgICAgICAgIGlmIChpID4gRW5jb2Rlci5NQVhfTkJfQklUUykgewoJICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgnRGF0YSB0b28gbGFyZ2UgZm9yIGFuIEF6dGVjIGNvZGUnKTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgY29tcGFjdCA9IGkgPD0gMzsKCSAgICAgICAgICAgICAgICBsYXllcnMgPSBjb21wYWN0ID8gaSArIDEgOiBpOwoJICAgICAgICAgICAgICAgIHRvdGFsQml0c0luTGF5ZXIgPSBFbmNvZGVyLnRvdGFsQml0c0luTGF5ZXIobGF5ZXJzLCBjb21wYWN0KTsKCSAgICAgICAgICAgICAgICBpZiAodG90YWxTaXplQml0cyA+IHRvdGFsQml0c0luTGF5ZXIpIHsKCSAgICAgICAgICAgICAgICAgICAgY29udGludWU7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIC8vIFtSZV1zdHVmZiB0aGUgYml0cyBpZiB0aGlzIGlzIHRoZSBmaXJzdCBvcHBvcnR1bml0eSwgb3IgaWYgdGhlCgkgICAgICAgICAgICAgICAgLy8gd29yZFNpemUgaGFzIGNoYW5nZWQKCSAgICAgICAgICAgICAgICBpZiAoc3R1ZmZlZEJpdHMgPT0gbnVsbCB8fCB3b3JkU2l6ZSAhPT0gRW5jb2Rlci5XT1JEX1NJWkVbbGF5ZXJzXSkgewoJICAgICAgICAgICAgICAgICAgICB3b3JkU2l6ZSA9IEVuY29kZXIuV09SRF9TSVpFW2xheWVyc107CgkgICAgICAgICAgICAgICAgICAgIHN0dWZmZWRCaXRzID0gRW5jb2Rlci5zdHVmZkJpdHMoYml0cywgd29yZFNpemUpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB2YXIgdXNhYmxlQml0c0luTGF5ZXJzID0gdG90YWxCaXRzSW5MYXllciAtICh0b3RhbEJpdHNJbkxheWVyICUgd29yZFNpemUpOwoJICAgICAgICAgICAgICAgIGlmIChjb21wYWN0ICYmIHN0dWZmZWRCaXRzLmdldFNpemUoKSA+IHdvcmRTaXplICogNjQpIHsKCSAgICAgICAgICAgICAgICAgICAgLy8gQ29tcGFjdCBmb3JtYXQgb25seSBhbGxvd3MgNjQgZGF0YSB3b3JkcywgdGhvdWdoIEM0IGNhbiBob2xkIG1vcmUgd29yZHMgdGhhbiB0aGF0CgkgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBpZiAoc3R1ZmZlZEJpdHMuZ2V0U2l6ZSgpICsgZWNjQml0cyA8PSB1c2FibGVCaXRzSW5MYXllcnMpIHsKCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHZhciBtZXNzYWdlQml0cyA9IEVuY29kZXIuZ2VuZXJhdGVDaGVja1dvcmRzKHN0dWZmZWRCaXRzLCB0b3RhbEJpdHNJbkxheWVyLCB3b3JkU2l6ZSk7CgkgICAgICAgIC8vIGdlbmVyYXRlIG1vZGUgbWVzc2FnZQoJICAgICAgICB2YXIgbWVzc2FnZVNpemVJbldvcmRzID0gc3R1ZmZlZEJpdHMuZ2V0U2l6ZSgpIC8gd29yZFNpemU7CgkgICAgICAgIHZhciBtb2RlTWVzc2FnZSA9IEVuY29kZXIuZ2VuZXJhdGVNb2RlTWVzc2FnZShjb21wYWN0LCBsYXllcnMsIG1lc3NhZ2VTaXplSW5Xb3Jkcyk7CgkgICAgICAgIC8vIGFsbG9jYXRlIHN5bWJvbAoJICAgICAgICB2YXIgYmFzZU1hdHJpeFNpemUgPSAoY29tcGFjdCA/IDExIDogMTQpICsgbGF5ZXJzICogNDsgLy8gbm90IGluY2x1ZGluZyBhbGlnbm1lbnQgbGluZXMKCSAgICAgICAgdmFyIGFsaWdubWVudE1hcCA9IG5ldyBJbnQzMkFycmF5KGJhc2VNYXRyaXhTaXplKTsKCSAgICAgICAgdmFyIG1hdHJpeFNpemU7CgkgICAgICAgIGlmIChjb21wYWN0KSB7CgkgICAgICAgICAgICAvLyBubyBhbGlnbm1lbnQgbWFya3MgaW4gY29tcGFjdCBtb2RlLCBhbGlnbm1lbnRNYXAgaXMgYSBuby1vcAoJICAgICAgICAgICAgbWF0cml4U2l6ZSA9IGJhc2VNYXRyaXhTaXplOwoJICAgICAgICAgICAgZm9yICh2YXIgaSAvKmludCovID0gMDsgaSA8IGFsaWdubWVudE1hcC5sZW5ndGg7IGkrKykgewoJICAgICAgICAgICAgICAgIGFsaWdubWVudE1hcFtpXSA9IGk7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICBtYXRyaXhTaXplID0gYmFzZU1hdHJpeFNpemUgKyAxICsgMiAqIEludGVnZXJfMS5kZWZhdWx0LnRydW5jRGl2aXNpb24oKEludGVnZXJfMS5kZWZhdWx0LnRydW5jRGl2aXNpb24oYmFzZU1hdHJpeFNpemUsIDIpIC0gMSksIDE1KTsKCSAgICAgICAgICAgIHZhciBvcmlnQ2VudGVyID0gSW50ZWdlcl8xLmRlZmF1bHQudHJ1bmNEaXZpc2lvbihiYXNlTWF0cml4U2l6ZSwgMik7CgkgICAgICAgICAgICB2YXIgY2VudGVyID0gSW50ZWdlcl8xLmRlZmF1bHQudHJ1bmNEaXZpc2lvbihtYXRyaXhTaXplLCAyKTsKCSAgICAgICAgICAgIGZvciAodmFyIGkgLyppbnQqLyA9IDA7IGkgPCBvcmlnQ2VudGVyOyBpKyspIHsKCSAgICAgICAgICAgICAgICB2YXIgbmV3T2Zmc2V0ID0gaSArIEludGVnZXJfMS5kZWZhdWx0LnRydW5jRGl2aXNpb24oaSwgMTUpOwoJICAgICAgICAgICAgICAgIGFsaWdubWVudE1hcFtvcmlnQ2VudGVyIC0gaSAtIDFdID0gY2VudGVyIC0gbmV3T2Zmc2V0IC0gMTsKCSAgICAgICAgICAgICAgICBhbGlnbm1lbnRNYXBbb3JpZ0NlbnRlciArIGldID0gY2VudGVyICsgbmV3T2Zmc2V0ICsgMTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICB2YXIgbWF0cml4ID0gbmV3IEJpdE1hdHJpeF8xLmRlZmF1bHQobWF0cml4U2l6ZSk7CgkgICAgICAgIC8vIGRyYXcgZGF0YSBiaXRzCgkgICAgICAgIGZvciAodmFyIGkgLyppbnQqLyA9IDAsIHJvd09mZnNldCA9IDA7IGkgPCBsYXllcnM7IGkrKykgewoJICAgICAgICAgICAgdmFyIHJvd1NpemUgPSAobGF5ZXJzIC0gaSkgKiA0ICsgKGNvbXBhY3QgPyA5IDogMTIpOwoJICAgICAgICAgICAgZm9yICh2YXIgaiAvKmludCovID0gMDsgaiA8IHJvd1NpemU7IGorKykgewoJICAgICAgICAgICAgICAgIHZhciBjb2x1bW5PZmZzZXQgPSBqICogMjsKCSAgICAgICAgICAgICAgICBmb3IgKHZhciBrIC8qaW50Ki8gPSAwOyBrIDwgMjsgaysrKSB7CgkgICAgICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlQml0cy5nZXQocm93T2Zmc2V0ICsgY29sdW1uT2Zmc2V0ICsgaykpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIG1hdHJpeC5zZXQoYWxpZ25tZW50TWFwW2kgKiAyICsga10sIGFsaWdubWVudE1hcFtpICogMiArIGpdKTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICBpZiAobWVzc2FnZUJpdHMuZ2V0KHJvd09mZnNldCArIHJvd1NpemUgKiAyICsgY29sdW1uT2Zmc2V0ICsgaykpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIG1hdHJpeC5zZXQoYWxpZ25tZW50TWFwW2kgKiAyICsgal0sIGFsaWdubWVudE1hcFtiYXNlTWF0cml4U2l6ZSAtIDEgLSBpICogMiAtIGtdKTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICBpZiAobWVzc2FnZUJpdHMuZ2V0KHJvd09mZnNldCArIHJvd1NpemUgKiA0ICsgY29sdW1uT2Zmc2V0ICsgaykpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIG1hdHJpeC5zZXQoYWxpZ25tZW50TWFwW2Jhc2VNYXRyaXhTaXplIC0gMSAtIGkgKiAyIC0ga10sIGFsaWdubWVudE1hcFtiYXNlTWF0cml4U2l6ZSAtIDEgLSBpICogMiAtIGpdKTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICBpZiAobWVzc2FnZUJpdHMuZ2V0KHJvd09mZnNldCArIHJvd1NpemUgKiA2ICsgY29sdW1uT2Zmc2V0ICsgaykpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIG1hdHJpeC5zZXQoYWxpZ25tZW50TWFwW2Jhc2VNYXRyaXhTaXplIC0gMSAtIGkgKiAyIC0gal0sIGFsaWdubWVudE1hcFtpICogMiArIGtdKTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHJvd09mZnNldCArPSByb3dTaXplICogODsKCSAgICAgICAgfQoJICAgICAgICAvLyBkcmF3IG1vZGUgbWVzc2FnZQoJICAgICAgICBFbmNvZGVyLmRyYXdNb2RlTWVzc2FnZShtYXRyaXgsIGNvbXBhY3QsIG1hdHJpeFNpemUsIG1vZGVNZXNzYWdlKTsKCSAgICAgICAgLy8gZHJhdyBhbGlnbm1lbnQgbWFya3MKCSAgICAgICAgaWYgKGNvbXBhY3QpIHsKCSAgICAgICAgICAgIEVuY29kZXIuZHJhd0J1bGxzRXllKG1hdHJpeCwgSW50ZWdlcl8xLmRlZmF1bHQudHJ1bmNEaXZpc2lvbihtYXRyaXhTaXplLCAyKSwgNSk7CgkgICAgICAgIH0KCSAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICBFbmNvZGVyLmRyYXdCdWxsc0V5ZShtYXRyaXgsIEludGVnZXJfMS5kZWZhdWx0LnRydW5jRGl2aXNpb24obWF0cml4U2l6ZSwgMiksIDcpOwoJICAgICAgICAgICAgZm9yICh2YXIgaSAvKmludCovID0gMCwgaiA9IDA7IGkgPCBJbnRlZ2VyXzEuZGVmYXVsdC50cnVuY0RpdmlzaW9uKGJhc2VNYXRyaXhTaXplLCAyKSAtIDE7IGkgKz0gMTUsIGogKz0gMTYpIHsKCSAgICAgICAgICAgICAgICBmb3IgKHZhciBrIC8qaW50Ki8gPSBJbnRlZ2VyXzEuZGVmYXVsdC50cnVuY0RpdmlzaW9uKG1hdHJpeFNpemUsIDIpICYgMTsgayA8IG1hdHJpeFNpemU7IGsgKz0gMikgewoJICAgICAgICAgICAgICAgICAgICBtYXRyaXguc2V0KEludGVnZXJfMS5kZWZhdWx0LnRydW5jRGl2aXNpb24obWF0cml4U2l6ZSwgMikgLSBqLCBrKTsKCSAgICAgICAgICAgICAgICAgICAgbWF0cml4LnNldChJbnRlZ2VyXzEuZGVmYXVsdC50cnVuY0RpdmlzaW9uKG1hdHJpeFNpemUsIDIpICsgaiwgayk7CgkgICAgICAgICAgICAgICAgICAgIG1hdHJpeC5zZXQoaywgSW50ZWdlcl8xLmRlZmF1bHQudHJ1bmNEaXZpc2lvbihtYXRyaXhTaXplLCAyKSAtIGopOwoJICAgICAgICAgICAgICAgICAgICBtYXRyaXguc2V0KGssIEludGVnZXJfMS5kZWZhdWx0LnRydW5jRGl2aXNpb24obWF0cml4U2l6ZSwgMikgKyBqKTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGF6dGVjID0gbmV3IEF6dGVjQ29kZV8xLmRlZmF1bHQoKTsKCSAgICAgICAgYXp0ZWMuc2V0Q29tcGFjdChjb21wYWN0KTsKCSAgICAgICAgYXp0ZWMuc2V0U2l6ZShtYXRyaXhTaXplKTsKCSAgICAgICAgYXp0ZWMuc2V0TGF5ZXJzKGxheWVycyk7CgkgICAgICAgIGF6dGVjLnNldENvZGVXb3JkcyhtZXNzYWdlU2l6ZUluV29yZHMpOwoJICAgICAgICBhenRlYy5zZXRNYXRyaXgobWF0cml4KTsKCSAgICAgICAgcmV0dXJuIGF6dGVjOwoJICAgIH07CgkgICAgRW5jb2Rlci5kcmF3QnVsbHNFeWUgPSBmdW5jdGlvbiAobWF0cml4LCBjZW50ZXIsIHNpemUpIHsKCSAgICAgICAgZm9yICh2YXIgaSAvKmludCovID0gMDsgaSA8IHNpemU7IGkgKz0gMikgewoJICAgICAgICAgICAgZm9yICh2YXIgaiAvKmludCovID0gY2VudGVyIC0gaTsgaiA8PSBjZW50ZXIgKyBpOyBqKyspIHsKCSAgICAgICAgICAgICAgICBtYXRyaXguc2V0KGosIGNlbnRlciAtIGkpOwoJICAgICAgICAgICAgICAgIG1hdHJpeC5zZXQoaiwgY2VudGVyICsgaSk7CgkgICAgICAgICAgICAgICAgbWF0cml4LnNldChjZW50ZXIgLSBpLCBqKTsKCSAgICAgICAgICAgICAgICBtYXRyaXguc2V0KGNlbnRlciArIGksIGopOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIG1hdHJpeC5zZXQoY2VudGVyIC0gc2l6ZSwgY2VudGVyIC0gc2l6ZSk7CgkgICAgICAgIG1hdHJpeC5zZXQoY2VudGVyIC0gc2l6ZSArIDEsIGNlbnRlciAtIHNpemUpOwoJICAgICAgICBtYXRyaXguc2V0KGNlbnRlciAtIHNpemUsIGNlbnRlciAtIHNpemUgKyAxKTsKCSAgICAgICAgbWF0cml4LnNldChjZW50ZXIgKyBzaXplLCBjZW50ZXIgLSBzaXplKTsKCSAgICAgICAgbWF0cml4LnNldChjZW50ZXIgKyBzaXplLCBjZW50ZXIgLSBzaXplICsgMSk7CgkgICAgICAgIG1hdHJpeC5zZXQoY2VudGVyICsgc2l6ZSwgY2VudGVyICsgc2l6ZSAtIDEpOwoJICAgIH07CgkgICAgRW5jb2Rlci5nZW5lcmF0ZU1vZGVNZXNzYWdlID0gZnVuY3Rpb24gKGNvbXBhY3QsIGxheWVycywgbWVzc2FnZVNpemVJbldvcmRzKSB7CgkgICAgICAgIHZhciBtb2RlTWVzc2FnZSA9IG5ldyBCaXRBcnJheV8xLmRlZmF1bHQoKTsKCSAgICAgICAgaWYgKGNvbXBhY3QpIHsKCSAgICAgICAgICAgIG1vZGVNZXNzYWdlLmFwcGVuZEJpdHMobGF5ZXJzIC0gMSwgMik7CgkgICAgICAgICAgICBtb2RlTWVzc2FnZS5hcHBlbmRCaXRzKG1lc3NhZ2VTaXplSW5Xb3JkcyAtIDEsIDYpOwoJICAgICAgICAgICAgbW9kZU1lc3NhZ2UgPSBFbmNvZGVyLmdlbmVyYXRlQ2hlY2tXb3Jkcyhtb2RlTWVzc2FnZSwgMjgsIDQpOwoJICAgICAgICB9CgkgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgbW9kZU1lc3NhZ2UuYXBwZW5kQml0cyhsYXllcnMgLSAxLCA1KTsKCSAgICAgICAgICAgIG1vZGVNZXNzYWdlLmFwcGVuZEJpdHMobWVzc2FnZVNpemVJbldvcmRzIC0gMSwgMTEpOwoJICAgICAgICAgICAgbW9kZU1lc3NhZ2UgPSBFbmNvZGVyLmdlbmVyYXRlQ2hlY2tXb3Jkcyhtb2RlTWVzc2FnZSwgNDAsIDQpOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBtb2RlTWVzc2FnZTsKCSAgICB9OwoJICAgIEVuY29kZXIuZHJhd01vZGVNZXNzYWdlID0gZnVuY3Rpb24gKG1hdHJpeCwgY29tcGFjdCwgbWF0cml4U2l6ZSwgbW9kZU1lc3NhZ2UpIHsKCSAgICAgICAgdmFyIGNlbnRlciA9IEludGVnZXJfMS5kZWZhdWx0LnRydW5jRGl2aXNpb24obWF0cml4U2l6ZSwgMik7CgkgICAgICAgIGlmIChjb21wYWN0KSB7CgkgICAgICAgICAgICBmb3IgKHZhciBpIC8qaW50Ki8gPSAwOyBpIDwgNzsgaSsrKSB7CgkgICAgICAgICAgICAgICAgdmFyIG9mZnNldCA9IGNlbnRlciAtIDMgKyBpOwoJICAgICAgICAgICAgICAgIGlmIChtb2RlTWVzc2FnZS5nZXQoaSkpIHsKCSAgICAgICAgICAgICAgICAgICAgbWF0cml4LnNldChvZmZzZXQsIGNlbnRlciAtIDUpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBpZiAobW9kZU1lc3NhZ2UuZ2V0KGkgKyA3KSkgewoJICAgICAgICAgICAgICAgICAgICBtYXRyaXguc2V0KGNlbnRlciArIDUsIG9mZnNldCk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGlmIChtb2RlTWVzc2FnZS5nZXQoMjAgLSBpKSkgewoJICAgICAgICAgICAgICAgICAgICBtYXRyaXguc2V0KG9mZnNldCwgY2VudGVyICsgNSk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGlmIChtb2RlTWVzc2FnZS5nZXQoMjcgLSBpKSkgewoJICAgICAgICAgICAgICAgICAgICBtYXRyaXguc2V0KGNlbnRlciAtIDUsIG9mZnNldCk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgZm9yICh2YXIgaSAvKmludCovID0gMDsgaSA8IDEwOyBpKyspIHsKCSAgICAgICAgICAgICAgICB2YXIgb2Zmc2V0ID0gY2VudGVyIC0gNSArIGkgKyBJbnRlZ2VyXzEuZGVmYXVsdC50cnVuY0RpdmlzaW9uKGksIDUpOwoJICAgICAgICAgICAgICAgIGlmIChtb2RlTWVzc2FnZS5nZXQoaSkpIHsKCSAgICAgICAgICAgICAgICAgICAgbWF0cml4LnNldChvZmZzZXQsIGNlbnRlciAtIDcpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBpZiAobW9kZU1lc3NhZ2UuZ2V0KGkgKyAxMCkpIHsKCSAgICAgICAgICAgICAgICAgICAgbWF0cml4LnNldChjZW50ZXIgKyA3LCBvZmZzZXQpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBpZiAobW9kZU1lc3NhZ2UuZ2V0KDI5IC0gaSkpIHsKCSAgICAgICAgICAgICAgICAgICAgbWF0cml4LnNldChvZmZzZXQsIGNlbnRlciArIDcpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBpZiAobW9kZU1lc3NhZ2UuZ2V0KDM5IC0gaSkpIHsKCSAgICAgICAgICAgICAgICAgICAgbWF0cml4LnNldChjZW50ZXIgLSA3LCBvZmZzZXQpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgIH07CgkgICAgRW5jb2Rlci5nZW5lcmF0ZUNoZWNrV29yZHMgPSBmdW5jdGlvbiAoYml0QXJyYXksIHRvdGFsQml0cywgd29yZFNpemUpIHsKCSAgICAgICAgdmFyIGVfMSwgX2E7CgkgICAgICAgIC8vIGJpdEFycmF5IGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBtdWx0aXBsZSBvZiB0aGUgd29yZFNpemUsIHNvIG5vIHBhZGRpbmcgbmVlZGVkCgkgICAgICAgIHZhciBtZXNzYWdlU2l6ZUluV29yZHMgPSBiaXRBcnJheS5nZXRTaXplKCkgLyB3b3JkU2l6ZTsKCSAgICAgICAgdmFyIHJzID0gbmV3IFJlZWRTb2xvbW9uRW5jb2Rlcl8xLmRlZmF1bHQoRW5jb2Rlci5nZXRHRih3b3JkU2l6ZSkpOwoJICAgICAgICB2YXIgdG90YWxXb3JkcyA9IEludGVnZXJfMS5kZWZhdWx0LnRydW5jRGl2aXNpb24odG90YWxCaXRzLCB3b3JkU2l6ZSk7CgkgICAgICAgIHZhciBtZXNzYWdlV29yZHMgPSBFbmNvZGVyLmJpdHNUb1dvcmRzKGJpdEFycmF5LCB3b3JkU2l6ZSwgdG90YWxXb3Jkcyk7CgkgICAgICAgIHJzLmVuY29kZShtZXNzYWdlV29yZHMsIHRvdGFsV29yZHMgLSBtZXNzYWdlU2l6ZUluV29yZHMpOwoJICAgICAgICB2YXIgc3RhcnRQYWQgPSB0b3RhbEJpdHMgJSB3b3JkU2l6ZTsKCSAgICAgICAgdmFyIG1lc3NhZ2VCaXRzID0gbmV3IEJpdEFycmF5XzEuZGVmYXVsdCgpOwoJICAgICAgICBtZXNzYWdlQml0cy5hcHBlbmRCaXRzKDAsIHN0YXJ0UGFkKTsKCSAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgIGZvciAodmFyIF9iID0gX192YWx1ZXMoQXJyYXkuZnJvbShtZXNzYWdlV29yZHMpKSwgX2MgPSBfYi5uZXh0KCk7ICFfYy5kb25lOyBfYyA9IF9iLm5leHQoKSkgewoJICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlV29yZCA9IF9jLnZhbHVlIC8qOiBpbnQqLzsKCSAgICAgICAgICAgICAgICBtZXNzYWdlQml0cy5hcHBlbmRCaXRzKG1lc3NhZ2VXb3JkLCB3b3JkU2l6ZSk7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH0KCSAgICAgICAgZmluYWxseSB7CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIGlmIChfYyAmJiAhX2MuZG9uZSAmJiAoX2EgPSBfYi5yZXR1cm4pKSBfYS5jYWxsKF9iKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH0KCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gbWVzc2FnZUJpdHM7CgkgICAgfTsKCSAgICBFbmNvZGVyLmJpdHNUb1dvcmRzID0gZnVuY3Rpb24gKHN0dWZmZWRCaXRzLCB3b3JkU2l6ZSwgdG90YWxXb3JkcykgewoJICAgICAgICB2YXIgbWVzc2FnZSA9IG5ldyBJbnQzMkFycmF5KHRvdGFsV29yZHMpOwoJICAgICAgICB2YXIgaTsKCSAgICAgICAgdmFyIG47CgkgICAgICAgIGZvciAoaSA9IDAsIG4gPSBzdHVmZmVkQml0cy5nZXRTaXplKCkgLyB3b3JkU2l6ZTsgaSA8IG47IGkrKykgewoJICAgICAgICAgICAgdmFyIHZhbHVlID0gMDsKCSAgICAgICAgICAgIGZvciAodmFyIGogLyppbnQqLyA9IDA7IGogPCB3b3JkU2l6ZTsgaisrKSB7CgkgICAgICAgICAgICAgICAgdmFsdWUgfD0gc3R1ZmZlZEJpdHMuZ2V0KGkgKiB3b3JkU2l6ZSArIGopID8gKDEgPDwgd29yZFNpemUgLSBqIC0gMSkgOiAwOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgbWVzc2FnZVtpXSA9IHZhbHVlOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBtZXNzYWdlOwoJICAgIH07CgkgICAgRW5jb2Rlci5nZXRHRiA9IGZ1bmN0aW9uICh3b3JkU2l6ZSkgewoJICAgICAgICBzd2l0Y2ggKHdvcmRTaXplKSB7CgkgICAgICAgICAgICBjYXNlIDQ6CgkgICAgICAgICAgICAgICAgcmV0dXJuIEdlbmVyaWNHRl8xLmRlZmF1bHQuQVpURUNfUEFSQU07CgkgICAgICAgICAgICBjYXNlIDY6CgkgICAgICAgICAgICAgICAgcmV0dXJuIEdlbmVyaWNHRl8xLmRlZmF1bHQuQVpURUNfREFUQV82OwoJICAgICAgICAgICAgY2FzZSA4OgoJICAgICAgICAgICAgICAgIHJldHVybiBHZW5lcmljR0ZfMS5kZWZhdWx0LkFaVEVDX0RBVEFfODsKCSAgICAgICAgICAgIGNhc2UgMTA6CgkgICAgICAgICAgICAgICAgcmV0dXJuIEdlbmVyaWNHRl8xLmRlZmF1bHQuQVpURUNfREFUQV8xMDsKCSAgICAgICAgICAgIGNhc2UgMTI6CgkgICAgICAgICAgICAgICAgcmV0dXJuIEdlbmVyaWNHRl8xLmRlZmF1bHQuQVpURUNfREFUQV8xMjsKCSAgICAgICAgICAgIGRlZmF1bHQ6CgkgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoJ1Vuc3VwcG9ydGVkIHdvcmQgc2l6ZSAnICsgd29yZFNpemUpOwoJICAgICAgICB9CgkgICAgfTsKCSAgICBFbmNvZGVyLnN0dWZmQml0cyA9IGZ1bmN0aW9uIChiaXRzLCB3b3JkU2l6ZSkgewoJICAgICAgICB2YXIgb3V0ID0gbmV3IEJpdEFycmF5XzEuZGVmYXVsdCgpOwoJICAgICAgICB2YXIgbiA9IGJpdHMuZ2V0U2l6ZSgpOwoJICAgICAgICB2YXIgbWFzayA9ICgxIDw8IHdvcmRTaXplKSAtIDI7CgkgICAgICAgIGZvciAodmFyIGkgLyppbnQqLyA9IDA7IGkgPCBuOyBpICs9IHdvcmRTaXplKSB7CgkgICAgICAgICAgICB2YXIgd29yZCA9IDA7CgkgICAgICAgICAgICBmb3IgKHZhciBqIC8qaW50Ki8gPSAwOyBqIDwgd29yZFNpemU7IGorKykgewoJICAgICAgICAgICAgICAgIGlmIChpICsgaiA+PSBuIHx8IGJpdHMuZ2V0KGkgKyBqKSkgewoJICAgICAgICAgICAgICAgICAgICB3b3JkIHw9IDEgPDwgKHdvcmRTaXplIC0gMSAtIGopOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGlmICgod29yZCAmIG1hc2spID09PSBtYXNrKSB7CgkgICAgICAgICAgICAgICAgb3V0LmFwcGVuZEJpdHMod29yZCAmIG1hc2ssIHdvcmRTaXplKTsKCSAgICAgICAgICAgICAgICBpLS07CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlIGlmICgod29yZCAmIG1hc2spID09PSAwKSB7CgkgICAgICAgICAgICAgICAgb3V0LmFwcGVuZEJpdHMod29yZCB8IDEsIHdvcmRTaXplKTsKCSAgICAgICAgICAgICAgICBpLS07CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICBvdXQuYXBwZW5kQml0cyh3b3JkLCB3b3JkU2l6ZSk7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIG91dDsKCSAgICB9OwoJICAgIEVuY29kZXIudG90YWxCaXRzSW5MYXllciA9IGZ1bmN0aW9uIChsYXllcnMsIGNvbXBhY3QpIHsKCSAgICAgICAgcmV0dXJuICgoY29tcGFjdCA/IDg4IDogMTEyKSArIDE2ICogbGF5ZXJzKSAqIGxheWVyczsKCSAgICB9OwoJICAgIEVuY29kZXIuREVGQVVMVF9FQ19QRVJDRU5UID0gMzM7IC8vIGRlZmF1bHQgbWluaW1hbCBwZXJjZW50YWdlIG9mIGVycm9yIGNoZWNrIHdvcmRzCgkgICAgRW5jb2Rlci5ERUZBVUxUX0FaVEVDX0xBWUVSUyA9IDA7CgkgICAgRW5jb2Rlci5NQVhfTkJfQklUUyA9IDMyOwoJICAgIEVuY29kZXIuTUFYX05CX0JJVFNfQ09NUEFDVCA9IDQ7CgkgICAgRW5jb2Rlci5XT1JEX1NJWkUgPSBJbnQzMkFycmF5LmZyb20oWwoJICAgICAgICA0LCA2LCA2LCA4LCA4LCA4LCA4LCA4LCA4LCAxMCwgMTAsIDEwLCAxMCwgMTAsIDEwLCAxMCwgMTAsIDEwLCAxMCwgMTAsIDEwLCAxMCwgMTAsCgkgICAgICAgIDEyLCAxMiwgMTIsIDEyLCAxMiwgMTIsIDEyLCAxMiwgMTIsIDEyCgkgICAgXSk7CgkgICAgcmV0dXJuIEVuY29kZXI7Cgl9KCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gRW5jb2RlcjsKCgl9KTsKCgl2YXIgQXp0ZWNXcml0ZXJfMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCS8qCgkqIENvcHlyaWdodCAyMDEzIFpYaW5nIGF1dGhvcnMKCSoKCSogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CgkqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KCSogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgkqCgkqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgkqCgkqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKCSogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKCSogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCgkqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKCSogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgkqLwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCS8vIHBhY2thZ2UgY29tLmdvb2dsZS56eGluZy5henRlYzsKCS8vIGltcG9ydCBjb20uZ29vZ2xlLnp4aW5nLkJhcmNvZGVGb3JtYXQ7CgoJLy8gaW1wb3J0IGNvbS5nb29nbGUuenhpbmcuRW5jb2RlSGludFR5cGU7CgoJLy8gaW1wb3J0IGNvbS5nb29nbGUuenhpbmcuYXp0ZWMuZW5jb2Rlci5FbmNvZGVyOwoKCS8vIGltcG9ydCBjb20uZ29vZ2xlLnp4aW5nLmNvbW1vbi5CaXRNYXRyaXg7CgoJLy8gaW1wb3J0IGphdmEubmlvLmNoYXJzZXQuQ2hhcnNldDsKCgkvLyBpbXBvcnQgamF2YS5uaW8uY2hhcnNldC5TdGFuZGFyZENoYXJzZXRzOwoKCS8vIGltcG9ydCBqYXZhLnV0aWwuTWFwOwoKCgoKCS8qKgoJICogUmVuZGVycyBhbiBBenRlYyBjb2RlIGFzIGEge0BsaW5rIEJpdE1hdHJpeH0uCgkgKi8KCXZhciBBenRlY1dyaXRlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsKCSAgICBmdW5jdGlvbiBBenRlY1dyaXRlcigpIHsKCSAgICB9CgkgICAgLy8gQE92ZXJyaWRlCgkgICAgQXp0ZWNXcml0ZXIucHJvdG90eXBlLmVuY29kZSA9IGZ1bmN0aW9uIChjb250ZW50cywgZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSB7CgkgICAgICAgIHJldHVybiB0aGlzLmVuY29kZVdpdGhIaW50cyhjb250ZW50cywgZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBudWxsKTsKCSAgICB9OwoJICAgIC8vIEBPdmVycmlkZQoJICAgIEF6dGVjV3JpdGVyLnByb3RvdHlwZS5lbmNvZGVXaXRoSGludHMgPSBmdW5jdGlvbiAoY29udGVudHMsIGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgaGludHMpIHsKCSAgICAgICAgdmFyIGNoYXJzZXQgPSBTdGFuZGFyZENoYXJzZXRzXzEuZGVmYXVsdC5JU09fODg1OV8xOwoJICAgICAgICB2YXIgZWNjUGVyY2VudCA9IEVuY29kZXJfMSQxLmRlZmF1bHQuREVGQVVMVF9FQ19QRVJDRU5UOwoJICAgICAgICB2YXIgbGF5ZXJzID0gRW5jb2Rlcl8xJDEuZGVmYXVsdC5ERUZBVUxUX0FaVEVDX0xBWUVSUzsKCSAgICAgICAgaWYgKGhpbnRzICE9IG51bGwpIHsKCSAgICAgICAgICAgIGlmIChoaW50cy5oYXMoRW5jb2RlSGludFR5cGVfMS5kZWZhdWx0LkNIQVJBQ1RFUl9TRVQpKSB7CgkgICAgICAgICAgICAgICAgY2hhcnNldCA9IENoYXJzZXRfMS5kZWZhdWx0LmZvck5hbWUoaGludHMuZ2V0KEVuY29kZUhpbnRUeXBlXzEuZGVmYXVsdC5DSEFSQUNURVJfU0VUKS50b1N0cmluZygpKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGlmIChoaW50cy5oYXMoRW5jb2RlSGludFR5cGVfMS5kZWZhdWx0LkVSUk9SX0NPUlJFQ1RJT04pKSB7CgkgICAgICAgICAgICAgICAgZWNjUGVyY2VudCA9IEludGVnZXJfMS5kZWZhdWx0LnBhcnNlSW50KGhpbnRzLmdldChFbmNvZGVIaW50VHlwZV8xLmRlZmF1bHQuRVJST1JfQ09SUkVDVElPTikudG9TdHJpbmcoKSk7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBpZiAoaGludHMuaGFzKEVuY29kZUhpbnRUeXBlXzEuZGVmYXVsdC5BWlRFQ19MQVlFUlMpKSB7CgkgICAgICAgICAgICAgICAgbGF5ZXJzID0gSW50ZWdlcl8xLmRlZmF1bHQucGFyc2VJbnQoaGludHMuZ2V0KEVuY29kZUhpbnRUeXBlXzEuZGVmYXVsdC5BWlRFQ19MQVlFUlMpLnRvU3RyaW5nKCkpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBBenRlY1dyaXRlci5lbmNvZGVMYXllcnMoY29udGVudHMsIGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgY2hhcnNldCwgZWNjUGVyY2VudCwgbGF5ZXJzKTsKCSAgICB9OwoJICAgIEF6dGVjV3JpdGVyLmVuY29kZUxheWVycyA9IGZ1bmN0aW9uIChjb250ZW50cywgZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBjaGFyc2V0LCBlY2NQZXJjZW50LCBsYXllcnMpIHsKCSAgICAgICAgaWYgKGZvcm1hdCAhPT0gQmFyY29kZUZvcm1hdF8xLmRlZmF1bHQuQVpURUMpIHsKCSAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCdDYW4gb25seSBlbmNvZGUgQVpURUMsIGJ1dCBnb3QgJyArIGZvcm1hdCk7CgkgICAgICAgIH0KCSAgICAgICAgdmFyIGF6dGVjID0gRW5jb2Rlcl8xJDEuZGVmYXVsdC5lbmNvZGUoU3RyaW5nVXRpbHNfMS5kZWZhdWx0LmdldEJ5dGVzKGNvbnRlbnRzLCBjaGFyc2V0KSwgZWNjUGVyY2VudCwgbGF5ZXJzKTsKCSAgICAgICAgcmV0dXJuIEF6dGVjV3JpdGVyLnJlbmRlclJlc3VsdChhenRlYywgd2lkdGgsIGhlaWdodCk7CgkgICAgfTsKCSAgICBBenRlY1dyaXRlci5yZW5kZXJSZXN1bHQgPSBmdW5jdGlvbiAoY29kZSwgd2lkdGgsIGhlaWdodCkgewoJICAgICAgICB2YXIgaW5wdXQgPSBjb2RlLmdldE1hdHJpeCgpOwoJICAgICAgICBpZiAoaW5wdXQgPT0gbnVsbCkgewoJICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbl8xLmRlZmF1bHQoKTsKCSAgICAgICAgfQoJICAgICAgICB2YXIgaW5wdXRXaWR0aCA9IGlucHV0LmdldFdpZHRoKCk7CgkgICAgICAgIHZhciBpbnB1dEhlaWdodCA9IGlucHV0LmdldEhlaWdodCgpOwoJICAgICAgICB2YXIgb3V0cHV0V2lkdGggPSBNYXRoLm1heCh3aWR0aCwgaW5wdXRXaWR0aCk7CgkgICAgICAgIHZhciBvdXRwdXRIZWlnaHQgPSBNYXRoLm1heChoZWlnaHQsIGlucHV0SGVpZ2h0KTsKCSAgICAgICAgdmFyIG11bHRpcGxlID0gTWF0aC5taW4ob3V0cHV0V2lkdGggLyBpbnB1dFdpZHRoLCBvdXRwdXRIZWlnaHQgLyBpbnB1dEhlaWdodCk7CgkgICAgICAgIHZhciBsZWZ0UGFkZGluZyA9IChvdXRwdXRXaWR0aCAtIChpbnB1dFdpZHRoICogbXVsdGlwbGUpKSAvIDI7CgkgICAgICAgIHZhciB0b3BQYWRkaW5nID0gKG91dHB1dEhlaWdodCAtIChpbnB1dEhlaWdodCAqIG11bHRpcGxlKSkgLyAyOwoJICAgICAgICB2YXIgb3V0cHV0ID0gbmV3IEJpdE1hdHJpeF8xLmRlZmF1bHQob3V0cHV0V2lkdGgsIG91dHB1dEhlaWdodCk7CgkgICAgICAgIGZvciAodmFyIGlucHV0WSAvKmludCovID0gMCwgb3V0cHV0WSA9IHRvcFBhZGRpbmc7IGlucHV0WSA8IGlucHV0SGVpZ2h0OyBpbnB1dFkrKywgb3V0cHV0WSArPSBtdWx0aXBsZSkgewoJICAgICAgICAgICAgLy8gV3JpdGUgdGhlIGNvbnRlbnRzIG9mIHRoaXMgcm93IG9mIHRoZSBiYXJjb2RlCgkgICAgICAgICAgICBmb3IgKHZhciBpbnB1dFggLyppbnQqLyA9IDAsIG91dHB1dFggPSBsZWZ0UGFkZGluZzsgaW5wdXRYIDwgaW5wdXRXaWR0aDsgaW5wdXRYKyssIG91dHB1dFggKz0gbXVsdGlwbGUpIHsKCSAgICAgICAgICAgICAgICBpZiAoaW5wdXQuZ2V0KGlucHV0WCwgaW5wdXRZKSkgewoJICAgICAgICAgICAgICAgICAgICBvdXRwdXQuc2V0UmVnaW9uKG91dHB1dFgsIG91dHB1dFksIG11bHRpcGxlLCBtdWx0aXBsZSk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBvdXRwdXQ7CgkgICAgfTsKCSAgICByZXR1cm4gQXp0ZWNXcml0ZXI7Cgl9KCkpOwoJZXhwb3J0cy5kZWZhdWx0ID0gQXp0ZWNXcml0ZXI7CgoJfSk7CgoJdmFyIGNqcyA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKCXZhciBfX2NyZWF0ZUJpbmRpbmcgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX19jcmVhdGVCaW5kaW5nKSB8fCAoT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikgewoJICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7CgkgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIGsyLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24oKSB7IHJldHVybiBtW2tdOyB9IH0pOwoJfSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHsKCSAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrOwoJICAgIG9bazJdID0gbVtrXTsKCX0pKTsKCXZhciBfX2V4cG9ydFN0YXIgPSAoY29tbW9uanNHbG9iYWwgJiYgY29tbW9uanNHbG9iYWwuX19leHBvcnRTdGFyKSB8fCBmdW5jdGlvbihtLCBleHBvcnRzKSB7CgkgICAgZm9yICh2YXIgcCBpbiBtKSBpZiAocCAhPT0gImRlZmF1bHQiICYmICFleHBvcnRzLmhhc093blByb3BlcnR5KHApKSBfX2NyZWF0ZUJpbmRpbmcoZXhwb3J0cywgbSwgcCk7Cgl9OwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgeyB2YWx1ZTogdHJ1ZSB9KTsKCV9fZXhwb3J0U3Rhcihicm93c2VyLCBleHBvcnRzKTsKCS8vIEV4Y2VwdGlvbnMKCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIkFyZ3VtZW50RXhjZXB0aW9uIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdDsgfSB9KTsKCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIkFyaXRobWV0aWNFeGNlcHRpb24iLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gQXJpdGhtZXRpY0V4Y2VwdGlvbl8xLmRlZmF1bHQ7IH0gfSk7CgoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJDaGVja3N1bUV4Y2VwdGlvbiIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBDaGVja3N1bUV4Y2VwdGlvbl8xLmRlZmF1bHQ7IH0gfSk7CgoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJFeGNlcHRpb24iLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gRXhjZXB0aW9uXzEuZGVmYXVsdDsgfSB9KTsKCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIkZvcm1hdEV4Y2VwdGlvbiIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0OyB9IH0pOwoKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQ7IH0gfSk7CgoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gSWxsZWdhbFN0YXRlRXhjZXB0aW9uXzEuZGVmYXVsdDsgfSB9KTsKCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIk5vdEZvdW5kRXhjZXB0aW9uIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdDsgfSB9KTsKCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIlJlYWRlckV4Y2VwdGlvbiIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBSZWFkZXJFeGNlcHRpb25fMS5kZWZhdWx0OyB9IH0pOwoKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiUmVlZFNvbG9tb25FeGNlcHRpb24iLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gUmVlZFNvbG9tb25FeGNlcHRpb25fMS5kZWZhdWx0OyB9IH0pOwoKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24iLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb25fMS5kZWZhdWx0OyB9IH0pOwoKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiV3JpdGVyRXhjZXB0aW9uIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFdyaXRlckV4Y2VwdGlvbl8xLmRlZmF1bHQ7IH0gfSk7CgkvLyBjb3JlCgoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJCYXJjb2RlRm9ybWF0IiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIEJhcmNvZGVGb3JtYXRfMS5kZWZhdWx0OyB9IH0pOwoKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiQmluYXJpemVyIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIEJpbmFyaXplcl8xLmRlZmF1bHQ7IH0gfSk7CgoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJCaW5hcnlCaXRtYXAiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gQmluYXJ5Qml0bWFwXzEuZGVmYXVsdDsgfSB9KTsKCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIkRlY29kZUhpbnRUeXBlIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIERlY29kZUhpbnRUeXBlXzEuZGVmYXVsdDsgfSB9KTsKCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIkludmVydGVkTHVtaW5hbmNlU291cmNlIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIEludmVydGVkTHVtaW5hbmNlU291cmNlXzEuZGVmYXVsdDsgfSB9KTsKCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIkx1bWluYW5jZVNvdXJjZSIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBMdW1pbmFuY2VTb3VyY2VfMS5kZWZhdWx0OyB9IH0pOwoKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiTXVsdGlGb3JtYXRSZWFkZXIiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gTXVsdGlGb3JtYXRSZWFkZXJfMS5kZWZhdWx0OyB9IH0pOwoKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiTXVsdGlGb3JtYXRXcml0ZXIiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gTXVsdGlGb3JtYXRXcml0ZXJfMS5kZWZhdWx0OyB9IH0pOwoKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiUGxhbmFyWVVWTHVtaW5hbmNlU291cmNlIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFBsYW5hcllVVkx1bWluYW5jZVNvdXJjZV8xLmRlZmF1bHQ7IH0gfSk7CgoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJSZXN1bHQiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gUmVzdWx0XzEuZGVmYXVsdDsgfSB9KTsKCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIlJlc3VsdE1ldGFkYXRhVHlwZSIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBSZXN1bHRNZXRhZGF0YVR5cGVfMS5kZWZhdWx0OyB9IH0pOwoKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiUkdCTHVtaW5hbmNlU291cmNlIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFJHQkx1bWluYW5jZVNvdXJjZV8xLmRlZmF1bHQ7IH0gfSk7CgoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJSZXN1bHRQb2ludCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBSZXN1bHRQb2ludF8xLmRlZmF1bHQ7IH0gfSk7CgkvLyBjb3JlL3V0aWwKCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIlpYaW5nU3lzdGVtIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFN5c3RlbV8xLmRlZmF1bHQ7IH0gfSk7CgoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJaWGluZ1N0cmluZ0J1aWxkZXIiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gU3RyaW5nQnVpbGRlcl8xLmRlZmF1bHQ7IH0gfSk7CgoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJaWGluZ1N0cmluZ0VuY29kaW5nIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFN0cmluZ0VuY29kaW5nXzEuZGVmYXVsdDsgfSB9KTsKCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIlpYaW5nQ2hhcnNldCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBDaGFyc2V0XzEuZGVmYXVsdDsgfSB9KTsKCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIlpYaW5nQXJyYXlzIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIEFycmF5c18xLmRlZmF1bHQ7IH0gfSk7CgoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJaWGluZ1N0YW5kYXJkQ2hhcnNldHMiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gU3RhbmRhcmRDaGFyc2V0c18xLmRlZmF1bHQ7IH0gfSk7CgoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJaWGluZ0ludGVnZXIiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gSW50ZWdlcl8xLmRlZmF1bHQ7IH0gfSk7CgkvLyBjb3JlL2NvbW1vbgoKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiQml0QXJyYXkiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gQml0QXJyYXlfMS5kZWZhdWx0OyB9IH0pOwoKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiQml0TWF0cml4IiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIEJpdE1hdHJpeF8xLmRlZmF1bHQ7IH0gfSk7CgoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJCaXRTb3VyY2UiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gQml0U291cmNlXzEuZGVmYXVsdDsgfSB9KTsKCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIkNoYXJhY3RlclNldEVDSSIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBDaGFyYWN0ZXJTZXRFQ0lfMS5kZWZhdWx0OyB9IH0pOwoKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiRGVjb2RlclJlc3VsdCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBEZWNvZGVyUmVzdWx0XzEuZGVmYXVsdDsgfSB9KTsKCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIkRlZmF1bHRHcmlkU2FtcGxlciIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBEZWZhdWx0R3JpZFNhbXBsZXJfMS5kZWZhdWx0OyB9IH0pOwoKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiRGV0ZWN0b3JSZXN1bHQiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gRGV0ZWN0b3JSZXN1bHRfMS5kZWZhdWx0OyB9IH0pOwoKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiRW5jb2RlSGludFR5cGUiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gRW5jb2RlSGludFR5cGVfMS5kZWZhdWx0OyB9IH0pOwoKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiR2xvYmFsSGlzdG9ncmFtQmluYXJpemVyIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIEdsb2JhbEhpc3RvZ3JhbUJpbmFyaXplcl8xLmRlZmF1bHQ7IH0gfSk7CgoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJHcmlkU2FtcGxlciIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBHcmlkU2FtcGxlcl8xLmRlZmF1bHQ7IH0gfSk7CgoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJHcmlkU2FtcGxlckluc3RhbmNlIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIEdyaWRTYW1wbGVySW5zdGFuY2VfMS5kZWZhdWx0OyB9IH0pOwoKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiSHlicmlkQmluYXJpemVyIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIEh5YnJpZEJpbmFyaXplcl8xLmRlZmF1bHQ7IH0gfSk7CgoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJQZXJzcGVjdGl2ZVRyYW5zZm9ybSIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBQZXJzcGVjdGl2ZVRyYW5zZm9ybV8xLmRlZmF1bHQ7IH0gfSk7CgoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJTdHJpbmdVdGlscyIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBTdHJpbmdVdGlsc18xLmRlZmF1bHQ7IH0gfSk7CgkvLyBjb3JlL2NvbW1vbi9kZXRlY3RvcgoKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiTWF0aFV0aWxzIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIE1hdGhVdGlsc18xLmRlZmF1bHQ7IH0gfSk7CgkvLyBleHBvcnQgeyBkZWZhdWx0IGFzIE1vbm9jaHJvbWVSZWN0YW5nbGVEZXRlY3RvciB9IGZyb20gJy4vY29yZS9jb21tb24vZGV0ZWN0b3IvTW9ub2Nocm9tZVJlY3RhbmdsZURldGVjdG9yJzsKCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIldoaXRlUmVjdGFuZ2xlRGV0ZWN0b3IiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gV2hpdGVSZWN0YW5nbGVEZXRlY3Rvcl8xLmRlZmF1bHQ7IH0gfSk7CgkvLyBjb3JlL2NvbW1vbi9yZWVkc29sb21vbgoKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiR2VuZXJpY0dGIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIEdlbmVyaWNHRl8xLmRlZmF1bHQ7IH0gfSk7CgoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJHZW5lcmljR0ZQb2x5IiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIEdlbmVyaWNHRlBvbHlfMS5kZWZhdWx0OyB9IH0pOwoKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiUmVlZFNvbG9tb25EZWNvZGVyIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFJlZWRTb2xvbW9uRGVjb2Rlcl8xLmRlZmF1bHQ7IH0gfSk7CgoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJSZWVkU29sb21vbkVuY29kZXIiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gUmVlZFNvbG9tb25FbmNvZGVyXzEuZGVmYXVsdDsgfSB9KTsKCS8vIGNvcmUvZGF0YW1hdHJpeAoKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiRGF0YU1hdHJpeFJlYWRlciIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBEYXRhTWF0cml4UmVhZGVyXzEuZGVmYXVsdDsgfSB9KTsKCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIkRhdGFNYXRyaXhEZWNvZGVkQml0U3RyZWFtUGFyc2VyIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIERlY29kZWRCaXRTdHJlYW1QYXJzZXJfMS5kZWZhdWx0OyB9IH0pOwoJLy8gY29yZS9wZGY0MTcKCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIlBERjQxN1JlYWRlciIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBQREY0MTdSZWFkZXJfMS5kZWZhdWx0OyB9IH0pOwoKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiUERGNDE3UmVzdWx0TWV0YWRhdGEiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gUERGNDE3UmVzdWx0TWV0YWRhdGFfMS5kZWZhdWx0OyB9IH0pOwoKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiUERGNDE3RGVjb2RlZEJpdFN0cmVhbVBhcnNlciIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBEZWNvZGVkQml0U3RyZWFtUGFyc2VyXzEkMi5kZWZhdWx0OyB9IH0pOwoKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiUERGNDE3RGVjb2RlckVycm9yQ29ycmVjdGlvbiIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBFcnJvckNvcnJlY3Rpb25fMS5kZWZhdWx0OyB9IH0pOwoJLy8gY29yZS90d29kL3FyY29kZQoKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiUVJDb2RlUmVhZGVyIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFFSQ29kZVJlYWRlcl8xLmRlZmF1bHQ7IH0gfSk7CgoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJRUkNvZGVXcml0ZXIiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gUVJDb2RlV3JpdGVyXzEuZGVmYXVsdDsgfSB9KTsKCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIlFSQ29kZURlY29kZXJFcnJvckNvcnJlY3Rpb25MZXZlbCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBFcnJvckNvcnJlY3Rpb25MZXZlbF8xLmRlZmF1bHQ7IH0gfSk7CgoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJRUkNvZGVEZWNvZGVyRm9ybWF0SW5mb3JtYXRpb24iLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gRm9ybWF0SW5mb3JtYXRpb25fMS5kZWZhdWx0OyB9IH0pOwoKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiUVJDb2RlVmVyc2lvbiIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBWZXJzaW9uXzEkMS5kZWZhdWx0OyB9IH0pOwoKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiUVJDb2RlTW9kZSIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBNb2RlXzEuZGVmYXVsdDsgfSB9KTsKCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIlFSQ29kZURlY29kZWRCaXRTdHJlYW1QYXJzZXIiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gRGVjb2RlZEJpdFN0cmVhbVBhcnNlcl8xJDEuZGVmYXVsdDsgfSB9KTsKCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIlFSQ29kZURhdGFNYXNrIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIERhdGFNYXNrXzEuZGVmYXVsdDsgfSB9KTsKCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIlFSQ29kZUVuY29kZXIiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gRW5jb2Rlcl8xLmRlZmF1bHQ7IH0gfSk7CgoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJRUkNvZGVFbmNvZGVyUVJDb2RlIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFFSQ29kZV8xLmRlZmF1bHQ7IH0gfSk7CgoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJRUkNvZGVNYXRyaXhVdGlsIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIE1hdHJpeFV0aWxfMS5kZWZhdWx0OyB9IH0pOwoKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiUVJDb2RlQnl0ZU1hdHJpeCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBCeXRlTWF0cml4XzEuZGVmYXVsdDsgfSB9KTsKCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIlFSQ29kZU1hc2tVdGlsIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIE1hc2tVdGlsXzEuZGVmYXVsdDsgfSB9KTsKCS8vIGNvcmUvdHdvZC9henRlYwoKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiQXp0ZWNDb2RlUmVhZGVyIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIEF6dGVjUmVhZGVyXzEuZGVmYXVsdDsgfSB9KTsKCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIkF6dGVjQ29kZVdyaXRlciIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBBenRlY1dyaXRlcl8xLmRlZmF1bHQ7IH0gfSk7CgoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJBenRlY0RldGVjdG9yUmVzdWx0IiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIEF6dGVjRGV0ZWN0b3JSZXN1bHRfMS5kZWZhdWx0OyB9IH0pOwoKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiQXp0ZWNFbmNvZGVyIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIEVuY29kZXJfMSQxLmRlZmF1bHQ7IH0gfSk7CgoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJBenRlY0hpZ2hMZXZlbEVuY29kZXIiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gSGlnaExldmVsRW5jb2Rlcl8xLmRlZmF1bHQ7IH0gfSk7CgoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJBenRlY0NvZGUiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gQXp0ZWNDb2RlXzEuZGVmYXVsdDsgfSB9KTsKCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIkF6dGVjRGVjb2RlciIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBEZWNvZGVyXzEuZGVmYXVsdDsgfSB9KTsKCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIkF6dGVjRGV0ZWN0b3IiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gRGV0ZWN0b3JfMS5kZWZhdWx0OyB9IH0pOwoJdmFyIERldGVjdG9yXzIgPSBEZXRlY3Rvcl8xOwoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJBenRlY1BvaW50IiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIERldGVjdG9yXzIuUG9pbnQ7IH0gfSk7CgkvLyBjb3JlL29uZWQKCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIk9uZURSZWFkZXIiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gT25lRFJlYWRlcl8xLmRlZmF1bHQ7IH0gfSk7CgoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJFQU4xM1JlYWRlciIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBFQU4xM1JlYWRlcl8xLmRlZmF1bHQ7IH0gfSk7CgoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJDb2RlMTI4UmVhZGVyIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIENvZGUxMjhSZWFkZXJfMS5kZWZhdWx0OyB9IH0pOwoKCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAiSVRGUmVhZGVyIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIElURlJlYWRlcl8xLmRlZmF1bHQ7IH0gfSk7CgoJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJDb2RlMzlSZWFkZXIiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gQ29kZTM5UmVhZGVyXzEuZGVmYXVsdDsgfSB9KTsKCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIlJTUzE0UmVhZGVyIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFJTUzE0UmVhZGVyXzEuZGVmYXVsdDsgfSB9KTsKCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIlJTU0V4cGFuZGVkUmVhZGVyIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFJTU0V4cGFuZGVkUmVhZGVyXzEuZGVmYXVsdDsgfSB9KTsKCglPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgIk11bHRpRm9ybWF0T25lRFJlYWRlciIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBNdWx0aUZvcm1hdE9uZURSZWFkZXJfMS5kZWZhdWx0OyB9IH0pOwoKCX0pOwoKCXZhciByZWFkZXIgPSBuZXcgY2pzLlFSQ29kZVJlYWRlcigpOwoJc2VsZi5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZnVuY3Rpb24gKGUpIHsKCSAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1yZXN0cmljdGVkLWdsb2JhbHMKCSAgdmFyIGRhdGEgPSBjanMuSFRNTENhbnZhc0VsZW1lbnRMdW1pbmFuY2VTb3VyY2UudG9HcmF5c2NhbGVCdWZmZXIoZS5kYXRhLmRhdGEsIGUuZGF0YS53aWR0aCwgZS5kYXRhLmhlaWdodCk7CgkgIHZhciBsdW1pbmFuY2VTb3VyY2UgPSBuZXcgY2pzLlJHQkx1bWluYW5jZVNvdXJjZShkYXRhLCBlLmRhdGEud2lkdGgsIGUuZGF0YS5oZWlnaHQpOwoJICB2YXIgYmluYXJ5Qml0bWFwID0gbmV3IGNqcy5CaW5hcnlCaXRtYXAobmV3IGNqcy5IeWJyaWRCaW5hcml6ZXIobHVtaW5hbmNlU291cmNlKSk7CgoJICB0cnkgewoJICAgIHZhciBkZWNvZGVkID0gcmVhZGVyLmRlY29kZShiaW5hcnlCaXRtYXApOwoJICAgIHBvc3RNZXNzYWdlKGRlY29kZWQpOwoJICB9IGNhdGNoIChlcnIpIHsKCSAgICBwb3N0TWVzc2FnZShudWxsKTsKCSAgfQoJfSk7Cgp9KCkpOwoK","data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyLmpzIiwic291cmNlcyI6WyJub2RlX21vZHVsZXMvdHMtY3VzdG9tLWVycm9yL2Rpc3QvY3VzdG9tLWVycm9yLm1qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9FeGNlcHRpb24uanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvQXJndW1lbnRFeGNlcHRpb24uanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL0JpbmFyeUJpdG1hcC5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9DaGVja3N1bUV4Y2VwdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9CaW5hcml6ZXIuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvdXRpbC9TeXN0ZW0uanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9BcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24uanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvdXRpbC9BcnJheXMuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvdXRpbC9JbnRlZ2VyLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL2NvbW1vbi9CaXRBcnJheS5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9EZWNvZGVIaW50VHlwZS5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9Gb3JtYXRFeGNlcHRpb24uanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvY29tbW9uL0NoYXJhY3RlclNldEVDSS5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9VbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS91dGlsL1N0cmluZ0VuY29kaW5nLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL2NvbW1vbi9TdHJpbmdVdGlscy5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS91dGlsL1N0cmluZ0J1aWxkZXIuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvY29tbW9uL0JpdE1hdHJpeC5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9Ob3RGb3VuZEV4Y2VwdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9jb21tb24vR2xvYmFsSGlzdG9ncmFtQmluYXJpemVyLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL2NvbW1vbi9IeWJyaWRCaW5hcml6ZXIuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvTHVtaW5hbmNlU291cmNlLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL0ludmVydGVkTHVtaW5hbmNlU291cmNlLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9icm93c2VyL0hUTUxDYW52YXNFbGVtZW50THVtaW5hbmNlU291cmNlLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9icm93c2VyL1ZpZGVvSW5wdXREZXZpY2UuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2Jyb3dzZXIvQnJvd3NlckNvZGVSZWFkZXIuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvUmVzdWx0LmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL0JhcmNvZGVGb3JtYXQuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvUmVzdWx0TWV0YWRhdGFUeXBlLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL2NvbW1vbi9EZWNvZGVyUmVzdWx0LmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL2NvbW1vbi9yZWVkc29sb21vbi9BYnN0cmFjdEdlbmVyaWNHRi5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9jb21tb24vcmVlZHNvbG9tb24vR2VuZXJpY0dGUG9seS5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9Bcml0aG1ldGljRXhjZXB0aW9uLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL2NvbW1vbi9yZWVkc29sb21vbi9HZW5lcmljR0YuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvUmVlZFNvbG9tb25FeGNlcHRpb24uanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvSWxsZWdhbFN0YXRlRXhjZXB0aW9uLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL2NvbW1vbi9yZWVkc29sb21vbi9SZWVkU29sb21vbkRlY29kZXIuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvYXp0ZWMvZGVjb2Rlci9EZWNvZGVyLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL2NvbW1vbi9kZXRlY3Rvci9NYXRoVXRpbHMuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvdXRpbC9GbG9hdC5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9SZXN1bHRQb2ludC5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9jb21tb24vRGV0ZWN0b3JSZXN1bHQuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvYXp0ZWMvQXp0ZWNEZXRlY3RvclJlc3VsdC5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9jb21tb24vZGV0ZWN0b3IvV2hpdGVSZWN0YW5nbGVEZXRlY3Rvci5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9jb21tb24vR3JpZFNhbXBsZXIuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvY29tbW9uL1BlcnNwZWN0aXZlVHJhbnNmb3JtLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL2NvbW1vbi9EZWZhdWx0R3JpZFNhbXBsZXIuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvY29tbW9uL0dyaWRTYW1wbGVySW5zdGFuY2UuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvYXp0ZWMvZGV0ZWN0b3IvRGV0ZWN0b3IuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvYXp0ZWMvQXp0ZWNSZWFkZXIuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2Jyb3dzZXIvQnJvd3NlckF6dGVjQ29kZVJlYWRlci5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9vbmVkL09uZURSZWFkZXIuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvb25lZC9Db2RlMTI4UmVhZGVyLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL29uZWQvQ29kZTM5UmVhZGVyLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL29uZWQvSVRGUmVhZGVyLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL29uZWQvQWJzdHJhY3RVUENFQU5SZWFkZXIuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvb25lZC9VUENFQU5FeHRlbnNpb241U3VwcG9ydC5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9vbmVkL1VQQ0VBTkV4dGVuc2lvbjJTdXBwb3J0LmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL29uZWQvVVBDRUFORXh0ZW5zaW9uU3VwcG9ydC5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9vbmVkL1VQQ0VBTlJlYWRlci5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9vbmVkL0VBTjEzUmVhZGVyLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL29uZWQvRUFOOFJlYWRlci5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9vbmVkL1VQQ0FSZWFkZXIuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvb25lZC9VUENFUmVhZGVyLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL29uZWQvTXVsdGlGb3JtYXRVUENFQU5SZWFkZXIuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvb25lZC9yc3MvQWJzdHJhY3RSU1NSZWFkZXIuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvb25lZC9yc3MvRGF0YUNoYXJhY3Rlci5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9vbmVkL3Jzcy9GaW5kZXJQYXR0ZXJuLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL29uZWQvcnNzL1JTU1V0aWxzLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL29uZWQvcnNzL2V4cGFuZGVkL0JpdEFycmF5QnVpbGRlci5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9vbmVkL3Jzcy9leHBhbmRlZC9kZWNvZGVycy9CbG9ja1BhcnNlZFJlc3VsdC5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9vbmVkL3Jzcy9leHBhbmRlZC9kZWNvZGVycy9EZWNvZGVkT2JqZWN0LmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL29uZWQvcnNzL2V4cGFuZGVkL2RlY29kZXJzL0RlY29kZWRDaGFyLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL29uZWQvcnNzL2V4cGFuZGVkL2RlY29kZXJzL0RlY29kZWRJbmZvcm1hdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9vbmVkL3Jzcy9leHBhbmRlZC9kZWNvZGVycy9EZWNvZGVkTnVtZXJpYy5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9vbmVkL3Jzcy9leHBhbmRlZC9kZWNvZGVycy9GaWVsZFBhcnNlci5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9vbmVkL3Jzcy9leHBhbmRlZC9kZWNvZGVycy9HZW5lcmFsQXBwSWREZWNvZGVyLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL29uZWQvcnNzL2V4cGFuZGVkL2RlY29kZXJzL0Fic3RyYWN0RXhwYW5kZWREZWNvZGVyLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL29uZWQvcnNzL2V4cGFuZGVkL2RlY29kZXJzL0FJMDFkZWNvZGVyLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL29uZWQvcnNzL2V4cGFuZGVkL2RlY29kZXJzL0FJMDFBbmRPdGhlckFJcy5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9vbmVkL3Jzcy9leHBhbmRlZC9kZWNvZGVycy9BbnlBSURlY29kZXIuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvb25lZC9yc3MvZXhwYW5kZWQvZGVjb2RlcnMvQUkwMXdlaWdodERlY29kZXIuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvb25lZC9yc3MvZXhwYW5kZWQvZGVjb2RlcnMvQUkwMTN4MHhEZWNvZGVyLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL29uZWQvcnNzL2V4cGFuZGVkL2RlY29kZXJzL0FJMDEzMTAzZGVjb2Rlci5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9vbmVkL3Jzcy9leHBhbmRlZC9kZWNvZGVycy9BSTAxMzIweERlY29kZXIuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvb25lZC9yc3MvZXhwYW5kZWQvZGVjb2RlcnMvQUkwMTM5MnhEZWNvZGVyLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL29uZWQvcnNzL2V4cGFuZGVkL2RlY29kZXJzL0FJMDEzOTN4RGVjb2Rlci5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9vbmVkL3Jzcy9leHBhbmRlZC9kZWNvZGVycy9BSTAxM3gweDF4RGVjb2Rlci5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9vbmVkL3Jzcy9leHBhbmRlZC9kZWNvZGVycy9BYnN0cmFjdEV4cGFuZGVkRGVjb2RlckNvbXBsZW1lbnQuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvb25lZC9yc3MvZXhwYW5kZWQvRXhwYW5kZWRQYWlyLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL29uZWQvcnNzL2V4cGFuZGVkL0V4cGFuZGVkUm93LmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL29uZWQvcnNzL2V4cGFuZGVkL1JTU0V4cGFuZGVkUmVhZGVyLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL29uZWQvcnNzL1BhaXIuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvb25lZC9yc3MvUlNTMTRSZWFkZXIuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvb25lZC9NdWx0aUZvcm1hdE9uZURSZWFkZXIuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2Jyb3dzZXIvQnJvd3NlckJhcmNvZGVSZWFkZXIuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvZGF0YW1hdHJpeC9kZWNvZGVyL1ZlcnNpb24uanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvZGF0YW1hdHJpeC9kZWNvZGVyL0JpdE1hdHJpeFBhcnNlci5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9kYXRhbWF0cml4L2RlY29kZXIvRGF0YUJsb2NrLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL2NvbW1vbi9CaXRTb3VyY2UuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvZGF0YW1hdHJpeC9kZWNvZGVyL0RlY29kZWRCaXRTdHJlYW1QYXJzZXIuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvZGF0YW1hdHJpeC9kZWNvZGVyL0RlY29kZXIuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvZGF0YW1hdHJpeC9kZXRlY3Rvci9EZXRlY3Rvci5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9kYXRhbWF0cml4L0RhdGFNYXRyaXhSZWFkZXIuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2Jyb3dzZXIvQnJvd3NlckRhdGFtYXRyaXhDb2RlUmVhZGVyLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL3FyY29kZS9kZWNvZGVyL0Vycm9yQ29ycmVjdGlvbkxldmVsLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL3FyY29kZS9kZWNvZGVyL0Zvcm1hdEluZm9ybWF0aW9uLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL3FyY29kZS9kZWNvZGVyL0VDQmxvY2tzLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL3FyY29kZS9kZWNvZGVyL0VDQi5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9xcmNvZGUvZGVjb2Rlci9WZXJzaW9uLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL3FyY29kZS9kZWNvZGVyL0RhdGFNYXNrLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL3FyY29kZS9kZWNvZGVyL0JpdE1hdHJpeFBhcnNlci5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9xcmNvZGUvZGVjb2Rlci9EYXRhQmxvY2suanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvcXJjb2RlL2RlY29kZXIvTW9kZS5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9xcmNvZGUvZGVjb2Rlci9EZWNvZGVkQml0U3RyZWFtUGFyc2VyLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL3FyY29kZS9kZWNvZGVyL1FSQ29kZURlY29kZXJNZXRhRGF0YS5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9xcmNvZGUvZGVjb2Rlci9EZWNvZGVyLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL3FyY29kZS9kZXRlY3Rvci9BbGlnbm1lbnRQYXR0ZXJuLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL3FyY29kZS9kZXRlY3Rvci9BbGlnbm1lbnRQYXR0ZXJuRmluZGVyLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL3FyY29kZS9kZXRlY3Rvci9GaW5kZXJQYXR0ZXJuLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL3FyY29kZS9kZXRlY3Rvci9GaW5kZXJQYXR0ZXJuSW5mby5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9xcmNvZGUvZGV0ZWN0b3IvRmluZGVyUGF0dGVybkZpbmRlci5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9xcmNvZGUvZGV0ZWN0b3IvRGV0ZWN0b3IuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvcXJjb2RlL1FSQ29kZVJlYWRlci5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9wZGY0MTcvUERGNDE3Q29tbW9uLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL3BkZjQxNy9kZXRlY3Rvci9QREY0MTdEZXRlY3RvclJlc3VsdC5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9wZGY0MTcvZGV0ZWN0b3IvRGV0ZWN0b3IuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvcGRmNDE3L2RlY29kZXIvZWMvTW9kdWx1c1BvbHkuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvcGRmNDE3L2RlY29kZXIvZWMvTW9kdWx1c0Jhc2UuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvcGRmNDE3L2RlY29kZXIvZWMvTW9kdWx1c0dGLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL3BkZjQxNy9kZWNvZGVyL2VjL0Vycm9yQ29ycmVjdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9wZGY0MTcvZGVjb2Rlci9Cb3VuZGluZ0JveC5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9wZGY0MTcvZGVjb2Rlci9CYXJjb2RlTWV0YWRhdGEuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvdXRpbC9Gb3JtYXR0ZXIuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvcGRmNDE3L2RlY29kZXIvRGV0ZWN0aW9uUmVzdWx0Q29sdW1uLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL3BkZjQxNy9kZWNvZGVyL0JhcmNvZGVWYWx1ZS5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9wZGY0MTcvZGVjb2Rlci9EZXRlY3Rpb25SZXN1bHRSb3dJbmRpY2F0b3JDb2x1bW4uanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvcGRmNDE3L2RlY29kZXIvRGV0ZWN0aW9uUmVzdWx0LmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL3BkZjQxNy9kZWNvZGVyL0NvZGV3b3JkLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL3BkZjQxNy9kZWNvZGVyL1BERjQxN0NvZGV3b3JkRGVjb2Rlci5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9wZGY0MTcvUERGNDE3UmVzdWx0TWV0YWRhdGEuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvdXRpbC9Mb25nLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL051bGxQb2ludGVyRXhjZXB0aW9uLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL3V0aWwvT3V0cHV0U3RyZWFtLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL091dE9mTWVtb3J5RXJyb3IuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvdXRpbC9CeXRlQXJyYXlPdXRwdXRTdHJlYW0uanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvcGRmNDE3L2RlY29kZXIvRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9wZGY0MTcvZGVjb2Rlci9QREY0MTdTY2FubmluZ0RlY29kZXIuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvcGRmNDE3L1BERjQxN1JlYWRlci5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9SZWFkZXJFeGNlcHRpb24uanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvTXVsdGlGb3JtYXRSZWFkZXIuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2Jyb3dzZXIvQnJvd3Nlck11bHRpRm9ybWF0UmVhZGVyLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9icm93c2VyL0Jyb3dzZXJQREY0MTdSZWFkZXIuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2Jyb3dzZXIvQnJvd3NlclFSQ29kZVJlYWRlci5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9FbmNvZGVIaW50VHlwZS5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9jb21tb24vcmVlZHNvbG9tb24vUmVlZFNvbG9tb25FbmNvZGVyLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL3FyY29kZS9lbmNvZGVyL01hc2tVdGlsLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL3FyY29kZS9lbmNvZGVyL0J5dGVNYXRyaXguanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvcXJjb2RlL2VuY29kZXIvUVJDb2RlLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL1dyaXRlckV4Y2VwdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9xcmNvZGUvZW5jb2Rlci9NYXRyaXhVdGlsLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL3FyY29kZS9lbmNvZGVyL0Jsb2NrUGFpci5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9xcmNvZGUvZW5jb2Rlci9FbmNvZGVyLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9icm93c2VyL0Jyb3dzZXJRUkNvZGVTdmdXcml0ZXIuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2Jyb3dzZXIvRGVjb2RlQ29udGludW91c2x5Q2FsbGJhY2suanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2Jyb3dzZXIvSFRNTFZpc3VhbE1lZGlhRWxlbWVudC5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvYnJvd3Nlci5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9xcmNvZGUvUVJDb2RlV3JpdGVyLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL011bHRpRm9ybWF0V3JpdGVyLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL1BsYW5hcllVVkx1bWluYW5jZVNvdXJjZS5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9SR0JMdW1pbmFuY2VTb3VyY2UuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvdXRpbC9DaGFyc2V0LmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL3V0aWwvU3RhbmRhcmRDaGFyc2V0cy5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9henRlYy9lbmNvZGVyL0F6dGVjQ29kZS5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS91dGlsL0NvbGxlY3Rpb25zLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL2F6dGVjL2VuY29kZXIvVG9rZW4uanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvYXp0ZWMvZW5jb2Rlci9TaW1wbGVUb2tlbi5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9henRlYy9lbmNvZGVyL0JpbmFyeVNoaWZ0VG9rZW4uanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvYXp0ZWMvZW5jb2Rlci9Ub2tlbkhlbHBlcnMuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvYXp0ZWMvZW5jb2Rlci9FbmNvZGVyQ29uc3RhbnRzLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL2F6dGVjL2VuY29kZXIvTGF0Y2hUYWJsZS5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9henRlYy9lbmNvZGVyL1NoaWZ0VGFibGUuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvYXp0ZWMvZW5jb2Rlci9TdGF0ZS5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9henRlYy9lbmNvZGVyL0NoYXJNYXAuanMiLCJub2RlX21vZHVsZXMvQHp4aW5nL2xpYnJhcnkvY2pzL2NvcmUvYXp0ZWMvZW5jb2Rlci9IaWdoTGV2ZWxFbmNvZGVyLmpzIiwibm9kZV9tb2R1bGVzL0B6eGluZy9saWJyYXJ5L2Nqcy9jb3JlL2F6dGVjL2VuY29kZXIvRW5jb2Rlci5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvY29yZS9henRlYy9BenRlY1dyaXRlci5qcyIsIm5vZGVfbW9kdWxlcy9AenhpbmcvbGlicmFyeS9janMvaW5kZXguanMiLCJzcmMvd29ya2VyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGZpeFByb3RvKHRhcmdldCwgcHJvdG90eXBlKSB7XG4gIHZhciBzZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZjtcbiAgc2V0UHJvdG90eXBlT2YgPyBzZXRQcm90b3R5cGVPZih0YXJnZXQsIHByb3RvdHlwZSkgOiB0YXJnZXQuX19wcm90b19fID0gcHJvdG90eXBlO1xufVxuZnVuY3Rpb24gZml4U3RhY2sodGFyZ2V0LCBmbikge1xuICBpZiAoZm4gPT09IHZvaWQgMCkge1xuICAgIGZuID0gdGFyZ2V0LmNvbnN0cnVjdG9yO1xuICB9XG5cbiAgdmFyIGNhcHR1cmVTdGFja1RyYWNlID0gRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2U7XG4gIGNhcHR1cmVTdGFja1RyYWNlICYmIGNhcHR1cmVTdGFja1RyYWNlKHRhcmdldCwgZm4pO1xufVxuXG52YXIgX19leHRlbmRzID0gdW5kZWZpbmVkICYmIHVuZGVmaW5lZC5fX2V4dGVuZHMgfHwgZnVuY3Rpb24gKCkge1xuICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCB7XG4gICAgICBfX3Byb3RvX186IFtdXG4gICAgfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICBkLl9fcHJvdG9fXyA9IGI7XG4gICAgfSB8fCBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgZm9yICh2YXIgcCBpbiBiKSB7IGlmIChiLmhhc093blByb3BlcnR5KHApKSB7IGRbcF0gPSBiW3BdOyB9IH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gIH07XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcblxuICAgIGZ1bmN0aW9uIF9fKCkge1xuICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7XG4gICAgfVxuXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICB9O1xufSgpO1xuXG52YXIgQ3VzdG9tRXJyb3IgPSBmdW5jdGlvbiAoX3N1cGVyKSB7XG4gIF9fZXh0ZW5kcyhDdXN0b21FcnJvciwgX3N1cGVyKTtcblxuICBmdW5jdGlvbiBDdXN0b21FcnJvcihtZXNzYWdlKSB7XG4gICAgdmFyIF9uZXdUYXJnZXQgPSB0aGlzLmNvbnN0cnVjdG9yO1xuXG4gICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgbWVzc2FnZSkgfHwgdGhpcztcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfdGhpcywgJ25hbWUnLCB7XG4gICAgICB2YWx1ZTogX25ld1RhcmdldC5uYW1lLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBmaXhQcm90byhfdGhpcywgX25ld1RhcmdldC5wcm90b3R5cGUpO1xuICAgIGZpeFN0YWNrKF90aGlzKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICByZXR1cm4gQ3VzdG9tRXJyb3I7XG59KEVycm9yKTtcblxudmFyIF9fc3ByZWFkQXJyYXlzID0gdW5kZWZpbmVkICYmIHVuZGVmaW5lZC5fX3NwcmVhZEFycmF5cyB8fCBmdW5jdGlvbiAoKSB7XG4gIHZhciBhcmd1bWVudHMkMSA9IGFyZ3VtZW50cztcblxuICBmb3IgKHZhciBzID0gMCwgaSA9IDAsIGlsID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGlsOyBpKyspIHsgcyArPSBhcmd1bWVudHMkMVtpXS5sZW5ndGg7IH1cblxuICBmb3IgKHZhciByID0gQXJyYXkocyksIGsgPSAwLCBpID0gMDsgaSA8IGlsOyBpKyspIHsgZm9yICh2YXIgYSA9IGFyZ3VtZW50c1tpXSwgaiA9IDAsIGpsID0gYS5sZW5ndGg7IGogPCBqbDsgaisrLCBrKyspIHsgcltrXSA9IGFbal07IH0gfVxuXG4gIHJldHVybiByO1xufTtcbmZ1bmN0aW9uIGN1c3RvbUVycm9yRmFjdG9yeShmbiwgcGFyZW50KSB7XG4gIGlmIChwYXJlbnQgPT09IHZvaWQgMCkge1xuICAgIHBhcmVudCA9IEVycm9yO1xuICB9XG5cbiAgZnVuY3Rpb24gQ3VzdG9tRXJyb3IoKSB7XG4gICAgdmFyIGFyZ3VtZW50cyQxID0gYXJndW1lbnRzO1xuXG4gICAgdmFyIGFyZ3MgPSBbXTtcblxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICBhcmdzW19pXSA9IGFyZ3VtZW50cyQxW19pXTtcbiAgICB9XG5cbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgQ3VzdG9tRXJyb3IpKSB7IHJldHVybiBuZXcgKEN1c3RvbUVycm9yLmJpbmQuYXBwbHkoQ3VzdG9tRXJyb3IsIF9fc3ByZWFkQXJyYXlzKFt2b2lkIDBdLCBhcmdzKSkpKCk7IH1cbiAgICBwYXJlbnQuYXBwbHkodGhpcywgYXJncyk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICduYW1lJywge1xuICAgICAgdmFsdWU6IGZuLm5hbWUgfHwgcGFyZW50Lm5hbWUsXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIGZpeFN0YWNrKHRoaXMsIEN1c3RvbUVycm9yKTtcbiAgfVxuXG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhDdXN0b21FcnJvciwge1xuICAgIHByb3RvdHlwZToge1xuICAgICAgdmFsdWU6IE9iamVjdC5jcmVhdGUocGFyZW50LnByb3RvdHlwZSwge1xuICAgICAgICBjb25zdHJ1Y3Rvcjoge1xuICAgICAgICAgIHZhbHVlOiBDdXN0b21FcnJvcixcbiAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgeyBDdXN0b21FcnJvciwgY3VzdG9tRXJyb3JGYWN0b3J5IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jdXN0b20tZXJyb3IubWpzLm1hcFxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB0c19jdXN0b21fZXJyb3JfMSA9IHJlcXVpcmUoXCJ0cy1jdXN0b20tZXJyb3JcIik7XG4vKipcbiAqIEN1c3RvbSBFcnJvciBjbGFzcyBvZiB0eXBlIEV4Y2VwdGlvbi5cbiAqL1xudmFyIEV4Y2VwdGlvbiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoRXhjZXB0aW9uLCBfc3VwZXIpO1xuICAgIC8qKlxuICAgICAqIEFsbG93cyBFeGNlcHRpb24gdG8gYmUgY29uc3RydWN0ZWQgZGlyZWN0bHlcbiAgICAgKiB3aXRoIHNvbWUgbWVzc2FnZSBhbmQgcHJvdG90eXBlIGRlZmluaXRpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gRXhjZXB0aW9uKG1lc3NhZ2UpIHtcbiAgICAgICAgaWYgKG1lc3NhZ2UgPT09IHZvaWQgMCkgeyBtZXNzYWdlID0gdW5kZWZpbmVkOyB9XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIG1lc3NhZ2UpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIEV4Y2VwdGlvbi5wcm90b3R5cGUuZ2V0S2luZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGV4ID0gdGhpcy5jb25zdHJ1Y3RvcjtcbiAgICAgICAgcmV0dXJuIGV4LmtpbmQ7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBJdCdzIHR5cGVkIGFzIHN0cmluZyBzbyBpdCBjYW4gYmUgZXh0ZW5kZWQgYW5kIG92ZXJyaWRlbi5cbiAgICAgKi9cbiAgICBFeGNlcHRpb24ua2luZCA9ICdFeGNlcHRpb24nO1xuICAgIHJldHVybiBFeGNlcHRpb247XG59KHRzX2N1c3RvbV9lcnJvcl8xLkN1c3RvbUVycm9yKSk7XG5leHBvcnRzLmRlZmF1bHQgPSBFeGNlcHRpb247XG4vLyMgc291cmNlTWFwcGluZ1VSTD1FeGNlcHRpb24uanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBFeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuL0V4Y2VwdGlvblwiKTtcbi8qKlxuICogQ3VzdG9tIEVycm9yIGNsYXNzIG9mIHR5cGUgRXhjZXB0aW9uLlxuICovXG52YXIgQXJndW1lbnRFeGNlcHRpb24gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEFyZ3VtZW50RXhjZXB0aW9uLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIEFyZ3VtZW50RXhjZXB0aW9uKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIEFyZ3VtZW50RXhjZXB0aW9uLmtpbmQgPSAnQXJndW1lbnRFeGNlcHRpb24nO1xuICAgIHJldHVybiBBcmd1bWVudEV4Y2VwdGlvbjtcbn0oRXhjZXB0aW9uXzEuZGVmYXVsdCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gQXJndW1lbnRFeGNlcHRpb247XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Bcmd1bWVudEV4Y2VwdGlvbi5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIEV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4vRXhjZXB0aW9uXCIpO1xuLyoqXG4gKiBDdXN0b20gRXJyb3IgY2xhc3Mgb2YgdHlwZSBFeGNlcHRpb24uXG4gKi9cbnZhciBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uLmtpbmQgPSAnSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uJztcbiAgICByZXR1cm4gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uO1xufShFeGNlcHRpb25fMS5kZWZhdWx0KSk7XG5leHBvcnRzLmRlZmF1bHQgPSBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb247XG4vLyMgc291cmNlTWFwcGluZ1VSTD1JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24uanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IDIwMDkgWlhpbmcgYXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuL0lsbGVnYWxBcmd1bWVudEV4Y2VwdGlvblwiKTtcbnZhciBCaW5hcnlCaXRtYXAgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gQmluYXJ5Qml0bWFwKGJpbmFyaXplcikge1xuICAgICAgICB0aGlzLmJpbmFyaXplciA9IGJpbmFyaXplcjtcbiAgICAgICAgaWYgKGJpbmFyaXplciA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoJ0JpbmFyaXplciBtdXN0IGJlIG5vbi1udWxsLicpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEByZXR1cm4gVGhlIHdpZHRoIG9mIHRoZSBiaXRtYXAuXG4gICAgICovXG4gICAgQmluYXJ5Qml0bWFwLnByb3RvdHlwZS5nZXRXaWR0aCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmluYXJpemVyLmdldFdpZHRoKCk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIFRoZSBoZWlnaHQgb2YgdGhlIGJpdG1hcC5cbiAgICAgKi9cbiAgICBCaW5hcnlCaXRtYXAucHJvdG90eXBlLmdldEhlaWdodCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmluYXJpemVyLmdldEhlaWdodCgpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQ29udmVydHMgb25lIHJvdyBvZiBsdW1pbmFuY2UgZGF0YSB0byAxIGJpdCBkYXRhLiBNYXkgYWN0dWFsbHkgZG8gdGhlIGNvbnZlcnNpb24sIG9yIHJldHVyblxuICAgICAqIGNhY2hlZCBkYXRhLiBDYWxsZXJzIHNob3VsZCBhc3N1bWUgdGhpcyBtZXRob2QgaXMgZXhwZW5zaXZlIGFuZCBjYWxsIGl0IGFzIHNlbGRvbSBhcyBwb3NzaWJsZS5cbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBpbnRlbmRlZCBmb3IgZGVjb2RpbmcgMUQgYmFyY29kZXMgYW5kIG1heSBjaG9vc2UgdG8gYXBwbHkgc2hhcnBlbmluZy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB5IFRoZSByb3cgdG8gZmV0Y2gsIHdoaWNoIG11c3QgYmUgaW4gWzAsIGJpdG1hcCBoZWlnaHQpXG4gICAgICogQHBhcmFtIHJvdyBBbiBvcHRpb25hbCBwcmVhbGxvY2F0ZWQgYXJyYXkuIElmIG51bGwgb3IgdG9vIHNtYWxsLCBpdCB3aWxsIGJlIGlnbm9yZWQuXG4gICAgICogICAgICAgICAgICBJZiB1c2VkLCB0aGUgQmluYXJpemVyIHdpbGwgY2FsbCBCaXRBcnJheS5jbGVhcigpLiBBbHdheXMgdXNlIHRoZSByZXR1cm5lZCBvYmplY3QuXG4gICAgICogQHJldHVybiBUaGUgYXJyYXkgb2YgYml0cyBmb3IgdGhpcyByb3cgKHRydWUgbWVhbnMgYmxhY2spLlxuICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb24gaWYgcm93IGNhbid0IGJlIGJpbmFyaXplZFxuICAgICAqL1xuICAgIEJpbmFyeUJpdG1hcC5wcm90b3R5cGUuZ2V0QmxhY2tSb3cgPSBmdW5jdGlvbiAoeSAvKmludCovLCByb3cpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmluYXJpemVyLmdldEJsYWNrUm93KHksIHJvdyk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBhIDJEIGFycmF5IG9mIGx1bWluYW5jZSBkYXRhIHRvIDEgYml0LiBBcyBhYm92ZSwgYXNzdW1lIHRoaXMgbWV0aG9kIGlzIGV4cGVuc2l2ZVxuICAgICAqIGFuZCBkbyBub3QgY2FsbCBpdCByZXBlYXRlZGx5LiBUaGlzIG1ldGhvZCBpcyBpbnRlbmRlZCBmb3IgZGVjb2RpbmcgMkQgYmFyY29kZXMgYW5kIG1heSBvclxuICAgICAqIG1heSBub3QgYXBwbHkgc2hhcnBlbmluZy4gVGhlcmVmb3JlLCBhIHJvdyBmcm9tIHRoaXMgbWF0cml4IG1heSBub3QgYmUgaWRlbnRpY2FsIHRvIG9uZVxuICAgICAqIGZldGNoZWQgdXNpbmcgZ2V0QmxhY2tSb3coKSwgc28gZG9uJ3QgbWl4IGFuZCBtYXRjaCBiZXR3ZWVuIHRoZW0uXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIFRoZSAyRCBhcnJheSBvZiBiaXRzIGZvciB0aGUgaW1hZ2UgKHRydWUgbWVhbnMgYmxhY2spLlxuICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb24gaWYgaW1hZ2UgY2FuJ3QgYmUgYmluYXJpemVkIHRvIG1ha2UgYSBtYXRyaXhcbiAgICAgKi9cbiAgICBCaW5hcnlCaXRtYXAucHJvdG90eXBlLmdldEJsYWNrTWF0cml4ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBUaGUgbWF0cml4IGlzIGNyZWF0ZWQgb24gZGVtYW5kIHRoZSBmaXJzdCB0aW1lIGl0IGlzIHJlcXVlc3RlZCwgdGhlbiBjYWNoZWQuIFRoZXJlIGFyZSB0d29cbiAgICAgICAgLy8gcmVhc29ucyBmb3IgdGhpczpcbiAgICAgICAgLy8gMS4gVGhpcyB3b3JrIHdpbGwgbmV2ZXIgYmUgZG9uZSBpZiB0aGUgY2FsbGVyIG9ubHkgaW5zdGFsbHMgMUQgUmVhZGVyIG9iamVjdHMsIG9yIGlmIGFcbiAgICAgICAgLy8gICAgMUQgUmVhZGVyIGZpbmRzIGEgYmFyY29kZSBiZWZvcmUgdGhlIDJEIFJlYWRlcnMgcnVuLlxuICAgICAgICAvLyAyLiBUaGlzIHdvcmsgd2lsbCBvbmx5IGJlIGRvbmUgb25jZSBldmVuIGlmIHRoZSBjYWxsZXIgaW5zdGFsbHMgbXVsdGlwbGUgMkQgUmVhZGVycy5cbiAgICAgICAgaWYgKHRoaXMubWF0cml4ID09PSBudWxsIHx8IHRoaXMubWF0cml4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMubWF0cml4ID0gdGhpcy5iaW5hcml6ZXIuZ2V0QmxhY2tNYXRyaXgoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5tYXRyaXg7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIFdoZXRoZXIgdGhpcyBiaXRtYXAgY2FuIGJlIGNyb3BwZWQuXG4gICAgICovXG4gICAgQmluYXJ5Qml0bWFwLnByb3RvdHlwZS5pc0Nyb3BTdXBwb3J0ZWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJpbmFyaXplci5nZXRMdW1pbmFuY2VTb3VyY2UoKS5pc0Nyb3BTdXBwb3J0ZWQoKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBuZXcgb2JqZWN0IHdpdGggY3JvcHBlZCBpbWFnZSBkYXRhLiBJbXBsZW1lbnRhdGlvbnMgbWF5IGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlXG4gICAgICogb3JpZ2luYWwgZGF0YSByYXRoZXIgdGhhbiBhIGNvcHkuIE9ubHkgY2FsbGFibGUgaWYgaXNDcm9wU3VwcG9ydGVkKCkgaXMgdHJ1ZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBsZWZ0IFRoZSBsZWZ0IGNvb3JkaW5hdGUsIHdoaWNoIG11c3QgYmUgaW4gWzAsZ2V0V2lkdGgoKSlcbiAgICAgKiBAcGFyYW0gdG9wIFRoZSB0b3AgY29vcmRpbmF0ZSwgd2hpY2ggbXVzdCBiZSBpbiBbMCxnZXRIZWlnaHQoKSlcbiAgICAgKiBAcGFyYW0gd2lkdGggVGhlIHdpZHRoIG9mIHRoZSByZWN0YW5nbGUgdG8gY3JvcC5cbiAgICAgKiBAcGFyYW0gaGVpZ2h0IFRoZSBoZWlnaHQgb2YgdGhlIHJlY3RhbmdsZSB0byBjcm9wLlxuICAgICAqIEByZXR1cm4gQSBjcm9wcGVkIHZlcnNpb24gb2YgdGhpcyBvYmplY3QuXG4gICAgICovXG4gICAgQmluYXJ5Qml0bWFwLnByb3RvdHlwZS5jcm9wID0gZnVuY3Rpb24gKGxlZnQgLyppbnQqLywgdG9wIC8qaW50Ki8sIHdpZHRoIC8qaW50Ki8sIGhlaWdodCAvKmludCovKSB7XG4gICAgICAgIHZhciBuZXdTb3VyY2UgPSB0aGlzLmJpbmFyaXplci5nZXRMdW1pbmFuY2VTb3VyY2UoKS5jcm9wKGxlZnQsIHRvcCwgd2lkdGgsIGhlaWdodCk7XG4gICAgICAgIHJldHVybiBuZXcgQmluYXJ5Qml0bWFwKHRoaXMuYmluYXJpemVyLmNyZWF0ZUJpbmFyaXplcihuZXdTb3VyY2UpKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEByZXR1cm4gV2hldGhlciB0aGlzIGJpdG1hcCBzdXBwb3J0cyBjb3VudGVyLWNsb2Nrd2lzZSByb3RhdGlvbi5cbiAgICAgKi9cbiAgICBCaW5hcnlCaXRtYXAucHJvdG90eXBlLmlzUm90YXRlU3VwcG9ydGVkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5iaW5hcml6ZXIuZ2V0THVtaW5hbmNlU291cmNlKCkuaXNSb3RhdGVTdXBwb3J0ZWQoKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBuZXcgb2JqZWN0IHdpdGggcm90YXRlZCBpbWFnZSBkYXRhIGJ5IDkwIGRlZ3JlZXMgY291bnRlcmNsb2Nrd2lzZS5cbiAgICAgKiBPbmx5IGNhbGxhYmxlIGlmIHtAbGluayAjaXNSb3RhdGVTdXBwb3J0ZWQoKX0gaXMgdHJ1ZS5cbiAgICAgKlxuICAgICAqIEByZXR1cm4gQSByb3RhdGVkIHZlcnNpb24gb2YgdGhpcyBvYmplY3QuXG4gICAgICovXG4gICAgQmluYXJ5Qml0bWFwLnByb3RvdHlwZS5yb3RhdGVDb3VudGVyQ2xvY2t3aXNlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbmV3U291cmNlID0gdGhpcy5iaW5hcml6ZXIuZ2V0THVtaW5hbmNlU291cmNlKCkucm90YXRlQ291bnRlckNsb2Nrd2lzZSgpO1xuICAgICAgICByZXR1cm4gbmV3IEJpbmFyeUJpdG1hcCh0aGlzLmJpbmFyaXplci5jcmVhdGVCaW5hcml6ZXIobmV3U291cmNlKSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCB3aXRoIHJvdGF0ZWQgaW1hZ2UgZGF0YSBieSA0NSBkZWdyZWVzIGNvdW50ZXJjbG9ja3dpc2UuXG4gICAgICogT25seSBjYWxsYWJsZSBpZiB7QGxpbmsgI2lzUm90YXRlU3VwcG9ydGVkKCl9IGlzIHRydWUuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIEEgcm90YXRlZCB2ZXJzaW9uIG9mIHRoaXMgb2JqZWN0LlxuICAgICAqL1xuICAgIEJpbmFyeUJpdG1hcC5wcm90b3R5cGUucm90YXRlQ291bnRlckNsb2Nrd2lzZTQ1ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbmV3U291cmNlID0gdGhpcy5iaW5hcml6ZXIuZ2V0THVtaW5hbmNlU291cmNlKCkucm90YXRlQ291bnRlckNsb2Nrd2lzZTQ1KCk7XG4gICAgICAgIHJldHVybiBuZXcgQmluYXJ5Qml0bWFwKHRoaXMuYmluYXJpemVyLmNyZWF0ZUJpbmFyaXplcihuZXdTb3VyY2UpKTtcbiAgICB9O1xuICAgIC8qQE92ZXJyaWRlKi9cbiAgICBCaW5hcnlCaXRtYXAucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QmxhY2tNYXRyaXgoKS50b1N0cmluZygpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlIC8qOiBOb3RGb3VuZEV4Y2VwdGlvbiovKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBCaW5hcnlCaXRtYXA7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gQmluYXJ5Qml0bWFwO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QmluYXJ5Qml0bWFwLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgRXhjZXB0aW9uXzEgPSByZXF1aXJlKFwiLi9FeGNlcHRpb25cIik7XG4vKipcbiAqIEN1c3RvbSBFcnJvciBjbGFzcyBvZiB0eXBlIEV4Y2VwdGlvbi5cbiAqL1xudmFyIENoZWNrc3VtRXhjZXB0aW9uID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhDaGVja3N1bUV4Y2VwdGlvbiwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBDaGVja3N1bUV4Y2VwdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBDaGVja3N1bUV4Y2VwdGlvbi5nZXRDaGVja3N1bUluc3RhbmNlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IENoZWNrc3VtRXhjZXB0aW9uKCk7XG4gICAgfTtcbiAgICBDaGVja3N1bUV4Y2VwdGlvbi5raW5kID0gJ0NoZWNrc3VtRXhjZXB0aW9uJztcbiAgICByZXR1cm4gQ2hlY2tzdW1FeGNlcHRpb247XG59KEV4Y2VwdGlvbl8xLmRlZmF1bHQpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IENoZWNrc3VtRXhjZXB0aW9uO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Q2hlY2tzdW1FeGNlcHRpb24uanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IDIwMDkgWlhpbmcgYXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qKlxuICogVGhpcyBjbGFzcyBoaWVyYXJjaHkgcHJvdmlkZXMgYSBzZXQgb2YgbWV0aG9kcyB0byBjb252ZXJ0IGx1bWluYW5jZSBkYXRhIHRvIDEgYml0IGRhdGEuXG4gKiBJdCBhbGxvd3MgdGhlIGFsZ29yaXRobSB0byB2YXJ5IHBvbHltb3JwaGljYWxseSwgZm9yIGV4YW1wbGUgYWxsb3dpbmcgYSB2ZXJ5IGV4cGVuc2l2ZVxuICogdGhyZXNob2xkaW5nIHRlY2huaXF1ZSBmb3Igc2VydmVycyBhbmQgYSBmYXN0IG9uZSBmb3IgbW9iaWxlLiBJdCBhbHNvIHBlcm1pdHMgdGhlIGltcGxlbWVudGF0aW9uXG4gKiB0byB2YXJ5LCBlLmcuIGEgSk5JIHZlcnNpb24gZm9yIEFuZHJvaWQgYW5kIGEgSmF2YSBmYWxsYmFjayB2ZXJzaW9uIGZvciBvdGhlciBwbGF0Zm9ybXMuXG4gKlxuICogQGF1dGhvciBkc3dpdGtpbkBnb29nbGUuY29tIChEYW5pZWwgU3dpdGtpbilcbiAqL1xudmFyIEJpbmFyaXplciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBCaW5hcml6ZXIoc291cmNlKSB7XG4gICAgICAgIHRoaXMuc291cmNlID0gc291cmNlO1xuICAgIH1cbiAgICBCaW5hcml6ZXIucHJvdG90eXBlLmdldEx1bWluYW5jZVNvdXJjZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc291cmNlO1xuICAgIH07XG4gICAgQmluYXJpemVyLnByb3RvdHlwZS5nZXRXaWR0aCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc291cmNlLmdldFdpZHRoKCk7XG4gICAgfTtcbiAgICBCaW5hcml6ZXIucHJvdG90eXBlLmdldEhlaWdodCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc291cmNlLmdldEhlaWdodCgpO1xuICAgIH07XG4gICAgcmV0dXJuIEJpbmFyaXplcjtcbn0oKSk7XG5leHBvcnRzLmRlZmF1bHQgPSBCaW5hcml6ZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1CaW5hcml6ZXIuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgU3lzdGVtID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFN5c3RlbSgpIHtcbiAgICB9XG4gICAgLy8gcHVibGljIHN0YXRpYyB2b2lkIGFycmF5Y29weShPYmplY3Qgc3JjLCBpbnQgc3JjUG9zLCBPYmplY3QgZGVzdCwgaW50IGRlc3RQb3MsIGludCBsZW5ndGgpXG4gICAgLyoqXG4gICAgICogTWFrZXMgYSBjb3B5IG9mIGEgYXJyYXkuXG4gICAgICovXG4gICAgU3lzdGVtLmFycmF5Y29weSA9IGZ1bmN0aW9uIChzcmMsIHNyY1BvcywgZGVzdCwgZGVzdFBvcywgbGVuZ3RoKSB7XG4gICAgICAgIC8vIFRPRE86IGJldHRlciB1c2Ugc3BsaXQgb3Igc2V0P1xuICAgICAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgICAgIGRlc3RbZGVzdFBvcysrXSA9IHNyY1tzcmNQb3MrK107XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGN1cnJlbnQgdGltZSBpbiBtaWxsaXNlY29uZHMuXG4gICAgICovXG4gICAgU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gRGF0ZS5ub3coKTtcbiAgICB9O1xuICAgIHJldHVybiBTeXN0ZW07XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gU3lzdGVtO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U3lzdGVtLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgRXhjZXB0aW9uXzEgPSByZXF1aXJlKFwiLi9FeGNlcHRpb25cIik7XG4vKipcbiAqIEN1c3RvbSBFcnJvciBjbGFzcyBvZiB0eXBlIEV4Y2VwdGlvbi5cbiAqL1xudmFyIEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24sIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uLmtpbmQgPSAnSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbic7XG4gICAgcmV0dXJuIEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb247XG59KEV4Y2VwdGlvbl8xLmRlZmF1bHQpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb247XG4vLyMgc291cmNlTWFwcGluZ1VSTD1JbmRleE91dE9mQm91bmRzRXhjZXB0aW9uLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4vSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvblwiKTtcbi8qKlxuICogQ3VzdG9tIEVycm9yIGNsYXNzIG9mIHR5cGUgRXhjZXB0aW9uLlxuICovXG52YXIgQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24sIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uKGluZGV4LCBtZXNzYWdlKSB7XG4gICAgICAgIGlmIChpbmRleCA9PT0gdm9pZCAwKSB7IGluZGV4ID0gdW5kZWZpbmVkOyB9XG4gICAgICAgIGlmIChtZXNzYWdlID09PSB2b2lkIDApIHsgbWVzc2FnZSA9IHVuZGVmaW5lZDsgfVxuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBtZXNzYWdlKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5pbmRleCA9IGluZGV4O1xuICAgICAgICBfdGhpcy5tZXNzYWdlID0gbWVzc2FnZTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24ua2luZCA9ICdBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24nO1xuICAgIHJldHVybiBBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb247XG59KEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb25fMS5kZWZhdWx0KSk7XG5leHBvcnRzLmRlZmF1bHQgPSBBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb247XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24uanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX192YWx1ZXMgPSAodGhpcyAmJiB0aGlzLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7XG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgU3lzdGVtXzEgPSByZXF1aXJlKFwiLi9TeXN0ZW1cIik7XG52YXIgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEgPSByZXF1aXJlKFwiLi4vSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXCIpO1xudmFyIEFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4uL0FycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvblwiKTtcbnZhciBBcnJheXMgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gQXJyYXlzKCkge1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBc3NpZ25zIHRoZSBzcGVjaWZpZWQgaW50IHZhbHVlIHRvIGVhY2ggZWxlbWVudCBvZiB0aGUgc3BlY2lmaWVkIGFycmF5XG4gICAgICogb2YgaW50cy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBhIHRoZSBhcnJheSB0byBiZSBmaWxsZWRcbiAgICAgKiBAcGFyYW0gdmFsIHRoZSB2YWx1ZSB0byBiZSBzdG9yZWQgaW4gYWxsIGVsZW1lbnRzIG9mIHRoZSBhcnJheVxuICAgICAqL1xuICAgIEFycmF5cy5maWxsID0gZnVuY3Rpb24gKGEsIHZhbCkge1xuICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gYS5sZW5ndGg7IGkgPCBsZW47IGkrKylcbiAgICAgICAgICAgIGFbaV0gPSB2YWw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBBc3NpZ25zIHRoZSBzcGVjaWZpZWQgaW50IHZhbHVlIHRvIGVhY2ggZWxlbWVudCBvZiB0aGUgc3BlY2lmaWVkXG4gICAgICogcmFuZ2Ugb2YgdGhlIHNwZWNpZmllZCBhcnJheSBvZiBpbnRzLiAgVGhlIHJhbmdlIHRvIGJlIGZpbGxlZFxuICAgICAqIGV4dGVuZHMgZnJvbSBpbmRleCB7QGNvZGUgZnJvbUluZGV4fSwgaW5jbHVzaXZlLCB0byBpbmRleFxuICAgICAqIHtAY29kZSB0b0luZGV4fSwgZXhjbHVzaXZlLiAgKElmIHtAY29kZSBmcm9tSW5kZXg9PXRvSW5kZXh9LCB0aGVcbiAgICAgKiByYW5nZSB0byBiZSBmaWxsZWQgaXMgZW1wdHkuKVxuICAgICAqXG4gICAgICogQHBhcmFtIGEgdGhlIGFycmF5IHRvIGJlIGZpbGxlZFxuICAgICAqIEBwYXJhbSBmcm9tSW5kZXggdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBlbGVtZW50IChpbmNsdXNpdmUpIHRvIGJlXG4gICAgICogICAgICAgIGZpbGxlZCB3aXRoIHRoZSBzcGVjaWZpZWQgdmFsdWVcbiAgICAgKiBAcGFyYW0gdG9JbmRleCB0aGUgaW5kZXggb2YgdGhlIGxhc3QgZWxlbWVudCAoZXhjbHVzaXZlKSB0byBiZVxuICAgICAqICAgICAgICBmaWxsZWQgd2l0aCB0aGUgc3BlY2lmaWVkIHZhbHVlXG4gICAgICogQHBhcmFtIHZhbCB0aGUgdmFsdWUgdG8gYmUgc3RvcmVkIGluIGFsbCBlbGVtZW50cyBvZiB0aGUgYXJyYXlcbiAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiB7QGNvZGUgZnJvbUluZGV4ID4gdG9JbmRleH1cbiAgICAgKiBAdGhyb3dzIEFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiBpZiB7QGNvZGUgZnJvbUluZGV4IDwgMH0gb3JcbiAgICAgKiAgICAgICAgIHtAY29kZSB0b0luZGV4ID4gYS5sZW5ndGh9XG4gICAgICovXG4gICAgQXJyYXlzLmZpbGxXaXRoaW4gPSBmdW5jdGlvbiAoYSwgZnJvbUluZGV4LCB0b0luZGV4LCB2YWwpIHtcbiAgICAgICAgQXJyYXlzLnJhbmdlQ2hlY2soYS5sZW5ndGgsIGZyb21JbmRleCwgdG9JbmRleCk7XG4gICAgICAgIGZvciAodmFyIGkgPSBmcm9tSW5kZXg7IGkgPCB0b0luZGV4OyBpKyspXG4gICAgICAgICAgICBhW2ldID0gdmFsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQ2hlY2tzIHRoYXQge0Bjb2RlIGZyb21JbmRleH0gYW5kIHtAY29kZSB0b0luZGV4fSBhcmUgaW5cbiAgICAgKiB0aGUgcmFuZ2UgYW5kIHRocm93cyBhbiBleGNlcHRpb24gaWYgdGhleSBhcmVuJ3QuXG4gICAgICovXG4gICAgQXJyYXlzLnJhbmdlQ2hlY2sgPSBmdW5jdGlvbiAoYXJyYXlMZW5ndGgsIGZyb21JbmRleCwgdG9JbmRleCkge1xuICAgICAgICBpZiAoZnJvbUluZGV4ID4gdG9JbmRleCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoJ2Zyb21JbmRleCgnICsgZnJvbUluZGV4ICsgJykgPiB0b0luZGV4KCcgKyB0b0luZGV4ICsgJyknKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZnJvbUluZGV4IDwgMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbl8xLmRlZmF1bHQoZnJvbUluZGV4KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG9JbmRleCA+IGFycmF5TGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uXzEuZGVmYXVsdCh0b0luZGV4KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgQXJyYXlzLmFzTGlzdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIGFyZ3NbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXJncztcbiAgICB9O1xuICAgIEFycmF5cy5jcmVhdGUgPSBmdW5jdGlvbiAocm93cywgY29scywgdmFsdWUpIHtcbiAgICAgICAgdmFyIGFyciA9IEFycmF5LmZyb20oeyBsZW5ndGg6IHJvd3MgfSk7XG4gICAgICAgIHJldHVybiBhcnIubWFwKGZ1bmN0aW9uICh4KSB7IHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiBjb2xzIH0pLmZpbGwodmFsdWUpOyB9KTtcbiAgICB9O1xuICAgIEFycmF5cy5jcmVhdGVJbnQzMkFycmF5ID0gZnVuY3Rpb24gKHJvd3MsIGNvbHMsIHZhbHVlKSB7XG4gICAgICAgIHZhciBhcnIgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiByb3dzIH0pO1xuICAgICAgICByZXR1cm4gYXJyLm1hcChmdW5jdGlvbiAoeCkgeyByZXR1cm4gSW50MzJBcnJheS5mcm9tKHsgbGVuZ3RoOiBjb2xzIH0pLmZpbGwodmFsdWUpOyB9KTtcbiAgICB9O1xuICAgIEFycmF5cy5lcXVhbHMgPSBmdW5jdGlvbiAoZmlyc3QsIHNlY29uZCkge1xuICAgICAgICBpZiAoIWZpcnN0KSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFzZWNvbmQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWZpcnN0Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghc2Vjb25kLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaXJzdC5sZW5ndGggIT09IHNlY29uZC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoXzEgPSBmaXJzdC5sZW5ndGg7IGkgPCBsZW5ndGhfMTsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZmlyc3RbaV0gIT09IHNlY29uZFtpXSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuICAgIEFycmF5cy5oYXNoQ29kZSA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgIHZhciBlXzEsIF9hO1xuICAgICAgICBpZiAoYSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJlc3VsdCA9IDE7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKHZhciBhXzEgPSBfX3ZhbHVlcyhhKSwgYV8xXzEgPSBhXzEubmV4dCgpOyAhYV8xXzEuZG9uZTsgYV8xXzEgPSBhXzEubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBhXzFfMS52YWx1ZTtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSAzMSAqIHJlc3VsdCArIGVsZW1lbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChhXzFfMSAmJiAhYV8xXzEuZG9uZSAmJiAoX2EgPSBhXzEucmV0dXJuKSkgX2EuY2FsbChhXzEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICBBcnJheXMuZmlsbFVpbnQ4QXJyYXkgPSBmdW5jdGlvbiAoYSwgdmFsdWUpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgIT09IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGFbaV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgQXJyYXlzLmNvcHlPZiA9IGZ1bmN0aW9uIChvcmlnaW5hbCwgbmV3TGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBvcmlnaW5hbC5zbGljZSgwLCBuZXdMZW5ndGgpO1xuICAgIH07XG4gICAgQXJyYXlzLmNvcHlPZlVpbnQ4QXJyYXkgPSBmdW5jdGlvbiAob3JpZ2luYWwsIG5ld0xlbmd0aCkge1xuICAgICAgICBpZiAob3JpZ2luYWwubGVuZ3RoIDw9IG5ld0xlbmd0aCkge1xuICAgICAgICAgICAgdmFyIG5ld0FycmF5ID0gbmV3IFVpbnQ4QXJyYXkobmV3TGVuZ3RoKTtcbiAgICAgICAgICAgIG5ld0FycmF5LnNldChvcmlnaW5hbCk7XG4gICAgICAgICAgICByZXR1cm4gbmV3QXJyYXk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9yaWdpbmFsLnNsaWNlKDAsIG5ld0xlbmd0aCk7XG4gICAgfTtcbiAgICBBcnJheXMuY29weU9mUmFuZ2UgPSBmdW5jdGlvbiAob3JpZ2luYWwsIGZyb20sIHRvKSB7XG4gICAgICAgIHZhciBuZXdMZW5ndGggPSB0byAtIGZyb207XG4gICAgICAgIHZhciBjb3B5ID0gbmV3IEludDMyQXJyYXkobmV3TGVuZ3RoKTtcbiAgICAgICAgU3lzdGVtXzEuZGVmYXVsdC5hcnJheWNvcHkob3JpZ2luYWwsIGZyb20sIGNvcHksIDAsIG5ld0xlbmd0aCk7XG4gICAgICAgIHJldHVybiBjb3B5O1xuICAgIH07XG4gICAgLypcbiAgICAqIFJldHVybnMgdGhlIGluZGV4IG9mIG9mIHRoZSBlbGVtZW50IGluIGEgc29ydGVkIGFycmF5IG9yICgtbi0xKSB3aGVyZSBuIGlzIHRoZSBpbnNlcnRpb24gcG9pbnRcbiAgICAqIGZvciB0aGUgbmV3IGVsZW1lbnQuXG4gICAgKiBQYXJhbWV0ZXJzOlxuICAgICogICAgIGFyIC0gQSBzb3J0ZWQgYXJyYXlcbiAgICAqICAgICBlbCAtIEFuIGVsZW1lbnQgdG8gc2VhcmNoIGZvclxuICAgICogICAgIGNvbXBhcmF0b3IgLSBBIGNvbXBhcmF0b3IgZnVuY3Rpb24uIFRoZSBmdW5jdGlvbiB0YWtlcyB0d28gYXJndW1lbnRzOiAoYSwgYikgYW5kIHJldHVybnM6XG4gICAgKiAgICAgICAgYSBuZWdhdGl2ZSBudW1iZXIgIGlmIGEgaXMgbGVzcyB0aGFuIGI7XG4gICAgKiAgICAgICAgMCBpZiBhIGlzIGVxdWFsIHRvIGI7XG4gICAgKiAgICAgICAgYSBwb3NpdGl2ZSBudW1iZXIgb2YgYSBpcyBncmVhdGVyIHRoYW4gYi5cbiAgICAqIFRoZSBhcnJheSBtYXkgY29udGFpbiBkdXBsaWNhdGUgZWxlbWVudHMuIElmIHRoZXJlIGFyZSBtb3JlIHRoYW4gb25lIGVxdWFsIGVsZW1lbnRzIGluIHRoZSBhcnJheSxcbiAgICAqIHRoZSByZXR1cm5lZCB2YWx1ZSBjYW4gYmUgdGhlIGluZGV4IG9mIGFueSBvbmUgb2YgdGhlIGVxdWFsIGVsZW1lbnRzLlxuICAgICpcbiAgICAqIGh0dHA6Ly9qc2ZpZGRsZS5uZXQvYXJ5emhvdi9wa2ZzdDU1MC9cbiAgICAqL1xuICAgIEFycmF5cy5iaW5hcnlTZWFyY2ggPSBmdW5jdGlvbiAoYXIsIGVsLCBjb21wYXJhdG9yKSB7XG4gICAgICAgIGlmICh1bmRlZmluZWQgPT09IGNvbXBhcmF0b3IpIHtcbiAgICAgICAgICAgIGNvbXBhcmF0b3IgPSBBcnJheXMubnVtYmVyQ29tcGFyYXRvcjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbSA9IDA7XG4gICAgICAgIHZhciBuID0gYXIubGVuZ3RoIC0gMTtcbiAgICAgICAgd2hpbGUgKG0gPD0gbikge1xuICAgICAgICAgICAgdmFyIGsgPSAobiArIG0pID4+IDE7XG4gICAgICAgICAgICB2YXIgY21wID0gY29tcGFyYXRvcihlbCwgYXJba10pO1xuICAgICAgICAgICAgaWYgKGNtcCA+IDApIHtcbiAgICAgICAgICAgICAgICBtID0gayArIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjbXAgPCAwKSB7XG4gICAgICAgICAgICAgICAgbiA9IGsgLSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIC1tIC0gMTtcbiAgICB9O1xuICAgIEFycmF5cy5udW1iZXJDb21wYXJhdG9yID0gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGEgLSBiO1xuICAgIH07XG4gICAgcmV0dXJuIEFycmF5cztcbn0oKSk7XG5leHBvcnRzLmRlZmF1bHQgPSBBcnJheXM7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BcnJheXMuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vKipcbiAqIFBvbnlmaWxsIGZvciBKYXZhJ3MgSW50ZWdlciBjbGFzcy5cbiAqL1xudmFyIEludGVnZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gSW50ZWdlcigpIHtcbiAgICB9XG4gICAgSW50ZWdlci5udW1iZXJPZlRyYWlsaW5nWmVyb3MgPSBmdW5jdGlvbiAoaSkge1xuICAgICAgICB2YXIgeTtcbiAgICAgICAgaWYgKGkgPT09IDApXG4gICAgICAgICAgICByZXR1cm4gMzI7XG4gICAgICAgIHZhciBuID0gMzE7XG4gICAgICAgIHkgPSBpIDw8IDE2O1xuICAgICAgICBpZiAoeSAhPT0gMCkge1xuICAgICAgICAgICAgbiAtPSAxNjtcbiAgICAgICAgICAgIGkgPSB5O1xuICAgICAgICB9XG4gICAgICAgIHkgPSBpIDw8IDg7XG4gICAgICAgIGlmICh5ICE9PSAwKSB7XG4gICAgICAgICAgICBuIC09IDg7XG4gICAgICAgICAgICBpID0geTtcbiAgICAgICAgfVxuICAgICAgICB5ID0gaSA8PCA0O1xuICAgICAgICBpZiAoeSAhPT0gMCkge1xuICAgICAgICAgICAgbiAtPSA0O1xuICAgICAgICAgICAgaSA9IHk7XG4gICAgICAgIH1cbiAgICAgICAgeSA9IGkgPDwgMjtcbiAgICAgICAgaWYgKHkgIT09IDApIHtcbiAgICAgICAgICAgIG4gLT0gMjtcbiAgICAgICAgICAgIGkgPSB5O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuIC0gKChpIDw8IDEpID4+PiAzMSk7XG4gICAgfTtcbiAgICBJbnRlZ2VyLm51bWJlck9mTGVhZGluZ1plcm9zID0gZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgLy8gSEQsIEZpZ3VyZSA1LTZcbiAgICAgICAgaWYgKGkgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiAzMjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbiA9IDE7XG4gICAgICAgIGlmIChpID4+PiAxNiA9PT0gMCkge1xuICAgICAgICAgICAgbiArPSAxNjtcbiAgICAgICAgICAgIGkgPDw9IDE2O1xuICAgICAgICB9XG4gICAgICAgIGlmIChpID4+PiAyNCA9PT0gMCkge1xuICAgICAgICAgICAgbiArPSA4O1xuICAgICAgICAgICAgaSA8PD0gODtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaSA+Pj4gMjggPT09IDApIHtcbiAgICAgICAgICAgIG4gKz0gNDtcbiAgICAgICAgICAgIGkgPDw9IDQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGkgPj4+IDMwID09PSAwKSB7XG4gICAgICAgICAgICBuICs9IDI7XG4gICAgICAgICAgICBpIDw8PSAyO1xuICAgICAgICB9XG4gICAgICAgIG4gLT0gaSA+Pj4gMzE7XG4gICAgICAgIHJldHVybiBuO1xuICAgIH07XG4gICAgSW50ZWdlci50b0hleFN0cmluZyA9IGZ1bmN0aW9uIChpKSB7XG4gICAgICAgIHJldHVybiBpLnRvU3RyaW5nKDE2KTtcbiAgICB9O1xuICAgIEludGVnZXIudG9CaW5hcnlTdHJpbmcgPSBmdW5jdGlvbiAoaW50TnVtYmVyKSB7XG4gICAgICAgIHJldHVybiBTdHJpbmcocGFyc2VJbnQoU3RyaW5nKGludE51bWJlciksIDIpKTtcbiAgICB9O1xuICAgIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBvbmUtYml0cyBpbiB0aGUgdHdvJ3MgY29tcGxlbWVudCBiaW5hcnkgcmVwcmVzZW50YXRpb24gb2YgdGhlIHNwZWNpZmllZCBpbnQgdmFsdWUuIFRoaXMgZnVuY3Rpb24gaXMgc29tZXRpbWVzIHJlZmVycmVkIHRvIGFzIHRoZSBwb3B1bGF0aW9uIGNvdW50LlxuICAgIC8vIFJldHVybnM6XG4gICAgLy8gdGhlIG51bWJlciBvZiBvbmUtYml0cyBpbiB0aGUgdHdvJ3MgY29tcGxlbWVudCBiaW5hcnkgcmVwcmVzZW50YXRpb24gb2YgdGhlIHNwZWNpZmllZCBpbnQgdmFsdWUuXG4gICAgSW50ZWdlci5iaXRDb3VudCA9IGZ1bmN0aW9uIChpKSB7XG4gICAgICAgIC8vIEhELCBGaWd1cmUgNS0yXG4gICAgICAgIGkgPSBpIC0gKChpID4+PiAxKSAmIDB4NTU1NTU1NTUpO1xuICAgICAgICBpID0gKGkgJiAweDMzMzMzMzMzKSArICgoaSA+Pj4gMikgJiAweDMzMzMzMzMzKTtcbiAgICAgICAgaSA9IChpICsgKGkgPj4+IDQpKSAmIDB4MGYwZjBmMGY7XG4gICAgICAgIGkgPSBpICsgKGkgPj4+IDgpO1xuICAgICAgICBpID0gaSArIChpID4+PiAxNik7XG4gICAgICAgIHJldHVybiBpICYgMHgzZjtcbiAgICB9O1xuICAgIEludGVnZXIudHJ1bmNEaXZpc2lvbiA9IGZ1bmN0aW9uIChkaXZpZGVuZCwgZGl2aXNvcikge1xuICAgICAgICByZXR1cm4gTWF0aC50cnVuYyhkaXZpZGVuZCAvIGRpdmlzb3IpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQ29udmVydHMgQSBzdHJpbmcgdG8gYW4gaW50ZWdlci5cbiAgICAgKiBAcGFyYW0gcyBBIHN0cmluZyB0byBjb252ZXJ0IGludG8gYSBudW1iZXIuXG4gICAgICogQHBhcmFtIHJhZGl4IEEgdmFsdWUgYmV0d2VlbiAyIGFuZCAzNiB0aGF0IHNwZWNpZmllcyB0aGUgYmFzZSBvZiB0aGUgbnVtYmVyIGluIG51bVN0cmluZy4gSWYgdGhpcyBhcmd1bWVudCBpcyBub3Qgc3VwcGxpZWQsIHN0cmluZ3Mgd2l0aCBhIHByZWZpeCBvZiAnMHgnIGFyZSBjb25zaWRlcmVkIGhleGFkZWNpbWFsLiBBbGwgb3RoZXIgc3RyaW5ncyBhcmUgY29uc2lkZXJlZCBkZWNpbWFsLlxuICAgICAqL1xuICAgIEludGVnZXIucGFyc2VJbnQgPSBmdW5jdGlvbiAobnVtLCByYWRpeCkge1xuICAgICAgICBpZiAocmFkaXggPT09IHZvaWQgMCkgeyByYWRpeCA9IHVuZGVmaW5lZDsgfVxuICAgICAgICByZXR1cm4gcGFyc2VJbnQobnVtLCByYWRpeCk7XG4gICAgfTtcbiAgICBJbnRlZ2VyLk1JTl9WQUxVRV8zMl9CSVRTID0gLTIxNDc0ODM2NDg7XG4gICAgSW50ZWdlci5NQVhfVkFMVUUgPSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUjtcbiAgICByZXR1cm4gSW50ZWdlcjtcbn0oKSk7XG5leHBvcnRzLmRlZmF1bHQgPSBJbnRlZ2VyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SW50ZWdlci5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8qXG4gKiBDb3B5cmlnaHQgMjAwNyBaWGluZyBhdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLypuYW1lc3BhY2UgY29tLmdvb2dsZS56eGluZy5jb21tb24geyovXG4vKmltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOyovXG52YXIgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEgPSByZXF1aXJlKFwiLi4vSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXCIpO1xudmFyIEFycmF5c18xID0gcmVxdWlyZShcIi4uL3V0aWwvQXJyYXlzXCIpO1xudmFyIEludGVnZXJfMSA9IHJlcXVpcmUoXCIuLi91dGlsL0ludGVnZXJcIik7XG52YXIgU3lzdGVtXzEgPSByZXF1aXJlKFwiLi4vdXRpbC9TeXN0ZW1cIik7XG4vKipcbiAqIDxwPkEgc2ltcGxlLCBmYXN0IGFycmF5IG9mIGJpdHMsIHJlcHJlc2VudGVkIGNvbXBhY3RseSBieSBhbiBhcnJheSBvZiBpbnRzIGludGVybmFsbHkuPC9wPlxuICpcbiAqIEBhdXRob3IgU2VhbiBPd2VuXG4gKi9cbnZhciBCaXRBcnJheSAvKmltcGxlbWVudHMgQ2xvbmVhYmxlKi8gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgLy8gcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIC8vICAgdGhpcy5zaXplID0gMFxuICAgIC8vICAgdGhpcy5iaXRzID0gbmV3IEludDMyQXJyYXkoMSlcbiAgICAvLyB9XG4gICAgLy8gcHVibGljIGNvbnN0cnVjdG9yKHNpemU/OiBudW1iZXIgLyppbnQqLykge1xuICAgIC8vICAgaWYgKHVuZGVmaW5lZCA9PT0gc2l6ZSkge1xuICAgIC8vICAgICB0aGlzLnNpemUgPSAwXG4gICAgLy8gICB9IGVsc2Uge1xuICAgIC8vICAgICB0aGlzLnNpemUgPSBzaXplXG4gICAgLy8gICB9XG4gICAgLy8gICB0aGlzLmJpdHMgPSB0aGlzLm1ha2VBcnJheShzaXplKVxuICAgIC8vIH1cbiAgICAvLyBGb3IgdGVzdGluZyBvbmx5XG4gICAgZnVuY3Rpb24gQml0QXJyYXkoc2l6ZSAvKmludCovLCBiaXRzKSB7XG4gICAgICAgIGlmICh1bmRlZmluZWQgPT09IHNpemUpIHtcbiAgICAgICAgICAgIHRoaXMuc2l6ZSA9IDA7XG4gICAgICAgICAgICB0aGlzLmJpdHMgPSBuZXcgSW50MzJBcnJheSgxKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2l6ZSA9IHNpemU7XG4gICAgICAgICAgICBpZiAodW5kZWZpbmVkID09PSBiaXRzIHx8IG51bGwgPT09IGJpdHMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJpdHMgPSBCaXRBcnJheS5tYWtlQXJyYXkoc2l6ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJpdHMgPSBiaXRzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIEJpdEFycmF5LnByb3RvdHlwZS5nZXRTaXplID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zaXplO1xuICAgIH07XG4gICAgQml0QXJyYXkucHJvdG90eXBlLmdldFNpemVJbkJ5dGVzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcigodGhpcy5zaXplICsgNykgLyA4KTtcbiAgICB9O1xuICAgIEJpdEFycmF5LnByb3RvdHlwZS5lbnN1cmVDYXBhY2l0eSA9IGZ1bmN0aW9uIChzaXplIC8qaW50Ki8pIHtcbiAgICAgICAgaWYgKHNpemUgPiB0aGlzLmJpdHMubGVuZ3RoICogMzIpIHtcbiAgICAgICAgICAgIHZhciBuZXdCaXRzID0gQml0QXJyYXkubWFrZUFycmF5KHNpemUpO1xuICAgICAgICAgICAgU3lzdGVtXzEuZGVmYXVsdC5hcnJheWNvcHkodGhpcy5iaXRzLCAwLCBuZXdCaXRzLCAwLCB0aGlzLmJpdHMubGVuZ3RoKTtcbiAgICAgICAgICAgIHRoaXMuYml0cyA9IG5ld0JpdHM7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSBpIGJpdCB0byBnZXRcbiAgICAgKiBAcmV0dXJuIHRydWUgaWZmIGJpdCBpIGlzIHNldFxuICAgICAqL1xuICAgIEJpdEFycmF5LnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAoaSAvKmludCovKSB7XG4gICAgICAgIHJldHVybiAodGhpcy5iaXRzW01hdGguZmxvb3IoaSAvIDMyKV0gJiAoMSA8PCAoaSAmIDB4MUYpKSkgIT09IDA7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBTZXRzIGJpdCBpLlxuICAgICAqXG4gICAgICogQHBhcmFtIGkgYml0IHRvIHNldFxuICAgICAqL1xuICAgIEJpdEFycmF5LnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAoaSAvKmludCovKSB7XG4gICAgICAgIHRoaXMuYml0c1tNYXRoLmZsb29yKGkgLyAzMildIHw9IDEgPDwgKGkgJiAweDFGKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEZsaXBzIGJpdCBpLlxuICAgICAqXG4gICAgICogQHBhcmFtIGkgYml0IHRvIHNldFxuICAgICAqL1xuICAgIEJpdEFycmF5LnByb3RvdHlwZS5mbGlwID0gZnVuY3Rpb24gKGkgLyppbnQqLykge1xuICAgICAgICB0aGlzLmJpdHNbTWF0aC5mbG9vcihpIC8gMzIpXSBePSAxIDw8IChpICYgMHgxRik7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0gZnJvbSBmaXJzdCBiaXQgdG8gY2hlY2tcbiAgICAgKiBAcmV0dXJuIGluZGV4IG9mIGZpcnN0IGJpdCB0aGF0IGlzIHNldCwgc3RhcnRpbmcgZnJvbSB0aGUgZ2l2ZW4gaW5kZXgsIG9yIHNpemUgaWYgbm9uZSBhcmUgc2V0XG4gICAgICogIGF0IG9yIGJleW9uZCB0aGlzIGdpdmVuIGluZGV4XG4gICAgICogQHNlZSAjZ2V0TmV4dFVuc2V0KGludClcbiAgICAgKi9cbiAgICBCaXRBcnJheS5wcm90b3R5cGUuZ2V0TmV4dFNldCA9IGZ1bmN0aW9uIChmcm9tIC8qaW50Ki8pIHtcbiAgICAgICAgdmFyIHNpemUgPSB0aGlzLnNpemU7XG4gICAgICAgIGlmIChmcm9tID49IHNpemUpIHtcbiAgICAgICAgICAgIHJldHVybiBzaXplO1xuICAgICAgICB9XG4gICAgICAgIHZhciBiaXRzID0gdGhpcy5iaXRzO1xuICAgICAgICB2YXIgYml0c09mZnNldCA9IE1hdGguZmxvb3IoZnJvbSAvIDMyKTtcbiAgICAgICAgdmFyIGN1cnJlbnRCaXRzID0gYml0c1tiaXRzT2Zmc2V0XTtcbiAgICAgICAgLy8gbWFzayBvZmYgbGVzc2VyIGJpdHMgZmlyc3RcbiAgICAgICAgY3VycmVudEJpdHMgJj0gfigoMSA8PCAoZnJvbSAmIDB4MUYpKSAtIDEpO1xuICAgICAgICB2YXIgbGVuZ3RoID0gYml0cy5sZW5ndGg7XG4gICAgICAgIHdoaWxlIChjdXJyZW50Qml0cyA9PT0gMCkge1xuICAgICAgICAgICAgaWYgKCsrYml0c09mZnNldCA9PT0gbGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNpemU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjdXJyZW50Qml0cyA9IGJpdHNbYml0c09mZnNldF07XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJlc3VsdCA9IChiaXRzT2Zmc2V0ICogMzIpICsgSW50ZWdlcl8xLmRlZmF1bHQubnVtYmVyT2ZUcmFpbGluZ1plcm9zKGN1cnJlbnRCaXRzKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdCA+IHNpemUgPyBzaXplIDogcmVzdWx0O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHBhcmFtIGZyb20gaW5kZXggdG8gc3RhcnQgbG9va2luZyBmb3IgdW5zZXQgYml0XG4gICAgICogQHJldHVybiBpbmRleCBvZiBuZXh0IHVuc2V0IGJpdCwgb3Ige0Bjb2RlIHNpemV9IGlmIG5vbmUgYXJlIHVuc2V0IHVudGlsIHRoZSBlbmRcbiAgICAgKiBAc2VlICNnZXROZXh0U2V0KGludClcbiAgICAgKi9cbiAgICBCaXRBcnJheS5wcm90b3R5cGUuZ2V0TmV4dFVuc2V0ID0gZnVuY3Rpb24gKGZyb20gLyppbnQqLykge1xuICAgICAgICB2YXIgc2l6ZSA9IHRoaXMuc2l6ZTtcbiAgICAgICAgaWYgKGZyb20gPj0gc2l6ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHNpemU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGJpdHMgPSB0aGlzLmJpdHM7XG4gICAgICAgIHZhciBiaXRzT2Zmc2V0ID0gTWF0aC5mbG9vcihmcm9tIC8gMzIpO1xuICAgICAgICB2YXIgY3VycmVudEJpdHMgPSB+Yml0c1tiaXRzT2Zmc2V0XTtcbiAgICAgICAgLy8gbWFzayBvZmYgbGVzc2VyIGJpdHMgZmlyc3RcbiAgICAgICAgY3VycmVudEJpdHMgJj0gfigoMSA8PCAoZnJvbSAmIDB4MUYpKSAtIDEpO1xuICAgICAgICB2YXIgbGVuZ3RoID0gYml0cy5sZW5ndGg7XG4gICAgICAgIHdoaWxlIChjdXJyZW50Qml0cyA9PT0gMCkge1xuICAgICAgICAgICAgaWYgKCsrYml0c09mZnNldCA9PT0gbGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNpemU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjdXJyZW50Qml0cyA9IH5iaXRzW2JpdHNPZmZzZXRdO1xuICAgICAgICB9XG4gICAgICAgIHZhciByZXN1bHQgPSAoYml0c09mZnNldCAqIDMyKSArIEludGVnZXJfMS5kZWZhdWx0Lm51bWJlck9mVHJhaWxpbmdaZXJvcyhjdXJyZW50Qml0cyk7XG4gICAgICAgIHJldHVybiByZXN1bHQgPiBzaXplID8gc2l6ZSA6IHJlc3VsdDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFNldHMgYSBibG9jayBvZiAzMiBiaXRzLCBzdGFydGluZyBhdCBiaXQgaS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBpIGZpcnN0IGJpdCB0byBzZXRcbiAgICAgKiBAcGFyYW0gbmV3Qml0cyB0aGUgbmV3IHZhbHVlIG9mIHRoZSBuZXh0IDMyIGJpdHMuIE5vdGUgYWdhaW4gdGhhdCB0aGUgbGVhc3Qtc2lnbmlmaWNhbnQgYml0XG4gICAgICogY29ycmVzcG9uZHMgdG8gYml0IGksIHRoZSBuZXh0LWxlYXN0LXNpZ25pZmljYW50IHRvIGkrMSwgYW5kIHNvIG9uLlxuICAgICAqL1xuICAgIEJpdEFycmF5LnByb3RvdHlwZS5zZXRCdWxrID0gZnVuY3Rpb24gKGkgLyppbnQqLywgbmV3Qml0cyAvKmludCovKSB7XG4gICAgICAgIHRoaXMuYml0c1tNYXRoLmZsb29yKGkgLyAzMildID0gbmV3Qml0cztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFNldHMgYSByYW5nZSBvZiBiaXRzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHN0YXJ0IHN0YXJ0IG9mIHJhbmdlLCBpbmNsdXNpdmUuXG4gICAgICogQHBhcmFtIGVuZCBlbmQgb2YgcmFuZ2UsIGV4Y2x1c2l2ZVxuICAgICAqL1xuICAgIEJpdEFycmF5LnByb3RvdHlwZS5zZXRSYW5nZSA9IGZ1bmN0aW9uIChzdGFydCAvKmludCovLCBlbmQgLyppbnQqLykge1xuICAgICAgICBpZiAoZW5kIDwgc3RhcnQgfHwgc3RhcnQgPCAwIHx8IGVuZCA+IHRoaXMuc2l6ZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW5kID09PSBzdGFydCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGVuZC0tOyAvLyB3aWxsIGJlIGVhc2llciB0byB0cmVhdCB0aGlzIGFzIHRoZSBsYXN0IGFjdHVhbGx5IHNldCBiaXQgLS0gaW5jbHVzaXZlXG4gICAgICAgIHZhciBmaXJzdEludCA9IE1hdGguZmxvb3Ioc3RhcnQgLyAzMik7XG4gICAgICAgIHZhciBsYXN0SW50ID0gTWF0aC5mbG9vcihlbmQgLyAzMik7XG4gICAgICAgIHZhciBiaXRzID0gdGhpcy5iaXRzO1xuICAgICAgICBmb3IgKHZhciBpID0gZmlyc3RJbnQ7IGkgPD0gbGFzdEludDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgZmlyc3RCaXQgPSBpID4gZmlyc3RJbnQgPyAwIDogc3RhcnQgJiAweDFGO1xuICAgICAgICAgICAgdmFyIGxhc3RCaXQgPSBpIDwgbGFzdEludCA/IDMxIDogZW5kICYgMHgxRjtcbiAgICAgICAgICAgIC8vIE9uZXMgZnJvbSBmaXJzdEJpdCB0byBsYXN0Qml0LCBpbmNsdXNpdmVcbiAgICAgICAgICAgIHZhciBtYXNrID0gKDIgPDwgbGFzdEJpdCkgLSAoMSA8PCBmaXJzdEJpdCk7XG4gICAgICAgICAgICBiaXRzW2ldIHw9IG1hc2s7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIENsZWFycyBhbGwgYml0cyAoc2V0cyB0byBmYWxzZSkuXG4gICAgICovXG4gICAgQml0QXJyYXkucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbWF4ID0gdGhpcy5iaXRzLmxlbmd0aDtcbiAgICAgICAgdmFyIGJpdHMgPSB0aGlzLmJpdHM7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWF4OyBpKyspIHtcbiAgICAgICAgICAgIGJpdHNbaV0gPSAwO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBFZmZpY2llbnQgbWV0aG9kIHRvIGNoZWNrIGlmIGEgcmFuZ2Ugb2YgYml0cyBpcyBzZXQsIG9yIG5vdCBzZXQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc3RhcnQgc3RhcnQgb2YgcmFuZ2UsIGluY2x1c2l2ZS5cbiAgICAgKiBAcGFyYW0gZW5kIGVuZCBvZiByYW5nZSwgZXhjbHVzaXZlXG4gICAgICogQHBhcmFtIHZhbHVlIGlmIHRydWUsIGNoZWNrcyB0aGF0IGJpdHMgaW4gcmFuZ2UgYXJlIHNldCwgb3RoZXJ3aXNlIGNoZWNrcyB0aGF0IHRoZXkgYXJlIG5vdCBzZXRcbiAgICAgKiBAcmV0dXJuIHRydWUgaWZmIGFsbCBiaXRzIGFyZSBzZXQgb3Igbm90IHNldCBpbiByYW5nZSwgYWNjb3JkaW5nIHRvIHZhbHVlIGFyZ3VtZW50XG4gICAgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgZW5kIGlzIGxlc3MgdGhhbiBzdGFydCBvciB0aGUgcmFuZ2UgaXMgbm90IGNvbnRhaW5lZCBpbiB0aGUgYXJyYXlcbiAgICAgKi9cbiAgICBCaXRBcnJheS5wcm90b3R5cGUuaXNSYW5nZSA9IGZ1bmN0aW9uIChzdGFydCAvKmludCovLCBlbmQgLyppbnQqLywgdmFsdWUpIHtcbiAgICAgICAgaWYgKGVuZCA8IHN0YXJ0IHx8IHN0YXJ0IDwgMCB8fCBlbmQgPiB0aGlzLnNpemUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVuZCA9PT0gc3RhcnQpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlOyAvLyBlbXB0eSByYW5nZSBtYXRjaGVzXG4gICAgICAgIH1cbiAgICAgICAgZW5kLS07IC8vIHdpbGwgYmUgZWFzaWVyIHRvIHRyZWF0IHRoaXMgYXMgdGhlIGxhc3QgYWN0dWFsbHkgc2V0IGJpdCAtLSBpbmNsdXNpdmVcbiAgICAgICAgdmFyIGZpcnN0SW50ID0gTWF0aC5mbG9vcihzdGFydCAvIDMyKTtcbiAgICAgICAgdmFyIGxhc3RJbnQgPSBNYXRoLmZsb29yKGVuZCAvIDMyKTtcbiAgICAgICAgdmFyIGJpdHMgPSB0aGlzLmJpdHM7XG4gICAgICAgIGZvciAodmFyIGkgPSBmaXJzdEludDsgaSA8PSBsYXN0SW50OyBpKyspIHtcbiAgICAgICAgICAgIHZhciBmaXJzdEJpdCA9IGkgPiBmaXJzdEludCA/IDAgOiBzdGFydCAmIDB4MUY7XG4gICAgICAgICAgICB2YXIgbGFzdEJpdCA9IGkgPCBsYXN0SW50ID8gMzEgOiBlbmQgJiAweDFGO1xuICAgICAgICAgICAgLy8gT25lcyBmcm9tIGZpcnN0Qml0IHRvIGxhc3RCaXQsIGluY2x1c2l2ZVxuICAgICAgICAgICAgdmFyIG1hc2sgPSAoMiA8PCBsYXN0Qml0KSAtICgxIDw8IGZpcnN0Qml0KSAmIDB4RkZGRkZGRkY7XG4gICAgICAgICAgICAvLyBUWVBFU0NSSVBUUE9SVDogJiAweEZGRkZGRkZGIGFkZGVkIHRvIGRpc2NhcmQgYW55dGhpbmcgYWZ0ZXIgMzIgYml0cywgYXMgRVMgaGFzIDUzIGJpdHNcbiAgICAgICAgICAgIC8vIFJldHVybiBmYWxzZSBpZiB3ZSdyZSBsb29raW5nIGZvciAxcyBhbmQgdGhlIG1hc2tlZCBiaXRzW2ldIGlzbid0IGFsbCAxcyAoaXM6IHRoYXQsXG4gICAgICAgICAgICAvLyBlcXVhbHMgdGhlIG1hc2ssIG9yIHdlJ3JlIGxvb2tpbmcgZm9yIDBzIGFuZCB0aGUgbWFza2VkIHBvcnRpb24gaXMgbm90IGFsbCAwc1xuICAgICAgICAgICAgaWYgKChiaXRzW2ldICYgbWFzaykgIT09ICh2YWx1ZSA/IG1hc2sgOiAwKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuICAgIEJpdEFycmF5LnByb3RvdHlwZS5hcHBlbmRCaXQgPSBmdW5jdGlvbiAoYml0KSB7XG4gICAgICAgIHRoaXMuZW5zdXJlQ2FwYWNpdHkodGhpcy5zaXplICsgMSk7XG4gICAgICAgIGlmIChiaXQpIHtcbiAgICAgICAgICAgIHRoaXMuYml0c1tNYXRoLmZsb29yKHRoaXMuc2l6ZSAvIDMyKV0gfD0gMSA8PCAodGhpcy5zaXplICYgMHgxRik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zaXplKys7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBBcHBlbmRzIHRoZSBsZWFzdC1zaWduaWZpY2FudCBiaXRzLCBmcm9tIHZhbHVlLCBpbiBvcmRlciBmcm9tIG1vc3Qtc2lnbmlmaWNhbnQgdG9cbiAgICAgKiBsZWFzdC1zaWduaWZpY2FudC4gRm9yIGV4YW1wbGUsIGFwcGVuZGluZyA2IGJpdHMgZnJvbSAweDAwMDAwMUUgd2lsbCBhcHBlbmQgdGhlIGJpdHNcbiAgICAgKiAwLCAxLCAxLCAxLCAxLCAwIGluIHRoYXQgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmFsdWUge0Bjb2RlIGludH0gY29udGFpbmluZyBiaXRzIHRvIGFwcGVuZFxuICAgICAqIEBwYXJhbSBudW1CaXRzIGJpdHMgZnJvbSB2YWx1ZSB0byBhcHBlbmRcbiAgICAgKi9cbiAgICBCaXRBcnJheS5wcm90b3R5cGUuYXBwZW5kQml0cyA9IGZ1bmN0aW9uICh2YWx1ZSAvKmludCovLCBudW1CaXRzIC8qaW50Ki8pIHtcbiAgICAgICAgaWYgKG51bUJpdHMgPCAwIHx8IG51bUJpdHMgPiAzMikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoJ051bSBiaXRzIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAzMicpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZW5zdXJlQ2FwYWNpdHkodGhpcy5zaXplICsgbnVtQml0cyk7XG4gICAgICAgIC8vIGNvbnN0IGFwcGVuZEJpdCA9IHRoaXMuYXBwZW5kQml0O1xuICAgICAgICBmb3IgKHZhciBudW1CaXRzTGVmdCA9IG51bUJpdHM7IG51bUJpdHNMZWZ0ID4gMDsgbnVtQml0c0xlZnQtLSkge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmRCaXQoKCh2YWx1ZSA+PiAobnVtQml0c0xlZnQgLSAxKSkgJiAweDAxKSA9PT0gMSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEJpdEFycmF5LnByb3RvdHlwZS5hcHBlbmRCaXRBcnJheSA9IGZ1bmN0aW9uIChvdGhlcikge1xuICAgICAgICB2YXIgb3RoZXJTaXplID0gb3RoZXIuc2l6ZTtcbiAgICAgICAgdGhpcy5lbnN1cmVDYXBhY2l0eSh0aGlzLnNpemUgKyBvdGhlclNpemUpO1xuICAgICAgICAvLyBjb25zdCBhcHBlbmRCaXQgPSB0aGlzLmFwcGVuZEJpdDtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvdGhlclNpemU7IGkrKykge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmRCaXQob3RoZXIuZ2V0KGkpKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgQml0QXJyYXkucHJvdG90eXBlLnhvciA9IGZ1bmN0aW9uIChvdGhlcikge1xuICAgICAgICBpZiAodGhpcy5zaXplICE9PSBvdGhlci5zaXplKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgnU2l6ZXMgZG9uXFwndCBtYXRjaCcpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBiaXRzID0gdGhpcy5iaXRzO1xuICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoXzEgPSBiaXRzLmxlbmd0aDsgaSA8IGxlbmd0aF8xOyBpKyspIHtcbiAgICAgICAgICAgIC8vIFRoZSBsYXN0IGludCBjb3VsZCBiZSBpbmNvbXBsZXRlIChpLmUuIG5vdCBoYXZlIDMyIGJpdHMgaW5cbiAgICAgICAgICAgIC8vIGl0KSBidXQgdGhlcmUgaXMgbm8gcHJvYmxlbSBzaW5jZSAwIFhPUiAwID09IDAuXG4gICAgICAgICAgICBiaXRzW2ldIF49IG90aGVyLmJpdHNbaV07XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIGJpdE9mZnNldCBmaXJzdCBiaXQgdG8gc3RhcnQgd3JpdGluZ1xuICAgICAqIEBwYXJhbSBhcnJheSBhcnJheSB0byB3cml0ZSBpbnRvLiBCeXRlcyBhcmUgd3JpdHRlbiBtb3N0LXNpZ25pZmljYW50IGJ5dGUgZmlyc3QuIFRoaXMgaXMgdGhlIG9wcG9zaXRlXG4gICAgICogIG9mIHRoZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiwgd2hpY2ggaXMgZXhwb3NlZCBieSB7QGxpbmsgI2dldEJpdEFycmF5KCl9XG4gICAgICogQHBhcmFtIG9mZnNldCBwb3NpdGlvbiBpbiBhcnJheSB0byBzdGFydCB3cml0aW5nXG4gICAgICogQHBhcmFtIG51bUJ5dGVzIGhvdyBtYW55IGJ5dGVzIHRvIHdyaXRlXG4gICAgICovXG4gICAgQml0QXJyYXkucHJvdG90eXBlLnRvQnl0ZXMgPSBmdW5jdGlvbiAoYml0T2Zmc2V0IC8qaW50Ki8sIGFycmF5LCBvZmZzZXQgLyppbnQqLywgbnVtQnl0ZXMgLyppbnQqLykge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bUJ5dGVzOyBpKyspIHtcbiAgICAgICAgICAgIHZhciB0aGVCeXRlID0gMDtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZ2V0KGJpdE9mZnNldCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhlQnl0ZSB8PSAxIDw8ICg3IC0gaik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJpdE9mZnNldCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXJyYXlbb2Zmc2V0ICsgaV0gPSAvKihieXRlKSovIHRoZUJ5dGU7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEByZXR1cm4gdW5kZXJseWluZyBhcnJheSBvZiBpbnRzLiBUaGUgZmlyc3QgZWxlbWVudCBob2xkcyB0aGUgZmlyc3QgMzIgYml0cywgYW5kIHRoZSBsZWFzdFxuICAgICAqICAgICAgICAgc2lnbmlmaWNhbnQgYml0IGlzIGJpdCAwLlxuICAgICAqL1xuICAgIEJpdEFycmF5LnByb3RvdHlwZS5nZXRCaXRBcnJheSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYml0cztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFJldmVyc2VzIGFsbCBiaXRzIGluIHRoZSBhcnJheS5cbiAgICAgKi9cbiAgICBCaXRBcnJheS5wcm90b3R5cGUucmV2ZXJzZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIG5ld0JpdHMgPSBuZXcgSW50MzJBcnJheSh0aGlzLmJpdHMubGVuZ3RoKTtcbiAgICAgICAgLy8gcmV2ZXJzZSBhbGwgaW50J3MgZmlyc3RcbiAgICAgICAgdmFyIGxlbiA9IE1hdGguZmxvb3IoKHRoaXMuc2l6ZSAtIDEpIC8gMzIpO1xuICAgICAgICB2YXIgb2xkQml0c0xlbiA9IGxlbiArIDE7XG4gICAgICAgIHZhciBiaXRzID0gdGhpcy5iaXRzO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG9sZEJpdHNMZW47IGkrKykge1xuICAgICAgICAgICAgdmFyIHggPSBiaXRzW2ldO1xuICAgICAgICAgICAgeCA9ICgoeCA+PiAxKSAmIDB4NTU1NTU1NTUpIHwgKCh4ICYgMHg1NTU1NTU1NSkgPDwgMSk7XG4gICAgICAgICAgICB4ID0gKCh4ID4+IDIpICYgMHgzMzMzMzMzMykgfCAoKHggJiAweDMzMzMzMzMzKSA8PCAyKTtcbiAgICAgICAgICAgIHggPSAoKHggPj4gNCkgJiAweDBmMGYwZjBmKSB8ICgoeCAmIDB4MGYwZjBmMGYpIDw8IDQpO1xuICAgICAgICAgICAgeCA9ICgoeCA+PiA4KSAmIDB4MDBmZjAwZmYpIHwgKCh4ICYgMHgwMGZmMDBmZikgPDwgOCk7XG4gICAgICAgICAgICB4ID0gKCh4ID4+IDE2KSAmIDB4MDAwMGZmZmYpIHwgKCh4ICYgMHgwMDAwZmZmZikgPDwgMTYpO1xuICAgICAgICAgICAgbmV3Qml0c1tsZW4gLSBpXSA9IC8qKGludCkqLyB4O1xuICAgICAgICB9XG4gICAgICAgIC8vIG5vdyBjb3JyZWN0IHRoZSBpbnQncyBpZiB0aGUgYml0IHNpemUgaXNuJ3QgYSBtdWx0aXBsZSBvZiAzMlxuICAgICAgICBpZiAodGhpcy5zaXplICE9PSBvbGRCaXRzTGVuICogMzIpIHtcbiAgICAgICAgICAgIHZhciBsZWZ0T2Zmc2V0ID0gb2xkQml0c0xlbiAqIDMyIC0gdGhpcy5zaXplO1xuICAgICAgICAgICAgdmFyIGN1cnJlbnRJbnQgPSBuZXdCaXRzWzBdID4+PiBsZWZ0T2Zmc2V0O1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBvbGRCaXRzTGVuOyBpKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgbmV4dEludCA9IG5ld0JpdHNbaV07XG4gICAgICAgICAgICAgICAgY3VycmVudEludCB8PSBuZXh0SW50IDw8ICgzMiAtIGxlZnRPZmZzZXQpO1xuICAgICAgICAgICAgICAgIG5ld0JpdHNbaSAtIDFdID0gY3VycmVudEludDtcbiAgICAgICAgICAgICAgICBjdXJyZW50SW50ID0gbmV4dEludCA+Pj4gbGVmdE9mZnNldDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5ld0JpdHNbb2xkQml0c0xlbiAtIDFdID0gY3VycmVudEludDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmJpdHMgPSBuZXdCaXRzO1xuICAgIH07XG4gICAgQml0QXJyYXkubWFrZUFycmF5ID0gZnVuY3Rpb24gKHNpemUgLyppbnQqLykge1xuICAgICAgICByZXR1cm4gbmV3IEludDMyQXJyYXkoTWF0aC5mbG9vcigoc2l6ZSArIDMxKSAvIDMyKSk7XG4gICAgfTtcbiAgICAvKkBPdmVycmlkZSovXG4gICAgQml0QXJyYXkucHJvdG90eXBlLmVxdWFscyA9IGZ1bmN0aW9uIChvKSB7XG4gICAgICAgIGlmICghKG8gaW5zdGFuY2VvZiBCaXRBcnJheSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgb3RoZXIgPSBvO1xuICAgICAgICByZXR1cm4gdGhpcy5zaXplID09PSBvdGhlci5zaXplICYmIEFycmF5c18xLmRlZmF1bHQuZXF1YWxzKHRoaXMuYml0cywgb3RoZXIuYml0cyk7XG4gICAgfTtcbiAgICAvKkBPdmVycmlkZSovXG4gICAgQml0QXJyYXkucHJvdG90eXBlLmhhc2hDb2RlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gMzEgKiB0aGlzLnNpemUgKyBBcnJheXNfMS5kZWZhdWx0Lmhhc2hDb2RlKHRoaXMuYml0cyk7XG4gICAgfTtcbiAgICAvKkBPdmVycmlkZSovXG4gICAgQml0QXJyYXkucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gJyc7XG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBzaXplID0gdGhpcy5zaXplOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoKGkgJiAweDA3KSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnICc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQgKz0gdGhpcy5nZXQoaSkgPyAnWCcgOiAnLic7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIC8qQE92ZXJyaWRlKi9cbiAgICBCaXRBcnJheS5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgQml0QXJyYXkodGhpcy5zaXplLCB0aGlzLmJpdHMuc2xpY2UoKSk7XG4gICAgfTtcbiAgICByZXR1cm4gQml0QXJyYXk7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gQml0QXJyYXk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1CaXRBcnJheS5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8qXG4gKiBDb3B5cmlnaHQgMjAwOSBaWGluZyBhdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLypuYW1lc3BhY2UgY29tLmdvb2dsZS56eGluZyB7Ki9cbi8qKlxuICogRW5jYXBzdWxhdGVzIGEgdHlwZSBvZiBoaW50IHRoYXQgYSBjYWxsZXIgbWF5IHBhc3MgdG8gYSBiYXJjb2RlIHJlYWRlciB0byBoZWxwIGl0XG4gKiBtb3JlIHF1aWNrbHkgb3IgYWNjdXJhdGVseSBkZWNvZGUgaXQuIEl0IGlzIHVwIHRvIGltcGxlbWVudGF0aW9ucyB0byBkZWNpZGUgd2hhdCxcbiAqIGlmIGFueXRoaW5nLCB0byBkbyB3aXRoIHRoZSBpbmZvcm1hdGlvbiB0aGF0IGlzIHN1cHBsaWVkLlxuICpcbiAqIEBhdXRob3IgU2VhbiBPd2VuXG4gKiBAYXV0aG9yIGRzd2l0a2luQGdvb2dsZS5jb20gKERhbmllbCBTd2l0a2luKVxuICogQHNlZSBSZWFkZXIjZGVjb2RlKEJpbmFyeUJpdG1hcCxqYXZhLnV0aWwuTWFwKVxuICovXG52YXIgRGVjb2RlSGludFR5cGU7XG4oZnVuY3Rpb24gKERlY29kZUhpbnRUeXBlKSB7XG4gICAgLyoqXG4gICAgICogVW5zcGVjaWZpZWQsIGFwcGxpY2F0aW9uLXNwZWNpZmljIGhpbnQuIE1hcHMgdG8gYW4gdW5zcGVjaWZpZWQge0BsaW5rIE9iamVjdH0uXG4gICAgICovXG4gICAgRGVjb2RlSGludFR5cGVbRGVjb2RlSGludFR5cGVbXCJPVEhFUlwiXSA9IDBdID0gXCJPVEhFUlwiOyAvKihPYmplY3QuY2xhc3MpKi9cbiAgICAvKipcbiAgICAgKiBJbWFnZSBpcyBhIHB1cmUgbW9ub2Nocm9tZSBpbWFnZSBvZiBhIGJhcmNvZGUuIERvZXNuJ3QgbWF0dGVyIHdoYXQgaXQgbWFwcyB0bztcbiAgICAgKiB1c2Uge0BsaW5rIEJvb2xlYW4jVFJVRX0uXG4gICAgICovXG4gICAgRGVjb2RlSGludFR5cGVbRGVjb2RlSGludFR5cGVbXCJQVVJFX0JBUkNPREVcIl0gPSAxXSA9IFwiUFVSRV9CQVJDT0RFXCI7IC8qKFZvaWQuY2xhc3MpKi9cbiAgICAvKipcbiAgICAgKiBJbWFnZSBpcyBrbm93biB0byBiZSBvZiBvbmUgb2YgYSBmZXcgcG9zc2libGUgZm9ybWF0cy5cbiAgICAgKiBNYXBzIHRvIGEge0BsaW5rIExpc3R9IG9mIHtAbGluayBCYXJjb2RlRm9ybWF0fXMuXG4gICAgICovXG4gICAgRGVjb2RlSGludFR5cGVbRGVjb2RlSGludFR5cGVbXCJQT1NTSUJMRV9GT1JNQVRTXCJdID0gMl0gPSBcIlBPU1NJQkxFX0ZPUk1BVFNcIjsgLyooTGlzdC5jbGFzcykqL1xuICAgIC8qKlxuICAgICAqIFNwZW5kIG1vcmUgdGltZSB0byB0cnkgdG8gZmluZCBhIGJhcmNvZGU7IG9wdGltaXplIGZvciBhY2N1cmFjeSwgbm90IHNwZWVkLlxuICAgICAqIERvZXNuJ3QgbWF0dGVyIHdoYXQgaXQgbWFwcyB0bzsgdXNlIHtAbGluayBCb29sZWFuI1RSVUV9LlxuICAgICAqL1xuICAgIERlY29kZUhpbnRUeXBlW0RlY29kZUhpbnRUeXBlW1wiVFJZX0hBUkRFUlwiXSA9IDNdID0gXCJUUllfSEFSREVSXCI7IC8qKFZvaWQuY2xhc3MpKi9cbiAgICAvKipcbiAgICAgKiBTcGVjaWZpZXMgd2hhdCBjaGFyYWN0ZXIgZW5jb2RpbmcgdG8gdXNlIHdoZW4gZGVjb2RpbmcsIHdoZXJlIGFwcGxpY2FibGUgKHR5cGUgU3RyaW5nKVxuICAgICAqL1xuICAgIERlY29kZUhpbnRUeXBlW0RlY29kZUhpbnRUeXBlW1wiQ0hBUkFDVEVSX1NFVFwiXSA9IDRdID0gXCJDSEFSQUNURVJfU0VUXCI7IC8qKFN0cmluZy5jbGFzcykqL1xuICAgIC8qKlxuICAgICAqIEFsbG93ZWQgbGVuZ3RocyBvZiBlbmNvZGVkIGRhdGEgLS0gcmVqZWN0IGFueXRoaW5nIGVsc2UuIE1hcHMgdG8gYW4ge0Bjb2RlIEludDMyQXJyYXl9LlxuICAgICAqL1xuICAgIERlY29kZUhpbnRUeXBlW0RlY29kZUhpbnRUeXBlW1wiQUxMT1dFRF9MRU5HVEhTXCJdID0gNV0gPSBcIkFMTE9XRURfTEVOR1RIU1wiOyAvKihJbnQzMkFycmF5LmNsYXNzKSovXG4gICAgLyoqXG4gICAgICogQXNzdW1lIENvZGUgMzkgY29kZXMgZW1wbG95IGEgY2hlY2sgZGlnaXQuIERvZXNuJ3QgbWF0dGVyIHdoYXQgaXQgbWFwcyB0bztcbiAgICAgKiB1c2Uge0BsaW5rIEJvb2xlYW4jVFJVRX0uXG4gICAgICovXG4gICAgRGVjb2RlSGludFR5cGVbRGVjb2RlSGludFR5cGVbXCJBU1NVTUVfQ09ERV8zOV9DSEVDS19ESUdJVFwiXSA9IDZdID0gXCJBU1NVTUVfQ09ERV8zOV9DSEVDS19ESUdJVFwiOyAvKihWb2lkLmNsYXNzKSovXG4gICAgLyoqXG4gICAgICogQXNzdW1lIHRoZSBiYXJjb2RlIGlzIGJlaW5nIHByb2Nlc3NlZCBhcyBhIEdTMSBiYXJjb2RlLCBhbmQgbW9kaWZ5IGJlaGF2aW9yIGFzIG5lZWRlZC5cbiAgICAgKiBGb3IgZXhhbXBsZSB0aGlzIGFmZmVjdHMgRk5DMSBoYW5kbGluZyBmb3IgQ29kZSAxMjggKGFrYSBHUzEtMTI4KS4gRG9lc24ndCBtYXR0ZXIgd2hhdCBpdCBtYXBzIHRvO1xuICAgICAqIHVzZSB7QGxpbmsgQm9vbGVhbiNUUlVFfS5cbiAgICAgKi9cbiAgICBEZWNvZGVIaW50VHlwZVtEZWNvZGVIaW50VHlwZVtcIkFTU1VNRV9HUzFcIl0gPSA3XSA9IFwiQVNTVU1FX0dTMVwiOyAvKihWb2lkLmNsYXNzKSovXG4gICAgLyoqXG4gICAgICogSWYgdHJ1ZSwgcmV0dXJuIHRoZSBzdGFydCBhbmQgZW5kIGRpZ2l0cyBpbiBhIENvZGFiYXIgYmFyY29kZSBpbnN0ZWFkIG9mIHN0cmlwcGluZyB0aGVtLiBUaGV5XG4gICAgICogYXJlIGFscGhhLCB3aGVyZWFzIHRoZSByZXN0IGFyZSBudW1lcmljLiBCeSBkZWZhdWx0LCB0aGV5IGFyZSBzdHJpcHBlZCwgYnV0IHRoaXMgY2F1c2VzIHRoZW1cbiAgICAgKiB0byBub3QgYmUuIERvZXNuJ3QgbWF0dGVyIHdoYXQgaXQgbWFwcyB0bzsgdXNlIHtAbGluayBCb29sZWFuI1RSVUV9LlxuICAgICAqL1xuICAgIERlY29kZUhpbnRUeXBlW0RlY29kZUhpbnRUeXBlW1wiUkVUVVJOX0NPREFCQVJfU1RBUlRfRU5EXCJdID0gOF0gPSBcIlJFVFVSTl9DT0RBQkFSX1NUQVJUX0VORFwiOyAvKihWb2lkLmNsYXNzKSovXG4gICAgLyoqXG4gICAgICogVGhlIGNhbGxlciBuZWVkcyB0byBiZSBub3RpZmllZCB2aWEgY2FsbGJhY2sgd2hlbiBhIHBvc3NpYmxlIHtAbGluayBSZXN1bHRQb2ludH1cbiAgICAgKiBpcyBmb3VuZC4gTWFwcyB0byBhIHtAbGluayBSZXN1bHRQb2ludENhbGxiYWNrfS5cbiAgICAgKi9cbiAgICBEZWNvZGVIaW50VHlwZVtEZWNvZGVIaW50VHlwZVtcIk5FRURfUkVTVUxUX1BPSU5UX0NBTExCQUNLXCJdID0gOV0gPSBcIk5FRURfUkVTVUxUX1BPSU5UX0NBTExCQUNLXCI7IC8qKFJlc3VsdFBvaW50Q2FsbGJhY2suY2xhc3MpKi9cbiAgICAvKipcbiAgICAgKiBBbGxvd2VkIGV4dGVuc2lvbiBsZW5ndGhzIGZvciBFQU4gb3IgVVBDIGJhcmNvZGVzLiBPdGhlciBmb3JtYXRzIHdpbGwgaWdub3JlIHRoaXMuXG4gICAgICogTWFwcyB0byBhbiB7QGNvZGUgSW50MzJBcnJheX0gb2YgdGhlIGFsbG93ZWQgZXh0ZW5zaW9uIGxlbmd0aHMsIGZvciBleGFtcGxlIFsyXSwgWzVdLCBvciBbMiwgNV0uXG4gICAgICogSWYgaXQgaXMgb3B0aW9uYWwgdG8gaGF2ZSBhbiBleHRlbnNpb24sIGRvIG5vdCBzZXQgdGhpcyBoaW50LiBJZiB0aGlzIGlzIHNldCxcbiAgICAgKiBhbmQgYSBVUEMgb3IgRUFOIGJhcmNvZGUgaXMgZm91bmQgYnV0IGFuIGV4dGVuc2lvbiBpcyBub3QsIHRoZW4gbm8gcmVzdWx0IHdpbGwgYmUgcmV0dXJuZWRcbiAgICAgKiBhdCBhbGwuXG4gICAgICovXG4gICAgRGVjb2RlSGludFR5cGVbRGVjb2RlSGludFR5cGVbXCJBTExPV0VEX0VBTl9FWFRFTlNJT05TXCJdID0gMTBdID0gXCJBTExPV0VEX0VBTl9FWFRFTlNJT05TXCI7IC8qKEludDMyQXJyYXkuY2xhc3MpKi9cbiAgICAvLyBFbmQgb2YgZW51bWVyYXRpb24gdmFsdWVzLlxuICAgIC8qKlxuICAgICAqIERhdGEgdHlwZSB0aGUgaGludCBpcyBleHBlY3RpbmcuXG4gICAgICogQW1vbmcgdGhlIHBvc3NpYmxlIHZhbHVlcyB0aGUge0BsaW5rIFZvaWR9IHN0YW5kcyBvdXQgYXMgYmVpbmcgdXNlZCBmb3JcbiAgICAgKiBoaW50cyB0aGF0IGRvIG5vdCBleHBlY3QgYSB2YWx1ZSB0byBiZSBzdXBwbGllZCAoZmxhZyBoaW50cykuIFN1Y2ggaGludHNcbiAgICAgKiB3aWxsIHBvc3NpYmx5IGhhdmUgdGhlaXIgdmFsdWUgaWdub3JlZCwgb3IgcmVwbGFjZWQgYnkgYVxuICAgICAqIHtAbGluayBCb29sZWFuI1RSVUV9LiBIaW50IHN1cHBsaWVycyBzaG91bGQgcHJvYmFibHkgdXNlXG4gICAgICoge0BsaW5rIEJvb2xlYW4jVFJVRX0gYXMgZGlyZWN0ZWQgYnkgdGhlIGFjdHVhbCBoaW50IGRvY3VtZW50YXRpb24uXG4gICAgICovXG4gICAgLy8gcHJpdmF0ZSB2YWx1ZVR5cGU6IENsYXNzPD8+XG4gICAgLy8gRGVjb2RlSGludFR5cGUodmFsdWVUeXBlOiBDbGFzczw/Pikge1xuICAgIC8vICAgdGhpcy52YWx1ZVR5cGUgPSB2YWx1ZVR5cGVcbiAgICAvLyB9XG4gICAgLy8gcHVibGljIGdldFZhbHVlVHlwZSgpOiBDbGFzczw/PiB7XG4gICAgLy8gICByZXR1cm4gdmFsdWVUeXBlXG4gICAgLy8gfVxufSkoRGVjb2RlSGludFR5cGUgfHwgKERlY29kZUhpbnRUeXBlID0ge30pKTtcbmV4cG9ydHMuZGVmYXVsdCA9IERlY29kZUhpbnRUeXBlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RGVjb2RlSGludFR5cGUuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBFeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuL0V4Y2VwdGlvblwiKTtcbi8qKlxuICogQ3VzdG9tIEVycm9yIGNsYXNzIG9mIHR5cGUgRXhjZXB0aW9uLlxuICovXG52YXIgRm9ybWF0RXhjZXB0aW9uID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhGb3JtYXRFeGNlcHRpb24sIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gRm9ybWF0RXhjZXB0aW9uKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIEZvcm1hdEV4Y2VwdGlvbi5nZXRGb3JtYXRJbnN0YW5jZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBGb3JtYXRFeGNlcHRpb24oKTtcbiAgICB9O1xuICAgIEZvcm1hdEV4Y2VwdGlvbi5raW5kID0gJ0Zvcm1hdEV4Y2VwdGlvbic7XG4gICAgcmV0dXJuIEZvcm1hdEV4Y2VwdGlvbjtcbn0oRXhjZXB0aW9uXzEuZGVmYXVsdCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gRm9ybWF0RXhjZXB0aW9uO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Rm9ybWF0RXhjZXB0aW9uLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuLypcbiAqIENvcHlyaWdodCAyMDA4IFpYaW5nIGF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgX192YWx1ZXMgPSAodGhpcyAmJiB0aGlzLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7XG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkNoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnMgPSB2b2lkIDA7XG4vKm5hbWVzcGFjZSBjb20uZ29vZ2xlLnp4aW5nLmNvbW1vbiB7Ki9cbnZhciBGb3JtYXRFeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuLi9Gb3JtYXRFeGNlcHRpb25cIik7XG4vKmltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsqL1xuLyppbXBvcnQgamF2YS51dGlsLk1hcDsqL1xudmFyIENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnM7XG4oZnVuY3Rpb24gKENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnMpIHtcbiAgICBDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzW0NoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnNbXCJDcDQzN1wiXSA9IDBdID0gXCJDcDQzN1wiO1xuICAgIENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnNbQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tcIklTTzg4NTlfMVwiXSA9IDFdID0gXCJJU084ODU5XzFcIjtcbiAgICBDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzW0NoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnNbXCJJU084ODU5XzJcIl0gPSAyXSA9IFwiSVNPODg1OV8yXCI7XG4gICAgQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzW1wiSVNPODg1OV8zXCJdID0gM10gPSBcIklTTzg4NTlfM1wiO1xuICAgIENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnNbQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tcIklTTzg4NTlfNFwiXSA9IDRdID0gXCJJU084ODU5XzRcIjtcbiAgICBDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzW0NoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnNbXCJJU084ODU5XzVcIl0gPSA1XSA9IFwiSVNPODg1OV81XCI7XG4gICAgQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzW1wiSVNPODg1OV82XCJdID0gNl0gPSBcIklTTzg4NTlfNlwiO1xuICAgIENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnNbQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tcIklTTzg4NTlfN1wiXSA9IDddID0gXCJJU084ODU5XzdcIjtcbiAgICBDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzW0NoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnNbXCJJU084ODU5XzhcIl0gPSA4XSA9IFwiSVNPODg1OV84XCI7XG4gICAgQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzW1wiSVNPODg1OV85XCJdID0gOV0gPSBcIklTTzg4NTlfOVwiO1xuICAgIENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnNbQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tcIklTTzg4NTlfMTBcIl0gPSAxMF0gPSBcIklTTzg4NTlfMTBcIjtcbiAgICBDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzW0NoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnNbXCJJU084ODU5XzExXCJdID0gMTFdID0gXCJJU084ODU5XzExXCI7XG4gICAgQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzW1wiSVNPODg1OV8xM1wiXSA9IDEyXSA9IFwiSVNPODg1OV8xM1wiO1xuICAgIENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnNbQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tcIklTTzg4NTlfMTRcIl0gPSAxM10gPSBcIklTTzg4NTlfMTRcIjtcbiAgICBDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzW0NoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnNbXCJJU084ODU5XzE1XCJdID0gMTRdID0gXCJJU084ODU5XzE1XCI7XG4gICAgQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzW1wiSVNPODg1OV8xNlwiXSA9IDE1XSA9IFwiSVNPODg1OV8xNlwiO1xuICAgIENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnNbQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tcIlNKSVNcIl0gPSAxNl0gPSBcIlNKSVNcIjtcbiAgICBDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzW0NoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnNbXCJDcDEyNTBcIl0gPSAxN10gPSBcIkNwMTI1MFwiO1xuICAgIENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnNbQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tcIkNwMTI1MVwiXSA9IDE4XSA9IFwiQ3AxMjUxXCI7XG4gICAgQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzW1wiQ3AxMjUyXCJdID0gMTldID0gXCJDcDEyNTJcIjtcbiAgICBDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzW0NoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnNbXCJDcDEyNTZcIl0gPSAyMF0gPSBcIkNwMTI1NlwiO1xuICAgIENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnNbQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tcIlVuaWNvZGVCaWdVbm1hcmtlZFwiXSA9IDIxXSA9IFwiVW5pY29kZUJpZ1VubWFya2VkXCI7XG4gICAgQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzW1wiVVRGOFwiXSA9IDIyXSA9IFwiVVRGOFwiO1xuICAgIENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnNbQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tcIkFTQ0lJXCJdID0gMjNdID0gXCJBU0NJSVwiO1xuICAgIENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnNbQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tcIkJpZzVcIl0gPSAyNF0gPSBcIkJpZzVcIjtcbiAgICBDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzW0NoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnNbXCJHQjE4MDMwXCJdID0gMjVdID0gXCJHQjE4MDMwXCI7XG4gICAgQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVyc1tDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzW1wiRVVDX0tSXCJdID0gMjZdID0gXCJFVUNfS1JcIjtcbn0pKENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnMgPSBleHBvcnRzLkNoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnMgfHwgKGV4cG9ydHMuQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVycyA9IHt9KSk7XG4vKipcbiAqIEVuY2Fwc3VsYXRlcyBhIENoYXJhY3RlciBTZXQgRUNJLCBhY2NvcmRpbmcgdG8gXCJFeHRlbmRlZCBDaGFubmVsIEludGVycHJldGF0aW9uc1wiIDUuMy4xLjFcbiAqIG9mIElTTyAxODAwNC5cbiAqXG4gKiBAYXV0aG9yIFNlYW4gT3dlblxuICovXG52YXIgQ2hhcmFjdGVyU2V0RUNJID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIENoYXJhY3RlclNldEVDSSh2YWx1ZUlkZW50aWZpZXIsIHZhbHVlc1BhcmFtLCBuYW1lKSB7XG4gICAgICAgIHZhciBlXzEsIF9hO1xuICAgICAgICB2YXIgb3RoZXJFbmNvZGluZ05hbWVzID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMzsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBvdGhlckVuY29kaW5nTmFtZXNbX2kgLSAzXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy52YWx1ZUlkZW50aWZpZXIgPSB2YWx1ZUlkZW50aWZpZXI7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWVzUGFyYW0gPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlcyA9IEludDMyQXJyYXkuZnJvbShbdmFsdWVzUGFyYW1dKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWVzID0gdmFsdWVzUGFyYW07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vdGhlckVuY29kaW5nTmFtZXMgPSBvdGhlckVuY29kaW5nTmFtZXM7XG4gICAgICAgIENoYXJhY3RlclNldEVDSS5WQUxVRV9JREVOVElGSUVSX1RPX0VDSS5zZXQodmFsdWVJZGVudGlmaWVyLCB0aGlzKTtcbiAgICAgICAgQ2hhcmFjdGVyU2V0RUNJLk5BTUVfVE9fRUNJLnNldChuYW1lLCB0aGlzKTtcbiAgICAgICAgdmFyIHZhbHVlcyA9IHRoaXMudmFsdWVzO1xuICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoXzEgPSB2YWx1ZXMubGVuZ3RoOyBpICE9PSBsZW5ndGhfMTsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgdiA9IHZhbHVlc1tpXTtcbiAgICAgICAgICAgIENoYXJhY3RlclNldEVDSS5WQUxVRVNfVE9fRUNJLnNldCh2LCB0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yICh2YXIgb3RoZXJFbmNvZGluZ05hbWVzXzEgPSBfX3ZhbHVlcyhvdGhlckVuY29kaW5nTmFtZXMpLCBvdGhlckVuY29kaW5nTmFtZXNfMV8xID0gb3RoZXJFbmNvZGluZ05hbWVzXzEubmV4dCgpOyAhb3RoZXJFbmNvZGluZ05hbWVzXzFfMS5kb25lOyBvdGhlckVuY29kaW5nTmFtZXNfMV8xID0gb3RoZXJFbmNvZGluZ05hbWVzXzEubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIG90aGVyTmFtZSA9IG90aGVyRW5jb2RpbmdOYW1lc18xXzEudmFsdWU7XG4gICAgICAgICAgICAgICAgQ2hhcmFjdGVyU2V0RUNJLk5BTUVfVE9fRUNJLnNldChvdGhlck5hbWUsIHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAob3RoZXJFbmNvZGluZ05hbWVzXzFfMSAmJiAhb3RoZXJFbmNvZGluZ05hbWVzXzFfMS5kb25lICYmIChfYSA9IG90aGVyRW5jb2RpbmdOYW1lc18xLnJldHVybikpIF9hLmNhbGwob3RoZXJFbmNvZGluZ05hbWVzXzEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIENoYXJhY3RlclNldEVDSSh2YWx1ZTogbnVtYmVyIC8qaW50Ki8pIHtcbiAgICAvLyAgIHRoaXMobmV3IEludDMyQXJyYXkge3ZhbHVlfSlcbiAgICAvLyB9XG4gICAgLy8gQ2hhcmFjdGVyU2V0RUNJKHZhbHVlOiBudW1iZXIgLyppbnQqLywgU3RyaW5nLi4uIG90aGVyRW5jb2RpbmdOYW1lcykge1xuICAgIC8vICAgdGhpcy52YWx1ZXMgPSBuZXcgSW50MzJBcnJheSB7dmFsdWV9XG4gICAgLy8gICB0aGlzLm90aGVyRW5jb2RpbmdOYW1lcyA9IG90aGVyRW5jb2RpbmdOYW1lc1xuICAgIC8vIH1cbiAgICAvLyBDaGFyYWN0ZXJTZXRFQ0kodmFsdWVzOiBJbnQzMkFycmF5LCBTdHJpbmcuLi4gb3RoZXJFbmNvZGluZ05hbWVzKSB7XG4gICAgLy8gICB0aGlzLnZhbHVlcyA9IHZhbHVlc1xuICAgIC8vICAgdGhpcy5vdGhlckVuY29kaW5nTmFtZXMgPSBvdGhlckVuY29kaW5nTmFtZXNcbiAgICAvLyB9XG4gICAgQ2hhcmFjdGVyU2V0RUNJLnByb3RvdHlwZS5nZXRWYWx1ZUlkZW50aWZpZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlSWRlbnRpZmllcjtcbiAgICB9O1xuICAgIENoYXJhY3RlclNldEVDSS5wcm90b3R5cGUuZ2V0TmFtZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmFtZTtcbiAgICB9O1xuICAgIENoYXJhY3RlclNldEVDSS5wcm90b3R5cGUuZ2V0VmFsdWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlc1swXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB2YWx1ZSBjaGFyYWN0ZXIgc2V0IEVDSSB2YWx1ZVxuICAgICAqIEByZXR1cm4ge0Bjb2RlIENoYXJhY3RlclNldEVDSX0gcmVwcmVzZW50aW5nIEVDSSBvZiBnaXZlbiB2YWx1ZSwgb3IgbnVsbCBpZiBpdCBpcyBsZWdhbCBidXRcbiAgICAgKiAgIHVuc3VwcG9ydGVkXG4gICAgICogQHRocm93cyBGb3JtYXRFeGNlcHRpb24gaWYgRUNJIHZhbHVlIGlzIGludmFsaWRcbiAgICAgKi9cbiAgICBDaGFyYWN0ZXJTZXRFQ0kuZ2V0Q2hhcmFjdGVyU2V0RUNJQnlWYWx1ZSA9IGZ1bmN0aW9uICh2YWx1ZSAvKmludCovKSB7XG4gICAgICAgIGlmICh2YWx1ZSA8IDAgfHwgdmFsdWUgPj0gOTAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgnaW5jb3JlY3QgdmFsdWUnKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgY2hhcmFjdGVyU2V0ID0gQ2hhcmFjdGVyU2V0RUNJLlZBTFVFU19UT19FQ0kuZ2V0KHZhbHVlKTtcbiAgICAgICAgaWYgKHVuZGVmaW5lZCA9PT0gY2hhcmFjdGVyU2V0KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgnaW5jb3JlY3QgdmFsdWUnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2hhcmFjdGVyU2V0O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHBhcmFtIG5hbWUgY2hhcmFjdGVyIHNldCBFQ0kgZW5jb2RpbmcgbmFtZVxuICAgICAqIEByZXR1cm4gQ2hhcmFjdGVyU2V0RUNJIHJlcHJlc2VudGluZyBFQ0kgZm9yIGNoYXJhY3RlciBlbmNvZGluZywgb3IgbnVsbCBpZiBpdCBpcyBsZWdhbFxuICAgICAqICAgYnV0IHVuc3VwcG9ydGVkXG4gICAgICovXG4gICAgQ2hhcmFjdGVyU2V0RUNJLmdldENoYXJhY3RlclNldEVDSUJ5TmFtZSA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgIHZhciBjaGFyYWN0ZXJTZXQgPSBDaGFyYWN0ZXJTZXRFQ0kuTkFNRV9UT19FQ0kuZ2V0KG5hbWUpO1xuICAgICAgICBpZiAodW5kZWZpbmVkID09PSBjaGFyYWN0ZXJTZXQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KCdpbmNvcmVjdCB2YWx1ZScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjaGFyYWN0ZXJTZXQ7XG4gICAgfTtcbiAgICBDaGFyYWN0ZXJTZXRFQ0kucHJvdG90eXBlLmVxdWFscyA9IGZ1bmN0aW9uIChvKSB7XG4gICAgICAgIGlmICghKG8gaW5zdGFuY2VvZiBDaGFyYWN0ZXJTZXRFQ0kpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG90aGVyID0gbztcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TmFtZSgpID09PSBvdGhlci5nZXROYW1lKCk7XG4gICAgfTtcbiAgICBDaGFyYWN0ZXJTZXRFQ0kuVkFMVUVfSURFTlRJRklFUl9UT19FQ0kgPSBuZXcgTWFwKCk7XG4gICAgQ2hhcmFjdGVyU2V0RUNJLlZBTFVFU19UT19FQ0kgPSBuZXcgTWFwKCk7XG4gICAgQ2hhcmFjdGVyU2V0RUNJLk5BTUVfVE9fRUNJID0gbmV3IE1hcCgpO1xuICAgIC8vIEVudW0gbmFtZSBpcyBhIEphdmEgZW5jb2RpbmcgdmFsaWQgZm9yIGphdmEubGFuZyBhbmQgamF2YS5pb1xuICAgIC8vIFRZUEVTQ1JJUFRQT1JUOiBjaGFuZ2VkIHRoZSBtYWluIGxhYmVsIGZvciBJU08gYXMgdGhlIFRleHRFbmNvZGVyIGRpZCBub3QgcmVjb2duaXplZCB0aGVtIGluIHRoZSBmb3JtIGZyb20gamF2YVxuICAgIC8vIChlZyBJU084ODU5XzEgbXVzdCBiZSBJU084ODU5MSBvciBJU084ODU5LTEgb3IgSVNPLTg4NTktMSlcbiAgICAvLyBsYXRlciBvbjogd2VsbCwgZXhjZXB0IDE2IHdpY2ggZG9lcyBub3Qgd29yayB3aXRoIElTTzg4NTkxNiBzbyB1c2VkIElTTy04ODU5LTEgZm9ybSBmb3IgZGVmYXVsdFxuICAgIENoYXJhY3RlclNldEVDSS5DcDQzNyA9IG5ldyBDaGFyYWN0ZXJTZXRFQ0koQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVycy5DcDQzNywgSW50MzJBcnJheS5mcm9tKFswLCAyXSksICdDcDQzNycpO1xuICAgIENoYXJhY3RlclNldEVDSS5JU084ODU5XzEgPSBuZXcgQ2hhcmFjdGVyU2V0RUNJKENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnMuSVNPODg1OV8xLCBJbnQzMkFycmF5LmZyb20oWzEsIDNdKSwgJ0lTTy04ODU5LTEnLCAnSVNPODg1OTEnLCAnSVNPODg1OV8xJyk7XG4gICAgQ2hhcmFjdGVyU2V0RUNJLklTTzg4NTlfMiA9IG5ldyBDaGFyYWN0ZXJTZXRFQ0koQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVycy5JU084ODU5XzIsIDQsICdJU08tODg1OS0yJywgJ0lTTzg4NTkyJywgJ0lTTzg4NTlfMicpO1xuICAgIENoYXJhY3RlclNldEVDSS5JU084ODU5XzMgPSBuZXcgQ2hhcmFjdGVyU2V0RUNJKENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnMuSVNPODg1OV8zLCA1LCAnSVNPLTg4NTktMycsICdJU084ODU5MycsICdJU084ODU5XzMnKTtcbiAgICBDaGFyYWN0ZXJTZXRFQ0kuSVNPODg1OV80ID0gbmV3IENoYXJhY3RlclNldEVDSShDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzLklTTzg4NTlfNCwgNiwgJ0lTTy04ODU5LTQnLCAnSVNPODg1OTQnLCAnSVNPODg1OV80Jyk7XG4gICAgQ2hhcmFjdGVyU2V0RUNJLklTTzg4NTlfNSA9IG5ldyBDaGFyYWN0ZXJTZXRFQ0koQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVycy5JU084ODU5XzUsIDcsICdJU08tODg1OS01JywgJ0lTTzg4NTk1JywgJ0lTTzg4NTlfNScpO1xuICAgIENoYXJhY3RlclNldEVDSS5JU084ODU5XzYgPSBuZXcgQ2hhcmFjdGVyU2V0RUNJKENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnMuSVNPODg1OV82LCA4LCAnSVNPLTg4NTktNicsICdJU084ODU5NicsICdJU084ODU5XzYnKTtcbiAgICBDaGFyYWN0ZXJTZXRFQ0kuSVNPODg1OV83ID0gbmV3IENoYXJhY3RlclNldEVDSShDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzLklTTzg4NTlfNywgOSwgJ0lTTy04ODU5LTcnLCAnSVNPODg1OTcnLCAnSVNPODg1OV83Jyk7XG4gICAgQ2hhcmFjdGVyU2V0RUNJLklTTzg4NTlfOCA9IG5ldyBDaGFyYWN0ZXJTZXRFQ0koQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVycy5JU084ODU5XzgsIDEwLCAnSVNPLTg4NTktOCcsICdJU084ODU5OCcsICdJU084ODU5XzgnKTtcbiAgICBDaGFyYWN0ZXJTZXRFQ0kuSVNPODg1OV85ID0gbmV3IENoYXJhY3RlclNldEVDSShDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzLklTTzg4NTlfOSwgMTEsICdJU08tODg1OS05JywgJ0lTTzg4NTk5JywgJ0lTTzg4NTlfOScpO1xuICAgIENoYXJhY3RlclNldEVDSS5JU084ODU5XzEwID0gbmV3IENoYXJhY3RlclNldEVDSShDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzLklTTzg4NTlfMTAsIDEyLCAnSVNPLTg4NTktMTAnLCAnSVNPODg1OTEwJywgJ0lTTzg4NTlfMTAnKTtcbiAgICBDaGFyYWN0ZXJTZXRFQ0kuSVNPODg1OV8xMSA9IG5ldyBDaGFyYWN0ZXJTZXRFQ0koQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVycy5JU084ODU5XzExLCAxMywgJ0lTTy04ODU5LTExJywgJ0lTTzg4NTkxMScsICdJU084ODU5XzExJyk7XG4gICAgQ2hhcmFjdGVyU2V0RUNJLklTTzg4NTlfMTMgPSBuZXcgQ2hhcmFjdGVyU2V0RUNJKENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnMuSVNPODg1OV8xMywgMTUsICdJU08tODg1OS0xMycsICdJU084ODU5MTMnLCAnSVNPODg1OV8xMycpO1xuICAgIENoYXJhY3RlclNldEVDSS5JU084ODU5XzE0ID0gbmV3IENoYXJhY3RlclNldEVDSShDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzLklTTzg4NTlfMTQsIDE2LCAnSVNPLTg4NTktMTQnLCAnSVNPODg1OTE0JywgJ0lTTzg4NTlfMTQnKTtcbiAgICBDaGFyYWN0ZXJTZXRFQ0kuSVNPODg1OV8xNSA9IG5ldyBDaGFyYWN0ZXJTZXRFQ0koQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVycy5JU084ODU5XzE1LCAxNywgJ0lTTy04ODU5LTE1JywgJ0lTTzg4NTkxNScsICdJU084ODU5XzE1Jyk7XG4gICAgQ2hhcmFjdGVyU2V0RUNJLklTTzg4NTlfMTYgPSBuZXcgQ2hhcmFjdGVyU2V0RUNJKENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnMuSVNPODg1OV8xNiwgMTgsICdJU08tODg1OS0xNicsICdJU084ODU5MTYnLCAnSVNPODg1OV8xNicpO1xuICAgIENoYXJhY3RlclNldEVDSS5TSklTID0gbmV3IENoYXJhY3RlclNldEVDSShDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzLlNKSVMsIDIwLCAnU0pJUycsICdTaGlmdF9KSVMnKTtcbiAgICBDaGFyYWN0ZXJTZXRFQ0kuQ3AxMjUwID0gbmV3IENoYXJhY3RlclNldEVDSShDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzLkNwMTI1MCwgMjEsICdDcDEyNTAnLCAnd2luZG93cy0xMjUwJyk7XG4gICAgQ2hhcmFjdGVyU2V0RUNJLkNwMTI1MSA9IG5ldyBDaGFyYWN0ZXJTZXRFQ0koQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVycy5DcDEyNTEsIDIyLCAnQ3AxMjUxJywgJ3dpbmRvd3MtMTI1MScpO1xuICAgIENoYXJhY3RlclNldEVDSS5DcDEyNTIgPSBuZXcgQ2hhcmFjdGVyU2V0RUNJKENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnMuQ3AxMjUyLCAyMywgJ0NwMTI1MicsICd3aW5kb3dzLTEyNTInKTtcbiAgICBDaGFyYWN0ZXJTZXRFQ0kuQ3AxMjU2ID0gbmV3IENoYXJhY3RlclNldEVDSShDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzLkNwMTI1NiwgMjQsICdDcDEyNTYnLCAnd2luZG93cy0xMjU2Jyk7XG4gICAgQ2hhcmFjdGVyU2V0RUNJLlVuaWNvZGVCaWdVbm1hcmtlZCA9IG5ldyBDaGFyYWN0ZXJTZXRFQ0koQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVycy5Vbmljb2RlQmlnVW5tYXJrZWQsIDI1LCAnVW5pY29kZUJpZ1VubWFya2VkJywgJ1VURi0xNkJFJywgJ1VuaWNvZGVCaWcnKTtcbiAgICBDaGFyYWN0ZXJTZXRFQ0kuVVRGOCA9IG5ldyBDaGFyYWN0ZXJTZXRFQ0koQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVycy5VVEY4LCAyNiwgJ1VURjgnLCAnVVRGLTgnKTtcbiAgICBDaGFyYWN0ZXJTZXRFQ0kuQVNDSUkgPSBuZXcgQ2hhcmFjdGVyU2V0RUNJKENoYXJhY3RlclNldFZhbHVlSWRlbnRpZmllcnMuQVNDSUksIEludDMyQXJyYXkuZnJvbShbMjcsIDE3MF0pLCAnQVNDSUknLCAnVVMtQVNDSUknKTtcbiAgICBDaGFyYWN0ZXJTZXRFQ0kuQmlnNSA9IG5ldyBDaGFyYWN0ZXJTZXRFQ0koQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVycy5CaWc1LCAyOCwgJ0JpZzUnKTtcbiAgICBDaGFyYWN0ZXJTZXRFQ0kuR0IxODAzMCA9IG5ldyBDaGFyYWN0ZXJTZXRFQ0koQ2hhcmFjdGVyU2V0VmFsdWVJZGVudGlmaWVycy5HQjE4MDMwLCAyOSwgJ0dCMTgwMzAnLCAnR0IyMzEyJywgJ0VVQ19DTicsICdHQksnKTtcbiAgICBDaGFyYWN0ZXJTZXRFQ0kuRVVDX0tSID0gbmV3IENoYXJhY3RlclNldEVDSShDaGFyYWN0ZXJTZXRWYWx1ZUlkZW50aWZpZXJzLkVVQ19LUiwgMzAsICdFVUNfS1InLCAnRVVDLUtSJyk7XG4gICAgcmV0dXJuIENoYXJhY3RlclNldEVDSTtcbn0oKSk7XG5leHBvcnRzLmRlZmF1bHQgPSBDaGFyYWN0ZXJTZXRFQ0k7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1DaGFyYWN0ZXJTZXRFQ0kuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBFeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuL0V4Y2VwdGlvblwiKTtcbi8qKlxuICogQ3VzdG9tIEVycm9yIGNsYXNzIG9mIHR5cGUgRXhjZXB0aW9uLlxuICovXG52YXIgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uLmtpbmQgPSAnVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24nO1xuICAgIHJldHVybiBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbjtcbn0oRXhjZXB0aW9uXzEuZGVmYXVsdCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb247XG4vLyMgc291cmNlTWFwcGluZ1VSTD1VbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbi5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4uL1Vuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uXCIpO1xudmFyIENoYXJhY3RlclNldEVDSV8xID0gcmVxdWlyZShcIi4uL2NvbW1vbi9DaGFyYWN0ZXJTZXRFQ0lcIik7XG4vKipcbiAqIFJlc3BvbnNpYmxlIGZvciBlbi9kZWNvZGluZyBzdHJpbmdzLlxuICovXG52YXIgU3RyaW5nRW5jb2RpbmcgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gU3RyaW5nRW5jb2RpbmcoKSB7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIERlY29kZXMgc29tZSBVaW50OEFycmF5IHRvIGEgc3RyaW5nIGZvcm1hdC5cbiAgICAgKi9cbiAgICBTdHJpbmdFbmNvZGluZy5kZWNvZGUgPSBmdW5jdGlvbiAoYnl0ZXMsIGVuY29kaW5nKSB7XG4gICAgICAgIHZhciBlbmNvZGluZ05hbWUgPSB0aGlzLmVuY29kaW5nTmFtZShlbmNvZGluZyk7XG4gICAgICAgIGlmICh0aGlzLmN1c3RvbURlY29kZXIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmN1c3RvbURlY29kZXIoYnl0ZXMsIGVuY29kaW5nTmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gSW5jcmVhc2VzIGJyb3dzZXIgc3VwcG9ydC5cbiAgICAgICAgaWYgKHR5cGVvZiBUZXh0RGVjb2RlciA9PT0gJ3VuZGVmaW5lZCcgfHwgdGhpcy5zaG91bGREZWNvZGVPbkZhbGxiYWNrKGVuY29kaW5nTmFtZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRlY29kZUZhbGxiYWNrKGJ5dGVzLCBlbmNvZGluZ05hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgVGV4dERlY29kZXIoZW5jb2RpbmdOYW1lKS5kZWNvZGUoYnl0ZXMpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHRoZSBkZWNvZGluZyBtZXRob2Qgc2hvdWxkIHVzZSB0aGUgZmFsbGJhY2sgZm9yIGRlY29kaW5nXG4gICAgICogb25jZSBOb2RlIFRleHREZWNvZGVyIGRvZXNuJ3Qgc3VwcG9ydCBhbGwgZW5jb2RpbmcgZm9ybWF0cy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBlbmNvZGluZ05hbWVcbiAgICAgKi9cbiAgICBTdHJpbmdFbmNvZGluZy5zaG91bGREZWNvZGVPbkZhbGxiYWNrID0gZnVuY3Rpb24gKGVuY29kaW5nTmFtZSkge1xuICAgICAgICByZXR1cm4gIVN0cmluZ0VuY29kaW5nLmlzQnJvd3NlcigpICYmIGVuY29kaW5nTmFtZSA9PT0gJ0lTTy04ODU5LTEnO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogRW5jb2RlcyBzb21lIHN0cmluZyBpbnRvIGEgVWludDhBcnJheS5cbiAgICAgKi9cbiAgICBTdHJpbmdFbmNvZGluZy5lbmNvZGUgPSBmdW5jdGlvbiAocywgZW5jb2RpbmcpIHtcbiAgICAgICAgdmFyIGVuY29kaW5nTmFtZSA9IHRoaXMuZW5jb2RpbmdOYW1lKGVuY29kaW5nKTtcbiAgICAgICAgaWYgKHRoaXMuY3VzdG9tRW5jb2Rlcikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3VzdG9tRW5jb2RlcihzLCBlbmNvZGluZ05hbWUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIEluY3JlYXNlcyBicm93c2VyIHN1cHBvcnQuXG4gICAgICAgIGlmICh0eXBlb2YgVGV4dEVuY29kZXIgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5lbmNvZGVGYWxsYmFjayhzKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBUZXh0RW5jb2RlciBvbmx5IGVuY29kZXMgdG8gVVRGOCBieSBkZWZhdWx0IGFzIHNwZWNpZmllZCBieSBlbmNvZGluZy5zcGVjLndoYXR3Zy5vcmdcbiAgICAgICAgcmV0dXJuIG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShzKTtcbiAgICB9O1xuICAgIFN0cmluZ0VuY29kaW5nLmlzQnJvd3NlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB7fS50b1N0cmluZy5jYWxsKHdpbmRvdykgPT09ICdbb2JqZWN0IFdpbmRvd10nKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHN0cmluZyB2YWx1ZSBmcm9tIHNvbWUgZW5jb2RpbmcgY2hhcmFjdGVyIHNldC5cbiAgICAgKi9cbiAgICBTdHJpbmdFbmNvZGluZy5lbmNvZGluZ05hbWUgPSBmdW5jdGlvbiAoZW5jb2RpbmcpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBlbmNvZGluZyA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgID8gZW5jb2RpbmdcbiAgICAgICAgICAgIDogZW5jb2RpbmcuZ2V0TmFtZSgpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBjaGFyYWN0ZXIgc2V0IGZyb20gc29tZSBlbmNvZGluZyBjaGFyYWN0ZXIgc2V0LlxuICAgICAqL1xuICAgIFN0cmluZ0VuY29kaW5nLmVuY29kaW5nQ2hhcmFjdGVyU2V0ID0gZnVuY3Rpb24gKGVuY29kaW5nKSB7XG4gICAgICAgIGlmIChlbmNvZGluZyBpbnN0YW5jZW9mIENoYXJhY3RlclNldEVDSV8xLmRlZmF1bHQpIHtcbiAgICAgICAgICAgIHJldHVybiBlbmNvZGluZztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gQ2hhcmFjdGVyU2V0RUNJXzEuZGVmYXVsdC5nZXRDaGFyYWN0ZXJTZXRFQ0lCeU5hbWUoZW5jb2RpbmcpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogUnVucyBhIGZhbGxiYWNrIGZvciB0aGUgbmF0aXZlIGRlY29kaW5nIGZ1bmNpb24uXG4gICAgICovXG4gICAgU3RyaW5nRW5jb2RpbmcuZGVjb2RlRmFsbGJhY2sgPSBmdW5jdGlvbiAoYnl0ZXMsIGVuY29kaW5nKSB7XG4gICAgICAgIHZhciBjaGFyYWN0ZXJTZXQgPSB0aGlzLmVuY29kaW5nQ2hhcmFjdGVyU2V0KGVuY29kaW5nKTtcbiAgICAgICAgaWYgKFN0cmluZ0VuY29kaW5nLmlzRGVjb2RlRmFsbGJhY2tTdXBwb3J0ZWQoY2hhcmFjdGVyU2V0KSkge1xuICAgICAgICAgICAgdmFyIHMgPSAnJztcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGhfMSA9IGJ5dGVzLmxlbmd0aDsgaSA8IGxlbmd0aF8xOyBpKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgaCA9IGJ5dGVzW2ldLnRvU3RyaW5nKDE2KTtcbiAgICAgICAgICAgICAgICBpZiAoaC5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgICAgICAgICAgIGggPSAnMCcgKyBoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzICs9ICclJyArIGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFyYWN0ZXJTZXQuZXF1YWxzKENoYXJhY3RlclNldEVDSV8xLmRlZmF1bHQuVW5pY29kZUJpZ1VubWFya2VkKSkge1xuICAgICAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCwgbmV3IFVpbnQxNkFycmF5KGJ5dGVzLmJ1ZmZlcikpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbl8xLmRlZmF1bHQoXCJFbmNvZGluZyBcIiArIHRoaXMuZW5jb2RpbmdOYW1lKGVuY29kaW5nKSArIFwiIG5vdCBzdXBwb3J0ZWQgYnkgZmFsbGJhY2suXCIpO1xuICAgIH07XG4gICAgU3RyaW5nRW5jb2RpbmcuaXNEZWNvZGVGYWxsYmFja1N1cHBvcnRlZCA9IGZ1bmN0aW9uIChjaGFyYWN0ZXJTZXQpIHtcbiAgICAgICAgcmV0dXJuIGNoYXJhY3RlclNldC5lcXVhbHMoQ2hhcmFjdGVyU2V0RUNJXzEuZGVmYXVsdC5VVEY4KSB8fFxuICAgICAgICAgICAgY2hhcmFjdGVyU2V0LmVxdWFscyhDaGFyYWN0ZXJTZXRFQ0lfMS5kZWZhdWx0LklTTzg4NTlfMSkgfHxcbiAgICAgICAgICAgIGNoYXJhY3RlclNldC5lcXVhbHMoQ2hhcmFjdGVyU2V0RUNJXzEuZGVmYXVsdC5BU0NJSSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBSdW5zIGEgZmFsbGJhY2sgZm9yIHRoZSBuYXRpdmUgZW5jb2RpbmcgZnVuY2lvbi5cbiAgICAgKlxuICAgICAqIEBzZWUgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzE3MTkyODQ1LzQzNjc2ODNcbiAgICAgKi9cbiAgICBTdHJpbmdFbmNvZGluZy5lbmNvZGVGYWxsYmFjayA9IGZ1bmN0aW9uIChzKSB7XG4gICAgICAgIHZhciBlbmNvZGVkVVJJc3RyaW5nID0gYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQocykpKTtcbiAgICAgICAgdmFyIGNoYXJMaXN0ID0gZW5jb2RlZFVSSXN0cmluZy5zcGxpdCgnJyk7XG4gICAgICAgIHZhciB1aW50QXJyYXkgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGFyTGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdWludEFycmF5LnB1c2goY2hhckxpc3RbaV0uY2hhckNvZGVBdCgwKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KHVpbnRBcnJheSk7XG4gICAgfTtcbiAgICByZXR1cm4gU3RyaW5nRW5jb2Rpbmc7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gU3RyaW5nRW5jb2Rpbmc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1TdHJpbmdFbmNvZGluZy5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgWlhpbmcgYXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qbmFtZXNwYWNlIGNvbS5nb29nbGUuenhpbmcuY29tbW9uIHsqL1xuLyppbXBvcnQgamF2YS5uaW8uY2hhcnNldC5DaGFyc2V0OyovXG4vKmltcG9ydCBqYXZhLnV0aWwuTWFwOyovXG52YXIgRGVjb2RlSGludFR5cGVfMSA9IHJlcXVpcmUoXCIuLi9EZWNvZGVIaW50VHlwZVwiKTtcbnZhciBDaGFyYWN0ZXJTZXRFQ0lfMSA9IHJlcXVpcmUoXCIuL0NoYXJhY3RlclNldEVDSVwiKTtcbnZhciBTdHJpbmdFbmNvZGluZ18xID0gcmVxdWlyZShcIi4uL3V0aWwvU3RyaW5nRW5jb2RpbmdcIik7XG4vKipcbiAqIENvbW1vbiBzdHJpbmctcmVsYXRlZCBmdW5jdGlvbnMuXG4gKlxuICogQGF1dGhvciBTZWFuIE93ZW5cbiAqIEBhdXRob3IgQWxleCBEdXByZVxuICovXG52YXIgU3RyaW5nVXRpbHMgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gU3RyaW5nVXRpbHMoKSB7XG4gICAgfVxuICAgIC8vIFNISUZUX0pJUy5lcXVhbHNJZ25vcmVDYXNlKFBMQVRGT1JNX0RFRkFVTFRfRU5DT0RJTkcpIHx8XG4gICAgLy8gRVVDX0pQLmVxdWFsc0lnbm9yZUNhc2UoUExBVEZPUk1fREVGQVVMVF9FTkNPRElORyk7XG4gICAgU3RyaW5nVXRpbHMuY2FzdEFzTm9uVXRmOENoYXIgPSBmdW5jdGlvbiAoY29kZSwgZW5jb2RpbmcpIHtcbiAgICAgICAgaWYgKGVuY29kaW5nID09PSB2b2lkIDApIHsgZW5jb2RpbmcgPSBudWxsOyB9XG4gICAgICAgIC8vIElTTyA4ODU5LTEgaXMgdGhlIEphdmEgZGVmYXVsdCBhcyBVVEYtOCBpcyBKYXZhU2NyaXB0c1xuICAgICAgICAvLyB5b3UgY2FuIHNlZSB0aGlzIG1ldGhvZCBhcyBhIEphdmEgdmVyc2lvbiBvZiBTdHJpbmcuZnJvbUNoYXJDb2RlXG4gICAgICAgIHZhciBlID0gZW5jb2RpbmcgPyBlbmNvZGluZy5nZXROYW1lKCkgOiB0aGlzLklTTzg4NTkxO1xuICAgICAgICAvLyB1c2UgcGFzc2VkIGZvcm1hdCAoZnJvbUNoYXJDb2RlIHdpbGwgcmV0dXJuIFVURjggZW5jb2RpbmcpXG4gICAgICAgIHJldHVybiBTdHJpbmdFbmNvZGluZ18xLmRlZmF1bHQuZGVjb2RlKG5ldyBVaW50OEFycmF5KFtjb2RlXSksIGUpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHBhcmFtIGJ5dGVzIGJ5dGVzIGVuY29kaW5nIGEgc3RyaW5nLCB3aG9zZSBlbmNvZGluZyBzaG91bGQgYmUgZ3Vlc3NlZFxuICAgICAqIEBwYXJhbSBoaW50cyBkZWNvZGUgaGludHMgaWYgYXBwbGljYWJsZVxuICAgICAqIEByZXR1cm4gbmFtZSBvZiBndWVzc2VkIGVuY29kaW5nOyBhdCB0aGUgbW9tZW50IHdpbGwgb25seSBndWVzcyBvbmUgb2Y6XG4gICAgICogIHtAbGluayAjU0hJRlRfSklTfSwge0BsaW5rICNVVEY4fSwge0BsaW5rICNJU084ODU5MX0sIG9yIHRoZSBwbGF0Zm9ybVxuICAgICAqICBkZWZhdWx0IGVuY29kaW5nIGlmIG5vbmUgb2YgdGhlc2UgY2FuIHBvc3NpYmx5IGJlIGNvcnJlY3RcbiAgICAgKi9cbiAgICBTdHJpbmdVdGlscy5ndWVzc0VuY29kaW5nID0gZnVuY3Rpb24gKGJ5dGVzLCBoaW50cykge1xuICAgICAgICBpZiAoaGludHMgIT09IG51bGwgJiYgaGludHMgIT09IHVuZGVmaW5lZCAmJiB1bmRlZmluZWQgIT09IGhpbnRzLmdldChEZWNvZGVIaW50VHlwZV8xLmRlZmF1bHQuQ0hBUkFDVEVSX1NFVCkpIHtcbiAgICAgICAgICAgIHJldHVybiBoaW50cy5nZXQoRGVjb2RlSGludFR5cGVfMS5kZWZhdWx0LkNIQVJBQ1RFUl9TRVQpLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRm9yIG5vdywgbWVyZWx5IHRyaWVzIHRvIGRpc3Rpbmd1aXNoIElTTy04ODU5LTEsIFVURi04IGFuZCBTaGlmdF9KSVMsXG4gICAgICAgIC8vIHdoaWNoIHNob3VsZCBiZSBieSBmYXIgdGhlIG1vc3QgY29tbW9uIGVuY29kaW5ncy5cbiAgICAgICAgdmFyIGxlbmd0aCA9IGJ5dGVzLmxlbmd0aDtcbiAgICAgICAgdmFyIGNhbkJlSVNPODg1OTEgPSB0cnVlO1xuICAgICAgICB2YXIgY2FuQmVTaGlmdEpJUyA9IHRydWU7XG4gICAgICAgIHZhciBjYW5CZVVURjggPSB0cnVlO1xuICAgICAgICB2YXIgdXRmOEJ5dGVzTGVmdCA9IDA7XG4gICAgICAgIC8vIGludCB1dGY4TG93Q2hhcnMgPSAwXG4gICAgICAgIHZhciB1dGYyQnl0ZXNDaGFycyA9IDA7XG4gICAgICAgIHZhciB1dGYzQnl0ZXNDaGFycyA9IDA7XG4gICAgICAgIHZhciB1dGY0Qnl0ZXNDaGFycyA9IDA7XG4gICAgICAgIHZhciBzamlzQnl0ZXNMZWZ0ID0gMDtcbiAgICAgICAgLy8gaW50IHNqaXNMb3dDaGFycyA9IDBcbiAgICAgICAgdmFyIHNqaXNLYXRha2FuYUNoYXJzID0gMDtcbiAgICAgICAgLy8gaW50IHNqaXNEb3VibGVCeXRlc0NoYXJzID0gMFxuICAgICAgICB2YXIgc2ppc0N1ckthdGFrYW5hV29yZExlbmd0aCA9IDA7XG4gICAgICAgIHZhciBzamlzQ3VyRG91YmxlQnl0ZXNXb3JkTGVuZ3RoID0gMDtcbiAgICAgICAgdmFyIHNqaXNNYXhLYXRha2FuYVdvcmRMZW5ndGggPSAwO1xuICAgICAgICB2YXIgc2ppc01heERvdWJsZUJ5dGVzV29yZExlbmd0aCA9IDA7XG4gICAgICAgIC8vIGludCBpc29Mb3dDaGFycyA9IDBcbiAgICAgICAgLy8gaW50IGlzb0hpZ2hDaGFycyA9IDBcbiAgICAgICAgdmFyIGlzb0hpZ2hPdGhlciA9IDA7XG4gICAgICAgIHZhciB1dGY4Ym9tID0gYnl0ZXMubGVuZ3RoID4gMyAmJlxuICAgICAgICAgICAgYnl0ZXNbMF0gPT09IC8qKGJ5dGUpICovIDB4RUYgJiZcbiAgICAgICAgICAgIGJ5dGVzWzFdID09PSAvKihieXRlKSAqLyAweEJCICYmXG4gICAgICAgICAgICBieXRlc1syXSA9PT0gLyooYnl0ZSkgKi8gMHhCRjtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGggJiYgKGNhbkJlSVNPODg1OTEgfHwgY2FuQmVTaGlmdEpJUyB8fCBjYW5CZVVURjgpOyBpKyspIHtcbiAgICAgICAgICAgIHZhciB2YWx1ZSA9IGJ5dGVzW2ldICYgMHhGRjtcbiAgICAgICAgICAgIC8vIFVURi04IHN0dWZmXG4gICAgICAgICAgICBpZiAoY2FuQmVVVEY4KSB7XG4gICAgICAgICAgICAgICAgaWYgKHV0ZjhCeXRlc0xlZnQgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICgodmFsdWUgJiAweDgwKSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FuQmVVVEY4ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1dGY4Qnl0ZXNMZWZ0LS07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoKHZhbHVlICYgMHg4MCkgIT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCh2YWx1ZSAmIDB4NDApID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYW5CZVVURjggPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHV0ZjhCeXRlc0xlZnQrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodmFsdWUgJiAweDIwKSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0ZjJCeXRlc0NoYXJzKys7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGY4Qnl0ZXNMZWZ0Kys7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh2YWx1ZSAmIDB4MTApID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0ZjNCeXRlc0NoYXJzKys7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGY4Qnl0ZXNMZWZ0Kys7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodmFsdWUgJiAweDA4KSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRmNEJ5dGVzQ2hhcnMrKztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbkJlVVRGOCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSAvLyBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyB1dGY4TG93Q2hhcnMrK1xuICAgICAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIElTTy04ODU5LTEgc3R1ZmZcbiAgICAgICAgICAgIGlmIChjYW5CZUlTTzg4NTkxKSB7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlID4gMHg3RiAmJiB2YWx1ZSA8IDB4QTApIHtcbiAgICAgICAgICAgICAgICAgICAgY2FuQmVJU084ODU5MSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSA+IDB4OUYpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlIDwgMHhDMCB8fCB2YWx1ZSA9PT0gMHhENyB8fCB2YWx1ZSA9PT0gMHhGNykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNvSGlnaE90aGVyKys7XG4gICAgICAgICAgICAgICAgICAgIH0gLy8gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlzb0hpZ2hDaGFycysrXG4gICAgICAgICAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgICAgICB9IC8vIGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIGlzb0xvd0NoYXJzKytcbiAgICAgICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBTaGlmdF9KSVMgc3R1ZmZcbiAgICAgICAgICAgIGlmIChjYW5CZVNoaWZ0SklTKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNqaXNCeXRlc0xlZnQgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA8IDB4NDAgfHwgdmFsdWUgPT09IDB4N0YgfHwgdmFsdWUgPiAweEZDKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYW5CZVNoaWZ0SklTID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzamlzQnl0ZXNMZWZ0LS07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT09IDB4ODAgfHwgdmFsdWUgPT09IDB4QTAgfHwgdmFsdWUgPiAweEVGKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhbkJlU2hpZnRKSVMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPiAweEEwICYmIHZhbHVlIDwgMHhFMCkge1xuICAgICAgICAgICAgICAgICAgICBzamlzS2F0YWthbmFDaGFycysrO1xuICAgICAgICAgICAgICAgICAgICBzamlzQ3VyRG91YmxlQnl0ZXNXb3JkTGVuZ3RoID0gMDtcbiAgICAgICAgICAgICAgICAgICAgc2ppc0N1ckthdGFrYW5hV29yZExlbmd0aCsrO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2ppc0N1ckthdGFrYW5hV29yZExlbmd0aCA+IHNqaXNNYXhLYXRha2FuYVdvcmRMZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNqaXNNYXhLYXRha2FuYVdvcmRMZW5ndGggPSBzamlzQ3VyS2F0YWthbmFXb3JkTGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlID4gMHg3Rikge1xuICAgICAgICAgICAgICAgICAgICBzamlzQnl0ZXNMZWZ0Kys7XG4gICAgICAgICAgICAgICAgICAgIC8vIHNqaXNEb3VibGVCeXRlc0NoYXJzKytcbiAgICAgICAgICAgICAgICAgICAgc2ppc0N1ckthdGFrYW5hV29yZExlbmd0aCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHNqaXNDdXJEb3VibGVCeXRlc1dvcmRMZW5ndGgrKztcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNqaXNDdXJEb3VibGVCeXRlc1dvcmRMZW5ndGggPiBzamlzTWF4RG91YmxlQnl0ZXNXb3JkTGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzamlzTWF4RG91YmxlQnl0ZXNXb3JkTGVuZ3RoID0gc2ppc0N1ckRvdWJsZUJ5dGVzV29yZExlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gc2ppc0xvd0NoYXJzKytcbiAgICAgICAgICAgICAgICAgICAgc2ppc0N1ckthdGFrYW5hV29yZExlbmd0aCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHNqaXNDdXJEb3VibGVCeXRlc1dvcmRMZW5ndGggPSAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FuQmVVVEY4ICYmIHV0ZjhCeXRlc0xlZnQgPiAwKSB7XG4gICAgICAgICAgICBjYW5CZVVURjggPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FuQmVTaGlmdEpJUyAmJiBzamlzQnl0ZXNMZWZ0ID4gMCkge1xuICAgICAgICAgICAgY2FuQmVTaGlmdEpJUyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIEVhc3kgLS0gaWYgdGhlcmUgaXMgQk9NIG9yIGF0IGxlYXN0IDEgdmFsaWQgbm90LXNpbmdsZSBieXRlIGNoYXJhY3RlciAoYW5kIG5vIGV2aWRlbmNlIGl0IGNhbid0IGJlIFVURi04KSwgZG9uZVxuICAgICAgICBpZiAoY2FuQmVVVEY4ICYmICh1dGY4Ym9tIHx8IHV0ZjJCeXRlc0NoYXJzICsgdXRmM0J5dGVzQ2hhcnMgKyB1dGY0Qnl0ZXNDaGFycyA+IDApKSB7XG4gICAgICAgICAgICByZXR1cm4gU3RyaW5nVXRpbHMuVVRGODtcbiAgICAgICAgfVxuICAgICAgICAvLyBFYXN5IC0tIGlmIGFzc3VtaW5nIFNoaWZ0X0pJUyBvciBhdCBsZWFzdCAzIHZhbGlkIGNvbnNlY3V0aXZlIG5vdC1hc2NpaSBjaGFyYWN0ZXJzIChhbmQgbm8gZXZpZGVuY2UgaXQgY2FuJ3QgYmUpLCBkb25lXG4gICAgICAgIGlmIChjYW5CZVNoaWZ0SklTICYmIChTdHJpbmdVdGlscy5BU1NVTUVfU0hJRlRfSklTIHx8IHNqaXNNYXhLYXRha2FuYVdvcmRMZW5ndGggPj0gMyB8fCBzamlzTWF4RG91YmxlQnl0ZXNXb3JkTGVuZ3RoID49IDMpKSB7XG4gICAgICAgICAgICByZXR1cm4gU3RyaW5nVXRpbHMuU0hJRlRfSklTO1xuICAgICAgICB9XG4gICAgICAgIC8vIERpc3Rpbmd1aXNoaW5nIFNoaWZ0X0pJUyBhbmQgSVNPLTg4NTktMSBjYW4gYmUgYSBsaXR0bGUgdG91Z2ggZm9yIHNob3J0IHdvcmRzLiBUaGUgY3J1ZGUgaGV1cmlzdGljIGlzOlxuICAgICAgICAvLyAtIElmIHdlIHNhd1xuICAgICAgICAvLyAgIC0gb25seSB0d28gY29uc2VjdXRpdmUga2F0YWthbmEgY2hhcnMgaW4gdGhlIHdob2xlIHRleHQsIG9yXG4gICAgICAgIC8vICAgLSBhdCBsZWFzdCAxMCUgb2YgYnl0ZXMgdGhhdCBjb3VsZCBiZSBcInVwcGVyXCIgbm90LWFscGhhbnVtZXJpYyBMYXRpbjEsXG4gICAgICAgIC8vIC0gdGhlbiB3ZSBjb25jbHVkZSBTaGlmdF9KSVMsIGVsc2UgSVNPLTg4NTktMVxuICAgICAgICBpZiAoY2FuQmVJU084ODU5MSAmJiBjYW5CZVNoaWZ0SklTKSB7XG4gICAgICAgICAgICByZXR1cm4gKHNqaXNNYXhLYXRha2FuYVdvcmRMZW5ndGggPT09IDIgJiYgc2ppc0thdGFrYW5hQ2hhcnMgPT09IDIpIHx8IGlzb0hpZ2hPdGhlciAqIDEwID49IGxlbmd0aFxuICAgICAgICAgICAgICAgID8gU3RyaW5nVXRpbHMuU0hJRlRfSklTIDogU3RyaW5nVXRpbHMuSVNPODg1OTE7XG4gICAgICAgIH1cbiAgICAgICAgLy8gT3RoZXJ3aXNlLCB0cnkgaW4gb3JkZXIgSVNPLTg4NTktMSwgU2hpZnQgSklTLCBVVEYtOCBhbmQgZmFsbCBiYWNrIHRvIGRlZmF1bHQgcGxhdGZvcm0gZW5jb2RpbmdcbiAgICAgICAgaWYgKGNhbkJlSVNPODg1OTEpIHtcbiAgICAgICAgICAgIHJldHVybiBTdHJpbmdVdGlscy5JU084ODU5MTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FuQmVTaGlmdEpJUykge1xuICAgICAgICAgICAgcmV0dXJuIFN0cmluZ1V0aWxzLlNISUZUX0pJUztcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FuQmVVVEY4KSB7XG4gICAgICAgICAgICByZXR1cm4gU3RyaW5nVXRpbHMuVVRGODtcbiAgICAgICAgfVxuICAgICAgICAvLyBPdGhlcndpc2UsIHdlIHRha2UgYSB3aWxkIGd1ZXNzIHdpdGggcGxhdGZvcm0gZW5jb2RpbmdcbiAgICAgICAgcmV0dXJuIFN0cmluZ1V0aWxzLlBMQVRGT1JNX0RFRkFVTFRfRU5DT0RJTkc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBzZWUgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzEzNDM5NzExLzQzNjc2ODNcbiAgICAgKlxuICAgICAqIEBwYXJhbSBhcHBlbmQgVGhlIG5ldyBzdHJpbmcgdG8gYXBwZW5kLlxuICAgICAqIEBwYXJhbSBhcmdzIEFyZ3VtZXRzIHZhbHVlcyB0byBiZSBmb3JtYXRlZC5cbiAgICAgKi9cbiAgICBTdHJpbmdVdGlscy5mb3JtYXQgPSBmdW5jdGlvbiAoYXBwZW5kKSB7XG4gICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMTsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBhcmdzW19pIC0gMV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICB9XG4gICAgICAgIHZhciBpID0gLTE7XG4gICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKGV4cCwgcDAsIHAxLCBwMiwgcDMsIHA0KSB7XG4gICAgICAgICAgICBpZiAoZXhwID09PSAnJSUnKVxuICAgICAgICAgICAgICAgIHJldHVybiAnJSc7XG4gICAgICAgICAgICBpZiAoYXJnc1srK2ldID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGV4cCA9IHAyID8gcGFyc2VJbnQocDIuc3Vic3RyKDEpKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHZhciBiYXNlID0gcDMgPyBwYXJzZUludChwMy5zdWJzdHIoMSkpIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgdmFyIHZhbDtcbiAgICAgICAgICAgIHN3aXRjaCAocDQpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICAgICAgICAgICAgdmFsID0gYXJnc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnYyc6XG4gICAgICAgICAgICAgICAgICAgIHZhbCA9IGFyZ3NbaV1bMF07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2YnOlxuICAgICAgICAgICAgICAgICAgICB2YWwgPSBwYXJzZUZsb2F0KGFyZ3NbaV0pLnRvRml4ZWQoZXhwKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAncCc6XG4gICAgICAgICAgICAgICAgICAgIHZhbCA9IHBhcnNlRmxvYXQoYXJnc1tpXSkudG9QcmVjaXNpb24oZXhwKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnZSc6XG4gICAgICAgICAgICAgICAgICAgIHZhbCA9IHBhcnNlRmxvYXQoYXJnc1tpXSkudG9FeHBvbmVudGlhbChleHApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICd4JzpcbiAgICAgICAgICAgICAgICAgICAgdmFsID0gcGFyc2VJbnQoYXJnc1tpXSkudG9TdHJpbmcoYmFzZSA/IGJhc2UgOiAxNik7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgICAgICB2YWwgPSBwYXJzZUZsb2F0KHBhcnNlSW50KGFyZ3NbaV0sIGJhc2UgPyBiYXNlIDogMTApLnRvUHJlY2lzaW9uKGV4cCkpLnRvRml4ZWQoMCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFsID0gdHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgPyBKU09OLnN0cmluZ2lmeSh2YWwpIDogKCt2YWwpLnRvU3RyaW5nKGJhc2UpO1xuICAgICAgICAgICAgdmFyIHNpemUgPSBwYXJzZUludChwMSk7IC8qIHBhZGRpbmcgc2l6ZSAqL1xuICAgICAgICAgICAgdmFyIGNoID0gcDEgJiYgKHAxWzBdICsgJycpID09PSAnMCcgPyAnMCcgOiAnICc7IC8qIGlzbnVsbD8gKi9cbiAgICAgICAgICAgIHdoaWxlICh2YWwubGVuZ3RoIDwgc2l6ZSlcbiAgICAgICAgICAgICAgICB2YWwgPSBwMCAhPT0gdW5kZWZpbmVkID8gdmFsICsgY2ggOiBjaCArIHZhbDsgLyogaXNtaW51cz8gKi9cbiAgICAgICAgICAgIHJldHVybiB2YWw7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJlZ2V4ID0gLyUoLSk/KDA/WzAtOV0rKT8oWy5dWzAtOV0rKT8oWyNdWzAtOV0rKT8oW3NjZnBleGQlXSkvZztcbiAgICAgICAgcmV0dXJuIGFwcGVuZC5yZXBsYWNlKHJlZ2V4LCBjYWxsYmFjayk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKlxuICAgICAqL1xuICAgIFN0cmluZ1V0aWxzLmdldEJ5dGVzID0gZnVuY3Rpb24gKHN0ciwgZW5jb2RpbmcpIHtcbiAgICAgICAgcmV0dXJuIFN0cmluZ0VuY29kaW5nXzEuZGVmYXVsdC5lbmNvZGUoc3RyLCBlbmNvZGluZyk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBjaGFyY29kZSBhdCB0aGUgc3BlY2lmaWVkIGluZGV4IG9yIGF0IGluZGV4IHplcm8uXG4gICAgICovXG4gICAgU3RyaW5nVXRpbHMuZ2V0Q2hhckNvZGUgPSBmdW5jdGlvbiAoc3RyLCBpbmRleCkge1xuICAgICAgICBpZiAoaW5kZXggPT09IHZvaWQgMCkgeyBpbmRleCA9IDA7IH1cbiAgICAgICAgcmV0dXJuIHN0ci5jaGFyQ29kZUF0KGluZGV4KTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgY2hhciBmb3IgZ2l2ZW4gY2hhcmNvZGVcbiAgICAgKi9cbiAgICBTdHJpbmdVdGlscy5nZXRDaGFyQXQgPSBmdW5jdGlvbiAoY2hhckNvZGUpIHtcbiAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoY2hhckNvZGUpO1xuICAgIH07XG4gICAgU3RyaW5nVXRpbHMuU0hJRlRfSklTID0gQ2hhcmFjdGVyU2V0RUNJXzEuZGVmYXVsdC5TSklTLmdldE5hbWUoKTsgLy8gXCJTSklTXCJcbiAgICBTdHJpbmdVdGlscy5HQjIzMTIgPSAnR0IyMzEyJztcbiAgICBTdHJpbmdVdGlscy5JU084ODU5MSA9IENoYXJhY3RlclNldEVDSV8xLmRlZmF1bHQuSVNPODg1OV8xLmdldE5hbWUoKTsgLy8gXCJJU084ODU5XzFcIlxuICAgIFN0cmluZ1V0aWxzLkVVQ19KUCA9ICdFVUNfSlAnO1xuICAgIFN0cmluZ1V0aWxzLlVURjggPSBDaGFyYWN0ZXJTZXRFQ0lfMS5kZWZhdWx0LlVURjguZ2V0TmFtZSgpOyAvLyBcIlVURjhcIlxuICAgIFN0cmluZ1V0aWxzLlBMQVRGT1JNX0RFRkFVTFRfRU5DT0RJTkcgPSBTdHJpbmdVdGlscy5VVEY4OyAvLyBcIlVURjhcIi8vQ2hhcnNldC5kZWZhdWx0Q2hhcnNldCgpLm5hbWUoKVxuICAgIFN0cmluZ1V0aWxzLkFTU1VNRV9TSElGVF9KSVMgPSBmYWxzZTtcbiAgICByZXR1cm4gU3RyaW5nVXRpbHM7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gU3RyaW5nVXRpbHM7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1TdHJpbmdVdGlscy5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBTdHJpbmdVdGlsc18xID0gcmVxdWlyZShcIi4uL2NvbW1vbi9TdHJpbmdVdGlsc1wiKTtcbnZhciBTdHJpbmdCdWlsZGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFN0cmluZ0J1aWxkZXIodmFsdWUpIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSB2b2lkIDApIHsgdmFsdWUgPSAnJzsgfVxuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICAgIFN0cmluZ0J1aWxkZXIucHJvdG90eXBlLmVuYWJsZURlY29kaW5nID0gZnVuY3Rpb24gKGVuY29kaW5nKSB7XG4gICAgICAgIHRoaXMuZW5jb2RpbmcgPSBlbmNvZGluZztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBTdHJpbmdCdWlsZGVyLnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbiAocykge1xuICAgICAgICBpZiAodHlwZW9mIHMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlICs9IHMudG9TdHJpbmcoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLmVuY29kaW5nKSB7XG4gICAgICAgICAgICAvLyB1c2UgcGFzc2VkIGZvcm1hdCAoZnJvbUNoYXJDb2RlIHdpbGwgcmV0dXJuIFVURjggZW5jb2RpbmcpXG4gICAgICAgICAgICB0aGlzLnZhbHVlICs9IFN0cmluZ1V0aWxzXzEuZGVmYXVsdC5jYXN0QXNOb25VdGY4Q2hhcihzLCB0aGlzLmVuY29kaW5nKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIGNvcnJlY3RseSBjb252ZXJ0cyBmcm9tIFVURi04LCBidXQgbm90IG90aGVyIGVuY29kaW5nc1xuICAgICAgICAgICAgdGhpcy52YWx1ZSArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgU3RyaW5nQnVpbGRlci5wcm90b3R5cGUuYXBwZW5kQ2hhcnMgPSBmdW5jdGlvbiAoc3RyLCBvZmZzZXQsIGxlbikge1xuICAgICAgICBmb3IgKHZhciBpID0gb2Zmc2V0OyBvZmZzZXQgPCBvZmZzZXQgKyBsZW47IGkrKykge1xuICAgICAgICAgICAgdGhpcy5hcHBlbmQoc3RyW2ldKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIFN0cmluZ0J1aWxkZXIucHJvdG90eXBlLmxlbmd0aCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUubGVuZ3RoO1xuICAgIH07XG4gICAgU3RyaW5nQnVpbGRlci5wcm90b3R5cGUuY2hhckF0ID0gZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUuY2hhckF0KG4pO1xuICAgIH07XG4gICAgU3RyaW5nQnVpbGRlci5wcm90b3R5cGUuZGVsZXRlQ2hhckF0ID0gZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUuc3Vic3RyKDAsIG4pICsgdGhpcy52YWx1ZS5zdWJzdHJpbmcobiArIDEpO1xuICAgIH07XG4gICAgU3RyaW5nQnVpbGRlci5wcm90b3R5cGUuc2V0Q2hhckF0ID0gZnVuY3Rpb24gKG4sIGMpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUuc3Vic3RyKDAsIG4pICsgYyArIHRoaXMudmFsdWUuc3Vic3RyKG4gKyAxKTtcbiAgICB9O1xuICAgIFN0cmluZ0J1aWxkZXIucHJvdG90eXBlLnN1YnN0cmluZyA9IGZ1bmN0aW9uIChzdGFydCwgZW5kKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlLnN1YnN0cmluZyhzdGFydCwgZW5kKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBub3RlIGhlbHBlciBtZXRob2QgZm9yIFJTUyBFeHBhbmRlZFxuICAgICAqL1xuICAgIFN0cmluZ0J1aWxkZXIucHJvdG90eXBlLnNldExlbmd0aFRvWmVybyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9ICcnO1xuICAgIH07XG4gICAgU3RyaW5nQnVpbGRlci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH07XG4gICAgU3RyaW5nQnVpbGRlci5wcm90b3R5cGUuaW5zZXJ0ID0gZnVuY3Rpb24gKG4sIGMpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUuc3Vic3RyKDAsIG4pICsgYyArIHRoaXMudmFsdWUuc3Vic3RyKG4gKyBjLmxlbmd0aCk7XG4gICAgfTtcbiAgICByZXR1cm4gU3RyaW5nQnVpbGRlcjtcbn0oKSk7XG5leHBvcnRzLmRlZmF1bHQgPSBTdHJpbmdCdWlsZGVyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U3RyaW5nQnVpbGRlci5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8qXG4gKiBDb3B5cmlnaHQgMjAwNyBaWGluZyBhdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLypuYW1lc3BhY2UgY29tLmdvb2dsZS56eGluZy5jb21tb24geyovXG4vKmltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOyovXG52YXIgQml0QXJyYXlfMSA9IHJlcXVpcmUoXCIuL0JpdEFycmF5XCIpO1xudmFyIFN5c3RlbV8xID0gcmVxdWlyZShcIi4uL3V0aWwvU3lzdGVtXCIpO1xudmFyIEFycmF5c18xID0gcmVxdWlyZShcIi4uL3V0aWwvQXJyYXlzXCIpO1xudmFyIFN0cmluZ0J1aWxkZXJfMSA9IHJlcXVpcmUoXCIuLi91dGlsL1N0cmluZ0J1aWxkZXJcIik7XG52YXIgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEgPSByZXF1aXJlKFwiLi4vSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXCIpO1xuLyoqXG4gKiA8cD5SZXByZXNlbnRzIGEgMkQgbWF0cml4IG9mIGJpdHMuIEluIGZ1bmN0aW9uIGFyZ3VtZW50cyBiZWxvdywgYW5kIHRocm91Z2hvdXQgdGhlIGNvbW1vblxuICogbW9kdWxlLCB4IGlzIHRoZSBjb2x1bW4gcG9zaXRpb24sIGFuZCB5IGlzIHRoZSByb3cgcG9zaXRpb24uIFRoZSBvcmRlcmluZyBpcyBhbHdheXMgeCwgeS5cbiAqIFRoZSBvcmlnaW4gaXMgYXQgdGhlIHRvcC1sZWZ0LjwvcD5cbiAqXG4gKiA8cD5JbnRlcm5hbGx5IHRoZSBiaXRzIGFyZSByZXByZXNlbnRlZCBpbiBhIDEtRCBhcnJheSBvZiAzMi1iaXQgaW50cy4gSG93ZXZlciwgZWFjaCByb3cgYmVnaW5zXG4gKiB3aXRoIGEgbmV3IGludC4gVGhpcyBpcyBkb25lIGludGVudGlvbmFsbHkgc28gdGhhdCB3ZSBjYW4gY29weSBvdXQgYSByb3cgaW50byBhIEJpdEFycmF5IHZlcnlcbiAqIGVmZmljaWVudGx5LjwvcD5cbiAqXG4gKiA8cD5UaGUgb3JkZXJpbmcgb2YgYml0cyBpcyByb3ctbWFqb3IuIFdpdGhpbiBlYWNoIGludCwgdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdHMgYXJlIHVzZWQgZmlyc3QsXG4gKiBtZWFuaW5nIHRoZXkgcmVwcmVzZW50IGxvd2VyIHggdmFsdWVzLiBUaGlzIGlzIGNvbXBhdGlibGUgd2l0aCBCaXRBcnJheSdzIGltcGxlbWVudGF0aW9uLjwvcD5cbiAqXG4gKiBAYXV0aG9yIFNlYW4gT3dlblxuICogQGF1dGhvciBkc3dpdGtpbkBnb29nbGUuY29tIChEYW5pZWwgU3dpdGtpbilcbiAqL1xudmFyIEJpdE1hdHJpeCAvKmltcGxlbWVudHMgQ2xvbmVhYmxlKi8gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBlbXB0eSBzcXVhcmUge0BsaW5rIEJpdE1hdHJpeH0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGltZW5zaW9uIGhlaWdodCBhbmQgd2lkdGhcbiAgICAgKi9cbiAgICAvLyBwdWJsaWMgY29uc3RydWN0b3IoZGltZW5zaW9uOiBudW1iZXIgLyppbnQqLykge1xuICAgIC8vICAgdGhpcyhkaW1lbnNpb24sIGRpbWVuc2lvbilcbiAgICAvLyB9XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBlbXB0eSB7QGxpbmsgQml0TWF0cml4fS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB3aWR0aCBiaXQgbWF0cml4IHdpZHRoXG4gICAgICogQHBhcmFtIGhlaWdodCBiaXQgbWF0cml4IGhlaWdodFxuICAgICAqL1xuICAgIC8vIHB1YmxpYyBjb25zdHJ1Y3Rvcih3aWR0aDogbnVtYmVyIC8qaW50Ki8sIGhlaWdodDogbnVtYmVyIC8qaW50Ki8pIHtcbiAgICAvLyAgIGlmICh3aWR0aCA8IDEgfHwgaGVpZ2h0IDwgMSkge1xuICAgIC8vICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKFwiQm90aCBkaW1lbnNpb25zIG11c3QgYmUgZ3JlYXRlciB0aGFuIDBcIilcbiAgICAvLyAgIH1cbiAgICAvLyAgIHRoaXMud2lkdGggPSB3aWR0aFxuICAgIC8vICAgdGhpcy5oZWlnaHQgPSBoZWlnaHRcbiAgICAvLyAgIHRoaXMucm93U2l6ZSA9ICh3aWR0aCArIDMxKSAvIDMyXG4gICAgLy8gICBiaXRzID0gbmV3IGludFtyb3dTaXplICogaGVpZ2h0XTtcbiAgICAvLyB9XG4gICAgZnVuY3Rpb24gQml0TWF0cml4KHdpZHRoIC8qaW50Ki8sIGhlaWdodCAvKmludCovLCByb3dTaXplIC8qaW50Ki8sIGJpdHMpIHtcbiAgICAgICAgdGhpcy53aWR0aCA9IHdpZHRoO1xuICAgICAgICB0aGlzLmhlaWdodCA9IGhlaWdodDtcbiAgICAgICAgdGhpcy5yb3dTaXplID0gcm93U2l6ZTtcbiAgICAgICAgdGhpcy5iaXRzID0gYml0cztcbiAgICAgICAgaWYgKHVuZGVmaW5lZCA9PT0gaGVpZ2h0IHx8IG51bGwgPT09IGhlaWdodCkge1xuICAgICAgICAgICAgaGVpZ2h0ID0gd2lkdGg7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgICAgIGlmICh3aWR0aCA8IDEgfHwgaGVpZ2h0IDwgMSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoJ0JvdGggZGltZW5zaW9ucyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHVuZGVmaW5lZCA9PT0gcm93U2l6ZSB8fCBudWxsID09PSByb3dTaXplKSB7XG4gICAgICAgICAgICByb3dTaXplID0gTWF0aC5mbG9vcigod2lkdGggKyAzMSkgLyAzMik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yb3dTaXplID0gcm93U2l6ZTtcbiAgICAgICAgaWYgKHVuZGVmaW5lZCA9PT0gYml0cyB8fCBudWxsID09PSBiaXRzKSB7XG4gICAgICAgICAgICB0aGlzLmJpdHMgPSBuZXcgSW50MzJBcnJheSh0aGlzLnJvd1NpemUgKiB0aGlzLmhlaWdodCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogSW50ZXJwcmV0cyBhIDJEIGFycmF5IG9mIGJvb2xlYW5zIGFzIGEge0BsaW5rIEJpdE1hdHJpeH0sIHdoZXJlIFwidHJ1ZVwiIG1lYW5zIGFuIFwib25cIiBiaXQuXG4gICAgICpcbiAgICAgKiBAZnVuY3Rpb24gcGFyc2VcbiAgICAgKiBAcGFyYW0gaW1hZ2UgYml0cyBvZiB0aGUgaW1hZ2UsIGFzIGEgcm93LW1ham9yIDJEIGFycmF5LiBFbGVtZW50cyBhcmUgYXJyYXlzIHJlcHJlc2VudGluZyByb3dzXG4gICAgICogQHJldHVybiB7QGxpbmsgQml0TWF0cml4fSByZXByZXNlbnRhdGlvbiBvZiBpbWFnZVxuICAgICAqL1xuICAgIEJpdE1hdHJpeC5wYXJzZUZyb21Cb29sZWFuQXJyYXkgPSBmdW5jdGlvbiAoaW1hZ2UpIHtcbiAgICAgICAgdmFyIGhlaWdodCA9IGltYWdlLmxlbmd0aDtcbiAgICAgICAgdmFyIHdpZHRoID0gaW1hZ2VbMF0ubGVuZ3RoO1xuICAgICAgICB2YXIgYml0cyA9IG5ldyBCaXRNYXRyaXgod2lkdGgsIGhlaWdodCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaGVpZ2h0OyBpKyspIHtcbiAgICAgICAgICAgIHZhciBpbWFnZUkgPSBpbWFnZVtpXTtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgd2lkdGg7IGorKykge1xuICAgICAgICAgICAgICAgIGlmIChpbWFnZUlbal0pIHtcbiAgICAgICAgICAgICAgICAgICAgYml0cy5zZXQoaiwgaSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBiaXRzO1xuICAgIH07XG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAZnVuY3Rpb24gcGFyc2VcbiAgICAgKiBAcGFyYW0gc3RyaW5nUmVwcmVzZW50YXRpb25cbiAgICAgKiBAcGFyYW0gc2V0U3RyaW5nXG4gICAgICogQHBhcmFtIHVuc2V0U3RyaW5nXG4gICAgICovXG4gICAgQml0TWF0cml4LnBhcnNlRnJvbVN0cmluZyA9IGZ1bmN0aW9uIChzdHJpbmdSZXByZXNlbnRhdGlvbiwgc2V0U3RyaW5nLCB1bnNldFN0cmluZykge1xuICAgICAgICBpZiAoc3RyaW5nUmVwcmVzZW50YXRpb24gPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCdzdHJpbmdSZXByZXNlbnRhdGlvbiBjYW5ub3QgYmUgbnVsbCcpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBiaXRzID0gbmV3IEFycmF5KHN0cmluZ1JlcHJlc2VudGF0aW9uLmxlbmd0aCk7XG4gICAgICAgIHZhciBiaXRzUG9zID0gMDtcbiAgICAgICAgdmFyIHJvd1N0YXJ0UG9zID0gMDtcbiAgICAgICAgdmFyIHJvd0xlbmd0aCA9IC0xO1xuICAgICAgICB2YXIgblJvd3MgPSAwO1xuICAgICAgICB2YXIgcG9zID0gMDtcbiAgICAgICAgd2hpbGUgKHBvcyA8IHN0cmluZ1JlcHJlc2VudGF0aW9uLmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKHN0cmluZ1JlcHJlc2VudGF0aW9uLmNoYXJBdChwb3MpID09PSAnXFxuJyB8fFxuICAgICAgICAgICAgICAgIHN0cmluZ1JlcHJlc2VudGF0aW9uLmNoYXJBdChwb3MpID09PSAnXFxyJykge1xuICAgICAgICAgICAgICAgIGlmIChiaXRzUG9zID4gcm93U3RhcnRQb3MpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJvd0xlbmd0aCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd0xlbmd0aCA9IGJpdHNQb3MgLSByb3dTdGFydFBvcztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChiaXRzUG9zIC0gcm93U3RhcnRQb3MgIT09IHJvd0xlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoJ3JvdyBsZW5ndGhzIGRvIG5vdCBtYXRjaCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJvd1N0YXJ0UG9zID0gYml0c1BvcztcbiAgICAgICAgICAgICAgICAgICAgblJvd3MrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcG9zKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChzdHJpbmdSZXByZXNlbnRhdGlvbi5zdWJzdHJpbmcocG9zLCBwb3MgKyBzZXRTdHJpbmcubGVuZ3RoKSA9PT0gc2V0U3RyaW5nKSB7XG4gICAgICAgICAgICAgICAgcG9zICs9IHNldFN0cmluZy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgYml0c1tiaXRzUG9zXSA9IHRydWU7XG4gICAgICAgICAgICAgICAgYml0c1BvcysrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoc3RyaW5nUmVwcmVzZW50YXRpb24uc3Vic3RyaW5nKHBvcywgcG9zICsgdW5zZXRTdHJpbmcubGVuZ3RoKSA9PT0gdW5zZXRTdHJpbmcpIHtcbiAgICAgICAgICAgICAgICBwb3MgKz0gdW5zZXRTdHJpbmcubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGJpdHNbYml0c1Bvc10gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBiaXRzUG9zKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgnaWxsZWdhbCBjaGFyYWN0ZXIgZW5jb3VudGVyZWQ6ICcgKyBzdHJpbmdSZXByZXNlbnRhdGlvbi5zdWJzdHJpbmcocG9zKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gbm8gRU9MIGF0IGVuZD9cbiAgICAgICAgaWYgKGJpdHNQb3MgPiByb3dTdGFydFBvcykge1xuICAgICAgICAgICAgaWYgKHJvd0xlbmd0aCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICByb3dMZW5ndGggPSBiaXRzUG9zIC0gcm93U3RhcnRQb3M7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChiaXRzUG9zIC0gcm93U3RhcnRQb3MgIT09IHJvd0xlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCdyb3cgbGVuZ3RocyBkbyBub3QgbWF0Y2gnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5Sb3dzKys7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG1hdHJpeCA9IG5ldyBCaXRNYXRyaXgocm93TGVuZ3RoLCBuUm93cyk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYml0c1BvczsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoYml0c1tpXSkge1xuICAgICAgICAgICAgICAgIG1hdHJpeC5zZXQoTWF0aC5mbG9vcihpICUgcm93TGVuZ3RoKSwgTWF0aC5mbG9vcihpIC8gcm93TGVuZ3RoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1hdHJpeDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIDxwPkdldHMgdGhlIHJlcXVlc3RlZCBiaXQsIHdoZXJlIHRydWUgbWVhbnMgYmxhY2suPC9wPlxuICAgICAqXG4gICAgICogQHBhcmFtIHggVGhlIGhvcml6b250YWwgY29tcG9uZW50IChpLmUuIHdoaWNoIGNvbHVtbilcbiAgICAgKiBAcGFyYW0geSBUaGUgdmVydGljYWwgY29tcG9uZW50IChpLmUuIHdoaWNoIHJvdylcbiAgICAgKiBAcmV0dXJuIHZhbHVlIG9mIGdpdmVuIGJpdCBpbiBtYXRyaXhcbiAgICAgKi9cbiAgICBCaXRNYXRyaXgucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uICh4IC8qaW50Ki8sIHkgLyppbnQqLykge1xuICAgICAgICB2YXIgb2Zmc2V0ID0geSAqIHRoaXMucm93U2l6ZSArIE1hdGguZmxvb3IoeCAvIDMyKTtcbiAgICAgICAgcmV0dXJuICgodGhpcy5iaXRzW29mZnNldF0gPj4+ICh4ICYgMHgxZikpICYgMSkgIT09IDA7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiA8cD5TZXRzIHRoZSBnaXZlbiBiaXQgdG8gdHJ1ZS48L3A+XG4gICAgICpcbiAgICAgKiBAcGFyYW0geCBUaGUgaG9yaXpvbnRhbCBjb21wb25lbnQgKGkuZS4gd2hpY2ggY29sdW1uKVxuICAgICAqIEBwYXJhbSB5IFRoZSB2ZXJ0aWNhbCBjb21wb25lbnQgKGkuZS4gd2hpY2ggcm93KVxuICAgICAqL1xuICAgIEJpdE1hdHJpeC5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKHggLyppbnQqLywgeSAvKmludCovKSB7XG4gICAgICAgIHZhciBvZmZzZXQgPSB5ICogdGhpcy5yb3dTaXplICsgTWF0aC5mbG9vcih4IC8gMzIpO1xuICAgICAgICB0aGlzLmJpdHNbb2Zmc2V0XSB8PSAoMSA8PCAoeCAmIDB4MWYpKSAmIDB4RkZGRkZGRkY7XG4gICAgfTtcbiAgICBCaXRNYXRyaXgucHJvdG90eXBlLnVuc2V0ID0gZnVuY3Rpb24gKHggLyppbnQqLywgeSAvKmludCovKSB7XG4gICAgICAgIHZhciBvZmZzZXQgPSB5ICogdGhpcy5yb3dTaXplICsgTWF0aC5mbG9vcih4IC8gMzIpO1xuICAgICAgICB0aGlzLmJpdHNbb2Zmc2V0XSAmPSB+KCgxIDw8ICh4ICYgMHgxZikpICYgMHhGRkZGRkZGRik7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiA8cD5GbGlwcyB0aGUgZ2l2ZW4gYml0LjwvcD5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB4IFRoZSBob3Jpem9udGFsIGNvbXBvbmVudCAoaS5lLiB3aGljaCBjb2x1bW4pXG4gICAgICogQHBhcmFtIHkgVGhlIHZlcnRpY2FsIGNvbXBvbmVudCAoaS5lLiB3aGljaCByb3cpXG4gICAgICovXG4gICAgQml0TWF0cml4LnByb3RvdHlwZS5mbGlwID0gZnVuY3Rpb24gKHggLyppbnQqLywgeSAvKmludCovKSB7XG4gICAgICAgIHZhciBvZmZzZXQgPSB5ICogdGhpcy5yb3dTaXplICsgTWF0aC5mbG9vcih4IC8gMzIpO1xuICAgICAgICB0aGlzLmJpdHNbb2Zmc2V0XSBePSAoKDEgPDwgKHggJiAweDFmKSkgJiAweEZGRkZGRkZGKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEV4Y2x1c2l2ZS1vciAoWE9SKTogRmxpcCB0aGUgYml0IGluIHRoaXMge0Bjb2RlIEJpdE1hdHJpeH0gaWYgdGhlIGNvcnJlc3BvbmRpbmdcbiAgICAgKiBtYXNrIGJpdCBpcyBzZXQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbWFzayBYT1IgbWFza1xuICAgICAqL1xuICAgIEJpdE1hdHJpeC5wcm90b3R5cGUueG9yID0gZnVuY3Rpb24gKG1hc2spIHtcbiAgICAgICAgaWYgKHRoaXMud2lkdGggIT09IG1hc2suZ2V0V2lkdGgoKSB8fCB0aGlzLmhlaWdodCAhPT0gbWFzay5nZXRIZWlnaHQoKVxuICAgICAgICAgICAgfHwgdGhpcy5yb3dTaXplICE9PSBtYXNrLmdldFJvd1NpemUoKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoJ2lucHV0IG1hdHJpeCBkaW1lbnNpb25zIGRvIG5vdCBtYXRjaCcpO1xuICAgICAgICB9XG4gICAgICAgIHZhciByb3dBcnJheSA9IG5ldyBCaXRBcnJheV8xLmRlZmF1bHQoTWF0aC5mbG9vcih0aGlzLndpZHRoIC8gMzIpICsgMSk7XG4gICAgICAgIHZhciByb3dTaXplID0gdGhpcy5yb3dTaXplO1xuICAgICAgICB2YXIgYml0cyA9IHRoaXMuYml0cztcbiAgICAgICAgZm9yICh2YXIgeSA9IDAsIGhlaWdodCA9IHRoaXMuaGVpZ2h0OyB5IDwgaGVpZ2h0OyB5KyspIHtcbiAgICAgICAgICAgIHZhciBvZmZzZXQgPSB5ICogcm93U2l6ZTtcbiAgICAgICAgICAgIHZhciByb3cgPSBtYXNrLmdldFJvdyh5LCByb3dBcnJheSkuZ2V0Qml0QXJyYXkoKTtcbiAgICAgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgcm93U2l6ZTsgeCsrKSB7XG4gICAgICAgICAgICAgICAgYml0c1tvZmZzZXQgKyB4XSBePSByb3dbeF07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIENsZWFycyBhbGwgYml0cyAoc2V0cyB0byBmYWxzZSkuXG4gICAgICovXG4gICAgQml0TWF0cml4LnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGJpdHMgPSB0aGlzLmJpdHM7XG4gICAgICAgIHZhciBtYXggPSBiaXRzLmxlbmd0aDtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXg7IGkrKykge1xuICAgICAgICAgICAgYml0c1tpXSA9IDA7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIDxwPlNldHMgYSBzcXVhcmUgcmVnaW9uIG9mIHRoZSBiaXQgbWF0cml4IHRvIHRydWUuPC9wPlxuICAgICAqXG4gICAgICogQHBhcmFtIGxlZnQgVGhlIGhvcml6b250YWwgcG9zaXRpb24gdG8gYmVnaW4gYXQgKGluY2x1c2l2ZSlcbiAgICAgKiBAcGFyYW0gdG9wIFRoZSB2ZXJ0aWNhbCBwb3NpdGlvbiB0byBiZWdpbiBhdCAoaW5jbHVzaXZlKVxuICAgICAqIEBwYXJhbSB3aWR0aCBUaGUgd2lkdGggb2YgdGhlIHJlZ2lvblxuICAgICAqIEBwYXJhbSBoZWlnaHQgVGhlIGhlaWdodCBvZiB0aGUgcmVnaW9uXG4gICAgICovXG4gICAgQml0TWF0cml4LnByb3RvdHlwZS5zZXRSZWdpb24gPSBmdW5jdGlvbiAobGVmdCAvKmludCovLCB0b3AgLyppbnQqLywgd2lkdGggLyppbnQqLywgaGVpZ2h0IC8qaW50Ki8pIHtcbiAgICAgICAgaWYgKHRvcCA8IDAgfHwgbGVmdCA8IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCdMZWZ0IGFuZCB0b3AgbXVzdCBiZSBub25uZWdhdGl2ZScpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChoZWlnaHQgPCAxIHx8IHdpZHRoIDwgMSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoJ0hlaWdodCBhbmQgd2lkdGggbXVzdCBiZSBhdCBsZWFzdCAxJyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJpZ2h0ID0gbGVmdCArIHdpZHRoO1xuICAgICAgICB2YXIgYm90dG9tID0gdG9wICsgaGVpZ2h0O1xuICAgICAgICBpZiAoYm90dG9tID4gdGhpcy5oZWlnaHQgfHwgcmlnaHQgPiB0aGlzLndpZHRoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgnVGhlIHJlZ2lvbiBtdXN0IGZpdCBpbnNpZGUgdGhlIG1hdHJpeCcpO1xuICAgICAgICB9XG4gICAgICAgIHZhciByb3dTaXplID0gdGhpcy5yb3dTaXplO1xuICAgICAgICB2YXIgYml0cyA9IHRoaXMuYml0cztcbiAgICAgICAgZm9yICh2YXIgeSA9IHRvcDsgeSA8IGJvdHRvbTsgeSsrKSB7XG4gICAgICAgICAgICB2YXIgb2Zmc2V0ID0geSAqIHJvd1NpemU7XG4gICAgICAgICAgICBmb3IgKHZhciB4ID0gbGVmdDsgeCA8IHJpZ2h0OyB4KyspIHtcbiAgICAgICAgICAgICAgICBiaXRzW29mZnNldCArIE1hdGguZmxvb3IoeCAvIDMyKV0gfD0gKCgxIDw8ICh4ICYgMHgxZikpICYgMHhGRkZGRkZGRik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEEgZmFzdCBtZXRob2QgdG8gcmV0cmlldmUgb25lIHJvdyBvZiBkYXRhIGZyb20gdGhlIG1hdHJpeCBhcyBhIEJpdEFycmF5LlxuICAgICAqXG4gICAgICogQHBhcmFtIHkgVGhlIHJvdyB0byByZXRyaWV2ZVxuICAgICAqIEBwYXJhbSByb3cgQW4gb3B0aW9uYWwgY2FsbGVyLWFsbG9jYXRlZCBCaXRBcnJheSwgd2lsbCBiZSBhbGxvY2F0ZWQgaWYgbnVsbCBvciB0b28gc21hbGxcbiAgICAgKiBAcmV0dXJuIFRoZSByZXN1bHRpbmcgQml0QXJyYXkgLSB0aGlzIHJlZmVyZW5jZSBzaG91bGQgYWx3YXlzIGJlIHVzZWQgZXZlbiB3aGVuIHBhc3NpbmdcbiAgICAgKiAgICAgICAgIHlvdXIgb3duIHJvd1xuICAgICAqL1xuICAgIEJpdE1hdHJpeC5wcm90b3R5cGUuZ2V0Um93ID0gZnVuY3Rpb24gKHkgLyppbnQqLywgcm93KSB7XG4gICAgICAgIGlmIChyb3cgPT09IG51bGwgfHwgcm93ID09PSB1bmRlZmluZWQgfHwgcm93LmdldFNpemUoKSA8IHRoaXMud2lkdGgpIHtcbiAgICAgICAgICAgIHJvdyA9IG5ldyBCaXRBcnJheV8xLmRlZmF1bHQodGhpcy53aWR0aCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByb3cuY2xlYXIoKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcm93U2l6ZSA9IHRoaXMucm93U2l6ZTtcbiAgICAgICAgdmFyIGJpdHMgPSB0aGlzLmJpdHM7XG4gICAgICAgIHZhciBvZmZzZXQgPSB5ICogcm93U2l6ZTtcbiAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCByb3dTaXplOyB4KyspIHtcbiAgICAgICAgICAgIHJvdy5zZXRCdWxrKHggKiAzMiwgYml0c1tvZmZzZXQgKyB4XSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJvdztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB5IHJvdyB0byBzZXRcbiAgICAgKiBAcGFyYW0gcm93IHtAbGluayBCaXRBcnJheX0gdG8gY29weSBmcm9tXG4gICAgICovXG4gICAgQml0TWF0cml4LnByb3RvdHlwZS5zZXRSb3cgPSBmdW5jdGlvbiAoeSAvKmludCovLCByb3cpIHtcbiAgICAgICAgU3lzdGVtXzEuZGVmYXVsdC5hcnJheWNvcHkocm93LmdldEJpdEFycmF5KCksIDAsIHRoaXMuYml0cywgeSAqIHRoaXMucm93U2l6ZSwgdGhpcy5yb3dTaXplKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIE1vZGlmaWVzIHRoaXMge0Bjb2RlIEJpdE1hdHJpeH0gdG8gcmVwcmVzZW50IHRoZSBzYW1lIGJ1dCByb3RhdGVkIDE4MCBkZWdyZWVzXG4gICAgICovXG4gICAgQml0TWF0cml4LnByb3RvdHlwZS5yb3RhdGUxODAgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB3aWR0aCA9IHRoaXMuZ2V0V2lkdGgoKTtcbiAgICAgICAgdmFyIGhlaWdodCA9IHRoaXMuZ2V0SGVpZ2h0KCk7XG4gICAgICAgIHZhciB0b3BSb3cgPSBuZXcgQml0QXJyYXlfMS5kZWZhdWx0KHdpZHRoKTtcbiAgICAgICAgdmFyIGJvdHRvbVJvdyA9IG5ldyBCaXRBcnJheV8xLmRlZmF1bHQod2lkdGgpO1xuICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoXzEgPSBNYXRoLmZsb29yKChoZWlnaHQgKyAxKSAvIDIpOyBpIDwgbGVuZ3RoXzE7IGkrKykge1xuICAgICAgICAgICAgdG9wUm93ID0gdGhpcy5nZXRSb3coaSwgdG9wUm93KTtcbiAgICAgICAgICAgIGJvdHRvbVJvdyA9IHRoaXMuZ2V0Um93KGhlaWdodCAtIDEgLSBpLCBib3R0b21Sb3cpO1xuICAgICAgICAgICAgdG9wUm93LnJldmVyc2UoKTtcbiAgICAgICAgICAgIGJvdHRvbVJvdy5yZXZlcnNlKCk7XG4gICAgICAgICAgICB0aGlzLnNldFJvdyhpLCBib3R0b21Sb3cpO1xuICAgICAgICAgICAgdGhpcy5zZXRSb3coaGVpZ2h0IC0gMSAtIGksIHRvcFJvdyk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgdXNlZnVsIGluIGRldGVjdGluZyB0aGUgZW5jbG9zaW5nIHJlY3RhbmdsZSBvZiBhICdwdXJlJyBiYXJjb2RlLlxuICAgICAqXG4gICAgICogQHJldHVybiB7QGNvZGUgbGVmdCx0b3Asd2lkdGgsaGVpZ2h0fSBlbmNsb3NpbmcgcmVjdGFuZ2xlIG9mIGFsbCAxIGJpdHMsIG9yIG51bGwgaWYgaXQgaXMgYWxsIHdoaXRlXG4gICAgICovXG4gICAgQml0TWF0cml4LnByb3RvdHlwZS5nZXRFbmNsb3NpbmdSZWN0YW5nbGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB3aWR0aCA9IHRoaXMud2lkdGg7XG4gICAgICAgIHZhciBoZWlnaHQgPSB0aGlzLmhlaWdodDtcbiAgICAgICAgdmFyIHJvd1NpemUgPSB0aGlzLnJvd1NpemU7XG4gICAgICAgIHZhciBiaXRzID0gdGhpcy5iaXRzO1xuICAgICAgICB2YXIgbGVmdCA9IHdpZHRoO1xuICAgICAgICB2YXIgdG9wID0gaGVpZ2h0O1xuICAgICAgICB2YXIgcmlnaHQgPSAtMTtcbiAgICAgICAgdmFyIGJvdHRvbSA9IC0xO1xuICAgICAgICBmb3IgKHZhciB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciB4MzIgPSAwOyB4MzIgPCByb3dTaXplOyB4MzIrKykge1xuICAgICAgICAgICAgICAgIHZhciB0aGVCaXRzID0gYml0c1t5ICogcm93U2l6ZSArIHgzMl07XG4gICAgICAgICAgICAgICAgaWYgKHRoZUJpdHMgIT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHkgPCB0b3ApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvcCA9IHk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHkgPiBib3R0b20pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvdHRvbSA9IHk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHgzMiAqIDMyIDwgbGVmdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGJpdCA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKCh0aGVCaXRzIDw8ICgzMSAtIGJpdCkpICYgMHhGRkZGRkZGRikgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaXQrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoeDMyICogMzIgKyBiaXQpIDwgbGVmdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQgPSB4MzIgKiAzMiArIGJpdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoeDMyICogMzIgKyAzMSA+IHJpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgYml0ID0gMzE7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKHRoZUJpdHMgPj4+IGJpdCkgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaXQtLTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoeDMyICogMzIgKyBiaXQpID4gcmlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodCA9IHgzMiAqIDMyICsgYml0O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChyaWdodCA8IGxlZnQgfHwgYm90dG9tIDwgdG9wKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gSW50MzJBcnJheS5mcm9tKFtsZWZ0LCB0b3AsIHJpZ2h0IC0gbGVmdCArIDEsIGJvdHRvbSAtIHRvcCArIDFdKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgdXNlZnVsIGluIGRldGVjdGluZyBhIGNvcm5lciBvZiBhICdwdXJlJyBiYXJjb2RlLlxuICAgICAqXG4gICAgICogQHJldHVybiB7QGNvZGUgeCx5fSBjb29yZGluYXRlIG9mIHRvcC1sZWZ0LW1vc3QgMSBiaXQsIG9yIG51bGwgaWYgaXQgaXMgYWxsIHdoaXRlXG4gICAgICovXG4gICAgQml0TWF0cml4LnByb3RvdHlwZS5nZXRUb3BMZWZ0T25CaXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciByb3dTaXplID0gdGhpcy5yb3dTaXplO1xuICAgICAgICB2YXIgYml0cyA9IHRoaXMuYml0cztcbiAgICAgICAgdmFyIGJpdHNPZmZzZXQgPSAwO1xuICAgICAgICB3aGlsZSAoYml0c09mZnNldCA8IGJpdHMubGVuZ3RoICYmIGJpdHNbYml0c09mZnNldF0gPT09IDApIHtcbiAgICAgICAgICAgIGJpdHNPZmZzZXQrKztcbiAgICAgICAgfVxuICAgICAgICBpZiAoYml0c09mZnNldCA9PT0gYml0cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHZhciB5ID0gYml0c09mZnNldCAvIHJvd1NpemU7XG4gICAgICAgIHZhciB4ID0gKGJpdHNPZmZzZXQgJSByb3dTaXplKSAqIDMyO1xuICAgICAgICB2YXIgdGhlQml0cyA9IGJpdHNbYml0c09mZnNldF07XG4gICAgICAgIHZhciBiaXQgPSAwO1xuICAgICAgICB3aGlsZSAoKCh0aGVCaXRzIDw8ICgzMSAtIGJpdCkpICYgMHhGRkZGRkZGRikgPT09IDApIHtcbiAgICAgICAgICAgIGJpdCsrO1xuICAgICAgICB9XG4gICAgICAgIHggKz0gYml0O1xuICAgICAgICByZXR1cm4gSW50MzJBcnJheS5mcm9tKFt4LCB5XSk7XG4gICAgfTtcbiAgICBCaXRNYXRyaXgucHJvdG90eXBlLmdldEJvdHRvbVJpZ2h0T25CaXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciByb3dTaXplID0gdGhpcy5yb3dTaXplO1xuICAgICAgICB2YXIgYml0cyA9IHRoaXMuYml0cztcbiAgICAgICAgdmFyIGJpdHNPZmZzZXQgPSBiaXRzLmxlbmd0aCAtIDE7XG4gICAgICAgIHdoaWxlIChiaXRzT2Zmc2V0ID49IDAgJiYgYml0c1tiaXRzT2Zmc2V0XSA9PT0gMCkge1xuICAgICAgICAgICAgYml0c09mZnNldC0tO1xuICAgICAgICB9XG4gICAgICAgIGlmIChiaXRzT2Zmc2V0IDwgMCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHkgPSBNYXRoLmZsb29yKGJpdHNPZmZzZXQgLyByb3dTaXplKTtcbiAgICAgICAgdmFyIHggPSBNYXRoLmZsb29yKGJpdHNPZmZzZXQgJSByb3dTaXplKSAqIDMyO1xuICAgICAgICB2YXIgdGhlQml0cyA9IGJpdHNbYml0c09mZnNldF07XG4gICAgICAgIHZhciBiaXQgPSAzMTtcbiAgICAgICAgd2hpbGUgKCh0aGVCaXRzID4+PiBiaXQpID09PSAwKSB7XG4gICAgICAgICAgICBiaXQtLTtcbiAgICAgICAgfVxuICAgICAgICB4ICs9IGJpdDtcbiAgICAgICAgcmV0dXJuIEludDMyQXJyYXkuZnJvbShbeCwgeV0pO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHJldHVybiBUaGUgd2lkdGggb2YgdGhlIG1hdHJpeFxuICAgICAqL1xuICAgIEJpdE1hdHJpeC5wcm90b3R5cGUuZ2V0V2lkdGggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLndpZHRoO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHJldHVybiBUaGUgaGVpZ2h0IG9mIHRoZSBtYXRyaXhcbiAgICAgKi9cbiAgICBCaXRNYXRyaXgucHJvdG90eXBlLmdldEhlaWdodCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGVpZ2h0O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHJldHVybiBUaGUgcm93IHNpemUgb2YgdGhlIG1hdHJpeFxuICAgICAqL1xuICAgIEJpdE1hdHJpeC5wcm90b3R5cGUuZ2V0Um93U2l6ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucm93U2l6ZTtcbiAgICB9O1xuICAgIC8qQE92ZXJyaWRlKi9cbiAgICBCaXRNYXRyaXgucHJvdG90eXBlLmVxdWFscyA9IGZ1bmN0aW9uIChvKSB7XG4gICAgICAgIGlmICghKG8gaW5zdGFuY2VvZiBCaXRNYXRyaXgpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG90aGVyID0gbztcbiAgICAgICAgcmV0dXJuIHRoaXMud2lkdGggPT09IG90aGVyLndpZHRoICYmIHRoaXMuaGVpZ2h0ID09PSBvdGhlci5oZWlnaHQgJiYgdGhpcy5yb3dTaXplID09PSBvdGhlci5yb3dTaXplICYmXG4gICAgICAgICAgICBBcnJheXNfMS5kZWZhdWx0LmVxdWFscyh0aGlzLmJpdHMsIG90aGVyLmJpdHMpO1xuICAgIH07XG4gICAgLypAT3ZlcnJpZGUqL1xuICAgIEJpdE1hdHJpeC5wcm90b3R5cGUuaGFzaENvZGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBoYXNoID0gdGhpcy53aWR0aDtcbiAgICAgICAgaGFzaCA9IDMxICogaGFzaCArIHRoaXMud2lkdGg7XG4gICAgICAgIGhhc2ggPSAzMSAqIGhhc2ggKyB0aGlzLmhlaWdodDtcbiAgICAgICAgaGFzaCA9IDMxICogaGFzaCArIHRoaXMucm93U2l6ZTtcbiAgICAgICAgaGFzaCA9IDMxICogaGFzaCArIEFycmF5c18xLmRlZmF1bHQuaGFzaENvZGUodGhpcy5iaXRzKTtcbiAgICAgICAgcmV0dXJuIGhhc2g7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHN0cmluZyByZXByZXNlbnRhdGlvbiB1c2luZyBcIlhcIiBmb3Igc2V0IGFuZCBcIiBcIiBmb3IgdW5zZXQgYml0c1xuICAgICAqL1xuICAgIC8qQE92ZXJyaWRlKi9cbiAgICAvLyBwdWJsaWMgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICAvLyAgIHJldHVybiB0b1N0cmluZyhcIjogXCJYLCBcIiAgXCIpXG4gICAgLy8gfVxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBzZXRTdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBzZXQgYml0XG4gICAgICogQHBhcmFtIHVuc2V0U3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIHVuc2V0IGJpdFxuICAgICAqIEByZXR1cm4gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGVudGlyZSBtYXRyaXggdXRpbGl6aW5nIGdpdmVuIHN0cmluZ3NcbiAgICAgKi9cbiAgICAvLyBwdWJsaWMgdG9TdHJpbmcoc2V0U3RyaW5nOiBzdHJpbmcgPSBcIlggXCIsIHVuc2V0U3RyaW5nOiBzdHJpbmcgPSBcIiAgXCIpOiBzdHJpbmcge1xuICAgIC8vICAgcmV0dXJuIHRoaXMuYnVpbGRUb1N0cmluZyhzZXRTdHJpbmcsIHVuc2V0U3RyaW5nLCBcIlxcblwiKVxuICAgIC8vIH1cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gc2V0U3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgc2V0IGJpdFxuICAgICAqIEBwYXJhbSB1bnNldFN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiB1bnNldCBiaXRcbiAgICAgKiBAcGFyYW0gbGluZVNlcGFyYXRvciBuZXdsaW5lIGNoYXJhY3RlciBpbiBzdHJpbmcgcmVwcmVzZW50YXRpb25cbiAgICAgKiBAcmV0dXJuIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBlbnRpcmUgbWF0cml4IHV0aWxpemluZyBnaXZlbiBzdHJpbmdzIGFuZCBsaW5lIHNlcGFyYXRvclxuICAgICAqIEBkZXByZWNhdGVkIGNhbGwge0BsaW5rICN0b1N0cmluZyhTdHJpbmcsU3RyaW5nKX0gb25seSwgd2hpY2ggdXNlcyBcXG4gbGluZSBzZXBhcmF0b3IgYWx3YXlzXG4gICAgICovXG4gICAgLy8gQERlcHJlY2F0ZWRcbiAgICBCaXRNYXRyaXgucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKHNldFN0cmluZywgdW5zZXRTdHJpbmcsIGxpbmVTZXBhcmF0b3IpIHtcbiAgICAgICAgaWYgKHNldFN0cmluZyA9PT0gdm9pZCAwKSB7IHNldFN0cmluZyA9ICdYICc7IH1cbiAgICAgICAgaWYgKHVuc2V0U3RyaW5nID09PSB2b2lkIDApIHsgdW5zZXRTdHJpbmcgPSAnICAnOyB9XG4gICAgICAgIGlmIChsaW5lU2VwYXJhdG9yID09PSB2b2lkIDApIHsgbGluZVNlcGFyYXRvciA9ICdcXG4nOyB9XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkVG9TdHJpbmcoc2V0U3RyaW5nLCB1bnNldFN0cmluZywgbGluZVNlcGFyYXRvcik7XG4gICAgfTtcbiAgICBCaXRNYXRyaXgucHJvdG90eXBlLmJ1aWxkVG9TdHJpbmcgPSBmdW5jdGlvbiAoc2V0U3RyaW5nLCB1bnNldFN0cmluZywgbGluZVNlcGFyYXRvcikge1xuICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1aWxkZXJfMS5kZWZhdWx0KCk7XG4gICAgICAgIC8vIHJlc3VsdC5hcHBlbmQobGluZVNlcGFyYXRvcik7XG4gICAgICAgIGZvciAodmFyIHkgPSAwLCBoZWlnaHQgPSB0aGlzLmhlaWdodDsgeSA8IGhlaWdodDsgeSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciB4ID0gMCwgd2lkdGggPSB0aGlzLndpZHRoOyB4IDwgd2lkdGg7IHgrKykge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodGhpcy5nZXQoeCwgeSkgPyBzZXRTdHJpbmcgOiB1bnNldFN0cmluZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQuYXBwZW5kKGxpbmVTZXBhcmF0b3IpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTtcbiAgICB9O1xuICAgIC8qQE92ZXJyaWRlKi9cbiAgICBCaXRNYXRyaXgucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IEJpdE1hdHJpeCh0aGlzLndpZHRoLCB0aGlzLmhlaWdodCwgdGhpcy5yb3dTaXplLCB0aGlzLmJpdHMuc2xpY2UoKSk7XG4gICAgfTtcbiAgICByZXR1cm4gQml0TWF0cml4O1xufSgpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IEJpdE1hdHJpeDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUJpdE1hdHJpeC5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIEV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4vRXhjZXB0aW9uXCIpO1xuLyoqXG4gKiBDdXN0b20gRXJyb3IgY2xhc3Mgb2YgdHlwZSBFeGNlcHRpb24uXG4gKi9cbnZhciBOb3RGb3VuZEV4Y2VwdGlvbiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoTm90Rm91bmRFeGNlcHRpb24sIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gTm90Rm91bmRFeGNlcHRpb24oKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgTm90Rm91bmRFeGNlcHRpb24uZ2V0Tm90Rm91bmRJbnN0YW5jZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBOb3RGb3VuZEV4Y2VwdGlvbigpO1xuICAgIH07XG4gICAgTm90Rm91bmRFeGNlcHRpb24ua2luZCA9ICdOb3RGb3VuZEV4Y2VwdGlvbic7XG4gICAgcmV0dXJuIE5vdEZvdW5kRXhjZXB0aW9uO1xufShFeGNlcHRpb25fMS5kZWZhdWx0KSk7XG5leHBvcnRzLmRlZmF1bHQgPSBOb3RGb3VuZEV4Y2VwdGlvbjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU5vdEZvdW5kRXhjZXB0aW9uLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuLypcbiAqIENvcHlyaWdodCAyMDA5IFpYaW5nIGF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qbmFtZXNwYWNlIGNvbS5nb29nbGUuenhpbmcuY29tbW9uIHsqL1xudmFyIEJpbmFyaXplcl8xID0gcmVxdWlyZShcIi4uL0JpbmFyaXplclwiKTtcbnZhciBCaXRBcnJheV8xID0gcmVxdWlyZShcIi4vQml0QXJyYXlcIik7XG52YXIgQml0TWF0cml4XzEgPSByZXF1aXJlKFwiLi9CaXRNYXRyaXhcIik7XG52YXIgTm90Rm91bmRFeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuLi9Ob3RGb3VuZEV4Y2VwdGlvblwiKTtcbi8qKlxuICogVGhpcyBCaW5hcml6ZXIgaW1wbGVtZW50YXRpb24gdXNlcyB0aGUgb2xkIFpYaW5nIGdsb2JhbCBoaXN0b2dyYW0gYXBwcm9hY2guIEl0IGlzIHN1aXRhYmxlXG4gKiBmb3IgbG93LWVuZCBtb2JpbGUgZGV2aWNlcyB3aGljaCBkb24ndCBoYXZlIGVub3VnaCBDUFUgb3IgbWVtb3J5IHRvIHVzZSBhIGxvY2FsIHRocmVzaG9sZGluZ1xuICogYWxnb3JpdGhtLiBIb3dldmVyLCBiZWNhdXNlIGl0IHBpY2tzIGEgZ2xvYmFsIGJsYWNrIHBvaW50LCBpdCBjYW5ub3QgaGFuZGxlIGRpZmZpY3VsdCBzaGFkb3dzXG4gKiBhbmQgZ3JhZGllbnRzLlxuICpcbiAqIEZhc3RlciBtb2JpbGUgZGV2aWNlcyBhbmQgYWxsIGRlc2t0b3AgYXBwbGljYXRpb25zIHNob3VsZCBwcm9iYWJseSB1c2UgSHlicmlkQmluYXJpemVyIGluc3RlYWQuXG4gKlxuICogQGF1dGhvciBkc3dpdGtpbkBnb29nbGUuY29tIChEYW5pZWwgU3dpdGtpbilcbiAqIEBhdXRob3IgU2VhbiBPd2VuXG4gKi9cbnZhciBHbG9iYWxIaXN0b2dyYW1CaW5hcml6ZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEdsb2JhbEhpc3RvZ3JhbUJpbmFyaXplciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBHbG9iYWxIaXN0b2dyYW1CaW5hcml6ZXIoc291cmNlKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIHNvdXJjZSkgfHwgdGhpcztcbiAgICAgICAgX3RoaXMubHVtaW5hbmNlcyA9IEdsb2JhbEhpc3RvZ3JhbUJpbmFyaXplci5FTVBUWTtcbiAgICAgICAgX3RoaXMuYnVja2V0cyA9IG5ldyBJbnQzMkFycmF5KEdsb2JhbEhpc3RvZ3JhbUJpbmFyaXplci5MVU1JTkFOQ0VfQlVDS0VUUyk7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgLy8gQXBwbGllcyBzaW1wbGUgc2hhcnBlbmluZyB0byB0aGUgcm93IGRhdGEgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZSBvZiB0aGUgMUQgUmVhZGVycy5cbiAgICAvKkBPdmVycmlkZSovXG4gICAgR2xvYmFsSGlzdG9ncmFtQmluYXJpemVyLnByb3RvdHlwZS5nZXRCbGFja1JvdyA9IGZ1bmN0aW9uICh5IC8qaW50Ki8sIHJvdykge1xuICAgICAgICB2YXIgc291cmNlID0gdGhpcy5nZXRMdW1pbmFuY2VTb3VyY2UoKTtcbiAgICAgICAgdmFyIHdpZHRoID0gc291cmNlLmdldFdpZHRoKCk7XG4gICAgICAgIGlmIChyb3cgPT09IHVuZGVmaW5lZCB8fCByb3cgPT09IG51bGwgfHwgcm93LmdldFNpemUoKSA8IHdpZHRoKSB7XG4gICAgICAgICAgICByb3cgPSBuZXcgQml0QXJyYXlfMS5kZWZhdWx0KHdpZHRoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJvdy5jbGVhcigpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW5pdEFycmF5cyh3aWR0aCk7XG4gICAgICAgIHZhciBsb2NhbEx1bWluYW5jZXMgPSBzb3VyY2UuZ2V0Um93KHksIHRoaXMubHVtaW5hbmNlcyk7XG4gICAgICAgIHZhciBsb2NhbEJ1Y2tldHMgPSB0aGlzLmJ1Y2tldHM7XG4gICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgd2lkdGg7IHgrKykge1xuICAgICAgICAgICAgbG9jYWxCdWNrZXRzWyhsb2NhbEx1bWluYW5jZXNbeF0gJiAweGZmKSA+PiBHbG9iYWxIaXN0b2dyYW1CaW5hcml6ZXIuTFVNSU5BTkNFX1NISUZUXSsrO1xuICAgICAgICB9XG4gICAgICAgIHZhciBibGFja1BvaW50ID0gR2xvYmFsSGlzdG9ncmFtQmluYXJpemVyLmVzdGltYXRlQmxhY2tQb2ludChsb2NhbEJ1Y2tldHMpO1xuICAgICAgICBpZiAod2lkdGggPCAzKSB7XG4gICAgICAgICAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIHZlcnkgc21hbGwgaW1hZ2VzXG4gICAgICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHtcbiAgICAgICAgICAgICAgICBpZiAoKGxvY2FsTHVtaW5hbmNlc1t4XSAmIDB4ZmYpIDwgYmxhY2tQb2ludCkge1xuICAgICAgICAgICAgICAgICAgICByb3cuc2V0KHgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBsZWZ0ID0gbG9jYWxMdW1pbmFuY2VzWzBdICYgMHhmZjtcbiAgICAgICAgICAgIHZhciBjZW50ZXIgPSBsb2NhbEx1bWluYW5jZXNbMV0gJiAweGZmO1xuICAgICAgICAgICAgZm9yICh2YXIgeCA9IDE7IHggPCB3aWR0aCAtIDE7IHgrKykge1xuICAgICAgICAgICAgICAgIHZhciByaWdodCA9IGxvY2FsTHVtaW5hbmNlc1t4ICsgMV0gJiAweGZmO1xuICAgICAgICAgICAgICAgIC8vIEEgc2ltcGxlIC0xIDQgLTEgYm94IGZpbHRlciB3aXRoIGEgd2VpZ2h0IG9mIDIuXG4gICAgICAgICAgICAgICAgaWYgKCgoY2VudGVyICogNCkgLSBsZWZ0IC0gcmlnaHQpIC8gMiA8IGJsYWNrUG9pbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcm93LnNldCh4KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGVmdCA9IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBjZW50ZXIgPSByaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcm93O1xuICAgIH07XG4gICAgLy8gRG9lcyBub3Qgc2hhcnBlbiB0aGUgZGF0YSwgYXMgdGhpcyBjYWxsIGlzIGludGVuZGVkIHRvIG9ubHkgYmUgdXNlZCBieSAyRCBSZWFkZXJzLlxuICAgIC8qQE92ZXJyaWRlKi9cbiAgICBHbG9iYWxIaXN0b2dyYW1CaW5hcml6ZXIucHJvdG90eXBlLmdldEJsYWNrTWF0cml4ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgc291cmNlID0gdGhpcy5nZXRMdW1pbmFuY2VTb3VyY2UoKTtcbiAgICAgICAgdmFyIHdpZHRoID0gc291cmNlLmdldFdpZHRoKCk7XG4gICAgICAgIHZhciBoZWlnaHQgPSBzb3VyY2UuZ2V0SGVpZ2h0KCk7XG4gICAgICAgIHZhciBtYXRyaXggPSBuZXcgQml0TWF0cml4XzEuZGVmYXVsdCh3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgLy8gUXVpY2tseSBjYWxjdWxhdGVzIHRoZSBoaXN0b2dyYW0gYnkgc2FtcGxpbmcgZm91ciByb3dzIGZyb20gdGhlIGltYWdlLiBUaGlzIHByb3ZlZCB0byBiZVxuICAgICAgICAvLyBtb3JlIHJvYnVzdCBvbiB0aGUgYmxhY2tib3ggdGVzdHMgdGhhbiBzYW1wbGluZyBhIGRpYWdvbmFsIGFzIHdlIHVzZWQgdG8gZG8uXG4gICAgICAgIHRoaXMuaW5pdEFycmF5cyh3aWR0aCk7XG4gICAgICAgIHZhciBsb2NhbEJ1Y2tldHMgPSB0aGlzLmJ1Y2tldHM7XG4gICAgICAgIGZvciAodmFyIHkgPSAxOyB5IDwgNTsgeSsrKSB7XG4gICAgICAgICAgICB2YXIgcm93ID0gTWF0aC5mbG9vcigoaGVpZ2h0ICogeSkgLyA1KTtcbiAgICAgICAgICAgIHZhciBsb2NhbEx1bWluYW5jZXNfMSA9IHNvdXJjZS5nZXRSb3cocm93LCB0aGlzLmx1bWluYW5jZXMpO1xuICAgICAgICAgICAgdmFyIHJpZ2h0ID0gTWF0aC5mbG9vcigod2lkdGggKiA0KSAvIDUpO1xuICAgICAgICAgICAgZm9yICh2YXIgeCA9IE1hdGguZmxvb3Iod2lkdGggLyA1KTsgeCA8IHJpZ2h0OyB4KyspIHtcbiAgICAgICAgICAgICAgICB2YXIgcGl4ZWwgPSBsb2NhbEx1bWluYW5jZXNfMVt4XSAmIDB4ZmY7XG4gICAgICAgICAgICAgICAgbG9jYWxCdWNrZXRzW3BpeGVsID4+IEdsb2JhbEhpc3RvZ3JhbUJpbmFyaXplci5MVU1JTkFOQ0VfU0hJRlRdKys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGJsYWNrUG9pbnQgPSBHbG9iYWxIaXN0b2dyYW1CaW5hcml6ZXIuZXN0aW1hdGVCbGFja1BvaW50KGxvY2FsQnVja2V0cyk7XG4gICAgICAgIC8vIFdlIGRlbGF5IHJlYWRpbmcgdGhlIGVudGlyZSBpbWFnZSBsdW1pbmFuY2UgdW50aWwgdGhlIGJsYWNrIHBvaW50IGVzdGltYXRpb24gc3VjY2VlZHMuXG4gICAgICAgIC8vIEFsdGhvdWdoIHdlIGVuZCB1cCByZWFkaW5nIGZvdXIgcm93cyB0d2ljZSwgaXQgaXMgY29uc2lzdGVudCB3aXRoIG91ciBtb3R0byBvZlxuICAgICAgICAvLyBcImZhaWwgcXVpY2tseVwiIHdoaWNoIGlzIG5lY2Vzc2FyeSBmb3IgY29udGludW91cyBzY2FubmluZy5cbiAgICAgICAgdmFyIGxvY2FsTHVtaW5hbmNlcyA9IHNvdXJjZS5nZXRNYXRyaXgoKTtcbiAgICAgICAgZm9yICh2YXIgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykge1xuICAgICAgICAgICAgdmFyIG9mZnNldCA9IHkgKiB3aWR0aDtcbiAgICAgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgd2lkdGg7IHgrKykge1xuICAgICAgICAgICAgICAgIHZhciBwaXhlbCA9IGxvY2FsTHVtaW5hbmNlc1tvZmZzZXQgKyB4XSAmIDB4ZmY7XG4gICAgICAgICAgICAgICAgaWYgKHBpeGVsIDwgYmxhY2tQb2ludCkge1xuICAgICAgICAgICAgICAgICAgICBtYXRyaXguc2V0KHgsIHkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWF0cml4O1xuICAgIH07XG4gICAgLypAT3ZlcnJpZGUqL1xuICAgIEdsb2JhbEhpc3RvZ3JhbUJpbmFyaXplci5wcm90b3R5cGUuY3JlYXRlQmluYXJpemVyID0gZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgICAgICByZXR1cm4gbmV3IEdsb2JhbEhpc3RvZ3JhbUJpbmFyaXplcihzb3VyY2UpO1xuICAgIH07XG4gICAgR2xvYmFsSGlzdG9ncmFtQmluYXJpemVyLnByb3RvdHlwZS5pbml0QXJyYXlzID0gZnVuY3Rpb24gKGx1bWluYW5jZVNpemUgLyppbnQqLykge1xuICAgICAgICBpZiAodGhpcy5sdW1pbmFuY2VzLmxlbmd0aCA8IGx1bWluYW5jZVNpemUpIHtcbiAgICAgICAgICAgIHRoaXMubHVtaW5hbmNlcyA9IG5ldyBVaW50OENsYW1wZWRBcnJheShsdW1pbmFuY2VTaXplKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYnVja2V0cyA9IHRoaXMuYnVja2V0cztcbiAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCBHbG9iYWxIaXN0b2dyYW1CaW5hcml6ZXIuTFVNSU5BTkNFX0JVQ0tFVFM7IHgrKykge1xuICAgICAgICAgICAgYnVja2V0c1t4XSA9IDA7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEdsb2JhbEhpc3RvZ3JhbUJpbmFyaXplci5lc3RpbWF0ZUJsYWNrUG9pbnQgPSBmdW5jdGlvbiAoYnVja2V0cykge1xuICAgICAgICAvLyBGaW5kIHRoZSB0YWxsZXN0IHBlYWsgaW4gdGhlIGhpc3RvZ3JhbS5cbiAgICAgICAgdmFyIG51bUJ1Y2tldHMgPSBidWNrZXRzLmxlbmd0aDtcbiAgICAgICAgdmFyIG1heEJ1Y2tldENvdW50ID0gMDtcbiAgICAgICAgdmFyIGZpcnN0UGVhayA9IDA7XG4gICAgICAgIHZhciBmaXJzdFBlYWtTaXplID0gMDtcbiAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCBudW1CdWNrZXRzOyB4KyspIHtcbiAgICAgICAgICAgIGlmIChidWNrZXRzW3hdID4gZmlyc3RQZWFrU2l6ZSkge1xuICAgICAgICAgICAgICAgIGZpcnN0UGVhayA9IHg7XG4gICAgICAgICAgICAgICAgZmlyc3RQZWFrU2l6ZSA9IGJ1Y2tldHNbeF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYnVja2V0c1t4XSA+IG1heEJ1Y2tldENvdW50KSB7XG4gICAgICAgICAgICAgICAgbWF4QnVja2V0Q291bnQgPSBidWNrZXRzW3hdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIEZpbmQgdGhlIHNlY29uZC10YWxsZXN0IHBlYWsgd2hpY2ggaXMgc29tZXdoYXQgZmFyIGZyb20gdGhlIHRhbGxlc3QgcGVhay5cbiAgICAgICAgdmFyIHNlY29uZFBlYWsgPSAwO1xuICAgICAgICB2YXIgc2Vjb25kUGVha1Njb3JlID0gMDtcbiAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCBudW1CdWNrZXRzOyB4KyspIHtcbiAgICAgICAgICAgIHZhciBkaXN0YW5jZVRvQmlnZ2VzdCA9IHggLSBmaXJzdFBlYWs7XG4gICAgICAgICAgICAvLyBFbmNvdXJhZ2UgbW9yZSBkaXN0YW50IHNlY29uZCBwZWFrcyBieSBtdWx0aXBseWluZyBieSBzcXVhcmUgb2YgZGlzdGFuY2UuXG4gICAgICAgICAgICB2YXIgc2NvcmUgPSBidWNrZXRzW3hdICogZGlzdGFuY2VUb0JpZ2dlc3QgKiBkaXN0YW5jZVRvQmlnZ2VzdDtcbiAgICAgICAgICAgIGlmIChzY29yZSA+IHNlY29uZFBlYWtTY29yZSkge1xuICAgICAgICAgICAgICAgIHNlY29uZFBlYWsgPSB4O1xuICAgICAgICAgICAgICAgIHNlY29uZFBlYWtTY29yZSA9IHNjb3JlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIE1ha2Ugc3VyZSBmaXJzdFBlYWsgY29ycmVzcG9uZHMgdG8gdGhlIGJsYWNrIHBlYWsuXG4gICAgICAgIGlmIChmaXJzdFBlYWsgPiBzZWNvbmRQZWFrKSB7XG4gICAgICAgICAgICB2YXIgdGVtcCA9IGZpcnN0UGVhaztcbiAgICAgICAgICAgIGZpcnN0UGVhayA9IHNlY29uZFBlYWs7XG4gICAgICAgICAgICBzZWNvbmRQZWFrID0gdGVtcDtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZiB0aGVyZSBpcyB0b28gbGl0dGxlIGNvbnRyYXN0IGluIHRoZSBpbWFnZSB0byBwaWNrIGEgbWVhbmluZ2Z1bCBibGFjayBwb2ludCwgdGhyb3cgcmF0aGVyXG4gICAgICAgIC8vIHRoYW4gd2FzdGUgdGltZSB0cnlpbmcgdG8gZGVjb2RlIHRoZSBpbWFnZSwgYW5kIHJpc2sgZmFsc2UgcG9zaXRpdmVzLlxuICAgICAgICBpZiAoc2Vjb25kUGVhayAtIGZpcnN0UGVhayA8PSBudW1CdWNrZXRzIC8gMTYpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBGaW5kIGEgdmFsbGV5IGJldHdlZW4gdGhlbSB0aGF0IGlzIGxvdyBhbmQgY2xvc2VyIHRvIHRoZSB3aGl0ZSBwZWFrLlxuICAgICAgICB2YXIgYmVzdFZhbGxleSA9IHNlY29uZFBlYWsgLSAxO1xuICAgICAgICB2YXIgYmVzdFZhbGxleVNjb3JlID0gLTE7XG4gICAgICAgIGZvciAodmFyIHggPSBzZWNvbmRQZWFrIC0gMTsgeCA+IGZpcnN0UGVhazsgeC0tKSB7XG4gICAgICAgICAgICB2YXIgZnJvbUZpcnN0ID0geCAtIGZpcnN0UGVhaztcbiAgICAgICAgICAgIHZhciBzY29yZSA9IGZyb21GaXJzdCAqIGZyb21GaXJzdCAqIChzZWNvbmRQZWFrIC0geCkgKiAobWF4QnVja2V0Q291bnQgLSBidWNrZXRzW3hdKTtcbiAgICAgICAgICAgIGlmIChzY29yZSA+IGJlc3RWYWxsZXlTY29yZSkge1xuICAgICAgICAgICAgICAgIGJlc3RWYWxsZXkgPSB4O1xuICAgICAgICAgICAgICAgIGJlc3RWYWxsZXlTY29yZSA9IHNjb3JlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBiZXN0VmFsbGV5IDw8IEdsb2JhbEhpc3RvZ3JhbUJpbmFyaXplci5MVU1JTkFOQ0VfU0hJRlQ7XG4gICAgfTtcbiAgICBHbG9iYWxIaXN0b2dyYW1CaW5hcml6ZXIuTFVNSU5BTkNFX0JJVFMgPSA1O1xuICAgIEdsb2JhbEhpc3RvZ3JhbUJpbmFyaXplci5MVU1JTkFOQ0VfU0hJRlQgPSA4IC0gR2xvYmFsSGlzdG9ncmFtQmluYXJpemVyLkxVTUlOQU5DRV9CSVRTO1xuICAgIEdsb2JhbEhpc3RvZ3JhbUJpbmFyaXplci5MVU1JTkFOQ0VfQlVDS0VUUyA9IDEgPDwgR2xvYmFsSGlzdG9ncmFtQmluYXJpemVyLkxVTUlOQU5DRV9CSVRTO1xuICAgIEdsb2JhbEhpc3RvZ3JhbUJpbmFyaXplci5FTVBUWSA9IFVpbnQ4Q2xhbXBlZEFycmF5LmZyb20oWzBdKTtcbiAgICByZXR1cm4gR2xvYmFsSGlzdG9ncmFtQmluYXJpemVyO1xufShCaW5hcml6ZXJfMS5kZWZhdWx0KSk7XG5leHBvcnRzLmRlZmF1bHQgPSBHbG9iYWxIaXN0b2dyYW1CaW5hcml6ZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1HbG9iYWxIaXN0b2dyYW1CaW5hcml6ZXIuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IDIwMDkgWlhpbmcgYXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIEdsb2JhbEhpc3RvZ3JhbUJpbmFyaXplcl8xID0gcmVxdWlyZShcIi4vR2xvYmFsSGlzdG9ncmFtQmluYXJpemVyXCIpO1xudmFyIEJpdE1hdHJpeF8xID0gcmVxdWlyZShcIi4vQml0TWF0cml4XCIpO1xuLyoqXG4gKiBUaGlzIGNsYXNzIGltcGxlbWVudHMgYSBsb2NhbCB0aHJlc2hvbGRpbmcgYWxnb3JpdGhtLCB3aGljaCB3aGlsZSBzbG93ZXIgdGhhbiB0aGVcbiAqIEdsb2JhbEhpc3RvZ3JhbUJpbmFyaXplciwgaXMgZmFpcmx5IGVmZmljaWVudCBmb3Igd2hhdCBpdCBkb2VzLiBJdCBpcyBkZXNpZ25lZCBmb3JcbiAqIGhpZ2ggZnJlcXVlbmN5IGltYWdlcyBvZiBiYXJjb2RlcyB3aXRoIGJsYWNrIGRhdGEgb24gd2hpdGUgYmFja2dyb3VuZHMuIEZvciB0aGlzIGFwcGxpY2F0aW9uLFxuICogaXQgZG9lcyBhIG11Y2ggYmV0dGVyIGpvYiB0aGFuIGEgZ2xvYmFsIGJsYWNrcG9pbnQgd2l0aCBzZXZlcmUgc2hhZG93cyBhbmQgZ3JhZGllbnRzLlxuICogSG93ZXZlciBpdCB0ZW5kcyB0byBwcm9kdWNlIGFydGlmYWN0cyBvbiBsb3dlciBmcmVxdWVuY3kgaW1hZ2VzIGFuZCBpcyB0aGVyZWZvcmUgbm90XG4gKiBhIGdvb2QgZ2VuZXJhbCBwdXJwb3NlIGJpbmFyaXplciBmb3IgdXNlcyBvdXRzaWRlIFpYaW5nLlxuICpcbiAqIFRoaXMgY2xhc3MgZXh0ZW5kcyBHbG9iYWxIaXN0b2dyYW1CaW5hcml6ZXIsIHVzaW5nIHRoZSBvbGRlciBoaXN0b2dyYW0gYXBwcm9hY2ggZm9yIDFEIHJlYWRlcnMsXG4gKiBhbmQgdGhlIG5ld2VyIGxvY2FsIGFwcHJvYWNoIGZvciAyRCByZWFkZXJzLiAxRCBkZWNvZGluZyB1c2luZyBhIHBlci1yb3cgaGlzdG9ncmFtIGlzIGFscmVhZHlcbiAqIGluaGVyZW50bHkgbG9jYWwsIGFuZCBvbmx5IGZhaWxzIGZvciBob3Jpem9udGFsIGdyYWRpZW50cy4gV2UgY2FuIHJldmlzaXQgdGhhdCBwcm9ibGVtIGxhdGVyLFxuICogYnV0IGZvciBub3cgaXQgd2FzIG5vdCBhIHdpbiB0byB1c2UgbG9jYWwgYmxvY2tzIGZvciAxRC5cbiAqXG4gKiBUaGlzIEJpbmFyaXplciBpcyB0aGUgZGVmYXVsdCBmb3IgdGhlIHVuaXQgdGVzdHMgYW5kIHRoZSByZWNvbW1lbmRlZCBjbGFzcyBmb3IgbGlicmFyeSB1c2Vycy5cbiAqXG4gKiBAYXV0aG9yIGRzd2l0a2luQGdvb2dsZS5jb20gKERhbmllbCBTd2l0a2luKVxuICovXG52YXIgSHlicmlkQmluYXJpemVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhIeWJyaWRCaW5hcml6ZXIsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gSHlicmlkQmluYXJpemVyKHNvdXJjZSkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBzb3VyY2UpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLm1hdHJpeCA9IG51bGw7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgZmluYWwgQml0TWF0cml4IG9uY2UgZm9yIGFsbCByZXF1ZXN0cy4gVGhpcyBjb3VsZCBiZSBjYWxsZWQgb25jZSBmcm9tIHRoZVxuICAgICAqIGNvbnN0cnVjdG9yIGluc3RlYWQsIGJ1dCB0aGVyZSBhcmUgc29tZSBhZHZhbnRhZ2VzIHRvIGRvaW5nIGl0IGxhemlseSwgc3VjaCBhcyBtYWtpbmdcbiAgICAgKiBwcm9maWxpbmcgZWFzaWVyLCBhbmQgbm90IGRvaW5nIGhlYXZ5IGxpZnRpbmcgd2hlbiBjYWxsZXJzIGRvbid0IGV4cGVjdCBpdC5cbiAgICAgKi9cbiAgICAvKkBPdmVycmlkZSovXG4gICAgSHlicmlkQmluYXJpemVyLnByb3RvdHlwZS5nZXRCbGFja01hdHJpeCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMubWF0cml4ICE9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tYXRyaXg7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHNvdXJjZSA9IHRoaXMuZ2V0THVtaW5hbmNlU291cmNlKCk7XG4gICAgICAgIHZhciB3aWR0aCA9IHNvdXJjZS5nZXRXaWR0aCgpO1xuICAgICAgICB2YXIgaGVpZ2h0ID0gc291cmNlLmdldEhlaWdodCgpO1xuICAgICAgICBpZiAod2lkdGggPj0gSHlicmlkQmluYXJpemVyLk1JTklNVU1fRElNRU5TSU9OICYmIGhlaWdodCA+PSBIeWJyaWRCaW5hcml6ZXIuTUlOSU1VTV9ESU1FTlNJT04pIHtcbiAgICAgICAgICAgIHZhciBsdW1pbmFuY2VzID0gc291cmNlLmdldE1hdHJpeCgpO1xuICAgICAgICAgICAgdmFyIHN1YldpZHRoID0gd2lkdGggPj4gSHlicmlkQmluYXJpemVyLkJMT0NLX1NJWkVfUE9XRVI7XG4gICAgICAgICAgICBpZiAoKHdpZHRoICYgSHlicmlkQmluYXJpemVyLkJMT0NLX1NJWkVfTUFTSykgIT09IDApIHtcbiAgICAgICAgICAgICAgICBzdWJXaWR0aCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIHN1YkhlaWdodCA9IGhlaWdodCA+PiBIeWJyaWRCaW5hcml6ZXIuQkxPQ0tfU0laRV9QT1dFUjtcbiAgICAgICAgICAgIGlmICgoaGVpZ2h0ICYgSHlicmlkQmluYXJpemVyLkJMT0NLX1NJWkVfTUFTSykgIT09IDApIHtcbiAgICAgICAgICAgICAgICBzdWJIZWlnaHQrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBibGFja1BvaW50cyA9IEh5YnJpZEJpbmFyaXplci5jYWxjdWxhdGVCbGFja1BvaW50cyhsdW1pbmFuY2VzLCBzdWJXaWR0aCwgc3ViSGVpZ2h0LCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgICAgIHZhciBuZXdNYXRyaXggPSBuZXcgQml0TWF0cml4XzEuZGVmYXVsdCh3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgICAgIEh5YnJpZEJpbmFyaXplci5jYWxjdWxhdGVUaHJlc2hvbGRGb3JCbG9jayhsdW1pbmFuY2VzLCBzdWJXaWR0aCwgc3ViSGVpZ2h0LCB3aWR0aCwgaGVpZ2h0LCBibGFja1BvaW50cywgbmV3TWF0cml4KTtcbiAgICAgICAgICAgIHRoaXMubWF0cml4ID0gbmV3TWF0cml4O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gSWYgdGhlIGltYWdlIGlzIHRvbyBzbWFsbCwgZmFsbCBiYWNrIHRvIHRoZSBnbG9iYWwgaGlzdG9ncmFtIGFwcHJvYWNoLlxuICAgICAgICAgICAgdGhpcy5tYXRyaXggPSBfc3VwZXIucHJvdG90eXBlLmdldEJsYWNrTWF0cml4LmNhbGwodGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMubWF0cml4O1xuICAgIH07XG4gICAgLypAT3ZlcnJpZGUqL1xuICAgIEh5YnJpZEJpbmFyaXplci5wcm90b3R5cGUuY3JlYXRlQmluYXJpemVyID0gZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgICAgICByZXR1cm4gbmV3IEh5YnJpZEJpbmFyaXplcihzb3VyY2UpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogRm9yIGVhY2ggYmxvY2sgaW4gdGhlIGltYWdlLCBjYWxjdWxhdGUgdGhlIGF2ZXJhZ2UgYmxhY2sgcG9pbnQgdXNpbmcgYSA1eDUgZ3JpZFxuICAgICAqIG9mIHRoZSBibG9ja3MgYXJvdW5kIGl0LiBBbHNvIGhhbmRsZXMgdGhlIGNvcm5lciBjYXNlcyAoZnJhY3Rpb25hbCBibG9ja3MgYXJlIGNvbXB1dGVkIGJhc2VkXG4gICAgICogb24gdGhlIGxhc3QgcGl4ZWxzIGluIHRoZSByb3cvY29sdW1uIHdoaWNoIGFyZSBhbHNvIHVzZWQgaW4gdGhlIHByZXZpb3VzIGJsb2NrKS5cbiAgICAgKi9cbiAgICBIeWJyaWRCaW5hcml6ZXIuY2FsY3VsYXRlVGhyZXNob2xkRm9yQmxvY2sgPSBmdW5jdGlvbiAobHVtaW5hbmNlcywgc3ViV2lkdGggLyppbnQqLywgc3ViSGVpZ2h0IC8qaW50Ki8sIHdpZHRoIC8qaW50Ki8sIGhlaWdodCAvKmludCovLCBibGFja1BvaW50cywgbWF0cml4KSB7XG4gICAgICAgIHZhciBtYXhZT2Zmc2V0ID0gaGVpZ2h0IC0gSHlicmlkQmluYXJpemVyLkJMT0NLX1NJWkU7XG4gICAgICAgIHZhciBtYXhYT2Zmc2V0ID0gd2lkdGggLSBIeWJyaWRCaW5hcml6ZXIuQkxPQ0tfU0laRTtcbiAgICAgICAgZm9yICh2YXIgeSA9IDA7IHkgPCBzdWJIZWlnaHQ7IHkrKykge1xuICAgICAgICAgICAgdmFyIHlvZmZzZXQgPSB5IDw8IEh5YnJpZEJpbmFyaXplci5CTE9DS19TSVpFX1BPV0VSO1xuICAgICAgICAgICAgaWYgKHlvZmZzZXQgPiBtYXhZT2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgeW9mZnNldCA9IG1heFlPZmZzZXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgdG9wXzEgPSBIeWJyaWRCaW5hcml6ZXIuY2FwKHksIDIsIHN1YkhlaWdodCAtIDMpO1xuICAgICAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCBzdWJXaWR0aDsgeCsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIHhvZmZzZXQgPSB4IDw8IEh5YnJpZEJpbmFyaXplci5CTE9DS19TSVpFX1BPV0VSO1xuICAgICAgICAgICAgICAgIGlmICh4b2Zmc2V0ID4gbWF4WE9mZnNldCkge1xuICAgICAgICAgICAgICAgICAgICB4b2Zmc2V0ID0gbWF4WE9mZnNldDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIGxlZnQgPSBIeWJyaWRCaW5hcml6ZXIuY2FwKHgsIDIsIHN1YldpZHRoIC0gMyk7XG4gICAgICAgICAgICAgICAgdmFyIHN1bSA9IDA7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgeiA9IC0yOyB6IDw9IDI7IHorKykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgYmxhY2tSb3cgPSBibGFja1BvaW50c1t0b3BfMSArIHpdO1xuICAgICAgICAgICAgICAgICAgICBzdW0gKz0gYmxhY2tSb3dbbGVmdCAtIDJdICsgYmxhY2tSb3dbbGVmdCAtIDFdICsgYmxhY2tSb3dbbGVmdF0gKyBibGFja1Jvd1tsZWZ0ICsgMV0gKyBibGFja1Jvd1tsZWZ0ICsgMl07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBhdmVyYWdlID0gc3VtIC8gMjU7XG4gICAgICAgICAgICAgICAgSHlicmlkQmluYXJpemVyLnRocmVzaG9sZEJsb2NrKGx1bWluYW5jZXMsIHhvZmZzZXQsIHlvZmZzZXQsIGF2ZXJhZ2UsIHdpZHRoLCBtYXRyaXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBIeWJyaWRCaW5hcml6ZXIuY2FwID0gZnVuY3Rpb24gKHZhbHVlIC8qaW50Ki8sIG1pbiAvKmludCovLCBtYXggLyppbnQqLykge1xuICAgICAgICByZXR1cm4gdmFsdWUgPCBtaW4gPyBtaW4gOiB2YWx1ZSA+IG1heCA/IG1heCA6IHZhbHVlO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQXBwbGllcyBhIHNpbmdsZSB0aHJlc2hvbGQgdG8gYSBibG9jayBvZiBwaXhlbHMuXG4gICAgICovXG4gICAgSHlicmlkQmluYXJpemVyLnRocmVzaG9sZEJsb2NrID0gZnVuY3Rpb24gKGx1bWluYW5jZXMsIHhvZmZzZXQgLyppbnQqLywgeW9mZnNldCAvKmludCovLCB0aHJlc2hvbGQgLyppbnQqLywgc3RyaWRlIC8qaW50Ki8sIG1hdHJpeCkge1xuICAgICAgICBmb3IgKHZhciB5ID0gMCwgb2Zmc2V0ID0geW9mZnNldCAqIHN0cmlkZSArIHhvZmZzZXQ7IHkgPCBIeWJyaWRCaW5hcml6ZXIuQkxPQ0tfU0laRTsgeSsrLCBvZmZzZXQgKz0gc3RyaWRlKSB7XG4gICAgICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IEh5YnJpZEJpbmFyaXplci5CTE9DS19TSVpFOyB4KyspIHtcbiAgICAgICAgICAgICAgICAvLyBDb21wYXJpc29uIG5lZWRzIHRvIGJlIDw9IHNvIHRoYXQgYmxhY2sgPT0gMCBwaXhlbHMgYXJlIGJsYWNrIGV2ZW4gaWYgdGhlIHRocmVzaG9sZCBpcyAwLlxuICAgICAgICAgICAgICAgIGlmICgobHVtaW5hbmNlc1tvZmZzZXQgKyB4XSAmIDB4RkYpIDw9IHRocmVzaG9sZCkge1xuICAgICAgICAgICAgICAgICAgICBtYXRyaXguc2V0KHhvZmZzZXQgKyB4LCB5b2Zmc2V0ICsgeSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIGEgc2luZ2xlIGJsYWNrIHBvaW50IGZvciBlYWNoIGJsb2NrIG9mIHBpeGVscyBhbmQgc2F2ZXMgaXQgYXdheS5cbiAgICAgKiBTZWUgdGhlIGZvbGxvd2luZyB0aHJlYWQgZm9yIGEgZGlzY3Vzc2lvbiBvZiB0aGlzIGFsZ29yaXRobTpcbiAgICAgKiAgaHR0cDovL2dyb3Vwcy5nb29nbGUuY29tL2dyb3VwL3p4aW5nL2Jyb3dzZV90aHJlYWQvdGhyZWFkL2QwNmVmYTJjMzVhN2RkYzBcbiAgICAgKi9cbiAgICBIeWJyaWRCaW5hcml6ZXIuY2FsY3VsYXRlQmxhY2tQb2ludHMgPSBmdW5jdGlvbiAobHVtaW5hbmNlcywgc3ViV2lkdGggLyppbnQqLywgc3ViSGVpZ2h0IC8qaW50Ki8sIHdpZHRoIC8qaW50Ki8sIGhlaWdodCAvKmludCovKSB7XG4gICAgICAgIHZhciBtYXhZT2Zmc2V0ID0gaGVpZ2h0IC0gSHlicmlkQmluYXJpemVyLkJMT0NLX1NJWkU7XG4gICAgICAgIHZhciBtYXhYT2Zmc2V0ID0gd2lkdGggLSBIeWJyaWRCaW5hcml6ZXIuQkxPQ0tfU0laRTtcbiAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOndoaXRlc3BhY2VcbiAgICAgICAgdmFyIGJsYWNrUG9pbnRzID0gbmV3IEFycmF5KHN1YkhlaWdodCk7IC8vIHN1YldpZHRoXG4gICAgICAgIGZvciAodmFyIHkgPSAwOyB5IDwgc3ViSGVpZ2h0OyB5KyspIHtcbiAgICAgICAgICAgIGJsYWNrUG9pbnRzW3ldID0gbmV3IEludDMyQXJyYXkoc3ViV2lkdGgpO1xuICAgICAgICAgICAgdmFyIHlvZmZzZXQgPSB5IDw8IEh5YnJpZEJpbmFyaXplci5CTE9DS19TSVpFX1BPV0VSO1xuICAgICAgICAgICAgaWYgKHlvZmZzZXQgPiBtYXhZT2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgeW9mZnNldCA9IG1heFlPZmZzZXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IHN1YldpZHRoOyB4KyspIHtcbiAgICAgICAgICAgICAgICB2YXIgeG9mZnNldCA9IHggPDwgSHlicmlkQmluYXJpemVyLkJMT0NLX1NJWkVfUE9XRVI7XG4gICAgICAgICAgICAgICAgaWYgKHhvZmZzZXQgPiBtYXhYT2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHhvZmZzZXQgPSBtYXhYT2Zmc2V0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgc3VtID0gMDtcbiAgICAgICAgICAgICAgICB2YXIgbWluID0gMHhGRjtcbiAgICAgICAgICAgICAgICB2YXIgbWF4ID0gMDtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciB5eSA9IDAsIG9mZnNldCA9IHlvZmZzZXQgKiB3aWR0aCArIHhvZmZzZXQ7IHl5IDwgSHlicmlkQmluYXJpemVyLkJMT0NLX1NJWkU7IHl5KyssIG9mZnNldCArPSB3aWR0aCkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB4eCA9IDA7IHh4IDwgSHlicmlkQmluYXJpemVyLkJMT0NLX1NJWkU7IHh4KyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwaXhlbCA9IGx1bWluYW5jZXNbb2Zmc2V0ICsgeHhdICYgMHhGRjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1bSArPSBwaXhlbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0aWxsIGxvb2tpbmcgZm9yIGdvb2QgY29udHJhc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwaXhlbCA8IG1pbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbiA9IHBpeGVsO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBpeGVsID4gbWF4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4ID0gcGl4ZWw7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gc2hvcnQtY2lyY3VpdCBtaW4vbWF4IHRlc3RzIG9uY2UgZHluYW1pYyByYW5nZSBpcyBtZXRcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1heCAtIG1pbiA+IEh5YnJpZEJpbmFyaXplci5NSU5fRFlOQU1JQ19SQU5HRSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZmluaXNoIHRoZSByZXN0IG9mIHRoZSByb3dzIHF1aWNrbHlcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoeXkrKywgb2Zmc2V0ICs9IHdpZHRoOyB5eSA8IEh5YnJpZEJpbmFyaXplci5CTE9DS19TSVpFOyB5eSsrLCBvZmZzZXQgKz0gd2lkdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB4eCA9IDA7IHh4IDwgSHlicmlkQmluYXJpemVyLkJMT0NLX1NJWkU7IHh4KyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VtICs9IGx1bWluYW5jZXNbb2Zmc2V0ICsgeHhdICYgMHhGRjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gVGhlIGRlZmF1bHQgZXN0aW1hdGUgaXMgdGhlIGF2ZXJhZ2Ugb2YgdGhlIHZhbHVlcyBpbiB0aGUgYmxvY2suXG4gICAgICAgICAgICAgICAgdmFyIGF2ZXJhZ2UgPSBzdW0gPj4gKEh5YnJpZEJpbmFyaXplci5CTE9DS19TSVpFX1BPV0VSICogMik7XG4gICAgICAgICAgICAgICAgaWYgKG1heCAtIG1pbiA8PSBIeWJyaWRCaW5hcml6ZXIuTUlOX0RZTkFNSUNfUkFOR0UpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgdmFyaWF0aW9uIHdpdGhpbiB0aGUgYmxvY2sgaXMgbG93LCBhc3N1bWUgdGhpcyBpcyBhIGJsb2NrIHdpdGggb25seSBsaWdodCBvciBvbmx5XG4gICAgICAgICAgICAgICAgICAgIC8vIGRhcmsgcGl4ZWxzLiBJbiB0aGF0IGNhc2Ugd2UgZG8gbm90IHdhbnQgdG8gdXNlIHRoZSBhdmVyYWdlLCBhcyBpdCB3b3VsZCBkaXZpZGUgdGhpc1xuICAgICAgICAgICAgICAgICAgICAvLyBsb3cgY29udHJhc3QgYXJlYSBpbnRvIGJsYWNrIGFuZCB3aGl0ZSBwaXhlbHMsIGVzc2VudGlhbGx5IGNyZWF0aW5nIGRhdGEgb3V0IG9mIG5vaXNlLlxuICAgICAgICAgICAgICAgICAgICAvL1xuICAgICAgICAgICAgICAgICAgICAvLyBUaGUgZGVmYXVsdCBhc3N1bXB0aW9uIGlzIHRoYXQgdGhlIGJsb2NrIGlzIGxpZ2h0L2JhY2tncm91bmQuIFNpbmNlIG5vIGVzdGltYXRlIGZvclxuICAgICAgICAgICAgICAgICAgICAvLyB0aGUgbGV2ZWwgb2YgZGFyayBwaXhlbHMgZXhpc3RzIGxvY2FsbHksIHVzZSBoYWxmIHRoZSBtaW4gZm9yIHRoZSBibG9jay5cbiAgICAgICAgICAgICAgICAgICAgYXZlcmFnZSA9IG1pbiAvIDI7XG4gICAgICAgICAgICAgICAgICAgIGlmICh5ID4gMCAmJiB4ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29ycmVjdCB0aGUgXCJ3aGl0ZSBiYWNrZ3JvdW5kXCIgYXNzdW1wdGlvbiBmb3IgYmxvY2tzIHRoYXQgaGF2ZSBuZWlnaGJvcnMgYnkgY29tcGFyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgcGl4ZWxzIGluIHRoaXMgYmxvY2sgdG8gdGhlIHByZXZpb3VzbHkgY2FsY3VsYXRlZCBibGFjayBwb2ludHMuIFRoaXMgaXMgYmFzZWQgb25cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBmYWN0IHRoYXQgZGFyayBiYXJjb2RlIHN5bWJvbG9neSBpcyBhbHdheXMgc3Vycm91bmRlZCBieSBzb21lIGFtb3VudCBvZiBsaWdodFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmFja2dyb3VuZCBmb3Igd2hpY2ggcmVhc29uYWJsZSBibGFjayBwb2ludCBlc3RpbWF0ZXMgd2VyZSBtYWRlLiBUaGUgYnAgZXN0aW1hdGVkIGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgYm91bmRhcmllcyBpcyB1c2VkIGZvciB0aGUgaW50ZXJpb3IuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgKG1pbiA8IGJwKSBpcyBhcmJpdHJhcnkgYnV0IHdvcmtzIGJldHRlciB0aGFuIG90aGVyIGhldXJpc3RpY3MgdGhhdCB3ZXJlIHRyaWVkLlxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF2ZXJhZ2VOZWlnaGJvckJsYWNrUG9pbnQgPSAoYmxhY2tQb2ludHNbeSAtIDFdW3hdICsgKDIgKiBibGFja1BvaW50c1t5XVt4IC0gMV0pICsgYmxhY2tQb2ludHNbeSAtIDFdW3ggLSAxXSkgLyA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1pbiA8IGF2ZXJhZ2VOZWlnaGJvckJsYWNrUG9pbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmVyYWdlID0gYXZlcmFnZU5laWdoYm9yQmxhY2tQb2ludDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBibGFja1BvaW50c1t5XVt4XSA9IGF2ZXJhZ2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJsYWNrUG9pbnRzO1xuICAgIH07XG4gICAgLy8gVGhpcyBjbGFzcyB1c2VzIDV4NSBibG9ja3MgdG8gY29tcHV0ZSBsb2NhbCBsdW1pbmFuY2UsIHdoZXJlIGVhY2ggYmxvY2sgaXMgOHg4IHBpeGVscy5cbiAgICAvLyBTbyB0aGlzIGlzIHRoZSBzbWFsbGVzdCBkaW1lbnNpb24gaW4gZWFjaCBheGlzIHdlIGNhbiBhY2NlcHQuXG4gICAgSHlicmlkQmluYXJpemVyLkJMT0NLX1NJWkVfUE9XRVIgPSAzO1xuICAgIEh5YnJpZEJpbmFyaXplci5CTE9DS19TSVpFID0gMSA8PCBIeWJyaWRCaW5hcml6ZXIuQkxPQ0tfU0laRV9QT1dFUjsgLy8gLi4uMDEwMC4uLjAwXG4gICAgSHlicmlkQmluYXJpemVyLkJMT0NLX1NJWkVfTUFTSyA9IEh5YnJpZEJpbmFyaXplci5CTE9DS19TSVpFIC0gMTsgLy8gLi4uMDAxMS4uLjExXG4gICAgSHlicmlkQmluYXJpemVyLk1JTklNVU1fRElNRU5TSU9OID0gSHlicmlkQmluYXJpemVyLkJMT0NLX1NJWkUgKiA1O1xuICAgIEh5YnJpZEJpbmFyaXplci5NSU5fRFlOQU1JQ19SQU5HRSA9IDI0O1xuICAgIHJldHVybiBIeWJyaWRCaW5hcml6ZXI7XG59KEdsb2JhbEhpc3RvZ3JhbUJpbmFyaXplcl8xLmRlZmF1bHQpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IEh5YnJpZEJpbmFyaXplcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUh5YnJpZEJpbmFyaXplci5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8qXG4gKiBDb3B5cmlnaHQgMjAwOSBaWGluZyBhdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIFN0cmluZ0J1aWxkZXJfMSA9IHJlcXVpcmUoXCIuL3V0aWwvU3RyaW5nQnVpbGRlclwiKTtcbnZhciBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4vVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb25cIik7XG4vKm5hbWVzcGFjZSBjb20uZ29vZ2xlLnp4aW5nIHsqL1xuLyoqXG4gKiBUaGUgcHVycG9zZSBvZiB0aGlzIGNsYXNzIGhpZXJhcmNoeSBpcyB0byBhYnN0cmFjdCBkaWZmZXJlbnQgYml0bWFwIGltcGxlbWVudGF0aW9ucyBhY3Jvc3NcbiAqIHBsYXRmb3JtcyBpbnRvIGEgc3RhbmRhcmQgaW50ZXJmYWNlIGZvciByZXF1ZXN0aW5nIGdyZXlzY2FsZSBsdW1pbmFuY2UgdmFsdWVzLiBUaGUgaW50ZXJmYWNlXG4gKiBvbmx5IHByb3ZpZGVzIGltbXV0YWJsZSBtZXRob2RzOyB0aGVyZWZvcmUgY3JvcCBhbmQgcm90YXRpb24gY3JlYXRlIGNvcGllcy4gVGhpcyBpcyB0byBlbnN1cmVcbiAqIHRoYXQgb25lIFJlYWRlciBkb2VzIG5vdCBtb2RpZnkgdGhlIG9yaWdpbmFsIGx1bWluYW5jZSBzb3VyY2UgYW5kIGxlYXZlIGl0IGluIGFuIHVua25vd24gc3RhdGVcbiAqIGZvciBvdGhlciBSZWFkZXJzIGluIHRoZSBjaGFpbi5cbiAqXG4gKiBAYXV0aG9yIGRzd2l0a2luQGdvb2dsZS5jb20gKERhbmllbCBTd2l0a2luKVxuICovXG52YXIgTHVtaW5hbmNlU291cmNlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEx1bWluYW5jZVNvdXJjZSh3aWR0aCAvKmludCovLCBoZWlnaHQgLyppbnQqLykge1xuICAgICAgICB0aGlzLndpZHRoID0gd2lkdGg7XG4gICAgICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIFRoZSB3aWR0aCBvZiB0aGUgYml0bWFwLlxuICAgICAqL1xuICAgIEx1bWluYW5jZVNvdXJjZS5wcm90b3R5cGUuZ2V0V2lkdGggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLndpZHRoO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHJldHVybiBUaGUgaGVpZ2h0IG9mIHRoZSBiaXRtYXAuXG4gICAgICovXG4gICAgTHVtaW5hbmNlU291cmNlLnByb3RvdHlwZS5nZXRIZWlnaHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmhlaWdodDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEByZXR1cm4gV2hldGhlciB0aGlzIHN1YmNsYXNzIHN1cHBvcnRzIGNyb3BwaW5nLlxuICAgICAqL1xuICAgIEx1bWluYW5jZVNvdXJjZS5wcm90b3R5cGUuaXNDcm9wU3VwcG9ydGVkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCB3aXRoIGNyb3BwZWQgaW1hZ2UgZGF0YS4gSW1wbGVtZW50YXRpb25zIG1heSBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZVxuICAgICAqIG9yaWdpbmFsIGRhdGEgcmF0aGVyIHRoYW4gYSBjb3B5LiBPbmx5IGNhbGxhYmxlIGlmIGlzQ3JvcFN1cHBvcnRlZCgpIGlzIHRydWUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbGVmdCBUaGUgbGVmdCBjb29yZGluYXRlLCB3aGljaCBtdXN0IGJlIGluIFswLGdldFdpZHRoKCkpXG4gICAgICogQHBhcmFtIHRvcCBUaGUgdG9wIGNvb3JkaW5hdGUsIHdoaWNoIG11c3QgYmUgaW4gWzAsZ2V0SGVpZ2h0KCkpXG4gICAgICogQHBhcmFtIHdpZHRoIFRoZSB3aWR0aCBvZiB0aGUgcmVjdGFuZ2xlIHRvIGNyb3AuXG4gICAgICogQHBhcmFtIGhlaWdodCBUaGUgaGVpZ2h0IG9mIHRoZSByZWN0YW5nbGUgdG8gY3JvcC5cbiAgICAgKiBAcmV0dXJuIEEgY3JvcHBlZCB2ZXJzaW9uIG9mIHRoaXMgb2JqZWN0LlxuICAgICAqL1xuICAgIEx1bWluYW5jZVNvdXJjZS5wcm90b3R5cGUuY3JvcCA9IGZ1bmN0aW9uIChsZWZ0IC8qaW50Ki8sIHRvcCAvKmludCovLCB3aWR0aCAvKmludCovLCBoZWlnaHQgLyppbnQqLykge1xuICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb25fMS5kZWZhdWx0KCdUaGlzIGx1bWluYW5jZSBzb3VyY2UgZG9lcyBub3Qgc3VwcG9ydCBjcm9wcGluZy4nKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEByZXR1cm4gV2hldGhlciB0aGlzIHN1YmNsYXNzIHN1cHBvcnRzIGNvdW50ZXItY2xvY2t3aXNlIHJvdGF0aW9uLlxuICAgICAqL1xuICAgIEx1bWluYW5jZVNvdXJjZS5wcm90b3R5cGUuaXNSb3RhdGVTdXBwb3J0ZWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBuZXcgb2JqZWN0IHdpdGggcm90YXRlZCBpbWFnZSBkYXRhIGJ5IDkwIGRlZ3JlZXMgY291bnRlcmNsb2Nrd2lzZS5cbiAgICAgKiBPbmx5IGNhbGxhYmxlIGlmIHtAbGluayAjaXNSb3RhdGVTdXBwb3J0ZWQoKX0gaXMgdHJ1ZS5cbiAgICAgKlxuICAgICAqIEByZXR1cm4gQSByb3RhdGVkIHZlcnNpb24gb2YgdGhpcyBvYmplY3QuXG4gICAgICovXG4gICAgTHVtaW5hbmNlU291cmNlLnByb3RvdHlwZS5yb3RhdGVDb3VudGVyQ2xvY2t3aXNlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb25fMS5kZWZhdWx0KCdUaGlzIGx1bWluYW5jZSBzb3VyY2UgZG9lcyBub3Qgc3VwcG9ydCByb3RhdGlvbiBieSA5MCBkZWdyZWVzLicpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIG5ldyBvYmplY3Qgd2l0aCByb3RhdGVkIGltYWdlIGRhdGEgYnkgNDUgZGVncmVlcyBjb3VudGVyY2xvY2t3aXNlLlxuICAgICAqIE9ubHkgY2FsbGFibGUgaWYge0BsaW5rICNpc1JvdGF0ZVN1cHBvcnRlZCgpfSBpcyB0cnVlLlxuICAgICAqXG4gICAgICogQHJldHVybiBBIHJvdGF0ZWQgdmVyc2lvbiBvZiB0aGlzIG9iamVjdC5cbiAgICAgKi9cbiAgICBMdW1pbmFuY2VTb3VyY2UucHJvdG90eXBlLnJvdGF0ZUNvdW50ZXJDbG9ja3dpc2U0NSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uXzEuZGVmYXVsdCgnVGhpcyBsdW1pbmFuY2Ugc291cmNlIGRvZXMgbm90IHN1cHBvcnQgcm90YXRpb24gYnkgNDUgZGVncmVlcy4nKTtcbiAgICB9O1xuICAgIC8qQE92ZXJyaWRlKi9cbiAgICBMdW1pbmFuY2VTb3VyY2UucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcm93ID0gbmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHRoaXMud2lkdGgpO1xuICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1aWxkZXJfMS5kZWZhdWx0KCk7XG4gICAgICAgIGZvciAodmFyIHkgPSAwOyB5IDwgdGhpcy5oZWlnaHQ7IHkrKykge1xuICAgICAgICAgICAgdmFyIHNvdXJjZVJvdyA9IHRoaXMuZ2V0Um93KHksIHJvdyk7XG4gICAgICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IHRoaXMud2lkdGg7IHgrKykge1xuICAgICAgICAgICAgICAgIHZhciBsdW1pbmFuY2UgPSBzb3VyY2VSb3dbeF0gJiAweEZGO1xuICAgICAgICAgICAgICAgIHZhciBjID0gdm9pZCAwO1xuICAgICAgICAgICAgICAgIGlmIChsdW1pbmFuY2UgPCAweDQwKSB7XG4gICAgICAgICAgICAgICAgICAgIGMgPSAnIyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGx1bWluYW5jZSA8IDB4ODApIHtcbiAgICAgICAgICAgICAgICAgICAgYyA9ICcrJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobHVtaW5hbmNlIDwgMHhDMCkge1xuICAgICAgICAgICAgICAgICAgICBjID0gJy4nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYyA9ICcgJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xcbicpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTtcbiAgICB9O1xuICAgIHJldHVybiBMdW1pbmFuY2VTb3VyY2U7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gTHVtaW5hbmNlU291cmNlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9THVtaW5hbmNlU291cmNlLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuLypcbiAqIENvcHlyaWdodCAyMDA5IFpYaW5nIGF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBMdW1pbmFuY2VTb3VyY2VfMSA9IHJlcXVpcmUoXCIuL0x1bWluYW5jZVNvdXJjZVwiKTtcbi8qbmFtZXNwYWNlIGNvbS5nb29nbGUuenhpbmcgeyovXG4vKipcbiAqIEEgd3JhcHBlciBpbXBsZW1lbnRhdGlvbiBvZiB7QGxpbmsgTHVtaW5hbmNlU291cmNlfSB3aGljaCBpbnZlcnRzIHRoZSBsdW1pbmFuY2VzIGl0IHJldHVybnMgLS0gYmxhY2sgYmVjb21lc1xuICogd2hpdGUgYW5kIHZpY2UgdmVyc2EsIGFuZCBlYWNoIHZhbHVlIGJlY29tZXMgKDI1NS12YWx1ZSkuXG4gKlxuICogQGF1dGhvciBTZWFuIE93ZW5cbiAqL1xudmFyIEludmVydGVkTHVtaW5hbmNlU291cmNlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhJbnZlcnRlZEx1bWluYW5jZVNvdXJjZSwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBJbnZlcnRlZEx1bWluYW5jZVNvdXJjZShkZWxlZ2F0ZSkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBkZWxlZ2F0ZS5nZXRXaWR0aCgpLCBkZWxlZ2F0ZS5nZXRIZWlnaHQoKSkgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuZGVsZWdhdGUgPSBkZWxlZ2F0ZTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICAvKkBPdmVycmlkZSovXG4gICAgSW52ZXJ0ZWRMdW1pbmFuY2VTb3VyY2UucHJvdG90eXBlLmdldFJvdyA9IGZ1bmN0aW9uICh5IC8qaW50Ki8sIHJvdykge1xuICAgICAgICB2YXIgc291cmNlUm93ID0gdGhpcy5kZWxlZ2F0ZS5nZXRSb3coeSwgcm93KTtcbiAgICAgICAgdmFyIHdpZHRoID0gdGhpcy5nZXRXaWR0aCgpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHdpZHRoOyBpKyspIHtcbiAgICAgICAgICAgIHNvdXJjZVJvd1tpXSA9IC8qKGJ5dGUpKi8gKDI1NSAtIChzb3VyY2VSb3dbaV0gJiAweEZGKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNvdXJjZVJvdztcbiAgICB9O1xuICAgIC8qQE92ZXJyaWRlKi9cbiAgICBJbnZlcnRlZEx1bWluYW5jZVNvdXJjZS5wcm90b3R5cGUuZ2V0TWF0cml4ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbWF0cml4ID0gdGhpcy5kZWxlZ2F0ZS5nZXRNYXRyaXgoKTtcbiAgICAgICAgdmFyIGxlbmd0aCA9IHRoaXMuZ2V0V2lkdGgoKSAqIHRoaXMuZ2V0SGVpZ2h0KCk7XG4gICAgICAgIHZhciBpbnZlcnRlZE1hdHJpeCA9IG5ldyBVaW50OENsYW1wZWRBcnJheShsZW5ndGgpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpbnZlcnRlZE1hdHJpeFtpXSA9IC8qKGJ5dGUpKi8gKDI1NSAtIChtYXRyaXhbaV0gJiAweEZGKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGludmVydGVkTWF0cml4O1xuICAgIH07XG4gICAgLypAT3ZlcnJpZGUqL1xuICAgIEludmVydGVkTHVtaW5hbmNlU291cmNlLnByb3RvdHlwZS5pc0Nyb3BTdXBwb3J0ZWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLmlzQ3JvcFN1cHBvcnRlZCgpO1xuICAgIH07XG4gICAgLypAT3ZlcnJpZGUqL1xuICAgIEludmVydGVkTHVtaW5hbmNlU291cmNlLnByb3RvdHlwZS5jcm9wID0gZnVuY3Rpb24gKGxlZnQgLyppbnQqLywgdG9wIC8qaW50Ki8sIHdpZHRoIC8qaW50Ki8sIGhlaWdodCAvKmludCovKSB7XG4gICAgICAgIHJldHVybiBuZXcgSW52ZXJ0ZWRMdW1pbmFuY2VTb3VyY2UodGhpcy5kZWxlZ2F0ZS5jcm9wKGxlZnQsIHRvcCwgd2lkdGgsIGhlaWdodCkpO1xuICAgIH07XG4gICAgLypAT3ZlcnJpZGUqL1xuICAgIEludmVydGVkTHVtaW5hbmNlU291cmNlLnByb3RvdHlwZS5pc1JvdGF0ZVN1cHBvcnRlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUuaXNSb3RhdGVTdXBwb3J0ZWQoKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEByZXR1cm4gb3JpZ2luYWwgZGVsZWdhdGUge0BsaW5rIEx1bWluYW5jZVNvdXJjZX0gc2luY2UgaW52ZXJ0IHVuZG9lcyBpdHNlbGZcbiAgICAgKi9cbiAgICAvKkBPdmVycmlkZSovXG4gICAgSW52ZXJ0ZWRMdW1pbmFuY2VTb3VyY2UucHJvdG90eXBlLmludmVydCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVsZWdhdGU7XG4gICAgfTtcbiAgICAvKkBPdmVycmlkZSovXG4gICAgSW52ZXJ0ZWRMdW1pbmFuY2VTb3VyY2UucHJvdG90eXBlLnJvdGF0ZUNvdW50ZXJDbG9ja3dpc2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgSW52ZXJ0ZWRMdW1pbmFuY2VTb3VyY2UodGhpcy5kZWxlZ2F0ZS5yb3RhdGVDb3VudGVyQ2xvY2t3aXNlKCkpO1xuICAgIH07XG4gICAgLypAT3ZlcnJpZGUqL1xuICAgIEludmVydGVkTHVtaW5hbmNlU291cmNlLnByb3RvdHlwZS5yb3RhdGVDb3VudGVyQ2xvY2t3aXNlNDUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgSW52ZXJ0ZWRMdW1pbmFuY2VTb3VyY2UodGhpcy5kZWxlZ2F0ZS5yb3RhdGVDb3VudGVyQ2xvY2t3aXNlNDUoKSk7XG4gICAgfTtcbiAgICByZXR1cm4gSW52ZXJ0ZWRMdW1pbmFuY2VTb3VyY2U7XG59KEx1bWluYW5jZVNvdXJjZV8xLmRlZmF1bHQpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IEludmVydGVkTHVtaW5hbmNlU291cmNlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SW52ZXJ0ZWRMdW1pbmFuY2VTb3VyY2UuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuSFRNTENhbnZhc0VsZW1lbnRMdW1pbmFuY2VTb3VyY2UgPSB2b2lkIDA7XG52YXIgSW52ZXJ0ZWRMdW1pbmFuY2VTb3VyY2VfMSA9IHJlcXVpcmUoXCIuLi9jb3JlL0ludmVydGVkTHVtaW5hbmNlU291cmNlXCIpO1xudmFyIEx1bWluYW5jZVNvdXJjZV8xID0gcmVxdWlyZShcIi4uL2NvcmUvTHVtaW5hbmNlU291cmNlXCIpO1xudmFyIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4uL2NvcmUvSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXCIpO1xuLyoqXG4gKiBAZGVwcmVjYXRlZCBNb3ZpbmcgdG8gQHp4aW5nL2Jyb3dzZXJcbiAqL1xudmFyIEhUTUxDYW52YXNFbGVtZW50THVtaW5hbmNlU291cmNlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhIVE1MQ2FudmFzRWxlbWVudEx1bWluYW5jZVNvdXJjZSwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBIVE1MQ2FudmFzRWxlbWVudEx1bWluYW5jZVNvdXJjZShjYW52YXMpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5jYW52YXMgPSBjYW52YXM7XG4gICAgICAgIF90aGlzLnRlbXBDYW52YXNFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgX3RoaXMuYnVmZmVyID0gSFRNTENhbnZhc0VsZW1lbnRMdW1pbmFuY2VTb3VyY2UubWFrZUJ1ZmZlckZyb21DYW52YXNJbWFnZURhdGEoY2FudmFzKTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBIVE1MQ2FudmFzRWxlbWVudEx1bWluYW5jZVNvdXJjZS5tYWtlQnVmZmVyRnJvbUNhbnZhc0ltYWdlRGF0YSA9IGZ1bmN0aW9uIChjYW52YXMpIHtcbiAgICAgICAgdmFyIGltYWdlRGF0YSA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpLmdldEltYWdlRGF0YSgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpO1xuICAgICAgICByZXR1cm4gSFRNTENhbnZhc0VsZW1lbnRMdW1pbmFuY2VTb3VyY2UudG9HcmF5c2NhbGVCdWZmZXIoaW1hZ2VEYXRhLmRhdGEsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7XG4gICAgfTtcbiAgICBIVE1MQ2FudmFzRWxlbWVudEx1bWluYW5jZVNvdXJjZS50b0dyYXlzY2FsZUJ1ZmZlciA9IGZ1bmN0aW9uIChpbWFnZUJ1ZmZlciwgd2lkdGgsIGhlaWdodCkge1xuICAgICAgICB2YXIgZ3JheXNjYWxlQnVmZmVyID0gbmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHdpZHRoICogaGVpZ2h0KTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIGogPSAwLCBsZW5ndGhfMSA9IGltYWdlQnVmZmVyLmxlbmd0aDsgaSA8IGxlbmd0aF8xOyBpICs9IDQsIGorKykge1xuICAgICAgICAgICAgdmFyIGdyYXkgPSB2b2lkIDA7XG4gICAgICAgICAgICB2YXIgYWxwaGEgPSBpbWFnZUJ1ZmZlcltpICsgM107XG4gICAgICAgICAgICAvLyBUaGUgY29sb3Igb2YgZnVsbHktdHJhbnNwYXJlbnQgcGl4ZWxzIGlzIGlycmVsZXZhbnQuIFRoZXkgYXJlIG9mdGVuLCB0ZWNobmljYWxseSwgZnVsbHktdHJhbnNwYXJlbnRcbiAgICAgICAgICAgIC8vIGJsYWNrICgwIGFscGhhLCBhbmQgdGhlbiAwIFJHQikuIFRoZXkgYXJlIG9mdGVuIHVzZWQsIG9mIGNvdXJzZSBhcyB0aGUgXCJ3aGl0ZVwiIGFyZWEgaW4gYVxuICAgICAgICAgICAgLy8gYmFyY29kZSBpbWFnZS4gRm9yY2UgYW55IHN1Y2ggcGl4ZWwgdG8gYmUgd2hpdGU6XG4gICAgICAgICAgICBpZiAoYWxwaGEgPT09IDApIHtcbiAgICAgICAgICAgICAgICBncmF5ID0gMHhGRjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhciBwaXhlbFIgPSBpbWFnZUJ1ZmZlcltpXTtcbiAgICAgICAgICAgICAgICB2YXIgcGl4ZWxHID0gaW1hZ2VCdWZmZXJbaSArIDFdO1xuICAgICAgICAgICAgICAgIHZhciBwaXhlbEIgPSBpbWFnZUJ1ZmZlcltpICsgMl07XG4gICAgICAgICAgICAgICAgLy8gLjI5OVIgKyAwLjU4N0cgKyAwLjExNEIgKFlVVi9ZSVEgZm9yIFBBTCBhbmQgTlRTQyksXG4gICAgICAgICAgICAgICAgLy8gKDMwNipSKSA+PiAxMCBpcyBhcHByb3hpbWF0ZWx5IGVxdWFsIHRvIFIqMC4yOTksIGFuZCBzbyBvbi5cbiAgICAgICAgICAgICAgICAvLyAweDIwMCA+PiAxMCBpcyAwLjUsIGl0IGltcGxlbWVudHMgcm91bmRpbmcuXG4gICAgICAgICAgICAgICAgZ3JheSA9ICgzMDYgKiBwaXhlbFIgK1xuICAgICAgICAgICAgICAgICAgICA2MDEgKiBwaXhlbEcgK1xuICAgICAgICAgICAgICAgICAgICAxMTcgKiBwaXhlbEIgK1xuICAgICAgICAgICAgICAgICAgICAweDIwMCkgPj4gMTA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBncmF5c2NhbGVCdWZmZXJbal0gPSBncmF5O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBncmF5c2NhbGVCdWZmZXI7XG4gICAgfTtcbiAgICBIVE1MQ2FudmFzRWxlbWVudEx1bWluYW5jZVNvdXJjZS5wcm90b3R5cGUuZ2V0Um93ID0gZnVuY3Rpb24gKHkgLyppbnQqLywgcm93KSB7XG4gICAgICAgIGlmICh5IDwgMCB8fCB5ID49IHRoaXMuZ2V0SGVpZ2h0KCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCdSZXF1ZXN0ZWQgcm93IGlzIG91dHNpZGUgdGhlIGltYWdlOiAnICsgeSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHdpZHRoID0gdGhpcy5nZXRXaWR0aCgpO1xuICAgICAgICB2YXIgc3RhcnQgPSB5ICogd2lkdGg7XG4gICAgICAgIGlmIChyb3cgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJvdyA9IHRoaXMuYnVmZmVyLnNsaWNlKHN0YXJ0LCBzdGFydCArIHdpZHRoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChyb3cubGVuZ3RoIDwgd2lkdGgpIHtcbiAgICAgICAgICAgICAgICByb3cgPSBuZXcgVWludDhDbGFtcGVkQXJyYXkod2lkdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gVGhlIHVuZGVybHlpbmcgcmFzdGVyIG9mIGltYWdlIGNvbnNpc3RzIG9mIGJ5dGVzIHdpdGggdGhlIGx1bWluYW5jZSB2YWx1ZXNcbiAgICAgICAgICAgIC8vIFRPRE86IGNhbiBhdm9pZCBzZXQvc2xpY2U/XG4gICAgICAgICAgICByb3cuc2V0KHRoaXMuYnVmZmVyLnNsaWNlKHN0YXJ0LCBzdGFydCArIHdpZHRoKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJvdztcbiAgICB9O1xuICAgIEhUTUxDYW52YXNFbGVtZW50THVtaW5hbmNlU291cmNlLnByb3RvdHlwZS5nZXRNYXRyaXggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJ1ZmZlcjtcbiAgICB9O1xuICAgIEhUTUxDYW52YXNFbGVtZW50THVtaW5hbmNlU291cmNlLnByb3RvdHlwZS5pc0Nyb3BTdXBwb3J0ZWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG4gICAgSFRNTENhbnZhc0VsZW1lbnRMdW1pbmFuY2VTb3VyY2UucHJvdG90eXBlLmNyb3AgPSBmdW5jdGlvbiAobGVmdCAvKmludCovLCB0b3AgLyppbnQqLywgd2lkdGggLyppbnQqLywgaGVpZ2h0IC8qaW50Ki8pIHtcbiAgICAgICAgX3N1cGVyLnByb3RvdHlwZS5jcm9wLmNhbGwodGhpcywgbGVmdCwgdG9wLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIGFsd2F5cyB0cnVlLCBzaW5jZSB0aGUgaW1hZ2UgaXMgYSBncmF5LXNjYWxlIGltYWdlLlxuICAgICAqXG4gICAgICogQHJldHVybiB0cnVlXG4gICAgICovXG4gICAgSFRNTENhbnZhc0VsZW1lbnRMdW1pbmFuY2VTb3VyY2UucHJvdG90eXBlLmlzUm90YXRlU3VwcG9ydGVkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuICAgIEhUTUxDYW52YXNFbGVtZW50THVtaW5hbmNlU291cmNlLnByb3RvdHlwZS5yb3RhdGVDb3VudGVyQ2xvY2t3aXNlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnJvdGF0ZSgtOTApO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIEhUTUxDYW52YXNFbGVtZW50THVtaW5hbmNlU291cmNlLnByb3RvdHlwZS5yb3RhdGVDb3VudGVyQ2xvY2t3aXNlNDUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucm90YXRlKC00NSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgSFRNTENhbnZhc0VsZW1lbnRMdW1pbmFuY2VTb3VyY2UucHJvdG90eXBlLmdldFRlbXBDYW52YXNFbGVtZW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAobnVsbCA9PT0gdGhpcy50ZW1wQ2FudmFzRWxlbWVudCkge1xuICAgICAgICAgICAgdmFyIHRlbXBDYW52YXNFbGVtZW50ID0gdGhpcy5jYW52YXMub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICAgICAgICAgIHRlbXBDYW52YXNFbGVtZW50LndpZHRoID0gdGhpcy5jYW52YXMud2lkdGg7XG4gICAgICAgICAgICB0ZW1wQ2FudmFzRWxlbWVudC5oZWlnaHQgPSB0aGlzLmNhbnZhcy5oZWlnaHQ7XG4gICAgICAgICAgICB0aGlzLnRlbXBDYW52YXNFbGVtZW50ID0gdGVtcENhbnZhc0VsZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMudGVtcENhbnZhc0VsZW1lbnQ7XG4gICAgfTtcbiAgICBIVE1MQ2FudmFzRWxlbWVudEx1bWluYW5jZVNvdXJjZS5wcm90b3R5cGUucm90YXRlID0gZnVuY3Rpb24gKGFuZ2xlKSB7XG4gICAgICAgIHZhciB0ZW1wQ2FudmFzRWxlbWVudCA9IHRoaXMuZ2V0VGVtcENhbnZhc0VsZW1lbnQoKTtcbiAgICAgICAgdmFyIHRlbXBDb250ZXh0ID0gdGVtcENhbnZhc0VsZW1lbnQuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICAgICAgdmFyIGFuZ2xlUmFkaWFucyA9IGFuZ2xlICogSFRNTENhbnZhc0VsZW1lbnRMdW1pbmFuY2VTb3VyY2UuREVHUkVFX1RPX1JBRElBTlM7XG4gICAgICAgIC8vIENhbGN1bGF0ZSBhbmQgc2V0IG5ldyBkaW1lbnNpb25zIGZvciB0ZW1wIGNhbnZhc1xuICAgICAgICB2YXIgd2lkdGggPSB0aGlzLmNhbnZhcy53aWR0aDtcbiAgICAgICAgdmFyIGhlaWdodCA9IHRoaXMuY2FudmFzLmhlaWdodDtcbiAgICAgICAgdmFyIG5ld1dpZHRoID0gTWF0aC5jZWlsKE1hdGguYWJzKE1hdGguY29zKGFuZ2xlUmFkaWFucykpICogd2lkdGggKyBNYXRoLmFicyhNYXRoLnNpbihhbmdsZVJhZGlhbnMpKSAqIGhlaWdodCk7XG4gICAgICAgIHZhciBuZXdIZWlnaHQgPSBNYXRoLmNlaWwoTWF0aC5hYnMoTWF0aC5zaW4oYW5nbGVSYWRpYW5zKSkgKiB3aWR0aCArIE1hdGguYWJzKE1hdGguY29zKGFuZ2xlUmFkaWFucykpICogaGVpZ2h0KTtcbiAgICAgICAgdGVtcENhbnZhc0VsZW1lbnQud2lkdGggPSBuZXdXaWR0aDtcbiAgICAgICAgdGVtcENhbnZhc0VsZW1lbnQuaGVpZ2h0ID0gbmV3SGVpZ2h0O1xuICAgICAgICAvLyBEcmF3IGF0IGNlbnRlciBvZiB0ZW1wIGNhbnZhcyB0byBwcmV2ZW50IGNsaXBwaW5nIG9mIGltYWdlIGRhdGFcbiAgICAgICAgdGVtcENvbnRleHQudHJhbnNsYXRlKG5ld1dpZHRoIC8gMiwgbmV3SGVpZ2h0IC8gMik7XG4gICAgICAgIHRlbXBDb250ZXh0LnJvdGF0ZShhbmdsZVJhZGlhbnMpO1xuICAgICAgICB0ZW1wQ29udGV4dC5kcmF3SW1hZ2UodGhpcy5jYW52YXMsIHdpZHRoIC8gLTIsIGhlaWdodCAvIC0yKTtcbiAgICAgICAgdGhpcy5idWZmZXIgPSBIVE1MQ2FudmFzRWxlbWVudEx1bWluYW5jZVNvdXJjZS5tYWtlQnVmZmVyRnJvbUNhbnZhc0ltYWdlRGF0YSh0ZW1wQ2FudmFzRWxlbWVudCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgSFRNTENhbnZhc0VsZW1lbnRMdW1pbmFuY2VTb3VyY2UucHJvdG90eXBlLmludmVydCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBJbnZlcnRlZEx1bWluYW5jZVNvdXJjZV8xLmRlZmF1bHQodGhpcyk7XG4gICAgfTtcbiAgICBIVE1MQ2FudmFzRWxlbWVudEx1bWluYW5jZVNvdXJjZS5ERUdSRUVfVE9fUkFESUFOUyA9IE1hdGguUEkgLyAxODA7XG4gICAgcmV0dXJuIEhUTUxDYW52YXNFbGVtZW50THVtaW5hbmNlU291cmNlO1xufShMdW1pbmFuY2VTb3VyY2VfMS5kZWZhdWx0KSk7XG5leHBvcnRzLkhUTUxDYW52YXNFbGVtZW50THVtaW5hbmNlU291cmNlID0gSFRNTENhbnZhc0VsZW1lbnRMdW1pbmFuY2VTb3VyY2U7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1IVE1MQ2FudmFzRWxlbWVudEx1bWluYW5jZVNvdXJjZS5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuVmlkZW9JbnB1dERldmljZSA9IHZvaWQgMDtcbi8qKlxuICogQGRlcHJlY2F0ZWQgTW92aW5nIHRvIEB6eGluZy9icm93c2VyXG4gKlxuICogVmlkZW8gaW5wdXQgZGV2aWNlIG1ldGFkYXRhIGNvbnRhaW5pbmcgdGhlIGlkIGFuZCBsYWJlbCBvZiB0aGUgZGV2aWNlIGlmIGF2YWlsYWJsZS5cbiAqL1xudmFyIFZpZGVvSW5wdXREZXZpY2UgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBWaWRlb0lucHV0RGV2aWNlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGRldmljZUlkIHRoZSB2aWRlbyBpbnB1dCBkZXZpY2UgaWRcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbGFiZWwgdGhlIGxhYmVsIG9mIHRoZSBkZXZpY2UgaWYgYXZhaWxhYmxlXG4gICAgICovXG4gICAgZnVuY3Rpb24gVmlkZW9JbnB1dERldmljZShkZXZpY2VJZCwgbGFiZWwsIGdyb3VwSWQpIHtcbiAgICAgICAgdGhpcy5kZXZpY2VJZCA9IGRldmljZUlkO1xuICAgICAgICB0aGlzLmxhYmVsID0gbGFiZWw7XG4gICAgICAgIC8qKiBAaW5oZXJpdGRvYyAqL1xuICAgICAgICB0aGlzLmtpbmQgPSAndmlkZW9pbnB1dCc7XG4gICAgICAgIHRoaXMuZ3JvdXBJZCA9IGdyb3VwSWQgfHwgdW5kZWZpbmVkO1xuICAgIH1cbiAgICAvKiogQGluaGVyaXRkb2MgKi9cbiAgICBWaWRlb0lucHV0RGV2aWNlLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBraW5kOiB0aGlzLmtpbmQsXG4gICAgICAgICAgICBncm91cElkOiB0aGlzLmdyb3VwSWQsXG4gICAgICAgICAgICBkZXZpY2VJZDogdGhpcy5kZXZpY2VJZCxcbiAgICAgICAgICAgIGxhYmVsOiB0aGlzLmxhYmVsLFxuICAgICAgICB9O1xuICAgIH07XG4gICAgcmV0dXJuIFZpZGVvSW5wdXREZXZpY2U7XG59KCkpO1xuZXhwb3J0cy5WaWRlb0lucHV0RGV2aWNlID0gVmlkZW9JbnB1dERldmljZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVZpZGVvSW5wdXREZXZpY2UuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xudmFyIF9fdmFsdWVzID0gKHRoaXMgJiYgdGhpcy5fX3ZhbHVlcykgfHwgZnVuY3Rpb24obykge1xuICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xuICAgICAgICB9XG4gICAgfTtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Ccm93c2VyQ29kZVJlYWRlciA9IHZvaWQgMDtcbnZhciBBcmd1bWVudEV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4uL2NvcmUvQXJndW1lbnRFeGNlcHRpb25cIik7XG52YXIgQmluYXJ5Qml0bWFwXzEgPSByZXF1aXJlKFwiLi4vY29yZS9CaW5hcnlCaXRtYXBcIik7XG52YXIgQ2hlY2tzdW1FeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuLi9jb3JlL0NoZWNrc3VtRXhjZXB0aW9uXCIpO1xudmFyIEh5YnJpZEJpbmFyaXplcl8xID0gcmVxdWlyZShcIi4uL2NvcmUvY29tbW9uL0h5YnJpZEJpbmFyaXplclwiKTtcbnZhciBGb3JtYXRFeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuLi9jb3JlL0Zvcm1hdEV4Y2VwdGlvblwiKTtcbnZhciBOb3RGb3VuZEV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4uL2NvcmUvTm90Rm91bmRFeGNlcHRpb25cIik7XG52YXIgSFRNTENhbnZhc0VsZW1lbnRMdW1pbmFuY2VTb3VyY2VfMSA9IHJlcXVpcmUoXCIuL0hUTUxDYW52YXNFbGVtZW50THVtaW5hbmNlU291cmNlXCIpO1xudmFyIFZpZGVvSW5wdXREZXZpY2VfMSA9IHJlcXVpcmUoXCIuL1ZpZGVvSW5wdXREZXZpY2VcIik7XG4vKipcbiAqIEBkZXByZWNhdGVkIE1vdmluZyB0byBAenhpbmcvYnJvd3NlclxuICpcbiAqIEJhc2UgY2xhc3MgZm9yIGJyb3dzZXIgY29kZSByZWFkZXIuXG4gKi9cbnZhciBCcm93c2VyQ29kZVJlYWRlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIEJyb3dzZXJDb2RlUmVhZGVyLlxuICAgICAqIEBwYXJhbSB7UmVhZGVyfSByZWFkZXIgVGhlIHJlYWRlciBpbnN0YW5jZSB0byBkZWNvZGUgdGhlIGJhcmNvZGVcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3RpbWVCZXR3ZWVuU2NhbnNNaWxsaXM9NTAwXSB0aGUgdGltZSBkZWxheSBiZXR3ZWVuIHN1YnNlcXVlbnQgc3VjY2Vzc2Z1bCBkZWNvZGUgdHJpZXNcbiAgICAgKlxuICAgICAqIEBtZW1iZXJPZiBCcm93c2VyQ29kZVJlYWRlclxuICAgICAqL1xuICAgIGZ1bmN0aW9uIEJyb3dzZXJDb2RlUmVhZGVyKHJlYWRlciwgdGltZUJldHdlZW5TY2Fuc01pbGxpcywgX2hpbnRzKSB7XG4gICAgICAgIGlmICh0aW1lQmV0d2VlblNjYW5zTWlsbGlzID09PSB2b2lkIDApIHsgdGltZUJldHdlZW5TY2Fuc01pbGxpcyA9IDUwMDsgfVxuICAgICAgICB0aGlzLnJlYWRlciA9IHJlYWRlcjtcbiAgICAgICAgdGhpcy50aW1lQmV0d2VlblNjYW5zTWlsbGlzID0gdGltZUJldHdlZW5TY2Fuc01pbGxpcztcbiAgICAgICAgdGhpcy5faGludHMgPSBfaGludHM7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGlzIHdpbGwgYnJlYWsgdGhlIGxvb3AuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLl9zdG9wQ29udGludW91c0RlY29kZSA9IGZhbHNlO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhpcyB3aWxsIGJyZWFrIHRoZSBsb29wLlxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5fc3RvcEFzeW5jRGVjb2RlID0gZmFsc2U7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZWxheSB0aW1lIGJldHdlZW4gZGVjb2RlIGF0dGVtcHRzIG1hZGUgYnkgdGhlIHNjYW5uZXIuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLl90aW1lQmV0d2VlbkRlY29kaW5nQXR0ZW1wdHMgPSAwO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQnJvd3NlckNvZGVSZWFkZXIucHJvdG90eXBlLCBcImhhc05hdmlnYXRvclwiLCB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJZiBuYXZpZ2F0b3IgaXMgcHJlc2VudC5cbiAgICAgICAgICovXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEJyb3dzZXJDb2RlUmVhZGVyLnByb3RvdHlwZSwgXCJpc01lZGlhRGV2aWNlc1N1cG9ydGVkXCIsIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIElmIG1lZGlhRGV2aWNlcyB1bmRlciBuYXZpZ2F0b3IgaXMgc3VwcG9ydGVkLlxuICAgICAgICAgKi9cbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5oYXNOYXZpZ2F0b3IgJiYgISFuYXZpZ2F0b3IubWVkaWFEZXZpY2VzO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEJyb3dzZXJDb2RlUmVhZGVyLnByb3RvdHlwZSwgXCJjYW5FbnVtZXJhdGVEZXZpY2VzXCIsIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIElmIGVudW1lcmF0ZURldmljZXMgdW5kZXIgbmF2aWdhdG9yIGlzIHN1cHBvcnRlZC5cbiAgICAgICAgICovXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuICEhKHRoaXMuaXNNZWRpYURldmljZXNTdXBvcnRlZCAmJiBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmVudW1lcmF0ZURldmljZXMpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEJyb3dzZXJDb2RlUmVhZGVyLnByb3RvdHlwZSwgXCJ0aW1lQmV0d2VlbkRlY29kaW5nQXR0ZW1wdHNcIiwge1xuICAgICAgICAvKiogVGltZSBiZXR3ZWVuIHR3byBkZWNvZGluZyB0cmllcyBpbiBtaWxsaSBzZWNvbmRzLiAqL1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl90aW1lQmV0d2VlbkRlY29kaW5nQXR0ZW1wdHM7XG4gICAgICAgIH0sXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDaGFuZ2UgdGhlIHRpbWUgc3BhbiB0aGUgZGVjb2RlciB3YWl0cyBiZXR3ZWVuIHR3byBkZWNvZGluZyB0cmllcy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IG1pbGxpcyBUaW1lIGJldHdlZW4gdHdvIGRlY29kaW5nIHRyaWVzIGluIG1pbGxpIHNlY29uZHMuXG4gICAgICAgICAqL1xuICAgICAgICBzZXQ6IGZ1bmN0aW9uIChtaWxsaXMpIHtcbiAgICAgICAgICAgIHRoaXMuX3RpbWVCZXR3ZWVuRGVjb2RpbmdBdHRlbXB0cyA9IG1pbGxpcyA8IDAgPyAwIDogbWlsbGlzO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEJyb3dzZXJDb2RlUmVhZGVyLnByb3RvdHlwZSwgXCJoaW50c1wiLCB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTZXRzIHRoZSBoaW50cy5cbiAgICAgICAgICovXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2hpbnRzO1xuICAgICAgICB9LFxuICAgICAgICAvKipcbiAgICAgICAgICogU2V0cyB0aGUgaGludHMuXG4gICAgICAgICAqL1xuICAgICAgICBzZXQ6IGZ1bmN0aW9uIChoaW50cykge1xuICAgICAgICAgICAgdGhpcy5faGludHMgPSBoaW50cyB8fCBudWxsO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgLyoqXG4gICAgICogTGlzdHMgYWxsIHRoZSBhdmFpbGFibGUgdmlkZW8gaW5wdXQgZGV2aWNlcy5cbiAgICAgKi9cbiAgICBCcm93c2VyQ29kZVJlYWRlci5wcm90b3R5cGUubGlzdFZpZGVvSW5wdXREZXZpY2VzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgZGV2aWNlcywgdmlkZW9EZXZpY2VzLCBkZXZpY2VzXzEsIGRldmljZXNfMV8xLCBkZXZpY2UsIGtpbmQsIGRldmljZUlkLCBsYWJlbCwgZ3JvdXBJZCwgdmlkZW9EZXZpY2U7XG4gICAgICAgICAgICB2YXIgZV8xLCBfYTtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2IpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9iLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5oYXNOYXZpZ2F0b3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NhblxcJ3QgZW51bWVyYXRlIGRldmljZXMsIG5hdmlnYXRvciBpcyBub3QgcHJlc2VudC4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5jYW5FbnVtZXJhdGVEZXZpY2VzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5cXCd0IGVudW1lcmF0ZSBkZXZpY2VzLCBtZXRob2Qgbm90IHN1cHBvcnRlZC4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIG5hdmlnYXRvci5tZWRpYURldmljZXMuZW51bWVyYXRlRGV2aWNlcygpXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlcyA9IF9iLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvRGV2aWNlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGRldmljZXNfMSA9IF9fdmFsdWVzKGRldmljZXMpLCBkZXZpY2VzXzFfMSA9IGRldmljZXNfMS5uZXh0KCk7ICFkZXZpY2VzXzFfMS5kb25lOyBkZXZpY2VzXzFfMSA9IGRldmljZXNfMS5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlID0gZGV2aWNlc18xXzEudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQgPSBkZXZpY2Uua2luZCA9PT0gJ3ZpZGVvJyA/ICd2aWRlb2lucHV0JyA6IGRldmljZS5raW5kO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2luZCAhPT0gJ3ZpZGVvaW5wdXQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VJZCA9IGRldmljZS5kZXZpY2VJZCB8fCBkZXZpY2UuaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gZGV2aWNlLmxhYmVsIHx8IFwiVmlkZW8gZGV2aWNlIFwiICsgKHZpZGVvRGV2aWNlcy5sZW5ndGggKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBJZCA9IGRldmljZS5ncm91cElkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb0RldmljZSA9IHsgZGV2aWNlSWQ6IGRldmljZUlkLCBsYWJlbDogbGFiZWwsIGtpbmQ6IGtpbmQsIGdyb3VwSWQ6IGdyb3VwSWQgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9EZXZpY2VzLnB1c2godmlkZW9EZXZpY2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9XG4gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGV2aWNlc18xXzEgJiYgIWRldmljZXNfMV8xLmRvbmUgJiYgKF9hID0gZGV2aWNlc18xLnJldHVybikpIF9hLmNhbGwoZGV2aWNlc18xKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi8sIHZpZGVvRGV2aWNlc107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogT2J0YWluIHRoZSBsaXN0IG9mIGF2YWlsYWJsZSBkZXZpY2VzIHdpdGggdHlwZSAndmlkZW9pbnB1dCcuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTxWaWRlb0lucHV0RGV2aWNlW10+fSBhbiBhcnJheSBvZiBhdmFpbGFibGUgdmlkZW8gaW5wdXQgZGV2aWNlc1xuICAgICAqXG4gICAgICogQG1lbWJlck9mIEJyb3dzZXJDb2RlUmVhZGVyXG4gICAgICpcbiAgICAgKiBAZGVwcmVjYXRlZCBVc2UgYGxpc3RWaWRlb0lucHV0RGV2aWNlc2AgaW5zdGVhZC5cbiAgICAgKi9cbiAgICBCcm93c2VyQ29kZVJlYWRlci5wcm90b3R5cGUuZ2V0VmlkZW9JbnB1dERldmljZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBkZXZpY2VzO1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gWzQgLyp5aWVsZCovLCB0aGlzLmxpc3RWaWRlb0lucHV0RGV2aWNlcygpXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlcyA9IF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovLCBkZXZpY2VzLm1hcChmdW5jdGlvbiAoZCkgeyByZXR1cm4gbmV3IFZpZGVvSW5wdXREZXZpY2VfMS5WaWRlb0lucHV0RGV2aWNlKGQuZGV2aWNlSWQsIGQubGFiZWwpOyB9KV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogTGV0J3MgeW91IGZpbmQgYSBkZXZpY2UgdXNpbmcgaXQncyBJZC5cbiAgICAgKi9cbiAgICBCcm93c2VyQ29kZVJlYWRlci5wcm90b3R5cGUuZmluZERldmljZUJ5SWQgPSBmdW5jdGlvbiAoZGV2aWNlSWQpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGRldmljZXM7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6IHJldHVybiBbNCAvKnlpZWxkKi8sIHRoaXMubGlzdFZpZGVvSW5wdXREZXZpY2VzKCldO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VzID0gX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFkZXZpY2VzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi8sIG51bGxdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi8sIGRldmljZXMuZmluZChmdW5jdGlvbiAoeCkgeyByZXR1cm4geC5kZXZpY2VJZCA9PT0gZGV2aWNlSWQ7IH0pXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBEZWNvZGVzIHRoZSBiYXJjb2RlIGZyb20gdGhlIGRldmljZSBzcGVjaWZpZWQgYnkgZGV2aWNlSWQgd2hpbGUgc2hvd2luZyB0aGUgdmlkZW8gaW4gdGhlIHNwZWNpZmllZCB2aWRlbyBlbGVtZW50LlxuICAgICAqXG4gICAgICogQHBhcmFtIGRldmljZUlkIHRoZSBpZCBvZiBvbmUgb2YgdGhlIGRldmljZXMgb2J0YWluZWQgYWZ0ZXIgY2FsbGluZyBnZXRWaWRlb0lucHV0RGV2aWNlcy4gQ2FuIGJlIHVuZGVmaW5lZCwgaW4gdGhpcyBjYXNlIGl0IHdpbGwgZGVjb2RlIGZyb20gb25lIG9mIHRoZSBhdmFpbGFibGUgZGV2aWNlcywgcHJlZmZlcmluZyB0aGUgbWFpbiBjYW1lcmEgKGVudmlyb25tZW50IGZhY2luZykgaWYgYXZhaWxhYmxlLlxuICAgICAqIEBwYXJhbSB2aWRlbyB0aGUgdmlkZW8gZWxlbWVudCBpbiBwYWdlIHdoZXJlIHRvIHNob3cgdGhlIHZpZGVvIHdoaWxlIGRlY29kaW5nLiBDYW4gYmUgZWl0aGVyIGFuIGVsZW1lbnQgaWQgb3IgZGlyZWN0bHkgYW4gSFRNTFZpZGVvRWxlbWVudC4gQ2FuIGJlIHVuZGVmaW5lZCwgaW4gd2hpY2ggY2FzZSBubyB2aWRlbyB3aWxsIGJlIHNob3duLlxuICAgICAqIEByZXR1cm5zIFRoZSBkZWNvZGluZyByZXN1bHQuXG4gICAgICpcbiAgICAgKiBAbWVtYmVyT2YgQnJvd3NlckNvZGVSZWFkZXJcbiAgICAgKlxuICAgICAqIEBkZXByZWNhdGVkIFVzZSBgZGVjb2RlT25jZUZyb21WaWRlb0RldmljZWAgaW5zdGVhZC5cbiAgICAgKi9cbiAgICBCcm93c2VyQ29kZVJlYWRlci5wcm90b3R5cGUuZGVjb2RlRnJvbUlucHV0VmlkZW9EZXZpY2UgPSBmdW5jdGlvbiAoZGV2aWNlSWQsIHZpZGVvU291cmNlKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDogcmV0dXJuIFs0IC8qeWllbGQqLywgdGhpcy5kZWNvZGVPbmNlRnJvbVZpZGVvRGV2aWNlKGRldmljZUlkLCB2aWRlb1NvdXJjZSldO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6IHJldHVybiBbMiAvKnJldHVybiovLCBfYS5zZW50KCldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEluIG9uZSBhdHRlbXB0LCB0cmllcyB0byBkZWNvZGUgdGhlIGJhcmNvZGUgZnJvbSB0aGUgZGV2aWNlIHNwZWNpZmllZCBieSBkZXZpY2VJZCB3aGlsZSBzaG93aW5nIHRoZSB2aWRlbyBpbiB0aGUgc3BlY2lmaWVkIHZpZGVvIGVsZW1lbnQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGV2aWNlSWQgdGhlIGlkIG9mIG9uZSBvZiB0aGUgZGV2aWNlcyBvYnRhaW5lZCBhZnRlciBjYWxsaW5nIGdldFZpZGVvSW5wdXREZXZpY2VzLiBDYW4gYmUgdW5kZWZpbmVkLCBpbiB0aGlzIGNhc2UgaXQgd2lsbCBkZWNvZGUgZnJvbSBvbmUgb2YgdGhlIGF2YWlsYWJsZSBkZXZpY2VzLCBwcmVmZmVyaW5nIHRoZSBtYWluIGNhbWVyYSAoZW52aXJvbm1lbnQgZmFjaW5nKSBpZiBhdmFpbGFibGUuXG4gICAgICogQHBhcmFtIHZpZGVvIHRoZSB2aWRlbyBlbGVtZW50IGluIHBhZ2Ugd2hlcmUgdG8gc2hvdyB0aGUgdmlkZW8gd2hpbGUgZGVjb2RpbmcuIENhbiBiZSBlaXRoZXIgYW4gZWxlbWVudCBpZCBvciBkaXJlY3RseSBhbiBIVE1MVmlkZW9FbGVtZW50LiBDYW4gYmUgdW5kZWZpbmVkLCBpbiB3aGljaCBjYXNlIG5vIHZpZGVvIHdpbGwgYmUgc2hvd24uXG4gICAgICogQHJldHVybnMgVGhlIGRlY29kaW5nIHJlc3VsdC5cbiAgICAgKlxuICAgICAqIEBtZW1iZXJPZiBCcm93c2VyQ29kZVJlYWRlclxuICAgICAqL1xuICAgIEJyb3dzZXJDb2RlUmVhZGVyLnByb3RvdHlwZS5kZWNvZGVPbmNlRnJvbVZpZGVvRGV2aWNlID0gZnVuY3Rpb24gKGRldmljZUlkLCB2aWRlb1NvdXJjZSkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgdmlkZW9Db25zdHJhaW50cywgY29uc3RyYWludHM7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWRldmljZUlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9Db25zdHJhaW50cyA9IHsgZmFjaW5nTW9kZTogJ2Vudmlyb25tZW50JyB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9Db25zdHJhaW50cyA9IHsgZGV2aWNlSWQ6IHsgZXhhY3Q6IGRldmljZUlkIH0gfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cmFpbnRzID0geyB2aWRlbzogdmlkZW9Db25zdHJhaW50cyB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgdGhpcy5kZWNvZGVPbmNlRnJvbUNvbnN0cmFpbnRzKGNvbnN0cmFpbnRzLCB2aWRlb1NvdXJjZSldO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6IHJldHVybiBbMiAvKnJldHVybiovLCBfYS5zZW50KCldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEluIG9uZSBhdHRlbXB0LCB0cmllcyB0byBkZWNvZGUgdGhlIGJhcmNvZGUgZnJvbSBhIHN0cmVhbSBvYnRhaW5lZCBmcm9tIHRoZSBnaXZlbiBjb25zdHJhaW50cyB3aGlsZSBzaG93aW5nIHRoZSB2aWRlbyBpbiB0aGUgc3BlY2lmaWVkIHZpZGVvIGVsZW1lbnQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29uc3RyYWludHMgdGhlIG1lZGlhIHN0cmVhbSBjb25zdHJhaW50cyB0byBnZXQgcyB2YWxpZCBtZWRpYSBzdHJlYW0gdG8gZGVjb2RlIGZyb21cbiAgICAgKiBAcGFyYW0gdmlkZW8gdGhlIHZpZGVvIGVsZW1lbnQgaW4gcGFnZSB3aGVyZSB0byBzaG93IHRoZSB2aWRlbyB3aGlsZSBkZWNvZGluZy4gQ2FuIGJlIGVpdGhlciBhbiBlbGVtZW50IGlkIG9yIGRpcmVjdGx5IGFuIEhUTUxWaWRlb0VsZW1lbnQuIENhbiBiZSB1bmRlZmluZWQsIGluIHdoaWNoIGNhc2Ugbm8gdmlkZW8gd2lsbCBiZSBzaG93bi5cbiAgICAgKiBAcmV0dXJucyBUaGUgZGVjb2RpbmcgcmVzdWx0LlxuICAgICAqXG4gICAgICogQG1lbWJlck9mIEJyb3dzZXJDb2RlUmVhZGVyXG4gICAgICovXG4gICAgQnJvd3NlckNvZGVSZWFkZXIucHJvdG90eXBlLmRlY29kZU9uY2VGcm9tQ29uc3RyYWludHMgPSBmdW5jdGlvbiAoY29uc3RyYWludHMsIHZpZGVvU291cmNlKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBzdHJlYW07XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6IHJldHVybiBbNCAvKnlpZWxkKi8sIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKGNvbnN0cmFpbnRzKV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbSA9IF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIHRoaXMuZGVjb2RlT25jZUZyb21TdHJlYW0oc3RyZWFtLCB2aWRlb1NvdXJjZSldO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6IHJldHVybiBbMiAvKnJldHVybiovLCBfYS5zZW50KCldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEluIG9uZSBhdHRlbXB0LCB0cmllcyB0byBkZWNvZGUgdGhlIGJhcmNvZGUgZnJvbSBhIHN0cmVhbSBvYnRhaW5lZCBmcm9tIHRoZSBnaXZlbiBjb25zdHJhaW50cyB3aGlsZSBzaG93aW5nIHRoZSB2aWRlbyBpbiB0aGUgc3BlY2lmaWVkIHZpZGVvIGVsZW1lbnQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge01lZGlhU3RyZWFtfSBbY29uc3RyYWludHNdIHRoZSBtZWRpYSBzdHJlYW0gY29uc3RyYWludHMgdG8gZ2V0IHMgdmFsaWQgbWVkaWEgc3RyZWFtIHRvIGRlY29kZSBmcm9tXG4gICAgICogQHBhcmFtIHtzdHJpbmd8SFRNTFZpZGVvRWxlbWVudH0gW3ZpZGVvXSB0aGUgdmlkZW8gZWxlbWVudCBpbiBwYWdlIHdoZXJlIHRvIHNob3cgdGhlIHZpZGVvIHdoaWxlIGRlY29kaW5nLiBDYW4gYmUgZWl0aGVyIGFuIGVsZW1lbnQgaWQgb3IgZGlyZWN0bHkgYW4gSFRNTFZpZGVvRWxlbWVudC4gQ2FuIGJlIHVuZGVmaW5lZCwgaW4gd2hpY2ggY2FzZSBubyB2aWRlbyB3aWxsIGJlIHNob3duLlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPFJlc3VsdD59IFRoZSBkZWNvZGluZyByZXN1bHQuXG4gICAgICpcbiAgICAgKiBAbWVtYmVyT2YgQnJvd3NlckNvZGVSZWFkZXJcbiAgICAgKi9cbiAgICBCcm93c2VyQ29kZVJlYWRlci5wcm90b3R5cGUuZGVjb2RlT25jZUZyb21TdHJlYW0gPSBmdW5jdGlvbiAoc3RyZWFtLCB2aWRlb1NvdXJjZSkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgdmlkZW8sIHJlc3VsdDtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIHRoaXMuYXR0YWNoU3RyZWFtVG9WaWRlbyhzdHJlYW0sIHZpZGVvU291cmNlKV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvID0gX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgdGhpcy5kZWNvZGVPbmNlKHZpZGVvKV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovLCByZXN1bHRdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIENvbnRpbnVvdXNseSBkZWNvZGVzIHRoZSBiYXJjb2RlIGZyb20gdGhlIGRldmljZSBzcGVjaWZpZWQgYnkgZGV2aWNlIHdoaWxlIHNob3dpbmcgdGhlIHZpZGVvIGluIHRoZSBzcGVjaWZpZWQgdmlkZW8gZWxlbWVudC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfG51bGx9IFtkZXZpY2VJZF0gdGhlIGlkIG9mIG9uZSBvZiB0aGUgZGV2aWNlcyBvYnRhaW5lZCBhZnRlciBjYWxsaW5nIGdldFZpZGVvSW5wdXREZXZpY2VzLiBDYW4gYmUgdW5kZWZpbmVkLCBpbiB0aGlzIGNhc2UgaXQgd2lsbCBkZWNvZGUgZnJvbSBvbmUgb2YgdGhlIGF2YWlsYWJsZSBkZXZpY2VzLCBwcmVmZmVyaW5nIHRoZSBtYWluIGNhbWVyYSAoZW52aXJvbm1lbnQgZmFjaW5nKSBpZiBhdmFpbGFibGUuXG4gICAgICogQHBhcmFtIHtzdHJpbmd8SFRNTFZpZGVvRWxlbWVudHxudWxsfSBbdmlkZW9dIHRoZSB2aWRlbyBlbGVtZW50IGluIHBhZ2Ugd2hlcmUgdG8gc2hvdyB0aGUgdmlkZW8gd2hpbGUgZGVjb2RpbmcuIENhbiBiZSBlaXRoZXIgYW4gZWxlbWVudCBpZCBvciBkaXJlY3RseSBhbiBIVE1MVmlkZW9FbGVtZW50LiBDYW4gYmUgdW5kZWZpbmVkLCBpbiB3aGljaCBjYXNlIG5vIHZpZGVvIHdpbGwgYmUgc2hvd24uXG4gICAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAgICpcbiAgICAgKiBAbWVtYmVyT2YgQnJvd3NlckNvZGVSZWFkZXJcbiAgICAgKlxuICAgICAqIEBkZXByZWNhdGVkIFVzZSBgZGVjb2RlRnJvbVZpZGVvRGV2aWNlYCBpbnN0ZWFkLlxuICAgICAqL1xuICAgIEJyb3dzZXJDb2RlUmVhZGVyLnByb3RvdHlwZS5kZWNvZGVGcm9tSW5wdXRWaWRlb0RldmljZUNvbnRpbnVvdXNseSA9IGZ1bmN0aW9uIChkZXZpY2VJZCwgdmlkZW9Tb3VyY2UsIGNhbGxiYWNrRm4pIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gWzQgLyp5aWVsZCovLCB0aGlzLmRlY29kZUZyb21WaWRlb0RldmljZShkZXZpY2VJZCwgdmlkZW9Tb3VyY2UsIGNhbGxiYWNrRm4pXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOiByZXR1cm4gWzIgLypyZXR1cm4qLywgX2Euc2VudCgpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBDb250aW51b3VzbHkgdHJpZXMgdG8gZGVjb2RlIHRoZSBiYXJjb2RlIGZyb20gdGhlIGRldmljZSBzcGVjaWZpZWQgYnkgZGV2aWNlIHdoaWxlIHNob3dpbmcgdGhlIHZpZGVvIGluIHRoZSBzcGVjaWZpZWQgdmlkZW8gZWxlbWVudC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfG51bGx9IFtkZXZpY2VJZF0gdGhlIGlkIG9mIG9uZSBvZiB0aGUgZGV2aWNlcyBvYnRhaW5lZCBhZnRlciBjYWxsaW5nIGdldFZpZGVvSW5wdXREZXZpY2VzLiBDYW4gYmUgdW5kZWZpbmVkLCBpbiB0aGlzIGNhc2UgaXQgd2lsbCBkZWNvZGUgZnJvbSBvbmUgb2YgdGhlIGF2YWlsYWJsZSBkZXZpY2VzLCBwcmVmZmVyaW5nIHRoZSBtYWluIGNhbWVyYSAoZW52aXJvbm1lbnQgZmFjaW5nKSBpZiBhdmFpbGFibGUuXG4gICAgICogQHBhcmFtIHtzdHJpbmd8SFRNTFZpZGVvRWxlbWVudHxudWxsfSBbdmlkZW9dIHRoZSB2aWRlbyBlbGVtZW50IGluIHBhZ2Ugd2hlcmUgdG8gc2hvdyB0aGUgdmlkZW8gd2hpbGUgZGVjb2RpbmcuIENhbiBiZSBlaXRoZXIgYW4gZWxlbWVudCBpZCBvciBkaXJlY3RseSBhbiBIVE1MVmlkZW9FbGVtZW50LiBDYW4gYmUgdW5kZWZpbmVkLCBpbiB3aGljaCBjYXNlIG5vIHZpZGVvIHdpbGwgYmUgc2hvd24uXG4gICAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAgICpcbiAgICAgKiBAbWVtYmVyT2YgQnJvd3NlckNvZGVSZWFkZXJcbiAgICAgKi9cbiAgICBCcm93c2VyQ29kZVJlYWRlci5wcm90b3R5cGUuZGVjb2RlRnJvbVZpZGVvRGV2aWNlID0gZnVuY3Rpb24gKGRldmljZUlkLCB2aWRlb1NvdXJjZSwgY2FsbGJhY2tGbikge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgdmlkZW9Db25zdHJhaW50cywgY29uc3RyYWludHM7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWRldmljZUlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9Db25zdHJhaW50cyA9IHsgZmFjaW5nTW9kZTogJ2Vudmlyb25tZW50JyB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9Db25zdHJhaW50cyA9IHsgZGV2aWNlSWQ6IHsgZXhhY3Q6IGRldmljZUlkIH0gfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cmFpbnRzID0geyB2aWRlbzogdmlkZW9Db25zdHJhaW50cyB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgdGhpcy5kZWNvZGVGcm9tQ29uc3RyYWludHMoY29uc3RyYWludHMsIHZpZGVvU291cmNlLCBjYWxsYmFja0ZuKV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTogcmV0dXJuIFsyIC8qcmV0dXJuKi8sIF9hLnNlbnQoKV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQ29udGludW91c2x5IHRyaWVzIHRvIGRlY29kZSB0aGUgYmFyY29kZSBmcm9tIGEgc3RyZWFtIG9idGFpbmVkIGZyb20gdGhlIGdpdmVuIGNvbnN0cmFpbnRzIHdoaWxlIHNob3dpbmcgdGhlIHZpZGVvIGluIHRoZSBzcGVjaWZpZWQgdmlkZW8gZWxlbWVudC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7TWVkaWFTdHJlYW19IFtjb25zdHJhaW50c10gdGhlIG1lZGlhIHN0cmVhbSBjb25zdHJhaW50cyB0byBnZXQgcyB2YWxpZCBtZWRpYSBzdHJlYW0gdG8gZGVjb2RlIGZyb21cbiAgICAgKiBAcGFyYW0ge3N0cmluZ3xIVE1MVmlkZW9FbGVtZW50fSBbdmlkZW9dIHRoZSB2aWRlbyBlbGVtZW50IGluIHBhZ2Ugd2hlcmUgdG8gc2hvdyB0aGUgdmlkZW8gd2hpbGUgZGVjb2RpbmcuIENhbiBiZSBlaXRoZXIgYW4gZWxlbWVudCBpZCBvciBkaXJlY3RseSBhbiBIVE1MVmlkZW9FbGVtZW50LiBDYW4gYmUgdW5kZWZpbmVkLCBpbiB3aGljaCBjYXNlIG5vIHZpZGVvIHdpbGwgYmUgc2hvd24uXG4gICAgICogQHJldHVybnMge1Byb21pc2U8UmVzdWx0Pn0gVGhlIGRlY29kaW5nIHJlc3VsdC5cbiAgICAgKlxuICAgICAqIEBtZW1iZXJPZiBCcm93c2VyQ29kZVJlYWRlclxuICAgICAqL1xuICAgIEJyb3dzZXJDb2RlUmVhZGVyLnByb3RvdHlwZS5kZWNvZGVGcm9tQ29uc3RyYWludHMgPSBmdW5jdGlvbiAoY29uc3RyYWludHMsIHZpZGVvU291cmNlLCBjYWxsYmFja0ZuKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBzdHJlYW07XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6IHJldHVybiBbNCAvKnlpZWxkKi8sIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKGNvbnN0cmFpbnRzKV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbSA9IF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIHRoaXMuZGVjb2RlRnJvbVN0cmVhbShzdHJlYW0sIHZpZGVvU291cmNlLCBjYWxsYmFja0ZuKV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjogcmV0dXJuIFsyIC8qcmV0dXJuKi8sIF9hLnNlbnQoKV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogSW4gb25lIGF0dGVtcHQsIHRyaWVzIHRvIGRlY29kZSB0aGUgYmFyY29kZSBmcm9tIGEgc3RyZWFtIG9idGFpbmVkIGZyb20gdGhlIGdpdmVuIGNvbnN0cmFpbnRzIHdoaWxlIHNob3dpbmcgdGhlIHZpZGVvIGluIHRoZSBzcGVjaWZpZWQgdmlkZW8gZWxlbWVudC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7TWVkaWFTdHJlYW19IFtjb25zdHJhaW50c10gdGhlIG1lZGlhIHN0cmVhbSBjb25zdHJhaW50cyB0byBnZXQgcyB2YWxpZCBtZWRpYSBzdHJlYW0gdG8gZGVjb2RlIGZyb21cbiAgICAgKiBAcGFyYW0ge3N0cmluZ3xIVE1MVmlkZW9FbGVtZW50fSBbdmlkZW9dIHRoZSB2aWRlbyBlbGVtZW50IGluIHBhZ2Ugd2hlcmUgdG8gc2hvdyB0aGUgdmlkZW8gd2hpbGUgZGVjb2RpbmcuIENhbiBiZSBlaXRoZXIgYW4gZWxlbWVudCBpZCBvciBkaXJlY3RseSBhbiBIVE1MVmlkZW9FbGVtZW50LiBDYW4gYmUgdW5kZWZpbmVkLCBpbiB3aGljaCBjYXNlIG5vIHZpZGVvIHdpbGwgYmUgc2hvd24uXG4gICAgICogQHJldHVybnMge1Byb21pc2U8UmVzdWx0Pn0gVGhlIGRlY29kaW5nIHJlc3VsdC5cbiAgICAgKlxuICAgICAqIEBtZW1iZXJPZiBCcm93c2VyQ29kZVJlYWRlclxuICAgICAqL1xuICAgIEJyb3dzZXJDb2RlUmVhZGVyLnByb3RvdHlwZS5kZWNvZGVGcm9tU3RyZWFtID0gZnVuY3Rpb24gKHN0cmVhbSwgdmlkZW9Tb3VyY2UsIGNhbGxiYWNrRm4pIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHZpZGVvO1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgdGhpcy5hdHRhY2hTdHJlYW1Ub1ZpZGVvKHN0cmVhbSwgdmlkZW9Tb3VyY2UpXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW8gPSBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCB0aGlzLmRlY29kZUNvbnRpbnVvdXNseSh2aWRlbywgY2FsbGJhY2tGbildO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6IHJldHVybiBbMiAvKnJldHVybiovLCBfYS5zZW50KCldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEJyZWFrcyB0aGUgZGVjb2RpbmcgbG9vcC5cbiAgICAgKi9cbiAgICBCcm93c2VyQ29kZVJlYWRlci5wcm90b3R5cGUuc3RvcEFzeW5jRGVjb2RlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLl9zdG9wQXN5bmNEZWNvZGUgPSB0cnVlO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQnJlYWtzIHRoZSBkZWNvZGluZyBsb29wLlxuICAgICAqL1xuICAgIEJyb3dzZXJDb2RlUmVhZGVyLnByb3RvdHlwZS5zdG9wQ29udGludW91c0RlY29kZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5fc3RvcENvbnRpbnVvdXNEZWNvZGUgPSB0cnVlO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgbmV3IHN0cmVhbSBhbmQgcmVxdWVzdCBhIG5ldyBkZWNvZGluZy13aXRoLWRlbGF5LlxuICAgICAqXG4gICAgICogQHBhcmFtIHN0cmVhbSBUaGUgc3RyZWFtIHRvIGJlIHNob3duIGluIHRoZSB2aWRlbyBlbGVtZW50LlxuICAgICAqIEBwYXJhbSBkZWNvZGVGbiBBIGNhbGxiYWNrIGZvciB0aGUgZGVjb2RlIG1ldGhvZC5cbiAgICAgKi9cbiAgICBCcm93c2VyQ29kZVJlYWRlci5wcm90b3R5cGUuYXR0YWNoU3RyZWFtVG9WaWRlbyA9IGZ1bmN0aW9uIChzdHJlYW0sIHZpZGVvU291cmNlKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB2aWRlb0VsZW1lbnQ7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICB2aWRlb0VsZW1lbnQgPSB0aGlzLnByZXBhcmVWaWRlb0VsZW1lbnQodmlkZW9Tb3VyY2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRWaWRlb1NvdXJjZSh2aWRlb0VsZW1lbnQsIHN0cmVhbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZGVvRWxlbWVudCA9IHZpZGVvRWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RyZWFtID0gc3RyZWFtO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgdGhpcy5wbGF5VmlkZW9PbkxvYWRBc3luYyh2aWRlb0VsZW1lbnQpXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi8sIHZpZGVvRWxlbWVudF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmlkZW9FbGVtZW50XG4gICAgICovXG4gICAgQnJvd3NlckNvZGVSZWFkZXIucHJvdG90eXBlLnBsYXlWaWRlb09uTG9hZEFzeW5jID0gZnVuY3Rpb24gKHZpZGVvRWxlbWVudCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyByZXR1cm4gX3RoaXMucGxheVZpZGVvT25Mb2FkKHZpZGVvRWxlbWVudCwgZnVuY3Rpb24gKCkgeyByZXR1cm4gcmVzb2x2ZSgpOyB9KTsgfSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBCaW5kcyBsaXN0ZW5lcnMgYW5kIGNhbGxiYWNrcyB0byB0aGUgdmlkZW9FbGVtZW50LlxuICAgICAqXG4gICAgICogQHBhcmFtIGVsZW1lbnRcbiAgICAgKiBAcGFyYW0gY2FsbGJhY2tGblxuICAgICAqL1xuICAgIEJyb3dzZXJDb2RlUmVhZGVyLnByb3RvdHlwZS5wbGF5VmlkZW9PbkxvYWQgPSBmdW5jdGlvbiAoZWxlbWVudCwgY2FsbGJhY2tGbikge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB0aGlzLnZpZGVvRW5kZWRMaXN0ZW5lciA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF90aGlzLnN0b3BTdHJlYW1zKCk7IH07XG4gICAgICAgIHRoaXMudmlkZW9DYW5QbGF5TGlzdGVuZXIgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBfdGhpcy50cnlQbGF5VmlkZW8oZWxlbWVudCk7IH07XG4gICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZW5kZWQnLCB0aGlzLnZpZGVvRW5kZWRMaXN0ZW5lcik7XG4gICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2FucGxheScsIHRoaXMudmlkZW9DYW5QbGF5TGlzdGVuZXIpO1xuICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3BsYXlpbmcnLCBjYWxsYmFja0ZuKTtcbiAgICAgICAgLy8gaWYgY2FucGxheSB3YXMgYWxyZWFkeSBmaXJlZCwgd2Ugd29uJ3Qga25vdyB3aGVuIHRvIHBsYXksIHNvIGp1c3QgZ2l2ZSBpdCBhIHRyeVxuICAgICAgICB0aGlzLnRyeVBsYXlWaWRlbyhlbGVtZW50KTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gdmlkZW8gZWxlbWVudCBpcyBjdXJyZW50bHkgcGxheWluZy5cbiAgICAgKi9cbiAgICBCcm93c2VyQ29kZVJlYWRlci5wcm90b3R5cGUuaXNWaWRlb1BsYXlpbmcgPSBmdW5jdGlvbiAodmlkZW8pIHtcbiAgICAgICAgcmV0dXJuIHZpZGVvLmN1cnJlbnRUaW1lID4gMCAmJiAhdmlkZW8ucGF1c2VkICYmICF2aWRlby5lbmRlZCAmJiB2aWRlby5yZWFkeVN0YXRlID4gMjtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEp1c3QgdHJpZXMgdG8gcGxheSB0aGUgdmlkZW8gYW5kIGxvZ3MgYW55IGVycm9ycy5cbiAgICAgKiBUaGUgcGxheSBjYWxsIGlzIG9ubHkgbWFkZSBpcyB0aGUgdmlkZW8gaXMgbm90IGFscmVhZHkgcGxheWluZy5cbiAgICAgKi9cbiAgICBCcm93c2VyQ29kZVJlYWRlci5wcm90b3R5cGUudHJ5UGxheVZpZGVvID0gZnVuY3Rpb24gKHZpZGVvRWxlbWVudCkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9iKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChfYi5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1ZpZGVvUGxheWluZyh2aWRlb0VsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdUcnlpbmcgdG8gcGxheSB2aWRlbyB0aGF0IGlzIGFscmVhZHkgcGxheWluZy4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBfYi5sYWJlbCA9IDE7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgIF9iLnRyeXMucHVzaChbMSwgMywgLCA0XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCB2aWRlb0VsZW1lbnQucGxheSgpXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgX2Iuc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgNF07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hID0gX2Iuc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdJdCB3YXMgbm90IHBvc3NpYmxlIHRvIHBsYXkgdGhlIHZpZGVvLicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgNF07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDogcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFNlYXJjaGVzIGFuZCB2YWxpZGF0ZXMgYSBtZWRpYSBlbGVtZW50LlxuICAgICAqL1xuICAgIEJyb3dzZXJDb2RlUmVhZGVyLnByb3RvdHlwZS5nZXRNZWRpYUVsZW1lbnQgPSBmdW5jdGlvbiAobWVkaWFFbGVtZW50SWQsIHR5cGUpIHtcbiAgICAgICAgdmFyIG1lZGlhRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG1lZGlhRWxlbWVudElkKTtcbiAgICAgICAgaWYgKCFtZWRpYUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoXCJlbGVtZW50IHdpdGggaWQgJ1wiICsgbWVkaWFFbGVtZW50SWQgKyBcIicgbm90IGZvdW5kXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtZWRpYUVsZW1lbnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSAhPT0gdHlwZS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KFwiZWxlbWVudCB3aXRoIGlkICdcIiArIG1lZGlhRWxlbWVudElkICsgXCInIG11c3QgYmUgYW4gXCIgKyB0eXBlICsgXCIgZWxlbWVudFwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWVkaWFFbGVtZW50O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogRGVjb2RlcyB0aGUgYmFyY29kZSBmcm9tIGFuIGltYWdlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHsoc3RyaW5nfEhUTUxJbWFnZUVsZW1lbnQpfSBbc291cmNlXSBUaGUgaW1hZ2UgZWxlbWVudCB0aGF0IGNhbiBiZSBlaXRoZXIgYW4gZWxlbWVudCBpZCBvciB0aGUgZWxlbWVudCBpdHNlbGYuIENhbiBiZSB1bmRlZmluZWQgaW4gd2hpY2ggY2FzZSB0aGUgZGVjb2Rpbmcgd2lsbCBiZSBkb25lIGZyb20gdGhlIGltYWdlVXJsIHBhcmFtZXRlci5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3VybF1cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTxSZXN1bHQ+fSBUaGUgZGVjb2RpbmcgcmVzdWx0LlxuICAgICAqXG4gICAgICogQG1lbWJlck9mIEJyb3dzZXJDb2RlUmVhZGVyXG4gICAgICovXG4gICAgQnJvd3NlckNvZGVSZWFkZXIucHJvdG90eXBlLmRlY29kZUZyb21JbWFnZSA9IGZ1bmN0aW9uIChzb3VyY2UsIHVybCkge1xuICAgICAgICBpZiAoIXNvdXJjZSAmJiAhdXJsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCdlaXRoZXIgaW1hZ2VFbGVtZW50IHdpdGggYSBzcmMgc2V0IG9yIGFuIHVybCBtdXN0IGJlIHByb3ZpZGVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHVybCAmJiAhc291cmNlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kZWNvZGVGcm9tSW1hZ2VVcmwodXJsKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5kZWNvZGVGcm9tSW1hZ2VFbGVtZW50KHNvdXJjZSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBEZWNvZGVzIHRoZSBiYXJjb2RlIGZyb20gYSB2aWRlby5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7KHN0cmluZ3xIVE1MSW1hZ2VFbGVtZW50KX0gW3NvdXJjZV0gVGhlIGltYWdlIGVsZW1lbnQgdGhhdCBjYW4gYmUgZWl0aGVyIGFuIGVsZW1lbnQgaWQgb3IgdGhlIGVsZW1lbnQgaXRzZWxmLiBDYW4gYmUgdW5kZWZpbmVkIGluIHdoaWNoIGNhc2UgdGhlIGRlY29kaW5nIHdpbGwgYmUgZG9uZSBmcm9tIHRoZSBpbWFnZVVybCBwYXJhbWV0ZXIuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFt1cmxdXG4gICAgICogQHJldHVybnMge1Byb21pc2U8UmVzdWx0Pn0gVGhlIGRlY29kaW5nIHJlc3VsdC5cbiAgICAgKlxuICAgICAqIEBtZW1iZXJPZiBCcm93c2VyQ29kZVJlYWRlclxuICAgICAqL1xuICAgIEJyb3dzZXJDb2RlUmVhZGVyLnByb3RvdHlwZS5kZWNvZGVGcm9tVmlkZW8gPSBmdW5jdGlvbiAoc291cmNlLCB1cmwpIHtcbiAgICAgICAgaWYgKCFzb3VyY2UgJiYgIXVybCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgnRWl0aGVyIGFuIGVsZW1lbnQgd2l0aCBhIHNyYyBzZXQgb3IgYW4gVVJMIG11c3QgYmUgcHJvdmlkZWQnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodXJsICYmICFzb3VyY2UpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRlY29kZUZyb21WaWRlb1VybCh1cmwpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmRlY29kZUZyb21WaWRlb0VsZW1lbnQoc291cmNlKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIERlY29kZXMgY29udGludW91c2x5IHRoZSBiYXJjb2RlIGZyb20gYSB2aWRlby5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7KHN0cmluZ3xIVE1MSW1hZ2VFbGVtZW50KX0gW3NvdXJjZV0gVGhlIGltYWdlIGVsZW1lbnQgdGhhdCBjYW4gYmUgZWl0aGVyIGFuIGVsZW1lbnQgaWQgb3IgdGhlIGVsZW1lbnQgaXRzZWxmLiBDYW4gYmUgdW5kZWZpbmVkIGluIHdoaWNoIGNhc2UgdGhlIGRlY29kaW5nIHdpbGwgYmUgZG9uZSBmcm9tIHRoZSBpbWFnZVVybCBwYXJhbWV0ZXIuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFt1cmxdXG4gICAgICogQHJldHVybnMge1Byb21pc2U8UmVzdWx0Pn0gVGhlIGRlY29kaW5nIHJlc3VsdC5cbiAgICAgKlxuICAgICAqIEBtZW1iZXJPZiBCcm93c2VyQ29kZVJlYWRlclxuICAgICAqXG4gICAgICogQGV4cGVyaW1lbnRhbFxuICAgICAqL1xuICAgIEJyb3dzZXJDb2RlUmVhZGVyLnByb3RvdHlwZS5kZWNvZGVGcm9tVmlkZW9Db250aW51b3VzbHkgPSBmdW5jdGlvbiAoc291cmNlLCB1cmwsIGNhbGxiYWNrRm4pIHtcbiAgICAgICAgaWYgKHVuZGVmaW5lZCA9PT0gc291cmNlICYmIHVuZGVmaW5lZCA9PT0gdXJsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCdFaXRoZXIgYW4gZWxlbWVudCB3aXRoIGEgc3JjIHNldCBvciBhbiBVUkwgbXVzdCBiZSBwcm92aWRlZCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh1cmwgJiYgIXNvdXJjZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVjb2RlRnJvbVZpZGVvVXJsQ29udGludW91c2x5KHVybCwgY2FsbGJhY2tGbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZGVjb2RlRnJvbVZpZGVvRWxlbWVudENvbnRpbnVvdXNseShzb3VyY2UsIGNhbGxiYWNrRm4pO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogRGVjb2RlcyBzb21ldGhpbmcgZnJvbSBhbiBpbWFnZSBIVE1MIGVsZW1lbnQuXG4gICAgICovXG4gICAgQnJvd3NlckNvZGVSZWFkZXIucHJvdG90eXBlLmRlY29kZUZyb21JbWFnZUVsZW1lbnQgPSBmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgICAgIGlmICghc291cmNlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCdBbiBpbWFnZSBlbGVtZW50IG11c3QgYmUgcHJvdmlkZWQuJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgICB2YXIgZWxlbWVudCA9IHRoaXMucHJlcGFyZUltYWdlRWxlbWVudChzb3VyY2UpO1xuICAgICAgICB0aGlzLmltYWdlRWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgICAgIHZhciB0YXNrO1xuICAgICAgICBpZiAodGhpcy5pc0ltYWdlTG9hZGVkKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICB0YXNrID0gdGhpcy5kZWNvZGVPbmNlKGVsZW1lbnQsIGZhbHNlLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRhc2sgPSB0aGlzLl9kZWNvZGVPbkxvYWRJbWFnZShlbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGFzaztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIERlY29kZXMgc29tZXRoaW5nIGZyb20gYW4gaW1hZ2UgSFRNTCBlbGVtZW50LlxuICAgICAqL1xuICAgIEJyb3dzZXJDb2RlUmVhZGVyLnByb3RvdHlwZS5kZWNvZGVGcm9tVmlkZW9FbGVtZW50ID0gZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgICAgICB2YXIgZWxlbWVudCA9IHRoaXMuX2RlY29kZUZyb21WaWRlb0VsZW1lbnRTZXR1cChzb3VyY2UpO1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVjb2RlT25Mb2FkVmlkZW8oZWxlbWVudCk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBEZWNvZGVzIHNvbWV0aGluZyBmcm9tIGFuIGltYWdlIEhUTUwgZWxlbWVudC5cbiAgICAgKi9cbiAgICBCcm93c2VyQ29kZVJlYWRlci5wcm90b3R5cGUuZGVjb2RlRnJvbVZpZGVvRWxlbWVudENvbnRpbnVvdXNseSA9IGZ1bmN0aW9uIChzb3VyY2UsIGNhbGxiYWNrRm4pIHtcbiAgICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzLl9kZWNvZGVGcm9tVmlkZW9FbGVtZW50U2V0dXAoc291cmNlKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlY29kZU9uTG9hZFZpZGVvQ29udGludW91c2x5KGVsZW1lbnQsIGNhbGxiYWNrRm4pO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogU2V0cyB1cCB0aGUgdmlkZW8gc291cmNlIHNvIGl0IGNhbiBiZSBkZWNvZGVkIHdoZW4gbG9hZGVkLlxuICAgICAqXG4gICAgICogQHBhcmFtIHNvdXJjZSBUaGUgdmlkZW8gc291cmNlIGVsZW1lbnQuXG4gICAgICovXG4gICAgQnJvd3NlckNvZGVSZWFkZXIucHJvdG90eXBlLl9kZWNvZGVGcm9tVmlkZW9FbGVtZW50U2V0dXAgPSBmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgICAgIGlmICghc291cmNlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCdBIHZpZGVvIGVsZW1lbnQgbXVzdCBiZSBwcm92aWRlZC4nKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgIHZhciBlbGVtZW50ID0gdGhpcy5wcmVwYXJlVmlkZW9FbGVtZW50KHNvdXJjZSk7XG4gICAgICAgIC8vIGRlZmluZXMgdGhlIHZpZGVvIGVsZW1lbnQgYmVmb3JlIHN0YXJ0cyBkZWNvZGluZ1xuICAgICAgICB0aGlzLnZpZGVvRWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgICAgIHJldHVybiBlbGVtZW50O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogRGVjb2RlcyBhbiBpbWFnZSBmcm9tIGEgVVJMLlxuICAgICAqL1xuICAgIEJyb3dzZXJDb2RlUmVhZGVyLnByb3RvdHlwZS5kZWNvZGVGcm9tSW1hZ2VVcmwgPSBmdW5jdGlvbiAodXJsKSB7XG4gICAgICAgIGlmICghdXJsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCdBbiBVUkwgbXVzdCBiZSBwcm92aWRlZC4nKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgIHZhciBlbGVtZW50ID0gdGhpcy5wcmVwYXJlSW1hZ2VFbGVtZW50KCk7XG4gICAgICAgIHRoaXMuaW1hZ2VFbGVtZW50ID0gZWxlbWVudDtcbiAgICAgICAgdmFyIGRlY29kZVRhc2sgPSB0aGlzLl9kZWNvZGVPbkxvYWRJbWFnZShlbGVtZW50KTtcbiAgICAgICAgZWxlbWVudC5zcmMgPSB1cmw7XG4gICAgICAgIHJldHVybiBkZWNvZGVUYXNrO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogRGVjb2RlcyBhbiBpbWFnZSBmcm9tIGEgVVJMLlxuICAgICAqL1xuICAgIEJyb3dzZXJDb2RlUmVhZGVyLnByb3RvdHlwZS5kZWNvZGVGcm9tVmlkZW9VcmwgPSBmdW5jdGlvbiAodXJsKSB7XG4gICAgICAgIGlmICghdXJsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCdBbiBVUkwgbXVzdCBiZSBwcm92aWRlZC4nKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgIC8vIGNyZWF0ZXMgYSBuZXcgZWxlbWVudFxuICAgICAgICB2YXIgZWxlbWVudCA9IHRoaXMucHJlcGFyZVZpZGVvRWxlbWVudCgpO1xuICAgICAgICB2YXIgZGVjb2RlVGFzayA9IHRoaXMuZGVjb2RlRnJvbVZpZGVvRWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgZWxlbWVudC5zcmMgPSB1cmw7XG4gICAgICAgIHJldHVybiBkZWNvZGVUYXNrO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogRGVjb2RlcyBhbiBpbWFnZSBmcm9tIGEgVVJMLlxuICAgICAqXG4gICAgICogQGV4cGVyaW1lbnRhbFxuICAgICAqL1xuICAgIEJyb3dzZXJDb2RlUmVhZGVyLnByb3RvdHlwZS5kZWNvZGVGcm9tVmlkZW9VcmxDb250aW51b3VzbHkgPSBmdW5jdGlvbiAodXJsLCBjYWxsYmFja0ZuKSB7XG4gICAgICAgIGlmICghdXJsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCdBbiBVUkwgbXVzdCBiZSBwcm92aWRlZC4nKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgIC8vIGNyZWF0ZXMgYSBuZXcgZWxlbWVudFxuICAgICAgICB2YXIgZWxlbWVudCA9IHRoaXMucHJlcGFyZVZpZGVvRWxlbWVudCgpO1xuICAgICAgICB2YXIgZGVjb2RlVGFzayA9IHRoaXMuZGVjb2RlRnJvbVZpZGVvRWxlbWVudENvbnRpbnVvdXNseShlbGVtZW50LCBjYWxsYmFja0ZuKTtcbiAgICAgICAgZWxlbWVudC5zcmMgPSB1cmw7XG4gICAgICAgIHJldHVybiBkZWNvZGVUYXNrO1xuICAgIH07XG4gICAgQnJvd3NlckNvZGVSZWFkZXIucHJvdG90eXBlLl9kZWNvZGVPbkxvYWRJbWFnZSA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICBfdGhpcy5pbWFnZUxvYWRlZExpc3RlbmVyID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gX3RoaXMuZGVjb2RlT25jZShlbGVtZW50LCBmYWxzZSwgdHJ1ZSkudGhlbihyZXNvbHZlLCByZWplY3QpOyB9O1xuICAgICAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgX3RoaXMuaW1hZ2VMb2FkZWRMaXN0ZW5lcik7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgQnJvd3NlckNvZGVSZWFkZXIucHJvdG90eXBlLl9kZWNvZGVPbkxvYWRWaWRlbyA9IGZ1bmN0aW9uICh2aWRlb0VsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOiBcbiAgICAgICAgICAgICAgICAgICAgLy8gcGxheXMgdGhlIHZpZGVvXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIHRoaXMucGxheVZpZGVvT25Mb2FkQXN5bmModmlkZW9FbGVtZW50KV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBsYXlzIHRoZSB2aWRlb1xuICAgICAgICAgICAgICAgICAgICAgICAgX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgdGhpcy5kZWNvZGVPbmNlKHZpZGVvRWxlbWVudCldO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6IFxuICAgICAgICAgICAgICAgICAgICAvLyBzdGFydHMgZGVjb2RpbmcgYWZ0ZXIgcGxheWVkIHRoZSB2aWRlb1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qLywgX2Euc2VudCgpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBCcm93c2VyQ29kZVJlYWRlci5wcm90b3R5cGUuX2RlY29kZU9uTG9hZFZpZGVvQ29udGludW91c2x5ID0gZnVuY3Rpb24gKHZpZGVvRWxlbWVudCwgY2FsbGJhY2tGbikge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6IFxuICAgICAgICAgICAgICAgICAgICAvLyBwbGF5cyB0aGUgdmlkZW9cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgdGhpcy5wbGF5VmlkZW9PbkxvYWRBc3luYyh2aWRlb0VsZW1lbnQpXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGxheXMgdGhlIHZpZGVvXG4gICAgICAgICAgICAgICAgICAgICAgICBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGFydHMgZGVjb2RpbmcgYWZ0ZXIgcGxheWVkIHRoZSB2aWRlb1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWNvZGVDb250aW51b3VzbHkodmlkZW9FbGVtZW50LCBjYWxsYmFja0ZuKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBCcm93c2VyQ29kZVJlYWRlci5wcm90b3R5cGUuaXNJbWFnZUxvYWRlZCA9IGZ1bmN0aW9uIChpbWcpIHtcbiAgICAgICAgLy8gRHVyaW5nIHRoZSBvbmxvYWQgZXZlbnQsIElFIGNvcnJlY3RseSBpZGVudGlmaWVzIGFueSBpbWFnZXMgdGhhdFxuICAgICAgICAvLyB3ZXJlbuKAmXQgZG93bmxvYWRlZCBhcyBub3QgY29tcGxldGUuIE90aGVycyBzaG91bGQgdG9vLiBHZWNrby1iYXNlZFxuICAgICAgICAvLyBicm93c2VycyBhY3QgbGlrZSBOUzQgaW4gdGhhdCB0aGV5IHJlcG9ydCB0aGlzIGluY29ycmVjdGx5LlxuICAgICAgICBpZiAoIWltZy5jb21wbGV0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIEhvd2V2ZXIsIHRoZXkgZG8gaGF2ZSB0d28gdmVyeSB1c2VmdWwgcHJvcGVydGllczogbmF0dXJhbFdpZHRoIGFuZFxuICAgICAgICAvLyBuYXR1cmFsSGVpZ2h0LiBUaGVzZSBnaXZlIHRoZSB0cnVlIHNpemUgb2YgdGhlIGltYWdlLiBJZiBpdCBmYWlsZWRcbiAgICAgICAgLy8gdG8gbG9hZCwgZWl0aGVyIG9mIHRoZXNlIHNob3VsZCBiZSB6ZXJvLlxuICAgICAgICBpZiAoaW1nLm5hdHVyYWxXaWR0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIE5vIG90aGVyIHdheSBvZiBjaGVja2luZzogYXNzdW1lIGl04oCZcyBvay5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcbiAgICBCcm93c2VyQ29kZVJlYWRlci5wcm90b3R5cGUucHJlcGFyZUltYWdlRWxlbWVudCA9IGZ1bmN0aW9uIChpbWFnZVNvdXJjZSkge1xuICAgICAgICB2YXIgaW1hZ2VFbGVtZW50O1xuICAgICAgICBpZiAodHlwZW9mIGltYWdlU291cmNlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgaW1hZ2VFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJyk7XG4gICAgICAgICAgICBpbWFnZUVsZW1lbnQud2lkdGggPSAyMDA7XG4gICAgICAgICAgICBpbWFnZUVsZW1lbnQuaGVpZ2h0ID0gMjAwO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgaW1hZ2VTb3VyY2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBpbWFnZUVsZW1lbnQgPSB0aGlzLmdldE1lZGlhRWxlbWVudChpbWFnZVNvdXJjZSwgJ2ltZycpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbWFnZVNvdXJjZSBpbnN0YW5jZW9mIEhUTUxJbWFnZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIGltYWdlRWxlbWVudCA9IGltYWdlU291cmNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpbWFnZUVsZW1lbnQ7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBTZXRzIGEgSFRNTFZpZGVvRWxlbWVudCBmb3Igc2Nhbm5pbmcgb3IgY3JlYXRlcyBhIG5ldyBvbmUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmlkZW9Tb3VyY2UgVGhlIEhUTUxWaWRlb0VsZW1lbnQgdG8gYmUgc2V0LlxuICAgICAqL1xuICAgIEJyb3dzZXJDb2RlUmVhZGVyLnByb3RvdHlwZS5wcmVwYXJlVmlkZW9FbGVtZW50ID0gZnVuY3Rpb24gKHZpZGVvU291cmNlKSB7XG4gICAgICAgIHZhciB2aWRlb0VsZW1lbnQ7XG4gICAgICAgIGlmICghdmlkZW9Tb3VyY2UgJiYgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdmlkZW9FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndmlkZW8nKTtcbiAgICAgICAgICAgIHZpZGVvRWxlbWVudC53aWR0aCA9IDIwMDtcbiAgICAgICAgICAgIHZpZGVvRWxlbWVudC5oZWlnaHQgPSAyMDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB2aWRlb1NvdXJjZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHZpZGVvRWxlbWVudCA9IHRoaXMuZ2V0TWVkaWFFbGVtZW50KHZpZGVvU291cmNlLCAndmlkZW8nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmlkZW9Tb3VyY2UgaW5zdGFuY2VvZiBIVE1MVmlkZW9FbGVtZW50KSB7XG4gICAgICAgICAgICB2aWRlb0VsZW1lbnQgPSB2aWRlb1NvdXJjZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBOZWVkZWQgZm9yIGlPUyAxMVxuICAgICAgICB2aWRlb0VsZW1lbnQuc2V0QXR0cmlidXRlKCdhdXRvcGxheScsICd0cnVlJyk7XG4gICAgICAgIHZpZGVvRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ211dGVkJywgJ3RydWUnKTtcbiAgICAgICAgdmlkZW9FbGVtZW50LnNldEF0dHJpYnV0ZSgncGxheXNpbmxpbmUnLCAndHJ1ZScpO1xuICAgICAgICByZXR1cm4gdmlkZW9FbGVtZW50O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogVHJpZXMgdG8gZGVjb2RlIGZyb20gdGhlIHZpZGVvIGlucHV0IHVudGlsIGl0IGZpbmRzIHNvbWUgdmFsdWUuXG4gICAgICovXG4gICAgQnJvd3NlckNvZGVSZWFkZXIucHJvdG90eXBlLmRlY29kZU9uY2UgPSBmdW5jdGlvbiAoZWxlbWVudCwgcmV0cnlJZk5vdEZvdW5kLCByZXRyeUlmQ2hlY2tzdW1PckZvcm1hdEVycm9yKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIGlmIChyZXRyeUlmTm90Rm91bmQgPT09IHZvaWQgMCkgeyByZXRyeUlmTm90Rm91bmQgPSB0cnVlOyB9XG4gICAgICAgIGlmIChyZXRyeUlmQ2hlY2tzdW1PckZvcm1hdEVycm9yID09PSB2b2lkIDApIHsgcmV0cnlJZkNoZWNrc3VtT3JGb3JtYXRFcnJvciA9IHRydWU7IH1cbiAgICAgICAgdGhpcy5fc3RvcEFzeW5jRGVjb2RlID0gZmFsc2U7XG4gICAgICAgIHZhciBsb29wID0gZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgaWYgKF90aGlzLl9zdG9wQXN5bmNEZWNvZGUpIHtcbiAgICAgICAgICAgICAgICByZWplY3QobmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgnVmlkZW8gc3RyZWFtIGhhcyBlbmRlZCBiZWZvcmUgYW55IGNvZGUgY291bGQgYmUgZGV0ZWN0ZWQuJykpO1xuICAgICAgICAgICAgICAgIF90aGlzLl9zdG9wQXN5bmNEZWNvZGUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gX3RoaXMuZGVjb2RlKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGlmTm90Rm91bmQgPSByZXRyeUlmTm90Rm91bmQgJiYgZSBpbnN0YW5jZW9mIE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdDtcbiAgICAgICAgICAgICAgICB2YXIgaXNDaGVja3N1bU9yRm9ybWF0RXJyb3IgPSBlIGluc3RhbmNlb2YgQ2hlY2tzdW1FeGNlcHRpb25fMS5kZWZhdWx0IHx8IGUgaW5zdGFuY2VvZiBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0O1xuICAgICAgICAgICAgICAgIHZhciBpZkNoZWNrc3VtT3JGb3JtYXQgPSBpc0NoZWNrc3VtT3JGb3JtYXRFcnJvciAmJiByZXRyeUlmQ2hlY2tzdW1PckZvcm1hdEVycm9yO1xuICAgICAgICAgICAgICAgIGlmIChpZk5vdEZvdW5kIHx8IGlmQ2hlY2tzdW1PckZvcm1hdCkge1xuICAgICAgICAgICAgICAgICAgICAvLyB0cnlpbmcgYWdhaW5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQobG9vcCwgX3RoaXMuX3RpbWVCZXR3ZWVuRGVjb2RpbmdBdHRlbXB0cywgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyByZXR1cm4gbG9vcChyZXNvbHZlLCByZWplY3QpOyB9KTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIENvbnRpbnVvdXNseSBkZWNvZGVzIGZyb20gdmlkZW8gaW5wdXQuXG4gICAgICovXG4gICAgQnJvd3NlckNvZGVSZWFkZXIucHJvdG90eXBlLmRlY29kZUNvbnRpbnVvdXNseSA9IGZ1bmN0aW9uIChlbGVtZW50LCBjYWxsYmFja0ZuKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHRoaXMuX3N0b3BDb250aW51b3VzRGVjb2RlID0gZmFsc2U7XG4gICAgICAgIHZhciBsb29wID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKF90aGlzLl9zdG9wQ29udGludW91c0RlY29kZSkge1xuICAgICAgICAgICAgICAgIF90aGlzLl9zdG9wQ29udGludW91c0RlY29kZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBfdGhpcy5kZWNvZGUoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2tGbihyZXN1bHQsIG51bGwpO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQobG9vcCwgX3RoaXMudGltZUJldHdlZW5TY2Fuc01pbGxpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrRm4obnVsbCwgZSk7XG4gICAgICAgICAgICAgICAgdmFyIGlzQ2hlY2tzdW1PckZvcm1hdEVycm9yID0gZSBpbnN0YW5jZW9mIENoZWNrc3VtRXhjZXB0aW9uXzEuZGVmYXVsdCB8fCBlIGluc3RhbmNlb2YgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdDtcbiAgICAgICAgICAgICAgICB2YXIgaXNOb3RGb3VuZCA9IGUgaW5zdGFuY2VvZiBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQ7XG4gICAgICAgICAgICAgICAgaWYgKGlzQ2hlY2tzdW1PckZvcm1hdEVycm9yIHx8IGlzTm90Rm91bmQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gdHJ5aW5nIGFnYWluXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQobG9vcCwgX3RoaXMuX3RpbWVCZXR3ZWVuRGVjb2RpbmdBdHRlbXB0cyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBsb29wKCk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBCaW5hcnlCaXRtYXAgZm9yIHlhISAoYW5kIGRlY29kZXMgaXQpXG4gICAgICovXG4gICAgQnJvd3NlckNvZGVSZWFkZXIucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICAgIC8vIGdldCBiaW5hcnkgYml0bWFwIGZvciBkZWNvZGUgZnVuY3Rpb25cbiAgICAgICAgdmFyIGJpbmFyeUJpdG1hcCA9IHRoaXMuY3JlYXRlQmluYXJ5Qml0bWFwKGVsZW1lbnQpO1xuICAgICAgICByZXR1cm4gdGhpcy5kZWNvZGVCaXRtYXAoYmluYXJ5Qml0bWFwKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBiaW5hcnlCaXRtYXAgYmFzZWQgaW4gc29tZSBpbWFnZSBzb3VyY2UuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbWVkaWFFbGVtZW50IEhUTUwgZWxlbWVudCBjb250YWluaW5nIGRyYXdhYmxlIGltYWdlIHNvdXJjZS5cbiAgICAgKi9cbiAgICBCcm93c2VyQ29kZVJlYWRlci5wcm90b3R5cGUuY3JlYXRlQmluYXJ5Qml0bWFwID0gZnVuY3Rpb24gKG1lZGlhRWxlbWVudCkge1xuICAgICAgICB2YXIgY3R4ID0gdGhpcy5nZXRDYXB0dXJlQ2FudmFzQ29udGV4dChtZWRpYUVsZW1lbnQpO1xuICAgICAgICB0aGlzLmRyYXdJbWFnZU9uQ2FudmFzKGN0eCwgbWVkaWFFbGVtZW50KTtcbiAgICAgICAgdmFyIGNhbnZhcyA9IHRoaXMuZ2V0Q2FwdHVyZUNhbnZhcyhtZWRpYUVsZW1lbnQpO1xuICAgICAgICB2YXIgbHVtaW5hbmNlU291cmNlID0gbmV3IEhUTUxDYW52YXNFbGVtZW50THVtaW5hbmNlU291cmNlXzEuSFRNTENhbnZhc0VsZW1lbnRMdW1pbmFuY2VTb3VyY2UoY2FudmFzKTtcbiAgICAgICAgdmFyIGh5YnJpZEJpbmFyaXplciA9IG5ldyBIeWJyaWRCaW5hcml6ZXJfMS5kZWZhdWx0KGx1bWluYW5jZVNvdXJjZSk7XG4gICAgICAgIHJldHVybiBuZXcgQmluYXJ5Qml0bWFwXzEuZGVmYXVsdChoeWJyaWRCaW5hcml6ZXIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICpcbiAgICAgKi9cbiAgICBCcm93c2VyQ29kZVJlYWRlci5wcm90b3R5cGUuZ2V0Q2FwdHVyZUNhbnZhc0NvbnRleHQgPSBmdW5jdGlvbiAobWVkaWFFbGVtZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5jYXB0dXJlQ2FudmFzQ29udGV4dCkge1xuICAgICAgICAgICAgdmFyIGVsZW0gPSB0aGlzLmdldENhcHR1cmVDYW52YXMobWVkaWFFbGVtZW50KTtcbiAgICAgICAgICAgIHZhciBjdHggPSBlbGVtLmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgICAgICB0aGlzLmNhcHR1cmVDYW52YXNDb250ZXh0ID0gY3R4O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNhcHR1cmVDYW52YXNDb250ZXh0O1xuICAgIH07XG4gICAgLyoqXG4gICAgICpcbiAgICAgKi9cbiAgICBCcm93c2VyQ29kZVJlYWRlci5wcm90b3R5cGUuZ2V0Q2FwdHVyZUNhbnZhcyA9IGZ1bmN0aW9uIChtZWRpYUVsZW1lbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNhcHR1cmVDYW52YXMpIHtcbiAgICAgICAgICAgIHZhciBlbGVtID0gdGhpcy5jcmVhdGVDYXB0dXJlQ2FudmFzKG1lZGlhRWxlbWVudCk7XG4gICAgICAgICAgICB0aGlzLmNhcHR1cmVDYW52YXMgPSBlbGVtO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNhcHR1cmVDYW52YXM7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBPdmV3cml0aW5nIHRoaXMgYWxsb3dzIHlvdSB0byBtYW5pcHVsYXRlIHRoZSBzbmFwc2hvdCBpbWFnZSBpbiBhbnl3YXkgeW91IHdhbnQgYmVmb3JlIGRlY29kZS5cbiAgICAgKi9cbiAgICBCcm93c2VyQ29kZVJlYWRlci5wcm90b3R5cGUuZHJhd0ltYWdlT25DYW52YXMgPSBmdW5jdGlvbiAoY2FudmFzRWxlbWVudENvbnRleHQsIHNyY0VsZW1lbnQpIHtcbiAgICAgICAgY2FudmFzRWxlbWVudENvbnRleHQuZHJhd0ltYWdlKHNyY0VsZW1lbnQsIDAsIDApO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQ2FsbCB0aGUgZW5jYXBzdWxhdGVkIHJlYWRlcnMgZGVjb2RlXG4gICAgICovXG4gICAgQnJvd3NlckNvZGVSZWFkZXIucHJvdG90eXBlLmRlY29kZUJpdG1hcCA9IGZ1bmN0aW9uIChiaW5hcnlCaXRtYXApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVhZGVyLmRlY29kZShiaW5hcnlCaXRtYXAsIHRoaXMuX2hpbnRzKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIPCflowgUHJlcGFyZXMgdGhlIGNhbnZhcyBmb3IgY2FwdHVyZSBhbmQgc2NhbiBmcmFtZXMuXG4gICAgICovXG4gICAgQnJvd3NlckNvZGVSZWFkZXIucHJvdG90eXBlLmNyZWF0ZUNhcHR1cmVDYW52YXMgPSBmdW5jdGlvbiAobWVkaWFFbGVtZW50KSB7XG4gICAgICAgIGlmICh0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aGlzLl9kZXN0cm95Q2FwdHVyZUNhbnZhcygpO1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGNhbnZhc0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICAgICAgdmFyIHdpZHRoO1xuICAgICAgICB2YXIgaGVpZ2h0O1xuICAgICAgICBpZiAodHlwZW9mIG1lZGlhRWxlbWVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGlmIChtZWRpYUVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MVmlkZW9FbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgd2lkdGggPSBtZWRpYUVsZW1lbnQudmlkZW9XaWR0aDtcbiAgICAgICAgICAgICAgICBoZWlnaHQgPSBtZWRpYUVsZW1lbnQudmlkZW9IZWlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChtZWRpYUVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MSW1hZ2VFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgd2lkdGggPSBtZWRpYUVsZW1lbnQubmF0dXJhbFdpZHRoIHx8IG1lZGlhRWxlbWVudC53aWR0aDtcbiAgICAgICAgICAgICAgICBoZWlnaHQgPSBtZWRpYUVsZW1lbnQubmF0dXJhbEhlaWdodCB8fCBtZWRpYUVsZW1lbnQuaGVpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhbnZhc0VsZW1lbnQuc3R5bGUud2lkdGggPSB3aWR0aCArICdweCc7XG4gICAgICAgIGNhbnZhc0VsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgJ3B4JztcbiAgICAgICAgY2FudmFzRWxlbWVudC53aWR0aCA9IHdpZHRoO1xuICAgICAgICBjYW52YXNFbGVtZW50LmhlaWdodCA9IGhlaWdodDtcbiAgICAgICAgcmV0dXJuIGNhbnZhc0VsZW1lbnQ7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBTdG9wcyB0aGUgY29udGludW91cyBzY2FuIGFuZCBjbGVhbnMgdGhlIHN0cmVhbS5cbiAgICAgKi9cbiAgICBCcm93c2VyQ29kZVJlYWRlci5wcm90b3R5cGUuc3RvcFN0cmVhbXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLnN0cmVhbSkge1xuICAgICAgICAgICAgdGhpcy5zdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5mb3JFYWNoKGZ1bmN0aW9uICh0KSB7IHJldHVybiB0LnN0b3AoKTsgfSk7XG4gICAgICAgICAgICB0aGlzLnN0cmVhbSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fc3RvcEFzeW5jRGVjb2RlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5zdG9wQXN5bmNEZWNvZGUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fc3RvcENvbnRpbnVvdXNEZWNvZGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3BDb250aW51b3VzRGVjb2RlKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFJlc2V0cyB0aGUgY29kZSByZWFkZXIgdG8gdGhlIGluaXRpYWwgc3RhdGUuIENhbmNlbHMgYW55IG9uZ29pbmcgYmFyY29kZSBzY2FubmluZyBmcm9tIHZpZGVvIG9yIGNhbWVyYS5cbiAgICAgKlxuICAgICAqIEBtZW1iZXJPZiBCcm93c2VyQ29kZVJlYWRlclxuICAgICAqL1xuICAgIEJyb3dzZXJDb2RlUmVhZGVyLnByb3RvdHlwZS5yZXNldCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8gc3RvcHMgdGhlIGNhbWVyYSwgcHJldmlldyBhbmQgc2NhbiDwn5S0XG4gICAgICAgIHRoaXMuc3RvcFN0cmVhbXMoKTtcbiAgICAgICAgLy8gY2xlYW4gYW5kIGZvcmdldCBhYm91dCBIVE1MIGVsZW1lbnRzXG4gICAgICAgIHRoaXMuX2Rlc3Ryb3lWaWRlb0VsZW1lbnQoKTtcbiAgICAgICAgdGhpcy5fZGVzdHJveUltYWdlRWxlbWVudCgpO1xuICAgICAgICB0aGlzLl9kZXN0cm95Q2FwdHVyZUNhbnZhcygpO1xuICAgIH07XG4gICAgQnJvd3NlckNvZGVSZWFkZXIucHJvdG90eXBlLl9kZXN0cm95VmlkZW9FbGVtZW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIXRoaXMudmlkZW9FbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gZmlyc3QgZ2l2ZXMgZnJlZWRvbiB0byB0aGUgZWxlbWVudCDwn5WKXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy52aWRlb0VuZGVkTGlzdGVuZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aGlzLnZpZGVvRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdlbmRlZCcsIHRoaXMudmlkZW9FbmRlZExpc3RlbmVyKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudmlkZW9QbGF5aW5nRXZlbnRMaXN0ZW5lciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRoaXMudmlkZW9FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BsYXlpbmcnLCB0aGlzLnZpZGVvUGxheWluZ0V2ZW50TGlzdGVuZXIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy52aWRlb0NhblBsYXlMaXN0ZW5lciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRoaXMudmlkZW9FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2xvYWRlZG1ldGFkYXRhJywgdGhpcy52aWRlb0NhblBsYXlMaXN0ZW5lcik7XG4gICAgICAgIH1cbiAgICAgICAgLy8gdGhlbiBmb3JnZXRzIGFib3V0IHRoYXQgZWxlbWVudCDwn5iiXG4gICAgICAgIHRoaXMuY2xlYW5WaWRlb1NvdXJjZSh0aGlzLnZpZGVvRWxlbWVudCk7XG4gICAgICAgIHRoaXMudmlkZW9FbGVtZW50ID0gdW5kZWZpbmVkO1xuICAgIH07XG4gICAgQnJvd3NlckNvZGVSZWFkZXIucHJvdG90eXBlLl9kZXN0cm95SW1hZ2VFbGVtZW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIXRoaXMuaW1hZ2VFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gZmlyc3QgZ2l2ZXMgZnJlZWRvbiB0byB0aGUgZWxlbWVudCDwn5WKXG4gICAgICAgIGlmICh1bmRlZmluZWQgIT09IHRoaXMuaW1hZ2VMb2FkZWRMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5pbWFnZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbG9hZCcsIHRoaXMuaW1hZ2VMb2FkZWRMaXN0ZW5lcik7XG4gICAgICAgIH1cbiAgICAgICAgLy8gdGhlbiBmb3JnZXQgYWJvdXQgdGhhdCBlbGVtZW50IPCfmKJcbiAgICAgICAgdGhpcy5pbWFnZUVsZW1lbnQuc3JjID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmltYWdlRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ3NyYycpO1xuICAgICAgICB0aGlzLmltYWdlRWxlbWVudCA9IHVuZGVmaW5lZDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIENsZWFucyBjYW52YXMgcmVmZXJlbmNlcyDwn5aMXG4gICAgICovXG4gICAgQnJvd3NlckNvZGVSZWFkZXIucHJvdG90eXBlLl9kZXN0cm95Q2FwdHVyZUNhbnZhcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8gdGhlbiBmb3JnZXQgYWJvdXQgdGhhdCBlbGVtZW50IPCfmKJcbiAgICAgICAgdGhpcy5jYXB0dXJlQ2FudmFzQ29udGV4dCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5jYXB0dXJlQ2FudmFzID0gdW5kZWZpbmVkO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB3aGF0IHRoZSB2aWRlb0VsZW1lbnQgc3JjIHdpbGwgYmUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmlkZW9FbGVtZW50XG4gICAgICogQHBhcmFtIHN0cmVhbVxuICAgICAqL1xuICAgIEJyb3dzZXJDb2RlUmVhZGVyLnByb3RvdHlwZS5hZGRWaWRlb1NvdXJjZSA9IGZ1bmN0aW9uICh2aWRlb0VsZW1lbnQsIHN0cmVhbSkge1xuICAgICAgICAvLyBPbGRlciBicm93c2VycyBtYXkgbm90IGhhdmUgYHNyY09iamVjdGBcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIEBub3RlIFRocm93cyBFeGNlcHRpb24gaWYgaW50ZXJydXB0ZWQgYnkgYSBuZXcgbG9hZGVkIHJlcXVlc3RcbiAgICAgICAgICAgIHZpZGVvRWxlbWVudC5zcmNPYmplY3QgPSBzdHJlYW07XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgLy8gQG5vdGUgQXZvaWQgdXNpbmcgdGhpcyBpbiBuZXcgYnJvd3NlcnMsIGFzIGl0IGlzIGdvaW5nIGF3YXkuXG4gICAgICAgICAgICB2aWRlb0VsZW1lbnQuc3JjID0gVVJMLmNyZWF0ZU9iamVjdFVSTChzdHJlYW0pO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBVbmJpbmRzIGEgSFRNTCB2aWRlbyBzcmMgcHJvcGVydHkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmlkZW9FbGVtZW50XG4gICAgICovXG4gICAgQnJvd3NlckNvZGVSZWFkZXIucHJvdG90eXBlLmNsZWFuVmlkZW9Tb3VyY2UgPSBmdW5jdGlvbiAodmlkZW9FbGVtZW50KSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB2aWRlb0VsZW1lbnQuc3JjT2JqZWN0ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICB2aWRlb0VsZW1lbnQuc3JjID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy52aWRlb0VsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdzcmMnKTtcbiAgICB9O1xuICAgIHJldHVybiBCcm93c2VyQ29kZVJlYWRlcjtcbn0oKSk7XG5leHBvcnRzLkJyb3dzZXJDb2RlUmVhZGVyID0gQnJvd3NlckNvZGVSZWFkZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Ccm93c2VyQ29kZVJlYWRlci5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8qXG4gKiBDb3B5cmlnaHQgMjAwNyBaWGluZyBhdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIFN5c3RlbV8xID0gcmVxdWlyZShcIi4vdXRpbC9TeXN0ZW1cIik7XG4vKipcbiAqIDxwPkVuY2Fwc3VsYXRlcyB0aGUgcmVzdWx0IG9mIGRlY29kaW5nIGEgYmFyY29kZSB3aXRoaW4gYW4gaW1hZ2UuPC9wPlxuICpcbiAqIEBhdXRob3IgU2VhbiBPd2VuXG4gKi9cbnZhciBSZXN1bHQgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgLy8gcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgdGV4dDogc3RyaW5nLFxuICAgIC8vICAgICAgICAgICAgICAgVWludDhBcnJheSByYXdCeXRlcyxcbiAgICAvLyAgICAgICAgICAgICAgIFJlc3VsdFBvY29uc3QgcmVzdWx0UG9pbnRzOiBJbnQzMkFycmF5LFxuICAgIC8vICAgICAgICAgICAgICAgQmFyY29kZUZvcm1hdCBmb3JtYXQpIHtcbiAgICAvLyAgIHRoaXModGV4dCwgcmF3Qnl0ZXMsIHJlc3VsdFBvaW50cywgZm9ybWF0LCBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSlcbiAgICAvLyB9XG4gICAgLy8gcHVibGljIGNvbnN0cnVjdG9yKHRleHQ6IHN0cmluZyxcbiAgICAvLyAgICAgICAgICAgICAgIFVpbnQ4QXJyYXkgcmF3Qnl0ZXMsXG4gICAgLy8gICAgICAgICAgICAgICBSZXN1bHRQb2NvbnN0IHJlc3VsdFBvaW50czogSW50MzJBcnJheSxcbiAgICAvLyAgICAgICAgICAgICAgIEJhcmNvZGVGb3JtYXQgZm9ybWF0LFxuICAgIC8vICAgICAgICAgICAgICAgbG9uZyB0aW1lc3RhbXApIHtcbiAgICAvLyAgIHRoaXModGV4dCwgcmF3Qnl0ZXMsIHJhd0J5dGVzID09IG51bGwgPyAwIDogOCAqIHJhd0J5dGVzLmxlbmd0aCxcbiAgICAvLyAgICAgICAgcmVzdWx0UG9pbnRzLCBmb3JtYXQsIHRpbWVzdGFtcClcbiAgICAvLyB9XG4gICAgZnVuY3Rpb24gUmVzdWx0KHRleHQsIHJhd0J5dGVzLCBudW1CaXRzLCByZXN1bHRQb2ludHMsIGZvcm1hdCwgdGltZXN0YW1wKSB7XG4gICAgICAgIGlmIChudW1CaXRzID09PSB2b2lkIDApIHsgbnVtQml0cyA9IHJhd0J5dGVzID09IG51bGwgPyAwIDogOCAqIHJhd0J5dGVzLmxlbmd0aDsgfVxuICAgICAgICBpZiAodGltZXN0YW1wID09PSB2b2lkIDApIHsgdGltZXN0YW1wID0gU3lzdGVtXzEuZGVmYXVsdC5jdXJyZW50VGltZU1pbGxpcygpOyB9XG4gICAgICAgIHRoaXMudGV4dCA9IHRleHQ7XG4gICAgICAgIHRoaXMucmF3Qnl0ZXMgPSByYXdCeXRlcztcbiAgICAgICAgdGhpcy5udW1CaXRzID0gbnVtQml0cztcbiAgICAgICAgdGhpcy5yZXN1bHRQb2ludHMgPSByZXN1bHRQb2ludHM7XG4gICAgICAgIHRoaXMuZm9ybWF0ID0gZm9ybWF0O1xuICAgICAgICB0aGlzLnRpbWVzdGFtcCA9IHRpbWVzdGFtcDtcbiAgICAgICAgdGhpcy50ZXh0ID0gdGV4dDtcbiAgICAgICAgdGhpcy5yYXdCeXRlcyA9IHJhd0J5dGVzO1xuICAgICAgICBpZiAodW5kZWZpbmVkID09PSBudW1CaXRzIHx8IG51bGwgPT09IG51bUJpdHMpIHtcbiAgICAgICAgICAgIHRoaXMubnVtQml0cyA9IChyYXdCeXRlcyA9PT0gbnVsbCB8fCByYXdCeXRlcyA9PT0gdW5kZWZpbmVkKSA/IDAgOiA4ICogcmF3Qnl0ZXMubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5udW1CaXRzID0gbnVtQml0cztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlc3VsdFBvaW50cyA9IHJlc3VsdFBvaW50cztcbiAgICAgICAgdGhpcy5mb3JtYXQgPSBmb3JtYXQ7XG4gICAgICAgIHRoaXMucmVzdWx0TWV0YWRhdGEgPSBudWxsO1xuICAgICAgICBpZiAodW5kZWZpbmVkID09PSB0aW1lc3RhbXAgfHwgbnVsbCA9PT0gdGltZXN0YW1wKSB7XG4gICAgICAgICAgICB0aGlzLnRpbWVzdGFtcCA9IFN5c3RlbV8xLmRlZmF1bHQuY3VycmVudFRpbWVNaWxsaXMoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudGltZXN0YW1wID0gdGltZXN0YW1wO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEByZXR1cm4gcmF3IHRleHQgZW5jb2RlZCBieSB0aGUgYmFyY29kZVxuICAgICAqL1xuICAgIFJlc3VsdC5wcm90b3R5cGUuZ2V0VGV4dCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGV4dDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEByZXR1cm4gcmF3IGJ5dGVzIGVuY29kZWQgYnkgdGhlIGJhcmNvZGUsIGlmIGFwcGxpY2FibGUsIG90aGVyd2lzZSB7QGNvZGUgbnVsbH1cbiAgICAgKi9cbiAgICBSZXN1bHQucHJvdG90eXBlLmdldFJhd0J5dGVzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yYXdCeXRlcztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEByZXR1cm4gaG93IG1hbnkgYml0cyBvZiB7QGxpbmsgI2dldFJhd0J5dGVzKCl9IGFyZSB2YWxpZDsgdHlwaWNhbGx5IDggdGltZXMgaXRzIGxlbmd0aFxuICAgICAqIEBzaW5jZSAzLjMuMFxuICAgICAqL1xuICAgIFJlc3VsdC5wcm90b3R5cGUuZ2V0TnVtQml0cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubnVtQml0cztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEByZXR1cm4gcG9pbnRzIHJlbGF0ZWQgdG8gdGhlIGJhcmNvZGUgaW4gdGhlIGltYWdlLiBUaGVzZSBhcmUgdHlwaWNhbGx5IHBvaW50c1xuICAgICAqICAgICAgICAgaWRlbnRpZnlpbmcgZmluZGVyIHBhdHRlcm5zIG9yIHRoZSBjb3JuZXJzIG9mIHRoZSBiYXJjb2RlLiBUaGUgZXhhY3QgbWVhbmluZyBpc1xuICAgICAqICAgICAgICAgc3BlY2lmaWMgdG8gdGhlIHR5cGUgb2YgYmFyY29kZSB0aGF0IHdhcyBkZWNvZGVkLlxuICAgICAqL1xuICAgIFJlc3VsdC5wcm90b3R5cGUuZ2V0UmVzdWx0UG9pbnRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXN1bHRQb2ludHM7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtAbGluayBCYXJjb2RlRm9ybWF0fSByZXByZXNlbnRpbmcgdGhlIGZvcm1hdCBvZiB0aGUgYmFyY29kZSB0aGF0IHdhcyBkZWNvZGVkXG4gICAgICovXG4gICAgUmVzdWx0LnByb3RvdHlwZS5nZXRCYXJjb2RlRm9ybWF0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXQ7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtAbGluayBNYXB9IG1hcHBpbmcge0BsaW5rIFJlc3VsdE1ldGFkYXRhVHlwZX0ga2V5cyB0byB2YWx1ZXMuIE1heSBiZVxuICAgICAqICAge0Bjb2RlIG51bGx9LiBUaGlzIGNvbnRhaW5zIG9wdGlvbmFsIG1ldGFkYXRhIGFib3V0IHdoYXQgd2FzIGRldGVjdGVkIGFib3V0IHRoZSBiYXJjb2RlLFxuICAgICAqICAgbGlrZSBvcmllbnRhdGlvbi5cbiAgICAgKi9cbiAgICBSZXN1bHQucHJvdG90eXBlLmdldFJlc3VsdE1ldGFkYXRhID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXN1bHRNZXRhZGF0YTtcbiAgICB9O1xuICAgIFJlc3VsdC5wcm90b3R5cGUucHV0TWV0YWRhdGEgPSBmdW5jdGlvbiAodHlwZSwgdmFsdWUpIHtcbiAgICAgICAgaWYgKHRoaXMucmVzdWx0TWV0YWRhdGEgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMucmVzdWx0TWV0YWRhdGEgPSBuZXcgTWFwKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZXN1bHRNZXRhZGF0YS5zZXQodHlwZSwgdmFsdWUpO1xuICAgIH07XG4gICAgUmVzdWx0LnByb3RvdHlwZS5wdXRBbGxNZXRhZGF0YSA9IGZ1bmN0aW9uIChtZXRhZGF0YSkge1xuICAgICAgICBpZiAobWV0YWRhdGEgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnJlc3VsdE1ldGFkYXRhID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXN1bHRNZXRhZGF0YSA9IG1ldGFkYXRhO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXN1bHRNZXRhZGF0YSA9IG5ldyBNYXAobWV0YWRhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBSZXN1bHQucHJvdG90eXBlLmFkZFJlc3VsdFBvaW50cyA9IGZ1bmN0aW9uIChuZXdQb2ludHMpIHtcbiAgICAgICAgdmFyIG9sZFBvaW50cyA9IHRoaXMucmVzdWx0UG9pbnRzO1xuICAgICAgICBpZiAob2xkUG9pbnRzID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLnJlc3VsdFBvaW50cyA9IG5ld1BvaW50cztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChuZXdQb2ludHMgIT09IG51bGwgJiYgbmV3UG9pbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHZhciBhbGxQb2ludHMgPSBuZXcgQXJyYXkob2xkUG9pbnRzLmxlbmd0aCArIG5ld1BvaW50cy5sZW5ndGgpO1xuICAgICAgICAgICAgU3lzdGVtXzEuZGVmYXVsdC5hcnJheWNvcHkob2xkUG9pbnRzLCAwLCBhbGxQb2ludHMsIDAsIG9sZFBvaW50cy5sZW5ndGgpO1xuICAgICAgICAgICAgU3lzdGVtXzEuZGVmYXVsdC5hcnJheWNvcHkobmV3UG9pbnRzLCAwLCBhbGxQb2ludHMsIG9sZFBvaW50cy5sZW5ndGgsIG5ld1BvaW50cy5sZW5ndGgpO1xuICAgICAgICAgICAgdGhpcy5yZXN1bHRQb2ludHMgPSBhbGxQb2ludHM7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFJlc3VsdC5wcm90b3R5cGUuZ2V0VGltZXN0YW1wID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50aW1lc3RhbXA7XG4gICAgfTtcbiAgICAvKkBPdmVycmlkZSovXG4gICAgUmVzdWx0LnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGV4dDtcbiAgICB9O1xuICAgIHJldHVybiBSZXN1bHQ7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gUmVzdWx0O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UmVzdWx0LmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuLypcbiAqIERpcmVjdCBwb3J0IHRvIFR5cGVTY3JpcHQgb2YgWlhpbmcgYnkgQWRyaWFuIFRvyJljxINcbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLypcbiAqIENvcHlyaWdodCAyMDA5IFpYaW5nIGF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKm5hbWVzcGFjZSBjb20uZ29vZ2xlLnp4aW5nIHsqL1xuLyoqXG4gKiBFbnVtZXJhdGVzIGJhcmNvZGUgZm9ybWF0cyBrbm93biB0byB0aGlzIHBhY2thZ2UuIFBsZWFzZSBrZWVwIGFscGhhYmV0aXplZC5cbiAqXG4gKiBAYXV0aG9yIFNlYW4gT3dlblxuICovXG52YXIgQmFyY29kZUZvcm1hdDtcbihmdW5jdGlvbiAoQmFyY29kZUZvcm1hdCkge1xuICAgIC8qKiBBenRlYyAyRCBiYXJjb2RlIGZvcm1hdC4gKi9cbiAgICBCYXJjb2RlRm9ybWF0W0JhcmNvZGVGb3JtYXRbXCJBWlRFQ1wiXSA9IDBdID0gXCJBWlRFQ1wiO1xuICAgIC8qKiBDT0RBQkFSIDFEIGZvcm1hdC4gKi9cbiAgICBCYXJjb2RlRm9ybWF0W0JhcmNvZGVGb3JtYXRbXCJDT0RBQkFSXCJdID0gMV0gPSBcIkNPREFCQVJcIjtcbiAgICAvKiogQ29kZSAzOSAxRCBmb3JtYXQuICovXG4gICAgQmFyY29kZUZvcm1hdFtCYXJjb2RlRm9ybWF0W1wiQ09ERV8zOVwiXSA9IDJdID0gXCJDT0RFXzM5XCI7XG4gICAgLyoqIENvZGUgOTMgMUQgZm9ybWF0LiAqL1xuICAgIEJhcmNvZGVGb3JtYXRbQmFyY29kZUZvcm1hdFtcIkNPREVfOTNcIl0gPSAzXSA9IFwiQ09ERV85M1wiO1xuICAgIC8qKiBDb2RlIDEyOCAxRCBmb3JtYXQuICovXG4gICAgQmFyY29kZUZvcm1hdFtCYXJjb2RlRm9ybWF0W1wiQ09ERV8xMjhcIl0gPSA0XSA9IFwiQ09ERV8xMjhcIjtcbiAgICAvKiogRGF0YSBNYXRyaXggMkQgYmFyY29kZSBmb3JtYXQuICovXG4gICAgQmFyY29kZUZvcm1hdFtCYXJjb2RlRm9ybWF0W1wiREFUQV9NQVRSSVhcIl0gPSA1XSA9IFwiREFUQV9NQVRSSVhcIjtcbiAgICAvKiogRUFOLTggMUQgZm9ybWF0LiAqL1xuICAgIEJhcmNvZGVGb3JtYXRbQmFyY29kZUZvcm1hdFtcIkVBTl84XCJdID0gNl0gPSBcIkVBTl84XCI7XG4gICAgLyoqIEVBTi0xMyAxRCBmb3JtYXQuICovXG4gICAgQmFyY29kZUZvcm1hdFtCYXJjb2RlRm9ybWF0W1wiRUFOXzEzXCJdID0gN10gPSBcIkVBTl8xM1wiO1xuICAgIC8qKiBJVEYgKEludGVybGVhdmVkIFR3byBvZiBGaXZlKSAxRCBmb3JtYXQuICovXG4gICAgQmFyY29kZUZvcm1hdFtCYXJjb2RlRm9ybWF0W1wiSVRGXCJdID0gOF0gPSBcIklURlwiO1xuICAgIC8qKiBNYXhpQ29kZSAyRCBiYXJjb2RlIGZvcm1hdC4gKi9cbiAgICBCYXJjb2RlRm9ybWF0W0JhcmNvZGVGb3JtYXRbXCJNQVhJQ09ERVwiXSA9IDldID0gXCJNQVhJQ09ERVwiO1xuICAgIC8qKiBQREY0MTcgZm9ybWF0LiAqL1xuICAgIEJhcmNvZGVGb3JtYXRbQmFyY29kZUZvcm1hdFtcIlBERl80MTdcIl0gPSAxMF0gPSBcIlBERl80MTdcIjtcbiAgICAvKiogUVIgQ29kZSAyRCBiYXJjb2RlIGZvcm1hdC4gKi9cbiAgICBCYXJjb2RlRm9ybWF0W0JhcmNvZGVGb3JtYXRbXCJRUl9DT0RFXCJdID0gMTFdID0gXCJRUl9DT0RFXCI7XG4gICAgLyoqIFJTUyAxNCAqL1xuICAgIEJhcmNvZGVGb3JtYXRbQmFyY29kZUZvcm1hdFtcIlJTU18xNFwiXSA9IDEyXSA9IFwiUlNTXzE0XCI7XG4gICAgLyoqIFJTUyBFWFBBTkRFRCAqL1xuICAgIEJhcmNvZGVGb3JtYXRbQmFyY29kZUZvcm1hdFtcIlJTU19FWFBBTkRFRFwiXSA9IDEzXSA9IFwiUlNTX0VYUEFOREVEXCI7XG4gICAgLyoqIFVQQy1BIDFEIGZvcm1hdC4gKi9cbiAgICBCYXJjb2RlRm9ybWF0W0JhcmNvZGVGb3JtYXRbXCJVUENfQVwiXSA9IDE0XSA9IFwiVVBDX0FcIjtcbiAgICAvKiogVVBDLUUgMUQgZm9ybWF0LiAqL1xuICAgIEJhcmNvZGVGb3JtYXRbQmFyY29kZUZvcm1hdFtcIlVQQ19FXCJdID0gMTVdID0gXCJVUENfRVwiO1xuICAgIC8qKiBVUEMvRUFOIGV4dGVuc2lvbiBmb3JtYXQuIE5vdCBhIHN0YW5kLWFsb25lIGZvcm1hdC4gKi9cbiAgICBCYXJjb2RlRm9ybWF0W0JhcmNvZGVGb3JtYXRbXCJVUENfRUFOX0VYVEVOU0lPTlwiXSA9IDE2XSA9IFwiVVBDX0VBTl9FWFRFTlNJT05cIjtcbn0pKEJhcmNvZGVGb3JtYXQgfHwgKEJhcmNvZGVGb3JtYXQgPSB7fSkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gQmFyY29kZUZvcm1hdDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUJhcmNvZGVGb3JtYXQuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IDIwMDggWlhpbmcgYXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qbmFtZXNwYWNlIGNvbS5nb29nbGUuenhpbmcgeyovXG4vKipcbiAqIFJlcHJlc2VudHMgc29tZSB0eXBlIG9mIG1ldGFkYXRhIGFib3V0IHRoZSByZXN1bHQgb2YgdGhlIGRlY29kaW5nIHRoYXQgdGhlIGRlY29kZXJcbiAqIHdpc2hlcyB0byBjb21tdW5pY2F0ZSBiYWNrIHRvIHRoZSBjYWxsZXIuXG4gKlxuICogQGF1dGhvciBTZWFuIE93ZW5cbiAqL1xudmFyIFJlc3VsdE1ldGFkYXRhVHlwZTtcbihmdW5jdGlvbiAoUmVzdWx0TWV0YWRhdGFUeXBlKSB7XG4gICAgLyoqXG4gICAgICogVW5zcGVjaWZpZWQsIGFwcGxpY2F0aW9uLXNwZWNpZmljIG1ldGFkYXRhLiBNYXBzIHRvIGFuIHVuc3BlY2lmaWVkIHtAbGluayBPYmplY3R9LlxuICAgICAqL1xuICAgIFJlc3VsdE1ldGFkYXRhVHlwZVtSZXN1bHRNZXRhZGF0YVR5cGVbXCJPVEhFUlwiXSA9IDBdID0gXCJPVEhFUlwiO1xuICAgIC8qKlxuICAgICAqIERlbm90ZXMgdGhlIGxpa2VseSBhcHByb3hpbWF0ZSBvcmllbnRhdGlvbiBvZiB0aGUgYmFyY29kZSBpbiB0aGUgaW1hZ2UuIFRoaXMgdmFsdWVcbiAgICAgKiBpcyBnaXZlbiBhcyBkZWdyZWVzIHJvdGF0ZWQgY2xvY2t3aXNlIGZyb20gdGhlIG5vcm1hbCwgdXByaWdodCBvcmllbnRhdGlvbi5cbiAgICAgKiBGb3IgZXhhbXBsZSBhIDFEIGJhcmNvZGUgd2hpY2ggd2FzIGZvdW5kIGJ5IHJlYWRpbmcgdG9wLXRvLWJvdHRvbSB3b3VsZCBiZVxuICAgICAqIHNhaWQgdG8gaGF2ZSBvcmllbnRhdGlvbiBcIjkwXCIuIFRoaXMga2V5IG1hcHMgdG8gYW4ge0BsaW5rIEludGVnZXJ9IHdob3NlXG4gICAgICogdmFsdWUgaXMgaW4gdGhlIHJhbmdlIFswLDM2MCkuXG4gICAgICovXG4gICAgUmVzdWx0TWV0YWRhdGFUeXBlW1Jlc3VsdE1ldGFkYXRhVHlwZVtcIk9SSUVOVEFUSU9OXCJdID0gMV0gPSBcIk9SSUVOVEFUSU9OXCI7XG4gICAgLyoqXG4gICAgICogPHA+MkQgYmFyY29kZSBmb3JtYXRzIHR5cGljYWxseSBlbmNvZGUgdGV4dCwgYnV0IGFsbG93IGZvciBhIHNvcnQgb2YgJ2J5dGUgbW9kZSdcbiAgICAgKiB3aGljaCBpcyBzb21ldGltZXMgdXNlZCB0byBlbmNvZGUgYmluYXJ5IGRhdGEuIFdoaWxlIHtAbGluayBSZXN1bHR9IG1ha2VzIGF2YWlsYWJsZVxuICAgICAqIHRoZSBjb21wbGV0ZSByYXcgYnl0ZXMgaW4gdGhlIGJhcmNvZGUgZm9yIHRoZXNlIGZvcm1hdHMsIGl0IGRvZXMgbm90IG9mZmVyIHRoZSBieXRlc1xuICAgICAqIGZyb20gdGhlIGJ5dGUgc2VnbWVudHMgYWxvbmUuPC9wPlxuICAgICAqXG4gICAgICogPHA+VGhpcyBtYXBzIHRvIGEge0BsaW5rIGphdmEudXRpbC5MaXN0fSBvZiBieXRlIGFycmF5cyBjb3JyZXNwb25kaW5nIHRvIHRoZVxuICAgICAqIHJhdyBieXRlcyBpbiB0aGUgYnl0ZSBzZWdtZW50cyBpbiB0aGUgYmFyY29kZSwgaW4gb3JkZXIuPC9wPlxuICAgICAqL1xuICAgIFJlc3VsdE1ldGFkYXRhVHlwZVtSZXN1bHRNZXRhZGF0YVR5cGVbXCJCWVRFX1NFR01FTlRTXCJdID0gMl0gPSBcIkJZVEVfU0VHTUVOVFNcIjtcbiAgICAvKipcbiAgICAgKiBFcnJvciBjb3JyZWN0aW9uIGxldmVsIHVzZWQsIGlmIGFwcGxpY2FibGUuIFRoZSB2YWx1ZSB0eXBlIGRlcGVuZHMgb24gdGhlXG4gICAgICogZm9ybWF0LCBidXQgaXMgdHlwaWNhbGx5IGEgU3RyaW5nLlxuICAgICAqL1xuICAgIFJlc3VsdE1ldGFkYXRhVHlwZVtSZXN1bHRNZXRhZGF0YVR5cGVbXCJFUlJPUl9DT1JSRUNUSU9OX0xFVkVMXCJdID0gM10gPSBcIkVSUk9SX0NPUlJFQ1RJT05fTEVWRUxcIjtcbiAgICAvKipcbiAgICAgKiBGb3Igc29tZSBwZXJpb2RpY2FscywgaW5kaWNhdGVzIHRoZSBpc3N1ZSBudW1iZXIgYXMgYW4ge0BsaW5rIEludGVnZXJ9LlxuICAgICAqL1xuICAgIFJlc3VsdE1ldGFkYXRhVHlwZVtSZXN1bHRNZXRhZGF0YVR5cGVbXCJJU1NVRV9OVU1CRVJcIl0gPSA0XSA9IFwiSVNTVUVfTlVNQkVSXCI7XG4gICAgLyoqXG4gICAgICogRm9yIHNvbWUgcHJvZHVjdHMsIGluZGljYXRlcyB0aGUgc3VnZ2VzdGVkIHJldGFpbCBwcmljZSBpbiB0aGUgYmFyY29kZSBhcyBhXG4gICAgICogZm9ybWF0dGVkIHtAbGluayBTdHJpbmd9LlxuICAgICAqL1xuICAgIFJlc3VsdE1ldGFkYXRhVHlwZVtSZXN1bHRNZXRhZGF0YVR5cGVbXCJTVUdHRVNURURfUFJJQ0VcIl0gPSA1XSA9IFwiU1VHR0VTVEVEX1BSSUNFXCI7XG4gICAgLyoqXG4gICAgICogRm9yIHNvbWUgcHJvZHVjdHMsIHRoZSBwb3NzaWJsZSBjb3VudHJ5IG9mIG1hbnVmYWN0dXJlIGFzIGEge0BsaW5rIFN0cmluZ30gZGVub3RpbmcgdGhlXG4gICAgICogSVNPIGNvdW50cnkgY29kZS4gU29tZSBtYXAgdG8gbXVsdGlwbGUgcG9zc2libGUgY291bnRyaWVzLCBsaWtlIFwiVVMvQ0FcIi5cbiAgICAgKi9cbiAgICBSZXN1bHRNZXRhZGF0YVR5cGVbUmVzdWx0TWV0YWRhdGFUeXBlW1wiUE9TU0lCTEVfQ09VTlRSWVwiXSA9IDZdID0gXCJQT1NTSUJMRV9DT1VOVFJZXCI7XG4gICAgLyoqXG4gICAgICogRm9yIHNvbWUgcHJvZHVjdHMsIHRoZSBleHRlbnNpb24gdGV4dFxuICAgICAqL1xuICAgIFJlc3VsdE1ldGFkYXRhVHlwZVtSZXN1bHRNZXRhZGF0YVR5cGVbXCJVUENfRUFOX0VYVEVOU0lPTlwiXSA9IDddID0gXCJVUENfRUFOX0VYVEVOU0lPTlwiO1xuICAgIC8qKlxuICAgICAqIFBERjQxNy1zcGVjaWZpYyBtZXRhZGF0YVxuICAgICAqL1xuICAgIFJlc3VsdE1ldGFkYXRhVHlwZVtSZXN1bHRNZXRhZGF0YVR5cGVbXCJQREY0MTdfRVhUUkFfTUVUQURBVEFcIl0gPSA4XSA9IFwiUERGNDE3X0VYVFJBX01FVEFEQVRBXCI7XG4gICAgLyoqXG4gICAgICogSWYgdGhlIGNvZGUgZm9ybWF0IHN1cHBvcnRzIHN0cnVjdHVyZWQgYXBwZW5kIGFuZCB0aGUgY3VycmVudCBzY2FubmVkIGNvZGUgaXMgcGFydCBvZiBvbmUgdGhlbiB0aGVcbiAgICAgKiBzZXF1ZW5jZSBudW1iZXIgaXMgZ2l2ZW4gd2l0aCBpdC5cbiAgICAgKi9cbiAgICBSZXN1bHRNZXRhZGF0YVR5cGVbUmVzdWx0TWV0YWRhdGFUeXBlW1wiU1RSVUNUVVJFRF9BUFBFTkRfU0VRVUVOQ0VcIl0gPSA5XSA9IFwiU1RSVUNUVVJFRF9BUFBFTkRfU0VRVUVOQ0VcIjtcbiAgICAvKipcbiAgICAgKiBJZiB0aGUgY29kZSBmb3JtYXQgc3VwcG9ydHMgc3RydWN0dXJlZCBhcHBlbmQgYW5kIHRoZSBjdXJyZW50IHNjYW5uZWQgY29kZSBpcyBwYXJ0IG9mIG9uZSB0aGVuIHRoZVxuICAgICAqIHBhcml0eSBpcyBnaXZlbiB3aXRoIGl0LlxuICAgICAqL1xuICAgIFJlc3VsdE1ldGFkYXRhVHlwZVtSZXN1bHRNZXRhZGF0YVR5cGVbXCJTVFJVQ1RVUkVEX0FQUEVORF9QQVJJVFlcIl0gPSAxMF0gPSBcIlNUUlVDVFVSRURfQVBQRU5EX1BBUklUWVwiO1xufSkoUmVzdWx0TWV0YWRhdGFUeXBlIHx8IChSZXN1bHRNZXRhZGF0YVR5cGUgPSB7fSkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gUmVzdWx0TWV0YWRhdGFUeXBlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UmVzdWx0TWV0YWRhdGFUeXBlLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuLypcbiAqIENvcHlyaWdodCAyMDA3IFpYaW5nIGF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vKm5hbWVzcGFjZSBjb20uZ29vZ2xlLnp4aW5nLmNvbW1vbiB7Ki9cbi8qaW1wb3J0IGphdmEudXRpbC5MaXN0OyovXG4vKipcbiAqIDxwPkVuY2Fwc3VsYXRlcyB0aGUgcmVzdWx0IG9mIGRlY29kaW5nIGEgbWF0cml4IG9mIGJpdHMuIFRoaXMgdHlwaWNhbGx5XG4gKiBhcHBsaWVzIHRvIDJEIGJhcmNvZGUgZm9ybWF0cy4gRm9yIG5vdyBpdCBjb250YWlucyB0aGUgcmF3IGJ5dGVzIG9idGFpbmVkLFxuICogYXMgd2VsbCBhcyBhIFN0cmluZyBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSBieXRlcywgaWYgYXBwbGljYWJsZS48L3A+XG4gKlxuICogQGF1dGhvciBTZWFuIE93ZW5cbiAqL1xudmFyIERlY29kZXJSZXN1bHQgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgLy8gcHVibGljIGNvbnN0cnVjdG9yKHJhd0J5dGVzOiBVaW50OEFycmF5LFxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IHN0cmluZyxcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgICBMaXN0PFVpbnQ4QXJyYXk+IGJ5dGVTZWdtZW50cyxcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZWNMZXZlbCkge1xuICAgIC8vICAgdGhpcyhyYXdCeXRlcywgdGV4dCwgYnl0ZVNlZ21lbnRzLCBlY0xldmVsLCAtMSwgLTEpXG4gICAgLy8gfVxuICAgIGZ1bmN0aW9uIERlY29kZXJSZXN1bHQocmF3Qnl0ZXMsIHRleHQsIGJ5dGVTZWdtZW50cywgZWNMZXZlbCwgc3RydWN0dXJlZEFwcGVuZFNlcXVlbmNlTnVtYmVyLCBzdHJ1Y3R1cmVkQXBwZW5kUGFyaXR5KSB7XG4gICAgICAgIGlmIChzdHJ1Y3R1cmVkQXBwZW5kU2VxdWVuY2VOdW1iZXIgPT09IHZvaWQgMCkgeyBzdHJ1Y3R1cmVkQXBwZW5kU2VxdWVuY2VOdW1iZXIgPSAtMTsgfVxuICAgICAgICBpZiAoc3RydWN0dXJlZEFwcGVuZFBhcml0eSA9PT0gdm9pZCAwKSB7IHN0cnVjdHVyZWRBcHBlbmRQYXJpdHkgPSAtMTsgfVxuICAgICAgICB0aGlzLnJhd0J5dGVzID0gcmF3Qnl0ZXM7XG4gICAgICAgIHRoaXMudGV4dCA9IHRleHQ7XG4gICAgICAgIHRoaXMuYnl0ZVNlZ21lbnRzID0gYnl0ZVNlZ21lbnRzO1xuICAgICAgICB0aGlzLmVjTGV2ZWwgPSBlY0xldmVsO1xuICAgICAgICB0aGlzLnN0cnVjdHVyZWRBcHBlbmRTZXF1ZW5jZU51bWJlciA9IHN0cnVjdHVyZWRBcHBlbmRTZXF1ZW5jZU51bWJlcjtcbiAgICAgICAgdGhpcy5zdHJ1Y3R1cmVkQXBwZW5kUGFyaXR5ID0gc3RydWN0dXJlZEFwcGVuZFBhcml0eTtcbiAgICAgICAgdGhpcy5udW1CaXRzID0gKHJhd0J5dGVzID09PSB1bmRlZmluZWQgfHwgcmF3Qnl0ZXMgPT09IG51bGwpID8gMCA6IDggKiByYXdCeXRlcy5sZW5ndGg7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEByZXR1cm4gcmF3IGJ5dGVzIHJlcHJlc2VudGluZyB0aGUgcmVzdWx0LCBvciB7QGNvZGUgbnVsbH0gaWYgbm90IGFwcGxpY2FibGVcbiAgICAgKi9cbiAgICBEZWNvZGVyUmVzdWx0LnByb3RvdHlwZS5nZXRSYXdCeXRlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmF3Qnl0ZXM7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIGhvdyBtYW55IGJpdHMgb2Yge0BsaW5rICNnZXRSYXdCeXRlcygpfSBhcmUgdmFsaWQ7IHR5cGljYWxseSA4IHRpbWVzIGl0cyBsZW5ndGhcbiAgICAgKiBAc2luY2UgMy4zLjBcbiAgICAgKi9cbiAgICBEZWNvZGVyUmVzdWx0LnByb3RvdHlwZS5nZXROdW1CaXRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5udW1CaXRzO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHBhcmFtIG51bUJpdHMgb3ZlcnJpZGVzIHRoZSBudW1iZXIgb2YgYml0cyB0aGF0IGFyZSB2YWxpZCBpbiB7QGxpbmsgI2dldFJhd0J5dGVzKCl9XG4gICAgICogQHNpbmNlIDMuMy4wXG4gICAgICovXG4gICAgRGVjb2RlclJlc3VsdC5wcm90b3R5cGUuc2V0TnVtQml0cyA9IGZ1bmN0aW9uIChudW1CaXRzIC8qaW50Ki8pIHtcbiAgICAgICAgdGhpcy5udW1CaXRzID0gbnVtQml0cztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEByZXR1cm4gdGV4dCByZXByZXNlbnRhdGlvbiBvZiB0aGUgcmVzdWx0XG4gICAgICovXG4gICAgRGVjb2RlclJlc3VsdC5wcm90b3R5cGUuZ2V0VGV4dCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGV4dDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEByZXR1cm4gbGlzdCBvZiBieXRlIHNlZ21lbnRzIGluIHRoZSByZXN1bHQsIG9yIHtAY29kZSBudWxsfSBpZiBub3QgYXBwbGljYWJsZVxuICAgICAqL1xuICAgIERlY29kZXJSZXN1bHQucHJvdG90eXBlLmdldEJ5dGVTZWdtZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnl0ZVNlZ21lbnRzO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHJldHVybiBuYW1lIG9mIGVycm9yIGNvcnJlY3Rpb24gbGV2ZWwgdXNlZCwgb3Ige0Bjb2RlIG51bGx9IGlmIG5vdCBhcHBsaWNhYmxlXG4gICAgICovXG4gICAgRGVjb2RlclJlc3VsdC5wcm90b3R5cGUuZ2V0RUNMZXZlbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWNMZXZlbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEByZXR1cm4gbnVtYmVyIG9mIGVycm9ycyBjb3JyZWN0ZWQsIG9yIHtAY29kZSBudWxsfSBpZiBub3QgYXBwbGljYWJsZVxuICAgICAqL1xuICAgIERlY29kZXJSZXN1bHQucHJvdG90eXBlLmdldEVycm9yc0NvcnJlY3RlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JzQ29ycmVjdGVkO1xuICAgIH07XG4gICAgRGVjb2RlclJlc3VsdC5wcm90b3R5cGUuc2V0RXJyb3JzQ29ycmVjdGVkID0gZnVuY3Rpb24gKGVycm9yc0NvcnJlY3RlZCAvKkludGVnZXIqLykge1xuICAgICAgICB0aGlzLmVycm9yc0NvcnJlY3RlZCA9IGVycm9yc0NvcnJlY3RlZDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEByZXR1cm4gbnVtYmVyIG9mIGVyYXN1cmVzIGNvcnJlY3RlZCwgb3Ige0Bjb2RlIG51bGx9IGlmIG5vdCBhcHBsaWNhYmxlXG4gICAgICovXG4gICAgRGVjb2RlclJlc3VsdC5wcm90b3R5cGUuZ2V0RXJhc3VyZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVyYXN1cmVzO1xuICAgIH07XG4gICAgRGVjb2RlclJlc3VsdC5wcm90b3R5cGUuc2V0RXJhc3VyZXMgPSBmdW5jdGlvbiAoZXJhc3VyZXMgLypJbnRlZ2VyKi8pIHtcbiAgICAgICAgdGhpcy5lcmFzdXJlcyA9IGVyYXN1cmVzO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHJldHVybiBhcmJpdHJhcnkgYWRkaXRpb25hbCBtZXRhZGF0YVxuICAgICAqL1xuICAgIERlY29kZXJSZXN1bHQucHJvdG90eXBlLmdldE90aGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vdGhlcjtcbiAgICB9O1xuICAgIERlY29kZXJSZXN1bHQucHJvdG90eXBlLnNldE90aGVyID0gZnVuY3Rpb24gKG90aGVyKSB7XG4gICAgICAgIHRoaXMub3RoZXIgPSBvdGhlcjtcbiAgICB9O1xuICAgIERlY29kZXJSZXN1bHQucHJvdG90eXBlLmhhc1N0cnVjdHVyZWRBcHBlbmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0cnVjdHVyZWRBcHBlbmRQYXJpdHkgPj0gMCAmJiB0aGlzLnN0cnVjdHVyZWRBcHBlbmRTZXF1ZW5jZU51bWJlciA+PSAwO1xuICAgIH07XG4gICAgRGVjb2RlclJlc3VsdC5wcm90b3R5cGUuZ2V0U3RydWN0dXJlZEFwcGVuZFBhcml0eSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RydWN0dXJlZEFwcGVuZFBhcml0eTtcbiAgICB9O1xuICAgIERlY29kZXJSZXN1bHQucHJvdG90eXBlLmdldFN0cnVjdHVyZWRBcHBlbmRTZXF1ZW5jZU51bWJlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RydWN0dXJlZEFwcGVuZFNlcXVlbmNlTnVtYmVyO1xuICAgIH07XG4gICAgcmV0dXJuIERlY29kZXJSZXN1bHQ7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gRGVjb2RlclJlc3VsdDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURlY29kZXJSZXN1bHQuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IDIwMDcgWlhpbmcgYXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuLi8uLi9JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25cIik7XG4vKipcbiAqIDxwPlRoaXMgY2xhc3MgY29udGFpbnMgdXRpbGl0eSBtZXRob2RzIGZvciBwZXJmb3JtaW5nIG1hdGhlbWF0aWNhbCBvcGVyYXRpb25zIG92ZXJcbiAqIHRoZSBHYWxvaXMgRmllbGRzLiBPcGVyYXRpb25zIHVzZSBhIGdpdmVuIHByaW1pdGl2ZSBwb2x5bm9taWFsIGluIGNhbGN1bGF0aW9ucy48L3A+XG4gKlxuICogPHA+VGhyb3VnaG91dCB0aGlzIHBhY2thZ2UsIGVsZW1lbnRzIG9mIHRoZSBHRiBhcmUgcmVwcmVzZW50ZWQgYXMgYW4ge0Bjb2RlIGludH1cbiAqIGZvciBjb252ZW5pZW5jZSBhbmQgc3BlZWQgKGJ1dCBhdCB0aGUgY29zdCBvZiBtZW1vcnkpLlxuICogPC9wPlxuICpcbiAqIEBhdXRob3IgU2VhbiBPd2VuXG4gKiBAYXV0aG9yIERhdmlkIE9saXZpZXJcbiAqL1xudmFyIEFic3RyYWN0R2VuZXJpY0dGID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEFic3RyYWN0R2VuZXJpY0dGKCkge1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIDIgdG8gdGhlIHBvd2VyIG9mIGEgaW4gR0Yoc2l6ZSlcbiAgICAgKi9cbiAgICBBYnN0cmFjdEdlbmVyaWNHRi5wcm90b3R5cGUuZXhwID0gZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXhwVGFibGVbYV07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIGJhc2UgMiBsb2cgb2YgYSBpbiBHRihzaXplKVxuICAgICAqL1xuICAgIEFic3RyYWN0R2VuZXJpY0dGLnByb3RvdHlwZS5sb2cgPSBmdW5jdGlvbiAoYSAvKmludCovKSB7XG4gICAgICAgIGlmIChhID09PSAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmxvZ1RhYmxlW2FdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogSW1wbGVtZW50cyBib3RoIGFkZGl0aW9uIGFuZCBzdWJ0cmFjdGlvbiAtLSB0aGV5IGFyZSB0aGUgc2FtZSBpbiBHRihzaXplKS5cbiAgICAgKlxuICAgICAqIEByZXR1cm4gc3VtL2RpZmZlcmVuY2Ugb2YgYSBhbmQgYlxuICAgICAqL1xuICAgIEFic3RyYWN0R2VuZXJpY0dGLmFkZE9yU3VidHJhY3QgPSBmdW5jdGlvbiAoYSAvKmludCovLCBiIC8qaW50Ki8pIHtcbiAgICAgICAgcmV0dXJuIGEgXiBiO1xuICAgIH07XG4gICAgcmV0dXJuIEFic3RyYWN0R2VuZXJpY0dGO1xufSgpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IEFic3RyYWN0R2VuZXJpY0dGO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QWJzdHJhY3RHZW5lcmljR0YuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IDIwMDcgWlhpbmcgYXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qbmFtZXNwYWNlIGNvbS5nb29nbGUuenhpbmcuY29tbW9uLnJlZWRzb2xvbW9uIHsqL1xudmFyIEFic3RyYWN0R2VuZXJpY0dGXzEgPSByZXF1aXJlKFwiLi9BYnN0cmFjdEdlbmVyaWNHRlwiKTtcbnZhciBTeXN0ZW1fMSA9IHJlcXVpcmUoXCIuLi8uLi91dGlsL1N5c3RlbVwiKTtcbnZhciBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuLi8uLi9JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25cIik7XG4vKipcbiAqIDxwPlJlcHJlc2VudHMgYSBwb2x5bm9taWFsIHdob3NlIGNvZWZmaWNpZW50cyBhcmUgZWxlbWVudHMgb2YgYSBHRi5cbiAqIEluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIGFyZSBpbW11dGFibGUuPC9wPlxuICpcbiAqIDxwPk11Y2ggY3JlZGl0IGlzIGR1ZSB0byBXaWxsaWFtIFJ1Y2tsaWRnZSBzaW5jZSBwb3J0aW9ucyBvZiB0aGlzIGNvZGUgYXJlIGFuIGluZGlyZWN0XG4gKiBwb3J0IG9mIGhpcyBDKysgUmVlZC1Tb2xvbW9uIGltcGxlbWVudGF0aW9uLjwvcD5cbiAqXG4gKiBAYXV0aG9yIFNlYW4gT3dlblxuICovXG52YXIgR2VuZXJpY0dGUG9seSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0gZmllbGQgdGhlIHtAbGluayBHZW5lcmljR0Z9IGluc3RhbmNlIHJlcHJlc2VudGluZyB0aGUgZmllbGQgdG8gdXNlXG4gICAgICogdG8gcGVyZm9ybSBjb21wdXRhdGlvbnNcbiAgICAgKiBAcGFyYW0gY29lZmZpY2llbnRzIGNvZWZmaWNpZW50cyBhcyBpbnRzIHJlcHJlc2VudGluZyBlbGVtZW50cyBvZiBHRihzaXplKSwgYXJyYW5nZWRcbiAgICAgKiBmcm9tIG1vc3Qgc2lnbmlmaWNhbnQgKGhpZ2hlc3QtcG93ZXIgdGVybSkgY29lZmZpY2llbnQgdG8gbGVhc3Qgc2lnbmlmaWNhbnRcbiAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiBhcmd1bWVudCBpcyBudWxsIG9yIGVtcHR5LFxuICAgICAqIG9yIGlmIGxlYWRpbmcgY29lZmZpY2llbnQgaXMgMCBhbmQgdGhpcyBpcyBub3QgYVxuICAgICAqIGNvbnN0YW50IHBvbHlub21pYWwgKHRoYXQgaXMsIGl0IGlzIG5vdCB0aGUgbW9ub21pYWwgXCIwXCIpXG4gICAgICovXG4gICAgZnVuY3Rpb24gR2VuZXJpY0dGUG9seShmaWVsZCwgY29lZmZpY2llbnRzKSB7XG4gICAgICAgIGlmIChjb2VmZmljaWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZmllbGQgPSBmaWVsZDtcbiAgICAgICAgdmFyIGNvZWZmaWNpZW50c0xlbmd0aCA9IGNvZWZmaWNpZW50cy5sZW5ndGg7XG4gICAgICAgIGlmIChjb2VmZmljaWVudHNMZW5ndGggPiAxICYmIGNvZWZmaWNpZW50c1swXSA9PT0gMCkge1xuICAgICAgICAgICAgLy8gTGVhZGluZyB0ZXJtIG11c3QgYmUgbm9uLXplcm8gZm9yIGFueXRoaW5nIGV4Y2VwdCB0aGUgY29uc3RhbnQgcG9seW5vbWlhbCBcIjBcIlxuICAgICAgICAgICAgdmFyIGZpcnN0Tm9uWmVybyA9IDE7XG4gICAgICAgICAgICB3aGlsZSAoZmlyc3ROb25aZXJvIDwgY29lZmZpY2llbnRzTGVuZ3RoICYmIGNvZWZmaWNpZW50c1tmaXJzdE5vblplcm9dID09PSAwKSB7XG4gICAgICAgICAgICAgICAgZmlyc3ROb25aZXJvKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZmlyc3ROb25aZXJvID09PSBjb2VmZmljaWVudHNMZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvZWZmaWNpZW50cyA9IEludDMyQXJyYXkuZnJvbShbMF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb2VmZmljaWVudHMgPSBuZXcgSW50MzJBcnJheShjb2VmZmljaWVudHNMZW5ndGggLSBmaXJzdE5vblplcm8pO1xuICAgICAgICAgICAgICAgIFN5c3RlbV8xLmRlZmF1bHQuYXJyYXljb3B5KGNvZWZmaWNpZW50cywgZmlyc3ROb25aZXJvLCB0aGlzLmNvZWZmaWNpZW50cywgMCwgdGhpcy5jb2VmZmljaWVudHMubGVuZ3RoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY29lZmZpY2llbnRzID0gY29lZmZpY2llbnRzO1xuICAgICAgICB9XG4gICAgfVxuICAgIEdlbmVyaWNHRlBvbHkucHJvdG90eXBlLmdldENvZWZmaWNpZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29lZmZpY2llbnRzO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHJldHVybiBkZWdyZWUgb2YgdGhpcyBwb2x5bm9taWFsXG4gICAgICovXG4gICAgR2VuZXJpY0dGUG9seS5wcm90b3R5cGUuZ2V0RGVncmVlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2VmZmljaWVudHMubGVuZ3RoIC0gMTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEByZXR1cm4gdHJ1ZSBpZmYgdGhpcyBwb2x5bm9taWFsIGlzIHRoZSBtb25vbWlhbCBcIjBcIlxuICAgICAqL1xuICAgIEdlbmVyaWNHRlBvbHkucHJvdG90eXBlLmlzWmVybyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29lZmZpY2llbnRzWzBdID09PSAwO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHJldHVybiBjb2VmZmljaWVudCBvZiB4XmRlZ3JlZSB0ZXJtIGluIHRoaXMgcG9seW5vbWlhbFxuICAgICAqL1xuICAgIEdlbmVyaWNHRlBvbHkucHJvdG90eXBlLmdldENvZWZmaWNpZW50ID0gZnVuY3Rpb24gKGRlZ3JlZSAvKmludCovKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvZWZmaWNpZW50c1t0aGlzLmNvZWZmaWNpZW50cy5sZW5ndGggLSAxIC0gZGVncmVlXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEByZXR1cm4gZXZhbHVhdGlvbiBvZiB0aGlzIHBvbHlub21pYWwgYXQgYSBnaXZlbiBwb2ludFxuICAgICAqL1xuICAgIEdlbmVyaWNHRlBvbHkucHJvdG90eXBlLmV2YWx1YXRlQXQgPSBmdW5jdGlvbiAoYSAvKmludCovKSB7XG4gICAgICAgIGlmIChhID09PSAwKSB7XG4gICAgICAgICAgICAvLyBKdXN0IHJldHVybiB0aGUgeF4wIGNvZWZmaWNpZW50XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRDb2VmZmljaWVudCgwKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgY29lZmZpY2llbnRzID0gdGhpcy5jb2VmZmljaWVudHM7XG4gICAgICAgIHZhciByZXN1bHQ7XG4gICAgICAgIGlmIChhID09PSAxKSB7XG4gICAgICAgICAgICAvLyBKdXN0IHRoZSBzdW0gb2YgdGhlIGNvZWZmaWNpZW50c1xuICAgICAgICAgICAgcmVzdWx0ID0gMDtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGhfMSA9IGNvZWZmaWNpZW50cy5sZW5ndGg7IGkgIT09IGxlbmd0aF8xOyBpKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgY29lZmZpY2llbnQgPSBjb2VmZmljaWVudHNbaV07XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gQWJzdHJhY3RHZW5lcmljR0ZfMS5kZWZhdWx0LmFkZE9yU3VidHJhY3QocmVzdWx0LCBjb2VmZmljaWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCA9IGNvZWZmaWNpZW50c1swXTtcbiAgICAgICAgdmFyIHNpemUgPSBjb2VmZmljaWVudHMubGVuZ3RoO1xuICAgICAgICB2YXIgZmllbGQgPSB0aGlzLmZpZWxkO1xuICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IHNpemU7IGkrKykge1xuICAgICAgICAgICAgcmVzdWx0ID0gQWJzdHJhY3RHZW5lcmljR0ZfMS5kZWZhdWx0LmFkZE9yU3VidHJhY3QoZmllbGQubXVsdGlwbHkoYSwgcmVzdWx0KSwgY29lZmZpY2llbnRzW2ldKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgR2VuZXJpY0dGUG9seS5wcm90b3R5cGUuYWRkT3JTdWJ0cmFjdCA9IGZ1bmN0aW9uIChvdGhlcikge1xuICAgICAgICBpZiAoIXRoaXMuZmllbGQuZXF1YWxzKG90aGVyLmZpZWxkKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoJ0dlbmVyaWNHRlBvbHlzIGRvIG5vdCBoYXZlIHNhbWUgR2VuZXJpY0dGIGZpZWxkJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNaZXJvKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBvdGhlcjtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3RoZXIuaXNaZXJvKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzbWFsbGVyQ29lZmZpY2llbnRzID0gdGhpcy5jb2VmZmljaWVudHM7XG4gICAgICAgIHZhciBsYXJnZXJDb2VmZmljaWVudHMgPSBvdGhlci5jb2VmZmljaWVudHM7XG4gICAgICAgIGlmIChzbWFsbGVyQ29lZmZpY2llbnRzLmxlbmd0aCA+IGxhcmdlckNvZWZmaWNpZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHZhciB0ZW1wID0gc21hbGxlckNvZWZmaWNpZW50cztcbiAgICAgICAgICAgIHNtYWxsZXJDb2VmZmljaWVudHMgPSBsYXJnZXJDb2VmZmljaWVudHM7XG4gICAgICAgICAgICBsYXJnZXJDb2VmZmljaWVudHMgPSB0ZW1wO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzdW1EaWZmID0gbmV3IEludDMyQXJyYXkobGFyZ2VyQ29lZmZpY2llbnRzLmxlbmd0aCk7XG4gICAgICAgIHZhciBsZW5ndGhEaWZmID0gbGFyZ2VyQ29lZmZpY2llbnRzLmxlbmd0aCAtIHNtYWxsZXJDb2VmZmljaWVudHMubGVuZ3RoO1xuICAgICAgICAvLyBDb3B5IGhpZ2gtb3JkZXIgdGVybXMgb25seSBmb3VuZCBpbiBoaWdoZXItZGVncmVlIHBvbHlub21pYWwncyBjb2VmZmljaWVudHNcbiAgICAgICAgU3lzdGVtXzEuZGVmYXVsdC5hcnJheWNvcHkobGFyZ2VyQ29lZmZpY2llbnRzLCAwLCBzdW1EaWZmLCAwLCBsZW5ndGhEaWZmKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IGxlbmd0aERpZmY7IGkgPCBsYXJnZXJDb2VmZmljaWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHN1bURpZmZbaV0gPSBBYnN0cmFjdEdlbmVyaWNHRl8xLmRlZmF1bHQuYWRkT3JTdWJ0cmFjdChzbWFsbGVyQ29lZmZpY2llbnRzW2kgLSBsZW5ndGhEaWZmXSwgbGFyZ2VyQ29lZmZpY2llbnRzW2ldKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IEdlbmVyaWNHRlBvbHkodGhpcy5maWVsZCwgc3VtRGlmZik7XG4gICAgfTtcbiAgICBHZW5lcmljR0ZQb2x5LnByb3RvdHlwZS5tdWx0aXBseSA9IGZ1bmN0aW9uIChvdGhlcikge1xuICAgICAgICBpZiAoIXRoaXMuZmllbGQuZXF1YWxzKG90aGVyLmZpZWxkKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoJ0dlbmVyaWNHRlBvbHlzIGRvIG5vdCBoYXZlIHNhbWUgR2VuZXJpY0dGIGZpZWxkJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNaZXJvKCkgfHwgb3RoZXIuaXNaZXJvKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZpZWxkLmdldFplcm8oKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYUNvZWZmaWNpZW50cyA9IHRoaXMuY29lZmZpY2llbnRzO1xuICAgICAgICB2YXIgYUxlbmd0aCA9IGFDb2VmZmljaWVudHMubGVuZ3RoO1xuICAgICAgICB2YXIgYkNvZWZmaWNpZW50cyA9IG90aGVyLmNvZWZmaWNpZW50cztcbiAgICAgICAgdmFyIGJMZW5ndGggPSBiQ29lZmZpY2llbnRzLmxlbmd0aDtcbiAgICAgICAgdmFyIHByb2R1Y3QgPSBuZXcgSW50MzJBcnJheShhTGVuZ3RoICsgYkxlbmd0aCAtIDEpO1xuICAgICAgICB2YXIgZmllbGQgPSB0aGlzLmZpZWxkO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFMZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIGFDb2VmZiA9IGFDb2VmZmljaWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGJMZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgIHByb2R1Y3RbaSArIGpdID0gQWJzdHJhY3RHZW5lcmljR0ZfMS5kZWZhdWx0LmFkZE9yU3VidHJhY3QocHJvZHVjdFtpICsgal0sIGZpZWxkLm11bHRpcGx5KGFDb2VmZiwgYkNvZWZmaWNpZW50c1tqXSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgR2VuZXJpY0dGUG9seShmaWVsZCwgcHJvZHVjdCk7XG4gICAgfTtcbiAgICBHZW5lcmljR0ZQb2x5LnByb3RvdHlwZS5tdWx0aXBseVNjYWxhciA9IGZ1bmN0aW9uIChzY2FsYXIgLyppbnQqLykge1xuICAgICAgICBpZiAoc2NhbGFyID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5maWVsZC5nZXRaZXJvKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNjYWxhciA9PT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHNpemUgPSB0aGlzLmNvZWZmaWNpZW50cy5sZW5ndGg7XG4gICAgICAgIHZhciBmaWVsZCA9IHRoaXMuZmllbGQ7XG4gICAgICAgIHZhciBwcm9kdWN0ID0gbmV3IEludDMyQXJyYXkoc2l6ZSk7XG4gICAgICAgIHZhciBjb2VmZmljaWVudHMgPSB0aGlzLmNvZWZmaWNpZW50cztcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgICAgIHByb2R1Y3RbaV0gPSBmaWVsZC5tdWx0aXBseShjb2VmZmljaWVudHNbaV0sIHNjYWxhcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBHZW5lcmljR0ZQb2x5KGZpZWxkLCBwcm9kdWN0KTtcbiAgICB9O1xuICAgIEdlbmVyaWNHRlBvbHkucHJvdG90eXBlLm11bHRpcGx5QnlNb25vbWlhbCA9IGZ1bmN0aW9uIChkZWdyZWUgLyppbnQqLywgY29lZmZpY2llbnQgLyppbnQqLykge1xuICAgICAgICBpZiAoZGVncmVlIDwgMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29lZmZpY2llbnQgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZpZWxkLmdldFplcm8oKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgY29lZmZpY2llbnRzID0gdGhpcy5jb2VmZmljaWVudHM7XG4gICAgICAgIHZhciBzaXplID0gY29lZmZpY2llbnRzLmxlbmd0aDtcbiAgICAgICAgdmFyIHByb2R1Y3QgPSBuZXcgSW50MzJBcnJheShzaXplICsgZGVncmVlKTtcbiAgICAgICAgdmFyIGZpZWxkID0gdGhpcy5maWVsZDtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgICAgIHByb2R1Y3RbaV0gPSBmaWVsZC5tdWx0aXBseShjb2VmZmljaWVudHNbaV0sIGNvZWZmaWNpZW50KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IEdlbmVyaWNHRlBvbHkoZmllbGQsIHByb2R1Y3QpO1xuICAgIH07XG4gICAgR2VuZXJpY0dGUG9seS5wcm90b3R5cGUuZGl2aWRlID0gZnVuY3Rpb24gKG90aGVyKSB7XG4gICAgICAgIGlmICghdGhpcy5maWVsZC5lcXVhbHMob3RoZXIuZmllbGQpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgnR2VuZXJpY0dGUG9seXMgZG8gbm90IGhhdmUgc2FtZSBHZW5lcmljR0YgZmllbGQnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3RoZXIuaXNaZXJvKCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCdEaXZpZGUgYnkgMCcpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBmaWVsZCA9IHRoaXMuZmllbGQ7XG4gICAgICAgIHZhciBxdW90aWVudCA9IGZpZWxkLmdldFplcm8oKTtcbiAgICAgICAgdmFyIHJlbWFpbmRlciA9IHRoaXM7XG4gICAgICAgIHZhciBkZW5vbWluYXRvckxlYWRpbmdUZXJtID0gb3RoZXIuZ2V0Q29lZmZpY2llbnQob3RoZXIuZ2V0RGVncmVlKCkpO1xuICAgICAgICB2YXIgaW52ZXJzZURlbm9taW5hdG9yTGVhZGluZ1Rlcm0gPSBmaWVsZC5pbnZlcnNlKGRlbm9taW5hdG9yTGVhZGluZ1Rlcm0pO1xuICAgICAgICB3aGlsZSAocmVtYWluZGVyLmdldERlZ3JlZSgpID49IG90aGVyLmdldERlZ3JlZSgpICYmICFyZW1haW5kZXIuaXNaZXJvKCkpIHtcbiAgICAgICAgICAgIHZhciBkZWdyZWVEaWZmZXJlbmNlID0gcmVtYWluZGVyLmdldERlZ3JlZSgpIC0gb3RoZXIuZ2V0RGVncmVlKCk7XG4gICAgICAgICAgICB2YXIgc2NhbGUgPSBmaWVsZC5tdWx0aXBseShyZW1haW5kZXIuZ2V0Q29lZmZpY2llbnQocmVtYWluZGVyLmdldERlZ3JlZSgpKSwgaW52ZXJzZURlbm9taW5hdG9yTGVhZGluZ1Rlcm0pO1xuICAgICAgICAgICAgdmFyIHRlcm0gPSBvdGhlci5tdWx0aXBseUJ5TW9ub21pYWwoZGVncmVlRGlmZmVyZW5jZSwgc2NhbGUpO1xuICAgICAgICAgICAgdmFyIGl0ZXJhdGlvblF1b3RpZW50ID0gZmllbGQuYnVpbGRNb25vbWlhbChkZWdyZWVEaWZmZXJlbmNlLCBzY2FsZSk7XG4gICAgICAgICAgICBxdW90aWVudCA9IHF1b3RpZW50LmFkZE9yU3VidHJhY3QoaXRlcmF0aW9uUXVvdGllbnQpO1xuICAgICAgICAgICAgcmVtYWluZGVyID0gcmVtYWluZGVyLmFkZE9yU3VidHJhY3QodGVybSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtxdW90aWVudCwgcmVtYWluZGVyXTtcbiAgICB9O1xuICAgIC8qQE92ZXJyaWRlKi9cbiAgICBHZW5lcmljR0ZQb2x5LnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9ICcnO1xuICAgICAgICBmb3IgKHZhciBkZWdyZWUgPSB0aGlzLmdldERlZ3JlZSgpOyBkZWdyZWUgPj0gMDsgZGVncmVlLS0pIHtcbiAgICAgICAgICAgIHZhciBjb2VmZmljaWVudCA9IHRoaXMuZ2V0Q29lZmZpY2llbnQoZGVncmVlKTtcbiAgICAgICAgICAgIGlmIChjb2VmZmljaWVudCAhPT0gMCkge1xuICAgICAgICAgICAgICAgIGlmIChjb2VmZmljaWVudCA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICcgLSAnO1xuICAgICAgICAgICAgICAgICAgICBjb2VmZmljaWVudCA9IC1jb2VmZmljaWVudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICcgKyAnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChkZWdyZWUgPT09IDAgfHwgY29lZmZpY2llbnQgIT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGFscGhhUG93ZXIgPSB0aGlzLmZpZWxkLmxvZyhjb2VmZmljaWVudCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhbHBoYVBvd2VyID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJzEnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGFscGhhUG93ZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnYSc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ2FeJztcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBhbHBoYVBvd2VyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChkZWdyZWUgIT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRlZ3JlZSA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICd4JztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAneF4nO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IGRlZ3JlZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgcmV0dXJuIEdlbmVyaWNHRlBvbHk7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gR2VuZXJpY0dGUG9seTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUdlbmVyaWNHRlBvbHkuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBFeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuL0V4Y2VwdGlvblwiKTtcbi8qKlxuICogQ3VzdG9tIEVycm9yIGNsYXNzIG9mIHR5cGUgRXhjZXB0aW9uLlxuICovXG52YXIgQXJpdGhtZXRpY0V4Y2VwdGlvbiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQXJpdGhtZXRpY0V4Y2VwdGlvbiwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBBcml0aG1ldGljRXhjZXB0aW9uKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIEFyaXRobWV0aWNFeGNlcHRpb24ua2luZCA9ICdBcml0aG1ldGljRXhjZXB0aW9uJztcbiAgICByZXR1cm4gQXJpdGhtZXRpY0V4Y2VwdGlvbjtcbn0oRXhjZXB0aW9uXzEuZGVmYXVsdCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gQXJpdGhtZXRpY0V4Y2VwdGlvbjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUFyaXRobWV0aWNFeGNlcHRpb24uanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IDIwMDcgWlhpbmcgYXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLypuYW1lc3BhY2UgY29tLmdvb2dsZS56eGluZy5jb21tb24ucmVlZHNvbG9tb24geyovXG52YXIgR2VuZXJpY0dGUG9seV8xID0gcmVxdWlyZShcIi4vR2VuZXJpY0dGUG9seVwiKTtcbnZhciBBYnN0cmFjdEdlbmVyaWNHRl8xID0gcmVxdWlyZShcIi4vQWJzdHJhY3RHZW5lcmljR0ZcIik7XG52YXIgSW50ZWdlcl8xID0gcmVxdWlyZShcIi4uLy4uL3V0aWwvSW50ZWdlclwiKTtcbnZhciBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuLi8uLi9JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25cIik7XG52YXIgQXJpdGhtZXRpY0V4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4uLy4uL0FyaXRobWV0aWNFeGNlcHRpb25cIik7XG4vKipcbiAqIDxwPlRoaXMgY2xhc3MgY29udGFpbnMgdXRpbGl0eSBtZXRob2RzIGZvciBwZXJmb3JtaW5nIG1hdGhlbWF0aWNhbCBvcGVyYXRpb25zIG92ZXJcbiAqIHRoZSBHYWxvaXMgRmllbGRzLiBPcGVyYXRpb25zIHVzZSBhIGdpdmVuIHByaW1pdGl2ZSBwb2x5bm9taWFsIGluIGNhbGN1bGF0aW9ucy48L3A+XG4gKlxuICogPHA+VGhyb3VnaG91dCB0aGlzIHBhY2thZ2UsIGVsZW1lbnRzIG9mIHRoZSBHRiBhcmUgcmVwcmVzZW50ZWQgYXMgYW4ge0Bjb2RlIGludH1cbiAqIGZvciBjb252ZW5pZW5jZSBhbmQgc3BlZWQgKGJ1dCBhdCB0aGUgY29zdCBvZiBtZW1vcnkpLlxuICogPC9wPlxuICpcbiAqIEBhdXRob3IgU2VhbiBPd2VuXG4gKiBAYXV0aG9yIERhdmlkIE9saXZpZXJcbiAqL1xudmFyIEdlbmVyaWNHRiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoR2VuZXJpY0dGLCBfc3VwZXIpO1xuICAgIC8qKlxuICAgICAqIENyZWF0ZSBhIHJlcHJlc2VudGF0aW9uIG9mIEdGKHNpemUpIHVzaW5nIHRoZSBnaXZlbiBwcmltaXRpdmUgcG9seW5vbWlhbC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcmltaXRpdmUgaXJyZWR1Y2libGUgcG9seW5vbWlhbCB3aG9zZSBjb2VmZmljaWVudHMgYXJlIHJlcHJlc2VudGVkIGJ5XG4gICAgICogIHRoZSBiaXRzIG9mIGFuIGludCwgd2hlcmUgdGhlIGxlYXN0LXNpZ25pZmljYW50IGJpdCByZXByZXNlbnRzIHRoZSBjb25zdGFudFxuICAgICAqICBjb2VmZmljaWVudFxuICAgICAqIEBwYXJhbSBzaXplIHRoZSBzaXplIG9mIHRoZSBmaWVsZFxuICAgICAqIEBwYXJhbSBiIHRoZSBmYWN0b3IgYiBpbiB0aGUgZ2VuZXJhdG9yIHBvbHlub21pYWwgY2FuIGJlIDAtIG9yIDEtYmFzZWRcbiAgICAgKiAgKGcoeCkgPSAoeCthXmIpKHgrYV4oYisxKSkuLi4oeCthXihiKzJ0LTEpKSkuXG4gICAgICogIEluIG1vc3QgY2FzZXMgaXQgc2hvdWxkIGJlIDEsIGJ1dCBmb3IgUVIgY29kZSBpdCBpcyAwLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIEdlbmVyaWNHRihwcmltaXRpdmUgLyppbnQqLywgc2l6ZSAvKmludCovLCBnZW5lcmF0b3JCYXNlIC8qaW50Ki8pIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMucHJpbWl0aXZlID0gcHJpbWl0aXZlO1xuICAgICAgICBfdGhpcy5zaXplID0gc2l6ZTtcbiAgICAgICAgX3RoaXMuZ2VuZXJhdG9yQmFzZSA9IGdlbmVyYXRvckJhc2U7XG4gICAgICAgIHZhciBleHBUYWJsZSA9IG5ldyBJbnQzMkFycmF5KHNpemUpO1xuICAgICAgICB2YXIgeCA9IDE7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICBleHBUYWJsZVtpXSA9IHg7XG4gICAgICAgICAgICB4ICo9IDI7IC8vIHdlJ3JlIGFzc3VtaW5nIHRoZSBnZW5lcmF0b3IgYWxwaGEgaXMgMlxuICAgICAgICAgICAgaWYgKHggPj0gc2l6ZSkge1xuICAgICAgICAgICAgICAgIHggXj0gcHJpbWl0aXZlO1xuICAgICAgICAgICAgICAgIHggJj0gc2l6ZSAtIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgX3RoaXMuZXhwVGFibGUgPSBleHBUYWJsZTtcbiAgICAgICAgdmFyIGxvZ1RhYmxlID0gbmV3IEludDMyQXJyYXkoc2l6ZSk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZSAtIDE7IGkrKykge1xuICAgICAgICAgICAgbG9nVGFibGVbZXhwVGFibGVbaV1dID0gaTtcbiAgICAgICAgfVxuICAgICAgICBfdGhpcy5sb2dUYWJsZSA9IGxvZ1RhYmxlO1xuICAgICAgICAvLyBsb2dUYWJsZVswXSA9PSAwIGJ1dCB0aGlzIHNob3VsZCBuZXZlciBiZSB1c2VkXG4gICAgICAgIF90aGlzLnplcm8gPSBuZXcgR2VuZXJpY0dGUG9seV8xLmRlZmF1bHQoX3RoaXMsIEludDMyQXJyYXkuZnJvbShbMF0pKTtcbiAgICAgICAgX3RoaXMub25lID0gbmV3IEdlbmVyaWNHRlBvbHlfMS5kZWZhdWx0KF90aGlzLCBJbnQzMkFycmF5LmZyb20oWzFdKSk7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgR2VuZXJpY0dGLnByb3RvdHlwZS5nZXRaZXJvID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy56ZXJvO1xuICAgIH07XG4gICAgR2VuZXJpY0dGLnByb3RvdHlwZS5nZXRPbmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9uZTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEByZXR1cm4gdGhlIG1vbm9taWFsIHJlcHJlc2VudGluZyBjb2VmZmljaWVudCAqIHheZGVncmVlXG4gICAgICovXG4gICAgR2VuZXJpY0dGLnByb3RvdHlwZS5idWlsZE1vbm9taWFsID0gZnVuY3Rpb24gKGRlZ3JlZSAvKmludCovLCBjb2VmZmljaWVudCAvKmludCovKSB7XG4gICAgICAgIGlmIChkZWdyZWUgPCAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb2VmZmljaWVudCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuemVybztcbiAgICAgICAgfVxuICAgICAgICB2YXIgY29lZmZpY2llbnRzID0gbmV3IEludDMyQXJyYXkoZGVncmVlICsgMSk7XG4gICAgICAgIGNvZWZmaWNpZW50c1swXSA9IGNvZWZmaWNpZW50O1xuICAgICAgICByZXR1cm4gbmV3IEdlbmVyaWNHRlBvbHlfMS5kZWZhdWx0KHRoaXMsIGNvZWZmaWNpZW50cyk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIG11bHRpcGxpY2F0aXZlIGludmVyc2Ugb2YgYVxuICAgICAqL1xuICAgIEdlbmVyaWNHRi5wcm90b3R5cGUuaW52ZXJzZSA9IGZ1bmN0aW9uIChhIC8qaW50Ki8pIHtcbiAgICAgICAgaWYgKGEgPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBBcml0aG1ldGljRXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmV4cFRhYmxlW3RoaXMuc2l6ZSAtIHRoaXMubG9nVGFibGVbYV0gLSAxXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEByZXR1cm4gcHJvZHVjdCBvZiBhIGFuZCBiIGluIEdGKHNpemUpXG4gICAgICovXG4gICAgR2VuZXJpY0dGLnByb3RvdHlwZS5tdWx0aXBseSA9IGZ1bmN0aW9uIChhIC8qaW50Ki8sIGIgLyppbnQqLykge1xuICAgICAgICBpZiAoYSA9PT0gMCB8fCBiID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5leHBUYWJsZVsodGhpcy5sb2dUYWJsZVthXSArIHRoaXMubG9nVGFibGVbYl0pICUgKHRoaXMuc2l6ZSAtIDEpXTtcbiAgICB9O1xuICAgIEdlbmVyaWNHRi5wcm90b3R5cGUuZ2V0U2l6ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2l6ZTtcbiAgICB9O1xuICAgIEdlbmVyaWNHRi5wcm90b3R5cGUuZ2V0R2VuZXJhdG9yQmFzZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2VuZXJhdG9yQmFzZTtcbiAgICB9O1xuICAgIC8qQE92ZXJyaWRlKi9cbiAgICBHZW5lcmljR0YucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gKCdHRigweCcgKyBJbnRlZ2VyXzEuZGVmYXVsdC50b0hleFN0cmluZyh0aGlzLnByaW1pdGl2ZSkgKyAnLCcgKyB0aGlzLnNpemUgKyAnKScpO1xuICAgIH07XG4gICAgR2VuZXJpY0dGLnByb3RvdHlwZS5lcXVhbHMgPSBmdW5jdGlvbiAobykge1xuICAgICAgICByZXR1cm4gbyA9PT0gdGhpcztcbiAgICB9O1xuICAgIEdlbmVyaWNHRi5BWlRFQ19EQVRBXzEyID0gbmV3IEdlbmVyaWNHRigweDEwNjksIDQwOTYsIDEpOyAvLyB4XjEyICsgeF42ICsgeF41ICsgeF4zICsgMVxuICAgIEdlbmVyaWNHRi5BWlRFQ19EQVRBXzEwID0gbmV3IEdlbmVyaWNHRigweDQwOSwgMTAyNCwgMSk7IC8vIHheMTAgKyB4XjMgKyAxXG4gICAgR2VuZXJpY0dGLkFaVEVDX0RBVEFfNiA9IG5ldyBHZW5lcmljR0YoMHg0MywgNjQsIDEpOyAvLyB4XjYgKyB4ICsgMVxuICAgIEdlbmVyaWNHRi5BWlRFQ19QQVJBTSA9IG5ldyBHZW5lcmljR0YoMHgxMywgMTYsIDEpOyAvLyB4XjQgKyB4ICsgMVxuICAgIEdlbmVyaWNHRi5RUl9DT0RFX0ZJRUxEXzI1NiA9IG5ldyBHZW5lcmljR0YoMHgwMTFkLCAyNTYsIDApOyAvLyB4XjggKyB4XjQgKyB4XjMgKyB4XjIgKyAxXG4gICAgR2VuZXJpY0dGLkRBVEFfTUFUUklYX0ZJRUxEXzI1NiA9IG5ldyBHZW5lcmljR0YoMHgwMTJkLCAyNTYsIDEpOyAvLyB4XjggKyB4XjUgKyB4XjMgKyB4XjIgKyAxXG4gICAgR2VuZXJpY0dGLkFaVEVDX0RBVEFfOCA9IEdlbmVyaWNHRi5EQVRBX01BVFJJWF9GSUVMRF8yNTY7XG4gICAgR2VuZXJpY0dGLk1BWElDT0RFX0ZJRUxEXzY0ID0gR2VuZXJpY0dGLkFaVEVDX0RBVEFfNjtcbiAgICByZXR1cm4gR2VuZXJpY0dGO1xufShBYnN0cmFjdEdlbmVyaWNHRl8xLmRlZmF1bHQpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IEdlbmVyaWNHRjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUdlbmVyaWNHRi5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIEV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4vRXhjZXB0aW9uXCIpO1xuLyoqXG4gKiBDdXN0b20gRXJyb3IgY2xhc3Mgb2YgdHlwZSBFeGNlcHRpb24uXG4gKi9cbnZhciBSZWVkU29sb21vbkV4Y2VwdGlvbiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoUmVlZFNvbG9tb25FeGNlcHRpb24sIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gUmVlZFNvbG9tb25FeGNlcHRpb24oKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgUmVlZFNvbG9tb25FeGNlcHRpb24ua2luZCA9ICdSZWVkU29sb21vbkV4Y2VwdGlvbic7XG4gICAgcmV0dXJuIFJlZWRTb2xvbW9uRXhjZXB0aW9uO1xufShFeGNlcHRpb25fMS5kZWZhdWx0KSk7XG5leHBvcnRzLmRlZmF1bHQgPSBSZWVkU29sb21vbkV4Y2VwdGlvbjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVJlZWRTb2xvbW9uRXhjZXB0aW9uLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgRXhjZXB0aW9uXzEgPSByZXF1aXJlKFwiLi9FeGNlcHRpb25cIik7XG4vKipcbiAqIEN1c3RvbSBFcnJvciBjbGFzcyBvZiB0eXBlIEV4Y2VwdGlvbi5cbiAqL1xudmFyIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoSWxsZWdhbFN0YXRlRXhjZXB0aW9uLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBJbGxlZ2FsU3RhdGVFeGNlcHRpb24ua2luZCA9ICdJbGxlZ2FsU3RhdGVFeGNlcHRpb24nO1xuICAgIHJldHVybiBJbGxlZ2FsU3RhdGVFeGNlcHRpb247XG59KEV4Y2VwdGlvbl8xLmRlZmF1bHQpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUlsbGVnYWxTdGF0ZUV4Y2VwdGlvbi5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8qXG4gKiBDb3B5cmlnaHQgMjAwNyBaWGluZyBhdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLypuYW1lc3BhY2UgY29tLmdvb2dsZS56eGluZy5jb21tb24ucmVlZHNvbG9tb24geyovXG52YXIgR2VuZXJpY0dGXzEgPSByZXF1aXJlKFwiLi9HZW5lcmljR0ZcIik7XG52YXIgR2VuZXJpY0dGUG9seV8xID0gcmVxdWlyZShcIi4vR2VuZXJpY0dGUG9seVwiKTtcbnZhciBSZWVkU29sb21vbkV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4uLy4uL1JlZWRTb2xvbW9uRXhjZXB0aW9uXCIpO1xudmFyIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4uLy4uL0lsbGVnYWxTdGF0ZUV4Y2VwdGlvblwiKTtcbi8qKlxuICogPHA+SW1wbGVtZW50cyBSZWVkLVNvbG9tb24gZGVjb2RpbmcsIGFzIHRoZSBuYW1lIGltcGxpZXMuPC9wPlxuICpcbiAqIDxwPlRoZSBhbGdvcml0aG0gd2lsbCBub3QgYmUgZXhwbGFpbmVkIGhlcmUsIGJ1dCB0aGUgZm9sbG93aW5nIHJlZmVyZW5jZXMgd2VyZSBoZWxwZnVsXG4gKiBpbiBjcmVhdGluZyB0aGlzIGltcGxlbWVudGF0aW9uOjwvcD5cbiAqXG4gKiA8dWw+XG4gKiA8bGk+QnJ1Y2UgTWFnZ3MuXG4gKiA8YSBocmVmPVwiaHR0cDovL3d3dy5jcy5jbXUuZWR1L2Fmcy9jcy5jbXUuZWR1L3Byb2plY3QvcHNjaWNvLWd1eWIvcmVhbHdvcmxkL3d3dy9yc19kZWNvZGUucHNcIj5cbiAqIFwiRGVjb2RpbmcgUmVlZC1Tb2xvbW9uIENvZGVzXCI8L2E+IChzZWUgZGlzY3Vzc2lvbiBvZiBGb3JuZXkncyBGb3JtdWxhKTwvbGk+XG4gKiA8bGk+Si5JLiBIYWxsLiA8YSBocmVmPVwid3d3Lm10aC5tc3UuZWR1L35qaGFsbC9jbGFzc2VzL2NvZGVub3Rlcy9HUlMucGRmXCI+XG4gKiBcIkNoYXB0ZXIgNS4gR2VuZXJhbGl6ZWQgUmVlZC1Tb2xvbW9uIENvZGVzXCI8L2E+XG4gKiAoc2VlIGRpc2N1c3Npb24gb2YgRXVjbGlkZWFuIGFsZ29yaXRobSk8L2xpPlxuICogPC91bD5cbiAqXG4gKiA8cD5NdWNoIGNyZWRpdCBpcyBkdWUgdG8gV2lsbGlhbSBSdWNrbGlkZ2Ugc2luY2UgcG9ydGlvbnMgb2YgdGhpcyBjb2RlIGFyZSBhbiBpbmRpcmVjdFxuICogcG9ydCBvZiBoaXMgQysrIFJlZWQtU29sb21vbiBpbXBsZW1lbnRhdGlvbi48L3A+XG4gKlxuICogQGF1dGhvciBTZWFuIE93ZW5cbiAqIEBhdXRob3IgV2lsbGlhbSBSdWNrbGlkZ2VcbiAqIEBhdXRob3Igc2FuZm9yZHNxdWlyZXNcbiAqL1xudmFyIFJlZWRTb2xvbW9uRGVjb2RlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBSZWVkU29sb21vbkRlY29kZXIoZmllbGQpIHtcbiAgICAgICAgdGhpcy5maWVsZCA9IGZpZWxkO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiA8cD5EZWNvZGVzIGdpdmVuIHNldCBvZiByZWNlaXZlZCBjb2Rld29yZHMsIHdoaWNoIGluY2x1ZGUgYm90aCBkYXRhIGFuZCBlcnJvci1jb3JyZWN0aW9uXG4gICAgICogY29kZXdvcmRzLiBSZWFsbHksIHRoaXMgbWVhbnMgaXQgdXNlcyBSZWVkLVNvbG9tb24gdG8gZGV0ZWN0IGFuZCBjb3JyZWN0IGVycm9ycywgaW4tcGxhY2UsXG4gICAgICogaW4gdGhlIGlucHV0LjwvcD5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByZWNlaXZlZCBkYXRhIGFuZCBlcnJvci1jb3JyZWN0aW9uIGNvZGV3b3Jkc1xuICAgICAqIEBwYXJhbSB0d29TIG51bWJlciBvZiBlcnJvci1jb3JyZWN0aW9uIGNvZGV3b3JkcyBhdmFpbGFibGVcbiAgICAgKiBAdGhyb3dzIFJlZWRTb2xvbW9uRXhjZXB0aW9uIGlmIGRlY29kaW5nIGZhaWxzIGZvciBhbnkgcmVhc29uXG4gICAgICovXG4gICAgUmVlZFNvbG9tb25EZWNvZGVyLnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbiAocmVjZWl2ZWQsIHR3b1MgLyppbnQqLykge1xuICAgICAgICB2YXIgZmllbGQgPSB0aGlzLmZpZWxkO1xuICAgICAgICB2YXIgcG9seSA9IG5ldyBHZW5lcmljR0ZQb2x5XzEuZGVmYXVsdChmaWVsZCwgcmVjZWl2ZWQpO1xuICAgICAgICB2YXIgc3luZHJvbWVDb2VmZmljaWVudHMgPSBuZXcgSW50MzJBcnJheSh0d29TKTtcbiAgICAgICAgdmFyIG5vRXJyb3IgPSB0cnVlO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHR3b1M7IGkrKykge1xuICAgICAgICAgICAgdmFyIGV2YWxSZXN1bHQgPSBwb2x5LmV2YWx1YXRlQXQoZmllbGQuZXhwKGkgKyBmaWVsZC5nZXRHZW5lcmF0b3JCYXNlKCkpKTtcbiAgICAgICAgICAgIHN5bmRyb21lQ29lZmZpY2llbnRzW3N5bmRyb21lQ29lZmZpY2llbnRzLmxlbmd0aCAtIDEgLSBpXSA9IGV2YWxSZXN1bHQ7XG4gICAgICAgICAgICBpZiAoZXZhbFJlc3VsdCAhPT0gMCkge1xuICAgICAgICAgICAgICAgIG5vRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobm9FcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzeW5kcm9tZSA9IG5ldyBHZW5lcmljR0ZQb2x5XzEuZGVmYXVsdChmaWVsZCwgc3luZHJvbWVDb2VmZmljaWVudHMpO1xuICAgICAgICB2YXIgc2lnbWFPbWVnYSA9IHRoaXMucnVuRXVjbGlkZWFuQWxnb3JpdGhtKGZpZWxkLmJ1aWxkTW9ub21pYWwodHdvUywgMSksIHN5bmRyb21lLCB0d29TKTtcbiAgICAgICAgdmFyIHNpZ21hID0gc2lnbWFPbWVnYVswXTtcbiAgICAgICAgdmFyIG9tZWdhID0gc2lnbWFPbWVnYVsxXTtcbiAgICAgICAgdmFyIGVycm9yTG9jYXRpb25zID0gdGhpcy5maW5kRXJyb3JMb2NhdGlvbnMoc2lnbWEpO1xuICAgICAgICB2YXIgZXJyb3JNYWduaXR1ZGVzID0gdGhpcy5maW5kRXJyb3JNYWduaXR1ZGVzKG9tZWdhLCBlcnJvckxvY2F0aW9ucyk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXJyb3JMb2NhdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHJlY2VpdmVkLmxlbmd0aCAtIDEgLSBmaWVsZC5sb2coZXJyb3JMb2NhdGlvbnNbaV0pO1xuICAgICAgICAgICAgaWYgKHBvc2l0aW9uIDwgMCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBSZWVkU29sb21vbkV4Y2VwdGlvbl8xLmRlZmF1bHQoJ0JhZCBlcnJvciBsb2NhdGlvbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVjZWl2ZWRbcG9zaXRpb25dID0gR2VuZXJpY0dGXzEuZGVmYXVsdC5hZGRPclN1YnRyYWN0KHJlY2VpdmVkW3Bvc2l0aW9uXSwgZXJyb3JNYWduaXR1ZGVzW2ldKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgUmVlZFNvbG9tb25EZWNvZGVyLnByb3RvdHlwZS5ydW5FdWNsaWRlYW5BbGdvcml0aG0gPSBmdW5jdGlvbiAoYSwgYiwgUiAvKmludCovKSB7XG4gICAgICAgIC8vIEFzc3VtZSBhJ3MgZGVncmVlIGlzID49IGInc1xuICAgICAgICBpZiAoYS5nZXREZWdyZWUoKSA8IGIuZ2V0RGVncmVlKCkpIHtcbiAgICAgICAgICAgIHZhciB0ZW1wID0gYTtcbiAgICAgICAgICAgIGEgPSBiO1xuICAgICAgICAgICAgYiA9IHRlbXA7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGZpZWxkID0gdGhpcy5maWVsZDtcbiAgICAgICAgdmFyIHJMYXN0ID0gYTtcbiAgICAgICAgdmFyIHIgPSBiO1xuICAgICAgICB2YXIgdExhc3QgPSBmaWVsZC5nZXRaZXJvKCk7XG4gICAgICAgIHZhciB0ID0gZmllbGQuZ2V0T25lKCk7XG4gICAgICAgIC8vIFJ1biBFdWNsaWRlYW4gYWxnb3JpdGhtIHVudGlsIHIncyBkZWdyZWUgaXMgbGVzcyB0aGFuIFIvMlxuICAgICAgICB3aGlsZSAoci5nZXREZWdyZWUoKSA+PSAoUiAvIDIgfCAwKSkge1xuICAgICAgICAgICAgdmFyIHJMYXN0TGFzdCA9IHJMYXN0O1xuICAgICAgICAgICAgdmFyIHRMYXN0TGFzdCA9IHRMYXN0O1xuICAgICAgICAgICAgckxhc3QgPSByO1xuICAgICAgICAgICAgdExhc3QgPSB0O1xuICAgICAgICAgICAgLy8gRGl2aWRlIHJMYXN0TGFzdCBieSByTGFzdCwgd2l0aCBxdW90aWVudCBpbiBxIGFuZCByZW1haW5kZXIgaW4gclxuICAgICAgICAgICAgaWYgKHJMYXN0LmlzWmVybygpKSB7XG4gICAgICAgICAgICAgICAgLy8gT29wcywgRXVjbGlkZWFuIGFsZ29yaXRobSBhbHJlYWR5IHRlcm1pbmF0ZWQ/XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJlZWRTb2xvbW9uRXhjZXB0aW9uXzEuZGVmYXVsdCgncl97aS0xfSB3YXMgemVybycpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgciA9IHJMYXN0TGFzdDtcbiAgICAgICAgICAgIHZhciBxID0gZmllbGQuZ2V0WmVybygpO1xuICAgICAgICAgICAgdmFyIGRlbm9taW5hdG9yTGVhZGluZ1Rlcm0gPSByTGFzdC5nZXRDb2VmZmljaWVudChyTGFzdC5nZXREZWdyZWUoKSk7XG4gICAgICAgICAgICB2YXIgZGx0SW52ZXJzZSA9IGZpZWxkLmludmVyc2UoZGVub21pbmF0b3JMZWFkaW5nVGVybSk7XG4gICAgICAgICAgICB3aGlsZSAoci5nZXREZWdyZWUoKSA+PSByTGFzdC5nZXREZWdyZWUoKSAmJiAhci5pc1plcm8oKSkge1xuICAgICAgICAgICAgICAgIHZhciBkZWdyZWVEaWZmID0gci5nZXREZWdyZWUoKSAtIHJMYXN0LmdldERlZ3JlZSgpO1xuICAgICAgICAgICAgICAgIHZhciBzY2FsZSA9IGZpZWxkLm11bHRpcGx5KHIuZ2V0Q29lZmZpY2llbnQoci5nZXREZWdyZWUoKSksIGRsdEludmVyc2UpO1xuICAgICAgICAgICAgICAgIHEgPSBxLmFkZE9yU3VidHJhY3QoZmllbGQuYnVpbGRNb25vbWlhbChkZWdyZWVEaWZmLCBzY2FsZSkpO1xuICAgICAgICAgICAgICAgIHIgPSByLmFkZE9yU3VidHJhY3Qockxhc3QubXVsdGlwbHlCeU1vbm9taWFsKGRlZ3JlZURpZmYsIHNjYWxlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0ID0gcS5tdWx0aXBseSh0TGFzdCkuYWRkT3JTdWJ0cmFjdCh0TGFzdExhc3QpO1xuICAgICAgICAgICAgaWYgKHIuZ2V0RGVncmVlKCkgPj0gckxhc3QuZ2V0RGVncmVlKCkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uXzEuZGVmYXVsdCgnRGl2aXNpb24gYWxnb3JpdGhtIGZhaWxlZCB0byByZWR1Y2UgcG9seW5vbWlhbD8nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgc2lnbWFUaWxkZUF0WmVybyA9IHQuZ2V0Q29lZmZpY2llbnQoMCk7XG4gICAgICAgIGlmIChzaWdtYVRpbGRlQXRaZXJvID09PSAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgUmVlZFNvbG9tb25FeGNlcHRpb25fMS5kZWZhdWx0KCdzaWdtYVRpbGRlKDApIHdhcyB6ZXJvJyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGludmVyc2UgPSBmaWVsZC5pbnZlcnNlKHNpZ21hVGlsZGVBdFplcm8pO1xuICAgICAgICB2YXIgc2lnbWEgPSB0Lm11bHRpcGx5U2NhbGFyKGludmVyc2UpO1xuICAgICAgICB2YXIgb21lZ2EgPSByLm11bHRpcGx5U2NhbGFyKGludmVyc2UpO1xuICAgICAgICByZXR1cm4gW3NpZ21hLCBvbWVnYV07XG4gICAgfTtcbiAgICBSZWVkU29sb21vbkRlY29kZXIucHJvdG90eXBlLmZpbmRFcnJvckxvY2F0aW9ucyA9IGZ1bmN0aW9uIChlcnJvckxvY2F0b3IpIHtcbiAgICAgICAgLy8gVGhpcyBpcyBhIGRpcmVjdCBhcHBsaWNhdGlvbiBvZiBDaGllbidzIHNlYXJjaFxuICAgICAgICB2YXIgbnVtRXJyb3JzID0gZXJyb3JMb2NhdG9yLmdldERlZ3JlZSgpO1xuICAgICAgICBpZiAobnVtRXJyb3JzID09PSAxKSB7IC8vIHNob3J0Y3V0XG4gICAgICAgICAgICByZXR1cm4gSW50MzJBcnJheS5mcm9tKFtlcnJvckxvY2F0b3IuZ2V0Q29lZmZpY2llbnQoMSldKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IEludDMyQXJyYXkobnVtRXJyb3JzKTtcbiAgICAgICAgdmFyIGUgPSAwO1xuICAgICAgICB2YXIgZmllbGQgPSB0aGlzLmZpZWxkO1xuICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IGZpZWxkLmdldFNpemUoKSAmJiBlIDwgbnVtRXJyb3JzOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlcnJvckxvY2F0b3IuZXZhbHVhdGVBdChpKSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdFtlXSA9IGZpZWxkLmludmVyc2UoaSk7XG4gICAgICAgICAgICAgICAgZSsrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChlICE9PSBudW1FcnJvcnMpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBSZWVkU29sb21vbkV4Y2VwdGlvbl8xLmRlZmF1bHQoJ0Vycm9yIGxvY2F0b3IgZGVncmVlIGRvZXMgbm90IG1hdGNoIG51bWJlciBvZiByb290cycpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICBSZWVkU29sb21vbkRlY29kZXIucHJvdG90eXBlLmZpbmRFcnJvck1hZ25pdHVkZXMgPSBmdW5jdGlvbiAoZXJyb3JFdmFsdWF0b3IsIGVycm9yTG9jYXRpb25zKSB7XG4gICAgICAgIC8vIFRoaXMgaXMgZGlyZWN0bHkgYXBwbHlpbmcgRm9ybmV5J3MgRm9ybXVsYVxuICAgICAgICB2YXIgcyA9IGVycm9yTG9jYXRpb25zLmxlbmd0aDtcbiAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBJbnQzMkFycmF5KHMpO1xuICAgICAgICB2YXIgZmllbGQgPSB0aGlzLmZpZWxkO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHM7IGkrKykge1xuICAgICAgICAgICAgdmFyIHhpSW52ZXJzZSA9IGZpZWxkLmludmVyc2UoZXJyb3JMb2NhdGlvbnNbaV0pO1xuICAgICAgICAgICAgdmFyIGRlbm9taW5hdG9yID0gMTtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgczsgaisrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGkgIT09IGopIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZGVub21pbmF0b3IgPSBmaWVsZC5tdWx0aXBseShkZW5vbWluYXRvcixcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgR2VuZXJpY0dGLmFkZE9yU3VidHJhY3QoMSwgZmllbGQubXVsdGlwbHkoZXJyb3JMb2NhdGlvbnNbal0sIHhpSW52ZXJzZSkpKVxuICAgICAgICAgICAgICAgICAgICAvLyBBYm92ZSBzaG91bGQgd29yayBidXQgZmFpbHMgb24gc29tZSBBcHBsZSBhbmQgTGludXggSkRLcyBkdWUgdG8gYSBIb3RzcG90IGJ1Zy5cbiAgICAgICAgICAgICAgICAgICAgLy8gQmVsb3cgaXMgYSBmdW5ueS1sb29raW5nIHdvcmthcm91bmQgZnJvbSBTdGV2ZW4gUGFya2VzXG4gICAgICAgICAgICAgICAgICAgIHZhciB0ZXJtID0gZmllbGQubXVsdGlwbHkoZXJyb3JMb2NhdGlvbnNbal0sIHhpSW52ZXJzZSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0ZXJtUGx1czEgPSAodGVybSAmIDB4MSkgPT09IDAgPyB0ZXJtIHwgMSA6IHRlcm0gJiB+MTtcbiAgICAgICAgICAgICAgICAgICAgZGVub21pbmF0b3IgPSBmaWVsZC5tdWx0aXBseShkZW5vbWluYXRvciwgdGVybVBsdXMxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHRbaV0gPSBmaWVsZC5tdWx0aXBseShlcnJvckV2YWx1YXRvci5ldmFsdWF0ZUF0KHhpSW52ZXJzZSksIGZpZWxkLmludmVyc2UoZGVub21pbmF0b3IpKTtcbiAgICAgICAgICAgIGlmIChmaWVsZC5nZXRHZW5lcmF0b3JCYXNlKCkgIT09IDApIHtcbiAgICAgICAgICAgICAgICByZXN1bHRbaV0gPSBmaWVsZC5tdWx0aXBseShyZXN1bHRbaV0sIHhpSW52ZXJzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIHJldHVybiBSZWVkU29sb21vbkRlY29kZXI7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gUmVlZFNvbG9tb25EZWNvZGVyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UmVlZFNvbG9tb25EZWNvZGVyLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuLypcbiAqIENvcHlyaWdodCAyMDEwIFpYaW5nIGF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgRGVjb2RlclJlc3VsdF8xID0gcmVxdWlyZShcIi4uLy4uL2NvbW1vbi9EZWNvZGVyUmVzdWx0XCIpO1xudmFyIEdlbmVyaWNHRl8xID0gcmVxdWlyZShcIi4uLy4uL2NvbW1vbi9yZWVkc29sb21vbi9HZW5lcmljR0ZcIik7XG52YXIgUmVlZFNvbG9tb25EZWNvZGVyXzEgPSByZXF1aXJlKFwiLi4vLi4vY29tbW9uL3JlZWRzb2xvbW9uL1JlZWRTb2xvbW9uRGVjb2RlclwiKTtcbnZhciBJbGxlZ2FsU3RhdGVFeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuLi8uLi9JbGxlZ2FsU3RhdGVFeGNlcHRpb25cIik7XG52YXIgRm9ybWF0RXhjZXB0aW9uXzEgPSByZXF1aXJlKFwiLi4vLi4vRm9ybWF0RXhjZXB0aW9uXCIpO1xudmFyIFN0cmluZ1V0aWxzXzEgPSByZXF1aXJlKFwiLi4vLi4vY29tbW9uL1N0cmluZ1V0aWxzXCIpO1xudmFyIEludGVnZXJfMSA9IHJlcXVpcmUoXCIuLi8uLi91dGlsL0ludGVnZXJcIik7XG4vLyBpbXBvcnQgamF2YS51dGlsLkFycmF5cztcbnZhciBUYWJsZTtcbihmdW5jdGlvbiAoVGFibGUpIHtcbiAgICBUYWJsZVtUYWJsZVtcIlVQUEVSXCJdID0gMF0gPSBcIlVQUEVSXCI7XG4gICAgVGFibGVbVGFibGVbXCJMT1dFUlwiXSA9IDFdID0gXCJMT1dFUlwiO1xuICAgIFRhYmxlW1RhYmxlW1wiTUlYRURcIl0gPSAyXSA9IFwiTUlYRURcIjtcbiAgICBUYWJsZVtUYWJsZVtcIkRJR0lUXCJdID0gM10gPSBcIkRJR0lUXCI7XG4gICAgVGFibGVbVGFibGVbXCJQVU5DVFwiXSA9IDRdID0gXCJQVU5DVFwiO1xuICAgIFRhYmxlW1RhYmxlW1wiQklOQVJZXCJdID0gNV0gPSBcIkJJTkFSWVwiO1xufSkoVGFibGUgfHwgKFRhYmxlID0ge30pKTtcbi8qKlxuICogPHA+VGhlIG1haW4gY2xhc3Mgd2hpY2ggaW1wbGVtZW50cyBBenRlYyBDb2RlIGRlY29kaW5nIC0tIGFzIG9wcG9zZWQgdG8gbG9jYXRpbmcgYW5kIGV4dHJhY3RpbmdcbiAqIHRoZSBBenRlYyBDb2RlIGZyb20gYW4gaW1hZ2UuPC9wPlxuICpcbiAqIEBhdXRob3IgRGF2aWQgT2xpdmllclxuICovXG52YXIgRGVjb2RlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBEZWNvZGVyKCkge1xuICAgIH1cbiAgICBEZWNvZGVyLnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbiAoZGV0ZWN0b3JSZXN1bHQpIHtcbiAgICAgICAgdGhpcy5kZGF0YSA9IGRldGVjdG9yUmVzdWx0O1xuICAgICAgICB2YXIgbWF0cml4ID0gZGV0ZWN0b3JSZXN1bHQuZ2V0Qml0cygpO1xuICAgICAgICB2YXIgcmF3Yml0cyA9IHRoaXMuZXh0cmFjdEJpdHMobWF0cml4KTtcbiAgICAgICAgdmFyIGNvcnJlY3RlZEJpdHMgPSB0aGlzLmNvcnJlY3RCaXRzKHJhd2JpdHMpO1xuICAgICAgICB2YXIgcmF3Qnl0ZXMgPSBEZWNvZGVyLmNvbnZlcnRCb29sQXJyYXlUb0J5dGVBcnJheShjb3JyZWN0ZWRCaXRzKTtcbiAgICAgICAgdmFyIHJlc3VsdCA9IERlY29kZXIuZ2V0RW5jb2RlZERhdGEoY29ycmVjdGVkQml0cyk7XG4gICAgICAgIHZhciBkZWNvZGVyUmVzdWx0ID0gbmV3IERlY29kZXJSZXN1bHRfMS5kZWZhdWx0KHJhd0J5dGVzLCByZXN1bHQsIG51bGwsIG51bGwpO1xuICAgICAgICBkZWNvZGVyUmVzdWx0LnNldE51bUJpdHMoY29ycmVjdGVkQml0cy5sZW5ndGgpO1xuICAgICAgICByZXR1cm4gZGVjb2RlclJlc3VsdDtcbiAgICB9O1xuICAgIC8vIFRoaXMgbWV0aG9kIGlzIHVzZWQgZm9yIHRlc3RpbmcgdGhlIGhpZ2gtbGV2ZWwgZW5jb2RlclxuICAgIERlY29kZXIuaGlnaExldmVsRGVjb2RlID0gZnVuY3Rpb24gKGNvcnJlY3RlZEJpdHMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RW5jb2RlZERhdGEoY29ycmVjdGVkQml0cyk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBzdHJpbmcgZW5jb2RlZCBpbiB0aGUgYXp0ZWMgY29kZSBiaXRzXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHRoZSBkZWNvZGVkIHN0cmluZ1xuICAgICAqL1xuICAgIERlY29kZXIuZ2V0RW5jb2RlZERhdGEgPSBmdW5jdGlvbiAoY29ycmVjdGVkQml0cykge1xuICAgICAgICB2YXIgZW5kSW5kZXggPSBjb3JyZWN0ZWRCaXRzLmxlbmd0aDtcbiAgICAgICAgdmFyIGxhdGNoVGFibGUgPSBUYWJsZS5VUFBFUjsgLy8gdGFibGUgbW9zdCByZWNlbnRseSBsYXRjaGVkIHRvXG4gICAgICAgIHZhciBzaGlmdFRhYmxlID0gVGFibGUuVVBQRVI7IC8vIHRhYmxlIHRvIHVzZSBmb3IgdGhlIG5leHQgcmVhZFxuICAgICAgICB2YXIgcmVzdWx0ID0gJyc7XG4gICAgICAgIHZhciBpbmRleCA9IDA7XG4gICAgICAgIHdoaWxlIChpbmRleCA8IGVuZEluZGV4KSB7XG4gICAgICAgICAgICBpZiAoc2hpZnRUYWJsZSA9PT0gVGFibGUuQklOQVJZKSB7XG4gICAgICAgICAgICAgICAgaWYgKGVuZEluZGV4IC0gaW5kZXggPCA1KSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgbGVuZ3RoXzEgPSBEZWNvZGVyLnJlYWRDb2RlKGNvcnJlY3RlZEJpdHMsIGluZGV4LCA1KTtcbiAgICAgICAgICAgICAgICBpbmRleCArPSA1O1xuICAgICAgICAgICAgICAgIGlmIChsZW5ndGhfMSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZW5kSW5kZXggLSBpbmRleCA8IDExKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBsZW5ndGhfMSA9IERlY29kZXIucmVhZENvZGUoY29ycmVjdGVkQml0cywgaW5kZXgsIDExKSArIDMxO1xuICAgICAgICAgICAgICAgICAgICBpbmRleCArPSAxMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgY2hhckNvdW50ID0gMDsgY2hhckNvdW50IDwgbGVuZ3RoXzE7IGNoYXJDb3VudCsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbmRJbmRleCAtIGluZGV4IDwgOCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBlbmRJbmRleDsgLy8gRm9yY2Ugb3V0ZXIgbG9vcCB0byBleGl0XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB2YXIgY29kZSA9IERlY29kZXIucmVhZENvZGUoY29ycmVjdGVkQml0cywgaW5kZXgsIDgpO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gLyooY2hhcikqLyBTdHJpbmdVdGlsc18xLmRlZmF1bHQuY2FzdEFzTm9uVXRmOENoYXIoY29kZSk7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4ICs9IDg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIEdvIGJhY2sgdG8gd2hhdGV2ZXIgbW9kZSB3ZSBoYWQgYmVlbiBpblxuICAgICAgICAgICAgICAgIHNoaWZ0VGFibGUgPSBsYXRjaFRhYmxlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFyIHNpemUgPSBzaGlmdFRhYmxlID09PSBUYWJsZS5ESUdJVCA/IDQgOiA1O1xuICAgICAgICAgICAgICAgIGlmIChlbmRJbmRleCAtIGluZGV4IDwgc2l6ZSkge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIGNvZGUgPSBEZWNvZGVyLnJlYWRDb2RlKGNvcnJlY3RlZEJpdHMsIGluZGV4LCBzaXplKTtcbiAgICAgICAgICAgICAgICBpbmRleCArPSBzaXplO1xuICAgICAgICAgICAgICAgIHZhciBzdHIgPSBEZWNvZGVyLmdldENoYXJhY3RlcihzaGlmdFRhYmxlLCBjb2RlKTtcbiAgICAgICAgICAgICAgICBpZiAoc3RyLnN0YXJ0c1dpdGgoJ0NUUkxfJykpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gVGFibGUgY2hhbmdlc1xuICAgICAgICAgICAgICAgICAgICAvLyBJU08vSUVDIDI0Nzc4OjIwMDggcHJlc2NyaWJlcyBlbmRpbmcgYSBzaGlmdCBzZXF1ZW5jZSBpbiB0aGUgbW9kZSBmcm9tIHdoaWNoIGl0IHdhcyBpbnZva2VkLlxuICAgICAgICAgICAgICAgICAgICAvLyBUaGF0J3MgaW5jbHVkaW5nIHdoZW4gdGhhdCBtb2RlIGlzIGEgc2hpZnQuXG4gICAgICAgICAgICAgICAgICAgIC8vIE91ciB0ZXN0IGNhc2UgZGx1c2JzLnBuZyBmb3IgaXNzdWUgIzY0MiBleGVyY2lzZXMgdGhhdC5cbiAgICAgICAgICAgICAgICAgICAgbGF0Y2hUYWJsZSA9IHNoaWZ0VGFibGU7IC8vIExhdGNoIHRoZSBjdXJyZW50IG1vZGUsIHNvIGFzIHRvIHJldHVybiB0byBVcHBlciBhZnRlciBVL1MgQi9TXG4gICAgICAgICAgICAgICAgICAgIHNoaWZ0VGFibGUgPSBEZWNvZGVyLmdldFRhYmxlKHN0ci5jaGFyQXQoNSkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3RyLmNoYXJBdCg2KSA9PT0gJ0wnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXRjaFRhYmxlID0gc2hpZnRUYWJsZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHN0cjtcbiAgICAgICAgICAgICAgICAgICAgLy8gR28gYmFjayB0byB3aGF0ZXZlciBtb2RlIHdlIGhhZCBiZWVuIGluXG4gICAgICAgICAgICAgICAgICAgIHNoaWZ0VGFibGUgPSBsYXRjaFRhYmxlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogZ2V0cyB0aGUgdGFibGUgY29ycmVzcG9uZGluZyB0byB0aGUgY2hhciBwYXNzZWRcbiAgICAgKi9cbiAgICBEZWNvZGVyLmdldFRhYmxlID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgc3dpdGNoICh0KSB7XG4gICAgICAgICAgICBjYXNlICdMJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gVGFibGUuTE9XRVI7XG4gICAgICAgICAgICBjYXNlICdQJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gVGFibGUuUFVOQ1Q7XG4gICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gVGFibGUuTUlYRUQ7XG4gICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gVGFibGUuRElHSVQ7XG4gICAgICAgICAgICBjYXNlICdCJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gVGFibGUuQklOQVJZO1xuICAgICAgICAgICAgY2FzZSAnVSc6XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBUYWJsZS5VUFBFUjtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgY2hhcmFjdGVyIChvciBzdHJpbmcpIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHBhc3NlZCBjb2RlIGluIHRoZSBnaXZlbiB0YWJsZVxuICAgICAqXG4gICAgICogQHBhcmFtIHRhYmxlIHRoZSB0YWJsZSB1c2VkXG4gICAgICogQHBhcmFtIGNvZGUgdGhlIGNvZGUgb2YgdGhlIGNoYXJhY3RlclxuICAgICAqL1xuICAgIERlY29kZXIuZ2V0Q2hhcmFjdGVyID0gZnVuY3Rpb24gKHRhYmxlLCBjb2RlKSB7XG4gICAgICAgIHN3aXRjaCAodGFibGUpIHtcbiAgICAgICAgICAgIGNhc2UgVGFibGUuVVBQRVI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIERlY29kZXIuVVBQRVJfVEFCTEVbY29kZV07XG4gICAgICAgICAgICBjYXNlIFRhYmxlLkxPV0VSOlxuICAgICAgICAgICAgICAgIHJldHVybiBEZWNvZGVyLkxPV0VSX1RBQkxFW2NvZGVdO1xuICAgICAgICAgICAgY2FzZSBUYWJsZS5NSVhFRDpcbiAgICAgICAgICAgICAgICByZXR1cm4gRGVjb2Rlci5NSVhFRF9UQUJMRVtjb2RlXTtcbiAgICAgICAgICAgIGNhc2UgVGFibGUuUFVOQ1Q6XG4gICAgICAgICAgICAgICAgcmV0dXJuIERlY29kZXIuUFVOQ1RfVEFCTEVbY29kZV07XG4gICAgICAgICAgICBjYXNlIFRhYmxlLkRJR0lUOlxuICAgICAgICAgICAgICAgIHJldHVybiBEZWNvZGVyLkRJR0lUX1RBQkxFW2NvZGVdO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAvLyBTaG91bGQgbm90IHJlYWNoIGhlcmUuXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbl8xLmRlZmF1bHQoJ0JhZCB0YWJsZScpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiA8cD5QZXJmb3JtcyBSUyBlcnJvciBjb3JyZWN0aW9uIG9uIGFuIGFycmF5IG9mIGJpdHMuPC9wPlxuICAgICAqXG4gICAgICogQHJldHVybiB0aGUgY29ycmVjdGVkIGFycmF5XG4gICAgICogQHRocm93cyBGb3JtYXRFeGNlcHRpb24gaWYgdGhlIGlucHV0IGNvbnRhaW5zIHRvbyBtYW55IGVycm9yc1xuICAgICAqL1xuICAgIERlY29kZXIucHJvdG90eXBlLmNvcnJlY3RCaXRzID0gZnVuY3Rpb24gKHJhd2JpdHMpIHtcbiAgICAgICAgdmFyIGdmO1xuICAgICAgICB2YXIgY29kZXdvcmRTaXplO1xuICAgICAgICBpZiAodGhpcy5kZGF0YS5nZXROYkxheWVycygpIDw9IDIpIHtcbiAgICAgICAgICAgIGNvZGV3b3JkU2l6ZSA9IDY7XG4gICAgICAgICAgICBnZiA9IEdlbmVyaWNHRl8xLmRlZmF1bHQuQVpURUNfREFUQV82O1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuZGRhdGEuZ2V0TmJMYXllcnMoKSA8PSA4KSB7XG4gICAgICAgICAgICBjb2Rld29yZFNpemUgPSA4O1xuICAgICAgICAgICAgZ2YgPSBHZW5lcmljR0ZfMS5kZWZhdWx0LkFaVEVDX0RBVEFfODtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLmRkYXRhLmdldE5iTGF5ZXJzKCkgPD0gMjIpIHtcbiAgICAgICAgICAgIGNvZGV3b3JkU2l6ZSA9IDEwO1xuICAgICAgICAgICAgZ2YgPSBHZW5lcmljR0ZfMS5kZWZhdWx0LkFaVEVDX0RBVEFfMTA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb2Rld29yZFNpemUgPSAxMjtcbiAgICAgICAgICAgIGdmID0gR2VuZXJpY0dGXzEuZGVmYXVsdC5BWlRFQ19EQVRBXzEyO1xuICAgICAgICB9XG4gICAgICAgIHZhciBudW1EYXRhQ29kZXdvcmRzID0gdGhpcy5kZGF0YS5nZXROYkRhdGFibG9ja3MoKTtcbiAgICAgICAgdmFyIG51bUNvZGV3b3JkcyA9IHJhd2JpdHMubGVuZ3RoIC8gY29kZXdvcmRTaXplO1xuICAgICAgICBpZiAobnVtQ29kZXdvcmRzIDwgbnVtRGF0YUNvZGV3b3Jkcykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgb2Zmc2V0ID0gcmF3Yml0cy5sZW5ndGggJSBjb2Rld29yZFNpemU7XG4gICAgICAgIHZhciBkYXRhV29yZHMgPSBuZXcgSW50MzJBcnJheShudW1Db2Rld29yZHMpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bUNvZGV3b3JkczsgaSsrLCBvZmZzZXQgKz0gY29kZXdvcmRTaXplKSB7XG4gICAgICAgICAgICBkYXRhV29yZHNbaV0gPSBEZWNvZGVyLnJlYWRDb2RlKHJhd2JpdHMsIG9mZnNldCwgY29kZXdvcmRTaXplKTtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdmFyIHJzRGVjb2RlciA9IG5ldyBSZWVkU29sb21vbkRlY29kZXJfMS5kZWZhdWx0KGdmKTtcbiAgICAgICAgICAgIHJzRGVjb2Rlci5kZWNvZGUoZGF0YVdvcmRzLCBudW1Db2Rld29yZHMgLSBudW1EYXRhQ29kZXdvcmRzKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KGV4KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBOb3cgcGVyZm9ybSB0aGUgdW5zdHVmZmluZyBvcGVyYXRpb24uXG4gICAgICAgIC8vIEZpcnN0LCBjb3VudCBob3cgbWFueSBiaXRzIGFyZSBnb2luZyB0byBiZSB0aHJvd24gb3V0IGFzIHN0dWZmaW5nXG4gICAgICAgIHZhciBtYXNrID0gKDEgPDwgY29kZXdvcmRTaXplKSAtIDE7XG4gICAgICAgIHZhciBzdHVmZmVkQml0cyA9IDA7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtRGF0YUNvZGV3b3JkczsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgZGF0YVdvcmQgPSBkYXRhV29yZHNbaV07XG4gICAgICAgICAgICBpZiAoZGF0YVdvcmQgPT09IDAgfHwgZGF0YVdvcmQgPT09IG1hc2spIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoZGF0YVdvcmQgPT09IDEgfHwgZGF0YVdvcmQgPT09IG1hc2sgLSAxKSB7XG4gICAgICAgICAgICAgICAgc3R1ZmZlZEJpdHMrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBOb3csIGFjdHVhbGx5IHVucGFjayB0aGUgYml0cyBhbmQgcmVtb3ZlIHRoZSBzdHVmZmluZ1xuICAgICAgICB2YXIgY29ycmVjdGVkQml0cyA9IG5ldyBBcnJheShudW1EYXRhQ29kZXdvcmRzICogY29kZXdvcmRTaXplIC0gc3R1ZmZlZEJpdHMpO1xuICAgICAgICB2YXIgaW5kZXggPSAwO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bURhdGFDb2Rld29yZHM7IGkrKykge1xuICAgICAgICAgICAgdmFyIGRhdGFXb3JkID0gZGF0YVdvcmRzW2ldO1xuICAgICAgICAgICAgaWYgKGRhdGFXb3JkID09PSAxIHx8IGRhdGFXb3JkID09PSBtYXNrIC0gMSkge1xuICAgICAgICAgICAgICAgIC8vIG5leHQgY29kZXdvcmRTaXplLTEgYml0cyBhcmUgYWxsIHplcm9zIG9yIGFsbCBvbmVzXG4gICAgICAgICAgICAgICAgY29ycmVjdGVkQml0cy5maWxsKGRhdGFXb3JkID4gMSwgaW5kZXgsIGluZGV4ICsgY29kZXdvcmRTaXplIC0gMSk7XG4gICAgICAgICAgICAgICAgLy8gQXJyYXlzLmZpbGwoY29ycmVjdGVkQml0cywgaW5kZXgsIGluZGV4ICsgY29kZXdvcmRTaXplIC0gMSwgZGF0YVdvcmQgPiAxKTtcbiAgICAgICAgICAgICAgICBpbmRleCArPSBjb2Rld29yZFNpemUgLSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgYml0ID0gY29kZXdvcmRTaXplIC0gMTsgYml0ID49IDA7IC0tYml0KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvcnJlY3RlZEJpdHNbaW5kZXgrK10gPSAoZGF0YVdvcmQgJiAoMSA8PCBiaXQpKSAhPT0gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvcnJlY3RlZEJpdHM7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBhcnJheSBvZiBiaXRzIGZyb20gYW4gQXp0ZWMgQ29kZSBtYXRyaXhcbiAgICAgKlxuICAgICAqIEByZXR1cm4gdGhlIGFycmF5IG9mIGJpdHNcbiAgICAgKi9cbiAgICBEZWNvZGVyLnByb3RvdHlwZS5leHRyYWN0Qml0cyA9IGZ1bmN0aW9uIChtYXRyaXgpIHtcbiAgICAgICAgdmFyIGNvbXBhY3QgPSB0aGlzLmRkYXRhLmlzQ29tcGFjdCgpO1xuICAgICAgICB2YXIgbGF5ZXJzID0gdGhpcy5kZGF0YS5nZXROYkxheWVycygpO1xuICAgICAgICB2YXIgYmFzZU1hdHJpeFNpemUgPSAoY29tcGFjdCA/IDExIDogMTQpICsgbGF5ZXJzICogNDsgLy8gbm90IGluY2x1ZGluZyBhbGlnbm1lbnQgbGluZXNcbiAgICAgICAgdmFyIGFsaWdubWVudE1hcCA9IG5ldyBJbnQzMkFycmF5KGJhc2VNYXRyaXhTaXplKTtcbiAgICAgICAgdmFyIHJhd2JpdHMgPSBuZXcgQXJyYXkodGhpcy50b3RhbEJpdHNJbkxheWVyKGxheWVycywgY29tcGFjdCkpO1xuICAgICAgICBpZiAoY29tcGFjdCkge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbGlnbm1lbnRNYXAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBhbGlnbm1lbnRNYXBbaV0gPSBpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIG1hdHJpeFNpemUgPSBiYXNlTWF0cml4U2l6ZSArIDEgKyAyICogSW50ZWdlcl8xLmRlZmF1bHQudHJ1bmNEaXZpc2lvbigoSW50ZWdlcl8xLmRlZmF1bHQudHJ1bmNEaXZpc2lvbihiYXNlTWF0cml4U2l6ZSwgMikgLSAxKSwgMTUpO1xuICAgICAgICAgICAgdmFyIG9yaWdDZW50ZXIgPSBiYXNlTWF0cml4U2l6ZSAvIDI7XG4gICAgICAgICAgICB2YXIgY2VudGVyID0gSW50ZWdlcl8xLmRlZmF1bHQudHJ1bmNEaXZpc2lvbihtYXRyaXhTaXplLCAyKTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb3JpZ0NlbnRlcjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIG5ld09mZnNldCA9IGkgKyBJbnRlZ2VyXzEuZGVmYXVsdC50cnVuY0RpdmlzaW9uKGksIDE1KTtcbiAgICAgICAgICAgICAgICBhbGlnbm1lbnRNYXBbb3JpZ0NlbnRlciAtIGkgLSAxXSA9IGNlbnRlciAtIG5ld09mZnNldCAtIDE7XG4gICAgICAgICAgICAgICAgYWxpZ25tZW50TWFwW29yaWdDZW50ZXIgKyBpXSA9IGNlbnRlciArIG5ld09mZnNldCArIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHJvd09mZnNldCA9IDA7IGkgPCBsYXllcnM7IGkrKykge1xuICAgICAgICAgICAgdmFyIHJvd1NpemUgPSAobGF5ZXJzIC0gaSkgKiA0ICsgKGNvbXBhY3QgPyA5IDogMTIpO1xuICAgICAgICAgICAgLy8gVGhlIHRvcC1sZWZ0IG1vc3QgcG9pbnQgb2YgdGhpcyBsYXllciBpcyA8bG93LCBsb3c+IChub3QgaW5jbHVkaW5nIGFsaWdubWVudCBsaW5lcylcbiAgICAgICAgICAgIHZhciBsb3cgPSBpICogMjtcbiAgICAgICAgICAgIC8vIFRoZSBib3R0b20tcmlnaHQgbW9zdCBwb2ludCBvZiB0aGlzIGxheWVyIGlzIDxoaWdoLCBoaWdoPiAobm90IGluY2x1ZGluZyBhbGlnbm1lbnQgbGluZXMpXG4gICAgICAgICAgICB2YXIgaGlnaCA9IGJhc2VNYXRyaXhTaXplIC0gMSAtIGxvdztcbiAgICAgICAgICAgIC8vIFdlIHB1bGwgYml0cyBmcm9tIHRoZSB0d28gMiB4IHJvd1NpemUgY29sdW1ucyBhbmQgdHdvIHJvd1NpemUgeCAyIHJvd3NcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgcm93U2l6ZTsgaisrKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNvbHVtbk9mZnNldCA9IGogKiAyO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgMjsgaysrKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGxlZnQgY29sdW1uXG4gICAgICAgICAgICAgICAgICAgIHJhd2JpdHNbcm93T2Zmc2V0ICsgY29sdW1uT2Zmc2V0ICsga10gPVxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0cml4LmdldChhbGlnbm1lbnRNYXBbbG93ICsga10sIGFsaWdubWVudE1hcFtsb3cgKyBqXSk7XG4gICAgICAgICAgICAgICAgICAgIC8vIGJvdHRvbSByb3dcbiAgICAgICAgICAgICAgICAgICAgcmF3Yml0c1tyb3dPZmZzZXQgKyAyICogcm93U2l6ZSArIGNvbHVtbk9mZnNldCArIGtdID1cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdHJpeC5nZXQoYWxpZ25tZW50TWFwW2xvdyArIGpdLCBhbGlnbm1lbnRNYXBbaGlnaCAtIGtdKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gcmlnaHQgY29sdW1uXG4gICAgICAgICAgICAgICAgICAgIHJhd2JpdHNbcm93T2Zmc2V0ICsgNCAqIHJvd1NpemUgKyBjb2x1bW5PZmZzZXQgKyBrXSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRyaXguZ2V0KGFsaWdubWVudE1hcFtoaWdoIC0ga10sIGFsaWdubWVudE1hcFtoaWdoIC0gal0pO1xuICAgICAgICAgICAgICAgICAgICAvLyB0b3Agcm93XG4gICAgICAgICAgICAgICAgICAgIHJhd2JpdHNbcm93T2Zmc2V0ICsgNiAqIHJvd1NpemUgKyBjb2x1bW5PZmZzZXQgKyBrXSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRyaXguZ2V0KGFsaWdubWVudE1hcFtoaWdoIC0gal0sIGFsaWdubWVudE1hcFtsb3cgKyBrXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcm93T2Zmc2V0ICs9IHJvd1NpemUgKiA4O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByYXdiaXRzO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogUmVhZHMgYSBjb2RlIG9mIGdpdmVuIGxlbmd0aCBhbmQgYXQgZ2l2ZW4gaW5kZXggaW4gYW4gYXJyYXkgb2YgYml0c1xuICAgICAqL1xuICAgIERlY29kZXIucmVhZENvZGUgPSBmdW5jdGlvbiAocmF3Yml0cywgc3RhcnRJbmRleCwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciByZXMgPSAwO1xuICAgICAgICBmb3IgKHZhciBpID0gc3RhcnRJbmRleDsgaSA8IHN0YXJ0SW5kZXggKyBsZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgcmVzIDw8PSAxO1xuICAgICAgICAgICAgaWYgKHJhd2JpdHNbaV0pIHtcbiAgICAgICAgICAgICAgICByZXMgfD0gMHgwMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogUmVhZHMgYSBjb2RlIG9mIGxlbmd0aCA4IGluIGFuIGFycmF5IG9mIGJpdHMsIHBhZGRpbmcgd2l0aCB6ZXJvc1xuICAgICAqL1xuICAgIERlY29kZXIucmVhZEJ5dGUgPSBmdW5jdGlvbiAocmF3Yml0cywgc3RhcnRJbmRleCkge1xuICAgICAgICB2YXIgbiA9IHJhd2JpdHMubGVuZ3RoIC0gc3RhcnRJbmRleDtcbiAgICAgICAgaWYgKG4gPj0gOCkge1xuICAgICAgICAgICAgcmV0dXJuIERlY29kZXIucmVhZENvZGUocmF3Yml0cywgc3RhcnRJbmRleCwgOCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIERlY29kZXIucmVhZENvZGUocmF3Yml0cywgc3RhcnRJbmRleCwgbikgPDwgKDggLSBuKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFBhY2tzIGEgYml0IGFycmF5IGludG8gYnl0ZXMsIG1vc3Qgc2lnbmlmaWNhbnQgYml0IGZpcnN0XG4gICAgICovXG4gICAgRGVjb2Rlci5jb252ZXJ0Qm9vbEFycmF5VG9CeXRlQXJyYXkgPSBmdW5jdGlvbiAoYm9vbEFycikge1xuICAgICAgICB2YXIgYnl0ZUFyciA9IG5ldyBVaW50OEFycmF5KChib29sQXJyLmxlbmd0aCArIDcpIC8gOCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnl0ZUFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYnl0ZUFycltpXSA9IERlY29kZXIucmVhZEJ5dGUoYm9vbEFyciwgOCAqIGkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBieXRlQXJyO1xuICAgIH07XG4gICAgRGVjb2Rlci5wcm90b3R5cGUudG90YWxCaXRzSW5MYXllciA9IGZ1bmN0aW9uIChsYXllcnMsIGNvbXBhY3QpIHtcbiAgICAgICAgcmV0dXJuICgoY29tcGFjdCA/IDg4IDogMTEyKSArIDE2ICogbGF5ZXJzKSAqIGxheWVycztcbiAgICB9O1xuICAgIERlY29kZXIuVVBQRVJfVEFCTEUgPSBbXG4gICAgICAgICdDVFJMX1BTJywgJyAnLCAnQScsICdCJywgJ0MnLCAnRCcsICdFJywgJ0YnLCAnRycsICdIJywgJ0knLCAnSicsICdLJywgJ0wnLCAnTScsICdOJywgJ08nLCAnUCcsXG4gICAgICAgICdRJywgJ1InLCAnUycsICdUJywgJ1UnLCAnVicsICdXJywgJ1gnLCAnWScsICdaJywgJ0NUUkxfTEwnLCAnQ1RSTF9NTCcsICdDVFJMX0RMJywgJ0NUUkxfQlMnXG4gICAgXTtcbiAgICBEZWNvZGVyLkxPV0VSX1RBQkxFID0gW1xuICAgICAgICAnQ1RSTF9QUycsICcgJywgJ2EnLCAnYicsICdjJywgJ2QnLCAnZScsICdmJywgJ2cnLCAnaCcsICdpJywgJ2onLCAnaycsICdsJywgJ20nLCAnbicsICdvJywgJ3AnLFxuICAgICAgICAncScsICdyJywgJ3MnLCAndCcsICd1JywgJ3YnLCAndycsICd4JywgJ3knLCAneicsICdDVFJMX1VTJywgJ0NUUkxfTUwnLCAnQ1RSTF9ETCcsICdDVFJMX0JTJ1xuICAgIF07XG4gICAgRGVjb2Rlci5NSVhFRF9UQUJMRSA9IFtcbiAgICAgICAgLy8gTW9kdWxlIHBhcnNlIGZhaWxlZDogT2N0YWwgbGl0ZXJhbCBpbiBzdHJpY3QgbW9kZSAoNTA6MjkpXG4gICAgICAgIC8vIHNvIG51bWJlciBzdHJpbmcgd2VyZSBzY2FwZWRcbiAgICAgICAgJ0NUUkxfUFMnLCAnICcsICdcXFxcMScsICdcXFxcMicsICdcXFxcMycsICdcXFxcNCcsICdcXFxcNScsICdcXFxcNicsICdcXFxcNycsICdcXGInLCAnXFx0JywgJ1xcbicsXG4gICAgICAgICdcXFxcMTMnLCAnXFxmJywgJ1xccicsICdcXFxcMzMnLCAnXFxcXDM0JywgJ1xcXFwzNScsICdcXFxcMzYnLCAnXFxcXDM3JywgJ0AnLCAnXFxcXCcsICdeJywgJ18nLFxuICAgICAgICAnYCcsICd8JywgJ34nLCAnXFxcXDE3NycsICdDVFJMX0xMJywgJ0NUUkxfVUwnLCAnQ1RSTF9QTCcsICdDVFJMX0JTJ1xuICAgIF07XG4gICAgRGVjb2Rlci5QVU5DVF9UQUJMRSA9IFtcbiAgICAgICAgJycsICdcXHInLCAnXFxyXFxuJywgJy4gJywgJywgJywgJzogJywgJyEnLCAnXCInLCAnIycsICckJywgJyUnLCAnJicsICdcXCcnLCAnKCcsICcpJyxcbiAgICAgICAgJyonLCAnKycsICcsJywgJy0nLCAnLicsICcvJywgJzonLCAnOycsICc8JywgJz0nLCAnPicsICc/JywgJ1snLCAnXScsICd7JywgJ30nLCAnQ1RSTF9VTCdcbiAgICBdO1xuICAgIERlY29kZXIuRElHSVRfVEFCTEUgPSBbXG4gICAgICAgICdDVFJMX1BTJywgJyAnLCAnMCcsICcxJywgJzInLCAnMycsICc0JywgJzUnLCAnNicsICc3JywgJzgnLCAnOScsICcsJywgJy4nLCAnQ1RSTF9VTCcsICdDVFJMX1VTJ1xuICAgIF07XG4gICAgcmV0dXJuIERlY29kZXI7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gRGVjb2Rlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURlY29kZXIuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IDIwMTIgWlhpbmcgYXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qbmFtZXNwYWNlIGNvbS5nb29nbGUuenhpbmcuY29tbW9uLmRldGVjdG9yIHsqL1xuLyoqXG4gKiBHZW5lcmFsIG1hdGgtcmVsYXRlZCBhbmQgbnVtZXJpYyB1dGlsaXR5IGZ1bmN0aW9ucy5cbiAqL1xudmFyIE1hdGhVdGlscyA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBNYXRoVXRpbHMoKSB7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEVuZHMgdXAgYmVpbmcgYSBiaXQgZmFzdGVyIHRoYW4ge0BsaW5rIE1hdGgjcm91bmQoZmxvYXQpfS4gVGhpcyBtZXJlbHkgcm91bmRzIGl0c1xuICAgICAqIGFyZ3VtZW50IHRvIHRoZSBuZWFyZXN0IGludCwgd2hlcmUgeC41IHJvdW5kcyB1cCB0byB4KzEuIFNlbWFudGljcyBvZiB0aGlzIHNob3J0Y3V0XG4gICAgICogZGlmZmVyIHNsaWdodGx5IGZyb20ge0BsaW5rIE1hdGgjcm91bmQoZmxvYXQpfSBpbiB0aGF0IGhhbGYgcm91bmRzIGRvd24gZm9yIG5lZ2F0aXZlXG4gICAgICogdmFsdWVzLiAtMi41IHJvdW5kcyB0byAtMywgbm90IC0yLiBGb3IgcHVycG9zZXMgaGVyZSBpdCBtYWtlcyBubyBkaWZmZXJlbmNlLlxuICAgICAqXG4gICAgICogQHBhcmFtIGQgcmVhbCB2YWx1ZSB0byByb3VuZFxuICAgICAqIEByZXR1cm4gbmVhcmVzdCB7QGNvZGUgaW50fVxuICAgICAqL1xuICAgIE1hdGhVdGlscy5yb3VuZCA9IGZ1bmN0aW9uIChkIC8qZmxvYXQqLykge1xuICAgICAgICBpZiAoTmFOID09PSBkKVxuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIGlmIChkIDw9IE51bWJlci5NSU5fU0FGRV9JTlRFR0VSKVxuICAgICAgICAgICAgcmV0dXJuIE51bWJlci5NSU5fU0FGRV9JTlRFR0VSO1xuICAgICAgICBpZiAoZCA+PSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUilcbiAgICAgICAgICAgIHJldHVybiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUjtcbiAgICAgICAgcmV0dXJuIC8qKGludCkgKi8gKGQgKyAoZCA8IDAuMCA/IC0wLjUgOiAwLjUpKSB8IDA7XG4gICAgfTtcbiAgICAvLyBUWVBFU0NSSVBUUE9SVDogbWF5YmUgcmVtb3ZlIHJvdW5kIG1ldGhvZCBhbmQgY2FsbCBkaXJlY3RseSBNYXRoLnJvdW5kLCBpdCBsb29rcyBsaWtlIGl0IGRvZXNuJ3QgbWFrZSBzZW5zZSBmb3IganNcbiAgICAvKipcbiAgICAgKiBAcGFyYW0gYVggcG9pbnQgQSB4IGNvb3JkaW5hdGVcbiAgICAgKiBAcGFyYW0gYVkgcG9pbnQgQSB5IGNvb3JkaW5hdGVcbiAgICAgKiBAcGFyYW0gYlggcG9pbnQgQiB4IGNvb3JkaW5hdGVcbiAgICAgKiBAcGFyYW0gYlkgcG9pbnQgQiB5IGNvb3JkaW5hdGVcbiAgICAgKiBAcmV0dXJuIEV1Y2xpZGVhbiBkaXN0YW5jZSBiZXR3ZWVuIHBvaW50cyBBIGFuZCBCXG4gICAgICovXG4gICAgTWF0aFV0aWxzLmRpc3RhbmNlID0gZnVuY3Rpb24gKGFYIC8qZmxvYXR8aW50Ki8sIGFZIC8qZmxvYXR8aW50Ki8sIGJYIC8qZmxvYXR8aW50Ki8sIGJZIC8qZmxvYXR8aW50Ki8pIHtcbiAgICAgICAgdmFyIHhEaWZmID0gYVggLSBiWDtcbiAgICAgICAgdmFyIHlEaWZmID0gYVkgLSBiWTtcbiAgICAgICAgcmV0dXJuIC8qKGZsb2F0KSAqLyBNYXRoLnNxcnQoeERpZmYgKiB4RGlmZiArIHlEaWZmICogeURpZmYpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHBhcmFtIGFYIHBvaW50IEEgeCBjb29yZGluYXRlXG4gICAgICogQHBhcmFtIGFZIHBvaW50IEEgeSBjb29yZGluYXRlXG4gICAgICogQHBhcmFtIGJYIHBvaW50IEIgeCBjb29yZGluYXRlXG4gICAgICogQHBhcmFtIGJZIHBvaW50IEIgeSBjb29yZGluYXRlXG4gICAgICogQHJldHVybiBFdWNsaWRlYW4gZGlzdGFuY2UgYmV0d2VlbiBwb2ludHMgQSBhbmQgQlxuICAgICAqL1xuICAgIC8vIHB1YmxpYyBzdGF0aWMgZGlzdGFuY2UoYVg6IG51bWJlciAvKmludCovLCBhWTogbnVtYmVyIC8qaW50Ki8sIGJYOiBudW1iZXIgLyppbnQqLywgYlk6IG51bWJlciAvKmludCovKTogZmxvYXQge1xuICAgIC8vICAgY29uc3QgeERpZmYgPSBhWCAtIGJYXG4gICAgLy8gICBjb25zdCB5RGlmZiA9IGFZIC0gYllcbiAgICAvLyAgIHJldHVybiAoZmxvYXQpIE1hdGguc3FydCh4RGlmZiAqIHhEaWZmICsgeURpZmYgKiB5RGlmZik7XG4gICAgLy8gfVxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBhcnJheSB2YWx1ZXMgdG8gc3VtXG4gICAgICogQHJldHVybiBzdW0gb2YgdmFsdWVzIGluIGFycmF5XG4gICAgICovXG4gICAgTWF0aFV0aWxzLnN1bSA9IGZ1bmN0aW9uIChhcnJheSkge1xuICAgICAgICB2YXIgY291bnQgPSAwO1xuICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoXzEgPSBhcnJheS5sZW5ndGg7IGkgIT09IGxlbmd0aF8xOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBhID0gYXJyYXlbaV07XG4gICAgICAgICAgICBjb3VudCArPSBhO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb3VudDtcbiAgICB9O1xuICAgIHJldHVybiBNYXRoVXRpbHM7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gTWF0aFV0aWxzO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TWF0aFV0aWxzLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLyoqXG4gKiBQb255ZmlsbCBmb3IgSmF2YSdzIEZsb2F0IGNsYXNzLlxuICovXG52YXIgRmxvYXQgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRmxvYXQoKSB7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFNpbmNUUyBoYXMgbm8gZGlmZmVyZW5jZSBiZXR3ZWVuIGludCBhbmQgZmxvYXQsIHRoZXJlJ3MgYWxsIG51bWJlcnMsXG4gICAgICogdGhpcyBpcyB1c2VkIG9ubHkgdG8gcG9seWZpbGwgSmF2YSBjb2RlLlxuICAgICAqL1xuICAgIEZsb2F0LmZsb2F0VG9JbnRCaXRzID0gZnVuY3Rpb24gKGYpIHtcbiAgICAgICAgcmV0dXJuIGY7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBUaGUgZmxvYXQgbWF4IHZhbHVlIGluIEpTIGlzIHRoZSBudW1iZXIgbWF4IHZhbHVlLlxuICAgICAqL1xuICAgIEZsb2F0Lk1BWF9WQUxVRSA9IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSO1xuICAgIHJldHVybiBGbG9hdDtcbn0oKSk7XG5leHBvcnRzLmRlZmF1bHQgPSBGbG9hdDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUZsb2F0LmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuLypcbiAqIENvcHlyaWdodCAyMDA3IFpYaW5nIGF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vKm5hbWVzcGFjZSBjb20uZ29vZ2xlLnp4aW5nIHsqL1xudmFyIE1hdGhVdGlsc18xID0gcmVxdWlyZShcIi4vY29tbW9uL2RldGVjdG9yL01hdGhVdGlsc1wiKTtcbnZhciBGbG9hdF8xID0gcmVxdWlyZShcIi4vdXRpbC9GbG9hdFwiKTtcbi8qKlxuICogPHA+RW5jYXBzdWxhdGVzIGEgcG9pbnQgb2YgaW50ZXJlc3QgaW4gYW4gaW1hZ2UgY29udGFpbmluZyBhIGJhcmNvZGUuIFR5cGljYWxseSwgdGhpc1xuICogd291bGQgYmUgdGhlIGxvY2F0aW9uIG9mIGEgZmluZGVyIHBhdHRlcm4gb3IgdGhlIGNvcm5lciBvZiB0aGUgYmFyY29kZSwgZm9yIGV4YW1wbGUuPC9wPlxuICpcbiAqIEBhdXRob3IgU2VhbiBPd2VuXG4gKi9cbnZhciBSZXN1bHRQb2ludCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBSZXN1bHRQb2ludCh4LCB5KSB7XG4gICAgICAgIHRoaXMueCA9IHg7XG4gICAgICAgIHRoaXMueSA9IHk7XG4gICAgfVxuICAgIFJlc3VsdFBvaW50LnByb3RvdHlwZS5nZXRYID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy54O1xuICAgIH07XG4gICAgUmVzdWx0UG9pbnQucHJvdG90eXBlLmdldFkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnk7XG4gICAgfTtcbiAgICAvKkBPdmVycmlkZSovXG4gICAgUmVzdWx0UG9pbnQucHJvdG90eXBlLmVxdWFscyA9IGZ1bmN0aW9uIChvdGhlcikge1xuICAgICAgICBpZiAob3RoZXIgaW5zdGFuY2VvZiBSZXN1bHRQb2ludCkge1xuICAgICAgICAgICAgdmFyIG90aGVyUG9pbnQgPSBvdGhlcjtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnggPT09IG90aGVyUG9pbnQueCAmJiB0aGlzLnkgPT09IG90aGVyUG9pbnQueTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICAvKkBPdmVycmlkZSovXG4gICAgUmVzdWx0UG9pbnQucHJvdG90eXBlLmhhc2hDb2RlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gMzEgKiBGbG9hdF8xLmRlZmF1bHQuZmxvYXRUb0ludEJpdHModGhpcy54KSArIEZsb2F0XzEuZGVmYXVsdC5mbG9hdFRvSW50Qml0cyh0aGlzLnkpO1xuICAgIH07XG4gICAgLypAT3ZlcnJpZGUqL1xuICAgIFJlc3VsdFBvaW50LnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICcoJyArIHRoaXMueCArICcsJyArIHRoaXMueSArICcpJztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIE9yZGVycyBhbiBhcnJheSBvZiB0aHJlZSBSZXN1bHRQb2ludHMgaW4gYW4gb3JkZXIgW0EsQixDXSBzdWNoIHRoYXQgQUIgaXMgbGVzcyB0aGFuIEFDXG4gICAgICogYW5kIEJDIGlzIGxlc3MgdGhhbiBBQywgYW5kIHRoZSBhbmdsZSBiZXR3ZWVuIEJDIGFuZCBCQSBpcyBsZXNzIHRoYW4gMTgwIGRlZ3JlZXMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcGF0dGVybnMgYXJyYXkgb2YgdGhyZWUge0Bjb2RlIFJlc3VsdFBvaW50fSB0byBvcmRlclxuICAgICAqL1xuICAgIFJlc3VsdFBvaW50Lm9yZGVyQmVzdFBhdHRlcm5zID0gZnVuY3Rpb24gKHBhdHRlcm5zKSB7XG4gICAgICAgIC8vIEZpbmQgZGlzdGFuY2VzIGJldHdlZW4gcGF0dGVybiBjZW50ZXJzXG4gICAgICAgIHZhciB6ZXJvT25lRGlzdGFuY2UgPSB0aGlzLmRpc3RhbmNlKHBhdHRlcm5zWzBdLCBwYXR0ZXJuc1sxXSk7XG4gICAgICAgIHZhciBvbmVUd29EaXN0YW5jZSA9IHRoaXMuZGlzdGFuY2UocGF0dGVybnNbMV0sIHBhdHRlcm5zWzJdKTtcbiAgICAgICAgdmFyIHplcm9Ud29EaXN0YW5jZSA9IHRoaXMuZGlzdGFuY2UocGF0dGVybnNbMF0sIHBhdHRlcm5zWzJdKTtcbiAgICAgICAgdmFyIHBvaW50QTtcbiAgICAgICAgdmFyIHBvaW50QjtcbiAgICAgICAgdmFyIHBvaW50QztcbiAgICAgICAgLy8gQXNzdW1lIG9uZSBjbG9zZXN0IHRvIG90aGVyIHR3byBpcyBCOyBBIGFuZCBDIHdpbGwganVzdCBiZSBndWVzc2VzIGF0IGZpcnN0XG4gICAgICAgIGlmIChvbmVUd29EaXN0YW5jZSA+PSB6ZXJvT25lRGlzdGFuY2UgJiYgb25lVHdvRGlzdGFuY2UgPj0gemVyb1R3b0Rpc3RhbmNlKSB7XG4gICAgICAgICAgICBwb2ludEIgPSBwYXR0ZXJuc1swXTtcbiAgICAgICAgICAgIHBvaW50QSA9IHBhdHRlcm5zWzFdO1xuICAgICAgICAgICAgcG9pbnRDID0gcGF0dGVybnNbMl07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoemVyb1R3b0Rpc3RhbmNlID49IG9uZVR3b0Rpc3RhbmNlICYmIHplcm9Ud29EaXN0YW5jZSA+PSB6ZXJvT25lRGlzdGFuY2UpIHtcbiAgICAgICAgICAgIHBvaW50QiA9IHBhdHRlcm5zWzFdO1xuICAgICAgICAgICAgcG9pbnRBID0gcGF0dGVybnNbMF07XG4gICAgICAgICAgICBwb2ludEMgPSBwYXR0ZXJuc1syXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBvaW50QiA9IHBhdHRlcm5zWzJdO1xuICAgICAgICAgICAgcG9pbnRBID0gcGF0dGVybnNbMF07XG4gICAgICAgICAgICBwb2ludEMgPSBwYXR0ZXJuc1sxXTtcbiAgICAgICAgfVxuICAgICAgICAvLyBVc2UgY3Jvc3MgcHJvZHVjdCB0byBmaWd1cmUgb3V0IHdoZXRoZXIgQSBhbmQgQyBhcmUgY29ycmVjdCBvciBmbGlwcGVkLlxuICAgICAgICAvLyBUaGlzIGFza3Mgd2hldGhlciBCQyB4IEJBIGhhcyBhIHBvc2l0aXZlIHogY29tcG9uZW50LCB3aGljaCBpcyB0aGUgYXJyYW5nZW1lbnRcbiAgICAgICAgLy8gd2Ugd2FudCBmb3IgQSwgQiwgQy4gSWYgaXQncyBuZWdhdGl2ZSwgdGhlbiB3ZSd2ZSBnb3QgaXQgZmxpcHBlZCBhcm91bmQgYW5kXG4gICAgICAgIC8vIHNob3VsZCBzd2FwIEEgYW5kIEMuXG4gICAgICAgIGlmICh0aGlzLmNyb3NzUHJvZHVjdFoocG9pbnRBLCBwb2ludEIsIHBvaW50QykgPCAwLjApIHtcbiAgICAgICAgICAgIHZhciB0ZW1wID0gcG9pbnRBO1xuICAgICAgICAgICAgcG9pbnRBID0gcG9pbnRDO1xuICAgICAgICAgICAgcG9pbnRDID0gdGVtcDtcbiAgICAgICAgfVxuICAgICAgICBwYXR0ZXJuc1swXSA9IHBvaW50QTtcbiAgICAgICAgcGF0dGVybnNbMV0gPSBwb2ludEI7XG4gICAgICAgIHBhdHRlcm5zWzJdID0gcG9pbnRDO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHBhdHRlcm4xIGZpcnN0IHBhdHRlcm5cbiAgICAgKiBAcGFyYW0gcGF0dGVybjIgc2Vjb25kIHBhdHRlcm5cbiAgICAgKiBAcmV0dXJuIGRpc3RhbmNlIGJldHdlZW4gdHdvIHBvaW50c1xuICAgICAqL1xuICAgIFJlc3VsdFBvaW50LmRpc3RhbmNlID0gZnVuY3Rpb24gKHBhdHRlcm4xLCBwYXR0ZXJuMikge1xuICAgICAgICByZXR1cm4gTWF0aFV0aWxzXzEuZGVmYXVsdC5kaXN0YW5jZShwYXR0ZXJuMS54LCBwYXR0ZXJuMS55LCBwYXR0ZXJuMi54LCBwYXR0ZXJuMi55KTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHogY29tcG9uZW50IG9mIHRoZSBjcm9zcyBwcm9kdWN0IGJldHdlZW4gdmVjdG9ycyBCQyBhbmQgQkEuXG4gICAgICovXG4gICAgUmVzdWx0UG9pbnQuY3Jvc3NQcm9kdWN0WiA9IGZ1bmN0aW9uIChwb2ludEEsIHBvaW50QiwgcG9pbnRDKSB7XG4gICAgICAgIHZhciBiWCA9IHBvaW50Qi54O1xuICAgICAgICB2YXIgYlkgPSBwb2ludEIueTtcbiAgICAgICAgcmV0dXJuICgocG9pbnRDLnggLSBiWCkgKiAocG9pbnRBLnkgLSBiWSkpIC0gKChwb2ludEMueSAtIGJZKSAqIChwb2ludEEueCAtIGJYKSk7XG4gICAgfTtcbiAgICByZXR1cm4gUmVzdWx0UG9pbnQ7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gUmVzdWx0UG9pbnQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1SZXN1bHRQb2ludC5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8qXG4gKiBDb3B5cmlnaHQgMjAwNyBaWGluZyBhdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLyoqXG4gKiA8cD5FbmNhcHN1bGF0ZXMgdGhlIHJlc3VsdCBvZiBkZXRlY3RpbmcgYSBiYXJjb2RlIGluIGFuIGltYWdlLiBUaGlzIGluY2x1ZGVzIHRoZSByYXdcbiAqIG1hdHJpeCBvZiBibGFjay93aGl0ZSBwaXhlbHMgY29ycmVzcG9uZGluZyB0byB0aGUgYmFyY29kZSwgYW5kIHBvc3NpYmx5IHBvaW50cyBvZiBpbnRlcmVzdFxuICogaW4gdGhlIGltYWdlLCBsaWtlIHRoZSBsb2NhdGlvbiBvZiBmaW5kZXIgcGF0dGVybnMgb3IgY29ybmVycyBvZiB0aGUgYmFyY29kZSBpbiB0aGUgaW1hZ2UuPC9wPlxuICpcbiAqIEBhdXRob3IgU2VhbiBPd2VuXG4gKi9cbnZhciBEZXRlY3RvclJlc3VsdCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBEZXRlY3RvclJlc3VsdChiaXRzLCBwb2ludHMpIHtcbiAgICAgICAgdGhpcy5iaXRzID0gYml0cztcbiAgICAgICAgdGhpcy5wb2ludHMgPSBwb2ludHM7XG4gICAgfVxuICAgIERldGVjdG9yUmVzdWx0LnByb3RvdHlwZS5nZXRCaXRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5iaXRzO1xuICAgIH07XG4gICAgRGV0ZWN0b3JSZXN1bHQucHJvdG90eXBlLmdldFBvaW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9pbnRzO1xuICAgIH07XG4gICAgcmV0dXJuIERldGVjdG9yUmVzdWx0O1xufSgpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IERldGVjdG9yUmVzdWx0O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RGV0ZWN0b3JSZXN1bHQuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IDIwMTAgWlhpbmcgYXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIERldGVjdG9yUmVzdWx0XzEgPSByZXF1aXJlKFwiLi4vY29tbW9uL0RldGVjdG9yUmVzdWx0XCIpO1xuLyoqXG4gKiA8cD5FeHRlbmRzIHtAbGluayBEZXRlY3RvclJlc3VsdH0gd2l0aCBtb3JlIGluZm9ybWF0aW9uIHNwZWNpZmljIHRvIHRoZSBBenRlYyBmb3JtYXQsXG4gKiBsaWtlIHRoZSBudW1iZXIgb2YgbGF5ZXJzIGFuZCB3aGV0aGVyIGl0J3MgY29tcGFjdC48L3A+XG4gKlxuICogQGF1dGhvciBTZWFuIE93ZW5cbiAqL1xudmFyIEF6dGVjRGV0ZWN0b3JSZXN1bHQgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEF6dGVjRGV0ZWN0b3JSZXN1bHQsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQXp0ZWNEZXRlY3RvclJlc3VsdChiaXRzLCBwb2ludHMsIGNvbXBhY3QsIG5iRGF0YWJsb2NrcywgbmJMYXllcnMpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgYml0cywgcG9pbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5jb21wYWN0ID0gY29tcGFjdDtcbiAgICAgICAgX3RoaXMubmJEYXRhYmxvY2tzID0gbmJEYXRhYmxvY2tzO1xuICAgICAgICBfdGhpcy5uYkxheWVycyA9IG5iTGF5ZXJzO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIEF6dGVjRGV0ZWN0b3JSZXN1bHQucHJvdG90eXBlLmdldE5iTGF5ZXJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5uYkxheWVycztcbiAgICB9O1xuICAgIEF6dGVjRGV0ZWN0b3JSZXN1bHQucHJvdG90eXBlLmdldE5iRGF0YWJsb2NrcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmJEYXRhYmxvY2tzO1xuICAgIH07XG4gICAgQXp0ZWNEZXRlY3RvclJlc3VsdC5wcm90b3R5cGUuaXNDb21wYWN0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb21wYWN0O1xuICAgIH07XG4gICAgcmV0dXJuIEF6dGVjRGV0ZWN0b3JSZXN1bHQ7XG59KERldGVjdG9yUmVzdWx0XzEuZGVmYXVsdCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gQXp0ZWNEZXRlY3RvclJlc3VsdDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUF6dGVjRGV0ZWN0b3JSZXN1bHQuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IDIwMTAgWlhpbmcgYXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qbmFtZXNwYWNlIGNvbS5nb29nbGUuenhpbmcuY29tbW9uLmRldGVjdG9yIHsqL1xudmFyIFJlc3VsdFBvaW50XzEgPSByZXF1aXJlKFwiLi4vLi4vUmVzdWx0UG9pbnRcIik7XG52YXIgTWF0aFV0aWxzXzEgPSByZXF1aXJlKFwiLi9NYXRoVXRpbHNcIik7XG52YXIgTm90Rm91bmRFeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuLi8uLi9Ob3RGb3VuZEV4Y2VwdGlvblwiKTtcbi8qKlxuICogPHA+XG4gKiBEZXRlY3RzIGEgY2FuZGlkYXRlIGJhcmNvZGUtbGlrZSByZWN0YW5ndWxhciByZWdpb24gd2l0aGluIGFuIGltYWdlLiBJdFxuICogc3RhcnRzIGFyb3VuZCB0aGUgY2VudGVyIG9mIHRoZSBpbWFnZSwgaW5jcmVhc2VzIHRoZSBzaXplIG9mIHRoZSBjYW5kaWRhdGVcbiAqIHJlZ2lvbiB1bnRpbCBpdCBmaW5kcyBhIHdoaXRlIHJlY3Rhbmd1bGFyIHJlZ2lvbi4gQnkga2VlcGluZyB0cmFjayBvZiB0aGVcbiAqIGxhc3QgYmxhY2sgcG9pbnRzIGl0IGVuY291bnRlcmVkLCBpdCBkZXRlcm1pbmVzIHRoZSBjb3JuZXJzIG9mIHRoZSBiYXJjb2RlLlxuICogPC9wPlxuICpcbiAqIEBhdXRob3IgRGF2aWQgT2xpdmllclxuICovXG52YXIgV2hpdGVSZWN0YW5nbGVEZXRlY3RvciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICAvLyBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBpbWFnZTogQml0TWF0cml4KSAvKnRocm93cyBOb3RGb3VuZEV4Y2VwdGlvbiovIHtcbiAgICAvLyAgIHRoaXMoaW1hZ2UsIElOSVRfU0laRSwgaW1hZ2UuZ2V0V2lkdGgoKSAvIDIsIGltYWdlLmdldEhlaWdodCgpIC8gMilcbiAgICAvLyB9XG4gICAgLyoqXG4gICAgICogQHBhcmFtIGltYWdlIGJhcmNvZGUgaW1hZ2UgdG8gZmluZCBhIHJlY3RhbmdsZSBpblxuICAgICAqIEBwYXJhbSBpbml0U2l6ZSBpbml0aWFsIHNpemUgb2Ygc2VhcmNoIGFyZWEgYXJvdW5kIGNlbnRlclxuICAgICAqIEBwYXJhbSB4IHggcG9zaXRpb24gb2Ygc2VhcmNoIGNlbnRlclxuICAgICAqIEBwYXJhbSB5IHkgcG9zaXRpb24gb2Ygc2VhcmNoIGNlbnRlclxuICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb24gaWYgaW1hZ2UgaXMgdG9vIHNtYWxsIHRvIGFjY29tbW9kYXRlIHtAY29kZSBpbml0U2l6ZX1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBXaGl0ZVJlY3RhbmdsZURldGVjdG9yKGltYWdlLCBpbml0U2l6ZSAvKmludCovLCB4IC8qaW50Ki8sIHkgLyppbnQqLykge1xuICAgICAgICB0aGlzLmltYWdlID0gaW1hZ2U7XG4gICAgICAgIHRoaXMuaGVpZ2h0ID0gaW1hZ2UuZ2V0SGVpZ2h0KCk7XG4gICAgICAgIHRoaXMud2lkdGggPSBpbWFnZS5nZXRXaWR0aCgpO1xuICAgICAgICBpZiAodW5kZWZpbmVkID09PSBpbml0U2l6ZSB8fCBudWxsID09PSBpbml0U2l6ZSkge1xuICAgICAgICAgICAgaW5pdFNpemUgPSBXaGl0ZVJlY3RhbmdsZURldGVjdG9yLklOSVRfU0laRTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodW5kZWZpbmVkID09PSB4IHx8IG51bGwgPT09IHgpIHtcbiAgICAgICAgICAgIHggPSBpbWFnZS5nZXRXaWR0aCgpIC8gMiB8IDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHVuZGVmaW5lZCA9PT0geSB8fCBudWxsID09PSB5KSB7XG4gICAgICAgICAgICB5ID0gaW1hZ2UuZ2V0SGVpZ2h0KCkgLyAyIHwgMDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgaGFsZnNpemUgPSBpbml0U2l6ZSAvIDIgfCAwO1xuICAgICAgICB0aGlzLmxlZnRJbml0ID0geCAtIGhhbGZzaXplO1xuICAgICAgICB0aGlzLnJpZ2h0SW5pdCA9IHggKyBoYWxmc2l6ZTtcbiAgICAgICAgdGhpcy51cEluaXQgPSB5IC0gaGFsZnNpemU7XG4gICAgICAgIHRoaXMuZG93bkluaXQgPSB5ICsgaGFsZnNpemU7XG4gICAgICAgIGlmICh0aGlzLnVwSW5pdCA8IDAgfHwgdGhpcy5sZWZ0SW5pdCA8IDAgfHwgdGhpcy5kb3duSW5pdCA+PSB0aGlzLmhlaWdodCB8fCB0aGlzLnJpZ2h0SW5pdCA+PSB0aGlzLndpZHRoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogPHA+XG4gICAgICogRGV0ZWN0cyBhIGNhbmRpZGF0ZSBiYXJjb2RlLWxpa2UgcmVjdGFuZ3VsYXIgcmVnaW9uIHdpdGhpbiBhbiBpbWFnZS4gSXRcbiAgICAgKiBzdGFydHMgYXJvdW5kIHRoZSBjZW50ZXIgb2YgdGhlIGltYWdlLCBpbmNyZWFzZXMgdGhlIHNpemUgb2YgdGhlIGNhbmRpZGF0ZVxuICAgICAqIHJlZ2lvbiB1bnRpbCBpdCBmaW5kcyBhIHdoaXRlIHJlY3Rhbmd1bGFyIHJlZ2lvbi5cbiAgICAgKiA8L3A+XG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtAbGluayBSZXN1bHRQb2ludH1bXSBkZXNjcmliaW5nIHRoZSBjb3JuZXJzIG9mIHRoZSByZWN0YW5ndWxhclxuICAgICAqICAgICAgICAgcmVnaW9uLiBUaGUgZmlyc3QgYW5kIGxhc3QgcG9pbnRzIGFyZSBvcHBvc2VkIG9uIHRoZSBkaWFnb25hbCwgYXNcbiAgICAgKiAgICAgICAgIGFyZSB0aGUgc2Vjb25kIGFuZCB0aGlyZC4gVGhlIGZpcnN0IHBvaW50IHdpbGwgYmUgdGhlIHRvcG1vc3RcbiAgICAgKiAgICAgICAgIHBvaW50IGFuZCB0aGUgbGFzdCwgdGhlIGJvdHRvbW1vc3QuIFRoZSBzZWNvbmQgcG9pbnQgd2lsbCBiZVxuICAgICAqICAgICAgICAgbGVmdG1vc3QgYW5kIHRoZSB0aGlyZCwgdGhlIHJpZ2h0bW9zdFxuICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb24gaWYgbm8gRGF0YSBNYXRyaXggQ29kZSBjYW4gYmUgZm91bmRcbiAgICAgKi9cbiAgICBXaGl0ZVJlY3RhbmdsZURldGVjdG9yLnByb3RvdHlwZS5kZXRlY3QgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBsZWZ0ID0gdGhpcy5sZWZ0SW5pdDtcbiAgICAgICAgdmFyIHJpZ2h0ID0gdGhpcy5yaWdodEluaXQ7XG4gICAgICAgIHZhciB1cCA9IHRoaXMudXBJbml0O1xuICAgICAgICB2YXIgZG93biA9IHRoaXMuZG93bkluaXQ7XG4gICAgICAgIHZhciBzaXplRXhjZWVkZWQgPSBmYWxzZTtcbiAgICAgICAgdmFyIGFCbGFja1BvaW50Rm91bmRPbkJvcmRlciA9IHRydWU7XG4gICAgICAgIHZhciBhdExlYXN0T25lQmxhY2tQb2ludEZvdW5kT25Cb3JkZXIgPSBmYWxzZTtcbiAgICAgICAgdmFyIGF0TGVhc3RPbmVCbGFja1BvaW50Rm91bmRPblJpZ2h0ID0gZmFsc2U7XG4gICAgICAgIHZhciBhdExlYXN0T25lQmxhY2tQb2ludEZvdW5kT25Cb3R0b20gPSBmYWxzZTtcbiAgICAgICAgdmFyIGF0TGVhc3RPbmVCbGFja1BvaW50Rm91bmRPbkxlZnQgPSBmYWxzZTtcbiAgICAgICAgdmFyIGF0TGVhc3RPbmVCbGFja1BvaW50Rm91bmRPblRvcCA9IGZhbHNlO1xuICAgICAgICB2YXIgd2lkdGggPSB0aGlzLndpZHRoO1xuICAgICAgICB2YXIgaGVpZ2h0ID0gdGhpcy5oZWlnaHQ7XG4gICAgICAgIHdoaWxlIChhQmxhY2tQb2ludEZvdW5kT25Cb3JkZXIpIHtcbiAgICAgICAgICAgIGFCbGFja1BvaW50Rm91bmRPbkJvcmRlciA9IGZhbHNlO1xuICAgICAgICAgICAgLy8gLi4uLi5cbiAgICAgICAgICAgIC8vIC4gICB8XG4gICAgICAgICAgICAvLyAuLi4uLlxuICAgICAgICAgICAgdmFyIHJpZ2h0Qm9yZGVyTm90V2hpdGUgPSB0cnVlO1xuICAgICAgICAgICAgd2hpbGUgKChyaWdodEJvcmRlck5vdFdoaXRlIHx8ICFhdExlYXN0T25lQmxhY2tQb2ludEZvdW5kT25SaWdodCkgJiYgcmlnaHQgPCB3aWR0aCkge1xuICAgICAgICAgICAgICAgIHJpZ2h0Qm9yZGVyTm90V2hpdGUgPSB0aGlzLmNvbnRhaW5zQmxhY2tQb2ludCh1cCwgZG93biwgcmlnaHQsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICBpZiAocmlnaHRCb3JkZXJOb3RXaGl0ZSkge1xuICAgICAgICAgICAgICAgICAgICByaWdodCsrO1xuICAgICAgICAgICAgICAgICAgICBhQmxhY2tQb2ludEZvdW5kT25Cb3JkZXIgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBhdExlYXN0T25lQmxhY2tQb2ludEZvdW5kT25SaWdodCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFhdExlYXN0T25lQmxhY2tQb2ludEZvdW5kT25SaWdodCkge1xuICAgICAgICAgICAgICAgICAgICByaWdodCsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChyaWdodCA+PSB3aWR0aCkge1xuICAgICAgICAgICAgICAgIHNpemVFeGNlZWRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyAuLi4uLlxuICAgICAgICAgICAgLy8gLiAgIC5cbiAgICAgICAgICAgIC8vIC5fX18uXG4gICAgICAgICAgICB2YXIgYm90dG9tQm9yZGVyTm90V2hpdGUgPSB0cnVlO1xuICAgICAgICAgICAgd2hpbGUgKChib3R0b21Cb3JkZXJOb3RXaGl0ZSB8fCAhYXRMZWFzdE9uZUJsYWNrUG9pbnRGb3VuZE9uQm90dG9tKSAmJiBkb3duIDwgaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgYm90dG9tQm9yZGVyTm90V2hpdGUgPSB0aGlzLmNvbnRhaW5zQmxhY2tQb2ludChsZWZ0LCByaWdodCwgZG93biwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKGJvdHRvbUJvcmRlck5vdFdoaXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGRvd24rKztcbiAgICAgICAgICAgICAgICAgICAgYUJsYWNrUG9pbnRGb3VuZE9uQm9yZGVyID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYXRMZWFzdE9uZUJsYWNrUG9pbnRGb3VuZE9uQm90dG9tID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoIWF0TGVhc3RPbmVCbGFja1BvaW50Rm91bmRPbkJvdHRvbSkge1xuICAgICAgICAgICAgICAgICAgICBkb3duKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRvd24gPj0gaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgc2l6ZUV4Y2VlZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIC4uLi4uXG4gICAgICAgICAgICAvLyB8ICAgLlxuICAgICAgICAgICAgLy8gLi4uLi5cbiAgICAgICAgICAgIHZhciBsZWZ0Qm9yZGVyTm90V2hpdGUgPSB0cnVlO1xuICAgICAgICAgICAgd2hpbGUgKChsZWZ0Qm9yZGVyTm90V2hpdGUgfHwgIWF0TGVhc3RPbmVCbGFja1BvaW50Rm91bmRPbkxlZnQpICYmIGxlZnQgPj0gMCkge1xuICAgICAgICAgICAgICAgIGxlZnRCb3JkZXJOb3RXaGl0ZSA9IHRoaXMuY29udGFpbnNCbGFja1BvaW50KHVwLCBkb3duLCBsZWZ0LCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgaWYgKGxlZnRCb3JkZXJOb3RXaGl0ZSkge1xuICAgICAgICAgICAgICAgICAgICBsZWZ0LS07XG4gICAgICAgICAgICAgICAgICAgIGFCbGFja1BvaW50Rm91bmRPbkJvcmRlciA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGF0TGVhc3RPbmVCbGFja1BvaW50Rm91bmRPbkxlZnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmICghYXRMZWFzdE9uZUJsYWNrUG9pbnRGb3VuZE9uTGVmdCkge1xuICAgICAgICAgICAgICAgICAgICBsZWZ0LS07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGxlZnQgPCAwKSB7XG4gICAgICAgICAgICAgICAgc2l6ZUV4Y2VlZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIC5fX18uXG4gICAgICAgICAgICAvLyAuICAgLlxuICAgICAgICAgICAgLy8gLi4uLi5cbiAgICAgICAgICAgIHZhciB0b3BCb3JkZXJOb3RXaGl0ZSA9IHRydWU7XG4gICAgICAgICAgICB3aGlsZSAoKHRvcEJvcmRlck5vdFdoaXRlIHx8ICFhdExlYXN0T25lQmxhY2tQb2ludEZvdW5kT25Ub3ApICYmIHVwID49IDApIHtcbiAgICAgICAgICAgICAgICB0b3BCb3JkZXJOb3RXaGl0ZSA9IHRoaXMuY29udGFpbnNCbGFja1BvaW50KGxlZnQsIHJpZ2h0LCB1cCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKHRvcEJvcmRlck5vdFdoaXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIHVwLS07XG4gICAgICAgICAgICAgICAgICAgIGFCbGFja1BvaW50Rm91bmRPbkJvcmRlciA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGF0TGVhc3RPbmVCbGFja1BvaW50Rm91bmRPblRvcCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFhdExlYXN0T25lQmxhY2tQb2ludEZvdW5kT25Ub3ApIHtcbiAgICAgICAgICAgICAgICAgICAgdXAtLTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodXAgPCAwKSB7XG4gICAgICAgICAgICAgICAgc2l6ZUV4Y2VlZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChhQmxhY2tQb2ludEZvdW5kT25Cb3JkZXIpIHtcbiAgICAgICAgICAgICAgICBhdExlYXN0T25lQmxhY2tQb2ludEZvdW5kT25Cb3JkZXIgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghc2l6ZUV4Y2VlZGVkICYmIGF0TGVhc3RPbmVCbGFja1BvaW50Rm91bmRPbkJvcmRlcikge1xuICAgICAgICAgICAgdmFyIG1heFNpemUgPSByaWdodCAtIGxlZnQ7XG4gICAgICAgICAgICB2YXIgeiA9IG51bGw7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMTsgeiA9PT0gbnVsbCAmJiBpIDwgbWF4U2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgeiA9IHRoaXMuZ2V0QmxhY2tQb2ludE9uU2VnbWVudChsZWZ0LCBkb3duIC0gaSwgbGVmdCArIGksIGRvd24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHogPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciB0ID0gbnVsbDtcbiAgICAgICAgICAgIC8vIGdvIGRvd24gcmlnaHRcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAxOyB0ID09PSBudWxsICYmIGkgPCBtYXhTaXplOyBpKyspIHtcbiAgICAgICAgICAgICAgICB0ID0gdGhpcy5nZXRCbGFja1BvaW50T25TZWdtZW50KGxlZnQsIHVwICsgaSwgbGVmdCArIGksIHVwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0ID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgeCA9IG51bGw7XG4gICAgICAgICAgICAvLyBnbyBkb3duIGxlZnRcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAxOyB4ID09PSBudWxsICYmIGkgPCBtYXhTaXplOyBpKyspIHtcbiAgICAgICAgICAgICAgICB4ID0gdGhpcy5nZXRCbGFja1BvaW50T25TZWdtZW50KHJpZ2h0LCB1cCArIGksIHJpZ2h0IC0gaSwgdXApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHggPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciB5ID0gbnVsbDtcbiAgICAgICAgICAgIC8vIGdvIHVwIGxlZnRcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAxOyB5ID09PSBudWxsICYmIGkgPCBtYXhTaXplOyBpKyspIHtcbiAgICAgICAgICAgICAgICB5ID0gdGhpcy5nZXRCbGFja1BvaW50T25TZWdtZW50KHJpZ2h0LCBkb3duIC0gaSwgcmlnaHQgLSBpLCBkb3duKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh5ID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jZW50ZXJFZGdlcyh5LCB6LCB4LCB0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgV2hpdGVSZWN0YW5nbGVEZXRlY3Rvci5wcm90b3R5cGUuZ2V0QmxhY2tQb2ludE9uU2VnbWVudCA9IGZ1bmN0aW9uIChhWCAvKmZsb2F0Ki8sIGFZIC8qZmxvYXQqLywgYlggLypmbG9hdCovLCBiWSAvKmZsb2F0Ki8pIHtcbiAgICAgICAgdmFyIGRpc3QgPSBNYXRoVXRpbHNfMS5kZWZhdWx0LnJvdW5kKE1hdGhVdGlsc18xLmRlZmF1bHQuZGlzdGFuY2UoYVgsIGFZLCBiWCwgYlkpKTtcbiAgICAgICAgdmFyIHhTdGVwID0gKGJYIC0gYVgpIC8gZGlzdDtcbiAgICAgICAgdmFyIHlTdGVwID0gKGJZIC0gYVkpIC8gZGlzdDtcbiAgICAgICAgdmFyIGltYWdlID0gdGhpcy5pbWFnZTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaXN0OyBpKyspIHtcbiAgICAgICAgICAgIHZhciB4ID0gTWF0aFV0aWxzXzEuZGVmYXVsdC5yb3VuZChhWCArIGkgKiB4U3RlcCk7XG4gICAgICAgICAgICB2YXIgeSA9IE1hdGhVdGlsc18xLmRlZmF1bHQucm91bmQoYVkgKyBpICogeVN0ZXApO1xuICAgICAgICAgICAgaWYgKGltYWdlLmdldCh4LCB5KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVzdWx0UG9pbnRfMS5kZWZhdWx0KHgsIHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogcmVjZW50ZXJzIHRoZSBwb2ludHMgb2YgYSBjb25zdGFudCBkaXN0YW5jZSB0b3dhcmRzIHRoZSBjZW50ZXJcbiAgICAgKlxuICAgICAqIEBwYXJhbSB5IGJvdHRvbSBtb3N0IHBvaW50XG4gICAgICogQHBhcmFtIHogbGVmdCBtb3N0IHBvaW50XG4gICAgICogQHBhcmFtIHggcmlnaHQgbW9zdCBwb2ludFxuICAgICAqIEBwYXJhbSB0IHRvcCBtb3N0IHBvaW50XG4gICAgICogQHJldHVybiB7QGxpbmsgUmVzdWx0UG9pbnR9W10gZGVzY3JpYmluZyB0aGUgY29ybmVycyBvZiB0aGUgcmVjdGFuZ3VsYXJcbiAgICAgKiAgICAgICAgIHJlZ2lvbi4gVGhlIGZpcnN0IGFuZCBsYXN0IHBvaW50cyBhcmUgb3Bwb3NlZCBvbiB0aGUgZGlhZ29uYWwsIGFzXG4gICAgICogICAgICAgICBhcmUgdGhlIHNlY29uZCBhbmQgdGhpcmQuIFRoZSBmaXJzdCBwb2ludCB3aWxsIGJlIHRoZSB0b3Btb3N0XG4gICAgICogICAgICAgICBwb2ludCBhbmQgdGhlIGxhc3QsIHRoZSBib3R0b21tb3N0LiBUaGUgc2Vjb25kIHBvaW50IHdpbGwgYmVcbiAgICAgKiAgICAgICAgIGxlZnRtb3N0IGFuZCB0aGUgdGhpcmQsIHRoZSByaWdodG1vc3RcbiAgICAgKi9cbiAgICBXaGl0ZVJlY3RhbmdsZURldGVjdG9yLnByb3RvdHlwZS5jZW50ZXJFZGdlcyA9IGZ1bmN0aW9uICh5LCB6LCB4LCB0KSB7XG4gICAgICAgIC8vXG4gICAgICAgIC8vICAgICAgIHQgICAgICAgICAgICB0XG4gICAgICAgIC8vICB6ICAgICAgICAgICAgICAgICAgICAgIHhcbiAgICAgICAgLy8gICAgICAgIHggICAgT1IgICAgelxuICAgICAgICAvLyAgIHkgICAgICAgICAgICAgICAgICAgIHlcbiAgICAgICAgLy9cbiAgICAgICAgdmFyIHlpID0geS5nZXRYKCk7XG4gICAgICAgIHZhciB5aiA9IHkuZ2V0WSgpO1xuICAgICAgICB2YXIgemkgPSB6LmdldFgoKTtcbiAgICAgICAgdmFyIHpqID0gei5nZXRZKCk7XG4gICAgICAgIHZhciB4aSA9IHguZ2V0WCgpO1xuICAgICAgICB2YXIgeGogPSB4LmdldFkoKTtcbiAgICAgICAgdmFyIHRpID0gdC5nZXRYKCk7XG4gICAgICAgIHZhciB0aiA9IHQuZ2V0WSgpO1xuICAgICAgICB2YXIgQ09SUiA9IFdoaXRlUmVjdGFuZ2xlRGV0ZWN0b3IuQ09SUjtcbiAgICAgICAgaWYgKHlpIDwgdGhpcy53aWR0aCAvIDIuMCkge1xuICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICBuZXcgUmVzdWx0UG9pbnRfMS5kZWZhdWx0KHRpIC0gQ09SUiwgdGogKyBDT1JSKSxcbiAgICAgICAgICAgICAgICBuZXcgUmVzdWx0UG9pbnRfMS5kZWZhdWx0KHppICsgQ09SUiwgemogKyBDT1JSKSxcbiAgICAgICAgICAgICAgICBuZXcgUmVzdWx0UG9pbnRfMS5kZWZhdWx0KHhpIC0gQ09SUiwgeGogLSBDT1JSKSxcbiAgICAgICAgICAgICAgICBuZXcgUmVzdWx0UG9pbnRfMS5kZWZhdWx0KHlpICsgQ09SUiwgeWogLSBDT1JSKVxuICAgICAgICAgICAgXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgbmV3IFJlc3VsdFBvaW50XzEuZGVmYXVsdCh0aSArIENPUlIsIHRqICsgQ09SUiksXG4gICAgICAgICAgICAgICAgbmV3IFJlc3VsdFBvaW50XzEuZGVmYXVsdCh6aSArIENPUlIsIHpqIC0gQ09SUiksXG4gICAgICAgICAgICAgICAgbmV3IFJlc3VsdFBvaW50XzEuZGVmYXVsdCh4aSAtIENPUlIsIHhqICsgQ09SUiksXG4gICAgICAgICAgICAgICAgbmV3IFJlc3VsdFBvaW50XzEuZGVmYXVsdCh5aSAtIENPUlIsIHlqIC0gQ09SUilcbiAgICAgICAgICAgIF07XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgd2hldGhlciBhIHNlZ21lbnQgY29udGFpbnMgYSBibGFjayBwb2ludFxuICAgICAqXG4gICAgICogQHBhcmFtIGEgICAgICAgICAgbWluIHZhbHVlIG9mIHRoZSBzY2FubmVkIGNvb3JkaW5hdGVcbiAgICAgKiBAcGFyYW0gYiAgICAgICAgICBtYXggdmFsdWUgb2YgdGhlIHNjYW5uZWQgY29vcmRpbmF0ZVxuICAgICAqIEBwYXJhbSBmaXhlZCAgICAgIHZhbHVlIG9mIGZpeGVkIGNvb3JkaW5hdGVcbiAgICAgKiBAcGFyYW0gaG9yaXpvbnRhbCBzZXQgdG8gdHJ1ZSBpZiBzY2FuIG11c3QgYmUgaG9yaXpvbnRhbCwgZmFsc2UgaWYgdmVydGljYWxcbiAgICAgKiBAcmV0dXJuIHRydWUgaWYgYSBibGFjayBwb2ludCBoYXMgYmVlbiBmb3VuZCwgZWxzZSBmYWxzZS5cbiAgICAgKi9cbiAgICBXaGl0ZVJlY3RhbmdsZURldGVjdG9yLnByb3RvdHlwZS5jb250YWluc0JsYWNrUG9pbnQgPSBmdW5jdGlvbiAoYSAvKmludCovLCBiIC8qaW50Ki8sIGZpeGVkIC8qaW50Ki8sIGhvcml6b250YWwpIHtcbiAgICAgICAgdmFyIGltYWdlID0gdGhpcy5pbWFnZTtcbiAgICAgICAgaWYgKGhvcml6b250YWwpIHtcbiAgICAgICAgICAgIGZvciAodmFyIHggPSBhOyB4IDw9IGI7IHgrKykge1xuICAgICAgICAgICAgICAgIGlmIChpbWFnZS5nZXQoeCwgZml4ZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZvciAodmFyIHkgPSBhOyB5IDw9IGI7IHkrKykge1xuICAgICAgICAgICAgICAgIGlmIChpbWFnZS5nZXQoZml4ZWQsIHkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICBXaGl0ZVJlY3RhbmdsZURldGVjdG9yLklOSVRfU0laRSA9IDEwO1xuICAgIFdoaXRlUmVjdGFuZ2xlRGV0ZWN0b3IuQ09SUiA9IDE7XG4gICAgcmV0dXJuIFdoaXRlUmVjdGFuZ2xlRGV0ZWN0b3I7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gV2hpdGVSZWN0YW5nbGVEZXRlY3Rvcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVdoaXRlUmVjdGFuZ2xlRGV0ZWN0b3IuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IDIwMDcgWlhpbmcgYXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBOb3RGb3VuZEV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4uL05vdEZvdW5kRXhjZXB0aW9uXCIpO1xuLyoqXG4gKiBJbXBsZW1lbnRhdGlvbnMgb2YgdGhpcyBjbGFzcyBjYW4sIGdpdmVuIGxvY2F0aW9ucyBvZiBmaW5kZXIgcGF0dGVybnMgZm9yIGEgUVIgY29kZSBpbiBhblxuICogaW1hZ2UsIHNhbXBsZSB0aGUgcmlnaHQgcG9pbnRzIGluIHRoZSBpbWFnZSB0byByZWNvbnN0cnVjdCB0aGUgUVIgY29kZSwgYWNjb3VudGluZyBmb3JcbiAqIHBlcnNwZWN0aXZlIGRpc3RvcnRpb24uIEl0IGlzIGFic3RyYWN0ZWQgc2luY2UgaXQgaXMgcmVsYXRpdmVseSBleHBlbnNpdmUgYW5kIHNob3VsZCBiZSBhbGxvd2VkXG4gKiB0byB0YWtlIGFkdmFudGFnZSBvZiBwbGF0Zm9ybS1zcGVjaWZpYyBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb25zLCBsaWtlIFN1bidzIEphdmEgQWR2YW5jZWRcbiAqIEltYWdpbmcgbGlicmFyeSwgYnV0IHdoaWNoIG1heSBub3QgYmUgYXZhaWxhYmxlIGluIG90aGVyIGVudmlyb25tZW50cyBzdWNoIGFzIEoyTUUsIGFuZCB2aWNlXG4gKiB2ZXJzYS5cbiAqXG4gKiBUaGUgaW1wbGVtZW50YXRpb24gdXNlZCBjYW4gYmUgY29udHJvbGxlZCBieSBjYWxsaW5nIHtAbGluayAjc2V0R3JpZFNhbXBsZXIoR3JpZFNhbXBsZXIpfVxuICogd2l0aCBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHdoaWNoIGltcGxlbWVudHMgdGhpcyBpbnRlcmZhY2UuXG4gKlxuICogQGF1dGhvciBTZWFuIE93ZW5cbiAqL1xudmFyIEdyaWRTYW1wbGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEdyaWRTYW1wbGVyKCkge1xuICAgIH1cbiAgICAvKipcbiAgICAgKiA8cD5DaGVja3MgYSBzZXQgb2YgcG9pbnRzIHRoYXQgaGF2ZSBiZWVuIHRyYW5zZm9ybWVkIHRvIHNhbXBsZSBwb2ludHMgb24gYW4gaW1hZ2UgYWdhaW5zdFxuICAgICAqIHRoZSBpbWFnZSdzIGRpbWVuc2lvbnMgdG8gc2VlIGlmIHRoZSBwb2ludCBhcmUgZXZlbiB3aXRoaW4gdGhlIGltYWdlLjwvcD5cbiAgICAgKlxuICAgICAqIDxwPlRoaXMgbWV0aG9kIHdpbGwgYWN0dWFsbHkgXCJudWRnZVwiIHRoZSBlbmRwb2ludHMgYmFjayBvbnRvIHRoZSBpbWFnZSBpZiB0aGV5IGFyZSBmb3VuZCB0byBiZVxuICAgICAqIGJhcmVseSAobGVzcyB0aGFuIDEgcGl4ZWwpIG9mZiB0aGUgaW1hZ2UuIFRoaXMgYWNjb3VudHMgZm9yIGltcGVyZmVjdCBkZXRlY3Rpb24gb2YgZmluZGVyXG4gICAgICogcGF0dGVybnMgaW4gYW4gaW1hZ2Ugd2hlcmUgdGhlIFFSIENvZGUgcnVucyBhbGwgdGhlIHdheSB0byB0aGUgaW1hZ2UgYm9yZGVyLjwvcD5cbiAgICAgKlxuICAgICAqIDxwPkZvciBlZmZpY2llbmN5LCB0aGUgbWV0aG9kIHdpbGwgY2hlY2sgcG9pbnRzIGZyb20gZWl0aGVyIGVuZCBvZiB0aGUgbGluZSB1bnRpbCBvbmUgaXMgZm91bmRcbiAgICAgKiB0byBiZSB3aXRoaW4gdGhlIGltYWdlLiBCZWNhdXNlIHRoZSBzZXQgb2YgcG9pbnRzIGFyZSBhc3N1bWVkIHRvIGJlIGxpbmVhciwgdGhpcyBpcyB2YWxpZC48L3A+XG4gICAgICpcbiAgICAgKiBAcGFyYW0gaW1hZ2UgaW1hZ2UgaW50byB3aGljaCB0aGUgcG9pbnRzIHNob3VsZCBtYXBcbiAgICAgKiBAcGFyYW0gcG9pbnRzIGFjdHVhbCBwb2ludHMgaW4geDEseTEsLi4uLHhuLHluIGZvcm1cbiAgICAgKiBAdGhyb3dzIE5vdEZvdW5kRXhjZXB0aW9uIGlmIGFuIGVuZHBvaW50IGlzIGxpZXMgb3V0c2lkZSB0aGUgaW1hZ2UgYm91bmRhcmllc1xuICAgICAqL1xuICAgIEdyaWRTYW1wbGVyLmNoZWNrQW5kTnVkZ2VQb2ludHMgPSBmdW5jdGlvbiAoaW1hZ2UsIHBvaW50cykge1xuICAgICAgICB2YXIgd2lkdGggPSBpbWFnZS5nZXRXaWR0aCgpO1xuICAgICAgICB2YXIgaGVpZ2h0ID0gaW1hZ2UuZ2V0SGVpZ2h0KCk7XG4gICAgICAgIC8vIENoZWNrIGFuZCBudWRnZSBwb2ludHMgZnJvbSBzdGFydCB1bnRpbCB3ZSBzZWUgc29tZSB0aGF0IGFyZSBPSzpcbiAgICAgICAgdmFyIG51ZGdlZCA9IHRydWU7XG4gICAgICAgIGZvciAodmFyIG9mZnNldCA9IDA7IG9mZnNldCA8IHBvaW50cy5sZW5ndGggJiYgbnVkZ2VkOyBvZmZzZXQgKz0gMikge1xuICAgICAgICAgICAgdmFyIHggPSBNYXRoLmZsb29yKHBvaW50c1tvZmZzZXRdKTtcbiAgICAgICAgICAgIHZhciB5ID0gTWF0aC5mbG9vcihwb2ludHNbb2Zmc2V0ICsgMV0pO1xuICAgICAgICAgICAgaWYgKHggPCAtMSB8fCB4ID4gd2lkdGggfHwgeSA8IC0xIHx8IHkgPiBoZWlnaHQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBudWRnZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmICh4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgIHBvaW50c1tvZmZzZXRdID0gMC4wO1xuICAgICAgICAgICAgICAgIG51ZGdlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh4ID09PSB3aWR0aCkge1xuICAgICAgICAgICAgICAgIHBvaW50c1tvZmZzZXRdID0gd2lkdGggLSAxO1xuICAgICAgICAgICAgICAgIG51ZGdlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoeSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBwb2ludHNbb2Zmc2V0ICsgMV0gPSAwLjA7XG4gICAgICAgICAgICAgICAgbnVkZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHkgPT09IGhlaWdodCkge1xuICAgICAgICAgICAgICAgIHBvaW50c1tvZmZzZXQgKyAxXSA9IGhlaWdodCAtIDE7XG4gICAgICAgICAgICAgICAgbnVkZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBDaGVjayBhbmQgbnVkZ2UgcG9pbnRzIGZyb20gZW5kOlxuICAgICAgICBudWRnZWQgPSB0cnVlO1xuICAgICAgICBmb3IgKHZhciBvZmZzZXQgPSBwb2ludHMubGVuZ3RoIC0gMjsgb2Zmc2V0ID49IDAgJiYgbnVkZ2VkOyBvZmZzZXQgLT0gMikge1xuICAgICAgICAgICAgdmFyIHggPSBNYXRoLmZsb29yKHBvaW50c1tvZmZzZXRdKTtcbiAgICAgICAgICAgIHZhciB5ID0gTWF0aC5mbG9vcihwb2ludHNbb2Zmc2V0ICsgMV0pO1xuICAgICAgICAgICAgaWYgKHggPCAtMSB8fCB4ID4gd2lkdGggfHwgeSA8IC0xIHx8IHkgPiBoZWlnaHQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBudWRnZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmICh4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgIHBvaW50c1tvZmZzZXRdID0gMC4wO1xuICAgICAgICAgICAgICAgIG51ZGdlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh4ID09PSB3aWR0aCkge1xuICAgICAgICAgICAgICAgIHBvaW50c1tvZmZzZXRdID0gd2lkdGggLSAxO1xuICAgICAgICAgICAgICAgIG51ZGdlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoeSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBwb2ludHNbb2Zmc2V0ICsgMV0gPSAwLjA7XG4gICAgICAgICAgICAgICAgbnVkZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHkgPT09IGhlaWdodCkge1xuICAgICAgICAgICAgICAgIHBvaW50c1tvZmZzZXQgKyAxXSA9IGhlaWdodCAtIDE7XG4gICAgICAgICAgICAgICAgbnVkZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIEdyaWRTYW1wbGVyO1xufSgpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IEdyaWRTYW1wbGVyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9R3JpZFNhbXBsZXIuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IDIwMDcgWlhpbmcgYXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qbmFtZXNwYWNlIGNvbS5nb29nbGUuenhpbmcuY29tbW9uIHsqL1xuLyoqXG4gKiA8cD5UaGlzIGNsYXNzIGltcGxlbWVudHMgYSBwZXJzcGVjdGl2ZSB0cmFuc2Zvcm0gaW4gdHdvIGRpbWVuc2lvbnMuIEdpdmVuIGZvdXIgc291cmNlIGFuZCBmb3VyXG4gKiBkZXN0aW5hdGlvbiBwb2ludHMsIGl0IHdpbGwgY29tcHV0ZSB0aGUgdHJhbnNmb3JtYXRpb24gaW1wbGllZCBiZXR3ZWVuIHRoZW0uIFRoZSBjb2RlIGlzIGJhc2VkXG4gKiBkaXJlY3RseSB1cG9uIHNlY3Rpb24gMy40LjIgb2YgR2VvcmdlIFdvbGJlcmcncyBcIkRpZ2l0YWwgSW1hZ2UgV2FycGluZ1wiOyBzZWUgcGFnZXMgNTQtNTYuPC9wPlxuICpcbiAqIEBhdXRob3IgU2VhbiBPd2VuXG4gKi9cbnZhciBQZXJzcGVjdGl2ZVRyYW5zZm9ybSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBQZXJzcGVjdGl2ZVRyYW5zZm9ybShhMTEgLypmbG9hdCovLCBhMjEgLypmbG9hdCovLCBhMzEgLypmbG9hdCovLCBhMTIgLypmbG9hdCovLCBhMjIgLypmbG9hdCovLCBhMzIgLypmbG9hdCovLCBhMTMgLypmbG9hdCovLCBhMjMgLypmbG9hdCovLCBhMzMgLypmbG9hdCovKSB7XG4gICAgICAgIHRoaXMuYTExID0gYTExO1xuICAgICAgICB0aGlzLmEyMSA9IGEyMTtcbiAgICAgICAgdGhpcy5hMzEgPSBhMzE7XG4gICAgICAgIHRoaXMuYTEyID0gYTEyO1xuICAgICAgICB0aGlzLmEyMiA9IGEyMjtcbiAgICAgICAgdGhpcy5hMzIgPSBhMzI7XG4gICAgICAgIHRoaXMuYTEzID0gYTEzO1xuICAgICAgICB0aGlzLmEyMyA9IGEyMztcbiAgICAgICAgdGhpcy5hMzMgPSBhMzM7XG4gICAgfVxuICAgIFBlcnNwZWN0aXZlVHJhbnNmb3JtLnF1YWRyaWxhdGVyYWxUb1F1YWRyaWxhdGVyYWwgPSBmdW5jdGlvbiAoeDAgLypmbG9hdCovLCB5MCAvKmZsb2F0Ki8sIHgxIC8qZmxvYXQqLywgeTEgLypmbG9hdCovLCB4MiAvKmZsb2F0Ki8sIHkyIC8qZmxvYXQqLywgeDMgLypmbG9hdCovLCB5MyAvKmZsb2F0Ki8sIHgwcCAvKmZsb2F0Ki8sIHkwcCAvKmZsb2F0Ki8sIHgxcCAvKmZsb2F0Ki8sIHkxcCAvKmZsb2F0Ki8sIHgycCAvKmZsb2F0Ki8sIHkycCAvKmZsb2F0Ki8sIHgzcCAvKmZsb2F0Ki8sIHkzcCAvKmZsb2F0Ki8pIHtcbiAgICAgICAgdmFyIHFUb1MgPSBQZXJzcGVjdGl2ZVRyYW5zZm9ybS5xdWFkcmlsYXRlcmFsVG9TcXVhcmUoeDAsIHkwLCB4MSwgeTEsIHgyLCB5MiwgeDMsIHkzKTtcbiAgICAgICAgdmFyIHNUb1EgPSBQZXJzcGVjdGl2ZVRyYW5zZm9ybS5zcXVhcmVUb1F1YWRyaWxhdGVyYWwoeDBwLCB5MHAsIHgxcCwgeTFwLCB4MnAsIHkycCwgeDNwLCB5M3ApO1xuICAgICAgICByZXR1cm4gc1RvUS50aW1lcyhxVG9TKTtcbiAgICB9O1xuICAgIFBlcnNwZWN0aXZlVHJhbnNmb3JtLnByb3RvdHlwZS50cmFuc2Zvcm1Qb2ludHMgPSBmdW5jdGlvbiAocG9pbnRzKSB7XG4gICAgICAgIHZhciBtYXggPSBwb2ludHMubGVuZ3RoO1xuICAgICAgICB2YXIgYTExID0gdGhpcy5hMTE7XG4gICAgICAgIHZhciBhMTIgPSB0aGlzLmExMjtcbiAgICAgICAgdmFyIGExMyA9IHRoaXMuYTEzO1xuICAgICAgICB2YXIgYTIxID0gdGhpcy5hMjE7XG4gICAgICAgIHZhciBhMjIgPSB0aGlzLmEyMjtcbiAgICAgICAgdmFyIGEyMyA9IHRoaXMuYTIzO1xuICAgICAgICB2YXIgYTMxID0gdGhpcy5hMzE7XG4gICAgICAgIHZhciBhMzIgPSB0aGlzLmEzMjtcbiAgICAgICAgdmFyIGEzMyA9IHRoaXMuYTMzO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1heDsgaSArPSAyKSB7XG4gICAgICAgICAgICB2YXIgeCA9IHBvaW50c1tpXTtcbiAgICAgICAgICAgIHZhciB5ID0gcG9pbnRzW2kgKyAxXTtcbiAgICAgICAgICAgIHZhciBkZW5vbWluYXRvciA9IGExMyAqIHggKyBhMjMgKiB5ICsgYTMzO1xuICAgICAgICAgICAgcG9pbnRzW2ldID0gKGExMSAqIHggKyBhMjEgKiB5ICsgYTMxKSAvIGRlbm9taW5hdG9yO1xuICAgICAgICAgICAgcG9pbnRzW2kgKyAxXSA9IChhMTIgKiB4ICsgYTIyICogeSArIGEzMikgLyBkZW5vbWluYXRvcjtcbiAgICAgICAgfVxuICAgIH07XG4gICAgUGVyc3BlY3RpdmVUcmFuc2Zvcm0ucHJvdG90eXBlLnRyYW5zZm9ybVBvaW50c1dpdGhWYWx1ZXMgPSBmdW5jdGlvbiAoeFZhbHVlcywgeVZhbHVlcykge1xuICAgICAgICB2YXIgYTExID0gdGhpcy5hMTE7XG4gICAgICAgIHZhciBhMTIgPSB0aGlzLmExMjtcbiAgICAgICAgdmFyIGExMyA9IHRoaXMuYTEzO1xuICAgICAgICB2YXIgYTIxID0gdGhpcy5hMjE7XG4gICAgICAgIHZhciBhMjIgPSB0aGlzLmEyMjtcbiAgICAgICAgdmFyIGEyMyA9IHRoaXMuYTIzO1xuICAgICAgICB2YXIgYTMxID0gdGhpcy5hMzE7XG4gICAgICAgIHZhciBhMzIgPSB0aGlzLmEzMjtcbiAgICAgICAgdmFyIGEzMyA9IHRoaXMuYTMzO1xuICAgICAgICB2YXIgbiA9IHhWYWx1ZXMubGVuZ3RoO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgdmFyIHggPSB4VmFsdWVzW2ldO1xuICAgICAgICAgICAgdmFyIHkgPSB5VmFsdWVzW2ldO1xuICAgICAgICAgICAgdmFyIGRlbm9taW5hdG9yID0gYTEzICogeCArIGEyMyAqIHkgKyBhMzM7XG4gICAgICAgICAgICB4VmFsdWVzW2ldID0gKGExMSAqIHggKyBhMjEgKiB5ICsgYTMxKSAvIGRlbm9taW5hdG9yO1xuICAgICAgICAgICAgeVZhbHVlc1tpXSA9IChhMTIgKiB4ICsgYTIyICogeSArIGEzMikgLyBkZW5vbWluYXRvcjtcbiAgICAgICAgfVxuICAgIH07XG4gICAgUGVyc3BlY3RpdmVUcmFuc2Zvcm0uc3F1YXJlVG9RdWFkcmlsYXRlcmFsID0gZnVuY3Rpb24gKHgwIC8qZmxvYXQqLywgeTAgLypmbG9hdCovLCB4MSAvKmZsb2F0Ki8sIHkxIC8qZmxvYXQqLywgeDIgLypmbG9hdCovLCB5MiAvKmZsb2F0Ki8sIHgzIC8qZmxvYXQqLywgeTMgLypmbG9hdCovKSB7XG4gICAgICAgIHZhciBkeDMgPSB4MCAtIHgxICsgeDIgLSB4MztcbiAgICAgICAgdmFyIGR5MyA9IHkwIC0geTEgKyB5MiAtIHkzO1xuICAgICAgICBpZiAoZHgzID09PSAwLjAgJiYgZHkzID09PSAwLjApIHtcbiAgICAgICAgICAgIC8vIEFmZmluZVxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQZXJzcGVjdGl2ZVRyYW5zZm9ybSh4MSAtIHgwLCB4MiAtIHgxLCB4MCwgeTEgLSB5MCwgeTIgLSB5MSwgeTAsIDAuMCwgMC4wLCAxLjApO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIGR4MSA9IHgxIC0geDI7XG4gICAgICAgICAgICB2YXIgZHgyID0geDMgLSB4MjtcbiAgICAgICAgICAgIHZhciBkeTEgPSB5MSAtIHkyO1xuICAgICAgICAgICAgdmFyIGR5MiA9IHkzIC0geTI7XG4gICAgICAgICAgICB2YXIgZGVub21pbmF0b3IgPSBkeDEgKiBkeTIgLSBkeDIgKiBkeTE7XG4gICAgICAgICAgICB2YXIgYTEzID0gKGR4MyAqIGR5MiAtIGR4MiAqIGR5MykgLyBkZW5vbWluYXRvcjtcbiAgICAgICAgICAgIHZhciBhMjMgPSAoZHgxICogZHkzIC0gZHgzICogZHkxKSAvIGRlbm9taW5hdG9yO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBQZXJzcGVjdGl2ZVRyYW5zZm9ybSh4MSAtIHgwICsgYTEzICogeDEsIHgzIC0geDAgKyBhMjMgKiB4MywgeDAsIHkxIC0geTAgKyBhMTMgKiB5MSwgeTMgLSB5MCArIGEyMyAqIHkzLCB5MCwgYTEzLCBhMjMsIDEuMCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFBlcnNwZWN0aXZlVHJhbnNmb3JtLnF1YWRyaWxhdGVyYWxUb1NxdWFyZSA9IGZ1bmN0aW9uICh4MCAvKmZsb2F0Ki8sIHkwIC8qZmxvYXQqLywgeDEgLypmbG9hdCovLCB5MSAvKmZsb2F0Ki8sIHgyIC8qZmxvYXQqLywgeTIgLypmbG9hdCovLCB4MyAvKmZsb2F0Ki8sIHkzIC8qZmxvYXQqLykge1xuICAgICAgICAvLyBIZXJlLCB0aGUgYWRqb2ludCBzZXJ2ZXMgYXMgdGhlIGludmVyc2U6XG4gICAgICAgIHJldHVybiBQZXJzcGVjdGl2ZVRyYW5zZm9ybS5zcXVhcmVUb1F1YWRyaWxhdGVyYWwoeDAsIHkwLCB4MSwgeTEsIHgyLCB5MiwgeDMsIHkzKS5idWlsZEFkam9pbnQoKTtcbiAgICB9O1xuICAgIFBlcnNwZWN0aXZlVHJhbnNmb3JtLnByb3RvdHlwZS5idWlsZEFkam9pbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIC8vIEFkam9pbnQgaXMgdGhlIHRyYW5zcG9zZSBvZiB0aGUgY29mYWN0b3IgbWF0cml4OlxuICAgICAgICByZXR1cm4gbmV3IFBlcnNwZWN0aXZlVHJhbnNmb3JtKHRoaXMuYTIyICogdGhpcy5hMzMgLSB0aGlzLmEyMyAqIHRoaXMuYTMyLCB0aGlzLmEyMyAqIHRoaXMuYTMxIC0gdGhpcy5hMjEgKiB0aGlzLmEzMywgdGhpcy5hMjEgKiB0aGlzLmEzMiAtIHRoaXMuYTIyICogdGhpcy5hMzEsIHRoaXMuYTEzICogdGhpcy5hMzIgLSB0aGlzLmExMiAqIHRoaXMuYTMzLCB0aGlzLmExMSAqIHRoaXMuYTMzIC0gdGhpcy5hMTMgKiB0aGlzLmEzMSwgdGhpcy5hMTIgKiB0aGlzLmEzMSAtIHRoaXMuYTExICogdGhpcy5hMzIsIHRoaXMuYTEyICogdGhpcy5hMjMgLSB0aGlzLmExMyAqIHRoaXMuYTIyLCB0aGlzLmExMyAqIHRoaXMuYTIxIC0gdGhpcy5hMTEgKiB0aGlzLmEyMywgdGhpcy5hMTEgKiB0aGlzLmEyMiAtIHRoaXMuYTEyICogdGhpcy5hMjEpO1xuICAgIH07XG4gICAgUGVyc3BlY3RpdmVUcmFuc2Zvcm0ucHJvdG90eXBlLnRpbWVzID0gZnVuY3Rpb24gKG90aGVyKSB7XG4gICAgICAgIHJldHVybiBuZXcgUGVyc3BlY3RpdmVUcmFuc2Zvcm0odGhpcy5hMTEgKiBvdGhlci5hMTEgKyB0aGlzLmEyMSAqIG90aGVyLmExMiArIHRoaXMuYTMxICogb3RoZXIuYTEzLCB0aGlzLmExMSAqIG90aGVyLmEyMSArIHRoaXMuYTIxICogb3RoZXIuYTIyICsgdGhpcy5hMzEgKiBvdGhlci5hMjMsIHRoaXMuYTExICogb3RoZXIuYTMxICsgdGhpcy5hMjEgKiBvdGhlci5hMzIgKyB0aGlzLmEzMSAqIG90aGVyLmEzMywgdGhpcy5hMTIgKiBvdGhlci5hMTEgKyB0aGlzLmEyMiAqIG90aGVyLmExMiArIHRoaXMuYTMyICogb3RoZXIuYTEzLCB0aGlzLmExMiAqIG90aGVyLmEyMSArIHRoaXMuYTIyICogb3RoZXIuYTIyICsgdGhpcy5hMzIgKiBvdGhlci5hMjMsIHRoaXMuYTEyICogb3RoZXIuYTMxICsgdGhpcy5hMjIgKiBvdGhlci5hMzIgKyB0aGlzLmEzMiAqIG90aGVyLmEzMywgdGhpcy5hMTMgKiBvdGhlci5hMTEgKyB0aGlzLmEyMyAqIG90aGVyLmExMiArIHRoaXMuYTMzICogb3RoZXIuYTEzLCB0aGlzLmExMyAqIG90aGVyLmEyMSArIHRoaXMuYTIzICogb3RoZXIuYTIyICsgdGhpcy5hMzMgKiBvdGhlci5hMjMsIHRoaXMuYTEzICogb3RoZXIuYTMxICsgdGhpcy5hMjMgKiBvdGhlci5hMzIgKyB0aGlzLmEzMyAqIG90aGVyLmEzMyk7XG4gICAgfTtcbiAgICByZXR1cm4gUGVyc3BlY3RpdmVUcmFuc2Zvcm07XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gUGVyc3BlY3RpdmVUcmFuc2Zvcm07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1QZXJzcGVjdGl2ZVRyYW5zZm9ybS5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8qXG4gKiBDb3B5cmlnaHQgMjAwNyBaWGluZyBhdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vKm5hbWVzcGFjZSBjb20uZ29vZ2xlLnp4aW5nLmNvbW1vbiB7Ki9cbnZhciBHcmlkU2FtcGxlcl8xID0gcmVxdWlyZShcIi4vR3JpZFNhbXBsZXJcIik7XG52YXIgQml0TWF0cml4XzEgPSByZXF1aXJlKFwiLi9CaXRNYXRyaXhcIik7XG52YXIgUGVyc3BlY3RpdmVUcmFuc2Zvcm1fMSA9IHJlcXVpcmUoXCIuL1BlcnNwZWN0aXZlVHJhbnNmb3JtXCIpO1xudmFyIE5vdEZvdW5kRXhjZXB0aW9uXzEgPSByZXF1aXJlKFwiLi4vTm90Rm91bmRFeGNlcHRpb25cIik7XG4vKipcbiAqIEBhdXRob3IgU2VhbiBPd2VuXG4gKi9cbnZhciBEZWZhdWx0R3JpZFNhbXBsZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKERlZmF1bHRHcmlkU2FtcGxlciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBEZWZhdWx0R3JpZFNhbXBsZXIoKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgLypAT3ZlcnJpZGUqL1xuICAgIERlZmF1bHRHcmlkU2FtcGxlci5wcm90b3R5cGUuc2FtcGxlR3JpZCA9IGZ1bmN0aW9uIChpbWFnZSwgZGltZW5zaW9uWCAvKmludCovLCBkaW1lbnNpb25ZIC8qaW50Ki8sIHAxVG9YIC8qZmxvYXQqLywgcDFUb1kgLypmbG9hdCovLCBwMlRvWCAvKmZsb2F0Ki8sIHAyVG9ZIC8qZmxvYXQqLywgcDNUb1ggLypmbG9hdCovLCBwM1RvWSAvKmZsb2F0Ki8sIHA0VG9YIC8qZmxvYXQqLywgcDRUb1kgLypmbG9hdCovLCBwMUZyb21YIC8qZmxvYXQqLywgcDFGcm9tWSAvKmZsb2F0Ki8sIHAyRnJvbVggLypmbG9hdCovLCBwMkZyb21ZIC8qZmxvYXQqLywgcDNGcm9tWCAvKmZsb2F0Ki8sIHAzRnJvbVkgLypmbG9hdCovLCBwNEZyb21YIC8qZmxvYXQqLywgcDRGcm9tWSAvKmZsb2F0Ki8pIHtcbiAgICAgICAgdmFyIHRyYW5zZm9ybSA9IFBlcnNwZWN0aXZlVHJhbnNmb3JtXzEuZGVmYXVsdC5xdWFkcmlsYXRlcmFsVG9RdWFkcmlsYXRlcmFsKHAxVG9YLCBwMVRvWSwgcDJUb1gsIHAyVG9ZLCBwM1RvWCwgcDNUb1ksIHA0VG9YLCBwNFRvWSwgcDFGcm9tWCwgcDFGcm9tWSwgcDJGcm9tWCwgcDJGcm9tWSwgcDNGcm9tWCwgcDNGcm9tWSwgcDRGcm9tWCwgcDRGcm9tWSk7XG4gICAgICAgIHJldHVybiB0aGlzLnNhbXBsZUdyaWRXaXRoVHJhbnNmb3JtKGltYWdlLCBkaW1lbnNpb25YLCBkaW1lbnNpb25ZLCB0cmFuc2Zvcm0pO1xuICAgIH07XG4gICAgLypAT3ZlcnJpZGUqL1xuICAgIERlZmF1bHRHcmlkU2FtcGxlci5wcm90b3R5cGUuc2FtcGxlR3JpZFdpdGhUcmFuc2Zvcm0gPSBmdW5jdGlvbiAoaW1hZ2UsIGRpbWVuc2lvblggLyppbnQqLywgZGltZW5zaW9uWSAvKmludCovLCB0cmFuc2Zvcm0pIHtcbiAgICAgICAgaWYgKGRpbWVuc2lvblggPD0gMCB8fCBkaW1lbnNpb25ZIDw9IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYml0cyA9IG5ldyBCaXRNYXRyaXhfMS5kZWZhdWx0KGRpbWVuc2lvblgsIGRpbWVuc2lvblkpO1xuICAgICAgICB2YXIgcG9pbnRzID0gbmV3IEZsb2F0MzJBcnJheSgyICogZGltZW5zaW9uWCk7XG4gICAgICAgIGZvciAodmFyIHkgPSAwOyB5IDwgZGltZW5zaW9uWTsgeSsrKSB7XG4gICAgICAgICAgICB2YXIgbWF4ID0gcG9pbnRzLmxlbmd0aDtcbiAgICAgICAgICAgIHZhciBpVmFsdWUgPSB5ICsgMC41O1xuICAgICAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCBtYXg7IHggKz0gMikge1xuICAgICAgICAgICAgICAgIHBvaW50c1t4XSA9ICh4IC8gMikgKyAwLjU7XG4gICAgICAgICAgICAgICAgcG9pbnRzW3ggKyAxXSA9IGlWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyYW5zZm9ybS50cmFuc2Zvcm1Qb2ludHMocG9pbnRzKTtcbiAgICAgICAgICAgIC8vIFF1aWNrIGNoZWNrIHRvIHNlZSBpZiBwb2ludHMgdHJhbnNmb3JtZWQgdG8gc29tZXRoaW5nIGluc2lkZSB0aGUgaW1hZ2VcbiAgICAgICAgICAgIC8vIHN1ZmZpY2llbnQgdG8gY2hlY2sgdGhlIGVuZHBvaW50c1xuICAgICAgICAgICAgR3JpZFNhbXBsZXJfMS5kZWZhdWx0LmNoZWNrQW5kTnVkZ2VQb2ludHMoaW1hZ2UsIHBvaW50cyk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgbWF4OyB4ICs9IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGltYWdlLmdldChNYXRoLmZsb29yKHBvaW50c1t4XSksIE1hdGguZmxvb3IocG9pbnRzW3ggKyAxXSkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBCbGFjaygtaXNoKSBwaXhlbFxuICAgICAgICAgICAgICAgICAgICAgICAgYml0cy5zZXQoeCAvIDIsIHkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGFpb29iZSAvKjogQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uKi8pIHtcbiAgICAgICAgICAgICAgICAvLyBUaGlzIGZlZWxzIHdyb25nLCBidXQsIHNvbWV0aW1lcyBpZiB0aGUgZmluZGVyIHBhdHRlcm5zIGFyZSBtaXNpZGVudGlmaWVkLCB0aGUgcmVzdWx0aW5nXG4gICAgICAgICAgICAgICAgLy8gdHJhbnNmb3JtIGdldHMgXCJ0d2lzdGVkXCIgc3VjaCB0aGF0IGl0IG1hcHMgYSBzdHJhaWdodCBsaW5lIG9mIHBvaW50cyB0byBhIHNldCBvZiBwb2ludHNcbiAgICAgICAgICAgICAgICAvLyB3aG9zZSBlbmRwb2ludHMgYXJlIGluIGJvdW5kcywgYnV0IG90aGVycyBhcmUgbm90LiBUaGVyZSBpcyBwcm9iYWJseSBzb21lIG1hdGhlbWF0aWNhbFxuICAgICAgICAgICAgICAgIC8vIHdheSB0byBkZXRlY3QgdGhpcyBhYm91dCB0aGUgdHJhbnNmb3JtYXRpb24gdGhhdCBJIGRvbid0IGtub3cgeWV0LlxuICAgICAgICAgICAgICAgIC8vIFRoaXMgcmVzdWx0cyBpbiBhbiB1Z2x5IHJ1bnRpbWUgZXhjZXB0aW9uIGRlc3BpdGUgb3VyIGNsZXZlciBjaGVja3MgYWJvdmUgLS0gY2FuJ3QgaGF2ZVxuICAgICAgICAgICAgICAgIC8vIHRoYXQuIFdlIGNvdWxkIGNoZWNrIGVhY2ggcG9pbnQncyBjb29yZGluYXRlcyBidXQgdGhhdCBmZWVscyBkdXBsaWNhdGl2ZS4gV2Ugc2V0dGxlIGZvclxuICAgICAgICAgICAgICAgIC8vIGNhdGNoaW5nIGFuZCB3cmFwcGluZyBBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24uXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBiaXRzO1xuICAgIH07XG4gICAgcmV0dXJuIERlZmF1bHRHcmlkU2FtcGxlcjtcbn0oR3JpZFNhbXBsZXJfMS5kZWZhdWx0KSk7XG5leHBvcnRzLmRlZmF1bHQgPSBEZWZhdWx0R3JpZFNhbXBsZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1EZWZhdWx0R3JpZFNhbXBsZXIuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgRGVmYXVsdEdyaWRTYW1wbGVyXzEgPSByZXF1aXJlKFwiLi9EZWZhdWx0R3JpZFNhbXBsZXJcIik7XG52YXIgR3JpZFNhbXBsZXJJbnN0YW5jZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBHcmlkU2FtcGxlckluc3RhbmNlKCkge1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBHcmlkU2FtcGxlciB1c2VkIGJ5IHRoZSBsaWJyYXJ5LiBPbmUgZ2xvYmFsXG4gICAgICogaW5zdGFuY2UgaXMgc3RvcmVkLCB3aGljaCBtYXkgc291bmQgcHJvYmxlbWF0aWMuIEJ1dCwgdGhlIGltcGxlbWVudGF0aW9uIHByb3ZpZGVkXG4gICAgICogb3VnaHQgdG8gYmUgYXBwcm9wcmlhdGUgZm9yIHRoZSBlbnRpcmUgcGxhdGZvcm0sIGFuZCBhbGwgdXNlcyBvZiB0aGlzIGxpYnJhcnlcbiAgICAgKiBpbiB0aGUgd2hvbGUgbGlmZXRpbWUgb2YgdGhlIEpWTS4gRm9yIGluc3RhbmNlLCBhbiBBbmRyb2lkIGFjdGl2aXR5IGNhbiBzd2FwIGluXG4gICAgICogYW4gaW1wbGVtZW50YXRpb24gdGhhdCB0YWtlcyBhZHZhbnRhZ2Ugb2YgbmF0aXZlIHBsYXRmb3JtIGxpYnJhcmllcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBuZXdHcmlkU2FtcGxlciBUaGUgcGxhdGZvcm0tc3BlY2lmaWMgb2JqZWN0IHRvIGluc3RhbGwuXG4gICAgICovXG4gICAgR3JpZFNhbXBsZXJJbnN0YW5jZS5zZXRHcmlkU2FtcGxlciA9IGZ1bmN0aW9uIChuZXdHcmlkU2FtcGxlcikge1xuICAgICAgICBHcmlkU2FtcGxlckluc3RhbmNlLmdyaWRTYW1wbGVyID0gbmV3R3JpZFNhbXBsZXI7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIEdyaWRTYW1wbGVyXG4gICAgICovXG4gICAgR3JpZFNhbXBsZXJJbnN0YW5jZS5nZXRJbnN0YW5jZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIEdyaWRTYW1wbGVySW5zdGFuY2UuZ3JpZFNhbXBsZXI7XG4gICAgfTtcbiAgICBHcmlkU2FtcGxlckluc3RhbmNlLmdyaWRTYW1wbGVyID0gbmV3IERlZmF1bHRHcmlkU2FtcGxlcl8xLmRlZmF1bHQoKTtcbiAgICByZXR1cm4gR3JpZFNhbXBsZXJJbnN0YW5jZTtcbn0oKSk7XG5leHBvcnRzLmRlZmF1bHQgPSBHcmlkU2FtcGxlckluc3RhbmNlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9R3JpZFNhbXBsZXJJbnN0YW5jZS5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8qXG4gKiBDb3B5cmlnaHQgMjAxMCBaWGluZyBhdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Qb2ludCA9IHZvaWQgMDtcbnZhciBSZXN1bHRQb2ludF8xID0gcmVxdWlyZShcIi4uLy4uL1Jlc3VsdFBvaW50XCIpO1xudmFyIEF6dGVjRGV0ZWN0b3JSZXN1bHRfMSA9IHJlcXVpcmUoXCIuLi9BenRlY0RldGVjdG9yUmVzdWx0XCIpO1xudmFyIE1hdGhVdGlsc18xID0gcmVxdWlyZShcIi4uLy4uL2NvbW1vbi9kZXRlY3Rvci9NYXRoVXRpbHNcIik7XG52YXIgV2hpdGVSZWN0YW5nbGVEZXRlY3Rvcl8xID0gcmVxdWlyZShcIi4uLy4uL2NvbW1vbi9kZXRlY3Rvci9XaGl0ZVJlY3RhbmdsZURldGVjdG9yXCIpO1xudmFyIEdlbmVyaWNHRl8xID0gcmVxdWlyZShcIi4uLy4uL2NvbW1vbi9yZWVkc29sb21vbi9HZW5lcmljR0ZcIik7XG52YXIgUmVlZFNvbG9tb25EZWNvZGVyXzEgPSByZXF1aXJlKFwiLi4vLi4vY29tbW9uL3JlZWRzb2xvbW9uL1JlZWRTb2xvbW9uRGVjb2RlclwiKTtcbnZhciBOb3RGb3VuZEV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4uLy4uL05vdEZvdW5kRXhjZXB0aW9uXCIpO1xudmFyIEdyaWRTYW1wbGVySW5zdGFuY2VfMSA9IHJlcXVpcmUoXCIuLi8uLi9jb21tb24vR3JpZFNhbXBsZXJJbnN0YW5jZVwiKTtcbnZhciBJbnRlZ2VyXzEgPSByZXF1aXJlKFwiLi4vLi4vdXRpbC9JbnRlZ2VyXCIpO1xudmFyIFBvaW50ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFBvaW50KHgsIHkpIHtcbiAgICAgICAgdGhpcy54ID0geDtcbiAgICAgICAgdGhpcy55ID0geTtcbiAgICB9XG4gICAgUG9pbnQucHJvdG90eXBlLnRvUmVzdWx0UG9pbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgUmVzdWx0UG9pbnRfMS5kZWZhdWx0KHRoaXMuZ2V0WCgpLCB0aGlzLmdldFkoKSk7XG4gICAgfTtcbiAgICBQb2ludC5wcm90b3R5cGUuZ2V0WCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMueDtcbiAgICB9O1xuICAgIFBvaW50LnByb3RvdHlwZS5nZXRZID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy55O1xuICAgIH07XG4gICAgcmV0dXJuIFBvaW50O1xufSgpKTtcbmV4cG9ydHMuUG9pbnQgPSBQb2ludDtcbi8qKlxuICogRW5jYXBzdWxhdGVzIGxvZ2ljIHRoYXQgY2FuIGRldGVjdCBhbiBBenRlYyBDb2RlIGluIGFuIGltYWdlLCBldmVuIGlmIHRoZSBBenRlYyBDb2RlXG4gKiBpcyByb3RhdGVkIG9yIHNrZXdlZCwgb3IgcGFydGlhbGx5IG9ic2N1cmVkLlxuICpcbiAqIEBhdXRob3IgRGF2aWQgT2xpdmllclxuICogQGF1dGhvciBGcmFuayBZZWxsaW5cbiAqL1xudmFyIERldGVjdG9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIERldGVjdG9yKGltYWdlKSB7XG4gICAgICAgIHRoaXMuRVhQRUNURURfQ09STkVSX0JJVFMgPSBuZXcgSW50MzJBcnJheShbXG4gICAgICAgICAgICAweGVlMCxcbiAgICAgICAgICAgIDB4MWRjLFxuICAgICAgICAgICAgMHg4M2IsXG4gICAgICAgICAgICAweDcwNyxcbiAgICAgICAgXSk7XG4gICAgICAgIHRoaXMuaW1hZ2UgPSBpbWFnZTtcbiAgICB9XG4gICAgRGV0ZWN0b3IucHJvdG90eXBlLmRldGVjdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGV0ZWN0TWlycm9yKGZhbHNlKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIERldGVjdHMgYW4gQXp0ZWMgQ29kZSBpbiBhbiBpbWFnZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBpc01pcnJvciBpZiB0cnVlLCBpbWFnZSBpcyBhIG1pcnJvci1pbWFnZSBvZiBvcmlnaW5hbFxuICAgICAqIEByZXR1cm4ge0BsaW5rIEF6dGVjRGV0ZWN0b3JSZXN1bHR9IGVuY2Fwc3VsYXRpbmcgcmVzdWx0cyBvZiBkZXRlY3RpbmcgYW4gQXp0ZWMgQ29kZVxuICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb24gaWYgbm8gQXp0ZWMgQ29kZSBjYW4gYmUgZm91bmRcbiAgICAgKi9cbiAgICBEZXRlY3Rvci5wcm90b3R5cGUuZGV0ZWN0TWlycm9yID0gZnVuY3Rpb24gKGlzTWlycm9yKSB7XG4gICAgICAgIC8vIDEuIEdldCB0aGUgY2VudGVyIG9mIHRoZSBhenRlYyBtYXRyaXhcbiAgICAgICAgdmFyIHBDZW50ZXIgPSB0aGlzLmdldE1hdHJpeENlbnRlcigpO1xuICAgICAgICAvLyAyLiBHZXQgdGhlIGNlbnRlciBwb2ludHMgb2YgdGhlIGZvdXIgZGlhZ29uYWwgcG9pbnRzIGp1c3Qgb3V0c2lkZSB0aGUgYnVsbCdzIGV5ZVxuICAgICAgICAvLyAgW3RvcFJpZ2h0LCBib3R0b21SaWdodCwgYm90dG9tTGVmdCwgdG9wTGVmdF1cbiAgICAgICAgdmFyIGJ1bGxzRXllQ29ybmVycyA9IHRoaXMuZ2V0QnVsbHNFeWVDb3JuZXJzKHBDZW50ZXIpO1xuICAgICAgICBpZiAoaXNNaXJyb3IpIHtcbiAgICAgICAgICAgIHZhciB0ZW1wID0gYnVsbHNFeWVDb3JuZXJzWzBdO1xuICAgICAgICAgICAgYnVsbHNFeWVDb3JuZXJzWzBdID0gYnVsbHNFeWVDb3JuZXJzWzJdO1xuICAgICAgICAgICAgYnVsbHNFeWVDb3JuZXJzWzJdID0gdGVtcDtcbiAgICAgICAgfVxuICAgICAgICAvLyAzLiBHZXQgdGhlIHNpemUgb2YgdGhlIG1hdHJpeCBhbmQgb3RoZXIgcGFyYW1ldGVycyBmcm9tIHRoZSBidWxsJ3MgZXllXG4gICAgICAgIHRoaXMuZXh0cmFjdFBhcmFtZXRlcnMoYnVsbHNFeWVDb3JuZXJzKTtcbiAgICAgICAgLy8gNC4gU2FtcGxlIHRoZSBncmlkXG4gICAgICAgIHZhciBiaXRzID0gdGhpcy5zYW1wbGVHcmlkKHRoaXMuaW1hZ2UsIGJ1bGxzRXllQ29ybmVyc1t0aGlzLnNoaWZ0ICUgNF0sIGJ1bGxzRXllQ29ybmVyc1sodGhpcy5zaGlmdCArIDEpICUgNF0sIGJ1bGxzRXllQ29ybmVyc1sodGhpcy5zaGlmdCArIDIpICUgNF0sIGJ1bGxzRXllQ29ybmVyc1sodGhpcy5zaGlmdCArIDMpICUgNF0pO1xuICAgICAgICAvLyA1LiBHZXQgdGhlIGNvcm5lcnMgb2YgdGhlIG1hdHJpeC5cbiAgICAgICAgdmFyIGNvcm5lcnMgPSB0aGlzLmdldE1hdHJpeENvcm5lclBvaW50cyhidWxsc0V5ZUNvcm5lcnMpO1xuICAgICAgICByZXR1cm4gbmV3IEF6dGVjRGV0ZWN0b3JSZXN1bHRfMS5kZWZhdWx0KGJpdHMsIGNvcm5lcnMsIHRoaXMuY29tcGFjdCwgdGhpcy5uYkRhdGFCbG9ja3MsIHRoaXMubmJMYXllcnMpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogRXh0cmFjdHMgdGhlIG51bWJlciBvZiBkYXRhIGxheWVycyBhbmQgZGF0YSBibG9ja3MgZnJvbSB0aGUgbGF5ZXIgYXJvdW5kIHRoZSBidWxsJ3MgZXllLlxuICAgICAqXG4gICAgICogQHBhcmFtIGJ1bGxzRXllQ29ybmVycyB0aGUgYXJyYXkgb2YgYnVsbCdzIGV5ZSBjb3JuZXJzXG4gICAgICogQHRocm93cyBOb3RGb3VuZEV4Y2VwdGlvbiBpbiBjYXNlIG9mIHRvbyBtYW55IGVycm9ycyBvciBpbnZhbGlkIHBhcmFtZXRlcnNcbiAgICAgKi9cbiAgICBEZXRlY3Rvci5wcm90b3R5cGUuZXh0cmFjdFBhcmFtZXRlcnMgPSBmdW5jdGlvbiAoYnVsbHNFeWVDb3JuZXJzKSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkUG9pbnQoYnVsbHNFeWVDb3JuZXJzWzBdKSB8fCAhdGhpcy5pc1ZhbGlkUG9pbnQoYnVsbHNFeWVDb3JuZXJzWzFdKSB8fFxuICAgICAgICAgICAgIXRoaXMuaXNWYWxpZFBvaW50KGJ1bGxzRXllQ29ybmVyc1syXSkgfHwgIXRoaXMuaXNWYWxpZFBvaW50KGJ1bGxzRXllQ29ybmVyc1szXSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbGVuZ3RoID0gMiAqIHRoaXMubmJDZW50ZXJMYXllcnM7XG4gICAgICAgIC8vIEdldCB0aGUgYml0cyBhcm91bmQgdGhlIGJ1bGwncyBleWVcbiAgICAgICAgdmFyIHNpZGVzID0gbmV3IEludDMyQXJyYXkoW1xuICAgICAgICAgICAgdGhpcy5zYW1wbGVMaW5lKGJ1bGxzRXllQ29ybmVyc1swXSwgYnVsbHNFeWVDb3JuZXJzWzFdLCBsZW5ndGgpLFxuICAgICAgICAgICAgdGhpcy5zYW1wbGVMaW5lKGJ1bGxzRXllQ29ybmVyc1sxXSwgYnVsbHNFeWVDb3JuZXJzWzJdLCBsZW5ndGgpLFxuICAgICAgICAgICAgdGhpcy5zYW1wbGVMaW5lKGJ1bGxzRXllQ29ybmVyc1syXSwgYnVsbHNFeWVDb3JuZXJzWzNdLCBsZW5ndGgpLFxuICAgICAgICAgICAgdGhpcy5zYW1wbGVMaW5lKGJ1bGxzRXllQ29ybmVyc1szXSwgYnVsbHNFeWVDb3JuZXJzWzBdLCBsZW5ndGgpIC8vIFRvcFxuICAgICAgICBdKTtcbiAgICAgICAgLy8gYnVsbHNFeWVDb3JuZXJzW3NoaWZ0XSBpcyB0aGUgY29ybmVyIG9mIHRoZSBidWxscydleWUgdGhhdCBoYXMgdGhyZWVcbiAgICAgICAgLy8gb3JpZW50YXRpb24gbWFya3MuXG4gICAgICAgIC8vIHNpZGVzW3NoaWZ0XSBpcyB0aGUgcm93L2NvbHVtbiB0aGF0IGdvZXMgZnJvbSB0aGUgY29ybmVyIHdpdGggdGhyZWVcbiAgICAgICAgLy8gb3JpZW50YXRpb24gbWFya3MgdG8gdGhlIGNvcm5lciB3aXRoIHR3by5cbiAgICAgICAgdGhpcy5zaGlmdCA9IHRoaXMuZ2V0Um90YXRpb24oc2lkZXMsIGxlbmd0aCk7XG4gICAgICAgIC8vIEZsYXR0ZW4gdGhlIHBhcmFtZXRlciBiaXRzIGludG8gYSBzaW5nbGUgMjgtIG9yIDQwLWJpdCBsb25nXG4gICAgICAgIHZhciBwYXJhbWV0ZXJEYXRhID0gMDtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHtcbiAgICAgICAgICAgIHZhciBzaWRlID0gc2lkZXNbKHRoaXMuc2hpZnQgKyBpKSAlIDRdO1xuICAgICAgICAgICAgaWYgKHRoaXMuY29tcGFjdCkge1xuICAgICAgICAgICAgICAgIC8vIEVhY2ggc2lkZSBvZiB0aGUgZm9ybSAuLlhYWFhYWFguIHdoZXJlIFhzIGFyZSBwYXJhbWV0ZXIgZGF0YVxuICAgICAgICAgICAgICAgIHBhcmFtZXRlckRhdGEgPDw9IDc7XG4gICAgICAgICAgICAgICAgcGFyYW1ldGVyRGF0YSArPSAoc2lkZSA+PiAxKSAmIDB4N0Y7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBFYWNoIHNpZGUgb2YgdGhlIGZvcm0gLi5YWFhYWC5YWFhYWC4gd2hlcmUgWHMgYXJlIHBhcmFtZXRlciBkYXRhXG4gICAgICAgICAgICAgICAgcGFyYW1ldGVyRGF0YSA8PD0gMTA7XG4gICAgICAgICAgICAgICAgcGFyYW1ldGVyRGF0YSArPSAoKHNpZGUgPj4gMikgJiAoMHgxZiA8PCA1KSkgKyAoKHNpZGUgPj4gMSkgJiAweDFGKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBDb3JyZWN0cyBwYXJhbWV0ZXIgZGF0YSB1c2luZyBSUy4gIFJldHVybnMganVzdCB0aGUgZGF0YSBwb3J0aW9uXG4gICAgICAgIC8vIHdpdGhvdXQgdGhlIGVycm9yIGNvcnJlY3Rpb24uXG4gICAgICAgIHZhciBjb3JyZWN0ZWREYXRhID0gdGhpcy5nZXRDb3JyZWN0ZWRQYXJhbWV0ZXJEYXRhKHBhcmFtZXRlckRhdGEsIHRoaXMuY29tcGFjdCk7XG4gICAgICAgIGlmICh0aGlzLmNvbXBhY3QpIHtcbiAgICAgICAgICAgIC8vIDggYml0czogIDIgYml0cyBsYXllcnMgYW5kIDYgYml0cyBkYXRhIGJsb2Nrc1xuICAgICAgICAgICAgdGhpcy5uYkxheWVycyA9IChjb3JyZWN0ZWREYXRhID4+IDYpICsgMTtcbiAgICAgICAgICAgIHRoaXMubmJEYXRhQmxvY2tzID0gKGNvcnJlY3RlZERhdGEgJiAweDNGKSArIDE7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyAxNiBiaXRzOiAgNSBiaXRzIGxheWVycyBhbmQgMTEgYml0cyBkYXRhIGJsb2Nrc1xuICAgICAgICAgICAgdGhpcy5uYkxheWVycyA9IChjb3JyZWN0ZWREYXRhID4+IDExKSArIDE7XG4gICAgICAgICAgICB0aGlzLm5iRGF0YUJsb2NrcyA9IChjb3JyZWN0ZWREYXRhICYgMHg3RkYpICsgMTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgRGV0ZWN0b3IucHJvdG90eXBlLmdldFJvdGF0aW9uID0gZnVuY3Rpb24gKHNpZGVzLCBsZW5ndGgpIHtcbiAgICAgICAgLy8gSW4gYSBub3JtYWwgcGF0dGVybiwgd2UgZXhwZWN0IHRvIFNlZVxuICAgICAgICAvLyAgICoqICAgIC4qICAgICAgICAgICAgIEQgICAgICAgQVxuICAgICAgICAvLyAgICogICAgICAqXG4gICAgICAgIC8vXG4gICAgICAgIC8vICAgLiAgICAgICpcbiAgICAgICAgLy8gICAuLiAgICAuLiAgICAgICAgICAgICBDICAgICAgIEJcbiAgICAgICAgLy9cbiAgICAgICAgLy8gR3JhYiB0aGUgMyBiaXRzIGZyb20gZWFjaCBvZiB0aGUgc2lkZXMgdGhlIGZvcm0gdGhlIGxvY2F0b3IgcGF0dGVybiBhbmQgY29uY2F0ZW5hdGVcbiAgICAgICAgLy8gaW50byBhIDEyLWJpdCBpbnRlZ2VyLiAgU3RhcnQgd2l0aCB0aGUgYml0IGF0IEFcbiAgICAgICAgdmFyIGNvcm5lckJpdHMgPSAwO1xuICAgICAgICBzaWRlcy5mb3JFYWNoKGZ1bmN0aW9uIChzaWRlLCBpZHgsIGFycikge1xuICAgICAgICAgICAgLy8gWFguLi4uLi5YIHdoZXJlIFgncyBhcmUgb3JpZW50YXRpb24gbWFya3NcbiAgICAgICAgICAgIHZhciB0ID0gKChzaWRlID4+IChsZW5ndGggLSAyKSkgPDwgMSkgKyAoc2lkZSAmIDEpO1xuICAgICAgICAgICAgY29ybmVyQml0cyA9IChjb3JuZXJCaXRzIDw8IDMpICsgdDtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGZvciAodmFyIHNpZGUgaW4gc2lkZXMpIHtcbiAgICAgICAgLy8gICAgIC8vIFhYLi4uLi4uWCB3aGVyZSBYJ3MgYXJlIG9yaWVudGF0aW9uIG1hcmtzXG4gICAgICAgIC8vICAgICB2YXIgdCA9ICgoc2lkZSA+PiAobGVuZ3RoIC0gMikpIDw8IDEpICsgKHNpZGUgJiAxKTtcbiAgICAgICAgLy8gICAgIGNvcm5lckJpdHMgPSAoY29ybmVyQml0cyA8PCAzKSArIHQ7XG4gICAgICAgIC8vIH1cbiAgICAgICAgLy8gTW92IHRoZSBib3R0b20gYml0IHRvIHRoZSB0b3AsIHNvIHRoYXQgdGhlIHRocmVlIGJpdHMgb2YgdGhlIGxvY2F0b3IgcGF0dGVybiBhdCBBIGFyZVxuICAgICAgICAvLyB0b2dldGhlci4gIGNvcm5lckJpdHMgaXMgbm93OlxuICAgICAgICAvLyAgMyBvcmllbnRhdGlvbiBiaXRzIGF0IEEgfHwgMyBvcmllbnRhdGlvbiBiaXRzIGF0IEIgfHwgLi4uIHx8IDMgb3JpZW50YXRpb24gYml0cyBhdCBEXG4gICAgICAgIGNvcm5lckJpdHMgPSAoKGNvcm5lckJpdHMgJiAxKSA8PCAxMSkgKyAoY29ybmVyQml0cyA+PiAxKTtcbiAgICAgICAgLy8gVGhlIHJlc3VsdCBzaGlmdCBpbmRpY2F0ZXMgd2hpY2ggZWxlbWVudCBvZiBCdWxsc0V5ZUNvcm5lcnNbXSBnb2VzIGludG8gdGhlIHRvcC1sZWZ0XG4gICAgICAgIC8vIGNvcm5lci4gU2luY2UgdGhlIGZvdXIgcm90YXRpb24gdmFsdWVzIGhhdmUgYSBIYW1taW5nIGRpc3RhbmNlIG9mIDgsIHdlXG4gICAgICAgIC8vIGNhbiBlYXNpbHkgdG9sZXJhdGUgdHdvIGVycm9ycy5cbiAgICAgICAgZm9yICh2YXIgc2hpZnQgPSAwOyBzaGlmdCA8IDQ7IHNoaWZ0KyspIHtcbiAgICAgICAgICAgIGlmIChJbnRlZ2VyXzEuZGVmYXVsdC5iaXRDb3VudChjb3JuZXJCaXRzIF4gdGhpcy5FWFBFQ1RFRF9DT1JORVJfQklUU1tzaGlmdF0pIDw9IDIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2hpZnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQ29ycmVjdHMgdGhlIHBhcmFtZXRlciBiaXRzIHVzaW5nIFJlZWQtU29sb21vbiBhbGdvcml0aG0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcGFyYW1ldGVyRGF0YSBwYXJhbWV0ZXIgYml0c1xuICAgICAqIEBwYXJhbSBjb21wYWN0IHRydWUgaWYgdGhpcyBpcyBhIGNvbXBhY3QgQXp0ZWMgY29kZVxuICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb24gaWYgdGhlIGFycmF5IGNvbnRhaW5zIHRvbyBtYW55IGVycm9yc1xuICAgICAqL1xuICAgIERldGVjdG9yLnByb3RvdHlwZS5nZXRDb3JyZWN0ZWRQYXJhbWV0ZXJEYXRhID0gZnVuY3Rpb24gKHBhcmFtZXRlckRhdGEsIGNvbXBhY3QpIHtcbiAgICAgICAgdmFyIG51bUNvZGV3b3JkcztcbiAgICAgICAgdmFyIG51bURhdGFDb2Rld29yZHM7XG4gICAgICAgIGlmIChjb21wYWN0KSB7XG4gICAgICAgICAgICBudW1Db2Rld29yZHMgPSA3O1xuICAgICAgICAgICAgbnVtRGF0YUNvZGV3b3JkcyA9IDI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBudW1Db2Rld29yZHMgPSAxMDtcbiAgICAgICAgICAgIG51bURhdGFDb2Rld29yZHMgPSA0O1xuICAgICAgICB9XG4gICAgICAgIHZhciBudW1FQ0NvZGV3b3JkcyA9IG51bUNvZGV3b3JkcyAtIG51bURhdGFDb2Rld29yZHM7XG4gICAgICAgIHZhciBwYXJhbWV0ZXJXb3JkcyA9IG5ldyBJbnQzMkFycmF5KG51bUNvZGV3b3Jkcyk7XG4gICAgICAgIGZvciAodmFyIGkgPSBudW1Db2Rld29yZHMgLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICAgICAgcGFyYW1ldGVyV29yZHNbaV0gPSBwYXJhbWV0ZXJEYXRhICYgMHhGO1xuICAgICAgICAgICAgcGFyYW1ldGVyRGF0YSA+Pj0gNDtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdmFyIHJzRGVjb2RlciA9IG5ldyBSZWVkU29sb21vbkRlY29kZXJfMS5kZWZhdWx0KEdlbmVyaWNHRl8xLmRlZmF1bHQuQVpURUNfUEFSQU0pO1xuICAgICAgICAgICAgcnNEZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJXb3JkcywgbnVtRUNDb2Rld29yZHMpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChpZ25vcmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVG9zcyB0aGUgZXJyb3IgY29ycmVjdGlvbi4gIEp1c3QgcmV0dXJuIHRoZSBkYXRhIGFzIGFuIGludGVnZXJcbiAgICAgICAgdmFyIHJlc3VsdCA9IDA7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtRGF0YUNvZGV3b3JkczsgaSsrKSB7XG4gICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0IDw8IDQpICsgcGFyYW1ldGVyV29yZHNbaV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEZpbmRzIHRoZSBjb3JuZXJzIG9mIGEgYnVsbC1leWUgY2VudGVyZWQgb24gdGhlIHBhc3NlZCBwb2ludC5cbiAgICAgKiBUaGlzIHJldHVybnMgdGhlIGNlbnRlcnMgb2YgdGhlIGRpYWdvbmFsIHBvaW50cyBqdXN0IG91dHNpZGUgdGhlIGJ1bGwncyBleWVcbiAgICAgKiBSZXR1cm5zIFt0b3BSaWdodCwgYm90dG9tUmlnaHQsIGJvdHRvbUxlZnQsIHRvcExlZnRdXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcENlbnRlciBDZW50ZXIgcG9pbnRcbiAgICAgKiBAcmV0dXJuIFRoZSBjb3JuZXJzIG9mIHRoZSBidWxsLWV5ZVxuICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb24gSWYgbm8gdmFsaWQgYnVsbC1leWUgY2FuIGJlIGZvdW5kXG4gICAgICovXG4gICAgRGV0ZWN0b3IucHJvdG90eXBlLmdldEJ1bGxzRXllQ29ybmVycyA9IGZ1bmN0aW9uIChwQ2VudGVyKSB7XG4gICAgICAgIHZhciBwaW5hID0gcENlbnRlcjtcbiAgICAgICAgdmFyIHBpbmIgPSBwQ2VudGVyO1xuICAgICAgICB2YXIgcGluYyA9IHBDZW50ZXI7XG4gICAgICAgIHZhciBwaW5kID0gcENlbnRlcjtcbiAgICAgICAgdmFyIGNvbG9yID0gdHJ1ZTtcbiAgICAgICAgZm9yICh0aGlzLm5iQ2VudGVyTGF5ZXJzID0gMTsgdGhpcy5uYkNlbnRlckxheWVycyA8IDk7IHRoaXMubmJDZW50ZXJMYXllcnMrKykge1xuICAgICAgICAgICAgdmFyIHBvdXRhID0gdGhpcy5nZXRGaXJzdERpZmZlcmVudChwaW5hLCBjb2xvciwgMSwgLTEpO1xuICAgICAgICAgICAgdmFyIHBvdXRiID0gdGhpcy5nZXRGaXJzdERpZmZlcmVudChwaW5iLCBjb2xvciwgMSwgMSk7XG4gICAgICAgICAgICB2YXIgcG91dGMgPSB0aGlzLmdldEZpcnN0RGlmZmVyZW50KHBpbmMsIGNvbG9yLCAtMSwgMSk7XG4gICAgICAgICAgICB2YXIgcG91dGQgPSB0aGlzLmdldEZpcnN0RGlmZmVyZW50KHBpbmQsIGNvbG9yLCAtMSwgLTEpO1xuICAgICAgICAgICAgLy8gZCAgICAgIGFcbiAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAvLyBjICAgICAgYlxuICAgICAgICAgICAgaWYgKHRoaXMubmJDZW50ZXJMYXllcnMgPiAyKSB7XG4gICAgICAgICAgICAgICAgdmFyIHEgPSAodGhpcy5kaXN0YW5jZVBvaW50KHBvdXRkLCBwb3V0YSkgKiB0aGlzLm5iQ2VudGVyTGF5ZXJzKSAvICh0aGlzLmRpc3RhbmNlUG9pbnQocGluZCwgcGluYSkgKiAodGhpcy5uYkNlbnRlckxheWVycyArIDIpKTtcbiAgICAgICAgICAgICAgICBpZiAocSA8IDAuNzUgfHwgcSA+IDEuMjUgfHwgIXRoaXMuaXNXaGl0ZU9yQmxhY2tSZWN0YW5nbGUocG91dGEsIHBvdXRiLCBwb3V0YywgcG91dGQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBpbmEgPSBwb3V0YTtcbiAgICAgICAgICAgIHBpbmIgPSBwb3V0YjtcbiAgICAgICAgICAgIHBpbmMgPSBwb3V0YztcbiAgICAgICAgICAgIHBpbmQgPSBwb3V0ZDtcbiAgICAgICAgICAgIGNvbG9yID0gIWNvbG9yO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm5iQ2VudGVyTGF5ZXJzICE9PSA1ICYmIHRoaXMubmJDZW50ZXJMYXllcnMgIT09IDcpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbXBhY3QgPSB0aGlzLm5iQ2VudGVyTGF5ZXJzID09PSA1O1xuICAgICAgICAvLyBFeHBhbmQgdGhlIHNxdWFyZSBieSAuNSBwaXhlbCBpbiBlYWNoIGRpcmVjdGlvbiBzbyB0aGF0IHdlJ3JlIG9uIHRoZSBib3JkZXJcbiAgICAgICAgLy8gYmV0d2VlbiB0aGUgd2hpdGUgc3F1YXJlIGFuZCB0aGUgYmxhY2sgc3F1YXJlXG4gICAgICAgIHZhciBwaW5heCA9IG5ldyBSZXN1bHRQb2ludF8xLmRlZmF1bHQocGluYS5nZXRYKCkgKyAwLjUsIHBpbmEuZ2V0WSgpIC0gMC41KTtcbiAgICAgICAgdmFyIHBpbmJ4ID0gbmV3IFJlc3VsdFBvaW50XzEuZGVmYXVsdChwaW5iLmdldFgoKSArIDAuNSwgcGluYi5nZXRZKCkgKyAwLjUpO1xuICAgICAgICB2YXIgcGluY3ggPSBuZXcgUmVzdWx0UG9pbnRfMS5kZWZhdWx0KHBpbmMuZ2V0WCgpIC0gMC41LCBwaW5jLmdldFkoKSArIDAuNSk7XG4gICAgICAgIHZhciBwaW5keCA9IG5ldyBSZXN1bHRQb2ludF8xLmRlZmF1bHQocGluZC5nZXRYKCkgLSAwLjUsIHBpbmQuZ2V0WSgpIC0gMC41KTtcbiAgICAgICAgLy8gRXhwYW5kIHRoZSBzcXVhcmUgc28gdGhhdCBpdHMgY29ybmVycyBhcmUgdGhlIGNlbnRlcnMgb2YgdGhlIHBvaW50c1xuICAgICAgICAvLyBqdXN0IG91dHNpZGUgdGhlIGJ1bGwncyBleWUuXG4gICAgICAgIHJldHVybiB0aGlzLmV4cGFuZFNxdWFyZShbcGluYXgsIHBpbmJ4LCBwaW5jeCwgcGluZHhdLCAyICogdGhpcy5uYkNlbnRlckxheWVycyAtIDMsIDIgKiB0aGlzLm5iQ2VudGVyTGF5ZXJzKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEZpbmRzIGEgY2FuZGlkYXRlIGNlbnRlciBwb2ludCBvZiBhbiBBenRlYyBjb2RlIGZyb20gYW4gaW1hZ2VcbiAgICAgKlxuICAgICAqIEByZXR1cm4gdGhlIGNlbnRlciBwb2ludFxuICAgICAqL1xuICAgIERldGVjdG9yLnByb3RvdHlwZS5nZXRNYXRyaXhDZW50ZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBwb2ludEE7XG4gICAgICAgIHZhciBwb2ludEI7XG4gICAgICAgIHZhciBwb2ludEM7XG4gICAgICAgIHZhciBwb2ludEQ7XG4gICAgICAgIC8vIEdldCBhIHdoaXRlIHJlY3RhbmdsZSB0aGF0IGNhbiBiZSB0aGUgYm9yZGVyIG9mIHRoZSBtYXRyaXggaW4gY2VudGVyIGJ1bGwncyBleWUgb3JcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHZhciBjb3JuZXJQb2ludHMgPSBuZXcgV2hpdGVSZWN0YW5nbGVEZXRlY3Rvcl8xLmRlZmF1bHQodGhpcy5pbWFnZSkuZGV0ZWN0KCk7XG4gICAgICAgICAgICBwb2ludEEgPSBjb3JuZXJQb2ludHNbMF07XG4gICAgICAgICAgICBwb2ludEIgPSBjb3JuZXJQb2ludHNbMV07XG4gICAgICAgICAgICBwb2ludEMgPSBjb3JuZXJQb2ludHNbMl07XG4gICAgICAgICAgICBwb2ludEQgPSBjb3JuZXJQb2ludHNbM107XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIC8vIFRoaXMgZXhjZXB0aW9uIGNhbiBiZSBpbiBjYXNlIHRoZSBpbml0aWFsIHJlY3RhbmdsZSBpcyB3aGl0ZVxuICAgICAgICAgICAgLy8gSW4gdGhhdCBjYXNlLCBzdXJlbHkgaW4gdGhlIGJ1bGwncyBleWUsIHdlIHRyeSB0byBleHBhbmQgdGhlIHJlY3RhbmdsZS5cbiAgICAgICAgICAgIHZhciBjeF8xID0gdGhpcy5pbWFnZS5nZXRXaWR0aCgpIC8gMjtcbiAgICAgICAgICAgIHZhciBjeV8xID0gdGhpcy5pbWFnZS5nZXRIZWlnaHQoKSAvIDI7XG4gICAgICAgICAgICBwb2ludEEgPSB0aGlzLmdldEZpcnN0RGlmZmVyZW50KG5ldyBQb2ludChjeF8xICsgNywgY3lfMSAtIDcpLCBmYWxzZSwgMSwgLTEpLnRvUmVzdWx0UG9pbnQoKTtcbiAgICAgICAgICAgIHBvaW50QiA9IHRoaXMuZ2V0Rmlyc3REaWZmZXJlbnQobmV3IFBvaW50KGN4XzEgKyA3LCBjeV8xICsgNyksIGZhbHNlLCAxLCAxKS50b1Jlc3VsdFBvaW50KCk7XG4gICAgICAgICAgICBwb2ludEMgPSB0aGlzLmdldEZpcnN0RGlmZmVyZW50KG5ldyBQb2ludChjeF8xIC0gNywgY3lfMSArIDcpLCBmYWxzZSwgLTEsIDEpLnRvUmVzdWx0UG9pbnQoKTtcbiAgICAgICAgICAgIHBvaW50RCA9IHRoaXMuZ2V0Rmlyc3REaWZmZXJlbnQobmV3IFBvaW50KGN4XzEgLSA3LCBjeV8xIC0gNyksIGZhbHNlLCAtMSwgLTEpLnRvUmVzdWx0UG9pbnQoKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBDb21wdXRlIHRoZSBjZW50ZXIgb2YgdGhlIHJlY3RhbmdsZVxuICAgICAgICB2YXIgY3ggPSBNYXRoVXRpbHNfMS5kZWZhdWx0LnJvdW5kKChwb2ludEEuZ2V0WCgpICsgcG9pbnRELmdldFgoKSArIHBvaW50Qi5nZXRYKCkgKyBwb2ludEMuZ2V0WCgpKSAvIDQuMCk7XG4gICAgICAgIHZhciBjeSA9IE1hdGhVdGlsc18xLmRlZmF1bHQucm91bmQoKHBvaW50QS5nZXRZKCkgKyBwb2ludEQuZ2V0WSgpICsgcG9pbnRCLmdldFkoKSArIHBvaW50Qy5nZXRZKCkpIC8gNC4wKTtcbiAgICAgICAgLy8gUmVkZXRlcm1pbmUgdGhlIHdoaXRlIHJlY3RhbmdsZSBzdGFydGluZyBmcm9tIHByZXZpb3VzbHkgY29tcHV0ZWQgY2VudGVyLlxuICAgICAgICAvLyBUaGlzIHdpbGwgZW5zdXJlIHRoYXQgd2UgZW5kIHVwIHdpdGggYSB3aGl0ZSByZWN0YW5nbGUgaW4gY2VudGVyIGJ1bGwncyBleWVcbiAgICAgICAgLy8gaW4gb3JkZXIgdG8gY29tcHV0ZSBhIG1vcmUgYWNjdXJhdGUgY2VudGVyLlxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdmFyIGNvcm5lclBvaW50cyA9IG5ldyBXaGl0ZVJlY3RhbmdsZURldGVjdG9yXzEuZGVmYXVsdCh0aGlzLmltYWdlLCAxNSwgY3gsIGN5KS5kZXRlY3QoKTtcbiAgICAgICAgICAgIHBvaW50QSA9IGNvcm5lclBvaW50c1swXTtcbiAgICAgICAgICAgIHBvaW50QiA9IGNvcm5lclBvaW50c1sxXTtcbiAgICAgICAgICAgIHBvaW50QyA9IGNvcm5lclBvaW50c1syXTtcbiAgICAgICAgICAgIHBvaW50RCA9IGNvcm5lclBvaW50c1szXTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgLy8gVGhpcyBleGNlcHRpb24gY2FuIGJlIGluIGNhc2UgdGhlIGluaXRpYWwgcmVjdGFuZ2xlIGlzIHdoaXRlXG4gICAgICAgICAgICAvLyBJbiB0aGF0IGNhc2Ugd2UgdHJ5IHRvIGV4cGFuZCB0aGUgcmVjdGFuZ2xlLlxuICAgICAgICAgICAgcG9pbnRBID0gdGhpcy5nZXRGaXJzdERpZmZlcmVudChuZXcgUG9pbnQoY3ggKyA3LCBjeSAtIDcpLCBmYWxzZSwgMSwgLTEpLnRvUmVzdWx0UG9pbnQoKTtcbiAgICAgICAgICAgIHBvaW50QiA9IHRoaXMuZ2V0Rmlyc3REaWZmZXJlbnQobmV3IFBvaW50KGN4ICsgNywgY3kgKyA3KSwgZmFsc2UsIDEsIDEpLnRvUmVzdWx0UG9pbnQoKTtcbiAgICAgICAgICAgIHBvaW50QyA9IHRoaXMuZ2V0Rmlyc3REaWZmZXJlbnQobmV3IFBvaW50KGN4IC0gNywgY3kgKyA3KSwgZmFsc2UsIC0xLCAxKS50b1Jlc3VsdFBvaW50KCk7XG4gICAgICAgICAgICBwb2ludEQgPSB0aGlzLmdldEZpcnN0RGlmZmVyZW50KG5ldyBQb2ludChjeCAtIDcsIGN5IC0gNyksIGZhbHNlLCAtMSwgLTEpLnRvUmVzdWx0UG9pbnQoKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZWNvbXB1dGUgdGhlIGNlbnRlciBvZiB0aGUgcmVjdGFuZ2xlXG4gICAgICAgIGN4ID0gTWF0aFV0aWxzXzEuZGVmYXVsdC5yb3VuZCgocG9pbnRBLmdldFgoKSArIHBvaW50RC5nZXRYKCkgKyBwb2ludEIuZ2V0WCgpICsgcG9pbnRDLmdldFgoKSkgLyA0LjApO1xuICAgICAgICBjeSA9IE1hdGhVdGlsc18xLmRlZmF1bHQucm91bmQoKHBvaW50QS5nZXRZKCkgKyBwb2ludEQuZ2V0WSgpICsgcG9pbnRCLmdldFkoKSArIHBvaW50Qy5nZXRZKCkpIC8gNC4wKTtcbiAgICAgICAgcmV0dXJuIG5ldyBQb2ludChjeCwgY3kpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgQXp0ZWMgY29kZSBjb3JuZXJzIGZyb20gdGhlIGJ1bGwncyBleWUgY29ybmVycyBhbmQgdGhlIHBhcmFtZXRlcnMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYnVsbHNFeWVDb3JuZXJzIHRoZSBhcnJheSBvZiBidWxsJ3MgZXllIGNvcm5lcnNcbiAgICAgKiBAcmV0dXJuIHRoZSBhcnJheSBvZiBhenRlYyBjb2RlIGNvcm5lcnNcbiAgICAgKi9cbiAgICBEZXRlY3Rvci5wcm90b3R5cGUuZ2V0TWF0cml4Q29ybmVyUG9pbnRzID0gZnVuY3Rpb24gKGJ1bGxzRXllQ29ybmVycykge1xuICAgICAgICByZXR1cm4gdGhpcy5leHBhbmRTcXVhcmUoYnVsbHNFeWVDb3JuZXJzLCAyICogdGhpcy5uYkNlbnRlckxheWVycywgdGhpcy5nZXREaW1lbnNpb24oKSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgQml0TWF0cml4IGJ5IHNhbXBsaW5nIHRoZSBwcm92aWRlZCBpbWFnZS5cbiAgICAgKiB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tUmlnaHQsIGFuZCBib3R0b21MZWZ0IGFyZSB0aGUgY2VudGVycyBvZiB0aGUgc3F1YXJlcyBvbiB0aGVcbiAgICAgKiBkaWFnb25hbCBqdXN0IG91dHNpZGUgdGhlIGJ1bGwncyBleWUuXG4gICAgICovXG4gICAgRGV0ZWN0b3IucHJvdG90eXBlLnNhbXBsZUdyaWQgPSBmdW5jdGlvbiAoaW1hZ2UsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21SaWdodCwgYm90dG9tTGVmdCkge1xuICAgICAgICB2YXIgc2FtcGxlciA9IEdyaWRTYW1wbGVySW5zdGFuY2VfMS5kZWZhdWx0LmdldEluc3RhbmNlKCk7XG4gICAgICAgIHZhciBkaW1lbnNpb24gPSB0aGlzLmdldERpbWVuc2lvbigpO1xuICAgICAgICB2YXIgbG93ID0gZGltZW5zaW9uIC8gMiAtIHRoaXMubmJDZW50ZXJMYXllcnM7XG4gICAgICAgIHZhciBoaWdoID0gZGltZW5zaW9uIC8gMiArIHRoaXMubmJDZW50ZXJMYXllcnM7XG4gICAgICAgIHJldHVybiBzYW1wbGVyLnNhbXBsZUdyaWQoaW1hZ2UsIGRpbWVuc2lvbiwgZGltZW5zaW9uLCBsb3csIGxvdywgLy8gdG9wbGVmdFxuICAgICAgICBoaWdoLCBsb3csIC8vIHRvcHJpZ2h0XG4gICAgICAgIGhpZ2gsIGhpZ2gsIC8vIGJvdHRvbXJpZ2h0XG4gICAgICAgIGxvdywgaGlnaCwgLy8gYm90dG9tbGVmdFxuICAgICAgICB0b3BMZWZ0LmdldFgoKSwgdG9wTGVmdC5nZXRZKCksIHRvcFJpZ2h0LmdldFgoKSwgdG9wUmlnaHQuZ2V0WSgpLCBib3R0b21SaWdodC5nZXRYKCksIGJvdHRvbVJpZ2h0LmdldFkoKSwgYm90dG9tTGVmdC5nZXRYKCksIGJvdHRvbUxlZnQuZ2V0WSgpKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFNhbXBsZXMgYSBsaW5lLlxuICAgICAqXG4gICAgICogQHBhcmFtIHAxICAgc3RhcnQgcG9pbnQgKGluY2x1c2l2ZSlcbiAgICAgKiBAcGFyYW0gcDIgICBlbmQgcG9pbnQgKGV4Y2x1c2l2ZSlcbiAgICAgKiBAcGFyYW0gc2l6ZSBudW1iZXIgb2YgYml0c1xuICAgICAqIEByZXR1cm4gdGhlIGFycmF5IG9mIGJpdHMgYXMgYW4gaW50IChmaXJzdCBiaXQgaXMgaGlnaC1vcmRlciBiaXQgb2YgcmVzdWx0KVxuICAgICAqL1xuICAgIERldGVjdG9yLnByb3RvdHlwZS5zYW1wbGVMaW5lID0gZnVuY3Rpb24gKHAxLCBwMiwgc2l6ZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gMDtcbiAgICAgICAgdmFyIGQgPSB0aGlzLmRpc3RhbmNlUmVzdWx0UG9pbnQocDEsIHAyKTtcbiAgICAgICAgdmFyIG1vZHVsZVNpemUgPSBkIC8gc2l6ZTtcbiAgICAgICAgdmFyIHB4ID0gcDEuZ2V0WCgpO1xuICAgICAgICB2YXIgcHkgPSBwMS5nZXRZKCk7XG4gICAgICAgIHZhciBkeCA9IG1vZHVsZVNpemUgKiAocDIuZ2V0WCgpIC0gcDEuZ2V0WCgpKSAvIGQ7XG4gICAgICAgIHZhciBkeSA9IG1vZHVsZVNpemUgKiAocDIuZ2V0WSgpIC0gcDEuZ2V0WSgpKSAvIGQ7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pbWFnZS5nZXQoTWF0aFV0aWxzXzEuZGVmYXVsdC5yb3VuZChweCArIGkgKiBkeCksIE1hdGhVdGlsc18xLmRlZmF1bHQucm91bmQocHkgKyBpICogZHkpKSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCB8PSAxIDw8IChzaXplIC0gaSAtIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGJvcmRlciBvZiB0aGUgcmVjdGFuZ2xlIHBhc3NlZCBpbiBwYXJhbWV0ZXIgaXMgY29tcG91bmQgb2Ygd2hpdGUgcG9pbnRzIG9ubHlcbiAgICAgKiAgICAgICAgIG9yIGJsYWNrIHBvaW50cyBvbmx5XG4gICAgICovXG4gICAgRGV0ZWN0b3IucHJvdG90eXBlLmlzV2hpdGVPckJsYWNrUmVjdGFuZ2xlID0gZnVuY3Rpb24gKHAxLCBwMiwgcDMsIHA0KSB7XG4gICAgICAgIHZhciBjb3JyID0gMztcbiAgICAgICAgcDEgPSBuZXcgUG9pbnQocDEuZ2V0WCgpIC0gY29yciwgcDEuZ2V0WSgpICsgY29ycik7XG4gICAgICAgIHAyID0gbmV3IFBvaW50KHAyLmdldFgoKSAtIGNvcnIsIHAyLmdldFkoKSAtIGNvcnIpO1xuICAgICAgICBwMyA9IG5ldyBQb2ludChwMy5nZXRYKCkgKyBjb3JyLCBwMy5nZXRZKCkgLSBjb3JyKTtcbiAgICAgICAgcDQgPSBuZXcgUG9pbnQocDQuZ2V0WCgpICsgY29yciwgcDQuZ2V0WSgpICsgY29ycik7XG4gICAgICAgIHZhciBjSW5pdCA9IHRoaXMuZ2V0Q29sb3IocDQsIHAxKTtcbiAgICAgICAgaWYgKGNJbml0ID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGMgPSB0aGlzLmdldENvbG9yKHAxLCBwMik7XG4gICAgICAgIGlmIChjICE9PSBjSW5pdCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGMgPSB0aGlzLmdldENvbG9yKHAyLCBwMyk7XG4gICAgICAgIGlmIChjICE9PSBjSW5pdCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGMgPSB0aGlzLmdldENvbG9yKHAzLCBwNCk7XG4gICAgICAgIHJldHVybiBjID09PSBjSW5pdDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGNvbG9yIG9mIGEgc2VnbWVudFxuICAgICAqXG4gICAgICogQHJldHVybiAxIGlmIHNlZ21lbnQgbW9yZSB0aGFuIDkwJSBibGFjaywgLTEgaWYgc2VnbWVudCBpcyBtb3JlIHRoYW4gOTAlIHdoaXRlLCAwIGVsc2VcbiAgICAgKi9cbiAgICBEZXRlY3Rvci5wcm90b3R5cGUuZ2V0Q29sb3IgPSBmdW5jdGlvbiAocDEsIHAyKSB7XG4gICAgICAgIHZhciBkID0gdGhpcy5kaXN0YW5jZVBvaW50KHAxLCBwMik7XG4gICAgICAgIHZhciBkeCA9IChwMi5nZXRYKCkgLSBwMS5nZXRYKCkpIC8gZDtcbiAgICAgICAgdmFyIGR5ID0gKHAyLmdldFkoKSAtIHAxLmdldFkoKSkgLyBkO1xuICAgICAgICB2YXIgZXJyb3IgPSAwO1xuICAgICAgICB2YXIgcHggPSBwMS5nZXRYKCk7XG4gICAgICAgIHZhciBweSA9IHAxLmdldFkoKTtcbiAgICAgICAgdmFyIGNvbG9yTW9kZWwgPSB0aGlzLmltYWdlLmdldChwMS5nZXRYKCksIHAxLmdldFkoKSk7XG4gICAgICAgIHZhciBpTWF4ID0gTWF0aC5jZWlsKGQpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGlNYXg7IGkrKykge1xuICAgICAgICAgICAgcHggKz0gZHg7XG4gICAgICAgICAgICBweSArPSBkeTtcbiAgICAgICAgICAgIGlmICh0aGlzLmltYWdlLmdldChNYXRoVXRpbHNfMS5kZWZhdWx0LnJvdW5kKHB4KSwgTWF0aFV0aWxzXzEuZGVmYXVsdC5yb3VuZChweSkpICE9PSBjb2xvck1vZGVsKSB7XG4gICAgICAgICAgICAgICAgZXJyb3IrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgZXJyUmF0aW8gPSBlcnJvciAvIGQ7XG4gICAgICAgIGlmIChlcnJSYXRpbyA+IDAuMSAmJiBlcnJSYXRpbyA8IDAuOSkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChlcnJSYXRpbyA8PSAwLjEpID09PSBjb2xvck1vZGVsID8gMSA6IC0xO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgY29vcmRpbmF0ZSBvZiB0aGUgZmlyc3QgcG9pbnQgd2l0aCBhIGRpZmZlcmVudCBjb2xvciBpbiB0aGUgZ2l2ZW4gZGlyZWN0aW9uXG4gICAgICovXG4gICAgRGV0ZWN0b3IucHJvdG90eXBlLmdldEZpcnN0RGlmZmVyZW50ID0gZnVuY3Rpb24gKGluaXQsIGNvbG9yLCBkeCwgZHkpIHtcbiAgICAgICAgdmFyIHggPSBpbml0LmdldFgoKSArIGR4O1xuICAgICAgICB2YXIgeSA9IGluaXQuZ2V0WSgpICsgZHk7XG4gICAgICAgIHdoaWxlICh0aGlzLmlzVmFsaWQoeCwgeSkgJiYgdGhpcy5pbWFnZS5nZXQoeCwgeSkgPT09IGNvbG9yKSB7XG4gICAgICAgICAgICB4ICs9IGR4O1xuICAgICAgICAgICAgeSArPSBkeTtcbiAgICAgICAgfVxuICAgICAgICB4IC09IGR4O1xuICAgICAgICB5IC09IGR5O1xuICAgICAgICB3aGlsZSAodGhpcy5pc1ZhbGlkKHgsIHkpICYmIHRoaXMuaW1hZ2UuZ2V0KHgsIHkpID09PSBjb2xvcikge1xuICAgICAgICAgICAgeCArPSBkeDtcbiAgICAgICAgfVxuICAgICAgICB4IC09IGR4O1xuICAgICAgICB3aGlsZSAodGhpcy5pc1ZhbGlkKHgsIHkpICYmIHRoaXMuaW1hZ2UuZ2V0KHgsIHkpID09PSBjb2xvcikge1xuICAgICAgICAgICAgeSArPSBkeTtcbiAgICAgICAgfVxuICAgICAgICB5IC09IGR5O1xuICAgICAgICByZXR1cm4gbmV3IFBvaW50KHgsIHkpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogRXhwYW5kIHRoZSBzcXVhcmUgcmVwcmVzZW50ZWQgYnkgdGhlIGNvcm5lciBwb2ludHMgYnkgcHVzaGluZyBvdXQgZXF1YWxseSBpbiBhbGwgZGlyZWN0aW9uc1xuICAgICAqXG4gICAgICogQHBhcmFtIGNvcm5lclBvaW50cyB0aGUgY29ybmVycyBvZiB0aGUgc3F1YXJlLCB3aGljaCBoYXMgdGhlIGJ1bGwncyBleWUgYXQgaXRzIGNlbnRlclxuICAgICAqIEBwYXJhbSBvbGRTaWRlIHRoZSBvcmlnaW5hbCBsZW5ndGggb2YgdGhlIHNpZGUgb2YgdGhlIHNxdWFyZSBpbiB0aGUgdGFyZ2V0IGJpdCBtYXRyaXhcbiAgICAgKiBAcGFyYW0gbmV3U2lkZSB0aGUgbmV3IGxlbmd0aCBvZiB0aGUgc2l6ZSBvZiB0aGUgc3F1YXJlIGluIHRoZSB0YXJnZXQgYml0IG1hdHJpeFxuICAgICAqIEByZXR1cm4gdGhlIGNvcm5lcnMgb2YgdGhlIGV4cGFuZGVkIHNxdWFyZVxuICAgICAqL1xuICAgIERldGVjdG9yLnByb3RvdHlwZS5leHBhbmRTcXVhcmUgPSBmdW5jdGlvbiAoY29ybmVyUG9pbnRzLCBvbGRTaWRlLCBuZXdTaWRlKSB7XG4gICAgICAgIHZhciByYXRpbyA9IG5ld1NpZGUgLyAoMi4wICogb2xkU2lkZSk7XG4gICAgICAgIHZhciBkeCA9IGNvcm5lclBvaW50c1swXS5nZXRYKCkgLSBjb3JuZXJQb2ludHNbMl0uZ2V0WCgpO1xuICAgICAgICB2YXIgZHkgPSBjb3JuZXJQb2ludHNbMF0uZ2V0WSgpIC0gY29ybmVyUG9pbnRzWzJdLmdldFkoKTtcbiAgICAgICAgdmFyIGNlbnRlcnggPSAoY29ybmVyUG9pbnRzWzBdLmdldFgoKSArIGNvcm5lclBvaW50c1syXS5nZXRYKCkpIC8gMi4wO1xuICAgICAgICB2YXIgY2VudGVyeSA9IChjb3JuZXJQb2ludHNbMF0uZ2V0WSgpICsgY29ybmVyUG9pbnRzWzJdLmdldFkoKSkgLyAyLjA7XG4gICAgICAgIHZhciByZXN1bHQwID0gbmV3IFJlc3VsdFBvaW50XzEuZGVmYXVsdChjZW50ZXJ4ICsgcmF0aW8gKiBkeCwgY2VudGVyeSArIHJhdGlvICogZHkpO1xuICAgICAgICB2YXIgcmVzdWx0MiA9IG5ldyBSZXN1bHRQb2ludF8xLmRlZmF1bHQoY2VudGVyeCAtIHJhdGlvICogZHgsIGNlbnRlcnkgLSByYXRpbyAqIGR5KTtcbiAgICAgICAgZHggPSBjb3JuZXJQb2ludHNbMV0uZ2V0WCgpIC0gY29ybmVyUG9pbnRzWzNdLmdldFgoKTtcbiAgICAgICAgZHkgPSBjb3JuZXJQb2ludHNbMV0uZ2V0WSgpIC0gY29ybmVyUG9pbnRzWzNdLmdldFkoKTtcbiAgICAgICAgY2VudGVyeCA9IChjb3JuZXJQb2ludHNbMV0uZ2V0WCgpICsgY29ybmVyUG9pbnRzWzNdLmdldFgoKSkgLyAyLjA7XG4gICAgICAgIGNlbnRlcnkgPSAoY29ybmVyUG9pbnRzWzFdLmdldFkoKSArIGNvcm5lclBvaW50c1szXS5nZXRZKCkpIC8gMi4wO1xuICAgICAgICB2YXIgcmVzdWx0MSA9IG5ldyBSZXN1bHRQb2ludF8xLmRlZmF1bHQoY2VudGVyeCArIHJhdGlvICogZHgsIGNlbnRlcnkgKyByYXRpbyAqIGR5KTtcbiAgICAgICAgdmFyIHJlc3VsdDMgPSBuZXcgUmVzdWx0UG9pbnRfMS5kZWZhdWx0KGNlbnRlcnggLSByYXRpbyAqIGR4LCBjZW50ZXJ5IC0gcmF0aW8gKiBkeSk7XG4gICAgICAgIHZhciByZXN1bHRzID0gW3Jlc3VsdDAsIHJlc3VsdDEsIHJlc3VsdDIsIHJlc3VsdDNdO1xuICAgICAgICByZXR1cm4gcmVzdWx0cztcbiAgICB9O1xuICAgIERldGVjdG9yLnByb3RvdHlwZS5pc1ZhbGlkID0gZnVuY3Rpb24gKHgsIHkpIHtcbiAgICAgICAgcmV0dXJuIHggPj0gMCAmJiB4IDwgdGhpcy5pbWFnZS5nZXRXaWR0aCgpICYmIHkgPiAwICYmIHkgPCB0aGlzLmltYWdlLmdldEhlaWdodCgpO1xuICAgIH07XG4gICAgRGV0ZWN0b3IucHJvdG90eXBlLmlzVmFsaWRQb2ludCA9IGZ1bmN0aW9uIChwb2ludCkge1xuICAgICAgICB2YXIgeCA9IE1hdGhVdGlsc18xLmRlZmF1bHQucm91bmQocG9pbnQuZ2V0WCgpKTtcbiAgICAgICAgdmFyIHkgPSBNYXRoVXRpbHNfMS5kZWZhdWx0LnJvdW5kKHBvaW50LmdldFkoKSk7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQoeCwgeSk7XG4gICAgfTtcbiAgICBEZXRlY3Rvci5wcm90b3R5cGUuZGlzdGFuY2VQb2ludCA9IGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgIHJldHVybiBNYXRoVXRpbHNfMS5kZWZhdWx0LmRpc3RhbmNlKGEuZ2V0WCgpLCBhLmdldFkoKSwgYi5nZXRYKCksIGIuZ2V0WSgpKTtcbiAgICB9O1xuICAgIERldGVjdG9yLnByb3RvdHlwZS5kaXN0YW5jZVJlc3VsdFBvaW50ID0gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIE1hdGhVdGlsc18xLmRlZmF1bHQuZGlzdGFuY2UoYS5nZXRYKCksIGEuZ2V0WSgpLCBiLmdldFgoKSwgYi5nZXRZKCkpO1xuICAgIH07XG4gICAgRGV0ZWN0b3IucHJvdG90eXBlLmdldERpbWVuc2lvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMuY29tcGFjdCkge1xuICAgICAgICAgICAgcmV0dXJuIDQgKiB0aGlzLm5iTGF5ZXJzICsgMTE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMubmJMYXllcnMgPD0gNCkge1xuICAgICAgICAgICAgcmV0dXJuIDQgKiB0aGlzLm5iTGF5ZXJzICsgMTU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDQgKiB0aGlzLm5iTGF5ZXJzICsgMiAqIChJbnRlZ2VyXzEuZGVmYXVsdC50cnVuY0RpdmlzaW9uKCh0aGlzLm5iTGF5ZXJzIC0gNCksIDgpICsgMSkgKyAxNTtcbiAgICB9O1xuICAgIHJldHVybiBEZXRlY3Rvcjtcbn0oKSk7XG5leHBvcnRzLmRlZmF1bHQgPSBEZXRlY3Rvcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURldGVjdG9yLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuLypcbiAqIENvcHlyaWdodCAyMDEwIFpYaW5nIGF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgUmVzdWx0XzEgPSByZXF1aXJlKFwiLi4vUmVzdWx0XCIpO1xudmFyIEJhcmNvZGVGb3JtYXRfMSA9IHJlcXVpcmUoXCIuLi9CYXJjb2RlRm9ybWF0XCIpO1xudmFyIERlY29kZUhpbnRUeXBlXzEgPSByZXF1aXJlKFwiLi4vRGVjb2RlSGludFR5cGVcIik7XG52YXIgUmVzdWx0TWV0YWRhdGFUeXBlXzEgPSByZXF1aXJlKFwiLi4vUmVzdWx0TWV0YWRhdGFUeXBlXCIpO1xudmFyIFN5c3RlbV8xID0gcmVxdWlyZShcIi4uL3V0aWwvU3lzdGVtXCIpO1xudmFyIERlY29kZXJfMSA9IHJlcXVpcmUoXCIuL2RlY29kZXIvRGVjb2RlclwiKTtcbnZhciBEZXRlY3Rvcl8xID0gcmVxdWlyZShcIi4vZGV0ZWN0b3IvRGV0ZWN0b3JcIik7XG4vLyBpbXBvcnQgamF2YS51dGlsLkxpc3Q7XG4vLyBpbXBvcnQgamF2YS51dGlsLk1hcDtcbi8qKlxuICogVGhpcyBpbXBsZW1lbnRhdGlvbiBjYW4gZGV0ZWN0IGFuZCBkZWNvZGUgQXp0ZWMgY29kZXMgaW4gYW4gaW1hZ2UuXG4gKlxuICogQGF1dGhvciBEYXZpZCBPbGl2aWVyXG4gKi9cbnZhciBBenRlY1JlYWRlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBBenRlY1JlYWRlcigpIHtcbiAgICB9XG4gICAgLyoqXG4gICAgICogTG9jYXRlcyBhbmQgZGVjb2RlcyBhIERhdGEgTWF0cml4IGNvZGUgaW4gYW4gaW1hZ2UuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIGEgU3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY29udGVudCBlbmNvZGVkIGJ5IHRoZSBEYXRhIE1hdHJpeCBjb2RlXG4gICAgICogQHRocm93cyBOb3RGb3VuZEV4Y2VwdGlvbiBpZiBhIERhdGEgTWF0cml4IGNvZGUgY2Fubm90IGJlIGZvdW5kXG4gICAgICogQHRocm93cyBGb3JtYXRFeGNlcHRpb24gaWYgYSBEYXRhIE1hdHJpeCBjb2RlIGNhbm5vdCBiZSBkZWNvZGVkXG4gICAgICovXG4gICAgQXp0ZWNSZWFkZXIucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uIChpbWFnZSwgaGludHMpIHtcbiAgICAgICAgaWYgKGhpbnRzID09PSB2b2lkIDApIHsgaGludHMgPSBudWxsOyB9XG4gICAgICAgIHZhciBleGNlcHRpb24gPSBudWxsO1xuICAgICAgICB2YXIgZGV0ZWN0b3IgPSBuZXcgRGV0ZWN0b3JfMS5kZWZhdWx0KGltYWdlLmdldEJsYWNrTWF0cml4KCkpO1xuICAgICAgICB2YXIgcG9pbnRzID0gbnVsbDtcbiAgICAgICAgdmFyIGRlY29kZXJSZXN1bHQgPSBudWxsO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdmFyIGRldGVjdG9yUmVzdWx0ID0gZGV0ZWN0b3IuZGV0ZWN0TWlycm9yKGZhbHNlKTtcbiAgICAgICAgICAgIHBvaW50cyA9IGRldGVjdG9yUmVzdWx0LmdldFBvaW50cygpO1xuICAgICAgICAgICAgdGhpcy5yZXBvcnRGb3VuZFJlc3VsdFBvaW50cyhoaW50cywgcG9pbnRzKTtcbiAgICAgICAgICAgIGRlY29kZXJSZXN1bHQgPSBuZXcgRGVjb2Rlcl8xLmRlZmF1bHQoKS5kZWNvZGUoZGV0ZWN0b3JSZXN1bHQpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICBleGNlcHRpb24gPSBlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkZWNvZGVyUmVzdWx0ID09IG51bGwpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdmFyIGRldGVjdG9yUmVzdWx0ID0gZGV0ZWN0b3IuZGV0ZWN0TWlycm9yKHRydWUpO1xuICAgICAgICAgICAgICAgIHBvaW50cyA9IGRldGVjdG9yUmVzdWx0LmdldFBvaW50cygpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVwb3J0Rm91bmRSZXN1bHRQb2ludHMoaGludHMsIHBvaW50cyk7XG4gICAgICAgICAgICAgICAgZGVjb2RlclJlc3VsdCA9IG5ldyBEZWNvZGVyXzEuZGVmYXVsdCgpLmRlY29kZShkZXRlY3RvclJlc3VsdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGlmIChleGNlcHRpb24gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBleGNlcHRpb247XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBSZXN1bHRfMS5kZWZhdWx0KGRlY29kZXJSZXN1bHQuZ2V0VGV4dCgpLCBkZWNvZGVyUmVzdWx0LmdldFJhd0J5dGVzKCksIGRlY29kZXJSZXN1bHQuZ2V0TnVtQml0cygpLCBwb2ludHMsIEJhcmNvZGVGb3JtYXRfMS5kZWZhdWx0LkFaVEVDLCBTeXN0ZW1fMS5kZWZhdWx0LmN1cnJlbnRUaW1lTWlsbGlzKCkpO1xuICAgICAgICB2YXIgYnl0ZVNlZ21lbnRzID0gZGVjb2RlclJlc3VsdC5nZXRCeXRlU2VnbWVudHMoKTtcbiAgICAgICAgaWYgKGJ5dGVTZWdtZW50cyAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXN1bHQucHV0TWV0YWRhdGEoUmVzdWx0TWV0YWRhdGFUeXBlXzEuZGVmYXVsdC5CWVRFX1NFR01FTlRTLCBieXRlU2VnbWVudHMpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBlY0xldmVsID0gZGVjb2RlclJlc3VsdC5nZXRFQ0xldmVsKCk7XG4gICAgICAgIGlmIChlY0xldmVsICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXRNZXRhZGF0YShSZXN1bHRNZXRhZGF0YVR5cGVfMS5kZWZhdWx0LkVSUk9SX0NPUlJFQ1RJT05fTEVWRUwsIGVjTGV2ZWwpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICBBenRlY1JlYWRlci5wcm90b3R5cGUucmVwb3J0Rm91bmRSZXN1bHRQb2ludHMgPSBmdW5jdGlvbiAoaGludHMsIHBvaW50cykge1xuICAgICAgICBpZiAoaGludHMgIT0gbnVsbCkge1xuICAgICAgICAgICAgdmFyIHJwY2JfMSA9IGhpbnRzLmdldChEZWNvZGVIaW50VHlwZV8xLmRlZmF1bHQuTkVFRF9SRVNVTFRfUE9JTlRfQ0FMTEJBQ0spO1xuICAgICAgICAgICAgaWYgKHJwY2JfMSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcG9pbnRzLmZvckVhY2goZnVuY3Rpb24gKHBvaW50LCBpZHgsIGFycikge1xuICAgICAgICAgICAgICAgICAgICBycGNiXzEuZm91bmRQb3NzaWJsZVJlc3VsdFBvaW50KHBvaW50KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgLy8gQE92ZXJyaWRlXG4gICAgQXp0ZWNSZWFkZXIucHJvdG90eXBlLnJlc2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBkbyBub3RoaW5nXG4gICAgfTtcbiAgICByZXR1cm4gQXp0ZWNSZWFkZXI7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gQXp0ZWNSZWFkZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BenRlY1JlYWRlci5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Ccm93c2VyQXp0ZWNDb2RlUmVhZGVyID0gdm9pZCAwO1xudmFyIEJyb3dzZXJDb2RlUmVhZGVyXzEgPSByZXF1aXJlKFwiLi9Ccm93c2VyQ29kZVJlYWRlclwiKTtcbnZhciBBenRlY1JlYWRlcl8xID0gcmVxdWlyZShcIi4uL2NvcmUvYXp0ZWMvQXp0ZWNSZWFkZXJcIik7XG4vKipcbiAqIEF6dGVjIENvZGUgcmVhZGVyIHRvIHVzZSBmcm9tIGJyb3dzZXIuXG4gKlxuICogQGNsYXNzIEJyb3dzZXJBenRlY0NvZGVSZWFkZXJcbiAqIEBleHRlbmRzIHtCcm93c2VyQ29kZVJlYWRlcn1cbiAqL1xudmFyIEJyb3dzZXJBenRlY0NvZGVSZWFkZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEJyb3dzZXJBenRlY0NvZGVSZWFkZXIsIF9zdXBlcik7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBCcm93c2VyQXp0ZWNDb2RlUmVhZGVyLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbdGltZUJldHdlZW5TY2Fuc01pbGxpcz01MDBdIHRoZSB0aW1lIGRlbGF5IGJldHdlZW4gc3Vic2VxdWVudCBkZWNvZGUgdHJpZXNcbiAgICAgKlxuICAgICAqIEBtZW1iZXJPZiBCcm93c2VyQXp0ZWNDb2RlUmVhZGVyXG4gICAgICovXG4gICAgZnVuY3Rpb24gQnJvd3NlckF6dGVjQ29kZVJlYWRlcih0aW1lQmV0d2VlblNjYW5zTWlsbGlzKSB7XG4gICAgICAgIGlmICh0aW1lQmV0d2VlblNjYW5zTWlsbGlzID09PSB2b2lkIDApIHsgdGltZUJldHdlZW5TY2Fuc01pbGxpcyA9IDUwMDsgfVxuICAgICAgICByZXR1cm4gX3N1cGVyLmNhbGwodGhpcywgbmV3IEF6dGVjUmVhZGVyXzEuZGVmYXVsdCgpLCB0aW1lQmV0d2VlblNjYW5zTWlsbGlzKSB8fCB0aGlzO1xuICAgIH1cbiAgICByZXR1cm4gQnJvd3NlckF6dGVjQ29kZVJlYWRlcjtcbn0oQnJvd3NlckNvZGVSZWFkZXJfMS5Ccm93c2VyQ29kZVJlYWRlcikpO1xuZXhwb3J0cy5Ccm93c2VyQXp0ZWNDb2RlUmVhZGVyID0gQnJvd3NlckF6dGVjQ29kZVJlYWRlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUJyb3dzZXJBenRlY0NvZGVSZWFkZXIuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IDIwMDggWlhpbmcgYXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBCaXRBcnJheV8xID0gcmVxdWlyZShcIi4uL2NvbW1vbi9CaXRBcnJheVwiKTtcbnZhciBEZWNvZGVIaW50VHlwZV8xID0gcmVxdWlyZShcIi4uL0RlY29kZUhpbnRUeXBlXCIpO1xudmFyIFJlc3VsdE1ldGFkYXRhVHlwZV8xID0gcmVxdWlyZShcIi4uL1Jlc3VsdE1ldGFkYXRhVHlwZVwiKTtcbnZhciBSZXN1bHRQb2ludF8xID0gcmVxdWlyZShcIi4uL1Jlc3VsdFBvaW50XCIpO1xudmFyIE5vdEZvdW5kRXhjZXB0aW9uXzEgPSByZXF1aXJlKFwiLi4vTm90Rm91bmRFeGNlcHRpb25cIik7XG4vKipcbiAqIEVuY2Fwc3VsYXRlcyBmdW5jdGlvbmFsaXR5IGFuZCBpbXBsZW1lbnRhdGlvbiB0aGF0IGlzIGNvbW1vbiB0byBhbGwgZmFtaWxpZXNcbiAqIG9mIG9uZS1kaW1lbnNpb25hbCBiYXJjb2Rlcy5cbiAqXG4gKiBAYXV0aG9yIGRzd2l0a2luQGdvb2dsZS5jb20gKERhbmllbCBTd2l0a2luKVxuICogQGF1dGhvciBTZWFuIE93ZW5cbiAqL1xudmFyIE9uZURSZWFkZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gT25lRFJlYWRlcigpIHtcbiAgICB9XG4gICAgLypcbiAgICBAT3ZlcnJpZGVcbiAgICBwdWJsaWMgUmVzdWx0IGRlY29kZShCaW5hcnlCaXRtYXAgaW1hZ2UpIHRocm93cyBOb3RGb3VuZEV4Y2VwdGlvbiwgRm9ybWF0RXhjZXB0aW9uIHtcbiAgICAgIHJldHVybiBkZWNvZGUoaW1hZ2UsIG51bGwpO1xuICAgIH1cbiAgICAqL1xuICAgIC8vIE5vdGUgdGhhdCB3ZSBkb24ndCB0cnkgcm90YXRpb24gd2l0aG91dCB0aGUgdHJ5IGhhcmRlciBmbGFnLCBldmVuIGlmIHJvdGF0aW9uIHdhcyBzdXBwb3J0ZWQuXG4gICAgLy8gQE92ZXJyaWRlXG4gICAgT25lRFJlYWRlci5wcm90b3R5cGUuZGVjb2RlID0gZnVuY3Rpb24gKGltYWdlLCBoaW50cykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG9EZWNvZGUoaW1hZ2UsIGhpbnRzKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAobmZlKSB7XG4gICAgICAgICAgICB2YXIgdHJ5SGFyZGVyID0gaGludHMgJiYgKGhpbnRzLmdldChEZWNvZGVIaW50VHlwZV8xLmRlZmF1bHQuVFJZX0hBUkRFUikgPT09IHRydWUpO1xuICAgICAgICAgICAgaWYgKHRyeUhhcmRlciAmJiBpbWFnZS5pc1JvdGF0ZVN1cHBvcnRlZCgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJvdGF0ZWRJbWFnZSA9IGltYWdlLnJvdGF0ZUNvdW50ZXJDbG9ja3dpc2UoKTtcbiAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5kb0RlY29kZShyb3RhdGVkSW1hZ2UsIGhpbnRzKTtcbiAgICAgICAgICAgICAgICAvLyBSZWNvcmQgdGhhdCB3ZSBmb3VuZCBpdCByb3RhdGVkIDkwIGRlZ3JlZXMgQ0NXIC8gMjcwIGRlZ3JlZXMgQ1dcbiAgICAgICAgICAgICAgICB2YXIgbWV0YWRhdGEgPSByZXN1bHQuZ2V0UmVzdWx0TWV0YWRhdGEoKTtcbiAgICAgICAgICAgICAgICB2YXIgb3JpZW50YXRpb25fMSA9IDI3MDtcbiAgICAgICAgICAgICAgICBpZiAobWV0YWRhdGEgIT09IG51bGwgJiYgKG1ldGFkYXRhLmdldChSZXN1bHRNZXRhZGF0YVR5cGVfMS5kZWZhdWx0Lk9SSUVOVEFUSU9OKSA9PT0gdHJ1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQnV0IGlmIHdlIGZvdW5kIGl0IHJldmVyc2VkIGluIGRvRGVjb2RlKCksIGFkZCBpbiB0aGF0IHJlc3VsdCBoZXJlOlxuICAgICAgICAgICAgICAgICAgICBvcmllbnRhdGlvbl8xID0gKG9yaWVudGF0aW9uXzEgKyBtZXRhZGF0YS5nZXQoUmVzdWx0TWV0YWRhdGFUeXBlXzEuZGVmYXVsdC5PUklFTlRBVElPTikgJSAzNjApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXN1bHQucHV0TWV0YWRhdGEoUmVzdWx0TWV0YWRhdGFUeXBlXzEuZGVmYXVsdC5PUklFTlRBVElPTiwgb3JpZW50YXRpb25fMSk7XG4gICAgICAgICAgICAgICAgLy8gVXBkYXRlIHJlc3VsdCBwb2ludHNcbiAgICAgICAgICAgICAgICB2YXIgcG9pbnRzID0gcmVzdWx0LmdldFJlc3VsdFBvaW50cygpO1xuICAgICAgICAgICAgICAgIGlmIChwb2ludHMgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGhlaWdodCA9IHJvdGF0ZWRJbWFnZS5nZXRIZWlnaHQoKTtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50c1tpXSA9IG5ldyBSZXN1bHRQb2ludF8xLmRlZmF1bHQoaGVpZ2h0IC0gcG9pbnRzW2ldLmdldFkoKSAtIDEsIHBvaW50c1tpXS5nZXRYKCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIEBPdmVycmlkZVxuICAgIE9uZURSZWFkZXIucHJvdG90eXBlLnJlc2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBkbyBub3RoaW5nXG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBXZSdyZSBnb2luZyB0byBleGFtaW5lIHJvd3MgZnJvbSB0aGUgbWlkZGxlIG91dHdhcmQsIHNlYXJjaGluZyBhbHRlcm5hdGVseSBhYm92ZSBhbmQgYmVsb3cgdGhlXG4gICAgICogbWlkZGxlLCBhbmQgZmFydGhlciBvdXQgZWFjaCB0aW1lLiByb3dTdGVwIGlzIHRoZSBudW1iZXIgb2Ygcm93cyBiZXR3ZWVuIGVhY2ggc3VjY2Vzc2l2ZVxuICAgICAqIGF0dGVtcHQgYWJvdmUgYW5kIGJlbG93IHRoZSBtaWRkbGUuIFNvIHdlJ2Qgc2NhbiByb3cgbWlkZGxlLCB0aGVuIG1pZGRsZSAtIHJvd1N0ZXAsIHRoZW5cbiAgICAgKiBtaWRkbGUgKyByb3dTdGVwLCB0aGVuIG1pZGRsZSAtICgyICogcm93U3RlcCksIGV0Yy5cbiAgICAgKiByb3dTdGVwIGlzIGJpZ2dlciBhcyB0aGUgaW1hZ2UgaXMgdGFsbGVyLCBidXQgaXMgYWx3YXlzIGF0IGxlYXN0IDEuIFdlJ3ZlIHNvbWV3aGF0IGFyYml0cmFyaWx5XG4gICAgICogZGVjaWRlZCB0aGF0IG1vdmluZyB1cCBhbmQgZG93biBieSBhYm91dCAxLzE2IG9mIHRoZSBpbWFnZSBpcyBwcmV0dHkgZ29vZDsgd2UgdHJ5IG1vcmUgb2YgdGhlXG4gICAgICogaW1hZ2UgaWYgXCJ0cnlpbmcgaGFyZGVyXCIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaW1hZ2UgVGhlIGltYWdlIHRvIGRlY29kZVxuICAgICAqIEBwYXJhbSBoaW50cyBBbnkgaGludHMgdGhhdCB3ZXJlIHJlcXVlc3RlZFxuICAgICAqIEByZXR1cm4gVGhlIGNvbnRlbnRzIG9mIHRoZSBkZWNvZGVkIGJhcmNvZGVcbiAgICAgKiBAdGhyb3dzIE5vdEZvdW5kRXhjZXB0aW9uIEFueSBzcG9udGFuZW91cyBlcnJvcnMgd2hpY2ggb2NjdXJcbiAgICAgKi9cbiAgICBPbmVEUmVhZGVyLnByb3RvdHlwZS5kb0RlY29kZSA9IGZ1bmN0aW9uIChpbWFnZSwgaGludHMpIHtcbiAgICAgICAgdmFyIHdpZHRoID0gaW1hZ2UuZ2V0V2lkdGgoKTtcbiAgICAgICAgdmFyIGhlaWdodCA9IGltYWdlLmdldEhlaWdodCgpO1xuICAgICAgICB2YXIgcm93ID0gbmV3IEJpdEFycmF5XzEuZGVmYXVsdCh3aWR0aCk7XG4gICAgICAgIHZhciB0cnlIYXJkZXIgPSBoaW50cyAmJiAoaGludHMuZ2V0KERlY29kZUhpbnRUeXBlXzEuZGVmYXVsdC5UUllfSEFSREVSKSA9PT0gdHJ1ZSk7XG4gICAgICAgIHZhciByb3dTdGVwID0gTWF0aC5tYXgoMSwgaGVpZ2h0ID4+ICh0cnlIYXJkZXIgPyA4IDogNSkpO1xuICAgICAgICB2YXIgbWF4TGluZXM7XG4gICAgICAgIGlmICh0cnlIYXJkZXIpIHtcbiAgICAgICAgICAgIG1heExpbmVzID0gaGVpZ2h0OyAvLyBMb29rIGF0IHRoZSB3aG9sZSBpbWFnZSwgbm90IGp1c3QgdGhlIGNlbnRlclxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbWF4TGluZXMgPSAxNTsgLy8gMTUgcm93cyBzcGFjZWQgMS8zMiBhcGFydCBpcyByb3VnaGx5IHRoZSBtaWRkbGUgaGFsZiBvZiB0aGUgaW1hZ2VcbiAgICAgICAgfVxuICAgICAgICB2YXIgbWlkZGxlID0gTWF0aC50cnVuYyhoZWlnaHQgLyAyKTtcbiAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCBtYXhMaW5lczsgeCsrKSB7XG4gICAgICAgICAgICAvLyBTY2FubmluZyBmcm9tIHRoZSBtaWRkbGUgb3V0LiBEZXRlcm1pbmUgd2hpY2ggcm93IHdlJ3JlIGxvb2tpbmcgYXQgbmV4dDpcbiAgICAgICAgICAgIHZhciByb3dTdGVwc0Fib3ZlT3JCZWxvdyA9IE1hdGgudHJ1bmMoKHggKyAxKSAvIDIpO1xuICAgICAgICAgICAgdmFyIGlzQWJvdmUgPSAoeCAmIDB4MDEpID09PSAwOyAvLyBpLmUuIGlzIHggZXZlbj9cbiAgICAgICAgICAgIHZhciByb3dOdW1iZXIgPSBtaWRkbGUgKyByb3dTdGVwICogKGlzQWJvdmUgPyByb3dTdGVwc0Fib3ZlT3JCZWxvdyA6IC1yb3dTdGVwc0Fib3ZlT3JCZWxvdyk7XG4gICAgICAgICAgICBpZiAocm93TnVtYmVyIDwgMCB8fCByb3dOdW1iZXIgPj0gaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgLy8gT29wcywgaWYgd2UgcnVuIG9mZiB0aGUgdG9wIG9yIGJvdHRvbSwgc3RvcFxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gRXN0aW1hdGUgYmxhY2sgcG9pbnQgZm9yIHRoaXMgcm93IGFuZCBsb2FkIGl0OlxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByb3cgPSBpbWFnZS5nZXRCbGFja1Jvdyhyb3dOdW1iZXIsIHJvdyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoaWdub3JlZCkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIF9sb29wXzEgPSBmdW5jdGlvbiAoYXR0ZW1wdCkge1xuICAgICAgICAgICAgICAgIGlmIChhdHRlbXB0ID09PSAxKSB7IC8vIHRyeWluZyBhZ2Fpbj9cbiAgICAgICAgICAgICAgICAgICAgcm93LnJldmVyc2UoKTsgLy8gcmV2ZXJzZSB0aGUgcm93IGFuZCBjb250aW51ZVxuICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIG1lYW5zIHdlIHdpbGwgb25seSBldmVyIGRyYXcgcmVzdWx0IHBvaW50cyAqb25jZSogaW4gdGhlIGxpZmUgb2YgdGhpcyBtZXRob2RcbiAgICAgICAgICAgICAgICAgICAgLy8gc2luY2Ugd2Ugd2FudCB0byBhdm9pZCBkcmF3aW5nIHRoZSB3cm9uZyBwb2ludHMgYWZ0ZXIgZmxpcHBpbmcgdGhlIHJvdywgYW5kLFxuICAgICAgICAgICAgICAgICAgICAvLyBkb24ndCB3YW50IHRvIGNsdXR0ZXIgd2l0aCBub2lzZSBmcm9tIGV2ZXJ5IHNpbmdsZSByb3cgc2NhbiAtLSBqdXN0IHRoZSBzY2Fuc1xuICAgICAgICAgICAgICAgICAgICAvLyB0aGF0IHN0YXJ0IG9uIHRoZSBjZW50ZXIgbGluZS5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGhpbnRzICYmIChoaW50cy5nZXQoRGVjb2RlSGludFR5cGVfMS5kZWZhdWx0Lk5FRURfUkVTVUxUX1BPSU5UX0NBTExCQUNLKSA9PT0gdHJ1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuZXdIaW50c18xID0gbmV3IE1hcCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaGludHMuZm9yRWFjaChmdW5jdGlvbiAoaGludCwga2V5KSB7IHJldHVybiBuZXdIaW50c18xLnNldChrZXksIGhpbnQpOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld0hpbnRzXzEuZGVsZXRlKERlY29kZUhpbnRUeXBlXzEuZGVmYXVsdC5ORUVEX1JFU1VMVF9QT0lOVF9DQUxMQkFDSyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBoaW50cyA9IG5ld0hpbnRzXzE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTG9vayBmb3IgYSBiYXJjb2RlXG4gICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSB0aGlzXzEuZGVjb2RlUm93KHJvd051bWJlciwgcm93LCBoaW50cyk7XG4gICAgICAgICAgICAgICAgICAgIC8vIFdlIGZvdW5kIG91ciBiYXJjb2RlXG4gICAgICAgICAgICAgICAgICAgIGlmIChhdHRlbXB0ID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBCdXQgaXQgd2FzIHVwc2lkZSBkb3duLCBzbyBub3RlIHRoYXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXRNZXRhZGF0YShSZXN1bHRNZXRhZGF0YVR5cGVfMS5kZWZhdWx0Lk9SSUVOVEFUSU9OLCAxODApO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQW5kIHJlbWVtYmVyIHRvIGZsaXAgdGhlIHJlc3VsdCBwb2ludHMgaG9yaXpvbnRhbGx5LlxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBvaW50cyA9IHJlc3VsdC5nZXRSZXN1bHRQb2ludHMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwb2ludHMgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludHNbMF0gPSBuZXcgUmVzdWx0UG9pbnRfMS5kZWZhdWx0KHdpZHRoIC0gcG9pbnRzWzBdLmdldFgoKSAtIDEsIHBvaW50c1swXS5nZXRZKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50c1sxXSA9IG5ldyBSZXN1bHRQb2ludF8xLmRlZmF1bHQod2lkdGggLSBwb2ludHNbMV0uZ2V0WCgpIC0gMSwgcG9pbnRzWzFdLmdldFkoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IHJlc3VsdCB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAocmUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gY29udGludWUgLS0ganVzdCBjb3VsZG4ndCBkZWNvZGUgdGhpcyByb3dcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdmFyIHRoaXNfMSA9IHRoaXM7XG4gICAgICAgICAgICAvLyBXaGlsZSB3ZSBoYXZlIHRoZSBpbWFnZSBkYXRhIGluIGEgQml0QXJyYXksIGl0J3MgZmFpcmx5IGNoZWFwIHRvIHJldmVyc2UgaXQgaW4gcGxhY2UgdG9cbiAgICAgICAgICAgIC8vIGhhbmRsZSBkZWNvZGluZyB1cHNpZGUgZG93biBiYXJjb2Rlcy5cbiAgICAgICAgICAgIGZvciAodmFyIGF0dGVtcHQgPSAwOyBhdHRlbXB0IDwgMjsgYXR0ZW1wdCsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIHN0YXRlXzEgPSBfbG9vcF8xKGF0dGVtcHQpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygc3RhdGVfMSA9PT0gXCJvYmplY3RcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRlXzEudmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogUmVjb3JkcyB0aGUgc2l6ZSBvZiBzdWNjZXNzaXZlIHJ1bnMgb2Ygd2hpdGUgYW5kIGJsYWNrIHBpeGVscyBpbiBhIHJvdywgc3RhcnRpbmcgYXQgYSBnaXZlbiBwb2ludC5cbiAgICAgKiBUaGUgdmFsdWVzIGFyZSByZWNvcmRlZCBpbiB0aGUgZ2l2ZW4gYXJyYXksIGFuZCB0aGUgbnVtYmVyIG9mIHJ1bnMgcmVjb3JkZWQgaXMgZXF1YWwgdG8gdGhlIHNpemVcbiAgICAgKiBvZiB0aGUgYXJyYXkuIElmIHRoZSByb3cgc3RhcnRzIG9uIGEgd2hpdGUgcGl4ZWwgYXQgdGhlIGdpdmVuIHN0YXJ0IHBvaW50LCB0aGVuIHRoZSBmaXJzdCBjb3VudFxuICAgICAqIHJlY29yZGVkIGlzIHRoZSBydW4gb2Ygd2hpdGUgcGl4ZWxzIHN0YXJ0aW5nIGZyb20gdGhhdCBwb2ludDsgbGlrZXdpc2UgaXQgaXMgdGhlIGNvdW50IG9mIGEgcnVuXG4gICAgICogb2YgYmxhY2sgcGl4ZWxzIGlmIHRoZSByb3cgYmVnaW4gb24gYSBibGFjayBwaXhlbHMgYXQgdGhhdCBwb2ludC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByb3cgcm93IHRvIGNvdW50IGZyb21cbiAgICAgKiBAcGFyYW0gc3RhcnQgb2Zmc2V0IGludG8gcm93IHRvIHN0YXJ0IGF0XG4gICAgICogQHBhcmFtIGNvdW50ZXJzIGFycmF5IGludG8gd2hpY2ggdG8gcmVjb3JkIGNvdW50c1xuICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb24gaWYgY291bnRlcnMgY2Fubm90IGJlIGZpbGxlZCBlbnRpcmVseSBmcm9tIHJvdyBiZWZvcmUgcnVubmluZyBvdXRcbiAgICAgKiAgb2YgcGl4ZWxzXG4gICAgICovXG4gICAgT25lRFJlYWRlci5yZWNvcmRQYXR0ZXJuID0gZnVuY3Rpb24gKHJvdywgc3RhcnQsIGNvdW50ZXJzKSB7XG4gICAgICAgIHZhciBudW1Db3VudGVycyA9IGNvdW50ZXJzLmxlbmd0aDtcbiAgICAgICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IG51bUNvdW50ZXJzOyBpbmRleCsrKVxuICAgICAgICAgICAgY291bnRlcnNbaW5kZXhdID0gMDtcbiAgICAgICAgdmFyIGVuZCA9IHJvdy5nZXRTaXplKCk7XG4gICAgICAgIGlmIChzdGFydCA+PSBlbmQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgaXNXaGl0ZSA9ICFyb3cuZ2V0KHN0YXJ0KTtcbiAgICAgICAgdmFyIGNvdW50ZXJQb3NpdGlvbiA9IDA7XG4gICAgICAgIHZhciBpID0gc3RhcnQ7XG4gICAgICAgIHdoaWxlIChpIDwgZW5kKSB7XG4gICAgICAgICAgICBpZiAocm93LmdldChpKSAhPT0gaXNXaGl0ZSkge1xuICAgICAgICAgICAgICAgIGNvdW50ZXJzW2NvdW50ZXJQb3NpdGlvbl0rKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICgrK2NvdW50ZXJQb3NpdGlvbiA9PT0gbnVtQ291bnRlcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb3VudGVyc1tjb3VudGVyUG9zaXRpb25dID0gMTtcbiAgICAgICAgICAgICAgICAgICAgaXNXaGl0ZSA9ICFpc1doaXRlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGkrKztcbiAgICAgICAgfVxuICAgICAgICAvLyBJZiB3ZSByZWFkIGZ1bGx5IHRoZSBsYXN0IHNlY3Rpb24gb2YgcGl4ZWxzIGFuZCBmaWxsZWQgdXAgb3VyIGNvdW50ZXJzIC0tIG9yIGZpbGxlZFxuICAgICAgICAvLyB0aGUgbGFzdCBjb3VudGVyIGJ1dCByYW4gb2ZmIHRoZSBzaWRlIG9mIHRoZSBpbWFnZSwgT0suIE90aGVyd2lzZSwgYSBwcm9ibGVtLlxuICAgICAgICBpZiAoIShjb3VudGVyUG9zaXRpb24gPT09IG51bUNvdW50ZXJzIHx8IChjb3VudGVyUG9zaXRpb24gPT09IG51bUNvdW50ZXJzIC0gMSAmJiBpID09PSBlbmQpKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBPbmVEUmVhZGVyLnJlY29yZFBhdHRlcm5JblJldmVyc2UgPSBmdW5jdGlvbiAocm93LCBzdGFydCwgY291bnRlcnMpIHtcbiAgICAgICAgLy8gVGhpcyBjb3VsZCBiZSBtb3JlIGVmZmljaWVudCBJIGd1ZXNzXG4gICAgICAgIHZhciBudW1UcmFuc2l0aW9uc0xlZnQgPSBjb3VudGVycy5sZW5ndGg7XG4gICAgICAgIHZhciBsYXN0ID0gcm93LmdldChzdGFydCk7XG4gICAgICAgIHdoaWxlIChzdGFydCA+IDAgJiYgbnVtVHJhbnNpdGlvbnNMZWZ0ID49IDApIHtcbiAgICAgICAgICAgIGlmIChyb3cuZ2V0KC0tc3RhcnQpICE9PSBsYXN0KSB7XG4gICAgICAgICAgICAgICAgbnVtVHJhbnNpdGlvbnNMZWZ0LS07XG4gICAgICAgICAgICAgICAgbGFzdCA9ICFsYXN0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChudW1UcmFuc2l0aW9uc0xlZnQgPj0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIE9uZURSZWFkZXIucmVjb3JkUGF0dGVybihyb3csIHN0YXJ0ICsgMSwgY291bnRlcnMpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lcyBob3cgY2xvc2VseSBhIHNldCBvZiBvYnNlcnZlZCBjb3VudHMgb2YgcnVucyBvZiBibGFjay93aGl0ZSB2YWx1ZXMgbWF0Y2hlcyBhIGdpdmVuXG4gICAgICogdGFyZ2V0IHBhdHRlcm4uIFRoaXMgaXMgcmVwb3J0ZWQgYXMgdGhlIHJhdGlvIG9mIHRoZSB0b3RhbCB2YXJpYW5jZSBmcm9tIHRoZSBleHBlY3RlZCBwYXR0ZXJuXG4gICAgICogcHJvcG9ydGlvbnMgYWNyb3NzIGFsbCBwYXR0ZXJuIGVsZW1lbnRzLCB0byB0aGUgbGVuZ3RoIG9mIHRoZSBwYXR0ZXJuLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvdW50ZXJzIG9ic2VydmVkIGNvdW50ZXJzXG4gICAgICogQHBhcmFtIHBhdHRlcm4gZXhwZWN0ZWQgcGF0dGVyblxuICAgICAqIEBwYXJhbSBtYXhJbmRpdmlkdWFsVmFyaWFuY2UgVGhlIG1vc3QgYW55IGNvdW50ZXIgY2FuIGRpZmZlciBiZWZvcmUgd2UgZ2l2ZSB1cFxuICAgICAqIEByZXR1cm4gcmF0aW8gb2YgdG90YWwgdmFyaWFuY2UgYmV0d2VlbiBjb3VudGVycyBhbmQgcGF0dGVybiBjb21wYXJlZCB0byB0b3RhbCBwYXR0ZXJuIHNpemVcbiAgICAgKi9cbiAgICBPbmVEUmVhZGVyLnBhdHRlcm5NYXRjaFZhcmlhbmNlID0gZnVuY3Rpb24gKGNvdW50ZXJzLCBwYXR0ZXJuLCBtYXhJbmRpdmlkdWFsVmFyaWFuY2UpIHtcbiAgICAgICAgdmFyIG51bUNvdW50ZXJzID0gY291bnRlcnMubGVuZ3RoO1xuICAgICAgICB2YXIgdG90YWwgPSAwO1xuICAgICAgICB2YXIgcGF0dGVybkxlbmd0aCA9IDA7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtQ291bnRlcnM7IGkrKykge1xuICAgICAgICAgICAgdG90YWwgKz0gY291bnRlcnNbaV07XG4gICAgICAgICAgICBwYXR0ZXJuTGVuZ3RoICs9IHBhdHRlcm5baV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRvdGFsIDwgcGF0dGVybkxlbmd0aCkge1xuICAgICAgICAgICAgLy8gSWYgd2UgZG9uJ3QgZXZlbiBoYXZlIG9uZSBwaXhlbCBwZXIgdW5pdCBvZiBiYXIgd2lkdGgsIGFzc3VtZSB0aGlzIGlzIHRvbyBzbWFsbFxuICAgICAgICAgICAgLy8gdG8gcmVsaWFibHkgbWF0Y2gsIHNvIGZhaWw6XG4gICAgICAgICAgICByZXR1cm4gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO1xuICAgICAgICB9XG4gICAgICAgIHZhciB1bml0QmFyV2lkdGggPSB0b3RhbCAvIHBhdHRlcm5MZW5ndGg7XG4gICAgICAgIG1heEluZGl2aWR1YWxWYXJpYW5jZSAqPSB1bml0QmFyV2lkdGg7XG4gICAgICAgIHZhciB0b3RhbFZhcmlhbmNlID0gMC4wO1xuICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IG51bUNvdW50ZXJzOyB4KyspIHtcbiAgICAgICAgICAgIHZhciBjb3VudGVyID0gY291bnRlcnNbeF07XG4gICAgICAgICAgICB2YXIgc2NhbGVkUGF0dGVybiA9IHBhdHRlcm5beF0gKiB1bml0QmFyV2lkdGg7XG4gICAgICAgICAgICB2YXIgdmFyaWFuY2UgPSBjb3VudGVyID4gc2NhbGVkUGF0dGVybiA/IGNvdW50ZXIgLSBzY2FsZWRQYXR0ZXJuIDogc2NhbGVkUGF0dGVybiAtIGNvdW50ZXI7XG4gICAgICAgICAgICBpZiAodmFyaWFuY2UgPiBtYXhJbmRpdmlkdWFsVmFyaWFuY2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdG90YWxWYXJpYW5jZSArPSB2YXJpYW5jZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdG90YWxWYXJpYW5jZSAvIHRvdGFsO1xuICAgIH07XG4gICAgcmV0dXJuIE9uZURSZWFkZXI7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gT25lRFJlYWRlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU9uZURSZWFkZXIuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IDIwMDggWlhpbmcgYXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLypuYW1lc3BhY2UgY29tLmdvb2dsZS56eGluZy5vbmVkIHsqL1xudmFyIEJhcmNvZGVGb3JtYXRfMSA9IHJlcXVpcmUoXCIuLi9CYXJjb2RlRm9ybWF0XCIpO1xudmFyIENoZWNrc3VtRXhjZXB0aW9uXzEgPSByZXF1aXJlKFwiLi4vQ2hlY2tzdW1FeGNlcHRpb25cIik7XG52YXIgRGVjb2RlSGludFR5cGVfMSA9IHJlcXVpcmUoXCIuLi9EZWNvZGVIaW50VHlwZVwiKTtcbnZhciBGb3JtYXRFeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuLi9Gb3JtYXRFeGNlcHRpb25cIik7XG52YXIgTm90Rm91bmRFeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuLi9Ob3RGb3VuZEV4Y2VwdGlvblwiKTtcbi8vIGltcG9ydCBSZWFkZXIgZnJvbSAnLi4vUmVhZGVyJztcbnZhciBSZXN1bHRfMSA9IHJlcXVpcmUoXCIuLi9SZXN1bHRcIik7XG4vLyBpbXBvcnQgUmVzdWx0TWV0YWRhdGFUeXBlIGZyb20gJy4uL1Jlc3VsdE1ldGFkYXRhVHlwZSc7XG52YXIgUmVzdWx0UG9pbnRfMSA9IHJlcXVpcmUoXCIuLi9SZXN1bHRQb2ludFwiKTtcbnZhciBPbmVEUmVhZGVyXzEgPSByZXF1aXJlKFwiLi9PbmVEUmVhZGVyXCIpO1xuLyoqXG4gKiA8cD5EZWNvZGVzIENvZGUgMTI4IGJhcmNvZGVzLjwvcD5cbiAqXG4gKiBAYXV0aG9yIFNlYW4gT3dlblxuICovXG52YXIgQ29kZTEyOFJlYWRlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQ29kZTEyOFJlYWRlciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBDb2RlMTI4UmVhZGVyKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIENvZGUxMjhSZWFkZXIuZmluZFN0YXJ0UGF0dGVybiA9IGZ1bmN0aW9uIChyb3cpIHtcbiAgICAgICAgdmFyIHdpZHRoID0gcm93LmdldFNpemUoKTtcbiAgICAgICAgdmFyIHJvd09mZnNldCA9IHJvdy5nZXROZXh0U2V0KDApO1xuICAgICAgICB2YXIgY291bnRlclBvc2l0aW9uID0gMDtcbiAgICAgICAgdmFyIGNvdW50ZXJzID0gSW50MzJBcnJheS5mcm9tKFswLCAwLCAwLCAwLCAwLCAwXSk7XG4gICAgICAgIHZhciBwYXR0ZXJuU3RhcnQgPSByb3dPZmZzZXQ7XG4gICAgICAgIHZhciBpc1doaXRlID0gZmFsc2U7XG4gICAgICAgIHZhciBwYXR0ZXJuTGVuZ3RoID0gNjtcbiAgICAgICAgZm9yICh2YXIgaSA9IHJvd09mZnNldDsgaSA8IHdpZHRoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChyb3cuZ2V0KGkpICE9PSBpc1doaXRlKSB7XG4gICAgICAgICAgICAgICAgY291bnRlcnNbY291bnRlclBvc2l0aW9uXSsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGNvdW50ZXJQb3NpdGlvbiA9PT0gKHBhdHRlcm5MZW5ndGggLSAxKSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgYmVzdFZhcmlhbmNlID0gQ29kZTEyOFJlYWRlci5NQVhfQVZHX1ZBUklBTkNFO1xuICAgICAgICAgICAgICAgICAgICB2YXIgYmVzdE1hdGNoID0gLTE7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHN0YXJ0Q29kZSA9IENvZGUxMjhSZWFkZXIuQ09ERV9TVEFSVF9BOyBzdGFydENvZGUgPD0gQ29kZTEyOFJlYWRlci5DT0RFX1NUQVJUX0M7IHN0YXJ0Q29kZSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmFyaWFuY2UgPSBPbmVEUmVhZGVyXzEuZGVmYXVsdC5wYXR0ZXJuTWF0Y2hWYXJpYW5jZShjb3VudGVycywgQ29kZTEyOFJlYWRlci5DT0RFX1BBVFRFUk5TW3N0YXJ0Q29kZV0sIENvZGUxMjhSZWFkZXIuTUFYX0lORElWSURVQUxfVkFSSUFOQ0UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhcmlhbmNlIDwgYmVzdFZhcmlhbmNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVzdFZhcmlhbmNlID0gdmFyaWFuY2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVzdE1hdGNoID0gc3RhcnRDb2RlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIExvb2sgZm9yIHdoaXRlc3BhY2UgYmVmb3JlIHN0YXJ0IHBhdHRlcm4sID49IDUwJSBvZiB3aWR0aCBvZiBzdGFydCBwYXR0ZXJuXG4gICAgICAgICAgICAgICAgICAgIGlmIChiZXN0TWF0Y2ggPj0gMCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgcm93LmlzUmFuZ2UoTWF0aC5tYXgoMCwgcGF0dGVyblN0YXJ0IC0gKGkgLSBwYXR0ZXJuU3RhcnQpIC8gMiksIHBhdHRlcm5TdGFydCwgZmFsc2UpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSW50MzJBcnJheS5mcm9tKFtwYXR0ZXJuU3RhcnQsIGksIGJlc3RNYXRjaF0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHBhdHRlcm5TdGFydCArPSBjb3VudGVyc1swXSArIGNvdW50ZXJzWzFdO1xuICAgICAgICAgICAgICAgICAgICBjb3VudGVycyA9IGNvdW50ZXJzLnNsaWNlKDIsIGNvdW50ZXJzLmxlbmd0aCAtIDEpO1xuICAgICAgICAgICAgICAgICAgICBjb3VudGVyc1tjb3VudGVyUG9zaXRpb24gLSAxXSA9IDA7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50ZXJzW2NvdW50ZXJQb3NpdGlvbl0gPSAwO1xuICAgICAgICAgICAgICAgICAgICBjb3VudGVyUG9zaXRpb24tLTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50ZXJQb3NpdGlvbisrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb3VudGVyc1tjb3VudGVyUG9zaXRpb25dID0gMTtcbiAgICAgICAgICAgICAgICBpc1doaXRlID0gIWlzV2hpdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgIH07XG4gICAgQ29kZTEyOFJlYWRlci5kZWNvZGVDb2RlID0gZnVuY3Rpb24gKHJvdywgY291bnRlcnMsIHJvd09mZnNldCkge1xuICAgICAgICBPbmVEUmVhZGVyXzEuZGVmYXVsdC5yZWNvcmRQYXR0ZXJuKHJvdywgcm93T2Zmc2V0LCBjb3VudGVycyk7XG4gICAgICAgIHZhciBiZXN0VmFyaWFuY2UgPSBDb2RlMTI4UmVhZGVyLk1BWF9BVkdfVkFSSUFOQ0U7IC8vIHdvcnN0IHZhcmlhbmNlIHdlJ2xsIGFjY2VwdFxuICAgICAgICB2YXIgYmVzdE1hdGNoID0gLTE7XG4gICAgICAgIGZvciAodmFyIGQgPSAwOyBkIDwgQ29kZTEyOFJlYWRlci5DT0RFX1BBVFRFUk5TLmxlbmd0aDsgZCsrKSB7XG4gICAgICAgICAgICB2YXIgcGF0dGVybiA9IENvZGUxMjhSZWFkZXIuQ09ERV9QQVRURVJOU1tkXTtcbiAgICAgICAgICAgIHZhciB2YXJpYW5jZSA9IHRoaXMucGF0dGVybk1hdGNoVmFyaWFuY2UoY291bnRlcnMsIHBhdHRlcm4sIENvZGUxMjhSZWFkZXIuTUFYX0lORElWSURVQUxfVkFSSUFOQ0UpO1xuICAgICAgICAgICAgaWYgKHZhcmlhbmNlIDwgYmVzdFZhcmlhbmNlKSB7XG4gICAgICAgICAgICAgICAgYmVzdFZhcmlhbmNlID0gdmFyaWFuY2U7XG4gICAgICAgICAgICAgICAgYmVzdE1hdGNoID0gZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBUT0RPIFdlJ3JlIG92ZXJsb29raW5nIHRoZSBmYWN0IHRoYXQgdGhlIFNUT1AgcGF0dGVybiBoYXMgNyB2YWx1ZXMsIG5vdCA2LlxuICAgICAgICBpZiAoYmVzdE1hdGNoID49IDApIHtcbiAgICAgICAgICAgIHJldHVybiBiZXN0TWF0Y2g7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIENvZGUxMjhSZWFkZXIucHJvdG90eXBlLmRlY29kZVJvdyA9IGZ1bmN0aW9uIChyb3dOdW1iZXIsIHJvdywgaGludHMpIHtcbiAgICAgICAgdmFyIGNvbnZlcnRGTkMxID0gaGludHMgJiYgKGhpbnRzLmdldChEZWNvZGVIaW50VHlwZV8xLmRlZmF1bHQuQVNTVU1FX0dTMSkgPT09IHRydWUpO1xuICAgICAgICB2YXIgc3RhcnRQYXR0ZXJuSW5mbyA9IENvZGUxMjhSZWFkZXIuZmluZFN0YXJ0UGF0dGVybihyb3cpO1xuICAgICAgICB2YXIgc3RhcnRDb2RlID0gc3RhcnRQYXR0ZXJuSW5mb1syXTtcbiAgICAgICAgdmFyIGN1cnJlbnRSYXdDb2Rlc0luZGV4ID0gMDtcbiAgICAgICAgdmFyIHJhd0NvZGVzID0gbmV3IFVpbnQ4QXJyYXkoMjApO1xuICAgICAgICByYXdDb2Rlc1tjdXJyZW50UmF3Q29kZXNJbmRleCsrXSA9IHN0YXJ0Q29kZTtcbiAgICAgICAgdmFyIGNvZGVTZXQ7XG4gICAgICAgIHN3aXRjaCAoc3RhcnRDb2RlKSB7XG4gICAgICAgICAgICBjYXNlIENvZGUxMjhSZWFkZXIuQ09ERV9TVEFSVF9BOlxuICAgICAgICAgICAgICAgIGNvZGVTZXQgPSBDb2RlMTI4UmVhZGVyLkNPREVfQ09ERV9BO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBDb2RlMTI4UmVhZGVyLkNPREVfU1RBUlRfQjpcbiAgICAgICAgICAgICAgICBjb2RlU2V0ID0gQ29kZTEyOFJlYWRlci5DT0RFX0NPREVfQjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgQ29kZTEyOFJlYWRlci5DT0RFX1NUQVJUX0M6XG4gICAgICAgICAgICAgICAgY29kZVNldCA9IENvZGUxMjhSZWFkZXIuQ09ERV9DT0RFX0M7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGRvbmUgPSBmYWxzZTtcbiAgICAgICAgdmFyIGlzTmV4dFNoaWZ0ZWQgPSBmYWxzZTtcbiAgICAgICAgdmFyIHJlc3VsdCA9ICcnO1xuICAgICAgICB2YXIgbGFzdFN0YXJ0ID0gc3RhcnRQYXR0ZXJuSW5mb1swXTtcbiAgICAgICAgdmFyIG5leHRTdGFydCA9IHN0YXJ0UGF0dGVybkluZm9bMV07XG4gICAgICAgIHZhciBjb3VudGVycyA9IEludDMyQXJyYXkuZnJvbShbMCwgMCwgMCwgMCwgMCwgMF0pO1xuICAgICAgICB2YXIgbGFzdENvZGUgPSAwO1xuICAgICAgICB2YXIgY29kZSA9IDA7XG4gICAgICAgIHZhciBjaGVja3N1bVRvdGFsID0gc3RhcnRDb2RlO1xuICAgICAgICB2YXIgbXVsdGlwbGllciA9IDA7XG4gICAgICAgIHZhciBsYXN0Q2hhcmFjdGVyV2FzUHJpbnRhYmxlID0gdHJ1ZTtcbiAgICAgICAgdmFyIHVwcGVyTW9kZSA9IGZhbHNlO1xuICAgICAgICB2YXIgc2hpZnRVcHBlck1vZGUgPSBmYWxzZTtcbiAgICAgICAgd2hpbGUgKCFkb25lKSB7XG4gICAgICAgICAgICB2YXIgdW5zaGlmdCA9IGlzTmV4dFNoaWZ0ZWQ7XG4gICAgICAgICAgICBpc05leHRTaGlmdGVkID0gZmFsc2U7XG4gICAgICAgICAgICAvLyBTYXZlIG9mZiBsYXN0IGNvZGVcbiAgICAgICAgICAgIGxhc3RDb2RlID0gY29kZTtcbiAgICAgICAgICAgIC8vIERlY29kZSBhbm90aGVyIGNvZGUgZnJvbSBpbWFnZVxuICAgICAgICAgICAgY29kZSA9IENvZGUxMjhSZWFkZXIuZGVjb2RlQ29kZShyb3csIGNvdW50ZXJzLCBuZXh0U3RhcnQpO1xuICAgICAgICAgICAgcmF3Q29kZXNbY3VycmVudFJhd0NvZGVzSW5kZXgrK10gPSBjb2RlO1xuICAgICAgICAgICAgLy8gUmVtZW1iZXIgd2hldGhlciB0aGUgbGFzdCBjb2RlIHdhcyBwcmludGFibGUgb3Igbm90IChleGNsdWRpbmcgQ09ERV9TVE9QKVxuICAgICAgICAgICAgaWYgKGNvZGUgIT09IENvZGUxMjhSZWFkZXIuQ09ERV9TVE9QKSB7XG4gICAgICAgICAgICAgICAgbGFzdENoYXJhY3Rlcldhc1ByaW50YWJsZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBBZGQgdG8gY2hlY2tzdW0gY29tcHV0YXRpb24gKGlmIG5vdCBDT0RFX1NUT1Agb2YgY291cnNlKVxuICAgICAgICAgICAgaWYgKGNvZGUgIT09IENvZGUxMjhSZWFkZXIuQ09ERV9TVE9QKSB7XG4gICAgICAgICAgICAgICAgbXVsdGlwbGllcisrO1xuICAgICAgICAgICAgICAgIGNoZWNrc3VtVG90YWwgKz0gbXVsdGlwbGllciAqIGNvZGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBBZHZhbmNlIHRvIHdoZXJlIHRoZSBuZXh0IGNvZGUgd2lsbCB0byBzdGFydFxuICAgICAgICAgICAgbGFzdFN0YXJ0ID0gbmV4dFN0YXJ0O1xuICAgICAgICAgICAgbmV4dFN0YXJ0ICs9IGNvdW50ZXJzLnJlZHVjZShmdW5jdGlvbiAocHJldmlvdXMsIGN1cnJlbnQpIHsgcmV0dXJuIHByZXZpb3VzICsgY3VycmVudDsgfSwgMCk7XG4gICAgICAgICAgICAvLyBUYWtlIGNhcmUgb2YgaWxsZWdhbCBzdGFydCBjb2Rlc1xuICAgICAgICAgICAgc3dpdGNoIChjb2RlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBDb2RlMTI4UmVhZGVyLkNPREVfU1RBUlRfQTpcbiAgICAgICAgICAgICAgICBjYXNlIENvZGUxMjhSZWFkZXIuQ09ERV9TVEFSVF9COlxuICAgICAgICAgICAgICAgIGNhc2UgQ29kZTEyOFJlYWRlci5DT0RFX1NUQVJUX0M6XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzd2l0Y2ggKGNvZGVTZXQpIHtcbiAgICAgICAgICAgICAgICBjYXNlIENvZGUxMjhSZWFkZXIuQ09ERV9DT0RFX0E6XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb2RlIDwgNjQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzaGlmdFVwcGVyTW9kZSA9PT0gdXBwZXJNb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKCcgJy5jaGFyQ29kZUF0KDApICsgY29kZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKCcgJy5jaGFyQ29kZUF0KDApICsgY29kZSArIDEyOCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2hpZnRVcHBlck1vZGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjb2RlIDwgOTYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzaGlmdFVwcGVyTW9kZSA9PT0gdXBwZXJNb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKGNvZGUgLSA2NCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKGNvZGUgKyA2NCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2hpZnRVcHBlck1vZGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvbid0IGxldCBDT0RFX1NUT1AsIHdoaWNoIGFsd2F5cyBhcHBlYXJzLCBhZmZlY3Qgd2hldGhlciB3aGV0aGVyIHdlIHRoaW5rIHRoZSBsYXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2RlIHdhcyBwcmludGFibGUgb3Igbm90LlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvZGUgIT09IENvZGUxMjhSZWFkZXIuQ09ERV9TVE9QKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdENoYXJhY3Rlcldhc1ByaW50YWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChjb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBDb2RlMTI4UmVhZGVyLkNPREVfRk5DXzE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb252ZXJ0Rk5DMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUzEgc3BlY2lmaWNhdGlvbiA1LjQuMy43LiBhbmQgNS40LjYuNC4gSWYgdGhlIGZpcnN0IGNoYXIgYWZ0ZXIgdGhlIHN0YXJ0IGNvZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBGTkMxIHRoZW4gdGhpcyBpcyBHUzEtMTI4LiBXZSBhZGQgdGhlIHN5bWJvbG9neSBpZGVudGlmaWVyLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnXUMxJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdTMSBzcGVjaWZpY2F0aW9uIDUuNC43LjUuIEV2ZXJ5IHN1YnNlcXVlbnQgRk5DMSBpcyByZXR1cm5lZCBhcyBBU0NJSSAyOSAoR1MpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMjkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQ29kZTEyOFJlYWRlci5DT0RFX0ZOQ18yOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQ29kZTEyOFJlYWRlci5DT0RFX0ZOQ18zOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkbyBub3RoaW5nP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIENvZGUxMjhSZWFkZXIuQ09ERV9GTkNfNF9BOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXVwcGVyTW9kZSAmJiBzaGlmdFVwcGVyTW9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBwZXJNb2RlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaWZ0VXBwZXJNb2RlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodXBwZXJNb2RlICYmIHNoaWZ0VXBwZXJNb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cHBlck1vZGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaWZ0VXBwZXJNb2RlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGlmdFVwcGVyTW9kZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBDb2RlMTI4UmVhZGVyLkNPREVfU0hJRlQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTmV4dFNoaWZ0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlU2V0ID0gQ29kZTEyOFJlYWRlci5DT0RFX0NPREVfQjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBDb2RlMTI4UmVhZGVyLkNPREVfQ09ERV9COlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlU2V0ID0gQ29kZTEyOFJlYWRlci5DT0RFX0NPREVfQjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBDb2RlMTI4UmVhZGVyLkNPREVfQ09ERV9DOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlU2V0ID0gQ29kZTEyOFJlYWRlci5DT0RFX0NPREVfQztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBDb2RlMTI4UmVhZGVyLkNPREVfU1RPUDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgQ29kZTEyOFJlYWRlci5DT0RFX0NPREVfQjpcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvZGUgPCA5Nikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNoaWZ0VXBwZXJNb2RlID09PSB1cHBlck1vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoJyAnLmNoYXJDb2RlQXQoMCkgKyBjb2RlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoJyAnLmNoYXJDb2RlQXQoMCkgKyBjb2RlICsgMTI4KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzaGlmdFVwcGVyTW9kZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvZGUgIT09IENvZGUxMjhSZWFkZXIuQ09ERV9TVE9QKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdENoYXJhY3Rlcldhc1ByaW50YWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChjb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBDb2RlMTI4UmVhZGVyLkNPREVfRk5DXzE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb252ZXJ0Rk5DMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHUzEgc3BlY2lmaWNhdGlvbiA1LjQuMy43LiBhbmQgNS40LjYuNC4gSWYgdGhlIGZpcnN0IGNoYXIgYWZ0ZXIgdGhlIHN0YXJ0IGNvZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBGTkMxIHRoZW4gdGhpcyBpcyBHUzEtMTI4LiBXZSBhZGQgdGhlIHN5bWJvbG9neSBpZGVudGlmaWVyLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnXUMxJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdTMSBzcGVjaWZpY2F0aW9uIDUuNC43LjUuIEV2ZXJ5IHN1YnNlcXVlbnQgRk5DMSBpcyByZXR1cm5lZCBhcyBBU0NJSSAyOSAoR1MpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMjkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQ29kZTEyOFJlYWRlci5DT0RFX0ZOQ18yOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQ29kZTEyOFJlYWRlci5DT0RFX0ZOQ18zOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkbyBub3RoaW5nP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIENvZGUxMjhSZWFkZXIuQ09ERV9GTkNfNF9COlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXVwcGVyTW9kZSAmJiBzaGlmdFVwcGVyTW9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBwZXJNb2RlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaWZ0VXBwZXJNb2RlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodXBwZXJNb2RlICYmIHNoaWZ0VXBwZXJNb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cHBlck1vZGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaWZ0VXBwZXJNb2RlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGlmdFVwcGVyTW9kZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBDb2RlMTI4UmVhZGVyLkNPREVfU0hJRlQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTmV4dFNoaWZ0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlU2V0ID0gQ29kZTEyOFJlYWRlci5DT0RFX0NPREVfQTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBDb2RlMTI4UmVhZGVyLkNPREVfQ09ERV9BOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlU2V0ID0gQ29kZTEyOFJlYWRlci5DT0RFX0NPREVfQTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBDb2RlMTI4UmVhZGVyLkNPREVfQ09ERV9DOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlU2V0ID0gQ29kZTEyOFJlYWRlci5DT0RFX0NPREVfQztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBDb2RlMTI4UmVhZGVyLkNPREVfU1RPUDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgQ29kZTEyOFJlYWRlci5DT0RFX0NPREVfQzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvZGUgPCAxMDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb2RlIDwgMTApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJzAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IGNvZGU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29kZSAhPT0gQ29kZTEyOFJlYWRlci5DT0RFX1NUT1ApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0Q2hhcmFjdGVyV2FzUHJpbnRhYmxlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIENvZGUxMjhSZWFkZXIuQ09ERV9GTkNfMTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnZlcnRGTkMxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdTMSBzcGVjaWZpY2F0aW9uIDUuNC4zLjcuIGFuZCA1LjQuNi40LiBJZiB0aGUgZmlyc3QgY2hhciBhZnRlciB0aGUgc3RhcnQgY29kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIEZOQzEgdGhlbiB0aGlzIGlzIEdTMS0xMjguIFdlIGFkZCB0aGUgc3ltYm9sb2d5IGlkZW50aWZpZXIuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICddQzEnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1MxIHNwZWNpZmljYXRpb24gNS40LjcuNS4gRXZlcnkgc3Vic2VxdWVudCBGTkMxIGlzIHJldHVybmVkIGFzIEFTQ0lJIDI5IChHUylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgyOSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBDb2RlMTI4UmVhZGVyLkNPREVfQ09ERV9BOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlU2V0ID0gQ29kZTEyOFJlYWRlci5DT0RFX0NPREVfQTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBDb2RlMTI4UmVhZGVyLkNPREVfQ09ERV9COlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlU2V0ID0gQ29kZTEyOFJlYWRlci5DT0RFX0NPREVfQjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBDb2RlMTI4UmVhZGVyLkNPREVfU1RPUDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gVW5zaGlmdCBiYWNrIHRvIGFub3RoZXIgY29kZSBzZXQgaWYgd2Ugd2VyZSBzaGlmdGVkXG4gICAgICAgICAgICBpZiAodW5zaGlmdCkge1xuICAgICAgICAgICAgICAgIGNvZGVTZXQgPSBjb2RlU2V0ID09PSBDb2RlMTI4UmVhZGVyLkNPREVfQ09ERV9BID8gQ29kZTEyOFJlYWRlci5DT0RFX0NPREVfQiA6IENvZGUxMjhSZWFkZXIuQ09ERV9DT0RFX0E7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGxhc3RQYXR0ZXJuU2l6ZSA9IG5leHRTdGFydCAtIGxhc3RTdGFydDtcbiAgICAgICAgLy8gQ2hlY2sgZm9yIGFtcGxlIHdoaXRlc3BhY2UgZm9sbG93aW5nIHBhdHRlcm4sIGJ1dCwgdG8gZG8gdGhpcyB3ZSBmaXJzdCBuZWVkIHRvIHJlbWVtYmVyIHRoYXRcbiAgICAgICAgLy8gd2UgZnVkZ2VkIGRlY29kaW5nIENPREVfU1RPUCBzaW5jZSBpdCBhY3R1YWxseSBoYXMgNyBiYXJzLCBub3QgNi4gVGhlcmUgaXMgYSBibGFjayBiYXIgbGVmdFxuICAgICAgICAvLyB0byByZWFkIG9mZi4gV291bGQgYmUgc2xpZ2h0bHkgYmV0dGVyIHRvIHByb3Blcmx5IHJlYWQuIEhlcmUgd2UganVzdCBza2lwIGl0OlxuICAgICAgICBuZXh0U3RhcnQgPSByb3cuZ2V0TmV4dFVuc2V0KG5leHRTdGFydCk7XG4gICAgICAgIGlmICghcm93LmlzUmFuZ2UobmV4dFN0YXJ0LCBNYXRoLm1pbihyb3cuZ2V0U2l6ZSgpLCBuZXh0U3RhcnQgKyAobmV4dFN0YXJ0IC0gbGFzdFN0YXJ0KSAvIDIpLCBmYWxzZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBQdWxsIG91dCBmcm9tIHN1bSB0aGUgdmFsdWUgb2YgdGhlIHBlbnVsdGltYXRlIGNoZWNrIGNvZGVcbiAgICAgICAgY2hlY2tzdW1Ub3RhbCAtPSBtdWx0aXBsaWVyICogbGFzdENvZGU7XG4gICAgICAgIC8vIGxhc3RDb2RlIGlzIHRoZSBjaGVja3N1bSB0aGVuOlxuICAgICAgICBpZiAoY2hlY2tzdW1Ub3RhbCAlIDEwMyAhPT0gbGFzdENvZGUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBDaGVja3N1bUV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBOZWVkIHRvIHB1bGwgb3V0IHRoZSBjaGVjayBkaWdpdHMgZnJvbSBzdHJpbmdcbiAgICAgICAgdmFyIHJlc3VsdExlbmd0aCA9IHJlc3VsdC5sZW5ndGg7XG4gICAgICAgIGlmIChyZXN1bHRMZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIC8vIGZhbHNlIHBvc2l0aXZlXG4gICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gT25seSBib3RoZXIgaWYgdGhlIHJlc3VsdCBoYWQgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgYW5kIGlmIHRoZSBjaGVja3N1bSBkaWdpdCBoYXBwZW5lZCB0b1xuICAgICAgICAvLyBiZSBhIHByaW50YWJsZSBjaGFyYWN0ZXIuIElmIGl0IHdhcyBqdXN0IGludGVycHJldGVkIGFzIGEgY29udHJvbCBjb2RlLCBub3RoaW5nIHRvIHJlbW92ZS5cbiAgICAgICAgaWYgKHJlc3VsdExlbmd0aCA+IDAgJiYgbGFzdENoYXJhY3Rlcldhc1ByaW50YWJsZSkge1xuICAgICAgICAgICAgaWYgKGNvZGVTZXQgPT09IENvZGUxMjhSZWFkZXIuQ09ERV9DT0RFX0MpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQuc3Vic3RyaW5nKDAsIHJlc3VsdExlbmd0aCAtIDIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnN1YnN0cmluZygwLCByZXN1bHRMZW5ndGggLSAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgbGVmdCA9IChzdGFydFBhdHRlcm5JbmZvWzFdICsgc3RhcnRQYXR0ZXJuSW5mb1swXSkgLyAyLjA7XG4gICAgICAgIHZhciByaWdodCA9IGxhc3RTdGFydCArIGxhc3RQYXR0ZXJuU2l6ZSAvIDIuMDtcbiAgICAgICAgdmFyIHJhd0NvZGVzU2l6ZSA9IHJhd0NvZGVzLmxlbmd0aDtcbiAgICAgICAgdmFyIHJhd0J5dGVzID0gbmV3IFVpbnQ4QXJyYXkocmF3Q29kZXNTaXplKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByYXdDb2Rlc1NpemU7IGkrKykge1xuICAgICAgICAgICAgcmF3Qnl0ZXNbaV0gPSByYXdDb2Rlc1tpXTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcG9pbnRzID0gW25ldyBSZXN1bHRQb2ludF8xLmRlZmF1bHQobGVmdCwgcm93TnVtYmVyKSwgbmV3IFJlc3VsdFBvaW50XzEuZGVmYXVsdChyaWdodCwgcm93TnVtYmVyKV07XG4gICAgICAgIHJldHVybiBuZXcgUmVzdWx0XzEuZGVmYXVsdChyZXN1bHQsIHJhd0J5dGVzLCAwLCBwb2ludHMsIEJhcmNvZGVGb3JtYXRfMS5kZWZhdWx0LkNPREVfMTI4LCBuZXcgRGF0ZSgpLmdldFRpbWUoKSk7XG4gICAgfTtcbiAgICBDb2RlMTI4UmVhZGVyLkNPREVfUEFUVEVSTlMgPSBbXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMiwgMSwgMiwgMiwgMiwgMl0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzIsIDIsIDIsIDEsIDIsIDJdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFsyLCAyLCAyLCAyLCAyLCAxXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMiwgMSwgMiwgMiwgM10pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDIsIDEsIDMsIDIsIDJdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAzLCAxLCAyLCAyLCAyXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMiwgMiwgMiwgMSwgM10pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDIsIDIsIDMsIDEsIDJdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAzLCAyLCAyLCAxLCAyXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMiwgMiwgMSwgMiwgMSwgM10pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzIsIDIsIDEsIDMsIDEsIDJdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFsyLCAzLCAxLCAyLCAxLCAyXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMSwgMiwgMiwgMywgMl0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDIsIDIsIDEsIDMsIDJdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAyLCAyLCAyLCAzLCAxXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMSwgMywgMiwgMiwgMl0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDIsIDMsIDEsIDIsIDJdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAyLCAzLCAyLCAyLCAxXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMiwgMiwgMywgMiwgMSwgMV0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzIsIDIsIDEsIDEsIDMsIDJdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFsyLCAyLCAxLCAyLCAzLCAxXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMiwgMSwgMywgMiwgMSwgMl0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzIsIDIsIDMsIDEsIDEsIDJdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFszLCAxLCAyLCAxLCAzLCAxXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMywgMSwgMSwgMiwgMiwgMl0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzMsIDIsIDEsIDEsIDIsIDJdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFszLCAyLCAxLCAyLCAyLCAxXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMywgMSwgMiwgMiwgMSwgMl0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzMsIDIsIDIsIDEsIDEsIDJdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFszLCAyLCAyLCAyLCAxLCAxXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMiwgMSwgMiwgMSwgMiwgM10pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzIsIDEsIDIsIDMsIDIsIDFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFsyLCAzLCAyLCAxLCAyLCAxXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMSwgMSwgMywgMiwgM10pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDMsIDEsIDEsIDIsIDNdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAzLCAxLCAzLCAyLCAxXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMSwgMiwgMywgMSwgM10pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDMsIDIsIDEsIDEsIDNdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAzLCAyLCAzLCAxLCAxXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMiwgMSwgMSwgMywgMSwgM10pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzIsIDMsIDEsIDEsIDEsIDNdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFsyLCAzLCAxLCAzLCAxLCAxXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMSwgMiwgMSwgMywgM10pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDEsIDIsIDMsIDMsIDFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAzLCAyLCAxLCAzLCAxXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMSwgMywgMSwgMiwgM10pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDEsIDMsIDMsIDIsIDFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAzLCAzLCAxLCAyLCAxXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMywgMSwgMywgMSwgMiwgMV0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzIsIDEsIDEsIDMsIDMsIDFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFsyLCAzLCAxLCAxLCAzLCAxXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMiwgMSwgMywgMSwgMSwgM10pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzIsIDEsIDMsIDMsIDEsIDFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFsyLCAxLCAzLCAxLCAzLCAxXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMywgMSwgMSwgMSwgMiwgM10pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzMsIDEsIDEsIDMsIDIsIDFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFszLCAzLCAxLCAxLCAyLCAxXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMywgMSwgMiwgMSwgMSwgM10pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzMsIDEsIDIsIDMsIDEsIDFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFszLCAzLCAyLCAxLCAxLCAxXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMywgMSwgNCwgMSwgMSwgMV0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzIsIDIsIDEsIDQsIDEsIDFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFs0LCAzLCAxLCAxLCAxLCAxXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMSwgMSwgMiwgMiwgNF0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDEsIDEsIDQsIDIsIDJdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAyLCAxLCAxLCAyLCA0XSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMiwgMSwgNCwgMiwgMV0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDQsIDEsIDEsIDIsIDJdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCA0LCAxLCAyLCAyLCAxXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMSwgMiwgMiwgMSwgNF0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDEsIDIsIDQsIDEsIDJdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAyLCAyLCAxLCAxLCA0XSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMiwgMiwgNCwgMSwgMV0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDQsIDIsIDEsIDEsIDJdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCA0LCAyLCAyLCAxLCAxXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMiwgNCwgMSwgMiwgMSwgMV0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzIsIDIsIDEsIDEsIDEsIDRdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFs0LCAxLCAzLCAxLCAxLCAxXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMiwgNCwgMSwgMSwgMSwgMl0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDMsIDQsIDEsIDEsIDFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAxLCAxLCAyLCA0LCAyXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMiwgMSwgMSwgNCwgMl0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDIsIDEsIDIsIDQsIDFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAxLCA0LCAyLCAxLCAyXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMiwgNCwgMSwgMSwgMl0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDIsIDQsIDIsIDEsIDFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFs0LCAxLCAxLCAyLCAxLCAyXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbNCwgMiwgMSwgMSwgMSwgMl0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzQsIDIsIDEsIDIsIDEsIDFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFsyLCAxLCAyLCAxLCA0LCAxXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMiwgMSwgNCwgMSwgMiwgMV0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzQsIDEsIDIsIDEsIDIsIDFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAxLCAxLCAxLCA0LCAzXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMSwgMSwgMywgNCwgMV0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDMsIDEsIDEsIDQsIDFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAxLCA0LCAxLCAxLCAzXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMSwgNCwgMywgMSwgMV0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzQsIDEsIDEsIDEsIDEsIDNdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFs0LCAxLCAxLCAzLCAxLCAxXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMSwgMywgMSwgNCwgMV0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDEsIDQsIDEsIDMsIDFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFszLCAxLCAxLCAxLCA0LCAxXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbNCwgMSwgMSwgMSwgMywgMV0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzIsIDEsIDEsIDQsIDEsIDJdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFsyLCAxLCAxLCAyLCAxLCA0XSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMiwgMSwgMSwgMiwgMywgMl0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzIsIDMsIDMsIDEsIDEsIDEsIDJdKSxcbiAgICBdO1xuICAgIENvZGUxMjhSZWFkZXIuTUFYX0FWR19WQVJJQU5DRSA9IDAuMjU7XG4gICAgQ29kZTEyOFJlYWRlci5NQVhfSU5ESVZJRFVBTF9WQVJJQU5DRSA9IDAuNztcbiAgICBDb2RlMTI4UmVhZGVyLkNPREVfU0hJRlQgPSA5ODtcbiAgICBDb2RlMTI4UmVhZGVyLkNPREVfQ09ERV9DID0gOTk7XG4gICAgQ29kZTEyOFJlYWRlci5DT0RFX0NPREVfQiA9IDEwMDtcbiAgICBDb2RlMTI4UmVhZGVyLkNPREVfQ09ERV9BID0gMTAxO1xuICAgIENvZGUxMjhSZWFkZXIuQ09ERV9GTkNfMSA9IDEwMjtcbiAgICBDb2RlMTI4UmVhZGVyLkNPREVfRk5DXzIgPSA5NztcbiAgICBDb2RlMTI4UmVhZGVyLkNPREVfRk5DXzMgPSA5NjtcbiAgICBDb2RlMTI4UmVhZGVyLkNPREVfRk5DXzRfQSA9IDEwMTtcbiAgICBDb2RlMTI4UmVhZGVyLkNPREVfRk5DXzRfQiA9IDEwMDtcbiAgICBDb2RlMTI4UmVhZGVyLkNPREVfU1RBUlRfQSA9IDEwMztcbiAgICBDb2RlMTI4UmVhZGVyLkNPREVfU1RBUlRfQiA9IDEwNDtcbiAgICBDb2RlMTI4UmVhZGVyLkNPREVfU1RBUlRfQyA9IDEwNTtcbiAgICBDb2RlMTI4UmVhZGVyLkNPREVfU1RPUCA9IDEwNjtcbiAgICByZXR1cm4gQ29kZTEyOFJlYWRlcjtcbn0oT25lRFJlYWRlcl8xLmRlZmF1bHQpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IENvZGUxMjhSZWFkZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Db2RlMTI4UmVhZGVyLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuLypcbiAqIENvcHlyaWdodCAyMDA4IFpYaW5nIGF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbnZhciBfX3ZhbHVlcyA9ICh0aGlzICYmIHRoaXMuX192YWx1ZXMpIHx8IGZ1bmN0aW9uKG8pIHtcbiAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xuICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qbmFtZXNwYWNlIGNvbS5nb29nbGUuenhpbmcub25lZCB7Ki9cbnZhciBCYXJjb2RlRm9ybWF0XzEgPSByZXF1aXJlKFwiLi4vQmFyY29kZUZvcm1hdFwiKTtcbnZhciBDaGVja3N1bUV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4uL0NoZWNrc3VtRXhjZXB0aW9uXCIpO1xudmFyIEZvcm1hdEV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4uL0Zvcm1hdEV4Y2VwdGlvblwiKTtcbnZhciBOb3RGb3VuZEV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4uL05vdEZvdW5kRXhjZXB0aW9uXCIpO1xudmFyIE9uZURSZWFkZXJfMSA9IHJlcXVpcmUoXCIuL09uZURSZWFkZXJcIik7XG52YXIgUmVzdWx0XzEgPSByZXF1aXJlKFwiLi4vUmVzdWx0XCIpO1xudmFyIFJlc3VsdFBvaW50XzEgPSByZXF1aXJlKFwiLi4vUmVzdWx0UG9pbnRcIik7XG4vKipcbiAqIDxwPkRlY29kZXMgQ29kZSAzOSBiYXJjb2Rlcy4gU3VwcG9ydHMgXCJGdWxsIEFTQ0lJIENvZGUgMzlcIiBpZiBVU0VfQ09ERV8zOV9FWFRFTkRFRF9NT0RFIGlzIHNldC48L3A+XG4gKlxuICogQGF1dGhvciBTZWFuIE93ZW5cbiAqIEBzZWUgQ29kZTkzUmVhZGVyXG4gKi9cbnZhciBDb2RlMzlSZWFkZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKENvZGUzOVJlYWRlciwgX3N1cGVyKTtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgcmVhZGVyIHRoYXQgYXNzdW1lcyBhbGwgZW5jb2RlZCBkYXRhIGlzIGRhdGEsIGFuZCBkb2VzIG5vdCB0cmVhdCB0aGUgZmluYWxcbiAgICAgKiBjaGFyYWN0ZXIgYXMgYSBjaGVjayBkaWdpdC4gSXQgd2lsbCBub3QgZGVjb2RlZCBcImV4dGVuZGVkIENvZGUgMzlcIiBzZXF1ZW5jZXMuXG4gICAgICovXG4gICAgLy8gcHVibGljIENvZGUzOVJlYWRlcigpIHtcbiAgICAvLyAgIHRoaXMoZmFsc2UpO1xuICAgIC8vIH1cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgcmVhZGVyIHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gY2hlY2sgdGhlIGxhc3QgY2hhcmFjdGVyIGFzIGEgY2hlY2sgZGlnaXQuXG4gICAgICogSXQgd2lsbCBub3QgZGVjb2RlZCBcImV4dGVuZGVkIENvZGUgMzlcIiBzZXF1ZW5jZXMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdXNpbmdDaGVja0RpZ2l0IGlmIHRydWUsIHRyZWF0IHRoZSBsYXN0IGRhdGEgY2hhcmFjdGVyIGFzIGEgY2hlY2sgZGlnaXQsIG5vdFxuICAgICAqIGRhdGEsIGFuZCB2ZXJpZnkgdGhhdCB0aGUgY2hlY2tzdW0gcGFzc2VzLlxuICAgICAqL1xuICAgIC8vIHB1YmxpYyBDb2RlMzlSZWFkZXIoYm9vbGVhbiB1c2luZ0NoZWNrRGlnaXQpIHtcbiAgICAvLyAgIHRoaXModXNpbmdDaGVja0RpZ2l0LCBmYWxzZSk7XG4gICAgLy8gfVxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSByZWFkZXIgdGhhdCBjYW4gYmUgY29uZmlndXJlZCB0byBjaGVjayB0aGUgbGFzdCBjaGFyYWN0ZXIgYXMgYSBjaGVjayBkaWdpdCxcbiAgICAgKiBvciBvcHRpb25hbGx5IGF0dGVtcHQgdG8gZGVjb2RlIFwiZXh0ZW5kZWQgQ29kZSAzOVwiIHNlcXVlbmNlcyB0aGF0IGFyZSB1c2VkIHRvIGVuY29kZVxuICAgICAqIHRoZSBmdWxsIEFTQ0lJIGNoYXJhY3RlciBzZXQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdXNpbmdDaGVja0RpZ2l0IGlmIHRydWUsIHRyZWF0IHRoZSBsYXN0IGRhdGEgY2hhcmFjdGVyIGFzIGEgY2hlY2sgZGlnaXQsIG5vdFxuICAgICAqIGRhdGEsIGFuZCB2ZXJpZnkgdGhhdCB0aGUgY2hlY2tzdW0gcGFzc2VzLlxuICAgICAqIEBwYXJhbSBleHRlbmRlZE1vZGUgaWYgdHJ1ZSwgd2lsbCBhdHRlbXB0IHRvIGRlY29kZSBleHRlbmRlZCBDb2RlIDM5IHNlcXVlbmNlcyBpbiB0aGVcbiAgICAgKiB0ZXh0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIENvZGUzOVJlYWRlcih1c2luZ0NoZWNrRGlnaXQsIGV4dGVuZGVkTW9kZSkge1xuICAgICAgICBpZiAodXNpbmdDaGVja0RpZ2l0ID09PSB2b2lkIDApIHsgdXNpbmdDaGVja0RpZ2l0ID0gZmFsc2U7IH1cbiAgICAgICAgaWYgKGV4dGVuZGVkTW9kZSA9PT0gdm9pZCAwKSB7IGV4dGVuZGVkTW9kZSA9IGZhbHNlOyB9XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLnVzaW5nQ2hlY2tEaWdpdCA9IHVzaW5nQ2hlY2tEaWdpdDtcbiAgICAgICAgX3RoaXMuZXh0ZW5kZWRNb2RlID0gZXh0ZW5kZWRNb2RlO1xuICAgICAgICBfdGhpcy5kZWNvZGVSb3dSZXN1bHQgPSAnJztcbiAgICAgICAgX3RoaXMuY291bnRlcnMgPSBuZXcgSW50MzJBcnJheSg5KTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBDb2RlMzlSZWFkZXIucHJvdG90eXBlLmRlY29kZVJvdyA9IGZ1bmN0aW9uIChyb3dOdW1iZXIsIHJvdywgaGludHMpIHtcbiAgICAgICAgdmFyIGVfMSwgX2EsIGVfMiwgX2I7XG4gICAgICAgIHZhciB0aGVDb3VudGVycyA9IHRoaXMuY291bnRlcnM7XG4gICAgICAgIHRoZUNvdW50ZXJzLmZpbGwoMCk7XG4gICAgICAgIHRoaXMuZGVjb2RlUm93UmVzdWx0ID0gJyc7XG4gICAgICAgIHZhciBzdGFydCA9IENvZGUzOVJlYWRlci5maW5kQXN0ZXJpc2tQYXR0ZXJuKHJvdywgdGhlQ291bnRlcnMpO1xuICAgICAgICAvLyBSZWFkIG9mZiB3aGl0ZSBzcGFjZVxuICAgICAgICB2YXIgbmV4dFN0YXJ0ID0gcm93LmdldE5leHRTZXQoc3RhcnRbMV0pO1xuICAgICAgICB2YXIgZW5kID0gcm93LmdldFNpemUoKTtcbiAgICAgICAgdmFyIGRlY29kZWRDaGFyO1xuICAgICAgICB2YXIgbGFzdFN0YXJ0O1xuICAgICAgICBkbyB7XG4gICAgICAgICAgICBDb2RlMzlSZWFkZXIucmVjb3JkUGF0dGVybihyb3csIG5leHRTdGFydCwgdGhlQ291bnRlcnMpO1xuICAgICAgICAgICAgdmFyIHBhdHRlcm4gPSBDb2RlMzlSZWFkZXIudG9OYXJyb3dXaWRlUGF0dGVybih0aGVDb3VudGVycyk7XG4gICAgICAgICAgICBpZiAocGF0dGVybiA8IDApIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWNvZGVkQ2hhciA9IENvZGUzOVJlYWRlci5wYXR0ZXJuVG9DaGFyKHBhdHRlcm4pO1xuICAgICAgICAgICAgdGhpcy5kZWNvZGVSb3dSZXN1bHQgKz0gZGVjb2RlZENoYXI7XG4gICAgICAgICAgICBsYXN0U3RhcnQgPSBuZXh0U3RhcnQ7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIHRoZUNvdW50ZXJzXzEgPSAoZV8xID0gdm9pZCAwLCBfX3ZhbHVlcyh0aGVDb3VudGVycykpLCB0aGVDb3VudGVyc18xXzEgPSB0aGVDb3VudGVyc18xLm5leHQoKTsgIXRoZUNvdW50ZXJzXzFfMS5kb25lOyB0aGVDb3VudGVyc18xXzEgPSB0aGVDb3VudGVyc18xLm5leHQoKSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgY291bnRlciA9IHRoZUNvdW50ZXJzXzFfMS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgbmV4dFN0YXJ0ICs9IGNvdW50ZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH1cbiAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGVDb3VudGVyc18xXzEgJiYgIXRoZUNvdW50ZXJzXzFfMS5kb25lICYmIChfYSA9IHRoZUNvdW50ZXJzXzEucmV0dXJuKSkgX2EuY2FsbCh0aGVDb3VudGVyc18xKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gUmVhZCBvZmYgd2hpdGUgc3BhY2VcbiAgICAgICAgICAgIG5leHRTdGFydCA9IHJvdy5nZXROZXh0U2V0KG5leHRTdGFydCk7XG4gICAgICAgIH0gd2hpbGUgKGRlY29kZWRDaGFyICE9PSAnKicpO1xuICAgICAgICB0aGlzLmRlY29kZVJvd1Jlc3VsdCA9IHRoaXMuZGVjb2RlUm93UmVzdWx0LnN1YnN0cmluZygwLCB0aGlzLmRlY29kZVJvd1Jlc3VsdC5sZW5ndGggLSAxKTsgLy8gcmVtb3ZlIGFzdGVyaXNrXG4gICAgICAgIC8vIExvb2sgZm9yIHdoaXRlc3BhY2UgYWZ0ZXIgcGF0dGVybjpcbiAgICAgICAgdmFyIGxhc3RQYXR0ZXJuU2l6ZSA9IDA7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKHZhciB0aGVDb3VudGVyc18yID0gX192YWx1ZXModGhlQ291bnRlcnMpLCB0aGVDb3VudGVyc18yXzEgPSB0aGVDb3VudGVyc18yLm5leHQoKTsgIXRoZUNvdW50ZXJzXzJfMS5kb25lOyB0aGVDb3VudGVyc18yXzEgPSB0aGVDb3VudGVyc18yLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciBjb3VudGVyID0gdGhlQ291bnRlcnNfMl8xLnZhbHVlO1xuICAgICAgICAgICAgICAgIGxhc3RQYXR0ZXJuU2l6ZSArPSBjb3VudGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlXzJfMSkgeyBlXzIgPSB7IGVycm9yOiBlXzJfMSB9OyB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAodGhlQ291bnRlcnNfMl8xICYmICF0aGVDb3VudGVyc18yXzEuZG9uZSAmJiAoX2IgPSB0aGVDb3VudGVyc18yLnJldHVybikpIF9iLmNhbGwodGhlQ291bnRlcnNfMik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMikgdGhyb3cgZV8yLmVycm9yOyB9XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHdoaXRlU3BhY2VBZnRlckVuZCA9IG5leHRTdGFydCAtIGxhc3RTdGFydCAtIGxhc3RQYXR0ZXJuU2l6ZTtcbiAgICAgICAgLy8gSWYgNTAlIG9mIGxhc3QgcGF0dGVybiBzaXplLCBmb2xsb3dpbmcgbGFzdCBwYXR0ZXJuLCBpcyBub3Qgd2hpdGVzcGFjZSwgZmFpbFxuICAgICAgICAvLyAoYnV0IGlmIGl0J3Mgd2hpdGVzcGFjZSB0byB0aGUgdmVyeSBlbmQgb2YgdGhlIGltYWdlLCB0aGF0J3MgT0spXG4gICAgICAgIGlmIChuZXh0U3RhcnQgIT09IGVuZCAmJiAod2hpdGVTcGFjZUFmdGVyRW5kICogMikgPCBsYXN0UGF0dGVyblNpemUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy51c2luZ0NoZWNrRGlnaXQpIHtcbiAgICAgICAgICAgIHZhciBtYXggPSB0aGlzLmRlY29kZVJvd1Jlc3VsdC5sZW5ndGggLSAxO1xuICAgICAgICAgICAgdmFyIHRvdGFsID0gMDtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWF4OyBpKyspIHtcbiAgICAgICAgICAgICAgICB0b3RhbCArPSBDb2RlMzlSZWFkZXIuQUxQSEFCRVRfU1RSSU5HLmluZGV4T2YodGhpcy5kZWNvZGVSb3dSZXN1bHQuY2hhckF0KGkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmRlY29kZVJvd1Jlc3VsdC5jaGFyQXQobWF4KSAhPT0gQ29kZTM5UmVhZGVyLkFMUEhBQkVUX1NUUklORy5jaGFyQXQodG90YWwgJSA0MykpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQ2hlY2tzdW1FeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmRlY29kZVJvd1Jlc3VsdCA9IHRoaXMuZGVjb2RlUm93UmVzdWx0LnN1YnN0cmluZygwLCBtYXgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmRlY29kZVJvd1Jlc3VsdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIC8vIGZhbHNlIHBvc2l0aXZlXG4gICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJlc3VsdFN0cmluZztcbiAgICAgICAgaWYgKHRoaXMuZXh0ZW5kZWRNb2RlKSB7XG4gICAgICAgICAgICByZXN1bHRTdHJpbmcgPSBDb2RlMzlSZWFkZXIuZGVjb2RlRXh0ZW5kZWQodGhpcy5kZWNvZGVSb3dSZXN1bHQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0U3RyaW5nID0gdGhpcy5kZWNvZGVSb3dSZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGxlZnQgPSAoc3RhcnRbMV0gKyBzdGFydFswXSkgLyAyLjA7XG4gICAgICAgIHZhciByaWdodCA9IGxhc3RTdGFydCArIGxhc3RQYXR0ZXJuU2l6ZSAvIDIuMDtcbiAgICAgICAgcmV0dXJuIG5ldyBSZXN1bHRfMS5kZWZhdWx0KHJlc3VsdFN0cmluZywgbnVsbCwgMCwgW25ldyBSZXN1bHRQb2ludF8xLmRlZmF1bHQobGVmdCwgcm93TnVtYmVyKSwgbmV3IFJlc3VsdFBvaW50XzEuZGVmYXVsdChyaWdodCwgcm93TnVtYmVyKV0sIEJhcmNvZGVGb3JtYXRfMS5kZWZhdWx0LkNPREVfMzksIG5ldyBEYXRlKCkuZ2V0VGltZSgpKTtcbiAgICB9O1xuICAgIENvZGUzOVJlYWRlci5maW5kQXN0ZXJpc2tQYXR0ZXJuID0gZnVuY3Rpb24gKHJvdywgY291bnRlcnMpIHtcbiAgICAgICAgdmFyIHdpZHRoID0gcm93LmdldFNpemUoKTtcbiAgICAgICAgdmFyIHJvd09mZnNldCA9IHJvdy5nZXROZXh0U2V0KDApO1xuICAgICAgICB2YXIgY291bnRlclBvc2l0aW9uID0gMDtcbiAgICAgICAgdmFyIHBhdHRlcm5TdGFydCA9IHJvd09mZnNldDtcbiAgICAgICAgdmFyIGlzV2hpdGUgPSBmYWxzZTtcbiAgICAgICAgdmFyIHBhdHRlcm5MZW5ndGggPSBjb3VudGVycy5sZW5ndGg7XG4gICAgICAgIGZvciAodmFyIGkgPSByb3dPZmZzZXQ7IGkgPCB3aWR0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAocm93LmdldChpKSAhPT0gaXNXaGl0ZSkge1xuICAgICAgICAgICAgICAgIGNvdW50ZXJzW2NvdW50ZXJQb3NpdGlvbl0rKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChjb3VudGVyUG9zaXRpb24gPT09IHBhdHRlcm5MZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIExvb2sgZm9yIHdoaXRlc3BhY2UgYmVmb3JlIHN0YXJ0IHBhdHRlcm4sID49IDUwJSBvZiB3aWR0aCBvZiBzdGFydCBwYXR0ZXJuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnRvTmFycm93V2lkZVBhdHRlcm4oY291bnRlcnMpID09PSBDb2RlMzlSZWFkZXIuQVNURVJJU0tfRU5DT0RJTkcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdy5pc1JhbmdlKE1hdGgubWF4KDAsIHBhdHRlcm5TdGFydCAtIE1hdGguZmxvb3IoKGkgLSBwYXR0ZXJuU3RhcnQpIC8gMikpLCBwYXR0ZXJuU3RhcnQsIGZhbHNlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtwYXR0ZXJuU3RhcnQsIGldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHBhdHRlcm5TdGFydCArPSBjb3VudGVyc1swXSArIGNvdW50ZXJzWzFdO1xuICAgICAgICAgICAgICAgICAgICBjb3VudGVycy5jb3B5V2l0aGluKDAsIDIsIDIgKyBjb3VudGVyUG9zaXRpb24gLSAxKTtcbiAgICAgICAgICAgICAgICAgICAgY291bnRlcnNbY291bnRlclBvc2l0aW9uIC0gMV0gPSAwO1xuICAgICAgICAgICAgICAgICAgICBjb3VudGVyc1tjb3VudGVyUG9zaXRpb25dID0gMDtcbiAgICAgICAgICAgICAgICAgICAgY291bnRlclBvc2l0aW9uLS07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb3VudGVyUG9zaXRpb24rKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY291bnRlcnNbY291bnRlclBvc2l0aW9uXSA9IDE7XG4gICAgICAgICAgICAgICAgaXNXaGl0ZSA9ICFpc1doaXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICB9O1xuICAgIC8vIEZvciBlZmZpY2llbmN5LCByZXR1cm5zIC0xIG9uIGZhaWx1cmUuIE5vdCB0aHJvd2luZyBoZXJlIHNhdmVkIGFzIG1hbnkgYXMgNzAwIGV4Y2VwdGlvbnNcbiAgICAvLyBwZXIgaW1hZ2Ugd2hlbiB1c2luZyBzb21lIG9mIG91ciBibGFja2JveCBpbWFnZXMuXG4gICAgQ29kZTM5UmVhZGVyLnRvTmFycm93V2lkZVBhdHRlcm4gPSBmdW5jdGlvbiAoY291bnRlcnMpIHtcbiAgICAgICAgdmFyIGVfMywgX2E7XG4gICAgICAgIHZhciBudW1Db3VudGVycyA9IGNvdW50ZXJzLmxlbmd0aDtcbiAgICAgICAgdmFyIG1heE5hcnJvd0NvdW50ZXIgPSAwO1xuICAgICAgICB2YXIgd2lkZUNvdW50ZXJzO1xuICAgICAgICBkbyB7XG4gICAgICAgICAgICB2YXIgbWluQ291bnRlciA9IDB4N2ZmZmZmZmY7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGNvdW50ZXJzXzEgPSAoZV8zID0gdm9pZCAwLCBfX3ZhbHVlcyhjb3VudGVycykpLCBjb3VudGVyc18xXzEgPSBjb3VudGVyc18xLm5leHQoKTsgIWNvdW50ZXJzXzFfMS5kb25lOyBjb3VudGVyc18xXzEgPSBjb3VudGVyc18xLm5leHQoKSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgY291bnRlciA9IGNvdW50ZXJzXzFfMS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvdW50ZXIgPCBtaW5Db3VudGVyICYmIGNvdW50ZXIgPiBtYXhOYXJyb3dDb3VudGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtaW5Db3VudGVyID0gY291bnRlcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlXzNfMSkgeyBlXzMgPSB7IGVycm9yOiBlXzNfMSB9OyB9XG4gICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY291bnRlcnNfMV8xICYmICFjb3VudGVyc18xXzEuZG9uZSAmJiAoX2EgPSBjb3VudGVyc18xLnJldHVybikpIF9hLmNhbGwoY291bnRlcnNfMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8zKSB0aHJvdyBlXzMuZXJyb3I7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG1heE5hcnJvd0NvdW50ZXIgPSBtaW5Db3VudGVyO1xuICAgICAgICAgICAgd2lkZUNvdW50ZXJzID0gMDtcbiAgICAgICAgICAgIHZhciB0b3RhbFdpZGVDb3VudGVyc1dpZHRoID0gMDtcbiAgICAgICAgICAgIHZhciBwYXR0ZXJuID0gMDtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtQ291bnRlcnM7IGkrKykge1xuICAgICAgICAgICAgICAgIHZhciBjb3VudGVyID0gY291bnRlcnNbaV07XG4gICAgICAgICAgICAgICAgaWYgKGNvdW50ZXIgPiBtYXhOYXJyb3dDb3VudGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhdHRlcm4gfD0gMSA8PCAobnVtQ291bnRlcnMgLSAxIC0gaSk7XG4gICAgICAgICAgICAgICAgICAgIHdpZGVDb3VudGVycysrO1xuICAgICAgICAgICAgICAgICAgICB0b3RhbFdpZGVDb3VudGVyc1dpZHRoICs9IGNvdW50ZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHdpZGVDb3VudGVycyA9PT0gMykge1xuICAgICAgICAgICAgICAgIC8vIEZvdW5kIDMgd2lkZSBjb3VudGVycywgYnV0IGFyZSB0aGV5IGNsb3NlIGVub3VnaCBpbiB3aWR0aD9cbiAgICAgICAgICAgICAgICAvLyBXZSBjYW4gcGVyZm9ybSBhIGNoZWFwLCBjb25zZXJ2YXRpdmUgY2hlY2sgdG8gc2VlIGlmIGFueSBpbmRpdmlkdWFsXG4gICAgICAgICAgICAgICAgLy8gY291bnRlciBpcyBtb3JlIHRoYW4gMS41IHRpbWVzIHRoZSBhdmVyYWdlOlxuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtQ291bnRlcnMgJiYgd2lkZUNvdW50ZXJzID4gMDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBjb3VudGVyID0gY291bnRlcnNbaV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb3VudGVyID4gbWF4TmFycm93Q291bnRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkZUNvdW50ZXJzLS07XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0b3RhbFdpZGVDb3VudGVyc1dpZHRoID0gMyAqIGF2ZXJhZ2UsIHNvIHRoaXMgY2hlY2tzIGlmIGNvdW50ZXIgPj0gMy8yICogYXZlcmFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChjb3VudGVyICogMikgPj0gdG90YWxXaWRlQ291bnRlcnNXaWR0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcGF0dGVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSB3aGlsZSAod2lkZUNvdW50ZXJzID4gMyk7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9O1xuICAgIENvZGUzOVJlYWRlci5wYXR0ZXJuVG9DaGFyID0gZnVuY3Rpb24gKHBhdHRlcm4pIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBDb2RlMzlSZWFkZXIuQ0hBUkFDVEVSX0VOQ09ESU5HUy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKENvZGUzOVJlYWRlci5DSEFSQUNURVJfRU5DT0RJTkdTW2ldID09PSBwYXR0ZXJuKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIENvZGUzOVJlYWRlci5BTFBIQUJFVF9TVFJJTkcuY2hhckF0KGkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChwYXR0ZXJuID09PSBDb2RlMzlSZWFkZXIuQVNURVJJU0tfRU5DT0RJTkcpIHtcbiAgICAgICAgICAgIHJldHVybiAnKic7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgIH07XG4gICAgQ29kZTM5UmVhZGVyLmRlY29kZUV4dGVuZGVkID0gZnVuY3Rpb24gKGVuY29kZWQpIHtcbiAgICAgICAgdmFyIGxlbmd0aCA9IGVuY29kZWQubGVuZ3RoO1xuICAgICAgICB2YXIgZGVjb2RlZCA9ICcnO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgYyA9IGVuY29kZWQuY2hhckF0KGkpO1xuICAgICAgICAgICAgaWYgKGMgPT09ICcrJyB8fCBjID09PSAnJCcgfHwgYyA9PT0gJyUnIHx8IGMgPT09ICcvJykge1xuICAgICAgICAgICAgICAgIHZhciBuZXh0ID0gZW5jb2RlZC5jaGFyQXQoaSArIDEpO1xuICAgICAgICAgICAgICAgIHZhciBkZWNvZGVkQ2hhciA9ICdcXDAnO1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoYykge1xuICAgICAgICAgICAgICAgICAgICBjYXNlICcrJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICtBIHRvICtaIG1hcCB0byBhIHRvIHpcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXh0ID49ICdBJyAmJiBuZXh0IDw9ICdaJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZWRDaGFyID0gU3RyaW5nLmZyb21DaGFyQ29kZShuZXh0LmNoYXJDb2RlQXQoMCkgKyAzMik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJyQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJEEgdG8gJFogbWFwIHRvIGNvbnRyb2wgY29kZXMgU0ggdG8gU0JcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXh0ID49ICdBJyAmJiBuZXh0IDw9ICdaJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZWRDaGFyID0gU3RyaW5nLmZyb21DaGFyQ29kZShuZXh0LmNoYXJDb2RlQXQoMCkgLSA2NCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJyUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJUEgdG8gJUUgbWFwIHRvIGNvbnRyb2wgY29kZXMgRVNDIHRvIFVTXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV4dCA+PSAnQScgJiYgbmV4dCA8PSAnRScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVkQ2hhciA9IFN0cmluZy5mcm9tQ2hhckNvZGUobmV4dC5jaGFyQ29kZUF0KDApIC0gMzgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobmV4dCA+PSAnRicgJiYgbmV4dCA8PSAnSicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVkQ2hhciA9IFN0cmluZy5mcm9tQ2hhckNvZGUobmV4dC5jaGFyQ29kZUF0KDApIC0gMTEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobmV4dCA+PSAnSycgJiYgbmV4dCA8PSAnTycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVkQ2hhciA9IFN0cmluZy5mcm9tQ2hhckNvZGUobmV4dC5jaGFyQ29kZUF0KDApICsgMTYpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobmV4dCA+PSAnUCcgJiYgbmV4dCA8PSAnVCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVkQ2hhciA9IFN0cmluZy5mcm9tQ2hhckNvZGUobmV4dC5jaGFyQ29kZUF0KDApICsgNDMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobmV4dCA9PT0gJ1UnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlZENoYXIgPSAnXFwwJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5leHQgPT09ICdWJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZWRDaGFyID0gJ0AnO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobmV4dCA9PT0gJ1cnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlZENoYXIgPSAnYCc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChuZXh0ID09PSAnWCcgfHwgbmV4dCA9PT0gJ1knIHx8IG5leHQgPT09ICdaJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZWRDaGFyID0gJ1xceDdmJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnLyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAvQSB0byAvTyBtYXAgdG8gISB0byAsIGFuZCAvWiBtYXBzIHRvIDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXh0ID49ICdBJyAmJiBuZXh0IDw9ICdPJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZWRDaGFyID0gU3RyaW5nLmZyb21DaGFyQ29kZShuZXh0LmNoYXJDb2RlQXQoMCkgLSAzMik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChuZXh0ID09PSAnWicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVkQ2hhciA9ICc6JztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGVjb2RlZCArPSBkZWNvZGVkQ2hhcjtcbiAgICAgICAgICAgICAgICAvLyBidW1wIHVwIGkgYWdhaW4gc2luY2Ugd2UgcmVhZCB0d28gY2hhcmFjdGVyc1xuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGRlY29kZWQgKz0gYztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGVjb2RlZDtcbiAgICB9O1xuICAgIENvZGUzOVJlYWRlci5BTFBIQUJFVF9TVFJJTkcgPSAnMDEyMzQ1Njc4OUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaLS4gJC8rJSc7XG4gICAgLyoqXG4gICAgICogVGhlc2UgcmVwcmVzZW50IHRoZSBlbmNvZGluZ3Mgb2YgY2hhcmFjdGVycywgYXMgcGF0dGVybnMgb2Ygd2lkZSBhbmQgbmFycm93IGJhcnMuXG4gICAgICogVGhlIDkgbGVhc3Qtc2lnbmlmaWNhbnQgYml0cyBvZiBlYWNoIGludCBjb3JyZXNwb25kIHRvIHRoZSBwYXR0ZXJuIG9mIHdpZGUgYW5kIG5hcnJvdyxcbiAgICAgKiB3aXRoIDFzIHJlcHJlc2VudGluZyBcIndpZGVcIiBhbmQgMHMgcmVwcmVzZW50aW5nIG5hcnJvdy5cbiAgICAgKi9cbiAgICBDb2RlMzlSZWFkZXIuQ0hBUkFDVEVSX0VOQ09ESU5HUyA9IFtcbiAgICAgICAgMHgwMzQsIDB4MTIxLCAweDA2MSwgMHgxNjAsIDB4MDMxLCAweDEzMCwgMHgwNzAsIDB4MDI1LCAweDEyNCwgMHgwNjQsXG4gICAgICAgIDB4MTA5LCAweDA0OSwgMHgxNDgsIDB4MDE5LCAweDExOCwgMHgwNTgsIDB4MDBELCAweDEwQywgMHgwNEMsIDB4MDFDLFxuICAgICAgICAweDEwMywgMHgwNDMsIDB4MTQyLCAweDAxMywgMHgxMTIsIDB4MDUyLCAweDAwNywgMHgxMDYsIDB4MDQ2LCAweDAxNixcbiAgICAgICAgMHgxODEsIDB4MEMxLCAweDFDMCwgMHgwOTEsIDB4MTkwLCAweDBEMCwgMHgwODUsIDB4MTg0LCAweDBDNCwgMHgwQTgsXG4gICAgICAgIDB4MEEyLCAweDA4QSwgMHgwMkEgLy8gLy0lXG4gICAgXTtcbiAgICBDb2RlMzlSZWFkZXIuQVNURVJJU0tfRU5DT0RJTkcgPSAweDA5NDtcbiAgICByZXR1cm4gQ29kZTM5UmVhZGVyO1xufShPbmVEUmVhZGVyXzEuZGVmYXVsdCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gQ29kZTM5UmVhZGVyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Q29kZTM5UmVhZGVyLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuLypcbiAqIENvcHlyaWdodCAyMDA4IFpYaW5nIGF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbnZhciBfX3ZhbHVlcyA9ICh0aGlzICYmIHRoaXMuX192YWx1ZXMpIHx8IGZ1bmN0aW9uKG8pIHtcbiAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xuICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qbmFtZXNwYWNlIGNvbS5nb29nbGUuenhpbmcub25lZCB7Ki9cbnZhciBCYXJjb2RlRm9ybWF0XzEgPSByZXF1aXJlKFwiLi4vQmFyY29kZUZvcm1hdFwiKTtcbnZhciBEZWNvZGVIaW50VHlwZV8xID0gcmVxdWlyZShcIi4uL0RlY29kZUhpbnRUeXBlXCIpO1xudmFyIEZvcm1hdEV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4uL0Zvcm1hdEV4Y2VwdGlvblwiKTtcbnZhciBOb3RGb3VuZEV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4uL05vdEZvdW5kRXhjZXB0aW9uXCIpO1xudmFyIFJlc3VsdF8xID0gcmVxdWlyZShcIi4uL1Jlc3VsdFwiKTtcbnZhciBSZXN1bHRQb2ludF8xID0gcmVxdWlyZShcIi4uL1Jlc3VsdFBvaW50XCIpO1xudmFyIFN0cmluZ0J1aWxkZXJfMSA9IHJlcXVpcmUoXCIuLi91dGlsL1N0cmluZ0J1aWxkZXJcIik7XG52YXIgU3lzdGVtXzEgPSByZXF1aXJlKFwiLi4vdXRpbC9TeXN0ZW1cIik7XG52YXIgT25lRFJlYWRlcl8xID0gcmVxdWlyZShcIi4vT25lRFJlYWRlclwiKTtcbi8qKlxuICogPHA+RGVjb2RlcyBJVEYgYmFyY29kZXMuPC9wPlxuICpcbiAqIEBhdXRob3IgVGppZWNvXG4gKi9cbnZhciBJVEZSZWFkZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKElURlJlYWRlciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBJVEZSZWFkZXIoKSB7XG4gICAgICAgIC8vIHByaXZhdGUgc3RhdGljIFcgPSAzOyAvLyBQaXhlbCB3aWR0aCBvZiBhIDN4IHdpZGUgbGluZVxuICAgICAgICAvLyBwcml2YXRlIHN0YXRpYyB3ID0gMjsgLy8gUGl4ZWwgd2lkdGggb2YgYSAyeCB3aWRlIGxpbmVcbiAgICAgICAgLy8gcHJpdmF0ZSBzdGF0aWMgTiA9IDE7IC8vIFBpeGVkIHdpZHRoIG9mIGEgbmFycm93IGxpbmVcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgICAgIC8vIFN0b3JlcyB0aGUgYWN0dWFsIG5hcnJvdyBsaW5lIHdpZHRoIG9mIHRoZSBpbWFnZSBiZWluZyBkZWNvZGVkLlxuICAgICAgICBfdGhpcy5uYXJyb3dMaW5lV2lkdGggPSAtMTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICAvLyBTZWUgSVRGV3JpdGVyLlBBVFRFUk5TXG4gICAgLypcbiAgXG4gICAgLyEqKlxuICAgICAqIFBhdHRlcm5zIG9mIFdpZGUgLyBOYXJyb3cgbGluZXMgdG8gaW5kaWNhdGUgZWFjaCBkaWdpdFxuICAgICAqIS9cbiAgICAqL1xuICAgIElURlJlYWRlci5wcm90b3R5cGUuZGVjb2RlUm93ID0gZnVuY3Rpb24gKHJvd051bWJlciwgcm93LCBoaW50cykge1xuICAgICAgICB2YXIgZV8xLCBfYTtcbiAgICAgICAgLy8gRmluZCBvdXQgd2hlcmUgdGhlIE1pZGRsZSBzZWN0aW9uIChwYXlsb2FkKSBzdGFydHMgJiBlbmRzXG4gICAgICAgIHZhciBzdGFydFJhbmdlID0gdGhpcy5kZWNvZGVTdGFydChyb3cpO1xuICAgICAgICB2YXIgZW5kUmFuZ2UgPSB0aGlzLmRlY29kZUVuZChyb3cpO1xuICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1aWxkZXJfMS5kZWZhdWx0KCk7XG4gICAgICAgIElURlJlYWRlci5kZWNvZGVNaWRkbGUocm93LCBzdGFydFJhbmdlWzFdLCBlbmRSYW5nZVswXSwgcmVzdWx0KTtcbiAgICAgICAgdmFyIHJlc3VsdFN0cmluZyA9IHJlc3VsdC50b1N0cmluZygpO1xuICAgICAgICB2YXIgYWxsb3dlZExlbmd0aHMgPSBudWxsO1xuICAgICAgICBpZiAoaGludHMgIT0gbnVsbCkge1xuICAgICAgICAgICAgYWxsb3dlZExlbmd0aHMgPSBoaW50cy5nZXQoRGVjb2RlSGludFR5cGVfMS5kZWZhdWx0LkFMTE9XRURfTEVOR1RIUyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFsbG93ZWRMZW5ndGhzID09IG51bGwpIHtcbiAgICAgICAgICAgIGFsbG93ZWRMZW5ndGhzID0gSVRGUmVhZGVyLkRFRkFVTFRfQUxMT1dFRF9MRU5HVEhTO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRvIGF2b2lkIGZhbHNlIHBvc2l0aXZlcyB3aXRoIDJEIGJhcmNvZGVzIChhbmQgb3RoZXIgcGF0dGVybnMpLCBtYWtlXG4gICAgICAgIC8vIGFuIGFzc3VtcHRpb24gdGhhdCB0aGUgZGVjb2RlZCBzdHJpbmcgbXVzdCBiZSBhICdzdGFuZGFyZCcgbGVuZ3RoIGlmIGl0J3Mgc2hvcnRcbiAgICAgICAgdmFyIGxlbmd0aCA9IHJlc3VsdFN0cmluZy5sZW5ndGg7XG4gICAgICAgIHZhciBsZW5ndGhPSyA9IGZhbHNlO1xuICAgICAgICB2YXIgbWF4QWxsb3dlZExlbmd0aCA9IDA7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKHZhciBhbGxvd2VkTGVuZ3Roc18xID0gX192YWx1ZXMoYWxsb3dlZExlbmd0aHMpLCBhbGxvd2VkTGVuZ3Roc18xXzEgPSBhbGxvd2VkTGVuZ3Roc18xLm5leHQoKTsgIWFsbG93ZWRMZW5ndGhzXzFfMS5kb25lOyBhbGxvd2VkTGVuZ3Roc18xXzEgPSBhbGxvd2VkTGVuZ3Roc18xLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IGFsbG93ZWRMZW5ndGhzXzFfMS52YWx1ZTtcbiAgICAgICAgICAgICAgICBpZiAobGVuZ3RoID09PSB2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBsZW5ndGhPSyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPiBtYXhBbGxvd2VkTGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIG1heEFsbG93ZWRMZW5ndGggPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChhbGxvd2VkTGVuZ3Roc18xXzEgJiYgIWFsbG93ZWRMZW5ndGhzXzFfMS5kb25lICYmIChfYSA9IGFsbG93ZWRMZW5ndGhzXzEucmV0dXJuKSkgX2EuY2FsbChhbGxvd2VkTGVuZ3Roc18xKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWxlbmd0aE9LICYmIGxlbmd0aCA+IG1heEFsbG93ZWRMZW5ndGgpIHtcbiAgICAgICAgICAgIGxlbmd0aE9LID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWxlbmd0aE9LKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBwb2ludHMgPSBbbmV3IFJlc3VsdFBvaW50XzEuZGVmYXVsdChzdGFydFJhbmdlWzFdLCByb3dOdW1iZXIpLCBuZXcgUmVzdWx0UG9pbnRfMS5kZWZhdWx0KGVuZFJhbmdlWzBdLCByb3dOdW1iZXIpXTtcbiAgICAgICAgdmFyIHJlc3VsdFJldHVybiA9IG5ldyBSZXN1bHRfMS5kZWZhdWx0KHJlc3VsdFN0cmluZywgbnVsbCwgLy8gbm8gbmF0dXJhbCBieXRlIHJlcHJlc2VudGF0aW9uIGZvciB0aGVzZSBiYXJjb2Rlc1xuICAgICAgICAwLCBwb2ludHMsIEJhcmNvZGVGb3JtYXRfMS5kZWZhdWx0LklURiwgbmV3IERhdGUoKS5nZXRUaW1lKCkpO1xuICAgICAgICByZXR1cm4gcmVzdWx0UmV0dXJuO1xuICAgIH07XG4gICAgLypcbiAgICAvISoqXG4gICAgICogQHBhcmFtIHJvdyAgICAgICAgICByb3cgb2YgYmxhY2svd2hpdGUgdmFsdWVzIHRvIHNlYXJjaFxuICAgICAqIEBwYXJhbSBwYXlsb2FkU3RhcnQgb2Zmc2V0IG9mIHN0YXJ0IHBhdHRlcm5cbiAgICAgKiBAcGFyYW0gcmVzdWx0U3RyaW5nIHtAbGluayBTdHJpbmdCdWlsZGVyfSB0byBhcHBlbmQgZGVjb2RlZCBjaGFycyB0b1xuICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb24gaWYgZGVjb2RpbmcgY291bGQgbm90IGNvbXBsZXRlIHN1Y2Nlc3NmdWxseVxuICAgICAqIS8qL1xuICAgIElURlJlYWRlci5kZWNvZGVNaWRkbGUgPSBmdW5jdGlvbiAocm93LCBwYXlsb2FkU3RhcnQsIHBheWxvYWRFbmQsIHJlc3VsdFN0cmluZykge1xuICAgICAgICAvLyBEaWdpdHMgYXJlIGludGVybGVhdmVkIGluIHBhaXJzIC0gNSBibGFjayBsaW5lcyBmb3Igb25lIGRpZ2l0LCBhbmQgdGhlXG4gICAgICAgIC8vIDVcbiAgICAgICAgLy8gaW50ZXJsZWF2ZWQgd2hpdGUgbGluZXMgZm9yIHRoZSBzZWNvbmQgZGlnaXQuXG4gICAgICAgIC8vIFRoZXJlZm9yZSwgbmVlZCB0byBzY2FuIDEwIGxpbmVzIGFuZCB0aGVuXG4gICAgICAgIC8vIHNwbGl0IHRoZXNlIGludG8gdHdvIGFycmF5c1xuICAgICAgICB2YXIgY291bnRlckRpZ2l0UGFpciA9IG5ldyBJbnQzMkFycmF5KDEwKTsgLy8gMTBcbiAgICAgICAgdmFyIGNvdW50ZXJCbGFjayA9IG5ldyBJbnQzMkFycmF5KDUpOyAvLyA1XG4gICAgICAgIHZhciBjb3VudGVyV2hpdGUgPSBuZXcgSW50MzJBcnJheSg1KTsgLy8gNVxuICAgICAgICBjb3VudGVyRGlnaXRQYWlyLmZpbGwoMCk7XG4gICAgICAgIGNvdW50ZXJCbGFjay5maWxsKDApO1xuICAgICAgICBjb3VudGVyV2hpdGUuZmlsbCgwKTtcbiAgICAgICAgd2hpbGUgKHBheWxvYWRTdGFydCA8IHBheWxvYWRFbmQpIHtcbiAgICAgICAgICAgIC8vIEdldCAxMCBydW5zIG9mIGJsYWNrL3doaXRlLlxuICAgICAgICAgICAgT25lRFJlYWRlcl8xLmRlZmF1bHQucmVjb3JkUGF0dGVybihyb3csIHBheWxvYWRTdGFydCwgY291bnRlckRpZ2l0UGFpcik7XG4gICAgICAgICAgICAvLyBTcGxpdCB0aGVtIGludG8gZWFjaCBhcnJheVxuICAgICAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCA1OyBrKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgdHdvSyA9IDIgKiBrO1xuICAgICAgICAgICAgICAgIGNvdW50ZXJCbGFja1trXSA9IGNvdW50ZXJEaWdpdFBhaXJbdHdvS107XG4gICAgICAgICAgICAgICAgY291bnRlcldoaXRlW2tdID0gY291bnRlckRpZ2l0UGFpclt0d29LICsgMV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgYmVzdE1hdGNoID0gSVRGUmVhZGVyLmRlY29kZURpZ2l0KGNvdW50ZXJCbGFjayk7XG4gICAgICAgICAgICByZXN1bHRTdHJpbmcuYXBwZW5kKGJlc3RNYXRjaC50b1N0cmluZygpKTtcbiAgICAgICAgICAgIGJlc3RNYXRjaCA9IHRoaXMuZGVjb2RlRGlnaXQoY291bnRlcldoaXRlKTtcbiAgICAgICAgICAgIHJlc3VsdFN0cmluZy5hcHBlbmQoYmVzdE1hdGNoLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgY291bnRlckRpZ2l0UGFpci5mb3JFYWNoKGZ1bmN0aW9uIChjb3VudGVyRGlnaXQpIHtcbiAgICAgICAgICAgICAgICBwYXlsb2FkU3RhcnQgKz0gY291bnRlckRpZ2l0O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qLyEqKlxuICAgICAqIElkZW50aWZ5IHdoZXJlIHRoZSBzdGFydCBvZiB0aGUgbWlkZGxlIC8gcGF5bG9hZCBzZWN0aW9uIHN0YXJ0cy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByb3cgcm93IG9mIGJsYWNrL3doaXRlIHZhbHVlcyB0byBzZWFyY2hcbiAgICAgKiBAcmV0dXJuIEFycmF5LCBjb250YWluaW5nIGluZGV4IG9mIHN0YXJ0IG9mICdzdGFydCBibG9jaycgYW5kIGVuZCBvZlxuICAgICAqICAgICAgICAgJ3N0YXJ0IGJsb2NrJ1xuICAgICAqIS8qL1xuICAgIElURlJlYWRlci5wcm90b3R5cGUuZGVjb2RlU3RhcnQgPSBmdW5jdGlvbiAocm93KSB7XG4gICAgICAgIHZhciBlbmRTdGFydCA9IElURlJlYWRlci5za2lwV2hpdGVTcGFjZShyb3cpO1xuICAgICAgICB2YXIgc3RhcnRQYXR0ZXJuID0gSVRGUmVhZGVyLmZpbmRHdWFyZFBhdHRlcm4ocm93LCBlbmRTdGFydCwgSVRGUmVhZGVyLlNUQVJUX1BBVFRFUk4pO1xuICAgICAgICAvLyBEZXRlcm1pbmUgdGhlIHdpZHRoIG9mIGEgbmFycm93IGxpbmUgaW4gcGl4ZWxzLiBXZSBjYW4gZG8gdGhpcyBieVxuICAgICAgICAvLyBnZXR0aW5nIHRoZSB3aWR0aCBvZiB0aGUgc3RhcnQgcGF0dGVybiBhbmQgZGl2aWRpbmcgYnkgNCBiZWNhdXNlIGl0c1xuICAgICAgICAvLyBtYWRlIHVwIG9mIDQgbmFycm93IGxpbmVzLlxuICAgICAgICB0aGlzLm5hcnJvd0xpbmVXaWR0aCA9IChzdGFydFBhdHRlcm5bMV0gLSBzdGFydFBhdHRlcm5bMF0pIC8gNDtcbiAgICAgICAgdGhpcy52YWxpZGF0ZVF1aWV0Wm9uZShyb3csIHN0YXJ0UGF0dGVyblswXSk7XG4gICAgICAgIHJldHVybiBzdGFydFBhdHRlcm47XG4gICAgfTtcbiAgICAvKi8hKipcbiAgICAgKiBUaGUgc3RhcnQgJiBlbmQgcGF0dGVybnMgbXVzdCBiZSBwcmUvcG9zdCBmaXhlZCBieSBhIHF1aWV0IHpvbmUuIFRoaXNcbiAgICAgKiB6b25lIG11c3QgYmUgYXQgbGVhc3QgMTAgdGltZXMgdGhlIHdpZHRoIG9mIGEgbmFycm93IGxpbmUuICBTY2FuIGJhY2sgdW50aWxcbiAgICAgKiB3ZSBlaXRoZXIgZ2V0IHRvIHRoZSBzdGFydCBvZiB0aGUgYmFyY29kZSBvciBtYXRjaCB0aGUgbmVjZXNzYXJ5IG51bWJlciBvZlxuICAgICAqIHF1aWV0IHpvbmUgcGl4ZWxzLlxuICAgICAqXG4gICAgICogTm90ZTogSXRzIGFzc3VtZWQgdGhlIHJvdyBpcyByZXZlcnNlZCB3aGVuIHVzaW5nIHRoaXMgbWV0aG9kIHRvIGZpbmRcbiAgICAgKiBxdWlldCB6b25lIGFmdGVyIHRoZSBlbmQgcGF0dGVybi5cbiAgICAgKlxuICAgICAqIHJlZjogaHR0cDovL3d3dy5iYXJjb2RlLTEubmV0L2kyNWNvZGUuaHRtbFxuICAgICAqXG4gICAgICogQHBhcmFtIHJvdyBiaXQgYXJyYXkgcmVwcmVzZW50aW5nIHRoZSBzY2FubmVkIGJhcmNvZGUuXG4gICAgICogQHBhcmFtIHN0YXJ0UGF0dGVybiBpbmRleCBpbnRvIHJvdyBvZiB0aGUgc3RhcnQgb3IgZW5kIHBhdHRlcm4uXG4gICAgICogQHRocm93cyBOb3RGb3VuZEV4Y2VwdGlvbiBpZiB0aGUgcXVpZXQgem9uZSBjYW5ub3QgYmUgZm91bmRcbiAgICAgKiEvKi9cbiAgICBJVEZSZWFkZXIucHJvdG90eXBlLnZhbGlkYXRlUXVpZXRab25lID0gZnVuY3Rpb24gKHJvdywgc3RhcnRQYXR0ZXJuKSB7XG4gICAgICAgIHZhciBxdWlldENvdW50ID0gdGhpcy5uYXJyb3dMaW5lV2lkdGggKiAxMDsgLy8gZXhwZWN0IHRvIGZpbmQgdGhpcyBtYW55IHBpeGVscyBvZiBxdWlldCB6b25lXG4gICAgICAgIC8vIGlmIHRoZXJlIGFyZSBub3Qgc28gbWFueSBwaXhlbCBhdCBhbGwgbGV0J3MgdHJ5IGFzIG1hbnkgYXMgcG9zc2libGVcbiAgICAgICAgcXVpZXRDb3VudCA9IHF1aWV0Q291bnQgPCBzdGFydFBhdHRlcm4gPyBxdWlldENvdW50IDogc3RhcnRQYXR0ZXJuO1xuICAgICAgICBmb3IgKHZhciBpID0gc3RhcnRQYXR0ZXJuIC0gMTsgcXVpZXRDb3VudCA+IDAgJiYgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGlmIChyb3cuZ2V0KGkpKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBxdWlldENvdW50LS07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHF1aWV0Q291bnQgIT09IDApIHtcbiAgICAgICAgICAgIC8vIFVuYWJsZSB0byBmaW5kIHRoZSBuZWNlc3NhcnkgbnVtYmVyIG9mIHF1aWV0IHpvbmUgcGl4ZWxzLlxuICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKlxuICAgIC8hKipcbiAgICAgKiBTa2lwIGFsbCB3aGl0ZXNwYWNlIHVudGlsIHdlIGdldCB0byB0aGUgZmlyc3QgYmxhY2sgbGluZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByb3cgcm93IG9mIGJsYWNrL3doaXRlIHZhbHVlcyB0byBzZWFyY2hcbiAgICAgKiBAcmV0dXJuIGluZGV4IG9mIHRoZSBmaXJzdCBibGFjayBsaW5lLlxuICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb24gVGhyb3dzIGV4Y2VwdGlvbiBpZiBubyBibGFjayBsaW5lcyBhcmUgZm91bmQgaW4gdGhlIHJvd1xuICAgICAqIS8qL1xuICAgIElURlJlYWRlci5za2lwV2hpdGVTcGFjZSA9IGZ1bmN0aW9uIChyb3cpIHtcbiAgICAgICAgdmFyIHdpZHRoID0gcm93LmdldFNpemUoKTtcbiAgICAgICAgdmFyIGVuZFN0YXJ0ID0gcm93LmdldE5leHRTZXQoMCk7XG4gICAgICAgIGlmIChlbmRTdGFydCA9PT0gd2lkdGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZW5kU3RhcnQ7XG4gICAgfTtcbiAgICAvKi8hKipcbiAgICAgKiBJZGVudGlmeSB3aGVyZSB0aGUgZW5kIG9mIHRoZSBtaWRkbGUgLyBwYXlsb2FkIHNlY3Rpb24gZW5kcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByb3cgcm93IG9mIGJsYWNrL3doaXRlIHZhbHVlcyB0byBzZWFyY2hcbiAgICAgKiBAcmV0dXJuIEFycmF5LCBjb250YWluaW5nIGluZGV4IG9mIHN0YXJ0IG9mICdlbmQgYmxvY2snIGFuZCBlbmQgb2YgJ2VuZFxuICAgICAqICAgICAgICAgYmxvY2snXG4gICAgICohLyovXG4gICAgSVRGUmVhZGVyLnByb3RvdHlwZS5kZWNvZGVFbmQgPSBmdW5jdGlvbiAocm93KSB7XG4gICAgICAgIC8vIEZvciBjb252ZW5pZW5jZSwgcmV2ZXJzZSB0aGUgcm93IGFuZCB0aGVuXG4gICAgICAgIC8vIHNlYXJjaCBmcm9tICd0aGUgc3RhcnQnIGZvciB0aGUgZW5kIGJsb2NrXG4gICAgICAgIHJvdy5yZXZlcnNlKCk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB2YXIgZW5kU3RhcnQgPSBJVEZSZWFkZXIuc2tpcFdoaXRlU3BhY2Uocm93KTtcbiAgICAgICAgICAgIHZhciBlbmRQYXR0ZXJuID0gdm9pZCAwO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBlbmRQYXR0ZXJuID0gSVRGUmVhZGVyLmZpbmRHdWFyZFBhdHRlcm4ocm93LCBlbmRTdGFydCwgSVRGUmVhZGVyLkVORF9QQVRURVJOX1JFVkVSU0VEWzBdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCkge1xuICAgICAgICAgICAgICAgICAgICBlbmRQYXR0ZXJuID0gSVRGUmVhZGVyLmZpbmRHdWFyZFBhdHRlcm4ocm93LCBlbmRTdGFydCwgSVRGUmVhZGVyLkVORF9QQVRURVJOX1JFVkVSU0VEWzFdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBUaGUgc3RhcnQgJiBlbmQgcGF0dGVybnMgbXVzdCBiZSBwcmUvcG9zdCBmaXhlZCBieSBhIHF1aWV0IHpvbmUuIFRoaXNcbiAgICAgICAgICAgIC8vIHpvbmUgbXVzdCBiZSBhdCBsZWFzdCAxMCB0aW1lcyB0aGUgd2lkdGggb2YgYSBuYXJyb3cgbGluZS5cbiAgICAgICAgICAgIC8vIHJlZjogaHR0cDovL3d3dy5iYXJjb2RlLTEubmV0L2kyNWNvZGUuaHRtbFxuICAgICAgICAgICAgdGhpcy52YWxpZGF0ZVF1aWV0Wm9uZShyb3csIGVuZFBhdHRlcm5bMF0pO1xuICAgICAgICAgICAgLy8gTm93IHJlY2FsY3VsYXRlIHRoZSBpbmRpY2VzIG9mIHdoZXJlIHRoZSAnZW5kYmxvY2snIHN0YXJ0cyAmIHN0b3BzIHRvXG4gICAgICAgICAgICAvLyBhY2NvbW1vZGF0ZVxuICAgICAgICAgICAgLy8gdGhlIHJldmVyc2VkIG5hdHVyZSBvZiB0aGUgc2VhcmNoXG4gICAgICAgICAgICB2YXIgdGVtcCA9IGVuZFBhdHRlcm5bMF07XG4gICAgICAgICAgICBlbmRQYXR0ZXJuWzBdID0gcm93LmdldFNpemUoKSAtIGVuZFBhdHRlcm5bMV07XG4gICAgICAgICAgICBlbmRQYXR0ZXJuWzFdID0gcm93LmdldFNpemUoKSAtIHRlbXA7XG4gICAgICAgICAgICByZXR1cm4gZW5kUGF0dGVybjtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIC8vIFB1dCB0aGUgcm93IGJhY2sgdGhlIHJpZ2h0IHdheS5cbiAgICAgICAgICAgIHJvdy5yZXZlcnNlKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qXG4gICAgLyEqKlxuICAgICAqIEBwYXJhbSByb3cgICAgICAgcm93IG9mIGJsYWNrL3doaXRlIHZhbHVlcyB0byBzZWFyY2hcbiAgICAgKiBAcGFyYW0gcm93T2Zmc2V0IHBvc2l0aW9uIHRvIHN0YXJ0IHNlYXJjaFxuICAgICAqIEBwYXJhbSBwYXR0ZXJuICAgcGF0dGVybiBvZiBjb3VudHMgb2YgbnVtYmVyIG9mIGJsYWNrIGFuZCB3aGl0ZSBwaXhlbHMgdGhhdCBhcmVcbiAgICAgKiAgICAgICAgICAgICAgICAgIGJlaW5nIHNlYXJjaGVkIGZvciBhcyBhIHBhdHRlcm5cbiAgICAgKiBAcmV0dXJuIHN0YXJ0L2VuZCBob3Jpem9udGFsIG9mZnNldCBvZiBndWFyZCBwYXR0ZXJuLCBhcyBhbiBhcnJheSBvZiB0d29cbiAgICAgKiAgICAgICAgIGludHNcbiAgICAgKiBAdGhyb3dzIE5vdEZvdW5kRXhjZXB0aW9uIGlmIHBhdHRlcm4gaXMgbm90IGZvdW5kXG4gICAgICohLyovXG4gICAgSVRGUmVhZGVyLmZpbmRHdWFyZFBhdHRlcm4gPSBmdW5jdGlvbiAocm93LCByb3dPZmZzZXQsIHBhdHRlcm4pIHtcbiAgICAgICAgdmFyIHBhdHRlcm5MZW5ndGggPSBwYXR0ZXJuLmxlbmd0aDtcbiAgICAgICAgdmFyIGNvdW50ZXJzID0gbmV3IEludDMyQXJyYXkocGF0dGVybkxlbmd0aCk7XG4gICAgICAgIHZhciB3aWR0aCA9IHJvdy5nZXRTaXplKCk7XG4gICAgICAgIHZhciBpc1doaXRlID0gZmFsc2U7XG4gICAgICAgIHZhciBjb3VudGVyUG9zaXRpb24gPSAwO1xuICAgICAgICB2YXIgcGF0dGVyblN0YXJ0ID0gcm93T2Zmc2V0O1xuICAgICAgICBjb3VudGVycy5maWxsKDApO1xuICAgICAgICBmb3IgKHZhciB4ID0gcm93T2Zmc2V0OyB4IDwgd2lkdGg7IHgrKykge1xuICAgICAgICAgICAgaWYgKHJvdy5nZXQoeCkgIT09IGlzV2hpdGUpIHtcbiAgICAgICAgICAgICAgICBjb3VudGVyc1tjb3VudGVyUG9zaXRpb25dKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoY291bnRlclBvc2l0aW9uID09PSBwYXR0ZXJuTGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoT25lRFJlYWRlcl8xLmRlZmF1bHQucGF0dGVybk1hdGNoVmFyaWFuY2UoY291bnRlcnMsIHBhdHRlcm4sIElURlJlYWRlci5NQVhfSU5ESVZJRFVBTF9WQVJJQU5DRSkgPCBJVEZSZWFkZXIuTUFYX0FWR19WQVJJQU5DRSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtwYXR0ZXJuU3RhcnQsIHhdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHBhdHRlcm5TdGFydCArPSBjb3VudGVyc1swXSArIGNvdW50ZXJzWzFdO1xuICAgICAgICAgICAgICAgICAgICBTeXN0ZW1fMS5kZWZhdWx0LmFycmF5Y29weShjb3VudGVycywgMiwgY291bnRlcnMsIDAsIGNvdW50ZXJQb3NpdGlvbiAtIDEpO1xuICAgICAgICAgICAgICAgICAgICBjb3VudGVyc1tjb3VudGVyUG9zaXRpb24gLSAxXSA9IDA7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50ZXJzW2NvdW50ZXJQb3NpdGlvbl0gPSAwO1xuICAgICAgICAgICAgICAgICAgICBjb3VudGVyUG9zaXRpb24tLTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50ZXJQb3NpdGlvbisrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb3VudGVyc1tjb3VudGVyUG9zaXRpb25dID0gMTtcbiAgICAgICAgICAgICAgICBpc1doaXRlID0gIWlzV2hpdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgIH07XG4gICAgLyovISoqXG4gICAgICogQXR0ZW1wdHMgdG8gZGVjb2RlIGEgc2VxdWVuY2Ugb2YgSVRGIGJsYWNrL3doaXRlIGxpbmVzIGludG8gc2luZ2xlXG4gICAgICogZGlnaXQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY291bnRlcnMgdGhlIGNvdW50cyBvZiBydW5zIG9mIG9ic2VydmVkIGJsYWNrL3doaXRlL2JsYWNrLy4uLiB2YWx1ZXNcbiAgICAgKiBAcmV0dXJuIFRoZSBkZWNvZGVkIGRpZ2l0XG4gICAgICogQHRocm93cyBOb3RGb3VuZEV4Y2VwdGlvbiBpZiBkaWdpdCBjYW5ub3QgYmUgZGVjb2RlZFxuICAgICAqIS8qL1xuICAgIElURlJlYWRlci5kZWNvZGVEaWdpdCA9IGZ1bmN0aW9uIChjb3VudGVycykge1xuICAgICAgICB2YXIgYmVzdFZhcmlhbmNlID0gSVRGUmVhZGVyLk1BWF9BVkdfVkFSSUFOQ0U7IC8vIHdvcnN0IHZhcmlhbmNlIHdlJ2xsIGFjY2VwdFxuICAgICAgICB2YXIgYmVzdE1hdGNoID0gLTE7XG4gICAgICAgIHZhciBtYXggPSBJVEZSZWFkZXIuUEFUVEVSTlMubGVuZ3RoO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1heDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgcGF0dGVybiA9IElURlJlYWRlci5QQVRURVJOU1tpXTtcbiAgICAgICAgICAgIHZhciB2YXJpYW5jZSA9IE9uZURSZWFkZXJfMS5kZWZhdWx0LnBhdHRlcm5NYXRjaFZhcmlhbmNlKGNvdW50ZXJzLCBwYXR0ZXJuLCBJVEZSZWFkZXIuTUFYX0lORElWSURVQUxfVkFSSUFOQ0UpO1xuICAgICAgICAgICAgaWYgKHZhcmlhbmNlIDwgYmVzdFZhcmlhbmNlKSB7XG4gICAgICAgICAgICAgICAgYmVzdFZhcmlhbmNlID0gdmFyaWFuY2U7XG4gICAgICAgICAgICAgICAgYmVzdE1hdGNoID0gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHZhcmlhbmNlID09PSBiZXN0VmFyaWFuY2UpIHtcbiAgICAgICAgICAgICAgICAvLyBpZiB3ZSBmaW5kIGEgc2Vjb25kICdiZXN0IG1hdGNoJyB3aXRoIHRoZSBzYW1lIHZhcmlhbmNlLCB3ZSBjYW4gbm90IHJlbGlhYmx5IHJlcG9ydCB0byBoYXZlIGEgc3VpdGFibGUgbWF0Y2hcbiAgICAgICAgICAgICAgICBiZXN0TWF0Y2ggPSAtMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoYmVzdE1hdGNoID49IDApIHtcbiAgICAgICAgICAgIHJldHVybiBiZXN0TWF0Y2ggJSAxMDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgSVRGUmVhZGVyLlBBVFRFUk5TID0gW1xuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDEsIDIsIDIsIDFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFsyLCAxLCAxLCAxLCAyXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMiwgMSwgMSwgMl0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzIsIDIsIDEsIDEsIDFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAxLCAyLCAxLCAyXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMiwgMSwgMiwgMSwgMV0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDIsIDIsIDEsIDFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAxLCAxLCAyLCAyXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMiwgMSwgMSwgMiwgMV0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDIsIDEsIDIsIDFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAxLCAzLCAzLCAxXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMywgMSwgMSwgMSwgM10pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDMsIDEsIDEsIDNdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFszLCAzLCAxLCAxLCAxXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMSwgMywgMSwgM10pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzMsIDEsIDMsIDEsIDFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAzLCAzLCAxLCAxXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMSwgMSwgMywgM10pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzMsIDEsIDEsIDMsIDFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAzLCAxLCAzLCAxXSkgLy8gOVxuICAgIF07XG4gICAgSVRGUmVhZGVyLk1BWF9BVkdfVkFSSUFOQ0UgPSAwLjM4O1xuICAgIElURlJlYWRlci5NQVhfSU5ESVZJRFVBTF9WQVJJQU5DRSA9IDAuNTtcbiAgICAvKiAvISoqIFZhbGlkIElURiBsZW5ndGhzLiBBbnl0aGluZyBsb25nZXIgdGhhbiB0aGUgbGFyZ2VzdCB2YWx1ZSBpcyBhbHNvIGFsbG93ZWQuICohLyovXG4gICAgSVRGUmVhZGVyLkRFRkFVTFRfQUxMT1dFRF9MRU5HVEhTID0gWzYsIDgsIDEwLCAxMiwgMTRdO1xuICAgIC8qLyEqKlxuICAgICAqIFN0YXJ0L2VuZCBndWFyZCBwYXR0ZXJuLlxuICAgICAqXG4gICAgICogTm90ZTogVGhlIGVuZCBwYXR0ZXJuIGlzIHJldmVyc2VkIGJlY2F1c2UgdGhlIHJvdyBpcyByZXZlcnNlZCBiZWZvcmVcbiAgICAgKiBzZWFyY2hpbmcgZm9yIHRoZSBFTkRfUEFUVEVSTlxuICAgICAqIS8qL1xuICAgIElURlJlYWRlci5TVEFSVF9QQVRURVJOID0gSW50MzJBcnJheS5mcm9tKFsxLCAxLCAxLCAxXSk7XG4gICAgSVRGUmVhZGVyLkVORF9QQVRURVJOX1JFVkVSU0VEID0gW1xuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDEsIDJdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAxLCAzXSkgLy8gM3hcbiAgICBdO1xuICAgIHJldHVybiBJVEZSZWFkZXI7XG59KE9uZURSZWFkZXJfMS5kZWZhdWx0KSk7XG5leHBvcnRzLmRlZmF1bHQgPSBJVEZSZWFkZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1JVEZSZWFkZXIuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IDIwMDggWlhpbmcgYXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIE9uZURSZWFkZXJfMSA9IHJlcXVpcmUoXCIuL09uZURSZWFkZXJcIik7XG52YXIgTm90Rm91bmRFeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuLi9Ob3RGb3VuZEV4Y2VwdGlvblwiKTtcbnZhciBGb3JtYXRFeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuLi9Gb3JtYXRFeGNlcHRpb25cIik7XG4vKipcbiAqIDxwPkVuY2Fwc3VsYXRlcyBmdW5jdGlvbmFsaXR5IGFuZCBpbXBsZW1lbnRhdGlvbiB0aGF0IGlzIGNvbW1vbiB0byBVUEMgYW5kIEVBTiBmYW1pbGllc1xuICogb2Ygb25lLWRpbWVuc2lvbmFsIGJhcmNvZGVzLjwvcD5cbiAqXG4gKiBAYXV0aG9yIGRzd2l0a2luQGdvb2dsZS5jb20gKERhbmllbCBTd2l0a2luKVxuICogQGF1dGhvciBTZWFuIE93ZW5cbiAqIEBhdXRob3IgYWxhc2RhaXJAZ29vZ2xlLmNvbSAoQWxhc2RhaXIgTWFja2ludG9zaClcbiAqL1xudmFyIEFic3RyYWN0VVBDRUFOUmVhZGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhBYnN0cmFjdFVQQ0VBTlJlYWRlciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBBYnN0cmFjdFVQQ0VBTlJlYWRlcigpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLmRlY29kZVJvd1N0cmluZ0J1ZmZlciA9ICcnO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIC8vIHByaXZhdGUgZmluYWwgVVBDRUFORXh0ZW5zaW9uU3VwcG9ydCBleHRlbnNpb25SZWFkZXI7XG4gICAgLy8gcHJpdmF0ZSBmaW5hbCBFQU5NYW51ZmFjdHVyZXJPcmdTdXBwb3J0IGVhbk1hblN1cHBvcnQ7XG4gICAgLypcbiAgICBwcm90ZWN0ZWQgVVBDRUFOUmVhZGVyKCkge1xuICAgICAgICBkZWNvZGVSb3dTdHJpbmdCdWZmZXIgPSBuZXcgU3RyaW5nQnVpbGRlcigyMCk7XG4gICAgICAgIGV4dGVuc2lvblJlYWRlciA9IG5ldyBVUENFQU5FeHRlbnNpb25TdXBwb3J0KCk7XG4gICAgICAgIGVhbk1hblN1cHBvcnQgPSBuZXcgRUFOTWFudWZhY3R1cmVyT3JnU3VwcG9ydCgpO1xuICAgIH1cbiAgICAqL1xuICAgIEFic3RyYWN0VVBDRUFOUmVhZGVyLmZpbmRTdGFydEd1YXJkUGF0dGVybiA9IGZ1bmN0aW9uIChyb3cpIHtcbiAgICAgICAgdmFyIGZvdW5kU3RhcnQgPSBmYWxzZTtcbiAgICAgICAgdmFyIHN0YXJ0UmFuZ2U7XG4gICAgICAgIHZhciBuZXh0U3RhcnQgPSAwO1xuICAgICAgICB2YXIgY291bnRlcnMgPSBJbnQzMkFycmF5LmZyb20oWzAsIDAsIDBdKTtcbiAgICAgICAgd2hpbGUgKCFmb3VuZFN0YXJ0KSB7XG4gICAgICAgICAgICBjb3VudGVycyA9IEludDMyQXJyYXkuZnJvbShbMCwgMCwgMF0pO1xuICAgICAgICAgICAgc3RhcnRSYW5nZSA9IEFic3RyYWN0VVBDRUFOUmVhZGVyLmZpbmRHdWFyZFBhdHRlcm4ocm93LCBuZXh0U3RhcnQsIGZhbHNlLCB0aGlzLlNUQVJUX0VORF9QQVRURVJOLCBjb3VudGVycyk7XG4gICAgICAgICAgICB2YXIgc3RhcnQgPSBzdGFydFJhbmdlWzBdO1xuICAgICAgICAgICAgbmV4dFN0YXJ0ID0gc3RhcnRSYW5nZVsxXTtcbiAgICAgICAgICAgIHZhciBxdWlldFN0YXJ0ID0gc3RhcnQgLSAobmV4dFN0YXJ0IC0gc3RhcnQpO1xuICAgICAgICAgICAgaWYgKHF1aWV0U3RhcnQgPj0gMCkge1xuICAgICAgICAgICAgICAgIGZvdW5kU3RhcnQgPSByb3cuaXNSYW5nZShxdWlldFN0YXJ0LCBzdGFydCwgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdGFydFJhbmdlO1xuICAgIH07XG4gICAgQWJzdHJhY3RVUENFQU5SZWFkZXIuY2hlY2tDaGVja3N1bSA9IGZ1bmN0aW9uIChzKSB7XG4gICAgICAgIHJldHVybiBBYnN0cmFjdFVQQ0VBTlJlYWRlci5jaGVja1N0YW5kYXJkVVBDRUFOQ2hlY2tzdW0ocyk7XG4gICAgfTtcbiAgICBBYnN0cmFjdFVQQ0VBTlJlYWRlci5jaGVja1N0YW5kYXJkVVBDRUFOQ2hlY2tzdW0gPSBmdW5jdGlvbiAocykge1xuICAgICAgICB2YXIgbGVuZ3RoID0gcy5sZW5ndGg7XG4gICAgICAgIGlmIChsZW5ndGggPT09IDApXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIHZhciBjaGVjayA9IHBhcnNlSW50KHMuY2hhckF0KGxlbmd0aCAtIDEpLCAxMCk7XG4gICAgICAgIHJldHVybiBBYnN0cmFjdFVQQ0VBTlJlYWRlci5nZXRTdGFuZGFyZFVQQ0VBTkNoZWNrc3VtKHMuc3Vic3RyaW5nKDAsIGxlbmd0aCAtIDEpKSA9PT0gY2hlY2s7XG4gICAgfTtcbiAgICBBYnN0cmFjdFVQQ0VBTlJlYWRlci5nZXRTdGFuZGFyZFVQQ0VBTkNoZWNrc3VtID0gZnVuY3Rpb24gKHMpIHtcbiAgICAgICAgdmFyIGxlbmd0aCA9IHMubGVuZ3RoO1xuICAgICAgICB2YXIgc3VtID0gMDtcbiAgICAgICAgZm9yICh2YXIgaSA9IGxlbmd0aCAtIDE7IGkgPj0gMDsgaSAtPSAyKSB7XG4gICAgICAgICAgICB2YXIgZGlnaXQgPSBzLmNoYXJBdChpKS5jaGFyQ29kZUF0KDApIC0gJzAnLmNoYXJDb2RlQXQoMCk7XG4gICAgICAgICAgICBpZiAoZGlnaXQgPCAwIHx8IGRpZ2l0ID4gOSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdW0gKz0gZGlnaXQ7XG4gICAgICAgIH1cbiAgICAgICAgc3VtICo9IDM7XG4gICAgICAgIGZvciAodmFyIGkgPSBsZW5ndGggLSAyOyBpID49IDA7IGkgLT0gMikge1xuICAgICAgICAgICAgdmFyIGRpZ2l0ID0gcy5jaGFyQXQoaSkuY2hhckNvZGVBdCgwKSAtICcwJy5jaGFyQ29kZUF0KDApO1xuICAgICAgICAgICAgaWYgKGRpZ2l0IDwgMCB8fCBkaWdpdCA+IDkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3VtICs9IGRpZ2l0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoMTAwMCAtIHN1bSkgJSAxMDtcbiAgICB9O1xuICAgIEFic3RyYWN0VVBDRUFOUmVhZGVyLmRlY29kZUVuZCA9IGZ1bmN0aW9uIChyb3csIGVuZFN0YXJ0KSB7XG4gICAgICAgIHJldHVybiBBYnN0cmFjdFVQQ0VBTlJlYWRlci5maW5kR3VhcmRQYXR0ZXJuKHJvdywgZW5kU3RhcnQsIGZhbHNlLCBBYnN0cmFjdFVQQ0VBTlJlYWRlci5TVEFSVF9FTkRfUEFUVEVSTiwgbmV3IEludDMyQXJyYXkoQWJzdHJhY3RVUENFQU5SZWFkZXIuU1RBUlRfRU5EX1BBVFRFUk4ubGVuZ3RoKS5maWxsKDApKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb25cbiAgICAgKi9cbiAgICBBYnN0cmFjdFVQQ0VBTlJlYWRlci5maW5kR3VhcmRQYXR0ZXJuV2l0aG91dENvdW50ZXJzID0gZnVuY3Rpb24gKHJvdywgcm93T2Zmc2V0LCB3aGl0ZUZpcnN0LCBwYXR0ZXJuKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbmRHdWFyZFBhdHRlcm4ocm93LCByb3dPZmZzZXQsIHdoaXRlRmlyc3QsIHBhdHRlcm4sIG5ldyBJbnQzMkFycmF5KHBhdHRlcm4ubGVuZ3RoKSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0gcm93IHJvdyBvZiBibGFjay93aGl0ZSB2YWx1ZXMgdG8gc2VhcmNoXG4gICAgICogQHBhcmFtIHJvd09mZnNldCBwb3NpdGlvbiB0byBzdGFydCBzZWFyY2hcbiAgICAgKiBAcGFyYW0gd2hpdGVGaXJzdCBpZiB0cnVlLCBpbmRpY2F0ZXMgdGhhdCB0aGUgcGF0dGVybiBzcGVjaWZpZXMgd2hpdGUvYmxhY2svd2hpdGUvLi4uXG4gICAgICogcGl4ZWwgY291bnRzLCBvdGhlcndpc2UsIGl0IGlzIGludGVycHJldGVkIGFzIGJsYWNrL3doaXRlL2JsYWNrLy4uLlxuICAgICAqIEBwYXJhbSBwYXR0ZXJuIHBhdHRlcm4gb2YgY291bnRzIG9mIG51bWJlciBvZiBibGFjayBhbmQgd2hpdGUgcGl4ZWxzIHRoYXQgYXJlIGJlaW5nXG4gICAgICogc2VhcmNoZWQgZm9yIGFzIGEgcGF0dGVyblxuICAgICAqIEBwYXJhbSBjb3VudGVycyBhcnJheSBvZiBjb3VudGVycywgYXMgbG9uZyBhcyBwYXR0ZXJuLCB0byByZS11c2VcbiAgICAgKiBAcmV0dXJuIHN0YXJ0L2VuZCBob3Jpem9udGFsIG9mZnNldCBvZiBndWFyZCBwYXR0ZXJuLCBhcyBhbiBhcnJheSBvZiB0d28gaW50c1xuICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb24gaWYgcGF0dGVybiBpcyBub3QgZm91bmRcbiAgICAgKi9cbiAgICBBYnN0cmFjdFVQQ0VBTlJlYWRlci5maW5kR3VhcmRQYXR0ZXJuID0gZnVuY3Rpb24gKHJvdywgcm93T2Zmc2V0LCB3aGl0ZUZpcnN0LCBwYXR0ZXJuLCBjb3VudGVycykge1xuICAgICAgICB2YXIgd2lkdGggPSByb3cuZ2V0U2l6ZSgpO1xuICAgICAgICByb3dPZmZzZXQgPSB3aGl0ZUZpcnN0ID8gcm93LmdldE5leHRVbnNldChyb3dPZmZzZXQpIDogcm93LmdldE5leHRTZXQocm93T2Zmc2V0KTtcbiAgICAgICAgdmFyIGNvdW50ZXJQb3NpdGlvbiA9IDA7XG4gICAgICAgIHZhciBwYXR0ZXJuU3RhcnQgPSByb3dPZmZzZXQ7XG4gICAgICAgIHZhciBwYXR0ZXJuTGVuZ3RoID0gcGF0dGVybi5sZW5ndGg7XG4gICAgICAgIHZhciBpc1doaXRlID0gd2hpdGVGaXJzdDtcbiAgICAgICAgZm9yICh2YXIgeCA9IHJvd09mZnNldDsgeCA8IHdpZHRoOyB4KyspIHtcbiAgICAgICAgICAgIGlmIChyb3cuZ2V0KHgpICE9PSBpc1doaXRlKSB7XG4gICAgICAgICAgICAgICAgY291bnRlcnNbY291bnRlclBvc2l0aW9uXSsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGNvdW50ZXJQb3NpdGlvbiA9PT0gcGF0dGVybkxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKE9uZURSZWFkZXJfMS5kZWZhdWx0LnBhdHRlcm5NYXRjaFZhcmlhbmNlKGNvdW50ZXJzLCBwYXR0ZXJuLCBBYnN0cmFjdFVQQ0VBTlJlYWRlci5NQVhfSU5ESVZJRFVBTF9WQVJJQU5DRSkgPCBBYnN0cmFjdFVQQ0VBTlJlYWRlci5NQVhfQVZHX1ZBUklBTkNFKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSW50MzJBcnJheS5mcm9tKFtwYXR0ZXJuU3RhcnQsIHhdKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuU3RhcnQgKz0gY291bnRlcnNbMF0gKyBjb3VudGVyc1sxXTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNsaWNlID0gY291bnRlcnMuc2xpY2UoMiwgY291bnRlcnMubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnRlclBvc2l0aW9uIC0gMTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyc1tpXSA9IHNsaWNlW2ldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvdW50ZXJzW2NvdW50ZXJQb3NpdGlvbiAtIDFdID0gMDtcbiAgICAgICAgICAgICAgICAgICAgY291bnRlcnNbY291bnRlclBvc2l0aW9uXSA9IDA7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50ZXJQb3NpdGlvbi0tO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY291bnRlclBvc2l0aW9uKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvdW50ZXJzW2NvdW50ZXJQb3NpdGlvbl0gPSAxO1xuICAgICAgICAgICAgICAgIGlzV2hpdGUgPSAhaXNXaGl0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgfTtcbiAgICBBYnN0cmFjdFVQQ0VBTlJlYWRlci5kZWNvZGVEaWdpdCA9IGZ1bmN0aW9uIChyb3csIGNvdW50ZXJzLCByb3dPZmZzZXQsIHBhdHRlcm5zKSB7XG4gICAgICAgIHRoaXMucmVjb3JkUGF0dGVybihyb3csIHJvd09mZnNldCwgY291bnRlcnMpO1xuICAgICAgICB2YXIgYmVzdFZhcmlhbmNlID0gdGhpcy5NQVhfQVZHX1ZBUklBTkNFO1xuICAgICAgICB2YXIgYmVzdE1hdGNoID0gLTE7XG4gICAgICAgIHZhciBtYXggPSBwYXR0ZXJucy5sZW5ndGg7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWF4OyBpKyspIHtcbiAgICAgICAgICAgIHZhciBwYXR0ZXJuID0gcGF0dGVybnNbaV07XG4gICAgICAgICAgICB2YXIgdmFyaWFuY2UgPSBPbmVEUmVhZGVyXzEuZGVmYXVsdC5wYXR0ZXJuTWF0Y2hWYXJpYW5jZShjb3VudGVycywgcGF0dGVybiwgQWJzdHJhY3RVUENFQU5SZWFkZXIuTUFYX0lORElWSURVQUxfVkFSSUFOQ0UpO1xuICAgICAgICAgICAgaWYgKHZhcmlhbmNlIDwgYmVzdFZhcmlhbmNlKSB7XG4gICAgICAgICAgICAgICAgYmVzdFZhcmlhbmNlID0gdmFyaWFuY2U7XG4gICAgICAgICAgICAgICAgYmVzdE1hdGNoID0gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoYmVzdE1hdGNoID49IDApIHtcbiAgICAgICAgICAgIHJldHVybiBiZXN0TWF0Y2g7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIFRoZXNlIHR3byB2YWx1ZXMgYXJlIGNyaXRpY2FsIGZvciBkZXRlcm1pbmluZyBob3cgcGVybWlzc2l2ZSB0aGUgZGVjb2Rpbmcgd2lsbCBiZS5cbiAgICAvLyBXZSd2ZSBhcnJpdmVkIGF0IHRoZXNlIHZhbHVlcyB0aHJvdWdoIGEgbG90IG9mIHRyaWFsIGFuZCBlcnJvci4gU2V0dGluZyB0aGVtIGFueSBoaWdoZXJcbiAgICAvLyBsZXRzIGZhbHNlIHBvc2l0aXZlcyBjcmVlcCBpbiBxdWlja2x5LlxuICAgIEFic3RyYWN0VVBDRUFOUmVhZGVyLk1BWF9BVkdfVkFSSUFOQ0UgPSAwLjQ4O1xuICAgIEFic3RyYWN0VVBDRUFOUmVhZGVyLk1BWF9JTkRJVklEVUFMX1ZBUklBTkNFID0gMC43O1xuICAgIC8qKlxuICAgICAqIFN0YXJ0L2VuZCBndWFyZCBwYXR0ZXJuLlxuICAgICAqL1xuICAgIEFic3RyYWN0VVBDRUFOUmVhZGVyLlNUQVJUX0VORF9QQVRURVJOID0gSW50MzJBcnJheS5mcm9tKFsxLCAxLCAxXSk7XG4gICAgLyoqXG4gICAgICogUGF0dGVybiBtYXJraW5nIHRoZSBtaWRkbGUgb2YgYSBVUEMvRUFOIHBhdHRlcm4sIHNlcGFyYXRpbmcgdGhlIHR3byBoYWx2ZXMuXG4gICAgICovXG4gICAgQWJzdHJhY3RVUENFQU5SZWFkZXIuTUlERExFX1BBVFRFUk4gPSBJbnQzMkFycmF5LmZyb20oWzEsIDEsIDEsIDEsIDFdKTtcbiAgICAvKipcbiAgICAgKiBlbmQgZ3VhcmQgcGF0dGVybi5cbiAgICAgKi9cbiAgICBBYnN0cmFjdFVQQ0VBTlJlYWRlci5FTkRfUEFUVEVSTiA9IEludDMyQXJyYXkuZnJvbShbMSwgMSwgMSwgMSwgMSwgMV0pO1xuICAgIC8qKlxuICAgICAqIFwiT2RkXCIsIG9yIFwiTFwiIHBhdHRlcm5zIHVzZWQgdG8gZW5jb2RlIFVQQy9FQU4gZGlnaXRzLlxuICAgICAqL1xuICAgIEFic3RyYWN0VVBDRUFOUmVhZGVyLkxfUEFUVEVSTlMgPSBbXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMywgMiwgMSwgMV0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzIsIDIsIDIsIDFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFsyLCAxLCAyLCAyXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgNCwgMSwgMV0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDEsIDMsIDJdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAyLCAzLCAxXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMSwgMSwgNF0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDMsIDEsIDJdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAyLCAxLCAzXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMywgMSwgMSwgMl0pLFxuICAgIF07XG4gICAgcmV0dXJuIEFic3RyYWN0VVBDRUFOUmVhZGVyO1xufShPbmVEUmVhZGVyXzEuZGVmYXVsdCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gQWJzdHJhY3RVUENFQU5SZWFkZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BYnN0cmFjdFVQQ0VBTlJlYWRlci5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgWlhpbmcgYXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbnZhciBfX3ZhbHVlcyA9ICh0aGlzICYmIHRoaXMuX192YWx1ZXMpIHx8IGZ1bmN0aW9uKG8pIHtcbiAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xuICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBCYXJjb2RlRm9ybWF0XzEgPSByZXF1aXJlKFwiLi4vQmFyY29kZUZvcm1hdFwiKTtcbi8vIGltcG9ydCBVUENFQU5SZWFkZXIgZnJvbSAnLi9VUENFQU5SZWFkZXInO1xudmFyIEFic3RyYWN0VVBDRUFOUmVhZGVyXzEgPSByZXF1aXJlKFwiLi9BYnN0cmFjdFVQQ0VBTlJlYWRlclwiKTtcbnZhciBSZXN1bHRfMSA9IHJlcXVpcmUoXCIuLi9SZXN1bHRcIik7XG52YXIgUmVzdWx0UG9pbnRfMSA9IHJlcXVpcmUoXCIuLi9SZXN1bHRQb2ludFwiKTtcbnZhciBSZXN1bHRNZXRhZGF0YVR5cGVfMSA9IHJlcXVpcmUoXCIuLi9SZXN1bHRNZXRhZGF0YVR5cGVcIik7XG52YXIgTm90Rm91bmRFeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuLi9Ob3RGb3VuZEV4Y2VwdGlvblwiKTtcbi8qKlxuICogQHNlZSBVUENFQU5FeHRlbnNpb24yU3VwcG9ydFxuICovXG52YXIgVVBDRUFORXh0ZW5zaW9uNVN1cHBvcnQgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gVVBDRUFORXh0ZW5zaW9uNVN1cHBvcnQoKSB7XG4gICAgICAgIHRoaXMuQ0hFQ0tfRElHSVRfRU5DT0RJTkdTID0gWzB4MTgsIDB4MTQsIDB4MTIsIDB4MTEsIDB4MEMsIDB4MDYsIDB4MDMsIDB4MEEsIDB4MDksIDB4MDVdO1xuICAgICAgICB0aGlzLmRlY29kZU1pZGRsZUNvdW50ZXJzID0gSW50MzJBcnJheS5mcm9tKFswLCAwLCAwLCAwXSk7XG4gICAgICAgIHRoaXMuZGVjb2RlUm93U3RyaW5nQnVmZmVyID0gJyc7XG4gICAgfVxuICAgIFVQQ0VBTkV4dGVuc2lvbjVTdXBwb3J0LnByb3RvdHlwZS5kZWNvZGVSb3cgPSBmdW5jdGlvbiAocm93TnVtYmVyLCByb3csIGV4dGVuc2lvblN0YXJ0UmFuZ2UpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuZGVjb2RlUm93U3RyaW5nQnVmZmVyO1xuICAgICAgICB2YXIgZW5kID0gdGhpcy5kZWNvZGVNaWRkbGUocm93LCBleHRlbnNpb25TdGFydFJhbmdlLCByZXN1bHQpO1xuICAgICAgICB2YXIgcmVzdWx0U3RyaW5nID0gcmVzdWx0LnRvU3RyaW5nKCk7XG4gICAgICAgIHZhciBleHRlbnNpb25EYXRhID0gVVBDRUFORXh0ZW5zaW9uNVN1cHBvcnQucGFyc2VFeHRlbnNpb25TdHJpbmcocmVzdWx0U3RyaW5nKTtcbiAgICAgICAgdmFyIHJlc3VsdFBvaW50cyA9IFtcbiAgICAgICAgICAgIG5ldyBSZXN1bHRQb2ludF8xLmRlZmF1bHQoKGV4dGVuc2lvblN0YXJ0UmFuZ2VbMF0gKyBleHRlbnNpb25TdGFydFJhbmdlWzFdKSAvIDIuMCwgcm93TnVtYmVyKSxcbiAgICAgICAgICAgIG5ldyBSZXN1bHRQb2ludF8xLmRlZmF1bHQoZW5kLCByb3dOdW1iZXIpXG4gICAgICAgIF07XG4gICAgICAgIHZhciBleHRlbnNpb25SZXN1bHQgPSBuZXcgUmVzdWx0XzEuZGVmYXVsdChyZXN1bHRTdHJpbmcsIG51bGwsIDAsIHJlc3VsdFBvaW50cywgQmFyY29kZUZvcm1hdF8xLmRlZmF1bHQuVVBDX0VBTl9FWFRFTlNJT04sIG5ldyBEYXRlKCkuZ2V0VGltZSgpKTtcbiAgICAgICAgaWYgKGV4dGVuc2lvbkRhdGEgIT0gbnVsbCkge1xuICAgICAgICAgICAgZXh0ZW5zaW9uUmVzdWx0LnB1dEFsbE1ldGFkYXRhKGV4dGVuc2lvbkRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBleHRlbnNpb25SZXN1bHQ7XG4gICAgfTtcbiAgICBVUENFQU5FeHRlbnNpb241U3VwcG9ydC5wcm90b3R5cGUuZGVjb2RlTWlkZGxlID0gZnVuY3Rpb24gKHJvdywgc3RhcnRSYW5nZSwgcmVzdWx0U3RyaW5nKSB7XG4gICAgICAgIHZhciBlXzEsIF9hO1xuICAgICAgICB2YXIgY291bnRlcnMgPSB0aGlzLmRlY29kZU1pZGRsZUNvdW50ZXJzO1xuICAgICAgICBjb3VudGVyc1swXSA9IDA7XG4gICAgICAgIGNvdW50ZXJzWzFdID0gMDtcbiAgICAgICAgY291bnRlcnNbMl0gPSAwO1xuICAgICAgICBjb3VudGVyc1szXSA9IDA7XG4gICAgICAgIHZhciBlbmQgPSByb3cuZ2V0U2l6ZSgpO1xuICAgICAgICB2YXIgcm93T2Zmc2V0ID0gc3RhcnRSYW5nZVsxXTtcbiAgICAgICAgdmFyIGxnUGF0dGVybkZvdW5kID0gMDtcbiAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCA1ICYmIHJvd09mZnNldCA8IGVuZDsgeCsrKSB7XG4gICAgICAgICAgICB2YXIgYmVzdE1hdGNoID0gQWJzdHJhY3RVUENFQU5SZWFkZXJfMS5kZWZhdWx0LmRlY29kZURpZ2l0KHJvdywgY291bnRlcnMsIHJvd09mZnNldCwgQWJzdHJhY3RVUENFQU5SZWFkZXJfMS5kZWZhdWx0LkxfQU5EX0dfUEFUVEVSTlMpO1xuICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKCcwJy5jaGFyQ29kZUF0KDApICsgYmVzdE1hdGNoICUgMTApKTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgY291bnRlcnNfMSA9IChlXzEgPSB2b2lkIDAsIF9fdmFsdWVzKGNvdW50ZXJzKSksIGNvdW50ZXJzXzFfMSA9IGNvdW50ZXJzXzEubmV4dCgpOyAhY291bnRlcnNfMV8xLmRvbmU7IGNvdW50ZXJzXzFfMSA9IGNvdW50ZXJzXzEubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBjb3VudGVyID0gY291bnRlcnNfMV8xLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICByb3dPZmZzZXQgKz0gY291bnRlcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfVxuICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvdW50ZXJzXzFfMSAmJiAhY291bnRlcnNfMV8xLmRvbmUgJiYgKF9hID0gY291bnRlcnNfMS5yZXR1cm4pKSBfYS5jYWxsKGNvdW50ZXJzXzEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYmVzdE1hdGNoID49IDEwKSB7XG4gICAgICAgICAgICAgICAgbGdQYXR0ZXJuRm91bmQgfD0gMSA8PCAoNCAtIHgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHggIT09IDQpIHtcbiAgICAgICAgICAgICAgICAvLyBSZWFkIG9mZiBzZXBhcmF0b3IgaWYgbm90IGxhc3RcbiAgICAgICAgICAgICAgICByb3dPZmZzZXQgPSByb3cuZ2V0TmV4dFNldChyb3dPZmZzZXQpO1xuICAgICAgICAgICAgICAgIHJvd09mZnNldCA9IHJvdy5nZXROZXh0VW5zZXQocm93T2Zmc2V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzdWx0U3RyaW5nLmxlbmd0aCAhPT0gNSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBjaGVja0RpZ2l0ID0gdGhpcy5kZXRlcm1pbmVDaGVja0RpZ2l0KGxnUGF0dGVybkZvdW5kKTtcbiAgICAgICAgaWYgKFVQQ0VBTkV4dGVuc2lvbjVTdXBwb3J0LmV4dGVuc2lvbkNoZWNrc3VtKHJlc3VsdFN0cmluZy50b1N0cmluZygpKSAhPT0gY2hlY2tEaWdpdCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByb3dPZmZzZXQ7XG4gICAgfTtcbiAgICBVUENFQU5FeHRlbnNpb241U3VwcG9ydC5leHRlbnNpb25DaGVja3N1bSA9IGZ1bmN0aW9uIChzKSB7XG4gICAgICAgIHZhciBsZW5ndGggPSBzLmxlbmd0aDtcbiAgICAgICAgdmFyIHN1bSA9IDA7XG4gICAgICAgIGZvciAodmFyIGkgPSBsZW5ndGggLSAyOyBpID49IDA7IGkgLT0gMikge1xuICAgICAgICAgICAgc3VtICs9IHMuY2hhckF0KGkpLmNoYXJDb2RlQXQoMCkgLSAnMCcuY2hhckNvZGVBdCgwKTtcbiAgICAgICAgfVxuICAgICAgICBzdW0gKj0gMztcbiAgICAgICAgZm9yICh2YXIgaSA9IGxlbmd0aCAtIDE7IGkgPj0gMDsgaSAtPSAyKSB7XG4gICAgICAgICAgICBzdW0gKz0gcy5jaGFyQXQoaSkuY2hhckNvZGVBdCgwKSAtICcwJy5jaGFyQ29kZUF0KDApO1xuICAgICAgICB9XG4gICAgICAgIHN1bSAqPSAzO1xuICAgICAgICByZXR1cm4gc3VtICUgMTA7XG4gICAgfTtcbiAgICBVUENFQU5FeHRlbnNpb241U3VwcG9ydC5wcm90b3R5cGUuZGV0ZXJtaW5lQ2hlY2tEaWdpdCA9IGZ1bmN0aW9uIChsZ1BhdHRlcm5Gb3VuZCkge1xuICAgICAgICBmb3IgKHZhciBkID0gMDsgZCA8IDEwOyBkKyspIHtcbiAgICAgICAgICAgIGlmIChsZ1BhdHRlcm5Gb3VuZCA9PT0gdGhpcy5DSEVDS19ESUdJVF9FTkNPRElOR1NbZF0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgfTtcbiAgICBVUENFQU5FeHRlbnNpb241U3VwcG9ydC5wYXJzZUV4dGVuc2lvblN0cmluZyA9IGZ1bmN0aW9uIChyYXcpIHtcbiAgICAgICAgaWYgKHJhdy5sZW5ndGggIT09IDUpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHZhciB2YWx1ZSA9IFVQQ0VBTkV4dGVuc2lvbjVTdXBwb3J0LnBhcnNlRXh0ZW5zaW9uNVN0cmluZyhyYXcpO1xuICAgICAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBNYXAoW1tSZXN1bHRNZXRhZGF0YVR5cGVfMS5kZWZhdWx0LlNVR0dFU1RFRF9QUklDRSwgdmFsdWVdXSk7XG4gICAgfTtcbiAgICBVUENFQU5FeHRlbnNpb241U3VwcG9ydC5wYXJzZUV4dGVuc2lvbjVTdHJpbmcgPSBmdW5jdGlvbiAocmF3KSB7XG4gICAgICAgIHZhciBjdXJyZW5jeTtcbiAgICAgICAgc3dpdGNoIChyYXcuY2hhckF0KDApKSB7XG4gICAgICAgICAgICBjYXNlICcwJzpcbiAgICAgICAgICAgICAgICBjdXJyZW5jeSA9ICfCoyc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICc1JzpcbiAgICAgICAgICAgICAgICBjdXJyZW5jeSA9ICckJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJzknOlxuICAgICAgICAgICAgICAgIC8vIFJlZmVyZW5jZTogaHR0cDovL3d3dy5qb2xseXRlY2guY29tXG4gICAgICAgICAgICAgICAgc3dpdGNoIChyYXcpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnOTAwMDAnOlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm8gc3VnZ2VzdGVkIHJldGFpbCBwcmljZVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJzk5OTkxJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvbXBsZW1lbnRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnMC4wMCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJzk5OTkwJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnVXNlZCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIE90aGVyd2lzZS4uLiB1bmtub3duIGN1cnJlbmN5P1xuICAgICAgICAgICAgICAgIGN1cnJlbmN5ID0gJyc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGN1cnJlbmN5ID0gJyc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJhd0Ftb3VudCA9IHBhcnNlSW50KHJhdy5zdWJzdHJpbmcoMSkpO1xuICAgICAgICB2YXIgdW5pdHNTdHJpbmcgPSAocmF3QW1vdW50IC8gMTAwKS50b1N0cmluZygpO1xuICAgICAgICB2YXIgaHVuZHJlZHRocyA9IHJhd0Ftb3VudCAlIDEwMDtcbiAgICAgICAgdmFyIGh1bmRyZWR0aHNTdHJpbmcgPSBodW5kcmVkdGhzIDwgMTAgPyAnMCcgKyBodW5kcmVkdGhzIDogaHVuZHJlZHRocy50b1N0cmluZygpOyAvLyBmaXhtZVxuICAgICAgICByZXR1cm4gY3VycmVuY3kgKyB1bml0c1N0cmluZyArICcuJyArIGh1bmRyZWR0aHNTdHJpbmc7XG4gICAgfTtcbiAgICByZXR1cm4gVVBDRUFORXh0ZW5zaW9uNVN1cHBvcnQ7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gVVBDRUFORXh0ZW5zaW9uNVN1cHBvcnQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1VUENFQU5FeHRlbnNpb241U3VwcG9ydC5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTIgWlhpbmcgYXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbnZhciBfX3ZhbHVlcyA9ICh0aGlzICYmIHRoaXMuX192YWx1ZXMpIHx8IGZ1bmN0aW9uKG8pIHtcbiAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xuICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBCYXJjb2RlRm9ybWF0XzEgPSByZXF1aXJlKFwiLi4vQmFyY29kZUZvcm1hdFwiKTtcbnZhciBBYnN0cmFjdFVQQ0VBTlJlYWRlcl8xID0gcmVxdWlyZShcIi4vQWJzdHJhY3RVUENFQU5SZWFkZXJcIik7XG52YXIgUmVzdWx0XzEgPSByZXF1aXJlKFwiLi4vUmVzdWx0XCIpO1xudmFyIFJlc3VsdFBvaW50XzEgPSByZXF1aXJlKFwiLi4vUmVzdWx0UG9pbnRcIik7XG52YXIgUmVzdWx0TWV0YWRhdGFUeXBlXzEgPSByZXF1aXJlKFwiLi4vUmVzdWx0TWV0YWRhdGFUeXBlXCIpO1xudmFyIE5vdEZvdW5kRXhjZXB0aW9uXzEgPSByZXF1aXJlKFwiLi4vTm90Rm91bmRFeGNlcHRpb25cIik7XG4vKipcbiAqIEBzZWUgVVBDRUFORXh0ZW5zaW9uNVN1cHBvcnRcbiAqL1xudmFyIFVQQ0VBTkV4dGVuc2lvbjJTdXBwb3J0ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFVQQ0VBTkV4dGVuc2lvbjJTdXBwb3J0KCkge1xuICAgICAgICB0aGlzLmRlY29kZU1pZGRsZUNvdW50ZXJzID0gSW50MzJBcnJheS5mcm9tKFswLCAwLCAwLCAwXSk7XG4gICAgICAgIHRoaXMuZGVjb2RlUm93U3RyaW5nQnVmZmVyID0gJyc7XG4gICAgfVxuICAgIFVQQ0VBTkV4dGVuc2lvbjJTdXBwb3J0LnByb3RvdHlwZS5kZWNvZGVSb3cgPSBmdW5jdGlvbiAocm93TnVtYmVyLCByb3csIGV4dGVuc2lvblN0YXJ0UmFuZ2UpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuZGVjb2RlUm93U3RyaW5nQnVmZmVyO1xuICAgICAgICB2YXIgZW5kID0gdGhpcy5kZWNvZGVNaWRkbGUocm93LCBleHRlbnNpb25TdGFydFJhbmdlLCByZXN1bHQpO1xuICAgICAgICB2YXIgcmVzdWx0U3RyaW5nID0gcmVzdWx0LnRvU3RyaW5nKCk7XG4gICAgICAgIHZhciBleHRlbnNpb25EYXRhID0gVVBDRUFORXh0ZW5zaW9uMlN1cHBvcnQucGFyc2VFeHRlbnNpb25TdHJpbmcocmVzdWx0U3RyaW5nKTtcbiAgICAgICAgdmFyIHJlc3VsdFBvaW50cyA9IFtcbiAgICAgICAgICAgIG5ldyBSZXN1bHRQb2ludF8xLmRlZmF1bHQoKGV4dGVuc2lvblN0YXJ0UmFuZ2VbMF0gKyBleHRlbnNpb25TdGFydFJhbmdlWzFdKSAvIDIuMCwgcm93TnVtYmVyKSxcbiAgICAgICAgICAgIG5ldyBSZXN1bHRQb2ludF8xLmRlZmF1bHQoZW5kLCByb3dOdW1iZXIpXG4gICAgICAgIF07XG4gICAgICAgIHZhciBleHRlbnNpb25SZXN1bHQgPSBuZXcgUmVzdWx0XzEuZGVmYXVsdChyZXN1bHRTdHJpbmcsIG51bGwsIDAsIHJlc3VsdFBvaW50cywgQmFyY29kZUZvcm1hdF8xLmRlZmF1bHQuVVBDX0VBTl9FWFRFTlNJT04sIG5ldyBEYXRlKCkuZ2V0VGltZSgpKTtcbiAgICAgICAgaWYgKGV4dGVuc2lvbkRhdGEgIT0gbnVsbCkge1xuICAgICAgICAgICAgZXh0ZW5zaW9uUmVzdWx0LnB1dEFsbE1ldGFkYXRhKGV4dGVuc2lvbkRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBleHRlbnNpb25SZXN1bHQ7XG4gICAgfTtcbiAgICBVUENFQU5FeHRlbnNpb24yU3VwcG9ydC5wcm90b3R5cGUuZGVjb2RlTWlkZGxlID0gZnVuY3Rpb24gKHJvdywgc3RhcnRSYW5nZSwgcmVzdWx0U3RyaW5nKSB7XG4gICAgICAgIHZhciBlXzEsIF9hO1xuICAgICAgICB2YXIgY291bnRlcnMgPSB0aGlzLmRlY29kZU1pZGRsZUNvdW50ZXJzO1xuICAgICAgICBjb3VudGVyc1swXSA9IDA7XG4gICAgICAgIGNvdW50ZXJzWzFdID0gMDtcbiAgICAgICAgY291bnRlcnNbMl0gPSAwO1xuICAgICAgICBjb3VudGVyc1szXSA9IDA7XG4gICAgICAgIHZhciBlbmQgPSByb3cuZ2V0U2l6ZSgpO1xuICAgICAgICB2YXIgcm93T2Zmc2V0ID0gc3RhcnRSYW5nZVsxXTtcbiAgICAgICAgdmFyIGNoZWNrUGFyaXR5ID0gMDtcbiAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCAyICYmIHJvd09mZnNldCA8IGVuZDsgeCsrKSB7XG4gICAgICAgICAgICB2YXIgYmVzdE1hdGNoID0gQWJzdHJhY3RVUENFQU5SZWFkZXJfMS5kZWZhdWx0LmRlY29kZURpZ2l0KHJvdywgY291bnRlcnMsIHJvd09mZnNldCwgQWJzdHJhY3RVUENFQU5SZWFkZXJfMS5kZWZhdWx0LkxfQU5EX0dfUEFUVEVSTlMpO1xuICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKCcwJy5jaGFyQ29kZUF0KDApICsgYmVzdE1hdGNoICUgMTApKTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgY291bnRlcnNfMSA9IChlXzEgPSB2b2lkIDAsIF9fdmFsdWVzKGNvdW50ZXJzKSksIGNvdW50ZXJzXzFfMSA9IGNvdW50ZXJzXzEubmV4dCgpOyAhY291bnRlcnNfMV8xLmRvbmU7IGNvdW50ZXJzXzFfMSA9IGNvdW50ZXJzXzEubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBjb3VudGVyID0gY291bnRlcnNfMV8xLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICByb3dPZmZzZXQgKz0gY291bnRlcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfVxuICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvdW50ZXJzXzFfMSAmJiAhY291bnRlcnNfMV8xLmRvbmUgJiYgKF9hID0gY291bnRlcnNfMS5yZXR1cm4pKSBfYS5jYWxsKGNvdW50ZXJzXzEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYmVzdE1hdGNoID49IDEwKSB7XG4gICAgICAgICAgICAgICAgY2hlY2tQYXJpdHkgfD0gMSA8PCAoMSAtIHgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHggIT09IDEpIHtcbiAgICAgICAgICAgICAgICAvLyBSZWFkIG9mZiBzZXBhcmF0b3IgaWYgbm90IGxhc3RcbiAgICAgICAgICAgICAgICByb3dPZmZzZXQgPSByb3cuZ2V0TmV4dFNldChyb3dPZmZzZXQpO1xuICAgICAgICAgICAgICAgIHJvd09mZnNldCA9IHJvdy5nZXROZXh0VW5zZXQocm93T2Zmc2V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzdWx0U3RyaW5nLmxlbmd0aCAhPT0gMikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXJzZUludChyZXN1bHRTdHJpbmcudG9TdHJpbmcoKSkgJSA0ICE9PSBjaGVja1Bhcml0eSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByb3dPZmZzZXQ7XG4gICAgfTtcbiAgICBVUENFQU5FeHRlbnNpb24yU3VwcG9ydC5wYXJzZUV4dGVuc2lvblN0cmluZyA9IGZ1bmN0aW9uIChyYXcpIHtcbiAgICAgICAgaWYgKHJhdy5sZW5ndGggIT09IDIpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgTWFwKFtbUmVzdWx0TWV0YWRhdGFUeXBlXzEuZGVmYXVsdC5JU1NVRV9OVU1CRVIsIHBhcnNlSW50KHJhdyldXSk7XG4gICAgfTtcbiAgICByZXR1cm4gVVBDRUFORXh0ZW5zaW9uMlN1cHBvcnQ7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gVVBDRUFORXh0ZW5zaW9uMlN1cHBvcnQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1VUENFQU5FeHRlbnNpb24yU3VwcG9ydC5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgWlhpbmcgYXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBBYnN0cmFjdFVQQ0VBTlJlYWRlcl8xID0gcmVxdWlyZShcIi4vQWJzdHJhY3RVUENFQU5SZWFkZXJcIik7XG52YXIgVVBDRUFORXh0ZW5zaW9uNVN1cHBvcnRfMSA9IHJlcXVpcmUoXCIuL1VQQ0VBTkV4dGVuc2lvbjVTdXBwb3J0XCIpO1xudmFyIFVQQ0VBTkV4dGVuc2lvbjJTdXBwb3J0XzEgPSByZXF1aXJlKFwiLi9VUENFQU5FeHRlbnNpb24yU3VwcG9ydFwiKTtcbnZhciBVUENFQU5FeHRlbnNpb25TdXBwb3J0ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFVQQ0VBTkV4dGVuc2lvblN1cHBvcnQoKSB7XG4gICAgfVxuICAgIFVQQ0VBTkV4dGVuc2lvblN1cHBvcnQuZGVjb2RlUm93ID0gZnVuY3Rpb24gKHJvd051bWJlciwgcm93LCByb3dPZmZzZXQpIHtcbiAgICAgICAgdmFyIGV4dGVuc2lvblN0YXJ0UmFuZ2UgPSBBYnN0cmFjdFVQQ0VBTlJlYWRlcl8xLmRlZmF1bHQuZmluZEd1YXJkUGF0dGVybihyb3csIHJvd09mZnNldCwgZmFsc2UsIHRoaXMuRVhURU5TSU9OX1NUQVJUX1BBVFRFUk4sIG5ldyBJbnQzMkFycmF5KHRoaXMuRVhURU5TSU9OX1NUQVJUX1BBVFRFUk4ubGVuZ3RoKS5maWxsKDApKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIHJldHVybiBudWxsO1xuICAgICAgICAgICAgdmFyIGZpdmVTdXBwb3J0ID0gbmV3IFVQQ0VBTkV4dGVuc2lvbjVTdXBwb3J0XzEuZGVmYXVsdCgpO1xuICAgICAgICAgICAgcmV0dXJuIGZpdmVTdXBwb3J0LmRlY29kZVJvdyhyb3dOdW1iZXIsIHJvdywgZXh0ZW5zaW9uU3RhcnRSYW5nZSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgLy8gcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB2YXIgdHdvU3VwcG9ydCA9IG5ldyBVUENFQU5FeHRlbnNpb24yU3VwcG9ydF8xLmRlZmF1bHQoKTtcbiAgICAgICAgICAgIHJldHVybiB0d29TdXBwb3J0LmRlY29kZVJvdyhyb3dOdW1iZXIsIHJvdywgZXh0ZW5zaW9uU3RhcnRSYW5nZSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFVQQ0VBTkV4dGVuc2lvblN1cHBvcnQuRVhURU5TSU9OX1NUQVJUX1BBVFRFUk4gPSBJbnQzMkFycmF5LmZyb20oWzEsIDEsIDJdKTtcbiAgICByZXR1cm4gVVBDRUFORXh0ZW5zaW9uU3VwcG9ydDtcbn0oKSk7XG5leHBvcnRzLmRlZmF1bHQgPSBVUENFQU5FeHRlbnNpb25TdXBwb3J0O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VVBDRUFORXh0ZW5zaW9uU3VwcG9ydC5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8qXG4gKiBDb3B5cmlnaHQgMjAwOCBaWGluZyBhdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgQmFyY29kZUZvcm1hdF8xID0gcmVxdWlyZShcIi4uL0JhcmNvZGVGb3JtYXRcIik7XG52YXIgRGVjb2RlSGludFR5cGVfMSA9IHJlcXVpcmUoXCIuLi9EZWNvZGVIaW50VHlwZVwiKTtcbnZhciBSZXN1bHRfMSA9IHJlcXVpcmUoXCIuLi9SZXN1bHRcIik7XG52YXIgUmVzdWx0TWV0YWRhdGFUeXBlXzEgPSByZXF1aXJlKFwiLi4vUmVzdWx0TWV0YWRhdGFUeXBlXCIpO1xudmFyIFJlc3VsdFBvaW50XzEgPSByZXF1aXJlKFwiLi4vUmVzdWx0UG9pbnRcIik7XG52YXIgVVBDRUFORXh0ZW5zaW9uU3VwcG9ydF8xID0gcmVxdWlyZShcIi4vVVBDRUFORXh0ZW5zaW9uU3VwcG9ydFwiKTtcbnZhciBBYnN0cmFjdFVQQ0VBTlJlYWRlcl8xID0gcmVxdWlyZShcIi4vQWJzdHJhY3RVUENFQU5SZWFkZXJcIik7XG52YXIgTm90Rm91bmRFeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuLi9Ob3RGb3VuZEV4Y2VwdGlvblwiKTtcbnZhciBGb3JtYXRFeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuLi9Gb3JtYXRFeGNlcHRpb25cIik7XG52YXIgQ2hlY2tzdW1FeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuLi9DaGVja3N1bUV4Y2VwdGlvblwiKTtcbi8qKlxuICogPHA+RW5jYXBzdWxhdGVzIGZ1bmN0aW9uYWxpdHkgYW5kIGltcGxlbWVudGF0aW9uIHRoYXQgaXMgY29tbW9uIHRvIFVQQyBhbmQgRUFOIGZhbWlsaWVzXG4gKiBvZiBvbmUtZGltZW5zaW9uYWwgYmFyY29kZXMuPC9wPlxuICpcbiAqIEBhdXRob3IgZHN3aXRraW5AZ29vZ2xlLmNvbSAoRGFuaWVsIFN3aXRraW4pXG4gKiBAYXV0aG9yIFNlYW4gT3dlblxuICogQGF1dGhvciBhbGFzZGFpckBnb29nbGUuY29tIChBbGFzZGFpciBNYWNraW50b3NoKVxuICovXG52YXIgVVBDRUFOUmVhZGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhVUENFQU5SZWFkZXIsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gVVBDRUFOUmVhZGVyKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5kZWNvZGVSb3dTdHJpbmdCdWZmZXIgPSAnJztcbiAgICAgICAgVVBDRUFOUmVhZGVyLkxfQU5EX0dfUEFUVEVSTlMgPSBVUENFQU5SZWFkZXIuTF9QQVRURVJOUy5tYXAoZnVuY3Rpb24gKGFycikgeyByZXR1cm4gSW50MzJBcnJheS5mcm9tKGFycik7IH0pO1xuICAgICAgICBmb3IgKHZhciBpID0gMTA7IGkgPCAyMDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgd2lkdGhzID0gVVBDRUFOUmVhZGVyLkxfUEFUVEVSTlNbaSAtIDEwXTtcbiAgICAgICAgICAgIHZhciByZXZlcnNlZFdpZHRocyA9IG5ldyBJbnQzMkFycmF5KHdpZHRocy5sZW5ndGgpO1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB3aWR0aHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICByZXZlcnNlZFdpZHRoc1tqXSA9IHdpZHRoc1t3aWR0aHMubGVuZ3RoIC0gaiAtIDFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgVVBDRUFOUmVhZGVyLkxfQU5EX0dfUEFUVEVSTlNbaV0gPSByZXZlcnNlZFdpZHRocztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIFVQQ0VBTlJlYWRlci5wcm90b3R5cGUuZGVjb2RlUm93ID0gZnVuY3Rpb24gKHJvd051bWJlciwgcm93LCBoaW50cykge1xuICAgICAgICB2YXIgc3RhcnRHdWFyZFJhbmdlID0gVVBDRUFOUmVhZGVyLmZpbmRTdGFydEd1YXJkUGF0dGVybihyb3cpO1xuICAgICAgICB2YXIgcmVzdWx0UG9pbnRDYWxsYmFjayA9IGhpbnRzID09IG51bGwgPyBudWxsIDogaGludHMuZ2V0KERlY29kZUhpbnRUeXBlXzEuZGVmYXVsdC5ORUVEX1JFU1VMVF9QT0lOVF9DQUxMQkFDSyk7XG4gICAgICAgIGlmIChyZXN1bHRQb2ludENhbGxiYWNrICE9IG51bGwpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHRQb2ludF8xID0gbmV3IFJlc3VsdFBvaW50XzEuZGVmYXVsdCgoc3RhcnRHdWFyZFJhbmdlWzBdICsgc3RhcnRHdWFyZFJhbmdlWzFdKSAvIDIuMCwgcm93TnVtYmVyKTtcbiAgICAgICAgICAgIHJlc3VsdFBvaW50Q2FsbGJhY2suZm91bmRQb3NzaWJsZVJlc3VsdFBvaW50KHJlc3VsdFBvaW50XzEpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBidWRlbGxvID0gdGhpcy5kZWNvZGVNaWRkbGUocm93LCBzdGFydEd1YXJkUmFuZ2UsIHRoaXMuZGVjb2RlUm93U3RyaW5nQnVmZmVyKTtcbiAgICAgICAgdmFyIGVuZFN0YXJ0ID0gYnVkZWxsby5yb3dPZmZzZXQ7XG4gICAgICAgIHZhciByZXN1bHQgPSBidWRlbGxvLnJlc3VsdFN0cmluZztcbiAgICAgICAgaWYgKHJlc3VsdFBvaW50Q2FsbGJhY2sgIT0gbnVsbCkge1xuICAgICAgICAgICAgdmFyIHJlc3VsdFBvaW50XzIgPSBuZXcgUmVzdWx0UG9pbnRfMS5kZWZhdWx0KGVuZFN0YXJ0LCByb3dOdW1iZXIpO1xuICAgICAgICAgICAgcmVzdWx0UG9pbnRDYWxsYmFjay5mb3VuZFBvc3NpYmxlUmVzdWx0UG9pbnQocmVzdWx0UG9pbnRfMik7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGVuZFJhbmdlID0gVVBDRUFOUmVhZGVyLmRlY29kZUVuZChyb3csIGVuZFN0YXJ0KTtcbiAgICAgICAgaWYgKHJlc3VsdFBvaW50Q2FsbGJhY2sgIT0gbnVsbCkge1xuICAgICAgICAgICAgdmFyIHJlc3VsdFBvaW50XzMgPSBuZXcgUmVzdWx0UG9pbnRfMS5kZWZhdWx0KChlbmRSYW5nZVswXSArIGVuZFJhbmdlWzFdKSAvIDIuMCwgcm93TnVtYmVyKTtcbiAgICAgICAgICAgIHJlc3VsdFBvaW50Q2FsbGJhY2suZm91bmRQb3NzaWJsZVJlc3VsdFBvaW50KHJlc3VsdFBvaW50XzMpO1xuICAgICAgICB9XG4gICAgICAgIC8vIE1ha2Ugc3VyZSB0aGVyZSBpcyBhIHF1aWV0IHpvbmUgYXQgbGVhc3QgYXMgYmlnIGFzIHRoZSBlbmQgcGF0dGVybiBhZnRlciB0aGUgYmFyY29kZS4gVGhlXG4gICAgICAgIC8vIHNwZWMgbWlnaHQgd2FudCBtb3JlIHdoaXRlc3BhY2UsIGJ1dCBpbiBwcmFjdGljZSB0aGlzIGlzIHRoZSBtYXhpbXVtIHdlIGNhbiBjb3VudCBvbi5cbiAgICAgICAgdmFyIGVuZCA9IGVuZFJhbmdlWzFdO1xuICAgICAgICB2YXIgcXVpZXRFbmQgPSBlbmQgKyAoZW5kIC0gZW5kUmFuZ2VbMF0pO1xuICAgICAgICBpZiAocXVpZXRFbmQgPj0gcm93LmdldFNpemUoKSB8fCAhcm93LmlzUmFuZ2UoZW5kLCBxdWlldEVuZCwgZmFsc2UpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJlc3VsdFN0cmluZyA9IHJlc3VsdC50b1N0cmluZygpO1xuICAgICAgICAvLyBVUEMvRUFOIHNob3VsZCBuZXZlciBiZSBsZXNzIHRoYW4gOCBjaGFycyBhbnl3YXlcbiAgICAgICAgaWYgKHJlc3VsdFN0cmluZy5sZW5ndGggPCA4KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghVVBDRUFOUmVhZGVyLmNoZWNrQ2hlY2tzdW0ocmVzdWx0U3RyaW5nKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IENoZWNrc3VtRXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBsZWZ0ID0gKHN0YXJ0R3VhcmRSYW5nZVsxXSArIHN0YXJ0R3VhcmRSYW5nZVswXSkgLyAyLjA7XG4gICAgICAgIHZhciByaWdodCA9IChlbmRSYW5nZVsxXSArIGVuZFJhbmdlWzBdKSAvIDIuMDtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHRoaXMuZ2V0QmFyY29kZUZvcm1hdCgpO1xuICAgICAgICB2YXIgcmVzdWx0UG9pbnQgPSBbbmV3IFJlc3VsdFBvaW50XzEuZGVmYXVsdChsZWZ0LCByb3dOdW1iZXIpLCBuZXcgUmVzdWx0UG9pbnRfMS5kZWZhdWx0KHJpZ2h0LCByb3dOdW1iZXIpXTtcbiAgICAgICAgdmFyIGRlY29kZVJlc3VsdCA9IG5ldyBSZXN1bHRfMS5kZWZhdWx0KHJlc3VsdFN0cmluZywgbnVsbCwgMCwgcmVzdWx0UG9pbnQsIGZvcm1hdCwgbmV3IERhdGUoKS5nZXRUaW1lKCkpO1xuICAgICAgICB2YXIgZXh0ZW5zaW9uTGVuZ3RoID0gMDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHZhciBleHRlbnNpb25SZXN1bHQgPSBVUENFQU5FeHRlbnNpb25TdXBwb3J0XzEuZGVmYXVsdC5kZWNvZGVSb3cocm93TnVtYmVyLCByb3csIGVuZFJhbmdlWzFdKTtcbiAgICAgICAgICAgIGRlY29kZVJlc3VsdC5wdXRNZXRhZGF0YShSZXN1bHRNZXRhZGF0YVR5cGVfMS5kZWZhdWx0LlVQQ19FQU5fRVhURU5TSU9OLCBleHRlbnNpb25SZXN1bHQuZ2V0VGV4dCgpKTtcbiAgICAgICAgICAgIGRlY29kZVJlc3VsdC5wdXRBbGxNZXRhZGF0YShleHRlbnNpb25SZXN1bHQuZ2V0UmVzdWx0TWV0YWRhdGEoKSk7XG4gICAgICAgICAgICBkZWNvZGVSZXN1bHQuYWRkUmVzdWx0UG9pbnRzKGV4dGVuc2lvblJlc3VsdC5nZXRSZXN1bHRQb2ludHMoKSk7XG4gICAgICAgICAgICBleHRlbnNpb25MZW5ndGggPSBleHRlbnNpb25SZXN1bHQuZ2V0VGV4dCgpLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGFsbG93ZWRFeHRlbnNpb25zID0gaGludHMgPT0gbnVsbCA/IG51bGwgOiBoaW50cy5nZXQoRGVjb2RlSGludFR5cGVfMS5kZWZhdWx0LkFMTE9XRURfRUFOX0VYVEVOU0lPTlMpO1xuICAgICAgICBpZiAoYWxsb3dlZEV4dGVuc2lvbnMgIT0gbnVsbCkge1xuICAgICAgICAgICAgdmFyIHZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICBmb3IgKHZhciBsZW5ndGhfMSBpbiBhbGxvd2VkRXh0ZW5zaW9ucykge1xuICAgICAgICAgICAgICAgIGlmIChleHRlbnNpb25MZW5ndGgudG9TdHJpbmcoKSA9PT0gbGVuZ3RoXzEpIHsgLy8gY2hlY2sgbWVcbiAgICAgICAgICAgICAgICAgICAgdmFsaWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXZhbGlkKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChmb3JtYXQgPT09IEJhcmNvZGVGb3JtYXRfMS5kZWZhdWx0LkVBTl8xMyB8fCBmb3JtYXQgPT09IEJhcmNvZGVGb3JtYXRfMS5kZWZhdWx0LlVQQ19BKSB7XG4gICAgICAgICAgICAvLyBsZXQgY291bnRyeUlEID0gZWFuTWFuU3VwcG9ydC5sb29rdXBDb250cnlJZGVudGlmaWVyKHJlc3VsdFN0cmluZyk7IHRvZG9cbiAgICAgICAgICAgIC8vIGlmIChjb3VudHJ5SUQgIT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gICAgIGRlY29kZVJlc3VsdC5wdXRNZXRhZGF0YShSZXN1bHRNZXRhZGF0YVR5cGUuUE9TU0lCTEVfQ09VTlRSWSwgY291bnRyeUlEKTtcbiAgICAgICAgICAgIC8vIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGVjb2RlUmVzdWx0O1xuICAgIH07XG4gICAgVVBDRUFOUmVhZGVyLmNoZWNrQ2hlY2tzdW0gPSBmdW5jdGlvbiAocykge1xuICAgICAgICByZXR1cm4gVVBDRUFOUmVhZGVyLmNoZWNrU3RhbmRhcmRVUENFQU5DaGVja3N1bShzKTtcbiAgICB9O1xuICAgIFVQQ0VBTlJlYWRlci5jaGVja1N0YW5kYXJkVVBDRUFOQ2hlY2tzdW0gPSBmdW5jdGlvbiAocykge1xuICAgICAgICB2YXIgbGVuZ3RoID0gcy5sZW5ndGg7XG4gICAgICAgIGlmIChsZW5ndGggPT09IDApXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIHZhciBjaGVjayA9IHBhcnNlSW50KHMuY2hhckF0KGxlbmd0aCAtIDEpLCAxMCk7XG4gICAgICAgIHJldHVybiBVUENFQU5SZWFkZXIuZ2V0U3RhbmRhcmRVUENFQU5DaGVja3N1bShzLnN1YnN0cmluZygwLCBsZW5ndGggLSAxKSkgPT09IGNoZWNrO1xuICAgIH07XG4gICAgVVBDRUFOUmVhZGVyLmdldFN0YW5kYXJkVVBDRUFOQ2hlY2tzdW0gPSBmdW5jdGlvbiAocykge1xuICAgICAgICB2YXIgbGVuZ3RoID0gcy5sZW5ndGg7XG4gICAgICAgIHZhciBzdW0gPSAwO1xuICAgICAgICBmb3IgKHZhciBpID0gbGVuZ3RoIC0gMTsgaSA+PSAwOyBpIC09IDIpIHtcbiAgICAgICAgICAgIHZhciBkaWdpdCA9IHMuY2hhckF0KGkpLmNoYXJDb2RlQXQoMCkgLSAnMCcuY2hhckNvZGVBdCgwKTtcbiAgICAgICAgICAgIGlmIChkaWdpdCA8IDAgfHwgZGlnaXQgPiA5KSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN1bSArPSBkaWdpdDtcbiAgICAgICAgfVxuICAgICAgICBzdW0gKj0gMztcbiAgICAgICAgZm9yICh2YXIgaSA9IGxlbmd0aCAtIDI7IGkgPj0gMDsgaSAtPSAyKSB7XG4gICAgICAgICAgICB2YXIgZGlnaXQgPSBzLmNoYXJBdChpKS5jaGFyQ29kZUF0KDApIC0gJzAnLmNoYXJDb2RlQXQoMCk7XG4gICAgICAgICAgICBpZiAoZGlnaXQgPCAwIHx8IGRpZ2l0ID4gOSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdW0gKz0gZGlnaXQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICgxMDAwIC0gc3VtKSAlIDEwO1xuICAgIH07XG4gICAgVVBDRUFOUmVhZGVyLmRlY29kZUVuZCA9IGZ1bmN0aW9uIChyb3csIGVuZFN0YXJ0KSB7XG4gICAgICAgIHJldHVybiBVUENFQU5SZWFkZXIuZmluZEd1YXJkUGF0dGVybihyb3csIGVuZFN0YXJ0LCBmYWxzZSwgVVBDRUFOUmVhZGVyLlNUQVJUX0VORF9QQVRURVJOLCBuZXcgSW50MzJBcnJheShVUENFQU5SZWFkZXIuU1RBUlRfRU5EX1BBVFRFUk4ubGVuZ3RoKS5maWxsKDApKTtcbiAgICB9O1xuICAgIHJldHVybiBVUENFQU5SZWFkZXI7XG59KEFic3RyYWN0VVBDRUFOUmVhZGVyXzEuZGVmYXVsdCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gVVBDRUFOUmVhZGVyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VVBDRUFOUmVhZGVyLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuLypcbiAqIENvcHlyaWdodCAyMDA4IFpYaW5nIGF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbnZhciBfX3ZhbHVlcyA9ICh0aGlzICYmIHRoaXMuX192YWx1ZXMpIHx8IGZ1bmN0aW9uKG8pIHtcbiAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xuICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBCYXJjb2RlRm9ybWF0XzEgPSByZXF1aXJlKFwiLi4vQmFyY29kZUZvcm1hdFwiKTtcbnZhciBVUENFQU5SZWFkZXJfMSA9IHJlcXVpcmUoXCIuL1VQQ0VBTlJlYWRlclwiKTtcbnZhciBOb3RGb3VuZEV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4uL05vdEZvdW5kRXhjZXB0aW9uXCIpO1xuLyoqXG4gKiA8cD5JbXBsZW1lbnRzIGRlY29kaW5nIG9mIHRoZSBFQU4tMTMgZm9ybWF0LjwvcD5cbiAqXG4gKiBAYXV0aG9yIGRzd2l0a2luQGdvb2dsZS5jb20gKERhbmllbCBTd2l0a2luKVxuICogQGF1dGhvciBTZWFuIE93ZW5cbiAqIEBhdXRob3IgYWxhc2RhaXJAZ29vZ2xlLmNvbSAoQWxhc2RhaXIgTWFja2ludG9zaClcbiAqL1xudmFyIEVBTjEzUmVhZGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhFQU4xM1JlYWRlciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBFQU4xM1JlYWRlcigpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuZGVjb2RlTWlkZGxlQ291bnRlcnMgPSBJbnQzMkFycmF5LmZyb20oWzAsIDAsIDAsIDBdKTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBFQU4xM1JlYWRlci5wcm90b3R5cGUuZGVjb2RlTWlkZGxlID0gZnVuY3Rpb24gKHJvdywgc3RhcnRSYW5nZSwgcmVzdWx0U3RyaW5nKSB7XG4gICAgICAgIHZhciBlXzEsIF9hLCBlXzIsIF9iO1xuICAgICAgICB2YXIgY291bnRlcnMgPSB0aGlzLmRlY29kZU1pZGRsZUNvdW50ZXJzO1xuICAgICAgICBjb3VudGVyc1swXSA9IDA7XG4gICAgICAgIGNvdW50ZXJzWzFdID0gMDtcbiAgICAgICAgY291bnRlcnNbMl0gPSAwO1xuICAgICAgICBjb3VudGVyc1szXSA9IDA7XG4gICAgICAgIHZhciBlbmQgPSByb3cuZ2V0U2l6ZSgpO1xuICAgICAgICB2YXIgcm93T2Zmc2V0ID0gc3RhcnRSYW5nZVsxXTtcbiAgICAgICAgdmFyIGxnUGF0dGVybkZvdW5kID0gMDtcbiAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCA2ICYmIHJvd09mZnNldCA8IGVuZDsgeCsrKSB7XG4gICAgICAgICAgICB2YXIgYmVzdE1hdGNoID0gVVBDRUFOUmVhZGVyXzEuZGVmYXVsdC5kZWNvZGVEaWdpdChyb3csIGNvdW50ZXJzLCByb3dPZmZzZXQsIFVQQ0VBTlJlYWRlcl8xLmRlZmF1bHQuTF9BTkRfR19QQVRURVJOUyk7XG4gICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoJzAnLmNoYXJDb2RlQXQoMCkgKyBiZXN0TWF0Y2ggJSAxMCkpO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBjb3VudGVyc18xID0gKGVfMSA9IHZvaWQgMCwgX192YWx1ZXMoY291bnRlcnMpKSwgY291bnRlcnNfMV8xID0gY291bnRlcnNfMS5uZXh0KCk7ICFjb3VudGVyc18xXzEuZG9uZTsgY291bnRlcnNfMV8xID0gY291bnRlcnNfMS5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvdW50ZXIgPSBjb3VudGVyc18xXzEudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIHJvd09mZnNldCArPSBjb3VudGVyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9XG4gICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY291bnRlcnNfMV8xICYmICFjb3VudGVyc18xXzEuZG9uZSAmJiAoX2EgPSBjb3VudGVyc18xLnJldHVybikpIF9hLmNhbGwoY291bnRlcnNfMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChiZXN0TWF0Y2ggPj0gMTApIHtcbiAgICAgICAgICAgICAgICBsZ1BhdHRlcm5Gb3VuZCB8PSAxIDw8ICg1IC0geCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0U3RyaW5nID0gRUFOMTNSZWFkZXIuZGV0ZXJtaW5lRmlyc3REaWdpdChyZXN1bHRTdHJpbmcsIGxnUGF0dGVybkZvdW5kKTtcbiAgICAgICAgdmFyIG1pZGRsZVJhbmdlID0gVVBDRUFOUmVhZGVyXzEuZGVmYXVsdC5maW5kR3VhcmRQYXR0ZXJuKHJvdywgcm93T2Zmc2V0LCB0cnVlLCBVUENFQU5SZWFkZXJfMS5kZWZhdWx0Lk1JRERMRV9QQVRURVJOLCBuZXcgSW50MzJBcnJheShVUENFQU5SZWFkZXJfMS5kZWZhdWx0Lk1JRERMRV9QQVRURVJOLmxlbmd0aCkuZmlsbCgwKSk7XG4gICAgICAgIHJvd09mZnNldCA9IG1pZGRsZVJhbmdlWzFdO1xuICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IDYgJiYgcm93T2Zmc2V0IDwgZW5kOyB4KyspIHtcbiAgICAgICAgICAgIHZhciBiZXN0TWF0Y2ggPSBVUENFQU5SZWFkZXJfMS5kZWZhdWx0LmRlY29kZURpZ2l0KHJvdywgY291bnRlcnMsIHJvd09mZnNldCwgVVBDRUFOUmVhZGVyXzEuZGVmYXVsdC5MX1BBVFRFUk5TKTtcbiAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKCgnMCcuY2hhckNvZGVBdCgwKSArIGJlc3RNYXRjaCkpO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBjb3VudGVyc18yID0gKGVfMiA9IHZvaWQgMCwgX192YWx1ZXMoY291bnRlcnMpKSwgY291bnRlcnNfMl8xID0gY291bnRlcnNfMi5uZXh0KCk7ICFjb3VudGVyc18yXzEuZG9uZTsgY291bnRlcnNfMl8xID0gY291bnRlcnNfMi5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvdW50ZXIgPSBjb3VudGVyc18yXzEudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIHJvd09mZnNldCArPSBjb3VudGVyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlXzJfMSkgeyBlXzIgPSB7IGVycm9yOiBlXzJfMSB9OyB9XG4gICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY291bnRlcnNfMl8xICYmICFjb3VudGVyc18yXzEuZG9uZSAmJiAoX2IgPSBjb3VudGVyc18yLnJldHVybikpIF9iLmNhbGwoY291bnRlcnNfMik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8yKSB0aHJvdyBlXzIuZXJyb3I7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyByb3dPZmZzZXQ6IHJvd09mZnNldCwgcmVzdWx0U3RyaW5nOiByZXN1bHRTdHJpbmcgfTtcbiAgICB9O1xuICAgIEVBTjEzUmVhZGVyLnByb3RvdHlwZS5nZXRCYXJjb2RlRm9ybWF0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gQmFyY29kZUZvcm1hdF8xLmRlZmF1bHQuRUFOXzEzO1xuICAgIH07XG4gICAgRUFOMTNSZWFkZXIuZGV0ZXJtaW5lRmlyc3REaWdpdCA9IGZ1bmN0aW9uIChyZXN1bHRTdHJpbmcsIGxnUGF0dGVybkZvdW5kKSB7XG4gICAgICAgIGZvciAodmFyIGQgPSAwOyBkIDwgMTA7IGQrKykge1xuICAgICAgICAgICAgaWYgKGxnUGF0dGVybkZvdW5kID09PSB0aGlzLkZJUlNUX0RJR0lUX0VOQ09ESU5HU1tkXSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyA9IFN0cmluZy5mcm9tQ2hhckNvZGUoKCcwJy5jaGFyQ29kZUF0KDApICsgZCkpICsgcmVzdWx0U3RyaW5nO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRTdHJpbmc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgIH07XG4gICAgRUFOMTNSZWFkZXIuRklSU1RfRElHSVRfRU5DT0RJTkdTID0gWzB4MDAsIDB4MEIsIDB4MEQsIDB4RSwgMHgxMywgMHgxOSwgMHgxQywgMHgxNSwgMHgxNiwgMHgxQV07XG4gICAgcmV0dXJuIEVBTjEzUmVhZGVyO1xufShVUENFQU5SZWFkZXJfMS5kZWZhdWx0KSk7XG5leHBvcnRzLmRlZmF1bHQgPSBFQU4xM1JlYWRlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUVBTjEzUmVhZGVyLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuLypcbiAqIENvcHlyaWdodCAyMDA4IFpYaW5nIGF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbnZhciBfX3ZhbHVlcyA9ICh0aGlzICYmIHRoaXMuX192YWx1ZXMpIHx8IGZ1bmN0aW9uKG8pIHtcbiAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xuICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBCYXJjb2RlRm9ybWF0XzEgPSByZXF1aXJlKFwiLi4vQmFyY29kZUZvcm1hdFwiKTtcbnZhciBVUENFQU5SZWFkZXJfMSA9IHJlcXVpcmUoXCIuL1VQQ0VBTlJlYWRlclwiKTtcbi8qKlxuICogPHA+SW1wbGVtZW50cyBkZWNvZGluZyBvZiB0aGUgRUFOLTggZm9ybWF0LjwvcD5cbiAqXG4gKiBAYXV0aG9yIFNlYW4gT3dlblxuICovXG52YXIgRUFOOFJlYWRlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoRUFOOFJlYWRlciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBFQU44UmVhZGVyKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5kZWNvZGVNaWRkbGVDb3VudGVycyA9IEludDMyQXJyYXkuZnJvbShbMCwgMCwgMCwgMF0pO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIEVBTjhSZWFkZXIucHJvdG90eXBlLmRlY29kZU1pZGRsZSA9IGZ1bmN0aW9uIChyb3csIHN0YXJ0UmFuZ2UsIHJlc3VsdFN0cmluZykge1xuICAgICAgICB2YXIgZV8xLCBfYSwgZV8yLCBfYjtcbiAgICAgICAgdmFyIGNvdW50ZXJzID0gdGhpcy5kZWNvZGVNaWRkbGVDb3VudGVycztcbiAgICAgICAgY291bnRlcnNbMF0gPSAwO1xuICAgICAgICBjb3VudGVyc1sxXSA9IDA7XG4gICAgICAgIGNvdW50ZXJzWzJdID0gMDtcbiAgICAgICAgY291bnRlcnNbM10gPSAwO1xuICAgICAgICB2YXIgZW5kID0gcm93LmdldFNpemUoKTtcbiAgICAgICAgdmFyIHJvd09mZnNldCA9IHN0YXJ0UmFuZ2VbMV07XG4gICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgNCAmJiByb3dPZmZzZXQgPCBlbmQ7IHgrKykge1xuICAgICAgICAgICAgdmFyIGJlc3RNYXRjaCA9IFVQQ0VBTlJlYWRlcl8xLmRlZmF1bHQuZGVjb2RlRGlnaXQocm93LCBjb3VudGVycywgcm93T2Zmc2V0LCBVUENFQU5SZWFkZXJfMS5kZWZhdWx0LkxfUEFUVEVSTlMpO1xuICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKCcwJy5jaGFyQ29kZUF0KDApICsgYmVzdE1hdGNoKSk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGNvdW50ZXJzXzEgPSAoZV8xID0gdm9pZCAwLCBfX3ZhbHVlcyhjb3VudGVycykpLCBjb3VudGVyc18xXzEgPSBjb3VudGVyc18xLm5leHQoKTsgIWNvdW50ZXJzXzFfMS5kb25lOyBjb3VudGVyc18xXzEgPSBjb3VudGVyc18xLm5leHQoKSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgY291bnRlciA9IGNvdW50ZXJzXzFfMS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgcm93T2Zmc2V0ICs9IGNvdW50ZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH1cbiAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb3VudGVyc18xXzEgJiYgIWNvdW50ZXJzXzFfMS5kb25lICYmIChfYSA9IGNvdW50ZXJzXzEucmV0dXJuKSkgX2EuY2FsbChjb3VudGVyc18xKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHZhciBtaWRkbGVSYW5nZSA9IFVQQ0VBTlJlYWRlcl8xLmRlZmF1bHQuZmluZEd1YXJkUGF0dGVybihyb3csIHJvd09mZnNldCwgdHJ1ZSwgVVBDRUFOUmVhZGVyXzEuZGVmYXVsdC5NSURETEVfUEFUVEVSTiwgbmV3IEludDMyQXJyYXkoVVBDRUFOUmVhZGVyXzEuZGVmYXVsdC5NSURETEVfUEFUVEVSTi5sZW5ndGgpLmZpbGwoMCkpO1xuICAgICAgICByb3dPZmZzZXQgPSBtaWRkbGVSYW5nZVsxXTtcbiAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCA0ICYmIHJvd09mZnNldCA8IGVuZDsgeCsrKSB7XG4gICAgICAgICAgICB2YXIgYmVzdE1hdGNoID0gVVBDRUFOUmVhZGVyXzEuZGVmYXVsdC5kZWNvZGVEaWdpdChyb3csIGNvdW50ZXJzLCByb3dPZmZzZXQsIFVQQ0VBTlJlYWRlcl8xLmRlZmF1bHQuTF9QQVRURVJOUyk7XG4gICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoJzAnLmNoYXJDb2RlQXQoMCkgKyBiZXN0TWF0Y2gpKTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgY291bnRlcnNfMiA9IChlXzIgPSB2b2lkIDAsIF9fdmFsdWVzKGNvdW50ZXJzKSksIGNvdW50ZXJzXzJfMSA9IGNvdW50ZXJzXzIubmV4dCgpOyAhY291bnRlcnNfMl8xLmRvbmU7IGNvdW50ZXJzXzJfMSA9IGNvdW50ZXJzXzIubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBjb3VudGVyID0gY291bnRlcnNfMl8xLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICByb3dPZmZzZXQgKz0gY291bnRlcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZV8yXzEpIHsgZV8yID0geyBlcnJvcjogZV8yXzEgfTsgfVxuICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvdW50ZXJzXzJfMSAmJiAhY291bnRlcnNfMl8xLmRvbmUgJiYgKF9iID0gY291bnRlcnNfMi5yZXR1cm4pKSBfYi5jYWxsKGNvdW50ZXJzXzIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMikgdGhyb3cgZV8yLmVycm9yOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgcm93T2Zmc2V0OiByb3dPZmZzZXQsIHJlc3VsdFN0cmluZzogcmVzdWx0U3RyaW5nIH07XG4gICAgfTtcbiAgICBFQU44UmVhZGVyLnByb3RvdHlwZS5nZXRCYXJjb2RlRm9ybWF0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gQmFyY29kZUZvcm1hdF8xLmRlZmF1bHQuRUFOXzg7XG4gICAgfTtcbiAgICByZXR1cm4gRUFOOFJlYWRlcjtcbn0oVVBDRUFOUmVhZGVyXzEuZGVmYXVsdCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gRUFOOFJlYWRlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUVBTjhSZWFkZXIuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IDIwMDggWlhpbmcgYXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLypuYW1lc3BhY2UgY29tLmdvb2dsZS56eGluZy5vbmVkIHsqL1xudmFyIEJhcmNvZGVGb3JtYXRfMSA9IHJlcXVpcmUoXCIuLi9CYXJjb2RlRm9ybWF0XCIpO1xudmFyIFJlc3VsdF8xID0gcmVxdWlyZShcIi4uL1Jlc3VsdFwiKTtcbnZhciBOb3RGb3VuZEV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4uL05vdEZvdW5kRXhjZXB0aW9uXCIpO1xudmFyIEVBTjEzUmVhZGVyXzEgPSByZXF1aXJlKFwiLi9FQU4xM1JlYWRlclwiKTtcbnZhciBVUENFQU5SZWFkZXJfMSA9IHJlcXVpcmUoXCIuL1VQQ0VBTlJlYWRlclwiKTtcbi8qKlxuICogRW5jYXBzdWxhdGVzIGZ1bmN0aW9uYWxpdHkgYW5kIGltcGxlbWVudGF0aW9uIHRoYXQgaXMgY29tbW9uIHRvIGFsbCBmYW1pbGllc1xuICogb2Ygb25lLWRpbWVuc2lvbmFsIGJhcmNvZGVzLlxuICpcbiAqIEBhdXRob3IgZHN3aXRraW5AZ29vZ2xlLmNvbSAoRGFuaWVsIFN3aXRraW4pXG4gKiBAYXV0aG9yIFNlYW4gT3dlblxuICogQGF1dGhvciBzYW0yMzMyIChTYW0gUnVkbG9mZilcbiAqXG4gKiBAc291cmNlIGh0dHBzOi8vZ2l0aHViLmNvbS96eGluZy96eGluZy9ibG9iLzNjOTY5MjMyNzZkZDU3ODVkNThlYjk3MGI2YmEzZjgwZDM2YTk1MDUvY29yZS9zcmMvbWFpbi9qYXZhL2NvbS9nb29nbGUvenhpbmcvb25lZC9VUENBUmVhZGVyLmphdmFcbiAqXG4gKiBAZXhwZXJpbWVudGFsXG4gKi9cbnZhciBVUENBUmVhZGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhVUENBUmVhZGVyLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFVQQ0FSZWFkZXIoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5lYW4xM1JlYWRlciA9IG5ldyBFQU4xM1JlYWRlcl8xLmRlZmF1bHQoKTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICAvLyBAT3ZlcnJpZGVcbiAgICBVUENBUmVhZGVyLnByb3RvdHlwZS5nZXRCYXJjb2RlRm9ybWF0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gQmFyY29kZUZvcm1hdF8xLmRlZmF1bHQuVVBDX0E7XG4gICAgfTtcbiAgICAvLyBOb3RlIHRoYXQgd2UgZG9uJ3QgdHJ5IHJvdGF0aW9uIHdpdGhvdXQgdGhlIHRyeSBoYXJkZXIgZmxhZywgZXZlbiBpZiByb3RhdGlvbiB3YXMgc3VwcG9ydGVkLlxuICAgIC8vIEBPdmVycmlkZVxuICAgIFVQQ0FSZWFkZXIucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uIChpbWFnZSwgaGludHMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWF5YmVSZXR1cm5SZXN1bHQodGhpcy5lYW4xM1JlYWRlci5kZWNvZGUoaW1hZ2UpKTtcbiAgICB9O1xuICAgIC8vIEBPdmVycmlkZVxuICAgIFVQQ0FSZWFkZXIucHJvdG90eXBlLmRlY29kZVJvdyA9IGZ1bmN0aW9uIChyb3dOdW1iZXIsIHJvdywgaGludHMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWF5YmVSZXR1cm5SZXN1bHQodGhpcy5lYW4xM1JlYWRlci5kZWNvZGVSb3cocm93TnVtYmVyLCByb3csIGhpbnRzKSk7XG4gICAgfTtcbiAgICAvLyBAT3ZlcnJpZGVcbiAgICBVUENBUmVhZGVyLnByb3RvdHlwZS5kZWNvZGVNaWRkbGUgPSBmdW5jdGlvbiAocm93LCBzdGFydFJhbmdlLCByZXN1bHRTdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWFuMTNSZWFkZXIuZGVjb2RlTWlkZGxlKHJvdywgc3RhcnRSYW5nZSwgcmVzdWx0U3RyaW5nKTtcbiAgICB9O1xuICAgIFVQQ0FSZWFkZXIucHJvdG90eXBlLm1heWJlUmV0dXJuUmVzdWx0ID0gZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICB2YXIgdGV4dCA9IHJlc3VsdC5nZXRUZXh0KCk7XG4gICAgICAgIGlmICh0ZXh0LmNoYXJBdCgwKSA9PT0gJzAnKSB7XG4gICAgICAgICAgICB2YXIgdXBjYVJlc3VsdCA9IG5ldyBSZXN1bHRfMS5kZWZhdWx0KHRleHQuc3Vic3RyaW5nKDEpLCBudWxsLCBudWxsLCByZXN1bHQuZ2V0UmVzdWx0UG9pbnRzKCksIEJhcmNvZGVGb3JtYXRfMS5kZWZhdWx0LlVQQ19BKTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQuZ2V0UmVzdWx0TWV0YWRhdGEoKSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdXBjYVJlc3VsdC5wdXRBbGxNZXRhZGF0YShyZXN1bHQuZ2V0UmVzdWx0TWV0YWRhdGEoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdXBjYVJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgVVBDQVJlYWRlci5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuZWFuMTNSZWFkZXIucmVzZXQoKTtcbiAgICB9O1xuICAgIHJldHVybiBVUENBUmVhZGVyO1xufShVUENFQU5SZWFkZXJfMS5kZWZhdWx0KSk7XG5leHBvcnRzLmRlZmF1bHQgPSBVUENBUmVhZGVyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VVBDQVJlYWRlci5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8qXG4gKiBDb3B5cmlnaHQgMjAwOCBaWGluZyBhdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG52YXIgX192YWx1ZXMgPSAodGhpcyAmJiB0aGlzLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7XG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgVVBDRUFOUmVhZGVyXzEgPSByZXF1aXJlKFwiLi9VUENFQU5SZWFkZXJcIik7XG52YXIgU3RyaW5nQnVpbGRlcl8xID0gcmVxdWlyZShcIi4uL3V0aWwvU3RyaW5nQnVpbGRlclwiKTtcbnZhciBOb3RGb3VuZEV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4uL05vdEZvdW5kRXhjZXB0aW9uXCIpO1xudmFyIEJhcmNvZGVGb3JtYXRfMSA9IHJlcXVpcmUoXCIuLi9CYXJjb2RlRm9ybWF0XCIpO1xuLy8gcGFja2FnZSBjb20uZ29vZ2xlLnp4aW5nLm9uZWQ7XG4vLyBpbXBvcnQgY29tLmdvb2dsZS56eGluZy5CYXJjb2RlRm9ybWF0O1xuLy8gaW1wb3J0IGNvbS5nb29nbGUuenhpbmcuRm9ybWF0RXhjZXB0aW9uO1xuLy8gaW1wb3J0IGNvbS5nb29nbGUuenhpbmcuTm90Rm91bmRFeGNlcHRpb247XG4vLyBpbXBvcnQgY29tLmdvb2dsZS56eGluZy5jb21tb24uQml0QXJyYXk7XG4vKipcbiAqIDxwPkltcGxlbWVudHMgZGVjb2Rpbmcgb2YgdGhlIFVQQy1FIGZvcm1hdC48L3A+XG4gKiA8cD48YSBocmVmPVwiaHR0cDovL3d3dy5iYXJjb2RlaXNsYW5kLmNvbS91cGNlLnBodG1sXCI+VGhpczwvYT4gaXMgYSBncmVhdCByZWZlcmVuY2UgZm9yXG4gKiBVUEMtRSBpbmZvcm1hdGlvbi48L3A+XG4gKlxuICogQGF1dGhvciBTZWFuIE93ZW5cbiAqXG4gKiBAc291cmNlIGh0dHBzOi8vZ2l0aHViLmNvbS96eGluZy96eGluZy9ibG9iLzNjOTY5MjMyNzZkZDU3ODVkNThlYjk3MGI2YmEzZjgwZDM2YTk1MDUvY29yZS9zcmMvbWFpbi9qYXZhL2NvbS9nb29nbGUvenhpbmcvb25lZC9VUENFUmVhZGVyLmphdmFcbiAqXG4gKiBAZXhwZXJpbWVudGFsXG4gKi9cbnZhciBVUENFUmVhZGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhVUENFUmVhZGVyLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFVQQ0VSZWFkZXIoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLmRlY29kZU1pZGRsZUNvdW50ZXJzID0gbmV3IEludDMyQXJyYXkoNCk7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQHRocm93cyBOb3RGb3VuZEV4Y2VwdGlvblxuICAgICAqL1xuICAgIC8vIEBPdmVycmlkZVxuICAgIFVQQ0VSZWFkZXIucHJvdG90eXBlLmRlY29kZU1pZGRsZSA9IGZ1bmN0aW9uIChyb3csIHN0YXJ0UmFuZ2UsIHJlc3VsdCkge1xuICAgICAgICB2YXIgZV8xLCBfYTtcbiAgICAgICAgdmFyIGNvdW50ZXJzID0gdGhpcy5kZWNvZGVNaWRkbGVDb3VudGVycy5tYXAoZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHg7IH0pO1xuICAgICAgICBjb3VudGVyc1swXSA9IDA7XG4gICAgICAgIGNvdW50ZXJzWzFdID0gMDtcbiAgICAgICAgY291bnRlcnNbMl0gPSAwO1xuICAgICAgICBjb3VudGVyc1szXSA9IDA7XG4gICAgICAgIHZhciBlbmQgPSByb3cuZ2V0U2l6ZSgpO1xuICAgICAgICB2YXIgcm93T2Zmc2V0ID0gc3RhcnRSYW5nZVsxXTtcbiAgICAgICAgdmFyIGxnUGF0dGVybkZvdW5kID0gMDtcbiAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCA2ICYmIHJvd09mZnNldCA8IGVuZDsgeCsrKSB7XG4gICAgICAgICAgICB2YXIgYmVzdE1hdGNoID0gVVBDRVJlYWRlci5kZWNvZGVEaWdpdChyb3csIGNvdW50ZXJzLCByb3dPZmZzZXQsIFVQQ0VSZWFkZXIuTF9BTkRfR19QQVRURVJOUyk7XG4gICAgICAgICAgICByZXN1bHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoJzAnLmNoYXJDb2RlQXQoMCkgKyBiZXN0TWF0Y2ggJSAxMCkpO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBjb3VudGVyc18xID0gKGVfMSA9IHZvaWQgMCwgX192YWx1ZXMoY291bnRlcnMpKSwgY291bnRlcnNfMV8xID0gY291bnRlcnNfMS5uZXh0KCk7ICFjb3VudGVyc18xXzEuZG9uZTsgY291bnRlcnNfMV8xID0gY291bnRlcnNfMS5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvdW50ZXIgPSBjb3VudGVyc18xXzEudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIHJvd09mZnNldCArPSBjb3VudGVyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9XG4gICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY291bnRlcnNfMV8xICYmICFjb3VudGVyc18xXzEuZG9uZSAmJiAoX2EgPSBjb3VudGVyc18xLnJldHVybikpIF9hLmNhbGwoY291bnRlcnNfMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChiZXN0TWF0Y2ggPj0gMTApIHtcbiAgICAgICAgICAgICAgICBsZ1BhdHRlcm5Gb3VuZCB8PSAxIDw8ICg1IC0geCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgVVBDRVJlYWRlci5kZXRlcm1pbmVOdW1TeXNBbmRDaGVja0RpZ2l0KG5ldyBTdHJpbmdCdWlsZGVyXzEuZGVmYXVsdChyZXN1bHQpLCBsZ1BhdHRlcm5Gb3VuZCk7XG4gICAgICAgIHJldHVybiByb3dPZmZzZXQ7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAdGhyb3dzIE5vdEZvdW5kRXhjZXB0aW9uXG4gICAgICovXG4gICAgLy8gQE92ZXJyaWRlXG4gICAgVVBDRVJlYWRlci5wcm90b3R5cGUuZGVjb2RlRW5kID0gZnVuY3Rpb24gKHJvdywgZW5kU3RhcnQpIHtcbiAgICAgICAgcmV0dXJuIFVQQ0VSZWFkZXIuZmluZEd1YXJkUGF0dGVybldpdGhvdXRDb3VudGVycyhyb3csIGVuZFN0YXJ0LCB0cnVlLCBVUENFUmVhZGVyLk1JRERMRV9FTkRfUEFUVEVSTik7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAdGhyb3dzIEZvcm1hdEV4Y2VwdGlvblxuICAgICAqL1xuICAgIC8vIEBPdmVycmlkZVxuICAgIFVQQ0VSZWFkZXIucHJvdG90eXBlLmNoZWNrQ2hlY2tzdW0gPSBmdW5jdGlvbiAocykge1xuICAgICAgICByZXR1cm4gVVBDRUFOUmVhZGVyXzEuZGVmYXVsdC5jaGVja0NoZWNrc3VtKFVQQ0VSZWFkZXIuY29udmVydFVQQ0V0b1VQQ0EocykpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHRocm93cyBOb3RGb3VuZEV4Y2VwdGlvblxuICAgICAqL1xuICAgIFVQQ0VSZWFkZXIuZGV0ZXJtaW5lTnVtU3lzQW5kQ2hlY2tEaWdpdCA9IGZ1bmN0aW9uIChyZXN1bHRTdHJpbmcsIGxnUGF0dGVybkZvdW5kKSB7XG4gICAgICAgIGZvciAodmFyIG51bVN5cyA9IDA7IG51bVN5cyA8PSAxOyBudW1TeXMrKykge1xuICAgICAgICAgICAgZm9yICh2YXIgZCA9IDA7IGQgPCAxMDsgZCsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxnUGF0dGVybkZvdW5kID09PSB0aGlzLk5VTVNZU19BTkRfQ0hFQ0tfRElHSVRfUEFUVEVSTlNbbnVtU3lzXVtkXSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcuaW5zZXJ0KDAsIC8qKGNoYXIpKi8gKCcwJyArIG51bVN5cykpO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcuYXBwZW5kKC8qKGNoYXIpKi8gKCcwJyArIGQpKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQuZ2V0Tm90Rm91bmRJbnN0YW5jZSgpO1xuICAgIH07XG4gICAgLy8gQE92ZXJyaWRlXG4gICAgVVBDRVJlYWRlci5wcm90b3R5cGUuZ2V0QmFyY29kZUZvcm1hdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIEJhcmNvZGVGb3JtYXRfMS5kZWZhdWx0LlVQQ19FO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogRXhwYW5kcyBhIFVQQy1FIHZhbHVlIGJhY2sgaW50byBpdHMgZnVsbCwgZXF1aXZhbGVudCBVUEMtQSBjb2RlIHZhbHVlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHVwY2UgVVBDLUUgY29kZSBhcyBzdHJpbmcgb2YgZGlnaXRzXG4gICAgICogQHJldHVybiBlcXVpdmFsZW50IFVQQy1BIGNvZGUgYXMgc3RyaW5nIG9mIGRpZ2l0c1xuICAgICAqL1xuICAgIFVQQ0VSZWFkZXIuY29udmVydFVQQ0V0b1VQQ0EgPSBmdW5jdGlvbiAodXBjZSkge1xuICAgICAgICAvLyB0aGUgZm9sbG93aW5nIGxpbmUgaXMgZXF1aXZhbGVudCB0byB1cGNlLmdldENoYXJzKDEsIDcsIHVwY2VDaGFycywgMCk7XG4gICAgICAgIHZhciB1cGNlQ2hhcnMgPSB1cGNlLnNsaWNlKDEsIDcpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHguY2hhckNvZGVBdCgwKTsgfSk7XG4gICAgICAgIHZhciByZXN1bHQgPSBuZXcgU3RyaW5nQnVpbGRlcl8xLmRlZmF1bHQoIC8qMTIqLyk7XG4gICAgICAgIHJlc3VsdC5hcHBlbmQodXBjZS5jaGFyQXQoMCkpO1xuICAgICAgICB2YXIgbGFzdENoYXIgPSB1cGNlQ2hhcnNbNV07XG4gICAgICAgIHN3aXRjaCAobGFzdENoYXIpIHtcbiAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kQ2hhcnModXBjZUNoYXJzLCAwLCAyKTtcbiAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGxhc3RDaGFyKTtcbiAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcwMDAwJyk7XG4gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZENoYXJzKHVwY2VDaGFycywgMiwgMyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZENoYXJzKHVwY2VDaGFycywgMCwgMyk7XG4gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnMDAwMDAnKTtcbiAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kQ2hhcnModXBjZUNoYXJzLCAzLCAyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kQ2hhcnModXBjZUNoYXJzLCAwLCA0KTtcbiAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcwMDAwMCcpO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodXBjZUNoYXJzWzRdKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZENoYXJzKHVwY2VDaGFycywgMCwgNSk7XG4gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnMDAwMCcpO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQobGFzdENoYXIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIC8vIE9ubHkgYXBwZW5kIGNoZWNrIGRpZ2l0IGluIGNvbnZlcnNpb24gaWYgc3VwcGxpZWRcbiAgICAgICAgaWYgKHVwY2UubGVuZ3RoID49IDgpIHtcbiAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodXBjZS5jaGFyQXQoNykpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFRoZSBwYXR0ZXJuIHRoYXQgbWFya3MgdGhlIG1pZGRsZSwgYW5kIGVuZCwgb2YgYSBVUEMtRSBwYXR0ZXJuLlxuICAgICAqIFRoZXJlIGlzIG5vIFwic2Vjb25kIGhhbGZcIiB0byBhIFVQQy1FIGJhcmNvZGUuXG4gICAgICovXG4gICAgVVBDRVJlYWRlci5NSURETEVfRU5EX1BBVFRFUk4gPSBJbnQzMkFycmF5LmZyb20oWzEsIDEsIDEsIDEsIDEsIDFdKTtcbiAgICAvLyBGb3IgYW4gVVBDLUUgYmFyY29kZSwgdGhlIGZpbmFsIGRpZ2l0IGlzIHJlcHJlc2VudGVkIGJ5IHRoZSBwYXJpdGllcyB1c2VkXG4gICAgLy8gdG8gZW5jb2RlIHRoZSBtaWRkbGUgc2l4IGRpZ2l0cywgYWNjb3JkaW5nIHRvIHRoZSB0YWJsZSBiZWxvdy5cbiAgICAvL1xuICAgIC8vICAgICAgICAgICAgICAgIFBhcml0eSBvZiBuZXh0IDYgZGlnaXRzXG4gICAgLy8gICAgRGlnaXQgICAwICAgICAxICAgICAyICAgICAzICAgICA0ICAgICA1XG4gICAgLy8gICAgICAgMCAgICBFdmVuICAgRXZlbiAgRXZlbiBPZGQgIE9kZCAgIE9kZFxuICAgIC8vICAgICAgIDEgICAgRXZlbiAgIEV2ZW4gIE9kZCAgRXZlbiBPZGQgICBPZGRcbiAgICAvLyAgICAgICAyICAgIEV2ZW4gICBFdmVuICBPZGQgIE9kZCAgRXZlbiAgT2RkXG4gICAgLy8gICAgICAgMyAgICBFdmVuICAgRXZlbiAgT2RkICBPZGQgIE9kZCAgIEV2ZW5cbiAgICAvLyAgICAgICA0ICAgIEV2ZW4gICBPZGQgICBFdmVuIEV2ZW4gT2RkICAgT2RkXG4gICAgLy8gICAgICAgNSAgICBFdmVuICAgT2RkICAgT2RkICBFdmVuIEV2ZW4gIE9kZFxuICAgIC8vICAgICAgIDYgICAgRXZlbiAgIE9kZCAgIE9kZCAgT2RkICBFdmVuICBFdmVuXG4gICAgLy8gICAgICAgNyAgICBFdmVuICAgT2RkICAgRXZlbiBPZGQgIEV2ZW4gIE9kZFxuICAgIC8vICAgICAgIDggICAgRXZlbiAgIE9kZCAgIEV2ZW4gT2RkICBPZGQgICBFdmVuXG4gICAgLy8gICAgICAgOSAgICBFdmVuICAgT2RkICAgT2RkICBFdmVuIE9kZCAgIEV2ZW5cbiAgICAvL1xuICAgIC8vIFRoZSBlbmNvZGluZyBpcyByZXByZXNlbnRlZCBieSB0aGUgZm9sbG93aW5nIGFycmF5LCB3aGljaCBpcyBhIGJpdCBwYXR0ZXJuXG4gICAgLy8gdXNpbmcgT2RkID0gMCBhbmQgRXZlbiA9IDEuIEZvciBleGFtcGxlLCA1IGlzIHJlcHJlc2VudGVkIGJ5OlxuICAgIC8vXG4gICAgLy8gICAgICAgICAgICAgIE9kZCBFdmVuIEV2ZW4gT2RkIE9kZCBFdmVuXG4gICAgLy8gaW4gYmluYXJ5OlxuICAgIC8vICAgICAgICAgICAgICAgIDAgICAgMSAgICAxICAgMCAgIDAgICAgMSAgID09IDB4MTlcbiAgICAvL1xuICAgIC8qKlxuICAgICAqIFNlZSB7QGxpbmsgI0xfQU5EX0dfUEFUVEVSTlN9OyB0aGVzZSB2YWx1ZXMgc2ltaWxhcmx5IHJlcHJlc2VudCBwYXR0ZXJucyBvZlxuICAgICAqIGV2ZW4tb2RkIHBhcml0eSBlbmNvZGluZ3Mgb2YgZGlnaXRzIHRoYXQgaW1wbHkgYm90aCB0aGUgbnVtYmVyIHN5c3RlbSAoMCBvciAxKVxuICAgICAqIHVzZWQsIGFuZCB0aGUgY2hlY2sgZGlnaXQuXG4gICAgICovXG4gICAgVVBDRVJlYWRlci5OVU1TWVNfQU5EX0NIRUNLX0RJR0lUX1BBVFRFUk5TID0gW1xuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzB4MzgsIDB4MzQsIDB4MzIsIDB4MzEsIDB4MkMsIDB4MjYsIDB4MjMsIDB4MkEsIDB4MjksIDB4MjVdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFsweDA3LCAweDBCLCAweDBELCAweDBFLCAweDEzLCAweDE5LCAweDFDLCAweDE1LCAweDE2LCAweDFdKSxcbiAgICBdO1xuICAgIHJldHVybiBVUENFUmVhZGVyO1xufShVUENFQU5SZWFkZXJfMS5kZWZhdWx0KSk7XG5leHBvcnRzLmRlZmF1bHQgPSBVUENFUmVhZGVyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VVBDRVJlYWRlci5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8qXG4gKiBDb3B5cmlnaHQgMjAwOCBaWGluZyBhdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG52YXIgX192YWx1ZXMgPSAodGhpcyAmJiB0aGlzLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7XG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgQmFyY29kZUZvcm1hdF8xID0gcmVxdWlyZShcIi4uL0JhcmNvZGVGb3JtYXRcIik7XG52YXIgRGVjb2RlSGludFR5cGVfMSA9IHJlcXVpcmUoXCIuLi9EZWNvZGVIaW50VHlwZVwiKTtcbnZhciBSZXN1bHRfMSA9IHJlcXVpcmUoXCIuLi9SZXN1bHRcIik7XG52YXIgT25lRFJlYWRlcl8xID0gcmVxdWlyZShcIi4vT25lRFJlYWRlclwiKTtcbnZhciBFQU4xM1JlYWRlcl8xID0gcmVxdWlyZShcIi4vRUFOMTNSZWFkZXJcIik7XG52YXIgRUFOOFJlYWRlcl8xID0gcmVxdWlyZShcIi4vRUFOOFJlYWRlclwiKTtcbnZhciBVUENBUmVhZGVyXzEgPSByZXF1aXJlKFwiLi9VUENBUmVhZGVyXCIpO1xudmFyIE5vdEZvdW5kRXhjZXB0aW9uXzEgPSByZXF1aXJlKFwiLi4vTm90Rm91bmRFeGNlcHRpb25cIik7XG52YXIgVVBDRVJlYWRlcl8xID0gcmVxdWlyZShcIi4vVVBDRVJlYWRlclwiKTtcbi8qKlxuICogPHA+QSByZWFkZXIgdGhhdCBjYW4gcmVhZCBhbGwgYXZhaWxhYmxlIFVQQy9FQU4gZm9ybWF0cy4gSWYgYSBjYWxsZXIgd2FudHMgdG8gdHJ5IHRvXG4gKiByZWFkIGFsbCBzdWNoIGZvcm1hdHMsIGl0IGlzIG1vc3QgZWZmaWNpZW50IHRvIHVzZSB0aGlzIGltcGxlbWVudGF0aW9uIHJhdGhlciB0aGFuIGludm9rZVxuICogaW5kaXZpZHVhbCByZWFkZXJzLjwvcD5cbiAqXG4gKiBAYXV0aG9yIFNlYW4gT3dlblxuICovXG52YXIgTXVsdGlGb3JtYXRVUENFQU5SZWFkZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKE11bHRpRm9ybWF0VVBDRUFOUmVhZGVyLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIE11bHRpRm9ybWF0VVBDRUFOUmVhZGVyKGhpbnRzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMpIHx8IHRoaXM7XG4gICAgICAgIHZhciBwb3NzaWJsZUZvcm1hdHMgPSBoaW50cyA9PSBudWxsID8gbnVsbCA6IGhpbnRzLmdldChEZWNvZGVIaW50VHlwZV8xLmRlZmF1bHQuUE9TU0lCTEVfRk9STUFUUyk7XG4gICAgICAgIHZhciByZWFkZXJzID0gW107XG4gICAgICAgIGlmIChwb3NzaWJsZUZvcm1hdHMgIT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHBvc3NpYmxlRm9ybWF0cy5pbmRleE9mKEJhcmNvZGVGb3JtYXRfMS5kZWZhdWx0LkVBTl8xMykgPiAtMSkge1xuICAgICAgICAgICAgICAgIHJlYWRlcnMucHVzaChuZXcgRUFOMTNSZWFkZXJfMS5kZWZhdWx0KCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAocG9zc2libGVGb3JtYXRzLmluZGV4T2YoQmFyY29kZUZvcm1hdF8xLmRlZmF1bHQuVVBDX0EpID4gLTEpIHtcbiAgICAgICAgICAgICAgICByZWFkZXJzLnB1c2gobmV3IFVQQ0FSZWFkZXJfMS5kZWZhdWx0KCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBvc3NpYmxlRm9ybWF0cy5pbmRleE9mKEJhcmNvZGVGb3JtYXRfMS5kZWZhdWx0LkVBTl84KSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgcmVhZGVycy5wdXNoKG5ldyBFQU44UmVhZGVyXzEuZGVmYXVsdCgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwb3NzaWJsZUZvcm1hdHMuaW5kZXhPZihCYXJjb2RlRm9ybWF0XzEuZGVmYXVsdC5VUENfRSkgPiAtMSkge1xuICAgICAgICAgICAgICAgIHJlYWRlcnMucHVzaChuZXcgVVBDRVJlYWRlcl8xLmRlZmF1bHQoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlYWRlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZWFkZXJzLnB1c2gobmV3IEVBTjEzUmVhZGVyXzEuZGVmYXVsdCgpKTtcbiAgICAgICAgICAgIC8vIFVQQy1BIGlzIGNvdmVyZWQgYnkgRUFOLTEzXG4gICAgICAgICAgICByZWFkZXJzLnB1c2gobmV3IEVBTjhSZWFkZXJfMS5kZWZhdWx0KCkpO1xuICAgICAgICAgICAgcmVhZGVycy5wdXNoKG5ldyBVUENFUmVhZGVyXzEuZGVmYXVsdCgpKTtcbiAgICAgICAgfVxuICAgICAgICBfdGhpcy5yZWFkZXJzID0gcmVhZGVycztcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBNdWx0aUZvcm1hdFVQQ0VBTlJlYWRlci5wcm90b3R5cGUuZGVjb2RlUm93ID0gZnVuY3Rpb24gKHJvd051bWJlciwgcm93LCBoaW50cykge1xuICAgICAgICB2YXIgZV8xLCBfYTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAodmFyIF9iID0gX192YWx1ZXModGhpcy5yZWFkZXJzKSwgX2MgPSBfYi5uZXh0KCk7ICFfYy5kb25lOyBfYyA9IF9iLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciByZWFkZXIgPSBfYy52YWx1ZTtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAvLyBjb25zdCByZXN1bHQ6IFJlc3VsdCA9IHJlYWRlci5kZWNvZGVSb3cocm93TnVtYmVyLCByb3csIHN0YXJ0R3VhcmRQYXR0ZXJuLCBoaW50cyk7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSByZWFkZXIuZGVjb2RlUm93KHJvd051bWJlciwgcm93LCBoaW50cyk7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNwZWNpYWwgY2FzZTogYSAxMi1kaWdpdCBjb2RlIGVuY29kZWQgaW4gVVBDLUEgaXMgaWRlbnRpY2FsIHRvIGEgXCIwXCJcbiAgICAgICAgICAgICAgICAgICAgLy8gZm9sbG93ZWQgYnkgdGhvc2UgMTIgZGlnaXRzIGVuY29kZWQgYXMgRUFOLTEzLiBFYWNoIHdpbGwgcmVjb2duaXplIHN1Y2ggYSBjb2RlLFxuICAgICAgICAgICAgICAgICAgICAvLyBVUEMtQSBhcyBhIDEyLWRpZ2l0IHN0cmluZyBhbmQgRUFOLTEzIGFzIGEgMTMtZGlnaXQgc3RyaW5nIHN0YXJ0aW5nIHdpdGggXCIwXCIuXG4gICAgICAgICAgICAgICAgICAgIC8vIEluZGl2aWR1YWxseSB0aGVzZSBhcmUgY29ycmVjdCBhbmQgdGhlaXIgcmVhZGVycyB3aWxsIGJvdGggcmVhZCBzdWNoIGEgY29kZVxuICAgICAgICAgICAgICAgICAgICAvLyBhbmQgY29ycmVjdGx5IGNhbGwgaXQgRUFOLTEzLCBvciBVUEMtQSwgcmVzcGVjdGl2ZWx5LlxuICAgICAgICAgICAgICAgICAgICAvL1xuICAgICAgICAgICAgICAgICAgICAvLyBJbiB0aGlzIGNhc2UsIGlmIHdlJ3ZlIGJlZW4gbG9va2luZyBmb3IgYm90aCB0eXBlcywgd2UnZCBsaWtlIHRvIGNhbGwgaXRcbiAgICAgICAgICAgICAgICAgICAgLy8gYSBVUEMtQSBjb2RlLiBCdXQgZm9yIGVmZmljaWVuY3kgd2Ugb25seSBydW4gdGhlIEVBTi0xMyBkZWNvZGVyIHRvIGFsc28gcmVhZFxuICAgICAgICAgICAgICAgICAgICAvLyBVUEMtQS4gU28gd2Ugc3BlY2lhbCBjYXNlIGl0IGhlcmUsIGFuZCBjb252ZXJ0IGFuIEVBTi0xMyByZXN1bHQgdG8gYSBVUEMtQVxuICAgICAgICAgICAgICAgICAgICAvLyByZXN1bHQgaWYgYXBwcm9wcmlhdGUuXG4gICAgICAgICAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAgICAgICAgIC8vIEJ1dCwgZG9uJ3QgcmV0dXJuIFVQQy1BIGlmIFVQQy1BIHdhcyBub3QgYSByZXF1ZXN0ZWQgZm9ybWF0IVxuICAgICAgICAgICAgICAgICAgICB2YXIgZWFuMTNNYXlCZVVQQ0EgPSByZXN1bHQuZ2V0QmFyY29kZUZvcm1hdCgpID09PSBCYXJjb2RlRm9ybWF0XzEuZGVmYXVsdC5FQU5fMTMgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5nZXRUZXh0KCkuY2hhckF0KDApID09PSAnMCc7XG4gICAgICAgICAgICAgICAgICAgIC8vIEBTdXBwcmVzc1dhcm5pbmdzKFwidW5jaGVja2VkXCIpXG4gICAgICAgICAgICAgICAgICAgIHZhciBwb3NzaWJsZUZvcm1hdHMgPSBoaW50cyA9PSBudWxsID8gbnVsbCA6IGhpbnRzLmdldChEZWNvZGVIaW50VHlwZV8xLmRlZmF1bHQuUE9TU0lCTEVfRk9STUFUUyk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBjYW5SZXR1cm5VUENBID0gcG9zc2libGVGb3JtYXRzID09IG51bGwgfHwgcG9zc2libGVGb3JtYXRzLmluY2x1ZGVzKEJhcmNvZGVGb3JtYXRfMS5kZWZhdWx0LlVQQ19BKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVhbjEzTWF5QmVVUENBICYmIGNhblJldHVyblVQQ0EpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByYXdCeXRlcyA9IHJlc3VsdC5nZXRSYXdCeXRlcygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVHJhbnNmZXIgdGhlIG1ldGFkYXRhIGFjcm9zc1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdFVQQ0EgPSBuZXcgUmVzdWx0XzEuZGVmYXVsdChyZXN1bHQuZ2V0VGV4dCgpLnN1YnN0cmluZygxKSwgcmF3Qnl0ZXMsIHJhd0J5dGVzLmxlbmd0aCwgcmVzdWx0LmdldFJlc3VsdFBvaW50cygpLCBCYXJjb2RlRm9ybWF0XzEuZGVmYXVsdC5VUENfQSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRVUENBLnB1dEFsbE1ldGFkYXRhKHJlc3VsdC5nZXRSZXN1bHRNZXRhZGF0YSgpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRVUENBO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoX2MgJiYgIV9jLmRvbmUgJiYgKF9hID0gX2IucmV0dXJuKSkgX2EuY2FsbChfYik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgIH07XG4gICAgTXVsdGlGb3JtYXRVUENFQU5SZWFkZXIucHJvdG90eXBlLnJlc2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZV8yLCBfYTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAodmFyIF9iID0gX192YWx1ZXModGhpcy5yZWFkZXJzKSwgX2MgPSBfYi5uZXh0KCk7ICFfYy5kb25lOyBfYyA9IF9iLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciByZWFkZXIgPSBfYy52YWx1ZTtcbiAgICAgICAgICAgICAgICByZWFkZXIucmVzZXQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZV8yXzEpIHsgZV8yID0geyBlcnJvcjogZV8yXzEgfTsgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzIpIHRocm93IGVfMi5lcnJvcjsgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gTXVsdGlGb3JtYXRVUENFQU5SZWFkZXI7XG59KE9uZURSZWFkZXJfMS5kZWZhdWx0KSk7XG5leHBvcnRzLmRlZmF1bHQgPSBNdWx0aUZvcm1hdFVQQ0VBTlJlYWRlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU11bHRpRm9ybWF0VVBDRUFOUmVhZGVyLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG52YXIgX192YWx1ZXMgPSAodGhpcyAmJiB0aGlzLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7XG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgTWF0aFV0aWxzXzEgPSByZXF1aXJlKFwiLi4vLi4vY29tbW9uL2RldGVjdG9yL01hdGhVdGlsc1wiKTtcbnZhciBOb3RGb3VuZEV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4uLy4uL05vdEZvdW5kRXhjZXB0aW9uXCIpO1xudmFyIE9uZURSZWFkZXJfMSA9IHJlcXVpcmUoXCIuLi9PbmVEUmVhZGVyXCIpO1xuLy8gaW1wb3J0IEludGVnZXIgZnJvbSAnLi4vLi4vdXRpbC9JbnRlZ2VyJztcbi8vIGltcG9ydCBGbG9hdCBmcm9tICcuLi8uLi91dGlsL0Zsb2F0JztcbnZhciBBYnN0cmFjdFJTU1JlYWRlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQWJzdHJhY3RSU1NSZWFkZXIsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQWJzdHJhY3RSU1NSZWFkZXIoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLmRlY29kZUZpbmRlckNvdW50ZXJzID0gbmV3IEludDMyQXJyYXkoNCk7XG4gICAgICAgIF90aGlzLmRhdGFDaGFyYWN0ZXJDb3VudGVycyA9IG5ldyBJbnQzMkFycmF5KDgpO1xuICAgICAgICBfdGhpcy5vZGRSb3VuZGluZ0Vycm9ycyA9IG5ldyBBcnJheSg0KTtcbiAgICAgICAgX3RoaXMuZXZlblJvdW5kaW5nRXJyb3JzID0gbmV3IEFycmF5KDQpO1xuICAgICAgICBfdGhpcy5vZGRDb3VudHMgPSBuZXcgQXJyYXkoX3RoaXMuZGF0YUNoYXJhY3RlckNvdW50ZXJzLmxlbmd0aCAvIDIpO1xuICAgICAgICBfdGhpcy5ldmVuQ291bnRzID0gbmV3IEFycmF5KF90aGlzLmRhdGFDaGFyYWN0ZXJDb3VudGVycy5sZW5ndGggLyAyKTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBBYnN0cmFjdFJTU1JlYWRlci5wcm90b3R5cGUuZ2V0RGVjb2RlRmluZGVyQ291bnRlcnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlY29kZUZpbmRlckNvdW50ZXJzO1xuICAgIH07XG4gICAgQWJzdHJhY3RSU1NSZWFkZXIucHJvdG90eXBlLmdldERhdGFDaGFyYWN0ZXJDb3VudGVycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YUNoYXJhY3RlckNvdW50ZXJzO1xuICAgIH07XG4gICAgQWJzdHJhY3RSU1NSZWFkZXIucHJvdG90eXBlLmdldE9kZFJvdW5kaW5nRXJyb3JzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vZGRSb3VuZGluZ0Vycm9ycztcbiAgICB9O1xuICAgIEFic3RyYWN0UlNTUmVhZGVyLnByb3RvdHlwZS5nZXRFdmVuUm91bmRpbmdFcnJvcnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmV2ZW5Sb3VuZGluZ0Vycm9ycztcbiAgICB9O1xuICAgIEFic3RyYWN0UlNTUmVhZGVyLnByb3RvdHlwZS5nZXRPZGRDb3VudHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9kZENvdW50cztcbiAgICB9O1xuICAgIEFic3RyYWN0UlNTUmVhZGVyLnByb3RvdHlwZS5nZXRFdmVuQ291bnRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ldmVuQ291bnRzO1xuICAgIH07XG4gICAgQWJzdHJhY3RSU1NSZWFkZXIucHJvdG90eXBlLnBhcnNlRmluZGVyVmFsdWUgPSBmdW5jdGlvbiAoY291bnRlcnMsIGZpbmRlclBhdHRlcm5zKSB7XG4gICAgICAgIGZvciAodmFyIHZhbHVlID0gMDsgdmFsdWUgPCBmaW5kZXJQYXR0ZXJucy5sZW5ndGg7IHZhbHVlKyspIHtcbiAgICAgICAgICAgIGlmIChPbmVEUmVhZGVyXzEuZGVmYXVsdC5wYXR0ZXJuTWF0Y2hWYXJpYW5jZShjb3VudGVycywgZmluZGVyUGF0dGVybnNbdmFsdWVdLCBBYnN0cmFjdFJTU1JlYWRlci5NQVhfSU5ESVZJRFVBTF9WQVJJQU5DRSkgPCBBYnN0cmFjdFJTU1JlYWRlci5NQVhfQVZHX1ZBUklBTkNFKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSBhcnJheSB2YWx1ZXMgdG8gc3VtXG4gICAgICogQHJldHVybiBzdW0gb2YgdmFsdWVzXG4gICAgICogQGRlcHJlY2F0ZWQgY2FsbCB7QGxpbmsgTWF0aFV0aWxzI3N1bShpbnRbXSl9XG4gICAgICovXG4gICAgQWJzdHJhY3RSU1NSZWFkZXIuY291bnQgPSBmdW5jdGlvbiAoYXJyYXkpIHtcbiAgICAgICAgcmV0dXJuIE1hdGhVdGlsc18xLmRlZmF1bHQuc3VtKG5ldyBJbnQzMkFycmF5KGFycmF5KSk7XG4gICAgfTtcbiAgICBBYnN0cmFjdFJTU1JlYWRlci5pbmNyZW1lbnQgPSBmdW5jdGlvbiAoYXJyYXksIGVycm9ycykge1xuICAgICAgICB2YXIgaW5kZXggPSAwO1xuICAgICAgICB2YXIgYmlnZ2VzdEVycm9yID0gZXJyb3JzWzBdO1xuICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZXJyb3JzW2ldID4gYmlnZ2VzdEVycm9yKSB7XG4gICAgICAgICAgICAgICAgYmlnZ2VzdEVycm9yID0gZXJyb3JzW2ldO1xuICAgICAgICAgICAgICAgIGluZGV4ID0gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBhcnJheVtpbmRleF0rKztcbiAgICB9O1xuICAgIEFic3RyYWN0UlNTUmVhZGVyLmRlY3JlbWVudCA9IGZ1bmN0aW9uIChhcnJheSwgZXJyb3JzKSB7XG4gICAgICAgIHZhciBpbmRleCA9IDA7XG4gICAgICAgIHZhciBiaWdnZXN0RXJyb3IgPSBlcnJvcnNbMF07XG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlcnJvcnNbaV0gPCBiaWdnZXN0RXJyb3IpIHtcbiAgICAgICAgICAgICAgICBiaWdnZXN0RXJyb3IgPSBlcnJvcnNbaV07XG4gICAgICAgICAgICAgICAgaW5kZXggPSBpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGFycmF5W2luZGV4XS0tO1xuICAgIH07XG4gICAgQWJzdHJhY3RSU1NSZWFkZXIuaXNGaW5kZXJQYXR0ZXJuID0gZnVuY3Rpb24gKGNvdW50ZXJzKSB7XG4gICAgICAgIHZhciBlXzEsIF9hO1xuICAgICAgICB2YXIgZmlyc3RUd29TdW0gPSBjb3VudGVyc1swXSArIGNvdW50ZXJzWzFdO1xuICAgICAgICB2YXIgc3VtID0gZmlyc3RUd29TdW0gKyBjb3VudGVyc1syXSArIGNvdW50ZXJzWzNdO1xuICAgICAgICB2YXIgcmF0aW8gPSBmaXJzdFR3b1N1bSAvIHN1bTtcbiAgICAgICAgaWYgKHJhdGlvID49IEFic3RyYWN0UlNTUmVhZGVyLk1JTl9GSU5ERVJfUEFUVEVSTl9SQVRJTyAmJiByYXRpbyA8PSBBYnN0cmFjdFJTU1JlYWRlci5NQVhfRklOREVSX1BBVFRFUk5fUkFUSU8pIHtcbiAgICAgICAgICAgIC8vIHBhc3NlcyByYXRpbyB0ZXN0IGluIHNwZWMsIGJ1dCBzZWUgaWYgdGhlIGNvdW50cyBhcmUgdW5yZWFzb25hYmxlXG4gICAgICAgICAgICB2YXIgbWluQ291bnRlciA9IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSO1xuICAgICAgICAgICAgdmFyIG1heENvdW50ZXIgPSBOdW1iZXIuTUlOX1NBRkVfSU5URUdFUjtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgY291bnRlcnNfMSA9IF9fdmFsdWVzKGNvdW50ZXJzKSwgY291bnRlcnNfMV8xID0gY291bnRlcnNfMS5uZXh0KCk7ICFjb3VudGVyc18xXzEuZG9uZTsgY291bnRlcnNfMV8xID0gY291bnRlcnNfMS5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvdW50ZXIgPSBjb3VudGVyc18xXzEudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb3VudGVyID4gbWF4Q291bnRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF4Q291bnRlciA9IGNvdW50ZXI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvdW50ZXIgPCBtaW5Db3VudGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtaW5Db3VudGVyID0gY291bnRlcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9XG4gICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY291bnRlcnNfMV8xICYmICFjb3VudGVyc18xXzEuZG9uZSAmJiAoX2EgPSBjb3VudGVyc18xLnJldHVybikpIF9hLmNhbGwoY291bnRlcnNfMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBtYXhDb3VudGVyIDwgMTAgKiBtaW5Db3VudGVyO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIEFic3RyYWN0UlNTUmVhZGVyLk1BWF9BVkdfVkFSSUFOQ0UgPSAwLjI7XG4gICAgQWJzdHJhY3RSU1NSZWFkZXIuTUFYX0lORElWSURVQUxfVkFSSUFOQ0UgPSAwLjQ1O1xuICAgIEFic3RyYWN0UlNTUmVhZGVyLk1JTl9GSU5ERVJfUEFUVEVSTl9SQVRJTyA9IDkuNSAvIDEyLjA7XG4gICAgQWJzdHJhY3RSU1NSZWFkZXIuTUFYX0ZJTkRFUl9QQVRURVJOX1JBVElPID0gMTIuNSAvIDE0LjA7XG4gICAgcmV0dXJuIEFic3RyYWN0UlNTUmVhZGVyO1xufShPbmVEUmVhZGVyXzEuZGVmYXVsdCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gQWJzdHJhY3RSU1NSZWFkZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BYnN0cmFjdFJTU1JlYWRlci5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBEYXRhQ2hhcmFjdGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIERhdGFDaGFyYWN0ZXIodmFsdWUsIGNoZWNrc3VtUG9ydGlvbikge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuY2hlY2tzdW1Qb3J0aW9uID0gY2hlY2tzdW1Qb3J0aW9uO1xuICAgIH1cbiAgICBEYXRhQ2hhcmFjdGVyLnByb3RvdHlwZS5nZXRWYWx1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfTtcbiAgICBEYXRhQ2hhcmFjdGVyLnByb3RvdHlwZS5nZXRDaGVja3N1bVBvcnRpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrc3VtUG9ydGlvbjtcbiAgICB9O1xuICAgIERhdGFDaGFyYWN0ZXIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZSArICcoJyArIHRoaXMuY2hlY2tzdW1Qb3J0aW9uICsgJyknO1xuICAgIH07XG4gICAgRGF0YUNoYXJhY3Rlci5wcm90b3R5cGUuZXF1YWxzID0gZnVuY3Rpb24gKG8pIHtcbiAgICAgICAgaWYgKCEobyBpbnN0YW5jZW9mIERhdGFDaGFyYWN0ZXIpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRoYXQgPSBvO1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZSA9PT0gdGhhdC52YWx1ZSAmJiB0aGlzLmNoZWNrc3VtUG9ydGlvbiA9PT0gdGhhdC5jaGVja3N1bVBvcnRpb247XG4gICAgfTtcbiAgICBEYXRhQ2hhcmFjdGVyLnByb3RvdHlwZS5oYXNoQ29kZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUgXiB0aGlzLmNoZWNrc3VtUG9ydGlvbjtcbiAgICB9O1xuICAgIHJldHVybiBEYXRhQ2hhcmFjdGVyO1xufSgpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IERhdGFDaGFyYWN0ZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1EYXRhQ2hhcmFjdGVyLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIFJlc3VsdFBvaW50XzEgPSByZXF1aXJlKFwiLi4vLi4vUmVzdWx0UG9pbnRcIik7XG52YXIgRmluZGVyUGF0dGVybiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBGaW5kZXJQYXR0ZXJuKHZhbHVlLCBzdGFydEVuZCwgc3RhcnQsIGVuZCwgcm93TnVtYmVyKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zdGFydEVuZCA9IHN0YXJ0RW5kO1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuc3RhcnRFbmQgPSBzdGFydEVuZDtcbiAgICAgICAgdGhpcy5yZXN1bHRQb2ludHMgPSBuZXcgQXJyYXkoKTtcbiAgICAgICAgdGhpcy5yZXN1bHRQb2ludHMucHVzaChuZXcgUmVzdWx0UG9pbnRfMS5kZWZhdWx0KHN0YXJ0LCByb3dOdW1iZXIpKTtcbiAgICAgICAgdGhpcy5yZXN1bHRQb2ludHMucHVzaChuZXcgUmVzdWx0UG9pbnRfMS5kZWZhdWx0KGVuZCwgcm93TnVtYmVyKSk7XG4gICAgfVxuICAgIEZpbmRlclBhdHRlcm4ucHJvdG90eXBlLmdldFZhbHVlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgICB9O1xuICAgIEZpbmRlclBhdHRlcm4ucHJvdG90eXBlLmdldFN0YXJ0RW5kID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFydEVuZDtcbiAgICB9O1xuICAgIEZpbmRlclBhdHRlcm4ucHJvdG90eXBlLmdldFJlc3VsdFBvaW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVzdWx0UG9pbnRzO1xuICAgIH07XG4gICAgRmluZGVyUGF0dGVybi5wcm90b3R5cGUuZXF1YWxzID0gZnVuY3Rpb24gKG8pIHtcbiAgICAgICAgaWYgKCEobyBpbnN0YW5jZW9mIEZpbmRlclBhdHRlcm4pKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRoYXQgPSBvO1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZSA9PT0gdGhhdC52YWx1ZTtcbiAgICB9O1xuICAgIEZpbmRlclBhdHRlcm4ucHJvdG90eXBlLmhhc2hDb2RlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgICB9O1xuICAgIHJldHVybiBGaW5kZXJQYXR0ZXJuO1xufSgpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IEZpbmRlclBhdHRlcm47XG4vLyMgc291cmNlTWFwcGluZ1VSTD1GaW5kZXJQYXR0ZXJuLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fdmFsdWVzID0gKHRoaXMgJiYgdGhpcy5fX3ZhbHVlcykgfHwgZnVuY3Rpb24obykge1xuICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xuICAgICAgICB9XG4gICAgfTtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLyoqXG4gKiBSU1MgdXRpbCBmdW5jdGlvbnMuXG4gKi9cbnZhciBSU1NVdGlscyA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBSU1NVdGlscygpIHtcbiAgICB9XG4gICAgUlNTVXRpbHMuZ2V0UlNTdmFsdWUgPSBmdW5jdGlvbiAod2lkdGhzLCBtYXhXaWR0aCwgbm9OYXJyb3cpIHtcbiAgICAgICAgdmFyIGVfMSwgX2E7XG4gICAgICAgIHZhciBuID0gMDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAodmFyIHdpZHRoc18xID0gX192YWx1ZXMod2lkdGhzKSwgd2lkdGhzXzFfMSA9IHdpZHRoc18xLm5leHQoKTsgIXdpZHRoc18xXzEuZG9uZTsgd2lkdGhzXzFfMSA9IHdpZHRoc18xLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciB3aWR0aCA9IHdpZHRoc18xXzEudmFsdWU7XG4gICAgICAgICAgICAgICAgbiArPSB3aWR0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKHdpZHRoc18xXzEgJiYgIXdpZHRoc18xXzEuZG9uZSAmJiAoX2EgPSB3aWR0aHNfMS5yZXR1cm4pKSBfYS5jYWxsKHdpZHRoc18xKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgdmFsID0gMDtcbiAgICAgICAgdmFyIG5hcnJvd01hc2sgPSAwO1xuICAgICAgICB2YXIgZWxlbWVudHMgPSB3aWR0aHMubGVuZ3RoO1xuICAgICAgICBmb3IgKHZhciBiYXIgPSAwOyBiYXIgPCBlbGVtZW50cyAtIDE7IGJhcisrKSB7XG4gICAgICAgICAgICB2YXIgZWxtV2lkdGggPSB2b2lkIDA7XG4gICAgICAgICAgICBmb3IgKGVsbVdpZHRoID0gMSwgbmFycm93TWFzayB8PSAxIDw8IGJhcjsgZWxtV2lkdGggPCB3aWR0aHNbYmFyXTsgZWxtV2lkdGgrKywgbmFycm93TWFzayAmPSB+KDEgPDwgYmFyKSkge1xuICAgICAgICAgICAgICAgIHZhciBzdWJWYWwgPSBSU1NVdGlscy5jb21iaW5zKG4gLSBlbG1XaWR0aCAtIDEsIGVsZW1lbnRzIC0gYmFyIC0gMik7XG4gICAgICAgICAgICAgICAgaWYgKG5vTmFycm93ICYmIChuYXJyb3dNYXNrID09PSAwKSAmJiAobiAtIGVsbVdpZHRoIC0gKGVsZW1lbnRzIC0gYmFyIC0gMSkgPj0gZWxlbWVudHMgLSBiYXIgLSAxKSkge1xuICAgICAgICAgICAgICAgICAgICBzdWJWYWwgLT0gUlNTVXRpbHMuY29tYmlucyhuIC0gZWxtV2lkdGggLSAoZWxlbWVudHMgLSBiYXIpLCBlbGVtZW50cyAtIGJhciAtIDIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudHMgLSBiYXIgLSAxID4gMSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgbGVzc1ZhbCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG14d0VsZW1lbnQgPSBuIC0gZWxtV2lkdGggLSAoZWxlbWVudHMgLSBiYXIgLSAyKTsgbXh3RWxlbWVudCA+IG1heFdpZHRoOyBteHdFbGVtZW50LS0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlc3NWYWwgKz0gUlNTVXRpbHMuY29tYmlucyhuIC0gZWxtV2lkdGggLSBteHdFbGVtZW50IC0gMSwgZWxlbWVudHMgLSBiYXIgLSAzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBzdWJWYWwgLT0gbGVzc1ZhbCAqIChlbGVtZW50cyAtIDEgLSBiYXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChuIC0gZWxtV2lkdGggPiBtYXhXaWR0aCkge1xuICAgICAgICAgICAgICAgICAgICBzdWJWYWwtLTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFsICs9IHN1YlZhbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG4gLT0gZWxtV2lkdGg7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICB9O1xuICAgIFJTU1V0aWxzLmNvbWJpbnMgPSBmdW5jdGlvbiAobiwgcikge1xuICAgICAgICB2YXIgbWF4RGVub207XG4gICAgICAgIHZhciBtaW5EZW5vbTtcbiAgICAgICAgaWYgKG4gLSByID4gcikge1xuICAgICAgICAgICAgbWluRGVub20gPSByO1xuICAgICAgICAgICAgbWF4RGVub20gPSBuIC0gcjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG1pbkRlbm9tID0gbiAtIHI7XG4gICAgICAgICAgICBtYXhEZW5vbSA9IHI7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHZhbCA9IDE7XG4gICAgICAgIHZhciBqID0gMTtcbiAgICAgICAgZm9yICh2YXIgaSA9IG47IGkgPiBtYXhEZW5vbTsgaS0tKSB7XG4gICAgICAgICAgICB2YWwgKj0gaTtcbiAgICAgICAgICAgIGlmIChqIDw9IG1pbkRlbm9tKSB7XG4gICAgICAgICAgICAgICAgdmFsIC89IGo7XG4gICAgICAgICAgICAgICAgaisrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHdoaWxlICgoaiA8PSBtaW5EZW5vbSkpIHtcbiAgICAgICAgICAgIHZhbCAvPSBqO1xuICAgICAgICAgICAgaisrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWw7XG4gICAgfTtcbiAgICByZXR1cm4gUlNTVXRpbHM7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gUlNTVXRpbHM7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1SU1NVdGlscy5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBCaXRBcnJheV8xID0gcmVxdWlyZShcIi4uLy4uLy4uL2NvbW1vbi9CaXRBcnJheVwiKTtcbnZhciBCaXRBcnJheUJ1aWxkZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gQml0QXJyYXlCdWlsZGVyKCkge1xuICAgIH1cbiAgICBCaXRBcnJheUJ1aWxkZXIuYnVpbGRCaXRBcnJheSA9IGZ1bmN0aW9uIChwYWlycykge1xuICAgICAgICB2YXIgY2hhck51bWJlciA9IChwYWlycy5sZW5ndGggKiAyKSAtIDE7XG4gICAgICAgIGlmIChwYWlyc1twYWlycy5sZW5ndGggLSAxXS5nZXRSaWdodENoYXIoKSA9PSBudWxsKSB7XG4gICAgICAgICAgICBjaGFyTnVtYmVyIC09IDE7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHNpemUgPSAxMiAqIGNoYXJOdW1iZXI7XG4gICAgICAgIHZhciBiaW5hcnkgPSBuZXcgQml0QXJyYXlfMS5kZWZhdWx0KHNpemUpO1xuICAgICAgICB2YXIgYWNjUG9zID0gMDtcbiAgICAgICAgdmFyIGZpcnN0UGFpciA9IHBhaXJzWzBdO1xuICAgICAgICB2YXIgZmlyc3RWYWx1ZSA9IGZpcnN0UGFpci5nZXRSaWdodENoYXIoKS5nZXRWYWx1ZSgpO1xuICAgICAgICBmb3IgKHZhciBpID0gMTE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgICAgICBpZiAoKGZpcnN0VmFsdWUgJiAoMSA8PCBpKSkgIT0gMCkge1xuICAgICAgICAgICAgICAgIGJpbmFyeS5zZXQoYWNjUG9zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFjY1BvcysrO1xuICAgICAgICB9XG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcGFpcnMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIHZhciBjdXJyZW50UGFpciA9IHBhaXJzW2ldO1xuICAgICAgICAgICAgdmFyIGxlZnRWYWx1ZSA9IGN1cnJlbnRQYWlyLmdldExlZnRDaGFyKCkuZ2V0VmFsdWUoKTtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAxMTsgaiA+PSAwOyAtLWopIHtcbiAgICAgICAgICAgICAgICBpZiAoKGxlZnRWYWx1ZSAmICgxIDw8IGopKSAhPSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGJpbmFyeS5zZXQoYWNjUG9zKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYWNjUG9zKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY3VycmVudFBhaXIuZ2V0UmlnaHRDaGFyKCkgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHZhciByaWdodFZhbHVlID0gY3VycmVudFBhaXIuZ2V0UmlnaHRDaGFyKCkuZ2V0VmFsdWUoKTtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMTE7IGogPj0gMDsgLS1qKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICgocmlnaHRWYWx1ZSAmICgxIDw8IGopKSAhPSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiaW5hcnkuc2V0KGFjY1Bvcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYWNjUG9zKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBiaW5hcnk7XG4gICAgfTtcbiAgICByZXR1cm4gQml0QXJyYXlCdWlsZGVyO1xufSgpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IEJpdEFycmF5QnVpbGRlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUJpdEFycmF5QnVpbGRlci5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBCbG9ja1BhcnNlZFJlc3VsdCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBCbG9ja1BhcnNlZFJlc3VsdChmaW5pc2hlZCwgZGVjb2RlZEluZm9ybWF0aW9uKSB7XG4gICAgICAgIGlmIChkZWNvZGVkSW5mb3JtYXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuZGVjb2RlZEluZm9ybWF0aW9uID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZmluaXNoZWQgPSBmaW5pc2hlZDtcbiAgICAgICAgICAgIHRoaXMuZGVjb2RlZEluZm9ybWF0aW9uID0gZGVjb2RlZEluZm9ybWF0aW9uO1xuICAgICAgICB9XG4gICAgfVxuICAgIEJsb2NrUGFyc2VkUmVzdWx0LnByb3RvdHlwZS5nZXREZWNvZGVkSW5mb3JtYXRpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlY29kZWRJbmZvcm1hdGlvbjtcbiAgICB9O1xuICAgIEJsb2NrUGFyc2VkUmVzdWx0LnByb3RvdHlwZS5pc0ZpbmlzaGVkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5maW5pc2hlZDtcbiAgICB9O1xuICAgIHJldHVybiBCbG9ja1BhcnNlZFJlc3VsdDtcbn0oKSk7XG5leHBvcnRzLmRlZmF1bHQgPSBCbG9ja1BhcnNlZFJlc3VsdDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUJsb2NrUGFyc2VkUmVzdWx0LmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIERlY29kZWRPYmplY3QgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRGVjb2RlZE9iamVjdChuZXdQb3NpdGlvbikge1xuICAgICAgICB0aGlzLm5ld1Bvc2l0aW9uID0gbmV3UG9zaXRpb247XG4gICAgfVxuICAgIERlY29kZWRPYmplY3QucHJvdG90eXBlLmdldE5ld1Bvc2l0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5uZXdQb3NpdGlvbjtcbiAgICB9O1xuICAgIHJldHVybiBEZWNvZGVkT2JqZWN0O1xufSgpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IERlY29kZWRPYmplY3Q7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1EZWNvZGVkT2JqZWN0LmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgRGVjb2RlZE9iamVjdF8xID0gcmVxdWlyZShcIi4vRGVjb2RlZE9iamVjdFwiKTtcbnZhciBEZWNvZGVkQ2hhciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoRGVjb2RlZENoYXIsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gRGVjb2RlZENoYXIobmV3UG9zaXRpb24sIHZhbHVlKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIG5ld1Bvc2l0aW9uKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIERlY29kZWRDaGFyLnByb3RvdHlwZS5nZXRWYWx1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfTtcbiAgICBEZWNvZGVkQ2hhci5wcm90b3R5cGUuaXNGTkMxID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZSA9PT0gRGVjb2RlZENoYXIuRk5DMTtcbiAgICB9O1xuICAgIERlY29kZWRDaGFyLkZOQzEgPSAnJCc7XG4gICAgcmV0dXJuIERlY29kZWRDaGFyO1xufShEZWNvZGVkT2JqZWN0XzEuZGVmYXVsdCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gRGVjb2RlZENoYXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1EZWNvZGVkQ2hhci5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIERlY29kZWRPYmplY3RfMSA9IHJlcXVpcmUoXCIuL0RlY29kZWRPYmplY3RcIik7XG52YXIgRGVjb2RlZEluZm9ybWF0aW9uID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhEZWNvZGVkSW5mb3JtYXRpb24sIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gRGVjb2RlZEluZm9ybWF0aW9uKG5ld1Bvc2l0aW9uLCBuZXdTdHJpbmcsIHJlbWFpbmluZ1ZhbHVlKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIG5ld1Bvc2l0aW9uKSB8fCB0aGlzO1xuICAgICAgICBpZiAocmVtYWluaW5nVmFsdWUpIHtcbiAgICAgICAgICAgIF90aGlzLnJlbWFpbmluZyA9IHRydWU7XG4gICAgICAgICAgICBfdGhpcy5yZW1haW5pbmdWYWx1ZSA9IF90aGlzLnJlbWFpbmluZ1ZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgX3RoaXMucmVtYWluaW5nID0gZmFsc2U7XG4gICAgICAgICAgICBfdGhpcy5yZW1haW5pbmdWYWx1ZSA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgX3RoaXMubmV3U3RyaW5nID0gbmV3U3RyaW5nO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIERlY29kZWRJbmZvcm1hdGlvbi5wcm90b3R5cGUuZ2V0TmV3U3RyaW5nID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5uZXdTdHJpbmc7XG4gICAgfTtcbiAgICBEZWNvZGVkSW5mb3JtYXRpb24ucHJvdG90eXBlLmlzUmVtYWluaW5nID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZW1haW5pbmc7XG4gICAgfTtcbiAgICBEZWNvZGVkSW5mb3JtYXRpb24ucHJvdG90eXBlLmdldFJlbWFpbmluZ1ZhbHVlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZW1haW5pbmdWYWx1ZTtcbiAgICB9O1xuICAgIHJldHVybiBEZWNvZGVkSW5mb3JtYXRpb247XG59KERlY29kZWRPYmplY3RfMS5kZWZhdWx0KSk7XG5leHBvcnRzLmRlZmF1bHQgPSBEZWNvZGVkSW5mb3JtYXRpb247XG4vLyMgc291cmNlTWFwcGluZ1VSTD1EZWNvZGVkSW5mb3JtYXRpb24uanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBGb3JtYXRFeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuLi8uLi8uLi8uLi9Gb3JtYXRFeGNlcHRpb25cIik7XG52YXIgRGVjb2RlZE9iamVjdF8xID0gcmVxdWlyZShcIi4vRGVjb2RlZE9iamVjdFwiKTtcbnZhciBEZWNvZGVkTnVtZXJpYyA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoRGVjb2RlZE51bWVyaWMsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gRGVjb2RlZE51bWVyaWMobmV3UG9zaXRpb24sIGZpcnN0RGlnaXQsIHNlY29uZERpZ2l0KSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIG5ld1Bvc2l0aW9uKSB8fCB0aGlzO1xuICAgICAgICBpZiAoZmlyc3REaWdpdCA8IDAgfHwgZmlyc3REaWdpdCA+IDEwIHx8IHNlY29uZERpZ2l0IDwgMCB8fCBzZWNvbmREaWdpdCA+IDEwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIF90aGlzLmZpcnN0RGlnaXQgPSBmaXJzdERpZ2l0O1xuICAgICAgICBfdGhpcy5zZWNvbmREaWdpdCA9IHNlY29uZERpZ2l0O1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIERlY29kZWROdW1lcmljLnByb3RvdHlwZS5nZXRGaXJzdERpZ2l0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5maXJzdERpZ2l0O1xuICAgIH07XG4gICAgRGVjb2RlZE51bWVyaWMucHJvdG90eXBlLmdldFNlY29uZERpZ2l0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWNvbmREaWdpdDtcbiAgICB9O1xuICAgIERlY29kZWROdW1lcmljLnByb3RvdHlwZS5nZXRWYWx1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlyc3REaWdpdCAqIDEwICsgdGhpcy5zZWNvbmREaWdpdDtcbiAgICB9O1xuICAgIERlY29kZWROdW1lcmljLnByb3RvdHlwZS5pc0ZpcnN0RGlnaXRGTkMxID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5maXJzdERpZ2l0ID09PSBEZWNvZGVkTnVtZXJpYy5GTkMxO1xuICAgIH07XG4gICAgRGVjb2RlZE51bWVyaWMucHJvdG90eXBlLmlzU2Vjb25kRGlnaXRGTkMxID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWNvbmREaWdpdCA9PT0gRGVjb2RlZE51bWVyaWMuRk5DMTtcbiAgICB9O1xuICAgIERlY29kZWROdW1lcmljLnByb3RvdHlwZS5pc0FueUZOQzEgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpcnN0RGlnaXQgPT09IERlY29kZWROdW1lcmljLkZOQzEgfHwgdGhpcy5zZWNvbmREaWdpdCA9PT0gRGVjb2RlZE51bWVyaWMuRk5DMTtcbiAgICB9O1xuICAgIERlY29kZWROdW1lcmljLkZOQzEgPSAxMDtcbiAgICByZXR1cm4gRGVjb2RlZE51bWVyaWM7XG59KERlY29kZWRPYmplY3RfMS5kZWZhdWx0KSk7XG5leHBvcnRzLmRlZmF1bHQgPSBEZWNvZGVkTnVtZXJpYztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURlY29kZWROdW1lcmljLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fdmFsdWVzID0gKHRoaXMgJiYgdGhpcy5fX3ZhbHVlcykgfHwgZnVuY3Rpb24obykge1xuICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xuICAgICAgICB9XG4gICAgfTtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIE5vdEZvdW5kRXhjZXB0aW9uXzEgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vTm90Rm91bmRFeGNlcHRpb25cIik7XG52YXIgRmllbGRQYXJzZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRmllbGRQYXJzZXIoKSB7XG4gICAgfVxuICAgIEZpZWxkUGFyc2VyLnBhcnNlRmllbGRzSW5HZW5lcmFsUHVycG9zZSA9IGZ1bmN0aW9uIChyYXdJbmZvcm1hdGlvbikge1xuICAgICAgICB2YXIgZV8xLCBfYSwgZV8yLCBfYiwgZV8zLCBfYywgZV80LCBfZDtcbiAgICAgICAgaWYgKCFyYXdJbmZvcm1hdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUHJvY2Vzc2luZyAyLWRpZ2l0IEFJc1xuICAgICAgICBpZiAocmF3SW5mb3JtYXRpb24ubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBmaXJzdFR3b0RpZ2l0cyA9IHJhd0luZm9ybWF0aW9uLnN1YnN0cmluZygwLCAyKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAodmFyIF9lID0gX192YWx1ZXMoRmllbGRQYXJzZXIuVFdPX0RJR0lUX0RBVEFfTEVOR1RIKSwgX2YgPSBfZS5uZXh0KCk7ICFfZi5kb25lOyBfZiA9IF9lLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciBkYXRhTGVuZ3RoID0gX2YudmFsdWU7XG4gICAgICAgICAgICAgICAgaWYgKGRhdGFMZW5ndGhbMF0gPT09IGZpcnN0VHdvRGlnaXRzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhTGVuZ3RoWzFdID09PSBGaWVsZFBhcnNlci5WQVJJQUJMRV9MRU5HVEgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGaWVsZFBhcnNlci5wcm9jZXNzVmFyaWFibGVBSSgyLCBkYXRhTGVuZ3RoWzJdLCByYXdJbmZvcm1hdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZpZWxkUGFyc2VyLnByb2Nlc3NGaXhlZEFJKDIsIGRhdGFMZW5ndGhbMV0sIHJhd0luZm9ybWF0aW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChfZiAmJiAhX2YuZG9uZSAmJiAoX2EgPSBfZS5yZXR1cm4pKSBfYS5jYWxsKF9lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgICAgICBpZiAocmF3SW5mb3JtYXRpb24ubGVuZ3RoIDwgMykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBmaXJzdFRocmVlRGlnaXRzID0gcmF3SW5mb3JtYXRpb24uc3Vic3RyaW5nKDAsIDMpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yICh2YXIgX2cgPSBfX3ZhbHVlcyhGaWVsZFBhcnNlci5USFJFRV9ESUdJVF9EQVRBX0xFTkdUSCksIF9oID0gX2cubmV4dCgpOyAhX2guZG9uZTsgX2ggPSBfZy5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgZGF0YUxlbmd0aCA9IF9oLnZhbHVlO1xuICAgICAgICAgICAgICAgIGlmIChkYXRhTGVuZ3RoWzBdID09PSBmaXJzdFRocmVlRGlnaXRzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhTGVuZ3RoWzFdID09PSBGaWVsZFBhcnNlci5WQVJJQUJMRV9MRU5HVEgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGaWVsZFBhcnNlci5wcm9jZXNzVmFyaWFibGVBSSgzLCBkYXRhTGVuZ3RoWzJdLCByYXdJbmZvcm1hdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZpZWxkUGFyc2VyLnByb2Nlc3NGaXhlZEFJKDMsIGRhdGFMZW5ndGhbMV0sIHJhd0luZm9ybWF0aW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVfMl8xKSB7IGVfMiA9IHsgZXJyb3I6IGVfMl8xIH07IH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChfaCAmJiAhX2guZG9uZSAmJiAoX2IgPSBfZy5yZXR1cm4pKSBfYi5jYWxsKF9nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8yKSB0aHJvdyBlXzIuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yICh2YXIgX2ogPSBfX3ZhbHVlcyhGaWVsZFBhcnNlci5USFJFRV9ESUdJVF9QTFVTX0RJR0lUX0RBVEFfTEVOR1RIKSwgX2sgPSBfai5uZXh0KCk7ICFfay5kb25lOyBfayA9IF9qLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciBkYXRhTGVuZ3RoID0gX2sudmFsdWU7XG4gICAgICAgICAgICAgICAgaWYgKGRhdGFMZW5ndGhbMF0gPT09IGZpcnN0VGhyZWVEaWdpdHMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFMZW5ndGhbMV0gPT09IEZpZWxkUGFyc2VyLlZBUklBQkxFX0xFTkdUSCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZpZWxkUGFyc2VyLnByb2Nlc3NWYXJpYWJsZUFJKDQsIGRhdGFMZW5ndGhbMl0sIHJhd0luZm9ybWF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmllbGRQYXJzZXIucHJvY2Vzc0ZpeGVkQUkoNCwgZGF0YUxlbmd0aFsxXSwgcmF3SW5mb3JtYXRpb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZV8zXzEpIHsgZV8zID0geyBlcnJvcjogZV8zXzEgfTsgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKF9rICYmICFfay5kb25lICYmIChfYyA9IF9qLnJldHVybikpIF9jLmNhbGwoX2opO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzMpIHRocm93IGVfMy5lcnJvcjsgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChyYXdJbmZvcm1hdGlvbi5sZW5ndGggPCA0KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGZpcnN0Rm91ckRpZ2l0cyA9IHJhd0luZm9ybWF0aW9uLnN1YnN0cmluZygwLCA0KTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAodmFyIF9sID0gX192YWx1ZXMoRmllbGRQYXJzZXIuRk9VUl9ESUdJVF9EQVRBX0xFTkdUSCksIF9tID0gX2wubmV4dCgpOyAhX20uZG9uZTsgX20gPSBfbC5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgZGF0YUxlbmd0aCA9IF9tLnZhbHVlO1xuICAgICAgICAgICAgICAgIGlmIChkYXRhTGVuZ3RoWzBdID09PSBmaXJzdEZvdXJEaWdpdHMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFMZW5ndGhbMV0gPT09IEZpZWxkUGFyc2VyLlZBUklBQkxFX0xFTkdUSCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZpZWxkUGFyc2VyLnByb2Nlc3NWYXJpYWJsZUFJKDQsIGRhdGFMZW5ndGhbMl0sIHJhd0luZm9ybWF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmllbGRQYXJzZXIucHJvY2Vzc0ZpeGVkQUkoNCwgZGF0YUxlbmd0aFsxXSwgcmF3SW5mb3JtYXRpb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZV80XzEpIHsgZV80ID0geyBlcnJvcjogZV80XzEgfTsgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKF9tICYmICFfbS5kb25lICYmIChfZCA9IF9sLnJldHVybikpIF9kLmNhbGwoX2wpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzQpIHRocm93IGVfNC5lcnJvcjsgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICB9O1xuICAgIEZpZWxkUGFyc2VyLnByb2Nlc3NGaXhlZEFJID0gZnVuY3Rpb24gKGFpU2l6ZSwgZmllbGRTaXplLCByYXdJbmZvcm1hdGlvbikge1xuICAgICAgICBpZiAocmF3SW5mb3JtYXRpb24ubGVuZ3RoIDwgYWlTaXplKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGFpID0gcmF3SW5mb3JtYXRpb24uc3Vic3RyaW5nKDAsIGFpU2l6ZSk7XG4gICAgICAgIGlmIChyYXdJbmZvcm1hdGlvbi5sZW5ndGggPCBhaVNpemUgKyBmaWVsZFNpemUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZmllbGQgPSByYXdJbmZvcm1hdGlvbi5zdWJzdHJpbmcoYWlTaXplLCBhaVNpemUgKyBmaWVsZFNpemUpO1xuICAgICAgICB2YXIgcmVtYWluaW5nID0gcmF3SW5mb3JtYXRpb24uc3Vic3RyaW5nKGFpU2l6ZSArIGZpZWxkU2l6ZSk7XG4gICAgICAgIHZhciByZXN1bHQgPSAnKCcgKyBhaSArICcpJyArIGZpZWxkO1xuICAgICAgICB2YXIgcGFyc2VkQUkgPSBGaWVsZFBhcnNlci5wYXJzZUZpZWxkc0luR2VuZXJhbFB1cnBvc2UocmVtYWluaW5nKTtcbiAgICAgICAgcmV0dXJuIHBhcnNlZEFJID09IG51bGwgPyByZXN1bHQgOiByZXN1bHQgKyBwYXJzZWRBSTtcbiAgICB9O1xuICAgIEZpZWxkUGFyc2VyLnByb2Nlc3NWYXJpYWJsZUFJID0gZnVuY3Rpb24gKGFpU2l6ZSwgdmFyaWFibGVGaWVsZFNpemUsIHJhd0luZm9ybWF0aW9uKSB7XG4gICAgICAgIHZhciBhaSA9IHJhd0luZm9ybWF0aW9uLnN1YnN0cmluZygwLCBhaVNpemUpO1xuICAgICAgICB2YXIgbWF4U2l6ZTtcbiAgICAgICAgaWYgKHJhd0luZm9ybWF0aW9uLmxlbmd0aCA8IGFpU2l6ZSArIHZhcmlhYmxlRmllbGRTaXplKSB7XG4gICAgICAgICAgICBtYXhTaXplID0gcmF3SW5mb3JtYXRpb24ubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbWF4U2l6ZSA9IGFpU2l6ZSArIHZhcmlhYmxlRmllbGRTaXplO1xuICAgICAgICB9XG4gICAgICAgIHZhciBmaWVsZCA9IHJhd0luZm9ybWF0aW9uLnN1YnN0cmluZyhhaVNpemUsIG1heFNpemUpO1xuICAgICAgICB2YXIgcmVtYWluaW5nID0gcmF3SW5mb3JtYXRpb24uc3Vic3RyaW5nKG1heFNpemUpO1xuICAgICAgICB2YXIgcmVzdWx0ID0gJygnICsgYWkgKyAnKScgKyBmaWVsZDtcbiAgICAgICAgdmFyIHBhcnNlZEFJID0gRmllbGRQYXJzZXIucGFyc2VGaWVsZHNJbkdlbmVyYWxQdXJwb3NlKHJlbWFpbmluZyk7XG4gICAgICAgIHJldHVybiBwYXJzZWRBSSA9PSBudWxsID8gcmVzdWx0IDogcmVzdWx0ICsgcGFyc2VkQUk7XG4gICAgfTtcbiAgICBGaWVsZFBhcnNlci5WQVJJQUJMRV9MRU5HVEggPSBbXTtcbiAgICBGaWVsZFBhcnNlci5UV09fRElHSVRfREFUQV9MRU5HVEggPSBbXG4gICAgICAgIFsnMDAnLCAxOF0sXG4gICAgICAgIFsnMDEnLCAxNF0sXG4gICAgICAgIFsnMDInLCAxNF0sXG4gICAgICAgIFsnMTAnLCBGaWVsZFBhcnNlci5WQVJJQUJMRV9MRU5HVEgsIDIwXSxcbiAgICAgICAgWycxMScsIDZdLFxuICAgICAgICBbJzEyJywgNl0sXG4gICAgICAgIFsnMTMnLCA2XSxcbiAgICAgICAgWycxNScsIDZdLFxuICAgICAgICBbJzE3JywgNl0sXG4gICAgICAgIFsnMjAnLCAyXSxcbiAgICAgICAgWycyMScsIEZpZWxkUGFyc2VyLlZBUklBQkxFX0xFTkdUSCwgMjBdLFxuICAgICAgICBbJzIyJywgRmllbGRQYXJzZXIuVkFSSUFCTEVfTEVOR1RILCAyOV0sXG4gICAgICAgIFsnMzAnLCBGaWVsZFBhcnNlci5WQVJJQUJMRV9MRU5HVEgsIDhdLFxuICAgICAgICBbJzM3JywgRmllbGRQYXJzZXIuVkFSSUFCTEVfTEVOR1RILCA4XSxcbiAgICAgICAgLy8gaW50ZXJuYWwgY29tcGFueSBjb2Rlc1xuICAgICAgICBbJzkwJywgRmllbGRQYXJzZXIuVkFSSUFCTEVfTEVOR1RILCAzMF0sXG4gICAgICAgIFsnOTEnLCBGaWVsZFBhcnNlci5WQVJJQUJMRV9MRU5HVEgsIDMwXSxcbiAgICAgICAgWyc5MicsIEZpZWxkUGFyc2VyLlZBUklBQkxFX0xFTkdUSCwgMzBdLFxuICAgICAgICBbJzkzJywgRmllbGRQYXJzZXIuVkFSSUFCTEVfTEVOR1RILCAzMF0sXG4gICAgICAgIFsnOTQnLCBGaWVsZFBhcnNlci5WQVJJQUJMRV9MRU5HVEgsIDMwXSxcbiAgICAgICAgWyc5NScsIEZpZWxkUGFyc2VyLlZBUklBQkxFX0xFTkdUSCwgMzBdLFxuICAgICAgICBbJzk2JywgRmllbGRQYXJzZXIuVkFSSUFCTEVfTEVOR1RILCAzMF0sXG4gICAgICAgIFsnOTcnLCBGaWVsZFBhcnNlci5WQVJJQUJMRV9MRU5HVEgsIDNdLFxuICAgICAgICBbJzk4JywgRmllbGRQYXJzZXIuVkFSSUFCTEVfTEVOR1RILCAzMF0sXG4gICAgICAgIFsnOTknLCBGaWVsZFBhcnNlci5WQVJJQUJMRV9MRU5HVEgsIDMwXSxcbiAgICBdO1xuICAgIEZpZWxkUGFyc2VyLlRIUkVFX0RJR0lUX0RBVEFfTEVOR1RIID0gW1xuICAgICAgICAvLyBTYW1lIGZvcm1hdCBhcyBhYm92ZVxuICAgICAgICBbJzI0MCcsIEZpZWxkUGFyc2VyLlZBUklBQkxFX0xFTkdUSCwgMzBdLFxuICAgICAgICBbJzI0MScsIEZpZWxkUGFyc2VyLlZBUklBQkxFX0xFTkdUSCwgMzBdLFxuICAgICAgICBbJzI0MicsIEZpZWxkUGFyc2VyLlZBUklBQkxFX0xFTkdUSCwgNl0sXG4gICAgICAgIFsnMjUwJywgRmllbGRQYXJzZXIuVkFSSUFCTEVfTEVOR1RILCAzMF0sXG4gICAgICAgIFsnMjUxJywgRmllbGRQYXJzZXIuVkFSSUFCTEVfTEVOR1RILCAzMF0sXG4gICAgICAgIFsnMjUzJywgRmllbGRQYXJzZXIuVkFSSUFCTEVfTEVOR1RILCAxN10sXG4gICAgICAgIFsnMjU0JywgRmllbGRQYXJzZXIuVkFSSUFCTEVfTEVOR1RILCAyMF0sXG4gICAgICAgIFsnNDAwJywgRmllbGRQYXJzZXIuVkFSSUFCTEVfTEVOR1RILCAzMF0sXG4gICAgICAgIFsnNDAxJywgRmllbGRQYXJzZXIuVkFSSUFCTEVfTEVOR1RILCAzMF0sXG4gICAgICAgIFsnNDAyJywgMTddLFxuICAgICAgICBbJzQwMycsIEZpZWxkUGFyc2VyLlZBUklBQkxFX0xFTkdUSCwgMzBdLFxuICAgICAgICBbJzQxMCcsIDEzXSxcbiAgICAgICAgWyc0MTEnLCAxM10sXG4gICAgICAgIFsnNDEyJywgMTNdLFxuICAgICAgICBbJzQxMycsIDEzXSxcbiAgICAgICAgWyc0MTQnLCAxM10sXG4gICAgICAgIFsnNDIwJywgRmllbGRQYXJzZXIuVkFSSUFCTEVfTEVOR1RILCAyMF0sXG4gICAgICAgIFsnNDIxJywgRmllbGRQYXJzZXIuVkFSSUFCTEVfTEVOR1RILCAxNV0sXG4gICAgICAgIFsnNDIyJywgM10sXG4gICAgICAgIFsnNDIzJywgRmllbGRQYXJzZXIuVkFSSUFCTEVfTEVOR1RILCAxNV0sXG4gICAgICAgIFsnNDI0JywgM10sXG4gICAgICAgIFsnNDI1JywgM10sXG4gICAgICAgIFsnNDI2JywgM10sXG4gICAgXTtcbiAgICBGaWVsZFBhcnNlci5USFJFRV9ESUdJVF9QTFVTX0RJR0lUX0RBVEFfTEVOR1RIID0gW1xuICAgICAgICAvLyBTYW1lIGZvcm1hdCBhcyBhYm92ZVxuICAgICAgICBbJzMxMCcsIDZdLFxuICAgICAgICBbJzMxMScsIDZdLFxuICAgICAgICBbJzMxMicsIDZdLFxuICAgICAgICBbJzMxMycsIDZdLFxuICAgICAgICBbJzMxNCcsIDZdLFxuICAgICAgICBbJzMxNScsIDZdLFxuICAgICAgICBbJzMxNicsIDZdLFxuICAgICAgICBbJzMyMCcsIDZdLFxuICAgICAgICBbJzMyMScsIDZdLFxuICAgICAgICBbJzMyMicsIDZdLFxuICAgICAgICBbJzMyMycsIDZdLFxuICAgICAgICBbJzMyNCcsIDZdLFxuICAgICAgICBbJzMyNScsIDZdLFxuICAgICAgICBbJzMyNicsIDZdLFxuICAgICAgICBbJzMyNycsIDZdLFxuICAgICAgICBbJzMyOCcsIDZdLFxuICAgICAgICBbJzMyOScsIDZdLFxuICAgICAgICBbJzMzMCcsIDZdLFxuICAgICAgICBbJzMzMScsIDZdLFxuICAgICAgICBbJzMzMicsIDZdLFxuICAgICAgICBbJzMzMycsIDZdLFxuICAgICAgICBbJzMzNCcsIDZdLFxuICAgICAgICBbJzMzNScsIDZdLFxuICAgICAgICBbJzMzNicsIDZdLFxuICAgICAgICBbJzM0MCcsIDZdLFxuICAgICAgICBbJzM0MScsIDZdLFxuICAgICAgICBbJzM0MicsIDZdLFxuICAgICAgICBbJzM0MycsIDZdLFxuICAgICAgICBbJzM0NCcsIDZdLFxuICAgICAgICBbJzM0NScsIDZdLFxuICAgICAgICBbJzM0NicsIDZdLFxuICAgICAgICBbJzM0NycsIDZdLFxuICAgICAgICBbJzM0OCcsIDZdLFxuICAgICAgICBbJzM0OScsIDZdLFxuICAgICAgICBbJzM1MCcsIDZdLFxuICAgICAgICBbJzM1MScsIDZdLFxuICAgICAgICBbJzM1MicsIDZdLFxuICAgICAgICBbJzM1MycsIDZdLFxuICAgICAgICBbJzM1NCcsIDZdLFxuICAgICAgICBbJzM1NScsIDZdLFxuICAgICAgICBbJzM1NicsIDZdLFxuICAgICAgICBbJzM1NycsIDZdLFxuICAgICAgICBbJzM2MCcsIDZdLFxuICAgICAgICBbJzM2MScsIDZdLFxuICAgICAgICBbJzM2MicsIDZdLFxuICAgICAgICBbJzM2MycsIDZdLFxuICAgICAgICBbJzM2NCcsIDZdLFxuICAgICAgICBbJzM2NScsIDZdLFxuICAgICAgICBbJzM2NicsIDZdLFxuICAgICAgICBbJzM2NycsIDZdLFxuICAgICAgICBbJzM2OCcsIDZdLFxuICAgICAgICBbJzM2OScsIDZdLFxuICAgICAgICBbJzM5MCcsIEZpZWxkUGFyc2VyLlZBUklBQkxFX0xFTkdUSCwgMTVdLFxuICAgICAgICBbJzM5MScsIEZpZWxkUGFyc2VyLlZBUklBQkxFX0xFTkdUSCwgMThdLFxuICAgICAgICBbJzM5MicsIEZpZWxkUGFyc2VyLlZBUklBQkxFX0xFTkdUSCwgMTVdLFxuICAgICAgICBbJzM5MycsIEZpZWxkUGFyc2VyLlZBUklBQkxFX0xFTkdUSCwgMThdLFxuICAgICAgICBbJzcwMycsIEZpZWxkUGFyc2VyLlZBUklBQkxFX0xFTkdUSCwgMzBdLFxuICAgIF07XG4gICAgRmllbGRQYXJzZXIuRk9VUl9ESUdJVF9EQVRBX0xFTkdUSCA9IFtcbiAgICAgICAgLy8gU2FtZSBmb3JtYXQgYXMgYWJvdmVcbiAgICAgICAgWyc3MDAxJywgMTNdLFxuICAgICAgICBbJzcwMDInLCBGaWVsZFBhcnNlci5WQVJJQUJMRV9MRU5HVEgsIDMwXSxcbiAgICAgICAgWyc3MDAzJywgMTBdLFxuICAgICAgICBbJzgwMDEnLCAxNF0sXG4gICAgICAgIFsnODAwMicsIEZpZWxkUGFyc2VyLlZBUklBQkxFX0xFTkdUSCwgMjBdLFxuICAgICAgICBbJzgwMDMnLCBGaWVsZFBhcnNlci5WQVJJQUJMRV9MRU5HVEgsIDMwXSxcbiAgICAgICAgWyc4MDA0JywgRmllbGRQYXJzZXIuVkFSSUFCTEVfTEVOR1RILCAzMF0sXG4gICAgICAgIFsnODAwNScsIDZdLFxuICAgICAgICBbJzgwMDYnLCAxOF0sXG4gICAgICAgIFsnODAwNycsIEZpZWxkUGFyc2VyLlZBUklBQkxFX0xFTkdUSCwgMzBdLFxuICAgICAgICBbJzgwMDgnLCBGaWVsZFBhcnNlci5WQVJJQUJMRV9MRU5HVEgsIDEyXSxcbiAgICAgICAgWyc4MDE4JywgMThdLFxuICAgICAgICBbJzgwMjAnLCBGaWVsZFBhcnNlci5WQVJJQUJMRV9MRU5HVEgsIDI1XSxcbiAgICAgICAgWyc4MTAwJywgNl0sXG4gICAgICAgIFsnODEwMScsIDEwXSxcbiAgICAgICAgWyc4MTAyJywgMl0sXG4gICAgICAgIFsnODExMCcsIEZpZWxkUGFyc2VyLlZBUklBQkxFX0xFTkdUSCwgNzBdLFxuICAgICAgICBbJzgyMDAnLCBGaWVsZFBhcnNlci5WQVJJQUJMRV9MRU5HVEgsIDcwXSxcbiAgICBdO1xuICAgIHJldHVybiBGaWVsZFBhcnNlcjtcbn0oKSk7XG5leHBvcnRzLmRlZmF1bHQgPSBGaWVsZFBhcnNlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUZpZWxkUGFyc2VyLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIEZvcm1hdEV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uL0Zvcm1hdEV4Y2VwdGlvblwiKTtcbnZhciBJbGxlZ2FsU3RhdGVFeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuLi8uLi8uLi8uLi9JbGxlZ2FsU3RhdGVFeGNlcHRpb25cIik7XG52YXIgU3RyaW5nQnVpbGRlcl8xID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uL3V0aWwvU3RyaW5nQnVpbGRlclwiKTtcbnZhciBCbG9ja1BhcnNlZFJlc3VsdF8xID0gcmVxdWlyZShcIi4vQmxvY2tQYXJzZWRSZXN1bHRcIik7XG52YXIgRGVjb2RlZENoYXJfMSA9IHJlcXVpcmUoXCIuL0RlY29kZWRDaGFyXCIpO1xudmFyIERlY29kZWRJbmZvcm1hdGlvbl8xID0gcmVxdWlyZShcIi4vRGVjb2RlZEluZm9ybWF0aW9uXCIpO1xudmFyIERlY29kZWROdW1lcmljXzEgPSByZXF1aXJlKFwiLi9EZWNvZGVkTnVtZXJpY1wiKTtcbnZhciBGaWVsZFBhcnNlcl8xID0gcmVxdWlyZShcIi4vRmllbGRQYXJzZXJcIik7XG52YXIgR2VuZXJhbEFwcElkRGVjb2RlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBHZW5lcmFsQXBwSWREZWNvZGVyKGluZm9ybWF0aW9uKSB7XG4gICAgICAgIHRoaXMuYnVmZmVyID0gbmV3IFN0cmluZ0J1aWxkZXJfMS5kZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuaW5mb3JtYXRpb24gPSBpbmZvcm1hdGlvbjtcbiAgICB9XG4gICAgR2VuZXJhbEFwcElkRGVjb2Rlci5wcm90b3R5cGUuZGVjb2RlQWxsQ29kZXMgPSBmdW5jdGlvbiAoYnVmZiwgaW5pdGlhbFBvc2l0aW9uKSB7XG4gICAgICAgIHZhciBjdXJyZW50UG9zaXRpb24gPSBpbml0aWFsUG9zaXRpb247XG4gICAgICAgIHZhciByZW1haW5pbmcgPSBudWxsO1xuICAgICAgICBkbyB7XG4gICAgICAgICAgICB2YXIgaW5mbyA9IHRoaXMuZGVjb2RlR2VuZXJhbFB1cnBvc2VGaWVsZChjdXJyZW50UG9zaXRpb24sIHJlbWFpbmluZyk7XG4gICAgICAgICAgICB2YXIgcGFyc2VkRmllbGRzID0gRmllbGRQYXJzZXJfMS5kZWZhdWx0LnBhcnNlRmllbGRzSW5HZW5lcmFsUHVycG9zZShpbmZvLmdldE5ld1N0cmluZygpKTtcbiAgICAgICAgICAgIGlmIChwYXJzZWRGaWVsZHMgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGJ1ZmYuYXBwZW5kKHBhcnNlZEZpZWxkcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaW5mby5pc1JlbWFpbmluZygpKSB7XG4gICAgICAgICAgICAgICAgcmVtYWluaW5nID0gJycgKyBpbmZvLmdldFJlbWFpbmluZ1ZhbHVlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZW1haW5pbmcgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGN1cnJlbnRQb3NpdGlvbiA9PT0gaW5mby5nZXROZXdQb3NpdGlvbigpKSB7IC8vIE5vIHN0ZXAgZm9yd2FyZCFcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGN1cnJlbnRQb3NpdGlvbiA9IGluZm8uZ2V0TmV3UG9zaXRpb24oKTtcbiAgICAgICAgfSB3aGlsZSAodHJ1ZSk7XG4gICAgICAgIHJldHVybiBidWZmLnRvU3RyaW5nKCk7XG4gICAgfTtcbiAgICBHZW5lcmFsQXBwSWREZWNvZGVyLnByb3RvdHlwZS5pc1N0aWxsTnVtZXJpYyA9IGZ1bmN0aW9uIChwb3MpIHtcbiAgICAgICAgLy8gSXQncyBudW1lcmljIGlmIGl0IHN0aWxsIGhhcyA3IHBvc2l0aW9uc1xuICAgICAgICAvLyBhbmQgb25lIG9mIHRoZSBmaXJzdCA0IGJpdHMgaXMgXCIxXCIuXG4gICAgICAgIGlmIChwb3MgKyA3ID4gdGhpcy5pbmZvcm1hdGlvbi5nZXRTaXplKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBwb3MgKyA0IDw9IHRoaXMuaW5mb3JtYXRpb24uZ2V0U2l6ZSgpO1xuICAgICAgICB9XG4gICAgICAgIGZvciAodmFyIGkgPSBwb3M7IGkgPCBwb3MgKyAzOyArK2kpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmluZm9ybWF0aW9uLmdldChpKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmluZm9ybWF0aW9uLmdldChwb3MgKyAzKTtcbiAgICB9O1xuICAgIEdlbmVyYWxBcHBJZERlY29kZXIucHJvdG90eXBlLmRlY29kZU51bWVyaWMgPSBmdW5jdGlvbiAocG9zKSB7XG4gICAgICAgIGlmIChwb3MgKyA3ID4gdGhpcy5pbmZvcm1hdGlvbi5nZXRTaXplKCkpIHtcbiAgICAgICAgICAgIHZhciBudW1lcmljXzEgPSB0aGlzLmV4dHJhY3ROdW1lcmljVmFsdWVGcm9tQml0QXJyYXkocG9zLCA0KTtcbiAgICAgICAgICAgIGlmIChudW1lcmljXzEgPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERlY29kZWROdW1lcmljXzEuZGVmYXVsdCh0aGlzLmluZm9ybWF0aW9uLmdldFNpemUoKSwgRGVjb2RlZE51bWVyaWNfMS5kZWZhdWx0LkZOQzEsIERlY29kZWROdW1lcmljXzEuZGVmYXVsdC5GTkMxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBuZXcgRGVjb2RlZE51bWVyaWNfMS5kZWZhdWx0KHRoaXMuaW5mb3JtYXRpb24uZ2V0U2l6ZSgpLCBudW1lcmljXzEgLSAxLCBEZWNvZGVkTnVtZXJpY18xLmRlZmF1bHQuRk5DMSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG51bWVyaWMgPSB0aGlzLmV4dHJhY3ROdW1lcmljVmFsdWVGcm9tQml0QXJyYXkocG9zLCA3KTtcbiAgICAgICAgdmFyIGRpZ2l0MSA9IChudW1lcmljIC0gOCkgLyAxMTtcbiAgICAgICAgdmFyIGRpZ2l0MiA9IChudW1lcmljIC0gOCkgJSAxMTtcbiAgICAgICAgcmV0dXJuIG5ldyBEZWNvZGVkTnVtZXJpY18xLmRlZmF1bHQocG9zICsgNywgZGlnaXQxLCBkaWdpdDIpO1xuICAgIH07XG4gICAgR2VuZXJhbEFwcElkRGVjb2Rlci5wcm90b3R5cGUuZXh0cmFjdE51bWVyaWNWYWx1ZUZyb21CaXRBcnJheSA9IGZ1bmN0aW9uIChwb3MsIGJpdHMpIHtcbiAgICAgICAgcmV0dXJuIEdlbmVyYWxBcHBJZERlY29kZXIuZXh0cmFjdE51bWVyaWNWYWx1ZUZyb21CaXRBcnJheSh0aGlzLmluZm9ybWF0aW9uLCBwb3MsIGJpdHMpO1xuICAgIH07XG4gICAgR2VuZXJhbEFwcElkRGVjb2Rlci5leHRyYWN0TnVtZXJpY1ZhbHVlRnJvbUJpdEFycmF5ID0gZnVuY3Rpb24gKGluZm9ybWF0aW9uLCBwb3MsIGJpdHMpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gMDtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiaXRzOyArK2kpIHtcbiAgICAgICAgICAgIGlmIChpbmZvcm1hdGlvbi5nZXQocG9zICsgaSkpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSB8PSAxIDw8IChiaXRzIC0gaSAtIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9O1xuICAgIEdlbmVyYWxBcHBJZERlY29kZXIucHJvdG90eXBlLmRlY29kZUdlbmVyYWxQdXJwb3NlRmllbGQgPSBmdW5jdGlvbiAocG9zLCByZW1haW5pbmcpIHtcbiAgICAgICAgLy8gdGhpcy5idWZmZXIuc2V0TGVuZ3RoKDApO1xuICAgICAgICB0aGlzLmJ1ZmZlci5zZXRMZW5ndGhUb1plcm8oKTtcbiAgICAgICAgaWYgKHJlbWFpbmluZyAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmJ1ZmZlci5hcHBlbmQocmVtYWluaW5nKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmN1cnJlbnQuc2V0UG9zaXRpb24ocG9zKTtcbiAgICAgICAgdmFyIGxhc3REZWNvZGVkID0gdGhpcy5wYXJzZUJsb2NrcygpO1xuICAgICAgICBpZiAobGFzdERlY29kZWQgIT0gbnVsbCAmJiBsYXN0RGVjb2RlZC5pc1JlbWFpbmluZygpKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERlY29kZWRJbmZvcm1hdGlvbl8xLmRlZmF1bHQodGhpcy5jdXJyZW50LmdldFBvc2l0aW9uKCksIHRoaXMuYnVmZmVyLnRvU3RyaW5nKCksIGxhc3REZWNvZGVkLmdldFJlbWFpbmluZ1ZhbHVlKCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgRGVjb2RlZEluZm9ybWF0aW9uXzEuZGVmYXVsdCh0aGlzLmN1cnJlbnQuZ2V0UG9zaXRpb24oKSwgdGhpcy5idWZmZXIudG9TdHJpbmcoKSk7XG4gICAgfTtcbiAgICBHZW5lcmFsQXBwSWREZWNvZGVyLnByb3RvdHlwZS5wYXJzZUJsb2NrcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGlzRmluaXNoZWQ7XG4gICAgICAgIHZhciByZXN1bHQ7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIHZhciBpbml0aWFsUG9zaXRpb24gPSB0aGlzLmN1cnJlbnQuZ2V0UG9zaXRpb24oKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnQuaXNBbHBoYSgpKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gdGhpcy5wYXJzZUFscGhhQmxvY2soKTtcbiAgICAgICAgICAgICAgICBpc0ZpbmlzaGVkID0gcmVzdWx0LmlzRmluaXNoZWQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuY3VycmVudC5pc0lzb0llYzY0NigpKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gdGhpcy5wYXJzZUlzb0llYzY0NkJsb2NrKCk7XG4gICAgICAgICAgICAgICAgaXNGaW5pc2hlZCA9IHJlc3VsdC5pc0ZpbmlzaGVkKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHsgLy8gaXQgbXVzdCBiZSBudW1lcmljXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gdGhpcy5wYXJzZU51bWVyaWNCbG9jaygpO1xuICAgICAgICAgICAgICAgIGlzRmluaXNoZWQgPSByZXN1bHQuaXNGaW5pc2hlZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIHBvc2l0aW9uQ2hhbmdlZCA9IGluaXRpYWxQb3NpdGlvbiAhPT0gdGhpcy5jdXJyZW50LmdldFBvc2l0aW9uKCk7XG4gICAgICAgICAgICBpZiAoIXBvc2l0aW9uQ2hhbmdlZCAmJiAhaXNGaW5pc2hlZCkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IHdoaWxlICghaXNGaW5pc2hlZCk7XG4gICAgICAgIHJldHVybiByZXN1bHQuZ2V0RGVjb2RlZEluZm9ybWF0aW9uKCk7XG4gICAgfTtcbiAgICBHZW5lcmFsQXBwSWREZWNvZGVyLnByb3RvdHlwZS5wYXJzZU51bWVyaWNCbG9jayA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgd2hpbGUgKHRoaXMuaXNTdGlsbE51bWVyaWModGhpcy5jdXJyZW50LmdldFBvc2l0aW9uKCkpKSB7XG4gICAgICAgICAgICB2YXIgbnVtZXJpYyA9IHRoaXMuZGVjb2RlTnVtZXJpYyh0aGlzLmN1cnJlbnQuZ2V0UG9zaXRpb24oKSk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnQuc2V0UG9zaXRpb24obnVtZXJpYy5nZXROZXdQb3NpdGlvbigpKTtcbiAgICAgICAgICAgIGlmIChudW1lcmljLmlzRmlyc3REaWdpdEZOQzEoKSkge1xuICAgICAgICAgICAgICAgIHZhciBpbmZvcm1hdGlvbiA9IHZvaWQgMDtcbiAgICAgICAgICAgICAgICBpZiAobnVtZXJpYy5pc1NlY29uZERpZ2l0Rk5DMSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uID0gbmV3IERlY29kZWRJbmZvcm1hdGlvbl8xLmRlZmF1bHQodGhpcy5jdXJyZW50LmdldFBvc2l0aW9uKCksIHRoaXMuYnVmZmVyLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gPSBuZXcgRGVjb2RlZEluZm9ybWF0aW9uXzEuZGVmYXVsdCh0aGlzLmN1cnJlbnQuZ2V0UG9zaXRpb24oKSwgdGhpcy5idWZmZXIudG9TdHJpbmcoKSwgbnVtZXJpYy5nZXRTZWNvbmREaWdpdCgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBCbG9ja1BhcnNlZFJlc3VsdF8xLmRlZmF1bHQodHJ1ZSwgaW5mb3JtYXRpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5idWZmZXIuYXBwZW5kKG51bWVyaWMuZ2V0Rmlyc3REaWdpdCgpKTtcbiAgICAgICAgICAgIGlmIChudW1lcmljLmlzU2Vjb25kRGlnaXRGTkMxKCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgaW5mb3JtYXRpb24gPSBuZXcgRGVjb2RlZEluZm9ybWF0aW9uXzEuZGVmYXVsdCh0aGlzLmN1cnJlbnQuZ2V0UG9zaXRpb24oKSwgdGhpcy5idWZmZXIudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBCbG9ja1BhcnNlZFJlc3VsdF8xLmRlZmF1bHQodHJ1ZSwgaW5mb3JtYXRpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5idWZmZXIuYXBwZW5kKG51bWVyaWMuZ2V0U2Vjb25kRGlnaXQoKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNOdW1lcmljVG9BbHBoYU51bWVyaWNMYXRjaCh0aGlzLmN1cnJlbnQuZ2V0UG9zaXRpb24oKSkpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudC5zZXRBbHBoYSgpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50LmluY3JlbWVudFBvc2l0aW9uKDQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgQmxvY2tQYXJzZWRSZXN1bHRfMS5kZWZhdWx0KGZhbHNlKTtcbiAgICB9O1xuICAgIEdlbmVyYWxBcHBJZERlY29kZXIucHJvdG90eXBlLnBhcnNlSXNvSWVjNjQ2QmxvY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHdoaWxlICh0aGlzLmlzU3RpbGxJc29JZWM2NDYodGhpcy5jdXJyZW50LmdldFBvc2l0aW9uKCkpKSB7XG4gICAgICAgICAgICB2YXIgaXNvID0gdGhpcy5kZWNvZGVJc29JZWM2NDYodGhpcy5jdXJyZW50LmdldFBvc2l0aW9uKCkpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50LnNldFBvc2l0aW9uKGlzby5nZXROZXdQb3NpdGlvbigpKTtcbiAgICAgICAgICAgIGlmIChpc28uaXNGTkMxKCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgaW5mb3JtYXRpb24gPSBuZXcgRGVjb2RlZEluZm9ybWF0aW9uXzEuZGVmYXVsdCh0aGlzLmN1cnJlbnQuZ2V0UG9zaXRpb24oKSwgdGhpcy5idWZmZXIudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBCbG9ja1BhcnNlZFJlc3VsdF8xLmRlZmF1bHQodHJ1ZSwgaW5mb3JtYXRpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5idWZmZXIuYXBwZW5kKGlzby5nZXRWYWx1ZSgpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc0FscGhhT3I2NDZUb051bWVyaWNMYXRjaCh0aGlzLmN1cnJlbnQuZ2V0UG9zaXRpb24oKSkpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudC5pbmNyZW1lbnRQb3NpdGlvbigzKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudC5zZXROdW1lcmljKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5pc0FscGhhVG82NDZUb0FscGhhTGF0Y2godGhpcy5jdXJyZW50LmdldFBvc2l0aW9uKCkpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50LmdldFBvc2l0aW9uKCkgKyA1IDwgdGhpcy5pbmZvcm1hdGlvbi5nZXRTaXplKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnQuaW5jcmVtZW50UG9zaXRpb24oNSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnQuc2V0UG9zaXRpb24odGhpcy5pbmZvcm1hdGlvbi5nZXRTaXplKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jdXJyZW50LnNldEFscGhhKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBCbG9ja1BhcnNlZFJlc3VsdF8xLmRlZmF1bHQoZmFsc2UpO1xuICAgIH07XG4gICAgR2VuZXJhbEFwcElkRGVjb2Rlci5wcm90b3R5cGUucGFyc2VBbHBoYUJsb2NrID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB3aGlsZSAodGhpcy5pc1N0aWxsQWxwaGEodGhpcy5jdXJyZW50LmdldFBvc2l0aW9uKCkpKSB7XG4gICAgICAgICAgICB2YXIgYWxwaGEgPSB0aGlzLmRlY29kZUFscGhhbnVtZXJpYyh0aGlzLmN1cnJlbnQuZ2V0UG9zaXRpb24oKSk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnQuc2V0UG9zaXRpb24oYWxwaGEuZ2V0TmV3UG9zaXRpb24oKSk7XG4gICAgICAgICAgICBpZiAoYWxwaGEuaXNGTkMxKCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgaW5mb3JtYXRpb24gPSBuZXcgRGVjb2RlZEluZm9ybWF0aW9uXzEuZGVmYXVsdCh0aGlzLmN1cnJlbnQuZ2V0UG9zaXRpb24oKSwgdGhpcy5idWZmZXIudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBCbG9ja1BhcnNlZFJlc3VsdF8xLmRlZmF1bHQodHJ1ZSwgaW5mb3JtYXRpb24pOyAvLyBlbmQgb2YgdGhlIGNoYXIgYmxvY2tcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuYnVmZmVyLmFwcGVuZChhbHBoYS5nZXRWYWx1ZSgpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc0FscGhhT3I2NDZUb051bWVyaWNMYXRjaCh0aGlzLmN1cnJlbnQuZ2V0UG9zaXRpb24oKSkpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudC5pbmNyZW1lbnRQb3NpdGlvbigzKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudC5zZXROdW1lcmljKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5pc0FscGhhVG82NDZUb0FscGhhTGF0Y2godGhpcy5jdXJyZW50LmdldFBvc2l0aW9uKCkpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50LmdldFBvc2l0aW9uKCkgKyA1IDwgdGhpcy5pbmZvcm1hdGlvbi5nZXRTaXplKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnQuaW5jcmVtZW50UG9zaXRpb24oNSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnQuc2V0UG9zaXRpb24odGhpcy5pbmZvcm1hdGlvbi5nZXRTaXplKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jdXJyZW50LnNldElzb0llYzY0NigpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgQmxvY2tQYXJzZWRSZXN1bHRfMS5kZWZhdWx0KGZhbHNlKTtcbiAgICB9O1xuICAgIEdlbmVyYWxBcHBJZERlY29kZXIucHJvdG90eXBlLmlzU3RpbGxJc29JZWM2NDYgPSBmdW5jdGlvbiAocG9zKSB7XG4gICAgICAgIGlmIChwb3MgKyA1ID4gdGhpcy5pbmZvcm1hdGlvbi5nZXRTaXplKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZml2ZUJpdFZhbHVlID0gdGhpcy5leHRyYWN0TnVtZXJpY1ZhbHVlRnJvbUJpdEFycmF5KHBvcywgNSk7XG4gICAgICAgIGlmIChmaXZlQml0VmFsdWUgPj0gNSAmJiBmaXZlQml0VmFsdWUgPCAxNikge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBvcyArIDcgPiB0aGlzLmluZm9ybWF0aW9uLmdldFNpemUoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzZXZlbkJpdFZhbHVlID0gdGhpcy5leHRyYWN0TnVtZXJpY1ZhbHVlRnJvbUJpdEFycmF5KHBvcywgNyk7XG4gICAgICAgIGlmIChzZXZlbkJpdFZhbHVlID49IDY0ICYmIHNldmVuQml0VmFsdWUgPCAxMTYpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwb3MgKyA4ID4gdGhpcy5pbmZvcm1hdGlvbi5nZXRTaXplKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZWlnaHRCaXRWYWx1ZSA9IHRoaXMuZXh0cmFjdE51bWVyaWNWYWx1ZUZyb21CaXRBcnJheShwb3MsIDgpO1xuICAgICAgICByZXR1cm4gZWlnaHRCaXRWYWx1ZSA+PSAyMzIgJiYgZWlnaHRCaXRWYWx1ZSA8IDI1MztcbiAgICB9O1xuICAgIEdlbmVyYWxBcHBJZERlY29kZXIucHJvdG90eXBlLmRlY29kZUlzb0llYzY0NiA9IGZ1bmN0aW9uIChwb3MpIHtcbiAgICAgICAgdmFyIGZpdmVCaXRWYWx1ZSA9IHRoaXMuZXh0cmFjdE51bWVyaWNWYWx1ZUZyb21CaXRBcnJheShwb3MsIDUpO1xuICAgICAgICBpZiAoZml2ZUJpdFZhbHVlID09PSAxNSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEZWNvZGVkQ2hhcl8xLmRlZmF1bHQocG9zICsgNSwgRGVjb2RlZENoYXJfMS5kZWZhdWx0LkZOQzEpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaXZlQml0VmFsdWUgPj0gNSAmJiBmaXZlQml0VmFsdWUgPCAxNSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEZWNvZGVkQ2hhcl8xLmRlZmF1bHQocG9zICsgNSwgKCcwJyArIChmaXZlQml0VmFsdWUgLSA1KSkpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzZXZlbkJpdFZhbHVlID0gdGhpcy5leHRyYWN0TnVtZXJpY1ZhbHVlRnJvbUJpdEFycmF5KHBvcywgNyk7XG4gICAgICAgIGlmIChzZXZlbkJpdFZhbHVlID49IDY0ICYmIHNldmVuQml0VmFsdWUgPCA5MCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEZWNvZGVkQ2hhcl8xLmRlZmF1bHQocG9zICsgNywgKCcnICsgKHNldmVuQml0VmFsdWUgKyAxKSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZXZlbkJpdFZhbHVlID49IDkwICYmIHNldmVuQml0VmFsdWUgPCAxMTYpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRGVjb2RlZENoYXJfMS5kZWZhdWx0KHBvcyArIDcsICgnJyArIChzZXZlbkJpdFZhbHVlICsgNykpKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZWlnaHRCaXRWYWx1ZSA9IHRoaXMuZXh0cmFjdE51bWVyaWNWYWx1ZUZyb21CaXRBcnJheShwb3MsIDgpO1xuICAgICAgICB2YXIgYztcbiAgICAgICAgc3dpdGNoIChlaWdodEJpdFZhbHVlKSB7XG4gICAgICAgICAgICBjYXNlIDIzMjpcbiAgICAgICAgICAgICAgICBjID0gJyEnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAyMzM6XG4gICAgICAgICAgICAgICAgYyA9ICdcIic7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDIzNDpcbiAgICAgICAgICAgICAgICBjID0gJyUnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAyMzU6XG4gICAgICAgICAgICAgICAgYyA9ICcmJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgMjM2OlxuICAgICAgICAgICAgICAgIGMgPSAnXFwnJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgMjM3OlxuICAgICAgICAgICAgICAgIGMgPSAnKCc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDIzODpcbiAgICAgICAgICAgICAgICBjID0gJyknO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAyMzk6XG4gICAgICAgICAgICAgICAgYyA9ICcqJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgMjQwOlxuICAgICAgICAgICAgICAgIGMgPSAnKyc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDI0MTpcbiAgICAgICAgICAgICAgICBjID0gJywnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAyNDI6XG4gICAgICAgICAgICAgICAgYyA9ICctJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgMjQzOlxuICAgICAgICAgICAgICAgIGMgPSAnLic7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDI0NDpcbiAgICAgICAgICAgICAgICBjID0gJy8nO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAyNDU6XG4gICAgICAgICAgICAgICAgYyA9ICc6JztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgMjQ2OlxuICAgICAgICAgICAgICAgIGMgPSAnOyc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDI0NzpcbiAgICAgICAgICAgICAgICBjID0gJzwnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAyNDg6XG4gICAgICAgICAgICAgICAgYyA9ICc9JztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgMjQ5OlxuICAgICAgICAgICAgICAgIGMgPSAnPic7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDI1MDpcbiAgICAgICAgICAgICAgICBjID0gJz8nO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAyNTE6XG4gICAgICAgICAgICAgICAgYyA9ICdfJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgMjUyOlxuICAgICAgICAgICAgICAgIGMgPSAnICc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBEZWNvZGVkQ2hhcl8xLmRlZmF1bHQocG9zICsgOCwgYyk7XG4gICAgfTtcbiAgICBHZW5lcmFsQXBwSWREZWNvZGVyLnByb3RvdHlwZS5pc1N0aWxsQWxwaGEgPSBmdW5jdGlvbiAocG9zKSB7XG4gICAgICAgIGlmIChwb3MgKyA1ID4gdGhpcy5pbmZvcm1hdGlvbi5nZXRTaXplKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBXZSBub3cgY2hlY2sgaWYgaXQncyBhIHZhbGlkIDUtYml0IHZhbHVlICgwLi45IGFuZCBGTkMxKVxuICAgICAgICB2YXIgZml2ZUJpdFZhbHVlID0gdGhpcy5leHRyYWN0TnVtZXJpY1ZhbHVlRnJvbUJpdEFycmF5KHBvcywgNSk7XG4gICAgICAgIGlmIChmaXZlQml0VmFsdWUgPj0gNSAmJiBmaXZlQml0VmFsdWUgPCAxNikge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBvcyArIDYgPiB0aGlzLmluZm9ybWF0aW9uLmdldFNpemUoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzaXhCaXRWYWx1ZSA9IHRoaXMuZXh0cmFjdE51bWVyaWNWYWx1ZUZyb21CaXRBcnJheShwb3MsIDYpO1xuICAgICAgICByZXR1cm4gc2l4Qml0VmFsdWUgPj0gMTYgJiYgc2l4Qml0VmFsdWUgPCA2MzsgLy8gNjMgbm90IGluY2x1ZGVkXG4gICAgfTtcbiAgICBHZW5lcmFsQXBwSWREZWNvZGVyLnByb3RvdHlwZS5kZWNvZGVBbHBoYW51bWVyaWMgPSBmdW5jdGlvbiAocG9zKSB7XG4gICAgICAgIHZhciBmaXZlQml0VmFsdWUgPSB0aGlzLmV4dHJhY3ROdW1lcmljVmFsdWVGcm9tQml0QXJyYXkocG9zLCA1KTtcbiAgICAgICAgaWYgKGZpdmVCaXRWYWx1ZSA9PT0gMTUpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRGVjb2RlZENoYXJfMS5kZWZhdWx0KHBvcyArIDUsIERlY29kZWRDaGFyXzEuZGVmYXVsdC5GTkMxKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZml2ZUJpdFZhbHVlID49IDUgJiYgZml2ZUJpdFZhbHVlIDwgMTUpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRGVjb2RlZENoYXJfMS5kZWZhdWx0KHBvcyArIDUsICgnMCcgKyAoZml2ZUJpdFZhbHVlIC0gNSkpKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc2l4Qml0VmFsdWUgPSB0aGlzLmV4dHJhY3ROdW1lcmljVmFsdWVGcm9tQml0QXJyYXkocG9zLCA2KTtcbiAgICAgICAgaWYgKHNpeEJpdFZhbHVlID49IDMyICYmIHNpeEJpdFZhbHVlIDwgNTgpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRGVjb2RlZENoYXJfMS5kZWZhdWx0KHBvcyArIDYsICgnJyArIChzaXhCaXRWYWx1ZSArIDMzKSkpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBjO1xuICAgICAgICBzd2l0Y2ggKHNpeEJpdFZhbHVlKSB7XG4gICAgICAgICAgICBjYXNlIDU4OlxuICAgICAgICAgICAgICAgIGMgPSAnKic7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDU5OlxuICAgICAgICAgICAgICAgIGMgPSAnLCc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDYwOlxuICAgICAgICAgICAgICAgIGMgPSAnLSc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDYxOlxuICAgICAgICAgICAgICAgIGMgPSAnLic7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDYyOlxuICAgICAgICAgICAgICAgIGMgPSAnLyc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb25fMS5kZWZhdWx0KCdEZWNvZGluZyBpbnZhbGlkIGFscGhhbnVtZXJpYyB2YWx1ZTogJyArIHNpeEJpdFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IERlY29kZWRDaGFyXzEuZGVmYXVsdChwb3MgKyA2LCBjKTtcbiAgICB9O1xuICAgIEdlbmVyYWxBcHBJZERlY29kZXIucHJvdG90eXBlLmlzQWxwaGFUbzY0NlRvQWxwaGFMYXRjaCA9IGZ1bmN0aW9uIChwb3MpIHtcbiAgICAgICAgaWYgKHBvcyArIDEgPiB0aGlzLmluZm9ybWF0aW9uLmdldFNpemUoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNSAmJiBpICsgcG9zIDwgdGhpcy5pbmZvcm1hdGlvbi5nZXRTaXplKCk7ICsraSkge1xuICAgICAgICAgICAgaWYgKGkgPT09IDIpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaW5mb3JtYXRpb24uZ2V0KHBvcyArIDIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLmluZm9ybWF0aW9uLmdldChwb3MgKyBpKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuICAgIEdlbmVyYWxBcHBJZERlY29kZXIucHJvdG90eXBlLmlzQWxwaGFPcjY0NlRvTnVtZXJpY0xhdGNoID0gZnVuY3Rpb24gKHBvcykge1xuICAgICAgICAvLyBOZXh0IGlzIGFscGhhbnVtZXJpYyBpZiB0aGVyZSBhcmUgMyBwb3NpdGlvbnMgYW5kIHRoZXkgYXJlIGFsbCB6ZXJvc1xuICAgICAgICBpZiAocG9zICsgMyA+IHRoaXMuaW5mb3JtYXRpb24uZ2V0U2l6ZSgpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgZm9yICh2YXIgaSA9IHBvczsgaSA8IHBvcyArIDM7ICsraSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaW5mb3JtYXRpb24uZ2V0KGkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG4gICAgR2VuZXJhbEFwcElkRGVjb2Rlci5wcm90b3R5cGUuaXNOdW1lcmljVG9BbHBoYU51bWVyaWNMYXRjaCA9IGZ1bmN0aW9uIChwb3MpIHtcbiAgICAgICAgLy8gTmV4dCBpcyBhbHBoYW51bWVyaWMgaWYgdGhlcmUgYXJlIDQgcG9zaXRpb25zIGFuZCB0aGV5IGFyZSBhbGwgemVyb3MsIG9yXG4gICAgICAgIC8vIGlmIHRoZXJlIGlzIGEgc3Vic2V0IG9mIHRoaXMganVzdCBiZWZvcmUgdGhlIGVuZCBvZiB0aGUgc3ltYm9sXG4gICAgICAgIGlmIChwb3MgKyAxID4gdGhpcy5pbmZvcm1hdGlvbi5nZXRTaXplKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQgJiYgaSArIHBvcyA8IHRoaXMuaW5mb3JtYXRpb24uZ2V0U2l6ZSgpOyArK2kpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmluZm9ybWF0aW9uLmdldChwb3MgKyBpKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuICAgIHJldHVybiBHZW5lcmFsQXBwSWREZWNvZGVyO1xufSgpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IEdlbmVyYWxBcHBJZERlY29kZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1HZW5lcmFsQXBwSWREZWNvZGVyLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIEdlbmVyYWxBcHBJZERlY29kZXJfMSA9IHJlcXVpcmUoXCIuL0dlbmVyYWxBcHBJZERlY29kZXJcIik7XG52YXIgQWJzdHJhY3RFeHBhbmRlZERlY29kZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gQWJzdHJhY3RFeHBhbmRlZERlY29kZXIoaW5mb3JtYXRpb24pIHtcbiAgICAgICAgdGhpcy5pbmZvcm1hdGlvbiA9IGluZm9ybWF0aW9uO1xuICAgICAgICB0aGlzLmdlbmVyYWxEZWNvZGVyID0gbmV3IEdlbmVyYWxBcHBJZERlY29kZXJfMS5kZWZhdWx0KGluZm9ybWF0aW9uKTtcbiAgICB9XG4gICAgQWJzdHJhY3RFeHBhbmRlZERlY29kZXIucHJvdG90eXBlLmdldEluZm9ybWF0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pbmZvcm1hdGlvbjtcbiAgICB9O1xuICAgIEFic3RyYWN0RXhwYW5kZWREZWNvZGVyLnByb3RvdHlwZS5nZXRHZW5lcmFsRGVjb2RlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2VuZXJhbERlY29kZXI7XG4gICAgfTtcbiAgICByZXR1cm4gQWJzdHJhY3RFeHBhbmRlZERlY29kZXI7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gQWJzdHJhY3RFeHBhbmRlZERlY29kZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BYnN0cmFjdEV4cGFuZGVkRGVjb2Rlci5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIEFic3RyYWN0RXhwYW5kZWREZWNvZGVyXzEgPSByZXF1aXJlKFwiLi9BYnN0cmFjdEV4cGFuZGVkRGVjb2RlclwiKTtcbnZhciBBSTAxZGVjb2RlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQUkwMWRlY29kZXIsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQUkwMWRlY29kZXIoaW5mb3JtYXRpb24pIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsIGluZm9ybWF0aW9uKSB8fCB0aGlzO1xuICAgIH1cbiAgICBBSTAxZGVjb2Rlci5wcm90b3R5cGUuZW5jb2RlQ29tcHJlc3NlZEd0aW4gPSBmdW5jdGlvbiAoYnVmLCBjdXJyZW50UG9zKSB7XG4gICAgICAgIGJ1Zi5hcHBlbmQoJygwMSknKTtcbiAgICAgICAgdmFyIGluaXRpYWxQb3NpdGlvbiA9IGJ1Zi5sZW5ndGgoKTtcbiAgICAgICAgYnVmLmFwcGVuZCgnOScpO1xuICAgICAgICB0aGlzLmVuY29kZUNvbXByZXNzZWRHdGluV2l0aG91dEFJKGJ1ZiwgY3VycmVudFBvcywgaW5pdGlhbFBvc2l0aW9uKTtcbiAgICB9O1xuICAgIEFJMDFkZWNvZGVyLnByb3RvdHlwZS5lbmNvZGVDb21wcmVzc2VkR3RpbldpdGhvdXRBSSA9IGZ1bmN0aW9uIChidWYsIGN1cnJlbnRQb3MsIGluaXRpYWxCdWZmZXJQb3NpdGlvbikge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7ICsraSkge1xuICAgICAgICAgICAgdmFyIGN1cnJlbnRCbG9jayA9IHRoaXMuZ2V0R2VuZXJhbERlY29kZXIoKS5leHRyYWN0TnVtZXJpY1ZhbHVlRnJvbUJpdEFycmF5KGN1cnJlbnRQb3MgKyAxMCAqIGksIDEwKTtcbiAgICAgICAgICAgIGlmIChjdXJyZW50QmxvY2sgLyAxMDAgPT09IDApIHtcbiAgICAgICAgICAgICAgICBidWYuYXBwZW5kKCcwJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY3VycmVudEJsb2NrIC8gMTAgPT09IDApIHtcbiAgICAgICAgICAgICAgICBidWYuYXBwZW5kKCcwJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBidWYuYXBwZW5kKGN1cnJlbnRCbG9jayk7XG4gICAgICAgIH1cbiAgICAgICAgQUkwMWRlY29kZXIuYXBwZW5kQ2hlY2tEaWdpdChidWYsIGluaXRpYWxCdWZmZXJQb3NpdGlvbik7XG4gICAgfTtcbiAgICBBSTAxZGVjb2Rlci5hcHBlbmRDaGVja0RpZ2l0ID0gZnVuY3Rpb24gKGJ1ZiwgY3VycmVudFBvcykge1xuICAgICAgICB2YXIgY2hlY2tEaWdpdCA9IDA7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTM7IGkrKykge1xuICAgICAgICAgICAgLy8gbGV0IGRpZ2l0ID0gYnVmLmNoYXJBdChpICsgY3VycmVudFBvcykgLSAnMCc7XG4gICAgICAgICAgICAvLyBUbyBiZSBjaGVja2VkXG4gICAgICAgICAgICB2YXIgZGlnaXQgPSBidWYuY2hhckF0KGkgKyBjdXJyZW50UG9zKS5jaGFyQ29kZUF0KDApIC0gJzAnLmNoYXJDb2RlQXQoMCk7XG4gICAgICAgICAgICBjaGVja0RpZ2l0ICs9IChpICYgMHgwMSkgPT09IDAgPyAzICogZGlnaXQgOiBkaWdpdDtcbiAgICAgICAgfVxuICAgICAgICBjaGVja0RpZ2l0ID0gMTAgLSAoY2hlY2tEaWdpdCAlIDEwKTtcbiAgICAgICAgaWYgKGNoZWNrRGlnaXQgPT09IDEwKSB7XG4gICAgICAgICAgICBjaGVja0RpZ2l0ID0gMDtcbiAgICAgICAgfVxuICAgICAgICBidWYuYXBwZW5kKGNoZWNrRGlnaXQpO1xuICAgIH07XG4gICAgQUkwMWRlY29kZXIuR1RJTl9TSVpFID0gNDA7XG4gICAgcmV0dXJuIEFJMDFkZWNvZGVyO1xufShBYnN0cmFjdEV4cGFuZGVkRGVjb2Rlcl8xLmRlZmF1bHQpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IEFJMDFkZWNvZGVyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QUkwMWRlY29kZXIuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBBSTAxZGVjb2Rlcl8xID0gcmVxdWlyZShcIi4vQUkwMWRlY29kZXJcIik7XG52YXIgU3RyaW5nQnVpbGRlcl8xID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uL3V0aWwvU3RyaW5nQnVpbGRlclwiKTtcbnZhciBBSTAxQW5kT3RoZXJBSXMgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEFJMDFBbmRPdGhlckFJcywgX3N1cGVyKTtcbiAgICAvLyB0aGUgc2Vjb25kIG9uZSBpcyB0aGUgZW5jb2RhdGlvbiBtZXRob2QsIGFuZCB0aGUgb3RoZXIgdHdvIGFyZSBmb3IgdGhlIHZhcmlhYmxlIGxlbmd0aFxuICAgIGZ1bmN0aW9uIEFJMDFBbmRPdGhlckFJcyhpbmZvcm1hdGlvbikge1xuICAgICAgICByZXR1cm4gX3N1cGVyLmNhbGwodGhpcywgaW5mb3JtYXRpb24pIHx8IHRoaXM7XG4gICAgfVxuICAgIEFJMDFBbmRPdGhlckFJcy5wcm90b3R5cGUucGFyc2VJbmZvcm1hdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGJ1ZmYgPSBuZXcgU3RyaW5nQnVpbGRlcl8xLmRlZmF1bHQoKTtcbiAgICAgICAgYnVmZi5hcHBlbmQoJygwMSknKTtcbiAgICAgICAgdmFyIGluaXRpYWxHdGluUG9zaXRpb24gPSBidWZmLmxlbmd0aCgpO1xuICAgICAgICB2YXIgZmlyc3RHdGluRGlnaXQgPSB0aGlzLmdldEdlbmVyYWxEZWNvZGVyKCkuZXh0cmFjdE51bWVyaWNWYWx1ZUZyb21CaXRBcnJheShBSTAxQW5kT3RoZXJBSXMuSEVBREVSX1NJWkUsIDQpO1xuICAgICAgICBidWZmLmFwcGVuZChmaXJzdEd0aW5EaWdpdCk7XG4gICAgICAgIHRoaXMuZW5jb2RlQ29tcHJlc3NlZEd0aW5XaXRob3V0QUkoYnVmZiwgQUkwMUFuZE90aGVyQUlzLkhFQURFUl9TSVpFICsgNCwgaW5pdGlhbEd0aW5Qb3NpdGlvbik7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEdlbmVyYWxEZWNvZGVyKCkuZGVjb2RlQWxsQ29kZXMoYnVmZiwgQUkwMUFuZE90aGVyQUlzLkhFQURFUl9TSVpFICsgNDQpO1xuICAgIH07XG4gICAgQUkwMUFuZE90aGVyQUlzLkhFQURFUl9TSVpFID0gMSArIDEgKyAyOyAvLyBmaXJzdCBiaXQgZW5jb2RlcyB0aGUgbGlua2FnZSBmbGFnLFxuICAgIHJldHVybiBBSTAxQW5kT3RoZXJBSXM7XG59KEFJMDFkZWNvZGVyXzEuZGVmYXVsdCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gQUkwMUFuZE90aGVyQUlzO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QUkwMUFuZE90aGVyQUlzLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgU3RyaW5nQnVpbGRlcl8xID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uL3V0aWwvU3RyaW5nQnVpbGRlclwiKTtcbnZhciBBYnN0cmFjdEV4cGFuZGVkRGVjb2Rlcl8xID0gcmVxdWlyZShcIi4vQWJzdHJhY3RFeHBhbmRlZERlY29kZXJcIik7XG52YXIgQW55QUlEZWNvZGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhBbnlBSURlY29kZXIsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQW55QUlEZWNvZGVyKGluZm9ybWF0aW9uKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIuY2FsbCh0aGlzLCBpbmZvcm1hdGlvbikgfHwgdGhpcztcbiAgICB9XG4gICAgQW55QUlEZWNvZGVyLnByb3RvdHlwZS5wYXJzZUluZm9ybWF0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYnVmID0gbmV3IFN0cmluZ0J1aWxkZXJfMS5kZWZhdWx0KCk7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEdlbmVyYWxEZWNvZGVyKCkuZGVjb2RlQWxsQ29kZXMoYnVmLCBBbnlBSURlY29kZXIuSEVBREVSX1NJWkUpO1xuICAgIH07XG4gICAgQW55QUlEZWNvZGVyLkhFQURFUl9TSVpFID0gMiArIDEgKyAyO1xuICAgIHJldHVybiBBbnlBSURlY29kZXI7XG59KEFic3RyYWN0RXhwYW5kZWREZWNvZGVyXzEuZGVmYXVsdCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gQW55QUlEZWNvZGVyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QW55QUlEZWNvZGVyLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgQUkwMWRlY29kZXJfMSA9IHJlcXVpcmUoXCIuL0FJMDFkZWNvZGVyXCIpO1xudmFyIEFJMDF3ZWlnaHREZWNvZGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhBSTAxd2VpZ2h0RGVjb2RlciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBBSTAxd2VpZ2h0RGVjb2RlcihpbmZvcm1hdGlvbikge1xuICAgICAgICByZXR1cm4gX3N1cGVyLmNhbGwodGhpcywgaW5mb3JtYXRpb24pIHx8IHRoaXM7XG4gICAgfVxuICAgIEFJMDF3ZWlnaHREZWNvZGVyLnByb3RvdHlwZS5lbmNvZGVDb21wcmVzc2VkV2VpZ2h0ID0gZnVuY3Rpb24gKGJ1ZiwgY3VycmVudFBvcywgd2VpZ2h0U2l6ZSkge1xuICAgICAgICB2YXIgb3JpZ2luYWxXZWlnaHROdW1lcmljID0gdGhpcy5nZXRHZW5lcmFsRGVjb2RlcigpLmV4dHJhY3ROdW1lcmljVmFsdWVGcm9tQml0QXJyYXkoY3VycmVudFBvcywgd2VpZ2h0U2l6ZSk7XG4gICAgICAgIHRoaXMuYWRkV2VpZ2h0Q29kZShidWYsIG9yaWdpbmFsV2VpZ2h0TnVtZXJpYyk7XG4gICAgICAgIHZhciB3ZWlnaHROdW1lcmljID0gdGhpcy5jaGVja1dlaWdodChvcmlnaW5hbFdlaWdodE51bWVyaWMpO1xuICAgICAgICB2YXIgY3VycmVudERpdmlzb3IgPSAxMDAwMDA7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNTsgKytpKSB7XG4gICAgICAgICAgICBpZiAod2VpZ2h0TnVtZXJpYyAvIGN1cnJlbnREaXZpc29yID09PSAwKSB7XG4gICAgICAgICAgICAgICAgYnVmLmFwcGVuZCgnMCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY3VycmVudERpdmlzb3IgLz0gMTA7XG4gICAgICAgIH1cbiAgICAgICAgYnVmLmFwcGVuZCh3ZWlnaHROdW1lcmljKTtcbiAgICB9O1xuICAgIHJldHVybiBBSTAxd2VpZ2h0RGVjb2Rlcjtcbn0oQUkwMWRlY29kZXJfMS5kZWZhdWx0KSk7XG5leHBvcnRzLmRlZmF1bHQgPSBBSTAxd2VpZ2h0RGVjb2Rlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUFJMDF3ZWlnaHREZWNvZGVyLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgQUkwMXdlaWdodERlY29kZXJfMSA9IHJlcXVpcmUoXCIuL0FJMDF3ZWlnaHREZWNvZGVyXCIpO1xudmFyIFN0cmluZ0J1aWxkZXJfMSA9IHJlcXVpcmUoXCIuLi8uLi8uLi8uLi91dGlsL1N0cmluZ0J1aWxkZXJcIik7XG52YXIgTm90Rm91bmRFeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuLi8uLi8uLi8uLi9Ob3RGb3VuZEV4Y2VwdGlvblwiKTtcbnZhciBBSTAxM3gweERlY29kZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEFJMDEzeDB4RGVjb2RlciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBBSTAxM3gweERlY29kZXIoaW5mb3JtYXRpb24pIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsIGluZm9ybWF0aW9uKSB8fCB0aGlzO1xuICAgIH1cbiAgICBBSTAxM3gweERlY29kZXIucHJvdG90eXBlLnBhcnNlSW5mb3JtYXRpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLmdldEluZm9ybWF0aW9uKCkuZ2V0U2l6ZSgpICE9IEFJMDEzeDB4RGVjb2Rlci5IRUFERVJfU0laRSArIEFJMDF3ZWlnaHREZWNvZGVyXzEuZGVmYXVsdC5HVElOX1NJWkUgKyBBSTAxM3gweERlY29kZXIuV0VJR0hUX1NJWkUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYnVmID0gbmV3IFN0cmluZ0J1aWxkZXJfMS5kZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuZW5jb2RlQ29tcHJlc3NlZEd0aW4oYnVmLCBBSTAxM3gweERlY29kZXIuSEVBREVSX1NJWkUpO1xuICAgICAgICB0aGlzLmVuY29kZUNvbXByZXNzZWRXZWlnaHQoYnVmLCBBSTAxM3gweERlY29kZXIuSEVBREVSX1NJWkUgKyBBSTAxd2VpZ2h0RGVjb2Rlcl8xLmRlZmF1bHQuR1RJTl9TSVpFLCBBSTAxM3gweERlY29kZXIuV0VJR0hUX1NJWkUpO1xuICAgICAgICByZXR1cm4gYnVmLnRvU3RyaW5nKCk7XG4gICAgfTtcbiAgICBBSTAxM3gweERlY29kZXIuSEVBREVSX1NJWkUgPSA0ICsgMTtcbiAgICBBSTAxM3gweERlY29kZXIuV0VJR0hUX1NJWkUgPSAxNTtcbiAgICByZXR1cm4gQUkwMTN4MHhEZWNvZGVyO1xufShBSTAxd2VpZ2h0RGVjb2Rlcl8xLmRlZmF1bHQpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IEFJMDEzeDB4RGVjb2Rlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUFJMDEzeDB4RGVjb2Rlci5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIEFJMDEzeDB4RGVjb2Rlcl8xID0gcmVxdWlyZShcIi4vQUkwMTN4MHhEZWNvZGVyXCIpO1xudmFyIEFJMDEzMTAzZGVjb2RlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQUkwMTMxMDNkZWNvZGVyLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIEFJMDEzMTAzZGVjb2RlcihpbmZvcm1hdGlvbikge1xuICAgICAgICByZXR1cm4gX3N1cGVyLmNhbGwodGhpcywgaW5mb3JtYXRpb24pIHx8IHRoaXM7XG4gICAgfVxuICAgIEFJMDEzMTAzZGVjb2Rlci5wcm90b3R5cGUuYWRkV2VpZ2h0Q29kZSA9IGZ1bmN0aW9uIChidWYsIHdlaWdodCkge1xuICAgICAgICBidWYuYXBwZW5kKCcoMzEwMyknKTtcbiAgICB9O1xuICAgIEFJMDEzMTAzZGVjb2Rlci5wcm90b3R5cGUuY2hlY2tXZWlnaHQgPSBmdW5jdGlvbiAod2VpZ2h0KSB7XG4gICAgICAgIHJldHVybiB3ZWlnaHQ7XG4gICAgfTtcbiAgICByZXR1cm4gQUkwMTMxMDNkZWNvZGVyO1xufShBSTAxM3gweERlY29kZXJfMS5kZWZhdWx0KSk7XG5leHBvcnRzLmRlZmF1bHQgPSBBSTAxMzEwM2RlY29kZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BSTAxMzEwM2RlY29kZXIuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBBSTAxM3gweERlY29kZXJfMSA9IHJlcXVpcmUoXCIuL0FJMDEzeDB4RGVjb2RlclwiKTtcbnZhciBBSTAxMzIweERlY29kZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEFJMDEzMjB4RGVjb2RlciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBBSTAxMzIweERlY29kZXIoaW5mb3JtYXRpb24pIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsIGluZm9ybWF0aW9uKSB8fCB0aGlzO1xuICAgIH1cbiAgICBBSTAxMzIweERlY29kZXIucHJvdG90eXBlLmFkZFdlaWdodENvZGUgPSBmdW5jdGlvbiAoYnVmLCB3ZWlnaHQpIHtcbiAgICAgICAgaWYgKHdlaWdodCA8IDEwMDAwKSB7XG4gICAgICAgICAgICBidWYuYXBwZW5kKCcoMzIwMiknKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGJ1Zi5hcHBlbmQoJygzMjAzKScpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBBSTAxMzIweERlY29kZXIucHJvdG90eXBlLmNoZWNrV2VpZ2h0ID0gZnVuY3Rpb24gKHdlaWdodCkge1xuICAgICAgICBpZiAod2VpZ2h0IDwgMTAwMDApIHtcbiAgICAgICAgICAgIHJldHVybiB3ZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHdlaWdodCAtIDEwMDAwO1xuICAgIH07XG4gICAgcmV0dXJuIEFJMDEzMjB4RGVjb2Rlcjtcbn0oQUkwMTN4MHhEZWNvZGVyXzEuZGVmYXVsdCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gQUkwMTMyMHhEZWNvZGVyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QUkwMTMyMHhEZWNvZGVyLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgQUkwMWRlY29kZXJfMSA9IHJlcXVpcmUoXCIuL0FJMDFkZWNvZGVyXCIpO1xudmFyIE5vdEZvdW5kRXhjZXB0aW9uXzEgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vTm90Rm91bmRFeGNlcHRpb25cIik7XG52YXIgU3RyaW5nQnVpbGRlcl8xID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uL3V0aWwvU3RyaW5nQnVpbGRlclwiKTtcbnZhciBBSTAxMzkyeERlY29kZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEFJMDEzOTJ4RGVjb2RlciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBBSTAxMzkyeERlY29kZXIoaW5mb3JtYXRpb24pIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsIGluZm9ybWF0aW9uKSB8fCB0aGlzO1xuICAgIH1cbiAgICBBSTAxMzkyeERlY29kZXIucHJvdG90eXBlLnBhcnNlSW5mb3JtYXRpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLmdldEluZm9ybWF0aW9uKCkuZ2V0U2l6ZSgpIDwgQUkwMTM5MnhEZWNvZGVyLkhFQURFUl9TSVpFICsgQUkwMWRlY29kZXJfMS5kZWZhdWx0LkdUSU5fU0laRSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBidWYgPSBuZXcgU3RyaW5nQnVpbGRlcl8xLmRlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5lbmNvZGVDb21wcmVzc2VkR3RpbihidWYsIEFJMDEzOTJ4RGVjb2Rlci5IRUFERVJfU0laRSk7XG4gICAgICAgIHZhciBsYXN0QUlkaWdpdCA9IHRoaXMuZ2V0R2VuZXJhbERlY29kZXIoKS5leHRyYWN0TnVtZXJpY1ZhbHVlRnJvbUJpdEFycmF5KEFJMDEzOTJ4RGVjb2Rlci5IRUFERVJfU0laRSArIEFJMDFkZWNvZGVyXzEuZGVmYXVsdC5HVElOX1NJWkUsIEFJMDEzOTJ4RGVjb2Rlci5MQVNUX0RJR0lUX1NJWkUpO1xuICAgICAgICBidWYuYXBwZW5kKCcoMzkyJyk7XG4gICAgICAgIGJ1Zi5hcHBlbmQobGFzdEFJZGlnaXQpO1xuICAgICAgICBidWYuYXBwZW5kKCcpJyk7XG4gICAgICAgIHZhciBkZWNvZGVkSW5mb3JtYXRpb24gPSB0aGlzLmdldEdlbmVyYWxEZWNvZGVyKCkuZGVjb2RlR2VuZXJhbFB1cnBvc2VGaWVsZChBSTAxMzkyeERlY29kZXIuSEVBREVSX1NJWkUgKyBBSTAxZGVjb2Rlcl8xLmRlZmF1bHQuR1RJTl9TSVpFICsgQUkwMTM5MnhEZWNvZGVyLkxBU1RfRElHSVRfU0laRSwgbnVsbCk7XG4gICAgICAgIGJ1Zi5hcHBlbmQoZGVjb2RlZEluZm9ybWF0aW9uLmdldE5ld1N0cmluZygpKTtcbiAgICAgICAgcmV0dXJuIGJ1Zi50b1N0cmluZygpO1xuICAgIH07XG4gICAgQUkwMTM5MnhEZWNvZGVyLkhFQURFUl9TSVpFID0gNSArIDEgKyAyO1xuICAgIEFJMDEzOTJ4RGVjb2Rlci5MQVNUX0RJR0lUX1NJWkUgPSAyO1xuICAgIHJldHVybiBBSTAxMzkyeERlY29kZXI7XG59KEFJMDFkZWNvZGVyXzEuZGVmYXVsdCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gQUkwMTM5MnhEZWNvZGVyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QUkwMTM5MnhEZWNvZGVyLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgQUkwMWRlY29kZXJfMSA9IHJlcXVpcmUoXCIuL0FJMDFkZWNvZGVyXCIpO1xudmFyIE5vdEZvdW5kRXhjZXB0aW9uXzEgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vTm90Rm91bmRFeGNlcHRpb25cIik7XG52YXIgU3RyaW5nQnVpbGRlcl8xID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uL3V0aWwvU3RyaW5nQnVpbGRlclwiKTtcbnZhciBBSTAxMzkzeERlY29kZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEFJMDEzOTN4RGVjb2RlciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBBSTAxMzkzeERlY29kZXIoaW5mb3JtYXRpb24pIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsIGluZm9ybWF0aW9uKSB8fCB0aGlzO1xuICAgIH1cbiAgICBBSTAxMzkzeERlY29kZXIucHJvdG90eXBlLnBhcnNlSW5mb3JtYXRpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLmdldEluZm9ybWF0aW9uKCkuZ2V0U2l6ZSgpIDwgQUkwMTM5M3hEZWNvZGVyLkhFQURFUl9TSVpFICsgQUkwMWRlY29kZXJfMS5kZWZhdWx0LkdUSU5fU0laRSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBidWYgPSBuZXcgU3RyaW5nQnVpbGRlcl8xLmRlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5lbmNvZGVDb21wcmVzc2VkR3RpbihidWYsIEFJMDEzOTN4RGVjb2Rlci5IRUFERVJfU0laRSk7XG4gICAgICAgIHZhciBsYXN0QUlkaWdpdCA9IHRoaXMuZ2V0R2VuZXJhbERlY29kZXIoKS5leHRyYWN0TnVtZXJpY1ZhbHVlRnJvbUJpdEFycmF5KEFJMDEzOTN4RGVjb2Rlci5IRUFERVJfU0laRSArIEFJMDFkZWNvZGVyXzEuZGVmYXVsdC5HVElOX1NJWkUsIEFJMDEzOTN4RGVjb2Rlci5MQVNUX0RJR0lUX1NJWkUpO1xuICAgICAgICBidWYuYXBwZW5kKCcoMzkzJyk7XG4gICAgICAgIGJ1Zi5hcHBlbmQobGFzdEFJZGlnaXQpO1xuICAgICAgICBidWYuYXBwZW5kKCcpJyk7XG4gICAgICAgIHZhciBmaXJzdFRocmVlRGlnaXRzID0gdGhpcy5nZXRHZW5lcmFsRGVjb2RlcigpLmV4dHJhY3ROdW1lcmljVmFsdWVGcm9tQml0QXJyYXkoQUkwMTM5M3hEZWNvZGVyLkhFQURFUl9TSVpFICsgQUkwMWRlY29kZXJfMS5kZWZhdWx0LkdUSU5fU0laRSArIEFJMDEzOTN4RGVjb2Rlci5MQVNUX0RJR0lUX1NJWkUsIEFJMDEzOTN4RGVjb2Rlci5GSVJTVF9USFJFRV9ESUdJVFNfU0laRSk7XG4gICAgICAgIGlmIChmaXJzdFRocmVlRGlnaXRzIC8gMTAwID09IDApIHtcbiAgICAgICAgICAgIGJ1Zi5hcHBlbmQoJzAnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlyc3RUaHJlZURpZ2l0cyAvIDEwID09IDApIHtcbiAgICAgICAgICAgIGJ1Zi5hcHBlbmQoJzAnKTtcbiAgICAgICAgfVxuICAgICAgICBidWYuYXBwZW5kKGZpcnN0VGhyZWVEaWdpdHMpO1xuICAgICAgICB2YXIgZ2VuZXJhbEluZm9ybWF0aW9uID0gdGhpcy5nZXRHZW5lcmFsRGVjb2RlcigpLmRlY29kZUdlbmVyYWxQdXJwb3NlRmllbGQoQUkwMTM5M3hEZWNvZGVyLkhFQURFUl9TSVpFICsgQUkwMWRlY29kZXJfMS5kZWZhdWx0LkdUSU5fU0laRSArIEFJMDEzOTN4RGVjb2Rlci5MQVNUX0RJR0lUX1NJWkUgKyBBSTAxMzkzeERlY29kZXIuRklSU1RfVEhSRUVfRElHSVRTX1NJWkUsIG51bGwpO1xuICAgICAgICBidWYuYXBwZW5kKGdlbmVyYWxJbmZvcm1hdGlvbi5nZXROZXdTdHJpbmcoKSk7XG4gICAgICAgIHJldHVybiBidWYudG9TdHJpbmcoKTtcbiAgICB9O1xuICAgIEFJMDEzOTN4RGVjb2Rlci5IRUFERVJfU0laRSA9IDUgKyAxICsgMjtcbiAgICBBSTAxMzkzeERlY29kZXIuTEFTVF9ESUdJVF9TSVpFID0gMjtcbiAgICBBSTAxMzkzeERlY29kZXIuRklSU1RfVEhSRUVfRElHSVRTX1NJWkUgPSAxMDtcbiAgICByZXR1cm4gQUkwMTM5M3hEZWNvZGVyO1xufShBSTAxZGVjb2Rlcl8xLmRlZmF1bHQpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IEFJMDEzOTN4RGVjb2Rlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUFJMDEzOTN4RGVjb2Rlci5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIEFJMDF3ZWlnaHREZWNvZGVyXzEgPSByZXF1aXJlKFwiLi9BSTAxd2VpZ2h0RGVjb2RlclwiKTtcbnZhciBOb3RGb3VuZEV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uL05vdEZvdW5kRXhjZXB0aW9uXCIpO1xudmFyIFN0cmluZ0J1aWxkZXJfMSA9IHJlcXVpcmUoXCIuLi8uLi8uLi8uLi91dGlsL1N0cmluZ0J1aWxkZXJcIik7XG52YXIgQUkwMTN4MHgxeERlY29kZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEFJMDEzeDB4MXhEZWNvZGVyLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIEFJMDEzeDB4MXhEZWNvZGVyKGluZm9ybWF0aW9uLCBmaXJzdEFJZGlnaXRzLCBkYXRlQ29kZSkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBpbmZvcm1hdGlvbikgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuZGF0ZUNvZGUgPSBkYXRlQ29kZTtcbiAgICAgICAgX3RoaXMuZmlyc3RBSWRpZ2l0cyA9IGZpcnN0QUlkaWdpdHM7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgQUkwMTN4MHgxeERlY29kZXIucHJvdG90eXBlLnBhcnNlSW5mb3JtYXRpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLmdldEluZm9ybWF0aW9uKCkuZ2V0U2l6ZSgpICE9IEFJMDEzeDB4MXhEZWNvZGVyLkhFQURFUl9TSVpFICsgQUkwMTN4MHgxeERlY29kZXIuR1RJTl9TSVpFICsgQUkwMTN4MHgxeERlY29kZXIuV0VJR0hUX1NJWkUgKyBBSTAxM3gweDF4RGVjb2Rlci5EQVRFX1NJWkUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYnVmID0gbmV3IFN0cmluZ0J1aWxkZXJfMS5kZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuZW5jb2RlQ29tcHJlc3NlZEd0aW4oYnVmLCBBSTAxM3gweDF4RGVjb2Rlci5IRUFERVJfU0laRSk7XG4gICAgICAgIHRoaXMuZW5jb2RlQ29tcHJlc3NlZFdlaWdodChidWYsIEFJMDEzeDB4MXhEZWNvZGVyLkhFQURFUl9TSVpFICsgQUkwMTN4MHgxeERlY29kZXIuR1RJTl9TSVpFLCBBSTAxM3gweDF4RGVjb2Rlci5XRUlHSFRfU0laRSk7XG4gICAgICAgIHRoaXMuZW5jb2RlQ29tcHJlc3NlZERhdGUoYnVmLCBBSTAxM3gweDF4RGVjb2Rlci5IRUFERVJfU0laRSArIEFJMDEzeDB4MXhEZWNvZGVyLkdUSU5fU0laRSArIEFJMDEzeDB4MXhEZWNvZGVyLldFSUdIVF9TSVpFKTtcbiAgICAgICAgcmV0dXJuIGJ1Zi50b1N0cmluZygpO1xuICAgIH07XG4gICAgQUkwMTN4MHgxeERlY29kZXIucHJvdG90eXBlLmVuY29kZUNvbXByZXNzZWREYXRlID0gZnVuY3Rpb24gKGJ1ZiwgY3VycmVudFBvcykge1xuICAgICAgICB2YXIgbnVtZXJpY0RhdGUgPSB0aGlzLmdldEdlbmVyYWxEZWNvZGVyKCkuZXh0cmFjdE51bWVyaWNWYWx1ZUZyb21CaXRBcnJheShjdXJyZW50UG9zLCBBSTAxM3gweDF4RGVjb2Rlci5EQVRFX1NJWkUpO1xuICAgICAgICBpZiAobnVtZXJpY0RhdGUgPT0gMzg0MDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBidWYuYXBwZW5kKCcoJyk7XG4gICAgICAgIGJ1Zi5hcHBlbmQodGhpcy5kYXRlQ29kZSk7XG4gICAgICAgIGJ1Zi5hcHBlbmQoJyknKTtcbiAgICAgICAgdmFyIGRheSA9IG51bWVyaWNEYXRlICUgMzI7XG4gICAgICAgIG51bWVyaWNEYXRlIC89IDMyO1xuICAgICAgICB2YXIgbW9udGggPSBudW1lcmljRGF0ZSAlIDEyICsgMTtcbiAgICAgICAgbnVtZXJpY0RhdGUgLz0gMTI7XG4gICAgICAgIHZhciB5ZWFyID0gbnVtZXJpY0RhdGU7XG4gICAgICAgIGlmICh5ZWFyIC8gMTAgPT0gMCkge1xuICAgICAgICAgICAgYnVmLmFwcGVuZCgnMCcpO1xuICAgICAgICB9XG4gICAgICAgIGJ1Zi5hcHBlbmQoeWVhcik7XG4gICAgICAgIGlmIChtb250aCAvIDEwID09IDApIHtcbiAgICAgICAgICAgIGJ1Zi5hcHBlbmQoJzAnKTtcbiAgICAgICAgfVxuICAgICAgICBidWYuYXBwZW5kKG1vbnRoKTtcbiAgICAgICAgaWYgKGRheSAvIDEwID09IDApIHtcbiAgICAgICAgICAgIGJ1Zi5hcHBlbmQoJzAnKTtcbiAgICAgICAgfVxuICAgICAgICBidWYuYXBwZW5kKGRheSk7XG4gICAgfTtcbiAgICBBSTAxM3gweDF4RGVjb2Rlci5wcm90b3R5cGUuYWRkV2VpZ2h0Q29kZSA9IGZ1bmN0aW9uIChidWYsIHdlaWdodCkge1xuICAgICAgICBidWYuYXBwZW5kKCcoJyk7XG4gICAgICAgIGJ1Zi5hcHBlbmQodGhpcy5maXJzdEFJZGlnaXRzKTtcbiAgICAgICAgYnVmLmFwcGVuZCh3ZWlnaHQgLyAxMDAwMDApO1xuICAgICAgICBidWYuYXBwZW5kKCcpJyk7XG4gICAgfTtcbiAgICBBSTAxM3gweDF4RGVjb2Rlci5wcm90b3R5cGUuY2hlY2tXZWlnaHQgPSBmdW5jdGlvbiAod2VpZ2h0KSB7XG4gICAgICAgIHJldHVybiB3ZWlnaHQgJSAxMDAwMDA7XG4gICAgfTtcbiAgICBBSTAxM3gweDF4RGVjb2Rlci5IRUFERVJfU0laRSA9IDcgKyAxO1xuICAgIEFJMDEzeDB4MXhEZWNvZGVyLldFSUdIVF9TSVpFID0gMjA7XG4gICAgQUkwMTN4MHgxeERlY29kZXIuREFURV9TSVpFID0gMTY7XG4gICAgcmV0dXJuIEFJMDEzeDB4MXhEZWNvZGVyO1xufShBSTAxd2VpZ2h0RGVjb2Rlcl8xLmRlZmF1bHQpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IEFJMDEzeDB4MXhEZWNvZGVyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QUkwMTN4MHgxeERlY29kZXIuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmNyZWF0ZURlY29kZXIgPSB2b2lkIDA7XG52YXIgSWxsZWdhbFN0YXRlRXhjZXB0aW9uXzEgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vSWxsZWdhbFN0YXRlRXhjZXB0aW9uXCIpO1xudmFyIEdlbmVyYWxBcHBJZERlY29kZXJfMSA9IHJlcXVpcmUoXCIuL0dlbmVyYWxBcHBJZERlY29kZXJcIik7XG52YXIgQUkwMUFuZE90aGVyQUlzXzEgPSByZXF1aXJlKFwiLi9BSTAxQW5kT3RoZXJBSXNcIik7XG52YXIgQW55QUlEZWNvZGVyXzEgPSByZXF1aXJlKFwiLi9BbnlBSURlY29kZXJcIik7XG52YXIgQUkwMTMxMDNkZWNvZGVyXzEgPSByZXF1aXJlKFwiLi9BSTAxMzEwM2RlY29kZXJcIik7XG52YXIgQUkwMTMyMHhEZWNvZGVyXzEgPSByZXF1aXJlKFwiLi9BSTAxMzIweERlY29kZXJcIik7XG52YXIgQUkwMTM5MnhEZWNvZGVyXzEgPSByZXF1aXJlKFwiLi9BSTAxMzkyeERlY29kZXJcIik7XG52YXIgQUkwMTM5M3hEZWNvZGVyXzEgPSByZXF1aXJlKFwiLi9BSTAxMzkzeERlY29kZXJcIik7XG52YXIgQUkwMTN4MHgxeERlY29kZXJfMSA9IHJlcXVpcmUoXCIuL0FJMDEzeDB4MXhEZWNvZGVyXCIpO1xuZnVuY3Rpb24gY3JlYXRlRGVjb2RlcihpbmZvcm1hdGlvbikge1xuICAgIHRyeSB7XG4gICAgICAgIGlmIChpbmZvcm1hdGlvbi5nZXQoMSkpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgQUkwMUFuZE90aGVyQUlzXzEuZGVmYXVsdChpbmZvcm1hdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpbmZvcm1hdGlvbi5nZXQoMikpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgQW55QUlEZWNvZGVyXzEuZGVmYXVsdChpbmZvcm1hdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGZvdXJCaXRFbmNvZGF0aW9uTWV0aG9kID0gR2VuZXJhbEFwcElkRGVjb2Rlcl8xLmRlZmF1bHQuZXh0cmFjdE51bWVyaWNWYWx1ZUZyb21CaXRBcnJheShpbmZvcm1hdGlvbiwgMSwgNCk7XG4gICAgICAgIHN3aXRjaCAoZm91ckJpdEVuY29kYXRpb25NZXRob2QpIHtcbiAgICAgICAgICAgIGNhc2UgNDogcmV0dXJuIG5ldyBBSTAxMzEwM2RlY29kZXJfMS5kZWZhdWx0KGluZm9ybWF0aW9uKTtcbiAgICAgICAgICAgIGNhc2UgNTogcmV0dXJuIG5ldyBBSTAxMzIweERlY29kZXJfMS5kZWZhdWx0KGluZm9ybWF0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZml2ZUJpdEVuY29kYXRpb25NZXRob2QgPSBHZW5lcmFsQXBwSWREZWNvZGVyXzEuZGVmYXVsdC5leHRyYWN0TnVtZXJpY1ZhbHVlRnJvbUJpdEFycmF5KGluZm9ybWF0aW9uLCAxLCA1KTtcbiAgICAgICAgc3dpdGNoIChmaXZlQml0RW5jb2RhdGlvbk1ldGhvZCkge1xuICAgICAgICAgICAgY2FzZSAxMjogcmV0dXJuIG5ldyBBSTAxMzkyeERlY29kZXJfMS5kZWZhdWx0KGluZm9ybWF0aW9uKTtcbiAgICAgICAgICAgIGNhc2UgMTM6IHJldHVybiBuZXcgQUkwMTM5M3hEZWNvZGVyXzEuZGVmYXVsdChpbmZvcm1hdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHNldmVuQml0RW5jb2RhdGlvbk1ldGhvZCA9IEdlbmVyYWxBcHBJZERlY29kZXJfMS5kZWZhdWx0LmV4dHJhY3ROdW1lcmljVmFsdWVGcm9tQml0QXJyYXkoaW5mb3JtYXRpb24sIDEsIDcpO1xuICAgICAgICBzd2l0Y2ggKHNldmVuQml0RW5jb2RhdGlvbk1ldGhvZCkge1xuICAgICAgICAgICAgY2FzZSA1NjogcmV0dXJuIG5ldyBBSTAxM3gweDF4RGVjb2Rlcl8xLmRlZmF1bHQoaW5mb3JtYXRpb24sICczMTAnLCAnMTEnKTtcbiAgICAgICAgICAgIGNhc2UgNTc6IHJldHVybiBuZXcgQUkwMTN4MHgxeERlY29kZXJfMS5kZWZhdWx0KGluZm9ybWF0aW9uLCAnMzIwJywgJzExJyk7XG4gICAgICAgICAgICBjYXNlIDU4OiByZXR1cm4gbmV3IEFJMDEzeDB4MXhEZWNvZGVyXzEuZGVmYXVsdChpbmZvcm1hdGlvbiwgJzMxMCcsICcxMycpO1xuICAgICAgICAgICAgY2FzZSA1OTogcmV0dXJuIG5ldyBBSTAxM3gweDF4RGVjb2Rlcl8xLmRlZmF1bHQoaW5mb3JtYXRpb24sICczMjAnLCAnMTMnKTtcbiAgICAgICAgICAgIGNhc2UgNjA6IHJldHVybiBuZXcgQUkwMTN4MHgxeERlY29kZXJfMS5kZWZhdWx0KGluZm9ybWF0aW9uLCAnMzEwJywgJzE1Jyk7XG4gICAgICAgICAgICBjYXNlIDYxOiByZXR1cm4gbmV3IEFJMDEzeDB4MXhEZWNvZGVyXzEuZGVmYXVsdChpbmZvcm1hdGlvbiwgJzMyMCcsICcxNScpO1xuICAgICAgICAgICAgY2FzZSA2MjogcmV0dXJuIG5ldyBBSTAxM3gweDF4RGVjb2Rlcl8xLmRlZmF1bHQoaW5mb3JtYXRpb24sICczMTAnLCAnMTcnKTtcbiAgICAgICAgICAgIGNhc2UgNjM6IHJldHVybiBuZXcgQUkwMTN4MHgxeERlY29kZXJfMS5kZWZhdWx0KGluZm9ybWF0aW9uLCAnMzIwJywgJzE3Jyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb25fMS5kZWZhdWx0KCd1bmtub3duIGRlY29kZXI6ICcgKyBpbmZvcm1hdGlvbik7XG4gICAgfVxufVxuZXhwb3J0cy5jcmVhdGVEZWNvZGVyID0gY3JlYXRlRGVjb2Rlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUFic3RyYWN0RXhwYW5kZWREZWNvZGVyQ29tcGxlbWVudC5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBFeHBhbmRlZFBhaXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRXhwYW5kZWRQYWlyKGxlZnRDaGFyLCByaWdodENoYXIsIGZpbmRlclBhdHRlciwgbWF5QmVMYXN0KSB7XG4gICAgICAgIHRoaXMubGVmdGNoYXIgPSBsZWZ0Q2hhcjtcbiAgICAgICAgdGhpcy5yaWdodGNoYXIgPSByaWdodENoYXI7XG4gICAgICAgIHRoaXMuZmluZGVycGF0dGVybiA9IGZpbmRlclBhdHRlcjtcbiAgICAgICAgdGhpcy5tYXliZUxhc3QgPSBtYXlCZUxhc3Q7XG4gICAgfVxuICAgIEV4cGFuZGVkUGFpci5wcm90b3R5cGUubWF5QmVMYXN0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXliZUxhc3Q7XG4gICAgfTtcbiAgICBFeHBhbmRlZFBhaXIucHJvdG90eXBlLmdldExlZnRDaGFyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sZWZ0Y2hhcjtcbiAgICB9O1xuICAgIEV4cGFuZGVkUGFpci5wcm90b3R5cGUuZ2V0UmlnaHRDaGFyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yaWdodGNoYXI7XG4gICAgfTtcbiAgICBFeHBhbmRlZFBhaXIucHJvdG90eXBlLmdldEZpbmRlclBhdHRlcm4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbmRlcnBhdHRlcm47XG4gICAgfTtcbiAgICBFeHBhbmRlZFBhaXIucHJvdG90eXBlLm11c3RCZUxhc3QgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJpZ2h0Y2hhciA9PSBudWxsO1xuICAgIH07XG4gICAgRXhwYW5kZWRQYWlyLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICdbICcgKyB0aGlzLmxlZnRjaGFyICsgJywgJyArIHRoaXMucmlnaHRjaGFyICsgJyA6ICcgKyAodGhpcy5maW5kZXJwYXR0ZXJuID09IG51bGwgPyAnbnVsbCcgOiB0aGlzLmZpbmRlcnBhdHRlcm4uZ2V0VmFsdWUoKSkgKyAnIF0nO1xuICAgIH07XG4gICAgRXhwYW5kZWRQYWlyLmVxdWFscyA9IGZ1bmN0aW9uIChvMSwgbzIpIHtcbiAgICAgICAgaWYgKCEobzEgaW5zdGFuY2VvZiBFeHBhbmRlZFBhaXIpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEV4cGFuZGVkUGFpci5lcXVhbHNPck51bGwobzEubGVmdGNoYXIsIG8yLmxlZnRjaGFyKSAmJlxuICAgICAgICAgICAgRXhwYW5kZWRQYWlyLmVxdWFsc09yTnVsbChvMS5yaWdodGNoYXIsIG8yLnJpZ2h0Y2hhcikgJiZcbiAgICAgICAgICAgIEV4cGFuZGVkUGFpci5lcXVhbHNPck51bGwobzEuZmluZGVycGF0dGVybiwgbzIuZmluZGVycGF0dGVybik7XG4gICAgfTtcbiAgICBFeHBhbmRlZFBhaXIuZXF1YWxzT3JOdWxsID0gZnVuY3Rpb24gKG8xLCBvMikge1xuICAgICAgICByZXR1cm4gbzEgPT09IG51bGwgPyBvMiA9PT0gbnVsbCA6IEV4cGFuZGVkUGFpci5lcXVhbHMobzEsIG8yKTtcbiAgICB9O1xuICAgIEV4cGFuZGVkUGFpci5wcm90b3R5cGUuaGFzaENvZGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIC8vIHJldHVybiBFeHBhbmRlZFBhaXIuaGFzaE5vdE51bGwobGVmdENoYXIpIF4gaGFzaE5vdE51bGwocmlnaHRDaGFyKSBeIGhhc2hOb3ROdWxsKGZpbmRlclBhdHRlcm4pO1xuICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLmxlZnRjaGFyLmdldFZhbHVlKCkgXiB0aGlzLnJpZ2h0Y2hhci5nZXRWYWx1ZSgpIF4gdGhpcy5maW5kZXJwYXR0ZXJuLmdldFZhbHVlKCk7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9O1xuICAgIHJldHVybiBFeHBhbmRlZFBhaXI7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gRXhwYW5kZWRQYWlyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RXhwYW5kZWRQYWlyLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIEV4cGFuZGVkUm93ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEV4cGFuZGVkUm93KHBhaXJzLCByb3dOdW1iZXIsIHdhc1JldmVyc2VkKSB7XG4gICAgICAgIHRoaXMucGFpcnMgPSBwYWlycztcbiAgICAgICAgdGhpcy5yb3dOdW1iZXIgPSByb3dOdW1iZXI7XG4gICAgICAgIHRoaXMud2FzUmV2ZXJzZWQgPSB3YXNSZXZlcnNlZDtcbiAgICB9XG4gICAgRXhwYW5kZWRSb3cucHJvdG90eXBlLmdldFBhaXJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wYWlycztcbiAgICB9O1xuICAgIEV4cGFuZGVkUm93LnByb3RvdHlwZS5nZXRSb3dOdW1iZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJvd051bWJlcjtcbiAgICB9O1xuICAgIEV4cGFuZGVkUm93LnByb3RvdHlwZS5pc1JldmVyc2VkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy53YXNSZXZlcnNlZDtcbiAgICB9O1xuICAgIC8vIGNoZWNrIGltcGxlbWVudGF0aW9uXG4gICAgRXhwYW5kZWRSb3cucHJvdG90eXBlLmlzRXF1aXZhbGVudCA9IGZ1bmN0aW9uIChvdGhlclBhaXJzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrRXF1YWxpdGl0eSh0aGlzLCBvdGhlclBhaXJzKTtcbiAgICB9O1xuICAgIC8vIEBPdmVycmlkZVxuICAgIEV4cGFuZGVkUm93LnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICd7ICcgKyB0aGlzLnBhaXJzICsgJyB9JztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFR3byByb3dzIGFyZSBlcXVhbCBpZiB0aGV5IGNvbnRhaW4gdGhlIHNhbWUgcGFpcnMgaW4gdGhlIHNhbWUgb3JkZXIuXG4gICAgICovXG4gICAgLy8gQE92ZXJyaWRlXG4gICAgLy8gY2hlY2sgaW1wbGVtZW50YXRpb25cbiAgICBFeHBhbmRlZFJvdy5wcm90b3R5cGUuZXF1YWxzID0gZnVuY3Rpb24gKG8xLCBvMikge1xuICAgICAgICBpZiAoIShvMSBpbnN0YW5jZW9mIEV4cGFuZGVkUm93KSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrRXF1YWxpdGl0eShvMSwgbzIpICYmIG8xLndhc1JldmVyc2VkID09PSBvMi53YXNSZXZlcnNlZDtcbiAgICB9O1xuICAgIEV4cGFuZGVkUm93LnByb3RvdHlwZS5jaGVja0VxdWFsaXRpdHkgPSBmdW5jdGlvbiAocGFpcjEsIHBhaXIyKSB7XG4gICAgICAgIGlmICghcGFpcjEgfHwgIXBhaXIyKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB2YXIgcmVzdWx0O1xuICAgICAgICBwYWlyMS5mb3JFYWNoKGZ1bmN0aW9uIChlMSwgaSkge1xuICAgICAgICAgICAgcGFpcjIuZm9yRWFjaChmdW5jdGlvbiAoZTIpIHtcbiAgICAgICAgICAgICAgICBpZiAoZTEuZ2V0TGVmdENoYXIoKS5nZXRWYWx1ZSgpID09PSBlMi5nZXRMZWZ0Q2hhcigpLmdldFZhbHVlKCkgJiYgZTEuZ2V0UmlnaHRDaGFyKCkuZ2V0VmFsdWUoKSA9PT0gZTIuZ2V0UmlnaHRDaGFyKCkuZ2V0VmFsdWUoKSAmJiBlMS5nZXRGaW5kZXJQYXR0ZXIoKS5nZXRWYWx1ZSgpID09PSBlMi5nZXRGaW5kZXJQYXR0ZXIoKS5nZXRWYWx1ZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgcmV0dXJuIEV4cGFuZGVkUm93O1xufSgpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IEV4cGFuZGVkUm93O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RXhwYW5kZWRSb3cuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbnZhciBfX3ZhbHVlcyA9ICh0aGlzICYmIHRoaXMuX192YWx1ZXMpIHx8IGZ1bmN0aW9uKG8pIHtcbiAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xuICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBCYXJjb2RlRm9ybWF0XzEgPSByZXF1aXJlKFwiLi4vLi4vLi4vQmFyY29kZUZvcm1hdFwiKTtcbnZhciBNYXRoVXRpbHNfMSA9IHJlcXVpcmUoXCIuLi8uLi8uLi9jb21tb24vZGV0ZWN0b3IvTWF0aFV0aWxzXCIpO1xuLy8gaW1wb3J0IEZvcm1hdEV4Y2VwdGlvbiBmcm9tICcuLi8uLi8uLi9Gb3JtYXRFeGNlcHRpb24nO1xudmFyIE5vdEZvdW5kRXhjZXB0aW9uXzEgPSByZXF1aXJlKFwiLi4vLi4vLi4vTm90Rm91bmRFeGNlcHRpb25cIik7XG52YXIgUmVzdWx0XzEgPSByZXF1aXJlKFwiLi4vLi4vLi4vUmVzdWx0XCIpO1xudmFyIFN5c3RlbV8xID0gcmVxdWlyZShcIi4uLy4uLy4uL3V0aWwvU3lzdGVtXCIpO1xudmFyIEFic3RyYWN0UlNTUmVhZGVyXzEgPSByZXF1aXJlKFwiLi4vLi4vcnNzL0Fic3RyYWN0UlNTUmVhZGVyXCIpO1xudmFyIERhdGFDaGFyYWN0ZXJfMSA9IHJlcXVpcmUoXCIuLi8uLi9yc3MvRGF0YUNoYXJhY3RlclwiKTtcbnZhciBGaW5kZXJQYXR0ZXJuXzEgPSByZXF1aXJlKFwiLi4vLi4vcnNzL0ZpbmRlclBhdHRlcm5cIik7XG52YXIgUlNTVXRpbHNfMSA9IHJlcXVpcmUoXCIuLi8uLi9yc3MvUlNTVXRpbHNcIik7XG52YXIgQml0QXJyYXlCdWlsZGVyXzEgPSByZXF1aXJlKFwiLi9CaXRBcnJheUJ1aWxkZXJcIik7XG52YXIgQWJzdHJhY3RFeHBhbmRlZERlY29kZXJDb21wbGVtZW50XzEgPSByZXF1aXJlKFwiLi9kZWNvZGVycy9BYnN0cmFjdEV4cGFuZGVkRGVjb2RlckNvbXBsZW1lbnRcIik7XG52YXIgRXhwYW5kZWRQYWlyXzEgPSByZXF1aXJlKFwiLi9FeHBhbmRlZFBhaXJcIik7XG52YXIgRXhwYW5kZWRSb3dfMSA9IHJlcXVpcmUoXCIuL0V4cGFuZGVkUm93XCIpO1xuLy8gaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7XG4vLyBpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yO1xuLy8gaW1wb3J0IGphdmEudXRpbC5MaXN0O1xuLy8gaW1wb3J0IGphdmEudXRpbC5NYXA7XG4vLyBpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zO1xudmFyIFJTU0V4cGFuZGVkUmVhZGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhSU1NFeHBhbmRlZFJlYWRlciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBSU1NFeHBhbmRlZFJlYWRlcigpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLnBhaXJzID0gbmV3IEFycmF5KFJTU0V4cGFuZGVkUmVhZGVyLk1BWF9QQUlSUyk7XG4gICAgICAgIF90aGlzLnJvd3MgPSBuZXcgQXJyYXkoKTtcbiAgICAgICAgX3RoaXMuc3RhcnRFbmQgPSBbMl07XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgUlNTRXhwYW5kZWRSZWFkZXIucHJvdG90eXBlLmRlY29kZVJvdyA9IGZ1bmN0aW9uIChyb3dOdW1iZXIsIHJvdywgaGludHMpIHtcbiAgICAgICAgLy8gUm93cyBjYW4gc3RhcnQgd2l0aCBldmVuIHBhdHRlcm4gaW4gY2FzZSBpbiBwcmV2IHJvd3MgdGhlcmUgd2hlcmUgb2RkIG51bWJlciBvZiBwYXR0ZXJzLlxuICAgICAgICAvLyBTbyBsZXRzIHRyeSB0d2ljZVxuICAgICAgICAvLyB0aGlzLnBhaXJzLmNsZWFyKCk7XG4gICAgICAgIHRoaXMucGFpcnMubGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy5zdGFydEZyb21FdmVuID0gZmFsc2U7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gUlNTRXhwYW5kZWRSZWFkZXIuY29uc3RydWN0UmVzdWx0KHRoaXMuZGVjb2RlUm93MnBhaXJzKHJvd051bWJlciwgcm93KSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIC8vIE9LXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBhaXJzLmxlbmd0aCA9IDA7XG4gICAgICAgIHRoaXMuc3RhcnRGcm9tRXZlbiA9IHRydWU7XG4gICAgICAgIHJldHVybiBSU1NFeHBhbmRlZFJlYWRlci5jb25zdHJ1Y3RSZXN1bHQodGhpcy5kZWNvZGVSb3cycGFpcnMocm93TnVtYmVyLCByb3cpKTtcbiAgICB9O1xuICAgIFJTU0V4cGFuZGVkUmVhZGVyLnByb3RvdHlwZS5yZXNldCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5wYWlycy5sZW5ndGggPSAwO1xuICAgICAgICB0aGlzLnJvd3MubGVuZ3RoID0gMDtcbiAgICB9O1xuICAgIC8vIE5vdCBwcml2YXRlIGZvciB0ZXN0aW5nXG4gICAgUlNTRXhwYW5kZWRSZWFkZXIucHJvdG90eXBlLmRlY29kZVJvdzJwYWlycyA9IGZ1bmN0aW9uIChyb3dOdW1iZXIsIHJvdykge1xuICAgICAgICB2YXIgZG9uZSA9IGZhbHNlO1xuICAgICAgICB3aGlsZSAoIWRvbmUpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wYWlycy5wdXNoKHRoaXMucmV0cmlldmVOZXh0UGFpcihyb3csIHRoaXMucGFpcnMsIHJvd051bWJlcikpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5wYWlycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBleGl0IHRoaXMgbG9vcCB3aGVuIHJldHJpZXZlTmV4dFBhaXIoKSBmYWlscyBhbmQgdGhyb3dzXG4gICAgICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBUT0RPOiB2ZXJpZnkgc2VxdWVuY2Ugb2YgZmluZGVyIHBhdHRlcm5zIGFzIGluIGNoZWNrUGFpclNlcXVlbmNlKClcbiAgICAgICAgaWYgKHRoaXMuY2hlY2tDaGVja3N1bSgpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wYWlycztcbiAgICAgICAgfVxuICAgICAgICB2YXIgdHJ5U3RhY2tlZERlY29kZTtcbiAgICAgICAgaWYgKHRoaXMucm93cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRyeVN0YWNrZWREZWNvZGUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdHJ5U3RhY2tlZERlY29kZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIGxldCB0cnlTdGFja2VkRGVjb2RlID0gIXRoaXMucm93cy5pc0VtcHR5KCk7XG4gICAgICAgIHRoaXMuc3RvcmVSb3cocm93TnVtYmVyLCBmYWxzZSk7IC8vIFRPRE86IGRlYWwgd2l0aCByZXZlcnNlZCByb3dzXG4gICAgICAgIGlmICh0cnlTdGFja2VkRGVjb2RlKSB7XG4gICAgICAgICAgICAvLyBXaGVuIHRoZSBpbWFnZSBpcyAxODAtcm90YXRlZCwgdGhlbiByb3dzIGFyZSBzb3J0ZWQgaW4gd3JvbmcgZGlyZWN0aW9uLlxuICAgICAgICAgICAgLy8gVHJ5IHR3aWNlIHdpdGggYm90aCB0aGUgZGlyZWN0aW9ucy5cbiAgICAgICAgICAgIHZhciBwcyA9IHRoaXMuY2hlY2tSb3dzQm9vbGVhbihmYWxzZSk7XG4gICAgICAgICAgICBpZiAocHMgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBzID0gdGhpcy5jaGVja1Jvd3NCb29sZWFuKHRydWUpO1xuICAgICAgICAgICAgaWYgKHBzICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgIH07XG4gICAgLy8gTmVlZCB0byBWZXJpZnlcbiAgICBSU1NFeHBhbmRlZFJlYWRlci5wcm90b3R5cGUuY2hlY2tSb3dzQm9vbGVhbiA9IGZ1bmN0aW9uIChyZXZlcnNlKSB7XG4gICAgICAgIC8vIExpbWl0IG51bWJlciBvZiByb3dzIHdlIGFyZSBjaGVja2luZ1xuICAgICAgICAvLyBXZSB1c2UgcmVjdXJzaXZlIGFsZ29yaXRobSB3aXRoIHB1cmUgY29tcGxleGl0eSBhbmQgZG9uJ3Qgd2FudCBpdCB0byB0YWtlIGZvcmV2ZXJcbiAgICAgICAgLy8gU3RhY2tlZCBiYXJjb2RlIGNhbiBoYXZlIHVwIHRvIDExIHJvd3MsIHNvIDI1IHNlZW1zIHJlYXNvbmFibGUgZW5vdWdoXG4gICAgICAgIGlmICh0aGlzLnJvd3MubGVuZ3RoID4gMjUpIHtcbiAgICAgICAgICAgIHRoaXMucm93cy5sZW5ndGggPSAwOyAvLyBXZSB3aWxsIG5ldmVyIGhhdmUgYSBjaGFuY2UgdG8gZ2V0IHJlc3VsdCwgc28gY2xlYXIgaXRcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucGFpcnMubGVuZ3RoID0gMDtcbiAgICAgICAgaWYgKHJldmVyc2UpIHtcbiAgICAgICAgICAgIHRoaXMucm93cyA9IHRoaXMucm93cy5yZXZlcnNlKCk7XG4gICAgICAgICAgICAvLyBDb2xsZWN0aW9ucy5yZXZlcnNlKHRoaXMucm93cyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHBzID0gbnVsbDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHBzID0gdGhpcy5jaGVja1Jvd3MobmV3IEFycmF5KCksIDApO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAvLyBPS1xuICAgICAgICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJldmVyc2UpIHtcbiAgICAgICAgICAgIHRoaXMucm93cyA9IHRoaXMucm93cy5yZXZlcnNlKCk7XG4gICAgICAgICAgICAvLyBDb2xsZWN0aW9ucy5yZXZlcnNlKHRoaXMucm93cyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBzO1xuICAgIH07XG4gICAgLy8gVHJ5IHRvIGNvbnN0cnVjdCBhIHZhbGlkIHJvd3Mgc2VxdWVuY2VcbiAgICAvLyBSZWN1cnNpb24gaXMgdXNlZCB0byBpbXBsZW1lbnQgYmFja3RyYWNraW5nXG4gICAgUlNTRXhwYW5kZWRSZWFkZXIucHJvdG90eXBlLmNoZWNrUm93cyA9IGZ1bmN0aW9uIChjb2xsZWN0ZWRSb3dzLCBjdXJyZW50Um93KSB7XG4gICAgICAgIHZhciBlXzEsIF9hO1xuICAgICAgICBmb3IgKHZhciBpID0gY3VycmVudFJvdzsgaSA8IHRoaXMucm93cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIHJvdyA9IHRoaXMucm93c1tpXTtcbiAgICAgICAgICAgIHRoaXMucGFpcnMubGVuZ3RoID0gMDtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgY29sbGVjdGVkUm93c18xID0gKGVfMSA9IHZvaWQgMCwgX192YWx1ZXMoY29sbGVjdGVkUm93cykpLCBjb2xsZWN0ZWRSb3dzXzFfMSA9IGNvbGxlY3RlZFJvd3NfMS5uZXh0KCk7ICFjb2xsZWN0ZWRSb3dzXzFfMS5kb25lOyBjb2xsZWN0ZWRSb3dzXzFfMSA9IGNvbGxlY3RlZFJvd3NfMS5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvbGxlY3RlZFJvdyA9IGNvbGxlY3RlZFJvd3NfMV8xLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhaXJzLnB1c2goY29sbGVjdGVkUm93LmdldFBhaXJzKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9XG4gICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29sbGVjdGVkUm93c18xXzEgJiYgIWNvbGxlY3RlZFJvd3NfMV8xLmRvbmUgJiYgKF9hID0gY29sbGVjdGVkUm93c18xLnJldHVybikpIF9hLmNhbGwoY29sbGVjdGVkUm93c18xKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5wYWlycy5wdXNoKHJvdy5nZXRQYWlycygpKTtcbiAgICAgICAgICAgIGlmICghUlNTRXhwYW5kZWRSZWFkZXIuaXNWYWxpZFNlcXVlbmNlKHRoaXMucGFpcnMpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5jaGVja0NoZWNrc3VtKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wYWlycztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBycyA9IG5ldyBBcnJheShjb2xsZWN0ZWRSb3dzKTtcbiAgICAgICAgICAgIHJzLnB1c2gocm93KTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgLy8gUmVjdXJzaW9uOiB0cnkgdG8gYWRkIG1vcmUgcm93c1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNoZWNrUm93cyhycywgaSArIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAvLyBXZSBmYWlsZWQsIHRyeSB0aGUgbmV4dCBjYW5kaWRhdGVcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgfTtcbiAgICAvLyBXaGV0aGVyIHRoZSBwYWlycyBmb3JtIGEgdmFsaWQgZmluZCBwYXR0ZXJuIHNlcXVlbmNlLFxuICAgIC8vIGVpdGhlciBjb21wbGV0ZSBvciBhIHByZWZpeFxuICAgIFJTU0V4cGFuZGVkUmVhZGVyLmlzVmFsaWRTZXF1ZW5jZSA9IGZ1bmN0aW9uIChwYWlycykge1xuICAgICAgICB2YXIgZV8yLCBfYTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAodmFyIF9iID0gX192YWx1ZXMoUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVFRFUk5fU0VRVUVOQ0VTKSwgX2MgPSBfYi5uZXh0KCk7ICFfYy5kb25lOyBfYyA9IF9iLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciBzZXF1ZW5jZSA9IF9jLnZhbHVlO1xuICAgICAgICAgICAgICAgIGlmIChwYWlycy5sZW5ndGggPiBzZXF1ZW5jZS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBzdG9wXzEgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgcGFpcnMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhaXJzW2pdLmdldEZpbmRlclBhdHRlcm4oKS5nZXRWYWx1ZSgpICE9IHNlcXVlbmNlW2pdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9wXzEgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzdG9wXzEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlXzJfMSkgeyBlXzIgPSB7IGVycm9yOiBlXzJfMSB9OyB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoX2MgJiYgIV9jLmRvbmUgJiYgKF9hID0gX2IucmV0dXJuKSkgX2EuY2FsbChfYik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMikgdGhyb3cgZV8yLmVycm9yOyB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgUlNTRXhwYW5kZWRSZWFkZXIucHJvdG90eXBlLnN0b3JlUm93ID0gZnVuY3Rpb24gKHJvd051bWJlciwgd2FzUmV2ZXJzZWQpIHtcbiAgICAgICAgLy8gRGlzY2FyZCBpZiBkdXBsaWNhdGUgYWJvdmUgb3IgYmVsb3c7IG90aGVyd2lzZSBpbnNlcnQgaW4gb3JkZXIgYnkgcm93IG51bWJlci5cbiAgICAgICAgdmFyIGluc2VydFBvcyA9IDA7XG4gICAgICAgIHZhciBwcmV2SXNTYW1lID0gZmFsc2U7XG4gICAgICAgIHZhciBuZXh0SXNTYW1lID0gZmFsc2U7XG4gICAgICAgIHdoaWxlIChpbnNlcnRQb3MgPCB0aGlzLnJvd3MubGVuZ3RoKSB7XG4gICAgICAgICAgICB2YXIgZXJvdyA9IHRoaXMucm93c1tpbnNlcnRQb3NdO1xuICAgICAgICAgICAgaWYgKGVyb3cuZ2V0Um93TnVtYmVyKCkgPiByb3dOdW1iZXIpIHtcbiAgICAgICAgICAgICAgICBuZXh0SXNTYW1lID0gZXJvdy5pc0VxdWl2YWxlbnQodGhpcy5wYWlycyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwcmV2SXNTYW1lID0gZXJvdy5pc0VxdWl2YWxlbnQodGhpcy5wYWlycyk7XG4gICAgICAgICAgICBpbnNlcnRQb3MrKztcbiAgICAgICAgfVxuICAgICAgICBpZiAobmV4dElzU2FtZSB8fCBwcmV2SXNTYW1lKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gV2hlbiB0aGUgcm93IHdhcyBwYXJ0aWFsbHkgZGVjb2RlZCAoZS5nLiAyIHBhaXJzIGZvdW5kIGluc3RlYWQgb2YgMyksXG4gICAgICAgIC8vIGl0IHdpbGwgcHJldmVudCB1cyBmcm9tIGRldGVjdGluZyB0aGUgYmFyY29kZS5cbiAgICAgICAgLy8gVHJ5IHRvIG1lcmdlIHBhcnRpYWwgcm93c1xuICAgICAgICAvLyBDaGVjayB3aGV0aGVyIHRoZSByb3cgaXMgcGFydCBvZiBhbiBhbGxyZWFkeSBkZXRlY3RlZCByb3dcbiAgICAgICAgaWYgKFJTU0V4cGFuZGVkUmVhZGVyLmlzUGFydGlhbFJvdyh0aGlzLnBhaXJzLCB0aGlzLnJvd3MpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yb3dzLnB1c2goaW5zZXJ0UG9zLCBuZXcgRXhwYW5kZWRSb3dfMS5kZWZhdWx0KHRoaXMucGFpcnMsIHJvd051bWJlciwgd2FzUmV2ZXJzZWQpKTtcbiAgICAgICAgdGhpcy5yZW1vdmVQYXJ0aWFsUm93cyh0aGlzLnBhaXJzLCB0aGlzLnJvd3MpO1xuICAgIH07XG4gICAgLy8gUmVtb3ZlIGFsbCB0aGUgcm93cyB0aGF0IGNvbnRhaW5zIG9ubHkgc3BlY2lmaWVkIHBhaXJzXG4gICAgUlNTRXhwYW5kZWRSZWFkZXIucHJvdG90eXBlLnJlbW92ZVBhcnRpYWxSb3dzID0gZnVuY3Rpb24gKHBhaXJzLCByb3dzKSB7XG4gICAgICAgIHZhciBlXzMsIF9hLCBlXzQsIF9iLCBlXzUsIF9jO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gZm9yIChJdGVyYXRvcjxFeHBhbmRlZFJvdz4gaXRlcmF0b3IgPSByb3dzLml0ZXJhdG9yKCk7IGl0ZXJhdG9yLmhhc05leHQoKTspIHtcbiAgICAgICAgICAgIC8vICAgRXhwYW5kZWRSb3cgciA9IGl0ZXJhdG9yLm5leHQoKTtcbiAgICAgICAgICAgIC8vICAgaWYgKHIuZ2V0UGFpcnMoKS5zaXplKCkgPT0gcGFpcnMuc2l6ZSgpKSB7XG4gICAgICAgICAgICAvLyAgICAgY29udGludWU7XG4gICAgICAgICAgICAvLyAgIH1cbiAgICAgICAgICAgIC8vICAgYm9vbGVhbiBhbGxGb3VuZCA9IHRydWU7XG4gICAgICAgICAgICAvLyAgIGZvciAoRXhwYW5kZWRQYWlyIHAgOiByLmdldFBhaXJzKCkpIHtcbiAgICAgICAgICAgIC8vICAgICBib29sZWFuIGZvdW5kID0gZmFsc2U7XG4gICAgICAgICAgICAvLyAgICAgZm9yIChFeHBhbmRlZFBhaXIgcHAgOiBwYWlycykge1xuICAgICAgICAgICAgLy8gICAgICAgaWYgKHAuZXF1YWxzKHBwKSkge1xuICAgICAgICAgICAgLy8gICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgICAgICAvLyAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgLy8gICAgICAgfVxuICAgICAgICAgICAgLy8gICAgIH1cbiAgICAgICAgICAgIC8vICAgICBpZiAoIWZvdW5kKSB7XG4gICAgICAgICAgICAvLyAgICAgICBhbGxGb3VuZCA9IGZhbHNlO1xuICAgICAgICAgICAgLy8gICAgICAgYnJlYWs7XG4gICAgICAgICAgICAvLyAgICAgfVxuICAgICAgICAgICAgLy8gICB9XG4gICAgICAgICAgICAvLyAgIGlmIChhbGxGb3VuZCkge1xuICAgICAgICAgICAgLy8gICAgIC8vICdwYWlycycgY29udGFpbnMgYWxsIHRoZSBwYWlycyBmcm9tIHRoZSByb3cgJ3InXG4gICAgICAgICAgICAvLyAgICAgaXRlcmF0b3IucmVtb3ZlKCk7XG4gICAgICAgICAgICAvLyAgIH1cbiAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgIGZvciAodmFyIHJvd3NfMSA9IF9fdmFsdWVzKHJvd3MpLCByb3dzXzFfMSA9IHJvd3NfMS5uZXh0KCk7ICFyb3dzXzFfMS5kb25lOyByb3dzXzFfMSA9IHJvd3NfMS5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgcm93ID0gcm93c18xXzEudmFsdWU7XG4gICAgICAgICAgICAgICAgaWYgKHJvdy5nZXRQYWlycygpLmxlbmd0aCA9PT0gcGFpcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgYWxsRm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIF9kID0gKGVfNCA9IHZvaWQgMCwgX192YWx1ZXMocm93LmdldFBhaXJzKCkpKSwgX2UgPSBfZC5uZXh0KCk7ICFfZS5kb25lOyBfZSA9IF9kLm5leHQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSBfZS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmb3VuZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBwYWlyc18xID0gKGVfNSA9IHZvaWQgMCwgX192YWx1ZXMocGFpcnMpKSwgcGFpcnNfMV8xID0gcGFpcnNfMS5uZXh0KCk7ICFwYWlyc18xXzEuZG9uZTsgcGFpcnNfMV8xID0gcGFpcnNfMS5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBwID0gcGFpcnNfMV8xLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRXhwYW5kZWRQYWlyXzEuZGVmYXVsdC5lcXVhbHMocCwgcHApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIChlXzVfMSkgeyBlXzUgPSB7IGVycm9yOiBlXzVfMSB9OyB9XG4gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFpcnNfMV8xICYmICFwYWlyc18xXzEuZG9uZSAmJiAoX2MgPSBwYWlyc18xLnJldHVybikpIF9jLmNhbGwocGFpcnNfMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV81KSB0aHJvdyBlXzUuZXJyb3I7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZm91bmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxGb3VuZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlXzRfMSkgeyBlXzQgPSB7IGVycm9yOiBlXzRfMSB9OyB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2UgJiYgIV9lLmRvbmUgJiYgKF9iID0gX2QucmV0dXJuKSkgX2IuY2FsbChfZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzQpIHRocm93IGVfNC5lcnJvcjsgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZV8zXzEpIHsgZV8zID0geyBlcnJvcjogZV8zXzEgfTsgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKHJvd3NfMV8xICYmICFyb3dzXzFfMS5kb25lICYmIChfYSA9IHJvd3NfMS5yZXR1cm4pKSBfYS5jYWxsKHJvd3NfMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMykgdGhyb3cgZV8zLmVycm9yOyB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIFJldHVybnMgdHJ1ZSB3aGVuIG9uZSBvZiB0aGUgcm93cyBhbHJlYWR5IGNvbnRhaW5zIGFsbCB0aGUgcGFpcnNcbiAgICBSU1NFeHBhbmRlZFJlYWRlci5pc1BhcnRpYWxSb3cgPSBmdW5jdGlvbiAocGFpcnMsIHJvd3MpIHtcbiAgICAgICAgdmFyIGVfNiwgX2EsIGVfNywgX2IsIGVfOCwgX2M7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKHZhciByb3dzXzIgPSBfX3ZhbHVlcyhyb3dzKSwgcm93c18yXzEgPSByb3dzXzIubmV4dCgpOyAhcm93c18yXzEuZG9uZTsgcm93c18yXzEgPSByb3dzXzIubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHIgPSByb3dzXzJfMS52YWx1ZTtcbiAgICAgICAgICAgICAgICB2YXIgYWxsRm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHBhaXJzXzIgPSAoZV83ID0gdm9pZCAwLCBfX3ZhbHVlcyhwYWlycykpLCBwYWlyc18yXzEgPSBwYWlyc18yLm5leHQoKTsgIXBhaXJzXzJfMS5kb25lOyBwYWlyc18yXzEgPSBwYWlyc18yLm5leHQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSBwYWlyc18yXzEudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZm91bmQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgX2QgPSAoZV84ID0gdm9pZCAwLCBfX3ZhbHVlcyhyLmdldFBhaXJzKCkpKSwgX2UgPSBfZC5uZXh0KCk7ICFfZS5kb25lOyBfZSA9IF9kLm5leHQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcHAgPSBfZS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAuZXF1YWxzKHBwKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZV84XzEpIHsgZV84ID0geyBlcnJvcjogZV84XzEgfTsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9lICYmICFfZS5kb25lICYmIChfYyA9IF9kLnJldHVybikpIF9jLmNhbGwoX2QpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfOCkgdGhyb3cgZV84LmVycm9yOyB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWZvdW5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsRm91bmQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZV83XzEpIHsgZV83ID0geyBlcnJvcjogZV83XzEgfTsgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhaXJzXzJfMSAmJiAhcGFpcnNfMl8xLmRvbmUgJiYgKF9iID0gcGFpcnNfMi5yZXR1cm4pKSBfYi5jYWxsKHBhaXJzXzIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV83KSB0aHJvdyBlXzcuZXJyb3I7IH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGFsbEZvdW5kKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRoZSByb3cgJ3InIGNvbnRhaW4gYWxsIHRoZSBwYWlycyBmcm9tICdwYWlycydcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlXzZfMSkgeyBlXzYgPSB7IGVycm9yOiBlXzZfMSB9OyB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAocm93c18yXzEgJiYgIXJvd3NfMl8xLmRvbmUgJiYgKF9hID0gcm93c18yLnJldHVybikpIF9hLmNhbGwocm93c18yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV82KSB0aHJvdyBlXzYuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICAvLyBPbmx5IHVzZWQgZm9yIHVuaXQgdGVzdGluZ1xuICAgIFJTU0V4cGFuZGVkUmVhZGVyLnByb3RvdHlwZS5nZXRSb3dzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yb3dzO1xuICAgIH07XG4gICAgLy8gTm90IHByaXZhdGUgZm9yIHVuaXQgdGVzdGluZ1xuICAgIFJTU0V4cGFuZGVkUmVhZGVyLmNvbnN0cnVjdFJlc3VsdCA9IGZ1bmN0aW9uIChwYWlycykge1xuICAgICAgICB2YXIgYmluYXJ5ID0gQml0QXJyYXlCdWlsZGVyXzEuZGVmYXVsdC5idWlsZEJpdEFycmF5KHBhaXJzKTtcbiAgICAgICAgdmFyIGRlY29kZXIgPSBBYnN0cmFjdEV4cGFuZGVkRGVjb2RlckNvbXBsZW1lbnRfMS5jcmVhdGVEZWNvZGVyKGJpbmFyeSk7XG4gICAgICAgIHZhciByZXN1bHRpbmdTdHJpbmcgPSBkZWNvZGVyLnBhcnNlSW5mb3JtYXRpb24oKTtcbiAgICAgICAgdmFyIGZpcnN0UG9pbnRzID0gcGFpcnNbMF0uZ2V0RmluZGVyUGF0dGVybigpLmdldFJlc3VsdFBvaW50cygpO1xuICAgICAgICB2YXIgbGFzdFBvaW50cyA9IHBhaXJzW3BhaXJzLmxlbmd0aCAtIDFdLmdldEZpbmRlclBhdHRlcm4oKS5nZXRSZXN1bHRQb2ludHMoKTtcbiAgICAgICAgdmFyIHBvaW50cyA9IFtmaXJzdFBvaW50c1swXSwgZmlyc3RQb2ludHNbMV0sIGxhc3RQb2ludHNbMF0sIGxhc3RQb2ludHNbMV1dO1xuICAgICAgICByZXR1cm4gbmV3IFJlc3VsdF8xLmRlZmF1bHQocmVzdWx0aW5nU3RyaW5nLCBudWxsLCBudWxsLCBwb2ludHMsIEJhcmNvZGVGb3JtYXRfMS5kZWZhdWx0LlJTU19FWFBBTkRFRCwgbnVsbCk7XG4gICAgfTtcbiAgICBSU1NFeHBhbmRlZFJlYWRlci5wcm90b3R5cGUuY2hlY2tDaGVja3N1bSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGZpcnN0UGFpciA9IHRoaXMucGFpcnMuZ2V0KDApO1xuICAgICAgICB2YXIgY2hlY2tDaGFyYWN0ZXIgPSBmaXJzdFBhaXIuZ2V0TGVmdENoYXIoKTtcbiAgICAgICAgdmFyIGZpcnN0Q2hhcmFjdGVyID0gZmlyc3RQYWlyLmdldFJpZ2h0Q2hhcigpO1xuICAgICAgICBpZiAoZmlyc3RDaGFyYWN0ZXIgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBjaGVja3N1bSA9IGZpcnN0Q2hhcmFjdGVyLmdldENoZWNrc3VtUG9ydGlvbigpO1xuICAgICAgICB2YXIgcyA9IDI7XG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgdGhpcy5wYWlycy5zaXplKCk7ICsraSkge1xuICAgICAgICAgICAgdmFyIGN1cnJlbnRQYWlyID0gdGhpcy5wYWlycy5nZXQoaSk7XG4gICAgICAgICAgICBjaGVja3N1bSArPSBjdXJyZW50UGFpci5nZXRMZWZ0Q2hhcigpLmdldENoZWNrc3VtUG9ydGlvbigpO1xuICAgICAgICAgICAgcysrO1xuICAgICAgICAgICAgdmFyIGN1cnJlbnRSaWdodENoYXIgPSBjdXJyZW50UGFpci5nZXRSaWdodENoYXIoKTtcbiAgICAgICAgICAgIGlmIChjdXJyZW50UmlnaHRDaGFyICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBjaGVja3N1bSArPSBjdXJyZW50UmlnaHRDaGFyLmdldENoZWNrc3VtUG9ydGlvbigpO1xuICAgICAgICAgICAgICAgIHMrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjaGVja3N1bSAlPSAyMTE7XG4gICAgICAgIHZhciBjaGVja0NoYXJhY3RlclZhbHVlID0gMjExICogKHMgLSA0KSArIGNoZWNrc3VtO1xuICAgICAgICByZXR1cm4gY2hlY2tDaGFyYWN0ZXJWYWx1ZSA9PSBjaGVja0NoYXJhY3Rlci5nZXRWYWx1ZSgpO1xuICAgIH07XG4gICAgUlNTRXhwYW5kZWRSZWFkZXIuZ2V0TmV4dFNlY29uZEJhciA9IGZ1bmN0aW9uIChyb3csIGluaXRpYWxQb3MpIHtcbiAgICAgICAgdmFyIGN1cnJlbnRQb3M7XG4gICAgICAgIGlmIChyb3cuZ2V0KGluaXRpYWxQb3MpKSB7XG4gICAgICAgICAgICBjdXJyZW50UG9zID0gcm93LmdldE5leHRVbnNldChpbml0aWFsUG9zKTtcbiAgICAgICAgICAgIGN1cnJlbnRQb3MgPSByb3cuZ2V0TmV4dFNldChjdXJyZW50UG9zKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGN1cnJlbnRQb3MgPSByb3cuZ2V0TmV4dFNldChpbml0aWFsUG9zKTtcbiAgICAgICAgICAgIGN1cnJlbnRQb3MgPSByb3cuZ2V0TmV4dFVuc2V0KGN1cnJlbnRQb3MpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjdXJyZW50UG9zO1xuICAgIH07XG4gICAgLy8gbm90IHByaXZhdGUgZm9yIHRlc3RpbmdcbiAgICBSU1NFeHBhbmRlZFJlYWRlci5wcm90b3R5cGUucmV0cmlldmVOZXh0UGFpciA9IGZ1bmN0aW9uIChyb3csIHByZXZpb3VzUGFpcnMsIHJvd051bWJlcikge1xuICAgICAgICB2YXIgaXNPZGRQYXR0ZXJuID0gcHJldmlvdXNQYWlycy5sZW5ndGggJSAyID09IDA7XG4gICAgICAgIGlmICh0aGlzLnN0YXJ0RnJvbUV2ZW4pIHtcbiAgICAgICAgICAgIGlzT2RkUGF0dGVybiA9ICFpc09kZFBhdHRlcm47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHBhdHRlcm47XG4gICAgICAgIHZhciBrZWVwRmluZGluZyA9IHRydWU7XG4gICAgICAgIHZhciBmb3JjZWRPZmZzZXQgPSAtMTtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgdGhpcy5maW5kTmV4dFBhaXIocm93LCBwcmV2aW91c1BhaXJzLCBmb3JjZWRPZmZzZXQpO1xuICAgICAgICAgICAgcGF0dGVybiA9IHRoaXMucGFyc2VGb3VuZEZpbmRlclBhdHRlcm4ocm93LCByb3dOdW1iZXIsIGlzT2RkUGF0dGVybik7XG4gICAgICAgICAgICBpZiAocGF0dGVybiA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgZm9yY2VkT2Zmc2V0ID0gUlNTRXhwYW5kZWRSZWFkZXIuZ2V0TmV4dFNlY29uZEJhcihyb3csIHRoaXMuc3RhcnRFbmRbMF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAga2VlcEZpbmRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSB3aGlsZSAoa2VlcEZpbmRpbmcpO1xuICAgICAgICAvLyBXaGVuIHN0YWNrZWQgc3ltYm9sIGlzIHNwbGl0IG92ZXIgbXVsdGlwbGUgcm93cywgdGhlcmUncyBubyB3YXkgdG8gZ3Vlc3MgaWYgdGhpcyBwYWlyIGNhbiBiZSBsYXN0IG9yIG5vdC5cbiAgICAgICAgLy8gYm9vbGVhbiBtYXlCZUxhc3QgPSBjaGVja1BhaXJTZXF1ZW5jZShwcmV2aW91c1BhaXJzLCBwYXR0ZXJuKTtcbiAgICAgICAgdmFyIGxlZnRDaGFyID0gdGhpcy5kZWNvZGVEYXRhQ2hhcmFjdGVyKHJvdywgcGF0dGVybiwgaXNPZGRQYXR0ZXJuLCB0cnVlKTtcbiAgICAgICAgaWYgKCF0aGlzLmlzRW1wdHlQYWlyKHByZXZpb3VzUGFpcnMpICYmIHByZXZpb3VzUGFpcnNbcHJldmlvdXNQYWlycy5sZW5ndGggLSAxXS5tdXN0QmVMYXN0KCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcmlnaHRDaGFyO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmlnaHRDaGFyID0gdGhpcy5kZWNvZGVEYXRhQ2hhcmFjdGVyKHJvdywgcGF0dGVybiwgaXNPZGRQYXR0ZXJuLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJpZ2h0Q2hhciA9IG51bGw7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IEV4cGFuZGVkUGFpcl8xLmRlZmF1bHQobGVmdENoYXIsIHJpZ2h0Q2hhciwgcGF0dGVybiwgdHJ1ZSk7XG4gICAgfTtcbiAgICBSU1NFeHBhbmRlZFJlYWRlci5wcm90b3R5cGUuaXNFbXB0eVBhaXIgPSBmdW5jdGlvbiAocGFpcnMpIHtcbiAgICAgICAgaWYgKHBhaXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgUlNTRXhwYW5kZWRSZWFkZXIucHJvdG90eXBlLmZpbmROZXh0UGFpciA9IGZ1bmN0aW9uIChyb3csIHByZXZpb3VzUGFpcnMsIGZvcmNlZE9mZnNldCkge1xuICAgICAgICB2YXIgY291bnRlcnMgPSB0aGlzLmdldERlY29kZUZpbmRlckNvdW50ZXJzKCk7XG4gICAgICAgIGNvdW50ZXJzWzBdID0gMDtcbiAgICAgICAgY291bnRlcnNbMV0gPSAwO1xuICAgICAgICBjb3VudGVyc1syXSA9IDA7XG4gICAgICAgIGNvdW50ZXJzWzNdID0gMDtcbiAgICAgICAgdmFyIHdpZHRoID0gcm93LmdldFNpemUoKTtcbiAgICAgICAgdmFyIHJvd09mZnNldDtcbiAgICAgICAgaWYgKGZvcmNlZE9mZnNldCA+PSAwKSB7XG4gICAgICAgICAgICByb3dPZmZzZXQgPSBmb3JjZWRPZmZzZXQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5pc0VtcHR5UGFpcihwcmV2aW91c1BhaXJzKSkge1xuICAgICAgICAgICAgcm93T2Zmc2V0ID0gMDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBsYXN0UGFpciA9IHByZXZpb3VzUGFpcnNbcHJldmlvdXNQYWlycy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIHJvd09mZnNldCA9IGxhc3RQYWlyLmdldEZpbmRlclBhdHRlcm4oKS5nZXRTdGFydEVuZCgpWzFdO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzZWFyY2hpbmdFdmVuUGFpciA9IHByZXZpb3VzUGFpcnMubGVuZ3RoICUgMiAhPSAwO1xuICAgICAgICBpZiAodGhpcy5zdGFydEZyb21FdmVuKSB7XG4gICAgICAgICAgICBzZWFyY2hpbmdFdmVuUGFpciA9ICFzZWFyY2hpbmdFdmVuUGFpcjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgaXNXaGl0ZSA9IGZhbHNlO1xuICAgICAgICB3aGlsZSAocm93T2Zmc2V0IDwgd2lkdGgpIHtcbiAgICAgICAgICAgIGlzV2hpdGUgPSAhcm93LmdldChyb3dPZmZzZXQpO1xuICAgICAgICAgICAgaWYgKCFpc1doaXRlKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByb3dPZmZzZXQrKztcbiAgICAgICAgfVxuICAgICAgICB2YXIgY291bnRlclBvc2l0aW9uID0gMDtcbiAgICAgICAgdmFyIHBhdHRlcm5TdGFydCA9IHJvd09mZnNldDtcbiAgICAgICAgZm9yICh2YXIgeCA9IHJvd09mZnNldDsgeCA8IHdpZHRoOyB4KyspIHtcbiAgICAgICAgICAgIGlmIChyb3cuZ2V0KHgpICE9IGlzV2hpdGUpIHtcbiAgICAgICAgICAgICAgICBjb3VudGVyc1tjb3VudGVyUG9zaXRpb25dKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoY291bnRlclBvc2l0aW9uID09IDMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlYXJjaGluZ0V2ZW5QYWlyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBSU1NFeHBhbmRlZFJlYWRlci5yZXZlcnNlQ291bnRlcnMoY291bnRlcnMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChSU1NFeHBhbmRlZFJlYWRlci5pc0ZpbmRlclBhdHRlcm4oY291bnRlcnMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0RW5kWzBdID0gcGF0dGVyblN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFydEVuZFsxXSA9IHg7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlYXJjaGluZ0V2ZW5QYWlyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBSU1NFeHBhbmRlZFJlYWRlci5yZXZlcnNlQ291bnRlcnMoY291bnRlcnMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHBhdHRlcm5TdGFydCArPSBjb3VudGVyc1swXSArIGNvdW50ZXJzWzFdO1xuICAgICAgICAgICAgICAgICAgICBjb3VudGVyc1swXSA9IGNvdW50ZXJzWzJdO1xuICAgICAgICAgICAgICAgICAgICBjb3VudGVyc1sxXSA9IGNvdW50ZXJzWzNdO1xuICAgICAgICAgICAgICAgICAgICBjb3VudGVyc1syXSA9IDA7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50ZXJzWzNdID0gMDtcbiAgICAgICAgICAgICAgICAgICAgY291bnRlclBvc2l0aW9uLS07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb3VudGVyUG9zaXRpb24rKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY291bnRlcnNbY291bnRlclBvc2l0aW9uXSA9IDE7XG4gICAgICAgICAgICAgICAgaXNXaGl0ZSA9ICFpc1doaXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICB9O1xuICAgIFJTU0V4cGFuZGVkUmVhZGVyLnJldmVyc2VDb3VudGVycyA9IGZ1bmN0aW9uIChjb3VudGVycykge1xuICAgICAgICB2YXIgbGVuZ3RoID0gY291bnRlcnMubGVuZ3RoO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aCAvIDI7ICsraSkge1xuICAgICAgICAgICAgdmFyIHRtcCA9IGNvdW50ZXJzW2ldO1xuICAgICAgICAgICAgY291bnRlcnNbaV0gPSBjb3VudGVyc1tsZW5ndGggLSBpIC0gMV07XG4gICAgICAgICAgICBjb3VudGVyc1tsZW5ndGggLSBpIC0gMV0gPSB0bXA7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFJTU0V4cGFuZGVkUmVhZGVyLnByb3RvdHlwZS5wYXJzZUZvdW5kRmluZGVyUGF0dGVybiA9IGZ1bmN0aW9uIChyb3csIHJvd051bWJlciwgb2RkUGF0dGVybikge1xuICAgICAgICAvLyBBY3R1YWxseSB3ZSBmb3VuZCBlbGVtZW50cyAyLTUuXG4gICAgICAgIHZhciBmaXJzdENvdW50ZXI7XG4gICAgICAgIHZhciBzdGFydDtcbiAgICAgICAgdmFyIGVuZDtcbiAgICAgICAgaWYgKG9kZFBhdHRlcm4pIHtcbiAgICAgICAgICAgIC8vIElmIHBhdHRlcm4gbnVtYmVyIGlzIG9kZCwgd2UgbmVlZCB0byBsb2NhdGUgZWxlbWVudCAxICpiZWZvcmUqIHRoZSBjdXJyZW50IGJsb2NrLlxuICAgICAgICAgICAgdmFyIGZpcnN0RWxlbWVudFN0YXJ0ID0gdGhpcy5zdGFydEVuZFswXSAtIDE7XG4gICAgICAgICAgICAvLyBMb2NhdGUgZWxlbWVudCAxXG4gICAgICAgICAgICB3aGlsZSAoZmlyc3RFbGVtZW50U3RhcnQgPj0gMCAmJiAhcm93LmdldChmaXJzdEVsZW1lbnRTdGFydCkpIHtcbiAgICAgICAgICAgICAgICBmaXJzdEVsZW1lbnRTdGFydC0tO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmlyc3RFbGVtZW50U3RhcnQrKztcbiAgICAgICAgICAgIGZpcnN0Q291bnRlciA9IHRoaXMuc3RhcnRFbmRbMF0gLSBmaXJzdEVsZW1lbnRTdGFydDtcbiAgICAgICAgICAgIHN0YXJ0ID0gZmlyc3RFbGVtZW50U3RhcnQ7XG4gICAgICAgICAgICBlbmQgPSB0aGlzLnN0YXJ0RW5kWzFdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gSWYgcGF0dGVybiBudW1iZXIgaXMgZXZlbiwgdGhlIHBhdHRlcm4gaXMgcmV2ZXJzZWQsIHNvIHdlIG5lZWQgdG8gbG9jYXRlIGVsZW1lbnQgMSAqYWZ0ZXIqIHRoZSBjdXJyZW50IGJsb2NrLlxuICAgICAgICAgICAgc3RhcnQgPSB0aGlzLnN0YXJ0RW5kWzBdO1xuICAgICAgICAgICAgZW5kID0gcm93LmdldE5leHRVbnNldCh0aGlzLnN0YXJ0RW5kWzFdICsgMSk7XG4gICAgICAgICAgICBmaXJzdENvdW50ZXIgPSBlbmQgLSB0aGlzLnN0YXJ0RW5kWzFdO1xuICAgICAgICB9XG4gICAgICAgIC8vIE1ha2UgJ2NvdW50ZXJzJyBob2xkIDEtNFxuICAgICAgICB2YXIgY291bnRlcnMgPSB0aGlzLmdldERlY29kZUZpbmRlckNvdW50ZXJzKCk7XG4gICAgICAgIFN5c3RlbV8xLmRlZmF1bHQuYXJyYXljb3B5KGNvdW50ZXJzLCAwLCBjb3VudGVycywgMSwgY291bnRlcnMubGVuZ3RoIC0gMSk7XG4gICAgICAgIGNvdW50ZXJzWzBdID0gZmlyc3RDb3VudGVyO1xuICAgICAgICB2YXIgdmFsdWU7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHRoaXMucGFyc2VGaW5kZXJWYWx1ZShjb3VudGVycywgUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVFRFUk5TKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgICAgfVxuICAgICAgICAvLyByZXR1cm4gbmV3IEZpbmRlclBhdHRlcm4odmFsdWUsIG5ldyBpbnRbXSB7IHN0YXJ0LCBlbmQgfSwgc3RhcnQsIGVuZCwgcm93TnVtYmVyfSk7XG4gICAgICAgIHJldHVybiBuZXcgRmluZGVyUGF0dGVybl8xLmRlZmF1bHQodmFsdWUsIFtzdGFydCwgZW5kXSwgc3RhcnQsIGVuZCwgcm93TnVtYmVyKTtcbiAgICB9O1xuICAgIFJTU0V4cGFuZGVkUmVhZGVyLnByb3RvdHlwZS5kZWNvZGVEYXRhQ2hhcmFjdGVyID0gZnVuY3Rpb24gKHJvdywgcGF0dGVybiwgaXNPZGRQYXR0ZXJuLCBsZWZ0Q2hhcikge1xuICAgICAgICB2YXIgY291bnRlcnMgPSB0aGlzLmdldERhdGFDaGFyYWN0ZXJDb3VudGVycygpO1xuICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IGNvdW50ZXJzLmxlbmd0aDsgeCsrKSB7XG4gICAgICAgICAgICBjb3VudGVyc1t4XSA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxlZnRDaGFyKSB7XG4gICAgICAgICAgICBSU1NFeHBhbmRlZFJlYWRlci5yZWNvcmRQYXR0ZXJuSW5SZXZlcnNlKHJvdywgcGF0dGVybi5nZXRTdGFydEVuZCgpWzBdLCBjb3VudGVycyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBSU1NFeHBhbmRlZFJlYWRlci5yZWNvcmRQYXR0ZXJuKHJvdywgcGF0dGVybi5nZXRTdGFydEVuZCgpWzFdLCBjb3VudGVycyk7XG4gICAgICAgICAgICAvLyByZXZlcnNlIGl0XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgaiA9IGNvdW50ZXJzLmxlbmd0aCAtIDE7IGkgPCBqOyBpKyssIGotLSkge1xuICAgICAgICAgICAgICAgIHZhciB0ZW1wID0gY291bnRlcnNbaV07XG4gICAgICAgICAgICAgICAgY291bnRlcnNbaV0gPSBjb3VudGVyc1tqXTtcbiAgICAgICAgICAgICAgICBjb3VudGVyc1tqXSA9IHRlbXA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gLy8gY291bnRlcnNbXSBoYXMgdGhlIHBpeGVscyBvZiB0aGUgbW9kdWxlXG4gICAgICAgIHZhciBudW1Nb2R1bGVzID0gMTc7IC8vIGxlZnQgYW5kIHJpZ2h0IGRhdGEgY2hhcmFjdGVycyBoYXZlIGFsbCB0aGUgc2FtZSBsZW5ndGhcbiAgICAgICAgdmFyIGVsZW1lbnRXaWR0aCA9IE1hdGhVdGlsc18xLmRlZmF1bHQuc3VtKG5ldyBJbnQzMkFycmF5KGNvdW50ZXJzKSkgLyBudW1Nb2R1bGVzO1xuICAgICAgICAvLyBTYW5pdHkgY2hlY2s6IGVsZW1lbnQgd2lkdGggZm9yIHBhdHRlcm4gYW5kIHRoZSBjaGFyYWN0ZXIgc2hvdWxkIG1hdGNoXG4gICAgICAgIHZhciBleHBlY3RlZEVsZW1lbnRXaWR0aCA9IChwYXR0ZXJuLmdldFN0YXJ0RW5kKClbMV0gLSBwYXR0ZXJuLmdldFN0YXJ0RW5kKClbMF0pIC8gMTUuMDtcbiAgICAgICAgaWYgKE1hdGguYWJzKGVsZW1lbnRXaWR0aCAtIGV4cGVjdGVkRWxlbWVudFdpZHRoKSAvIGV4cGVjdGVkRWxlbWVudFdpZHRoID4gMC4zKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG9kZENvdW50cyA9IHRoaXMuZ2V0T2RkQ291bnRzKCk7XG4gICAgICAgIHZhciBldmVuQ291bnRzID0gdGhpcy5nZXRFdmVuQ291bnRzKCk7XG4gICAgICAgIHZhciBvZGRSb3VuZGluZ0Vycm9ycyA9IHRoaXMuZ2V0T2RkUm91bmRpbmdFcnJvcnMoKTtcbiAgICAgICAgdmFyIGV2ZW5Sb3VuZGluZ0Vycm9ycyA9IHRoaXMuZ2V0RXZlblJvdW5kaW5nRXJyb3JzKCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnRlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciB2YWx1ZV8xID0gMS4wICogY291bnRlcnNbaV0gLyBlbGVtZW50V2lkdGg7XG4gICAgICAgICAgICB2YXIgY291bnQgPSB2YWx1ZV8xICsgMC41OyAvLyBSb3VuZFxuICAgICAgICAgICAgaWYgKGNvdW50IDwgMSkge1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZV8xIDwgMC4zKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY291bnQgPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY291bnQgPiA4KSB7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlXzEgPiA4LjcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb3VudCA9IDg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgb2Zmc2V0ID0gaSAvIDI7XG4gICAgICAgICAgICBpZiAoKGkgJiAweDAxKSA9PSAwKSB7XG4gICAgICAgICAgICAgICAgb2RkQ291bnRzW29mZnNldF0gPSBjb3VudDtcbiAgICAgICAgICAgICAgICBvZGRSb3VuZGluZ0Vycm9yc1tvZmZzZXRdID0gdmFsdWVfMSAtIGNvdW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZXZlbkNvdW50c1tvZmZzZXRdID0gY291bnQ7XG4gICAgICAgICAgICAgICAgZXZlblJvdW5kaW5nRXJyb3JzW29mZnNldF0gPSB2YWx1ZV8xIC0gY291bnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hZGp1c3RPZGRFdmVuQ291bnRzKG51bU1vZHVsZXMpO1xuICAgICAgICB2YXIgd2VpZ2h0Um93TnVtYmVyID0gNCAqIHBhdHRlcm4uZ2V0VmFsdWUoKSArIChpc09kZFBhdHRlcm4gPyAwIDogMikgKyAobGVmdENoYXIgPyAwIDogMSkgLSAxO1xuICAgICAgICB2YXIgb2RkU3VtID0gMDtcbiAgICAgICAgdmFyIG9kZENoZWNrc3VtUG9ydGlvbiA9IDA7XG4gICAgICAgIGZvciAodmFyIGkgPSBvZGRDb3VudHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGlmIChSU1NFeHBhbmRlZFJlYWRlci5pc05vdEExbGVmdChwYXR0ZXJuLCBpc09kZFBhdHRlcm4sIGxlZnRDaGFyKSkge1xuICAgICAgICAgICAgICAgIHZhciB3ZWlnaHQgPSBSU1NFeHBhbmRlZFJlYWRlci5XRUlHSFRTW3dlaWdodFJvd051bWJlcl1bMiAqIGldO1xuICAgICAgICAgICAgICAgIG9kZENoZWNrc3VtUG9ydGlvbiArPSBvZGRDb3VudHNbaV0gKiB3ZWlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvZGRTdW0gKz0gb2RkQ291bnRzW2ldO1xuICAgICAgICB9XG4gICAgICAgIHZhciBldmVuQ2hlY2tzdW1Qb3J0aW9uID0gMDtcbiAgICAgICAgLy8gaW50IGV2ZW5TdW0gPSAwO1xuICAgICAgICBmb3IgKHZhciBpID0gZXZlbkNvdW50cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgaWYgKFJTU0V4cGFuZGVkUmVhZGVyLmlzTm90QTFsZWZ0KHBhdHRlcm4sIGlzT2RkUGF0dGVybiwgbGVmdENoYXIpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHdlaWdodCA9IFJTU0V4cGFuZGVkUmVhZGVyLldFSUdIVFNbd2VpZ2h0Um93TnVtYmVyXVsyICogaSArIDFdO1xuICAgICAgICAgICAgICAgIGV2ZW5DaGVja3N1bVBvcnRpb24gKz0gZXZlbkNvdW50c1tpXSAqIHdlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGV2ZW5TdW0gKz0gZXZlbkNvdW50c1tpXTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgY2hlY2tzdW1Qb3J0aW9uID0gb2RkQ2hlY2tzdW1Qb3J0aW9uICsgZXZlbkNoZWNrc3VtUG9ydGlvbjtcbiAgICAgICAgaWYgKChvZGRTdW0gJiAweDAxKSAhPSAwIHx8IG9kZFN1bSA+IDEzIHx8IG9kZFN1bSA8IDQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZ3JvdXAgPSAoMTMgLSBvZGRTdW0pIC8gMjtcbiAgICAgICAgdmFyIG9kZFdpZGVzdCA9IFJTU0V4cGFuZGVkUmVhZGVyLlNZTUJPTF9XSURFU1RbZ3JvdXBdO1xuICAgICAgICB2YXIgZXZlbldpZGVzdCA9IDkgLSBvZGRXaWRlc3Q7XG4gICAgICAgIHZhciB2T2RkID0gUlNTVXRpbHNfMS5kZWZhdWx0LmdldFJTU3ZhbHVlKG9kZENvdW50cywgb2RkV2lkZXN0LCB0cnVlKTtcbiAgICAgICAgdmFyIHZFdmVuID0gUlNTVXRpbHNfMS5kZWZhdWx0LmdldFJTU3ZhbHVlKGV2ZW5Db3VudHMsIGV2ZW5XaWRlc3QsIGZhbHNlKTtcbiAgICAgICAgdmFyIHRFdmVuID0gUlNTRXhwYW5kZWRSZWFkZXIuRVZFTl9UT1RBTF9TVUJTRVRbZ3JvdXBdO1xuICAgICAgICB2YXIgZ1N1bSA9IFJTU0V4cGFuZGVkUmVhZGVyLkdTVU1bZ3JvdXBdO1xuICAgICAgICB2YXIgdmFsdWUgPSB2T2RkICogdEV2ZW4gKyB2RXZlbiArIGdTdW07XG4gICAgICAgIHJldHVybiBuZXcgRGF0YUNoYXJhY3Rlcl8xLmRlZmF1bHQodmFsdWUsIGNoZWNrc3VtUG9ydGlvbik7XG4gICAgfTtcbiAgICBSU1NFeHBhbmRlZFJlYWRlci5pc05vdEExbGVmdCA9IGZ1bmN0aW9uIChwYXR0ZXJuLCBpc09kZFBhdHRlcm4sIGxlZnRDaGFyKSB7XG4gICAgICAgIC8vIEExOiBwYXR0ZXJuLmdldFZhbHVlIGlzIDAgKEEpLCBhbmQgaXQncyBhbiBvZGRQYXR0ZXJuLCBhbmQgaXQgaXMgYSBsZWZ0IGNoYXJcbiAgICAgICAgcmV0dXJuICEocGF0dGVybi5nZXRWYWx1ZSgpID09IDAgJiYgaXNPZGRQYXR0ZXJuICYmIGxlZnRDaGFyKTtcbiAgICB9O1xuICAgIFJTU0V4cGFuZGVkUmVhZGVyLnByb3RvdHlwZS5hZGp1c3RPZGRFdmVuQ291bnRzID0gZnVuY3Rpb24gKG51bU1vZHVsZXMpIHtcbiAgICAgICAgdmFyIG9kZFN1bSA9IE1hdGhVdGlsc18xLmRlZmF1bHQuc3VtKG5ldyBJbnQzMkFycmF5KHRoaXMuZ2V0T2RkQ291bnRzKCkpKTtcbiAgICAgICAgdmFyIGV2ZW5TdW0gPSBNYXRoVXRpbHNfMS5kZWZhdWx0LnN1bShuZXcgSW50MzJBcnJheSh0aGlzLmdldEV2ZW5Db3VudHMoKSkpO1xuICAgICAgICB2YXIgaW5jcmVtZW50T2RkID0gZmFsc2U7XG4gICAgICAgIHZhciBkZWNyZW1lbnRPZGQgPSBmYWxzZTtcbiAgICAgICAgaWYgKG9kZFN1bSA+IDEzKSB7XG4gICAgICAgICAgICBkZWNyZW1lbnRPZGQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG9kZFN1bSA8IDQpIHtcbiAgICAgICAgICAgIGluY3JlbWVudE9kZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGluY3JlbWVudEV2ZW4gPSBmYWxzZTtcbiAgICAgICAgdmFyIGRlY3JlbWVudEV2ZW4gPSBmYWxzZTtcbiAgICAgICAgaWYgKGV2ZW5TdW0gPiAxMykge1xuICAgICAgICAgICAgZGVjcmVtZW50RXZlbiA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZXZlblN1bSA8IDQpIHtcbiAgICAgICAgICAgIGluY3JlbWVudEV2ZW4gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBtaXNtYXRjaCA9IG9kZFN1bSArIGV2ZW5TdW0gLSBudW1Nb2R1bGVzO1xuICAgICAgICB2YXIgb2RkUGFyaXR5QmFkID0gKG9kZFN1bSAmIDB4MDEpID09IDE7XG4gICAgICAgIHZhciBldmVuUGFyaXR5QmFkID0gKGV2ZW5TdW0gJiAweDAxKSA9PSAwO1xuICAgICAgICBpZiAobWlzbWF0Y2ggPT0gMSkge1xuICAgICAgICAgICAgaWYgKG9kZFBhcml0eUJhZCkge1xuICAgICAgICAgICAgICAgIGlmIChldmVuUGFyaXR5QmFkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGVjcmVtZW50T2RkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICghZXZlblBhcml0eUJhZCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRlY3JlbWVudEV2ZW4gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG1pc21hdGNoID09IC0xKSB7XG4gICAgICAgICAgICBpZiAob2RkUGFyaXR5QmFkKSB7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW5QYXJpdHlCYWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpbmNyZW1lbnRPZGQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKCFldmVuUGFyaXR5QmFkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaW5jcmVtZW50RXZlbiA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobWlzbWF0Y2ggPT0gMCkge1xuICAgICAgICAgICAgaWYgKG9kZFBhcml0eUJhZCkge1xuICAgICAgICAgICAgICAgIGlmICghZXZlblBhcml0eUJhZCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIEJvdGggYmFkXG4gICAgICAgICAgICAgICAgaWYgKG9kZFN1bSA8IGV2ZW5TdW0pIHtcbiAgICAgICAgICAgICAgICAgICAgaW5jcmVtZW50T2RkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgZGVjcmVtZW50RXZlbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBkZWNyZW1lbnRPZGQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBpbmNyZW1lbnRFdmVuID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoZXZlblBhcml0eUJhZCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIE5vdGhpbmcgdG8gZG8hXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGluY3JlbWVudE9kZCkge1xuICAgICAgICAgICAgaWYgKGRlY3JlbWVudE9kZCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFJTU0V4cGFuZGVkUmVhZGVyLmluY3JlbWVudCh0aGlzLmdldE9kZENvdW50cygpLCB0aGlzLmdldE9kZFJvdW5kaW5nRXJyb3JzKCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkZWNyZW1lbnRPZGQpIHtcbiAgICAgICAgICAgIFJTU0V4cGFuZGVkUmVhZGVyLmRlY3JlbWVudCh0aGlzLmdldE9kZENvdW50cygpLCB0aGlzLmdldE9kZFJvdW5kaW5nRXJyb3JzKCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbmNyZW1lbnRFdmVuKSB7XG4gICAgICAgICAgICBpZiAoZGVjcmVtZW50RXZlbikge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFJTU0V4cGFuZGVkUmVhZGVyLmluY3JlbWVudCh0aGlzLmdldEV2ZW5Db3VudHMoKSwgdGhpcy5nZXRPZGRSb3VuZGluZ0Vycm9ycygpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGVjcmVtZW50RXZlbikge1xuICAgICAgICAgICAgUlNTRXhwYW5kZWRSZWFkZXIuZGVjcmVtZW50KHRoaXMuZ2V0RXZlbkNvdW50cygpLCB0aGlzLmdldEV2ZW5Sb3VuZGluZ0Vycm9ycygpKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgUlNTRXhwYW5kZWRSZWFkZXIuU1lNQk9MX1dJREVTVCA9IFs3LCA1LCA0LCAzLCAxXTtcbiAgICBSU1NFeHBhbmRlZFJlYWRlci5FVkVOX1RPVEFMX1NVQlNFVCA9IFs0LCAyMCwgNTIsIDEwNCwgMjA0XTtcbiAgICBSU1NFeHBhbmRlZFJlYWRlci5HU1VNID0gWzAsIDM0OCwgMTM4OCwgMjk0OCwgMzk4OF07XG4gICAgUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVFRFUk5TID0gW1xuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDgsIDQsIDFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFszLCA2LCA0LCAxXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMywgNCwgNiwgMV0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzMsIDIsIDgsIDFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFsyLCA2LCA1LCAxXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMiwgMiwgOSwgMV0pIC8vIEZcbiAgICBdO1xuICAgIFJTU0V4cGFuZGVkUmVhZGVyLldFSUdIVFMgPSBbXG4gICAgICAgIFsxLCAzLCA5LCAyNywgODEsIDMyLCA5NiwgNzddLFxuICAgICAgICBbMjAsIDYwLCAxODAsIDExOCwgMTQzLCA3LCAyMSwgNjNdLFxuICAgICAgICBbMTg5LCAxNDUsIDEzLCAzOSwgMTE3LCAxNDAsIDIwOSwgMjA1XSxcbiAgICAgICAgWzE5MywgMTU3LCA0OSwgMTQ3LCAxOSwgNTcsIDE3MSwgOTFdLFxuICAgICAgICBbNjIsIDE4NiwgMTM2LCAxOTcsIDE2OSwgODUsIDQ0LCAxMzJdLFxuICAgICAgICBbMTg1LCAxMzMsIDE4OCwgMTQyLCA0LCAxMiwgMzYsIDEwOF0sXG4gICAgICAgIFsxMTMsIDEyOCwgMTczLCA5NywgODAsIDI5LCA4NywgNTBdLFxuICAgICAgICBbMTUwLCAyOCwgODQsIDQxLCAxMjMsIDE1OCwgNTIsIDE1Nl0sXG4gICAgICAgIFs0NiwgMTM4LCAyMDMsIDE4NywgMTM5LCAyMDYsIDE5NiwgMTY2XSxcbiAgICAgICAgWzc2LCAxNywgNTEsIDE1MywgMzcsIDExMSwgMTIyLCAxNTVdLFxuICAgICAgICBbNDMsIDEyOSwgMTc2LCAxMDYsIDEwNywgMTEwLCAxMTksIDE0Nl0sXG4gICAgICAgIFsxNiwgNDgsIDE0NCwgMTAsIDMwLCA5MCwgNTksIDE3N10sXG4gICAgICAgIFsxMDksIDExNiwgMTM3LCAyMDAsIDE3OCwgMTEyLCAxMjUsIDE2NF0sXG4gICAgICAgIFs3MCwgMjEwLCAyMDgsIDIwMiwgMTg0LCAxMzAsIDE3OSwgMTE1XSxcbiAgICAgICAgWzEzNCwgMTkxLCAxNTEsIDMxLCA5MywgNjgsIDIwNCwgMTkwXSxcbiAgICAgICAgWzE0OCwgMjIsIDY2LCAxOTgsIDE3MiwgOTQsIDcxLCAyXSxcbiAgICAgICAgWzYsIDE4LCA1NCwgMTYyLCA2NCwgMTkyLCAxNTQsIDQwXSxcbiAgICAgICAgWzEyMCwgMTQ5LCAyNSwgNzUsIDE0LCA0MiwgMTI2LCAxNjddLFxuICAgICAgICBbNzksIDI2LCA3OCwgMjMsIDY5LCAyMDcsIDE5OSwgMTc1XSxcbiAgICAgICAgWzEwMywgOTgsIDgzLCAzOCwgMTE0LCAxMzEsIDE4MiwgMTI0XSxcbiAgICAgICAgWzE2MSwgNjEsIDE4MywgMTI3LCAxNzAsIDg4LCA1MywgMTU5XSxcbiAgICAgICAgWzU1LCAxNjUsIDczLCA4LCAyNCwgNzIsIDUsIDE1XSxcbiAgICAgICAgWzQ1LCAxMzUsIDE5NCwgMTYwLCA1OCwgMTc0LCAxMDAsIDg5XVxuICAgIF07XG4gICAgUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9BID0gMDtcbiAgICBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0IgPSAxO1xuICAgIFJTU0V4cGFuZGVkUmVhZGVyLkZJTkRFUl9QQVRfQyA9IDI7XG4gICAgUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9EID0gMztcbiAgICBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0UgPSA0O1xuICAgIFJTU0V4cGFuZGVkUmVhZGVyLkZJTkRFUl9QQVRfRiA9IDU7XG4gICAgUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVFRFUk5fU0VRVUVOQ0VTID0gW1xuICAgICAgICBbUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9BLCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0FdLFxuICAgICAgICBbUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9BLCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0IsIFJTU0V4cGFuZGVkUmVhZGVyLkZJTkRFUl9QQVRfQl0sXG4gICAgICAgIFtSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0EsIFJTU0V4cGFuZGVkUmVhZGVyLkZJTkRFUl9QQVRfQywgUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9CLCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0RdLFxuICAgICAgICBbUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9BLCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0UsIFJTU0V4cGFuZGVkUmVhZGVyLkZJTkRFUl9QQVRfQiwgUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9ELCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0NdLFxuICAgICAgICBbUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9BLCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0UsIFJTU0V4cGFuZGVkUmVhZGVyLkZJTkRFUl9QQVRfQiwgUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9ELCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0QsIFJTU0V4cGFuZGVkUmVhZGVyLkZJTkRFUl9QQVRfRl0sXG4gICAgICAgIFtSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0EsIFJTU0V4cGFuZGVkUmVhZGVyLkZJTkRFUl9QQVRfRSwgUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9CLCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0QsIFJTU0V4cGFuZGVkUmVhZGVyLkZJTkRFUl9QQVRfRSwgUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9GLCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0ZdLFxuICAgICAgICBbUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9BLCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0EsIFJTU0V4cGFuZGVkUmVhZGVyLkZJTkRFUl9QQVRfQiwgUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9CLCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0MsIFJTU0V4cGFuZGVkUmVhZGVyLkZJTkRFUl9QQVRfQywgUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9ELCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0RdLFxuICAgICAgICBbUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9BLCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0EsIFJTU0V4cGFuZGVkUmVhZGVyLkZJTkRFUl9QQVRfQiwgUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9CLCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0MsIFJTU0V4cGFuZGVkUmVhZGVyLkZJTkRFUl9QQVRfQywgUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9ELCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0UsIFJTU0V4cGFuZGVkUmVhZGVyLkZJTkRFUl9QQVRfRV0sXG4gICAgICAgIFtSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0EsIFJTU0V4cGFuZGVkUmVhZGVyLkZJTkRFUl9QQVRfQSwgUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9CLCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0IsIFJTU0V4cGFuZGVkUmVhZGVyLkZJTkRFUl9QQVRfQywgUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9DLCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0QsIFJTU0V4cGFuZGVkUmVhZGVyLkZJTkRFUl9QQVRfRSwgUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9GLCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0ZdLFxuICAgICAgICBbUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9BLCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0EsIFJTU0V4cGFuZGVkUmVhZGVyLkZJTkRFUl9QQVRfQiwgUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9CLCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0MsIFJTU0V4cGFuZGVkUmVhZGVyLkZJTkRFUl9QQVRfRCwgUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9ELCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0UsIFJTU0V4cGFuZGVkUmVhZGVyLkZJTkRFUl9QQVRfRSwgUlNTRXhwYW5kZWRSZWFkZXIuRklOREVSX1BBVF9GLCBSU1NFeHBhbmRlZFJlYWRlci5GSU5ERVJfUEFUX0ZdLFxuICAgIF07XG4gICAgUlNTRXhwYW5kZWRSZWFkZXIuTUFYX1BBSVJTID0gMTE7XG4gICAgcmV0dXJuIFJTU0V4cGFuZGVkUmVhZGVyO1xufShBYnN0cmFjdFJTU1JlYWRlcl8xLmRlZmF1bHQpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IFJTU0V4cGFuZGVkUmVhZGVyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UlNTRXhwYW5kZWRSZWFkZXIuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBEYXRhQ2hhcmFjdGVyXzEgPSByZXF1aXJlKFwiLi9EYXRhQ2hhcmFjdGVyXCIpO1xudmFyIFBhaXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFBhaXIsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gUGFpcih2YWx1ZSwgY2hlY2tzdW1Qb3J0aW9uLCBmaW5kZXJQYXR0ZXJuKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIHZhbHVlLCBjaGVja3N1bVBvcnRpb24pIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLmNvdW50ID0gMDtcbiAgICAgICAgX3RoaXMuZmluZGVyUGF0dGVybiA9IGZpbmRlclBhdHRlcm47XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgUGFpci5wcm90b3R5cGUuZ2V0RmluZGVyUGF0dGVybiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZGVyUGF0dGVybjtcbiAgICB9O1xuICAgIFBhaXIucHJvdG90eXBlLmdldENvdW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb3VudDtcbiAgICB9O1xuICAgIFBhaXIucHJvdG90eXBlLmluY3JlbWVudENvdW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmNvdW50Kys7XG4gICAgfTtcbiAgICByZXR1cm4gUGFpcjtcbn0oRGF0YUNoYXJhY3Rlcl8xLmRlZmF1bHQpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IFBhaXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1QYWlyLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG52YXIgX192YWx1ZXMgPSAodGhpcyAmJiB0aGlzLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7XG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgQWJzdHJhY3RSU1NSZWFkZXJfMSA9IHJlcXVpcmUoXCIuL0Fic3RyYWN0UlNTUmVhZGVyXCIpO1xudmFyIFBhaXJfMSA9IHJlcXVpcmUoXCIuL1BhaXJcIik7XG52YXIgUmVzdWx0XzEgPSByZXF1aXJlKFwiLi4vLi4vUmVzdWx0XCIpO1xudmFyIERlY29kZUhpbnRUeXBlXzEgPSByZXF1aXJlKFwiLi4vLi4vRGVjb2RlSGludFR5cGVcIik7XG52YXIgTm90Rm91bmRFeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuLi8uLi9Ob3RGb3VuZEV4Y2VwdGlvblwiKTtcbnZhciBTdHJpbmdCdWlsZGVyXzEgPSByZXF1aXJlKFwiLi4vLi4vdXRpbC9TdHJpbmdCdWlsZGVyXCIpO1xudmFyIEJhcmNvZGVGb3JtYXRfMSA9IHJlcXVpcmUoXCIuLi8uLi9CYXJjb2RlRm9ybWF0XCIpO1xudmFyIFJlc3VsdFBvaW50XzEgPSByZXF1aXJlKFwiLi4vLi4vUmVzdWx0UG9pbnRcIik7XG52YXIgRmluZGVyUGF0dGVybl8xID0gcmVxdWlyZShcIi4vRmluZGVyUGF0dGVyblwiKTtcbnZhciBEYXRhQ2hhcmFjdGVyXzEgPSByZXF1aXJlKFwiLi9EYXRhQ2hhcmFjdGVyXCIpO1xudmFyIE1hdGhVdGlsc18xID0gcmVxdWlyZShcIi4uLy4uL2NvbW1vbi9kZXRlY3Rvci9NYXRoVXRpbHNcIik7XG52YXIgUlNTVXRpbHNfMSA9IHJlcXVpcmUoXCIuL1JTU1V0aWxzXCIpO1xudmFyIFN5c3RlbV8xID0gcmVxdWlyZShcIi4uLy4uL3V0aWwvU3lzdGVtXCIpO1xudmFyIE9uZURSZWFkZXJfMSA9IHJlcXVpcmUoXCIuLi9PbmVEUmVhZGVyXCIpO1xudmFyIFJTUzE0UmVhZGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhSU1MxNFJlYWRlciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBSU1MxNFJlYWRlcigpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLnBvc3NpYmxlTGVmdFBhaXJzID0gW107XG4gICAgICAgIF90aGlzLnBvc3NpYmxlUmlnaHRQYWlycyA9IFtdO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIFJTUzE0UmVhZGVyLnByb3RvdHlwZS5kZWNvZGVSb3cgPSBmdW5jdGlvbiAocm93TnVtYmVyLCByb3csIGhpbnRzKSB7XG4gICAgICAgIHZhciBlXzEsIF9hLCBlXzIsIF9iO1xuICAgICAgICB2YXIgbGVmdFBhaXIgPSB0aGlzLmRlY29kZVBhaXIocm93LCBmYWxzZSwgcm93TnVtYmVyLCBoaW50cyk7XG4gICAgICAgIFJTUzE0UmVhZGVyLmFkZE9yVGFsbHkodGhpcy5wb3NzaWJsZUxlZnRQYWlycywgbGVmdFBhaXIpO1xuICAgICAgICByb3cucmV2ZXJzZSgpO1xuICAgICAgICB2YXIgcmlnaHRQYWlyID0gdGhpcy5kZWNvZGVQYWlyKHJvdywgdHJ1ZSwgcm93TnVtYmVyLCBoaW50cyk7XG4gICAgICAgIFJTUzE0UmVhZGVyLmFkZE9yVGFsbHkodGhpcy5wb3NzaWJsZVJpZ2h0UGFpcnMsIHJpZ2h0UGFpcik7XG4gICAgICAgIHJvdy5yZXZlcnNlKCk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKHZhciBfYyA9IF9fdmFsdWVzKHRoaXMucG9zc2libGVMZWZ0UGFpcnMpLCBfZCA9IF9jLm5leHQoKTsgIV9kLmRvbmU7IF9kID0gX2MubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIGxlZnQgPSBfZC52YWx1ZTtcbiAgICAgICAgICAgICAgICBpZiAobGVmdC5nZXRDb3VudCgpID4gMSkge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgX2UgPSAoZV8yID0gdm9pZCAwLCBfX3ZhbHVlcyh0aGlzLnBvc3NpYmxlUmlnaHRQYWlycykpLCBfZiA9IF9lLm5leHQoKTsgIV9mLmRvbmU7IF9mID0gX2UubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJpZ2h0ID0gX2YudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJpZ2h0LmdldENvdW50KCkgPiAxICYmIFJTUzE0UmVhZGVyLmNoZWNrQ2hlY2tzdW0obGVmdCwgcmlnaHQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSU1MxNFJlYWRlci5jb25zdHJ1Y3RSZXN1bHQobGVmdCwgcmlnaHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZV8yXzEpIHsgZV8yID0geyBlcnJvcjogZV8yXzEgfTsgfVxuICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9mICYmICFfZi5kb25lICYmIChfYiA9IF9lLnJldHVybikpIF9iLmNhbGwoX2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzIpIHRocm93IGVfMi5lcnJvcjsgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoX2QgJiYgIV9kLmRvbmUgJiYgKF9hID0gX2MucmV0dXJuKSkgX2EuY2FsbChfYyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgIH07XG4gICAgUlNTMTRSZWFkZXIuYWRkT3JUYWxseSA9IGZ1bmN0aW9uIChwb3NzaWJsZVBhaXJzLCBwYWlyKSB7XG4gICAgICAgIHZhciBlXzMsIF9hO1xuICAgICAgICBpZiAocGFpciA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGZvdW5kID0gZmFsc2U7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKHZhciBwb3NzaWJsZVBhaXJzXzEgPSBfX3ZhbHVlcyhwb3NzaWJsZVBhaXJzKSwgcG9zc2libGVQYWlyc18xXzEgPSBwb3NzaWJsZVBhaXJzXzEubmV4dCgpOyAhcG9zc2libGVQYWlyc18xXzEuZG9uZTsgcG9zc2libGVQYWlyc18xXzEgPSBwb3NzaWJsZVBhaXJzXzEubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIG90aGVyID0gcG9zc2libGVQYWlyc18xXzEudmFsdWU7XG4gICAgICAgICAgICAgICAgaWYgKG90aGVyLmdldFZhbHVlKCkgPT09IHBhaXIuZ2V0VmFsdWUoKSkge1xuICAgICAgICAgICAgICAgICAgICBvdGhlci5pbmNyZW1lbnRDb3VudCgpO1xuICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZV8zXzEpIHsgZV8zID0geyBlcnJvcjogZV8zXzEgfTsgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKHBvc3NpYmxlUGFpcnNfMV8xICYmICFwb3NzaWJsZVBhaXJzXzFfMS5kb25lICYmIChfYSA9IHBvc3NpYmxlUGFpcnNfMS5yZXR1cm4pKSBfYS5jYWxsKHBvc3NpYmxlUGFpcnNfMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMykgdGhyb3cgZV8zLmVycm9yOyB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFmb3VuZCkge1xuICAgICAgICAgICAgcG9zc2libGVQYWlycy5wdXNoKHBhaXIpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBSU1MxNFJlYWRlci5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucG9zc2libGVMZWZ0UGFpcnMubGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy5wb3NzaWJsZVJpZ2h0UGFpcnMubGVuZ3RoID0gMDtcbiAgICB9O1xuICAgIFJTUzE0UmVhZGVyLmNvbnN0cnVjdFJlc3VsdCA9IGZ1bmN0aW9uIChsZWZ0UGFpciwgcmlnaHRQYWlyKSB7XG4gICAgICAgIHZhciBzeW1ib2xWYWx1ZSA9IDQ1MzcwNzcgKiBsZWZ0UGFpci5nZXRWYWx1ZSgpICsgcmlnaHRQYWlyLmdldFZhbHVlKCk7XG4gICAgICAgIHZhciB0ZXh0ID0gbmV3IFN0cmluZyhzeW1ib2xWYWx1ZSkudG9TdHJpbmcoKTtcbiAgICAgICAgdmFyIGJ1ZmZlciA9IG5ldyBTdHJpbmdCdWlsZGVyXzEuZGVmYXVsdCgpO1xuICAgICAgICBmb3IgKHZhciBpID0gMTMgLSB0ZXh0Lmxlbmd0aDsgaSA+IDA7IGktLSkge1xuICAgICAgICAgICAgYnVmZmVyLmFwcGVuZCgnMCcpO1xuICAgICAgICB9XG4gICAgICAgIGJ1ZmZlci5hcHBlbmQodGV4dCk7XG4gICAgICAgIHZhciBjaGVja0RpZ2l0ID0gMDtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMzsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgZGlnaXQgPSBidWZmZXIuY2hhckF0KGkpLmNoYXJDb2RlQXQoMCkgLSAnMCcuY2hhckNvZGVBdCgwKTtcbiAgICAgICAgICAgIGNoZWNrRGlnaXQgKz0gKChpICYgMHgwMSkgPT09IDApID8gMyAqIGRpZ2l0IDogZGlnaXQ7XG4gICAgICAgIH1cbiAgICAgICAgY2hlY2tEaWdpdCA9IDEwIC0gKGNoZWNrRGlnaXQgJSAxMCk7XG4gICAgICAgIGlmIChjaGVja0RpZ2l0ID09PSAxMCkge1xuICAgICAgICAgICAgY2hlY2tEaWdpdCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgYnVmZmVyLmFwcGVuZChjaGVja0RpZ2l0LnRvU3RyaW5nKCkpO1xuICAgICAgICB2YXIgbGVmdFBvaW50cyA9IGxlZnRQYWlyLmdldEZpbmRlclBhdHRlcm4oKS5nZXRSZXN1bHRQb2ludHMoKTtcbiAgICAgICAgdmFyIHJpZ2h0UG9pbnRzID0gcmlnaHRQYWlyLmdldEZpbmRlclBhdHRlcm4oKS5nZXRSZXN1bHRQb2ludHMoKTtcbiAgICAgICAgcmV0dXJuIG5ldyBSZXN1bHRfMS5kZWZhdWx0KGJ1ZmZlci50b1N0cmluZygpLCBudWxsLCAwLCBbbGVmdFBvaW50c1swXSwgbGVmdFBvaW50c1sxXSwgcmlnaHRQb2ludHNbMF0sIHJpZ2h0UG9pbnRzWzFdXSwgQmFyY29kZUZvcm1hdF8xLmRlZmF1bHQuUlNTXzE0LCBuZXcgRGF0ZSgpLmdldFRpbWUoKSk7XG4gICAgfTtcbiAgICBSU1MxNFJlYWRlci5jaGVja0NoZWNrc3VtID0gZnVuY3Rpb24gKGxlZnRQYWlyLCByaWdodFBhaXIpIHtcbiAgICAgICAgdmFyIGNoZWNrVmFsdWUgPSAobGVmdFBhaXIuZ2V0Q2hlY2tzdW1Qb3J0aW9uKCkgKyAxNiAqIHJpZ2h0UGFpci5nZXRDaGVja3N1bVBvcnRpb24oKSkgJSA3OTtcbiAgICAgICAgdmFyIHRhcmdldENoZWNrVmFsdWUgPSA5ICogbGVmdFBhaXIuZ2V0RmluZGVyUGF0dGVybigpLmdldFZhbHVlKCkgKyByaWdodFBhaXIuZ2V0RmluZGVyUGF0dGVybigpLmdldFZhbHVlKCk7XG4gICAgICAgIGlmICh0YXJnZXRDaGVja1ZhbHVlID4gNzIpIHtcbiAgICAgICAgICAgIHRhcmdldENoZWNrVmFsdWUtLTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGFyZ2V0Q2hlY2tWYWx1ZSA+IDgpIHtcbiAgICAgICAgICAgIHRhcmdldENoZWNrVmFsdWUtLTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2hlY2tWYWx1ZSA9PT0gdGFyZ2V0Q2hlY2tWYWx1ZTtcbiAgICB9O1xuICAgIFJTUzE0UmVhZGVyLnByb3RvdHlwZS5kZWNvZGVQYWlyID0gZnVuY3Rpb24gKHJvdywgcmlnaHQsIHJvd051bWJlciwgaGludHMpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHZhciBzdGFydEVuZCA9IHRoaXMuZmluZEZpbmRlclBhdHRlcm4ocm93LCByaWdodCk7XG4gICAgICAgICAgICB2YXIgcGF0dGVybiA9IHRoaXMucGFyc2VGb3VuZEZpbmRlclBhdHRlcm4ocm93LCByb3dOdW1iZXIsIHJpZ2h0LCBzdGFydEVuZCk7XG4gICAgICAgICAgICB2YXIgcmVzdWx0UG9pbnRDYWxsYmFjayA9IGhpbnRzID09IG51bGwgPyBudWxsIDogaGludHMuZ2V0KERlY29kZUhpbnRUeXBlXzEuZGVmYXVsdC5ORUVEX1JFU1VMVF9QT0lOVF9DQUxMQkFDSyk7XG4gICAgICAgICAgICBpZiAocmVzdWx0UG9pbnRDYWxsYmFjayAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNlbnRlciA9IChzdGFydEVuZFswXSArIHN0YXJ0RW5kWzFdKSAvIDIuMDtcbiAgICAgICAgICAgICAgICBpZiAocmlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gcm93IGlzIGFjdHVhbGx5IHJldmVyc2VkXG4gICAgICAgICAgICAgICAgICAgIGNlbnRlciA9IHJvdy5nZXRTaXplKCkgLSAxIC0gY2VudGVyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXN1bHRQb2ludENhbGxiYWNrLmZvdW5kUG9zc2libGVSZXN1bHRQb2ludChuZXcgUmVzdWx0UG9pbnRfMS5kZWZhdWx0KGNlbnRlciwgcm93TnVtYmVyKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgb3V0c2lkZSA9IHRoaXMuZGVjb2RlRGF0YUNoYXJhY3Rlcihyb3csIHBhdHRlcm4sIHRydWUpO1xuICAgICAgICAgICAgdmFyIGluc2lkZSA9IHRoaXMuZGVjb2RlRGF0YUNoYXJhY3Rlcihyb3csIHBhdHRlcm4sIGZhbHNlKTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUGFpcl8xLmRlZmF1bHQoMTU5NyAqIG91dHNpZGUuZ2V0VmFsdWUoKSArIGluc2lkZS5nZXRWYWx1ZSgpLCBvdXRzaWRlLmdldENoZWNrc3VtUG9ydGlvbigpICsgNCAqIGluc2lkZS5nZXRDaGVja3N1bVBvcnRpb24oKSwgcGF0dGVybik7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFJTUzE0UmVhZGVyLnByb3RvdHlwZS5kZWNvZGVEYXRhQ2hhcmFjdGVyID0gZnVuY3Rpb24gKHJvdywgcGF0dGVybiwgb3V0c2lkZUNoYXIpIHtcbiAgICAgICAgdmFyIGNvdW50ZXJzID0gdGhpcy5nZXREYXRhQ2hhcmFjdGVyQ291bnRlcnMoKTtcbiAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCBjb3VudGVycy5sZW5ndGg7IHgrKykge1xuICAgICAgICAgICAgY291bnRlcnNbeF0gPSAwO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvdXRzaWRlQ2hhcikge1xuICAgICAgICAgICAgT25lRFJlYWRlcl8xLmRlZmF1bHQucmVjb3JkUGF0dGVybkluUmV2ZXJzZShyb3csIHBhdHRlcm4uZ2V0U3RhcnRFbmQoKVswXSwgY291bnRlcnMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgT25lRFJlYWRlcl8xLmRlZmF1bHQucmVjb3JkUGF0dGVybihyb3csIHBhdHRlcm4uZ2V0U3RhcnRFbmQoKVsxXSArIDEsIGNvdW50ZXJzKTtcbiAgICAgICAgICAgIC8vIHJldmVyc2UgaXRcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBqID0gY291bnRlcnMubGVuZ3RoIC0gMTsgaSA8IGo7IGkrKywgai0tKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRlbXAgPSBjb3VudGVyc1tpXTtcbiAgICAgICAgICAgICAgICBjb3VudGVyc1tpXSA9IGNvdW50ZXJzW2pdO1xuICAgICAgICAgICAgICAgIGNvdW50ZXJzW2pdID0gdGVtcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgbnVtTW9kdWxlcyA9IG91dHNpZGVDaGFyID8gMTYgOiAxNTtcbiAgICAgICAgdmFyIGVsZW1lbnRXaWR0aCA9IE1hdGhVdGlsc18xLmRlZmF1bHQuc3VtKG5ldyBJbnQzMkFycmF5KGNvdW50ZXJzKSkgLyBudW1Nb2R1bGVzO1xuICAgICAgICB2YXIgb2RkQ291bnRzID0gdGhpcy5nZXRPZGRDb3VudHMoKTtcbiAgICAgICAgdmFyIGV2ZW5Db3VudHMgPSB0aGlzLmdldEV2ZW5Db3VudHMoKTtcbiAgICAgICAgdmFyIG9kZFJvdW5kaW5nRXJyb3JzID0gdGhpcy5nZXRPZGRSb3VuZGluZ0Vycm9ycygpO1xuICAgICAgICB2YXIgZXZlblJvdW5kaW5nRXJyb3JzID0gdGhpcy5nZXRFdmVuUm91bmRpbmdFcnJvcnMoKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudGVycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIHZhbHVlID0gY291bnRlcnNbaV0gLyBlbGVtZW50V2lkdGg7XG4gICAgICAgICAgICB2YXIgY291bnQgPSBNYXRoLmZsb29yKHZhbHVlICsgMC41KTtcbiAgICAgICAgICAgIGlmIChjb3VudCA8IDEpIHtcbiAgICAgICAgICAgICAgICBjb3VudCA9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjb3VudCA+IDgpIHtcbiAgICAgICAgICAgICAgICBjb3VudCA9IDg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgb2Zmc2V0ID0gTWF0aC5mbG9vcihpIC8gMik7XG4gICAgICAgICAgICBpZiAoKGkgJiAweDAxKSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIG9kZENvdW50c1tvZmZzZXRdID0gY291bnQ7XG4gICAgICAgICAgICAgICAgb2RkUm91bmRpbmdFcnJvcnNbb2Zmc2V0XSA9IHZhbHVlIC0gY291bnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBldmVuQ291bnRzW29mZnNldF0gPSBjb3VudDtcbiAgICAgICAgICAgICAgICBldmVuUm91bmRpbmdFcnJvcnNbb2Zmc2V0XSA9IHZhbHVlIC0gY291bnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hZGp1c3RPZGRFdmVuQ291bnRzKG91dHNpZGVDaGFyLCBudW1Nb2R1bGVzKTtcbiAgICAgICAgdmFyIG9kZFN1bSA9IDA7XG4gICAgICAgIHZhciBvZGRDaGVja3N1bVBvcnRpb24gPSAwO1xuICAgICAgICBmb3IgKHZhciBpID0gb2RkQ291bnRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBvZGRDaGVja3N1bVBvcnRpb24gKj0gOTtcbiAgICAgICAgICAgIG9kZENoZWNrc3VtUG9ydGlvbiArPSBvZGRDb3VudHNbaV07XG4gICAgICAgICAgICBvZGRTdW0gKz0gb2RkQ291bnRzW2ldO1xuICAgICAgICB9XG4gICAgICAgIHZhciBldmVuQ2hlY2tzdW1Qb3J0aW9uID0gMDtcbiAgICAgICAgdmFyIGV2ZW5TdW0gPSAwO1xuICAgICAgICBmb3IgKHZhciBpID0gZXZlbkNvdW50cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgZXZlbkNoZWNrc3VtUG9ydGlvbiAqPSA5O1xuICAgICAgICAgICAgZXZlbkNoZWNrc3VtUG9ydGlvbiArPSBldmVuQ291bnRzW2ldO1xuICAgICAgICAgICAgZXZlblN1bSArPSBldmVuQ291bnRzW2ldO1xuICAgICAgICB9XG4gICAgICAgIHZhciBjaGVja3N1bVBvcnRpb24gPSBvZGRDaGVja3N1bVBvcnRpb24gKyAzICogZXZlbkNoZWNrc3VtUG9ydGlvbjtcbiAgICAgICAgaWYgKG91dHNpZGVDaGFyKSB7XG4gICAgICAgICAgICBpZiAoKG9kZFN1bSAmIDB4MDEpICE9PSAwIHx8IG9kZFN1bSA+IDEyIHx8IG9kZFN1bSA8IDQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgZ3JvdXAgPSAoMTIgLSBvZGRTdW0pIC8gMjtcbiAgICAgICAgICAgIHZhciBvZGRXaWRlc3QgPSBSU1MxNFJlYWRlci5PVVRTSURFX09ERF9XSURFU1RbZ3JvdXBdO1xuICAgICAgICAgICAgdmFyIGV2ZW5XaWRlc3QgPSA5IC0gb2RkV2lkZXN0O1xuICAgICAgICAgICAgdmFyIHZPZGQgPSBSU1NVdGlsc18xLmRlZmF1bHQuZ2V0UlNTdmFsdWUob2RkQ291bnRzLCBvZGRXaWRlc3QsIGZhbHNlKTtcbiAgICAgICAgICAgIHZhciB2RXZlbiA9IFJTU1V0aWxzXzEuZGVmYXVsdC5nZXRSU1N2YWx1ZShldmVuQ291bnRzLCBldmVuV2lkZXN0LCB0cnVlKTtcbiAgICAgICAgICAgIHZhciB0RXZlbiA9IFJTUzE0UmVhZGVyLk9VVFNJREVfRVZFTl9UT1RBTF9TVUJTRVRbZ3JvdXBdO1xuICAgICAgICAgICAgdmFyIGdTdW0gPSBSU1MxNFJlYWRlci5PVVRTSURFX0dTVU1bZ3JvdXBdO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRhQ2hhcmFjdGVyXzEuZGVmYXVsdCh2T2RkICogdEV2ZW4gKyB2RXZlbiArIGdTdW0sIGNoZWNrc3VtUG9ydGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoKGV2ZW5TdW0gJiAweDAxKSAhPT0gMCB8fCBldmVuU3VtID4gMTAgfHwgZXZlblN1bSA8IDQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgZ3JvdXAgPSAoMTAgLSBldmVuU3VtKSAvIDI7XG4gICAgICAgICAgICB2YXIgb2RkV2lkZXN0ID0gUlNTMTRSZWFkZXIuSU5TSURFX09ERF9XSURFU1RbZ3JvdXBdO1xuICAgICAgICAgICAgdmFyIGV2ZW5XaWRlc3QgPSA5IC0gb2RkV2lkZXN0O1xuICAgICAgICAgICAgdmFyIHZPZGQgPSBSU1NVdGlsc18xLmRlZmF1bHQuZ2V0UlNTdmFsdWUob2RkQ291bnRzLCBvZGRXaWRlc3QsIHRydWUpO1xuICAgICAgICAgICAgdmFyIHZFdmVuID0gUlNTVXRpbHNfMS5kZWZhdWx0LmdldFJTU3ZhbHVlKGV2ZW5Db3VudHMsIGV2ZW5XaWRlc3QsIGZhbHNlKTtcbiAgICAgICAgICAgIHZhciB0T2RkID0gUlNTMTRSZWFkZXIuSU5TSURFX09ERF9UT1RBTF9TVUJTRVRbZ3JvdXBdO1xuICAgICAgICAgICAgdmFyIGdTdW0gPSBSU1MxNFJlYWRlci5JTlNJREVfR1NVTVtncm91cF07XG4gICAgICAgICAgICByZXR1cm4gbmV3IERhdGFDaGFyYWN0ZXJfMS5kZWZhdWx0KHZFdmVuICogdE9kZCArIHZPZGQgKyBnU3VtLCBjaGVja3N1bVBvcnRpb24pO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBSU1MxNFJlYWRlci5wcm90b3R5cGUuZmluZEZpbmRlclBhdHRlcm4gPSBmdW5jdGlvbiAocm93LCByaWdodEZpbmRlclBhdHRlcm4pIHtcbiAgICAgICAgdmFyIGNvdW50ZXJzID0gdGhpcy5nZXREZWNvZGVGaW5kZXJDb3VudGVycygpO1xuICAgICAgICBjb3VudGVyc1swXSA9IDA7XG4gICAgICAgIGNvdW50ZXJzWzFdID0gMDtcbiAgICAgICAgY291bnRlcnNbMl0gPSAwO1xuICAgICAgICBjb3VudGVyc1szXSA9IDA7XG4gICAgICAgIHZhciB3aWR0aCA9IHJvdy5nZXRTaXplKCk7XG4gICAgICAgIHZhciBpc1doaXRlID0gZmFsc2U7XG4gICAgICAgIHZhciByb3dPZmZzZXQgPSAwO1xuICAgICAgICB3aGlsZSAocm93T2Zmc2V0IDwgd2lkdGgpIHtcbiAgICAgICAgICAgIGlzV2hpdGUgPSAhcm93LmdldChyb3dPZmZzZXQpO1xuICAgICAgICAgICAgaWYgKHJpZ2h0RmluZGVyUGF0dGVybiA9PT0gaXNXaGl0ZSkge1xuICAgICAgICAgICAgICAgIC8vIFdpbGwgZW5jb3VudGVyIHdoaXRlIGZpcnN0IHdoZW4gc2VhcmNoaW5nIGZvciByaWdodCBmaW5kZXIgcGF0dGVyblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcm93T2Zmc2V0Kys7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGNvdW50ZXJQb3NpdGlvbiA9IDA7XG4gICAgICAgIHZhciBwYXR0ZXJuU3RhcnQgPSByb3dPZmZzZXQ7XG4gICAgICAgIGZvciAodmFyIHggPSByb3dPZmZzZXQ7IHggPCB3aWR0aDsgeCsrKSB7XG4gICAgICAgICAgICBpZiAocm93LmdldCh4KSAhPT0gaXNXaGl0ZSkge1xuICAgICAgICAgICAgICAgIGNvdW50ZXJzW2NvdW50ZXJQb3NpdGlvbl0rKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChjb3VudGVyUG9zaXRpb24gPT09IDMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKEFic3RyYWN0UlNTUmVhZGVyXzEuZGVmYXVsdC5pc0ZpbmRlclBhdHRlcm4oY291bnRlcnMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW3BhdHRlcm5TdGFydCwgeF07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcGF0dGVyblN0YXJ0ICs9IGNvdW50ZXJzWzBdICsgY291bnRlcnNbMV07XG4gICAgICAgICAgICAgICAgICAgIGNvdW50ZXJzWzBdID0gY291bnRlcnNbMl07XG4gICAgICAgICAgICAgICAgICAgIGNvdW50ZXJzWzFdID0gY291bnRlcnNbM107XG4gICAgICAgICAgICAgICAgICAgIGNvdW50ZXJzWzJdID0gMDtcbiAgICAgICAgICAgICAgICAgICAgY291bnRlcnNbM10gPSAwO1xuICAgICAgICAgICAgICAgICAgICBjb3VudGVyUG9zaXRpb24tLTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50ZXJQb3NpdGlvbisrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb3VudGVyc1tjb3VudGVyUG9zaXRpb25dID0gMTtcbiAgICAgICAgICAgICAgICBpc1doaXRlID0gIWlzV2hpdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgIH07XG4gICAgUlNTMTRSZWFkZXIucHJvdG90eXBlLnBhcnNlRm91bmRGaW5kZXJQYXR0ZXJuID0gZnVuY3Rpb24gKHJvdywgcm93TnVtYmVyLCByaWdodCwgc3RhcnRFbmQpIHtcbiAgICAgICAgLy8gQWN0dWFsbHkgd2UgZm91bmQgZWxlbWVudHMgMi01XG4gICAgICAgIHZhciBmaXJzdElzQmxhY2sgPSByb3cuZ2V0KHN0YXJ0RW5kWzBdKTtcbiAgICAgICAgdmFyIGZpcnN0RWxlbWVudFN0YXJ0ID0gc3RhcnRFbmRbMF0gLSAxO1xuICAgICAgICAvLyBMb2NhdGUgZWxlbWVudCAxXG4gICAgICAgIHdoaWxlIChmaXJzdEVsZW1lbnRTdGFydCA+PSAwICYmIGZpcnN0SXNCbGFjayAhPT0gcm93LmdldChmaXJzdEVsZW1lbnRTdGFydCkpIHtcbiAgICAgICAgICAgIGZpcnN0RWxlbWVudFN0YXJ0LS07XG4gICAgICAgIH1cbiAgICAgICAgZmlyc3RFbGVtZW50U3RhcnQrKztcbiAgICAgICAgdmFyIGZpcnN0Q291bnRlciA9IHN0YXJ0RW5kWzBdIC0gZmlyc3RFbGVtZW50U3RhcnQ7XG4gICAgICAgIC8vIE1ha2UgJ2NvdW50ZXJzJyBob2xkIDEtNFxuICAgICAgICB2YXIgY291bnRlcnMgPSB0aGlzLmdldERlY29kZUZpbmRlckNvdW50ZXJzKCk7XG4gICAgICAgIHZhciBjb3B5ID0gbmV3IEludDMyQXJyYXkoY291bnRlcnMubGVuZ3RoKTtcbiAgICAgICAgU3lzdGVtXzEuZGVmYXVsdC5hcnJheWNvcHkoY291bnRlcnMsIDAsIGNvcHksIDEsIGNvdW50ZXJzLmxlbmd0aCAtIDEpO1xuICAgICAgICBjb3B5WzBdID0gZmlyc3RDb3VudGVyO1xuICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLnBhcnNlRmluZGVyVmFsdWUoY29weSwgUlNTMTRSZWFkZXIuRklOREVSX1BBVFRFUk5TKTtcbiAgICAgICAgdmFyIHN0YXJ0ID0gZmlyc3RFbGVtZW50U3RhcnQ7XG4gICAgICAgIHZhciBlbmQgPSBzdGFydEVuZFsxXTtcbiAgICAgICAgaWYgKHJpZ2h0KSB7XG4gICAgICAgICAgICAvLyByb3cgaXMgYWN0dWFsbHkgcmV2ZXJzZWRcbiAgICAgICAgICAgIHN0YXJ0ID0gcm93LmdldFNpemUoKSAtIDEgLSBzdGFydDtcbiAgICAgICAgICAgIGVuZCA9IHJvdy5nZXRTaXplKCkgLSAxIC0gZW5kO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgRmluZGVyUGF0dGVybl8xLmRlZmF1bHQodmFsdWUsIFtmaXJzdEVsZW1lbnRTdGFydCwgc3RhcnRFbmRbMV1dLCBzdGFydCwgZW5kLCByb3dOdW1iZXIpO1xuICAgIH07XG4gICAgUlNTMTRSZWFkZXIucHJvdG90eXBlLmFkanVzdE9kZEV2ZW5Db3VudHMgPSBmdW5jdGlvbiAob3V0c2lkZUNoYXIsIG51bU1vZHVsZXMpIHtcbiAgICAgICAgdmFyIG9kZFN1bSA9IE1hdGhVdGlsc18xLmRlZmF1bHQuc3VtKG5ldyBJbnQzMkFycmF5KHRoaXMuZ2V0T2RkQ291bnRzKCkpKTtcbiAgICAgICAgdmFyIGV2ZW5TdW0gPSBNYXRoVXRpbHNfMS5kZWZhdWx0LnN1bShuZXcgSW50MzJBcnJheSh0aGlzLmdldEV2ZW5Db3VudHMoKSkpO1xuICAgICAgICB2YXIgaW5jcmVtZW50T2RkID0gZmFsc2U7XG4gICAgICAgIHZhciBkZWNyZW1lbnRPZGQgPSBmYWxzZTtcbiAgICAgICAgdmFyIGluY3JlbWVudEV2ZW4gPSBmYWxzZTtcbiAgICAgICAgdmFyIGRlY3JlbWVudEV2ZW4gPSBmYWxzZTtcbiAgICAgICAgaWYgKG91dHNpZGVDaGFyKSB7XG4gICAgICAgICAgICBpZiAob2RkU3VtID4gMTIpIHtcbiAgICAgICAgICAgICAgICBkZWNyZW1lbnRPZGQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAob2RkU3VtIDwgNCkge1xuICAgICAgICAgICAgICAgIGluY3JlbWVudE9kZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXZlblN1bSA+IDEyKSB7XG4gICAgICAgICAgICAgICAgZGVjcmVtZW50RXZlbiA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChldmVuU3VtIDwgNCkge1xuICAgICAgICAgICAgICAgIGluY3JlbWVudEV2ZW4gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKG9kZFN1bSA+IDExKSB7XG4gICAgICAgICAgICAgICAgZGVjcmVtZW50T2RkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKG9kZFN1bSA8IDUpIHtcbiAgICAgICAgICAgICAgICBpbmNyZW1lbnRPZGQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGV2ZW5TdW0gPiAxMCkge1xuICAgICAgICAgICAgICAgIGRlY3JlbWVudEV2ZW4gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoZXZlblN1bSA8IDQpIHtcbiAgICAgICAgICAgICAgICBpbmNyZW1lbnRFdmVuID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgbWlzbWF0Y2ggPSBvZGRTdW0gKyBldmVuU3VtIC0gbnVtTW9kdWxlcztcbiAgICAgICAgdmFyIG9kZFBhcml0eUJhZCA9IChvZGRTdW0gJiAweDAxKSA9PT0gKG91dHNpZGVDaGFyID8gMSA6IDApO1xuICAgICAgICB2YXIgZXZlblBhcml0eUJhZCA9IChldmVuU3VtICYgMHgwMSkgPT09IDE7XG4gICAgICAgIGlmIChtaXNtYXRjaCA9PT0gMSkge1xuICAgICAgICAgICAgaWYgKG9kZFBhcml0eUJhZCkge1xuICAgICAgICAgICAgICAgIGlmIChldmVuUGFyaXR5QmFkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGVjcmVtZW50T2RkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICghZXZlblBhcml0eUJhZCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRlY3JlbWVudEV2ZW4gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG1pc21hdGNoID09PSAtMSkge1xuICAgICAgICAgICAgaWYgKG9kZFBhcml0eUJhZCkge1xuICAgICAgICAgICAgICAgIGlmIChldmVuUGFyaXR5QmFkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaW5jcmVtZW50T2RkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICghZXZlblBhcml0eUJhZCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGluY3JlbWVudEV2ZW4gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG1pc21hdGNoID09PSAwKSB7XG4gICAgICAgICAgICBpZiAob2RkUGFyaXR5QmFkKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFldmVuUGFyaXR5QmFkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gQm90aCBiYWRcbiAgICAgICAgICAgICAgICBpZiAob2RkU3VtIDwgZXZlblN1bSkge1xuICAgICAgICAgICAgICAgICAgICBpbmNyZW1lbnRPZGQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBkZWNyZW1lbnRFdmVuID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGRlY3JlbWVudE9kZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGluY3JlbWVudEV2ZW4gPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChldmVuUGFyaXR5QmFkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gTm90aGluZyB0byBkbyFcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5jcmVtZW50T2RkKSB7XG4gICAgICAgICAgICBpZiAoZGVjcmVtZW50T2RkKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQWJzdHJhY3RSU1NSZWFkZXJfMS5kZWZhdWx0LmluY3JlbWVudCh0aGlzLmdldE9kZENvdW50cygpLCB0aGlzLmdldE9kZFJvdW5kaW5nRXJyb3JzKCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkZWNyZW1lbnRPZGQpIHtcbiAgICAgICAgICAgIEFic3RyYWN0UlNTUmVhZGVyXzEuZGVmYXVsdC5kZWNyZW1lbnQodGhpcy5nZXRPZGRDb3VudHMoKSwgdGhpcy5nZXRPZGRSb3VuZGluZ0Vycm9ycygpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5jcmVtZW50RXZlbikge1xuICAgICAgICAgICAgaWYgKGRlY3JlbWVudEV2ZW4pIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBBYnN0cmFjdFJTU1JlYWRlcl8xLmRlZmF1bHQuaW5jcmVtZW50KHRoaXMuZ2V0RXZlbkNvdW50cygpLCB0aGlzLmdldE9kZFJvdW5kaW5nRXJyb3JzKCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkZWNyZW1lbnRFdmVuKSB7XG4gICAgICAgICAgICBBYnN0cmFjdFJTU1JlYWRlcl8xLmRlZmF1bHQuZGVjcmVtZW50KHRoaXMuZ2V0RXZlbkNvdW50cygpLCB0aGlzLmdldEV2ZW5Sb3VuZGluZ0Vycm9ycygpKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgUlNTMTRSZWFkZXIuT1VUU0lERV9FVkVOX1RPVEFMX1NVQlNFVCA9IFsxLCAxMCwgMzQsIDcwLCAxMjZdO1xuICAgIFJTUzE0UmVhZGVyLklOU0lERV9PRERfVE9UQUxfU1VCU0VUID0gWzQsIDIwLCA0OCwgODFdO1xuICAgIFJTUzE0UmVhZGVyLk9VVFNJREVfR1NVTSA9IFswLCAxNjEsIDk2MSwgMjAxNSwgMjcxNV07XG4gICAgUlNTMTRSZWFkZXIuSU5TSURFX0dTVU0gPSBbMCwgMzM2LCAxMDM2LCAxNTE2XTtcbiAgICBSU1MxNFJlYWRlci5PVVRTSURFX09ERF9XSURFU1QgPSBbOCwgNiwgNCwgMywgMV07XG4gICAgUlNTMTRSZWFkZXIuSU5TSURFX09ERF9XSURFU1QgPSBbMiwgNCwgNiwgOF07XG4gICAgUlNTMTRSZWFkZXIuRklOREVSX1BBVFRFUk5TID0gW1xuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzMsIDgsIDIsIDFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFszLCA1LCA1LCAxXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMywgMywgNywgMV0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzMsIDEsIDksIDFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFsyLCA3LCA0LCAxXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMiwgNSwgNiwgMV0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzIsIDMsIDgsIDFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCA1LCA3LCAxXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMywgOSwgMV0pLFxuICAgIF07XG4gICAgcmV0dXJuIFJTUzE0UmVhZGVyO1xufShBYnN0cmFjdFJTU1JlYWRlcl8xLmRlZmF1bHQpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IFJTUzE0UmVhZGVyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UlNTMTRSZWFkZXIuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IDIwMDggWlhpbmcgYXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLypuYW1lc3BhY2UgY29tLmdvb2dsZS56eGluZy5vbmVkIHsqL1xudmFyIEJhcmNvZGVGb3JtYXRfMSA9IHJlcXVpcmUoXCIuLi9CYXJjb2RlRm9ybWF0XCIpO1xudmFyIERlY29kZUhpbnRUeXBlXzEgPSByZXF1aXJlKFwiLi4vRGVjb2RlSGludFR5cGVcIik7XG52YXIgTm90Rm91bmRFeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuLi9Ob3RGb3VuZEV4Y2VwdGlvblwiKTtcbnZhciBDb2RlMTI4UmVhZGVyXzEgPSByZXF1aXJlKFwiLi9Db2RlMTI4UmVhZGVyXCIpO1xudmFyIENvZGUzOVJlYWRlcl8xID0gcmVxdWlyZShcIi4vQ29kZTM5UmVhZGVyXCIpO1xudmFyIElURlJlYWRlcl8xID0gcmVxdWlyZShcIi4vSVRGUmVhZGVyXCIpO1xudmFyIE11bHRpRm9ybWF0VVBDRUFOUmVhZGVyXzEgPSByZXF1aXJlKFwiLi9NdWx0aUZvcm1hdFVQQ0VBTlJlYWRlclwiKTtcbnZhciBPbmVEUmVhZGVyXzEgPSByZXF1aXJlKFwiLi9PbmVEUmVhZGVyXCIpO1xudmFyIFJTU0V4cGFuZGVkUmVhZGVyXzEgPSByZXF1aXJlKFwiLi9yc3MvZXhwYW5kZWQvUlNTRXhwYW5kZWRSZWFkZXJcIik7XG52YXIgUlNTMTRSZWFkZXJfMSA9IHJlcXVpcmUoXCIuL3Jzcy9SU1MxNFJlYWRlclwiKTtcbi8qKlxuICogQGF1dGhvciBEYW5pZWwgU3dpdGtpbiA8ZHN3aXRraW5AZ29vZ2xlLmNvbT5cbiAqIEBhdXRob3IgU2VhbiBPd2VuXG4gKi9cbnZhciBNdWx0aUZvcm1hdE9uZURSZWFkZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKE11bHRpRm9ybWF0T25lRFJlYWRlciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBNdWx0aUZvcm1hdE9uZURSZWFkZXIoaGludHMpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMucmVhZGVycyA9IFtdO1xuICAgICAgICB2YXIgcG9zc2libGVGb3JtYXRzID0gIWhpbnRzID8gbnVsbCA6IGhpbnRzLmdldChEZWNvZGVIaW50VHlwZV8xLmRlZmF1bHQuUE9TU0lCTEVfRk9STUFUUyk7XG4gICAgICAgIHZhciB1c2VDb2RlMzlDaGVja0RpZ2l0ID0gaGludHMgJiYgaGludHMuZ2V0KERlY29kZUhpbnRUeXBlXzEuZGVmYXVsdC5BU1NVTUVfQ09ERV8zOV9DSEVDS19ESUdJVCkgIT09IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHBvc3NpYmxlRm9ybWF0cykge1xuICAgICAgICAgICAgaWYgKHBvc3NpYmxlRm9ybWF0cy5pbmNsdWRlcyhCYXJjb2RlRm9ybWF0XzEuZGVmYXVsdC5FQU5fMTMpIHx8XG4gICAgICAgICAgICAgICAgcG9zc2libGVGb3JtYXRzLmluY2x1ZGVzKEJhcmNvZGVGb3JtYXRfMS5kZWZhdWx0LlVQQ19BKSB8fFxuICAgICAgICAgICAgICAgIHBvc3NpYmxlRm9ybWF0cy5pbmNsdWRlcyhCYXJjb2RlRm9ybWF0XzEuZGVmYXVsdC5FQU5fOCkgfHxcbiAgICAgICAgICAgICAgICBwb3NzaWJsZUZvcm1hdHMuaW5jbHVkZXMoQmFyY29kZUZvcm1hdF8xLmRlZmF1bHQuVVBDX0UpKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMucmVhZGVycy5wdXNoKG5ldyBNdWx0aUZvcm1hdFVQQ0VBTlJlYWRlcl8xLmRlZmF1bHQoaGludHMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwb3NzaWJsZUZvcm1hdHMuaW5jbHVkZXMoQmFyY29kZUZvcm1hdF8xLmRlZmF1bHQuQ09ERV8zOSkpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5yZWFkZXJzLnB1c2gobmV3IENvZGUzOVJlYWRlcl8xLmRlZmF1bHQodXNlQ29kZTM5Q2hlY2tEaWdpdCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gaWYgKHBvc3NpYmxlRm9ybWF0cy5pbmNsdWRlcyhCYXJjb2RlRm9ybWF0LkNPREVfOTMpKSB7XG4gICAgICAgICAgICAvLyAgICB0aGlzLnJlYWRlcnMucHVzaChuZXcgQ29kZTkzUmVhZGVyKCkpO1xuICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgaWYgKHBvc3NpYmxlRm9ybWF0cy5pbmNsdWRlcyhCYXJjb2RlRm9ybWF0XzEuZGVmYXVsdC5DT0RFXzEyOCkpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5yZWFkZXJzLnB1c2gobmV3IENvZGUxMjhSZWFkZXJfMS5kZWZhdWx0KCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBvc3NpYmxlRm9ybWF0cy5pbmNsdWRlcyhCYXJjb2RlRm9ybWF0XzEuZGVmYXVsdC5JVEYpKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMucmVhZGVycy5wdXNoKG5ldyBJVEZSZWFkZXJfMS5kZWZhdWx0KCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gaWYgKHBvc3NpYmxlRm9ybWF0cy5pbmNsdWRlcyhCYXJjb2RlRm9ybWF0LkNPREFCQVIpKSB7XG4gICAgICAgICAgICAvLyAgICB0aGlzLnJlYWRlcnMucHVzaChuZXcgQ29kYUJhclJlYWRlcigpKTtcbiAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgIGlmIChwb3NzaWJsZUZvcm1hdHMuaW5jbHVkZXMoQmFyY29kZUZvcm1hdF8xLmRlZmF1bHQuUlNTXzE0KSkge1xuICAgICAgICAgICAgICAgIF90aGlzLnJlYWRlcnMucHVzaChuZXcgUlNTMTRSZWFkZXJfMS5kZWZhdWx0KCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBvc3NpYmxlRm9ybWF0cy5pbmNsdWRlcyhCYXJjb2RlRm9ybWF0XzEuZGVmYXVsdC5SU1NfRVhQQU5ERUQpKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMucmVhZGVycy5wdXNoKG5ldyBSU1NFeHBhbmRlZFJlYWRlcl8xLmRlZmF1bHQoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKF90aGlzLnJlYWRlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBfdGhpcy5yZWFkZXJzLnB1c2gobmV3IE11bHRpRm9ybWF0VVBDRUFOUmVhZGVyXzEuZGVmYXVsdChoaW50cykpO1xuICAgICAgICAgICAgX3RoaXMucmVhZGVycy5wdXNoKG5ldyBDb2RlMzlSZWFkZXJfMS5kZWZhdWx0KCkpO1xuICAgICAgICAgICAgLy8gdGhpcy5yZWFkZXJzLnB1c2gobmV3IENvZGFCYXJSZWFkZXIoKSk7XG4gICAgICAgICAgICAvLyB0aGlzLnJlYWRlcnMucHVzaChuZXcgQ29kZTkzUmVhZGVyKCkpO1xuICAgICAgICAgICAgX3RoaXMucmVhZGVycy5wdXNoKG5ldyBNdWx0aUZvcm1hdFVQQ0VBTlJlYWRlcl8xLmRlZmF1bHQoaGludHMpKTtcbiAgICAgICAgICAgIF90aGlzLnJlYWRlcnMucHVzaChuZXcgQ29kZTEyOFJlYWRlcl8xLmRlZmF1bHQoKSk7XG4gICAgICAgICAgICBfdGhpcy5yZWFkZXJzLnB1c2gobmV3IElURlJlYWRlcl8xLmRlZmF1bHQoKSk7XG4gICAgICAgICAgICBfdGhpcy5yZWFkZXJzLnB1c2gobmV3IFJTUzE0UmVhZGVyXzEuZGVmYXVsdCgpKTtcbiAgICAgICAgICAgIF90aGlzLnJlYWRlcnMucHVzaChuZXcgUlNTRXhwYW5kZWRSZWFkZXJfMS5kZWZhdWx0KCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgLy8gQE92ZXJyaWRlXG4gICAgTXVsdGlGb3JtYXRPbmVEUmVhZGVyLnByb3RvdHlwZS5kZWNvZGVSb3cgPSBmdW5jdGlvbiAocm93TnVtYmVyLCByb3csIGhpbnRzKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5yZWFkZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlYWRlcnNbaV0uZGVjb2RlUm93KHJvd051bWJlciwgcm93LCBoaW50cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAocmUpIHtcbiAgICAgICAgICAgICAgICAvLyBjb250aW51ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICB9O1xuICAgIC8vIEBPdmVycmlkZVxuICAgIE11bHRpRm9ybWF0T25lRFJlYWRlci5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucmVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uIChyZWFkZXIpIHsgcmV0dXJuIHJlYWRlci5yZXNldCgpOyB9KTtcbiAgICB9O1xuICAgIHJldHVybiBNdWx0aUZvcm1hdE9uZURSZWFkZXI7XG59KE9uZURSZWFkZXJfMS5kZWZhdWx0KSk7XG5leHBvcnRzLmRlZmF1bHQgPSBNdWx0aUZvcm1hdE9uZURSZWFkZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1NdWx0aUZvcm1hdE9uZURSZWFkZXIuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuQnJvd3NlckJhcmNvZGVSZWFkZXIgPSB2b2lkIDA7XG52YXIgQnJvd3NlckNvZGVSZWFkZXJfMSA9IHJlcXVpcmUoXCIuL0Jyb3dzZXJDb2RlUmVhZGVyXCIpO1xudmFyIE11bHRpRm9ybWF0T25lRFJlYWRlcl8xID0gcmVxdWlyZShcIi4uL2NvcmUvb25lZC9NdWx0aUZvcm1hdE9uZURSZWFkZXJcIik7XG4vKipcbiAqIEBkZXByZWNhdGVkIE1vdmluZyB0byBAenhpbmcvYnJvd3NlclxuICpcbiAqIEJhcmNvZGUgcmVhZGVyIHJlYWRlciB0byB1c2UgZnJvbSBicm93c2VyLlxuICovXG52YXIgQnJvd3NlckJhcmNvZGVSZWFkZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEJyb3dzZXJCYXJjb2RlUmVhZGVyLCBfc3VwZXIpO1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgQnJvd3NlckJhcmNvZGVSZWFkZXIuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFt0aW1lQmV0d2VlblNjYW5zTWlsbGlzPTUwMF0gdGhlIHRpbWUgZGVsYXkgYmV0d2VlbiBzdWJzZXF1ZW50IGRlY29kZSB0cmllc1xuICAgICAqIEBwYXJhbSB7TWFwPERlY29kZUhpbnRUeXBlLCBhbnk+fSBoaW50c1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIEJyb3dzZXJCYXJjb2RlUmVhZGVyKHRpbWVCZXR3ZWVuU2NhbnNNaWxsaXMsIGhpbnRzKSB7XG4gICAgICAgIGlmICh0aW1lQmV0d2VlblNjYW5zTWlsbGlzID09PSB2b2lkIDApIHsgdGltZUJldHdlZW5TY2Fuc01pbGxpcyA9IDUwMDsgfVxuICAgICAgICByZXR1cm4gX3N1cGVyLmNhbGwodGhpcywgbmV3IE11bHRpRm9ybWF0T25lRFJlYWRlcl8xLmRlZmF1bHQoaGludHMpLCB0aW1lQmV0d2VlblNjYW5zTWlsbGlzLCBoaW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgcmV0dXJuIEJyb3dzZXJCYXJjb2RlUmVhZGVyO1xufShCcm93c2VyQ29kZVJlYWRlcl8xLkJyb3dzZXJDb2RlUmVhZGVyKSk7XG5leHBvcnRzLkJyb3dzZXJCYXJjb2RlUmVhZGVyID0gQnJvd3NlckJhcmNvZGVSZWFkZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Ccm93c2VyQmFyY29kZVJlYWRlci5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX3ZhbHVlcyA9ICh0aGlzICYmIHRoaXMuX192YWx1ZXMpIHx8IGZ1bmN0aW9uKG8pIHtcbiAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xuICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuRUNCID0gZXhwb3J0cy5FQ0Jsb2NrcyA9IHZvaWQgMDtcbnZhciBGb3JtYXRFeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuLi8uLi9Gb3JtYXRFeGNlcHRpb25cIik7XG4vKlxuICogQ29weXJpZ2h0IDIwMDcgWlhpbmcgYXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogPHA+RW5jYXBzdWxhdGVzIGEgc2V0IG9mIGVycm9yLWNvcnJlY3Rpb24gYmxvY2tzIGluIG9uZSBzeW1ib2wgdmVyc2lvbi4gTW9zdCB2ZXJzaW9ucyB3aWxsXG4gKiB1c2UgYmxvY2tzIG9mIGRpZmZlcmluZyBzaXplcyB3aXRoaW4gb25lIHZlcnNpb24sIHNvLCB0aGlzIGVuY2Fwc3VsYXRlcyB0aGUgcGFyYW1ldGVycyBmb3JcbiAqIGVhY2ggc2V0IG9mIGJsb2Nrcy4gSXQgYWxzbyBob2xkcyB0aGUgbnVtYmVyIG9mIGVycm9yLWNvcnJlY3Rpb24gY29kZXdvcmRzIHBlciBibG9jayBzaW5jZSBpdFxuICogd2lsbCBiZSB0aGUgc2FtZSBhY3Jvc3MgYWxsIGJsb2NrcyB3aXRoaW4gb25lIHZlcnNpb24uPC9wPlxuICovXG52YXIgRUNCbG9ja3MgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRUNCbG9ja3MoZWNDb2Rld29yZHMsIGVjQmxvY2tzMSwgZWNCbG9ja3MyKSB7XG4gICAgICAgIHRoaXMuZWNDb2Rld29yZHMgPSBlY0NvZGV3b3JkcztcbiAgICAgICAgdGhpcy5lY0Jsb2NrcyA9IFtlY0Jsb2NrczFdO1xuICAgICAgICBlY0Jsb2NrczIgJiYgdGhpcy5lY0Jsb2Nrcy5wdXNoKGVjQmxvY2tzMik7XG4gICAgfVxuICAgIEVDQmxvY2tzLnByb3RvdHlwZS5nZXRFQ0NvZGV3b3JkcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWNDb2Rld29yZHM7XG4gICAgfTtcbiAgICBFQ0Jsb2Nrcy5wcm90b3R5cGUuZ2V0RUNCbG9ja3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVjQmxvY2tzO1xuICAgIH07XG4gICAgcmV0dXJuIEVDQmxvY2tzO1xufSgpKTtcbmV4cG9ydHMuRUNCbG9ja3MgPSBFQ0Jsb2Nrcztcbi8qKlxuICogPHA+RW5jYXBzdWxhdGVzIHRoZSBwYXJhbWV0ZXJzIGZvciBvbmUgZXJyb3ItY29ycmVjdGlvbiBibG9jayBpbiBvbmUgc3ltYm9sIHZlcnNpb24uXG4gKiBUaGlzIGluY2x1ZGVzIHRoZSBudW1iZXIgb2YgZGF0YSBjb2Rld29yZHMsIGFuZCB0aGUgbnVtYmVyIG9mIHRpbWVzIGEgYmxvY2sgd2l0aCB0aGVzZVxuICogcGFyYW1ldGVycyBpcyB1c2VkIGNvbnNlY3V0aXZlbHkgaW4gdGhlIERhdGEgTWF0cml4IGNvZGUgdmVyc2lvbidzIGZvcm1hdC48L3A+XG4gKi9cbnZhciBFQ0IgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRUNCKGNvdW50LCBkYXRhQ29kZXdvcmRzKSB7XG4gICAgICAgIHRoaXMuY291bnQgPSBjb3VudDtcbiAgICAgICAgdGhpcy5kYXRhQ29kZXdvcmRzID0gZGF0YUNvZGV3b3JkcztcbiAgICB9XG4gICAgRUNCLnByb3RvdHlwZS5nZXRDb3VudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY291bnQ7XG4gICAgfTtcbiAgICBFQ0IucHJvdG90eXBlLmdldERhdGFDb2Rld29yZHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGFDb2Rld29yZHM7XG4gICAgfTtcbiAgICByZXR1cm4gRUNCO1xufSgpKTtcbmV4cG9ydHMuRUNCID0gRUNCO1xuLyoqXG4gKiBUaGUgVmVyc2lvbiBvYmplY3QgZW5jYXBzdWxhdGVzIGF0dHJpYnV0ZXMgYWJvdXQgYSBwYXJ0aWN1bGFyXG4gKiBzaXplIERhdGEgTWF0cml4IENvZGUuXG4gKlxuICogQGF1dGhvciBiYnJvd25AZ29vZ2xlLmNvbSAoQnJpYW4gQnJvd24pXG4gKi9cbnZhciBWZXJzaW9uID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFZlcnNpb24odmVyc2lvbk51bWJlciwgc3ltYm9sU2l6ZVJvd3MsIHN5bWJvbFNpemVDb2x1bW5zLCBkYXRhUmVnaW9uU2l6ZVJvd3MsIGRhdGFSZWdpb25TaXplQ29sdW1ucywgZWNCbG9ja3MpIHtcbiAgICAgICAgdmFyIGVfMSwgX2E7XG4gICAgICAgIHRoaXMudmVyc2lvbk51bWJlciA9IHZlcnNpb25OdW1iZXI7XG4gICAgICAgIHRoaXMuc3ltYm9sU2l6ZVJvd3MgPSBzeW1ib2xTaXplUm93cztcbiAgICAgICAgdGhpcy5zeW1ib2xTaXplQ29sdW1ucyA9IHN5bWJvbFNpemVDb2x1bW5zO1xuICAgICAgICB0aGlzLmRhdGFSZWdpb25TaXplUm93cyA9IGRhdGFSZWdpb25TaXplUm93cztcbiAgICAgICAgdGhpcy5kYXRhUmVnaW9uU2l6ZUNvbHVtbnMgPSBkYXRhUmVnaW9uU2l6ZUNvbHVtbnM7XG4gICAgICAgIHRoaXMuZWNCbG9ja3MgPSBlY0Jsb2NrcztcbiAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSB0b3RhbCBudW1iZXIgb2YgY29kZXdvcmRzXG4gICAgICAgIHZhciB0b3RhbCA9IDA7XG4gICAgICAgIHZhciBlY0NvZGV3b3JkcyA9IGVjQmxvY2tzLmdldEVDQ29kZXdvcmRzKCk7XG4gICAgICAgIHZhciBlY2JBcnJheSA9IGVjQmxvY2tzLmdldEVDQmxvY2tzKCk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKHZhciBlY2JBcnJheV8xID0gX192YWx1ZXMoZWNiQXJyYXkpLCBlY2JBcnJheV8xXzEgPSBlY2JBcnJheV8xLm5leHQoKTsgIWVjYkFycmF5XzFfMS5kb25lOyBlY2JBcnJheV8xXzEgPSBlY2JBcnJheV8xLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciBlY0Jsb2NrID0gZWNiQXJyYXlfMV8xLnZhbHVlO1xuICAgICAgICAgICAgICAgIHRvdGFsICs9IGVjQmxvY2suZ2V0Q291bnQoKSAqIChlY0Jsb2NrLmdldERhdGFDb2Rld29yZHMoKSArIGVjQ29kZXdvcmRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKGVjYkFycmF5XzFfMSAmJiAhZWNiQXJyYXlfMV8xLmRvbmUgJiYgKF9hID0gZWNiQXJyYXlfMS5yZXR1cm4pKSBfYS5jYWxsKGVjYkFycmF5XzEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMudG90YWxDb2Rld29yZHMgPSB0b3RhbDtcbiAgICB9XG4gICAgVmVyc2lvbi5wcm90b3R5cGUuZ2V0VmVyc2lvbk51bWJlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmVyc2lvbk51bWJlcjtcbiAgICB9O1xuICAgIFZlcnNpb24ucHJvdG90eXBlLmdldFN5bWJvbFNpemVSb3dzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zeW1ib2xTaXplUm93cztcbiAgICB9O1xuICAgIFZlcnNpb24ucHJvdG90eXBlLmdldFN5bWJvbFNpemVDb2x1bW5zID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zeW1ib2xTaXplQ29sdW1ucztcbiAgICB9O1xuICAgIFZlcnNpb24ucHJvdG90eXBlLmdldERhdGFSZWdpb25TaXplUm93cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YVJlZ2lvblNpemVSb3dzO1xuICAgIH07XG4gICAgVmVyc2lvbi5wcm90b3R5cGUuZ2V0RGF0YVJlZ2lvblNpemVDb2x1bW5zID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhUmVnaW9uU2l6ZUNvbHVtbnM7XG4gICAgfTtcbiAgICBWZXJzaW9uLnByb3RvdHlwZS5nZXRUb3RhbENvZGV3b3JkcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG90YWxDb2Rld29yZHM7XG4gICAgfTtcbiAgICBWZXJzaW9uLnByb3RvdHlwZS5nZXRFQ0Jsb2NrcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWNCbG9ja3M7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiA8cD5EZWR1Y2VzIHZlcnNpb24gaW5mb3JtYXRpb24gZnJvbSBEYXRhIE1hdHJpeCBkaW1lbnNpb25zLjwvcD5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBudW1Sb3dzIE51bWJlciBvZiByb3dzIGluIG1vZHVsZXNcbiAgICAgKiBAcGFyYW0gbnVtQ29sdW1ucyBOdW1iZXIgb2YgY29sdW1ucyBpbiBtb2R1bGVzXG4gICAgICogQHJldHVybiBWZXJzaW9uIGZvciBhIERhdGEgTWF0cml4IENvZGUgb2YgdGhvc2UgZGltZW5zaW9uc1xuICAgICAqIEB0aHJvd3MgRm9ybWF0RXhjZXB0aW9uIGlmIGRpbWVuc2lvbnMgZG8gY29ycmVzcG9uZCB0byBhIHZhbGlkIERhdGEgTWF0cml4IHNpemVcbiAgICAgKi9cbiAgICBWZXJzaW9uLmdldFZlcnNpb25Gb3JEaW1lbnNpb25zID0gZnVuY3Rpb24gKG51bVJvd3MsIG51bUNvbHVtbnMpIHtcbiAgICAgICAgdmFyIGVfMiwgX2E7XG4gICAgICAgIGlmICgobnVtUm93cyAmIDB4MDEpICE9PSAwIHx8IChudW1Db2x1bW5zICYgMHgwMSkgIT09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAodmFyIF9iID0gX192YWx1ZXMoVmVyc2lvbi5WRVJTSU9OUyksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgdmVyc2lvbiA9IF9jLnZhbHVlO1xuICAgICAgICAgICAgICAgIGlmICh2ZXJzaW9uLnN5bWJvbFNpemVSb3dzID09PSBudW1Sb3dzICYmIHZlcnNpb24uc3ltYm9sU2l6ZUNvbHVtbnMgPT09IG51bUNvbHVtbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZlcnNpb247XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlXzJfMSkgeyBlXzIgPSB7IGVycm9yOiBlXzJfMSB9OyB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoX2MgJiYgIV9jLmRvbmUgJiYgKF9hID0gX2IucmV0dXJuKSkgX2EuY2FsbChfYik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMikgdGhyb3cgZV8yLmVycm9yOyB9XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICB9O1xuICAgIC8vICBAT3ZlcnJpZGVcbiAgICBWZXJzaW9uLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICcnICsgdGhpcy52ZXJzaW9uTnVtYmVyO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogU2VlIElTTyAxNjAyMjoyMDA2IDUuNS4xIFRhYmxlIDdcbiAgICAgKi9cbiAgICBWZXJzaW9uLmJ1aWxkVmVyc2lvbnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBuZXcgVmVyc2lvbigxLCAxMCwgMTAsIDgsIDgsIG5ldyBFQ0Jsb2Nrcyg1LCBuZXcgRUNCKDEsIDMpKSksXG4gICAgICAgICAgICBuZXcgVmVyc2lvbigyLCAxMiwgMTIsIDEwLCAxMCwgbmV3IEVDQmxvY2tzKDcsIG5ldyBFQ0IoMSwgNSkpKSxcbiAgICAgICAgICAgIG5ldyBWZXJzaW9uKDMsIDE0LCAxNCwgMTIsIDEyLCBuZXcgRUNCbG9ja3MoMTAsIG5ldyBFQ0IoMSwgOCkpKSxcbiAgICAgICAgICAgIG5ldyBWZXJzaW9uKDQsIDE2LCAxNiwgMTQsIDE0LCBuZXcgRUNCbG9ja3MoMTIsIG5ldyBFQ0IoMSwgMTIpKSksXG4gICAgICAgICAgICBuZXcgVmVyc2lvbig1LCAxOCwgMTgsIDE2LCAxNiwgbmV3IEVDQmxvY2tzKDE0LCBuZXcgRUNCKDEsIDE4KSkpLFxuICAgICAgICAgICAgbmV3IFZlcnNpb24oNiwgMjAsIDIwLCAxOCwgMTgsIG5ldyBFQ0Jsb2NrcygxOCwgbmV3IEVDQigxLCAyMikpKSxcbiAgICAgICAgICAgIG5ldyBWZXJzaW9uKDcsIDIyLCAyMiwgMjAsIDIwLCBuZXcgRUNCbG9ja3MoMjAsIG5ldyBFQ0IoMSwgMzApKSksXG4gICAgICAgICAgICBuZXcgVmVyc2lvbig4LCAyNCwgMjQsIDIyLCAyMiwgbmV3IEVDQmxvY2tzKDI0LCBuZXcgRUNCKDEsIDM2KSkpLFxuICAgICAgICAgICAgbmV3IFZlcnNpb24oOSwgMjYsIDI2LCAyNCwgMjQsIG5ldyBFQ0Jsb2NrcygyOCwgbmV3IEVDQigxLCA0NCkpKSxcbiAgICAgICAgICAgIG5ldyBWZXJzaW9uKDEwLCAzMiwgMzIsIDE0LCAxNCwgbmV3IEVDQmxvY2tzKDM2LCBuZXcgRUNCKDEsIDYyKSkpLFxuICAgICAgICAgICAgbmV3IFZlcnNpb24oMTEsIDM2LCAzNiwgMTYsIDE2LCBuZXcgRUNCbG9ja3MoNDIsIG5ldyBFQ0IoMSwgODYpKSksXG4gICAgICAgICAgICBuZXcgVmVyc2lvbigxMiwgNDAsIDQwLCAxOCwgMTgsIG5ldyBFQ0Jsb2Nrcyg0OCwgbmV3IEVDQigxLCAxMTQpKSksXG4gICAgICAgICAgICBuZXcgVmVyc2lvbigxMywgNDQsIDQ0LCAyMCwgMjAsIG5ldyBFQ0Jsb2Nrcyg1NiwgbmV3IEVDQigxLCAxNDQpKSksXG4gICAgICAgICAgICBuZXcgVmVyc2lvbigxNCwgNDgsIDQ4LCAyMiwgMjIsIG5ldyBFQ0Jsb2Nrcyg2OCwgbmV3IEVDQigxLCAxNzQpKSksXG4gICAgICAgICAgICBuZXcgVmVyc2lvbigxNSwgNTIsIDUyLCAyNCwgMjQsIG5ldyBFQ0Jsb2Nrcyg0MiwgbmV3IEVDQigyLCAxMDIpKSksXG4gICAgICAgICAgICBuZXcgVmVyc2lvbigxNiwgNjQsIDY0LCAxNCwgMTQsIG5ldyBFQ0Jsb2Nrcyg1NiwgbmV3IEVDQigyLCAxNDApKSksXG4gICAgICAgICAgICBuZXcgVmVyc2lvbigxNywgNzIsIDcyLCAxNiwgMTYsIG5ldyBFQ0Jsb2NrcygzNiwgbmV3IEVDQig0LCA5MikpKSxcbiAgICAgICAgICAgIG5ldyBWZXJzaW9uKDE4LCA4MCwgODAsIDE4LCAxOCwgbmV3IEVDQmxvY2tzKDQ4LCBuZXcgRUNCKDQsIDExNCkpKSxcbiAgICAgICAgICAgIG5ldyBWZXJzaW9uKDE5LCA4OCwgODgsIDIwLCAyMCwgbmV3IEVDQmxvY2tzKDU2LCBuZXcgRUNCKDQsIDE0NCkpKSxcbiAgICAgICAgICAgIG5ldyBWZXJzaW9uKDIwLCA5NiwgOTYsIDIyLCAyMiwgbmV3IEVDQmxvY2tzKDY4LCBuZXcgRUNCKDQsIDE3NCkpKSxcbiAgICAgICAgICAgIG5ldyBWZXJzaW9uKDIxLCAxMDQsIDEwNCwgMjQsIDI0LCBuZXcgRUNCbG9ja3MoNTYsIG5ldyBFQ0IoNiwgMTM2KSkpLFxuICAgICAgICAgICAgbmV3IFZlcnNpb24oMjIsIDEyMCwgMTIwLCAxOCwgMTgsIG5ldyBFQ0Jsb2Nrcyg2OCwgbmV3IEVDQig2LCAxNzUpKSksXG4gICAgICAgICAgICBuZXcgVmVyc2lvbigyMywgMTMyLCAxMzIsIDIwLCAyMCwgbmV3IEVDQmxvY2tzKDYyLCBuZXcgRUNCKDgsIDE2MykpKSxcbiAgICAgICAgICAgIG5ldyBWZXJzaW9uKDI0LCAxNDQsIDE0NCwgMjIsIDIyLCBuZXcgRUNCbG9ja3MoNjIsIG5ldyBFQ0IoOCwgMTU2KSwgbmV3IEVDQigyLCAxNTUpKSksXG4gICAgICAgICAgICBuZXcgVmVyc2lvbigyNSwgOCwgMTgsIDYsIDE2LCBuZXcgRUNCbG9ja3MoNywgbmV3IEVDQigxLCA1KSkpLFxuICAgICAgICAgICAgbmV3IFZlcnNpb24oMjYsIDgsIDMyLCA2LCAxNCwgbmV3IEVDQmxvY2tzKDExLCBuZXcgRUNCKDEsIDEwKSkpLFxuICAgICAgICAgICAgbmV3IFZlcnNpb24oMjcsIDEyLCAyNiwgMTAsIDI0LCBuZXcgRUNCbG9ja3MoMTQsIG5ldyBFQ0IoMSwgMTYpKSksXG4gICAgICAgICAgICBuZXcgVmVyc2lvbigyOCwgMTIsIDM2LCAxMCwgMTYsIG5ldyBFQ0Jsb2NrcygxOCwgbmV3IEVDQigxLCAyMikpKSxcbiAgICAgICAgICAgIG5ldyBWZXJzaW9uKDI5LCAxNiwgMzYsIDE0LCAxNiwgbmV3IEVDQmxvY2tzKDI0LCBuZXcgRUNCKDEsIDMyKSkpLFxuICAgICAgICAgICAgbmV3IFZlcnNpb24oMzAsIDE2LCA0OCwgMTQsIDIyLCBuZXcgRUNCbG9ja3MoMjgsIG5ldyBFQ0IoMSwgNDkpKSlcbiAgICAgICAgXTtcbiAgICB9O1xuICAgIFZlcnNpb24uVkVSU0lPTlMgPSBWZXJzaW9uLmJ1aWxkVmVyc2lvbnMoKTtcbiAgICByZXR1cm4gVmVyc2lvbjtcbn0oKSk7XG5leHBvcnRzLmRlZmF1bHQgPSBWZXJzaW9uO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VmVyc2lvbi5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBCaXRNYXRyaXhfMSA9IHJlcXVpcmUoXCIuLi8uLi9jb21tb24vQml0TWF0cml4XCIpO1xudmFyIFZlcnNpb25fMSA9IHJlcXVpcmUoXCIuL1ZlcnNpb25cIik7XG52YXIgRm9ybWF0RXhjZXB0aW9uXzEgPSByZXF1aXJlKFwiLi4vLi4vRm9ybWF0RXhjZXB0aW9uXCIpO1xudmFyIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4uLy4uL0lsbGVnYWxBcmd1bWVudEV4Y2VwdGlvblwiKTtcbi8qXG4gKiBDb3B5cmlnaHQgMjAwNyBaWGluZyBhdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBAYXV0aG9yIGJicm93bkBnb29nbGUuY29tIChCcmlhbiBCcm93bilcbiAqL1xudmFyIEJpdE1hdHJpeFBhcnNlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0gYml0TWF0cml4IHtAbGluayBCaXRNYXRyaXh9IHRvIHBhcnNlXG4gICAgICogQHRocm93cyBGb3JtYXRFeGNlcHRpb24gaWYgZGltZW5zaW9uIGlzIDwgOCBvciA+IDE0NCBvciBub3QgMCBtb2QgMlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIEJpdE1hdHJpeFBhcnNlcihiaXRNYXRyaXgpIHtcbiAgICAgICAgdmFyIGRpbWVuc2lvbiA9IGJpdE1hdHJpeC5nZXRIZWlnaHQoKTtcbiAgICAgICAgaWYgKGRpbWVuc2lvbiA8IDggfHwgZGltZW5zaW9uID4gMTQ0IHx8IChkaW1lbnNpb24gJiAweDAxKSAhPT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnZlcnNpb24gPSBCaXRNYXRyaXhQYXJzZXIucmVhZFZlcnNpb24oYml0TWF0cml4KTtcbiAgICAgICAgdGhpcy5tYXBwaW5nQml0TWF0cml4ID0gdGhpcy5leHRyYWN0RGF0YVJlZ2lvbihiaXRNYXRyaXgpO1xuICAgICAgICB0aGlzLnJlYWRNYXBwaW5nTWF0cml4ID0gbmV3IEJpdE1hdHJpeF8xLmRlZmF1bHQodGhpcy5tYXBwaW5nQml0TWF0cml4LmdldFdpZHRoKCksIHRoaXMubWFwcGluZ0JpdE1hdHJpeC5nZXRIZWlnaHQoKSk7XG4gICAgfVxuICAgIEJpdE1hdHJpeFBhcnNlci5wcm90b3R5cGUuZ2V0VmVyc2lvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmVyc2lvbjtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIDxwPkNyZWF0ZXMgdGhlIHZlcnNpb24gb2JqZWN0IGJhc2VkIG9uIHRoZSBkaW1lbnNpb24gb2YgdGhlIG9yaWdpbmFsIGJpdCBtYXRyaXggZnJvbVxuICAgICAqIHRoZSBkYXRhbWF0cml4IGNvZGUuPC9wPlxuICAgICAqXG4gICAgICogPHA+U2VlIElTTyAxNjAyMjoyMDA2IFRhYmxlIDcgLSBFQ0MgMjAwIHN5bWJvbCBhdHRyaWJ1dGVzPC9wPlxuICAgICAqXG4gICAgICogQHBhcmFtIGJpdE1hdHJpeCBPcmlnaW5hbCB7QGxpbmsgQml0TWF0cml4fSBpbmNsdWRpbmcgYWxpZ25tZW50IHBhdHRlcm5zXG4gICAgICogQHJldHVybiB7QGxpbmsgVmVyc2lvbn0gZW5jYXBzdWxhdGluZyB0aGUgRGF0YSBNYXRyaXggQ29kZSdzIFwidmVyc2lvblwiXG4gICAgICogQHRocm93cyBGb3JtYXRFeGNlcHRpb24gaWYgdGhlIGRpbWVuc2lvbnMgb2YgdGhlIG1hcHBpbmcgbWF0cml4IGFyZSBub3QgdmFsaWRcbiAgICAgKiBEYXRhIE1hdHJpeCBkaW1lbnNpb25zLlxuICAgICAqL1xuICAgIEJpdE1hdHJpeFBhcnNlci5yZWFkVmVyc2lvbiA9IGZ1bmN0aW9uIChiaXRNYXRyaXgpIHtcbiAgICAgICAgdmFyIG51bVJvd3MgPSBiaXRNYXRyaXguZ2V0SGVpZ2h0KCk7XG4gICAgICAgIHZhciBudW1Db2x1bW5zID0gYml0TWF0cml4LmdldFdpZHRoKCk7XG4gICAgICAgIHJldHVybiBWZXJzaW9uXzEuZGVmYXVsdC5nZXRWZXJzaW9uRm9yRGltZW5zaW9ucyhudW1Sb3dzLCBudW1Db2x1bW5zKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIDxwPlJlYWRzIHRoZSBiaXRzIGluIHRoZSB7QGxpbmsgQml0TWF0cml4fSByZXByZXNlbnRpbmcgdGhlIG1hcHBpbmcgbWF0cml4IChObyBhbGlnbm1lbnQgcGF0dGVybnMpXG4gICAgICogaW4gdGhlIGNvcnJlY3Qgb3JkZXIgaW4gb3JkZXIgdG8gcmVjb25zdGl0dXRlIHRoZSBjb2Rld29yZHMgYnl0ZXMgY29udGFpbmVkIHdpdGhpbiB0aGVcbiAgICAgKiBEYXRhIE1hdHJpeCBDb2RlLjwvcD5cbiAgICAgKlxuICAgICAqIEByZXR1cm4gYnl0ZXMgZW5jb2RlZCB3aXRoaW4gdGhlIERhdGEgTWF0cml4IENvZGVcbiAgICAgKiBAdGhyb3dzIEZvcm1hdEV4Y2VwdGlvbiBpZiB0aGUgZXhhY3QgbnVtYmVyIG9mIGJ5dGVzIGV4cGVjdGVkIGlzIG5vdCByZWFkXG4gICAgICovXG4gICAgQml0TWF0cml4UGFyc2VyLnByb3RvdHlwZS5yZWFkQ29kZXdvcmRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IEludDhBcnJheSh0aGlzLnZlcnNpb24uZ2V0VG90YWxDb2Rld29yZHMoKSk7XG4gICAgICAgIHZhciByZXN1bHRPZmZzZXQgPSAwO1xuICAgICAgICB2YXIgcm93ID0gNDtcbiAgICAgICAgdmFyIGNvbHVtbiA9IDA7XG4gICAgICAgIHZhciBudW1Sb3dzID0gdGhpcy5tYXBwaW5nQml0TWF0cml4LmdldEhlaWdodCgpO1xuICAgICAgICB2YXIgbnVtQ29sdW1ucyA9IHRoaXMubWFwcGluZ0JpdE1hdHJpeC5nZXRXaWR0aCgpO1xuICAgICAgICB2YXIgY29ybmVyMVJlYWQgPSBmYWxzZTtcbiAgICAgICAgdmFyIGNvcm5lcjJSZWFkID0gZmFsc2U7XG4gICAgICAgIHZhciBjb3JuZXIzUmVhZCA9IGZhbHNlO1xuICAgICAgICB2YXIgY29ybmVyNFJlYWQgPSBmYWxzZTtcbiAgICAgICAgLy8gUmVhZCBhbGwgb2YgdGhlIGNvZGV3b3Jkc1xuICAgICAgICBkbyB7XG4gICAgICAgICAgICAvLyBDaGVjayB0aGUgZm91ciBjb3JuZXIgY2FzZXNcbiAgICAgICAgICAgIGlmICgocm93ID09PSBudW1Sb3dzKSAmJiAoY29sdW1uID09PSAwKSAmJiAhY29ybmVyMVJlYWQpIHtcbiAgICAgICAgICAgICAgICByZXN1bHRbcmVzdWx0T2Zmc2V0KytdID0gdGhpcy5yZWFkQ29ybmVyMShudW1Sb3dzLCBudW1Db2x1bW5zKSAmIDB4ZmY7XG4gICAgICAgICAgICAgICAgcm93IC09IDI7XG4gICAgICAgICAgICAgICAgY29sdW1uICs9IDI7XG4gICAgICAgICAgICAgICAgY29ybmVyMVJlYWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoKHJvdyA9PT0gbnVtUm93cyAtIDIpICYmIChjb2x1bW4gPT09IDApICYmICgobnVtQ29sdW1ucyAmIDB4MDMpICE9PSAwKSAmJiAhY29ybmVyMlJlYWQpIHtcbiAgICAgICAgICAgICAgICByZXN1bHRbcmVzdWx0T2Zmc2V0KytdID0gdGhpcy5yZWFkQ29ybmVyMihudW1Sb3dzLCBudW1Db2x1bW5zKSAmIDB4ZmY7XG4gICAgICAgICAgICAgICAgcm93IC09IDI7XG4gICAgICAgICAgICAgICAgY29sdW1uICs9IDI7XG4gICAgICAgICAgICAgICAgY29ybmVyMlJlYWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoKHJvdyA9PT0gbnVtUm93cyArIDQpICYmIChjb2x1bW4gPT09IDIpICYmICgobnVtQ29sdW1ucyAmIDB4MDcpID09PSAwKSAmJiAhY29ybmVyM1JlYWQpIHtcbiAgICAgICAgICAgICAgICByZXN1bHRbcmVzdWx0T2Zmc2V0KytdID0gdGhpcy5yZWFkQ29ybmVyMyhudW1Sb3dzLCBudW1Db2x1bW5zKSAmIDB4ZmY7XG4gICAgICAgICAgICAgICAgcm93IC09IDI7XG4gICAgICAgICAgICAgICAgY29sdW1uICs9IDI7XG4gICAgICAgICAgICAgICAgY29ybmVyM1JlYWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoKHJvdyA9PT0gbnVtUm93cyAtIDIpICYmIChjb2x1bW4gPT09IDApICYmICgobnVtQ29sdW1ucyAmIDB4MDcpID09PSA0KSAmJiAhY29ybmVyNFJlYWQpIHtcbiAgICAgICAgICAgICAgICByZXN1bHRbcmVzdWx0T2Zmc2V0KytdID0gdGhpcy5yZWFkQ29ybmVyNChudW1Sb3dzLCBudW1Db2x1bW5zKSAmIDB4ZmY7XG4gICAgICAgICAgICAgICAgcm93IC09IDI7XG4gICAgICAgICAgICAgICAgY29sdW1uICs9IDI7XG4gICAgICAgICAgICAgICAgY29ybmVyNFJlYWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gU3dlZXAgdXB3YXJkIGRpYWdvbmFsbHkgdG8gdGhlIHJpZ2h0XG4gICAgICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoKHJvdyA8IG51bVJvd3MpICYmIChjb2x1bW4gPj0gMCkgJiYgIXRoaXMucmVhZE1hcHBpbmdNYXRyaXguZ2V0KGNvbHVtbiwgcm93KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0W3Jlc3VsdE9mZnNldCsrXSA9IHRoaXMucmVhZFV0YWgocm93LCBjb2x1bW4sIG51bVJvd3MsIG51bUNvbHVtbnMpICYgMHhmZjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByb3cgLT0gMjtcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uICs9IDI7XG4gICAgICAgICAgICAgICAgfSB3aGlsZSAoKHJvdyA+PSAwKSAmJiAoY29sdW1uIDwgbnVtQ29sdW1ucykpO1xuICAgICAgICAgICAgICAgIHJvdyArPSAxO1xuICAgICAgICAgICAgICAgIGNvbHVtbiArPSAzO1xuICAgICAgICAgICAgICAgIC8vIFN3ZWVwIGRvd253YXJkIGRpYWdvbmFsbHkgdG8gdGhlIGxlZnRcbiAgICAgICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgICAgIGlmICgocm93ID49IDApICYmIChjb2x1bW4gPCBudW1Db2x1bW5zKSAmJiAhdGhpcy5yZWFkTWFwcGluZ01hdHJpeC5nZXQoY29sdW1uLCByb3cpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRbcmVzdWx0T2Zmc2V0KytdID0gdGhpcy5yZWFkVXRhaChyb3csIGNvbHVtbiwgbnVtUm93cywgbnVtQ29sdW1ucykgJiAweGZmO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJvdyArPSAyO1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW4gLT0gMjtcbiAgICAgICAgICAgICAgICB9IHdoaWxlICgocm93IDwgbnVtUm93cykgJiYgKGNvbHVtbiA+PSAwKSk7XG4gICAgICAgICAgICAgICAgcm93ICs9IDM7XG4gICAgICAgICAgICAgICAgY29sdW1uICs9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gd2hpbGUgKChyb3cgPCBudW1Sb3dzKSB8fCAoY29sdW1uIDwgbnVtQ29sdW1ucykpO1xuICAgICAgICBpZiAocmVzdWx0T2Zmc2V0ICE9PSB0aGlzLnZlcnNpb24uZ2V0VG90YWxDb2Rld29yZHMoKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogPHA+UmVhZHMgYSBiaXQgb2YgdGhlIG1hcHBpbmcgbWF0cml4IGFjY291bnRpbmcgZm9yIGJvdW5kYXJ5IHdyYXBwaW5nLjwvcD5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByb3cgUm93IHRvIHJlYWQgaW4gdGhlIG1hcHBpbmcgbWF0cml4XG4gICAgICogQHBhcmFtIGNvbHVtbiBDb2x1bW4gdG8gcmVhZCBpbiB0aGUgbWFwcGluZyBtYXRyaXhcbiAgICAgKiBAcGFyYW0gbnVtUm93cyBOdW1iZXIgb2Ygcm93cyBpbiB0aGUgbWFwcGluZyBtYXRyaXhcbiAgICAgKiBAcGFyYW0gbnVtQ29sdW1ucyBOdW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgbWFwcGluZyBtYXRyaXhcbiAgICAgKiBAcmV0dXJuIHZhbHVlIG9mIHRoZSBnaXZlbiBiaXQgaW4gdGhlIG1hcHBpbmcgbWF0cml4XG4gICAgICovXG4gICAgQml0TWF0cml4UGFyc2VyLnByb3RvdHlwZS5yZWFkTW9kdWxlID0gZnVuY3Rpb24gKHJvdywgY29sdW1uLCBudW1Sb3dzLCBudW1Db2x1bW5zKSB7XG4gICAgICAgIC8vIEFkanVzdCB0aGUgcm93IGFuZCBjb2x1bW4gaW5kaWNlcyBiYXNlZCBvbiBib3VuZGFyeSB3cmFwcGluZ1xuICAgICAgICBpZiAocm93IDwgMCkge1xuICAgICAgICAgICAgcm93ICs9IG51bVJvd3M7XG4gICAgICAgICAgICBjb2x1bW4gKz0gNCAtICgobnVtUm93cyArIDQpICYgMHgwNyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbHVtbiA8IDApIHtcbiAgICAgICAgICAgIGNvbHVtbiArPSBudW1Db2x1bW5zO1xuICAgICAgICAgICAgcm93ICs9IDQgLSAoKG51bUNvbHVtbnMgKyA0KSAmIDB4MDcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVhZE1hcHBpbmdNYXRyaXguc2V0KGNvbHVtbiwgcm93KTtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwcGluZ0JpdE1hdHJpeC5nZXQoY29sdW1uLCByb3cpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogPHA+UmVhZHMgdGhlIDggYml0cyBvZiB0aGUgc3RhbmRhcmQgVXRhaC1zaGFwZWQgcGF0dGVybi48L3A+XG4gICAgICpcbiAgICAgKiA8cD5TZWUgSVNPIDE2MDIyOjIwMDYsIDUuOC4xIEZpZ3VyZSA2PC9wPlxuICAgICAqXG4gICAgICogQHBhcmFtIHJvdyBDdXJyZW50IHJvdyBpbiB0aGUgbWFwcGluZyBtYXRyaXgsIGFuY2hvcmVkIGF0IHRoZSA4dGggYml0IChMU0IpIG9mIHRoZSBwYXR0ZXJuXG4gICAgICogQHBhcmFtIGNvbHVtbiBDdXJyZW50IGNvbHVtbiBpbiB0aGUgbWFwcGluZyBtYXRyaXgsIGFuY2hvcmVkIGF0IHRoZSA4dGggYml0IChMU0IpIG9mIHRoZSBwYXR0ZXJuXG4gICAgICogQHBhcmFtIG51bVJvd3MgTnVtYmVyIG9mIHJvd3MgaW4gdGhlIG1hcHBpbmcgbWF0cml4XG4gICAgICogQHBhcmFtIG51bUNvbHVtbnMgTnVtYmVyIG9mIGNvbHVtbnMgaW4gdGhlIG1hcHBpbmcgbWF0cml4XG4gICAgICogQHJldHVybiBieXRlIGZyb20gdGhlIHV0YWggc2hhcGVcbiAgICAgKi9cbiAgICBCaXRNYXRyaXhQYXJzZXIucHJvdG90eXBlLnJlYWRVdGFoID0gZnVuY3Rpb24gKHJvdywgY29sdW1uLCBudW1Sb3dzLCBudW1Db2x1bW5zKSB7XG4gICAgICAgIHZhciBjdXJyZW50Qnl0ZSA9IDA7XG4gICAgICAgIGlmICh0aGlzLnJlYWRNb2R1bGUocm93IC0gMiwgY29sdW1uIC0gMiwgbnVtUm93cywgbnVtQ29sdW1ucykpIHtcbiAgICAgICAgICAgIGN1cnJlbnRCeXRlIHw9IDE7XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudEJ5dGUgPDw9IDE7XG4gICAgICAgIGlmICh0aGlzLnJlYWRNb2R1bGUocm93IC0gMiwgY29sdW1uIC0gMSwgbnVtUm93cywgbnVtQ29sdW1ucykpIHtcbiAgICAgICAgICAgIGN1cnJlbnRCeXRlIHw9IDE7XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudEJ5dGUgPDw9IDE7XG4gICAgICAgIGlmICh0aGlzLnJlYWRNb2R1bGUocm93IC0gMSwgY29sdW1uIC0gMiwgbnVtUm93cywgbnVtQ29sdW1ucykpIHtcbiAgICAgICAgICAgIGN1cnJlbnRCeXRlIHw9IDE7XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudEJ5dGUgPDw9IDE7XG4gICAgICAgIGlmICh0aGlzLnJlYWRNb2R1bGUocm93IC0gMSwgY29sdW1uIC0gMSwgbnVtUm93cywgbnVtQ29sdW1ucykpIHtcbiAgICAgICAgICAgIGN1cnJlbnRCeXRlIHw9IDE7XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudEJ5dGUgPDw9IDE7XG4gICAgICAgIGlmICh0aGlzLnJlYWRNb2R1bGUocm93IC0gMSwgY29sdW1uLCBudW1Sb3dzLCBudW1Db2x1bW5zKSkge1xuICAgICAgICAgICAgY3VycmVudEJ5dGUgfD0gMTtcbiAgICAgICAgfVxuICAgICAgICBjdXJyZW50Qnl0ZSA8PD0gMTtcbiAgICAgICAgaWYgKHRoaXMucmVhZE1vZHVsZShyb3csIGNvbHVtbiAtIDIsIG51bVJvd3MsIG51bUNvbHVtbnMpKSB7XG4gICAgICAgICAgICBjdXJyZW50Qnl0ZSB8PSAxO1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnRCeXRlIDw8PSAxO1xuICAgICAgICBpZiAodGhpcy5yZWFkTW9kdWxlKHJvdywgY29sdW1uIC0gMSwgbnVtUm93cywgbnVtQ29sdW1ucykpIHtcbiAgICAgICAgICAgIGN1cnJlbnRCeXRlIHw9IDE7XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudEJ5dGUgPDw9IDE7XG4gICAgICAgIGlmICh0aGlzLnJlYWRNb2R1bGUocm93LCBjb2x1bW4sIG51bVJvd3MsIG51bUNvbHVtbnMpKSB7XG4gICAgICAgICAgICBjdXJyZW50Qnl0ZSB8PSAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjdXJyZW50Qnl0ZTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIDxwPlJlYWRzIHRoZSA4IGJpdHMgb2YgdGhlIHNwZWNpYWwgY29ybmVyIGNvbmRpdGlvbiAxLjwvcD5cbiAgICAgKlxuICAgICAqIDxwPlNlZSBJU08gMTYwMjI6MjAwNiwgRmlndXJlIEYuMzwvcD5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBudW1Sb3dzIE51bWJlciBvZiByb3dzIGluIHRoZSBtYXBwaW5nIG1hdHJpeFxuICAgICAqIEBwYXJhbSBudW1Db2x1bW5zIE51bWJlciBvZiBjb2x1bW5zIGluIHRoZSBtYXBwaW5nIG1hdHJpeFxuICAgICAqIEByZXR1cm4gYnl0ZSBmcm9tIHRoZSBDb3JuZXIgY29uZGl0aW9uIDFcbiAgICAgKi9cbiAgICBCaXRNYXRyaXhQYXJzZXIucHJvdG90eXBlLnJlYWRDb3JuZXIxID0gZnVuY3Rpb24gKG51bVJvd3MsIG51bUNvbHVtbnMpIHtcbiAgICAgICAgdmFyIGN1cnJlbnRCeXRlID0gMDtcbiAgICAgICAgaWYgKHRoaXMucmVhZE1vZHVsZShudW1Sb3dzIC0gMSwgMCwgbnVtUm93cywgbnVtQ29sdW1ucykpIHtcbiAgICAgICAgICAgIGN1cnJlbnRCeXRlIHw9IDE7XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudEJ5dGUgPDw9IDE7XG4gICAgICAgIGlmICh0aGlzLnJlYWRNb2R1bGUobnVtUm93cyAtIDEsIDEsIG51bVJvd3MsIG51bUNvbHVtbnMpKSB7XG4gICAgICAgICAgICBjdXJyZW50Qnl0ZSB8PSAxO1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnRCeXRlIDw8PSAxO1xuICAgICAgICBpZiAodGhpcy5yZWFkTW9kdWxlKG51bVJvd3MgLSAxLCAyLCBudW1Sb3dzLCBudW1Db2x1bW5zKSkge1xuICAgICAgICAgICAgY3VycmVudEJ5dGUgfD0gMTtcbiAgICAgICAgfVxuICAgICAgICBjdXJyZW50Qnl0ZSA8PD0gMTtcbiAgICAgICAgaWYgKHRoaXMucmVhZE1vZHVsZSgwLCBudW1Db2x1bW5zIC0gMiwgbnVtUm93cywgbnVtQ29sdW1ucykpIHtcbiAgICAgICAgICAgIGN1cnJlbnRCeXRlIHw9IDE7XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudEJ5dGUgPDw9IDE7XG4gICAgICAgIGlmICh0aGlzLnJlYWRNb2R1bGUoMCwgbnVtQ29sdW1ucyAtIDEsIG51bVJvd3MsIG51bUNvbHVtbnMpKSB7XG4gICAgICAgICAgICBjdXJyZW50Qnl0ZSB8PSAxO1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnRCeXRlIDw8PSAxO1xuICAgICAgICBpZiAodGhpcy5yZWFkTW9kdWxlKDEsIG51bUNvbHVtbnMgLSAxLCBudW1Sb3dzLCBudW1Db2x1bW5zKSkge1xuICAgICAgICAgICAgY3VycmVudEJ5dGUgfD0gMTtcbiAgICAgICAgfVxuICAgICAgICBjdXJyZW50Qnl0ZSA8PD0gMTtcbiAgICAgICAgaWYgKHRoaXMucmVhZE1vZHVsZSgyLCBudW1Db2x1bW5zIC0gMSwgbnVtUm93cywgbnVtQ29sdW1ucykpIHtcbiAgICAgICAgICAgIGN1cnJlbnRCeXRlIHw9IDE7XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudEJ5dGUgPDw9IDE7XG4gICAgICAgIGlmICh0aGlzLnJlYWRNb2R1bGUoMywgbnVtQ29sdW1ucyAtIDEsIG51bVJvd3MsIG51bUNvbHVtbnMpKSB7XG4gICAgICAgICAgICBjdXJyZW50Qnl0ZSB8PSAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjdXJyZW50Qnl0ZTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIDxwPlJlYWRzIHRoZSA4IGJpdHMgb2YgdGhlIHNwZWNpYWwgY29ybmVyIGNvbmRpdGlvbiAyLjwvcD5cbiAgICAgKlxuICAgICAqIDxwPlNlZSBJU08gMTYwMjI6MjAwNiwgRmlndXJlIEYuNDwvcD5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBudW1Sb3dzIE51bWJlciBvZiByb3dzIGluIHRoZSBtYXBwaW5nIG1hdHJpeFxuICAgICAqIEBwYXJhbSBudW1Db2x1bW5zIE51bWJlciBvZiBjb2x1bW5zIGluIHRoZSBtYXBwaW5nIG1hdHJpeFxuICAgICAqIEByZXR1cm4gYnl0ZSBmcm9tIHRoZSBDb3JuZXIgY29uZGl0aW9uIDJcbiAgICAgKi9cbiAgICBCaXRNYXRyaXhQYXJzZXIucHJvdG90eXBlLnJlYWRDb3JuZXIyID0gZnVuY3Rpb24gKG51bVJvd3MsIG51bUNvbHVtbnMpIHtcbiAgICAgICAgdmFyIGN1cnJlbnRCeXRlID0gMDtcbiAgICAgICAgaWYgKHRoaXMucmVhZE1vZHVsZShudW1Sb3dzIC0gMywgMCwgbnVtUm93cywgbnVtQ29sdW1ucykpIHtcbiAgICAgICAgICAgIGN1cnJlbnRCeXRlIHw9IDE7XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudEJ5dGUgPDw9IDE7XG4gICAgICAgIGlmICh0aGlzLnJlYWRNb2R1bGUobnVtUm93cyAtIDIsIDAsIG51bVJvd3MsIG51bUNvbHVtbnMpKSB7XG4gICAgICAgICAgICBjdXJyZW50Qnl0ZSB8PSAxO1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnRCeXRlIDw8PSAxO1xuICAgICAgICBpZiAodGhpcy5yZWFkTW9kdWxlKG51bVJvd3MgLSAxLCAwLCBudW1Sb3dzLCBudW1Db2x1bW5zKSkge1xuICAgICAgICAgICAgY3VycmVudEJ5dGUgfD0gMTtcbiAgICAgICAgfVxuICAgICAgICBjdXJyZW50Qnl0ZSA8PD0gMTtcbiAgICAgICAgaWYgKHRoaXMucmVhZE1vZHVsZSgwLCBudW1Db2x1bW5zIC0gNCwgbnVtUm93cywgbnVtQ29sdW1ucykpIHtcbiAgICAgICAgICAgIGN1cnJlbnRCeXRlIHw9IDE7XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudEJ5dGUgPDw9IDE7XG4gICAgICAgIGlmICh0aGlzLnJlYWRNb2R1bGUoMCwgbnVtQ29sdW1ucyAtIDMsIG51bVJvd3MsIG51bUNvbHVtbnMpKSB7XG4gICAgICAgICAgICBjdXJyZW50Qnl0ZSB8PSAxO1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnRCeXRlIDw8PSAxO1xuICAgICAgICBpZiAodGhpcy5yZWFkTW9kdWxlKDAsIG51bUNvbHVtbnMgLSAyLCBudW1Sb3dzLCBudW1Db2x1bW5zKSkge1xuICAgICAgICAgICAgY3VycmVudEJ5dGUgfD0gMTtcbiAgICAgICAgfVxuICAgICAgICBjdXJyZW50Qnl0ZSA8PD0gMTtcbiAgICAgICAgaWYgKHRoaXMucmVhZE1vZHVsZSgwLCBudW1Db2x1bW5zIC0gMSwgbnVtUm93cywgbnVtQ29sdW1ucykpIHtcbiAgICAgICAgICAgIGN1cnJlbnRCeXRlIHw9IDE7XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudEJ5dGUgPDw9IDE7XG4gICAgICAgIGlmICh0aGlzLnJlYWRNb2R1bGUoMSwgbnVtQ29sdW1ucyAtIDEsIG51bVJvd3MsIG51bUNvbHVtbnMpKSB7XG4gICAgICAgICAgICBjdXJyZW50Qnl0ZSB8PSAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjdXJyZW50Qnl0ZTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIDxwPlJlYWRzIHRoZSA4IGJpdHMgb2YgdGhlIHNwZWNpYWwgY29ybmVyIGNvbmRpdGlvbiAzLjwvcD5cbiAgICAgKlxuICAgICAqIDxwPlNlZSBJU08gMTYwMjI6MjAwNiwgRmlndXJlIEYuNTwvcD5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBudW1Sb3dzIE51bWJlciBvZiByb3dzIGluIHRoZSBtYXBwaW5nIG1hdHJpeFxuICAgICAqIEBwYXJhbSBudW1Db2x1bW5zIE51bWJlciBvZiBjb2x1bW5zIGluIHRoZSBtYXBwaW5nIG1hdHJpeFxuICAgICAqIEByZXR1cm4gYnl0ZSBmcm9tIHRoZSBDb3JuZXIgY29uZGl0aW9uIDNcbiAgICAgKi9cbiAgICBCaXRNYXRyaXhQYXJzZXIucHJvdG90eXBlLnJlYWRDb3JuZXIzID0gZnVuY3Rpb24gKG51bVJvd3MsIG51bUNvbHVtbnMpIHtcbiAgICAgICAgdmFyIGN1cnJlbnRCeXRlID0gMDtcbiAgICAgICAgaWYgKHRoaXMucmVhZE1vZHVsZShudW1Sb3dzIC0gMSwgMCwgbnVtUm93cywgbnVtQ29sdW1ucykpIHtcbiAgICAgICAgICAgIGN1cnJlbnRCeXRlIHw9IDE7XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudEJ5dGUgPDw9IDE7XG4gICAgICAgIGlmICh0aGlzLnJlYWRNb2R1bGUobnVtUm93cyAtIDEsIG51bUNvbHVtbnMgLSAxLCBudW1Sb3dzLCBudW1Db2x1bW5zKSkge1xuICAgICAgICAgICAgY3VycmVudEJ5dGUgfD0gMTtcbiAgICAgICAgfVxuICAgICAgICBjdXJyZW50Qnl0ZSA8PD0gMTtcbiAgICAgICAgaWYgKHRoaXMucmVhZE1vZHVsZSgwLCBudW1Db2x1bW5zIC0gMywgbnVtUm93cywgbnVtQ29sdW1ucykpIHtcbiAgICAgICAgICAgIGN1cnJlbnRCeXRlIHw9IDE7XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudEJ5dGUgPDw9IDE7XG4gICAgICAgIGlmICh0aGlzLnJlYWRNb2R1bGUoMCwgbnVtQ29sdW1ucyAtIDIsIG51bVJvd3MsIG51bUNvbHVtbnMpKSB7XG4gICAgICAgICAgICBjdXJyZW50Qnl0ZSB8PSAxO1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnRCeXRlIDw8PSAxO1xuICAgICAgICBpZiAodGhpcy5yZWFkTW9kdWxlKDAsIG51bUNvbHVtbnMgLSAxLCBudW1Sb3dzLCBudW1Db2x1bW5zKSkge1xuICAgICAgICAgICAgY3VycmVudEJ5dGUgfD0gMTtcbiAgICAgICAgfVxuICAgICAgICBjdXJyZW50Qnl0ZSA8PD0gMTtcbiAgICAgICAgaWYgKHRoaXMucmVhZE1vZHVsZSgxLCBudW1Db2x1bW5zIC0gMywgbnVtUm93cywgbnVtQ29sdW1ucykpIHtcbiAgICAgICAgICAgIGN1cnJlbnRCeXRlIHw9IDE7XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudEJ5dGUgPDw9IDE7XG4gICAgICAgIGlmICh0aGlzLnJlYWRNb2R1bGUoMSwgbnVtQ29sdW1ucyAtIDIsIG51bVJvd3MsIG51bUNvbHVtbnMpKSB7XG4gICAgICAgICAgICBjdXJyZW50Qnl0ZSB8PSAxO1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnRCeXRlIDw8PSAxO1xuICAgICAgICBpZiAodGhpcy5yZWFkTW9kdWxlKDEsIG51bUNvbHVtbnMgLSAxLCBudW1Sb3dzLCBudW1Db2x1bW5zKSkge1xuICAgICAgICAgICAgY3VycmVudEJ5dGUgfD0gMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY3VycmVudEJ5dGU7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiA8cD5SZWFkcyB0aGUgOCBiaXRzIG9mIHRoZSBzcGVjaWFsIGNvcm5lciBjb25kaXRpb24gNC48L3A+XG4gICAgICpcbiAgICAgKiA8cD5TZWUgSVNPIDE2MDIyOjIwMDYsIEZpZ3VyZSBGLjY8L3A+XG4gICAgICpcbiAgICAgKiBAcGFyYW0gbnVtUm93cyBOdW1iZXIgb2Ygcm93cyBpbiB0aGUgbWFwcGluZyBtYXRyaXhcbiAgICAgKiBAcGFyYW0gbnVtQ29sdW1ucyBOdW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgbWFwcGluZyBtYXRyaXhcbiAgICAgKiBAcmV0dXJuIGJ5dGUgZnJvbSB0aGUgQ29ybmVyIGNvbmRpdGlvbiA0XG4gICAgICovXG4gICAgQml0TWF0cml4UGFyc2VyLnByb3RvdHlwZS5yZWFkQ29ybmVyNCA9IGZ1bmN0aW9uIChudW1Sb3dzLCBudW1Db2x1bW5zKSB7XG4gICAgICAgIHZhciBjdXJyZW50Qnl0ZSA9IDA7XG4gICAgICAgIGlmICh0aGlzLnJlYWRNb2R1bGUobnVtUm93cyAtIDMsIDAsIG51bVJvd3MsIG51bUNvbHVtbnMpKSB7XG4gICAgICAgICAgICBjdXJyZW50Qnl0ZSB8PSAxO1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnRCeXRlIDw8PSAxO1xuICAgICAgICBpZiAodGhpcy5yZWFkTW9kdWxlKG51bVJvd3MgLSAyLCAwLCBudW1Sb3dzLCBudW1Db2x1bW5zKSkge1xuICAgICAgICAgICAgY3VycmVudEJ5dGUgfD0gMTtcbiAgICAgICAgfVxuICAgICAgICBjdXJyZW50Qnl0ZSA8PD0gMTtcbiAgICAgICAgaWYgKHRoaXMucmVhZE1vZHVsZShudW1Sb3dzIC0gMSwgMCwgbnVtUm93cywgbnVtQ29sdW1ucykpIHtcbiAgICAgICAgICAgIGN1cnJlbnRCeXRlIHw9IDE7XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudEJ5dGUgPDw9IDE7XG4gICAgICAgIGlmICh0aGlzLnJlYWRNb2R1bGUoMCwgbnVtQ29sdW1ucyAtIDIsIG51bVJvd3MsIG51bUNvbHVtbnMpKSB7XG4gICAgICAgICAgICBjdXJyZW50Qnl0ZSB8PSAxO1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnRCeXRlIDw8PSAxO1xuICAgICAgICBpZiAodGhpcy5yZWFkTW9kdWxlKDAsIG51bUNvbHVtbnMgLSAxLCBudW1Sb3dzLCBudW1Db2x1bW5zKSkge1xuICAgICAgICAgICAgY3VycmVudEJ5dGUgfD0gMTtcbiAgICAgICAgfVxuICAgICAgICBjdXJyZW50Qnl0ZSA8PD0gMTtcbiAgICAgICAgaWYgKHRoaXMucmVhZE1vZHVsZSgxLCBudW1Db2x1bW5zIC0gMSwgbnVtUm93cywgbnVtQ29sdW1ucykpIHtcbiAgICAgICAgICAgIGN1cnJlbnRCeXRlIHw9IDE7XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudEJ5dGUgPDw9IDE7XG4gICAgICAgIGlmICh0aGlzLnJlYWRNb2R1bGUoMiwgbnVtQ29sdW1ucyAtIDEsIG51bVJvd3MsIG51bUNvbHVtbnMpKSB7XG4gICAgICAgICAgICBjdXJyZW50Qnl0ZSB8PSAxO1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnRCeXRlIDw8PSAxO1xuICAgICAgICBpZiAodGhpcy5yZWFkTW9kdWxlKDMsIG51bUNvbHVtbnMgLSAxLCBudW1Sb3dzLCBudW1Db2x1bW5zKSkge1xuICAgICAgICAgICAgY3VycmVudEJ5dGUgfD0gMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY3VycmVudEJ5dGU7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiA8cD5FeHRyYWN0cyB0aGUgZGF0YSByZWdpb24gZnJvbSBhIHtAbGluayBCaXRNYXRyaXh9IHRoYXQgY29udGFpbnNcbiAgICAgKiBhbGlnbm1lbnQgcGF0dGVybnMuPC9wPlxuICAgICAqXG4gICAgICogQHBhcmFtIGJpdE1hdHJpeCBPcmlnaW5hbCB7QGxpbmsgQml0TWF0cml4fSB3aXRoIGFsaWdubWVudCBwYXR0ZXJuc1xuICAgICAqIEByZXR1cm4gQml0TWF0cml4IHRoYXQgaGFzIHRoZSBhbGlnbm1lbnQgcGF0dGVybnMgcmVtb3ZlZFxuICAgICAqL1xuICAgIEJpdE1hdHJpeFBhcnNlci5wcm90b3R5cGUuZXh0cmFjdERhdGFSZWdpb24gPSBmdW5jdGlvbiAoYml0TWF0cml4KSB7XG4gICAgICAgIHZhciBzeW1ib2xTaXplUm93cyA9IHRoaXMudmVyc2lvbi5nZXRTeW1ib2xTaXplUm93cygpO1xuICAgICAgICB2YXIgc3ltYm9sU2l6ZUNvbHVtbnMgPSB0aGlzLnZlcnNpb24uZ2V0U3ltYm9sU2l6ZUNvbHVtbnMoKTtcbiAgICAgICAgaWYgKGJpdE1hdHJpeC5nZXRIZWlnaHQoKSAhPT0gc3ltYm9sU2l6ZVJvd3MpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCdEaW1lbnNpb24gb2YgYml0TWF0cml4IG11c3QgbWF0Y2ggdGhlIHZlcnNpb24gc2l6ZScpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBkYXRhUmVnaW9uU2l6ZVJvd3MgPSB0aGlzLnZlcnNpb24uZ2V0RGF0YVJlZ2lvblNpemVSb3dzKCk7XG4gICAgICAgIHZhciBkYXRhUmVnaW9uU2l6ZUNvbHVtbnMgPSB0aGlzLnZlcnNpb24uZ2V0RGF0YVJlZ2lvblNpemVDb2x1bW5zKCk7XG4gICAgICAgIHZhciBudW1EYXRhUmVnaW9uc1JvdyA9IHN5bWJvbFNpemVSb3dzIC8gZGF0YVJlZ2lvblNpemVSb3dzIHwgMDtcbiAgICAgICAgdmFyIG51bURhdGFSZWdpb25zQ29sdW1uID0gc3ltYm9sU2l6ZUNvbHVtbnMgLyBkYXRhUmVnaW9uU2l6ZUNvbHVtbnMgfCAwO1xuICAgICAgICB2YXIgc2l6ZURhdGFSZWdpb25Sb3cgPSBudW1EYXRhUmVnaW9uc1JvdyAqIGRhdGFSZWdpb25TaXplUm93cztcbiAgICAgICAgdmFyIHNpemVEYXRhUmVnaW9uQ29sdW1uID0gbnVtRGF0YVJlZ2lvbnNDb2x1bW4gKiBkYXRhUmVnaW9uU2l6ZUNvbHVtbnM7XG4gICAgICAgIHZhciBiaXRNYXRyaXhXaXRob3V0QWxpZ25tZW50ID0gbmV3IEJpdE1hdHJpeF8xLmRlZmF1bHQoc2l6ZURhdGFSZWdpb25Db2x1bW4sIHNpemVEYXRhUmVnaW9uUm93KTtcbiAgICAgICAgZm9yICh2YXIgZGF0YVJlZ2lvblJvdyA9IDA7IGRhdGFSZWdpb25Sb3cgPCBudW1EYXRhUmVnaW9uc1JvdzsgKytkYXRhUmVnaW9uUm93KSB7XG4gICAgICAgICAgICB2YXIgZGF0YVJlZ2lvblJvd09mZnNldCA9IGRhdGFSZWdpb25Sb3cgKiBkYXRhUmVnaW9uU2l6ZVJvd3M7XG4gICAgICAgICAgICBmb3IgKHZhciBkYXRhUmVnaW9uQ29sdW1uID0gMDsgZGF0YVJlZ2lvbkNvbHVtbiA8IG51bURhdGFSZWdpb25zQ29sdW1uOyArK2RhdGFSZWdpb25Db2x1bW4pIHtcbiAgICAgICAgICAgICAgICB2YXIgZGF0YVJlZ2lvbkNvbHVtbk9mZnNldCA9IGRhdGFSZWdpb25Db2x1bW4gKiBkYXRhUmVnaW9uU2l6ZUNvbHVtbnM7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhUmVnaW9uU2l6ZVJvd3M7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVhZFJvd09mZnNldCA9IGRhdGFSZWdpb25Sb3cgKiAoZGF0YVJlZ2lvblNpemVSb3dzICsgMikgKyAxICsgaTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHdyaXRlUm93T2Zmc2V0ID0gZGF0YVJlZ2lvblJvd09mZnNldCArIGk7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZGF0YVJlZ2lvblNpemVDb2x1bW5zOyArK2opIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZWFkQ29sdW1uT2Zmc2V0ID0gZGF0YVJlZ2lvbkNvbHVtbiAqIChkYXRhUmVnaW9uU2l6ZUNvbHVtbnMgKyAyKSArIDEgKyBqO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJpdE1hdHJpeC5nZXQocmVhZENvbHVtbk9mZnNldCwgcmVhZFJvd09mZnNldCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgd3JpdGVDb2x1bW5PZmZzZXQgPSBkYXRhUmVnaW9uQ29sdW1uT2Zmc2V0ICsgajtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaXRNYXRyaXhXaXRob3V0QWxpZ25tZW50LnNldCh3cml0ZUNvbHVtbk9mZnNldCwgd3JpdGVSb3dPZmZzZXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBiaXRNYXRyaXhXaXRob3V0QWxpZ25tZW50O1xuICAgIH07XG4gICAgcmV0dXJuIEJpdE1hdHJpeFBhcnNlcjtcbn0oKSk7XG5leHBvcnRzLmRlZmF1bHQgPSBCaXRNYXRyaXhQYXJzZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1CaXRNYXRyaXhQYXJzZXIuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX192YWx1ZXMgPSAodGhpcyAmJiB0aGlzLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7XG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEgPSByZXF1aXJlKFwiLi4vLi4vSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXCIpO1xuLypcbiAqIENvcHlyaWdodCAyMDA4IFpYaW5nIGF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIDxwPkVuY2Fwc3VsYXRlcyBhIGJsb2NrIG9mIGRhdGEgd2l0aGluIGEgRGF0YSBNYXRyaXggQ29kZS4gRGF0YSBNYXRyaXggQ29kZXMgbWF5IHNwbGl0IHRoZWlyIGRhdGEgaW50b1xuICogbXVsdGlwbGUgYmxvY2tzLCBlYWNoIG9mIHdoaWNoIGlzIGEgdW5pdCBvZiBkYXRhIGFuZCBlcnJvci1jb3JyZWN0aW9uIGNvZGV3b3Jkcy4gRWFjaFxuICogaXMgcmVwcmVzZW50ZWQgYnkgYW4gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcy48L3A+XG4gKlxuICogQGF1dGhvciBiYnJvd25AZ29vZ2xlLmNvbSAoQnJpYW4gQnJvd24pXG4gKi9cbnZhciBEYXRhQmxvY2sgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRGF0YUJsb2NrKG51bURhdGFDb2Rld29yZHMsIGNvZGV3b3Jkcykge1xuICAgICAgICB0aGlzLm51bURhdGFDb2Rld29yZHMgPSBudW1EYXRhQ29kZXdvcmRzO1xuICAgICAgICB0aGlzLmNvZGV3b3JkcyA9IGNvZGV3b3JkcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogPHA+V2hlbiBEYXRhIE1hdHJpeCBDb2RlcyB1c2UgbXVsdGlwbGUgZGF0YSBibG9ja3MsIHRoZXkgYWN0dWFsbHkgaW50ZXJsZWF2ZSB0aGUgYnl0ZXMgb2YgZWFjaCBvZiB0aGVtLlxuICAgICAqIFRoYXQgaXMsIHRoZSBmaXJzdCBieXRlIG9mIGRhdGEgYmxvY2sgMSB0byBuIGlzIHdyaXR0ZW4sIHRoZW4gdGhlIHNlY29uZCBieXRlcywgYW5kIHNvIG9uLiBUaGlzXG4gICAgICogbWV0aG9kIHdpbGwgc2VwYXJhdGUgdGhlIGRhdGEgaW50byBvcmlnaW5hbCBibG9ja3MuPC9wPlxuICAgICAqXG4gICAgICogQHBhcmFtIHJhd0NvZGV3b3JkcyBieXRlcyBhcyByZWFkIGRpcmVjdGx5IGZyb20gdGhlIERhdGEgTWF0cml4IENvZGVcbiAgICAgKiBAcGFyYW0gdmVyc2lvbiB2ZXJzaW9uIG9mIHRoZSBEYXRhIE1hdHJpeCBDb2RlXG4gICAgICogQHJldHVybiBEYXRhQmxvY2tzIGNvbnRhaW5pbmcgb3JpZ2luYWwgYnl0ZXMsIFwiZGUtaW50ZXJsZWF2ZWRcIiBmcm9tIHJlcHJlc2VudGF0aW9uIGluIHRoZVxuICAgICAqICAgICAgICAgRGF0YSBNYXRyaXggQ29kZVxuICAgICAqL1xuICAgIERhdGFCbG9jay5nZXREYXRhQmxvY2tzID0gZnVuY3Rpb24gKHJhd0NvZGV3b3JkcywgdmVyc2lvbikge1xuICAgICAgICB2YXIgZV8xLCBfYSwgZV8yLCBfYjtcbiAgICAgICAgLy8gRmlndXJlIG91dCB0aGUgbnVtYmVyIGFuZCBzaXplIG9mIGRhdGEgYmxvY2tzIHVzZWQgYnkgdGhpcyB2ZXJzaW9uXG4gICAgICAgIHZhciBlY0Jsb2NrcyA9IHZlcnNpb24uZ2V0RUNCbG9ja3MoKTtcbiAgICAgICAgLy8gRmlyc3QgY291bnQgdGhlIHRvdGFsIG51bWJlciBvZiBkYXRhIGJsb2Nrc1xuICAgICAgICB2YXIgdG90YWxCbG9ja3MgPSAwO1xuICAgICAgICB2YXIgZWNCbG9ja0FycmF5ID0gZWNCbG9ja3MuZ2V0RUNCbG9ja3MoKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAodmFyIGVjQmxvY2tBcnJheV8xID0gX192YWx1ZXMoZWNCbG9ja0FycmF5KSwgZWNCbG9ja0FycmF5XzFfMSA9IGVjQmxvY2tBcnJheV8xLm5leHQoKTsgIWVjQmxvY2tBcnJheV8xXzEuZG9uZTsgZWNCbG9ja0FycmF5XzFfMSA9IGVjQmxvY2tBcnJheV8xLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciBlY0Jsb2NrID0gZWNCbG9ja0FycmF5XzFfMS52YWx1ZTtcbiAgICAgICAgICAgICAgICB0b3RhbEJsb2NrcyArPSBlY0Jsb2NrLmdldENvdW50KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChlY0Jsb2NrQXJyYXlfMV8xICYmICFlY0Jsb2NrQXJyYXlfMV8xLmRvbmUgJiYgKF9hID0gZWNCbG9ja0FycmF5XzEucmV0dXJuKSkgX2EuY2FsbChlY0Jsb2NrQXJyYXlfMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gTm93IGVzdGFibGlzaCBEYXRhQmxvY2tzIG9mIHRoZSBhcHByb3ByaWF0ZSBzaXplIGFuZCBudW1iZXIgb2YgZGF0YSBjb2Rld29yZHNcbiAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBBcnJheSh0b3RhbEJsb2Nrcyk7XG4gICAgICAgIHZhciBudW1SZXN1bHRCbG9ja3MgPSAwO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yICh2YXIgZWNCbG9ja0FycmF5XzIgPSBfX3ZhbHVlcyhlY0Jsb2NrQXJyYXkpLCBlY0Jsb2NrQXJyYXlfMl8xID0gZWNCbG9ja0FycmF5XzIubmV4dCgpOyAhZWNCbG9ja0FycmF5XzJfMS5kb25lOyBlY0Jsb2NrQXJyYXlfMl8xID0gZWNCbG9ja0FycmF5XzIubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIGVjQmxvY2sgPSBlY0Jsb2NrQXJyYXlfMl8xLnZhbHVlO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWNCbG9jay5nZXRDb3VudCgpOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG51bURhdGFDb2Rld29yZHMgPSBlY0Jsb2NrLmdldERhdGFDb2Rld29yZHMoKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG51bUJsb2NrQ29kZXdvcmRzID0gZWNCbG9ja3MuZ2V0RUNDb2Rld29yZHMoKSArIG51bURhdGFDb2Rld29yZHM7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdFtudW1SZXN1bHRCbG9ja3MrK10gPSBuZXcgRGF0YUJsb2NrKG51bURhdGFDb2Rld29yZHMsIG5ldyBVaW50OEFycmF5KG51bUJsb2NrQ29kZXdvcmRzKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlXzJfMSkgeyBlXzIgPSB7IGVycm9yOiBlXzJfMSB9OyB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoZWNCbG9ja0FycmF5XzJfMSAmJiAhZWNCbG9ja0FycmF5XzJfMS5kb25lICYmIChfYiA9IGVjQmxvY2tBcnJheV8yLnJldHVybikpIF9iLmNhbGwoZWNCbG9ja0FycmF5XzIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzIpIHRocm93IGVfMi5lcnJvcjsgfVxuICAgICAgICB9XG4gICAgICAgIC8vIEFsbCBibG9ja3MgaGF2ZSB0aGUgc2FtZSBhbW91bnQgb2YgZGF0YSwgZXhjZXB0IHRoYXQgdGhlIGxhc3QgblxuICAgICAgICAvLyAod2hlcmUgbiBtYXkgYmUgMCkgaGF2ZSAxIGxlc3MgYnl0ZS4gRmlndXJlIG91dCB3aGVyZSB0aGVzZSBzdGFydC5cbiAgICAgICAgLy8gVE9ETyhiYnJvd24pOiBUaGVyZSBpcyBvbmx5IG9uZSBjYXNlIHdoZXJlIHRoZXJlIGlzIGEgZGlmZmVyZW5jZSBmb3IgRGF0YSBNYXRyaXggZm9yIHNpemUgMTQ0XG4gICAgICAgIHZhciBsb25nZXJCbG9ja3NUb3RhbENvZGV3b3JkcyA9IHJlc3VsdFswXS5jb2Rld29yZHMubGVuZ3RoO1xuICAgICAgICAvLyBpbnQgc2hvcnRlckJsb2Nrc1RvdGFsQ29kZXdvcmRzID0gbG9uZ2VyQmxvY2tzVG90YWxDb2Rld29yZHMgLSAxO1xuICAgICAgICB2YXIgbG9uZ2VyQmxvY2tzTnVtRGF0YUNvZGV3b3JkcyA9IGxvbmdlckJsb2Nrc1RvdGFsQ29kZXdvcmRzIC0gZWNCbG9ja3MuZ2V0RUNDb2Rld29yZHMoKTtcbiAgICAgICAgdmFyIHNob3J0ZXJCbG9ja3NOdW1EYXRhQ29kZXdvcmRzID0gbG9uZ2VyQmxvY2tzTnVtRGF0YUNvZGV3b3JkcyAtIDE7XG4gICAgICAgIC8vIFRoZSBsYXN0IGVsZW1lbnRzIG9mIHJlc3VsdCBtYXkgYmUgMSBlbGVtZW50IHNob3J0ZXIgZm9yIDE0NCBtYXRyaXhcbiAgICAgICAgLy8gZmlyc3QgZmlsbCBvdXQgYXMgbWFueSBlbGVtZW50cyBhcyBhbGwgb2YgdGhlbSBoYXZlIG1pbnVzIDFcbiAgICAgICAgdmFyIHJhd0NvZGV3b3Jkc09mZnNldCA9IDA7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2hvcnRlckJsb2Nrc051bURhdGFDb2Rld29yZHM7IGkrKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBudW1SZXN1bHRCbG9ja3M7IGorKykge1xuICAgICAgICAgICAgICAgIHJlc3VsdFtqXS5jb2Rld29yZHNbaV0gPSByYXdDb2Rld29yZHNbcmF3Q29kZXdvcmRzT2Zmc2V0KytdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIEZpbGwgb3V0IHRoZSBsYXN0IGRhdGEgYmxvY2sgaW4gdGhlIGxvbmdlciBvbmVzXG4gICAgICAgIHZhciBzcGVjaWFsVmVyc2lvbiA9IHZlcnNpb24uZ2V0VmVyc2lvbk51bWJlcigpID09PSAyNDtcbiAgICAgICAgdmFyIG51bUxvbmdlckJsb2NrcyA9IHNwZWNpYWxWZXJzaW9uID8gOCA6IG51bVJlc3VsdEJsb2NrcztcbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBudW1Mb25nZXJCbG9ja3M7IGorKykge1xuICAgICAgICAgICAgcmVzdWx0W2pdLmNvZGV3b3Jkc1tsb25nZXJCbG9ja3NOdW1EYXRhQ29kZXdvcmRzIC0gMV0gPSByYXdDb2Rld29yZHNbcmF3Q29kZXdvcmRzT2Zmc2V0KytdO1xuICAgICAgICB9XG4gICAgICAgIC8vIE5vdyBhZGQgaW4gZXJyb3IgY29ycmVjdGlvbiBibG9ja3NcbiAgICAgICAgdmFyIG1heCA9IHJlc3VsdFswXS5jb2Rld29yZHMubGVuZ3RoO1xuICAgICAgICBmb3IgKHZhciBpID0gbG9uZ2VyQmxvY2tzTnVtRGF0YUNvZGV3b3JkczsgaSA8IG1heDsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG51bVJlc3VsdEJsb2NrczsgaisrKSB7XG4gICAgICAgICAgICAgICAgdmFyIGpPZmZzZXQgPSBzcGVjaWFsVmVyc2lvbiA/IChqICsgOCkgJSBudW1SZXN1bHRCbG9ja3MgOiBqO1xuICAgICAgICAgICAgICAgIHZhciBpT2Zmc2V0ID0gc3BlY2lhbFZlcnNpb24gJiYgak9mZnNldCA+IDcgPyBpIC0gMSA6IGk7XG4gICAgICAgICAgICAgICAgcmVzdWx0W2pPZmZzZXRdLmNvZGV3b3Jkc1tpT2Zmc2V0XSA9IHJhd0NvZGV3b3Jkc1tyYXdDb2Rld29yZHNPZmZzZXQrK107XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJhd0NvZGV3b3Jkc09mZnNldCAhPT0gcmF3Q29kZXdvcmRzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgRGF0YUJsb2NrLnByb3RvdHlwZS5nZXROdW1EYXRhQ29kZXdvcmRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5udW1EYXRhQ29kZXdvcmRzO1xuICAgIH07XG4gICAgRGF0YUJsb2NrLnByb3RvdHlwZS5nZXRDb2Rld29yZHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvZGV3b3JkcztcbiAgICB9O1xuICAgIHJldHVybiBEYXRhQmxvY2s7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gRGF0YUJsb2NrO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RGF0YUJsb2NrLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuLypcbiAqIENvcHlyaWdodCAyMDA3IFpYaW5nIGF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vKm5hbWVzcGFjZSBjb20uZ29vZ2xlLnp4aW5nLmNvbW1vbiB7Ki9cbnZhciBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuLi9JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25cIik7XG4vKipcbiAqIDxwPlRoaXMgcHJvdmlkZXMgYW4gZWFzeSBhYnN0cmFjdGlvbiB0byByZWFkIGJpdHMgYXQgYSB0aW1lIGZyb20gYSBzZXF1ZW5jZSBvZiBieXRlcywgd2hlcmUgdGhlXG4gKiBudW1iZXIgb2YgYml0cyByZWFkIGlzIG5vdCBvZnRlbiBhIG11bHRpcGxlIG9mIDguPC9wPlxuICpcbiAqIDxwPlRoaXMgY2xhc3MgaXMgdGhyZWFkLXNhZmUgYnV0IG5vdCByZWVudHJhbnQgLS0gdW5sZXNzIHRoZSBjYWxsZXIgbW9kaWZpZXMgdGhlIGJ5dGVzIGFycmF5XG4gKiBpdCBwYXNzZWQgaW4sIGluIHdoaWNoIGNhc2UgYWxsIGJldHMgYXJlIG9mZi48L3A+XG4gKlxuICogQGF1dGhvciBTZWFuIE93ZW5cbiAqL1xudmFyIEJpdFNvdXJjZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0gYnl0ZXMgYnl0ZXMgZnJvbSB3aGljaCB0aGlzIHdpbGwgcmVhZCBiaXRzLiBCaXRzIHdpbGwgYmUgcmVhZCBmcm9tIHRoZSBmaXJzdCBieXRlIGZpcnN0LlxuICAgICAqIEJpdHMgYXJlIHJlYWQgd2l0aGluIGEgYnl0ZSBmcm9tIG1vc3Qtc2lnbmlmaWNhbnQgdG8gbGVhc3Qtc2lnbmlmaWNhbnQgYml0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIEJpdFNvdXJjZShieXRlcykge1xuICAgICAgICB0aGlzLmJ5dGVzID0gYnl0ZXM7XG4gICAgICAgIHRoaXMuYnl0ZU9mZnNldCA9IDA7XG4gICAgICAgIHRoaXMuYml0T2Zmc2V0ID0gMDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQHJldHVybiBpbmRleCBvZiBuZXh0IGJpdCBpbiBjdXJyZW50IGJ5dGUgd2hpY2ggd291bGQgYmUgcmVhZCBieSB0aGUgbmV4dCBjYWxsIHRvIHtAbGluayAjcmVhZEJpdHMoaW50KX0uXG4gICAgICovXG4gICAgQml0U291cmNlLnByb3RvdHlwZS5nZXRCaXRPZmZzZXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJpdE9mZnNldDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEByZXR1cm4gaW5kZXggb2YgbmV4dCBieXRlIGluIGlucHV0IGJ5dGUgYXJyYXkgd2hpY2ggd291bGQgYmUgcmVhZCBieSB0aGUgbmV4dCBjYWxsIHRvIHtAbGluayAjcmVhZEJpdHMoaW50KX0uXG4gICAgICovXG4gICAgQml0U291cmNlLnByb3RvdHlwZS5nZXRCeXRlT2Zmc2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ieXRlT2Zmc2V0O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHBhcmFtIG51bUJpdHMgbnVtYmVyIG9mIGJpdHMgdG8gcmVhZFxuICAgICAqIEByZXR1cm4gaW50IHJlcHJlc2VudGluZyB0aGUgYml0cyByZWFkLiBUaGUgYml0cyB3aWxsIGFwcGVhciBhcyB0aGUgbGVhc3Qtc2lnbmlmaWNhbnRcbiAgICAgKiAgICAgICAgIGJpdHMgb2YgdGhlIGludFxuICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIG51bUJpdHMgaXNuJ3QgaW4gWzEsMzJdIG9yIG1vcmUgdGhhbiBpcyBhdmFpbGFibGVcbiAgICAgKi9cbiAgICBCaXRTb3VyY2UucHJvdG90eXBlLnJlYWRCaXRzID0gZnVuY3Rpb24gKG51bUJpdHMgLyppbnQqLykge1xuICAgICAgICBpZiAobnVtQml0cyA8IDEgfHwgbnVtQml0cyA+IDMyIHx8IG51bUJpdHMgPiB0aGlzLmF2YWlsYWJsZSgpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgnJyArIG51bUJpdHMpO1xuICAgICAgICB9XG4gICAgICAgIHZhciByZXN1bHQgPSAwO1xuICAgICAgICB2YXIgYml0T2Zmc2V0ID0gdGhpcy5iaXRPZmZzZXQ7XG4gICAgICAgIHZhciBieXRlT2Zmc2V0ID0gdGhpcy5ieXRlT2Zmc2V0O1xuICAgICAgICB2YXIgYnl0ZXMgPSB0aGlzLmJ5dGVzO1xuICAgICAgICAvLyBGaXJzdCwgcmVhZCByZW1haW5kZXIgZnJvbSBjdXJyZW50IGJ5dGVcbiAgICAgICAgaWYgKGJpdE9mZnNldCA+IDApIHtcbiAgICAgICAgICAgIHZhciBiaXRzTGVmdCA9IDggLSBiaXRPZmZzZXQ7XG4gICAgICAgICAgICB2YXIgdG9SZWFkID0gbnVtQml0cyA8IGJpdHNMZWZ0ID8gbnVtQml0cyA6IGJpdHNMZWZ0O1xuICAgICAgICAgICAgdmFyIGJpdHNUb05vdFJlYWQgPSBiaXRzTGVmdCAtIHRvUmVhZDtcbiAgICAgICAgICAgIHZhciBtYXNrID0gKDB4RkYgPj4gKDggLSB0b1JlYWQpKSA8PCBiaXRzVG9Ob3RSZWFkO1xuICAgICAgICAgICAgcmVzdWx0ID0gKGJ5dGVzW2J5dGVPZmZzZXRdICYgbWFzaykgPj4gYml0c1RvTm90UmVhZDtcbiAgICAgICAgICAgIG51bUJpdHMgLT0gdG9SZWFkO1xuICAgICAgICAgICAgYml0T2Zmc2V0ICs9IHRvUmVhZDtcbiAgICAgICAgICAgIGlmIChiaXRPZmZzZXQgPT09IDgpIHtcbiAgICAgICAgICAgICAgICBiaXRPZmZzZXQgPSAwO1xuICAgICAgICAgICAgICAgIGJ5dGVPZmZzZXQrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBOZXh0IHJlYWQgd2hvbGUgYnl0ZXNcbiAgICAgICAgaWYgKG51bUJpdHMgPiAwKSB7XG4gICAgICAgICAgICB3aGlsZSAobnVtQml0cyA+PSA4KSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCA8PCA4KSB8IChieXRlc1tieXRlT2Zmc2V0XSAmIDB4RkYpO1xuICAgICAgICAgICAgICAgIGJ5dGVPZmZzZXQrKztcbiAgICAgICAgICAgICAgICBudW1CaXRzIC09IDg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBGaW5hbGx5IHJlYWQgYSBwYXJ0aWFsIGJ5dGVcbiAgICAgICAgICAgIGlmIChudW1CaXRzID4gMCkge1xuICAgICAgICAgICAgICAgIHZhciBiaXRzVG9Ob3RSZWFkID0gOCAtIG51bUJpdHM7XG4gICAgICAgICAgICAgICAgdmFyIG1hc2sgPSAoMHhGRiA+PiBiaXRzVG9Ob3RSZWFkKSA8PCBiaXRzVG9Ob3RSZWFkO1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgPDwgbnVtQml0cykgfCAoKGJ5dGVzW2J5dGVPZmZzZXRdICYgbWFzaykgPj4gYml0c1RvTm90UmVhZCk7XG4gICAgICAgICAgICAgICAgYml0T2Zmc2V0ICs9IG51bUJpdHM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5iaXRPZmZzZXQgPSBiaXRPZmZzZXQ7XG4gICAgICAgIHRoaXMuYnl0ZU9mZnNldCA9IGJ5dGVPZmZzZXQ7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIG51bWJlciBvZiBiaXRzIHRoYXQgY2FuIGJlIHJlYWQgc3VjY2Vzc2Z1bGx5XG4gICAgICovXG4gICAgQml0U291cmNlLnByb3RvdHlwZS5hdmFpbGFibGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiA4ICogKHRoaXMuYnl0ZXMubGVuZ3RoIC0gdGhpcy5ieXRlT2Zmc2V0KSAtIHRoaXMuYml0T2Zmc2V0O1xuICAgIH07XG4gICAgcmV0dXJuIEJpdFNvdXJjZTtcbn0oKSk7XG5leHBvcnRzLmRlZmF1bHQgPSBCaXRTb3VyY2U7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1CaXRTb3VyY2UuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgRGVjb2RlclJlc3VsdF8xID0gcmVxdWlyZShcIi4uLy4uL2NvbW1vbi9EZWNvZGVyUmVzdWx0XCIpO1xudmFyIEJpdFNvdXJjZV8xID0gcmVxdWlyZShcIi4uLy4uL2NvbW1vbi9CaXRTb3VyY2VcIik7XG52YXIgU3RyaW5nQnVpbGRlcl8xID0gcmVxdWlyZShcIi4uLy4uL3V0aWwvU3RyaW5nQnVpbGRlclwiKTtcbnZhciBTdHJpbmdFbmNvZGluZ18xID0gcmVxdWlyZShcIi4uLy4uL3V0aWwvU3RyaW5nRW5jb2RpbmdcIik7XG52YXIgU3RyaW5nVXRpbHNfMSA9IHJlcXVpcmUoXCIuLi8uLi9jb21tb24vU3RyaW5nVXRpbHNcIik7XG52YXIgRm9ybWF0RXhjZXB0aW9uXzEgPSByZXF1aXJlKFwiLi4vLi4vRm9ybWF0RXhjZXB0aW9uXCIpO1xudmFyIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4uLy4uL0lsbGVnYWxTdGF0ZUV4Y2VwdGlvblwiKTtcbi8qXG4gKiBDb3B5cmlnaHQgMjAwOCBaWGluZyBhdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIE1vZGU7XG4oZnVuY3Rpb24gKE1vZGUpIHtcbiAgICBNb2RlW01vZGVbXCJQQURfRU5DT0RFXCJdID0gMF0gPSBcIlBBRF9FTkNPREVcIjtcbiAgICBNb2RlW01vZGVbXCJBU0NJSV9FTkNPREVcIl0gPSAxXSA9IFwiQVNDSUlfRU5DT0RFXCI7XG4gICAgTW9kZVtNb2RlW1wiQzQwX0VOQ09ERVwiXSA9IDJdID0gXCJDNDBfRU5DT0RFXCI7XG4gICAgTW9kZVtNb2RlW1wiVEVYVF9FTkNPREVcIl0gPSAzXSA9IFwiVEVYVF9FTkNPREVcIjtcbiAgICBNb2RlW01vZGVbXCJBTlNJWDEyX0VOQ09ERVwiXSA9IDRdID0gXCJBTlNJWDEyX0VOQ09ERVwiO1xuICAgIE1vZGVbTW9kZVtcIkVESUZBQ1RfRU5DT0RFXCJdID0gNV0gPSBcIkVESUZBQ1RfRU5DT0RFXCI7XG4gICAgTW9kZVtNb2RlW1wiQkFTRTI1Nl9FTkNPREVcIl0gPSA2XSA9IFwiQkFTRTI1Nl9FTkNPREVcIjtcbn0pKE1vZGUgfHwgKE1vZGUgPSB7fSkpO1xuLyoqXG4gKiA8cD5EYXRhIE1hdHJpeCBDb2RlcyBjYW4gZW5jb2RlIHRleHQgYXMgYml0cyBpbiBvbmUgb2Ygc2V2ZXJhbCBtb2RlcywgYW5kIGNhbiB1c2UgbXVsdGlwbGUgbW9kZXNcbiAqIGluIG9uZSBEYXRhIE1hdHJpeCBDb2RlLiBUaGlzIGNsYXNzIGRlY29kZXMgdGhlIGJpdHMgYmFjayBpbnRvIHRleHQuPC9wPlxuICpcbiAqIDxwPlNlZSBJU08gMTYwMjI6MjAwNiwgNS4yLjEgLSA1LjIuOS4yPC9wPlxuICpcbiAqIEBhdXRob3IgYmJyb3duQGdvb2dsZS5jb20gKEJyaWFuIEJyb3duKVxuICogQGF1dGhvciBTZWFuIE93ZW5cbiAqL1xudmFyIERlY29kZWRCaXRTdHJlYW1QYXJzZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRGVjb2RlZEJpdFN0cmVhbVBhcnNlcigpIHtcbiAgICB9XG4gICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5kZWNvZGUgPSBmdW5jdGlvbiAoYnl0ZXMpIHtcbiAgICAgICAgdmFyIGJpdHMgPSBuZXcgQml0U291cmNlXzEuZGVmYXVsdChieXRlcyk7XG4gICAgICAgIHZhciByZXN1bHQgPSBuZXcgU3RyaW5nQnVpbGRlcl8xLmRlZmF1bHQoKTtcbiAgICAgICAgdmFyIHJlc3VsdFRyYWlsZXIgPSBuZXcgU3RyaW5nQnVpbGRlcl8xLmRlZmF1bHQoKTtcbiAgICAgICAgdmFyIGJ5dGVTZWdtZW50cyA9IG5ldyBBcnJheSgpO1xuICAgICAgICB2YXIgbW9kZSA9IE1vZGUuQVNDSUlfRU5DT0RFO1xuICAgICAgICBkbyB7XG4gICAgICAgICAgICBpZiAobW9kZSA9PT0gTW9kZS5BU0NJSV9FTkNPREUpIHtcbiAgICAgICAgICAgICAgICBtb2RlID0gdGhpcy5kZWNvZGVBc2NpaVNlZ21lbnQoYml0cywgcmVzdWx0LCByZXN1bHRUcmFpbGVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAobW9kZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIE1vZGUuQzQwX0VOQ09ERTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVjb2RlQzQwU2VnbWVudChiaXRzLCByZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgTW9kZS5URVhUX0VOQ09ERTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVjb2RlVGV4dFNlZ21lbnQoYml0cywgcmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIE1vZGUuQU5TSVgxMl9FTkNPREU6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlY29kZUFuc2lYMTJTZWdtZW50KGJpdHMsIHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBNb2RlLkVESUZBQ1RfRU5DT0RFOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWNvZGVFZGlmYWN0U2VnbWVudChiaXRzLCByZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgTW9kZS5CQVNFMjU2X0VOQ09ERTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVjb2RlQmFzZTI1NlNlZ21lbnQoYml0cywgcmVzdWx0LCBieXRlU2VnbWVudHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBtb2RlID0gTW9kZS5BU0NJSV9FTkNPREU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gd2hpbGUgKG1vZGUgIT09IE1vZGUuUEFEX0VOQ09ERSAmJiBiaXRzLmF2YWlsYWJsZSgpID4gMCk7XG4gICAgICAgIGlmIChyZXN1bHRUcmFpbGVyLmxlbmd0aCgpID4gMCkge1xuICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChyZXN1bHRUcmFpbGVyLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgRGVjb2RlclJlc3VsdF8xLmRlZmF1bHQoYnl0ZXMsIHJlc3VsdC50b1N0cmluZygpLCBieXRlU2VnbWVudHMubGVuZ3RoID09PSAwID8gbnVsbCA6IGJ5dGVTZWdtZW50cywgbnVsbCk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBTZWUgSVNPIDE2MDIyOjIwMDYsIDUuMi4zIGFuZCBBbm5leCBDLCBUYWJsZSBDLjJcbiAgICAgKi9cbiAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLmRlY29kZUFzY2lpU2VnbWVudCA9IGZ1bmN0aW9uIChiaXRzLCByZXN1bHQsIHJlc3VsdFRyYWlsZXIpIHtcbiAgICAgICAgdmFyIHVwcGVyU2hpZnQgPSBmYWxzZTtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgdmFyIG9uZUJ5dGUgPSBiaXRzLnJlYWRCaXRzKDgpO1xuICAgICAgICAgICAgaWYgKG9uZUJ5dGUgPT09IDApIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAob25lQnl0ZSA8PSAxMjgpIHsgLy8gQVNDSUkgZGF0YSAoQVNDSUkgdmFsdWUgKyAxKVxuICAgICAgICAgICAgICAgIGlmICh1cHBlclNoaWZ0KSB7XG4gICAgICAgICAgICAgICAgICAgIG9uZUJ5dGUgKz0gMTI4O1xuICAgICAgICAgICAgICAgICAgICAvLyB1cHBlclNoaWZ0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nLmZyb21DaGFyQ29kZShvbmVCeXRlIC0gMSkpO1xuICAgICAgICAgICAgICAgIHJldHVybiBNb2RlLkFTQ0lJX0VOQ09ERTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKG9uZUJ5dGUgPT09IDEyOSkgeyAvLyBQYWRcbiAgICAgICAgICAgICAgICByZXR1cm4gTW9kZS5QQURfRU5DT0RFO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAob25lQnl0ZSA8PSAyMjkpIHsgLy8gMi1kaWdpdCBkYXRhIDAwLTk5IChOdW1lcmljIFZhbHVlICsgMTMwKVxuICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IG9uZUJ5dGUgLSAxMzA7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlIDwgMTApIHsgLy8gcGFkIHdpdGggJzAnIGZvciBzaW5nbGUgZGlnaXQgdmFsdWVzXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJzAnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnJyArIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAob25lQnl0ZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDIzMDogLy8gTGF0Y2ggdG8gQzQwIGVuY29kYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBNb2RlLkM0MF9FTkNPREU7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjMxOiAvLyBMYXRjaCB0byBCYXNlIDI1NiBlbmNvZGF0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTW9kZS5CQVNFMjU2X0VOQ09ERTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyMzI6IC8vIEZOQzFcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nLmZyb21DaGFyQ29kZSgyOSkpOyAvLyB0cmFuc2xhdGUgYXMgQVNDSUkgMjlcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDIzMzogLy8gU3RydWN0dXJlZCBBcHBlbmRcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyMzQ6IC8vIFJlYWRlciBQcm9ncmFtbWluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWdub3JlIHRoZXNlIHN5bWJvbHMgZm9yIG5vd1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhyb3cgUmVhZGVyRXhjZXB0aW9uLmdldEluc3RhbmNlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyMzU6IC8vIFVwcGVyIFNoaWZ0IChzaGlmdCB0byBFeHRlbmRlZCBBU0NJSSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwcGVyU2hpZnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjM2OiAvLyAwNSBNYWNyb1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnWyk+XFx1MDAxRTA1XFx1MDAxRCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0VHJhaWxlci5pbnNlcnQoMCwgJ1xcdTAwMUVcXHUwMDA0Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyMzc6IC8vIDA2IE1hY3JvXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCdbKT5cXHUwMDFFMDZcXHUwMDFEJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRUcmFpbGVyLmluc2VydCgwLCAnXFx1MDAxRVxcdTAwMDQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDIzODogLy8gTGF0Y2ggdG8gQU5TSSBYMTIgZW5jb2RhdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE1vZGUuQU5TSVgxMl9FTkNPREU7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjM5OiAvLyBMYXRjaCB0byBUZXh0IGVuY29kYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBNb2RlLlRFWFRfRU5DT0RFO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDI0MDogLy8gTGF0Y2ggdG8gRURJRkFDVCBlbmNvZGF0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTW9kZS5FRElGQUNUX0VOQ09ERTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyNDE6IC8vIEVDSSBDaGFyYWN0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPRE8oYmJyb3duKTogSSB0aGluayB3ZSBuZWVkIHRvIHN1cHBvcnQgRUNJXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aHJvdyBSZWFkZXJFeGNlcHRpb24uZ2V0SW5zdGFuY2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElnbm9yZSB0aGlzIHN5bWJvbCBmb3Igbm93XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vdCB0byBiZSB1c2VkIGluIEFTQ0lJIGVuY29kYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ1dCB3b3JrIGFyb3VuZCBlbmNvZGVycyB0aGF0IGVuZCB3aXRoIDI1NCwgbGF0Y2ggYmFjayB0byBBU0NJSVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9uZUJ5dGUgIT09IDI1NCB8fCBiaXRzLmF2YWlsYWJsZSgpICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSB3aGlsZSAoYml0cy5hdmFpbGFibGUoKSA+IDApO1xuICAgICAgICByZXR1cm4gTW9kZS5BU0NJSV9FTkNPREU7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBTZWUgSVNPIDE2MDIyOjIwMDYsIDUuMi41IGFuZCBBbm5leCBDLCBUYWJsZSBDLjFcbiAgICAgKi9cbiAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLmRlY29kZUM0MFNlZ21lbnQgPSBmdW5jdGlvbiAoYml0cywgcmVzdWx0KSB7XG4gICAgICAgIC8vIFRocmVlIEM0MCB2YWx1ZXMgYXJlIGVuY29kZWQgaW4gYSAxNi1iaXQgdmFsdWUgYXNcbiAgICAgICAgLy8gKDE2MDAgKiBDMSkgKyAoNDAgKiBDMikgKyBDMyArIDFcbiAgICAgICAgLy8gVE9ETyhiYnJvd24pOiBUaGUgVXBwZXIgU2hpZnQgd2l0aCBDNDAgZG9lc24ndCB3b3JrIGluIHRoZSA0IHZhbHVlIHNjZW5hcmlvIGFsbCB0aGUgdGltZVxuICAgICAgICB2YXIgdXBwZXJTaGlmdCA9IGZhbHNlO1xuICAgICAgICB2YXIgY1ZhbHVlcyA9IFtdO1xuICAgICAgICB2YXIgc2hpZnQgPSAwO1xuICAgICAgICBkbyB7XG4gICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBvbmx5IG9uZSBieXRlIGxlZnQgdGhlbiBpdCB3aWxsIGJlIGVuY29kZWQgYXMgQVNDSUlcbiAgICAgICAgICAgIGlmIChiaXRzLmF2YWlsYWJsZSgpID09PSA4KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGZpcnN0Qnl0ZSA9IGJpdHMucmVhZEJpdHMoOCk7XG4gICAgICAgICAgICBpZiAoZmlyc3RCeXRlID09PSAyNTQpIHsgLy8gVW5sYXRjaCBjb2Rld29yZFxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucGFyc2VUd29CeXRlcyhmaXJzdEJ5dGUsIGJpdHMucmVhZEJpdHMoOCksIGNWYWx1ZXMpO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAzOyBpKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgY1ZhbHVlID0gY1ZhbHVlc1tpXTtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHNoaWZ0KSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjVmFsdWUgPCAzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpZnQgPSBjVmFsdWUgKyAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY1ZhbHVlIDwgdGhpcy5DNDBfQkFTSUNfU0VUX0NIQVJTLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjNDBjaGFyID0gdGhpcy5DNDBfQkFTSUNfU0VUX0NIQVJTW2NWYWx1ZV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVwcGVyU2hpZnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmcuZnJvbUNoYXJDb2RlKGM0MGNoYXIuY2hhckNvZGVBdCgwKSArIDEyOCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cHBlclNoaWZ0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGM0MGNoYXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVwcGVyU2hpZnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZy5mcm9tQ2hhckNvZGUoY1ZhbHVlICsgMTI4KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBwZXJTaGlmdCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmcuZnJvbUNoYXJDb2RlKGNWYWx1ZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2hpZnQgPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjVmFsdWUgPCB0aGlzLkM0MF9TSElGVDJfU0VUX0NIQVJTLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjNDBjaGFyID0gdGhpcy5DNDBfU0hJRlQyX1NFVF9DSEFSU1tjVmFsdWVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1cHBlclNoaWZ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nLmZyb21DaGFyQ29kZShjNDBjaGFyLmNoYXJDb2RlQXQoMCkgKyAxMjgpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBwZXJTaGlmdCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjNDBjaGFyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI3OiAvLyBGTkMxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZy5mcm9tQ2hhckNvZGUoMjkpKTsgLy8gdHJhbnNsYXRlIGFzIEFTQ0lJIDI5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzMDogLy8gVXBwZXIgU2hpZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwcGVyU2hpZnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNoaWZ0ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodXBwZXJTaGlmdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nLmZyb21DaGFyQ29kZShjVmFsdWUgKyAyMjQpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cHBlclNoaWZ0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZy5mcm9tQ2hhckNvZGUoY1ZhbHVlICsgOTYpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNoaWZ0ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gd2hpbGUgKGJpdHMuYXZhaWxhYmxlKCkgPiAwKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFNlZSBJU08gMTYwMjI6MjAwNiwgNS4yLjYgYW5kIEFubmV4IEMsIFRhYmxlIEMuMlxuICAgICAqL1xuICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuZGVjb2RlVGV4dFNlZ21lbnQgPSBmdW5jdGlvbiAoYml0cywgcmVzdWx0KSB7XG4gICAgICAgIC8vIFRocmVlIFRleHQgdmFsdWVzIGFyZSBlbmNvZGVkIGluIGEgMTYtYml0IHZhbHVlIGFzXG4gICAgICAgIC8vICgxNjAwICogQzEpICsgKDQwICogQzIpICsgQzMgKyAxXG4gICAgICAgIC8vIFRPRE8oYmJyb3duKTogVGhlIFVwcGVyIFNoaWZ0IHdpdGggVGV4dCBkb2Vzbid0IHdvcmsgaW4gdGhlIDQgdmFsdWUgc2NlbmFyaW8gYWxsIHRoZSB0aW1lXG4gICAgICAgIHZhciB1cHBlclNoaWZ0ID0gZmFsc2U7XG4gICAgICAgIHZhciBjVmFsdWVzID0gW107XG4gICAgICAgIHZhciBzaGlmdCA9IDA7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG9ubHkgb25lIGJ5dGUgbGVmdCB0aGVuIGl0IHdpbGwgYmUgZW5jb2RlZCBhcyBBU0NJSVxuICAgICAgICAgICAgaWYgKGJpdHMuYXZhaWxhYmxlKCkgPT09IDgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgZmlyc3RCeXRlID0gYml0cy5yZWFkQml0cyg4KTtcbiAgICAgICAgICAgIGlmIChmaXJzdEJ5dGUgPT09IDI1NCkgeyAvLyBVbmxhdGNoIGNvZGV3b3JkXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5wYXJzZVR3b0J5dGVzKGZpcnN0Qnl0ZSwgYml0cy5yZWFkQml0cyg4KSwgY1ZhbHVlcyk7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDM7IGkrKykge1xuICAgICAgICAgICAgICAgIHZhciBjVmFsdWUgPSBjVmFsdWVzW2ldO1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoc2hpZnQpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNWYWx1ZSA8IDMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGlmdCA9IGNWYWx1ZSArIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjVmFsdWUgPCB0aGlzLlRFWFRfQkFTSUNfU0VUX0NIQVJTLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ZXh0Q2hhciA9IHRoaXMuVEVYVF9CQVNJQ19TRVRfQ0hBUlNbY1ZhbHVlXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodXBwZXJTaGlmdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZy5mcm9tQ2hhckNvZGUodGV4dENoYXIuY2hhckNvZGVBdCgwKSArIDEyOCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cHBlclNoaWZ0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHRleHRDaGFyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1cHBlclNoaWZ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmcuZnJvbUNoYXJDb2RlKGNWYWx1ZSArIDEyOCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwcGVyU2hpZnQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nLmZyb21DaGFyQ29kZShjVmFsdWUpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNoaWZ0ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBTaGlmdCAyIGZvciBUZXh0IGlzIHRoZSBzYW1lIGVuY29kaW5nIGFzIEM0MFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNWYWx1ZSA8IHRoaXMuVEVYVF9TSElGVDJfU0VUX0NIQVJTLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ZXh0Q2hhciA9IHRoaXMuVEVYVF9TSElGVDJfU0VUX0NIQVJTW2NWYWx1ZV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVwcGVyU2hpZnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmcuZnJvbUNoYXJDb2RlKHRleHRDaGFyLmNoYXJDb2RlQXQoMCkgKyAxMjgpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBwZXJTaGlmdCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh0ZXh0Q2hhcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChjVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyNzogLy8gRk5DMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmcuZnJvbUNoYXJDb2RlKDI5KSk7IC8vIHRyYW5zbGF0ZSBhcyBBU0NJSSAyOVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzA6IC8vIFVwcGVyIFNoaWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cHBlclNoaWZ0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzaGlmdCA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNWYWx1ZSA8IHRoaXMuVEVYVF9TSElGVDNfU0VUX0NIQVJTLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ZXh0Q2hhciA9IHRoaXMuVEVYVF9TSElGVDNfU0VUX0NIQVJTW2NWYWx1ZV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVwcGVyU2hpZnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmcuZnJvbUNoYXJDb2RlKHRleHRDaGFyLmNoYXJDb2RlQXQoMCkgKyAxMjgpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBwZXJTaGlmdCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh0ZXh0Q2hhcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaWZ0ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IHdoaWxlIChiaXRzLmF2YWlsYWJsZSgpID4gMCk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBTZWUgSVNPIDE2MDIyOjIwMDYsIDUuMi43XG4gICAgICovXG4gICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5kZWNvZGVBbnNpWDEyU2VnbWVudCA9IGZ1bmN0aW9uIChiaXRzLCByZXN1bHQpIHtcbiAgICAgICAgLy8gVGhyZWUgQU5TSSBYMTIgdmFsdWVzIGFyZSBlbmNvZGVkIGluIGEgMTYtYml0IHZhbHVlIGFzXG4gICAgICAgIC8vICgxNjAwICogQzEpICsgKDQwICogQzIpICsgQzMgKyAxXG4gICAgICAgIHZhciBjVmFsdWVzID0gW107XG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG9ubHkgb25lIGJ5dGUgbGVmdCB0aGVuIGl0IHdpbGwgYmUgZW5jb2RlZCBhcyBBU0NJSVxuICAgICAgICAgICAgaWYgKGJpdHMuYXZhaWxhYmxlKCkgPT09IDgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgZmlyc3RCeXRlID0gYml0cy5yZWFkQml0cyg4KTtcbiAgICAgICAgICAgIGlmIChmaXJzdEJ5dGUgPT09IDI1NCkgeyAvLyBVbmxhdGNoIGNvZGV3b3JkXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5wYXJzZVR3b0J5dGVzKGZpcnN0Qnl0ZSwgYml0cy5yZWFkQml0cyg4KSwgY1ZhbHVlcyk7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDM7IGkrKykge1xuICAgICAgICAgICAgICAgIHZhciBjVmFsdWUgPSBjVmFsdWVzW2ldO1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoY1ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDogLy8gWDEyIHNlZ21lbnQgdGVybWluYXRvciA8Q1I+XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCdcXHInKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6IC8vIFgxMiBzZWdtZW50IHNlcGFyYXRvciAqXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcqJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOiAvLyBYMTIgc3ViLWVsZW1lbnQgc2VwYXJhdG9yID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJz4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6IC8vIHNwYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjVmFsdWUgPCAxNCkgeyAvLyAwIC0gOVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nLmZyb21DaGFyQ29kZShjVmFsdWUgKyA0NCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY1ZhbHVlIDwgNDApIHsgLy8gQSAtIFpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZy5mcm9tQ2hhckNvZGUoY1ZhbHVlICsgNTEpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gd2hpbGUgKGJpdHMuYXZhaWxhYmxlKCkgPiAwKTtcbiAgICB9O1xuICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIucGFyc2VUd29CeXRlcyA9IGZ1bmN0aW9uIChmaXJzdEJ5dGUsIHNlY29uZEJ5dGUsIHJlc3VsdCkge1xuICAgICAgICB2YXIgZnVsbEJpdFZhbHVlID0gKGZpcnN0Qnl0ZSA8PCA4KSArIHNlY29uZEJ5dGUgLSAxO1xuICAgICAgICB2YXIgdGVtcCA9IE1hdGguZmxvb3IoZnVsbEJpdFZhbHVlIC8gMTYwMCk7XG4gICAgICAgIHJlc3VsdFswXSA9IHRlbXA7XG4gICAgICAgIGZ1bGxCaXRWYWx1ZSAtPSB0ZW1wICogMTYwMDtcbiAgICAgICAgdGVtcCA9IE1hdGguZmxvb3IoZnVsbEJpdFZhbHVlIC8gNDApO1xuICAgICAgICByZXN1bHRbMV0gPSB0ZW1wO1xuICAgICAgICByZXN1bHRbMl0gPSBmdWxsQml0VmFsdWUgLSB0ZW1wICogNDA7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBTZWUgSVNPIDE2MDIyOjIwMDYsIDUuMi44IGFuZCBBbm5leCBDIFRhYmxlIEMuM1xuICAgICAqL1xuICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuZGVjb2RlRWRpZmFjdFNlZ21lbnQgPSBmdW5jdGlvbiAoYml0cywgcmVzdWx0KSB7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG9ubHkgdHdvIG9yIGxlc3MgYnl0ZXMgbGVmdCB0aGVuIGl0IHdpbGwgYmUgZW5jb2RlZCBhcyBBU0NJSVxuICAgICAgICAgICAgaWYgKGJpdHMuYXZhaWxhYmxlKCkgPD0gMTYpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykge1xuICAgICAgICAgICAgICAgIHZhciBlZGlmYWN0VmFsdWUgPSBiaXRzLnJlYWRCaXRzKDYpO1xuICAgICAgICAgICAgICAgIC8vIENoZWNrIGZvciB0aGUgdW5sYXRjaCBjaGFyYWN0ZXJcbiAgICAgICAgICAgICAgICBpZiAoZWRpZmFjdFZhbHVlID09PSAweDFGKSB7IC8vIDAxMTExMVxuICAgICAgICAgICAgICAgICAgICAvLyBSZWFkIHJlc3Qgb2YgYnl0ZSwgd2hpY2ggc2hvdWxkIGJlIDAsIGFuZCBzdG9wXG4gICAgICAgICAgICAgICAgICAgIHZhciBiaXRzTGVmdCA9IDggLSBiaXRzLmdldEJpdE9mZnNldCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYml0c0xlZnQgIT09IDgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJpdHMucmVhZEJpdHMoYml0c0xlZnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKChlZGlmYWN0VmFsdWUgJiAweDIwKSA9PT0gMCkgeyAvLyBubyAxIGluIHRoZSBsZWFkaW5nICg2dGgpIGJpdFxuICAgICAgICAgICAgICAgICAgICBlZGlmYWN0VmFsdWUgfD0gMHg0MDsgLy8gQWRkIGEgbGVhZGluZyAwMSB0byB0aGUgNiBiaXQgYmluYXJ5IHZhbHVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nLmZyb21DaGFyQ29kZShlZGlmYWN0VmFsdWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSB3aGlsZSAoYml0cy5hdmFpbGFibGUoKSA+IDApO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogU2VlIElTTyAxNjAyMjoyMDA2LCA1LjIuOSBhbmQgQW5uZXggQiwgQi4yXG4gICAgICovXG4gICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5kZWNvZGVCYXNlMjU2U2VnbWVudCA9IGZ1bmN0aW9uIChiaXRzLCByZXN1bHQsIGJ5dGVTZWdtZW50cykge1xuICAgICAgICAvLyBGaWd1cmUgb3V0IGhvdyBsb25nIHRoZSBCYXNlIDI1NiBTZWdtZW50IGlzLlxuICAgICAgICB2YXIgY29kZXdvcmRQb3NpdGlvbiA9IDEgKyBiaXRzLmdldEJ5dGVPZmZzZXQoKTsgLy8gcG9zaXRpb24gaXMgMS1pbmRleGVkXG4gICAgICAgIHZhciBkMSA9IHRoaXMudW5yYW5kb21pemUyNTVTdGF0ZShiaXRzLnJlYWRCaXRzKDgpLCBjb2Rld29yZFBvc2l0aW9uKyspO1xuICAgICAgICB2YXIgY291bnQ7XG4gICAgICAgIGlmIChkMSA9PT0gMCkgeyAvLyBSZWFkIHRoZSByZW1haW5kZXIgb2YgdGhlIHN5bWJvbFxuICAgICAgICAgICAgY291bnQgPSBiaXRzLmF2YWlsYWJsZSgpIC8gOCB8IDA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZDEgPCAyNTApIHtcbiAgICAgICAgICAgIGNvdW50ID0gZDE7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb3VudCA9IDI1MCAqIChkMSAtIDI0OSkgKyB0aGlzLnVucmFuZG9taXplMjU1U3RhdGUoYml0cy5yZWFkQml0cyg4KSwgY29kZXdvcmRQb3NpdGlvbisrKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBXZSdyZSBzZWVpbmcgTmVnYXRpdmVBcnJheVNpemVFeGNlcHRpb24gZXJyb3JzIGZyb20gdXNlcnMuXG4gICAgICAgIGlmIChjb3VudCA8IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoY291bnQpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcbiAgICAgICAgICAgIC8vIEhhdmUgc2VlbiB0aGlzIHBhcnRpY3VsYXIgZXJyb3IgaW4gdGhlIHdpbGQsIHN1Y2ggYXMgYXRcbiAgICAgICAgICAgIC8vIGh0dHA6Ly93d3cuYmNnZW4uY29tL2RlbW8vSURBdXRvbWF0aW9uU3RyZWFtaW5nRGF0YU1hdHJpeC5hc3B4P01PREU9MyZEPUZyZWQmUEZNVD0zJlBUPUYmWD0wLjMmTz0wJkxNPTAuMlxuICAgICAgICAgICAgaWYgKGJpdHMuYXZhaWxhYmxlKCkgPCA4KSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJ5dGVzW2ldID0gdGhpcy51bnJhbmRvbWl6ZTI1NVN0YXRlKGJpdHMucmVhZEJpdHMoOCksIGNvZGV3b3JkUG9zaXRpb24rKyk7XG4gICAgICAgIH1cbiAgICAgICAgYnl0ZVNlZ21lbnRzLnB1c2goYnl0ZXMpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmdFbmNvZGluZ18xLmRlZmF1bHQuZGVjb2RlKGJ5dGVzLCBTdHJpbmdVdGlsc18xLmRlZmF1bHQuSVNPODg1OTEpKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAodWVlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uXzEuZGVmYXVsdCgnUGxhdGZvcm0gZG9lcyBub3Qgc3VwcG9ydCByZXF1aXJlZCBlbmNvZGluZzogJyArIHVlZS5tZXNzYWdlKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogU2VlIElTTyAxNjAyMjoyMDA2LCBBbm5leCBCLCBCLjJcbiAgICAgKi9cbiAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLnVucmFuZG9taXplMjU1U3RhdGUgPSBmdW5jdGlvbiAocmFuZG9taXplZEJhc2UyNTZDb2Rld29yZCwgYmFzZTI1NkNvZGV3b3JkUG9zaXRpb24pIHtcbiAgICAgICAgdmFyIHBzZXVkb1JhbmRvbU51bWJlciA9ICgoMTQ5ICogYmFzZTI1NkNvZGV3b3JkUG9zaXRpb24pICUgMjU1KSArIDE7XG4gICAgICAgIHZhciB0ZW1wVmFyaWFibGUgPSByYW5kb21pemVkQmFzZTI1NkNvZGV3b3JkIC0gcHNldWRvUmFuZG9tTnVtYmVyO1xuICAgICAgICByZXR1cm4gdGVtcFZhcmlhYmxlID49IDAgPyB0ZW1wVmFyaWFibGUgOiB0ZW1wVmFyaWFibGUgKyAyNTY7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBTZWUgSVNPIDE2MDIyOjIwMDYsIEFubmV4IEMgVGFibGUgQy4xXG4gICAgICogVGhlIEM0MCBCYXNpYyBDaGFyYWN0ZXIgU2V0ICgqJ3MgdXNlZCBmb3IgcGxhY2Vob2xkZXJzIGZvciB0aGUgc2hpZnQgdmFsdWVzKVxuICAgICAqL1xuICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuQzQwX0JBU0lDX1NFVF9DSEFSUyA9IFtcbiAgICAgICAgJyonLCAnKicsICcqJywgJyAnLCAnMCcsICcxJywgJzInLCAnMycsICc0JywgJzUnLCAnNicsICc3JywgJzgnLCAnOScsXG4gICAgICAgICdBJywgJ0InLCAnQycsICdEJywgJ0UnLCAnRicsICdHJywgJ0gnLCAnSScsICdKJywgJ0snLCAnTCcsICdNJywgJ04nLFxuICAgICAgICAnTycsICdQJywgJ1EnLCAnUicsICdTJywgJ1QnLCAnVScsICdWJywgJ1cnLCAnWCcsICdZJywgJ1onXG4gICAgXTtcbiAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLkM0MF9TSElGVDJfU0VUX0NIQVJTID0gW1xuICAgICAgICAnIScsICdcIicsICcjJywgJyQnLCAnJScsICcmJywgJ1xcJycsICcoJywgJyknLCAnKicsICcrJywgJywnLCAnLScsICcuJyxcbiAgICAgICAgJy8nLCAnOicsICc7JywgJzwnLCAnPScsICc+JywgJz8nLCAnQCcsICdbJywgJ1xcXFwnLCAnXScsICdeJywgJ18nXG4gICAgXTtcbiAgICAvKipcbiAgICAgKiBTZWUgSVNPIDE2MDIyOjIwMDYsIEFubmV4IEMgVGFibGUgQy4yXG4gICAgICogVGhlIFRleHQgQmFzaWMgQ2hhcmFjdGVyIFNldCAoKidzIHVzZWQgZm9yIHBsYWNlaG9sZGVycyBmb3IgdGhlIHNoaWZ0IHZhbHVlcylcbiAgICAgKi9cbiAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLlRFWFRfQkFTSUNfU0VUX0NIQVJTID0gW1xuICAgICAgICAnKicsICcqJywgJyonLCAnICcsICcwJywgJzEnLCAnMicsICczJywgJzQnLCAnNScsICc2JywgJzcnLCAnOCcsICc5JyxcbiAgICAgICAgJ2EnLCAnYicsICdjJywgJ2QnLCAnZScsICdmJywgJ2cnLCAnaCcsICdpJywgJ2onLCAnaycsICdsJywgJ20nLCAnbicsXG4gICAgICAgICdvJywgJ3AnLCAncScsICdyJywgJ3MnLCAndCcsICd1JywgJ3YnLCAndycsICd4JywgJ3knLCAneidcbiAgICBdO1xuICAgIC8vIFNoaWZ0IDIgZm9yIFRleHQgaXMgdGhlIHNhbWUgZW5jb2RpbmcgYXMgQzQwXG4gICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5URVhUX1NISUZUMl9TRVRfQ0hBUlMgPSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLkM0MF9TSElGVDJfU0VUX0NIQVJTO1xuICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuVEVYVF9TSElGVDNfU0VUX0NIQVJTID0gW1xuICAgICAgICAnYCcsICdBJywgJ0InLCAnQycsICdEJywgJ0UnLCAnRicsICdHJywgJ0gnLCAnSScsICdKJywgJ0snLCAnTCcsICdNJywgJ04nLFxuICAgICAgICAnTycsICdQJywgJ1EnLCAnUicsICdTJywgJ1QnLCAnVScsICdWJywgJ1cnLCAnWCcsICdZJywgJ1onLCAneycsICd8JywgJ30nLCAnficsIFN0cmluZy5mcm9tQ2hhckNvZGUoMTI3KVxuICAgIF07XG4gICAgcmV0dXJuIERlY29kZWRCaXRTdHJlYW1QYXJzZXI7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gRGVjb2RlZEJpdFN0cmVhbVBhcnNlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURlY29kZWRCaXRTdHJlYW1QYXJzZXIuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX192YWx1ZXMgPSAodGhpcyAmJiB0aGlzLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7XG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgQ2hlY2tzdW1FeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuLi8uLi9DaGVja3N1bUV4Y2VwdGlvblwiKTtcbnZhciBHZW5lcmljR0ZfMSA9IHJlcXVpcmUoXCIuLi8uLi9jb21tb24vcmVlZHNvbG9tb24vR2VuZXJpY0dGXCIpO1xudmFyIFJlZWRTb2xvbW9uRGVjb2Rlcl8xID0gcmVxdWlyZShcIi4uLy4uL2NvbW1vbi9yZWVkc29sb21vbi9SZWVkU29sb21vbkRlY29kZXJcIik7XG52YXIgQml0TWF0cml4UGFyc2VyXzEgPSByZXF1aXJlKFwiLi9CaXRNYXRyaXhQYXJzZXJcIik7XG52YXIgRGF0YUJsb2NrXzEgPSByZXF1aXJlKFwiLi9EYXRhQmxvY2tcIik7XG52YXIgRGVjb2RlZEJpdFN0cmVhbVBhcnNlcl8xID0gcmVxdWlyZShcIi4vRGVjb2RlZEJpdFN0cmVhbVBhcnNlclwiKTtcbi8qXG4gKiBDb3B5cmlnaHQgMjAwNyBaWGluZyBhdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiA8cD5UaGUgbWFpbiBjbGFzcyB3aGljaCBpbXBsZW1lbnRzIERhdGEgTWF0cml4IENvZGUgZGVjb2RpbmcgLS0gYXMgb3Bwb3NlZCB0byBsb2NhdGluZyBhbmQgZXh0cmFjdGluZ1xuICogdGhlIERhdGEgTWF0cml4IENvZGUgZnJvbSBhbiBpbWFnZS48L3A+XG4gKlxuICogQGF1dGhvciBiYnJvd25AZ29vZ2xlLmNvbSAoQnJpYW4gQnJvd24pXG4gKi9cbnZhciBEZWNvZGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIERlY29kZXIoKSB7XG4gICAgICAgIHRoaXMucnNEZWNvZGVyID0gbmV3IFJlZWRTb2xvbW9uRGVjb2Rlcl8xLmRlZmF1bHQoR2VuZXJpY0dGXzEuZGVmYXVsdC5EQVRBX01BVFJJWF9GSUVMRF8yNTYpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiA8cD5EZWNvZGVzIGEgRGF0YSBNYXRyaXggQ29kZSByZXByZXNlbnRlZCBhcyBhIHtAbGluayBCaXRNYXRyaXh9LiBBIDEgb3IgXCJ0cnVlXCIgaXMgdGFrZW5cbiAgICAgKiB0byBtZWFuIGEgYmxhY2sgbW9kdWxlLjwvcD5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBiaXRzIGJvb2xlYW5zIHJlcHJlc2VudGluZyB3aGl0ZS9ibGFjayBEYXRhIE1hdHJpeCBDb2RlIG1vZHVsZXNcbiAgICAgKiBAcmV0dXJuIHRleHQgYW5kIGJ5dGVzIGVuY29kZWQgd2l0aGluIHRoZSBEYXRhIE1hdHJpeCBDb2RlXG4gICAgICogQHRocm93cyBGb3JtYXRFeGNlcHRpb24gaWYgdGhlIERhdGEgTWF0cml4IENvZGUgY2Fubm90IGJlIGRlY29kZWRcbiAgICAgKiBAdGhyb3dzIENoZWNrc3VtRXhjZXB0aW9uIGlmIGVycm9yIGNvcnJlY3Rpb24gZmFpbHNcbiAgICAgKi9cbiAgICBEZWNvZGVyLnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbiAoYml0cykge1xuICAgICAgICB2YXIgZV8xLCBfYTtcbiAgICAgICAgLy8gQ29uc3RydWN0IGEgcGFyc2VyIGFuZCByZWFkIHZlcnNpb24sIGVycm9yLWNvcnJlY3Rpb24gbGV2ZWxcbiAgICAgICAgdmFyIHBhcnNlciA9IG5ldyBCaXRNYXRyaXhQYXJzZXJfMS5kZWZhdWx0KGJpdHMpO1xuICAgICAgICB2YXIgdmVyc2lvbiA9IHBhcnNlci5nZXRWZXJzaW9uKCk7XG4gICAgICAgIC8vIFJlYWQgY29kZXdvcmRzXG4gICAgICAgIHZhciBjb2Rld29yZHMgPSBwYXJzZXIucmVhZENvZGV3b3JkcygpO1xuICAgICAgICAvLyBTZXBhcmF0ZSBpbnRvIGRhdGEgYmxvY2tzXG4gICAgICAgIHZhciBkYXRhQmxvY2tzID0gRGF0YUJsb2NrXzEuZGVmYXVsdC5nZXREYXRhQmxvY2tzKGNvZGV3b3JkcywgdmVyc2lvbik7XG4gICAgICAgIC8vIENvdW50IHRvdGFsIG51bWJlciBvZiBkYXRhIGJ5dGVzXG4gICAgICAgIHZhciB0b3RhbEJ5dGVzID0gMDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAodmFyIGRhdGFCbG9ja3NfMSA9IF9fdmFsdWVzKGRhdGFCbG9ja3MpLCBkYXRhQmxvY2tzXzFfMSA9IGRhdGFCbG9ja3NfMS5uZXh0KCk7ICFkYXRhQmxvY2tzXzFfMS5kb25lOyBkYXRhQmxvY2tzXzFfMSA9IGRhdGFCbG9ja3NfMS5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgZGIgPSBkYXRhQmxvY2tzXzFfMS52YWx1ZTtcbiAgICAgICAgICAgICAgICB0b3RhbEJ5dGVzICs9IGRiLmdldE51bURhdGFDb2Rld29yZHMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKGRhdGFCbG9ja3NfMV8xICYmICFkYXRhQmxvY2tzXzFfMS5kb25lICYmIChfYSA9IGRhdGFCbG9ja3NfMS5yZXR1cm4pKSBfYS5jYWxsKGRhdGFCbG9ja3NfMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJlc3VsdEJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkodG90YWxCeXRlcyk7XG4gICAgICAgIHZhciBkYXRhQmxvY2tzQ291bnQgPSBkYXRhQmxvY2tzLmxlbmd0aDtcbiAgICAgICAgLy8gRXJyb3ItY29ycmVjdCBhbmQgY29weSBkYXRhIGJsb2NrcyB0b2dldGhlciBpbnRvIGEgc3RyZWFtIG9mIGJ5dGVzXG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZGF0YUJsb2Nrc0NvdW50OyBqKyspIHtcbiAgICAgICAgICAgIHZhciBkYXRhQmxvY2sgPSBkYXRhQmxvY2tzW2pdO1xuICAgICAgICAgICAgdmFyIGNvZGV3b3JkQnl0ZXMgPSBkYXRhQmxvY2suZ2V0Q29kZXdvcmRzKCk7XG4gICAgICAgICAgICB2YXIgbnVtRGF0YUNvZGV3b3JkcyA9IGRhdGFCbG9jay5nZXROdW1EYXRhQ29kZXdvcmRzKCk7XG4gICAgICAgICAgICB0aGlzLmNvcnJlY3RFcnJvcnMoY29kZXdvcmRCeXRlcywgbnVtRGF0YUNvZGV3b3Jkcyk7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bURhdGFDb2Rld29yZHM7IGkrKykge1xuICAgICAgICAgICAgICAgIC8vIERlLWludGVybGFjZSBkYXRhIGJsb2Nrcy5cbiAgICAgICAgICAgICAgICByZXN1bHRCeXRlc1tpICogZGF0YUJsb2Nrc0NvdW50ICsgal0gPSBjb2Rld29yZEJ5dGVzW2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIERlY29kZSB0aGUgY29udGVudHMgb2YgdGhhdCBzdHJlYW0gb2YgYnl0ZXNcbiAgICAgICAgcmV0dXJuIERlY29kZWRCaXRTdHJlYW1QYXJzZXJfMS5kZWZhdWx0LmRlY29kZShyZXN1bHRCeXRlcyk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiA8cD5HaXZlbiBkYXRhIGFuZCBlcnJvci1jb3JyZWN0aW9uIGNvZGV3b3JkcyByZWNlaXZlZCwgcG9zc2libHkgY29ycnVwdGVkIGJ5IGVycm9ycywgYXR0ZW1wdHMgdG9cbiAgICAgKiBjb3JyZWN0IHRoZSBlcnJvcnMgaW4tcGxhY2UgdXNpbmcgUmVlZC1Tb2xvbW9uIGVycm9yIGNvcnJlY3Rpb24uPC9wPlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvZGV3b3JkQnl0ZXMgZGF0YSBhbmQgZXJyb3IgY29ycmVjdGlvbiBjb2Rld29yZHNcbiAgICAgKiBAcGFyYW0gbnVtRGF0YUNvZGV3b3JkcyBudW1iZXIgb2YgY29kZXdvcmRzIHRoYXQgYXJlIGRhdGEgYnl0ZXNcbiAgICAgKiBAdGhyb3dzIENoZWNrc3VtRXhjZXB0aW9uIGlmIGVycm9yIGNvcnJlY3Rpb24gZmFpbHNcbiAgICAgKi9cbiAgICBEZWNvZGVyLnByb3RvdHlwZS5jb3JyZWN0RXJyb3JzID0gZnVuY3Rpb24gKGNvZGV3b3JkQnl0ZXMsIG51bURhdGFDb2Rld29yZHMpIHtcbiAgICAgICAgLy8gY29uc3QgbnVtQ29kZXdvcmRzID0gY29kZXdvcmRCeXRlcy5sZW5ndGg7XG4gICAgICAgIC8vIEZpcnN0IHJlYWQgaW50byBhbiBhcnJheSBvZiBpbnRzXG4gICAgICAgIHZhciBjb2Rld29yZHNJbnRzID0gbmV3IEludDMyQXJyYXkoY29kZXdvcmRCeXRlcyk7XG4gICAgICAgIC8vIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtQ29kZXdvcmRzOyBpKyspIHtcbiAgICAgICAgLy8gICBjb2Rld29yZHNJbnRzW2ldID0gY29kZXdvcmRCeXRlc1tpXSAmIDB4RkY7XG4gICAgICAgIC8vIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMucnNEZWNvZGVyLmRlY29kZShjb2Rld29yZHNJbnRzLCBjb2Rld29yZEJ5dGVzLmxlbmd0aCAtIG51bURhdGFDb2Rld29yZHMpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChpZ25vcmVkIC8qIFJlZWRTb2xvbW9uRXhjZXB0aW9uICovKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQ2hlY2tzdW1FeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQ29weSBiYWNrIGludG8gYXJyYXkgb2YgYnl0ZXMgLS0gb25seSBuZWVkIHRvIHdvcnJ5IGFib3V0IHRoZSBieXRlcyB0aGF0IHdlcmUgZGF0YVxuICAgICAgICAvLyBXZSBkb24ndCBjYXJlIGFib3V0IGVycm9ycyBpbiB0aGUgZXJyb3ItY29ycmVjdGlvbiBjb2Rld29yZHNcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1EYXRhQ29kZXdvcmRzOyBpKyspIHtcbiAgICAgICAgICAgIGNvZGV3b3JkQnl0ZXNbaV0gPSBjb2Rld29yZHNJbnRzW2ldO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gRGVjb2Rlcjtcbn0oKSk7XG5leHBvcnRzLmRlZmF1bHQgPSBEZWNvZGVyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RGVjb2Rlci5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBXaGl0ZVJlY3RhbmdsZURldGVjdG9yXzEgPSByZXF1aXJlKFwiLi4vLi4vY29tbW9uL2RldGVjdG9yL1doaXRlUmVjdGFuZ2xlRGV0ZWN0b3JcIik7XG52YXIgRGV0ZWN0b3JSZXN1bHRfMSA9IHJlcXVpcmUoXCIuLi8uLi9jb21tb24vRGV0ZWN0b3JSZXN1bHRcIik7XG52YXIgR3JpZFNhbXBsZXJJbnN0YW5jZV8xID0gcmVxdWlyZShcIi4uLy4uL2NvbW1vbi9HcmlkU2FtcGxlckluc3RhbmNlXCIpO1xudmFyIE5vdEZvdW5kRXhjZXB0aW9uXzEgPSByZXF1aXJlKFwiLi4vLi4vTm90Rm91bmRFeGNlcHRpb25cIik7XG52YXIgUmVzdWx0UG9pbnRfMSA9IHJlcXVpcmUoXCIuLi8uLi9SZXN1bHRQb2ludFwiKTtcbi8qXG4gKiBDb3B5cmlnaHQgMjAwOCBaWGluZyBhdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiA8cD5FbmNhcHN1bGF0ZXMgbG9naWMgdGhhdCBjYW4gZGV0ZWN0IGEgRGF0YSBNYXRyaXggQ29kZSBpbiBhbiBpbWFnZSwgZXZlbiBpZiB0aGUgRGF0YSBNYXRyaXggQ29kZVxuICogaXMgcm90YXRlZCBvciBza2V3ZWQsIG9yIHBhcnRpYWxseSBvYnNjdXJlZC48L3A+XG4gKlxuICogQGF1dGhvciBTZWFuIE93ZW5cbiAqL1xudmFyIERldGVjdG9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIERldGVjdG9yKGltYWdlKSB7XG4gICAgICAgIHRoaXMuaW1hZ2UgPSBpbWFnZTtcbiAgICAgICAgdGhpcy5yZWN0YW5nbGVEZXRlY3RvciA9IG5ldyBXaGl0ZVJlY3RhbmdsZURldGVjdG9yXzEuZGVmYXVsdCh0aGlzLmltYWdlKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogPHA+RGV0ZWN0cyBhIERhdGEgTWF0cml4IENvZGUgaW4gYW4gaW1hZ2UuPC9wPlxuICAgICAqXG4gICAgICogQHJldHVybiB7QGxpbmsgRGV0ZWN0b3JSZXN1bHR9IGVuY2Fwc3VsYXRpbmcgcmVzdWx0cyBvZiBkZXRlY3RpbmcgYSBEYXRhIE1hdHJpeCBDb2RlXG4gICAgICogQHRocm93cyBOb3RGb3VuZEV4Y2VwdGlvbiBpZiBubyBEYXRhIE1hdHJpeCBDb2RlIGNhbiBiZSBmb3VuZFxuICAgICAqL1xuICAgIERldGVjdG9yLnByb3RvdHlwZS5kZXRlY3QgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjb3JuZXJQb2ludHMgPSB0aGlzLnJlY3RhbmdsZURldGVjdG9yLmRldGVjdCgpO1xuICAgICAgICB2YXIgcG9pbnRzID0gdGhpcy5kZXRlY3RTb2xpZDEoY29ybmVyUG9pbnRzKTtcbiAgICAgICAgcG9pbnRzID0gdGhpcy5kZXRlY3RTb2xpZDIocG9pbnRzKTtcbiAgICAgICAgcG9pbnRzWzNdID0gdGhpcy5jb3JyZWN0VG9wUmlnaHQocG9pbnRzKTtcbiAgICAgICAgaWYgKCFwb2ludHNbM10pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICBwb2ludHMgPSB0aGlzLnNoaWZ0VG9Nb2R1bGVDZW50ZXIocG9pbnRzKTtcbiAgICAgICAgdmFyIHRvcExlZnQgPSBwb2ludHNbMF07XG4gICAgICAgIHZhciBib3R0b21MZWZ0ID0gcG9pbnRzWzFdO1xuICAgICAgICB2YXIgYm90dG9tUmlnaHQgPSBwb2ludHNbMl07XG4gICAgICAgIHZhciB0b3BSaWdodCA9IHBvaW50c1szXTtcbiAgICAgICAgdmFyIGRpbWVuc2lvblRvcCA9IHRoaXMudHJhbnNpdGlvbnNCZXR3ZWVuKHRvcExlZnQsIHRvcFJpZ2h0KSArIDE7XG4gICAgICAgIHZhciBkaW1lbnNpb25SaWdodCA9IHRoaXMudHJhbnNpdGlvbnNCZXR3ZWVuKGJvdHRvbVJpZ2h0LCB0b3BSaWdodCkgKyAxO1xuICAgICAgICBpZiAoKGRpbWVuc2lvblRvcCAmIDB4MDEpID09PSAxKSB7XG4gICAgICAgICAgICBkaW1lbnNpb25Ub3AgKz0gMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKGRpbWVuc2lvblJpZ2h0ICYgMHgwMSkgPT09IDEpIHtcbiAgICAgICAgICAgIGRpbWVuc2lvblJpZ2h0ICs9IDE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKDQgKiBkaW1lbnNpb25Ub3AgPCA3ICogZGltZW5zaW9uUmlnaHQgJiYgNCAqIGRpbWVuc2lvblJpZ2h0IDwgNyAqIGRpbWVuc2lvblRvcCkge1xuICAgICAgICAgICAgLy8gVGhlIG1hdHJpeCBpcyBzcXVhcmVcbiAgICAgICAgICAgIGRpbWVuc2lvblRvcCA9IGRpbWVuc2lvblJpZ2h0ID0gTWF0aC5tYXgoZGltZW5zaW9uVG9wLCBkaW1lbnNpb25SaWdodCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGJpdHMgPSBEZXRlY3Rvci5zYW1wbGVHcmlkKHRoaXMuaW1hZ2UsIHRvcExlZnQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0LCB0b3BSaWdodCwgZGltZW5zaW9uVG9wLCBkaW1lbnNpb25SaWdodCk7XG4gICAgICAgIHJldHVybiBuZXcgRGV0ZWN0b3JSZXN1bHRfMS5kZWZhdWx0KGJpdHMsIFt0b3BMZWZ0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCwgdG9wUmlnaHRdKTtcbiAgICB9O1xuICAgIERldGVjdG9yLnNoaWZ0UG9pbnQgPSBmdW5jdGlvbiAocG9pbnQsIHRvLCBkaXYpIHtcbiAgICAgICAgdmFyIHggPSAodG8uZ2V0WCgpIC0gcG9pbnQuZ2V0WCgpKSAvIChkaXYgKyAxKTtcbiAgICAgICAgdmFyIHkgPSAodG8uZ2V0WSgpIC0gcG9pbnQuZ2V0WSgpKSAvIChkaXYgKyAxKTtcbiAgICAgICAgcmV0dXJuIG5ldyBSZXN1bHRQb2ludF8xLmRlZmF1bHQocG9pbnQuZ2V0WCgpICsgeCwgcG9pbnQuZ2V0WSgpICsgeSk7XG4gICAgfTtcbiAgICBEZXRlY3Rvci5tb3ZlQXdheSA9IGZ1bmN0aW9uIChwb2ludCwgZnJvbVgsIGZyb21ZKSB7XG4gICAgICAgIHZhciB4ID0gcG9pbnQuZ2V0WCgpO1xuICAgICAgICB2YXIgeSA9IHBvaW50LmdldFkoKTtcbiAgICAgICAgaWYgKHggPCBmcm9tWCkge1xuICAgICAgICAgICAgeCAtPSAxO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgeCArPSAxO1xuICAgICAgICB9XG4gICAgICAgIGlmICh5IDwgZnJvbVkpIHtcbiAgICAgICAgICAgIHkgLT0gMTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHkgKz0gMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFJlc3VsdFBvaW50XzEuZGVmYXVsdCh4LCB5KTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIERldGVjdCBhIHNvbGlkIHNpZGUgd2hpY2ggaGFzIG1pbmltdW0gdHJhbnNpdGlvbi5cbiAgICAgKi9cbiAgICBEZXRlY3Rvci5wcm90b3R5cGUuZGV0ZWN0U29saWQxID0gZnVuY3Rpb24gKGNvcm5lclBvaW50cykge1xuICAgICAgICAvLyAwICAyXG4gICAgICAgIC8vIDEgIDNcbiAgICAgICAgdmFyIHBvaW50QSA9IGNvcm5lclBvaW50c1swXTtcbiAgICAgICAgdmFyIHBvaW50QiA9IGNvcm5lclBvaW50c1sxXTtcbiAgICAgICAgdmFyIHBvaW50QyA9IGNvcm5lclBvaW50c1szXTtcbiAgICAgICAgdmFyIHBvaW50RCA9IGNvcm5lclBvaW50c1syXTtcbiAgICAgICAgdmFyIHRyQUIgPSB0aGlzLnRyYW5zaXRpb25zQmV0d2Vlbihwb2ludEEsIHBvaW50Qik7XG4gICAgICAgIHZhciB0ckJDID0gdGhpcy50cmFuc2l0aW9uc0JldHdlZW4ocG9pbnRCLCBwb2ludEMpO1xuICAgICAgICB2YXIgdHJDRCA9IHRoaXMudHJhbnNpdGlvbnNCZXR3ZWVuKHBvaW50QywgcG9pbnREKTtcbiAgICAgICAgdmFyIHRyREEgPSB0aGlzLnRyYW5zaXRpb25zQmV0d2Vlbihwb2ludEQsIHBvaW50QSk7XG4gICAgICAgIC8vIDAuLjNcbiAgICAgICAgLy8gOiAgOlxuICAgICAgICAvLyAxLS0yXG4gICAgICAgIHZhciBtaW4gPSB0ckFCO1xuICAgICAgICB2YXIgcG9pbnRzID0gW3BvaW50RCwgcG9pbnRBLCBwb2ludEIsIHBvaW50Q107XG4gICAgICAgIGlmIChtaW4gPiB0ckJDKSB7XG4gICAgICAgICAgICBtaW4gPSB0ckJDO1xuICAgICAgICAgICAgcG9pbnRzWzBdID0gcG9pbnRBO1xuICAgICAgICAgICAgcG9pbnRzWzFdID0gcG9pbnRCO1xuICAgICAgICAgICAgcG9pbnRzWzJdID0gcG9pbnRDO1xuICAgICAgICAgICAgcG9pbnRzWzNdID0gcG9pbnREO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtaW4gPiB0ckNEKSB7XG4gICAgICAgICAgICBtaW4gPSB0ckNEO1xuICAgICAgICAgICAgcG9pbnRzWzBdID0gcG9pbnRCO1xuICAgICAgICAgICAgcG9pbnRzWzFdID0gcG9pbnRDO1xuICAgICAgICAgICAgcG9pbnRzWzJdID0gcG9pbnREO1xuICAgICAgICAgICAgcG9pbnRzWzNdID0gcG9pbnRBO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtaW4gPiB0ckRBKSB7XG4gICAgICAgICAgICBwb2ludHNbMF0gPSBwb2ludEM7XG4gICAgICAgICAgICBwb2ludHNbMV0gPSBwb2ludEQ7XG4gICAgICAgICAgICBwb2ludHNbMl0gPSBwb2ludEE7XG4gICAgICAgICAgICBwb2ludHNbM10gPSBwb2ludEI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBvaW50cztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIERldGVjdCBhIHNlY29uZCBzb2xpZCBzaWRlIG5leHQgdG8gZmlyc3Qgc29saWQgc2lkZS5cbiAgICAgKi9cbiAgICBEZXRlY3Rvci5wcm90b3R5cGUuZGV0ZWN0U29saWQyID0gZnVuY3Rpb24gKHBvaW50cykge1xuICAgICAgICAvLyBBLi5EXG4gICAgICAgIC8vIDogIDpcbiAgICAgICAgLy8gQi0tQ1xuICAgICAgICB2YXIgcG9pbnRBID0gcG9pbnRzWzBdO1xuICAgICAgICB2YXIgcG9pbnRCID0gcG9pbnRzWzFdO1xuICAgICAgICB2YXIgcG9pbnRDID0gcG9pbnRzWzJdO1xuICAgICAgICB2YXIgcG9pbnREID0gcG9pbnRzWzNdO1xuICAgICAgICAvLyBUcmFuc2l0aW9uIGRldGVjdGlvbiBvbiB0aGUgZWRnZSBpcyBub3Qgc3RhYmxlLlxuICAgICAgICAvLyBUbyBzYWZlbHkgZGV0ZWN0LCBzaGlmdCB0aGUgcG9pbnRzIHRvIHRoZSBtb2R1bGUgY2VudGVyLlxuICAgICAgICB2YXIgdHIgPSB0aGlzLnRyYW5zaXRpb25zQmV0d2Vlbihwb2ludEEsIHBvaW50RCk7XG4gICAgICAgIHZhciBwb2ludEJzID0gRGV0ZWN0b3Iuc2hpZnRQb2ludChwb2ludEIsIHBvaW50QywgKHRyICsgMSkgKiA0KTtcbiAgICAgICAgdmFyIHBvaW50Q3MgPSBEZXRlY3Rvci5zaGlmdFBvaW50KHBvaW50QywgcG9pbnRCLCAodHIgKyAxKSAqIDQpO1xuICAgICAgICB2YXIgdHJCQSA9IHRoaXMudHJhbnNpdGlvbnNCZXR3ZWVuKHBvaW50QnMsIHBvaW50QSk7XG4gICAgICAgIHZhciB0ckNEID0gdGhpcy50cmFuc2l0aW9uc0JldHdlZW4ocG9pbnRDcywgcG9pbnREKTtcbiAgICAgICAgLy8gMC4uM1xuICAgICAgICAvLyB8ICA6XG4gICAgICAgIC8vIDEtLTJcbiAgICAgICAgaWYgKHRyQkEgPCB0ckNEKSB7XG4gICAgICAgICAgICAvLyBzb2xpZCBzaWRlczogQS1CLUNcbiAgICAgICAgICAgIHBvaW50c1swXSA9IHBvaW50QTtcbiAgICAgICAgICAgIHBvaW50c1sxXSA9IHBvaW50QjtcbiAgICAgICAgICAgIHBvaW50c1syXSA9IHBvaW50QztcbiAgICAgICAgICAgIHBvaW50c1szXSA9IHBvaW50RDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIHNvbGlkIHNpZGVzOiBCLUMtRFxuICAgICAgICAgICAgcG9pbnRzWzBdID0gcG9pbnRCO1xuICAgICAgICAgICAgcG9pbnRzWzFdID0gcG9pbnRDO1xuICAgICAgICAgICAgcG9pbnRzWzJdID0gcG9pbnREO1xuICAgICAgICAgICAgcG9pbnRzWzNdID0gcG9pbnRBO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwb2ludHM7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSBjb3JuZXIgcG9zaXRpb24gb2YgdGhlIHdoaXRlIHRvcCByaWdodCBtb2R1bGUuXG4gICAgICovXG4gICAgRGV0ZWN0b3IucHJvdG90eXBlLmNvcnJlY3RUb3BSaWdodCA9IGZ1bmN0aW9uIChwb2ludHMpIHtcbiAgICAgICAgLy8gQS4uRFxuICAgICAgICAvLyB8ICA6XG4gICAgICAgIC8vIEItLUNcbiAgICAgICAgdmFyIHBvaW50QSA9IHBvaW50c1swXTtcbiAgICAgICAgdmFyIHBvaW50QiA9IHBvaW50c1sxXTtcbiAgICAgICAgdmFyIHBvaW50QyA9IHBvaW50c1syXTtcbiAgICAgICAgdmFyIHBvaW50RCA9IHBvaW50c1szXTtcbiAgICAgICAgLy8gc2hpZnQgcG9pbnRzIGZvciBzYWZlIHRyYW5zaXRpb24gZGV0ZWN0aW9uLlxuICAgICAgICB2YXIgdHJUb3AgPSB0aGlzLnRyYW5zaXRpb25zQmV0d2Vlbihwb2ludEEsIHBvaW50RCk7XG4gICAgICAgIHZhciB0clJpZ2h0ID0gdGhpcy50cmFuc2l0aW9uc0JldHdlZW4ocG9pbnRCLCBwb2ludEQpO1xuICAgICAgICB2YXIgcG9pbnRBcyA9IERldGVjdG9yLnNoaWZ0UG9pbnQocG9pbnRBLCBwb2ludEIsICh0clJpZ2h0ICsgMSkgKiA0KTtcbiAgICAgICAgdmFyIHBvaW50Q3MgPSBEZXRlY3Rvci5zaGlmdFBvaW50KHBvaW50QywgcG9pbnRCLCAodHJUb3AgKyAxKSAqIDQpO1xuICAgICAgICB0clRvcCA9IHRoaXMudHJhbnNpdGlvbnNCZXR3ZWVuKHBvaW50QXMsIHBvaW50RCk7XG4gICAgICAgIHRyUmlnaHQgPSB0aGlzLnRyYW5zaXRpb25zQmV0d2Vlbihwb2ludENzLCBwb2ludEQpO1xuICAgICAgICB2YXIgY2FuZGlkYXRlMSA9IG5ldyBSZXN1bHRQb2ludF8xLmRlZmF1bHQocG9pbnRELmdldFgoKSArIChwb2ludEMuZ2V0WCgpIC0gcG9pbnRCLmdldFgoKSkgLyAodHJUb3AgKyAxKSwgcG9pbnRELmdldFkoKSArIChwb2ludEMuZ2V0WSgpIC0gcG9pbnRCLmdldFkoKSkgLyAodHJUb3AgKyAxKSk7XG4gICAgICAgIHZhciBjYW5kaWRhdGUyID0gbmV3IFJlc3VsdFBvaW50XzEuZGVmYXVsdChwb2ludEQuZ2V0WCgpICsgKHBvaW50QS5nZXRYKCkgLSBwb2ludEIuZ2V0WCgpKSAvICh0clJpZ2h0ICsgMSksIHBvaW50RC5nZXRZKCkgKyAocG9pbnRBLmdldFkoKSAtIHBvaW50Qi5nZXRZKCkpIC8gKHRyUmlnaHQgKyAxKSk7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKGNhbmRpZGF0ZTEpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1ZhbGlkKGNhbmRpZGF0ZTIpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZTI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZChjYW5kaWRhdGUyKSkge1xuICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZTE7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHN1bWMxID0gdGhpcy50cmFuc2l0aW9uc0JldHdlZW4ocG9pbnRBcywgY2FuZGlkYXRlMSkgKyB0aGlzLnRyYW5zaXRpb25zQmV0d2Vlbihwb2ludENzLCBjYW5kaWRhdGUxKTtcbiAgICAgICAgdmFyIHN1bWMyID0gdGhpcy50cmFuc2l0aW9uc0JldHdlZW4ocG9pbnRBcywgY2FuZGlkYXRlMikgKyB0aGlzLnRyYW5zaXRpb25zQmV0d2Vlbihwb2ludENzLCBjYW5kaWRhdGUyKTtcbiAgICAgICAgaWYgKHN1bWMxID4gc3VtYzIpIHtcbiAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGUxO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZTI7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFNoaWZ0IHRoZSBlZGdlIHBvaW50cyB0byB0aGUgbW9kdWxlIGNlbnRlci5cbiAgICAgKi9cbiAgICBEZXRlY3Rvci5wcm90b3R5cGUuc2hpZnRUb01vZHVsZUNlbnRlciA9IGZ1bmN0aW9uIChwb2ludHMpIHtcbiAgICAgICAgLy8gQS4uRFxuICAgICAgICAvLyB8ICA6XG4gICAgICAgIC8vIEItLUNcbiAgICAgICAgdmFyIHBvaW50QSA9IHBvaW50c1swXTtcbiAgICAgICAgdmFyIHBvaW50QiA9IHBvaW50c1sxXTtcbiAgICAgICAgdmFyIHBvaW50QyA9IHBvaW50c1syXTtcbiAgICAgICAgdmFyIHBvaW50RCA9IHBvaW50c1szXTtcbiAgICAgICAgLy8gY2FsY3VsYXRlIHBzZXVkbyBkaW1lbnNpb25zXG4gICAgICAgIHZhciBkaW1IID0gdGhpcy50cmFuc2l0aW9uc0JldHdlZW4ocG9pbnRBLCBwb2ludEQpICsgMTtcbiAgICAgICAgdmFyIGRpbVYgPSB0aGlzLnRyYW5zaXRpb25zQmV0d2Vlbihwb2ludEMsIHBvaW50RCkgKyAxO1xuICAgICAgICAvLyBzaGlmdCBwb2ludHMgZm9yIHNhZmUgZGltZW5zaW9uIGRldGVjdGlvblxuICAgICAgICB2YXIgcG9pbnRBcyA9IERldGVjdG9yLnNoaWZ0UG9pbnQocG9pbnRBLCBwb2ludEIsIGRpbVYgKiA0KTtcbiAgICAgICAgdmFyIHBvaW50Q3MgPSBEZXRlY3Rvci5zaGlmdFBvaW50KHBvaW50QywgcG9pbnRCLCBkaW1IICogNCk7XG4gICAgICAgIC8vICBjYWxjdWxhdGUgbW9yZSBwcmVjaXNlIGRpbWVuc2lvbnNcbiAgICAgICAgZGltSCA9IHRoaXMudHJhbnNpdGlvbnNCZXR3ZWVuKHBvaW50QXMsIHBvaW50RCkgKyAxO1xuICAgICAgICBkaW1WID0gdGhpcy50cmFuc2l0aW9uc0JldHdlZW4ocG9pbnRDcywgcG9pbnREKSArIDE7XG4gICAgICAgIGlmICgoZGltSCAmIDB4MDEpID09PSAxKSB7XG4gICAgICAgICAgICBkaW1IICs9IDE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKChkaW1WICYgMHgwMSkgPT09IDEpIHtcbiAgICAgICAgICAgIGRpbVYgKz0gMTtcbiAgICAgICAgfVxuICAgICAgICAvLyBXaGl0ZVJlY3RhbmdsZURldGVjdG9yIHJldHVybnMgcG9pbnRzIGluc2lkZSBvZiB0aGUgcmVjdGFuZ2xlLlxuICAgICAgICAvLyBJIHdhbnQgcG9pbnRzIG9uIHRoZSBlZGdlcy5cbiAgICAgICAgdmFyIGNlbnRlclggPSAocG9pbnRBLmdldFgoKSArIHBvaW50Qi5nZXRYKCkgKyBwb2ludEMuZ2V0WCgpICsgcG9pbnRELmdldFgoKSkgLyA0O1xuICAgICAgICB2YXIgY2VudGVyWSA9IChwb2ludEEuZ2V0WSgpICsgcG9pbnRCLmdldFkoKSArIHBvaW50Qy5nZXRZKCkgKyBwb2ludEQuZ2V0WSgpKSAvIDQ7XG4gICAgICAgIHBvaW50QSA9IERldGVjdG9yLm1vdmVBd2F5KHBvaW50QSwgY2VudGVyWCwgY2VudGVyWSk7XG4gICAgICAgIHBvaW50QiA9IERldGVjdG9yLm1vdmVBd2F5KHBvaW50QiwgY2VudGVyWCwgY2VudGVyWSk7XG4gICAgICAgIHBvaW50QyA9IERldGVjdG9yLm1vdmVBd2F5KHBvaW50QywgY2VudGVyWCwgY2VudGVyWSk7XG4gICAgICAgIHBvaW50RCA9IERldGVjdG9yLm1vdmVBd2F5KHBvaW50RCwgY2VudGVyWCwgY2VudGVyWSk7XG4gICAgICAgIHZhciBwb2ludEJzO1xuICAgICAgICB2YXIgcG9pbnREcztcbiAgICAgICAgLy8gc2hpZnQgcG9pbnRzIHRvIHRoZSBjZW50ZXIgb2YgZWFjaCBtb2R1bGVzXG4gICAgICAgIHBvaW50QXMgPSBEZXRlY3Rvci5zaGlmdFBvaW50KHBvaW50QSwgcG9pbnRCLCBkaW1WICogNCk7XG4gICAgICAgIHBvaW50QXMgPSBEZXRlY3Rvci5zaGlmdFBvaW50KHBvaW50QXMsIHBvaW50RCwgZGltSCAqIDQpO1xuICAgICAgICBwb2ludEJzID0gRGV0ZWN0b3Iuc2hpZnRQb2ludChwb2ludEIsIHBvaW50QSwgZGltViAqIDQpO1xuICAgICAgICBwb2ludEJzID0gRGV0ZWN0b3Iuc2hpZnRQb2ludChwb2ludEJzLCBwb2ludEMsIGRpbUggKiA0KTtcbiAgICAgICAgcG9pbnRDcyA9IERldGVjdG9yLnNoaWZ0UG9pbnQocG9pbnRDLCBwb2ludEQsIGRpbVYgKiA0KTtcbiAgICAgICAgcG9pbnRDcyA9IERldGVjdG9yLnNoaWZ0UG9pbnQocG9pbnRDcywgcG9pbnRCLCBkaW1IICogNCk7XG4gICAgICAgIHBvaW50RHMgPSBEZXRlY3Rvci5zaGlmdFBvaW50KHBvaW50RCwgcG9pbnRDLCBkaW1WICogNCk7XG4gICAgICAgIHBvaW50RHMgPSBEZXRlY3Rvci5zaGlmdFBvaW50KHBvaW50RHMsIHBvaW50QSwgZGltSCAqIDQpO1xuICAgICAgICByZXR1cm4gW3BvaW50QXMsIHBvaW50QnMsIHBvaW50Q3MsIHBvaW50RHNdO1xuICAgIH07XG4gICAgRGV0ZWN0b3IucHJvdG90eXBlLmlzVmFsaWQgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICByZXR1cm4gcC5nZXRYKCkgPj0gMCAmJiBwLmdldFgoKSA8IHRoaXMuaW1hZ2UuZ2V0V2lkdGgoKSAmJiBwLmdldFkoKSA+IDAgJiYgcC5nZXRZKCkgPCB0aGlzLmltYWdlLmdldEhlaWdodCgpO1xuICAgIH07XG4gICAgRGV0ZWN0b3Iuc2FtcGxlR3JpZCA9IGZ1bmN0aW9uIChpbWFnZSwgdG9wTGVmdCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQsIHRvcFJpZ2h0LCBkaW1lbnNpb25YLCBkaW1lbnNpb25ZKSB7XG4gICAgICAgIHZhciBzYW1wbGVyID0gR3JpZFNhbXBsZXJJbnN0YW5jZV8xLmRlZmF1bHQuZ2V0SW5zdGFuY2UoKTtcbiAgICAgICAgcmV0dXJuIHNhbXBsZXIuc2FtcGxlR3JpZChpbWFnZSwgZGltZW5zaW9uWCwgZGltZW5zaW9uWSwgMC41LCAwLjUsIGRpbWVuc2lvblggLSAwLjUsIDAuNSwgZGltZW5zaW9uWCAtIDAuNSwgZGltZW5zaW9uWSAtIDAuNSwgMC41LCBkaW1lbnNpb25ZIC0gMC41LCB0b3BMZWZ0LmdldFgoKSwgdG9wTGVmdC5nZXRZKCksIHRvcFJpZ2h0LmdldFgoKSwgdG9wUmlnaHQuZ2V0WSgpLCBib3R0b21SaWdodC5nZXRYKCksIGJvdHRvbVJpZ2h0LmdldFkoKSwgYm90dG9tTGVmdC5nZXRYKCksIGJvdHRvbUxlZnQuZ2V0WSgpKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIENvdW50cyB0aGUgbnVtYmVyIG9mIGJsYWNrL3doaXRlIHRyYW5zaXRpb25zIGJldHdlZW4gdHdvIHBvaW50cywgdXNpbmcgc29tZXRoaW5nIGxpa2UgQnJlc2VuaGFtJ3MgYWxnb3JpdGhtLlxuICAgICAqL1xuICAgIERldGVjdG9yLnByb3RvdHlwZS50cmFuc2l0aW9uc0JldHdlZW4gPSBmdW5jdGlvbiAoZnJvbSwgdG8pIHtcbiAgICAgICAgLy8gU2VlIFFSIENvZGUgRGV0ZWN0b3IsIHNpemVPZkJsYWNrV2hpdGVCbGFja1J1bigpXG4gICAgICAgIHZhciBmcm9tWCA9IE1hdGgudHJ1bmMoZnJvbS5nZXRYKCkpO1xuICAgICAgICB2YXIgZnJvbVkgPSBNYXRoLnRydW5jKGZyb20uZ2V0WSgpKTtcbiAgICAgICAgdmFyIHRvWCA9IE1hdGgudHJ1bmModG8uZ2V0WCgpKTtcbiAgICAgICAgdmFyIHRvWSA9IE1hdGgudHJ1bmModG8uZ2V0WSgpKTtcbiAgICAgICAgdmFyIHN0ZWVwID0gTWF0aC5hYnModG9ZIC0gZnJvbVkpID4gTWF0aC5hYnModG9YIC0gZnJvbVgpO1xuICAgICAgICBpZiAoc3RlZXApIHtcbiAgICAgICAgICAgIHZhciB0ZW1wID0gZnJvbVg7XG4gICAgICAgICAgICBmcm9tWCA9IGZyb21ZO1xuICAgICAgICAgICAgZnJvbVkgPSB0ZW1wO1xuICAgICAgICAgICAgdGVtcCA9IHRvWDtcbiAgICAgICAgICAgIHRvWCA9IHRvWTtcbiAgICAgICAgICAgIHRvWSA9IHRlbXA7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGR4ID0gTWF0aC5hYnModG9YIC0gZnJvbVgpO1xuICAgICAgICB2YXIgZHkgPSBNYXRoLmFicyh0b1kgLSBmcm9tWSk7XG4gICAgICAgIHZhciBlcnJvciA9IC1keCAvIDI7XG4gICAgICAgIHZhciB5c3RlcCA9IGZyb21ZIDwgdG9ZID8gMSA6IC0xO1xuICAgICAgICB2YXIgeHN0ZXAgPSBmcm9tWCA8IHRvWCA/IDEgOiAtMTtcbiAgICAgICAgdmFyIHRyYW5zaXRpb25zID0gMDtcbiAgICAgICAgdmFyIGluQmxhY2sgPSB0aGlzLmltYWdlLmdldChzdGVlcCA/IGZyb21ZIDogZnJvbVgsIHN0ZWVwID8gZnJvbVggOiBmcm9tWSk7XG4gICAgICAgIGZvciAodmFyIHggPSBmcm9tWCwgeSA9IGZyb21ZOyB4ICE9PSB0b1g7IHggKz0geHN0ZXApIHtcbiAgICAgICAgICAgIHZhciBpc0JsYWNrID0gdGhpcy5pbWFnZS5nZXQoc3RlZXAgPyB5IDogeCwgc3RlZXAgPyB4IDogeSk7XG4gICAgICAgICAgICBpZiAoaXNCbGFjayAhPT0gaW5CbGFjaykge1xuICAgICAgICAgICAgICAgIHRyYW5zaXRpb25zKys7XG4gICAgICAgICAgICAgICAgaW5CbGFjayA9IGlzQmxhY2s7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlcnJvciArPSBkeTtcbiAgICAgICAgICAgIGlmIChlcnJvciA+IDApIHtcbiAgICAgICAgICAgICAgICBpZiAoeSA9PT0gdG9ZKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB5ICs9IHlzdGVwO1xuICAgICAgICAgICAgICAgIGVycm9yIC09IGR4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cmFuc2l0aW9ucztcbiAgICB9O1xuICAgIHJldHVybiBEZXRlY3Rvcjtcbn0oKSk7XG5leHBvcnRzLmRlZmF1bHQgPSBEZXRlY3Rvcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURldGVjdG9yLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIEJhcmNvZGVGb3JtYXRfMSA9IHJlcXVpcmUoXCIuLi9CYXJjb2RlRm9ybWF0XCIpO1xudmFyIEJpdE1hdHJpeF8xID0gcmVxdWlyZShcIi4uL2NvbW1vbi9CaXRNYXRyaXhcIik7XG52YXIgRGVjb2RlSGludFR5cGVfMSA9IHJlcXVpcmUoXCIuLi9EZWNvZGVIaW50VHlwZVwiKTtcbnZhciBOb3RGb3VuZEV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4uL05vdEZvdW5kRXhjZXB0aW9uXCIpO1xudmFyIFJlc3VsdF8xID0gcmVxdWlyZShcIi4uL1Jlc3VsdFwiKTtcbnZhciBSZXN1bHRNZXRhZGF0YVR5cGVfMSA9IHJlcXVpcmUoXCIuLi9SZXN1bHRNZXRhZGF0YVR5cGVcIik7XG52YXIgU3lzdGVtXzEgPSByZXF1aXJlKFwiLi4vdXRpbC9TeXN0ZW1cIik7XG52YXIgRGVjb2Rlcl8xID0gcmVxdWlyZShcIi4vZGVjb2Rlci9EZWNvZGVyXCIpO1xudmFyIERldGVjdG9yXzEgPSByZXF1aXJlKFwiLi9kZXRlY3Rvci9EZXRlY3RvclwiKTtcbi8qXG4gKiBDb3B5cmlnaHQgMjAwNyBaWGluZyBhdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBUaGlzIGltcGxlbWVudGF0aW9uIGNhbiBkZXRlY3QgYW5kIGRlY29kZSBEYXRhIE1hdHJpeCBjb2RlcyBpbiBhbiBpbWFnZS5cbiAqXG4gKiBAYXV0aG9yIGJicm93bkBnb29nbGUuY29tIChCcmlhbiBCcm93bilcbiAqL1xudmFyIERhdGFNYXRyaXhSZWFkZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRGF0YU1hdHJpeFJlYWRlcigpIHtcbiAgICAgICAgdGhpcy5kZWNvZGVyID0gbmV3IERlY29kZXJfMS5kZWZhdWx0KCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIExvY2F0ZXMgYW5kIGRlY29kZXMgYSBEYXRhIE1hdHJpeCBjb2RlIGluIGFuIGltYWdlLlxuICAgICAqXG4gICAgICogQHJldHVybiBhIFN0cmluZyByZXByZXNlbnRpbmcgdGhlIGNvbnRlbnQgZW5jb2RlZCBieSB0aGUgRGF0YSBNYXRyaXggY29kZVxuICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb24gaWYgYSBEYXRhIE1hdHJpeCBjb2RlIGNhbm5vdCBiZSBmb3VuZFxuICAgICAqIEB0aHJvd3MgRm9ybWF0RXhjZXB0aW9uIGlmIGEgRGF0YSBNYXRyaXggY29kZSBjYW5ub3QgYmUgZGVjb2RlZFxuICAgICAqIEB0aHJvd3MgQ2hlY2tzdW1FeGNlcHRpb24gaWYgZXJyb3IgY29ycmVjdGlvbiBmYWlsc1xuICAgICAqL1xuICAgIC8vIEBPdmVycmlkZVxuICAgIC8vIHB1YmxpYyBSZXN1bHQgZGVjb2RlKEJpbmFyeUJpdG1hcCBpbWFnZSkgdGhyb3dzIE5vdEZvdW5kRXhjZXB0aW9uLCBDaGVja3N1bUV4Y2VwdGlvbiwgRm9ybWF0RXhjZXB0aW9uIHtcbiAgICAvLyAgIHJldHVybiBkZWNvZGUoaW1hZ2UsIG51bGwpO1xuICAgIC8vIH1cbiAgICAvLyBAT3ZlcnJpZGVcbiAgICBEYXRhTWF0cml4UmVhZGVyLnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbiAoaW1hZ2UsIGhpbnRzKSB7XG4gICAgICAgIGlmIChoaW50cyA9PT0gdm9pZCAwKSB7IGhpbnRzID0gbnVsbDsgfVxuICAgICAgICB2YXIgZGVjb2RlclJlc3VsdDtcbiAgICAgICAgdmFyIHBvaW50cztcbiAgICAgICAgaWYgKGhpbnRzICE9IG51bGwgJiYgaGludHMuaGFzKERlY29kZUhpbnRUeXBlXzEuZGVmYXVsdC5QVVJFX0JBUkNPREUpKSB7XG4gICAgICAgICAgICB2YXIgYml0cyA9IERhdGFNYXRyaXhSZWFkZXIuZXh0cmFjdFB1cmVCaXRzKGltYWdlLmdldEJsYWNrTWF0cml4KCkpO1xuICAgICAgICAgICAgZGVjb2RlclJlc3VsdCA9IHRoaXMuZGVjb2Rlci5kZWNvZGUoYml0cyk7XG4gICAgICAgICAgICBwb2ludHMgPSBEYXRhTWF0cml4UmVhZGVyLk5PX1BPSU5UUztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBkZXRlY3RvclJlc3VsdCA9IG5ldyBEZXRlY3Rvcl8xLmRlZmF1bHQoaW1hZ2UuZ2V0QmxhY2tNYXRyaXgoKSkuZGV0ZWN0KCk7XG4gICAgICAgICAgICBkZWNvZGVyUmVzdWx0ID0gdGhpcy5kZWNvZGVyLmRlY29kZShkZXRlY3RvclJlc3VsdC5nZXRCaXRzKCkpO1xuICAgICAgICAgICAgcG9pbnRzID0gZGV0ZWN0b3JSZXN1bHQuZ2V0UG9pbnRzKCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJhd0J5dGVzID0gZGVjb2RlclJlc3VsdC5nZXRSYXdCeXRlcygpO1xuICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IFJlc3VsdF8xLmRlZmF1bHQoZGVjb2RlclJlc3VsdC5nZXRUZXh0KCksIHJhd0J5dGVzLCA4ICogcmF3Qnl0ZXMubGVuZ3RoLCBwb2ludHMsIEJhcmNvZGVGb3JtYXRfMS5kZWZhdWx0LkRBVEFfTUFUUklYLCBTeXN0ZW1fMS5kZWZhdWx0LmN1cnJlbnRUaW1lTWlsbGlzKCkpO1xuICAgICAgICB2YXIgYnl0ZVNlZ21lbnRzID0gZGVjb2RlclJlc3VsdC5nZXRCeXRlU2VnbWVudHMoKTtcbiAgICAgICAgaWYgKGJ5dGVTZWdtZW50cyAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXN1bHQucHV0TWV0YWRhdGEoUmVzdWx0TWV0YWRhdGFUeXBlXzEuZGVmYXVsdC5CWVRFX1NFR01FTlRTLCBieXRlU2VnbWVudHMpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBlY0xldmVsID0gZGVjb2RlclJlc3VsdC5nZXRFQ0xldmVsKCk7XG4gICAgICAgIGlmIChlY0xldmVsICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXRNZXRhZGF0YShSZXN1bHRNZXRhZGF0YVR5cGVfMS5kZWZhdWx0LkVSUk9SX0NPUlJFQ1RJT05fTEVWRUwsIGVjTGV2ZWwpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICAvLyBAT3ZlcnJpZGVcbiAgICBEYXRhTWF0cml4UmVhZGVyLnByb3RvdHlwZS5yZXNldCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8gZG8gbm90aGluZ1xuICAgIH07XG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgZGV0ZWN0cyBhIGNvZGUgaW4gYSBcInB1cmVcIiBpbWFnZSAtLSB0aGF0IGlzLCBwdXJlIG1vbm9jaHJvbWUgaW1hZ2VcbiAgICAgKiB3aGljaCBjb250YWlucyBvbmx5IGFuIHVucm90YXRlZCwgdW5za2V3ZWQsIGltYWdlIG9mIGEgY29kZSwgd2l0aCBzb21lIHdoaXRlIGJvcmRlclxuICAgICAqIGFyb3VuZCBpdC4gVGhpcyBpcyBhIHNwZWNpYWxpemVkIG1ldGhvZCB0aGF0IHdvcmtzIGV4Y2VwdGlvbmFsbHkgZmFzdCBpbiB0aGlzIHNwZWNpYWxcbiAgICAgKiBjYXNlLlxuICAgICAqXG4gICAgICogQHNlZSBjb20uZ29vZ2xlLnp4aW5nLnFyY29kZS5RUkNvZGVSZWFkZXIjZXh0cmFjdFB1cmVCaXRzKEJpdE1hdHJpeClcbiAgICAgKi9cbiAgICBEYXRhTWF0cml4UmVhZGVyLmV4dHJhY3RQdXJlQml0cyA9IGZ1bmN0aW9uIChpbWFnZSkge1xuICAgICAgICB2YXIgbGVmdFRvcEJsYWNrID0gaW1hZ2UuZ2V0VG9wTGVmdE9uQml0KCk7XG4gICAgICAgIHZhciByaWdodEJvdHRvbUJsYWNrID0gaW1hZ2UuZ2V0Qm90dG9tUmlnaHRPbkJpdCgpO1xuICAgICAgICBpZiAobGVmdFRvcEJsYWNrID09IG51bGwgfHwgcmlnaHRCb3R0b21CbGFjayA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG1vZHVsZVNpemUgPSB0aGlzLm1vZHVsZVNpemUobGVmdFRvcEJsYWNrLCBpbWFnZSk7XG4gICAgICAgIHZhciB0b3AgPSBsZWZ0VG9wQmxhY2tbMV07XG4gICAgICAgIHZhciBib3R0b20gPSByaWdodEJvdHRvbUJsYWNrWzFdO1xuICAgICAgICB2YXIgbGVmdCA9IGxlZnRUb3BCbGFja1swXTtcbiAgICAgICAgdmFyIHJpZ2h0ID0gcmlnaHRCb3R0b21CbGFja1swXTtcbiAgICAgICAgdmFyIG1hdHJpeFdpZHRoID0gKHJpZ2h0IC0gbGVmdCArIDEpIC8gbW9kdWxlU2l6ZTtcbiAgICAgICAgdmFyIG1hdHJpeEhlaWdodCA9IChib3R0b20gLSB0b3AgKyAxKSAvIG1vZHVsZVNpemU7XG4gICAgICAgIGlmIChtYXRyaXhXaWR0aCA8PSAwIHx8IG1hdHJpeEhlaWdodCA8PSAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUHVzaCBpbiB0aGUgXCJib3JkZXJcIiBieSBoYWxmIHRoZSBtb2R1bGUgd2lkdGggc28gdGhhdCB3ZSBzdGFydFxuICAgICAgICAvLyBzYW1wbGluZyBpbiB0aGUgbWlkZGxlIG9mIHRoZSBtb2R1bGUuIEp1c3QgaW4gY2FzZSB0aGUgaW1hZ2UgaXMgYVxuICAgICAgICAvLyBsaXR0bGUgb2ZmLCB0aGlzIHdpbGwgaGVscCByZWNvdmVyLlxuICAgICAgICB2YXIgbnVkZ2UgPSBtb2R1bGVTaXplIC8gMjtcbiAgICAgICAgdG9wICs9IG51ZGdlO1xuICAgICAgICBsZWZ0ICs9IG51ZGdlO1xuICAgICAgICAvLyBOb3cganVzdCByZWFkIG9mZiB0aGUgYml0c1xuICAgICAgICB2YXIgYml0cyA9IG5ldyBCaXRNYXRyaXhfMS5kZWZhdWx0KG1hdHJpeFdpZHRoLCBtYXRyaXhIZWlnaHQpO1xuICAgICAgICBmb3IgKHZhciB5ID0gMDsgeSA8IG1hdHJpeEhlaWdodDsgeSsrKSB7XG4gICAgICAgICAgICB2YXIgaU9mZnNldCA9IHRvcCArIHkgKiBtb2R1bGVTaXplO1xuICAgICAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCBtYXRyaXhXaWR0aDsgeCsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGltYWdlLmdldChsZWZ0ICsgeCAqIG1vZHVsZVNpemUsIGlPZmZzZXQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGJpdHMuc2V0KHgsIHkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYml0cztcbiAgICB9O1xuICAgIERhdGFNYXRyaXhSZWFkZXIubW9kdWxlU2l6ZSA9IGZ1bmN0aW9uIChsZWZ0VG9wQmxhY2ssIGltYWdlKSB7XG4gICAgICAgIHZhciB3aWR0aCA9IGltYWdlLmdldFdpZHRoKCk7XG4gICAgICAgIHZhciB4ID0gbGVmdFRvcEJsYWNrWzBdO1xuICAgICAgICB2YXIgeSA9IGxlZnRUb3BCbGFja1sxXTtcbiAgICAgICAgd2hpbGUgKHggPCB3aWR0aCAmJiBpbWFnZS5nZXQoeCwgeSkpIHtcbiAgICAgICAgICAgIHgrKztcbiAgICAgICAgfVxuICAgICAgICBpZiAoeCA9PT0gd2lkdGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbW9kdWxlU2l6ZSA9IHggLSBsZWZ0VG9wQmxhY2tbMF07XG4gICAgICAgIGlmIChtb2R1bGVTaXplID09PSAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1vZHVsZVNpemU7XG4gICAgfTtcbiAgICBEYXRhTWF0cml4UmVhZGVyLk5PX1BPSU5UUyA9IFtdO1xuICAgIHJldHVybiBEYXRhTWF0cml4UmVhZGVyO1xufSgpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IERhdGFNYXRyaXhSZWFkZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1EYXRhTWF0cml4UmVhZGVyLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkJyb3dzZXJEYXRhbWF0cml4Q29kZVJlYWRlciA9IHZvaWQgMDtcbnZhciBCcm93c2VyQ29kZVJlYWRlcl8xID0gcmVxdWlyZShcIi4vQnJvd3NlckNvZGVSZWFkZXJcIik7XG52YXIgRGF0YU1hdHJpeFJlYWRlcl8xID0gcmVxdWlyZShcIi4uL2NvcmUvZGF0YW1hdHJpeC9EYXRhTWF0cml4UmVhZGVyXCIpO1xuLyoqXG4gKiBAZGVwcmVjYXRlZCBNb3ZpbmcgdG8gQHp4aW5nL2Jyb3dzZXJcbiAqXG4gKiBRUiBDb2RlIHJlYWRlciB0byB1c2UgZnJvbSBicm93c2VyLlxuICovXG52YXIgQnJvd3NlckRhdGFtYXRyaXhDb2RlUmVhZGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhCcm93c2VyRGF0YW1hdHJpeENvZGVSZWFkZXIsIF9zdXBlcik7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBCcm93c2VyUVJDb2RlUmVhZGVyLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbdGltZUJldHdlZW5TY2Fuc01pbGxpcz01MDBdIHRoZSB0aW1lIGRlbGF5IGJldHdlZW4gc3Vic2VxdWVudCBkZWNvZGUgdHJpZXNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBCcm93c2VyRGF0YW1hdHJpeENvZGVSZWFkZXIodGltZUJldHdlZW5TY2Fuc01pbGxpcykge1xuICAgICAgICBpZiAodGltZUJldHdlZW5TY2Fuc01pbGxpcyA9PT0gdm9pZCAwKSB7IHRpbWVCZXR3ZWVuU2NhbnNNaWxsaXMgPSA1MDA7IH1cbiAgICAgICAgcmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsIG5ldyBEYXRhTWF0cml4UmVhZGVyXzEuZGVmYXVsdCgpLCB0aW1lQmV0d2VlblNjYW5zTWlsbGlzKSB8fCB0aGlzO1xuICAgIH1cbiAgICByZXR1cm4gQnJvd3NlckRhdGFtYXRyaXhDb2RlUmVhZGVyO1xufShCcm93c2VyQ29kZVJlYWRlcl8xLkJyb3dzZXJDb2RlUmVhZGVyKSk7XG5leHBvcnRzLkJyb3dzZXJEYXRhbWF0cml4Q29kZVJlYWRlciA9IEJyb3dzZXJEYXRhbWF0cml4Q29kZVJlYWRlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUJyb3dzZXJEYXRhbWF0cml4Q29kZVJlYWRlci5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8qXG4gKiBDb3B5cmlnaHQgMjAwNyBaWGluZyBhdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5FcnJvckNvcnJlY3Rpb25MZXZlbFZhbHVlcyA9IHZvaWQgMDtcbi8qbmFtZXNwYWNlIGNvbS5nb29nbGUuenhpbmcucXJjb2RlLmRlY29kZXIgeyovXG52YXIgQXJndW1lbnRFeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuLi8uLi9Bcmd1bWVudEV4Y2VwdGlvblwiKTtcbnZhciBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuLi8uLi9JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25cIik7XG52YXIgRXJyb3JDb3JyZWN0aW9uTGV2ZWxWYWx1ZXM7XG4oZnVuY3Rpb24gKEVycm9yQ29ycmVjdGlvbkxldmVsVmFsdWVzKSB7XG4gICAgRXJyb3JDb3JyZWN0aW9uTGV2ZWxWYWx1ZXNbRXJyb3JDb3JyZWN0aW9uTGV2ZWxWYWx1ZXNbXCJMXCJdID0gMF0gPSBcIkxcIjtcbiAgICBFcnJvckNvcnJlY3Rpb25MZXZlbFZhbHVlc1tFcnJvckNvcnJlY3Rpb25MZXZlbFZhbHVlc1tcIk1cIl0gPSAxXSA9IFwiTVwiO1xuICAgIEVycm9yQ29ycmVjdGlvbkxldmVsVmFsdWVzW0Vycm9yQ29ycmVjdGlvbkxldmVsVmFsdWVzW1wiUVwiXSA9IDJdID0gXCJRXCI7XG4gICAgRXJyb3JDb3JyZWN0aW9uTGV2ZWxWYWx1ZXNbRXJyb3JDb3JyZWN0aW9uTGV2ZWxWYWx1ZXNbXCJIXCJdID0gM10gPSBcIkhcIjtcbn0pKEVycm9yQ29ycmVjdGlvbkxldmVsVmFsdWVzID0gZXhwb3J0cy5FcnJvckNvcnJlY3Rpb25MZXZlbFZhbHVlcyB8fCAoZXhwb3J0cy5FcnJvckNvcnJlY3Rpb25MZXZlbFZhbHVlcyA9IHt9KSk7XG4vKipcbiAqIDxwPlNlZSBJU08gMTgwMDQ6MjAwNiwgNi41LjEuIFRoaXMgZW51bSBlbmNhcHN1bGF0ZXMgdGhlIGZvdXIgZXJyb3IgY29ycmVjdGlvbiBsZXZlbHNcbiAqIGRlZmluZWQgYnkgdGhlIFFSIGNvZGUgc3RhbmRhcmQuPC9wPlxuICpcbiAqIEBhdXRob3IgU2VhbiBPd2VuXG4gKi9cbnZhciBFcnJvckNvcnJlY3Rpb25MZXZlbCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBFcnJvckNvcnJlY3Rpb25MZXZlbCh2YWx1ZSwgc3RyaW5nVmFsdWUsIGJpdHMgLyppbnQqLykge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuc3RyaW5nVmFsdWUgPSBzdHJpbmdWYWx1ZTtcbiAgICAgICAgdGhpcy5iaXRzID0gYml0cztcbiAgICAgICAgRXJyb3JDb3JyZWN0aW9uTGV2ZWwuRk9SX0JJVFMuc2V0KGJpdHMsIHRoaXMpO1xuICAgICAgICBFcnJvckNvcnJlY3Rpb25MZXZlbC5GT1JfVkFMVUUuc2V0KHZhbHVlLCB0aGlzKTtcbiAgICB9XG4gICAgRXJyb3JDb3JyZWN0aW9uTGV2ZWwucHJvdG90eXBlLmdldFZhbHVlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgICB9O1xuICAgIEVycm9yQ29ycmVjdGlvbkxldmVsLnByb3RvdHlwZS5nZXRCaXRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5iaXRzO1xuICAgIH07XG4gICAgRXJyb3JDb3JyZWN0aW9uTGV2ZWwuZnJvbVN0cmluZyA9IGZ1bmN0aW9uIChzKSB7XG4gICAgICAgIHN3aXRjaCAocykge1xuICAgICAgICAgICAgY2FzZSAnTCc6IHJldHVybiBFcnJvckNvcnJlY3Rpb25MZXZlbC5MO1xuICAgICAgICAgICAgY2FzZSAnTSc6IHJldHVybiBFcnJvckNvcnJlY3Rpb25MZXZlbC5NO1xuICAgICAgICAgICAgY2FzZSAnUSc6IHJldHVybiBFcnJvckNvcnJlY3Rpb25MZXZlbC5RO1xuICAgICAgICAgICAgY2FzZSAnSCc6IHJldHVybiBFcnJvckNvcnJlY3Rpb25MZXZlbC5IO1xuICAgICAgICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdChzICsgJ25vdCBhdmFpbGFibGUnKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgRXJyb3JDb3JyZWN0aW9uTGV2ZWwucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdHJpbmdWYWx1ZTtcbiAgICB9O1xuICAgIEVycm9yQ29ycmVjdGlvbkxldmVsLnByb3RvdHlwZS5lcXVhbHMgPSBmdW5jdGlvbiAobykge1xuICAgICAgICBpZiAoIShvIGluc3RhbmNlb2YgRXJyb3JDb3JyZWN0aW9uTGV2ZWwpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG90aGVyID0gbztcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUgPT09IG90aGVyLnZhbHVlO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHBhcmFtIGJpdHMgaW50IGNvbnRhaW5pbmcgdGhlIHR3byBiaXRzIGVuY29kaW5nIGEgUVIgQ29kZSdzIGVycm9yIGNvcnJlY3Rpb24gbGV2ZWxcbiAgICAgKiBAcmV0dXJuIEVycm9yQ29ycmVjdGlvbkxldmVsIHJlcHJlc2VudGluZyB0aGUgZW5jb2RlZCBlcnJvciBjb3JyZWN0aW9uIGxldmVsXG4gICAgICovXG4gICAgRXJyb3JDb3JyZWN0aW9uTGV2ZWwuZm9yQml0cyA9IGZ1bmN0aW9uIChiaXRzIC8qaW50Ki8pIHtcbiAgICAgICAgaWYgKGJpdHMgPCAwIHx8IGJpdHMgPj0gRXJyb3JDb3JyZWN0aW9uTGV2ZWwuRk9SX0JJVFMuc2l6ZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gRXJyb3JDb3JyZWN0aW9uTGV2ZWwuRk9SX0JJVFMuZ2V0KGJpdHMpO1xuICAgIH07XG4gICAgRXJyb3JDb3JyZWN0aW9uTGV2ZWwuRk9SX0JJVFMgPSBuZXcgTWFwKCk7XG4gICAgRXJyb3JDb3JyZWN0aW9uTGV2ZWwuRk9SX1ZBTFVFID0gbmV3IE1hcCgpO1xuICAgIC8qKiBMID0gfjclIGNvcnJlY3Rpb24gKi9cbiAgICBFcnJvckNvcnJlY3Rpb25MZXZlbC5MID0gbmV3IEVycm9yQ29ycmVjdGlvbkxldmVsKEVycm9yQ29ycmVjdGlvbkxldmVsVmFsdWVzLkwsICdMJywgMHgwMSk7XG4gICAgLyoqIE0gPSB+MTUlIGNvcnJlY3Rpb24gKi9cbiAgICBFcnJvckNvcnJlY3Rpb25MZXZlbC5NID0gbmV3IEVycm9yQ29ycmVjdGlvbkxldmVsKEVycm9yQ29ycmVjdGlvbkxldmVsVmFsdWVzLk0sICdNJywgMHgwMCk7XG4gICAgLyoqIFEgPSB+MjUlIGNvcnJlY3Rpb24gKi9cbiAgICBFcnJvckNvcnJlY3Rpb25MZXZlbC5RID0gbmV3IEVycm9yQ29ycmVjdGlvbkxldmVsKEVycm9yQ29ycmVjdGlvbkxldmVsVmFsdWVzLlEsICdRJywgMHgwMyk7XG4gICAgLyoqIEggPSB+MzAlIGNvcnJlY3Rpb24gKi9cbiAgICBFcnJvckNvcnJlY3Rpb25MZXZlbC5IID0gbmV3IEVycm9yQ29ycmVjdGlvbkxldmVsKEVycm9yQ29ycmVjdGlvbkxldmVsVmFsdWVzLkgsICdIJywgMHgwMik7XG4gICAgcmV0dXJuIEVycm9yQ29ycmVjdGlvbkxldmVsO1xufSgpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IEVycm9yQ29ycmVjdGlvbkxldmVsO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RXJyb3JDb3JyZWN0aW9uTGV2ZWwuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IDIwMDcgWlhpbmcgYXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbnZhciBfX3ZhbHVlcyA9ICh0aGlzICYmIHRoaXMuX192YWx1ZXMpIHx8IGZ1bmN0aW9uKG8pIHtcbiAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xuICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qbmFtZXNwYWNlIGNvbS5nb29nbGUuenhpbmcucXJjb2RlLmRlY29kZXIgeyovXG52YXIgRXJyb3JDb3JyZWN0aW9uTGV2ZWxfMSA9IHJlcXVpcmUoXCIuL0Vycm9yQ29ycmVjdGlvbkxldmVsXCIpO1xudmFyIEludGVnZXJfMSA9IHJlcXVpcmUoXCIuLi8uLi91dGlsL0ludGVnZXJcIik7XG4vKipcbiAqIDxwPkVuY2Fwc3VsYXRlcyBhIFFSIENvZGUncyBmb3JtYXQgaW5mb3JtYXRpb24sIGluY2x1ZGluZyB0aGUgZGF0YSBtYXNrIHVzZWQgYW5kXG4gKiBlcnJvciBjb3JyZWN0aW9uIGxldmVsLjwvcD5cbiAqXG4gKiBAYXV0aG9yIFNlYW4gT3dlblxuICogQHNlZSBEYXRhTWFza1xuICogQHNlZSBFcnJvckNvcnJlY3Rpb25MZXZlbFxuICovXG52YXIgRm9ybWF0SW5mb3JtYXRpb24gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRm9ybWF0SW5mb3JtYXRpb24oZm9ybWF0SW5mbyAvKmludCovKSB7XG4gICAgICAgIC8vIEJpdHMgMyw0XG4gICAgICAgIHRoaXMuZXJyb3JDb3JyZWN0aW9uTGV2ZWwgPSBFcnJvckNvcnJlY3Rpb25MZXZlbF8xLmRlZmF1bHQuZm9yQml0cygoZm9ybWF0SW5mbyA+PiAzKSAmIDB4MDMpO1xuICAgICAgICAvLyBCb3R0b20gMyBiaXRzXG4gICAgICAgIHRoaXMuZGF0YU1hc2sgPSAvKihieXRlKSAqLyAoZm9ybWF0SW5mbyAmIDB4MDcpO1xuICAgIH1cbiAgICBGb3JtYXRJbmZvcm1hdGlvbi5udW1CaXRzRGlmZmVyaW5nID0gZnVuY3Rpb24gKGEgLyppbnQqLywgYiAvKmludCovKSB7XG4gICAgICAgIHJldHVybiBJbnRlZ2VyXzEuZGVmYXVsdC5iaXRDb3VudChhIF4gYik7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0gbWFza2VkRm9ybWF0SW5mbzEgZm9ybWF0IGluZm8gaW5kaWNhdG9yLCB3aXRoIG1hc2sgc3RpbGwgYXBwbGllZFxuICAgICAqIEBwYXJhbSBtYXNrZWRGb3JtYXRJbmZvMiBzZWNvbmQgY29weSBvZiBzYW1lIGluZm87IGJvdGggYXJlIGNoZWNrZWQgYXQgdGhlIHNhbWUgdGltZVxuICAgICAqICB0byBlc3RhYmxpc2ggYmVzdCBtYXRjaFxuICAgICAqIEByZXR1cm4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZvcm1hdCBpdCBzcGVjaWZpZXMsIG9yIHtAY29kZSBudWxsfVxuICAgICAqICBpZiBkb2Vzbid0IHNlZW0gdG8gbWF0Y2ggYW55IGtub3duIHBhdHRlcm5cbiAgICAgKi9cbiAgICBGb3JtYXRJbmZvcm1hdGlvbi5kZWNvZGVGb3JtYXRJbmZvcm1hdGlvbiA9IGZ1bmN0aW9uIChtYXNrZWRGb3JtYXRJbmZvMSAvKmludCovLCBtYXNrZWRGb3JtYXRJbmZvMiAvKmludCovKSB7XG4gICAgICAgIHZhciBmb3JtYXRJbmZvID0gRm9ybWF0SW5mb3JtYXRpb24uZG9EZWNvZGVGb3JtYXRJbmZvcm1hdGlvbihtYXNrZWRGb3JtYXRJbmZvMSwgbWFza2VkRm9ybWF0SW5mbzIpO1xuICAgICAgICBpZiAoZm9ybWF0SW5mbyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdEluZm87XG4gICAgICAgIH1cbiAgICAgICAgLy8gU2hvdWxkIHJldHVybiBudWxsLCBidXQsIHNvbWUgUVIgY29kZXMgYXBwYXJlbnRseVxuICAgICAgICAvLyBkbyBub3QgbWFzayB0aGlzIGluZm8uIFRyeSBhZ2FpbiBieSBhY3R1YWxseSBtYXNraW5nIHRoZSBwYXR0ZXJuXG4gICAgICAgIC8vIGZpcnN0XG4gICAgICAgIHJldHVybiBGb3JtYXRJbmZvcm1hdGlvbi5kb0RlY29kZUZvcm1hdEluZm9ybWF0aW9uKG1hc2tlZEZvcm1hdEluZm8xIF4gRm9ybWF0SW5mb3JtYXRpb24uRk9STUFUX0lORk9fTUFTS19RUiwgbWFza2VkRm9ybWF0SW5mbzIgXiBGb3JtYXRJbmZvcm1hdGlvbi5GT1JNQVRfSU5GT19NQVNLX1FSKTtcbiAgICB9O1xuICAgIEZvcm1hdEluZm9ybWF0aW9uLmRvRGVjb2RlRm9ybWF0SW5mb3JtYXRpb24gPSBmdW5jdGlvbiAobWFza2VkRm9ybWF0SW5mbzEgLyppbnQqLywgbWFza2VkRm9ybWF0SW5mbzIgLyppbnQqLykge1xuICAgICAgICB2YXIgZV8xLCBfYTtcbiAgICAgICAgLy8gRmluZCB0aGUgaW50IGluIEZPUk1BVF9JTkZPX0RFQ09ERV9MT09LVVAgd2l0aCBmZXdlc3QgYml0cyBkaWZmZXJpbmdcbiAgICAgICAgdmFyIGJlc3REaWZmZXJlbmNlID0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7XG4gICAgICAgIHZhciBiZXN0Rm9ybWF0SW5mbyA9IDA7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKEZvcm1hdEluZm9ybWF0aW9uLkZPUk1BVF9JTkZPX0RFQ09ERV9MT09LVVApLCBfYyA9IF9iLm5leHQoKTsgIV9jLmRvbmU7IF9jID0gX2IubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRlY29kZUluZm8gPSBfYy52YWx1ZTtcbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0SW5mbyA9IGRlY29kZUluZm9bMF07XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldEluZm8gPT09IG1hc2tlZEZvcm1hdEluZm8xIHx8IHRhcmdldEluZm8gPT09IG1hc2tlZEZvcm1hdEluZm8yKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEZvdW5kIGFuIGV4YWN0IG1hdGNoXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRm9ybWF0SW5mb3JtYXRpb24oZGVjb2RlSW5mb1sxXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBiaXRzRGlmZmVyZW5jZSA9IEZvcm1hdEluZm9ybWF0aW9uLm51bUJpdHNEaWZmZXJpbmcobWFza2VkRm9ybWF0SW5mbzEsIHRhcmdldEluZm8pO1xuICAgICAgICAgICAgICAgIGlmIChiaXRzRGlmZmVyZW5jZSA8IGJlc3REaWZmZXJlbmNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGJlc3RGb3JtYXRJbmZvID0gZGVjb2RlSW5mb1sxXTtcbiAgICAgICAgICAgICAgICAgICAgYmVzdERpZmZlcmVuY2UgPSBiaXRzRGlmZmVyZW5jZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG1hc2tlZEZvcm1hdEluZm8xICE9PSBtYXNrZWRGb3JtYXRJbmZvMikge1xuICAgICAgICAgICAgICAgICAgICAvLyBhbHNvIHRyeSB0aGUgb3RoZXIgb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgIGJpdHNEaWZmZXJlbmNlID0gRm9ybWF0SW5mb3JtYXRpb24ubnVtQml0c0RpZmZlcmluZyhtYXNrZWRGb3JtYXRJbmZvMiwgdGFyZ2V0SW5mbyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChiaXRzRGlmZmVyZW5jZSA8IGJlc3REaWZmZXJlbmNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiZXN0Rm9ybWF0SW5mbyA9IGRlY29kZUluZm9bMV07XG4gICAgICAgICAgICAgICAgICAgICAgICBiZXN0RGlmZmVyZW5jZSA9IGJpdHNEaWZmZXJlbmNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoX2MgJiYgIV9jLmRvbmUgJiYgKF9hID0gX2IucmV0dXJuKSkgX2EuY2FsbChfYik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gSGFtbWluZyBkaXN0YW5jZSBvZiB0aGUgMzIgbWFza2VkIGNvZGVzIGlzIDcsIGJ5IGNvbnN0cnVjdGlvbiwgc28gPD0gMyBiaXRzXG4gICAgICAgIC8vIGRpZmZlcmluZyBtZWFucyB3ZSBmb3VuZCBhIG1hdGNoXG4gICAgICAgIGlmIChiZXN0RGlmZmVyZW5jZSA8PSAzKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEZvcm1hdEluZm9ybWF0aW9uKGJlc3RGb3JtYXRJbmZvKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICAgIEZvcm1hdEluZm9ybWF0aW9uLnByb3RvdHlwZS5nZXRFcnJvckNvcnJlY3Rpb25MZXZlbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JDb3JyZWN0aW9uTGV2ZWw7XG4gICAgfTtcbiAgICBGb3JtYXRJbmZvcm1hdGlvbi5wcm90b3R5cGUuZ2V0RGF0YU1hc2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGFNYXNrO1xuICAgIH07XG4gICAgLypAT3ZlcnJpZGUqL1xuICAgIEZvcm1hdEluZm9ybWF0aW9uLnByb3RvdHlwZS5oYXNoQ29kZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLmVycm9yQ29ycmVjdGlvbkxldmVsLmdldEJpdHMoKSA8PCAzKSB8IHRoaXMuZGF0YU1hc2s7XG4gICAgfTtcbiAgICAvKkBPdmVycmlkZSovXG4gICAgRm9ybWF0SW5mb3JtYXRpb24ucHJvdG90eXBlLmVxdWFscyA9IGZ1bmN0aW9uIChvKSB7XG4gICAgICAgIGlmICghKG8gaW5zdGFuY2VvZiBGb3JtYXRJbmZvcm1hdGlvbikpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgb3RoZXIgPSBvO1xuICAgICAgICByZXR1cm4gdGhpcy5lcnJvckNvcnJlY3Rpb25MZXZlbCA9PT0gb3RoZXIuZXJyb3JDb3JyZWN0aW9uTGV2ZWwgJiZcbiAgICAgICAgICAgIHRoaXMuZGF0YU1hc2sgPT09IG90aGVyLmRhdGFNYXNrO1xuICAgIH07XG4gICAgRm9ybWF0SW5mb3JtYXRpb24uRk9STUFUX0lORk9fTUFTS19RUiA9IDB4NTQxMjtcbiAgICAvKipcbiAgICAgKiBTZWUgSVNPIDE4MDA0OjIwMDYsIEFubmV4IEMsIFRhYmxlIEMuMVxuICAgICAqL1xuICAgIEZvcm1hdEluZm9ybWF0aW9uLkZPUk1BVF9JTkZPX0RFQ09ERV9MT09LVVAgPSBbXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMHg1NDEyLCAweDAwXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMHg1MTI1LCAweDAxXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMHg1RTdDLCAweDAyXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMHg1QjRCLCAweDAzXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMHg0NUY5LCAweDA0XSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMHg0MENFLCAweDA1XSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMHg0Rjk3LCAweDA2XSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMHg0QUEwLCAweDA3XSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMHg3N0M0LCAweDA4XSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMHg3MkYzLCAweDA5XSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMHg3REFBLCAweDBBXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMHg3ODlELCAweDBCXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMHg2NjJGLCAweDBDXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMHg2MzE4LCAweDBEXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMHg2QzQxLCAweDBFXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMHg2OTc2LCAweDBGXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMHgxNjg5LCAweDEwXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMHgxM0JFLCAweDExXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMHgxQ0U3LCAweDEyXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMHgxOUQwLCAweDEzXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMHgwNzYyLCAweDE0XSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMHgwMjU1LCAweDE1XSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMHgwRDBDLCAweDE2XSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMHgwODNCLCAweDE3XSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMHgzNTVGLCAweDE4XSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMHgzMDY4LCAweDE5XSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMHgzRjMxLCAweDFBXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMHgzQTA2LCAweDFCXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMHgyNEI0LCAweDFDXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMHgyMTgzLCAweDFEXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMHgyRURBLCAweDFFXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMHgyQkVELCAweDFGXSksXG4gICAgXTtcbiAgICByZXR1cm4gRm9ybWF0SW5mb3JtYXRpb247XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gRm9ybWF0SW5mb3JtYXRpb247XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Gb3JtYXRJbmZvcm1hdGlvbi5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX3ZhbHVlcyA9ICh0aGlzICYmIHRoaXMuX192YWx1ZXMpIHx8IGZ1bmN0aW9uKG8pIHtcbiAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xuICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qKlxuICogPHA+RW5jYXBzdWxhdGVzIGEgc2V0IG9mIGVycm9yLWNvcnJlY3Rpb24gYmxvY2tzIGluIG9uZSBzeW1ib2wgdmVyc2lvbi4gTW9zdCB2ZXJzaW9ucyB3aWxsXG4gKiB1c2UgYmxvY2tzIG9mIGRpZmZlcmluZyBzaXplcyB3aXRoaW4gb25lIHZlcnNpb24sIHNvLCB0aGlzIGVuY2Fwc3VsYXRlcyB0aGUgcGFyYW1ldGVycyBmb3JcbiAqIGVhY2ggc2V0IG9mIGJsb2Nrcy4gSXQgYWxzbyBob2xkcyB0aGUgbnVtYmVyIG9mIGVycm9yLWNvcnJlY3Rpb24gY29kZXdvcmRzIHBlciBibG9jayBzaW5jZSBpdFxuICogd2lsbCBiZSB0aGUgc2FtZSBhY3Jvc3MgYWxsIGJsb2NrcyB3aXRoaW4gb25lIHZlcnNpb24uPC9wPlxuICovXG52YXIgRUNCbG9ja3MgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRUNCbG9ja3MoZWNDb2Rld29yZHNQZXJCbG9jayAvKmludCovKSB7XG4gICAgICAgIHZhciBlY0Jsb2NrcyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBfaSA9IDE7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgZWNCbG9ja3NbX2kgLSAxXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lY0NvZGV3b3Jkc1BlckJsb2NrID0gZWNDb2Rld29yZHNQZXJCbG9jaztcbiAgICAgICAgdGhpcy5lY0Jsb2NrcyA9IGVjQmxvY2tzO1xuICAgIH1cbiAgICBFQ0Jsb2Nrcy5wcm90b3R5cGUuZ2V0RUNDb2Rld29yZHNQZXJCbG9jayA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWNDb2Rld29yZHNQZXJCbG9jaztcbiAgICB9O1xuICAgIEVDQmxvY2tzLnByb3RvdHlwZS5nZXROdW1CbG9ja3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBlXzEsIF9hO1xuICAgICAgICB2YXIgdG90YWwgPSAwO1xuICAgICAgICB2YXIgZWNCbG9ja3MgPSB0aGlzLmVjQmxvY2tzO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yICh2YXIgZWNCbG9ja3NfMSA9IF9fdmFsdWVzKGVjQmxvY2tzKSwgZWNCbG9ja3NfMV8xID0gZWNCbG9ja3NfMS5uZXh0KCk7ICFlY0Jsb2Nrc18xXzEuZG9uZTsgZWNCbG9ja3NfMV8xID0gZWNCbG9ja3NfMS5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgZWNCbG9jayA9IGVjQmxvY2tzXzFfMS52YWx1ZTtcbiAgICAgICAgICAgICAgICB0b3RhbCArPSBlY0Jsb2NrLmdldENvdW50KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChlY0Jsb2Nrc18xXzEgJiYgIWVjQmxvY2tzXzFfMS5kb25lICYmIChfYSA9IGVjQmxvY2tzXzEucmV0dXJuKSkgX2EuY2FsbChlY0Jsb2Nrc18xKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdG90YWw7XG4gICAgfTtcbiAgICBFQ0Jsb2Nrcy5wcm90b3R5cGUuZ2V0VG90YWxFQ0NvZGV3b3JkcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWNDb2Rld29yZHNQZXJCbG9jayAqIHRoaXMuZ2V0TnVtQmxvY2tzKCk7XG4gICAgfTtcbiAgICBFQ0Jsb2Nrcy5wcm90b3R5cGUuZ2V0RUNCbG9ja3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVjQmxvY2tzO1xuICAgIH07XG4gICAgcmV0dXJuIEVDQmxvY2tzO1xufSgpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IEVDQmxvY2tzO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RUNCbG9ja3MuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vKipcbiAqIDxwPkVuY2Fwc3VsYXRlcyB0aGUgcGFyYW1ldGVycyBmb3Igb25lIGVycm9yLWNvcnJlY3Rpb24gYmxvY2sgaW4gb25lIHN5bWJvbCB2ZXJzaW9uLlxuICogVGhpcyBpbmNsdWRlcyB0aGUgbnVtYmVyIG9mIGRhdGEgY29kZXdvcmRzLCBhbmQgdGhlIG51bWJlciBvZiB0aW1lcyBhIGJsb2NrIHdpdGggdGhlc2VcbiAqIHBhcmFtZXRlcnMgaXMgdXNlZCBjb25zZWN1dGl2ZWx5IGluIHRoZSBRUiBjb2RlIHZlcnNpb24ncyBmb3JtYXQuPC9wPlxuICovXG52YXIgRUNCID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEVDQihjb3VudCAvKmludCovLCBkYXRhQ29kZXdvcmRzIC8qaW50Ki8pIHtcbiAgICAgICAgdGhpcy5jb3VudCA9IGNvdW50O1xuICAgICAgICB0aGlzLmRhdGFDb2Rld29yZHMgPSBkYXRhQ29kZXdvcmRzO1xuICAgIH1cbiAgICBFQ0IucHJvdG90eXBlLmdldENvdW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb3VudDtcbiAgICB9O1xuICAgIEVDQi5wcm90b3R5cGUuZ2V0RGF0YUNvZGV3b3JkcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YUNvZGV3b3JkcztcbiAgICB9O1xuICAgIHJldHVybiBFQ0I7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gRUNCO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RUNCLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuLypcbiAqIENvcHlyaWdodCAyMDA3IFpYaW5nIGF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgX192YWx1ZXMgPSAodGhpcyAmJiB0aGlzLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7XG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vKm5hbWVzcGFjZSBjb20uZ29vZ2xlLnp4aW5nLnFyY29kZS5kZWNvZGVyIHsqL1xudmFyIEJpdE1hdHJpeF8xID0gcmVxdWlyZShcIi4uLy4uL2NvbW1vbi9CaXRNYXRyaXhcIik7XG52YXIgRm9ybWF0SW5mb3JtYXRpb25fMSA9IHJlcXVpcmUoXCIuL0Zvcm1hdEluZm9ybWF0aW9uXCIpO1xudmFyIEVDQmxvY2tzXzEgPSByZXF1aXJlKFwiLi9FQ0Jsb2Nrc1wiKTtcbnZhciBFQ0JfMSA9IHJlcXVpcmUoXCIuL0VDQlwiKTtcbnZhciBGb3JtYXRFeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuLi8uLi9Gb3JtYXRFeGNlcHRpb25cIik7XG52YXIgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEgPSByZXF1aXJlKFwiLi4vLi4vSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXCIpO1xuLyoqXG4gKiBTZWUgSVNPIDE4MDA0OjIwMDYgQW5uZXggRFxuICpcbiAqIEBhdXRob3IgU2VhbiBPd2VuXG4gKi9cbnZhciBWZXJzaW9uID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFZlcnNpb24odmVyc2lvbk51bWJlciAvKmludCovLCBhbGlnbm1lbnRQYXR0ZXJuQ2VudGVycykge1xuICAgICAgICB2YXIgZV8xLCBfYTtcbiAgICAgICAgdmFyIGVjQmxvY2tzID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMjsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBlY0Jsb2Nrc1tfaSAtIDJdID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnZlcnNpb25OdW1iZXIgPSB2ZXJzaW9uTnVtYmVyO1xuICAgICAgICB0aGlzLmFsaWdubWVudFBhdHRlcm5DZW50ZXJzID0gYWxpZ25tZW50UGF0dGVybkNlbnRlcnM7XG4gICAgICAgIHRoaXMuZWNCbG9ja3MgPSBlY0Jsb2NrcztcbiAgICAgICAgdmFyIHRvdGFsID0gMDtcbiAgICAgICAgdmFyIGVjQ29kZXdvcmRzID0gZWNCbG9ja3NbMF0uZ2V0RUNDb2Rld29yZHNQZXJCbG9jaygpO1xuICAgICAgICB2YXIgZWNiQXJyYXkgPSBlY0Jsb2Nrc1swXS5nZXRFQ0Jsb2NrcygpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yICh2YXIgZWNiQXJyYXlfMSA9IF9fdmFsdWVzKGVjYkFycmF5KSwgZWNiQXJyYXlfMV8xID0gZWNiQXJyYXlfMS5uZXh0KCk7ICFlY2JBcnJheV8xXzEuZG9uZTsgZWNiQXJyYXlfMV8xID0gZWNiQXJyYXlfMS5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgZWNCbG9jayA9IGVjYkFycmF5XzFfMS52YWx1ZTtcbiAgICAgICAgICAgICAgICB0b3RhbCArPSBlY0Jsb2NrLmdldENvdW50KCkgKiAoZWNCbG9jay5nZXREYXRhQ29kZXdvcmRzKCkgKyBlY0NvZGV3b3Jkcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChlY2JBcnJheV8xXzEgJiYgIWVjYkFycmF5XzFfMS5kb25lICYmIChfYSA9IGVjYkFycmF5XzEucmV0dXJuKSkgX2EuY2FsbChlY2JBcnJheV8xKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRvdGFsQ29kZXdvcmRzID0gdG90YWw7XG4gICAgfVxuICAgIFZlcnNpb24ucHJvdG90eXBlLmdldFZlcnNpb25OdW1iZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZlcnNpb25OdW1iZXI7XG4gICAgfTtcbiAgICBWZXJzaW9uLnByb3RvdHlwZS5nZXRBbGlnbm1lbnRQYXR0ZXJuQ2VudGVycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWxpZ25tZW50UGF0dGVybkNlbnRlcnM7XG4gICAgfTtcbiAgICBWZXJzaW9uLnByb3RvdHlwZS5nZXRUb3RhbENvZGV3b3JkcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG90YWxDb2Rld29yZHM7XG4gICAgfTtcbiAgICBWZXJzaW9uLnByb3RvdHlwZS5nZXREaW1lbnNpb25Gb3JWZXJzaW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gMTcgKyA0ICogdGhpcy52ZXJzaW9uTnVtYmVyO1xuICAgIH07XG4gICAgVmVyc2lvbi5wcm90b3R5cGUuZ2V0RUNCbG9ja3NGb3JMZXZlbCA9IGZ1bmN0aW9uIChlY0xldmVsKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVjQmxvY2tzW2VjTGV2ZWwuZ2V0VmFsdWUoKV07XG4gICAgICAgIC8vIFRZUEVTQ1JJUFRQT1JUOiBvcmlnaW5hbCB3YXMgdXNpbmcgb3JkaW5hbCwgYW5kIHVzaW5nIHRoZSBvcmRlciBvZiBsZXZlbHMgYXMgZGVmaW5lZCBpbiBFcnJvckNvcnJlY3Rpb25MZXZlbCBlbnVtIChMTVFIKVxuICAgICAgICAvLyBJIHdpbGwgdXNlIHRoZSBkaXJlY3QgdmFsdWUgZnJvbSBFcnJvckNvcnJlY3Rpb25MZXZlbFZhbHVlcyBlbnVtIHdoaWNoIGluIHR5cGVzY3JpcHQgZ29lcyB0byBhIG51bWJlclxuICAgIH07XG4gICAgLyoqXG4gICAgICogPHA+RGVkdWNlcyB2ZXJzaW9uIGluZm9ybWF0aW9uIHB1cmVseSBmcm9tIFFSIENvZGUgZGltZW5zaW9ucy48L3A+XG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGltZW5zaW9uIGRpbWVuc2lvbiBpbiBtb2R1bGVzXG4gICAgICogQHJldHVybiBWZXJzaW9uIGZvciBhIFFSIENvZGUgb2YgdGhhdCBkaW1lbnNpb25cbiAgICAgKiBAdGhyb3dzIEZvcm1hdEV4Y2VwdGlvbiBpZiBkaW1lbnNpb24gaXMgbm90IDEgbW9kIDRcbiAgICAgKi9cbiAgICBWZXJzaW9uLmdldFByb3Zpc2lvbmFsVmVyc2lvbkZvckRpbWVuc2lvbiA9IGZ1bmN0aW9uIChkaW1lbnNpb24gLyppbnQqLykge1xuICAgICAgICBpZiAoZGltZW5zaW9uICUgNCAhPT0gMSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VmVyc2lvbkZvck51bWJlcigoZGltZW5zaW9uIC0gMTcpIC8gNCk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGlnbm9yZWQgLyo6IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiovKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBWZXJzaW9uLmdldFZlcnNpb25Gb3JOdW1iZXIgPSBmdW5jdGlvbiAodmVyc2lvbk51bWJlciAvKmludCovKSB7XG4gICAgICAgIGlmICh2ZXJzaW9uTnVtYmVyIDwgMSB8fCB2ZXJzaW9uTnVtYmVyID4gNDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFZlcnNpb24uVkVSU0lPTlNbdmVyc2lvbk51bWJlciAtIDFdO1xuICAgIH07XG4gICAgVmVyc2lvbi5kZWNvZGVWZXJzaW9uSW5mb3JtYXRpb24gPSBmdW5jdGlvbiAodmVyc2lvbkJpdHMgLyppbnQqLykge1xuICAgICAgICB2YXIgYmVzdERpZmZlcmVuY2UgPSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUjtcbiAgICAgICAgdmFyIGJlc3RWZXJzaW9uID0gMDtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBWZXJzaW9uLlZFUlNJT05fREVDT0RFX0lORk8ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciB0YXJnZXRWZXJzaW9uID0gVmVyc2lvbi5WRVJTSU9OX0RFQ09ERV9JTkZPW2ldO1xuICAgICAgICAgICAgLy8gRG8gdGhlIHZlcnNpb24gaW5mbyBiaXRzIG1hdGNoIGV4YWN0bHk/IGRvbmUuXG4gICAgICAgICAgICBpZiAodGFyZ2V0VmVyc2lvbiA9PT0gdmVyc2lvbkJpdHMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gVmVyc2lvbi5nZXRWZXJzaW9uRm9yTnVtYmVyKGkgKyA3KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIE90aGVyd2lzZSBzZWUgaWYgdGhpcyBpcyB0aGUgY2xvc2VzdCB0byBhIHJlYWwgdmVyc2lvbiBpbmZvIGJpdCBzdHJpbmdcbiAgICAgICAgICAgIC8vIHdlIGhhdmUgc2VlbiBzbyBmYXJcbiAgICAgICAgICAgIHZhciBiaXRzRGlmZmVyZW5jZSA9IEZvcm1hdEluZm9ybWF0aW9uXzEuZGVmYXVsdC5udW1CaXRzRGlmZmVyaW5nKHZlcnNpb25CaXRzLCB0YXJnZXRWZXJzaW9uKTtcbiAgICAgICAgICAgIGlmIChiaXRzRGlmZmVyZW5jZSA8IGJlc3REaWZmZXJlbmNlKSB7XG4gICAgICAgICAgICAgICAgYmVzdFZlcnNpb24gPSBpICsgNztcbiAgICAgICAgICAgICAgICBiZXN0RGlmZmVyZW5jZSA9IGJpdHNEaWZmZXJlbmNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIFdlIGNhbiB0b2xlcmF0ZSB1cCB0byAzIGJpdHMgb2YgZXJyb3Igc2luY2Ugbm8gdHdvIHZlcnNpb24gaW5mbyBjb2Rld29yZHMgd2lsbFxuICAgICAgICAvLyBkaWZmZXIgaW4gbGVzcyB0aGFuIDggYml0cy5cbiAgICAgICAgaWYgKGJlc3REaWZmZXJlbmNlIDw9IDMpIHtcbiAgICAgICAgICAgIHJldHVybiBWZXJzaW9uLmdldFZlcnNpb25Gb3JOdW1iZXIoYmVzdFZlcnNpb24pO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIHdlIGRpZG4ndCBmaW5kIGEgY2xvc2UgZW5vdWdoIG1hdGNoLCBmYWlsXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogU2VlIElTTyAxODAwNDoyMDA2IEFubmV4IEVcbiAgICAgKi9cbiAgICBWZXJzaW9uLnByb3RvdHlwZS5idWlsZEZ1bmN0aW9uUGF0dGVybiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGRpbWVuc2lvbiA9IHRoaXMuZ2V0RGltZW5zaW9uRm9yVmVyc2lvbigpO1xuICAgICAgICB2YXIgYml0TWF0cml4ID0gbmV3IEJpdE1hdHJpeF8xLmRlZmF1bHQoZGltZW5zaW9uKTtcbiAgICAgICAgLy8gVG9wIGxlZnQgZmluZGVyIHBhdHRlcm4gKyBzZXBhcmF0b3IgKyBmb3JtYXRcbiAgICAgICAgYml0TWF0cml4LnNldFJlZ2lvbigwLCAwLCA5LCA5KTtcbiAgICAgICAgLy8gVG9wIHJpZ2h0IGZpbmRlciBwYXR0ZXJuICsgc2VwYXJhdG9yICsgZm9ybWF0XG4gICAgICAgIGJpdE1hdHJpeC5zZXRSZWdpb24oZGltZW5zaW9uIC0gOCwgMCwgOCwgOSk7XG4gICAgICAgIC8vIEJvdHRvbSBsZWZ0IGZpbmRlciBwYXR0ZXJuICsgc2VwYXJhdG9yICsgZm9ybWF0XG4gICAgICAgIGJpdE1hdHJpeC5zZXRSZWdpb24oMCwgZGltZW5zaW9uIC0gOCwgOSwgOCk7XG4gICAgICAgIC8vIEFsaWdubWVudCBwYXR0ZXJuc1xuICAgICAgICB2YXIgbWF4ID0gdGhpcy5hbGlnbm1lbnRQYXR0ZXJuQ2VudGVycy5sZW5ndGg7XG4gICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgbWF4OyB4KyspIHtcbiAgICAgICAgICAgIHZhciBpID0gdGhpcy5hbGlnbm1lbnRQYXR0ZXJuQ2VudGVyc1t4XSAtIDI7XG4gICAgICAgICAgICBmb3IgKHZhciB5ID0gMDsgeSA8IG1heDsgeSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKCh4ID09PSAwICYmICh5ID09PSAwIHx8IHkgPT09IG1heCAtIDEpKSB8fCAoeCA9PT0gbWF4IC0gMSAmJiB5ID09PSAwKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBObyBhbGlnbm1lbnQgcGF0dGVybnMgbmVhciB0aGUgdGhyZWUgZmluZGVyIHBhdHRlcm5zXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBiaXRNYXRyaXguc2V0UmVnaW9uKHRoaXMuYWxpZ25tZW50UGF0dGVybkNlbnRlcnNbeV0gLSAyLCBpLCA1LCA1KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBWZXJ0aWNhbCB0aW1pbmcgcGF0dGVyblxuICAgICAgICBiaXRNYXRyaXguc2V0UmVnaW9uKDYsIDksIDEsIGRpbWVuc2lvbiAtIDE3KTtcbiAgICAgICAgLy8gSG9yaXpvbnRhbCB0aW1pbmcgcGF0dGVyblxuICAgICAgICBiaXRNYXRyaXguc2V0UmVnaW9uKDksIDYsIGRpbWVuc2lvbiAtIDE3LCAxKTtcbiAgICAgICAgaWYgKHRoaXMudmVyc2lvbk51bWJlciA+IDYpIHtcbiAgICAgICAgICAgIC8vIFZlcnNpb24gaW5mbywgdG9wIHJpZ2h0XG4gICAgICAgICAgICBiaXRNYXRyaXguc2V0UmVnaW9uKGRpbWVuc2lvbiAtIDExLCAwLCAzLCA2KTtcbiAgICAgICAgICAgIC8vIFZlcnNpb24gaW5mbywgYm90dG9tIGxlZnRcbiAgICAgICAgICAgIGJpdE1hdHJpeC5zZXRSZWdpb24oMCwgZGltZW5zaW9uIC0gMTEsIDYsIDMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBiaXRNYXRyaXg7XG4gICAgfTtcbiAgICAvKkBPdmVycmlkZSovXG4gICAgVmVyc2lvbi5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAnJyArIHRoaXMudmVyc2lvbk51bWJlcjtcbiAgICB9O1xuICAgIC8qKlxuICAgICAgICogU2VlIElTTyAxODAwNDoyMDA2IEFubmV4IEQuXG4gICAgICAgKiBFbGVtZW50IGkgcmVwcmVzZW50cyB0aGUgcmF3IHZlcnNpb24gYml0cyB0aGF0IHNwZWNpZnkgdmVyc2lvbiBpICsgN1xuICAgICAgICovXG4gICAgVmVyc2lvbi5WRVJTSU9OX0RFQ09ERV9JTkZPID0gSW50MzJBcnJheS5mcm9tKFtcbiAgICAgICAgMHgwN0M5NCwgMHgwODVCQywgMHgwOUE5OSwgMHgwQTREMywgMHgwQkJGNixcbiAgICAgICAgMHgwQzc2MiwgMHgwRDg0NywgMHgwRTYwRCwgMHgwRjkyOCwgMHgxMEI3OCxcbiAgICAgICAgMHgxMTQ1RCwgMHgxMkExNywgMHgxMzUzMiwgMHgxNDlBNiwgMHgxNTY4MyxcbiAgICAgICAgMHgxNjhDOSwgMHgxNzdFQywgMHgxOEVDNCwgMHgxOTFFMSwgMHgxQUZBQixcbiAgICAgICAgMHgxQjA4RSwgMHgxQ0MxQSwgMHgxRDMzRiwgMHgxRUQ3NSwgMHgxRjI1MCxcbiAgICAgICAgMHgyMDlENSwgMHgyMTZGMCwgMHgyMjhCQSwgMHgyMzc5RiwgMHgyNEIwQixcbiAgICAgICAgMHgyNTQyRSwgMHgyNkE2NCwgMHgyNzU0MSwgMHgyOEM2OVxuICAgIF0pO1xuICAgIC8qKlxuICAgICAgICogU2VlIElTTyAxODAwNDoyMDA2IDYuNS4xIFRhYmxlIDlcbiAgICAgICAqL1xuICAgIFZlcnNpb24uVkVSU0lPTlMgPSBbXG4gICAgICAgIG5ldyBWZXJzaW9uKDEsIG5ldyBJbnQzMkFycmF5KDApLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDcsIG5ldyBFQ0JfMS5kZWZhdWx0KDEsIDE5KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMTAsIG5ldyBFQ0JfMS5kZWZhdWx0KDEsIDE2KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMTMsIG5ldyBFQ0JfMS5kZWZhdWx0KDEsIDEzKSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMTcsIG5ldyBFQ0JfMS5kZWZhdWx0KDEsIDkpKSksXG4gICAgICAgIG5ldyBWZXJzaW9uKDIsIEludDMyQXJyYXkuZnJvbShbNiwgMThdKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgxMCwgbmV3IEVDQl8xLmRlZmF1bHQoMSwgMzQpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgxNiwgbmV3IEVDQl8xLmRlZmF1bHQoMSwgMjgpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyMiwgbmV3IEVDQl8xLmRlZmF1bHQoMSwgMjIpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyOCwgbmV3IEVDQl8xLmRlZmF1bHQoMSwgMTYpKSksXG4gICAgICAgIG5ldyBWZXJzaW9uKDMsIEludDMyQXJyYXkuZnJvbShbNiwgMjJdKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgxNSwgbmV3IEVDQl8xLmRlZmF1bHQoMSwgNTUpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyNiwgbmV3IEVDQl8xLmRlZmF1bHQoMSwgNDQpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgxOCwgbmV3IEVDQl8xLmRlZmF1bHQoMiwgMTcpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyMiwgbmV3IEVDQl8xLmRlZmF1bHQoMiwgMTMpKSksXG4gICAgICAgIG5ldyBWZXJzaW9uKDQsIEludDMyQXJyYXkuZnJvbShbNiwgMjZdKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyMCwgbmV3IEVDQl8xLmRlZmF1bHQoMSwgODApKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgxOCwgbmV3IEVDQl8xLmRlZmF1bHQoMiwgMzIpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyNiwgbmV3IEVDQl8xLmRlZmF1bHQoMiwgMjQpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgxNiwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgOSkpKSxcbiAgICAgICAgbmV3IFZlcnNpb24oNSwgSW50MzJBcnJheS5mcm9tKFs2LCAzMF0pLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI2LCBuZXcgRUNCXzEuZGVmYXVsdCgxLCAxMDgpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyNCwgbmV3IEVDQl8xLmRlZmF1bHQoMiwgNDMpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgxOCwgbmV3IEVDQl8xLmRlZmF1bHQoMiwgMTUpLCBuZXcgRUNCXzEuZGVmYXVsdCgyLCAxNikpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDIyLCBuZXcgRUNCXzEuZGVmYXVsdCgyLCAxMSksIG5ldyBFQ0JfMS5kZWZhdWx0KDIsIDEyKSkpLFxuICAgICAgICBuZXcgVmVyc2lvbig2LCBJbnQzMkFycmF5LmZyb20oWzYsIDM0XSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMTgsIG5ldyBFQ0JfMS5kZWZhdWx0KDIsIDY4KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMTYsIG5ldyBFQ0JfMS5kZWZhdWx0KDQsIDI3KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjQsIG5ldyBFQ0JfMS5kZWZhdWx0KDQsIDE5KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjgsIG5ldyBFQ0JfMS5kZWZhdWx0KDQsIDE1KSkpLFxuICAgICAgICBuZXcgVmVyc2lvbig3LCBJbnQzMkFycmF5LmZyb20oWzYsIDIyLCAzOF0pLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDIwLCBuZXcgRUNCXzEuZGVmYXVsdCgyLCA3OCkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDE4LCBuZXcgRUNCXzEuZGVmYXVsdCg0LCAzMSkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDE4LCBuZXcgRUNCXzEuZGVmYXVsdCgyLCAxNCksIG5ldyBFQ0JfMS5kZWZhdWx0KDQsIDE1KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjYsIG5ldyBFQ0JfMS5kZWZhdWx0KDQsIDEzKSwgbmV3IEVDQl8xLmRlZmF1bHQoMSwgMTQpKSksXG4gICAgICAgIG5ldyBWZXJzaW9uKDgsIEludDMyQXJyYXkuZnJvbShbNiwgMjQsIDQyXSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjQsIG5ldyBFQ0JfMS5kZWZhdWx0KDIsIDk3KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjIsIG5ldyBFQ0JfMS5kZWZhdWx0KDIsIDM4KSwgbmV3IEVDQl8xLmRlZmF1bHQoMiwgMzkpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyMiwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgMTgpLCBuZXcgRUNCXzEuZGVmYXVsdCgyLCAxOSkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI2LCBuZXcgRUNCXzEuZGVmYXVsdCg0LCAxNCksIG5ldyBFQ0JfMS5kZWZhdWx0KDIsIDE1KSkpLFxuICAgICAgICBuZXcgVmVyc2lvbig5LCBJbnQzMkFycmF5LmZyb20oWzYsIDI2LCA0Nl0pLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCgyLCAxMTYpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyMiwgbmV3IEVDQl8xLmRlZmF1bHQoMywgMzYpLCBuZXcgRUNCXzEuZGVmYXVsdCgyLCAzNykpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDIwLCBuZXcgRUNCXzEuZGVmYXVsdCg0LCAxNiksIG5ldyBFQ0JfMS5kZWZhdWx0KDQsIDE3KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjQsIG5ldyBFQ0JfMS5kZWZhdWx0KDQsIDEyKSwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgMTMpKSksXG4gICAgICAgIG5ldyBWZXJzaW9uKDEwLCBJbnQzMkFycmF5LmZyb20oWzYsIDI4LCA1MF0pLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDE4LCBuZXcgRUNCXzEuZGVmYXVsdCgyLCA2OCksIG5ldyBFQ0JfMS5kZWZhdWx0KDIsIDY5KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjYsIG5ldyBFQ0JfMS5kZWZhdWx0KDQsIDQzKSwgbmV3IEVDQl8xLmRlZmF1bHQoMSwgNDQpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyNCwgbmV3IEVDQl8xLmRlZmF1bHQoNiwgMTkpLCBuZXcgRUNCXzEuZGVmYXVsdCgyLCAyMCkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI4LCBuZXcgRUNCXzEuZGVmYXVsdCg2LCAxNSksIG5ldyBFQ0JfMS5kZWZhdWx0KDIsIDE2KSkpLFxuICAgICAgICBuZXcgVmVyc2lvbigxMSwgSW50MzJBcnJheS5mcm9tKFs2LCAzMCwgNTRdKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyMCwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgODEpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMSwgNTApLCBuZXcgRUNCXzEuZGVmYXVsdCg0LCA1MSkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI4LCBuZXcgRUNCXzEuZGVmYXVsdCg0LCAyMiksIG5ldyBFQ0JfMS5kZWZhdWx0KDQsIDIzKSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjQsIG5ldyBFQ0JfMS5kZWZhdWx0KDMsIDEyKSwgbmV3IEVDQl8xLmRlZmF1bHQoOCwgMTMpKSksXG4gICAgICAgIG5ldyBWZXJzaW9uKDEyLCBJbnQzMkFycmF5LmZyb20oWzYsIDMyLCA1OF0pLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI0LCBuZXcgRUNCXzEuZGVmYXVsdCgyLCA5MiksIG5ldyBFQ0JfMS5kZWZhdWx0KDIsIDkzKSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjIsIG5ldyBFQ0JfMS5kZWZhdWx0KDYsIDM2KSwgbmV3IEVDQl8xLmRlZmF1bHQoMiwgMzcpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyNiwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgMjApLCBuZXcgRUNCXzEuZGVmYXVsdCg2LCAyMSkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI4LCBuZXcgRUNCXzEuZGVmYXVsdCg3LCAxNCksIG5ldyBFQ0JfMS5kZWZhdWx0KDQsIDE1KSkpLFxuICAgICAgICBuZXcgVmVyc2lvbigxMywgSW50MzJBcnJheS5mcm9tKFs2LCAzNCwgNjJdKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyNiwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgMTA3KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjIsIG5ldyBFQ0JfMS5kZWZhdWx0KDgsIDM3KSwgbmV3IEVDQl8xLmRlZmF1bHQoMSwgMzgpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyNCwgbmV3IEVDQl8xLmRlZmF1bHQoOCwgMjApLCBuZXcgRUNCXzEuZGVmYXVsdCg0LCAyMSkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDIyLCBuZXcgRUNCXzEuZGVmYXVsdCgxMiwgMTEpLCBuZXcgRUNCXzEuZGVmYXVsdCg0LCAxMikpKSxcbiAgICAgICAgbmV3IFZlcnNpb24oMTQsIEludDMyQXJyYXkuZnJvbShbNiwgMjYsIDQ2LCA2Nl0pLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCgzLCAxMTUpLCBuZXcgRUNCXzEuZGVmYXVsdCgxLCAxMTYpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyNCwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgNDApLCBuZXcgRUNCXzEuZGVmYXVsdCg1LCA0MSkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDIwLCBuZXcgRUNCXzEuZGVmYXVsdCgxMSwgMTYpLCBuZXcgRUNCXzEuZGVmYXVsdCg1LCAxNykpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI0LCBuZXcgRUNCXzEuZGVmYXVsdCgxMSwgMTIpLCBuZXcgRUNCXzEuZGVmYXVsdCg1LCAxMykpKSxcbiAgICAgICAgbmV3IFZlcnNpb24oMTUsIEludDMyQXJyYXkuZnJvbShbNiwgMjYsIDQ4LCA3MF0pLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDIyLCBuZXcgRUNCXzEuZGVmYXVsdCg1LCA4NyksIG5ldyBFQ0JfMS5kZWZhdWx0KDEsIDg4KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjQsIG5ldyBFQ0JfMS5kZWZhdWx0KDUsIDQxKSwgbmV3IEVDQl8xLmRlZmF1bHQoNSwgNDIpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoNSwgMjQpLCBuZXcgRUNCXzEuZGVmYXVsdCg3LCAyNSkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI0LCBuZXcgRUNCXzEuZGVmYXVsdCgxMSwgMTIpLCBuZXcgRUNCXzEuZGVmYXVsdCg3LCAxMykpKSxcbiAgICAgICAgbmV3IFZlcnNpb24oMTYsIEludDMyQXJyYXkuZnJvbShbNiwgMjYsIDUwLCA3NF0pLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI0LCBuZXcgRUNCXzEuZGVmYXVsdCg1LCA5OCksIG5ldyBFQ0JfMS5kZWZhdWx0KDEsIDk5KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjgsIG5ldyBFQ0JfMS5kZWZhdWx0KDcsIDQ1KSwgbmV3IEVDQl8xLmRlZmF1bHQoMywgNDYpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyNCwgbmV3IEVDQl8xLmRlZmF1bHQoMTUsIDE5KSwgbmV3IEVDQl8xLmRlZmF1bHQoMiwgMjApKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMywgMTUpLCBuZXcgRUNCXzEuZGVmYXVsdCgxMywgMTYpKSksXG4gICAgICAgIG5ldyBWZXJzaW9uKDE3LCBJbnQzMkFycmF5LmZyb20oWzYsIDMwLCA1NCwgNzhdKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyOCwgbmV3IEVDQl8xLmRlZmF1bHQoMSwgMTA3KSwgbmV3IEVDQl8xLmRlZmF1bHQoNSwgMTA4KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjgsIG5ldyBFQ0JfMS5kZWZhdWx0KDEwLCA0NiksIG5ldyBFQ0JfMS5kZWZhdWx0KDEsIDQ3KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjgsIG5ldyBFQ0JfMS5kZWZhdWx0KDEsIDIyKSwgbmV3IEVDQl8xLmRlZmF1bHQoMTUsIDIzKSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjgsIG5ldyBFQ0JfMS5kZWZhdWx0KDIsIDE0KSwgbmV3IEVDQl8xLmRlZmF1bHQoMTcsIDE1KSkpLFxuICAgICAgICBuZXcgVmVyc2lvbigxOCwgSW50MzJBcnJheS5mcm9tKFs2LCAzMCwgNTYsIDgyXSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDUsIDEyMCksIG5ldyBFQ0JfMS5kZWZhdWx0KDEsIDEyMSkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI2LCBuZXcgRUNCXzEuZGVmYXVsdCg5LCA0MyksIG5ldyBFQ0JfMS5kZWZhdWx0KDQsIDQ0KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjgsIG5ldyBFQ0JfMS5kZWZhdWx0KDE3LCAyMiksIG5ldyBFQ0JfMS5kZWZhdWx0KDEsIDIzKSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjgsIG5ldyBFQ0JfMS5kZWZhdWx0KDIsIDE0KSwgbmV3IEVDQl8xLmRlZmF1bHQoMTksIDE1KSkpLFxuICAgICAgICBuZXcgVmVyc2lvbigxOSwgSW50MzJBcnJheS5mcm9tKFs2LCAzMCwgNTgsIDg2XSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjgsIG5ldyBFQ0JfMS5kZWZhdWx0KDMsIDExMyksIG5ldyBFQ0JfMS5kZWZhdWx0KDQsIDExNCkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI2LCBuZXcgRUNCXzEuZGVmYXVsdCgzLCA0NCksIG5ldyBFQ0JfMS5kZWZhdWx0KDExLCA0NSkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI2LCBuZXcgRUNCXzEuZGVmYXVsdCgxNywgMjEpLCBuZXcgRUNCXzEuZGVmYXVsdCg0LCAyMikpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI2LCBuZXcgRUNCXzEuZGVmYXVsdCg5LCAxMyksIG5ldyBFQ0JfMS5kZWZhdWx0KDE2LCAxNCkpKSxcbiAgICAgICAgbmV3IFZlcnNpb24oMjAsIEludDMyQXJyYXkuZnJvbShbNiwgMzQsIDYyLCA5MF0pLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI4LCBuZXcgRUNCXzEuZGVmYXVsdCgzLCAxMDcpLCBuZXcgRUNCXzEuZGVmYXVsdCg1LCAxMDgpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyNiwgbmV3IEVDQl8xLmRlZmF1bHQoMywgNDEpLCBuZXcgRUNCXzEuZGVmYXVsdCgxMywgNDIpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMTUsIDI0KSwgbmV3IEVDQl8xLmRlZmF1bHQoNSwgMjUpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyOCwgbmV3IEVDQl8xLmRlZmF1bHQoMTUsIDE1KSwgbmV3IEVDQl8xLmRlZmF1bHQoMTAsIDE2KSkpLFxuICAgICAgICBuZXcgVmVyc2lvbigyMSwgSW50MzJBcnJheS5mcm9tKFs2LCAyOCwgNTAsIDcyLCA5NF0pLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI4LCBuZXcgRUNCXzEuZGVmYXVsdCg0LCAxMTYpLCBuZXcgRUNCXzEuZGVmYXVsdCg0LCAxMTcpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyNiwgbmV3IEVDQl8xLmRlZmF1bHQoMTcsIDQyKSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjgsIG5ldyBFQ0JfMS5kZWZhdWx0KDE3LCAyMiksIG5ldyBFQ0JfMS5kZWZhdWx0KDYsIDIzKSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDE5LCAxNiksIG5ldyBFQ0JfMS5kZWZhdWx0KDYsIDE3KSkpLFxuICAgICAgICBuZXcgVmVyc2lvbigyMiwgSW50MzJBcnJheS5mcm9tKFs2LCAyNiwgNTAsIDc0LCA5OF0pLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI4LCBuZXcgRUNCXzEuZGVmYXVsdCgyLCAxMTEpLCBuZXcgRUNCXzEuZGVmYXVsdCg3LCAxMTIpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyOCwgbmV3IEVDQl8xLmRlZmF1bHQoMTcsIDQ2KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDcsIDI0KSwgbmV3IEVDQl8xLmRlZmF1bHQoMTYsIDI1KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjQsIG5ldyBFQ0JfMS5kZWZhdWx0KDM0LCAxMykpKSxcbiAgICAgICAgbmV3IFZlcnNpb24oMjMsIEludDMyQXJyYXkuZnJvbShbNiwgMzAsIDU0LCA3OCwgMTAyXSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDQsIDEyMSksIG5ldyBFQ0JfMS5kZWZhdWx0KDUsIDEyMikpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI4LCBuZXcgRUNCXzEuZGVmYXVsdCg0LCA0NyksIG5ldyBFQ0JfMS5kZWZhdWx0KDE0LCA0OCkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCgxMSwgMjQpLCBuZXcgRUNCXzEuZGVmYXVsdCgxNCwgMjUpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMTYsIDE1KSwgbmV3IEVDQl8xLmRlZmF1bHQoMTQsIDE2KSkpLFxuICAgICAgICBuZXcgVmVyc2lvbigyNCwgSW50MzJBcnJheS5mcm9tKFs2LCAyOCwgNTQsIDgwLCAxMDZdKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoNiwgMTE3KSwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgMTE4KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjgsIG5ldyBFQ0JfMS5kZWZhdWx0KDYsIDQ1KSwgbmV3IEVDQl8xLmRlZmF1bHQoMTQsIDQ2KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDExLCAyNCksIG5ldyBFQ0JfMS5kZWZhdWx0KDE2LCAyNSkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCgzMCwgMTYpLCBuZXcgRUNCXzEuZGVmYXVsdCgyLCAxNykpKSxcbiAgICAgICAgbmV3IFZlcnNpb24oMjUsIEludDMyQXJyYXkuZnJvbShbNiwgMzIsIDU4LCA4NCwgMTEwXSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjYsIG5ldyBFQ0JfMS5kZWZhdWx0KDgsIDEwNiksIG5ldyBFQ0JfMS5kZWZhdWx0KDQsIDEwNykpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI4LCBuZXcgRUNCXzEuZGVmYXVsdCg4LCA0NyksIG5ldyBFQ0JfMS5kZWZhdWx0KDEzLCA0OCkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCg3LCAyNCksIG5ldyBFQ0JfMS5kZWZhdWx0KDIyLCAyNSkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCgyMiwgMTUpLCBuZXcgRUNCXzEuZGVmYXVsdCgxMywgMTYpKSksXG4gICAgICAgIG5ldyBWZXJzaW9uKDI2LCBJbnQzMkFycmF5LmZyb20oWzYsIDMwLCA1OCwgODYsIDExNF0pLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI4LCBuZXcgRUNCXzEuZGVmYXVsdCgxMCwgMTE0KSwgbmV3IEVDQl8xLmRlZmF1bHQoMiwgMTE1KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjgsIG5ldyBFQ0JfMS5kZWZhdWx0KDE5LCA0NiksIG5ldyBFQ0JfMS5kZWZhdWx0KDQsIDQ3KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjgsIG5ldyBFQ0JfMS5kZWZhdWx0KDI4LCAyMiksIG5ldyBFQ0JfMS5kZWZhdWx0KDYsIDIzKSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDMzLCAxNiksIG5ldyBFQ0JfMS5kZWZhdWx0KDQsIDE3KSkpLFxuICAgICAgICBuZXcgVmVyc2lvbigyNywgSW50MzJBcnJheS5mcm9tKFs2LCAzNCwgNjIsIDkwLCAxMThdKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoOCwgMTIyKSwgbmV3IEVDQl8xLmRlZmF1bHQoNCwgMTIzKSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjgsIG5ldyBFQ0JfMS5kZWZhdWx0KDIyLCA0NSksIG5ldyBFQ0JfMS5kZWZhdWx0KDMsIDQ2KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDgsIDIzKSwgbmV3IEVDQl8xLmRlZmF1bHQoMjYsIDI0KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDEyLCAxNSksIG5ldyBFQ0JfMS5kZWZhdWx0KDI4LCAxNikpKSxcbiAgICAgICAgbmV3IFZlcnNpb24oMjgsIEludDMyQXJyYXkuZnJvbShbNiwgMjYsIDUwLCA3NCwgOTgsIDEyMl0pLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCgzLCAxMTcpLCBuZXcgRUNCXzEuZGVmYXVsdCgxMCwgMTE4KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjgsIG5ldyBFQ0JfMS5kZWZhdWx0KDMsIDQ1KSwgbmV3IEVDQl8xLmRlZmF1bHQoMjMsIDQ2KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDQsIDI0KSwgbmV3IEVDQl8xLmRlZmF1bHQoMzEsIDI1KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDExLCAxNSksIG5ldyBFQ0JfMS5kZWZhdWx0KDMxLCAxNikpKSxcbiAgICAgICAgbmV3IFZlcnNpb24oMjksIEludDMyQXJyYXkuZnJvbShbNiwgMzAsIDU0LCA3OCwgMTAyLCAxMjZdKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoNywgMTE2KSwgbmV3IEVDQl8xLmRlZmF1bHQoNywgMTE3KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjgsIG5ldyBFQ0JfMS5kZWZhdWx0KDIxLCA0NSksIG5ldyBFQ0JfMS5kZWZhdWx0KDcsIDQ2KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDEsIDIzKSwgbmV3IEVDQl8xLmRlZmF1bHQoMzcsIDI0KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDE5LCAxNSksIG5ldyBFQ0JfMS5kZWZhdWx0KDI2LCAxNikpKSxcbiAgICAgICAgbmV3IFZlcnNpb24oMzAsIEludDMyQXJyYXkuZnJvbShbNiwgMjYsIDUyLCA3OCwgMTA0LCAxMzBdKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoNSwgMTE1KSwgbmV3IEVDQl8xLmRlZmF1bHQoMTAsIDExNikpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI4LCBuZXcgRUNCXzEuZGVmYXVsdCgxOSwgNDcpLCBuZXcgRUNCXzEuZGVmYXVsdCgxMCwgNDgpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMTUsIDI0KSwgbmV3IEVDQl8xLmRlZmF1bHQoMjUsIDI1KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDIzLCAxNSksIG5ldyBFQ0JfMS5kZWZhdWx0KDI1LCAxNikpKSxcbiAgICAgICAgbmV3IFZlcnNpb24oMzEsIEludDMyQXJyYXkuZnJvbShbNiwgMzAsIDU2LCA4MiwgMTA4LCAxMzRdKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMTMsIDExNSksIG5ldyBFQ0JfMS5kZWZhdWx0KDMsIDExNikpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI4LCBuZXcgRUNCXzEuZGVmYXVsdCgyLCA0NiksIG5ldyBFQ0JfMS5kZWZhdWx0KDI5LCA0NykpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCg0MiwgMjQpLCBuZXcgRUNCXzEuZGVmYXVsdCgxLCAyNSkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCgyMywgMTUpLCBuZXcgRUNCXzEuZGVmYXVsdCgyOCwgMTYpKSksXG4gICAgICAgIG5ldyBWZXJzaW9uKDMyLCBJbnQzMkFycmF5LmZyb20oWzYsIDM0LCA2MCwgODYsIDExMiwgMTM4XSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDE3LCAxMTUpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyOCwgbmV3IEVDQl8xLmRlZmF1bHQoMTAsIDQ2KSwgbmV3IEVDQl8xLmRlZmF1bHQoMjMsIDQ3KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDEwLCAyNCksIG5ldyBFQ0JfMS5kZWZhdWx0KDM1LCAyNSkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCgxOSwgMTUpLCBuZXcgRUNCXzEuZGVmYXVsdCgzNSwgMTYpKSksXG4gICAgICAgIG5ldyBWZXJzaW9uKDMzLCBJbnQzMkFycmF5LmZyb20oWzYsIDMwLCA1OCwgODYsIDExNCwgMTQyXSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDE3LCAxMTUpLCBuZXcgRUNCXzEuZGVmYXVsdCgxLCAxMTYpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyOCwgbmV3IEVDQl8xLmRlZmF1bHQoMTQsIDQ2KSwgbmV3IEVDQl8xLmRlZmF1bHQoMjEsIDQ3KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDI5LCAyNCksIG5ldyBFQ0JfMS5kZWZhdWx0KDE5LCAyNSkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCgxMSwgMTUpLCBuZXcgRUNCXzEuZGVmYXVsdCg0NiwgMTYpKSksXG4gICAgICAgIG5ldyBWZXJzaW9uKDM0LCBJbnQzMkFycmF5LmZyb20oWzYsIDM0LCA2MiwgOTAsIDExOCwgMTQ2XSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDEzLCAxMTUpLCBuZXcgRUNCXzEuZGVmYXVsdCg2LCAxMTYpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyOCwgbmV3IEVDQl8xLmRlZmF1bHQoMTQsIDQ2KSwgbmV3IEVDQl8xLmRlZmF1bHQoMjMsIDQ3KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDQ0LCAyNCksIG5ldyBFQ0JfMS5kZWZhdWx0KDcsIDI1KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDU5LCAxNiksIG5ldyBFQ0JfMS5kZWZhdWx0KDEsIDE3KSkpLFxuICAgICAgICBuZXcgVmVyc2lvbigzNSwgSW50MzJBcnJheS5mcm9tKFs2LCAzMCwgNTQsIDc4LCAxMDIsIDEyNiwgMTUwXSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDEyLCAxMjEpLCBuZXcgRUNCXzEuZGVmYXVsdCg3LCAxMjIpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyOCwgbmV3IEVDQl8xLmRlZmF1bHQoMTIsIDQ3KSwgbmV3IEVDQl8xLmRlZmF1bHQoMjYsIDQ4KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDM5LCAyNCksIG5ldyBFQ0JfMS5kZWZhdWx0KDE0LCAyNSkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCgyMiwgMTUpLCBuZXcgRUNCXzEuZGVmYXVsdCg0MSwgMTYpKSksXG4gICAgICAgIG5ldyBWZXJzaW9uKDM2LCBJbnQzMkFycmF5LmZyb20oWzYsIDI0LCA1MCwgNzYsIDEwMiwgMTI4LCAxNTRdKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoNiwgMTIxKSwgbmV3IEVDQl8xLmRlZmF1bHQoMTQsIDEyMikpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI4LCBuZXcgRUNCXzEuZGVmYXVsdCg2LCA0NyksIG5ldyBFQ0JfMS5kZWZhdWx0KDM0LCA0OCkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCg0NiwgMjQpLCBuZXcgRUNCXzEuZGVmYXVsdCgxMCwgMjUpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMiwgMTUpLCBuZXcgRUNCXzEuZGVmYXVsdCg2NCwgMTYpKSksXG4gICAgICAgIG5ldyBWZXJzaW9uKDM3LCBJbnQzMkFycmF5LmZyb20oWzYsIDI4LCA1NCwgODAsIDEwNiwgMTMyLCAxNThdKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMTcsIDEyMiksIG5ldyBFQ0JfMS5kZWZhdWx0KDQsIDEyMykpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDI4LCBuZXcgRUNCXzEuZGVmYXVsdCgyOSwgNDYpLCBuZXcgRUNCXzEuZGVmYXVsdCgxNCwgNDcpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoNDksIDI0KSwgbmV3IEVDQl8xLmRlZmF1bHQoMTAsIDI1KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDI0LCAxNSksIG5ldyBFQ0JfMS5kZWZhdWx0KDQ2LCAxNikpKSxcbiAgICAgICAgbmV3IFZlcnNpb24oMzgsIEludDMyQXJyYXkuZnJvbShbNiwgMzIsIDU4LCA4NCwgMTEwLCAxMzYsIDE2Ml0pLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCg0LCAxMjIpLCBuZXcgRUNCXzEuZGVmYXVsdCgxOCwgMTIzKSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjgsIG5ldyBFQ0JfMS5kZWZhdWx0KDEzLCA0NiksIG5ldyBFQ0JfMS5kZWZhdWx0KDMyLCA0NykpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCg0OCwgMjQpLCBuZXcgRUNCXzEuZGVmYXVsdCgxNCwgMjUpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoNDIsIDE1KSwgbmV3IEVDQl8xLmRlZmF1bHQoMzIsIDE2KSkpLFxuICAgICAgICBuZXcgVmVyc2lvbigzOSwgSW50MzJBcnJheS5mcm9tKFs2LCAyNiwgNTQsIDgyLCAxMTAsIDEzOCwgMTY2XSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDIwLCAxMTcpLCBuZXcgRUNCXzEuZGVmYXVsdCg0LCAxMTgpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgyOCwgbmV3IEVDQl8xLmRlZmF1bHQoNDAsIDQ3KSwgbmV3IEVDQl8xLmRlZmF1bHQoNywgNDgpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoNDMsIDI0KSwgbmV3IEVDQl8xLmRlZmF1bHQoMjIsIDI1KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMzAsIG5ldyBFQ0JfMS5kZWZhdWx0KDEwLCAxNSksIG5ldyBFQ0JfMS5kZWZhdWx0KDY3LCAxNikpKSxcbiAgICAgICAgbmV3IFZlcnNpb24oNDAsIEludDMyQXJyYXkuZnJvbShbNiwgMzAsIDU4LCA4NiwgMTE0LCAxNDIsIDE3MF0pLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCgxOSwgMTE4KSwgbmV3IEVDQl8xLmRlZmF1bHQoNiwgMTE5KSksIG5ldyBFQ0Jsb2Nrc18xLmRlZmF1bHQoMjgsIG5ldyBFQ0JfMS5kZWZhdWx0KDE4LCA0NyksIG5ldyBFQ0JfMS5kZWZhdWx0KDMxLCA0OCkpLCBuZXcgRUNCbG9ja3NfMS5kZWZhdWx0KDMwLCBuZXcgRUNCXzEuZGVmYXVsdCgzNCwgMjQpLCBuZXcgRUNCXzEuZGVmYXVsdCgzNCwgMjUpKSwgbmV3IEVDQmxvY2tzXzEuZGVmYXVsdCgzMCwgbmV3IEVDQl8xLmRlZmF1bHQoMjAsIDE1KSwgbmV3IEVDQl8xLmRlZmF1bHQoNjEsIDE2KSkpXG4gICAgXTtcbiAgICByZXR1cm4gVmVyc2lvbjtcbn0oKSk7XG5leHBvcnRzLmRlZmF1bHQgPSBWZXJzaW9uO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VmVyc2lvbi5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8qXG4gKiBDb3B5cmlnaHQgMjAwNyBaWGluZyBhdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5EYXRhTWFza1ZhbHVlcyA9IHZvaWQgMDtcbnZhciBEYXRhTWFza1ZhbHVlcztcbihmdW5jdGlvbiAoRGF0YU1hc2tWYWx1ZXMpIHtcbiAgICBEYXRhTWFza1ZhbHVlc1tEYXRhTWFza1ZhbHVlc1tcIkRBVEFfTUFTS18wMDBcIl0gPSAwXSA9IFwiREFUQV9NQVNLXzAwMFwiO1xuICAgIERhdGFNYXNrVmFsdWVzW0RhdGFNYXNrVmFsdWVzW1wiREFUQV9NQVNLXzAwMVwiXSA9IDFdID0gXCJEQVRBX01BU0tfMDAxXCI7XG4gICAgRGF0YU1hc2tWYWx1ZXNbRGF0YU1hc2tWYWx1ZXNbXCJEQVRBX01BU0tfMDEwXCJdID0gMl0gPSBcIkRBVEFfTUFTS18wMTBcIjtcbiAgICBEYXRhTWFza1ZhbHVlc1tEYXRhTWFza1ZhbHVlc1tcIkRBVEFfTUFTS18wMTFcIl0gPSAzXSA9IFwiREFUQV9NQVNLXzAxMVwiO1xuICAgIERhdGFNYXNrVmFsdWVzW0RhdGFNYXNrVmFsdWVzW1wiREFUQV9NQVNLXzEwMFwiXSA9IDRdID0gXCJEQVRBX01BU0tfMTAwXCI7XG4gICAgRGF0YU1hc2tWYWx1ZXNbRGF0YU1hc2tWYWx1ZXNbXCJEQVRBX01BU0tfMTAxXCJdID0gNV0gPSBcIkRBVEFfTUFTS18xMDFcIjtcbiAgICBEYXRhTWFza1ZhbHVlc1tEYXRhTWFza1ZhbHVlc1tcIkRBVEFfTUFTS18xMTBcIl0gPSA2XSA9IFwiREFUQV9NQVNLXzExMFwiO1xuICAgIERhdGFNYXNrVmFsdWVzW0RhdGFNYXNrVmFsdWVzW1wiREFUQV9NQVNLXzExMVwiXSA9IDddID0gXCJEQVRBX01BU0tfMTExXCI7XG59KShEYXRhTWFza1ZhbHVlcyA9IGV4cG9ydHMuRGF0YU1hc2tWYWx1ZXMgfHwgKGV4cG9ydHMuRGF0YU1hc2tWYWx1ZXMgPSB7fSkpO1xuLyoqXG4gKiA8cD5FbmNhcHN1bGF0ZXMgZGF0YSBtYXNrcyBmb3IgdGhlIGRhdGEgYml0cyBpbiBhIFFSIGNvZGUsIHBlciBJU08gMTgwMDQ6MjAwNiA2LjguIEltcGxlbWVudGF0aW9uc1xuICogb2YgdGhpcyBjbGFzcyBjYW4gdW4tbWFzayBhIHJhdyBCaXRNYXRyaXguIEZvciBzaW1wbGljaXR5LCB0aGV5IHdpbGwgdW5tYXNrIHRoZSBlbnRpcmUgQml0TWF0cml4LFxuICogaW5jbHVkaW5nIGFyZWFzIHVzZWQgZm9yIGZpbmRlciBwYXR0ZXJucywgdGltaW5nIHBhdHRlcm5zLCBldGMuIFRoZXNlIGFyZWFzIHNob3VsZCBiZSB1bnVzZWRcbiAqIGFmdGVyIHRoZSBwb2ludCB0aGV5IGFyZSB1bm1hc2tlZCBhbnl3YXkuPC9wPlxuICpcbiAqIDxwPk5vdGUgdGhhdCB0aGUgZGlhZ3JhbSBpbiBzZWN0aW9uIDYuOC4xIGlzIG1pc2xlYWRpbmcgc2luY2UgaXQgaW5kaWNhdGVzIHRoYXQgaSBpcyBjb2x1bW4gcG9zaXRpb25cbiAqIGFuZCBqIGlzIHJvdyBwb3NpdGlvbi4gSW4gZmFjdCwgYXMgdGhlIHRleHQgc2F5cywgaSBpcyByb3cgcG9zaXRpb24gYW5kIGogaXMgY29sdW1uIHBvc2l0aW9uLjwvcD5cbiAqXG4gKiBAYXV0aG9yIFNlYW4gT3dlblxuICovXG52YXIgRGF0YU1hc2sgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgLy8gU2VlIElTTyAxODAwNDoyMDA2IDYuOC4xXG4gICAgZnVuY3Rpb24gRGF0YU1hc2sodmFsdWUsIGlzTWFza2VkKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5pc01hc2tlZCA9IGlzTWFza2VkO1xuICAgIH1cbiAgICAvLyBFbmQgb2YgZW51bSBjb25zdGFudHMuXG4gICAgLyoqXG4gICAgICogPHA+SW1wbGVtZW50YXRpb25zIG9mIHRoaXMgbWV0aG9kIHJldmVyc2UgdGhlIGRhdGEgbWFza2luZyBwcm9jZXNzIGFwcGxpZWQgdG8gYSBRUiBDb2RlIGFuZFxuICAgICAqIG1ha2UgaXRzIGJpdHMgcmVhZHkgdG8gcmVhZC48L3A+XG4gICAgICpcbiAgICAgKiBAcGFyYW0gYml0cyByZXByZXNlbnRhdGlvbiBvZiBRUiBDb2RlIGJpdHNcbiAgICAgKiBAcGFyYW0gZGltZW5zaW9uIGRpbWVuc2lvbiBvZiBRUiBDb2RlLCByZXByZXNlbnRlZCBieSBiaXRzLCBiZWluZyB1bm1hc2tlZFxuICAgICAqL1xuICAgIERhdGFNYXNrLnByb3RvdHlwZS51bm1hc2tCaXRNYXRyaXggPSBmdW5jdGlvbiAoYml0cywgZGltZW5zaW9uIC8qaW50Ki8pIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaW1lbnNpb247IGkrKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBkaW1lbnNpb247IGorKykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzTWFza2VkKGksIGopKSB7XG4gICAgICAgICAgICAgICAgICAgIGJpdHMuZmxpcChqLCBpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIERhdGFNYXNrLnZhbHVlcyA9IG5ldyBNYXAoW1xuICAgICAgICAvKipcbiAgICAgICAgICogMDAwOiBtYXNrIGJpdHMgZm9yIHdoaWNoICh4ICsgeSkgbW9kIDIgPT0gMFxuICAgICAgICAgKi9cbiAgICAgICAgW0RhdGFNYXNrVmFsdWVzLkRBVEFfTUFTS18wMDAsIG5ldyBEYXRhTWFzayhEYXRhTWFza1ZhbHVlcy5EQVRBX01BU0tfMDAwLCBmdW5jdGlvbiAoaSAvKmludCovLCBqIC8qaW50Ki8pIHsgcmV0dXJuICgoaSArIGopICYgMHgwMSkgPT09IDA7IH0pXSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIDAwMTogbWFzayBiaXRzIGZvciB3aGljaCB4IG1vZCAyID09IDBcbiAgICAgICAgICovXG4gICAgICAgIFtEYXRhTWFza1ZhbHVlcy5EQVRBX01BU0tfMDAxLCBuZXcgRGF0YU1hc2soRGF0YU1hc2tWYWx1ZXMuREFUQV9NQVNLXzAwMSwgZnVuY3Rpb24gKGkgLyppbnQqLywgaiAvKmludCovKSB7IHJldHVybiAoaSAmIDB4MDEpID09PSAwOyB9KV0sXG4gICAgICAgIC8qKlxuICAgICAgICAgKiAwMTA6IG1hc2sgYml0cyBmb3Igd2hpY2ggeSBtb2QgMyA9PSAwXG4gICAgICAgICAqL1xuICAgICAgICBbRGF0YU1hc2tWYWx1ZXMuREFUQV9NQVNLXzAxMCwgbmV3IERhdGFNYXNrKERhdGFNYXNrVmFsdWVzLkRBVEFfTUFTS18wMTAsIGZ1bmN0aW9uIChpIC8qaW50Ki8sIGogLyppbnQqLykgeyByZXR1cm4gaiAlIDMgPT09IDA7IH0pXSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIDAxMTogbWFzayBiaXRzIGZvciB3aGljaCAoeCArIHkpIG1vZCAzID09IDBcbiAgICAgICAgICovXG4gICAgICAgIFtEYXRhTWFza1ZhbHVlcy5EQVRBX01BU0tfMDExLCBuZXcgRGF0YU1hc2soRGF0YU1hc2tWYWx1ZXMuREFUQV9NQVNLXzAxMSwgZnVuY3Rpb24gKGkgLyppbnQqLywgaiAvKmludCovKSB7IHJldHVybiAoaSArIGopICUgMyA9PT0gMDsgfSldLFxuICAgICAgICAvKipcbiAgICAgICAgICogMTAwOiBtYXNrIGJpdHMgZm9yIHdoaWNoICh4LzIgKyB5LzMpIG1vZCAyID09IDBcbiAgICAgICAgICovXG4gICAgICAgIFtEYXRhTWFza1ZhbHVlcy5EQVRBX01BU0tfMTAwLCBuZXcgRGF0YU1hc2soRGF0YU1hc2tWYWx1ZXMuREFUQV9NQVNLXzEwMCwgZnVuY3Rpb24gKGkgLyppbnQqLywgaiAvKmludCovKSB7IHJldHVybiAoKE1hdGguZmxvb3IoaSAvIDIpICsgTWF0aC5mbG9vcihqIC8gMykpICYgMHgwMSkgPT09IDA7IH0pXSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIDEwMTogbWFzayBiaXRzIGZvciB3aGljaCB4eSBtb2QgMiArIHh5IG1vZCAzID09IDBcbiAgICAgICAgICogZXF1aXZhbGVudGx5LCBzdWNoIHRoYXQgeHkgbW9kIDYgPT0gMFxuICAgICAgICAgKi9cbiAgICAgICAgW0RhdGFNYXNrVmFsdWVzLkRBVEFfTUFTS18xMDEsIG5ldyBEYXRhTWFzayhEYXRhTWFza1ZhbHVlcy5EQVRBX01BU0tfMTAxLCBmdW5jdGlvbiAoaSAvKmludCovLCBqIC8qaW50Ki8pIHsgcmV0dXJuIChpICogaikgJSA2ID09PSAwOyB9KV0sXG4gICAgICAgIC8qKlxuICAgICAgICAgKiAxMTA6IG1hc2sgYml0cyBmb3Igd2hpY2ggKHh5IG1vZCAyICsgeHkgbW9kIDMpIG1vZCAyID09IDBcbiAgICAgICAgICogZXF1aXZhbGVudGx5LCBzdWNoIHRoYXQgeHkgbW9kIDYgPCAzXG4gICAgICAgICAqL1xuICAgICAgICBbRGF0YU1hc2tWYWx1ZXMuREFUQV9NQVNLXzExMCwgbmV3IERhdGFNYXNrKERhdGFNYXNrVmFsdWVzLkRBVEFfTUFTS18xMTAsIGZ1bmN0aW9uIChpIC8qaW50Ki8sIGogLyppbnQqLykgeyByZXR1cm4gKChpICogaikgJSA2KSA8IDM7IH0pXSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIDExMTogbWFzayBiaXRzIGZvciB3aGljaCAoKHgreSltb2QgMiArIHh5IG1vZCAzKSBtb2QgMiA9PSAwXG4gICAgICAgICAqIGVxdWl2YWxlbnRseSwgc3VjaCB0aGF0ICh4ICsgeSArIHh5IG1vZCAzKSBtb2QgMiA9PSAwXG4gICAgICAgICAqL1xuICAgICAgICBbRGF0YU1hc2tWYWx1ZXMuREFUQV9NQVNLXzExMSwgbmV3IERhdGFNYXNrKERhdGFNYXNrVmFsdWVzLkRBVEFfTUFTS18xMTEsIGZ1bmN0aW9uIChpIC8qaW50Ki8sIGogLyppbnQqLykgeyByZXR1cm4gKChpICsgaiArICgoaSAqIGopICUgMykpICYgMHgwMSkgPT09IDA7IH0pXSxcbiAgICBdKTtcbiAgICByZXR1cm4gRGF0YU1hc2s7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gRGF0YU1hc2s7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1EYXRhTWFzay5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8qXG4gKiBDb3B5cmlnaHQgMjAwNyBaWGluZyBhdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIFZlcnNpb25fMSA9IHJlcXVpcmUoXCIuL1ZlcnNpb25cIik7XG52YXIgRm9ybWF0SW5mb3JtYXRpb25fMSA9IHJlcXVpcmUoXCIuL0Zvcm1hdEluZm9ybWF0aW9uXCIpO1xudmFyIERhdGFNYXNrXzEgPSByZXF1aXJlKFwiLi9EYXRhTWFza1wiKTtcbnZhciBGb3JtYXRFeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuLi8uLi9Gb3JtYXRFeGNlcHRpb25cIik7XG4vKipcbiAqIEBhdXRob3IgU2VhbiBPd2VuXG4gKi9cbnZhciBCaXRNYXRyaXhQYXJzZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIGJpdE1hdHJpeCB7QGxpbmsgQml0TWF0cml4fSB0byBwYXJzZVxuICAgICAqIEB0aHJvd3MgRm9ybWF0RXhjZXB0aW9uIGlmIGRpbWVuc2lvbiBpcyBub3QgPj0gMjEgYW5kIDEgbW9kIDRcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBCaXRNYXRyaXhQYXJzZXIoYml0TWF0cml4KSB7XG4gICAgICAgIHZhciBkaW1lbnNpb24gPSBiaXRNYXRyaXguZ2V0SGVpZ2h0KCk7XG4gICAgICAgIGlmIChkaW1lbnNpb24gPCAyMSB8fCAoZGltZW5zaW9uICYgMHgwMykgIT09IDEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5iaXRNYXRyaXggPSBiaXRNYXRyaXg7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIDxwPlJlYWRzIGZvcm1hdCBpbmZvcm1hdGlvbiBmcm9tIG9uZSBvZiBpdHMgdHdvIGxvY2F0aW9ucyB3aXRoaW4gdGhlIFFSIENvZGUuPC9wPlxuICAgICAqXG4gICAgICogQHJldHVybiB7QGxpbmsgRm9ybWF0SW5mb3JtYXRpb259IGVuY2Fwc3VsYXRpbmcgdGhlIFFSIENvZGUncyBmb3JtYXQgaW5mb1xuICAgICAqIEB0aHJvd3MgRm9ybWF0RXhjZXB0aW9uIGlmIGJvdGggZm9ybWF0IGluZm9ybWF0aW9uIGxvY2F0aW9ucyBjYW5ub3QgYmUgcGFyc2VkIGFzXG4gICAgICogdGhlIHZhbGlkIGVuY29kaW5nIG9mIGZvcm1hdCBpbmZvcm1hdGlvblxuICAgICAqL1xuICAgIEJpdE1hdHJpeFBhcnNlci5wcm90b3R5cGUucmVhZEZvcm1hdEluZm9ybWF0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5wYXJzZWRGb3JtYXRJbmZvICE9PSBudWxsICYmIHRoaXMucGFyc2VkRm9ybWF0SW5mbyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZWRGb3JtYXRJbmZvO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlYWQgdG9wLWxlZnQgZm9ybWF0IGluZm8gYml0c1xuICAgICAgICB2YXIgZm9ybWF0SW5mb0JpdHMxID0gMDtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspIHtcbiAgICAgICAgICAgIGZvcm1hdEluZm9CaXRzMSA9IHRoaXMuY29weUJpdChpLCA4LCBmb3JtYXRJbmZvQml0czEpO1xuICAgICAgICB9XG4gICAgICAgIC8vIC4uIGFuZCBza2lwIGEgYml0IGluIHRoZSB0aW1pbmcgcGF0dGVybiAuLi5cbiAgICAgICAgZm9ybWF0SW5mb0JpdHMxID0gdGhpcy5jb3B5Qml0KDcsIDgsIGZvcm1hdEluZm9CaXRzMSk7XG4gICAgICAgIGZvcm1hdEluZm9CaXRzMSA9IHRoaXMuY29weUJpdCg4LCA4LCBmb3JtYXRJbmZvQml0czEpO1xuICAgICAgICBmb3JtYXRJbmZvQml0czEgPSB0aGlzLmNvcHlCaXQoOCwgNywgZm9ybWF0SW5mb0JpdHMxKTtcbiAgICAgICAgLy8gLi4gYW5kIHNraXAgYSBiaXQgaW4gdGhlIHRpbWluZyBwYXR0ZXJuIC4uLlxuICAgICAgICBmb3IgKHZhciBqID0gNTsgaiA+PSAwOyBqLS0pIHtcbiAgICAgICAgICAgIGZvcm1hdEluZm9CaXRzMSA9IHRoaXMuY29weUJpdCg4LCBqLCBmb3JtYXRJbmZvQml0czEpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlYWQgdGhlIHRvcC1yaWdodC9ib3R0b20tbGVmdCBwYXR0ZXJuIHRvb1xuICAgICAgICB2YXIgZGltZW5zaW9uID0gdGhpcy5iaXRNYXRyaXguZ2V0SGVpZ2h0KCk7XG4gICAgICAgIHZhciBmb3JtYXRJbmZvQml0czIgPSAwO1xuICAgICAgICB2YXIgak1pbiA9IGRpbWVuc2lvbiAtIDc7XG4gICAgICAgIGZvciAodmFyIGogPSBkaW1lbnNpb24gLSAxOyBqID49IGpNaW47IGotLSkge1xuICAgICAgICAgICAgZm9ybWF0SW5mb0JpdHMyID0gdGhpcy5jb3B5Qml0KDgsIGosIGZvcm1hdEluZm9CaXRzMik7XG4gICAgICAgIH1cbiAgICAgICAgZm9yICh2YXIgaSA9IGRpbWVuc2lvbiAtIDg7IGkgPCBkaW1lbnNpb247IGkrKykge1xuICAgICAgICAgICAgZm9ybWF0SW5mb0JpdHMyID0gdGhpcy5jb3B5Qml0KGksIDgsIGZvcm1hdEluZm9CaXRzMik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wYXJzZWRGb3JtYXRJbmZvID0gRm9ybWF0SW5mb3JtYXRpb25fMS5kZWZhdWx0LmRlY29kZUZvcm1hdEluZm9ybWF0aW9uKGZvcm1hdEluZm9CaXRzMSwgZm9ybWF0SW5mb0JpdHMyKTtcbiAgICAgICAgaWYgKHRoaXMucGFyc2VkRm9ybWF0SW5mbyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VkRm9ybWF0SW5mbztcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogPHA+UmVhZHMgdmVyc2lvbiBpbmZvcm1hdGlvbiBmcm9tIG9uZSBvZiBpdHMgdHdvIGxvY2F0aW9ucyB3aXRoaW4gdGhlIFFSIENvZGUuPC9wPlxuICAgICAqXG4gICAgICogQHJldHVybiB7QGxpbmsgVmVyc2lvbn0gZW5jYXBzdWxhdGluZyB0aGUgUVIgQ29kZSdzIHZlcnNpb25cbiAgICAgKiBAdGhyb3dzIEZvcm1hdEV4Y2VwdGlvbiBpZiBib3RoIHZlcnNpb24gaW5mb3JtYXRpb24gbG9jYXRpb25zIGNhbm5vdCBiZSBwYXJzZWQgYXNcbiAgICAgKiB0aGUgdmFsaWQgZW5jb2Rpbmcgb2YgdmVyc2lvbiBpbmZvcm1hdGlvblxuICAgICAqL1xuICAgIEJpdE1hdHJpeFBhcnNlci5wcm90b3R5cGUucmVhZFZlcnNpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLnBhcnNlZFZlcnNpb24gIT09IG51bGwgJiYgdGhpcy5wYXJzZWRWZXJzaW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlZFZlcnNpb247XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGRpbWVuc2lvbiA9IHRoaXMuYml0TWF0cml4LmdldEhlaWdodCgpO1xuICAgICAgICB2YXIgcHJvdmlzaW9uYWxWZXJzaW9uID0gTWF0aC5mbG9vcigoZGltZW5zaW9uIC0gMTcpIC8gNCk7XG4gICAgICAgIGlmIChwcm92aXNpb25hbFZlcnNpb24gPD0gNikge1xuICAgICAgICAgICAgcmV0dXJuIFZlcnNpb25fMS5kZWZhdWx0LmdldFZlcnNpb25Gb3JOdW1iZXIocHJvdmlzaW9uYWxWZXJzaW9uKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZWFkIHRvcC1yaWdodCB2ZXJzaW9uIGluZm86IDMgd2lkZSBieSA2IHRhbGxcbiAgICAgICAgdmFyIHZlcnNpb25CaXRzID0gMDtcbiAgICAgICAgdmFyIGlqTWluID0gZGltZW5zaW9uIC0gMTE7XG4gICAgICAgIGZvciAodmFyIGogPSA1OyBqID49IDA7IGotLSkge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IGRpbWVuc2lvbiAtIDk7IGkgPj0gaWpNaW47IGktLSkge1xuICAgICAgICAgICAgICAgIHZlcnNpb25CaXRzID0gdGhpcy5jb3B5Qml0KGksIGosIHZlcnNpb25CaXRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgdGhlUGFyc2VkVmVyc2lvbiA9IFZlcnNpb25fMS5kZWZhdWx0LmRlY29kZVZlcnNpb25JbmZvcm1hdGlvbih2ZXJzaW9uQml0cyk7XG4gICAgICAgIGlmICh0aGVQYXJzZWRWZXJzaW9uICE9PSBudWxsICYmIHRoZVBhcnNlZFZlcnNpb24uZ2V0RGltZW5zaW9uRm9yVmVyc2lvbigpID09PSBkaW1lbnNpb24pIHtcbiAgICAgICAgICAgIHRoaXMucGFyc2VkVmVyc2lvbiA9IHRoZVBhcnNlZFZlcnNpb247XG4gICAgICAgICAgICByZXR1cm4gdGhlUGFyc2VkVmVyc2lvbjtcbiAgICAgICAgfVxuICAgICAgICAvLyBIbW0sIGZhaWxlZC4gVHJ5IGJvdHRvbSBsZWZ0OiA2IHdpZGUgYnkgMyB0YWxsXG4gICAgICAgIHZlcnNpb25CaXRzID0gMDtcbiAgICAgICAgZm9yICh2YXIgaSA9IDU7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gZGltZW5zaW9uIC0gOTsgaiA+PSBpak1pbjsgai0tKSB7XG4gICAgICAgICAgICAgICAgdmVyc2lvbkJpdHMgPSB0aGlzLmNvcHlCaXQoaSwgaiwgdmVyc2lvbkJpdHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoZVBhcnNlZFZlcnNpb24gPSBWZXJzaW9uXzEuZGVmYXVsdC5kZWNvZGVWZXJzaW9uSW5mb3JtYXRpb24odmVyc2lvbkJpdHMpO1xuICAgICAgICBpZiAodGhlUGFyc2VkVmVyc2lvbiAhPT0gbnVsbCAmJiB0aGVQYXJzZWRWZXJzaW9uLmdldERpbWVuc2lvbkZvclZlcnNpb24oKSA9PT0gZGltZW5zaW9uKSB7XG4gICAgICAgICAgICB0aGlzLnBhcnNlZFZlcnNpb24gPSB0aGVQYXJzZWRWZXJzaW9uO1xuICAgICAgICAgICAgcmV0dXJuIHRoZVBhcnNlZFZlcnNpb247XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICB9O1xuICAgIEJpdE1hdHJpeFBhcnNlci5wcm90b3R5cGUuY29weUJpdCA9IGZ1bmN0aW9uIChpIC8qaW50Ki8sIGogLyppbnQqLywgdmVyc2lvbkJpdHMgLyppbnQqLykge1xuICAgICAgICB2YXIgYml0ID0gdGhpcy5pc01pcnJvciA/IHRoaXMuYml0TWF0cml4LmdldChqLCBpKSA6IHRoaXMuYml0TWF0cml4LmdldChpLCBqKTtcbiAgICAgICAgcmV0dXJuIGJpdCA/ICh2ZXJzaW9uQml0cyA8PCAxKSB8IDB4MSA6IHZlcnNpb25CaXRzIDw8IDE7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiA8cD5SZWFkcyB0aGUgYml0cyBpbiB0aGUge0BsaW5rIEJpdE1hdHJpeH0gcmVwcmVzZW50aW5nIHRoZSBmaW5kZXIgcGF0dGVybiBpbiB0aGVcbiAgICAgKiBjb3JyZWN0IG9yZGVyIGluIG9yZGVyIHRvIHJlY29uc3RydWN0IHRoZSBjb2Rld29yZHMgYnl0ZXMgY29udGFpbmVkIHdpdGhpbiB0aGVcbiAgICAgKiBRUiBDb2RlLjwvcD5cbiAgICAgKlxuICAgICAqIEByZXR1cm4gYnl0ZXMgZW5jb2RlZCB3aXRoaW4gdGhlIFFSIENvZGVcbiAgICAgKiBAdGhyb3dzIEZvcm1hdEV4Y2VwdGlvbiBpZiB0aGUgZXhhY3QgbnVtYmVyIG9mIGJ5dGVzIGV4cGVjdGVkIGlzIG5vdCByZWFkXG4gICAgICovXG4gICAgQml0TWF0cml4UGFyc2VyLnByb3RvdHlwZS5yZWFkQ29kZXdvcmRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZm9ybWF0SW5mbyA9IHRoaXMucmVhZEZvcm1hdEluZm9ybWF0aW9uKCk7XG4gICAgICAgIHZhciB2ZXJzaW9uID0gdGhpcy5yZWFkVmVyc2lvbigpO1xuICAgICAgICAvLyBHZXQgdGhlIGRhdGEgbWFzayBmb3IgdGhlIGZvcm1hdCB1c2VkIGluIHRoaXMgUVIgQ29kZS4gVGhpcyB3aWxsIGV4Y2x1ZGVcbiAgICAgICAgLy8gc29tZSBiaXRzIGZyb20gcmVhZGluZyBhcyB3ZSB3aW5kIHRocm91Z2ggdGhlIGJpdCBtYXRyaXguXG4gICAgICAgIHZhciBkYXRhTWFzayA9IERhdGFNYXNrXzEuZGVmYXVsdC52YWx1ZXMuZ2V0KGZvcm1hdEluZm8uZ2V0RGF0YU1hc2soKSk7XG4gICAgICAgIHZhciBkaW1lbnNpb24gPSB0aGlzLmJpdE1hdHJpeC5nZXRIZWlnaHQoKTtcbiAgICAgICAgZGF0YU1hc2sudW5tYXNrQml0TWF0cml4KHRoaXMuYml0TWF0cml4LCBkaW1lbnNpb24pO1xuICAgICAgICB2YXIgZnVuY3Rpb25QYXR0ZXJuID0gdmVyc2lvbi5idWlsZEZ1bmN0aW9uUGF0dGVybigpO1xuICAgICAgICB2YXIgcmVhZGluZ1VwID0gdHJ1ZTtcbiAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBVaW50OEFycmF5KHZlcnNpb24uZ2V0VG90YWxDb2Rld29yZHMoKSk7XG4gICAgICAgIHZhciByZXN1bHRPZmZzZXQgPSAwO1xuICAgICAgICB2YXIgY3VycmVudEJ5dGUgPSAwO1xuICAgICAgICB2YXIgYml0c1JlYWQgPSAwO1xuICAgICAgICAvLyBSZWFkIGNvbHVtbnMgaW4gcGFpcnMsIGZyb20gcmlnaHQgdG8gbGVmdFxuICAgICAgICBmb3IgKHZhciBqID0gZGltZW5zaW9uIC0gMTsgaiA+IDA7IGogLT0gMikge1xuICAgICAgICAgICAgaWYgKGogPT09IDYpIHtcbiAgICAgICAgICAgICAgICAvLyBTa2lwIHdob2xlIGNvbHVtbiB3aXRoIHZlcnRpY2FsIGFsaWdubWVudCBwYXR0ZXJuXG4gICAgICAgICAgICAgICAgLy8gc2F2ZXMgdGltZSBhbmQgbWFrZXMgdGhlIG90aGVyIGNvZGUgcHJvY2VlZCBtb3JlIGNsZWFubHlcbiAgICAgICAgICAgICAgICBqLS07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBSZWFkIGFsdGVybmF0aW5nbHkgZnJvbSBib3R0b20gdG8gdG9wIHRoZW4gdG9wIHRvIGJvdHRvbVxuICAgICAgICAgICAgZm9yICh2YXIgY291bnQgPSAwOyBjb3VudCA8IGRpbWVuc2lvbjsgY291bnQrKykge1xuICAgICAgICAgICAgICAgIHZhciBpID0gcmVhZGluZ1VwID8gZGltZW5zaW9uIC0gMSAtIGNvdW50IDogY291bnQ7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgY29sID0gMDsgY29sIDwgMjsgY29sKyspIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSWdub3JlIGJpdHMgY292ZXJlZCBieSB0aGUgZnVuY3Rpb24gcGF0dGVyblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWZ1bmN0aW9uUGF0dGVybi5nZXQoaiAtIGNvbCwgaSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlYWQgYSBiaXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGJpdHNSZWFkKys7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Qnl0ZSA8PD0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmJpdE1hdHJpeC5nZXQoaiAtIGNvbCwgaSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Qnl0ZSB8PSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgd2UndmUgbWFkZSBhIHdob2xlIGJ5dGUsIHNhdmUgaXQgb2ZmXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYml0c1JlYWQgPT09IDgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRbcmVzdWx0T2Zmc2V0KytdID0gLyooYnl0ZSkgKi8gY3VycmVudEJ5dGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYml0c1JlYWQgPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRCeXRlID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlYWRpbmdVcCA9ICFyZWFkaW5nVXA7IC8vIHJlYWRpbmdVcCBePSB0cnVlOyAvLyByZWFkaW5nVXAgPSAhcmVhZGluZ1VwOyAvLyBzd2l0Y2ggZGlyZWN0aW9uc1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXN1bHRPZmZzZXQgIT09IHZlcnNpb24uZ2V0VG90YWxDb2Rld29yZHMoKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogUmV2ZXJ0IHRoZSBtYXNrIHJlbW92YWwgZG9uZSB3aGlsZSByZWFkaW5nIHRoZSBjb2RlIHdvcmRzLiBUaGUgYml0IG1hdHJpeCBzaG91bGQgcmV2ZXJ0IHRvIGl0cyBvcmlnaW5hbCBzdGF0ZS5cbiAgICAgKi9cbiAgICBCaXRNYXRyaXhQYXJzZXIucHJvdG90eXBlLnJlbWFzayA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMucGFyc2VkRm9ybWF0SW5mbyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuOyAvLyBXZSBoYXZlIG5vIGZvcm1hdCBpbmZvcm1hdGlvbiwgYW5kIGhhdmUgbm8gZGF0YSBtYXNrXG4gICAgICAgIH1cbiAgICAgICAgdmFyIGRhdGFNYXNrID0gRGF0YU1hc2tfMS5kZWZhdWx0LnZhbHVlc1t0aGlzLnBhcnNlZEZvcm1hdEluZm8uZ2V0RGF0YU1hc2soKV07XG4gICAgICAgIHZhciBkaW1lbnNpb24gPSB0aGlzLmJpdE1hdHJpeC5nZXRIZWlnaHQoKTtcbiAgICAgICAgZGF0YU1hc2sudW5tYXNrQml0TWF0cml4KHRoaXMuYml0TWF0cml4LCBkaW1lbnNpb24pO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogUHJlcGFyZSB0aGUgcGFyc2VyIGZvciBhIG1pcnJvcmVkIG9wZXJhdGlvbi5cbiAgICAgKiBUaGlzIGZsYWcgaGFzIGVmZmVjdCBvbmx5IG9uIHRoZSB7QGxpbmsgI3JlYWRGb3JtYXRJbmZvcm1hdGlvbigpfSBhbmQgdGhlXG4gICAgICoge0BsaW5rICNyZWFkVmVyc2lvbigpfS4gQmVmb3JlIHByb2NlZWRpbmcgd2l0aCB7QGxpbmsgI3JlYWRDb2Rld29yZHMoKX0gdGhlXG4gICAgICoge0BsaW5rICNtaXJyb3IoKX0gbWV0aG9kIHNob3VsZCBiZSBjYWxsZWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbWlycm9yIFdoZXRoZXIgdG8gcmVhZCB2ZXJzaW9uIGFuZCBmb3JtYXQgaW5mb3JtYXRpb24gbWlycm9yZWQuXG4gICAgICovXG4gICAgQml0TWF0cml4UGFyc2VyLnByb3RvdHlwZS5zZXRNaXJyb3IgPSBmdW5jdGlvbiAoaXNNaXJyb3IpIHtcbiAgICAgICAgdGhpcy5wYXJzZWRWZXJzaW9uID0gbnVsbDtcbiAgICAgICAgdGhpcy5wYXJzZWRGb3JtYXRJbmZvID0gbnVsbDtcbiAgICAgICAgdGhpcy5pc01pcnJvciA9IGlzTWlycm9yO1xuICAgIH07XG4gICAgLyoqIE1pcnJvciB0aGUgYml0IG1hdHJpeCBpbiBvcmRlciB0byBhdHRlbXB0IGEgc2Vjb25kIHJlYWRpbmcuICovXG4gICAgQml0TWF0cml4UGFyc2VyLnByb3RvdHlwZS5taXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBiaXRNYXRyaXggPSB0aGlzLmJpdE1hdHJpeDtcbiAgICAgICAgZm9yICh2YXIgeCA9IDAsIHdpZHRoID0gYml0TWF0cml4LmdldFdpZHRoKCk7IHggPCB3aWR0aDsgeCsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciB5ID0geCArIDEsIGhlaWdodCA9IGJpdE1hdHJpeC5nZXRIZWlnaHQoKTsgeSA8IGhlaWdodDsgeSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGJpdE1hdHJpeC5nZXQoeCwgeSkgIT09IGJpdE1hdHJpeC5nZXQoeSwgeCkpIHtcbiAgICAgICAgICAgICAgICAgICAgYml0TWF0cml4LmZsaXAoeSwgeCk7XG4gICAgICAgICAgICAgICAgICAgIGJpdE1hdHJpeC5mbGlwKHgsIHkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIEJpdE1hdHJpeFBhcnNlcjtcbn0oKSk7XG5leHBvcnRzLmRlZmF1bHQgPSBCaXRNYXRyaXhQYXJzZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1CaXRNYXRyaXhQYXJzZXIuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IDIwMDcgWlhpbmcgYXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbnZhciBfX3ZhbHVlcyA9ICh0aGlzICYmIHRoaXMuX192YWx1ZXMpIHx8IGZ1bmN0aW9uKG8pIHtcbiAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xuICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuLi8uLi9JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25cIik7XG4vKipcbiAqIDxwPkVuY2Fwc3VsYXRlcyBhIGJsb2NrIG9mIGRhdGEgd2l0aGluIGEgUVIgQ29kZS4gUVIgQ29kZXMgbWF5IHNwbGl0IHRoZWlyIGRhdGEgaW50b1xuICogbXVsdGlwbGUgYmxvY2tzLCBlYWNoIG9mIHdoaWNoIGlzIGEgdW5pdCBvZiBkYXRhIGFuZCBlcnJvci1jb3JyZWN0aW9uIGNvZGV3b3Jkcy4gRWFjaFxuICogaXMgcmVwcmVzZW50ZWQgYnkgYW4gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcy48L3A+XG4gKlxuICogQGF1dGhvciBTZWFuIE93ZW5cbiAqL1xudmFyIERhdGFCbG9jayA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBEYXRhQmxvY2sobnVtRGF0YUNvZGV3b3JkcyAvKmludCovLCBjb2Rld29yZHMpIHtcbiAgICAgICAgdGhpcy5udW1EYXRhQ29kZXdvcmRzID0gbnVtRGF0YUNvZGV3b3JkcztcbiAgICAgICAgdGhpcy5jb2Rld29yZHMgPSBjb2Rld29yZHM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIDxwPldoZW4gUVIgQ29kZXMgdXNlIG11bHRpcGxlIGRhdGEgYmxvY2tzLCB0aGV5IGFyZSBhY3R1YWxseSBpbnRlcmxlYXZlZC5cbiAgICAgKiBUaGF0IGlzLCB0aGUgZmlyc3QgYnl0ZSBvZiBkYXRhIGJsb2NrIDEgdG8gbiBpcyB3cml0dGVuLCB0aGVuIHRoZSBzZWNvbmQgYnl0ZXMsIGFuZCBzbyBvbi4gVGhpc1xuICAgICAqIG1ldGhvZCB3aWxsIHNlcGFyYXRlIHRoZSBkYXRhIGludG8gb3JpZ2luYWwgYmxvY2tzLjwvcD5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByYXdDb2Rld29yZHMgYnl0ZXMgYXMgcmVhZCBkaXJlY3RseSBmcm9tIHRoZSBRUiBDb2RlXG4gICAgICogQHBhcmFtIHZlcnNpb24gdmVyc2lvbiBvZiB0aGUgUVIgQ29kZVxuICAgICAqIEBwYXJhbSBlY0xldmVsIGVycm9yLWNvcnJlY3Rpb24gbGV2ZWwgb2YgdGhlIFFSIENvZGVcbiAgICAgKiBAcmV0dXJuIERhdGFCbG9ja3MgY29udGFpbmluZyBvcmlnaW5hbCBieXRlcywgXCJkZS1pbnRlcmxlYXZlZFwiIGZyb20gcmVwcmVzZW50YXRpb24gaW4gdGhlXG4gICAgICogICAgICAgICBRUiBDb2RlXG4gICAgICovXG4gICAgRGF0YUJsb2NrLmdldERhdGFCbG9ja3MgPSBmdW5jdGlvbiAocmF3Q29kZXdvcmRzLCB2ZXJzaW9uLCBlY0xldmVsKSB7XG4gICAgICAgIHZhciBlXzEsIF9hLCBlXzIsIF9iO1xuICAgICAgICBpZiAocmF3Q29kZXdvcmRzLmxlbmd0aCAhPT0gdmVyc2lvbi5nZXRUb3RhbENvZGV3b3JkcygpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIC8vIEZpZ3VyZSBvdXQgdGhlIG51bWJlciBhbmQgc2l6ZSBvZiBkYXRhIGJsb2NrcyB1c2VkIGJ5IHRoaXMgdmVyc2lvbiBhbmRcbiAgICAgICAgLy8gZXJyb3IgY29ycmVjdGlvbiBsZXZlbFxuICAgICAgICB2YXIgZWNCbG9ja3MgPSB2ZXJzaW9uLmdldEVDQmxvY2tzRm9yTGV2ZWwoZWNMZXZlbCk7XG4gICAgICAgIC8vIEZpcnN0IGNvdW50IHRoZSB0b3RhbCBudW1iZXIgb2YgZGF0YSBibG9ja3NcbiAgICAgICAgdmFyIHRvdGFsQmxvY2tzID0gMDtcbiAgICAgICAgdmFyIGVjQmxvY2tBcnJheSA9IGVjQmxvY2tzLmdldEVDQmxvY2tzKCk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKHZhciBlY0Jsb2NrQXJyYXlfMSA9IF9fdmFsdWVzKGVjQmxvY2tBcnJheSksIGVjQmxvY2tBcnJheV8xXzEgPSBlY0Jsb2NrQXJyYXlfMS5uZXh0KCk7ICFlY0Jsb2NrQXJyYXlfMV8xLmRvbmU7IGVjQmxvY2tBcnJheV8xXzEgPSBlY0Jsb2NrQXJyYXlfMS5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgZWNCbG9jayA9IGVjQmxvY2tBcnJheV8xXzEudmFsdWU7XG4gICAgICAgICAgICAgICAgdG90YWxCbG9ja3MgKz0gZWNCbG9jay5nZXRDb3VudCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoZWNCbG9ja0FycmF5XzFfMSAmJiAhZWNCbG9ja0FycmF5XzFfMS5kb25lICYmIChfYSA9IGVjQmxvY2tBcnJheV8xLnJldHVybikpIF9hLmNhbGwoZWNCbG9ja0FycmF5XzEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfVxuICAgICAgICB9XG4gICAgICAgIC8vIE5vdyBlc3RhYmxpc2ggRGF0YUJsb2NrcyBvZiB0aGUgYXBwcm9wcmlhdGUgc2l6ZSBhbmQgbnVtYmVyIG9mIGRhdGEgY29kZXdvcmRzXG4gICAgICAgIHZhciByZXN1bHQgPSBuZXcgQXJyYXkodG90YWxCbG9ja3MpO1xuICAgICAgICB2YXIgbnVtUmVzdWx0QmxvY2tzID0gMDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAodmFyIGVjQmxvY2tBcnJheV8yID0gX192YWx1ZXMoZWNCbG9ja0FycmF5KSwgZWNCbG9ja0FycmF5XzJfMSA9IGVjQmxvY2tBcnJheV8yLm5leHQoKTsgIWVjQmxvY2tBcnJheV8yXzEuZG9uZTsgZWNCbG9ja0FycmF5XzJfMSA9IGVjQmxvY2tBcnJheV8yLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciBlY0Jsb2NrID0gZWNCbG9ja0FycmF5XzJfMS52YWx1ZTtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVjQmxvY2suZ2V0Q291bnQoKTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBudW1EYXRhQ29kZXdvcmRzID0gZWNCbG9jay5nZXREYXRhQ29kZXdvcmRzKCk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBudW1CbG9ja0NvZGV3b3JkcyA9IGVjQmxvY2tzLmdldEVDQ29kZXdvcmRzUGVyQmxvY2soKSArIG51bURhdGFDb2Rld29yZHM7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdFtudW1SZXN1bHRCbG9ja3MrK10gPSBuZXcgRGF0YUJsb2NrKG51bURhdGFDb2Rld29yZHMsIG5ldyBVaW50OEFycmF5KG51bUJsb2NrQ29kZXdvcmRzKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlXzJfMSkgeyBlXzIgPSB7IGVycm9yOiBlXzJfMSB9OyB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoZWNCbG9ja0FycmF5XzJfMSAmJiAhZWNCbG9ja0FycmF5XzJfMS5kb25lICYmIChfYiA9IGVjQmxvY2tBcnJheV8yLnJldHVybikpIF9iLmNhbGwoZWNCbG9ja0FycmF5XzIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzIpIHRocm93IGVfMi5lcnJvcjsgfVxuICAgICAgICB9XG4gICAgICAgIC8vIEFsbCBibG9ja3MgaGF2ZSB0aGUgc2FtZSBhbW91bnQgb2YgZGF0YSwgZXhjZXB0IHRoYXQgdGhlIGxhc3QgblxuICAgICAgICAvLyAod2hlcmUgbiBtYXkgYmUgMCkgaGF2ZSAxIG1vcmUgYnl0ZS4gRmlndXJlIG91dCB3aGVyZSB0aGVzZSBzdGFydC5cbiAgICAgICAgdmFyIHNob3J0ZXJCbG9ja3NUb3RhbENvZGV3b3JkcyA9IHJlc3VsdFswXS5jb2Rld29yZHMubGVuZ3RoO1xuICAgICAgICB2YXIgbG9uZ2VyQmxvY2tzU3RhcnRBdCA9IHJlc3VsdC5sZW5ndGggLSAxO1xuICAgICAgICAvLyBUWVBFU0NSSVBUUE9SVDogY2hlY2sgbGVuZ3RoIGlzIGNvcnJlY3QgaGVyZVxuICAgICAgICB3aGlsZSAobG9uZ2VyQmxvY2tzU3RhcnRBdCA+PSAwKSB7XG4gICAgICAgICAgICB2YXIgbnVtQ29kZXdvcmRzID0gcmVzdWx0W2xvbmdlckJsb2Nrc1N0YXJ0QXRdLmNvZGV3b3Jkcy5sZW5ndGg7XG4gICAgICAgICAgICBpZiAobnVtQ29kZXdvcmRzID09PSBzaG9ydGVyQmxvY2tzVG90YWxDb2Rld29yZHMpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxvbmdlckJsb2Nrc1N0YXJ0QXQtLTtcbiAgICAgICAgfVxuICAgICAgICBsb25nZXJCbG9ja3NTdGFydEF0Kys7XG4gICAgICAgIHZhciBzaG9ydGVyQmxvY2tzTnVtRGF0YUNvZGV3b3JkcyA9IHNob3J0ZXJCbG9ja3NUb3RhbENvZGV3b3JkcyAtIGVjQmxvY2tzLmdldEVDQ29kZXdvcmRzUGVyQmxvY2soKTtcbiAgICAgICAgLy8gVGhlIGxhc3QgZWxlbWVudHMgb2YgcmVzdWx0IG1heSBiZSAxIGVsZW1lbnQgbG9uZ2VyXG4gICAgICAgIC8vIGZpcnN0IGZpbGwgb3V0IGFzIG1hbnkgZWxlbWVudHMgYXMgYWxsIG9mIHRoZW0gaGF2ZVxuICAgICAgICB2YXIgcmF3Q29kZXdvcmRzT2Zmc2V0ID0gMDtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaG9ydGVyQmxvY2tzTnVtRGF0YUNvZGV3b3JkczsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG51bVJlc3VsdEJsb2NrczsgaisrKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0W2pdLmNvZGV3b3Jkc1tpXSA9IHJhd0NvZGV3b3Jkc1tyYXdDb2Rld29yZHNPZmZzZXQrK107XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gRmlsbCBvdXQgdGhlIGxhc3QgZGF0YSBibG9jayBpbiB0aGUgbG9uZ2VyIG9uZXNcbiAgICAgICAgZm9yICh2YXIgaiA9IGxvbmdlckJsb2Nrc1N0YXJ0QXQ7IGogPCBudW1SZXN1bHRCbG9ja3M7IGorKykge1xuICAgICAgICAgICAgcmVzdWx0W2pdLmNvZGV3b3Jkc1tzaG9ydGVyQmxvY2tzTnVtRGF0YUNvZGV3b3Jkc10gPSByYXdDb2Rld29yZHNbcmF3Q29kZXdvcmRzT2Zmc2V0KytdO1xuICAgICAgICB9XG4gICAgICAgIC8vIE5vdyBhZGQgaW4gZXJyb3IgY29ycmVjdGlvbiBibG9ja3NcbiAgICAgICAgdmFyIG1heCA9IHJlc3VsdFswXS5jb2Rld29yZHMubGVuZ3RoO1xuICAgICAgICBmb3IgKHZhciBpID0gc2hvcnRlckJsb2Nrc051bURhdGFDb2Rld29yZHM7IGkgPCBtYXg7IGkrKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBudW1SZXN1bHRCbG9ja3M7IGorKykge1xuICAgICAgICAgICAgICAgIHZhciBpT2Zmc2V0ID0gaiA8IGxvbmdlckJsb2Nrc1N0YXJ0QXQgPyBpIDogaSArIDE7XG4gICAgICAgICAgICAgICAgcmVzdWx0W2pdLmNvZGV3b3Jkc1tpT2Zmc2V0XSA9IHJhd0NvZGV3b3Jkc1tyYXdDb2Rld29yZHNPZmZzZXQrK107XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIERhdGFCbG9jay5wcm90b3R5cGUuZ2V0TnVtRGF0YUNvZGV3b3JkcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubnVtRGF0YUNvZGV3b3JkcztcbiAgICB9O1xuICAgIERhdGFCbG9jay5wcm90b3R5cGUuZ2V0Q29kZXdvcmRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2Rld29yZHM7XG4gICAgfTtcbiAgICByZXR1cm4gRGF0YUJsb2NrO1xufSgpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IERhdGFCbG9jaztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURhdGFCbG9jay5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8qXG4gKiBDb3B5cmlnaHQgMjAwNyBaWGluZyBhdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Nb2RlVmFsdWVzID0gdm9pZCAwO1xudmFyIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4uLy4uL0lsbGVnYWxBcmd1bWVudEV4Y2VwdGlvblwiKTtcbnZhciBNb2RlVmFsdWVzO1xuKGZ1bmN0aW9uIChNb2RlVmFsdWVzKSB7XG4gICAgTW9kZVZhbHVlc1tNb2RlVmFsdWVzW1wiVEVSTUlOQVRPUlwiXSA9IDBdID0gXCJURVJNSU5BVE9SXCI7XG4gICAgTW9kZVZhbHVlc1tNb2RlVmFsdWVzW1wiTlVNRVJJQ1wiXSA9IDFdID0gXCJOVU1FUklDXCI7XG4gICAgTW9kZVZhbHVlc1tNb2RlVmFsdWVzW1wiQUxQSEFOVU1FUklDXCJdID0gMl0gPSBcIkFMUEhBTlVNRVJJQ1wiO1xuICAgIE1vZGVWYWx1ZXNbTW9kZVZhbHVlc1tcIlNUUlVDVFVSRURfQVBQRU5EXCJdID0gM10gPSBcIlNUUlVDVFVSRURfQVBQRU5EXCI7XG4gICAgTW9kZVZhbHVlc1tNb2RlVmFsdWVzW1wiQllURVwiXSA9IDRdID0gXCJCWVRFXCI7XG4gICAgTW9kZVZhbHVlc1tNb2RlVmFsdWVzW1wiRUNJXCJdID0gNV0gPSBcIkVDSVwiO1xuICAgIE1vZGVWYWx1ZXNbTW9kZVZhbHVlc1tcIktBTkpJXCJdID0gNl0gPSBcIktBTkpJXCI7XG4gICAgTW9kZVZhbHVlc1tNb2RlVmFsdWVzW1wiRk5DMV9GSVJTVF9QT1NJVElPTlwiXSA9IDddID0gXCJGTkMxX0ZJUlNUX1BPU0lUSU9OXCI7XG4gICAgTW9kZVZhbHVlc1tNb2RlVmFsdWVzW1wiRk5DMV9TRUNPTkRfUE9TSVRJT05cIl0gPSA4XSA9IFwiRk5DMV9TRUNPTkRfUE9TSVRJT05cIjtcbiAgICAvKiogU2VlIEdCVCAxODI4NC0yMDAwOyBcIkhhbnppXCIgaXMgYSB0cmFuc2xpdGVyYXRpb24gb2YgdGhpcyBtb2RlIG5hbWUuICovXG4gICAgTW9kZVZhbHVlc1tNb2RlVmFsdWVzW1wiSEFOWklcIl0gPSA5XSA9IFwiSEFOWklcIjtcbn0pKE1vZGVWYWx1ZXMgPSBleHBvcnRzLk1vZGVWYWx1ZXMgfHwgKGV4cG9ydHMuTW9kZVZhbHVlcyA9IHt9KSk7XG4vKipcbiAqIDxwPlNlZSBJU08gMTgwMDQ6MjAwNiwgNi40LjEsIFRhYmxlcyAyIGFuZCAzLiBUaGlzIGVudW0gZW5jYXBzdWxhdGVzIHRoZSB2YXJpb3VzIG1vZGVzIGluIHdoaWNoXG4gKiBkYXRhIGNhbiBiZSBlbmNvZGVkIHRvIGJpdHMgaW4gdGhlIFFSIGNvZGUgc3RhbmRhcmQuPC9wPlxuICpcbiAqIEBhdXRob3IgU2VhbiBPd2VuXG4gKi9cbnZhciBNb2RlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIE1vZGUodmFsdWUsIHN0cmluZ1ZhbHVlLCBjaGFyYWN0ZXJDb3VudEJpdHNGb3JWZXJzaW9ucywgYml0cyAvKmludCovKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zdHJpbmdWYWx1ZSA9IHN0cmluZ1ZhbHVlO1xuICAgICAgICB0aGlzLmNoYXJhY3RlckNvdW50Qml0c0ZvclZlcnNpb25zID0gY2hhcmFjdGVyQ291bnRCaXRzRm9yVmVyc2lvbnM7XG4gICAgICAgIHRoaXMuYml0cyA9IGJpdHM7XG4gICAgICAgIE1vZGUuRk9SX0JJVFMuc2V0KGJpdHMsIHRoaXMpO1xuICAgICAgICBNb2RlLkZPUl9WQUxVRS5zZXQodmFsdWUsIHRoaXMpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gYml0cyBmb3VyIGJpdHMgZW5jb2RpbmcgYSBRUiBDb2RlIGRhdGEgbW9kZVxuICAgICAqIEByZXR1cm4gTW9kZSBlbmNvZGVkIGJ5IHRoZXNlIGJpdHNcbiAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiBiaXRzIGRvIG5vdCBjb3JyZXNwb25kIHRvIGEga25vd24gbW9kZVxuICAgICAqL1xuICAgIE1vZGUuZm9yQml0cyA9IGZ1bmN0aW9uIChiaXRzIC8qaW50Ki8pIHtcbiAgICAgICAgdmFyIG1vZGUgPSBNb2RlLkZPUl9CSVRTLmdldChiaXRzKTtcbiAgICAgICAgaWYgKHVuZGVmaW5lZCA9PT0gbW9kZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbW9kZTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB2ZXJzaW9uIHZlcnNpb24gaW4gcXVlc3Rpb25cbiAgICAgKiBAcmV0dXJuIG51bWJlciBvZiBiaXRzIHVzZWQsIGluIHRoaXMgUVIgQ29kZSBzeW1ib2wge0BsaW5rIFZlcnNpb259LCB0byBlbmNvZGUgdGhlXG4gICAgICogICAgICAgICBjb3VudCBvZiBjaGFyYWN0ZXJzIHRoYXQgd2lsbCBmb2xsb3cgZW5jb2RlZCBpbiB0aGlzIE1vZGVcbiAgICAgKi9cbiAgICBNb2RlLnByb3RvdHlwZS5nZXRDaGFyYWN0ZXJDb3VudEJpdHMgPSBmdW5jdGlvbiAodmVyc2lvbikge1xuICAgICAgICB2YXIgdmVyc2lvbk51bWJlciA9IHZlcnNpb24uZ2V0VmVyc2lvbk51bWJlcigpO1xuICAgICAgICB2YXIgb2Zmc2V0O1xuICAgICAgICBpZiAodmVyc2lvbk51bWJlciA8PSA5KSB7XG4gICAgICAgICAgICBvZmZzZXQgPSAwO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHZlcnNpb25OdW1iZXIgPD0gMjYpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IDE7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBvZmZzZXQgPSAyO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNoYXJhY3RlckNvdW50Qml0c0ZvclZlcnNpb25zW29mZnNldF07XG4gICAgfTtcbiAgICBNb2RlLnByb3RvdHlwZS5nZXRWYWx1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfTtcbiAgICBNb2RlLnByb3RvdHlwZS5nZXRCaXRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5iaXRzO1xuICAgIH07XG4gICAgTW9kZS5wcm90b3R5cGUuZXF1YWxzID0gZnVuY3Rpb24gKG8pIHtcbiAgICAgICAgaWYgKCEobyBpbnN0YW5jZW9mIE1vZGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG90aGVyID0gbztcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUgPT09IG90aGVyLnZhbHVlO1xuICAgIH07XG4gICAgTW9kZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0cmluZ1ZhbHVlO1xuICAgIH07XG4gICAgTW9kZS5GT1JfQklUUyA9IG5ldyBNYXAoKTtcbiAgICBNb2RlLkZPUl9WQUxVRSA9IG5ldyBNYXAoKTtcbiAgICBNb2RlLlRFUk1JTkFUT1IgPSBuZXcgTW9kZShNb2RlVmFsdWVzLlRFUk1JTkFUT1IsICdURVJNSU5BVE9SJywgSW50MzJBcnJheS5mcm9tKFswLCAwLCAwXSksIDB4MDApOyAvLyBOb3QgcmVhbGx5IGEgbW9kZS4uLlxuICAgIE1vZGUuTlVNRVJJQyA9IG5ldyBNb2RlKE1vZGVWYWx1ZXMuTlVNRVJJQywgJ05VTUVSSUMnLCBJbnQzMkFycmF5LmZyb20oWzEwLCAxMiwgMTRdKSwgMHgwMSk7XG4gICAgTW9kZS5BTFBIQU5VTUVSSUMgPSBuZXcgTW9kZShNb2RlVmFsdWVzLkFMUEhBTlVNRVJJQywgJ0FMUEhBTlVNRVJJQycsIEludDMyQXJyYXkuZnJvbShbOSwgMTEsIDEzXSksIDB4MDIpO1xuICAgIE1vZGUuU1RSVUNUVVJFRF9BUFBFTkQgPSBuZXcgTW9kZShNb2RlVmFsdWVzLlNUUlVDVFVSRURfQVBQRU5ELCAnU1RSVUNUVVJFRF9BUFBFTkQnLCBJbnQzMkFycmF5LmZyb20oWzAsIDAsIDBdKSwgMHgwMyk7IC8vIE5vdCBzdXBwb3J0ZWRcbiAgICBNb2RlLkJZVEUgPSBuZXcgTW9kZShNb2RlVmFsdWVzLkJZVEUsICdCWVRFJywgSW50MzJBcnJheS5mcm9tKFs4LCAxNiwgMTZdKSwgMHgwNCk7XG4gICAgTW9kZS5FQ0kgPSBuZXcgTW9kZShNb2RlVmFsdWVzLkVDSSwgJ0VDSScsIEludDMyQXJyYXkuZnJvbShbMCwgMCwgMF0pLCAweDA3KTsgLy8gY2hhcmFjdGVyIGNvdW50cyBkb24ndCBhcHBseVxuICAgIE1vZGUuS0FOSkkgPSBuZXcgTW9kZShNb2RlVmFsdWVzLktBTkpJLCAnS0FOSkknLCBJbnQzMkFycmF5LmZyb20oWzgsIDEwLCAxMl0pLCAweDA4KTtcbiAgICBNb2RlLkZOQzFfRklSU1RfUE9TSVRJT04gPSBuZXcgTW9kZShNb2RlVmFsdWVzLkZOQzFfRklSU1RfUE9TSVRJT04sICdGTkMxX0ZJUlNUX1BPU0lUSU9OJywgSW50MzJBcnJheS5mcm9tKFswLCAwLCAwXSksIDB4MDUpO1xuICAgIE1vZGUuRk5DMV9TRUNPTkRfUE9TSVRJT04gPSBuZXcgTW9kZShNb2RlVmFsdWVzLkZOQzFfU0VDT05EX1BPU0lUSU9OLCAnRk5DMV9TRUNPTkRfUE9TSVRJT04nLCBJbnQzMkFycmF5LmZyb20oWzAsIDAsIDBdKSwgMHgwOSk7XG4gICAgLyoqIFNlZSBHQlQgMTgyODQtMjAwMDsgXCJIYW56aVwiIGlzIGEgdHJhbnNsaXRlcmF0aW9uIG9mIHRoaXMgbW9kZSBuYW1lLiAqL1xuICAgIE1vZGUuSEFOWkkgPSBuZXcgTW9kZShNb2RlVmFsdWVzLkhBTlpJLCAnSEFOWkknLCBJbnQzMkFycmF5LmZyb20oWzgsIDEwLCAxMl0pLCAweDBEKTtcbiAgICByZXR1cm4gTW9kZTtcbn0oKSk7XG5leHBvcnRzLmRlZmF1bHQgPSBNb2RlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TW9kZS5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8qXG4gKiBDb3B5cmlnaHQgMjAwNyBaWGluZyBhdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLypuYW1lc3BhY2UgY29tLmdvb2dsZS56eGluZy5xcmNvZGUuZGVjb2RlciB7Ki9cbnZhciBCaXRTb3VyY2VfMSA9IHJlcXVpcmUoXCIuLi8uLi9jb21tb24vQml0U291cmNlXCIpO1xudmFyIENoYXJhY3RlclNldEVDSV8xID0gcmVxdWlyZShcIi4uLy4uL2NvbW1vbi9DaGFyYWN0ZXJTZXRFQ0lcIik7XG52YXIgRGVjb2RlclJlc3VsdF8xID0gcmVxdWlyZShcIi4uLy4uL2NvbW1vbi9EZWNvZGVyUmVzdWx0XCIpO1xudmFyIFN0cmluZ1V0aWxzXzEgPSByZXF1aXJlKFwiLi4vLi4vY29tbW9uL1N0cmluZ1V0aWxzXCIpO1xudmFyIEZvcm1hdEV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4uLy4uL0Zvcm1hdEV4Y2VwdGlvblwiKTtcbnZhciBTdHJpbmdCdWlsZGVyXzEgPSByZXF1aXJlKFwiLi4vLi4vdXRpbC9TdHJpbmdCdWlsZGVyXCIpO1xudmFyIFN0cmluZ0VuY29kaW5nXzEgPSByZXF1aXJlKFwiLi4vLi4vdXRpbC9TdHJpbmdFbmNvZGluZ1wiKTtcbnZhciBNb2RlXzEgPSByZXF1aXJlKFwiLi9Nb2RlXCIpO1xuLyppbXBvcnQgamF2YS5pby5VbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uOyovXG4vKmltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OyovXG4vKmltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsqL1xuLyppbXBvcnQgamF2YS51dGlsLkxpc3Q7Ki9cbi8qaW1wb3J0IGphdmEudXRpbC5NYXA7Ki9cbi8qKlxuICogPHA+UVIgQ29kZXMgY2FuIGVuY29kZSB0ZXh0IGFzIGJpdHMgaW4gb25lIG9mIHNldmVyYWwgbW9kZXMsIGFuZCBjYW4gdXNlIG11bHRpcGxlIG1vZGVzXG4gKiBpbiBvbmUgUVIgQ29kZS4gVGhpcyBjbGFzcyBkZWNvZGVzIHRoZSBiaXRzIGJhY2sgaW50byB0ZXh0LjwvcD5cbiAqXG4gKiA8cD5TZWUgSVNPIDE4MDA0OjIwMDYsIDYuNC4zIC0gNi40Ljc8L3A+XG4gKlxuICogQGF1dGhvciBTZWFuIE93ZW5cbiAqL1xudmFyIERlY29kZWRCaXRTdHJlYW1QYXJzZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRGVjb2RlZEJpdFN0cmVhbVBhcnNlcigpIHtcbiAgICB9XG4gICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5kZWNvZGUgPSBmdW5jdGlvbiAoYnl0ZXMsIHZlcnNpb24sIGVjTGV2ZWwsIGhpbnRzKSB7XG4gICAgICAgIHZhciBiaXRzID0gbmV3IEJpdFNvdXJjZV8xLmRlZmF1bHQoYnl0ZXMpO1xuICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1aWxkZXJfMS5kZWZhdWx0KCk7XG4gICAgICAgIHZhciBieXRlU2VnbWVudHMgPSBuZXcgQXJyYXkoKTsgLy8gMVxuICAgICAgICAvLyBUWVBFU0NSSVBUUE9SVDogSSBkbyBub3QgdXNlIGNvbnN0cnVjdG9yIHdpdGggc2l6ZSAxIGFzIGluIG9yaWdpbmFsIEphdmEgbWVhbnMgY2FwYWNpdHkgYW5kIHRoZSBhcnJheSBsZW5ndGggaXMgY2hlY2tlZCBiZWxvd1xuICAgICAgICB2YXIgc3ltYm9sU2VxdWVuY2UgPSAtMTtcbiAgICAgICAgdmFyIHBhcml0eURhdGEgPSAtMTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHZhciBjdXJyZW50Q2hhcmFjdGVyU2V0RUNJID0gbnVsbDtcbiAgICAgICAgICAgIHZhciBmYzFJbkVmZmVjdCA9IGZhbHNlO1xuICAgICAgICAgICAgdmFyIG1vZGUgPSB2b2lkIDA7XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgLy8gV2hpbGUgc3RpbGwgYW5vdGhlciBzZWdtZW50IHRvIHJlYWQuLi5cbiAgICAgICAgICAgICAgICBpZiAoYml0cy5hdmFpbGFibGUoKSA8IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gT0ssIGFzc3VtZSB3ZSdyZSBkb25lLiBSZWFsbHksIGEgVEVSTUlOQVRPUiBtb2RlIHNob3VsZCBoYXZlIGJlZW4gcmVjb3JkZWQgaGVyZVxuICAgICAgICAgICAgICAgICAgICBtb2RlID0gTW9kZV8xLmRlZmF1bHQuVEVSTUlOQVRPUjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBtb2RlQml0cyA9IGJpdHMucmVhZEJpdHMoNCk7XG4gICAgICAgICAgICAgICAgICAgIG1vZGUgPSBNb2RlXzEuZGVmYXVsdC5mb3JCaXRzKG1vZGVCaXRzKTsgLy8gbW9kZSBpcyBlbmNvZGVkIGJ5IDQgYml0c1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBNb2RlXzEuZGVmYXVsdC5URVJNSU5BVE9SOlxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgTW9kZV8xLmRlZmF1bHQuRk5DMV9GSVJTVF9QT1NJVElPTjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBNb2RlXzEuZGVmYXVsdC5GTkMxX1NFQ09ORF9QT1NJVElPTjpcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGRvIGxpdHRsZSB3aXRoIEZOQzEgZXhjZXB0IGFsdGVyIHRoZSBwYXJzZWQgcmVzdWx0IGEgYml0IGFjY29yZGluZyB0byB0aGUgc3BlY1xuICAgICAgICAgICAgICAgICAgICAgICAgZmMxSW5FZmZlY3QgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgTW9kZV8xLmRlZmF1bHQuU1RSVUNUVVJFRF9BUFBFTkQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYml0cy5hdmFpbGFibGUoKSA8IDE2KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNlcXVlbmNlIG51bWJlciBhbmQgcGFyaXR5IGlzIGFkZGVkIGxhdGVyIHRvIHRoZSByZXN1bHQgbWV0YWRhdGFcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlYWQgbmV4dCA4IGJpdHMgKHN5bWJvbCBzZXF1ZW5jZSAjKSBhbmQgOCBiaXRzIChkYXRhOiBwYXJpdHkpLCB0aGVuIGNvbnRpbnVlXG4gICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2xTZXF1ZW5jZSA9IGJpdHMucmVhZEJpdHMoOCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJpdHlEYXRhID0gYml0cy5yZWFkQml0cyg4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIE1vZGVfMS5kZWZhdWx0LkVDSTpcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvdW50IGRvZXNuJ3QgYXBwbHkgdG8gRUNJXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLnBhcnNlRUNJVmFsdWUoYml0cyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q2hhcmFjdGVyU2V0RUNJID0gQ2hhcmFjdGVyU2V0RUNJXzEuZGVmYXVsdC5nZXRDaGFyYWN0ZXJTZXRFQ0lCeVZhbHVlKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Q2hhcmFjdGVyU2V0RUNJID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIE1vZGVfMS5kZWZhdWx0LkhBTlpJOlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmlyc3QgaGFuZGxlIEhhbnppIG1vZGUgd2hpY2ggZG9lcyBub3Qgc3RhcnQgd2l0aCBjaGFyYWN0ZXIgY291bnRcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENoaW5lc2UgbW9kZSBjb250YWlucyBhIHN1YiBzZXQgaW5kaWNhdG9yIHJpZ2h0IGFmdGVyIG1vZGUgaW5kaWNhdG9yXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3Vic2V0ID0gYml0cy5yZWFkQml0cyg0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb3VudEhhbnppID0gYml0cy5yZWFkQml0cyhtb2RlLmdldENoYXJhY3RlckNvdW50Qml0cyh2ZXJzaW9uKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3Vic2V0ID09PSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLkdCMjMxMl9TVUJTRVQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLmRlY29kZUhhbnppU2VnbWVudChiaXRzLCByZXN1bHQsIGNvdW50SGFuemkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBcIk5vcm1hbFwiIFFSIGNvZGUgbW9kZXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBIb3cgbWFueSBjaGFyYWN0ZXJzIHdpbGwgZm9sbG93LCBlbmNvZGVkIGluIHRoaXMgbW9kZT9cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb3VudCA9IGJpdHMucmVhZEJpdHMobW9kZS5nZXRDaGFyYWN0ZXJDb3VudEJpdHModmVyc2lvbikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChtb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBNb2RlXzEuZGVmYXVsdC5OVU1FUklDOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLmRlY29kZU51bWVyaWNTZWdtZW50KGJpdHMsIHJlc3VsdCwgY291bnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIE1vZGVfMS5kZWZhdWx0LkFMUEhBTlVNRVJJQzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5kZWNvZGVBbHBoYW51bWVyaWNTZWdtZW50KGJpdHMsIHJlc3VsdCwgY291bnQsIGZjMUluRWZmZWN0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBNb2RlXzEuZGVmYXVsdC5CWVRFOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLmRlY29kZUJ5dGVTZWdtZW50KGJpdHMsIHJlc3VsdCwgY291bnQsIGN1cnJlbnRDaGFyYWN0ZXJTZXRFQ0ksIGJ5dGVTZWdtZW50cywgaGludHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIE1vZGVfMS5kZWZhdWx0LktBTkpJOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLmRlY29kZUthbmppU2VnbWVudChiaXRzLCByZXN1bHQsIGNvdW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gd2hpbGUgKG1vZGUgIT09IE1vZGVfMS5kZWZhdWx0LlRFUk1JTkFUT1IpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChpYWUgLyo6IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiovKSB7XG4gICAgICAgICAgICAvLyBmcm9tIHJlYWRCaXRzKCkgY2FsbHNcbiAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBEZWNvZGVyUmVzdWx0XzEuZGVmYXVsdChieXRlcywgcmVzdWx0LnRvU3RyaW5nKCksIGJ5dGVTZWdtZW50cy5sZW5ndGggPT09IDAgPyBudWxsIDogYnl0ZVNlZ21lbnRzLCBlY0xldmVsID09PSBudWxsID8gbnVsbCA6IGVjTGV2ZWwudG9TdHJpbmcoKSwgc3ltYm9sU2VxdWVuY2UsIHBhcml0eURhdGEpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogU2VlIHNwZWNpZmljYXRpb24gR0JUIDE4Mjg0LTIwMDBcbiAgICAgKi9cbiAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLmRlY29kZUhhbnppU2VnbWVudCA9IGZ1bmN0aW9uIChiaXRzLCByZXN1bHQsIGNvdW50IC8qaW50Ki8pIHtcbiAgICAgICAgLy8gRG9uJ3QgY3Jhc2ggdHJ5aW5nIHRvIHJlYWQgbW9yZSBiaXRzIHRoYW4gd2UgaGF2ZSBhdmFpbGFibGUuXG4gICAgICAgIGlmIChjb3VudCAqIDEzID4gYml0cy5hdmFpbGFibGUoKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBFYWNoIGNoYXJhY3RlciB3aWxsIHJlcXVpcmUgMiBieXRlcy4gUmVhZCB0aGUgY2hhcmFjdGVycyBhcyAyLWJ5dGUgcGFpcnNcbiAgICAgICAgLy8gYW5kIGRlY29kZSBhcyBHQjIzMTIgYWZ0ZXJ3YXJkc1xuICAgICAgICB2YXIgYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkoMiAqIGNvdW50KTtcbiAgICAgICAgdmFyIG9mZnNldCA9IDA7XG4gICAgICAgIHdoaWxlIChjb3VudCA+IDApIHtcbiAgICAgICAgICAgIC8vIEVhY2ggMTMgYml0cyBlbmNvZGVzIGEgMi1ieXRlIGNoYXJhY3RlclxuICAgICAgICAgICAgdmFyIHR3b0J5dGVzID0gYml0cy5yZWFkQml0cygxMyk7XG4gICAgICAgICAgICB2YXIgYXNzZW1ibGVkVHdvQnl0ZXMgPSAoKCh0d29CeXRlcyAvIDB4MDYwKSA8PCA4KSAmIDB4RkZGRkZGRkYpIHwgKHR3b0J5dGVzICUgMHgwNjApO1xuICAgICAgICAgICAgaWYgKGFzc2VtYmxlZFR3b0J5dGVzIDwgMHgwMDNCRikge1xuICAgICAgICAgICAgICAgIC8vIEluIHRoZSAweEExQTEgdG8gMHhBQUZFIHJhbmdlXG4gICAgICAgICAgICAgICAgYXNzZW1ibGVkVHdvQnl0ZXMgKz0gMHgwQTFBMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIEluIHRoZSAweEIwQTEgdG8gMHhGQUZFIHJhbmdlXG4gICAgICAgICAgICAgICAgYXNzZW1ibGVkVHdvQnl0ZXMgKz0gMHgwQTZBMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJ1ZmZlcltvZmZzZXRdID0gLyooYnl0ZSkgKi8gKChhc3NlbWJsZWRUd29CeXRlcyA+PiA4KSAmIDB4RkYpO1xuICAgICAgICAgICAgYnVmZmVyW29mZnNldCArIDFdID0gLyooYnl0ZSkgKi8gKGFzc2VtYmxlZFR3b0J5dGVzICYgMHhGRik7XG4gICAgICAgICAgICBvZmZzZXQgKz0gMjtcbiAgICAgICAgICAgIGNvdW50LS07XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nRW5jb2RpbmdfMS5kZWZhdWx0LmRlY29kZShidWZmZXIsIFN0cmluZ1V0aWxzXzEuZGVmYXVsdC5HQjIzMTIpKTtcbiAgICAgICAgICAgIC8vIFRZUEVTQ1JJUFRQT1JUOiBUT0RPOiBpbXBsZW1lbnQgR0IyMzEyIGRlY29kZS4gU3RyaW5nVmlldyBmcm9tIE1ETiBjb3VsZCBiZSBhIHN0YXJ0aW5nIHBvaW50XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGlnbm9yZWQgLyo6IFVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24qLykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoaWdub3JlZCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuZGVjb2RlS2FuamlTZWdtZW50ID0gZnVuY3Rpb24gKGJpdHMsIHJlc3VsdCwgY291bnQgLyppbnQqLykge1xuICAgICAgICAvLyBEb24ndCBjcmFzaCB0cnlpbmcgdG8gcmVhZCBtb3JlIGJpdHMgdGhhbiB3ZSBoYXZlIGF2YWlsYWJsZS5cbiAgICAgICAgaWYgKGNvdW50ICogMTMgPiBiaXRzLmF2YWlsYWJsZSgpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIC8vIEVhY2ggY2hhcmFjdGVyIHdpbGwgcmVxdWlyZSAyIGJ5dGVzLiBSZWFkIHRoZSBjaGFyYWN0ZXJzIGFzIDItYnl0ZSBwYWlyc1xuICAgICAgICAvLyBhbmQgZGVjb2RlIGFzIFNoaWZ0X0pJUyBhZnRlcndhcmRzXG4gICAgICAgIHZhciBidWZmZXIgPSBuZXcgVWludDhBcnJheSgyICogY291bnQpO1xuICAgICAgICB2YXIgb2Zmc2V0ID0gMDtcbiAgICAgICAgd2hpbGUgKGNvdW50ID4gMCkge1xuICAgICAgICAgICAgLy8gRWFjaCAxMyBiaXRzIGVuY29kZXMgYSAyLWJ5dGUgY2hhcmFjdGVyXG4gICAgICAgICAgICB2YXIgdHdvQnl0ZXMgPSBiaXRzLnJlYWRCaXRzKDEzKTtcbiAgICAgICAgICAgIHZhciBhc3NlbWJsZWRUd29CeXRlcyA9ICgoKHR3b0J5dGVzIC8gMHgwQzApIDw8IDgpICYgMHhGRkZGRkZGRikgfCAodHdvQnl0ZXMgJSAweDBDMCk7XG4gICAgICAgICAgICBpZiAoYXNzZW1ibGVkVHdvQnl0ZXMgPCAweDAxRjAwKSB7XG4gICAgICAgICAgICAgICAgLy8gSW4gdGhlIDB4ODE0MCB0byAweDlGRkMgcmFuZ2VcbiAgICAgICAgICAgICAgICBhc3NlbWJsZWRUd29CeXRlcyArPSAweDA4MTQwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gSW4gdGhlIDB4RTA0MCB0byAweEVCQkYgcmFuZ2VcbiAgICAgICAgICAgICAgICBhc3NlbWJsZWRUd29CeXRlcyArPSAweDBDMTQwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnVmZmVyW29mZnNldF0gPSAvKihieXRlKSAqLyAoYXNzZW1ibGVkVHdvQnl0ZXMgPj4gOCk7XG4gICAgICAgICAgICBidWZmZXJbb2Zmc2V0ICsgMV0gPSAvKihieXRlKSAqLyBhc3NlbWJsZWRUd29CeXRlcztcbiAgICAgICAgICAgIG9mZnNldCArPSAyO1xuICAgICAgICAgICAgY291bnQtLTtcbiAgICAgICAgfVxuICAgICAgICAvLyBTaGlmdF9KSVMgbWF5IG5vdCBiZSBzdXBwb3J0ZWQgaW4gc29tZSBlbnZpcm9ubWVudHM6XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZ0VuY29kaW5nXzEuZGVmYXVsdC5kZWNvZGUoYnVmZmVyLCBTdHJpbmdVdGlsc18xLmRlZmF1bHQuU0hJRlRfSklTKSk7XG4gICAgICAgICAgICAvLyBUWVBFU0NSSVBUUE9SVDogVE9ETzogaW1wbGVtZW50IFNISUZUX0pJUyBkZWNvZGUuIFN0cmluZ1ZpZXcgZnJvbSBNRE4gY291bGQgYmUgYSBzdGFydGluZyBwb2ludFxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChpZ25vcmVkIC8qOiBVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uKi8pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KGlnbm9yZWQpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLmRlY29kZUJ5dGVTZWdtZW50ID0gZnVuY3Rpb24gKGJpdHMsIHJlc3VsdCwgY291bnQgLyppbnQqLywgY3VycmVudENoYXJhY3RlclNldEVDSSwgYnl0ZVNlZ21lbnRzLCBoaW50cykge1xuICAgICAgICAvLyBEb24ndCBjcmFzaCB0cnlpbmcgdG8gcmVhZCBtb3JlIGJpdHMgdGhhbiB3ZSBoYXZlIGF2YWlsYWJsZS5cbiAgICAgICAgaWYgKDggKiBjb3VudCA+IGJpdHMuYXZhaWxhYmxlKCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJlYWRCeXRlcyA9IG5ldyBVaW50OEFycmF5KGNvdW50KTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gICAgICAgICAgICByZWFkQnl0ZXNbaV0gPSAvKihieXRlKSAqLyBiaXRzLnJlYWRCaXRzKDgpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBlbmNvZGluZztcbiAgICAgICAgaWYgKGN1cnJlbnRDaGFyYWN0ZXJTZXRFQ0kgPT09IG51bGwpIHtcbiAgICAgICAgICAgIC8vIFRoZSBzcGVjIGlzbid0IGNsZWFyIG9uIHRoaXMgbW9kZTsgc2VlXG4gICAgICAgICAgICAvLyBzZWN0aW9uIDYuNC41OiB0IGRvZXMgbm90IHNheSB3aGljaCBlbmNvZGluZyB0byBhc3N1bWluZ1xuICAgICAgICAgICAgLy8gdXBvbiBkZWNvZGluZy4gSSBoYXZlIHNlZW4gSVNPLTg4NTktMSB1c2VkIGFzIHdlbGwgYXNcbiAgICAgICAgICAgIC8vIFNoaWZ0X0pJUyAtLSB3aXRob3V0IGFueXRoaW5nIGxpa2UgYW4gRUNJIGRlc2lnbmF0b3IgdG9cbiAgICAgICAgICAgIC8vIGdpdmUgYSBoaW50LlxuICAgICAgICAgICAgZW5jb2RpbmcgPSBTdHJpbmdVdGlsc18xLmRlZmF1bHQuZ3Vlc3NFbmNvZGluZyhyZWFkQnl0ZXMsIGhpbnRzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGVuY29kaW5nID0gY3VycmVudENoYXJhY3RlclNldEVDSS5nZXROYW1lKCk7XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nRW5jb2RpbmdfMS5kZWZhdWx0LmRlY29kZShyZWFkQnl0ZXMsIGVuY29kaW5nKSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGlnbm9yZWQgLyo6IFVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24qLykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoaWdub3JlZCk7XG4gICAgICAgIH1cbiAgICAgICAgYnl0ZVNlZ21lbnRzLnB1c2gocmVhZEJ5dGVzKTtcbiAgICB9O1xuICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIudG9BbHBoYU51bWVyaWNDaGFyID0gZnVuY3Rpb24gKHZhbHVlIC8qaW50Ki8pIHtcbiAgICAgICAgaWYgKHZhbHVlID49IERlY29kZWRCaXRTdHJlYW1QYXJzZXIuQUxQSEFOVU1FUklDX0NIQVJTLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5BTFBIQU5VTUVSSUNfQ0hBUlNbdmFsdWVdO1xuICAgIH07XG4gICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5kZWNvZGVBbHBoYW51bWVyaWNTZWdtZW50ID0gZnVuY3Rpb24gKGJpdHMsIHJlc3VsdCwgY291bnQgLyppbnQqLywgZmMxSW5FZmZlY3QpIHtcbiAgICAgICAgLy8gUmVhZCB0d28gY2hhcmFjdGVycyBhdCBhIHRpbWVcbiAgICAgICAgdmFyIHN0YXJ0ID0gcmVzdWx0Lmxlbmd0aCgpO1xuICAgICAgICB3aGlsZSAoY291bnQgPiAxKSB7XG4gICAgICAgICAgICBpZiAoYml0cy5hdmFpbGFibGUoKSA8IDExKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBuZXh0VHdvQ2hhcnNCaXRzID0gYml0cy5yZWFkQml0cygxMSk7XG4gICAgICAgICAgICByZXN1bHQuYXBwZW5kKERlY29kZWRCaXRTdHJlYW1QYXJzZXIudG9BbHBoYU51bWVyaWNDaGFyKE1hdGguZmxvb3IobmV4dFR3b0NoYXJzQml0cyAvIDQ1KSkpO1xuICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChEZWNvZGVkQml0U3RyZWFtUGFyc2VyLnRvQWxwaGFOdW1lcmljQ2hhcihuZXh0VHdvQ2hhcnNCaXRzICUgNDUpKTtcbiAgICAgICAgICAgIGNvdW50IC09IDI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvdW50ID09PSAxKSB7XG4gICAgICAgICAgICAvLyBzcGVjaWFsIGNhc2U6IG9uZSBjaGFyYWN0ZXIgbGVmdFxuICAgICAgICAgICAgaWYgKGJpdHMuYXZhaWxhYmxlKCkgPCA2KSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoRGVjb2RlZEJpdFN0cmVhbVBhcnNlci50b0FscGhhTnVtZXJpY0NoYXIoYml0cy5yZWFkQml0cyg2KSkpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFNlZSBzZWN0aW9uIDYuNC44LjEsIDYuNC44LjJcbiAgICAgICAgaWYgKGZjMUluRWZmZWN0KSB7XG4gICAgICAgICAgICAvLyBXZSBuZWVkIHRvIG1hc3NhZ2UgdGhlIHJlc3VsdCBhIGJpdCBpZiBpbiBhbiBGTkMxIG1vZGU6XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCByZXN1bHQubGVuZ3RoKCk7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuY2hhckF0KGkpID09PSAnJScpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPCByZXN1bHQubGVuZ3RoKCkgLSAxICYmIHJlc3VsdC5jaGFyQXQoaSArIDEpID09PSAnJScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICUlIGlzIHJlbmRlcmVkIGFzICVcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5kZWxldGVDaGFyQXQoaSArIDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW4gYWxwaGEgbW9kZSwgJSBzaG91bGQgYmUgY29udmVydGVkIHRvIEZOQzEgc2VwYXJhdG9yIDB4MURcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zZXRDaGFyQXQoaSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDFEKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuZGVjb2RlTnVtZXJpY1NlZ21lbnQgPSBmdW5jdGlvbiAoYml0cywgcmVzdWx0LCBjb3VudCAvKmludCovKSB7XG4gICAgICAgIC8vIFJlYWQgdGhyZWUgZGlnaXRzIGF0IGEgdGltZVxuICAgICAgICB3aGlsZSAoY291bnQgPj0gMykge1xuICAgICAgICAgICAgLy8gRWFjaCAxMCBiaXRzIGVuY29kZXMgdGhyZWUgZGlnaXRzXG4gICAgICAgICAgICBpZiAoYml0cy5hdmFpbGFibGUoKSA8IDEwKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciB0aHJlZURpZ2l0c0JpdHMgPSBiaXRzLnJlYWRCaXRzKDEwKTtcbiAgICAgICAgICAgIGlmICh0aHJlZURpZ2l0c0JpdHMgPj0gMTAwMCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQuYXBwZW5kKERlY29kZWRCaXRTdHJlYW1QYXJzZXIudG9BbHBoYU51bWVyaWNDaGFyKE1hdGguZmxvb3IodGhyZWVEaWdpdHNCaXRzIC8gMTAwKSkpO1xuICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChEZWNvZGVkQml0U3RyZWFtUGFyc2VyLnRvQWxwaGFOdW1lcmljQ2hhcihNYXRoLmZsb29yKHRocmVlRGlnaXRzQml0cyAvIDEwKSAlIDEwKSk7XG4gICAgICAgICAgICByZXN1bHQuYXBwZW5kKERlY29kZWRCaXRTdHJlYW1QYXJzZXIudG9BbHBoYU51bWVyaWNDaGFyKHRocmVlRGlnaXRzQml0cyAlIDEwKSk7XG4gICAgICAgICAgICBjb3VudCAtPSAzO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb3VudCA9PT0gMikge1xuICAgICAgICAgICAgLy8gVHdvIGRpZ2l0cyBsZWZ0IG92ZXIgdG8gcmVhZCwgZW5jb2RlZCBpbiA3IGJpdHNcbiAgICAgICAgICAgIGlmIChiaXRzLmF2YWlsYWJsZSgpIDwgNykge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgdHdvRGlnaXRzQml0cyA9IGJpdHMucmVhZEJpdHMoNyk7XG4gICAgICAgICAgICBpZiAodHdvRGlnaXRzQml0cyA+PSAxMDApIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChEZWNvZGVkQml0U3RyZWFtUGFyc2VyLnRvQWxwaGFOdW1lcmljQ2hhcihNYXRoLmZsb29yKHR3b0RpZ2l0c0JpdHMgLyAxMCkpKTtcbiAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoRGVjb2RlZEJpdFN0cmVhbVBhcnNlci50b0FscGhhTnVtZXJpY0NoYXIodHdvRGlnaXRzQml0cyAlIDEwKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY291bnQgPT09IDEpIHtcbiAgICAgICAgICAgIC8vIE9uZSBkaWdpdCBsZWZ0IG92ZXIgdG8gcmVhZFxuICAgICAgICAgICAgaWYgKGJpdHMuYXZhaWxhYmxlKCkgPCA0KSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBkaWdpdEJpdHMgPSBiaXRzLnJlYWRCaXRzKDQpO1xuICAgICAgICAgICAgaWYgKGRpZ2l0Qml0cyA+PSAxMCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQuYXBwZW5kKERlY29kZWRCaXRTdHJlYW1QYXJzZXIudG9BbHBoYU51bWVyaWNDaGFyKGRpZ2l0Qml0cykpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLnBhcnNlRUNJVmFsdWUgPSBmdW5jdGlvbiAoYml0cykge1xuICAgICAgICB2YXIgZmlyc3RCeXRlID0gYml0cy5yZWFkQml0cyg4KTtcbiAgICAgICAgaWYgKChmaXJzdEJ5dGUgJiAweDgwKSA9PT0gMCkge1xuICAgICAgICAgICAgLy8ganVzdCBvbmUgYnl0ZVxuICAgICAgICAgICAgcmV0dXJuIGZpcnN0Qnl0ZSAmIDB4N0Y7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKChmaXJzdEJ5dGUgJiAweEMwKSA9PT0gMHg4MCkge1xuICAgICAgICAgICAgLy8gdHdvIGJ5dGVzXG4gICAgICAgICAgICB2YXIgc2Vjb25kQnl0ZSA9IGJpdHMucmVhZEJpdHMoOCk7XG4gICAgICAgICAgICByZXR1cm4gKCgoZmlyc3RCeXRlICYgMHgzRikgPDwgOCkgJiAweEZGRkZGRkZGKSB8IHNlY29uZEJ5dGU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKChmaXJzdEJ5dGUgJiAweEUwKSA9PT0gMHhDMCkge1xuICAgICAgICAgICAgLy8gdGhyZWUgYnl0ZXNcbiAgICAgICAgICAgIHZhciBzZWNvbmRUaGlyZEJ5dGVzID0gYml0cy5yZWFkQml0cygxNik7XG4gICAgICAgICAgICByZXR1cm4gKCgoZmlyc3RCeXRlICYgMHgxRikgPDwgMTYpICYgMHhGRkZGRkZGRikgfCBzZWNvbmRUaGlyZEJ5dGVzO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBTZWUgSVNPIDE4MDA0OjIwMDYsIDYuNC40IFRhYmxlIDVcbiAgICAgKi9cbiAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLkFMUEhBTlVNRVJJQ19DSEFSUyA9ICcwMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVogJCUqKy0uLzonO1xuICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuR0IyMzEyX1NVQlNFVCA9IDE7XG4gICAgcmV0dXJuIERlY29kZWRCaXRTdHJlYW1QYXJzZXI7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gRGVjb2RlZEJpdFN0cmVhbVBhcnNlcjtcbi8vIGZ1bmN0aW9uIFVpbnQ4QXJyYXlUb1N0cmluZyhhOiBVaW50OEFycmF5KTogc3RyaW5nIHtcbi8vICAgICBjb25zdCBDSFVOS19TWiA9IDB4ODAwMDtcbi8vICAgICBjb25zdCBjID0gbmV3IFN0cmluZ0J1aWxkZXIoKTtcbi8vICAgICBmb3IgKGxldCBpID0gMCwgbGVuZ3RoID0gYS5sZW5ndGg7IGkgPCBsZW5ndGg7IGkgKz0gQ0hVTktfU1opIHtcbi8vICAgICAgICAgYy5hcHBlbmQoU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLCBhLnN1YmFycmF5KGksIGkgKyBDSFVOS19TWikpKTtcbi8vICAgICB9XG4vLyAgICAgcmV0dXJuIGMudG9TdHJpbmcoKTtcbi8vIH1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURlY29kZWRCaXRTdHJlYW1QYXJzZXIuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IDIwMTMgWlhpbmcgYXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qKlxuICogTWV0YS1kYXRhIGNvbnRhaW5lciBmb3IgUVIgQ29kZSBkZWNvZGluZy4gSW5zdGFuY2VzIG9mIHRoaXMgY2xhc3MgbWF5IGJlIHVzZWQgdG8gY29udmV5IGluZm9ybWF0aW9uIGJhY2sgdG8gdGhlXG4gKiBkZWNvZGluZyBjYWxsZXIuIENhbGxlcnMgYXJlIGV4cGVjdGVkIHRvIHByb2Nlc3MgdGhpcy5cbiAqXG4gKiBAc2VlIGNvbS5nb29nbGUuenhpbmcuY29tbW9uLkRlY29kZXJSZXN1bHQjZ2V0T3RoZXIoKVxuICovXG52YXIgUVJDb2RlRGVjb2Rlck1ldGFEYXRhID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFFSQ29kZURlY29kZXJNZXRhRGF0YShtaXJyb3JlZCkge1xuICAgICAgICB0aGlzLm1pcnJvcmVkID0gbWlycm9yZWQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgUVIgQ29kZSB3YXMgbWlycm9yZWQuXG4gICAgICovXG4gICAgUVJDb2RlRGVjb2Rlck1ldGFEYXRhLnByb3RvdHlwZS5pc01pcnJvcmVkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5taXJyb3JlZDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEFwcGx5IHRoZSByZXN1bHQgcG9pbnRzJyBvcmRlciBjb3JyZWN0aW9uIGR1ZSB0byBtaXJyb3JpbmcuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcG9pbnRzIEFycmF5IG9mIHBvaW50cyB0byBhcHBseSBtaXJyb3IgY29ycmVjdGlvbiB0by5cbiAgICAgKi9cbiAgICBRUkNvZGVEZWNvZGVyTWV0YURhdGEucHJvdG90eXBlLmFwcGx5TWlycm9yZWRDb3JyZWN0aW9uID0gZnVuY3Rpb24gKHBvaW50cykge1xuICAgICAgICBpZiAoIXRoaXMubWlycm9yZWQgfHwgcG9pbnRzID09PSBudWxsIHx8IHBvaW50cy5sZW5ndGggPCAzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGJvdHRvbUxlZnQgPSBwb2ludHNbMF07XG4gICAgICAgIHBvaW50c1swXSA9IHBvaW50c1syXTtcbiAgICAgICAgcG9pbnRzWzJdID0gYm90dG9tTGVmdDtcbiAgICAgICAgLy8gTm8gbmVlZCB0byAnZml4JyB0b3AtbGVmdCBhbmQgYWxpZ25tZW50IHBhdHRlcm4uXG4gICAgfTtcbiAgICByZXR1cm4gUVJDb2RlRGVjb2Rlck1ldGFEYXRhO1xufSgpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IFFSQ29kZURlY29kZXJNZXRhRGF0YTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVFSQ29kZURlY29kZXJNZXRhRGF0YS5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8qXG4gKiBDb3B5cmlnaHQgMjAwNyBaWGluZyBhdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIF9fdmFsdWVzID0gKHRoaXMgJiYgdGhpcy5fX3ZhbHVlcykgfHwgZnVuY3Rpb24obykge1xuICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xuICAgICAgICB9XG4gICAgfTtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLypuYW1lc3BhY2UgY29tLmdvb2dsZS56eGluZy5xcmNvZGUuZGVjb2RlciB7Ki9cbnZhciBDaGVja3N1bUV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4uLy4uL0NoZWNrc3VtRXhjZXB0aW9uXCIpO1xudmFyIEJpdE1hdHJpeF8xID0gcmVxdWlyZShcIi4uLy4uL2NvbW1vbi9CaXRNYXRyaXhcIik7XG52YXIgR2VuZXJpY0dGXzEgPSByZXF1aXJlKFwiLi4vLi4vY29tbW9uL3JlZWRzb2xvbW9uL0dlbmVyaWNHRlwiKTtcbnZhciBSZWVkU29sb21vbkRlY29kZXJfMSA9IHJlcXVpcmUoXCIuLi8uLi9jb21tb24vcmVlZHNvbG9tb24vUmVlZFNvbG9tb25EZWNvZGVyXCIpO1xudmFyIEJpdE1hdHJpeFBhcnNlcl8xID0gcmVxdWlyZShcIi4vQml0TWF0cml4UGFyc2VyXCIpO1xudmFyIERhdGFCbG9ja18xID0gcmVxdWlyZShcIi4vRGF0YUJsb2NrXCIpO1xudmFyIERlY29kZWRCaXRTdHJlYW1QYXJzZXJfMSA9IHJlcXVpcmUoXCIuL0RlY29kZWRCaXRTdHJlYW1QYXJzZXJcIik7XG52YXIgUVJDb2RlRGVjb2Rlck1ldGFEYXRhXzEgPSByZXF1aXJlKFwiLi9RUkNvZGVEZWNvZGVyTWV0YURhdGFcIik7XG4vKmltcG9ydCBqYXZhLnV0aWwuTWFwOyovXG4vKipcbiAqIDxwPlRoZSBtYWluIGNsYXNzIHdoaWNoIGltcGxlbWVudHMgUVIgQ29kZSBkZWNvZGluZyAtLSBhcyBvcHBvc2VkIHRvIGxvY2F0aW5nIGFuZCBleHRyYWN0aW5nXG4gKiB0aGUgUVIgQ29kZSBmcm9tIGFuIGltYWdlLjwvcD5cbiAqXG4gKiBAYXV0aG9yIFNlYW4gT3dlblxuICovXG52YXIgRGVjb2RlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBEZWNvZGVyKCkge1xuICAgICAgICB0aGlzLnJzRGVjb2RlciA9IG5ldyBSZWVkU29sb21vbkRlY29kZXJfMS5kZWZhdWx0KEdlbmVyaWNHRl8xLmRlZmF1bHQuUVJfQ09ERV9GSUVMRF8yNTYpO1xuICAgIH1cbiAgICAvLyBwdWJsaWMgZGVjb2RlKGltYWdlOiBib29sZWFuW11bXSk6IERlY29kZXJSZXN1bHQgLyp0aHJvd3MgQ2hlY2tzdW1FeGNlcHRpb24sIEZvcm1hdEV4Y2VwdGlvbiovIHtcbiAgICAvLyAgIHJldHVybiBkZWNvZGUoaW1hZ2UsIG51bGwpXG4gICAgLy8gfVxuICAgIC8qKlxuICAgICAqIDxwPkNvbnZlbmllbmNlIG1ldGhvZCB0aGF0IGNhbiBkZWNvZGUgYSBRUiBDb2RlIHJlcHJlc2VudGVkIGFzIGEgMkQgYXJyYXkgb2YgYm9vbGVhbnMuXG4gICAgICogXCJ0cnVlXCIgaXMgdGFrZW4gdG8gbWVhbiBhIGJsYWNrIG1vZHVsZS48L3A+XG4gICAgICpcbiAgICAgKiBAcGFyYW0gaW1hZ2UgYm9vbGVhbnMgcmVwcmVzZW50aW5nIHdoaXRlL2JsYWNrIFFSIENvZGUgbW9kdWxlc1xuICAgICAqIEBwYXJhbSBoaW50cyBkZWNvZGluZyBoaW50cyB0aGF0IHNob3VsZCBiZSB1c2VkIHRvIGluZmx1ZW5jZSBkZWNvZGluZ1xuICAgICAqIEByZXR1cm4gdGV4dCBhbmQgYnl0ZXMgZW5jb2RlZCB3aXRoaW4gdGhlIFFSIENvZGVcbiAgICAgKiBAdGhyb3dzIEZvcm1hdEV4Y2VwdGlvbiBpZiB0aGUgUVIgQ29kZSBjYW5ub3QgYmUgZGVjb2RlZFxuICAgICAqIEB0aHJvd3MgQ2hlY2tzdW1FeGNlcHRpb24gaWYgZXJyb3IgY29ycmVjdGlvbiBmYWlsc1xuICAgICAqL1xuICAgIERlY29kZXIucHJvdG90eXBlLmRlY29kZUJvb2xlYW5BcnJheSA9IGZ1bmN0aW9uIChpbWFnZSwgaGludHMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVjb2RlQml0TWF0cml4KEJpdE1hdHJpeF8xLmRlZmF1bHQucGFyc2VGcm9tQm9vbGVhbkFycmF5KGltYWdlKSwgaGludHMpO1xuICAgIH07XG4gICAgLy8gcHVibGljIGRlY29kZUJpdE1hdHJpeChiaXRzOiBCaXRNYXRyaXgpOiBEZWNvZGVyUmVzdWx0IC8qdGhyb3dzIENoZWNrc3VtRXhjZXB0aW9uLCBGb3JtYXRFeGNlcHRpb24qLyB7XG4gICAgLy8gICByZXR1cm4gZGVjb2RlKGJpdHMsIG51bGwpXG4gICAgLy8gfVxuICAgIC8qKlxuICAgICAqIDxwPkRlY29kZXMgYSBRUiBDb2RlIHJlcHJlc2VudGVkIGFzIGEge0BsaW5rIEJpdE1hdHJpeH0uIEEgMSBvciBcInRydWVcIiBpcyB0YWtlbiB0byBtZWFuIGEgYmxhY2sgbW9kdWxlLjwvcD5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBiaXRzIGJvb2xlYW5zIHJlcHJlc2VudGluZyB3aGl0ZS9ibGFjayBRUiBDb2RlIG1vZHVsZXNcbiAgICAgKiBAcGFyYW0gaGludHMgZGVjb2RpbmcgaGludHMgdGhhdCBzaG91bGQgYmUgdXNlZCB0byBpbmZsdWVuY2UgZGVjb2RpbmdcbiAgICAgKiBAcmV0dXJuIHRleHQgYW5kIGJ5dGVzIGVuY29kZWQgd2l0aGluIHRoZSBRUiBDb2RlXG4gICAgICogQHRocm93cyBGb3JtYXRFeGNlcHRpb24gaWYgdGhlIFFSIENvZGUgY2Fubm90IGJlIGRlY29kZWRcbiAgICAgKiBAdGhyb3dzIENoZWNrc3VtRXhjZXB0aW9uIGlmIGVycm9yIGNvcnJlY3Rpb24gZmFpbHNcbiAgICAgKi9cbiAgICBEZWNvZGVyLnByb3RvdHlwZS5kZWNvZGVCaXRNYXRyaXggPSBmdW5jdGlvbiAoYml0cywgaGludHMpIHtcbiAgICAgICAgLy8gQ29uc3RydWN0IGEgcGFyc2VyIGFuZCByZWFkIHZlcnNpb24sIGVycm9yLWNvcnJlY3Rpb24gbGV2ZWxcbiAgICAgICAgdmFyIHBhcnNlciA9IG5ldyBCaXRNYXRyaXhQYXJzZXJfMS5kZWZhdWx0KGJpdHMpO1xuICAgICAgICB2YXIgZXggPSBudWxsO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVjb2RlQml0TWF0cml4UGFyc2VyKHBhcnNlciwgaGludHMpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlIC8qOiBGb3JtYXRFeGNlcHRpb24sIENoZWNrc3VtRXhjZXB0aW9uKi8pIHtcbiAgICAgICAgICAgIGV4ID0gZTtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gUmV2ZXJ0IHRoZSBiaXQgbWF0cml4XG4gICAgICAgICAgICBwYXJzZXIucmVtYXNrKCk7XG4gICAgICAgICAgICAvLyBXaWxsIGJlIGF0dGVtcHRpbmcgYSBtaXJyb3JlZCByZWFkaW5nIG9mIHRoZSB2ZXJzaW9uIGFuZCBmb3JtYXQgaW5mby5cbiAgICAgICAgICAgIHBhcnNlci5zZXRNaXJyb3IodHJ1ZSk7XG4gICAgICAgICAgICAvLyBQcmVlbXB0aXZlbHkgcmVhZCB0aGUgdmVyc2lvbi5cbiAgICAgICAgICAgIHBhcnNlci5yZWFkVmVyc2lvbigpO1xuICAgICAgICAgICAgLy8gUHJlZW1wdGl2ZWx5IHJlYWQgdGhlIGZvcm1hdCBpbmZvcm1hdGlvbi5cbiAgICAgICAgICAgIHBhcnNlci5yZWFkRm9ybWF0SW5mb3JtYXRpb24oKTtcbiAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgKiBTaW5jZSB3ZSdyZSBoZXJlLCB0aGlzIG1lYW5zIHdlIGhhdmUgc3VjY2Vzc2Z1bGx5IGRldGVjdGVkIHNvbWUga2luZFxuICAgICAgICAgICAgICogb2YgdmVyc2lvbiBhbmQgZm9ybWF0IGluZm9ybWF0aW9uIHdoZW4gbWlycm9yZWQuIFRoaXMgaXMgYSBnb29kIHNpZ24sXG4gICAgICAgICAgICAgKiB0aGF0IHRoZSBRUiBjb2RlIG1heSBiZSBtaXJyb3JlZCwgYW5kIHdlIHNob3VsZCB0cnkgb25jZSBtb3JlIHdpdGggYVxuICAgICAgICAgICAgICogbWlycm9yZWQgY29udGVudC5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgLy8gUHJlcGFyZSBmb3IgYSBtaXJyb3JlZCByZWFkaW5nLlxuICAgICAgICAgICAgcGFyc2VyLm1pcnJvcigpO1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuZGVjb2RlQml0TWF0cml4UGFyc2VyKHBhcnNlciwgaGludHMpO1xuICAgICAgICAgICAgLy8gU3VjY2VzcyEgTm90aWZ5IHRoZSBjYWxsZXIgdGhhdCB0aGUgY29kZSB3YXMgbWlycm9yZWQuXG4gICAgICAgICAgICByZXN1bHQuc2V0T3RoZXIobmV3IFFSQ29kZURlY29kZXJNZXRhRGF0YV8xLmRlZmF1bHQodHJ1ZSkpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSAvKkZvcm1hdEV4Y2VwdGlvbiB8IENoZWNrc3VtRXhjZXB0aW9uKi8pIHtcbiAgICAgICAgICAgIC8vIFRocm93IHRoZSBleGNlcHRpb24gZnJvbSB0aGUgb3JpZ2luYWwgcmVhZGluZ1xuICAgICAgICAgICAgaWYgKGV4ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBEZWNvZGVyLnByb3RvdHlwZS5kZWNvZGVCaXRNYXRyaXhQYXJzZXIgPSBmdW5jdGlvbiAocGFyc2VyLCBoaW50cykge1xuICAgICAgICB2YXIgZV8xLCBfYSwgZV8yLCBfYjtcbiAgICAgICAgdmFyIHZlcnNpb24gPSBwYXJzZXIucmVhZFZlcnNpb24oKTtcbiAgICAgICAgdmFyIGVjTGV2ZWwgPSBwYXJzZXIucmVhZEZvcm1hdEluZm9ybWF0aW9uKCkuZ2V0RXJyb3JDb3JyZWN0aW9uTGV2ZWwoKTtcbiAgICAgICAgLy8gUmVhZCBjb2Rld29yZHNcbiAgICAgICAgdmFyIGNvZGV3b3JkcyA9IHBhcnNlci5yZWFkQ29kZXdvcmRzKCk7XG4gICAgICAgIC8vIFNlcGFyYXRlIGludG8gZGF0YSBibG9ja3NcbiAgICAgICAgdmFyIGRhdGFCbG9ja3MgPSBEYXRhQmxvY2tfMS5kZWZhdWx0LmdldERhdGFCbG9ja3MoY29kZXdvcmRzLCB2ZXJzaW9uLCBlY0xldmVsKTtcbiAgICAgICAgLy8gQ291bnQgdG90YWwgbnVtYmVyIG9mIGRhdGEgYnl0ZXNcbiAgICAgICAgdmFyIHRvdGFsQnl0ZXMgPSAwO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yICh2YXIgZGF0YUJsb2Nrc18xID0gX192YWx1ZXMoZGF0YUJsb2NrcyksIGRhdGFCbG9ja3NfMV8xID0gZGF0YUJsb2Nrc18xLm5leHQoKTsgIWRhdGFCbG9ja3NfMV8xLmRvbmU7IGRhdGFCbG9ja3NfMV8xID0gZGF0YUJsb2Nrc18xLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciBkYXRhQmxvY2sgPSBkYXRhQmxvY2tzXzFfMS52YWx1ZTtcbiAgICAgICAgICAgICAgICB0b3RhbEJ5dGVzICs9IGRhdGFCbG9jay5nZXROdW1EYXRhQ29kZXdvcmRzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChkYXRhQmxvY2tzXzFfMSAmJiAhZGF0YUJsb2Nrc18xXzEuZG9uZSAmJiAoX2EgPSBkYXRhQmxvY2tzXzEucmV0dXJuKSkgX2EuY2FsbChkYXRhQmxvY2tzXzEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfVxuICAgICAgICB9XG4gICAgICAgIHZhciByZXN1bHRCeXRlcyA9IG5ldyBVaW50OEFycmF5KHRvdGFsQnl0ZXMpO1xuICAgICAgICB2YXIgcmVzdWx0T2Zmc2V0ID0gMDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIEVycm9yLWNvcnJlY3QgYW5kIGNvcHkgZGF0YSBibG9ja3MgdG9nZXRoZXIgaW50byBhIHN0cmVhbSBvZiBieXRlc1xuICAgICAgICAgICAgZm9yICh2YXIgZGF0YUJsb2Nrc18yID0gX192YWx1ZXMoZGF0YUJsb2NrcyksIGRhdGFCbG9ja3NfMl8xID0gZGF0YUJsb2Nrc18yLm5leHQoKTsgIWRhdGFCbG9ja3NfMl8xLmRvbmU7IGRhdGFCbG9ja3NfMl8xID0gZGF0YUJsb2Nrc18yLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciBkYXRhQmxvY2sgPSBkYXRhQmxvY2tzXzJfMS52YWx1ZTtcbiAgICAgICAgICAgICAgICB2YXIgY29kZXdvcmRCeXRlcyA9IGRhdGFCbG9jay5nZXRDb2Rld29yZHMoKTtcbiAgICAgICAgICAgICAgICB2YXIgbnVtRGF0YUNvZGV3b3JkcyA9IGRhdGFCbG9jay5nZXROdW1EYXRhQ29kZXdvcmRzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jb3JyZWN0RXJyb3JzKGNvZGV3b3JkQnl0ZXMsIG51bURhdGFDb2Rld29yZHMpO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtRGF0YUNvZGV3b3JkczsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdEJ5dGVzW3Jlc3VsdE9mZnNldCsrXSA9IGNvZGV3b3JkQnl0ZXNbaV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlXzJfMSkgeyBlXzIgPSB7IGVycm9yOiBlXzJfMSB9OyB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoZGF0YUJsb2Nrc18yXzEgJiYgIWRhdGFCbG9ja3NfMl8xLmRvbmUgJiYgKF9iID0gZGF0YUJsb2Nrc18yLnJldHVybikpIF9iLmNhbGwoZGF0YUJsb2Nrc18yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8yKSB0aHJvdyBlXzIuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgICAgICAvLyBEZWNvZGUgdGhlIGNvbnRlbnRzIG9mIHRoYXQgc3RyZWFtIG9mIGJ5dGVzXG4gICAgICAgIHJldHVybiBEZWNvZGVkQml0U3RyZWFtUGFyc2VyXzEuZGVmYXVsdC5kZWNvZGUocmVzdWx0Qnl0ZXMsIHZlcnNpb24sIGVjTGV2ZWwsIGhpbnRzKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIDxwPkdpdmVuIGRhdGEgYW5kIGVycm9yLWNvcnJlY3Rpb24gY29kZXdvcmRzIHJlY2VpdmVkLCBwb3NzaWJseSBjb3JydXB0ZWQgYnkgZXJyb3JzLCBhdHRlbXB0cyB0b1xuICAgICAqIGNvcnJlY3QgdGhlIGVycm9ycyBpbi1wbGFjZSB1c2luZyBSZWVkLVNvbG9tb24gZXJyb3IgY29ycmVjdGlvbi48L3A+XG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29kZXdvcmRCeXRlcyBkYXRhIGFuZCBlcnJvciBjb3JyZWN0aW9uIGNvZGV3b3Jkc1xuICAgICAqIEBwYXJhbSBudW1EYXRhQ29kZXdvcmRzIG51bWJlciBvZiBjb2Rld29yZHMgdGhhdCBhcmUgZGF0YSBieXRlc1xuICAgICAqIEB0aHJvd3MgQ2hlY2tzdW1FeGNlcHRpb24gaWYgZXJyb3IgY29ycmVjdGlvbiBmYWlsc1xuICAgICAqL1xuICAgIERlY29kZXIucHJvdG90eXBlLmNvcnJlY3RFcnJvcnMgPSBmdW5jdGlvbiAoY29kZXdvcmRCeXRlcywgbnVtRGF0YUNvZGV3b3JkcyAvKmludCovKSB7XG4gICAgICAgIC8vIGNvbnN0IG51bUNvZGV3b3JkcyA9IGNvZGV3b3JkQnl0ZXMubGVuZ3RoO1xuICAgICAgICAvLyBGaXJzdCByZWFkIGludG8gYW4gYXJyYXkgb2YgaW50c1xuICAgICAgICB2YXIgY29kZXdvcmRzSW50cyA9IG5ldyBJbnQzMkFycmF5KGNvZGV3b3JkQnl0ZXMpO1xuICAgICAgICAvLyBUWVBFU0NSSVBUUE9SVDogbm90IHJlYWx5IG5lY2Vzc2FyeSB0byB0cmFuc2Zvcm0gdG8gaW50cz8gY291bGQgcmVkZXNpZ24gZXZlcnl0aGluZyB0byB3b3JrIHdpdGggdW5zaWduZWQgYnl0ZXM/XG4gICAgICAgIC8vIGNvbnN0IGNvZGV3b3Jkc0ludHMgPSBuZXcgSW50MzJBcnJheShudW1Db2Rld29yZHMpXG4gICAgICAgIC8vIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtQ29kZXdvcmRzOyBpKyspIHtcbiAgICAgICAgLy8gICBjb2Rld29yZHNJbnRzW2ldID0gY29kZXdvcmRCeXRlc1tpXSAmIDB4RkZcbiAgICAgICAgLy8gfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5yc0RlY29kZXIuZGVjb2RlKGNvZGV3b3Jkc0ludHMsIGNvZGV3b3JkQnl0ZXMubGVuZ3RoIC0gbnVtRGF0YUNvZGV3b3Jkcyk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGlnbm9yZWQgLyo6IFJlZWRTb2xvbW9uRXhjZXB0aW9uKi8pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBDaGVja3N1bUV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBDb3B5IGJhY2sgaW50byBhcnJheSBvZiBieXRlcyAtLSBvbmx5IG5lZWQgdG8gd29ycnkgYWJvdXQgdGhlIGJ5dGVzIHRoYXQgd2VyZSBkYXRhXG4gICAgICAgIC8vIFdlIGRvbid0IGNhcmUgYWJvdXQgZXJyb3JzIGluIHRoZSBlcnJvci1jb3JyZWN0aW9uIGNvZGV3b3Jkc1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bURhdGFDb2Rld29yZHM7IGkrKykge1xuICAgICAgICAgICAgY29kZXdvcmRCeXRlc1tpXSA9IC8qKGJ5dGUpICovIGNvZGV3b3Jkc0ludHNbaV07XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBEZWNvZGVyO1xufSgpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IERlY29kZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1EZWNvZGVyLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuLypcbiAqIENvcHlyaWdodCAyMDA3IFpYaW5nIGF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qbmFtZXNwYWNlIGNvbS5nb29nbGUuenhpbmcucXJjb2RlLmRldGVjdG9yIHsqL1xudmFyIFJlc3VsdFBvaW50XzEgPSByZXF1aXJlKFwiLi4vLi4vUmVzdWx0UG9pbnRcIik7XG4vKipcbiAqIDxwPkVuY2Fwc3VsYXRlcyBhbiBhbGlnbm1lbnQgcGF0dGVybiwgd2hpY2ggYXJlIHRoZSBzbWFsbGVyIHNxdWFyZSBwYXR0ZXJucyBmb3VuZCBpblxuICogYWxsIGJ1dCB0aGUgc2ltcGxlc3QgUVIgQ29kZXMuPC9wPlxuICpcbiAqIEBhdXRob3IgU2VhbiBPd2VuXG4gKi9cbnZhciBBbGlnbm1lbnRQYXR0ZXJuID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhBbGlnbm1lbnRQYXR0ZXJuLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIEFsaWdubWVudFBhdHRlcm4ocG9zWCAvKmZsb2F0Ki8sIHBvc1kgLypmbG9hdCovLCBlc3RpbWF0ZWRNb2R1bGVTaXplIC8qZmxvYXQqLykge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBwb3NYLCBwb3NZKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5lc3RpbWF0ZWRNb2R1bGVTaXplID0gZXN0aW1hdGVkTW9kdWxlU2l6ZTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiA8cD5EZXRlcm1pbmVzIGlmIHRoaXMgYWxpZ25tZW50IHBhdHRlcm4gXCJhYm91dCBlcXVhbHNcIiBhbiBhbGlnbm1lbnQgcGF0dGVybiBhdCB0aGUgc3RhdGVkXG4gICAgICogcG9zaXRpb24gYW5kIHNpemUgLS0gbWVhbmluZywgaXQgaXMgYXQgbmVhcmx5IHRoZSBzYW1lIGNlbnRlciB3aXRoIG5lYXJseSB0aGUgc2FtZSBzaXplLjwvcD5cbiAgICAgKi9cbiAgICBBbGlnbm1lbnRQYXR0ZXJuLnByb3RvdHlwZS5hYm91dEVxdWFscyA9IGZ1bmN0aW9uIChtb2R1bGVTaXplIC8qZmxvYXQqLywgaSAvKmZsb2F0Ki8sIGogLypmbG9hdCovKSB7XG4gICAgICAgIGlmIChNYXRoLmFicyhpIC0gdGhpcy5nZXRZKCkpIDw9IG1vZHVsZVNpemUgJiYgTWF0aC5hYnMoaiAtIHRoaXMuZ2V0WCgpKSA8PSBtb2R1bGVTaXplKSB7XG4gICAgICAgICAgICB2YXIgbW9kdWxlU2l6ZURpZmYgPSBNYXRoLmFicyhtb2R1bGVTaXplIC0gdGhpcy5lc3RpbWF0ZWRNb2R1bGVTaXplKTtcbiAgICAgICAgICAgIHJldHVybiBtb2R1bGVTaXplRGlmZiA8PSAxLjAgfHwgbW9kdWxlU2l6ZURpZmYgPD0gdGhpcy5lc3RpbWF0ZWRNb2R1bGVTaXplO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIENvbWJpbmVzIHRoaXMgb2JqZWN0J3MgY3VycmVudCBlc3RpbWF0ZSBvZiBhIGZpbmRlciBwYXR0ZXJuIHBvc2l0aW9uIGFuZCBtb2R1bGUgc2l6ZVxuICAgICAqIHdpdGggYSBuZXcgZXN0aW1hdGUuIEl0IHJldHVybnMgYSBuZXcge0Bjb2RlIEZpbmRlclBhdHRlcm59IGNvbnRhaW5pbmcgYW4gYXZlcmFnZSBvZiB0aGUgdHdvLlxuICAgICAqL1xuICAgIEFsaWdubWVudFBhdHRlcm4ucHJvdG90eXBlLmNvbWJpbmVFc3RpbWF0ZSA9IGZ1bmN0aW9uIChpIC8qZmxvYXQqLywgaiAvKmZsb2F0Ki8sIG5ld01vZHVsZVNpemUgLypmbG9hdCovKSB7XG4gICAgICAgIHZhciBjb21iaW5lZFggPSAodGhpcy5nZXRYKCkgKyBqKSAvIDIuMDtcbiAgICAgICAgdmFyIGNvbWJpbmVkWSA9ICh0aGlzLmdldFkoKSArIGkpIC8gMi4wO1xuICAgICAgICB2YXIgY29tYmluZWRNb2R1bGVTaXplID0gKHRoaXMuZXN0aW1hdGVkTW9kdWxlU2l6ZSArIG5ld01vZHVsZVNpemUpIC8gMi4wO1xuICAgICAgICByZXR1cm4gbmV3IEFsaWdubWVudFBhdHRlcm4oY29tYmluZWRYLCBjb21iaW5lZFksIGNvbWJpbmVkTW9kdWxlU2l6ZSk7XG4gICAgfTtcbiAgICByZXR1cm4gQWxpZ25tZW50UGF0dGVybjtcbn0oUmVzdWx0UG9pbnRfMS5kZWZhdWx0KSk7XG5leHBvcnRzLmRlZmF1bHQgPSBBbGlnbm1lbnRQYXR0ZXJuO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QWxpZ25tZW50UGF0dGVybi5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8qXG4gKiBDb3B5cmlnaHQgMjAwNyBaWGluZyBhdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIF9fdmFsdWVzID0gKHRoaXMgJiYgdGhpcy5fX3ZhbHVlcykgfHwgZnVuY3Rpb24obykge1xuICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xuICAgICAgICB9XG4gICAgfTtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIEFsaWdubWVudFBhdHRlcm5fMSA9IHJlcXVpcmUoXCIuL0FsaWdubWVudFBhdHRlcm5cIik7XG52YXIgTm90Rm91bmRFeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuLi8uLi9Ob3RGb3VuZEV4Y2VwdGlvblwiKTtcbi8qaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ki9cbi8qaW1wb3J0IGphdmEudXRpbC5MaXN0OyovXG4vKipcbiAqIDxwPlRoaXMgY2xhc3MgYXR0ZW1wdHMgdG8gZmluZCBhbGlnbm1lbnQgcGF0dGVybnMgaW4gYSBRUiBDb2RlLiBBbGlnbm1lbnQgcGF0dGVybnMgbG9vayBsaWtlIGZpbmRlclxuICogcGF0dGVybnMgYnV0IGFyZSBzbWFsbGVyIGFuZCBhcHBlYXIgYXQgcmVndWxhciBpbnRlcnZhbHMgdGhyb3VnaG91dCB0aGUgaW1hZ2UuPC9wPlxuICpcbiAqIDxwPkF0IHRoZSBtb21lbnQgdGhpcyBvbmx5IGxvb2tzIGZvciB0aGUgYm90dG9tLXJpZ2h0IGFsaWdubWVudCBwYXR0ZXJuLjwvcD5cbiAqXG4gKiA8cD5UaGlzIGlzIG1vc3RseSBhIHNpbXBsaWZpZWQgY29weSBvZiB7QGxpbmsgRmluZGVyUGF0dGVybkZpbmRlcn0uIEl0IGlzIGNvcGllZCxcbiAqIHBhc3RlZCBhbmQgc3RyaXBwZWQgZG93biBoZXJlIGZvciBtYXhpbXVtIHBlcmZvcm1hbmNlIGJ1dCBkb2VzIHVuZm9ydHVuYXRlbHkgZHVwbGljYXRlXG4gKiBzb21lIGNvZGUuPC9wPlxuICpcbiAqIDxwPlRoaXMgY2xhc3MgaXMgdGhyZWFkLXNhZmUgYnV0IG5vdCByZWVudHJhbnQuIEVhY2ggdGhyZWFkIG11c3QgYWxsb2NhdGUgaXRzIG93biBvYmplY3QuPC9wPlxuICpcbiAqIEBhdXRob3IgU2VhbiBPd2VuXG4gKi9cbnZhciBBbGlnbm1lbnRQYXR0ZXJuRmluZGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIC8qKlxuICAgICAqIDxwPkNyZWF0ZXMgYSBmaW5kZXIgdGhhdCB3aWxsIGxvb2sgaW4gYSBwb3J0aW9uIG9mIHRoZSB3aG9sZSBpbWFnZS48L3A+XG4gICAgICpcbiAgICAgKiBAcGFyYW0gaW1hZ2UgaW1hZ2UgdG8gc2VhcmNoXG4gICAgICogQHBhcmFtIHN0YXJ0WCBsZWZ0IGNvbHVtbiBmcm9tIHdoaWNoIHRvIHN0YXJ0IHNlYXJjaGluZ1xuICAgICAqIEBwYXJhbSBzdGFydFkgdG9wIHJvdyBmcm9tIHdoaWNoIHRvIHN0YXJ0IHNlYXJjaGluZ1xuICAgICAqIEBwYXJhbSB3aWR0aCB3aWR0aCBvZiByZWdpb24gdG8gc2VhcmNoXG4gICAgICogQHBhcmFtIGhlaWdodCBoZWlnaHQgb2YgcmVnaW9uIHRvIHNlYXJjaFxuICAgICAqIEBwYXJhbSBtb2R1bGVTaXplIGVzdGltYXRlZCBtb2R1bGUgc2l6ZSBzbyBmYXJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBBbGlnbm1lbnRQYXR0ZXJuRmluZGVyKGltYWdlLCBzdGFydFggLyppbnQqLywgc3RhcnRZIC8qaW50Ki8sIHdpZHRoIC8qaW50Ki8sIGhlaWdodCAvKmludCovLCBtb2R1bGVTaXplIC8qZmxvYXQqLywgcmVzdWx0UG9pbnRDYWxsYmFjaykge1xuICAgICAgICB0aGlzLmltYWdlID0gaW1hZ2U7XG4gICAgICAgIHRoaXMuc3RhcnRYID0gc3RhcnRYO1xuICAgICAgICB0aGlzLnN0YXJ0WSA9IHN0YXJ0WTtcbiAgICAgICAgdGhpcy53aWR0aCA9IHdpZHRoO1xuICAgICAgICB0aGlzLmhlaWdodCA9IGhlaWdodDtcbiAgICAgICAgdGhpcy5tb2R1bGVTaXplID0gbW9kdWxlU2l6ZTtcbiAgICAgICAgdGhpcy5yZXN1bHRQb2ludENhbGxiYWNrID0gcmVzdWx0UG9pbnRDYWxsYmFjaztcbiAgICAgICAgdGhpcy5wb3NzaWJsZUNlbnRlcnMgPSBbXTsgLy8gbmV3IEFycmF5PGFueT4oNSkpXG4gICAgICAgIC8vIFRZUEVTQ1JJUFRQT1JUOiBhcnJheSBpbml0aWFsaXphdGlvbiB3aXRob3V0IHNpemUgYXMgdGhlIGxlbmd0aCBpcyBjaGVja2VkIGJlbG93XG4gICAgICAgIHRoaXMuY3Jvc3NDaGVja1N0YXRlQ291bnQgPSBuZXcgSW50MzJBcnJheSgzKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogPHA+VGhpcyBtZXRob2QgYXR0ZW1wdHMgdG8gZmluZCB0aGUgYm90dG9tLXJpZ2h0IGFsaWdubWVudCBwYXR0ZXJuIGluIHRoZSBpbWFnZS4gSXQgaXMgYSBiaXQgbWVzc3kgc2luY2VcbiAgICAgKiBpdCdzIHByZXR0eSBwZXJmb3JtYW5jZS1jcml0aWNhbCBhbmQgc28gaXMgd3JpdHRlbiB0byBiZSBmYXN0IGZvcmVtb3N0LjwvcD5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge0BsaW5rIEFsaWdubWVudFBhdHRlcm59IGlmIGZvdW5kXG4gICAgICogQHRocm93cyBOb3RGb3VuZEV4Y2VwdGlvbiBpZiBub3QgZm91bmRcbiAgICAgKi9cbiAgICBBbGlnbm1lbnRQYXR0ZXJuRmluZGVyLnByb3RvdHlwZS5maW5kID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgc3RhcnRYID0gdGhpcy5zdGFydFg7XG4gICAgICAgIHZhciBoZWlnaHQgPSB0aGlzLmhlaWdodDtcbiAgICAgICAgdmFyIHdpZHRoID0gdGhpcy53aWR0aDtcbiAgICAgICAgdmFyIG1heEogPSBzdGFydFggKyB3aWR0aDtcbiAgICAgICAgdmFyIG1pZGRsZUkgPSB0aGlzLnN0YXJ0WSArIChoZWlnaHQgLyAyKTtcbiAgICAgICAgLy8gV2UgYXJlIGxvb2tpbmcgZm9yIGJsYWNrL3doaXRlL2JsYWNrIG1vZHVsZXMgaW4gMToxOjEgcmF0aW9cbiAgICAgICAgLy8gdGhpcyB0cmFja3MgdGhlIG51bWJlciBvZiBibGFjay93aGl0ZS9ibGFjayBtb2R1bGVzIHNlZW4gc28gZmFyXG4gICAgICAgIHZhciBzdGF0ZUNvdW50ID0gbmV3IEludDMyQXJyYXkoMyk7XG4gICAgICAgIHZhciBpbWFnZSA9IHRoaXMuaW1hZ2U7XG4gICAgICAgIGZvciAodmFyIGlHZW4gPSAwOyBpR2VuIDwgaGVpZ2h0OyBpR2VuKyspIHtcbiAgICAgICAgICAgIC8vIFNlYXJjaCBmcm9tIG1pZGRsZSBvdXR3YXJkc1xuICAgICAgICAgICAgdmFyIGkgPSBtaWRkbGVJICsgKChpR2VuICYgMHgwMSkgPT09IDAgPyBNYXRoLmZsb29yKChpR2VuICsgMSkgLyAyKSA6IC1NYXRoLmZsb29yKChpR2VuICsgMSkgLyAyKSk7XG4gICAgICAgICAgICBzdGF0ZUNvdW50WzBdID0gMDtcbiAgICAgICAgICAgIHN0YXRlQ291bnRbMV0gPSAwO1xuICAgICAgICAgICAgc3RhdGVDb3VudFsyXSA9IDA7XG4gICAgICAgICAgICB2YXIgaiA9IHN0YXJ0WDtcbiAgICAgICAgICAgIC8vIEJ1cm4gb2ZmIGxlYWRpbmcgd2hpdGUgcGl4ZWxzIGJlZm9yZSBhbnl0aGluZyBlbHNlOyBpZiB3ZSBzdGFydCBpbiB0aGUgbWlkZGxlIG9mXG4gICAgICAgICAgICAvLyBhIHdoaXRlIHJ1biwgaXQgZG9lc24ndCBtYWtlIHNlbnNlIHRvIGNvdW50IGl0cyBsZW5ndGgsIHNpbmNlIHdlIGRvbid0IGtub3cgaWYgdGhlXG4gICAgICAgICAgICAvLyB3aGl0ZSBydW4gY29udGludWVkIHRvIHRoZSBsZWZ0IG9mIHRoZSBzdGFydCBwb2ludFxuICAgICAgICAgICAgd2hpbGUgKGogPCBtYXhKICYmICFpbWFnZS5nZXQoaiwgaSkpIHtcbiAgICAgICAgICAgICAgICBqKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgY3VycmVudFN0YXRlID0gMDtcbiAgICAgICAgICAgIHdoaWxlIChqIDwgbWF4Sikge1xuICAgICAgICAgICAgICAgIGlmIChpbWFnZS5nZXQoaiwgaSkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQmxhY2sgcGl4ZWxcbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRTdGF0ZSA9PT0gMSkgeyAvLyBDb3VudGluZyBibGFjayBwaXhlbHNcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlQ291bnRbMV0rKztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHsgLy8gQ291bnRpbmcgd2hpdGUgcGl4ZWxzXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFN0YXRlID09PSAyKSB7IC8vIEEgd2lubmVyP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmZvdW5kUGF0dGVybkNyb3NzKHN0YXRlQ291bnQpKSB7IC8vIFllc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29uZmlybWVkID0gdGhpcy5oYW5kbGVQb3NzaWJsZUNlbnRlcihzdGF0ZUNvdW50LCBpLCBqKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpcm1lZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbmZpcm1lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZUNvdW50WzBdID0gc3RhdGVDb3VudFsyXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZUNvdW50WzFdID0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZUNvdW50WzJdID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RhdGUgPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVDb3VudFsrK2N1cnJlbnRTdGF0ZV0rKztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHsgLy8gV2hpdGUgcGl4ZWxcbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRTdGF0ZSA9PT0gMSkgeyAvLyBDb3VudGluZyBibGFjayBwaXhlbHNcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdGF0ZSsrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlQ291bnRbY3VycmVudFN0YXRlXSsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBqKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5mb3VuZFBhdHRlcm5Dcm9zcyhzdGF0ZUNvdW50KSkge1xuICAgICAgICAgICAgICAgIHZhciBjb25maXJtZWQgPSB0aGlzLmhhbmRsZVBvc3NpYmxlQ2VudGVyKHN0YXRlQ291bnQsIGksIG1heEopO1xuICAgICAgICAgICAgICAgIGlmIChjb25maXJtZWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbmZpcm1lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gSG1tLCBub3RoaW5nIHdlIHNhdyB3YXMgb2JzZXJ2ZWQgYW5kIGNvbmZpcm1lZCB0d2ljZS4gSWYgd2UgaGFkXG4gICAgICAgIC8vIGFueSBndWVzcyBhdCBhbGwsIHJldHVybiBpdC5cbiAgICAgICAgaWYgKHRoaXMucG9zc2libGVDZW50ZXJzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucG9zc2libGVDZW50ZXJzWzBdO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEdpdmVuIGEgY291bnQgb2YgYmxhY2svd2hpdGUvYmxhY2sgcGl4ZWxzIGp1c3Qgc2VlbiBhbmQgYW4gZW5kIHBvc2l0aW9uLFxuICAgICAqIGZpZ3VyZXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBjZW50ZXIgb2YgdGhpcyBibGFjay93aGl0ZS9ibGFjayBydW4uXG4gICAgICovXG4gICAgQWxpZ25tZW50UGF0dGVybkZpbmRlci5jZW50ZXJGcm9tRW5kID0gZnVuY3Rpb24gKHN0YXRlQ291bnQsIGVuZCAvKmludCovKSB7XG4gICAgICAgIHJldHVybiAoZW5kIC0gc3RhdGVDb3VudFsyXSkgLSBzdGF0ZUNvdW50WzFdIC8gMi4wO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHN0YXRlQ291bnQgY291bnQgb2YgYmxhY2svd2hpdGUvYmxhY2sgcGl4ZWxzIGp1c3QgcmVhZFxuICAgICAqIEByZXR1cm4gdHJ1ZSBpZmYgdGhlIHByb3BvcnRpb25zIG9mIHRoZSBjb3VudHMgaXMgY2xvc2UgZW5vdWdoIHRvIHRoZSAxLzEvMSByYXRpb3NcbiAgICAgKiAgICAgICAgIHVzZWQgYnkgYWxpZ25tZW50IHBhdHRlcm5zIHRvIGJlIGNvbnNpZGVyZWQgYSBtYXRjaFxuICAgICAqL1xuICAgIEFsaWdubWVudFBhdHRlcm5GaW5kZXIucHJvdG90eXBlLmZvdW5kUGF0dGVybkNyb3NzID0gZnVuY3Rpb24gKHN0YXRlQ291bnQpIHtcbiAgICAgICAgdmFyIG1vZHVsZVNpemUgPSB0aGlzLm1vZHVsZVNpemU7XG4gICAgICAgIHZhciBtYXhWYXJpYW5jZSA9IG1vZHVsZVNpemUgLyAyLjA7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMzsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoTWF0aC5hYnMobW9kdWxlU2l6ZSAtIHN0YXRlQ291bnRbaV0pID49IG1heFZhcmlhbmNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogPHA+QWZ0ZXIgYSBob3Jpem9udGFsIHNjYW4gZmluZHMgYSBwb3RlbnRpYWwgYWxpZ25tZW50IHBhdHRlcm4sIHRoaXMgbWV0aG9kXG4gICAgICogXCJjcm9zcy1jaGVja3NcIiBieSBzY2FubmluZyBkb3duIHZlcnRpY2FsbHkgdGhyb3VnaCB0aGUgY2VudGVyIG9mIHRoZSBwb3NzaWJsZVxuICAgICAqIGFsaWdubWVudCBwYXR0ZXJuIHRvIHNlZSBpZiB0aGUgc2FtZSBwcm9wb3J0aW9uIGlzIGRldGVjdGVkLjwvcD5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzdGFydEkgcm93IHdoZXJlIGFuIGFsaWdubWVudCBwYXR0ZXJuIHdhcyBkZXRlY3RlZFxuICAgICAqIEBwYXJhbSBjZW50ZXJKIGNlbnRlciBvZiB0aGUgc2VjdGlvbiB0aGF0IGFwcGVhcnMgdG8gY3Jvc3MgYW4gYWxpZ25tZW50IHBhdHRlcm5cbiAgICAgKiBAcGFyYW0gbWF4Q291bnQgbWF4aW11bSByZWFzb25hYmxlIG51bWJlciBvZiBtb2R1bGVzIHRoYXQgc2hvdWxkIGJlXG4gICAgICogb2JzZXJ2ZWQgaW4gYW55IHJlYWRpbmcgc3RhdGUsIGJhc2VkIG9uIHRoZSByZXN1bHRzIG9mIHRoZSBob3Jpem9udGFsIHNjYW5cbiAgICAgKiBAcmV0dXJuIHZlcnRpY2FsIGNlbnRlciBvZiBhbGlnbm1lbnQgcGF0dGVybiwgb3Ige0BsaW5rIEZsb2F0I05hTn0gaWYgbm90IGZvdW5kXG4gICAgICovXG4gICAgQWxpZ25tZW50UGF0dGVybkZpbmRlci5wcm90b3R5cGUuY3Jvc3NDaGVja1ZlcnRpY2FsID0gZnVuY3Rpb24gKHN0YXJ0SSAvKmludCovLCBjZW50ZXJKIC8qaW50Ki8sIG1heENvdW50IC8qaW50Ki8sIG9yaWdpbmFsU3RhdGVDb3VudFRvdGFsIC8qaW50Ki8pIHtcbiAgICAgICAgdmFyIGltYWdlID0gdGhpcy5pbWFnZTtcbiAgICAgICAgdmFyIG1heEkgPSBpbWFnZS5nZXRIZWlnaHQoKTtcbiAgICAgICAgdmFyIHN0YXRlQ291bnQgPSB0aGlzLmNyb3NzQ2hlY2tTdGF0ZUNvdW50O1xuICAgICAgICBzdGF0ZUNvdW50WzBdID0gMDtcbiAgICAgICAgc3RhdGVDb3VudFsxXSA9IDA7XG4gICAgICAgIHN0YXRlQ291bnRbMl0gPSAwO1xuICAgICAgICAvLyBTdGFydCBjb3VudGluZyB1cCBmcm9tIGNlbnRlclxuICAgICAgICB2YXIgaSA9IHN0YXJ0STtcbiAgICAgICAgd2hpbGUgKGkgPj0gMCAmJiBpbWFnZS5nZXQoY2VudGVySiwgaSkgJiYgc3RhdGVDb3VudFsxXSA8PSBtYXhDb3VudCkge1xuICAgICAgICAgICAgc3RhdGVDb3VudFsxXSsrO1xuICAgICAgICAgICAgaS0tO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIGFscmVhZHkgdG9vIG1hbnkgbW9kdWxlcyBpbiB0aGlzIHN0YXRlIG9yIHJhbiBvZmYgdGhlIGVkZ2U6XG4gICAgICAgIGlmIChpIDwgMCB8fCBzdGF0ZUNvdW50WzFdID4gbWF4Q291bnQpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKGkgPj0gMCAmJiAhaW1hZ2UuZ2V0KGNlbnRlckosIGkpICYmIHN0YXRlQ291bnRbMF0gPD0gbWF4Q291bnQpIHtcbiAgICAgICAgICAgIHN0YXRlQ291bnRbMF0rKztcbiAgICAgICAgICAgIGktLTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhdGVDb3VudFswXSA+IG1heENvdW50KSB7XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICB9XG4gICAgICAgIC8vIE5vdyBhbHNvIGNvdW50IGRvd24gZnJvbSBjZW50ZXJcbiAgICAgICAgaSA9IHN0YXJ0SSArIDE7XG4gICAgICAgIHdoaWxlIChpIDwgbWF4SSAmJiBpbWFnZS5nZXQoY2VudGVySiwgaSkgJiYgc3RhdGVDb3VudFsxXSA8PSBtYXhDb3VudCkge1xuICAgICAgICAgICAgc3RhdGVDb3VudFsxXSsrO1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpID09PSBtYXhJIHx8IHN0YXRlQ291bnRbMV0gPiBtYXhDb3VudCkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAoaSA8IG1heEkgJiYgIWltYWdlLmdldChjZW50ZXJKLCBpKSAmJiBzdGF0ZUNvdW50WzJdIDw9IG1heENvdW50KSB7XG4gICAgICAgICAgICBzdGF0ZUNvdW50WzJdKys7XG4gICAgICAgICAgICBpKys7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXRlQ291bnRbMl0gPiBtYXhDb3VudCkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc3RhdGVDb3VudFRvdGFsID0gc3RhdGVDb3VudFswXSArIHN0YXRlQ291bnRbMV0gKyBzdGF0ZUNvdW50WzJdO1xuICAgICAgICBpZiAoNSAqIE1hdGguYWJzKHN0YXRlQ291bnRUb3RhbCAtIG9yaWdpbmFsU3RhdGVDb3VudFRvdGFsKSA+PSAyICogb3JpZ2luYWxTdGF0ZUNvdW50VG90YWwpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZm91bmRQYXR0ZXJuQ3Jvc3Moc3RhdGVDb3VudCkgPyBBbGlnbm1lbnRQYXR0ZXJuRmluZGVyLmNlbnRlckZyb21FbmQoc3RhdGVDb3VudCwgaSkgOiBOYU47XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiA8cD5UaGlzIGlzIGNhbGxlZCB3aGVuIGEgaG9yaXpvbnRhbCBzY2FuIGZpbmRzIGEgcG9zc2libGUgYWxpZ25tZW50IHBhdHRlcm4uIEl0IHdpbGxcbiAgICAgKiBjcm9zcyBjaGVjayB3aXRoIGEgdmVydGljYWwgc2NhbiwgYW5kIGlmIHN1Y2Nlc3NmdWwsIHdpbGwgc2VlIGlmIHRoaXMgcGF0dGVybiBoYWQgYmVlblxuICAgICAqIGZvdW5kIG9uIGEgcHJldmlvdXMgaG9yaXpvbnRhbCBzY2FuLiBJZiBzbywgd2UgY29uc2lkZXIgaXQgY29uZmlybWVkIGFuZCBjb25jbHVkZSB3ZSBoYXZlXG4gICAgICogZm91bmQgdGhlIGFsaWdubWVudCBwYXR0ZXJuLjwvcD5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzdGF0ZUNvdW50IHJlYWRpbmcgc3RhdGUgbW9kdWxlIGNvdW50cyBmcm9tIGhvcml6b250YWwgc2NhblxuICAgICAqIEBwYXJhbSBpIHJvdyB3aGVyZSBhbGlnbm1lbnQgcGF0dGVybiBtYXkgYmUgZm91bmRcbiAgICAgKiBAcGFyYW0gaiBlbmQgb2YgcG9zc2libGUgYWxpZ25tZW50IHBhdHRlcm4gaW4gcm93XG4gICAgICogQHJldHVybiB7QGxpbmsgQWxpZ25tZW50UGF0dGVybn0gaWYgd2UgaGF2ZSBmb3VuZCB0aGUgc2FtZSBwYXR0ZXJuIHR3aWNlLCBvciBudWxsIGlmIG5vdFxuICAgICAqL1xuICAgIEFsaWdubWVudFBhdHRlcm5GaW5kZXIucHJvdG90eXBlLmhhbmRsZVBvc3NpYmxlQ2VudGVyID0gZnVuY3Rpb24gKHN0YXRlQ291bnQsIGkgLyppbnQqLywgaiAvKmludCovKSB7XG4gICAgICAgIHZhciBlXzEsIF9hO1xuICAgICAgICB2YXIgc3RhdGVDb3VudFRvdGFsID0gc3RhdGVDb3VudFswXSArIHN0YXRlQ291bnRbMV0gKyBzdGF0ZUNvdW50WzJdO1xuICAgICAgICB2YXIgY2VudGVySiA9IEFsaWdubWVudFBhdHRlcm5GaW5kZXIuY2VudGVyRnJvbUVuZChzdGF0ZUNvdW50LCBqKTtcbiAgICAgICAgdmFyIGNlbnRlckkgPSB0aGlzLmNyb3NzQ2hlY2tWZXJ0aWNhbChpLCAvKihpbnQpICovIGNlbnRlckosIDIgKiBzdGF0ZUNvdW50WzFdLCBzdGF0ZUNvdW50VG90YWwpO1xuICAgICAgICBpZiAoIWlzTmFOKGNlbnRlckkpKSB7XG4gICAgICAgICAgICB2YXIgZXN0aW1hdGVkTW9kdWxlU2l6ZSA9IChzdGF0ZUNvdW50WzBdICsgc3RhdGVDb3VudFsxXSArIHN0YXRlQ291bnRbMl0pIC8gMy4wO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKHRoaXMucG9zc2libGVDZW50ZXJzKSwgX2MgPSBfYi5uZXh0KCk7ICFfYy5kb25lOyBfYyA9IF9iLm5leHQoKSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgY2VudGVyID0gX2MudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIC8vIExvb2sgZm9yIGFib3V0IHRoZSBzYW1lIGNlbnRlciBhbmQgbW9kdWxlIHNpemU6XG4gICAgICAgICAgICAgICAgICAgIGlmIChjZW50ZXIuYWJvdXRFcXVhbHMoZXN0aW1hdGVkTW9kdWxlU2l6ZSwgY2VudGVySSwgY2VudGVySikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjZW50ZXIuY29tYmluZUVzdGltYXRlKGNlbnRlckksIGNlbnRlckosIGVzdGltYXRlZE1vZHVsZVNpemUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH1cbiAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChfYyAmJiAhX2MuZG9uZSAmJiAoX2EgPSBfYi5yZXR1cm4pKSBfYS5jYWxsKF9iKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gSGFkbid0IGZvdW5kIHRoaXMgYmVmb3JlOyBzYXZlIGl0XG4gICAgICAgICAgICB2YXIgcG9pbnQgPSBuZXcgQWxpZ25tZW50UGF0dGVybl8xLmRlZmF1bHQoY2VudGVySiwgY2VudGVySSwgZXN0aW1hdGVkTW9kdWxlU2l6ZSk7XG4gICAgICAgICAgICB0aGlzLnBvc3NpYmxlQ2VudGVycy5wdXNoKHBvaW50KTtcbiAgICAgICAgICAgIGlmICh0aGlzLnJlc3VsdFBvaW50Q2FsbGJhY2sgIT09IG51bGwgJiYgdGhpcy5yZXN1bHRQb2ludENhbGxiYWNrICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc3VsdFBvaW50Q2FsbGJhY2suZm91bmRQb3NzaWJsZVJlc3VsdFBvaW50KHBvaW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICAgIHJldHVybiBBbGlnbm1lbnRQYXR0ZXJuRmluZGVyO1xufSgpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IEFsaWdubWVudFBhdHRlcm5GaW5kZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BbGlnbm1lbnRQYXR0ZXJuRmluZGVyLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuLypcbiAqIENvcHlyaWdodCAyMDA3IFpYaW5nIGF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qbmFtZXNwYWNlIGNvbS5nb29nbGUuenhpbmcucXJjb2RlLmRldGVjdG9yIHsqL1xudmFyIFJlc3VsdFBvaW50XzEgPSByZXF1aXJlKFwiLi4vLi4vUmVzdWx0UG9pbnRcIik7XG4vKipcbiAqIDxwPkVuY2Fwc3VsYXRlcyBhIGZpbmRlciBwYXR0ZXJuLCB3aGljaCBhcmUgdGhlIHRocmVlIHNxdWFyZSBwYXR0ZXJucyBmb3VuZCBpblxuICogdGhlIGNvcm5lcnMgb2YgUVIgQ29kZXMuIEl0IGFsc28gZW5jYXBzdWxhdGVzIGEgY291bnQgb2Ygc2ltaWxhciBmaW5kZXIgcGF0dGVybnMsXG4gKiBhcyBhIGNvbnZlbmllbmNlIHRvIHRoZSBmaW5kZXIncyBib29ra2VlcGluZy48L3A+XG4gKlxuICogQGF1dGhvciBTZWFuIE93ZW5cbiAqL1xudmFyIEZpbmRlclBhdHRlcm4gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEZpbmRlclBhdHRlcm4sIF9zdXBlcik7XG4gICAgLy8gRmluZGVyUGF0dGVybihwb3NYOiBudW1iZXIvKmZsb2F0Ki8sIHBvc1k6IG51bWJlci8qZmxvYXQqLywgZXN0aW1hdGVkTW9kdWxlU2l6ZTogbnVtYmVyLypmbG9hdCovKSB7XG4gICAgLy8gICB0aGlzKHBvc1gsIHBvc1ksIGVzdGltYXRlZE1vZHVsZVNpemUsIDEpXG4gICAgLy8gfVxuICAgIGZ1bmN0aW9uIEZpbmRlclBhdHRlcm4ocG9zWCAvKmZsb2F0Ki8sIHBvc1kgLypmbG9hdCovLCBlc3RpbWF0ZWRNb2R1bGVTaXplIC8qZmxvYXQqLywgY291bnQgLyppbnQqLykge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBwb3NYLCBwb3NZKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5lc3RpbWF0ZWRNb2R1bGVTaXplID0gZXN0aW1hdGVkTW9kdWxlU2l6ZTtcbiAgICAgICAgX3RoaXMuY291bnQgPSBjb3VudDtcbiAgICAgICAgaWYgKHVuZGVmaW5lZCA9PT0gY291bnQpIHtcbiAgICAgICAgICAgIF90aGlzLmNvdW50ID0gMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIEZpbmRlclBhdHRlcm4ucHJvdG90eXBlLmdldEVzdGltYXRlZE1vZHVsZVNpemUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVzdGltYXRlZE1vZHVsZVNpemU7XG4gICAgfTtcbiAgICBGaW5kZXJQYXR0ZXJuLnByb3RvdHlwZS5nZXRDb3VudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY291bnQ7XG4gICAgfTtcbiAgICAvKlxuICAgIHZvaWQgaW5jcmVtZW50Q291bnQoKSB7XG4gICAgICB0aGlzLmNvdW50KytcbiAgICB9XG4gICAgICovXG4gICAgLyoqXG4gICAgICogPHA+RGV0ZXJtaW5lcyBpZiB0aGlzIGZpbmRlciBwYXR0ZXJuIFwiYWJvdXQgZXF1YWxzXCIgYSBmaW5kZXIgcGF0dGVybiBhdCB0aGUgc3RhdGVkXG4gICAgICogcG9zaXRpb24gYW5kIHNpemUgLS0gbWVhbmluZywgaXQgaXMgYXQgbmVhcmx5IHRoZSBzYW1lIGNlbnRlciB3aXRoIG5lYXJseSB0aGUgc2FtZSBzaXplLjwvcD5cbiAgICAgKi9cbiAgICBGaW5kZXJQYXR0ZXJuLnByb3RvdHlwZS5hYm91dEVxdWFscyA9IGZ1bmN0aW9uIChtb2R1bGVTaXplIC8qZmxvYXQqLywgaSAvKmZsb2F0Ki8sIGogLypmbG9hdCovKSB7XG4gICAgICAgIGlmIChNYXRoLmFicyhpIC0gdGhpcy5nZXRZKCkpIDw9IG1vZHVsZVNpemUgJiYgTWF0aC5hYnMoaiAtIHRoaXMuZ2V0WCgpKSA8PSBtb2R1bGVTaXplKSB7XG4gICAgICAgICAgICB2YXIgbW9kdWxlU2l6ZURpZmYgPSBNYXRoLmFicyhtb2R1bGVTaXplIC0gdGhpcy5lc3RpbWF0ZWRNb2R1bGVTaXplKTtcbiAgICAgICAgICAgIHJldHVybiBtb2R1bGVTaXplRGlmZiA8PSAxLjAgfHwgbW9kdWxlU2l6ZURpZmYgPD0gdGhpcy5lc3RpbWF0ZWRNb2R1bGVTaXplO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIENvbWJpbmVzIHRoaXMgb2JqZWN0J3MgY3VycmVudCBlc3RpbWF0ZSBvZiBhIGZpbmRlciBwYXR0ZXJuIHBvc2l0aW9uIGFuZCBtb2R1bGUgc2l6ZVxuICAgICAqIHdpdGggYSBuZXcgZXN0aW1hdGUuIEl0IHJldHVybnMgYSBuZXcge0Bjb2RlIEZpbmRlclBhdHRlcm59IGNvbnRhaW5pbmcgYSB3ZWlnaHRlZCBhdmVyYWdlXG4gICAgICogYmFzZWQgb24gY291bnQuXG4gICAgICovXG4gICAgRmluZGVyUGF0dGVybi5wcm90b3R5cGUuY29tYmluZUVzdGltYXRlID0gZnVuY3Rpb24gKGkgLypmbG9hdCovLCBqIC8qZmxvYXQqLywgbmV3TW9kdWxlU2l6ZSAvKmZsb2F0Ki8pIHtcbiAgICAgICAgdmFyIGNvbWJpbmVkQ291bnQgPSB0aGlzLmNvdW50ICsgMTtcbiAgICAgICAgdmFyIGNvbWJpbmVkWCA9ICh0aGlzLmNvdW50ICogdGhpcy5nZXRYKCkgKyBqKSAvIGNvbWJpbmVkQ291bnQ7XG4gICAgICAgIHZhciBjb21iaW5lZFkgPSAodGhpcy5jb3VudCAqIHRoaXMuZ2V0WSgpICsgaSkgLyBjb21iaW5lZENvdW50O1xuICAgICAgICB2YXIgY29tYmluZWRNb2R1bGVTaXplID0gKHRoaXMuY291bnQgKiB0aGlzLmVzdGltYXRlZE1vZHVsZVNpemUgKyBuZXdNb2R1bGVTaXplKSAvIGNvbWJpbmVkQ291bnQ7XG4gICAgICAgIHJldHVybiBuZXcgRmluZGVyUGF0dGVybihjb21iaW5lZFgsIGNvbWJpbmVkWSwgY29tYmluZWRNb2R1bGVTaXplLCBjb21iaW5lZENvdW50KTtcbiAgICB9O1xuICAgIHJldHVybiBGaW5kZXJQYXR0ZXJuO1xufShSZXN1bHRQb2ludF8xLmRlZmF1bHQpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IEZpbmRlclBhdHRlcm47XG4vLyMgc291cmNlTWFwcGluZ1VSTD1GaW5kZXJQYXR0ZXJuLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuLypcbiAqIENvcHlyaWdodCAyMDA3IFpYaW5nIGF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vKipcbiAqIDxwPkVuY2Fwc3VsYXRlcyBpbmZvcm1hdGlvbiBhYm91dCBmaW5kZXIgcGF0dGVybnMgaW4gYW4gaW1hZ2UsIGluY2x1ZGluZyB0aGUgbG9jYXRpb24gb2ZcbiAqIHRoZSB0aHJlZSBmaW5kZXIgcGF0dGVybnMsIGFuZCB0aGVpciBlc3RpbWF0ZWQgbW9kdWxlIHNpemUuPC9wPlxuICpcbiAqIEBhdXRob3IgU2VhbiBPd2VuXG4gKi9cbnZhciBGaW5kZXJQYXR0ZXJuSW5mbyA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBGaW5kZXJQYXR0ZXJuSW5mbyhwYXR0ZXJuQ2VudGVycykge1xuICAgICAgICB0aGlzLmJvdHRvbUxlZnQgPSBwYXR0ZXJuQ2VudGVyc1swXTtcbiAgICAgICAgdGhpcy50b3BMZWZ0ID0gcGF0dGVybkNlbnRlcnNbMV07XG4gICAgICAgIHRoaXMudG9wUmlnaHQgPSBwYXR0ZXJuQ2VudGVyc1syXTtcbiAgICB9XG4gICAgRmluZGVyUGF0dGVybkluZm8ucHJvdG90eXBlLmdldEJvdHRvbUxlZnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJvdHRvbUxlZnQ7XG4gICAgfTtcbiAgICBGaW5kZXJQYXR0ZXJuSW5mby5wcm90b3R5cGUuZ2V0VG9wTGVmdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9wTGVmdDtcbiAgICB9O1xuICAgIEZpbmRlclBhdHRlcm5JbmZvLnByb3RvdHlwZS5nZXRUb3BSaWdodCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9wUmlnaHQ7XG4gICAgfTtcbiAgICByZXR1cm4gRmluZGVyUGF0dGVybkluZm87XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gRmluZGVyUGF0dGVybkluZm87XG4vLyMgc291cmNlTWFwcGluZ1VSTD1GaW5kZXJQYXR0ZXJuSW5mby5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8qXG4gKiBDb3B5cmlnaHQgMjAwNyBaWGluZyBhdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIF9fdmFsdWVzID0gKHRoaXMgJiYgdGhpcy5fX3ZhbHVlcykgfHwgZnVuY3Rpb24obykge1xuICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xuICAgICAgICB9XG4gICAgfTtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLypuYW1lc3BhY2UgY29tLmdvb2dsZS56eGluZy5xcmNvZGUuZGV0ZWN0b3IgeyovXG52YXIgRGVjb2RlSGludFR5cGVfMSA9IHJlcXVpcmUoXCIuLi8uLi9EZWNvZGVIaW50VHlwZVwiKTtcbnZhciBSZXN1bHRQb2ludF8xID0gcmVxdWlyZShcIi4uLy4uL1Jlc3VsdFBvaW50XCIpO1xudmFyIEZpbmRlclBhdHRlcm5fMSA9IHJlcXVpcmUoXCIuL0ZpbmRlclBhdHRlcm5cIik7XG52YXIgRmluZGVyUGF0dGVybkluZm9fMSA9IHJlcXVpcmUoXCIuL0ZpbmRlclBhdHRlcm5JbmZvXCIpO1xudmFyIE5vdEZvdW5kRXhjZXB0aW9uXzEgPSByZXF1aXJlKFwiLi4vLi4vTm90Rm91bmRFeGNlcHRpb25cIik7XG4vKmltcG9ydCBqYXZhLmlvLlNlcmlhbGl6YWJsZTsqL1xuLyppbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsqL1xuLyppbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOyovXG4vKmltcG9ydCBqYXZhLnV0aWwuQ29tcGFyYXRvcjsqL1xuLyppbXBvcnQgamF2YS51dGlsLkxpc3Q7Ki9cbi8qaW1wb3J0IGphdmEudXRpbC5NYXA7Ki9cbi8qKlxuICogPHA+VGhpcyBjbGFzcyBhdHRlbXB0cyB0byBmaW5kIGZpbmRlciBwYXR0ZXJucyBpbiBhIFFSIENvZGUuIEZpbmRlciBwYXR0ZXJucyBhcmUgdGhlIHNxdWFyZVxuICogbWFya2VycyBhdCB0aHJlZSBjb3JuZXJzIG9mIGEgUVIgQ29kZS48L3A+XG4gKlxuICogPHA+VGhpcyBjbGFzcyBpcyB0aHJlYWQtc2FmZSBidXQgbm90IHJlZW50cmFudC4gRWFjaCB0aHJlYWQgbXVzdCBhbGxvY2F0ZSBpdHMgb3duIG9iamVjdC5cbiAqXG4gKiBAYXV0aG9yIFNlYW4gT3dlblxuICovXG52YXIgRmluZGVyUGF0dGVybkZpbmRlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICAvKipcbiAgICAgKiA8cD5DcmVhdGVzIGEgZmluZGVyIHRoYXQgd2lsbCBzZWFyY2ggdGhlIGltYWdlIGZvciB0aHJlZSBmaW5kZXIgcGF0dGVybnMuPC9wPlxuICAgICAqXG4gICAgICogQHBhcmFtIGltYWdlIGltYWdlIHRvIHNlYXJjaFxuICAgICAqL1xuICAgIC8vIHB1YmxpYyBjb25zdHJ1Y3RvcihpbWFnZTogQml0TWF0cml4KSB7XG4gICAgLy8gICB0aGlzKGltYWdlLCBudWxsKVxuICAgIC8vIH1cbiAgICBmdW5jdGlvbiBGaW5kZXJQYXR0ZXJuRmluZGVyKGltYWdlLCByZXN1bHRQb2ludENhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuaW1hZ2UgPSBpbWFnZTtcbiAgICAgICAgdGhpcy5yZXN1bHRQb2ludENhbGxiYWNrID0gcmVzdWx0UG9pbnRDYWxsYmFjaztcbiAgICAgICAgdGhpcy5wb3NzaWJsZUNlbnRlcnMgPSBbXTtcbiAgICAgICAgdGhpcy5jcm9zc0NoZWNrU3RhdGVDb3VudCA9IG5ldyBJbnQzMkFycmF5KDUpO1xuICAgICAgICB0aGlzLnJlc3VsdFBvaW50Q2FsbGJhY2sgPSByZXN1bHRQb2ludENhbGxiYWNrO1xuICAgIH1cbiAgICBGaW5kZXJQYXR0ZXJuRmluZGVyLnByb3RvdHlwZS5nZXRJbWFnZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW1hZ2U7XG4gICAgfTtcbiAgICBGaW5kZXJQYXR0ZXJuRmluZGVyLnByb3RvdHlwZS5nZXRQb3NzaWJsZUNlbnRlcnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBvc3NpYmxlQ2VudGVycztcbiAgICB9O1xuICAgIEZpbmRlclBhdHRlcm5GaW5kZXIucHJvdG90eXBlLmZpbmQgPSBmdW5jdGlvbiAoaGludHMpIHtcbiAgICAgICAgdmFyIHRyeUhhcmRlciA9IChoaW50cyAhPT0gbnVsbCAmJiBoaW50cyAhPT0gdW5kZWZpbmVkKSAmJiB1bmRlZmluZWQgIT09IGhpbnRzLmdldChEZWNvZGVIaW50VHlwZV8xLmRlZmF1bHQuVFJZX0hBUkRFUik7XG4gICAgICAgIHZhciBwdXJlQmFyY29kZSA9IChoaW50cyAhPT0gbnVsbCAmJiBoaW50cyAhPT0gdW5kZWZpbmVkKSAmJiB1bmRlZmluZWQgIT09IGhpbnRzLmdldChEZWNvZGVIaW50VHlwZV8xLmRlZmF1bHQuUFVSRV9CQVJDT0RFKTtcbiAgICAgICAgdmFyIGltYWdlID0gdGhpcy5pbWFnZTtcbiAgICAgICAgdmFyIG1heEkgPSBpbWFnZS5nZXRIZWlnaHQoKTtcbiAgICAgICAgdmFyIG1heEogPSBpbWFnZS5nZXRXaWR0aCgpO1xuICAgICAgICAvLyBXZSBhcmUgbG9va2luZyBmb3IgYmxhY2svd2hpdGUvYmxhY2svd2hpdGUvYmxhY2sgbW9kdWxlcyBpblxuICAgICAgICAvLyAxOjE6MzoxOjEgcmF0aW87IHRoaXMgdHJhY2tzIHRoZSBudW1iZXIgb2Ygc3VjaCBtb2R1bGVzIHNlZW4gc28gZmFyXG4gICAgICAgIC8vIExldCdzIGFzc3VtZSB0aGF0IHRoZSBtYXhpbXVtIHZlcnNpb24gUVIgQ29kZSB3ZSBzdXBwb3J0IHRha2VzIHVwIDEvNCB0aGUgaGVpZ2h0IG9mIHRoZVxuICAgICAgICAvLyBpbWFnZSwgYW5kIHRoZW4gYWNjb3VudCBmb3IgdGhlIGNlbnRlciBiZWluZyAzIG1vZHVsZXMgaW4gc2l6ZS4gVGhpcyBnaXZlcyB0aGUgc21hbGxlc3RcbiAgICAgICAgLy8gbnVtYmVyIG9mIHBpeGVscyB0aGUgY2VudGVyIGNvdWxkIGJlLCBzbyBza2lwIHRoaXMgb2Z0ZW4uIFdoZW4gdHJ5aW5nIGhhcmRlciwgbG9vayBmb3IgYWxsXG4gICAgICAgIC8vIFFSIHZlcnNpb25zIHJlZ2FyZGxlc3Mgb2YgaG93IGRlbnNlIHRoZXkgYXJlLlxuICAgICAgICB2YXIgaVNraXAgPSBNYXRoLmZsb29yKCgzICogbWF4SSkgLyAoNCAqIEZpbmRlclBhdHRlcm5GaW5kZXIuTUFYX01PRFVMRVMpKTtcbiAgICAgICAgaWYgKGlTa2lwIDwgRmluZGVyUGF0dGVybkZpbmRlci5NSU5fU0tJUCB8fCB0cnlIYXJkZXIpIHtcbiAgICAgICAgICAgIGlTa2lwID0gRmluZGVyUGF0dGVybkZpbmRlci5NSU5fU0tJUDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZG9uZSA9IGZhbHNlO1xuICAgICAgICB2YXIgc3RhdGVDb3VudCA9IG5ldyBJbnQzMkFycmF5KDUpO1xuICAgICAgICBmb3IgKHZhciBpID0gaVNraXAgLSAxOyBpIDwgbWF4SSAmJiAhZG9uZTsgaSArPSBpU2tpcCkge1xuICAgICAgICAgICAgLy8gR2V0IGEgcm93IG9mIGJsYWNrL3doaXRlIHZhbHVlc1xuICAgICAgICAgICAgc3RhdGVDb3VudFswXSA9IDA7XG4gICAgICAgICAgICBzdGF0ZUNvdW50WzFdID0gMDtcbiAgICAgICAgICAgIHN0YXRlQ291bnRbMl0gPSAwO1xuICAgICAgICAgICAgc3RhdGVDb3VudFszXSA9IDA7XG4gICAgICAgICAgICBzdGF0ZUNvdW50WzRdID0gMDtcbiAgICAgICAgICAgIHZhciBjdXJyZW50U3RhdGUgPSAwO1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBtYXhKOyBqKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaW1hZ2UuZ2V0KGosIGkpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEJsYWNrIHBpeGVsXG4gICAgICAgICAgICAgICAgICAgIGlmICgoY3VycmVudFN0YXRlICYgMSkgPT09IDEpIHsgLy8gQ291bnRpbmcgd2hpdGUgcGl4ZWxzXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RhdGUrKztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBzdGF0ZUNvdW50W2N1cnJlbnRTdGF0ZV0rKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7IC8vIFdoaXRlIHBpeGVsXG4gICAgICAgICAgICAgICAgICAgIGlmICgoY3VycmVudFN0YXRlICYgMSkgPT09IDApIHsgLy8gQ291bnRpbmcgYmxhY2sgcGl4ZWxzXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFN0YXRlID09PSA0KSB7IC8vIEEgd2lubmVyP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChGaW5kZXJQYXR0ZXJuRmluZGVyLmZvdW5kUGF0dGVybkNyb3NzKHN0YXRlQ291bnQpKSB7IC8vIFllc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29uZmlybWVkID0gdGhpcy5oYW5kbGVQb3NzaWJsZUNlbnRlcihzdGF0ZUNvdW50LCBpLCBqLCBwdXJlQmFyY29kZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maXJtZWQgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN0YXJ0IGV4YW1pbmluZyBldmVyeSBvdGhlciBsaW5lLiBDaGVja2luZyBlYWNoIGxpbmUgdHVybmVkIG91dCB0byBiZSB0b29cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGV4cGVuc2l2ZSBhbmQgZGlkbid0IGltcHJvdmUgcGVyZm9ybWFuY2UuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpU2tpcCA9IDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5oYXNTa2lwcGVkID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSA9IHRoaXMuaGF2ZU11bHRpcGx5Q29uZmlybWVkQ2VudGVycygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJvd1NraXAgPSB0aGlzLmZpbmRSb3dTa2lwKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJvd1NraXAgPiBzdGF0ZUNvdW50WzJdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNraXAgcm93cyBiZXR3ZWVuIHJvdyBvZiBsb3dlciBjb25maXJtZWQgY2VudGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCB0b3Agb2YgcHJlc3VtZWQgdGhpcmQgY29uZmlybWVkIGNlbnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBidXQgYmFjayB1cCBhIGJpdCB0byBnZXQgYSBmdWxsIGNoYW5jZSBvZiBkZXRlY3RpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXQsIGVudGlyZSB3aWR0aCBvZiBjZW50ZXIgb2YgZmluZGVyIHBhdHRlcm5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2tpcCBieSByb3dTa2lwLCBidXQgYmFjayBvZmYgYnkgc3RhdGVDb3VudFsyXSAoc2l6ZSBvZiBsYXN0IGNlbnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvZiBwYXR0ZXJuIHdlIHNhdykgdG8gYmUgY29uc2VydmF0aXZlLCBhbmQgYWxzbyBiYWNrIG9mZiBieSBpU2tpcCB3aGljaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBhYm91dCB0byBiZSByZS1hZGRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpICs9IHJvd1NraXAgLSBzdGF0ZUNvdW50WzJdIC0gaVNraXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGogPSBtYXhKIC0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZUNvdW50WzBdID0gc3RhdGVDb3VudFsyXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlQ291bnRbMV0gPSBzdGF0ZUNvdW50WzNdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVDb3VudFsyXSA9IHN0YXRlQ291bnRbNF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZUNvdW50WzNdID0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlQ291bnRbNF0gPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFN0YXRlID0gMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENsZWFyIHN0YXRlIHRvIHN0YXJ0IGxvb2tpbmcgYWdhaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFN0YXRlID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVDb3VudFswXSA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlQ291bnRbMV0gPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZUNvdW50WzJdID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVDb3VudFszXSA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlQ291bnRbNF0gPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsgLy8gTm8sIHNoaWZ0IGNvdW50cyBiYWNrIGJ5IHR3b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZUNvdW50WzBdID0gc3RhdGVDb3VudFsyXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVDb3VudFsxXSA9IHN0YXRlQ291bnRbM107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlQ291bnRbMl0gPSBzdGF0ZUNvdW50WzRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZUNvdW50WzNdID0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVDb3VudFs0XSA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdGF0ZSA9IDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVDb3VudFsrK2N1cnJlbnRTdGF0ZV0rKztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHsgLy8gQ291bnRpbmcgd2hpdGUgcGl4ZWxzXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZUNvdW50W2N1cnJlbnRTdGF0ZV0rKztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChGaW5kZXJQYXR0ZXJuRmluZGVyLmZvdW5kUGF0dGVybkNyb3NzKHN0YXRlQ291bnQpKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNvbmZpcm1lZCA9IHRoaXMuaGFuZGxlUG9zc2libGVDZW50ZXIoc3RhdGVDb3VudCwgaSwgbWF4SiwgcHVyZUJhcmNvZGUpO1xuICAgICAgICAgICAgICAgIGlmIChjb25maXJtZWQgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaVNraXAgPSBzdGF0ZUNvdW50WzBdO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5oYXNTa2lwcGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBGb3VuZCBhIHRoaXJkIG9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSA9IHRoaXMuaGF2ZU11bHRpcGx5Q29uZmlybWVkQ2VudGVycygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHZhciBwYXR0ZXJuSW5mbyA9IHRoaXMuc2VsZWN0QmVzdFBhdHRlcm5zKCk7XG4gICAgICAgIFJlc3VsdFBvaW50XzEuZGVmYXVsdC5vcmRlckJlc3RQYXR0ZXJucyhwYXR0ZXJuSW5mbyk7XG4gICAgICAgIHJldHVybiBuZXcgRmluZGVyUGF0dGVybkluZm9fMS5kZWZhdWx0KHBhdHRlcm5JbmZvKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEdpdmVuIGEgY291bnQgb2YgYmxhY2svd2hpdGUvYmxhY2svd2hpdGUvYmxhY2sgcGl4ZWxzIGp1c3Qgc2VlbiBhbmQgYW4gZW5kIHBvc2l0aW9uLFxuICAgICAqIGZpZ3VyZXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBjZW50ZXIgb2YgdGhpcyBydW4uXG4gICAgICovXG4gICAgRmluZGVyUGF0dGVybkZpbmRlci5jZW50ZXJGcm9tRW5kID0gZnVuY3Rpb24gKHN0YXRlQ291bnQsIGVuZCAvKmludCovKSB7XG4gICAgICAgIHJldHVybiAoZW5kIC0gc3RhdGVDb3VudFs0XSAtIHN0YXRlQ291bnRbM10pIC0gc3RhdGVDb3VudFsyXSAvIDIuMDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSBzdGF0ZUNvdW50IGNvdW50IG9mIGJsYWNrL3doaXRlL2JsYWNrL3doaXRlL2JsYWNrIHBpeGVscyBqdXN0IHJlYWRcbiAgICAgKiBAcmV0dXJuIHRydWUgaWZmIHRoZSBwcm9wb3J0aW9ucyBvZiB0aGUgY291bnRzIGlzIGNsb3NlIGVub3VnaCB0byB0aGUgMS8xLzMvMS8xIHJhdGlvc1xuICAgICAqICAgICAgICAgdXNlZCBieSBmaW5kZXIgcGF0dGVybnMgdG8gYmUgY29uc2lkZXJlZCBhIG1hdGNoXG4gICAgICovXG4gICAgRmluZGVyUGF0dGVybkZpbmRlci5mb3VuZFBhdHRlcm5Dcm9zcyA9IGZ1bmN0aW9uIChzdGF0ZUNvdW50KSB7XG4gICAgICAgIHZhciB0b3RhbE1vZHVsZVNpemUgPSAwO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDU7IGkrKykge1xuICAgICAgICAgICAgdmFyIGNvdW50ID0gc3RhdGVDb3VudFtpXTtcbiAgICAgICAgICAgIGlmIChjb3VudCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRvdGFsTW9kdWxlU2l6ZSArPSBjb3VudDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG90YWxNb2R1bGVTaXplIDwgNykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBtb2R1bGVTaXplID0gdG90YWxNb2R1bGVTaXplIC8gNy4wO1xuICAgICAgICB2YXIgbWF4VmFyaWFuY2UgPSBtb2R1bGVTaXplIC8gMi4wO1xuICAgICAgICAvLyBBbGxvdyBsZXNzIHRoYW4gNTAlIHZhcmlhbmNlIGZyb20gMS0xLTMtMS0xIHByb3BvcnRpb25zXG4gICAgICAgIHJldHVybiBNYXRoLmFicyhtb2R1bGVTaXplIC0gc3RhdGVDb3VudFswXSkgPCBtYXhWYXJpYW5jZSAmJlxuICAgICAgICAgICAgTWF0aC5hYnMobW9kdWxlU2l6ZSAtIHN0YXRlQ291bnRbMV0pIDwgbWF4VmFyaWFuY2UgJiZcbiAgICAgICAgICAgIE1hdGguYWJzKDMuMCAqIG1vZHVsZVNpemUgLSBzdGF0ZUNvdW50WzJdKSA8IDMgKiBtYXhWYXJpYW5jZSAmJlxuICAgICAgICAgICAgTWF0aC5hYnMobW9kdWxlU2l6ZSAtIHN0YXRlQ291bnRbM10pIDwgbWF4VmFyaWFuY2UgJiZcbiAgICAgICAgICAgIE1hdGguYWJzKG1vZHVsZVNpemUgLSBzdGF0ZUNvdW50WzRdKSA8IG1heFZhcmlhbmNlO1xuICAgIH07XG4gICAgRmluZGVyUGF0dGVybkZpbmRlci5wcm90b3R5cGUuZ2V0Q3Jvc3NDaGVja1N0YXRlQ291bnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjcm9zc0NoZWNrU3RhdGVDb3VudCA9IHRoaXMuY3Jvc3NDaGVja1N0YXRlQ291bnQ7XG4gICAgICAgIGNyb3NzQ2hlY2tTdGF0ZUNvdW50WzBdID0gMDtcbiAgICAgICAgY3Jvc3NDaGVja1N0YXRlQ291bnRbMV0gPSAwO1xuICAgICAgICBjcm9zc0NoZWNrU3RhdGVDb3VudFsyXSA9IDA7XG4gICAgICAgIGNyb3NzQ2hlY2tTdGF0ZUNvdW50WzNdID0gMDtcbiAgICAgICAgY3Jvc3NDaGVja1N0YXRlQ291bnRbNF0gPSAwO1xuICAgICAgICByZXR1cm4gY3Jvc3NDaGVja1N0YXRlQ291bnQ7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBBZnRlciBhIHZlcnRpY2FsIGFuZCBob3Jpem9udGFsIHNjYW4gZmluZHMgYSBwb3RlbnRpYWwgZmluZGVyIHBhdHRlcm4sIHRoaXMgbWV0aG9kXG4gICAgICogXCJjcm9zcy1jcm9zcy1jcm9zcy1jaGVja3NcIiBieSBzY2FubmluZyBkb3duIGRpYWdvbmFsbHkgdGhyb3VnaCB0aGUgY2VudGVyIG9mIHRoZSBwb3NzaWJsZVxuICAgICAqIGZpbmRlciBwYXR0ZXJuIHRvIHNlZSBpZiB0aGUgc2FtZSBwcm9wb3J0aW9uIGlzIGRldGVjdGVkLlxuICAgICAqXG4gICAgICogQHBhcmFtIHN0YXJ0SSByb3cgd2hlcmUgYSBmaW5kZXIgcGF0dGVybiB3YXMgZGV0ZWN0ZWRcbiAgICAgKiBAcGFyYW0gY2VudGVySiBjZW50ZXIgb2YgdGhlIHNlY3Rpb24gdGhhdCBhcHBlYXJzIHRvIGNyb3NzIGEgZmluZGVyIHBhdHRlcm5cbiAgICAgKiBAcGFyYW0gbWF4Q291bnQgbWF4aW11bSByZWFzb25hYmxlIG51bWJlciBvZiBtb2R1bGVzIHRoYXQgc2hvdWxkIGJlXG4gICAgICogIG9ic2VydmVkIGluIGFueSByZWFkaW5nIHN0YXRlLCBiYXNlZCBvbiB0aGUgcmVzdWx0cyBvZiB0aGUgaG9yaXpvbnRhbCBzY2FuXG4gICAgICogQHBhcmFtIG9yaWdpbmFsU3RhdGVDb3VudFRvdGFsIFRoZSBvcmlnaW5hbCBzdGF0ZSBjb3VudCB0b3RhbC5cbiAgICAgKiBAcmV0dXJuIHRydWUgaWYgcHJvcG9ydGlvbnMgYXJlIHdpdGhpbmcgZXhwZWN0ZWQgbGltaXRzXG4gICAgICovXG4gICAgRmluZGVyUGF0dGVybkZpbmRlci5wcm90b3R5cGUuY3Jvc3NDaGVja0RpYWdvbmFsID0gZnVuY3Rpb24gKHN0YXJ0SSAvKmludCovLCBjZW50ZXJKIC8qaW50Ki8sIG1heENvdW50IC8qaW50Ki8sIG9yaWdpbmFsU3RhdGVDb3VudFRvdGFsIC8qaW50Ki8pIHtcbiAgICAgICAgdmFyIHN0YXRlQ291bnQgPSB0aGlzLmdldENyb3NzQ2hlY2tTdGF0ZUNvdW50KCk7XG4gICAgICAgIC8vIFN0YXJ0IGNvdW50aW5nIHVwLCBsZWZ0IGZyb20gY2VudGVyIGZpbmRpbmcgYmxhY2sgY2VudGVyIG1hc3NcbiAgICAgICAgdmFyIGkgPSAwO1xuICAgICAgICB2YXIgaW1hZ2UgPSB0aGlzLmltYWdlO1xuICAgICAgICB3aGlsZSAoc3RhcnRJID49IGkgJiYgY2VudGVySiA+PSBpICYmIGltYWdlLmdldChjZW50ZXJKIC0gaSwgc3RhcnRJIC0gaSkpIHtcbiAgICAgICAgICAgIHN0YXRlQ291bnRbMl0rKztcbiAgICAgICAgICAgIGkrKztcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhcnRJIDwgaSB8fCBjZW50ZXJKIDwgaSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIENvbnRpbnVlIHVwLCBsZWZ0IGZpbmRpbmcgd2hpdGUgc3BhY2VcbiAgICAgICAgd2hpbGUgKHN0YXJ0SSA+PSBpICYmIGNlbnRlckogPj0gaSAmJiAhaW1hZ2UuZ2V0KGNlbnRlckogLSBpLCBzdGFydEkgLSBpKSAmJlxuICAgICAgICAgICAgc3RhdGVDb3VudFsxXSA8PSBtYXhDb3VudCkge1xuICAgICAgICAgICAgc3RhdGVDb3VudFsxXSsrO1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIGFscmVhZHkgdG9vIG1hbnkgbW9kdWxlcyBpbiB0aGlzIHN0YXRlIG9yIHJhbiBvZmYgdGhlIGVkZ2U6XG4gICAgICAgIGlmIChzdGFydEkgPCBpIHx8IGNlbnRlckogPCBpIHx8IHN0YXRlQ291bnRbMV0gPiBtYXhDb3VudCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIENvbnRpbnVlIHVwLCBsZWZ0IGZpbmRpbmcgYmxhY2sgYm9yZGVyXG4gICAgICAgIHdoaWxlIChzdGFydEkgPj0gaSAmJiBjZW50ZXJKID49IGkgJiYgaW1hZ2UuZ2V0KGNlbnRlckogLSBpLCBzdGFydEkgLSBpKSAmJlxuICAgICAgICAgICAgc3RhdGVDb3VudFswXSA8PSBtYXhDb3VudCkge1xuICAgICAgICAgICAgc3RhdGVDb3VudFswXSsrO1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGF0ZUNvdW50WzBdID4gbWF4Q291bnQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbWF4SSA9IGltYWdlLmdldEhlaWdodCgpO1xuICAgICAgICB2YXIgbWF4SiA9IGltYWdlLmdldFdpZHRoKCk7XG4gICAgICAgIC8vIE5vdyBhbHNvIGNvdW50IGRvd24sIHJpZ2h0IGZyb20gY2VudGVyXG4gICAgICAgIGkgPSAxO1xuICAgICAgICB3aGlsZSAoc3RhcnRJICsgaSA8IG1heEkgJiYgY2VudGVySiArIGkgPCBtYXhKICYmIGltYWdlLmdldChjZW50ZXJKICsgaSwgc3RhcnRJICsgaSkpIHtcbiAgICAgICAgICAgIHN0YXRlQ291bnRbMl0rKztcbiAgICAgICAgICAgIGkrKztcbiAgICAgICAgfVxuICAgICAgICAvLyBSYW4gb2ZmIHRoZSBlZGdlP1xuICAgICAgICBpZiAoc3RhcnRJICsgaSA+PSBtYXhJIHx8IGNlbnRlckogKyBpID49IG1heEopIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAoc3RhcnRJICsgaSA8IG1heEkgJiYgY2VudGVySiArIGkgPCBtYXhKICYmICFpbWFnZS5nZXQoY2VudGVySiArIGksIHN0YXJ0SSArIGkpICYmXG4gICAgICAgICAgICBzdGF0ZUNvdW50WzNdIDwgbWF4Q291bnQpIHtcbiAgICAgICAgICAgIHN0YXRlQ291bnRbM10rKztcbiAgICAgICAgICAgIGkrKztcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhcnRJICsgaSA+PSBtYXhJIHx8IGNlbnRlckogKyBpID49IG1heEogfHwgc3RhdGVDb3VudFszXSA+PSBtYXhDb3VudCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChzdGFydEkgKyBpIDwgbWF4SSAmJiBjZW50ZXJKICsgaSA8IG1heEogJiYgaW1hZ2UuZ2V0KGNlbnRlckogKyBpLCBzdGFydEkgKyBpKSAmJlxuICAgICAgICAgICAgc3RhdGVDb3VudFs0XSA8IG1heENvdW50KSB7XG4gICAgICAgICAgICBzdGF0ZUNvdW50WzRdKys7XG4gICAgICAgICAgICBpKys7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXRlQ291bnRbNF0gPj0gbWF4Q291bnQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZiB3ZSBmb3VuZCBhIGZpbmRlci1wYXR0ZXJuLWxpa2Ugc2VjdGlvbiwgYnV0IGl0cyBzaXplIGlzIG1vcmUgdGhhbiAxMDAlIGRpZmZlcmVudCB0aGFuXG4gICAgICAgIC8vIHRoZSBvcmlnaW5hbCwgYXNzdW1lIGl0J3MgYSBmYWxzZSBwb3NpdGl2ZVxuICAgICAgICB2YXIgc3RhdGVDb3VudFRvdGFsID0gc3RhdGVDb3VudFswXSArIHN0YXRlQ291bnRbMV0gKyBzdGF0ZUNvdW50WzJdICsgc3RhdGVDb3VudFszXSArIHN0YXRlQ291bnRbNF07XG4gICAgICAgIHJldHVybiBNYXRoLmFicyhzdGF0ZUNvdW50VG90YWwgLSBvcmlnaW5hbFN0YXRlQ291bnRUb3RhbCkgPCAyICogb3JpZ2luYWxTdGF0ZUNvdW50VG90YWwgJiZcbiAgICAgICAgICAgIEZpbmRlclBhdHRlcm5GaW5kZXIuZm91bmRQYXR0ZXJuQ3Jvc3Moc3RhdGVDb3VudCk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiA8cD5BZnRlciBhIGhvcml6b250YWwgc2NhbiBmaW5kcyBhIHBvdGVudGlhbCBmaW5kZXIgcGF0dGVybiwgdGhpcyBtZXRob2RcbiAgICAgKiBcImNyb3NzLWNoZWNrc1wiIGJ5IHNjYW5uaW5nIGRvd24gdmVydGljYWxseSB0aHJvdWdoIHRoZSBjZW50ZXIgb2YgdGhlIHBvc3NpYmxlXG4gICAgICogZmluZGVyIHBhdHRlcm4gdG8gc2VlIGlmIHRoZSBzYW1lIHByb3BvcnRpb24gaXMgZGV0ZWN0ZWQuPC9wPlxuICAgICAqXG4gICAgICogQHBhcmFtIHN0YXJ0SSByb3cgd2hlcmUgYSBmaW5kZXIgcGF0dGVybiB3YXMgZGV0ZWN0ZWRcbiAgICAgKiBAcGFyYW0gY2VudGVySiBjZW50ZXIgb2YgdGhlIHNlY3Rpb24gdGhhdCBhcHBlYXJzIHRvIGNyb3NzIGEgZmluZGVyIHBhdHRlcm5cbiAgICAgKiBAcGFyYW0gbWF4Q291bnQgbWF4aW11bSByZWFzb25hYmxlIG51bWJlciBvZiBtb2R1bGVzIHRoYXQgc2hvdWxkIGJlXG4gICAgICogb2JzZXJ2ZWQgaW4gYW55IHJlYWRpbmcgc3RhdGUsIGJhc2VkIG9uIHRoZSByZXN1bHRzIG9mIHRoZSBob3Jpem9udGFsIHNjYW5cbiAgICAgKiBAcmV0dXJuIHZlcnRpY2FsIGNlbnRlciBvZiBmaW5kZXIgcGF0dGVybiwgb3Ige0BsaW5rIEZsb2F0I05hTn0gaWYgbm90IGZvdW5kXG4gICAgICovXG4gICAgRmluZGVyUGF0dGVybkZpbmRlci5wcm90b3R5cGUuY3Jvc3NDaGVja1ZlcnRpY2FsID0gZnVuY3Rpb24gKHN0YXJ0SSAvKmludCovLCBjZW50ZXJKIC8qaW50Ki8sIG1heENvdW50IC8qaW50Ki8sIG9yaWdpbmFsU3RhdGVDb3VudFRvdGFsIC8qaW50Ki8pIHtcbiAgICAgICAgdmFyIGltYWdlID0gdGhpcy5pbWFnZTtcbiAgICAgICAgdmFyIG1heEkgPSBpbWFnZS5nZXRIZWlnaHQoKTtcbiAgICAgICAgdmFyIHN0YXRlQ291bnQgPSB0aGlzLmdldENyb3NzQ2hlY2tTdGF0ZUNvdW50KCk7XG4gICAgICAgIC8vIFN0YXJ0IGNvdW50aW5nIHVwIGZyb20gY2VudGVyXG4gICAgICAgIHZhciBpID0gc3RhcnRJO1xuICAgICAgICB3aGlsZSAoaSA+PSAwICYmIGltYWdlLmdldChjZW50ZXJKLCBpKSkge1xuICAgICAgICAgICAgc3RhdGVDb3VudFsyXSsrO1xuICAgICAgICAgICAgaS0tO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpIDwgMCkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAoaSA+PSAwICYmICFpbWFnZS5nZXQoY2VudGVySiwgaSkgJiYgc3RhdGVDb3VudFsxXSA8PSBtYXhDb3VudCkge1xuICAgICAgICAgICAgc3RhdGVDb3VudFsxXSsrO1xuICAgICAgICAgICAgaS0tO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIGFscmVhZHkgdG9vIG1hbnkgbW9kdWxlcyBpbiB0aGlzIHN0YXRlIG9yIHJhbiBvZmYgdGhlIGVkZ2U6XG4gICAgICAgIGlmIChpIDwgMCB8fCBzdGF0ZUNvdW50WzFdID4gbWF4Q291bnQpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKGkgPj0gMCAmJiBpbWFnZS5nZXQoY2VudGVySiwgaSkgJiYgc3RhdGVDb3VudFswXSA8PSBtYXhDb3VudCkge1xuICAgICAgICAgICAgc3RhdGVDb3VudFswXSsrO1xuICAgICAgICAgICAgaS0tO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGF0ZUNvdW50WzBdID4gbWF4Q291bnQpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgLy8gTm93IGFsc28gY291bnQgZG93biBmcm9tIGNlbnRlclxuICAgICAgICBpID0gc3RhcnRJICsgMTtcbiAgICAgICAgd2hpbGUgKGkgPCBtYXhJICYmIGltYWdlLmdldChjZW50ZXJKLCBpKSkge1xuICAgICAgICAgICAgc3RhdGVDb3VudFsyXSsrO1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpID09PSBtYXhJKSB7XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChpIDwgbWF4SSAmJiAhaW1hZ2UuZ2V0KGNlbnRlckosIGkpICYmIHN0YXRlQ291bnRbM10gPCBtYXhDb3VudCkge1xuICAgICAgICAgICAgc3RhdGVDb3VudFszXSsrO1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpID09PSBtYXhJIHx8IHN0YXRlQ291bnRbM10gPj0gbWF4Q291bnQpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKGkgPCBtYXhJICYmIGltYWdlLmdldChjZW50ZXJKLCBpKSAmJiBzdGF0ZUNvdW50WzRdIDwgbWF4Q291bnQpIHtcbiAgICAgICAgICAgIHN0YXRlQ291bnRbNF0rKztcbiAgICAgICAgICAgIGkrKztcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhdGVDb3VudFs0XSA+PSBtYXhDb3VudCkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZiB3ZSBmb3VuZCBhIGZpbmRlci1wYXR0ZXJuLWxpa2Ugc2VjdGlvbiwgYnV0IGl0cyBzaXplIGlzIG1vcmUgdGhhbiA0MCUgZGlmZmVyZW50IHRoYW5cbiAgICAgICAgLy8gdGhlIG9yaWdpbmFsLCBhc3N1bWUgaXQncyBhIGZhbHNlIHBvc2l0aXZlXG4gICAgICAgIHZhciBzdGF0ZUNvdW50VG90YWwgPSBzdGF0ZUNvdW50WzBdICsgc3RhdGVDb3VudFsxXSArIHN0YXRlQ291bnRbMl0gKyBzdGF0ZUNvdW50WzNdICtcbiAgICAgICAgICAgIHN0YXRlQ291bnRbNF07XG4gICAgICAgIGlmICg1ICogTWF0aC5hYnMoc3RhdGVDb3VudFRvdGFsIC0gb3JpZ2luYWxTdGF0ZUNvdW50VG90YWwpID49IDIgKiBvcmlnaW5hbFN0YXRlQ291bnRUb3RhbCkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gRmluZGVyUGF0dGVybkZpbmRlci5mb3VuZFBhdHRlcm5Dcm9zcyhzdGF0ZUNvdW50KSA/IEZpbmRlclBhdHRlcm5GaW5kZXIuY2VudGVyRnJvbUVuZChzdGF0ZUNvdW50LCBpKSA6IE5hTjtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIDxwPkxpa2Uge0BsaW5rICNjcm9zc0NoZWNrVmVydGljYWwoaW50LCBpbnQsIGludCwgaW50KX0sIGFuZCBpbiBmYWN0IGlzIGJhc2ljYWxseSBpZGVudGljYWwsXG4gICAgICogZXhjZXB0IGl0IHJlYWRzIGhvcml6b250YWxseSBpbnN0ZWFkIG9mIHZlcnRpY2FsbHkuIFRoaXMgaXMgdXNlZCB0byBjcm9zcy1jcm9zc1xuICAgICAqIGNoZWNrIGEgdmVydGljYWwgY3Jvc3MgY2hlY2sgYW5kIGxvY2F0ZSB0aGUgcmVhbCBjZW50ZXIgb2YgdGhlIGFsaWdubWVudCBwYXR0ZXJuLjwvcD5cbiAgICAgKi9cbiAgICBGaW5kZXJQYXR0ZXJuRmluZGVyLnByb3RvdHlwZS5jcm9zc0NoZWNrSG9yaXpvbnRhbCA9IGZ1bmN0aW9uIChzdGFydEogLyppbnQqLywgY2VudGVySSAvKmludCovLCBtYXhDb3VudCAvKmludCovLCBvcmlnaW5hbFN0YXRlQ291bnRUb3RhbCAvKmludCovKSB7XG4gICAgICAgIHZhciBpbWFnZSA9IHRoaXMuaW1hZ2U7XG4gICAgICAgIHZhciBtYXhKID0gaW1hZ2UuZ2V0V2lkdGgoKTtcbiAgICAgICAgdmFyIHN0YXRlQ291bnQgPSB0aGlzLmdldENyb3NzQ2hlY2tTdGF0ZUNvdW50KCk7XG4gICAgICAgIHZhciBqID0gc3RhcnRKO1xuICAgICAgICB3aGlsZSAoaiA+PSAwICYmIGltYWdlLmdldChqLCBjZW50ZXJJKSkge1xuICAgICAgICAgICAgc3RhdGVDb3VudFsyXSsrO1xuICAgICAgICAgICAgai0tO1xuICAgICAgICB9XG4gICAgICAgIGlmIChqIDwgMCkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAoaiA+PSAwICYmICFpbWFnZS5nZXQoaiwgY2VudGVySSkgJiYgc3RhdGVDb3VudFsxXSA8PSBtYXhDb3VudCkge1xuICAgICAgICAgICAgc3RhdGVDb3VudFsxXSsrO1xuICAgICAgICAgICAgai0tO1xuICAgICAgICB9XG4gICAgICAgIGlmIChqIDwgMCB8fCBzdGF0ZUNvdW50WzFdID4gbWF4Q291bnQpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKGogPj0gMCAmJiBpbWFnZS5nZXQoaiwgY2VudGVySSkgJiYgc3RhdGVDb3VudFswXSA8PSBtYXhDb3VudCkge1xuICAgICAgICAgICAgc3RhdGVDb3VudFswXSsrO1xuICAgICAgICAgICAgai0tO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGF0ZUNvdW50WzBdID4gbWF4Q291bnQpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgaiA9IHN0YXJ0SiArIDE7XG4gICAgICAgIHdoaWxlIChqIDwgbWF4SiAmJiBpbWFnZS5nZXQoaiwgY2VudGVySSkpIHtcbiAgICAgICAgICAgIHN0YXRlQ291bnRbMl0rKztcbiAgICAgICAgICAgIGorKztcbiAgICAgICAgfVxuICAgICAgICBpZiAoaiA9PT0gbWF4Sikge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAoaiA8IG1heEogJiYgIWltYWdlLmdldChqLCBjZW50ZXJJKSAmJiBzdGF0ZUNvdW50WzNdIDwgbWF4Q291bnQpIHtcbiAgICAgICAgICAgIHN0YXRlQ291bnRbM10rKztcbiAgICAgICAgICAgIGorKztcbiAgICAgICAgfVxuICAgICAgICBpZiAoaiA9PT0gbWF4SiB8fCBzdGF0ZUNvdW50WzNdID49IG1heENvdW50KSB7XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChqIDwgbWF4SiAmJiBpbWFnZS5nZXQoaiwgY2VudGVySSkgJiYgc3RhdGVDb3VudFs0XSA8IG1heENvdW50KSB7XG4gICAgICAgICAgICBzdGF0ZUNvdW50WzRdKys7XG4gICAgICAgICAgICBqKys7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXRlQ291bnRbNF0gPj0gbWF4Q291bnQpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWYgd2UgZm91bmQgYSBmaW5kZXItcGF0dGVybi1saWtlIHNlY3Rpb24sIGJ1dCBpdHMgc2l6ZSBpcyBzaWduaWZpY2FudGx5IGRpZmZlcmVudCB0aGFuXG4gICAgICAgIC8vIHRoZSBvcmlnaW5hbCwgYXNzdW1lIGl0J3MgYSBmYWxzZSBwb3NpdGl2ZVxuICAgICAgICB2YXIgc3RhdGVDb3VudFRvdGFsID0gc3RhdGVDb3VudFswXSArIHN0YXRlQ291bnRbMV0gKyBzdGF0ZUNvdW50WzJdICsgc3RhdGVDb3VudFszXSArXG4gICAgICAgICAgICBzdGF0ZUNvdW50WzRdO1xuICAgICAgICBpZiAoNSAqIE1hdGguYWJzKHN0YXRlQ291bnRUb3RhbCAtIG9yaWdpbmFsU3RhdGVDb3VudFRvdGFsKSA+PSBvcmlnaW5hbFN0YXRlQ291bnRUb3RhbCkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gRmluZGVyUGF0dGVybkZpbmRlci5mb3VuZFBhdHRlcm5Dcm9zcyhzdGF0ZUNvdW50KSA/IEZpbmRlclBhdHRlcm5GaW5kZXIuY2VudGVyRnJvbUVuZChzdGF0ZUNvdW50LCBqKSA6IE5hTjtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIDxwPlRoaXMgaXMgY2FsbGVkIHdoZW4gYSBob3Jpem9udGFsIHNjYW4gZmluZHMgYSBwb3NzaWJsZSBhbGlnbm1lbnQgcGF0dGVybi4gSXQgd2lsbFxuICAgICAqIGNyb3NzIGNoZWNrIHdpdGggYSB2ZXJ0aWNhbCBzY2FuLCBhbmQgaWYgc3VjY2Vzc2Z1bCwgd2lsbCwgYWgsIGNyb3NzLWNyb3NzLWNoZWNrXG4gICAgICogd2l0aCBhbm90aGVyIGhvcml6b250YWwgc2Nhbi4gVGhpcyBpcyBuZWVkZWQgcHJpbWFyaWx5IHRvIGxvY2F0ZSB0aGUgcmVhbCBob3Jpem9udGFsXG4gICAgICogY2VudGVyIG9mIHRoZSBwYXR0ZXJuIGluIGNhc2VzIG9mIGV4dHJlbWUgc2tldy5cbiAgICAgKiBBbmQgdGhlbiB3ZSBjcm9zcy1jcm9zcy1jcm9zcyBjaGVjayB3aXRoIGFub3RoZXIgZGlhZ29uYWwgc2Nhbi48L3A+XG4gICAgICpcbiAgICAgKiA8cD5JZiB0aGF0IHN1Y2NlZWRzIHRoZSBmaW5kZXIgcGF0dGVybiBsb2NhdGlvbiBpcyBhZGRlZCB0byBhIGxpc3QgdGhhdCB0cmFja3NcbiAgICAgKiB0aGUgbnVtYmVyIG9mIHRpbWVzIGVhY2ggbG9jYXRpb24gaGFzIGJlZW4gbmVhcmx5LW1hdGNoZWQgYXMgYSBmaW5kZXIgcGF0dGVybi5cbiAgICAgKiBFYWNoIGFkZGl0aW9uYWwgZmluZCBpcyBtb3JlIGV2aWRlbmNlIHRoYXQgdGhlIGxvY2F0aW9uIGlzIGluIGZhY3QgYSBmaW5kZXJcbiAgICAgKiBwYXR0ZXJuIGNlbnRlclxuICAgICAqXG4gICAgICogQHBhcmFtIHN0YXRlQ291bnQgcmVhZGluZyBzdGF0ZSBtb2R1bGUgY291bnRzIGZyb20gaG9yaXpvbnRhbCBzY2FuXG4gICAgICogQHBhcmFtIGkgcm93IHdoZXJlIGZpbmRlciBwYXR0ZXJuIG1heSBiZSBmb3VuZFxuICAgICAqIEBwYXJhbSBqIGVuZCBvZiBwb3NzaWJsZSBmaW5kZXIgcGF0dGVybiBpbiByb3dcbiAgICAgKiBAcGFyYW0gcHVyZUJhcmNvZGUgdHJ1ZSBpZiBpbiBcInB1cmUgYmFyY29kZVwiIG1vZGVcbiAgICAgKiBAcmV0dXJuIHRydWUgaWYgYSBmaW5kZXIgcGF0dGVybiBjYW5kaWRhdGUgd2FzIGZvdW5kIHRoaXMgdGltZVxuICAgICAqL1xuICAgIEZpbmRlclBhdHRlcm5GaW5kZXIucHJvdG90eXBlLmhhbmRsZVBvc3NpYmxlQ2VudGVyID0gZnVuY3Rpb24gKHN0YXRlQ291bnQsIGkgLyppbnQqLywgaiAvKmludCovLCBwdXJlQmFyY29kZSkge1xuICAgICAgICB2YXIgc3RhdGVDb3VudFRvdGFsID0gc3RhdGVDb3VudFswXSArIHN0YXRlQ291bnRbMV0gKyBzdGF0ZUNvdW50WzJdICsgc3RhdGVDb3VudFszXSArXG4gICAgICAgICAgICBzdGF0ZUNvdW50WzRdO1xuICAgICAgICB2YXIgY2VudGVySiA9IEZpbmRlclBhdHRlcm5GaW5kZXIuY2VudGVyRnJvbUVuZChzdGF0ZUNvdW50LCBqKTtcbiAgICAgICAgdmFyIGNlbnRlckkgPSB0aGlzLmNyb3NzQ2hlY2tWZXJ0aWNhbChpLCAvKihpbnQpICovIE1hdGguZmxvb3IoY2VudGVySiksIHN0YXRlQ291bnRbMl0sIHN0YXRlQ291bnRUb3RhbCk7XG4gICAgICAgIGlmICghaXNOYU4oY2VudGVySSkpIHtcbiAgICAgICAgICAgIC8vIFJlLWNyb3NzIGNoZWNrXG4gICAgICAgICAgICBjZW50ZXJKID0gdGhpcy5jcm9zc0NoZWNrSG9yaXpvbnRhbCgvKihpbnQpICovIE1hdGguZmxvb3IoY2VudGVySiksIC8qKGludCkgKi8gTWF0aC5mbG9vcihjZW50ZXJJKSwgc3RhdGVDb3VudFsyXSwgc3RhdGVDb3VudFRvdGFsKTtcbiAgICAgICAgICAgIGlmICghaXNOYU4oY2VudGVySikgJiZcbiAgICAgICAgICAgICAgICAoIXB1cmVCYXJjb2RlIHx8IHRoaXMuY3Jvc3NDaGVja0RpYWdvbmFsKC8qKGludCkgKi8gTWF0aC5mbG9vcihjZW50ZXJJKSwgLyooaW50KSAqLyBNYXRoLmZsb29yKGNlbnRlckopLCBzdGF0ZUNvdW50WzJdLCBzdGF0ZUNvdW50VG90YWwpKSkge1xuICAgICAgICAgICAgICAgIHZhciBlc3RpbWF0ZWRNb2R1bGVTaXplID0gc3RhdGVDb3VudFRvdGFsIC8gNy4wO1xuICAgICAgICAgICAgICAgIHZhciBmb3VuZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHZhciBwb3NzaWJsZUNlbnRlcnMgPSB0aGlzLnBvc3NpYmxlQ2VudGVycztcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpbmRleCA9IDAsIGxlbmd0aF8xID0gcG9zc2libGVDZW50ZXJzLmxlbmd0aDsgaW5kZXggPCBsZW5ndGhfMTsgaW5kZXgrKykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgY2VudGVyID0gcG9zc2libGVDZW50ZXJzW2luZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgLy8gTG9vayBmb3IgYWJvdXQgdGhlIHNhbWUgY2VudGVyIGFuZCBtb2R1bGUgc2l6ZTpcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNlbnRlci5hYm91dEVxdWFscyhlc3RpbWF0ZWRNb2R1bGVTaXplLCBjZW50ZXJJLCBjZW50ZXJKKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9zc2libGVDZW50ZXJzW2luZGV4XSA9IGNlbnRlci5jb21iaW5lRXN0aW1hdGUoY2VudGVySSwgY2VudGVySiwgZXN0aW1hdGVkTW9kdWxlU2l6ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIWZvdW5kKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBwb2ludCA9IG5ldyBGaW5kZXJQYXR0ZXJuXzEuZGVmYXVsdChjZW50ZXJKLCBjZW50ZXJJLCBlc3RpbWF0ZWRNb2R1bGVTaXplKTtcbiAgICAgICAgICAgICAgICAgICAgcG9zc2libGVDZW50ZXJzLnB1c2gocG9pbnQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZXN1bHRQb2ludENhbGxiYWNrICE9PSBudWxsICYmIHRoaXMucmVzdWx0UG9pbnRDYWxsYmFjayAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc3VsdFBvaW50Q2FsbGJhY2suZm91bmRQb3NzaWJsZVJlc3VsdFBvaW50KHBvaW50KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIG51bWJlciBvZiByb3dzIHdlIGNvdWxkIHNhZmVseSBza2lwIGR1cmluZyBzY2FubmluZywgYmFzZWQgb24gdGhlIGZpcnN0XG4gICAgICogICAgICAgICB0d28gZmluZGVyIHBhdHRlcm5zIHRoYXQgaGF2ZSBiZWVuIGxvY2F0ZWQuIEluIHNvbWUgY2FzZXMgdGhlaXIgcG9zaXRpb24gd2lsbFxuICAgICAqICAgICAgICAgYWxsb3cgdXMgdG8gaW5mZXIgdGhhdCB0aGUgdGhpcmQgcGF0dGVybiBtdXN0IGxpZSBiZWxvdyBhIGNlcnRhaW4gcG9pbnQgZmFydGhlclxuICAgICAqICAgICAgICAgZG93biBpbiB0aGUgaW1hZ2UuXG4gICAgICovXG4gICAgRmluZGVyUGF0dGVybkZpbmRlci5wcm90b3R5cGUuZmluZFJvd1NraXAgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBlXzEsIF9hO1xuICAgICAgICB2YXIgbWF4ID0gdGhpcy5wb3NzaWJsZUNlbnRlcnMubGVuZ3RoO1xuICAgICAgICBpZiAobWF4IDw9IDEpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIHZhciBmaXJzdENvbmZpcm1lZENlbnRlciA9IG51bGw7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKHRoaXMucG9zc2libGVDZW50ZXJzKSwgX2MgPSBfYi5uZXh0KCk7ICFfYy5kb25lOyBfYyA9IF9iLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciBjZW50ZXIgPSBfYy52YWx1ZTtcbiAgICAgICAgICAgICAgICBpZiAoY2VudGVyLmdldENvdW50KCkgPj0gRmluZGVyUGF0dGVybkZpbmRlci5DRU5URVJfUVVPUlVNKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaXJzdENvbmZpcm1lZENlbnRlciA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaXJzdENvbmZpcm1lZENlbnRlciA9IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgdHdvIGNvbmZpcm1lZCBjZW50ZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBIb3cgZmFyIGRvd24gY2FuIHdlIHNraXAgYmVmb3JlIHJlc3VtaW5nIGxvb2tpbmcgZm9yIHRoZSBuZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBwYXR0ZXJuPyBJbiB0aGUgd29yc3QgY2FzZSwgb25seSB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGlmZmVyZW5jZSBpbiB0aGUgeCAvIHkgY29vcmRpbmF0ZXMgb2YgdGhlIHR3byBjZW50ZXJzLlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgY2FzZSB3aGVyZSB5b3UgZmluZCB0b3AgbGVmdCBsYXN0LlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYXNTa2lwcGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKihpbnQpICovIE1hdGguZmxvb3IoKE1hdGguYWJzKGZpcnN0Q29uZmlybWVkQ2VudGVyLmdldFgoKSAtIGNlbnRlci5nZXRYKCkpIC1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRoLmFicyhmaXJzdENvbmZpcm1lZENlbnRlci5nZXRZKCkgLSBjZW50ZXIuZ2V0WSgpKSkgLyAyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAwO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHJldHVybiB0cnVlIGlmZiB3ZSBoYXZlIGZvdW5kIGF0IGxlYXN0IDMgZmluZGVyIHBhdHRlcm5zIHRoYXQgaGF2ZSBiZWVuIGRldGVjdGVkXG4gICAgICogICAgICAgICBhdCBsZWFzdCB7QGxpbmsgI0NFTlRFUl9RVU9SVU19IHRpbWVzIGVhY2gsIGFuZCwgdGhlIGVzdGltYXRlZCBtb2R1bGUgc2l6ZSBvZiB0aGVcbiAgICAgKiAgICAgICAgIGNhbmRpZGF0ZXMgaXMgXCJwcmV0dHkgc2ltaWxhclwiXG4gICAgICovXG4gICAgRmluZGVyUGF0dGVybkZpbmRlci5wcm90b3R5cGUuaGF2ZU11bHRpcGx5Q29uZmlybWVkQ2VudGVycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGVfMiwgX2EsIGVfMywgX2I7XG4gICAgICAgIHZhciBjb25maXJtZWRDb3VudCA9IDA7XG4gICAgICAgIHZhciB0b3RhbE1vZHVsZVNpemUgPSAwLjA7XG4gICAgICAgIHZhciBtYXggPSB0aGlzLnBvc3NpYmxlQ2VudGVycy5sZW5ndGg7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKHZhciBfYyA9IF9fdmFsdWVzKHRoaXMucG9zc2libGVDZW50ZXJzKSwgX2QgPSBfYy5uZXh0KCk7ICFfZC5kb25lOyBfZCA9IF9jLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciBwYXR0ZXJuID0gX2QudmFsdWU7XG4gICAgICAgICAgICAgICAgaWYgKHBhdHRlcm4uZ2V0Q291bnQoKSA+PSBGaW5kZXJQYXR0ZXJuRmluZGVyLkNFTlRFUl9RVU9SVU0pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uZmlybWVkQ291bnQrKztcbiAgICAgICAgICAgICAgICAgICAgdG90YWxNb2R1bGVTaXplICs9IHBhdHRlcm4uZ2V0RXN0aW1hdGVkTW9kdWxlU2l6ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZV8yXzEpIHsgZV8yID0geyBlcnJvcjogZV8yXzEgfTsgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKF9kICYmICFfZC5kb25lICYmIChfYSA9IF9jLnJldHVybikpIF9hLmNhbGwoX2MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzIpIHRocm93IGVfMi5lcnJvcjsgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChjb25maXJtZWRDb3VudCA8IDMpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBPSywgd2UgaGF2ZSBhdCBsZWFzdCAzIGNvbmZpcm1lZCBjZW50ZXJzLCBidXQsIGl0J3MgcG9zc2libGUgdGhhdCBvbmUgaXMgYSBcImZhbHNlIHBvc2l0aXZlXCJcbiAgICAgICAgLy8gYW5kIHRoYXQgd2UgbmVlZCB0byBrZWVwIGxvb2tpbmcuIFdlIGRldGVjdCB0aGlzIGJ5IGFza2luZyBpZiB0aGUgZXN0aW1hdGVkIG1vZHVsZSBzaXplc1xuICAgICAgICAvLyB2YXJ5IHRvbyBtdWNoLiBXZSBhcmJpdHJhcmlseSBzYXkgdGhhdCB3aGVuIHRoZSB0b3RhbCBkZXZpYXRpb24gZnJvbSBhdmVyYWdlIGV4Y2VlZHNcbiAgICAgICAgLy8gNSUgb2YgdGhlIHRvdGFsIG1vZHVsZSBzaXplIGVzdGltYXRlcywgaXQncyB0b28gbXVjaC5cbiAgICAgICAgdmFyIGF2ZXJhZ2UgPSB0b3RhbE1vZHVsZVNpemUgLyBtYXg7XG4gICAgICAgIHZhciB0b3RhbERldmlhdGlvbiA9IDAuMDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAodmFyIF9lID0gX192YWx1ZXModGhpcy5wb3NzaWJsZUNlbnRlcnMpLCBfZiA9IF9lLm5leHQoKTsgIV9mLmRvbmU7IF9mID0gX2UubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHBhdHRlcm4gPSBfZi52YWx1ZTtcbiAgICAgICAgICAgICAgICB0b3RhbERldmlhdGlvbiArPSBNYXRoLmFicyhwYXR0ZXJuLmdldEVzdGltYXRlZE1vZHVsZVNpemUoKSAtIGF2ZXJhZ2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlXzNfMSkgeyBlXzMgPSB7IGVycm9yOiBlXzNfMSB9OyB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoX2YgJiYgIV9mLmRvbmUgJiYgKF9iID0gX2UucmV0dXJuKSkgX2IuY2FsbChfZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMykgdGhyb3cgZV8zLmVycm9yOyB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRvdGFsRGV2aWF0aW9uIDw9IDAuMDUgKiB0b3RhbE1vZHVsZVNpemU7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHRoZSAzIGJlc3Qge0BsaW5rIEZpbmRlclBhdHRlcm59cyBmcm9tIG91ciBsaXN0IG9mIGNhbmRpZGF0ZXMuIFRoZSBcImJlc3RcIiBhcmVcbiAgICAgKiAgICAgICAgIHRob3NlIHRoYXQgaGF2ZSBiZWVuIGRldGVjdGVkIGF0IGxlYXN0IHtAbGluayAjQ0VOVEVSX1FVT1JVTX0gdGltZXMsIGFuZCB3aG9zZSBtb2R1bGVcbiAgICAgKiAgICAgICAgIHNpemUgZGlmZmVycyBmcm9tIHRoZSBhdmVyYWdlIGFtb25nIHRob3NlIHBhdHRlcm5zIHRoZSBsZWFzdFxuICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb24gaWYgMyBzdWNoIGZpbmRlciBwYXR0ZXJucyBkbyBub3QgZXhpc3RcbiAgICAgKi9cbiAgICBGaW5kZXJQYXR0ZXJuRmluZGVyLnByb3RvdHlwZS5zZWxlY3RCZXN0UGF0dGVybnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBlXzQsIF9hLCBlXzUsIF9iO1xuICAgICAgICB2YXIgc3RhcnRTaXplID0gdGhpcy5wb3NzaWJsZUNlbnRlcnMubGVuZ3RoO1xuICAgICAgICBpZiAoc3RhcnRTaXplIDwgMykge1xuICAgICAgICAgICAgLy8gQ291bGRuJ3QgZmluZCBlbm91Z2ggZmluZGVyIHBhdHRlcm5zXG4gICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHBvc3NpYmxlQ2VudGVycyA9IHRoaXMucG9zc2libGVDZW50ZXJzO1xuICAgICAgICB2YXIgYXZlcmFnZTtcbiAgICAgICAgLy8gRmlsdGVyIG91dGxpZXIgcG9zc2liaWxpdGllcyB3aG9zZSBtb2R1bGUgc2l6ZSBpcyB0b28gZGlmZmVyZW50XG4gICAgICAgIGlmIChzdGFydFNpemUgPiAzKSB7XG4gICAgICAgICAgICAvLyBCdXQgd2UgY2FuIG9ubHkgYWZmb3JkIHRvIGRvIHNvIGlmIHdlIGhhdmUgYXQgbGVhc3QgNCBwb3NzaWJpbGl0aWVzIHRvIGNob29zZSBmcm9tXG4gICAgICAgICAgICB2YXIgdG90YWxNb2R1bGVTaXplID0gMC4wO1xuICAgICAgICAgICAgdmFyIHNxdWFyZSA9IDAuMDtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgX2MgPSBfX3ZhbHVlcyh0aGlzLnBvc3NpYmxlQ2VudGVycyksIF9kID0gX2MubmV4dCgpOyAhX2QuZG9uZTsgX2QgPSBfYy5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNlbnRlciA9IF9kLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB2YXIgc2l6ZSA9IGNlbnRlci5nZXRFc3RpbWF0ZWRNb2R1bGVTaXplKCk7XG4gICAgICAgICAgICAgICAgICAgIHRvdGFsTW9kdWxlU2l6ZSArPSBzaXplO1xuICAgICAgICAgICAgICAgICAgICBzcXVhcmUgKz0gc2l6ZSAqIHNpemU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVfNF8xKSB7IGVfNCA9IHsgZXJyb3I6IGVfNF8xIH07IH1cbiAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChfZCAmJiAhX2QuZG9uZSAmJiAoX2EgPSBfYy5yZXR1cm4pKSBfYS5jYWxsKF9jKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzQpIHRocm93IGVfNC5lcnJvcjsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXZlcmFnZSA9IHRvdGFsTW9kdWxlU2l6ZSAvIHN0YXJ0U2l6ZTtcbiAgICAgICAgICAgIHZhciBzdGREZXYgPSBNYXRoLnNxcnQoc3F1YXJlIC8gc3RhcnRTaXplIC0gYXZlcmFnZSAqIGF2ZXJhZ2UpO1xuICAgICAgICAgICAgcG9zc2libGVDZW50ZXJzLnNvcnQoXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIDxwPk9yZGVycyBieSBmdXJ0aGVzdCBmcm9tIGF2ZXJhZ2U8L3A+XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIC8vIEZ1cnRoZXN0RnJvbUF2ZXJhZ2VDb21wYXJhdG9yIGltcGxlbWVudHMgQ29tcGFyYXRvcjxGaW5kZXJQYXR0ZXJuPlxuICAgICAgICAgICAgZnVuY3Rpb24gKGNlbnRlcjEsIGNlbnRlcjIpIHtcbiAgICAgICAgICAgICAgICB2YXIgZEEgPSBNYXRoLmFicyhjZW50ZXIyLmdldEVzdGltYXRlZE1vZHVsZVNpemUoKSAtIGF2ZXJhZ2UpO1xuICAgICAgICAgICAgICAgIHZhciBkQiA9IE1hdGguYWJzKGNlbnRlcjEuZ2V0RXN0aW1hdGVkTW9kdWxlU2l6ZSgpIC0gYXZlcmFnZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRBIDwgZEIgPyAtMSA6IGRBID4gZEIgPyAxIDogMDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdmFyIGxpbWl0ID0gTWF0aC5tYXgoMC4yICogYXZlcmFnZSwgc3RkRGV2KTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9zc2libGVDZW50ZXJzLmxlbmd0aCAmJiBwb3NzaWJsZUNlbnRlcnMubGVuZ3RoID4gMzsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIHBhdHRlcm4gPSBwb3NzaWJsZUNlbnRlcnNbaV07XG4gICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKHBhdHRlcm4uZ2V0RXN0aW1hdGVkTW9kdWxlU2l6ZSgpIC0gYXZlcmFnZSkgPiBsaW1pdCkge1xuICAgICAgICAgICAgICAgICAgICBwb3NzaWJsZUNlbnRlcnMuc3BsaWNlKGksIDEpO1xuICAgICAgICAgICAgICAgICAgICBpLS07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChwb3NzaWJsZUNlbnRlcnMubGVuZ3RoID4gMykge1xuICAgICAgICAgICAgLy8gVGhyb3cgYXdheSBhbGwgYnV0IHRob3NlIGZpcnN0IHNpemUgY2FuZGlkYXRlIHBvaW50cyB3ZSBmb3VuZC5cbiAgICAgICAgICAgIHZhciB0b3RhbE1vZHVsZVNpemUgPSAwLjA7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIHBvc3NpYmxlQ2VudGVyc18xID0gX192YWx1ZXMocG9zc2libGVDZW50ZXJzKSwgcG9zc2libGVDZW50ZXJzXzFfMSA9IHBvc3NpYmxlQ2VudGVyc18xLm5leHQoKTsgIXBvc3NpYmxlQ2VudGVyc18xXzEuZG9uZTsgcG9zc2libGVDZW50ZXJzXzFfMSA9IHBvc3NpYmxlQ2VudGVyc18xLm5leHQoKSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcG9zc2libGVDZW50ZXIgPSBwb3NzaWJsZUNlbnRlcnNfMV8xLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB0b3RhbE1vZHVsZVNpemUgKz0gcG9zc2libGVDZW50ZXIuZ2V0RXN0aW1hdGVkTW9kdWxlU2l6ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlXzVfMSkgeyBlXzUgPSB7IGVycm9yOiBlXzVfMSB9OyB9XG4gICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBpZiAocG9zc2libGVDZW50ZXJzXzFfMSAmJiAhcG9zc2libGVDZW50ZXJzXzFfMS5kb25lICYmIChfYiA9IHBvc3NpYmxlQ2VudGVyc18xLnJldHVybikpIF9iLmNhbGwocG9zc2libGVDZW50ZXJzXzEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfNSkgdGhyb3cgZV81LmVycm9yOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhdmVyYWdlID0gdG90YWxNb2R1bGVTaXplIC8gcG9zc2libGVDZW50ZXJzLmxlbmd0aDtcbiAgICAgICAgICAgIHBvc3NpYmxlQ2VudGVycy5zb3J0KFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiA8cD5PcmRlcnMgYnkge0BsaW5rIEZpbmRlclBhdHRlcm4jZ2V0Q291bnQoKX0sIGRlc2NlbmRpbmcuPC9wPlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAvLyBDZW50ZXJDb21wYXJhdG9yIGltcGxlbWVudHMgQ29tcGFyYXRvcjxGaW5kZXJQYXR0ZXJuPlxuICAgICAgICAgICAgZnVuY3Rpb24gKGNlbnRlcjEsIGNlbnRlcjIpIHtcbiAgICAgICAgICAgICAgICBpZiAoY2VudGVyMi5nZXRDb3VudCgpID09PSBjZW50ZXIxLmdldENvdW50KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRBID0gTWF0aC5hYnMoY2VudGVyMi5nZXRFc3RpbWF0ZWRNb2R1bGVTaXplKCkgLSBhdmVyYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRCID0gTWF0aC5hYnMoY2VudGVyMS5nZXRFc3RpbWF0ZWRNb2R1bGVTaXplKCkgLSBhdmVyYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRBIDwgZEIgPyAxIDogZEEgPiBkQiA/IC0xIDogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjZW50ZXIyLmdldENvdW50KCkgLSBjZW50ZXIxLmdldENvdW50KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBwb3NzaWJsZUNlbnRlcnMuc3BsaWNlKDMpOyAvLyB0aGlzIGlzIG5vdCByZWFseSBuZWNlc3NhcnkgYXMgd2Ugb25seSByZXR1cm4gZmlyc3QgMyBhbnl3YXlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgcG9zc2libGVDZW50ZXJzWzBdLFxuICAgICAgICAgICAgcG9zc2libGVDZW50ZXJzWzFdLFxuICAgICAgICAgICAgcG9zc2libGVDZW50ZXJzWzJdXG4gICAgICAgIF07XG4gICAgfTtcbiAgICBGaW5kZXJQYXR0ZXJuRmluZGVyLkNFTlRFUl9RVU9SVU0gPSAyO1xuICAgIEZpbmRlclBhdHRlcm5GaW5kZXIuTUlOX1NLSVAgPSAzOyAvLyAxIHBpeGVsL21vZHVsZSB0aW1lcyAzIG1vZHVsZXMvY2VudGVyXG4gICAgRmluZGVyUGF0dGVybkZpbmRlci5NQVhfTU9EVUxFUyA9IDU3OyAvLyBzdXBwb3J0IHVwIHRvIHZlcnNpb24gMTAgZm9yIG1vYmlsZSBjbGllbnRzXG4gICAgcmV0dXJuIEZpbmRlclBhdHRlcm5GaW5kZXI7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gRmluZGVyUGF0dGVybkZpbmRlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUZpbmRlclBhdHRlcm5GaW5kZXIuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IDIwMDcgWlhpbmcgYXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBNYXRoVXRpbHNfMSA9IHJlcXVpcmUoXCIuLi8uLi9jb21tb24vZGV0ZWN0b3IvTWF0aFV0aWxzXCIpO1xudmFyIERldGVjdG9yUmVzdWx0XzEgPSByZXF1aXJlKFwiLi4vLi4vY29tbW9uL0RldGVjdG9yUmVzdWx0XCIpO1xuLy8gaW1wb3J0IEdyaWRTYW1wbGVyIGZyb20gJy4uLy4uL2NvbW1vbi9HcmlkU2FtcGxlcic7XG52YXIgR3JpZFNhbXBsZXJJbnN0YW5jZV8xID0gcmVxdWlyZShcIi4uLy4uL2NvbW1vbi9HcmlkU2FtcGxlckluc3RhbmNlXCIpO1xudmFyIFBlcnNwZWN0aXZlVHJhbnNmb3JtXzEgPSByZXF1aXJlKFwiLi4vLi4vY29tbW9uL1BlcnNwZWN0aXZlVHJhbnNmb3JtXCIpO1xudmFyIERlY29kZUhpbnRUeXBlXzEgPSByZXF1aXJlKFwiLi4vLi4vRGVjb2RlSGludFR5cGVcIik7XG52YXIgTm90Rm91bmRFeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuLi8uLi9Ob3RGb3VuZEV4Y2VwdGlvblwiKTtcbnZhciBSZXN1bHRQb2ludF8xID0gcmVxdWlyZShcIi4uLy4uL1Jlc3VsdFBvaW50XCIpO1xudmFyIFZlcnNpb25fMSA9IHJlcXVpcmUoXCIuLi9kZWNvZGVyL1ZlcnNpb25cIik7XG52YXIgQWxpZ25tZW50UGF0dGVybkZpbmRlcl8xID0gcmVxdWlyZShcIi4vQWxpZ25tZW50UGF0dGVybkZpbmRlclwiKTtcbnZhciBGaW5kZXJQYXR0ZXJuRmluZGVyXzEgPSByZXF1aXJlKFwiLi9GaW5kZXJQYXR0ZXJuRmluZGVyXCIpO1xuLyppbXBvcnQgamF2YS51dGlsLk1hcDsqL1xuLyoqXG4gKiA8cD5FbmNhcHN1bGF0ZXMgbG9naWMgdGhhdCBjYW4gZGV0ZWN0IGEgUVIgQ29kZSBpbiBhbiBpbWFnZSwgZXZlbiBpZiB0aGUgUVIgQ29kZVxuICogaXMgcm90YXRlZCBvciBza2V3ZWQsIG9yIHBhcnRpYWxseSBvYnNjdXJlZC48L3A+XG4gKlxuICogQGF1dGhvciBTZWFuIE93ZW5cbiAqL1xudmFyIERldGVjdG9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIERldGVjdG9yKGltYWdlKSB7XG4gICAgICAgIHRoaXMuaW1hZ2UgPSBpbWFnZTtcbiAgICB9XG4gICAgRGV0ZWN0b3IucHJvdG90eXBlLmdldEltYWdlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pbWFnZTtcbiAgICB9O1xuICAgIERldGVjdG9yLnByb3RvdHlwZS5nZXRSZXN1bHRQb2ludENhbGxiYWNrID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXN1bHRQb2ludENhbGxiYWNrO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogPHA+RGV0ZWN0cyBhIFFSIENvZGUgaW4gYW4gaW1hZ2UuPC9wPlxuICAgICAqXG4gICAgICogQHJldHVybiB7QGxpbmsgRGV0ZWN0b3JSZXN1bHR9IGVuY2Fwc3VsYXRpbmcgcmVzdWx0cyBvZiBkZXRlY3RpbmcgYSBRUiBDb2RlXG4gICAgICogQHRocm93cyBOb3RGb3VuZEV4Y2VwdGlvbiBpZiBRUiBDb2RlIGNhbm5vdCBiZSBmb3VuZFxuICAgICAqIEB0aHJvd3MgRm9ybWF0RXhjZXB0aW9uIGlmIGEgUVIgQ29kZSBjYW5ub3QgYmUgZGVjb2RlZFxuICAgICAqL1xuICAgIC8vIHB1YmxpYyBkZXRlY3QoKTogRGV0ZWN0b3JSZXN1bHQgLyp0aHJvd3MgTm90Rm91bmRFeGNlcHRpb24sIEZvcm1hdEV4Y2VwdGlvbiovIHtcbiAgICAvLyAgIHJldHVybiBkZXRlY3QobnVsbClcbiAgICAvLyB9XG4gICAgLyoqXG4gICAgICogPHA+RGV0ZWN0cyBhIFFSIENvZGUgaW4gYW4gaW1hZ2UuPC9wPlxuICAgICAqXG4gICAgICogQHBhcmFtIGhpbnRzIG9wdGlvbmFsIGhpbnRzIHRvIGRldGVjdG9yXG4gICAgICogQHJldHVybiB7QGxpbmsgRGV0ZWN0b3JSZXN1bHR9IGVuY2Fwc3VsYXRpbmcgcmVzdWx0cyBvZiBkZXRlY3RpbmcgYSBRUiBDb2RlXG4gICAgICogQHRocm93cyBOb3RGb3VuZEV4Y2VwdGlvbiBpZiBRUiBDb2RlIGNhbm5vdCBiZSBmb3VuZFxuICAgICAqIEB0aHJvd3MgRm9ybWF0RXhjZXB0aW9uIGlmIGEgUVIgQ29kZSBjYW5ub3QgYmUgZGVjb2RlZFxuICAgICAqL1xuICAgIERldGVjdG9yLnByb3RvdHlwZS5kZXRlY3QgPSBmdW5jdGlvbiAoaGludHMpIHtcbiAgICAgICAgdGhpcy5yZXN1bHRQb2ludENhbGxiYWNrID0gKGhpbnRzID09PSBudWxsIHx8IGhpbnRzID09PSB1bmRlZmluZWQpID8gbnVsbCA6XG4gICAgICAgICAgICAvKihSZXN1bHRQb2ludENhbGxiYWNrKSAqLyBoaW50cy5nZXQoRGVjb2RlSGludFR5cGVfMS5kZWZhdWx0Lk5FRURfUkVTVUxUX1BPSU5UX0NBTExCQUNLKTtcbiAgICAgICAgdmFyIGZpbmRlciA9IG5ldyBGaW5kZXJQYXR0ZXJuRmluZGVyXzEuZGVmYXVsdCh0aGlzLmltYWdlLCB0aGlzLnJlc3VsdFBvaW50Q2FsbGJhY2spO1xuICAgICAgICB2YXIgaW5mbyA9IGZpbmRlci5maW5kKGhpbnRzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc0ZpbmRlclBhdHRlcm5JbmZvKGluZm8pO1xuICAgIH07XG4gICAgRGV0ZWN0b3IucHJvdG90eXBlLnByb2Nlc3NGaW5kZXJQYXR0ZXJuSW5mbyA9IGZ1bmN0aW9uIChpbmZvKSB7XG4gICAgICAgIHZhciB0b3BMZWZ0ID0gaW5mby5nZXRUb3BMZWZ0KCk7XG4gICAgICAgIHZhciB0b3BSaWdodCA9IGluZm8uZ2V0VG9wUmlnaHQoKTtcbiAgICAgICAgdmFyIGJvdHRvbUxlZnQgPSBpbmZvLmdldEJvdHRvbUxlZnQoKTtcbiAgICAgICAgdmFyIG1vZHVsZVNpemUgPSB0aGlzLmNhbGN1bGF0ZU1vZHVsZVNpemUodG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQpO1xuICAgICAgICBpZiAobW9kdWxlU2l6ZSA8IDEuMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgnTm8gcGF0dGVybiBmb3VuZCBpbiBwcm9jY2VzcyBmaW5kZXIuJyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGRpbWVuc2lvbiA9IERldGVjdG9yLmNvbXB1dGVEaW1lbnNpb24odG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIG1vZHVsZVNpemUpO1xuICAgICAgICB2YXIgcHJvdmlzaW9uYWxWZXJzaW9uID0gVmVyc2lvbl8xLmRlZmF1bHQuZ2V0UHJvdmlzaW9uYWxWZXJzaW9uRm9yRGltZW5zaW9uKGRpbWVuc2lvbik7XG4gICAgICAgIHZhciBtb2R1bGVzQmV0d2VlbkZQQ2VudGVycyA9IHByb3Zpc2lvbmFsVmVyc2lvbi5nZXREaW1lbnNpb25Gb3JWZXJzaW9uKCkgLSA3O1xuICAgICAgICB2YXIgYWxpZ25tZW50UGF0dGVybiA9IG51bGw7XG4gICAgICAgIC8vIEFueXRoaW5nIGFib3ZlIHZlcnNpb24gMSBoYXMgYW4gYWxpZ25tZW50IHBhdHRlcm5cbiAgICAgICAgaWYgKHByb3Zpc2lvbmFsVmVyc2lvbi5nZXRBbGlnbm1lbnRQYXR0ZXJuQ2VudGVycygpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIC8vIEd1ZXNzIHdoZXJlIGEgXCJib3R0b20gcmlnaHRcIiBmaW5kZXIgcGF0dGVybiB3b3VsZCBoYXZlIGJlZW5cbiAgICAgICAgICAgIHZhciBib3R0b21SaWdodFggPSB0b3BSaWdodC5nZXRYKCkgLSB0b3BMZWZ0LmdldFgoKSArIGJvdHRvbUxlZnQuZ2V0WCgpO1xuICAgICAgICAgICAgdmFyIGJvdHRvbVJpZ2h0WSA9IHRvcFJpZ2h0LmdldFkoKSAtIHRvcExlZnQuZ2V0WSgpICsgYm90dG9tTGVmdC5nZXRZKCk7XG4gICAgICAgICAgICAvLyBFc3RpbWF0ZSB0aGF0IGFsaWdubWVudCBwYXR0ZXJuIGlzIGNsb3NlciBieSAzIG1vZHVsZXNcbiAgICAgICAgICAgIC8vIGZyb20gXCJib3R0b20gcmlnaHRcIiB0byBrbm93biB0b3AgbGVmdCBsb2NhdGlvblxuICAgICAgICAgICAgdmFyIGNvcnJlY3Rpb25Ub1RvcExlZnQgPSAxLjAgLSAzLjAgLyBtb2R1bGVzQmV0d2VlbkZQQ2VudGVycztcbiAgICAgICAgICAgIHZhciBlc3RBbGlnbm1lbnRYID0gLyooaW50KSAqLyBNYXRoLmZsb29yKHRvcExlZnQuZ2V0WCgpICsgY29ycmVjdGlvblRvVG9wTGVmdCAqIChib3R0b21SaWdodFggLSB0b3BMZWZ0LmdldFgoKSkpO1xuICAgICAgICAgICAgdmFyIGVzdEFsaWdubWVudFkgPSAvKihpbnQpICovIE1hdGguZmxvb3IodG9wTGVmdC5nZXRZKCkgKyBjb3JyZWN0aW9uVG9Ub3BMZWZ0ICogKGJvdHRvbVJpZ2h0WSAtIHRvcExlZnQuZ2V0WSgpKSk7XG4gICAgICAgICAgICAvLyBLaW5kIG9mIGFyYml0cmFyeSAtLSBleHBhbmQgc2VhcmNoIHJhZGl1cyBiZWZvcmUgZ2l2aW5nIHVwXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gNDsgaSA8PSAxNjsgaSA8PD0gMSkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGFsaWdubWVudFBhdHRlcm4gPSB0aGlzLmZpbmRBbGlnbm1lbnRJblJlZ2lvbihtb2R1bGVTaXplLCBlc3RBbGlnbm1lbnRYLCBlc3RBbGlnbm1lbnRZLCBpKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChyZSAvKk5vdEZvdW5kRXhjZXB0aW9uKi8pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEocmUgaW5zdGFuY2VvZiBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyB0cnkgbmV4dCByb3VuZFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIElmIHdlIGRpZG4ndCBmaW5kIGFsaWdubWVudCBwYXR0ZXJuLi4uIHdlbGwgdHJ5IGFueXdheSB3aXRob3V0IGl0XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRyYW5zZm9ybSA9IERldGVjdG9yLmNyZWF0ZVRyYW5zZm9ybSh0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYWxpZ25tZW50UGF0dGVybiwgZGltZW5zaW9uKTtcbiAgICAgICAgdmFyIGJpdHMgPSBEZXRlY3Rvci5zYW1wbGVHcmlkKHRoaXMuaW1hZ2UsIHRyYW5zZm9ybSwgZGltZW5zaW9uKTtcbiAgICAgICAgdmFyIHBvaW50cztcbiAgICAgICAgaWYgKGFsaWdubWVudFBhdHRlcm4gPT09IG51bGwpIHtcbiAgICAgICAgICAgIHBvaW50cyA9IFtib3R0b21MZWZ0LCB0b3BMZWZ0LCB0b3BSaWdodF07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwb2ludHMgPSBbYm90dG9tTGVmdCwgdG9wTGVmdCwgdG9wUmlnaHQsIGFsaWdubWVudFBhdHRlcm5dO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgRGV0ZWN0b3JSZXN1bHRfMS5kZWZhdWx0KGJpdHMsIHBvaW50cyk7XG4gICAgfTtcbiAgICBEZXRlY3Rvci5jcmVhdGVUcmFuc2Zvcm0gPSBmdW5jdGlvbiAodG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGFsaWdubWVudFBhdHRlcm4sIGRpbWVuc2lvbiAvKmludCovKSB7XG4gICAgICAgIHZhciBkaW1NaW51c1RocmVlID0gZGltZW5zaW9uIC0gMy41O1xuICAgICAgICB2YXIgYm90dG9tUmlnaHRYOyAvKmZsb2F0Ki9cbiAgICAgICAgdmFyIGJvdHRvbVJpZ2h0WTsgLypmbG9hdCovXG4gICAgICAgIHZhciBzb3VyY2VCb3R0b21SaWdodFg7IC8qZmxvYXQqL1xuICAgICAgICB2YXIgc291cmNlQm90dG9tUmlnaHRZOyAvKmZsb2F0Ki9cbiAgICAgICAgaWYgKGFsaWdubWVudFBhdHRlcm4gIT09IG51bGwpIHtcbiAgICAgICAgICAgIGJvdHRvbVJpZ2h0WCA9IGFsaWdubWVudFBhdHRlcm4uZ2V0WCgpO1xuICAgICAgICAgICAgYm90dG9tUmlnaHRZID0gYWxpZ25tZW50UGF0dGVybi5nZXRZKCk7XG4gICAgICAgICAgICBzb3VyY2VCb3R0b21SaWdodFggPSBkaW1NaW51c1RocmVlIC0gMy4wO1xuICAgICAgICAgICAgc291cmNlQm90dG9tUmlnaHRZID0gc291cmNlQm90dG9tUmlnaHRYO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gRG9uJ3QgaGF2ZSBhbiBhbGlnbm1lbnQgcGF0dGVybiwganVzdCBtYWtlIHVwIHRoZSBib3R0b20tcmlnaHQgcG9pbnRcbiAgICAgICAgICAgIGJvdHRvbVJpZ2h0WCA9ICh0b3BSaWdodC5nZXRYKCkgLSB0b3BMZWZ0LmdldFgoKSkgKyBib3R0b21MZWZ0LmdldFgoKTtcbiAgICAgICAgICAgIGJvdHRvbVJpZ2h0WSA9ICh0b3BSaWdodC5nZXRZKCkgLSB0b3BMZWZ0LmdldFkoKSkgKyBib3R0b21MZWZ0LmdldFkoKTtcbiAgICAgICAgICAgIHNvdXJjZUJvdHRvbVJpZ2h0WCA9IGRpbU1pbnVzVGhyZWU7XG4gICAgICAgICAgICBzb3VyY2VCb3R0b21SaWdodFkgPSBkaW1NaW51c1RocmVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBQZXJzcGVjdGl2ZVRyYW5zZm9ybV8xLmRlZmF1bHQucXVhZHJpbGF0ZXJhbFRvUXVhZHJpbGF0ZXJhbCgzLjUsIDMuNSwgZGltTWludXNUaHJlZSwgMy41LCBzb3VyY2VCb3R0b21SaWdodFgsIHNvdXJjZUJvdHRvbVJpZ2h0WSwgMy41LCBkaW1NaW51c1RocmVlLCB0b3BMZWZ0LmdldFgoKSwgdG9wTGVmdC5nZXRZKCksIHRvcFJpZ2h0LmdldFgoKSwgdG9wUmlnaHQuZ2V0WSgpLCBib3R0b21SaWdodFgsIGJvdHRvbVJpZ2h0WSwgYm90dG9tTGVmdC5nZXRYKCksIGJvdHRvbUxlZnQuZ2V0WSgpKTtcbiAgICB9O1xuICAgIERldGVjdG9yLnNhbXBsZUdyaWQgPSBmdW5jdGlvbiAoaW1hZ2UsIHRyYW5zZm9ybSwgZGltZW5zaW9uIC8qaW50Ki8pIHtcbiAgICAgICAgdmFyIHNhbXBsZXIgPSBHcmlkU2FtcGxlckluc3RhbmNlXzEuZGVmYXVsdC5nZXRJbnN0YW5jZSgpO1xuICAgICAgICByZXR1cm4gc2FtcGxlci5zYW1wbGVHcmlkV2l0aFRyYW5zZm9ybShpbWFnZSwgZGltZW5zaW9uLCBkaW1lbnNpb24sIHRyYW5zZm9ybSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiA8cD5Db21wdXRlcyB0aGUgZGltZW5zaW9uIChudW1iZXIgb2YgbW9kdWxlcyBvbiBhIHNpemUpIG9mIHRoZSBRUiBDb2RlIGJhc2VkIG9uIHRoZSBwb3NpdGlvblxuICAgICAqIG9mIHRoZSBmaW5kZXIgcGF0dGVybnMgYW5kIGVzdGltYXRlZCBtb2R1bGUgc2l6ZS48L3A+XG4gICAgICovXG4gICAgRGV0ZWN0b3IuY29tcHV0ZURpbWVuc2lvbiA9IGZ1bmN0aW9uICh0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgbW9kdWxlU2l6ZSAvKmZsb2F0Ki8pIHtcbiAgICAgICAgdmFyIHRsdHJDZW50ZXJzRGltZW5zaW9uID0gTWF0aFV0aWxzXzEuZGVmYXVsdC5yb3VuZChSZXN1bHRQb2ludF8xLmRlZmF1bHQuZGlzdGFuY2UodG9wTGVmdCwgdG9wUmlnaHQpIC8gbW9kdWxlU2l6ZSk7XG4gICAgICAgIHZhciB0bGJsQ2VudGVyc0RpbWVuc2lvbiA9IE1hdGhVdGlsc18xLmRlZmF1bHQucm91bmQoUmVzdWx0UG9pbnRfMS5kZWZhdWx0LmRpc3RhbmNlKHRvcExlZnQsIGJvdHRvbUxlZnQpIC8gbW9kdWxlU2l6ZSk7XG4gICAgICAgIHZhciBkaW1lbnNpb24gPSBNYXRoLmZsb29yKCh0bHRyQ2VudGVyc0RpbWVuc2lvbiArIHRsYmxDZW50ZXJzRGltZW5zaW9uKSAvIDIpICsgNztcbiAgICAgICAgc3dpdGNoIChkaW1lbnNpb24gJiAweDAzKSB7IC8vIG1vZCA0XG4gICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgZGltZW5zaW9uKys7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAvLyAxPyBkbyBub3RoaW5nXG4gICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgZGltZW5zaW9uLS07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgnRGltZW5zaW9ucyBjb3VsZCBiZSBub3QgZm91bmQuJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRpbWVuc2lvbjtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIDxwPkNvbXB1dGVzIGFuIGF2ZXJhZ2UgZXN0aW1hdGVkIG1vZHVsZSBzaXplIGJhc2VkIG9uIGVzdGltYXRlZCBkZXJpdmVkIGZyb20gdGhlIHBvc2l0aW9uc1xuICAgICAqIG9mIHRoZSB0aHJlZSBmaW5kZXIgcGF0dGVybnMuPC9wPlxuICAgICAqXG4gICAgICogQHBhcmFtIHRvcExlZnQgZGV0ZWN0ZWQgdG9wLWxlZnQgZmluZGVyIHBhdHRlcm4gY2VudGVyXG4gICAgICogQHBhcmFtIHRvcFJpZ2h0IGRldGVjdGVkIHRvcC1yaWdodCBmaW5kZXIgcGF0dGVybiBjZW50ZXJcbiAgICAgKiBAcGFyYW0gYm90dG9tTGVmdCBkZXRlY3RlZCBib3R0b20tbGVmdCBmaW5kZXIgcGF0dGVybiBjZW50ZXJcbiAgICAgKiBAcmV0dXJuIGVzdGltYXRlZCBtb2R1bGUgc2l6ZVxuICAgICAqL1xuICAgIERldGVjdG9yLnByb3RvdHlwZS5jYWxjdWxhdGVNb2R1bGVTaXplID0gZnVuY3Rpb24gKHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0KSB7XG4gICAgICAgIC8vIFRha2UgdGhlIGF2ZXJhZ2VcbiAgICAgICAgcmV0dXJuICh0aGlzLmNhbGN1bGF0ZU1vZHVsZVNpemVPbmVXYXkodG9wTGVmdCwgdG9wUmlnaHQpICtcbiAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlTW9kdWxlU2l6ZU9uZVdheSh0b3BMZWZ0LCBib3R0b21MZWZ0KSkgLyAyLjA7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiA8cD5Fc3RpbWF0ZXMgbW9kdWxlIHNpemUgYmFzZWQgb24gdHdvIGZpbmRlciBwYXR0ZXJucyAtLSBpdCB1c2VzXG4gICAgICoge0BsaW5rICNzaXplT2ZCbGFja1doaXRlQmxhY2tSdW5Cb3RoV2F5cyhpbnQsIGludCwgaW50LCBpbnQpfSB0byBmaWd1cmUgdGhlXG4gICAgICogd2lkdGggb2YgZWFjaCwgbWVhc3VyaW5nIGFsb25nIHRoZSBheGlzIGJldHdlZW4gdGhlaXIgY2VudGVycy48L3A+XG4gICAgICovXG4gICAgRGV0ZWN0b3IucHJvdG90eXBlLmNhbGN1bGF0ZU1vZHVsZVNpemVPbmVXYXkgPSBmdW5jdGlvbiAocGF0dGVybiwgb3RoZXJQYXR0ZXJuKSB7XG4gICAgICAgIHZhciBtb2R1bGVTaXplRXN0MSA9IHRoaXMuc2l6ZU9mQmxhY2tXaGl0ZUJsYWNrUnVuQm90aFdheXMoLyooaW50KSAqLyBNYXRoLmZsb29yKHBhdHRlcm4uZ2V0WCgpKSwgXG4gICAgICAgIC8qKGludCkgKi8gTWF0aC5mbG9vcihwYXR0ZXJuLmdldFkoKSksIFxuICAgICAgICAvKihpbnQpICovIE1hdGguZmxvb3Iob3RoZXJQYXR0ZXJuLmdldFgoKSksIFxuICAgICAgICAvKihpbnQpICovIE1hdGguZmxvb3Iob3RoZXJQYXR0ZXJuLmdldFkoKSkpO1xuICAgICAgICB2YXIgbW9kdWxlU2l6ZUVzdDIgPSB0aGlzLnNpemVPZkJsYWNrV2hpdGVCbGFja1J1bkJvdGhXYXlzKC8qKGludCkgKi8gTWF0aC5mbG9vcihvdGhlclBhdHRlcm4uZ2V0WCgpKSwgXG4gICAgICAgIC8qKGludCkgKi8gTWF0aC5mbG9vcihvdGhlclBhdHRlcm4uZ2V0WSgpKSwgXG4gICAgICAgIC8qKGludCkgKi8gTWF0aC5mbG9vcihwYXR0ZXJuLmdldFgoKSksIFxuICAgICAgICAvKihpbnQpICovIE1hdGguZmxvb3IocGF0dGVybi5nZXRZKCkpKTtcbiAgICAgICAgaWYgKGlzTmFOKG1vZHVsZVNpemVFc3QxKSkge1xuICAgICAgICAgICAgcmV0dXJuIG1vZHVsZVNpemVFc3QyIC8gNy4wO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc05hTihtb2R1bGVTaXplRXN0MikpIHtcbiAgICAgICAgICAgIHJldHVybiBtb2R1bGVTaXplRXN0MSAvIDcuMDtcbiAgICAgICAgfVxuICAgICAgICAvLyBBdmVyYWdlIHRoZW0sIGFuZCBkaXZpZGUgYnkgNyBzaW5jZSB3ZSd2ZSBjb3VudGVkIHRoZSB3aWR0aCBvZiAzIGJsYWNrIG1vZHVsZXMsXG4gICAgICAgIC8vIGFuZCAxIHdoaXRlIGFuZCAxIGJsYWNrIG1vZHVsZSBvbiBlaXRoZXIgc2lkZS4gRXJnbywgZGl2aWRlIHN1bSBieSAxNC5cbiAgICAgICAgcmV0dXJuIChtb2R1bGVTaXplRXN0MSArIG1vZHVsZVNpemVFc3QyKSAvIDE0LjA7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBTZWUge0BsaW5rICNzaXplT2ZCbGFja1doaXRlQmxhY2tSdW4oaW50LCBpbnQsIGludCwgaW50KX07IGNvbXB1dGVzIHRoZSB0b3RhbCB3aWR0aCBvZlxuICAgICAqIGEgZmluZGVyIHBhdHRlcm4gYnkgbG9va2luZyBmb3IgYSBibGFjay13aGl0ZS1ibGFjayBydW4gZnJvbSB0aGUgY2VudGVyIGluIHRoZSBkaXJlY3Rpb25cbiAgICAgKiBvZiBhbm90aGVyIHBvaW50IChhbm90aGVyIGZpbmRlciBwYXR0ZXJuIGNlbnRlciksIGFuZCBpbiB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9uIHRvby5cbiAgICAgKi9cbiAgICBEZXRlY3Rvci5wcm90b3R5cGUuc2l6ZU9mQmxhY2tXaGl0ZUJsYWNrUnVuQm90aFdheXMgPSBmdW5jdGlvbiAoZnJvbVggLyppbnQqLywgZnJvbVkgLyppbnQqLywgdG9YIC8qaW50Ki8sIHRvWSAvKmludCovKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSB0aGlzLnNpemVPZkJsYWNrV2hpdGVCbGFja1J1bihmcm9tWCwgZnJvbVksIHRvWCwgdG9ZKTtcbiAgICAgICAgLy8gTm93IGNvdW50IG90aGVyIHdheSAtLSBkb24ndCBydW4gb2ZmIGltYWdlIHRob3VnaCBvZiBjb3Vyc2VcbiAgICAgICAgdmFyIHNjYWxlID0gMS4wO1xuICAgICAgICB2YXIgb3RoZXJUb1ggPSBmcm9tWCAtICh0b1ggLSBmcm9tWCk7XG4gICAgICAgIGlmIChvdGhlclRvWCA8IDApIHtcbiAgICAgICAgICAgIHNjYWxlID0gZnJvbVggLyAvKihmbG9hdCkgKi8gKGZyb21YIC0gb3RoZXJUb1gpO1xuICAgICAgICAgICAgb3RoZXJUb1ggPSAwO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG90aGVyVG9YID49IHRoaXMuaW1hZ2UuZ2V0V2lkdGgoKSkge1xuICAgICAgICAgICAgc2NhbGUgPSAodGhpcy5pbWFnZS5nZXRXaWR0aCgpIC0gMSAtIGZyb21YKSAvIC8qKGZsb2F0KSAqLyAob3RoZXJUb1ggLSBmcm9tWCk7XG4gICAgICAgICAgICBvdGhlclRvWCA9IHRoaXMuaW1hZ2UuZ2V0V2lkdGgoKSAtIDE7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG90aGVyVG9ZID0gLyooaW50KSAqLyBNYXRoLmZsb29yKGZyb21ZIC0gKHRvWSAtIGZyb21ZKSAqIHNjYWxlKTtcbiAgICAgICAgc2NhbGUgPSAxLjA7XG4gICAgICAgIGlmIChvdGhlclRvWSA8IDApIHtcbiAgICAgICAgICAgIHNjYWxlID0gZnJvbVkgLyAvKihmbG9hdCkgKi8gKGZyb21ZIC0gb3RoZXJUb1kpO1xuICAgICAgICAgICAgb3RoZXJUb1kgPSAwO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG90aGVyVG9ZID49IHRoaXMuaW1hZ2UuZ2V0SGVpZ2h0KCkpIHtcbiAgICAgICAgICAgIHNjYWxlID0gKHRoaXMuaW1hZ2UuZ2V0SGVpZ2h0KCkgLSAxIC0gZnJvbVkpIC8gLyooZmxvYXQpICovIChvdGhlclRvWSAtIGZyb21ZKTtcbiAgICAgICAgICAgIG90aGVyVG9ZID0gdGhpcy5pbWFnZS5nZXRIZWlnaHQoKSAtIDE7XG4gICAgICAgIH1cbiAgICAgICAgb3RoZXJUb1ggPSAvKihpbnQpICovIE1hdGguZmxvb3IoZnJvbVggKyAob3RoZXJUb1ggLSBmcm9tWCkgKiBzY2FsZSk7XG4gICAgICAgIHJlc3VsdCArPSB0aGlzLnNpemVPZkJsYWNrV2hpdGVCbGFja1J1bihmcm9tWCwgZnJvbVksIG90aGVyVG9YLCBvdGhlclRvWSk7XG4gICAgICAgIC8vIE1pZGRsZSBwaXhlbCBpcyBkb3VibGUtY291bnRlZCB0aGlzIHdheTsgc3VidHJhY3QgMVxuICAgICAgICByZXR1cm4gcmVzdWx0IC0gMS4wO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogPHA+VGhpcyBtZXRob2QgdHJhY2VzIGEgbGluZSBmcm9tIGEgcG9pbnQgaW4gdGhlIGltYWdlLCBpbiB0aGUgZGlyZWN0aW9uIHRvd2FyZHMgYW5vdGhlciBwb2ludC5cbiAgICAgKiBJdCBiZWdpbnMgaW4gYSBibGFjayByZWdpb24sIGFuZCBrZWVwcyBnb2luZyB1bnRpbCBpdCBmaW5kcyB3aGl0ZSwgdGhlbiBibGFjaywgdGhlbiB3aGl0ZSBhZ2Fpbi5cbiAgICAgKiBJdCByZXBvcnRzIHRoZSBkaXN0YW5jZSBmcm9tIHRoZSBzdGFydCB0byB0aGlzIHBvaW50LjwvcD5cbiAgICAgKlxuICAgICAqIDxwPlRoaXMgaXMgdXNlZCB3aGVuIGZpZ3VyaW5nIG91dCBob3cgd2lkZSBhIGZpbmRlciBwYXR0ZXJuIGlzLCB3aGVuIHRoZSBmaW5kZXIgcGF0dGVyblxuICAgICAqIG1heSBiZSBza2V3ZWQgb3Igcm90YXRlZC48L3A+XG4gICAgICovXG4gICAgRGV0ZWN0b3IucHJvdG90eXBlLnNpemVPZkJsYWNrV2hpdGVCbGFja1J1biA9IGZ1bmN0aW9uIChmcm9tWCAvKmludCovLCBmcm9tWSAvKmludCovLCB0b1ggLyppbnQqLywgdG9ZIC8qaW50Ki8pIHtcbiAgICAgICAgLy8gTWlsZCB2YXJpYW50IG9mIEJyZXNlbmhhbSdzIGFsZ29yaXRobVxuICAgICAgICAvLyBzZWUgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CcmVzZW5oYW0nc19saW5lX2FsZ29yaXRobVxuICAgICAgICB2YXIgc3RlZXAgPSBNYXRoLmFicyh0b1kgLSBmcm9tWSkgPiBNYXRoLmFicyh0b1ggLSBmcm9tWCk7XG4gICAgICAgIGlmIChzdGVlcCkge1xuICAgICAgICAgICAgdmFyIHRlbXAgPSBmcm9tWDtcbiAgICAgICAgICAgIGZyb21YID0gZnJvbVk7XG4gICAgICAgICAgICBmcm9tWSA9IHRlbXA7XG4gICAgICAgICAgICB0ZW1wID0gdG9YO1xuICAgICAgICAgICAgdG9YID0gdG9ZO1xuICAgICAgICAgICAgdG9ZID0gdGVtcDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZHggPSBNYXRoLmFicyh0b1ggLSBmcm9tWCk7XG4gICAgICAgIHZhciBkeSA9IE1hdGguYWJzKHRvWSAtIGZyb21ZKTtcbiAgICAgICAgdmFyIGVycm9yID0gLWR4IC8gMjtcbiAgICAgICAgdmFyIHhzdGVwID0gZnJvbVggPCB0b1ggPyAxIDogLTE7XG4gICAgICAgIHZhciB5c3RlcCA9IGZyb21ZIDwgdG9ZID8gMSA6IC0xO1xuICAgICAgICAvLyBJbiBibGFjayBwaXhlbHMsIGxvb2tpbmcgZm9yIHdoaXRlLCBmaXJzdCBvciBzZWNvbmQgdGltZS5cbiAgICAgICAgdmFyIHN0YXRlID0gMDtcbiAgICAgICAgLy8gTG9vcCB1cCB1bnRpbCB4ID09IHRvWCwgYnV0IG5vdCBiZXlvbmRcbiAgICAgICAgdmFyIHhMaW1pdCA9IHRvWCArIHhzdGVwO1xuICAgICAgICBmb3IgKHZhciB4ID0gZnJvbVgsIHkgPSBmcm9tWTsgeCAhPT0geExpbWl0OyB4ICs9IHhzdGVwKSB7XG4gICAgICAgICAgICB2YXIgcmVhbFggPSBzdGVlcCA/IHkgOiB4O1xuICAgICAgICAgICAgdmFyIHJlYWxZID0gc3RlZXAgPyB4IDogeTtcbiAgICAgICAgICAgIC8vIERvZXMgY3VycmVudCBwaXhlbCBtZWFuIHdlIGhhdmUgbW92ZWQgd2hpdGUgdG8gYmxhY2sgb3IgdmljZSB2ZXJzYT9cbiAgICAgICAgICAgIC8vIFNjYW5uaW5nIGJsYWNrIGluIHN0YXRlIDAsMiBhbmQgd2hpdGUgaW4gc3RhdGUgMSwgc28gaWYgd2UgZmluZCB0aGUgd3JvbmdcbiAgICAgICAgICAgIC8vIGNvbG9yLCBhZHZhbmNlIHRvIG5leHQgc3RhdGUgb3IgZW5kIGlmIHdlIGFyZSBpbiBzdGF0ZSAyIGFscmVhZHlcbiAgICAgICAgICAgIGlmICgoc3RhdGUgPT09IDEpID09PSB0aGlzLmltYWdlLmdldChyZWFsWCwgcmVhbFkpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHN0YXRlID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBNYXRoVXRpbHNfMS5kZWZhdWx0LmRpc3RhbmNlKHgsIHksIGZyb21YLCBmcm9tWSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHN0YXRlKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlcnJvciArPSBkeTtcbiAgICAgICAgICAgIGlmIChlcnJvciA+IDApIHtcbiAgICAgICAgICAgICAgICBpZiAoeSA9PT0gdG9ZKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB5ICs9IHlzdGVwO1xuICAgICAgICAgICAgICAgIGVycm9yIC09IGR4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIEZvdW5kIGJsYWNrLXdoaXRlLWJsYWNrOyBnaXZlIHRoZSBiZW5lZml0IG9mIHRoZSBkb3VidCB0aGF0IHRoZSBuZXh0IHBpeGVsIG91dHNpZGUgdGhlIGltYWdlXG4gICAgICAgIC8vIGlzIFwid2hpdGVcIiBzbyB0aGlzIGxhc3QgcG9pbnQgYXQgKHRvWCt4U3RlcCx0b1kpIGlzIHRoZSByaWdodCBlbmRpbmcuIFRoaXMgaXMgcmVhbGx5IGFcbiAgICAgICAgLy8gc21hbGwgYXBwcm94aW1hdGlvbjsgKHRvWCt4U3RlcCx0b1kreVN0ZXApIG1pZ2h0IGJlIHJlYWxseSBjb3JyZWN0LiBJZ25vcmUgdGhpcy5cbiAgICAgICAgaWYgKHN0YXRlID09PSAyKSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aFV0aWxzXzEuZGVmYXVsdC5kaXN0YW5jZSh0b1ggKyB4c3RlcCwgdG9ZLCBmcm9tWCwgZnJvbVkpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGVsc2Ugd2UgZGlkbid0IGZpbmQgZXZlbiBibGFjay13aGl0ZS1ibGFjazsgbm8gZXN0aW1hdGUgaXMgcmVhbGx5IHBvc3NpYmxlXG4gICAgICAgIHJldHVybiBOYU47XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiA8cD5BdHRlbXB0cyB0byBsb2NhdGUgYW4gYWxpZ25tZW50IHBhdHRlcm4gaW4gYSBsaW1pdGVkIHJlZ2lvbiBvZiB0aGUgaW1hZ2UsIHdoaWNoIGlzXG4gICAgICogZ3Vlc3NlZCB0byBjb250YWluIGl0LiBUaGlzIG1ldGhvZCB1c2VzIHtAbGluayBBbGlnbm1lbnRQYXR0ZXJufS48L3A+XG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3ZlcmFsbEVzdE1vZHVsZVNpemUgZXN0aW1hdGVkIG1vZHVsZSBzaXplIHNvIGZhclxuICAgICAqIEBwYXJhbSBlc3RBbGlnbm1lbnRYIHggY29vcmRpbmF0ZSBvZiBjZW50ZXIgb2YgYXJlYSBwcm9iYWJseSBjb250YWluaW5nIGFsaWdubWVudCBwYXR0ZXJuXG4gICAgICogQHBhcmFtIGVzdEFsaWdubWVudFkgeSBjb29yZGluYXRlIG9mIGFib3ZlXG4gICAgICogQHBhcmFtIGFsbG93YW5jZUZhY3RvciBudW1iZXIgb2YgcGl4ZWxzIGluIGFsbCBkaXJlY3Rpb25zIHRvIHNlYXJjaCBmcm9tIHRoZSBjZW50ZXJcbiAgICAgKiBAcmV0dXJuIHtAbGluayBBbGlnbm1lbnRQYXR0ZXJufSBpZiBmb3VuZCwgb3IgbnVsbCBvdGhlcndpc2VcbiAgICAgKiBAdGhyb3dzIE5vdEZvdW5kRXhjZXB0aW9uIGlmIGFuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJzIGR1cmluZyBkZXRlY3Rpb25cbiAgICAgKi9cbiAgICBEZXRlY3Rvci5wcm90b3R5cGUuZmluZEFsaWdubWVudEluUmVnaW9uID0gZnVuY3Rpb24gKG92ZXJhbGxFc3RNb2R1bGVTaXplIC8qZmxvYXQqLywgZXN0QWxpZ25tZW50WCAvKmludCovLCBlc3RBbGlnbm1lbnRZIC8qaW50Ki8sIGFsbG93YW5jZUZhY3RvciAvKmZsb2F0Ki8pIHtcbiAgICAgICAgLy8gTG9vayBmb3IgYW4gYWxpZ25tZW50IHBhdHRlcm4gKDMgbW9kdWxlcyBpbiBzaXplKSBhcm91bmQgd2hlcmUgaXRcbiAgICAgICAgLy8gc2hvdWxkIGJlXG4gICAgICAgIHZhciBhbGxvd2FuY2UgPSAvKihpbnQpICovIE1hdGguZmxvb3IoYWxsb3dhbmNlRmFjdG9yICogb3ZlcmFsbEVzdE1vZHVsZVNpemUpO1xuICAgICAgICB2YXIgYWxpZ25tZW50QXJlYUxlZnRYID0gTWF0aC5tYXgoMCwgZXN0QWxpZ25tZW50WCAtIGFsbG93YW5jZSk7XG4gICAgICAgIHZhciBhbGlnbm1lbnRBcmVhUmlnaHRYID0gTWF0aC5taW4odGhpcy5pbWFnZS5nZXRXaWR0aCgpIC0gMSwgZXN0QWxpZ25tZW50WCArIGFsbG93YW5jZSk7XG4gICAgICAgIGlmIChhbGlnbm1lbnRBcmVhUmlnaHRYIC0gYWxpZ25tZW50QXJlYUxlZnRYIDwgb3ZlcmFsbEVzdE1vZHVsZVNpemUgKiAzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCdBbGlnbm1lbnQgdG9wIGV4Y2VlZHMgZXN0aW1hdGVkIG1vZHVsZSBzaXplLicpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBhbGlnbm1lbnRBcmVhVG9wWSA9IE1hdGgubWF4KDAsIGVzdEFsaWdubWVudFkgLSBhbGxvd2FuY2UpO1xuICAgICAgICB2YXIgYWxpZ25tZW50QXJlYUJvdHRvbVkgPSBNYXRoLm1pbih0aGlzLmltYWdlLmdldEhlaWdodCgpIC0gMSwgZXN0QWxpZ25tZW50WSArIGFsbG93YW5jZSk7XG4gICAgICAgIGlmIChhbGlnbm1lbnRBcmVhQm90dG9tWSAtIGFsaWdubWVudEFyZWFUb3BZIDwgb3ZlcmFsbEVzdE1vZHVsZVNpemUgKiAzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCdBbGlnbm1lbnQgYm90dG9tIGV4Y2VlZHMgZXN0aW1hdGVkIG1vZHVsZSBzaXplLicpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBhbGlnbm1lbnRGaW5kZXIgPSBuZXcgQWxpZ25tZW50UGF0dGVybkZpbmRlcl8xLmRlZmF1bHQodGhpcy5pbWFnZSwgYWxpZ25tZW50QXJlYUxlZnRYLCBhbGlnbm1lbnRBcmVhVG9wWSwgYWxpZ25tZW50QXJlYVJpZ2h0WCAtIGFsaWdubWVudEFyZWFMZWZ0WCwgYWxpZ25tZW50QXJlYUJvdHRvbVkgLSBhbGlnbm1lbnRBcmVhVG9wWSwgb3ZlcmFsbEVzdE1vZHVsZVNpemUsIHRoaXMucmVzdWx0UG9pbnRDYWxsYmFjayk7XG4gICAgICAgIHJldHVybiBhbGlnbm1lbnRGaW5kZXIuZmluZCgpO1xuICAgIH07XG4gICAgcmV0dXJuIERldGVjdG9yO1xufSgpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IERldGVjdG9yO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RGV0ZWN0b3IuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IDIwMDcgWlhpbmcgYXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qbmFtZXNwYWNlIGNvbS5nb29nbGUuenhpbmcucXJjb2RlIHsqL1xudmFyIEJhcmNvZGVGb3JtYXRfMSA9IHJlcXVpcmUoXCIuLi9CYXJjb2RlRm9ybWF0XCIpO1xudmFyIEJpdE1hdHJpeF8xID0gcmVxdWlyZShcIi4uL2NvbW1vbi9CaXRNYXRyaXhcIik7XG52YXIgRGVjb2RlSGludFR5cGVfMSA9IHJlcXVpcmUoXCIuLi9EZWNvZGVIaW50VHlwZVwiKTtcbnZhciBOb3RGb3VuZEV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4uL05vdEZvdW5kRXhjZXB0aW9uXCIpO1xudmFyIFJlc3VsdF8xID0gcmVxdWlyZShcIi4uL1Jlc3VsdFwiKTtcbnZhciBSZXN1bHRNZXRhZGF0YVR5cGVfMSA9IHJlcXVpcmUoXCIuLi9SZXN1bHRNZXRhZGF0YVR5cGVcIik7XG4vLyBpbXBvcnQgRGV0ZWN0b3JSZXN1bHQgZnJvbSAnLi4vY29tbW9uL0RldGVjdG9yUmVzdWx0JztcbnZhciBEZWNvZGVyXzEgPSByZXF1aXJlKFwiLi9kZWNvZGVyL0RlY29kZXJcIik7XG52YXIgUVJDb2RlRGVjb2Rlck1ldGFEYXRhXzEgPSByZXF1aXJlKFwiLi9kZWNvZGVyL1FSQ29kZURlY29kZXJNZXRhRGF0YVwiKTtcbnZhciBEZXRlY3Rvcl8xID0gcmVxdWlyZShcIi4vZGV0ZWN0b3IvRGV0ZWN0b3JcIik7XG4vKmltcG9ydCBqYXZhLnV0aWwuTGlzdDsqL1xuLyppbXBvcnQgamF2YS51dGlsLk1hcDsqL1xuLyoqXG4gKiBUaGlzIGltcGxlbWVudGF0aW9uIGNhbiBkZXRlY3QgYW5kIGRlY29kZSBRUiBDb2RlcyBpbiBhbiBpbWFnZS5cbiAqXG4gKiBAYXV0aG9yIFNlYW4gT3dlblxuICovXG52YXIgUVJDb2RlUmVhZGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFFSQ29kZVJlYWRlcigpIHtcbiAgICAgICAgdGhpcy5kZWNvZGVyID0gbmV3IERlY29kZXJfMS5kZWZhdWx0KCk7XG4gICAgfVxuICAgIFFSQ29kZVJlYWRlci5wcm90b3R5cGUuZ2V0RGVjb2RlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVjb2RlcjtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIExvY2F0ZXMgYW5kIGRlY29kZXMgYSBRUiBjb2RlIGluIGFuIGltYWdlLlxuICAgICAqXG4gICAgICogQHJldHVybiBhIHJlcHJlc2VudGluZzogc3RyaW5nIHRoZSBjb250ZW50IGVuY29kZWQgYnkgdGhlIFFSIGNvZGVcbiAgICAgKiBAdGhyb3dzIE5vdEZvdW5kRXhjZXB0aW9uIGlmIGEgUVIgY29kZSBjYW5ub3QgYmUgZm91bmRcbiAgICAgKiBAdGhyb3dzIEZvcm1hdEV4Y2VwdGlvbiBpZiBhIFFSIGNvZGUgY2Fubm90IGJlIGRlY29kZWRcbiAgICAgKiBAdGhyb3dzIENoZWNrc3VtRXhjZXB0aW9uIGlmIGVycm9yIGNvcnJlY3Rpb24gZmFpbHNcbiAgICAgKi9cbiAgICAvKkBPdmVycmlkZSovXG4gICAgLy8gcHVibGljIGRlY29kZShpbWFnZTogQmluYXJ5Qml0bWFwKTogUmVzdWx0IC8qdGhyb3dzIE5vdEZvdW5kRXhjZXB0aW9uLCBDaGVja3N1bUV4Y2VwdGlvbiwgRm9ybWF0RXhjZXB0aW9uICovIHtcbiAgICAvLyAgIHJldHVybiB0aGlzLmRlY29kZShpbWFnZSwgbnVsbClcbiAgICAvLyB9XG4gICAgLypAT3ZlcnJpZGUqL1xuICAgIFFSQ29kZVJlYWRlci5wcm90b3R5cGUuZGVjb2RlID0gZnVuY3Rpb24gKGltYWdlLCBoaW50cykge1xuICAgICAgICB2YXIgZGVjb2RlclJlc3VsdDtcbiAgICAgICAgdmFyIHBvaW50cztcbiAgICAgICAgaWYgKGhpbnRzICE9PSB1bmRlZmluZWQgJiYgaGludHMgIT09IG51bGwgJiYgdW5kZWZpbmVkICE9PSBoaW50cy5nZXQoRGVjb2RlSGludFR5cGVfMS5kZWZhdWx0LlBVUkVfQkFSQ09ERSkpIHtcbiAgICAgICAgICAgIHZhciBiaXRzID0gUVJDb2RlUmVhZGVyLmV4dHJhY3RQdXJlQml0cyhpbWFnZS5nZXRCbGFja01hdHJpeCgpKTtcbiAgICAgICAgICAgIGRlY29kZXJSZXN1bHQgPSB0aGlzLmRlY29kZXIuZGVjb2RlQml0TWF0cml4KGJpdHMsIGhpbnRzKTtcbiAgICAgICAgICAgIHBvaW50cyA9IFFSQ29kZVJlYWRlci5OT19QT0lOVFM7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgZGV0ZWN0b3JSZXN1bHQgPSBuZXcgRGV0ZWN0b3JfMS5kZWZhdWx0KGltYWdlLmdldEJsYWNrTWF0cml4KCkpLmRldGVjdChoaW50cyk7XG4gICAgICAgICAgICBkZWNvZGVyUmVzdWx0ID0gdGhpcy5kZWNvZGVyLmRlY29kZUJpdE1hdHJpeChkZXRlY3RvclJlc3VsdC5nZXRCaXRzKCksIGhpbnRzKTtcbiAgICAgICAgICAgIHBvaW50cyA9IGRldGVjdG9yUmVzdWx0LmdldFBvaW50cygpO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIHRoZSBjb2RlIHdhcyBtaXJyb3JlZDogc3dhcCB0aGUgYm90dG9tLWxlZnQgYW5kIHRoZSB0b3AtcmlnaHQgcG9pbnRzLlxuICAgICAgICBpZiAoZGVjb2RlclJlc3VsdC5nZXRPdGhlcigpIGluc3RhbmNlb2YgUVJDb2RlRGVjb2Rlck1ldGFEYXRhXzEuZGVmYXVsdCkge1xuICAgICAgICAgICAgZGVjb2RlclJlc3VsdC5nZXRPdGhlcigpLmFwcGx5TWlycm9yZWRDb3JyZWN0aW9uKHBvaW50cyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBSZXN1bHRfMS5kZWZhdWx0KGRlY29kZXJSZXN1bHQuZ2V0VGV4dCgpLCBkZWNvZGVyUmVzdWx0LmdldFJhd0J5dGVzKCksIHVuZGVmaW5lZCwgcG9pbnRzLCBCYXJjb2RlRm9ybWF0XzEuZGVmYXVsdC5RUl9DT0RFLCB1bmRlZmluZWQpO1xuICAgICAgICB2YXIgYnl0ZVNlZ21lbnRzID0gZGVjb2RlclJlc3VsdC5nZXRCeXRlU2VnbWVudHMoKTtcbiAgICAgICAgaWYgKGJ5dGVTZWdtZW50cyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcmVzdWx0LnB1dE1ldGFkYXRhKFJlc3VsdE1ldGFkYXRhVHlwZV8xLmRlZmF1bHQuQllURV9TRUdNRU5UUywgYnl0ZVNlZ21lbnRzKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZWNMZXZlbCA9IGRlY29kZXJSZXN1bHQuZ2V0RUNMZXZlbCgpO1xuICAgICAgICBpZiAoZWNMZXZlbCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcmVzdWx0LnB1dE1ldGFkYXRhKFJlc3VsdE1ldGFkYXRhVHlwZV8xLmRlZmF1bHQuRVJST1JfQ09SUkVDVElPTl9MRVZFTCwgZWNMZXZlbCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRlY29kZXJSZXN1bHQuaGFzU3RydWN0dXJlZEFwcGVuZCgpKSB7XG4gICAgICAgICAgICByZXN1bHQucHV0TWV0YWRhdGEoUmVzdWx0TWV0YWRhdGFUeXBlXzEuZGVmYXVsdC5TVFJVQ1RVUkVEX0FQUEVORF9TRVFVRU5DRSwgZGVjb2RlclJlc3VsdC5nZXRTdHJ1Y3R1cmVkQXBwZW5kU2VxdWVuY2VOdW1iZXIoKSk7XG4gICAgICAgICAgICByZXN1bHQucHV0TWV0YWRhdGEoUmVzdWx0TWV0YWRhdGFUeXBlXzEuZGVmYXVsdC5TVFJVQ1RVUkVEX0FQUEVORF9QQVJJVFksIGRlY29kZXJSZXN1bHQuZ2V0U3RydWN0dXJlZEFwcGVuZFBhcml0eSgpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgLypAT3ZlcnJpZGUqL1xuICAgIFFSQ29kZVJlYWRlci5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIC8vIGRvIG5vdGhpbmdcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGRldGVjdHMgYSBjb2RlIGluIGEgXCJwdXJlXCIgaW1hZ2UgLS0gdGhhdCBpcywgcHVyZSBtb25vY2hyb21lIGltYWdlXG4gICAgICogd2hpY2ggY29udGFpbnMgb25seSBhbiB1bnJvdGF0ZWQsIHVuc2tld2VkLCBpbWFnZSBvZiBhIGNvZGUsIHdpdGggc29tZSB3aGl0ZSBib3JkZXJcbiAgICAgKiBhcm91bmQgaXQuIFRoaXMgaXMgYSBzcGVjaWFsaXplZCBtZXRob2QgdGhhdCB3b3JrcyBleGNlcHRpb25hbGx5IGZhc3QgaW4gdGhpcyBzcGVjaWFsXG4gICAgICogY2FzZS5cbiAgICAgKlxuICAgICAqIEBzZWUgY29tLmdvb2dsZS56eGluZy5kYXRhbWF0cml4LkRhdGFNYXRyaXhSZWFkZXIjZXh0cmFjdFB1cmVCaXRzKEJpdE1hdHJpeClcbiAgICAgKi9cbiAgICBRUkNvZGVSZWFkZXIuZXh0cmFjdFB1cmVCaXRzID0gZnVuY3Rpb24gKGltYWdlKSB7XG4gICAgICAgIHZhciBsZWZ0VG9wQmxhY2sgPSBpbWFnZS5nZXRUb3BMZWZ0T25CaXQoKTtcbiAgICAgICAgdmFyIHJpZ2h0Qm90dG9tQmxhY2sgPSBpbWFnZS5nZXRCb3R0b21SaWdodE9uQml0KCk7XG4gICAgICAgIGlmIChsZWZ0VG9wQmxhY2sgPT09IG51bGwgfHwgcmlnaHRCb3R0b21CbGFjayA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBtb2R1bGVTaXplID0gdGhpcy5tb2R1bGVTaXplKGxlZnRUb3BCbGFjaywgaW1hZ2UpO1xuICAgICAgICB2YXIgdG9wID0gbGVmdFRvcEJsYWNrWzFdO1xuICAgICAgICB2YXIgYm90dG9tID0gcmlnaHRCb3R0b21CbGFja1sxXTtcbiAgICAgICAgdmFyIGxlZnQgPSBsZWZ0VG9wQmxhY2tbMF07XG4gICAgICAgIHZhciByaWdodCA9IHJpZ2h0Qm90dG9tQmxhY2tbMF07XG4gICAgICAgIC8vIFNhbml0eSBjaGVjayFcbiAgICAgICAgaWYgKGxlZnQgPj0gcmlnaHQgfHwgdG9wID49IGJvdHRvbSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChib3R0b20gLSB0b3AgIT09IHJpZ2h0IC0gbGVmdCkge1xuICAgICAgICAgICAgLy8gU3BlY2lhbCBjYXNlLCB3aGVyZSBib3R0b20tcmlnaHQgbW9kdWxlIHdhc24ndCBibGFjayBzbyB3ZSBmb3VuZCBzb21ldGhpbmcgZWxzZSBpbiB0aGUgbGFzdCByb3dcbiAgICAgICAgICAgIC8vIEFzc3VtZSBpdCdzIGEgc3F1YXJlLCBzbyB1c2UgaGVpZ2h0IGFzIHRoZSB3aWR0aFxuICAgICAgICAgICAgcmlnaHQgPSBsZWZ0ICsgKGJvdHRvbSAtIHRvcCk7XG4gICAgICAgICAgICBpZiAocmlnaHQgPj0gaW1hZ2UuZ2V0V2lkdGgoKSkge1xuICAgICAgICAgICAgICAgIC8vIEFib3J0IGlmIHRoYXQgd291bGQgbm90IG1ha2Ugc2Vuc2UgLS0gb2ZmIGltYWdlXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHZhciBtYXRyaXhXaWR0aCA9IE1hdGgucm91bmQoKHJpZ2h0IC0gbGVmdCArIDEpIC8gbW9kdWxlU2l6ZSk7XG4gICAgICAgIHZhciBtYXRyaXhIZWlnaHQgPSBNYXRoLnJvdW5kKChib3R0b20gLSB0b3AgKyAxKSAvIG1vZHVsZVNpemUpO1xuICAgICAgICBpZiAobWF0cml4V2lkdGggPD0gMCB8fCBtYXRyaXhIZWlnaHQgPD0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtYXRyaXhIZWlnaHQgIT09IG1hdHJpeFdpZHRoKSB7XG4gICAgICAgICAgICAvLyBPbmx5IHBvc3NpYmx5IGRlY29kZSBzcXVhcmUgcmVnaW9uc1xuICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFB1c2ggaW4gdGhlIFwiYm9yZGVyXCIgYnkgaGFsZiB0aGUgbW9kdWxlIHdpZHRoIHNvIHRoYXQgd2Ugc3RhcnRcbiAgICAgICAgLy8gc2FtcGxpbmcgaW4gdGhlIG1pZGRsZSBvZiB0aGUgbW9kdWxlLiBKdXN0IGluIGNhc2UgdGhlIGltYWdlIGlzIGFcbiAgICAgICAgLy8gbGl0dGxlIG9mZiwgdGhpcyB3aWxsIGhlbHAgcmVjb3Zlci5cbiAgICAgICAgdmFyIG51ZGdlID0gLyooaW50KSAqLyBNYXRoLmZsb29yKG1vZHVsZVNpemUgLyAyLjApO1xuICAgICAgICB0b3AgKz0gbnVkZ2U7XG4gICAgICAgIGxlZnQgKz0gbnVkZ2U7XG4gICAgICAgIC8vIEJ1dCBjYXJlZnVsIHRoYXQgdGhpcyBkb2VzIG5vdCBzYW1wbGUgb2ZmIHRoZSBlZGdlXG4gICAgICAgIC8vIFwicmlnaHRcIiBpcyB0aGUgZmFydGhlc3QtcmlnaHQgdmFsaWQgcGl4ZWwgbG9jYXRpb24gLS0gcmlnaHQrMSBpcyBub3QgbmVjZXNzYXJpbHlcbiAgICAgICAgLy8gVGhpcyBpcyBwb3NpdGl2ZSBieSBob3cgbXVjaCB0aGUgaW5uZXIgeCBsb29wIGJlbG93IHdvdWxkIGJlIHRvbyBsYXJnZVxuICAgICAgICB2YXIgbnVkZ2VkVG9vRmFyUmlnaHQgPSBsZWZ0ICsgLyooaW50KSAqLyBNYXRoLmZsb29yKChtYXRyaXhXaWR0aCAtIDEpICogbW9kdWxlU2l6ZSkgLSByaWdodDtcbiAgICAgICAgaWYgKG51ZGdlZFRvb0ZhclJpZ2h0ID4gMCkge1xuICAgICAgICAgICAgaWYgKG51ZGdlZFRvb0ZhclJpZ2h0ID4gbnVkZ2UpIHtcbiAgICAgICAgICAgICAgICAvLyBOZWl0aGVyIHdheSBmaXRzOyBhYm9ydFxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxlZnQgLT0gbnVkZ2VkVG9vRmFyUmlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gU2VlIGxvZ2ljIGFib3ZlXG4gICAgICAgIHZhciBudWRnZWRUb29GYXJEb3duID0gdG9wICsgLyooaW50KSAqLyBNYXRoLmZsb29yKChtYXRyaXhIZWlnaHQgLSAxKSAqIG1vZHVsZVNpemUpIC0gYm90dG9tO1xuICAgICAgICBpZiAobnVkZ2VkVG9vRmFyRG93biA+IDApIHtcbiAgICAgICAgICAgIGlmIChudWRnZWRUb29GYXJEb3duID4gbnVkZ2UpIHtcbiAgICAgICAgICAgICAgICAvLyBOZWl0aGVyIHdheSBmaXRzOyBhYm9ydFxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRvcCAtPSBudWRnZWRUb29GYXJEb3duO1xuICAgICAgICB9XG4gICAgICAgIC8vIE5vdyBqdXN0IHJlYWQgb2ZmIHRoZSBiaXRzXG4gICAgICAgIHZhciBiaXRzID0gbmV3IEJpdE1hdHJpeF8xLmRlZmF1bHQobWF0cml4V2lkdGgsIG1hdHJpeEhlaWdodCk7XG4gICAgICAgIGZvciAodmFyIHkgPSAwOyB5IDwgbWF0cml4SGVpZ2h0OyB5KyspIHtcbiAgICAgICAgICAgIHZhciBpT2Zmc2V0ID0gdG9wICsgLyooaW50KSAqLyBNYXRoLmZsb29yKHkgKiBtb2R1bGVTaXplKTtcbiAgICAgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgbWF0cml4V2lkdGg7IHgrKykge1xuICAgICAgICAgICAgICAgIGlmIChpbWFnZS5nZXQobGVmdCArIC8qKGludCkgKi8gTWF0aC5mbG9vcih4ICogbW9kdWxlU2l6ZSksIGlPZmZzZXQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGJpdHMuc2V0KHgsIHkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYml0cztcbiAgICB9O1xuICAgIFFSQ29kZVJlYWRlci5tb2R1bGVTaXplID0gZnVuY3Rpb24gKGxlZnRUb3BCbGFjaywgaW1hZ2UpIHtcbiAgICAgICAgdmFyIGhlaWdodCA9IGltYWdlLmdldEhlaWdodCgpO1xuICAgICAgICB2YXIgd2lkdGggPSBpbWFnZS5nZXRXaWR0aCgpO1xuICAgICAgICB2YXIgeCA9IGxlZnRUb3BCbGFja1swXTtcbiAgICAgICAgdmFyIHkgPSBsZWZ0VG9wQmxhY2tbMV07XG4gICAgICAgIHZhciBpbkJsYWNrID0gdHJ1ZTtcbiAgICAgICAgdmFyIHRyYW5zaXRpb25zID0gMDtcbiAgICAgICAgd2hpbGUgKHggPCB3aWR0aCAmJiB5IDwgaGVpZ2h0KSB7XG4gICAgICAgICAgICBpZiAoaW5CbGFjayAhPT0gaW1hZ2UuZ2V0KHgsIHkpKSB7XG4gICAgICAgICAgICAgICAgaWYgKCsrdHJhbnNpdGlvbnMgPT09IDUpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGluQmxhY2sgPSAhaW5CbGFjaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHgrKztcbiAgICAgICAgICAgIHkrKztcbiAgICAgICAgfVxuICAgICAgICBpZiAoeCA9PT0gd2lkdGggfHwgeSA9PT0gaGVpZ2h0KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICh4IC0gbGVmdFRvcEJsYWNrWzBdKSAvIDcuMDtcbiAgICB9O1xuICAgIFFSQ29kZVJlYWRlci5OT19QT0lOVFMgPSBuZXcgQXJyYXkoKTtcbiAgICByZXR1cm4gUVJDb2RlUmVhZGVyO1xufSgpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IFFSQ29kZVJlYWRlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVFSQ29kZVJlYWRlci5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8qXG4qIENvcHlyaWdodCAyMDA5IFpYaW5nIGF1dGhvcnNcbipcbiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbipcbiogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbipcbiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4qIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4qIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cbi8vIHBhY2thZ2UgY29tLmdvb2dsZS56eGluZy5wZGY0MTc7XG52YXIgX192YWx1ZXMgPSAodGhpcyAmJiB0aGlzLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7XG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vLyBpbXBvcnQgamF2YS51dGlsLkFycmF5cztcbnZhciBBcnJheXNfMSA9IHJlcXVpcmUoXCIuLi91dGlsL0FycmF5c1wiKTtcbi8vIGltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjtcbi8vIGltcG9ydCBjb20uZ29vZ2xlLnp4aW5nLmNvbW1vbi5kZXRlY3Rvci5NYXRoVXRpbHM7XG52YXIgTWF0aFV0aWxzXzEgPSByZXF1aXJlKFwiLi4vY29tbW9uL2RldGVjdG9yL01hdGhVdGlsc1wiKTtcbi8qKlxuICogQGF1dGhvciBTSVRBIExhYiAoa2V2aW4ub3N1bGxpdmFuQHNpdGEuYWVybylcbiAqIEBhdXRob3IgR3VlbnRoZXIgR3JhdVxuICovXG52YXIgUERGNDE3Q29tbW9uID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFBERjQxN0NvbW1vbigpIHtcbiAgICB9XG4gICAgUERGNDE3Q29tbW9uLnByb3RvdHlwZS5QREY0MTdDb21tb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0gbW9kdWxlQml0Q291bnQgdmFsdWVzIHRvIHN1bVxuICAgICAqIEByZXR1cm4gc3VtIG9mIHZhbHVlc1xuICAgICAqIEBkZXByZWNhdGVkIGNhbGwge0BsaW5rIE1hdGhVdGlscyNzdW0oaW50W10pfVxuICAgICAqL1xuICAgIC8vIEBEZXByZWNhdGVkXG4gICAgUERGNDE3Q29tbW9uLmdldEJpdENvdW50U3VtID0gZnVuY3Rpb24gKG1vZHVsZUJpdENvdW50KSB7XG4gICAgICAgIHJldHVybiBNYXRoVXRpbHNfMS5kZWZhdWx0LnN1bShtb2R1bGVCaXRDb3VudCk7XG4gICAgfTtcbiAgICBQREY0MTdDb21tb24udG9JbnRBcnJheSA9IGZ1bmN0aW9uIChsaXN0KSB7XG4gICAgICAgIHZhciBlXzEsIF9hO1xuICAgICAgICBpZiAobGlzdCA9PSBudWxsIHx8ICFsaXN0Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIFBERjQxN0NvbW1vbi5FTVBUWV9JTlRfQVJSQVk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBJbnQzMkFycmF5KGxpc3QubGVuZ3RoKTtcbiAgICAgICAgdmFyIGkgPSAwO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yICh2YXIgbGlzdF8xID0gX192YWx1ZXMobGlzdCksIGxpc3RfMV8xID0gbGlzdF8xLm5leHQoKTsgIWxpc3RfMV8xLmRvbmU7IGxpc3RfMV8xID0gbGlzdF8xLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciBpbnRlZ2VyID0gbGlzdF8xXzEudmFsdWU7XG4gICAgICAgICAgICAgICAgcmVzdWx0W2krK10gPSBpbnRlZ2VyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAobGlzdF8xXzEgJiYgIWxpc3RfMV8xLmRvbmUgJiYgKF9hID0gbGlzdF8xLnJldHVybikpIF9hLmNhbGwobGlzdF8xKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHN5bWJvbCBlbmNvZGVkIHN5bWJvbCB0byB0cmFuc2xhdGUgdG8gYSBjb2Rld29yZFxuICAgICAqIEByZXR1cm4gdGhlIGNvZGV3b3JkIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHN5bWJvbC5cbiAgICAgKi9cbiAgICBQREY0MTdDb21tb24uZ2V0Q29kZXdvcmQgPSBmdW5jdGlvbiAoc3ltYm9sIC8qaW50Ki8pIHtcbiAgICAgICAgdmFyIGkgPSBBcnJheXNfMS5kZWZhdWx0LmJpbmFyeVNlYXJjaChQREY0MTdDb21tb24uU1lNQk9MX1RBQkxFLCBzeW1ib2wgJiAweDNGRkZGKTtcbiAgICAgICAgaWYgKGkgPCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChQREY0MTdDb21tb24uQ09ERVdPUkRfVEFCTEVbaV0gLSAxKSAlIFBERjQxN0NvbW1vbi5OVU1CRVJfT0ZfQ09ERVdPUkRTO1xuICAgIH07XG4gICAgUERGNDE3Q29tbW9uLk5VTUJFUl9PRl9DT0RFV09SRFMgPSA5Mjk7XG4gICAgLy8gTWF4aW11bSBDb2Rld29yZHMgKERhdGEgKyBFcnJvcikuXG4gICAgUERGNDE3Q29tbW9uLk1BWF9DT0RFV09SRFNfSU5fQkFSQ09ERSA9IFBERjQxN0NvbW1vbi5OVU1CRVJfT0ZfQ09ERVdPUkRTIC0gMTtcbiAgICBQREY0MTdDb21tb24uTUlOX1JPV1NfSU5fQkFSQ09ERSA9IDM7XG4gICAgUERGNDE3Q29tbW9uLk1BWF9ST1dTX0lOX0JBUkNPREUgPSA5MDtcbiAgICAvLyBPbmUgbGVmdCByb3cgaW5kaWNhdGlvbiBjb2x1bW4gKyBtYXggMzAgZGF0YSBjb2x1bW5zICsgb25lIHJpZ2h0IHJvdyBpbmRpY2F0b3IgY29sdW1uXG4gICAgLy8gcHVibGljIHN0YXRpYyAvKmZpbmFsKi8gTUFYX0NPREVXT1JEU19JTl9ST1c6IC8qaW50Ki8gbnVtYmVyID0gMzI7XG4gICAgUERGNDE3Q29tbW9uLk1PRFVMRVNfSU5fQ09ERVdPUkQgPSAxNztcbiAgICBQREY0MTdDb21tb24uTU9EVUxFU19JTl9TVE9QX1BBVFRFUk4gPSAxODtcbiAgICBQREY0MTdDb21tb24uQkFSU19JTl9NT0RVTEUgPSA4O1xuICAgIFBERjQxN0NvbW1vbi5FTVBUWV9JTlRfQVJSQVkgPSBuZXcgSW50MzJBcnJheShbXSk7XG4gICAgLyoqXG4gICAgICogVGhlIHNvcnRlZCB0YWJsZSBvZiBhbGwgcG9zc2libGUgc3ltYm9scy4gRXh0cmFjdGVkIGZyb20gdGhlIFBERjQxN1xuICAgICAqIHNwZWNpZmljYXRpb24uIFRoZSBpbmRleCBvZiBhIHN5bWJvbCBpbiB0aGlzIHRhYmxlIGNvcnJlc3BvbmRzIHRvIHRoZVxuICAgICAqIGluZGV4IGludG8gdGhlIGNvZGV3b3JkIHRhYmxlLlxuICAgICAqL1xuICAgIFBERjQxN0NvbW1vbi5TWU1CT0xfVEFCTEUgPSBJbnQzMkFycmF5LmZyb20oW1xuICAgICAgICAweDEwMjVlLCAweDEwMjdhLCAweDEwMjllLCAweDEwMmJjLCAweDEwMmYyLCAweDEwMmY0LCAweDEwMzJlLCAweDEwMzRlLCAweDEwMzVjLCAweDEwMzk2LCAweDEwM2E2LCAweDEwM2FjLFxuICAgICAgICAweDEwNDIyLCAweDEwNDI4LCAweDEwNDM2LCAweDEwNDQyLCAweDEwNDQ0LCAweDEwNDQ4LCAweDEwNDUwLCAweDEwNDVlLCAweDEwNDY2LCAweDEwNDZjLCAweDEwNDdhLCAweDEwNDgyLFxuICAgICAgICAweDEwNDllLCAweDEwNGEwLCAweDEwNGJjLCAweDEwNGM2LCAweDEwNGQ4LCAweDEwNGVlLCAweDEwNGYyLCAweDEwNGY0LCAweDEwNTA0LCAweDEwNTA4LCAweDEwNTEwLCAweDEwNTFlLFxuICAgICAgICAweDEwNTIwLCAweDEwNTNjLCAweDEwNTQwLCAweDEwNTc4LCAweDEwNTg2LCAweDEwNThjLCAweDEwNTk4LCAweDEwNWIwLCAweDEwNWJlLCAweDEwNWNlLCAweDEwNWRjLCAweDEwNWUyLFxuICAgICAgICAweDEwNWU0LCAweDEwNWU4LCAweDEwNWY2LCAweDEwNjJlLCAweDEwNjRlLCAweDEwNjVjLCAweDEwNjhlLCAweDEwNjljLCAweDEwNmI4LCAweDEwNmRlLCAweDEwNmZhLCAweDEwNzE2LFxuICAgICAgICAweDEwNzI2LCAweDEwNzJjLCAweDEwNzQ2LCAweDEwNzRjLCAweDEwNzU4LCAweDEwNzZlLCAweDEwNzkyLCAweDEwNzk0LCAweDEwN2EyLCAweDEwN2E0LCAweDEwN2E4LCAweDEwN2I2LFxuICAgICAgICAweDEwODIyLCAweDEwODI4LCAweDEwODQyLCAweDEwODQ4LCAweDEwODUwLCAweDEwODVlLCAweDEwODY2LCAweDEwODZjLCAweDEwODdhLCAweDEwODgyLCAweDEwODg0LCAweDEwODkwLFxuICAgICAgICAweDEwODllLCAweDEwOGEwLCAweDEwOGJjLCAweDEwOGM2LCAweDEwOGNjLCAweDEwOGQ4LCAweDEwOGVlLCAweDEwOGYyLCAweDEwOGY0LCAweDEwOTAyLCAweDEwOTA4LCAweDEwOTFlLFxuICAgICAgICAweDEwOTIwLCAweDEwOTNjLCAweDEwOTQwLCAweDEwOTc4LCAweDEwOTg2LCAweDEwOTk4LCAweDEwOWIwLCAweDEwOWJlLCAweDEwOWNlLCAweDEwOWRjLCAweDEwOWUyLCAweDEwOWU0LFxuICAgICAgICAweDEwOWU4LCAweDEwOWY2LCAweDEwYTA4LCAweDEwYTEwLCAweDEwYTFlLCAweDEwYTIwLCAweDEwYTNjLCAweDEwYTQwLCAweDEwYTc4LCAweDEwYWYwLCAweDEwYjA2LCAweDEwYjBjLFxuICAgICAgICAweDEwYjE4LCAweDEwYjMwLCAweDEwYjNlLCAweDEwYjYwLCAweDEwYjdjLCAweDEwYjhlLCAweDEwYjljLCAweDEwYmI4LCAweDEwYmMyLCAweDEwYmM0LCAweDEwYmM4LCAweDEwYmQwLFxuICAgICAgICAweDEwYmRlLCAweDEwYmU2LCAweDEwYmVjLCAweDEwYzJlLCAweDEwYzRlLCAweDEwYzVjLCAweDEwYzYyLCAweDEwYzY0LCAweDEwYzY4LCAweDEwYzc2LCAweDEwYzhlLCAweDEwYzljLFxuICAgICAgICAweDEwY2I4LCAweDEwY2MyLCAweDEwY2M0LCAweDEwY2M4LCAweDEwY2QwLCAweDEwY2RlLCAweDEwY2U2LCAweDEwY2VjLCAweDEwY2ZhLCAweDEwZDBlLCAweDEwZDFjLCAweDEwZDM4LFxuICAgICAgICAweDEwZDcwLCAweDEwZDdlLCAweDEwZDgyLCAweDEwZDg0LCAweDEwZDg4LCAweDEwZDkwLCAweDEwZDllLCAweDEwZGEwLCAweDEwZGJjLCAweDEwZGM2LCAweDEwZGNjLCAweDEwZGQ4LFxuICAgICAgICAweDEwZGVlLCAweDEwZGYyLCAweDEwZGY0LCAweDEwZTE2LCAweDEwZTI2LCAweDEwZTJjLCAweDEwZTQ2LCAweDEwZTU4LCAweDEwZTZlLCAweDEwZTg2LCAweDEwZThjLCAweDEwZTk4LFxuICAgICAgICAweDEwZWIwLCAweDEwZWJlLCAweDEwZWNlLCAweDEwZWRjLCAweDEwZjBhLCAweDEwZjEyLCAweDEwZjE0LCAweDEwZjIyLCAweDEwZjI4LCAweDEwZjM2LCAweDEwZjQyLCAweDEwZjQ0LFxuICAgICAgICAweDEwZjQ4LCAweDEwZjUwLCAweDEwZjVlLCAweDEwZjY2LCAweDEwZjZjLCAweDEwZmIyLCAweDEwZmI0LCAweDExMDIyLCAweDExMDI4LCAweDExMDQyLCAweDExMDQ4LCAweDExMDUwLFxuICAgICAgICAweDExMDVlLCAweDExMDdhLCAweDExMDgyLCAweDExMDg0LCAweDExMDkwLCAweDExMDllLCAweDExMGEwLCAweDExMGJjLCAweDExMGM2LCAweDExMGNjLCAweDExMGQ4LCAweDExMGVlLFxuICAgICAgICAweDExMGYyLCAweDExMGY0LCAweDExMTAyLCAweDExMTFlLCAweDExMTIwLCAweDExMTNjLCAweDExMTQwLCAweDExMTc4LCAweDExMTg2LCAweDExMTk4LCAweDExMWIwLCAweDExMWJlLFxuICAgICAgICAweDExMWNlLCAweDExMWRjLCAweDExMWUyLCAweDExMWU0LCAweDExMWU4LCAweDExMWY2LCAweDExMjA4LCAweDExMjFlLCAweDExMjIwLCAweDExMjc4LCAweDExMmYwLCAweDExMzBjLFxuICAgICAgICAweDExMzMwLCAweDExMzNlLCAweDExMzYwLCAweDExMzdjLCAweDExMzhlLCAweDExMzljLCAweDExM2I4LCAweDExM2MyLCAweDExM2M4LCAweDExM2QwLCAweDExM2RlLCAweDExM2U2LFxuICAgICAgICAweDExM2VjLCAweDExNDA4LCAweDExNDEwLCAweDExNDFlLCAweDExNDIwLCAweDExNDNjLCAweDExNDQwLCAweDExNDc4LCAweDExNGYwLCAweDExNWUwLCAweDExNjBjLCAweDExNjE4LFxuICAgICAgICAweDExNjMwLCAweDExNjNlLCAweDExNjYwLCAweDExNjdjLCAweDExNmMwLCAweDExNmY4LCAweDExNzFjLCAweDExNzM4LCAweDExNzcwLCAweDExNzdlLCAweDExNzgyLCAweDExNzg0LFxuICAgICAgICAweDExNzg4LCAweDExNzkwLCAweDExNzllLCAweDExN2EwLCAweDExN2JjLCAweDExN2M2LCAweDExN2NjLCAweDExN2Q4LCAweDExN2VlLCAweDExODJlLCAweDExODM0LCAweDExODRlLFxuICAgICAgICAweDExODVjLCAweDExODYyLCAweDExODY0LCAweDExODY4LCAweDExODc2LCAweDExODhlLCAweDExODljLCAweDExOGI4LCAweDExOGMyLCAweDExOGM4LCAweDExOGQwLCAweDExOGRlLFxuICAgICAgICAweDExOGU2LCAweDExOGVjLCAweDExOGZhLCAweDExOTBlLCAweDExOTFjLCAweDExOTM4LCAweDExOTcwLCAweDExOTdlLCAweDExOTgyLCAweDExOTg0LCAweDExOTkwLCAweDExOTllLFxuICAgICAgICAweDExOWEwLCAweDExOWJjLCAweDExOWM2LCAweDExOWNjLCAweDExOWQ4LCAweDExOWVlLCAweDExOWYyLCAweDExOWY0LCAweDExYTBlLCAweDExYTFjLCAweDExYTM4LCAweDExYTcwLFxuICAgICAgICAweDExYTdlLCAweDExYWUwLCAweDExYWZjLCAweDExYjA4LCAweDExYjEwLCAweDExYjFlLCAweDExYjIwLCAweDExYjNjLCAweDExYjQwLCAweDExYjc4LCAweDExYjhjLCAweDExYjk4LFxuICAgICAgICAweDExYmIwLCAweDExYmJlLCAweDExYmNlLCAweDExYmRjLCAweDExYmUyLCAweDExYmU0LCAweDExYmU4LCAweDExYmY2LCAweDExYzE2LCAweDExYzI2LCAweDExYzJjLCAweDExYzQ2LFxuICAgICAgICAweDExYzRjLCAweDExYzU4LCAweDExYzZlLCAweDExYzg2LCAweDExYzk4LCAweDExY2IwLCAweDExY2JlLCAweDExY2NlLCAweDExY2RjLCAweDExY2UyLCAweDExY2U0LCAweDExY2U4LFxuICAgICAgICAweDExY2Y2LCAweDExZDA2LCAweDExZDBjLCAweDExZDE4LCAweDExZDMwLCAweDExZDNlLCAweDExZDYwLCAweDExZDdjLCAweDExZDhlLCAweDExZDljLCAweDExZGI4LCAweDExZGM0LFxuICAgICAgICAweDExZGM4LCAweDExZGQwLCAweDExZGRlLCAweDExZGU2LCAweDExZGVjLCAweDExZGZhLCAweDExZTBhLCAweDExZTEyLCAweDExZTE0LCAweDExZTIyLCAweDExZTI0LCAweDExZTI4LFxuICAgICAgICAweDExZTM2LCAweDExZTQyLCAweDExZTQ0LCAweDExZTUwLCAweDExZTVlLCAweDExZTY2LCAweDExZTZjLCAweDExZTgyLCAweDExZTg0LCAweDExZTg4LCAweDExZTkwLCAweDExZTllLFxuICAgICAgICAweDExZWEwLCAweDExZWJjLCAweDExZWM2LCAweDExZWNjLCAweDExZWQ4LCAweDExZWVlLCAweDExZjFhLCAweDExZjJlLCAweDExZjMyLCAweDExZjM0LCAweDExZjRlLCAweDExZjVjLFxuICAgICAgICAweDExZjYyLCAweDExZjY0LCAweDExZjY4LCAweDExZjc2LCAweDEyMDQ4LCAweDEyMDVlLCAweDEyMDgyLCAweDEyMDg0LCAweDEyMDkwLCAweDEyMDllLCAweDEyMGEwLCAweDEyMGJjLFxuICAgICAgICAweDEyMGQ4LCAweDEyMGYyLCAweDEyMGY0LCAweDEyMTA4LCAweDEyMTFlLCAweDEyMTIwLCAweDEyMTNjLCAweDEyMTQwLCAweDEyMTc4LCAweDEyMTg2LCAweDEyMTk4LCAweDEyMWIwLFxuICAgICAgICAweDEyMWJlLCAweDEyMWUyLCAweDEyMWU0LCAweDEyMWU4LCAweDEyMWY2LCAweDEyMjA0LCAweDEyMjEwLCAweDEyMjFlLCAweDEyMjIwLCAweDEyMjc4LCAweDEyMmYwLCAweDEyMzA2LFxuICAgICAgICAweDEyMzBjLCAweDEyMzMwLCAweDEyMzNlLCAweDEyMzYwLCAweDEyMzdjLCAweDEyMzhlLCAweDEyMzljLCAweDEyM2I4LCAweDEyM2MyLCAweDEyM2M4LCAweDEyM2QwLCAweDEyM2U2LFxuICAgICAgICAweDEyM2VjLCAweDEyNDFlLCAweDEyNDIwLCAweDEyNDNjLCAweDEyNGYwLCAweDEyNWUwLCAweDEyNjE4LCAweDEyNjNlLCAweDEyNjYwLCAweDEyNjdjLCAweDEyNmMwLCAweDEyNmY4LFxuICAgICAgICAweDEyNzM4LCAweDEyNzcwLCAweDEyNzdlLCAweDEyNzgyLCAweDEyNzg0LCAweDEyNzkwLCAweDEyNzllLCAweDEyN2EwLCAweDEyN2JjLCAweDEyN2M2LCAweDEyN2NjLCAweDEyN2Q4LFxuICAgICAgICAweDEyN2VlLCAweDEyODIwLCAweDEyODNjLCAweDEyODQwLCAweDEyODc4LCAweDEyOGYwLCAweDEyOWUwLCAweDEyYmMwLCAweDEyYzE4LCAweDEyYzMwLCAweDEyYzNlLCAweDEyYzYwLFxuICAgICAgICAweDEyYzdjLCAweDEyY2MwLCAweDEyY2Y4LCAweDEyZGYwLCAweDEyZTFjLCAweDEyZTM4LCAweDEyZTcwLCAweDEyZTdlLCAweDEyZWUwLCAweDEyZWZjLCAweDEyZjA0LCAweDEyZjA4LFxuICAgICAgICAweDEyZjEwLCAweDEyZjIwLCAweDEyZjNjLCAweDEyZjQwLCAweDEyZjc4LCAweDEyZjg2LCAweDEyZjhjLCAweDEyZjk4LCAweDEyZmIwLCAweDEyZmJlLCAweDEyZmNlLCAweDEyZmRjLFxuICAgICAgICAweDEzMDJlLCAweDEzMDRlLCAweDEzMDVjLCAweDEzMDYyLCAweDEzMDY4LCAweDEzMDhlLCAweDEzMDljLCAweDEzMGI4LCAweDEzMGMyLCAweDEzMGM4LCAweDEzMGQwLCAweDEzMGRlLFxuICAgICAgICAweDEzMGVjLCAweDEzMGZhLCAweDEzMTBlLCAweDEzMTM4LCAweDEzMTcwLCAweDEzMTdlLCAweDEzMTgyLCAweDEzMTg0LCAweDEzMTkwLCAweDEzMTllLCAweDEzMWEwLCAweDEzMWJjLFxuICAgICAgICAweDEzMWM2LCAweDEzMWNjLCAweDEzMWQ4LCAweDEzMWYyLCAweDEzMWY0LCAweDEzMjBlLCAweDEzMjFjLCAweDEzMjcwLCAweDEzMjdlLCAweDEzMmUwLCAweDEzMmZjLCAweDEzMzA4LFxuICAgICAgICAweDEzMzFlLCAweDEzMzIwLCAweDEzMzNjLCAweDEzMzQwLCAweDEzMzc4LCAweDEzMzg2LCAweDEzMzk4LCAweDEzM2IwLCAweDEzM2JlLCAweDEzM2NlLCAweDEzM2RjLCAweDEzM2UyLFxuICAgICAgICAweDEzM2U0LCAweDEzM2U4LCAweDEzM2Y2LCAweDEzNDBlLCAweDEzNDFjLCAweDEzNDM4LCAweDEzNDcwLCAweDEzNDdlLCAweDEzNGUwLCAweDEzNGZjLCAweDEzNWMwLCAweDEzNWY4LFxuICAgICAgICAweDEzNjA4LCAweDEzNjEwLCAweDEzNjFlLCAweDEzNjIwLCAweDEzNjNjLCAweDEzNjQwLCAweDEzNjc4LCAweDEzNmYwLCAweDEzNzBjLCAweDEzNzE4LCAweDEzNzMwLCAweDEzNzNlLFxuICAgICAgICAweDEzNzYwLCAweDEzNzdjLCAweDEzNzljLCAweDEzN2I4LCAweDEzN2MyLCAweDEzN2M0LCAweDEzN2M4LCAweDEzN2QwLCAweDEzN2RlLCAweDEzN2U2LCAweDEzN2VjLCAweDEzODE2LFxuICAgICAgICAweDEzODI2LCAweDEzODJjLCAweDEzODQ2LCAweDEzODRjLCAweDEzODU4LCAweDEzODZlLCAweDEzODc0LCAweDEzODg2LCAweDEzODk4LCAweDEzOGIwLCAweDEzOGJlLCAweDEzOGNlLFxuICAgICAgICAweDEzOGRjLCAweDEzOGUyLCAweDEzOGU0LCAweDEzOGU4LCAweDEzOTA2LCAweDEzOTBjLCAweDEzOTMwLCAweDEzOTNlLCAweDEzOTYwLCAweDEzOTdjLCAweDEzOThlLCAweDEzOTljLFxuICAgICAgICAweDEzOWI4LCAweDEzOWM4LCAweDEzOWQwLCAweDEzOWRlLCAweDEzOWU2LCAweDEzOWVjLCAweDEzOWZhLCAweDEzYTA2LCAweDEzYTBjLCAweDEzYTE4LCAweDEzYTMwLCAweDEzYTNlLFxuICAgICAgICAweDEzYTYwLCAweDEzYTdjLCAweDEzYWMwLCAweDEzYWY4LCAweDEzYjBlLCAweDEzYjFjLCAweDEzYjM4LCAweDEzYjcwLCAweDEzYjdlLCAweDEzYjg4LCAweDEzYjkwLCAweDEzYjllLFxuICAgICAgICAweDEzYmEwLCAweDEzYmJjLCAweDEzYmNjLCAweDEzYmQ4LCAweDEzYmVlLCAweDEzYmYyLCAweDEzYmY0LCAweDEzYzEyLCAweDEzYzE0LCAweDEzYzIyLCAweDEzYzI0LCAweDEzYzI4LFxuICAgICAgICAweDEzYzM2LCAweDEzYzQyLCAweDEzYzQ4LCAweDEzYzUwLCAweDEzYzVlLCAweDEzYzY2LCAweDEzYzZjLCAweDEzYzgyLCAweDEzYzg0LCAweDEzYzkwLCAweDEzYzllLCAweDEzY2EwLFxuICAgICAgICAweDEzY2JjLCAweDEzY2M2LCAweDEzY2NjLCAweDEzY2Q4LCAweDEzY2VlLCAweDEzZDAyLCAweDEzZDA0LCAweDEzZDA4LCAweDEzZDEwLCAweDEzZDFlLCAweDEzZDIwLCAweDEzZDNjLFxuICAgICAgICAweDEzZDQwLCAweDEzZDc4LCAweDEzZDg2LCAweDEzZDhjLCAweDEzZDk4LCAweDEzZGIwLCAweDEzZGJlLCAweDEzZGNlLCAweDEzZGRjLCAweDEzZGU0LCAweDEzZGU4LCAweDEzZGY2LFxuICAgICAgICAweDEzZTFhLCAweDEzZTJlLCAweDEzZTMyLCAweDEzZTM0LCAweDEzZTRlLCAweDEzZTVjLCAweDEzZTYyLCAweDEzZTY0LCAweDEzZTY4LCAweDEzZTc2LCAweDEzZThlLCAweDEzZTljLFxuICAgICAgICAweDEzZWI4LCAweDEzZWMyLCAweDEzZWM0LCAweDEzZWM4LCAweDEzZWQwLCAweDEzZWRlLCAweDEzZWU2LCAweDEzZWVjLCAweDEzZjI2LCAweDEzZjJjLCAweDEzZjNhLCAweDEzZjQ2LFxuICAgICAgICAweDEzZjRjLCAweDEzZjU4LCAweDEzZjZlLCAweDEzZjcyLCAweDEzZjc0LCAweDE0MDgyLCAweDE0MDllLCAweDE0MGEwLCAweDE0MGJjLCAweDE0MTA0LCAweDE0MTA4LCAweDE0MTEwLFxuICAgICAgICAweDE0MTFlLCAweDE0MTIwLCAweDE0MTNjLCAweDE0MTQwLCAweDE0MTc4LCAweDE0MThjLCAweDE0MTk4LCAweDE0MWIwLCAweDE0MWJlLCAweDE0MWUyLCAweDE0MWU0LCAweDE0MWU4LFxuICAgICAgICAweDE0MjA4LCAweDE0MjEwLCAweDE0MjFlLCAweDE0MjIwLCAweDE0MjNjLCAweDE0MjQwLCAweDE0Mjc4LCAweDE0MmYwLCAweDE0MzA2LCAweDE0MzBjLCAweDE0MzE4LCAweDE0MzMwLFxuICAgICAgICAweDE0MzNlLCAweDE0MzYwLCAweDE0MzdjLCAweDE0MzhlLCAweDE0M2MyLCAweDE0M2M0LCAweDE0M2M4LCAweDE0M2QwLCAweDE0M2U2LCAweDE0M2VjLCAweDE0NDA4LCAweDE0NDEwLFxuICAgICAgICAweDE0NDFlLCAweDE0NDIwLCAweDE0NDNjLCAweDE0NDQwLCAweDE0NDc4LCAweDE0NGYwLCAweDE0NWUwLCAweDE0NjBjLCAweDE0NjE4LCAweDE0NjMwLCAweDE0NjNlLCAweDE0NjYwLFxuICAgICAgICAweDE0NjdjLCAweDE0NmMwLCAweDE0NmY4LCAweDE0NzFjLCAweDE0NzM4LCAweDE0NzcwLCAweDE0NzdlLCAweDE0NzgyLCAweDE0Nzg0LCAweDE0Nzg4LCAweDE0NzkwLCAweDE0N2EwLFxuICAgICAgICAweDE0N2JjLCAweDE0N2M2LCAweDE0N2NjLCAweDE0N2Q4LCAweDE0N2VlLCAweDE0ODEwLCAweDE0ODIwLCAweDE0ODNjLCAweDE0ODQwLCAweDE0ODc4LCAweDE0OGYwLCAweDE0OWUwLFxuICAgICAgICAweDE0YmMwLCAweDE0YzMwLCAweDE0YzNlLCAweDE0YzYwLCAweDE0YzdjLCAweDE0Y2MwLCAweDE0Y2Y4LCAweDE0ZGYwLCAweDE0ZTM4LCAweDE0ZTcwLCAweDE0ZTdlLCAweDE0ZWUwLFxuICAgICAgICAweDE0ZWZjLCAweDE0ZjA0LCAweDE0ZjA4LCAweDE0ZjEwLCAweDE0ZjFlLCAweDE0ZjIwLCAweDE0ZjNjLCAweDE0ZjQwLCAweDE0Zjc4LCAweDE0Zjg2LCAweDE0ZjhjLCAweDE0Zjk4LFxuICAgICAgICAweDE0ZmIwLCAweDE0ZmNlLCAweDE0ZmRjLCAweDE1MDIwLCAweDE1MDQwLCAweDE1MDc4LCAweDE1MGYwLCAweDE1MWUwLCAweDE1M2MwLCAweDE1ODYwLCAweDE1ODdjLCAweDE1OGMwLFxuICAgICAgICAweDE1OGY4LCAweDE1OWYwLCAweDE1YmUwLCAweDE1YzcwLCAweDE1YzdlLCAweDE1Y2UwLCAweDE1Y2ZjLCAweDE1ZGMwLCAweDE1ZGY4LCAweDE1ZTA4LCAweDE1ZTEwLCAweDE1ZTIwLFxuICAgICAgICAweDE1ZTQwLCAweDE1ZTc4LCAweDE1ZWYwLCAweDE1ZjBjLCAweDE1ZjE4LCAweDE1ZjMwLCAweDE1ZjYwLCAweDE1ZjdjLCAweDE1ZjhlLCAweDE1ZjljLCAweDE1ZmI4LCAweDE2MDRlLFxuICAgICAgICAweDE2MDVjLCAweDE2MDhlLCAweDE2MDljLCAweDE2MGI4LCAweDE2MGMyLCAweDE2MGM0LCAweDE2MGM4LCAweDE2MGRlLCAweDE2MTBlLCAweDE2MTFjLCAweDE2MTM4LCAweDE2MTcwLFxuICAgICAgICAweDE2MTdlLCAweDE2MTg0LCAweDE2MTg4LCAweDE2MTkwLCAweDE2MTllLCAweDE2MWEwLCAweDE2MWJjLCAweDE2MWM2LCAweDE2MWNjLCAweDE2MWQ4LCAweDE2MWYyLCAweDE2MWY0LFxuICAgICAgICAweDE2MjBlLCAweDE2MjFjLCAweDE2MjM4LCAweDE2MjcwLCAweDE2MjdlLCAweDE2MmUwLCAweDE2MmZjLCAweDE2MzA0LCAweDE2MzA4LCAweDE2MzEwLCAweDE2MzFlLCAweDE2MzIwLFxuICAgICAgICAweDE2MzNjLCAweDE2MzQwLCAweDE2Mzc4LCAweDE2Mzg2LCAweDE2MzhjLCAweDE2Mzk4LCAweDE2M2IwLCAweDE2M2JlLCAweDE2M2NlLCAweDE2M2RjLCAweDE2M2UyLCAweDE2M2U0LFxuICAgICAgICAweDE2M2U4LCAweDE2M2Y2LCAweDE2NDBlLCAweDE2NDFjLCAweDE2NDM4LCAweDE2NDcwLCAweDE2NDdlLCAweDE2NGUwLCAweDE2NGZjLCAweDE2NWMwLCAweDE2NWY4LCAweDE2NjEwLFxuICAgICAgICAweDE2NjFlLCAweDE2NjIwLCAweDE2NjNjLCAweDE2NjQwLCAweDE2Njc4LCAweDE2NmYwLCAweDE2NzE4LCAweDE2NzMwLCAweDE2NzNlLCAweDE2NzYwLCAweDE2NzdjLCAweDE2NzhlLFxuICAgICAgICAweDE2NzljLCAweDE2N2I4LCAweDE2N2MyLCAweDE2N2M0LCAweDE2N2M4LCAweDE2N2QwLCAweDE2N2RlLCAweDE2N2U2LCAweDE2N2VjLCAweDE2ODFjLCAweDE2ODM4LCAweDE2ODcwLFxuICAgICAgICAweDE2OGUwLCAweDE2OGZjLCAweDE2OWMwLCAweDE2OWY4LCAweDE2YmYwLCAweDE2YzEwLCAweDE2YzFlLCAweDE2YzIwLCAweDE2YzNjLCAweDE2YzQwLCAweDE2Yzc4LCAweDE2Y2YwLFxuICAgICAgICAweDE2ZGUwLCAweDE2ZTE4LCAweDE2ZTMwLCAweDE2ZTNlLCAweDE2ZTYwLCAweDE2ZTdjLCAweDE2ZWMwLCAweDE2ZWY4LCAweDE2ZjFjLCAweDE2ZjM4LCAweDE2ZjcwLCAweDE2ZjdlLFxuICAgICAgICAweDE2Zjg0LCAweDE2Zjg4LCAweDE2ZjkwLCAweDE2ZjllLCAweDE2ZmEwLCAweDE2ZmJjLCAweDE2ZmM2LCAweDE2ZmNjLCAweDE2ZmQ4LCAweDE3MDI2LCAweDE3MDJjLCAweDE3MDQ2LFxuICAgICAgICAweDE3MDRjLCAweDE3MDU4LCAweDE3MDZlLCAweDE3MDg2LCAweDE3MDhjLCAweDE3MDk4LCAweDE3MGIwLCAweDE3MGJlLCAweDE3MGNlLCAweDE3MGRjLCAweDE3MGU4LCAweDE3MTA2LFxuICAgICAgICAweDE3MTBjLCAweDE3MTE4LCAweDE3MTMwLCAweDE3MTNlLCAweDE3MTYwLCAweDE3MTdjLCAweDE3MThlLCAweDE3MTljLCAweDE3MWI4LCAweDE3MWMyLCAweDE3MWM0LCAweDE3MWM4LFxuICAgICAgICAweDE3MWQwLCAweDE3MWRlLCAweDE3MWU2LCAweDE3MWVjLCAweDE3MWZhLCAweDE3MjA2LCAweDE3MjBjLCAweDE3MjE4LCAweDE3MjMwLCAweDE3MjNlLCAweDE3MjYwLCAweDE3MjdjLFxuICAgICAgICAweDE3MmMwLCAweDE3MmY4LCAweDE3MzBlLCAweDE3MzFjLCAweDE3MzM4LCAweDE3MzcwLCAweDE3MzdlLCAweDE3Mzg4LCAweDE3MzkwLCAweDE3MzllLCAweDE3M2EwLCAweDE3M2JjLFxuICAgICAgICAweDE3M2NjLCAweDE3M2Q4LCAweDE3M2VlLCAweDE3M2YyLCAweDE3M2Y0LCAweDE3NDBjLCAweDE3NDE4LCAweDE3NDMwLCAweDE3NDNlLCAweDE3NDYwLCAweDE3NDdjLCAweDE3NGMwLFxuICAgICAgICAweDE3NGY4LCAweDE3NWYwLCAweDE3NjBlLCAweDE3NjFjLCAweDE3NjM4LCAweDE3NjcwLCAweDE3NjdlLCAweDE3NmUwLCAweDE3NmZjLCAweDE3NzA4LCAweDE3NzEwLCAweDE3NzFlLFxuICAgICAgICAweDE3NzIwLCAweDE3NzNjLCAweDE3NzQwLCAweDE3Nzc4LCAweDE3Nzk4LCAweDE3N2IwLCAweDE3N2JlLCAweDE3N2RjLCAweDE3N2UyLCAweDE3N2U0LCAweDE3N2U4LCAweDE3ODIyLFxuICAgICAgICAweDE3ODI0LCAweDE3ODI4LCAweDE3ODM2LCAweDE3ODQyLCAweDE3ODQ0LCAweDE3ODQ4LCAweDE3ODUwLCAweDE3ODVlLCAweDE3ODY2LCAweDE3ODZjLCAweDE3ODgyLCAweDE3ODg0LFxuICAgICAgICAweDE3ODg4LCAweDE3ODkwLCAweDE3ODllLCAweDE3OGEwLCAweDE3OGJjLCAweDE3OGM2LCAweDE3OGNjLCAweDE3OGQ4LCAweDE3OGVlLCAweDE3OGYyLCAweDE3OGY0LCAweDE3OTAyLFxuICAgICAgICAweDE3OTA0LCAweDE3OTA4LCAweDE3OTEwLCAweDE3OTFlLCAweDE3OTIwLCAweDE3OTNjLCAweDE3OTQwLCAweDE3OTc4LCAweDE3OTg2LCAweDE3OThjLCAweDE3OTk4LCAweDE3OWIwLFxuICAgICAgICAweDE3OWJlLCAweDE3OWNlLCAweDE3OWRjLCAweDE3OWUyLCAweDE3OWU0LCAweDE3OWU4LCAweDE3OWY2LCAweDE3YTA0LCAweDE3YTA4LCAweDE3YTEwLCAweDE3YTFlLCAweDE3YTIwLFxuICAgICAgICAweDE3YTNjLCAweDE3YTQwLCAweDE3YTc4LCAweDE3YWYwLCAweDE3YjA2LCAweDE3YjBjLCAweDE3YjE4LCAweDE3YjMwLCAweDE3YjNlLCAweDE3YjYwLCAweDE3YjdjLCAweDE3YjhlLFxuICAgICAgICAweDE3YjljLCAweDE3YmI4LCAweDE3YmM0LCAweDE3YmM4LCAweDE3YmQwLCAweDE3YmRlLCAweDE3YmU2LCAweDE3YmVjLCAweDE3YzJlLCAweDE3YzMyLCAweDE3YzM0LCAweDE3YzRlLFxuICAgICAgICAweDE3YzVjLCAweDE3YzYyLCAweDE3YzY0LCAweDE3YzY4LCAweDE3Yzc2LCAweDE3YzhlLCAweDE3YzljLCAweDE3Y2I4LCAweDE3Y2MyLCAweDE3Y2M0LCAweDE3Y2M4LCAweDE3Y2QwLFxuICAgICAgICAweDE3Y2RlLCAweDE3Y2U2LCAweDE3Y2VjLCAweDE3ZDBlLCAweDE3ZDFjLCAweDE3ZDM4LCAweDE3ZDcwLCAweDE3ZDgyLCAweDE3ZDg0LCAweDE3ZDg4LCAweDE3ZDkwLCAweDE3ZDllLFxuICAgICAgICAweDE3ZGEwLCAweDE3ZGJjLCAweDE3ZGM2LCAweDE3ZGNjLCAweDE3ZGQ4LCAweDE3ZGVlLCAweDE3ZTI2LCAweDE3ZTJjLCAweDE3ZTNhLCAweDE3ZTQ2LCAweDE3ZTRjLCAweDE3ZTU4LFxuICAgICAgICAweDE3ZTZlLCAweDE3ZTcyLCAweDE3ZTc0LCAweDE3ZTg2LCAweDE3ZThjLCAweDE3ZTk4LCAweDE3ZWIwLCAweDE3ZWNlLCAweDE3ZWRjLCAweDE3ZWUyLCAweDE3ZWU0LCAweDE3ZWU4LFxuICAgICAgICAweDE3ZWY2LCAweDE4MTNhLCAweDE4MTcyLCAweDE4MTc0LCAweDE4MjE2LCAweDE4MjI2LCAweDE4MjNhLCAweDE4MjRjLCAweDE4MjU4LCAweDE4MjZlLCAweDE4MjcyLCAweDE4Mjc0LFxuICAgICAgICAweDE4Mjk4LCAweDE4MmJlLCAweDE4MmUyLCAweDE4MmU0LCAweDE4MmU4LCAweDE4MmY2LCAweDE4MzVlLCAweDE4MzdhLCAweDE4M2FlLCAweDE4M2Q2LCAweDE4NDE2LCAweDE4NDI2LFxuICAgICAgICAweDE4NDJjLCAweDE4NDNhLCAweDE4NDQ2LCAweDE4NDU4LCAweDE4NDZlLCAweDE4NDcyLCAweDE4NDc0LCAweDE4NDg2LCAweDE4NGIwLCAweDE4NGJlLCAweDE4NGNlLCAweDE4NGRjLFxuICAgICAgICAweDE4NGUyLCAweDE4NGU0LCAweDE4NGU4LCAweDE4NGY2LCAweDE4NTA2LCAweDE4NTBjLCAweDE4NTE4LCAweDE4NTMwLCAweDE4NTNlLCAweDE4NTYwLCAweDE4NTdjLCAweDE4NThlLFxuICAgICAgICAweDE4NTljLCAweDE4NWI4LCAweDE4NWMyLCAweDE4NWM0LCAweDE4NWM4LCAweDE4NWQwLCAweDE4NWRlLCAweDE4NWU2LCAweDE4NWVjLCAweDE4NWZhLCAweDE4NjEyLCAweDE4NjE0LFxuICAgICAgICAweDE4NjIyLCAweDE4NjI4LCAweDE4NjM2LCAweDE4NjQyLCAweDE4NjUwLCAweDE4NjVlLCAweDE4NjdhLCAweDE4NjgyLCAweDE4Njg0LCAweDE4Njg4LCAweDE4NjkwLCAweDE4NjllLFxuICAgICAgICAweDE4NmEwLCAweDE4NmJjLCAweDE4NmM2LCAweDE4NmNjLCAweDE4NmQ4LCAweDE4NmVlLCAweDE4NmYyLCAweDE4NmY0LCAweDE4NzJlLCAweDE4NzRlLCAweDE4NzVjLCAweDE4Nzk2LFxuICAgICAgICAweDE4N2E2LCAweDE4N2FjLCAweDE4N2QyLCAweDE4N2Q0LCAweDE4ODI2LCAweDE4ODJjLCAweDE4ODNhLCAweDE4ODQ2LCAweDE4ODRjLCAweDE4ODU4LCAweDE4ODZlLCAweDE4ODcyLFxuICAgICAgICAweDE4ODc0LCAweDE4ODg2LCAweDE4ODk4LCAweDE4OGIwLCAweDE4OGJlLCAweDE4OGNlLCAweDE4OGRjLCAweDE4OGUyLCAweDE4OGU0LCAweDE4OGU4LCAweDE4OGY2LCAweDE4OTBjLFxuICAgICAgICAweDE4OTMwLCAweDE4OTNlLCAweDE4OTYwLCAweDE4OTdjLCAweDE4OThlLCAweDE4OWI4LCAweDE4OWMyLCAweDE4OWM4LCAweDE4OWQwLCAweDE4OWRlLCAweDE4OWU2LCAweDE4OWVjLFxuICAgICAgICAweDE4OWZhLCAweDE4YTE4LCAweDE4YTMwLCAweDE4YTNlLCAweDE4YTYwLCAweDE4YTdjLCAweDE4YWMwLCAweDE4YWY4LCAweDE4YjFjLCAweDE4YjM4LCAweDE4YjcwLCAweDE4YjdlLFxuICAgICAgICAweDE4YjgyLCAweDE4Yjg0LCAweDE4Yjg4LCAweDE4YjkwLCAweDE4YjllLCAweDE4YmEwLCAweDE4YmJjLCAweDE4YmM2LCAweDE4YmNjLCAweDE4YmQ4LCAweDE4YmVlLCAweDE4YmYyLFxuICAgICAgICAweDE4YmY0LCAweDE4YzIyLCAweDE4YzI0LCAweDE4YzI4LCAweDE4YzM2LCAweDE4YzQyLCAweDE4YzQ4LCAweDE4YzUwLCAweDE4YzVlLCAweDE4YzY2LCAweDE4YzdhLCAweDE4YzgyLFxuICAgICAgICAweDE4Yzg0LCAweDE4YzkwLCAweDE4YzllLCAweDE4Y2EwLCAweDE4Y2JjLCAweDE4Y2NjLCAweDE4Y2YyLCAweDE4Y2Y0LCAweDE4ZDA0LCAweDE4ZDA4LCAweDE4ZDEwLCAweDE4ZDFlLFxuICAgICAgICAweDE4ZDIwLCAweDE4ZDNjLCAweDE4ZDQwLCAweDE4ZDc4LCAweDE4ZDg2LCAweDE4ZDk4LCAweDE4ZGNlLCAweDE4ZGUyLCAweDE4ZGU0LCAweDE4ZGU4LCAweDE4ZTJlLCAweDE4ZTMyLFxuICAgICAgICAweDE4ZTM0LCAweDE4ZTRlLCAweDE4ZTVjLCAweDE4ZTYyLCAweDE4ZTY0LCAweDE4ZTY4LCAweDE4ZThlLCAweDE4ZTljLCAweDE4ZWI4LCAweDE4ZWMyLCAweDE4ZWM0LCAweDE4ZWM4LFxuICAgICAgICAweDE4ZWQwLCAweDE4ZWZhLCAweDE4ZjE2LCAweDE4ZjI2LCAweDE4ZjJjLCAweDE4ZjQ2LCAweDE4ZjRjLCAweDE4ZjU4LCAweDE4ZjZlLCAweDE4ZjhhLCAweDE4ZjkyLCAweDE4Zjk0LFxuICAgICAgICAweDE4ZmEyLCAweDE4ZmE0LCAweDE4ZmE4LCAweDE4ZmI2LCAweDE5MDJjLCAweDE5MDNhLCAweDE5MDQ2LCAweDE5MDRjLCAweDE5MDU4LCAweDE5MDcyLCAweDE5MDc0LCAweDE5MDg2LFxuICAgICAgICAweDE5MDk4LCAweDE5MGIwLCAweDE5MGJlLCAweDE5MGNlLCAweDE5MGRjLCAweDE5MGUyLCAweDE5MGU4LCAweDE5MGY2LCAweDE5MTA2LCAweDE5MTBjLCAweDE5MTMwLCAweDE5MTNlLFxuICAgICAgICAweDE5MTYwLCAweDE5MTdjLCAweDE5MThlLCAweDE5MTljLCAweDE5MWI4LCAweDE5MWMyLCAweDE5MWM4LCAweDE5MWQwLCAweDE5MWRlLCAweDE5MWU2LCAweDE5MWVjLCAweDE5MWZhLFxuICAgICAgICAweDE5MjE4LCAweDE5MjNlLCAweDE5MjYwLCAweDE5MjdjLCAweDE5MmMwLCAweDE5MmY4LCAweDE5MzM4LCAweDE5MzcwLCAweDE5MzdlLCAweDE5MzgyLCAweDE5Mzg0LCAweDE5MzkwLFxuICAgICAgICAweDE5MzllLCAweDE5M2EwLCAweDE5M2JjLCAweDE5M2M2LCAweDE5M2NjLCAweDE5M2Q4LCAweDE5M2VlLCAweDE5M2YyLCAweDE5M2Y0LCAweDE5NDMwLCAweDE5NDNlLCAweDE5NDYwLFxuICAgICAgICAweDE5NDdjLCAweDE5NGMwLCAweDE5NGY4LCAweDE5NWYwLCAweDE5NjM4LCAweDE5NjcwLCAweDE5NjdlLCAweDE5NmUwLCAweDE5NmZjLCAweDE5NzAyLCAweDE5NzA0LCAweDE5NzA4LFxuICAgICAgICAweDE5NzEwLCAweDE5NzIwLCAweDE5NzNjLCAweDE5NzQwLCAweDE5Nzc4LCAweDE5Nzg2LCAweDE5NzhjLCAweDE5Nzk4LCAweDE5N2IwLCAweDE5N2JlLCAweDE5N2NlLCAweDE5N2RjLFxuICAgICAgICAweDE5N2UyLCAweDE5N2U0LCAweDE5N2U4LCAweDE5ODIyLCAweDE5ODI0LCAweDE5ODQyLCAweDE5ODQ4LCAweDE5ODUwLCAweDE5ODVlLCAweDE5ODY2LCAweDE5ODdhLCAweDE5ODgyLFxuICAgICAgICAweDE5ODg0LCAweDE5ODkwLCAweDE5ODllLCAweDE5OGEwLCAweDE5OGJjLCAweDE5OGNjLCAweDE5OGYyLCAweDE5OGY0LCAweDE5OTAyLCAweDE5OTA4LCAweDE5OTFlLCAweDE5OTIwLFxuICAgICAgICAweDE5OTNjLCAweDE5OTQwLCAweDE5OTc4LCAweDE5OTg2LCAweDE5OTk4LCAweDE5OWNlLCAweDE5OWUyLCAweDE5OWU0LCAweDE5OWU4LCAweDE5YTA4LCAweDE5YTEwLCAweDE5YTFlLFxuICAgICAgICAweDE5YTIwLCAweDE5YTNjLCAweDE5YTQwLCAweDE5YTc4LCAweDE5YWYwLCAweDE5YjE4LCAweDE5YjNlLCAweDE5YjYwLCAweDE5YjljLCAweDE5YmMyLCAweDE5YmM0LCAweDE5YmM4LFxuICAgICAgICAweDE5YmQwLCAweDE5YmU2LCAweDE5YzJlLCAweDE5YzM0LCAweDE5YzRlLCAweDE5YzVjLCAweDE5YzYyLCAweDE5YzY0LCAweDE5YzY4LCAweDE5YzhlLCAweDE5YzljLCAweDE5Y2I4LFxuICAgICAgICAweDE5Y2MyLCAweDE5Y2M4LCAweDE5Y2QwLCAweDE5Y2U2LCAweDE5Y2ZhLCAweDE5ZDBlLCAweDE5ZDFjLCAweDE5ZDM4LCAweDE5ZDcwLCAweDE5ZDdlLCAweDE5ZDgyLCAweDE5ZDg0LFxuICAgICAgICAweDE5ZDg4LCAweDE5ZDkwLCAweDE5ZGEwLCAweDE5ZGNjLCAweDE5ZGYyLCAweDE5ZGY0LCAweDE5ZTE2LCAweDE5ZTI2LCAweDE5ZTJjLCAweDE5ZTQ2LCAweDE5ZTRjLCAweDE5ZTU4LFxuICAgICAgICAweDE5ZTc0LCAweDE5ZTg2LCAweDE5ZThjLCAweDE5ZTk4LCAweDE5ZWIwLCAweDE5ZWJlLCAweDE5ZWNlLCAweDE5ZWUyLCAweDE5ZWU0LCAweDE5ZWU4LCAweDE5ZjBhLCAweDE5ZjEyLFxuICAgICAgICAweDE5ZjE0LCAweDE5ZjIyLCAweDE5ZjI0LCAweDE5ZjI4LCAweDE5ZjQyLCAweDE5ZjQ0LCAweDE5ZjQ4LCAweDE5ZjUwLCAweDE5ZjVlLCAweDE5ZjZjLCAweDE5ZjlhLCAweDE5ZmFlLFxuICAgICAgICAweDE5ZmIyLCAweDE5ZmI0LCAweDFhMDQ2LCAweDFhMDRjLCAweDFhMDcyLCAweDFhMDc0LCAweDFhMDg2LCAweDFhMDhjLCAweDFhMDk4LCAweDFhMGIwLCAweDFhMGJlLCAweDFhMGUyLFxuICAgICAgICAweDFhMGU0LCAweDFhMGU4LCAweDFhMGY2LCAweDFhMTA2LCAweDFhMTBjLCAweDFhMTE4LCAweDFhMTMwLCAweDFhMTNlLCAweDFhMTYwLCAweDFhMTdjLCAweDFhMThlLCAweDFhMTljLFxuICAgICAgICAweDFhMWI4LCAweDFhMWMyLCAweDFhMWM0LCAweDFhMWM4LCAweDFhMWQwLCAweDFhMWRlLCAweDFhMWU2LCAweDFhMWVjLCAweDFhMjE4LCAweDFhMjMwLCAweDFhMjNlLCAweDFhMjYwLFxuICAgICAgICAweDFhMjdjLCAweDFhMmMwLCAweDFhMmY4LCAweDFhMzFjLCAweDFhMzM4LCAweDFhMzcwLCAweDFhMzdlLCAweDFhMzgyLCAweDFhMzg0LCAweDFhMzg4LCAweDFhMzkwLCAweDFhMzllLFxuICAgICAgICAweDFhM2EwLCAweDFhM2JjLCAweDFhM2M2LCAweDFhM2NjLCAweDFhM2Q4LCAweDFhM2VlLCAweDFhM2YyLCAweDFhM2Y0LCAweDFhNDE4LCAweDFhNDMwLCAweDFhNDNlLCAweDFhNDYwLFxuICAgICAgICAweDFhNDdjLCAweDFhNGMwLCAweDFhNGY4LCAweDFhNWYwLCAweDFhNjFjLCAweDFhNjM4LCAweDFhNjcwLCAweDFhNjdlLCAweDFhNmUwLCAweDFhNmZjLCAweDFhNzAyLCAweDFhNzA0LFxuICAgICAgICAweDFhNzA4LCAweDFhNzEwLCAweDFhNzFlLCAweDFhNzIwLCAweDFhNzNjLCAweDFhNzQwLCAweDFhNzc4LCAweDFhNzg2LCAweDFhNzhjLCAweDFhNzk4LCAweDFhN2IwLCAweDFhN2JlLFxuICAgICAgICAweDFhN2NlLCAweDFhN2RjLCAweDFhN2UyLCAweDFhN2U0LCAweDFhN2U4LCAweDFhODMwLCAweDFhODYwLCAweDFhODdjLCAweDFhOGMwLCAweDFhOGY4LCAweDFhOWYwLCAweDFhYmUwLFxuICAgICAgICAweDFhYzcwLCAweDFhYzdlLCAweDFhY2UwLCAweDFhY2ZjLCAweDFhZGMwLCAweDFhZGY4LCAweDFhZTA0LCAweDFhZTA4LCAweDFhZTEwLCAweDFhZTIwLCAweDFhZTNjLCAweDFhZTQwLFxuICAgICAgICAweDFhZTc4LCAweDFhZWYwLCAweDFhZjA2LCAweDFhZjBjLCAweDFhZjE4LCAweDFhZjMwLCAweDFhZjNlLCAweDFhZjYwLCAweDFhZjdjLCAweDFhZjhlLCAweDFhZjljLCAweDFhZmI4LFxuICAgICAgICAweDFhZmM0LCAweDFhZmM4LCAweDFhZmQwLCAweDFhZmRlLCAweDFiMDQyLCAweDFiMDVlLCAweDFiMDdhLCAweDFiMDgyLCAweDFiMDg0LCAweDFiMDg4LCAweDFiMDkwLCAweDFiMDllLFxuICAgICAgICAweDFiMGEwLCAweDFiMGJjLCAweDFiMGNjLCAweDFiMGYyLCAweDFiMGY0LCAweDFiMTAyLCAweDFiMTA0LCAweDFiMTA4LCAweDFiMTEwLCAweDFiMTFlLCAweDFiMTIwLCAweDFiMTNjLFxuICAgICAgICAweDFiMTQwLCAweDFiMTc4LCAweDFiMTg2LCAweDFiMTk4LCAweDFiMWNlLCAweDFiMWUyLCAweDFiMWU0LCAweDFiMWU4LCAweDFiMjA0LCAweDFiMjA4LCAweDFiMjEwLCAweDFiMjFlLFxuICAgICAgICAweDFiMjIwLCAweDFiMjNjLCAweDFiMjQwLCAweDFiMjc4LCAweDFiMmYwLCAweDFiMzBjLCAweDFiMzNlLCAweDFiMzYwLCAweDFiMzljLCAweDFiM2MyLCAweDFiM2M0LCAweDFiM2M4LFxuICAgICAgICAweDFiM2QwLCAweDFiM2U2LCAweDFiNDEwLCAweDFiNDFlLCAweDFiNDIwLCAweDFiNDNjLCAweDFiNDQwLCAweDFiNDc4LCAweDFiNGYwLCAweDFiNWUwLCAweDFiNjE4LCAweDFiNjYwLFxuICAgICAgICAweDFiNjdjLCAweDFiNmMwLCAweDFiNzM4LCAweDFiNzgyLCAweDFiNzg0LCAweDFiNzg4LCAweDFiNzkwLCAweDFiNzllLCAweDFiN2EwLCAweDFiN2NjLCAweDFiODJlLCAweDFiODRlLFxuICAgICAgICAweDFiODVjLCAweDFiODhlLCAweDFiODljLCAweDFiOGI4LCAweDFiOGMyLCAweDFiOGM0LCAweDFiOGM4LCAweDFiOGQwLCAweDFiOGU2LCAweDFiOGZhLCAweDFiOTBlLCAweDFiOTFjLFxuICAgICAgICAweDFiOTM4LCAweDFiOTcwLCAweDFiOTdlLCAweDFiOTgyLCAweDFiOTg0LCAweDFiOTg4LCAweDFiOTkwLCAweDFiOTllLCAweDFiOWEwLCAweDFiOWNjLCAweDFiOWYyLCAweDFiOWY0LFxuICAgICAgICAweDFiYTBlLCAweDFiYTFjLCAweDFiYTM4LCAweDFiYTcwLCAweDFiYTdlLCAweDFiYWUwLCAweDFiYWZjLCAweDFiYjA4LCAweDFiYjEwLCAweDFiYjIwLCAweDFiYjNjLCAweDFiYjQwLFxuICAgICAgICAweDFiYjk4LCAweDFiYmNlLCAweDFiYmUyLCAweDFiYmU0LCAweDFiYmU4LCAweDFiYzE2LCAweDFiYzI2LCAweDFiYzJjLCAweDFiYzQ2LCAweDFiYzRjLCAweDFiYzU4LCAweDFiYzcyLFxuICAgICAgICAweDFiYzc0LCAweDFiYzg2LCAweDFiYzhjLCAweDFiYzk4LCAweDFiY2IwLCAweDFiY2JlLCAweDFiY2NlLCAweDFiY2UyLCAweDFiY2U0LCAweDFiY2U4LCAweDFiZDA2LCAweDFiZDBjLFxuICAgICAgICAweDFiZDE4LCAweDFiZDMwLCAweDFiZDNlLCAweDFiZDYwLCAweDFiZDdjLCAweDFiZDljLCAweDFiZGMyLCAweDFiZGM0LCAweDFiZGM4LCAweDFiZGQwLCAweDFiZGU2LCAweDFiZGZhLFxuICAgICAgICAweDFiZTEyLCAweDFiZTE0LCAweDFiZTIyLCAweDFiZTI0LCAweDFiZTI4LCAweDFiZTQyLCAweDFiZTQ0LCAweDFiZTQ4LCAweDFiZTUwLCAweDFiZTVlLCAweDFiZTY2LCAweDFiZTgyLFxuICAgICAgICAweDFiZTg0LCAweDFiZTg4LCAweDFiZTkwLCAweDFiZTllLCAweDFiZWEwLCAweDFiZWJjLCAweDFiZWNjLCAweDFiZWY0LCAweDFiZjFhLCAweDFiZjJlLCAweDFiZjMyLCAweDFiZjM0LFxuICAgICAgICAweDFiZjRlLCAweDFiZjVjLCAweDFiZjYyLCAweDFiZjY0LCAweDFiZjY4LCAweDFjMDlhLCAweDFjMGIyLCAweDFjMGI0LCAweDFjMTFhLCAweDFjMTMyLCAweDFjMTM0LCAweDFjMTYyLFxuICAgICAgICAweDFjMTY0LCAweDFjMTY4LCAweDFjMTc2LCAweDFjMWJhLCAweDFjMjFhLCAweDFjMjMyLCAweDFjMjM0LCAweDFjMjRlLCAweDFjMjVjLCAweDFjMjYyLCAweDFjMjY0LCAweDFjMjY4LFxuICAgICAgICAweDFjMjc2LCAweDFjMjhlLCAweDFjMmMyLCAweDFjMmM0LCAweDFjMmM4LCAweDFjMmQwLCAweDFjMmRlLCAweDFjMmU2LCAweDFjMmVjLCAweDFjMmZhLCAweDFjMzE2LCAweDFjMzI2LFxuICAgICAgICAweDFjMzNhLCAweDFjMzQ2LCAweDFjMzRjLCAweDFjMzcyLCAweDFjMzc0LCAweDFjNDFhLCAweDFjNDJlLCAweDFjNDMyLCAweDFjNDM0LCAweDFjNDRlLCAweDFjNDVjLCAweDFjNDYyLFxuICAgICAgICAweDFjNDY0LCAweDFjNDY4LCAweDFjNDc2LCAweDFjNDhlLCAweDFjNDljLCAweDFjNGI4LCAweDFjNGMyLCAweDFjNGM4LCAweDFjNGQwLCAweDFjNGRlLCAweDFjNGU2LCAweDFjNGVjLFxuICAgICAgICAweDFjNGZhLCAweDFjNTFjLCAweDFjNTM4LCAweDFjNTcwLCAweDFjNTdlLCAweDFjNTgyLCAweDFjNTg0LCAweDFjNTg4LCAweDFjNTkwLCAweDFjNTllLCAweDFjNWEwLCAweDFjNWJjLFxuICAgICAgICAweDFjNWM2LCAweDFjNWNjLCAweDFjNWQ4LCAweDFjNWVlLCAweDFjNWYyLCAweDFjNWY0LCAweDFjNjE2LCAweDFjNjI2LCAweDFjNjJjLCAweDFjNjNhLCAweDFjNjQ2LCAweDFjNjRjLFxuICAgICAgICAweDFjNjU4LCAweDFjNjZlLCAweDFjNjcyLCAweDFjNjc0LCAweDFjNjg2LCAweDFjNjhjLCAweDFjNjk4LCAweDFjNmIwLCAweDFjNmJlLCAweDFjNmNlLCAweDFjNmRjLCAweDFjNmUyLFxuICAgICAgICAweDFjNmU0LCAweDFjNmU4LCAweDFjNzEyLCAweDFjNzE0LCAweDFjNzIyLCAweDFjNzI4LCAweDFjNzM2LCAweDFjNzQyLCAweDFjNzQ0LCAweDFjNzQ4LCAweDFjNzUwLCAweDFjNzVlLFxuICAgICAgICAweDFjNzY2LCAweDFjNzZjLCAweDFjNzdhLCAweDFjN2FlLCAweDFjN2Q2LCAweDFjN2VhLCAweDFjODFhLCAweDFjODJlLCAweDFjODMyLCAweDFjODM0LCAweDFjODRlLCAweDFjODVjLFxuICAgICAgICAweDFjODYyLCAweDFjODY0LCAweDFjODY4LCAweDFjODc2LCAweDFjODhlLCAweDFjODljLCAweDFjOGI4LCAweDFjOGMyLCAweDFjOGM4LCAweDFjOGQwLCAweDFjOGRlLCAweDFjOGU2LFxuICAgICAgICAweDFjOGVjLCAweDFjOGZhLCAweDFjOTBlLCAweDFjOTM4LCAweDFjOTcwLCAweDFjOTdlLCAweDFjOTgyLCAweDFjOTg0LCAweDFjOTkwLCAweDFjOTllLCAweDFjOWEwLCAweDFjOWJjLFxuICAgICAgICAweDFjOWM2LCAweDFjOWNjLCAweDFjOWQ4LCAweDFjOWVlLCAweDFjOWYyLCAweDFjOWY0LCAweDFjYTM4LCAweDFjYTcwLCAweDFjYTdlLCAweDFjYWUwLCAweDFjYWZjLCAweDFjYjAyLFxuICAgICAgICAweDFjYjA0LCAweDFjYjA4LCAweDFjYjEwLCAweDFjYjIwLCAweDFjYjNjLCAweDFjYjQwLCAweDFjYjc4LCAweDFjYjg2LCAweDFjYjhjLCAweDFjYjk4LCAweDFjYmIwLCAweDFjYmJlLFxuICAgICAgICAweDFjYmNlLCAweDFjYmRjLCAweDFjYmUyLCAweDFjYmU0LCAweDFjYmU4LCAweDFjYmY2LCAweDFjYzE2LCAweDFjYzI2LCAweDFjYzJjLCAweDFjYzNhLCAweDFjYzQ2LCAweDFjYzU4LFxuICAgICAgICAweDFjYzcyLCAweDFjYzc0LCAweDFjYzg2LCAweDFjY2IwLCAweDFjY2JlLCAweDFjY2NlLCAweDFjY2UyLCAweDFjY2U0LCAweDFjY2U4LCAweDFjZDA2LCAweDFjZDBjLCAweDFjZDE4LFxuICAgICAgICAweDFjZDMwLCAweDFjZDNlLCAweDFjZDYwLCAweDFjZDdjLCAweDFjZDljLCAweDFjZGMyLCAweDFjZGM0LCAweDFjZGM4LCAweDFjZGQwLCAweDFjZGRlLCAweDFjZGU2LCAweDFjZGZhLFxuICAgICAgICAweDFjZTIyLCAweDFjZTI4LCAweDFjZTQyLCAweDFjZTUwLCAweDFjZTVlLCAweDFjZTY2LCAweDFjZTdhLCAweDFjZTgyLCAweDFjZTg0LCAweDFjZTg4LCAweDFjZTkwLCAweDFjZTllLFxuICAgICAgICAweDFjZWEwLCAweDFjZWJjLCAweDFjZWNjLCAweDFjZWYyLCAweDFjZWY0LCAweDFjZjJlLCAweDFjZjMyLCAweDFjZjM0LCAweDFjZjRlLCAweDFjZjVjLCAweDFjZjYyLCAweDFjZjY0LFxuICAgICAgICAweDFjZjY4LCAweDFjZjk2LCAweDFjZmE2LCAweDFjZmFjLCAweDFjZmNhLCAweDFjZmQyLCAweDFjZmQ0LCAweDFkMDJlLCAweDFkMDMyLCAweDFkMDM0LCAweDFkMDRlLCAweDFkMDVjLFxuICAgICAgICAweDFkMDYyLCAweDFkMDY0LCAweDFkMDY4LCAweDFkMDc2LCAweDFkMDhlLCAweDFkMDljLCAweDFkMGI4LCAweDFkMGMyLCAweDFkMGM0LCAweDFkMGM4LCAweDFkMGQwLCAweDFkMGRlLFxuICAgICAgICAweDFkMGU2LCAweDFkMGVjLCAweDFkMGZhLCAweDFkMTFjLCAweDFkMTM4LCAweDFkMTcwLCAweDFkMTdlLCAweDFkMTgyLCAweDFkMTg0LCAweDFkMTg4LCAweDFkMTkwLCAweDFkMTllLFxuICAgICAgICAweDFkMWEwLCAweDFkMWJjLCAweDFkMWM2LCAweDFkMWNjLCAweDFkMWQ4LCAweDFkMWVlLCAweDFkMWYyLCAweDFkMWY0LCAweDFkMjFjLCAweDFkMjM4LCAweDFkMjcwLCAweDFkMjdlLFxuICAgICAgICAweDFkMmUwLCAweDFkMmZjLCAweDFkMzAyLCAweDFkMzA0LCAweDFkMzA4LCAweDFkMzEwLCAweDFkMzFlLCAweDFkMzIwLCAweDFkMzNjLCAweDFkMzQwLCAweDFkMzc4LCAweDFkMzg2LFxuICAgICAgICAweDFkMzhjLCAweDFkMzk4LCAweDFkM2IwLCAweDFkM2JlLCAweDFkM2NlLCAweDFkM2RjLCAweDFkM2UyLCAweDFkM2U0LCAweDFkM2U4LCAweDFkM2Y2LCAweDFkNDcwLCAweDFkNDdlLFxuICAgICAgICAweDFkNGUwLCAweDFkNGZjLCAweDFkNWMwLCAweDFkNWY4LCAweDFkNjA0LCAweDFkNjA4LCAweDFkNjEwLCAweDFkNjIwLCAweDFkNjQwLCAweDFkNjc4LCAweDFkNmYwLCAweDFkNzA2LFxuICAgICAgICAweDFkNzBjLCAweDFkNzE4LCAweDFkNzMwLCAweDFkNzNlLCAweDFkNzYwLCAweDFkNzdjLCAweDFkNzhlLCAweDFkNzljLCAweDFkN2I4LCAweDFkN2MyLCAweDFkN2M0LCAweDFkN2M4LFxuICAgICAgICAweDFkN2QwLCAweDFkN2RlLCAweDFkN2U2LCAweDFkN2VjLCAweDFkODI2LCAweDFkODJjLCAweDFkODNhLCAweDFkODQ2LCAweDFkODRjLCAweDFkODU4LCAweDFkODcyLCAweDFkODc0LFxuICAgICAgICAweDFkODg2LCAweDFkODhjLCAweDFkODk4LCAweDFkOGIwLCAweDFkOGJlLCAweDFkOGNlLCAweDFkOGUyLCAweDFkOGU0LCAweDFkOGU4LCAweDFkOGY2LCAweDFkOTBjLCAweDFkOTE4LFxuICAgICAgICAweDFkOTMwLCAweDFkOTNlLCAweDFkOTYwLCAweDFkOTdjLCAweDFkOTljLCAweDFkOWMyLCAweDFkOWM0LCAweDFkOWM4LCAweDFkOWQwLCAweDFkOWU2LCAweDFkOWZhLCAweDFkYTBjLFxuICAgICAgICAweDFkYTE4LCAweDFkYTMwLCAweDFkYTNlLCAweDFkYTYwLCAweDFkYTdjLCAweDFkYWMwLCAweDFkYWY4LCAweDFkYjM4LCAweDFkYjgyLCAweDFkYjg0LCAweDFkYjg4LCAweDFkYjkwLFxuICAgICAgICAweDFkYjllLCAweDFkYmEwLCAweDFkYmNjLCAweDFkYmYyLCAweDFkYmY0LCAweDFkYzIyLCAweDFkYzQyLCAweDFkYzQ0LCAweDFkYzQ4LCAweDFkYzUwLCAweDFkYzVlLCAweDFkYzY2LFxuICAgICAgICAweDFkYzdhLCAweDFkYzgyLCAweDFkYzg0LCAweDFkYzg4LCAweDFkYzkwLCAweDFkYzllLCAweDFkY2EwLCAweDFkY2JjLCAweDFkY2NjLCAweDFkY2YyLCAweDFkY2Y0LCAweDFkZDA0LFxuICAgICAgICAweDFkZDA4LCAweDFkZDEwLCAweDFkZDFlLCAweDFkZDIwLCAweDFkZDNjLCAweDFkZDQwLCAweDFkZDc4LCAweDFkZDg2LCAweDFkZDk4LCAweDFkZGNlLCAweDFkZGUyLCAweDFkZGU0LFxuICAgICAgICAweDFkZGU4LCAweDFkZTJlLCAweDFkZTMyLCAweDFkZTM0LCAweDFkZTRlLCAweDFkZTVjLCAweDFkZTYyLCAweDFkZTY0LCAweDFkZTY4LCAweDFkZThlLCAweDFkZTljLCAweDFkZWI4LFxuICAgICAgICAweDFkZWMyLCAweDFkZWM0LCAweDFkZWM4LCAweDFkZWQwLCAweDFkZWU2LCAweDFkZWZhLCAweDFkZjE2LCAweDFkZjI2LCAweDFkZjJjLCAweDFkZjQ2LCAweDFkZjRjLCAweDFkZjU4LFxuICAgICAgICAweDFkZjcyLCAweDFkZjc0LCAweDFkZjhhLCAweDFkZjkyLCAweDFkZjk0LCAweDFkZmEyLCAweDFkZmE0LCAweDFkZmE4LCAweDFlMDhhLCAweDFlMDkyLCAweDFlMDk0LCAweDFlMGEyLFxuICAgICAgICAweDFlMGE0LCAweDFlMGE4LCAweDFlMGI2LCAweDFlMGRhLCAweDFlMTBhLCAweDFlMTEyLCAweDFlMTE0LCAweDFlMTIyLCAweDFlMTI0LCAweDFlMTI4LCAweDFlMTM2LCAweDFlMTQyLFxuICAgICAgICAweDFlMTQ0LCAweDFlMTQ4LCAweDFlMTUwLCAweDFlMTY2LCAweDFlMTZjLCAweDFlMTdhLCAweDFlMTlhLCAweDFlMWIyLCAweDFlMWI0LCAweDFlMjBhLCAweDFlMjEyLCAweDFlMjE0LFxuICAgICAgICAweDFlMjIyLCAweDFlMjI0LCAweDFlMjI4LCAweDFlMjM2LCAweDFlMjQyLCAweDFlMjQ4LCAweDFlMjUwLCAweDFlMjVlLCAweDFlMjY2LCAweDFlMjZjLCAweDFlMjdhLCAweDFlMjgyLFxuICAgICAgICAweDFlMjg0LCAweDFlMjg4LCAweDFlMjkwLCAweDFlMmEwLCAweDFlMmJjLCAweDFlMmM2LCAweDFlMmNjLCAweDFlMmQ4LCAweDFlMmVlLCAweDFlMmYyLCAweDFlMmY0LCAweDFlMzFhLFxuICAgICAgICAweDFlMzMyLCAweDFlMzM0LCAweDFlMzVjLCAweDFlMzYyLCAweDFlMzY0LCAweDFlMzY4LCAweDFlM2JhLCAweDFlNDBhLCAweDFlNDEyLCAweDFlNDE0LCAweDFlNDIyLCAweDFlNDI4LFxuICAgICAgICAweDFlNDM2LCAweDFlNDQyLCAweDFlNDQ4LCAweDFlNDUwLCAweDFlNDVlLCAweDFlNDY2LCAweDFlNDZjLCAweDFlNDdhLCAweDFlNDgyLCAweDFlNDg0LCAweDFlNDkwLCAweDFlNDllLFxuICAgICAgICAweDFlNGEwLCAweDFlNGJjLCAweDFlNGM2LCAweDFlNGNjLCAweDFlNGQ4LCAweDFlNGVlLCAweDFlNGYyLCAweDFlNGY0LCAweDFlNTAyLCAweDFlNTA0LCAweDFlNTA4LCAweDFlNTEwLFxuICAgICAgICAweDFlNTFlLCAweDFlNTIwLCAweDFlNTNjLCAweDFlNTQwLCAweDFlNTc4LCAweDFlNTg2LCAweDFlNThjLCAweDFlNTk4LCAweDFlNWIwLCAweDFlNWJlLCAweDFlNWNlLCAweDFlNWRjLFxuICAgICAgICAweDFlNWUyLCAweDFlNWU0LCAweDFlNWU4LCAweDFlNWY2LCAweDFlNjFhLCAweDFlNjJlLCAweDFlNjMyLCAweDFlNjM0LCAweDFlNjRlLCAweDFlNjVjLCAweDFlNjYyLCAweDFlNjY4LFxuICAgICAgICAweDFlNjhlLCAweDFlNjljLCAweDFlNmI4LCAweDFlNmMyLCAweDFlNmM0LCAweDFlNmM4LCAweDFlNmQwLCAweDFlNmU2LCAweDFlNmZhLCAweDFlNzE2LCAweDFlNzI2LCAweDFlNzJjLFxuICAgICAgICAweDFlNzNhLCAweDFlNzQ2LCAweDFlNzRjLCAweDFlNzU4LCAweDFlNzcyLCAweDFlNzc0LCAweDFlNzkyLCAweDFlNzk0LCAweDFlN2EyLCAweDFlN2E0LCAweDFlN2E4LCAweDFlN2I2LFxuICAgICAgICAweDFlODEyLCAweDFlODE0LCAweDFlODIyLCAweDFlODI0LCAweDFlODI4LCAweDFlODM2LCAweDFlODQyLCAweDFlODQ0LCAweDFlODQ4LCAweDFlODUwLCAweDFlODVlLCAweDFlODY2LFxuICAgICAgICAweDFlODZjLCAweDFlODdhLCAweDFlODgyLCAweDFlODg0LCAweDFlODg4LCAweDFlODkwLCAweDFlODllLCAweDFlOGEwLCAweDFlOGJjLCAweDFlOGM2LCAweDFlOGNjLCAweDFlOGQ4LFxuICAgICAgICAweDFlOGVlLCAweDFlOGYyLCAweDFlOGY0LCAweDFlOTAyLCAweDFlOTA0LCAweDFlOTA4LCAweDFlOTEwLCAweDFlOTIwLCAweDFlOTNjLCAweDFlOTQwLCAweDFlOTc4LCAweDFlOTg2LFxuICAgICAgICAweDFlOThjLCAweDFlOTk4LCAweDFlOWIwLCAweDFlOWJlLCAweDFlOWNlLCAweDFlOWRjLCAweDFlOWUyLCAweDFlOWU0LCAweDFlOWU4LCAweDFlOWY2LCAweDFlYTA0LCAweDFlYTA4LFxuICAgICAgICAweDFlYTEwLCAweDFlYTIwLCAweDFlYTQwLCAweDFlYTc4LCAweDFlYWYwLCAweDFlYjA2LCAweDFlYjBjLCAweDFlYjE4LCAweDFlYjMwLCAweDFlYjNlLCAweDFlYjYwLCAweDFlYjdjLFxuICAgICAgICAweDFlYjhlLCAweDFlYjljLCAweDFlYmI4LCAweDFlYmMyLCAweDFlYmM0LCAweDFlYmM4LCAweDFlYmQwLCAweDFlYmRlLCAweDFlYmU2LCAweDFlYmVjLCAweDFlYzFhLCAweDFlYzJlLFxuICAgICAgICAweDFlYzMyLCAweDFlYzM0LCAweDFlYzRlLCAweDFlYzVjLCAweDFlYzYyLCAweDFlYzY0LCAweDFlYzY4LCAweDFlYzhlLCAweDFlYzljLCAweDFlY2I4LCAweDFlY2MyLCAweDFlY2M0LFxuICAgICAgICAweDFlY2M4LCAweDFlY2QwLCAweDFlY2U2LCAweDFlY2ZhLCAweDFlZDBlLCAweDFlZDFjLCAweDFlZDM4LCAweDFlZDcwLCAweDFlZDdlLCAweDFlZDgyLCAweDFlZDg0LCAweDFlZDg4LFxuICAgICAgICAweDFlZDkwLCAweDFlZDllLCAweDFlZGEwLCAweDFlZGNjLCAweDFlZGYyLCAweDFlZGY0LCAweDFlZTE2LCAweDFlZTI2LCAweDFlZTJjLCAweDFlZTNhLCAweDFlZTQ2LCAweDFlZTRjLFxuICAgICAgICAweDFlZTU4LCAweDFlZTZlLCAweDFlZTcyLCAweDFlZTc0LCAweDFlZTg2LCAweDFlZThjLCAweDFlZTk4LCAweDFlZWIwLCAweDFlZWJlLCAweDFlZWNlLCAweDFlZWRjLCAweDFlZWUyLFxuICAgICAgICAweDFlZWU0LCAweDFlZWU4LCAweDFlZjEyLCAweDFlZjIyLCAweDFlZjI0LCAweDFlZjI4LCAweDFlZjM2LCAweDFlZjQyLCAweDFlZjQ0LCAweDFlZjQ4LCAweDFlZjUwLCAweDFlZjVlLFxuICAgICAgICAweDFlZjY2LCAweDFlZjZjLCAweDFlZjdhLCAweDFlZmFlLCAweDFlZmIyLCAweDFlZmI0LCAweDFlZmQ2LCAweDFmMDk2LCAweDFmMGE2LCAweDFmMGFjLCAweDFmMGJhLCAweDFmMGNhLFxuICAgICAgICAweDFmMGQyLCAweDFmMGQ0LCAweDFmMTE2LCAweDFmMTI2LCAweDFmMTJjLCAweDFmMTNhLCAweDFmMTQ2LCAweDFmMTRjLCAweDFmMTU4LCAweDFmMTZlLCAweDFmMTcyLCAweDFmMTc0LFxuICAgICAgICAweDFmMThhLCAweDFmMTkyLCAweDFmMTk0LCAweDFmMWEyLCAweDFmMWE0LCAweDFmMWE4LCAweDFmMWRhLCAweDFmMjE2LCAweDFmMjI2LCAweDFmMjJjLCAweDFmMjNhLCAweDFmMjQ2LFxuICAgICAgICAweDFmMjU4LCAweDFmMjZlLCAweDFmMjcyLCAweDFmMjc0LCAweDFmMjg2LCAweDFmMjhjLCAweDFmMjk4LCAweDFmMmIwLCAweDFmMmJlLCAweDFmMmNlLCAweDFmMmRjLCAweDFmMmUyLFxuICAgICAgICAweDFmMmU0LCAweDFmMmU4LCAweDFmMmY2LCAweDFmMzBhLCAweDFmMzEyLCAweDFmMzE0LCAweDFmMzIyLCAweDFmMzI4LCAweDFmMzQyLCAweDFmMzQ0LCAweDFmMzQ4LCAweDFmMzUwLFxuICAgICAgICAweDFmMzVlLCAweDFmMzY2LCAweDFmMzdhLCAweDFmMzlhLCAweDFmM2FlLCAweDFmM2IyLCAweDFmM2I0LCAweDFmNDE2LCAweDFmNDI2LCAweDFmNDJjLCAweDFmNDNhLCAweDFmNDQ2LFxuICAgICAgICAweDFmNDRjLCAweDFmNDU4LCAweDFmNDZlLCAweDFmNDcyLCAweDFmNDc0LCAweDFmNDg2LCAweDFmNDhjLCAweDFmNDk4LCAweDFmNGIwLCAweDFmNGJlLCAweDFmNGNlLCAweDFmNGRjLFxuICAgICAgICAweDFmNGUyLCAweDFmNGU0LCAweDFmNGU4LCAweDFmNGY2LCAweDFmNTA2LCAweDFmNTBjLCAweDFmNTE4LCAweDFmNTMwLCAweDFmNTNlLCAweDFmNTYwLCAweDFmNTdjLCAweDFmNThlLFxuICAgICAgICAweDFmNTljLCAweDFmNWI4LCAweDFmNWMyLCAweDFmNWM0LCAweDFmNWM4LCAweDFmNWQwLCAweDFmNWRlLCAweDFmNWU2LCAweDFmNWVjLCAweDFmNWZhLCAweDFmNjBhLCAweDFmNjEyLFxuICAgICAgICAweDFmNjE0LCAweDFmNjIyLCAweDFmNjI0LCAweDFmNjI4LCAweDFmNjM2LCAweDFmNjQyLCAweDFmNjQ0LCAweDFmNjQ4LCAweDFmNjUwLCAweDFmNjVlLCAweDFmNjY2LCAweDFmNjdhLFxuICAgICAgICAweDFmNjgyLCAweDFmNjg0LCAweDFmNjg4LCAweDFmNjkwLCAweDFmNjllLCAweDFmNmEwLCAweDFmNmJjLCAweDFmNmNjLCAweDFmNmYyLCAweDFmNmY0LCAweDFmNzFhLCAweDFmNzJlLFxuICAgICAgICAweDFmNzMyLCAweDFmNzM0LCAweDFmNzRlLCAweDFmNzVjLCAweDFmNzYyLCAweDFmNzY0LCAweDFmNzY4LCAweDFmNzc2LCAweDFmNzk2LCAweDFmN2E2LCAweDFmN2FjLCAweDFmN2JhLFxuICAgICAgICAweDFmN2QyLCAweDFmN2Q0LCAweDFmODlhLCAweDFmOGFlLCAweDFmOGIyLCAweDFmOGI0LCAweDFmOGQ2LCAweDFmOGVhLCAweDFmOTFhLCAweDFmOTJlLCAweDFmOTMyLCAweDFmOTM0LFxuICAgICAgICAweDFmOTRlLCAweDFmOTVjLCAweDFmOTYyLCAweDFmOTY0LCAweDFmOTY4LCAweDFmOTc2LCAweDFmOTk2LCAweDFmOWE2LCAweDFmOWFjLCAweDFmOWJhLCAweDFmOWNhLCAweDFmOWQyLFxuICAgICAgICAweDFmOWQ0LCAweDFmYTFhLCAweDFmYTJlLCAweDFmYTMyLCAweDFmYTM0LCAweDFmYTRlLCAweDFmYTVjLCAweDFmYTYyLCAweDFmYTY0LCAweDFmYTY4LCAweDFmYTc2LCAweDFmYThlLFxuICAgICAgICAweDFmYTljLCAweDFmYWI4LCAweDFmYWMyLCAweDFmYWM0LCAweDFmYWM4LCAweDFmYWQwLCAweDFmYWRlLCAweDFmYWU2LCAweDFmYWVjLCAweDFmYjE2LCAweDFmYjI2LCAweDFmYjJjLFxuICAgICAgICAweDFmYjNhLCAweDFmYjQ2LCAweDFmYjRjLCAweDFmYjU4LCAweDFmYjZlLCAweDFmYjcyLCAweDFmYjc0LCAweDFmYjhhLCAweDFmYjkyLCAweDFmYjk0LCAweDFmYmEyLCAweDFmYmE0LFxuICAgICAgICAweDFmYmE4LCAweDFmYmI2LCAweDFmYmRhXG4gICAgXSk7XG4gICAgLyoqXG4gICAgICogVGhpcyB0YWJsZSBjb250YWlucyB0byBjb2Rld29yZHMgZm9yIGFsbCBzeW1ib2xzLlxuICAgICAqL1xuICAgIFBERjQxN0NvbW1vbi5DT0RFV09SRF9UQUJMRSA9IEludDMyQXJyYXkuZnJvbShbXG4gICAgICAgIDI2MjcsIDE4MTksIDI2MjIsIDI2MjEsIDE4MTMsIDE4MTIsIDI3MjksIDI3MjQsIDI3MjMsIDI3NzksIDI3NzQsIDI3NzMsIDkwMiwgODk2LCA5MDgsIDg2OCwgODY1LCA4NjEsIDg1OSwgMjUxMSxcbiAgICAgICAgODczLCA4NzEsIDE3ODAsIDgzNSwgMjQ5MywgODI1LCAyNDkxLCA4NDIsIDgzNywgODQ0LCAxNzY0LCAxNzYyLCA4MTEsIDgxMCwgODA5LCAyNDgzLCA4MDcsIDI0ODIsIDgwNiwgMjQ4MCwgODE1LFxuICAgICAgICA4MTQsIDgxMywgODEyLCAyNDg0LCA4MTcsIDgxNiwgMTc0NSwgMTc0NCwgMTc0MiwgMTc0NiwgMjY1NSwgMjYzNywgMjYzNSwgMjYyNiwgMjYyNSwgMjYyMywgMjYyOCwgMTgyMCwgMjc1MixcbiAgICAgICAgMjczOSwgMjczNywgMjcyOCwgMjcyNywgMjcyNSwgMjczMCwgMjc4NSwgMjc4MywgMjc3OCwgMjc3NywgMjc3NSwgMjc4MCwgNzg3LCA3ODEsIDc0NywgNzM5LCA3MzYsIDI0MTMsIDc1NCwgNzUyLFxuICAgICAgICAxNzE5LCA2OTIsIDY4OSwgNjgxLCAyMzcxLCA2NzgsIDIzNjksIDcwMCwgNjk3LCA2OTQsIDcwMywgMTY4OCwgMTY4NiwgNjQyLCA2MzgsIDIzNDMsIDYzMSwgMjM0MSwgNjI3LCAyMzM4LCA2NTEsXG4gICAgICAgIDY0NiwgNjQzLCAyMzQ1LCA2NTQsIDY1MiwgMTY1MiwgMTY1MCwgMTY0NywgMTY1NCwgNjAxLCA1OTksIDIzMjIsIDU5NiwgMjMyMSwgNTk0LCAyMzE5LCAyMzE3LCA2MTEsIDYxMCwgNjA4LCA2MDYsXG4gICAgICAgIDIzMjQsIDYwMywgMjMyMywgNjE1LCA2MTQsIDYxMiwgMTYxNywgMTYxNiwgMTYxNCwgMTYxMiwgNjE2LCAxNjE5LCAxNjE4LCAyNTc1LCAyNTM4LCAyNTM2LCA5MDUsIDkwMSwgODk4LCA5MDksXG4gICAgICAgIDI1MDksIDI1MDcsIDI1MDQsIDg3MCwgODY3LCA4NjQsIDg2MCwgMjUxMiwgODc1LCA4NzIsIDE3ODEsIDI0OTAsIDI0ODksIDI0ODcsIDI0ODUsIDE3NDgsIDgzNiwgODM0LCA4MzIsIDgzMCxcbiAgICAgICAgMjQ5NCwgODI3LCAyNDkyLCA4NDMsIDg0MSwgODM5LCA4NDUsIDE3NjUsIDE3NjMsIDI3MDEsIDI2NzYsIDI2NzQsIDI2NTMsIDI2NDgsIDI2NTYsIDI2MzQsIDI2MzMsIDI2MzEsIDI2MjksXG4gICAgICAgIDE4MjEsIDI2MzgsIDI2MzYsIDI3NzAsIDI3NjMsIDI3NjEsIDI3NTAsIDI3NDUsIDI3NTMsIDI3MzYsIDI3MzUsIDI3MzMsIDI3MzEsIDE4NDgsIDI3NDAsIDI3MzgsIDI3ODYsIDI3ODQsIDU5MSxcbiAgICAgICAgNTg4LCA1NzYsIDU2OSwgNTY2LCAyMjk2LCAxNTkwLCA1MzcsIDUzNCwgNTI2LCAyMjc2LCA1MjIsIDIyNzQsIDU0NSwgNTQyLCA1MzksIDU0OCwgMTU3MiwgMTU3MCwgNDgxLCAyMjQ1LCA0NjYsXG4gICAgICAgIDIyNDIsIDQ2MiwgMjIzOSwgNDkyLCA0ODUsIDQ4MiwgMjI0OSwgNDk2LCA0OTQsIDE1MzQsIDE1MzEsIDE1MjgsIDE1MzgsIDQxMywgMjE5NiwgNDA2LCAyMTkxLCAyMTg4LCA0MjUsIDQxOSxcbiAgICAgICAgMjIwMiwgNDE1LCAyMTk5LCA0MzIsIDQzMCwgNDI3LCAxNDcyLCAxNDY3LCAxNDY0LCA0MzMsIDE0NzYsIDE0NzQsIDM2OCwgMzY3LCAyMTYwLCAzNjUsIDIxNTksIDM2MiwgMjE1NywgMjE1NSxcbiAgICAgICAgMjE1MiwgMzc4LCAzNzcsIDM3NSwgMjE2NiwgMzcyLCAyMTY1LCAzNjksIDIxNjIsIDM4MywgMzgxLCAzNzksIDIxNjgsIDE0MTksIDE0MTgsIDE0MTYsIDE0MTQsIDM4NSwgMTQxMSwgMzg0LFxuICAgICAgICAxNDIzLCAxNDIyLCAxNDIwLCAxNDI0LCAyNDYxLCA4MDIsIDI0NDEsIDI0MzksIDc5MCwgNzg2LCA3ODMsIDc5NCwgMjQwOSwgMjQwNiwgMjQwMywgNzUwLCA3NDIsIDczOCwgMjQxNCwgNzU2LFxuICAgICAgICA3NTMsIDE3MjAsIDIzNjcsIDIzNjUsIDIzNjIsIDIzNTksIDE2NjMsIDY5MywgNjkxLCA2ODQsIDIzNzMsIDY4MCwgMjM3MCwgNzAyLCA2OTksIDY5NiwgNzA0LCAxNjkwLCAxNjg3LCAyMzM3LFxuICAgICAgICAyMzM2LCAyMzM0LCAyMzMyLCAxNjI0LCAyMzI5LCAxNjIyLCA2NDAsIDYzNywgMjM0NCwgNjM0LCAyMzQyLCA2MzAsIDIzNDAsIDY1MCwgNjQ4LCA2NDUsIDIzNDYsIDY1NSwgNjUzLCAxNjUzLFxuICAgICAgICAxNjUxLCAxNjQ5LCAxNjU1LCAyNjEyLCAyNTk3LCAyNTk1LCAyNTcxLCAyNTY4LCAyNTY1LCAyNTc2LCAyNTM0LCAyNTI5LCAyNTI2LCAxNzg3LCAyNTQwLCAyNTM3LCA5MDcsIDkwNCwgOTAwLFxuICAgICAgICA5MTAsIDI1MDMsIDI1MDIsIDI1MDAsIDI0OTgsIDE3NjgsIDI0OTUsIDE3NjcsIDI1MTAsIDI1MDgsIDI1MDYsIDg2OSwgODY2LCA4NjMsIDI1MTMsIDg3NiwgODc0LCAxNzgyLCAyNzIwLCAyNzEzLFxuICAgICAgICAyNzExLCAyNjk3LCAyNjk0LCAyNjkxLCAyNzAyLCAyNjcyLCAyNjcwLCAyNjY0LCAxODI4LCAyNjc4LCAyNjc1LCAyNjQ3LCAyNjQ2LCAyNjQ0LCAyNjQyLCAxODIzLCAyNjM5LCAxODIyLCAyNjU0LFxuICAgICAgICAyNjUyLCAyNjUwLCAyNjU3LCAyNzcxLCAxODU1LCAyNzY1LCAyNzYyLCAxODUwLCAxODQ5LCAyNzUxLCAyNzQ5LCAyNzQ3LCAyNzU0LCAzNTMsIDIxNDgsIDM0NCwgMzQyLCAzMzYsIDIxNDIsXG4gICAgICAgIDMzMiwgMjE0MCwgMzQ1LCAxMzc1LCAxMzczLCAzMDYsIDIxMzAsIDI5OSwgMjEyOCwgMjk1LCAyMTI1LCAzMTksIDMxNCwgMzExLCAyMTMyLCAxMzU0LCAxMzUyLCAxMzQ5LCAxMzU2LCAyNjIsXG4gICAgICAgIDI1NywgMjEwMSwgMjUzLCAyMDk2LCAyMDkzLCAyNzQsIDI3MywgMjY3LCAyMTA3LCAyNjMsIDIxMDQsIDI4MCwgMjc4LCAyNzUsIDEzMTYsIDEzMTEsIDEzMDgsIDEzMjAsIDEzMTgsIDIwNTIsXG4gICAgICAgIDIwMiwgMjA1MCwgMjA0NCwgMjA0MCwgMjE5LCAyMDYzLCAyMTIsIDIwNjAsIDIwOCwgMjA1NSwgMjI0LCAyMjEsIDIwNjYsIDEyNjAsIDEyNTgsIDEyNTIsIDIzMSwgMTI0OCwgMjI5LCAxMjY2LFxuICAgICAgICAxMjY0LCAxMjYxLCAxMjY4LCAxNTUsIDE5OTgsIDE1MywgMTk5NiwgMTk5NCwgMTk5MSwgMTk4OCwgMTY1LCAxNjQsIDIwMDcsIDE2MiwgMjAwNiwgMTU5LCAyMDAzLCAyMDAwLCAxNzIsIDE3MSxcbiAgICAgICAgMTY5LCAyMDEyLCAxNjYsIDIwMTAsIDExODYsIDExODQsIDExODIsIDExNzksIDE3NSwgMTE3NiwgMTczLCAxMTkyLCAxMTkxLCAxMTg5LCAxMTg3LCAxNzYsIDExOTQsIDExOTMsIDIzMTMsXG4gICAgICAgIDIzMDcsIDIzMDUsIDU5MiwgNTg5LCAyMjk0LCAyMjkyLCAyMjg5LCA1NzgsIDU3MiwgNTY4LCAyMjk3LCA1ODAsIDE1OTEsIDIyNzIsIDIyNjcsIDIyNjQsIDE1NDcsIDUzOCwgNTM2LCA1MjksXG4gICAgICAgIDIyNzgsIDUyNSwgMjI3NSwgNTQ3LCA1NDQsIDU0MSwgMTU3NCwgMTU3MSwgMjIzNywgMjIzNSwgMjIyOSwgMTQ5MywgMjIyNSwgMTQ4OSwgNDc4LCAyMjQ3LCA0NzAsIDIyNDQsIDQ2NSwgMjI0MSxcbiAgICAgICAgNDkzLCA0ODgsIDQ4NCwgMjI1MCwgNDk4LCA0OTUsIDE1MzYsIDE1MzMsIDE1MzAsIDE1MzksIDIxODcsIDIxODYsIDIxODQsIDIxODIsIDE0MzIsIDIxNzksIDE0MzAsIDIxNzYsIDE0MjcsIDQxNCxcbiAgICAgICAgNDEyLCAyMTk3LCA0MDksIDIxOTUsIDQwNSwgMjE5MywgMjE5MCwgNDI2LCA0MjQsIDQyMSwgMjIwMywgNDE4LCAyMjAxLCA0MzEsIDQyOSwgMTQ3MywgMTQ3MSwgMTQ2OSwgMTQ2NiwgNDM0LFxuICAgICAgICAxNDc3LCAxNDc1LCAyNDc4LCAyNDcyLCAyNDcwLCAyNDU5LCAyNDU3LCAyNDU0LCAyNDYyLCA4MDMsIDI0MzcsIDI0MzIsIDI0MjksIDE3MjYsIDI0NDMsIDI0NDAsIDc5MiwgNzg5LCA3ODUsXG4gICAgICAgIDI0MDEsIDIzOTksIDIzOTMsIDE3MDIsIDIzODksIDE2OTksIDI0MTEsIDI0MDgsIDI0MDUsIDc0NSwgNzQxLCAyNDE1LCA3NTgsIDc1NSwgMTcyMSwgMjM1OCwgMjM1NywgMjM1NSwgMjM1MyxcbiAgICAgICAgMTY2MSwgMjM1MCwgMTY2MCwgMjM0NywgMTY1NywgMjM2OCwgMjM2NiwgMjM2NCwgMjM2MSwgMTY2NiwgNjkwLCA2ODcsIDIzNzQsIDY4MywgMjM3MiwgNzAxLCA2OTgsIDcwNSwgMTY5MSwgMTY4OSxcbiAgICAgICAgMjYxOSwgMjYxNywgMjYxMCwgMjYwOCwgMjYwNSwgMjYxMywgMjU5MywgMjU4OCwgMjU4NSwgMTgwMywgMjU5OSwgMjU5NiwgMjU2MywgMjU2MSwgMjU1NSwgMTc5NywgMjU1MSwgMTc5NSwgMjU3MyxcbiAgICAgICAgMjU3MCwgMjU2NywgMjU3NywgMjUyNSwgMjUyNCwgMjUyMiwgMjUyMCwgMTc4NiwgMjUxNywgMTc4NSwgMjUxNCwgMTc4MywgMjUzNSwgMjUzMywgMjUzMSwgMjUyOCwgMTc4OCwgMjU0MSwgMjUzOSxcbiAgICAgICAgOTA2LCA5MDMsIDkxMSwgMjcyMSwgMTg0NCwgMjcxNSwgMjcxMiwgMTgzOCwgMTgzNiwgMjY5OSwgMjY5NiwgMjY5MywgMjcwMywgMTgyNywgMTgyNiwgMTgyNCwgMjY3MywgMjY3MSwgMjY2OSxcbiAgICAgICAgMjY2NiwgMTgyOSwgMjY3OSwgMjY3NywgMTg1OCwgMTg1NywgMjc3MiwgMTg1NCwgMTg1MywgMTg1MSwgMTg1NiwgMjc2NiwgMjc2NCwgMTQzLCAxOTg3LCAxMzksIDE5ODYsIDEzNSwgMTMzLFxuICAgICAgICAxMzEsIDE5ODQsIDEyOCwgMTk4MywgMTI1LCAxOTgxLCAxMzgsIDEzNywgMTM2LCAxOTg1LCAxMTMzLCAxMTMyLCAxMTMwLCAxMTIsIDExMCwgMTk3NCwgMTA3LCAxOTczLCAxMDQsIDE5NzEsXG4gICAgICAgIDE5NjksIDEyMiwgMTIxLCAxMTksIDExNywgMTk3NywgMTE0LCAxOTc2LCAxMjQsIDExMTUsIDExMTQsIDExMTIsIDExMTAsIDExMTcsIDExMTYsIDg0LCA4MywgMTk1MywgODEsIDE5NTIsIDc4LFxuICAgICAgICAxOTUwLCAxOTQ4LCAxOTQ1LCA5NCwgOTMsIDkxLCAxOTU5LCA4OCwgMTk1OCwgODUsIDE5NTUsIDk5LCA5NywgOTUsIDE5NjEsIDEwODYsIDEwODUsIDEwODMsIDEwODEsIDEwNzgsIDEwMCxcbiAgICAgICAgMTA5MCwgMTA4OSwgMTA4NywgMTA5MSwgNDksIDQ3LCAxOTE3LCA0NCwgMTkxNSwgMTkxMywgMTkxMCwgMTkwNywgNTksIDE5MjYsIDU2LCAxOTI1LCA1MywgMTkyMiwgMTkxOSwgNjYsIDY0LFxuICAgICAgICAxOTMxLCA2MSwgMTkyOSwgMTA0MiwgMTA0MCwgMTAzOCwgNzEsIDEwMzUsIDcwLCAxMDMyLCA2OCwgMTA0OCwgMTA0NywgMTA0NSwgMTA0MywgMTA1MCwgMTA0OSwgMTIsIDEwLCAxODY5LCAxODY3LFxuICAgICAgICAxODY0LCAxODYxLCAyMSwgMTg4MCwgMTksIDE4NzcsIDE4NzQsIDE4NzEsIDI4LCAxODg4LCAyNSwgMTg4NiwgMjIsIDE4ODMsIDk4MiwgOTgwLCA5NzcsIDk3NCwgMzIsIDMwLCA5OTEsIDk4OSxcbiAgICAgICAgOTg3LCA5ODQsIDM0LCA5OTUsIDk5NCwgOTkyLCAyMTUxLCAyMTUwLCAyMTQ3LCAyMTQ2LCAyMTQ0LCAzNTYsIDM1NSwgMzU0LCAyMTQ5LCAyMTM5LCAyMTM4LCAyMTM2LCAyMTM0LCAxMzU5LFxuICAgICAgICAzNDMsIDM0MSwgMzM4LCAyMTQzLCAzMzUsIDIxNDEsIDM0OCwgMzQ3LCAzNDYsIDEzNzYsIDEzNzQsIDIxMjQsIDIxMjMsIDIxMjEsIDIxMTksIDEzMjYsIDIxMTYsIDEzMjQsIDMxMCwgMzA4LFxuICAgICAgICAzMDUsIDIxMzEsIDMwMiwgMjEyOSwgMjk4LCAyMTI3LCAzMjAsIDMxOCwgMzE2LCAzMTMsIDIxMzMsIDMyMiwgMzIxLCAxMzU1LCAxMzUzLCAxMzUxLCAxMzU3LCAyMDkyLCAyMDkxLCAyMDg5LFxuICAgICAgICAyMDg3LCAxMjc2LCAyMDg0LCAxMjc0LCAyMDgxLCAxMjcxLCAyNTksIDIxMDIsIDI1NiwgMjEwMCwgMjUyLCAyMDk4LCAyMDk1LCAyNzIsIDI2OSwgMjEwOCwgMjY2LCAyMTA2LCAyODEsIDI3OSxcbiAgICAgICAgMjc3LCAxMzE3LCAxMzE1LCAxMzEzLCAxMzEwLCAyODIsIDEzMjEsIDEzMTksIDIwMzksIDIwMzcsIDIwMzUsIDIwMzIsIDEyMDMsIDIwMjksIDEyMDAsIDExOTcsIDIwNywgMjA1MywgMjA1LFxuICAgICAgICAyMDUxLCAyMDEsIDIwNDksIDIwNDYsIDIwNDMsIDIyMCwgMjE4LCAyMDY0LCAyMTUsIDIwNjIsIDIxMSwgMjA1OSwgMjI4LCAyMjYsIDIyMywgMjA2OSwgMTI1OSwgMTI1NywgMTI1NCwgMjMyLFxuICAgICAgICAxMjUxLCAyMzAsIDEyNjcsIDEyNjUsIDEyNjMsIDIzMTYsIDIzMTUsIDIzMTIsIDIzMTEsIDIzMDksIDIzMTQsIDIzMDQsIDIzMDMsIDIzMDEsIDIyOTksIDE1OTMsIDIzMDgsIDIzMDYsIDU5MCxcbiAgICAgICAgMjI4OCwgMjI4NywgMjI4NSwgMjI4MywgMTU3OCwgMjI4MCwgMTU3NywgMjI5NSwgMjI5MywgMjI5MSwgNTc5LCA1NzcsIDU3NCwgNTcxLCAyMjk4LCA1ODIsIDU4MSwgMTU5MiwgMjI2MywgMjI2MixcbiAgICAgICAgMjI2MCwgMjI1OCwgMTU0NSwgMjI1NSwgMTU0NCwgMjI1MiwgMTU0MSwgMjI3MywgMjI3MSwgMjI2OSwgMjI2NiwgMTU1MCwgNTM1LCA1MzIsIDIyNzksIDUyOCwgMjI3NywgNTQ2LCA1NDMsIDU0OSxcbiAgICAgICAgMTU3NSwgMTU3MywgMjIyNCwgMjIyMiwgMjIyMCwgMTQ4NiwgMjIxNywgMTQ4NSwgMjIxNCwgMTQ4MiwgMTQ3OSwgMjIzOCwgMjIzNiwgMjIzNCwgMjIzMSwgMTQ5NiwgMjIyOCwgMTQ5MiwgNDgwLFxuICAgICAgICA0NzcsIDIyNDgsIDQ3MywgMjI0NiwgNDY5LCAyMjQzLCA0OTAsIDQ4NywgMjI1MSwgNDk3LCAxNTM3LCAxNTM1LCAxNTMyLCAyNDc3LCAyNDc2LCAyNDc0LCAyNDc5LCAyNDY5LCAyNDY4LCAyNDY2LFxuICAgICAgICAyNDY0LCAxNzMwLCAyNDczLCAyNDcxLCAyNDUzLCAyNDUyLCAyNDUwLCAyNDQ4LCAxNzI5LCAyNDQ1LCAxNzI4LCAyNDYwLCAyNDU4LCAyNDU2LCAyNDYzLCA4MDUsIDgwNCwgMjQyOCwgMjQyNyxcbiAgICAgICAgMjQyNSwgMjQyMywgMTcyNSwgMjQyMCwgMTcyNCwgMjQxNywgMTcyMiwgMjQzOCwgMjQzNiwgMjQzNCwgMjQzMSwgMTcyNywgMjQ0NCwgMjQ0MiwgNzkzLCA3OTEsIDc4OCwgNzk1LCAyMzg4LFxuICAgICAgICAyMzg2LCAyMzg0LCAxNjk3LCAyMzgxLCAxNjk2LCAyMzc4LCAxNjk0LCAxNjkyLCAyNDAyLCAyNDAwLCAyMzk4LCAyMzk1LCAxNzAzLCAyMzkyLCAxNzAxLCAyNDEyLCAyNDEwLCAyNDA3LCA3NTEsXG4gICAgICAgIDc0OCwgNzQ0LCAyNDE2LCA3NTksIDc1NywgMTgwNywgMjYyMCwgMjYxOCwgMTgwNiwgMTgwNSwgMjYxMSwgMjYwOSwgMjYwNywgMjYxNCwgMTgwMiwgMTgwMSwgMTc5OSwgMjU5NCwgMjU5MixcbiAgICAgICAgMjU5MCwgMjU4NywgMTgwNCwgMjYwMCwgMjU5OCwgMTc5NCwgMTc5MywgMTc5MSwgMTc4OSwgMjU2NCwgMjU2MiwgMjU2MCwgMjU1NywgMTc5OCwgMjU1NCwgMTc5NiwgMjU3NCwgMjU3MiwgMjU2OSxcbiAgICAgICAgMjU3OCwgMTg0NywgMTg0NiwgMjcyMiwgMTg0MywgMTg0MiwgMTg0MCwgMTg0NSwgMjcxNiwgMjcxNCwgMTgzNSwgMTgzNCwgMTgzMiwgMTgzMCwgMTgzOSwgMTgzNywgMjcwMCwgMjY5OCwgMjY5NSxcbiAgICAgICAgMjcwNCwgMTgxNywgMTgxMSwgMTgxMCwgODk3LCA4NjIsIDE3NzcsIDgyOSwgODI2LCA4MzgsIDE3NjAsIDE3NTgsIDgwOCwgMjQ4MSwgMTc0MSwgMTc0MCwgMTczOCwgMTc0MywgMjYyNCwgMTgxOCxcbiAgICAgICAgMjcyNiwgMjc3NiwgNzgyLCA3NDAsIDczNywgMTcxNSwgNjg2LCA2NzksIDY5NSwgMTY4MiwgMTY4MCwgNjM5LCA2MjgsIDIzMzksIDY0NywgNjQ0LCAxNjQ1LCAxNjQzLCAxNjQwLCAxNjQ4LFxuICAgICAgICA2MDIsIDYwMCwgNTk3LCA1OTUsIDIzMjAsIDU5MywgMjMxOCwgNjA5LCA2MDcsIDYwNCwgMTYxMSwgMTYxMCwgMTYwOCwgMTYwNiwgNjEzLCAxNjE1LCAxNjEzLCAyMzI4LCA5MjYsIDkyNCwgODkyLFxuICAgICAgICA4ODYsIDg5OSwgODU3LCA4NTAsIDI1MDUsIDE3NzgsIDgyNCwgODIzLCA4MjEsIDgxOSwgMjQ4OCwgODE4LCAyNDg2LCA4MzMsIDgzMSwgODI4LCA4NDAsIDE3NjEsIDE3NTksIDI2NDksIDI2MzIsXG4gICAgICAgIDI2MzAsIDI3NDYsIDI3MzQsIDI3MzIsIDI3ODIsIDI3ODEsIDU3MCwgNTY3LCAxNTg3LCA1MzEsIDUyNywgNTIzLCA1NDAsIDE1NjYsIDE1NjQsIDQ3NiwgNDY3LCA0NjMsIDIyNDAsIDQ4NixcbiAgICAgICAgNDgzLCAxNTI0LCAxNTIxLCAxNTE4LCAxNTI5LCA0MTEsIDQwMywgMjE5MiwgMzk5LCAyMTg5LCA0MjMsIDQxNiwgMTQ2MiwgMTQ1NywgMTQ1NCwgNDI4LCAxNDY4LCAxNDY1LCAyMjEwLCAzNjYsXG4gICAgICAgIDM2MywgMjE1OCwgMzYwLCAyMTU2LCAzNTcsIDIxNTMsIDM3NiwgMzczLCAzNzAsIDIxNjMsIDE0MTAsIDE0MDksIDE0MDcsIDE0MDUsIDM4MiwgMTQwMiwgMzgwLCAxNDE3LCAxNDE1LCAxNDEyLFxuICAgICAgICAxNDIxLCAyMTc1LCAyMTc0LCA3NzcsIDc3NCwgNzcxLCA3ODQsIDczMiwgNzI1LCA3MjIsIDI0MDQsIDc0MywgMTcxNiwgNjc2LCA2NzQsIDY2OCwgMjM2MywgNjY1LCAyMzYwLCA2ODUsIDE2ODQsXG4gICAgICAgIDE2ODEsIDYyNiwgNjI0LCA2MjIsIDIzMzUsIDYyMCwgMjMzMywgNjE3LCAyMzMwLCA2NDEsIDYzNSwgNjQ5LCAxNjQ2LCAxNjQ0LCAxNjQyLCAyNTY2LCA5MjgsIDkyNSwgMjUzMCwgMjUyNyxcbiAgICAgICAgODk0LCA4OTEsIDg4OCwgMjUwMSwgMjQ5OSwgMjQ5NiwgODU4LCA4NTYsIDg1NCwgODUxLCAxNzc5LCAyNjkyLCAyNjY4LCAyNjY1LCAyNjQ1LCAyNjQzLCAyNjQwLCAyNjUxLCAyNzY4LCAyNzU5LFxuICAgICAgICAyNzU3LCAyNzQ0LCAyNzQzLCAyNzQxLCAyNzQ4LCAzNTIsIDEzODIsIDM0MCwgMzM3LCAzMzMsIDEzNzEsIDEzNjksIDMwNywgMzAwLCAyOTYsIDIxMjYsIDMxNSwgMzEyLCAxMzQ3LCAxMzQyLFxuICAgICAgICAxMzUwLCAyNjEsIDI1OCwgMjUwLCAyMDk3LCAyNDYsIDIwOTQsIDI3MSwgMjY4LCAyNjQsIDEzMDYsIDEzMDEsIDEyOTgsIDI3NiwgMTMxMiwgMTMwOSwgMjExNSwgMjAzLCAyMDQ4LCAxOTUsXG4gICAgICAgIDIwNDUsIDE5MSwgMjA0MSwgMjEzLCAyMDksIDIwNTYsIDEyNDYsIDEyNDQsIDEyMzgsIDIyNSwgMTIzNCwgMjIyLCAxMjU2LCAxMjUzLCAxMjQ5LCAxMjYyLCAyMDgwLCAyMDc5LCAxNTQsIDE5OTcsXG4gICAgICAgIDE1MCwgMTk5NSwgMTQ3LCAxOTkyLCAxOTg5LCAxNjMsIDE2MCwgMjAwNCwgMTU2LCAyMDAxLCAxMTc1LCAxMTc0LCAxMTcyLCAxMTcwLCAxMTY3LCAxNzAsIDExNjQsIDE2NywgMTE4NSwgMTE4MyxcbiAgICAgICAgMTE4MCwgMTE3NywgMTc0LCAxMTkwLCAxMTg4LCAyMDI1LCAyMDI0LCAyMDIyLCA1ODcsIDU4NiwgNTY0LCA1NTksIDU1NiwgMjI5MCwgNTczLCAxNTg4LCA1MjAsIDUxOCwgNTEyLCAyMjY4LFxuICAgICAgICA1MDgsIDIyNjUsIDUzMCwgMTU2OCwgMTU2NSwgNDYxLCA0NTcsIDIyMzMsIDQ1MCwgMjIzMCwgNDQ2LCAyMjI2LCA0NzksIDQ3MSwgNDg5LCAxNTI2LCAxNTIzLCAxNTIwLCAzOTcsIDM5NSxcbiAgICAgICAgMjE4NSwgMzkyLCAyMTgzLCAzODksIDIxODAsIDIxNzcsIDQxMCwgMjE5NCwgNDAyLCA0MjIsIDE0NjMsIDE0NjEsIDE0NTksIDE0NTYsIDE0NzAsIDI0NTUsIDc5OSwgMjQzMywgMjQzMCwgNzc5LFxuICAgICAgICA3NzYsIDc3MywgMjM5NywgMjM5NCwgMjM5MCwgNzM0LCA3MjgsIDcyNCwgNzQ2LCAxNzE3LCAyMzU2LCAyMzU0LCAyMzUxLCAyMzQ4LCAxNjU4LCA2NzcsIDY3NSwgNjczLCA2NzAsIDY2NywgNjg4LFxuICAgICAgICAxNjg1LCAxNjgzLCAyNjA2LCAyNTg5LCAyNTg2LCAyNTU5LCAyNTU2LCAyNTUyLCA5MjcsIDI1MjMsIDI1MjEsIDI1MTgsIDI1MTUsIDE3ODQsIDI1MzIsIDg5NSwgODkzLCA4OTAsIDI3MTgsXG4gICAgICAgIDI3MDksIDI3MDcsIDI2ODksIDI2ODcsIDI2ODQsIDI2NjMsIDI2NjIsIDI2NjAsIDI2NTgsIDE4MjUsIDI2NjcsIDI3NjksIDE4NTIsIDI3NjAsIDI3NTgsIDE0MiwgMTQxLCAxMTM5LCAxMTM4LFxuICAgICAgICAxMzQsIDEzMiwgMTI5LCAxMjYsIDE5ODIsIDExMjksIDExMjgsIDExMjYsIDExMzEsIDExMywgMTExLCAxMDgsIDEwNSwgMTk3MiwgMTAxLCAxOTcwLCAxMjAsIDExOCwgMTE1LCAxMTA5LCAxMTA4LFxuICAgICAgICAxMTA2LCAxMTA0LCAxMjMsIDExMTMsIDExMTEsIDgyLCA3OSwgMTk1MSwgNzUsIDE5NDksIDcyLCAxOTQ2LCA5MiwgODksIDg2LCAxOTU2LCAxMDc3LCAxMDc2LCAxMDc0LCAxMDcyLCA5OCxcbiAgICAgICAgMTA2OSwgOTYsIDEwODQsIDEwODIsIDEwNzksIDEwODgsIDE5NjgsIDE5NjcsIDQ4LCA0NSwgMTkxNiwgNDIsIDE5MTQsIDM5LCAxOTExLCAxOTA4LCA2MCwgNTcsIDU0LCAxOTIzLCA1MCwgMTkyMCxcbiAgICAgICAgMTAzMSwgMTAzMCwgMTAyOCwgMTAyNiwgNjcsIDEwMjMsIDY1LCAxMDIwLCA2MiwgMTA0MSwgMTAzOSwgMTAzNiwgMTAzMywgNjksIDEwNDYsIDEwNDQsIDE5NDQsIDE5NDMsIDE5NDEsIDExLCA5LFxuICAgICAgICAxODY4LCA3LCAxODY1LCAxODYyLCAxODU5LCAyMCwgMTg3OCwgMTYsIDE4NzUsIDEzLCAxODcyLCA5NzAsIDk2OCwgOTY2LCA5NjMsIDI5LCA5NjAsIDI2LCAyMywgOTgzLCA5ODEsIDk3OCwgOTc1LFxuICAgICAgICAzMywgOTcxLCAzMSwgOTkwLCA5ODgsIDk4NSwgMTkwNiwgMTkwNCwgMTkwMiwgOTkzLCAzNTEsIDIxNDUsIDEzODMsIDMzMSwgMzMwLCAzMjgsIDMyNiwgMjEzNywgMzIzLCAyMTM1LCAzMzksXG4gICAgICAgIDEzNzIsIDEzNzAsIDI5NCwgMjkzLCAyOTEsIDI4OSwgMjEyMiwgMjg2LCAyMTIwLCAyODMsIDIxMTcsIDMwOSwgMzAzLCAzMTcsIDEzNDgsIDEzNDYsIDEzNDQsIDI0NSwgMjQ0LCAyNDIsIDIwOTAsXG4gICAgICAgIDIzOSwgMjA4OCwgMjM2LCAyMDg1LCAyMDgyLCAyNjAsIDIwOTksIDI0OSwgMjcwLCAxMzA3LCAxMzA1LCAxMzAzLCAxMzAwLCAxMzE0LCAxODksIDIwMzgsIDE4NiwgMjAzNiwgMTgzLCAyMDMzLFxuICAgICAgICAyMDMwLCAyMDI2LCAyMDYsIDE5OCwgMjA0NywgMTk0LCAyMTYsIDEyNDcsIDEyNDUsIDEyNDMsIDEyNDAsIDIyNywgMTIzNywgMTI1NSwgMjMxMCwgMjMwMiwgMjMwMCwgMjI4NiwgMjI4NCxcbiAgICAgICAgMjI4MSwgNTY1LCA1NjMsIDU2MSwgNTU4LCA1NzUsIDE1ODksIDIyNjEsIDIyNTksIDIyNTYsIDIyNTMsIDE1NDIsIDUyMSwgNTE5LCA1MTcsIDUxNCwgMjI3MCwgNTExLCA1MzMsIDE1NjksXG4gICAgICAgIDE1NjcsIDIyMjMsIDIyMjEsIDIyMTgsIDIyMTUsIDE0ODMsIDIyMTEsIDE0ODAsIDQ1OSwgNDU2LCA0NTMsIDIyMzIsIDQ0OSwgNDc0LCA0OTEsIDE1MjcsIDE1MjUsIDE1MjIsIDI0NzUsIDI0NjcsXG4gICAgICAgIDI0NjUsIDI0NTEsIDI0NDksIDI0NDYsIDgwMSwgODAwLCAyNDI2LCAyNDI0LCAyNDIxLCAyNDE4LCAxNzIzLCAyNDM1LCA3ODAsIDc3OCwgNzc1LCAyMzg3LCAyMzg1LCAyMzgyLCAyMzc5LFxuICAgICAgICAxNjk1LCAyMzc1LCAxNjkzLCAyMzk2LCA3MzUsIDczMywgNzMwLCA3MjcsIDc0OSwgMTcxOCwgMjYxNiwgMjYxNSwgMjYwNCwgMjYwMywgMjYwMSwgMjU4NCwgMjU4MywgMjU4MSwgMjU3OSxcbiAgICAgICAgMTgwMCwgMjU5MSwgMjU1MCwgMjU0OSwgMjU0NywgMjU0NSwgMTc5MiwgMjU0MiwgMTc5MCwgMjU1OCwgOTI5LCAyNzE5LCAxODQxLCAyNzEwLCAyNzA4LCAxODMzLCAxODMxLCAyNjkwLCAyNjg4LFxuICAgICAgICAyNjg2LCAxODE1LCAxODA5LCAxODA4LCAxNzc0LCAxNzU2LCAxNzU0LCAxNzM3LCAxNzM2LCAxNzM0LCAxNzM5LCAxODE2LCAxNzExLCAxNjc2LCAxNjc0LCA2MzMsIDYyOSwgMTYzOCwgMTYzNixcbiAgICAgICAgMTYzMywgMTY0MSwgNTk4LCAxNjA1LCAxNjA0LCAxNjAyLCAxNjAwLCA2MDUsIDE2MDksIDE2MDcsIDIzMjcsIDg4NywgODUzLCAxNzc1LCA4MjIsIDgyMCwgMTc1NywgMTc1NSwgMTU4NCwgNTI0LFxuICAgICAgICAxNTYwLCAxNTU4LCA0NjgsIDQ2NCwgMTUxNCwgMTUxMSwgMTUwOCwgMTUxOSwgNDA4LCA0MDQsIDQwMCwgMTQ1MiwgMTQ0NywgMTQ0NCwgNDE3LCAxNDU4LCAxNDU1LCAyMjA4LCAzNjQsIDM2MSxcbiAgICAgICAgMzU4LCAyMTU0LCAxNDAxLCAxNDAwLCAxMzk4LCAxMzk2LCAzNzQsIDEzOTMsIDM3MSwgMTQwOCwgMTQwNiwgMTQwMywgMTQxMywgMjE3MywgMjE3MiwgNzcyLCA3MjYsIDcyMywgMTcxMiwgNjcyLFxuICAgICAgICA2NjksIDY2NiwgNjgyLCAxNjc4LCAxNjc1LCA2MjUsIDYyMywgNjIxLCA2MTgsIDIzMzEsIDYzNiwgNjMyLCAxNjM5LCAxNjM3LCAxNjM1LCA5MjAsIDkxOCwgODg0LCA4ODAsIDg4OSwgODQ5LFxuICAgICAgICA4NDgsIDg0NywgODQ2LCAyNDk3LCA4NTUsIDg1MiwgMTc3NiwgMjY0MSwgMjc0MiwgMjc4NywgMTM4MCwgMzM0LCAxMzY3LCAxMzY1LCAzMDEsIDI5NywgMTM0MCwgMTMzOCwgMTMzNSwgMTM0MyxcbiAgICAgICAgMjU1LCAyNTEsIDI0NywgMTI5NiwgMTI5MSwgMTI4OCwgMjY1LCAxMzAyLCAxMjk5LCAyMTEzLCAyMDQsIDE5NiwgMTkyLCAyMDQyLCAxMjMyLCAxMjMwLCAxMjI0LCAyMTQsIDEyMjAsIDIxMCxcbiAgICAgICAgMTI0MiwgMTIzOSwgMTIzNSwgMTI1MCwgMjA3NywgMjA3NSwgMTUxLCAxNDgsIDE5OTMsIDE0NCwgMTk5MCwgMTE2MywgMTE2MiwgMTE2MCwgMTE1OCwgMTE1NSwgMTYxLCAxMTUyLCAxNTcsXG4gICAgICAgIDExNzMsIDExNzEsIDExNjgsIDExNjUsIDE2OCwgMTE4MSwgMTE3OCwgMjAyMSwgMjAyMCwgMjAxOCwgMjAyMywgNTg1LCA1NjAsIDU1NywgMTU4NSwgNTE2LCA1MDksIDE1NjIsIDE1NTksIDQ1OCxcbiAgICAgICAgNDQ3LCAyMjI3LCA0NzIsIDE1MTYsIDE1MTMsIDE1MTAsIDM5OCwgMzk2LCAzOTMsIDM5MCwgMjE4MSwgMzg2LCAyMTc4LCA0MDcsIDE0NTMsIDE0NTEsIDE0NDksIDE0NDYsIDQyMCwgMTQ2MCxcbiAgICAgICAgMjIwOSwgNzY5LCA3NjQsIDcyMCwgNzEyLCAyMzkxLCA3MjksIDE3MTMsIDY2NCwgNjYzLCA2NjEsIDY1OSwgMjM1MiwgNjU2LCAyMzQ5LCA2NzEsIDE2NzksIDE2NzcsIDI1NTMsIDkyMiwgOTE5LFxuICAgICAgICAyNTE5LCAyNTE2LCA4ODUsIDg4MywgODgxLCAyNjg1LCAyNjYxLCAyNjU5LCAyNzY3LCAyNzU2LCAyNzU1LCAxNDAsIDExMzcsIDExMzYsIDEzMCwgMTI3LCAxMTI1LCAxMTI0LCAxMTIyLCAxMTI3LFxuICAgICAgICAxMDksIDEwNiwgMTAyLCAxMTAzLCAxMTAyLCAxMTAwLCAxMDk4LCAxMTYsIDExMDcsIDExMDUsIDE5ODAsIDgwLCA3NiwgNzMsIDE5NDcsIDEwNjgsIDEwNjcsIDEwNjUsIDEwNjMsIDkwLCAxMDYwLFxuICAgICAgICA4NywgMTA3NSwgMTA3MywgMTA3MCwgMTA4MCwgMTk2NiwgMTk2NSwgNDYsIDQzLCA0MCwgMTkxMiwgMzYsIDE5MDksIDEwMTksIDEwMTgsIDEwMTYsIDEwMTQsIDU4LCAxMDExLCA1NSwgMTAwOCxcbiAgICAgICAgNTEsIDEwMjksIDEwMjcsIDEwMjQsIDEwMjEsIDYzLCAxMDM3LCAxMDM0LCAxOTQwLCAxOTM5LCAxOTM3LCAxOTQyLCA4LCAxODY2LCA0LCAxODYzLCAxLCAxODYwLCA5NTYsIDk1NCwgOTUyLFxuICAgICAgICA5NDksIDk0NiwgMTcsIDE0LCA5NjksIDk2NywgOTY0LCA5NjEsIDI3LCA5NTcsIDI0LCA5NzksIDk3NiwgOTcyLCAxOTAxLCAxOTAwLCAxODk4LCAxODk2LCA5ODYsIDE5MDUsIDE5MDMsIDM1MCxcbiAgICAgICAgMzQ5LCAxMzgxLCAzMjksIDMyNywgMzI0LCAxMzY4LCAxMzY2LCAyOTIsIDI5MCwgMjg3LCAyODQsIDIxMTgsIDMwNCwgMTM0MSwgMTMzOSwgMTMzNywgMTM0NSwgMjQzLCAyNDAsIDIzNywgMjA4NixcbiAgICAgICAgMjMzLCAyMDgzLCAyNTQsIDEyOTcsIDEyOTUsIDEyOTMsIDEyOTAsIDEzMDQsIDIxMTQsIDE5MCwgMTg3LCAxODQsIDIwMzQsIDE4MCwgMjAzMSwgMTc3LCAyMDI3LCAxOTksIDEyMzMsIDEyMzEsXG4gICAgICAgIDEyMjksIDEyMjYsIDIxNywgMTIyMywgMTI0MSwgMjA3OCwgMjA3NiwgNTg0LCA1NTUsIDU1NCwgNTUyLCA1NTAsIDIyODIsIDU2MiwgMTU4NiwgNTA3LCA1MDYsIDUwNCwgNTAyLCAyMjU3LCA0OTksXG4gICAgICAgIDIyNTQsIDUxNSwgMTU2MywgMTU2MSwgNDQ1LCA0NDMsIDQ0MSwgMjIxOSwgNDM4LCAyMjE2LCA0MzUsIDIyMTIsIDQ2MCwgNDU0LCA0NzUsIDE1MTcsIDE1MTUsIDE1MTIsIDI0NDcsIDc5OCxcbiAgICAgICAgNzk3LCAyNDIyLCAyNDE5LCA3NzAsIDc2OCwgNzY2LCAyMzgzLCAyMzgwLCAyMzc2LCA3MjEsIDcxOSwgNzE3LCA3MTQsIDczMSwgMTcxNCwgMjYwMiwgMjU4MiwgMjU4MCwgMjU0OCwgMjU0NixcbiAgICAgICAgMjU0MywgOTIzLCA5MjEsIDI3MTcsIDI3MDYsIDI3MDUsIDI2ODMsIDI2ODIsIDI2ODAsIDE3NzEsIDE3NTIsIDE3NTAsIDE3MzMsIDE3MzIsIDE3MzEsIDE3MzUsIDE4MTQsIDE3MDcsIDE2NzAsXG4gICAgICAgIDE2NjgsIDE2MzEsIDE2MjksIDE2MjYsIDE2MzQsIDE1OTksIDE1OTgsIDE1OTYsIDE1OTQsIDE2MDMsIDE2MDEsIDIzMjYsIDE3NzIsIDE3NTMsIDE3NTEsIDE1ODEsIDE1NTQsIDE1NTIsIDE1MDQsXG4gICAgICAgIDE1MDEsIDE0OTgsIDE1MDksIDE0NDIsIDE0MzcsIDE0MzQsIDQwMSwgMTQ0OCwgMTQ0NSwgMjIwNiwgMTM5MiwgMTM5MSwgMTM4OSwgMTM4NywgMTM4NCwgMzU5LCAxMzk5LCAxMzk3LCAxMzk0LFxuICAgICAgICAxNDA0LCAyMTcxLCAyMTcwLCAxNzA4LCAxNjcyLCAxNjY5LCA2MTksIDE2MzIsIDE2MzAsIDE2MjgsIDE3NzMsIDEzNzgsIDEzNjMsIDEzNjEsIDEzMzMsIDEzMjgsIDEzMzYsIDEyODYsIDEyODEsXG4gICAgICAgIDEyNzgsIDI0OCwgMTI5MiwgMTI4OSwgMjExMSwgMTIxOCwgMTIxNiwgMTIxMCwgMTk3LCAxMjA2LCAxOTMsIDEyMjgsIDEyMjUsIDEyMjEsIDEyMzYsIDIwNzMsIDIwNzEsIDExNTEsIDExNTAsXG4gICAgICAgIDExNDgsIDExNDYsIDE1MiwgMTE0MywgMTQ5LCAxMTQwLCAxNDUsIDExNjEsIDExNTksIDExNTYsIDExNTMsIDE1OCwgMTE2OSwgMTE2NiwgMjAxNywgMjAxNiwgMjAxNCwgMjAxOSwgMTU4MixcbiAgICAgICAgNTEwLCAxNTU2LCAxNTUzLCA0NTIsIDQ0OCwgMTUwNiwgMTUwMCwgMzk0LCAzOTEsIDM4NywgMTQ0MywgMTQ0MSwgMTQzOSwgMTQzNiwgMTQ1MCwgMjIwNywgNzY1LCA3MTYsIDcxMywgMTcwOSxcbiAgICAgICAgNjYyLCA2NjAsIDY1NywgMTY3MywgMTY3MSwgOTE2LCA5MTQsIDg3OSwgODc4LCA4NzcsIDg4MiwgMTEzNSwgMTEzNCwgMTEyMSwgMTEyMCwgMTExOCwgMTEyMywgMTA5NywgMTA5NiwgMTA5NCxcbiAgICAgICAgMTA5MiwgMTAzLCAxMTAxLCAxMDk5LCAxOTc5LCAxMDU5LCAxMDU4LCAxMDU2LCAxMDU0LCA3NywgMTA1MSwgNzQsIDEwNjYsIDEwNjQsIDEwNjEsIDEwNzEsIDE5NjQsIDE5NjMsIDEwMDcsXG4gICAgICAgIDEwMDYsIDEwMDQsIDEwMDIsIDk5OSwgNDEsIDk5NiwgMzcsIDEwMTcsIDEwMTUsIDEwMTIsIDEwMDksIDUyLCAxMDI1LCAxMDIyLCAxOTM2LCAxOTM1LCAxOTMzLCAxOTM4LCA5NDIsIDk0MCxcbiAgICAgICAgOTM4LCA5MzUsIDkzMiwgNSwgMiwgOTU1LCA5NTMsIDk1MCwgOTQ3LCAxOCwgOTQzLCAxNSwgOTY1LCA5NjIsIDk1OCwgMTg5NSwgMTg5NCwgMTg5MiwgMTg5MCwgOTczLCAxODk5LCAxODk3LFxuICAgICAgICAxMzc5LCAzMjUsIDEzNjQsIDEzNjIsIDI4OCwgMjg1LCAxMzM0LCAxMzMyLCAxMzMwLCAyNDEsIDIzOCwgMjM0LCAxMjg3LCAxMjg1LCAxMjgzLCAxMjgwLCAxMjk0LCAyMTEyLCAxODgsIDE4NSxcbiAgICAgICAgMTgxLCAxNzgsIDIwMjgsIDEyMTksIDEyMTcsIDEyMTUsIDEyMTIsIDIwMCwgMTIwOSwgMTIyNywgMjA3NCwgMjA3MiwgNTgzLCA1NTMsIDU1MSwgMTU4MywgNTA1LCA1MDMsIDUwMCwgNTEzLFxuICAgICAgICAxNTU3LCAxNTU1LCA0NDQsIDQ0MiwgNDM5LCA0MzYsIDIyMTMsIDQ1NSwgNDUxLCAxNTA3LCAxNTA1LCAxNTAyLCA3OTYsIDc2MywgNzYyLCA3NjAsIDc2NywgNzExLCA3MTAsIDcwOCwgNzA2LFxuICAgICAgICAyMzc3LCA3MTgsIDcxNSwgMTcxMCwgMjU0NCwgOTE3LCA5MTUsIDI2ODEsIDE2MjcsIDE1OTcsIDE1OTUsIDIzMjUsIDE3NjksIDE3NDksIDE3NDcsIDE0OTksIDE0MzgsIDE0MzUsIDIyMDQsXG4gICAgICAgIDEzOTAsIDEzODgsIDEzODUsIDEzOTUsIDIxNjksIDIxNjcsIDE3MDQsIDE2NjUsIDE2NjIsIDE2MjUsIDE2MjMsIDE2MjAsIDE3NzAsIDEzMjksIDEyODIsIDEyNzksIDIxMDksIDEyMTQsIDEyMDcsXG4gICAgICAgIDEyMjIsIDIwNjgsIDIwNjUsIDExNDksIDExNDcsIDExNDQsIDExNDEsIDE0NiwgMTE1NywgMTE1NCwgMjAxMywgMjAxMSwgMjAwOCwgMjAxNSwgMTU3OSwgMTU0OSwgMTU0NiwgMTQ5NSwgMTQ4NyxcbiAgICAgICAgMTQzMywgMTQzMSwgMTQyOCwgMTQyNSwgMzg4LCAxNDQwLCAyMjA1LCAxNzA1LCA2NTgsIDE2NjcsIDE2NjQsIDExMTksIDEwOTUsIDEwOTMsIDE5NzgsIDEwNTcsIDEwNTUsIDEwNTIsIDEwNjIsXG4gICAgICAgIDE5NjIsIDE5NjAsIDEwMDUsIDEwMDMsIDEwMDAsIDk5NywgMzgsIDEwMTMsIDEwMTAsIDE5MzIsIDE5MzAsIDE5MjcsIDE5MzQsIDk0MSwgOTM5LCA5MzYsIDkzMywgNiwgOTMwLCAzLCA5NTEsXG4gICAgICAgIDk0OCwgOTQ0LCAxODg5LCAxODg3LCAxODg0LCAxODgxLCA5NTksIDE4OTMsIDE4OTEsIDM1LCAxMzc3LCAxMzYwLCAxMzU4LCAxMzI3LCAxMzI1LCAxMzIyLCAxMzMxLCAxMjc3LCAxMjc1LFxuICAgICAgICAxMjcyLCAxMjY5LCAyMzUsIDEyODQsIDIxMTAsIDEyMDUsIDEyMDQsIDEyMDEsIDExOTgsIDE4MiwgMTE5NSwgMTc5LCAxMjEzLCAyMDcwLCAyMDY3LCAxNTgwLCA1MDEsIDE1NTEsIDE1NDgsXG4gICAgICAgIDQ0MCwgNDM3LCAxNDk3LCAxNDk0LCAxNDkwLCAxNTAzLCA3NjEsIDcwOSwgNzA3LCAxNzA2LCA5MTMsIDkxMiwgMjE5OCwgMTM4NiwgMjE2NCwgMjE2MSwgMTYyMSwgMTc2NiwgMjEwMywgMTIwOCxcbiAgICAgICAgMjA1OCwgMjA1NCwgMTE0NSwgMTE0MiwgMjAwNSwgMjAwMiwgMTk5OSwgMjAwOSwgMTQ4OCwgMTQyOSwgMTQyNiwgMjIwMCwgMTY5OCwgMTY1OSwgMTY1NiwgMTk3NSwgMTA1MywgMTk1NywgMTk1NCxcbiAgICAgICAgMTAwMSwgOTk4LCAxOTI0LCAxOTIxLCAxOTE4LCAxOTI4LCA5MzcsIDkzNCwgOTMxLCAxODc5LCAxODc2LCAxODczLCAxODcwLCA5NDUsIDE4ODUsIDE4ODIsIDEzMjMsIDEyNzMsIDEyNzAsXG4gICAgICAgIDIxMDUsIDEyMDIsIDExOTksIDExOTYsIDEyMTEsIDIwNjEsIDIwNTcsIDE1NzYsIDE1NDMsIDE1NDAsIDE0ODQsIDE0ODEsIDE0NzgsIDE0OTEsIDE3MDBcbiAgICBdKTtcbiAgICByZXR1cm4gUERGNDE3Q29tbW9uO1xufSgpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IFBERjQxN0NvbW1vbjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVBERjQxN0NvbW1vbi5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8qXG4qIENvcHlyaWdodCAyMDA3IFpYaW5nIGF1dGhvcnNcbipcbiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbipcbiogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbipcbiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4qIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4qIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8vIGltcG9ydCBqYXZhLnV0aWwuTGlzdDtcbi8qKlxuICogQGF1dGhvciBHdWVudGhlciBHcmF1XG4gKi9cbnZhciBQREY0MTdEZXRlY3RvclJlc3VsdCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBQREY0MTdEZXRlY3RvclJlc3VsdChiaXRzLCBwb2ludHMpIHtcbiAgICAgICAgdGhpcy5iaXRzID0gYml0cztcbiAgICAgICAgdGhpcy5wb2ludHMgPSBwb2ludHM7XG4gICAgfVxuICAgIFBERjQxN0RldGVjdG9yUmVzdWx0LnByb3RvdHlwZS5nZXRCaXRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5iaXRzO1xuICAgIH07XG4gICAgUERGNDE3RGV0ZWN0b3JSZXN1bHQucHJvdG90eXBlLmdldFBvaW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9pbnRzO1xuICAgIH07XG4gICAgcmV0dXJuIFBERjQxN0RldGVjdG9yUmVzdWx0O1xufSgpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IFBERjQxN0RldGVjdG9yUmVzdWx0O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UERGNDE3RGV0ZWN0b3JSZXN1bHQuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuKiBDb3B5cmlnaHQgMjAwOSBaWGluZyBhdXRob3JzXG4qXG4qIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4qIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4qXG4qICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4qXG4qIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG52YXIgX192YWx1ZXMgPSAodGhpcyAmJiB0aGlzLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7XG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vLyBpbXBvcnQgY29tLmdvb2dsZS56eGluZy5Ob3RGb3VuZEV4Y2VwdGlvbjtcbi8vIGltcG9ydCBjb20uZ29vZ2xlLnp4aW5nLlJlc3VsdFBvaW50O1xudmFyIFJlc3VsdFBvaW50XzEgPSByZXF1aXJlKFwiLi4vLi4vUmVzdWx0UG9pbnRcIik7XG52YXIgU3lzdGVtXzEgPSByZXF1aXJlKFwiLi4vLi4vdXRpbC9TeXN0ZW1cIik7XG52YXIgQXJyYXlzXzEgPSByZXF1aXJlKFwiLi4vLi4vdXRpbC9BcnJheXNcIik7XG52YXIgUERGNDE3RGV0ZWN0b3JSZXN1bHRfMSA9IHJlcXVpcmUoXCIuL1BERjQxN0RldGVjdG9yUmVzdWx0XCIpO1xuLy8gaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7XG4vLyBpbXBvcnQgamF2YS51dGlsLkFycmF5cztcbi8vIGltcG9ydCBqYXZhLnV0aWwuTGlzdDtcbi8vIGltcG9ydCBqYXZhLnV0aWwuTWFwO1xuLyoqXG4gKiA8cD5FbmNhcHN1bGF0ZXMgbG9naWMgdGhhdCBjYW4gZGV0ZWN0IGEgUERGNDE3IENvZGUgaW4gYW4gaW1hZ2UsIGV2ZW4gaWYgdGhlXG4gKiBQREY0MTcgQ29kZSBpcyByb3RhdGVkIG9yIHNrZXdlZCwgb3IgcGFydGlhbGx5IG9ic2N1cmVkLjwvcD5cbiAqXG4gKiBAYXV0aG9yIFNJVEEgTGFiIChrZXZpbi5vc3VsbGl2YW5Ac2l0YS5hZXJvKVxuICogQGF1dGhvciBkc3dpdGtpbkBnb29nbGUuY29tIChEYW5pZWwgU3dpdGtpbilcbiAqIEBhdXRob3IgR3VlbnRoZXIgR3JhdVxuICovXG52YXIgRGV0ZWN0b3IgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRGV0ZWN0b3IoKSB7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIDxwPkRldGVjdHMgYSBQREY0MTcgQ29kZSBpbiBhbiBpbWFnZS4gT25seSBjaGVja3MgMCBhbmQgMTgwIGRlZ3JlZSByb3RhdGlvbnMuPC9wPlxuICAgICAqXG4gICAgICogQHBhcmFtIGltYWdlIGJhcmNvZGUgaW1hZ2UgdG8gZGVjb2RlXG4gICAgICogQHBhcmFtIGhpbnRzIG9wdGlvbmFsIGhpbnRzIHRvIGRldGVjdG9yXG4gICAgICogQHBhcmFtIG11bHRpcGxlIGlmIHRydWUsIHRoZW4gdGhlIGltYWdlIGlzIHNlYXJjaGVkIGZvciBtdWx0aXBsZSBjb2Rlcy4gSWYgZmFsc2UsIHRoZW4gYXQgbW9zdCBvbmUgY29kZSB3aWxsXG4gICAgICogYmUgZm91bmQgYW5kIHJldHVybmVkXG4gICAgICogQHJldHVybiB7QGxpbmsgUERGNDE3RGV0ZWN0b3JSZXN1bHR9IGVuY2Fwc3VsYXRpbmcgcmVzdWx0cyBvZiBkZXRlY3RpbmcgYSBQREY0MTcgY29kZVxuICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb24gaWYgbm8gUERGNDE3IENvZGUgY2FuIGJlIGZvdW5kXG4gICAgICovXG4gICAgRGV0ZWN0b3IuZGV0ZWN0TXVsdGlwbGUgPSBmdW5jdGlvbiAoaW1hZ2UsIGhpbnRzLCBtdWx0aXBsZSkge1xuICAgICAgICAvLyBUT0RPIGRldGVjdGlvbiBpbXByb3ZlbWVudCwgdHJ5SGFyZGVyIGNvdWxkIHRyeSBzZXZlcmFsIGRpZmZlcmVudCBsdW1pbmFuY2UgdGhyZXNob2xkcy9ibGFja3BvaW50cyBvciBldmVuXG4gICAgICAgIC8vIGRpZmZlcmVudCBiaW5hcml6ZXJzXG4gICAgICAgIC8vIGJvb2xlYW4gdHJ5SGFyZGVyID0gaGludHMgIT0gbnVsbCAmJiBoaW50cy5jb250YWluc0tleShEZWNvZGVIaW50VHlwZS5UUllfSEFSREVSKTtcbiAgICAgICAgdmFyIGJpdE1hdHJpeCA9IGltYWdlLmdldEJsYWNrTWF0cml4KCk7XG4gICAgICAgIHZhciBiYXJjb2RlQ29vcmRpbmF0ZXMgPSBEZXRlY3Rvci5kZXRlY3QobXVsdGlwbGUsIGJpdE1hdHJpeCk7XG4gICAgICAgIGlmICghYmFyY29kZUNvb3JkaW5hdGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgYml0TWF0cml4ID0gYml0TWF0cml4LmNsb25lKCk7XG4gICAgICAgICAgICBiaXRNYXRyaXgucm90YXRlMTgwKCk7XG4gICAgICAgICAgICBiYXJjb2RlQ29vcmRpbmF0ZXMgPSBEZXRlY3Rvci5kZXRlY3QobXVsdGlwbGUsIGJpdE1hdHJpeCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBQREY0MTdEZXRlY3RvclJlc3VsdF8xLmRlZmF1bHQoYml0TWF0cml4LCBiYXJjb2RlQ29vcmRpbmF0ZXMpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogRGV0ZWN0cyBQREY0MTcgY29kZXMgaW4gYW4gaW1hZ2UuIE9ubHkgY2hlY2tzIDAgZGVncmVlIHJvdGF0aW9uXG4gICAgICogQHBhcmFtIG11bHRpcGxlIGlmIHRydWUsIHRoZW4gdGhlIGltYWdlIGlzIHNlYXJjaGVkIGZvciBtdWx0aXBsZSBjb2Rlcy4gSWYgZmFsc2UsIHRoZW4gYXQgbW9zdCBvbmUgY29kZSB3aWxsXG4gICAgICogYmUgZm91bmQgYW5kIHJldHVybmVkXG4gICAgICogQHBhcmFtIGJpdE1hdHJpeCBiaXQgbWF0cml4IHRvIGRldGVjdCBiYXJjb2RlcyBpblxuICAgICAqIEByZXR1cm4gTGlzdCBvZiBSZXN1bHRQb2ludCBhcnJheXMgY29udGFpbmluZyB0aGUgY29vcmRpbmF0ZXMgb2YgZm91bmQgYmFyY29kZXNcbiAgICAgKi9cbiAgICBEZXRlY3Rvci5kZXRlY3QgPSBmdW5jdGlvbiAobXVsdGlwbGUsIGJpdE1hdHJpeCkge1xuICAgICAgICB2YXIgZV8xLCBfYTtcbiAgICAgICAgdmFyIGJhcmNvZGVDb29yZGluYXRlcyA9IG5ldyBBcnJheSgpO1xuICAgICAgICB2YXIgcm93ID0gMDtcbiAgICAgICAgdmFyIGNvbHVtbiA9IDA7XG4gICAgICAgIHZhciBmb3VuZEJhcmNvZGVJblJvdyA9IGZhbHNlO1xuICAgICAgICB3aGlsZSAocm93IDwgYml0TWF0cml4LmdldEhlaWdodCgpKSB7XG4gICAgICAgICAgICB2YXIgdmVydGljZXMgPSBEZXRlY3Rvci5maW5kVmVydGljZXMoYml0TWF0cml4LCByb3csIGNvbHVtbik7XG4gICAgICAgICAgICBpZiAodmVydGljZXNbMF0gPT0gbnVsbCAmJiB2ZXJ0aWNlc1szXSA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFmb3VuZEJhcmNvZGVJblJvdykge1xuICAgICAgICAgICAgICAgICAgICAvLyB3ZSBkaWRuJ3QgZmluZCBhbnkgYmFyY29kZSBzbyB0aGF0J3MgdGhlIGVuZCBvZiBzZWFyY2hpbmdcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIHdlIGRpZG4ndCBmaW5kIGEgYmFyY29kZSBzdGFydGluZyBhdCB0aGUgZ2l2ZW4gY29sdW1uIGFuZCByb3cuIFRyeSBhZ2FpbiBmcm9tIHRoZSBmaXJzdCBjb2x1bW4gYW5kIHNsaWdodGx5XG4gICAgICAgICAgICAgICAgLy8gYmVsb3cgdGhlIGxvd2VzdCBiYXJjb2RlIHdlIGZvdW5kIHNvIGZhci5cbiAgICAgICAgICAgICAgICBmb3VuZEJhcmNvZGVJblJvdyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGNvbHVtbiA9IDA7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYmFyY29kZUNvb3JkaW5hdGVzXzEgPSAoZV8xID0gdm9pZCAwLCBfX3ZhbHVlcyhiYXJjb2RlQ29vcmRpbmF0ZXMpKSwgYmFyY29kZUNvb3JkaW5hdGVzXzFfMSA9IGJhcmNvZGVDb29yZGluYXRlc18xLm5leHQoKTsgIWJhcmNvZGVDb29yZGluYXRlc18xXzEuZG9uZTsgYmFyY29kZUNvb3JkaW5hdGVzXzFfMSA9IGJhcmNvZGVDb29yZGluYXRlc18xLm5leHQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGJhcmNvZGVDb29yZGluYXRlID0gYmFyY29kZUNvb3JkaW5hdGVzXzFfMS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiYXJjb2RlQ29vcmRpbmF0ZVsxXSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93ID0gTWF0aC50cnVuYyhNYXRoLm1heChyb3csIGJhcmNvZGVDb29yZGluYXRlWzFdLmdldFkoKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJhcmNvZGVDb29yZGluYXRlWzNdICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3cgPSBNYXRoLm1heChyb3csIE1hdGgudHJ1bmMoYmFyY29kZUNvb3JkaW5hdGVbM10uZ2V0WSgpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH1cbiAgICAgICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiYXJjb2RlQ29vcmRpbmF0ZXNfMV8xICYmICFiYXJjb2RlQ29vcmRpbmF0ZXNfMV8xLmRvbmUgJiYgKF9hID0gYmFyY29kZUNvb3JkaW5hdGVzXzEucmV0dXJuKSkgX2EuY2FsbChiYXJjb2RlQ29vcmRpbmF0ZXNfMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByb3cgKz0gRGV0ZWN0b3IuUk9XX1NURVA7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3VuZEJhcmNvZGVJblJvdyA9IHRydWU7XG4gICAgICAgICAgICBiYXJjb2RlQ29vcmRpbmF0ZXMucHVzaCh2ZXJ0aWNlcyk7XG4gICAgICAgICAgICBpZiAoIW11bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBpZiB3ZSBkaWRuJ3QgZmluZCBhIHJpZ2h0IHJvdyBpbmRpY2F0b3IgY29sdW1uLCB0aGVuIGNvbnRpbnVlIHRoZSBzZWFyY2ggZm9yIHRoZSBuZXh0IGJhcmNvZGUgYWZ0ZXIgdGhlXG4gICAgICAgICAgICAvLyBzdGFydCBwYXR0ZXJuIG9mIHRoZSBiYXJjb2RlIGp1c3QgZm91bmQuXG4gICAgICAgICAgICBpZiAodmVydGljZXNbMl0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGNvbHVtbiA9IE1hdGgudHJ1bmModmVydGljZXNbMl0uZ2V0WCgpKTtcbiAgICAgICAgICAgICAgICByb3cgPSBNYXRoLnRydW5jKHZlcnRpY2VzWzJdLmdldFkoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb2x1bW4gPSBNYXRoLnRydW5jKHZlcnRpY2VzWzRdLmdldFgoKSk7XG4gICAgICAgICAgICAgICAgcm93ID0gTWF0aC50cnVuYyh2ZXJ0aWNlc1s0XS5nZXRZKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBiYXJjb2RlQ29vcmRpbmF0ZXM7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBMb2NhdGUgdGhlIHZlcnRpY2VzIGFuZCB0aGUgY29kZXdvcmRzIGFyZWEgb2YgYSBibGFjayBibG9iIHVzaW5nIHRoZSBTdGFydFxuICAgICAqIGFuZCBTdG9wIHBhdHRlcm5zIGFzIGxvY2F0b3JzLlxuICAgICAqXG4gICAgICogQHBhcmFtIG1hdHJpeCB0aGUgc2Nhbm5lZCBiYXJjb2RlIGltYWdlLlxuICAgICAqIEByZXR1cm4gYW4gYXJyYXkgY29udGFpbmluZyB0aGUgdmVydGljZXM6XG4gICAgICogICAgICAgICAgIHZlcnRpY2VzWzBdIHgsIHkgdG9wIGxlZnQgYmFyY29kZVxuICAgICAqICAgICAgICAgICB2ZXJ0aWNlc1sxXSB4LCB5IGJvdHRvbSBsZWZ0IGJhcmNvZGVcbiAgICAgKiAgICAgICAgICAgdmVydGljZXNbMl0geCwgeSB0b3AgcmlnaHQgYmFyY29kZVxuICAgICAqICAgICAgICAgICB2ZXJ0aWNlc1szXSB4LCB5IGJvdHRvbSByaWdodCBiYXJjb2RlXG4gICAgICogICAgICAgICAgIHZlcnRpY2VzWzRdIHgsIHkgdG9wIGxlZnQgY29kZXdvcmQgYXJlYVxuICAgICAqICAgICAgICAgICB2ZXJ0aWNlc1s1XSB4LCB5IGJvdHRvbSBsZWZ0IGNvZGV3b3JkIGFyZWFcbiAgICAgKiAgICAgICAgICAgdmVydGljZXNbNl0geCwgeSB0b3AgcmlnaHQgY29kZXdvcmQgYXJlYVxuICAgICAqICAgICAgICAgICB2ZXJ0aWNlc1s3XSB4LCB5IGJvdHRvbSByaWdodCBjb2Rld29yZCBhcmVhXG4gICAgICovXG4gICAgRGV0ZWN0b3IuZmluZFZlcnRpY2VzID0gZnVuY3Rpb24gKG1hdHJpeCwgc3RhcnRSb3csIHN0YXJ0Q29sdW1uKSB7XG4gICAgICAgIHZhciBoZWlnaHQgPSBtYXRyaXguZ2V0SGVpZ2h0KCk7XG4gICAgICAgIHZhciB3aWR0aCA9IG1hdHJpeC5nZXRXaWR0aCgpO1xuICAgICAgICAvLyBjb25zdCByZXN1bHQgPSBuZXcgUmVzdWx0UG9pbnRbOF07XG4gICAgICAgIHZhciByZXN1bHQgPSBuZXcgQXJyYXkoOCk7XG4gICAgICAgIERldGVjdG9yLmNvcHlUb1Jlc3VsdChyZXN1bHQsIERldGVjdG9yLmZpbmRSb3dzV2l0aFBhdHRlcm4obWF0cml4LCBoZWlnaHQsIHdpZHRoLCBzdGFydFJvdywgc3RhcnRDb2x1bW4sIERldGVjdG9yLlNUQVJUX1BBVFRFUk4pLCBEZXRlY3Rvci5JTkRFWEVTX1NUQVJUX1BBVFRFUk4pO1xuICAgICAgICBpZiAocmVzdWx0WzRdICE9IG51bGwpIHtcbiAgICAgICAgICAgIHN0YXJ0Q29sdW1uID0gTWF0aC50cnVuYyhyZXN1bHRbNF0uZ2V0WCgpKTtcbiAgICAgICAgICAgIHN0YXJ0Um93ID0gTWF0aC50cnVuYyhyZXN1bHRbNF0uZ2V0WSgpKTtcbiAgICAgICAgfVxuICAgICAgICBEZXRlY3Rvci5jb3B5VG9SZXN1bHQocmVzdWx0LCBEZXRlY3Rvci5maW5kUm93c1dpdGhQYXR0ZXJuKG1hdHJpeCwgaGVpZ2h0LCB3aWR0aCwgc3RhcnRSb3csIHN0YXJ0Q29sdW1uLCBEZXRlY3Rvci5TVE9QX1BBVFRFUk4pLCBEZXRlY3Rvci5JTkRFWEVTX1NUT1BfUEFUVEVSTik7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICBEZXRlY3Rvci5jb3B5VG9SZXN1bHQgPSBmdW5jdGlvbiAocmVzdWx0LCB0bXBSZXN1bHQsIGRlc3RpbmF0aW9uSW5kZXhlcykge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlc3RpbmF0aW9uSW5kZXhlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgcmVzdWx0W2Rlc3RpbmF0aW9uSW5kZXhlc1tpXV0gPSB0bXBSZXN1bHRbaV07XG4gICAgICAgIH1cbiAgICB9O1xuICAgIERldGVjdG9yLmZpbmRSb3dzV2l0aFBhdHRlcm4gPSBmdW5jdGlvbiAobWF0cml4LCBoZWlnaHQsIHdpZHRoLCBzdGFydFJvdywgc3RhcnRDb2x1bW4sIHBhdHRlcm4pIHtcbiAgICAgICAgLy8gY29uc3QgcmVzdWx0ID0gbmV3IFJlc3VsdFBvaW50WzRdO1xuICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IEFycmF5KDQpO1xuICAgICAgICB2YXIgZm91bmQgPSBmYWxzZTtcbiAgICAgICAgdmFyIGNvdW50ZXJzID0gbmV3IEludDMyQXJyYXkocGF0dGVybi5sZW5ndGgpO1xuICAgICAgICBmb3IgKDsgc3RhcnRSb3cgPCBoZWlnaHQ7IHN0YXJ0Um93ICs9IERldGVjdG9yLlJPV19TVEVQKSB7XG4gICAgICAgICAgICB2YXIgbG9jID0gRGV0ZWN0b3IuZmluZEd1YXJkUGF0dGVybihtYXRyaXgsIHN0YXJ0Q29sdW1uLCBzdGFydFJvdywgd2lkdGgsIGZhbHNlLCBwYXR0ZXJuLCBjb3VudGVycyk7XG4gICAgICAgICAgICBpZiAobG9jICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB3aGlsZSAoc3RhcnRSb3cgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBwcmV2aW91c1Jvd0xvYyA9IERldGVjdG9yLmZpbmRHdWFyZFBhdHRlcm4obWF0cml4LCBzdGFydENvbHVtbiwgLS1zdGFydFJvdywgd2lkdGgsIGZhbHNlLCBwYXR0ZXJuLCBjb3VudGVycyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c1Jvd0xvYyAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2MgPSBwcmV2aW91c1Jvd0xvYztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0Um93Kys7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXN1bHRbMF0gPSBuZXcgUmVzdWx0UG9pbnRfMS5kZWZhdWx0KGxvY1swXSwgc3RhcnRSb3cpO1xuICAgICAgICAgICAgICAgIHJlc3VsdFsxXSA9IG5ldyBSZXN1bHRQb2ludF8xLmRlZmF1bHQobG9jWzFdLCBzdGFydFJvdyk7XG4gICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHZhciBzdG9wUm93ID0gc3RhcnRSb3cgKyAxO1xuICAgICAgICAvLyBMYXN0IHJvdyBvZiB0aGUgY3VycmVudCBzeW1ib2wgdGhhdCBjb250YWlucyBwYXR0ZXJuXG4gICAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICAgICAgdmFyIHNraXBwZWRSb3dDb3VudCA9IDA7XG4gICAgICAgICAgICB2YXIgcHJldmlvdXNSb3dMb2MgPSBJbnQzMkFycmF5LmZyb20oW01hdGgudHJ1bmMocmVzdWx0WzBdLmdldFgoKSksIE1hdGgudHJ1bmMocmVzdWx0WzFdLmdldFgoKSldKTtcbiAgICAgICAgICAgIGZvciAoOyBzdG9wUm93IDwgaGVpZ2h0OyBzdG9wUm93KyspIHtcbiAgICAgICAgICAgICAgICB2YXIgbG9jID0gRGV0ZWN0b3IuZmluZEd1YXJkUGF0dGVybihtYXRyaXgsIHByZXZpb3VzUm93TG9jWzBdLCBzdG9wUm93LCB3aWR0aCwgZmFsc2UsIHBhdHRlcm4sIGNvdW50ZXJzKTtcbiAgICAgICAgICAgICAgICAvLyBhIGZvdW5kIHBhdHRlcm4gaXMgb25seSBjb25zaWRlcmVkIHRvIGJlbG9uZyB0byB0aGUgc2FtZSBiYXJjb2RlIGlmIHRoZSBzdGFydCBhbmQgZW5kIHBvc2l0aW9uc1xuICAgICAgICAgICAgICAgIC8vIGRvbid0IGRpZmZlciB0b28gbXVjaC4gUGF0dGVybiBkcmlmdCBzaG91bGQgYmUgbm90IGJpZ2dlciB0aGFuIHR3byBmb3IgY29uc2VjdXRpdmUgcm93cy4gV2l0aFxuICAgICAgICAgICAgICAgIC8vIGEgaGlnaGVyIG51bWJlciBvZiBza2lwcGVkIHJvd3MgZHJpZnQgY291bGQgYmUgbGFyZ2VyLiBUbyBrZWVwIGl0IHNpbXBsZSBmb3Igbm93LCB3ZSBhbGxvdyBhIHNsaWdodGx5XG4gICAgICAgICAgICAgICAgLy8gbGFyZ2VyIGRyaWZ0IGFuZCBkb24ndCBjaGVjayBmb3Igc2tpcHBlZCByb3dzLlxuICAgICAgICAgICAgICAgIGlmIChsb2MgIT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgICAgICBNYXRoLmFicyhwcmV2aW91c1Jvd0xvY1swXSAtIGxvY1swXSkgPCBEZXRlY3Rvci5NQVhfUEFUVEVSTl9EUklGVCAmJlxuICAgICAgICAgICAgICAgICAgICBNYXRoLmFicyhwcmV2aW91c1Jvd0xvY1sxXSAtIGxvY1sxXSkgPCBEZXRlY3Rvci5NQVhfUEFUVEVSTl9EUklGVCkge1xuICAgICAgICAgICAgICAgICAgICBwcmV2aW91c1Jvd0xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgc2tpcHBlZFJvd0NvdW50ID0gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChza2lwcGVkUm93Q291bnQgPiBEZXRlY3Rvci5TS0lQUEVEX1JPV19DT1VOVF9NQVgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2tpcHBlZFJvd0NvdW50Kys7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdG9wUm93IC09IHNraXBwZWRSb3dDb3VudCArIDE7XG4gICAgICAgICAgICByZXN1bHRbMl0gPSBuZXcgUmVzdWx0UG9pbnRfMS5kZWZhdWx0KHByZXZpb3VzUm93TG9jWzBdLCBzdG9wUm93KTtcbiAgICAgICAgICAgIHJlc3VsdFszXSA9IG5ldyBSZXN1bHRQb2ludF8xLmRlZmF1bHQocHJldmlvdXNSb3dMb2NbMV0sIHN0b3BSb3cpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdG9wUm93IC0gc3RhcnRSb3cgPCBEZXRlY3Rvci5CQVJDT0RFX01JTl9IRUlHSFQpIHtcbiAgICAgICAgICAgIEFycmF5c18xLmRlZmF1bHQuZmlsbChyZXN1bHQsIG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0gbWF0cml4IHJvdyBvZiBibGFjay93aGl0ZSB2YWx1ZXMgdG8gc2VhcmNoXG4gICAgICogQHBhcmFtIGNvbHVtbiB4IHBvc2l0aW9uIHRvIHN0YXJ0IHNlYXJjaFxuICAgICAqIEBwYXJhbSByb3cgeSBwb3NpdGlvbiB0byBzdGFydCBzZWFyY2hcbiAgICAgKiBAcGFyYW0gd2lkdGggdGhlIG51bWJlciBvZiBwaXhlbHMgdG8gc2VhcmNoIG9uIHRoaXMgcm93XG4gICAgICogQHBhcmFtIHBhdHRlcm4gcGF0dGVybiBvZiBjb3VudHMgb2YgbnVtYmVyIG9mIGJsYWNrIGFuZCB3aGl0ZSBwaXhlbHMgdGhhdCBhcmVcbiAgICAgKiAgICAgICAgICAgICAgICAgYmVpbmcgc2VhcmNoZWQgZm9yIGFzIGEgcGF0dGVyblxuICAgICAqIEBwYXJhbSBjb3VudGVycyBhcnJheSBvZiBjb3VudGVycywgYXMgbG9uZyBhcyBwYXR0ZXJuLCB0byByZS11c2VcbiAgICAgKiBAcmV0dXJuIHN0YXJ0L2VuZCBob3Jpem9udGFsIG9mZnNldCBvZiBndWFyZCBwYXR0ZXJuLCBhcyBhbiBhcnJheSBvZiB0d28gaW50cy5cbiAgICAgKi9cbiAgICBEZXRlY3Rvci5maW5kR3VhcmRQYXR0ZXJuID0gZnVuY3Rpb24gKG1hdHJpeCwgY29sdW1uLCByb3csIHdpZHRoLCB3aGl0ZUZpcnN0LCBwYXR0ZXJuLCBjb3VudGVycykge1xuICAgICAgICBBcnJheXNfMS5kZWZhdWx0LmZpbGxXaXRoaW4oY291bnRlcnMsIDAsIGNvdW50ZXJzLmxlbmd0aCwgMCk7XG4gICAgICAgIHZhciBwYXR0ZXJuU3RhcnQgPSBjb2x1bW47XG4gICAgICAgIHZhciBwaXhlbERyaWZ0ID0gMDtcbiAgICAgICAgLy8gaWYgdGhlcmUgYXJlIGJsYWNrIHBpeGVscyBsZWZ0IG9mIHRoZSBjdXJyZW50IHBpeGVsIHNoaWZ0IHRvIHRoZSBsZWZ0LCBidXQgb25seSBmb3IgTUFYX1BJWEVMX0RSSUZUIHBpeGVsc1xuICAgICAgICB3aGlsZSAobWF0cml4LmdldChwYXR0ZXJuU3RhcnQsIHJvdykgJiYgcGF0dGVyblN0YXJ0ID4gMCAmJiBwaXhlbERyaWZ0KysgPCBEZXRlY3Rvci5NQVhfUElYRUxfRFJJRlQpIHtcbiAgICAgICAgICAgIHBhdHRlcm5TdGFydC0tO1xuICAgICAgICB9XG4gICAgICAgIHZhciB4ID0gcGF0dGVyblN0YXJ0O1xuICAgICAgICB2YXIgY291bnRlclBvc2l0aW9uID0gMDtcbiAgICAgICAgdmFyIHBhdHRlcm5MZW5ndGggPSBwYXR0ZXJuLmxlbmd0aDtcbiAgICAgICAgZm9yICh2YXIgaXNXaGl0ZSA9IHdoaXRlRmlyc3Q7IHggPCB3aWR0aDsgeCsrKSB7XG4gICAgICAgICAgICB2YXIgcGl4ZWwgPSBtYXRyaXguZ2V0KHgsIHJvdyk7XG4gICAgICAgICAgICBpZiAocGl4ZWwgIT09IGlzV2hpdGUpIHtcbiAgICAgICAgICAgICAgICBjb3VudGVyc1tjb3VudGVyUG9zaXRpb25dKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoY291bnRlclBvc2l0aW9uID09PSBwYXR0ZXJuTGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoRGV0ZWN0b3IucGF0dGVybk1hdGNoVmFyaWFuY2UoY291bnRlcnMsIHBhdHRlcm4sIERldGVjdG9yLk1BWF9JTkRJVklEVUFMX1ZBUklBTkNFKSA8IERldGVjdG9yLk1BWF9BVkdfVkFSSUFOQ0UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSW50MzJBcnJheShbcGF0dGVyblN0YXJ0LCB4XSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcGF0dGVyblN0YXJ0ICs9IGNvdW50ZXJzWzBdICsgY291bnRlcnNbMV07XG4gICAgICAgICAgICAgICAgICAgIFN5c3RlbV8xLmRlZmF1bHQuYXJyYXljb3B5KGNvdW50ZXJzLCAyLCBjb3VudGVycywgMCwgY291bnRlclBvc2l0aW9uIC0gMSk7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50ZXJzW2NvdW50ZXJQb3NpdGlvbiAtIDFdID0gMDtcbiAgICAgICAgICAgICAgICAgICAgY291bnRlcnNbY291bnRlclBvc2l0aW9uXSA9IDA7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50ZXJQb3NpdGlvbi0tO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY291bnRlclBvc2l0aW9uKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvdW50ZXJzW2NvdW50ZXJQb3NpdGlvbl0gPSAxO1xuICAgICAgICAgICAgICAgIGlzV2hpdGUgPSAhaXNXaGl0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoY291bnRlclBvc2l0aW9uID09PSBwYXR0ZXJuTGVuZ3RoIC0gMSAmJlxuICAgICAgICAgICAgRGV0ZWN0b3IucGF0dGVybk1hdGNoVmFyaWFuY2UoY291bnRlcnMsIHBhdHRlcm4sIERldGVjdG9yLk1BWF9JTkRJVklEVUFMX1ZBUklBTkNFKSA8IERldGVjdG9yLk1BWF9BVkdfVkFSSUFOQ0UpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgSW50MzJBcnJheShbcGF0dGVyblN0YXJ0LCB4IC0gMV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lcyBob3cgY2xvc2VseSBhIHNldCBvZiBvYnNlcnZlZCBjb3VudHMgb2YgcnVucyBvZiBibGFjay93aGl0ZVxuICAgICAqIHZhbHVlcyBtYXRjaGVzIGEgZ2l2ZW4gdGFyZ2V0IHBhdHRlcm4uIFRoaXMgaXMgcmVwb3J0ZWQgYXMgdGhlIHJhdGlvIG9mXG4gICAgICogdGhlIHRvdGFsIHZhcmlhbmNlIGZyb20gdGhlIGV4cGVjdGVkIHBhdHRlcm4gcHJvcG9ydGlvbnMgYWNyb3NzIGFsbFxuICAgICAqIHBhdHRlcm4gZWxlbWVudHMsIHRvIHRoZSBsZW5ndGggb2YgdGhlIHBhdHRlcm4uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY291bnRlcnMgb2JzZXJ2ZWQgY291bnRlcnNcbiAgICAgKiBAcGFyYW0gcGF0dGVybiBleHBlY3RlZCBwYXR0ZXJuXG4gICAgICogQHBhcmFtIG1heEluZGl2aWR1YWxWYXJpYW5jZSBUaGUgbW9zdCBhbnkgY291bnRlciBjYW4gZGlmZmVyIGJlZm9yZSB3ZSBnaXZlIHVwXG4gICAgICogQHJldHVybiByYXRpbyBvZiB0b3RhbCB2YXJpYW5jZSBiZXR3ZWVuIGNvdW50ZXJzIGFuZCBwYXR0ZXJuIGNvbXBhcmVkIHRvIHRvdGFsIHBhdHRlcm4gc2l6ZVxuICAgICAqL1xuICAgIERldGVjdG9yLnBhdHRlcm5NYXRjaFZhcmlhbmNlID0gZnVuY3Rpb24gKGNvdW50ZXJzLCBwYXR0ZXJuLCBtYXhJbmRpdmlkdWFsVmFyaWFuY2UpIHtcbiAgICAgICAgdmFyIG51bUNvdW50ZXJzID0gY291bnRlcnMubGVuZ3RoO1xuICAgICAgICB2YXIgdG90YWwgPSAwO1xuICAgICAgICB2YXIgcGF0dGVybkxlbmd0aCA9IDA7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtQ291bnRlcnM7IGkrKykge1xuICAgICAgICAgICAgdG90YWwgKz0gY291bnRlcnNbaV07XG4gICAgICAgICAgICBwYXR0ZXJuTGVuZ3RoICs9IHBhdHRlcm5baV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRvdGFsIDwgcGF0dGVybkxlbmd0aCkge1xuICAgICAgICAgICAgLy8gSWYgd2UgZG9uJ3QgZXZlbiBoYXZlIG9uZSBwaXhlbCBwZXIgdW5pdCBvZiBiYXIgd2lkdGgsIGFzc3VtZSB0aGlzXG4gICAgICAgICAgICAvLyBpcyB0b28gc21hbGwgdG8gcmVsaWFibHkgbWF0Y2gsIHNvIGZhaWw6XG4gICAgICAgICAgICByZXR1cm4gLypGbG9hdC5QT1NJVElWRV9JTkZJTklUWSovIEluZmluaXR5O1xuICAgICAgICB9XG4gICAgICAgIC8vIFdlJ3JlIGdvaW5nIHRvIGZha2UgZmxvYXRpbmctcG9pbnQgbWF0aCBpbiBpbnRlZ2Vycy4gV2UganVzdCBuZWVkIHRvIHVzZSBtb3JlIGJpdHMuXG4gICAgICAgIC8vIFNjYWxlIHVwIHBhdHRlcm5MZW5ndGggc28gdGhhdCBpbnRlcm1lZGlhdGUgdmFsdWVzIGJlbG93IGxpa2Ugc2NhbGVkQ291bnRlciB3aWxsIGhhdmVcbiAgICAgICAgLy8gbW9yZSBcInNpZ25pZmljYW50IGRpZ2l0c1wiLlxuICAgICAgICB2YXIgdW5pdEJhcldpZHRoID0gdG90YWwgLyBwYXR0ZXJuTGVuZ3RoO1xuICAgICAgICBtYXhJbmRpdmlkdWFsVmFyaWFuY2UgKj0gdW5pdEJhcldpZHRoO1xuICAgICAgICB2YXIgdG90YWxWYXJpYW5jZSA9IDAuMDtcbiAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCBudW1Db3VudGVyczsgeCsrKSB7XG4gICAgICAgICAgICB2YXIgY291bnRlciA9IGNvdW50ZXJzW3hdO1xuICAgICAgICAgICAgdmFyIHNjYWxlZFBhdHRlcm4gPSBwYXR0ZXJuW3hdICogdW5pdEJhcldpZHRoO1xuICAgICAgICAgICAgdmFyIHZhcmlhbmNlID0gY291bnRlciA+IHNjYWxlZFBhdHRlcm4gPyBjb3VudGVyIC0gc2NhbGVkUGF0dGVybiA6IHNjYWxlZFBhdHRlcm4gLSBjb3VudGVyO1xuICAgICAgICAgICAgaWYgKHZhcmlhbmNlID4gbWF4SW5kaXZpZHVhbFZhcmlhbmNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIC8qRmxvYXQuUE9TSVRJVkVfSU5GSU5JVFkqLyBJbmZpbml0eTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRvdGFsVmFyaWFuY2UgKz0gdmFyaWFuY2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRvdGFsVmFyaWFuY2UgLyB0b3RhbDtcbiAgICB9O1xuICAgIERldGVjdG9yLklOREVYRVNfU1RBUlRfUEFUVEVSTiA9IEludDMyQXJyYXkuZnJvbShbMCwgNCwgMSwgNV0pO1xuICAgIERldGVjdG9yLklOREVYRVNfU1RPUF9QQVRURVJOID0gSW50MzJBcnJheS5mcm9tKFs2LCAyLCA3LCAzXSk7XG4gICAgRGV0ZWN0b3IuTUFYX0FWR19WQVJJQU5DRSA9IDAuNDI7XG4gICAgRGV0ZWN0b3IuTUFYX0lORElWSURVQUxfVkFSSUFOQ0UgPSAwLjg7XG4gICAgLy8gQiBTIEIgUyBCIFMgQiBTIEJhci9TcGFjZSBwYXR0ZXJuXG4gICAgLy8gMTExMTExMTEgMCAxIDAgMSAwIDEgMDAwXG4gICAgRGV0ZWN0b3IuU1RBUlRfUEFUVEVSTiA9IEludDMyQXJyYXkuZnJvbShbOCwgMSwgMSwgMSwgMSwgMSwgMSwgM10pO1xuICAgIC8vIDExMTExMTEgMCAxIDAwMCAxIDAgMSAwMCAxXG4gICAgRGV0ZWN0b3IuU1RPUF9QQVRURVJOID0gSW50MzJBcnJheS5mcm9tKFs3LCAxLCAxLCAzLCAxLCAxLCAxLCAyLCAxXSk7XG4gICAgRGV0ZWN0b3IuTUFYX1BJWEVMX0RSSUZUID0gMztcbiAgICBEZXRlY3Rvci5NQVhfUEFUVEVSTl9EUklGVCA9IDU7XG4gICAgLy8gaWYgd2Ugc2V0IHRoZSB2YWx1ZSB0b28gbG93LCB0aGVuIHdlIGRvbid0IGRldGVjdCB0aGUgY29ycmVjdCBoZWlnaHQgb2YgdGhlIGJhciBpZiB0aGUgc3RhcnQgcGF0dGVybnMgYXJlIGRhbWFnZWQuXG4gICAgLy8gaWYgd2Ugc2V0IHRoZSB2YWx1ZSB0b28gaGlnaCwgdGhlbiB3ZSBtaWdodCBkZXRlY3QgdGhlIHN0YXJ0IHBhdHRlcm4gZnJvbSBhIG5laWdoYm9yIGJhcmNvZGUuXG4gICAgRGV0ZWN0b3IuU0tJUFBFRF9ST1dfQ09VTlRfTUFYID0gMjU7XG4gICAgLy8gQSBQREY0NzEgYmFyY29kZSBzaG91bGQgaGF2ZSBhdCBsZWFzdCAzIHJvd3MsIHdpdGggZWFjaCByb3cgYmVpbmcgPj0gMyB0aW1lcyB0aGUgbW9kdWxlIHdpZHRoLiBUaGVyZWZvcmUgaXQgc2hvdWxkIGJlIGF0IGxlYXN0XG4gICAgLy8gOSBwaXhlbHMgdGFsbC4gVG8gYmUgY29uc2VydmF0aXZlLCB3ZSB1c2UgYWJvdXQgaGFsZiB0aGUgc2l6ZSB0byBlbnN1cmUgd2UgZG9uJ3QgbWlzcyBpdC5cbiAgICBEZXRlY3Rvci5ST1dfU1RFUCA9IDU7XG4gICAgRGV0ZWN0b3IuQkFSQ09ERV9NSU5fSEVJR0hUID0gMTA7XG4gICAgcmV0dXJuIERldGVjdG9yO1xufSgpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IERldGVjdG9yO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RGV0ZWN0b3IuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuKiBDb3B5cmlnaHQgMjAxMiBaWGluZyBhdXRob3JzXG4qXG4qIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4qIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4qXG4qICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4qXG4qIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG52YXIgX192YWx1ZXMgPSAodGhpcyAmJiB0aGlzLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7XG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vLyBwYWNrYWdlIGNvbS5nb29nbGUuenhpbmcucGRmNDE3LmRlY29kZXIuZWM7XG52YXIgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEgPSByZXF1aXJlKFwiLi4vLi4vLi4vSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXCIpO1xudmFyIFN5c3RlbV8xID0gcmVxdWlyZShcIi4uLy4uLy4uL3V0aWwvU3lzdGVtXCIpO1xudmFyIFN0cmluZ0J1aWxkZXJfMSA9IHJlcXVpcmUoXCIuLi8uLi8uLi91dGlsL1N0cmluZ0J1aWxkZXJcIik7XG4vKipcbiAqIEBhdXRob3IgU2VhbiBPd2VuXG4gKiBAc2VlIGNvbS5nb29nbGUuenhpbmcuY29tbW9uLnJlZWRzb2xvbW9uLkdlbmVyaWNHRlBvbHlcbiAqL1xudmFyIE1vZHVsdXNQb2x5ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIE1vZHVsdXNQb2x5KGZpZWxkLCBjb2VmZmljaWVudHMpIHtcbiAgICAgICAgaWYgKGNvZWZmaWNpZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5maWVsZCA9IGZpZWxkO1xuICAgICAgICB2YXIgY29lZmZpY2llbnRzTGVuZ3RoID0gLyppbnQqLyBjb2VmZmljaWVudHMubGVuZ3RoO1xuICAgICAgICBpZiAoY29lZmZpY2llbnRzTGVuZ3RoID4gMSAmJiBjb2VmZmljaWVudHNbMF0gPT09IDApIHtcbiAgICAgICAgICAgIC8vIExlYWRpbmcgdGVybSBtdXN0IGJlIG5vbi16ZXJvIGZvciBhbnl0aGluZyBleGNlcHQgdGhlIGNvbnN0YW50IHBvbHlub21pYWwgXCIwXCJcbiAgICAgICAgICAgIHZhciBmaXJzdE5vblplcm8gPSAvKmludCovIDE7XG4gICAgICAgICAgICB3aGlsZSAoZmlyc3ROb25aZXJvIDwgY29lZmZpY2llbnRzTGVuZ3RoICYmIGNvZWZmaWNpZW50c1tmaXJzdE5vblplcm9dID09PSAwKSB7XG4gICAgICAgICAgICAgICAgZmlyc3ROb25aZXJvKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZmlyc3ROb25aZXJvID09PSBjb2VmZmljaWVudHNMZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvZWZmaWNpZW50cyA9IG5ldyBJbnQzMkFycmF5KFswXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvZWZmaWNpZW50cyA9IG5ldyBJbnQzMkFycmF5KGNvZWZmaWNpZW50c0xlbmd0aCAtIGZpcnN0Tm9uWmVybyk7XG4gICAgICAgICAgICAgICAgU3lzdGVtXzEuZGVmYXVsdC5hcnJheWNvcHkoY29lZmZpY2llbnRzLCBmaXJzdE5vblplcm8sIHRoaXMuY29lZmZpY2llbnRzLCAwLCB0aGlzLmNvZWZmaWNpZW50cy5sZW5ndGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jb2VmZmljaWVudHMgPSBjb2VmZmljaWVudHM7XG4gICAgICAgIH1cbiAgICB9XG4gICAgTW9kdWx1c1BvbHkucHJvdG90eXBlLmdldENvZWZmaWNpZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29lZmZpY2llbnRzO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHJldHVybiBkZWdyZWUgb2YgdGhpcyBwb2x5bm9taWFsXG4gICAgICovXG4gICAgTW9kdWx1c1BvbHkucHJvdG90eXBlLmdldERlZ3JlZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29lZmZpY2llbnRzLmxlbmd0aCAtIDE7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHRydWUgaWZmIHRoaXMgcG9seW5vbWlhbCBpcyB0aGUgbW9ub21pYWwgXCIwXCJcbiAgICAgKi9cbiAgICBNb2R1bHVzUG9seS5wcm90b3R5cGUuaXNaZXJvID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2VmZmljaWVudHNbMF0gPT09IDA7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIGNvZWZmaWNpZW50IG9mIHheZGVncmVlIHRlcm0gaW4gdGhpcyBwb2x5bm9taWFsXG4gICAgICovXG4gICAgTW9kdWx1c1BvbHkucHJvdG90eXBlLmdldENvZWZmaWNpZW50ID0gZnVuY3Rpb24gKGRlZ3JlZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2VmZmljaWVudHNbdGhpcy5jb2VmZmljaWVudHMubGVuZ3RoIC0gMSAtIGRlZ3JlZV07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIGV2YWx1YXRpb24gb2YgdGhpcyBwb2x5bm9taWFsIGF0IGEgZ2l2ZW4gcG9pbnRcbiAgICAgKi9cbiAgICBNb2R1bHVzUG9seS5wcm90b3R5cGUuZXZhbHVhdGVBdCA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgIHZhciBlXzEsIF9hO1xuICAgICAgICBpZiAoYSA9PT0gMCkge1xuICAgICAgICAgICAgLy8gSnVzdCByZXR1cm4gdGhlIHheMCBjb2VmZmljaWVudFxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q29lZmZpY2llbnQoMCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGEgPT09IDEpIHtcbiAgICAgICAgICAgIC8vIEp1c3QgdGhlIHN1bSBvZiB0aGUgY29lZmZpY2llbnRzXG4gICAgICAgICAgICB2YXIgc3VtID0gLyppbnQqLyAwO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKHRoaXMuY29lZmZpY2llbnRzKSwgX2MgPSBfYi5uZXh0KCk7ICFfYy5kb25lOyBfYyA9IF9iLm5leHQoKSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgY29lZmZpY2llbnQgPSBfYy52YWx1ZSAvKmludCovO1xuICAgICAgICAgICAgICAgICAgICBzdW0gPSB0aGlzLmZpZWxkLmFkZChzdW0sIGNvZWZmaWNpZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfVxuICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc3VtO1xuICAgICAgICB9XG4gICAgICAgIHZhciByZXN1bHQgPSAvKmludCovIHRoaXMuY29lZmZpY2llbnRzWzBdO1xuICAgICAgICB2YXIgc2l6ZSA9IC8qaW50Ki8gdGhpcy5jb2VmZmljaWVudHMubGVuZ3RoO1xuICAgICAgICBmb3IgKHZhciBpIC8qaW50Ki8gPSAxOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICByZXN1bHQgPSB0aGlzLmZpZWxkLmFkZCh0aGlzLmZpZWxkLm11bHRpcGx5KGEsIHJlc3VsdCksIHRoaXMuY29lZmZpY2llbnRzW2ldKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgTW9kdWx1c1BvbHkucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIChvdGhlcikge1xuICAgICAgICBpZiAoIXRoaXMuZmllbGQuZXF1YWxzKG90aGVyLmZpZWxkKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoJ01vZHVsdXNQb2x5cyBkbyBub3QgaGF2ZSBzYW1lIE1vZHVsdXNHRiBmaWVsZCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzWmVybygpKSB7XG4gICAgICAgICAgICByZXR1cm4gb3RoZXI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG90aGVyLmlzWmVybygpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuICAgICAgICB2YXIgc21hbGxlckNvZWZmaWNpZW50cyA9IHRoaXMuY29lZmZpY2llbnRzO1xuICAgICAgICB2YXIgbGFyZ2VyQ29lZmZpY2llbnRzID0gb3RoZXIuY29lZmZpY2llbnRzO1xuICAgICAgICBpZiAoc21hbGxlckNvZWZmaWNpZW50cy5sZW5ndGggPiBsYXJnZXJDb2VmZmljaWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICB2YXIgdGVtcCA9IHNtYWxsZXJDb2VmZmljaWVudHM7XG4gICAgICAgICAgICBzbWFsbGVyQ29lZmZpY2llbnRzID0gbGFyZ2VyQ29lZmZpY2llbnRzO1xuICAgICAgICAgICAgbGFyZ2VyQ29lZmZpY2llbnRzID0gdGVtcDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc3VtRGlmZiA9IG5ldyBJbnQzMkFycmF5KGxhcmdlckNvZWZmaWNpZW50cy5sZW5ndGgpO1xuICAgICAgICB2YXIgbGVuZ3RoRGlmZiA9IC8qaW50Ki8gbGFyZ2VyQ29lZmZpY2llbnRzLmxlbmd0aCAtIHNtYWxsZXJDb2VmZmljaWVudHMubGVuZ3RoO1xuICAgICAgICAvLyBDb3B5IGhpZ2gtb3JkZXIgdGVybXMgb25seSBmb3VuZCBpbiBoaWdoZXItZGVncmVlIHBvbHlub21pYWwncyBjb2VmZmljaWVudHNcbiAgICAgICAgU3lzdGVtXzEuZGVmYXVsdC5hcnJheWNvcHkobGFyZ2VyQ29lZmZpY2llbnRzLCAwLCBzdW1EaWZmLCAwLCBsZW5ndGhEaWZmKTtcbiAgICAgICAgZm9yICh2YXIgaSAvKmludCovID0gbGVuZ3RoRGlmZjsgaSA8IGxhcmdlckNvZWZmaWNpZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgc3VtRGlmZltpXSA9IHRoaXMuZmllbGQuYWRkKHNtYWxsZXJDb2VmZmljaWVudHNbaSAtIGxlbmd0aERpZmZdLCBsYXJnZXJDb2VmZmljaWVudHNbaV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgTW9kdWx1c1BvbHkodGhpcy5maWVsZCwgc3VtRGlmZik7XG4gICAgfTtcbiAgICBNb2R1bHVzUG9seS5wcm90b3R5cGUuc3VidHJhY3QgPSBmdW5jdGlvbiAob3RoZXIpIHtcbiAgICAgICAgaWYgKCF0aGlzLmZpZWxkLmVxdWFscyhvdGhlci5maWVsZCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCdNb2R1bHVzUG9seXMgZG8gbm90IGhhdmUgc2FtZSBNb2R1bHVzR0YgZmllbGQnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3RoZXIuaXNaZXJvKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmFkZChvdGhlci5uZWdhdGl2ZSgpKTtcbiAgICB9O1xuICAgIE1vZHVsdXNQb2x5LnByb3RvdHlwZS5tdWx0aXBseSA9IGZ1bmN0aW9uIChvdGhlcikge1xuICAgICAgICBpZiAob3RoZXIgaW5zdGFuY2VvZiBNb2R1bHVzUG9seSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubXVsdGlwbHlPdGhlcihvdGhlcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMubXVsdGlwbHlTY2FsYXIob3RoZXIpO1xuICAgIH07XG4gICAgTW9kdWx1c1BvbHkucHJvdG90eXBlLm11bHRpcGx5T3RoZXIgPSBmdW5jdGlvbiAob3RoZXIpIHtcbiAgICAgICAgaWYgKCF0aGlzLmZpZWxkLmVxdWFscyhvdGhlci5maWVsZCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCdNb2R1bHVzUG9seXMgZG8gbm90IGhhdmUgc2FtZSBNb2R1bHVzR0YgZmllbGQnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc1plcm8oKSB8fCBvdGhlci5pc1plcm8oKSkge1xuICAgICAgICAgICAgLy8gcmV0dXJuIHRoaXMuZmllbGQuZ2V0WmVybygpO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBNb2R1bHVzUG9seSh0aGlzLmZpZWxkLCBuZXcgSW50MzJBcnJheShbMF0pKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYUNvZWZmaWNpZW50cyA9IHRoaXMuY29lZmZpY2llbnRzO1xuICAgICAgICB2YXIgYUxlbmd0aCA9IC8qaW50Ki8gYUNvZWZmaWNpZW50cy5sZW5ndGg7XG4gICAgICAgIHZhciBiQ29lZmZpY2llbnRzID0gb3RoZXIuY29lZmZpY2llbnRzO1xuICAgICAgICB2YXIgYkxlbmd0aCA9IC8qaW50Ki8gYkNvZWZmaWNpZW50cy5sZW5ndGg7XG4gICAgICAgIHZhciBwcm9kdWN0ID0gbmV3IEludDMyQXJyYXkoYUxlbmd0aCArIGJMZW5ndGggLSAxKTtcbiAgICAgICAgZm9yICh2YXIgaSAvKmludCovID0gMDsgaSA8IGFMZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIGFDb2VmZiA9IC8qaW50Ki8gYUNvZWZmaWNpZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIGogLyppbnQqLyA9IDA7IGogPCBiTGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICBwcm9kdWN0W2kgKyBqXSA9IHRoaXMuZmllbGQuYWRkKHByb2R1Y3RbaSArIGpdLCB0aGlzLmZpZWxkLm11bHRpcGx5KGFDb2VmZiwgYkNvZWZmaWNpZW50c1tqXSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgTW9kdWx1c1BvbHkodGhpcy5maWVsZCwgcHJvZHVjdCk7XG4gICAgfTtcbiAgICBNb2R1bHVzUG9seS5wcm90b3R5cGUubmVnYXRpdmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBzaXplID0gLyppbnQqLyB0aGlzLmNvZWZmaWNpZW50cy5sZW5ndGg7XG4gICAgICAgIHZhciBuZWdhdGl2ZUNvZWZmaWNpZW50cyA9IG5ldyBJbnQzMkFycmF5KHNpemUpO1xuICAgICAgICBmb3IgKHZhciBpIC8qaW50Ki8gPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICBuZWdhdGl2ZUNvZWZmaWNpZW50c1tpXSA9IHRoaXMuZmllbGQuc3VidHJhY3QoMCwgdGhpcy5jb2VmZmljaWVudHNbaV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgTW9kdWx1c1BvbHkodGhpcy5maWVsZCwgbmVnYXRpdmVDb2VmZmljaWVudHMpO1xuICAgIH07XG4gICAgTW9kdWx1c1BvbHkucHJvdG90eXBlLm11bHRpcGx5U2NhbGFyID0gZnVuY3Rpb24gKHNjYWxhcikge1xuICAgICAgICBpZiAoc2NhbGFyID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IE1vZHVsdXNQb2x5KHRoaXMuZmllbGQsIG5ldyBJbnQzMkFycmF5KFswXSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzY2FsYXIgPT09IDEpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzaXplID0gLyppbnQqLyB0aGlzLmNvZWZmaWNpZW50cy5sZW5ndGg7XG4gICAgICAgIHZhciBwcm9kdWN0ID0gbmV3IEludDMyQXJyYXkoc2l6ZSk7XG4gICAgICAgIGZvciAodmFyIGkgLyppbnQqLyA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgICAgIHByb2R1Y3RbaV0gPSB0aGlzLmZpZWxkLm11bHRpcGx5KHRoaXMuY29lZmZpY2llbnRzW2ldLCBzY2FsYXIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgTW9kdWx1c1BvbHkodGhpcy5maWVsZCwgcHJvZHVjdCk7XG4gICAgfTtcbiAgICBNb2R1bHVzUG9seS5wcm90b3R5cGUubXVsdGlwbHlCeU1vbm9taWFsID0gZnVuY3Rpb24gKGRlZ3JlZSwgY29lZmZpY2llbnQpIHtcbiAgICAgICAgaWYgKGRlZ3JlZSA8IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvZWZmaWNpZW50ID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IE1vZHVsdXNQb2x5KHRoaXMuZmllbGQsIG5ldyBJbnQzMkFycmF5KFswXSkpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzaXplID0gLyppbnQqLyB0aGlzLmNvZWZmaWNpZW50cy5sZW5ndGg7XG4gICAgICAgIHZhciBwcm9kdWN0ID0gbmV3IEludDMyQXJyYXkoc2l6ZSArIGRlZ3JlZSk7XG4gICAgICAgIGZvciAodmFyIGkgLyppbnQqLyA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgICAgIHByb2R1Y3RbaV0gPSB0aGlzLmZpZWxkLm11bHRpcGx5KHRoaXMuY29lZmZpY2llbnRzW2ldLCBjb2VmZmljaWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBNb2R1bHVzUG9seSh0aGlzLmZpZWxkLCBwcm9kdWN0KTtcbiAgICB9O1xuICAgIC8qXG4gICAgTW9kdWx1c1BvbHlbXSBkaXZpZGUob3RoZXI6IE1vZHVsdXNQb2x5KSB7XG4gICAgICBpZiAoIWZpZWxkLmVxdWFscyhvdGhlci5maWVsZCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbihcIk1vZHVsdXNQb2x5cyBkbyBub3QgaGF2ZSBzYW1lIE1vZHVsdXNHRiBmaWVsZFwiKTtcbiAgICAgIH1cbiAgICAgIGlmIChvdGhlci5pc1plcm8oKSkge1xuICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKFwiRGl2aWRlIGJ5IDBcIik7XG4gICAgICB9XG4gIFxuICAgICAgbGV0IHF1b3RpZW50OiBNb2R1bHVzUG9seSA9IGZpZWxkLmdldFplcm8oKTtcbiAgICAgIGxldCByZW1haW5kZXI6IE1vZHVsdXNQb2x5ID0gdGhpcztcbiAgXG4gICAgICBsZXQgZGVub21pbmF0b3JMZWFkaW5nVGVybTogLyppbnQvIG51bWJlciA9IG90aGVyLmdldENvZWZmaWNpZW50KG90aGVyLmdldERlZ3JlZSgpKTtcbiAgICAgIGxldCBpbnZlcnNlRGVub21pbmF0b3JMZWFkaW5nVGVybTogLyppbnQvIG51bWJlciA9IGZpZWxkLmludmVyc2UoZGVub21pbmF0b3JMZWFkaW5nVGVybSk7XG4gIFxuICAgICAgd2hpbGUgKHJlbWFpbmRlci5nZXREZWdyZWUoKSA+PSBvdGhlci5nZXREZWdyZWUoKSAmJiAhcmVtYWluZGVyLmlzWmVybygpKSB7XG4gICAgICAgIGxldCBkZWdyZWVEaWZmZXJlbmNlOiAvKmludC8gbnVtYmVyID0gcmVtYWluZGVyLmdldERlZ3JlZSgpIC0gb3RoZXIuZ2V0RGVncmVlKCk7XG4gICAgICAgIGxldCBzY2FsZTogLyppbnQvIG51bWJlciA9IGZpZWxkLm11bHRpcGx5KHJlbWFpbmRlci5nZXRDb2VmZmljaWVudChyZW1haW5kZXIuZ2V0RGVncmVlKCkpLCBpbnZlcnNlRGVub21pbmF0b3JMZWFkaW5nVGVybSk7XG4gICAgICAgIGxldCB0ZXJtOiBNb2R1bHVzUG9seSA9IG90aGVyLm11bHRpcGx5QnlNb25vbWlhbChkZWdyZWVEaWZmZXJlbmNlLCBzY2FsZSk7XG4gICAgICAgIGxldCBpdGVyYXRpb25RdW90aWVudDogTW9kdWx1c1BvbHkgPSBmaWVsZC5idWlsZE1vbm9taWFsKGRlZ3JlZURpZmZlcmVuY2UsIHNjYWxlKTtcbiAgICAgICAgcXVvdGllbnQgPSBxdW90aWVudC5hZGQoaXRlcmF0aW9uUXVvdGllbnQpO1xuICAgICAgICByZW1haW5kZXIgPSByZW1haW5kZXIuc3VidHJhY3QodGVybSk7XG4gICAgICB9XG4gIFxuICAgICAgcmV0dXJuIG5ldyBNb2R1bHVzUG9seVtdIHsgcXVvdGllbnQsIHJlbWFpbmRlciB9O1xuICAgIH1cbiAgICAqL1xuICAgIC8vIEBPdmVycmlkZVxuICAgIE1vZHVsdXNQb2x5LnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWlsZGVyXzEuZGVmYXVsdCggLyo4ICogdGhpcy5nZXREZWdyZWUoKSovKTsgLy8gZHluYW1pYyBzdHJpbmcgc2l6ZSBpbiBKU1xuICAgICAgICBmb3IgKHZhciBkZWdyZWUgLyppbnQqLyA9IHRoaXMuZ2V0RGVncmVlKCk7IGRlZ3JlZSA+PSAwOyBkZWdyZWUtLSkge1xuICAgICAgICAgICAgdmFyIGNvZWZmaWNpZW50ID0gLyppbnQqLyB0aGlzLmdldENvZWZmaWNpZW50KGRlZ3JlZSk7XG4gICAgICAgICAgICBpZiAoY29lZmZpY2llbnQgIT09IDApIHtcbiAgICAgICAgICAgICAgICBpZiAoY29lZmZpY2llbnQgPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAtICcpO1xuICAgICAgICAgICAgICAgICAgICBjb2VmZmljaWVudCA9IC1jb2VmZmljaWVudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoKCkgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgKyAnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZGVncmVlID09PSAwIHx8IGNvZWZmaWNpZW50ICE9PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY29lZmZpY2llbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZGVncmVlICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkZWdyZWUgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3gnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3heJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGRlZ3JlZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpO1xuICAgIH07XG4gICAgcmV0dXJuIE1vZHVsdXNQb2x5O1xufSgpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IE1vZHVsdXNQb2x5O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TW9kdWx1c1BvbHkuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEgPSByZXF1aXJlKFwiLi4vLi4vLi4vSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXCIpO1xudmFyIEFyaXRobWV0aWNFeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuLi8uLi8uLi9Bcml0aG1ldGljRXhjZXB0aW9uXCIpO1xudmFyIE1vZHVsdXNCYXNlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIE1vZHVsdXNCYXNlKCkge1xuICAgIH1cbiAgICBNb2R1bHVzQmFzZS5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIChhICsgYikgJSB0aGlzLm1vZHVsdXM7XG4gICAgfTtcbiAgICBNb2R1bHVzQmFzZS5wcm90b3R5cGUuc3VidHJhY3QgPSBmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICByZXR1cm4gKHRoaXMubW9kdWx1cyArIGEgLSBiKSAlIHRoaXMubW9kdWx1cztcbiAgICB9O1xuICAgIE1vZHVsdXNCYXNlLnByb3RvdHlwZS5leHAgPSBmdW5jdGlvbiAoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5leHBUYWJsZVthXTtcbiAgICB9O1xuICAgIE1vZHVsdXNCYXNlLnByb3RvdHlwZS5sb2cgPSBmdW5jdGlvbiAoYSkge1xuICAgICAgICBpZiAoYSA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5sb2dUYWJsZVthXTtcbiAgICB9O1xuICAgIE1vZHVsdXNCYXNlLnByb3RvdHlwZS5pbnZlcnNlID0gZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgaWYgKGEgPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBBcml0aG1ldGljRXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmV4cFRhYmxlW3RoaXMubW9kdWx1cyAtIHRoaXMubG9nVGFibGVbYV0gLSAxXTtcbiAgICB9O1xuICAgIE1vZHVsdXNCYXNlLnByb3RvdHlwZS5tdWx0aXBseSA9IGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgIGlmIChhID09PSAwIHx8IGIgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmV4cFRhYmxlWyh0aGlzLmxvZ1RhYmxlW2FdICsgdGhpcy5sb2dUYWJsZVtiXSkgJSAodGhpcy5tb2R1bHVzIC0gMSldO1xuICAgIH07XG4gICAgTW9kdWx1c0Jhc2UucHJvdG90eXBlLmdldFNpemUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vZHVsdXM7XG4gICAgfTtcbiAgICBNb2R1bHVzQmFzZS5wcm90b3R5cGUuZXF1YWxzID0gZnVuY3Rpb24gKG8pIHtcbiAgICAgICAgcmV0dXJuIG8gPT09IHRoaXM7XG4gICAgfTtcbiAgICByZXR1cm4gTW9kdWx1c0Jhc2U7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gTW9kdWx1c0Jhc2U7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Nb2R1bHVzQmFzZS5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8qXG4gKiBDb3B5cmlnaHQgMjAxMiBaWGluZyBhdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vLyBwYWNrYWdlIGNvbS5nb29nbGUuenhpbmcucGRmNDE3LmRlY29kZXIuZWM7XG4vLyBpbXBvcnQgY29tLmdvb2dsZS56eGluZy5wZGY0MTcuUERGNDE3Q29tbW9uO1xudmFyIFBERjQxN0NvbW1vbl8xID0gcmVxdWlyZShcIi4uLy4uL1BERjQxN0NvbW1vblwiKTtcbnZhciBNb2R1bHVzUG9seV8xID0gcmVxdWlyZShcIi4vTW9kdWx1c1BvbHlcIik7XG52YXIgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEgPSByZXF1aXJlKFwiLi4vLi4vLi4vSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXCIpO1xudmFyIE1vZHVsdXNCYXNlXzEgPSByZXF1aXJlKFwiLi9Nb2R1bHVzQmFzZVwiKTtcbi8qKlxuICogPHA+QSBmaWVsZCBiYXNlZCBvbiBwb3dlcnMgb2YgYSBnZW5lcmF0b3IgaW50ZWdlciwgbW9kdWxvIHNvbWUgbW9kdWx1cy48L3A+XG4gKlxuICogQGF1dGhvciBTZWFuIE93ZW5cbiAqIEBzZWUgY29tLmdvb2dsZS56eGluZy5jb21tb24ucmVlZHNvbG9tb24uR2VuZXJpY0dGXG4gKi9cbnZhciBNb2R1bHVzR0YgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKE1vZHVsdXNHRiwgX3N1cGVyKTtcbiAgICAvLyBwcml2YXRlIC8qZmluYWwqLyBtb2R1bHVzOiAvKmludCovIG51bWJlcjtcbiAgICBmdW5jdGlvbiBNb2R1bHVzR0YobW9kdWx1cywgZ2VuZXJhdG9yKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLm1vZHVsdXMgPSBtb2R1bHVzO1xuICAgICAgICBfdGhpcy5leHBUYWJsZSA9IG5ldyBJbnQzMkFycmF5KG1vZHVsdXMpO1xuICAgICAgICBfdGhpcy5sb2dUYWJsZSA9IG5ldyBJbnQzMkFycmF5KG1vZHVsdXMpO1xuICAgICAgICB2YXIgeCA9IC8qaW50Ki8gMTtcbiAgICAgICAgZm9yICh2YXIgaSAvKmludCovID0gMDsgaSA8IG1vZHVsdXM7IGkrKykge1xuICAgICAgICAgICAgX3RoaXMuZXhwVGFibGVbaV0gPSB4O1xuICAgICAgICAgICAgeCA9ICh4ICogZ2VuZXJhdG9yKSAlIG1vZHVsdXM7XG4gICAgICAgIH1cbiAgICAgICAgZm9yICh2YXIgaSAvKmludCovID0gMDsgaSA8IG1vZHVsdXMgLSAxOyBpKyspIHtcbiAgICAgICAgICAgIF90aGlzLmxvZ1RhYmxlW190aGlzLmV4cFRhYmxlW2ldXSA9IGk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gbG9nVGFibGVbMF0gPT0gMCBidXQgdGhpcyBzaG91bGQgbmV2ZXIgYmUgdXNlZFxuICAgICAgICBfdGhpcy56ZXJvID0gbmV3IE1vZHVsdXNQb2x5XzEuZGVmYXVsdChfdGhpcywgbmV3IEludDMyQXJyYXkoWzBdKSk7XG4gICAgICAgIF90aGlzLm9uZSA9IG5ldyBNb2R1bHVzUG9seV8xLmRlZmF1bHQoX3RoaXMsIG5ldyBJbnQzMkFycmF5KFsxXSkpO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIE1vZHVsdXNHRi5wcm90b3R5cGUuZ2V0WmVybyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuemVybztcbiAgICB9O1xuICAgIE1vZHVsdXNHRi5wcm90b3R5cGUuZ2V0T25lID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vbmU7XG4gICAgfTtcbiAgICBNb2R1bHVzR0YucHJvdG90eXBlLmJ1aWxkTW9ub21pYWwgPSBmdW5jdGlvbiAoZGVncmVlLCBjb2VmZmljaWVudCkge1xuICAgICAgICBpZiAoZGVncmVlIDwgMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29lZmZpY2llbnQgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnplcm87XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGNvZWZmaWNpZW50cyA9IG5ldyBJbnQzMkFycmF5KGRlZ3JlZSArIDEpO1xuICAgICAgICBjb2VmZmljaWVudHNbMF0gPSBjb2VmZmljaWVudDtcbiAgICAgICAgcmV0dXJuIG5ldyBNb2R1bHVzUG9seV8xLmRlZmF1bHQodGhpcywgY29lZmZpY2llbnRzKTtcbiAgICB9O1xuICAgIE1vZHVsdXNHRi5QREY0MTdfR0YgPSBuZXcgTW9kdWx1c0dGKFBERjQxN0NvbW1vbl8xLmRlZmF1bHQuTlVNQkVSX09GX0NPREVXT1JEUywgMyk7XG4gICAgcmV0dXJuIE1vZHVsdXNHRjtcbn0oTW9kdWx1c0Jhc2VfMS5kZWZhdWx0KSk7XG5leHBvcnRzLmRlZmF1bHQgPSBNb2R1bHVzR0Y7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Nb2R1bHVzR0YuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuKiBDb3B5cmlnaHQgMjAxMiBaWGluZyBhdXRob3JzXG4qXG4qIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4qIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4qXG4qICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4qXG4qIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG52YXIgX192YWx1ZXMgPSAodGhpcyAmJiB0aGlzLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7XG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vLyBwYWNrYWdlIGNvbS5nb29nbGUuenhpbmcucGRmNDE3LmRlY29kZXIuZWM7XG4vLyBpbXBvcnQgY29tLmdvb2dsZS56eGluZy5DaGVja3N1bUV4Y2VwdGlvbjtcbnZhciBDaGVja3N1bUV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4uLy4uLy4uL0NoZWNrc3VtRXhjZXB0aW9uXCIpO1xudmFyIE1vZHVsdXNQb2x5XzEgPSByZXF1aXJlKFwiLi9Nb2R1bHVzUG9seVwiKTtcbnZhciBNb2R1bHVzR0ZfMSA9IHJlcXVpcmUoXCIuL01vZHVsdXNHRlwiKTtcbi8qKlxuICogPHA+UERGNDE3IGVycm9yIGNvcnJlY3Rpb24gaW1wbGVtZW50YXRpb24uPC9wPlxuICpcbiAqIDxwPlRoaXMgPGEgaHJlZj1cImh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVlZCVFMiU4MCU5M1NvbG9tb25fZXJyb3JfY29ycmVjdGlvbiNFeGFtcGxlXCI+ZXhhbXBsZTwvYT5cbiAqIGlzIHF1aXRlIHVzZWZ1bCBpbiB1bmRlcnN0YW5kaW5nIHRoZSBhbGdvcml0aG0uPC9wPlxuICpcbiAqIEBhdXRob3IgU2VhbiBPd2VuXG4gKiBAc2VlIGNvbS5nb29nbGUuenhpbmcuY29tbW9uLnJlZWRzb2xvbW9uLlJlZWRTb2xvbW9uRGVjb2RlclxuICovXG52YXIgRXJyb3JDb3JyZWN0aW9uID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEVycm9yQ29ycmVjdGlvbigpIHtcbiAgICAgICAgdGhpcy5maWVsZCA9IE1vZHVsdXNHRl8xLmRlZmF1bHQuUERGNDE3X0dGO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gcmVjZWl2ZWQgcmVjZWl2ZWQgY29kZXdvcmRzXG4gICAgICogQHBhcmFtIG51bUVDQ29kZXdvcmRzIG51bWJlciBvZiB0aG9zZSBjb2Rld29yZHMgdXNlZCBmb3IgRUNcbiAgICAgKiBAcGFyYW0gZXJhc3VyZXMgbG9jYXRpb24gb2YgZXJhc3VyZXNcbiAgICAgKiBAcmV0dXJuIG51bWJlciBvZiBlcnJvcnNcbiAgICAgKiBAdGhyb3dzIENoZWNrc3VtRXhjZXB0aW9uIGlmIGVycm9ycyBjYW5ub3QgYmUgY29ycmVjdGVkLCBtYXliZSBiZWNhdXNlIG9mIHRvbyBtYW55IGVycm9yc1xuICAgICAqL1xuICAgIEVycm9yQ29ycmVjdGlvbi5wcm90b3R5cGUuZGVjb2RlID0gZnVuY3Rpb24gKHJlY2VpdmVkLCBudW1FQ0NvZGV3b3JkcywgZXJhc3VyZXMpIHtcbiAgICAgICAgdmFyIGVfMSwgX2E7XG4gICAgICAgIHZhciBwb2x5ID0gbmV3IE1vZHVsdXNQb2x5XzEuZGVmYXVsdCh0aGlzLmZpZWxkLCByZWNlaXZlZCk7XG4gICAgICAgIHZhciBTID0gbmV3IEludDMyQXJyYXkobnVtRUNDb2Rld29yZHMpO1xuICAgICAgICB2YXIgZXJyb3IgPSBmYWxzZTtcbiAgICAgICAgZm9yICh2YXIgaSAvKmludCovID0gbnVtRUNDb2Rld29yZHM7IGkgPiAwOyBpLS0pIHtcbiAgICAgICAgICAgIHZhciBldmFsdWF0aW9uID0gcG9seS5ldmFsdWF0ZUF0KHRoaXMuZmllbGQuZXhwKGkpKTtcbiAgICAgICAgICAgIFNbbnVtRUNDb2Rld29yZHMgLSBpXSA9IGV2YWx1YXRpb247XG4gICAgICAgICAgICBpZiAoZXZhbHVhdGlvbiAhPT0gMCkge1xuICAgICAgICAgICAgICAgIGVycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICB2YXIga25vd25FcnJvcnMgPSB0aGlzLmZpZWxkLmdldE9uZSgpO1xuICAgICAgICBpZiAoZXJhc3VyZXMgIT0gbnVsbCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBlcmFzdXJlc18xID0gX192YWx1ZXMoZXJhc3VyZXMpLCBlcmFzdXJlc18xXzEgPSBlcmFzdXJlc18xLm5leHQoKTsgIWVyYXN1cmVzXzFfMS5kb25lOyBlcmFzdXJlc18xXzEgPSBlcmFzdXJlc18xLm5leHQoKSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgZXJhc3VyZSA9IGVyYXN1cmVzXzFfMS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSB0aGlzLmZpZWxkLmV4cChyZWNlaXZlZC5sZW5ndGggLSAxIC0gZXJhc3VyZSk7XG4gICAgICAgICAgICAgICAgICAgIC8vIEFkZCAoMSAtIGJ4KSB0ZXJtOlxuICAgICAgICAgICAgICAgICAgICB2YXIgdGVybSA9IG5ldyBNb2R1bHVzUG9seV8xLmRlZmF1bHQodGhpcy5maWVsZCwgbmV3IEludDMyQXJyYXkoW3RoaXMuZmllbGQuc3VidHJhY3QoMCwgYiksIDFdKSk7XG4gICAgICAgICAgICAgICAgICAgIGtub3duRXJyb3JzID0ga25vd25FcnJvcnMubXVsdGlwbHkodGVybSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH1cbiAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlcmFzdXJlc18xXzEgJiYgIWVyYXN1cmVzXzFfMS5kb25lICYmIChfYSA9IGVyYXN1cmVzXzEucmV0dXJuKSkgX2EuY2FsbChlcmFzdXJlc18xKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHZhciBzeW5kcm9tZSA9IG5ldyBNb2R1bHVzUG9seV8xLmRlZmF1bHQodGhpcy5maWVsZCwgUyk7XG4gICAgICAgIC8vIHN5bmRyb21lID0gc3luZHJvbWUubXVsdGlwbHkoa25vd25FcnJvcnMpO1xuICAgICAgICB2YXIgc2lnbWFPbWVnYSA9IHRoaXMucnVuRXVjbGlkZWFuQWxnb3JpdGhtKHRoaXMuZmllbGQuYnVpbGRNb25vbWlhbChudW1FQ0NvZGV3b3JkcywgMSksIHN5bmRyb21lLCBudW1FQ0NvZGV3b3Jkcyk7XG4gICAgICAgIHZhciBzaWdtYSA9IHNpZ21hT21lZ2FbMF07XG4gICAgICAgIHZhciBvbWVnYSA9IHNpZ21hT21lZ2FbMV07XG4gICAgICAgIC8vIHNpZ21hID0gc2lnbWEubXVsdGlwbHkoa25vd25FcnJvcnMpO1xuICAgICAgICB2YXIgZXJyb3JMb2NhdGlvbnMgPSB0aGlzLmZpbmRFcnJvckxvY2F0aW9ucyhzaWdtYSk7XG4gICAgICAgIHZhciBlcnJvck1hZ25pdHVkZXMgPSB0aGlzLmZpbmRFcnJvck1hZ25pdHVkZXMob21lZ2EsIHNpZ21hLCBlcnJvckxvY2F0aW9ucyk7XG4gICAgICAgIGZvciAodmFyIGkgLyppbnQqLyA9IDA7IGkgPCBlcnJvckxvY2F0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0gcmVjZWl2ZWQubGVuZ3RoIC0gMSAtIHRoaXMuZmllbGQubG9nKGVycm9yTG9jYXRpb25zW2ldKTtcbiAgICAgICAgICAgIGlmIChwb3NpdGlvbiA8IDApIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBDaGVja3N1bUV4Y2VwdGlvbl8xLmRlZmF1bHQuZ2V0Q2hlY2tzdW1JbnN0YW5jZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVjZWl2ZWRbcG9zaXRpb25dID0gdGhpcy5maWVsZC5zdWJ0cmFjdChyZWNlaXZlZFtwb3NpdGlvbl0sIGVycm9yTWFnbml0dWRlc1tpXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVycm9yTG9jYXRpb25zLmxlbmd0aDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIE1vZHVsdXNQb2x5XG4gICAgICogQHBhcmFtIGFcbiAgICAgKiBAcGFyYW0gTW9kdWx1c1BvbHlcbiAgICAgKiBAcGFyYW0gYlxuICAgICAqIEBwYXJhbSBpbnRcbiAgICAgKiBAcGFyYW0gUlxuICAgICAqIEB0aHJvd3MgQ2hlY2tzdW1FeGNlcHRpb25cbiAgICAgKi9cbiAgICBFcnJvckNvcnJlY3Rpb24ucHJvdG90eXBlLnJ1bkV1Y2xpZGVhbkFsZ29yaXRobSA9IGZ1bmN0aW9uIChhLCBiLCBSKSB7XG4gICAgICAgIC8vIEFzc3VtZSBhJ3MgZGVncmVlIGlzID49IGInc1xuICAgICAgICBpZiAoYS5nZXREZWdyZWUoKSA8IGIuZ2V0RGVncmVlKCkpIHtcbiAgICAgICAgICAgIHZhciB0ZW1wID0gYTtcbiAgICAgICAgICAgIGEgPSBiO1xuICAgICAgICAgICAgYiA9IHRlbXA7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJMYXN0ID0gYTtcbiAgICAgICAgdmFyIHIgPSBiO1xuICAgICAgICB2YXIgdExhc3QgPSB0aGlzLmZpZWxkLmdldFplcm8oKTtcbiAgICAgICAgdmFyIHQgPSB0aGlzLmZpZWxkLmdldE9uZSgpO1xuICAgICAgICAvLyBSdW4gRXVjbGlkZWFuIGFsZ29yaXRobSB1bnRpbCByJ3MgZGVncmVlIGlzIGxlc3MgdGhhbiBSLzJcbiAgICAgICAgd2hpbGUgKHIuZ2V0RGVncmVlKCkgPj0gTWF0aC5yb3VuZChSIC8gMikpIHtcbiAgICAgICAgICAgIHZhciByTGFzdExhc3QgPSByTGFzdDtcbiAgICAgICAgICAgIHZhciB0TGFzdExhc3QgPSB0TGFzdDtcbiAgICAgICAgICAgIHJMYXN0ID0gcjtcbiAgICAgICAgICAgIHRMYXN0ID0gdDtcbiAgICAgICAgICAgIC8vIERpdmlkZSByTGFzdExhc3QgYnkgckxhc3QsIHdpdGggcXVvdGllbnQgaW4gcSBhbmQgcmVtYWluZGVyIGluIHJcbiAgICAgICAgICAgIGlmIChyTGFzdC5pc1plcm8oKSkge1xuICAgICAgICAgICAgICAgIC8vIE9vcHMsIEV1Y2xpZGVhbiBhbGdvcml0aG0gYWxyZWFkeSB0ZXJtaW5hdGVkP1xuICAgICAgICAgICAgICAgIHRocm93IENoZWNrc3VtRXhjZXB0aW9uXzEuZGVmYXVsdC5nZXRDaGVja3N1bUluc3RhbmNlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByID0gckxhc3RMYXN0O1xuICAgICAgICAgICAgdmFyIHEgPSB0aGlzLmZpZWxkLmdldFplcm8oKTtcbiAgICAgICAgICAgIHZhciBkZW5vbWluYXRvckxlYWRpbmdUZXJtID0gckxhc3QuZ2V0Q29lZmZpY2llbnQockxhc3QuZ2V0RGVncmVlKCkpO1xuICAgICAgICAgICAgdmFyIGRsdEludmVyc2UgPSB0aGlzLmZpZWxkLmludmVyc2UoZGVub21pbmF0b3JMZWFkaW5nVGVybSk7XG4gICAgICAgICAgICB3aGlsZSAoci5nZXREZWdyZWUoKSA+PSByTGFzdC5nZXREZWdyZWUoKSAmJiAhci5pc1plcm8oKSkge1xuICAgICAgICAgICAgICAgIHZhciBkZWdyZWVEaWZmID0gci5nZXREZWdyZWUoKSAtIHJMYXN0LmdldERlZ3JlZSgpO1xuICAgICAgICAgICAgICAgIHZhciBzY2FsZSA9IHRoaXMuZmllbGQubXVsdGlwbHkoci5nZXRDb2VmZmljaWVudChyLmdldERlZ3JlZSgpKSwgZGx0SW52ZXJzZSk7XG4gICAgICAgICAgICAgICAgcSA9IHEuYWRkKHRoaXMuZmllbGQuYnVpbGRNb25vbWlhbChkZWdyZWVEaWZmLCBzY2FsZSkpO1xuICAgICAgICAgICAgICAgIHIgPSByLnN1YnRyYWN0KHJMYXN0Lm11bHRpcGx5QnlNb25vbWlhbChkZWdyZWVEaWZmLCBzY2FsZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdCA9IHEubXVsdGlwbHkodExhc3QpLnN1YnRyYWN0KHRMYXN0TGFzdCkubmVnYXRpdmUoKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc2lnbWFUaWxkZUF0WmVybyA9IHQuZ2V0Q29lZmZpY2llbnQoMCk7XG4gICAgICAgIGlmIChzaWdtYVRpbGRlQXRaZXJvID09PSAwKSB7XG4gICAgICAgICAgICB0aHJvdyBDaGVja3N1bUV4Y2VwdGlvbl8xLmRlZmF1bHQuZ2V0Q2hlY2tzdW1JbnN0YW5jZSgpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBpbnZlcnNlID0gdGhpcy5maWVsZC5pbnZlcnNlKHNpZ21hVGlsZGVBdFplcm8pO1xuICAgICAgICB2YXIgc2lnbWEgPSB0Lm11bHRpcGx5KGludmVyc2UpO1xuICAgICAgICB2YXIgb21lZ2EgPSByLm11bHRpcGx5KGludmVyc2UpO1xuICAgICAgICByZXR1cm4gW3NpZ21hLCBvbWVnYV07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSBlcnJvckxvY2F0b3JcbiAgICAgKiBAdGhyb3dzIENoZWNrc3VtRXhjZXB0aW9uXG4gICAgICovXG4gICAgRXJyb3JDb3JyZWN0aW9uLnByb3RvdHlwZS5maW5kRXJyb3JMb2NhdGlvbnMgPSBmdW5jdGlvbiAoZXJyb3JMb2NhdG9yKSB7XG4gICAgICAgIC8vIFRoaXMgaXMgYSBkaXJlY3QgYXBwbGljYXRpb24gb2YgQ2hpZW4ncyBzZWFyY2hcbiAgICAgICAgdmFyIG51bUVycm9ycyA9IGVycm9yTG9jYXRvci5nZXREZWdyZWUoKTtcbiAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBJbnQzMkFycmF5KG51bUVycm9ycyk7XG4gICAgICAgIHZhciBlID0gMDtcbiAgICAgICAgZm9yICh2YXIgaSAvKmludCovID0gMTsgaSA8IHRoaXMuZmllbGQuZ2V0U2l6ZSgpICYmIGUgPCBudW1FcnJvcnM7IGkrKykge1xuICAgICAgICAgICAgaWYgKGVycm9yTG9jYXRvci5ldmFsdWF0ZUF0KGkpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0W2VdID0gdGhpcy5maWVsZC5pbnZlcnNlKGkpO1xuICAgICAgICAgICAgICAgIGUrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZSAhPT0gbnVtRXJyb3JzKSB7XG4gICAgICAgICAgICB0aHJvdyBDaGVja3N1bUV4Y2VwdGlvbl8xLmRlZmF1bHQuZ2V0Q2hlY2tzdW1JbnN0YW5jZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICBFcnJvckNvcnJlY3Rpb24ucHJvdG90eXBlLmZpbmRFcnJvck1hZ25pdHVkZXMgPSBmdW5jdGlvbiAoZXJyb3JFdmFsdWF0b3IsIGVycm9yTG9jYXRvciwgZXJyb3JMb2NhdGlvbnMpIHtcbiAgICAgICAgdmFyIGVycm9yTG9jYXRvckRlZ3JlZSA9IGVycm9yTG9jYXRvci5nZXREZWdyZWUoKTtcbiAgICAgICAgdmFyIGZvcm1hbERlcml2YXRpdmVDb2VmZmljaWVudHMgPSBuZXcgSW50MzJBcnJheShlcnJvckxvY2F0b3JEZWdyZWUpO1xuICAgICAgICBmb3IgKHZhciBpIC8qaW50Ki8gPSAxOyBpIDw9IGVycm9yTG9jYXRvckRlZ3JlZTsgaSsrKSB7XG4gICAgICAgICAgICBmb3JtYWxEZXJpdmF0aXZlQ29lZmZpY2llbnRzW2Vycm9yTG9jYXRvckRlZ3JlZSAtIGldID1cbiAgICAgICAgICAgICAgICB0aGlzLmZpZWxkLm11bHRpcGx5KGksIGVycm9yTG9jYXRvci5nZXRDb2VmZmljaWVudChpKSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGZvcm1hbERlcml2YXRpdmUgPSBuZXcgTW9kdWx1c1BvbHlfMS5kZWZhdWx0KHRoaXMuZmllbGQsIGZvcm1hbERlcml2YXRpdmVDb2VmZmljaWVudHMpO1xuICAgICAgICAvLyBUaGlzIGlzIGRpcmVjdGx5IGFwcGx5aW5nIEZvcm5leSdzIEZvcm11bGFcbiAgICAgICAgdmFyIHMgPSBlcnJvckxvY2F0aW9ucy5sZW5ndGg7XG4gICAgICAgIHZhciByZXN1bHQgPSBuZXcgSW50MzJBcnJheShzKTtcbiAgICAgICAgZm9yICh2YXIgaSAvKmludCovID0gMDsgaSA8IHM7IGkrKykge1xuICAgICAgICAgICAgdmFyIHhpSW52ZXJzZSA9IHRoaXMuZmllbGQuaW52ZXJzZShlcnJvckxvY2F0aW9uc1tpXSk7XG4gICAgICAgICAgICB2YXIgbnVtZXJhdG9yID0gdGhpcy5maWVsZC5zdWJ0cmFjdCgwLCBlcnJvckV2YWx1YXRvci5ldmFsdWF0ZUF0KHhpSW52ZXJzZSkpO1xuICAgICAgICAgICAgdmFyIGRlbm9taW5hdG9yID0gdGhpcy5maWVsZC5pbnZlcnNlKGZvcm1hbERlcml2YXRpdmUuZXZhbHVhdGVBdCh4aUludmVyc2UpKTtcbiAgICAgICAgICAgIHJlc3VsdFtpXSA9IHRoaXMuZmllbGQubXVsdGlwbHkobnVtZXJhdG9yLCBkZW5vbWluYXRvcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIHJldHVybiBFcnJvckNvcnJlY3Rpb247XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gRXJyb3JDb3JyZWN0aW9uO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RXJyb3JDb3JyZWN0aW9uLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuLypcbiogQ29weXJpZ2h0IDIwMTMgWlhpbmcgYXV0aG9yc1xuKlxuKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4qIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuKlxuKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuKlxuKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4qIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4qIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLy8gcGFja2FnZSBjb20uZ29vZ2xlLnp4aW5nLnBkZjQxNy5kZWNvZGVyO1xuLy8gaW1wb3J0IGNvbS5nb29nbGUuenhpbmcuTm90Rm91bmRFeGNlcHRpb247XG52YXIgTm90Rm91bmRFeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuLi8uLi9Ob3RGb3VuZEV4Y2VwdGlvblwiKTtcbi8vIGltcG9ydCBjb20uZ29vZ2xlLnp4aW5nLlJlc3VsdFBvaW50O1xudmFyIFJlc3VsdFBvaW50XzEgPSByZXF1aXJlKFwiLi4vLi4vUmVzdWx0UG9pbnRcIik7XG4vKipcbiAqIEBhdXRob3IgR3VlbnRoZXIgR3JhdVxuICovXG52YXIgQm91bmRpbmdCb3ggPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gQm91bmRpbmdCb3goaW1hZ2UsIHRvcExlZnQsIGJvdHRvbUxlZnQsIHRvcFJpZ2h0LCBib3R0b21SaWdodCkge1xuICAgICAgICBpZiAoaW1hZ2UgaW5zdGFuY2VvZiBCb3VuZGluZ0JveCkge1xuICAgICAgICAgICAgdGhpcy5jb25zdHJ1Y3Rvcl8yKGltYWdlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY29uc3RydWN0b3JfMShpbWFnZSwgdG9wTGVmdCwgYm90dG9tTGVmdCwgdG9wUmlnaHQsIGJvdHRvbVJpZ2h0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSBpbWFnZVxuICAgICAqIEBwYXJhbSB0b3BMZWZ0XG4gICAgICogQHBhcmFtIGJvdHRvbUxlZnRcbiAgICAgKiBAcGFyYW0gdG9wUmlnaHRcbiAgICAgKiBAcGFyYW0gYm90dG9tUmlnaHRcbiAgICAgKlxuICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb25cbiAgICAgKi9cbiAgICBCb3VuZGluZ0JveC5wcm90b3R5cGUuY29uc3RydWN0b3JfMSA9IGZ1bmN0aW9uIChpbWFnZSwgdG9wTGVmdCwgYm90dG9tTGVmdCwgdG9wUmlnaHQsIGJvdHRvbVJpZ2h0KSB7XG4gICAgICAgIHZhciBsZWZ0VW5zcGVjaWZpZWQgPSB0b3BMZWZ0ID09IG51bGwgfHwgYm90dG9tTGVmdCA9PSBudWxsO1xuICAgICAgICB2YXIgcmlnaHRVbnNwZWNpZmllZCA9IHRvcFJpZ2h0ID09IG51bGwgfHwgYm90dG9tUmlnaHQgPT0gbnVsbDtcbiAgICAgICAgaWYgKGxlZnRVbnNwZWNpZmllZCAmJiByaWdodFVuc3BlY2lmaWVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxlZnRVbnNwZWNpZmllZCkge1xuICAgICAgICAgICAgdG9wTGVmdCA9IG5ldyBSZXN1bHRQb2ludF8xLmRlZmF1bHQoMCwgdG9wUmlnaHQuZ2V0WSgpKTtcbiAgICAgICAgICAgIGJvdHRvbUxlZnQgPSBuZXcgUmVzdWx0UG9pbnRfMS5kZWZhdWx0KDAsIGJvdHRvbVJpZ2h0LmdldFkoKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocmlnaHRVbnNwZWNpZmllZCkge1xuICAgICAgICAgICAgdG9wUmlnaHQgPSBuZXcgUmVzdWx0UG9pbnRfMS5kZWZhdWx0KGltYWdlLmdldFdpZHRoKCkgLSAxLCB0b3BMZWZ0LmdldFkoKSk7XG4gICAgICAgICAgICBib3R0b21SaWdodCA9IG5ldyBSZXN1bHRQb2ludF8xLmRlZmF1bHQoaW1hZ2UuZ2V0V2lkdGgoKSAtIDEsIGJvdHRvbUxlZnQuZ2V0WSgpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmltYWdlID0gaW1hZ2U7XG4gICAgICAgIHRoaXMudG9wTGVmdCA9IHRvcExlZnQ7XG4gICAgICAgIHRoaXMuYm90dG9tTGVmdCA9IGJvdHRvbUxlZnQ7XG4gICAgICAgIHRoaXMudG9wUmlnaHQgPSB0b3BSaWdodDtcbiAgICAgICAgdGhpcy5ib3R0b21SaWdodCA9IGJvdHRvbVJpZ2h0O1xuICAgICAgICB0aGlzLm1pblggPSBNYXRoLnRydW5jKE1hdGgubWluKHRvcExlZnQuZ2V0WCgpLCBib3R0b21MZWZ0LmdldFgoKSkpO1xuICAgICAgICB0aGlzLm1heFggPSBNYXRoLnRydW5jKE1hdGgubWF4KHRvcFJpZ2h0LmdldFgoKSwgYm90dG9tUmlnaHQuZ2V0WCgpKSk7XG4gICAgICAgIHRoaXMubWluWSA9IE1hdGgudHJ1bmMoTWF0aC5taW4odG9wTGVmdC5nZXRZKCksIHRvcFJpZ2h0LmdldFkoKSkpO1xuICAgICAgICB0aGlzLm1heFkgPSBNYXRoLnRydW5jKE1hdGgubWF4KGJvdHRvbUxlZnQuZ2V0WSgpLCBib3R0b21SaWdodC5nZXRZKCkpKTtcbiAgICB9O1xuICAgIEJvdW5kaW5nQm94LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcl8yID0gZnVuY3Rpb24gKGJvdW5kaW5nQm94KSB7XG4gICAgICAgIHRoaXMuaW1hZ2UgPSBib3VuZGluZ0JveC5pbWFnZTtcbiAgICAgICAgdGhpcy50b3BMZWZ0ID0gYm91bmRpbmdCb3guZ2V0VG9wTGVmdCgpO1xuICAgICAgICB0aGlzLmJvdHRvbUxlZnQgPSBib3VuZGluZ0JveC5nZXRCb3R0b21MZWZ0KCk7XG4gICAgICAgIHRoaXMudG9wUmlnaHQgPSBib3VuZGluZ0JveC5nZXRUb3BSaWdodCgpO1xuICAgICAgICB0aGlzLmJvdHRvbVJpZ2h0ID0gYm91bmRpbmdCb3guZ2V0Qm90dG9tUmlnaHQoKTtcbiAgICAgICAgdGhpcy5taW5YID0gYm91bmRpbmdCb3guZ2V0TWluWCgpO1xuICAgICAgICB0aGlzLm1heFggPSBib3VuZGluZ0JveC5nZXRNYXhYKCk7XG4gICAgICAgIHRoaXMubWluWSA9IGJvdW5kaW5nQm94LmdldE1pblkoKTtcbiAgICAgICAgdGhpcy5tYXhZID0gYm91bmRpbmdCb3guZ2V0TWF4WSgpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHRocm93cyBOb3RGb3VuZEV4Y2VwdGlvblxuICAgICAqL1xuICAgIEJvdW5kaW5nQm94Lm1lcmdlID0gZnVuY3Rpb24gKGxlZnRCb3gsIHJpZ2h0Qm94KSB7XG4gICAgICAgIGlmIChsZWZ0Qm94ID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiByaWdodEJveDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmlnaHRCb3ggPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGxlZnRCb3g7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBCb3VuZGluZ0JveChsZWZ0Qm94LmltYWdlLCBsZWZ0Qm94LnRvcExlZnQsIGxlZnRCb3guYm90dG9tTGVmdCwgcmlnaHRCb3gudG9wUmlnaHQsIHJpZ2h0Qm94LmJvdHRvbVJpZ2h0KTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb25cbiAgICAgKi9cbiAgICBCb3VuZGluZ0JveC5wcm90b3R5cGUuYWRkTWlzc2luZ1Jvd3MgPSBmdW5jdGlvbiAobWlzc2luZ1N0YXJ0Um93cywgbWlzc2luZ0VuZFJvd3MsIGlzTGVmdCkge1xuICAgICAgICB2YXIgbmV3VG9wTGVmdCA9IHRoaXMudG9wTGVmdDtcbiAgICAgICAgdmFyIG5ld0JvdHRvbUxlZnQgPSB0aGlzLmJvdHRvbUxlZnQ7XG4gICAgICAgIHZhciBuZXdUb3BSaWdodCA9IHRoaXMudG9wUmlnaHQ7XG4gICAgICAgIHZhciBuZXdCb3R0b21SaWdodCA9IHRoaXMuYm90dG9tUmlnaHQ7XG4gICAgICAgIGlmIChtaXNzaW5nU3RhcnRSb3dzID4gMCkge1xuICAgICAgICAgICAgdmFyIHRvcF8xID0gaXNMZWZ0ID8gdGhpcy50b3BMZWZ0IDogdGhpcy50b3BSaWdodDtcbiAgICAgICAgICAgIHZhciBuZXdNaW5ZID0gTWF0aC50cnVuYyh0b3BfMS5nZXRZKCkgLSBtaXNzaW5nU3RhcnRSb3dzKTtcbiAgICAgICAgICAgIGlmIChuZXdNaW5ZIDwgMCkge1xuICAgICAgICAgICAgICAgIG5ld01pblkgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIG5ld1RvcCA9IG5ldyBSZXN1bHRQb2ludF8xLmRlZmF1bHQodG9wXzEuZ2V0WCgpLCBuZXdNaW5ZKTtcbiAgICAgICAgICAgIGlmIChpc0xlZnQpIHtcbiAgICAgICAgICAgICAgICBuZXdUb3BMZWZ0ID0gbmV3VG9wO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbmV3VG9wUmlnaHQgPSBuZXdUb3A7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1pc3NpbmdFbmRSb3dzID4gMCkge1xuICAgICAgICAgICAgdmFyIGJvdHRvbSA9IGlzTGVmdCA/IHRoaXMuYm90dG9tTGVmdCA6IHRoaXMuYm90dG9tUmlnaHQ7XG4gICAgICAgICAgICB2YXIgbmV3TWF4WSA9IE1hdGgudHJ1bmMoYm90dG9tLmdldFkoKSArIG1pc3NpbmdFbmRSb3dzKTtcbiAgICAgICAgICAgIGlmIChuZXdNYXhZID49IHRoaXMuaW1hZ2UuZ2V0SGVpZ2h0KCkpIHtcbiAgICAgICAgICAgICAgICBuZXdNYXhZID0gdGhpcy5pbWFnZS5nZXRIZWlnaHQoKSAtIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgbmV3Qm90dG9tID0gbmV3IFJlc3VsdFBvaW50XzEuZGVmYXVsdChib3R0b20uZ2V0WCgpLCBuZXdNYXhZKTtcbiAgICAgICAgICAgIGlmIChpc0xlZnQpIHtcbiAgICAgICAgICAgICAgICBuZXdCb3R0b21MZWZ0ID0gbmV3Qm90dG9tO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbmV3Qm90dG9tUmlnaHQgPSBuZXdCb3R0b207XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBCb3VuZGluZ0JveCh0aGlzLmltYWdlLCBuZXdUb3BMZWZ0LCBuZXdCb3R0b21MZWZ0LCBuZXdUb3BSaWdodCwgbmV3Qm90dG9tUmlnaHQpO1xuICAgIH07XG4gICAgQm91bmRpbmdCb3gucHJvdG90eXBlLmdldE1pblggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pblg7XG4gICAgfTtcbiAgICBCb3VuZGluZ0JveC5wcm90b3R5cGUuZ2V0TWF4WCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWF4WDtcbiAgICB9O1xuICAgIEJvdW5kaW5nQm94LnByb3RvdHlwZS5nZXRNaW5ZID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5taW5ZO1xuICAgIH07XG4gICAgQm91bmRpbmdCb3gucHJvdG90eXBlLmdldE1heFkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1heFk7XG4gICAgfTtcbiAgICBCb3VuZGluZ0JveC5wcm90b3R5cGUuZ2V0VG9wTGVmdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9wTGVmdDtcbiAgICB9O1xuICAgIEJvdW5kaW5nQm94LnByb3RvdHlwZS5nZXRUb3BSaWdodCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9wUmlnaHQ7XG4gICAgfTtcbiAgICBCb3VuZGluZ0JveC5wcm90b3R5cGUuZ2V0Qm90dG9tTGVmdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYm90dG9tTGVmdDtcbiAgICB9O1xuICAgIEJvdW5kaW5nQm94LnByb3RvdHlwZS5nZXRCb3R0b21SaWdodCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYm90dG9tUmlnaHQ7XG4gICAgfTtcbiAgICByZXR1cm4gQm91bmRpbmdCb3g7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gQm91bmRpbmdCb3g7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Cb3VuZGluZ0JveC5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8qXG4gKiBDb3B5cmlnaHQgMjAxMyBaWGluZyBhdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLy8gcGFja2FnZSBjb20uZ29vZ2xlLnp4aW5nLnBkZjQxNy5kZWNvZGVyO1xuLyoqXG4gKiBAYXV0aG9yIEd1ZW50aGVyIEdyYXVcbiAqL1xudmFyIEJhcmNvZGVNZXRhZGF0YSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBCYXJjb2RlTWV0YWRhdGEoY29sdW1uQ291bnQsIHJvd0NvdW50VXBwZXJQYXJ0LCByb3dDb3VudExvd2VyUGFydCwgZXJyb3JDb3JyZWN0aW9uTGV2ZWwpIHtcbiAgICAgICAgdGhpcy5jb2x1bW5Db3VudCA9IGNvbHVtbkNvdW50O1xuICAgICAgICB0aGlzLmVycm9yQ29ycmVjdGlvbkxldmVsID0gZXJyb3JDb3JyZWN0aW9uTGV2ZWw7XG4gICAgICAgIHRoaXMucm93Q291bnRVcHBlclBhcnQgPSByb3dDb3VudFVwcGVyUGFydDtcbiAgICAgICAgdGhpcy5yb3dDb3VudExvd2VyUGFydCA9IHJvd0NvdW50TG93ZXJQYXJ0O1xuICAgICAgICB0aGlzLnJvd0NvdW50ID0gcm93Q291bnRVcHBlclBhcnQgKyByb3dDb3VudExvd2VyUGFydDtcbiAgICB9XG4gICAgQmFyY29kZU1ldGFkYXRhLnByb3RvdHlwZS5nZXRDb2x1bW5Db3VudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uQ291bnQ7XG4gICAgfTtcbiAgICBCYXJjb2RlTWV0YWRhdGEucHJvdG90eXBlLmdldEVycm9yQ29ycmVjdGlvbkxldmVsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lcnJvckNvcnJlY3Rpb25MZXZlbDtcbiAgICB9O1xuICAgIEJhcmNvZGVNZXRhZGF0YS5wcm90b3R5cGUuZ2V0Um93Q291bnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJvd0NvdW50O1xuICAgIH07XG4gICAgQmFyY29kZU1ldGFkYXRhLnByb3RvdHlwZS5nZXRSb3dDb3VudFVwcGVyUGFydCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucm93Q291bnRVcHBlclBhcnQ7XG4gICAgfTtcbiAgICBCYXJjb2RlTWV0YWRhdGEucHJvdG90eXBlLmdldFJvd0NvdW50TG93ZXJQYXJ0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yb3dDb3VudExvd2VyUGFydDtcbiAgICB9O1xuICAgIHJldHVybiBCYXJjb2RlTWV0YWRhdGE7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gQmFyY29kZU1ldGFkYXRhO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QmFyY29kZU1ldGFkYXRhLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLyoqXG4gKiBKYXZhIEZvcm1hdHRlciBjbGFzcyBwb2x5ZmlsbCB0aGF0IHdvcmtzIGluIHRoZSBKUyB3YXkuXG4gKi9cbnZhciBGb3JtYXR0ZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRm9ybWF0dGVyKCkge1xuICAgICAgICB0aGlzLmJ1ZmZlciA9ICcnO1xuICAgIH1cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBzZWUgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzEzNDM5NzExLzQzNjc2ODNcbiAgICAgKlxuICAgICAqIEBwYXJhbSBzdHJcbiAgICAgKiBAcGFyYW0gYXJyXG4gICAgICovXG4gICAgRm9ybWF0dGVyLmZvcm0gPSBmdW5jdGlvbiAoc3RyLCBhcnIpIHtcbiAgICAgICAgdmFyIGkgPSAtMTtcbiAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soZXhwLCBwMCwgcDEsIHAyLCBwMywgcDQpIHtcbiAgICAgICAgICAgIGlmIChleHAgPT09ICclJScpXG4gICAgICAgICAgICAgICAgcmV0dXJuICclJztcbiAgICAgICAgICAgIGlmIChhcnJbKytpXSA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICBleHAgPSBwMiA/IHBhcnNlSW50KHAyLnN1YnN0cigxKSkgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB2YXIgYmFzZSA9IHAzID8gcGFyc2VJbnQocDMuc3Vic3RyKDEpKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHZhciB2YWw7XG4gICAgICAgICAgICBzd2l0Y2ggKHA0KSB7XG4gICAgICAgICAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgICAgICAgICAgIHZhbCA9IGFycltpXTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnYyc6XG4gICAgICAgICAgICAgICAgICAgIHZhbCA9IGFycltpXVswXTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnZic6XG4gICAgICAgICAgICAgICAgICAgIHZhbCA9IHBhcnNlRmxvYXQoYXJyW2ldKS50b0ZpeGVkKGV4cCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3AnOlxuICAgICAgICAgICAgICAgICAgICB2YWwgPSBwYXJzZUZsb2F0KGFycltpXSkudG9QcmVjaXNpb24oZXhwKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnZSc6XG4gICAgICAgICAgICAgICAgICAgIHZhbCA9IHBhcnNlRmxvYXQoYXJyW2ldKS50b0V4cG9uZW50aWFsKGV4cCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3gnOlxuICAgICAgICAgICAgICAgICAgICB2YWwgPSBwYXJzZUludChhcnJbaV0pLnRvU3RyaW5nKGJhc2UgPyBiYXNlIDogMTYpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICAgICAgdmFsID0gcGFyc2VGbG9hdChwYXJzZUludChhcnJbaV0sIGJhc2UgPyBiYXNlIDogMTApLnRvUHJlY2lzaW9uKGV4cCkpLnRvRml4ZWQoMCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFsID0gdHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgPyBKU09OLnN0cmluZ2lmeSh2YWwpIDogKCt2YWwpLnRvU3RyaW5nKGJhc2UpO1xuICAgICAgICAgICAgdmFyIHNpemUgPSBwYXJzZUludChwMSk7IC8qIHBhZGRpbmcgc2l6ZSAqL1xuICAgICAgICAgICAgdmFyIGNoID0gcDEgJiYgKHAxWzBdICsgJycpID09PSAnMCcgPyAnMCcgOiAnICc7IC8qIGlzbnVsbD8gKi9cbiAgICAgICAgICAgIHdoaWxlICh2YWwubGVuZ3RoIDwgc2l6ZSlcbiAgICAgICAgICAgICAgICB2YWwgPSBwMCAhPT0gdW5kZWZpbmVkID8gdmFsICsgY2ggOiBjaCArIHZhbDsgLyogaXNtaW51cz8gKi9cbiAgICAgICAgICAgIHJldHVybiB2YWw7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJlZ2V4ID0gLyUoLSk/KDA/WzAtOV0rKT8oWy5dWzAtOV0rKT8oWyNdWzAtOV0rKT8oW3NjZnBleGQlXSkvZztcbiAgICAgICAgcmV0dXJuIHN0ci5yZXBsYWNlKHJlZ2V4LCBjYWxsYmFjayk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSBhcHBlbmQgVGhlIG5ldyBzdHJpbmcgdG8gYXBwZW5kLlxuICAgICAqIEBwYXJhbSBhcmdzIEFyZ3VtZXRzIHZhbHVlcyB0byBiZSBmb3JtYXRlZC5cbiAgICAgKi9cbiAgICBGb3JtYXR0ZXIucHJvdG90eXBlLmZvcm1hdCA9IGZ1bmN0aW9uIChhcHBlbmQpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAxOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIGFyZ3NbX2kgLSAxXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5idWZmZXIgKz0gRm9ybWF0dGVyLmZvcm0oYXBwZW5kLCBhcmdzKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIEZvcm1hdHRlciBzdHJpbmcgdmFsdWUuXG4gICAgICovXG4gICAgRm9ybWF0dGVyLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVmZmVyO1xuICAgIH07XG4gICAgcmV0dXJuIEZvcm1hdHRlcjtcbn0oKSk7XG5leHBvcnRzLmRlZmF1bHQgPSBGb3JtYXR0ZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Gb3JtYXR0ZXIuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IDIwMTMgWlhpbmcgYXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbnZhciBfX3ZhbHVlcyA9ICh0aGlzICYmIHRoaXMuX192YWx1ZXMpIHx8IGZ1bmN0aW9uKG8pIHtcbiAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xuICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8vIHBhY2thZ2UgY29tLmdvb2dsZS56eGluZy5wZGY0MTcuZGVjb2Rlcjtcbi8vIGltcG9ydCBqYXZhLnV0aWwuRm9ybWF0dGVyO1xudmFyIEZvcm1hdHRlcl8xID0gcmVxdWlyZShcIi4uLy4uL3V0aWwvRm9ybWF0dGVyXCIpO1xudmFyIEJvdW5kaW5nQm94XzEgPSByZXF1aXJlKFwiLi9Cb3VuZGluZ0JveFwiKTtcbi8qKlxuICogQGF1dGhvciBHdWVudGhlciBHcmF1XG4gKi9cbnZhciBEZXRlY3Rpb25SZXN1bHRDb2x1bW4gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRGV0ZWN0aW9uUmVzdWx0Q29sdW1uKGJvdW5kaW5nQm94KSB7XG4gICAgICAgIHRoaXMuYm91bmRpbmdCb3ggPSBuZXcgQm91bmRpbmdCb3hfMS5kZWZhdWx0KGJvdW5kaW5nQm94KTtcbiAgICAgICAgLy8gdGhpcy5jb2Rld29yZHMgPSBuZXcgQ29kZXdvcmRbYm91bmRpbmdCb3guZ2V0TWF4WSgpIC0gYm91bmRpbmdCb3guZ2V0TWluWSgpICsgMV07XG4gICAgICAgIHRoaXMuY29kZXdvcmRzID0gbmV3IEFycmF5KGJvdW5kaW5nQm94LmdldE1heFkoKSAtIGJvdW5kaW5nQm94LmdldE1pblkoKSArIDEpO1xuICAgIH1cbiAgICAvKmZpbmFsKi8gRGV0ZWN0aW9uUmVzdWx0Q29sdW1uLnByb3RvdHlwZS5nZXRDb2Rld29yZE5lYXJieSA9IGZ1bmN0aW9uIChpbWFnZVJvdykge1xuICAgICAgICB2YXIgY29kZXdvcmQgPSB0aGlzLmdldENvZGV3b3JkKGltYWdlUm93KTtcbiAgICAgICAgaWYgKGNvZGV3b3JkICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBjb2Rld29yZDtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IERldGVjdGlvblJlc3VsdENvbHVtbi5NQVhfTkVBUkJZX0RJU1RBTkNFOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBuZWFySW1hZ2VSb3cgPSB0aGlzLmltYWdlUm93VG9Db2Rld29yZEluZGV4KGltYWdlUm93KSAtIGk7XG4gICAgICAgICAgICBpZiAobmVhckltYWdlUm93ID49IDApIHtcbiAgICAgICAgICAgICAgICBjb2Rld29yZCA9IHRoaXMuY29kZXdvcmRzW25lYXJJbWFnZVJvd107XG4gICAgICAgICAgICAgICAgaWYgKGNvZGV3b3JkICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvZGV3b3JkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5lYXJJbWFnZVJvdyA9IHRoaXMuaW1hZ2VSb3dUb0NvZGV3b3JkSW5kZXgoaW1hZ2VSb3cpICsgaTtcbiAgICAgICAgICAgIGlmIChuZWFySW1hZ2VSb3cgPCB0aGlzLmNvZGV3b3Jkcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjb2Rld29yZCA9IHRoaXMuY29kZXdvcmRzW25lYXJJbWFnZVJvd107XG4gICAgICAgICAgICAgICAgaWYgKGNvZGV3b3JkICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvZGV3b3JkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICAgIC8qZmluYWwgaW50Ki8gRGV0ZWN0aW9uUmVzdWx0Q29sdW1uLnByb3RvdHlwZS5pbWFnZVJvd1RvQ29kZXdvcmRJbmRleCA9IGZ1bmN0aW9uIChpbWFnZVJvdykge1xuICAgICAgICByZXR1cm4gaW1hZ2VSb3cgLSB0aGlzLmJvdW5kaW5nQm94LmdldE1pblkoKTtcbiAgICB9O1xuICAgIC8qZmluYWwgdm9pZCovIERldGVjdGlvblJlc3VsdENvbHVtbi5wcm90b3R5cGUuc2V0Q29kZXdvcmQgPSBmdW5jdGlvbiAoaW1hZ2VSb3csIGNvZGV3b3JkKSB7XG4gICAgICAgIHRoaXMuY29kZXdvcmRzW3RoaXMuaW1hZ2VSb3dUb0NvZGV3b3JkSW5kZXgoaW1hZ2VSb3cpXSA9IGNvZGV3b3JkO1xuICAgIH07XG4gICAgLypmaW5hbCovIERldGVjdGlvblJlc3VsdENvbHVtbi5wcm90b3R5cGUuZ2V0Q29kZXdvcmQgPSBmdW5jdGlvbiAoaW1hZ2VSb3cpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29kZXdvcmRzW3RoaXMuaW1hZ2VSb3dUb0NvZGV3b3JkSW5kZXgoaW1hZ2VSb3cpXTtcbiAgICB9O1xuICAgIC8qZmluYWwqLyBEZXRlY3Rpb25SZXN1bHRDb2x1bW4ucHJvdG90eXBlLmdldEJvdW5kaW5nQm94ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ib3VuZGluZ0JveDtcbiAgICB9O1xuICAgIC8qZmluYWwqLyBEZXRlY3Rpb25SZXN1bHRDb2x1bW4ucHJvdG90eXBlLmdldENvZGV3b3JkcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29kZXdvcmRzO1xuICAgIH07XG4gICAgLy8gQE92ZXJyaWRlXG4gICAgRGV0ZWN0aW9uUmVzdWx0Q29sdW1uLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGVfMSwgX2E7XG4gICAgICAgIHZhciBmb3JtYXR0ZXIgPSBuZXcgRm9ybWF0dGVyXzEuZGVmYXVsdCgpO1xuICAgICAgICB2YXIgcm93ID0gMDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAodmFyIF9iID0gX192YWx1ZXModGhpcy5jb2Rld29yZHMpLCBfYyA9IF9iLm5leHQoKTsgIV9jLmRvbmU7IF9jID0gX2IubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNvZGV3b3JkID0gX2MudmFsdWU7XG4gICAgICAgICAgICAgICAgaWYgKGNvZGV3b3JkID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyLmZvcm1hdCgnJTNkOiAgICB8ICAgJW4nLCByb3crKyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3JtYXR0ZXIuZm9ybWF0KCclM2Q6ICUzZHwlM2QlbicsIHJvdysrLCBjb2Rld29yZC5nZXRSb3dOdW1iZXIoKSwgY29kZXdvcmQuZ2V0VmFsdWUoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChfYyAmJiAhX2MuZG9uZSAmJiAoX2EgPSBfYi5yZXR1cm4pKSBfYS5jYWxsKF9iKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZm9ybWF0dGVyLnRvU3RyaW5nKCk7XG4gICAgfTtcbiAgICBEZXRlY3Rpb25SZXN1bHRDb2x1bW4uTUFYX05FQVJCWV9ESVNUQU5DRSA9IDU7XG4gICAgcmV0dXJuIERldGVjdGlvblJlc3VsdENvbHVtbjtcbn0oKSk7XG5leHBvcnRzLmRlZmF1bHQgPSBEZXRlY3Rpb25SZXN1bHRDb2x1bW47XG4vLyMgc291cmNlTWFwcGluZ1VSTD1EZXRlY3Rpb25SZXN1bHRDb2x1bW4uanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IDIwMTMgWlhpbmcgYXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbnZhciBfX3ZhbHVlcyA9ICh0aGlzICYmIHRoaXMuX192YWx1ZXMpIHx8IGZ1bmN0aW9uKG8pIHtcbiAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xuICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufTtcbnZhciBfX3JlYWQgPSAodGhpcyAmJiB0aGlzLl9fcmVhZCkgfHwgZnVuY3Rpb24gKG8sIG4pIHtcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XG4gICAgaWYgKCFtKSByZXR1cm4gbztcbiAgICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcbiAgICB0cnkge1xuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycm9yKSB7IGUgPSB7IGVycm9yOiBlcnJvciB9OyB9XG4gICAgZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIG0uY2FsbChpKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cbiAgICB9XG4gICAgcmV0dXJuIGFyO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8vIHBhY2thZ2UgY29tLmdvb2dsZS56eGluZy5wZGY0MTcuZGVjb2Rlcjtcbi8vIGltcG9ydCBjb20uZ29vZ2xlLnp4aW5nLnBkZjQxNy5QREY0MTdDb21tb247XG52YXIgUERGNDE3Q29tbW9uXzEgPSByZXF1aXJlKFwiLi4vUERGNDE3Q29tbW9uXCIpO1xuLy8gaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7XG4vLyBpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247XG4vLyBpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7XG4vLyBpbXBvcnQgamF2YS51dGlsLk1hcDtcbi8vIGltcG9ydCBqYXZhLnV0aWwuTWFwLkVudHJ5O1xuLyoqXG4gKiBAYXV0aG9yIEd1ZW50aGVyIEdyYXVcbiAqL1xudmFyIEJhcmNvZGVWYWx1ZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBCYXJjb2RlVmFsdWUoKSB7XG4gICAgICAgIHRoaXMudmFsdWVzID0gbmV3IE1hcCgpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBZGQgYW4gb2NjdXJyZW5jZSBvZiBhIHZhbHVlXG4gICAgICovXG4gICAgQmFyY29kZVZhbHVlLnByb3RvdHlwZS5zZXRWYWx1ZSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICB2YWx1ZSA9IE1hdGgudHJ1bmModmFsdWUpO1xuICAgICAgICB2YXIgY29uZmlkZW5jZSA9IHRoaXMudmFsdWVzLmdldCh2YWx1ZSk7XG4gICAgICAgIGlmIChjb25maWRlbmNlID09IG51bGwpIHtcbiAgICAgICAgICAgIGNvbmZpZGVuY2UgPSAwO1xuICAgICAgICB9XG4gICAgICAgIGNvbmZpZGVuY2UrKztcbiAgICAgICAgdGhpcy52YWx1ZXMuc2V0KHZhbHVlLCBjb25maWRlbmNlKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgdGhlIG1heGltdW0gb2NjdXJyZW5jZSBvZiBhIHNldCB2YWx1ZSBhbmQgcmV0dXJucyBhbGwgdmFsdWVzIHdoaWNoIHdlcmUgc2V0IHdpdGggdGhpcyBvY2N1cnJlbmNlLlxuICAgICAqIEByZXR1cm4gYW4gYXJyYXkgb2YgaW50LCBjb250YWluaW5nIHRoZSB2YWx1ZXMgd2l0aCB0aGUgaGlnaGVzdCBvY2N1cnJlbmNlLCBvciBudWxsLCBpZiBubyB2YWx1ZSB3YXMgc2V0XG4gICAgICovXG4gICAgQmFyY29kZVZhbHVlLnByb3RvdHlwZS5nZXRWYWx1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGVfMSwgX2E7XG4gICAgICAgIHZhciBtYXhDb25maWRlbmNlID0gLTE7XG4gICAgICAgIHZhciByZXN1bHQgPSBuZXcgQXJyYXkoKTtcbiAgICAgICAgdmFyIF9sb29wXzEgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICAgICAgICAgICAgdmFyIGVudHJ5ID0ge1xuICAgICAgICAgICAgICAgIGdldEtleTogZnVuY3Rpb24gKCkgeyByZXR1cm4ga2V5OyB9LFxuICAgICAgICAgICAgICAgIGdldFZhbHVlOiBmdW5jdGlvbiAoKSB7IHJldHVybiB2YWx1ZTsgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAoZW50cnkuZ2V0VmFsdWUoKSA+IG1heENvbmZpZGVuY2UpIHtcbiAgICAgICAgICAgICAgICBtYXhDb25maWRlbmNlID0gZW50cnkuZ2V0VmFsdWUoKTtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBbXTtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChlbnRyeS5nZXRLZXkoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChlbnRyeS5nZXRWYWx1ZSgpID09PSBtYXhDb25maWRlbmNlKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goZW50cnkuZ2V0S2V5KCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yICh2YXIgX2IgPSBfX3ZhbHVlcyh0aGlzLnZhbHVlcy5lbnRyaWVzKCkpLCBfYyA9IF9iLm5leHQoKTsgIV9jLmRvbmU7IF9jID0gX2IubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9kID0gX19yZWFkKF9jLnZhbHVlLCAyKSwga2V5ID0gX2RbMF0sIHZhbHVlID0gX2RbMV07XG4gICAgICAgICAgICAgICAgX2xvb3BfMShrZXksIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBQREY0MTdDb21tb25fMS5kZWZhdWx0LnRvSW50QXJyYXkocmVzdWx0KTtcbiAgICB9O1xuICAgIEJhcmNvZGVWYWx1ZS5wcm90b3R5cGUuZ2V0Q29uZmlkZW5jZSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZXMuZ2V0KHZhbHVlKTtcbiAgICB9O1xuICAgIHJldHVybiBCYXJjb2RlVmFsdWU7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gQmFyY29kZVZhbHVlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QmFyY29kZVZhbHVlLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuLypcbiAqIENvcHlyaWdodCAyMDEzIFpYaW5nIGF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbnZhciBfX3ZhbHVlcyA9ICh0aGlzICYmIHRoaXMuX192YWx1ZXMpIHx8IGZ1bmN0aW9uKG8pIHtcbiAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xuICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8vIGltcG9ydCBjb20uZ29vZ2xlLnp4aW5nLnBkZjQxNy5QREY0MTdDb21tb247XG52YXIgUERGNDE3Q29tbW9uXzEgPSByZXF1aXJlKFwiLi4vUERGNDE3Q29tbW9uXCIpO1xudmFyIEJhcmNvZGVNZXRhZGF0YV8xID0gcmVxdWlyZShcIi4vQmFyY29kZU1ldGFkYXRhXCIpO1xudmFyIERldGVjdGlvblJlc3VsdENvbHVtbl8xID0gcmVxdWlyZShcIi4vRGV0ZWN0aW9uUmVzdWx0Q29sdW1uXCIpO1xudmFyIEJhcmNvZGVWYWx1ZV8xID0gcmVxdWlyZShcIi4vQmFyY29kZVZhbHVlXCIpO1xuLyoqXG4gKiBAYXV0aG9yIEd1ZW50aGVyIEdyYXVcbiAqL1xudmFyIERldGVjdGlvblJlc3VsdFJvd0luZGljYXRvckNvbHVtbiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoRGV0ZWN0aW9uUmVzdWx0Um93SW5kaWNhdG9yQ29sdW1uLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIERldGVjdGlvblJlc3VsdFJvd0luZGljYXRvckNvbHVtbihib3VuZGluZ0JveCwgaXNMZWZ0KSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIGJvdW5kaW5nQm94KSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5faXNMZWZ0ID0gaXNMZWZ0O1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIERldGVjdGlvblJlc3VsdFJvd0luZGljYXRvckNvbHVtbi5wcm90b3R5cGUuc2V0Um93TnVtYmVycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGVfMSwgX2E7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKHRoaXMuZ2V0Q29kZXdvcmRzKCkpLCBfYyA9IF9iLm5leHQoKTsgIV9jLmRvbmU7IF9jID0gX2IubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNvZGV3b3JkID0gX2MudmFsdWUgLypDb2Rld29yZCovO1xuICAgICAgICAgICAgICAgIGlmIChjb2Rld29yZCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvZGV3b3JkLnNldFJvd051bWJlckFzUm93SW5kaWNhdG9yQ29sdW1uKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoX2MgJiYgIV9jLmRvbmUgJiYgKF9hID0gX2IucmV0dXJuKSkgX2EuY2FsbChfYik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIFRPRE8gaW1wbGVtZW50IHByb3Blcmx5XG4gICAgLy8gVE9ETyBtYXliZSB3ZSBzaG91bGQgYWRkIG1pc3NpbmcgY29kZXdvcmRzIHRvIHN0b3JlIHRoZSBjb3JyZWN0IHJvdyBudW1iZXIgdG8gbWFrZVxuICAgIC8vIGZpbmRpbmcgcm93IG51bWJlcnMgZm9yIG90aGVyIGNvbHVtbnMgZWFzaWVyXG4gICAgLy8gdXNlIHJvdyBoZWlnaHQgY291bnQgdG8gbWFrZSBkZXRlY3Rpb24gb2YgaW52YWxpZCByb3cgbnVtYmVycyBtb3JlIHJlbGlhYmxlXG4gICAgRGV0ZWN0aW9uUmVzdWx0Um93SW5kaWNhdG9yQ29sdW1uLnByb3RvdHlwZS5hZGp1c3RDb21wbGV0ZUluZGljYXRvckNvbHVtblJvd051bWJlcnMgPSBmdW5jdGlvbiAoYmFyY29kZU1ldGFkYXRhKSB7XG4gICAgICAgIHZhciBjb2Rld29yZHMgPSB0aGlzLmdldENvZGV3b3JkcygpO1xuICAgICAgICB0aGlzLnNldFJvd051bWJlcnMoKTtcbiAgICAgICAgdGhpcy5yZW1vdmVJbmNvcnJlY3RDb2Rld29yZHMoY29kZXdvcmRzLCBiYXJjb2RlTWV0YWRhdGEpO1xuICAgICAgICB2YXIgYm91bmRpbmdCb3ggPSB0aGlzLmdldEJvdW5kaW5nQm94KCk7XG4gICAgICAgIHZhciB0b3AgPSB0aGlzLl9pc0xlZnQgPyBib3VuZGluZ0JveC5nZXRUb3BMZWZ0KCkgOiBib3VuZGluZ0JveC5nZXRUb3BSaWdodCgpO1xuICAgICAgICB2YXIgYm90dG9tID0gdGhpcy5faXNMZWZ0ID8gYm91bmRpbmdCb3guZ2V0Qm90dG9tTGVmdCgpIDogYm91bmRpbmdCb3guZ2V0Qm90dG9tUmlnaHQoKTtcbiAgICAgICAgdmFyIGZpcnN0Um93ID0gdGhpcy5pbWFnZVJvd1RvQ29kZXdvcmRJbmRleChNYXRoLnRydW5jKHRvcC5nZXRZKCkpKTtcbiAgICAgICAgdmFyIGxhc3RSb3cgPSB0aGlzLmltYWdlUm93VG9Db2Rld29yZEluZGV4KE1hdGgudHJ1bmMoYm90dG9tLmdldFkoKSkpO1xuICAgICAgICAvLyBXZSBuZWVkIHRvIGJlIGNhcmVmdWwgdXNpbmcgdGhlIGF2ZXJhZ2Ugcm93IGhlaWdodC4gQmFyY29kZSBjb3VsZCBiZSBza2V3ZWQgc28gdGhhdCB3ZSBoYXZlIHNtYWxsZXIgYW5kXG4gICAgICAgIC8vIHRhbGxlciByb3dzXG4gICAgICAgIC8vIGZsb2F0IGF2ZXJhZ2VSb3dIZWlnaHQgPSAobGFzdFJvdyAtIGZpcnN0Um93KSAvIC8qKGZsb2F0KSovIGJhcmNvZGVNZXRhZGF0YS5nZXRSb3dDb3VudCgpO1xuICAgICAgICB2YXIgYmFyY29kZVJvdyA9IC0xO1xuICAgICAgICB2YXIgbWF4Um93SGVpZ2h0ID0gMTtcbiAgICAgICAgdmFyIGN1cnJlbnRSb3dIZWlnaHQgPSAwO1xuICAgICAgICBmb3IgKHZhciBjb2Rld29yZHNSb3cgLyppbnQqLyA9IGZpcnN0Um93OyBjb2Rld29yZHNSb3cgPCBsYXN0Um93OyBjb2Rld29yZHNSb3crKykge1xuICAgICAgICAgICAgaWYgKGNvZGV3b3Jkc1tjb2Rld29yZHNSb3ddID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBjb2Rld29yZCA9IGNvZGV3b3Jkc1tjb2Rld29yZHNSb3ddO1xuICAgICAgICAgICAgLy8gICAgICBmbG9hdCBleHBlY3RlZFJvd051bWJlciA9IChjb2Rld29yZHNSb3cgLSBmaXJzdFJvdykgLyBhdmVyYWdlUm93SGVpZ2h0O1xuICAgICAgICAgICAgLy8gICAgICBpZiAoTWF0aC5hYnMoY29kZXdvcmQuZ2V0Um93TnVtYmVyKCkgLSBleHBlY3RlZFJvd051bWJlcikgPiAyKSB7XG4gICAgICAgICAgICAvLyAgICAgICAgU2ltcGxlTG9nLmxvZyhMRVZFTC5XQVJOSU5HLFxuICAgICAgICAgICAgLy8gICAgICAgICAgICBcIlJlbW92aW5nIGNvZGV3b3JkLCByb3dOdW1iZXJTa2V3IHRvbyBoaWdoLCBjb2Rld29yZFtcIiArIGNvZGV3b3Jkc1JvdyArIFwiXTogRXhwZWN0ZWQgUm93OiBcIiArXG4gICAgICAgICAgICAvLyAgICAgICAgICAgICAgICBleHBlY3RlZFJvd051bWJlciArIFwiLCBSZWFsUm93OiBcIiArIGNvZGV3b3JkLmdldFJvd051bWJlcigpICsgXCIsIHZhbHVlOiBcIiArIGNvZGV3b3JkLmdldFZhbHVlKCkpO1xuICAgICAgICAgICAgLy8gICAgICAgIGNvZGV3b3Jkc1tjb2Rld29yZHNSb3ddID0gbnVsbDtcbiAgICAgICAgICAgIC8vICAgICAgfVxuICAgICAgICAgICAgdmFyIHJvd0RpZmZlcmVuY2UgPSBjb2Rld29yZC5nZXRSb3dOdW1iZXIoKSAtIGJhcmNvZGVSb3c7XG4gICAgICAgICAgICAvLyBUT0RPIGltcHJvdmUgaGFuZGxpbmcgd2l0aCBjYXNlIHdoZXJlIGZpcnN0IHJvdyBpbmRpY2F0b3IgZG9lc24ndCBzdGFydCB3aXRoIDBcbiAgICAgICAgICAgIGlmIChyb3dEaWZmZXJlbmNlID09PSAwKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFJvd0hlaWdodCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAocm93RGlmZmVyZW5jZSA9PT0gMSkge1xuICAgICAgICAgICAgICAgIG1heFJvd0hlaWdodCA9IE1hdGgubWF4KG1heFJvd0hlaWdodCwgY3VycmVudFJvd0hlaWdodCk7XG4gICAgICAgICAgICAgICAgY3VycmVudFJvd0hlaWdodCA9IDE7XG4gICAgICAgICAgICAgICAgYmFyY29kZVJvdyA9IGNvZGV3b3JkLmdldFJvd051bWJlcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAocm93RGlmZmVyZW5jZSA8IDAgfHxcbiAgICAgICAgICAgICAgICBjb2Rld29yZC5nZXRSb3dOdW1iZXIoKSA+PSBiYXJjb2RlTWV0YWRhdGEuZ2V0Um93Q291bnQoKSB8fFxuICAgICAgICAgICAgICAgIHJvd0RpZmZlcmVuY2UgPiBjb2Rld29yZHNSb3cpIHtcbiAgICAgICAgICAgICAgICBjb2Rld29yZHNbY29kZXdvcmRzUm93XSA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YXIgY2hlY2tlZFJvd3MgPSB2b2lkIDA7XG4gICAgICAgICAgICAgICAgaWYgKG1heFJvd0hlaWdodCA+IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tlZFJvd3MgPSAobWF4Um93SGVpZ2h0IC0gMikgKiByb3dEaWZmZXJlbmNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tlZFJvd3MgPSByb3dEaWZmZXJlbmNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgY2xvc2VQcmV2aW91c0NvZGV3b3JkRm91bmQgPSBjaGVja2VkUm93cyA+PSBjb2Rld29yZHNSb3c7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSAvKmludCovID0gMTsgaSA8PSBjaGVja2VkUm93cyAmJiAhY2xvc2VQcmV2aW91c0NvZGV3b3JkRm91bmQ7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAvLyB0aGVyZSBtdXN0IGJlIChoZWlnaHQgKiByb3dEaWZmZXJlbmNlKSBudW1iZXIgb2YgY29kZXdvcmRzIG1pc3NpbmcuIEZvciBub3cgd2UgYXNzdW1lIGhlaWdodCA9IDEuXG4gICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgc2hvdWxkIGhvcGVmdWxseSBnZXQgcmlkIG9mIG1vc3QgcHJvYmxlbXMgYWxyZWFkeS5cbiAgICAgICAgICAgICAgICAgICAgY2xvc2VQcmV2aW91c0NvZGV3b3JkRm91bmQgPSBjb2Rld29yZHNbY29kZXdvcmRzUm93IC0gaV0gIT0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGNsb3NlUHJldmlvdXNDb2Rld29yZEZvdW5kKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvZGV3b3Jkc1tjb2Rld29yZHNSb3ddID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGJhcmNvZGVSb3cgPSBjb2Rld29yZC5nZXRSb3dOdW1iZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFJvd0hlaWdodCA9IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIHJldHVybiAoaW50KSAoYXZlcmFnZVJvd0hlaWdodCArIDAuNSk7XG4gICAgfTtcbiAgICBEZXRlY3Rpb25SZXN1bHRSb3dJbmRpY2F0b3JDb2x1bW4ucHJvdG90eXBlLmdldFJvd0hlaWdodHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBlXzIsIF9hO1xuICAgICAgICB2YXIgYmFyY29kZU1ldGFkYXRhID0gdGhpcy5nZXRCYXJjb2RlTWV0YWRhdGEoKTtcbiAgICAgICAgaWYgKGJhcmNvZGVNZXRhZGF0YSA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFkanVzdEluY29tcGxldGVJbmRpY2F0b3JDb2x1bW5Sb3dOdW1iZXJzKGJhcmNvZGVNZXRhZGF0YSk7XG4gICAgICAgIHZhciByZXN1bHQgPSBuZXcgSW50MzJBcnJheShiYXJjb2RlTWV0YWRhdGEuZ2V0Um93Q291bnQoKSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKHRoaXMuZ2V0Q29kZXdvcmRzKCkpLCBfYyA9IF9iLm5leHQoKTsgIV9jLmRvbmU7IF9jID0gX2IubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNvZGV3b3JkID0gX2MudmFsdWUgLypDb2Rld29yZCovO1xuICAgICAgICAgICAgICAgIGlmIChjb2Rld29yZCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByb3dOdW1iZXIgPSBjb2Rld29yZC5nZXRSb3dOdW1iZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJvd051bWJlciA+PSByZXN1bHQubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIG1vcmUgcm93cyB0aGFuIHRoZSBiYXJjb2RlIG1ldGFkYXRhIGFsbG93cyBmb3IsIGlnbm9yZSB0aGVtLlxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0W3Jvd051bWJlcl0rKztcbiAgICAgICAgICAgICAgICB9IC8vIGVsc2UgdGhyb3cgZXhjZXB0aW9uP1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlXzJfMSkgeyBlXzIgPSB7IGVycm9yOiBlXzJfMSB9OyB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoX2MgJiYgIV9jLmRvbmUgJiYgKF9hID0gX2IucmV0dXJuKSkgX2EuY2FsbChfYik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMikgdGhyb3cgZV8yLmVycm9yOyB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIC8vIFRPRE8gbWF5YmUgd2Ugc2hvdWxkIGFkZCBtaXNzaW5nIGNvZGV3b3JkcyB0byBzdG9yZSB0aGUgY29ycmVjdCByb3cgbnVtYmVyIHRvIG1ha2VcbiAgICAvLyBmaW5kaW5nIHJvdyBudW1iZXJzIGZvciBvdGhlciBjb2x1bW5zIGVhc2llclxuICAgIC8vIHVzZSByb3cgaGVpZ2h0IGNvdW50IHRvIG1ha2UgZGV0ZWN0aW9uIG9mIGludmFsaWQgcm93IG51bWJlcnMgbW9yZSByZWxpYWJsZVxuICAgIERldGVjdGlvblJlc3VsdFJvd0luZGljYXRvckNvbHVtbi5wcm90b3R5cGUuYWRqdXN0SW5jb21wbGV0ZUluZGljYXRvckNvbHVtblJvd051bWJlcnMgPSBmdW5jdGlvbiAoYmFyY29kZU1ldGFkYXRhKSB7XG4gICAgICAgIHZhciBib3VuZGluZ0JveCA9IHRoaXMuZ2V0Qm91bmRpbmdCb3goKTtcbiAgICAgICAgdmFyIHRvcCA9IHRoaXMuX2lzTGVmdCA/IGJvdW5kaW5nQm94LmdldFRvcExlZnQoKSA6IGJvdW5kaW5nQm94LmdldFRvcFJpZ2h0KCk7XG4gICAgICAgIHZhciBib3R0b20gPSB0aGlzLl9pc0xlZnQgPyBib3VuZGluZ0JveC5nZXRCb3R0b21MZWZ0KCkgOiBib3VuZGluZ0JveC5nZXRCb3R0b21SaWdodCgpO1xuICAgICAgICB2YXIgZmlyc3RSb3cgPSB0aGlzLmltYWdlUm93VG9Db2Rld29yZEluZGV4KE1hdGgudHJ1bmModG9wLmdldFkoKSkpO1xuICAgICAgICB2YXIgbGFzdFJvdyA9IHRoaXMuaW1hZ2VSb3dUb0NvZGV3b3JkSW5kZXgoTWF0aC50cnVuYyhib3R0b20uZ2V0WSgpKSk7XG4gICAgICAgIC8vIGZsb2F0IGF2ZXJhZ2VSb3dIZWlnaHQgPSAobGFzdFJvdyAtIGZpcnN0Um93KSAvIC8qKGZsb2F0KSovIGJhcmNvZGVNZXRhZGF0YS5nZXRSb3dDb3VudCgpO1xuICAgICAgICB2YXIgY29kZXdvcmRzID0gdGhpcy5nZXRDb2Rld29yZHMoKTtcbiAgICAgICAgdmFyIGJhcmNvZGVSb3cgPSAtMTtcbiAgICAgICAgdmFyIG1heFJvd0hlaWdodCA9IDE7XG4gICAgICAgIHZhciBjdXJyZW50Um93SGVpZ2h0ID0gMDtcbiAgICAgICAgZm9yICh2YXIgY29kZXdvcmRzUm93IC8qaW50Ki8gPSBmaXJzdFJvdzsgY29kZXdvcmRzUm93IDwgbGFzdFJvdzsgY29kZXdvcmRzUm93KyspIHtcbiAgICAgICAgICAgIGlmIChjb2Rld29yZHNbY29kZXdvcmRzUm93XSA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgY29kZXdvcmQgPSBjb2Rld29yZHNbY29kZXdvcmRzUm93XTtcbiAgICAgICAgICAgIGNvZGV3b3JkLnNldFJvd051bWJlckFzUm93SW5kaWNhdG9yQ29sdW1uKCk7XG4gICAgICAgICAgICB2YXIgcm93RGlmZmVyZW5jZSA9IGNvZGV3b3JkLmdldFJvd051bWJlcigpIC0gYmFyY29kZVJvdztcbiAgICAgICAgICAgIC8vIFRPRE8gaW1wcm92ZSBoYW5kbGluZyB3aXRoIGNhc2Ugd2hlcmUgZmlyc3Qgcm93IGluZGljYXRvciBkb2Vzbid0IHN0YXJ0IHdpdGggMFxuICAgICAgICAgICAgaWYgKHJvd0RpZmZlcmVuY2UgPT09IDApIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50Um93SGVpZ2h0Kys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChyb3dEaWZmZXJlbmNlID09PSAxKSB7XG4gICAgICAgICAgICAgICAgbWF4Um93SGVpZ2h0ID0gTWF0aC5tYXgobWF4Um93SGVpZ2h0LCBjdXJyZW50Um93SGVpZ2h0KTtcbiAgICAgICAgICAgICAgICBjdXJyZW50Um93SGVpZ2h0ID0gMTtcbiAgICAgICAgICAgICAgICBiYXJjb2RlUm93ID0gY29kZXdvcmQuZ2V0Um93TnVtYmVyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjb2Rld29yZC5nZXRSb3dOdW1iZXIoKSA+PSBiYXJjb2RlTWV0YWRhdGEuZ2V0Um93Q291bnQoKSkge1xuICAgICAgICAgICAgICAgIGNvZGV3b3Jkc1tjb2Rld29yZHNSb3ddID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGJhcmNvZGVSb3cgPSBjb2Rld29yZC5nZXRSb3dOdW1iZXIoKTtcbiAgICAgICAgICAgICAgICBjdXJyZW50Um93SGVpZ2h0ID0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyByZXR1cm4gKGludCkgKGF2ZXJhZ2VSb3dIZWlnaHQgKyAwLjUpO1xuICAgIH07XG4gICAgRGV0ZWN0aW9uUmVzdWx0Um93SW5kaWNhdG9yQ29sdW1uLnByb3RvdHlwZS5nZXRCYXJjb2RlTWV0YWRhdGEgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBlXzMsIF9hO1xuICAgICAgICB2YXIgY29kZXdvcmRzID0gdGhpcy5nZXRDb2Rld29yZHMoKTtcbiAgICAgICAgdmFyIGJhcmNvZGVDb2x1bW5Db3VudCA9IG5ldyBCYXJjb2RlVmFsdWVfMS5kZWZhdWx0KCk7XG4gICAgICAgIHZhciBiYXJjb2RlUm93Q291bnRVcHBlclBhcnQgPSBuZXcgQmFyY29kZVZhbHVlXzEuZGVmYXVsdCgpO1xuICAgICAgICB2YXIgYmFyY29kZVJvd0NvdW50TG93ZXJQYXJ0ID0gbmV3IEJhcmNvZGVWYWx1ZV8xLmRlZmF1bHQoKTtcbiAgICAgICAgdmFyIGJhcmNvZGVFQ0xldmVsID0gbmV3IEJhcmNvZGVWYWx1ZV8xLmRlZmF1bHQoKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAodmFyIGNvZGV3b3Jkc18xID0gX192YWx1ZXMoY29kZXdvcmRzKSwgY29kZXdvcmRzXzFfMSA9IGNvZGV3b3Jkc18xLm5leHQoKTsgIWNvZGV3b3Jkc18xXzEuZG9uZTsgY29kZXdvcmRzXzFfMSA9IGNvZGV3b3Jkc18xLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciBjb2Rld29yZCA9IGNvZGV3b3Jkc18xXzEudmFsdWUgLypDb2Rld29yZCovO1xuICAgICAgICAgICAgICAgIGlmIChjb2Rld29yZCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb2Rld29yZC5zZXRSb3dOdW1iZXJBc1Jvd0luZGljYXRvckNvbHVtbigpO1xuICAgICAgICAgICAgICAgIHZhciByb3dJbmRpY2F0b3JWYWx1ZSA9IGNvZGV3b3JkLmdldFZhbHVlKCkgJSAzMDtcbiAgICAgICAgICAgICAgICB2YXIgY29kZXdvcmRSb3dOdW1iZXIgPSBjb2Rld29yZC5nZXRSb3dOdW1iZXIoKTtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2lzTGVmdCkge1xuICAgICAgICAgICAgICAgICAgICBjb2Rld29yZFJvd051bWJlciArPSAyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvZGV3b3JkUm93TnVtYmVyICUgMykge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICBiYXJjb2RlUm93Q291bnRVcHBlclBhcnQuc2V0VmFsdWUocm93SW5kaWNhdG9yVmFsdWUgKiAzICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgYmFyY29kZUVDTGV2ZWwuc2V0VmFsdWUocm93SW5kaWNhdG9yVmFsdWUgLyAzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhcmNvZGVSb3dDb3VudExvd2VyUGFydC5zZXRWYWx1ZShyb3dJbmRpY2F0b3JWYWx1ZSAlIDMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhcmNvZGVDb2x1bW5Db3VudC5zZXRWYWx1ZShyb3dJbmRpY2F0b3JWYWx1ZSArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlXzNfMSkgeyBlXzMgPSB7IGVycm9yOiBlXzNfMSB9OyB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoY29kZXdvcmRzXzFfMSAmJiAhY29kZXdvcmRzXzFfMS5kb25lICYmIChfYSA9IGNvZGV3b3Jkc18xLnJldHVybikpIF9hLmNhbGwoY29kZXdvcmRzXzEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzMpIHRocm93IGVfMy5lcnJvcjsgfVxuICAgICAgICB9XG4gICAgICAgIC8vIE1heWJlIHdlIHNob3VsZCBjaGVjayBpZiB3ZSBoYXZlIGFtYmlndW91cyB2YWx1ZXM/XG4gICAgICAgIGlmICgoYmFyY29kZUNvbHVtbkNvdW50LmdldFZhbHVlKCkubGVuZ3RoID09PSAwKSB8fFxuICAgICAgICAgICAgKGJhcmNvZGVSb3dDb3VudFVwcGVyUGFydC5nZXRWYWx1ZSgpLmxlbmd0aCA9PT0gMCkgfHxcbiAgICAgICAgICAgIChiYXJjb2RlUm93Q291bnRMb3dlclBhcnQuZ2V0VmFsdWUoKS5sZW5ndGggPT09IDApIHx8XG4gICAgICAgICAgICAoYmFyY29kZUVDTGV2ZWwuZ2V0VmFsdWUoKS5sZW5ndGggPT09IDApIHx8XG4gICAgICAgICAgICBiYXJjb2RlQ29sdW1uQ291bnQuZ2V0VmFsdWUoKVswXSA8IDEgfHxcbiAgICAgICAgICAgIGJhcmNvZGVSb3dDb3VudFVwcGVyUGFydC5nZXRWYWx1ZSgpWzBdICsgYmFyY29kZVJvd0NvdW50TG93ZXJQYXJ0LmdldFZhbHVlKClbMF0gPCBQREY0MTdDb21tb25fMS5kZWZhdWx0Lk1JTl9ST1dTX0lOX0JBUkNPREUgfHxcbiAgICAgICAgICAgIGJhcmNvZGVSb3dDb3VudFVwcGVyUGFydC5nZXRWYWx1ZSgpWzBdICsgYmFyY29kZVJvd0NvdW50TG93ZXJQYXJ0LmdldFZhbHVlKClbMF0gPiBQREY0MTdDb21tb25fMS5kZWZhdWx0Lk1BWF9ST1dTX0lOX0JBUkNPREUpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHZhciBiYXJjb2RlTWV0YWRhdGEgPSBuZXcgQmFyY29kZU1ldGFkYXRhXzEuZGVmYXVsdChiYXJjb2RlQ29sdW1uQ291bnQuZ2V0VmFsdWUoKVswXSwgYmFyY29kZVJvd0NvdW50VXBwZXJQYXJ0LmdldFZhbHVlKClbMF0sIGJhcmNvZGVSb3dDb3VudExvd2VyUGFydC5nZXRWYWx1ZSgpWzBdLCBiYXJjb2RlRUNMZXZlbC5nZXRWYWx1ZSgpWzBdKTtcbiAgICAgICAgdGhpcy5yZW1vdmVJbmNvcnJlY3RDb2Rld29yZHMoY29kZXdvcmRzLCBiYXJjb2RlTWV0YWRhdGEpO1xuICAgICAgICByZXR1cm4gYmFyY29kZU1ldGFkYXRhO1xuICAgIH07XG4gICAgRGV0ZWN0aW9uUmVzdWx0Um93SW5kaWNhdG9yQ29sdW1uLnByb3RvdHlwZS5yZW1vdmVJbmNvcnJlY3RDb2Rld29yZHMgPSBmdW5jdGlvbiAoY29kZXdvcmRzLCBiYXJjb2RlTWV0YWRhdGEpIHtcbiAgICAgICAgLy8gUmVtb3ZlIGNvZGV3b3JkcyB3aGljaCBkbyBub3QgbWF0Y2ggdGhlIG1ldGFkYXRhXG4gICAgICAgIC8vIFRPRE8gTWF5YmUgd2Ugc2hvdWxkIGtlZXAgdGhlIGluY29ycmVjdCBjb2Rld29yZHMgZm9yIHRoZSBzdGFydCBhbmQgZW5kIHBvc2l0aW9ucz9cbiAgICAgICAgZm9yICh2YXIgY29kZXdvcmRSb3cgLyppbnQqLyA9IDA7IGNvZGV3b3JkUm93IDwgY29kZXdvcmRzLmxlbmd0aDsgY29kZXdvcmRSb3crKykge1xuICAgICAgICAgICAgdmFyIGNvZGV3b3JkID0gY29kZXdvcmRzW2NvZGV3b3JkUm93XTtcbiAgICAgICAgICAgIGlmIChjb2Rld29yZHNbY29kZXdvcmRSb3ddID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciByb3dJbmRpY2F0b3JWYWx1ZSA9IGNvZGV3b3JkLmdldFZhbHVlKCkgJSAzMDtcbiAgICAgICAgICAgIHZhciBjb2Rld29yZFJvd051bWJlciA9IGNvZGV3b3JkLmdldFJvd051bWJlcigpO1xuICAgICAgICAgICAgaWYgKGNvZGV3b3JkUm93TnVtYmVyID4gYmFyY29kZU1ldGFkYXRhLmdldFJvd0NvdW50KCkpIHtcbiAgICAgICAgICAgICAgICBjb2Rld29yZHNbY29kZXdvcmRSb3ddID0gbnVsbDtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5faXNMZWZ0KSB7XG4gICAgICAgICAgICAgICAgY29kZXdvcmRSb3dOdW1iZXIgKz0gMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN3aXRjaCAoY29kZXdvcmRSb3dOdW1iZXIgJSAzKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICBpZiAocm93SW5kaWNhdG9yVmFsdWUgKiAzICsgMSAhPT0gYmFyY29kZU1ldGFkYXRhLmdldFJvd0NvdW50VXBwZXJQYXJ0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGV3b3Jkc1tjb2Rld29yZFJvd10gPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgaWYgKE1hdGgudHJ1bmMocm93SW5kaWNhdG9yVmFsdWUgLyAzKSAhPT0gYmFyY29kZU1ldGFkYXRhLmdldEVycm9yQ29ycmVjdGlvbkxldmVsKCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd0luZGljYXRvclZhbHVlICUgMyAhPT0gYmFyY29kZU1ldGFkYXRhLmdldFJvd0NvdW50TG93ZXJQYXJ0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGV3b3Jkc1tjb2Rld29yZFJvd10gPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJvd0luZGljYXRvclZhbHVlICsgMSAhPT0gYmFyY29kZU1ldGFkYXRhLmdldENvbHVtbkNvdW50KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGV3b3Jkc1tjb2Rld29yZFJvd10gPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBEZXRlY3Rpb25SZXN1bHRSb3dJbmRpY2F0b3JDb2x1bW4ucHJvdG90eXBlLmlzTGVmdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzTGVmdDtcbiAgICB9O1xuICAgIC8vIEBPdmVycmlkZVxuICAgIERldGVjdGlvblJlc3VsdFJvd0luZGljYXRvckNvbHVtbi5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAnSXNMZWZ0OiAnICsgdGhpcy5faXNMZWZ0ICsgJ1xcbicgKyBfc3VwZXIucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodGhpcyk7XG4gICAgfTtcbiAgICByZXR1cm4gRGV0ZWN0aW9uUmVzdWx0Um93SW5kaWNhdG9yQ29sdW1uO1xufShEZXRlY3Rpb25SZXN1bHRDb2x1bW5fMS5kZWZhdWx0KSk7XG5leHBvcnRzLmRlZmF1bHQgPSBEZXRlY3Rpb25SZXN1bHRSb3dJbmRpY2F0b3JDb2x1bW47XG4vLyMgc291cmNlTWFwcGluZ1VSTD1EZXRlY3Rpb25SZXN1bHRSb3dJbmRpY2F0b3JDb2x1bW4uanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IDIwMTMgWlhpbmcgYXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbnZhciBfX3ZhbHVlcyA9ICh0aGlzICYmIHRoaXMuX192YWx1ZXMpIHx8IGZ1bmN0aW9uKG8pIHtcbiAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xuICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8vIHBhY2thZ2UgY29tLmdvb2dsZS56eGluZy5wZGY0MTcuZGVjb2Rlcjtcbi8vIGltcG9ydCBjb20uZ29vZ2xlLnp4aW5nLnBkZjQxNy5QREY0MTdDb21tb247XG52YXIgUERGNDE3Q29tbW9uXzEgPSByZXF1aXJlKFwiLi4vUERGNDE3Q29tbW9uXCIpO1xudmFyIEZvcm1hdHRlcl8xID0gcmVxdWlyZShcIi4uLy4uL3V0aWwvRm9ybWF0dGVyXCIpO1xuLyoqXG4gKiBAYXV0aG9yIEd1ZW50aGVyIEdyYXVcbiAqL1xudmFyIERldGVjdGlvblJlc3VsdCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBEZXRlY3Rpb25SZXN1bHQoYmFyY29kZU1ldGFkYXRhLCBib3VuZGluZ0JveCkge1xuICAgICAgICAvKmZpbmFsKi8gdGhpcy5BREpVU1RfUk9XX05VTUJFUl9TS0lQID0gMjtcbiAgICAgICAgdGhpcy5iYXJjb2RlTWV0YWRhdGEgPSBiYXJjb2RlTWV0YWRhdGE7XG4gICAgICAgIHRoaXMuYmFyY29kZUNvbHVtbkNvdW50ID0gYmFyY29kZU1ldGFkYXRhLmdldENvbHVtbkNvdW50KCk7XG4gICAgICAgIHRoaXMuYm91bmRpbmdCb3ggPSBib3VuZGluZ0JveDtcbiAgICAgICAgLy8gdGhpcy5kZXRlY3Rpb25SZXN1bHRDb2x1bW5zID0gbmV3IERldGVjdGlvblJlc3VsdENvbHVtblt0aGlzLmJhcmNvZGVDb2x1bW5Db3VudCArIDJdO1xuICAgICAgICB0aGlzLmRldGVjdGlvblJlc3VsdENvbHVtbnMgPSBuZXcgQXJyYXkodGhpcy5iYXJjb2RlQ29sdW1uQ291bnQgKyAyKTtcbiAgICB9XG4gICAgRGV0ZWN0aW9uUmVzdWx0LnByb3RvdHlwZS5nZXREZXRlY3Rpb25SZXN1bHRDb2x1bW5zID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmFkanVzdEluZGljYXRvckNvbHVtblJvd051bWJlcnModGhpcy5kZXRlY3Rpb25SZXN1bHRDb2x1bW5zWzBdKTtcbiAgICAgICAgdGhpcy5hZGp1c3RJbmRpY2F0b3JDb2x1bW5Sb3dOdW1iZXJzKHRoaXMuZGV0ZWN0aW9uUmVzdWx0Q29sdW1uc1t0aGlzLmJhcmNvZGVDb2x1bW5Db3VudCArIDFdKTtcbiAgICAgICAgdmFyIHVuYWRqdXN0ZWRDb2Rld29yZENvdW50ID0gUERGNDE3Q29tbW9uXzEuZGVmYXVsdC5NQVhfQ09ERVdPUkRTX0lOX0JBUkNPREU7XG4gICAgICAgIHZhciBwcmV2aW91c1VuYWRqdXN0ZWRDb3VudDtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgcHJldmlvdXNVbmFkanVzdGVkQ291bnQgPSB1bmFkanVzdGVkQ29kZXdvcmRDb3VudDtcbiAgICAgICAgICAgIHVuYWRqdXN0ZWRDb2Rld29yZENvdW50ID0gdGhpcy5hZGp1c3RSb3dOdW1iZXJzQW5kR2V0Q291bnQoKTtcbiAgICAgICAgfSB3aGlsZSAodW5hZGp1c3RlZENvZGV3b3JkQ291bnQgPiAwICYmIHVuYWRqdXN0ZWRDb2Rld29yZENvdW50IDwgcHJldmlvdXNVbmFkanVzdGVkQ291bnQpO1xuICAgICAgICByZXR1cm4gdGhpcy5kZXRlY3Rpb25SZXN1bHRDb2x1bW5zO1xuICAgIH07XG4gICAgRGV0ZWN0aW9uUmVzdWx0LnByb3RvdHlwZS5hZGp1c3RJbmRpY2F0b3JDb2x1bW5Sb3dOdW1iZXJzID0gZnVuY3Rpb24gKGRldGVjdGlvblJlc3VsdENvbHVtbikge1xuICAgICAgICBpZiAoZGV0ZWN0aW9uUmVzdWx0Q29sdW1uICE9IG51bGwpIHtcbiAgICAgICAgICAgIGRldGVjdGlvblJlc3VsdENvbHVtblxuICAgICAgICAgICAgICAgIC5hZGp1c3RDb21wbGV0ZUluZGljYXRvckNvbHVtblJvd051bWJlcnModGhpcy5iYXJjb2RlTWV0YWRhdGEpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvLyBUT0RPIGVuc3VyZSB0aGF0IG5vIGRldGVjdGVkIGNvZGV3b3JkcyB3aXRoIHVua25vd24gcm93IG51bWJlciBhcmUgbGVmdFxuICAgIC8vIHdlIHNob3VsZCBiZSBhYmxlIHRvIGVzdGltYXRlIHRoZSByb3cgaGVpZ2h0IGFuZCB1c2UgaXQgYXMgYSBoaW50IGZvciB0aGUgcm93IG51bWJlclxuICAgIC8vIHdlIHNob3VsZCBhbHNvIGZpbGwgdGhlIHJvd3MgdG9wIHRvIGJvdHRvbSBhbmQgYm90dG9tIHRvIHRvcFxuICAgIC8qKlxuICAgICAqIEByZXR1cm4gbnVtYmVyIG9mIGNvZGV3b3JkcyB3aGljaCBkb24ndCBoYXZlIGEgdmFsaWQgcm93IG51bWJlci4gTm90ZSB0aGF0IHRoZSBjb3VudCBpcyBub3QgYWNjdXJhdGUgYXMgY29kZXdvcmRzXG4gICAgICogd2lsbCBiZSBjb3VudGVkIHNldmVyYWwgdGltZXMuIEl0IGp1c3Qgc2VydmVzIGFzIGFuIGluZGljYXRvciB0byBzZWUgd2hlbiB3ZSBjYW4gc3RvcCBhZGp1c3Rpbmcgcm93IG51bWJlcnNcbiAgICAgKi9cbiAgICBEZXRlY3Rpb25SZXN1bHQucHJvdG90eXBlLmFkanVzdFJvd051bWJlcnNBbmRHZXRDb3VudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHVuYWRqdXN0ZWRDb3VudCA9IHRoaXMuYWRqdXN0Um93TnVtYmVyc0J5Um93KCk7XG4gICAgICAgIGlmICh1bmFkanVzdGVkQ291bnQgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIGZvciAodmFyIGJhcmNvZGVDb2x1bW4gLyppbnQqLyA9IDE7IGJhcmNvZGVDb2x1bW4gPCB0aGlzLmJhcmNvZGVDb2x1bW5Db3VudCArIDE7IGJhcmNvZGVDb2x1bW4rKykge1xuICAgICAgICAgICAgdmFyIGNvZGV3b3JkcyA9IHRoaXMuZGV0ZWN0aW9uUmVzdWx0Q29sdW1uc1tiYXJjb2RlQ29sdW1uXS5nZXRDb2Rld29yZHMoKTtcbiAgICAgICAgICAgIGZvciAodmFyIGNvZGV3b3Jkc1JvdyAvKmludCovID0gMDsgY29kZXdvcmRzUm93IDwgY29kZXdvcmRzLmxlbmd0aDsgY29kZXdvcmRzUm93KyspIHtcbiAgICAgICAgICAgICAgICBpZiAoY29kZXdvcmRzW2NvZGV3b3Jkc1Jvd10gPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFjb2Rld29yZHNbY29kZXdvcmRzUm93XS5oYXNWYWxpZFJvd051bWJlcigpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRqdXN0Um93TnVtYmVycyhiYXJjb2RlQ29sdW1uLCBjb2Rld29yZHNSb3csIGNvZGV3b3Jkcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmFkanVzdGVkQ291bnQ7XG4gICAgfTtcbiAgICBEZXRlY3Rpb25SZXN1bHQucHJvdG90eXBlLmFkanVzdFJvd051bWJlcnNCeVJvdyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5hZGp1c3RSb3dOdW1iZXJzRnJvbUJvdGhSSSgpO1xuICAgICAgICAvLyBUT0RPIHdlIHNob3VsZCBvbmx5IGRvIGZ1bGwgcm93IGFkanVzdG1lbnRzIGlmIHJvdyBudW1iZXJzIG9mIGxlZnQgYW5kIHJpZ2h0IHJvdyBpbmRpY2F0b3IgY29sdW1uIG1hdGNoLlxuICAgICAgICAvLyBNYXliZSBpdCdzIGV2ZW4gYmV0dGVyIHRvIGNhbGN1bGF0ZWQgdGhlIGhlaWdodCAocm93czogZCkgYW5kIGRpdmlkZSBpdCBieSB0aGUgbnVtYmVyIG9mIGJhcmNvZGVcbiAgICAgICAgLy8gcm93cy4gVGhpcywgdG9nZXRoZXIgd2l0aCB0aGUgTFJJIGFuZCBSUkkgcm93IG51bWJlcnMgc2hvdWxkIGFsbG93IHVzIHRvIGdldCBhIGdvb2QgZXN0aW1hdGUgd2hlcmUgYSByb3dcbiAgICAgICAgLy8gbnVtYmVyIHN0YXJ0cyBhbmQgZW5kcy5cbiAgICAgICAgdmFyIHVuYWRqdXN0ZWRDb3VudCA9IHRoaXMuYWRqdXN0Um93TnVtYmVyc0Zyb21MUkkoKTtcbiAgICAgICAgcmV0dXJuIHVuYWRqdXN0ZWRDb3VudCArIHRoaXMuYWRqdXN0Um93TnVtYmVyc0Zyb21SUkkoKTtcbiAgICB9O1xuICAgIERldGVjdGlvblJlc3VsdC5wcm90b3R5cGUuYWRqdXN0Um93TnVtYmVyc0Zyb21Cb3RoUkkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLmRldGVjdGlvblJlc3VsdENvbHVtbnNbMF0gPT0gbnVsbCB8fCB0aGlzLmRldGVjdGlvblJlc3VsdENvbHVtbnNbdGhpcy5iYXJjb2RlQ29sdW1uQ291bnQgKyAxXSA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIExSSWNvZGV3b3JkcyA9IHRoaXMuZGV0ZWN0aW9uUmVzdWx0Q29sdW1uc1swXS5nZXRDb2Rld29yZHMoKTtcbiAgICAgICAgdmFyIFJSSWNvZGV3b3JkcyA9IHRoaXMuZGV0ZWN0aW9uUmVzdWx0Q29sdW1uc1t0aGlzLmJhcmNvZGVDb2x1bW5Db3VudCArIDFdLmdldENvZGV3b3JkcygpO1xuICAgICAgICBmb3IgKHZhciBjb2Rld29yZHNSb3cgLyppbnQqLyA9IDA7IGNvZGV3b3Jkc1JvdyA8IExSSWNvZGV3b3Jkcy5sZW5ndGg7IGNvZGV3b3Jkc1JvdysrKSB7XG4gICAgICAgICAgICBpZiAoTFJJY29kZXdvcmRzW2NvZGV3b3Jkc1Jvd10gIT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgIFJSSWNvZGV3b3Jkc1tjb2Rld29yZHNSb3ddICE9IG51bGwgJiZcbiAgICAgICAgICAgICAgICBMUkljb2Rld29yZHNbY29kZXdvcmRzUm93XS5nZXRSb3dOdW1iZXIoKSA9PT0gUlJJY29kZXdvcmRzW2NvZGV3b3Jkc1Jvd10uZ2V0Um93TnVtYmVyKCkpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBiYXJjb2RlQ29sdW1uIC8qaW50Ki8gPSAxOyBiYXJjb2RlQ29sdW1uIDw9IHRoaXMuYmFyY29kZUNvbHVtbkNvdW50OyBiYXJjb2RlQ29sdW1uKyspIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvZGV3b3JkID0gdGhpcy5kZXRlY3Rpb25SZXN1bHRDb2x1bW5zW2JhcmNvZGVDb2x1bW5dLmdldENvZGV3b3JkcygpW2NvZGV3b3Jkc1Jvd107XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb2Rld29yZCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb2Rld29yZC5zZXRSb3dOdW1iZXIoTFJJY29kZXdvcmRzW2NvZGV3b3Jkc1Jvd10uZ2V0Um93TnVtYmVyKCkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNvZGV3b3JkLmhhc1ZhbGlkUm93TnVtYmVyKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGV0ZWN0aW9uUmVzdWx0Q29sdW1uc1tiYXJjb2RlQ29sdW1uXS5nZXRDb2Rld29yZHMoKVtjb2Rld29yZHNSb3ddID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgRGV0ZWN0aW9uUmVzdWx0LnByb3RvdHlwZS5hZGp1c3RSb3dOdW1iZXJzRnJvbVJSSSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMuZGV0ZWN0aW9uUmVzdWx0Q29sdW1uc1t0aGlzLmJhcmNvZGVDb2x1bW5Db3VudCArIDFdID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIHZhciB1bmFkanVzdGVkQ291bnQgPSAwO1xuICAgICAgICB2YXIgY29kZXdvcmRzID0gdGhpcy5kZXRlY3Rpb25SZXN1bHRDb2x1bW5zW3RoaXMuYmFyY29kZUNvbHVtbkNvdW50ICsgMV0uZ2V0Q29kZXdvcmRzKCk7XG4gICAgICAgIGZvciAodmFyIGNvZGV3b3Jkc1JvdyAvKmludCovID0gMDsgY29kZXdvcmRzUm93IDwgY29kZXdvcmRzLmxlbmd0aDsgY29kZXdvcmRzUm93KyspIHtcbiAgICAgICAgICAgIGlmIChjb2Rld29yZHNbY29kZXdvcmRzUm93XSA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgcm93SW5kaWNhdG9yUm93TnVtYmVyID0gY29kZXdvcmRzW2NvZGV3b3Jkc1Jvd10uZ2V0Um93TnVtYmVyKCk7XG4gICAgICAgICAgICB2YXIgaW52YWxpZFJvd0NvdW50cyA9IDA7XG4gICAgICAgICAgICBmb3IgKHZhciBiYXJjb2RlQ29sdW1uIC8qaW50Ki8gPSB0aGlzLmJhcmNvZGVDb2x1bW5Db3VudCArIDE7IGJhcmNvZGVDb2x1bW4gPiAwICYmIGludmFsaWRSb3dDb3VudHMgPCB0aGlzLkFESlVTVF9ST1dfTlVNQkVSX1NLSVA7IGJhcmNvZGVDb2x1bW4tLSkge1xuICAgICAgICAgICAgICAgIHZhciBjb2Rld29yZCA9IHRoaXMuZGV0ZWN0aW9uUmVzdWx0Q29sdW1uc1tiYXJjb2RlQ29sdW1uXS5nZXRDb2Rld29yZHMoKVtjb2Rld29yZHNSb3ddO1xuICAgICAgICAgICAgICAgIGlmIChjb2Rld29yZCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGludmFsaWRSb3dDb3VudHMgPSBEZXRlY3Rpb25SZXN1bHQuYWRqdXN0Um93TnVtYmVySWZWYWxpZChyb3dJbmRpY2F0b3JSb3dOdW1iZXIsIGludmFsaWRSb3dDb3VudHMsIGNvZGV3b3JkKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjb2Rld29yZC5oYXNWYWxpZFJvd051bWJlcigpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1bmFkanVzdGVkQ291bnQrKztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5hZGp1c3RlZENvdW50O1xuICAgIH07XG4gICAgRGV0ZWN0aW9uUmVzdWx0LnByb3RvdHlwZS5hZGp1c3RSb3dOdW1iZXJzRnJvbUxSSSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMuZGV0ZWN0aW9uUmVzdWx0Q29sdW1uc1swXSA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdW5hZGp1c3RlZENvdW50ID0gMDtcbiAgICAgICAgdmFyIGNvZGV3b3JkcyA9IHRoaXMuZGV0ZWN0aW9uUmVzdWx0Q29sdW1uc1swXS5nZXRDb2Rld29yZHMoKTtcbiAgICAgICAgZm9yICh2YXIgY29kZXdvcmRzUm93IC8qaW50Ki8gPSAwOyBjb2Rld29yZHNSb3cgPCBjb2Rld29yZHMubGVuZ3RoOyBjb2Rld29yZHNSb3crKykge1xuICAgICAgICAgICAgaWYgKGNvZGV3b3Jkc1tjb2Rld29yZHNSb3ddID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciByb3dJbmRpY2F0b3JSb3dOdW1iZXIgPSBjb2Rld29yZHNbY29kZXdvcmRzUm93XS5nZXRSb3dOdW1iZXIoKTtcbiAgICAgICAgICAgIHZhciBpbnZhbGlkUm93Q291bnRzID0gMDtcbiAgICAgICAgICAgIGZvciAodmFyIGJhcmNvZGVDb2x1bW4gLyppbnQqLyA9IDE7IGJhcmNvZGVDb2x1bW4gPCB0aGlzLmJhcmNvZGVDb2x1bW5Db3VudCArIDEgJiYgaW52YWxpZFJvd0NvdW50cyA8IHRoaXMuQURKVVNUX1JPV19OVU1CRVJfU0tJUDsgYmFyY29kZUNvbHVtbisrKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNvZGV3b3JkID0gdGhpcy5kZXRlY3Rpb25SZXN1bHRDb2x1bW5zW2JhcmNvZGVDb2x1bW5dLmdldENvZGV3b3JkcygpW2NvZGV3b3Jkc1Jvd107XG4gICAgICAgICAgICAgICAgaWYgKGNvZGV3b3JkICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgaW52YWxpZFJvd0NvdW50cyA9IERldGVjdGlvblJlc3VsdC5hZGp1c3RSb3dOdW1iZXJJZlZhbGlkKHJvd0luZGljYXRvclJvd051bWJlciwgaW52YWxpZFJvd0NvdW50cywgY29kZXdvcmQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNvZGV3b3JkLmhhc1ZhbGlkUm93TnVtYmVyKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuYWRqdXN0ZWRDb3VudCsrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmFkanVzdGVkQ291bnQ7XG4gICAgfTtcbiAgICBEZXRlY3Rpb25SZXN1bHQuYWRqdXN0Um93TnVtYmVySWZWYWxpZCA9IGZ1bmN0aW9uIChyb3dJbmRpY2F0b3JSb3dOdW1iZXIsIGludmFsaWRSb3dDb3VudHMsIGNvZGV3b3JkKSB7XG4gICAgICAgIGlmIChjb2Rld29yZCA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gaW52YWxpZFJvd0NvdW50cztcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWNvZGV3b3JkLmhhc1ZhbGlkUm93TnVtYmVyKCkpIHtcbiAgICAgICAgICAgIGlmIChjb2Rld29yZC5pc1ZhbGlkUm93TnVtYmVyKHJvd0luZGljYXRvclJvd051bWJlcikpIHtcbiAgICAgICAgICAgICAgICBjb2Rld29yZC5zZXRSb3dOdW1iZXIocm93SW5kaWNhdG9yUm93TnVtYmVyKTtcbiAgICAgICAgICAgICAgICBpbnZhbGlkUm93Q291bnRzID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICsraW52YWxpZFJvd0NvdW50cztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaW52YWxpZFJvd0NvdW50cztcbiAgICB9O1xuICAgIERldGVjdGlvblJlc3VsdC5wcm90b3R5cGUuYWRqdXN0Um93TnVtYmVycyA9IGZ1bmN0aW9uIChiYXJjb2RlQ29sdW1uLCBjb2Rld29yZHNSb3csIGNvZGV3b3Jkcykge1xuICAgICAgICB2YXIgZV8xLCBfYTtcbiAgICAgICAgdmFyIGNvZGV3b3JkID0gY29kZXdvcmRzW2NvZGV3b3Jkc1Jvd107XG4gICAgICAgIHZhciBwcmV2aW91c0NvbHVtbkNvZGV3b3JkcyA9IHRoaXMuZGV0ZWN0aW9uUmVzdWx0Q29sdW1uc1tiYXJjb2RlQ29sdW1uIC0gMV0uZ2V0Q29kZXdvcmRzKCk7XG4gICAgICAgIHZhciBuZXh0Q29sdW1uQ29kZXdvcmRzID0gcHJldmlvdXNDb2x1bW5Db2Rld29yZHM7XG4gICAgICAgIGlmICh0aGlzLmRldGVjdGlvblJlc3VsdENvbHVtbnNbYmFyY29kZUNvbHVtbiArIDFdICE9IG51bGwpIHtcbiAgICAgICAgICAgIG5leHRDb2x1bW5Db2Rld29yZHMgPSB0aGlzLmRldGVjdGlvblJlc3VsdENvbHVtbnNbYmFyY29kZUNvbHVtbiArIDFdLmdldENvZGV3b3JkcygpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGxldCBvdGhlckNvZGV3b3JkczogQ29kZXdvcmRbXSA9IG5ldyBDb2Rld29yZFsxNF07XG4gICAgICAgIHZhciBvdGhlckNvZGV3b3JkcyA9IG5ldyBBcnJheSgxNCk7XG4gICAgICAgIG90aGVyQ29kZXdvcmRzWzJdID0gcHJldmlvdXNDb2x1bW5Db2Rld29yZHNbY29kZXdvcmRzUm93XTtcbiAgICAgICAgb3RoZXJDb2Rld29yZHNbM10gPSBuZXh0Q29sdW1uQ29kZXdvcmRzW2NvZGV3b3Jkc1Jvd107XG4gICAgICAgIGlmIChjb2Rld29yZHNSb3cgPiAwKSB7XG4gICAgICAgICAgICBvdGhlckNvZGV3b3Jkc1swXSA9IGNvZGV3b3Jkc1tjb2Rld29yZHNSb3cgLSAxXTtcbiAgICAgICAgICAgIG90aGVyQ29kZXdvcmRzWzRdID0gcHJldmlvdXNDb2x1bW5Db2Rld29yZHNbY29kZXdvcmRzUm93IC0gMV07XG4gICAgICAgICAgICBvdGhlckNvZGV3b3Jkc1s1XSA9IG5leHRDb2x1bW5Db2Rld29yZHNbY29kZXdvcmRzUm93IC0gMV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvZGV3b3Jkc1JvdyA+IDEpIHtcbiAgICAgICAgICAgIG90aGVyQ29kZXdvcmRzWzhdID0gY29kZXdvcmRzW2NvZGV3b3Jkc1JvdyAtIDJdO1xuICAgICAgICAgICAgb3RoZXJDb2Rld29yZHNbMTBdID0gcHJldmlvdXNDb2x1bW5Db2Rld29yZHNbY29kZXdvcmRzUm93IC0gMl07XG4gICAgICAgICAgICBvdGhlckNvZGV3b3Jkc1sxMV0gPSBuZXh0Q29sdW1uQ29kZXdvcmRzW2NvZGV3b3Jkc1JvdyAtIDJdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb2Rld29yZHNSb3cgPCBjb2Rld29yZHMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgb3RoZXJDb2Rld29yZHNbMV0gPSBjb2Rld29yZHNbY29kZXdvcmRzUm93ICsgMV07XG4gICAgICAgICAgICBvdGhlckNvZGV3b3Jkc1s2XSA9IHByZXZpb3VzQ29sdW1uQ29kZXdvcmRzW2NvZGV3b3Jkc1JvdyArIDFdO1xuICAgICAgICAgICAgb3RoZXJDb2Rld29yZHNbN10gPSBuZXh0Q29sdW1uQ29kZXdvcmRzW2NvZGV3b3Jkc1JvdyArIDFdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb2Rld29yZHNSb3cgPCBjb2Rld29yZHMubGVuZ3RoIC0gMikge1xuICAgICAgICAgICAgb3RoZXJDb2Rld29yZHNbOV0gPSBjb2Rld29yZHNbY29kZXdvcmRzUm93ICsgMl07XG4gICAgICAgICAgICBvdGhlckNvZGV3b3Jkc1sxMl0gPSBwcmV2aW91c0NvbHVtbkNvZGV3b3Jkc1tjb2Rld29yZHNSb3cgKyAyXTtcbiAgICAgICAgICAgIG90aGVyQ29kZXdvcmRzWzEzXSA9IG5leHRDb2x1bW5Db2Rld29yZHNbY29kZXdvcmRzUm93ICsgMl07XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAodmFyIG90aGVyQ29kZXdvcmRzXzEgPSBfX3ZhbHVlcyhvdGhlckNvZGV3b3JkcyksIG90aGVyQ29kZXdvcmRzXzFfMSA9IG90aGVyQ29kZXdvcmRzXzEubmV4dCgpOyAhb3RoZXJDb2Rld29yZHNfMV8xLmRvbmU7IG90aGVyQ29kZXdvcmRzXzFfMSA9IG90aGVyQ29kZXdvcmRzXzEubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIG90aGVyQ29kZXdvcmQgPSBvdGhlckNvZGV3b3Jkc18xXzEudmFsdWU7XG4gICAgICAgICAgICAgICAgaWYgKERldGVjdGlvblJlc3VsdC5hZGp1c3RSb3dOdW1iZXIoY29kZXdvcmQsIG90aGVyQ29kZXdvcmQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChvdGhlckNvZGV3b3Jkc18xXzEgJiYgIW90aGVyQ29kZXdvcmRzXzFfMS5kb25lICYmIChfYSA9IG90aGVyQ29kZXdvcmRzXzEucmV0dXJuKSkgX2EuY2FsbChvdGhlckNvZGV3b3Jkc18xKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogQHJldHVybiB0cnVlLCBpZiByb3cgbnVtYmVyIHdhcyBhZGp1c3RlZCwgZmFsc2Ugb3RoZXJ3aXNlXG4gICAgICovXG4gICAgRGV0ZWN0aW9uUmVzdWx0LmFkanVzdFJvd051bWJlciA9IGZ1bmN0aW9uIChjb2Rld29yZCwgb3RoZXJDb2Rld29yZCkge1xuICAgICAgICBpZiAob3RoZXJDb2Rld29yZCA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG90aGVyQ29kZXdvcmQuaGFzVmFsaWRSb3dOdW1iZXIoKSAmJiBvdGhlckNvZGV3b3JkLmdldEJ1Y2tldCgpID09PSBjb2Rld29yZC5nZXRCdWNrZXQoKSkge1xuICAgICAgICAgICAgY29kZXdvcmQuc2V0Um93TnVtYmVyKG90aGVyQ29kZXdvcmQuZ2V0Um93TnVtYmVyKCkpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgRGV0ZWN0aW9uUmVzdWx0LnByb3RvdHlwZS5nZXRCYXJjb2RlQ29sdW1uQ291bnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhcmNvZGVDb2x1bW5Db3VudDtcbiAgICB9O1xuICAgIERldGVjdGlvblJlc3VsdC5wcm90b3R5cGUuZ2V0QmFyY29kZVJvd0NvdW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXJjb2RlTWV0YWRhdGEuZ2V0Um93Q291bnQoKTtcbiAgICB9O1xuICAgIERldGVjdGlvblJlc3VsdC5wcm90b3R5cGUuZ2V0QmFyY29kZUVDTGV2ZWwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhcmNvZGVNZXRhZGF0YS5nZXRFcnJvckNvcnJlY3Rpb25MZXZlbCgpO1xuICAgIH07XG4gICAgRGV0ZWN0aW9uUmVzdWx0LnByb3RvdHlwZS5zZXRCb3VuZGluZ0JveCA9IGZ1bmN0aW9uIChib3VuZGluZ0JveCkge1xuICAgICAgICB0aGlzLmJvdW5kaW5nQm94ID0gYm91bmRpbmdCb3g7XG4gICAgfTtcbiAgICBEZXRlY3Rpb25SZXN1bHQucHJvdG90eXBlLmdldEJvdW5kaW5nQm94ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ib3VuZGluZ0JveDtcbiAgICB9O1xuICAgIERldGVjdGlvblJlc3VsdC5wcm90b3R5cGUuc2V0RGV0ZWN0aW9uUmVzdWx0Q29sdW1uID0gZnVuY3Rpb24gKGJhcmNvZGVDb2x1bW4sIGRldGVjdGlvblJlc3VsdENvbHVtbikge1xuICAgICAgICB0aGlzLmRldGVjdGlvblJlc3VsdENvbHVtbnNbYmFyY29kZUNvbHVtbl0gPSBkZXRlY3Rpb25SZXN1bHRDb2x1bW47XG4gICAgfTtcbiAgICBEZXRlY3Rpb25SZXN1bHQucHJvdG90eXBlLmdldERldGVjdGlvblJlc3VsdENvbHVtbiA9IGZ1bmN0aW9uIChiYXJjb2RlQ29sdW1uKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRldGVjdGlvblJlc3VsdENvbHVtbnNbYmFyY29kZUNvbHVtbl07XG4gICAgfTtcbiAgICAvLyBAT3ZlcnJpZGVcbiAgICBEZXRlY3Rpb25SZXN1bHQucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcm93SW5kaWNhdG9yQ29sdW1uID0gdGhpcy5kZXRlY3Rpb25SZXN1bHRDb2x1bW5zWzBdO1xuICAgICAgICBpZiAocm93SW5kaWNhdG9yQ29sdW1uID09IG51bGwpIHtcbiAgICAgICAgICAgIHJvd0luZGljYXRvckNvbHVtbiA9IHRoaXMuZGV0ZWN0aW9uUmVzdWx0Q29sdW1uc1t0aGlzLmJhcmNvZGVDb2x1bW5Db3VudCArIDFdO1xuICAgICAgICB9XG4gICAgICAgIC8vIHRyeSAoXG4gICAgICAgIHZhciBmb3JtYXR0ZXIgPSBuZXcgRm9ybWF0dGVyXzEuZGVmYXVsdCgpO1xuICAgICAgICAvLyApIHtcbiAgICAgICAgZm9yICh2YXIgY29kZXdvcmRzUm93IC8qaW50Ki8gPSAwOyBjb2Rld29yZHNSb3cgPCByb3dJbmRpY2F0b3JDb2x1bW4uZ2V0Q29kZXdvcmRzKCkubGVuZ3RoOyBjb2Rld29yZHNSb3crKykge1xuICAgICAgICAgICAgZm9ybWF0dGVyLmZvcm1hdCgnQ1cgJTNkOicsIGNvZGV3b3Jkc1Jvdyk7XG4gICAgICAgICAgICBmb3IgKHZhciBiYXJjb2RlQ29sdW1uIC8qaW50Ki8gPSAwOyBiYXJjb2RlQ29sdW1uIDwgdGhpcy5iYXJjb2RlQ29sdW1uQ291bnQgKyAyOyBiYXJjb2RlQ29sdW1uKyspIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kZXRlY3Rpb25SZXN1bHRDb2x1bW5zW2JhcmNvZGVDb2x1bW5dID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyLmZvcm1hdCgnICAgIHwgICAnKTtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBjb2Rld29yZCA9IHRoaXMuZGV0ZWN0aW9uUmVzdWx0Q29sdW1uc1tiYXJjb2RlQ29sdW1uXS5nZXRDb2Rld29yZHMoKVtjb2Rld29yZHNSb3ddO1xuICAgICAgICAgICAgICAgIGlmIChjb2Rld29yZCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlci5mb3JtYXQoJyAgICB8ICAgJyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3JtYXR0ZXIuZm9ybWF0KCcgJTNkfCUzZCcsIGNvZGV3b3JkLmdldFJvd051bWJlcigpLCBjb2Rld29yZC5nZXRWYWx1ZSgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvcm1hdHRlci5mb3JtYXQoJyVuJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZvcm1hdHRlci50b1N0cmluZygpO1xuICAgICAgICAvLyB9XG4gICAgfTtcbiAgICByZXR1cm4gRGV0ZWN0aW9uUmVzdWx0O1xufSgpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IERldGVjdGlvblJlc3VsdDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURldGVjdGlvblJlc3VsdC5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8qXG4gKiBDb3B5cmlnaHQgMjAxMyBaWGluZyBhdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLy8gcGFja2FnZSBjb20uZ29vZ2xlLnp4aW5nLnBkZjQxNy5kZWNvZGVyO1xuLyoqXG4gKiBAYXV0aG9yIEd1ZW50aGVyIEdyYXVcbiAqL1xudmFyIENvZGV3b3JkID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIENvZGV3b3JkKHN0YXJ0WCwgZW5kWCwgYnVja2V0LCB2YWx1ZSkge1xuICAgICAgICB0aGlzLnJvd051bWJlciA9IENvZGV3b3JkLkJBUkNPREVfUk9XX1VOS05PV047XG4gICAgICAgIHRoaXMuc3RhcnRYID0gTWF0aC50cnVuYyhzdGFydFgpO1xuICAgICAgICB0aGlzLmVuZFggPSBNYXRoLnRydW5jKGVuZFgpO1xuICAgICAgICB0aGlzLmJ1Y2tldCA9IE1hdGgudHJ1bmMoYnVja2V0KTtcbiAgICAgICAgdGhpcy52YWx1ZSA9IE1hdGgudHJ1bmModmFsdWUpO1xuICAgIH1cbiAgICBDb2Rld29yZC5wcm90b3R5cGUuaGFzVmFsaWRSb3dOdW1iZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWRSb3dOdW1iZXIodGhpcy5yb3dOdW1iZXIpO1xuICAgIH07XG4gICAgQ29kZXdvcmQucHJvdG90eXBlLmlzVmFsaWRSb3dOdW1iZXIgPSBmdW5jdGlvbiAocm93TnVtYmVyKSB7XG4gICAgICAgIHJldHVybiByb3dOdW1iZXIgIT09IENvZGV3b3JkLkJBUkNPREVfUk9XX1VOS05PV04gJiYgdGhpcy5idWNrZXQgPT09IChyb3dOdW1iZXIgJSAzKSAqIDM7XG4gICAgfTtcbiAgICBDb2Rld29yZC5wcm90b3R5cGUuc2V0Um93TnVtYmVyQXNSb3dJbmRpY2F0b3JDb2x1bW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucm93TnVtYmVyID0gTWF0aC50cnVuYygoTWF0aC50cnVuYyh0aGlzLnZhbHVlIC8gMzApKSAqIDMgKyBNYXRoLnRydW5jKHRoaXMuYnVja2V0IC8gMykpO1xuICAgIH07XG4gICAgQ29kZXdvcmQucHJvdG90eXBlLmdldFdpZHRoID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbmRYIC0gdGhpcy5zdGFydFg7XG4gICAgfTtcbiAgICBDb2Rld29yZC5wcm90b3R5cGUuZ2V0U3RhcnRYID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFydFg7XG4gICAgfTtcbiAgICBDb2Rld29yZC5wcm90b3R5cGUuZ2V0RW5kWCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW5kWDtcbiAgICB9O1xuICAgIENvZGV3b3JkLnByb3RvdHlwZS5nZXRCdWNrZXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJ1Y2tldDtcbiAgICB9O1xuICAgIENvZGV3b3JkLnByb3RvdHlwZS5nZXRWYWx1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfTtcbiAgICBDb2Rld29yZC5wcm90b3R5cGUuZ2V0Um93TnVtYmVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yb3dOdW1iZXI7XG4gICAgfTtcbiAgICBDb2Rld29yZC5wcm90b3R5cGUuc2V0Um93TnVtYmVyID0gZnVuY3Rpb24gKHJvd051bWJlcikge1xuICAgICAgICB0aGlzLnJvd051bWJlciA9IHJvd051bWJlcjtcbiAgICB9O1xuICAgIC8vICAgQE92ZXJyaWRlXG4gICAgQ29kZXdvcmQucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yb3dOdW1iZXIgKyAnfCcgKyB0aGlzLnZhbHVlO1xuICAgIH07XG4gICAgQ29kZXdvcmQuQkFSQ09ERV9ST1dfVU5LTk9XTiA9IC0xO1xuICAgIHJldHVybiBDb2Rld29yZDtcbn0oKSk7XG5leHBvcnRzLmRlZmF1bHQgPSBDb2Rld29yZDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUNvZGV3b3JkLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuLypcbiogQ29weXJpZ2h0IDIwMTMgWlhpbmcgYXV0aG9yc1xuKlxuKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4qIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuKlxuKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuKlxuKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4qIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4qIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLy8gcGFja2FnZSBjb20uZ29vZ2xlLnp4aW5nLnBkZjQxNy5kZWNvZGVyO1xuLy8gaW1wb3J0IGNvbS5nb29nbGUuenhpbmcuY29tbW9uLmRldGVjdG9yLk1hdGhVdGlscztcbnZhciBNYXRoVXRpbHNfMSA9IHJlcXVpcmUoXCIuLi8uLi9jb21tb24vZGV0ZWN0b3IvTWF0aFV0aWxzXCIpO1xuLy8gaW1wb3J0IGNvbS5nb29nbGUuenhpbmcucGRmNDE3LlBERjQxN0NvbW1vbjtcbnZhciBQREY0MTdDb21tb25fMSA9IHJlcXVpcmUoXCIuLi9QREY0MTdDb21tb25cIik7XG52YXIgRmxvYXRfMSA9IHJlcXVpcmUoXCIuLi8uLi91dGlsL0Zsb2F0XCIpO1xuLyoqXG4gKiBAYXV0aG9yIEd1ZW50aGVyIEdyYXVcbiAqIEBhdXRob3IgY3JlYXRhbGUgR21iSCAoY2hyaXN0b3BoLnNjaHVsekBjcmVhdGFsZS5kZSlcbiAqL1xudmFyIFBERjQxN0NvZGV3b3JkRGVjb2RlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBQREY0MTdDb2Rld29yZERlY29kZXIoKSB7XG4gICAgfVxuICAgIC8qIEBub3RlXG4gICAgICogdGhpcyBhY3Rpb24gaGF2ZSB0byBiZSBwZXJmb3JtZWQgYmVmb3JlIGZpcnN0IHVzZSBvZiBjbGFzc1xuICAgICAqIC0gc3RhdGljIGNvbnN0cnVjdG9yXG4gICAgICogd29ya2luZyB3aXRoIDMyYml0IGZsb2F0IChiYXNlZCBmcm9tIEphdmEgbG9naWMpXG4gICAgKi9cbiAgICBQREY0MTdDb2Rld29yZERlY29kZXIuaW5pdGlhbGl6ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8gUHJlLWNvbXB1dGVzIHRoZSBzeW1ib2wgcmF0aW8gdGFibGUuXG4gICAgICAgIGZvciAoIC8qaW50Ki92YXIgaSA9IDA7IGkgPCBQREY0MTdDb21tb25fMS5kZWZhdWx0LlNZTUJPTF9UQUJMRS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIGN1cnJlbnRTeW1ib2wgPSBQREY0MTdDb21tb25fMS5kZWZhdWx0LlNZTUJPTF9UQUJMRVtpXTtcbiAgICAgICAgICAgIHZhciBjdXJyZW50Qml0ID0gY3VycmVudFN5bWJvbCAmIDB4MTtcbiAgICAgICAgICAgIGZvciAoIC8qaW50Ki92YXIgaiA9IDA7IGogPCBQREY0MTdDb21tb25fMS5kZWZhdWx0LkJBUlNfSU5fTU9EVUxFOyBqKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgc2l6ZSA9IDAuMDtcbiAgICAgICAgICAgICAgICB3aGlsZSAoKGN1cnJlbnRTeW1ib2wgJiAweDEpID09PSBjdXJyZW50Qml0KSB7XG4gICAgICAgICAgICAgICAgICAgIHNpemUgKz0gMS4wO1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3ltYm9sID4+PSAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjdXJyZW50Qml0ID0gY3VycmVudFN5bWJvbCAmIDB4MTtcbiAgICAgICAgICAgICAgICBpZiAoIVBERjQxN0NvZGV3b3JkRGVjb2Rlci5SQVRJT1NfVEFCTEVbaV0pIHtcbiAgICAgICAgICAgICAgICAgICAgUERGNDE3Q29kZXdvcmREZWNvZGVyLlJBVElPU19UQUJMRVtpXSA9IG5ldyBBcnJheShQREY0MTdDb21tb25fMS5kZWZhdWx0LkJBUlNfSU5fTU9EVUxFKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgUERGNDE3Q29kZXdvcmREZWNvZGVyLlJBVElPU19UQUJMRVtpXVtQREY0MTdDb21tb25fMS5kZWZhdWx0LkJBUlNfSU5fTU9EVUxFIC0gaiAtIDFdID0gTWF0aC5mcm91bmQoc2l6ZSAvIFBERjQxN0NvbW1vbl8xLmRlZmF1bHQuTU9EVUxFU19JTl9DT0RFV09SRCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5iU3ltYm9sVGFibGVSZWFkeSA9IHRydWU7XG4gICAgfTtcbiAgICBQREY0MTdDb2Rld29yZERlY29kZXIuZ2V0RGVjb2RlZFZhbHVlID0gZnVuY3Rpb24gKG1vZHVsZUJpdENvdW50KSB7XG4gICAgICAgIHZhciBkZWNvZGVkVmFsdWUgPSBQREY0MTdDb2Rld29yZERlY29kZXIuZ2V0RGVjb2RlZENvZGV3b3JkVmFsdWUoUERGNDE3Q29kZXdvcmREZWNvZGVyLnNhbXBsZUJpdENvdW50cyhtb2R1bGVCaXRDb3VudCkpO1xuICAgICAgICBpZiAoZGVjb2RlZFZhbHVlICE9PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIGRlY29kZWRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUERGNDE3Q29kZXdvcmREZWNvZGVyLmdldENsb3Nlc3REZWNvZGVkVmFsdWUobW9kdWxlQml0Q291bnQpO1xuICAgIH07XG4gICAgUERGNDE3Q29kZXdvcmREZWNvZGVyLnNhbXBsZUJpdENvdW50cyA9IGZ1bmN0aW9uIChtb2R1bGVCaXRDb3VudCkge1xuICAgICAgICB2YXIgYml0Q291bnRTdW0gPSBNYXRoVXRpbHNfMS5kZWZhdWx0LnN1bShtb2R1bGVCaXRDb3VudCk7XG4gICAgICAgIHZhciByZXN1bHQgPSBuZXcgSW50MzJBcnJheShQREY0MTdDb21tb25fMS5kZWZhdWx0LkJBUlNfSU5fTU9EVUxFKTtcbiAgICAgICAgdmFyIGJpdENvdW50SW5kZXggPSAwO1xuICAgICAgICB2YXIgc3VtUHJldmlvdXNCaXRzID0gMDtcbiAgICAgICAgZm9yICggLyppbnQqL3ZhciBpID0gMDsgaSA8IFBERjQxN0NvbW1vbl8xLmRlZmF1bHQuTU9EVUxFU19JTl9DT0RFV09SRDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgc2FtcGxlSW5kZXggPSBiaXRDb3VudFN1bSAvICgyICogUERGNDE3Q29tbW9uXzEuZGVmYXVsdC5NT0RVTEVTX0lOX0NPREVXT1JEKSArXG4gICAgICAgICAgICAgICAgKGkgKiBiaXRDb3VudFN1bSkgLyBQREY0MTdDb21tb25fMS5kZWZhdWx0Lk1PRFVMRVNfSU5fQ09ERVdPUkQ7XG4gICAgICAgICAgICBpZiAoc3VtUHJldmlvdXNCaXRzICsgbW9kdWxlQml0Q291bnRbYml0Q291bnRJbmRleF0gPD0gc2FtcGxlSW5kZXgpIHtcbiAgICAgICAgICAgICAgICBzdW1QcmV2aW91c0JpdHMgKz0gbW9kdWxlQml0Q291bnRbYml0Q291bnRJbmRleF07XG4gICAgICAgICAgICAgICAgYml0Q291bnRJbmRleCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0W2JpdENvdW50SW5kZXhdKys7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIFBERjQxN0NvZGV3b3JkRGVjb2Rlci5nZXREZWNvZGVkQ29kZXdvcmRWYWx1ZSA9IGZ1bmN0aW9uIChtb2R1bGVCaXRDb3VudCkge1xuICAgICAgICB2YXIgZGVjb2RlZFZhbHVlID0gUERGNDE3Q29kZXdvcmREZWNvZGVyLmdldEJpdFZhbHVlKG1vZHVsZUJpdENvdW50KTtcbiAgICAgICAgcmV0dXJuIFBERjQxN0NvbW1vbl8xLmRlZmF1bHQuZ2V0Q29kZXdvcmQoZGVjb2RlZFZhbHVlKSA9PT0gLTEgPyAtMSA6IGRlY29kZWRWYWx1ZTtcbiAgICB9O1xuICAgIFBERjQxN0NvZGV3b3JkRGVjb2Rlci5nZXRCaXRWYWx1ZSA9IGZ1bmN0aW9uIChtb2R1bGVCaXRDb3VudCkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gLypsb25nKi8gMDtcbiAgICAgICAgZm9yICh2YXIgLyppbnQqLyBpID0gMDsgaSA8IG1vZHVsZUJpdENvdW50Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKCAvKmludCovdmFyIGJpdCA9IDA7IGJpdCA8IG1vZHVsZUJpdENvdW50W2ldOyBiaXQrKykge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgPDwgMSkgfCAoaSAlIDIgPT09IDAgPyAxIDogMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE1hdGgudHJ1bmMocmVzdWx0KTtcbiAgICB9O1xuICAgIC8vIHdvcmtpbmcgd2l0aCAzMmJpdCBmbG9hdCAoYXMgaW4gSmF2YSlcbiAgICBQREY0MTdDb2Rld29yZERlY29kZXIuZ2V0Q2xvc2VzdERlY29kZWRWYWx1ZSA9IGZ1bmN0aW9uIChtb2R1bGVCaXRDb3VudCkge1xuICAgICAgICB2YXIgYml0Q291bnRTdW0gPSBNYXRoVXRpbHNfMS5kZWZhdWx0LnN1bShtb2R1bGVCaXRDb3VudCk7XG4gICAgICAgIHZhciBiaXRDb3VudFJhdGlvcyA9IG5ldyBBcnJheShQREY0MTdDb21tb25fMS5kZWZhdWx0LkJBUlNfSU5fTU9EVUxFKTtcbiAgICAgICAgaWYgKGJpdENvdW50U3VtID4gMSkge1xuICAgICAgICAgICAgZm9yICh2YXIgLyppbnQqLyBpID0gMDsgaSA8IGJpdENvdW50UmF0aW9zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgYml0Q291bnRSYXRpb3NbaV0gPSBNYXRoLmZyb3VuZChtb2R1bGVCaXRDb3VudFtpXSAvIGJpdENvdW50U3VtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgYmVzdE1hdGNoRXJyb3IgPSBGbG9hdF8xLmRlZmF1bHQuTUFYX1ZBTFVFO1xuICAgICAgICB2YXIgYmVzdE1hdGNoID0gLTE7XG4gICAgICAgIGlmICghdGhpcy5iU3ltYm9sVGFibGVSZWFkeSkge1xuICAgICAgICAgICAgUERGNDE3Q29kZXdvcmREZWNvZGVyLmluaXRpYWxpemUoKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKCAvKmludCovdmFyIGogPSAwOyBqIDwgUERGNDE3Q29kZXdvcmREZWNvZGVyLlJBVElPU19UQUJMRS5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgdmFyIGVycm9yID0gMC4wO1xuICAgICAgICAgICAgdmFyIHJhdGlvVGFibGVSb3cgPSBQREY0MTdDb2Rld29yZERlY29kZXIuUkFUSU9TX1RBQkxFW2pdO1xuICAgICAgICAgICAgZm9yICggLyppbnQqL3ZhciBrID0gMDsgayA8IFBERjQxN0NvbW1vbl8xLmRlZmF1bHQuQkFSU19JTl9NT0RVTEU7IGsrKykge1xuICAgICAgICAgICAgICAgIHZhciBkaWZmID0gTWF0aC5mcm91bmQocmF0aW9UYWJsZVJvd1trXSAtIGJpdENvdW50UmF0aW9zW2tdKTtcbiAgICAgICAgICAgICAgICBlcnJvciArPSBNYXRoLmZyb3VuZChkaWZmICogZGlmZik7XG4gICAgICAgICAgICAgICAgaWYgKGVycm9yID49IGJlc3RNYXRjaEVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlcnJvciA8IGJlc3RNYXRjaEVycm9yKSB7XG4gICAgICAgICAgICAgICAgYmVzdE1hdGNoRXJyb3IgPSBlcnJvcjtcbiAgICAgICAgICAgICAgICBiZXN0TWF0Y2ggPSBQREY0MTdDb21tb25fMS5kZWZhdWx0LlNZTUJPTF9UQUJMRVtqXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYmVzdE1hdGNoO1xuICAgIH07XG4gICAgLy8gZmxhZyB0aGF0IHRoZSB0YWJsZSBpcyByZWFkeSBmb3IgdXNlXG4gICAgUERGNDE3Q29kZXdvcmREZWNvZGVyLmJTeW1ib2xUYWJsZVJlYWR5ID0gZmFsc2U7XG4gICAgUERGNDE3Q29kZXdvcmREZWNvZGVyLlJBVElPU19UQUJMRSA9IG5ldyBBcnJheShQREY0MTdDb21tb25fMS5kZWZhdWx0LlNZTUJPTF9UQUJMRS5sZW5ndGgpLm1hcChmdW5jdGlvbiAoeCkgeyByZXR1cm4geCA9IG5ldyBBcnJheShQREY0MTdDb21tb25fMS5kZWZhdWx0LkJBUlNfSU5fTU9EVUxFKTsgfSk7XG4gICAgcmV0dXJuIFBERjQxN0NvZGV3b3JkRGVjb2Rlcjtcbn0oKSk7XG5leHBvcnRzLmRlZmF1bHQgPSBQREY0MTdDb2Rld29yZERlY29kZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1QREY0MTdDb2Rld29yZERlY29kZXIuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IDIwMTMgWlhpbmcgYXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8vIHBhY2thZ2UgY29tLmdvb2dsZS56eGluZy5wZGY0MTc7XG4vKipcbiAqIEBhdXRob3IgR3VlbnRoZXIgR3JhdVxuICovXG52YXIgUERGNDE3UmVzdWx0TWV0YWRhdGEgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gUERGNDE3UmVzdWx0TWV0YWRhdGEoKSB7XG4gICAgICAgIHRoaXMuc2VnbWVudENvdW50ID0gLTE7XG4gICAgICAgIHRoaXMuZmlsZVNpemUgPSAtMTtcbiAgICAgICAgdGhpcy50aW1lc3RhbXAgPSAtMTtcbiAgICAgICAgdGhpcy5jaGVja3N1bSA9IC0xO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBUaGUgU2VnbWVudCBJRCByZXByZXNlbnRzIHRoZSBzZWdtZW50IG9mIHRoZSB3aG9sZSBmaWxlIGRpc3RyaWJ1dGVkIG92ZXIgZGlmZmVyZW50IHN5bWJvbHMuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIEZpbGUgc2VnbWVudCBpbmRleFxuICAgICAqL1xuICAgIFBERjQxN1Jlc3VsdE1ldGFkYXRhLnByb3RvdHlwZS5nZXRTZWdtZW50SW5kZXggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlZ21lbnRJbmRleDtcbiAgICB9O1xuICAgIFBERjQxN1Jlc3VsdE1ldGFkYXRhLnByb3RvdHlwZS5zZXRTZWdtZW50SW5kZXggPSBmdW5jdGlvbiAoc2VnbWVudEluZGV4KSB7XG4gICAgICAgIHRoaXMuc2VnbWVudEluZGV4ID0gc2VnbWVudEluZGV4O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogSXMgdGhlIHNhbWUgZm9yIGVhY2ggcmVsYXRlZCBQREY0MTcgc3ltYm9sXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIEZpbGUgSURcbiAgICAgKi9cbiAgICBQREY0MTdSZXN1bHRNZXRhZGF0YS5wcm90b3R5cGUuZ2V0RmlsZUlkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5maWxlSWQ7XG4gICAgfTtcbiAgICBQREY0MTdSZXN1bHRNZXRhZGF0YS5wcm90b3R5cGUuc2V0RmlsZUlkID0gZnVuY3Rpb24gKGZpbGVJZCkge1xuICAgICAgICB0aGlzLmZpbGVJZCA9IGZpbGVJZDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEByZXR1cm4gYWx3YXlzIG51bGxcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgZGVkaWNhdGVkIGFscmVhZHkgcGFyc2VkIGZpZWxkc1xuICAgICAqL1xuICAgIC8vICAgQERlcHJlY2F0ZWRcbiAgICBQREY0MTdSZXN1bHRNZXRhZGF0YS5wcm90b3R5cGUuZ2V0T3B0aW9uYWxEYXRhID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25hbERhdGE7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0gb3B0aW9uYWxEYXRhIG9sZCBvcHRpb25hbCBkYXRhIGZvcm1hdCBhcyBpbnQgYXJyYXlcbiAgICAgKiBAZGVwcmVjYXRlZCBwYXJzZSBhbmQgdXNlIG5ldyBmaWVsZHNcbiAgICAgKi9cbiAgICAvLyAgIEBEZXByZWNhdGVkXG4gICAgUERGNDE3UmVzdWx0TWV0YWRhdGEucHJvdG90eXBlLnNldE9wdGlvbmFsRGF0YSA9IGZ1bmN0aW9uIChvcHRpb25hbERhdGEpIHtcbiAgICAgICAgdGhpcy5vcHRpb25hbERhdGEgPSBvcHRpb25hbERhdGE7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHRydWUgaWYgaXQgaXMgdGhlIGxhc3Qgc2VnbWVudFxuICAgICAqL1xuICAgIFBERjQxN1Jlc3VsdE1ldGFkYXRhLnByb3RvdHlwZS5pc0xhc3RTZWdtZW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sYXN0U2VnbWVudDtcbiAgICB9O1xuICAgIFBERjQxN1Jlc3VsdE1ldGFkYXRhLnByb3RvdHlwZS5zZXRMYXN0U2VnbWVudCA9IGZ1bmN0aW9uIChsYXN0U2VnbWVudCkge1xuICAgICAgICB0aGlzLmxhc3RTZWdtZW50ID0gbGFzdFNlZ21lbnQ7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIGNvdW50IG9mIHNlZ21lbnRzLCAtMSBpZiBub3Qgc2V0XG4gICAgICovXG4gICAgUERGNDE3UmVzdWx0TWV0YWRhdGEucHJvdG90eXBlLmdldFNlZ21lbnRDb3VudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VnbWVudENvdW50O1xuICAgIH07XG4gICAgUERGNDE3UmVzdWx0TWV0YWRhdGEucHJvdG90eXBlLnNldFNlZ21lbnRDb3VudCA9IGZ1bmN0aW9uIChzZWdtZW50Q291bnQgLyppbnQqLykge1xuICAgICAgICB0aGlzLnNlZ21lbnRDb3VudCA9IHNlZ21lbnRDb3VudDtcbiAgICB9O1xuICAgIFBERjQxN1Jlc3VsdE1ldGFkYXRhLnByb3RvdHlwZS5nZXRTZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbmRlciB8fCBudWxsO1xuICAgIH07XG4gICAgUERGNDE3UmVzdWx0TWV0YWRhdGEucHJvdG90eXBlLnNldFNlbmRlciA9IGZ1bmN0aW9uIChzZW5kZXIpIHtcbiAgICAgICAgdGhpcy5zZW5kZXIgPSBzZW5kZXI7XG4gICAgfTtcbiAgICBQREY0MTdSZXN1bHRNZXRhZGF0YS5wcm90b3R5cGUuZ2V0QWRkcmVzc2VlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRyZXNzZWUgfHwgbnVsbDtcbiAgICB9O1xuICAgIFBERjQxN1Jlc3VsdE1ldGFkYXRhLnByb3RvdHlwZS5zZXRBZGRyZXNzZWUgPSBmdW5jdGlvbiAoYWRkcmVzc2VlKSB7XG4gICAgICAgIHRoaXMuYWRkcmVzc2VlID0gYWRkcmVzc2VlO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogRmlsZW5hbWUgb2YgdGhlIGVuY29kZWQgZmlsZVxuICAgICAqXG4gICAgICogQHJldHVybiBmaWxlbmFtZVxuICAgICAqL1xuICAgIFBERjQxN1Jlc3VsdE1ldGFkYXRhLnByb3RvdHlwZS5nZXRGaWxlTmFtZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsZU5hbWU7XG4gICAgfTtcbiAgICBQREY0MTdSZXN1bHRNZXRhZGF0YS5wcm90b3R5cGUuc2V0RmlsZU5hbWUgPSBmdW5jdGlvbiAoZmlsZU5hbWUpIHtcbiAgICAgICAgdGhpcy5maWxlTmFtZSA9IGZpbGVOYW1lO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogZmlsZXNpemUgaW4gYnl0ZXMgb2YgdGhlIGVuY29kZWQgZmlsZVxuICAgICAqXG4gICAgICogQHJldHVybiBmaWxlc2l6ZSBpbiBieXRlcywgLTEgaWYgbm90IHNldFxuICAgICAqL1xuICAgIFBERjQxN1Jlc3VsdE1ldGFkYXRhLnByb3RvdHlwZS5nZXRGaWxlU2l6ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsZVNpemU7XG4gICAgfTtcbiAgICBQREY0MTdSZXN1bHRNZXRhZGF0YS5wcm90b3R5cGUuc2V0RmlsZVNpemUgPSBmdW5jdGlvbiAoZmlsZVNpemUgLypsb25nKi8pIHtcbiAgICAgICAgdGhpcy5maWxlU2l6ZSA9IGZpbGVTaXplO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogMTYtYml0IENSQyBjaGVja3N1bSB1c2luZyBDQ0lUVC0xNlxuICAgICAqXG4gICAgICogQHJldHVybiBjcmMgY2hlY2tzdW0sIC0xIGlmIG5vdCBzZXRcbiAgICAgKi9cbiAgICBQREY0MTdSZXN1bHRNZXRhZGF0YS5wcm90b3R5cGUuZ2V0Q2hlY2tzdW0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrc3VtO1xuICAgIH07XG4gICAgUERGNDE3UmVzdWx0TWV0YWRhdGEucHJvdG90eXBlLnNldENoZWNrc3VtID0gZnVuY3Rpb24gKGNoZWNrc3VtIC8qaW50Ki8pIHtcbiAgICAgICAgdGhpcy5jaGVja3N1bSA9IGNoZWNrc3VtO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogdW5peCBlcG9jayB0aW1lc3RhbXAsIGVsYXBzZWQgc2Vjb25kcyBzaW5jZSAxOTcwLTAxLTAxXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIGVsYXBzZWQgc2Vjb25kcywgLTEgaWYgbm90IHNldFxuICAgICAqL1xuICAgIFBERjQxN1Jlc3VsdE1ldGFkYXRhLnByb3RvdHlwZS5nZXRUaW1lc3RhbXAgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRpbWVzdGFtcDtcbiAgICB9O1xuICAgIFBERjQxN1Jlc3VsdE1ldGFkYXRhLnByb3RvdHlwZS5zZXRUaW1lc3RhbXAgPSBmdW5jdGlvbiAodGltZXN0YW1wIC8qbG9uZyovKSB7XG4gICAgICAgIHRoaXMudGltZXN0YW1wID0gdGltZXN0YW1wO1xuICAgIH07XG4gICAgcmV0dXJuIFBERjQxN1Jlc3VsdE1ldGFkYXRhO1xufSgpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IFBERjQxN1Jlc3VsdE1ldGFkYXRhO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UERGNDE3UmVzdWx0TWV0YWRhdGEuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vKipcbiAqIFBvbnlmaWxsIGZvciBKYXZhJ3MgTG9uZyBjbGFzcy5cbiAqL1xudmFyIExvbmcgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gTG9uZygpIHtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUGFyc2VzIGEgc3RyaW5nIHRvIGEgbnVtYmVyLCBzaW5jZSBKUyBoYXMgbm8gcmVhbGx5IEludDY0LlxuICAgICAqXG4gICAgICogQHBhcmFtIG51bSBOdW1lcmljIHN0cmluZy5cbiAgICAgKiBAcGFyYW0gcmFkaXggRGVzdGluYXRpb24gcmFkaXguXG4gICAgICovXG4gICAgTG9uZy5wYXJzZUxvbmcgPSBmdW5jdGlvbiAobnVtLCByYWRpeCkge1xuICAgICAgICBpZiAocmFkaXggPT09IHZvaWQgMCkgeyByYWRpeCA9IHVuZGVmaW5lZDsgfVxuICAgICAgICByZXR1cm4gcGFyc2VJbnQobnVtLCByYWRpeCk7XG4gICAgfTtcbiAgICByZXR1cm4gTG9uZztcbn0oKSk7XG5leHBvcnRzLmRlZmF1bHQgPSBMb25nO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TG9uZy5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIEV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4vRXhjZXB0aW9uXCIpO1xuLyoqXG4gKiBDdXN0b20gRXJyb3IgY2xhc3Mgb2YgdHlwZSBFeGNlcHRpb24uXG4gKi9cbnZhciBOdWxsUG9pbnRlckV4Y2VwdGlvbiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoTnVsbFBvaW50ZXJFeGNlcHRpb24sIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gTnVsbFBvaW50ZXJFeGNlcHRpb24oKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgTnVsbFBvaW50ZXJFeGNlcHRpb24ua2luZCA9ICdOdWxsUG9pbnRlckV4Y2VwdGlvbic7XG4gICAgcmV0dXJuIE51bGxQb2ludGVyRXhjZXB0aW9uO1xufShFeGNlcHRpb25fMS5kZWZhdWx0KSk7XG5leHBvcnRzLmRlZmF1bHQgPSBOdWxsUG9pbnRlckV4Y2VwdGlvbjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU51bGxQb2ludGVyRXhjZXB0aW9uLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuLi9JbmRleE91dE9mQm91bmRzRXhjZXB0aW9uXCIpO1xudmFyIE51bGxQb2ludGVyRXhjZXB0aW9uXzEgPSByZXF1aXJlKFwiLi4vTnVsbFBvaW50ZXJFeGNlcHRpb25cIik7XG4vKlxuICogQ29weXJpZ2h0IChjKSAxOTk0LCAyMDA0LCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogRE8gTk9UIEFMVEVSIE9SIFJFTU9WRSBDT1BZUklHSFQgTk9USUNFUyBPUiBUSElTIEZJTEUgSEVBREVSLlxuICpcbiAqIFRoaXMgY29kZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvbmx5LCBhc1xuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uICBPcmFjbGUgZGVzaWduYXRlcyB0aGlzXG4gKiBwYXJ0aWN1bGFyIGZpbGUgYXMgc3ViamVjdCB0byB0aGUgXCJDbGFzc3BhdGhcIiBleGNlcHRpb24gYXMgcHJvdmlkZWRcbiAqIGJ5IE9yYWNsZSBpbiB0aGUgTElDRU5TRSBmaWxlIHRoYXQgYWNjb21wYW5pZWQgdGhpcyBjb2RlLlxuICpcbiAqIFRoaXMgY29kZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIHZlcnNpb24gMiBmb3IgbW9yZSBkZXRhaWxzIChhIGNvcHkgaXMgaW5jbHVkZWQgaW4gdGhlIExJQ0VOU0UgZmlsZSB0aGF0XG4gKiBhY2NvbXBhbmllZCB0aGlzIGNvZGUpLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb25cbiAqIDIgYWxvbmcgd2l0aCB0aGlzIHdvcms7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbixcbiAqIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQS5cbiAqXG4gKiBQbGVhc2UgY29udGFjdCBPcmFjbGUsIDUwMCBPcmFjbGUgUGFya3dheSwgUmVkd29vZCBTaG9yZXMsIENBIDk0MDY1IFVTQVxuICogb3IgdmlzaXQgd3d3Lm9yYWNsZS5jb20gaWYgeW91IG5lZWQgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvciBoYXZlIGFueVxuICogcXVlc3Rpb25zLlxuICovXG4vLyBwYWNrYWdlIGphdmEuaW87XG4vKipcbiAqIFRoaXMgYWJzdHJhY3QgY2xhc3MgaXMgdGhlIHN1cGVyY2xhc3Mgb2YgYWxsIGNsYXNzZXMgcmVwcmVzZW50aW5nXG4gKiBhbiBvdXRwdXQgc3RyZWFtIG9mIGJ5dGVzLiBBbiBvdXRwdXQgc3RyZWFtIGFjY2VwdHMgb3V0cHV0IGJ5dGVzXG4gKiBhbmQgc2VuZHMgdGhlbSB0byBzb21lIHNpbmsuXG4gKiA8cD5cbiAqIEFwcGxpY2F0aW9ucyB0aGF0IG5lZWQgdG8gZGVmaW5lIGEgc3ViY2xhc3Mgb2ZcbiAqIDxjb2RlPk91dHB1dFN0cmVhbTwvY29kZT4gbXVzdCBhbHdheXMgcHJvdmlkZSBhdCBsZWFzdCBhIG1ldGhvZFxuICogdGhhdCB3cml0ZXMgb25lIGJ5dGUgb2Ygb3V0cHV0LlxuICpcbiAqIEBhdXRob3IgIEFydGh1ciB2YW4gSG9mZlxuICogQHNlZSAgICAgamF2YS5pby5CdWZmZXJlZE91dHB1dFN0cmVhbVxuICogQHNlZSAgICAgamF2YS5pby5CeXRlQXJyYXlPdXRwdXRTdHJlYW1cbiAqIEBzZWUgICAgIGphdmEuaW8uRGF0YU91dHB1dFN0cmVhbVxuICogQHNlZSAgICAgamF2YS5pby5GaWx0ZXJPdXRwdXRTdHJlYW1cbiAqIEBzZWUgICAgIGphdmEuaW8uSW5wdXRTdHJlYW1cbiAqIEBzZWUgICAgIGphdmEuaW8uT3V0cHV0U3RyZWFtI3dyaXRlKGludClcbiAqIEBzaW5jZSAgIEpESzEuMFxuICovXG52YXIgT3V0cHV0U3RyZWFtIC8qaW1wbGVtZW50cyBDbG9zZWFibGUsIEZsdXNoYWJsZSovID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIE91dHB1dFN0cmVhbSgpIHtcbiAgICB9XG4gICAgLyoqXG4gICAgICogV3JpdGVzIDxjb2RlPmIubGVuZ3RoPC9jb2RlPiBieXRlcyBmcm9tIHRoZSBzcGVjaWZpZWQgYnl0ZSBhcnJheVxuICAgICAqIHRvIHRoaXMgb3V0cHV0IHN0cmVhbS4gVGhlIGdlbmVyYWwgY29udHJhY3QgZm9yIDxjb2RlPndyaXRlKGIpPC9jb2RlPlxuICAgICAqIGlzIHRoYXQgaXQgc2hvdWxkIGhhdmUgZXhhY3RseSB0aGUgc2FtZSBlZmZlY3QgYXMgdGhlIGNhbGxcbiAgICAgKiA8Y29kZT53cml0ZShiLCAwLCBiLmxlbmd0aCk8L2NvZGU+LlxuICAgICAqXG4gICAgICogQHBhcmFtICAgICAgYiAgIHRoZSBkYXRhLlxuICAgICAqIEBleGNlcHRpb24gIElPRXhjZXB0aW9uICBpZiBhbiBJL08gZXJyb3Igb2NjdXJzLlxuICAgICAqIEBzZWUgICAgICAgIGphdmEuaW8uT3V0cHV0U3RyZWFtI3dyaXRlKGJ5dGVbXSwgaW50LCBpbnQpXG4gICAgICovXG4gICAgT3V0cHV0U3RyZWFtLnByb3RvdHlwZS53cml0ZUJ5dGVzID0gZnVuY3Rpb24gKGIpIHtcbiAgICAgICAgdGhpcy53cml0ZUJ5dGVzT2Zmc2V0KGIsIDAsIGIubGVuZ3RoKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFdyaXRlcyA8Y29kZT5sZW48L2NvZGU+IGJ5dGVzIGZyb20gdGhlIHNwZWNpZmllZCBieXRlIGFycmF5XG4gICAgICogc3RhcnRpbmcgYXQgb2Zmc2V0IDxjb2RlPm9mZjwvY29kZT4gdG8gdGhpcyBvdXRwdXQgc3RyZWFtLlxuICAgICAqIFRoZSBnZW5lcmFsIGNvbnRyYWN0IGZvciA8Y29kZT53cml0ZShiLCBvZmYsIGxlbik8L2NvZGU+IGlzIHRoYXRcbiAgICAgKiBzb21lIG9mIHRoZSBieXRlcyBpbiB0aGUgYXJyYXkgPGNvZGU+YjwvY29kZT4gYXJlIHdyaXR0ZW4gdG8gdGhlXG4gICAgICogb3V0cHV0IHN0cmVhbSBpbiBvcmRlcjsgZWxlbWVudCA8Y29kZT5iW29mZl08L2NvZGU+IGlzIHRoZSBmaXJzdFxuICAgICAqIGJ5dGUgd3JpdHRlbiBhbmQgPGNvZGU+YltvZmYrbGVuLTFdPC9jb2RlPiBpcyB0aGUgbGFzdCBieXRlIHdyaXR0ZW5cbiAgICAgKiBieSB0aGlzIG9wZXJhdGlvbi5cbiAgICAgKiA8cD5cbiAgICAgKiBUaGUgPGNvZGU+d3JpdGU8L2NvZGU+IG1ldGhvZCBvZiA8Y29kZT5PdXRwdXRTdHJlYW08L2NvZGU+IGNhbGxzXG4gICAgICogdGhlIHdyaXRlIG1ldGhvZCBvZiBvbmUgYXJndW1lbnQgb24gZWFjaCBvZiB0aGUgYnl0ZXMgdG8gYmVcbiAgICAgKiB3cml0dGVuIG91dC4gU3ViY2xhc3NlcyBhcmUgZW5jb3VyYWdlZCB0byBvdmVycmlkZSB0aGlzIG1ldGhvZCBhbmRcbiAgICAgKiBwcm92aWRlIGEgbW9yZSBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24uXG4gICAgICogPHA+XG4gICAgICogSWYgPGNvZGU+YjwvY29kZT4gaXMgPGNvZGU+bnVsbDwvY29kZT4sIGFcbiAgICAgKiA8Y29kZT5OdWxsUG9pbnRlckV4Y2VwdGlvbjwvY29kZT4gaXMgdGhyb3duLlxuICAgICAqIDxwPlxuICAgICAqIElmIDxjb2RlPm9mZjwvY29kZT4gaXMgbmVnYXRpdmUsIG9yIDxjb2RlPmxlbjwvY29kZT4gaXMgbmVnYXRpdmUsIG9yXG4gICAgICogPGNvZGU+b2ZmK2xlbjwvY29kZT4gaXMgZ3JlYXRlciB0aGFuIHRoZSBsZW5ndGggb2YgdGhlIGFycmF5XG4gICAgICogPGNvZGU+YjwvY29kZT4sIHRoZW4gYW4gPHR0PkluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb248L3R0PiBpcyB0aHJvd24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gICAgICBiICAgICB0aGUgZGF0YS5cbiAgICAgKiBAcGFyYW0gICAgICBvZmYgICB0aGUgc3RhcnQgb2Zmc2V0IGluIHRoZSBkYXRhLlxuICAgICAqIEBwYXJhbSAgICAgIGxlbiAgIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gd3JpdGUuXG4gICAgICogQGV4Y2VwdGlvbiAgSU9FeGNlcHRpb24gIGlmIGFuIEkvTyBlcnJvciBvY2N1cnMuIEluIHBhcnRpY3VsYXIsXG4gICAgICogICAgICAgICAgICAgYW4gPGNvZGU+SU9FeGNlcHRpb248L2NvZGU+IGlzIHRocm93biBpZiB0aGUgb3V0cHV0XG4gICAgICogICAgICAgICAgICAgc3RyZWFtIGlzIGNsb3NlZC5cbiAgICAgKi9cbiAgICBPdXRwdXRTdHJlYW0ucHJvdG90eXBlLndyaXRlQnl0ZXNPZmZzZXQgPSBmdW5jdGlvbiAoYiwgb2ZmLCBsZW4pIHtcbiAgICAgICAgaWYgKGIgPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKChvZmYgPCAwKSB8fCAob2ZmID4gYi5sZW5ndGgpIHx8IChsZW4gPCAwKSB8fFxuICAgICAgICAgICAgKChvZmYgKyBsZW4pID4gYi5sZW5ndGgpIHx8ICgob2ZmICsgbGVuKSA8IDApKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChsZW4gPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICB0aGlzLndyaXRlKGJbb2ZmICsgaV0pO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBGbHVzaGVzIHRoaXMgb3V0cHV0IHN0cmVhbSBhbmQgZm9yY2VzIGFueSBidWZmZXJlZCBvdXRwdXQgYnl0ZXNcbiAgICAgKiB0byBiZSB3cml0dGVuIG91dC4gVGhlIGdlbmVyYWwgY29udHJhY3Qgb2YgPGNvZGU+Zmx1c2g8L2NvZGU+IGlzXG4gICAgICogdGhhdCBjYWxsaW5nIGl0IGlzIGFuIGluZGljYXRpb24gdGhhdCwgaWYgYW55IGJ5dGVzIHByZXZpb3VzbHlcbiAgICAgKiB3cml0dGVuIGhhdmUgYmVlbiBidWZmZXJlZCBieSB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIG91dHB1dFxuICAgICAqIHN0cmVhbSwgc3VjaCBieXRlcyBzaG91bGQgaW1tZWRpYXRlbHkgYmUgd3JpdHRlbiB0byB0aGVpclxuICAgICAqIGludGVuZGVkIGRlc3RpbmF0aW9uLlxuICAgICAqIDxwPlxuICAgICAqIElmIHRoZSBpbnRlbmRlZCBkZXN0aW5hdGlvbiBvZiB0aGlzIHN0cmVhbSBpcyBhbiBhYnN0cmFjdGlvbiBwcm92aWRlZCBieVxuICAgICAqIHRoZSB1bmRlcmx5aW5nIG9wZXJhdGluZyBzeXN0ZW0sIGZvciBleGFtcGxlIGEgZmlsZSwgdGhlbiBmbHVzaGluZyB0aGVcbiAgICAgKiBzdHJlYW0gZ3VhcmFudGVlcyBvbmx5IHRoYXQgYnl0ZXMgcHJldmlvdXNseSB3cml0dGVuIHRvIHRoZSBzdHJlYW0gYXJlXG4gICAgICogcGFzc2VkIHRvIHRoZSBvcGVyYXRpbmcgc3lzdGVtIGZvciB3cml0aW5nOyBpdCBkb2VzIG5vdCBndWFyYW50ZWUgdGhhdFxuICAgICAqIHRoZXkgYXJlIGFjdHVhbGx5IHdyaXR0ZW4gdG8gYSBwaHlzaWNhbCBkZXZpY2Ugc3VjaCBhcyBhIGRpc2sgZHJpdmUuXG4gICAgICogPHA+XG4gICAgICogVGhlIDxjb2RlPmZsdXNoPC9jb2RlPiBtZXRob2Qgb2YgPGNvZGU+T3V0cHV0U3RyZWFtPC9jb2RlPiBkb2VzIG5vdGhpbmcuXG4gICAgICpcbiAgICAgKiBAZXhjZXB0aW9uICBJT0V4Y2VwdGlvbiAgaWYgYW4gSS9PIGVycm9yIG9jY3Vycy5cbiAgICAgKi9cbiAgICBPdXRwdXRTdHJlYW0ucHJvdG90eXBlLmZsdXNoID0gZnVuY3Rpb24gKCkge1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQ2xvc2VzIHRoaXMgb3V0cHV0IHN0cmVhbSBhbmQgcmVsZWFzZXMgYW55IHN5c3RlbSByZXNvdXJjZXNcbiAgICAgKiBhc3NvY2lhdGVkIHdpdGggdGhpcyBzdHJlYW0uIFRoZSBnZW5lcmFsIGNvbnRyYWN0IG9mIDxjb2RlPmNsb3NlPC9jb2RlPlxuICAgICAqIGlzIHRoYXQgaXQgY2xvc2VzIHRoZSBvdXRwdXQgc3RyZWFtLiBBIGNsb3NlZCBzdHJlYW0gY2Fubm90IHBlcmZvcm1cbiAgICAgKiBvdXRwdXQgb3BlcmF0aW9ucyBhbmQgY2Fubm90IGJlIHJlb3BlbmVkLlxuICAgICAqIDxwPlxuICAgICAqIFRoZSA8Y29kZT5jbG9zZTwvY29kZT4gbWV0aG9kIG9mIDxjb2RlPk91dHB1dFN0cmVhbTwvY29kZT4gZG9lcyBub3RoaW5nLlxuICAgICAqXG4gICAgICogQGV4Y2VwdGlvbiAgSU9FeGNlcHRpb24gIGlmIGFuIEkvTyBlcnJvciBvY2N1cnMuXG4gICAgICovXG4gICAgT3V0cHV0U3RyZWFtLnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB9O1xuICAgIHJldHVybiBPdXRwdXRTdHJlYW07XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gT3V0cHV0U3RyZWFtO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9T3V0cHV0U3RyZWFtLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgRXhjZXB0aW9uXzEgPSByZXF1aXJlKFwiLi9FeGNlcHRpb25cIik7XG4vKipcbiAqIEN1c3RvbSBFcnJvciBjbGFzcyBvZiB0eXBlIEV4Y2VwdGlvbi5cbiAqL1xudmFyIE91dE9mTWVtb3J5RXJyb3IgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKE91dE9mTWVtb3J5RXJyb3IsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gT3V0T2ZNZW1vcnlFcnJvcigpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICByZXR1cm4gT3V0T2ZNZW1vcnlFcnJvcjtcbn0oRXhjZXB0aW9uXzEuZGVmYXVsdCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gT3V0T2ZNZW1vcnlFcnJvcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU91dE9mTWVtb3J5RXJyb3IuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IChjKSAxOTk0LCAyMDEwLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogRE8gTk9UIEFMVEVSIE9SIFJFTU9WRSBDT1BZUklHSFQgTk9USUNFUyBPUiBUSElTIEZJTEUgSEVBREVSLlxuICpcbiAqIFRoaXMgY29kZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvbmx5LCBhc1xuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uICBPcmFjbGUgZGVzaWduYXRlcyB0aGlzXG4gKiBwYXJ0aWN1bGFyIGZpbGUgYXMgc3ViamVjdCB0byB0aGUgXCJDbGFzc3BhdGhcIiBleGNlcHRpb24gYXMgcHJvdmlkZWRcbiAqIGJ5IE9yYWNsZSBpbiB0aGUgTElDRU5TRSBmaWxlIHRoYXQgYWNjb21wYW5pZWQgdGhpcyBjb2RlLlxuICpcbiAqIFRoaXMgY29kZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIHZlcnNpb24gMiBmb3IgbW9yZSBkZXRhaWxzIChhIGNvcHkgaXMgaW5jbHVkZWQgaW4gdGhlIExJQ0VOU0UgZmlsZSB0aGF0XG4gKiBhY2NvbXBhbmllZCB0aGlzIGNvZGUpLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb25cbiAqIDIgYWxvbmcgd2l0aCB0aGlzIHdvcms7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbixcbiAqIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQS5cbiAqXG4gKiBQbGVhc2UgY29udGFjdCBPcmFjbGUsIDUwMCBPcmFjbGUgUGFya3dheSwgUmVkd29vZCBTaG9yZXMsIENBIDk0MDY1IFVTQVxuICogb3IgdmlzaXQgd3d3Lm9yYWNsZS5jb20gaWYgeW91IG5lZWQgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvciBoYXZlIGFueVxuICogcXVlc3Rpb25zLlxuICovXG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8vIHBhY2thZ2UgamF2YS5pbztcbi8vIGltcG9ydCBqYXZhLnV0aWwuQXJyYXlzO1xudmFyIEFycmF5c18xID0gcmVxdWlyZShcIi4vQXJyYXlzXCIpO1xudmFyIE91dHB1dFN0cmVhbV8xID0gcmVxdWlyZShcIi4vT3V0cHV0U3RyZWFtXCIpO1xudmFyIEludGVnZXJfMSA9IHJlcXVpcmUoXCIuL0ludGVnZXJcIik7XG52YXIgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEgPSByZXF1aXJlKFwiLi4vSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXCIpO1xudmFyIE91dE9mTWVtb3J5RXJyb3JfMSA9IHJlcXVpcmUoXCIuLi9PdXRPZk1lbW9yeUVycm9yXCIpO1xudmFyIFN5c3RlbV8xID0gcmVxdWlyZShcIi4vU3lzdGVtXCIpO1xudmFyIEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuLi9JbmRleE91dE9mQm91bmRzRXhjZXB0aW9uXCIpO1xuLyoqXG4gKiBUaGlzIGNsYXNzIGltcGxlbWVudHMgYW4gb3V0cHV0IHN0cmVhbSBpbiB3aGljaCB0aGUgZGF0YSBpc1xuICogd3JpdHRlbiBpbnRvIGEgYnl0ZSBhcnJheS4gVGhlIGJ1ZmZlciBhdXRvbWF0aWNhbGx5IGdyb3dzIGFzIGRhdGFcbiAqIGlzIHdyaXR0ZW4gdG8gaXQuXG4gKiBUaGUgZGF0YSBjYW4gYmUgcmV0cmlldmVkIHVzaW5nIDxjb2RlPnRvQnl0ZUFycmF5KCk8L2NvZGU+IGFuZFxuICogPGNvZGU+dG9TdHJpbmcoKTwvY29kZT4uXG4gKiA8cD5cbiAqIENsb3NpbmcgYSA8dHQ+Qnl0ZUFycmF5T3V0cHV0U3RyZWFtPC90dD4gaGFzIG5vIGVmZmVjdC4gVGhlIG1ldGhvZHMgaW5cbiAqIHRoaXMgY2xhc3MgY2FuIGJlIGNhbGxlZCBhZnRlciB0aGUgc3RyZWFtIGhhcyBiZWVuIGNsb3NlZCB3aXRob3V0XG4gKiBnZW5lcmF0aW5nIGFuIDx0dD5JT0V4Y2VwdGlvbjwvdHQ+LlxuICpcbiAqIEBhdXRob3IgIEFydGh1ciB2YW4gSG9mZlxuICogQHNpbmNlICAgSkRLMS4wXG4gKi9cbnZhciBCeXRlQXJyYXlPdXRwdXRTdHJlYW0gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEJ5dGVBcnJheU91dHB1dFN0cmVhbSwgX3N1cGVyKTtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IGJ5dGUgYXJyYXkgb3V0cHV0IHN0cmVhbS4gVGhlIGJ1ZmZlciBjYXBhY2l0eSBpc1xuICAgICAqIGluaXRpYWxseSAzMiBieXRlcywgdGhvdWdoIGl0cyBzaXplIGluY3JlYXNlcyBpZiBuZWNlc3NhcnkuXG4gICAgICovXG4gICAgLy8gcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIC8vICAgICB0aGlzKDMyKTtcbiAgICAvLyB9XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBieXRlIGFycmF5IG91dHB1dCBzdHJlYW0sIHdpdGggYSBidWZmZXIgY2FwYWNpdHkgb2ZcbiAgICAgKiB0aGUgc3BlY2lmaWVkIHNpemUsIGluIGJ5dGVzLlxuICAgICAqXG4gICAgICogQHBhcmFtICAgc2l6ZSAgIHRoZSBpbml0aWFsIHNpemUuXG4gICAgICogQGV4Y2VwdGlvbiAgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIHNpemUgaXMgbmVnYXRpdmUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gQnl0ZUFycmF5T3V0cHV0U3RyZWFtKHNpemUpIHtcbiAgICAgICAgaWYgKHNpemUgPT09IHZvaWQgMCkgeyBzaXplID0gMzI7IH1cbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpcztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSBudW1iZXIgb2YgdmFsaWQgYnl0ZXMgaW4gdGhlIGJ1ZmZlci5cbiAgICAgICAgICovXG4gICAgICAgIF90aGlzLmNvdW50ID0gMDtcbiAgICAgICAgaWYgKHNpemUgPCAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgnTmVnYXRpdmUgaW5pdGlhbCBzaXplOiAnXG4gICAgICAgICAgICAgICAgKyBzaXplKTtcbiAgICAgICAgfVxuICAgICAgICBfdGhpcy5idWYgPSBuZXcgVWludDhBcnJheShzaXplKTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBJbmNyZWFzZXMgdGhlIGNhcGFjaXR5IGlmIG5lY2Vzc2FyeSB0byBlbnN1cmUgdGhhdCBpdCBjYW4gaG9sZFxuICAgICAqIGF0IGxlYXN0IHRoZSBudW1iZXIgb2YgZWxlbWVudHMgc3BlY2lmaWVkIGJ5IHRoZSBtaW5pbXVtXG4gICAgICogY2FwYWNpdHkgYXJndW1lbnQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbWluQ2FwYWNpdHkgdGhlIGRlc2lyZWQgbWluaW11bSBjYXBhY2l0eVxuICAgICAqIEB0aHJvd3MgT3V0T2ZNZW1vcnlFcnJvciBpZiB7QGNvZGUgbWluQ2FwYWNpdHkgPCAwfS4gIFRoaXMgaXNcbiAgICAgKiBpbnRlcnByZXRlZCBhcyBhIHJlcXVlc3QgZm9yIHRoZSB1bnNhdGlzZmlhYmx5IGxhcmdlIGNhcGFjaXR5XG4gICAgICoge0Bjb2RlIChsb25nKSBJbnRlZ2VyLk1BWF9WQUxVRSArIChtaW5DYXBhY2l0eSAtIEludGVnZXIuTUFYX1ZBTFVFKX0uXG4gICAgICovXG4gICAgQnl0ZUFycmF5T3V0cHV0U3RyZWFtLnByb3RvdHlwZS5lbnN1cmVDYXBhY2l0eSA9IGZ1bmN0aW9uIChtaW5DYXBhY2l0eSkge1xuICAgICAgICAvLyBvdmVyZmxvdy1jb25zY2lvdXMgY29kZVxuICAgICAgICBpZiAobWluQ2FwYWNpdHkgLSB0aGlzLmJ1Zi5sZW5ndGggPiAwKVxuICAgICAgICAgICAgdGhpcy5ncm93KG1pbkNhcGFjaXR5KTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEluY3JlYXNlcyB0aGUgY2FwYWNpdHkgdG8gZW5zdXJlIHRoYXQgaXQgY2FuIGhvbGQgYXQgbGVhc3QgdGhlXG4gICAgICogbnVtYmVyIG9mIGVsZW1lbnRzIHNwZWNpZmllZCBieSB0aGUgbWluaW11bSBjYXBhY2l0eSBhcmd1bWVudC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBtaW5DYXBhY2l0eSB0aGUgZGVzaXJlZCBtaW5pbXVtIGNhcGFjaXR5XG4gICAgICovXG4gICAgQnl0ZUFycmF5T3V0cHV0U3RyZWFtLnByb3RvdHlwZS5ncm93ID0gZnVuY3Rpb24gKG1pbkNhcGFjaXR5KSB7XG4gICAgICAgIC8vIG92ZXJmbG93LWNvbnNjaW91cyBjb2RlXG4gICAgICAgIHZhciBvbGRDYXBhY2l0eSA9IHRoaXMuYnVmLmxlbmd0aDtcbiAgICAgICAgdmFyIG5ld0NhcGFjaXR5ID0gb2xkQ2FwYWNpdHkgPDwgMTtcbiAgICAgICAgaWYgKG5ld0NhcGFjaXR5IC0gbWluQ2FwYWNpdHkgPCAwKVxuICAgICAgICAgICAgbmV3Q2FwYWNpdHkgPSBtaW5DYXBhY2l0eTtcbiAgICAgICAgaWYgKG5ld0NhcGFjaXR5IDwgMCkge1xuICAgICAgICAgICAgaWYgKG1pbkNhcGFjaXR5IDwgMCkgLy8gb3ZlcmZsb3dcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgT3V0T2ZNZW1vcnlFcnJvcl8xLmRlZmF1bHQoKTtcbiAgICAgICAgICAgIG5ld0NhcGFjaXR5ID0gSW50ZWdlcl8xLmRlZmF1bHQuTUFYX1ZBTFVFO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYnVmID0gQXJyYXlzXzEuZGVmYXVsdC5jb3B5T2ZVaW50OEFycmF5KHRoaXMuYnVmLCBuZXdDYXBhY2l0eSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBXcml0ZXMgdGhlIHNwZWNpZmllZCBieXRlIHRvIHRoaXMgYnl0ZSBhcnJheSBvdXRwdXQgc3RyZWFtLlxuICAgICAqXG4gICAgICogQHBhcmFtICAgYiAgIHRoZSBieXRlIHRvIGJlIHdyaXR0ZW4uXG4gICAgICovXG4gICAgQnl0ZUFycmF5T3V0cHV0U3RyZWFtLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIChiKSB7XG4gICAgICAgIHRoaXMuZW5zdXJlQ2FwYWNpdHkodGhpcy5jb3VudCArIDEpO1xuICAgICAgICB0aGlzLmJ1Zlt0aGlzLmNvdW50XSA9IC8qKGJ5dGUpKi8gYjtcbiAgICAgICAgdGhpcy5jb3VudCArPSAxO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogV3JpdGVzIDxjb2RlPmxlbjwvY29kZT4gYnl0ZXMgZnJvbSB0aGUgc3BlY2lmaWVkIGJ5dGUgYXJyYXlcbiAgICAgKiBzdGFydGluZyBhdCBvZmZzZXQgPGNvZGU+b2ZmPC9jb2RlPiB0byB0aGlzIGJ5dGUgYXJyYXkgb3V0cHV0IHN0cmVhbS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSAgIGIgICAgIHRoZSBkYXRhLlxuICAgICAqIEBwYXJhbSAgIG9mZiAgIHRoZSBzdGFydCBvZmZzZXQgaW4gdGhlIGRhdGEuXG4gICAgICogQHBhcmFtICAgbGVuICAgdGhlIG51bWJlciBvZiBieXRlcyB0byB3cml0ZS5cbiAgICAgKi9cbiAgICBCeXRlQXJyYXlPdXRwdXRTdHJlYW0ucHJvdG90eXBlLndyaXRlQnl0ZXNPZmZzZXQgPSBmdW5jdGlvbiAoYiwgb2ZmLCBsZW4pIHtcbiAgICAgICAgaWYgKChvZmYgPCAwKSB8fCAob2ZmID4gYi5sZW5ndGgpIHx8IChsZW4gPCAwKSB8fFxuICAgICAgICAgICAgKChvZmYgKyBsZW4pIC0gYi5sZW5ndGggPiAwKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lbnN1cmVDYXBhY2l0eSh0aGlzLmNvdW50ICsgbGVuKTtcbiAgICAgICAgU3lzdGVtXzEuZGVmYXVsdC5hcnJheWNvcHkoYiwgb2ZmLCB0aGlzLmJ1ZiwgdGhpcy5jb3VudCwgbGVuKTtcbiAgICAgICAgdGhpcy5jb3VudCArPSBsZW47XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBXcml0ZXMgdGhlIGNvbXBsZXRlIGNvbnRlbnRzIG9mIHRoaXMgYnl0ZSBhcnJheSBvdXRwdXQgc3RyZWFtIHRvXG4gICAgICogdGhlIHNwZWNpZmllZCBvdXRwdXQgc3RyZWFtIGFyZ3VtZW50LCBhcyBpZiBieSBjYWxsaW5nIHRoZSBvdXRwdXRcbiAgICAgKiBzdHJlYW0ncyB3cml0ZSBtZXRob2QgdXNpbmcgPGNvZGU+b3V0LndyaXRlKGJ1ZiwgMCwgY291bnQpPC9jb2RlPi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSAgICAgIG91dCAgIHRoZSBvdXRwdXQgc3RyZWFtIHRvIHdoaWNoIHRvIHdyaXRlIHRoZSBkYXRhLlxuICAgICAqIEBleGNlcHRpb24gIElPRXhjZXB0aW9uICBpZiBhbiBJL08gZXJyb3Igb2NjdXJzLlxuICAgICAqL1xuICAgIEJ5dGVBcnJheU91dHB1dFN0cmVhbS5wcm90b3R5cGUud3JpdGVUbyA9IGZ1bmN0aW9uIChvdXQpIHtcbiAgICAgICAgb3V0LndyaXRlQnl0ZXNPZmZzZXQodGhpcy5idWYsIDAsIHRoaXMuY291bnQpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogUmVzZXRzIHRoZSA8Y29kZT5jb3VudDwvY29kZT4gZmllbGQgb2YgdGhpcyBieXRlIGFycmF5IG91dHB1dFxuICAgICAqIHN0cmVhbSB0byB6ZXJvLCBzbyB0aGF0IGFsbCBjdXJyZW50bHkgYWNjdW11bGF0ZWQgb3V0cHV0IGluIHRoZVxuICAgICAqIG91dHB1dCBzdHJlYW0gaXMgZGlzY2FyZGVkLiBUaGUgb3V0cHV0IHN0cmVhbSBjYW4gYmUgdXNlZCBhZ2FpbixcbiAgICAgKiByZXVzaW5nIHRoZSBhbHJlYWR5IGFsbG9jYXRlZCBidWZmZXIgc3BhY2UuXG4gICAgICpcbiAgICAgKiBAc2VlICAgICBqYXZhLmlvLkJ5dGVBcnJheUlucHV0U3RyZWFtI2NvdW50XG4gICAgICovXG4gICAgQnl0ZUFycmF5T3V0cHV0U3RyZWFtLnByb3RvdHlwZS5yZXNldCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5jb3VudCA9IDA7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3bHkgYWxsb2NhdGVkIGJ5dGUgYXJyYXkuIEl0cyBzaXplIGlzIHRoZSBjdXJyZW50XG4gICAgICogc2l6ZSBvZiB0aGlzIG91dHB1dCBzdHJlYW0gYW5kIHRoZSB2YWxpZCBjb250ZW50cyBvZiB0aGUgYnVmZmVyXG4gICAgICogaGF2ZSBiZWVuIGNvcGllZCBpbnRvIGl0LlxuICAgICAqXG4gICAgICogQHJldHVybiAgdGhlIGN1cnJlbnQgY29udGVudHMgb2YgdGhpcyBvdXRwdXQgc3RyZWFtLCBhcyBhIGJ5dGUgYXJyYXkuXG4gICAgICogQHNlZSAgICAgamF2YS5pby5CeXRlQXJyYXlPdXRwdXRTdHJlYW0jc2l6ZSgpXG4gICAgICovXG4gICAgQnl0ZUFycmF5T3V0cHV0U3RyZWFtLnByb3RvdHlwZS50b0J5dGVBcnJheSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIEFycmF5c18xLmRlZmF1bHQuY29weU9mVWludDhBcnJheSh0aGlzLmJ1ZiwgdGhpcy5jb3VudCk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IHNpemUgb2YgdGhlIGJ1ZmZlci5cbiAgICAgKlxuICAgICAqIEByZXR1cm4gIHRoZSB2YWx1ZSBvZiB0aGUgPGNvZGU+Y291bnQ8L2NvZGU+IGZpZWxkLCB3aGljaCBpcyB0aGUgbnVtYmVyXG4gICAgICogICAgICAgICAgb2YgdmFsaWQgYnl0ZXMgaW4gdGhpcyBvdXRwdXQgc3RyZWFtLlxuICAgICAqIEBzZWUgICAgIGphdmEuaW8uQnl0ZUFycmF5T3V0cHV0U3RyZWFtI2NvdW50XG4gICAgICovXG4gICAgQnl0ZUFycmF5T3V0cHV0U3RyZWFtLnByb3RvdHlwZS5zaXplID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb3VudDtcbiAgICB9O1xuICAgIEJ5dGVBcnJheU91dHB1dFN0cmVhbS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAocGFyYW0pIHtcbiAgICAgICAgaWYgKCFwYXJhbSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9TdHJpbmdfdm9pZCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgcGFyYW0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50b1N0cmluZ19zdHJpbmcocGFyYW0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnRvU3RyaW5nX251bWJlcihwYXJhbSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyB0aGUgYnVmZmVyJ3MgY29udGVudHMgaW50byBhIHN0cmluZyBkZWNvZGluZyBieXRlcyB1c2luZyB0aGVcbiAgICAgKiBwbGF0Zm9ybSdzIGRlZmF1bHQgY2hhcmFjdGVyIHNldC4gVGhlIGxlbmd0aCBvZiB0aGUgbmV3IDx0dD5TdHJpbmc8L3R0PlxuICAgICAqIGlzIGEgZnVuY3Rpb24gb2YgdGhlIGNoYXJhY3RlciBzZXQsIGFuZCBoZW5jZSBtYXkgbm90IGJlIGVxdWFsIHRvIHRoZVxuICAgICAqIHNpemUgb2YgdGhlIGJ1ZmZlci5cbiAgICAgKlxuICAgICAqIDxwPiBUaGlzIG1ldGhvZCBhbHdheXMgcmVwbGFjZXMgbWFsZm9ybWVkLWlucHV0IGFuZCB1bm1hcHBhYmxlLWNoYXJhY3RlclxuICAgICAqIHNlcXVlbmNlcyB3aXRoIHRoZSBkZWZhdWx0IHJlcGxhY2VtZW50IHN0cmluZyBmb3IgdGhlIHBsYXRmb3JtJ3NcbiAgICAgKiBkZWZhdWx0IGNoYXJhY3RlciBzZXQuIFRoZSB7QGxpbmtwbGFpbiBqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXREZWNvZGVyfVxuICAgICAqIGNsYXNzIHNob3VsZCBiZSB1c2VkIHdoZW4gbW9yZSBjb250cm9sIG92ZXIgdGhlIGRlY29kaW5nIHByb2Nlc3MgaXNcbiAgICAgKiByZXF1aXJlZC5cbiAgICAgKlxuICAgICAqIEByZXR1cm4gU3RyaW5nIGRlY29kZWQgZnJvbSB0aGUgYnVmZmVyJ3MgY29udGVudHMuXG4gICAgICogQHNpbmNlICBKREsxLjFcbiAgICAgKi9cbiAgICBCeXRlQXJyYXlPdXRwdXRTdHJlYW0ucHJvdG90eXBlLnRvU3RyaW5nX3ZvaWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgU3RyaW5nKHRoaXMuYnVmIC8qLCAwLCB0aGlzLmNvdW50Ki8pLnRvU3RyaW5nKCk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyB0aGUgYnVmZmVyJ3MgY29udGVudHMgaW50byBhIHN0cmluZyBieSBkZWNvZGluZyB0aGUgYnl0ZXMgdXNpbmdcbiAgICAgKiB0aGUgc3BlY2lmaWVkIHtAbGluayBqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXQgY2hhcnNldE5hbWV9LiBUaGUgbGVuZ3RoIG9mXG4gICAgICogdGhlIG5ldyA8dHQ+U3RyaW5nPC90dD4gaXMgYSBmdW5jdGlvbiBvZiB0aGUgY2hhcnNldCwgYW5kIGhlbmNlIG1heSBub3QgYmVcbiAgICAgKiBlcXVhbCB0byB0aGUgbGVuZ3RoIG9mIHRoZSBieXRlIGFycmF5LlxuICAgICAqXG4gICAgICogPHA+IFRoaXMgbWV0aG9kIGFsd2F5cyByZXBsYWNlcyBtYWxmb3JtZWQtaW5wdXQgYW5kIHVubWFwcGFibGUtY2hhcmFjdGVyXG4gICAgICogc2VxdWVuY2VzIHdpdGggdGhpcyBjaGFyc2V0J3MgZGVmYXVsdCByZXBsYWNlbWVudCBzdHJpbmcuIFRoZSB7QGxpbmtcbiAgICAgKiBqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXREZWNvZGVyfSBjbGFzcyBzaG91bGQgYmUgdXNlZCB3aGVuIG1vcmUgY29udHJvbFxuICAgICAqIG92ZXIgdGhlIGRlY29kaW5nIHByb2Nlc3MgaXMgcmVxdWlyZWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gIGNoYXJzZXROYW1lICB0aGUgbmFtZSBvZiBhIHN1cHBvcnRlZFxuICAgICAqICAgICAgICAgICAgICB7QGxpbmtwbGFpbiBqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXQgPC9jb2RlPmNoYXJzZXQ8Y29kZT59XG4gICAgICogQHJldHVybiBTdHJpbmcgZGVjb2RlZCBmcm9tIHRoZSBidWZmZXIncyBjb250ZW50cy5cbiAgICAgKiBAZXhjZXB0aW9uICBVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uXG4gICAgICogICAgICAgICAgICAgSWYgdGhlIG5hbWVkIGNoYXJzZXQgaXMgbm90IHN1cHBvcnRlZFxuICAgICAqIEBzaW5jZSAgIEpESzEuMVxuICAgICAqL1xuICAgIEJ5dGVBcnJheU91dHB1dFN0cmVhbS5wcm90b3R5cGUudG9TdHJpbmdfc3RyaW5nID0gZnVuY3Rpb24gKGNoYXJzZXROYW1lKSB7XG4gICAgICAgIHJldHVybiBuZXcgU3RyaW5nKHRoaXMuYnVmIC8qLCAwLCB0aGlzLmNvdW50LCBjaGFyc2V0TmFtZSovKS50b1N0cmluZygpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ld2x5IGFsbG9jYXRlZCBzdHJpbmcuIEl0cyBzaXplIGlzIHRoZSBjdXJyZW50IHNpemUgb2ZcbiAgICAgKiB0aGUgb3V0cHV0IHN0cmVhbSBhbmQgdGhlIHZhbGlkIGNvbnRlbnRzIG9mIHRoZSBidWZmZXIgaGF2ZSBiZWVuXG4gICAgICogY29waWVkIGludG8gaXQuIEVhY2ggY2hhcmFjdGVyIDxpPmM8L2k+IGluIHRoZSByZXN1bHRpbmcgc3RyaW5nIGlzXG4gICAgICogY29uc3RydWN0ZWQgZnJvbSB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IDxpPmI8L2k+IGluIHRoZSBieXRlXG4gICAgICogYXJyYXkgc3VjaCB0aGF0OlxuICAgICAqIDxibG9ja3F1b3RlPjxwcmU+XG4gICAgICogICAgIGMgPT0gKGNoYXIpKCgoaGlieXRlICZhbXA7IDB4ZmYpICZsdDsmbHQ7IDgpIHwgKGIgJmFtcDsgMHhmZikpXG4gICAgICogPC9wcmU+PC9ibG9ja3F1b3RlPlxuICAgICAqXG4gICAgICogQGRlcHJlY2F0ZWQgVGhpcyBtZXRob2QgZG9lcyBub3QgcHJvcGVybHkgY29udmVydCBieXRlcyBpbnRvIGNoYXJhY3RlcnMuXG4gICAgICogQXMgb2YgSkRLJm5ic3A7MS4xLCB0aGUgcHJlZmVycmVkIHdheSB0byBkbyB0aGlzIGlzIHZpYSB0aGVcbiAgICAgKiA8Y29kZT50b1N0cmluZyhTdHJpbmcgZW5jKTwvY29kZT4gbWV0aG9kLCB3aGljaCB0YWtlcyBhbiBlbmNvZGluZy1uYW1lXG4gICAgICogYXJndW1lbnQsIG9yIHRoZSA8Y29kZT50b1N0cmluZygpPC9jb2RlPiBtZXRob2QsIHdoaWNoIHVzZXMgdGhlXG4gICAgICogcGxhdGZvcm0ncyBkZWZhdWx0IGNoYXJhY3RlciBlbmNvZGluZy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSAgICAgIGhpYnl0ZSAgICB0aGUgaGlnaCBieXRlIG9mIGVhY2ggcmVzdWx0aW5nIFVuaWNvZGUgY2hhcmFjdGVyLlxuICAgICAqIEByZXR1cm4gICAgIHRoZSBjdXJyZW50IGNvbnRlbnRzIG9mIHRoZSBvdXRwdXQgc3RyZWFtLCBhcyBhIHN0cmluZy5cbiAgICAgKiBAc2VlICAgICAgICBqYXZhLmlvLkJ5dGVBcnJheU91dHB1dFN0cmVhbSNzaXplKClcbiAgICAgKiBAc2VlICAgICAgICBqYXZhLmlvLkJ5dGVBcnJheU91dHB1dFN0cmVhbSN0b1N0cmluZyhTdHJpbmcpXG4gICAgICogQHNlZSAgICAgICAgamF2YS5pby5CeXRlQXJyYXlPdXRwdXRTdHJlYW0jdG9TdHJpbmcoKVxuICAgICAqL1xuICAgIC8vIEBEZXByZWNhdGVkXG4gICAgQnl0ZUFycmF5T3V0cHV0U3RyZWFtLnByb3RvdHlwZS50b1N0cmluZ19udW1iZXIgPSBmdW5jdGlvbiAoaGlieXRlKSB7XG4gICAgICAgIHJldHVybiBuZXcgU3RyaW5nKHRoaXMuYnVmIC8qLCBoaWJ5dGUsIDAsIHRoaXMuY291bnQqLykudG9TdHJpbmcoKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIENsb3NpbmcgYSA8dHQ+Qnl0ZUFycmF5T3V0cHV0U3RyZWFtPC90dD4gaGFzIG5vIGVmZmVjdC4gVGhlIG1ldGhvZHMgaW5cbiAgICAgKiB0aGlzIGNsYXNzIGNhbiBiZSBjYWxsZWQgYWZ0ZXIgdGhlIHN0cmVhbSBoYXMgYmVlbiBjbG9zZWQgd2l0aG91dFxuICAgICAqIGdlbmVyYXRpbmcgYW4gPHR0PklPRXhjZXB0aW9uPC90dD4uXG4gICAgICogPHA+XG4gICAgICpcbiAgICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uXG4gICAgICovXG4gICAgQnl0ZUFycmF5T3V0cHV0U3RyZWFtLnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB9O1xuICAgIHJldHVybiBCeXRlQXJyYXlPdXRwdXRTdHJlYW07XG59KE91dHB1dFN0cmVhbV8xLmRlZmF1bHQpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IEJ5dGVBcnJheU91dHB1dFN0cmVhbTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUJ5dGVBcnJheU91dHB1dFN0cmVhbS5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8qXG4gKiBDb3B5cmlnaHQgMjAwOSBaWGluZyBhdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLy8gcGFja2FnZSBjb20uZ29vZ2xlLnp4aW5nLnBkZjQxNy5kZWNvZGVyO1xuLy8gaW1wb3J0IGNvbS5nb29nbGUuenhpbmcuRm9ybWF0RXhjZXB0aW9uO1xudmFyIEZvcm1hdEV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4uLy4uL0Zvcm1hdEV4Y2VwdGlvblwiKTtcbi8vIGltcG9ydCBjb20uZ29vZ2xlLnp4aW5nLmNvbW1vbi5DaGFyYWN0ZXJTZXRFQ0k7XG52YXIgQ2hhcmFjdGVyU2V0RUNJXzEgPSByZXF1aXJlKFwiLi4vLi4vY29tbW9uL0NoYXJhY3RlclNldEVDSVwiKTtcbi8vIGltcG9ydCBjb20uZ29vZ2xlLnp4aW5nLmNvbW1vbi5EZWNvZGVyUmVzdWx0O1xudmFyIERlY29kZXJSZXN1bHRfMSA9IHJlcXVpcmUoXCIuLi8uLi9jb21tb24vRGVjb2RlclJlc3VsdFwiKTtcbi8vIGltcG9ydCBjb20uZ29vZ2xlLnp4aW5nLnBkZjQxNy5QREY0MTdSZXN1bHRNZXRhZGF0YTtcbnZhciBQREY0MTdSZXN1bHRNZXRhZGF0YV8xID0gcmVxdWlyZShcIi4uL1BERjQxN1Jlc3VsdE1ldGFkYXRhXCIpO1xuLy8gaW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5T3V0cHV0U3RyZWFtO1xuLy8gaW1wb3J0IGphdmEubWF0aC5CaWdJbnRlZ2VyO1xuLy8gaW1wb3J0IGphdmEubmlvLmNoYXJzZXQuQ2hhcnNldDtcbi8vIGltcG9ydCBqYXZhLm5pby5jaGFyc2V0LlN0YW5kYXJkQ2hhcnNldHM7XG4vLyBpbXBvcnQgamF2YS51dGlsLkFycmF5cztcbnZhciBBcnJheXNfMSA9IHJlcXVpcmUoXCIuLi8uLi91dGlsL0FycmF5c1wiKTtcbnZhciBTdHJpbmdCdWlsZGVyXzEgPSByZXF1aXJlKFwiLi4vLi4vdXRpbC9TdHJpbmdCdWlsZGVyXCIpO1xudmFyIEludGVnZXJfMSA9IHJlcXVpcmUoXCIuLi8uLi91dGlsL0ludGVnZXJcIik7XG52YXIgTG9uZ18xID0gcmVxdWlyZShcIi4uLy4uL3V0aWwvTG9uZ1wiKTtcbnZhciBCeXRlQXJyYXlPdXRwdXRTdHJlYW1fMSA9IHJlcXVpcmUoXCIuLi8uLi91dGlsL0J5dGVBcnJheU91dHB1dFN0cmVhbVwiKTtcbnZhciBTdHJpbmdFbmNvZGluZ18xID0gcmVxdWlyZShcIi4uLy4uL3V0aWwvU3RyaW5nRW5jb2RpbmdcIik7XG4vKnByaXZhdGUqLyB2YXIgTW9kZTtcbihmdW5jdGlvbiAoTW9kZSkge1xuICAgIE1vZGVbTW9kZVtcIkFMUEhBXCJdID0gMF0gPSBcIkFMUEhBXCI7XG4gICAgTW9kZVtNb2RlW1wiTE9XRVJcIl0gPSAxXSA9IFwiTE9XRVJcIjtcbiAgICBNb2RlW01vZGVbXCJNSVhFRFwiXSA9IDJdID0gXCJNSVhFRFwiO1xuICAgIE1vZGVbTW9kZVtcIlBVTkNUXCJdID0gM10gPSBcIlBVTkNUXCI7XG4gICAgTW9kZVtNb2RlW1wiQUxQSEFfU0hJRlRcIl0gPSA0XSA9IFwiQUxQSEFfU0hJRlRcIjtcbiAgICBNb2RlW01vZGVbXCJQVU5DVF9TSElGVFwiXSA9IDVdID0gXCJQVU5DVF9TSElGVFwiO1xufSkoTW9kZSB8fCAoTW9kZSA9IHt9KSk7XG4vKipcbiAqIEluZGlyZWN0bHkgYWNjZXNzIHRoZSBnbG9iYWwgQmlnSW50IGNvbnN0cnVjdG9yLCBpdFxuICogYWxsb3dzIGJyb3dzZXJzIHRoYXQgZG9lc24ndCBzdXBwb3J0IEJpZ0ludCB0byBydW5cbiAqIHRoZSBsaWJyYXJ5IHdpdGhvdXQgYnJlYWtpbmcgZHVlIHRvIFwidW5kZWZpbmVkIEJpZ0ludFwiXG4gKiBlcnJvcnMuXG4gKi9cbmZ1bmN0aW9uIGdldEJpZ0ludENvbnN0cnVjdG9yKCkge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gd2luZG93WydCaWdJbnQnXSB8fCBudWxsO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIGdsb2JhbFsnQmlnSW50J10gfHwgbnVsbDtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gc2VsZlsnQmlnSW50J10gfHwgbnVsbDtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDYW5cXCd0IHNlYXJjaCBnbG9iYWxzIGZvciBCaWdJbnQhJyk7XG59XG4vKipcbiAqIFVzZWQgdG8gc3RvcmUgdGhlIEJpZ0ludCBjb25zdHJ1Y3Rvci5cbiAqL1xudmFyIEJpZ0ludGVnZXI7XG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gY3JlYXRlcyBhIGJpZ2ludCB2YWx1ZS4gSXQgYWxsb3dzIGJyb3dzZXJzXG4gKiB0aGF0IGRvZXNuJ3Qgc3VwcG9ydCBCaWdJbnQgdG8gcnVuIHRoZSByZXN0IG9mIHRoZSBsaWJyYXJ5XG4gKiBieSBub3QgZGlyZWN0bHkgYWNjZXNzaW5nIHRoZSBCaWdJbnQgY29uc3RydWN0b3IuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUJpZ0ludChudW0pIHtcbiAgICBpZiAodHlwZW9mIEJpZ0ludGVnZXIgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIEJpZ0ludGVnZXIgPSBnZXRCaWdJbnRDb25zdHJ1Y3RvcigpO1xuICAgIH1cbiAgICBpZiAoQmlnSW50ZWdlciA9PT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0JpZ0ludCBpcyBub3Qgc3VwcG9ydGVkIScpO1xuICAgIH1cbiAgICByZXR1cm4gQmlnSW50ZWdlcihudW0pO1xufVxuZnVuY3Rpb24gZ2V0RVhQOTAwKCkge1xuICAgIC8vIGluIEphdmEgLSBhcnJheSB3aXRoIGxlbmd0aCA9IDE2XG4gICAgdmFyIEVYUDkwMCA9IFtdO1xuICAgIEVYUDkwMFswXSA9IGNyZWF0ZUJpZ0ludCgxKTtcbiAgICB2YXIgbmluZUh1bmRyZWQgPSBjcmVhdGVCaWdJbnQoOTAwKTtcbiAgICBFWFA5MDBbMV0gPSBuaW5lSHVuZHJlZDtcbiAgICAvLyBpbiBKYXZhIC0gYXJyYXkgd2l0aCBsZW5ndGggPSAxNlxuICAgIGZvciAodmFyIGkgLyppbnQqLyA9IDI7IGkgPCAxNjsgaSsrKSB7XG4gICAgICAgIEVYUDkwMFtpXSA9IEVYUDkwMFtpIC0gMV0gKiBuaW5lSHVuZHJlZDtcbiAgICB9XG4gICAgcmV0dXJuIEVYUDkwMDtcbn1cbi8qKlxuICogPHA+VGhpcyBjbGFzcyBjb250YWlucyB0aGUgbWV0aG9kcyBmb3IgZGVjb2RpbmcgdGhlIFBERjQxNyBjb2Rld29yZHMuPC9wPlxuICpcbiAqIEBhdXRob3IgU0lUQSBMYWIgKGtldmluLm9zdWxsaXZhbkBzaXRhLmFlcm8pXG4gKiBAYXV0aG9yIEd1ZW50aGVyIEdyYXVcbiAqL1xudmFyIERlY29kZWRCaXRTdHJlYW1QYXJzZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRGVjb2RlZEJpdFN0cmVhbVBhcnNlcigpIHtcbiAgICB9XG4gICAgLy8gICBwcml2YXRlIERlY29kZWRCaXRTdHJlYW1QYXJzZXIoKSB7XG4gICAgLy8gfVxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvZGV3b3Jkc1xuICAgICAqIEBwYXJhbSBlY0xldmVsXG4gICAgICpcbiAgICAgKiBAdGhyb3dzIEZvcm1hdEV4Y2VwdGlvblxuICAgICAqL1xuICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuZGVjb2RlID0gZnVuY3Rpb24gKGNvZGV3b3JkcywgZWNMZXZlbCkge1xuICAgICAgICAvLyBwYXNzIGVuY29kaW5nIHRvIHJlc3VsdCAod2lsbCBiZSB1c2VkIGZvciBkZWNvZGUgc3ltYm9scyBpbiBieXRlIG1vZGUpXG4gICAgICAgIHZhciByZXN1bHQgPSBuZXcgU3RyaW5nQnVpbGRlcl8xLmRlZmF1bHQoJycpO1xuICAgICAgICAvLyBsZXQgZW5jb2Rpbmc6IENoYXJzZXQgPSBTdGFuZGFyZENoYXJzZXRzLklTT184ODU5XzE7XG4gICAgICAgIHZhciBlbmNvZGluZyA9IENoYXJhY3RlclNldEVDSV8xLmRlZmF1bHQuSVNPODg1OV8xO1xuICAgICAgICAvKipcbiAgICAgICAgICogQG5vdGUgdGhlIG5leHQgY29tbWFuZCBpcyBzcGVjaWZpYyBmcm9tIHRoaXMgVHlwZVNjcmlwdCBsaWJyYXJ5XG4gICAgICAgICAqIGJlY2F1c2UgVFMgY2FuJ3QgcHJvcGVybHkgY2FzdCBzb21lIHZhbHVlcyB0byBjaGFyIGFuZFxuICAgICAgICAgKiBjb252ZXJ0IGl0IHRvIHN0cmluZyBsYXRlciBjb3JyZWN0bHkgZHVlIHRvIGVuY29kaW5nXG4gICAgICAgICAqIGRpZmZlcmVuY2VzIGZyb20gSmF2YSB2ZXJzaW9uLiBBcyByZXBvcnRlZCBoZXJlOlxuICAgICAgICAgKiBodHRwczovL2dpdGh1Yi5jb20venhpbmctanMvbGlicmFyeS9wdWxsLzI2NC9maWxlcyNyMzgyODMxNTkzXG4gICAgICAgICAqL1xuICAgICAgICByZXN1bHQuZW5hYmxlRGVjb2RpbmcoZW5jb2RpbmcpO1xuICAgICAgICAvLyBHZXQgY29tcGFjdGlvbiBtb2RlXG4gICAgICAgIHZhciBjb2RlSW5kZXggPSAxO1xuICAgICAgICB2YXIgY29kZSA9IGNvZGV3b3Jkc1tjb2RlSW5kZXgrK107XG4gICAgICAgIHZhciByZXN1bHRNZXRhZGF0YSA9IG5ldyBQREY0MTdSZXN1bHRNZXRhZGF0YV8xLmRlZmF1bHQoKTtcbiAgICAgICAgd2hpbGUgKGNvZGVJbmRleCA8IGNvZGV3b3Jkc1swXSkge1xuICAgICAgICAgICAgc3dpdGNoIChjb2RlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLlRFWFRfQ09NUEFDVElPTl9NT0RFX0xBVENIOlxuICAgICAgICAgICAgICAgICAgICBjb2RlSW5kZXggPSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLnRleHRDb21wYWN0aW9uKGNvZGV3b3JkcywgY29kZUluZGV4LCByZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuQllURV9DT01QQUNUSU9OX01PREVfTEFUQ0g6XG4gICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLkJZVEVfQ09NUEFDVElPTl9NT0RFX0xBVENIXzY6XG4gICAgICAgICAgICAgICAgICAgIGNvZGVJbmRleCA9IERlY29kZWRCaXRTdHJlYW1QYXJzZXIuYnl0ZUNvbXBhY3Rpb24oY29kZSwgY29kZXdvcmRzLCBlbmNvZGluZywgY29kZUluZGV4LCByZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuTU9ERV9TSElGVF9UT19CWVRFX0NPTVBBQ1RJT05fTU9ERTpcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgvKihjaGFyKSovIGNvZGV3b3Jkc1tjb2RlSW5kZXgrK10pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuTlVNRVJJQ19DT01QQUNUSU9OX01PREVfTEFUQ0g6XG4gICAgICAgICAgICAgICAgICAgIGNvZGVJbmRleCA9IERlY29kZWRCaXRTdHJlYW1QYXJzZXIubnVtZXJpY0NvbXBhY3Rpb24oY29kZXdvcmRzLCBjb2RlSW5kZXgsIHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5FQ0lfQ0hBUlNFVDpcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNoYXJzZXRFQ0kgPSBDaGFyYWN0ZXJTZXRFQ0lfMS5kZWZhdWx0LmdldENoYXJhY3RlclNldEVDSUJ5VmFsdWUoY29kZXdvcmRzW2NvZGVJbmRleCsrXSk7XG4gICAgICAgICAgICAgICAgICAgIC8vIGVuY29kaW5nID0gQ2hhcnNldC5mb3JOYW1lKGNoYXJzZXRFQ0kuZ2V0TmFtZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLkVDSV9HRU5FUkFMX1BVUlBPU0U6XG4gICAgICAgICAgICAgICAgICAgIC8vIENhbid0IGRvIGFueXRoaW5nIHdpdGggZ2VuZXJpYyBFQ0k7IHNraXAgaXRzIDIgY2hhcmFjdGVyc1xuICAgICAgICAgICAgICAgICAgICBjb2RlSW5kZXggKz0gMjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLkVDSV9VU0VSX0RFRklORUQ6XG4gICAgICAgICAgICAgICAgICAgIC8vIENhbid0IGRvIGFueXRoaW5nIHdpdGggdXNlciBFQ0k7IHNraXAgaXRzIDEgY2hhcmFjdGVyXG4gICAgICAgICAgICAgICAgICAgIGNvZGVJbmRleCsrO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuQkVHSU5fTUFDUk9fUERGNDE3X0NPTlRST0xfQkxPQ0s6XG4gICAgICAgICAgICAgICAgICAgIGNvZGVJbmRleCA9IERlY29kZWRCaXRTdHJlYW1QYXJzZXIuZGVjb2RlTWFjcm9CbG9jayhjb2Rld29yZHMsIGNvZGVJbmRleCwgcmVzdWx0TWV0YWRhdGEpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuQkVHSU5fTUFDUk9fUERGNDE3X09QVElPTkFMX0ZJRUxEOlxuICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5NQUNST19QREY0MTdfVEVSTUlOQVRPUjpcbiAgICAgICAgICAgICAgICAgICAgLy8gU2hvdWxkIG5vdCBzZWUgdGhlc2Ugb3V0c2lkZSBhIG1hY3JvIGJsb2NrXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgLy8gRGVmYXVsdCB0byB0ZXh0IGNvbXBhY3Rpb24uIER1cmluZyB0ZXN0aW5nIG51bWVyb3VzIGJhcmNvZGVzXG4gICAgICAgICAgICAgICAgICAgIC8vIGFwcGVhcmVkIHRvIGJlIG1pc3NpbmcgdGhlIHN0YXJ0aW5nIG1vZGUuIEluIHRoZXNlIGNhc2VzIGRlZmF1bHRpbmdcbiAgICAgICAgICAgICAgICAgICAgLy8gdG8gdGV4dCBjb21wYWN0aW9uIHNlZW1zIHRvIHdvcmsuXG4gICAgICAgICAgICAgICAgICAgIGNvZGVJbmRleC0tO1xuICAgICAgICAgICAgICAgICAgICBjb2RlSW5kZXggPSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLnRleHRDb21wYWN0aW9uKGNvZGV3b3JkcywgY29kZUluZGV4LCByZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjb2RlSW5kZXggPCBjb2Rld29yZHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgY29kZSA9IGNvZGV3b3Jkc1tjb2RlSW5kZXgrK107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0LmdldEZvcm1hdEluc3RhbmNlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGgoKSA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdC5nZXRGb3JtYXRJbnN0YW5jZSgpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBkZWNvZGVyUmVzdWx0ID0gbmV3IERlY29kZXJSZXN1bHRfMS5kZWZhdWx0KG51bGwsIHJlc3VsdC50b1N0cmluZygpLCBudWxsLCBlY0xldmVsKTtcbiAgICAgICAgZGVjb2RlclJlc3VsdC5zZXRPdGhlcihyZXN1bHRNZXRhZGF0YSk7XG4gICAgICAgIHJldHVybiBkZWNvZGVyUmVzdWx0O1xuICAgIH07XG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaW50XG4gICAgICogQHBhcmFtIHBhcmFtMVxuICAgICAqIEBwYXJhbSBjb2Rld29yZHNcbiAgICAgKiBAcGFyYW0gaW50XG4gICAgICogQHBhcmFtIGNvZGVJbmRleFxuICAgICAqIEBwYXJhbSBQREY0MTdSZXN1bHRNZXRhZGF0YVxuICAgICAqIEBwYXJhbSByZXN1bHRNZXRhZGF0YVxuICAgICAqXG4gICAgICogQHRocm93cyBGb3JtYXRFeGNlcHRpb25cbiAgICAgKi9cbiAgICAvLyBAU3VwcHJlc3NXYXJuaW5ncyhcImRlcHJlY2F0aW9uXCIpXG4gICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5kZWNvZGVNYWNyb0Jsb2NrID0gZnVuY3Rpb24gKGNvZGV3b3JkcywgY29kZUluZGV4LCByZXN1bHRNZXRhZGF0YSkge1xuICAgICAgICBpZiAoY29kZUluZGV4ICsgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5OVU1CRVJfT0ZfU0VRVUVOQ0VfQ09ERVdPUkRTID4gY29kZXdvcmRzWzBdKSB7XG4gICAgICAgICAgICAvLyB3ZSBtdXN0IGhhdmUgYXQgbGVhc3QgdHdvIGJ5dGVzIGxlZnQgZm9yIHRoZSBzZWdtZW50IGluZGV4XG4gICAgICAgICAgICB0aHJvdyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0LmdldEZvcm1hdEluc3RhbmNlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHNlZ21lbnRJbmRleEFycmF5ID0gbmV3IEludDMyQXJyYXkoRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5OVU1CRVJfT0ZfU0VRVUVOQ0VfQ09ERVdPUkRTKTtcbiAgICAgICAgZm9yICh2YXIgaSAvKmludCovID0gMDsgaSA8IERlY29kZWRCaXRTdHJlYW1QYXJzZXIuTlVNQkVSX09GX1NFUVVFTkNFX0NPREVXT1JEUzsgaSsrLCBjb2RlSW5kZXgrKykge1xuICAgICAgICAgICAgc2VnbWVudEluZGV4QXJyYXlbaV0gPSBjb2Rld29yZHNbY29kZUluZGV4XTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHRNZXRhZGF0YS5zZXRTZWdtZW50SW5kZXgoSW50ZWdlcl8xLmRlZmF1bHQucGFyc2VJbnQoRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5kZWNvZGVCYXNlOTAwdG9CYXNlMTAoc2VnbWVudEluZGV4QXJyYXksIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuTlVNQkVSX09GX1NFUVVFTkNFX0NPREVXT1JEUykpKTtcbiAgICAgICAgdmFyIGZpbGVJZCA9IG5ldyBTdHJpbmdCdWlsZGVyXzEuZGVmYXVsdCgpO1xuICAgICAgICBjb2RlSW5kZXggPSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLnRleHRDb21wYWN0aW9uKGNvZGV3b3JkcywgY29kZUluZGV4LCBmaWxlSWQpO1xuICAgICAgICByZXN1bHRNZXRhZGF0YS5zZXRGaWxlSWQoZmlsZUlkLnRvU3RyaW5nKCkpO1xuICAgICAgICB2YXIgb3B0aW9uYWxGaWVsZHNTdGFydCA9IC0xO1xuICAgICAgICBpZiAoY29kZXdvcmRzW2NvZGVJbmRleF0gPT09IERlY29kZWRCaXRTdHJlYW1QYXJzZXIuQkVHSU5fTUFDUk9fUERGNDE3X09QVElPTkFMX0ZJRUxEKSB7XG4gICAgICAgICAgICBvcHRpb25hbEZpZWxkc1N0YXJ0ID0gY29kZUluZGV4ICsgMTtcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAoY29kZUluZGV4IDwgY29kZXdvcmRzWzBdKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGNvZGV3b3Jkc1tjb2RlSW5kZXhdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLkJFR0lOX01BQ1JPX1BERjQxN19PUFRJT05BTF9GSUVMRDpcbiAgICAgICAgICAgICAgICAgICAgY29kZUluZGV4Kys7XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoY29kZXdvcmRzW2NvZGVJbmRleF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5NQUNST19QREY0MTdfT1BUSU9OQUxfRklFTERfRklMRV9OQU1FOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmaWxlTmFtZSA9IG5ldyBTdHJpbmdCdWlsZGVyXzEuZGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVJbmRleCA9IERlY29kZWRCaXRTdHJlYW1QYXJzZXIudGV4dENvbXBhY3Rpb24oY29kZXdvcmRzLCBjb2RlSW5kZXggKyAxLCBmaWxlTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TWV0YWRhdGEuc2V0RmlsZU5hbWUoZmlsZU5hbWUudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuTUFDUk9fUERGNDE3X09QVElPTkFMX0ZJRUxEX1NFTkRFUjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2VuZGVyID0gbmV3IFN0cmluZ0J1aWxkZXJfMS5kZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZUluZGV4ID0gRGVjb2RlZEJpdFN0cmVhbVBhcnNlci50ZXh0Q29tcGFjdGlvbihjb2Rld29yZHMsIGNvZGVJbmRleCArIDEsIHNlbmRlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TWV0YWRhdGEuc2V0U2VuZGVyKHNlbmRlci50b1N0cmluZygpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5NQUNST19QREY0MTdfT1BUSU9OQUxfRklFTERfQUREUkVTU0VFOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhZGRyZXNzZWUgPSBuZXcgU3RyaW5nQnVpbGRlcl8xLmRlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlSW5kZXggPSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLnRleHRDb21wYWN0aW9uKGNvZGV3b3JkcywgY29kZUluZGV4ICsgMSwgYWRkcmVzc2VlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRNZXRhZGF0YS5zZXRBZGRyZXNzZWUoYWRkcmVzc2VlLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLk1BQ1JPX1BERjQxN19PUFRJT05BTF9GSUVMRF9TRUdNRU5UX0NPVU5UOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzZWdtZW50Q291bnQgPSBuZXcgU3RyaW5nQnVpbGRlcl8xLmRlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlSW5kZXggPSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLm51bWVyaWNDb21wYWN0aW9uKGNvZGV3b3JkcywgY29kZUluZGV4ICsgMSwgc2VnbWVudENvdW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRNZXRhZGF0YS5zZXRTZWdtZW50Q291bnQoSW50ZWdlcl8xLmRlZmF1bHQucGFyc2VJbnQoc2VnbWVudENvdW50LnRvU3RyaW5nKCkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5NQUNST19QREY0MTdfT1BUSU9OQUxfRklFTERfVElNRV9TVEFNUDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGltZXN0YW1wID0gbmV3IFN0cmluZ0J1aWxkZXJfMS5kZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZUluZGV4ID0gRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5udW1lcmljQ29tcGFjdGlvbihjb2Rld29yZHMsIGNvZGVJbmRleCArIDEsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TWV0YWRhdGEuc2V0VGltZXN0YW1wKExvbmdfMS5kZWZhdWx0LnBhcnNlTG9uZyh0aW1lc3RhbXAudG9TdHJpbmcoKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLk1BQ1JPX1BERjQxN19PUFRJT05BTF9GSUVMRF9DSEVDS1NVTTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2hlY2tzdW0gPSBuZXcgU3RyaW5nQnVpbGRlcl8xLmRlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlSW5kZXggPSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLm51bWVyaWNDb21wYWN0aW9uKGNvZGV3b3JkcywgY29kZUluZGV4ICsgMSwgY2hlY2tzdW0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdE1ldGFkYXRhLnNldENoZWNrc3VtKEludGVnZXJfMS5kZWZhdWx0LnBhcnNlSW50KGNoZWNrc3VtLnRvU3RyaW5nKCkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5NQUNST19QREY0MTdfT1BUSU9OQUxfRklFTERfRklMRV9TSVpFOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmaWxlU2l6ZSA9IG5ldyBTdHJpbmdCdWlsZGVyXzEuZGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVJbmRleCA9IERlY29kZWRCaXRTdHJlYW1QYXJzZXIubnVtZXJpY0NvbXBhY3Rpb24oY29kZXdvcmRzLCBjb2RlSW5kZXggKyAxLCBmaWxlU2l6ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0TWV0YWRhdGEuc2V0RmlsZVNpemUoTG9uZ18xLmRlZmF1bHQucGFyc2VMb25nKGZpbGVTaXplLnRvU3RyaW5nKCkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdC5nZXRGb3JtYXRJbnN0YW5jZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5NQUNST19QREY0MTdfVEVSTUlOQVRPUjpcbiAgICAgICAgICAgICAgICAgICAgY29kZUluZGV4Kys7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdE1ldGFkYXRhLnNldExhc3RTZWdtZW50KHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0LmdldEZvcm1hdEluc3RhbmNlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gY29weSBvcHRpb25hbCBmaWVsZHMgdG8gYWRkaXRpb25hbCBvcHRpb25zXG4gICAgICAgIGlmIChvcHRpb25hbEZpZWxkc1N0YXJ0ICE9PSAtMSkge1xuICAgICAgICAgICAgdmFyIG9wdGlvbmFsRmllbGRzTGVuZ3RoID0gY29kZUluZGV4IC0gb3B0aW9uYWxGaWVsZHNTdGFydDtcbiAgICAgICAgICAgIGlmIChyZXN1bHRNZXRhZGF0YS5pc0xhc3RTZWdtZW50KCkpIHtcbiAgICAgICAgICAgICAgICAvLyBkbyBub3QgaW5jbHVkZSB0ZXJtaW5hdG9yXG4gICAgICAgICAgICAgICAgb3B0aW9uYWxGaWVsZHNMZW5ndGgtLTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdE1ldGFkYXRhLnNldE9wdGlvbmFsRGF0YShBcnJheXNfMS5kZWZhdWx0LmNvcHlPZlJhbmdlKGNvZGV3b3Jkcywgb3B0aW9uYWxGaWVsZHNTdGFydCwgb3B0aW9uYWxGaWVsZHNTdGFydCArIG9wdGlvbmFsRmllbGRzTGVuZ3RoKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvZGVJbmRleDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFRleHQgQ29tcGFjdGlvbiBtb2RlIChzZWUgNS40LjEuNSkgcGVybWl0cyBhbGwgcHJpbnRhYmxlIEFTQ0lJIGNoYXJhY3RlcnMgdG8gYmVcbiAgICAgKiBlbmNvZGVkLCBpLmUuIHZhbHVlcyAzMiAtIDEyNiBpbmNsdXNpdmUgaW4gYWNjb3JkYW5jZSB3aXRoIElTTy9JRUMgNjQ2IChJUlYpLCBhc1xuICAgICAqIHdlbGwgYXMgc2VsZWN0ZWQgY29udHJvbCBjaGFyYWN0ZXJzLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvZGV3b3JkcyBUaGUgYXJyYXkgb2YgY29kZXdvcmRzIChkYXRhICsgZXJyb3IpXG4gICAgICogQHBhcmFtIGNvZGVJbmRleCBUaGUgY3VycmVudCBpbmRleCBpbnRvIHRoZSBjb2Rld29yZCBhcnJheS5cbiAgICAgKiBAcGFyYW0gcmVzdWx0ICAgIFRoZSBkZWNvZGVkIGRhdGEgaXMgYXBwZW5kZWQgdG8gdGhlIHJlc3VsdC5cbiAgICAgKiBAcmV0dXJuIFRoZSBuZXh0IGluZGV4IGludG8gdGhlIGNvZGV3b3JkIGFycmF5LlxuICAgICAqL1xuICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIudGV4dENvbXBhY3Rpb24gPSBmdW5jdGlvbiAoY29kZXdvcmRzLCBjb2RlSW5kZXgsIHJlc3VsdCkge1xuICAgICAgICAvLyAyIGNoYXJhY3RlciBwZXIgY29kZXdvcmRcbiAgICAgICAgdmFyIHRleHRDb21wYWN0aW9uRGF0YSA9IG5ldyBJbnQzMkFycmF5KChjb2Rld29yZHNbMF0gLSBjb2RlSW5kZXgpICogMik7XG4gICAgICAgIC8vIFVzZWQgdG8gaG9sZCB0aGUgYnl0ZSBjb21wYWN0aW9uIHZhbHVlIGlmIHRoZXJlIGlzIGEgbW9kZSBzaGlmdFxuICAgICAgICB2YXIgYnl0ZUNvbXBhY3Rpb25EYXRhID0gbmV3IEludDMyQXJyYXkoKGNvZGV3b3Jkc1swXSAtIGNvZGVJbmRleCkgKiAyKTtcbiAgICAgICAgdmFyIGluZGV4ID0gMDtcbiAgICAgICAgdmFyIGVuZCA9IGZhbHNlO1xuICAgICAgICB3aGlsZSAoKGNvZGVJbmRleCA8IGNvZGV3b3Jkc1swXSkgJiYgIWVuZCkge1xuICAgICAgICAgICAgdmFyIGNvZGUgPSBjb2Rld29yZHNbY29kZUluZGV4KytdO1xuICAgICAgICAgICAgaWYgKGNvZGUgPCBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLlRFWFRfQ09NUEFDVElPTl9NT0RFX0xBVENIKSB7XG4gICAgICAgICAgICAgICAgdGV4dENvbXBhY3Rpb25EYXRhW2luZGV4XSA9IGNvZGUgLyAzMDtcbiAgICAgICAgICAgICAgICB0ZXh0Q29tcGFjdGlvbkRhdGFbaW5kZXggKyAxXSA9IGNvZGUgJSAzMDtcbiAgICAgICAgICAgICAgICBpbmRleCArPSAyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChjb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5URVhUX0NPTVBBQ1RJT05fTU9ERV9MQVRDSDpcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlaW5pdGlhbGl6ZSB0ZXh0IGNvbXBhY3Rpb24gbW9kZSB0byBhbHBoYSBzdWIgbW9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dENvbXBhY3Rpb25EYXRhW2luZGV4KytdID0gRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5URVhUX0NPTVBBQ1RJT05fTU9ERV9MQVRDSDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuQllURV9DT01QQUNUSU9OX01PREVfTEFUQ0g6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5CWVRFX0NPTVBBQ1RJT05fTU9ERV9MQVRDSF82OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuTlVNRVJJQ19DT01QQUNUSU9OX01PREVfTEFUQ0g6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5CRUdJTl9NQUNST19QREY0MTdfQ09OVFJPTF9CTE9DSzpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLkJFR0lOX01BQ1JPX1BERjQxN19PUFRJT05BTF9GSUVMRDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLk1BQ1JPX1BERjQxN19URVJNSU5BVE9SOlxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZUluZGV4LS07XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5NT0RFX1NISUZUX1RPX0JZVEVfQ09NUEFDVElPTl9NT0RFOlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIE1vZGUgU2hpZnQgY29kZXdvcmQgOTEzIHNoYWxsIGNhdXNlIGEgdGVtcG9yYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBzd2l0Y2ggZnJvbSBUZXh0IENvbXBhY3Rpb24gbW9kZSB0byBCeXRlIENvbXBhY3Rpb24gbW9kZS5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgc3dpdGNoIHNoYWxsIGJlIGluIGVmZmVjdCBmb3Igb25seSB0aGUgbmV4dCBjb2Rld29yZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFmdGVyIHdoaWNoIHRoZSBtb2RlIHNoYWxsIHJldmVydCB0byB0aGUgcHJldmFpbGluZyBzdWItbW9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2YgdGhlIFRleHQgQ29tcGFjdGlvbiBtb2RlLiBDb2Rld29yZCA5MTMgaXMgb25seSBhdmFpbGFibGVcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluIFRleHQgQ29tcGFjdGlvbiBtb2RlOyBpdHMgdXNlIGlzIGRlc2NyaWJlZCBpbiA1LjQuMi40LlxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dENvbXBhY3Rpb25EYXRhW2luZGV4XSA9IERlY29kZWRCaXRTdHJlYW1QYXJzZXIuTU9ERV9TSElGVF9UT19CWVRFX0NPTVBBQ1RJT05fTU9ERTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgPSBjb2Rld29yZHNbY29kZUluZGV4KytdO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZUNvbXBhY3Rpb25EYXRhW2luZGV4XSA9IGNvZGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbmRleCsrO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuZGVjb2RlVGV4dENvbXBhY3Rpb24odGV4dENvbXBhY3Rpb25EYXRhLCBieXRlQ29tcGFjdGlvbkRhdGEsIGluZGV4LCByZXN1bHQpO1xuICAgICAgICByZXR1cm4gY29kZUluZGV4O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogVGhlIFRleHQgQ29tcGFjdGlvbiBtb2RlIGluY2x1ZGVzIGFsbCB0aGUgcHJpbnRhYmxlIEFTQ0lJIGNoYXJhY3RlcnNcbiAgICAgKiAoaS5lLiB2YWx1ZXMgZnJvbSAzMiB0byAxMjYpIGFuZCB0aHJlZSBBU0NJSSBjb250cm9sIGNoYXJhY3RlcnM6IEhUIG9yIHRhYlxuICAgICAqICg5OiBlKSwgTEYgb3IgbGluZSBmZWVkICgxMDogZSksIGFuZCBDUiBvciBjYXJyaWFnZVxuICAgICAqIHJldHVybiAoMTM6IGUpLiBUaGUgVGV4dCBDb21wYWN0aW9uIG1vZGUgYWxzbyBpbmNsdWRlcyB2YXJpb3VzIGxhdGNoXG4gICAgICogYW5kIHNoaWZ0IGNoYXJhY3RlcnMgd2hpY2ggYXJlIHVzZWQgZXhjbHVzaXZlbHkgd2l0aGluIHRoZSBtb2RlLiBUaGUgVGV4dFxuICAgICAqIENvbXBhY3Rpb24gbW9kZSBlbmNvZGVzIHVwIHRvIDIgY2hhcmFjdGVycyBwZXIgY29kZXdvcmQuIFRoZSBjb21wYWN0aW9uIHJ1bGVzXG4gICAgICogZm9yIGNvbnZlcnRpbmcgZGF0YSBpbnRvIFBERjQxNyBjb2Rld29yZHMgYXJlIGRlZmluZWQgaW4gNS40LjIuMi4gVGhlIHN1Yi1tb2RlXG4gICAgICogc3dpdGNoZXMgYXJlIGRlZmluZWQgaW4gNS40LjIuMy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB0ZXh0Q29tcGFjdGlvbkRhdGEgVGhlIHRleHQgY29tcGFjdGlvbiBkYXRhLlxuICAgICAqIEBwYXJhbSBieXRlQ29tcGFjdGlvbkRhdGEgVGhlIGJ5dGUgY29tcGFjdGlvbiBkYXRhIGlmIHRoZXJlXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICB3YXMgYSBtb2RlIHNoaWZ0LlxuICAgICAqIEBwYXJhbSBsZW5ndGggICAgICAgICAgICAgVGhlIHNpemUgb2YgdGhlIHRleHQgY29tcGFjdGlvbiBhbmQgYnl0ZSBjb21wYWN0aW9uIGRhdGEuXG4gICAgICogQHBhcmFtIHJlc3VsdCAgICAgICAgICAgICBUaGUgZGVjb2RlZCBkYXRhIGlzIGFwcGVuZGVkIHRvIHRoZSByZXN1bHQuXG4gICAgICovXG4gICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5kZWNvZGVUZXh0Q29tcGFjdGlvbiA9IGZ1bmN0aW9uICh0ZXh0Q29tcGFjdGlvbkRhdGEsIGJ5dGVDb21wYWN0aW9uRGF0YSwgbGVuZ3RoLCByZXN1bHQpIHtcbiAgICAgICAgLy8gQmVnaW5uaW5nIGZyb20gYW4gaW5pdGlhbCBzdGF0ZSBvZiB0aGUgQWxwaGEgc3ViLW1vZGVcbiAgICAgICAgLy8gVGhlIGRlZmF1bHQgY29tcGFjdGlvbiBtb2RlIGZvciBQREY0MTcgaW4gZWZmZWN0IGF0IHRoZSBzdGFydCBvZiBlYWNoIHN5bWJvbCBzaGFsbCBhbHdheXMgYmUgVGV4dFxuICAgICAgICAvLyBDb21wYWN0aW9uIG1vZGUgQWxwaGEgc3ViLW1vZGUgKGFscGhhYmV0aWM6IHVwcGVyY2FzZSkuIEEgbGF0Y2ggY29kZXdvcmQgZnJvbSBhbm90aGVyIG1vZGUgdG8gdGhlIFRleHRcbiAgICAgICAgLy8gQ29tcGFjdGlvbiBtb2RlIHNoYWxsIGFsd2F5cyBzd2l0Y2ggdG8gdGhlIFRleHQgQ29tcGFjdGlvbiBBbHBoYSBzdWItbW9kZS5cbiAgICAgICAgdmFyIHN1Yk1vZGUgPSBNb2RlLkFMUEhBO1xuICAgICAgICB2YXIgcHJpb3JUb1NoaWZ0TW9kZSA9IE1vZGUuQUxQSEE7XG4gICAgICAgIHZhciBpID0gMDtcbiAgICAgICAgd2hpbGUgKGkgPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIHZhciBzdWJNb2RlQ2ggPSB0ZXh0Q29tcGFjdGlvbkRhdGFbaV07XG4gICAgICAgICAgICB2YXIgY2ggPSAvKmNoYXIqLyAnJztcbiAgICAgICAgICAgIHN3aXRjaCAoc3ViTW9kZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgTW9kZS5BTFBIQTpcbiAgICAgICAgICAgICAgICAgICAgLy8gQWxwaGEgKGFscGhhYmV0aWM6IHVwcGVyY2FzZSlcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN1Yk1vZGVDaCA8IDI2KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBVcHBlciBjYXNlIEFscGhhIENoYXJhY3RlclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm90ZTogNjUgPSAnQScgQVNDSUkgLT4gdGhlcmUgaXMgYnl0ZSBjb2RlIG9mIHN5bWJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgY2ggPSAvKihjaGFyKSgnQScgKyBzdWJNb2RlQ2gpICovIFN0cmluZy5mcm9tQ2hhckNvZGUoNjUgKyBzdWJNb2RlQ2gpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChzdWJNb2RlQ2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI2OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaCA9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLkxMOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJNb2RlID0gTW9kZS5MT1dFUjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLk1MOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJNb2RlID0gTW9kZS5NSVhFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLlBTOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTaGlmdCB0byBwdW5jdHVhdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmlvclRvU2hpZnRNb2RlID0gc3ViTW9kZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViTW9kZSA9IE1vZGUuUFVOQ1RfU0hJRlQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5NT0RFX1NISUZUX1RPX0JZVEVfQ09NUEFDVElPTl9NT0RFOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKC8qKGNoYXIpKi8gYnl0ZUNvbXBhY3Rpb25EYXRhW2ldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLlRFWFRfQ09NUEFDVElPTl9NT0RFX0xBVENIOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJNb2RlID0gTW9kZS5BTFBIQTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBNb2RlLkxPV0VSOlxuICAgICAgICAgICAgICAgICAgICAvLyBMb3dlciAoYWxwaGFiZXRpYzogbG93ZXJjYXNlKVxuICAgICAgICAgICAgICAgICAgICBpZiAoc3ViTW9kZUNoIDwgMjYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoID0gLyooY2hhcikoJ2EnICsgc3ViTW9kZUNoKSovIFN0cmluZy5mcm9tQ2hhckNvZGUoOTcgKyBzdWJNb2RlQ2gpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChzdWJNb2RlQ2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI2OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaCA9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLkFTOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTaGlmdCB0byBhbHBoYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmlvclRvU2hpZnRNb2RlID0gc3ViTW9kZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViTW9kZSA9IE1vZGUuQUxQSEFfU0hJRlQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5NTDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViTW9kZSA9IE1vZGUuTUlYRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5QUzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2hpZnQgdG8gcHVuY3R1YXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpb3JUb1NoaWZ0TW9kZSA9IHN1Yk1vZGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Yk1vZGUgPSBNb2RlLlBVTkNUX1NISUZUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuTU9ERV9TSElGVF9UT19CWVRFX0NPTVBBQ1RJT05fTU9ERTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9ETyBEb2VzIHRoaXMgbmVlZCB0byB1c2UgdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGVuY29kaW5nPyBTZWUgb3RoZXIgb2NjdXJyZW5jZXMgYmVsb3dcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgvKihjaGFyKSovIGJ5dGVDb21wYWN0aW9uRGF0YVtpXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5URVhUX0NPTVBBQ1RJT05fTU9ERV9MQVRDSDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViTW9kZSA9IE1vZGUuQUxQSEE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgTW9kZS5NSVhFRDpcbiAgICAgICAgICAgICAgICAgICAgLy8gTWl4ZWQgKHB1bmN0dWF0aW9uOiBlKVxuICAgICAgICAgICAgICAgICAgICBpZiAoc3ViTW9kZUNoIDwgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5QTCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2ggPSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLk1JWEVEX0NIQVJTW3N1Yk1vZGVDaF07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHN1Yk1vZGVDaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5QTDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViTW9kZSA9IE1vZGUuUFVOQ1Q7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjY6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoID0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuTEw6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Yk1vZGUgPSBNb2RlLkxPV0VSO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuQUw6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Yk1vZGUgPSBNb2RlLkFMUEhBO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuUFM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNoaWZ0IHRvIHB1bmN0dWF0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW9yVG9TaGlmdE1vZGUgPSBzdWJNb2RlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJNb2RlID0gTW9kZS5QVU5DVF9TSElGVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLk1PREVfU0hJRlRfVE9fQllURV9DT01QQUNUSU9OX01PREU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoLyooY2hhcikqLyBieXRlQ29tcGFjdGlvbkRhdGFbaV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuVEVYVF9DT01QQUNUSU9OX01PREVfTEFUQ0g6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Yk1vZGUgPSBNb2RlLkFMUEhBO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIE1vZGUuUFVOQ1Q6XG4gICAgICAgICAgICAgICAgICAgIC8vIFB1bmN0dWF0aW9uXG4gICAgICAgICAgICAgICAgICAgIGlmIChzdWJNb2RlQ2ggPCBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLlBBTCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2ggPSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLlBVTkNUX0NIQVJTW3N1Yk1vZGVDaF07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHN1Yk1vZGVDaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5QQUw6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Yk1vZGUgPSBNb2RlLkFMUEhBO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuTU9ERV9TSElGVF9UT19CWVRFX0NPTVBBQ1RJT05fTU9ERTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgvKihjaGFyKSovIGJ5dGVDb21wYWN0aW9uRGF0YVtpXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5URVhUX0NPTVBBQ1RJT05fTU9ERV9MQVRDSDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViTW9kZSA9IE1vZGUuQUxQSEE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgTW9kZS5BTFBIQV9TSElGVDpcbiAgICAgICAgICAgICAgICAgICAgLy8gUmVzdG9yZSBzdWItbW9kZVxuICAgICAgICAgICAgICAgICAgICBzdWJNb2RlID0gcHJpb3JUb1NoaWZ0TW9kZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN1Yk1vZGVDaCA8IDI2KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaCA9IC8qKGNoYXIpKCdBJyArIHN1Yk1vZGVDaCkqLyBTdHJpbmcuZnJvbUNoYXJDb2RlKDY1ICsgc3ViTW9kZUNoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoc3ViTW9kZUNoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyNjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2ggPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5URVhUX0NPTVBBQ1RJT05fTU9ERV9MQVRDSDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViTW9kZSA9IE1vZGUuQUxQSEE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgTW9kZS5QVU5DVF9TSElGVDpcbiAgICAgICAgICAgICAgICAgICAgLy8gUmVzdG9yZSBzdWItbW9kZVxuICAgICAgICAgICAgICAgICAgICBzdWJNb2RlID0gcHJpb3JUb1NoaWZ0TW9kZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN1Yk1vZGVDaCA8IERlY29kZWRCaXRTdHJlYW1QYXJzZXIuUEFMKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaCA9IERlY29kZWRCaXRTdHJlYW1QYXJzZXIuUFVOQ1RfQ0hBUlNbc3ViTW9kZUNoXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoc3ViTW9kZUNoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLlBBTDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViTW9kZSA9IE1vZGUuQUxQSEE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5NT0RFX1NISUZUX1RPX0JZVEVfQ09NUEFDVElPTl9NT0RFOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQUyBiZWZvcmUgU2hpZnQtdG8tQnl0ZSBpcyB1c2VkIGFzIGEgcGFkZGluZyBjaGFyYWN0ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNlZSA1LjQuMi40IG9mIHRoZSBzcGVjaWZpY2F0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoLyooY2hhcikqLyBieXRlQ29tcGFjdGlvbkRhdGFbaV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuVEVYVF9DT01QQUNUSU9OX01PREVfTEFUQ0g6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Yk1vZGUgPSBNb2RlLkFMUEhBO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGlmIChjaCAhPT0gMCkge1xuICAgICAgICAgICAgaWYgKGNoICE9PSAnJykge1xuICAgICAgICAgICAgICAgIC8vIEFwcGVuZCBkZWNvZGVkIGNoYXJhY3RlciB0byByZXN1bHRcbiAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGNoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGkrKztcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogQnl0ZSBDb21wYWN0aW9uIG1vZGUgKHNlZSA1LjQuMykgcGVybWl0cyBhbGwgMjU2IHBvc3NpYmxlIDgtYml0IGJ5dGUgdmFsdWVzIHRvIGJlIGVuY29kZWQuXG4gICAgICogVGhpcyBpbmNsdWRlcyBhbGwgQVNDSUkgY2hhcmFjdGVycyB2YWx1ZSAwIHRvIDEyNyBpbmNsdXNpdmUgYW5kIHByb3ZpZGVzIGZvciBpbnRlcm5hdGlvbmFsXG4gICAgICogY2hhcmFjdGVyIHNldCBzdXBwb3J0LlxuICAgICAqXG4gICAgICogQHBhcmFtIG1vZGUgICAgICBUaGUgYnl0ZSBjb21wYWN0aW9uIG1vZGUgaS5lLiA5MDEgb3IgOTI0XG4gICAgICogQHBhcmFtIGNvZGV3b3JkcyBUaGUgYXJyYXkgb2YgY29kZXdvcmRzIChkYXRhICsgZXJyb3IpXG4gICAgICogQHBhcmFtIGVuY29kaW5nICBDdXJyZW50bHkgYWN0aXZlIGNoYXJhY3RlciBlbmNvZGluZ1xuICAgICAqIEBwYXJhbSBjb2RlSW5kZXggVGhlIGN1cnJlbnQgaW5kZXggaW50byB0aGUgY29kZXdvcmQgYXJyYXkuXG4gICAgICogQHBhcmFtIHJlc3VsdCAgICBUaGUgZGVjb2RlZCBkYXRhIGlzIGFwcGVuZGVkIHRvIHRoZSByZXN1bHQuXG4gICAgICogQHJldHVybiBUaGUgbmV4dCBpbmRleCBpbnRvIHRoZSBjb2Rld29yZCBhcnJheS5cbiAgICAgKi9cbiAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLmJ5dGVDb21wYWN0aW9uID0gZnVuY3Rpb24gKG1vZGUsIGNvZGV3b3JkcywgZW5jb2RpbmcsIGNvZGVJbmRleCwgcmVzdWx0KSB7XG4gICAgICAgIHZhciBkZWNvZGVkQnl0ZXMgPSBuZXcgQnl0ZUFycmF5T3V0cHV0U3RyZWFtXzEuZGVmYXVsdCgpO1xuICAgICAgICB2YXIgY291bnQgPSAwO1xuICAgICAgICB2YXIgdmFsdWUgPSAvKmxvbmcqLyAwO1xuICAgICAgICB2YXIgZW5kID0gZmFsc2U7XG4gICAgICAgIHN3aXRjaCAobW9kZSkge1xuICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLkJZVEVfQ09NUEFDVElPTl9NT0RFX0xBVENIOlxuICAgICAgICAgICAgICAgIC8vIFRvdGFsIG51bWJlciBvZiBCeXRlIENvbXBhY3Rpb24gY2hhcmFjdGVycyB0byBiZSBlbmNvZGVkXG4gICAgICAgICAgICAgICAgLy8gaXMgbm90IGEgbXVsdGlwbGUgb2YgNlxuICAgICAgICAgICAgICAgIHZhciBieXRlQ29tcGFjdGVkQ29kZXdvcmRzID0gbmV3IEludDMyQXJyYXkoNik7XG4gICAgICAgICAgICAgICAgdmFyIG5leHRDb2RlID0gY29kZXdvcmRzW2NvZGVJbmRleCsrXTtcbiAgICAgICAgICAgICAgICB3aGlsZSAoKGNvZGVJbmRleCA8IGNvZGV3b3Jkc1swXSkgJiYgIWVuZCkge1xuICAgICAgICAgICAgICAgICAgICBieXRlQ29tcGFjdGVkQ29kZXdvcmRzW2NvdW50KytdID0gbmV4dENvZGU7XG4gICAgICAgICAgICAgICAgICAgIC8vIEJhc2UgOTAwXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gOTAwICogdmFsdWUgKyBuZXh0Q29kZTtcbiAgICAgICAgICAgICAgICAgICAgbmV4dENvZGUgPSBjb2Rld29yZHNbY29kZUluZGV4KytdO1xuICAgICAgICAgICAgICAgICAgICAvLyBwZXJoYXBzIGl0IHNob3VsZCBiZSBvayB0byBjaGVjayBvbmx5IG5leHRDb2RlID49IFRFWFRfQ09NUEFDVElPTl9NT0RFX0xBVENIXG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobmV4dENvZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5URVhUX0NPTVBBQ1RJT05fTU9ERV9MQVRDSDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5CWVRFX0NPTVBBQ1RJT05fTU9ERV9MQVRDSDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5OVU1FUklDX0NPTVBBQ1RJT05fTU9ERV9MQVRDSDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5CWVRFX0NPTVBBQ1RJT05fTU9ERV9MQVRDSF82OlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLkJFR0lOX01BQ1JPX1BERjQxN19DT05UUk9MX0JMT0NLOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLkJFR0lOX01BQ1JPX1BERjQxN19PUFRJT05BTF9GSUVMRDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5NQUNST19QREY0MTdfVEVSTUlOQVRPUjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlSW5kZXgtLTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGNvdW50ICUgNSA9PT0gMCkgJiYgKGNvdW50ID4gMCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVjb2RlIGV2ZXJ5IDUgY29kZXdvcmRzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvbnZlcnQgdG8gQmFzZSAyNTZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiAvKmludCovID0gMDsgaiA8IDY7ICsraikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQG5vdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEphdmFTY3JpcHQgc3RvcmVzIG51bWJlcnMgYXMgNjQgYml0cyBmbG9hdGluZyBwb2ludCBudW1iZXJzLCBidXQgYWxsIGJpdHdpc2Ugb3BlcmF0aW9ucyBhcmUgcGVyZm9ybWVkIG9uIDMyIGJpdHMgYmluYXJ5IG51bWJlcnMuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBTbyB0aGUgbmV4dCBiaXR3aXNlIG9wZXJhdGlvbiBjb3VsZCBub3QgYmUgZG9uZSB3aXRoIHNpbXBsZSBudW1iZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZWRCeXRlcy53cml0ZSgvKihieXRlKSovIE51bWJlcihjcmVhdGVCaWdJbnQodmFsdWUpID4+IGNyZWF0ZUJpZ0ludCg4ICogKDUgLSBqKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gaWYgdGhlIGVuZCBvZiBhbGwgY29kZXdvcmRzIGlzIHJlYWNoZWQgdGhlIGxhc3QgY29kZXdvcmQgbmVlZHMgdG8gYmUgYWRkZWRcbiAgICAgICAgICAgICAgICBpZiAoY29kZUluZGV4ID09PSBjb2Rld29yZHNbMF0gJiYgbmV4dENvZGUgPCBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLlRFWFRfQ09NUEFDVElPTl9NT0RFX0xBVENIKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ5dGVDb21wYWN0ZWRDb2Rld29yZHNbY291bnQrK10gPSBuZXh0Q29kZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gSWYgQnl0ZSBDb21wYWN0aW9uIG1vZGUgaXMgaW52b2tlZCB3aXRoIGNvZGV3b3JkIDkwMSxcbiAgICAgICAgICAgICAgICAvLyB0aGUgbGFzdCBncm91cCBvZiBjb2Rld29yZHMgaXMgaW50ZXJwcmV0ZWQgZGlyZWN0bHlcbiAgICAgICAgICAgICAgICAvLyBhcyBvbmUgYnl0ZSBwZXIgY29kZXdvcmQsIHdpdGhvdXQgY29tcGFjdGlvbi5cbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpIC8qaW50Ki8gPSAwOyBpIDwgY291bnQ7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBkZWNvZGVkQnl0ZXMud3JpdGUoLyooYnl0ZSkqLyBieXRlQ29tcGFjdGVkQ29kZXdvcmRzW2ldKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuQllURV9DT01QQUNUSU9OX01PREVfTEFUQ0hfNjpcbiAgICAgICAgICAgICAgICAvLyBUb3RhbCBudW1iZXIgb2YgQnl0ZSBDb21wYWN0aW9uIGNoYXJhY3RlcnMgdG8gYmUgZW5jb2RlZFxuICAgICAgICAgICAgICAgIC8vIGlzIGFuIGludGVnZXIgbXVsdGlwbGUgb2YgNlxuICAgICAgICAgICAgICAgIHdoaWxlIChjb2RlSW5kZXggPCBjb2Rld29yZHNbMF0gJiYgIWVuZCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgY29kZSA9IGNvZGV3b3Jkc1tjb2RlSW5kZXgrK107XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb2RlIDwgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5URVhUX0NPTVBBQ1RJT05fTU9ERV9MQVRDSCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY291bnQrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJhc2UgOTAwXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IDkwMCAqIHZhbHVlICsgY29kZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoY29kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5URVhUX0NPTVBBQ1RJT05fTU9ERV9MQVRDSDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuQllURV9DT01QQUNUSU9OX01PREVfTEFUQ0g6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLk5VTUVSSUNfQ09NUEFDVElPTl9NT0RFX0xBVENIOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5CWVRFX0NPTVBBQ1RJT05fTU9ERV9MQVRDSF82OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5CRUdJTl9NQUNST19QREY0MTdfQ09OVFJPTF9CTE9DSzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuQkVHSU5fTUFDUk9fUERGNDE3X09QVElPTkFMX0ZJRUxEOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5NQUNST19QREY0MTdfVEVSTUlOQVRPUjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZUluZGV4LS07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICgoY291bnQgJSA1ID09PSAwKSAmJiAoY291bnQgPiAwKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVjb2RlIGV2ZXJ5IDUgY29kZXdvcmRzXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IHRvIEJhc2UgMjU2XG4gICAgICAgICAgICAgICAgICAgICAgICAvKiBAbm90ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICogSmF2YVNjcmlwdCBzdG9yZXMgbnVtYmVycyBhcyA2NCBiaXRzIGZsb2F0aW5nIHBvaW50IG51bWJlcnMsIGJ1dCBhbGwgYml0d2lzZSBvcGVyYXRpb25zIGFyZSBwZXJmb3JtZWQgb24gMzIgYml0cyBiaW5hcnkgbnVtYmVycy5cbiAgICAgICAgICAgICAgICAgICAgICAgICAqIFNvIHRoZSBuZXh0IGJpdHdpc2Ugb3BlcmF0aW9uIGNvdWxkIG5vdCBiZSBkb25lIHdpdGggc2ltcGxlIG51bWJlcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqIC8qaW50Ki8gPSAwOyBqIDwgNjsgKytqKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlZEJ5dGVzLndyaXRlKC8qKGJ5dGUpKi8gTnVtYmVyKGNyZWF0ZUJpZ0ludCh2YWx1ZSkgPj4gY3JlYXRlQmlnSW50KDggKiAoNSAtIGopKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgY291bnQgPSAwO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nRW5jb2RpbmdfMS5kZWZhdWx0LmRlY29kZShkZWNvZGVkQnl0ZXMudG9CeXRlQXJyYXkoKSwgZW5jb2RpbmcpKTtcbiAgICAgICAgcmV0dXJuIGNvZGVJbmRleDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIE51bWVyaWMgQ29tcGFjdGlvbiBtb2RlIChzZWUgNS40LjQpIHBlcm1pdHMgZWZmaWNpZW50IGVuY29kaW5nIG9mIG51bWVyaWMgZGF0YSBzdHJpbmdzLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvZGV3b3JkcyBUaGUgYXJyYXkgb2YgY29kZXdvcmRzIChkYXRhICsgZXJyb3IpXG4gICAgICogQHBhcmFtIGNvZGVJbmRleCBUaGUgY3VycmVudCBpbmRleCBpbnRvIHRoZSBjb2Rld29yZCBhcnJheS5cbiAgICAgKiBAcGFyYW0gcmVzdWx0ICAgIFRoZSBkZWNvZGVkIGRhdGEgaXMgYXBwZW5kZWQgdG8gdGhlIHJlc3VsdC5cbiAgICAgKiBAcmV0dXJuIFRoZSBuZXh0IGluZGV4IGludG8gdGhlIGNvZGV3b3JkIGFycmF5LlxuICAgICAqXG4gICAgICogQHRocm93cyBGb3JtYXRFeGNlcHRpb25cbiAgICAgKi9cbiAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLm51bWVyaWNDb21wYWN0aW9uID0gZnVuY3Rpb24gKGNvZGV3b3JkcywgY29kZUluZGV4IC8qaW50Ki8sIHJlc3VsdCkge1xuICAgICAgICB2YXIgY291bnQgPSAwO1xuICAgICAgICB2YXIgZW5kID0gZmFsc2U7XG4gICAgICAgIHZhciBudW1lcmljQ29kZXdvcmRzID0gbmV3IEludDMyQXJyYXkoRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5NQVhfTlVNRVJJQ19DT0RFV09SRFMpO1xuICAgICAgICB3aGlsZSAoY29kZUluZGV4IDwgY29kZXdvcmRzWzBdICYmICFlbmQpIHtcbiAgICAgICAgICAgIHZhciBjb2RlID0gY29kZXdvcmRzW2NvZGVJbmRleCsrXTtcbiAgICAgICAgICAgIGlmIChjb2RlSW5kZXggPT09IGNvZGV3b3Jkc1swXSkge1xuICAgICAgICAgICAgICAgIGVuZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY29kZSA8IERlY29kZWRCaXRTdHJlYW1QYXJzZXIuVEVYVF9DT01QQUNUSU9OX01PREVfTEFUQ0gpIHtcbiAgICAgICAgICAgICAgICBudW1lcmljQ29kZXdvcmRzW2NvdW50XSA9IGNvZGU7XG4gICAgICAgICAgICAgICAgY291bnQrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoY29kZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuVEVYVF9DT01QQUNUSU9OX01PREVfTEFUQ0g6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5CWVRFX0NPTVBBQ1RJT05fTU9ERV9MQVRDSDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLkJZVEVfQ09NUEFDVElPTl9NT0RFX0xBVENIXzY6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5CRUdJTl9NQUNST19QREY0MTdfQ09OVFJPTF9CTE9DSzpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLkJFR0lOX01BQ1JPX1BERjQxN19PUFRJT05BTF9GSUVMRDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLk1BQ1JPX1BERjQxN19URVJNSU5BVE9SOlxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZUluZGV4LS07XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKChjb3VudCAlIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuTUFYX05VTUVSSUNfQ09ERVdPUkRTID09PSAwIHx8IGNvZGUgPT09IERlY29kZWRCaXRTdHJlYW1QYXJzZXIuTlVNRVJJQ19DT01QQUNUSU9OX01PREVfTEFUQ0ggfHwgZW5kKSAmJiBjb3VudCA+IDApIHtcbiAgICAgICAgICAgICAgICAvLyBSZS1pbnZva2luZyBOdW1lcmljIENvbXBhY3Rpb24gbW9kZSAoYnkgdXNpbmcgY29kZXdvcmQgOTAyXG4gICAgICAgICAgICAgICAgLy8gd2hpbGUgaW4gTnVtZXJpYyBDb21wYWN0aW9uIG1vZGUpIHNlcnZlcyAgdG8gdGVybWluYXRlIHRoZVxuICAgICAgICAgICAgICAgIC8vIGN1cnJlbnQgTnVtZXJpYyBDb21wYWN0aW9uIG1vZGUgZ3JvdXBpbmcgYXMgZGVzY3JpYmVkIGluIDUuNC40LjIsXG4gICAgICAgICAgICAgICAgLy8gYW5kIHRoZW4gdG8gc3RhcnQgYSBuZXcgb25lIGdyb3VwaW5nLlxuICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5kZWNvZGVCYXNlOTAwdG9CYXNlMTAobnVtZXJpY0NvZGV3b3JkcywgY291bnQpKTtcbiAgICAgICAgICAgICAgICBjb3VudCA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvZGVJbmRleDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIENvbnZlcnQgYSBsaXN0IG9mIE51bWVyaWMgQ29tcGFjdGVkIGNvZGV3b3JkcyBmcm9tIEJhc2UgOTAwIHRvIEJhc2UgMTAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29kZXdvcmRzIFRoZSBhcnJheSBvZiBjb2Rld29yZHNcbiAgICAgKiBAcGFyYW0gY291bnQgICAgIFRoZSBudW1iZXIgb2YgY29kZXdvcmRzXG4gICAgICogQHJldHVybiBUaGUgZGVjb2RlZCBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBOdW1lcmljIGRhdGEuXG4gICAgICpcbiAgICAgKiBFWEFNUExFXG4gICAgICogRW5jb2RlIHRoZSBmaWZ0ZWVuIGRpZ2l0IG51bWVyaWMgc3RyaW5nIDAwMDIxMzI5ODE3NDAwMFxuICAgICAqIFByZWZpeCB0aGUgbnVtZXJpYyBzdHJpbmcgd2l0aCBhIDEgYW5kIHNldCB0aGUgaW5pdGlhbCB2YWx1ZSBvZlxuICAgICAqIHQgPSAxIDAwMCAyMTMgMjk4IDE3NCAwMDBcbiAgICAgKiBDYWxjdWxhdGUgY29kZXdvcmQgMFxuICAgICAqIGQwID0gMSAwMDAgMjEzIDI5OCAxNzQgMDAwIG1vZCA5MDAgPSAyMDBcbiAgICAgKlxuICAgICAqIHQgPSAxIDAwMCAyMTMgMjk4IDE3NCAwMDAgZGl2IDkwMCA9IDEgMTExIDM0OCAxMDkgMDgyXG4gICAgICogQ2FsY3VsYXRlIGNvZGV3b3JkIDFcbiAgICAgKiBkMSA9IDEgMTExIDM0OCAxMDkgMDgyIG1vZCA5MDAgPSAyODJcbiAgICAgKlxuICAgICAqIHQgPSAxIDExMSAzNDggMTA5IDA4MiBkaXYgOTAwID0gMSAyMzQgODMxIDIzMlxuICAgICAqIENhbGN1bGF0ZSBjb2Rld29yZCAyXG4gICAgICogZDIgPSAxIDIzNCA4MzEgMjMyIG1vZCA5MDAgPSA2MzJcbiAgICAgKlxuICAgICAqIHQgPSAxIDIzNCA4MzEgMjMyIGRpdiA5MDAgPSAxIDM3MiAwMzRcbiAgICAgKiBDYWxjdWxhdGUgY29kZXdvcmQgM1xuICAgICAqIGQzID0gMSAzNzIgMDM0IG1vZCA5MDAgPSA0MzRcbiAgICAgKlxuICAgICAqIHQgPSAxIDM3MiAwMzQgZGl2IDkwMCA9IDEgNTI0XG4gICAgICogQ2FsY3VsYXRlIGNvZGV3b3JkIDRcbiAgICAgKiBkNCA9IDEgNTI0IG1vZCA5MDAgPSA2MjRcbiAgICAgKlxuICAgICAqIHQgPSAxIDUyNCBkaXYgOTAwID0gMVxuICAgICAqIENhbGN1bGF0ZSBjb2Rld29yZCA1XG4gICAgICogZDUgPSAxIG1vZCA5MDAgPSAxXG4gICAgICogdCA9IDEgZGl2IDkwMCA9IDBcbiAgICAgKiBDb2Rld29yZCBzZXF1ZW5jZSBpczogMSwgNjI0LCA0MzQsIDYzMiwgMjgyLCAyMDBcbiAgICAgKlxuICAgICAqIERlY29kZSB0aGUgYWJvdmUgY29kZXdvcmRzIGludm9sdmVzXG4gICAgICogICAxIHggOTAwIHBvd2VyIG9mIDUgKyA2MjQgeCA5MDAgcG93ZXIgb2YgNCArIDQzNCB4IDkwMCBwb3dlciBvZiAzICtcbiAgICAgKiA2MzIgeCA5MDAgcG93ZXIgb2YgMiArIDI4MiB4IDkwMCBwb3dlciBvZiAxICsgMjAwIHggOTAwIHBvd2VyIG9mIDAgPSAxMDAwMjEzMjk4MTc0MDAwXG4gICAgICpcbiAgICAgKiBSZW1vdmUgbGVhZGluZyAxID0+ICBSZXN1bHQgaXMgMDAwMjEzMjk4MTc0MDAwXG4gICAgICpcbiAgICAgKiBAdGhyb3dzIEZvcm1hdEV4Y2VwdGlvblxuICAgICAqL1xuICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuZGVjb2RlQmFzZTkwMHRvQmFzZTEwID0gZnVuY3Rpb24gKGNvZGV3b3JkcywgY291bnQpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IGNyZWF0ZUJpZ0ludCgwKTtcbiAgICAgICAgZm9yICh2YXIgaSAvKmludCovID0gMDsgaSA8IGNvdW50OyBpKyspIHtcbiAgICAgICAgICAgIHJlc3VsdCArPSBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLkVYUDkwMFtjb3VudCAtIGkgLSAxXSAqIGNyZWF0ZUJpZ0ludChjb2Rld29yZHNbaV0pO1xuICAgICAgICB9XG4gICAgICAgIHZhciByZXN1bHRTdHJpbmcgPSByZXN1bHQudG9TdHJpbmcoKTtcbiAgICAgICAgaWYgKHJlc3VsdFN0cmluZy5jaGFyQXQoMCkgIT09ICcxJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0U3RyaW5nLnN1YnN0cmluZygxKTtcbiAgICB9O1xuICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuVEVYVF9DT01QQUNUSU9OX01PREVfTEFUQ0ggPSA5MDA7XG4gICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5CWVRFX0NPTVBBQ1RJT05fTU9ERV9MQVRDSCA9IDkwMTtcbiAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLk5VTUVSSUNfQ09NUEFDVElPTl9NT0RFX0xBVENIID0gOTAyO1xuICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuQllURV9DT01QQUNUSU9OX01PREVfTEFUQ0hfNiA9IDkyNDtcbiAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLkVDSV9VU0VSX0RFRklORUQgPSA5MjU7XG4gICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5FQ0lfR0VORVJBTF9QVVJQT1NFID0gOTI2O1xuICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuRUNJX0NIQVJTRVQgPSA5Mjc7XG4gICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5CRUdJTl9NQUNST19QREY0MTdfQ09OVFJPTF9CTE9DSyA9IDkyODtcbiAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLkJFR0lOX01BQ1JPX1BERjQxN19PUFRJT05BTF9GSUVMRCA9IDkyMztcbiAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLk1BQ1JPX1BERjQxN19URVJNSU5BVE9SID0gOTIyO1xuICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuTU9ERV9TSElGVF9UT19CWVRFX0NPTVBBQ1RJT05fTU9ERSA9IDkxMztcbiAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLk1BWF9OVU1FUklDX0NPREVXT1JEUyA9IDE1O1xuICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuTUFDUk9fUERGNDE3X09QVElPTkFMX0ZJRUxEX0ZJTEVfTkFNRSA9IDA7XG4gICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5NQUNST19QREY0MTdfT1BUSU9OQUxfRklFTERfU0VHTUVOVF9DT1VOVCA9IDE7XG4gICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5NQUNST19QREY0MTdfT1BUSU9OQUxfRklFTERfVElNRV9TVEFNUCA9IDI7XG4gICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5NQUNST19QREY0MTdfT1BUSU9OQUxfRklFTERfU0VOREVSID0gMztcbiAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLk1BQ1JPX1BERjQxN19PUFRJT05BTF9GSUVMRF9BRERSRVNTRUUgPSA0O1xuICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuTUFDUk9fUERGNDE3X09QVElPTkFMX0ZJRUxEX0ZJTEVfU0laRSA9IDU7XG4gICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5NQUNST19QREY0MTdfT1BUSU9OQUxfRklFTERfQ0hFQ0tTVU0gPSA2O1xuICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuUEwgPSAyNTtcbiAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLkxMID0gMjc7XG4gICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5BUyA9IDI3O1xuICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuTUwgPSAyODtcbiAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLkFMID0gMjg7XG4gICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5QUyA9IDI5O1xuICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuUEFMID0gMjk7XG4gICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5QVU5DVF9DSEFSUyA9ICc7PD5AW1xcXFxdX2B+IVxcclxcdCw6XFxuLS4kL1wifCooKT97fVxcJyc7XG4gICAgRGVjb2RlZEJpdFN0cmVhbVBhcnNlci5NSVhFRF9DSEFSUyA9ICcwMTIzNDU2Nzg5JlxcclxcdCw6Iy0uJC8rJSo9Xic7XG4gICAgLyoqXG4gICAgICogVGFibGUgY29udGFpbmluZyB2YWx1ZXMgZm9yIHRoZSBleHBvbmVudCBvZiA5MDAuXG4gICAgICogVGhpcyBpcyB1c2VkIGluIHRoZSBudW1lcmljIGNvbXBhY3Rpb24gZGVjb2RlIGFsZ29yaXRobS5cbiAgICAgKi9cbiAgICBEZWNvZGVkQml0U3RyZWFtUGFyc2VyLkVYUDkwMCA9IGdldEJpZ0ludENvbnN0cnVjdG9yKCkgPyBnZXRFWFA5MDAoKSA6IFtdO1xuICAgIERlY29kZWRCaXRTdHJlYW1QYXJzZXIuTlVNQkVSX09GX1NFUVVFTkNFX0NPREVXT1JEUyA9IDI7XG4gICAgcmV0dXJuIERlY29kZWRCaXRTdHJlYW1QYXJzZXI7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gRGVjb2RlZEJpdFN0cmVhbVBhcnNlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURlY29kZWRCaXRTdHJlYW1QYXJzZXIuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuKiBDb3B5cmlnaHQgMjAxMyBaWGluZyBhdXRob3JzXG4qXG4qIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4qIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4qXG4qICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4qXG4qIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG52YXIgX192YWx1ZXMgPSAodGhpcyAmJiB0aGlzLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7XG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vLyBwYWNrYWdlIGNvbS5nb29nbGUuenhpbmcucGRmNDE3LmRlY29kZXI7XG4vLyBpbXBvcnQgY29tLmdvb2dsZS56eGluZy5DaGVja3N1bUV4Y2VwdGlvbjtcbnZhciBDaGVja3N1bUV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4uLy4uL0NoZWNrc3VtRXhjZXB0aW9uXCIpO1xuLy8gaW1wb3J0IGNvbS5nb29nbGUuenhpbmcuRm9ybWF0RXhjZXB0aW9uO1xudmFyIEZvcm1hdEV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4uLy4uL0Zvcm1hdEV4Y2VwdGlvblwiKTtcbi8vIGltcG9ydCBjb20uZ29vZ2xlLnp4aW5nLk5vdEZvdW5kRXhjZXB0aW9uO1xudmFyIE5vdEZvdW5kRXhjZXB0aW9uXzEgPSByZXF1aXJlKFwiLi4vLi4vTm90Rm91bmRFeGNlcHRpb25cIik7XG4vLyBpbXBvcnQgY29tLmdvb2dsZS56eGluZy5jb21tb24uZGV0ZWN0b3IuTWF0aFV0aWxzO1xudmFyIE1hdGhVdGlsc18xID0gcmVxdWlyZShcIi4uLy4uL2NvbW1vbi9kZXRlY3Rvci9NYXRoVXRpbHNcIik7XG4vLyBpbXBvcnQgY29tLmdvb2dsZS56eGluZy5wZGY0MTcuUERGNDE3Q29tbW9uO1xudmFyIFBERjQxN0NvbW1vbl8xID0gcmVxdWlyZShcIi4uL1BERjQxN0NvbW1vblwiKTtcbi8vIGltcG9ydCBjb20uZ29vZ2xlLnp4aW5nLnBkZjQxNy5kZWNvZGVyLmVjLkVycm9yQ29ycmVjdGlvbjtcbnZhciBFcnJvckNvcnJlY3Rpb25fMSA9IHJlcXVpcmUoXCIuL2VjL0Vycm9yQ29ycmVjdGlvblwiKTtcbi8vIGxvY2FsXG52YXIgQm91bmRpbmdCb3hfMSA9IHJlcXVpcmUoXCIuL0JvdW5kaW5nQm94XCIpO1xudmFyIERldGVjdGlvblJlc3VsdFJvd0luZGljYXRvckNvbHVtbl8xID0gcmVxdWlyZShcIi4vRGV0ZWN0aW9uUmVzdWx0Um93SW5kaWNhdG9yQ29sdW1uXCIpO1xudmFyIERldGVjdGlvblJlc3VsdF8xID0gcmVxdWlyZShcIi4vRGV0ZWN0aW9uUmVzdWx0XCIpO1xudmFyIERldGVjdGlvblJlc3VsdENvbHVtbl8xID0gcmVxdWlyZShcIi4vRGV0ZWN0aW9uUmVzdWx0Q29sdW1uXCIpO1xudmFyIENvZGV3b3JkXzEgPSByZXF1aXJlKFwiLi9Db2Rld29yZFwiKTtcbnZhciBCYXJjb2RlVmFsdWVfMSA9IHJlcXVpcmUoXCIuL0JhcmNvZGVWYWx1ZVwiKTtcbnZhciBQREY0MTdDb2Rld29yZERlY29kZXJfMSA9IHJlcXVpcmUoXCIuL1BERjQxN0NvZGV3b3JkRGVjb2RlclwiKTtcbnZhciBEZWNvZGVkQml0U3RyZWFtUGFyc2VyXzEgPSByZXF1aXJlKFwiLi9EZWNvZGVkQml0U3RyZWFtUGFyc2VyXCIpO1xuLy8gdXRpbHNcbnZhciBGb3JtYXR0ZXJfMSA9IHJlcXVpcmUoXCIuLi8uLi91dGlsL0Zvcm1hdHRlclwiKTtcbi8vIGltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0O1xuLy8gaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uO1xuLy8gaW1wb3J0IGphdmEudXRpbC5Gb3JtYXR0ZXI7XG4vLyBpbXBvcnQgamF2YS51dGlsLkxpc3Q7XG4vKipcbiAqIEBhdXRob3IgR3VlbnRoZXIgR3JhdVxuICovXG52YXIgUERGNDE3U2Nhbm5pbmdEZWNvZGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFBERjQxN1NjYW5uaW5nRGVjb2RlcigpIHtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQFRPRE8gZG9uJ3QgcGFzcyBpbiBtaW5Db2Rld29yZFdpZHRoIGFuZCBtYXhDb2Rld29yZFdpZHRoLCBwYXNzIGluIGJhcmNvZGUgY29sdW1ucyBmb3Igc3RhcnQgYW5kIHN0b3AgcGF0dGVyblxuICAgICAqXG4gICAgICogY29sdW1ucy4gVGhhdCB3YXkgd2lkdGggY2FuIGJlIGRlZHVjdGVkIGZyb20gdGhlIHBhdHRlcm4gY29sdW1uLlxuICAgICAqIFRoaXMgYXBwcm9hY2ggYWxzbyBhbGxvd3MgdG8gZGV0ZWN0IG1vcmUgZGV0YWlscyBhYm91dCB0aGUgYmFyY29kZSwgZS5nLiBpZiBhIGJhciB0eXBlICh3aGl0ZSBvciBibGFjaykgaXMgd2lkZXJcbiAgICAgKiB0aGFuIGl0IHNob3VsZCBiZS4gVGhpcyBjYW4gaGFwcGVuIGlmIHRoZSBzY2FubmVyIHVzZWQgYSBiYWQgYmxhY2twb2ludC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBCaXRNYXRyaXhcbiAgICAgKiBAcGFyYW0gaW1hZ2VcbiAgICAgKiBAcGFyYW0gUmVzdWx0UG9pbnRcbiAgICAgKiBAcGFyYW0gaW1hZ2VUb3BMZWZ0XG4gICAgICogQHBhcmFtIFJlc3VsdFBvaW50XG4gICAgICogQHBhcmFtIGltYWdlQm90dG9tTGVmdFxuICAgICAqIEBwYXJhbSBSZXN1bHRQb2ludFxuICAgICAqIEBwYXJhbSBpbWFnZVRvcFJpZ2h0XG4gICAgICogQHBhcmFtIFJlc3VsdFBvaW50XG4gICAgICogQHBhcmFtIGltYWdlQm90dG9tUmlnaHRcbiAgICAgKiBAcGFyYW0gaW50XG4gICAgICogQHBhcmFtIG1pbkNvZGV3b3JkV2lkdGhcbiAgICAgKiBAcGFyYW0gaW50XG4gICAgICogQHBhcmFtIG1heENvZGV3b3JkV2lkdGhcbiAgICAgKlxuICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb25cbiAgICAgKiBAdGhyb3dzIEZvcm1hdEV4Y2VwdGlvblxuICAgICAqIEB0aHJvd3MgQ2hlY2tzdW1FeGNlcHRpb25cbiAgICAgKi9cbiAgICBQREY0MTdTY2FubmluZ0RlY29kZXIuZGVjb2RlID0gZnVuY3Rpb24gKGltYWdlLCBpbWFnZVRvcExlZnQsIGltYWdlQm90dG9tTGVmdCwgaW1hZ2VUb3BSaWdodCwgaW1hZ2VCb3R0b21SaWdodCwgbWluQ29kZXdvcmRXaWR0aCwgbWF4Q29kZXdvcmRXaWR0aCkge1xuICAgICAgICB2YXIgYm91bmRpbmdCb3ggPSBuZXcgQm91bmRpbmdCb3hfMS5kZWZhdWx0KGltYWdlLCBpbWFnZVRvcExlZnQsIGltYWdlQm90dG9tTGVmdCwgaW1hZ2VUb3BSaWdodCwgaW1hZ2VCb3R0b21SaWdodCk7XG4gICAgICAgIHZhciBsZWZ0Um93SW5kaWNhdG9yQ29sdW1uID0gbnVsbDtcbiAgICAgICAgdmFyIHJpZ2h0Um93SW5kaWNhdG9yQ29sdW1uID0gbnVsbDtcbiAgICAgICAgdmFyIGRldGVjdGlvblJlc3VsdDtcbiAgICAgICAgZm9yICh2YXIgZmlyc3RQYXNzIC8qYm9vbGVhbiovID0gdHJ1ZTs7IGZpcnN0UGFzcyA9IGZhbHNlKSB7XG4gICAgICAgICAgICBpZiAoaW1hZ2VUb3BMZWZ0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBsZWZ0Um93SW5kaWNhdG9yQ29sdW1uID0gUERGNDE3U2Nhbm5pbmdEZWNvZGVyLmdldFJvd0luZGljYXRvckNvbHVtbihpbWFnZSwgYm91bmRpbmdCb3gsIGltYWdlVG9wTGVmdCwgdHJ1ZSwgbWluQ29kZXdvcmRXaWR0aCwgbWF4Q29kZXdvcmRXaWR0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaW1hZ2VUb3BSaWdodCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmlnaHRSb3dJbmRpY2F0b3JDb2x1bW4gPSBQREY0MTdTY2FubmluZ0RlY29kZXIuZ2V0Um93SW5kaWNhdG9yQ29sdW1uKGltYWdlLCBib3VuZGluZ0JveCwgaW1hZ2VUb3BSaWdodCwgZmFsc2UsIG1pbkNvZGV3b3JkV2lkdGgsIG1heENvZGV3b3JkV2lkdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGV0ZWN0aW9uUmVzdWx0ID0gUERGNDE3U2Nhbm5pbmdEZWNvZGVyLm1lcmdlKGxlZnRSb3dJbmRpY2F0b3JDb2x1bW4sIHJpZ2h0Um93SW5kaWNhdG9yQ29sdW1uKTtcbiAgICAgICAgICAgIGlmIChkZXRlY3Rpb25SZXN1bHQgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRocm93IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdC5nZXROb3RGb3VuZEluc3RhbmNlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgcmVzdWx0Qm94ID0gZGV0ZWN0aW9uUmVzdWx0LmdldEJvdW5kaW5nQm94KCk7XG4gICAgICAgICAgICBpZiAoZmlyc3RQYXNzICYmIHJlc3VsdEJveCAhPSBudWxsICYmXG4gICAgICAgICAgICAgICAgKHJlc3VsdEJveC5nZXRNaW5ZKCkgPCBib3VuZGluZ0JveC5nZXRNaW5ZKCkgfHwgcmVzdWx0Qm94LmdldE1heFkoKSA+IGJvdW5kaW5nQm94LmdldE1heFkoKSkpIHtcbiAgICAgICAgICAgICAgICBib3VuZGluZ0JveCA9IHJlc3VsdEJveDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGRldGVjdGlvblJlc3VsdC5zZXRCb3VuZGluZ0JveChib3VuZGluZ0JveCk7XG4gICAgICAgIHZhciBtYXhCYXJjb2RlQ29sdW1uID0gZGV0ZWN0aW9uUmVzdWx0LmdldEJhcmNvZGVDb2x1bW5Db3VudCgpICsgMTtcbiAgICAgICAgZGV0ZWN0aW9uUmVzdWx0LnNldERldGVjdGlvblJlc3VsdENvbHVtbigwLCBsZWZ0Um93SW5kaWNhdG9yQ29sdW1uKTtcbiAgICAgICAgZGV0ZWN0aW9uUmVzdWx0LnNldERldGVjdGlvblJlc3VsdENvbHVtbihtYXhCYXJjb2RlQ29sdW1uLCByaWdodFJvd0luZGljYXRvckNvbHVtbik7XG4gICAgICAgIHZhciBsZWZ0VG9SaWdodCA9IGxlZnRSb3dJbmRpY2F0b3JDb2x1bW4gIT0gbnVsbDtcbiAgICAgICAgZm9yICh2YXIgYmFyY29kZUNvbHVtbkNvdW50IC8qaW50Ki8gPSAxOyBiYXJjb2RlQ29sdW1uQ291bnQgPD0gbWF4QmFyY29kZUNvbHVtbjsgYmFyY29kZUNvbHVtbkNvdW50KyspIHtcbiAgICAgICAgICAgIHZhciBiYXJjb2RlQ29sdW1uID0gbGVmdFRvUmlnaHQgPyBiYXJjb2RlQ29sdW1uQ291bnQgOiBtYXhCYXJjb2RlQ29sdW1uIC0gYmFyY29kZUNvbHVtbkNvdW50O1xuICAgICAgICAgICAgaWYgKGRldGVjdGlvblJlc3VsdC5nZXREZXRlY3Rpb25SZXN1bHRDb2x1bW4oYmFyY29kZUNvbHVtbikgIT09IC8qIG51bGwgKi8gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgLy8gVGhpcyB3aWxsIGJlIHRoZSBjYXNlIGZvciB0aGUgb3Bwb3NpdGUgcm93IGluZGljYXRvciBjb2x1bW4sIHdoaWNoIGRvZXNuJ3QgbmVlZCB0byBiZSBkZWNvZGVkIGFnYWluLlxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGRldGVjdGlvblJlc3VsdENvbHVtbiA9IHZvaWQgMDtcbiAgICAgICAgICAgIGlmIChiYXJjb2RlQ29sdW1uID09PSAwIHx8IGJhcmNvZGVDb2x1bW4gPT09IG1heEJhcmNvZGVDb2x1bW4pIHtcbiAgICAgICAgICAgICAgICBkZXRlY3Rpb25SZXN1bHRDb2x1bW4gPSBuZXcgRGV0ZWN0aW9uUmVzdWx0Um93SW5kaWNhdG9yQ29sdW1uXzEuZGVmYXVsdChib3VuZGluZ0JveCwgYmFyY29kZUNvbHVtbiA9PT0gMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBkZXRlY3Rpb25SZXN1bHRDb2x1bW4gPSBuZXcgRGV0ZWN0aW9uUmVzdWx0Q29sdW1uXzEuZGVmYXVsdChib3VuZGluZ0JveCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZXRlY3Rpb25SZXN1bHQuc2V0RGV0ZWN0aW9uUmVzdWx0Q29sdW1uKGJhcmNvZGVDb2x1bW4sIGRldGVjdGlvblJlc3VsdENvbHVtbik7XG4gICAgICAgICAgICB2YXIgc3RhcnRDb2x1bW4gPSAtMTtcbiAgICAgICAgICAgIHZhciBwcmV2aW91c1N0YXJ0Q29sdW1uID0gc3RhcnRDb2x1bW47XG4gICAgICAgICAgICAvLyBUT0RPIHN0YXJ0IGF0IGEgcm93IGZvciB3aGljaCB3ZSBrbm93IHRoZSBzdGFydCBwb3NpdGlvbiwgdGhlbiBkZXRlY3QgdXB3YXJkcyBhbmQgZG93bndhcmRzIGZyb20gdGhlcmUuXG4gICAgICAgICAgICBmb3IgKHZhciBpbWFnZVJvdyAvKmludCovID0gYm91bmRpbmdCb3guZ2V0TWluWSgpOyBpbWFnZVJvdyA8PSBib3VuZGluZ0JveC5nZXRNYXhZKCk7IGltYWdlUm93KyspIHtcbiAgICAgICAgICAgICAgICBzdGFydENvbHVtbiA9IFBERjQxN1NjYW5uaW5nRGVjb2Rlci5nZXRTdGFydENvbHVtbihkZXRlY3Rpb25SZXN1bHQsIGJhcmNvZGVDb2x1bW4sIGltYWdlUm93LCBsZWZ0VG9SaWdodCk7XG4gICAgICAgICAgICAgICAgaWYgKHN0YXJ0Q29sdW1uIDwgMCB8fCBzdGFydENvbHVtbiA+IGJvdW5kaW5nQm94LmdldE1heFgoKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNTdGFydENvbHVtbiA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0Q29sdW1uID0gcHJldmlvdXNTdGFydENvbHVtbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIGNvZGV3b3JkID0gUERGNDE3U2Nhbm5pbmdEZWNvZGVyLmRldGVjdENvZGV3b3JkKGltYWdlLCBib3VuZGluZ0JveC5nZXRNaW5YKCksIGJvdW5kaW5nQm94LmdldE1heFgoKSwgbGVmdFRvUmlnaHQsIHN0YXJ0Q29sdW1uLCBpbWFnZVJvdywgbWluQ29kZXdvcmRXaWR0aCwgbWF4Q29kZXdvcmRXaWR0aCk7XG4gICAgICAgICAgICAgICAgaWYgKGNvZGV3b3JkICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgZGV0ZWN0aW9uUmVzdWx0Q29sdW1uLnNldENvZGV3b3JkKGltYWdlUm93LCBjb2Rld29yZCk7XG4gICAgICAgICAgICAgICAgICAgIHByZXZpb3VzU3RhcnRDb2x1bW4gPSBzdGFydENvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgbWluQ29kZXdvcmRXaWR0aCA9IE1hdGgubWluKG1pbkNvZGV3b3JkV2lkdGgsIGNvZGV3b3JkLmdldFdpZHRoKCkpO1xuICAgICAgICAgICAgICAgICAgICBtYXhDb2Rld29yZFdpZHRoID0gTWF0aC5tYXgobWF4Q29kZXdvcmRXaWR0aCwgY29kZXdvcmQuZ2V0V2lkdGgoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBQREY0MTdTY2FubmluZ0RlY29kZXIuY3JlYXRlRGVjb2RlclJlc3VsdChkZXRlY3Rpb25SZXN1bHQpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbGVmdFJvd0luZGljYXRvckNvbHVtblxuICAgICAqIEBwYXJhbSByaWdodFJvd0luZGljYXRvckNvbHVtblxuICAgICAqXG4gICAgICogQHRocm93cyBOb3RGb3VuZEV4Y2VwdGlvblxuICAgICAqL1xuICAgIFBERjQxN1NjYW5uaW5nRGVjb2Rlci5tZXJnZSA9IGZ1bmN0aW9uIChsZWZ0Um93SW5kaWNhdG9yQ29sdW1uLCByaWdodFJvd0luZGljYXRvckNvbHVtbikge1xuICAgICAgICBpZiAobGVmdFJvd0luZGljYXRvckNvbHVtbiA9PSBudWxsICYmIHJpZ2h0Um93SW5kaWNhdG9yQ29sdW1uID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHZhciBiYXJjb2RlTWV0YWRhdGEgPSBQREY0MTdTY2FubmluZ0RlY29kZXIuZ2V0QmFyY29kZU1ldGFkYXRhKGxlZnRSb3dJbmRpY2F0b3JDb2x1bW4sIHJpZ2h0Um93SW5kaWNhdG9yQ29sdW1uKTtcbiAgICAgICAgaWYgKGJhcmNvZGVNZXRhZGF0YSA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYm91bmRpbmdCb3ggPSBCb3VuZGluZ0JveF8xLmRlZmF1bHQubWVyZ2UoUERGNDE3U2Nhbm5pbmdEZWNvZGVyLmFkanVzdEJvdW5kaW5nQm94KGxlZnRSb3dJbmRpY2F0b3JDb2x1bW4pLCBQREY0MTdTY2FubmluZ0RlY29kZXIuYWRqdXN0Qm91bmRpbmdCb3gocmlnaHRSb3dJbmRpY2F0b3JDb2x1bW4pKTtcbiAgICAgICAgcmV0dXJuIG5ldyBEZXRlY3Rpb25SZXN1bHRfMS5kZWZhdWx0KGJhcmNvZGVNZXRhZGF0YSwgYm91bmRpbmdCb3gpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcm93SW5kaWNhdG9yQ29sdW1uXG4gICAgICpcbiAgICAgKiBAdGhyb3dzIE5vdEZvdW5kRXhjZXB0aW9uXG4gICAgICovXG4gICAgUERGNDE3U2Nhbm5pbmdEZWNvZGVyLmFkanVzdEJvdW5kaW5nQm94ID0gZnVuY3Rpb24gKHJvd0luZGljYXRvckNvbHVtbikge1xuICAgICAgICB2YXIgZV8xLCBfYTtcbiAgICAgICAgaWYgKHJvd0luZGljYXRvckNvbHVtbiA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcm93SGVpZ2h0cyA9IHJvd0luZGljYXRvckNvbHVtbi5nZXRSb3dIZWlnaHRzKCk7XG4gICAgICAgIGlmIChyb3dIZWlnaHRzID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHZhciBtYXhSb3dIZWlnaHQgPSBQREY0MTdTY2FubmluZ0RlY29kZXIuZ2V0TWF4KHJvd0hlaWdodHMpO1xuICAgICAgICB2YXIgbWlzc2luZ1N0YXJ0Um93cyA9IDA7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKHZhciByb3dIZWlnaHRzXzEgPSBfX3ZhbHVlcyhyb3dIZWlnaHRzKSwgcm93SGVpZ2h0c18xXzEgPSByb3dIZWlnaHRzXzEubmV4dCgpOyAhcm93SGVpZ2h0c18xXzEuZG9uZTsgcm93SGVpZ2h0c18xXzEgPSByb3dIZWlnaHRzXzEubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJvd0hlaWdodCA9IHJvd0hlaWdodHNfMV8xLnZhbHVlIC8qaW50Ki87XG4gICAgICAgICAgICAgICAgbWlzc2luZ1N0YXJ0Um93cyArPSBtYXhSb3dIZWlnaHQgLSByb3dIZWlnaHQ7XG4gICAgICAgICAgICAgICAgaWYgKHJvd0hlaWdodCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAocm93SGVpZ2h0c18xXzEgJiYgIXJvd0hlaWdodHNfMV8xLmRvbmUgJiYgKF9hID0gcm93SGVpZ2h0c18xLnJldHVybikpIF9hLmNhbGwocm93SGVpZ2h0c18xKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgY29kZXdvcmRzID0gcm93SW5kaWNhdG9yQ29sdW1uLmdldENvZGV3b3JkcygpO1xuICAgICAgICBmb3IgKHZhciByb3cgLyppbnQqLyA9IDA7IG1pc3NpbmdTdGFydFJvd3MgPiAwICYmIGNvZGV3b3Jkc1tyb3ddID09IG51bGw7IHJvdysrKSB7XG4gICAgICAgICAgICBtaXNzaW5nU3RhcnRSb3dzLS07XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG1pc3NpbmdFbmRSb3dzID0gMDtcbiAgICAgICAgZm9yICh2YXIgcm93IC8qaW50Ki8gPSByb3dIZWlnaHRzLmxlbmd0aCAtIDE7IHJvdyA+PSAwOyByb3ctLSkge1xuICAgICAgICAgICAgbWlzc2luZ0VuZFJvd3MgKz0gbWF4Um93SGVpZ2h0IC0gcm93SGVpZ2h0c1tyb3ddO1xuICAgICAgICAgICAgaWYgKHJvd0hlaWdodHNbcm93XSA+IDApIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmb3IgKHZhciByb3cgLyppbnQqLyA9IGNvZGV3b3Jkcy5sZW5ndGggLSAxOyBtaXNzaW5nRW5kUm93cyA+IDAgJiYgY29kZXdvcmRzW3Jvd10gPT0gbnVsbDsgcm93LS0pIHtcbiAgICAgICAgICAgIG1pc3NpbmdFbmRSb3dzLS07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJvd0luZGljYXRvckNvbHVtbi5nZXRCb3VuZGluZ0JveCgpLmFkZE1pc3NpbmdSb3dzKG1pc3NpbmdTdGFydFJvd3MsIG1pc3NpbmdFbmRSb3dzLCByb3dJbmRpY2F0b3JDb2x1bW4uaXNMZWZ0KCkpO1xuICAgIH07XG4gICAgUERGNDE3U2Nhbm5pbmdEZWNvZGVyLmdldE1heCA9IGZ1bmN0aW9uICh2YWx1ZXMpIHtcbiAgICAgICAgdmFyIGVfMiwgX2E7XG4gICAgICAgIHZhciBtYXhWYWx1ZSA9IC0xO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yICh2YXIgdmFsdWVzXzEgPSBfX3ZhbHVlcyh2YWx1ZXMpLCB2YWx1ZXNfMV8xID0gdmFsdWVzXzEubmV4dCgpOyAhdmFsdWVzXzFfMS5kb25lOyB2YWx1ZXNfMV8xID0gdmFsdWVzXzEubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gdmFsdWVzXzFfMS52YWx1ZSAvKmludCovO1xuICAgICAgICAgICAgICAgIG1heFZhbHVlID0gTWF0aC5tYXgobWF4VmFsdWUsIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZV8yXzEpIHsgZV8yID0geyBlcnJvcjogZV8yXzEgfTsgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlc18xXzEgJiYgIXZhbHVlc18xXzEuZG9uZSAmJiAoX2EgPSB2YWx1ZXNfMS5yZXR1cm4pKSBfYS5jYWxsKHZhbHVlc18xKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8yKSB0aHJvdyBlXzIuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWF4VmFsdWU7XG4gICAgfTtcbiAgICBQREY0MTdTY2FubmluZ0RlY29kZXIuZ2V0QmFyY29kZU1ldGFkYXRhID0gZnVuY3Rpb24gKGxlZnRSb3dJbmRpY2F0b3JDb2x1bW4sIHJpZ2h0Um93SW5kaWNhdG9yQ29sdW1uKSB7XG4gICAgICAgIHZhciBsZWZ0QmFyY29kZU1ldGFkYXRhO1xuICAgICAgICBpZiAobGVmdFJvd0luZGljYXRvckNvbHVtbiA9PSBudWxsIHx8XG4gICAgICAgICAgICAobGVmdEJhcmNvZGVNZXRhZGF0YSA9IGxlZnRSb3dJbmRpY2F0b3JDb2x1bW4uZ2V0QmFyY29kZU1ldGFkYXRhKCkpID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiByaWdodFJvd0luZGljYXRvckNvbHVtbiA9PSBudWxsID8gbnVsbCA6IHJpZ2h0Um93SW5kaWNhdG9yQ29sdW1uLmdldEJhcmNvZGVNZXRhZGF0YSgpO1xuICAgICAgICB9XG4gICAgICAgIHZhciByaWdodEJhcmNvZGVNZXRhZGF0YTtcbiAgICAgICAgaWYgKHJpZ2h0Um93SW5kaWNhdG9yQ29sdW1uID09IG51bGwgfHxcbiAgICAgICAgICAgIChyaWdodEJhcmNvZGVNZXRhZGF0YSA9IHJpZ2h0Um93SW5kaWNhdG9yQ29sdW1uLmdldEJhcmNvZGVNZXRhZGF0YSgpKSA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbGVmdEJhcmNvZGVNZXRhZGF0YTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobGVmdEJhcmNvZGVNZXRhZGF0YS5nZXRDb2x1bW5Db3VudCgpICE9PSByaWdodEJhcmNvZGVNZXRhZGF0YS5nZXRDb2x1bW5Db3VudCgpICYmXG4gICAgICAgICAgICBsZWZ0QmFyY29kZU1ldGFkYXRhLmdldEVycm9yQ29ycmVjdGlvbkxldmVsKCkgIT09IHJpZ2h0QmFyY29kZU1ldGFkYXRhLmdldEVycm9yQ29ycmVjdGlvbkxldmVsKCkgJiZcbiAgICAgICAgICAgIGxlZnRCYXJjb2RlTWV0YWRhdGEuZ2V0Um93Q291bnQoKSAhPT0gcmlnaHRCYXJjb2RlTWV0YWRhdGEuZ2V0Um93Q291bnQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxlZnRCYXJjb2RlTWV0YWRhdGE7XG4gICAgfTtcbiAgICBQREY0MTdTY2FubmluZ0RlY29kZXIuZ2V0Um93SW5kaWNhdG9yQ29sdW1uID0gZnVuY3Rpb24gKGltYWdlLCBib3VuZGluZ0JveCwgc3RhcnRQb2ludCwgbGVmdFRvUmlnaHQsIG1pbkNvZGV3b3JkV2lkdGgsIG1heENvZGV3b3JkV2lkdGgpIHtcbiAgICAgICAgdmFyIHJvd0luZGljYXRvckNvbHVtbiA9IG5ldyBEZXRlY3Rpb25SZXN1bHRSb3dJbmRpY2F0b3JDb2x1bW5fMS5kZWZhdWx0KGJvdW5kaW5nQm94LCBsZWZ0VG9SaWdodCk7XG4gICAgICAgIGZvciAodmFyIGkgLyppbnQqLyA9IDA7IGkgPCAyOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBpbmNyZW1lbnQgPSBpID09PSAwID8gMSA6IC0xO1xuICAgICAgICAgICAgdmFyIHN0YXJ0Q29sdW1uID0gTWF0aC50cnVuYyhNYXRoLnRydW5jKHN0YXJ0UG9pbnQuZ2V0WCgpKSk7XG4gICAgICAgICAgICBmb3IgKHZhciBpbWFnZVJvdyAvKmludCovID0gTWF0aC50cnVuYyhNYXRoLnRydW5jKHN0YXJ0UG9pbnQuZ2V0WSgpKSk7IGltYWdlUm93IDw9IGJvdW5kaW5nQm94LmdldE1heFkoKSAmJlxuICAgICAgICAgICAgICAgIGltYWdlUm93ID49IGJvdW5kaW5nQm94LmdldE1pblkoKTsgaW1hZ2VSb3cgKz0gaW5jcmVtZW50KSB7XG4gICAgICAgICAgICAgICAgdmFyIGNvZGV3b3JkID0gUERGNDE3U2Nhbm5pbmdEZWNvZGVyLmRldGVjdENvZGV3b3JkKGltYWdlLCAwLCBpbWFnZS5nZXRXaWR0aCgpLCBsZWZ0VG9SaWdodCwgc3RhcnRDb2x1bW4sIGltYWdlUm93LCBtaW5Db2Rld29yZFdpZHRoLCBtYXhDb2Rld29yZFdpZHRoKTtcbiAgICAgICAgICAgICAgICBpZiAoY29kZXdvcmQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICByb3dJbmRpY2F0b3JDb2x1bW4uc2V0Q29kZXdvcmQoaW1hZ2VSb3csIGNvZGV3b3JkKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxlZnRUb1JpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydENvbHVtbiA9IGNvZGV3b3JkLmdldFN0YXJ0WCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRDb2x1bW4gPSBjb2Rld29yZC5nZXRFbmRYKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJvd0luZGljYXRvckNvbHVtbjtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIGRldGVjdGlvblJlc3VsdFxuICAgICAqIEBwYXJhbSBCYXJjb2RlVmFsdWVcbiAgICAgKiBAcGFyYW0gcGFyYW0yXG4gICAgICogQHBhcmFtIHBhcmFtM1xuICAgICAqIEBwYXJhbSBiYXJjb2RlTWF0cml4XG4gICAgICpcbiAgICAgKiBAdGhyb3dzIE5vdEZvdW5kRXhjZXB0aW9uXG4gICAgICovXG4gICAgUERGNDE3U2Nhbm5pbmdEZWNvZGVyLmFkanVzdENvZGV3b3JkQ291bnQgPSBmdW5jdGlvbiAoZGV0ZWN0aW9uUmVzdWx0LCBiYXJjb2RlTWF0cml4KSB7XG4gICAgICAgIHZhciBiYXJjb2RlTWF0cml4MDEgPSBiYXJjb2RlTWF0cml4WzBdWzFdO1xuICAgICAgICB2YXIgbnVtYmVyT2ZDb2Rld29yZHMgPSBiYXJjb2RlTWF0cml4MDEuZ2V0VmFsdWUoKTtcbiAgICAgICAgdmFyIGNhbGN1bGF0ZWROdW1iZXJPZkNvZGV3b3JkcyA9IGRldGVjdGlvblJlc3VsdC5nZXRCYXJjb2RlQ29sdW1uQ291bnQoKSAqXG4gICAgICAgICAgICBkZXRlY3Rpb25SZXN1bHQuZ2V0QmFyY29kZVJvd0NvdW50KCkgLVxuICAgICAgICAgICAgUERGNDE3U2Nhbm5pbmdEZWNvZGVyLmdldE51bWJlck9mRUNDb2RlV29yZHMoZGV0ZWN0aW9uUmVzdWx0LmdldEJhcmNvZGVFQ0xldmVsKCkpO1xuICAgICAgICBpZiAobnVtYmVyT2ZDb2Rld29yZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBpZiAoY2FsY3VsYXRlZE51bWJlck9mQ29kZXdvcmRzIDwgMSB8fCBjYWxjdWxhdGVkTnVtYmVyT2ZDb2Rld29yZHMgPiBQREY0MTdDb21tb25fMS5kZWZhdWx0Lk1BWF9DT0RFV09SRFNfSU5fQkFSQ09ERSkge1xuICAgICAgICAgICAgICAgIHRocm93IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdC5nZXROb3RGb3VuZEluc3RhbmNlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBiYXJjb2RlTWF0cml4MDEuc2V0VmFsdWUoY2FsY3VsYXRlZE51bWJlck9mQ29kZXdvcmRzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChudW1iZXJPZkNvZGV3b3Jkc1swXSAhPT0gY2FsY3VsYXRlZE51bWJlck9mQ29kZXdvcmRzKSB7XG4gICAgICAgICAgICAvLyBUaGUgY2FsY3VsYXRlZCBvbmUgaXMgbW9yZSByZWxpYWJsZSBhcyBpdCBpcyBkZXJpdmVkIGZyb20gdGhlIHJvdyBpbmRpY2F0b3IgY29sdW1uc1xuICAgICAgICAgICAgYmFyY29kZU1hdHJpeDAxLnNldFZhbHVlKGNhbGN1bGF0ZWROdW1iZXJPZkNvZGV3b3Jkcyk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIGRldGVjdGlvblJlc3VsdFxuICAgICAqXG4gICAgICogQHRocm93cyBGb3JtYXRFeGNlcHRpb25cbiAgICAgKiBAdGhyb3dzIENoZWNrc3VtRXhjZXB0aW9uXG4gICAgICogQHRocm93cyBOb3RGb3VuZEV4Y2VwdGlvblxuICAgICAqL1xuICAgIFBERjQxN1NjYW5uaW5nRGVjb2Rlci5jcmVhdGVEZWNvZGVyUmVzdWx0ID0gZnVuY3Rpb24gKGRldGVjdGlvblJlc3VsdCkge1xuICAgICAgICB2YXIgYmFyY29kZU1hdHJpeCA9IFBERjQxN1NjYW5uaW5nRGVjb2Rlci5jcmVhdGVCYXJjb2RlTWF0cml4KGRldGVjdGlvblJlc3VsdCk7XG4gICAgICAgIFBERjQxN1NjYW5uaW5nRGVjb2Rlci5hZGp1c3RDb2Rld29yZENvdW50KGRldGVjdGlvblJlc3VsdCwgYmFyY29kZU1hdHJpeCk7XG4gICAgICAgIHZhciBlcmFzdXJlcyAvKkNvbGxlY3Rpb248SW50ZWdlcj4qLyA9IG5ldyBBcnJheSgpO1xuICAgICAgICB2YXIgY29kZXdvcmRzID0gbmV3IEludDMyQXJyYXkoZGV0ZWN0aW9uUmVzdWx0LmdldEJhcmNvZGVSb3dDb3VudCgpICogZGV0ZWN0aW9uUmVzdWx0LmdldEJhcmNvZGVDb2x1bW5Db3VudCgpKTtcbiAgICAgICAgdmFyIGFtYmlndW91c0luZGV4VmFsdWVzTGlzdCA9IC8qTGlzdDxpbnRbXT4qLyBbXTtcbiAgICAgICAgdmFyIGFtYmlndW91c0luZGV4ZXNMaXN0ID0gLypDb2xsZWN0aW9uPEludGVnZXI+Ki8gbmV3IEFycmF5KCk7XG4gICAgICAgIGZvciAodmFyIHJvdyAvKmludCovID0gMDsgcm93IDwgZGV0ZWN0aW9uUmVzdWx0LmdldEJhcmNvZGVSb3dDb3VudCgpOyByb3crKykge1xuICAgICAgICAgICAgZm9yICh2YXIgY29sdW1uIC8qaW50Ki8gPSAwOyBjb2x1bW4gPCBkZXRlY3Rpb25SZXN1bHQuZ2V0QmFyY29kZUNvbHVtbkNvdW50KCk7IGNvbHVtbisrKSB7XG4gICAgICAgICAgICAgICAgdmFyIHZhbHVlcyA9IGJhcmNvZGVNYXRyaXhbcm93XVtjb2x1bW4gKyAxXS5nZXRWYWx1ZSgpO1xuICAgICAgICAgICAgICAgIHZhciBjb2Rld29yZEluZGV4ID0gcm93ICogZGV0ZWN0aW9uUmVzdWx0LmdldEJhcmNvZGVDb2x1bW5Db3VudCgpICsgY29sdW1uO1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGVyYXN1cmVzLnB1c2goY29kZXdvcmRJbmRleCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29kZXdvcmRzW2NvZGV3b3JkSW5kZXhdID0gdmFsdWVzWzBdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYW1iaWd1b3VzSW5kZXhlc0xpc3QucHVzaChjb2Rld29yZEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgYW1iaWd1b3VzSW5kZXhWYWx1ZXNMaXN0LnB1c2godmFsdWVzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGFtYmlndW91c0luZGV4VmFsdWVzID0gbmV3IEFycmF5KGFtYmlndW91c0luZGV4VmFsdWVzTGlzdC5sZW5ndGgpO1xuICAgICAgICBmb3IgKHZhciBpIC8qaW50Ki8gPSAwOyBpIDwgYW1iaWd1b3VzSW5kZXhWYWx1ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGFtYmlndW91c0luZGV4VmFsdWVzW2ldID0gYW1iaWd1b3VzSW5kZXhWYWx1ZXNMaXN0W2ldO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBQREY0MTdTY2FubmluZ0RlY29kZXIuY3JlYXRlRGVjb2RlclJlc3VsdEZyb21BbWJpZ3VvdXNWYWx1ZXMoZGV0ZWN0aW9uUmVzdWx0LmdldEJhcmNvZGVFQ0xldmVsKCksIGNvZGV3b3JkcywgUERGNDE3Q29tbW9uXzEuZGVmYXVsdC50b0ludEFycmF5KGVyYXN1cmVzKSwgUERGNDE3Q29tbW9uXzEuZGVmYXVsdC50b0ludEFycmF5KGFtYmlndW91c0luZGV4ZXNMaXN0KSwgYW1iaWd1b3VzSW5kZXhWYWx1ZXMpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgZGVhbHMgd2l0aCB0aGUgZmFjdCwgdGhhdCB0aGUgZGVjb2RpbmcgcHJvY2VzcyBkb2Vzbid0IGFsd2F5cyB5aWVsZCBhIHNpbmdsZSBtb3N0IGxpa2VseSB2YWx1ZS4gVGhlXG4gICAgICogY3VycmVudCBlcnJvciBjb3JyZWN0aW9uIGltcGxlbWVudGF0aW9uIGRvZXNuJ3QgZGVhbCB3aXRoIGVyYXN1cmVzIHZlcnkgd2VsbCwgc28gaXQncyBiZXR0ZXIgdG8gcHJvdmlkZSBhIHZhbHVlXG4gICAgICogZm9yIHRoZXNlIGFtYmlndW91cyBjb2Rld29yZHMgaW5zdGVhZCBvZiB0cmVhdGluZyBpdCBhcyBhbiBlcmFzdXJlLiBUaGUgcHJvYmxlbSBpcyB0aGF0IHdlIGRvbid0IGtub3cgd2hpY2ggb2ZcbiAgICAgKiB0aGUgYW1iaWd1b3VzIHZhbHVlcyB0byBjaG9vc2UuIFdlIHRyeSBkZWNvZGUgdXNpbmcgdGhlIGZpcnN0IHZhbHVlLCBhbmQgaWYgdGhhdCBmYWlscywgd2UgdXNlIGFub3RoZXIgb2YgdGhlXG4gICAgICogYW1iaWd1b3VzIHZhbHVlcyBhbmQgdHJ5IHRvIGRlY29kZSBhZ2Fpbi4gVGhpcyB1c3VhbGx5IG9ubHkgaGFwcGVucyBvbiB2ZXJ5IGhhcmQgdG8gcmVhZCBhbmQgZGVjb2RlIGJhcmNvZGVzLFxuICAgICAqIHNvIGRlY29kaW5nIHRoZSBub3JtYWwgYmFyY29kZXMgaXMgbm90IGFmZmVjdGVkIGJ5IHRoaXMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZXJhc3VyZUFycmF5IGNvbnRhaW5zIHRoZSBpbmRleGVzIG9mIGVyYXN1cmVzXG4gICAgICogQHBhcmFtIGFtYmlndW91c0luZGV4ZXMgYXJyYXkgd2l0aCB0aGUgaW5kZXhlcyB0aGF0IGhhdmUgbW9yZSB0aGFuIG9uZSBtb3N0IGxpa2VseSB2YWx1ZVxuICAgICAqIEBwYXJhbSBhbWJpZ3VvdXNJbmRleFZhbHVlcyB0d28gZGltZW5zaW9uYWwgYXJyYXkgdGhhdCBjb250YWlucyB0aGUgYW1iaWd1b3VzIHZhbHVlcy4gVGhlIGZpcnN0IGRpbWVuc2lvbiBtdXN0XG4gICAgICogYmUgdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSBhbWJpZ3VvdXNJbmRleGVzIGFycmF5XG4gICAgICpcbiAgICAgKiBAdGhyb3dzIEZvcm1hdEV4Y2VwdGlvblxuICAgICAqIEB0aHJvd3MgQ2hlY2tzdW1FeGNlcHRpb25cbiAgICAgKi9cbiAgICBQREY0MTdTY2FubmluZ0RlY29kZXIuY3JlYXRlRGVjb2RlclJlc3VsdEZyb21BbWJpZ3VvdXNWYWx1ZXMgPSBmdW5jdGlvbiAoZWNMZXZlbCwgY29kZXdvcmRzLCBlcmFzdXJlQXJyYXksIGFtYmlndW91c0luZGV4ZXMsIGFtYmlndW91c0luZGV4VmFsdWVzKSB7XG4gICAgICAgIHZhciBhbWJpZ3VvdXNJbmRleENvdW50ID0gbmV3IEludDMyQXJyYXkoYW1iaWd1b3VzSW5kZXhlcy5sZW5ndGgpO1xuICAgICAgICB2YXIgdHJpZXMgPSAxMDA7XG4gICAgICAgIHdoaWxlICh0cmllcy0tID4gMCkge1xuICAgICAgICAgICAgZm9yICh2YXIgaSAvKmludCovID0gMDsgaSA8IGFtYmlndW91c0luZGV4Q291bnQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb2Rld29yZHNbYW1iaWd1b3VzSW5kZXhlc1tpXV0gPSBhbWJpZ3VvdXNJbmRleFZhbHVlc1tpXVthbWJpZ3VvdXNJbmRleENvdW50W2ldXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFBERjQxN1NjYW5uaW5nRGVjb2Rlci5kZWNvZGVDb2Rld29yZHMoY29kZXdvcmRzLCBlY0xldmVsLCBlcmFzdXJlQXJyYXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIHZhciBpZ25vcmVkID0gZXJyIGluc3RhbmNlb2YgQ2hlY2tzdW1FeGNlcHRpb25fMS5kZWZhdWx0O1xuICAgICAgICAgICAgICAgIGlmICghaWdub3JlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGFtYmlndW91c0luZGV4Q291bnQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgQ2hlY2tzdW1FeGNlcHRpb25fMS5kZWZhdWx0LmdldENoZWNrc3VtSW5zdGFuY2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAodmFyIGkgLyppbnQqLyA9IDA7IGkgPCBhbWJpZ3VvdXNJbmRleENvdW50Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGFtYmlndW91c0luZGV4Q291bnRbaV0gPCBhbWJpZ3VvdXNJbmRleFZhbHVlc1tpXS5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIGFtYmlndW91c0luZGV4Q291bnRbaV0rKztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBhbWJpZ3VvdXNJbmRleENvdW50W2ldID0gMDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IGFtYmlndW91c0luZGV4Q291bnQubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgQ2hlY2tzdW1FeGNlcHRpb25fMS5kZWZhdWx0LmdldENoZWNrc3VtSW5zdGFuY2UoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBDaGVja3N1bUV4Y2VwdGlvbl8xLmRlZmF1bHQuZ2V0Q2hlY2tzdW1JbnN0YW5jZSgpO1xuICAgIH07XG4gICAgUERGNDE3U2Nhbm5pbmdEZWNvZGVyLmNyZWF0ZUJhcmNvZGVNYXRyaXggPSBmdW5jdGlvbiAoZGV0ZWN0aW9uUmVzdWx0KSB7XG4gICAgICAgIHZhciBlXzMsIF9hLCBlXzQsIF9iO1xuICAgICAgICAvLyBsZXQgYmFyY29kZU1hdHJpeDogQmFyY29kZVZhbHVlW11bXSA9XG4gICAgICAgIC8vIG5ldyBCYXJjb2RlVmFsdWVbZGV0ZWN0aW9uUmVzdWx0LmdldEJhcmNvZGVSb3dDb3VudCgpXVtkZXRlY3Rpb25SZXN1bHQuZ2V0QmFyY29kZUNvbHVtbkNvdW50KCkgKyAyXTtcbiAgICAgICAgdmFyIGJhcmNvZGVNYXRyaXggPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiBkZXRlY3Rpb25SZXN1bHQuZ2V0QmFyY29kZVJvd0NvdW50KCkgfSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gbmV3IEFycmF5KGRldGVjdGlvblJlc3VsdC5nZXRCYXJjb2RlQ29sdW1uQ291bnQoKSArIDIpOyB9KTtcbiAgICAgICAgZm9yICh2YXIgcm93IC8qaW50Ki8gPSAwOyByb3cgPCBiYXJjb2RlTWF0cml4Lmxlbmd0aDsgcm93KyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGNvbHVtbl8xIC8qaW50Ki8gPSAwOyBjb2x1bW5fMSA8IGJhcmNvZGVNYXRyaXhbcm93XS5sZW5ndGg7IGNvbHVtbl8xKyspIHtcbiAgICAgICAgICAgICAgICBiYXJjb2RlTWF0cml4W3Jvd11bY29sdW1uXzFdID0gbmV3IEJhcmNvZGVWYWx1ZV8xLmRlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgY29sdW1uID0gMDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAodmFyIF9jID0gX192YWx1ZXMoZGV0ZWN0aW9uUmVzdWx0LmdldERldGVjdGlvblJlc3VsdENvbHVtbnMoKSksIF9kID0gX2MubmV4dCgpOyAhX2QuZG9uZTsgX2QgPSBfYy5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgZGV0ZWN0aW9uUmVzdWx0Q29sdW1uID0gX2QudmFsdWUgLypEZXRlY3Rpb25SZXN1bHRDb2x1bW4qLztcbiAgICAgICAgICAgICAgICBpZiAoZGV0ZWN0aW9uUmVzdWx0Q29sdW1uICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIF9lID0gKGVfNCA9IHZvaWQgMCwgX192YWx1ZXMoZGV0ZWN0aW9uUmVzdWx0Q29sdW1uLmdldENvZGV3b3JkcygpKSksIF9mID0gX2UubmV4dCgpOyAhX2YuZG9uZTsgX2YgPSBfZS5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29kZXdvcmQgPSBfZi52YWx1ZSAvKkNvZGV3b3JkKi87XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvZGV3b3JkICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJvd051bWJlciA9IGNvZGV3b3JkLmdldFJvd051bWJlcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocm93TnVtYmVyID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyb3dOdW1iZXIgPj0gYmFyY29kZU1hdHJpeC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIG1vcmUgcm93cyB0aGFuIHRoZSBiYXJjb2RlIG1ldGFkYXRhIGFsbG93cyBmb3IsIGlnbm9yZSB0aGVtLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFyY29kZU1hdHJpeFtyb3dOdW1iZXJdW2NvbHVtbl0uc2V0VmFsdWUoY29kZXdvcmQuZ2V0VmFsdWUoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGVfNF8xKSB7IGVfNCA9IHsgZXJyb3I6IGVfNF8xIH07IH1cbiAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfZiAmJiAhX2YuZG9uZSAmJiAoX2IgPSBfZS5yZXR1cm4pKSBfYi5jYWxsKF9lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV80KSB0aHJvdyBlXzQuZXJyb3I7IH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb2x1bW4rKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZV8zXzEpIHsgZV8zID0geyBlcnJvcjogZV8zXzEgfTsgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKF9kICYmICFfZC5kb25lICYmIChfYSA9IF9jLnJldHVybikpIF9hLmNhbGwoX2MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzMpIHRocm93IGVfMy5lcnJvcjsgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBiYXJjb2RlTWF0cml4O1xuICAgIH07XG4gICAgUERGNDE3U2Nhbm5pbmdEZWNvZGVyLmlzVmFsaWRCYXJjb2RlQ29sdW1uID0gZnVuY3Rpb24gKGRldGVjdGlvblJlc3VsdCwgYmFyY29kZUNvbHVtbikge1xuICAgICAgICByZXR1cm4gYmFyY29kZUNvbHVtbiA+PSAwICYmIGJhcmNvZGVDb2x1bW4gPD0gZGV0ZWN0aW9uUmVzdWx0LmdldEJhcmNvZGVDb2x1bW5Db3VudCgpICsgMTtcbiAgICB9O1xuICAgIFBERjQxN1NjYW5uaW5nRGVjb2Rlci5nZXRTdGFydENvbHVtbiA9IGZ1bmN0aW9uIChkZXRlY3Rpb25SZXN1bHQsIGJhcmNvZGVDb2x1bW4sIGltYWdlUm93LCBsZWZ0VG9SaWdodCkge1xuICAgICAgICB2YXIgZV81LCBfYTtcbiAgICAgICAgdmFyIG9mZnNldCA9IGxlZnRUb1JpZ2h0ID8gMSA6IC0xO1xuICAgICAgICB2YXIgY29kZXdvcmQgPSBudWxsO1xuICAgICAgICBpZiAoUERGNDE3U2Nhbm5pbmdEZWNvZGVyLmlzVmFsaWRCYXJjb2RlQ29sdW1uKGRldGVjdGlvblJlc3VsdCwgYmFyY29kZUNvbHVtbiAtIG9mZnNldCkpIHtcbiAgICAgICAgICAgIGNvZGV3b3JkID0gZGV0ZWN0aW9uUmVzdWx0LmdldERldGVjdGlvblJlc3VsdENvbHVtbihiYXJjb2RlQ29sdW1uIC0gb2Zmc2V0KS5nZXRDb2Rld29yZChpbWFnZVJvdyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvZGV3b3JkICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBsZWZ0VG9SaWdodCA/IGNvZGV3b3JkLmdldEVuZFgoKSA6IGNvZGV3b3JkLmdldFN0YXJ0WCgpO1xuICAgICAgICB9XG4gICAgICAgIGNvZGV3b3JkID0gZGV0ZWN0aW9uUmVzdWx0LmdldERldGVjdGlvblJlc3VsdENvbHVtbihiYXJjb2RlQ29sdW1uKS5nZXRDb2Rld29yZE5lYXJieShpbWFnZVJvdyk7XG4gICAgICAgIGlmIChjb2Rld29yZCAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbGVmdFRvUmlnaHQgPyBjb2Rld29yZC5nZXRTdGFydFgoKSA6IGNvZGV3b3JkLmdldEVuZFgoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoUERGNDE3U2Nhbm5pbmdEZWNvZGVyLmlzVmFsaWRCYXJjb2RlQ29sdW1uKGRldGVjdGlvblJlc3VsdCwgYmFyY29kZUNvbHVtbiAtIG9mZnNldCkpIHtcbiAgICAgICAgICAgIGNvZGV3b3JkID0gZGV0ZWN0aW9uUmVzdWx0LmdldERldGVjdGlvblJlc3VsdENvbHVtbihiYXJjb2RlQ29sdW1uIC0gb2Zmc2V0KS5nZXRDb2Rld29yZE5lYXJieShpbWFnZVJvdyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvZGV3b3JkICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBsZWZ0VG9SaWdodCA/IGNvZGV3b3JkLmdldEVuZFgoKSA6IGNvZGV3b3JkLmdldFN0YXJ0WCgpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBza2lwcGVkQ29sdW1ucyA9IDA7XG4gICAgICAgIHdoaWxlIChQREY0MTdTY2FubmluZ0RlY29kZXIuaXNWYWxpZEJhcmNvZGVDb2x1bW4oZGV0ZWN0aW9uUmVzdWx0LCBiYXJjb2RlQ29sdW1uIC0gb2Zmc2V0KSkge1xuICAgICAgICAgICAgYmFyY29kZUNvbHVtbiAtPSBvZmZzZXQ7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIF9iID0gKGVfNSA9IHZvaWQgMCwgX192YWx1ZXMoZGV0ZWN0aW9uUmVzdWx0LmdldERldGVjdGlvblJlc3VsdENvbHVtbihiYXJjb2RlQ29sdW1uKS5nZXRDb2Rld29yZHMoKSkpLCBfYyA9IF9iLm5leHQoKTsgIV9jLmRvbmU7IF9jID0gX2IubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBwcmV2aW91c1Jvd0NvZGV3b3JkID0gX2MudmFsdWUgLypDb2Rld29yZCovO1xuICAgICAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNSb3dDb2Rld29yZCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGxlZnRUb1JpZ2h0ID8gcHJldmlvdXNSb3dDb2Rld29yZC5nZXRFbmRYKCkgOiBwcmV2aW91c1Jvd0NvZGV3b3JkLmdldFN0YXJ0WCgpKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcHBlZENvbHVtbnMgKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJldmlvdXNSb3dDb2Rld29yZC5nZXRFbmRYKCkgLSBwcmV2aW91c1Jvd0NvZGV3b3JkLmdldFN0YXJ0WCgpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlXzVfMSkgeyBlXzUgPSB7IGVycm9yOiBlXzVfMSB9OyB9XG4gICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoX2MgJiYgIV9jLmRvbmUgJiYgKF9hID0gX2IucmV0dXJuKSkgX2EuY2FsbChfYik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV81KSB0aHJvdyBlXzUuZXJyb3I7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNraXBwZWRDb2x1bW5zKys7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxlZnRUb1JpZ2h0ID8gZGV0ZWN0aW9uUmVzdWx0LmdldEJvdW5kaW5nQm94KCkuZ2V0TWluWCgpIDogZGV0ZWN0aW9uUmVzdWx0LmdldEJvdW5kaW5nQm94KCkuZ2V0TWF4WCgpO1xuICAgIH07XG4gICAgUERGNDE3U2Nhbm5pbmdEZWNvZGVyLmRldGVjdENvZGV3b3JkID0gZnVuY3Rpb24gKGltYWdlLCBtaW5Db2x1bW4sIG1heENvbHVtbiwgbGVmdFRvUmlnaHQsIHN0YXJ0Q29sdW1uLCBpbWFnZVJvdywgbWluQ29kZXdvcmRXaWR0aCwgbWF4Q29kZXdvcmRXaWR0aCkge1xuICAgICAgICBzdGFydENvbHVtbiA9IFBERjQxN1NjYW5uaW5nRGVjb2Rlci5hZGp1c3RDb2Rld29yZFN0YXJ0Q29sdW1uKGltYWdlLCBtaW5Db2x1bW4sIG1heENvbHVtbiwgbGVmdFRvUmlnaHQsIHN0YXJ0Q29sdW1uLCBpbWFnZVJvdyk7XG4gICAgICAgIC8vIHdlIHVzdWFsbHkga25vdyBmYWlybHkgZXhhY3Qgbm93IGhvdyBsb25nIGEgY29kZXdvcmQgaXMuIFdlIHNob3VsZCBwcm92aWRlIG1pbmltdW0gYW5kIG1heGltdW0gZXhwZWN0ZWQgbGVuZ3RoXG4gICAgICAgIC8vIGFuZCB0cnkgdG8gYWRqdXN0IHRoZSByZWFkIHBpeGVscywgZS5nLiByZW1vdmUgc2luZ2xlIHBpeGVsIGVycm9ycyBvciB0cnkgdG8gY3V0IG9mZiBleGNlZWRpbmcgcGl4ZWxzLlxuICAgICAgICAvLyBtaW4gYW5kIG1heENvZGV3b3JkV2lkdGggc2hvdWxkIG5vdCBiZSB1c2VkIGFzIHRoZXkgYXJlIGNhbGN1bGF0ZWQgZm9yIHRoZSB3aG9sZSBiYXJjb2RlIGFuIGNhbiBiZSBpbmFjY3VyYXRlXG4gICAgICAgIC8vIGZvciB0aGUgY3VycmVudCBwb3NpdGlvblxuICAgICAgICB2YXIgbW9kdWxlQml0Q291bnQgPSBQREY0MTdTY2FubmluZ0RlY29kZXIuZ2V0TW9kdWxlQml0Q291bnQoaW1hZ2UsIG1pbkNvbHVtbiwgbWF4Q29sdW1uLCBsZWZ0VG9SaWdodCwgc3RhcnRDb2x1bW4sIGltYWdlUm93KTtcbiAgICAgICAgaWYgKG1vZHVsZUJpdENvdW50ID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHZhciBlbmRDb2x1bW47XG4gICAgICAgIHZhciBjb2Rld29yZEJpdENvdW50ID0gTWF0aFV0aWxzXzEuZGVmYXVsdC5zdW0obW9kdWxlQml0Q291bnQpO1xuICAgICAgICBpZiAobGVmdFRvUmlnaHQpIHtcbiAgICAgICAgICAgIGVuZENvbHVtbiA9IHN0YXJ0Q29sdW1uICsgY29kZXdvcmRCaXRDb3VudDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZvciAodmFyIGkgLyppbnQqLyA9IDA7IGkgPCBtb2R1bGVCaXRDb3VudC5sZW5ndGggLyAyOyBpKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgdG1wQ291bnQgPSBtb2R1bGVCaXRDb3VudFtpXTtcbiAgICAgICAgICAgICAgICBtb2R1bGVCaXRDb3VudFtpXSA9IG1vZHVsZUJpdENvdW50W21vZHVsZUJpdENvdW50Lmxlbmd0aCAtIDEgLSBpXTtcbiAgICAgICAgICAgICAgICBtb2R1bGVCaXRDb3VudFttb2R1bGVCaXRDb3VudC5sZW5ndGggLSAxIC0gaV0gPSB0bXBDb3VudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVuZENvbHVtbiA9IHN0YXJ0Q29sdW1uO1xuICAgICAgICAgICAgc3RhcnRDb2x1bW4gPSBlbmRDb2x1bW4gLSBjb2Rld29yZEJpdENvdW50O1xuICAgICAgICB9XG4gICAgICAgIC8vIFRPRE8gaW1wbGVtZW50IGNoZWNrIGZvciB3aWR0aCBhbmQgY29ycmVjdGlvbiBvZiBibGFjayBhbmQgd2hpdGUgYmFyc1xuICAgICAgICAvLyB1c2Ugc3RhcnQgKGFuZCBtYXliZSBzdG9wIHBhdHRlcm4pIHRvIGRldGVybWluZSBpZiBibGFjayBiYXJzIGFyZSB3aWRlciB0aGFuIHdoaXRlIGJhcnMuIElmIHNvLCBhZGp1c3QuXG4gICAgICAgIC8vIHNob3VsZCBwcm9iYWJseSBkb25lIG9ubHkgZm9yIGNvZGV3b3JkcyB3aXRoIGEgbG90IG1vcmUgdGhhbiAxNyBiaXRzLlxuICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGZpeGVzIDEwLTEucG5nLCB3aGljaCBoYXMgd2lkZSBibGFjayBiYXJzIGFuZCBzbWFsbCB3aGl0ZSBiYXJzXG4gICAgICAgIC8vICAgIGZvciAobGV0IGkgLyppbnQqLyA9IDA7IGkgPCBtb2R1bGVCaXRDb3VudC5sZW5ndGg7IGkrKykge1xuICAgICAgICAvLyAgICAgIGlmIChpICUgMiA9PT0gMCkge1xuICAgICAgICAvLyAgICAgICAgbW9kdWxlQml0Q291bnRbaV0tLTtcbiAgICAgICAgLy8gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyAgICAgICAgbW9kdWxlQml0Q291bnRbaV0rKztcbiAgICAgICAgLy8gICAgICB9XG4gICAgICAgIC8vICAgIH1cbiAgICAgICAgLy8gV2UgY291bGQgYWxzbyB1c2UgdGhlIHdpZHRoIG9mIHN1cnJvdW5kaW5nIGNvZGV3b3JkcyBmb3IgbW9yZSBhY2N1cmF0ZSByZXN1bHRzLCBidXQgdGhpcyBzZWVtc1xuICAgICAgICAvLyBzdWZmaWNpZW50IGZvciBub3dcbiAgICAgICAgaWYgKCFQREY0MTdTY2FubmluZ0RlY29kZXIuY2hlY2tDb2Rld29yZFNrZXcoY29kZXdvcmRCaXRDb3VudCwgbWluQ29kZXdvcmRXaWR0aCwgbWF4Q29kZXdvcmRXaWR0aCkpIHtcbiAgICAgICAgICAgIC8vIFdlIGNvdWxkIHRyeSB0byB1c2UgdGhlIHN0YXJ0WCBhbmQgZW5kWCBwb3NpdGlvbiBvZiB0aGUgY29kZXdvcmQgaW4gdGhlIHNhbWUgY29sdW1uIGluIHRoZSBwcmV2aW91cyByb3csXG4gICAgICAgICAgICAvLyBjcmVhdGUgdGhlIGJpdCBjb3VudCBmcm9tIGl0IGFuZCBub3JtYWxpemUgaXQgdG8gOC4gVGhpcyB3b3VsZCBoZWxwIHdpdGggc2luZ2xlIHBpeGVsIGVycm9ycy5cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHZhciBkZWNvZGVkVmFsdWUgPSBQREY0MTdDb2Rld29yZERlY29kZXJfMS5kZWZhdWx0LmdldERlY29kZWRWYWx1ZShtb2R1bGVCaXRDb3VudCk7XG4gICAgICAgIHZhciBjb2Rld29yZCA9IFBERjQxN0NvbW1vbl8xLmRlZmF1bHQuZ2V0Q29kZXdvcmQoZGVjb2RlZFZhbHVlKTtcbiAgICAgICAgaWYgKGNvZGV3b3JkID09PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBDb2Rld29yZF8xLmRlZmF1bHQoc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgUERGNDE3U2Nhbm5pbmdEZWNvZGVyLmdldENvZGV3b3JkQnVja2V0TnVtYmVyKGRlY29kZWRWYWx1ZSksIGNvZGV3b3JkKTtcbiAgICB9O1xuICAgIFBERjQxN1NjYW5uaW5nRGVjb2Rlci5nZXRNb2R1bGVCaXRDb3VudCA9IGZ1bmN0aW9uIChpbWFnZSwgbWluQ29sdW1uLCBtYXhDb2x1bW4sIGxlZnRUb1JpZ2h0LCBzdGFydENvbHVtbiwgaW1hZ2VSb3cpIHtcbiAgICAgICAgdmFyIGltYWdlQ29sdW1uID0gc3RhcnRDb2x1bW47XG4gICAgICAgIHZhciBtb2R1bGVCaXRDb3VudCA9IG5ldyBJbnQzMkFycmF5KDgpO1xuICAgICAgICB2YXIgbW9kdWxlTnVtYmVyID0gMDtcbiAgICAgICAgdmFyIGluY3JlbWVudCA9IGxlZnRUb1JpZ2h0ID8gMSA6IC0xO1xuICAgICAgICB2YXIgcHJldmlvdXNQaXhlbFZhbHVlID0gbGVmdFRvUmlnaHQ7XG4gICAgICAgIHdoaWxlICgobGVmdFRvUmlnaHQgPyBpbWFnZUNvbHVtbiA8IG1heENvbHVtbiA6IGltYWdlQ29sdW1uID49IG1pbkNvbHVtbikgJiZcbiAgICAgICAgICAgIG1vZHVsZU51bWJlciA8IG1vZHVsZUJpdENvdW50Lmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKGltYWdlLmdldChpbWFnZUNvbHVtbiwgaW1hZ2VSb3cpID09PSBwcmV2aW91c1BpeGVsVmFsdWUpIHtcbiAgICAgICAgICAgICAgICBtb2R1bGVCaXRDb3VudFttb2R1bGVOdW1iZXJdKys7XG4gICAgICAgICAgICAgICAgaW1hZ2VDb2x1bW4gKz0gaW5jcmVtZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbW9kdWxlTnVtYmVyKys7XG4gICAgICAgICAgICAgICAgcHJldmlvdXNQaXhlbFZhbHVlID0gIXByZXZpb3VzUGl4ZWxWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobW9kdWxlTnVtYmVyID09PSBtb2R1bGVCaXRDb3VudC5sZW5ndGggfHxcbiAgICAgICAgICAgICgoaW1hZ2VDb2x1bW4gPT09IChsZWZ0VG9SaWdodCA/IG1heENvbHVtbiA6IG1pbkNvbHVtbikpICYmXG4gICAgICAgICAgICAgICAgbW9kdWxlTnVtYmVyID09PSBtb2R1bGVCaXRDb3VudC5sZW5ndGggLSAxKSkge1xuICAgICAgICAgICAgcmV0dXJuIG1vZHVsZUJpdENvdW50O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gICAgUERGNDE3U2Nhbm5pbmdEZWNvZGVyLmdldE51bWJlck9mRUNDb2RlV29yZHMgPSBmdW5jdGlvbiAoYmFyY29kZUVDTGV2ZWwpIHtcbiAgICAgICAgcmV0dXJuIDIgPDwgYmFyY29kZUVDTGV2ZWw7XG4gICAgfTtcbiAgICBQREY0MTdTY2FubmluZ0RlY29kZXIuYWRqdXN0Q29kZXdvcmRTdGFydENvbHVtbiA9IGZ1bmN0aW9uIChpbWFnZSwgbWluQ29sdW1uLCBtYXhDb2x1bW4sIGxlZnRUb1JpZ2h0LCBjb2Rld29yZFN0YXJ0Q29sdW1uLCBpbWFnZVJvdykge1xuICAgICAgICB2YXIgY29ycmVjdGVkU3RhcnRDb2x1bW4gPSBjb2Rld29yZFN0YXJ0Q29sdW1uO1xuICAgICAgICB2YXIgaW5jcmVtZW50ID0gbGVmdFRvUmlnaHQgPyAtMSA6IDE7XG4gICAgICAgIC8vIHRoZXJlIHNob3VsZCBiZSBubyBibGFjayBwaXhlbHMgYmVmb3JlIHRoZSBzdGFydCBjb2x1bW4uIElmIHRoZXJlIGFyZSwgdGhlbiB3ZSBuZWVkIHRvIHN0YXJ0IGVhcmxpZXIuXG4gICAgICAgIGZvciAodmFyIGkgLyppbnQqLyA9IDA7IGkgPCAyOyBpKyspIHtcbiAgICAgICAgICAgIHdoaWxlICgobGVmdFRvUmlnaHQgPyBjb3JyZWN0ZWRTdGFydENvbHVtbiA+PSBtaW5Db2x1bW4gOiBjb3JyZWN0ZWRTdGFydENvbHVtbiA8IG1heENvbHVtbikgJiZcbiAgICAgICAgICAgICAgICBsZWZ0VG9SaWdodCA9PT0gaW1hZ2UuZ2V0KGNvcnJlY3RlZFN0YXJ0Q29sdW1uLCBpbWFnZVJvdykpIHtcbiAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnMoY29kZXdvcmRTdGFydENvbHVtbiAtIGNvcnJlY3RlZFN0YXJ0Q29sdW1uKSA+IFBERjQxN1NjYW5uaW5nRGVjb2Rlci5DT0RFV09SRF9TS0VXX1NJWkUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvZGV3b3JkU3RhcnRDb2x1bW47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvcnJlY3RlZFN0YXJ0Q29sdW1uICs9IGluY3JlbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGluY3JlbWVudCA9IC1pbmNyZW1lbnQ7XG4gICAgICAgICAgICBsZWZ0VG9SaWdodCA9ICFsZWZ0VG9SaWdodDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29ycmVjdGVkU3RhcnRDb2x1bW47XG4gICAgfTtcbiAgICBQREY0MTdTY2FubmluZ0RlY29kZXIuY2hlY2tDb2Rld29yZFNrZXcgPSBmdW5jdGlvbiAoY29kZXdvcmRTaXplLCBtaW5Db2Rld29yZFdpZHRoLCBtYXhDb2Rld29yZFdpZHRoKSB7XG4gICAgICAgIHJldHVybiBtaW5Db2Rld29yZFdpZHRoIC0gUERGNDE3U2Nhbm5pbmdEZWNvZGVyLkNPREVXT1JEX1NLRVdfU0laRSA8PSBjb2Rld29yZFNpemUgJiZcbiAgICAgICAgICAgIGNvZGV3b3JkU2l6ZSA8PSBtYXhDb2Rld29yZFdpZHRoICsgUERGNDE3U2Nhbm5pbmdEZWNvZGVyLkNPREVXT1JEX1NLRVdfU0laRTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEB0aHJvd3MgRm9ybWF0RXhjZXB0aW9uLFxuICAgICAqIEB0aHJvd3MgQ2hlY2tzdW1FeGNlcHRpb25cbiAgICAgKi9cbiAgICBQREY0MTdTY2FubmluZ0RlY29kZXIuZGVjb2RlQ29kZXdvcmRzID0gZnVuY3Rpb24gKGNvZGV3b3JkcywgZWNMZXZlbCwgZXJhc3VyZXMpIHtcbiAgICAgICAgaWYgKGNvZGV3b3Jkcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQuZ2V0Rm9ybWF0SW5zdGFuY2UoKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbnVtRUNDb2Rld29yZHMgPSAxIDw8IChlY0xldmVsICsgMSk7XG4gICAgICAgIHZhciBjb3JyZWN0ZWRFcnJvcnNDb3VudCA9IFBERjQxN1NjYW5uaW5nRGVjb2Rlci5jb3JyZWN0RXJyb3JzKGNvZGV3b3JkcywgZXJhc3VyZXMsIG51bUVDQ29kZXdvcmRzKTtcbiAgICAgICAgUERGNDE3U2Nhbm5pbmdEZWNvZGVyLnZlcmlmeUNvZGV3b3JkQ291bnQoY29kZXdvcmRzLCBudW1FQ0NvZGV3b3Jkcyk7XG4gICAgICAgIC8vIERlY29kZSB0aGUgY29kZXdvcmRzXG4gICAgICAgIHZhciBkZWNvZGVyUmVzdWx0ID0gRGVjb2RlZEJpdFN0cmVhbVBhcnNlcl8xLmRlZmF1bHQuZGVjb2RlKGNvZGV3b3JkcywgJycgKyBlY0xldmVsKTtcbiAgICAgICAgZGVjb2RlclJlc3VsdC5zZXRFcnJvcnNDb3JyZWN0ZWQoY29ycmVjdGVkRXJyb3JzQ291bnQpO1xuICAgICAgICBkZWNvZGVyUmVzdWx0LnNldEVyYXN1cmVzKGVyYXN1cmVzLmxlbmd0aCk7XG4gICAgICAgIHJldHVybiBkZWNvZGVyUmVzdWx0O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogPHA+R2l2ZW4gZGF0YSBhbmQgZXJyb3ItY29ycmVjdGlvbiBjb2Rld29yZHMgcmVjZWl2ZWQsIHBvc3NpYmx5IGNvcnJ1cHRlZCBieSBlcnJvcnMsIGF0dGVtcHRzIHRvXG4gICAgICogY29ycmVjdCB0aGUgZXJyb3JzIGluLXBsYWNlLjwvcD5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb2Rld29yZHMgICBkYXRhIGFuZCBlcnJvciBjb3JyZWN0aW9uIGNvZGV3b3Jkc1xuICAgICAqIEBwYXJhbSBlcmFzdXJlcyBwb3NpdGlvbnMgb2YgYW55IGtub3duIGVyYXN1cmVzXG4gICAgICogQHBhcmFtIG51bUVDQ29kZXdvcmRzIG51bWJlciBvZiBlcnJvciBjb3JyZWN0aW9uIGNvZGV3b3JkcyB0aGF0IGFyZSBhdmFpbGFibGUgaW4gY29kZXdvcmRzXG4gICAgICogQHRocm93cyBDaGVja3N1bUV4Y2VwdGlvbiBpZiBlcnJvciBjb3JyZWN0aW9uIGZhaWxzXG4gICAgICovXG4gICAgUERGNDE3U2Nhbm5pbmdEZWNvZGVyLmNvcnJlY3RFcnJvcnMgPSBmdW5jdGlvbiAoY29kZXdvcmRzLCBlcmFzdXJlcywgbnVtRUNDb2Rld29yZHMpIHtcbiAgICAgICAgaWYgKGVyYXN1cmVzICE9IG51bGwgJiZcbiAgICAgICAgICAgIGVyYXN1cmVzLmxlbmd0aCA+IG51bUVDQ29kZXdvcmRzIC8gMiArIFBERjQxN1NjYW5uaW5nRGVjb2Rlci5NQVhfRVJST1JTIHx8XG4gICAgICAgICAgICBudW1FQ0NvZGV3b3JkcyA8IDAgfHxcbiAgICAgICAgICAgIG51bUVDQ29kZXdvcmRzID4gUERGNDE3U2Nhbm5pbmdEZWNvZGVyLk1BWF9FQ19DT0RFV09SRFMpIHtcbiAgICAgICAgICAgIC8vIFRvbyBtYW55IGVycm9ycyBvciBFQyBDb2Rld29yZHMgaXMgY29ycnVwdGVkXG4gICAgICAgICAgICB0aHJvdyBDaGVja3N1bUV4Y2VwdGlvbl8xLmRlZmF1bHQuZ2V0Q2hlY2tzdW1JbnN0YW5jZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBQREY0MTdTY2FubmluZ0RlY29kZXIuZXJyb3JDb3JyZWN0aW9uLmRlY29kZShjb2Rld29yZHMsIG51bUVDQ29kZXdvcmRzLCBlcmFzdXJlcyk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBWZXJpZnkgdGhhdCBhbGwgaXMgT0sgd2l0aCB0aGUgY29kZXdvcmQgYXJyYXkuXG4gICAgICogQHRocm93cyBGb3JtYXRFeGNlcHRpb25cbiAgICAgKi9cbiAgICBQREY0MTdTY2FubmluZ0RlY29kZXIudmVyaWZ5Q29kZXdvcmRDb3VudCA9IGZ1bmN0aW9uIChjb2Rld29yZHMsIG51bUVDQ29kZXdvcmRzKSB7XG4gICAgICAgIGlmIChjb2Rld29yZHMubGVuZ3RoIDwgNCkge1xuICAgICAgICAgICAgLy8gQ29kZXdvcmQgYXJyYXkgc2l6ZSBzaG91bGQgYmUgYXQgbGVhc3QgNCBhbGxvd2luZyBmb3JcbiAgICAgICAgICAgIC8vIENvdW50IENXLCBBdCBsZWFzdCBvbmUgRGF0YSBDVywgRXJyb3IgQ29ycmVjdGlvbiBDVywgRXJyb3IgQ29ycmVjdGlvbiBDV1xuICAgICAgICAgICAgdGhyb3cgRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdC5nZXRGb3JtYXRJbnN0YW5jZSgpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRoZSBmaXJzdCBjb2Rld29yZCwgdGhlIFN5bWJvbCBMZW5ndGggRGVzY3JpcHRvciwgc2hhbGwgYWx3YXlzIGVuY29kZSB0aGUgdG90YWwgbnVtYmVyIG9mIGRhdGFcbiAgICAgICAgLy8gY29kZXdvcmRzIGluIHRoZSBzeW1ib2wsIGluY2x1ZGluZyB0aGUgU3ltYm9sIExlbmd0aCBEZXNjcmlwdG9yIGl0c2VsZiwgZGF0YSBjb2Rld29yZHMgYW5kIHBhZFxuICAgICAgICAvLyBjb2Rld29yZHMsIGJ1dCBleGNsdWRpbmcgdGhlIG51bWJlciBvZiBlcnJvciBjb3JyZWN0aW9uIGNvZGV3b3Jkcy5cbiAgICAgICAgdmFyIG51bWJlck9mQ29kZXdvcmRzID0gY29kZXdvcmRzWzBdO1xuICAgICAgICBpZiAobnVtYmVyT2ZDb2Rld29yZHMgPiBjb2Rld29yZHMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0LmdldEZvcm1hdEluc3RhbmNlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG51bWJlck9mQ29kZXdvcmRzID09PSAwKSB7XG4gICAgICAgICAgICAvLyBSZXNldCB0byB0aGUgbGVuZ3RoIG9mIHRoZSBhcnJheSAtIDggKEFsbG93IGZvciBhdCBsZWFzdCBsZXZlbCAzIEVycm9yIENvcnJlY3Rpb24gKDggRXJyb3IgQ29kZXdvcmRzKVxuICAgICAgICAgICAgaWYgKG51bUVDQ29kZXdvcmRzIDwgY29kZXdvcmRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNvZGV3b3Jkc1swXSA9IGNvZGV3b3Jkcy5sZW5ndGggLSBudW1FQ0NvZGV3b3JkcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IEZvcm1hdEV4Y2VwdGlvbl8xLmRlZmF1bHQuZ2V0Rm9ybWF0SW5zdGFuY2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgUERGNDE3U2Nhbm5pbmdEZWNvZGVyLmdldEJpdENvdW50Rm9yQ29kZXdvcmQgPSBmdW5jdGlvbiAoY29kZXdvcmQpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBJbnQzMkFycmF5KDgpO1xuICAgICAgICB2YXIgcHJldmlvdXNWYWx1ZSA9IDA7XG4gICAgICAgIHZhciBpID0gcmVzdWx0Lmxlbmd0aCAtIDE7XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICBpZiAoKGNvZGV3b3JkICYgMHgxKSAhPT0gcHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAgICAgICAgIHByZXZpb3VzVmFsdWUgPSBjb2Rld29yZCAmIDB4MTtcbiAgICAgICAgICAgICAgICBpLS07XG4gICAgICAgICAgICAgICAgaWYgKGkgPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdFtpXSsrO1xuICAgICAgICAgICAgY29kZXdvcmQgPj49IDE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIFBERjQxN1NjYW5uaW5nRGVjb2Rlci5nZXRDb2Rld29yZEJ1Y2tldE51bWJlciA9IGZ1bmN0aW9uIChjb2Rld29yZCkge1xuICAgICAgICBpZiAoY29kZXdvcmQgaW5zdGFuY2VvZiBJbnQzMkFycmF5KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRDb2Rld29yZEJ1Y2tldE51bWJlcl9JbnQzMkFycmF5KGNvZGV3b3JkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5nZXRDb2Rld29yZEJ1Y2tldE51bWJlcl9udW1iZXIoY29kZXdvcmQpO1xuICAgIH07XG4gICAgUERGNDE3U2Nhbm5pbmdEZWNvZGVyLmdldENvZGV3b3JkQnVja2V0TnVtYmVyX251bWJlciA9IGZ1bmN0aW9uIChjb2Rld29yZCkge1xuICAgICAgICByZXR1cm4gUERGNDE3U2Nhbm5pbmdEZWNvZGVyLmdldENvZGV3b3JkQnVja2V0TnVtYmVyKFBERjQxN1NjYW5uaW5nRGVjb2Rlci5nZXRCaXRDb3VudEZvckNvZGV3b3JkKGNvZGV3b3JkKSk7XG4gICAgfTtcbiAgICBQREY0MTdTY2FubmluZ0RlY29kZXIuZ2V0Q29kZXdvcmRCdWNrZXROdW1iZXJfSW50MzJBcnJheSA9IGZ1bmN0aW9uIChtb2R1bGVCaXRDb3VudCkge1xuICAgICAgICByZXR1cm4gKG1vZHVsZUJpdENvdW50WzBdIC0gbW9kdWxlQml0Q291bnRbMl0gKyBtb2R1bGVCaXRDb3VudFs0XSAtIG1vZHVsZUJpdENvdW50WzZdICsgOSkgJSA5O1xuICAgIH07XG4gICAgUERGNDE3U2Nhbm5pbmdEZWNvZGVyLnRvU3RyaW5nID0gZnVuY3Rpb24gKGJhcmNvZGVNYXRyaXgpIHtcbiAgICAgICAgdmFyIGZvcm1hdHRlciA9IG5ldyBGb3JtYXR0ZXJfMS5kZWZhdWx0KCk7XG4gICAgICAgIC8vIHRyeSAobGV0IGZvcm1hdHRlciA9IG5ldyBGb3JtYXR0ZXIoKSkge1xuICAgICAgICBmb3IgKHZhciByb3cgLyppbnQqLyA9IDA7IHJvdyA8IGJhcmNvZGVNYXRyaXgubGVuZ3RoOyByb3crKykge1xuICAgICAgICAgICAgZm9ybWF0dGVyLmZvcm1hdCgnUm93ICUyZDogJywgcm93KTtcbiAgICAgICAgICAgIGZvciAodmFyIGNvbHVtbiAvKmludCovID0gMDsgY29sdW1uIDwgYmFyY29kZU1hdHJpeFtyb3ddLmxlbmd0aDsgY29sdW1uKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgYmFyY29kZVZhbHVlID0gYmFyY29kZU1hdHJpeFtyb3ddW2NvbHVtbl07XG4gICAgICAgICAgICAgICAgaWYgKGJhcmNvZGVWYWx1ZS5nZXRWYWx1ZSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZXIuZm9ybWF0KCcgICAgICAgICcsIG51bGwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyLmZvcm1hdCgnJTRkKCUyZCknLCBiYXJjb2RlVmFsdWUuZ2V0VmFsdWUoKVswXSwgYmFyY29kZVZhbHVlLmdldENvbmZpZGVuY2UoYmFyY29kZVZhbHVlLmdldFZhbHVlKClbMF0pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3JtYXR0ZXIuZm9ybWF0KCclbicpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmb3JtYXR0ZXIudG9TdHJpbmcoKTtcbiAgICAgICAgLy8gfVxuICAgIH07XG4gICAgLypmaW5hbCovIFBERjQxN1NjYW5uaW5nRGVjb2Rlci5DT0RFV09SRF9TS0VXX1NJWkUgPSAyO1xuICAgIC8qZmluYWwqLyBQREY0MTdTY2FubmluZ0RlY29kZXIuTUFYX0VSUk9SUyA9IDM7XG4gICAgLypmaW5hbCovIFBERjQxN1NjYW5uaW5nRGVjb2Rlci5NQVhfRUNfQ09ERVdPUkRTID0gNTEyO1xuICAgIC8qZmluYWwqLyBQREY0MTdTY2FubmluZ0RlY29kZXIuZXJyb3JDb3JyZWN0aW9uID0gbmV3IEVycm9yQ29ycmVjdGlvbl8xLmRlZmF1bHQoKTtcbiAgICByZXR1cm4gUERGNDE3U2Nhbm5pbmdEZWNvZGVyO1xufSgpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IFBERjQxN1NjYW5uaW5nRGVjb2Rlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVBERjQxN1NjYW5uaW5nRGVjb2Rlci5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8qXG4gKiBDb3B5cmlnaHQgMjAwOSBaWGluZyBhdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIF9fdmFsdWVzID0gKHRoaXMgJiYgdGhpcy5fX3ZhbHVlcykgfHwgZnVuY3Rpb24obykge1xuICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xuICAgICAgICB9XG4gICAgfTtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLy8gcGFja2FnZSBjb20uZ29vZ2xlLnp4aW5nLnBkZjQxNztcbi8vIGltcG9ydCBjb20uZ29vZ2xlLnp4aW5nLkJhcmNvZGVGb3JtYXQ7XG52YXIgQmFyY29kZUZvcm1hdF8xID0gcmVxdWlyZShcIi4uL0JhcmNvZGVGb3JtYXRcIik7XG4vLyBpbXBvcnQgY29tLmdvb2dsZS56eGluZy5DaGVja3N1bUV4Y2VwdGlvbjtcbnZhciBDaGVja3N1bUV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4uL0NoZWNrc3VtRXhjZXB0aW9uXCIpO1xuLy8gaW1wb3J0IGNvbS5nb29nbGUuenhpbmcuRm9ybWF0RXhjZXB0aW9uO1xudmFyIEZvcm1hdEV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4uL0Zvcm1hdEV4Y2VwdGlvblwiKTtcbi8vIGltcG9ydCBjb20uZ29vZ2xlLnp4aW5nLk5vdEZvdW5kRXhjZXB0aW9uO1xudmFyIE5vdEZvdW5kRXhjZXB0aW9uXzEgPSByZXF1aXJlKFwiLi4vTm90Rm91bmRFeGNlcHRpb25cIik7XG4vLyBpbXBvcnQgY29tLmdvb2dsZS56eGluZy5SZXN1bHQ7XG52YXIgUmVzdWx0XzEgPSByZXF1aXJlKFwiLi4vUmVzdWx0XCIpO1xuLy8gaW1wb3J0IGNvbS5nb29nbGUuenhpbmcuY29tbW9uLkRlY29kZXJSZXN1bHQ7XG4vLyBpbXBvcnQgY29tLmdvb2dsZS56eGluZy5tdWx0aS5NdWx0aXBsZUJhcmNvZGVSZWFkZXI7XG4vLyBpbXBvcnQgY29tLmdvb2dsZS56eGluZy5wZGY0MTcuZGVjb2Rlci5QREY0MTdTY2FubmluZ0RlY29kZXI7XG4vLyBpbXBvcnQgY29tLmdvb2dsZS56eGluZy5wZGY0MTcuZGV0ZWN0b3IuRGV0ZWN0b3I7XG4vLyBpbXBvcnQgY29tLmdvb2dsZS56eGluZy5wZGY0MTcuZGV0ZWN0b3IuUERGNDE3RGV0ZWN0b3JSZXN1bHQ7XG52YXIgUERGNDE3Q29tbW9uXzEgPSByZXF1aXJlKFwiLi9QREY0MTdDb21tb25cIik7XG52YXIgSW50ZWdlcl8xID0gcmVxdWlyZShcIi4uL3V0aWwvSW50ZWdlclwiKTtcbnZhciBSZXN1bHRNZXRhZGF0YVR5cGVfMSA9IHJlcXVpcmUoXCIuLi9SZXN1bHRNZXRhZGF0YVR5cGVcIik7XG52YXIgRGV0ZWN0b3JfMSA9IHJlcXVpcmUoXCIuL2RldGVjdG9yL0RldGVjdG9yXCIpO1xudmFyIFBERjQxN1NjYW5uaW5nRGVjb2Rlcl8xID0gcmVxdWlyZShcIi4vZGVjb2Rlci9QREY0MTdTY2FubmluZ0RlY29kZXJcIik7XG4vLyBpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDtcbi8vIGltcG9ydCBqYXZhLnV0aWwuTGlzdDtcbi8vIGltcG9ydCBqYXZhLnV0aWwuTWFwO1xuLyoqXG4gKiBUaGlzIGltcGxlbWVudGF0aW9uIGNhbiBkZXRlY3QgYW5kIGRlY29kZSBQREY0MTcgY29kZXMgaW4gYW4gaW1hZ2UuXG4gKlxuICogQGF1dGhvciBHdWVudGhlciBHcmF1XG4gKi9cbnZhciBQREY0MTdSZWFkZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gUERGNDE3UmVhZGVyKCkge1xuICAgIH1cbiAgICAvLyBwcml2YXRlIHN0YXRpYyAvKmZpbmFsIFJlc3VsdFtdKi8gRU1QVFlfUkVTVUxUX0FSUkFZOiBSZXN1bHRbXSA9IG5ldyBSZXN1bHQoWzBdKTtcbiAgICAvKipcbiAgICAgKiBMb2NhdGVzIGFuZCBkZWNvZGVzIGEgUERGNDE3IGNvZGUgaW4gYW4gaW1hZ2UuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIGEgU3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY29udGVudCBlbmNvZGVkIGJ5IHRoZSBQREY0MTcgY29kZVxuICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb24gaWYgYSBQREY0MTcgY29kZSBjYW5ub3QgYmUgZm91bmQsXG4gICAgICogQHRocm93cyBGb3JtYXRFeGNlcHRpb24gaWYgYSBQREY0MTcgY2Fubm90IGJlIGRlY29kZWRcbiAgICAgKiBAdGhyb3dzIENoZWNrc3VtRXhjZXB0aW9uXG4gICAgICovXG4gICAgLy8gQE92ZXJyaWRlXG4gICAgUERGNDE3UmVhZGVyLnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbiAoaW1hZ2UsIGhpbnRzKSB7XG4gICAgICAgIGlmIChoaW50cyA9PT0gdm9pZCAwKSB7IGhpbnRzID0gbnVsbDsgfVxuICAgICAgICB2YXIgcmVzdWx0ID0gUERGNDE3UmVhZGVyLmRlY29kZShpbWFnZSwgaGludHMsIGZhbHNlKTtcbiAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsIHx8IHJlc3VsdC5sZW5ndGggPT09IDAgfHwgcmVzdWx0WzBdID09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IE5vdEZvdW5kRXhjZXB0aW9uXzEuZGVmYXVsdC5nZXROb3RGb3VuZEluc3RhbmNlKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdFswXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIEJpbmFyeUJpdG1hcFxuICAgICAqIEBwYXJhbSBpbWFnZVxuICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb25cbiAgICAgKi9cbiAgICAvLyAgIEBPdmVycmlkZVxuICAgIFBERjQxN1JlYWRlci5wcm90b3R5cGUuZGVjb2RlTXVsdGlwbGUgPSBmdW5jdGlvbiAoaW1hZ2UsIGhpbnRzKSB7XG4gICAgICAgIGlmIChoaW50cyA9PT0gdm9pZCAwKSB7IGhpbnRzID0gbnVsbDsgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIFBERjQxN1JlYWRlci5kZWNvZGUoaW1hZ2UsIGhpbnRzLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoaWdub3JlZCkge1xuICAgICAgICAgICAgaWYgKGlnbm9yZWQgaW5zdGFuY2VvZiBGb3JtYXRFeGNlcHRpb25fMS5kZWZhdWx0IHx8IGlnbm9yZWQgaW5zdGFuY2VvZiBDaGVja3N1bUV4Y2VwdGlvbl8xLmRlZmF1bHQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBOb3RGb3VuZEV4Y2VwdGlvbl8xLmRlZmF1bHQuZ2V0Tm90Rm91bmRJbnN0YW5jZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhyb3cgaWdub3JlZDtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaW1hZ2VcbiAgICAgKiBAcGFyYW0gaGludHNcbiAgICAgKiBAcGFyYW0gbXVsdGlwbGVcbiAgICAgKlxuICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb25cbiAgICAgKiBAdGhyb3dzIEZvcm1hdEV4Y2VwdGlvbsOfXG4gICAgICogQHRocm93cyBDaGVja3N1bUV4Y2VwdGlvblxuICAgICAqL1xuICAgIFBERjQxN1JlYWRlci5kZWNvZGUgPSBmdW5jdGlvbiAoaW1hZ2UsIGhpbnRzLCBtdWx0aXBsZSkge1xuICAgICAgICB2YXIgZV8xLCBfYTtcbiAgICAgICAgdmFyIHJlc3VsdHMgPSBuZXcgQXJyYXkoKTtcbiAgICAgICAgdmFyIGRldGVjdG9yUmVzdWx0ID0gRGV0ZWN0b3JfMS5kZWZhdWx0LmRldGVjdE11bHRpcGxlKGltYWdlLCBoaW50cywgbXVsdGlwbGUpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yICh2YXIgX2IgPSBfX3ZhbHVlcyhkZXRlY3RvclJlc3VsdC5nZXRQb2ludHMoKSksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgcG9pbnRzID0gX2MudmFsdWU7XG4gICAgICAgICAgICAgICAgdmFyIGRlY29kZXJSZXN1bHQgPSBQREY0MTdTY2FubmluZ0RlY29kZXJfMS5kZWZhdWx0LmRlY29kZShkZXRlY3RvclJlc3VsdC5nZXRCaXRzKCksIHBvaW50c1s0XSwgcG9pbnRzWzVdLCBwb2ludHNbNl0sIHBvaW50c1s3XSwgUERGNDE3UmVhZGVyLmdldE1pbkNvZGV3b3JkV2lkdGgocG9pbnRzKSwgUERGNDE3UmVhZGVyLmdldE1heENvZGV3b3JkV2lkdGgocG9pbnRzKSk7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBSZXN1bHRfMS5kZWZhdWx0KGRlY29kZXJSZXN1bHQuZ2V0VGV4dCgpLCBkZWNvZGVyUmVzdWx0LmdldFJhd0J5dGVzKCksIHVuZGVmaW5lZCwgcG9pbnRzLCBCYXJjb2RlRm9ybWF0XzEuZGVmYXVsdC5QREZfNDE3KTtcbiAgICAgICAgICAgICAgICByZXN1bHQucHV0TWV0YWRhdGEoUmVzdWx0TWV0YWRhdGFUeXBlXzEuZGVmYXVsdC5FUlJPUl9DT1JSRUNUSU9OX0xFVkVMLCBkZWNvZGVyUmVzdWx0LmdldEVDTGV2ZWwoKSk7XG4gICAgICAgICAgICAgICAgdmFyIHBkZjQxN1Jlc3VsdE1ldGFkYXRhID0gZGVjb2RlclJlc3VsdC5nZXRPdGhlcigpO1xuICAgICAgICAgICAgICAgIGlmIChwZGY0MTdSZXN1bHRNZXRhZGF0YSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXRNZXRhZGF0YShSZXN1bHRNZXRhZGF0YVR5cGVfMS5kZWZhdWx0LlBERjQxN19FWFRSQV9NRVRBREFUQSwgcGRmNDE3UmVzdWx0TWV0YWRhdGEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXN1bHRzLnB1c2gocmVzdWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHRzLm1hcChmdW5jdGlvbiAoeCkgeyByZXR1cm4geDsgfSk7XG4gICAgfTtcbiAgICBQREY0MTdSZWFkZXIuZ2V0TWF4V2lkdGggPSBmdW5jdGlvbiAocDEsIHAyKSB7XG4gICAgICAgIGlmIChwMSA9PSBudWxsIHx8IHAyID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBNYXRoLnRydW5jKE1hdGguYWJzKHAxLmdldFgoKSAtIHAyLmdldFgoKSkpO1xuICAgIH07XG4gICAgUERGNDE3UmVhZGVyLmdldE1pbldpZHRoID0gZnVuY3Rpb24gKHAxLCBwMikge1xuICAgICAgICBpZiAocDEgPT0gbnVsbCB8fCBwMiA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gSW50ZWdlcl8xLmRlZmF1bHQuTUFYX1ZBTFVFO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBNYXRoLnRydW5jKE1hdGguYWJzKHAxLmdldFgoKSAtIHAyLmdldFgoKSkpO1xuICAgIH07XG4gICAgUERGNDE3UmVhZGVyLmdldE1heENvZGV3b3JkV2lkdGggPSBmdW5jdGlvbiAocCkge1xuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihNYXRoLm1heChNYXRoLm1heChQREY0MTdSZWFkZXIuZ2V0TWF4V2lkdGgocFswXSwgcFs0XSksIFBERjQxN1JlYWRlci5nZXRNYXhXaWR0aChwWzZdLCBwWzJdKSAqIFBERjQxN0NvbW1vbl8xLmRlZmF1bHQuTU9EVUxFU19JTl9DT0RFV09SRCAvXG4gICAgICAgICAgICBQREY0MTdDb21tb25fMS5kZWZhdWx0Lk1PRFVMRVNfSU5fU1RPUF9QQVRURVJOKSwgTWF0aC5tYXgoUERGNDE3UmVhZGVyLmdldE1heFdpZHRoKHBbMV0sIHBbNV0pLCBQREY0MTdSZWFkZXIuZ2V0TWF4V2lkdGgocFs3XSwgcFszXSkgKiBQREY0MTdDb21tb25fMS5kZWZhdWx0Lk1PRFVMRVNfSU5fQ09ERVdPUkQgL1xuICAgICAgICAgICAgUERGNDE3Q29tbW9uXzEuZGVmYXVsdC5NT0RVTEVTX0lOX1NUT1BfUEFUVEVSTikpKTtcbiAgICB9O1xuICAgIFBERjQxN1JlYWRlci5nZXRNaW5Db2Rld29yZFdpZHRoID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5taW4oTWF0aC5taW4oUERGNDE3UmVhZGVyLmdldE1pbldpZHRoKHBbMF0sIHBbNF0pLCBQREY0MTdSZWFkZXIuZ2V0TWluV2lkdGgocFs2XSwgcFsyXSkgKiBQREY0MTdDb21tb25fMS5kZWZhdWx0Lk1PRFVMRVNfSU5fQ09ERVdPUkQgL1xuICAgICAgICAgICAgUERGNDE3Q29tbW9uXzEuZGVmYXVsdC5NT0RVTEVTX0lOX1NUT1BfUEFUVEVSTiksIE1hdGgubWluKFBERjQxN1JlYWRlci5nZXRNaW5XaWR0aChwWzFdLCBwWzVdKSwgUERGNDE3UmVhZGVyLmdldE1pbldpZHRoKHBbN10sIHBbM10pICogUERGNDE3Q29tbW9uXzEuZGVmYXVsdC5NT0RVTEVTX0lOX0NPREVXT1JEIC9cbiAgICAgICAgICAgIFBERjQxN0NvbW1vbl8xLmRlZmF1bHQuTU9EVUxFU19JTl9TVE9QX1BBVFRFUk4pKSk7XG4gICAgfTtcbiAgICAvLyBAT3ZlcnJpZGVcbiAgICBQREY0MTdSZWFkZXIucHJvdG90eXBlLnJlc2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBub3RoaW5nIG5lZWRzIHRvIGJlIHJlc2V0XG4gICAgfTtcbiAgICByZXR1cm4gUERGNDE3UmVhZGVyO1xufSgpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IFBERjQxN1JlYWRlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVBERjQxN1JlYWRlci5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIEV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4vRXhjZXB0aW9uXCIpO1xuLyoqXG4gKiBDdXN0b20gRXJyb3IgY2xhc3Mgb2YgdHlwZSBFeGNlcHRpb24uXG4gKi9cbnZhciBSZWFkZXJFeGNlcHRpb24gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFJlYWRlckV4Y2VwdGlvbiwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBSZWFkZXJFeGNlcHRpb24oKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgUmVhZGVyRXhjZXB0aW9uLmtpbmQgPSAnUmVhZGVyRXhjZXB0aW9uJztcbiAgICByZXR1cm4gUmVhZGVyRXhjZXB0aW9uO1xufShFeGNlcHRpb25fMS5kZWZhdWx0KSk7XG5leHBvcnRzLmRlZmF1bHQgPSBSZWFkZXJFeGNlcHRpb247XG4vLyMgc291cmNlTWFwcGluZ1VSTD1SZWFkZXJFeGNlcHRpb24uanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IDIwMDkgWlhpbmcgYXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbnZhciBfX3ZhbHVlcyA9ICh0aGlzICYmIHRoaXMuX192YWx1ZXMpIHx8IGZ1bmN0aW9uKG8pIHtcbiAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xuICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBEZWNvZGVIaW50VHlwZV8xID0gcmVxdWlyZShcIi4vRGVjb2RlSGludFR5cGVcIik7XG52YXIgQmFyY29kZUZvcm1hdF8xID0gcmVxdWlyZShcIi4vQmFyY29kZUZvcm1hdFwiKTtcbnZhciBRUkNvZGVSZWFkZXJfMSA9IHJlcXVpcmUoXCIuL3FyY29kZS9RUkNvZGVSZWFkZXJcIik7XG52YXIgQXp0ZWNSZWFkZXJfMSA9IHJlcXVpcmUoXCIuL2F6dGVjL0F6dGVjUmVhZGVyXCIpO1xudmFyIE11bHRpRm9ybWF0T25lRFJlYWRlcl8xID0gcmVxdWlyZShcIi4vb25lZC9NdWx0aUZvcm1hdE9uZURSZWFkZXJcIik7XG52YXIgRGF0YU1hdHJpeFJlYWRlcl8xID0gcmVxdWlyZShcIi4vZGF0YW1hdHJpeC9EYXRhTWF0cml4UmVhZGVyXCIpO1xudmFyIE5vdEZvdW5kRXhjZXB0aW9uXzEgPSByZXF1aXJlKFwiLi9Ob3RGb3VuZEV4Y2VwdGlvblwiKTtcbnZhciBQREY0MTdSZWFkZXJfMSA9IHJlcXVpcmUoXCIuL3BkZjQxNy9QREY0MTdSZWFkZXJcIik7XG52YXIgUmVhZGVyRXhjZXB0aW9uXzEgPSByZXF1aXJlKFwiLi9SZWFkZXJFeGNlcHRpb25cIik7XG4vKm5hbWVzcGFjZSBjb20uZ29vZ2xlLnp4aW5nIHsqL1xuLyoqXG4gKiBNdWx0aUZvcm1hdFJlYWRlciBpcyBhIGNvbnZlbmllbmNlIGNsYXNzIGFuZCB0aGUgbWFpbiBlbnRyeSBwb2ludCBpbnRvIHRoZSBsaWJyYXJ5IGZvciBtb3N0IHVzZXMuXG4gKiBCeSBkZWZhdWx0IGl0IGF0dGVtcHRzIHRvIGRlY29kZSBhbGwgYmFyY29kZSBmb3JtYXRzIHRoYXQgdGhlIGxpYnJhcnkgc3VwcG9ydHMuIE9wdGlvbmFsbHksIHlvdVxuICogY2FuIHByb3ZpZGUgYSBoaW50cyBvYmplY3QgdG8gcmVxdWVzdCBkaWZmZXJlbnQgYmVoYXZpb3IsIGZvciBleGFtcGxlIG9ubHkgZGVjb2RpbmcgUVIgY29kZXMuXG4gKlxuICogQGF1dGhvciBTZWFuIE93ZW5cbiAqIEBhdXRob3IgZHN3aXRraW5AZ29vZ2xlLmNvbSAoRGFuaWVsIFN3aXRraW4pXG4gKi9cbnZhciBNdWx0aUZvcm1hdFJlYWRlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBNdWx0aUZvcm1hdFJlYWRlcigpIHtcbiAgICB9XG4gICAgLyoqXG4gICAgICogVGhpcyB2ZXJzaW9uIG9mIGRlY29kZSBob25vcnMgdGhlIGludGVudCBvZiBSZWFkZXIuZGVjb2RlKEJpbmFyeUJpdG1hcCkgaW4gdGhhdCBpdFxuICAgICAqIHBhc3NlcyBudWxsIGFzIGEgaGludCB0byB0aGUgZGVjb2RlcnMuIEhvd2V2ZXIsIHRoYXQgbWFrZXMgaXQgaW5lZmZpY2llbnQgdG8gY2FsbCByZXBlYXRlZGx5LlxuICAgICAqIFVzZSBzZXRIaW50cygpIGZvbGxvd2VkIGJ5IGRlY29kZVdpdGhTdGF0ZSgpIGZvciBjb250aW51b3VzIHNjYW4gYXBwbGljYXRpb25zLlxuICAgICAqXG4gICAgICogQHBhcmFtIGltYWdlIFRoZSBwaXhlbCBkYXRhIHRvIGRlY29kZVxuICAgICAqIEByZXR1cm4gVGhlIGNvbnRlbnRzIG9mIHRoZSBpbWFnZVxuICAgICAqXG4gICAgICogQHRocm93cyBOb3RGb3VuZEV4Y2VwdGlvbiBBbnkgZXJyb3JzIHdoaWNoIG9jY3VycmVkXG4gICAgICovXG4gICAgLypAT3ZlcnJpZGUqL1xuICAgIC8vIHB1YmxpYyBkZWNvZGUoaW1hZ2U6IEJpbmFyeUJpdG1hcCk6IFJlc3VsdCB7XG4gICAgLy8gICBzZXRIaW50cyhudWxsKVxuICAgIC8vICAgcmV0dXJuIGRlY29kZUludGVybmFsKGltYWdlKVxuICAgIC8vIH1cbiAgICAvKipcbiAgICAgKiBEZWNvZGUgYW4gaW1hZ2UgdXNpbmcgdGhlIGhpbnRzIHByb3ZpZGVkLiBEb2VzIG5vdCBob25vciBleGlzdGluZyBzdGF0ZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBpbWFnZSBUaGUgcGl4ZWwgZGF0YSB0byBkZWNvZGVcbiAgICAgKiBAcGFyYW0gaGludHMgVGhlIGhpbnRzIHRvIHVzZSwgY2xlYXJpbmcgdGhlIHByZXZpb3VzIHN0YXRlLlxuICAgICAqIEByZXR1cm4gVGhlIGNvbnRlbnRzIG9mIHRoZSBpbWFnZVxuICAgICAqXG4gICAgICogQHRocm93cyBOb3RGb3VuZEV4Y2VwdGlvbiBBbnkgZXJyb3JzIHdoaWNoIG9jY3VycmVkXG4gICAgICovXG4gICAgLypAT3ZlcnJpZGUqL1xuICAgIE11bHRpRm9ybWF0UmVhZGVyLnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbiAoaW1hZ2UsIGhpbnRzKSB7XG4gICAgICAgIHRoaXMuc2V0SGludHMoaGludHMpO1xuICAgICAgICByZXR1cm4gdGhpcy5kZWNvZGVJbnRlcm5hbChpbWFnZSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBEZWNvZGUgYW4gaW1hZ2UgdXNpbmcgdGhlIHN0YXRlIHNldCB1cCBieSBjYWxsaW5nIHNldEhpbnRzKCkgcHJldmlvdXNseS4gQ29udGludW91cyBzY2FuXG4gICAgICogY2xpZW50cyB3aWxsIGdldCBhIDxiPmxhcmdlPC9iPiBzcGVlZCBpbmNyZWFzZSBieSB1c2luZyB0aGlzIGluc3RlYWQgb2YgZGVjb2RlKCkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaW1hZ2UgVGhlIHBpeGVsIGRhdGEgdG8gZGVjb2RlXG4gICAgICogQHJldHVybiBUaGUgY29udGVudHMgb2YgdGhlIGltYWdlXG4gICAgICpcbiAgICAgKiBAdGhyb3dzIE5vdEZvdW5kRXhjZXB0aW9uIEFueSBlcnJvcnMgd2hpY2ggb2NjdXJyZWRcbiAgICAgKi9cbiAgICBNdWx0aUZvcm1hdFJlYWRlci5wcm90b3R5cGUuZGVjb2RlV2l0aFN0YXRlID0gZnVuY3Rpb24gKGltYWdlKSB7XG4gICAgICAgIC8vIE1ha2Ugc3VyZSB0byBzZXQgdXAgdGhlIGRlZmF1bHQgc3RhdGUgc28gd2UgZG9uJ3QgY3Jhc2hcbiAgICAgICAgaWYgKHRoaXMucmVhZGVycyA9PT0gbnVsbCB8fCB0aGlzLnJlYWRlcnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5zZXRIaW50cyhudWxsKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5kZWNvZGVJbnRlcm5hbChpbWFnZSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBhZGRzIHN0YXRlIHRvIHRoZSBNdWx0aUZvcm1hdFJlYWRlci4gQnkgc2V0dGluZyB0aGUgaGludHMgb25jZSwgc3Vic2VxdWVudCBjYWxsc1xuICAgICAqIHRvIGRlY29kZVdpdGhTdGF0ZShpbWFnZSkgY2FuIHJldXNlIHRoZSBzYW1lIHNldCBvZiByZWFkZXJzIHdpdGhvdXQgcmVhbGxvY2F0aW5nIG1lbW9yeS4gVGhpc1xuICAgICAqIGlzIGltcG9ydGFudCBmb3IgcGVyZm9ybWFuY2UgaW4gY29udGludW91cyBzY2FuIGNsaWVudHMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaGludHMgVGhlIHNldCBvZiBoaW50cyB0byB1c2UgZm9yIHN1YnNlcXVlbnQgY2FsbHMgdG8gZGVjb2RlKGltYWdlKVxuICAgICAqL1xuICAgIE11bHRpRm9ybWF0UmVhZGVyLnByb3RvdHlwZS5zZXRIaW50cyA9IGZ1bmN0aW9uIChoaW50cykge1xuICAgICAgICB0aGlzLmhpbnRzID0gaGludHM7XG4gICAgICAgIHZhciB0cnlIYXJkZXIgPSBoaW50cyAhPT0gbnVsbCAmJiBoaW50cyAhPT0gdW5kZWZpbmVkICYmIHVuZGVmaW5lZCAhPT0gaGludHMuZ2V0KERlY29kZUhpbnRUeXBlXzEuZGVmYXVsdC5UUllfSEFSREVSKTtcbiAgICAgICAgLypAU3VwcHJlc3NXYXJuaW5ncyhcInVuY2hlY2tlZFwiKSovXG4gICAgICAgIHZhciBmb3JtYXRzID0gaGludHMgPT09IG51bGwgfHwgaGludHMgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBoaW50cy5nZXQoRGVjb2RlSGludFR5cGVfMS5kZWZhdWx0LlBPU1NJQkxFX0ZPUk1BVFMpO1xuICAgICAgICB2YXIgcmVhZGVycyA9IG5ldyBBcnJheSgpO1xuICAgICAgICBpZiAoZm9ybWF0cyAhPT0gbnVsbCAmJiBmb3JtYXRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHZhciBhZGRPbmVEUmVhZGVyID0gZm9ybWF0cy5zb21lKGZ1bmN0aW9uIChmKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGYgPT09IEJhcmNvZGVGb3JtYXRfMS5kZWZhdWx0LlVQQ19BIHx8XG4gICAgICAgICAgICAgICAgICAgIGYgPT09IEJhcmNvZGVGb3JtYXRfMS5kZWZhdWx0LlVQQ19FIHx8XG4gICAgICAgICAgICAgICAgICAgIGYgPT09IEJhcmNvZGVGb3JtYXRfMS5kZWZhdWx0LkVBTl8xMyB8fFxuICAgICAgICAgICAgICAgICAgICBmID09PSBCYXJjb2RlRm9ybWF0XzEuZGVmYXVsdC5FQU5fOCB8fFxuICAgICAgICAgICAgICAgICAgICBmID09PSBCYXJjb2RlRm9ybWF0XzEuZGVmYXVsdC5DT0RBQkFSIHx8XG4gICAgICAgICAgICAgICAgICAgIGYgPT09IEJhcmNvZGVGb3JtYXRfMS5kZWZhdWx0LkNPREVfMzkgfHxcbiAgICAgICAgICAgICAgICAgICAgZiA9PT0gQmFyY29kZUZvcm1hdF8xLmRlZmF1bHQuQ09ERV85MyB8fFxuICAgICAgICAgICAgICAgICAgICBmID09PSBCYXJjb2RlRm9ybWF0XzEuZGVmYXVsdC5DT0RFXzEyOCB8fFxuICAgICAgICAgICAgICAgICAgICBmID09PSBCYXJjb2RlRm9ybWF0XzEuZGVmYXVsdC5JVEYgfHxcbiAgICAgICAgICAgICAgICAgICAgZiA9PT0gQmFyY29kZUZvcm1hdF8xLmRlZmF1bHQuUlNTXzE0IHx8XG4gICAgICAgICAgICAgICAgICAgIGYgPT09IEJhcmNvZGVGb3JtYXRfMS5kZWZhdWx0LlJTU19FWFBBTkRFRDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gUHV0IDFEIHJlYWRlcnMgdXBmcm9udCBpbiBcIm5vcm1hbFwiIG1vZGVcbiAgICAgICAgICAgIC8vIFRZUEVTQ1JJUFRQT1JUOiBUT0RPOiB1bmNvbW1lbnQgYmVsb3cgYXMgdGhleSBhcmUgcG9ydGVkXG4gICAgICAgICAgICBpZiAoYWRkT25lRFJlYWRlciAmJiAhdHJ5SGFyZGVyKSB7XG4gICAgICAgICAgICAgICAgcmVhZGVycy5wdXNoKG5ldyBNdWx0aUZvcm1hdE9uZURSZWFkZXJfMS5kZWZhdWx0KGhpbnRzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZm9ybWF0cy5pbmNsdWRlcyhCYXJjb2RlRm9ybWF0XzEuZGVmYXVsdC5RUl9DT0RFKSkge1xuICAgICAgICAgICAgICAgIHJlYWRlcnMucHVzaChuZXcgUVJDb2RlUmVhZGVyXzEuZGVmYXVsdCgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChmb3JtYXRzLmluY2x1ZGVzKEJhcmNvZGVGb3JtYXRfMS5kZWZhdWx0LkRBVEFfTUFUUklYKSkge1xuICAgICAgICAgICAgICAgIHJlYWRlcnMucHVzaChuZXcgRGF0YU1hdHJpeFJlYWRlcl8xLmRlZmF1bHQoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZm9ybWF0cy5pbmNsdWRlcyhCYXJjb2RlRm9ybWF0XzEuZGVmYXVsdC5BWlRFQykpIHtcbiAgICAgICAgICAgICAgICByZWFkZXJzLnB1c2gobmV3IEF6dGVjUmVhZGVyXzEuZGVmYXVsdCgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChmb3JtYXRzLmluY2x1ZGVzKEJhcmNvZGVGb3JtYXRfMS5kZWZhdWx0LlBERl80MTcpKSB7XG4gICAgICAgICAgICAgICAgcmVhZGVycy5wdXNoKG5ldyBQREY0MTdSZWFkZXJfMS5kZWZhdWx0KCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gaWYgKGZvcm1hdHMuaW5jbHVkZXMoQmFyY29kZUZvcm1hdC5NQVhJQ09ERSkpIHtcbiAgICAgICAgICAgIC8vICAgIHJlYWRlcnMucHVzaChuZXcgTWF4aUNvZGVSZWFkZXIoKSlcbiAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgIC8vIEF0IGVuZCBpbiBcInRyeSBoYXJkZXJcIiBtb2RlXG4gICAgICAgICAgICBpZiAoYWRkT25lRFJlYWRlciAmJiB0cnlIYXJkZXIpIHtcbiAgICAgICAgICAgICAgICByZWFkZXJzLnB1c2gobmV3IE11bHRpRm9ybWF0T25lRFJlYWRlcl8xLmRlZmF1bHQoaGludHMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAocmVhZGVycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGlmICghdHJ5SGFyZGVyKSB7XG4gICAgICAgICAgICAgICAgcmVhZGVycy5wdXNoKG5ldyBNdWx0aUZvcm1hdE9uZURSZWFkZXJfMS5kZWZhdWx0KGhpbnRzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZWFkZXJzLnB1c2gobmV3IFFSQ29kZVJlYWRlcl8xLmRlZmF1bHQoKSk7XG4gICAgICAgICAgICByZWFkZXJzLnB1c2gobmV3IERhdGFNYXRyaXhSZWFkZXJfMS5kZWZhdWx0KCkpO1xuICAgICAgICAgICAgcmVhZGVycy5wdXNoKG5ldyBBenRlY1JlYWRlcl8xLmRlZmF1bHQoKSk7XG4gICAgICAgICAgICByZWFkZXJzLnB1c2gobmV3IFBERjQxN1JlYWRlcl8xLmRlZmF1bHQoKSk7XG4gICAgICAgICAgICAvLyByZWFkZXJzLnB1c2gobmV3IE1heGlDb2RlUmVhZGVyKCkpXG4gICAgICAgICAgICBpZiAodHJ5SGFyZGVyKSB7XG4gICAgICAgICAgICAgICAgcmVhZGVycy5wdXNoKG5ldyBNdWx0aUZvcm1hdE9uZURSZWFkZXJfMS5kZWZhdWx0KGhpbnRzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZWFkZXJzID0gcmVhZGVyczsgLy8gLnRvQXJyYXkobmV3IFJlYWRlcltyZWFkZXJzLnNpemUoKV0pXG4gICAgfTtcbiAgICAvKkBPdmVycmlkZSovXG4gICAgTXVsdGlGb3JtYXRSZWFkZXIucHJvdG90eXBlLnJlc2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZV8xLCBfYTtcbiAgICAgICAgaWYgKHRoaXMucmVhZGVycyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKHRoaXMucmVhZGVycyksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlYWRlciA9IF9jLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICByZWFkZXIucmVzZXQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfVxuICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEB0aHJvd3MgTm90Rm91bmRFeGNlcHRpb25cbiAgICAgKi9cbiAgICBNdWx0aUZvcm1hdFJlYWRlci5wcm90b3R5cGUuZGVjb2RlSW50ZXJuYWwgPSBmdW5jdGlvbiAoaW1hZ2UpIHtcbiAgICAgICAgdmFyIGVfMiwgX2E7XG4gICAgICAgIGlmICh0aGlzLnJlYWRlcnMgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBSZWFkZXJFeGNlcHRpb25fMS5kZWZhdWx0KCdObyByZWFkZXJzIHdoZXJlIHNlbGVjdGVkLCBub3RoaW5nIGNhbiBiZSByZWFkLicpO1xuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKHRoaXMucmVhZGVycyksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVhZGVyID0gX2MudmFsdWU7XG4gICAgICAgICAgICAgICAgLy8gVHJ5aW5nIHRvIGRlY29kZSB3aXRoICR7cmVhZGVyfSByZWFkZXIuXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlYWRlci5kZWNvZGUoaW1hZ2UsIHRoaXMuaGludHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV4IGluc3RhbmNlb2YgUmVhZGVyRXhjZXB0aW9uXzEuZGVmYXVsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gQmFkIEV4Y2VwdGlvbi5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVfMl8xKSB7IGVfMiA9IHsgZXJyb3I6IGVfMl8xIH07IH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChfYyAmJiAhX2MuZG9uZSAmJiAoX2EgPSBfYi5yZXR1cm4pKSBfYS5jYWxsKF9iKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8yKSB0aHJvdyBlXzIuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0KCdObyBNdWx0aUZvcm1hdCBSZWFkZXJzIHdlcmUgYWJsZSB0byBkZXRlY3QgdGhlIGNvZGUuJyk7XG4gICAgfTtcbiAgICByZXR1cm4gTXVsdGlGb3JtYXRSZWFkZXI7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gTXVsdGlGb3JtYXRSZWFkZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1NdWx0aUZvcm1hdFJlYWRlci5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Ccm93c2VyTXVsdGlGb3JtYXRSZWFkZXIgPSB2b2lkIDA7XG52YXIgQnJvd3NlckNvZGVSZWFkZXJfMSA9IHJlcXVpcmUoXCIuL0Jyb3dzZXJDb2RlUmVhZGVyXCIpO1xudmFyIE11bHRpRm9ybWF0UmVhZGVyXzEgPSByZXF1aXJlKFwiLi4vY29yZS9NdWx0aUZvcm1hdFJlYWRlclwiKTtcbnZhciBCcm93c2VyTXVsdGlGb3JtYXRSZWFkZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEJyb3dzZXJNdWx0aUZvcm1hdFJlYWRlciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBCcm93c2VyTXVsdGlGb3JtYXRSZWFkZXIoaGludHMsIHRpbWVCZXR3ZWVuU2NhbnNNaWxsaXMpIHtcbiAgICAgICAgaWYgKGhpbnRzID09PSB2b2lkIDApIHsgaGludHMgPSBudWxsOyB9XG4gICAgICAgIGlmICh0aW1lQmV0d2VlblNjYW5zTWlsbGlzID09PSB2b2lkIDApIHsgdGltZUJldHdlZW5TY2Fuc01pbGxpcyA9IDUwMDsgfVxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgcmVhZGVyID0gbmV3IE11bHRpRm9ybWF0UmVhZGVyXzEuZGVmYXVsdCgpO1xuICAgICAgICByZWFkZXIuc2V0SGludHMoaGludHMpO1xuICAgICAgICBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIHJlYWRlciwgdGltZUJldHdlZW5TY2Fuc01pbGxpcykgfHwgdGhpcztcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBPdmVyd3JpdGUgZGVjb2RlQml0bWFwIHRvIGNhbGwgZGVjb2RlV2l0aFN0YXRlLCB3aGljaCB3aWxsIHBheVxuICAgICAqIGF0dGVudGlvbiB0byB0aGUgaGludHMgc2V0IGluIHRoZSBjb25zdHJ1Y3RvciBmdW5jdGlvblxuICAgICAqL1xuICAgIEJyb3dzZXJNdWx0aUZvcm1hdFJlYWRlci5wcm90b3R5cGUuZGVjb2RlQml0bWFwID0gZnVuY3Rpb24gKGJpbmFyeUJpdG1hcCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWFkZXIuZGVjb2RlV2l0aFN0YXRlKGJpbmFyeUJpdG1hcCk7XG4gICAgfTtcbiAgICByZXR1cm4gQnJvd3Nlck11bHRpRm9ybWF0UmVhZGVyO1xufShCcm93c2VyQ29kZVJlYWRlcl8xLkJyb3dzZXJDb2RlUmVhZGVyKSk7XG5leHBvcnRzLkJyb3dzZXJNdWx0aUZvcm1hdFJlYWRlciA9IEJyb3dzZXJNdWx0aUZvcm1hdFJlYWRlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUJyb3dzZXJNdWx0aUZvcm1hdFJlYWRlci5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Ccm93c2VyUERGNDE3UmVhZGVyID0gdm9pZCAwO1xudmFyIEJyb3dzZXJDb2RlUmVhZGVyXzEgPSByZXF1aXJlKFwiLi9Ccm93c2VyQ29kZVJlYWRlclwiKTtcbnZhciBQREY0MTdSZWFkZXJfMSA9IHJlcXVpcmUoXCIuLi9jb3JlL3BkZjQxNy9QREY0MTdSZWFkZXJcIik7XG4vKipcbiAqIEBkZXByZWNhdGVkIE1vdmluZyB0byBAenhpbmcvYnJvd3NlclxuICpcbiAqIFFSIENvZGUgcmVhZGVyIHRvIHVzZSBmcm9tIGJyb3dzZXIuXG4gKi9cbnZhciBCcm93c2VyUERGNDE3UmVhZGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhCcm93c2VyUERGNDE3UmVhZGVyLCBfc3VwZXIpO1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgQnJvd3NlclBERjQxN1JlYWRlci5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3RpbWVCZXR3ZWVuU2NhbnNNaWxsaXM9NTAwXSB0aGUgdGltZSBkZWxheSBiZXR3ZWVuIHN1YnNlcXVlbnQgZGVjb2RlIHRyaWVzXG4gICAgICovXG4gICAgZnVuY3Rpb24gQnJvd3NlclBERjQxN1JlYWRlcih0aW1lQmV0d2VlblNjYW5zTWlsbGlzKSB7XG4gICAgICAgIGlmICh0aW1lQmV0d2VlblNjYW5zTWlsbGlzID09PSB2b2lkIDApIHsgdGltZUJldHdlZW5TY2Fuc01pbGxpcyA9IDUwMDsgfVxuICAgICAgICByZXR1cm4gX3N1cGVyLmNhbGwodGhpcywgbmV3IFBERjQxN1JlYWRlcl8xLmRlZmF1bHQoKSwgdGltZUJldHdlZW5TY2Fuc01pbGxpcykgfHwgdGhpcztcbiAgICB9XG4gICAgcmV0dXJuIEJyb3dzZXJQREY0MTdSZWFkZXI7XG59KEJyb3dzZXJDb2RlUmVhZGVyXzEuQnJvd3NlckNvZGVSZWFkZXIpKTtcbmV4cG9ydHMuQnJvd3NlclBERjQxN1JlYWRlciA9IEJyb3dzZXJQREY0MTdSZWFkZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Ccm93c2VyUERGNDE3UmVhZGVyLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkJyb3dzZXJRUkNvZGVSZWFkZXIgPSB2b2lkIDA7XG52YXIgQnJvd3NlckNvZGVSZWFkZXJfMSA9IHJlcXVpcmUoXCIuL0Jyb3dzZXJDb2RlUmVhZGVyXCIpO1xudmFyIFFSQ29kZVJlYWRlcl8xID0gcmVxdWlyZShcIi4uL2NvcmUvcXJjb2RlL1FSQ29kZVJlYWRlclwiKTtcbi8qKlxuICogQGRlcHJlY2F0ZWQgTW92aW5nIHRvIEB6eGluZy9icm93c2VyXG4gKlxuICogUVIgQ29kZSByZWFkZXIgdG8gdXNlIGZyb20gYnJvd3Nlci5cbiAqL1xudmFyIEJyb3dzZXJRUkNvZGVSZWFkZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEJyb3dzZXJRUkNvZGVSZWFkZXIsIF9zdXBlcik7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBCcm93c2VyUVJDb2RlUmVhZGVyLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbdGltZUJldHdlZW5TY2Fuc01pbGxpcz01MDBdIHRoZSB0aW1lIGRlbGF5IGJldHdlZW4gc3Vic2VxdWVudCBkZWNvZGUgdHJpZXNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBCcm93c2VyUVJDb2RlUmVhZGVyKHRpbWVCZXR3ZWVuU2NhbnNNaWxsaXMpIHtcbiAgICAgICAgaWYgKHRpbWVCZXR3ZWVuU2NhbnNNaWxsaXMgPT09IHZvaWQgMCkgeyB0aW1lQmV0d2VlblNjYW5zTWlsbGlzID0gNTAwOyB9XG4gICAgICAgIHJldHVybiBfc3VwZXIuY2FsbCh0aGlzLCBuZXcgUVJDb2RlUmVhZGVyXzEuZGVmYXVsdCgpLCB0aW1lQmV0d2VlblNjYW5zTWlsbGlzKSB8fCB0aGlzO1xuICAgIH1cbiAgICByZXR1cm4gQnJvd3NlclFSQ29kZVJlYWRlcjtcbn0oQnJvd3NlckNvZGVSZWFkZXJfMS5Ccm93c2VyQ29kZVJlYWRlcikpO1xuZXhwb3J0cy5Ccm93c2VyUVJDb2RlUmVhZGVyID0gQnJvd3NlclFSQ29kZVJlYWRlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUJyb3dzZXJRUkNvZGVSZWFkZXIuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IDIwMDkgWlhpbmcgYXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qbmFtZXNwYWNlIGNvbS5nb29nbGUuenhpbmcgeyovXG4vKipcbiAqIFRoZXNlIGFyZSBhIHNldCBvZiBoaW50cyB0aGF0IHlvdSBtYXkgcGFzcyB0byBXcml0ZXJzIHRvIHNwZWNpZnkgdGhlaXIgYmVoYXZpb3IuXG4gKlxuICogQGF1dGhvciBkc3dpdGtpbkBnb29nbGUuY29tIChEYW5pZWwgU3dpdGtpbilcbiAqL1xudmFyIEVuY29kZUhpbnRUeXBlO1xuKGZ1bmN0aW9uIChFbmNvZGVIaW50VHlwZSkge1xuICAgIC8qKlxuICAgICAqIFNwZWNpZmllcyB3aGF0IGRlZ3JlZSBvZiBlcnJvciBjb3JyZWN0aW9uIHRvIHVzZSwgZm9yIGV4YW1wbGUgaW4gUVIgQ29kZXMuXG4gICAgICogVHlwZSBkZXBlbmRzIG9uIHRoZSBlbmNvZGVyLiBGb3IgZXhhbXBsZSBmb3IgUVIgY29kZXMgaXQncyB0eXBlXG4gICAgICoge0BsaW5rIGNvbS5nb29nbGUuenhpbmcucXJjb2RlLmRlY29kZXIuRXJyb3JDb3JyZWN0aW9uTGV2ZWwgRXJyb3JDb3JyZWN0aW9uTGV2ZWx9LlxuICAgICAqIEZvciBBenRlYyBpdCBpcyBvZiB0eXBlIHtAbGluayBJbnRlZ2VyfSwgcmVwcmVzZW50aW5nIHRoZSBtaW5pbWFsIHBlcmNlbnRhZ2Ugb2YgZXJyb3IgY29ycmVjdGlvbiB3b3Jkcy5cbiAgICAgKiBGb3IgUERGNDE3IGl0IGlzIG9mIHR5cGUge0BsaW5rIEludGVnZXJ9LCB2YWxpZCB2YWx1ZXMgYmVpbmcgMCB0byA4LlxuICAgICAqIEluIGFsbCBjYXNlcywgaXQgY2FuIGFsc28gYmUgYSB7QGxpbmsgU3RyaW5nfSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZGVzaXJlZCB2YWx1ZSBhcyB3ZWxsLlxuICAgICAqIE5vdGU6IGFuIEF6dGVjIHN5bWJvbCBzaG91bGQgaGF2ZSBhIG1pbmltdW0gb2YgMjUlIEVDIHdvcmRzLlxuICAgICAqL1xuICAgIEVuY29kZUhpbnRUeXBlW0VuY29kZUhpbnRUeXBlW1wiRVJST1JfQ09SUkVDVElPTlwiXSA9IDBdID0gXCJFUlJPUl9DT1JSRUNUSU9OXCI7XG4gICAgLyoqXG4gICAgICogU3BlY2lmaWVzIHdoYXQgY2hhcmFjdGVyIGVuY29kaW5nIHRvIHVzZSB3aGVyZSBhcHBsaWNhYmxlICh0eXBlIHtAbGluayBTdHJpbmd9KVxuICAgICAqL1xuICAgIEVuY29kZUhpbnRUeXBlW0VuY29kZUhpbnRUeXBlW1wiQ0hBUkFDVEVSX1NFVFwiXSA9IDFdID0gXCJDSEFSQUNURVJfU0VUXCI7XG4gICAgLyoqXG4gICAgICogU3BlY2lmaWVzIHRoZSBtYXRyaXggc2hhcGUgZm9yIERhdGEgTWF0cml4ICh0eXBlIHtAbGluayBjb20uZ29vZ2xlLnp4aW5nLmRhdGFtYXRyaXguZW5jb2Rlci5TeW1ib2xTaGFwZUhpbnR9KVxuICAgICAqL1xuICAgIEVuY29kZUhpbnRUeXBlW0VuY29kZUhpbnRUeXBlW1wiREFUQV9NQVRSSVhfU0hBUEVcIl0gPSAyXSA9IFwiREFUQV9NQVRSSVhfU0hBUEVcIjtcbiAgICAvKipcbiAgICAgKiBTcGVjaWZpZXMgYSBtaW5pbXVtIGJhcmNvZGUgc2l6ZSAodHlwZSB7QGxpbmsgRGltZW5zaW9ufSkuIE9ubHkgYXBwbGljYWJsZSB0byBEYXRhIE1hdHJpeCBub3cuXG4gICAgICpcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2Ugd2lkdGgvaGVpZ2h0IHBhcmFtcyBpblxuICAgICAqIHtAbGluayBjb20uZ29vZ2xlLnp4aW5nLmRhdGFtYXRyaXguRGF0YU1hdHJpeFdyaXRlciNlbmNvZGUoU3RyaW5nLCBCYXJjb2RlRm9ybWF0LCBpbnQsIGludCl9XG4gICAgICovXG4gICAgLypARGVwcmVjYXRlZCovXG4gICAgRW5jb2RlSGludFR5cGVbRW5jb2RlSGludFR5cGVbXCJNSU5fU0laRVwiXSA9IDNdID0gXCJNSU5fU0laRVwiO1xuICAgIC8qKlxuICAgICAqIFNwZWNpZmllcyBhIG1heGltdW0gYmFyY29kZSBzaXplICh0eXBlIHtAbGluayBEaW1lbnNpb259KS4gT25seSBhcHBsaWNhYmxlIHRvIERhdGEgTWF0cml4IG5vdy5cbiAgICAgKlxuICAgICAqIEBkZXByZWNhdGVkIHdpdGhvdXQgcmVwbGFjZW1lbnRcbiAgICAgKi9cbiAgICAvKkBEZXByZWNhdGVkKi9cbiAgICBFbmNvZGVIaW50VHlwZVtFbmNvZGVIaW50VHlwZVtcIk1BWF9TSVpFXCJdID0gNF0gPSBcIk1BWF9TSVpFXCI7XG4gICAgLyoqXG4gICAgICogU3BlY2lmaWVzIG1hcmdpbiwgaW4gcGl4ZWxzLCB0byB1c2Ugd2hlbiBnZW5lcmF0aW5nIHRoZSBiYXJjb2RlLiBUaGUgbWVhbmluZyBjYW4gdmFyeVxuICAgICAqIGJ5IGZvcm1hdDsgZm9yIGV4YW1wbGUgaXQgY29udHJvbHMgbWFyZ2luIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIGJhcmNvZGUgaG9yaXpvbnRhbGx5IGZvclxuICAgICAqIG1vc3QgMUQgZm9ybWF0cy4gKFR5cGUge0BsaW5rIEludGVnZXJ9LCBvciB7QGxpbmsgU3RyaW5nfSByZXByZXNlbnRhdGlvbiBvZiB0aGUgaW50ZWdlciB2YWx1ZSkuXG4gICAgICovXG4gICAgRW5jb2RlSGludFR5cGVbRW5jb2RlSGludFR5cGVbXCJNQVJHSU5cIl0gPSA1XSA9IFwiTUFSR0lOXCI7XG4gICAgLyoqXG4gICAgICogU3BlY2lmaWVzIHdoZXRoZXIgdG8gdXNlIGNvbXBhY3QgbW9kZSBmb3IgUERGNDE3ICh0eXBlIHtAbGluayBCb29sZWFufSwgb3IgXCJ0cnVlXCIgb3IgXCJmYWxzZVwiXG4gICAgICoge0BsaW5rIFN0cmluZ30gdmFsdWUpLlxuICAgICAqL1xuICAgIEVuY29kZUhpbnRUeXBlW0VuY29kZUhpbnRUeXBlW1wiUERGNDE3X0NPTVBBQ1RcIl0gPSA2XSA9IFwiUERGNDE3X0NPTVBBQ1RcIjtcbiAgICAvKipcbiAgICAgKiBTcGVjaWZpZXMgd2hhdCBjb21wYWN0aW9uIG1vZGUgdG8gdXNlIGZvciBQREY0MTcgKHR5cGVcbiAgICAgKiB7QGxpbmsgY29tLmdvb2dsZS56eGluZy5wZGY0MTcuZW5jb2Rlci5Db21wYWN0aW9uIENvbXBhY3Rpb259IG9yIHtAbGluayBTdHJpbmd9IHZhbHVlIG9mIG9uZSBvZiBpdHNcbiAgICAgKiBlbnVtIHZhbHVlcykuXG4gICAgICovXG4gICAgRW5jb2RlSGludFR5cGVbRW5jb2RlSGludFR5cGVbXCJQREY0MTdfQ09NUEFDVElPTlwiXSA9IDddID0gXCJQREY0MTdfQ09NUEFDVElPTlwiO1xuICAgIC8qKlxuICAgICAqIFNwZWNpZmllcyB0aGUgbWluaW11bSBhbmQgbWF4aW11bSBudW1iZXIgb2Ygcm93cyBhbmQgY29sdW1ucyBmb3IgUERGNDE3ICh0eXBlXG4gICAgICoge0BsaW5rIGNvbS5nb29nbGUuenhpbmcucGRmNDE3LmVuY29kZXIuRGltZW5zaW9ucyBEaW1lbnNpb25zfSkuXG4gICAgICovXG4gICAgRW5jb2RlSGludFR5cGVbRW5jb2RlSGludFR5cGVbXCJQREY0MTdfRElNRU5TSU9OU1wiXSA9IDhdID0gXCJQREY0MTdfRElNRU5TSU9OU1wiO1xuICAgIC8qKlxuICAgICAqIFNwZWNpZmllcyB0aGUgcmVxdWlyZWQgbnVtYmVyIG9mIGxheWVycyBmb3IgYW4gQXp0ZWMgY29kZS5cbiAgICAgKiBBIG5lZ2F0aXZlIG51bWJlciAoLTEsIC0yLCAtMywgLTQpIHNwZWNpZmllcyBhIGNvbXBhY3QgQXp0ZWMgY29kZS5cbiAgICAgKiAwIGluZGljYXRlcyB0byB1c2UgdGhlIG1pbmltdW0gbnVtYmVyIG9mIGxheWVycyAodGhlIGRlZmF1bHQpLlxuICAgICAqIEEgcG9zaXRpdmUgbnVtYmVyICgxLCAyLCAuLiAzMikgc3BlY2lmaWVzIGEgbm9ybWFsIChub24tY29tcGFjdCkgQXp0ZWMgY29kZS5cbiAgICAgKiAoVHlwZSB7QGxpbmsgSW50ZWdlcn0sIG9yIHtAbGluayBTdHJpbmd9IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBpbnRlZ2VyIHZhbHVlKS5cbiAgICAgKi9cbiAgICBFbmNvZGVIaW50VHlwZVtFbmNvZGVIaW50VHlwZVtcIkFaVEVDX0xBWUVSU1wiXSA9IDldID0gXCJBWlRFQ19MQVlFUlNcIjtcbiAgICAvKipcbiAgICAgKiBTcGVjaWZpZXMgdGhlIGV4YWN0IHZlcnNpb24gb2YgUVIgY29kZSB0byBiZSBlbmNvZGVkLlxuICAgICAqIChUeXBlIHtAbGluayBJbnRlZ2VyfSwgb3Ige0BsaW5rIFN0cmluZ30gcmVwcmVzZW50YXRpb24gb2YgdGhlIGludGVnZXIgdmFsdWUpLlxuICAgICAqL1xuICAgIEVuY29kZUhpbnRUeXBlW0VuY29kZUhpbnRUeXBlW1wiUVJfVkVSU0lPTlwiXSA9IDEwXSA9IFwiUVJfVkVSU0lPTlwiO1xufSkoRW5jb2RlSGludFR5cGUgfHwgKEVuY29kZUhpbnRUeXBlID0ge30pKTtcbmV4cG9ydHMuZGVmYXVsdCA9IEVuY29kZUhpbnRUeXBlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RW5jb2RlSGludFR5cGUuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IDIwMDggWlhpbmcgYXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBHZW5lcmljR0ZQb2x5XzEgPSByZXF1aXJlKFwiLi9HZW5lcmljR0ZQb2x5XCIpO1xudmFyIFN5c3RlbV8xID0gcmVxdWlyZShcIi4uLy4uL3V0aWwvU3lzdGVtXCIpO1xudmFyIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4uLy4uL0lsbGVnYWxBcmd1bWVudEV4Y2VwdGlvblwiKTtcbi8qKlxuICogPHA+SW1wbGVtZW50cyBSZWVkLVNvbG9tb24gZW5jb2RpbmcsIGFzIHRoZSBuYW1lIGltcGxpZXMuPC9wPlxuICpcbiAqIEBhdXRob3IgU2VhbiBPd2VuXG4gKiBAYXV0aG9yIFdpbGxpYW0gUnVja2xpZGdlXG4gKi9cbnZhciBSZWVkU29sb21vbkVuY29kZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgLyoqXG4gICAgICogQSByZWVkIHNvbG9tb24gZXJyb3ItY29ycmVjdGluZyBlbmNvZGluZyBjb25zdHJ1Y3RvciBpcyBjcmVhdGVkIGJ5XG4gICAgICogcGFzc2luZyBhcyBHYWxvaXMgRmllbGQgd2l0aCBvZiBzaXplIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgY29kZVxuICAgICAqIHdvcmRzIChzeW1ib2xzKSBpbiB0aGUgYWxwaGFiZXQgKHRoZSBudW1iZXIgb2YgdmFsdWVzIGluIGVhY2hcbiAgICAgKiBlbGVtZW50IG9mIGFycmF5cyB0aGF0IGFyZSBlbmNvZGVkL2RlY29kZWQpLlxuICAgICAqIEBwYXJhbSBmaWVsZCBBIGdhbG9pcyBmaWVsZCB3aXRoIGEgbnVtYmVyIG9mIGVsZW1lbnRzIGVxdWFsIHRvIHRoZSBzaXplXG4gICAgICogb2YgdGhlIGFscGhhYmV0IG9mIHN5bWJvbHMgdG8gZW5jb2RlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIFJlZWRTb2xvbW9uRW5jb2RlcihmaWVsZCkge1xuICAgICAgICB0aGlzLmZpZWxkID0gZmllbGQ7XG4gICAgICAgIHRoaXMuY2FjaGVkR2VuZXJhdG9ycyA9IFtdO1xuICAgICAgICB0aGlzLmNhY2hlZEdlbmVyYXRvcnMucHVzaChuZXcgR2VuZXJpY0dGUG9seV8xLmRlZmF1bHQoZmllbGQsIEludDMyQXJyYXkuZnJvbShbMV0pKSk7XG4gICAgfVxuICAgIFJlZWRTb2xvbW9uRW5jb2Rlci5wcm90b3R5cGUuYnVpbGRHZW5lcmF0b3IgPSBmdW5jdGlvbiAoZGVncmVlIC8qaW50Ki8pIHtcbiAgICAgICAgdmFyIGNhY2hlZEdlbmVyYXRvcnMgPSB0aGlzLmNhY2hlZEdlbmVyYXRvcnM7XG4gICAgICAgIGlmIChkZWdyZWUgPj0gY2FjaGVkR2VuZXJhdG9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHZhciBsYXN0R2VuZXJhdG9yID0gY2FjaGVkR2VuZXJhdG9yc1tjYWNoZWRHZW5lcmF0b3JzLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgdmFyIGZpZWxkID0gdGhpcy5maWVsZDtcbiAgICAgICAgICAgIGZvciAodmFyIGQgPSBjYWNoZWRHZW5lcmF0b3JzLmxlbmd0aDsgZCA8PSBkZWdyZWU7IGQrKykge1xuICAgICAgICAgICAgICAgIHZhciBuZXh0R2VuZXJhdG9yID0gbGFzdEdlbmVyYXRvci5tdWx0aXBseShuZXcgR2VuZXJpY0dGUG9seV8xLmRlZmF1bHQoZmllbGQsIEludDMyQXJyYXkuZnJvbShbMSwgZmllbGQuZXhwKGQgLSAxICsgZmllbGQuZ2V0R2VuZXJhdG9yQmFzZSgpKV0pKSk7XG4gICAgICAgICAgICAgICAgY2FjaGVkR2VuZXJhdG9ycy5wdXNoKG5leHRHZW5lcmF0b3IpO1xuICAgICAgICAgICAgICAgIGxhc3RHZW5lcmF0b3IgPSBuZXh0R2VuZXJhdG9yO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjYWNoZWRHZW5lcmF0b3JzW2RlZ3JlZV07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiA8cD5FbmNvZGUgYSBzZXF1ZW5jZSBvZiBjb2RlIHdvcmRzIChzeW1ib2xzKSB1c2luZyBSZWVkLVNvbG9tb24gdG8gYWxsb3cgZGVjb2RlcnNcbiAgICAgKiB0byBkZXRlY3QgYW5kIGNvcnJlY3QgZXJyb3JzIHRoYXQgbWF5IGhhdmUgYmVlbiBpbnRyb2R1Y2VkIHdoZW4gdGhlIHJlc3VsdGluZ1xuICAgICAqIGRhdGEgaXMgc3RvcmVkIG9yIHRyYW5zbWl0dGVkLjwvcD5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB0b0VuY29kZSBhcnJheSB1c2VkIGZvciBib3RoIGFuZCBvdXRwdXQuIENhbGxlciBpbml0aWFsaXplcyB0aGUgYXJyYXkgd2l0aFxuICAgICAqIHRoZSBjb2RlIHdvcmRzIChzeW1ib2xzKSB0byBiZSBlbmNvZGVkIGZvbGxvd2VkIGJ5IGVtcHR5IGVsZW1lbnRzIGFsbG9jYXRlZCB0byBtYWtlXG4gICAgICogc3BhY2UgZm9yIGVycm9yLWNvcnJlY3Rpb24gY29kZSB3b3JkcyBpbiB0aGUgZW5jb2RlZCBvdXRwdXQuIFRoZSBhcnJheSBjb250YWluc1xuICAgICAqIHRoZSBlbmNkb2RlZCBvdXRwdXQgd2hlbiBlbmNvZGUgcmV0dXJucy4gQ29kZSB3b3JkcyBhcmUgZW5jb2RlZCBhcyBudW1iZXJzIGZyb21cbiAgICAgKiAwIHRvIG4tMSwgd2hlcmUgbiBpcyB0aGUgbnVtYmVyIG9mIHBvc3NpYmxlIGNvZGUgd29yZHMgKHN5bWJvbHMpLCBhcyBkZXRlcm1pbmVkXG4gICAgICogYnkgdGhlIHNpemUgb2YgdGhlIEdhbG9pcyBGaWVsZCBwYXNzZWQgaW4gdGhlIGNvbnN0cnVjdG9yIG9mIHRoaXMgb2JqZWN0LlxuICAgICAqIEBwYXJhbSBlY0J5dGVzIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgcmVzZXJ2ZWQgaW4gdGhlIGFycmF5IChmaXJzdCBwYXJhbWV0ZXIpXG4gICAgICogdG8gc3RvcmUgZXJyb3ItY29ycmVjdGlvbiBjb2RlIHdvcmRzLiBUaHVzLCB0aGUgbnVtYmVyIG9mIGNvZGUgd29yZHMgKHN5bWJvbHMpXG4gICAgICogdG8gZW5jb2RlIGluIHRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgdGh1cyB0b0VuY29kZS5sZW5ndGggLSBlY0J5dGVzLlxuICAgICAqIE5vdGUsIHRoZSB1c2Ugb2YgXCJieXRlc1wiIGluIHRoZSBuYW1lIG9mIHRoaXMgcGFyYW1ldGVyIGlzIG1pc2xlYWRpbmcsIGFzIHRoZXJlIG1heVxuICAgICAqIGJlIG1vcmUgb3IgZmV3ZXIgdGhhbiAyNTYgc3ltYm9scyBiZWluZyBlbmNvZGVkLCBhcyBkZXRlcm1pbmVkIGJ5IHRoZSBudW1iZXIgb2ZcbiAgICAgKiBlbGVtZW50cyBpbiB0aGUgR2Fsb2lzIEZpZWxkIHBhc3NlZCBhcyBhIGNvbnN0cnVjdG9yIHRvIHRoaXMgb2JqZWN0LlxuICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHRocm93biBpbiByZXNwb25zZSB0byB2YWxpZGF0aW9uIGVycnJvcy5cbiAgICAgKi9cbiAgICBSZWVkU29sb21vbkVuY29kZXIucHJvdG90eXBlLmVuY29kZSA9IGZ1bmN0aW9uICh0b0VuY29kZSwgZWNCeXRlcyAvKmludCovKSB7XG4gICAgICAgIGlmIChlY0J5dGVzID09PSAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgnTm8gZXJyb3IgY29ycmVjdGlvbiBieXRlcycpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBkYXRhQnl0ZXMgPSB0b0VuY29kZS5sZW5ndGggLSBlY0J5dGVzO1xuICAgICAgICBpZiAoZGF0YUJ5dGVzIDw9IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCdObyBkYXRhIGJ5dGVzIHByb3ZpZGVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGdlbmVyYXRvciA9IHRoaXMuYnVpbGRHZW5lcmF0b3IoZWNCeXRlcyk7XG4gICAgICAgIHZhciBpbmZvQ29lZmZpY2llbnRzID0gbmV3IEludDMyQXJyYXkoZGF0YUJ5dGVzKTtcbiAgICAgICAgU3lzdGVtXzEuZGVmYXVsdC5hcnJheWNvcHkodG9FbmNvZGUsIDAsIGluZm9Db2VmZmljaWVudHMsIDAsIGRhdGFCeXRlcyk7XG4gICAgICAgIHZhciBpbmZvID0gbmV3IEdlbmVyaWNHRlBvbHlfMS5kZWZhdWx0KHRoaXMuZmllbGQsIGluZm9Db2VmZmljaWVudHMpO1xuICAgICAgICBpbmZvID0gaW5mby5tdWx0aXBseUJ5TW9ub21pYWwoZWNCeXRlcywgMSk7XG4gICAgICAgIHZhciByZW1haW5kZXIgPSBpbmZvLmRpdmlkZShnZW5lcmF0b3IpWzFdO1xuICAgICAgICB2YXIgY29lZmZpY2llbnRzID0gcmVtYWluZGVyLmdldENvZWZmaWNpZW50cygpO1xuICAgICAgICB2YXIgbnVtWmVyb0NvZWZmaWNpZW50cyA9IGVjQnl0ZXMgLSBjb2VmZmljaWVudHMubGVuZ3RoO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bVplcm9Db2VmZmljaWVudHM7IGkrKykge1xuICAgICAgICAgICAgdG9FbmNvZGVbZGF0YUJ5dGVzICsgaV0gPSAwO1xuICAgICAgICB9XG4gICAgICAgIFN5c3RlbV8xLmRlZmF1bHQuYXJyYXljb3B5KGNvZWZmaWNpZW50cywgMCwgdG9FbmNvZGUsIGRhdGFCeXRlcyArIG51bVplcm9Db2VmZmljaWVudHMsIGNvZWZmaWNpZW50cy5sZW5ndGgpO1xuICAgIH07XG4gICAgcmV0dXJuIFJlZWRTb2xvbW9uRW5jb2Rlcjtcbn0oKSk7XG5leHBvcnRzLmRlZmF1bHQgPSBSZWVkU29sb21vbkVuY29kZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1SZWVkU29sb21vbkVuY29kZXIuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IDIwMDggWlhpbmcgYXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuLi8uLi9JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25cIik7XG4vKipcbiAqIEBhdXRob3IgU2F0b3J1IFRha2FiYXlhc2hpXG4gKiBAYXV0aG9yIERhbmllbCBTd2l0a2luXG4gKiBAYXV0aG9yIFNlYW4gT3dlblxuICovXG52YXIgTWFza1V0aWwgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gTWFza1V0aWwoKSB7XG4gICAgICAgIC8vIGRvIG5vdGhpbmdcbiAgICB9XG4gICAgLyoqXG4gICAgICogQXBwbHkgbWFzayBwZW5hbHR5IHJ1bGUgMSBhbmQgcmV0dXJuIHRoZSBwZW5hbHR5LiBGaW5kIHJlcGV0aXRpdmUgY2VsbHMgd2l0aCB0aGUgc2FtZSBjb2xvciBhbmRcbiAgICAgKiBnaXZlIHBlbmFsdHkgdG8gdGhlbS4gRXhhbXBsZTogMDAwMDAgb3IgMTExMTEuXG4gICAgICovXG4gICAgTWFza1V0aWwuYXBwbHlNYXNrUGVuYWx0eVJ1bGUxID0gZnVuY3Rpb24gKG1hdHJpeCkge1xuICAgICAgICByZXR1cm4gTWFza1V0aWwuYXBwbHlNYXNrUGVuYWx0eVJ1bGUxSW50ZXJuYWwobWF0cml4LCB0cnVlKSArIE1hc2tVdGlsLmFwcGx5TWFza1BlbmFsdHlSdWxlMUludGVybmFsKG1hdHJpeCwgZmFsc2UpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQXBwbHkgbWFzayBwZW5hbHR5IHJ1bGUgMiBhbmQgcmV0dXJuIHRoZSBwZW5hbHR5LiBGaW5kIDJ4MiBibG9ja3Mgd2l0aCB0aGUgc2FtZSBjb2xvciBhbmQgZ2l2ZVxuICAgICAqIHBlbmFsdHkgdG8gdGhlbS4gVGhpcyBpcyBhY3R1YWxseSBlcXVpdmFsZW50IHRvIHRoZSBzcGVjJ3MgcnVsZSwgd2hpY2ggaXMgdG8gZmluZCBNeE4gYmxvY2tzIGFuZCBnaXZlIGFcbiAgICAgKiBwZW5hbHR5IHByb3BvcnRpb25hbCB0byAoTS0xKXgoTi0xKSwgYmVjYXVzZSB0aGlzIGlzIHRoZSBudW1iZXIgb2YgMngyIGJsb2NrcyBpbnNpZGUgc3VjaCBhIGJsb2NrLlxuICAgICAqL1xuICAgIE1hc2tVdGlsLmFwcGx5TWFza1BlbmFsdHlSdWxlMiA9IGZ1bmN0aW9uIChtYXRyaXgpIHtcbiAgICAgICAgdmFyIHBlbmFsdHkgPSAwO1xuICAgICAgICB2YXIgYXJyYXkgPSBtYXRyaXguZ2V0QXJyYXkoKTtcbiAgICAgICAgdmFyIHdpZHRoID0gbWF0cml4LmdldFdpZHRoKCk7XG4gICAgICAgIHZhciBoZWlnaHQgPSBtYXRyaXguZ2V0SGVpZ2h0KCk7XG4gICAgICAgIGZvciAodmFyIHkgPSAwOyB5IDwgaGVpZ2h0IC0gMTsgeSsrKSB7XG4gICAgICAgICAgICB2YXIgYXJyYXlZID0gYXJyYXlbeV07XG4gICAgICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IHdpZHRoIC0gMTsgeCsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlZW3hdO1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gYXJyYXlZW3ggKyAxXSAmJiB2YWx1ZSA9PT0gYXJyYXlbeSArIDFdW3hdICYmIHZhbHVlID09PSBhcnJheVt5ICsgMV1beCArIDFdKSB7XG4gICAgICAgICAgICAgICAgICAgIHBlbmFsdHkrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE1hc2tVdGlsLk4yICogcGVuYWx0eTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEFwcGx5IG1hc2sgcGVuYWx0eSBydWxlIDMgYW5kIHJldHVybiB0aGUgcGVuYWx0eS4gRmluZCBjb25zZWN1dGl2ZSBydW5zIG9mIDE6MTozOjE6MTo0XG4gICAgICogc3RhcnRpbmcgd2l0aCBibGFjaywgb3IgNDoxOjE6MzoxOjEgc3RhcnRpbmcgd2l0aCB3aGl0ZSwgYW5kIGdpdmUgcGVuYWx0eSB0byB0aGVtLiAgSWYgd2VcbiAgICAgKiBmaW5kIHBhdHRlcm5zIGxpa2UgMDAwMDEwMTExMDEwMDAwLCB3ZSBnaXZlIHBlbmFsdHkgb25jZS5cbiAgICAgKi9cbiAgICBNYXNrVXRpbC5hcHBseU1hc2tQZW5hbHR5UnVsZTMgPSBmdW5jdGlvbiAobWF0cml4KSB7XG4gICAgICAgIHZhciBudW1QZW5hbHRpZXMgPSAwO1xuICAgICAgICB2YXIgYXJyYXkgPSBtYXRyaXguZ2V0QXJyYXkoKTtcbiAgICAgICAgdmFyIHdpZHRoID0gbWF0cml4LmdldFdpZHRoKCk7XG4gICAgICAgIHZhciBoZWlnaHQgPSBtYXRyaXguZ2V0SGVpZ2h0KCk7XG4gICAgICAgIGZvciAodmFyIHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgd2lkdGg7IHgrKykge1xuICAgICAgICAgICAgICAgIHZhciBhcnJheVkgPSBhcnJheVt5XTsgLy8gV2UgY2FuIGF0IGxlYXN0IG9wdGltaXplIHRoaXMgYWNjZXNzXG4gICAgICAgICAgICAgICAgaWYgKHggKyA2IDwgd2lkdGggJiZcbiAgICAgICAgICAgICAgICAgICAgYXJyYXlZW3hdID09PSAxICYmXG4gICAgICAgICAgICAgICAgICAgIGFycmF5WVt4ICsgMV0gPT09IDAgJiZcbiAgICAgICAgICAgICAgICAgICAgYXJyYXlZW3ggKyAyXSA9PT0gMSAmJlxuICAgICAgICAgICAgICAgICAgICBhcnJheVlbeCArIDNdID09PSAxICYmXG4gICAgICAgICAgICAgICAgICAgIGFycmF5WVt4ICsgNF0gPT09IDEgJiZcbiAgICAgICAgICAgICAgICAgICAgYXJyYXlZW3ggKyA1XSA9PT0gMCAmJlxuICAgICAgICAgICAgICAgICAgICBhcnJheVlbeCArIDZdID09PSAxICYmXG4gICAgICAgICAgICAgICAgICAgIChNYXNrVXRpbC5pc1doaXRlSG9yaXpvbnRhbChhcnJheVksIHggLSA0LCB4KSB8fCBNYXNrVXRpbC5pc1doaXRlSG9yaXpvbnRhbChhcnJheVksIHggKyA3LCB4ICsgMTEpKSkge1xuICAgICAgICAgICAgICAgICAgICBudW1QZW5hbHRpZXMrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHkgKyA2IDwgaGVpZ2h0ICYmXG4gICAgICAgICAgICAgICAgICAgIGFycmF5W3ldW3hdID09PSAxICYmXG4gICAgICAgICAgICAgICAgICAgIGFycmF5W3kgKyAxXVt4XSA9PT0gMCAmJlxuICAgICAgICAgICAgICAgICAgICBhcnJheVt5ICsgMl1beF0gPT09IDEgJiZcbiAgICAgICAgICAgICAgICAgICAgYXJyYXlbeSArIDNdW3hdID09PSAxICYmXG4gICAgICAgICAgICAgICAgICAgIGFycmF5W3kgKyA0XVt4XSA9PT0gMSAmJlxuICAgICAgICAgICAgICAgICAgICBhcnJheVt5ICsgNV1beF0gPT09IDAgJiZcbiAgICAgICAgICAgICAgICAgICAgYXJyYXlbeSArIDZdW3hdID09PSAxICYmXG4gICAgICAgICAgICAgICAgICAgIChNYXNrVXRpbC5pc1doaXRlVmVydGljYWwoYXJyYXksIHgsIHkgLSA0LCB5KSB8fCBNYXNrVXRpbC5pc1doaXRlVmVydGljYWwoYXJyYXksIHgsIHkgKyA3LCB5ICsgMTEpKSkge1xuICAgICAgICAgICAgICAgICAgICBudW1QZW5hbHRpZXMrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bVBlbmFsdGllcyAqIE1hc2tVdGlsLk4zO1xuICAgIH07XG4gICAgTWFza1V0aWwuaXNXaGl0ZUhvcml6b250YWwgPSBmdW5jdGlvbiAocm93QXJyYXksIGZyb20gLyppbnQqLywgdG8gLyppbnQqLykge1xuICAgICAgICBmcm9tID0gTWF0aC5tYXgoZnJvbSwgMCk7XG4gICAgICAgIHRvID0gTWF0aC5taW4odG8sIHJvd0FycmF5Lmxlbmd0aCk7XG4gICAgICAgIGZvciAodmFyIGkgPSBmcm9tOyBpIDwgdG87IGkrKykge1xuICAgICAgICAgICAgaWYgKHJvd0FycmF5W2ldID09PSAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG4gICAgTWFza1V0aWwuaXNXaGl0ZVZlcnRpY2FsID0gZnVuY3Rpb24gKGFycmF5LCBjb2wgLyppbnQqLywgZnJvbSAvKmludCovLCB0byAvKmludCovKSB7XG4gICAgICAgIGZyb20gPSBNYXRoLm1heChmcm9tLCAwKTtcbiAgICAgICAgdG8gPSBNYXRoLm1pbih0bywgYXJyYXkubGVuZ3RoKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IGZyb207IGkgPCB0bzsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoYXJyYXlbaV1bY29sXSA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEFwcGx5IG1hc2sgcGVuYWx0eSBydWxlIDQgYW5kIHJldHVybiB0aGUgcGVuYWx0eS4gQ2FsY3VsYXRlIHRoZSByYXRpbyBvZiBkYXJrIGNlbGxzIGFuZCBnaXZlXG4gICAgICogcGVuYWx0eSBpZiB0aGUgcmF0aW8gaXMgZmFyIGZyb20gNTAlLiBJdCBnaXZlcyAxMCBwZW5hbHR5IGZvciA1JSBkaXN0YW5jZS5cbiAgICAgKi9cbiAgICBNYXNrVXRpbC5hcHBseU1hc2tQZW5hbHR5UnVsZTQgPSBmdW5jdGlvbiAobWF0cml4KSB7XG4gICAgICAgIHZhciBudW1EYXJrQ2VsbHMgPSAwO1xuICAgICAgICB2YXIgYXJyYXkgPSBtYXRyaXguZ2V0QXJyYXkoKTtcbiAgICAgICAgdmFyIHdpZHRoID0gbWF0cml4LmdldFdpZHRoKCk7XG4gICAgICAgIHZhciBoZWlnaHQgPSBtYXRyaXguZ2V0SGVpZ2h0KCk7XG4gICAgICAgIGZvciAodmFyIHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspIHtcbiAgICAgICAgICAgIHZhciBhcnJheVkgPSBhcnJheVt5XTtcbiAgICAgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgd2lkdGg7IHgrKykge1xuICAgICAgICAgICAgICAgIGlmIChhcnJheVlbeF0gPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgbnVtRGFya0NlbGxzKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHZhciBudW1Ub3RhbENlbGxzID0gbWF0cml4LmdldEhlaWdodCgpICogbWF0cml4LmdldFdpZHRoKCk7XG4gICAgICAgIHZhciBmaXZlUGVyY2VudFZhcmlhbmNlcyA9IE1hdGguZmxvb3IoTWF0aC5hYnMobnVtRGFya0NlbGxzICogMiAtIG51bVRvdGFsQ2VsbHMpICogMTAgLyBudW1Ub3RhbENlbGxzKTtcbiAgICAgICAgcmV0dXJuIGZpdmVQZXJjZW50VmFyaWFuY2VzICogTWFza1V0aWwuTjQ7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBSZXR1cm4gdGhlIG1hc2sgYml0IGZvciBcImdldE1hc2tQYXR0ZXJuXCIgYXQgXCJ4XCIgYW5kIFwieVwiLiBTZWUgOC44IG9mIEpJU1gwNTEwOjIwMDQgZm9yIG1hc2tcbiAgICAgKiBwYXR0ZXJuIGNvbmRpdGlvbnMuXG4gICAgICovXG4gICAgTWFza1V0aWwuZ2V0RGF0YU1hc2tCaXQgPSBmdW5jdGlvbiAobWFza1BhdHRlcm4gLyppbnQqLywgeCAvKmludCovLCB5IC8qaW50Ki8pIHtcbiAgICAgICAgdmFyIGludGVybWVkaWF0ZTsgLyppbnQqL1xuICAgICAgICB2YXIgdGVtcDsgLyppbnQqL1xuICAgICAgICBzd2l0Y2ggKG1hc2tQYXR0ZXJuKSB7XG4gICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgaW50ZXJtZWRpYXRlID0gKHkgKyB4KSAmIDB4MTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICBpbnRlcm1lZGlhdGUgPSB5ICYgMHgxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgIGludGVybWVkaWF0ZSA9IHggJSAzO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgIGludGVybWVkaWF0ZSA9ICh5ICsgeCkgJSAzO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgIGludGVybWVkaWF0ZSA9IChNYXRoLmZsb29yKHkgLyAyKSArIE1hdGguZmxvb3IoeCAvIDMpKSAmIDB4MTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICB0ZW1wID0geSAqIHg7XG4gICAgICAgICAgICAgICAgaW50ZXJtZWRpYXRlID0gKHRlbXAgJiAweDEpICsgKHRlbXAgJSAzKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICB0ZW1wID0geSAqIHg7XG4gICAgICAgICAgICAgICAgaW50ZXJtZWRpYXRlID0gKCh0ZW1wICYgMHgxKSArICh0ZW1wICUgMykpICYgMHgxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgICAgIHRlbXAgPSB5ICogeDtcbiAgICAgICAgICAgICAgICBpbnRlcm1lZGlhdGUgPSAoKHRlbXAgJSAzKSArICgoeSArIHgpICYgMHgxKSkgJiAweDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCdJbnZhbGlkIG1hc2sgcGF0dGVybjogJyArIG1hc2tQYXR0ZXJuKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaW50ZXJtZWRpYXRlID09PSAwO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogSGVscGVyIGZ1bmN0aW9uIGZvciBhcHBseU1hc2tQZW5hbHR5UnVsZTEuIFdlIG5lZWQgdGhpcyBmb3IgZG9pbmcgdGhpcyBjYWxjdWxhdGlvbiBpbiBib3RoXG4gICAgICogdmVydGljYWwgYW5kIGhvcml6b250YWwgb3JkZXJzIHJlc3BlY3RpdmVseS5cbiAgICAgKi9cbiAgICBNYXNrVXRpbC5hcHBseU1hc2tQZW5hbHR5UnVsZTFJbnRlcm5hbCA9IGZ1bmN0aW9uIChtYXRyaXgsIGlzSG9yaXpvbnRhbCkge1xuICAgICAgICB2YXIgcGVuYWx0eSA9IDA7XG4gICAgICAgIHZhciBpTGltaXQgPSBpc0hvcml6b250YWwgPyBtYXRyaXguZ2V0SGVpZ2h0KCkgOiBtYXRyaXguZ2V0V2lkdGgoKTtcbiAgICAgICAgdmFyIGpMaW1pdCA9IGlzSG9yaXpvbnRhbCA/IG1hdHJpeC5nZXRXaWR0aCgpIDogbWF0cml4LmdldEhlaWdodCgpO1xuICAgICAgICB2YXIgYXJyYXkgPSBtYXRyaXguZ2V0QXJyYXkoKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpTGltaXQ7IGkrKykge1xuICAgICAgICAgICAgdmFyIG51bVNhbWVCaXRDZWxscyA9IDA7XG4gICAgICAgICAgICB2YXIgcHJldkJpdCA9IC0xO1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBqTGltaXQ7IGorKykge1xuICAgICAgICAgICAgICAgIHZhciBiaXQgPSBpc0hvcml6b250YWwgPyBhcnJheVtpXVtqXSA6IGFycmF5W2pdW2ldO1xuICAgICAgICAgICAgICAgIGlmIChiaXQgPT09IHByZXZCaXQpIHtcbiAgICAgICAgICAgICAgICAgICAgbnVtU2FtZUJpdENlbGxzKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAobnVtU2FtZUJpdENlbGxzID49IDUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlbmFsdHkgKz0gTWFza1V0aWwuTjEgKyAobnVtU2FtZUJpdENlbGxzIC0gNSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbnVtU2FtZUJpdENlbGxzID0gMTsgLy8gSW5jbHVkZSB0aGUgY2VsbCBpdHNlbGYuXG4gICAgICAgICAgICAgICAgICAgIHByZXZCaXQgPSBiaXQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG51bVNhbWVCaXRDZWxscyA+PSA1KSB7XG4gICAgICAgICAgICAgICAgcGVuYWx0eSArPSBNYXNrVXRpbC5OMSArIChudW1TYW1lQml0Q2VsbHMgLSA1KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGVuYWx0eTtcbiAgICB9O1xuICAgIC8vIFBlbmFsdHkgd2VpZ2h0cyBmcm9tIHNlY3Rpb24gNi44LjIuMVxuICAgIE1hc2tVdGlsLk4xID0gMztcbiAgICBNYXNrVXRpbC5OMiA9IDM7XG4gICAgTWFza1V0aWwuTjMgPSA0MDtcbiAgICBNYXNrVXRpbC5ONCA9IDEwO1xuICAgIHJldHVybiBNYXNrVXRpbDtcbn0oKSk7XG5leHBvcnRzLmRlZmF1bHQgPSBNYXNrVXRpbDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU1hc2tVdGlsLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuLypcbiAqIENvcHlyaWdodCAyMDA4IFpYaW5nIGF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgX192YWx1ZXMgPSAodGhpcyAmJiB0aGlzLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7XG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vKm5hbWVzcGFjZSBjb20uZ29vZ2xlLnp4aW5nLnFyY29kZS5lbmNvZGVyIHsqL1xuLyppbXBvcnQgamF2YS51dGlsLkFycmF5czsqL1xudmFyIEFycmF5c18xID0gcmVxdWlyZShcIi4uLy4uL3V0aWwvQXJyYXlzXCIpO1xudmFyIFN0cmluZ0J1aWxkZXJfMSA9IHJlcXVpcmUoXCIuLi8uLi91dGlsL1N0cmluZ0J1aWxkZXJcIik7XG4vKipcbiAqIEpBVkFQT1JUOiBUaGUgb3JpZ2luYWwgY29kZSB3YXMgYSAyRCBhcnJheSBvZiBpbnRzLCBidXQgc2luY2UgaXQgb25seSBldmVyIGdldHMgYXNzaWduZWRcbiAqIC0xLCAwLCBhbmQgMSwgSSdtIGdvaW5nIHRvIHVzZSBsZXNzIG1lbW9yeSBhbmQgZ28gd2l0aCBieXRlcy5cbiAqXG4gKiBAYXV0aG9yIGRzd2l0a2luQGdvb2dsZS5jb20gKERhbmllbCBTd2l0a2luKVxuICovXG52YXIgQnl0ZU1hdHJpeCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBCeXRlTWF0cml4KHdpZHRoIC8qaW50Ki8sIGhlaWdodCAvKmludCovKSB7XG4gICAgICAgIHRoaXMud2lkdGggPSB3aWR0aDtcbiAgICAgICAgdGhpcy5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgICAgIHZhciBieXRlcyA9IG5ldyBBcnJheShoZWlnaHQpOyAvLyBbaGVpZ2h0XVt3aWR0aF1cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgIT09IGhlaWdodDsgaSsrKSB7XG4gICAgICAgICAgICBieXRlc1tpXSA9IG5ldyBVaW50OEFycmF5KHdpZHRoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmJ5dGVzID0gYnl0ZXM7XG4gICAgfVxuICAgIEJ5dGVNYXRyaXgucHJvdG90eXBlLmdldEhlaWdodCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGVpZ2h0O1xuICAgIH07XG4gICAgQnl0ZU1hdHJpeC5wcm90b3R5cGUuZ2V0V2lkdGggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLndpZHRoO1xuICAgIH07XG4gICAgQnl0ZU1hdHJpeC5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKHggLyppbnQqLywgeSAvKmludCovKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJ5dGVzW3ldW3hdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHJldHVybiBhbiBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBhcyBieXRlcywgaW4gcm93LW1ham9yIG9yZGVyLiBhcnJheVt5XVt4XSByZXByZXNlbnRzIHBvaW50ICh4LHkpXG4gICAgICovXG4gICAgQnl0ZU1hdHJpeC5wcm90b3R5cGUuZ2V0QXJyYXkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJ5dGVzO1xuICAgIH07XG4gICAgLy8gVFlQRVNDUklQVFBPUlQ6IHByZWZmZXIgdG8gbGV0IHR3byBtZXRob2RzIGluc3RlYWQgb2Ygb3ZlcnJpZGUgdG8gYXZvaWQgdHlwZSBjb21wYXJpc29uIGluc2lkZVxuICAgIEJ5dGVNYXRyaXgucHJvdG90eXBlLnNldE51bWJlciA9IGZ1bmN0aW9uICh4IC8qaW50Ki8sIHkgLyppbnQqLywgdmFsdWUgLypieXRlfGludCovKSB7XG4gICAgICAgIHRoaXMuYnl0ZXNbeV1beF0gPSB2YWx1ZTtcbiAgICB9O1xuICAgIC8vIHB1YmxpYyBzZXQoeDogbnVtYmVyIC8qaW50Ki8sIHk6IG51bWJlciAvKmludCovLCB2YWx1ZTogbnVtYmVyIC8qaW50Ki8pOiB2b2lkIHtcbiAgICAvLyAgIGJ5dGVzW3ldW3hdID0gKGJ5dGUpIHZhbHVlXG4gICAgLy8gfVxuICAgIEJ5dGVNYXRyaXgucHJvdG90eXBlLnNldEJvb2xlYW4gPSBmdW5jdGlvbiAoeCAvKmludCovLCB5IC8qaW50Ki8sIHZhbHVlKSB7XG4gICAgICAgIHRoaXMuYnl0ZXNbeV1beF0gPSAvKihieXRlKSAqLyAodmFsdWUgPyAxIDogMCk7XG4gICAgfTtcbiAgICBCeXRlTWF0cml4LnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uICh2YWx1ZSAvKmJ5dGUqLykge1xuICAgICAgICB2YXIgZV8xLCBfYTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAodmFyIF9iID0gX192YWx1ZXModGhpcy5ieXRlcyksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgYUJ5dGUgPSBfYy52YWx1ZTtcbiAgICAgICAgICAgICAgICBBcnJheXNfMS5kZWZhdWx0LmZpbGwoYUJ5dGUsIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBCeXRlTWF0cml4LnByb3RvdHlwZS5lcXVhbHMgPSBmdW5jdGlvbiAobykge1xuICAgICAgICBpZiAoIShvIGluc3RhbmNlb2YgQnl0ZU1hdHJpeCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgb3RoZXIgPSBvO1xuICAgICAgICBpZiAodGhpcy53aWR0aCAhPT0gb3RoZXIud2lkdGgpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5oZWlnaHQgIT09IG90aGVyLmhlaWdodCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGZvciAodmFyIHkgPSAwLCBoZWlnaHQgPSB0aGlzLmhlaWdodDsgeSA8IGhlaWdodDsgKyt5KSB7XG4gICAgICAgICAgICB2YXIgYnl0ZXNZID0gdGhpcy5ieXRlc1t5XTtcbiAgICAgICAgICAgIHZhciBvdGhlckJ5dGVzWSA9IG90aGVyLmJ5dGVzW3ldO1xuICAgICAgICAgICAgZm9yICh2YXIgeCA9IDAsIHdpZHRoID0gdGhpcy53aWR0aDsgeCA8IHdpZHRoOyArK3gpIHtcbiAgICAgICAgICAgICAgICBpZiAoYnl0ZXNZW3hdICE9PSBvdGhlckJ5dGVzWVt4XSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG4gICAgLypAT3ZlcnJpZGUqL1xuICAgIEJ5dGVNYXRyaXgucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1aWxkZXJfMS5kZWZhdWx0KCk7IC8vICgyICogd2lkdGggKiBoZWlnaHQgKyAyKVxuICAgICAgICBmb3IgKHZhciB5ID0gMCwgaGVpZ2h0ID0gdGhpcy5oZWlnaHQ7IHkgPCBoZWlnaHQ7ICsreSkge1xuICAgICAgICAgICAgdmFyIGJ5dGVzWSA9IHRoaXMuYnl0ZXNbeV07XG4gICAgICAgICAgICBmb3IgKHZhciB4ID0gMCwgd2lkdGggPSB0aGlzLndpZHRoOyB4IDwgd2lkdGg7ICsreCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoYnl0ZXNZW3hdKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAwJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnIDEnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xcbicpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTtcbiAgICB9O1xuICAgIHJldHVybiBCeXRlTWF0cml4O1xufSgpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IEJ5dGVNYXRyaXg7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1CeXRlTWF0cml4LmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuLypcbiAqIENvcHlyaWdodCAyMDA4IFpYaW5nIGF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgU3RyaW5nQnVpbGRlcl8xID0gcmVxdWlyZShcIi4uLy4uL3V0aWwvU3RyaW5nQnVpbGRlclwiKTtcbi8qKlxuICogQGF1dGhvciBzYXRvcnV4QGdvb2dsZS5jb20gKFNhdG9ydSBUYWthYmF5YXNoaSkgLSBjcmVhdG9yXG4gKiBAYXV0aG9yIGRzd2l0a2luQGdvb2dsZS5jb20gKERhbmllbCBTd2l0a2luKSAtIHBvcnRlZCBmcm9tIEMrK1xuICovXG52YXIgUVJDb2RlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFFSQ29kZSgpIHtcbiAgICAgICAgdGhpcy5tYXNrUGF0dGVybiA9IC0xO1xuICAgIH1cbiAgICBRUkNvZGUucHJvdG90eXBlLmdldE1vZGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vZGU7XG4gICAgfTtcbiAgICBRUkNvZGUucHJvdG90eXBlLmdldEVDTGV2ZWwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVjTGV2ZWw7XG4gICAgfTtcbiAgICBRUkNvZGUucHJvdG90eXBlLmdldFZlcnNpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZlcnNpb247XG4gICAgfTtcbiAgICBRUkNvZGUucHJvdG90eXBlLmdldE1hc2tQYXR0ZXJuID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXNrUGF0dGVybjtcbiAgICB9O1xuICAgIFFSQ29kZS5wcm90b3R5cGUuZ2V0TWF0cml4ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXRyaXg7XG4gICAgfTtcbiAgICAvKkBPdmVycmlkZSovXG4gICAgUVJDb2RlLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWlsZGVyXzEuZGVmYXVsdCgpOyAvLyAoMjAwKVxuICAgICAgICByZXN1bHQuYXBwZW5kKCc8PFxcbicpO1xuICAgICAgICByZXN1bHQuYXBwZW5kKCcgbW9kZTogJyk7XG4gICAgICAgIHJlc3VsdC5hcHBlbmQodGhpcy5tb2RlID8gdGhpcy5tb2RlLnRvU3RyaW5nKCkgOiAnbnVsbCcpO1xuICAgICAgICByZXN1bHQuYXBwZW5kKCdcXG4gZWNMZXZlbDogJyk7XG4gICAgICAgIHJlc3VsdC5hcHBlbmQodGhpcy5lY0xldmVsID8gdGhpcy5lY0xldmVsLnRvU3RyaW5nKCkgOiAnbnVsbCcpO1xuICAgICAgICByZXN1bHQuYXBwZW5kKCdcXG4gdmVyc2lvbjogJyk7XG4gICAgICAgIHJlc3VsdC5hcHBlbmQodGhpcy52ZXJzaW9uID8gdGhpcy52ZXJzaW9uLnRvU3RyaW5nKCkgOiAnbnVsbCcpO1xuICAgICAgICByZXN1bHQuYXBwZW5kKCdcXG4gbWFza1BhdHRlcm46ICcpO1xuICAgICAgICByZXN1bHQuYXBwZW5kKHRoaXMubWFza1BhdHRlcm4udG9TdHJpbmcoKSk7XG4gICAgICAgIGlmICh0aGlzLm1hdHJpeCkge1xuICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXFxuIG1hdHJpeDpcXG4nKTtcbiAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodGhpcy5tYXRyaXgudG9TdHJpbmcoKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCdcXG4gbWF0cml4OiBudWxsXFxuJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0LmFwcGVuZCgnPj5cXG4nKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpO1xuICAgIH07XG4gICAgUVJDb2RlLnByb3RvdHlwZS5zZXRNb2RlID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHRoaXMubW9kZSA9IHZhbHVlO1xuICAgIH07XG4gICAgUVJDb2RlLnByb3RvdHlwZS5zZXRFQ0xldmVsID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuZWNMZXZlbCA9IHZhbHVlO1xuICAgIH07XG4gICAgUVJDb2RlLnByb3RvdHlwZS5zZXRWZXJzaW9uID0gZnVuY3Rpb24gKHZlcnNpb24pIHtcbiAgICAgICAgdGhpcy52ZXJzaW9uID0gdmVyc2lvbjtcbiAgICB9O1xuICAgIFFSQ29kZS5wcm90b3R5cGUuc2V0TWFza1BhdHRlcm4gPSBmdW5jdGlvbiAodmFsdWUgLyppbnQqLykge1xuICAgICAgICB0aGlzLm1hc2tQYXR0ZXJuID0gdmFsdWU7XG4gICAgfTtcbiAgICBRUkNvZGUucHJvdG90eXBlLnNldE1hdHJpeCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICB0aGlzLm1hdHJpeCA9IHZhbHVlO1xuICAgIH07XG4gICAgLy8gQ2hlY2sgaWYgXCJtYXNrX3BhdHRlcm5cIiBpcyB2YWxpZC5cbiAgICBRUkNvZGUuaXNWYWxpZE1hc2tQYXR0ZXJuID0gZnVuY3Rpb24gKG1hc2tQYXR0ZXJuIC8qaW50Ki8pIHtcbiAgICAgICAgcmV0dXJuIG1hc2tQYXR0ZXJuID49IDAgJiYgbWFza1BhdHRlcm4gPCBRUkNvZGUuTlVNX01BU0tfUEFUVEVSTlM7XG4gICAgfTtcbiAgICBRUkNvZGUuTlVNX01BU0tfUEFUVEVSTlMgPSA4O1xuICAgIHJldHVybiBRUkNvZGU7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gUVJDb2RlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UVJDb2RlLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgRXhjZXB0aW9uXzEgPSByZXF1aXJlKFwiLi9FeGNlcHRpb25cIik7XG4vKipcbiAqIEN1c3RvbSBFcnJvciBjbGFzcyBvZiB0eXBlIEV4Y2VwdGlvbi5cbiAqL1xudmFyIFdyaXRlckV4Y2VwdGlvbiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoV3JpdGVyRXhjZXB0aW9uLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFdyaXRlckV4Y2VwdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBXcml0ZXJFeGNlcHRpb24ua2luZCA9ICdXcml0ZXJFeGNlcHRpb24nO1xuICAgIHJldHVybiBXcml0ZXJFeGNlcHRpb247XG59KEV4Y2VwdGlvbl8xLmRlZmF1bHQpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IFdyaXRlckV4Y2VwdGlvbjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVdyaXRlckV4Y2VwdGlvbi5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8qXG4gKiBDb3B5cmlnaHQgMjAwOCBaWGluZyBhdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLypuYW1lc3BhY2UgY29tLmdvb2dsZS56eGluZy5xcmNvZGUuZW5jb2RlciB7Ki9cbnZhciBCaXRBcnJheV8xID0gcmVxdWlyZShcIi4uLy4uL2NvbW1vbi9CaXRBcnJheVwiKTtcbnZhciBJbnRlZ2VyXzEgPSByZXF1aXJlKFwiLi4vLi4vdXRpbC9JbnRlZ2VyXCIpO1xudmFyIFFSQ29kZV8xID0gcmVxdWlyZShcIi4vUVJDb2RlXCIpO1xudmFyIE1hc2tVdGlsXzEgPSByZXF1aXJlKFwiLi9NYXNrVXRpbFwiKTtcbnZhciBXcml0ZXJFeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuLi8uLi9Xcml0ZXJFeGNlcHRpb25cIik7XG52YXIgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEgPSByZXF1aXJlKFwiLi4vLi4vSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXCIpO1xuLyoqXG4gKiBAYXV0aG9yIHNhdG9ydXhAZ29vZ2xlLmNvbSAoU2F0b3J1IFRha2FiYXlhc2hpKSAtIGNyZWF0b3JcbiAqIEBhdXRob3IgZHN3aXRraW5AZ29vZ2xlLmNvbSAoRGFuaWVsIFN3aXRraW4pIC0gcG9ydGVkIGZyb20gQysrXG4gKi9cbnZhciBNYXRyaXhVdGlsID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIE1hdHJpeFV0aWwoKSB7XG4gICAgICAgIC8vIGRvIG5vdGhpbmdcbiAgICB9XG4gICAgLy8gU2V0IGFsbCBjZWxscyB0byAtMSAoVFlQRVNDUklQVFBPUlQ6IDI1NSkuICAtMSAoVFlQRVNDUklQVFBPUlQ6IDI1NSkgbWVhbnMgdGhhdCB0aGUgY2VsbCBpcyBlbXB0eSAobm90IHNldCB5ZXQpLlxuICAgIC8vXG4gICAgLy8gSkFWQVBPUlQ6IFdlIHNob3VsZG4ndCBuZWVkIHRvIGRvIHRoaXMgYXQgYWxsLiBUaGUgY29kZSBzaG91bGQgYmUgcmV3cml0dGVuIHRvIGJlZ2luIGVuY29kaW5nXG4gICAgLy8gd2l0aCB0aGUgQnl0ZU1hdHJpeCBpbml0aWFsaXplZCBhbGwgdG8gemVyby5cbiAgICBNYXRyaXhVdGlsLmNsZWFyTWF0cml4ID0gZnVuY3Rpb24gKG1hdHJpeCkge1xuICAgICAgICAvLyBUWVBFU0NSSVBUUE9SVDogd2UgdXNlIFVpbnRBcnJheSBzZSBjaGFuZ2VkIGhlcmUgZnJvbSAtMSB0byAyNTVcbiAgICAgICAgbWF0cml4LmNsZWFyKC8qKGJ5dGUpICovIC8qLTEqLyAyNTUpO1xuICAgIH07XG4gICAgLy8gQnVpbGQgMkQgbWF0cml4IG9mIFFSIENvZGUgZnJvbSBcImRhdGFCaXRzXCIgd2l0aCBcImVjTGV2ZWxcIiwgXCJ2ZXJzaW9uXCIgYW5kIFwiZ2V0TWFza1BhdHRlcm5cIi4gT25cbiAgICAvLyBzdWNjZXNzLCBzdG9yZSB0aGUgcmVzdWx0IGluIFwibWF0cml4XCIgYW5kIHJldHVybiB0cnVlLlxuICAgIE1hdHJpeFV0aWwuYnVpbGRNYXRyaXggPSBmdW5jdGlvbiAoZGF0YUJpdHMsIGVjTGV2ZWwsIHZlcnNpb24sIG1hc2tQYXR0ZXJuIC8qaW50Ki8sIG1hdHJpeCkge1xuICAgICAgICBNYXRyaXhVdGlsLmNsZWFyTWF0cml4KG1hdHJpeCk7XG4gICAgICAgIE1hdHJpeFV0aWwuZW1iZWRCYXNpY1BhdHRlcm5zKHZlcnNpb24sIG1hdHJpeCk7XG4gICAgICAgIC8vIFR5cGUgaW5mb3JtYXRpb24gYXBwZWFyIHdpdGggYW55IHZlcnNpb24uXG4gICAgICAgIE1hdHJpeFV0aWwuZW1iZWRUeXBlSW5mbyhlY0xldmVsLCBtYXNrUGF0dGVybiwgbWF0cml4KTtcbiAgICAgICAgLy8gVmVyc2lvbiBpbmZvIGFwcGVhciBpZiB2ZXJzaW9uID49IDcuXG4gICAgICAgIE1hdHJpeFV0aWwubWF5YmVFbWJlZFZlcnNpb25JbmZvKHZlcnNpb24sIG1hdHJpeCk7XG4gICAgICAgIC8vIERhdGEgc2hvdWxkIGJlIGVtYmVkZGVkIGF0IGVuZC5cbiAgICAgICAgTWF0cml4VXRpbC5lbWJlZERhdGFCaXRzKGRhdGFCaXRzLCBtYXNrUGF0dGVybiwgbWF0cml4KTtcbiAgICB9O1xuICAgIC8vIEVtYmVkIGJhc2ljIHBhdHRlcm5zLiBPbiBzdWNjZXNzLCBtb2RpZnkgdGhlIG1hdHJpeCBhbmQgcmV0dXJuIHRydWUuXG4gICAgLy8gVGhlIGJhc2ljIHBhdHRlcm5zIGFyZTpcbiAgICAvLyAtIFBvc2l0aW9uIGRldGVjdGlvbiBwYXR0ZXJuc1xuICAgIC8vIC0gVGltaW5nIHBhdHRlcm5zXG4gICAgLy8gLSBEYXJrIGRvdCBhdCB0aGUgbGVmdCBib3R0b20gY29ybmVyXG4gICAgLy8gLSBQb3NpdGlvbiBhZGp1c3RtZW50IHBhdHRlcm5zLCBpZiBuZWVkIGJlXG4gICAgTWF0cml4VXRpbC5lbWJlZEJhc2ljUGF0dGVybnMgPSBmdW5jdGlvbiAodmVyc2lvbiwgbWF0cml4KSB7XG4gICAgICAgIC8vIExldCdzIGdldCBzdGFydGVkIHdpdGggZW1iZWRkaW5nIGJpZyBzcXVhcmVzIGF0IGNvcm5lcnMuXG4gICAgICAgIE1hdHJpeFV0aWwuZW1iZWRQb3NpdGlvbkRldGVjdGlvblBhdHRlcm5zQW5kU2VwYXJhdG9ycyhtYXRyaXgpO1xuICAgICAgICAvLyBUaGVuLCBlbWJlZCB0aGUgZGFyayBkb3QgYXQgdGhlIGxlZnQgYm90dG9tIGNvcm5lci5cbiAgICAgICAgTWF0cml4VXRpbC5lbWJlZERhcmtEb3RBdExlZnRCb3R0b21Db3JuZXIobWF0cml4KTtcbiAgICAgICAgLy8gUG9zaXRpb24gYWRqdXN0bWVudCBwYXR0ZXJucyBhcHBlYXIgaWYgdmVyc2lvbiA+PSAyLlxuICAgICAgICBNYXRyaXhVdGlsLm1heWJlRW1iZWRQb3NpdGlvbkFkanVzdG1lbnRQYXR0ZXJucyh2ZXJzaW9uLCBtYXRyaXgpO1xuICAgICAgICAvLyBUaW1pbmcgcGF0dGVybnMgc2hvdWxkIGJlIGVtYmVkZGVkIGFmdGVyIHBvc2l0aW9uIGFkai4gcGF0dGVybnMuXG4gICAgICAgIE1hdHJpeFV0aWwuZW1iZWRUaW1pbmdQYXR0ZXJucyhtYXRyaXgpO1xuICAgIH07XG4gICAgLy8gRW1iZWQgdHlwZSBpbmZvcm1hdGlvbi4gT24gc3VjY2VzcywgbW9kaWZ5IHRoZSBtYXRyaXguXG4gICAgTWF0cml4VXRpbC5lbWJlZFR5cGVJbmZvID0gZnVuY3Rpb24gKGVjTGV2ZWwsIG1hc2tQYXR0ZXJuIC8qaW50Ki8sIG1hdHJpeCkge1xuICAgICAgICB2YXIgdHlwZUluZm9CaXRzID0gbmV3IEJpdEFycmF5XzEuZGVmYXVsdCgpO1xuICAgICAgICBNYXRyaXhVdGlsLm1ha2VUeXBlSW5mb0JpdHMoZWNMZXZlbCwgbWFza1BhdHRlcm4sIHR5cGVJbmZvQml0cyk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBzaXplID0gdHlwZUluZm9CaXRzLmdldFNpemUoKTsgaSA8IHNpemU7ICsraSkge1xuICAgICAgICAgICAgLy8gUGxhY2UgYml0cyBpbiBMU0IgdG8gTVNCIG9yZGVyLiAgTFNCIChsZWFzdCBzaWduaWZpY2FudCBiaXQpIGlzIHRoZSBsYXN0IHZhbHVlIGluXG4gICAgICAgICAgICAvLyBcInR5cGVJbmZvQml0c1wiLlxuICAgICAgICAgICAgdmFyIGJpdCA9IHR5cGVJbmZvQml0cy5nZXQodHlwZUluZm9CaXRzLmdldFNpemUoKSAtIDEgLSBpKTtcbiAgICAgICAgICAgIC8vIFR5cGUgaW5mbyBiaXRzIGF0IHRoZSBsZWZ0IHRvcCBjb3JuZXIuIFNlZSA4Ljkgb2YgSklTWDA1MTA6MjAwNCAocC40NikuXG4gICAgICAgICAgICB2YXIgY29vcmRpbmF0ZXMgPSBNYXRyaXhVdGlsLlRZUEVfSU5GT19DT09SRElOQVRFU1tpXTtcbiAgICAgICAgICAgIHZhciB4MSA9IGNvb3JkaW5hdGVzWzBdO1xuICAgICAgICAgICAgdmFyIHkxID0gY29vcmRpbmF0ZXNbMV07XG4gICAgICAgICAgICBtYXRyaXguc2V0Qm9vbGVhbih4MSwgeTEsIGJpdCk7XG4gICAgICAgICAgICBpZiAoaSA8IDgpIHtcbiAgICAgICAgICAgICAgICAvLyBSaWdodCB0b3AgY29ybmVyLlxuICAgICAgICAgICAgICAgIHZhciB4MiA9IG1hdHJpeC5nZXRXaWR0aCgpIC0gaSAtIDE7XG4gICAgICAgICAgICAgICAgdmFyIHkyID0gODtcbiAgICAgICAgICAgICAgICBtYXRyaXguc2V0Qm9vbGVhbih4MiwgeTIsIGJpdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBMZWZ0IGJvdHRvbSBjb3JuZXIuXG4gICAgICAgICAgICAgICAgdmFyIHgyID0gODtcbiAgICAgICAgICAgICAgICB2YXIgeTIgPSBtYXRyaXguZ2V0SGVpZ2h0KCkgLSA3ICsgKGkgLSA4KTtcbiAgICAgICAgICAgICAgICBtYXRyaXguc2V0Qm9vbGVhbih4MiwgeTIsIGJpdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIEVtYmVkIHZlcnNpb24gaW5mb3JtYXRpb24gaWYgbmVlZCBiZS4gT24gc3VjY2VzcywgbW9kaWZ5IHRoZSBtYXRyaXggYW5kIHJldHVybiB0cnVlLlxuICAgIC8vIFNlZSA4LjEwIG9mIEpJU1gwNTEwOjIwMDQgKHAuNDcpIGZvciBob3cgdG8gZW1iZWQgdmVyc2lvbiBpbmZvcm1hdGlvbi5cbiAgICBNYXRyaXhVdGlsLm1heWJlRW1iZWRWZXJzaW9uSW5mbyA9IGZ1bmN0aW9uICh2ZXJzaW9uLCBtYXRyaXgpIHtcbiAgICAgICAgaWYgKHZlcnNpb24uZ2V0VmVyc2lvbk51bWJlcigpIDwgNykgeyAvLyBWZXJzaW9uIGluZm8gaXMgbmVjZXNzYXJ5IGlmIHZlcnNpb24gPj0gNy5cbiAgICAgICAgICAgIHJldHVybjsgLy8gRG9uJ3QgbmVlZCB2ZXJzaW9uIGluZm8uXG4gICAgICAgIH1cbiAgICAgICAgdmFyIHZlcnNpb25JbmZvQml0cyA9IG5ldyBCaXRBcnJheV8xLmRlZmF1bHQoKTtcbiAgICAgICAgTWF0cml4VXRpbC5tYWtlVmVyc2lvbkluZm9CaXRzKHZlcnNpb24sIHZlcnNpb25JbmZvQml0cyk7XG4gICAgICAgIHZhciBiaXRJbmRleCA9IDYgKiAzIC0gMTsgLy8gSXQgd2lsbCBkZWNyZWFzZSBmcm9tIDE3IHRvIDAuXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgKytpKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDM7ICsraikge1xuICAgICAgICAgICAgICAgIC8vIFBsYWNlIGJpdHMgaW4gTFNCIChsZWFzdCBzaWduaWZpY2FudCBiaXQpIHRvIE1TQiBvcmRlci5cbiAgICAgICAgICAgICAgICB2YXIgYml0ID0gdmVyc2lvbkluZm9CaXRzLmdldChiaXRJbmRleCk7XG4gICAgICAgICAgICAgICAgYml0SW5kZXgtLTtcbiAgICAgICAgICAgICAgICAvLyBMZWZ0IGJvdHRvbSBjb3JuZXIuXG4gICAgICAgICAgICAgICAgbWF0cml4LnNldEJvb2xlYW4oaSwgbWF0cml4LmdldEhlaWdodCgpIC0gMTEgKyBqLCBiaXQpO1xuICAgICAgICAgICAgICAgIC8vIFJpZ2h0IGJvdHRvbSBjb3JuZXIuXG4gICAgICAgICAgICAgICAgbWF0cml4LnNldEJvb2xlYW4obWF0cml4LmdldEhlaWdodCgpIC0gMTEgKyBqLCBpLCBiaXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICAvLyBFbWJlZCBcImRhdGFCaXRzXCIgdXNpbmcgXCJnZXRNYXNrUGF0dGVyblwiLiBPbiBzdWNjZXNzLCBtb2RpZnkgdGhlIG1hdHJpeCBhbmQgcmV0dXJuIHRydWUuXG4gICAgLy8gRm9yIGRlYnVnZ2luZyBwdXJwb3NlcywgaXQgc2tpcHMgbWFza2luZyBwcm9jZXNzIGlmIFwiZ2V0TWFza1BhdHRlcm5cIiBpcyAtMShUWVBFU0NSSVBUUE9SVDogMjU1KS5cbiAgICAvLyBTZWUgOC43IG9mIEpJU1gwNTEwOjIwMDQgKHAuMzgpIGZvciBob3cgdG8gZW1iZWQgZGF0YSBiaXRzLlxuICAgIE1hdHJpeFV0aWwuZW1iZWREYXRhQml0cyA9IGZ1bmN0aW9uIChkYXRhQml0cywgbWFza1BhdHRlcm4gLyppbnQqLywgbWF0cml4KSB7XG4gICAgICAgIHZhciBiaXRJbmRleCA9IDA7XG4gICAgICAgIHZhciBkaXJlY3Rpb24gPSAtMTtcbiAgICAgICAgLy8gU3RhcnQgZnJvbSB0aGUgcmlnaHQgYm90dG9tIGNlbGwuXG4gICAgICAgIHZhciB4ID0gbWF0cml4LmdldFdpZHRoKCkgLSAxO1xuICAgICAgICB2YXIgeSA9IG1hdHJpeC5nZXRIZWlnaHQoKSAtIDE7XG4gICAgICAgIHdoaWxlICh4ID4gMCkge1xuICAgICAgICAgICAgLy8gU2tpcCB0aGUgdmVydGljYWwgdGltaW5nIHBhdHRlcm4uXG4gICAgICAgICAgICBpZiAoeCA9PT0gNikge1xuICAgICAgICAgICAgICAgIHggLT0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHdoaWxlICh5ID49IDAgJiYgeSA8IG1hdHJpeC5nZXRIZWlnaHQoKSkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB4eCA9IHggLSBpO1xuICAgICAgICAgICAgICAgICAgICAvLyBTa2lwIHRoZSBjZWxsIGlmIGl0J3Mgbm90IGVtcHR5LlxuICAgICAgICAgICAgICAgICAgICBpZiAoIU1hdHJpeFV0aWwuaXNFbXB0eShtYXRyaXguZ2V0KHh4LCB5KSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHZhciBiaXQgPSB2b2lkIDA7XG4gICAgICAgICAgICAgICAgICAgIGlmIChiaXRJbmRleCA8IGRhdGFCaXRzLmdldFNpemUoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYml0ID0gZGF0YUJpdHMuZ2V0KGJpdEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICsrYml0SW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBQYWRkaW5nIGJpdC4gSWYgdGhlcmUgaXMgbm8gYml0IGxlZnQsIHdlJ2xsIGZpbGwgdGhlIGxlZnQgY2VsbHMgd2l0aCAwLCBhcyBkZXNjcmliZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluIDguNC45IG9mIEpJU1gwNTEwOjIwMDQgKHAuIDI0KS5cbiAgICAgICAgICAgICAgICAgICAgICAgIGJpdCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIFNraXAgbWFza2luZyBpZiBtYXNrX3BhdHRlcm4gaXMgLTEgKFRZUEVTQ1JJUFRQT1JUOiAyNTUpLlxuICAgICAgICAgICAgICAgICAgICBpZiAobWFza1BhdHRlcm4gIT09IDI1NSAmJiBNYXNrVXRpbF8xLmRlZmF1bHQuZ2V0RGF0YU1hc2tCaXQobWFza1BhdHRlcm4sIHh4LCB5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYml0ID0gIWJpdDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBtYXRyaXguc2V0Qm9vbGVhbih4eCwgeSwgYml0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgeSArPSBkaXJlY3Rpb247XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkaXJlY3Rpb24gPSAtZGlyZWN0aW9uOyAvLyBSZXZlcnNlIHRoZSBkaXJlY3Rpb24uXG4gICAgICAgICAgICB5ICs9IGRpcmVjdGlvbjtcbiAgICAgICAgICAgIHggLT0gMjsgLy8gTW92ZSB0byB0aGUgbGVmdC5cbiAgICAgICAgfVxuICAgICAgICAvLyBBbGwgYml0cyBzaG91bGQgYmUgY29uc3VtZWQuXG4gICAgICAgIGlmIChiaXRJbmRleCAhPT0gZGF0YUJpdHMuZ2V0U2l6ZSgpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgV3JpdGVyRXhjZXB0aW9uXzEuZGVmYXVsdCgnTm90IGFsbCBiaXRzIGNvbnN1bWVkOiAnICsgYml0SW5kZXggKyAnLycgKyBkYXRhQml0cy5nZXRTaXplKCkpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvLyBSZXR1cm4gdGhlIHBvc2l0aW9uIG9mIHRoZSBtb3N0IHNpZ25pZmljYW50IGJpdCBzZXQgKG9uZTogdG8pIGluIHRoZSBcInZhbHVlXCIuIFRoZSBtb3N0XG4gICAgLy8gc2lnbmlmaWNhbnQgYml0IGlzIHBvc2l0aW9uIDMyLiBJZiB0aGVyZSBpcyBubyBiaXQgc2V0LCByZXR1cm4gMC4gRXhhbXBsZXM6XG4gICAgLy8gLSBmaW5kTVNCU2V0KDApID0+IDBcbiAgICAvLyAtIGZpbmRNU0JTZXQoMSkgPT4gMVxuICAgIC8vIC0gZmluZE1TQlNldCgyNTUpID0+IDhcbiAgICBNYXRyaXhVdGlsLmZpbmRNU0JTZXQgPSBmdW5jdGlvbiAodmFsdWUgLyppbnQqLykge1xuICAgICAgICByZXR1cm4gMzIgLSBJbnRlZ2VyXzEuZGVmYXVsdC5udW1iZXJPZkxlYWRpbmdaZXJvcyh2YWx1ZSk7XG4gICAgfTtcbiAgICAvLyBDYWxjdWxhdGUgQkNIIChCb3NlLUNoYXVkaHVyaS1Ib2NxdWVuZ2hlbSkgY29kZSBmb3IgXCJ2YWx1ZVwiIHVzaW5nIHBvbHlub21pYWwgXCJwb2x5XCIuIFRoZSBCQ0hcbiAgICAvLyBjb2RlIGlzIHVzZWQgZm9yIGVuY29kaW5nIHR5cGUgaW5mb3JtYXRpb24gYW5kIHZlcnNpb24gaW5mb3JtYXRpb24uXG4gICAgLy8gRXhhbXBsZTogQ2FsY3VsYXRpb24gb2YgdmVyc2lvbiBpbmZvcm1hdGlvbiBvZiA3LlxuICAgIC8vIGYoeCkgaXMgY3JlYXRlZCBmcm9tIDcuXG4gICAgLy8gICAtIDcgPSAwMDAxMTEgaW4gNiBiaXRzXG4gICAgLy8gICAtIGYoeCkgPSB4XjIgKyB4XjEgKyB4XjBcbiAgICAvLyBnKHgpIGlzIGdpdmVuIGJ5IHRoZSBzdGFuZGFyZCAocC4gNjcpXG4gICAgLy8gICAtIGcoeCkgPSB4XjEyICsgeF4xMSArIHheMTAgKyB4XjkgKyB4XjggKyB4XjUgKyB4XjIgKyAxXG4gICAgLy8gTXVsdGlwbHkgZih4KSBieSB4XigxOCAtIDYpXG4gICAgLy8gICAtIGYnKHgpID0gZih4KSAqIHheKDE4IC0gNilcbiAgICAvLyAgIC0gZicoeCkgPSB4XjE0ICsgeF4xMyArIHheMTJcbiAgICAvLyBDYWxjdWxhdGUgdGhlIHJlbWFpbmRlciBvZiBmJyh4KSAvIGcoeClcbiAgICAvLyAgICAgICAgIHheMlxuICAgIC8vICAgICAgICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19cbiAgICAvLyAgIGcoeCkgKXheMTQgKyB4XjEzICsgeF4xMlxuICAgIC8vICAgICAgICAgeF4xNCArIHheMTMgKyB4XjEyICsgeF4xMSArIHheMTAgKyB4XjcgKyB4XjQgKyB4XjJcbiAgICAvLyAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4XjExICsgeF4xMCArIHheNyArIHheNCArIHheMlxuICAgIC8vXG4gICAgLy8gVGhlIHJlbWFpbmRlciBpcyB4XjExICsgeF4xMCArIHheNyArIHheNCArIHheMlxuICAgIC8vIEVuY29kZSBpdCBpbiBiaW5hcnk6IDExMDAxMDAxMDEwMFxuICAgIC8vIFRoZSByZXR1cm4gdmFsdWUgaXMgMHhjOTQgKDExMDAgMTAwMSAwMTAwKVxuICAgIC8vXG4gICAgLy8gU2luY2UgYWxsIGNvZWZmaWNpZW50cyBpbiB0aGUgcG9seW5vbWlhbHMgYXJlIDEgb3IgMCwgd2UgY2FuIGRvIHRoZSBjYWxjdWxhdGlvbiBieSBiaXRcbiAgICAvLyBvcGVyYXRpb25zLiBXZSBkb24ndCBjYXJlIGlmIGNvZWZmaWNpZW50cyBhcmUgcG9zaXRpdmUgb3IgbmVnYXRpdmUuXG4gICAgTWF0cml4VXRpbC5jYWxjdWxhdGVCQ0hDb2RlID0gZnVuY3Rpb24gKHZhbHVlIC8qaW50Ki8sIHBvbHkgLyppbnQqLykge1xuICAgICAgICBpZiAocG9seSA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoJzAgcG9seW5vbWlhbCcpO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIHBvbHkgaXMgXCIxIDExMTEgMDAxMCAwMTAxXCIgKHZlcnNpb24gaW5mbyBwb2x5KSwgbXNiU2V0SW5Qb2x5IGlzIDEzLiBXZSdsbCBzdWJ0cmFjdCAxXG4gICAgICAgIC8vIGZyb20gMTMgdG8gbWFrZSBpdCAxMi5cbiAgICAgICAgdmFyIG1zYlNldEluUG9seSA9IE1hdHJpeFV0aWwuZmluZE1TQlNldChwb2x5KTtcbiAgICAgICAgdmFsdWUgPDw9IG1zYlNldEluUG9seSAtIDE7XG4gICAgICAgIC8vIERvIHRoZSBkaXZpc2lvbiBidXNpbmVzcyB1c2luZyBleGNsdXNpdmUtb3Igb3BlcmF0aW9ucy5cbiAgICAgICAgd2hpbGUgKE1hdHJpeFV0aWwuZmluZE1TQlNldCh2YWx1ZSkgPj0gbXNiU2V0SW5Qb2x5KSB7XG4gICAgICAgICAgICB2YWx1ZSBePSBwb2x5IDw8IChNYXRyaXhVdGlsLmZpbmRNU0JTZXQodmFsdWUpIC0gbXNiU2V0SW5Qb2x5KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBOb3cgdGhlIFwidmFsdWVcIiBpcyB0aGUgcmVtYWluZGVyIChpLmUuIHRoZSBCQ0ggY29kZSlcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH07XG4gICAgLy8gTWFrZSBiaXQgdmVjdG9yIG9mIHR5cGUgaW5mb3JtYXRpb24uIE9uIHN1Y2Nlc3MsIHN0b3JlIHRoZSByZXN1bHQgaW4gXCJiaXRzXCIgYW5kIHJldHVybiB0cnVlLlxuICAgIC8vIEVuY29kZSBlcnJvciBjb3JyZWN0aW9uIGxldmVsIGFuZCBtYXNrIHBhdHRlcm4uIFNlZSA4Ljkgb2ZcbiAgICAvLyBKSVNYMDUxMDoyMDA0IChwLjQ1KSBmb3IgZGV0YWlscy5cbiAgICBNYXRyaXhVdGlsLm1ha2VUeXBlSW5mb0JpdHMgPSBmdW5jdGlvbiAoZWNMZXZlbCwgbWFza1BhdHRlcm4gLyppbnQqLywgYml0cykge1xuICAgICAgICBpZiAoIVFSQ29kZV8xLmRlZmF1bHQuaXNWYWxpZE1hc2tQYXR0ZXJuKG1hc2tQYXR0ZXJuKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFdyaXRlckV4Y2VwdGlvbl8xLmRlZmF1bHQoJ0ludmFsaWQgbWFzayBwYXR0ZXJuJyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHR5cGVJbmZvID0gKGVjTGV2ZWwuZ2V0Qml0cygpIDw8IDMpIHwgbWFza1BhdHRlcm47XG4gICAgICAgIGJpdHMuYXBwZW5kQml0cyh0eXBlSW5mbywgNSk7XG4gICAgICAgIHZhciBiY2hDb2RlID0gTWF0cml4VXRpbC5jYWxjdWxhdGVCQ0hDb2RlKHR5cGVJbmZvLCBNYXRyaXhVdGlsLlRZUEVfSU5GT19QT0xZKTtcbiAgICAgICAgYml0cy5hcHBlbmRCaXRzKGJjaENvZGUsIDEwKTtcbiAgICAgICAgdmFyIG1hc2tCaXRzID0gbmV3IEJpdEFycmF5XzEuZGVmYXVsdCgpO1xuICAgICAgICBtYXNrQml0cy5hcHBlbmRCaXRzKE1hdHJpeFV0aWwuVFlQRV9JTkZPX01BU0tfUEFUVEVSTiwgMTUpO1xuICAgICAgICBiaXRzLnhvcihtYXNrQml0cyk7XG4gICAgICAgIGlmIChiaXRzLmdldFNpemUoKSAhPT0gMTUpIHsgLy8gSnVzdCBpbiBjYXNlLlxuICAgICAgICAgICAgdGhyb3cgbmV3IFdyaXRlckV4Y2VwdGlvbl8xLmRlZmF1bHQoJ3Nob3VsZCBub3QgaGFwcGVuIGJ1dCB3ZSBnb3Q6ICcgKyBiaXRzLmdldFNpemUoKSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIE1ha2UgYml0IHZlY3RvciBvZiB2ZXJzaW9uIGluZm9ybWF0aW9uLiBPbiBzdWNjZXNzLCBzdG9yZSB0aGUgcmVzdWx0IGluIFwiYml0c1wiIGFuZCByZXR1cm4gdHJ1ZS5cbiAgICAvLyBTZWUgOC4xMCBvZiBKSVNYMDUxMDoyMDA0IChwLjQ1KSBmb3IgZGV0YWlscy5cbiAgICBNYXRyaXhVdGlsLm1ha2VWZXJzaW9uSW5mb0JpdHMgPSBmdW5jdGlvbiAodmVyc2lvbiwgYml0cykge1xuICAgICAgICBiaXRzLmFwcGVuZEJpdHModmVyc2lvbi5nZXRWZXJzaW9uTnVtYmVyKCksIDYpO1xuICAgICAgICB2YXIgYmNoQ29kZSA9IE1hdHJpeFV0aWwuY2FsY3VsYXRlQkNIQ29kZSh2ZXJzaW9uLmdldFZlcnNpb25OdW1iZXIoKSwgTWF0cml4VXRpbC5WRVJTSU9OX0lORk9fUE9MWSk7XG4gICAgICAgIGJpdHMuYXBwZW5kQml0cyhiY2hDb2RlLCAxMik7XG4gICAgICAgIGlmIChiaXRzLmdldFNpemUoKSAhPT0gMTgpIHsgLy8gSnVzdCBpbiBjYXNlLlxuICAgICAgICAgICAgdGhyb3cgbmV3IFdyaXRlckV4Y2VwdGlvbl8xLmRlZmF1bHQoJ3Nob3VsZCBub3QgaGFwcGVuIGJ1dCB3ZSBnb3Q6ICcgKyBiaXRzLmdldFNpemUoKSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIENoZWNrIGlmIFwidmFsdWVcIiBpcyBlbXB0eS5cbiAgICBNYXRyaXhVdGlsLmlzRW1wdHkgPSBmdW5jdGlvbiAodmFsdWUgLyppbnQqLykge1xuICAgICAgICByZXR1cm4gdmFsdWUgPT09IDI1NTsgLy8gLTFcbiAgICB9O1xuICAgIE1hdHJpeFV0aWwuZW1iZWRUaW1pbmdQYXR0ZXJucyA9IGZ1bmN0aW9uIChtYXRyaXgpIHtcbiAgICAgICAgLy8gLTggaXMgZm9yIHNraXBwaW5nIHBvc2l0aW9uIGRldGVjdGlvbiBwYXR0ZXJucyAoNzogc2l6ZSksIGFuZCB0d28gaG9yaXpvbnRhbC92ZXJ0aWNhbFxuICAgICAgICAvLyBzZXBhcmF0aW9uIHBhdHRlcm5zICgxOiBzaXplKS4gVGh1cywgOCA9IDcgKyAxLlxuICAgICAgICBmb3IgKHZhciBpID0gODsgaSA8IG1hdHJpeC5nZXRXaWR0aCgpIC0gODsgKytpKSB7XG4gICAgICAgICAgICB2YXIgYml0ID0gKGkgKyAxKSAlIDI7XG4gICAgICAgICAgICAvLyBIb3Jpem9udGFsIGxpbmUuXG4gICAgICAgICAgICBpZiAoTWF0cml4VXRpbC5pc0VtcHR5KG1hdHJpeC5nZXQoaSwgNikpKSB7XG4gICAgICAgICAgICAgICAgbWF0cml4LnNldE51bWJlcihpLCA2LCBiaXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gVmVydGljYWwgbGluZS5cbiAgICAgICAgICAgIGlmIChNYXRyaXhVdGlsLmlzRW1wdHkobWF0cml4LmdldCg2LCBpKSkpIHtcbiAgICAgICAgICAgICAgICBtYXRyaXguc2V0TnVtYmVyKDYsIGksIGJpdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIEVtYmVkIHRoZSBsb25lbHkgZGFyayBkb3QgYXQgbGVmdCBib3R0b20gY29ybmVyLiBKSVNYMDUxMDoyMDA0IChwLjQ2KVxuICAgIE1hdHJpeFV0aWwuZW1iZWREYXJrRG90QXRMZWZ0Qm90dG9tQ29ybmVyID0gZnVuY3Rpb24gKG1hdHJpeCkge1xuICAgICAgICBpZiAobWF0cml4LmdldCg4LCBtYXRyaXguZ2V0SGVpZ2h0KCkgLSA4KSA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFdyaXRlckV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICBtYXRyaXguc2V0TnVtYmVyKDgsIG1hdHJpeC5nZXRIZWlnaHQoKSAtIDgsIDEpO1xuICAgIH07XG4gICAgTWF0cml4VXRpbC5lbWJlZEhvcml6b250YWxTZXBhcmF0aW9uUGF0dGVybiA9IGZ1bmN0aW9uICh4U3RhcnQgLyppbnQqLywgeVN0YXJ0IC8qaW50Ki8sIG1hdHJpeCkge1xuICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IDg7ICsreCkge1xuICAgICAgICAgICAgaWYgKCFNYXRyaXhVdGlsLmlzRW1wdHkobWF0cml4LmdldCh4U3RhcnQgKyB4LCB5U3RhcnQpKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBXcml0ZXJFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBtYXRyaXguc2V0TnVtYmVyKHhTdGFydCArIHgsIHlTdGFydCwgMCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIE1hdHJpeFV0aWwuZW1iZWRWZXJ0aWNhbFNlcGFyYXRpb25QYXR0ZXJuID0gZnVuY3Rpb24gKHhTdGFydCAvKmludCovLCB5U3RhcnQgLyppbnQqLywgbWF0cml4KSB7XG4gICAgICAgIGZvciAodmFyIHkgPSAwOyB5IDwgNzsgKyt5KSB7XG4gICAgICAgICAgICBpZiAoIU1hdHJpeFV0aWwuaXNFbXB0eShtYXRyaXguZ2V0KHhTdGFydCwgeVN0YXJ0ICsgeSkpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdyaXRlckV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG1hdHJpeC5zZXROdW1iZXIoeFN0YXJ0LCB5U3RhcnQgKyB5LCAwKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgTWF0cml4VXRpbC5lbWJlZFBvc2l0aW9uQWRqdXN0bWVudFBhdHRlcm4gPSBmdW5jdGlvbiAoeFN0YXJ0IC8qaW50Ki8sIHlTdGFydCAvKmludCovLCBtYXRyaXgpIHtcbiAgICAgICAgZm9yICh2YXIgeSA9IDA7IHkgPCA1OyArK3kpIHtcbiAgICAgICAgICAgIHZhciBwYXR0ZXJuWSA9IE1hdHJpeFV0aWwuUE9TSVRJT05fQURKVVNUTUVOVF9QQVRURVJOW3ldO1xuICAgICAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCA1OyArK3gpIHtcbiAgICAgICAgICAgICAgICBtYXRyaXguc2V0TnVtYmVyKHhTdGFydCArIHgsIHlTdGFydCArIHksIHBhdHRlcm5ZW3hdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgTWF0cml4VXRpbC5lbWJlZFBvc2l0aW9uRGV0ZWN0aW9uUGF0dGVybiA9IGZ1bmN0aW9uICh4U3RhcnQgLyppbnQqLywgeVN0YXJ0IC8qaW50Ki8sIG1hdHJpeCkge1xuICAgICAgICBmb3IgKHZhciB5ID0gMDsgeSA8IDc7ICsreSkge1xuICAgICAgICAgICAgdmFyIHBhdHRlcm5ZID0gTWF0cml4VXRpbC5QT1NJVElPTl9ERVRFQ1RJT05fUEFUVEVSTlt5XTtcbiAgICAgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgNzsgKyt4KSB7XG4gICAgICAgICAgICAgICAgbWF0cml4LnNldE51bWJlcih4U3RhcnQgKyB4LCB5U3RhcnQgKyB5LCBwYXR0ZXJuWVt4XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIEVtYmVkIHBvc2l0aW9uIGRldGVjdGlvbiBwYXR0ZXJucyBhbmQgc3Vycm91bmRpbmcgdmVydGljYWwvaG9yaXpvbnRhbCBzZXBhcmF0b3JzLlxuICAgIE1hdHJpeFV0aWwuZW1iZWRQb3NpdGlvbkRldGVjdGlvblBhdHRlcm5zQW5kU2VwYXJhdG9ycyA9IGZ1bmN0aW9uIChtYXRyaXgpIHtcbiAgICAgICAgLy8gRW1iZWQgdGhyZWUgYmlnIHNxdWFyZXMgYXQgY29ybmVycy5cbiAgICAgICAgdmFyIHBkcFdpZHRoID0gTWF0cml4VXRpbC5QT1NJVElPTl9ERVRFQ1RJT05fUEFUVEVSTlswXS5sZW5ndGg7XG4gICAgICAgIC8vIExlZnQgdG9wIGNvcm5lci5cbiAgICAgICAgTWF0cml4VXRpbC5lbWJlZFBvc2l0aW9uRGV0ZWN0aW9uUGF0dGVybigwLCAwLCBtYXRyaXgpO1xuICAgICAgICAvLyBSaWdodCB0b3AgY29ybmVyLlxuICAgICAgICBNYXRyaXhVdGlsLmVtYmVkUG9zaXRpb25EZXRlY3Rpb25QYXR0ZXJuKG1hdHJpeC5nZXRXaWR0aCgpIC0gcGRwV2lkdGgsIDAsIG1hdHJpeCk7XG4gICAgICAgIC8vIExlZnQgYm90dG9tIGNvcm5lci5cbiAgICAgICAgTWF0cml4VXRpbC5lbWJlZFBvc2l0aW9uRGV0ZWN0aW9uUGF0dGVybigwLCBtYXRyaXguZ2V0V2lkdGgoKSAtIHBkcFdpZHRoLCBtYXRyaXgpO1xuICAgICAgICAvLyBFbWJlZCBob3Jpem9udGFsIHNlcGFyYXRpb24gcGF0dGVybnMgYXJvdW5kIHRoZSBzcXVhcmVzLlxuICAgICAgICB2YXIgaHNwV2lkdGggPSA4O1xuICAgICAgICAvLyBMZWZ0IHRvcCBjb3JuZXIuXG4gICAgICAgIE1hdHJpeFV0aWwuZW1iZWRIb3Jpem9udGFsU2VwYXJhdGlvblBhdHRlcm4oMCwgaHNwV2lkdGggLSAxLCBtYXRyaXgpO1xuICAgICAgICAvLyBSaWdodCB0b3AgY29ybmVyLlxuICAgICAgICBNYXRyaXhVdGlsLmVtYmVkSG9yaXpvbnRhbFNlcGFyYXRpb25QYXR0ZXJuKG1hdHJpeC5nZXRXaWR0aCgpIC0gaHNwV2lkdGgsIGhzcFdpZHRoIC0gMSwgbWF0cml4KTtcbiAgICAgICAgLy8gTGVmdCBib3R0b20gY29ybmVyLlxuICAgICAgICBNYXRyaXhVdGlsLmVtYmVkSG9yaXpvbnRhbFNlcGFyYXRpb25QYXR0ZXJuKDAsIG1hdHJpeC5nZXRXaWR0aCgpIC0gaHNwV2lkdGgsIG1hdHJpeCk7XG4gICAgICAgIC8vIEVtYmVkIHZlcnRpY2FsIHNlcGFyYXRpb24gcGF0dGVybnMgYXJvdW5kIHRoZSBzcXVhcmVzLlxuICAgICAgICB2YXIgdnNwU2l6ZSA9IDc7XG4gICAgICAgIC8vIExlZnQgdG9wIGNvcm5lci5cbiAgICAgICAgTWF0cml4VXRpbC5lbWJlZFZlcnRpY2FsU2VwYXJhdGlvblBhdHRlcm4odnNwU2l6ZSwgMCwgbWF0cml4KTtcbiAgICAgICAgLy8gUmlnaHQgdG9wIGNvcm5lci5cbiAgICAgICAgTWF0cml4VXRpbC5lbWJlZFZlcnRpY2FsU2VwYXJhdGlvblBhdHRlcm4obWF0cml4LmdldEhlaWdodCgpIC0gdnNwU2l6ZSAtIDEsIDAsIG1hdHJpeCk7XG4gICAgICAgIC8vIExlZnQgYm90dG9tIGNvcm5lci5cbiAgICAgICAgTWF0cml4VXRpbC5lbWJlZFZlcnRpY2FsU2VwYXJhdGlvblBhdHRlcm4odnNwU2l6ZSwgbWF0cml4LmdldEhlaWdodCgpIC0gdnNwU2l6ZSwgbWF0cml4KTtcbiAgICB9O1xuICAgIC8vIEVtYmVkIHBvc2l0aW9uIGFkanVzdG1lbnQgcGF0dGVybnMgaWYgbmVlZCBiZS5cbiAgICBNYXRyaXhVdGlsLm1heWJlRW1iZWRQb3NpdGlvbkFkanVzdG1lbnRQYXR0ZXJucyA9IGZ1bmN0aW9uICh2ZXJzaW9uLCBtYXRyaXgpIHtcbiAgICAgICAgaWYgKHZlcnNpb24uZ2V0VmVyc2lvbk51bWJlcigpIDwgMikgeyAvLyBUaGUgcGF0dGVybnMgYXBwZWFyIGlmIHZlcnNpb24gPj0gMlxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciBpbmRleCA9IHZlcnNpb24uZ2V0VmVyc2lvbk51bWJlcigpIC0gMTtcbiAgICAgICAgdmFyIGNvb3JkaW5hdGVzID0gTWF0cml4VXRpbC5QT1NJVElPTl9BREpVU1RNRU5UX1BBVFRFUk5fQ09PUkRJTkFURV9UQUJMRVtpbmRleF07XG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGhfMSA9IGNvb3JkaW5hdGVzLmxlbmd0aDsgaSAhPT0gbGVuZ3RoXzE7IGkrKykge1xuICAgICAgICAgICAgdmFyIHkgPSBjb29yZGluYXRlc1tpXTtcbiAgICAgICAgICAgIGlmICh5ID49IDApIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiAhPT0gbGVuZ3RoXzE7IGorKykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgeCA9IGNvb3JkaW5hdGVzW2pdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoeCA+PSAwICYmIE1hdHJpeFV0aWwuaXNFbXB0eShtYXRyaXguZ2V0KHgsIHkpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGNlbGwgaXMgdW5zZXQsIHdlIGVtYmVkIHRoZSBwb3NpdGlvbiBhZGp1c3RtZW50IHBhdHRlcm4gaGVyZS5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIC0yIGlzIG5lY2Vzc2FyeSBzaW5jZSB0aGUgeC95IGNvb3JkaW5hdGVzIHBvaW50IHRvIHRoZSBjZW50ZXIgb2YgdGhlIHBhdHRlcm4sIG5vdCB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxlZnQgdG9wIGNvcm5lci5cbiAgICAgICAgICAgICAgICAgICAgICAgIE1hdHJpeFV0aWwuZW1iZWRQb3NpdGlvbkFkanVzdG1lbnRQYXR0ZXJuKHggLSAyLCB5IC0gMiwgbWF0cml4KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgTWF0cml4VXRpbC5QT1NJVElPTl9ERVRFQ1RJT05fUEFUVEVSTiA9IEFycmF5LmZyb20oW1xuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDEsIDEsIDEsIDEsIDEsIDFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAwLCAwLCAwLCAwLCAwLCAxXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMCwgMSwgMSwgMSwgMCwgMV0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDAsIDEsIDEsIDEsIDAsIDFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAwLCAxLCAxLCAxLCAwLCAxXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMCwgMCwgMCwgMCwgMCwgMV0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDEsIDEsIDEsIDEsIDEsIDFdKSxcbiAgICBdKTtcbiAgICBNYXRyaXhVdGlsLlBPU0lUSU9OX0FESlVTVE1FTlRfUEFUVEVSTiA9IEFycmF5LmZyb20oW1xuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDEsIDEsIDEsIDFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAwLCAwLCAwLCAxXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMSwgMCwgMSwgMCwgMV0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzEsIDAsIDAsIDAsIDFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCAxLCAxLCAxLCAxXSksXG4gICAgXSk7XG4gICAgLy8gRnJvbSBBcHBlbmRpeCBFLiBUYWJsZSAxLCBKSVMwNTEwWDoyMDA0ICg3MTogcCkuIFRoZSB0YWJsZSB3YXMgZG91YmxlLWNoZWNrZWQgYnkga29tYXRzdS5cbiAgICBNYXRyaXhVdGlsLlBPU0lUSU9OX0FESlVTVE1FTlRfUEFUVEVSTl9DT09SRElOQVRFX1RBQkxFID0gQXJyYXkuZnJvbShbXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFs2LCAxOCwgLTEsIC0xLCAtMSwgLTEsIC0xXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbNiwgMjIsIC0xLCAtMSwgLTEsIC0xLCAtMV0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzYsIDI2LCAtMSwgLTEsIC0xLCAtMSwgLTFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFs2LCAzMCwgLTEsIC0xLCAtMSwgLTEsIC0xXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbNiwgMzQsIC0xLCAtMSwgLTEsIC0xLCAtMV0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzYsIDIyLCAzOCwgLTEsIC0xLCAtMSwgLTFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFs2LCAyNCwgNDIsIC0xLCAtMSwgLTEsIC0xXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbNiwgMjYsIDQ2LCAtMSwgLTEsIC0xLCAtMV0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzYsIDI4LCA1MCwgLTEsIC0xLCAtMSwgLTFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFs2LCAzMCwgNTQsIC0xLCAtMSwgLTEsIC0xXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbNiwgMzIsIDU4LCAtMSwgLTEsIC0xLCAtMV0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzYsIDM0LCA2MiwgLTEsIC0xLCAtMSwgLTFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFs2LCAyNiwgNDYsIDY2LCAtMSwgLTEsIC0xXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbNiwgMjYsIDQ4LCA3MCwgLTEsIC0xLCAtMV0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzYsIDI2LCA1MCwgNzQsIC0xLCAtMSwgLTFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFs2LCAzMCwgNTQsIDc4LCAtMSwgLTEsIC0xXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbNiwgMzAsIDU2LCA4MiwgLTEsIC0xLCAtMV0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzYsIDMwLCA1OCwgODYsIC0xLCAtMSwgLTFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFs2LCAzNCwgNjIsIDkwLCAtMSwgLTEsIC0xXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbNiwgMjgsIDUwLCA3MiwgOTQsIC0xLCAtMV0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzYsIDI2LCA1MCwgNzQsIDk4LCAtMSwgLTFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFs2LCAzMCwgNTQsIDc4LCAxMDIsIC0xLCAtMV0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzYsIDI4LCA1NCwgODAsIDEwNiwgLTEsIC0xXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbNiwgMzIsIDU4LCA4NCwgMTEwLCAtMSwgLTFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFs2LCAzMCwgNTgsIDg2LCAxMTQsIC0xLCAtMV0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzYsIDM0LCA2MiwgOTAsIDExOCwgLTEsIC0xXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbNiwgMjYsIDUwLCA3NCwgOTgsIDEyMiwgLTFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFs2LCAzMCwgNTQsIDc4LCAxMDIsIDEyNiwgLTFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFs2LCAyNiwgNTIsIDc4LCAxMDQsIDEzMCwgLTFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFs2LCAzMCwgNTYsIDgyLCAxMDgsIDEzNCwgLTFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFs2LCAzNCwgNjAsIDg2LCAxMTIsIDEzOCwgLTFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFs2LCAzMCwgNTgsIDg2LCAxMTQsIDE0MiwgLTFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFs2LCAzNCwgNjIsIDkwLCAxMTgsIDE0NiwgLTFdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFs2LCAzMCwgNTQsIDc4LCAxMDIsIDEyNiwgMTUwXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbNiwgMjQsIDUwLCA3NiwgMTAyLCAxMjgsIDE1NF0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzYsIDI4LCA1NCwgODAsIDEwNiwgMTMyLCAxNThdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFs2LCAzMiwgNTgsIDg0LCAxMTAsIDEzNiwgMTYyXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbNiwgMjYsIDU0LCA4MiwgMTEwLCAxMzgsIDE2Nl0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzYsIDMwLCA1OCwgODYsIDExNCwgMTQyLCAxNzBdKSxcbiAgICBdKTtcbiAgICAvLyBUeXBlIGluZm8gY2VsbHMgYXQgdGhlIGxlZnQgdG9wIGNvcm5lci5cbiAgICBNYXRyaXhVdGlsLlRZUEVfSU5GT19DT09SRElOQVRFUyA9IEFycmF5LmZyb20oW1xuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzgsIDBdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFs4LCAxXSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbOCwgMl0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzgsIDNdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFs4LCA0XSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbOCwgNV0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzgsIDddKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFs4LCA4XSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbNywgOF0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzUsIDhdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFs0LCA4XSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMywgOF0pLFxuICAgICAgICBJbnQzMkFycmF5LmZyb20oWzIsIDhdKSxcbiAgICAgICAgSW50MzJBcnJheS5mcm9tKFsxLCA4XSksXG4gICAgICAgIEludDMyQXJyYXkuZnJvbShbMCwgOF0pLFxuICAgIF0pO1xuICAgIC8vIEZyb20gQXBwZW5kaXggRCBpbiBKSVNYMDUxMDoyMDA0IChwLiA2NylcbiAgICBNYXRyaXhVdGlsLlZFUlNJT05fSU5GT19QT0xZID0gMHgxZjI1OyAvLyAxIDExMTEgMDAxMCAwMTAxXG4gICAgLy8gRnJvbSBBcHBlbmRpeCBDIGluIEpJU1gwNTEwOjIwMDQgKHAuNjUpLlxuICAgIE1hdHJpeFV0aWwuVFlQRV9JTkZPX1BPTFkgPSAweDUzNztcbiAgICBNYXRyaXhVdGlsLlRZUEVfSU5GT19NQVNLX1BBVFRFUk4gPSAweDU0MTI7XG4gICAgcmV0dXJuIE1hdHJpeFV0aWw7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gTWF0cml4VXRpbDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU1hdHJpeFV0aWwuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IDIwMDggWlhpbmcgYXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qbmFtZXNwYWNlIGNvbS5nb29nbGUuenhpbmcucXJjb2RlLmVuY29kZXIgeyovXG52YXIgQmxvY2tQYWlyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEJsb2NrUGFpcihkYXRhQnl0ZXMsIGVycm9yQ29ycmVjdGlvbkJ5dGVzKSB7XG4gICAgICAgIHRoaXMuZGF0YUJ5dGVzID0gZGF0YUJ5dGVzO1xuICAgICAgICB0aGlzLmVycm9yQ29ycmVjdGlvbkJ5dGVzID0gZXJyb3JDb3JyZWN0aW9uQnl0ZXM7XG4gICAgfVxuICAgIEJsb2NrUGFpci5wcm90b3R5cGUuZ2V0RGF0YUJ5dGVzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhQnl0ZXM7XG4gICAgfTtcbiAgICBCbG9ja1BhaXIucHJvdG90eXBlLmdldEVycm9yQ29ycmVjdGlvbkJ5dGVzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lcnJvckNvcnJlY3Rpb25CeXRlcztcbiAgICB9O1xuICAgIHJldHVybiBCbG9ja1BhaXI7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gQmxvY2tQYWlyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QmxvY2tQYWlyLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuLypcbiAqIENvcHlyaWdodCAyMDA4IFpYaW5nIGF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgX192YWx1ZXMgPSAodGhpcyAmJiB0aGlzLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7XG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vKm5hbWVzcGFjZSBjb20uZ29vZ2xlLnp4aW5nLnFyY29kZS5lbmNvZGVyIHsqL1xudmFyIEVuY29kZUhpbnRUeXBlXzEgPSByZXF1aXJlKFwiLi4vLi4vRW5jb2RlSGludFR5cGVcIik7XG52YXIgQml0QXJyYXlfMSA9IHJlcXVpcmUoXCIuLi8uLi9jb21tb24vQml0QXJyYXlcIik7XG52YXIgQ2hhcmFjdGVyU2V0RUNJXzEgPSByZXF1aXJlKFwiLi4vLi4vY29tbW9uL0NoYXJhY3RlclNldEVDSVwiKTtcbnZhciBHZW5lcmljR0ZfMSA9IHJlcXVpcmUoXCIuLi8uLi9jb21tb24vcmVlZHNvbG9tb24vR2VuZXJpY0dGXCIpO1xudmFyIFJlZWRTb2xvbW9uRW5jb2Rlcl8xID0gcmVxdWlyZShcIi4uLy4uL2NvbW1vbi9yZWVkc29sb21vbi9SZWVkU29sb21vbkVuY29kZXJcIik7XG52YXIgTW9kZV8xID0gcmVxdWlyZShcIi4uL2RlY29kZXIvTW9kZVwiKTtcbnZhciBWZXJzaW9uXzEgPSByZXF1aXJlKFwiLi4vZGVjb2Rlci9WZXJzaW9uXCIpO1xudmFyIE1hc2tVdGlsXzEgPSByZXF1aXJlKFwiLi9NYXNrVXRpbFwiKTtcbnZhciBCeXRlTWF0cml4XzEgPSByZXF1aXJlKFwiLi9CeXRlTWF0cml4XCIpO1xudmFyIFFSQ29kZV8xID0gcmVxdWlyZShcIi4vUVJDb2RlXCIpO1xudmFyIE1hdHJpeFV0aWxfMSA9IHJlcXVpcmUoXCIuL01hdHJpeFV0aWxcIik7XG52YXIgU3RyaW5nRW5jb2RpbmdfMSA9IHJlcXVpcmUoXCIuLi8uLi91dGlsL1N0cmluZ0VuY29kaW5nXCIpO1xudmFyIEJsb2NrUGFpcl8xID0gcmVxdWlyZShcIi4vQmxvY2tQYWlyXCIpO1xudmFyIFdyaXRlckV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4uLy4uL1dyaXRlckV4Y2VwdGlvblwiKTtcbi8qaW1wb3J0IGphdmEuaW8uVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbjsqL1xuLyppbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsqL1xuLyppbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247Ki9cbi8qaW1wb3J0IGphdmEudXRpbC5NYXA7Ki9cbi8qKlxuICogQGF1dGhvciBzYXRvcnV4QGdvb2dsZS5jb20gKFNhdG9ydSBUYWthYmF5YXNoaSkgLSBjcmVhdG9yXG4gKiBAYXV0aG9yIGRzd2l0a2luQGdvb2dsZS5jb20gKERhbmllbCBTd2l0a2luKSAtIHBvcnRlZCBmcm9tIEMrK1xuICovXG52YXIgRW5jb2RlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICAvLyBUWVBFU0NSSVBUUE9SVDogY2hhbmdlZCB0byBVVEY4LCB0aGUgZGVmYXVsdCBmb3IganNcbiAgICBmdW5jdGlvbiBFbmNvZGVyKCkge1xuICAgIH1cbiAgICAvLyBUaGUgbWFzayBwZW5hbHR5IGNhbGN1bGF0aW9uIGlzIGNvbXBsaWNhdGVkLiAgU2VlIFRhYmxlIDIxIG9mIEpJU1gwNTEwOjIwMDQgKHAuNDUpIGZvciBkZXRhaWxzLlxuICAgIC8vIEJhc2ljYWxseSBpdCBhcHBsaWVzIGZvdXIgcnVsZXMgYW5kIHN1bW1hdGUgYWxsIHBlbmFsdGllcy5cbiAgICBFbmNvZGVyLmNhbGN1bGF0ZU1hc2tQZW5hbHR5ID0gZnVuY3Rpb24gKG1hdHJpeCkge1xuICAgICAgICByZXR1cm4gTWFza1V0aWxfMS5kZWZhdWx0LmFwcGx5TWFza1BlbmFsdHlSdWxlMShtYXRyaXgpXG4gICAgICAgICAgICArIE1hc2tVdGlsXzEuZGVmYXVsdC5hcHBseU1hc2tQZW5hbHR5UnVsZTIobWF0cml4KVxuICAgICAgICAgICAgKyBNYXNrVXRpbF8xLmRlZmF1bHQuYXBwbHlNYXNrUGVuYWx0eVJ1bGUzKG1hdHJpeClcbiAgICAgICAgICAgICsgTWFza1V0aWxfMS5kZWZhdWx0LmFwcGx5TWFza1BlbmFsdHlSdWxlNChtYXRyaXgpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHBhcmFtIGNvbnRlbnQgdGV4dCB0byBlbmNvZGVcbiAgICAgKiBAcGFyYW0gZWNMZXZlbCBlcnJvciBjb3JyZWN0aW9uIGxldmVsIHRvIHVzZVxuICAgICAqIEByZXR1cm4ge0BsaW5rIFFSQ29kZX0gcmVwcmVzZW50aW5nIHRoZSBlbmNvZGVkIFFSIGNvZGVcbiAgICAgKiBAdGhyb3dzIFdyaXRlckV4Y2VwdGlvbiBpZiBlbmNvZGluZyBjYW4ndCBzdWNjZWVkLCBiZWNhdXNlIG9mIGZvciBleGFtcGxlIGludmFsaWQgY29udGVudFxuICAgICAqICAgb3IgY29uZmlndXJhdGlvblxuICAgICAqL1xuICAgIC8vIHB1YmxpYyBzdGF0aWMgZW5jb2RlKGNvbnRlbnQ6IHN0cmluZywgZWNMZXZlbDogRXJyb3JDb3JyZWN0aW9uTGV2ZWwpOiBRUkNvZGUgLyp0aHJvd3MgV3JpdGVyRXhjZXB0aW9uKi8ge1xuICAgIC8vICAgcmV0dXJuIGVuY29kZShjb250ZW50LCBlY0xldmVsLCBudWxsKVxuICAgIC8vIH1cbiAgICBFbmNvZGVyLmVuY29kZSA9IGZ1bmN0aW9uIChjb250ZW50LCBlY0xldmVsLCBoaW50cykge1xuICAgICAgICBpZiAoaGludHMgPT09IHZvaWQgMCkgeyBoaW50cyA9IG51bGw7IH1cbiAgICAgICAgLy8gRGV0ZXJtaW5lIHdoYXQgY2hhcmFjdGVyIGVuY29kaW5nIGhhcyBiZWVuIHNwZWNpZmllZCBieSB0aGUgY2FsbGVyLCBpZiBhbnlcbiAgICAgICAgdmFyIGVuY29kaW5nID0gRW5jb2Rlci5ERUZBVUxUX0JZVEVfTU9ERV9FTkNPRElORztcbiAgICAgICAgdmFyIGhhc0VuY29kaW5nSGludCA9IGhpbnRzICE9PSBudWxsICYmIHVuZGVmaW5lZCAhPT0gaGludHMuZ2V0KEVuY29kZUhpbnRUeXBlXzEuZGVmYXVsdC5DSEFSQUNURVJfU0VUKTtcbiAgICAgICAgaWYgKGhhc0VuY29kaW5nSGludCkge1xuICAgICAgICAgICAgZW5jb2RpbmcgPSBoaW50cy5nZXQoRW5jb2RlSGludFR5cGVfMS5kZWZhdWx0LkNIQVJBQ1RFUl9TRVQpLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUGljayBhbiBlbmNvZGluZyBtb2RlIGFwcHJvcHJpYXRlIGZvciB0aGUgY29udGVudC4gTm90ZSB0aGF0IHRoaXMgd2lsbCBub3QgYXR0ZW1wdCB0byB1c2VcbiAgICAgICAgLy8gbXVsdGlwbGUgbW9kZXMgLyBzZWdtZW50cyBldmVuIGlmIHRoYXQgd2VyZSBtb3JlIGVmZmljaWVudC4gVHdvdWxkIGJlIG5pY2UuXG4gICAgICAgIHZhciBtb2RlID0gdGhpcy5jaG9vc2VNb2RlKGNvbnRlbnQsIGVuY29kaW5nKTtcbiAgICAgICAgLy8gVGhpcyB3aWxsIHN0b3JlIHRoZSBoZWFkZXIgaW5mb3JtYXRpb24sIGxpa2UgbW9kZSBhbmRcbiAgICAgICAgLy8gbGVuZ3RoLCBhcyB3ZWxsIGFzIFwiaGVhZGVyXCIgc2VnbWVudHMgbGlrZSBhbiBFQ0kgc2VnbWVudC5cbiAgICAgICAgdmFyIGhlYWRlckJpdHMgPSBuZXcgQml0QXJyYXlfMS5kZWZhdWx0KCk7XG4gICAgICAgIC8vIEFwcGVuZCBFQ0kgc2VnbWVudCBpZiBhcHBsaWNhYmxlXG4gICAgICAgIGlmIChtb2RlID09PSBNb2RlXzEuZGVmYXVsdC5CWVRFICYmIChoYXNFbmNvZGluZ0hpbnQgfHwgRW5jb2Rlci5ERUZBVUxUX0JZVEVfTU9ERV9FTkNPRElORyAhPT0gZW5jb2RpbmcpKSB7XG4gICAgICAgICAgICB2YXIgZWNpID0gQ2hhcmFjdGVyU2V0RUNJXzEuZGVmYXVsdC5nZXRDaGFyYWN0ZXJTZXRFQ0lCeU5hbWUoZW5jb2RpbmcpO1xuICAgICAgICAgICAgaWYgKGVjaSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hcHBlbmRFQ0koZWNpLCBoZWFkZXJCaXRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyAoV2l0aCBFQ0kgaW4gcGxhY2UsKSBXcml0ZSB0aGUgbW9kZSBtYXJrZXJcbiAgICAgICAgdGhpcy5hcHBlbmRNb2RlSW5mbyhtb2RlLCBoZWFkZXJCaXRzKTtcbiAgICAgICAgLy8gQ29sbGVjdCBkYXRhIHdpdGhpbiB0aGUgbWFpbiBzZWdtZW50LCBzZXBhcmF0ZWx5LCB0byBjb3VudCBpdHMgc2l6ZSBpZiBuZWVkZWQuIERvbid0IGFkZCBpdCB0b1xuICAgICAgICAvLyBtYWluIHBheWxvYWQgeWV0LlxuICAgICAgICB2YXIgZGF0YUJpdHMgPSBuZXcgQml0QXJyYXlfMS5kZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuYXBwZW5kQnl0ZXMoY29udGVudCwgbW9kZSwgZGF0YUJpdHMsIGVuY29kaW5nKTtcbiAgICAgICAgdmFyIHZlcnNpb247XG4gICAgICAgIGlmIChoaW50cyAhPT0gbnVsbCAmJiB1bmRlZmluZWQgIT09IGhpbnRzLmdldChFbmNvZGVIaW50VHlwZV8xLmRlZmF1bHQuUVJfVkVSU0lPTikpIHtcbiAgICAgICAgICAgIHZhciB2ZXJzaW9uTnVtYmVyID0gTnVtYmVyLnBhcnNlSW50KGhpbnRzLmdldChFbmNvZGVIaW50VHlwZV8xLmRlZmF1bHQuUVJfVkVSU0lPTikudG9TdHJpbmcoKSwgMTApO1xuICAgICAgICAgICAgdmVyc2lvbiA9IFZlcnNpb25fMS5kZWZhdWx0LmdldFZlcnNpb25Gb3JOdW1iZXIodmVyc2lvbk51bWJlcik7XG4gICAgICAgICAgICB2YXIgYml0c05lZWRlZCA9IHRoaXMuY2FsY3VsYXRlQml0c05lZWRlZChtb2RlLCBoZWFkZXJCaXRzLCBkYXRhQml0cywgdmVyc2lvbik7XG4gICAgICAgICAgICBpZiAoIXRoaXMud2lsbEZpdChiaXRzTmVlZGVkLCB2ZXJzaW9uLCBlY0xldmVsKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBXcml0ZXJFeGNlcHRpb25fMS5kZWZhdWx0KCdEYXRhIHRvbyBiaWcgZm9yIHJlcXVlc3RlZCB2ZXJzaW9uJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2ZXJzaW9uID0gdGhpcy5yZWNvbW1lbmRWZXJzaW9uKGVjTGV2ZWwsIG1vZGUsIGhlYWRlckJpdHMsIGRhdGFCaXRzKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgaGVhZGVyQW5kRGF0YUJpdHMgPSBuZXcgQml0QXJyYXlfMS5kZWZhdWx0KCk7XG4gICAgICAgIGhlYWRlckFuZERhdGFCaXRzLmFwcGVuZEJpdEFycmF5KGhlYWRlckJpdHMpO1xuICAgICAgICAvLyBGaW5kIFwibGVuZ3RoXCIgb2YgbWFpbiBzZWdtZW50IGFuZCB3cml0ZSBpdFxuICAgICAgICB2YXIgbnVtTGV0dGVycyA9IG1vZGUgPT09IE1vZGVfMS5kZWZhdWx0LkJZVEUgPyBkYXRhQml0cy5nZXRTaXplSW5CeXRlcygpIDogY29udGVudC5sZW5ndGg7XG4gICAgICAgIHRoaXMuYXBwZW5kTGVuZ3RoSW5mbyhudW1MZXR0ZXJzLCB2ZXJzaW9uLCBtb2RlLCBoZWFkZXJBbmREYXRhQml0cyk7XG4gICAgICAgIC8vIFB1dCBkYXRhIHRvZ2V0aGVyIGludG8gdGhlIG92ZXJhbGwgcGF5bG9hZFxuICAgICAgICBoZWFkZXJBbmREYXRhQml0cy5hcHBlbmRCaXRBcnJheShkYXRhQml0cyk7XG4gICAgICAgIHZhciBlY0Jsb2NrcyA9IHZlcnNpb24uZ2V0RUNCbG9ja3NGb3JMZXZlbChlY0xldmVsKTtcbiAgICAgICAgdmFyIG51bURhdGFCeXRlcyA9IHZlcnNpb24uZ2V0VG90YWxDb2Rld29yZHMoKSAtIGVjQmxvY2tzLmdldFRvdGFsRUNDb2Rld29yZHMoKTtcbiAgICAgICAgLy8gVGVybWluYXRlIHRoZSBiaXRzIHByb3Blcmx5LlxuICAgICAgICB0aGlzLnRlcm1pbmF0ZUJpdHMobnVtRGF0YUJ5dGVzLCBoZWFkZXJBbmREYXRhQml0cyk7XG4gICAgICAgIC8vIEludGVybGVhdmUgZGF0YSBiaXRzIHdpdGggZXJyb3IgY29ycmVjdGlvbiBjb2RlLlxuICAgICAgICB2YXIgZmluYWxCaXRzID0gdGhpcy5pbnRlcmxlYXZlV2l0aEVDQnl0ZXMoaGVhZGVyQW5kRGF0YUJpdHMsIHZlcnNpb24uZ2V0VG90YWxDb2Rld29yZHMoKSwgbnVtRGF0YUJ5dGVzLCBlY0Jsb2Nrcy5nZXROdW1CbG9ja3MoKSk7XG4gICAgICAgIHZhciBxckNvZGUgPSBuZXcgUVJDb2RlXzEuZGVmYXVsdCgpO1xuICAgICAgICBxckNvZGUuc2V0RUNMZXZlbChlY0xldmVsKTtcbiAgICAgICAgcXJDb2RlLnNldE1vZGUobW9kZSk7XG4gICAgICAgIHFyQ29kZS5zZXRWZXJzaW9uKHZlcnNpb24pO1xuICAgICAgICAvLyAgQ2hvb3NlIHRoZSBtYXNrIHBhdHRlcm4gYW5kIHNldCB0byBcInFyQ29kZVwiLlxuICAgICAgICB2YXIgZGltZW5zaW9uID0gdmVyc2lvbi5nZXREaW1lbnNpb25Gb3JWZXJzaW9uKCk7XG4gICAgICAgIHZhciBtYXRyaXggPSBuZXcgQnl0ZU1hdHJpeF8xLmRlZmF1bHQoZGltZW5zaW9uLCBkaW1lbnNpb24pO1xuICAgICAgICB2YXIgbWFza1BhdHRlcm4gPSB0aGlzLmNob29zZU1hc2tQYXR0ZXJuKGZpbmFsQml0cywgZWNMZXZlbCwgdmVyc2lvbiwgbWF0cml4KTtcbiAgICAgICAgcXJDb2RlLnNldE1hc2tQYXR0ZXJuKG1hc2tQYXR0ZXJuKTtcbiAgICAgICAgLy8gQnVpbGQgdGhlIG1hdHJpeCBhbmQgc2V0IGl0IHRvIFwicXJDb2RlXCIuXG4gICAgICAgIE1hdHJpeFV0aWxfMS5kZWZhdWx0LmJ1aWxkTWF0cml4KGZpbmFsQml0cywgZWNMZXZlbCwgdmVyc2lvbiwgbWFza1BhdHRlcm4sIG1hdHJpeCk7XG4gICAgICAgIHFyQ29kZS5zZXRNYXRyaXgobWF0cml4KTtcbiAgICAgICAgcmV0dXJuIHFyQ29kZTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIERlY2lkZXMgdGhlIHNtYWxsZXN0IHZlcnNpb24gb2YgUVIgY29kZSB0aGF0IHdpbGwgY29udGFpbiBhbGwgb2YgdGhlIHByb3ZpZGVkIGRhdGEuXG4gICAgICpcbiAgICAgKiBAdGhyb3dzIFdyaXRlckV4Y2VwdGlvbiBpZiB0aGUgZGF0YSBjYW5ub3QgZml0IGluIGFueSB2ZXJzaW9uXG4gICAgICovXG4gICAgRW5jb2Rlci5yZWNvbW1lbmRWZXJzaW9uID0gZnVuY3Rpb24gKGVjTGV2ZWwsIG1vZGUsIGhlYWRlckJpdHMsIGRhdGFCaXRzKSB7XG4gICAgICAgIC8vIEhhcmQgcGFydDogbmVlZCB0byBrbm93IHZlcnNpb24gdG8ga25vdyBob3cgbWFueSBiaXRzIGxlbmd0aCB0YWtlcy4gQnV0IG5lZWQgdG8ga25vdyBob3cgbWFueVxuICAgICAgICAvLyBiaXRzIGl0IHRha2VzIHRvIGtub3cgdmVyc2lvbi4gRmlyc3Qgd2UgdGFrZSBhIGd1ZXNzIGF0IHZlcnNpb24gYnkgYXNzdW1pbmcgdmVyc2lvbiB3aWxsIGJlXG4gICAgICAgIC8vIHRoZSBtaW5pbXVtLCAxOlxuICAgICAgICB2YXIgcHJvdmlzaW9uYWxCaXRzTmVlZGVkID0gdGhpcy5jYWxjdWxhdGVCaXRzTmVlZGVkKG1vZGUsIGhlYWRlckJpdHMsIGRhdGFCaXRzLCBWZXJzaW9uXzEuZGVmYXVsdC5nZXRWZXJzaW9uRm9yTnVtYmVyKDEpKTtcbiAgICAgICAgdmFyIHByb3Zpc2lvbmFsVmVyc2lvbiA9IHRoaXMuY2hvb3NlVmVyc2lvbihwcm92aXNpb25hbEJpdHNOZWVkZWQsIGVjTGV2ZWwpO1xuICAgICAgICAvLyBVc2UgdGhhdCBndWVzcyB0byBjYWxjdWxhdGUgdGhlIHJpZ2h0IHZlcnNpb24uIEkgYW0gc3RpbGwgbm90IHN1cmUgdGhpcyB3b3JrcyBpbiAxMDAlIG9mIGNhc2VzLlxuICAgICAgICB2YXIgYml0c05lZWRlZCA9IHRoaXMuY2FsY3VsYXRlQml0c05lZWRlZChtb2RlLCBoZWFkZXJCaXRzLCBkYXRhQml0cywgcHJvdmlzaW9uYWxWZXJzaW9uKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hvb3NlVmVyc2lvbihiaXRzTmVlZGVkLCBlY0xldmVsKTtcbiAgICB9O1xuICAgIEVuY29kZXIuY2FsY3VsYXRlQml0c05lZWRlZCA9IGZ1bmN0aW9uIChtb2RlLCBoZWFkZXJCaXRzLCBkYXRhQml0cywgdmVyc2lvbikge1xuICAgICAgICByZXR1cm4gaGVhZGVyQml0cy5nZXRTaXplKCkgKyBtb2RlLmdldENoYXJhY3RlckNvdW50Qml0cyh2ZXJzaW9uKSArIGRhdGFCaXRzLmdldFNpemUoKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEByZXR1cm4gdGhlIGNvZGUgcG9pbnQgb2YgdGhlIHRhYmxlIHVzZWQgaW4gYWxwaGFudW1lcmljIG1vZGUgb3JcbiAgICAgKiAgLTEgaWYgdGhlcmUgaXMgbm8gY29ycmVzcG9uZGluZyBjb2RlIGluIHRoZSB0YWJsZS5cbiAgICAgKi9cbiAgICBFbmNvZGVyLmdldEFscGhhbnVtZXJpY0NvZGUgPSBmdW5jdGlvbiAoY29kZSAvKmludCovKSB7XG4gICAgICAgIGlmIChjb2RlIDwgRW5jb2Rlci5BTFBIQU5VTUVSSUNfVEFCTEUubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gRW5jb2Rlci5BTFBIQU5VTUVSSUNfVEFCTEVbY29kZV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH07XG4gICAgLy8gcHVibGljIHN0YXRpYyBjaG9vc2VNb2RlKGNvbnRlbnQ6IHN0cmluZyk6IE1vZGUge1xuICAgIC8vICAgcmV0dXJuIGNob29zZU1vZGUoY29udGVudCwgbnVsbCk7XG4gICAgLy8gfVxuICAgIC8qKlxuICAgICAqIENob29zZSB0aGUgYmVzdCBtb2RlIGJ5IGV4YW1pbmluZyB0aGUgY29udGVudC4gTm90ZSB0aGF0ICdlbmNvZGluZycgaXMgdXNlZCBhcyBhIGhpbnQ7XG4gICAgICogaWYgaXQgaXMgU2hpZnRfSklTLCBhbmQgdGhlIGlucHV0IGlzIG9ubHkgZG91YmxlLWJ5dGUgS2FuamksIHRoZW4gd2UgcmV0dXJuIHtAbGluayBNb2RlI0tBTkpJfS5cbiAgICAgKi9cbiAgICBFbmNvZGVyLmNob29zZU1vZGUgPSBmdW5jdGlvbiAoY29udGVudCwgZW5jb2RpbmcpIHtcbiAgICAgICAgaWYgKGVuY29kaW5nID09PSB2b2lkIDApIHsgZW5jb2RpbmcgPSBudWxsOyB9XG4gICAgICAgIGlmIChDaGFyYWN0ZXJTZXRFQ0lfMS5kZWZhdWx0LlNKSVMuZ2V0TmFtZSgpID09PSBlbmNvZGluZyAmJiB0aGlzLmlzT25seURvdWJsZUJ5dGVLYW5qaShjb250ZW50KSkge1xuICAgICAgICAgICAgLy8gQ2hvb3NlIEthbmppIG1vZGUgaWYgYWxsIGlucHV0IGFyZSBkb3VibGUtYnl0ZSBjaGFyYWN0ZXJzXG4gICAgICAgICAgICByZXR1cm4gTW9kZV8xLmRlZmF1bHQuS0FOSkk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGhhc051bWVyaWMgPSBmYWxzZTtcbiAgICAgICAgdmFyIGhhc0FscGhhbnVtZXJpYyA9IGZhbHNlO1xuICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoXzEgPSBjb250ZW50Lmxlbmd0aDsgaSA8IGxlbmd0aF8xOyArK2kpIHtcbiAgICAgICAgICAgIHZhciBjID0gY29udGVudC5jaGFyQXQoaSk7XG4gICAgICAgICAgICBpZiAoRW5jb2Rlci5pc0RpZ2l0KGMpKSB7XG4gICAgICAgICAgICAgICAgaGFzTnVtZXJpYyA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLmdldEFscGhhbnVtZXJpY0NvZGUoYy5jaGFyQ29kZUF0KDApKSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICBoYXNBbHBoYW51bWVyaWMgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIE1vZGVfMS5kZWZhdWx0LkJZVEU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhhc0FscGhhbnVtZXJpYykge1xuICAgICAgICAgICAgcmV0dXJuIE1vZGVfMS5kZWZhdWx0LkFMUEhBTlVNRVJJQztcbiAgICAgICAgfVxuICAgICAgICBpZiAoaGFzTnVtZXJpYykge1xuICAgICAgICAgICAgcmV0dXJuIE1vZGVfMS5kZWZhdWx0Lk5VTUVSSUM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE1vZGVfMS5kZWZhdWx0LkJZVEU7XG4gICAgfTtcbiAgICBFbmNvZGVyLmlzT25seURvdWJsZUJ5dGVLYW5qaSA9IGZ1bmN0aW9uIChjb250ZW50KSB7XG4gICAgICAgIHZhciBieXRlcztcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGJ5dGVzID0gU3RyaW5nRW5jb2RpbmdfMS5kZWZhdWx0LmVuY29kZShjb250ZW50LCBDaGFyYWN0ZXJTZXRFQ0lfMS5kZWZhdWx0LlNKSVMpOyAvLyBjb250ZW50LmdldEJ5dGVzKFwiU2hpZnRfSklTXCIpKVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChpZ25vcmVkIC8qOiBVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uKi8pIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbGVuZ3RoID0gYnl0ZXMubGVuZ3RoO1xuICAgICAgICBpZiAobGVuZ3RoICUgMiAhPT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgICAgICAgIHZhciBieXRlMSA9IGJ5dGVzW2ldICYgMHhGRjtcbiAgICAgICAgICAgIGlmICgoYnl0ZTEgPCAweDgxIHx8IGJ5dGUxID4gMHg5RikgJiYgKGJ5dGUxIDwgMHhFMCB8fCBieXRlMSA+IDB4RUIpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG4gICAgRW5jb2Rlci5jaG9vc2VNYXNrUGF0dGVybiA9IGZ1bmN0aW9uIChiaXRzLCBlY0xldmVsLCB2ZXJzaW9uLCBtYXRyaXgpIHtcbiAgICAgICAgdmFyIG1pblBlbmFsdHkgPSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUjsgLy8gTG93ZXIgcGVuYWx0eSBpcyBiZXR0ZXIuXG4gICAgICAgIHZhciBiZXN0TWFza1BhdHRlcm4gPSAtMTtcbiAgICAgICAgLy8gV2UgdHJ5IGFsbCBtYXNrIHBhdHRlcm5zIHRvIGNob29zZSB0aGUgYmVzdCBvbmUuXG4gICAgICAgIGZvciAodmFyIG1hc2tQYXR0ZXJuID0gMDsgbWFza1BhdHRlcm4gPCBRUkNvZGVfMS5kZWZhdWx0Lk5VTV9NQVNLX1BBVFRFUk5TOyBtYXNrUGF0dGVybisrKSB7XG4gICAgICAgICAgICBNYXRyaXhVdGlsXzEuZGVmYXVsdC5idWlsZE1hdHJpeChiaXRzLCBlY0xldmVsLCB2ZXJzaW9uLCBtYXNrUGF0dGVybiwgbWF0cml4KTtcbiAgICAgICAgICAgIHZhciBwZW5hbHR5ID0gdGhpcy5jYWxjdWxhdGVNYXNrUGVuYWx0eShtYXRyaXgpO1xuICAgICAgICAgICAgaWYgKHBlbmFsdHkgPCBtaW5QZW5hbHR5KSB7XG4gICAgICAgICAgICAgICAgbWluUGVuYWx0eSA9IHBlbmFsdHk7XG4gICAgICAgICAgICAgICAgYmVzdE1hc2tQYXR0ZXJuID0gbWFza1BhdHRlcm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJlc3RNYXNrUGF0dGVybjtcbiAgICB9O1xuICAgIEVuY29kZXIuY2hvb3NlVmVyc2lvbiA9IGZ1bmN0aW9uIChudW1JbnB1dEJpdHMgLyppbnQqLywgZWNMZXZlbCkge1xuICAgICAgICBmb3IgKHZhciB2ZXJzaW9uTnVtID0gMTsgdmVyc2lvbk51bSA8PSA0MDsgdmVyc2lvbk51bSsrKSB7XG4gICAgICAgICAgICB2YXIgdmVyc2lvbiA9IFZlcnNpb25fMS5kZWZhdWx0LmdldFZlcnNpb25Gb3JOdW1iZXIodmVyc2lvbk51bSk7XG4gICAgICAgICAgICBpZiAoRW5jb2Rlci53aWxsRml0KG51bUlucHV0Qml0cywgdmVyc2lvbiwgZWNMZXZlbCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmVyc2lvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgV3JpdGVyRXhjZXB0aW9uXzEuZGVmYXVsdCgnRGF0YSB0b28gYmlnJyk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIG51bWJlciBvZiBpbnB1dCBiaXRzIHdpbGwgZml0IGluIGEgY29kZSB3aXRoIHRoZSBzcGVjaWZpZWQgdmVyc2lvbiBhbmRcbiAgICAgKiBlcnJvciBjb3JyZWN0aW9uIGxldmVsLlxuICAgICAqL1xuICAgIEVuY29kZXIud2lsbEZpdCA9IGZ1bmN0aW9uIChudW1JbnB1dEJpdHMgLyppbnQqLywgdmVyc2lvbiwgZWNMZXZlbCkge1xuICAgICAgICAvLyBJbiB0aGUgZm9sbG93aW5nIGNvbW1lbnRzLCB3ZSB1c2UgbnVtYmVycyBvZiBWZXJzaW9uIDctSC5cbiAgICAgICAgLy8gbnVtQnl0ZXMgPSAxOTZcbiAgICAgICAgdmFyIG51bUJ5dGVzID0gdmVyc2lvbi5nZXRUb3RhbENvZGV3b3JkcygpO1xuICAgICAgICAvLyBnZXROdW1FQ0J5dGVzID0gMTMwXG4gICAgICAgIHZhciBlY0Jsb2NrcyA9IHZlcnNpb24uZ2V0RUNCbG9ja3NGb3JMZXZlbChlY0xldmVsKTtcbiAgICAgICAgdmFyIG51bUVjQnl0ZXMgPSBlY0Jsb2Nrcy5nZXRUb3RhbEVDQ29kZXdvcmRzKCk7XG4gICAgICAgIC8vIGdldE51bURhdGFCeXRlcyA9IDE5NiAtIDEzMCA9IDY2XG4gICAgICAgIHZhciBudW1EYXRhQnl0ZXMgPSBudW1CeXRlcyAtIG51bUVjQnl0ZXM7XG4gICAgICAgIHZhciB0b3RhbElucHV0Qnl0ZXMgPSAobnVtSW5wdXRCaXRzICsgNykgLyA4O1xuICAgICAgICByZXR1cm4gbnVtRGF0YUJ5dGVzID49IHRvdGFsSW5wdXRCeXRlcztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFRlcm1pbmF0ZSBiaXRzIGFzIGRlc2NyaWJlZCBpbiA4LjQuOCBhbmQgOC40Ljkgb2YgSklTWDA1MTA6MjAwNCAocC4yNCkuXG4gICAgICovXG4gICAgRW5jb2Rlci50ZXJtaW5hdGVCaXRzID0gZnVuY3Rpb24gKG51bURhdGFCeXRlcyAvKmludCovLCBiaXRzKSB7XG4gICAgICAgIHZhciBjYXBhY2l0eSA9IG51bURhdGFCeXRlcyAqIDg7XG4gICAgICAgIGlmIChiaXRzLmdldFNpemUoKSA+IGNhcGFjaXR5KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgV3JpdGVyRXhjZXB0aW9uXzEuZGVmYXVsdCgnZGF0YSBiaXRzIGNhbm5vdCBmaXQgaW4gdGhlIFFSIENvZGUnICsgYml0cy5nZXRTaXplKCkgKyAnID4gJyArXG4gICAgICAgICAgICAgICAgY2FwYWNpdHkpO1xuICAgICAgICB9XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNCAmJiBiaXRzLmdldFNpemUoKSA8IGNhcGFjaXR5OyArK2kpIHtcbiAgICAgICAgICAgIGJpdHMuYXBwZW5kQml0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBBcHBlbmQgdGVybWluYXRpb24gYml0cy4gU2VlIDguNC44IG9mIEpJU1gwNTEwOjIwMDQgKHAuMjQpIGZvciBkZXRhaWxzLlxuICAgICAgICAvLyBJZiB0aGUgbGFzdCBieXRlIGlzbid0IDgtYml0IGFsaWduZWQsIHdlJ2xsIGFkZCBwYWRkaW5nIGJpdHMuXG4gICAgICAgIHZhciBudW1CaXRzSW5MYXN0Qnl0ZSA9IGJpdHMuZ2V0U2l6ZSgpICYgMHgwNztcbiAgICAgICAgaWYgKG51bUJpdHNJbkxhc3RCeXRlID4gMCkge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IG51bUJpdHNJbkxhc3RCeXRlOyBpIDwgODsgaSsrKSB7XG4gICAgICAgICAgICAgICAgYml0cy5hcHBlbmRCaXQoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIElmIHdlIGhhdmUgbW9yZSBzcGFjZSwgd2UnbGwgZmlsbCB0aGUgc3BhY2Ugd2l0aCBwYWRkaW5nIHBhdHRlcm5zIGRlZmluZWQgaW4gOC40LjkgKHAuMjQpLlxuICAgICAgICB2YXIgbnVtUGFkZGluZ0J5dGVzID0gbnVtRGF0YUJ5dGVzIC0gYml0cy5nZXRTaXplSW5CeXRlcygpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bVBhZGRpbmdCeXRlczsgKytpKSB7XG4gICAgICAgICAgICBiaXRzLmFwcGVuZEJpdHMoKGkgJiAweDAxKSA9PT0gMCA/IDB4RUMgOiAweDExLCA4KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYml0cy5nZXRTaXplKCkgIT09IGNhcGFjaXR5KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgV3JpdGVyRXhjZXB0aW9uXzEuZGVmYXVsdCgnQml0cyBzaXplIGRvZXMgbm90IGVxdWFsIGNhcGFjaXR5Jyk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEdldCBudW1iZXIgb2YgZGF0YSBieXRlcyBhbmQgbnVtYmVyIG9mIGVycm9yIGNvcnJlY3Rpb24gYnl0ZXMgZm9yIGJsb2NrIGlkIFwiYmxvY2tJRFwiLiBTdG9yZVxuICAgICAqIHRoZSByZXN1bHQgaW4gXCJudW1EYXRhQnl0ZXNJbkJsb2NrXCIsIGFuZCBcIm51bUVDQnl0ZXNJbkJsb2NrXCIuIFNlZSB0YWJsZSAxMiBpbiA4LjUuMSBvZlxuICAgICAqIEpJU1gwNTEwOjIwMDQgKHAuMzApXG4gICAgICovXG4gICAgRW5jb2Rlci5nZXROdW1EYXRhQnl0ZXNBbmROdW1FQ0J5dGVzRm9yQmxvY2tJRCA9IGZ1bmN0aW9uIChudW1Ub3RhbEJ5dGVzIC8qaW50Ki8sIG51bURhdGFCeXRlcyAvKmludCovLCBudW1SU0Jsb2NrcyAvKmludCovLCBibG9ja0lEIC8qaW50Ki8sIG51bURhdGFCeXRlc0luQmxvY2ssIG51bUVDQnl0ZXNJbkJsb2NrKSB7XG4gICAgICAgIGlmIChibG9ja0lEID49IG51bVJTQmxvY2tzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgV3JpdGVyRXhjZXB0aW9uXzEuZGVmYXVsdCgnQmxvY2sgSUQgdG9vIGxhcmdlJyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gbnVtUnNCbG9ja3NJbkdyb3VwMiA9IDE5NiAlIDUgPSAxXG4gICAgICAgIHZhciBudW1Sc0Jsb2Nrc0luR3JvdXAyID0gbnVtVG90YWxCeXRlcyAlIG51bVJTQmxvY2tzO1xuICAgICAgICAvLyBudW1Sc0Jsb2Nrc0luR3JvdXAxID0gNSAtIDEgPSA0XG4gICAgICAgIHZhciBudW1Sc0Jsb2Nrc0luR3JvdXAxID0gbnVtUlNCbG9ja3MgLSBudW1Sc0Jsb2Nrc0luR3JvdXAyO1xuICAgICAgICAvLyBudW1Ub3RhbEJ5dGVzSW5Hcm91cDEgPSAxOTYgLyA1ID0gMzlcbiAgICAgICAgdmFyIG51bVRvdGFsQnl0ZXNJbkdyb3VwMSA9IE1hdGguZmxvb3IobnVtVG90YWxCeXRlcyAvIG51bVJTQmxvY2tzKTtcbiAgICAgICAgLy8gbnVtVG90YWxCeXRlc0luR3JvdXAyID0gMzkgKyAxID0gNDBcbiAgICAgICAgdmFyIG51bVRvdGFsQnl0ZXNJbkdyb3VwMiA9IG51bVRvdGFsQnl0ZXNJbkdyb3VwMSArIDE7XG4gICAgICAgIC8vIG51bURhdGFCeXRlc0luR3JvdXAxID0gNjYgLyA1ID0gMTNcbiAgICAgICAgdmFyIG51bURhdGFCeXRlc0luR3JvdXAxID0gTWF0aC5mbG9vcihudW1EYXRhQnl0ZXMgLyBudW1SU0Jsb2Nrcyk7XG4gICAgICAgIC8vIG51bURhdGFCeXRlc0luR3JvdXAyID0gMTMgKyAxID0gMTRcbiAgICAgICAgdmFyIG51bURhdGFCeXRlc0luR3JvdXAyID0gbnVtRGF0YUJ5dGVzSW5Hcm91cDEgKyAxO1xuICAgICAgICAvLyBudW1FY0J5dGVzSW5Hcm91cDEgPSAzOSAtIDEzID0gMjZcbiAgICAgICAgdmFyIG51bUVjQnl0ZXNJbkdyb3VwMSA9IG51bVRvdGFsQnl0ZXNJbkdyb3VwMSAtIG51bURhdGFCeXRlc0luR3JvdXAxO1xuICAgICAgICAvLyBudW1FY0J5dGVzSW5Hcm91cDIgPSA0MCAtIDE0ID0gMjZcbiAgICAgICAgdmFyIG51bUVjQnl0ZXNJbkdyb3VwMiA9IG51bVRvdGFsQnl0ZXNJbkdyb3VwMiAtIG51bURhdGFCeXRlc0luR3JvdXAyO1xuICAgICAgICAvLyBTYW5pdHkgY2hlY2tzLlxuICAgICAgICAvLyAyNiA9IDI2XG4gICAgICAgIGlmIChudW1FY0J5dGVzSW5Hcm91cDEgIT09IG51bUVjQnl0ZXNJbkdyb3VwMikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFdyaXRlckV4Y2VwdGlvbl8xLmRlZmF1bHQoJ0VDIGJ5dGVzIG1pc21hdGNoJyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNSA9IDQgKyAxLlxuICAgICAgICBpZiAobnVtUlNCbG9ja3MgIT09IG51bVJzQmxvY2tzSW5Hcm91cDEgKyBudW1Sc0Jsb2Nrc0luR3JvdXAyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgV3JpdGVyRXhjZXB0aW9uXzEuZGVmYXVsdCgnUlMgYmxvY2tzIG1pc21hdGNoJyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gMTk2ID0gKDEzICsgMjYpICogNCArICgxNCArIDI2KSAqIDFcbiAgICAgICAgaWYgKG51bVRvdGFsQnl0ZXMgIT09XG4gICAgICAgICAgICAoKG51bURhdGFCeXRlc0luR3JvdXAxICsgbnVtRWNCeXRlc0luR3JvdXAxKSAqXG4gICAgICAgICAgICAgICAgbnVtUnNCbG9ja3NJbkdyb3VwMSkgK1xuICAgICAgICAgICAgICAgICgobnVtRGF0YUJ5dGVzSW5Hcm91cDIgKyBudW1FY0J5dGVzSW5Hcm91cDIpICpcbiAgICAgICAgICAgICAgICAgICAgbnVtUnNCbG9ja3NJbkdyb3VwMikpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBXcml0ZXJFeGNlcHRpb25fMS5kZWZhdWx0KCdUb3RhbCBieXRlcyBtaXNtYXRjaCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChibG9ja0lEIDwgbnVtUnNCbG9ja3NJbkdyb3VwMSkge1xuICAgICAgICAgICAgbnVtRGF0YUJ5dGVzSW5CbG9ja1swXSA9IG51bURhdGFCeXRlc0luR3JvdXAxO1xuICAgICAgICAgICAgbnVtRUNCeXRlc0luQmxvY2tbMF0gPSBudW1FY0J5dGVzSW5Hcm91cDE7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBudW1EYXRhQnl0ZXNJbkJsb2NrWzBdID0gbnVtRGF0YUJ5dGVzSW5Hcm91cDI7XG4gICAgICAgICAgICBudW1FQ0J5dGVzSW5CbG9ja1swXSA9IG51bUVjQnl0ZXNJbkdyb3VwMjtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogSW50ZXJsZWF2ZSBcImJpdHNcIiB3aXRoIGNvcnJlc3BvbmRpbmcgZXJyb3IgY29ycmVjdGlvbiBieXRlcy4gT24gc3VjY2Vzcywgc3RvcmUgdGhlIHJlc3VsdCBpblxuICAgICAqIFwicmVzdWx0XCIuIFRoZSBpbnRlcmxlYXZlIHJ1bGUgaXMgY29tcGxpY2F0ZWQuIFNlZSA4LjYgb2YgSklTWDA1MTA6MjAwNCAocC4zNykgZm9yIGRldGFpbHMuXG4gICAgICovXG4gICAgRW5jb2Rlci5pbnRlcmxlYXZlV2l0aEVDQnl0ZXMgPSBmdW5jdGlvbiAoYml0cywgbnVtVG90YWxCeXRlcyAvKmludCovLCBudW1EYXRhQnl0ZXMgLyppbnQqLywgbnVtUlNCbG9ja3MgLyppbnQqLykge1xuICAgICAgICB2YXIgZV8xLCBfYSwgZV8yLCBfYjtcbiAgICAgICAgLy8gXCJiaXRzXCIgbXVzdCBoYXZlIFwiZ2V0TnVtRGF0YUJ5dGVzXCIgYnl0ZXMgb2YgZGF0YS5cbiAgICAgICAgaWYgKGJpdHMuZ2V0U2l6ZUluQnl0ZXMoKSAhPT0gbnVtRGF0YUJ5dGVzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgV3JpdGVyRXhjZXB0aW9uXzEuZGVmYXVsdCgnTnVtYmVyIG9mIGJpdHMgYW5kIGRhdGEgYnl0ZXMgZG9lcyBub3QgbWF0Y2gnKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBTdGVwIDEuICBEaXZpZGUgZGF0YSBieXRlcyBpbnRvIGJsb2NrcyBhbmQgZ2VuZXJhdGUgZXJyb3IgY29ycmVjdGlvbiBieXRlcyBmb3IgdGhlbS4gV2UnbGxcbiAgICAgICAgLy8gc3RvcmUgdGhlIGRpdmlkZWQgZGF0YSBieXRlcyBibG9ja3MgYW5kIGVycm9yIGNvcnJlY3Rpb24gYnl0ZXMgYmxvY2tzIGludG8gXCJibG9ja3NcIi5cbiAgICAgICAgdmFyIGRhdGFCeXRlc09mZnNldCA9IDA7XG4gICAgICAgIHZhciBtYXhOdW1EYXRhQnl0ZXMgPSAwO1xuICAgICAgICB2YXIgbWF4TnVtRWNCeXRlcyA9IDA7XG4gICAgICAgIC8vIFNpbmNlLCB3ZSBrbm93IHRoZSBudW1iZXIgb2YgcmVlZHNvbG1vbiBibG9ja3MsIHdlIGNhbiBpbml0aWFsaXplIHRoZSB2ZWN0b3Igd2l0aCB0aGUgbnVtYmVyLlxuICAgICAgICB2YXIgYmxvY2tzID0gbmV3IEFycmF5KCk7IC8vIG5ldyBBcnJheTxCbG9ja1BhaXI+KG51bVJTQmxvY2tzKVxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bVJTQmxvY2tzOyArK2kpIHtcbiAgICAgICAgICAgIHZhciBudW1EYXRhQnl0ZXNJbkJsb2NrID0gbmV3IEludDMyQXJyYXkoMSk7XG4gICAgICAgICAgICB2YXIgbnVtRWNCeXRlc0luQmxvY2sgPSBuZXcgSW50MzJBcnJheSgxKTtcbiAgICAgICAgICAgIEVuY29kZXIuZ2V0TnVtRGF0YUJ5dGVzQW5kTnVtRUNCeXRlc0ZvckJsb2NrSUQobnVtVG90YWxCeXRlcywgbnVtRGF0YUJ5dGVzLCBudW1SU0Jsb2NrcywgaSwgbnVtRGF0YUJ5dGVzSW5CbG9jaywgbnVtRWNCeXRlc0luQmxvY2spO1xuICAgICAgICAgICAgdmFyIHNpemUgPSBudW1EYXRhQnl0ZXNJbkJsb2NrWzBdO1xuICAgICAgICAgICAgdmFyIGRhdGFCeXRlcyA9IG5ldyBVaW50OEFycmF5KHNpemUpO1xuICAgICAgICAgICAgYml0cy50b0J5dGVzKDggKiBkYXRhQnl0ZXNPZmZzZXQsIGRhdGFCeXRlcywgMCwgc2l6ZSk7XG4gICAgICAgICAgICB2YXIgZWNCeXRlcyA9IEVuY29kZXIuZ2VuZXJhdGVFQ0J5dGVzKGRhdGFCeXRlcywgbnVtRWNCeXRlc0luQmxvY2tbMF0pO1xuICAgICAgICAgICAgYmxvY2tzLnB1c2gobmV3IEJsb2NrUGFpcl8xLmRlZmF1bHQoZGF0YUJ5dGVzLCBlY0J5dGVzKSk7XG4gICAgICAgICAgICBtYXhOdW1EYXRhQnl0ZXMgPSBNYXRoLm1heChtYXhOdW1EYXRhQnl0ZXMsIHNpemUpO1xuICAgICAgICAgICAgbWF4TnVtRWNCeXRlcyA9IE1hdGgubWF4KG1heE51bUVjQnl0ZXMsIGVjQnl0ZXMubGVuZ3RoKTtcbiAgICAgICAgICAgIGRhdGFCeXRlc09mZnNldCArPSBudW1EYXRhQnl0ZXNJbkJsb2NrWzBdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChudW1EYXRhQnl0ZXMgIT09IGRhdGFCeXRlc09mZnNldCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFdyaXRlckV4Y2VwdGlvbl8xLmRlZmF1bHQoJ0RhdGEgYnl0ZXMgZG9lcyBub3QgbWF0Y2ggb2Zmc2V0Jyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBCaXRBcnJheV8xLmRlZmF1bHQoKTtcbiAgICAgICAgLy8gRmlyc3QsIHBsYWNlIGRhdGEgYmxvY2tzLlxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1heE51bURhdGFCeXRlczsgKytpKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGJsb2Nrc18xID0gKGVfMSA9IHZvaWQgMCwgX192YWx1ZXMoYmxvY2tzKSksIGJsb2Nrc18xXzEgPSBibG9ja3NfMS5uZXh0KCk7ICFibG9ja3NfMV8xLmRvbmU7IGJsb2Nrc18xXzEgPSBibG9ja3NfMS5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGJsb2NrID0gYmxvY2tzXzFfMS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGFCeXRlcyA9IGJsb2NrLmdldERhdGFCeXRlcygpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaSA8IGRhdGFCeXRlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRCaXRzKGRhdGFCeXRlc1tpXSwgOCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfVxuICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJsb2Nrc18xXzEgJiYgIWJsb2Nrc18xXzEuZG9uZSAmJiAoX2EgPSBibG9ja3NfMS5yZXR1cm4pKSBfYS5jYWxsKGJsb2Nrc18xKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIFRoZW4sIHBsYWNlIGVycm9yIGNvcnJlY3Rpb24gYmxvY2tzLlxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1heE51bUVjQnl0ZXM7ICsraSkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBibG9ja3NfMiA9IChlXzIgPSB2b2lkIDAsIF9fdmFsdWVzKGJsb2NrcykpLCBibG9ja3NfMl8xID0gYmxvY2tzXzIubmV4dCgpOyAhYmxvY2tzXzJfMS5kb25lOyBibG9ja3NfMl8xID0gYmxvY2tzXzIubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBibG9jayA9IGJsb2Nrc18yXzEudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIHZhciBlY0J5dGVzID0gYmxvY2suZ2V0RXJyb3JDb3JyZWN0aW9uQnl0ZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPCBlY0J5dGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZEJpdHMoZWNCeXRlc1tpXSwgOCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZV8yXzEpIHsgZV8yID0geyBlcnJvcjogZV8yXzEgfTsgfVxuICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJsb2Nrc18yXzEgJiYgIWJsb2Nrc18yXzEuZG9uZSAmJiAoX2IgPSBibG9ja3NfMi5yZXR1cm4pKSBfYi5jYWxsKGJsb2Nrc18yKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzIpIHRocm93IGVfMi5lcnJvcjsgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChudW1Ub3RhbEJ5dGVzICE9PSByZXN1bHQuZ2V0U2l6ZUluQnl0ZXMoKSkgeyAvLyBTaG91bGQgYmUgc2FtZS5cbiAgICAgICAgICAgIHRocm93IG5ldyBXcml0ZXJFeGNlcHRpb25fMS5kZWZhdWx0KCdJbnRlcmxlYXZpbmcgZXJyb3I6ICcgKyBudW1Ub3RhbEJ5dGVzICsgJyBhbmQgJyArXG4gICAgICAgICAgICAgICAgcmVzdWx0LmdldFNpemVJbkJ5dGVzKCkgKyAnIGRpZmZlci4nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgRW5jb2Rlci5nZW5lcmF0ZUVDQnl0ZXMgPSBmdW5jdGlvbiAoZGF0YUJ5dGVzLCBudW1FY0J5dGVzSW5CbG9jayAvKmludCovKSB7XG4gICAgICAgIHZhciBudW1EYXRhQnl0ZXMgPSBkYXRhQnl0ZXMubGVuZ3RoO1xuICAgICAgICB2YXIgdG9FbmNvZGUgPSBuZXcgSW50MzJBcnJheShudW1EYXRhQnl0ZXMgKyBudW1FY0J5dGVzSW5CbG9jayk7IC8vIGludFtudW1EYXRhQnl0ZXMgKyBudW1FY0J5dGVzSW5CbG9ja11cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1EYXRhQnl0ZXM7IGkrKykge1xuICAgICAgICAgICAgdG9FbmNvZGVbaV0gPSBkYXRhQnl0ZXNbaV0gJiAweEZGO1xuICAgICAgICB9XG4gICAgICAgIG5ldyBSZWVkU29sb21vbkVuY29kZXJfMS5kZWZhdWx0KEdlbmVyaWNHRl8xLmRlZmF1bHQuUVJfQ09ERV9GSUVMRF8yNTYpLmVuY29kZSh0b0VuY29kZSwgbnVtRWNCeXRlc0luQmxvY2spO1xuICAgICAgICB2YXIgZWNCeXRlcyA9IG5ldyBVaW50OEFycmF5KG51bUVjQnl0ZXNJbkJsb2NrKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1FY0J5dGVzSW5CbG9jazsgaSsrKSB7XG4gICAgICAgICAgICBlY0J5dGVzW2ldID0gLyooYnl0ZSkgKi8gdG9FbmNvZGVbbnVtRGF0YUJ5dGVzICsgaV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVjQnl0ZXM7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBBcHBlbmQgbW9kZSBpbmZvLiBPbiBzdWNjZXNzLCBzdG9yZSB0aGUgcmVzdWx0IGluIFwiYml0c1wiLlxuICAgICAqL1xuICAgIEVuY29kZXIuYXBwZW5kTW9kZUluZm8gPSBmdW5jdGlvbiAobW9kZSwgYml0cykge1xuICAgICAgICBiaXRzLmFwcGVuZEJpdHMobW9kZS5nZXRCaXRzKCksIDQpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQXBwZW5kIGxlbmd0aCBpbmZvLiBPbiBzdWNjZXNzLCBzdG9yZSB0aGUgcmVzdWx0IGluIFwiYml0c1wiLlxuICAgICAqL1xuICAgIEVuY29kZXIuYXBwZW5kTGVuZ3RoSW5mbyA9IGZ1bmN0aW9uIChudW1MZXR0ZXJzIC8qaW50Ki8sIHZlcnNpb24sIG1vZGUsIGJpdHMpIHtcbiAgICAgICAgdmFyIG51bUJpdHMgPSBtb2RlLmdldENoYXJhY3RlckNvdW50Qml0cyh2ZXJzaW9uKTtcbiAgICAgICAgaWYgKG51bUxldHRlcnMgPj0gKDEgPDwgbnVtQml0cykpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBXcml0ZXJFeGNlcHRpb25fMS5kZWZhdWx0KG51bUxldHRlcnMgKyAnIGlzIGJpZ2dlciB0aGFuICcgKyAoKDEgPDwgbnVtQml0cykgLSAxKSk7XG4gICAgICAgIH1cbiAgICAgICAgYml0cy5hcHBlbmRCaXRzKG51bUxldHRlcnMsIG51bUJpdHMpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQXBwZW5kIFwiYnl0ZXNcIiBpbiBcIm1vZGVcIiBtb2RlIChlbmNvZGluZykgaW50byBcImJpdHNcIi4gT24gc3VjY2Vzcywgc3RvcmUgdGhlIHJlc3VsdCBpbiBcImJpdHNcIi5cbiAgICAgKi9cbiAgICBFbmNvZGVyLmFwcGVuZEJ5dGVzID0gZnVuY3Rpb24gKGNvbnRlbnQsIG1vZGUsIGJpdHMsIGVuY29kaW5nKSB7XG4gICAgICAgIHN3aXRjaCAobW9kZSkge1xuICAgICAgICAgICAgY2FzZSBNb2RlXzEuZGVmYXVsdC5OVU1FUklDOlxuICAgICAgICAgICAgICAgIEVuY29kZXIuYXBwZW5kTnVtZXJpY0J5dGVzKGNvbnRlbnQsIGJpdHMpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBNb2RlXzEuZGVmYXVsdC5BTFBIQU5VTUVSSUM6XG4gICAgICAgICAgICAgICAgRW5jb2Rlci5hcHBlbmRBbHBoYW51bWVyaWNCeXRlcyhjb250ZW50LCBiaXRzKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgTW9kZV8xLmRlZmF1bHQuQllURTpcbiAgICAgICAgICAgICAgICBFbmNvZGVyLmFwcGVuZDhCaXRCeXRlcyhjb250ZW50LCBiaXRzLCBlbmNvZGluZyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIE1vZGVfMS5kZWZhdWx0LktBTkpJOlxuICAgICAgICAgICAgICAgIEVuY29kZXIuYXBwZW5kS2FuamlCeXRlcyhjb250ZW50LCBiaXRzKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdyaXRlckV4Y2VwdGlvbl8xLmRlZmF1bHQoJ0ludmFsaWQgbW9kZTogJyArIG1vZGUpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBFbmNvZGVyLmdldERpZ2l0ID0gZnVuY3Rpb24gKHNpbmdsZUNoYXJhY3Rlcikge1xuICAgICAgICByZXR1cm4gc2luZ2xlQ2hhcmFjdGVyLmNoYXJDb2RlQXQoMCkgLSA0ODtcbiAgICB9O1xuICAgIEVuY29kZXIuaXNEaWdpdCA9IGZ1bmN0aW9uIChzaW5nbGVDaGFyYWN0ZXIpIHtcbiAgICAgICAgdmFyIGNuID0gRW5jb2Rlci5nZXREaWdpdChzaW5nbGVDaGFyYWN0ZXIpO1xuICAgICAgICByZXR1cm4gY24gPj0gMCAmJiBjbiA8PSA5O1xuICAgIH07XG4gICAgRW5jb2Rlci5hcHBlbmROdW1lcmljQnl0ZXMgPSBmdW5jdGlvbiAoY29udGVudCwgYml0cykge1xuICAgICAgICB2YXIgbGVuZ3RoID0gY29udGVudC5sZW5ndGg7XG4gICAgICAgIHZhciBpID0gMDtcbiAgICAgICAgd2hpbGUgKGkgPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIHZhciBudW0xID0gRW5jb2Rlci5nZXREaWdpdChjb250ZW50LmNoYXJBdChpKSk7XG4gICAgICAgICAgICBpZiAoaSArIDIgPCBsZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAvLyBFbmNvZGUgdGhyZWUgbnVtZXJpYyBsZXR0ZXJzIGluIHRlbiBiaXRzLlxuICAgICAgICAgICAgICAgIHZhciBudW0yID0gRW5jb2Rlci5nZXREaWdpdChjb250ZW50LmNoYXJBdChpICsgMSkpO1xuICAgICAgICAgICAgICAgIHZhciBudW0zID0gRW5jb2Rlci5nZXREaWdpdChjb250ZW50LmNoYXJBdChpICsgMikpO1xuICAgICAgICAgICAgICAgIGJpdHMuYXBwZW5kQml0cyhudW0xICogMTAwICsgbnVtMiAqIDEwICsgbnVtMywgMTApO1xuICAgICAgICAgICAgICAgIGkgKz0gMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGkgKyAxIDwgbGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgLy8gRW5jb2RlIHR3byBudW1lcmljIGxldHRlcnMgaW4gc2V2ZW4gYml0cy5cbiAgICAgICAgICAgICAgICB2YXIgbnVtMiA9IEVuY29kZXIuZ2V0RGlnaXQoY29udGVudC5jaGFyQXQoaSArIDEpKTtcbiAgICAgICAgICAgICAgICBiaXRzLmFwcGVuZEJpdHMobnVtMSAqIDEwICsgbnVtMiwgNyk7XG4gICAgICAgICAgICAgICAgaSArPSAyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gRW5jb2RlIG9uZSBudW1lcmljIGxldHRlciBpbiBmb3VyIGJpdHMuXG4gICAgICAgICAgICAgICAgYml0cy5hcHBlbmRCaXRzKG51bTEsIDQpO1xuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgRW5jb2Rlci5hcHBlbmRBbHBoYW51bWVyaWNCeXRlcyA9IGZ1bmN0aW9uIChjb250ZW50LCBiaXRzKSB7XG4gICAgICAgIHZhciBsZW5ndGggPSBjb250ZW50Lmxlbmd0aDtcbiAgICAgICAgdmFyIGkgPSAwO1xuICAgICAgICB3aGlsZSAoaSA8IGxlbmd0aCkge1xuICAgICAgICAgICAgdmFyIGNvZGUxID0gRW5jb2Rlci5nZXRBbHBoYW51bWVyaWNDb2RlKGNvbnRlbnQuY2hhckNvZGVBdChpKSk7XG4gICAgICAgICAgICBpZiAoY29kZTEgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdyaXRlckV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpICsgMSA8IGxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHZhciBjb2RlMiA9IEVuY29kZXIuZ2V0QWxwaGFudW1lcmljQ29kZShjb250ZW50LmNoYXJDb2RlQXQoaSArIDEpKTtcbiAgICAgICAgICAgICAgICBpZiAoY29kZTIgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBXcml0ZXJFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIEVuY29kZSB0d28gYWxwaGFudW1lcmljIGxldHRlcnMgaW4gMTEgYml0cy5cbiAgICAgICAgICAgICAgICBiaXRzLmFwcGVuZEJpdHMoY29kZTEgKiA0NSArIGNvZGUyLCAxMSk7XG4gICAgICAgICAgICAgICAgaSArPSAyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gRW5jb2RlIG9uZSBhbHBoYW51bWVyaWMgbGV0dGVyIGluIHNpeCBiaXRzLlxuICAgICAgICAgICAgICAgIGJpdHMuYXBwZW5kQml0cyhjb2RlMSwgNik7XG4gICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBFbmNvZGVyLmFwcGVuZDhCaXRCeXRlcyA9IGZ1bmN0aW9uIChjb250ZW50LCBiaXRzLCBlbmNvZGluZykge1xuICAgICAgICB2YXIgYnl0ZXM7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBieXRlcyA9IFN0cmluZ0VuY29kaW5nXzEuZGVmYXVsdC5lbmNvZGUoY29udGVudCwgZW5jb2RpbmcpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoICh1ZWUgLyo6IFVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24qLykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFdyaXRlckV4Y2VwdGlvbl8xLmRlZmF1bHQodWVlKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoXzIgPSBieXRlcy5sZW5ndGg7IGkgIT09IGxlbmd0aF8yOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBiID0gYnl0ZXNbaV07XG4gICAgICAgICAgICBiaXRzLmFwcGVuZEJpdHMoYiwgOCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEB0aHJvd3MgV3JpdGVyRXhjZXB0aW9uXG4gICAgICovXG4gICAgRW5jb2Rlci5hcHBlbmRLYW5qaUJ5dGVzID0gZnVuY3Rpb24gKGNvbnRlbnQsIGJpdHMpIHtcbiAgICAgICAgdmFyIGJ5dGVzO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYnl0ZXMgPSBTdHJpbmdFbmNvZGluZ18xLmRlZmF1bHQuZW5jb2RlKGNvbnRlbnQsIENoYXJhY3RlclNldEVDSV8xLmRlZmF1bHQuU0pJUyk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKHVlZSAvKjogVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiovKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgV3JpdGVyRXhjZXB0aW9uXzEuZGVmYXVsdCh1ZWUpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBsZW5ndGggPSBieXRlcy5sZW5ndGg7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgICAgICAgIHZhciBieXRlMSA9IGJ5dGVzW2ldICYgMHhGRjtcbiAgICAgICAgICAgIHZhciBieXRlMiA9IGJ5dGVzW2kgKyAxXSAmIDB4RkY7XG4gICAgICAgICAgICB2YXIgY29kZSA9ICgoYnl0ZTEgPDwgOCkgJiAweEZGRkZGRkZGKSB8IGJ5dGUyO1xuICAgICAgICAgICAgdmFyIHN1YnRyYWN0ZWQgPSAtMTtcbiAgICAgICAgICAgIGlmIChjb2RlID49IDB4ODE0MCAmJiBjb2RlIDw9IDB4OWZmYykge1xuICAgICAgICAgICAgICAgIHN1YnRyYWN0ZWQgPSBjb2RlIC0gMHg4MTQwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY29kZSA+PSAweGUwNDAgJiYgY29kZSA8PSAweGViYmYpIHtcbiAgICAgICAgICAgICAgICBzdWJ0cmFjdGVkID0gY29kZSAtIDB4YzE0MDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzdWJ0cmFjdGVkID09PSAtMSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBXcml0ZXJFeGNlcHRpb25fMS5kZWZhdWx0KCdJbnZhbGlkIGJ5dGUgc2VxdWVuY2UnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBlbmNvZGVkID0gKChzdWJ0cmFjdGVkID4+IDgpICogMHhjMCkgKyAoc3VidHJhY3RlZCAmIDB4ZmYpO1xuICAgICAgICAgICAgYml0cy5hcHBlbmRCaXRzKGVuY29kZWQsIDEzKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgRW5jb2Rlci5hcHBlbmRFQ0kgPSBmdW5jdGlvbiAoZWNpLCBiaXRzKSB7XG4gICAgICAgIGJpdHMuYXBwZW5kQml0cyhNb2RlXzEuZGVmYXVsdC5FQ0kuZ2V0Qml0cygpLCA0KTtcbiAgICAgICAgLy8gVGhpcyBpcyBjb3JyZWN0IGZvciB2YWx1ZXMgdXAgdG8gMTI3LCB3aGljaCBpcyBhbGwgd2UgbmVlZCBub3cuXG4gICAgICAgIGJpdHMuYXBwZW5kQml0cyhlY2kuZ2V0VmFsdWUoKSwgOCk7XG4gICAgfTtcbiAgICAvLyBUaGUgb3JpZ2luYWwgdGFibGUgaXMgZGVmaW5lZCBpbiB0aGUgdGFibGUgNSBvZiBKSVNYMDUxMDoyMDA0IChwLjE5KS5cbiAgICBFbmNvZGVyLkFMUEhBTlVNRVJJQ19UQUJMRSA9IEludDMyQXJyYXkuZnJvbShbXG4gICAgICAgIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAgICAgICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgICAgICAgMzYsIC0xLCAtMSwgLTEsIDM3LCAzOCwgLTEsIC0xLCAtMSwgLTEsIDM5LCA0MCwgLTEsIDQxLCA0MiwgNDMsXG4gICAgICAgIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDQ0LCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gICAgICAgIC0xLCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LFxuICAgICAgICAyNSwgMjYsIDI3LCAyOCwgMjksIDMwLCAzMSwgMzIsIDMzLCAzNCwgMzUsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgICBdKTtcbiAgICBFbmNvZGVyLkRFRkFVTFRfQllURV9NT0RFX0VOQ09ESU5HID0gQ2hhcmFjdGVyU2V0RUNJXzEuZGVmYXVsdC5VVEY4LmdldE5hbWUoKTsgLy8gXCJJU08tODg1OS0xXCJcbiAgICByZXR1cm4gRW5jb2Rlcjtcbn0oKSk7XG5leHBvcnRzLmRlZmF1bHQgPSBFbmNvZGVyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RW5jb2Rlci5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuQnJvd3NlclFSQ29kZVN2Z1dyaXRlciA9IHZvaWQgMDtcbnZhciBFbmNvZGVIaW50VHlwZV8xID0gcmVxdWlyZShcIi4uL2NvcmUvRW5jb2RlSGludFR5cGVcIik7XG52YXIgRW5jb2Rlcl8xID0gcmVxdWlyZShcIi4uL2NvcmUvcXJjb2RlL2VuY29kZXIvRW5jb2RlclwiKTtcbnZhciBFcnJvckNvcnJlY3Rpb25MZXZlbF8xID0gcmVxdWlyZShcIi4uL2NvcmUvcXJjb2RlL2RlY29kZXIvRXJyb3JDb3JyZWN0aW9uTGV2ZWxcIik7XG52YXIgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEgPSByZXF1aXJlKFwiLi4vY29yZS9JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25cIik7XG52YXIgSWxsZWdhbFN0YXRlRXhjZXB0aW9uXzEgPSByZXF1aXJlKFwiLi4vY29yZS9JbGxlZ2FsU3RhdGVFeGNlcHRpb25cIik7XG4vKipcbiAqIEBkZXByZWNhdGVkIE1vdmluZyB0byBAenhpbmcvYnJvd3NlclxuICovXG52YXIgQnJvd3NlclFSQ29kZVN2Z1dyaXRlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBCcm93c2VyUVJDb2RlU3ZnV3JpdGVyKCkge1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBXcml0ZXMgYW5kIHJlbmRlcnMgYSBRUkNvZGUgU1ZHIGVsZW1lbnQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29udGVudHNcbiAgICAgKiBAcGFyYW0gd2lkdGhcbiAgICAgKiBAcGFyYW0gaGVpZ2h0XG4gICAgICogQHBhcmFtIGhpbnRzXG4gICAgICovXG4gICAgQnJvd3NlclFSQ29kZVN2Z1dyaXRlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiAoY29udGVudHMsIHdpZHRoLCBoZWlnaHQsIGhpbnRzKSB7XG4gICAgICAgIGlmIChoaW50cyA9PT0gdm9pZCAwKSB7IGhpbnRzID0gbnVsbDsgfVxuICAgICAgICBpZiAoY29udGVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgnRm91bmQgZW1wdHkgY29udGVudHMnKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBpZiAoZm9ybWF0ICE9IEJhcmNvZGVGb3JtYXQuUVJfQ09ERSkge1xuICAgICAgICAvLyAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oXCJDYW4gb25seSBlbmNvZGUgUVJfQ09ERSwgYnV0IGdvdCBcIiArIGZvcm1hdClcbiAgICAgICAgLy8gfVxuICAgICAgICBpZiAod2lkdGggPCAwIHx8IGhlaWdodCA8IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCdSZXF1ZXN0ZWQgZGltZW5zaW9ucyBhcmUgdG9vIHNtYWxsOiAnICsgd2lkdGggKyAneCcgKyBoZWlnaHQpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBlcnJvckNvcnJlY3Rpb25MZXZlbCA9IEVycm9yQ29ycmVjdGlvbkxldmVsXzEuZGVmYXVsdC5MO1xuICAgICAgICB2YXIgcXVpZXRab25lID0gQnJvd3NlclFSQ29kZVN2Z1dyaXRlci5RVUlFVF9aT05FX1NJWkU7XG4gICAgICAgIGlmIChoaW50cyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHVuZGVmaW5lZCAhPT0gaGludHMuZ2V0KEVuY29kZUhpbnRUeXBlXzEuZGVmYXVsdC5FUlJPUl9DT1JSRUNUSU9OKSkge1xuICAgICAgICAgICAgICAgIGVycm9yQ29ycmVjdGlvbkxldmVsID0gRXJyb3JDb3JyZWN0aW9uTGV2ZWxfMS5kZWZhdWx0LmZyb21TdHJpbmcoaGludHMuZ2V0KEVuY29kZUhpbnRUeXBlXzEuZGVmYXVsdC5FUlJPUl9DT1JSRUNUSU9OKS50b1N0cmluZygpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh1bmRlZmluZWQgIT09IGhpbnRzLmdldChFbmNvZGVIaW50VHlwZV8xLmRlZmF1bHQuTUFSR0lOKSkge1xuICAgICAgICAgICAgICAgIHF1aWV0Wm9uZSA9IE51bWJlci5wYXJzZUludChoaW50cy5nZXQoRW5jb2RlSGludFR5cGVfMS5kZWZhdWx0Lk1BUkdJTikudG9TdHJpbmcoKSwgMTApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHZhciBjb2RlID0gRW5jb2Rlcl8xLmRlZmF1bHQuZW5jb2RlKGNvbnRlbnRzLCBlcnJvckNvcnJlY3Rpb25MZXZlbCwgaGludHMpO1xuICAgICAgICByZXR1cm4gdGhpcy5yZW5kZXJSZXN1bHQoY29kZSwgd2lkdGgsIGhlaWdodCwgcXVpZXRab25lKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFJlbmRlcnMgdGhlIHJlc3VsdCBhbmQgdGhlbiBhcHBlbmRzIGl0IHRvIHRoZSBET00uXG4gICAgICovXG4gICAgQnJvd3NlclFSQ29kZVN2Z1dyaXRlci5wcm90b3R5cGUud3JpdGVUb0RvbSA9IGZ1bmN0aW9uIChjb250YWluZXJFbGVtZW50LCBjb250ZW50cywgd2lkdGgsIGhlaWdodCwgaGludHMpIHtcbiAgICAgICAgaWYgKGhpbnRzID09PSB2b2lkIDApIHsgaGludHMgPSBudWxsOyB9XG4gICAgICAgIGlmICh0eXBlb2YgY29udGFpbmVyRWxlbWVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGNvbnRhaW5lckVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGNvbnRhaW5lckVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzdmdFbGVtZW50ID0gdGhpcy53cml0ZShjb250ZW50cywgd2lkdGgsIGhlaWdodCwgaGludHMpO1xuICAgICAgICBpZiAoY29udGFpbmVyRWxlbWVudClcbiAgICAgICAgICAgIGNvbnRhaW5lckVsZW1lbnQuYXBwZW5kQ2hpbGQoc3ZnRWxlbWVudCk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBOb3RlIHRoYXQgdGhlIGlucHV0IG1hdHJpeCB1c2VzIDAgPT0gd2hpdGUsIDEgPT0gYmxhY2suXG4gICAgICogVGhlIG91dHB1dCBtYXRyaXggdXNlcyAwID09IGJsYWNrLCAyNTUgPT0gd2hpdGUgKGkuZS4gYW4gOCBiaXQgZ3JleXNjYWxlIGJpdG1hcCkuXG4gICAgICovXG4gICAgQnJvd3NlclFSQ29kZVN2Z1dyaXRlci5wcm90b3R5cGUucmVuZGVyUmVzdWx0ID0gZnVuY3Rpb24gKGNvZGUsIHdpZHRoIC8qaW50Ki8sIGhlaWdodCAvKmludCovLCBxdWlldFpvbmUgLyppbnQqLykge1xuICAgICAgICB2YXIgaW5wdXQgPSBjb2RlLmdldE1hdHJpeCgpO1xuICAgICAgICBpZiAoaW5wdXQgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb25fMS5kZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGlucHV0V2lkdGggPSBpbnB1dC5nZXRXaWR0aCgpO1xuICAgICAgICB2YXIgaW5wdXRIZWlnaHQgPSBpbnB1dC5nZXRIZWlnaHQoKTtcbiAgICAgICAgdmFyIHFyV2lkdGggPSBpbnB1dFdpZHRoICsgKHF1aWV0Wm9uZSAqIDIpO1xuICAgICAgICB2YXIgcXJIZWlnaHQgPSBpbnB1dEhlaWdodCArIChxdWlldFpvbmUgKiAyKTtcbiAgICAgICAgdmFyIG91dHB1dFdpZHRoID0gTWF0aC5tYXgod2lkdGgsIHFyV2lkdGgpO1xuICAgICAgICB2YXIgb3V0cHV0SGVpZ2h0ID0gTWF0aC5tYXgoaGVpZ2h0LCBxckhlaWdodCk7XG4gICAgICAgIHZhciBtdWx0aXBsZSA9IE1hdGgubWluKE1hdGguZmxvb3Iob3V0cHV0V2lkdGggLyBxcldpZHRoKSwgTWF0aC5mbG9vcihvdXRwdXRIZWlnaHQgLyBxckhlaWdodCkpO1xuICAgICAgICAvLyBQYWRkaW5nIGluY2x1ZGVzIGJvdGggdGhlIHF1aWV0IHpvbmUgYW5kIHRoZSBleHRyYSB3aGl0ZSBwaXhlbHMgdG8gYWNjb21tb2RhdGUgdGhlIHJlcXVlc3RlZFxuICAgICAgICAvLyBkaW1lbnNpb25zLiBGb3IgZXhhbXBsZSwgaWYgaW5wdXQgaXMgMjV4MjUgdGhlIFFSIHdpbGwgYmUgMzN4MzMgaW5jbHVkaW5nIHRoZSBxdWlldCB6b25lLlxuICAgICAgICAvLyBJZiB0aGUgcmVxdWVzdGVkIHNpemUgaXMgMjAweDE2MCwgdGhlIG11bHRpcGxlIHdpbGwgYmUgNCwgZm9yIGEgUVIgb2YgMTMyeDEzMi4gVGhlc2Ugd2lsbFxuICAgICAgICAvLyBoYW5kbGUgYWxsIHRoZSBwYWRkaW5nIGZyb20gMTAweDEwMCAodGhlIGFjdHVhbCBRUikgdXAgdG8gMjAweDE2MC5cbiAgICAgICAgdmFyIGxlZnRQYWRkaW5nID0gTWF0aC5mbG9vcigob3V0cHV0V2lkdGggLSAoaW5wdXRXaWR0aCAqIG11bHRpcGxlKSkgLyAyKTtcbiAgICAgICAgdmFyIHRvcFBhZGRpbmcgPSBNYXRoLmZsb29yKChvdXRwdXRIZWlnaHQgLSAoaW5wdXRIZWlnaHQgKiBtdWx0aXBsZSkpIC8gMik7XG4gICAgICAgIHZhciBzdmdFbGVtZW50ID0gdGhpcy5jcmVhdGVTVkdFbGVtZW50KG91dHB1dFdpZHRoLCBvdXRwdXRIZWlnaHQpO1xuICAgICAgICBmb3IgKHZhciBpbnB1dFkgPSAwLCBvdXRwdXRZID0gdG9wUGFkZGluZzsgaW5wdXRZIDwgaW5wdXRIZWlnaHQ7IGlucHV0WSsrLCBvdXRwdXRZICs9IG11bHRpcGxlKSB7XG4gICAgICAgICAgICAvLyBXcml0ZSB0aGUgY29udGVudHMgb2YgdGhpcyByb3cgb2YgdGhlIGJhcmNvZGVcbiAgICAgICAgICAgIGZvciAodmFyIGlucHV0WCA9IDAsIG91dHB1dFggPSBsZWZ0UGFkZGluZzsgaW5wdXRYIDwgaW5wdXRXaWR0aDsgaW5wdXRYKyssIG91dHB1dFggKz0gbXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQuZ2V0KGlucHV0WCwgaW5wdXRZKSA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgc3ZnUmVjdEVsZW1lbnQgPSB0aGlzLmNyZWF0ZVN2Z1JlY3RFbGVtZW50KG91dHB1dFgsIG91dHB1dFksIG11bHRpcGxlLCBtdWx0aXBsZSk7XG4gICAgICAgICAgICAgICAgICAgIHN2Z0VsZW1lbnQuYXBwZW5kQ2hpbGQoc3ZnUmVjdEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3ZnRWxlbWVudDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBTVkcgZWxlbWVudC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB3IFNWRydzIHdpZHRoIGF0dHJpYnV0ZVxuICAgICAqIEBwYXJhbSBoIFNWRydzIGhlaWdodCBhdHRyaWJ1dGVcbiAgICAgKi9cbiAgICBCcm93c2VyUVJDb2RlU3ZnV3JpdGVyLnByb3RvdHlwZS5jcmVhdGVTVkdFbGVtZW50ID0gZnVuY3Rpb24gKHcsIGgpIHtcbiAgICAgICAgdmFyIHN2Z0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoQnJvd3NlclFSQ29kZVN2Z1dyaXRlci5TVkdfTlMsICdzdmcnKTtcbiAgICAgICAgc3ZnRWxlbWVudC5zZXRBdHRyaWJ1dGVOUyhudWxsLCAnaGVpZ2h0Jywgdy50b1N0cmluZygpKTtcbiAgICAgICAgc3ZnRWxlbWVudC5zZXRBdHRyaWJ1dGVOUyhudWxsLCAnd2lkdGgnLCBoLnRvU3RyaW5nKCkpO1xuICAgICAgICByZXR1cm4gc3ZnRWxlbWVudDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBTVkcgcmVjdCBlbGVtZW50LlxuICAgICAqXG4gICAgICogQHBhcmFtIHggRWxlbWVudCdzIHggY29vcmRpbmF0ZVxuICAgICAqIEBwYXJhbSB5IEVsZW1lbnQncyB5IGNvb3JkaW5hdGVcbiAgICAgKiBAcGFyYW0gdyBFbGVtZW50J3Mgd2lkdGggYXR0cmlidXRlXG4gICAgICogQHBhcmFtIGggRWxlbWVudCdzIGhlaWdodCBhdHRyaWJ1dGVcbiAgICAgKi9cbiAgICBCcm93c2VyUVJDb2RlU3ZnV3JpdGVyLnByb3RvdHlwZS5jcmVhdGVTdmdSZWN0RWxlbWVudCA9IGZ1bmN0aW9uICh4LCB5LCB3LCBoKSB7XG4gICAgICAgIHZhciByZWN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKEJyb3dzZXJRUkNvZGVTdmdXcml0ZXIuU1ZHX05TLCAncmVjdCcpO1xuICAgICAgICByZWN0LnNldEF0dHJpYnV0ZU5TKG51bGwsICd4JywgeC50b1N0cmluZygpKTtcbiAgICAgICAgcmVjdC5zZXRBdHRyaWJ1dGVOUyhudWxsLCAneScsIHkudG9TdHJpbmcoKSk7XG4gICAgICAgIHJlY3Quc2V0QXR0cmlidXRlTlMobnVsbCwgJ2hlaWdodCcsIHcudG9TdHJpbmcoKSk7XG4gICAgICAgIHJlY3Quc2V0QXR0cmlidXRlTlMobnVsbCwgJ3dpZHRoJywgaC50b1N0cmluZygpKTtcbiAgICAgICAgcmVjdC5zZXRBdHRyaWJ1dGVOUyhudWxsLCAnZmlsbCcsICcjMDAwMDAwJyk7XG4gICAgICAgIHJldHVybiByZWN0O1xuICAgIH07XG4gICAgQnJvd3NlclFSQ29kZVN2Z1dyaXRlci5RVUlFVF9aT05FX1NJWkUgPSA0O1xuICAgIC8qKlxuICAgICAqIFNWRyBtYXJrdXAgTmFtZVNwYWNlXG4gICAgICovXG4gICAgQnJvd3NlclFSQ29kZVN2Z1dyaXRlci5TVkdfTlMgPSAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnO1xuICAgIHJldHVybiBCcm93c2VyUVJDb2RlU3ZnV3JpdGVyO1xufSgpKTtcbmV4cG9ydHMuQnJvd3NlclFSQ29kZVN2Z1dyaXRlciA9IEJyb3dzZXJRUkNvZGVTdmdXcml0ZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Ccm93c2VyUVJDb2RlU3ZnV3JpdGVyLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RGVjb2RlQ29udGludW91c2x5Q2FsbGJhY2suanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1IVE1MVmlzdWFsTWVkaWFFbGVtZW50LmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fY3JlYXRlQmluZGluZyA9ICh0aGlzICYmIHRoaXMuX19jcmVhdGVCaW5kaW5nKSB8fCAoT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIGsyLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24oKSB7IHJldHVybiBtW2tdOyB9IH0pO1xufSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICAgIG9bazJdID0gbVtrXTtcbn0pKTtcbnZhciBfX2V4cG9ydFN0YXIgPSAodGhpcyAmJiB0aGlzLl9fZXhwb3J0U3RhcikgfHwgZnVuY3Rpb24obSwgZXhwb3J0cykge1xuICAgIGZvciAodmFyIHAgaW4gbSkgaWYgKHAgIT09IFwiZGVmYXVsdFwiICYmICFleHBvcnRzLmhhc093blByb3BlcnR5KHApKSBfX2NyZWF0ZUJpbmRpbmcoZXhwb3J0cywgbSwgcCk7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLy8gYnJvd3NlclxuX19leHBvcnRTdGFyKHJlcXVpcmUoXCIuL2Jyb3dzZXIvQnJvd3NlckF6dGVjQ29kZVJlYWRlclwiKSwgZXhwb3J0cyk7XG5fX2V4cG9ydFN0YXIocmVxdWlyZShcIi4vYnJvd3Nlci9Ccm93c2VyQmFyY29kZVJlYWRlclwiKSwgZXhwb3J0cyk7XG5fX2V4cG9ydFN0YXIocmVxdWlyZShcIi4vYnJvd3Nlci9Ccm93c2VyQ29kZVJlYWRlclwiKSwgZXhwb3J0cyk7XG5fX2V4cG9ydFN0YXIocmVxdWlyZShcIi4vYnJvd3Nlci9Ccm93c2VyRGF0YW1hdHJpeENvZGVSZWFkZXJcIiksIGV4cG9ydHMpO1xuX19leHBvcnRTdGFyKHJlcXVpcmUoXCIuL2Jyb3dzZXIvQnJvd3Nlck11bHRpRm9ybWF0UmVhZGVyXCIpLCBleHBvcnRzKTtcbl9fZXhwb3J0U3RhcihyZXF1aXJlKFwiLi9icm93c2VyL0Jyb3dzZXJQREY0MTdSZWFkZXJcIiksIGV4cG9ydHMpO1xuX19leHBvcnRTdGFyKHJlcXVpcmUoXCIuL2Jyb3dzZXIvQnJvd3NlclFSQ29kZVJlYWRlclwiKSwgZXhwb3J0cyk7XG5fX2V4cG9ydFN0YXIocmVxdWlyZShcIi4vYnJvd3Nlci9Ccm93c2VyUVJDb2RlU3ZnV3JpdGVyXCIpLCBleHBvcnRzKTtcbl9fZXhwb3J0U3RhcihyZXF1aXJlKFwiLi9icm93c2VyL0RlY29kZUNvbnRpbnVvdXNseUNhbGxiYWNrXCIpLCBleHBvcnRzKTtcbl9fZXhwb3J0U3RhcihyZXF1aXJlKFwiLi9icm93c2VyL0hUTUxDYW52YXNFbGVtZW50THVtaW5hbmNlU291cmNlXCIpLCBleHBvcnRzKTtcbl9fZXhwb3J0U3RhcihyZXF1aXJlKFwiLi9icm93c2VyL0hUTUxWaXN1YWxNZWRpYUVsZW1lbnRcIiksIGV4cG9ydHMpO1xuX19leHBvcnRTdGFyKHJlcXVpcmUoXCIuL2Jyb3dzZXIvVmlkZW9JbnB1dERldmljZVwiKSwgZXhwb3J0cyk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1icm93c2VyLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuLypcbiAqIENvcHlyaWdodCAyMDA4IFpYaW5nIGF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vKm5hbWVzcGFjZSBjb20uZ29vZ2xlLnp4aW5nLnFyY29kZSB7Ki9cbnZhciBCYXJjb2RlRm9ybWF0XzEgPSByZXF1aXJlKFwiLi4vQmFyY29kZUZvcm1hdFwiKTtcbnZhciBFbmNvZGVIaW50VHlwZV8xID0gcmVxdWlyZShcIi4uL0VuY29kZUhpbnRUeXBlXCIpO1xudmFyIEJpdE1hdHJpeF8xID0gcmVxdWlyZShcIi4uL2NvbW1vbi9CaXRNYXRyaXhcIik7XG52YXIgRXJyb3JDb3JyZWN0aW9uTGV2ZWxfMSA9IHJlcXVpcmUoXCIuL2RlY29kZXIvRXJyb3JDb3JyZWN0aW9uTGV2ZWxcIik7XG52YXIgRW5jb2Rlcl8xID0gcmVxdWlyZShcIi4vZW5jb2Rlci9FbmNvZGVyXCIpO1xudmFyIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4uL0lsbGVnYWxBcmd1bWVudEV4Y2VwdGlvblwiKTtcbnZhciBJbGxlZ2FsU3RhdGVFeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuLi9JbGxlZ2FsU3RhdGVFeGNlcHRpb25cIik7XG4vKmltcG9ydCBqYXZhLnV0aWwuTWFwOyovXG4vKipcbiAqIFRoaXMgb2JqZWN0IHJlbmRlcnMgYSBRUiBDb2RlIGFzIGEgQml0TWF0cml4IDJEIGFycmF5IG9mIGdyZXlzY2FsZSB2YWx1ZXMuXG4gKlxuICogQGF1dGhvciBkc3dpdGtpbkBnb29nbGUuY29tIChEYW5pZWwgU3dpdGtpbilcbiAqL1xudmFyIFFSQ29kZVdyaXRlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBRUkNvZGVXcml0ZXIoKSB7XG4gICAgfVxuICAgIC8qQE92ZXJyaWRlKi9cbiAgICAvLyBwdWJsaWMgZW5jb2RlKGNvbnRlbnRzOiBzdHJpbmcsIGZvcm1hdDogQmFyY29kZUZvcm1hdCwgd2lkdGg6IG51bWJlciAvKmludCovLCBoZWlnaHQ6IG51bWJlciAvKmludCovKTogQml0TWF0cml4XG4gICAgLy8gICAgIC8qdGhyb3dzIFdyaXRlckV4Y2VwdGlvbiAqLyB7XG4gICAgLy8gICByZXR1cm4gZW5jb2RlKGNvbnRlbnRzLCBmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIG51bGwpXG4gICAgLy8gfVxuICAgIC8qQE92ZXJyaWRlKi9cbiAgICBRUkNvZGVXcml0ZXIucHJvdG90eXBlLmVuY29kZSA9IGZ1bmN0aW9uIChjb250ZW50cywgZm9ybWF0LCB3aWR0aCAvKmludCovLCBoZWlnaHQgLyppbnQqLywgaGludHMpIHtcbiAgICAgICAgaWYgKGNvbnRlbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoJ0ZvdW5kIGVtcHR5IGNvbnRlbnRzJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZvcm1hdCAhPT0gQmFyY29kZUZvcm1hdF8xLmRlZmF1bHQuUVJfQ09ERSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoJ0NhbiBvbmx5IGVuY29kZSBRUl9DT0RFLCBidXQgZ290ICcgKyBmb3JtYXQpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh3aWR0aCA8IDAgfHwgaGVpZ2h0IDwgMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoXCJSZXF1ZXN0ZWQgZGltZW5zaW9ucyBhcmUgdG9vIHNtYWxsOiBcIiArIHdpZHRoICsgXCJ4XCIgKyBoZWlnaHQpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBlcnJvckNvcnJlY3Rpb25MZXZlbCA9IEVycm9yQ29ycmVjdGlvbkxldmVsXzEuZGVmYXVsdC5MO1xuICAgICAgICB2YXIgcXVpZXRab25lID0gUVJDb2RlV3JpdGVyLlFVSUVUX1pPTkVfU0laRTtcbiAgICAgICAgaWYgKGhpbnRzICE9PSBudWxsKSB7XG4gICAgICAgICAgICBpZiAodW5kZWZpbmVkICE9PSBoaW50cy5nZXQoRW5jb2RlSGludFR5cGVfMS5kZWZhdWx0LkVSUk9SX0NPUlJFQ1RJT04pKSB7XG4gICAgICAgICAgICAgICAgZXJyb3JDb3JyZWN0aW9uTGV2ZWwgPSBFcnJvckNvcnJlY3Rpb25MZXZlbF8xLmRlZmF1bHQuZnJvbVN0cmluZyhoaW50cy5nZXQoRW5jb2RlSGludFR5cGVfMS5kZWZhdWx0LkVSUk9SX0NPUlJFQ1RJT04pLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHVuZGVmaW5lZCAhPT0gaGludHMuZ2V0KEVuY29kZUhpbnRUeXBlXzEuZGVmYXVsdC5NQVJHSU4pKSB7XG4gICAgICAgICAgICAgICAgcXVpZXRab25lID0gTnVtYmVyLnBhcnNlSW50KGhpbnRzLmdldChFbmNvZGVIaW50VHlwZV8xLmRlZmF1bHQuTUFSR0lOKS50b1N0cmluZygpLCAxMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGNvZGUgPSBFbmNvZGVyXzEuZGVmYXVsdC5lbmNvZGUoY29udGVudHMsIGVycm9yQ29ycmVjdGlvbkxldmVsLCBoaW50cyk7XG4gICAgICAgIHJldHVybiBRUkNvZGVXcml0ZXIucmVuZGVyUmVzdWx0KGNvZGUsIHdpZHRoLCBoZWlnaHQsIHF1aWV0Wm9uZSk7XG4gICAgfTtcbiAgICAvLyBOb3RlIHRoYXQgdGhlIGlucHV0IG1hdHJpeCB1c2VzIDAgPT0gd2hpdGUsIDEgPT0gYmxhY2ssIHdoaWxlIHRoZSBvdXRwdXQgbWF0cml4IHVzZXNcbiAgICAvLyAwID09IGJsYWNrLCAyNTUgPT0gd2hpdGUgKGkuZS4gYW4gOCBiaXQgZ3JleXNjYWxlIGJpdG1hcCkuXG4gICAgUVJDb2RlV3JpdGVyLnJlbmRlclJlc3VsdCA9IGZ1bmN0aW9uIChjb2RlLCB3aWR0aCAvKmludCovLCBoZWlnaHQgLyppbnQqLywgcXVpZXRab25lIC8qaW50Ki8pIHtcbiAgICAgICAgdmFyIGlucHV0ID0gY29kZS5nZXRNYXRyaXgoKTtcbiAgICAgICAgaWYgKGlucHV0ID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uXzEuZGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBpbnB1dFdpZHRoID0gaW5wdXQuZ2V0V2lkdGgoKTtcbiAgICAgICAgdmFyIGlucHV0SGVpZ2h0ID0gaW5wdXQuZ2V0SGVpZ2h0KCk7XG4gICAgICAgIHZhciBxcldpZHRoID0gaW5wdXRXaWR0aCArIChxdWlldFpvbmUgKiAyKTtcbiAgICAgICAgdmFyIHFySGVpZ2h0ID0gaW5wdXRIZWlnaHQgKyAocXVpZXRab25lICogMik7XG4gICAgICAgIHZhciBvdXRwdXRXaWR0aCA9IE1hdGgubWF4KHdpZHRoLCBxcldpZHRoKTtcbiAgICAgICAgdmFyIG91dHB1dEhlaWdodCA9IE1hdGgubWF4KGhlaWdodCwgcXJIZWlnaHQpO1xuICAgICAgICB2YXIgbXVsdGlwbGUgPSBNYXRoLm1pbihNYXRoLmZsb29yKG91dHB1dFdpZHRoIC8gcXJXaWR0aCksIE1hdGguZmxvb3Iob3V0cHV0SGVpZ2h0IC8gcXJIZWlnaHQpKTtcbiAgICAgICAgLy8gUGFkZGluZyBpbmNsdWRlcyBib3RoIHRoZSBxdWlldCB6b25lIGFuZCB0aGUgZXh0cmEgd2hpdGUgcGl4ZWxzIHRvIGFjY29tbW9kYXRlIHRoZSByZXF1ZXN0ZWRcbiAgICAgICAgLy8gZGltZW5zaW9ucy4gRm9yIGV4YW1wbGUsIGlmIGlucHV0IGlzIDI1eDI1IHRoZSBRUiB3aWxsIGJlIDMzeDMzIGluY2x1ZGluZyB0aGUgcXVpZXQgem9uZS5cbiAgICAgICAgLy8gSWYgdGhlIHJlcXVlc3RlZCBzaXplIGlzIDIwMHgxNjAsIHRoZSBtdWx0aXBsZSB3aWxsIGJlIDQsIGZvciBhIFFSIG9mIDEzMngxMzIuIFRoZXNlIHdpbGxcbiAgICAgICAgLy8gaGFuZGxlIGFsbCB0aGUgcGFkZGluZyBmcm9tIDEwMHgxMDAgKHRoZSBhY3R1YWwgUVIpIHVwIHRvIDIwMHgxNjAuXG4gICAgICAgIHZhciBsZWZ0UGFkZGluZyA9IE1hdGguZmxvb3IoKG91dHB1dFdpZHRoIC0gKGlucHV0V2lkdGggKiBtdWx0aXBsZSkpIC8gMik7XG4gICAgICAgIHZhciB0b3BQYWRkaW5nID0gTWF0aC5mbG9vcigob3V0cHV0SGVpZ2h0IC0gKGlucHV0SGVpZ2h0ICogbXVsdGlwbGUpKSAvIDIpO1xuICAgICAgICB2YXIgb3V0cHV0ID0gbmV3IEJpdE1hdHJpeF8xLmRlZmF1bHQob3V0cHV0V2lkdGgsIG91dHB1dEhlaWdodCk7XG4gICAgICAgIGZvciAodmFyIGlucHV0WSA9IDAsIG91dHB1dFkgPSB0b3BQYWRkaW5nOyBpbnB1dFkgPCBpbnB1dEhlaWdodDsgaW5wdXRZKyssIG91dHB1dFkgKz0gbXVsdGlwbGUpIHtcbiAgICAgICAgICAgIC8vIFdyaXRlIHRoZSBjb250ZW50cyBvZiB0aGlzIHJvdyBvZiB0aGUgYmFyY29kZVxuICAgICAgICAgICAgZm9yICh2YXIgaW5wdXRYID0gMCwgb3V0cHV0WCA9IGxlZnRQYWRkaW5nOyBpbnB1dFggPCBpbnB1dFdpZHRoOyBpbnB1dFgrKywgb3V0cHV0WCArPSBtdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgIGlmIChpbnB1dC5nZXQoaW5wdXRYLCBpbnB1dFkpID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dC5zZXRSZWdpb24ob3V0cHV0WCwgb3V0cHV0WSwgbXVsdGlwbGUsIG11bHRpcGxlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICB9O1xuICAgIFFSQ29kZVdyaXRlci5RVUlFVF9aT05FX1NJWkUgPSA0O1xuICAgIHJldHVybiBRUkNvZGVXcml0ZXI7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gUVJDb2RlV3JpdGVyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UVJDb2RlV3JpdGVyLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuLypcbiAqIENvcHlyaWdodCAyMDA4IFpYaW5nIGF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vLyBpbXBvcnQgRGF0YU1hdHJpeFdyaXRlciBmcm9tICcuL2RhdGFtYXRyaXgvRGF0YU1hdHJpeFdyaXRlcidcbi8vIGltcG9ydCBDb2RhQmFyV3JpdGVyIGZyb20gJy4vb25lZC9Db2RhQmFyV3JpdGVyJ1xuLy8gaW1wb3J0IENvZGUxMjhXcml0ZXIgZnJvbSAnLi9vbmVkL0NvZGUxMjhXcml0ZXInXG4vLyBpbXBvcnQgQ29kZTM5V3JpdGVyIGZyb20gJy4vb25lZC9Db2RlMzlXcml0ZXInXG4vLyBpbXBvcnQgQ29kZTkzV3JpdGVyIGZyb20gJy4vb25lZC9Db2RlOTNXcml0ZXInXG4vLyBpbXBvcnQgRUFOMTNXcml0ZXIgZnJvbSAnLi9vbmVkL0VBTjEzV3JpdGVyJ1xuLy8gaW1wb3J0IEVBTjhXcml0ZXIgZnJvbSAnLi9vbmVkL0VBTjhXcml0ZXInXG4vLyBpbXBvcnQgSVRGV3JpdGVyIGZyb20gJy4vb25lZC9JVEZXcml0ZXInXG4vLyBpbXBvcnQgVVBDQVdyaXRlciBmcm9tICcuL29uZWQvVVBDQVdyaXRlcidcbi8vIGltcG9ydCBVUENFV3JpdGVyIGZyb20gJy4vb25lZC9VUENFV3JpdGVyJ1xuLy8gaW1wb3J0IFBERjQxN1dyaXRlciBmcm9tICcuL3BkZjQxNy9QREY0MTdXcml0ZXInXG52YXIgUVJDb2RlV3JpdGVyXzEgPSByZXF1aXJlKFwiLi9xcmNvZGUvUVJDb2RlV3JpdGVyXCIpO1xudmFyIEJhcmNvZGVGb3JtYXRfMSA9IHJlcXVpcmUoXCIuL0JhcmNvZGVGb3JtYXRcIik7XG52YXIgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEgPSByZXF1aXJlKFwiLi9JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25cIik7XG4vKmltcG9ydCBqYXZhLnV0aWwuTWFwOyovXG4vKipcbiAqIFRoaXMgaXMgYSBmYWN0b3J5IGNsYXNzIHdoaWNoIGZpbmRzIHRoZSBhcHByb3ByaWF0ZSBXcml0ZXIgc3ViY2xhc3MgZm9yIHRoZSBCYXJjb2RlRm9ybWF0XG4gKiByZXF1ZXN0ZWQgYW5kIGVuY29kZXMgdGhlIGJhcmNvZGUgd2l0aCB0aGUgc3VwcGxpZWQgY29udGVudHMuXG4gKlxuICogQGF1dGhvciBkc3dpdGtpbkBnb29nbGUuY29tIChEYW5pZWwgU3dpdGtpbilcbiAqL1xudmFyIE11bHRpRm9ybWF0V3JpdGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIE11bHRpRm9ybWF0V3JpdGVyKCkge1xuICAgIH1cbiAgICAvKkBPdmVycmlkZSovXG4gICAgLy8gcHVibGljIGVuY29kZShjb250ZW50czogc3RyaW5nLFxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdDogQmFyY29kZUZvcm1hdCxcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogbnVtYmVyIC8qaW50Ki8sXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBudW1iZXIgLyppbnQqLyk6IEJpdE1hdHJpeCAvKnRocm93cyBXcml0ZXJFeGNlcHRpb24gKi8ge1xuICAgIC8vICAgcmV0dXJuIGVuY29kZShjb250ZW50cywgZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBudWxsKVxuICAgIC8vIH1cbiAgICAvKkBPdmVycmlkZSovXG4gICAgTXVsdGlGb3JtYXRXcml0ZXIucHJvdG90eXBlLmVuY29kZSA9IGZ1bmN0aW9uIChjb250ZW50cywgZm9ybWF0LCB3aWR0aCAvKmludCovLCBoZWlnaHQgLyppbnQqLywgaGludHMpIHtcbiAgICAgICAgdmFyIHdyaXRlcjtcbiAgICAgICAgc3dpdGNoIChmb3JtYXQpIHtcbiAgICAgICAgICAgIC8vIGNhc2UgQmFyY29kZUZvcm1hdC5FQU5fODpcbiAgICAgICAgICAgIC8vICAgd3JpdGVyID0gbmV3IEVBTjhXcml0ZXIoKVxuICAgICAgICAgICAgLy8gICBicmVha1xuICAgICAgICAgICAgLy8gY2FzZSBCYXJjb2RlRm9ybWF0LlVQQ19FOlxuICAgICAgICAgICAgLy8gICB3cml0ZXIgPSBuZXcgVVBDRVdyaXRlcigpXG4gICAgICAgICAgICAvLyAgIGJyZWFrXG4gICAgICAgICAgICAvLyBjYXNlIEJhcmNvZGVGb3JtYXQuRUFOXzEzOlxuICAgICAgICAgICAgLy8gICB3cml0ZXIgPSBuZXcgRUFOMTNXcml0ZXIoKVxuICAgICAgICAgICAgLy8gICBicmVha1xuICAgICAgICAgICAgLy8gY2FzZSBCYXJjb2RlRm9ybWF0LlVQQ19BOlxuICAgICAgICAgICAgLy8gICB3cml0ZXIgPSBuZXcgVVBDQVdyaXRlcigpXG4gICAgICAgICAgICAvLyAgIGJyZWFrXG4gICAgICAgICAgICBjYXNlIEJhcmNvZGVGb3JtYXRfMS5kZWZhdWx0LlFSX0NPREU6XG4gICAgICAgICAgICAgICAgd3JpdGVyID0gbmV3IFFSQ29kZVdyaXRlcl8xLmRlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIC8vIGNhc2UgQmFyY29kZUZvcm1hdC5DT0RFXzM5OlxuICAgICAgICAgICAgLy8gICB3cml0ZXIgPSBuZXcgQ29kZTM5V3JpdGVyKClcbiAgICAgICAgICAgIC8vICAgYnJlYWtcbiAgICAgICAgICAgIC8vIGNhc2UgQmFyY29kZUZvcm1hdC5DT0RFXzkzOlxuICAgICAgICAgICAgLy8gICB3cml0ZXIgPSBuZXcgQ29kZTkzV3JpdGVyKClcbiAgICAgICAgICAgIC8vICAgYnJlYWtcbiAgICAgICAgICAgIC8vIGNhc2UgQmFyY29kZUZvcm1hdC5DT0RFXzEyODpcbiAgICAgICAgICAgIC8vICAgd3JpdGVyID0gbmV3IENvZGUxMjhXcml0ZXIoKVxuICAgICAgICAgICAgLy8gICBicmVha1xuICAgICAgICAgICAgLy8gY2FzZSBCYXJjb2RlRm9ybWF0LklURjpcbiAgICAgICAgICAgIC8vICAgd3JpdGVyID0gbmV3IElURldyaXRlcigpXG4gICAgICAgICAgICAvLyAgIGJyZWFrXG4gICAgICAgICAgICAvLyBjYXNlIEJhcmNvZGVGb3JtYXQuUERGXzQxNzpcbiAgICAgICAgICAgIC8vICAgd3JpdGVyID0gbmV3IFBERjQxN1dyaXRlcigpXG4gICAgICAgICAgICAvLyAgIGJyZWFrXG4gICAgICAgICAgICAvLyBjYXNlIEJhcmNvZGVGb3JtYXQuQ09EQUJBUjpcbiAgICAgICAgICAgIC8vICAgd3JpdGVyID0gbmV3IENvZGFCYXJXcml0ZXIoKVxuICAgICAgICAgICAgLy8gICBicmVha1xuICAgICAgICAgICAgLy8gY2FzZSBCYXJjb2RlRm9ybWF0LkRBVEFfTUFUUklYOlxuICAgICAgICAgICAgLy8gICB3cml0ZXIgPSBuZXcgRGF0YU1hdHJpeFdyaXRlcigpXG4gICAgICAgICAgICAvLyAgIGJyZWFrXG4gICAgICAgICAgICAvLyBjYXNlIEJhcmNvZGVGb3JtYXQuQVpURUM6XG4gICAgICAgICAgICAvLyAgIHdyaXRlciA9IG5ldyBBenRlY1dyaXRlcigpXG4gICAgICAgICAgICAvLyAgIGJyZWFrXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCdObyBlbmNvZGVyIGF2YWlsYWJsZSBmb3IgZm9ybWF0ICcgKyBmb3JtYXQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB3cml0ZXIuZW5jb2RlKGNvbnRlbnRzLCBmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGhpbnRzKTtcbiAgICB9O1xuICAgIHJldHVybiBNdWx0aUZvcm1hdFdyaXRlcjtcbn0oKSk7XG5leHBvcnRzLmRlZmF1bHQgPSBNdWx0aUZvcm1hdFdyaXRlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU11bHRpRm9ybWF0V3JpdGVyLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuLypcbiAqIENvcHlyaWdodCAyMDA5IFpYaW5nIGF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qbmFtZXNwYWNlIGNvbS5nb29nbGUuenhpbmcgeyovXG52YXIgU3lzdGVtXzEgPSByZXF1aXJlKFwiLi91dGlsL1N5c3RlbVwiKTtcbnZhciBMdW1pbmFuY2VTb3VyY2VfMSA9IHJlcXVpcmUoXCIuL0x1bWluYW5jZVNvdXJjZVwiKTtcbnZhciBJbnZlcnRlZEx1bWluYW5jZVNvdXJjZV8xID0gcmVxdWlyZShcIi4vSW52ZXJ0ZWRMdW1pbmFuY2VTb3VyY2VcIik7XG52YXIgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEgPSByZXF1aXJlKFwiLi9JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25cIik7XG4vKipcbiAqIFRoaXMgb2JqZWN0IGV4dGVuZHMgTHVtaW5hbmNlU291cmNlIGFyb3VuZCBhbiBhcnJheSBvZiBZVVYgZGF0YSByZXR1cm5lZCBmcm9tIHRoZSBjYW1lcmEgZHJpdmVyLFxuICogd2l0aCB0aGUgb3B0aW9uIHRvIGNyb3AgdG8gYSByZWN0YW5nbGUgd2l0aGluIHRoZSBmdWxsIGRhdGEuIFRoaXMgY2FuIGJlIHVzZWQgdG8gZXhjbHVkZVxuICogc3VwZXJmbHVvdXMgcGl4ZWxzIGFyb3VuZCB0aGUgcGVyaW1ldGVyIGFuZCBzcGVlZCB1cCBkZWNvZGluZy5cbiAqXG4gKiBJdCB3b3JrcyBmb3IgYW55IHBpeGVsIGZvcm1hdCB3aGVyZSB0aGUgWSBjaGFubmVsIGlzIHBsYW5hciBhbmQgYXBwZWFycyBmaXJzdCwgaW5jbHVkaW5nXG4gKiBZQ2JDcl80MjBfU1AgYW5kIFlDYkNyXzQyMl9TUC5cbiAqXG4gKiBAYXV0aG9yIGRzd2l0a2luQGdvb2dsZS5jb20gKERhbmllbCBTd2l0a2luKVxuICovXG52YXIgUGxhbmFyWVVWTHVtaW5hbmNlU291cmNlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhQbGFuYXJZVVZMdW1pbmFuY2VTb3VyY2UsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gUGxhbmFyWVVWTHVtaW5hbmNlU291cmNlKHl1dkRhdGEsIGRhdGFXaWR0aCAvKmludCovLCBkYXRhSGVpZ2h0IC8qaW50Ki8sIGxlZnQgLyppbnQqLywgdG9wIC8qaW50Ki8sIHdpZHRoIC8qaW50Ki8sIGhlaWdodCAvKmludCovLCByZXZlcnNlSG9yaXpvbnRhbCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCB3aWR0aCwgaGVpZ2h0KSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy55dXZEYXRhID0geXV2RGF0YTtcbiAgICAgICAgX3RoaXMuZGF0YVdpZHRoID0gZGF0YVdpZHRoO1xuICAgICAgICBfdGhpcy5kYXRhSGVpZ2h0ID0gZGF0YUhlaWdodDtcbiAgICAgICAgX3RoaXMubGVmdCA9IGxlZnQ7XG4gICAgICAgIF90aGlzLnRvcCA9IHRvcDtcbiAgICAgICAgaWYgKGxlZnQgKyB3aWR0aCA+IGRhdGFXaWR0aCB8fCB0b3AgKyBoZWlnaHQgPiBkYXRhSGVpZ2h0KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgnQ3JvcCByZWN0YW5nbGUgZG9lcyBub3QgZml0IHdpdGhpbiBpbWFnZSBkYXRhLicpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXZlcnNlSG9yaXpvbnRhbCkge1xuICAgICAgICAgICAgX3RoaXMucmV2ZXJzZUhvcml6b250YWwod2lkdGgsIGhlaWdodCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICAvKkBPdmVycmlkZSovXG4gICAgUGxhbmFyWVVWTHVtaW5hbmNlU291cmNlLnByb3RvdHlwZS5nZXRSb3cgPSBmdW5jdGlvbiAoeSAvKmludCovLCByb3cpIHtcbiAgICAgICAgaWYgKHkgPCAwIHx8IHkgPj0gdGhpcy5nZXRIZWlnaHQoKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoJ1JlcXVlc3RlZCByb3cgaXMgb3V0c2lkZSB0aGUgaW1hZ2U6ICcgKyB5KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgd2lkdGggPSB0aGlzLmdldFdpZHRoKCk7XG4gICAgICAgIGlmIChyb3cgPT09IG51bGwgfHwgcm93ID09PSB1bmRlZmluZWQgfHwgcm93Lmxlbmd0aCA8IHdpZHRoKSB7XG4gICAgICAgICAgICByb3cgPSBuZXcgVWludDhDbGFtcGVkQXJyYXkod2lkdGgpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBvZmZzZXQgPSAoeSArIHRoaXMudG9wKSAqIHRoaXMuZGF0YVdpZHRoICsgdGhpcy5sZWZ0O1xuICAgICAgICBTeXN0ZW1fMS5kZWZhdWx0LmFycmF5Y29weSh0aGlzLnl1dkRhdGEsIG9mZnNldCwgcm93LCAwLCB3aWR0aCk7XG4gICAgICAgIHJldHVybiByb3c7XG4gICAgfTtcbiAgICAvKkBPdmVycmlkZSovXG4gICAgUGxhbmFyWVVWTHVtaW5hbmNlU291cmNlLnByb3RvdHlwZS5nZXRNYXRyaXggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB3aWR0aCA9IHRoaXMuZ2V0V2lkdGgoKTtcbiAgICAgICAgdmFyIGhlaWdodCA9IHRoaXMuZ2V0SGVpZ2h0KCk7XG4gICAgICAgIC8vIElmIHRoZSBjYWxsZXIgYXNrcyBmb3IgdGhlIGVudGlyZSB1bmRlcmx5aW5nIGltYWdlLCBzYXZlIHRoZSBjb3B5IGFuZCBnaXZlIHRoZW0gdGhlXG4gICAgICAgIC8vIG9yaWdpbmFsIGRhdGEuIFRoZSBkb2NzIHNwZWNpZmljYWxseSB3YXJuIHRoYXQgcmVzdWx0Lmxlbmd0aCBtdXN0IGJlIGlnbm9yZWQuXG4gICAgICAgIGlmICh3aWR0aCA9PT0gdGhpcy5kYXRhV2lkdGggJiYgaGVpZ2h0ID09PSB0aGlzLmRhdGFIZWlnaHQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnl1dkRhdGE7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGFyZWEgPSB3aWR0aCAqIGhlaWdodDtcbiAgICAgICAgdmFyIG1hdHJpeCA9IG5ldyBVaW50OENsYW1wZWRBcnJheShhcmVhKTtcbiAgICAgICAgdmFyIGlucHV0T2Zmc2V0ID0gdGhpcy50b3AgKiB0aGlzLmRhdGFXaWR0aCArIHRoaXMubGVmdDtcbiAgICAgICAgLy8gSWYgdGhlIHdpZHRoIG1hdGNoZXMgdGhlIGZ1bGwgd2lkdGggb2YgdGhlIHVuZGVybHlpbmcgZGF0YSwgcGVyZm9ybSBhIHNpbmdsZSBjb3B5LlxuICAgICAgICBpZiAod2lkdGggPT09IHRoaXMuZGF0YVdpZHRoKSB7XG4gICAgICAgICAgICBTeXN0ZW1fMS5kZWZhdWx0LmFycmF5Y29weSh0aGlzLnl1dkRhdGEsIGlucHV0T2Zmc2V0LCBtYXRyaXgsIDAsIGFyZWEpO1xuICAgICAgICAgICAgcmV0dXJuIG1hdHJpeDtcbiAgICAgICAgfVxuICAgICAgICAvLyBPdGhlcndpc2UgY29weSBvbmUgY3JvcHBlZCByb3cgYXQgYSB0aW1lLlxuICAgICAgICBmb3IgKHZhciB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKSB7XG4gICAgICAgICAgICB2YXIgb3V0cHV0T2Zmc2V0ID0geSAqIHdpZHRoO1xuICAgICAgICAgICAgU3lzdGVtXzEuZGVmYXVsdC5hcnJheWNvcHkodGhpcy55dXZEYXRhLCBpbnB1dE9mZnNldCwgbWF0cml4LCBvdXRwdXRPZmZzZXQsIHdpZHRoKTtcbiAgICAgICAgICAgIGlucHV0T2Zmc2V0ICs9IHRoaXMuZGF0YVdpZHRoO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXRyaXg7XG4gICAgfTtcbiAgICAvKkBPdmVycmlkZSovXG4gICAgUGxhbmFyWVVWTHVtaW5hbmNlU291cmNlLnByb3RvdHlwZS5pc0Nyb3BTdXBwb3J0ZWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG4gICAgLypAT3ZlcnJpZGUqL1xuICAgIFBsYW5hcllVVkx1bWluYW5jZVNvdXJjZS5wcm90b3R5cGUuY3JvcCA9IGZ1bmN0aW9uIChsZWZ0IC8qaW50Ki8sIHRvcCAvKmludCovLCB3aWR0aCAvKmludCovLCBoZWlnaHQgLyppbnQqLykge1xuICAgICAgICByZXR1cm4gbmV3IFBsYW5hcllVVkx1bWluYW5jZVNvdXJjZSh0aGlzLnl1dkRhdGEsIHRoaXMuZGF0YVdpZHRoLCB0aGlzLmRhdGFIZWlnaHQsIHRoaXMubGVmdCArIGxlZnQsIHRoaXMudG9wICsgdG9wLCB3aWR0aCwgaGVpZ2h0LCBmYWxzZSk7XG4gICAgfTtcbiAgICBQbGFuYXJZVVZMdW1pbmFuY2VTb3VyY2UucHJvdG90eXBlLnJlbmRlclRodW1ibmFpbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHdpZHRoID0gdGhpcy5nZXRXaWR0aCgpIC8gUGxhbmFyWVVWTHVtaW5hbmNlU291cmNlLlRIVU1CTkFJTF9TQ0FMRV9GQUNUT1I7XG4gICAgICAgIHZhciBoZWlnaHQgPSB0aGlzLmdldEhlaWdodCgpIC8gUGxhbmFyWVVWTHVtaW5hbmNlU291cmNlLlRIVU1CTkFJTF9TQ0FMRV9GQUNUT1I7XG4gICAgICAgIHZhciBwaXhlbHMgPSBuZXcgSW50MzJBcnJheSh3aWR0aCAqIGhlaWdodCk7XG4gICAgICAgIHZhciB5dXYgPSB0aGlzLnl1dkRhdGE7XG4gICAgICAgIHZhciBpbnB1dE9mZnNldCA9IHRoaXMudG9wICogdGhpcy5kYXRhV2lkdGggKyB0aGlzLmxlZnQ7XG4gICAgICAgIGZvciAodmFyIHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspIHtcbiAgICAgICAgICAgIHZhciBvdXRwdXRPZmZzZXQgPSB5ICogd2lkdGg7XG4gICAgICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHtcbiAgICAgICAgICAgICAgICB2YXIgZ3JleSA9IHl1dltpbnB1dE9mZnNldCArIHggKiBQbGFuYXJZVVZMdW1pbmFuY2VTb3VyY2UuVEhVTUJOQUlMX1NDQUxFX0ZBQ1RPUl0gJiAweGZmO1xuICAgICAgICAgICAgICAgIHBpeGVsc1tvdXRwdXRPZmZzZXQgKyB4XSA9IDB4RkYwMDAwMDAgfCAoZ3JleSAqIDB4MDAwMTAxMDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5wdXRPZmZzZXQgKz0gdGhpcy5kYXRhV2lkdGggKiBQbGFuYXJZVVZMdW1pbmFuY2VTb3VyY2UuVEhVTUJOQUlMX1NDQUxFX0ZBQ1RPUjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGl4ZWxzO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHJldHVybiB3aWR0aCBvZiBpbWFnZSBmcm9tIHtAbGluayAjcmVuZGVyVGh1bWJuYWlsKCl9XG4gICAgICovXG4gICAgUGxhbmFyWVVWTHVtaW5hbmNlU291cmNlLnByb3RvdHlwZS5nZXRUaHVtYm5haWxXaWR0aCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0V2lkdGgoKSAvIFBsYW5hcllVVkx1bWluYW5jZVNvdXJjZS5USFVNQk5BSUxfU0NBTEVfRkFDVE9SO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHJldHVybiBoZWlnaHQgb2YgaW1hZ2UgZnJvbSB7QGxpbmsgI3JlbmRlclRodW1ibmFpbCgpfVxuICAgICAqL1xuICAgIFBsYW5hcllVVkx1bWluYW5jZVNvdXJjZS5wcm90b3R5cGUuZ2V0VGh1bWJuYWlsSGVpZ2h0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRIZWlnaHQoKSAvIFBsYW5hcllVVkx1bWluYW5jZVNvdXJjZS5USFVNQk5BSUxfU0NBTEVfRkFDVE9SO1xuICAgIH07XG4gICAgUGxhbmFyWVVWTHVtaW5hbmNlU291cmNlLnByb3RvdHlwZS5yZXZlcnNlSG9yaXpvbnRhbCA9IGZ1bmN0aW9uICh3aWR0aCAvKmludCovLCBoZWlnaHQgLyppbnQqLykge1xuICAgICAgICB2YXIgeXV2RGF0YSA9IHRoaXMueXV2RGF0YTtcbiAgICAgICAgZm9yICh2YXIgeSA9IDAsIHJvd1N0YXJ0ID0gdGhpcy50b3AgKiB0aGlzLmRhdGFXaWR0aCArIHRoaXMubGVmdDsgeSA8IGhlaWdodDsgeSsrLCByb3dTdGFydCArPSB0aGlzLmRhdGFXaWR0aCkge1xuICAgICAgICAgICAgdmFyIG1pZGRsZSA9IHJvd1N0YXJ0ICsgd2lkdGggLyAyO1xuICAgICAgICAgICAgZm9yICh2YXIgeDEgPSByb3dTdGFydCwgeDIgPSByb3dTdGFydCArIHdpZHRoIC0gMTsgeDEgPCBtaWRkbGU7IHgxKyssIHgyLS0pIHtcbiAgICAgICAgICAgICAgICB2YXIgdGVtcCA9IHl1dkRhdGFbeDFdO1xuICAgICAgICAgICAgICAgIHl1dkRhdGFbeDFdID0geXV2RGF0YVt4Ml07XG4gICAgICAgICAgICAgICAgeXV2RGF0YVt4Ml0gPSB0ZW1wO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBQbGFuYXJZVVZMdW1pbmFuY2VTb3VyY2UucHJvdG90eXBlLmludmVydCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBJbnZlcnRlZEx1bWluYW5jZVNvdXJjZV8xLmRlZmF1bHQodGhpcyk7XG4gICAgfTtcbiAgICBQbGFuYXJZVVZMdW1pbmFuY2VTb3VyY2UuVEhVTUJOQUlMX1NDQUxFX0ZBQ1RPUiA9IDI7XG4gICAgcmV0dXJuIFBsYW5hcllVVkx1bWluYW5jZVNvdXJjZTtcbn0oTHVtaW5hbmNlU291cmNlXzEuZGVmYXVsdCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gUGxhbmFyWVVWTHVtaW5hbmNlU291cmNlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UGxhbmFyWVVWTHVtaW5hbmNlU291cmNlLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuLypcbiAqIENvcHlyaWdodCAyMDA5IFpYaW5nIGF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qbmFtZXNwYWNlIGNvbS5nb29nbGUuenhpbmcgeyovXG5yZXF1aXJlKFwiLi9JbnZlcnRlZEx1bWluYW5jZVNvdXJjZVwiKTsgLy8gcmVxdWlyZWQgYmVjYXVzZSBvZiBjaXJjdWxhciBkZXBlbmRlbmNpZXMgYmV0d2VlbiBMdW1pbmFuY2VTb3VyY2UgYW5kIEludmVydGVkTHVtaW5hbmNlU291cmNlXG52YXIgSW52ZXJ0ZWRMdW1pbmFuY2VTb3VyY2VfMSA9IHJlcXVpcmUoXCIuL0ludmVydGVkTHVtaW5hbmNlU291cmNlXCIpO1xudmFyIEx1bWluYW5jZVNvdXJjZV8xID0gcmVxdWlyZShcIi4vTHVtaW5hbmNlU291cmNlXCIpO1xudmFyIFN5c3RlbV8xID0gcmVxdWlyZShcIi4vdXRpbC9TeXN0ZW1cIik7XG52YXIgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEgPSByZXF1aXJlKFwiLi9JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25cIik7XG4vKipcbiAqIFRoaXMgY2xhc3MgaXMgdXNlZCB0byBoZWxwIGRlY29kZSBpbWFnZXMgZnJvbSBmaWxlcyB3aGljaCBhcnJpdmUgYXMgUkdCIGRhdGEgZnJvbVxuICogYW4gQVJHQiBwaXhlbCBhcnJheS4gSXQgZG9lcyBub3Qgc3VwcG9ydCByb3RhdGlvbi5cbiAqXG4gKiBAYXV0aG9yIGRzd2l0a2luQGdvb2dsZS5jb20gKERhbmllbCBTd2l0a2luKVxuICogQGF1dGhvciBCZXRhbWlub3NcbiAqL1xudmFyIFJHQkx1bWluYW5jZVNvdXJjZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoUkdCTHVtaW5hbmNlU291cmNlLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFJHQkx1bWluYW5jZVNvdXJjZShsdW1pbmFuY2VzLCB3aWR0aCAvKmludCovLCBoZWlnaHQgLyppbnQqLywgZGF0YVdpZHRoIC8qaW50Ki8sIGRhdGFIZWlnaHQgLyppbnQqLywgbGVmdCAvKmludCovLCB0b3AgLyppbnQqLykge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCB3aWR0aCwgaGVpZ2h0KSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5kYXRhV2lkdGggPSBkYXRhV2lkdGg7XG4gICAgICAgIF90aGlzLmRhdGFIZWlnaHQgPSBkYXRhSGVpZ2h0O1xuICAgICAgICBfdGhpcy5sZWZ0ID0gbGVmdDtcbiAgICAgICAgX3RoaXMudG9wID0gdG9wO1xuICAgICAgICBpZiAobHVtaW5hbmNlcy5CWVRFU19QRVJfRUxFTUVOVCA9PT0gNCkgeyAvLyBJbnQzMkFycmF5XG4gICAgICAgICAgICB2YXIgc2l6ZSA9IHdpZHRoICogaGVpZ2h0O1xuICAgICAgICAgICAgdmFyIGx1bWluYW5jZXNVaW50OEFycmF5ID0gbmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHNpemUpO1xuICAgICAgICAgICAgZm9yICh2YXIgb2Zmc2V0ID0gMDsgb2Zmc2V0IDwgc2l6ZTsgb2Zmc2V0KyspIHtcbiAgICAgICAgICAgICAgICB2YXIgcGl4ZWwgPSBsdW1pbmFuY2VzW29mZnNldF07XG4gICAgICAgICAgICAgICAgdmFyIHIgPSAocGl4ZWwgPj4gMTYpICYgMHhmZjsgLy8gcmVkXG4gICAgICAgICAgICAgICAgdmFyIGcyID0gKHBpeGVsID4+IDcpICYgMHgxZmU7IC8vIDIgKiBncmVlblxuICAgICAgICAgICAgICAgIHZhciBiID0gcGl4ZWwgJiAweGZmOyAvLyBibHVlXG4gICAgICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIGdyZWVuLWZhdm91cmluZyBhdmVyYWdlIGNoZWFwbHlcbiAgICAgICAgICAgICAgICBsdW1pbmFuY2VzVWludDhBcnJheVtvZmZzZXRdID0gLyooYnl0ZSkgKi8gKChyICsgZzIgKyBiKSAvIDQpICYgMHhGRjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF90aGlzLmx1bWluYW5jZXMgPSBsdW1pbmFuY2VzVWludDhBcnJheTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIF90aGlzLmx1bWluYW5jZXMgPSBsdW1pbmFuY2VzO1xuICAgICAgICB9XG4gICAgICAgIGlmICh1bmRlZmluZWQgPT09IGRhdGFXaWR0aCkge1xuICAgICAgICAgICAgX3RoaXMuZGF0YVdpZHRoID0gd2lkdGg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHVuZGVmaW5lZCA9PT0gZGF0YUhlaWdodCkge1xuICAgICAgICAgICAgX3RoaXMuZGF0YUhlaWdodCA9IGhlaWdodDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodW5kZWZpbmVkID09PSBsZWZ0KSB7XG4gICAgICAgICAgICBfdGhpcy5sZWZ0ID0gMDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodW5kZWZpbmVkID09PSB0b3ApIHtcbiAgICAgICAgICAgIF90aGlzLnRvcCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKF90aGlzLmxlZnQgKyB3aWR0aCA+IF90aGlzLmRhdGFXaWR0aCB8fCBfdGhpcy50b3AgKyBoZWlnaHQgPiBfdGhpcy5kYXRhSGVpZ2h0KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgnQ3JvcCByZWN0YW5nbGUgZG9lcyBub3QgZml0IHdpdGhpbiBpbWFnZSBkYXRhLicpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgLypAT3ZlcnJpZGUqL1xuICAgIFJHQkx1bWluYW5jZVNvdXJjZS5wcm90b3R5cGUuZ2V0Um93ID0gZnVuY3Rpb24gKHkgLyppbnQqLywgcm93KSB7XG4gICAgICAgIGlmICh5IDwgMCB8fCB5ID49IHRoaXMuZ2V0SGVpZ2h0KCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCdSZXF1ZXN0ZWQgcm93IGlzIG91dHNpZGUgdGhlIGltYWdlOiAnICsgeSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHdpZHRoID0gdGhpcy5nZXRXaWR0aCgpO1xuICAgICAgICBpZiAocm93ID09PSBudWxsIHx8IHJvdyA9PT0gdW5kZWZpbmVkIHx8IHJvdy5sZW5ndGggPCB3aWR0aCkge1xuICAgICAgICAgICAgcm93ID0gbmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHdpZHRoKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgb2Zmc2V0ID0gKHkgKyB0aGlzLnRvcCkgKiB0aGlzLmRhdGFXaWR0aCArIHRoaXMubGVmdDtcbiAgICAgICAgU3lzdGVtXzEuZGVmYXVsdC5hcnJheWNvcHkodGhpcy5sdW1pbmFuY2VzLCBvZmZzZXQsIHJvdywgMCwgd2lkdGgpO1xuICAgICAgICByZXR1cm4gcm93O1xuICAgIH07XG4gICAgLypAT3ZlcnJpZGUqL1xuICAgIFJHQkx1bWluYW5jZVNvdXJjZS5wcm90b3R5cGUuZ2V0TWF0cml4ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgd2lkdGggPSB0aGlzLmdldFdpZHRoKCk7XG4gICAgICAgIHZhciBoZWlnaHQgPSB0aGlzLmdldEhlaWdodCgpO1xuICAgICAgICAvLyBJZiB0aGUgY2FsbGVyIGFza3MgZm9yIHRoZSBlbnRpcmUgdW5kZXJseWluZyBpbWFnZSwgc2F2ZSB0aGUgY29weSBhbmQgZ2l2ZSB0aGVtIHRoZVxuICAgICAgICAvLyBvcmlnaW5hbCBkYXRhLiBUaGUgZG9jcyBzcGVjaWZpY2FsbHkgd2FybiB0aGF0IHJlc3VsdC5sZW5ndGggbXVzdCBiZSBpZ25vcmVkLlxuICAgICAgICBpZiAod2lkdGggPT09IHRoaXMuZGF0YVdpZHRoICYmIGhlaWdodCA9PT0gdGhpcy5kYXRhSGVpZ2h0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sdW1pbmFuY2VzO1xuICAgICAgICB9XG4gICAgICAgIHZhciBhcmVhID0gd2lkdGggKiBoZWlnaHQ7XG4gICAgICAgIHZhciBtYXRyaXggPSBuZXcgVWludDhDbGFtcGVkQXJyYXkoYXJlYSk7XG4gICAgICAgIHZhciBpbnB1dE9mZnNldCA9IHRoaXMudG9wICogdGhpcy5kYXRhV2lkdGggKyB0aGlzLmxlZnQ7XG4gICAgICAgIC8vIElmIHRoZSB3aWR0aCBtYXRjaGVzIHRoZSBmdWxsIHdpZHRoIG9mIHRoZSB1bmRlcmx5aW5nIGRhdGEsIHBlcmZvcm0gYSBzaW5nbGUgY29weS5cbiAgICAgICAgaWYgKHdpZHRoID09PSB0aGlzLmRhdGFXaWR0aCkge1xuICAgICAgICAgICAgU3lzdGVtXzEuZGVmYXVsdC5hcnJheWNvcHkodGhpcy5sdW1pbmFuY2VzLCBpbnB1dE9mZnNldCwgbWF0cml4LCAwLCBhcmVhKTtcbiAgICAgICAgICAgIHJldHVybiBtYXRyaXg7XG4gICAgICAgIH1cbiAgICAgICAgLy8gT3RoZXJ3aXNlIGNvcHkgb25lIGNyb3BwZWQgcm93IGF0IGEgdGltZS5cbiAgICAgICAgZm9yICh2YXIgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykge1xuICAgICAgICAgICAgdmFyIG91dHB1dE9mZnNldCA9IHkgKiB3aWR0aDtcbiAgICAgICAgICAgIFN5c3RlbV8xLmRlZmF1bHQuYXJyYXljb3B5KHRoaXMubHVtaW5hbmNlcywgaW5wdXRPZmZzZXQsIG1hdHJpeCwgb3V0cHV0T2Zmc2V0LCB3aWR0aCk7XG4gICAgICAgICAgICBpbnB1dE9mZnNldCArPSB0aGlzLmRhdGFXaWR0aDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWF0cml4O1xuICAgIH07XG4gICAgLypAT3ZlcnJpZGUqL1xuICAgIFJHQkx1bWluYW5jZVNvdXJjZS5wcm90b3R5cGUuaXNDcm9wU3VwcG9ydGVkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuICAgIC8qQE92ZXJyaWRlKi9cbiAgICBSR0JMdW1pbmFuY2VTb3VyY2UucHJvdG90eXBlLmNyb3AgPSBmdW5jdGlvbiAobGVmdCAvKmludCovLCB0b3AgLyppbnQqLywgd2lkdGggLyppbnQqLywgaGVpZ2h0IC8qaW50Ki8pIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSR0JMdW1pbmFuY2VTb3VyY2UodGhpcy5sdW1pbmFuY2VzLCB3aWR0aCwgaGVpZ2h0LCB0aGlzLmRhdGFXaWR0aCwgdGhpcy5kYXRhSGVpZ2h0LCB0aGlzLmxlZnQgKyBsZWZ0LCB0aGlzLnRvcCArIHRvcCk7XG4gICAgfTtcbiAgICBSR0JMdW1pbmFuY2VTb3VyY2UucHJvdG90eXBlLmludmVydCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBJbnZlcnRlZEx1bWluYW5jZVNvdXJjZV8xLmRlZmF1bHQodGhpcyk7XG4gICAgfTtcbiAgICByZXR1cm4gUkdCTHVtaW5hbmNlU291cmNlO1xufShMdW1pbmFuY2VTb3VyY2VfMS5kZWZhdWx0KSk7XG5leHBvcnRzLmRlZmF1bHQgPSBSR0JMdW1pbmFuY2VTb3VyY2U7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1SR0JMdW1pbmFuY2VTb3VyY2UuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBDaGFyYWN0ZXJTZXRFQ0lfMSA9IHJlcXVpcmUoXCIuLi9jb21tb24vQ2hhcmFjdGVyU2V0RUNJXCIpO1xuLyoqXG4gKiBKdXN0IHRvIG1ha2UgYSBzaG9ydGN1dCBiZXR3ZWVuIEphdmEgY29kZSBhbmQgVFMgY29kZS5cbiAqL1xudmFyIENoYXJzZXQgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKENoYXJzZXQsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQ2hhcnNldCgpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBDaGFyc2V0LmZvck5hbWUgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRDaGFyYWN0ZXJTZXRFQ0lCeU5hbWUobmFtZSk7XG4gICAgfTtcbiAgICByZXR1cm4gQ2hhcnNldDtcbn0oQ2hhcmFjdGVyU2V0RUNJXzEuZGVmYXVsdCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gQ2hhcnNldDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUNoYXJzZXQuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgQ2hhcmFjdGVyU2V0RUNJXzEgPSByZXF1aXJlKFwiLi4vY29tbW9uL0NoYXJhY3RlclNldEVDSVwiKTtcbi8qKlxuICogSnVzdCB0byBtYWtlIGEgc2hvcnRjdXQgYmV0d2VlbiBKYXZhIGNvZGUgYW5kIFRTIGNvZGUuXG4gKi9cbnZhciBTdGFuZGFyZENoYXJzZXRzID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFN0YW5kYXJkQ2hhcnNldHMoKSB7XG4gICAgfVxuICAgIFN0YW5kYXJkQ2hhcnNldHMuSVNPXzg4NTlfMSA9IENoYXJhY3RlclNldEVDSV8xLmRlZmF1bHQuSVNPODg1OV8xO1xuICAgIHJldHVybiBTdGFuZGFyZENoYXJzZXRzO1xufSgpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IFN0YW5kYXJkQ2hhcnNldHM7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1TdGFuZGFyZENoYXJzZXRzLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuLypcbiogQ29weXJpZ2h0IDIwMTMgWlhpbmcgYXV0aG9yc1xuKlxuKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4qIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuKlxuKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuKlxuKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4qIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4qIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLyoqXG4gKiBBenRlYyAyRCBjb2RlIHJlcHJlc2VudGF0aW9uXG4gKlxuICogQGF1dGhvciBSdXN0YW0gQWJkdWxsYWV2XG4gKi9cbnZhciBBenRlY0NvZGUgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gQXp0ZWNDb2RlKCkge1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtAY29kZSB0cnVlfSBpZiBjb21wYWN0IGluc3RlYWQgb2YgZnVsbCBtb2RlXG4gICAgICovXG4gICAgQXp0ZWNDb2RlLnByb3RvdHlwZS5pc0NvbXBhY3QgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBhY3Q7XG4gICAgfTtcbiAgICBBenRlY0NvZGUucHJvdG90eXBlLnNldENvbXBhY3QgPSBmdW5jdGlvbiAoY29tcGFjdCkge1xuICAgICAgICB0aGlzLmNvbXBhY3QgPSBjb21wYWN0O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHJldHVybiBzaXplIGluIHBpeGVscyAod2lkdGggYW5kIGhlaWdodClcbiAgICAgKi9cbiAgICBBenRlY0NvZGUucHJvdG90eXBlLmdldFNpemUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNpemU7XG4gICAgfTtcbiAgICBBenRlY0NvZGUucHJvdG90eXBlLnNldFNpemUgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICB0aGlzLnNpemUgPSBzaXplO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHJldHVybiBudW1iZXIgb2YgbGV2ZWxzXG4gICAgICovXG4gICAgQXp0ZWNDb2RlLnByb3RvdHlwZS5nZXRMYXllcnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxheWVycztcbiAgICB9O1xuICAgIEF6dGVjQ29kZS5wcm90b3R5cGUuc2V0TGF5ZXJzID0gZnVuY3Rpb24gKGxheWVycykge1xuICAgICAgICB0aGlzLmxheWVycyA9IGxheWVycztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEByZXR1cm4gbnVtYmVyIG9mIGRhdGEgY29kZXdvcmRzXG4gICAgICovXG4gICAgQXp0ZWNDb2RlLnByb3RvdHlwZS5nZXRDb2RlV29yZHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvZGVXb3JkcztcbiAgICB9O1xuICAgIEF6dGVjQ29kZS5wcm90b3R5cGUuc2V0Q29kZVdvcmRzID0gZnVuY3Rpb24gKGNvZGVXb3Jkcykge1xuICAgICAgICB0aGlzLmNvZGVXb3JkcyA9IGNvZGVXb3JkcztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEByZXR1cm4gdGhlIHN5bWJvbCBpbWFnZVxuICAgICAqL1xuICAgIEF6dGVjQ29kZS5wcm90b3R5cGUuZ2V0TWF0cml4ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXRyaXg7XG4gICAgfTtcbiAgICBBenRlY0NvZGUucHJvdG90eXBlLnNldE1hdHJpeCA9IGZ1bmN0aW9uIChtYXRyaXgpIHtcbiAgICAgICAgdGhpcy5tYXRyaXggPSBtYXRyaXg7XG4gICAgfTtcbiAgICByZXR1cm4gQXp0ZWNDb2RlO1xufSgpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IEF6dGVjQ29kZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUF6dGVjQ29kZS5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBDb2xsZWN0aW9ucyA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBDb2xsZWN0aW9ucygpIHtcbiAgICB9XG4gICAgLyoqXG4gICAgICogVGhlIHNpbmdsZXRvbkxpc3QoVCkgbWV0aG9kIGlzIHVzZWQgdG8gcmV0dXJuIGFuIGltbXV0YWJsZSBsaXN0IGNvbnRhaW5pbmcgb25seSB0aGUgc3BlY2lmaWVkIG9iamVjdC5cbiAgICAgKi9cbiAgICBDb2xsZWN0aW9ucy5zaW5nbGV0b25MaXN0ID0gZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIFtpdGVtXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFRoZSBtaW4oQ29sbGVjdGlvbjw/IGV4dGVuZHMgVD4sIENvbXBhcmF0b3I8PyBzdXBlciBUPikgbWV0aG9kIGlzIHVzZWQgdG8gcmV0dXJuIHRoZSBtaW5pbXVtIGVsZW1lbnQgb2YgdGhlIGdpdmVuIGNvbGxlY3Rpb24sIGFjY29yZGluZyB0byB0aGUgb3JkZXIgaW5kdWNlZCBieSB0aGUgc3BlY2lmaWVkIGNvbXBhcmF0b3IuXG4gICAgICovXG4gICAgQ29sbGVjdGlvbnMubWluID0gZnVuY3Rpb24gKGNvbGxlY3Rpb24sIGNvbXBhcmF0b3IpIHtcbiAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb24uc29ydChjb21wYXJhdG9yKVswXTtcbiAgICB9O1xuICAgIHJldHVybiBDb2xsZWN0aW9ucztcbn0oKSk7XG5leHBvcnRzLmRlZmF1bHQgPSBDb2xsZWN0aW9ucztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUNvbGxlY3Rpb25zLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuLypcbiogQ29weXJpZ2h0IDIwMTMgWlhpbmcgYXV0aG9yc1xuKlxuKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4qIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuKlxuKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuKlxuKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4qIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4qIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIFRva2VuID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFRva2VuKHByZXZpb3VzKSB7XG4gICAgICAgIHRoaXMucHJldmlvdXMgPSBwcmV2aW91cztcbiAgICB9XG4gICAgVG9rZW4ucHJvdG90eXBlLmdldFByZXZpb3VzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wcmV2aW91cztcbiAgICB9O1xuICAgIHJldHVybiBUb2tlbjtcbn0oKSk7XG5leHBvcnRzLmRlZmF1bHQgPSBUb2tlbjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRva2VuLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuLypcbiogQ29weXJpZ2h0IDIwMTMgWlhpbmcgYXV0aG9yc1xuKlxuKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4qIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuKlxuKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuKlxuKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4qIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4qIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgVG9rZW5fMSA9IHJlcXVpcmUoXCIuL1Rva2VuXCIpO1xudmFyIEludGVnZXJfMSA9IHJlcXVpcmUoXCIuLi8uLi91dGlsL0ludGVnZXJcIik7XG52YXIgU2ltcGxlVG9rZW4gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFNpbXBsZVRva2VuLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFNpbXBsZVRva2VuKHByZXZpb3VzLCB2YWx1ZSwgYml0Q291bnQpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgcHJldmlvdXMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIF90aGlzLmJpdENvdW50ID0gYml0Q291bnQ7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQE92ZXJyaWRlXG4gICAgICovXG4gICAgU2ltcGxlVG9rZW4ucHJvdG90eXBlLmFwcGVuZFRvID0gZnVuY3Rpb24gKGJpdEFycmF5LCB0ZXh0KSB7XG4gICAgICAgIGJpdEFycmF5LmFwcGVuZEJpdHModGhpcy52YWx1ZSwgdGhpcy5iaXRDb3VudCk7XG4gICAgfTtcbiAgICBTaW1wbGVUb2tlbi5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKHZhbHVlLCBiaXRDb3VudCkge1xuICAgICAgICByZXR1cm4gbmV3IFNpbXBsZVRva2VuKHRoaXMsIHZhbHVlLCBiaXRDb3VudCk7XG4gICAgfTtcbiAgICBTaW1wbGVUb2tlbi5wcm90b3R5cGUuYWRkQmluYXJ5U2hpZnQgPSBmdW5jdGlvbiAoc3RhcnQsIGJ5dGVDb3VudCkge1xuICAgICAgICAvLyBuby1vcCBjYW4ndCBiaW5hcnkgc2hpZnQgYSBzaW1wbGUgdG9rZW5cbiAgICAgICAgY29uc29sZS53YXJuKCdhZGRCaW5hcnlTaGlmdCBvbiBTaW1wbGVUb2tlbiwgdGhpcyBzaW1wbHkgcmV0dXJucyBhIGNvcHkgb2YgdGhpcyB0b2tlbicpO1xuICAgICAgICByZXR1cm4gbmV3IFNpbXBsZVRva2VuKHRoaXMsIHN0YXJ0LCBieXRlQ291bnQpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQE92ZXJyaWRlXG4gICAgICovXG4gICAgU2ltcGxlVG9rZW4ucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLnZhbHVlICYgKCgxIDw8IHRoaXMuYml0Q291bnQpIC0gMSk7XG4gICAgICAgIHZhbHVlIHw9IDEgPDwgdGhpcy5iaXRDb3VudDtcbiAgICAgICAgcmV0dXJuICc8JyArIEludGVnZXJfMS5kZWZhdWx0LnRvQmluYXJ5U3RyaW5nKHZhbHVlIHwgKDEgPDwgdGhpcy5iaXRDb3VudCkpLnN1YnN0cmluZygxKSArICc+JztcbiAgICB9O1xuICAgIHJldHVybiBTaW1wbGVUb2tlbjtcbn0oVG9rZW5fMS5kZWZhdWx0KSk7XG5leHBvcnRzLmRlZmF1bHQgPSBTaW1wbGVUb2tlbjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVNpbXBsZVRva2VuLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuLypcbiogQ29weXJpZ2h0IDIwMTMgWlhpbmcgYXV0aG9yc1xuKlxuKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4qIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuKlxuKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuKlxuKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4qIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4qIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgU2ltcGxlVG9rZW5fMSA9IHJlcXVpcmUoXCIuL1NpbXBsZVRva2VuXCIpO1xudmFyIEJpbmFyeVNoaWZ0VG9rZW4gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEJpbmFyeVNoaWZ0VG9rZW4sIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQmluYXJ5U2hpZnRUb2tlbihwcmV2aW91cywgYmluYXJ5U2hpZnRTdGFydCwgYmluYXJ5U2hpZnRCeXRlQ291bnQpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgcHJldmlvdXMsIDAsIDApIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLmJpbmFyeVNoaWZ0U3RhcnQgPSBiaW5hcnlTaGlmdFN0YXJ0O1xuICAgICAgICBfdGhpcy5iaW5hcnlTaGlmdEJ5dGVDb3VudCA9IGJpbmFyeVNoaWZ0Qnl0ZUNvdW50O1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBPdmVycmlkZVxuICAgICAqL1xuICAgIEJpbmFyeVNoaWZ0VG9rZW4ucHJvdG90eXBlLmFwcGVuZFRvID0gZnVuY3Rpb24gKGJpdEFycmF5LCB0ZXh0KSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5iaW5hcnlTaGlmdEJ5dGVDb3VudDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoaSA9PT0gMCB8fCAoaSA9PT0gMzEgJiYgdGhpcy5iaW5hcnlTaGlmdEJ5dGVDb3VudCA8PSA2MikpIHtcbiAgICAgICAgICAgICAgICAvLyBXZSBuZWVkIGEgaGVhZGVyIGJlZm9yZSB0aGUgZmlyc3QgY2hhcmFjdGVyLCBhbmQgYmVmb3JlXG4gICAgICAgICAgICAgICAgLy8gY2hhcmFjdGVyIDMxIHdoZW4gdGhlIHRvdGFsIGJ5dGUgY29kZSBpcyA8PSA2MlxuICAgICAgICAgICAgICAgIGJpdEFycmF5LmFwcGVuZEJpdHMoMzEsIDUpOyAvLyBCSU5BUllfU0hJRlRcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5iaW5hcnlTaGlmdEJ5dGVDb3VudCA+IDYyKSB7XG4gICAgICAgICAgICAgICAgICAgIGJpdEFycmF5LmFwcGVuZEJpdHModGhpcy5iaW5hcnlTaGlmdEJ5dGVDb3VudCAtIDMxLCAxNik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGkgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gMSA8PSBiaW5hcnlTaGlmdEJ5dGVDb2RlIDw9IDYyXG4gICAgICAgICAgICAgICAgICAgIGJpdEFycmF5LmFwcGVuZEJpdHMoTWF0aC5taW4odGhpcy5iaW5hcnlTaGlmdEJ5dGVDb3VudCwgMzEpLCA1KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIDMyIDw9IGJpbmFyeVNoaWZ0Q291bnQgPD0gNjIgYW5kIGkgPT0gMzFcbiAgICAgICAgICAgICAgICAgICAgYml0QXJyYXkuYXBwZW5kQml0cyh0aGlzLmJpbmFyeVNoaWZ0Qnl0ZUNvdW50IC0gMzEsIDUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJpdEFycmF5LmFwcGVuZEJpdHModGV4dFt0aGlzLmJpbmFyeVNoaWZ0U3RhcnQgKyBpXSwgOCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEJpbmFyeVNoaWZ0VG9rZW4ucHJvdG90eXBlLmFkZEJpbmFyeVNoaWZ0ID0gZnVuY3Rpb24gKHN0YXJ0LCBieXRlQ291bnQpIHtcbiAgICAgICAgLy8gaW50IGJpdENvdW50ID0gKGJ5dGVDb3VudCAqIDgpICsgKGJ5dGVDb3VudCA8PSAzMSA/IDEwIDogYnl0ZUNvdW50IDw9IDYyID8gMjAgOiAyMSk7XG4gICAgICAgIHJldHVybiBuZXcgQmluYXJ5U2hpZnRUb2tlbih0aGlzLCBzdGFydCwgYnl0ZUNvdW50KTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBPdmVycmlkZVxuICAgICAqL1xuICAgIEJpbmFyeVNoaWZ0VG9rZW4ucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gJzwnICsgdGhpcy5iaW5hcnlTaGlmdFN0YXJ0ICsgJzo6JyArICh0aGlzLmJpbmFyeVNoaWZ0U3RhcnQgKyB0aGlzLmJpbmFyeVNoaWZ0Qnl0ZUNvdW50IC0gMSkgKyAnPic7XG4gICAgfTtcbiAgICByZXR1cm4gQmluYXJ5U2hpZnRUb2tlbjtcbn0oU2ltcGxlVG9rZW5fMS5kZWZhdWx0KSk7XG5leHBvcnRzLmRlZmF1bHQgPSBCaW5hcnlTaGlmdFRva2VuO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QmluYXJ5U2hpZnRUb2tlbi5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuYWRkID0gZXhwb3J0cy5hZGRCaW5hcnlTaGlmdCA9IHZvaWQgMDtcbnZhciBTaW1wbGVUb2tlbl8xID0gcmVxdWlyZShcIi4vU2ltcGxlVG9rZW5cIik7XG52YXIgQmluYXJ5U2hpZnRUb2tlbl8xID0gcmVxdWlyZShcIi4vQmluYXJ5U2hpZnRUb2tlblwiKTtcbmZ1bmN0aW9uIGFkZEJpbmFyeVNoaWZ0KHRva2VuLCBzdGFydCwgYnl0ZUNvdW50KSB7XG4gICAgLy8gaW50IGJpdENvdW50ID0gKGJ5dGVDb3VudCAqIDgpICsgKGJ5dGVDb3VudCA8PSAzMSA/IDEwIDogYnl0ZUNvdW50IDw9IDYyID8gMjAgOiAyMSk7XG4gICAgcmV0dXJuIG5ldyBCaW5hcnlTaGlmdFRva2VuXzEuZGVmYXVsdCh0b2tlbiwgc3RhcnQsIGJ5dGVDb3VudCk7XG59XG5leHBvcnRzLmFkZEJpbmFyeVNoaWZ0ID0gYWRkQmluYXJ5U2hpZnQ7XG5mdW5jdGlvbiBhZGQodG9rZW4sIHZhbHVlLCBiaXRDb3VudCkge1xuICAgIHJldHVybiBuZXcgU2ltcGxlVG9rZW5fMS5kZWZhdWx0KHRva2VuLCB2YWx1ZSwgYml0Q291bnQpO1xufVxuZXhwb3J0cy5hZGQgPSBhZGQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Ub2tlbkhlbHBlcnMuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkVNUFRZX1RPS0VOID0gZXhwb3J0cy5NT0RFX1BVTkNUID0gZXhwb3J0cy5NT0RFX01JWEVEID0gZXhwb3J0cy5NT0RFX0RJR0lUID0gZXhwb3J0cy5NT0RFX0xPV0VSID0gZXhwb3J0cy5NT0RFX1VQUEVSID0gZXhwb3J0cy5NT0RFX05BTUVTID0gdm9pZCAwO1xudmFyIFNpbXBsZVRva2VuXzEgPSByZXF1aXJlKFwiLi9TaW1wbGVUb2tlblwiKTtcbmV4cG9ydHMuTU9ERV9OQU1FUyA9IFtcbiAgICAnVVBQRVInLFxuICAgICdMT1dFUicsXG4gICAgJ0RJR0lUJyxcbiAgICAnTUlYRUQnLFxuICAgICdQVU5DVCdcbl07XG5leHBvcnRzLk1PREVfVVBQRVIgPSAwOyAvLyA1IGJpdHNcbmV4cG9ydHMuTU9ERV9MT1dFUiA9IDE7IC8vIDUgYml0c1xuZXhwb3J0cy5NT0RFX0RJR0lUID0gMjsgLy8gNCBiaXRzXG5leHBvcnRzLk1PREVfTUlYRUQgPSAzOyAvLyA1IGJpdHNcbmV4cG9ydHMuTU9ERV9QVU5DVCA9IDQ7IC8vIDUgYml0c1xuZXhwb3J0cy5FTVBUWV9UT0tFTiA9IG5ldyBTaW1wbGVUb2tlbl8xLmRlZmF1bHQobnVsbCwgMCwgMCk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1FbmNvZGVyQ29uc3RhbnRzLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5MQVRDSF9UQUJMRSA9IHZvaWQgMDtcbi8vIFRoZSBMYXRjaCBUYWJsZSBzaG93cywgZm9yIGVhY2ggcGFpciBvZiBNb2RlcywgdGhlIG9wdGltYWwgbWV0aG9kIGZvclxuLy8gZ2V0dGluZyBmcm9tIG9uZSBtb2RlIHRvIGFub3RoZXIuICBJbiB0aGUgd29yc3QgcG9zc2libGUgY2FzZSwgdGhpcyBjYW5cbi8vIGJlIHVwIHRvIDE0IGJpdHMuICBJbiB0aGUgYmVzdCBwb3NzaWJsZSBjYXNlLCB3ZSBhcmUgYWxyZWFkeSB0aGVyZSFcbi8vIFRoZSBoaWdoIGhhbGYtd29yZCBvZiBlYWNoIGVudHJ5IGdpdmVzIHRoZSBudW1iZXIgb2YgYml0cy5cbi8vIFRoZSBsb3cgaGFsZi13b3JkIG9mIGVhY2ggZW50cnkgYXJlIHRoZSBhY3R1YWwgYml0cyBuZWNlc3NhcnkgdG8gY2hhbmdlXG5leHBvcnRzLkxBVENIX1RBQkxFID0gW1xuICAgIEludDMyQXJyYXkuZnJvbShbXG4gICAgICAgIDAsXG4gICAgICAgICg1IDw8IDE2KSArIDI4LFxuICAgICAgICAoNSA8PCAxNikgKyAzMCxcbiAgICAgICAgKDUgPDwgMTYpICsgMjksXG4gICAgICAgICgxMCA8PCAxNikgKyAoMjkgPDwgNSkgKyAzMCAvLyBVUFBFUiAtPiBNSVhFRCAtPiBQVU5DVFxuICAgIF0pLFxuICAgIEludDMyQXJyYXkuZnJvbShbXG4gICAgICAgICg5IDw8IDE2KSArICgzMCA8PCA0KSArIDE0LFxuICAgICAgICAwLFxuICAgICAgICAoNSA8PCAxNikgKyAzMCxcbiAgICAgICAgKDUgPDwgMTYpICsgMjksXG4gICAgICAgICgxMCA8PCAxNikgKyAoMjkgPDwgNSkgKyAzMCAvLyBMT1dFUiAtPiBNSVhFRCAtPiBQVU5DVFxuICAgIF0pLFxuICAgIEludDMyQXJyYXkuZnJvbShbXG4gICAgICAgICg0IDw8IDE2KSArIDE0LFxuICAgICAgICAoOSA8PCAxNikgKyAoMTQgPDwgNSkgKyAyOCxcbiAgICAgICAgMCxcbiAgICAgICAgKDkgPDwgMTYpICsgKDE0IDw8IDUpICsgMjksXG4gICAgICAgICgxNCA8PCAxNikgKyAoMTQgPDwgMTApICsgKDI5IDw8IDUpICsgMzBcbiAgICAgICAgLy8gRElHSVQgLT4gVVBQRVIgLT4gTUlYRUQgLT4gUFVOQ1RcbiAgICBdKSxcbiAgICBJbnQzMkFycmF5LmZyb20oW1xuICAgICAgICAoNSA8PCAxNikgKyAyOSxcbiAgICAgICAgKDUgPDwgMTYpICsgMjgsXG4gICAgICAgICgxMCA8PCAxNikgKyAoMjkgPDwgNSkgKyAzMCxcbiAgICAgICAgMCxcbiAgICAgICAgKDUgPDwgMTYpICsgMzAgLy8gTUlYRUQgLT4gUFVOQ1RcbiAgICBdKSxcbiAgICBJbnQzMkFycmF5LmZyb20oW1xuICAgICAgICAoNSA8PCAxNikgKyAzMSxcbiAgICAgICAgKDEwIDw8IDE2KSArICgzMSA8PCA1KSArIDI4LFxuICAgICAgICAoMTAgPDwgMTYpICsgKDMxIDw8IDUpICsgMzAsXG4gICAgICAgICgxMCA8PCAxNikgKyAoMzEgPDwgNSkgKyAyOSxcbiAgICAgICAgMFxuICAgIF0pXG5dO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TGF0Y2hUYWJsZS5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX3ZhbHVlcyA9ICh0aGlzICYmIHRoaXMuX192YWx1ZXMpIHx8IGZ1bmN0aW9uKG8pIHtcbiAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xuICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuU0hJRlRfVEFCTEUgPSBleHBvcnRzLnN0YXRpY19TSElGVF9UQUJMRSA9IHZvaWQgMDtcbnZhciBBcnJheXNfMSA9IHJlcXVpcmUoXCIuLi8uLi91dGlsL0FycmF5c1wiKTtcbnZhciBDID0gcmVxdWlyZShcIi4vRW5jb2RlckNvbnN0YW50c1wiKTtcbmZ1bmN0aW9uIHN0YXRpY19TSElGVF9UQUJMRShTSElGVF9UQUJMRSkge1xuICAgIHZhciBlXzEsIF9hO1xuICAgIHRyeSB7XG4gICAgICAgIGZvciAodmFyIFNISUZUX1RBQkxFXzEgPSBfX3ZhbHVlcyhTSElGVF9UQUJMRSksIFNISUZUX1RBQkxFXzFfMSA9IFNISUZUX1RBQkxFXzEubmV4dCgpOyAhU0hJRlRfVEFCTEVfMV8xLmRvbmU7IFNISUZUX1RBQkxFXzFfMSA9IFNISUZUX1RBQkxFXzEubmV4dCgpKSB7XG4gICAgICAgICAgICB2YXIgdGFibGUgPSBTSElGVF9UQUJMRV8xXzEudmFsdWUgLypJbnQzMkFycmF5Ki87XG4gICAgICAgICAgICBBcnJheXNfMS5kZWZhdWx0LmZpbGwodGFibGUsIC0xKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKFNISUZUX1RBQkxFXzFfMSAmJiAhU0hJRlRfVEFCTEVfMV8xLmRvbmUgJiYgKF9hID0gU0hJRlRfVEFCTEVfMS5yZXR1cm4pKSBfYS5jYWxsKFNISUZUX1RBQkxFXzEpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICB9XG4gICAgU0hJRlRfVEFCTEVbQy5NT0RFX1VQUEVSXVtDLk1PREVfUFVOQ1RdID0gMDtcbiAgICBTSElGVF9UQUJMRVtDLk1PREVfTE9XRVJdW0MuTU9ERV9QVU5DVF0gPSAwO1xuICAgIFNISUZUX1RBQkxFW0MuTU9ERV9MT1dFUl1bQy5NT0RFX1VQUEVSXSA9IDI4O1xuICAgIFNISUZUX1RBQkxFW0MuTU9ERV9NSVhFRF1bQy5NT0RFX1BVTkNUXSA9IDA7XG4gICAgU0hJRlRfVEFCTEVbQy5NT0RFX0RJR0lUXVtDLk1PREVfUFVOQ1RdID0gMDtcbiAgICBTSElGVF9UQUJMRVtDLk1PREVfRElHSVRdW0MuTU9ERV9VUFBFUl0gPSAxNTtcbiAgICByZXR1cm4gU0hJRlRfVEFCTEU7XG59XG5leHBvcnRzLnN0YXRpY19TSElGVF9UQUJMRSA9IHN0YXRpY19TSElGVF9UQUJMRTtcbmV4cG9ydHMuU0hJRlRfVEFCTEUgPSBzdGF0aWNfU0hJRlRfVEFCTEUoQXJyYXlzXzEuZGVmYXVsdC5jcmVhdGVJbnQzMkFycmF5KDYsIDYpKTsgLy8gbW9kZSBzaGlmdCBjb2RlcywgcGVyIHRhYmxlXG4vLyMgc291cmNlTWFwcGluZ1VSTD1TaGlmdFRhYmxlLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuLypcbiAqIENvcHlyaWdodCAyMDEzIFpYaW5nIGF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgX192YWx1ZXMgPSAodGhpcyAmJiB0aGlzLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7XG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vLyBwYWNrYWdlIGNvbS5nb29nbGUuenhpbmcuYXp0ZWMuZW5jb2Rlcjtcbi8vIGltcG9ydCBqYXZhLnV0aWwuRGVxdWU7XG4vLyBpbXBvcnQgamF2YS51dGlsLkxpbmtlZExpc3Q7XG4vLyBpbXBvcnQgY29tLmdvb2dsZS56eGluZy5jb21tb24uQml0QXJyYXk7XG52YXIgQml0QXJyYXlfMSA9IHJlcXVpcmUoXCIuLi8uLi9jb21tb24vQml0QXJyYXlcIik7XG52YXIgVG9rZW5IZWxwZXJzID0gcmVxdWlyZShcIi4vVG9rZW5IZWxwZXJzXCIpO1xudmFyIEMgPSByZXF1aXJlKFwiLi9FbmNvZGVyQ29uc3RhbnRzXCIpO1xudmFyIExhdGNoVGFibGUgPSByZXF1aXJlKFwiLi9MYXRjaFRhYmxlXCIpO1xudmFyIFNoaWZ0VGFibGUgPSByZXF1aXJlKFwiLi9TaGlmdFRhYmxlXCIpO1xudmFyIFN0cmluZ1V0aWxzXzEgPSByZXF1aXJlKFwiLi4vLi4vY29tbW9uL1N0cmluZ1V0aWxzXCIpO1xuLyoqXG4gKiBTdGF0ZSByZXByZXNlbnRzIGFsbCBpbmZvcm1hdGlvbiBhYm91dCBhIHNlcXVlbmNlIG5lY2Vzc2FyeSB0byBnZW5lcmF0ZSB0aGUgY3VycmVudCBvdXRwdXQuXG4gKiBOb3RlIHRoYXQgYSBzdGF0ZSBpcyBpbW11dGFibGUuXG4gKi9cbnZhciBTdGF0ZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBTdGF0ZSh0b2tlbiwgbW9kZSwgYmluYXJ5Qnl0ZXMsIGJpdENvdW50KSB7XG4gICAgICAgIHRoaXMudG9rZW4gPSB0b2tlbjtcbiAgICAgICAgdGhpcy5tb2RlID0gbW9kZTtcbiAgICAgICAgdGhpcy5iaW5hcnlTaGlmdEJ5dGVDb3VudCA9IGJpbmFyeUJ5dGVzO1xuICAgICAgICB0aGlzLmJpdENvdW50ID0gYml0Q291bnQ7XG4gICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBtYXRjaCB0aGUgdG9rZW5cbiAgICAgICAgLy8gaW50IGJpbmFyeVNoaWZ0Qml0Q291bnQgPSAoYmluYXJ5U2hpZnRCeXRlQ291bnQgKiA4KSArXG4gICAgICAgIC8vICAgIChiaW5hcnlTaGlmdEJ5dGVDb3VudCA9PT0gMCA/IDAgOlxuICAgICAgICAvLyAgICAgYmluYXJ5U2hpZnRCeXRlQ291bnQgPD0gMzEgPyAxMCA6XG4gICAgICAgIC8vICAgICBiaW5hcnlTaGlmdEJ5dGVDb3VudCA8PSA2MiA/IDIwIDogMjEpO1xuICAgICAgICAvLyBhc3NlcnQgdGhpcy5iaXRDb3VudCA9PT0gdG9rZW4uZ2V0VG90YWxCaXRDb3VudCgpICsgYmluYXJ5U2hpZnRCaXRDb3VudDtcbiAgICB9XG4gICAgU3RhdGUucHJvdG90eXBlLmdldE1vZGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vZGU7XG4gICAgfTtcbiAgICBTdGF0ZS5wcm90b3R5cGUuZ2V0VG9rZW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRva2VuO1xuICAgIH07XG4gICAgU3RhdGUucHJvdG90eXBlLmdldEJpbmFyeVNoaWZ0Qnl0ZUNvdW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5iaW5hcnlTaGlmdEJ5dGVDb3VudDtcbiAgICB9O1xuICAgIFN0YXRlLnByb3RvdHlwZS5nZXRCaXRDb3VudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYml0Q291bnQ7XG4gICAgfTtcbiAgICAvLyBDcmVhdGUgYSBuZXcgc3RhdGUgcmVwcmVzZW50aW5nIHRoaXMgc3RhdGUgd2l0aCBhIGxhdGNoIHRvIGEgKG5vdFxuICAgIC8vIG5lY2Vzc2FyeSBkaWZmZXJlbnQpIG1vZGUsIGFuZCB0aGVuIGEgY29kZS5cbiAgICBTdGF0ZS5wcm90b3R5cGUubGF0Y2hBbmRBcHBlbmQgPSBmdW5jdGlvbiAobW9kZSwgdmFsdWUpIHtcbiAgICAgICAgLy8gYXNzZXJ0IGJpbmFyeVNoaWZ0Qnl0ZUNvdW50ID09PSAwO1xuICAgICAgICB2YXIgYml0Q291bnQgPSB0aGlzLmJpdENvdW50O1xuICAgICAgICB2YXIgdG9rZW4gPSB0aGlzLnRva2VuO1xuICAgICAgICBpZiAobW9kZSAhPT0gdGhpcy5tb2RlKSB7XG4gICAgICAgICAgICB2YXIgbGF0Y2ggPSBMYXRjaFRhYmxlLkxBVENIX1RBQkxFW3RoaXMubW9kZV1bbW9kZV07XG4gICAgICAgICAgICB0b2tlbiA9IFRva2VuSGVscGVycy5hZGQodG9rZW4sIGxhdGNoICYgMHhmZmZmLCBsYXRjaCA+PiAxNik7XG4gICAgICAgICAgICBiaXRDb3VudCArPSBsYXRjaCA+PiAxNjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbGF0Y2hNb2RlQml0Q291bnQgPSBtb2RlID09PSBDLk1PREVfRElHSVQgPyA0IDogNTtcbiAgICAgICAgdG9rZW4gPSBUb2tlbkhlbHBlcnMuYWRkKHRva2VuLCB2YWx1ZSwgbGF0Y2hNb2RlQml0Q291bnQpO1xuICAgICAgICByZXR1cm4gbmV3IFN0YXRlKHRva2VuLCBtb2RlLCAwLCBiaXRDb3VudCArIGxhdGNoTW9kZUJpdENvdW50KTtcbiAgICB9O1xuICAgIC8vIENyZWF0ZSBhIG5ldyBzdGF0ZSByZXByZXNlbnRpbmcgdGhpcyBzdGF0ZSwgd2l0aCBhIHRlbXBvcmFyeSBzaGlmdFxuICAgIC8vIHRvIGEgZGlmZmVyZW50IG1vZGUgdG8gb3V0cHV0IGEgc2luZ2xlIHZhbHVlLlxuICAgIFN0YXRlLnByb3RvdHlwZS5zaGlmdEFuZEFwcGVuZCA9IGZ1bmN0aW9uIChtb2RlLCB2YWx1ZSkge1xuICAgICAgICAvLyBhc3NlcnQgYmluYXJ5U2hpZnRCeXRlQ291bnQgPT09IDAgJiYgdGhpcy5tb2RlICE9PSBtb2RlO1xuICAgICAgICB2YXIgdG9rZW4gPSB0aGlzLnRva2VuO1xuICAgICAgICB2YXIgdGhpc01vZGVCaXRDb3VudCA9IHRoaXMubW9kZSA9PT0gQy5NT0RFX0RJR0lUID8gNCA6IDU7XG4gICAgICAgIC8vIFNoaWZ0cyBleGlzdCBvbmx5IHRvIFVQUEVSIGFuZCBQVU5DVCwgYm90aCB3aXRoIHRva2VucyBzaXplIDUuXG4gICAgICAgIHRva2VuID0gVG9rZW5IZWxwZXJzLmFkZCh0b2tlbiwgU2hpZnRUYWJsZS5TSElGVF9UQUJMRVt0aGlzLm1vZGVdW21vZGVdLCB0aGlzTW9kZUJpdENvdW50KTtcbiAgICAgICAgdG9rZW4gPSBUb2tlbkhlbHBlcnMuYWRkKHRva2VuLCB2YWx1ZSwgNSk7XG4gICAgICAgIHJldHVybiBuZXcgU3RhdGUodG9rZW4sIHRoaXMubW9kZSwgMCwgdGhpcy5iaXRDb3VudCArIHRoaXNNb2RlQml0Q291bnQgKyA1KTtcbiAgICB9O1xuICAgIC8vIENyZWF0ZSBhIG5ldyBzdGF0ZSByZXByZXNlbnRpbmcgdGhpcyBzdGF0ZSwgYnV0IGFuIGFkZGl0aW9uYWwgY2hhcmFjdGVyXG4gICAgLy8gb3V0cHV0IGluIEJpbmFyeSBTaGlmdCBtb2RlLlxuICAgIFN0YXRlLnByb3RvdHlwZS5hZGRCaW5hcnlTaGlmdENoYXIgPSBmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICAgICAgdmFyIHRva2VuID0gdGhpcy50b2tlbjtcbiAgICAgICAgdmFyIG1vZGUgPSB0aGlzLm1vZGU7XG4gICAgICAgIHZhciBiaXRDb3VudCA9IHRoaXMuYml0Q291bnQ7XG4gICAgICAgIGlmICh0aGlzLm1vZGUgPT09IEMuTU9ERV9QVU5DVCB8fCB0aGlzLm1vZGUgPT09IEMuTU9ERV9ESUdJVCkge1xuICAgICAgICAgICAgLy8gYXNzZXJ0IGJpbmFyeVNoaWZ0Qnl0ZUNvdW50ID09PSAwO1xuICAgICAgICAgICAgdmFyIGxhdGNoID0gTGF0Y2hUYWJsZS5MQVRDSF9UQUJMRVttb2RlXVtDLk1PREVfVVBQRVJdO1xuICAgICAgICAgICAgdG9rZW4gPSBUb2tlbkhlbHBlcnMuYWRkKHRva2VuLCBsYXRjaCAmIDB4ZmZmZiwgbGF0Y2ggPj4gMTYpO1xuICAgICAgICAgICAgYml0Q291bnQgKz0gbGF0Y2ggPj4gMTY7XG4gICAgICAgICAgICBtb2RlID0gQy5NT0RFX1VQUEVSO1xuICAgICAgICB9XG4gICAgICAgIHZhciBkZWx0YUJpdENvdW50ID0gdGhpcy5iaW5hcnlTaGlmdEJ5dGVDb3VudCA9PT0gMCB8fCB0aGlzLmJpbmFyeVNoaWZ0Qnl0ZUNvdW50ID09PSAzMVxuICAgICAgICAgICAgPyAxOFxuICAgICAgICAgICAgOiB0aGlzLmJpbmFyeVNoaWZ0Qnl0ZUNvdW50ID09PSA2MlxuICAgICAgICAgICAgICAgID8gOVxuICAgICAgICAgICAgICAgIDogODtcbiAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBTdGF0ZSh0b2tlbiwgbW9kZSwgdGhpcy5iaW5hcnlTaGlmdEJ5dGVDb3VudCArIDEsIGJpdENvdW50ICsgZGVsdGFCaXRDb3VudCk7XG4gICAgICAgIGlmIChyZXN1bHQuYmluYXJ5U2hpZnRCeXRlQ291bnQgPT09IDIwNDcgKyAzMSkge1xuICAgICAgICAgICAgLy8gVGhlIHN0cmluZyBpcyBhcyBsb25nIGFzIGl0J3MgYWxsb3dlZCB0byBiZS4gIFdlIHNob3VsZCBlbmQgaXQuXG4gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQuZW5kQmluYXJ5U2hpZnQoaW5kZXggKyAxKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgLy8gQ3JlYXRlIHRoZSBzdGF0ZSBpZGVudGljYWwgdG8gdGhpcyBvbmUsIGJ1dCB3ZSBhcmUgbm8gbG9uZ2VyIGluXG4gICAgLy8gQmluYXJ5IFNoaWZ0IG1vZGUuXG4gICAgU3RhdGUucHJvdG90eXBlLmVuZEJpbmFyeVNoaWZ0ID0gZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgICAgIGlmICh0aGlzLmJpbmFyeVNoaWZ0Qnl0ZUNvdW50ID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuICAgICAgICB2YXIgdG9rZW4gPSB0aGlzLnRva2VuO1xuICAgICAgICB0b2tlbiA9IFRva2VuSGVscGVycy5hZGRCaW5hcnlTaGlmdCh0b2tlbiwgaW5kZXggLSB0aGlzLmJpbmFyeVNoaWZ0Qnl0ZUNvdW50LCB0aGlzLmJpbmFyeVNoaWZ0Qnl0ZUNvdW50KTtcbiAgICAgICAgLy8gYXNzZXJ0IHRva2VuLmdldFRvdGFsQml0Q291bnQoKSA9PT0gdGhpcy5iaXRDb3VudDtcbiAgICAgICAgcmV0dXJuIG5ldyBTdGF0ZSh0b2tlbiwgdGhpcy5tb2RlLCAwLCB0aGlzLmJpdENvdW50KTtcbiAgICB9O1xuICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBcInRoaXNcIiBzdGF0ZSBpcyBiZXR0ZXIgKGVxdWFsOiBvcikgdG8gYmUgaW4gdGhhbiBcInRoYXRcIlxuICAgIC8vIHN0YXRlIHVuZGVyIGFsbCBwb3NzaWJsZSBjaXJjdW1zdGFuY2VzLlxuICAgIFN0YXRlLnByb3RvdHlwZS5pc0JldHRlclRoYW5PckVxdWFsVG8gPSBmdW5jdGlvbiAob3RoZXIpIHtcbiAgICAgICAgdmFyIG5ld01vZGVCaXRDb3VudCA9IHRoaXMuYml0Q291bnQgKyAoTGF0Y2hUYWJsZS5MQVRDSF9UQUJMRVt0aGlzLm1vZGVdW290aGVyLm1vZGVdID4+IDE2KTtcbiAgICAgICAgaWYgKHRoaXMuYmluYXJ5U2hpZnRCeXRlQ291bnQgPCBvdGhlci5iaW5hcnlTaGlmdEJ5dGVDb3VudCkge1xuICAgICAgICAgICAgLy8gYWRkIGFkZGl0aW9uYWwgQi9TIGVuY29kaW5nIGNvc3Qgb2Ygb3RoZXIsIGlmIGFueVxuICAgICAgICAgICAgbmV3TW9kZUJpdENvdW50ICs9XG4gICAgICAgICAgICAgICAgU3RhdGUuY2FsY3VsYXRlQmluYXJ5U2hpZnRDb3N0KG90aGVyKSAtXG4gICAgICAgICAgICAgICAgICAgIFN0YXRlLmNhbGN1bGF0ZUJpbmFyeVNoaWZ0Q29zdCh0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLmJpbmFyeVNoaWZ0Qnl0ZUNvdW50ID4gb3RoZXIuYmluYXJ5U2hpZnRCeXRlQ291bnQgJiZcbiAgICAgICAgICAgIG90aGVyLmJpbmFyeVNoaWZ0Qnl0ZUNvdW50ID4gMCkge1xuICAgICAgICAgICAgLy8gbWF4aW11bSBwb3NzaWJsZSBhZGRpdGlvbmFsIGNvc3QgKGl0OiBoKVxuICAgICAgICAgICAgbmV3TW9kZUJpdENvdW50ICs9IDEwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXdNb2RlQml0Q291bnQgPD0gb3RoZXIuYml0Q291bnQ7XG4gICAgfTtcbiAgICBTdGF0ZS5wcm90b3R5cGUudG9CaXRBcnJheSA9IGZ1bmN0aW9uICh0ZXh0KSB7XG4gICAgICAgIHZhciBlXzEsIF9hO1xuICAgICAgICAvLyBSZXZlcnNlIHRoZSB0b2tlbnMsIHNvIHRoYXQgdGhleSBhcmUgaW4gdGhlIG9yZGVyIHRoYXQgdGhleSBzaG91bGRcbiAgICAgICAgLy8gYmUgb3V0cHV0XG4gICAgICAgIHZhciBzeW1ib2xzID0gW107XG4gICAgICAgIGZvciAodmFyIHRva2VuID0gdGhpcy5lbmRCaW5hcnlTaGlmdCh0ZXh0Lmxlbmd0aCkudG9rZW47IHRva2VuICE9PSBudWxsOyB0b2tlbiA9IHRva2VuLmdldFByZXZpb3VzKCkpIHtcbiAgICAgICAgICAgIHN5bWJvbHMudW5zaGlmdCh0b2tlbik7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGJpdEFycmF5ID0gbmV3IEJpdEFycmF5XzEuZGVmYXVsdCgpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gQWRkIGVhY2ggdG9rZW4gdG8gdGhlIHJlc3VsdC5cbiAgICAgICAgICAgIGZvciAodmFyIHN5bWJvbHNfMSA9IF9fdmFsdWVzKHN5bWJvbHMpLCBzeW1ib2xzXzFfMSA9IHN5bWJvbHNfMS5uZXh0KCk7ICFzeW1ib2xzXzFfMS5kb25lOyBzeW1ib2xzXzFfMSA9IHN5bWJvbHNfMS5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgc3ltYm9sID0gc3ltYm9sc18xXzEudmFsdWU7XG4gICAgICAgICAgICAgICAgc3ltYm9sLmFwcGVuZFRvKGJpdEFycmF5LCB0ZXh0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKHN5bWJvbHNfMV8xICYmICFzeW1ib2xzXzFfMS5kb25lICYmIChfYSA9IHN5bWJvbHNfMS5yZXR1cm4pKSBfYS5jYWxsKHN5bWJvbHNfMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gYXNzZXJ0IGJpdEFycmF5LmdldFNpemUoKSA9PT0gdGhpcy5iaXRDb3VudDtcbiAgICAgICAgcmV0dXJuIGJpdEFycmF5O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQE92ZXJyaWRlXG4gICAgICovXG4gICAgU3RhdGUucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gU3RyaW5nVXRpbHNfMS5kZWZhdWx0LmZvcm1hdCgnJXMgYml0cz0lZCBieXRlcz0lZCcsIEMuTU9ERV9OQU1FU1t0aGlzLm1vZGVdLCB0aGlzLmJpdENvdW50LCB0aGlzLmJpbmFyeVNoaWZ0Qnl0ZUNvdW50KTtcbiAgICB9O1xuICAgIFN0YXRlLmNhbGN1bGF0ZUJpbmFyeVNoaWZ0Q29zdCA9IGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgICAgICBpZiAoc3RhdGUuYmluYXJ5U2hpZnRCeXRlQ291bnQgPiA2Mikge1xuICAgICAgICAgICAgcmV0dXJuIDIxOyAvLyBCL1Mgd2l0aCBleHRlbmRlZCBsZW5ndGhcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhdGUuYmluYXJ5U2hpZnRCeXRlQ291bnQgPiAzMSkge1xuICAgICAgICAgICAgcmV0dXJuIDIwOyAvLyB0d28gQi9TXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXRlLmJpbmFyeVNoaWZ0Qnl0ZUNvdW50ID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIDEwOyAvLyBvbmUgQi9TXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfTtcbiAgICBTdGF0ZS5JTklUSUFMX1NUQVRFID0gbmV3IFN0YXRlKEMuRU1QVFlfVE9LRU4sIEMuTU9ERV9VUFBFUiwgMCwgMCk7XG4gICAgcmV0dXJuIFN0YXRlO1xufSgpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IFN0YXRlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U3RhdGUuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkNIQVJfTUFQID0gZXhwb3J0cy5zdGF0aWNfQ0hBUl9NQVAgPSB2b2lkIDA7XG52YXIgQyA9IHJlcXVpcmUoXCIuL0VuY29kZXJDb25zdGFudHNcIik7XG52YXIgQXJyYXlzXzEgPSByZXF1aXJlKFwiLi4vLi4vdXRpbC9BcnJheXNcIik7XG52YXIgU3RyaW5nVXRpbHNfMSA9IHJlcXVpcmUoXCIuLi8uLi9jb21tb24vU3RyaW5nVXRpbHNcIik7XG5mdW5jdGlvbiBzdGF0aWNfQ0hBUl9NQVAoQ0hBUl9NQVApIHtcbiAgICB2YXIgc3BhY2VDaGFyQ29kZSA9IFN0cmluZ1V0aWxzXzEuZGVmYXVsdC5nZXRDaGFyQ29kZSgnICcpO1xuICAgIHZhciBwb2ludENoYXJDb2RlID0gU3RyaW5nVXRpbHNfMS5kZWZhdWx0LmdldENoYXJDb2RlKCcuJyk7XG4gICAgdmFyIGNvbW1hQ2hhckNvZGUgPSBTdHJpbmdVdGlsc18xLmRlZmF1bHQuZ2V0Q2hhckNvZGUoJywnKTtcbiAgICBDSEFSX01BUFtDLk1PREVfVVBQRVJdW3NwYWNlQ2hhckNvZGVdID0gMTtcbiAgICB2YXIgelVwcGVyQ2hhckNvZGUgPSBTdHJpbmdVdGlsc18xLmRlZmF1bHQuZ2V0Q2hhckNvZGUoJ1onKTtcbiAgICB2YXIgYVVwcGVyQ2hhckNvZGUgPSBTdHJpbmdVdGlsc18xLmRlZmF1bHQuZ2V0Q2hhckNvZGUoJ0EnKTtcbiAgICBmb3IgKHZhciBjID0gYVVwcGVyQ2hhckNvZGU7IGMgPD0gelVwcGVyQ2hhckNvZGU7IGMrKykge1xuICAgICAgICBDSEFSX01BUFtDLk1PREVfVVBQRVJdW2NdID0gYyAtIGFVcHBlckNoYXJDb2RlICsgMjtcbiAgICB9XG4gICAgQ0hBUl9NQVBbQy5NT0RFX0xPV0VSXVtzcGFjZUNoYXJDb2RlXSA9IDE7XG4gICAgdmFyIHpMb3dlckNoYXJDb2RlID0gU3RyaW5nVXRpbHNfMS5kZWZhdWx0LmdldENoYXJDb2RlKCd6Jyk7XG4gICAgdmFyIGFMb3dlckNoYXJDb2RlID0gU3RyaW5nVXRpbHNfMS5kZWZhdWx0LmdldENoYXJDb2RlKCdhJyk7XG4gICAgZm9yICh2YXIgYyA9IGFMb3dlckNoYXJDb2RlOyBjIDw9IHpMb3dlckNoYXJDb2RlOyBjKyspIHtcbiAgICAgICAgQ0hBUl9NQVBbQy5NT0RFX0xPV0VSXVtjXSA9IGMgLSBhTG93ZXJDaGFyQ29kZSArIDI7XG4gICAgfVxuICAgIENIQVJfTUFQW0MuTU9ERV9ESUdJVF1bc3BhY2VDaGFyQ29kZV0gPSAxO1xuICAgIHZhciBuaW5lQ2hhckNvZGUgPSBTdHJpbmdVdGlsc18xLmRlZmF1bHQuZ2V0Q2hhckNvZGUoJzknKTtcbiAgICB2YXIgemVyb0NoYXJDb2RlID0gU3RyaW5nVXRpbHNfMS5kZWZhdWx0LmdldENoYXJDb2RlKCcwJyk7XG4gICAgZm9yICh2YXIgYyA9IHplcm9DaGFyQ29kZTsgYyA8PSBuaW5lQ2hhckNvZGU7IGMrKykge1xuICAgICAgICBDSEFSX01BUFtDLk1PREVfRElHSVRdW2NdID0gYyAtIHplcm9DaGFyQ29kZSArIDI7XG4gICAgfVxuICAgIENIQVJfTUFQW0MuTU9ERV9ESUdJVF1bY29tbWFDaGFyQ29kZV0gPSAxMjtcbiAgICBDSEFSX01BUFtDLk1PREVfRElHSVRdW3BvaW50Q2hhckNvZGVdID0gMTM7XG4gICAgdmFyIG1peGVkVGFibGUgPSBbXG4gICAgICAgICdcXHgwMCcsXG4gICAgICAgICcgJyxcbiAgICAgICAgJ1xceDAxJyxcbiAgICAgICAgJ1xceDAyJyxcbiAgICAgICAgJ1xceDAzJyxcbiAgICAgICAgJ1xceDA0JyxcbiAgICAgICAgJ1xceDA1JyxcbiAgICAgICAgJ1xceDA2JyxcbiAgICAgICAgJ1xceDA3JyxcbiAgICAgICAgJ1xcYicsXG4gICAgICAgICdcXHQnLFxuICAgICAgICAnXFxuJyxcbiAgICAgICAgJ1xceDBiJyxcbiAgICAgICAgJ1xcZicsXG4gICAgICAgICdcXHInLFxuICAgICAgICAnXFx4MWInLFxuICAgICAgICAnXFx4MWMnLFxuICAgICAgICAnXFx4MWQnLFxuICAgICAgICAnXFx4MWUnLFxuICAgICAgICAnXFx4MWYnLFxuICAgICAgICAnQCcsXG4gICAgICAgICdcXFxcJyxcbiAgICAgICAgJ14nLFxuICAgICAgICAnXycsXG4gICAgICAgICdgJyxcbiAgICAgICAgJ3wnLFxuICAgICAgICAnficsXG4gICAgICAgICdcXHg3ZidcbiAgICBdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWl4ZWRUYWJsZS5sZW5ndGg7IGkrKykge1xuICAgICAgICBDSEFSX01BUFtDLk1PREVfTUlYRURdW1N0cmluZ1V0aWxzXzEuZGVmYXVsdC5nZXRDaGFyQ29kZShtaXhlZFRhYmxlW2ldKV0gPSBpO1xuICAgIH1cbiAgICB2YXIgcHVuY3RUYWJsZSA9IFtcbiAgICAgICAgJ1xceDAwJyxcbiAgICAgICAgJ1xccicsXG4gICAgICAgICdcXHgwMCcsXG4gICAgICAgICdcXHgwMCcsXG4gICAgICAgICdcXHgwMCcsXG4gICAgICAgICdcXHgwMCcsXG4gICAgICAgICchJyxcbiAgICAgICAgJ1xcJycsXG4gICAgICAgICcjJyxcbiAgICAgICAgJyQnLFxuICAgICAgICAnJScsXG4gICAgICAgICcmJyxcbiAgICAgICAgJ1xcJycsXG4gICAgICAgICcoJyxcbiAgICAgICAgJyknLFxuICAgICAgICAnKicsXG4gICAgICAgICcrJyxcbiAgICAgICAgJywnLFxuICAgICAgICAnLScsXG4gICAgICAgICcuJyxcbiAgICAgICAgJy8nLFxuICAgICAgICAnOicsXG4gICAgICAgICc7JyxcbiAgICAgICAgJzwnLFxuICAgICAgICAnPScsXG4gICAgICAgICc+JyxcbiAgICAgICAgJz8nLFxuICAgICAgICAnWycsXG4gICAgICAgICddJyxcbiAgICAgICAgJ3snLFxuICAgICAgICAnfSdcbiAgICBdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHVuY3RUYWJsZS5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoU3RyaW5nVXRpbHNfMS5kZWZhdWx0LmdldENoYXJDb2RlKHB1bmN0VGFibGVbaV0pID4gMCkge1xuICAgICAgICAgICAgQ0hBUl9NQVBbQy5NT0RFX1BVTkNUXVtTdHJpbmdVdGlsc18xLmRlZmF1bHQuZ2V0Q2hhckNvZGUocHVuY3RUYWJsZVtpXSldID0gaTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gQ0hBUl9NQVA7XG59XG5leHBvcnRzLnN0YXRpY19DSEFSX01BUCA9IHN0YXRpY19DSEFSX01BUDtcbmV4cG9ydHMuQ0hBUl9NQVAgPSBzdGF0aWNfQ0hBUl9NQVAoQXJyYXlzXzEuZGVmYXVsdC5jcmVhdGVJbnQzMkFycmF5KDUsIDI1NikpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Q2hhck1hcC5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8qXG4gKiBDb3B5cmlnaHQgMjAxMyBaWGluZyBhdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIF9fdmFsdWVzID0gKHRoaXMgJiYgdGhpcy5fX3ZhbHVlcykgfHwgZnVuY3Rpb24obykge1xuICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xuICAgICAgICB9XG4gICAgfTtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLy8gaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uO1xuLy8gaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9ucztcbnZhciBDb2xsZWN0aW9uc18xID0gcmVxdWlyZShcIi4uLy4uL3V0aWwvQ29sbGVjdGlvbnNcIik7XG4vLyBpbXBvcnQgamF2YS51dGlsLkNvbXBhcmF0b3I7XG4vLyBpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yO1xuLy8gaW1wb3J0IGphdmEudXRpbC5MaW5rZWRMaXN0O1xudmFyIFN0YXRlXzEgPSByZXF1aXJlKFwiLi9TdGF0ZVwiKTtcbnZhciBDID0gcmVxdWlyZShcIi4vRW5jb2RlckNvbnN0YW50c1wiKTtcbnZhciBDaGFyTWFwID0gcmVxdWlyZShcIi4vQ2hhck1hcFwiKTtcbnZhciBTaGlmdFRhYmxlID0gcmVxdWlyZShcIi4vU2hpZnRUYWJsZVwiKTtcbnZhciBTdHJpbmdVdGlsc18xID0gcmVxdWlyZShcIi4uLy4uL2NvbW1vbi9TdHJpbmdVdGlsc1wiKTtcbi8qKlxuICogVGhpcyBwcm9kdWNlcyBuZWFybHkgb3B0aW1hbCBlbmNvZGluZ3Mgb2YgdGV4dCBpbnRvIHRoZSBmaXJzdC1sZXZlbCBvZlxuICogZW5jb2RpbmcgdXNlZCBieSBBenRlYyBjb2RlLlxuICpcbiAqIEl0IHVzZXMgYSBkeW5hbWljIGFsZ29yaXRobS4gIEZvciBlYWNoIHByZWZpeCBvZiB0aGUgc3RyaW5nLCBpdCBkZXRlcm1pbmVzXG4gKiBhIHNldCBvZiBlbmNvZGluZ3MgdGhhdCBjb3VsZCBsZWFkIHRvIHRoaXMgcHJlZml4LiAgV2UgcmVwZWF0ZWRseSBhZGQgYVxuICogY2hhcmFjdGVyIGFuZCBnZW5lcmF0ZSBhIG5ldyBzZXQgb2Ygb3B0aW1hbCBlbmNvZGluZ3MgdW50aWwgd2UgaGF2ZSByZWFkXG4gKiB0aHJvdWdoIHRoZSBlbnRpcmUgaW5wdXQuXG4gKlxuICogQGF1dGhvciBGcmFuayBZZWxsaW5cbiAqIEBhdXRob3IgUnVzdGFtIEFiZHVsbGFldlxuICovXG52YXIgSGlnaExldmVsRW5jb2RlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBIaWdoTGV2ZWxFbmNvZGVyKHRleHQpIHtcbiAgICAgICAgdGhpcy50ZXh0ID0gdGV4dDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQHJldHVybiB0ZXh0IHJlcHJlc2VudGVkIGJ5IHRoaXMgZW5jb2RlciBlbmNvZGVkIGFzIGEge0BsaW5rIEJpdEFycmF5fVxuICAgICAqL1xuICAgIEhpZ2hMZXZlbEVuY29kZXIucHJvdG90eXBlLmVuY29kZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHNwYWNlQ2hhckNvZGUgPSBTdHJpbmdVdGlsc18xLmRlZmF1bHQuZ2V0Q2hhckNvZGUoJyAnKTtcbiAgICAgICAgdmFyIGxpbmVCcmVha0NoYXJDb2RlID0gU3RyaW5nVXRpbHNfMS5kZWZhdWx0LmdldENoYXJDb2RlKCdcXG4nKTtcbiAgICAgICAgdmFyIHN0YXRlcyA9IENvbGxlY3Rpb25zXzEuZGVmYXVsdC5zaW5nbGV0b25MaXN0KFN0YXRlXzEuZGVmYXVsdC5JTklUSUFMX1NUQVRFKTtcbiAgICAgICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMudGV4dC5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgIHZhciBwYWlyQ29kZSA9IHZvaWQgMDtcbiAgICAgICAgICAgIHZhciBuZXh0Q2hhciA9IGluZGV4ICsgMSA8IHRoaXMudGV4dC5sZW5ndGggPyB0aGlzLnRleHRbaW5kZXggKyAxXSA6IDA7XG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMudGV4dFtpbmRleF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIFN0cmluZ1V0aWxzXzEuZGVmYXVsdC5nZXRDaGFyQ29kZSgnXFxyJyk6XG4gICAgICAgICAgICAgICAgICAgIHBhaXJDb2RlID0gbmV4dENoYXIgPT09IGxpbmVCcmVha0NoYXJDb2RlID8gMiA6IDA7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgU3RyaW5nVXRpbHNfMS5kZWZhdWx0LmdldENoYXJDb2RlKCcuJyk6XG4gICAgICAgICAgICAgICAgICAgIHBhaXJDb2RlID0gbmV4dENoYXIgPT09IHNwYWNlQ2hhckNvZGUgPyAzIDogMDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBTdHJpbmdVdGlsc18xLmRlZmF1bHQuZ2V0Q2hhckNvZGUoJywnKTpcbiAgICAgICAgICAgICAgICAgICAgcGFpckNvZGUgPSBuZXh0Q2hhciA9PT0gc3BhY2VDaGFyQ29kZSA/IDQgOiAwO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFN0cmluZ1V0aWxzXzEuZGVmYXVsdC5nZXRDaGFyQ29kZSgnOicpOlxuICAgICAgICAgICAgICAgICAgICBwYWlyQ29kZSA9IG5leHRDaGFyID09PSBzcGFjZUNoYXJDb2RlID8gNSA6IDA7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHBhaXJDb2RlID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwYWlyQ29kZSA+IDApIHtcbiAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIG9uZSBvZiB0aGUgZm91ciBzcGVjaWFsIFBVTkNUIHBhaXJzLiAgVHJlYXQgdGhlbSBzcGVjaWFsbHkuXG4gICAgICAgICAgICAgICAgLy8gR2V0IGEgbmV3IHNldCBvZiBzdGF0ZXMgZm9yIHRoZSB0d28gbmV3IGNoYXJhY3RlcnMuXG4gICAgICAgICAgICAgICAgc3RhdGVzID0gSGlnaExldmVsRW5jb2Rlci51cGRhdGVTdGF0ZUxpc3RGb3JQYWlyKHN0YXRlcywgaW5kZXgsIHBhaXJDb2RlKTtcbiAgICAgICAgICAgICAgICBpbmRleCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gR2V0IGEgbmV3IHNldCBvZiBzdGF0ZXMgZm9yIHRoZSBuZXcgY2hhcmFjdGVyLlxuICAgICAgICAgICAgICAgIHN0YXRlcyA9IHRoaXMudXBkYXRlU3RhdGVMaXN0Rm9yQ2hhcihzdGF0ZXMsIGluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBXZSBhcmUgbGVmdCB3aXRoIGEgc2V0IG9mIHN0YXRlcy4gIEZpbmQgdGhlIHNob3J0ZXN0IG9uZS5cbiAgICAgICAgdmFyIG1pblN0YXRlID0gQ29sbGVjdGlvbnNfMS5kZWZhdWx0Lm1pbihzdGF0ZXMsIGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgICAgICByZXR1cm4gYS5nZXRCaXRDb3VudCgpIC0gYi5nZXRCaXRDb3VudCgpO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gQ29udmVydCBpdCB0byBhIGJpdCBhcnJheSwgYW5kIHJldHVybi5cbiAgICAgICAgcmV0dXJuIG1pblN0YXRlLnRvQml0QXJyYXkodGhpcy50ZXh0KTtcbiAgICB9O1xuICAgIC8vIFdlIHVwZGF0ZSBhIHNldCBvZiBzdGF0ZXMgZm9yIGEgbmV3IGNoYXJhY3RlciBieSB1cGRhdGluZyBlYWNoIHN0YXRlXG4gICAgLy8gZm9yIHRoZSBuZXcgY2hhcmFjdGVyLCBtZXJnaW5nIHRoZSByZXN1bHRzLCBhbmQgdGhlbiByZW1vdmluZyB0aGVcbiAgICAvLyBub24tb3B0aW1hbCBzdGF0ZXMuXG4gICAgSGlnaExldmVsRW5jb2Rlci5wcm90b3R5cGUudXBkYXRlU3RhdGVMaXN0Rm9yQ2hhciA9IGZ1bmN0aW9uIChzdGF0ZXMsIGluZGV4KSB7XG4gICAgICAgIHZhciBlXzEsIF9hO1xuICAgICAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKHZhciBzdGF0ZXNfMSA9IF9fdmFsdWVzKHN0YXRlcyksIHN0YXRlc18xXzEgPSBzdGF0ZXNfMS5uZXh0KCk7ICFzdGF0ZXNfMV8xLmRvbmU7IHN0YXRlc18xXzEgPSBzdGF0ZXNfMS5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgc3RhdGUgPSBzdGF0ZXNfMV8xLnZhbHVlIC8qU3RhdGUqLztcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVN0YXRlRm9yQ2hhcihzdGF0ZSwgaW5kZXgsIHJlc3VsdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChzdGF0ZXNfMV8xICYmICFzdGF0ZXNfMV8xLmRvbmUgJiYgKF9hID0gc3RhdGVzXzEucmV0dXJuKSkgX2EuY2FsbChzdGF0ZXNfMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEhpZ2hMZXZlbEVuY29kZXIuc2ltcGxpZnlTdGF0ZXMocmVzdWx0KTtcbiAgICB9O1xuICAgIC8vIFJldHVybiBhIHNldCBvZiBzdGF0ZXMgdGhhdCByZXByZXNlbnQgdGhlIHBvc3NpYmxlIHdheXMgb2YgdXBkYXRpbmcgdGhpc1xuICAgIC8vIHN0YXRlIGZvciB0aGUgbmV4dCBjaGFyYWN0ZXIuICBUaGUgcmVzdWx0aW5nIHNldCBvZiBzdGF0ZXMgYXJlIGFkZGVkIHRvXG4gICAgLy8gdGhlIFwicmVzdWx0XCIgbGlzdC5cbiAgICBIaWdoTGV2ZWxFbmNvZGVyLnByb3RvdHlwZS51cGRhdGVTdGF0ZUZvckNoYXIgPSBmdW5jdGlvbiAoc3RhdGUsIGluZGV4LCByZXN1bHQpIHtcbiAgICAgICAgdmFyIGNoID0gKHRoaXMudGV4dFtpbmRleF0gJiAweGZmKTtcbiAgICAgICAgdmFyIGNoYXJJbkN1cnJlbnRUYWJsZSA9IENoYXJNYXAuQ0hBUl9NQVBbc3RhdGUuZ2V0TW9kZSgpXVtjaF0gPiAwO1xuICAgICAgICB2YXIgc3RhdGVOb0JpbmFyeSA9IG51bGw7XG4gICAgICAgIGZvciAodmFyIG1vZGUgLyppbnQqLyA9IDA7IG1vZGUgPD0gQy5NT0RFX1BVTkNUOyBtb2RlKyspIHtcbiAgICAgICAgICAgIHZhciBjaGFySW5Nb2RlID0gQ2hhck1hcC5DSEFSX01BUFttb2RlXVtjaF07XG4gICAgICAgICAgICBpZiAoY2hhckluTW9kZSA+IDApIHtcbiAgICAgICAgICAgICAgICBpZiAoc3RhdGVOb0JpbmFyeSA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIE9ubHkgY3JlYXRlIHN0YXRlTm9CaW5hcnkgdGhlIGZpcnN0IHRpbWUgaXQncyByZXF1aXJlZC5cbiAgICAgICAgICAgICAgICAgICAgc3RhdGVOb0JpbmFyeSA9IHN0YXRlLmVuZEJpbmFyeVNoaWZ0KGluZGV4KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gVHJ5IGdlbmVyYXRpbmcgdGhlIGNoYXJhY3RlciBieSBsYXRjaGluZyB0byBpdHMgbW9kZVxuICAgICAgICAgICAgICAgIGlmICghY2hhckluQ3VycmVudFRhYmxlIHx8XG4gICAgICAgICAgICAgICAgICAgIG1vZGUgPT09IHN0YXRlLmdldE1vZGUoKSB8fFxuICAgICAgICAgICAgICAgICAgICBtb2RlID09PSBDLk1PREVfRElHSVQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGNoYXJhY3RlciBpcyBpbiB0aGUgY3VycmVudCB0YWJsZSwgd2UgZG9uJ3Qgd2FudCB0byBsYXRjaCB0b1xuICAgICAgICAgICAgICAgICAgICAvLyBhbnkgb3RoZXIgbW9kZSBleGNlcHQgcG9zc2libHkgZGlnaXQgKHdoaWNoIHVzZXMgb25seSA0IGJpdHMpLiAgQW55XG4gICAgICAgICAgICAgICAgICAgIC8vIG90aGVyIGxhdGNoIHdvdWxkIGJlIGVxdWFsbHkgc3VjY2Vzc2Z1bCAqYWZ0ZXIqIHRoaXMgY2hhcmFjdGVyLCBhbmRcbiAgICAgICAgICAgICAgICAgICAgLy8gc28gd291bGRuJ3Qgc2F2ZSBhbnkgYml0cy5cbiAgICAgICAgICAgICAgICAgICAgdmFyIGxhdGNoU3RhdGUgPSBzdGF0ZU5vQmluYXJ5LmxhdGNoQW5kQXBwZW5kKG1vZGUsIGNoYXJJbk1vZGUpO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChsYXRjaFN0YXRlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gVHJ5IGdlbmVyYXRpbmcgdGhlIGNoYXJhY3RlciBieSBzd2l0Y2hpbmcgdG8gaXRzIG1vZGUuXG4gICAgICAgICAgICAgICAgaWYgKCFjaGFySW5DdXJyZW50VGFibGUgJiZcbiAgICAgICAgICAgICAgICAgICAgU2hpZnRUYWJsZS5TSElGVF9UQUJMRVtzdGF0ZS5nZXRNb2RlKCldW21vZGVdID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSXQgbmV2ZXIgbWFrZXMgc2Vuc2UgdG8gdGVtcG9yYXJpbHkgc2hpZnQgdG8gYW5vdGhlciBtb2RlIGlmIHRoZVxuICAgICAgICAgICAgICAgICAgICAvLyBjaGFyYWN0ZXIgZXhpc3RzIGluIHRoZSBjdXJyZW50IG1vZGUuICBUaGF0IGNhbiBuZXZlciBzYXZlIGJpdHMuXG4gICAgICAgICAgICAgICAgICAgIHZhciBzaGlmdFN0YXRlID0gc3RhdGVOb0JpbmFyeS5zaGlmdEFuZEFwcGVuZChtb2RlLCBjaGFySW5Nb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goc2hpZnRTdGF0ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzdGF0ZS5nZXRCaW5hcnlTaGlmdEJ5dGVDb3VudCgpID4gMCB8fFxuICAgICAgICAgICAgQ2hhck1hcC5DSEFSX01BUFtzdGF0ZS5nZXRNb2RlKCldW2NoXSA9PT0gMCkge1xuICAgICAgICAgICAgLy8gSXQncyBuZXZlciB3b3J0aHdoaWxlIHRvIGdvIGludG8gYmluYXJ5IHNoaWZ0IG1vZGUgaWYgeW91J3JlIG5vdCBhbHJlYWR5XG4gICAgICAgICAgICAvLyBpbiBiaW5hcnkgc2hpZnQgbW9kZSwgYW5kIHRoZSBjaGFyYWN0ZXIgZXhpc3RzIGluIHlvdXIgY3VycmVudCBtb2RlLlxuICAgICAgICAgICAgLy8gVGhhdCBjYW4gbmV2ZXIgc2F2ZSBiaXRzIG92ZXIganVzdCBvdXRwdXR0aW5nIHRoZSBjaGFyIGluIHRoZSBjdXJyZW50IG1vZGUuXG4gICAgICAgICAgICB2YXIgYmluYXJ5U3RhdGUgPSBzdGF0ZS5hZGRCaW5hcnlTaGlmdENoYXIoaW5kZXgpO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goYmluYXJ5U3RhdGUpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBIaWdoTGV2ZWxFbmNvZGVyLnVwZGF0ZVN0YXRlTGlzdEZvclBhaXIgPSBmdW5jdGlvbiAoc3RhdGVzLCBpbmRleCwgcGFpckNvZGUpIHtcbiAgICAgICAgdmFyIGVfMiwgX2E7XG4gICAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAodmFyIHN0YXRlc18yID0gX192YWx1ZXMoc3RhdGVzKSwgc3RhdGVzXzJfMSA9IHN0YXRlc18yLm5leHQoKTsgIXN0YXRlc18yXzEuZG9uZTsgc3RhdGVzXzJfMSA9IHN0YXRlc18yLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciBzdGF0ZSA9IHN0YXRlc18yXzEudmFsdWUgLypTdGF0ZSovO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU3RhdGVGb3JQYWlyKHN0YXRlLCBpbmRleCwgcGFpckNvZGUsIHJlc3VsdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVfMl8xKSB7IGVfMiA9IHsgZXJyb3I6IGVfMl8xIH07IH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChzdGF0ZXNfMl8xICYmICFzdGF0ZXNfMl8xLmRvbmUgJiYgKF9hID0gc3RhdGVzXzIucmV0dXJuKSkgX2EuY2FsbChzdGF0ZXNfMik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMikgdGhyb3cgZV8yLmVycm9yOyB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuc2ltcGxpZnlTdGF0ZXMocmVzdWx0KTtcbiAgICB9O1xuICAgIEhpZ2hMZXZlbEVuY29kZXIudXBkYXRlU3RhdGVGb3JQYWlyID0gZnVuY3Rpb24gKHN0YXRlLCBpbmRleCwgcGFpckNvZGUsIHJlc3VsdCkge1xuICAgICAgICB2YXIgc3RhdGVOb0JpbmFyeSA9IHN0YXRlLmVuZEJpbmFyeVNoaWZ0KGluZGV4KTtcbiAgICAgICAgLy8gUG9zc2liaWxpdHkgMS4gIExhdGNoIHRvIEMuTU9ERV9QVU5DVCwgYW5kIHRoZW4gYXBwZW5kIHRoaXMgY29kZVxuICAgICAgICByZXN1bHQucHVzaChzdGF0ZU5vQmluYXJ5LmxhdGNoQW5kQXBwZW5kKEMuTU9ERV9QVU5DVCwgcGFpckNvZGUpKTtcbiAgICAgICAgaWYgKHN0YXRlLmdldE1vZGUoKSAhPT0gQy5NT0RFX1BVTkNUKSB7XG4gICAgICAgICAgICAvLyBQb3NzaWJpbGl0eSAyLiAgU2hpZnQgdG8gQy5NT0RFX1BVTkNULCBhbmQgdGhlbiBhcHBlbmQgdGhpcyBjb2RlLlxuICAgICAgICAgICAgLy8gRXZlcnkgc3RhdGUgZXhjZXB0IEMuTU9ERV9QVU5DVCAoaGFuZGxlZCBhYm92ZSkgY2FuIHNoaWZ0XG4gICAgICAgICAgICByZXN1bHQucHVzaChzdGF0ZU5vQmluYXJ5LnNoaWZ0QW5kQXBwZW5kKEMuTU9ERV9QVU5DVCwgcGFpckNvZGUpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFpckNvZGUgPT09IDMgfHwgcGFpckNvZGUgPT09IDQpIHtcbiAgICAgICAgICAgIC8vIGJvdGggY2hhcmFjdGVycyBhcmUgaW4gRElHSVRTLiAgU29tZXRpbWVzIGJldHRlciB0byBqdXN0IGFkZCB0d28gZGlnaXRzXG4gICAgICAgICAgICB2YXIgZGlnaXRTdGF0ZSA9IHN0YXRlTm9CaW5hcnlcbiAgICAgICAgICAgICAgICAubGF0Y2hBbmRBcHBlbmQoQy5NT0RFX0RJR0lULCAxNiAtIHBhaXJDb2RlKSAvLyBwZXJpb2Qgb3IgY29tbWEgaW4gRElHSVRcbiAgICAgICAgICAgICAgICAubGF0Y2hBbmRBcHBlbmQoQy5NT0RFX0RJR0lULCAxKTsgLy8gc3BhY2UgaW4gRElHSVRcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGRpZ2l0U3RhdGUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGF0ZS5nZXRCaW5hcnlTaGlmdEJ5dGVDb3VudCgpID4gMCkge1xuICAgICAgICAgICAgLy8gSXQgb25seSBtYWtlcyBzZW5zZSB0byBkbyB0aGUgY2hhcmFjdGVycyBhcyBiaW5hcnkgaWYgd2UncmUgYWxyZWFkeVxuICAgICAgICAgICAgLy8gaW4gYmluYXJ5IG1vZGUuXG4gICAgICAgICAgICB2YXIgYmluYXJ5U3RhdGUgPSBzdGF0ZVxuICAgICAgICAgICAgICAgIC5hZGRCaW5hcnlTaGlmdENoYXIoaW5kZXgpXG4gICAgICAgICAgICAgICAgLmFkZEJpbmFyeVNoaWZ0Q2hhcihpbmRleCArIDEpO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goYmluYXJ5U3RhdGUpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBIaWdoTGV2ZWxFbmNvZGVyLnNpbXBsaWZ5U3RhdGVzID0gZnVuY3Rpb24gKHN0YXRlcykge1xuICAgICAgICB2YXIgZV8zLCBfYSwgZV80LCBfYjtcbiAgICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yICh2YXIgc3RhdGVzXzMgPSBfX3ZhbHVlcyhzdGF0ZXMpLCBzdGF0ZXNfM18xID0gc3RhdGVzXzMubmV4dCgpOyAhc3RhdGVzXzNfMS5kb25lOyBzdGF0ZXNfM18xID0gc3RhdGVzXzMubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIG5ld1N0YXRlID0gc3RhdGVzXzNfMS52YWx1ZTtcbiAgICAgICAgICAgICAgICB2YXIgYWRkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIChvbGRTdGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAob2xkU3RhdGUuaXNCZXR0ZXJUaGFuT3JFcXVhbFRvKG5ld1N0YXRlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJicmVha1wiO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXdTdGF0ZS5pc0JldHRlclRoYW5PckVxdWFsVG8ob2xkU3RhdGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpdGVyYXRvci5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5maWx0ZXIoZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHggIT09IG9sZFN0YXRlOyB9KTsgLy8gcmVtb3ZlIG9sZCBzdGF0ZVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciByZXN1bHRfMSA9IChlXzQgPSB2b2lkIDAsIF9fdmFsdWVzKHJlc3VsdCkpLCByZXN1bHRfMV8xID0gcmVzdWx0XzEubmV4dCgpOyAhcmVzdWx0XzFfMS5kb25lOyByZXN1bHRfMV8xID0gcmVzdWx0XzEubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgb2xkU3RhdGUgPSByZXN1bHRfMV8xLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXRlXzEgPSBfbG9vcF8xKG9sZFN0YXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZV8xID09PSBcImJyZWFrXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVfNF8xKSB7IGVfNCA9IHsgZXJyb3I6IGVfNF8xIH07IH1cbiAgICAgICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHRfMV8xICYmICFyZXN1bHRfMV8xLmRvbmUgJiYgKF9iID0gcmVzdWx0XzEucmV0dXJuKSkgX2IuY2FsbChyZXN1bHRfMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzQpIHRocm93IGVfNC5lcnJvcjsgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoYWRkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ld1N0YXRlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVfM18xKSB7IGVfMyA9IHsgZXJyb3I6IGVfM18xIH07IH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChzdGF0ZXNfM18xICYmICFzdGF0ZXNfM18xLmRvbmUgJiYgKF9hID0gc3RhdGVzXzMucmV0dXJuKSkgX2EuY2FsbChzdGF0ZXNfMyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMykgdGhyb3cgZV8zLmVycm9yOyB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIHJldHVybiBIaWdoTGV2ZWxFbmNvZGVyO1xufSgpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IEhpZ2hMZXZlbEVuY29kZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1IaWdoTGV2ZWxFbmNvZGVyLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fdmFsdWVzID0gKHRoaXMgJiYgdGhpcy5fX3ZhbHVlcykgfHwgZnVuY3Rpb24obykge1xuICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xuICAgICAgICB9XG4gICAgfTtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIEJpdEFycmF5XzEgPSByZXF1aXJlKFwiLi4vLi4vY29tbW9uL0JpdEFycmF5XCIpO1xudmFyIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4uLy4uL0lsbGVnYWxBcmd1bWVudEV4Y2VwdGlvblwiKTtcbnZhciBTdHJpbmdVdGlsc18xID0gcmVxdWlyZShcIi4uLy4uL2NvbW1vbi9TdHJpbmdVdGlsc1wiKTtcbnZhciBCaXRNYXRyaXhfMSA9IHJlcXVpcmUoXCIuLi8uLi9jb21tb24vQml0TWF0cml4XCIpO1xudmFyIEF6dGVjQ29kZV8xID0gcmVxdWlyZShcIi4vQXp0ZWNDb2RlXCIpO1xudmFyIFJlZWRTb2xvbW9uRW5jb2Rlcl8xID0gcmVxdWlyZShcIi4uLy4uL2NvbW1vbi9yZWVkc29sb21vbi9SZWVkU29sb21vbkVuY29kZXJcIik7XG52YXIgR2VuZXJpY0dGXzEgPSByZXF1aXJlKFwiLi4vLi4vY29tbW9uL3JlZWRzb2xvbW9uL0dlbmVyaWNHRlwiKTtcbnZhciBIaWdoTGV2ZWxFbmNvZGVyXzEgPSByZXF1aXJlKFwiLi9IaWdoTGV2ZWxFbmNvZGVyXCIpO1xudmFyIEludGVnZXJfMSA9IHJlcXVpcmUoXCIuLi8uLi91dGlsL0ludGVnZXJcIik7XG4vKlxuICogQ29weXJpZ2h0IDIwMTMgWlhpbmcgYXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8vIHBhY2thZ2UgY29tLmdvb2dsZS56eGluZy5henRlYy5lbmNvZGVyO1xuLy8gaW1wb3J0IGNvbS5nb29nbGUuenhpbmcuY29tbW9uLkJpdEFycmF5O1xuLy8gaW1wb3J0IGNvbS5nb29nbGUuenhpbmcuY29tbW9uLkJpdE1hdHJpeDtcbi8vIGltcG9ydCBjb20uZ29vZ2xlLnp4aW5nLmNvbW1vbi5yZWVkc29sb21vbi5HZW5lcmljR0Y7XG4vLyBpbXBvcnQgY29tLmdvb2dsZS56eGluZy5jb21tb24ucmVlZHNvbG9tb24uUmVlZFNvbG9tb25FbmNvZGVyO1xuLyoqXG4gKiBHZW5lcmF0ZXMgQXp0ZWMgMkQgYmFyY29kZXMuXG4gKlxuICogQGF1dGhvciBSdXN0YW0gQWJkdWxsYWV2XG4gKi9cbnZhciBFbmNvZGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEVuY29kZXIoKSB7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEVuY29kZXMgdGhlIGdpdmVuIGJpbmFyeSBjb250ZW50IGFzIGFuIEF6dGVjIHN5bWJvbFxuICAgICAqXG4gICAgICogQHBhcmFtIGRhdGEgaW5wdXQgZGF0YSBzdHJpbmdcbiAgICAgKiBAcmV0dXJuIEF6dGVjIHN5bWJvbCBtYXRyaXggd2l0aCBtZXRhZGF0YVxuICAgICAqL1xuICAgIEVuY29kZXIuZW5jb2RlQnl0ZXMgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICByZXR1cm4gRW5jb2Rlci5lbmNvZGUoZGF0YSwgRW5jb2Rlci5ERUZBVUxUX0VDX1BFUkNFTlQsIEVuY29kZXIuREVGQVVMVF9BWlRFQ19MQVlFUlMpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogRW5jb2RlcyB0aGUgZ2l2ZW4gYmluYXJ5IGNvbnRlbnQgYXMgYW4gQXp0ZWMgc3ltYm9sXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGF0YSBpbnB1dCBkYXRhIHN0cmluZ1xuICAgICAqIEBwYXJhbSBtaW5FQ0NQZXJjZW50IG1pbmltYWwgcGVyY2VudGFnZSBvZiBlcnJvciBjaGVjayB3b3JkcyAoQWNjb3JkaW5nIHRvIElTTy9JRUMgMjQ3Nzg6MjAwOCxcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICBhIG1pbmltdW0gb2YgMjMlICsgMyB3b3JkcyBpcyByZWNvbW1lbmRlZClcbiAgICAgKiBAcGFyYW0gdXNlclNwZWNpZmllZExheWVycyBpZiBub24temVybywgYSB1c2VyLXNwZWNpZmllZCB2YWx1ZSBmb3IgdGhlIG51bWJlciBvZiBsYXllcnNcbiAgICAgKiBAcmV0dXJuIEF6dGVjIHN5bWJvbCBtYXRyaXggd2l0aCBtZXRhZGF0YVxuICAgICAqL1xuICAgIEVuY29kZXIuZW5jb2RlID0gZnVuY3Rpb24gKGRhdGEsIG1pbkVDQ1BlcmNlbnQsIHVzZXJTcGVjaWZpZWRMYXllcnMpIHtcbiAgICAgICAgLy8gSGlnaC1sZXZlbCBlbmNvZGVcbiAgICAgICAgdmFyIGJpdHMgPSBuZXcgSGlnaExldmVsRW5jb2Rlcl8xLmRlZmF1bHQoZGF0YSkuZW5jb2RlKCk7XG4gICAgICAgIC8vIHN0dWZmIGJpdHMgYW5kIGNob29zZSBzeW1ib2wgc2l6ZVxuICAgICAgICB2YXIgZWNjQml0cyA9IEludGVnZXJfMS5kZWZhdWx0LnRydW5jRGl2aXNpb24oKGJpdHMuZ2V0U2l6ZSgpICogbWluRUNDUGVyY2VudCksIDEwMCkgKyAxMTtcbiAgICAgICAgdmFyIHRvdGFsU2l6ZUJpdHMgPSBiaXRzLmdldFNpemUoKSArIGVjY0JpdHM7XG4gICAgICAgIHZhciBjb21wYWN0O1xuICAgICAgICB2YXIgbGF5ZXJzO1xuICAgICAgICB2YXIgdG90YWxCaXRzSW5MYXllcjtcbiAgICAgICAgdmFyIHdvcmRTaXplO1xuICAgICAgICB2YXIgc3R1ZmZlZEJpdHM7XG4gICAgICAgIGlmICh1c2VyU3BlY2lmaWVkTGF5ZXJzICE9PSBFbmNvZGVyLkRFRkFVTFRfQVpURUNfTEFZRVJTKSB7XG4gICAgICAgICAgICBjb21wYWN0ID0gdXNlclNwZWNpZmllZExheWVycyA8IDA7XG4gICAgICAgICAgICBsYXllcnMgPSBNYXRoLmFicyh1c2VyU3BlY2lmaWVkTGF5ZXJzKTtcbiAgICAgICAgICAgIGlmIChsYXllcnMgPiAoY29tcGFjdCA/IEVuY29kZXIuTUFYX05CX0JJVFNfQ09NUEFDVCA6IEVuY29kZXIuTUFYX05CX0JJVFMpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoU3RyaW5nVXRpbHNfMS5kZWZhdWx0LmZvcm1hdCgnSWxsZWdhbCB2YWx1ZSAlcyBmb3IgbGF5ZXJzJywgdXNlclNwZWNpZmllZExheWVycykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdG90YWxCaXRzSW5MYXllciA9IEVuY29kZXIudG90YWxCaXRzSW5MYXllcihsYXllcnMsIGNvbXBhY3QpO1xuICAgICAgICAgICAgd29yZFNpemUgPSBFbmNvZGVyLldPUkRfU0laRVtsYXllcnNdO1xuICAgICAgICAgICAgdmFyIHVzYWJsZUJpdHNJbkxheWVycyA9IHRvdGFsQml0c0luTGF5ZXIgLSAodG90YWxCaXRzSW5MYXllciAlIHdvcmRTaXplKTtcbiAgICAgICAgICAgIHN0dWZmZWRCaXRzID0gRW5jb2Rlci5zdHVmZkJpdHMoYml0cywgd29yZFNpemUpO1xuICAgICAgICAgICAgaWYgKHN0dWZmZWRCaXRzLmdldFNpemUoKSArIGVjY0JpdHMgPiB1c2FibGVCaXRzSW5MYXllcnMpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgnRGF0YSB0byBsYXJnZSBmb3IgdXNlciBzcGVjaWZpZWQgbGF5ZXInKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjb21wYWN0ICYmIHN0dWZmZWRCaXRzLmdldFNpemUoKSA+IHdvcmRTaXplICogNjQpIHtcbiAgICAgICAgICAgICAgICAvLyBDb21wYWN0IGZvcm1hdCBvbmx5IGFsbG93cyA2NCBkYXRhIHdvcmRzLCB0aG91Z2ggQzQgY2FuIGhvbGQgbW9yZSB3b3JkcyB0aGFuIHRoYXRcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgnRGF0YSB0byBsYXJnZSBmb3IgdXNlciBzcGVjaWZpZWQgbGF5ZXInKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHdvcmRTaXplID0gMDtcbiAgICAgICAgICAgIHN0dWZmZWRCaXRzID0gbnVsbDtcbiAgICAgICAgICAgIC8vIFdlIGxvb2sgYXQgdGhlIHBvc3NpYmxlIHRhYmxlIHNpemVzIGluIHRoZSBvcmRlciBDb21wYWN0MSwgQ29tcGFjdDIsIENvbXBhY3QzLFxuICAgICAgICAgICAgLy8gQ29tcGFjdDQsIE5vcm1hbDQsLi4uICBOb3JtYWwoaSkgZm9yIGkgPCA0IGlzbid0IHR5cGljYWxseSB1c2VkIHNpbmNlIENvbXBhY3QoaSsxKVxuICAgICAgICAgICAgLy8gaXMgdGhlIHNhbWUgc2l6ZSwgYnV0IGhhcyBtb3JlIGRhdGEuXG4gICAgICAgICAgICBmb3IgKHZhciBpIC8qaW50Ki8gPSAwOzsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGkgPiBFbmNvZGVyLk1BWF9OQl9CSVRTKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0KCdEYXRhIHRvbyBsYXJnZSBmb3IgYW4gQXp0ZWMgY29kZScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb21wYWN0ID0gaSA8PSAzO1xuICAgICAgICAgICAgICAgIGxheWVycyA9IGNvbXBhY3QgPyBpICsgMSA6IGk7XG4gICAgICAgICAgICAgICAgdG90YWxCaXRzSW5MYXllciA9IEVuY29kZXIudG90YWxCaXRzSW5MYXllcihsYXllcnMsIGNvbXBhY3QpO1xuICAgICAgICAgICAgICAgIGlmICh0b3RhbFNpemVCaXRzID4gdG90YWxCaXRzSW5MYXllcikge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gW1JlXXN0dWZmIHRoZSBiaXRzIGlmIHRoaXMgaXMgdGhlIGZpcnN0IG9wcG9ydHVuaXR5LCBvciBpZiB0aGVcbiAgICAgICAgICAgICAgICAvLyB3b3JkU2l6ZSBoYXMgY2hhbmdlZFxuICAgICAgICAgICAgICAgIGlmIChzdHVmZmVkQml0cyA9PSBudWxsIHx8IHdvcmRTaXplICE9PSBFbmNvZGVyLldPUkRfU0laRVtsYXllcnNdKSB7XG4gICAgICAgICAgICAgICAgICAgIHdvcmRTaXplID0gRW5jb2Rlci5XT1JEX1NJWkVbbGF5ZXJzXTtcbiAgICAgICAgICAgICAgICAgICAgc3R1ZmZlZEJpdHMgPSBFbmNvZGVyLnN0dWZmQml0cyhiaXRzLCB3b3JkU2l6ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciB1c2FibGVCaXRzSW5MYXllcnMgPSB0b3RhbEJpdHNJbkxheWVyIC0gKHRvdGFsQml0c0luTGF5ZXIgJSB3b3JkU2l6ZSk7XG4gICAgICAgICAgICAgICAgaWYgKGNvbXBhY3QgJiYgc3R1ZmZlZEJpdHMuZ2V0U2l6ZSgpID4gd29yZFNpemUgKiA2NCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBDb21wYWN0IGZvcm1hdCBvbmx5IGFsbG93cyA2NCBkYXRhIHdvcmRzLCB0aG91Z2ggQzQgY2FuIGhvbGQgbW9yZSB3b3JkcyB0aGFuIHRoYXRcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzdHVmZmVkQml0cy5nZXRTaXplKCkgKyBlY2NCaXRzIDw9IHVzYWJsZUJpdHNJbkxheWVycykge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG1lc3NhZ2VCaXRzID0gRW5jb2Rlci5nZW5lcmF0ZUNoZWNrV29yZHMoc3R1ZmZlZEJpdHMsIHRvdGFsQml0c0luTGF5ZXIsIHdvcmRTaXplKTtcbiAgICAgICAgLy8gZ2VuZXJhdGUgbW9kZSBtZXNzYWdlXG4gICAgICAgIHZhciBtZXNzYWdlU2l6ZUluV29yZHMgPSBzdHVmZmVkQml0cy5nZXRTaXplKCkgLyB3b3JkU2l6ZTtcbiAgICAgICAgdmFyIG1vZGVNZXNzYWdlID0gRW5jb2Rlci5nZW5lcmF0ZU1vZGVNZXNzYWdlKGNvbXBhY3QsIGxheWVycywgbWVzc2FnZVNpemVJbldvcmRzKTtcbiAgICAgICAgLy8gYWxsb2NhdGUgc3ltYm9sXG4gICAgICAgIHZhciBiYXNlTWF0cml4U2l6ZSA9IChjb21wYWN0ID8gMTEgOiAxNCkgKyBsYXllcnMgKiA0OyAvLyBub3QgaW5jbHVkaW5nIGFsaWdubWVudCBsaW5lc1xuICAgICAgICB2YXIgYWxpZ25tZW50TWFwID0gbmV3IEludDMyQXJyYXkoYmFzZU1hdHJpeFNpemUpO1xuICAgICAgICB2YXIgbWF0cml4U2l6ZTtcbiAgICAgICAgaWYgKGNvbXBhY3QpIHtcbiAgICAgICAgICAgIC8vIG5vIGFsaWdubWVudCBtYXJrcyBpbiBjb21wYWN0IG1vZGUsIGFsaWdubWVudE1hcCBpcyBhIG5vLW9wXG4gICAgICAgICAgICBtYXRyaXhTaXplID0gYmFzZU1hdHJpeFNpemU7XG4gICAgICAgICAgICBmb3IgKHZhciBpIC8qaW50Ki8gPSAwOyBpIDwgYWxpZ25tZW50TWFwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgYWxpZ25tZW50TWFwW2ldID0gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG1hdHJpeFNpemUgPSBiYXNlTWF0cml4U2l6ZSArIDEgKyAyICogSW50ZWdlcl8xLmRlZmF1bHQudHJ1bmNEaXZpc2lvbigoSW50ZWdlcl8xLmRlZmF1bHQudHJ1bmNEaXZpc2lvbihiYXNlTWF0cml4U2l6ZSwgMikgLSAxKSwgMTUpO1xuICAgICAgICAgICAgdmFyIG9yaWdDZW50ZXIgPSBJbnRlZ2VyXzEuZGVmYXVsdC50cnVuY0RpdmlzaW9uKGJhc2VNYXRyaXhTaXplLCAyKTtcbiAgICAgICAgICAgIHZhciBjZW50ZXIgPSBJbnRlZ2VyXzEuZGVmYXVsdC50cnVuY0RpdmlzaW9uKG1hdHJpeFNpemUsIDIpO1xuICAgICAgICAgICAgZm9yICh2YXIgaSAvKmludCovID0gMDsgaSA8IG9yaWdDZW50ZXI7IGkrKykge1xuICAgICAgICAgICAgICAgIHZhciBuZXdPZmZzZXQgPSBpICsgSW50ZWdlcl8xLmRlZmF1bHQudHJ1bmNEaXZpc2lvbihpLCAxNSk7XG4gICAgICAgICAgICAgICAgYWxpZ25tZW50TWFwW29yaWdDZW50ZXIgLSBpIC0gMV0gPSBjZW50ZXIgLSBuZXdPZmZzZXQgLSAxO1xuICAgICAgICAgICAgICAgIGFsaWdubWVudE1hcFtvcmlnQ2VudGVyICsgaV0gPSBjZW50ZXIgKyBuZXdPZmZzZXQgKyAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHZhciBtYXRyaXggPSBuZXcgQml0TWF0cml4XzEuZGVmYXVsdChtYXRyaXhTaXplKTtcbiAgICAgICAgLy8gZHJhdyBkYXRhIGJpdHNcbiAgICAgICAgZm9yICh2YXIgaSAvKmludCovID0gMCwgcm93T2Zmc2V0ID0gMDsgaSA8IGxheWVyczsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgcm93U2l6ZSA9IChsYXllcnMgLSBpKSAqIDQgKyAoY29tcGFjdCA/IDkgOiAxMik7XG4gICAgICAgICAgICBmb3IgKHZhciBqIC8qaW50Ki8gPSAwOyBqIDwgcm93U2l6ZTsgaisrKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNvbHVtbk9mZnNldCA9IGogKiAyO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGsgLyppbnQqLyA9IDA7IGsgPCAyOyBrKyspIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1lc3NhZ2VCaXRzLmdldChyb3dPZmZzZXQgKyBjb2x1bW5PZmZzZXQgKyBrKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0cml4LnNldChhbGlnbm1lbnRNYXBbaSAqIDIgKyBrXSwgYWxpZ25tZW50TWFwW2kgKiAyICsgal0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlQml0cy5nZXQocm93T2Zmc2V0ICsgcm93U2l6ZSAqIDIgKyBjb2x1bW5PZmZzZXQgKyBrKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0cml4LnNldChhbGlnbm1lbnRNYXBbaSAqIDIgKyBqXSwgYWxpZ25tZW50TWFwW2Jhc2VNYXRyaXhTaXplIC0gMSAtIGkgKiAyIC0ga10pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlQml0cy5nZXQocm93T2Zmc2V0ICsgcm93U2l6ZSAqIDQgKyBjb2x1bW5PZmZzZXQgKyBrKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0cml4LnNldChhbGlnbm1lbnRNYXBbYmFzZU1hdHJpeFNpemUgLSAxIC0gaSAqIDIgLSBrXSwgYWxpZ25tZW50TWFwW2Jhc2VNYXRyaXhTaXplIC0gMSAtIGkgKiAyIC0gal0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlQml0cy5nZXQocm93T2Zmc2V0ICsgcm93U2l6ZSAqIDYgKyBjb2x1bW5PZmZzZXQgKyBrKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0cml4LnNldChhbGlnbm1lbnRNYXBbYmFzZU1hdHJpeFNpemUgLSAxIC0gaSAqIDIgLSBqXSwgYWxpZ25tZW50TWFwW2kgKiAyICsga10pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcm93T2Zmc2V0ICs9IHJvd1NpemUgKiA4O1xuICAgICAgICB9XG4gICAgICAgIC8vIGRyYXcgbW9kZSBtZXNzYWdlXG4gICAgICAgIEVuY29kZXIuZHJhd01vZGVNZXNzYWdlKG1hdHJpeCwgY29tcGFjdCwgbWF0cml4U2l6ZSwgbW9kZU1lc3NhZ2UpO1xuICAgICAgICAvLyBkcmF3IGFsaWdubWVudCBtYXJrc1xuICAgICAgICBpZiAoY29tcGFjdCkge1xuICAgICAgICAgICAgRW5jb2Rlci5kcmF3QnVsbHNFeWUobWF0cml4LCBJbnRlZ2VyXzEuZGVmYXVsdC50cnVuY0RpdmlzaW9uKG1hdHJpeFNpemUsIDIpLCA1KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIEVuY29kZXIuZHJhd0J1bGxzRXllKG1hdHJpeCwgSW50ZWdlcl8xLmRlZmF1bHQudHJ1bmNEaXZpc2lvbihtYXRyaXhTaXplLCAyKSwgNyk7XG4gICAgICAgICAgICBmb3IgKHZhciBpIC8qaW50Ki8gPSAwLCBqID0gMDsgaSA8IEludGVnZXJfMS5kZWZhdWx0LnRydW5jRGl2aXNpb24oYmFzZU1hdHJpeFNpemUsIDIpIC0gMTsgaSArPSAxNSwgaiArPSAxNikge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGsgLyppbnQqLyA9IEludGVnZXJfMS5kZWZhdWx0LnRydW5jRGl2aXNpb24obWF0cml4U2l6ZSwgMikgJiAxOyBrIDwgbWF0cml4U2l6ZTsgayArPSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIG1hdHJpeC5zZXQoSW50ZWdlcl8xLmRlZmF1bHQudHJ1bmNEaXZpc2lvbihtYXRyaXhTaXplLCAyKSAtIGosIGspO1xuICAgICAgICAgICAgICAgICAgICBtYXRyaXguc2V0KEludGVnZXJfMS5kZWZhdWx0LnRydW5jRGl2aXNpb24obWF0cml4U2l6ZSwgMikgKyBqLCBrKTtcbiAgICAgICAgICAgICAgICAgICAgbWF0cml4LnNldChrLCBJbnRlZ2VyXzEuZGVmYXVsdC50cnVuY0RpdmlzaW9uKG1hdHJpeFNpemUsIDIpIC0gaik7XG4gICAgICAgICAgICAgICAgICAgIG1hdHJpeC5zZXQoaywgSW50ZWdlcl8xLmRlZmF1bHQudHJ1bmNEaXZpc2lvbihtYXRyaXhTaXplLCAyKSArIGopO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgYXp0ZWMgPSBuZXcgQXp0ZWNDb2RlXzEuZGVmYXVsdCgpO1xuICAgICAgICBhenRlYy5zZXRDb21wYWN0KGNvbXBhY3QpO1xuICAgICAgICBhenRlYy5zZXRTaXplKG1hdHJpeFNpemUpO1xuICAgICAgICBhenRlYy5zZXRMYXllcnMobGF5ZXJzKTtcbiAgICAgICAgYXp0ZWMuc2V0Q29kZVdvcmRzKG1lc3NhZ2VTaXplSW5Xb3Jkcyk7XG4gICAgICAgIGF6dGVjLnNldE1hdHJpeChtYXRyaXgpO1xuICAgICAgICByZXR1cm4gYXp0ZWM7XG4gICAgfTtcbiAgICBFbmNvZGVyLmRyYXdCdWxsc0V5ZSA9IGZ1bmN0aW9uIChtYXRyaXgsIGNlbnRlciwgc2l6ZSkge1xuICAgICAgICBmb3IgKHZhciBpIC8qaW50Ki8gPSAwOyBpIDwgc2l6ZTsgaSArPSAyKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqIC8qaW50Ki8gPSBjZW50ZXIgLSBpOyBqIDw9IGNlbnRlciArIGk7IGorKykge1xuICAgICAgICAgICAgICAgIG1hdHJpeC5zZXQoaiwgY2VudGVyIC0gaSk7XG4gICAgICAgICAgICAgICAgbWF0cml4LnNldChqLCBjZW50ZXIgKyBpKTtcbiAgICAgICAgICAgICAgICBtYXRyaXguc2V0KGNlbnRlciAtIGksIGopO1xuICAgICAgICAgICAgICAgIG1hdHJpeC5zZXQoY2VudGVyICsgaSwgaik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbWF0cml4LnNldChjZW50ZXIgLSBzaXplLCBjZW50ZXIgLSBzaXplKTtcbiAgICAgICAgbWF0cml4LnNldChjZW50ZXIgLSBzaXplICsgMSwgY2VudGVyIC0gc2l6ZSk7XG4gICAgICAgIG1hdHJpeC5zZXQoY2VudGVyIC0gc2l6ZSwgY2VudGVyIC0gc2l6ZSArIDEpO1xuICAgICAgICBtYXRyaXguc2V0KGNlbnRlciArIHNpemUsIGNlbnRlciAtIHNpemUpO1xuICAgICAgICBtYXRyaXguc2V0KGNlbnRlciArIHNpemUsIGNlbnRlciAtIHNpemUgKyAxKTtcbiAgICAgICAgbWF0cml4LnNldChjZW50ZXIgKyBzaXplLCBjZW50ZXIgKyBzaXplIC0gMSk7XG4gICAgfTtcbiAgICBFbmNvZGVyLmdlbmVyYXRlTW9kZU1lc3NhZ2UgPSBmdW5jdGlvbiAoY29tcGFjdCwgbGF5ZXJzLCBtZXNzYWdlU2l6ZUluV29yZHMpIHtcbiAgICAgICAgdmFyIG1vZGVNZXNzYWdlID0gbmV3IEJpdEFycmF5XzEuZGVmYXVsdCgpO1xuICAgICAgICBpZiAoY29tcGFjdCkge1xuICAgICAgICAgICAgbW9kZU1lc3NhZ2UuYXBwZW5kQml0cyhsYXllcnMgLSAxLCAyKTtcbiAgICAgICAgICAgIG1vZGVNZXNzYWdlLmFwcGVuZEJpdHMobWVzc2FnZVNpemVJbldvcmRzIC0gMSwgNik7XG4gICAgICAgICAgICBtb2RlTWVzc2FnZSA9IEVuY29kZXIuZ2VuZXJhdGVDaGVja1dvcmRzKG1vZGVNZXNzYWdlLCAyOCwgNCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBtb2RlTWVzc2FnZS5hcHBlbmRCaXRzKGxheWVycyAtIDEsIDUpO1xuICAgICAgICAgICAgbW9kZU1lc3NhZ2UuYXBwZW5kQml0cyhtZXNzYWdlU2l6ZUluV29yZHMgLSAxLCAxMSk7XG4gICAgICAgICAgICBtb2RlTWVzc2FnZSA9IEVuY29kZXIuZ2VuZXJhdGVDaGVja1dvcmRzKG1vZGVNZXNzYWdlLCA0MCwgNCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1vZGVNZXNzYWdlO1xuICAgIH07XG4gICAgRW5jb2Rlci5kcmF3TW9kZU1lc3NhZ2UgPSBmdW5jdGlvbiAobWF0cml4LCBjb21wYWN0LCBtYXRyaXhTaXplLCBtb2RlTWVzc2FnZSkge1xuICAgICAgICB2YXIgY2VudGVyID0gSW50ZWdlcl8xLmRlZmF1bHQudHJ1bmNEaXZpc2lvbihtYXRyaXhTaXplLCAyKTtcbiAgICAgICAgaWYgKGNvbXBhY3QpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGkgLyppbnQqLyA9IDA7IGkgPCA3OyBpKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgb2Zmc2V0ID0gY2VudGVyIC0gMyArIGk7XG4gICAgICAgICAgICAgICAgaWYgKG1vZGVNZXNzYWdlLmdldChpKSkge1xuICAgICAgICAgICAgICAgICAgICBtYXRyaXguc2V0KG9mZnNldCwgY2VudGVyIC0gNSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChtb2RlTWVzc2FnZS5nZXQoaSArIDcpKSB7XG4gICAgICAgICAgICAgICAgICAgIG1hdHJpeC5zZXQoY2VudGVyICsgNSwgb2Zmc2V0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG1vZGVNZXNzYWdlLmdldCgyMCAtIGkpKSB7XG4gICAgICAgICAgICAgICAgICAgIG1hdHJpeC5zZXQob2Zmc2V0LCBjZW50ZXIgKyA1KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG1vZGVNZXNzYWdlLmdldCgyNyAtIGkpKSB7XG4gICAgICAgICAgICAgICAgICAgIG1hdHJpeC5zZXQoY2VudGVyIC0gNSwgb2Zmc2V0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpIC8qaW50Ki8gPSAwOyBpIDwgMTA7IGkrKykge1xuICAgICAgICAgICAgICAgIHZhciBvZmZzZXQgPSBjZW50ZXIgLSA1ICsgaSArIEludGVnZXJfMS5kZWZhdWx0LnRydW5jRGl2aXNpb24oaSwgNSk7XG4gICAgICAgICAgICAgICAgaWYgKG1vZGVNZXNzYWdlLmdldChpKSkge1xuICAgICAgICAgICAgICAgICAgICBtYXRyaXguc2V0KG9mZnNldCwgY2VudGVyIC0gNyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChtb2RlTWVzc2FnZS5nZXQoaSArIDEwKSkge1xuICAgICAgICAgICAgICAgICAgICBtYXRyaXguc2V0KGNlbnRlciArIDcsIG9mZnNldCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChtb2RlTWVzc2FnZS5nZXQoMjkgLSBpKSkge1xuICAgICAgICAgICAgICAgICAgICBtYXRyaXguc2V0KG9mZnNldCwgY2VudGVyICsgNyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChtb2RlTWVzc2FnZS5nZXQoMzkgLSBpKSkge1xuICAgICAgICAgICAgICAgICAgICBtYXRyaXguc2V0KGNlbnRlciAtIDcsIG9mZnNldCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBFbmNvZGVyLmdlbmVyYXRlQ2hlY2tXb3JkcyA9IGZ1bmN0aW9uIChiaXRBcnJheSwgdG90YWxCaXRzLCB3b3JkU2l6ZSkge1xuICAgICAgICB2YXIgZV8xLCBfYTtcbiAgICAgICAgLy8gYml0QXJyYXkgaXMgZ3VhcmFudGVlZCB0byBiZSBhIG11bHRpcGxlIG9mIHRoZSB3b3JkU2l6ZSwgc28gbm8gcGFkZGluZyBuZWVkZWRcbiAgICAgICAgdmFyIG1lc3NhZ2VTaXplSW5Xb3JkcyA9IGJpdEFycmF5LmdldFNpemUoKSAvIHdvcmRTaXplO1xuICAgICAgICB2YXIgcnMgPSBuZXcgUmVlZFNvbG9tb25FbmNvZGVyXzEuZGVmYXVsdChFbmNvZGVyLmdldEdGKHdvcmRTaXplKSk7XG4gICAgICAgIHZhciB0b3RhbFdvcmRzID0gSW50ZWdlcl8xLmRlZmF1bHQudHJ1bmNEaXZpc2lvbih0b3RhbEJpdHMsIHdvcmRTaXplKTtcbiAgICAgICAgdmFyIG1lc3NhZ2VXb3JkcyA9IEVuY29kZXIuYml0c1RvV29yZHMoYml0QXJyYXksIHdvcmRTaXplLCB0b3RhbFdvcmRzKTtcbiAgICAgICAgcnMuZW5jb2RlKG1lc3NhZ2VXb3JkcywgdG90YWxXb3JkcyAtIG1lc3NhZ2VTaXplSW5Xb3Jkcyk7XG4gICAgICAgIHZhciBzdGFydFBhZCA9IHRvdGFsQml0cyAlIHdvcmRTaXplO1xuICAgICAgICB2YXIgbWVzc2FnZUJpdHMgPSBuZXcgQml0QXJyYXlfMS5kZWZhdWx0KCk7XG4gICAgICAgIG1lc3NhZ2VCaXRzLmFwcGVuZEJpdHMoMCwgc3RhcnRQYWQpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yICh2YXIgX2IgPSBfX3ZhbHVlcyhBcnJheS5mcm9tKG1lc3NhZ2VXb3JkcykpLCBfYyA9IF9iLm5leHQoKTsgIV9jLmRvbmU7IF9jID0gX2IubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2VXb3JkID0gX2MudmFsdWUgLyo6IGludCovO1xuICAgICAgICAgICAgICAgIG1lc3NhZ2VCaXRzLmFwcGVuZEJpdHMobWVzc2FnZVdvcmQsIHdvcmRTaXplKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtZXNzYWdlQml0cztcbiAgICB9O1xuICAgIEVuY29kZXIuYml0c1RvV29yZHMgPSBmdW5jdGlvbiAoc3R1ZmZlZEJpdHMsIHdvcmRTaXplLCB0b3RhbFdvcmRzKSB7XG4gICAgICAgIHZhciBtZXNzYWdlID0gbmV3IEludDMyQXJyYXkodG90YWxXb3Jkcyk7XG4gICAgICAgIHZhciBpO1xuICAgICAgICB2YXIgbjtcbiAgICAgICAgZm9yIChpID0gMCwgbiA9IHN0dWZmZWRCaXRzLmdldFNpemUoKSAvIHdvcmRTaXplOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgdmFsdWUgPSAwO1xuICAgICAgICAgICAgZm9yICh2YXIgaiAvKmludCovID0gMDsgaiA8IHdvcmRTaXplOyBqKyspIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSB8PSBzdHVmZmVkQml0cy5nZXQoaSAqIHdvcmRTaXplICsgaikgPyAoMSA8PCB3b3JkU2l6ZSAtIGogLSAxKSA6IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBtZXNzYWdlW2ldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1lc3NhZ2U7XG4gICAgfTtcbiAgICBFbmNvZGVyLmdldEdGID0gZnVuY3Rpb24gKHdvcmRTaXplKSB7XG4gICAgICAgIHN3aXRjaCAod29yZFNpemUpIHtcbiAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICByZXR1cm4gR2VuZXJpY0dGXzEuZGVmYXVsdC5BWlRFQ19QQVJBTTtcbiAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICByZXR1cm4gR2VuZXJpY0dGXzEuZGVmYXVsdC5BWlRFQ19EQVRBXzY7XG4gICAgICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEdlbmVyaWNHRl8xLmRlZmF1bHQuQVpURUNfREFUQV84O1xuICAgICAgICAgICAgY2FzZSAxMDpcbiAgICAgICAgICAgICAgICByZXR1cm4gR2VuZXJpY0dGXzEuZGVmYXVsdC5BWlRFQ19EQVRBXzEwO1xuICAgICAgICAgICAgY2FzZSAxMjpcbiAgICAgICAgICAgICAgICByZXR1cm4gR2VuZXJpY0dGXzEuZGVmYXVsdC5BWlRFQ19EQVRBXzEyO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXzEuZGVmYXVsdCgnVW5zdXBwb3J0ZWQgd29yZCBzaXplICcgKyB3b3JkU2l6ZSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEVuY29kZXIuc3R1ZmZCaXRzID0gZnVuY3Rpb24gKGJpdHMsIHdvcmRTaXplKSB7XG4gICAgICAgIHZhciBvdXQgPSBuZXcgQml0QXJyYXlfMS5kZWZhdWx0KCk7XG4gICAgICAgIHZhciBuID0gYml0cy5nZXRTaXplKCk7XG4gICAgICAgIHZhciBtYXNrID0gKDEgPDwgd29yZFNpemUpIC0gMjtcbiAgICAgICAgZm9yICh2YXIgaSAvKmludCovID0gMDsgaSA8IG47IGkgKz0gd29yZFNpemUpIHtcbiAgICAgICAgICAgIHZhciB3b3JkID0gMDtcbiAgICAgICAgICAgIGZvciAodmFyIGogLyppbnQqLyA9IDA7IGogPCB3b3JkU2l6ZTsgaisrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGkgKyBqID49IG4gfHwgYml0cy5nZXQoaSArIGopKSB7XG4gICAgICAgICAgICAgICAgICAgIHdvcmQgfD0gMSA8PCAod29yZFNpemUgLSAxIC0gaik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCh3b3JkICYgbWFzaykgPT09IG1hc2spIHtcbiAgICAgICAgICAgICAgICBvdXQuYXBwZW5kQml0cyh3b3JkICYgbWFzaywgd29yZFNpemUpO1xuICAgICAgICAgICAgICAgIGktLTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCh3b3JkICYgbWFzaykgPT09IDApIHtcbiAgICAgICAgICAgICAgICBvdXQuYXBwZW5kQml0cyh3b3JkIHwgMSwgd29yZFNpemUpO1xuICAgICAgICAgICAgICAgIGktLTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIG91dC5hcHBlbmRCaXRzKHdvcmQsIHdvcmRTaXplKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3V0O1xuICAgIH07XG4gICAgRW5jb2Rlci50b3RhbEJpdHNJbkxheWVyID0gZnVuY3Rpb24gKGxheWVycywgY29tcGFjdCkge1xuICAgICAgICByZXR1cm4gKChjb21wYWN0ID8gODggOiAxMTIpICsgMTYgKiBsYXllcnMpICogbGF5ZXJzO1xuICAgIH07XG4gICAgRW5jb2Rlci5ERUZBVUxUX0VDX1BFUkNFTlQgPSAzMzsgLy8gZGVmYXVsdCBtaW5pbWFsIHBlcmNlbnRhZ2Ugb2YgZXJyb3IgY2hlY2sgd29yZHNcbiAgICBFbmNvZGVyLkRFRkFVTFRfQVpURUNfTEFZRVJTID0gMDtcbiAgICBFbmNvZGVyLk1BWF9OQl9CSVRTID0gMzI7XG4gICAgRW5jb2Rlci5NQVhfTkJfQklUU19DT01QQUNUID0gNDtcbiAgICBFbmNvZGVyLldPUkRfU0laRSA9IEludDMyQXJyYXkuZnJvbShbXG4gICAgICAgIDQsIDYsIDYsIDgsIDgsIDgsIDgsIDgsIDgsIDEwLCAxMCwgMTAsIDEwLCAxMCwgMTAsIDEwLCAxMCwgMTAsIDEwLCAxMCwgMTAsIDEwLCAxMCxcbiAgICAgICAgMTIsIDEyLCAxMiwgMTIsIDEyLCAxMiwgMTIsIDEyLCAxMiwgMTJcbiAgICBdKTtcbiAgICByZXR1cm4gRW5jb2Rlcjtcbn0oKSk7XG5leHBvcnRzLmRlZmF1bHQgPSBFbmNvZGVyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RW5jb2Rlci5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbi8qXG4qIENvcHlyaWdodCAyMDEzIFpYaW5nIGF1dGhvcnNcbipcbiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbipcbiogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbipcbiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4qIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4qIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8vIHBhY2thZ2UgY29tLmdvb2dsZS56eGluZy5henRlYztcbi8vIGltcG9ydCBjb20uZ29vZ2xlLnp4aW5nLkJhcmNvZGVGb3JtYXQ7XG52YXIgQmFyY29kZUZvcm1hdF8xID0gcmVxdWlyZShcIi4uL0JhcmNvZGVGb3JtYXRcIik7XG4vLyBpbXBvcnQgY29tLmdvb2dsZS56eGluZy5FbmNvZGVIaW50VHlwZTtcbnZhciBFbmNvZGVIaW50VHlwZV8xID0gcmVxdWlyZShcIi4uL0VuY29kZUhpbnRUeXBlXCIpO1xuLy8gaW1wb3J0IGNvbS5nb29nbGUuenhpbmcuYXp0ZWMuZW5jb2Rlci5FbmNvZGVyO1xudmFyIEVuY29kZXJfMSA9IHJlcXVpcmUoXCIuL2VuY29kZXIvRW5jb2RlclwiKTtcbi8vIGltcG9ydCBjb20uZ29vZ2xlLnp4aW5nLmNvbW1vbi5CaXRNYXRyaXg7XG52YXIgQml0TWF0cml4XzEgPSByZXF1aXJlKFwiLi4vY29tbW9uL0JpdE1hdHJpeFwiKTtcbi8vIGltcG9ydCBqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXQ7XG52YXIgQ2hhcnNldF8xID0gcmVxdWlyZShcIi4uL3V0aWwvQ2hhcnNldFwiKTtcbi8vIGltcG9ydCBqYXZhLm5pby5jaGFyc2V0LlN0YW5kYXJkQ2hhcnNldHM7XG52YXIgU3RhbmRhcmRDaGFyc2V0c18xID0gcmVxdWlyZShcIi4uL3V0aWwvU3RhbmRhcmRDaGFyc2V0c1wiKTtcbi8vIGltcG9ydCBqYXZhLnV0aWwuTWFwO1xudmFyIEludGVnZXJfMSA9IHJlcXVpcmUoXCIuLi91dGlsL0ludGVnZXJcIik7XG52YXIgSWxsZWdhbFN0YXRlRXhjZXB0aW9uXzEgPSByZXF1aXJlKFwiLi4vSWxsZWdhbFN0YXRlRXhjZXB0aW9uXCIpO1xudmFyIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4uL0lsbGVnYWxBcmd1bWVudEV4Y2VwdGlvblwiKTtcbnZhciBTdHJpbmdVdGlsc18xID0gcmVxdWlyZShcIi4uL2NvbW1vbi9TdHJpbmdVdGlsc1wiKTtcbi8qKlxuICogUmVuZGVycyBhbiBBenRlYyBjb2RlIGFzIGEge0BsaW5rIEJpdE1hdHJpeH0uXG4gKi9cbnZhciBBenRlY1dyaXRlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBBenRlY1dyaXRlcigpIHtcbiAgICB9XG4gICAgLy8gQE92ZXJyaWRlXG4gICAgQXp0ZWNXcml0ZXIucHJvdG90eXBlLmVuY29kZSA9IGZ1bmN0aW9uIChjb250ZW50cywgZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVuY29kZVdpdGhIaW50cyhjb250ZW50cywgZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBudWxsKTtcbiAgICB9O1xuICAgIC8vIEBPdmVycmlkZVxuICAgIEF6dGVjV3JpdGVyLnByb3RvdHlwZS5lbmNvZGVXaXRoSGludHMgPSBmdW5jdGlvbiAoY29udGVudHMsIGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgaGludHMpIHtcbiAgICAgICAgdmFyIGNoYXJzZXQgPSBTdGFuZGFyZENoYXJzZXRzXzEuZGVmYXVsdC5JU09fODg1OV8xO1xuICAgICAgICB2YXIgZWNjUGVyY2VudCA9IEVuY29kZXJfMS5kZWZhdWx0LkRFRkFVTFRfRUNfUEVSQ0VOVDtcbiAgICAgICAgdmFyIGxheWVycyA9IEVuY29kZXJfMS5kZWZhdWx0LkRFRkFVTFRfQVpURUNfTEFZRVJTO1xuICAgICAgICBpZiAoaGludHMgIT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKGhpbnRzLmhhcyhFbmNvZGVIaW50VHlwZV8xLmRlZmF1bHQuQ0hBUkFDVEVSX1NFVCkpIHtcbiAgICAgICAgICAgICAgICBjaGFyc2V0ID0gQ2hhcnNldF8xLmRlZmF1bHQuZm9yTmFtZShoaW50cy5nZXQoRW5jb2RlSGludFR5cGVfMS5kZWZhdWx0LkNIQVJBQ1RFUl9TRVQpLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGhpbnRzLmhhcyhFbmNvZGVIaW50VHlwZV8xLmRlZmF1bHQuRVJST1JfQ09SUkVDVElPTikpIHtcbiAgICAgICAgICAgICAgICBlY2NQZXJjZW50ID0gSW50ZWdlcl8xLmRlZmF1bHQucGFyc2VJbnQoaGludHMuZ2V0KEVuY29kZUhpbnRUeXBlXzEuZGVmYXVsdC5FUlJPUl9DT1JSRUNUSU9OKS50b1N0cmluZygpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChoaW50cy5oYXMoRW5jb2RlSGludFR5cGVfMS5kZWZhdWx0LkFaVEVDX0xBWUVSUykpIHtcbiAgICAgICAgICAgICAgICBsYXllcnMgPSBJbnRlZ2VyXzEuZGVmYXVsdC5wYXJzZUludChoaW50cy5nZXQoRW5jb2RlSGludFR5cGVfMS5kZWZhdWx0LkFaVEVDX0xBWUVSUykudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEF6dGVjV3JpdGVyLmVuY29kZUxheWVycyhjb250ZW50cywgZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBjaGFyc2V0LCBlY2NQZXJjZW50LCBsYXllcnMpO1xuICAgIH07XG4gICAgQXp0ZWNXcml0ZXIuZW5jb2RlTGF5ZXJzID0gZnVuY3Rpb24gKGNvbnRlbnRzLCBmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGNoYXJzZXQsIGVjY1BlcmNlbnQsIGxheWVycykge1xuICAgICAgICBpZiAoZm9ybWF0ICE9PSBCYXJjb2RlRm9ybWF0XzEuZGVmYXVsdC5BWlRFQykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQoJ0NhbiBvbmx5IGVuY29kZSBBWlRFQywgYnV0IGdvdCAnICsgZm9ybWF0KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYXp0ZWMgPSBFbmNvZGVyXzEuZGVmYXVsdC5lbmNvZGUoU3RyaW5nVXRpbHNfMS5kZWZhdWx0LmdldEJ5dGVzKGNvbnRlbnRzLCBjaGFyc2V0KSwgZWNjUGVyY2VudCwgbGF5ZXJzKTtcbiAgICAgICAgcmV0dXJuIEF6dGVjV3JpdGVyLnJlbmRlclJlc3VsdChhenRlYywgd2lkdGgsIGhlaWdodCk7XG4gICAgfTtcbiAgICBBenRlY1dyaXRlci5yZW5kZXJSZXN1bHQgPSBmdW5jdGlvbiAoY29kZSwgd2lkdGgsIGhlaWdodCkge1xuICAgICAgICB2YXIgaW5wdXQgPSBjb2RlLmdldE1hdHJpeCgpO1xuICAgICAgICBpZiAoaW5wdXQgPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbl8xLmRlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgaW5wdXRXaWR0aCA9IGlucHV0LmdldFdpZHRoKCk7XG4gICAgICAgIHZhciBpbnB1dEhlaWdodCA9IGlucHV0LmdldEhlaWdodCgpO1xuICAgICAgICB2YXIgb3V0cHV0V2lkdGggPSBNYXRoLm1heCh3aWR0aCwgaW5wdXRXaWR0aCk7XG4gICAgICAgIHZhciBvdXRwdXRIZWlnaHQgPSBNYXRoLm1heChoZWlnaHQsIGlucHV0SGVpZ2h0KTtcbiAgICAgICAgdmFyIG11bHRpcGxlID0gTWF0aC5taW4ob3V0cHV0V2lkdGggLyBpbnB1dFdpZHRoLCBvdXRwdXRIZWlnaHQgLyBpbnB1dEhlaWdodCk7XG4gICAgICAgIHZhciBsZWZ0UGFkZGluZyA9IChvdXRwdXRXaWR0aCAtIChpbnB1dFdpZHRoICogbXVsdGlwbGUpKSAvIDI7XG4gICAgICAgIHZhciB0b3BQYWRkaW5nID0gKG91dHB1dEhlaWdodCAtIChpbnB1dEhlaWdodCAqIG11bHRpcGxlKSkgLyAyO1xuICAgICAgICB2YXIgb3V0cHV0ID0gbmV3IEJpdE1hdHJpeF8xLmRlZmF1bHQob3V0cHV0V2lkdGgsIG91dHB1dEhlaWdodCk7XG4gICAgICAgIGZvciAodmFyIGlucHV0WSAvKmludCovID0gMCwgb3V0cHV0WSA9IHRvcFBhZGRpbmc7IGlucHV0WSA8IGlucHV0SGVpZ2h0OyBpbnB1dFkrKywgb3V0cHV0WSArPSBtdWx0aXBsZSkge1xuICAgICAgICAgICAgLy8gV3JpdGUgdGhlIGNvbnRlbnRzIG9mIHRoaXMgcm93IG9mIHRoZSBiYXJjb2RlXG4gICAgICAgICAgICBmb3IgKHZhciBpbnB1dFggLyppbnQqLyA9IDAsIG91dHB1dFggPSBsZWZ0UGFkZGluZzsgaW5wdXRYIDwgaW5wdXRXaWR0aDsgaW5wdXRYKyssIG91dHB1dFggKz0gbXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQuZ2V0KGlucHV0WCwgaW5wdXRZKSkge1xuICAgICAgICAgICAgICAgICAgICBvdXRwdXQuc2V0UmVnaW9uKG91dHB1dFgsIG91dHB1dFksIG11bHRpcGxlLCBtdWx0aXBsZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvdXRwdXQ7XG4gICAgfTtcbiAgICByZXR1cm4gQXp0ZWNXcml0ZXI7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gQXp0ZWNXcml0ZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BenRlY1dyaXRlci5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2NyZWF0ZUJpbmRpbmcgPSAodGhpcyAmJiB0aGlzLl9fY3JlYXRlQmluZGluZykgfHwgKE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBrMiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbVtrXTsgfSB9KTtcbn0pIDogKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcbiAgICBvW2syXSA9IG1ba107XG59KSk7XG52YXIgX19leHBvcnRTdGFyID0gKHRoaXMgJiYgdGhpcy5fX2V4cG9ydFN0YXIpIHx8IGZ1bmN0aW9uKG0sIGV4cG9ydHMpIHtcbiAgICBmb3IgKHZhciBwIGluIG0pIGlmIChwICE9PSBcImRlZmF1bHRcIiAmJiAhZXhwb3J0cy5oYXNPd25Qcm9wZXJ0eShwKSkgX19jcmVhdGVCaW5kaW5nKGV4cG9ydHMsIG0sIHApO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbl9fZXhwb3J0U3RhcihyZXF1aXJlKFwiLi9icm93c2VyXCIpLCBleHBvcnRzKTtcbi8vIEV4Y2VwdGlvbnNcbnZhciBBcmd1bWVudEV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4vY29yZS9Bcmd1bWVudEV4Y2VwdGlvblwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkFyZ3VtZW50RXhjZXB0aW9uXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBBcmd1bWVudEV4Y2VwdGlvbl8xLmRlZmF1bHQ7IH0gfSk7XG52YXIgQXJpdGhtZXRpY0V4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4vY29yZS9Bcml0aG1ldGljRXhjZXB0aW9uXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiQXJpdGhtZXRpY0V4Y2VwdGlvblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gQXJpdGhtZXRpY0V4Y2VwdGlvbl8xLmRlZmF1bHQ7IH0gfSk7XG52YXIgQ2hlY2tzdW1FeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuL2NvcmUvQ2hlY2tzdW1FeGNlcHRpb25cIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJDaGVja3N1bUV4Y2VwdGlvblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gQ2hlY2tzdW1FeGNlcHRpb25fMS5kZWZhdWx0OyB9IH0pO1xudmFyIEV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4vY29yZS9FeGNlcHRpb25cIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJFeGNlcHRpb25cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIEV4Y2VwdGlvbl8xLmRlZmF1bHQ7IH0gfSk7XG52YXIgRm9ybWF0RXhjZXB0aW9uXzEgPSByZXF1aXJlKFwiLi9jb3JlL0Zvcm1hdEV4Y2VwdGlvblwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkZvcm1hdEV4Y2VwdGlvblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gRm9ybWF0RXhjZXB0aW9uXzEuZGVmYXVsdDsgfSB9KTtcbnZhciBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuL2NvcmUvSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb25fMS5kZWZhdWx0OyB9IH0pO1xudmFyIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4vY29yZS9JbGxlZ2FsU3RhdGVFeGNlcHRpb25cIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJJbGxlZ2FsU3RhdGVFeGNlcHRpb25cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbl8xLmRlZmF1bHQ7IH0gfSk7XG52YXIgTm90Rm91bmRFeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuL2NvcmUvTm90Rm91bmRFeGNlcHRpb25cIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJOb3RGb3VuZEV4Y2VwdGlvblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gTm90Rm91bmRFeGNlcHRpb25fMS5kZWZhdWx0OyB9IH0pO1xudmFyIFJlYWRlckV4Y2VwdGlvbl8xID0gcmVxdWlyZShcIi4vY29yZS9SZWFkZXJFeGNlcHRpb25cIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJSZWFkZXJFeGNlcHRpb25cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFJlYWRlckV4Y2VwdGlvbl8xLmRlZmF1bHQ7IH0gfSk7XG52YXIgUmVlZFNvbG9tb25FeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuL2NvcmUvUmVlZFNvbG9tb25FeGNlcHRpb25cIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJSZWVkU29sb21vbkV4Y2VwdGlvblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gUmVlZFNvbG9tb25FeGNlcHRpb25fMS5kZWZhdWx0OyB9IH0pO1xudmFyIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uXzEgPSByZXF1aXJlKFwiLi9jb3JlL1Vuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb25cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uXzEuZGVmYXVsdDsgfSB9KTtcbnZhciBXcml0ZXJFeGNlcHRpb25fMSA9IHJlcXVpcmUoXCIuL2NvcmUvV3JpdGVyRXhjZXB0aW9uXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiV3JpdGVyRXhjZXB0aW9uXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBXcml0ZXJFeGNlcHRpb25fMS5kZWZhdWx0OyB9IH0pO1xuLy8gY29yZVxudmFyIEJhcmNvZGVGb3JtYXRfMSA9IHJlcXVpcmUoXCIuL2NvcmUvQmFyY29kZUZvcm1hdFwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkJhcmNvZGVGb3JtYXRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIEJhcmNvZGVGb3JtYXRfMS5kZWZhdWx0OyB9IH0pO1xudmFyIEJpbmFyaXplcl8xID0gcmVxdWlyZShcIi4vY29yZS9CaW5hcml6ZXJcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJCaW5hcml6ZXJcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIEJpbmFyaXplcl8xLmRlZmF1bHQ7IH0gfSk7XG52YXIgQmluYXJ5Qml0bWFwXzEgPSByZXF1aXJlKFwiLi9jb3JlL0JpbmFyeUJpdG1hcFwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkJpbmFyeUJpdG1hcFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gQmluYXJ5Qml0bWFwXzEuZGVmYXVsdDsgfSB9KTtcbnZhciBEZWNvZGVIaW50VHlwZV8xID0gcmVxdWlyZShcIi4vY29yZS9EZWNvZGVIaW50VHlwZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkRlY29kZUhpbnRUeXBlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBEZWNvZGVIaW50VHlwZV8xLmRlZmF1bHQ7IH0gfSk7XG52YXIgSW52ZXJ0ZWRMdW1pbmFuY2VTb3VyY2VfMSA9IHJlcXVpcmUoXCIuL2NvcmUvSW52ZXJ0ZWRMdW1pbmFuY2VTb3VyY2VcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJJbnZlcnRlZEx1bWluYW5jZVNvdXJjZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gSW52ZXJ0ZWRMdW1pbmFuY2VTb3VyY2VfMS5kZWZhdWx0OyB9IH0pO1xudmFyIEx1bWluYW5jZVNvdXJjZV8xID0gcmVxdWlyZShcIi4vY29yZS9MdW1pbmFuY2VTb3VyY2VcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJMdW1pbmFuY2VTb3VyY2VcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIEx1bWluYW5jZVNvdXJjZV8xLmRlZmF1bHQ7IH0gfSk7XG52YXIgTXVsdGlGb3JtYXRSZWFkZXJfMSA9IHJlcXVpcmUoXCIuL2NvcmUvTXVsdGlGb3JtYXRSZWFkZXJcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJNdWx0aUZvcm1hdFJlYWRlclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gTXVsdGlGb3JtYXRSZWFkZXJfMS5kZWZhdWx0OyB9IH0pO1xudmFyIE11bHRpRm9ybWF0V3JpdGVyXzEgPSByZXF1aXJlKFwiLi9jb3JlL011bHRpRm9ybWF0V3JpdGVyXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiTXVsdGlGb3JtYXRXcml0ZXJcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIE11bHRpRm9ybWF0V3JpdGVyXzEuZGVmYXVsdDsgfSB9KTtcbnZhciBQbGFuYXJZVVZMdW1pbmFuY2VTb3VyY2VfMSA9IHJlcXVpcmUoXCIuL2NvcmUvUGxhbmFyWVVWTHVtaW5hbmNlU291cmNlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUGxhbmFyWVVWTHVtaW5hbmNlU291cmNlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBQbGFuYXJZVVZMdW1pbmFuY2VTb3VyY2VfMS5kZWZhdWx0OyB9IH0pO1xudmFyIFJlc3VsdF8xID0gcmVxdWlyZShcIi4vY29yZS9SZXN1bHRcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJSZXN1bHRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFJlc3VsdF8xLmRlZmF1bHQ7IH0gfSk7XG52YXIgUmVzdWx0TWV0YWRhdGFUeXBlXzEgPSByZXF1aXJlKFwiLi9jb3JlL1Jlc3VsdE1ldGFkYXRhVHlwZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlJlc3VsdE1ldGFkYXRhVHlwZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gUmVzdWx0TWV0YWRhdGFUeXBlXzEuZGVmYXVsdDsgfSB9KTtcbnZhciBSR0JMdW1pbmFuY2VTb3VyY2VfMSA9IHJlcXVpcmUoXCIuL2NvcmUvUkdCTHVtaW5hbmNlU291cmNlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUkdCTHVtaW5hbmNlU291cmNlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBSR0JMdW1pbmFuY2VTb3VyY2VfMS5kZWZhdWx0OyB9IH0pO1xudmFyIFJlc3VsdFBvaW50XzEgPSByZXF1aXJlKFwiLi9jb3JlL1Jlc3VsdFBvaW50XCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUmVzdWx0UG9pbnRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFJlc3VsdFBvaW50XzEuZGVmYXVsdDsgfSB9KTtcbi8vIGNvcmUvdXRpbFxudmFyIFN5c3RlbV8xID0gcmVxdWlyZShcIi4vY29yZS91dGlsL1N5c3RlbVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlpYaW5nU3lzdGVtXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBTeXN0ZW1fMS5kZWZhdWx0OyB9IH0pO1xudmFyIFN0cmluZ0J1aWxkZXJfMSA9IHJlcXVpcmUoXCIuL2NvcmUvdXRpbC9TdHJpbmdCdWlsZGVyXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiWlhpbmdTdHJpbmdCdWlsZGVyXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBTdHJpbmdCdWlsZGVyXzEuZGVmYXVsdDsgfSB9KTtcbnZhciBTdHJpbmdFbmNvZGluZ18xID0gcmVxdWlyZShcIi4vY29yZS91dGlsL1N0cmluZ0VuY29kaW5nXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiWlhpbmdTdHJpbmdFbmNvZGluZ1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gU3RyaW5nRW5jb2RpbmdfMS5kZWZhdWx0OyB9IH0pO1xudmFyIENoYXJzZXRfMSA9IHJlcXVpcmUoXCIuL2NvcmUvdXRpbC9DaGFyc2V0XCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiWlhpbmdDaGFyc2V0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBDaGFyc2V0XzEuZGVmYXVsdDsgfSB9KTtcbnZhciBBcnJheXNfMSA9IHJlcXVpcmUoXCIuL2NvcmUvdXRpbC9BcnJheXNcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJaWGluZ0FycmF5c1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gQXJyYXlzXzEuZGVmYXVsdDsgfSB9KTtcbnZhciBTdGFuZGFyZENoYXJzZXRzXzEgPSByZXF1aXJlKFwiLi9jb3JlL3V0aWwvU3RhbmRhcmRDaGFyc2V0c1wiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlpYaW5nU3RhbmRhcmRDaGFyc2V0c1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gU3RhbmRhcmRDaGFyc2V0c18xLmRlZmF1bHQ7IH0gfSk7XG52YXIgSW50ZWdlcl8xID0gcmVxdWlyZShcIi4vY29yZS91dGlsL0ludGVnZXJcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJaWGluZ0ludGVnZXJcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIEludGVnZXJfMS5kZWZhdWx0OyB9IH0pO1xuLy8gY29yZS9jb21tb25cbnZhciBCaXRBcnJheV8xID0gcmVxdWlyZShcIi4vY29yZS9jb21tb24vQml0QXJyYXlcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJCaXRBcnJheVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gQml0QXJyYXlfMS5kZWZhdWx0OyB9IH0pO1xudmFyIEJpdE1hdHJpeF8xID0gcmVxdWlyZShcIi4vY29yZS9jb21tb24vQml0TWF0cml4XCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiQml0TWF0cml4XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBCaXRNYXRyaXhfMS5kZWZhdWx0OyB9IH0pO1xudmFyIEJpdFNvdXJjZV8xID0gcmVxdWlyZShcIi4vY29yZS9jb21tb24vQml0U291cmNlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiQml0U291cmNlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBCaXRTb3VyY2VfMS5kZWZhdWx0OyB9IH0pO1xudmFyIENoYXJhY3RlclNldEVDSV8xID0gcmVxdWlyZShcIi4vY29yZS9jb21tb24vQ2hhcmFjdGVyU2V0RUNJXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiQ2hhcmFjdGVyU2V0RUNJXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBDaGFyYWN0ZXJTZXRFQ0lfMS5kZWZhdWx0OyB9IH0pO1xudmFyIERlY29kZXJSZXN1bHRfMSA9IHJlcXVpcmUoXCIuL2NvcmUvY29tbW9uL0RlY29kZXJSZXN1bHRcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJEZWNvZGVyUmVzdWx0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBEZWNvZGVyUmVzdWx0XzEuZGVmYXVsdDsgfSB9KTtcbnZhciBEZWZhdWx0R3JpZFNhbXBsZXJfMSA9IHJlcXVpcmUoXCIuL2NvcmUvY29tbW9uL0RlZmF1bHRHcmlkU2FtcGxlclwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkRlZmF1bHRHcmlkU2FtcGxlclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gRGVmYXVsdEdyaWRTYW1wbGVyXzEuZGVmYXVsdDsgfSB9KTtcbnZhciBEZXRlY3RvclJlc3VsdF8xID0gcmVxdWlyZShcIi4vY29yZS9jb21tb24vRGV0ZWN0b3JSZXN1bHRcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJEZXRlY3RvclJlc3VsdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gRGV0ZWN0b3JSZXN1bHRfMS5kZWZhdWx0OyB9IH0pO1xudmFyIEVuY29kZUhpbnRUeXBlXzEgPSByZXF1aXJlKFwiLi9jb3JlL0VuY29kZUhpbnRUeXBlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiRW5jb2RlSGludFR5cGVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIEVuY29kZUhpbnRUeXBlXzEuZGVmYXVsdDsgfSB9KTtcbnZhciBHbG9iYWxIaXN0b2dyYW1CaW5hcml6ZXJfMSA9IHJlcXVpcmUoXCIuL2NvcmUvY29tbW9uL0dsb2JhbEhpc3RvZ3JhbUJpbmFyaXplclwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkdsb2JhbEhpc3RvZ3JhbUJpbmFyaXplclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gR2xvYmFsSGlzdG9ncmFtQmluYXJpemVyXzEuZGVmYXVsdDsgfSB9KTtcbnZhciBHcmlkU2FtcGxlcl8xID0gcmVxdWlyZShcIi4vY29yZS9jb21tb24vR3JpZFNhbXBsZXJcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJHcmlkU2FtcGxlclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gR3JpZFNhbXBsZXJfMS5kZWZhdWx0OyB9IH0pO1xudmFyIEdyaWRTYW1wbGVySW5zdGFuY2VfMSA9IHJlcXVpcmUoXCIuL2NvcmUvY29tbW9uL0dyaWRTYW1wbGVySW5zdGFuY2VcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJHcmlkU2FtcGxlckluc3RhbmNlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBHcmlkU2FtcGxlckluc3RhbmNlXzEuZGVmYXVsdDsgfSB9KTtcbnZhciBIeWJyaWRCaW5hcml6ZXJfMSA9IHJlcXVpcmUoXCIuL2NvcmUvY29tbW9uL0h5YnJpZEJpbmFyaXplclwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkh5YnJpZEJpbmFyaXplclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gSHlicmlkQmluYXJpemVyXzEuZGVmYXVsdDsgfSB9KTtcbnZhciBQZXJzcGVjdGl2ZVRyYW5zZm9ybV8xID0gcmVxdWlyZShcIi4vY29yZS9jb21tb24vUGVyc3BlY3RpdmVUcmFuc2Zvcm1cIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJQZXJzcGVjdGl2ZVRyYW5zZm9ybVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gUGVyc3BlY3RpdmVUcmFuc2Zvcm1fMS5kZWZhdWx0OyB9IH0pO1xudmFyIFN0cmluZ1V0aWxzXzEgPSByZXF1aXJlKFwiLi9jb3JlL2NvbW1vbi9TdHJpbmdVdGlsc1wiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlN0cmluZ1V0aWxzXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBTdHJpbmdVdGlsc18xLmRlZmF1bHQ7IH0gfSk7XG4vLyBjb3JlL2NvbW1vbi9kZXRlY3RvclxudmFyIE1hdGhVdGlsc18xID0gcmVxdWlyZShcIi4vY29yZS9jb21tb24vZGV0ZWN0b3IvTWF0aFV0aWxzXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiTWF0aFV0aWxzXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBNYXRoVXRpbHNfMS5kZWZhdWx0OyB9IH0pO1xuLy8gZXhwb3J0IHsgZGVmYXVsdCBhcyBNb25vY2hyb21lUmVjdGFuZ2xlRGV0ZWN0b3IgfSBmcm9tICcuL2NvcmUvY29tbW9uL2RldGVjdG9yL01vbm9jaHJvbWVSZWN0YW5nbGVEZXRlY3Rvcic7XG52YXIgV2hpdGVSZWN0YW5nbGVEZXRlY3Rvcl8xID0gcmVxdWlyZShcIi4vY29yZS9jb21tb24vZGV0ZWN0b3IvV2hpdGVSZWN0YW5nbGVEZXRlY3RvclwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIldoaXRlUmVjdGFuZ2xlRGV0ZWN0b3JcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFdoaXRlUmVjdGFuZ2xlRGV0ZWN0b3JfMS5kZWZhdWx0OyB9IH0pO1xuLy8gY29yZS9jb21tb24vcmVlZHNvbG9tb25cbnZhciBHZW5lcmljR0ZfMSA9IHJlcXVpcmUoXCIuL2NvcmUvY29tbW9uL3JlZWRzb2xvbW9uL0dlbmVyaWNHRlwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkdlbmVyaWNHRlwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gR2VuZXJpY0dGXzEuZGVmYXVsdDsgfSB9KTtcbnZhciBHZW5lcmljR0ZQb2x5XzEgPSByZXF1aXJlKFwiLi9jb3JlL2NvbW1vbi9yZWVkc29sb21vbi9HZW5lcmljR0ZQb2x5XCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiR2VuZXJpY0dGUG9seVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gR2VuZXJpY0dGUG9seV8xLmRlZmF1bHQ7IH0gfSk7XG52YXIgUmVlZFNvbG9tb25EZWNvZGVyXzEgPSByZXF1aXJlKFwiLi9jb3JlL2NvbW1vbi9yZWVkc29sb21vbi9SZWVkU29sb21vbkRlY29kZXJcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJSZWVkU29sb21vbkRlY29kZXJcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFJlZWRTb2xvbW9uRGVjb2Rlcl8xLmRlZmF1bHQ7IH0gfSk7XG52YXIgUmVlZFNvbG9tb25FbmNvZGVyXzEgPSByZXF1aXJlKFwiLi9jb3JlL2NvbW1vbi9yZWVkc29sb21vbi9SZWVkU29sb21vbkVuY29kZXJcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJSZWVkU29sb21vbkVuY29kZXJcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFJlZWRTb2xvbW9uRW5jb2Rlcl8xLmRlZmF1bHQ7IH0gfSk7XG4vLyBjb3JlL2RhdGFtYXRyaXhcbnZhciBEYXRhTWF0cml4UmVhZGVyXzEgPSByZXF1aXJlKFwiLi9jb3JlL2RhdGFtYXRyaXgvRGF0YU1hdHJpeFJlYWRlclwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkRhdGFNYXRyaXhSZWFkZXJcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIERhdGFNYXRyaXhSZWFkZXJfMS5kZWZhdWx0OyB9IH0pO1xudmFyIERlY29kZWRCaXRTdHJlYW1QYXJzZXJfMSA9IHJlcXVpcmUoXCIuL2NvcmUvZGF0YW1hdHJpeC9kZWNvZGVyL0RlY29kZWRCaXRTdHJlYW1QYXJzZXJcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJEYXRhTWF0cml4RGVjb2RlZEJpdFN0cmVhbVBhcnNlclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gRGVjb2RlZEJpdFN0cmVhbVBhcnNlcl8xLmRlZmF1bHQ7IH0gfSk7XG4vLyBjb3JlL3BkZjQxN1xudmFyIFBERjQxN1JlYWRlcl8xID0gcmVxdWlyZShcIi4vY29yZS9wZGY0MTcvUERGNDE3UmVhZGVyXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUERGNDE3UmVhZGVyXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBQREY0MTdSZWFkZXJfMS5kZWZhdWx0OyB9IH0pO1xudmFyIFBERjQxN1Jlc3VsdE1ldGFkYXRhXzEgPSByZXF1aXJlKFwiLi9jb3JlL3BkZjQxNy9QREY0MTdSZXN1bHRNZXRhZGF0YVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlBERjQxN1Jlc3VsdE1ldGFkYXRhXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBQREY0MTdSZXN1bHRNZXRhZGF0YV8xLmRlZmF1bHQ7IH0gfSk7XG52YXIgRGVjb2RlZEJpdFN0cmVhbVBhcnNlcl8yID0gcmVxdWlyZShcIi4vY29yZS9wZGY0MTcvZGVjb2Rlci9EZWNvZGVkQml0U3RyZWFtUGFyc2VyXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUERGNDE3RGVjb2RlZEJpdFN0cmVhbVBhcnNlclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gRGVjb2RlZEJpdFN0cmVhbVBhcnNlcl8yLmRlZmF1bHQ7IH0gfSk7XG52YXIgRXJyb3JDb3JyZWN0aW9uXzEgPSByZXF1aXJlKFwiLi9jb3JlL3BkZjQxNy9kZWNvZGVyL2VjL0Vycm9yQ29ycmVjdGlvblwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlBERjQxN0RlY29kZXJFcnJvckNvcnJlY3Rpb25cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIEVycm9yQ29ycmVjdGlvbl8xLmRlZmF1bHQ7IH0gfSk7XG4vLyBjb3JlL3R3b2QvcXJjb2RlXG52YXIgUVJDb2RlUmVhZGVyXzEgPSByZXF1aXJlKFwiLi9jb3JlL3FyY29kZS9RUkNvZGVSZWFkZXJcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJRUkNvZGVSZWFkZXJcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFFSQ29kZVJlYWRlcl8xLmRlZmF1bHQ7IH0gfSk7XG52YXIgUVJDb2RlV3JpdGVyXzEgPSByZXF1aXJlKFwiLi9jb3JlL3FyY29kZS9RUkNvZGVXcml0ZXJcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJRUkNvZGVXcml0ZXJcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFFSQ29kZVdyaXRlcl8xLmRlZmF1bHQ7IH0gfSk7XG52YXIgRXJyb3JDb3JyZWN0aW9uTGV2ZWxfMSA9IHJlcXVpcmUoXCIuL2NvcmUvcXJjb2RlL2RlY29kZXIvRXJyb3JDb3JyZWN0aW9uTGV2ZWxcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJRUkNvZGVEZWNvZGVyRXJyb3JDb3JyZWN0aW9uTGV2ZWxcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIEVycm9yQ29ycmVjdGlvbkxldmVsXzEuZGVmYXVsdDsgfSB9KTtcbnZhciBGb3JtYXRJbmZvcm1hdGlvbl8xID0gcmVxdWlyZShcIi4vY29yZS9xcmNvZGUvZGVjb2Rlci9Gb3JtYXRJbmZvcm1hdGlvblwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlFSQ29kZURlY29kZXJGb3JtYXRJbmZvcm1hdGlvblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gRm9ybWF0SW5mb3JtYXRpb25fMS5kZWZhdWx0OyB9IH0pO1xudmFyIFZlcnNpb25fMSA9IHJlcXVpcmUoXCIuL2NvcmUvcXJjb2RlL2RlY29kZXIvVmVyc2lvblwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlFSQ29kZVZlcnNpb25cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFZlcnNpb25fMS5kZWZhdWx0OyB9IH0pO1xudmFyIE1vZGVfMSA9IHJlcXVpcmUoXCIuL2NvcmUvcXJjb2RlL2RlY29kZXIvTW9kZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlFSQ29kZU1vZGVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIE1vZGVfMS5kZWZhdWx0OyB9IH0pO1xudmFyIERlY29kZWRCaXRTdHJlYW1QYXJzZXJfMyA9IHJlcXVpcmUoXCIuL2NvcmUvcXJjb2RlL2RlY29kZXIvRGVjb2RlZEJpdFN0cmVhbVBhcnNlclwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlFSQ29kZURlY29kZWRCaXRTdHJlYW1QYXJzZXJcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIERlY29kZWRCaXRTdHJlYW1QYXJzZXJfMy5kZWZhdWx0OyB9IH0pO1xudmFyIERhdGFNYXNrXzEgPSByZXF1aXJlKFwiLi9jb3JlL3FyY29kZS9kZWNvZGVyL0RhdGFNYXNrXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUVJDb2RlRGF0YU1hc2tcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIERhdGFNYXNrXzEuZGVmYXVsdDsgfSB9KTtcbnZhciBFbmNvZGVyXzEgPSByZXF1aXJlKFwiLi9jb3JlL3FyY29kZS9lbmNvZGVyL0VuY29kZXJcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJRUkNvZGVFbmNvZGVyXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBFbmNvZGVyXzEuZGVmYXVsdDsgfSB9KTtcbnZhciBRUkNvZGVfMSA9IHJlcXVpcmUoXCIuL2NvcmUvcXJjb2RlL2VuY29kZXIvUVJDb2RlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUVJDb2RlRW5jb2RlclFSQ29kZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gUVJDb2RlXzEuZGVmYXVsdDsgfSB9KTtcbnZhciBNYXRyaXhVdGlsXzEgPSByZXF1aXJlKFwiLi9jb3JlL3FyY29kZS9lbmNvZGVyL01hdHJpeFV0aWxcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJRUkNvZGVNYXRyaXhVdGlsXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBNYXRyaXhVdGlsXzEuZGVmYXVsdDsgfSB9KTtcbnZhciBCeXRlTWF0cml4XzEgPSByZXF1aXJlKFwiLi9jb3JlL3FyY29kZS9lbmNvZGVyL0J5dGVNYXRyaXhcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJRUkNvZGVCeXRlTWF0cml4XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBCeXRlTWF0cml4XzEuZGVmYXVsdDsgfSB9KTtcbnZhciBNYXNrVXRpbF8xID0gcmVxdWlyZShcIi4vY29yZS9xcmNvZGUvZW5jb2Rlci9NYXNrVXRpbFwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlFSQ29kZU1hc2tVdGlsXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBNYXNrVXRpbF8xLmRlZmF1bHQ7IH0gfSk7XG4vLyBjb3JlL3R3b2QvYXp0ZWNcbnZhciBBenRlY1JlYWRlcl8xID0gcmVxdWlyZShcIi4vY29yZS9henRlYy9BenRlY1JlYWRlclwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkF6dGVjQ29kZVJlYWRlclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gQXp0ZWNSZWFkZXJfMS5kZWZhdWx0OyB9IH0pO1xudmFyIEF6dGVjV3JpdGVyXzEgPSByZXF1aXJlKFwiLi9jb3JlL2F6dGVjL0F6dGVjV3JpdGVyXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiQXp0ZWNDb2RlV3JpdGVyXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBBenRlY1dyaXRlcl8xLmRlZmF1bHQ7IH0gfSk7XG52YXIgQXp0ZWNEZXRlY3RvclJlc3VsdF8xID0gcmVxdWlyZShcIi4vY29yZS9henRlYy9BenRlY0RldGVjdG9yUmVzdWx0XCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiQXp0ZWNEZXRlY3RvclJlc3VsdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gQXp0ZWNEZXRlY3RvclJlc3VsdF8xLmRlZmF1bHQ7IH0gfSk7XG52YXIgRW5jb2Rlcl8yID0gcmVxdWlyZShcIi4vY29yZS9henRlYy9lbmNvZGVyL0VuY29kZXJcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJBenRlY0VuY29kZXJcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIEVuY29kZXJfMi5kZWZhdWx0OyB9IH0pO1xudmFyIEhpZ2hMZXZlbEVuY29kZXJfMSA9IHJlcXVpcmUoXCIuL2NvcmUvYXp0ZWMvZW5jb2Rlci9IaWdoTGV2ZWxFbmNvZGVyXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiQXp0ZWNIaWdoTGV2ZWxFbmNvZGVyXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBIaWdoTGV2ZWxFbmNvZGVyXzEuZGVmYXVsdDsgfSB9KTtcbnZhciBBenRlY0NvZGVfMSA9IHJlcXVpcmUoXCIuL2NvcmUvYXp0ZWMvZW5jb2Rlci9BenRlY0NvZGVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJBenRlY0NvZGVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIEF6dGVjQ29kZV8xLmRlZmF1bHQ7IH0gfSk7XG52YXIgRGVjb2Rlcl8xID0gcmVxdWlyZShcIi4vY29yZS9henRlYy9kZWNvZGVyL0RlY29kZXJcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJBenRlY0RlY29kZXJcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIERlY29kZXJfMS5kZWZhdWx0OyB9IH0pO1xudmFyIERldGVjdG9yXzEgPSByZXF1aXJlKFwiLi9jb3JlL2F6dGVjL2RldGVjdG9yL0RldGVjdG9yXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiQXp0ZWNEZXRlY3RvclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gRGV0ZWN0b3JfMS5kZWZhdWx0OyB9IH0pO1xudmFyIERldGVjdG9yXzIgPSByZXF1aXJlKFwiLi9jb3JlL2F6dGVjL2RldGVjdG9yL0RldGVjdG9yXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiQXp0ZWNQb2ludFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gRGV0ZWN0b3JfMi5Qb2ludDsgfSB9KTtcbi8vIGNvcmUvb25lZFxudmFyIE9uZURSZWFkZXJfMSA9IHJlcXVpcmUoXCIuL2NvcmUvb25lZC9PbmVEUmVhZGVyXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiT25lRFJlYWRlclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gT25lRFJlYWRlcl8xLmRlZmF1bHQ7IH0gfSk7XG52YXIgRUFOMTNSZWFkZXJfMSA9IHJlcXVpcmUoXCIuL2NvcmUvb25lZC9FQU4xM1JlYWRlclwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkVBTjEzUmVhZGVyXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBFQU4xM1JlYWRlcl8xLmRlZmF1bHQ7IH0gfSk7XG52YXIgQ29kZTEyOFJlYWRlcl8xID0gcmVxdWlyZShcIi4vY29yZS9vbmVkL0NvZGUxMjhSZWFkZXJcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJDb2RlMTI4UmVhZGVyXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBDb2RlMTI4UmVhZGVyXzEuZGVmYXVsdDsgfSB9KTtcbnZhciBJVEZSZWFkZXJfMSA9IHJlcXVpcmUoXCIuL2NvcmUvb25lZC9JVEZSZWFkZXJcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJJVEZSZWFkZXJcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIElURlJlYWRlcl8xLmRlZmF1bHQ7IH0gfSk7XG52YXIgQ29kZTM5UmVhZGVyXzEgPSByZXF1aXJlKFwiLi9jb3JlL29uZWQvQ29kZTM5UmVhZGVyXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiQ29kZTM5UmVhZGVyXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBDb2RlMzlSZWFkZXJfMS5kZWZhdWx0OyB9IH0pO1xudmFyIFJTUzE0UmVhZGVyXzEgPSByZXF1aXJlKFwiLi9jb3JlL29uZWQvcnNzL1JTUzE0UmVhZGVyXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUlNTMTRSZWFkZXJcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFJTUzE0UmVhZGVyXzEuZGVmYXVsdDsgfSB9KTtcbnZhciBSU1NFeHBhbmRlZFJlYWRlcl8xID0gcmVxdWlyZShcIi4vY29yZS9vbmVkL3Jzcy9leHBhbmRlZC9SU1NFeHBhbmRlZFJlYWRlclwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlJTU0V4cGFuZGVkUmVhZGVyXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBSU1NFeHBhbmRlZFJlYWRlcl8xLmRlZmF1bHQ7IH0gfSk7XG52YXIgTXVsdGlGb3JtYXRPbmVEUmVhZGVyXzEgPSByZXF1aXJlKFwiLi9jb3JlL29uZWQvTXVsdGlGb3JtYXRPbmVEUmVhZGVyXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiTXVsdGlGb3JtYXRPbmVEUmVhZGVyXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBNdWx0aUZvcm1hdE9uZURSZWFkZXJfMS5kZWZhdWx0OyB9IH0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwiaW1wb3J0IHsgQmluYXJ5Qml0bWFwLCBIeWJyaWRCaW5hcml6ZXIsIFJHQkx1bWluYW5jZVNvdXJjZSwgUVJDb2RlUmVhZGVyLCBIVE1MQ2FudmFzRWxlbWVudEx1bWluYW5jZVNvdXJjZSB9IGZyb20gJ0B6eGluZy9saWJyYXJ5L2NqcydcbmNvbnN0IHJlYWRlciA9IG5ldyBRUkNvZGVSZWFkZXIoKVxuXG5zZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCAoZSkgPT4geyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXJlc3RyaWN0ZWQtZ2xvYmFsc1xuICBjb25zdCBkYXRhID0gSFRNTENhbnZhc0VsZW1lbnRMdW1pbmFuY2VTb3VyY2UudG9HcmF5c2NhbGVCdWZmZXIoZS5kYXRhLmRhdGEsIGUuZGF0YS53aWR0aCwgZS5kYXRhLmhlaWdodClcbiAgY29uc3QgbHVtaW5hbmNlU291cmNlID0gbmV3IFJHQkx1bWluYW5jZVNvdXJjZShkYXRhLCBlLmRhdGEud2lkdGgsIGUuZGF0YS5oZWlnaHQpXG4gIGNvbnN0IGJpbmFyeUJpdG1hcCA9IG5ldyBCaW5hcnlCaXRtYXAobmV3IEh5YnJpZEJpbmFyaXplcihsdW1pbmFuY2VTb3VyY2UpKVxuICB0cnkge1xuICAgIGNvbnN0IGRlY29kZWQgPSByZWFkZXIuZGVjb2RlKGJpbmFyeUJpdG1hcClcbiAgICBwb3N0TWVzc2FnZShkZWNvZGVkKVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBwb3N0TWVzc2FnZShudWxsKVxuICB9XG59KVxuIl0sIm5hbWVzIjpbInRoaXMiLCJBYnN0cmFjdEV4cGFuZGVkRGVjb2RlckNvbXBsZW1lbnRfMSIsIkRlY29kZXJfMSIsIkRldGVjdG9yXzEiLCJWZXJzaW9uXzEiLCJCaXRNYXRyaXhQYXJzZXJfMSIsIkRhdGFCbG9ja18xIiwiRGVjb2RlZEJpdFN0cmVhbVBhcnNlcl8xIiwiRmluZGVyUGF0dGVybl8xIiwiZ2xvYmFsIiwicmVxdWlyZSQkMCIsInJlcXVpcmUkJDEiLCJyZXF1aXJlJCQyIiwicmVxdWlyZSQkMyIsInJlcXVpcmUkJDQiLCJyZXF1aXJlJCQ1IiwicmVxdWlyZSQkNiIsInJlcXVpcmUkJDciLCJyZXF1aXJlJCQ4IiwicmVxdWlyZSQkOSIsInJlcXVpcmUkJDEwIiwicmVxdWlyZSQkMTEiLCJJbnZlcnRlZEx1bWluYW5jZVNvdXJjZV8xIiwiQyIsIkVuY29kZXJfMSIsIkRlY29kZWRCaXRTdHJlYW1QYXJzZXJfMiIsIkRlY29kZWRCaXRTdHJlYW1QYXJzZXJfMyIsIkVuY29kZXJfMiIsInJlYWRlciIsIlFSQ29kZVJlYWRlciIsInNlbGYiLCJhZGRFdmVudExpc3RlbmVyIiwiZSIsImRhdGEiLCJIVE1MQ2FudmFzRWxlbWVudEx1bWluYW5jZVNvdXJjZSIsInRvR3JheXNjYWxlQnVmZmVyIiwid2lkdGgiLCJoZWlnaHQiLCJsdW1pbmFuY2VTb3VyY2UiLCJSR0JMdW1pbmFuY2VTb3VyY2UiLCJiaW5hcnlCaXRtYXAiLCJCaW5hcnlCaXRtYXAiLCJIeWJyaWRCaW5hcml6ZXIiLCJkZWNvZGVkIiwiZGVjb2RlIiwicG9zdE1lc3NhZ2UiLCJlcnIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FBQSxTQUFTLFFBQVEsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFO0NBQ3JDLEVBQUUsSUFBSSxjQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQztDQUM3QyxFQUFFLGNBQWMsR0FBRyxjQUFjLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0NBQ3BGLENBQUM7Q0FDRCxTQUFTLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFO0NBQzlCLEVBQUUsSUFBSSxFQUFFLEtB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QUMsR0FBRyxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Q0FDN0MsWUFBWSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDNUIsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksVUFBVSxLQUFLLENBQUMsQ0FBQyxHQUFHLFVBQVUsS0FBSyxDQUFDLENBQUMsQ0FBQztDQUNsRSxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxVQUFVLEtBQUssQ0FBQyxDQUFDLEdBQUcsVUFBVSxLQUFLLENBQUMsQ0FBQyxDQUFDO0NBQ2xFLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLFVBQVUsS0FBSyxDQUFDLENBQUMsR0FBRyxVQUFVLEtBQUssQ0FBQyxDQUFDLENBQUM7Q0FDbEUsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksVUFBVSxLQUFLLENBQUMsQ0FBQyxHQUFHLFVBQVUsS0FBSyxDQUFDLENBQUMsQ0FBQztDQUNsRSxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxVQUFVLEtBQUssQ0FBQyxDQUFDLEdBQUcsVUFBVSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0NBQ3BFLFlBQVksT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUM7Q0FDM0MsU0FBUztDQUNUO0NBQ0EsUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssVUFBVSxHQUFHLEVBQUUsRUFBRTtDQUMzQyxZQUFZLElBQUksVUFBVSxHQUFHLFVBQVUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztDQUN6RCxZQUFZLElBQUksVUFBVSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxVQUFVLENBQUM7Q0FDdkQsWUFBWSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxF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LDRCQUE0QixDQUFDO0NBQ2pDLENBQUMsVUFBVSw0QkFBNEIsRUFBRTtDQUN6QyxJQUFJLDRCQUE0QixDQUFDLDRCQUE0QixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQztDQUN0RixJQUFJLDRCQUE0QixDQUFDLDRCQUE0QixDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQztDQUM5RixJQUFJLDRCQUE0QixDQUFDLDRCQUE0QixDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQztDQUM5RixJQUFJLDRCQUE0QixDQUFDLDRCQUE0QixDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQztDQUM5RixJQUFJLDRCQUE0QixDQUFDLDRCQUE0QixDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQztDQUM5RixJQUFJLDRCQUE0QixDQUFDLDRCQUE0QixDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQztDQUM5RixJQUFJLDRCQUE0QixDQUFDLDRCQUE0QixDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQztDQUM5RixJQUFJLDRCQUE0QixDQUFDLDRCQUE0QixDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQztDQUM5RixJQUFJLDRCQUE0QixDQUFDLDRCQUE0QixDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQztDQUM5RixJQUFJLDRCQUE0QixDQUFDLDRCQUE0QixDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQztDQUM5RixJQUFJLDRCQUE0QixDQUFDLDRCQUE0QixDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQztDQUNqRyxJQUFJLDRCQUE0QixDQUFDLDRCQUE0QixDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQztDQUNqRyxJQUFJLDRCQUE0QixDQUFDLDRCQUE0QixDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQztDQUNqRyxJQUFJLDRCQUE0QixDQUFDLDRCQUE0QixDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQztDQUNqRyxJQUFJLDRCQUE0QixDQUFDLDRCQUE0QixDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQztDQUNqRyxJQUFJLDRCQUE0QixDQUFDLDRCQUE0QixDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQztDQUNqRyxJQUFJLDRCQUE0QixDQUFDLDRCQUE0QixDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQztDQUNyRixJQUFJLDRCQUE0QixDQUFDLDRCQUE0QixDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQztDQUN6RixJQUFJLDRCQUE0QixDQUFDLDRCQUE0QixDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQztDQUN6RixJQUFJLDRCQUE0QixDQUFDLDRCQUE0QixDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQztDQUN6RixJQUFJLDRCQUE0QixDQUFDLDRCQUE0QixDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQztDQUN6RixJQUFJLDRCQUE0QixDQUFDLDRCQUE0QixDQUFDLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsb0JBQW9CLENBQUM7Q0FDakgsSUFBSSw0QkFBNEIsQ0FBQyw0QkFBNEIsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUM7Q0FDckYsSUFBSSw0QkFBNEIsQ0FBQyw0QkFBNEIsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUM7Q0FDdkYsSUFBSSw0QkFBNEIsQ0FBQyw0QkFBNEIsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUM7Q0FDckYsSUFBSSw0QkFBNEIsQ0FBQyw0QkFBNEIsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUM7Q0FDM0YsSUFBSSw0QkFBNEIsQ0FBQyw0QkFBNEIsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUM7Q0FDekYsQ0FBQyxFQUFFLDRCQUE0QixHQUFHLE9BQU8sQ0FBQyw0QkFBNEIsS0FBSyxvQ0FBb0MsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQ3ZIO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLElBQUksZUFBZSxrQkFBa0IsWUFBWTtDQUNqRCxJQUFJLFNBQVMsZUFBZSxDQUFDLGVBQWUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO0NBQ2pFLFFBQVEsSUFBSSxHQUFHLEVBQUUsRUFBRSxDQUFDO0NBQ3BCLFFBQVEsSUFBSSxrQkFBa0IsR0FBRyxFQUFFLENBQUM7Q0FDcEMsUUFBUSxLQUFLLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRTtDQUN0RCxZQUFZLGtCQUFrQixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7Q0FDdkQsU0FBUztDQUNULFFBQVEsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7Q0FDL0MsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztDQUN6QixRQUFRLElBQUksT0FBTyxXQUFXLEtBQUssUUFBUSxFQUFFO0NBQzdDLFlBQVksSUFBSSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztDQUN6RCxTQUFTO0NBQ1QsYUFBYTtDQUNiLFlBQVksSUFBSSxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUM7Q0FDdEMsU0FBUztDQUNULFFBQVEsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGtCQUFrQixDQUFDO0NBQ3JELFFBQVEsZUFBZSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLENBQUM7Q0FDM0UsUUFBUSxlQUFlLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7Q0FDcEQsUUFBUSxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0NBQ2pDLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRTtDQUN2RSxZQUFZLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUM5QixZQUFZLGVBQWUsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztDQUN2RCxTQUFTO0NBQ1QsUUFBUSxJQUFJO0NBQ1osWUFBWSxLQUFLLElBQUksb0JBQW9CLEdBQUcsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsc0JBQXNCLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxFQUFFLEVBQUU7Q0FDcE4sZ0JBQWdCLElBQUksU0FBUyxHQUFHLHNCQUFzQixDQUFDLEtBQUssQ0FBQztDQUM3RCxnQkFBZ0IsZUFBZSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0NBQ2pFLGFBQWE7Q0FDYixTQUFTO0NBQ1QsUUFBUSxPQUFPLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO0NBQ2pELGdCQUFnQjtDQUNoQixZQUFZLElBQUk7Q0FDaEIsZ0JBQWdCLElBQUksc0JBQXNCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLEtBQUssRUFBRSxHQUFHLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztDQUNoSixhQUFhO0NBQ2Isb0JBQW9CLEVBQUUsSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7Q0FDakQsU0FBUztDQUNULEtBQUs7Q0FDTDtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsSUFBSSxlQUFlLENBQUMsU0FBUyxDQUFDLGtCQUFrQixHQUFHLFlBQVk7Q0FDL0QsUUFBUSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7Q0FDcEMsS0FBSyxDQUFDO0NBQ04sSUFBSSxlQUFlLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxZQUFZO0NBQ3BELFFBQVEsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0NBQ3pCLEtBQUssQ0FBQztDQUNOLElBQUksZUFBZSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsWUFBWTtDQUNyRCxRQUFRLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUM5QixLQUFLLENBQUM7Q0FDTjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLGVBQWUsQ0FBQyx5QkFBeUIsR0FBRyxVQUFVLEtBQUssVUFBVTtDQUN6RSxRQUFRLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxLQUFLLElBQUksR0FBRyxFQUFFO0NBQ3ZDLFlBQVksTUFBTSxJQUFJLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0NBQ2xFLFNBQVM7Q0FDVCxRQUFRLElBQUksWUFBWSxHQUFHLGVBQWUsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0NBQ3BFLFFBQVEsSUFBSSxTQUFTLEtBQUssWUFBWSxFQUFFO0NBQ3hDLFlBQVksTUFBTSxJQUFJLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0NBQ2xFLFNBQVM7Q0FDVCxRQUFRLE9BQU8sWUFBWSxDQUFDO0NBQzVCLEtBQUssQ0FBQztDQUNOO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLGVBQWUsQ0FBQyx3QkFBd0IsR0FBRyxVQUFVLElBQUksRUFBRTtDQUMvRCxRQUFRLElBQUksWUFBWSxHQUFHLGVBQWUsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0NBQ2pFLFFBQVEsSUFBSSxTQUFTLEtBQUssWUFBWSxFQUFFO0NBQ3hDLFlBQVksTUFBTSxJQUFJLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0NBQ2xFLFNBQVM7Q0FDVCxRQUFRLE9BQU8sWUFBWSxDQUFDO0NBQzVCLEtBQUssQ0FBQztDQUNOLElBQUksZUFBZSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDLEVBQUU7Q0FDcEQsUUFBUSxJQUFJLEVBQUUsQ0FBQyxZQUFZLGVBQWUsQ0FBQyxFQUFFO0NBQzdDLFlBQVksT0FBTyxLQUFLLENBQUM7Q0FDekIsU0FBUztDQUNULFFBQVEsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0NBQ3RCLFFBQVEsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0NBQ2xELEtBQUssQ0FBQztDQUNOLElBQUksZUFBZSxDQUFDLHVCQUF1QixHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7Q0FDeEQsSUFBSSxlQUFlLENBQUMsYUFBYSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7Q0FDOUMsSUFBSSxlQUFlLENBQUMsV0FBVyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7Q0FDNUM7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxlQUFlLENBQUMsNEJBQTRCLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztDQUN0SCxJQUFJLGVBQWUsQ0FBQyxTQUFTLEdBQUcsSUFBSSxlQUFlLENBQUMsNEJBQTRCLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0NBQzVKLElBQUksZUFBZSxDQUFDLFNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBQyw0QkFBNEIsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUM7Q0FDdEksSUFBSSxlQUFlLENBQUMsU0FBUyxHQUFHLElBQUksZUFBZSxDQUFDLDRCQUE0QixDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztDQUN0SSxJQUFJLGVBQWUsQ0FBQyxTQUFTLEdBQUcsSUFBSSxlQUFlLENBQUMsNEJBQTRCLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0NBQ3RJLElBQUksZUFBZSxDQUFDLFNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBQyw0QkFBNEIsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUM7Q0FDdEksSUFBSSxlQUFlLENBQUMsU0FBUyxHQUFHLElBQUksZUFBZSxDQUFDLDRCQUE0QixDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztDQUN0SSxJQUFJLGVBQWUsQ0FBQyxTQUFTLEdBQUcsSUFBSSxlQUFlLENBQUMsNEJB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QVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsVUFBVTtDQUM5RCxRQUFRLElBQUksTUFBTSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0NBQzNELFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksVUFBVSxDQUFDO0NBQzVELEtBQUssQ0FBQztDQUNOLElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxVQUFVO0NBQ2hFLFFBQVEsSUFBSSxNQUFNLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7Q0FDM0QsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDO0NBQy9ELEtBQUssQ0FBQztDQUNOO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxVQUFVO0NBQy9ELFFBQVEsSUFBSSxNQUFNLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7Q0FDM0QsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQztDQUM5RCxLQUFLLENBQUM7Q0FDTjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FD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QUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztDQUM3QixRQUFRLElBQUksTUFBTSxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUM7Q0FDakMsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFO0NBQzFDLFlBQVksR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUNsRCxTQUFTO0NBQ1QsUUFBUSxPQUFPLEdBQUcsQ0FBQztDQUNuQixLQUFLLENBQUM7Q0FDTjtDQUNBO0NBQ0E7Q0FDQTtDQUNBLElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDLFVBQVUsR0FBRyxFQUFFO0NBQzNELFFBQVEsUUFBUSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztDQUNwRyxLQUFLLENBQUM7Q0FDTjtDQUNBO0NBQ0E7Q0FDQSxJQUFJLFNBQVMsQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLFlBQVk7Q0FDaEQsUUFBUSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Q0FDcEMsUUFBUSxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Q0FDdEMsUUFBUSxJQUFJLE1BQU0sR0FBRyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7Q0FDbkQsUUFBUSxJQUFJLFNBQVMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7Q0FDdEQsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFRLEdBQUcsSUFBSSxDQUFD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QUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDO0NBQ3hEO0NBQ0EsSUFBSSxhQUFhLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztDQUM1RDtDQUNBLElBQUksYUFBYSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUM7Q0FDNUQ7Q0FDQSxJQUFJLGFBQWEsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDO0NBQzVEO0NBQ0EsSUFBSSxhQUFhLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQztDQUM5RDtDQUNBLElBQUksYUFBYSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUM7Q0FDcEU7Q0FDQSxJQUFJLGFBQWEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDO0NBQ3hEO0NBQ0EsSUFBSSxhQUFhLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQztDQUMxRDtDQUNBLElBQUksYUFBYSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7Q0FDcEQ7Q0FDQSxJQUFJLGFBQWEsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDO0NBQzlEO0NBQ0EsSUFBSSxhQUFhLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQztDQUM3RDtDQUNBLElBQUksYUFBYSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUM7Q0FDN0Q7Q0FDQSxJQUFJLGFBQWEsQ0FBQyxhQUFh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LENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztDQUMxRCxTQUFTO0NBQ1QsUUFBUSxPQUFPLE9BQU8sQ0FBQztDQUN2QixLQUFLLENBQUM7Q0FDTixJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxNQUFNLEVBQUUsT0FBTyxFQUFFO0NBQ3BFLFFBQVEsT0FBTyxDQUFDLENBQUMsT0FBTyxHQUFHLEVBQUUsR0FBRyxHQUFHLElBQUksRUFBRSxHQUFHLE1BQU0sSUFBSSxNQUFNLENBQUM7Q0FDN0QsS0FBSyxDQUFDO0NBQ04sSUFBSSxPQUFPLENBQUMsV0FBVyxHQUFHO0NBQzFCLFFBQVEsU0FBUyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO0NBQ3RHLFFBQVEsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVM7Q0FDcEcsS0FBSyxDQUFDO0NBQ04sSUFBSSxPQUFPLENBQUMsV0FBVyxHQUFHO0NBQzFCLFFBQVEsU0FBUyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO0NBQ3RHLFFBQVEsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVM7Q0FDcEcsS0FBSyxDQUFDO0NBQ04sSUFBSSxPQUFPLENBQUMsV0FBVyxHQUFHO0NBQzFCO0NBQ0E7Q0FDQSxRQUFRLFNBQVMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtDQUN6RixRQUFRLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRztDQUN2RixRQUFRLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTO0NBQzFFLEtBQUssQ0FBQztDQUNOLElBQUksT0FBTyxDQUFDLFdBQVcsR0FBRztDQUMxQixRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRztDQUN4RixRQUFRLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxT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QUksRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztDQUMxQixRQUFRLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztDQUMxQixRQUFRLElBQUksSUFBSSxHQUFHLHNCQUFzQixDQUFDLElBQUksQ0FBQztDQUMvQyxRQUFRLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxFQUFFO0NBQ25DLFlBQVksT0FBTztDQUNuQixnQkFBZ0IsSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQztDQUMvRCxnQkFBZ0IsSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQztDQUMvRCxnQkFBZ0IsSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQztDQUMvRCxnQkFBZ0IsSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQztDQUMvRCxhQUFhLENBQUM7Q0FDZCxTQUFTO0NBQ1QsYUFBYTtDQUNiLFlBQVksT0FBTztDQUNuQixnQkFBZ0IsSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQztDQUMvRCxnQkFBZ0IsSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQztDQUMvRCxnQkFBZ0IsSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQztDQUMvRCxnQkFBZ0IsSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQztDQUMvRCxhQUFhLENBQUM7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QUssQ0FBQztDQUNOLElBQUksb0JBQW9CLENBQUMscUJBQXFCLEdBQUcsVUFBVSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZO0NBQzNLO0NBQ0EsUUFBUSxPQUFPLG9CQUFvQixDQUFDLHFCQUFxQixDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztDQUN6RyxLQUFLLENBQUM7Q0FDTixJQUFJLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxZQUFZLEdBQUcsWUFBWTtDQUM5RDtDQUNBLFFBQVEsT0FBTyxJQUFJLG9CQUFvQixDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Q0FDM2EsS0FBSyxDQUFDO0NBQ04sSUFBSSxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLFVBQVUsS0FBSyxFQUFFO0NBQzVELFFBQVEsT0FBTyxJQUFJLG9CQUFvQixDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxF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RTtDQUMzRSxRQUFRLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztDQUNyQixRQUFRLEVBQUUsR0FBRyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztDQUMzRCxRQUFRLEVBQUUsR0FBRyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztDQUMzRCxRQUFRLEVBQUUsR0FBRyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztDQUMzRCxRQUFRLEVBQUUsR0FBRyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztDQUMzRCxRQUFRLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0NBQzFDLFFBQVEsSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFO0NBQ3pCLFlBQVksT0FBTyxLQUFLLENBQUM7Q0FDekIsU0FBUztDQUNULFFBQVEsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7Q0FDdEMsUUFBUSxJQUFJLENBQUMsS0FBSyxLQUFLLEVBQUU7Q0FDekIsWUFBWSxPQUFPLEtBQUssQ0FBQztDQUN6QixTQUFTO0NBQ1QsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7Q0FDbEMsUUFBUSxJQUFJLENBQUMsS0FBSyxLQUFLLEVBQUU7Q0FDekIsWUFBWSxPQUFPLEtBQUssQ0FBQztDQUN6QixTQUFTO0NBQ1QsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7Q0FDbEMsUUFBUSxPQUFPLENBQUMsS0FBSyxLQUFLLENBQUM7Q0FDM0IsS0FBSyxDQUFDO0NBQ047Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsVUFBVSxFQUFFLEVBQUUsRUFBRSxFQUFFO0NBQ3BELFFBQVEsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7Q0FDM0MsUUFBUSxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0NBQzdDLFFBQVEsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztDQUM3QyxRQUFRLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztDQUN0QixRQUFRLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztDQUMzQixRQUFRLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztDQUMzQixRQUFRLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztDQUM5RCxRQUFRLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDaEMsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFO0NBQ3ZDLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztDQUNyQixZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7Q0FDckIsWUFBWSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssVUFBVSxFQUFFO0NBQzdHLGdCQUFnQixLQUFLLEVBQUUsQ0FBQztDQUN4QixhQUFhO0NBQ2IsU0FBUztDQUNULFFBQVEsSUFBSSxRQUFRLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztDQUNqQyxRQUFRLElBQUksUUFBUSxHQUFHLEdBQUcsSUFBSSxRQUFRLEdBQUcsR0FBRyxFQUFFO0NBQzlDLFlBQVksT0FBTyxDQUFDLENBQUM7Q0FDckIsU0FBUztDQUNULFFBQVEsT0FBTyxDQUFDLFFBQVEsSUFBSSxHQUFHLE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztDQUN6RCxLQUFLLENBQUM7Q0FDTjtDQUNBO0NBQ0E7Q0FDQSxJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLEdBQUcsVUFBVSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7Q0FDMUUsUUFBUSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDO0NBQ2pDLFFBQVEsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQztDQUNqQyxRQUFRLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEtBQUssRUFBRTtDQUNyRSxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7Q0FDcEIsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO0NBQ3BCLFNBQVM7Q0FDVCxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7Q0FDaEIsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0NBQ2hCLFFBQVEsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssS0FBSyxFQUFFO0NBQ3JFLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztDQUNwQixTQUFTO0NBQ1QsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0NBQ2hCLFFBQVEsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssS0FBSyxFQUFFO0NBQ3JFLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztDQUNwQixTQUFTO0NBQ1QsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0NBQ2hCLFFBQVEsT0FBTyxJQUFJLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDL0IsS0FBSyxDQUFDO0NBQ047Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEdBQUcsVUFBVSxZQUFZLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRTtDQUNoRixRQUFRLElBQUksS0FBSyxHQUFHLE9BQU8sSUFBSSxHQUFHLEdBQUcsT0FBTyxDQUFDLENBQUM7Q0FDOUMsUUFBUSxJQUFJLEVBQUUsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0NBQ2pFLFFBQVEsSUFBSSxFQUFFLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztDQUNqRSxRQUFRLElBQUksT0FBTyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxHQUFHLENBQUM7Q0FDOUUsUUFBUSxJQUFJLE9BQU8sR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksR0FBRyxDQUFDO0NBQzlFLFFBQVEsSUFBSSxPQUFPLEdBQUcsSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLE9BQU8sR0FBRyxLQUFLLEdBQUcsRUFBRSxFQUFFLE9BQU8sR0FBRyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUM7Q0FDNUYsUUFBUSxJQUFJLE9BQU8sR0FBRyxJQUFJLGFBQWEsQ0FBQyxPQUFPLENBQUMsT0FBTyxHQUFHLEtBQUssR0FBRyxFQUFFLEVBQUUsT0FBTyxHQUFHLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQztDQUM1RixRQUFRLEVBQUUsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0NBQzdELFFBQVEsRUFBRSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7Q0FDN0QsUUFBUSxPQUFPLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEdBQUcsQ0FBQztDQUMxRSxRQUFRLE9BQU8sR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksR0FBRyxDQUFDO0NBQzFFLFFB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QUcsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxFQUFFLElBQUksYUFBYSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztDQUMvRyxRQUFRLE9BQU8sSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxlQUFlLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7Q0FDekgsS0FBSyxDQUFDO0NBQ04sSUFBSSxhQUFhLENBQUMsYUFBYSxHQUFHO0NBQ2xDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDM0MsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUMzQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzNDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDM0MsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUMzQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzNDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDM0MsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUMzQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzNDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDM0MsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUMzQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzNDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDM0MsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUMzQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzNDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDM0MsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUMzQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzNDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDM0MsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUMzQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzNDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDM0MsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUMzQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzNDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDM0MsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUMzQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzNDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDM0MsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUMzQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzNDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDM0MsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUMzQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzNDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDM0MsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUMzQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzNDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDM0MsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUMzQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzNDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDM0MsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUMzQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzNDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDM0MsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUMzQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzNDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDM0MsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUMzQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzNDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDM0MsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUMzQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzNDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDM0MsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUMzQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzNDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDM0MsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUMzQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzNDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDM0MsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUMzQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzNDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDM0MsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUMzQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzNDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDM0MsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUMzQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzNDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDM0MsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUMzQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzNDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDM0MsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUMzQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzNDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDM0MsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUMzQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzNDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDM0MsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUMzQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzNDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDM0MsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUMzQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzNDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDM0MsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUMzQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzNDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDM0MsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUMzQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzNDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDM0MsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUMzQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzNDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDM0MsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUMzQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzNDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDM0MsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUMzQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzNDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDM0MsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUMzQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzNDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDM0MsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUMzQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzNDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDM0MsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxD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QUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUN4QyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDeEMsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQ3hDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUN4QyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDeEMsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQ3hDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUN4QyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDeEMsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQ3hDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUN4QyxRQUFRLFVB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QyxXQUFXLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUMzRTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLG9CQUFvQixDQUFDLFVBQVUsR0FBRztDQUN0QyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUNyQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUNyQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUNyQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUNyQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUNyQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUNyQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUNyQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUNyQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUNyQyxRQUFRLFVBQVUs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LFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO0NBQ2xCLFFBQVEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUM7Q0FDL0MsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7Q0FDakIsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7Q0FDakIsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7Q0FDakIsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7Q0FDakIsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7Q0FDakIsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7Q0FDakIsUUFBUSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQztDQUMvQyxRQUFRLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO0NBQy9DLFFBQVEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7Q0FDOUMsUUFBUSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztDQUM5QztDQUNBLFFBQVEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUM7Q0FDL0MsUUFBUSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQztDQUMvQyxRQUFRLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO0NBQy9DLFFBQVEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUM7Q0FDL0MsUUFBUSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQztDQUMvQyxRQUFRLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO0NBQy9DLFFBQVEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxD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QUssRUFBRSxDQUFDLENBQUM7Q0FDbEIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Q0FDbEIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Q0FDbEIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Q0FDbEIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Q0FDbEIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Q0FDbEIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Q0FDbEIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Q0FDbEIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Q0FDbEIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Q0FDbEIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Q0FDbEIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Q0FDbEIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Q0FDbEIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Q0FDbEIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Q0FDbEIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Q0FDbEIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Q0FDbEIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Q0FDbEIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Q0FDbEIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Q0FDbEIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Q0FDbEIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Q0FDbEIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Q0FDbEIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Q0FDbEIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Q0FDbEIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Q0FDbEIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Q0FDbEIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Q0FDbEIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Q0FDbEIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Q0FDbEIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Q0FDbEIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Q0FDbEIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Q0FDbEIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Q0FDbEIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Q0FDbEIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Q0FDbEIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Q0FDbEIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Q0FDbEIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Q0FDbEIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Q0FDbEIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Q0FDbEIsUUFBUSxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQztDQUNoRCxRQUFRLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO0NBQ2hELFFBQVEsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUM7Q0FDaEQsUUFBUSxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQztDQUNoRCxRQUFRLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO0NBQ2hELEtBQUssQ0FBQztDQUNOLElBQUksV0FBVyxDQUFDLHNCQUFzQixHQUFHO0NBQ3pDO0NBQ0EsUUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7Q0FDcEIsUUFBUSxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQztDQUNqRCxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztDQUNwQixRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztDQUNwQixRQUFRLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO0NBQ2pELFFBQVEsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUM7Q0FDakQsUUFBUSxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQztDQUNqRCxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztDQUNuQixRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztDQUNwQixRQUFRLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO0NBQ2pELFFBQVEsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUM7Q0FDakQsUUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7Q0FDcEIsUUFBUSxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQztDQUNqRCxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztDQUNuQixRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztDQUNwQixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztDQUNuQixRQUFRLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO0NBQ2pELFFBQVEsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUM7Q0FDakQsS0FBSyxDQUFDO0NBQ04sSUFBSSxPQUFPLFdBQVcsQ0FBQztDQUN2QixDQUFDLEVBQUUsQ0FBQyxDQUFDO0NBQ0wsZUFBZSxHQUFHLFdBQVcsQ0FBQzs7Ozs7Q0NsUjlCLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQ0M7QUFDWTtBQUNYO0FBQ1A7QUFDWjtBQUNjO0FBQ1I7QUFDTjtDQUM3QyxJQUFJLG1CQUFtQixrQkFBa0IsWUFBWTtDQUNyRCxJQUFJLFNBQVMsbUJBQW1CLENBQUMsV0FBVyxFQUFFO0NBQzlDLFFBQVEsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztDQUNwRCxRQUFRLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0NBQ3ZDLEtBQUs7Q0FDTCxJQUFJLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxjQUFjLEdBQUcsVUFBVSxJQUFJLEVBQUUsZUFBZSxFQUFFO0NBQ3BGLFFBQVEsSUFBSSxlQUFlLEdBQUcsZUFBZSxDQUFDO0NBQzlDLFFBQVEsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDO0NBQzdCLFFBQVEsR0FBRztDQUNYLFlBQVksSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLGVBQWUsRUFBRSxTQUFTLENBQUMsQ0FBQztDQUNsRixZQUFZLElBQUksWUFBWSxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7Q0FDdEcsWUFBWSxJQUFJLFlBQVksSUFBSSxJQUFJLEVBQUU7Q0FDdEMsZ0JBQWdCLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7Q0FDMUMsYUFBYTtDQUNiLFlBQVksSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUU7Q0FDcEMsZ0JBQWdCLFNBQVMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Q0FDMUQsYUFBYTtDQUNiLGlCQUFpQjtDQUNqQixnQkFBZ0IsU0FBUyxHQUFHLElBQUksQ0FBQztDQUNqQyxhQUFhO0NBQ2IsWUFBWSxJQUFJLGVBQWUsS0FBSyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUU7Q0FDM0QsZ0JBQWdCLE1BQU07Q0FDdEIsYUFBYTtDQUNiLFlBQVksZUFBZSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztDQUNwRCxTQUFTLFFBQVEsSUFBSSxFQUFFO0NBQ3ZCLFFBQVEsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Q0FDL0IsS0FBSyxDQUFDO0NBQ04sSUFBSSxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsY0FBYyxHQUFHLFVBQVUsR0FBRyxFQUFFO0NBQ2xFO0NBQ0E7Q0FDQSxRQUFRLElBQUksR0FBRyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxFQUFFO0NBQ2xELFlBQVksT0FBTyxHQUFHLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7Q0FDekQsU0FBUztDQUNULFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUU7Q0FDNUMsWUFBWSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO0NBQ3pDLGdCQUFnQixPQUFPLElBQUksQ0FBQztDQUM1QixhQUFhO0NBQ2IsU0FBUztDQUNULFFBQVEsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7Q0FDN0MsS0FBSyxDQUFDO0NBQ04sSUFBSSxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsYUFBYSxHQUFHLFVBQVUsR0FBRyxFQUFFO0NBQ2pFLFFBQVEsSUFBSSxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLEVBQUU7Q0FDbEQsWUFBWSxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsK0JBQStCLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQ3pFLFlBQVksSUFBSSxTQUFTLEtBQUssQ0FBQyxFQUFFO0NBQ2pDLGdCQUFnQixPQUFPLElBQUksZ0JBQWdCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLEVBQUUsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7Q0FDOUksYUFBYTtDQUNiLFlBQVksT0FBTyxJQUFJLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxFQUFFLFNBQVMsR0FBRyxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0NBQzFILFNBQVM7Q0FDVCxRQUFRLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDbkUsUUFBUSxJQUFJLE1BQU0sR0FBRyxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO0NBQ3hDLFFBQVEsSUFBSSxNQUFNLEdBQUcsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztDQUN4QyxRQUFRLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7Q0FDckUsS0FBSyxDQUFDO0NBQ04sSUFBSSxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsK0JBQStCLEdBQUcsVUFBVSxHQUFHLEVBQUUsSUFBSSxFQUFFO0NBQ3pGLFFBQVEsT0FBTyxtQkFBbUIsQ0FBQywrQkFBK0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztDQUNoRyxLQUFLLENBQUM7Q0FDTixJQUFJLG1CQUFtQixDQUFDLCtCQUErQixHQUFHLFVBQVUsV0FBVyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUU7Q0FDNUYsUUFBUSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7Q0FDdEIsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFO0NBQ3ZDLFlBQVksSUFBSSxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsRUFBRTtDQUMxQyxnQkFBZ0IsS0FBSyxJQUFJLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0NBQzdDLGFBQWE7Q0FDYixTQUFTO0NBQ1QsUUFBUSxPQUFPLEtBQUssQ0FBQztDQUNyQixLQUFLLENBQUM7Q0FDTixJQUFJLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyx5QkFBeUIsR0FBRyxVQUFVLEdBQUcsRUFBRSxTQUFTLEVBQUU7Q0FDeEY7Q0FDQSxRQUFRLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7Q0FDdEMsUUFBUSxJQUFJLFNBQVMsSUFBSSxJQUFJLEVBQUU7Q0FDL0IsWUFBWSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztDQUMxQyxTQUFTO0NBQ1QsUUFBUSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztDQUN0QyxRQUFRLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztDQUM3QyxRQUFRLElBQUksV0FBVyxJQUFJLElBQUksSUFBSSxXQUFXLENBQUMsV0FBVyxFQUFFLEVBQUU7Q0FDOUQsWUFBWSxPQUFPLElBQUksb0JBQW9CLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsRUFBRSxXQUFXLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO0NBQ3pJLFNBQVM7Q0FDVCxRQUFRLE9BQU8sSUFBSSxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7Q0FDcEcsS0FBSyxDQUFDO0NBQ04sSUFBSSxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsV0FBVyxHQUFHLFlBQVk7Q0FDNUQsUUFBUSxJQUFJLFVBQVUsQ0FBQztDQUN2QixRQUFRLElBQUksTUFBTSxDQUFDO0NBQ25CLFFBQVEsR0FBRztDQUNYLFlBQVksSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztDQUM3RCxZQUFZLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRTtDQUN4QyxnQkFBZ0IsTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztDQUNoRCxnQkFBZ0IsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztDQUNqRCxhQUFhO0NBQ2IsaUJBQWlCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRTtDQUNqRCxnQkFBZ0IsTUFBTSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0NBQ3BELGdCQUFnQixVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO0NBQ2pELGFBQWE7Q0FDYixpQkFBaUI7Q0FDakIsZ0JBQWdCLE1BQU0sR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztDQUNsRCxnQkFBZ0IsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztDQUNqRCxhQUFhO0NBQ2IsWUFBWSxJQUFJLGVBQWUsR0FBRyxlQUFlLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztDQUNqRixZQUFZLElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxVQUFVLEVBQUU7Q0FDakQsZ0JBQWdCLE1BQU07Q0FDdEIsYUFBYTtDQUNiLFNBQVMsUUFBUSxDQUFDLFVBQVUsRUFBRTtDQUM5QixRQUFRLE9BQU8sTUFBTSxDQUFDLHFCQUFxQixFQUFFLENBQUM7Q0FDOUMsS0FBSyxDQUFDO0NBQ04sSUFBSSxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLEdBQUcsWUFBWTtDQUNsRSxRQUFRLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUU7Q0FDaEUsWUFBWSxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztDQUN6RSxZQUFZLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO0NBQy9ELFlBQVksSUFBSSxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsRUFBRTtDQUM1QyxnQkFBZ0IsSUFBSSxXQUFXLEdBQUcsS0FBSyxDQUFDLENBQUM7Q0FDekMsZ0JBQWdCLElBQUksT0FBTyxDQUFDLGlCQUFpQixFQUFFLEVBQUU7Q0FDakQsb0JBQW9CLFdBQVcsR0FBRyxJQUFJLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztDQUN2SCxpQkFBaUI7Q0FDakIscUJBQXFCO0NBQ3JCLG9CQUFvQixXQUFXLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUFFLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO0NBQ2pKLGlCQUFpQjtDQUNqQixnQkFBZ0IsT0FBTyxJQUFJLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7Q0FDMUUsYUFBYTtDQUNiLFlBQVksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7Q0FDeEQsWUFBWSxJQUFJLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxFQUFFO0NBQzdDLGdCQUFnQixJQUFJLFdBQVcsR0FBRyxJQUFJLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztDQUN2SCxnQkFBZ0IsT0FBTyxJQUFJLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7Q0FDMUUsYUFBYTtDQUNiLFlBQVksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7Q0FDekQsU0FBUztDQUNULFFBQVEsSUFBSSxJQUFJLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFO0NBQzNFLFlBQVksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztDQUNwQyxZQUFZLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDOUMsU0FBUztDQUNULFFBQVEsT0FBTyxJQUFJLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztDQUN0RCxLQUFLLENBQUM7Q0FDTixJQUFJLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsR0FBRyxZQUFZO0NBQ3BFLFFBQVEsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFO0NBQ2xFLFlBQVksSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7Q0FDdkUsWUFBWSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztDQUMzRCxZQUFZLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFO0NBQzlCLGdCQUFnQixJQUFJLFdBQVcsR0FBRyxJQUFJLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztDQUN2SCxnQkFBZ0IsT0FBTyxJQUFJLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7Q0FDMUUsYUFBYTtDQUNiLFlBQVksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7Q0FDL0MsU0FBUztDQUNULFFBQVEsSUFBSSxJQUFJLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFO0NBQ3pFLFlBQVksSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUM5QyxZQUFZLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7Q0FDdEMsU0FBUztDQUNULGFBQWEsSUFBSSxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFO0NBQzVFLFlBQVksSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxFQUFFO0NBQzdFLGdCQUFnQixJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ2xELGFBQWE7Q0FDYixpQkFBaUI7Q0FDakIsZ0JBQWdCLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztDQUNyRSxhQUFhO0NBQ2IsWUFBWSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO0NBQ3BDLFNBQVM7Q0FDVCxRQUFRLE9BQU8sSUFBSSxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7Q0FDdEQsS0FBSyxDQUFDO0NBQ04sSUFBSSxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsZUFBZSxHQUFHLFlBQVk7Q0FDaEUsUUFBUSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFO0NBQzlELFlBQVksSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztDQUM1RSxZQUFZLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO0NBQzdELFlBQVksSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUU7Q0FDaEMsZ0JBQWdCLElBQUksV0FBVyxHQUFHLElBQUksb0JBQW9CLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0NBQ3ZILGdCQUFnQixPQUFPLElBQUksbUJBQW1CLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztDQUMxRSxhQUFhO0NBQ2IsWUFBWSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztDQUNqRCxTQUFTO0NBQ1QsUUFBUSxJQUFJLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUU7Q0FDekUsWUFBWSxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQzlDLFlBQVksSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztDQUN0QyxTQUFTO0NBQ1QsYUFBYSxJQUFJLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUU7Q0FDNUUsWUFBWSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLEVBQUU7Q0FDN0UsZ0JBQWdCLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDbEQsYUFBYTtDQUNiLGlCQUFpQjtDQUNqQixnQkFBZ0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0NBQ3JFLGFBQWE7Q0FDYixZQUFZLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7Q0FDeEMsU0FBUztDQUNULFFBQVEsT0FBTyxJQUFJLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztDQUN0RCxLQUFLLENBQUM7Q0FDTixJQUFJLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsR0FBRyxVQUFVLEdBQUcsRUFBRTtDQUNwRSxRQUFRLElBQUksR0FBRyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxFQUFFO0NBQ2xELFlBQVksT0FBTyxLQUFLLENBQUM7Q0FDekIsU0FBUztDQUNULFFBQVEsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLCtCQUErQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUN4RSxRQUFRLElBQUksWUFBWSxJQUFJLENBQUMsSUFBSSxZQUFZLEdBQUcsRUFBRSxFQUFFO0NBQ3BELFlBQVksT0FBTyxJQUFJLENBQUM7Q0FDeEIsU0FBUztDQUNULFFBQVEsSUFBSSxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLEVBQUU7Q0FDbEQsWUFBWSxPQUFPLEtBQUssQ0FBQztDQUN6QixTQUFTO0NBQ1QsUUFBUSxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsK0JBQStCLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQ3pFLFFBQVEsSUFBSSxhQUFhLElBQUksRUFBRSxJQUFJLGFBQWEsR0FBRyxHQUFHLEVBQUU7Q0FDeEQsWUFBWSxPQUFPLElBQUksQ0FBQztDQUN4QixTQUFTO0NBQ1QsUUFBUSxJQUFJLEdBQUcsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsRUFBRTtDQUNsRCxZQUFZLE9BQU8sS0FBSyxDQUFDO0NBQ3pCLFNBQVM7Q0FDVCxRQUFRLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDekUsUUFBUSxPQUFPLGFBQWEsSUFBSSxHQUFHLElBQUksYUFBYSxHQUFHLEdBQUcsQ0FBQztDQUMzRCxLQUFLLENBQUM7Q0FDTixJQUFJLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxlQUFlLEdBQUcsVUFBVSxHQUFHLEVBQUU7Q0FDbkUsUUFBUSxJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsK0JBQStCLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQ3hFLFFBQVEsSUFBSSxZQUFZLEtBQUssRUFBRSxFQUFFO0NBQ2pDLFlBQVksT0FBTyxJQUFJLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0NBQ2xGLFNBQVM7Q0FDVCxRQUFRLElBQUksWUFBWSxJQUFJLENBQUMsSUFBSSxZQUFZLEdBQUcsRUFBRSxFQUFFO0NBQ3BELFlBQVksT0FBTyxJQUFJLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7Q0FDbEYsU0FBUztDQUNULFFBQVEsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLCtCQUErQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUN6RSxRQUFRLElBQUksYUFBYSxJQUFJLEVBQUUsSUFBSSxhQUFhLEdBQUcsRUFBRSxFQUFFO0NBQ3ZELFlBQVksT0FBTyxJQUFJLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksYUFBYSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7Q0FDbEYsU0FBUztDQUNULFFBQVEsSUFBSSxhQUFhLElBQUksRUFBRSxJQUFJLGFBQWEsR0FBRyxHQUFHLEVBQUU7Q0FDeEQsWUFBWSxPQUFPLElBQUksYUFBYSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxhQUFhLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztDQUNsRixTQUFTO0NBQ1QsUUFBUSxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsK0JBQStCLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQ3pFLFFBQVEsSUFBSSxDQUFDLENBQUM7Q0FDZCxRQUFRLFFBQVEsYUFBYTtDQUM3QixZQUFZLEtBQUssR0FBRztDQUNwQixnQkFBZ0IsQ0FBQyxHQUFHLEdBQUcsQ0FBQztDQUN4QixnQkFBZ0IsTUFBTTtDQUN0QixZQUFZLEtBQUssR0FBRztDQUNwQixnQkFBZ0IsQ0FBQyxHQUFHLEdBQUcsQ0FBQztDQUN4QixnQkFBZ0IsTUFBTTtDQUN0QixZQUFZLEtBQUssR0FBRztDQUNwQixnQkFBZ0IsQ0FBQyxHQUFHLEdBQUcsQ0FBQztDQUN4QixnQkFBZ0IsTUFBTTtDQUN0QixZQUFZLEtBQUssR0FBRztDQUNwQixnQkFBZ0IsQ0FBQyxHQUFHLEdBQUcsQ0FBQztDQUN4QixnQkFBZ0IsTUFBTTtDQUN0QixZQUFZLEtBQUssR0FBRztDQUNwQixnQkFBZ0IsQ0FBQyxHQUFHLElBQUksQ0FBQztDQUN6QixnQkFBZ0IsTUFBTTtDQUN0QixZQUFZLEtBQUssR0FBRztDQUNwQixnQkFBZ0IsQ0FBQyxHQUFHLEdBQUcsQ0FBQztDQUN4QixnQkFBZ0IsTUFBTTtDQUN0QixZQUFZLEtBQUssR0FBRztDQUNwQixnQkFBZ0IsQ0FBQyxHQUFHLEdBQUcsQ0FBQztDQUN4QixnQkFBZ0IsTUFBTTtDQUN0QixZQUFZLEtBQUssR0FBRztDQUNwQixnQkFBZ0IsQ0FBQyxHQUFHLEdBQUcsQ0FBQztDQUN4QixnQkFBZ0IsTUFBTTtDQUN0QixZQUFZLEtBQUssR0FBRztDQUNwQixnQkFBZ0IsQ0FBQyxHQUFHLEdBQUcsQ0FBQztDQUN4QixnQkFBZ0IsTUFBTTtDQUN0QixZQUFZLEtBQUssR0FBRztDQUNwQixnQkFBZ0IsQ0FBQyxHQUFHLEdBQUcsQ0FBQztDQUN4QixnQkFBZ0IsTUFBTTtDQUN0QixZQUFZLEtBQUssR0FBRztDQUNwQixnQkFBZ0IsQ0FBQyxHQUFHLEdBQUcsQ0FBQztDQUN4QixnQkFBZ0IsTUFBTTtDQUN0QixZQUFZLEtBQUssR0FBRztDQUNwQixnQkFBZ0IsQ0FBQyxHQUFHLEdBQUcsQ0FBQztDQUN4QixnQkFBZ0IsTUFBTTtDQUN0QixZQUFZLEtBQUssR0FBRztDQUNwQixnQkFBZ0IsQ0FBQyxHQUFHLEdBQUcsQ0FBQztDQUN4QixnQkFBZ0IsTUFBTTtDQUN0QixZQUFZLEtBQUssR0FBRztDQUNwQixnQkFBZ0IsQ0FBQyxHQUFHLEdBQUcsQ0FBQztDQUN4QixnQkFBZ0IsTUFBTTtDQUN0QixZQUFZLEtBQUssR0FBRztDQUNwQixnQkFBZ0IsQ0FBQyxHQUFHLEdBQUcsQ0FBQztDQUN4QixnQkFBZ0IsTUFBTTtDQUN0QixZQUFZLEtBQUssR0FBRztDQUNwQixnQkFBZ0IsQ0FBQyxHQUFHLEdBQUcsQ0FBQztDQUN4QixnQkFBZ0IsTUFBTTtDQUN0QixZQUFZLEtBQUssR0FBRztDQUNwQixnQkFBZ0IsQ0FBQyxHQUFHLEdBQUcsQ0FBQztDQUN4QixnQkFBZ0IsTUFBTTtDQUN0QixZQUFZLEtBQUssR0FBRztDQUNwQixnQkFBZ0IsQ0FBQyxHQUFHLEdBQUcsQ0FBQztDQUN4QixnQkFBZ0IsTUFBTTtDQUN0QixZQUFZLEtBQUssR0FB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QUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUNyQyxLQUFLLENBQUM7Q0FDTixJQUFJLGlCQUFpQixDQUFDLE9BQU8sR0FBRztDQUNoQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztDQUNyQyxRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztDQUMxQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztDQUM5QyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztDQUM1QyxRQUFRLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztDQUM3QyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztDQUM1QyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztDQUMzQyxRQUFRLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztDQUM1QyxRQUFRLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztDQUMvQyxRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztDQUM1QyxRQUFRLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztDQUMvQyxRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztDQUMxQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztDQUNoRCxRQUFRLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztDQUMvQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztDQUM3QyxRQUFRLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztDQUMxQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztDQUMxQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztDQUM1QyxRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztDQUMzQyxRQUFRLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztDQUM3QyxRQUFRLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztDQUM3QyxRQUFRLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztDQUN2QyxRQUFRLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztDQUM3QyxLQUFLLENBQUM7Q0FDTixJQUFJLGlCQUFpQixDQUFDLFlBQVksR0FBRyxDQUFDLENBQUM7Q0FDdkMsSUFBSSxpQkFBaUIsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO0NBQ3ZDLElBQUksaUJBQWlCLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztDQUN2QyxJQUFJLGlCQUFpQixDQUFDLFlBQVksR0FBRyxDQUFDLENBQUM7Q0FDdkMsSUFBSSxpQkFBaUIsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO0NBQ3ZDLElBQUksaUJBQWlCLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztDQUN2QyxJQUFJLGlCQUFpQixDQUFDLHdCQUF3QixHQUFHO0NBQ2pELFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUMsWUFBWSxDQUFDO0NBQ3hFLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUMsWUFBWSxFQUFFLGlCQUFpQixDQUFDLFlBQVksQ0FBQztDQUN4RyxRQUFRLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLGlCQUFpQixDQUFDLFlBQVksRUFBRSxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUMsWUFBWSxDQUFDO0NBQ3hJLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUMsWUFBWSxFQUFFLGlCQUFpQixDQUFDLFlBQVksRUFBRSxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUMsWUFBWSxDQUFDO0NBQ3hLLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUMsWUFBWSxFQUFFLGlCQUFpQixDQUFDLFlBQVksRUFBRSxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUMsWUFBWSxFQUFFLGlCQUFpQixDQUFDLFlBQVksQ0FBQztDQUN4TSxRQUFRLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLGlCQUFpQixDQUFDLFlBQVksRUFBRSxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUMsWUFBWSxFQUFFLGlCQUFpQixDQUFDLFlBQVksRUFBRSxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUMsWUFBWSxDQUFDO0NBQ3hPLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUMsWUFBWSxFQUFFLGlCQUFpQixDQUFDLFlBQVksRUFBRSxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUMsWUFBWSxFQUFFLGlCQUFpQixDQUFDLFlBQVksRUFBRSxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUMsWUFBWSxDQUFDO0NBQ3hRLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUMsWUFBWSxFQUFFLGlCQUFpQixDQUFDLFlBQVksRUFBRSxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUMsWUFBWSxFQUFFLGlCQUFpQixDQUFDLFlBQVksRUFBRSxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUMsWUFBWSxFQUFFLGlCQUFpQixDQUFDLFlBQVksQ0FBQztDQUN4UyxRQUFRLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLGlCQUFpQixDQUFDLFlBQVksRUFBRSxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUMsWUFBWSxFQUFFLGlCQUFpQixDQUFDLFlBQVksRUFBRSxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUMsWUFBWSxFQUFFLGlCQUFpQixDQUFDLFlBQVksRUFBRSxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUMsWUFBWSxDQUFDO0NBQ3hVLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUMsWUFBWSxFQUFFLGlCQUFpQixDQUFDLFlBQVksRUFBRSxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUMsWUFBWSxFQUFFLGlCQUFpQixDQUFDLFlBQVksRUFBRSxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUMsWUFBWSxFQUFFLGlCQUFpQixDQUFDLFlBQVksRUFBRSxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUMsWUFBWSxDQUFDO0NBQ3hXLEtBQUssQ0FBQztDQUNOLElBQUksaUJBQWlCLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztDQUNyQyxJQUFJLE9BQU8saUJBQWlCLENBQUM7Q0FDN0IsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7Q0FDaEMsZUFBZSxHQUFHLGlCQUFpQixDQUFDOzs7OztDQ2x6QnBDLElBQUksU0FBUyxHQUFHLENBQUNELGNBQUksSUFBSUEsY0FBSSxDQUFDLFNBQVMsS0FBSyxDQUFDLFlBQVk7Q0FDekQsSUFBSSxJQUFJLGFBQWEsR0FBRyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUU7Q0FDeEMsUUFBUSxhQUFhLEdBQUcsTUFBTSxDQUFDLGNBQWM7Q0FDN0MsYUFBYSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsWUFBWSxLQUFLLElBQUksVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO0NBQ3hGLFlBQVksVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0NBQ3ZGLFFBQVEsT0FBTyxhQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQ25DLEtBQUssQ0FBQztDQUNOLElBQUksT0FBTyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUU7Q0FDM0IsUUFBUSxhQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzVCLFFBQVEsU0FBUyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxFQUFFO0NBQy9DLFFBQVEsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLEtBQUssSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztDQUM3RixLQUFLLENBQUM7Q0FDTixDQUFDLEdBQUcsQ0FBQztDQUNMLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQ2I7Q0FDakQsSUFBSSxJQUFJLGtCQUFrQixVQUFVLE1BQU0sRUFBRTtDQUM1QyxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7Q0FDNUIsSUFBSSxTQUFTLElBQUksQ0FBQyxLQUFLLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRTtDQUN6RCxRQUFRLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxlQUFlLENBQUMsSUFBSSxJQUFJLENBQUM7Q0FDdEUsUUFBUSxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztDQUN4QixRQUFRLEtBQUssQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO0NBQzVDLFFBQVEsT0FBTyxLQUFLLENBQUM7Q0FDckIsS0FBSztDQUNMLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsR0FBRyxZQUFZO0NBQ2xELFFBQVEsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0NBQ2xDLEtBQUssQ0FBQztDQUNOLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsWUFBWTtDQUMxQyxRQUFRLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztDQUMxQixLQUFLLENBQUM7Q0FDTixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxHQUFHLFlBQVk7Q0FDaEQsUUFBUSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Q0FDckIsS0FBSyxDQUFDO0NBQ04sSUFBSSxPQUFPLElBQUksQ0FBQztDQUNoQixDQUFDLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7Q0FDNUIsZUFBZSxHQUFHLElBQUksQ0FBQzs7Ozs7Q0NsQ3ZCLElBQUksU0FBUyxHQUFHLENBQUNBLGNBQUksSUFBSUEsY0FBSSxDQUFDLFNBQVMsS0FBSyxDQUFDLFlBQVk7Q0FDekQsSUFBSSxJQUFJLGFBQWEsR0FBRyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUU7Q0FDeEMsUUFBUSxhQUFhLEdBQUcsTUFBTSxDQUFDLGNBQWM7Q0FDN0MsYUFBYSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsWUFBWSxLQUFLLElBQUksVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO0NBQ3hGLFlBQVksVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0NBQ3ZGLFFBQVEsT0FBTyxhQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQ25DLEtBQUssQ0FBQztDQUNOLElBQUksT0FBTyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUU7Q0FDM0IsUUFBUSxhQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzVCLFFBQVEsU0FBUyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxFQUFFO0NBQy9DLFFBQVEsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLEtBQUssSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztDQUM3RixLQUFLLENBQUM7Q0FDTixDQUFDLEdBQUcsQ0FBQztDQUNMLElBQUksUUFBUSxHQUFHLENBQUNBLGNBQUksSUFBSUEsY0FBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLENBQUMsRUFBRTtDQUN0RCxJQUFJLElBQUksQ0FBQyxHQUFHLE9BQU8sTUFBTSxLQUFLLFVBQVUsSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7Q0FDbEYsSUFBSSxJQUFJLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDNUIsSUFBSSxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxNQUFNLEtBQUssUUFBUSxFQUFFLE9BQU87Q0FDbEQsUUFBUSxJQUFJLEVBQUUsWUFBWTtDQUMxQixZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztDQUMvQyxZQUFZLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO0NBQ3BELFNBQVM7Q0FDVCxLQUFLLENBQUM7Q0FDTixJQUFJLE1BQU0sSUFBSSxTQUFTLENBQUMsQ0FBQyxHQUFHLHlCQUF5QixHQUFHLGlDQUFpQyxDQUFDLENBQUM7Q0FDM0YsQ0FBQyxDQUFDO0NBQ0YsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDTDtBQUMxQjtBQUNRO0FBQ2dCO0FBQ007QUFDSDtBQUNMO0FBQ0o7QUFDQTtBQUNBO0FBQ1k7QUFDdEI7QUFDSztBQUNBO0NBQzVDLElBQUksV0FBVyxrQkFBa0IsVUFBVSxNQUFNLEVBQUU7Q0FDbkQsSUFBSSxTQUFTLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0NBQ25DLElBQUksU0FBUyxXQUFXLEdBQUc7Q0FDM0IsUUFBUSxJQUFJLEtBQUssR0FBRyxNQUFNLEtBQUssSUFBSSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQztDQUM3RSxRQUFRLEtBQUssQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUM7Q0FDckMsUUFBUSxLQUFLLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxDQUFDO0NBQ3RDLFFBQVEsT0FBTyxLQUFLLENBQUM7Q0FDckIsS0FBSztDQUNMLElBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsVUFBVSxTQUFTLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtDQUN2RSxRQUFRLElBQUksR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0NBQzdCLFFBQVEsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztDQUNyRSxRQUFRLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLFFBQVEsQ0FBQyxDQUFDO0NBQ2pFLFFBQVEsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO0NBQ3RCLFFBQVEsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztDQUNyRSxRQUFRLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLFNBQVMsQ0FBQyxDQUFDO0NBQ25FLFFBQVEsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO0NBQ3RCLFFBQVEsSUFBSTtDQUNaLFlBQVksS0FBSyxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtDQUN0RyxnQkFBZ0IsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQztDQUNwQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxFQUFFO0NBQ3pDLG9CQUFvQixJQUFJO0NBQ3hCLHdCQUF3QixLQUFLLElBQUksRUFBRSxJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO0NBQ25JLDRCQUE0QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO0NBQ2pELDRCQUE0QixJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLElBQUksV0FBVyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUU7Q0FDaEcsZ0NBQWdDLE9BQU8sV0FBVyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7Q0FDaEYsNkJBQTZCO0NBQzdCLHlCQUF5QjtDQUN6QixxQkFBcUI7Q0FDckIsb0JBQW9CLE9BQU8sS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7Q0FDN0QsNEJBQTRCO0NBQzVCLHdCQUF3QixJQUFJO0NBQzVCLDRCQUE0QixJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0NBQ2hGLHlCQUF5QjtDQUN6QixnQ0FBZ0MsRUFBRSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtDQUM3RCxxQkFBcUI7Q0FDckIsaUJBQWlCO0NBQ2pCLGFBQWE7Q0FDYixTQUFTO0NBQ1QsUUFBUSxPQUFPLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO0NBQ2pELGdCQUFnQjtDQUNoQixZQUFZLElBQUk7Q0FDaEIsZ0JBQWdCLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Q0FDcEUsYUFBYTtDQUNiLG9CQUFvQixFQUFFLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO0NBQ2pELFNBQVM7Q0FDVCxRQUFRLE1BQU0sSUFBSSxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztDQUNoRCxLQUFLLENBQUM7Q0FDTixJQUFJLFdBQVcsQ0FBQyxVQUFVLEdBQUcsVUFBVSxhQUFhLEVBQUUsSUFBSSxFQUFFO0NBQzVELFFBQVEsSUFBSSxHQUFHLEVBQUUsRUFBRSxDQUFDO0NBQ3BCLFFBQVEsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFO0NBQzFCLFlBQVksT0FBTztDQUNuQixTQUFTO0NBQ1QsUUFBUSxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUM7Q0FDMUIsUUFBUSxJQUFJO0NBQ1osWUFBWSxLQUFLLElBQUksZUFBZSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsRUFBRSxpQkFBaUIsR0FBRyxlQUFlLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLEdBQUcsZUFBZSxDQUFDLElBQUksRUFBRSxFQUFFO0NBQ2pMLGdCQUFnQixJQUFJLEtBQUssR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUM7Q0FDcEQsZ0JBQWdCLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRTtDQUMxRCxvQkFBb0IsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO0NBQzNDLG9CQUFvQixLQUFLLEdBQUcsSUFBSSxDQUFDO0NBQ2pDLG9CQUFvQixNQUFNO0NBQzFCLGlCQUFpQjtDQUNqQixhQUFhO0NBQ2IsU0FBUztDQUNULFFBQVEsT0FBTyxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtDQUNqRCxnQkFBZ0I7Q0FDaEIsWUFBWSxJQUFJO0NBQ2hCLGdCQUFnQixJQUFJLGlCQUFpQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxLQUFLLEVBQUUsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztDQUM1SCxhQUFhO0NBQ2Isb0JBQW9CLEVBQUUsSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7Q0FDakQsU0FBUztDQUNULFFBQVEsSUFBSSxDQUFDLEtBQUssRUFBRTtDQUNwQixZQUFZLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Q0FDckMsU0FBUztDQUNULEtBQUssQ0FBQztDQUNOLElBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsWUFBWTtDQUM5QyxRQUFRLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0NBQzFDLFFBQVEsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7Q0FDM0MsS0FBSyxDQUFDO0NBQ04sSUFBSSxXQUFXLENBQUMsZUFBZSxHQUFHLFVBQVUsUUFBUSxFQUFFLFNBQVMsRUFBRTtDQUNqRSxRQUFRLElBQUksV0FBVyxHQUFHLE9BQU8sR0FBRyxRQUFRLENBQUMsUUFBUSxFQUFFLEdBQUcsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0NBQy9FLFFBQVEsSUFBSSxJQUFJLEdBQUcsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7Q0FDdEQsUUFBUSxJQUFJLE1BQU0sR0FBRyxJQUFJLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztDQUNuRCxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtDQUNuRCxZQUFZLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7Q0FDL0IsU0FBUztDQUNULFFBQVEsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztDQUM1QixRQUFRLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQztDQUMzQixRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Q0FDckMsWUFBWSxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQzNFLFlBQVksVUFBVSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxHQUFHLEtBQUssQ0FBQztDQUNqRSxTQUFTO0NBQ1QsUUFBUSxVQUFVLEdBQUcsRUFBRSxJQUFJLFVBQVUsR0FBRyxFQUFFLENBQUMsQ0FBQztDQUM1QyxRQUFRLElBQUksVUFBVSxLQUFLLEVBQUUsRUFBRTtDQUMvQixZQUFZLFVBQVUsR0FBRyxDQUFDLENBQUM7Q0FDM0IsU0FBUztDQUNULFFBQVEsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztDQUM3QyxRQUFRLElBQUksVUFBVSxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLGVBQWUsRUFBRSxDQUFDO0NBQ3ZFLFFBQVEsSUFBSSxXQUFXLEdBQUcsU0FBUyxDQUFDLGdCQUFnQixFQUFFLENBQUMsZUFBZSxFQUFFLENBQUM7Q0FDekUsUUFBUSxPQUFPLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztDQUN0TCxLQUFLLENBQUM7Q0FDTixJQUFJLFdBQVcsQ0FBQyxhQUFhLEdBQUcsVUFBVSxRQUFRLEVBQUUsU0FBUyxFQUFFO0NBQy9ELFFBQVEsSUFBSSxVQUFVLEdBQUcsQ0FBQyxRQUFRLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxFQUFFLEdBQUcsU0FBUyxDQUFDLGtCQUFrQixFQUFFLElBQUksRUFBRSxDQUFDO0NBQ3BHLFFBQVEsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxFQUFFLEdBQUcsU0FBUyxDQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7Q0FDcEgsUUFBUSxJQUFJLGdCQUFnQixHQUFHLEVBQUUsRUFBRTtDQUNuQyxZQUFZLGdCQUFnQixFQUFFLENBQUM7Q0FDL0IsU0FBUztDQUNULFFBQVEsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLEVBQUU7Q0FDbEMsWUFBWSxnQkFBZ0IsRUFBRSxDQUFDO0NBQy9CLFNBQVM7Q0FDVCxRQUFRLE9BQU8sVUFBVSxLQUFLLGdCQUFnQixDQUFDO0NBQy9DLEtBQUssQ0FBQztDQUNOLElBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsVUFBVSxHQUFHLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUU7Q0FDL0UsUUFBUSxJQUFJO0NBQ1osWUFBWSxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0NBQzlELFlBQVksSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0NBQ3hGLFlBQVksSUFBSSxtQkFBbUIsR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0NBQzVILFlBQVksSUFBSSxtQkFBbUIsSUFBSSxJQUFJLEVBQUU7Q0FDN0MsZ0JBQWdCLElBQUksTUFBTSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUM7Q0FDL0QsZ0JBQWdCLElBQUksS0FBSyxFQUFFO0NBQzNCO0NBQ0Esb0JBQW9CLE1BQU0sR0FBRyxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQztDQUN4RCxpQkFBaUI7Q0FDakIsZ0JBQWdCLG1CQUFtQixDQUFDLHdCQUF3QixDQUFDLElBQUksYUFBYSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztDQUMzRyxhQUFhO0NBQ2IsWUFBWSxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztDQUN2RSxZQUFZLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0NBQ3ZFLFlBQVksT0FBTyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUUsT0FBTyxDQUFDLGtCQUFrQixFQUFFLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0NBQzlKLFNBQVM7Q0FDVCxRQUFRLE9BQU8sR0FBRyxFQUFFO0NBQ3BCLFlBQVksT0FBTyxJQUFJLENBQUM7Q0FDeEIsU0FBUztDQUNULEtBQUssQ0FBQztDQUNOLElBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsR0FBRyxVQUFVLEdBQUcsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFO0NBQ3JGLFFBQVEsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7Q0FDdkQsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtDQUNsRCxZQUFZLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7Q0FDNUIsU0FBUztDQUNULFFBQVEsSUFBSSxXQUFXLEVBQUU7Q0FDekIsWUFBWSxZQUFZLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7Q0FDakcsU0FBUztDQUNULGFBQWE7Q0FDYixZQUFZLFlBQVksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0NBQzVGO0NBQ0EsWUFBWSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtDQUN0RSxnQkFBZ0IsSUFBSSxJQUFJLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ3ZDLGdCQUFnQixRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQzFDLGdCQUFnQixRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO0NBQ25DLGFBQWE7Q0FDYixTQUFTO0NBQ1QsUUFBUSxJQUFJLFVBQVUsR0FBRyxXQUFXLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztDQUMvQyxRQUFRLElBQUksWUFBWSxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDO0NBQzFGLFFBQVEsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0NBQzVDLFFBQVEsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0NBQzlDLFFBQVEsSUFBSSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztDQUM1RCxRQUFRLElBQUksa0JBQWtCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7Q0FDOUQsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtDQUNsRCxZQUFZLElBQUksS0FBSyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxZQUFZLENBQUM7Q0FDbkQsWUFBWSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQztDQUNoRCxZQUFZLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtDQUMzQixnQkFBZ0IsS0FBSyxHQUFHLENBQUMsQ0FBQztDQUMxQixhQUFhO0NBQ2IsaUJBQWlCLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtDQUNoQyxnQkFBZ0IsS0FBSyxHQUFHLENBQUMsQ0FBQztDQUMxQixhQUFhO0NBQ2IsWUFBWSxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztDQUMzQyxZQUFZLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxNQUFNLENBQUMsRUFBRTtDQUNsQyxnQkFBZ0IsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQztDQUMxQyxnQkFBZ0IsaUJBQWlCLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxHQUFHLEtBQUssQ0FBQztDQUMxRCxhQUFhO0NBQ2IsaUJBQWlCO0NBQ2pCLGdCQUFnQixVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDO0NBQzNDLGdCQUFnQixrQkFBa0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLEdBQUcsS0FBSyxDQUFDO0NBQzNELGFBQWE7Q0FDYixTQUFTO0NBQ1QsUUFBUSxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0NBQzFELFFBQVEsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0NBQ3ZCLFFBQVEsSUFBSSxrQkFBa0IsR0FBRyxDQUFDLENBQUM7Q0FDbkMsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Q0FDeEQsWUFBWSxrQkFBa0IsSUFBSSxDQUFDLENBQUM7Q0FDcEMsWUFBWSxrQkFBa0IsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDL0MsWUFBWSxNQUFNLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ25DLFNBQVM7Q0FDVCxRQUFRLElBQUksbUJBQW1CLEdBQUcsQ0FBQyxDQUFDO0NBQ3BDLFFBQVEsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO0NBQ3hCLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0NBQ3pELFlBQVksbUJBQW1CLElBQUksQ0FBQyxDQUFDO0NBQ3JDLFlBQVksbUJBQW1CLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ2pELFlBQVksT0FBTyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUNyQyxTQUFTO0NBQ1QsUUFBUSxJQUFJLGVBQWUsR0FBRyxrQkFBa0IsR0FBRyxDQUFDLEdBQUcsbUJBQW1CLENBQUM7Q0FDM0UsUUFBUSxJQUFJLFdBQVcsRUFBRTtDQUN6QixZQUFZLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxNQUFNLEdBQUcsRUFBRSxJQUFJLE1BQU0sR0FBRyxDQUFDLEVBQUU7Q0FDcEUsZ0JBQWdCLE1BQU0sSUFBSSxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztDQUN4RCxhQUFhO0NBQ2IsWUFBWSxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxDQUFDO0NBQzFDLFlBQVksSUFBSSxTQUFTLEdBQUcsV0FBVyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO0NBQ2xFLFlBQVksSUFBSSxVQUFVLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQztDQUMzQyxZQUFZLElBQUksSUFBSSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7Q0FDbkYsWUFBWSxJQUFJLEtBQUssR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO0NBQ3JGLFlBQVksSUFBSSxLQUFLLEdBQUcsV0FBVyxDQUFDLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO0NBQ3JFLFlBQVksSUFBSSxJQUFJLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztDQUN2RCxZQUFZLE9BQU8sSUFBSSxlQUFlLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxLQUFLLEdBQUcsS0FBSyxHQUFHLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQztDQUM3RixTQUFTO0NBQ1QsYUFBYTtDQUNiLFlBQVksSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLE9BQU8sR0FBRyxFQUFFLElBQUksT0FBTyxHQUFHLENBQUMsRUFBRTtDQUN2RSxnQkFBZ0IsTUFBTSxJQUFJLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxDQUFDO0NBQ3hELGFBQWE7Q0FDYixZQUFZLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxHQUFHLE9BQU8sSUFBSSxDQUFDLENBQUM7Q0FDM0MsWUFBWSxJQUFJLFNBQVMsR0FBRyxXQUFXLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7Q0FDakUsWUFBWSxJQUFJLFVBQVUsR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDO0NBQzNDLFlBQVksSUFBSSxJQUFJLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztDQUNsRixZQUFZLElBQUksS0FBSyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7Q0FDdEYsWUFBWSxJQUFJLElBQUksR0FBRyxXQUFXLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7Q0FDbEUsWUFBWSxJQUFJLElBQUksR0FBRyxXQUFXLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0NBQ3RELFlBQVksT0FBTyxJQUFJLGVBQWUsQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0NBQzVGLFNBQVM7Q0FDVCxLQUFLLENBQUM7Q0FDTixJQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLEdBQUcsVUFBVSxHQUFHLEVBQUUsa0JBQWtCLEVBQUU7Q0FDakYsUUFBUSxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztDQUN0RCxRQUFRLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7Q0FDeEIsUUFBUSxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0NBQ3hCLFFBQVEsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztDQUN4QixRQUFRLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7Q0FDeEIsUUFBUSxJQUFJLEtBQUssR0FBRyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7Q0FDbEMsUUFBUSxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUM7Q0FDNUIsUUFBUSxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUM7Q0FDMUIsUUFBUSxPQUFPLFNBQVMsR0FBRyxLQUFLLEVBQUU7Q0FDbEMsWUFBWSxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0NBQzFDLFlBQVksSUFBSSxrQkFBa0IsS0FBSyxPQUFPLEVBQUU7Q0FDaEQ7Q0FDQSxnQkFBZ0IsTUFBTTtDQUN0QixhQUFhO0NBQ2IsWUFBWSxTQUFTLEVBQUUsQ0FBQztDQUN4QixTQUFTO0NBQ1QsUUFBUSxJQUFJLGVBQWUsR0FBRyxDQUFDLENBQUM7Q0FDaEMsUUFBUSxJQUFJLFlBQVksR0FBRyxTQUFTLENBQUM7Q0FDckMsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFO0NBQ2hELFlBQVksSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLE9BQU8sRUFBRTtDQUN4QyxnQkFBZ0IsUUFBUSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7Q0FDNUMsYUFBYTtDQUNiLGlCQUFpQjtDQUNqQixnQkFBZ0IsSUFBSSxlQUFlLEtBQUssQ0FBQyxFQUFFO0NBQzNDLG9CQUFvQixJQUFJLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLEVBQUU7Q0FDL0Usd0JBQXdCLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDakQscUJBQXFCO0NBQ3JCLG9CQUFvQixZQUFZLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUM5RCxvQkFBb0IsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUM5QyxvQkFBb0IsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUM5QyxvQkFBb0IsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztDQUNwQyxvQkFBb0IsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztDQUNwQyxvQkFBb0IsZUFBZSxFQUFFLENBQUM7Q0FDdEMsaUJBQWlCO0NBQ2pCLHFCQUFxQjtDQUNyQixvQkFBb0IsZUFBZSxFQUFFLENBQUM7Q0FDdEMsaUJBQWlCO0NBQ2pCLGdCQUFnQixRQUFRLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0NBQzlDLGdCQUFnQixPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUM7Q0FDbkMsYUFBYTtDQUNiLFNBQVM7Q0FDVCxRQUFRLE1BQU0sSUFBSSxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztDQUNoRCxLQUFLLENBQUM7Q0FDTixJQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsdUJBQXVCLEdBQUcsVUFBVSxHQUFHLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7Q0FDL0Y7Q0FDQSxRQUFRLElBQUksWUFBWSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDaEQsUUFBUSxJQUFJLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7Q0FDaEQ7Q0FDQSxRQUFRLE9BQU8saUJBQWlCLElBQUksQ0FBQyxJQUFJLFlBQVksS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLEVBQUU7Q0FDdEYsWUFBWSxpQkFBaUIsRUFBRSxDQUFDO0NBQ2hDLFNBQVM7Q0FDVCxRQUFRLGlCQUFpQixFQUFFLENBQUM7Q0FDNUIsUUFBUSxJQUFJLFlBQVksR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsaUJBQWlCLENBQUM7Q0FDM0Q7Q0FDQSxRQUFRLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO0NBQ3RELFFBQVEsSUFBSSxJQUFJLEdBQUcsSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0NBQ25ELFFBQVEsUUFBUSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7Q0FDOUUsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDO0NBQy9CLFFBQVEsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsZUFBZSxDQUFDLENBQUM7Q0FDN0UsUUFBUSxJQUFJLEtBQUssR0FBRyxpQkFBaUIsQ0FBQztDQUN0QyxRQUFRLElBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUM5QixRQUFRLElBQUksS0FBSyxFQUFFO0NBQ25CO0NBQ0EsWUFBWSxLQUFLLEdBQUcsR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7Q0FDOUMsWUFBWSxHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7Q0FDMUMsU0FBUztDQUNULFFBQVEsT0FBTyxJQUFJLGVBQWUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztDQUMzRyxLQUFLLENBQUM7Q0FDTixJQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEdBQUcsVUFBVSxXQUFXLEVBQUUsVUFBVSxFQUFFO0NBQ25GLFFBQVEsSUFBSSxNQUFNLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztDQUNsRixRQUFRLElBQUksT0FBTyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDcEYsUUFBUSxJQUFJLFlBQVksR0FBRyxLQUFLLENBQUM7Q0FDakMsUUFBUSxJQUFJLFlBQVksR0FBRyxLQUFLLENBQUM7Q0FDakMsUUFBUSxJQUFJLGFBQWEsR0FBRyxLQUFLLENBQUM7Q0FDbEMsUUFBUSxJQUFJLGFBQWEsR0FBRyxLQUFLLENBQUM7Q0FDbEMsUUFBUSxJQUFJLFdBQVcsRUFBRTtDQUN6QixZQUFZLElBQUksTUFBTSxHQUFHLEVBQUUsRUFBRTtDQUM3QixnQkFBZ0IsWUFBWSxHQUFHLElBQUksQ0FBQztDQUNwQyxhQUFhO0NBQ2IsaUJBQWlCLElBQUksTUFBTSxHQUFHLENBQUMsRUFBRTtDQUNqQyxnQkFBZ0IsWUFBWSxHQUFHLElBQUksQ0FBQztDQUNwQyxhQUFhO0NBQ2IsWUFBWSxJQUFJLE9BQU8sR0FBRyxFQUFFLEVBQUU7Q0FDOUIsZ0JBQWdCLGFBQWEsR0FBRyxJQUFJLENBQUM7Q0FDckMsYUFBYTtDQUNiLGlCQUFpQixJQUFJLE9BQU8sR0FBRyxDQUFDLEVBQUU7Q0FDbEMsZ0JBQWdCLGFBQWEsR0FBRyxJQUFJLENBQUM7Q0FDckMsYUFBYTtDQUNiLFNBQVM7Q0FDVCxhQUFhO0NBQ2IsWUFBWSxJQUFJLE1BQU0sR0FBRyxFQUFFLEVBQUU7Q0FDN0IsZ0JBQWdCLFlBQVksR0FBRyxJQUFJLENBQUM7Q0FDcEMsYUFBYTtDQUNiLGlCQUFpQixJQUFJLE1BQU0sR0FBRyxDQUFDLEVBQUU7Q0FDakMsZ0JBQWdCLFlBQVksR0FBRyxJQUFJLENBQUM7Q0FDcEMsYUFBYTtDQUNiLFlBQVksSUFBSSxPQUFPLEdBQUcsRUFBRSxFQUFFO0NBQzlCLGdCQUFnQixhQUFhLEdBQUcsSUFBSSxDQUFDO0NBQ3JDLGFBQWE7Q0FDYixpQkFBaUIsSUFBSSxPQUFPLEdBQUcsQ0FBQyxFQUFFO0NBQ2xDLGdCQUFnQixhQUFhLEdBQUcsSUFBSSxDQUFDO0NBQ3JDLGFBQWE7Q0FDYixTQUFTO0NBQ1QsUUFBUSxJQUFJLFFBQVEsR0FBRyxNQUFNLEdBQUcsT0FBTyxHQUFHLFVBQVUsQ0FBQztDQUNyRCxRQUFRLElBQUksWUFBWSxHQUFHLENBQUMsTUFBTSxHQUFHLElBQUksT0FBTyxXQUFXLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0NBQ3JFLFFBQVEsSUFBSSxhQUFhLEdBQUcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxNQUFNLENBQUMsQ0FBQztDQUNuRCxRQUFRLElBQUksUUFBUSxLQUFLLENBQUMsRUFBRTtDQUM1QixZQUFZLElBQUksWUFBWSxFQUFFO0NBQzlCLGdCQUFnQixJQUFJLGFBQWEsRUFBRTtDQUNuQyxvQkFBb0IsTUFBTSxJQUFJLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxDQUFDO0NBQzVELGlCQUFpQjtDQUNqQixnQkFBZ0IsWUFBWSxHQUFHLElBQUksQ0FBQztDQUNwQyxhQUFhO0NBQ2IsaUJBQWlCO0NBQ2pCLGdCQUFnQixJQUFJLENBQUMsYUFBYSxFQUFFO0NBQ3BDLG9CQUFvQixNQUFNLElBQUksbUJBQW1CLENBQUMsT0FBTyxFQUFFLENBQUM7Q0FDNUQsaUJBQWlCO0NBQ2pCLGdCQUFnQixhQUFhLEdBQUcsSUFBSSxDQUFDO0NBQ3JDLGFBQWE7Q0FDYixTQUFTO0NBQ1QsYUFBYSxJQUFJLFFBQVEsS0FBSyxDQUFDLENBQUMsRUFBRTtDQUNsQyxZQUFZLElBQUksWUFBWSxFQUFFO0NBQzlCLGdCQUFnQixJQUFJLGFBQWEsRUFBRTtDQUNuQyxvQkFBb0IsTUFBTSxJQUFJLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxDQUFDO0NBQzVELGlCQUFpQjtDQUNqQixnQkFBZ0IsWUFBWSxHQUFHLElBQUksQ0FBQztDQUNwQyxhQUFhO0NBQ2IsaUJBQWlCO0NBQ2pCLGdCQUFnQixJQUFJLENBQUMsYUFBYSxFQUFFO0NBQ3BDLG9CQUFvQixNQUFNLElBQUksbUJBQW1CLENBQUMsT0FBTyxFQUFFLENBQUM7Q0FDNUQsaUJBQWlCO0NBQ2pCLGdCQUFnQixhQUFhLEdBQUcsSUFBSSxDQUFDO0NBQ3JDLGFBQWE7Q0FDYixTQUFTO0NBQ1QsYUFBYSxJQUFJLFFBQVEsS0FBSyxDQUFDLEVBQUU7Q0FDakMsWUFBWSxJQUFJLFlBQVksRUFBRTtDQUM5QixnQkFBZ0IsSUFBSSxDQUFDLGFBQWEsRUFBRTtDQUNwQyxvQkFBb0IsTUFBTSxJQUFJLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxDQUFDO0NBQzVELGlCQUFpQjtDQUNqQjtDQUNBLGdCQUFnQixJQUFJLE1BQU0sR0FBRyxPQUFPLEVBQUU7Q0FDdEMsb0JBQW9CLFlBQVksR0FBRyxJQUFJLENBQUM7Q0FDeEMsb0JBQW9CLGFBQWEsR0FBRyxJQUFJLENBQUM7Q0FDekMsaUJBQWlCO0NBQ2pCLHFCQUFxQjtDQUNyQixvQkFBb0IsWUFBWSxHQUFHLElBQUksQ0FBQztDQUN4QyxvQkFBb0IsYUFBYSxHQUFHLElBQUksQ0FBQztDQUN6QyxpQkFBaUI7Q0FDakIsYUFBYTtDQUNiLGlCQUFpQjtDQUNqQixnQkFBZ0IsSUFBSSxhQUFhLEVBQUU7Q0FDbkMsb0JBQW9CLE1BQU0sSUFBSSxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztDQUM1RCxpQkFBaUI7Q0FDakI7Q0FDQSxhQUFhO0NBQ2IsU0FBUztDQUNULGFBQWE7Q0FDYixZQUFZLE1BQU0sSUFBSSxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztDQUNwRCxTQUFTO0NBQ1QsUUFBUSxJQUFJLFlBQVksRUFBRTtDQUMxQixZQUFZLElBQUksWUFBWSxFQUFFO0NBQzlCLGdCQUFnQixNQUFNLElBQUksbUJBQW1CLENBQUMsT0FBTyxFQUFFLENBQUM7Q0FDeEQsYUFBYTtDQUNiLFlBQVksbUJBQW1CLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQztDQUNwRyxTQUFTO0NBQ1QsUUFBUSxJQUFJLFlBQVksRUFBRTtDQUMxQixZQUFZLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUM7Q0FDcEcsU0FBUztDQUNULFFBQVEsSUFBSSxhQUFhLEVBQUU7Q0FDM0IsWUFBWSxJQUFJLGFBQWEsRUFBRTtDQUMvQixnQkFBZ0IsTUFBTSxJQUFJLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxDQUFDO0NBQ3hELGFBQWE7Q0FDYixZQUFZLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUM7Q0FDckcsU0FBUztDQUNULFFBQVEsSUFBSSxhQUFhLEVBQUU7Q0FDM0IsWUFBWSxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO0NBQ3RHLFNBQVM7Q0FDVCxLQUFLLENBQUM7Q0FDTixJQUFJLFdBQVcsQ0FBQyx5QkFBeUIsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztDQUNqRSxJQUFJLFdBQVcsQ0FBQyx1QkFBdUIsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0NBQzFELElBQUksV0FBVyxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztDQUN6RCxJQUFJLFdBQVcsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztDQUNuRCxJQUFJLFdBQVcsQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUNyRCxJQUFJLFdBQVcsQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQ2pELElBQUksV0FBVyxDQUFDLGVBQWUsR0FBRztDQUNsQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUNyQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUNyQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUNyQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUNyQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUNyQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUNyQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUNyQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUNyQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUNyQyxLQUFLLENBQUM7Q0FDTixJQUFJLE9BQU8sV0FBVyxDQUFDO0NBQ3ZCLENBQUMsQ0FBQyxt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LENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxRQUFRLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ3hFLFlBQVksSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLFFBQVEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDMUUsWUFBWSxJQUFJLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksUUFBUSxDQUFDLEVBQUUsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUMzRSxZQUFZLElBQUksT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxRQUFRLENBQUMsRUFBRSxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzVFLFlBQVksSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLFFBQVEsQ0FBQyxFQUFFLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDNUUsWUFBWSxJQUFJLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksUUFBUSxDQUFDLEVBQUUsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUM1RSxZQUFZLElBQUksT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxRQUFRLENBQUMsRUFBRSxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzVFLFlBQVksSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLFFBQVEsQ0FBQyxFQUFFLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDNUUsWUFBWSxJQUFJLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksUUFBUSxDQUFDLEVBQUUsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUM1RSxZQUFZLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxRQUFRLENBQUMsRUFBRSxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzdFLFlBQVksSUFBSSxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLFFBQVEsQ0FBQyxFQUFFLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDN0UsWUFBWSxJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksUUFBUSxDQUFDLEVBQUUsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztDQUM5RSxZQUFZLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxRQUFRLENBQUMsRUFBRSxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0NBQzlFLFlBQVksSUFBSSxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLFFBQVEsQ0FBQyxFQUFFLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7Q0FDOUUsWUFBWSxJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksUUFBUSxDQUFDLEVBQUUsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztDQUM5RSxZQUFZLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxRQUFRLENBQUMsRUFBRSxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0NBQzlFLFlBQVksSUFBSSxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLFFBQVEsQ0FBQyxFQUFFLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDN0UsWUFBWSxJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksUUFBUSxDQUFDLEVBQUUsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztDQUM5RSxZQUFZLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxRQUFRLENBQUMsRUFBRSxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0NBQzlFLFlBQVksSUFBSSxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLFFBQVEsQ0FBQyxFQUFFLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7Q0FDOUUsWUFBWSxJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksUUFBUSxDQUFDLEVBQUUsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztDQUNoRixZQUFZLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxRQUFRLENBQUMsRUFBRSxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0NBQ2hGLFlBQVksSUFBSSxPQUFPLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLFFBQVEsQ0FBQyxFQUFFLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7Q0FDaEYsWUFBWSxJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksUUFBUSxDQUFDLEVBQUUsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7Q0FDakcsWUFBWSxJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksUUFBUSxDQUFDLENBQUMsRUFBRSxJQUFJLEdBQUcs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QUFXLElBQUksQ0FBQyxDQUFDO0NBQzdCLFNBQVM7Q0FDVCxRQUFRLFdBQVcsS0FBSyxDQUFDLENBQUM7Q0FDMUIsUUFBUSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxFQUFFO0NBQ2xFLFlBQVksV0FBVyxJQUFJLENBQUMsQ0FBQztDQUM3QixTQUFTO0NBQ1QsUUFBUSxXQUFXLEtBQUssQ0FBQyxDQUFDO0NBQzFCLFFBQVEsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUMsRUFBRTtDQUNsRSxZQUFZLFdBQVcsSUFBSSxDQUFDLENBQUM7Q0FDN0IsU0FBUztDQUNULFFBQVEsV0FBVyxLQUFLLENBQUMsQ0FBQztDQUMxQixRQUFRLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDLEVBQUU7Q0FDckUsWUFBWSxXQUFXLElBQUksQ0FBQyxDQUFDO0NBQzdCLFNBQVM7Q0FDVCxRQUFRLFdBQVcsS0FBSyxDQUFDLENBQUM7Q0FDMUIsUUFBUSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLFVBQVUsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxFQUFFO0NBQ3JFLFlBQVksV0FBVyxJQUFJLENBQUMsQ0FBQztDQUM3QixTQUFTO0NBQ1QsUUFBUSxXQUFXLEtBQUssQ0FBQyxDQUFDO0NBQzFCLFFBQVEsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxVQUFVLEdBQUcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUMsRUFBRTtDQUNyRSxZQUFZLFdBQVcsSUFBSSxDQUFDLENBQUM7Q0FDN0IsU0FBUztDQUNULFFBQVEsV0FBVyxLQUFLLENBQUMsQ0FBQztDQUMxQixRQUFRLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDLEVBQUU7Q0FDckUsWUFBWSxXQUFXLElBQUksQ0FBQyxDQUFDO0NBQzdCLFNBQVM7Q0FDVCxRQUFRLFdBQVcsS0FBSyxDQUFDLENBQUM7Q0FDMUIsUUFBUSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLFVBQVUsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxFQUFFO0NBQ3JFLFlBQVksV0FBVyxJQUFJLENBQUMsQ0FBQztDQUM3QixTQUFTO0NBQ1QsUUFBUSxPQUFPLFdBQVcsQ0FBQztDQUMzQixLQUFLLENBQUM7Q0FDTjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLGVBQWUsQ0FBQyxTQUFTLENBQUMsV0FBVyxHQUFHLFVBQVUsT0FBTyxFQUFFLFVBQVUsRUFBRTtDQUMzRSxRQUFRLElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQztDQUM1QixRQUFRLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDLEVBQUU7Q0FDbEUsWUFBWSxXQUFXLElBQUksQ0FBQyxDQUFDO0NBQzdCLFNBQVM7Q0FDVCxRQUFRLFdBQVcsS0FBSyxDQUFDLENBQUM7Q0FDMUIsUUFBUSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxHQUFHLENBQUMsRUFBRSxVQUFVLEdBQUcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUMsRUFBRTtDQUMvRSxZQUFZLFdBQVcsSUFBSSxDQUFDLENBQUM7Q0FDN0IsU0FBUztDQUNULFFBQVEsV0FBVyxLQUFLLENBQUMsQ0FBQztDQUMxQixRQUFRLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDLEVBQUU7Q0FDckUsWUFBWSxXQUFXLElBQUksQ0FBQyxDQUFDO0NBQzdCLFNBQVM7Q0FDVCxRQUFRLFdBQVcsS0FBSyxDQUFDLENBQUM7Q0FDMUIsUUFBUSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLFVBQVUsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxFQUFFO0NBQ3JFLFlBQVksV0FBVyxJQUFJLENBQUMsQ0FBQztDQUM3QixTQUFTO0NBQ1QsUUFBUSxXQUFXLEtBQUssQ0FBQyxDQUFDO0NBQzFCLFFBQVEsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxVQUFVLEdBQUcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUMsRUFBRTtDQUNyRSxZQUFZLFdBQVcsSUFBSSxDQUFDLENBQUM7Q0FDN0IsU0FBUztDQUNULFFBQVEsV0FBVyxLQUFLLENBQUMsQ0FBQztDQUMxQixRQUFRLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDLEVBQUU7Q0FDckUsWUFBWSxXQUFXLElBQUksQ0FBQyxDQUFDO0NBQzdCLFNBQVM7Q0FDVCxRQUFRLFdBQVcsS0FBSyxDQUFDLENBQUM7Q0FDMUIsUUFBUSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLFVBQVUsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxFQUFFO0NBQ3JFLFlBQVksV0FBVyxJQUFJLENBQUMsQ0FBQztDQUM3QixTQUFTO0NBQ1QsUUFBUSxXQUFXLEtBQUssQ0FBQyxDQUFDO0NBQzFCLFFBQVEsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxVQUFVLEdBQUcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUMsRUFBRTtDQUNyRSxZQUFZLFdBQVcsSUFBSSxDQUFDLENBQUM7Q0FDN0IsU0FBUztDQUNULFFBQVEsT0FBTyxXQUFXLENBQUM7Q0FDM0IsS0FBSyxDQUFDO0NBQ047Q0FDQTtDQUNBO0NB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TUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztDQUN0RCxRQUFRLElBQUksR0FBRyxHQUFHLElBQUksRUFBRTtDQUN4QixZQUFZLEdBQUcsR0FBRyxJQUFJLENBQUM7Q0FDdkIsWUFBWSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDO0NBQy9CLFlBQVksTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztDQUMvQixZQUFZLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7Q0FDL0IsWUFBWSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDO0NBQy9CLFNBQVM7Q0FDVCxRQUFRLElBQUksR0FBRyxHQUFHLElBQUksRUFBRTtDQUN4QixZQUFZLEdBQUcsR0FBRyxJQUFJLENBQUM7Q0FDdkIsWUFBWSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDO0NBQy9CLFlBQVksTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztDQUMvQixZQUFZLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7Q0FDL0IsWUFBWSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDO0NBQy9CLFNBQVM7Q0FDVCxRQUFRLElBQUksR0FBRyxHQUFHLElBQUksRUFBRTtDQUN4QixZQUFZLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7Q0FDL0IsWUFBWSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDO0NBQy9CLFlBQVksTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztDQUMvQixZQUFZLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7Q0FDL0IsU0FBUztDQUNULFFBQVEsT0FBTyxNQUFNLENBQUM7Q0FDdEIsS0FBSyxDQUFDO0NBQ047Q0FDQTtDQUNBO0NBQ0EsSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLFlBQVksR0FBRyxVQUFVLE1BQU0sRUFBRTtD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USxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQztDQUNqRSxRQUFRLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztDQUNwRCxLQUFLLENBQUM7Q0FDTixJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxFQUFFO0NBQzlDLFFBQVEsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7Q0FDdEgsS0FBSyxDQUFDO0NBQ04sSUFBSSxRQUFRLENBQUMsVUFBVSxHQUFHLFVBQVUsS0FBSyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFO0NBQy9HLFFBQVEsSUFBSSxPQUFPLEdBQUcscUJBQXFCLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO0NBQ2xFLFFBQVEsT0FBTyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsVUFBVSxHQUFHLEdBQUcsRUFBRSxHQUFHLEVBQUUsVUFBVSxHQUFHLEdBQUcsRUFBRSxVQUFVLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxVQUFVLEdBQUcsR0FBRyxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxXQUFXLENBQUMsSUFBSSxFQUFFLEVBQUUsV0FBVyxDQUFDLElBQUksRUFBRSxFQUFFLFVBQVUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztDQUM3UyxLQUFLLENBQUM7Q0FDTjtDQUNBO0NBQ0E7Q0FDQSxJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEdBQUcsVUFBVSxJQUFJLEVBQUUsRUFBRSxFQUFFO0NBQ2hFO0NBQ0EsUUFBUSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0NBQzVDLFFBQVEsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztDQUM1QyxRQUFRLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7Q0FDeEMsUUFBUSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0NBQ3hDLFFBQVEsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUM7Q0FDbEUsUUFBUSxJQUFJLEtBQUssRUFBRTtDQUNuQixZQUFZLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQztDQUM3QixZQUFZLEtBQUssR0FBRyxLQUFLLENBQUM7Q0FDMUIsWUFBWSxLQUFLLEdBQUcsSUFBSSxDQUFDO0NBQ3pCLFlBQVksSUFBSSxHQUFHLEdBQUcsQ0FBQztDQUN2QixZQUFZLEdBQUcsR0FBRyxHQUFHLENBQUM7Q0FDdEIsWUFBWSxHQUFHLEdBQUcsSUFBSSxDQUFDO0NBQ3ZCLFNBQVM7Q0FDVCxRQUFRLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDO0NBQ3ZDLFFBQVEsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUM7Q0FDdkMsUUFBUSxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7Q0FDNUIsUUFBUSxJQUFJLEtBQUssR0FBRyxLQUFLLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztDQUN6QyxRQUFRLElBQUksS0FBSyxHQUFHLEtBQUssR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0NBQ3pDLFFBQVEsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0NBQzVCLFFBQVEsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLEtBQUssR0FBRyxLQUFLLEVBQUUsS0FBSyxHQUFHLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQztDQUNuRixRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLElBQUksS0FBSyxFQUFFO0NBQzlELFlBQVksSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztDQUN2RSxZQUFZLElBQUksT0FBTyxLQUFLLE9BQU8sRUFBRTtDQUNyQyxnQkFBZ0IsV0FBVyxFQUFFLENBQUM7Q0FDOUIsZ0JBQWdCLE9BQU8sR0FBRyxPQUFPLENBQUM7Q0FDbEMsYUFBYTtDQUNiLFlBQVksS0FBSyxJQUFJLEVBQUUsQ0FBQztDQUN4QixZQUFZLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtDQUMzQixnQkFBZ0IsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFO0NBQy9CLG9CQUFvQixNQUFNO0NBQzFCLGlCQUFpQjtDQUNqQixnQkFBZ0IsQ0FBQyxJQUFJLEtBQUssQ0FBQztDQUMzQixnQkFBZ0IsS0FBSyxJQUFJLEVBQUUsQ0FBQztDQUM1QixhQUFhO0NBQ2IsU0FBUztDQUNULFFBQVEsT0FBTyxXQUFXLENBQUM7Q0FDM0IsS0FBSyxDQUFDO0NBQ04sSUFBSSxPQUFPLFFBQVEsQ0FBQztDQUNwQixDQUFDLEVBQUUsQ0FBQyxDQUFDO0NBQ0wsZUFBZSxHQUFHLFFBQVEsQ0FBQzs7Ozs7Q0M5UzNCLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQ1o7QUFDRDtBQUNHO0FBQ007QUFDdEI7QUFDd0I7QUFDbkI7QUFDSTtBQUNHO0NBQ2hEO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLGdCQUFnQixrQkFBa0IsWUFBWTtDQUNsRCxJQUFJLFNBQVMsZ0JBQWdCLEdBQUc7Q0FDaEMsUUFBUSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUlFLFdBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztDQUMvQyxLQUFLO0NBQ0w7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsVUFBVSxLQUFLLEVBQUUsS0FBSyxFQUFFO0NBQ2hFLFFBQVEsSUFBSSxLQUFLLEtBQUssS0FBSyxDQUFDLEVBQUUsRUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLEVBQUU7Q0FDL0MsUUFBUSxJQUFJLGFBQWEsQ0FBQztDQUMxQixRQUFRLElBQUksTUFBTSxDQUFDO0NBQ25CLFFBQVEsSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFO0NBQy9FLFlBQVksSUFBSSxJQUFJLEdBQUcsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO0NBQ2hGLFlBQVksYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0NBQ3RELFlBQVksTUFBTSxHQUFHLGdCQUFnQixDQUFDLFNBQVMsQ0FBQztDQUNoRCxTQUFTO0NBQ1QsYUFBYTtDQUNiLFlBQVksSUFBSSxjQUFjLEdBQUcsSUFBSUMsWUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztDQUN6RixZQUFZLGFBQWEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztDQUMxRSxZQUFZLE1BQU0sR0FBRyxjQUFjLENBQUMsU0FBUyxFQUFFLENBQUM7Q0FDaEQsU0FBUztDQUNULFFBQVEsSUFBSSxRQUFRLEdBQUcsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDO0NBQ25ELFFBQVEsSUFBSSxNQUFNLEdBQUcsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLGVBQWUsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO0NBQ3JMLFFBQVEsSUFBSSxZQUFZLEdBQUcsYUFBYSxDQUFDLGVBQWUsRUFBRSxDQUFDO0NBQzNELFFBQVEsSUFBSSxZQUFZLElBQUksSUFBSSxFQUFFO0NBQ2xDLFlBQVksTUFBTSxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxDQUFDO0NBQ3pGLFNBQVM7Q0FDVCxRQUFRLElBQUksT0FBTyxHQUFHLGFBQWEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztDQUNqRCxRQUFRLElBQUksT0FBTyxJQUFJLElBQUksRUFBRTtDQUM3QixZQUFZLE1BQU0sQ0FBQyxXQUFXLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLHNCQUFzQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0NBQzdGLFNBQVM7Q0FDVCxRQUFRLE9BQU8sTUFBTSxDQUFDO0NBQ3RCLEtBQUssQ0FBQztDQUNOO0NBQ0EsSUFBSSxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLFlBQVk7Q0FDbkQ7Q0FDQSxLQUFLLENBQUM7Q0FDTjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsSUFBSSxnQkFBZ0IsQ0FBQyxlQUFlLEdBQUcsVUFBVSxLQUFLLEVBQUU7Q0FDeEQsUUFBUSxJQUFJLFlBQVksR0FBRyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7Q0FDbkQsUUFBUSxJQUFJLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0NBQzNELFFBQVEsSUFBSSxZQUFZLElBQUksSUFBSSxJQUFJLGdCQUFnQixJQUFJLElBQUksRUFBRTtDQUM5RCxZQUFZLE1BQU0sSUFBSSxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztDQUNwRCxTQUFTO0NBQ1QsUUFBUSxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztDQUM5RCxRQUFRLElBQUksR0FBRyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUNsQyxRQUFRLElBQUksTUFBTSxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ3pDLFFBQVEsSUFBSSxJQUFJLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ25DLFFBQVEsSUFBSSxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDeEMsUUFBUSxJQUFJLFdBQVcsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLFVBQVUsQ0FBQztDQUMxRCxRQUFRLElBQUksWUFBWSxHQUFHLENBQUMsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLElBQUksVUFBVSxDQUFDO0NBQzNELFFBQVEsSUFBSSxXQUFXLElBQUksQ0FBQyxJQUFJLFlBQVksSUFBSSxDQUFDLEVBQUU7Q0FDbkQsWUFBWSxNQUFNLElBQUksbUJBQW1CLENBQUMsT0FBTyxFQUFFLENBQUM7Q0FDcEQsU0FBUztDQUNUO0NBQ0E7Q0FDQTtDQUNBLFFBQVEsSUFBSSxLQUFLLEdBQUcsVUFBVSxHQUFHLENBQUMsQ0FBQztDQUNuQyxRQUFRLEdBQUcsSUFBSSxLQUFLLENBQUM7Q0FDckIsUUFBUSxJQUFJLElBQUksS0FBSyxDQUFDO0NBQ3RCO0NBQ0EsUUFBUSxJQUFJLElBQUksR0FBRyxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQyxDQUFDO0NBQ3RFLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFlBQVksRUFBRSxDQUFDLEVBQUUsRUFBRTtDQUMvQyxZQUFZLElBQUksT0FBTyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsVUFBVSxDQUFDO0NBQy9DLFlBQVksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRTtDQUNsRCxnQkFBZ0IsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLEdBQUcsVUFBVSxFQUFFLE9BQU8sQ0FBQyxFQUFFO0NBQy9ELG9CQUFvQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUNuQyxpQkFBaUI7Q0FDakIsYUFBYTtDQUNiLFNBQVM7Q0FDVCxRQUFRLE9BQU8sSUFBSSxDQUFDO0NBQ3BCLEtBQUssQ0FBQztDQUNOLElBQUksZ0JBQWdCLENBQUMsVUFBVSxHQUFHLFVBQVUsWUFBWSxFQUFFLEtBQUssRUFBRTtDQUNqRSxRQUFRLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztDQUNyQyxRQUFRLElBQUksQ0FBQyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUNoQyxRQUFRLElBQUksQ0FBQyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUNoQyxRQUFRLE9BQU8sQ0FBQyxHQUFHLEtBQUssSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtDQUM3QyxZQUFZLENBQUMsRUFBRSxDQUFDO0NBQ2hCLFNBQVM7Q0FDVCxRQUFRLElBQUksQ0FBQyxLQUFLLEtBQUssRUFBRTtDQUN6QixZQUFZLE1BQU0sSUFBSSxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztDQUNwRCxTQUFTO0NBQ1QsUUFBUSxJQUFJLFVBQVUsR0FBRyxDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQzdDLFFBQVEsSUFBSSxVQUFVLEtBQUssQ0FBQyxFQUFFO0NBQzlCLFlBQVksTUFBTSxJQUFJLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxDQUFDO0NBQ3BELFNBQVM7Q0FDVCxRQUFRLE9BQU8sVUFBVSxDQUFDO0NBQzFCLEtBQUssQ0FBQztDQUNOLElBQUksZ0JBQWdCLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztDQUNwQyxJQUFJLE9BQU8sZ0JBQWdCLENBQUM7Q0FDNUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztDQUNMLGVBQWUsR0FBRyxnQkFBZ0IsQ0FBQzs7Ozs7Q0MxSW5DLElBQUksU0FBUyxHQUFHLENBQUNILGNBQUksSUFBSUEsY0FBSSxDQUFDLFNBQVMsS0FBSyxDQUFDLFlBQVk7Q0FDekQsSUFBSSxJQUFJLGFBQWEsR0FBRyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUU7Q0FDeEMsUUFBUSxhQUFhLEdBQUcsTUFBTSxDQUFDLGNBQWM7Q0FDN0MsYUFBYSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsWUFBWSxLQUFLLElBQUksVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO0NBQ3hGLFlBQVksVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0NBQ3ZGLFFBQVEsT0FBTyxhQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQ25DLEtBQUssQ0FBQztDQUNOLElBQUksT0FBTyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUU7Q0FDM0IsUUFBUSxhQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzVCLFFBQVEsU0FBUyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxFQUFFO0NBQy9DLFFBQVEsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLEtBQUssSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztDQUM3RixLQUFLLENBQUM7Q0FDTixDQUFDLEdBQUcsQ0FBQztDQUNMLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0NBQzlELG1DQUFtQyxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQ1k7QUFDZTtDQUN4RTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsSUFBSSwyQkFBMkIsa0JBQWtCLFVBQVUsTUFBTSxFQUFFO0NBQ25FLElBQUksU0FBUyxDQUFDLDJCQUEyQixFQUFFLE1BQU0sQ0FBQyxDQUFDO0NBQ25EO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsSUFBSSxTQUFTLDJCQUEyQixDQUFDLHNCQUFzQixFQUFFO0NBQ2pFLFFBQVEsSUFBSSxzQkFBc0IsS0FBSyxLQUFLLENBQUMsRUFBRSxFQUFFLHNCQUFzQixHQUFHLEdBQUcsQ0FBQyxFQUFFO0NBQ2hGLFFBQVEsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxFQUFFLHNCQUFzQixDQUFDLElBQUksSUFBSSxDQUFDO0NBQ25HLEtBQUs7Q0FDTCxJQUFJLE9BQU8sMkJBQTJCLENBQUM7Q0FDdkMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztDQUMxQyxtQ0FBbUMsR0FBRywyQkFBMkIsQ0FBQzs7Ozs7Q0NsQ2xFO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0NBQzlELGtDQUFrQyxHQUFHLEtBQUssQ0FBQyxDQUFDO0NBQzVDO0FBQzZEO0FBQ2M7Q0FDM0UsSUFBSSwwQkFBMEIsQ0FBQztDQUMvQixDQUFDLFVBQVUsMEJBQTBCLEVBQUU7Q0FDdkMsSUFBSSwwQkFBMEIsQ0FBQywwQkFBMEIsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7Q0FDMUUsSUFBSSwwQkFBMEIsQ0FBQywwQkFBMEIsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7Q0FDMUUsSUFBSSwwQkFBMEIsQ0FBQywwQkFBMEIsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7Q0FDMUUsSUFBSSwwQkFBMEIsQ0FBQywwQkFBMEIsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7Q0FDMUUsQ0FBQyxFQUFFLDBCQUEwQixHQUFHLE9BQU8sQ0FBQywwQkFBMEIsS0FBSyxrQ0FBa0MsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQ2pIO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLElBQUksb0JBQW9CLGtCQUFrQixZQUFZO0NBQ3RELElBQUksU0FBUyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLElBQUksVUFBVTtDQUNwRSxRQUFRLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0NBQzNCLFFBQVEsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7Q0FDdkMsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztDQUN6QixRQUFRLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0NBQ3RELFFBQVEsb0JBQW9CLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7Q0FDeEQsS0FBSztDQUNMLElBQUksb0JBQW9CLENBQUMsU0FBUyxDQUFDLFFBQVEsR0FBRyxZQUFZO0NBQzFELFFBQVEsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0NBQzFCLEtBQUssQ0FBQztDQUNOLElBQUksb0JBQW9CLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxZQUFZO0NBQ3pELFFBQVEsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0NBQ3pCLEtBQUssQ0FBQztDQUNOLElBQUksb0JBQW9CLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxFQUFFO0NBQ25ELFFBQVEsUUFBUSxDQUFDO0NBQ2pCLFlBQVksS0FBSyxHQUFHLEVBQUUsT0FBTyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7Q0FDcEQsWUFBWSxLQUFLLEdBQUcsRUFBRSxPQUFPLG9CQUFvQixDQUFDLENBQUMsQ0FBQztDQUNwRCxZQUFZLEtBQUssR0FBRyxFQUFFLE9BQU8sb0JBQW9CLENBQUMsQ0FBQyxDQUFDO0NBQ3BELFlBQVksS0FBSyxHQUFHLEVBQUUsT0FBTyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7Q0FDcEQsWUFBWSxTQUFTLE1BQU0sSUFBSSxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxDQUFDO0NBQ2hGLFNBQVM7Q0FDVCxLQUFLLENBQUM7Q0FDTixJQUFJLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsWUFBWTtDQUMxRCxRQUFRLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztDQUNoQyxLQUFLLENBQUM7Q0FDTixJQUFJLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDLEVBQUU7Q0FDekQsUUFBUSxJQUFJLEVBQUUsQ0FBQyxZQUFZLG9CQUFvQixDQUFDLEVBQUU7Q0FDbEQsWUFBWSxPQUFPLEtBQUssQ0FBQztDQUN6QixTQUFTO0NBQ1QsUUFBUSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7Q0FDdEIsUUFBUSxPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssS0FBSyxDQUFDLEtBQUssQ0FBQztDQUMxQyxLQUFLLENBQUM7Q0FDTjtDQUNBO0NBQ0E7Q0FDQTtDQUNBLElBQUksb0JBQW9CLENBQUMsT0FBTyxHQUFHLFVBQVUsSUFBSSxVQUFVO0NBQzNELFFBQVEsSUFBSSxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFO0NBQ3BFLFlBQVksTUFBTSxJQUFJLDBCQUEwQixDQUFDLE9BQU8sRUFBRSxDQUFDO0NBQzNELFNBQVM7Q0FDVCxRQUFRLE9BQU8sb0JBQW9CLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztDQUN2RCxLQUFLLENBQUM7Q0FDTixJQUFJLG9CQUFvQixDQUFDLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0NBQzlDLElBQUksb0JBQW9CLENBQUMsU0FBUyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7Q0FDL0M7Q0FDQSxJQUFJLG9CQUFvQixDQUFDLENBQUMsR0FBRyxJQUFJLG9CQUFvQixDQUFDLDBCQUEwQixDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7Q0FDL0Y7Q0FDQSxJQUFJLG9CQUFvQixDQUFDLENBQUMsR0FBRyxJQUFJLG9CQUFvQixDQUFDLDBCQUEwQixDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7Q0FDL0Y7Q0FDQSxJQUFJLG9CQUFvQixDQUFDLENBQUMsR0FBRyxJQUFJLG9CQUFvQixDQUFDLDBCQUEwQixDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7Q0FDL0Y7Q0FDQSxJQUFJLG9CQUFvQixDQUFDLENBQUMsR0FBRyxJQUFJLG9CQUFvQixDQUFDLDBCQUEwQixDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7Q0FDL0YsSUFBSSxPQUFPLG9CQUFvQixDQUFDO0NBQ2hDLENBQUMsRUFBRSxDQUFDLENBQUM7Q0FDTCxlQUFlLEdBQUcsb0JBQW9CLENBQUM7Ozs7O0NDeEZ2QztDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLFFBQVEsR0FBRyxDQUFDQSxjQUFJLElBQUlBLGNBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDLEVBQUU7Q0FDdEQsSUFBSSxJQUFJLENBQUMsR0FBRyxPQUFPLE1BQU0sS0FBSyxVQUFVLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0NBQ2xGLElBQUksSUFBSSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQzVCLElBQUksSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsTUFBTSxLQUFLLFFBQVEsRUFBRSxPQUFPO0NBQ2xELFFBQVEsSUFBSSxFQUFFLFlBQVk7Q0FDMUIsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7Q0FDL0MsWUFBWSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztDQUNwRCxTQUFTO0NBQ1QsS0FBSyxDQUFDO0NBQ04sSUFBSSxNQUFNLElBQUksU0FBUyxDQUFDLENBQUMsR0FBRyx5QkFBeUIsR0FBRyxpQ0FBaUMsQ0FBQyxDQUFDO0NBQzNGLENBQUMsQ0FBQztDQUNGLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0NBQzlEO0FBQytEO0FBQ2pCO0NBQzlDO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLGlCQUFpQixrQkFBa0IsWUFBWTtDQUNuRCxJQUFJLFNBQVMsaUJBQWlCLENBQUMsVUFBVSxVQUFVO0NBQ25EO0NBQ0EsUUFBUSxJQUFJLENBQUMsb0JBQW9CLEdBQUcsc0JBQXNCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7Q0FDckc7Q0FDQSxRQUFRLElBQUksQ0FBQyxRQUFRLGdCQUFnQixVQUFVLEdBQUcsSUFBSSxDQUFDLENBQUM7Q0FDeEQsS0FBSztDQUNMLElBQUksaUJBQWlCLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxVQUFVO0NBQ3pFLFFBQVEsT0FBTyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Q0FDakQsS0FBSyxDQUFDO0NBQ047Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLGlCQUFpQixDQUFDLHVCQUF1QixHQUFHLFVBQVUsaUJBQWlCLFVBQVUsaUJBQWlCLFVBQVU7Q0FDaEgsUUFBUSxJQUFJLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQyx5QkFBeUIsQ0FBQyxpQkFBaUIsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0NBQzNHLFFBQVEsSUFBSSxVQUFVLEtBQUssSUFBSSxFQUFFO0NBQ2pDLFlBQVksT0FBTyxVQUFVLENBQUM7Q0FDOUIsU0FBUztDQUNUO0NBQ0E7Q0FDQTtDQUNBLFFBQVEsT0FBTyxpQkFBaUIsQ0FBQyx5QkFBeUIsQ0FBQyxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQyxtQkFBbUIsRUFBRSxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0NBQ2pMLEtBQUssQ0FBQztDQUNOLElBQUksaUJBQWlCLENBQUMseUJBQXlCLEdBQUcsVUFBVSxpQkFBaUIsVUFBVSxpQkFBaUIsVUFBVTtDQUNsSCxRQUFRLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQztDQUNwQjtDQUNBLFFBQVEsSUFBSSxjQUFjLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDO0NBQ3JELFFBQVEsSUFBSSxjQUFjLEdBQUcsQ0FBQyxDQUFDO0NBQy9CLFFBQVEsSUFBSTtDQUNaLFlBQVksS0FBSyxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsaUJBQWlCLENBQUMseUJBQXlCLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO0NBQzNILGdCQUFnQixJQUFJLFVBQVUsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO0NBQzFDLGdCQUFnQixJQUFJLFVBQVUsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDL0MsZ0JBQWdCLElBQUksVUFBVSxLQUFLLGlCQUFpQixJQUFJLFVBQVUsS0FBSyxpQkFBaUIsRUFBRTtDQUMxRjtDQUNBLG9CQUFvQixPQUFPLElBQUksaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDaEUsaUJBQWlCO0NBQ2pCLGdCQUFnQixJQUFJLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsRUFBRSxVQUFVLENBQUMsQ0FBQztDQUN2RyxnQkFBZ0IsSUFBSSxjQUFjLEdBQUcsY0FBYyxFQUFFO0NBQ3JELG9CQUFvQixjQUFjLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ25ELG9CQUFvQixjQUFjLEdBQUcsY0FBYyxDQUFDO0NBQ3BELGlCQUFpQjtDQUNqQixnQkFBZ0IsSUFBSSxpQkFBaUIsS0FBSyxpQkFBaUIsRUFBRTtDQUM3RDtDQUNBLG9CQUFvQixjQUFjLEdBQUcsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLEVBQUUsVUFBVSxDQUFDLENBQUM7Q0FDdkcsb0JBQW9CLElBQUksY0FBYyxHQUFHLGNBQWMsRUFBRTtDQUN6RCx3QkFBd0IsY0FBYyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUN2RCx3QkFBd0IsY0FBYyxHQUFHLGNBQWMsQ0FBQztDQUN4RCxxQkFBcUI7Q0FDckIsaUJBQWlCO0NBQ2pCLGFBQWE7Q0FDYixTQUFTO0NBQ1QsUUFBUSxPQUFPLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO0NBQ2pELGdCQUFnQjtDQUNoQixZQUFZLElBQUk7Q0FDaEIsZ0JBQWdCLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Q0FDcEUsYUFBYTtDQUNiLG9CQUFvQixFQUFFLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO0NBQ2pELFNBQVM7Q0FDVDtDQUNBO0NBQ0EsUUFBUSxJQUFJLGNBQWMsSUFBSSxDQUFDLEVBQUU7Q0FDakMsWUFBWSxPQUFPLElBQUksaUJBQWlCLENBQUMsY0FBYyxDQUFDLENBQUM7Q0FDekQsU0FBUztDQUNULFFBQVEsT0FBTyxJQUFJLENBQUM7Q0FDcEIsS0FBSyxDQUFDO0NBQ04sSUFBSSxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsdUJBQXVCLEdBQUcsWUFBWTtDQUN0RSxRQUFRLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDO0NBQ3pDLEtBQUssQ0FBQztDQUNOLElBQUksaUJBQWlCLENBQUMsU0FBUyxDQUFDLFdBQVcsR0FBRyxZQUFZO0NBQzFELFFBQVEsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0NBQzdCLEtBQUssQ0FBQztDQUNOO0NBQ0EsSUFBSSxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFlBQVk7Q0FDdkQsUUFBUSxPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDO0NBQzFFLEtBQUssQ0FBQztDQUNOO0NBQ0EsSUFBSSxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxFQUFFO0NBQ3RELFFBQVEsSUFBSSxFQUFFLENBQUMsWUFBWSxpQkFBaUIsQ0FBQyxFQUFFO0NBQy9DLFlBQVksT0FBTyxLQUFLLENBQUM7Q0FDekIsU0FBUztDQUNULFFBQVEsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0NBQ3RCLFFBQVEsT0FBTyxJQUFJLENBQUMsb0JBQW9CLEtBQUssS0FBSyxDQUFDLG9CQUFvQjtDQUN2RSxZQUFZLElBQUksQ0FBQyxRQUFRLEtBQUssS0FBSyxDQUFDLFFBQVEsQ0FBQztDQUM3QyxLQUFLLENBQUM7Q0FDTixJQUFJLGlCQUFpQixDQUFDLG1CQUFtQixHQUFHLE1BQU0sQ0FBQztDQUNuRDtDQUNBO0NBQ0E7Q0FDQSxJQUFJLGlCQUFpQixDQUFDLHlCQUF5QixHQUFHO0NBQ2xELFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztDQUN2QyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7Q0FDdkMsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0NBQ3ZDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztDQUN2QyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7Q0FDdkMsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0NBQ3ZDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztDQUN2QyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7Q0FDdkMsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0NBQ3ZDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztDQUN2QyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7Q0FDdkMsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0NBQ3ZDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztDQUN2QyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7Q0FDdkMsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0NBQ3ZDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztDQUN2QyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7Q0FDdkMsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0NBQ3ZDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztDQUN2QyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7Q0FDdkMsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0NBQ3ZDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztDQUN2QyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7Q0FDdkMsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0NBQ3ZDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztDQUN2QyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7Q0FDdkMsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0NBQ3ZDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztDQUN2QyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7Q0FDdkMsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0NBQ3ZDLFFBQVEsVUFB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LEVBQUUsT0FBTyxFQUFFLE9BQU87Q0FDbkQsUUFBUSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTztDQUNuRCxRQUFRLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ25ELFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU87Q0FDbkQsUUFBUSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTztDQUNuRCxRQUFRLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ25ELFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTztDQUMxQyxLQUFLLENBQUMsQ0FBQztDQUNQO0NBQ0E7Q0FDQTtDQUNBLElBQUksT0FBTyxDQUFDLFFBQVEsR0FBRztDQUN2QixRQUFRLElBQUksT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUMvUCxRQUFRLElBQUksT0FBTyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDeFEsUUFBUSxJQUFJLE9BQU8sQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQ3hRLFFBQVEsSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUN2USxRQUFRLElBQUksT0FBTyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzdULFFBQVEsSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUN4USxRQUFRLElBQUksT0FBTyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUNoVSxRQUFRLElBQUksT0FBTyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzFWLFFBQVEsSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDM1YsUUFBUSxJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQ3JYLFFBQVEsSUFBSSxPQUFPLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDM1YsUUFBUSxJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQ3JYLFFBQVEsSUFBSSxPQUFPLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDN1YsUUFBUSxJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUM3WCxRQUFRLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzFYLFFBQVEsSUFBSSxPQUFPLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDM1gsUUFBUSxJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUM5WCxRQUFRLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzdYLFFBQVEsSUFBSSxPQUFPLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDOVgsUUFBUSxJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUMvWCxRQUFRLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDeFcsUUFBUSxJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUM5VSxRQUFRLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUNyWSxRQUFRLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUNwWSxRQUFRLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUNwWSxRQUFRLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUNwWSxRQUFRLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUNwWSxRQUFRLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDelksUUFBUSxJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQ3pZLFFBQVEsSUFBSSxPQUFPLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUM1WSxRQUFRLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDMVksUUFBUSxJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUNqWCxRQUFRLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDNVksUUFBUSxJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzFZLFFBQVEsSUFBSSxPQUFPLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDalosUUFBUSxJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUMvWSxRQUFRLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQ2paLFFBQVEsSUFBSSxPQUFPLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDalosUUFBUSxJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUNoWixRQUFRLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVB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QUFDLGFBQWEsRUFBRSxJQUFJLFFBQVEsQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLFVBQVUsQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7Q0FDM0k7Q0FDQTtDQUNBO0NBQ0EsUUFBUSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsSUFBSSxRQUFRLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0NBQ2pKO0NBQ0E7Q0FDQTtDQUNBLFFBQVEsQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLElBQUksUUFBUSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztDQUN0TDtDQUNBO0NBQ0E7Q0FDQTtDQUNBLFFBQVEsQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLElBQUksUUFBUSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztDQUNqSjtDQUNBO0NBQ0E7Q0FDQTtDQUNBLFFBQVEsQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLElBQUksUUFBUSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENB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WUFBWSxPQUFPLEdBQUcsQ0FBQztDQUN2QixTQUFTO0NBQ1QsUUFBUSxPQUFPLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFO0NBQy9FLFlBQVksVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Q0FDNUIsWUFBWSxDQUFDLEVBQUUsQ0FBQztDQUNoQixTQUFTO0NBQ1QsUUFBUSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLFFBQVEsRUFBRTtDQUNyRCxZQUFZLE9BQU8sR0FBRyxDQUFDO0NBQ3ZCLFNBQVM7Q0FDVCxRQUFRLE9BQU8sQ0FBQyxHQUFHLElBQUksSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFO0NBQzlFLFlBQVksVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Q0FDNUIsWUFBWSxDQUFDLEVBQUUsQ0FBQztDQUNoQixTQUFTO0NBQ1QsUUFBUSxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxRQUFRLEVBQUU7Q0FDdkMsWUFBWSxPQUFPLEdBQUcsQ0FBQztDQUN2QixTQUFTO0NBQ1Q7Q0FDQTtDQUNBLFFBQVEsSUFBSSxlQUFlLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQztDQUMzRixZQUFZLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUMxQixRQUFRLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxHQUFHLHVCQUF1QixDQUFDLElBQUksQ0FBQyxHQUFHLHVCQUF1QixFQUFFO0NBQ3BHLFlBQVksT0FBTyxHQUFHLENB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LFlBQVksS0FBSyxHQUFHLEtBQUssQ0FBQztDQUMxQixZQUFZLEtBQUssR0FBRyxJQUFJLENBQUM7Q0FDekIsWUFBWSxJQUFJLEdBQUcsR0FBRyxDQUFDO0NBQ3ZCLFlBQVksR0FBRyxHQUFHLEdBQUcsQ0FBQztDQUN0QixZQUFZLEdBQUcsR0FBRyxJQUFJLENBQUM7Q0FDdkIsU0FBUztDQUNULFFBQVEsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUM7Q0FDdkMsUUFBUSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQztDQUN2QyxRQUFRLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztDQUM1QixRQUFRLElBQUksS0FBSyxHQUFHLEtBQUssR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0NBQ3pDLFFBQVEsSUFBSSxLQUFLLEdBQUcsS0FBSyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Q0FDekM7Q0FDQSxRQUFRLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztDQUN0QjtDQUNBLFFBQVEsSUFBSSxNQUFNLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQztDQUNqQyxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxLQUFLLE1BQU0sRUFBRSxDQUFDLElBQUksS0FBSyxFQUFFO0NBQ2pFLFlBQVksSUFBSSxLQUFLLEdBQUcsS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7Q0FDdEMsWUFBWSxJQUFJLEtBQUssR0FBRyxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztDQUN0QztDQUNBO0NBQ0E7Q0FDQSxZQUFZLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFL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LEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2xILFFBQVEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0NBQ2pDLEtBQUssQ0FBQyxDQUFDO0NBQ1A7Q0FDQTtDQUNBO0NBQ0EsSUFBSSxZQUFZLENBQUMsY0FBYyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7Q0FDbEQsUUFBUSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSTtDQUN2SCxRQUFRLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRztDQUN2SCxRQUFRLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7Q0FDbkgsUUFBUSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRztDQUN2SCxRQUFRLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRztDQUN2SCxRQUFRLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRztDQUN4SCxRQUFRLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO0NBQ3JILFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUc7Q0FDcEgsUUFBUSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0NBQ25ILFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRztDQUN2SCxRQUFRLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRztDQUN0SCxRQUFRLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHO0NBQ3BILFFBQVEsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUk7Q0FDckgsUUFBUSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRztDQUNwSCxRQUFRLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHO0NBQ3JILFFBQVEsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7Q0FDckgsUUFBUSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSTtDQUNySCxRQUFRLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUc7Q0FDckgsUUFBUSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtDQUN4SCxRQUFRLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7Q0FDeEgsUUFBUSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJO0NBQ3BILFFBQVEsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUc7Q0FDckgsUUFBUSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtDQUNySCxRQUFRLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJO0NBQ3RILFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUc7Q0FDdEgsUUFBUSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0NBQ25ILFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUc7Q0FDckgsUUFBUSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSTtDQUN2SCxRQUFRLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHO0NBQ3hILFFBQVEsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUc7Q0FDcEgsUUFBUSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO0NBQ3BILFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtDQUNwSCxRQUFRLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJO0NBQ3hILFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtDQUN4SCxRQUFRLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7Q0FDeEgsUUFBUSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0NBQ3JILFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRztDQUNwSCxRQUFRLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJO0NBQ3BILFFBQVEsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFO0NBQ3RILFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHO0NBQ25ILFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFO0NBQ3BILFFBQVEsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJO0NBQ3hILFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRztDQUN0SCxRQUFRLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0NBQ3BILFFBQVEsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUc7Q0FDckgsUUFBUSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtDQUNySCxRQUFRLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHO0NBQ3RILFFBQVEsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRztDQUNwSCxRQUFRLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHO0NBQ3JILFFBQVEsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRztDQUN0SCxRQUFRLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0NBQ3hILFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUc7Q0FDeEgsUUFBUSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHO0NBQ3ZILFFBQVEsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7Q0FDeEgsUUFBUSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJO0NBQ3RILFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSTtDQUNwSCxRQUFRLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUc7Q0FDdkgsUUFBUSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0NBQ3BILFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtDQUN4SCxRQUFRLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7Q0FDeEgsUUFBUSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtDQUN4SCxRQUFRLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0NBQ3BILFFBQVEsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO0NBQ3hILFFBQVEsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0NBQ3ZILFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUc7Q0FDcEgsUUFBUSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRztDQUN0SCxRQUFRLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0NBQ3RILFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJO0NBQ3ZILFFBQVEsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUk7Q0FDcEgsUUFBUSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtDQUN2SCxRQUFRLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJO0NBQ3JILFFBQVEsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUc7Q0FDcEgsUUFBUSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSTtDQUN4SCxRQUFRLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJO0NBQ3ZILFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUk7Q0FDcEgsUUFBUSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRztDQUNuSCxRQUFRLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHO0NBQ3ZILFFBQVEsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO0NBQ3hILFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSTtDQUNwSCxRQUFRLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUk7Q0FDdEgsUUFBUSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUk7Q0FDeEgsUUFBUSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUU7Q0FDbkgsUUFBUSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJO0NBQ3hILFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDO0NBQ3ZILFFBQVEsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUc7Q0FDeEgsUUFBUSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUc7Q0FDcEgsUUFBUSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUk7Q0FDeEgsUUFBUSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSTtDQUN0SCxRQUFRLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7Q0FDbkgsUUFBUSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSTtDQUNuSCxRQUFRLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0NBQ3hILFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtDQUNuSCxRQUFRLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7Q0FDbkgsUUFBUSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0NBQ3ZILFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSTtDQUN0SCxRQUFRLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHO0NBQ3ZILFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUc7Q0FDdEgsUUFBUSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRztDQUN2SCxRQUFRLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRztDQUNySCxRQUFRLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0NBQ3RILFFBQVEsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUc7Q0FDckgsUUFBUSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHO0NBQ25ILFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUc7Q0FDdkgsUUFBUSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSTtDQUNySCxRQUFRLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRztDQUN2SCxRQUFRLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0NBQ3hILFFBQVEsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJO0NBQ3hILFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJO0NBQ3RILFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO0NBQ3BILFFBQVEsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRztDQUN0SCxRQUFRLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSTtDQUN4SCxRQUFRLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJO0NBQ3RILFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHO0NBQ3hILFFBQVEsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUc7Q0FDcEgsUUFBUSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtDQUNySCxRQUFRLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7Q0FDdEgsUUFBUSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0NBQ3hILFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtDQUN0SCxRQUFRLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7Q0FDdkgsUUFBUSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0NBQ3JILFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtDQUNwSCxRQUFRLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJO0NBQ3JILFFBQVEsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7Q0FDckgsUUFBUSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0NBQ25ILFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUc7Q0FDcEgsUUFBUSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJO0NBQ3BILFFBQVEsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUc7Q0FDdEgsUUFBUSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRztDQUNwSCxRQUFRLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRztDQUNySCxRQUFRLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7Q0FDcEgsUUFBUSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0NBQ3hILFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtDQUN2SCxRQUFRLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7Q0FDdEgsUUFBUSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUc7Q0FDckgsUUFBUSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0NBQ25ILFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSTtDQUNwSCxRQUFRLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0NBQ3ZILFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtDQUN4SCxRQUFRLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7Q0FDbkgsUUFBUSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7Q0FDaEcsS0FBSyxDQUFDLENBQUM7Q0FDUCxJQUFJLE9BQU8sWUFBWSxDQUFDO0NBQ3hCLENBQUMsRUFBRSxDQUFDLENBQUM7Q0FDTCxlQUFlLEdBQUcsWUFBWSxDQUFDOzs7OztDQ2xlL0I7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7Q0FDOUQ7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLG9CQUFvQixrQkFBa0IsWUFBWTtDQUN0RCxJQUFJLFNBQVMsb0JBQW9CLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRTtDQUNoRCxRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0NBQ3pCLFFBQVEsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7Q0FDN0IsS0FBSztDQUNMLElBQUksb0JBQW9CLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxZQUFZO0NBQ3pELFFBQVEsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0NBQ3pCLEtBQUssQ0FBQztDQUNOLElBQUksb0JBQW9CLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxZQUFZO0NBQzNELFFBQVEsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0NBQzNCLEtBQUssQ0FBQztDQUNOLElBQUksT0FBTyxvQkFBb0IsQ0FBQztDQUNoQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0NBQ0wsZUFBZSxHQUFHLG9CQUFvQixDQUFDOzs7OztDQ2pDdkM7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsSUFBSSxRQUFRLEdBQUcsQ0FBQ0EsY0FBSSxJQUFJQSxjQUFJLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxFQUFFO0NBQ3RELElBQUksSUFBSSxDQUFDLEdBQUcsT0FBTyxNQUFNLEtBQUssVUFBVSxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztDQUNsRixJQUFJLElBQUksQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUM1QixJQUFJLElBQUksQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE1BQU0sS0FBSyxRQUFRLEVBQUUsT0FBTztDQUNsRCxRQUFRLElBQUksRUFBRSxZQUFZO0NBQzFCLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO0NBQy9DLFlBQVksT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7Q0FDcEQsU0FBUztDQUNULEtBQUssQ0FBQztDQUNOLElBQUksTUFBTSxJQUFJLFNBQVMsQ0FBQyxDQUFDLEdBQUcseUJBQXlCLEdBQUcsaUNBQWlDLENBQUMsQ0FBQztDQUMzRixDQUFDLENBQUM7Q0FDRixNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztDQUM5RDtDQUNBO0FBQ2lEO0FBQ0w7QUFDQTtBQUNtQjtDQUMvRDtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLFFBQVEsa0JBQWtCLFlBQVk7Q0FDMUMsSUFBSSxTQUFTLFFBQVEsR0FBRztDQUN4QixLQUFLO0NBQ0w7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLFFBQVEsQ0FBQyxjQUFjLEdBQUcsVUFBVSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtDQUNoRTtDQUNBO0NBQ0E7Q0FDQSxRQUFRLElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztDQUMvQyxRQUFRLElBQUksa0JBQWtCLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7Q0FDdEUsUUFBUSxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFO0NBQ3hDLFlBQVksU0FBUyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztDQUMxQyxZQUFZLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztDQUNsQyxZQUFZLGtCQUFrQixHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0NBQ3RFLFNBQVM7Q0FDVCxRQUFRLE9BQU8sSUFBSSxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLGtCQUFrQixDQUFDLENBQUM7Q0FDakYsS0FBSyxDQUFDO0NBQ047Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsVUFBVSxRQUFRLEVBQUUsU0FBUyxFQUFFO0NBQ3JELFFBQVEsSUFBSSxHQUFHLEVBQUUsRUFBRSxDQUFDO0NBQ3BCLFFBQVEsSUFBSSxrQkFBa0IsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO0NBQzdDLFFBQVEsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0NBQ3BCLFFBQVEsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0NBQ3ZCLFFBQVEsSUFBSSxpQkFBaUIsR0FBRyxLQUFLLENBQUM7Q0FDdEMsUUFBUSxPQUFPLEdBQUcsR0FBRyxTQUFTLENBQUMsU0FBUyxFQUFFLEVBQUU7Q0FDNUMsWUFBWSxJQUFJLFFBQVEsR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7Q0FDekUsWUFBWSxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRTtDQUM1RCxnQkFBZ0IsSUFBSSxDQUFDLGlCQUFpQixFQUFFO0NBQ3hDO0NBQ0Esb0JBQW9CLE1BQU07Q0FDMUIsaUJBQWlCO0NBQ2pCO0NBQ0E7Q0FDQSxnQkFBZ0IsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0NBQzFDLGdCQUFnQixNQUFNLEdBQUcsQ0FBQyxDQUFDO0NBQzNCLGdCQUFnQixJQUFJO0NBQ3BCLG9CQUFvQixLQUFLLElBQUksb0JBQW9CLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxFQUFFLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsc0JBQXNCLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxFQUFFLEVBQUU7Q0FDNU8sd0JBQXdCLElBQUksaUJBQWlCLEdBQUcsc0JBQXNCLENBQUMsS0FBSyxDQUFDO0NBQzdFLHdCQUF3QixJQUFJLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRTtDQUMxRCw0QkFBNEIsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQ3pGLHlCQUF5QjtDQUN6Qix3QkFBd0IsSUFBSSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUU7Q0FDMUQsNEJBQTRCLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztDQUN6Rix5QkFBeUI7Q0FDekIscUJBQXFCO0NBQ3JCLGlCQUFpQjtDQUNqQixnQkFBZ0IsT0FBTyxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtDQUN6RCx3QkFBd0I7Q0FDeEIsb0JBQW9CLElBQUk7Q0FDeEIsd0JBQXdCLElBQUksc0JBQXNCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLEtBQUssRUFBRSxHQUFHLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztDQUN4SixxQkFBcUI7Q0FDckIsNEJBQTRCLEVBQUUsSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7Q0FDekQsaUJBQWlCO0NBQ2pCLGdCQUFnQixHQUFHLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQztDQUN6QyxnQkFBZ0IsU0FBUztDQUN6QixhQUFhO0NBQ2IsWUFBWSxpQkFBaUIsR0FBRyxJQUFJLENBQUM7Q0FDckMsWUFBWSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Q0FDOUMsWUFBWSxJQUFJLENBQUMsUUFBUSxFQUFFO0NBQzNCLGdCQUFnQixNQUFNO0NBQ3RCLGFBQWE7Q0FDYjtDQUNBO0NBQ0EsWUFBWSxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUU7Q0FDckMsZ0JBQWdCLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0NBQ3hELGdCQUFnQixHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztDQUNyRCxhQUFhO0NBQ2IsaUJBQWlCO0NBQ2pCLGdCQUFnQixNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztDQUN4RCxnQkFBZ0IsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7Q0FDckQsYUFBYTtDQUNiLFNBQVM7Q0FDVCxRQUFRLE9BQU8sa0JBQWtCLENBQUM7Q0FDbEMsS0FBSyxDQUFDO0NBQ047Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsSUFBSSxRQUFRLENBQUMsWUFBWSxHQUFHLFVBQVUsTUFBTSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUU7Q0FDckUsUUFBUSxJQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7Q0FDeEMsUUFBUSxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7Q0FDdEM7Q0FDQSxRQUFRLElBQUksTUFBTSxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ2xDLFFBQVEsUUFBUSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsUUFBUSxDQUFDLGFBQWEsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0NBQzFLLFFBQVEsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFO0NBQy9CLFlBQVksV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7Q0FDdkQsWUFBWSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztDQUNwRCxTQUFTO0NBQ1QsUUFBUSxRQUFRLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsbUJBQW1CLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUUsUUFBUSxDQUFDLG9CQUFvQixDQUFDLENBQUM7Q0FDeEssUUFBUSxPQUFPLE1BQU0sQ0FBQztDQUN0QixLQUFLLENBQUM7Q0FDTixJQUFJLFFBQVEsQ0FBQyxZQUFZLEdBQUcsVUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFO0NBQzdFLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtDQUM1RCxZQUFZLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUN6RCxTQUFTO0NBQ1QsS0FBSyxDQUFDO0NBQ04sSUFBSSxRQUFRLENBQUMsbUJBQW1CLEdBQUcsVUFBVSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRTtDQUNwRztDQUNBLFFBQVEsSUFBSSxNQUFNLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDbEMsUUFBUSxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUM7Q0FDMUIsUUFBUSxJQUFJLFFBQVEsR0FBRyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7Q0FDdEQsUUFBUSxPQUFPLFFBQVEsR0FBRyxNQUFNLEVBQUUsUUFBUSxJQUFJLFFBQVEsQ0FBQyxRQUFRLEVBQUU7Q0FDakUsWUFBWSxJQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7Q0FDaEgsWUFBWSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUU7Q0FDN0IsZ0JBQWdCLE9BQU8sUUFBUSxHQUFHLENBQUMsRUFBRTtDQUNyQyxvQkFBb0IsSUFBSSxjQUFjLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7Q0FDckksb0JBQW9CLElBQUksY0FBYyxJQUFJLElBQUksRUFBRTtDQUNoRCx3QkFBd0IsR0FBRyxHQUFHLGNBQWMsQ0FBQztDQUM3QyxxQkFBcUI7Q0FDckIseUJBQXlCO0NBQ3pCLHdCQUF3QixRQUFRLEVBQUUsQ0FBQztDQUNuQyx3QkFBd0IsTUFBTTtDQUM5QixxQkFBcUI7Q0FDckIsaUJBQWlCO0NBQ2pCLGdCQUFnQixNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztDQUN4RSxnQkFBZ0IsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksYUFBYSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7Q0FDeEUsZ0JBQWdCLEtBQUssR0FBRyxJQUFJLENBQUM7Q0FDN0IsZ0JBQWdCLE1BQU07Q0FDdEIsYUFBYTtDQUNiLFNBQVM7Q0FDVCxRQUFRLElBQUksT0FBTyxHQUFHLFFBQVEsR0FBRyxDQUFDLENBQUM7Q0FDbkM7Q0FDQSxRQUFRLElBQUksS0FBSyxFQUFFO0NBQ25CLFlBQVksSUFBSSxlQUFlLEdBQUcsQ0FBQyxDQUFDO0NBQ3BDLFlBQVksSUFBSSxjQUFjLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDL0csWUFBWSxPQUFPLE9BQU8sR0FBRyxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUU7Q0FDaEQsZ0JBQWdCLElBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztDQUN6SDtDQUNBO0NBQ0E7Q0FDQTtDQUNBLGdCQUFnQixJQUFJLEdBQUcsSUFBSSxJQUFJO0NBQy9CLG9CQUFvQixJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsaUJBQWlCO0NBQ3JGLG9CQUFvQixJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsaUJBQWlCLEVBQUU7Q0FDdkYsb0JBQW9CLGNBQWMsR0FBRyxHQUFHLENBQUM7Q0FDekMsb0JBQW9CLGVBQWUsR0FBRyxDQUFDLENBQUM7Q0FDeEMsaUJBQWlCO0NBQ2pCLHFCQUFxQjtDQUNyQixvQkFBb0IsSUFBSSxlQUFlLEdBQUcsUUFBUSxDQUFDLHFCQUFxQixFQUFFO0NBQzFFLHdCQUF3QixNQUFNO0NBQzlCLHFCQUFxQjtDQUNyQix5QkFBeUI7Q0FDekIsd0JBQXdCLGVBQWUsRUFBRSxDQUFDO0NBQzFDLHFCQUFxQjtDQUNyQixpQkFBaUI7Q0FDakIsYUFBYTtDQUNiLFlBQVksT0FBTyxJQUFJLGVBQWUsR0FBRyxDQUFDLENBQUM7Q0FDM0MsWUFBWSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztDQUM5RSxZQUFZLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLGFBQWEsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0NBQzlFLFNBQVM7Q0FDVCxRQUFRLElBQUksT0FBTyxHQUFHLFFBQVEsR0FBRyxRQUFRLENBQUMsa0JBQWtCLEVBQUU7Q0FDOUQsWUFBWSxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7Q0FDaEQsU0FBUztDQUNULFFBQVEsT0FBTyxNQUFNLENBQUM7Q0FDdEIsS0FBSyxDQUFDO0NBQ047Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsR0FBRyxVQUFVLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRTtDQUNyRyxRQUFRLFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztDQUNyRSxRQUFRLElBQUksWUFBWSxHQUFHLE1BQU0sQ0FBQztDQUNsQyxRQUFRLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQztDQUMzQjtDQUNBLFFBQVEsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxHQUFHLENBQUMsSUFBSSxZQUFZLEdBQUcsQ0FBQyxJQUFJLFVBQVUsRUFBRSxHQUFHLFFBQVEsQ0FBQyxlQUFlLEVBQUU7Q0FDN0csWUFBWSxZQUFZLEVBQUUsQ0FBQztDQUMzQixTQUFTO0NBQ1QsUUFBUSxJQUFJLENBQUMsR0FBRyxZQUFZLENBQUM7Q0FDN0IsUUFBUSxJQUFJLGVBQWUsR0FBRyxDQUFDLENBQUM7Q0FDaEMsUUFBUSxJQUFJLGFBQWEsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO0NBQzNDLFFBQVEsS0FBSyxJQUFJLE9BQU8sR0FBRyxVQUFVLEVBQUUsQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRTtDQUN2RCxZQUFZLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0NBQzNDLFlBQVksSUFBSSxLQUFLLEtBQUssT0FBTyxFQUFFO0NBQ25DLGdCQUFnQixRQUFRLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztDQUM1QyxhQUFhO0NBQ2IsaUJBQWlCO0NBQ2pCLGdCQUFnQixJQUFJLGVBQWUsS0FBSyxhQUFhLEdBQUcsQ0FBQyxFQUFFO0NBQzNELG9CQUFvQixJQUFJLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRTtDQUN4SSx3QkFBd0IsT0FBTyxJQUFJLFVBQVUsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ2pFLHFCQUFxQjtDQUNyQixvQkFBb0IsWUFBWSxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDOUQsb0JBQW9CLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxlQUFlLEdBQUcsQ0FBQyxDQUFDLENBQUM7Q0FDOUYsb0JBQW9CLFFBQVEsQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0NBQ3RELG9CQUFvQixRQUFRLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0NBQ2xELG9CQUFvQixlQUFlLEVBQUUsQ0FBQztDQUN0QyxpQkFBaUI7Q0FDakIscUJBQXFCO0NBQ3JCLG9CQUFvQixlQUFlLEVBQUUsQ0FBQztDQUN0QyxpQkFBaUI7Q0FDakIsZ0JBQWdCLFFBQVEsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7Q0FDOUMsZ0JBQWdCLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQztDQUNuQyxhQUFhO0NBQ2IsU0FBUztDQUNULFFBQVEsSUFBSSxlQUFlLEtBQUssYUFBYSxHQUFHLENBQUM7Q0FDakQsWUFBWSxRQUFRLENBQUMsb0JBQW9CLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsdUJBQXVCLENBQUMsR0FBRyxRQUFRLENBQUMsZ0JBQWdCLEVBQUU7Q0FDNUgsWUFBWSxPQUFPLElBQUksVUFBVSxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ3pELFNBQVM7Q0FDVCxRQUFRLE9BQU8sSUFBSSxDQUFDO0NBQ3BCLEtBQUssQ0FBQztDQUNOO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLFFBQVEsQ0FBQyxvQkFBb0IsR0FBRyxVQUFVLFFBQVEsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUU7Q0FDeEYsUUFBUSxJQUFJLFdBQVcsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO0NBQzFDLFFBQVEsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0NBQ3RCLFFBQVEsSUFBSSxhQUFhLEdBQUcsQ0FBQyxDQUFDO0NBQzlCLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRTtDQUM5QyxZQUFZLEtBQUssSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDakMsWUFBWSxhQUFhLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ3hDLFNBQVM7Q0FDVCxRQUFRLElBQUksS0FBSyxHQUFHLGFBQWEsRUFBRTtDQUNuQztDQUNBO0NBQ0EsWUFBWSxtQ0FBbUMsUUFBUSxDQUFDO0NBQ3hELFNBQVM7Q0FDVDtDQUNBO0NBQ0E7Q0FDQSxRQUFRLElBQUksWUFBWSxHQUFHLEtBQUssR0FBRyxhQUFhLENBQUM7Q0FDakQsUUFBUSxxQkFBcUIsSUFBSSxZQUFZLENBQUM7Q0FDOUMsUUFBUSxJQUFJLGFBQWEsR0FBRyxHQUFHLENBQUM7Q0FDaEMsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFO0NBQzlDLFlBQVksSUFBSSxPQUFPLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ3RDLFlBQVksSUFBSSxhQUFhLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQztDQUMxRCxZQUFZLElBQUksUUFBUSxHQUFHLE9BQU8sR0FBRyxhQUFhLEdBQUcsT0FBTyxHQUFHLGFBQWEsR0FBRyxhQUFhLEdBQUcsT0FBTyxDQUFDO0NBQ3ZHLFlBQVksSUFBSSxRQUFRLEdBQUcscUJBQXFCLEVBQUU7Q0FDbEQsZ0JBQWdCLG1DQUFtQyxRQUFRLENBQUM7Q0FDNUQsYUFBYTtDQUNiLFlBQVksYUFBYSxJQUFJLFFBQVEsQ0FBQztDQUN0QyxTQUFTO0NBQ1QsUUFBUSxPQUFPLGFBQWEsR0FBRyxLQUFLLENBQUM7Q0FDckMsS0FBSyxDQUFDO0NBQ04sSUFBSSxRQUFRLENBQUMscUJBQXFCLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDbkUsSUFBSSxRQUFRLENBQUMsb0JBQW9CLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDbEUsSUFBSSxRQUFRLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO0NBQ3JDLElBQUksUUFBUSxDQUFDLHVCQUF1QixHQUFHLEdBQUcsQ0FBQztDQUMzQztDQUNBO0NBQ0EsSUFBSSxRQUFRLENBQUMsYUFBYSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUN2RTtDQUNBLElBQUksUUFBUSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ3pFLElBQUksUUFBUSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUM7Q0FDakMsSUFBSSxRQUFRLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO0NBQ25DO0NBQ0E7Q0FDQSxJQUFJLFFBQVEsQ0FBQyxxQkFBcUIsR0FBRyxFQUFFLENBQUM7Q0FDeEM7Q0FDQTtDQUNBLElBQUksUUFBUSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7Q0FDMUIsSUFBSSxRQUFRLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxDQUFDO0NBQ3JDLElBQUksT0FBTyxRQUFRLENBQUM7Q0FDcEIsQ0FBQyxFQUFFLENBQUMsQ0FBQztDQUNMLGVBQWUsR0FBRyxRQUFRLENBQUM7Ozs7O0NDalYzQjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLFFBQVEsR0FBRyxDQUFDQSxjQUFJLElBQUlBLGNBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDLEVBQUU7Q0FDdEQsSUFBSSxJQUFJLENBQUMsR0FBRyxPQUFPLE1BQU0sS0FBSyxVQUFVLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0NBQ2xGLElBQUksSUFBSSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQzVCLElBQUksSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsTUFBTSxLQUFLLFFBQVEsRUFBRSxPQUFPO0NBQ2xELFFBQVEsSUFBSSxFQUFFLFlBQVk7Q0FDMUIsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7Q0FDL0MsWUFBWSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztDQUNwRCxTQUFTO0NBQ1QsS0FBSyxDQUFDO0NBQ04sSUFBSSxNQUFNLElBQUksU0FBUyxDQUFDLENBQUMsR0FBRyx5QkFBeUIsR0FBRyxpQ0FBaUMsQ0FBQyxDQUFDO0NBQzNGLENBQUMsQ0FBQztDQUNGLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0NBQzlEO0FBQzhFO0FBQy9CO0FBQ2M7Q0FDN0Q7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLFdBQVcsa0JBQWtCLFlBQVk7Q0FDN0MsSUFBSSxTQUFTLFdBQVcsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFO0NBQzlDLFFBQVEsSUFBSSxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtDQUN2QyxZQUFZLE1BQU0sSUFBSSwwQkFBMEIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztDQUMzRCxTQUFTO0NBQ1QsUUFBUSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztDQUMzQixRQUFRLElBQUksa0JBQWtCLFdBQVcsWUFBWSxDQUFDLE1BQU0sQ0FBQztDQUM3RCxRQUFRLElBQUksa0JBQWtCLEdBQUcsQ0FBQyxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUU7Q0FDN0Q7Q0FDQSxZQUFZLElBQUksWUFBWSxXQUFXLENBQUMsQ0FBQztDQUN6QyxZQUFZLE9BQU8sWUFBWSxHQUFHLGtCQUFrQixJQUFJLFlBQVksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUU7Q0FDMUYsZ0JBQWdCLFlBQVksRUFBRSxDQUFDO0NBQy9CLGFBQWE7Q0FDYixZQUFZLElBQUksWUFBWSxLQUFLLGtCQUFrQixFQUFFO0NBQ3JELGdCQUFnQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUN4RCxhQUFhO0NBQ2IsaUJBQWlCO0NBQ2pCLGdCQUFnQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksVUFBVSxDQUFDLGtCQUFrQixHQUFHLFlBQVksQ0FBQyxDQUFDO0NBQ3RGLGdCQUFnQixRQUFRLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7Q0FDdkgsYUFBYTtDQUNiLFNBQVM7Q0FDVCxhQUFhO0NBQ2IsWUFBWSxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztDQUM3QyxTQUFTO0NBQ1QsS0FBSztDQUNMLElBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxlQUFlLEdBQUcsWUFBWTtDQUN4RCxRQUFRLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztDQUNqQyxLQUFLLENBQUM7Q0FDTjtDQUNBO0NBQ0E7Q0FDQSxJQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLFlBQVk7Q0FDbEQsUUFBUSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztDQUM1QyxLQUFLLENBQUM7Q0FDTjtDQUNBO0NBQ0E7Q0FDQSxJQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLFlBQVk7Q0FDL0MsUUFBUSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0NBQzFDLEtBQUssQ0FBQztDQUNOO0NBQ0E7Q0FDQTtDQUNBLElBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxjQUFjLEdBQUcsVUFBVSxNQUFNLEVBQUU7Q0FDN0QsUUFBUSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO0NBQ3hFLEtBQUssQ0FBQztDQUNOO0NBQ0E7Q0FDQTtDQUNBLElBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLEVBQUU7Q0FDcEQsUUFBUSxJQUFJLEdBQUcsRUFBRSxFQUFFLENBQUM7Q0FDcEIsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7Q0FDckI7Q0FDQSxZQUFZLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUMxQyxTQUFTO0NBQ1QsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7Q0FDckI7Q0FDQSxZQUFZLElBQUksR0FBRyxXQUFXLENBQUMsQ0FBQztDQUNoQyxZQUFZLElBQUk7Q0FDaEIsZ0JBQWdCLEtBQUssSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO0NBQ3JHLG9CQUFvQixJQUFJLFdBQVcsR0FBRyxFQUFFLENBQUMsS0FBSyxTQUFTO0NBQ3ZELG9CQUFvQixHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0NBQzNELGlCQUFpQjtDQUNqQixhQUFhO0NBQ2IsWUFBWSxPQUFPLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO0NBQ3JELG9CQUFvQjtDQUNwQixnQkFBZ0IsSUFBSTtDQUNwQixvQkFBb0IsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztDQUN4RSxpQkFBaUI7Q0FDakIsd0JBQXdCLEVBQUUsSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7Q0FDckQsYUFBYTtDQUNiLFlBQVksT0FBTyxHQUFHLENBQUM7Q0FDdkIsU0FBUztDQUNULFFBQVEsSUFBSSxNQUFNLFdBQVcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUNsRCxRQUFRLElBQUksSUFBSSxXQUFXLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO0NBQ3BELFFBQVEsS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRTtDQUMvQyxZQUFZLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQzFGLFNBQVM7Q0FDVCxRQUFRLE9BQU8sTUFBTSxDQUFDO0NBQ3RCLEtBQUssQ0FBQztDQUNOLElBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsVUFBVSxLQUFLLEVBQUU7Q0FDakQsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFO0NBQzdDLFlBQVksTUFBTSxJQUFJLDBCQUEwQixDQUFDLE9BQU8sQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO0NBQzFHLFNBQVM7Q0FDVCxRQUFRLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFO0NBQzNCLFlBQVksT0FBTyxLQUFLLENBQUM7Q0FDekIsU0FBUztDQUNULFFBQVEsSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUU7Q0FDNUIsWUFBWSxPQUFPLElBQUksQ0FBQztDQUN4QixTQUFTO0NBQ1QsUUFBUSxJQUFJLG1CQUFtQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7Q0FDcEQsUUFBUSxJQUFJLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7Q0FDcEQsUUFBUSxJQUFJLG1CQUFtQixDQUFDLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUU7Q0FDcEUsWUFBWSxJQUFJLElBQUksR0FBRyxtQkFBbUIsQ0FBQztDQUMzQyxZQUFZLG1CQUFtQixHQUFHLGtCQUFrQixDQUFDO0NBQ3JELFlBQVksa0JBQWtCLEdBQUcsSUFBSSxDQUFDO0NBQ3RDLFNBQVM7Q0FDVCxRQUFRLElBQUksT0FBTyxHQUFHLElBQUksVUFBVSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0NBQ2hFLFFBQVEsSUFBSSxVQUFVLFdBQVcsa0JBQWtCLENBQUMsTUFBTSxHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQztDQUN4RjtDQUNBLFFBQVEsUUFBUSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7Q0FDbEYsUUFBUSxLQUFLLElBQUksQ0FBQyxXQUFXLFVBQVUsRUFBRSxDQUFDLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0NBQzdFLFlBQVksT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ3BHLFNBQVM7Q0FDVCxRQUFRLE9BQU8sSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztDQUNwRCxLQUFLLENBQUM7Q0FDTixJQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFVBQVUsS0FBSyxFQUFFO0NBQ3RELFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTtDQUM3QyxZQUFZLE1BQU0sSUFBSSwwQkFBMEIsQ0FBQyxPQUFPLENBQUMsK0NBQStDLENBQUMsQ0FBQztDQUMxRyxTQUFTO0NBQ1QsUUFBUSxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRTtDQUM1QixZQUFZLE9BQU8sSUFBSSxDQUFDO0NBQ3hCLFNBQVM7Q0FDVCxRQUFRLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztDQUMxQyxLQUFLLENBQUM7Q0FDTixJQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFVBQVUsS0FBSyxFQUFFO0NBQ3RELFFBQVEsSUFBSSxLQUFLLFlBQVksV0FBVyxFQUFFO0NBQzFDLFlBQVksT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0NBQzdDLFNBQVM7Q0FDVCxRQUFRLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztDQUMxQyxLQUFLLENBQUM7Q0FDTixJQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsYUFBYSxHQUFHLFVBQVUsS0FBSyxFQUFFO0NBQzNELFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTtDQUM3QyxZQUFZLE1BQU0sSUFBSSwwQkFBMEIsQ0FBQyxPQUFPLENBQUMsK0NBQStDLENBQUMsQ0FBQztDQUMxRyxTQUFTO0NBQ1QsUUFBUSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUU7Q0FDN0M7Q0FDQSxZQUFZLE9BQU8sSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUNwRSxTQUFTO0NBQ1QsUUFBUSxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO0NBQzlDLFFBQVEsSUFBSSxPQUFPLFdBQVcsYUFBYSxDQUFDLE1BQU0sQ0FBQztDQUNuRCxRQUFRLElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7Q0FDL0MsUUFBUSxJQUFJLE9BQU8sV0FBVyxhQUFhLENBQUMsTUFBTSxDQUFDO0NBQ25ELFFBQVEsSUFBSSxPQUFPLEdBQUcsSUFBSSxVQUFVLENBQUMsT0FBTyxHQUFHLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQztDQUM1RCxRQUFRLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Q0FDbEQsWUFBWSxJQUFJLE1BQU0sV0FBVyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDbEQsWUFBWSxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFO0NBQ3RELGdCQUFnQixPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDL0csYUFBYTtDQUNiLFNBQVM7Q0FDVCxRQUFRLE9BQU8sSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztDQUNwRCxLQUFLLENBQUM7Q0FDTixJQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFlBQVk7Q0FDakQsUUFBUSxJQUFJLElBQUksV0FBVyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztDQUNwRCxRQUFRLElBQUksb0JBQW9CLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7Q0FDeEQsUUFBUSxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFO0NBQy9DLFlBQVksb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUNuRixTQUFTO0NBQ1QsUUFBUSxPQUFPLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztDQUNqRSxLQUFLLENBQUM7Q0FDTixJQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsY0FBYyxHQUFHLFVBQVUsTUFBTSxFQUFFO0NBQzdELFFBQVEsSUFBSSxNQUFNLEtBQUssQ0FBQyxFQUFFO0NBQzFCLFlBQVksT0FBTyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ3BFLFNBQVM7Q0FDVCxRQUFRLElBQUksTUFBTSxLQUFLLENBQUMsRUFBRTtDQUMxQixZQUFZLE9BQU8sSUFBSSxDQUFDO0NBQ3hCLFNBQVM7Q0FDVCxRQUFRLElBQUksSUFBSSxXQUFXLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO0NBQ3BELFFBQVEsSUFBSSxPQUFPLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7Q0FDM0MsUUFBUSxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFO0NBQy9DLFlBQVksT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7Q0FDM0UsU0FBUztDQUNULFFBQVEsT0FBTyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0NBQ3BELEtBQUssQ0FBQztDQUNOLElBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsR0FBRyxVQUFVLE1BQU0sRUFBRSxXQUFXLEVBQUU7Q0FDOUUsUUFBUSxJQUFJLE1BQU0sR0FBRyxDQUFDLEVBQUU7Q0FDeEIsWUFBWSxNQUFNLElBQUksMEJBQTBCLENBQUMsT0FBTyxFQUFFLENBQUM7Q0FDM0QsU0FBUztDQUNULFFBQVEsSUFBSSxXQUFXLEtBQUssQ0FBQyxFQUFFO0NBQy9CLFlBQVksT0FBTyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ3BFLFNBQVM7Q0FDVCxRQUFRLElBQUksSUFBSSxXQUFXLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO0NBQ3BELFFBQVEsSUFBSSxPQUFPLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDO0NBQ3BELFFBQVEsS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRTtDQUMvQyxZQUFZLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0NBQ2hGLFNBQVM7Q0FDVCxRQUFRLE9BQU8sSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztDQUNwRCxLQUFLLENBQUM7Q0FDTjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLElBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsWUFBWTtDQUNqRCxRQUFRLElBQUksTUFBTSxHQUFHLElBQUksZUFBZSxDQUFDLE9BQU8sMkJBQTJCLENBQUM7Q0FDNUUsUUFBUSxLQUFLLElBQUksTUFBTSxXQUFXLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFO0NBQzNFLFlBQVksSUFBSSxXQUFXLFdBQVcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztDQUNsRSxZQUFZLElBQUksV0FBVyxLQUFLLENBQUMsRUFBRTtDQUNuQyxnQkFBZ0IsSUFBSSxXQUFXLEdBQUcsQ0FBQyxFQUFFO0NBQ3JDLG9CQUFvQixNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0NBQ3pDLG9CQUFvQixXQUFXLEdBQUcsQ0FBQyxXQUFXLENBQUM7Q0FDL0MsaUJBQWlCO0NBQ2pCLHFCQUFxQjtDQUNyQixvQkFBb0IsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxFQUFFO0NBQzdDLHdCQUF3QixNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0NBQzdDLHFCQUFxQjtDQUNyQixpQkFBaUI7Q0FDakIsZ0JBQWdCLElBQUksTUFBTSxLQUFLLENBQUMsSUFBSSxXQUFXLEtBQUssQ0FBQyxFQUFFO0NBQ3ZELG9CQUFvQixNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0NBQy9DLGlCQUFpQjtDQUNqQixnQkFBZ0IsSUFBSSxNQUFNLEtBQUssQ0FBQyxFQUFFO0NBQ2xDLG9CQUFvQixJQUFJLE1BQU0sS0FBSyxDQUFDLEVBQUU7Q0FDdEMsd0JBQXdCLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7Q0FDM0MscUJBQXFCO0NBQ3JCLHlCQUF5QjtDQUN6Qix3QkFBd0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztDQUM1Qyx3QkFBd0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztDQUM5QyxxQkFBcUI7Q0FDckIsaUJBQWlCO0NBQ2pCLGFBQWE7Q0FDYixTQUFTO0NBQ1QsUUFBUSxPQUFPLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztDQUNqQyxLQUFLLENBQUM7Q0FDTixJQUFJLE9BQU8sV0FBVyxDQUFDO0NBQ3ZCLENBQUMsRUFBRSxDQUFDLENBQUM7Q0FDTCxlQUFlLEdBQUcsV0FBVyxDQUFDOzs7OztDQ2pSOUIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDZ0I7QUFDVjtDQUNwRSxJQUFJLFdBQVcsa0JBQWtCLFlBQVk7Q0FDN0MsSUFBSSxTQUFTLFdBQVcsR0FBRztDQUMzQixLQUFLO0NBQ0wsSUFBSSxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsR0FBRyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUU7Q0FDaEQsUUFBUSxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDO0NBQ3RDLEtBQUssQ0FBQztDQUNOLElBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0NBQ3JELFFBQVEsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDO0NBQ3JELEtBQUssQ0FBQztDQUNOLElBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsVUFBVSxDQUFDLEVBQUU7Q0FDN0MsUUFBUSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDaEMsS0FBSyxDQUFDO0NBQ04sSUFBSSxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsR0FBRyxVQUFVLENBQUMsRUFBRTtDQUM3QyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtDQUNyQixZQUFZLE1BQU0sSUFBSSwwQkFBMEIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztDQUMzRCxTQUFTO0NBQ1QsUUFBUSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDaEMsS0FBSyxDQUFDO0NBQ04sSUFBSSxXQUFXLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUMsRUFBRTtDQUNqRCxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtDQUNyQixZQUFZLE1BQU0sSUFBSSxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztDQUN0RCxTQUFTO0NBQ1QsUUFBUSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0NBQ2xFLEtBQUssQ0FBQztDQUNOLElBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0NBQ3JELFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7Q0FDaEMsWUFBWSxPQUFPLENBQUMsQ0FBQztDQUNyQixTQUFTO0NBQ1QsUUFBUSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ3pGLEtBQUssQ0FBQztDQUNOLElBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsWUFBWTtDQUNoRCxRQUFRLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztDQUM1QixLQUFLLENBQUM7Q0FDTixJQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxFQUFFO0NBQ2hELFFBQVEsT0FBTyxDQUFDLEtBQUssSUFBSSxDQUFDO0NBQzFCLEtBQUssQ0FBQztDQUNOLElBQUksT0FBTyxXQUFXLENBQUM7Q0FDdkIsQ0FBQyxFQUFFLENBQUMsQ0FBQztDQUNMLGVBQWUsR0FBRyxXQUFXLENBQUM7Ozs7O0NDekM5QjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLFNBQVMsR0FBRyxDQUFDQSxjQUFJLElBQUlBLGNBQUksQ0FBQyxTQUFTLEtBQUssQ0FBQyxZQUFZO0NBQ3pELElBQUksSUFBSSxhQUFhLEdBQUcsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0NBQ3hDLFFBQVEsYUFBYSxHQUFHLE1BQU0sQ0FBQyxjQUFjO0NBQzdDLGFBQWEsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLFlBQVksS0FBSyxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztDQUN4RixZQUFZLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztDQUN2RixRQUFRLE9BQU8sYUFBYSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUNuQyxLQUFLLENBQUM7Q0FDTixJQUFJLE9BQU8sVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0NBQzNCLFFBQVEsYUFBYSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUM1QixRQUFRLFNBQVMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsRUFBRTtDQUMvQyxRQUFRLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFLLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7Q0FDN0YsS0FBSyxDQUFDO0NBQ04sQ0FBQyxHQUFHLENBQUM7Q0FDTCxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztDQUM5RDtDQUNBO0FBQ21EO0FBQ047QUFDaUM7QUFDakM7Q0FDN0M7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsSUFBSSxTQUFTLGtCQUFrQixVQUFVLE1BQU0sRUFBRTtDQUNqRCxJQUFJLFNBQVMsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7Q0FDakM7Q0FDQSxJQUFJLFNBQVMsU0FBUyxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUU7Q0FDM0MsUUFBUSxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQztDQUM5QyxRQUFRLEtBQUssQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0NBQ2hDLFFBQVEsS0FBSyxDQUFDLFFBQVEsR0FBRyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztDQUNqRCxRQUFRLEtBQUssQ0FBQyxRQUFRLEdBQUcsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7Q0FDakQsUUFBUSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7Q0FDMUIsUUFBUSxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFO0NBQ2xELFlBQVksS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7Q0FDbEMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsU0FBUyxJQUFJLE9BQU8sQ0FBQztDQUMxQyxTQUFTO0NBQ1QsUUFBUSxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtDQUN0RCxZQUFZLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztDQUNsRCxTQUFTO0NBQ1Q7Q0FDQSxRQUFRLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUMzRSxRQUFRLEtBQUssQ0FBQyxHQUFHLEdBQUcsSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUMxRSxRQUFRLE9BQU8sS0FBSyxDQUFDO0NBQ3JCLEtBQUs7Q0FDTCxJQUFJLFNBQVMsQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLFlBQVk7Q0FDOUMsUUFBUSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7Q0FDekIsS0FBSyxDQUFDO0NBQ04sSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxZQUFZO0NBQzdDLFFBQVEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO0NBQ3hCLEtBQUssQ0FBQztDQUNOLElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxhQUFhLEdBQUcsVUFBVSxNQUFNLEVBQUUsV0FBVyxFQUFFO0NBQ3ZFLFFBQVEsSUFBSSxNQUFNLEdBQUcsQ0FBQyxFQUFFO0NBQ3hCLFlBQVksTUFBTSxJQUFJLDBCQUEwQixDQUFDLE9BQU8sRUFBRSxDQUFDO0NBQzNELFNBQVM7Q0FDVCxRQUFRLElBQUksV0FBVyxLQUFLLENBQUMsRUFBRTtDQUMvQixZQUFZLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztDQUM3QixTQUFTO0NBQ1QsUUFBUSxJQUFJLFlBQVksR0FBRyxJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7Q0FDdEQsUUFBUSxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDO0NBQ3RDLFFBQVEsT0FBTyxJQUFJLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDO0NBQzdELEtBQUssQ0FBQztDQUNOLElBQUksU0FBUyxDQUFDLFNBQVMsR0FBRyxJQUFJLFNBQVMsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQ3ZGLElBQUksT0FBTyxTQUFTLENBQUM7Q0FDckIsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0NBQzFCLGVBQWUsR0FBRyxTQUFTLENBQUM7Ozs7O0NDbEY1QjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLFFBQVEsR0FBRyxDQUFDQSxjQUFJLElBQUlBLGNBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDLEVBQUU7Q0FDdEQsSUFBSSxJQUFJLENBQUMsR0FBRyxPQUFPLE1BQU0sS0FBSyxVQUFVLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0NBQ2xGLElBQUksSUFBSSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQzVCLElBQUksSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsTUFBTSxLQUFLLFFBQVEsRUFBRSxPQUFPO0NBQ2xELFFBQVEsSUFBSSxFQUFFLFlBQVk7Q0FDMUIsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7Q0FDL0MsWUFBWSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztDQUNwRCxTQUFTO0NBQ1QsS0FBSyxDQUFDO0NBQ04sSUFBSSxNQUFNLElBQUksU0FBUyxDQUFDLENBQUMsR0FBRyx5QkFBeUIsR0FBRyxpQ0FBaUMsQ0FBQyxDQUFDO0NBQzNGLENBQUMsQ0FBQztDQUNGLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0NBQzlEO0NBQ0E7QUFDZ0U7QUFDbkI7QUFDSjtDQUN6QztDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLGVBQWUsa0JBQWtCLFlBQVk7Q0FDakQsSUFBSSxTQUFTLGVBQWUsR0FBRztDQUMvQixRQUFRLElBQUksQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7Q0FDbkQsS0FBSztDQUNMO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsSUFBSSxlQUFlLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxVQUFVLFFBQVEsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFO0NBQ3JGLFFBQVEsSUFBSSxHQUFHLEVBQUUsRUFBRSxDQUFDO0NBQ3BCLFFBQVEsSUFBSSxJQUFJLEdBQUcsSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7Q0FDbkUsUUFBUSxJQUFJLENBQUMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQztDQUMvQyxRQUFRLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQztDQUMxQixRQUFRLEtBQUssSUFBSSxDQUFDLFdBQVcsY0FBYyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Q0FDekQsWUFBWSxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDaEUsWUFBWSxDQUFDLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQztDQUMvQyxZQUFZLElBQUksVUFBVSxLQUFLLENBQUMsRUFBRTtDQUNsQyxnQkFBZ0IsS0FBSyxHQUFHLElBQUksQ0FBQztDQUM3QixhQUFhO0NBQ2IsU0FBUztDQUNULFFBQVEsSUFBSSxDQUFDLEtBQUssRUFBRTtDQUNwQixZQUFZLE9BQU8sQ0FBQyxDQUFDO0NBQ3JCLFNBQVM7Q0FDVCxRQUFRLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7Q0FDOUMsUUFBUSxJQUFJLFFBQVEsSUFBSSxJQUFJLEVBQUU7Q0FDOUIsWUFBWSxJQUFJO0NBQ2hCLGdCQUFnQixLQUFLLElBQUksVUFBVSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxZQUFZLEdBQUcsVUFBVSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxZQUFZLEdBQUcsVUFBVSxDQUFDLElBQUksRUFBRSxFQUFFO0NBQ2xKLG9CQUFvQixJQUFJLE9BQU8sR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDO0NBQ3JELG9CQUFvQixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQztDQUMxRTtDQUNBLG9CQUFvQixJQUFJLElBQUksR0FBRyxJQUFJLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDckgsb0JBQW9CLFdBQVcsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0NBQzdELGlCQUFpQjtDQUNqQixhQUFhO0NBQ2IsWUFBWSxPQUFPLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO0NBQ3JELG9CQUFvQjtDQUNwQixnQkFBZ0IsSUFBSTtDQUNwQixvQkFBb0IsSUFBSSxZQUFZLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxLQUFLLEVBQUUsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztDQUM1RyxpQkFBaUI7Q0FDakIsd0JBQXdCLEVBQUUsSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7Q0FDckQsYUFBYTtDQUNiLFNBQVM7Q0FDVCxRQUFRLElBQUksUUFBUSxHQUFHLElBQUksYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQ2hFO0NBQ0EsUUFBUSxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxjQUFjLENBQUMsQ0FBQztDQUMzSCxRQUFRLElBQUksS0FBSyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUNsQyxRQUFRLElBQUksS0FBSyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUNsQztDQUNBLFFBQVEsSUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO0NBQzVELFFBQVEsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsY0FBYyxDQUFDLENBQUM7Q0FDckYsUUFBUSxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtDQUNoRSxZQUFZLElBQUksUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ25GLFlBQVksSUFBSSxRQUFRLEdBQUcsQ0FBQyxFQUFFO0NBQzlCLGdCQUFnQixNQUFNLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0NBQ3hFLGFBQWE7Q0FDYixZQUFZLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDN0YsU0FBUztDQUNULFFBQVEsT0FBTyxjQUFjLENBQUMsTUFBTSxDQUFDO0NBQ3JDLEtBQUssQ0FBQztDQUNOO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsSUFBSSxlQUFlLENBQUMsU0FBUyxDQUFDLHFCQUFxQixHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7Q0FDekU7Q0FDQSxRQUFRLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtDQUMzQyxZQUFZLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztDQUN6QixZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7Q0FDbEIsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDO0NBQ3JCLFNBQVM7Q0FDVCxRQUFRLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztDQUN0QixRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztDQUNsQixRQUFRLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7Q0FDekMsUUFBUSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO0NBQ3BDO0NBQ0EsUUFBUSxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtDQUNuRCxZQUFZLElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQztDQUNsQyxZQUFZLElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQztDQUNsQyxZQUFZLEtBQUssR0FBRyxDQUFDLENBQUM7Q0FDdEIsWUFBWSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0NBQ3RCO0NBQ0EsWUFBWSxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRTtDQUNoQztDQUNBLGdCQUFnQixNQUFNLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0NBQ3hFLGFBQWE7Q0FDYixZQUFZLENBQUMsR0FBRyxTQUFTLENBQUM7Q0FDMUIsWUFBWSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0NBQ3pDLFlBQVksSUFBSSxzQkFBc0IsR0FBRyxLQUFLLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0NBQ2pGLFlBQVksSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsQ0FBQztDQUN4RSxZQUFZLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtDQUN0RSxnQkFBZ0IsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxHQUFHLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztDQUNuRSxnQkFBZ0IsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztDQUM3RixnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7Q0FDdkUsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztDQUM1RSxhQUFhO0NBQ2IsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7Q0FDakUsU0FBUztDQUNULFFBQVEsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ25ELFFBQVEsSUFBSSxnQkFBZ0IsS0FBSyxDQUFDLEVBQUU7Q0FDcEMsWUFBWSxNQUFNLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0NBQ3BFLFNBQVM7Q0FDVCxRQUFRLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7Q0FDM0QsUUFBUSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0NBQ3hDLFFBQVEsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztDQUN4QyxRQUFRLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7Q0FDOUIsS0FBSyxDQUFDO0NBQ047Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLElBQUksZUFBZSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsR0FBRyxVQUFVLFlBQVksRUFBRTtDQUMzRTtDQUNBLFFBQVEsSUFBSSxTQUFTLEdBQUcsWUFBWSxDQUFDLFNBQVMsRUFBRSxDQUFDO0NBQ2pELFFBQVEsSUFBSSxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7Q0FDL0MsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Q0FDbEIsUUFBUSxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFO0NBQ2hGLFlBQVksSUFBSSxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRTtDQUNsRCxnQkFBZ0IsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ2xELGdCQUFnQixDQUFDLEVBQUUsQ0FBQztDQUNwQixhQUFhO0NBQ2IsU0FBUztDQUNULFFBQVEsSUFBSSxDQUFDLEtBQUssU0FBUyxFQUFFO0NBQzdCLFlBQVksTUFBTSxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztDQUNwRSxTQUFTO0NBQ1QsUUFBUSxPQUFPLE1BQU0sQ0FBQztDQUN0QixLQUFLLENBQUM7Q0FDTixJQUFJLGVBQWUsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEdBQUcsVUFBVSxjQUFjLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRTtDQUM1RyxRQUFRLElBQUksa0JBQWtCLEdBQUcsWUFBWSxDQUFDLFNBQVMsRUFBRSxDQUFDO0NBQzFELFFBQVEsSUFBSSw0QkFBNEIsR0FBRyxJQUFJLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0NBQzlFLFFBQVEsS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxJQUFJLGtCQUFrQixFQUFFLENBQUMsRUFBRSxFQUFFO0NBQzlELFlBQVksNEJBQTRCLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO0NBQ2hFLGdCQUFnQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ3ZFLFNBQVM7Q0FDVCxRQUFRLElBQUksZ0JBQWdCLEdBQUcsSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsNEJBQTRCLENBQUMsQ0FBQztDQUNuRztDQUNBLFFBQVEsSUFBSSxDQUFDLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQztDQUN0QyxRQUFRLElBQUksTUFBTSxHQUFHLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ3ZDLFFBQVEsS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtDQUM1QyxZQUFZLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ2xFLFlBQVksSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztDQUN6RixZQUFZLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0NBQ3pGLFlBQVksTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQztDQUNwRSxTQUFTO0NBQ1QsUUFBUSxPQUFPLE1BQU0sQ0FBQztDQUN0QixLQUFLLENBQUM7Q0FDTixJQUFJLE9BQU8sZUFBZSxDQUFDO0NBQzNCLENBQUMsRUFBRSxDQUFDLENBQUM7Q0FDTCxlQUFlLEdBQUcsZUFBZSxDQUFDOzs7OztDQ3RNbEM7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7Q0FDOUQ7Q0FDQTtBQUM2RDtDQUM3RDtBQUNpRDtDQUNqRDtDQUNBO0NBQ0E7Q0FDQSxJQUFJLFdBQVcsa0JBQWtCLFlBQVk7Q0FDN0MsSUFBSSxTQUFTLFdBQVcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFO0NBQzVFLFFBQVEsSUFBSSxLQUFLLFlBQVksV0FBVyxFQUFFO0NBQzFDLFlBQVksSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztDQUN0QyxTQUFTO0NBQ1QsYUFBYTtDQUNiLFlBQVksSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUM7Q0FDbEYsU0FBUztDQUNULEtBQUs7Q0FDTDtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLElBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxhQUFhLEdBQUcsVUFBVSxLQUFLLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFO0NBQ3ZHLFFBQVEsSUFBSSxlQUFlLEdBQUcsT0FBTyxJQUFJLElBQUksSUFBSSxVQUFVLElBQUksSUFBSSxDQUFDO0NBQ3BFLFFBQVEsSUFBSSxnQkFBZ0IsR0FBRyxRQUFRLElBQUksSUFBSSxJQUFJLFdBQVcsSUFBSSxJQUFJLENBQUM7Q0FDdkUsUUFBUSxJQUFJLGVBQWUsSUFBSSxnQkFBZ0IsRUFBRTtDQUNqRCxZQUFZLE1BQU0sSUFBSSxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztDQUNwRCxTQUFTO0NBQ1QsUUFBUSxJQUFJLGVBQWUsRUFBRTtDQUM3QixZQUFZLE9BQU8sR0FBRyxJQUFJLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0NBQ3BFLFlBQVksVUFBVSxHQUFHLElBQUksYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7Q0FDMUUsU0FBUztDQUNULGFBQWEsSUFBSSxnQkFBZ0IsRUFBRTtDQUNuQyxZQUFZLFFBQVEsR0FBRyxJQUFJLGFBQWEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztDQUN2RixZQUFZLFdBQVcsR0FBRyxJQUFJLGFBQWEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsRUFBRSxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztDQUM3RixTQUFTO0NBQ1QsUUFBUSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztDQUMzQixRQUFRLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0NBQy9CLFFBQVEsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7Q0FDckMsUUFBUSxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztDQUNqQyxRQUFRLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0NBQ3ZDLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDNUUsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztDQUM5RSxRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzFFLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxFQUFFLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDaEYsS0FBSyxDQUFDO0NBQ04sSUFBSSxXQUFXLENBQUMsU0FBUyxDQUFDLGFBQWEsR0FBRyxVQUFVLFdBQVcsRUFBRTtDQUNqRSxRQUFRLElBQUksQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQztDQUN2QyxRQUFRLElBQUksQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLFVBQVUsRUFBRSxDQUFDO0NBQ2hELFFBQVEsSUFBSSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUM7Q0FDdEQsUUFBUSxJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztDQUNsRCxRQUFRLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFDO0NBQ3hELFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7Q0FDMUMsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztDQUMxQyxRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO0NBQzFDLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7Q0FDMUMsS0FBSyxDQUFDO0NBQ047Q0FDQTtDQUNBO0NBQ0EsSUFBSSxXQUFXLENBQUMsS0FBSyxHQUFHLFVBQVUsT0FBTyxFQUFFLFFBQVEsRUFBRTtDQUNyRCxRQUFRLElBQUksT0FBTyxJQUFJLElBQUksRUFBRTtDQUM3QixZQUFZLE9BQU8sUUFBUSxDQUFDO0NBQzVCLFNBQVM7Q0FDVCxRQUFRLElBQUksUUFBUSxJQUFJLElBQUksRUFBRTtDQUM5QixZQUFZLE9BQU8sT0FBTyxDQUFDO0NBQzNCLFNBQVM7Q0FDVCxRQUFRLE9BQU8sSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7Q0FDNUgsS0FBSyxDQUFDO0NBQ047Q0FDQTtDQUNBO0NBQ0EsSUFBSSxXQUFXLENBQUMsU0FBUyxDQUFDLGNBQWMsR0FBRyxVQUFVLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUU7Q0FDL0YsUUFBUSxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO0NBQ3RDLFFBQVEsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztDQUM1QyxRQUFRLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7Q0FDeEMsUUFBUSxJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO0NBQzlDLFFBQVEsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLEVBQUU7Q0FDbEMsWUFBWSxJQUFJLEtBQUssR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO0NBQzlELFlBQVksSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQztDQUN0RSxZQUFZLElBQUksT0FBTyxHQUFHLENBQUMsRUFBRTtDQUM3QixnQkFBZ0IsT0FBTyxHQUFHLENBQUMsQ0FBQztDQUM1QixhQUFhO0NBQ2IsWUFBWSxJQUFJLE1BQU0sR0FBRyxJQUFJLGFBQWEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0NBQzFFLFlBQVksSUFBSSxNQUFNLEVBQUU7Q0FDeEIsZ0JBQWdCLFVBQVUsR0FBRyxNQUFNLENBQUM7Q0FDcEMsYUFBYTtDQUNiLGlCQUFpQjtDQUNqQixnQkFBZ0IsV0FBVyxHQUFHLE1BQU0sQ0FBQztDQUNyQyxhQUFhO0NBQ2IsU0FBUztDQUNULFFBQVEsSUFBSSxjQUFjLEdBQUcsQ0FBQyxFQUFFO0NBQ2hDLFlBQVksSUFBSSxNQUFNLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztDQUNyRSxZQUFZLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxHQUFHLGNBQWMsQ0FBQyxDQUFDO0NBQ3JFLFlBQVksSUFBSSxPQUFPLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsRUFBRTtDQUNuRCxnQkFBZ0IsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0NBQ3JELGFBQWE7Q0FDYixZQUFZLElBQUksU0FBUyxHQUFHLElBQUksYUFBYSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7Q0FDOUUsWUFBWSxJQUFJLE1BQU0sRUFBRTtDQUN4QixnQkFBZ0IsYUFBYSxHQUFHLFNBQVMsQ0FBQztDQUMxQyxhQUFhO0NBQ2IsaUJBQWlCO0NBQ2pCLGdCQUFnQixjQUFjLEdBQUcsU0FBUyxDQUFDO0NBQzNDLGFBQWE7Q0FDYixTQUFTO0NBQ1QsUUFBUSxPQUFPLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsY0FBYyxDQUFDLENBQUM7Q0FDbkcsS0FBSyxDQUFDO0NBQ04sSUFBSSxXQUFXLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxZQUFZO0NBQ2hELFFBQVEsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0NBQ3pCLEtBQUssQ0FBQztDQUNOLElBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsWUFBWTtDQUNoRCxRQUFRLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztDQUN6QixLQUFLLENBQUM7Q0FDTixJQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLFlBQVk7Q0FDaEQsUUFBUSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7Q0FDekIsS0FBSyxDQUFDO0NBQ04sSUFBSSxXQUFXLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxZQUFZO0NBQ2hELFFBQVEsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0NBQ3pCLEtBQUssQ0FBQztDQUNOLElBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsWUFBWTtDQUNuRCxRQUFRLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztDQUM1QixLQUFLLENBQUM7Q0FDTixJQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsV0FBVyxHQUFHLFlBQVk7Q0FDcEQsUUFBUSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7Q0FDN0IsS0FBSyxDQUFDO0NBQ04sSUFBSSxXQUFXLENBQUMsU0FBUyxDQUFDLGFBQWEsR0FBRyxZQUFZO0NBQ3RELFFBQVEsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0NBQy9CLEtBQUssQ0FBQztDQUNOLElBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxjQUFjLEdBQUcsWUFBWTtDQUN2RCxRQUFRLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztDQUNoQyxLQUFLLENBQUM7Q0FDTixJQUFJLE9BQU8sV0FBVyxDQUFDO0NBQ3ZCLENBQUMsRUFBRSxDQUFDLENBQUM7Q0FDTCxlQUFlLEdBQUcsV0FBVyxDQUFDOzs7OztDQzFKOUI7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7Q0FDOUQ7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLGVBQWUsa0JBQWtCLFlBQVk7Q0FDakQsSUFBSSxTQUFTLGVBQWUsQ0FBQyxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsb0JBQW9CLEVBQUU7Q0FDdEcsUUFBUSxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztDQUN2QyxRQUFRLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxvQkFBb0IsQ0FBQztDQUN6RCxRQUFRLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztDQUNuRCxRQUFRLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztDQUNuRCxRQUFRLElBQUksQ0FBQyxRQUFRLEdBQUcsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUM7Q0FDOUQsS0FBSztDQUNMLElBQUksZUFBZSxDQUFDLFNBQVMsQ0FBQyxjQUFjLEdBQUcsWUFBWTtDQUMzRCxRQUFRLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztDQUNoQyxLQUFLLENBQUM7Q0FDTixJQUFJLGVBQWUsQ0FBQyxTQUFTLENBQUMsdUJBQXVCLEdBQUcsWUFBWTtDQUNwRSxRQUFRLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDO0NBQ3pDLEtBQUssQ0FBQztDQUNOLElBQUksZUFBZSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsWUFBWTtDQUN4RCxRQUFRLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztDQUM3QixLQUFLLENBQUM7Q0FDTixJQUFJLGVBQWUsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLEdBQUcsWUFBWTtDQUNqRSxRQUFRLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0NBQ3RDLEtBQUssQ0FBQztDQUNOLElBQUksZUFBZSxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsR0FBRyxZQUFZO0NBQ2pFLFFBQVEsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7Q0FDdEMsS0FBSyxDQUFDO0NBQ04sSUFBSSxPQUFPLGVBQWUsQ0FBQztDQUMzQixDQUFDLEVBQUUsQ0FBQyxDQUFDO0NBQ0wsZUFBZSxHQUFHLGVBQWUsQ0FBQzs7Ozs7Q0M3Q2xDLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0NBQzlEO0NBQ0E7Q0FDQTtDQUNBLElBQUksU0FBUyxrQkFBa0IsWUFBWTtDQUMzQyxJQUFJLFNBQVMsU0FBUyxHQUFHO0NBQ3pCLFFBQVEsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7Q0FDekIsS0FBSztDQUNMO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsSUFBSSxTQUFTLENBQUMsSUFBSSxHQUFHLFVBQVUsR0FBRyxFQUFFLEdBQUcsRUFBRTtDQUN6QyxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0NBQ25CLFFBQVEsU0FBUyxRQUFRLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7Q0FDbkQsWUFBWSxJQUFJLEdBQUcsS0FBSyxJQUFJO0NBQzVCLGdCQUFnQixPQUFPLEdBQUcsQ0FBQztDQUMzQixZQUFZLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssU0FBUztDQUN0QyxnQkFBZ0IsT0FBTyxTQUFTLENBQUM7Q0FDakMsWUFBWSxHQUFHLEdBQUcsRUFBRSxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDO0NBQzFELFlBQVksSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDO0NBQy9ELFlBQVksSUFBSSxHQUFHLENBQUM7Q0FDcEIsWUFBWSxRQUFRLEVBQUU7Q0FDdEIsZ0JBQWdCLEtBQUssR0FBRztDQUN4QixvQkFBb0IsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUNqQyxvQkFBb0IsTUFBTTtDQUMxQixnQkFBZ0IsS0FBSyxHQUFHO0NBQ3hCLG9CQUFvQixHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ3BDLG9CQUFvQixNQUFNO0NBQzFCLGdCQUFnQixLQUFLLEdBQUc7Q0FDeEIsb0JBQW9CLEdBQUcsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0NBQzFELG9CQUFvQixNQUFNO0NBQzFCLGdCQUFnQixLQUFLLEdBQUc7Q0FDeEIsb0JBQW9CLEdBQUcsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0NBQzlELG9CQUFvQixNQUFNO0NBQzFCLGdCQUFnQixLQUFLLEdBQUc7Q0FDeEIsb0JBQW9CLEdBQUcsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0NBQ2hFLG9CQUFvQixNQUFNO0NBQzFCLGdCQUFnQixLQUFLLEdBQUc7Q0FDeEIsb0JBQW9CLEdBQUcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7Q0FDdEUsb0JBQW9CLE1BQU07Q0FDMUIsZ0JBQWdCLEtBQUssR0FBRztDQUN4QixvQkFBb0IsR0FBRyxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ3JHLG9CQUFvQixNQUFNO0NBQzFCLGFBQWE7Q0FDYixZQUFZLEdBQUcsR0FBRyxPQUFPLEdBQUcsS0FBSyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztDQUN4RixZQUFZLElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztDQUNwQyxZQUFZLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLE1BQU0sR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7Q0FDNUQsWUFBWSxPQUFPLEdBQUcsQ0FBQyxNQUFNLEdBQUcsSUFBSTtDQUNwQyxnQkFBZ0IsR0FBRyxHQUFHLEVBQUUsS0FBSyxTQUFTLEdBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDO0NBQzdELFlBQVksT0FBTyxHQUFHLENBQUM7Q0FDdkIsU0FBUztDQUNULFFBQVEsSUFBSSxLQUFLLEdBQUcsdURBQXVELENBQUM7Q0FDNUUsUUFBUSxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0NBQzVDLEtBQUssQ0FBQztDQUNOO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLFVBQVUsTUFBTSxFQUFFO0NBQ25ELFFBQVEsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO0NBQ3RCLFFBQVEsS0FBSyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUU7Q0FDdEQsWUFBWSxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztDQUN6QyxTQUFTO0NBQ1QsUUFBUSxJQUFJLENBQUMsTUFBTSxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0NBQ3BELEtBQUssQ0FBQztDQUNOO0NBQ0E7Q0FDQTtDQUNBLElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsWUFBWTtDQUMvQyxRQUFRLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztDQUMzQixLQUFLLENBQUM7Q0FDTixJQUFJLE9BQU8sU0FBUyxDQUFDO0NBQ3JCLENBQUMsRUFBRSxDQUFDLENBQUM7Q0FDTCxlQUFlLEdBQUcsU0FBUyxDQUFDOzs7OztDQzlFNUI7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsSUFBSSxRQUFRLEdBQUcsQ0FBQ0EsY0FBSSxJQUFJQSxjQUFJLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxFQUFFO0NBQ3RELElBQUksSUFBSSxDQUFDLEdBQUcsT0FBTyxNQUFNLEtBQUssVUFBVSxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztDQUNsRixJQUFJLElBQUksQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUM1QixJQUFJLElBQUksQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE1BQU0sS0FBSyxRQUFRLEVBQUUsT0FBTztDQUNsRCxRQUFRLElBQUksRUFBRSxZQUFZO0NBQzFCLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO0NBQy9DLFlBQVksT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7Q0FDcEQsU0FBUztDQUNULEtBQUssQ0FBQztDQUNOLElBQUksTUFBTSxJQUFJLFNBQVMsQ0FBQyxDQUFDLEdBQUcseUJBQXlCLEdBQUcsaUNBQWlDLENBQUMsQ0FBQztDQUMzRixDQUFDLENBQUM7Q0FDRixNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztDQUM5RDtDQUNBO0FBQ2tEO0FBQ0w7Q0FDN0M7Q0FDQTtDQUNBO0NBQ0EsSUFBSSxxQkFBcUIsa0JBQWtCLFlBQVk7Q0FDdkQsSUFBSSxTQUFTLHFCQUFxQixDQUFDLFdBQVcsRUFBRTtDQUNoRCxRQUFRLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0NBQ2xFO0NBQ0EsUUFBUSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxXQUFXLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7Q0FDdEYsS0FBSztDQUNMLGNBQWMscUJBQXFCLENBQUMsU0FBUyxDQUFDLGlCQUFpQixHQUFHLFVBQVUsUUFBUSxFQUFFO0NBQ3RGLFFBQVEsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztDQUNsRCxRQUFRLElBQUksUUFBUSxJQUFJLElBQUksRUFBRTtDQUM5QixZQUFZLE9BQU8sUUFBUSxDQUFDO0NBQzVCLFNBQVM7Q0FDVCxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxxQkFBcUIsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLEVBQUUsRUFBRTtDQUM1RSxZQUFZLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7Q0FDMUUsWUFBWSxJQUFJLFlBQVksSUFBSSxDQUFDLEVBQUU7Q0FDbkMsZ0JBQWdCLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO0NBQ3hELGdCQUFnQixJQUFJLFFBQVEsSUFBSSxJQUFJLEVBQUU7Q0FDdEMsb0JBQW9CLE9BQU8sUUFBUSxDQUFDO0NBQ3BDLGlCQUFpQjtDQUNqQixhQUFhO0NBQ2IsWUFBWSxZQUFZLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztDQUN0RSxZQUFZLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFO0NBQ3RELGdCQUFnQixRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztDQUN4RCxnQkFBZ0IsSUFBSSxRQUFRLElBQUksSUFBSSxFQUFFO0NBQ3RDLG9CQUFvQixPQUFPLFFBQVEsQ0FBQztDQUNwQyxpQkFBaUI7Q0FDakIsYUFBYTtDQUNiLFNBQVM7Q0FDVCxRQUFRLE9BQU8sSUFBSSxDQUFDO0NBQ3BCLEtBQUssQ0FBQztDQUNOLGtCQUFrQixxQkFBcUIsQ0FBQyxTQUFTLENBQUMsdUJBQXVCLEdBQUcsVUFBVSxRQUFRLEVBQUU7Q0FDaEcsUUFBUSxPQUFPLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO0NBQ3JELEtBQUssQ0FBQztDQUNOLG1CQUFtQixxQkFBcUIsQ0FBQyxTQUFTLENBQUMsV0FBVyxHQUFHLFVBQVUsUUFBUSxFQUFFLFFBQVEsRUFBRTtDQUMvRixRQUFRLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDO0NBQzFFLEtBQUssQ0FBQztDQUNOLGNBQWMscUJBQXFCLENBQUMsU0FBUyxDQUFDLFdBQVcsR0FBRyxVQUFVLFFBQVEsRUFBRTtDQUNoRixRQUFRLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztDQUN0RSxLQUFLLENBQUM7Q0FDTixjQUFjLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxjQUFjLEdBQUcsWUFBWTtDQUMzRSxRQUFRLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztDQUNoQyxLQUFLLENBQUM7Q0FDTixjQUFjLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxZQUFZLEdBQUcsWUFBWTtDQUN6RSxRQUFRLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztDQUM5QixLQUFLLENBQUM7Q0FDTjtDQUNBLElBQUkscUJBQXFCLENBQUMsU0FBUyxDQUFDLFFBQVEsR0FBRyxZQUFZO0NBQzNELFFBQVEsSUFBSSxHQUFHLEVBQUUsRUFBRSxDQUFDO0NBQ3BCLFFBQVEsSUFBSSxTQUFTLEdBQUcsSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7Q0FDbEQsUUFBUSxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7Q0FDcEIsUUFBUSxJQUFJO0NBQ1osWUFBWSxLQUFLLElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtDQUM5RixnQkFBZ0IsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQztDQUN4QyxnQkFBZ0IsSUFBSSxRQUFRLElBQUksSUFBSSxFQUFFO0NBQ3RDLG9CQUFvQixTQUFTLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7Q0FDOUQsb0JBQW9CLFNBQVM7Q0FDN0IsaUJBQWlCO0NBQ2pCLGdCQUFnQixTQUFTLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsRUFBRSxFQUFFLFFBQVEsQ0FBQyxZQUFZLEVBQUUsRUFBRSxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztDQUN4RyxhQUFhO0NBQ2IsU0FBUztDQUNULFFBQVEsT0FBTyxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtDQUNqRCxnQkFBZ0I7Q0FDaEIsWUFBWSxJQUFJO0NBQ2hCLGdCQUFnQixJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0NBQ3BFLGFBQWE7Q0FDYixvQkFBb0IsRUFBRSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtDQUNqRCxTQUFTO0NBQ1QsUUFBUSxPQUFPLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztDQUNwQyxLQUFLLENBQUM7Q0FDTixJQUFJLHFCQUFxQixDQUFDLG1CQUFtQixHQUFHLENBQUMsQ0FBQztDQUNsRCxJQUFJLE9BQU8scUJBQXFCLENBQUM7Q0FDakMsQ0FBQyxFQUFFLENBQUMsQ0FBQztDQUNMLGVBQWUsR0FBRyxxQkFBcUIsQ0FBQzs7Ozs7Q0N6R3hDO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLElBQUksUUFBUSxHQUFHLENBQUNBLGNBQUksSUFBSUEsY0FBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLENBQUMsRUFBRTtDQUN0RCxJQUFJLElBQUksQ0FBQyxHQUFHLE9BQU8sTUFBTSxLQUFLLFVBQVUsSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7Q0FDbEYsSUFBSSxJQUFJLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDNUIsSUFBSSxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxNQUFNLEtBQUssUUFBUSxFQUFFLE9BQU87Q0FDbEQsUUFBUSxJQUFJLEVBQUUsWUFBWTtDQUMxQixZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztDQUMvQyxZQUFZLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO0NBQ3BELFNBQVM7Q0FDVCxLQUFLLENBQUM7Q0FDTixJQUFJLE1BQU0sSUFBSSxTQUFTLENBQUMsQ0FBQyxHQUFHLHlCQUF5QixHQUFHLGlDQUFpQyxDQUFDLENBQUM7Q0FDM0YsQ0FBQyxDQUFDO0NBQ0YsSUFBSSxNQUFNLEdBQUcsQ0FBQ0EsY0FBSSxJQUFJQSxjQUFJLENBQUMsTUFBTSxLQUFLLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRTtDQUN0RCxJQUFJLElBQUksQ0FBQyxHQUFHLE9BQU8sTUFBTSxLQUFLLFVBQVUsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0NBQy9ELElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztDQUNyQixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0NBQ3JDLElBQUksSUFBSTtDQUNSLFFBQVEsT0FBTyxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0NBQ25GLEtBQUs7Q0FDTCxJQUFJLE9BQU8sS0FBSyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7Q0FDM0MsWUFBWTtDQUNaLFFBQVEsSUFBSTtDQUNaLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQzdELFNBQVM7Q0FDVCxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRTtDQUN6QyxLQUFLO0NBQ0wsSUFBSSxPQUFPLEVBQUUsQ0FBQztDQUNkLENBQUMsQ0FBQztDQUNGLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0NBQzlEO0NBQ0E7QUFDZ0Q7Q0FDaEQ7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLElBQUksWUFBWSxrQkFBa0IsWUFBWTtDQUM5QyxJQUFJLFNBQVMsWUFBWSxHQUFHO0NBQzVCLFFBQVEsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0NBQ2hDLEtBQUs7Q0FDTDtDQUNBO0NBQ0E7Q0FDQSxJQUFJLFlBQVksQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFVBQVUsS0FBSyxFQUFFO0NBQ3ZELFFBQVEsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7Q0FDbEMsUUFBUSxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztDQUNoRCxRQUFRLElBQUksVUFBVSxJQUFJLElBQUksRUFBRTtDQUNoQyxZQUFZLFVBQVUsR0FBRyxDQUFDLENBQUM7Q0FDM0IsU0FBUztDQUNULFFBQVEsVUFBVSxFQUFFLENBQUM7Q0FDckIsUUFBUSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7Q0FDM0MsS0FBSyxDQUFDO0NBQ047Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLFlBQVksQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFlBQVk7Q0FDbEQsUUFBUSxJQUFJLEdBQUcsRUFBRSxFQUFFLENBQUM7Q0FDcEIsUUFBUSxJQUFJLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQztDQUMvQixRQUFRLElBQUksTUFBTSxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7Q0FDakMsUUFBUSxJQUFJLE9BQU8sR0FBRyxVQUFVLEdBQUcsRUFBRSxLQUFLLEVBQUU7Q0FDNUMsWUFBWSxJQUFJLEtBQUssR0FBRztDQUN4QixnQkFBZ0IsTUFBTSxFQUFFLFlBQVksRUFBRSxPQUFPLEdBQUcsQ0FBQyxFQUFFO0NBQ25ELGdCQUFnQixRQUFRLEVBQUUsWUFBWSxFQUFFLE9BQU8sS0FBSyxDQUFDLEVBQUU7Q0FDdkQsYUFBYSxDQUFDO0NBQ2QsWUFBWSxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsR0FBRyxhQUFhLEVBQUU7Q0FDbEQsZ0JBQWdCLGFBQWEsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7Q0FDakQsZ0JBQWdCLE1BQU0sR0FBRyxFQUFFLENBQUM7Q0FDNUIsZ0JBQWdCLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7Q0FDNUMsYUFBYTtDQUNiLGlCQUFpQixJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxhQUFhLEVBQUU7Q0FDekQsZ0JBQWdCLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7Q0FDNUMsYUFBYTtDQUNiLFNBQVMsQ0FBQztDQUNWLFFBQVEsSUFBSTtDQUNaLFlBQVksS0FBSyxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7Q0FDckcsZ0JBQWdCLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUN6RSxnQkFBZ0IsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztDQUNwQyxhQUFhO0NBQ2IsU0FBUztDQUNULFFBQVEsT0FBTyxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtDQUNqRCxnQkFBZ0I7Q0FDaEIsWUFBWSxJQUFJO0NBQ2hCLGdCQUFnQixJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0NBQ3BFLGFBQWE7Q0FDYixvQkFBb0IsRUFBRSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtDQUNqRCxTQUFTO0NBQ1QsUUFBUSxPQUFPLGNBQWMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0NBQ3pELEtBQUssQ0FBQztDQUNOLElBQUksWUFBWSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEdBQUcsVUFBVSxLQUFLLEVBQUU7Q0FDNUQsUUFBUSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0NBQ3RDLEtBQUssQ0FBQztDQUNOLElBQUksT0FBTyxZQUFZLENBQUM7Q0FDeEIsQ0FBQyxFQUFFLENBQUMsQ0FBQztDQUNMLGVBQWUsR0FBRyxZQUFZLENBQUM7Ozs7O0NDaEgvQjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLFNBQVMsR0FBRyxDQUFDQSxjQUFJLElBQUlBLGNBQUksQ0FBQyxTQUFTLEtBQUssQ0FBQyxZQUFZO0NBQ3pELElBQUksSUFBSSxhQUFhLEdBQUcsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0NBQ3hDLFFBQVEsYUFBYSxHQUFHLE1BQU0sQ0FBQyxjQUFjO0NBQzdDLGFBQWEsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLFlBQVksS0FBSyxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztDQUN4RixZQUFZLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztDQUN2RixRQUFRLE9BQU8sYUFBYSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUNuQyxLQUFLLENBQUM7Q0FDTixJQUFJLE9BQU8sVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0NBQzNCLFFBQVEsYUFBYSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUM1QixRQUFRLFNBQVMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsRUFBRTtDQUMvQyxRQUFRLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFLLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7Q0FDN0YsS0FBSyxDQUFDO0NBQ04sQ0FBQyxHQUFHLENBQUM7Q0FDTCxJQUFJLFFBQVEsR0FBRyxDQUFDQSxjQUFJLElBQUlBLGNBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDLEVBQUU7Q0FDdEQsSUFBSSxJQUFJLENBQUMsR0FBRyxPQUFPLE1BQU0sS0FBSyxVQUFVLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0NBQ2xGLElBQUksSUFBSSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQzVCLElBQUksSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsTUFBTSxLQUFLLFFBQVEsRUFBRSxPQUFPO0NBQ2xELFFBQVEsSUFBSSxFQUFFLFlBQVk7Q0FDMUIsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7Q0FDL0MsWUFBWSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztDQUNwRCxTQUFTO0NBQ1QsS0FBSyxDQUFDO0NBQ04sSUFBSSxNQUFNLElBQUksU0FBUyxDQUFDLENBQUMsR0FBRyx5QkFBeUIsR0FBRyxpQ0FBaUMsQ0FBQyxDQUFDO0NBQzNGLENBQUMsQ0FBQztDQUNGLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0NBQzlEO0FBQ2dEO0FBQ0s7QUFDWTtBQUNsQjtDQUMvQztDQUNBO0NBQ0E7Q0FDQSxJQUFJLGlDQUFpQyxrQkFBa0IsVUFBVSxNQUFNLEVBQUU7Q0FDekUsSUFBSSxTQUFTLENBQUMsaUNBQWlDLEVBQUUsTUFBTSxDQUFDLENBQUM7Q0FDekQsSUFBSSxTQUFTLGlDQUFpQyxDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUU7Q0FDcEUsUUFBUSxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsSUFBSSxJQUFJLENBQUM7Q0FDM0QsUUFBUSxLQUFLLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztDQUMvQixRQUFRLE9BQU8sS0FBSyxDQUFDO0NBQ3JCLEtBQUs7Q0FDTCxJQUFJLGlDQUFpQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLEdBQUcsWUFBWTtDQUM1RSxRQUFRLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQztDQUNwQixRQUFRLElBQUk7Q0FDWixZQUFZLEtBQUssSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7Q0FDbkcsZ0JBQWdCLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQyxLQUFLLGNBQWM7Q0FDckQsZ0JBQWdCLElBQUksUUFBUSxJQUFJLElBQUksRUFBRTtDQUN0QyxvQkFBb0IsUUFBUSxDQUFDLGdDQUFnQyxFQUFFLENBQUM7Q0FDaEUsaUJBQWlCO0NBQ2pCLGFBQWE7Q0FDYixTQUFTO0NBQ1QsUUFBUSxPQUFPLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO0NBQ2pELGdCQUFnQjtDQUNoQixZQUFZLElBQUk7Q0FDaEIsZ0JBQWdCLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Q0FDcEUsYUFBYTtDQUNiLG9CQUFvQixFQUFFLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO0NBQ2pELFNBQVM7Q0FDVCxLQUFLLENBQUM7Q0FDTjtDQUNBO0NBQ0E7Q0FDQTtDQUNBLElBQUksaUNBQWlDLENBQUMsU0FBUyxDQUFDLHVDQUF1QyxHQUFHLFVBQVUsZUFBZSxFQUFFO0NBQ3JILFFBQVEsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0NBQzVDLFFBQVEsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0NBQzdCLFFBQVEsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFNBQVMsRUFBRSxlQUFlLENBQUMsQ0FBQztDQUNsRSxRQUFRLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztDQUNoRCxRQUFRLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLFVBQVUsRUFBRSxHQUFHLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztDQUN0RixRQUFRLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLGFBQWEsRUFBRSxHQUFHLFdBQVcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztDQUMvRixRQUFRLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDNUUsUUFBUSxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzlFO0NBQ0E7Q0FDQTtDQUNBLFFBQVEsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUM7Q0FDNUIsUUFBUSxJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7Q0FDN0IsUUFBUSxJQUFJLGdCQUFnQixHQUFHLENBQUMsQ0FBQztDQUNqQyxRQUFRLEtBQUssSUFBSSxZQUFZLFdBQVcsUUFBUSxFQUFFLFlBQVksR0FBRyxPQUFPLEVBQUUsWUFBWSxFQUFFLEVBQUU7Q0FDMUYsWUFBWSxJQUFJLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxJQUFJLEVBQUU7Q0FDakQsZ0JBQWdCLFNBQVM7Q0FDekIsYUFBYTtDQUNiLFlBQVksSUFBSSxRQUFRLEdBQUcsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO0NBQ25EO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsWUFBWSxJQUFJLGFBQWEsR0FBRyxRQUFRLENBQUMsWUFBWSxFQUFFLEdBQUcsVUFBVSxDQUFDO0NBQ3JFO0NBQ0EsWUFBWSxJQUFJLGFBQWEsS0FBSyxDQUFDLEVBQUU7Q0FDckMsZ0JBQWdCLGdCQUFnQixFQUFFLENBQUM7Q0FDbkMsYUFBYTtDQUNiLGlCQUFpQixJQUFJLGFBQWEsS0FBSyxDQUFDLEVBQUU7Q0FDMUMsZ0JBQWdCLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0NBQ3hFLGdCQUFnQixnQkFBZ0IsR0FBRyxDQUFDLENBQUM7Q0FDckMsZ0JBQWdCLFVBQVUsR0FBRyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7Q0FDckQsYUFBYTtDQUNiLGlCQUFpQixJQUFJLGFBQWEsR0FBRyxDQUFDO0NBQ3RDLGdCQUFnQixRQUFRLENBQUMsWUFBWSxFQUFFLElBQUksZUFBZSxDQUFDLFdBQVcsRUFBRTtDQUN4RSxnQkFBZ0IsYUFBYSxHQUFHLFlBQVksRUFBRTtDQUM5QyxnQkFBZ0IsU0FBUyxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQztDQUMvQyxhQUFhO0NBQ2IsaUJBQWlCO0NBQ2pCLGdCQUFnQixJQUFJLFdBQVcsR0FBRyxLQUFLLENBQUMsQ0FBQztDQUN6QyxnQkFBZ0IsSUFBSSxZQUFZLEdBQUcsQ0FBQyxFQUFFO0NBQ3RDLG9CQUFvQixXQUFXLEdBQUcsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxJQUFJLGFBQWEsQ0FBQztDQUNyRSxpQkFBaUI7Q0FDakIscUJBQXFCO0NBQ3JCLG9CQUFvQixXQUFXLEdBQUcsYUFBYSxDQUFDO0NBQ2hELGlCQUFpQjtDQUNqQixnQkFBZ0IsSUFBSSwwQkFBMEIsR0FBRyxXQUFXLElBQUksWUFBWSxDQUFDO0NBQzdFLGdCQUFnQixLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLElBQUksV0FBVyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Q0FDOUY7Q0FDQTtDQUNBLG9CQUFvQiwwQkFBMEIsR0FBRyxTQUFTLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztDQUNyRixpQkFBaUI7Q0FDakIsZ0JBQWdCLElBQUksMEJBQTBCLEVBQUU7Q0FDaEQsb0JBQW9CLFNBQVMsQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUM7Q0FDbkQsaUJBQWlCO0NBQ2pCLHFCQUFxQjtDQUNyQixvQkFBb0IsVUFBVSxHQUFHLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztDQUN6RCxvQkFBb0IsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO0NBQ3pDLGlCQUFpQjtDQUNqQixhQUFhO0NBQ2IsU0FBUztDQUNUO0NBQ0EsS0FBSyxDQUFDO0NBQ04sSUFBSSxpQ0FBaUMsQ0FBQyxTQUFTLENBQUMsYUFBYSxHQUFHLFlBQVk7Q0FDNUUsUUFBUSxJQUFJLEdBQUcsRUFBRSxFQUFFLENBQUM7Q0FDcEIsUUFBUSxJQUFJLGVBQWUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztDQUN4RCxRQUFRLElBQUksZUFBZSxJQUFJLElBQUksRUFBRTtDQUNyQyxZQUFZLE9BQU8sSUFBSSxDQUFDO0NBQ3hCLFNBQVM7Q0FDVCxRQUFRLElBQUksQ0FBQyx5Q0FBeUMsQ0FBQyxlQUFlLENBQUMsQ0FBQztDQUN4RSxRQUFRLElBQUksTUFBTSxHQUFHLElBQUksVUFBVSxDQUFDLGVBQWUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0NBQ25FLFFBQVEsSUFBSTtDQUNaLFlBQVksS0FBSyxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtDQUNuRyxnQkFBZ0IsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDLEtBQUssY0FBYztDQUNyRCxnQkFBZ0IsSUFBSSxRQUFRLElBQUksSUFBSSxFQUFFO0NBQ3RDLG9CQUFvQixJQUFJLFNBQVMsR0FBRyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7Q0FDNUQsb0JBQW9CLElBQUksU0FBUyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUU7Q0FDcEQ7Q0FDQSx3QkFBd0IsU0FBUztDQUNqQyxxQkFBcUI7Q0FDckIsb0JBQW9CLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO0NBQ3hDLGlCQUFpQjtDQUNqQixhQUFhO0NBQ2IsU0FBUztDQUNULFFBQVEsT0FBTyxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtDQUNqRCxnQkFBZ0I7Q0FDaEIsWUFBWSxJQUFJO0NBQ2hCLGdCQUFnQixJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0NBQ3BFLGFBQWE7Q0FDYixvQkFBb0IsRUFBRSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtDQUNqRCxTQUFTO0NBQ1QsUUFBUSxPQUFPLE1BQU0sQ0FBQztDQUN0QixLQUFLLENBQUM7Q0FDTjtDQUNBO0NBQ0E7Q0FDQSxJQUFJLGlDQUFpQyxDQUFDLFNBQVMsQ0FBQyx5Q0FBeUMsR0FBRyxVQUFVLGVBQWUsRUFBRTtDQUN2SCxRQUFRLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztDQUNoRCxRQUFRLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLFVBQVUsRUFBRSxHQUFHLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztDQUN0RixRQUFRLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLGFBQWEsRUFBRSxHQUFHLFdBQVcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztDQUMvRixRQUFRLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDNUUsUUFBUSxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzlFO0NBQ0EsUUFBUSxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Q0FDNUMsUUFBUSxJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQztDQUc1QixRQUFRLEtBQUssSUFBSSxZQUFZLFdBQVcsUUFBUSxFQUFFLFlBQVksR0FBRyxPQUFPLEVBQUUsWUFBWSxFQUFFLEVBQUU7Q0FDMUYsWUFBWSxJQUFJLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxJQUFJLEVBQUU7Q0FDakQsZ0JBQWdCLFNBQVM7Q0FDekIsYUFBYTtDQUNiLFlBQVksSUFBSSxRQUFRLEdBQUcsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO0NBQ25ELFlBQVksUUFBUSxDQUFDLGdDQUFnQyxFQUFFLENBQUM7Q0FDeEQsWUFBWSxJQUFJLGFBQWEsR0FBRyxRQUFRLENBQUMsWUFBWSxFQUFFLEdBQUcsVUFBVSxDQUFDO0NBQ3JFO0NBQ0EsWUFBWSxJQUFJLGFBQWEsS0FBSyxDQUFDLEVBQUUsQ0FFeEI7Q0FDYixpQkFBaUIsSUFBSSxhQUFhLEtBQUssQ0FBQyxFQUFFO0NBRzFDLGdCQUFnQixVQUFVLEdBQUcsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO0NBQ3JELGFBQWE7Q0FDYixpQkFBaUIsSUFBSSxRQUFRLENBQUMsWUFBWSxFQUFFLElBQUksZUFBZSxDQUFDLFdBQVcsRUFBRSxFQUFFO0NBQy9FLGdCQUFnQixTQUFTLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDO0NBQy9DLGFBQWE7Q0FDYixpQkFBaUI7Q0FDakIsZ0JBQWdCLFVBQVUsR0FBRyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7Q0FFckQsYUFBYTtDQUNiLFNBQVM7Q0FDVDtDQUNBLEtBQUssQ0FBQztDQUNOLElBQUksaUNBQWlDLENBQUMsU0FBUyxDQUFDLGtCQUFrQixHQUFHLFlBQVk7Q0FDakYsUUFBUSxJQUFJLEdBQUcsRUFBRSxFQUFFLENBQUM7Q0FDcEIsUUFBUSxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Q0FDNUMsUUFBUSxJQUFJLGtCQUFrQixHQUFHLElBQUksY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDO0NBQzlELFFBQVEsSUFBSSx3QkFBd0IsR0FBRyxJQUFJLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztDQUNwRSxRQUFRLElBQUksd0JBQXdCLEdBQUcsSUFBSSxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7Q0FDcEUsUUFBUSxJQUFJLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztDQUMxRCxRQUFRLElBQUk7Q0FDWixZQUFZLEtBQUssSUFBSSxXQUFXLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLGFBQWEsR0FBRyxXQUFXLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLGFBQWEsR0FBRyxXQUFXLENBQUMsSUFBSSxFQUFFLEVBQUU7Q0FDckosZ0JBQWdCLElBQUksUUFBUSxHQUFHLGFBQWEsQ0FBQyxLQUFLLGNBQWM7Q0FDaEUsZ0JBQWdCLElBQUksUUFBUSxJQUFJLElBQUksRUFBRTtDQUN0QyxvQkFBb0IsU0FBUztDQUM3QixpQkFBaUI7Q0FDakIsZ0JBQWdCLFFBQVEsQ0FBQyxnQ0FBZ0MsRUFBRSxDQUFDO0NBQzVELGdCQUFnQixJQUFJLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUM7Q0FDakUsZ0JBQWdCLElBQUksaUJBQWlCLEdBQUcsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO0NBQ2hFLGdCQUFnQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtDQUNuQyxvQkFBb0IsaUJBQWlCLElBQUksQ0FBQyxDQUFDO0NBQzNDLGlCQUFpQjtDQUNqQixnQkFBZ0IsUUFBUSxpQkFBaUIsR0FBRyxDQUFDO0NBQzdDLG9CQUFvQixLQUFLLENBQUM7Q0FDMUIsd0JBQXdCLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Q0FDckYsd0JBQXdCLE1BQU07Q0FDOUIsb0JBQW9CLEtBQUssQ0FBQztDQUMxQix3QkFBd0IsY0FBYyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUMsQ0FBQztDQUN2RSx3QkFBd0Isd0JBQXdCLENBQUMsUUFBUSxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxDQUFDO0NBQ2pGLHdCQUF3QixNQUFNO0NBQzlCLG9CQUFvQixLQUFLLENBQUM7Q0FDMUIsd0JBQXdCLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUMsQ0FBQztDQUMzRSx3QkFBd0IsTUFBTTtDQUM5QixpQkFBaUI7Q0FDakIsYUFBYTtDQUNiLFNBQVM7Q0FDVCxRQUFRLE9BQU8sS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7Q0FDakQsZ0JBQWdCO0NBQ2hCLFlBQVksSUFBSTtDQUNoQixnQkFBZ0IsSUFBSSxhQUFhLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxLQUFLLEVBQUUsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztDQUM1RyxhQUFhO0NBQ2Isb0JBQW9CLEVBQUUsSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7Q0FDakQsU0FBUztDQUNUO0NBQ0EsUUFBUSxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxLQUFLLENBQUM7Q0FDdkQsYUFBYSx3QkFBd0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0NBQzlELGFBQWEsd0JBQXdCLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztDQUM5RCxhQUFhLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0NBQ3BELFlBQVksa0JBQWtCLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztDQUNoRCxZQUFZLHdCQUF3QixDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLHdCQUF3QixDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsbUJBQW1CO0NBQ3hJLFlBQVksd0JBQXdCLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsd0JBQXdCLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRTtDQUMxSSxZQUFZLE9BQU8sSUFBSSxDQUFDO0NBQ3hCLFNBQVM7Q0FDVCxRQUFRLElBQUksZUFBZSxHQUFHLElBQUksaUJBQWlCLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLHdCQUF3QixDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLHdCQUF3QixDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQzVNLFFBQVEsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFNBQVMsRUFBRSxlQUFlLENBQUMsQ0FBQztDQUNsRSxRQUFRLE9BQU8sZUFBZSxDQUFDO0NBQy9CLEtBQUssQ0FBQztDQUNOLElBQUksaUNBQWlDLENBQUMsU0FBUyxDQUFDLHdCQUF3QixHQUFHLFVBQVUsU0FBUyxFQUFFLGVBQWUsRUFBRTtDQUNqSDtDQUNBO0NBQ0EsUUFBUSxLQUFLLElBQUksV0FBVyxXQUFXLENBQUMsRUFBRSxXQUFXLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsRUFBRTtDQUN6RixZQUFZLElBQUksUUFBUSxHQUFHLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztDQUNsRCxZQUFZLElBQUksU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksRUFBRTtDQUNoRCxnQkFBZ0IsU0FBUztDQUN6QixhQUFhO0NBQ2IsWUFBWSxJQUFJLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUM7Q0FDN0QsWUFBWSxJQUFJLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztDQUM1RCxZQUFZLElBQUksaUJBQWlCLEdBQUcsZUFBZSxDQUFDLFdBQVcsRUFBRSxFQUFFO0NBQ25FLGdCQUFnQixTQUFTLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDO0NBQzlDLGdCQUFnQixTQUFTO0NBQ3pCLGFBQWE7Q0FDYixZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO0NBQy9CLGdCQUFnQixpQkFBaUIsSUFBSSxDQUFDLENBQUM7Q0FDdkMsYUFBYTtDQUNiLFlBQVksUUFBUSxpQkFBaUIsR0FBRyxDQUFDO0NBQ3pDLGdCQUFnQixLQUFLLENBQUM7Q0FDdEIsb0JBQW9CLElBQUksaUJBQWlCLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxlQUFlLENBQUMsb0JBQW9CLEVBQUUsRUFBRTtDQUM5Rix3QkFBd0IsU0FBUyxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQztDQUN0RCxxQkFBcUI7Q0FDckIsb0JBQW9CLE1BQU07Q0FDMUIsZ0JBQWdCLEtBQUssQ0FBQztDQUN0QixvQkFBb0IsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxLQUFLLGVBQWUsQ0FBQyx1QkFBdUIsRUFBRTtDQUN2Ryx3QkFBd0IsaUJBQWlCLEdBQUcsQ0FBQyxLQUFLLGVBQWUsQ0FBQyxvQkFBb0IsRUFBRSxFQUFFO0NBQzFGLHdCQUF3QixTQUFTLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDO0NBQ3RELHFCQUFxQjtDQUNyQixvQkFBb0IsTUFBTTtDQUMxQixnQkFBZ0IsS0FBSyxDQUFDO0NBQ3RCLG9CQUFvQixJQUFJLGlCQUFpQixHQUFHLENBQUMsS0FBSyxlQUFlLENBQUMsY0FBYyxFQUFFLEVBQUU7Q0FDcEYsd0JBQXdCLFNBQVMsQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUM7Q0FDdEQscUJBQXFCO0NBQ3JCLG9CQUFvQixNQUFNO0NBQzFCLGFBQWE7Q0FDYixTQUFTO0NBQ1QsS0FBSyxDQUFDO0NBQ04sSUFBSSxpQ0FBaUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLFlBQVk7Q0FDckUsUUFBUSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7Q0FDNUIsS0FBSyxDQUFDO0NBQ047Q0FDQSxJQUFJLGlDQUFpQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsWUFBWTtDQUN2RSxRQUFRLE9BQU8sVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztDQUN2RixLQUFLLENBQUM7Q0FDTixJQUFJLE9BQU8saUNBQWlDLENBQUM7Q0FDN0MsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7Q0FDcEMsZUFBZSxHQUFHLGlDQUFpQyxDQUFDOzs7OztDQzFUcEQ7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsSUFBSSxRQUFRLEdBQUcsQ0FBQ0EsY0FBSSxJQUFJQSxjQUFJLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxFQUFFO0NBQ3RELElBQUksSUFBSSxDQUFDLEdBQUcsT0FBTyxNQUFNLEtBQUssVUFBVSxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztDQUNsRixJQUFJLElBQUksQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUM1QixJQUFJLElBQUksQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE1BQU0sS0FBSyxRQUFRLEVBQUUsT0FBTztDQUNsRCxRQUFRLElBQUksRUFBRSxZQUFZO0NBQzFCLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO0NBQy9DLFlBQVksT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7Q0FDcEQsU0FBUztDQUNULEtBQUssQ0FBQztDQUNOLElBQUksTUFBTSxJQUFJLFNBQVMsQ0FBQyxDQUFDLEdBQUcseUJBQXlCLEdBQUcsaUNBQWlDLENBQUMsQ0FBQztDQUMzRixDQUFDLENBQUM7Q0FDRixNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztDQUM5RDtDQUNBO0FBQ2dEO0FBQ0U7Q0FDbEQ7Q0FDQTtDQUNBO0NBQ0EsSUFBSSxlQUFlLGtCQUFrQixZQUFZO0NBQ2pELElBQUksU0FBUyxlQUFlLENBQUMsZUFBZSxFQUFFLFdBQVcsRUFBRTtDQUMzRCxrQkFBa0IsSUFBSSxDQUFDLHNCQUFzQixHQUFHLENBQUMsQ0FBQztDQUNsRCxRQUFRLElBQUksQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFDO0NBQy9DLFFBQVEsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGVBQWUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztDQUNuRSxRQUFRLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0NBQ3ZDO0NBQ0EsUUFBUSxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsQ0FBQyxDQUFDO0NBQzdFLEtBQUs7Q0FDTCxJQUFJLGVBQWUsQ0FBQyxTQUFTLENBQUMseUJBQXlCLEdBQUcsWUFBWTtDQUN0RSxRQUFRLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUM3RSxRQUFRLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDdkcsUUFBUSxJQUFJLHVCQUF1QixHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLENBQUM7Q0FDdEYsUUFBUSxJQUFJLHVCQUF1QixDQUFDO0NBQ3BDLFFBQVEsR0FBRztDQUNYLFlBQVksdUJBQXVCLEdBQUcsdUJBQXVCLENBQUM7Q0FDOUQsWUFBWSx1QkFBdUIsR0FBRyxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztDQUN6RSxTQUFTLFFBQVEsdUJBQXVCLEdBQUcsQ0FBQyxJQUFJLHVCQUF1QixHQUFHLHVCQUF1QixFQUFFO0NBQ25HLFFBQVEsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUM7Q0FDM0MsS0FBSyxDQUFDO0NBQ04sSUFBSSxlQUFlLENBQUMsU0FBUyxDQUFDLCtCQUErQixHQUFHLFVBQVUscUJBQXFCLEVBQUU7Q0FDakcsUUFBUSxJQUFJLHFCQUFxQixJQUFJLElBQUksRUFBRTtDQUMzQyxZQUFZLHFCQUFxQjtDQUNqQyxpQkFBaUIsdUNBQXVDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0NBQy9FLFNBQVM7Q0FDVCxLQUFLLENBQUM7Q0FDTjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLElBQUksZUFBZSxDQUFDLFNBQVMsQ0FBQywyQkFBMkIsR0FBRyxZQUFZO0NBQ3hFLFFBQVEsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7Q0FDM0QsUUFBUSxJQUFJLGVBQWUsS0FBSyxDQUFDLEVBQUU7Q0FDbkMsWUFBWSxPQUFPLENBQUMsQ0FBQztDQUNyQixTQUFTO0NBQ1QsUUFBUSxLQUFLLElBQUksYUFBYSxXQUFXLENBQUMsRUFBRSxhQUFhLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsRUFBRSxhQUFhLEVBQUUsRUFBRTtDQUMxRyxZQUFZLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztDQUN0RixZQUFZLEtBQUssSUFBSSxZQUFZLFdBQVcsQ0FBQyxFQUFFLFlBQVksR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxFQUFFO0NBQ2hHLGdCQUFnQixJQUFJLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxJQUFJLEVBQUU7Q0FDckQsb0JBQW9CLFNBQVM7Q0FDN0IsaUJBQWlCO0NBQ2pCLGdCQUFnQixJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLGlCQUFpQixFQUFFLEVBQUU7Q0FDbEUsb0JBQW9CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsWUFBWSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0NBQ2xGLGlCQUFpQjtDQUNqQixhQUFhO0NBQ2IsU0FBUztDQUNULFFBQVEsT0FBTyxlQUFlLENBQUM7Q0FDL0IsS0FBSyxDQUFDO0NBQ04sSUFBSSxlQUFlLENBQUMsU0FBUyxDQUFDLHFCQUFxQixHQUFHLFlBQVk7Q0FDbEUsUUFBUSxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztDQUMxQztDQUNBO0NBQ0E7Q0FDQTtDQUNBLFFBQVEsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7Q0FDN0QsUUFBUSxPQUFPLGVBQWUsR0FBRyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztDQUNoRSxLQUFLLENBQUM7Q0FDTixJQUFJLGVBQWUsQ0FBQyxTQUFTLENBQUMsMEJBQTBCLEdBQUcsWUFBWTtDQUN2RSxRQUFRLElBQUksSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRTtDQUN4SCxZQUFZLE9BQU87Q0FDbkIsU0FBUztDQUNULFFBQVEsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO0NBQ3pFLFFBQVEsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztDQUNuRyxRQUFRLEtBQUssSUFBSSxZQUFZLFdBQVcsQ0FBQyxFQUFFLFlBQVksR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxFQUFFO0NBQy9GLFlBQVksSUFBSSxZQUFZLENBQUMsWUFBWSxDQUFDLElBQUksSUFBSTtDQUNsRCxnQkFBZ0IsWUFBWSxDQUFDLFlBQVksQ0FBQyxJQUFJLElBQUk7Q0FDbEQsZ0JBQWdCLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxZQUFZLEVBQUUsS0FBSyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUU7Q0FDekcsZ0JBQWdCLEtBQUssSUFBSSxhQUFhLFdBQVcsQ0FBQyxFQUFFLGFBQWEsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLEVBQUU7Q0FDL0csb0JBQW9CLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQztDQUMzRyxvQkFBb0IsSUFBSSxRQUFRLElBQUksSUFBSSxFQUFFO0NBQzFDLHdCQUF3QixTQUFTO0NBQ2pDLHFCQUFxQjtDQUNyQixvQkFBb0IsUUFBUSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztDQUNyRixvQkFBb0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFO0NBQ3ZELHdCQUF3QixJQUFJLENBQUMsc0JBQXNCLENBQUMsYUFBYSxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDO0NBQ3ZHLHFCQUFxQjtDQUNyQixpQkFBaUI7Q0FDakIsYUFBYTtDQUNiLFNBQVM7Q0FDVCxLQUFLLENBQUM7Q0FDTixJQUFJLGVBQWUsQ0FBQyxTQUFTLENBQUMsdUJBQXVCLEdBQUcsWUFBWTtDQUNwRSxRQUFRLElBQUksSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUU7Q0FDOUUsWUFBWSxPQUFPLENBQUMsQ0FBQztDQUNyQixTQUFTO0NBQ1QsUUFBUSxJQUFJLGVBQWUsR0FBRyxDQUFDLENBQUM7Q0FDaEMsUUFBUSxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO0NBQ2hHLFFBQVEsS0FBSyxJQUFJLFlBQVksV0FBVyxDQUFDLEVBQUUsWUFBWSxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLEVBQUU7Q0FDNUYsWUFBWSxJQUFJLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxJQUFJLEVBQUU7Q0FDakQsZ0JBQWdCLFNBQVM7Q0FDekIsYUFBYTtDQUNiLFlBQVksSUFBSSxxQkFBcUIsR0FBRyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7Q0FDL0UsWUFBWSxJQUFJLGdCQUFnQixHQUFHLENBQUMsQ0FBQztDQUNyQyxZQUFZLEtBQUssSUFBSSxhQUFhLFdBQVcsSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsRUFBRSxhQUFhLEdBQUcsQ0FBQyxJQUFJLGdCQUFnQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxhQUFhLEVBQUUsRUFBRTtDQUNoSyxnQkFBZ0IsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGFBQWEsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDO0NBQ3ZHLGdCQUFnQixJQUFJLFFBQVEsSUFBSSxJQUFJLEVBQUU7Q0FDdEMsb0JBQW9CLGdCQUFnQixHQUFHLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxxQkFBcUIsRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsQ0FBQztDQUNqSSxvQkFBb0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFO0NBQ3ZELHdCQUF3QixlQUFlLEVBQUUsQ0FBQztDQUMxQyxxQkFBcUI7Q0FDckIsaUJBQWlCO0NBQ2pCLGFBQWE7Q0FDYixTQUFTO0NBQ1QsUUFBUSxPQUFPLGVBQWUsQ0FBQztDQUMvQixLQUFLLENBQUM7Q0FDTixJQUFJLGVBQWUsQ0FBQyxTQUFTLENBQUMsdUJBQXVCLEdBQUcsWUFBWTtDQUNwRSxRQUFRLElBQUksSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRTtDQUNwRCxZQUFZLE9BQU8sQ0FBQyxDQUFDO0NBQ3JCLFNBQVM7Q0FDVCxRQUFRLElBQUksZUFBZSxHQUFHLENBQUMsQ0FBQztDQUNoQyxRQUFRLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztDQUN0RSxRQUFRLEtBQUssSUFBSSxZQUFZLFdBQVcsQ0FBQyxFQUFFLFlBQVksR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxFQUFFO0NBQzVGLFlBQVksSUFBSSxTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksSUFBSSxFQUFFO0NBQ2pELGdCQUFnQixTQUFTO0NBQ3pCLGFBQWE7Q0FDYixZQUFZLElBQUkscUJBQXFCLEdBQUcsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO0NBQy9FLFlBQVksSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7Q0FDckMsWUFBWSxLQUFLLElBQUksYUFBYSxXQUFXLENBQUMsRUFBRSxhQUFhLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsSUFBSSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsYUFBYSxFQUFFLEVBQUU7Q0FDaEssZ0JBQWdCLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQztDQUN2RyxnQkFBZ0IsSUFBSSxRQUFRLElBQUksSUFBSSxFQUFFO0NBQ3RDLG9CQUFvQixnQkFBZ0IsR0FBRyxlQUFlLENBQUMsc0JBQXNCLENBQUMscUJBQXFCLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLENBQUM7Q0FDakksb0JBQW9CLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEVBQUUsRUFBRTtDQUN2RCx3QkFBd0IsZUFBZSxFQUFFLENBQUM7Q0FDMUMscUJBQXFCO0NBQ3JCLGlCQUFpQjtDQUNqQixhQUFhO0NBQ2IsU0FBUztDQUNULFFBQVEsT0FBTyxlQUFlLENBQUM7Q0FDL0IsS0FBSyxDQUFDO0NBQ04sSUFBSSxlQUFlLENBQUMsc0JBQXNCLEdBQUcsVUFBVSxxQkFBcUIsRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUU7Q0FDMUcsUUFBUSxJQUFJLFFBQVEsSUFBSSxJQUFJLEVBQUU7Q0FDOUIsWUFBWSxPQUFPLGdCQUFnQixDQUFDO0NBQ3BDLFNBQVM7Q0FDVCxRQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEVBQUUsRUFBRTtDQUMzQyxZQUFZLElBQUksUUFBUSxDQUFDLGdCQUFnQixDQUFDLHFCQUFxQixDQUFDLEVBQUU7Q0FDbEUsZ0JBQWdCLFFBQVEsQ0FBQyxZQUFZLENBQUMscUJBQXFCLENBQUMsQ0FBQztDQUM3RCxnQkFBZ0IsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO0NBQ3JDLGFBQWE7Q0FDYixpQkFBaUI7Q0FDakIsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUM7Q0FDbkMsYUFBYTtDQUNiLFNBQVM7Q0FDVCxRQUFRLE9BQU8sZ0JBQWdCLENBQUM7Q0FDaEMsS0FBSyxDQUFDO0NBQ04sSUFBSSxlQUFlLENBQUMsU0FBUyxDQUFDLGdCQUFnQixHQUFHLFVBQVUsYUFBYSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUU7Q0FDbkcsUUFBUSxJQUFJLEdBQUcsRUFBRSxFQUFFLENBQUM7Q0FDcEIsUUFBUSxJQUFJLFFBQVEsR0FBRyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7Q0FDL0MsUUFBUSxJQUFJLHVCQUF1QixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7Q0FDcEcsUUFBUSxJQUFJLG1CQUFtQixHQUFHLHVCQUF1QixDQUFDO0NBQzFELFFBQVEsSUFBSSxJQUFJLENBQUMsc0JBQXNCLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRTtDQUNwRSxZQUFZLG1CQUFtQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7Q0FDaEcsU0FBUztDQUNUO0NBQ0EsUUFBUSxJQUFJLGNBQWMsR0FBRyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztDQUMzQyxRQUFRLGNBQWMsQ0FBQyxDQUFDLENBQUMsR0FBRyx1QkFBdUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztDQUNsRSxRQUFRLGNBQWMsQ0FBQyxDQUFDLENBQUMsR0FBRyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztDQUM5RCxRQUFRLElBQUksWUFBWSxHQUFHLENBQUMsRUFBRTtDQUM5QixZQUFZLGNBQWMsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDO0NBQzVELFlBQVksY0FBYyxDQUFDLENBQUMsQ0FBQyxHQUFHLHVCQUF1QixDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQztDQUMxRSxZQUFZLGNBQWMsQ0FBQyxDQUFDLENBQUMsR0FBRyxtQkFBbUIsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUM7Q0FDdEUsU0FBUztDQUNULFFBQVEsSUFBSSxZQUFZLEdBQUcsQ0FBQyxFQUFFO0NBQzlCLFlBQVksY0FBYyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUM7Q0FDNUQsWUFBWSxjQUFjLENBQUMsRUFBRSxDQUFDLEdBQUcsdUJBQXVCLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDO0NBQzNFLFlBQVksY0FBYyxDQUFDLEVBQUUsQ0FBQyxHQUFHLG1CQUFtQixDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQztDQUN2RSxTQUFTO0NBQ1QsUUFBUSxJQUFJLFlBQVksR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtDQUNqRCxZQUFZLGNBQWMsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDO0NBQzVELFlBQVksY0FBYyxDQUFDLENBQUMsQ0FBQyxHQUFHLHVCQUF1QixDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQztDQUMxRSxZQUFZLGNBQWMsQ0FBQyxDQUFDLENBQUMsR0FBRyxtQkFBbUIsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUM7Q0FDdEUsU0FBUztDQUNULFFBQVEsSUFBSSxZQUFZLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Q0FDakQsWUFBWSxjQUFjLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQztDQUM1RCxZQUFZLGNBQWMsQ0FBQyxFQUFFLENBQUMsR0FBRyx1QkFBdUIsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUM7Q0FDM0UsWUFBWSxjQUFjLENBQUMsRUFBRSxDQUFDLEdBQUcsbUJBQW1CLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDO0NBQ3ZFLFNBQVM7Q0FDVCxRQUFRLElBQUk7Q0FDWixZQUFZLEtBQUssSUFBSSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLEVBQUUsa0JBQWtCLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLEVBQUU7Q0FDeEwsZ0JBQWdCLElBQUksYUFBYSxHQUFHLGtCQUFrQixDQUFDLEtBQUssQ0FBQztDQUM3RCxnQkFBZ0IsSUFBSSxlQUFlLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsRUFBRTtDQUM5RSxvQkFBb0IsT0FBTztDQUMzQixpQkFBaUI7Q0FDakIsYUFBYTtDQUNiLFNBQVM7Q0FDVCxRQUFRLE9BQU8sS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7Q0FDakQsZ0JBQWdCO0NBQ2hCLFlBQVksSUFBSTtDQUNoQixnQkFBZ0IsSUFBSSxrQkFBa0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksS0FBSyxFQUFFLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0NBQ2hJLGFBQWE7Q0FDYixvQkFBb0IsRUFBRSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtDQUNqRCxTQUFTO0NBQ1QsS0FBSyxDQUFDO0NBQ047Q0FDQTtDQUNBO0NBQ0EsSUFBSSxlQUFlLENBQUMsZUFBZSxHQUFHLFVBQVUsUUFBUSxFQUFFLGFBQWEsRUFBRTtDQUN6RSxRQUFRLElBQUksYUFBYSxJQUFJLElBQUksRUFBRTtDQUNuQyxZQUFZLE9BQU8sS0FBSyxDQUFDO0NBQ3pCLFNBQVM7Q0FDVCxRQUFRLElBQUksYUFBYSxDQUFDLGlCQUFpQixFQUFFLElBQUksYUFBYSxDQUFDLFNBQVMsRUFBRSxLQUFLLFFBQVEsQ0FBQyxTQUFTLEVBQUUsRUFBRTtDQUNyRyxZQUFZLFFBQVEsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7Q0FDaEUsWUFBWSxPQUFPLElBQUksQ0FBQztDQUN4QixTQUFTO0NBQ1QsUUFBUSxPQUFPLEtBQUssQ0FBQztDQUNyQixLQUFLLENBQUM7Q0FDTixJQUFJLGVBQWUsQ0FBQyxTQUFTLENBQUMscUJBQXFCLEdBQUcsWUFBWTtDQUNsRSxRQUFRLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDO0NBQ3ZDLEtBQUssQ0FBQztDQUNOLElBQUksZUFBZSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsR0FBRyxZQUFZO0NBQy9ELFFBQVEsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxDQUFDO0NBQ2xELEtBQUssQ0FBQztDQUNOLElBQUksZUFBZSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsR0FBRyxZQUFZO0NBQzlELFFBQVEsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLHVCQUF1QixFQUFFLENBQUM7Q0FDOUQsS0FBSyxDQUFDO0NBQ04sSUFBSSxlQUFlLENBQUMsU0FBUyxDQUFDLGNBQWMsR0FBRyxVQUFVLFdBQVcsRUFBRTtDQUN0RSxRQUFRLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0NBQ3ZDLEtBQUssQ0FBQztDQUNOLElBQUksZUFBZSxDQUFDLFNBQVMsQ0FBQyxjQUFjLEdBQUcsWUFBWTtDQUMzRCxRQUFRLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztDQUNoQyxLQUFLLENBQUM7Q0FDTixJQUFJLGVBQWUsQ0FBQyxTQUFTLENBQUMsd0JBQXdCLEdBQUcsVUFBVSxhQUFhLEVBQUUscUJBQXFCLEVBQUU7Q0FDekcsUUFBUSxJQUFJLENBQUMsc0JBQXNCLENBQUMsYUFBYSxDQUFDLEdBQUcscUJBQXFCLENBQUM7Q0FDM0UsS0FBSyxDQUFDO0NBQ04sSUFBSSxlQUFlLENBQUMsU0FBUyxDQUFDLHdCQUF3QixHQUFHLFVBQVUsYUFBYSxFQUFFO0NBQ2xGLFFBQVEsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsYUFBYSxDQUFDLENBQUM7Q0FDMUQsS0FBSyxDQUFDO0NBQ047Q0FDQSxJQUFJLGVBQWUsQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFlBQVk7Q0FDckQsUUFBUSxJQUFJLGtCQUFrQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUNoRSxRQUFRLElBQUksa0JBQWtCLElBQUksSUFBSSxFQUFFO0NBQ3hDLFlBQVksa0JBQWtCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQUMsQ0FBQztDQUMxRixTQUFTO0NBQ1Q7Q0FDQSxRQUFRLElBQUksU0FBUyxHQUFHLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO0NBQ2xEO0NBQ0EsUUFBUSxLQUFLLElBQUksWUFBWSxXQUFXLENBQUMsRUFBRSxZQUFZLEdBQUcsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxFQUFFO0NBQ3BILFlBQVksU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDLENBQUM7Q0FDdEQsWUFBWSxLQUFLLElBQUksYUFBYSxXQUFXLENBQUMsRUFBRSxhQUFhLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsRUFBRSxhQUFhLEVBQUUsRUFBRTtDQUM5RyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsc0JBQXNCLENBQUMsYUFBYSxDQUFDLElBQUksSUFBSSxFQUFFO0NBQ3hFLG9CQUFvQixTQUFTLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0NBQ2pELG9CQUFvQixTQUFTO0NBQzdCLGlCQUFpQjtDQUNqQixnQkFBZ0IsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGFBQWEsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDO0NBQ3ZHLGdCQUFnQixJQUFJLFFBQVEsSUFBSSxJQUFJLEVBQUU7Q0FDdEMsb0JBQW9CLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7Q0FDakQsb0JBQW9CLFNBQVM7Q0FDN0IsaUJBQWlCO0NBQ2pCLGdCQUFnQixTQUFTLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsWUFBWSxFQUFFLEVBQUUsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7Q0FDM0YsYUFBYTtDQUNiLFlBQVksU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztDQUNuQyxTQUFTO0NBQ1QsUUFBUSxPQUFPLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztDQUNwQztDQUNBLEtBQUssQ0FBQztDQUNOLElBQUksT0FBTyxlQUFlLENBQUM7Q0FDM0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztDQUNMLGVBQWUsR0FBRyxlQUFlLENBQUM7Ozs7O0NDcFNsQztDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztDQUM5RDtDQUNBO0NBQ0E7Q0FDQTtDQUNBLElBQUksUUFBUSxrQkFBa0IsWUFBWTtDQUMxQyxJQUFJLFNBQVMsUUFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtDQUNuRCxRQUFRLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLG1CQUFtQixDQUFDO0NBQ3RELFFBQVEsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0NBQ3pDLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0NBQ3JDLFFBQVEsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0NBQ3pDLFFBQVEsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0NBQ3ZDLEtBQUs7Q0FDTCxJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLEdBQUcsWUFBWTtDQUN2RCxRQUFRLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztDQUNyRCxLQUFLLENBQUM7Q0FDTixJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxTQUFTLEVBQUU7Q0FDL0QsUUFBUSxPQUFPLFNBQVMsS0FBSyxRQUFRLENBQUMsbUJBQW1CLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLFNBQVMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0NBQ2pHLEtBQUssQ0FBQztDQUNOLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxnQ0FBZ0MsR0FBRyxZQUFZO0NBQ3RFLFFBQVEsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUNyRyxLQUFLLENBQUM7Q0FDTixJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFlBQVk7Q0FDOUMsUUFBUSxPQUFPLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztDQUN2QyxLQUFLLENBQUM7Q0FDTixJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLFlBQVk7Q0FDL0MsUUFBUSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7Q0FDM0IsS0FBSyxDQUFDO0NBQ04sSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxZQUFZO0NBQzdDLFFBQVEsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0NBQ3pCLEtBQUssQ0FBQztDQUNOLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsWUFBWTtDQUMvQyxRQUFRLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztDQUMzQixLQUFLLENBQUM7Q0FDTixJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFlBQVk7Q0FDOUMsUUFBUSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7Q0FDMUIsS0FBSyxDQUFDO0NBQ04sSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLFlBQVksR0FBRyxZQUFZO0NBQ2xELFFBQVEsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0NBQzlCLEtBQUssQ0FBQztDQUNOLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEdBQUcsVUFBVSxTQUFTLEVBQUU7Q0FDM0QsUUFBUSxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztDQUNuQyxLQUFLLENBQUM7Q0FDTjtDQUNBLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsWUFBWTtDQUM5QyxRQUFRLE9BQU8sSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztDQUNqRCxLQUFLLENBQUM7Q0FDTixJQUFJLFFBQVEsQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLENBQUMsQ0FBQztDQUN0QyxJQUFJLE9BQU8sUUFBUSxDQUFDO0NBQ3BCLENBQUMsRUFBRSxDQUFDLENBQUM7Q0FDTCxlQUFlLEdBQUcsUUFBUSxDQUFDOzs7OztDQ2pFM0I7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7Q0FDOUQ7Q0FDQTtBQUM2RDtDQUM3RDtBQUNnRDtBQUNOO0NBQzFDO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsSUFBSSxxQkFBcUIsa0JBQWtCLFlBQVk7Q0FDdkQsSUFBSSxTQUFTLHFCQUFxQixHQUFHO0NBQ3JDLEtBQUs7Q0FDTDtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsSUFBSSxxQkFBcUIsQ0FBQyxVQUFVLEdBQUcsWUFBWTtDQUNuRDtDQUNBLFFBQVEsYUFBYSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtDQUNyRixZQUFZLElBQUksYUFBYSxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ3ZFLFlBQVksSUFBSSxVQUFVLEdBQUcsYUFBYSxHQUFHLEdBQUcsQ0FBQztDQUNqRCxZQUFZLGFBQWEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDLEVBQUUsRUFBRTtDQUNwRixnQkFBZ0IsSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDO0NBQy9CLGdCQUFnQixPQUFPLENBQUMsYUFBYSxHQUFHLEdBQUcsTUFBTSxVQUFVLEVBQUU7Q0FDN0Qsb0JBQW9CLElBQUksSUFBSSxHQUFHLENBQUM7Q0FDaEMsb0JBQW9CLGFBQWEsS0FBSyxDQUFDLENBQUM7Q0FDeEMsaUJBQWlCO0NBQ2pCLGdCQUFnQixVQUFVLEdBQUcsYUFBYSxHQUFHLEdBQUcsQ0FBQztDQUNqRCxnQkFBZ0IsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRTtDQUM1RCxvQkFBb0IscUJBQXFCLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7Q0FDN0csaUJBQWlCO0NBQ2pCLGdCQUFnQixxQkFBcUIsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQztDQUN0SyxhQUFhO0NBQ2IsU0FBUztDQUNULFFBQVEsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztDQUN0QyxLQUFLLENBQUM7Q0FDTixJQUFJLHFCQUFxQixDQUFDLGVBQWUsR0FBRyxVQUFVLGNBQWMsRUFBRTtDQUN0RSxRQUFRLElBQUksWUFBWSxHQUFHLHFCQUFxQixDQUFDLHVCQUF1QixDQUFDLHFCQUFxQixDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO0NBQ2hJLFFBQVEsSUFBSSxZQUFZLEtBQUssQ0FBQyxDQUFDLEVBQUU7Q0FDakMsWUFBWSxPQUFPLFlBQVksQ0FBQztDQUNoQyxTQUFTO0NBQ1QsUUFBUSxPQUFPLHFCQUFxQixDQUFDLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxDQUFDO0NBQzVFLEtBQUssQ0FBQztDQUNOLElBQUkscUJBQXFCLENBQUMsZUFBZSxHQUFHLFVBQVUsY0FBYyxFQUFFO0NBQ3RFLFFBQVEsSUFBSSxXQUFXLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7Q0FDbEUsUUFBUSxJQUFJLE1BQU0sR0FBRyxJQUFJLFVBQVUsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0NBQzNFLFFBQVEsSUFBSSxhQUFhLEdBQUcsQ0FBQyxDQUFDO0NBQzlCLFFBQVEsSUFBSSxlQUFlLEdBQUcsQ0FBQyxDQUFDO0NBQ2hDLFFBQVEsYUFBYSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Q0FDckYsWUFBWSxJQUFJLFdBQVcsR0FBRyxXQUFXLElBQUksQ0FBQyxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUM7Q0FDNUYsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLFdBQVcsSUFBSSxjQUFjLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDO0NBQy9FLFlBQVksSUFBSSxlQUFlLEdBQUcsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLFdBQVcsRUFBRTtDQUNoRixnQkFBZ0IsZUFBZSxJQUFJLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQztDQUNqRSxnQkFBZ0IsYUFBYSxFQUFFLENBQUM7Q0FDaEMsYUFBYTtDQUNiLFlBQVksTUFBTSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7Q0FDcEMsU0FBUztDQUNULFFBQVEsT0FBTyxNQUFNLENBQUM7Q0FDdEIsS0FBSyxDQUFDO0NBQ04sSUFBSSxxQkFBcUIsQ0FBQyx1QkFBdUIsR0FBRyxVQUFVLGNBQWMsRUFBRTtDQUM5RSxRQUFRLElBQUksWUFBWSxHQUFHLHFCQUFxQixDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztDQUM3RSxRQUFRLE9BQU8sY0FBYyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDO0NBQzNGLEtBQUssQ0FBQztDQUNOLElBQUkscUJBQXFCLENBQUMsV0FBVyxHQUFHLFVBQVUsY0FBYyxFQUFFO0NBQ2xFLFFBQVEsSUFBSSxNQUFNLFlBQVksQ0FBQyxDQUFDO0NBQ2hDLFFBQVEsS0FBSyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Q0FDaEUsWUFBWSxhQUFhLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFO0NBQ3RFLGdCQUFnQixNQUFNLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztDQUMvRCxhQUFhO0NBQ2IsU0FBUztDQUNULFFBQVEsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0NBQ2xDLEtBQUssQ0FBQztDQUNOO0NBQ0EsSUFBSSxxQkFBcUIsQ0FBQyxzQkFBc0IsR0FBRyxVQUFVLGNBQWMsRUFBRTtDQUM3RSxRQUFRLElBQUksV0FBVyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0NBQ2xFLFFBQVEsSUFBSSxjQUFjLEdBQUcsSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztDQUM5RSxRQUFRLElBQUksV0FBVyxHQUFHLENBQUMsRUFBRTtDQUM3QixZQUFZLEtBQUssWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0NBQ3BFLGdCQUFnQixjQUFjLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUM7Q0FDakYsYUFBYTtDQUNiLFNBQVM7Q0FDVCxRQUFRLElBQUksY0FBYyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO0NBQ3ZELFFBQVEsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7Q0FDM0IsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFO0NBQ3JDLFlBQVkscUJBQXFCLENBQUMsVUFBVSxFQUFFLENBQUM7Q0FDL0MsU0FBUztDQUNULFFBQVEsYUFBYSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Q0FDcEYsWUFBWSxJQUFJLEtBQUssR0FBRyxHQUFHLENBQUM7Q0FDNUIsWUFBWSxJQUFJLGFBQWEsR0FBRyxxQkFBcUIsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDdEUsWUFBWSxhQUFhLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Q0FDcEYsZ0JBQWdCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQzdFLGdCQUFnQixLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUM7Q0FDbEQsZ0JBQWdCLElBQUksS0FBSyxJQUFJLGNBQWMsRUFBRTtDQUM3QyxvQkFBb0IsTUFBTTtDQUMxQixpQkFBaUI7Q0FDakIsYUFBYTtDQUNiLFlBQVksSUFBSSxLQUFLLEdBQUcsY0FBYyxFQUFFO0NBQ3hDLGdCQUFnQixjQUFjLEdBQUcsS0FBSyxDQUFDO0NBQ3ZDLGdCQUFnQixTQUFTLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDbkUsYUFBYTtDQUNiLFNBQVM7Q0FDVCxRQUFRLE9BQU8sU0FBUyxDQUFDO0NBQ3pCLEtBQUssQ0FBQztDQUNOO0NBQ0EsSUFBSSxxQkFBcUIsQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7Q0FDcEQsSUFBSSxxQkFBcUIsQ0FBQyxZQUFZLEdBQUcsSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztDQUNsTCxJQUFJLE9BQU8scUJBQXFCLENBQUM7Q0FDakMsQ0FBQyxFQUFFLENBQUMsQ0FBQztDQUNMLGVBQWUsR0FBRyxxQkFBcUIsQ0FBQzs7Ozs7Q0M5SHhDO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0NBQzlEO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsSUFBSSxvQkFBb0Isa0JBQWtCLFlBQVk7Q0FDdEQsSUFBSSxTQUFTLG9CQUFvQixHQUFHO0NBQ3BDLFFBQVEsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQztDQUMvQixRQUFRLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUM7Q0FDM0IsUUFBUSxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDO0NBQzVCLFFBQVEsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztDQUMzQixLQUFLO0NBQ0w7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLElBQUksb0JBQW9CLENBQUMsU0FBUyxDQUFDLGVBQWUsR0FBRyxZQUFZO0NBQ2pFLFFBQVEsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0NBQ2pDLEtBQUssQ0FBQztDQUNOLElBQUksb0JBQW9CLENBQUMsU0FBUyxDQUFDLGVBQWUsR0FBRyxVQUFVLFlBQVksRUFBRTtDQUM3RSxRQUFRLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO0NBQ3pDLEtBQUssQ0FBQztDQUNOO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsWUFBWTtDQUMzRCxRQUFRLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztDQUMzQixLQUFLLENBQUM7Q0FDTixJQUFJLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsVUFBVSxNQUFNLEVBQUU7Q0FDakUsUUFBUSxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztDQUM3QixLQUFLLENBQUM7Q0FDTjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsSUFBSSxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsZUFBZSxHQUFHLFlBQVk7Q0FDakUsUUFBUSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7Q0FDakMsS0FBSyxDQUFDO0NBQ047Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLElBQUksb0JBQW9CLENBQUMsU0FBUyxDQUFDLGVBQWUsR0FBRyxVQUFVLFlBQVksRUFBRTtDQUM3RSxRQUFRLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO0NBQ3pDLEtBQUssQ0FBQztDQUNOO0NBQ0E7Q0FDQTtDQUNBLElBQUksb0JBQW9CLENBQUMsU0FBUyxDQUFDLGFBQWEsR0FBRyxZQUFZO0NBQy9ELFFBQVEsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0NBQ2hDLEtBQUssQ0FBQztDQUNOLElBQUksb0JBQW9CLENBQUMsU0FBUyxDQUFDLGNBQWMsR0FBRyxVQUFVLFdBQVcsRUFBRTtDQUMzRSxRQUFRLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0NBQ3ZDLEtBQUssQ0FBQztDQUNOO0NBQ0E7Q0FDQTtDQUNBLElBQUksb0JBQW9CLENBQUMsU0FBUyxDQUFDLGVBQWUsR0FBRyxZQUFZO0NBQ2pFLFFBQVEsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0NBQ2pDLEtBQUssQ0FBQztDQUNOLElBQUksb0JBQW9CLENBQUMsU0FBUyxDQUFDLGVBQWUsR0FBRyxVQUFVLFlBQVksVUFBVTtDQUNyRixRQUFRLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO0NBQ3pDLEtBQUssQ0FBQztDQUNOLElBQUksb0JBQW9CLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxZQUFZO0NBQzNELFFBQVEsT0FBTyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQztDQUNuQyxLQUFLLENBQUM7Q0FDTixJQUFJLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsVUFBVSxNQUFNLEVBQUU7Q0FDakUsUUFBUSxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztDQUM3QixLQUFLLENBQUM7Q0FDTixJQUFJLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxZQUFZLEdBQUcsWUFBWTtDQUM5RCxRQUFRLE9BQU8sSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUM7Q0FDdEMsS0FBSyxDQUFDO0NBQ04sSUFBSSxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsWUFBWSxHQUFHLFVBQVUsU0FBUyxFQUFFO0NBQ3ZFLFFBQVEsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7Q0FDbkMsS0FBSyxDQUFDO0NBQ047Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLElBQUksb0JBQW9CLENBQUMsU0FBUyxDQUFDLFdBQVcsR0FBRyxZQUFZO0NBQzdELFFBQVEsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0NBQzdCLEtBQUssQ0FBQztDQUNOLElBQUksb0JBQW9CLENBQUMsU0FBUyxDQUFDLFdBQVcsR0FBRyxVQUFVLFFBQVEsRUFBRTtDQUNyRSxRQUFRLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0NBQ2pDLEtBQUssQ0FBQztDQUNOO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsWUFBWTtDQUM3RCxRQUFRLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztDQUM3QixLQUFLLENBQUM7Q0FDTixJQUFJLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsVUFBVSxRQUFRLFdBQVc7Q0FDOUUsUUFBUSxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztDQUNqQyxLQUFLLENBQUM7Q0FDTjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsSUFBSSxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsV0FBVyxHQUFHLFlBQVk7Q0FDN0QsUUFBUSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7Q0FDN0IsS0FBSyxDQUFDO0NBQ04sSUFBSSxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsV0FBVyxHQUFHLFVBQVUsUUFBUSxVQUFVO0NBQzdFLFFBQVEsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7Q0FDakMsS0FBSyxDQUFDO0NBQ047Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLElBQUksb0JBQW9CLENBQUMsU0FBUyxDQUFDLFlBQVksR0FBRyxZQUFZO0NBQzlELFFBQVEsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0NBQzlCLEtBQUssQ0FBQztDQUNOLElBQUksb0JBQW9CLENBQUMsU0FBUyxDQUFDLFlBQVksR0FBRyxVQUFVLFNBQVMsV0FBVztDQUNoRixRQUFRLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0NBQ25DLEtBQUssQ0FBQztDQUNOLElBQUksT0FBTyxvQkFBb0IsQ0FBQztDQUNoQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0NBQ0wsZUFBZSxHQUFHLG9CQUFvQixDQUFDOzs7OztDQzdJdkMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7Q0FDOUQ7Q0FDQTtDQUNBO0NBQ0EsSUFBSSxJQUFJLGtCQUFrQixZQUFZO0NBQ3RDLElBQUksU0FBUyxJQUFJLEdBQUc7Q0FDcEIsS0FBSztDQUNMO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLElBQUksSUFBSSxDQUFDLFNBQVMsR0FBRyxVQUFVLEdBQUcsRUFBRSxLQUFLLEVBQUU7Q0FDM0MsUUFBUSxJQUFJLEtBQUssS0FBSyxLQUFLLENBQUMsRUFBRSxFQUFFLEtBQUssR0FBRyxTQUFTLENBQUMsRUFBRTtDQUNwRCxRQUFRLE9BQU8sUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztDQUNwQyxLQUFLLENBQUM7Q0FDTixJQUFJLE9BQU8sSUFBSSxDQUFDO0NBQ2hCLENBQUMsRUFBRSxDQUFDLENBQUM7Q0FDTCxlQUFlLEdBQUcsSUFBSSxDQUFDOzs7OztDQ25CdkIsSUFBSSxTQUFTLEdBQUcsQ0FBQ0EsY0FBSSxJQUFJQSxjQUFJLENBQUMsU0FBUyxLQUFLLENBQUMsWUFBWTtDQUN6RCxJQUFJLElBQUksYUFBYSxHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRTtDQUN4QyxRQUFRLGFBQWEsR0FBRyxNQUFNLENBQUMsY0FBYztDQUM3QyxhQUFhLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxZQUFZLEtBQUssSUFBSSxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7Q0FDeEYsWUFBWSxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Q0FDdkYsUUFBUSxPQUFPLGFBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDbkMsS0FBSyxDQUFDO0NBQ04sSUFBSSxPQUFPLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRTtDQUMzQixRQUFRLGFBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDNUIsUUFBUSxTQUFTLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLEVBQUU7Q0FDL0MsUUFBUSxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBSyxJQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0NBQzdGLEtBQUssQ0FBQztDQUNOLENBQUMsR0FBRyxDQUFDO0NBQ0wsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDckI7Q0FDekM7Q0FDQTtDQUNBO0NBQ0EsSUFBSSxvQkFBb0Isa0JBQWtCLFVBQVUsTUFBTSxFQUFFO0NBQzVELElBQUksU0FBUyxDQUFDLG9CQUFvQixFQUFFLE1BQU0sQ0FBQyxDQUFDO0NBQzVDLElBQUksU0FBUyxvQkFBb0IsR0FBRztDQUNwQyxRQUFRLE9BQU8sTUFBTSxLQUFLLElBQUksSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUM7Q0FDeEUsS0FBSztDQUNMLElBQUksb0JBQW9CLENBQUMsSUFBSSxHQUFHLHNCQUFzQixDQUFDO0NBQ3ZELElBQUksT0FBTyxvQkFBb0IsQ0FBQztDQUNoQyxDQUFDLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7Q0FDeEIsZUFBZSxHQUFHLG9CQUFvQixDQUFDOzs7OztDQzFCdkMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDWTtBQUNWO0NBQ2hFO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsSUFBSSxZQUFZLHNEQUFzRCxZQUFZO0NBQ2xGLElBQUksU0FBUyxZQUFZLEdBQUc7Q0FDNUIsS0FBSztDQUNMO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsSUFBSSxZQUFZLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsRUFBRTtDQUNyRCxRQUFRLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztDQUM5QyxLQUFLLENBQUM7Q0FDTjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLElBQUksWUFBWSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFO0NBQ3JFLFFBQVEsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFO0NBQ3ZCLFlBQVksTUFBTSxJQUFJLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxDQUFDO0NBQ3ZELFNBQVM7Q0FDVCxhQUFhLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQztDQUMzRCxhQUFhLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUFFO0NBQzNELFlBQVksTUFBTSxJQUFJLDJCQUEyQixDQUFDLE9BQU8sRUFBRSxDQUFDO0NBQzVELFNBQVM7Q0FDVCxhQUFhLElBQUksR0FBRyxLQUFLLENBQUMsRUFBRTtDQUM1QixZQUFZLE9BQU87Q0FDbkIsU0FBUztDQUNULFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtDQUN0QyxZQUFZLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ25DLFNBQVM7Q0FDVCxLQUFLLENBQUM7Q0FDTjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLFlBQVksQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLFlBQVk7Q0FDL0MsS0FBSyxDQUFDO0NBQ047Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLFlBQVksQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLFlBQVk7Q0FDL0MsS0FBSyxDQUFDO0NBQ04sSUFBSSxPQUFPLFlBQVksQ0FBQztDQUN4QixDQUFDLEVBQUUsQ0FBQyxDQUFDO0NBQ0wsZUFBZSxHQUFHLFlBQVksQ0FBQzs7Ozs7Q0MzSS9CLElBQUksU0FBUyxHQUFHLENBQUNBLGNBQUksSUFBSUEsY0FBSSxDQUFDLFNBQVMsS0FBSyxDQUFDLFlBQVk7Q0FDekQsSUFBSSxJQUFJLGFBQWEsR0FBRyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUU7Q0FDeEMsUUFBUSxhQUFhLEdBQUcsTUFBTSxDQUFDLGNBQWM7Q0FDN0MsYUFBYSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsWUFBWSxLQUFLLElBQUksVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO0NBQ3hGLFlBQVksVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0NBQ3ZGLFFBQVEsT0FBTyxhQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQ25DLEtBQUssQ0FBQztDQUNOLElBQUksT0FBTyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUU7Q0FDM0IsUUFBUSxhQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzVCLFFBQVEsU0FBUyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxFQUFFO0NBQy9DLFFBQVEsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLEtBQUssSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztDQUM3RixLQUFLLENBQUM7Q0FDTixDQUFDLEdBQUcsQ0FBQztDQUNMLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQ3JCO0NBQ3pDO0NBQ0E7Q0FDQTtDQUNBLElBQUksZ0JBQWdCLGtCQUFrQixVQUFVLE1BQU0sRUFBRTtDQUN4RCxJQUFJLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsQ0FBQztDQUN4QyxJQUFJLFNBQVMsZ0JBQWdCLEdBQUc7Q0FDaEMsUUFBUSxPQUFPLE1BQU0sS0FBSyxJQUFJLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDO0NBQ3hFLEtBQUs7Q0FDTCxJQUFJLE9BQU8sZ0JBQWdCLENBQUM7Q0FDNUIsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0NBQ3hCLGVBQWUsR0FBRyxnQkFBZ0IsQ0FBQzs7Ozs7Q0N6Qm5DO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLElBQUksU0FBUyxHQUFHLENBQUNBLGNBQUksSUFBSUEsY0FBSSxDQUFDLFNBQVMsS0FBSyxDQUFDLFlBQVk7Q0FDekQsSUFBSSxJQUFJLGFBQWEsR0FBRyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUU7Q0FDeEMsUUFBUSxhQUFhLEdBQUcsTUFBTSxDQUFDLGNBQWM7Q0FDN0MsYUFBYSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsWUFBWSxLQUFLLElBQUksVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO0NBQ3hGLFlBQVksVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0NBQ3ZGLFFBQVEsT0FBTyxhQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQ25DLEtBQUssQ0FBQztDQUNOLElBQUksT0FBTyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUU7Q0FDM0IsUUFBUSxhQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzVCLFFBQVEsU0FBUyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxFQUFFO0NBQy9DLFFBQVEsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLEtBQUssSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztDQUM3RixLQUFLLENBQUM7Q0FDTixDQUFDLEdBQUcsQ0FBQztDQUNMLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0NBQzlEO0NBQ0E7QUFDbUM7QUFDWTtBQUNWO0FBQ21DO0FBQ2hCO0FBQ3JCO0FBQ3VDO0NBQzFFO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLHFCQUFxQixrQkFBa0IsVUFBVSxNQUFNLEVBQUU7Q0FDN0QsSUFBSSxTQUFTLENBQUMscUJBQXFCLEVBQUUsTUFBTSxDQUFDLENBQUM7Q0FDN0M7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLElBQUksU0FBUyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUU7Q0FDekMsUUFBUSxJQUFJLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRSxFQUFFLElBQUksR0FBRyxFQUFFLENBQUMsRUFBRTtDQUMzQyxRQUFRLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDO0NBQzlDO0NBQ0E7Q0FDQTtDQUNBLFFBQVEsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7Q0FDeEIsUUFBUSxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUU7Q0FDdEIsWUFBWSxNQUFNLElBQUksMEJBQTBCLENBQUMsT0FBTyxDQUFDLHlCQUF5QjtDQUNsRixrQkFBa0IsSUFBSSxDQUFDLENBQUM7Q0FDeEIsU0FBUztDQUNULFFBQVEsS0FBSyxDQUFDLEdBQUcsR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztDQUN6QyxRQUFRLE9BQU8sS0FBSyxDQUFDO0NBQ3JCLEtBQUs7Q0FDTDtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLElBQUkscUJBQXFCLENBQUMsU0FBUyxDQUFDLGNBQWMsR0FBRyxVQUFVLFdBQVcsRUFBRTtDQUM1RTtDQUNBLFFBQVEsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQztDQUM3QyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7Q0FDbkMsS0FBSyxDQUFDO0NBQ047Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsSUFBSSxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLFVBQVUsV0FBVyxFQUFFO0NBQ2xFO0NBQ0EsUUFBUSxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQztDQUMxQyxRQUFRLElBQUksV0FBVyxHQUFHLFdBQVcsSUFBSSxDQUFDLENBQUM7Q0FDM0MsUUFBUSxJQUFJLFdBQVcsR0FBRyxXQUFXLEdBQUcsQ0FBQztDQUN6QyxZQUFZLFdBQVcsR0FBRyxXQUFXLENBQUM7Q0FDdEMsUUFBUSxJQUFJLFdBQVcsR0FBRyxDQUFDLEVBQUU7Q0FDN0IsWUFBWSxJQUFJLFdBQVcsR0FBRyxDQUFDO0NBQy9CLGdCQUFnQixNQUFNLElBQUksa0JBQWtCLENBQUMsT0FBTyxFQUFFLENBQUM7Q0FDdkQsWUFBWSxXQUFXLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7Q0FDdEQsU0FBUztDQUNULFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUM7Q0FDNUUsS0FBSyxDQUFDO0NBQ047Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLElBQUkscUJBQXFCLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsRUFBRTtDQUN6RCxRQUFRLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztDQUM1QyxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztDQUM1QyxRQUFRLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDO0NBQ3hCLEtBQUssQ0FBQztDQUNOO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFO0NBQzlFLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0NBQ3RELGFBQWEsQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUU7Q0FDMUMsWUFBWSxNQUFNLElBQUksMkJBQTJCLENBQUMsT0FBTyxFQUFFLENBQUM7Q0FDNUQsU0FBUztDQUNULFFBQVEsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0NBQzlDLFFBQVEsUUFBUSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7Q0FDdEUsUUFBUSxJQUFJLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQztDQUMxQixLQUFLLENBQUM7Q0FDTjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsSUFBSSxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLFVBQVUsR0FBRyxFQUFFO0NBQzdELFFBQVEsR0FBRyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztDQUN0RCxLQUFLLENBQUM7Q0FDTjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsSUFBSSxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLFlBQVk7Q0FDeEQsUUFBUSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztDQUN2QixLQUFLLENBQUM7Q0FDTjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsSUFBSSxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsV0FBVyxHQUFHLFlBQVk7Q0FDOUQsUUFBUSxPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Q0FDdkUsS0FBSyxDQUFDO0NBQ047Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsWUFBWTtDQUN2RCxRQUFRLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztDQUMxQixLQUFLLENBQUM7Q0FDTixJQUFJLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsVUFBVSxLQUFLLEVBQUU7Q0FDaEUsUUFBUSxJQUFJLENBQUMsS0FBSyxFQUFFO0NBQ3BCLFlBQVksT0FBTyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Q0FDeEMsU0FBUztDQUNULFFBQVEsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7Q0FDdkMsWUFBWSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7Q0FDL0MsU0FBUztDQUNULFFBQVEsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0NBQzNDLEtBQUssQ0FBQztDQUNOO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLElBQUkscUJBQXFCLENBQUMsU0FBUyxDQUFDLGFBQWEsR0FBRyxZQUFZO0NBQ2hFLFFBQVEsT0FBTyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztDQUNuRSxLQUFLLENBQUM7Q0FDTjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxlQUFlLEdBQUcsVUFBVSxXQUFXLEVBQUU7Q0FDN0UsUUFBUSxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLGtDQUFrQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0NBQ2hGLEtBQUssQ0FBQztDQUNOO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxlQUFlLEdBQUcsVUFBVSxNQUFNLEVBQUU7Q0FDeEUsUUFBUSxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLDZCQUE2QixDQUFDLFFBQVEsRUFBRSxDQUFDO0NBQzNFLEtBQUssQ0FBQztDQUNOO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsWUFBWTtDQUN4RCxLQUFLLENBQUM7Q0FDTixJQUFJLE9BQU8scUJBQXFCLENBQUM7Q0FDakMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0NBQzNCLGVBQWUsR0FBRyxxQkFBcUIsQ0FBQzs7Ozs7Q0N6UnhDO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0NBQzlEO0NBQ0E7QUFDeUQ7Q0FDekQ7QUFDZ0U7Q0FDaEU7QUFDNEQ7Q0FDNUQ7QUFDZ0U7Q0FDaEU7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtBQUM0QztBQUNjO0FBQ1o7QUFDTjtBQUNrQztBQUNkO0NBQzVELFlBQVksSUFBSSxJQUFJLENBQUM7Q0FDckIsQ0FBQyxVQUFVLElBQUksRUFBRTtDQUNqQixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDO0NBQ3RDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUM7Q0FDdEMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQztDQUN0QyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDO0NBQ3RDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUM7Q0FDbEQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQztDQUNsRCxDQUFDLEVBQUUsSUFBSSxLQUFLLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQ3hCO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLFNBQVMsb0JBQW9CLEdBQUc7Q0FDaEMsSUFBSSxJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsRUFBRTtDQUN2QyxRQUFRLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksQ0FBQztDQUN4QyxLQUFLO0NBQ0wsSUFBSSxJQUFJLE9BQU9TLGNBQU0sS0FBSyxXQUFXLEVBQUU7Q0FDdkMsUUFBUSxPQUFPQSxjQUFNLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDO0NBQ3hDLEtBQUs7Q0FDTCxJQUFJLElBQUksT0FBTyxJQUFJLEtBQUssV0FBVyxFQUFFO0NBQ3JDLFFBQVEsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDO0NBQ3RDLEtBQUs7Q0FDTCxJQUFJLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQztDQUN6RCxDQUFDO0NBQ0Q7Q0FDQTtDQUNBO0NBQ0EsSUFBSSxVQUFVLENBQUM7Q0FDZjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsU0FBUyxZQUFZLENBQUMsR0FBRyxFQUFFO0NBQzNCLElBQUksSUFBSSxPQUFPLFVBQVUsS0FBSyxXQUFXLEVBQUU7Q0FDM0MsUUFBUSxVQUFVLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQztDQUM1QyxLQUFLO0NBQ0wsSUFBSSxJQUFJLFVBQVUsS0FBSyxJQUFJLEVBQUU7Q0FDN0IsUUFBUSxNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7Q0FDcEQsS0FBSztDQUNMLElBQUksT0FBTyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7Q0FDM0IsQ0FBQztDQUNELFNBQVMsU0FBUyxHQUFHO0NBQ3JCO0NBQ0EsSUFBSSxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7Q0FDcEIsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ2hDLElBQUksSUFBSSxXQUFXLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0NBQ3hDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQztDQUM1QjtDQUNBLElBQUksS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtDQUN6QyxRQUFRLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQztDQUNoRCxLQUFLO0NBQ0wsSUFBSSxPQUFPLE1BQU0sQ0FBQztDQUNsQixDQUFDO0NBQ0Q7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsSUFBSSxzQkFBc0Isa0JBQWtCLFlBQVk7Q0FDeEQsSUFBSSxTQUFTLHNCQUFzQixHQUFHO0NBQ3RDLEtBQUs7Q0FDTDtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLHNCQUFzQixDQUFDLE1BQU0sR0FBRyxVQUFVLFNBQVMsRUFBRSxPQUFPLEVBQUU7Q0FDbEU7Q0FDQSxRQUFRLElBQUksTUFBTSxHQUFHLElBQUksZUFBZSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztDQUNyRDtDQUNBLFFBQVEsSUFBSSxRQUFRLEdBQUcsaUJBQWlCLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztDQUMzRDtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLFFBQVEsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztDQUN4QztDQUNBLFFBQVEsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0NBQzFCLFFBQVEsSUFBSSxJQUFJLEdBQUcsU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7Q0FDMUMsUUFBUSxJQUFJLGNBQWMsR0FBRyxJQUFJLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxDQUFDO0NBQ2xFLFFBQVEsT0FBTyxTQUFTLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO0NBQ3pDLFlBQVksUUFBUSxJQUFJO0NBQ3hCLGdCQUFnQixLQUFLLHNCQUFzQixDQUFDLDBCQUEwQjtDQUN0RSxvQkFBb0IsU0FBUyxHQUFHLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0NBQ3BHLG9CQUFvQixNQUFNO0NBQzFCLGdCQUFnQixLQUFLLHNCQUFzQixDQUFDLDBCQUEwQixDQUFDO0NBQ3ZFLGdCQUFnQixLQUFLLHNCQUFzQixDQUFDLDRCQUE0QjtDQUN4RSxvQkFBb0IsU0FBUyxHQUFHLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7Q0FDcEgsb0JBQW9CLE1BQU07Q0FDMUIsZ0JBQWdCLEtBQUssc0JBQXNCLENBQUMsa0NBQWtDO0NBQzlFLG9CQUFvQixNQUFNLENBQUMsTUFBTSxZQUFZLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDckUsb0JBQW9CLE1BQU07Q0FDMUIsZ0JBQWdCLEtBQUssc0JBQXNCLENBQUMsNkJBQTZCO0NBQ3pFLG9CQUFvQixTQUFTLEdBQUcsc0JBQXNCLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztDQUN2RyxvQkFBb0IsTUFBTTtDQUMxQixnQkFBZ0IsS0FBSyxzQkFBc0IsQ0FBQyxXQUFXO0NBQ3ZELG9CQUFvQixJQUFJLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMseUJBQXlCLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUNqSDtDQUNBLG9CQUFvQixNQUFNO0NBQzFCLGdCQUFnQixLQUFLLHNCQUFzQixDQUFDLG1CQUFtQjtDQUMvRDtDQUNBLG9CQUFvQixTQUFTLElBQUksQ0FBQyxDQUFDO0NBQ25DLG9CQUFvQixNQUFNO0NBQzFCLGdCQUFnQixLQUFLLHNCQUFzQixDQUFDLGdCQUFnQjtDQUM1RDtDQUNBLG9CQUFvQixTQUFTLEVBQUUsQ0FBQztDQUNoQyxvQkFBb0IsTUFBTTtDQUMxQixnQkFBZ0IsS0FBSyxzQkFBc0IsQ0FBQyxnQ0FBZ0M7Q0FDNUUsb0JBQW9CLFNBQVMsR0FBRyxzQkFBc0IsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0NBQzlHLG9CQUFvQixNQUFNO0NBQzFCLGdCQUFnQixLQUFLLHNCQUFzQixDQUFDLGlDQUFpQyxDQUFDO0NBQzlFLGdCQUFnQixLQUFLLHNCQUFzQixDQUFDLHVCQUF1QjtDQUNuRTtDQUNBLG9CQUFvQixNQUFNLElBQUksaUJBQWlCLENBQUMsT0FBTyxFQUFFLENBQUM7Q0FDMUQsZ0JBQWdCO0NBQ2hCO0NBQ0E7Q0FDQTtDQUNBLG9CQUFvQixTQUFTLEVBQUUsQ0FBQztDQUNoQyxvQkFBb0IsU0FBUyxHQUFHLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0NBQ3BHLG9CQUFvQixNQUFNO0NBQzFCLGFBQWE7Q0FDYixZQUFZLElBQUksU0FBUyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUU7Q0FDOUMsZ0JBQWdCLElBQUksR0FBRyxTQUFTLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztDQUM5QyxhQUFhO0NBQ2IsaUJBQWlCO0NBQ2pCLGdCQUFnQixNQUFNLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0NBQ3BFLGFBQWE7Q0FDYixTQUFTO0NBQ1QsUUFBUSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUU7Q0FDbkMsWUFBWSxNQUFNLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0NBQ2hFLFNBQVM7Q0FDVCxRQUFRLElBQUksYUFBYSxHQUFHLElBQUksZUFBZSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztDQUNoRyxRQUFRLGFBQWEsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7Q0FDL0MsUUFBUSxPQUFPLGFBQWEsQ0FBQztDQUM3QixLQUFLLENBQUM7Q0FDTjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLElBQUksc0JBQXNCLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxTQUFTLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRTtDQUM5RixRQUFRLElBQUksU0FBUyxHQUFHLHNCQUFzQixDQUFDLDRCQUE0QixHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtDQUM1RjtDQUNBLFlBQVksTUFBTSxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztDQUNoRSxTQUFTO0NBQ1QsUUFBUSxJQUFJLGlCQUFpQixHQUFHLElBQUksVUFBVSxDQUFDLHNCQUFzQixDQUFDLDRCQUE0QixDQUFDLENBQUM7Q0FDcEcsUUFBUSxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsc0JBQXNCLENBQUMsNEJBQTRCLEVBQUUsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUU7Q0FDM0csWUFBWSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7Q0FDeEQsU0FBUztDQUNULFFBQVEsY0FBYyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxxQkFBcUIsQ0FBQyxpQkFBaUIsRUFBRSxzQkFBc0IsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUN6TCxRQUFRLElBQUksTUFBTSxHQUFHLElBQUksZUFBZSxDQUFDLE9BQU8sRUFBRSxDQUFDO0NBQ25ELFFBQVEsU0FBUyxHQUFHLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0NBQ3hGLFFBQVEsY0FBYyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztDQUNwRCxRQUFRLElBQUksbUJBQW1CLEdBQUcsQ0FBQyxDQUFDLENBQUM7Q0FDckMsUUFBUSxJQUFJLFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxzQkFBc0IsQ0FBQyxpQ0FBaUMsRUFBRTtDQUMvRixZQUFZLG1CQUFtQixHQUFHLFNBQVMsR0FBRyxDQUFDLENBQUM7Q0FDaEQsU0FBUztDQUNULFFBQVEsT0FBTyxTQUFTLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO0NBQ3pDLFlBQVksUUFBUSxTQUFTLENBQUMsU0FBUyxDQUFDO0NBQ3hDLGdCQUFnQixLQUFLLHNCQUFzQixDQUFDLGlDQUFpQztDQUM3RSxvQkFBb0IsU0FBUyxFQUFFLENBQUM7Q0FDaEMsb0JBQW9CLFFBQVEsU0FBUyxDQUFDLFNBQVMsQ0FBQztDQUNoRCx3QkFBd0IsS0FBSyxzQkFBc0IsQ0FBQyxxQ0FBcUM7Q0FDekYsNEJBQTRCLElBQUksUUFBUSxHQUFHLElBQUksZUFBZSxDQUFDLE9BQU8sRUFBRSxDQUFDO0NBQ3pFLDRCQUE0QixTQUFTLEdBQUcsc0JBQXNCLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxTQUFTLEdBQUcsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0NBQ2xILDRCQUE0QixjQUFjLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0NBQzVFLDRCQUE0QixNQUFNO0NBQ2xDLHdCQUF3QixLQUFLLHNCQUFzQixDQUFDLGtDQUFrQztDQUN0Riw0QkFBNEIsSUFBSSxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQUMsT0FBTyxFQUFFLENBQUM7Q0FDdkUsNEJBQTRCLFNBQVMsR0FBRyxzQkFBc0IsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLFNBQVMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7Q0FDaEgsNEJBQTRCLGNBQWMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7Q0FDeEUsNEJBQTRCLE1BQU07Q0FDbEMsd0JBQXdCLEtBQUssc0JBQXNCLENBQUMscUNBQXFDO0NBQ3pGLDRCQUE0QixJQUFJLFNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztDQUMxRSw0QkFBNEIsU0FBUyxHQUFHLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsU0FBUyxHQUFHLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztDQUNuSCw0QkFBNEIsY0FBYyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztDQUM5RSw0QkFBNEIsTUFBTTtDQUNsQyx3QkFBd0IsS0FBSyxzQkFBc0IsQ0FBQyx5Q0FBeUM7Q0FDN0YsNEJBQTRCLElBQUksWUFBWSxHQUFHLElBQUksZUFBZSxDQUFDLE9BQU8sRUFBRSxDQUFDO0NBQzdFLDRCQUE0QixTQUFTLEdBQUcsc0JBQXNCLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLFNBQVMsR0FBRyxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUM7Q0FDekgsNEJBQTRCLGNBQWMsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUNoSCw0QkFBNEIsTUFBTTtDQUNsQyx3QkFBd0IsS0FBSyxzQkFBc0IsQ0FBQyxzQ0FBc0M7Q0FDMUYsNEJBQTRCLElBQUksU0FBUyxHQUFHLElBQUksZUFBZSxDQUFDLE9BQU8sRUFBRSxDQUFDO0NBQzFFLDRCQUE0QixTQUFTLEdBQUcsc0JBQXNCLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLFNBQVMsR0FBRyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7Q0FDdEgsNEJBQTRCLGNBQWMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUN4Ryw0QkFBNEIsTUFBTTtDQUNsQyx3QkFBd0IsS0FBSyxzQkFBc0IsQ0FBQyxvQ0FBb0M7Q0FDeEYsNEJBQTRCLElBQUksUUFBUSxHQUFHLElBQUksZUFBZSxDQUFDLE9BQU8sRUFBRSxDQUFDO0NBQ3pFLDRCQUE0QixTQUFTLEdBQUcsc0JBQXNCLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLFNBQVMsR0FBRyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7Q0FDckgsNEJBQTRCLGNBQWMsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUN4Ryw0QkFBNEIsTUFBTTtDQUNsQyx3QkFBd0IsS0FBSyxzQkFBc0IsQ0FBQyxxQ0FBcUM7Q0FDekYsNEJBQTRCLElBQUksUUFBUSxHQUFHLElBQUksZUFBZSxDQUFDLE9BQU8sRUFBRSxDQUFDO0NBQ3pFLDRCQUE0QixTQUFTLEdBQUcsc0JBQXNCLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLFNBQVMsR0FBRyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7Q0FDckgsNEJBQTRCLGNBQWMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUN0Ryw0QkFBNEIsTUFBTTtDQUNsQyx3QkFBd0I7Q0FDeEIsNEJBQTRCLE1BQU0saUJBQWlCLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUM7Q0FDaEYscUJBQXFCO0NBQ3JCLG9CQUFvQixNQUFNO0NBQzFCLGdCQUFnQixLQUFLLHNCQUFzQixDQUFDLHVCQUF1QjtDQUNuRSxvQkFBb0IsU0FBUyxFQUFFLENBQUM7Q0FDaEMsb0JBQW9CLGNBQWMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7Q0FDeEQsb0JBQW9CLE1BQU07Q0FDMUIsZ0JBQWdCO0NBQ2hCLG9CQUFvQixNQUFNLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0NBQ3hFLGFBQWE7Q0FDYixTQUFTO0NBQ1Q7Q0FDQSxRQUFRLElBQUksbUJBQW1CLEtBQUssQ0FBQyxDQUFDLEVBQUU7Q0FDeEMsWUFBWSxJQUFJLG9CQUFvQixHQUFHLFNBQVMsR0FBRyxtQkFBbUIsQ0FBQztDQUN2RSxZQUFZLElBQUksY0FBYyxDQUFDLGFBQWEsRUFBRSxFQUFFO0NBQ2hEO0NBQ0EsZ0JBQWdCLG9CQUFvQixFQUFFLENBQUM7Q0FDdkMsYUFBYTtDQUNiLFlBQVksY0FBYyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEdBQUcsb0JBQW9CLENBQUMsQ0FBQyxDQUFDO0NBQ3JKLFNBQVM7Q0FDVCxRQUFRLE9BQU8sU0FBUyxDQUFDO0NBQ3pCLEtBQUssQ0FBQztDQUNOO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsSUFBSSxzQkFBc0IsQ0FBQyxjQUFjLEdBQUcsVUFBVSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRTtDQUNwRjtDQUNBLFFBQVEsSUFBSSxrQkFBa0IsR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLElBQUksQ0FBQyxDQUFDLENBQUM7Q0FDaEY7Q0FDQSxRQUFRLElBQUksa0JBQWtCLEdBQUcsSUFBSSxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxJQUFJLENBQUMsQ0FBQyxDQUFDO0NBQ2hGLFFBQVEsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0NBQ3RCLFFBQVEsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDO0NBQ3hCLFFBQVEsT0FBTyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUU7Q0FDbkQsWUFBWSxJQUFJLElBQUksR0FBRyxTQUFTLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztDQUM5QyxZQUFZLElBQUksSUFBSSxHQUFHLHNCQUFzQixDQUFDLDBCQUEwQixFQUFFO0NBQzFFLGdCQUFnQixrQkFBa0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0NBQ3RELGdCQUFnQixrQkFBa0IsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztDQUMxRCxnQkFBZ0IsS0FBSyxJQUFJLENBQUMsQ0FBQztDQUMzQixhQUFhO0NBQ2IsaUJBQWlCO0NBQ2pCLGdCQUFnQixRQUFRLElBQUk7Q0FDNUIsb0JBQW9CLEtBQUssc0JBQXNCLENBQUMsMEJBQTBCO0NBQzFFO0NBQ0Esd0JBQXdCLGtCQUFrQixDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsc0JBQXNCLENBQUMsMEJBQTBCLENBQUM7Q0FDeEcsd0JBQXdCLE1BQU07Q0FDOUIsb0JBQW9CLEtBQUssc0JBQXNCLENBQUMsMEJBQTBCLENBQUM7Q0FDM0Usb0JBQW9CLEtBQUssc0JBQXNCLENBQUMsNEJBQTRCLENBQUM7Q0FDN0Usb0JBQW9CLEtBQUssc0JBQXNCLENBQUMsNkJBQTZCLENBQUM7Q0FDOUUsb0JBQW9CLEtBQUssc0JBQXNCLENBQUMsZ0NBQWdDLENBQUM7Q0FDakYsb0JBQW9CLEtBQUssc0JBQXNCLENBQUMsaUNBQWlDLENBQUM7Q0FDbEYsb0JBQW9CLEtBQUssc0JBQXNCLENBQUMsdUJBQXVCO0NBQ3ZFLHdCQUF3QixTQUFTLEVBQUUsQ0FBQztDQUNwQyx3QkFBd0IsR0FBRyxHQUFHLElBQUksQ0FBQztDQUNuQyx3QkFBd0IsTUFBTTtDQUM5QixvQkFBb0IsS0FBSyxzQkFBc0IsQ0FBQyxrQ0FBa0M7Q0FDbEY7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0Esd0JBQXdCLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxHQUFHLHNCQUFzQixDQUFDLGtDQUFrQyxDQUFDO0NBQzlHLHdCQUF3QixJQUFJLEdBQUcsU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7Q0FDdEQsd0JBQXdCLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQztDQUN6RCx3QkFBd0IsS0FBSyxFQUFFLENBQUM7Q0FDaEMsd0JBQXdCLE1BQU07Q0FDOUIsaUJBQWlCO0NBQ2pCLGFBQWE7Q0FDYixTQUFTO0NBQ1QsUUFBUSxzQkFBc0IsQ0FBQyxvQkFBb0IsQ0FBQyxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7Q0FDM0csUUFBUSxPQUFPLFNBQVMsQ0FBQztDQUN6QixLQUFLLENBQUM7Q0FDTjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLElBQUksc0JBQXNCLENBQUMsb0JBQW9CLEdBQUcsVUFBVSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFO0NBQ3BIO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsUUFBUSxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0NBQ2pDLFFBQVEsSUFBSSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0NBQzFDLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0NBQ2xCLFFBQVEsT0FBTyxDQUFDLEdBQUcsTUFBTSxFQUFFO0NBQzNCLFlBQVksSUFBSSxTQUFTLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDbEQsWUFBWSxJQUFJLEVBQUUsWUFBWSxFQUFFLENBQUM7Q0FDakMsWUFBWSxRQUFRLE9BQU87Q0FDM0IsZ0JBQWdCLEtBQUssSUFBSSxDQUFDLEtBQUs7Q0FDL0I7Q0FDQSxvQkFBb0IsSUFBSSxTQUFTLEdBQUcsRUFBRSxFQUFFO0NBQ3hDO0NBQ0E7Q0FDQSx3QkFBd0IsRUFBRSxnQ0FBZ0MsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFLEdBQUcsU0FBUyxDQUFDLENBQUM7Q0FDOUYscUJBQXFCO0NBQ3JCLHlCQUF5QjtDQUN6Qix3QkFBd0IsUUFBUSxTQUFTO0NBQ3pDLDRCQUE0QixLQUFLLEVBQUU7Q0FDbkMsZ0NBQWdDLEVBQUUsR0FBRyxHQUFHLENBQUM7Q0FDekMsZ0NBQWdDLE1BQU07Q0FDdEMsNEJBQTRCLEtBQUssc0JBQXNCLENBQUMsRUFBRTtDQUMxRCxnQ0FBZ0MsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7Q0FDckQsZ0NBQWdDLE1BQU07Q0FDdEMsNEJBQTRCLEtBQUssc0JBQXNCLENBQUMsRUFBRTtDQUMxRCxnQ0FBZ0MsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7Q0FDckQsZ0NBQWdDLE1BQU07Q0FDdEMsNEJBQTRCLEtBQUssc0JBQXNCLENBQUMsRUFBRTtDQUMxRDtDQUNBLGdDQUFnQyxnQkFBZ0IsR0FBRyxPQUFPLENBQUM7Q0FDM0QsZ0NBQWdDLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO0NBQzNELGdDQUFnQyxNQUFNO0NBQ3RDLDRCQUE0QixLQUFLLHNCQUFzQixDQUFDLGtDQUFrQztDQUMxRixnQ0FBZ0MsTUFBTSxDQUFDLE1BQU0sWUFBWSxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ2hGLGdDQUFnQyxNQUFNO0NBQ3RDLDRCQUE0QixLQUFLLHNCQUFzQixDQUFDLDBCQUEwQjtDQUNsRixnQ0FBZ0MsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7Q0FDckQsZ0NBQWdDLE1BQU07Q0FDdEMseUJBQXlCO0NBQ3pCLHFCQUFxQjtDQUNyQixvQkFBb0IsTUFBTTtDQUMxQixnQkFBZ0IsS0FBSyxJQUFJLENBQUMsS0FBSztDQUMvQjtDQUNBLG9CQUFvQixJQUFJLFNBQVMsR0FBRyxFQUFFLEVBQUU7Q0FDeEMsd0JBQXdCLEVBQUUsK0JBQStCLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUFDO0NBQzdGLHFCQUFxQjtDQUNyQix5QkFBeUI7Q0FDekIsd0JBQXdCLFFBQVEsU0FBUztDQUN6Qyw0QkFBNEIsS0FBSyxFQUFFO0NBQ25DLGdDQUFnQyxFQUFFLEdBQUcsR0FBRyxDQUFDO0NBQ3pDLGdDQUFnQyxNQUFNO0NBQ3RDLDRCQUE0QixLQUFLLHNCQUFzQixDQUFDLEVBQUU7Q0FDMUQ7Q0FDQSxnQ0FBZ0MsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDO0NBQzNELGdDQUFnQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztDQUMzRCxnQ0FBZ0MsTUFBTTtDQUN0Qyw0QkFBNEIsS0FBSyxzQkFBc0IsQ0FBQyxFQUFFO0NBQzFELGdDQUFnQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztDQUNyRCxnQ0FBZ0MsTUFBTTtDQUN0Qyw0QkFBNEIsS0FBSyxzQkFBc0IsQ0FBQyxFQUFFO0NBQzFEO0NBQ0EsZ0NBQWdDLGdCQUFnQixHQUFHLE9BQU8sQ0FBQztDQUMzRCxnQ0FBZ0MsT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7Q0FDM0QsZ0NBQWdDLE1BQU07Q0FDdEMsNEJBQTRCLEtBQUssc0JBQXNCLENBQUMsa0NBQWtDO0NBQzFGO0NBQ0EsZ0NBQWdDLE1BQU0sQ0FBQyxNQUFNLFlBQVksa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUNoRixnQ0FBZ0MsTUFBTTtDQUN0Qyw0QkFBNEIsS0FBSyxzQkFBc0IsQ0FBQywwQkFBMEI7Q0FDbEYsZ0NBQWdDLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0NBQ3JELGdDQUFnQyxNQUFNO0NBQ3RDLHlCQUF5QjtDQUN6QixxQkFBcUI7Q0FDckIsb0JBQW9CLE1BQU07Q0FDMUIsZ0JBQWdCLEtBQUssSUFBSSxDQUFDLEtBQUs7Q0FDL0I7Q0FDQSxvQkFBb0IsSUFBSSxTQUFTLEdBQUcsc0JBQXNCLENBQUMsRUFBRSxFQUFFO0NBQy9ELHdCQUF3QixFQUFFLEdBQUcsc0JBQXNCLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0NBQzNFLHFCQUFxQjtDQUNyQix5QkFBeUI7Q0FDekIsd0JBQXdCLFFBQVEsU0FBUztDQUN6Qyw0QkFBNEIsS0FBSyxzQkFBc0IsQ0FBQyxFQUFFO0NBQzFELGdDQUFnQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztDQUNyRCxnQ0FBZ0MsTUFBTTtDQUN0Qyw0QkFBNEIsS0FBSyxFQUFFO0NBQ25DLGdDQUFnQyxFQUFFLEdBQUcsR0FBRyxDQUFDO0NBQ3pDLGdDQUFnQyxNQUFNO0NBQ3RDLDRCQUE0QixLQUFLLHNCQUFzQixDQUFDLEVBQUU7Q0FDMUQsZ0NBQWdDLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0NBQ3JELGdDQUFnQyxNQUFNO0NBQ3RDLDRCQUE0QixLQUFLLHNCQUFzQixDQUFDLEVBQUU7Q0FDMUQsZ0NBQWdDLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0NBQ3JELGdDQUFnQyxNQUFNO0NBQ3RDLDRCQUE0QixLQUFLLHNCQUFzQixDQUFDLEVBQUU7Q0FDMUQ7Q0FDQSxnQ0FBZ0MsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDO0NBQzNELGdDQUFnQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztDQUMzRCxnQ0FBZ0MsTUFBTTtDQUN0Qyw0QkFBNEIsS0FBSyxzQkFBc0IsQ0FBQyxrQ0FBa0M7Q0FDMUYsZ0NBQWdDLE1BQU0sQ0FBQyxNQUFNLFlBQVksa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUNoRixnQ0FBZ0MsTUFBTTtDQUN0Qyw0QkFBNEIsS0FBSyxzQkFBc0IsQ0FBQywwQkFBMEI7Q0FDbEYsZ0NBQWdDLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0NBQ3JELGdDQUFnQyxNQUFNO0NBQ3RDLHlCQUF5QjtDQUN6QixxQkFBcUI7Q0FDckIsb0JBQW9CLE1BQU07Q0FDMUIsZ0JBQWdCLEtBQUssSUFBSSxDQUFDLEtBQUs7Q0FDL0I7Q0FDQSxvQkFBb0IsSUFBSSxTQUFTLEdBQUcsc0JBQXNCLENBQUMsR0FBRyxFQUFFO0NBQ2hFLHdCQUF3QixFQUFFLEdBQUcsc0JBQXNCLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0NBQzNFLHFCQUFxQjtDQUNyQix5QkFBeUI7Q0FDekIsd0JBQXdCLFFBQVEsU0FBUztDQUN6Qyw0QkFBNEIsS0FBSyxzQkFBc0IsQ0FBQyxHQUFHO0NBQzNELGdDQUFnQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztDQUNyRCxnQ0FBZ0MsTUFBTTtDQUN0Qyw0QkFBNEIsS0FBSyxzQkFBc0IsQ0FBQyxrQ0FBa0M7Q0FDMUYsZ0NBQWdDLE1BQU0sQ0FBQyxNQUFNLFlBQVksa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUNoRixnQ0FBZ0MsTUFBTTtDQUN0Qyw0QkFBNEIsS0FBSyxzQkFBc0IsQ0FBQywwQkFBMEI7Q0FDbEYsZ0NBQWdDLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0NBQ3JELGdDQUFnQyxNQUFNO0NBQ3RDLHlCQUF5QjtDQUN6QixxQkFBcUI7Q0FDckIsb0JBQW9CLE1BQU07Q0FDMUIsZ0JBQWdCLEtBQUssSUFBSSxDQUFDLFdBQVc7Q0FDckM7Q0FDQSxvQkFBb0IsT0FBTyxHQUFHLGdCQUFnQixDQUFDO0NBQy9DLG9CQUFvQixJQUFJLFNBQVMsR0FBRyxFQUFFLEVBQUU7Q0FDeEMsd0JBQXdCLEVBQUUsK0JBQStCLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUFDO0NBQzdGLHFCQUFxQjtDQUNyQix5QkFBeUI7Q0FDekIsd0JBQXdCLFFBQVEsU0FBUztDQUN6Qyw0QkFBNEIsS0FBSyxFQUFFO0NBQ25DLGdDQUFnQyxFQUFFLEdBQUcsR0FBRyxDQUFDO0NBQ3pDLGdDQUFnQyxNQUFNO0NBQ3RDLDRCQUE0QixLQUFLLHNCQUFzQixDQUFDLDBCQUEwQjtDQUNsRixnQ0FBZ0MsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7Q0FDckQsZ0NBQWdDLE1BQU07Q0FDdEMseUJBQXlCO0NBQ3pCLHFCQUFxQjtDQUNyQixvQkFBb0IsTUFBTTtDQUMxQixnQkFBZ0IsS0FBSyxJQUFJLENBQUMsV0FBVztDQUNyQztDQUNBLG9CQUFvQixPQUFPLEdBQUcsZ0JBQWdCLENBQUM7Q0FDL0Msb0JBQW9CLElBQUksU0FBUyxHQUFHLHNCQUFzQixDQUFDLEdBQUcsRUFBRTtDQUNoRSx3QkFBd0IsRUFBRSxHQUFHLHNCQUFzQixDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztDQUMzRSxxQkFBcUI7Q0FDckIseUJBQXlCO0NBQ3pCLHdCQUF3QixRQUFRLFNBQVM7Q0FDekMsNEJBQTRCLEtBQUssc0JBQXNCLENBQUMsR0FBRztDQUMzRCxnQ0FBZ0MsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7Q0FDckQsZ0NBQWdDLE1BQU07Q0FDdEMsNEJBQTRCLEtBQUssc0JBQXNCLENBQUMsa0NBQWtDO0NBQzFGO0NBQ0E7Q0FDQSxnQ0FBZ0MsTUFBTSxDQUFDLE1BQU0sWUFBWSxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ2hGLGdDQUFnQyxNQUFNO0NBQ3RDLDRCQUE0QixLQUFLLHNCQUFzQixDQUFDLDBCQUEwQjtDQUNsRixnQ0FBZ0MsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7Q0FDckQsZ0NBQWdDLE1BQU07Q0FDdEMseUJBQXlCO0NBQ3pCLHFCQUFxQjtDQUNyQixvQkFBb0IsTUFBTTtDQUMxQixhQUFhO0NBQ2I7Q0FDQSxZQUFZLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtDQUMzQjtDQUNBLGdCQUFnQixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0NBQ2xDLGFBQWE7Q0FDYixZQUFZLENBQUMsRUFBRSxDQUFDO0NBQ2hCLFNBQVM7Q0FDVCxLQUFLLENBQUM7Q0FDTjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLHNCQUFzQixDQUFDLGNBQWMsR0FBRyxVQUFVLElBQUksRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUU7Q0FDcEcsUUFBUSxJQUFJLFlBQVksR0FBRyxJQUFJLHVCQUF1QixDQUFDLE9BQU8sRUFBRSxDQUFDO0NBQ2pFLFFBQVEsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0NBQ3RCLFFBQVEsSUFBSSxLQUFLLFlBQVksQ0FBQyxDQUFDO0NBQy9CLFFBQVEsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDO0NBQ3hCLFFBQVEsUUFBUSxJQUFJO0NBQ3BCLFlBQVksS0FBSyxzQkFBc0IsQ0FBQywwQkFBMEI7Q0FDbEU7Q0FDQTtDQUNBLGdCQUFnQixJQUFJLHNCQUFzQixHQUFHLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQy9ELGdCQUFnQixJQUFJLFFBQVEsR0FBRyxTQUFTLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztDQUN0RCxnQkFBZ0IsT0FBTyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUU7Q0FDM0Qsb0JBQW9CLHNCQUFzQixDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDO0NBQy9EO0NBQ0Esb0JBQW9CLEtBQUssR0FBRyxHQUFHLEdBQUcsS0FBSyxHQUFHLFFBQVEsQ0FBQztDQUNuRCxvQkFBb0IsUUFBUSxHQUFHLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0NBQ3REO0NBQ0Esb0JBQW9CLFFBQVEsUUFBUTtDQUNwQyx3QkFBd0IsS0FBSyxzQkFBc0IsQ0FBQywwQkFBMEIsQ0FBQztDQUMvRSx3QkFBd0IsS0FBSyxzQkFBc0IsQ0FBQywwQkFBMEIsQ0FBQztDQUMvRSx3QkFBd0IsS0FBSyxzQkFBc0IsQ0FBQyw2QkFBNkIsQ0FBQztDQUNsRix3QkFBd0IsS0FBSyxzQkFBc0IsQ0FBQyw0QkFBNEIsQ0FBQztDQUNqRix3QkFBd0IsS0FBSyxzQkFBc0IsQ0FBQyxnQ0FBZ0MsQ0FBQztDQUNyRix3QkFBd0IsS0FBSyxzQkFBc0IsQ0FBQyxpQ0FBaUMsQ0FBQztDQUN0Rix3QkFBd0IsS0FBSyxzQkFBc0IsQ0FBQyx1QkFBdUI7Q0FDM0UsNEJBQTRCLFNBQVMsRUFBRSxDQUFDO0NBQ3hDLDRCQUE0QixHQUFHLEdBQUcsSUFBSSxDQUFDO0NBQ3ZDLDRCQUE0QixNQUFNO0NBQ2xDLHdCQUF3QjtDQUN4Qiw0QkFBNEIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRTtDQUNsRTtDQUNBO0NBQ0EsZ0NBQWdDLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUU7Q0FDcEU7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxvQ0FBb0MsWUFBWSxDQUFDLEtBQUssWUFBWSxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQzVILGlDQUFpQztDQUNqQyxnQ0FBZ0MsS0FBSyxHQUFHLENBQUMsQ0FBQztDQUMxQyxnQ0FBZ0MsS0FBSyxHQUFHLENBQUMsQ0FBQztDQUMxQyw2QkFBNkI7Q0FDN0IsNEJBQTRCLE1BQU07Q0FDbEMscUJBQXFCO0NBQ3JCLGlCQUFpQjtDQUNqQjtDQUNBLGdCQUFnQixJQUFJLFNBQVMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksUUFBUSxHQUFHLHNCQUFzQixDQUFDLDBCQUEwQixFQUFFO0NBQ2hILG9CQUFvQixzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQztDQUMvRCxpQkFBaUI7Q0FDakI7Q0FDQTtDQUNBO0NBQ0EsZ0JBQWdCLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Q0FDeEQsb0JBQW9CLFlBQVksQ0FBQyxLQUFLLFlBQVksc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUM3RSxpQkFBaUI7Q0FDakIsZ0JBQWdCLE1BQU07Q0FDdEIsWUFBWSxLQUFLLHNCQUFzQixDQUFDLDRCQUE0QjtDQUNwRTtDQUNBO0NBQ0EsZ0JBQWdCLE9BQU8sU0FBUyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtDQUN6RCxvQkFBb0IsSUFBSSxJQUFJLEdBQUcsU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7Q0FDdEQsb0JBQW9CLElBQUksSUFBSSxHQUFHLHNCQUFzQixDQUFDLDBCQUEwQixFQUFFO0NBQ2xGLHdCQUF3QixLQUFLLEVBQUUsQ0FBQztDQUNoQztDQUNBLHdCQUF3QixLQUFLLEdBQUcsR0FBRyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUM7Q0FDbkQscUJBQXFCO0NBQ3JCLHlCQUF5QjtDQUN6Qix3QkFBd0IsUUFBUSxJQUFJO0NBQ3BDLDRCQUE0QixLQUFLLHNCQUFzQixDQUFDLDBCQUEwQixDQUFDO0NBQ25GLDRCQUE0QixLQUFLLHNCQUFzQixDQUFDLDBCQUEwQixDQUFDO0NBQ25GLDRCQUE0QixLQUFLLHNCQUFzQixDQUFDLDZCQUE2QixDQUFDO0NBQ3RGLDRCQUE0QixLQUFLLHNCQUFzQixDQUFDLDRCQUE0QixDQUFDO0NBQ3JGLDRCQUE0QixLQUFLLHNCQUFzQixDQUFDLGdDQUFnQyxDQUFDO0NBQ3pGLDRCQUE0QixLQUFLLHNCQUFzQixDQUFDLGlDQUFpQyxDQUFDO0NBQzFGLDRCQUE0QixLQUFLLHNCQUFzQixDQUFDLHVCQUF1QjtDQUMvRSxnQ0FBZ0MsU0FBUyxFQUFFLENBQUM7Q0FDNUMsZ0NBQWdDLEdBQUcsR0FBRyxJQUFJLENBQUM7Q0FDM0MsZ0NBQWdDLE1BQU07Q0FDdEMseUJBQXlCO0NBQ3pCLHFCQUFxQjtDQUNyQixvQkFBb0IsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRTtDQUMxRDtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSx3QkFBd0IsS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRTtDQUM1RCw0QkFBNEIsWUFBWSxDQUFDLEtBQUssWUFBWSxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ3BILHlCQUF5QjtDQUN6Qix3QkFBd0IsS0FBSyxHQUFHLENBQUMsQ0FBQztDQUNsQyx3QkFBd0IsS0FBSyxHQUFHLENBQUMsQ0FBQztDQUNsQyxxQkFBcUI7Q0FDckIsaUJBQWlCO0NBQ2pCLGdCQUFnQixNQUFNO0NBQ3RCLFNBQVM7Q0FDVCxRQUFRLE1BQU0sQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztDQUM3RixRQUFRLE9BQU8sU0FBUyxDQUFDO0NBQ3pCLEtBQUssQ0FBQztDQUNOO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsSUFBSSxzQkFBc0IsQ0FBQyxpQkFBaUIsR0FBRyxVQUFVLFNBQVMsRUFBRSxTQUFTLFVBQVUsTUFBTSxFQUFFO0NBQy9GLFFBQVEsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0NBQ3RCLFFBQVEsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDO0NBQ3hCLFFBQVEsSUFBSSxnQkFBZ0IsR0FBRyxJQUFJLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0NBQzVGLFFBQVEsT0FBTyxTQUFTLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO0NBQ2pELFlBQVksSUFBSSxJQUFJLEdBQUcsU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7Q0FDOUMsWUFBWSxJQUFJLFNBQVMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7Q0FDNUMsZ0JBQWdCLEdBQUcsR0FBRyxJQUFJLENBQUM7Q0FDM0IsYUFBYTtDQUNiLFlBQVksSUFBSSxJQUFJLEdBQUcsc0JBQXNCLENBQUMsMEJBQTBCLEVBQUU7Q0FDMUUsZ0JBQWdCLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQztDQUMvQyxnQkFBZ0IsS0FBSyxFQUFFLENBQUM7Q0FDeEIsYUFBYTtDQUNiLGlCQUFpQjtDQUNqQixnQkFBZ0IsUUFBUSxJQUFJO0NBQzVCLG9CQUFvQixLQUFLLHNCQUFzQixDQUFDLDBCQUEwQixDQUFDO0NBQzNFLG9CQUFvQixLQUFLLHNCQUFzQixDQUFDLDBCQUEwQixDQUFDO0NBQzNFLG9CQUFvQixLQUFLLHNCQUFzQixDQUFDLDRCQUE0QixDQUFDO0NBQzdFLG9CQUFvQixLQUFLLHNCQUFzQixDQUFDLGdDQUFnQyxDQUFDO0NBQ2pGLG9CQUFvQixLQUFLLHNCQUFzQixDQUFDLGlDQUFpQyxDQUFDO0NBQ2xGLG9CQUFvQixLQUFLLHNCQUFzQixDQUFDLHVCQUF1QjtDQUN2RSx3QkFBd0IsU0FBUyxFQUFFLENBQUM7Q0FDcEMsd0JBQXdCLEdBQUcsR0FBRyxJQUFJLENBQUM7Q0FDbkMsd0JBQXdCLE1BQU07Q0FDOUIsaUJBQWlCO0NBQ2pCLGFBQWE7Q0FDYixZQUFZLElBQUksQ0FBQyxLQUFLLEdBQUcsc0JBQXNCLENBQUMscUJBQXFCLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxzQkFBc0IsQ0FBQyw2QkFBNkIsSUFBSSxHQUFHLEtBQUssS0FBSyxHQUFHLENBQUMsRUFBRTtDQUNuSztDQUNBO0NBQ0E7Q0FDQTtDQUNBLGdCQUFnQixNQUFNLENBQUMsTUFBTSxDQUFDLHNCQUFzQixDQUFDLHFCQUFxQixDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7Q0FDckcsZ0JBQWdCLEtBQUssR0FBRyxDQUFDLENBQUM7Q0FDMUIsYUFBYTtDQUNiLFNBQVM7Q0FDVCxRQUFRLE9BQU8sU0FBUyxDQUFDO0NBQ3pCLEtBQUssQ0FBQztDQUNOO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLHNCQUFzQixDQUFDLHFCQUFxQixHQUFHLFVBQVUsU0FBUyxFQUFFLEtBQUssRUFBRTtDQUMvRSxRQUFRLElBQUksTUFBTSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUNyQyxRQUFRLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Q0FDaEQsWUFBWSxNQUFNLElBQUksc0JBQXNCLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ2hHLFNBQVM7Q0FDVCxRQUFRLElBQUksWUFBWSxHQUFHLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztDQUM3QyxRQUFRLElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUU7Q0FDNUMsWUFBWSxNQUFNLElBQUksaUJBQWlCLENBQUMsT0FBTyxFQUFFLENBQUM7Q0FDbEQsU0FBUztDQUNULFFBQVEsT0FBTyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ3pDLEtBQUssQ0FBQztDQUNOLElBQUksc0JBQXNCLENBQUMsMEJBQTBCLEdBQUcsR0FBRyxDQUFDO0NBQzVELElBQUksc0JBQXNCLENBQUMsMEJBQTBCLEdBQUcsR0FBRyxDQUFDO0NBQzVELElBQUksc0JBQXNCLENBQUMsNkJBQTZCLEdBQUcsR0FBRyxDQUFDO0NBQy9ELElBQUksc0JBQXNCLENBQUMsNEJBQTRCLEdBQUcsR0FBRyxDQUFDO0NBQzlELElBQUksc0JBQXNCLENBQUMsZ0JBQWdCLEdBQUcsR0FBRyxDQUFDO0NBQ2xELElBQUksc0JBQXNCLENBQUMsbUJBQW1CLEdBQUcsR0FBRyxDQUFDO0NBQ3JELElBQUksc0JBQXNCLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQztDQUM3QyxJQUFJLHNCQUFzQixDQUFDLGdDQUFnQyxHQUFHLEdBQUcsQ0FBQztDQUNsRSxJQUFJLHNCQUFzQixDQUFDLGlDQUFpQyxHQUFHLEdBQUcsQ0FBQztDQUNuRSxJQUFJLHNCQUFzQixDQUFDLHVCQUF1QixHQUFHLEdBQUcsQ0FBQztDQUN6RCxJQUFJLHNCQUFzQixDQUFDLGtDQUFrQyxHQUFHLEdBQUcsQ0FBQztDQUNwRSxJQUFJLHNCQUFzQixDQUFDLHFCQUFxQixHQUFHLEVBQUUsQ0FBQztDQUN0RCxJQUFJLHNCQUFzQixDQUFDLHFDQUFxQyxHQUFHLENBQUMsQ0FBQztDQUNyRSxJQUFJLHNCQUFzQixDQUFDLHlDQUF5QyxHQUFHLENBQUMsQ0FBQztDQUN6RSxJQUFJLHNCQUFzQixDQUFDLHNDQUFzQyxHQUFHLENBQUMsQ0FBQztDQUN0RSxJQUFJLHNCQUFzQixDQUFDLGtDQUFrQyxHQUFHLENBQUMsQ0FBQztDQUNsRSxJQUFJLHNCQUFzQixDQUFDLHFDQUFxQyxHQUFHLENBQUMsQ0FBQztDQUNyRSxJQUFJLHNCQUFzQixDQUFDLHFDQUFxQyxHQUFHLENBQUMsQ0FBQztDQUNyRSxJQUFJLHNCQUFzQixDQUFDLG9DQUFvQyxHQUFHLENBQUMsQ0FBQztDQUNwRSxJQUFJLHNCQUFzQixDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7Q0FDbkMsSUFBSSxzQkFBc0IsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0NBQ25DLElBQUksc0JBQXNCLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztDQUNuQyxJQUFJLHNCQUFzQixDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7Q0FDbkMsSUFBSSxzQkFBc0IsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0NBQ25DLElBQUksc0JBQXNCLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztDQUNuQyxJQUFJLHNCQUFzQixDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUM7Q0FDcEMsSUFBSSxzQkFBc0IsQ0FBQyxXQUFXLEdBQUcsb0NBQW9DLENBQUM7Q0FDOUUsSUFBSSxzQkFBc0IsQ0FBQyxXQUFXLEdBQUcsNkJBQTZCLENBQUM7Q0FDdkU7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLHNCQUFzQixDQUFDLE1BQU0sR0FBRyxvQkFBb0IsRUFBRSxHQUFHLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQztDQUM5RSxJQUFJLHNCQUFzQixDQUFDLDRCQUE0QixHQUFHLENBQUMsQ0FBQztDQUM1RCxJQUFJLE9BQU8sc0JBQXNCLENBQUM7Q0FDbEMsQ0FBQyxFQUFFLENBQUMsQ0FBQztDQUNMLGVBQWUsR0FBRyxzQkFBc0IsQ0FBQzs7Ozs7Q0N4d0J6QztDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLFFBQVEsR0FBRyxDQUFDVCxjQUFJLElBQUlBLGNBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDLEVBQUU7Q0FDdEQsSUFBSSxJQUFJLENBQUMsR0FBRyxPQUFPLE1BQU0sS0FBSyxVQUFVLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0NBQ2xGLElBQUksSUFBSSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQzVCLElBQUksSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsTUFBTSxLQUFLLFFBQVEsRUFBRSxPQUFPO0NBQ2xELFFBQVEsSUFBSSxFQUFFLFlBQVk7Q0FDMUIsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7Q0FDL0MsWUFBWSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztDQUNwRCxTQUFTO0NBQ1QsS0FBSyxDQUFDO0NBQ04sSUFBSSxNQUFNLElBQUksU0FBUyxDQUFDLENBQUMsR0FBRyx5QkFBeUIsR0FBRyxpQ0FBaUMsQ0FBQyxDQUFDO0NBQzNGLENBQUMsQ0FBQztDQUNGLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0NBQzlEO0NBQ0E7QUFDNkQ7Q0FDN0Q7QUFDeUQ7Q0FDekQ7QUFDNkQ7Q0FDN0Q7QUFDNkQ7Q0FDN0Q7QUFDZ0Q7Q0FDaEQ7QUFDd0Q7Q0FDeEQ7QUFDNkM7QUFDNEM7QUFDcEM7QUFDWTtBQUMxQjtBQUNRO0FBQ2tCO0FBQ0U7Q0FDbkU7QUFDa0Q7Q0FDbEQ7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLHFCQUFxQixrQkFBa0IsWUFBWTtDQUN2RCxJQUFJLFNBQVMscUJBQXFCLEdBQUc7Q0FDckMsS0FBSztDQUNMO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLHFCQUFxQixDQUFDLE1BQU0sR0FBRyxVQUFVLEtBQUssRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRTtDQUN4SixRQUFRLElBQUksV0FBVyxHQUFHLElBQUksYUFBYSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztDQUMzSCxRQUFRLElBQUksc0JBQXNCLEdBQUcsSUFBSSxDQUFDO0NBQzFDLFFBQVEsSUFBSSx1QkFBdUIsR0FBRyxJQUFJLENBQUM7Q0FDM0MsUUFBUSxJQUFJLGVBQWUsQ0FBQztDQUM1QixRQUFRLEtBQUssSUFBSSxTQUFTLGVBQWUsSUFBSSxHQUFHLFNBQVMsR0FBRyxLQUFLLEVBQUU7Q0FDbkUsWUFBWSxJQUFJLFlBQVksSUFBSSxJQUFJLEVBQUU7Q0FDdEMsZ0JBQWdCLHNCQUFzQixHQUFHLHFCQUFxQixDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0NBQ2pLLGFBQWE7Q0FDYixZQUFZLElBQUksYUFBYSxJQUFJLElBQUksRUFBRTtDQUN2QyxnQkFBZ0IsdUJBQXVCLEdBQUcscUJBQXFCLENBQUMscUJBQXFCLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDLENBQUM7Q0FDcEssYUFBYTtDQUNiLFlBQVksZUFBZSxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxzQkFBc0IsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO0NBQzNHLFlBQVksSUFBSSxlQUFlLElBQUksSUFBSSxFQUFFO0NBQ3pDLGdCQUFnQixNQUFNLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0NBQ3hFLGFBQWE7Q0FDYixZQUFZLElBQUksU0FBUyxHQUFHLGVBQWUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztDQUM3RCxZQUFZLElBQUksU0FBUyxJQUFJLFNBQVMsSUFBSSxJQUFJO0NBQzlDLGlCQUFpQixTQUFTLENBQUMsT0FBTyxFQUFFLEdBQUcsV0FBVyxDQUFDLE9BQU8sRUFBRSxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRTtDQUM5RyxnQkFBZ0IsV0FBVyxHQUFHLFNBQVMsQ0FBQztDQUN4QyxhQUFhO0NBQ2IsaUJBQWlCO0NBQ2pCLGdCQUFnQixNQUFNO0NBQ3RCLGFBQWE7Q0FDYixTQUFTO0NBQ1QsUUFBUSxlQUFlLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0NBQ3BELFFBQVEsSUFBSSxnQkFBZ0IsR0FBRyxlQUFlLENBQUMscUJBQXFCLEVBQUUsR0FBRyxDQUFDLENBQUM7Q0FDM0UsUUFBUSxlQUFlLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxFQUFFLHNCQUFzQixDQUFDLENBQUM7Q0FDNUUsUUFBUSxlQUFlLENBQUMsd0JBQXdCLENBQUMsZ0JBQWdCLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztDQUM1RixRQUFRLElBQUksV0FBVyxHQUFHLHNCQUFzQixJQUFJLElBQUksQ0FBQztDQUN6RCxRQUFRLEtBQUssSUFBSSxrQkFBa0IsV0FBVyxDQUFDLEVBQUUsa0JBQWtCLElBQUksZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsRUFBRTtDQUMvRyxZQUFZLElBQUksYUFBYSxHQUFHLFdBQVcsR0FBRyxrQkFBa0IsR0FBRyxnQkFBZ0IsR0FBRyxrQkFBa0IsQ0FBQztDQUN6RyxZQUFZLElBQUksZUFBZSxDQUFDLHdCQUF3QixDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsU0FBUyxFQUFFO0NBQ2xHO0NBQ0EsZ0JBQWdCLFNBQVM7Q0FDekIsYUFBYTtDQUNiLFlBQVksSUFBSSxxQkFBcUIsR0FBRyxLQUFLLENBQUMsQ0FBQztDQUMvQyxZQUFZLElBQUksYUFBYSxLQUFLLENBQUMsSUFBSSxhQUFhLEtBQUssZ0JBQWdCLEVBQUU7Q0FDM0UsZ0JBQWdCLHFCQUFxQixHQUFHLElBQUksbUNBQW1DLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxhQUFhLEtBQUssQ0FBQyxDQUFDLENBQUM7Q0FDMUgsYUFBYTtDQUNiLGlCQUFpQjtDQUNqQixnQkFBZ0IscUJBQXFCLEdBQUcsSUFBSSx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7Q0FDekYsYUFBYTtDQUNiLFlBQVksZUFBZSxDQUFDLHdCQUF3QixDQUFDLGFBQWEsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0NBQzNGLFlBQVksSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUM7Q0FDakMsWUFBWSxJQUFJLG1CQUFtQixHQUFHLFdBQVcsQ0FBQztDQUNsRDtDQUNBLFlBQVksS0FBSyxJQUFJLFFBQVEsV0FBVyxXQUFXLENBQUMsT0FBTyxFQUFFLEVBQUUsUUFBUSxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRTtDQUM5RyxnQkFBZ0IsV0FBVyxHQUFHLHFCQUFxQixDQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQztDQUMxSCxnQkFBZ0IsSUFBSSxXQUFXLEdBQUcsQ0FBQyxJQUFJLFdBQVcsR0FBRyxXQUFXLENBQUMsT0FBTyxFQUFFLEVBQUU7Q0FDNUUsb0JBQW9CLElBQUksbUJBQW1CLEtBQUssQ0FBQyxDQUFDLEVBQUU7Q0FDcEQsd0JBQXdCLFNBQVM7Q0FDakMscUJBQXFCO0NBQ3JCLG9CQUFvQixXQUFXLEdBQUcsbUJBQW1CLENBQUM7Q0FDdEQsaUJBQWlCO0NBQ2pCLGdCQUFnQixJQUFJLFFBQVEsR0FBRyxxQkFBcUIsQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxXQUFXLENBQUMsT0FBTyxFQUFFLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztDQUNqTSxnQkFBZ0IsSUFBSSxRQUFRLElBQUksSUFBSSxFQUFFO0NBQ3RDLG9CQUFvQixxQkFBcUIsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0NBQzFFLG9CQUFvQixtQkFBbUIsR0FBRyxXQUFXLENBQUM7Q0FDdEQsb0JBQW9CLGdCQUFnQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7Q0FDdkYsb0JBQW9CLGdCQUFnQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7Q0FDdkYsaUJBQWlCO0NBQ2pCLGFBQWE7Q0FDYixTQUFTO0NBQ1QsUUFBUSxPQUFPLHFCQUFxQixDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxDQUFDO0NBQzFFLEtBQUssQ0FBQztDQUNOO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsSUFBSSxxQkFBcUIsQ0FBQyxLQUFLLEdBQUcsVUFBVSxzQkFBc0IsRUFBRSx1QkFBdUIsRUFBRTtDQUM3RixRQUFRLElBQUksc0JBQXNCLElBQUksSUFBSSxJQUFJLHVCQUF1QixJQUFJLElBQUksRUFBRTtDQUMvRSxZQUFZLE9BQU8sSUFBSSxDQUFDO0NBQ3hCLFNBQVM7Q0FDVCxRQUFRLElBQUksZUFBZSxHQUFHLHFCQUFxQixDQUFDLGtCQUFrQixDQUFDLHNCQUFzQixFQUFFLHVCQUF1QixDQUFDLENBQUM7Q0FDeEgsUUFBUSxJQUFJLGVBQWUsSUFBSSxJQUFJLEVBQUU7Q0FDckMsWUFBWSxPQUFPLElBQUksQ0FBQztDQUN4QixTQUFTO0NBQ1QsUUFBUSxJQUFJLFdBQVcsR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxpQkFBaUIsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLHFCQUFxQixDQUFDLGlCQUFpQixDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQztDQUN6TCxRQUFRLE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0NBQzNFLEtBQUssQ0FBQztDQUNOO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLElBQUkscUJBQXFCLENBQUMsaUJBQWlCLEdBQUcsVUFBVSxrQkFBa0IsRUFBRTtDQUM1RSxRQUFRLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQztDQUNwQixRQUFRLElBQUksa0JBQWtCLElBQUksSUFBSSxFQUFFO0NBQ3hDLFlBQVksT0FBTyxJQUFJLENBQUM7Q0FDeEIsU0FBUztDQUNULFFBQVEsSUFBSSxVQUFVLEdBQUcsa0JBQWtCLENBQUMsYUFBYSxFQUFFLENBQUM7Q0FDNUQsUUFBUSxJQUFJLFVBQVUsSUFBSSxJQUFJLEVBQUU7Q0FDaEMsWUFBWSxPQUFPLElBQUksQ0FBQztDQUN4QixTQUFTO0NBQ1QsUUFBUSxJQUFJLFlBQVksR0FBRyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7Q0FDcEUsUUFBUSxJQUFJLGdCQUFnQixHQUFHLENBQUMsQ0FBQztDQUNqQyxRQUFRLElBQUk7Q0FDWixZQUFZLEtBQUssSUFBSSxZQUFZLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLGNBQWMsR0FBRyxZQUFZLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLGNBQWMsR0FBRyxZQUFZLENBQUMsSUFBSSxFQUFFLEVBQUU7Q0FDNUosZ0JBQWdCLElBQUksU0FBUyxHQUFHLGNBQWMsQ0FBQyxLQUFLLFNBQVM7Q0FDN0QsZ0JBQWdCLGdCQUFnQixJQUFJLFlBQVksR0FBRyxTQUFTLENBQUM7Q0FDN0QsZ0JBQWdCLElBQUksU0FBUyxHQUFHLENBQUMsRUFBRTtDQUNuQyxvQkFBb0IsTUFBTTtDQUMxQixpQkFBaUI7Q0FDakIsYUFBYTtDQUNiLFNBQVM7Q0FDVCxRQUFRLE9BQU8sS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7Q0FDakQsZ0JBQWdCO0NBQ2hCLFlBQVksSUFBSTtDQUNoQixnQkFBZ0IsSUFBSSxjQUFjLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxLQUFLLEVBQUUsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztDQUNoSCxhQUFhO0NBQ2Isb0JBQW9CLEVBQUUsSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7Q0FDakQsU0FBUztDQUNULFFBQVEsSUFBSSxTQUFTLEdBQUcsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7Q0FDMUQsUUFBUSxLQUFLLElBQUksR0FBRyxXQUFXLENBQUMsRUFBRSxnQkFBZ0IsR0FBRyxDQUFDLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRTtDQUN6RixZQUFZLGdCQUFnQixFQUFFLENBQUM7Q0FDL0IsU0FBUztDQUNULFFBQVEsSUFBSSxjQUFjLEdBQUcsQ0FBQyxDQUFDO0NBQy9CLFFBQVEsS0FBSyxJQUFJLEdBQUcsV0FBVyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFO0NBQ3ZFLFlBQVksY0FBYyxJQUFJLFlBQVksR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7Q0FDN0QsWUFBWSxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7Q0FDckMsZ0JBQWdCLE1BQU07Q0FDdEIsYUFBYTtDQUNiLFNBQVM7Q0FDVCxRQUFRLEtBQUssSUFBSSxHQUFHLFdBQVcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsY0FBYyxHQUFHLENBQUMsSUFBSSxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFO0NBQzFHLFlBQVksY0FBYyxFQUFFLENBQUM7Q0FDN0IsU0FBUztDQUNULFFBQVEsT0FBTyxrQkFBa0IsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7Q0FDakksS0FBSyxDQUFDO0NBQ04sSUFBSSxxQkFBcUIsQ0FBQyxNQUFNLEdBQUcsVUFBVSxNQUFNLEVBQUU7Q0FDckQsUUFBUSxJQUFJLEdBQUcsRUFBRSxFQUFFLENBQUM7Q0FDcEIsUUFBUSxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztDQUMxQixRQUFRLElBQUk7Q0FDWixZQUFZLEtBQUssSUFBSSxRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFVBQVUsR0FBRyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFVBQVUsR0FBRyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUU7Q0FDaEksZ0JBQWdCLElBQUksS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLFNBQVM7Q0FDckQsZ0JBQWdCLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztDQUNyRCxhQUFhO0NBQ2IsU0FBUztDQUNULFFBQVEsT0FBTyxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtDQUNqRCxnQkFBZ0I7Q0FDaEIsWUFBWSxJQUFJO0NBQ2hCLGdCQUFnQixJQUFJLFVBQVUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEtBQUssRUFBRSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0NBQ2hHLGFBQWE7Q0FDYixvQkFBb0IsRUFBRSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtDQUNqRCxTQUFTO0NBQ1QsUUFBUSxPQUFPLFFBQVEsQ0FBQztDQUN4QixLQUFLLENBQUM7Q0FDTixJQUFJLHFCQUFxQixDQUFDLGtCQUFrQixHQUFHLFVBQVUsc0JBQXNCLEVBQUUsdUJBQXVCLEVBQUU7Q0FDMUcsUUFBUSxJQUFJLG1CQUFtQixDQUFDO0NBQ2hDLFFBQVEsSUFBSSxzQkFBc0IsSUFBSSxJQUFJO0NBQzFDLFlBQVksQ0FBQyxtQkFBbUIsR0FBRyxzQkFBc0IsQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLElBQUksRUFBRTtDQUN6RixZQUFZLE9BQU8sdUJBQXVCLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyx1QkFBdUIsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0NBQ3pHLFNBQVM7Q0FDVCxRQUFRLElBQUksb0JBQW9CLENBQUM7Q0FDakMsUUFBUSxJQUFJLHVCQUF1QixJQUFJLElBQUk7Q0FDM0MsWUFBWSxDQUFDLG9CQUFvQixHQUFHLHVCQUF1QixDQUFDLGtCQUFrQixFQUFFLEtBQUssSUFBSSxFQUFFO0NBQzNGLFlBQVksT0FBTyxtQkFBbUIsQ0FBQztDQUN2QyxTQUFTO0NBQ1QsUUFBUSxJQUFJLG1CQUFtQixDQUFDLGNBQWMsRUFBRSxLQUFLLG9CQUFvQixDQUFDLGNBQWMsRUFBRTtDQUMxRixZQUFZLG1CQUFtQixDQUFDLHVCQUF1QixFQUFFLEtBQUssb0JBQW9CLENBQUMsdUJBQXVCLEVBQUU7Q0FDNUcsWUFBWSxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsS0FBSyxvQkFBb0IsQ0FBQyxXQUFXLEVBQUUsRUFBRTtDQUN0RixZQUFZLE9BQU8sSUFBSSxDQUFDO0NBQ3hCLFNBQVM7Q0FDVCxRQUFRLE9BQU8sbUJBQW1CLENBQUM7Q0FDbkMsS0FBSyxDQUFDO0NBQ04sSUFBSSxxQkFBcUIsQ0FBQyxxQkFBcUIsR0FBRyxVQUFVLEtBQUssRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRTtDQUM3SSxRQUFRLElBQUksa0JBQWtCLEdBQUcsSUFBSSxtQ0FBbUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0NBQzNHLFFBQVEsS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtDQUM1QyxZQUFZLElBQUksU0FBUyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0NBQzdDLFlBQVksSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDeEUsWUFBWSxLQUFLLElBQUksUUFBUSxXQUFXLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFO0NBQ3BILGdCQUFnQixRQUFRLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRSxFQUFFLFFBQVEsSUFBSSxTQUFTLEVBQUU7Q0FDMUUsZ0JBQWdCLElBQUksUUFBUSxHQUFHLHFCQUFxQixDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0NBQ3hLLGdCQUFnQixJQUFJLFFBQVEsSUFBSSxJQUFJLEVBQUU7Q0FDdEMsb0JBQW9CLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7Q0FDdkUsb0JBQW9CLElBQUksV0FBVyxFQUFFO0NBQ3JDLHdCQUF3QixXQUFXLEdBQUcsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDO0NBQzNELHFCQUFxQjtDQUNyQix5QkFBeUI7Q0FDekIsd0JBQXdCLFdBQVcsR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7Q0FDekQscUJBQXFCO0NBQ3JCLGlCQUFpQjtDQUNqQixhQUFhO0NBQ2IsU0FBUztDQUNULFFBQVEsT0FBTyxrQkFBa0IsQ0FBQztDQUNsQyxLQUFLLENBQUM7Q0FDTjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLElBQUkscUJBQXFCLENBQUMsbUJBQW1CLEdBQUcsVUFBVSxlQUFlLEVBQUUsYUFBYSxFQUFFO0NBQzFGLFFBQVEsSUFBSSxlQUFlLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ2xELFFBQVEsSUFBSSxpQkFBaUIsR0FBRyxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUM7Q0FDM0QsUUFBUSxJQUFJLDJCQUEyQixHQUFHLGVBQWUsQ0FBQyxxQkFBcUIsRUFBRTtDQUNqRixZQUFZLGVBQWUsQ0FBQyxrQkFBa0IsRUFBRTtDQUNoRCxZQUFZLHFCQUFxQixDQUFDLHNCQUFzQixDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUM7Q0FDOUYsUUFBUSxJQUFJLGlCQUFpQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Q0FDNUMsWUFBWSxJQUFJLDJCQUEyQixHQUFHLENBQUMsSUFBSSwyQkFBMkIsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLHdCQUF3QixFQUFFO0NBQ2xJLGdCQUFnQixNQUFNLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0NBQ3hFLGFBQWE7Q0FDYixZQUFZLGVBQWUsQ0FBQyxRQUFRLENBQUMsMkJBQTJCLENBQUMsQ0FBQztDQUNsRSxTQUFTO0NBQ1QsYUFBYSxJQUFJLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxLQUFLLDJCQUEyQixFQUFFO0NBQ3ZFO0NBQ0EsWUFBWSxlQUFlLENBQUMsUUFBUSxDQUFDLDJCQUEyQixDQUFDLENBQUM7Q0FDbEUsU0FBUztDQUNULEtBQUssQ0FBQztDQUNOO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLHFCQUFxQixDQUFDLG1CQUFtQixHQUFHLFVBQVUsZUFBZSxFQUFFO0NBQzNFLFFBQVEsSUFBSSxhQUFhLEdBQUcscUJBQXFCLENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUFDLENBQUM7Q0FDdkYsUUFBUSxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLEVBQUUsYUFBYSxDQUFDLENBQUM7Q0FDbEYsUUFBUSxJQUFJLFFBQVEsMkJBQTJCLElBQUksS0FBSyxFQUFFLENBQUM7Q0FDM0QsUUFBUSxJQUFJLFNBQVMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxlQUFlLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxlQUFlLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO0NBQ3ZILFFBQVEsSUFBSSx3QkFBd0IsbUJBQW1CLEVBQUUsQ0FBQztDQUMxRCxRQUFRLElBQUksb0JBQW9CLDJCQUEyQixJQUFJLEtBQUssRUFBRSxDQUFDO0NBQ3ZFLFFBQVEsS0FBSyxJQUFJLEdBQUcsV0FBVyxDQUFDLEVBQUUsR0FBRyxHQUFHLGVBQWUsQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFO0NBQ3JGLFlBQVksS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFDLEVBQUUsTUFBTSxHQUFHLGVBQWUsQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFO0NBQ3JHLGdCQUFnQixJQUFJLE1BQU0sR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0NBQ3ZFLGdCQUFnQixJQUFJLGFBQWEsR0FBRyxHQUFHLEdBQUcsZUFBZSxDQUFDLHFCQUFxQixFQUFFLEdBQUcsTUFBTSxDQUFDO0NBQzNGLGdCQUFnQixJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO0NBQ3pDLG9CQUFvQixRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0NBQ2pELGlCQUFpQjtDQUNqQixxQkFBcUIsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtDQUM5QyxvQkFBb0IsU0FBUyxDQUFDLGFBQWEsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUN6RCxpQkFBaUI7Q0FDakIscUJBQXFCO0NBQ3JCLG9CQUFvQixvQkFBb0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7Q0FDN0Qsb0JBQW9CLHdCQUF3QixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztDQUMxRCxpQkFBaUI7Q0FDakIsYUFBYTtDQUNiLFNBQVM7Q0FDVCxRQUFRLElBQUksb0JBQW9CLEdBQUcsSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLENBQUM7Q0FDOUUsUUFBUSxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsb0JBQW9CLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0NBQ3RFLFlBQVksb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEdBQUcsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDbEUsU0FBUztDQUNULFFBQVEsT0FBTyxxQkFBcUIsQ0FBQyxzQ0FBc0MsQ0FBQyxlQUFlLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxTQUFTLEVBQUUsY0FBYyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsY0FBYyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0NBQ3hQLEtBQUssQ0FBQztDQUNOO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsSUFBSSxxQkFBcUIsQ0FBQyxzQ0FBc0MsR0FBRyxVQUFVLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixFQUFFO0NBQ3ZKLFFBQVEsSUFBSSxtQkFBbUIsR0FBRyxJQUFJLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztDQUMxRSxRQUFRLElBQUksS0FBSyxHQUFHLEdBQUcsQ0FBQztDQUN4QixRQUFRLE9BQU8sS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFO0NBQzVCLFlBQVksS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtDQUN6RSxnQkFBZ0IsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUNqRyxhQUFhO0NBQ2IsWUFBWSxJQUFJO0NBQ2hCLGdCQUFnQixPQUFPLHFCQUFxQixDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO0NBQy9GLGFBQWE7Q0FDYixZQUFZLE9BQU8sR0FBRyxFQUFFO0NBQ3hCLGdCQUFnQixJQUFJLE9BQU8sR0FBRyxHQUFHLFlBQVksbUJBQW1CLENBQUMsT0FBTyxDQUFDO0NBQ3pFLGdCQUFnQixJQUFJLENBQUMsT0FBTyxFQUFFO0NBQzlCLG9CQUFvQixNQUFNLEdBQUcsQ0FBQztDQUM5QixpQkFBaUI7Q0FDakIsYUFBYTtDQUNiLFlBQVksSUFBSSxtQkFBbUIsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO0NBQ2xELGdCQUFnQixNQUFNLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0NBQ3hFLGFBQWE7Q0FDYixZQUFZLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Q0FDekUsZ0JBQWdCLElBQUksbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEdBQUcsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtDQUNqRixvQkFBb0IsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztDQUM3QyxvQkFBb0IsTUFBTTtDQUMxQixpQkFBaUI7Q0FDakIscUJBQXFCO0NBQ3JCLG9CQUFvQixtQkFBbUIsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7Q0FDL0Msb0JBQW9CLElBQUksQ0FBQyxLQUFLLG1CQUFtQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Q0FDOUQsd0JBQXdCLE1BQU0sbUJBQW1CLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLENBQUM7Q0FDaEYscUJBQXFCO0NBQ3JCLGlCQUFpQjtDQUNqQixhQUFhO0NBQ2IsU0FBUztDQUNULFFBQVEsTUFBTSxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztDQUNoRSxLQUFLLENBQUM7Q0FDTixJQUFJLHFCQUFxQixDQUFDLG1CQUFtQixHQUFHLFVBQVUsZUFBZSxFQUFFO0NBQzNFLFFBQVEsSUFBSSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7Q0FDN0I7Q0FDQTtDQUNBLFFBQVEsSUFBSSxhQUFhLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxlQUFlLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxPQUFPLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0NBQ3pLLFFBQVEsS0FBSyxJQUFJLEdBQUcsV0FBVyxDQUFDLEVBQUUsR0FBRyxHQUFHLGFBQWEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUU7Q0FDckUsWUFBWSxLQUFLLElBQUksUUFBUSxXQUFXLENBQUMsRUFBRSxRQUFRLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsRUFBRTtDQUM3RixnQkFBZ0IsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDO0NBQzVFLGFBQWE7Q0FDYixTQUFTO0NBQ1QsUUFBUSxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7Q0FDdkIsUUFBUSxJQUFJO0NBQ1osWUFBWSxLQUFLLElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMseUJBQXlCLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7Q0FDM0gsZ0JBQWdCLElBQUkscUJBQXFCLEdBQUcsRUFBRSxDQUFDLEtBQUssMkJBQTJCO0NBQy9FLGdCQUFnQixJQUFJLHFCQUFxQixJQUFJLElBQUksRUFBRTtDQUNuRCxvQkFBb0IsSUFBSTtDQUN4Qix3QkFBd0IsS0FBSyxJQUFJLEVBQUUsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLEVBQUUsUUFBUSxDQUFDLHFCQUFxQixDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO0NBQ2hKLDRCQUE0QixJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUMsS0FBSyxjQUFjO0NBQ2pFLDRCQUE0QixJQUFJLFFBQVEsSUFBSSxJQUFJLEVBQUU7Q0FDbEQsZ0NBQWdDLElBQUksU0FBUyxHQUFHLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztDQUN4RSxnQ0FBZ0MsSUFBSSxTQUFTLElBQUksQ0FBQyxFQUFFO0NBQ3BELG9DQUFvQyxJQUFJLFNBQVMsSUFBSSxhQUFhLENBQUMsTUFBTSxFQUFFO0NBQzNFO0NBQ0Esd0NBQXdDLFNBQVM7Q0FDakQscUNBQXFDO0NBQ3JDLG9DQUFvQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0NBQ25HLGlDQUFpQztDQUNqQyw2QkFBNkI7Q0FDN0IseUJBQXlCO0NBQ3pCLHFCQUFxQjtDQUNyQixvQkFBb0IsT0FBTyxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtDQUM3RCw0QkFBNEI7Q0FDNUIsd0JBQXdCLElBQUk7Q0FDNUIsNEJBQTRCLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Q0FDaEYseUJBQXlCO0NBQ3pCLGdDQUFnQyxFQUFFLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO0NBQzdELHFCQUFxQjtDQUNyQixpQkFBaUI7Q0FDakIsZ0JBQWdCLE1BQU0sRUFBRSxDQUFDO0NBQ3pCLGFBQWE7Q0FDYixTQUFTO0NBQ1QsUUFBUSxPQUFPLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO0NBQ2pELGdCQUFnQjtDQUNoQixZQUFZLElBQUk7Q0FDaEIsZ0JBQWdCLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Q0FDcEUsYUFBYTtDQUNiLG9CQUFvQixFQUFFLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO0NBQ2pELFNBQVM7Q0FDVCxRQUFRLE9BQU8sYUFBYSxDQUFDO0NBQzdCLEtBQUssQ0FBQztDQUNOLElBQUkscUJBQXFCLENBQUMsb0JBQW9CLEdBQUcsVUFBVSxlQUFlLEVBQUUsYUFBYSxFQUFFO0NBQzNGLFFBQVEsT0FBTyxhQUFhLElBQUksQ0FBQyxJQUFJLGFBQWEsSUFBSSxlQUFlLENBQUMscUJBQXFCLEVBQUUsR0FBRyxDQUFDLENBQUM7Q0FDbEcsS0FBSyxDQUFDO0NBQ04sSUFBSSxxQkFBcUIsQ0FBQyxjQUFjLEdBQUcsVUFBVSxlQUFlLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUU7Q0FDNUcsUUFBUSxJQUFJLEdBQUcsRUFBRSxFQUFFLENBQUM7Q0FDcEIsUUFBUSxJQUFJLE1BQU0sR0FBRyxXQUFXLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0NBQzFDLFFBQVEsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDO0NBQzVCLFFBQVEsSUFBSSxxQkFBcUIsQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLEVBQUUsYUFBYSxHQUFHLE1BQU0sQ0FBQyxFQUFFO0NBQ2pHLFlBQVksUUFBUSxHQUFHLGVBQWUsQ0FBQyx3QkFBd0IsQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0NBQzlHLFNBQVM7Q0FDVCxRQUFRLElBQUksUUFBUSxJQUFJLElBQUksRUFBRTtDQUM5QixZQUFZLE9BQU8sV0FBVyxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsR0FBRyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7Q0FDM0UsU0FBUztDQUNULFFBQVEsUUFBUSxHQUFHLGVBQWUsQ0FBQyx3QkFBd0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztDQUN2RyxRQUFRLElBQUksUUFBUSxJQUFJLElBQUksRUFBRTtDQUM5QixZQUFZLE9BQU8sV0FBVyxHQUFHLFFBQVEsQ0FBQyxTQUFTLEVBQUUsR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7Q0FDM0UsU0FBUztDQUNULFFBQVEsSUFBSSxxQkFBcUIsQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLEVBQUUsYUFBYSxHQUFHLE1BQU0sQ0FBQyxFQUFFO0NBQ2pHLFlBQVksUUFBUSxHQUFHLGVBQWUsQ0FBQyx3QkFBd0IsQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUM7Q0FDcEgsU0FBUztDQUNULFFBQVEsSUFBSSxRQUFRLElBQUksSUFBSSxFQUFFO0NBQzlCLFlBQVksT0FBTyxXQUFXLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxHQUFHLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztDQUMzRSxTQUFTO0NBQ1QsUUFBUSxJQUFJLGNBQWMsR0FBRyxDQUFDLENBQUM7Q0FDL0IsUUFBUSxPQUFPLHFCQUFxQixDQUFDLG9CQUFvQixDQUFDLGVBQWUsRUFBRSxhQUFhLEdBQUcsTUFBTSxDQUFDLEVBQUU7Q0FDcEcsWUFBWSxhQUFhLElBQUksTUFBTSxDQUFDO0NBQ3BDLFlBQVksSUFBSTtDQUNoQixnQkFBZ0IsS0FBSyxJQUFJLEVBQUUsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLEVBQUUsUUFBUSxDQUFDLGVBQWUsQ0FBQyx3QkFBd0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtDQUMxSyxvQkFBb0IsSUFBSSxtQkFBbUIsR0FBRyxFQUFFLENBQUMsS0FBSyxjQUFjO0NBQ3BFLG9CQUFvQixJQUFJLG1CQUFtQixJQUFJLElBQUksRUFBRTtDQUNyRCx3QkFBd0IsT0FBTyxDQUFDLFdBQVcsR0FBRyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsR0FBRyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUU7Q0FDN0csNEJBQTRCLE1BQU07Q0FDbEMsZ0NBQWdDLGNBQWM7Q0FDOUMsaUNBQWlDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxHQUFHLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7Q0FDbEcscUJBQXFCO0NBQ3JCLGlCQUFpQjtDQUNqQixhQUFhO0NBQ2IsWUFBWSxPQUFPLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO0NBQ3JELG9CQUFvQjtDQUNwQixnQkFBZ0IsSUFBSTtDQUNwQixvQkFBb0IsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztDQUN4RSxpQkFBaUI7Q0FDakIsd0JBQXdCLEVBQUUsSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7Q0FDckQsYUFBYTtDQUNiLFlBQVksY0FBYyxFQUFFLENBQUM7Q0FDN0IsU0FBUztDQUNULFFBQVEsT0FBTyxXQUFXLEdBQUcsZUFBZSxDQUFDLGNBQWMsRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLGVBQWUsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztDQUNySCxLQUFLLENBQUM7Q0FDTixJQUFJLHFCQUFxQixDQUFDLGNBQWMsR0FBRyxVQUFVLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFO0NBQzFKLFFBQVEsV0FBVyxHQUFHLHFCQUFxQixDQUFDLHlCQUF5QixDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7Q0FDdkk7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxRQUFRLElBQUksY0FBYyxHQUFHLHFCQUFxQixDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7Q0FDdEksUUFBUSxJQUFJLGNBQWMsSUFBSSxJQUFJLEVBQUU7Q0FDcEMsWUFBWSxPQUFPLElBQUksQ0FBQztDQUN4QixTQUFTO0NBQ1QsUUFBUSxJQUFJLFNBQVMsQ0FBQztDQUN0QixRQUFRLElBQUksZ0JBQWdCLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7Q0FDdkUsUUFBUSxJQUFJLFdBQVcsRUFBRTtDQUN6QixZQUFZLFNBQVMsR0FBRyxXQUFXLEdBQUcsZ0JBQWdCLENBQUM7Q0FDdkQsU0FBUztDQUNULGFBQWE7Q0FDYixZQUFZLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsR0FBRyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtDQUN4RSxnQkFBZ0IsSUFBSSxRQUFRLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ2pELGdCQUFnQixjQUFjLENBQUMsQ0FBQyxDQUFDLEdBQUcsY0FBYyxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0NBQ2xGLGdCQUFnQixjQUFjLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDO0NBQ3pFLGFBQWE7Q0FDYixZQUFZLFNBQVMsR0FBRyxXQUFXLENBQUM7Q0FDcEMsWUFBWSxXQUFXLEdBQUcsU0FBUyxHQUFHLGdCQUFnQixDQUFDO0NBQ3ZELFNBQVM7Q0FDVDtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLFFBQVEsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDLEVBQUU7Q0FDNUc7Q0FDQTtDQUNBLFlBQVksT0FBTyxJQUFJLENBQUM7Q0FDeEIsU0FBUztDQUNULFFBQVEsSUFBSSxZQUFZLEdBQUcsdUJBQXVCLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsQ0FBQztDQUMzRixRQUFRLElBQUksUUFBUSxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO0NBQ3hFLFFBQVEsSUFBSSxRQUFRLEtBQUssQ0FBQyxDQUFDLEVBQUU7Q0FDN0IsWUFBWSxPQUFPLElBQUksQ0FBQztDQUN4QixTQUFTO0NBQ1QsUUFBUSxPQUFPLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixDQUFDLHVCQUF1QixDQUFDLFlBQVksQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0NBQ3JJLEtBQUssQ0FBQztDQUNOLElBQUkscUJBQXFCLENBQUMsaUJBQWlCLEdBQUcsVUFBVSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRTtDQUN6SCxRQUFRLElBQUksV0FBVyxHQUFHLFdBQVcsQ0FBQztDQUN0QyxRQUFRLElBQUksY0FBYyxHQUFHLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQy9DLFFBQVEsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0NBQzdCLFFBQVEsSUFBSSxTQUFTLEdBQUcsV0FBVyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztDQUM3QyxRQUFRLElBQUksa0JBQWtCLEdBQUcsV0FBVyxDQUFDO0NBQzdDLFFBQVEsT0FBTyxDQUFDLFdBQVcsR0FBRyxXQUFXLEdBQUcsU0FBUyxHQUFHLFdBQVcsSUFBSSxTQUFTO0NBQ2hGLFlBQVksWUFBWSxHQUFHLGNBQWMsQ0FBQyxNQUFNLEVBQUU7Q0FDbEQsWUFBWSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxLQUFLLGtCQUFrQixFQUFFO0NBQ3pFLGdCQUFnQixjQUFjLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztDQUMvQyxnQkFBZ0IsV0FBVyxJQUFJLFNBQVMsQ0FBQztDQUN6QyxhQUFhO0NBQ2IsaUJBQWlCO0NBQ2pCLGdCQUFnQixZQUFZLEVBQUUsQ0FBQztDQUMvQixnQkFBZ0Isa0JBQWtCLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQztDQUN6RCxhQUFhO0NBQ2IsU0FBUztDQUNULFFBQVEsSUFBSSxZQUFZLEtBQUssY0FBYyxDQUFDLE1BQU07Q0FDbEQsYUFBYSxDQUFDLFdBQVcsTUFBTSxXQUFXLEdBQUcsU0FBUyxHQUFHLFNBQVMsQ0FBQztDQUNuRSxnQkFBZ0IsWUFBWSxLQUFLLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUU7Q0FDN0QsWUFBWSxPQUFPLGNBQWMsQ0FBQztDQUNsQyxTQUFTO0NBQ1QsUUFBUSxPQUFPLElBQUksQ0FBQztDQUNwQixLQUFLLENBQUM7Q0FDTixJQUFJLHFCQUFxQixDQUFDLHNCQUFzQixHQUFHLFVBQVUsY0FBYyxFQUFFO0NBQzdFLFFBQVEsT0FBTyxDQUFDLElBQUksY0FBYyxDQUFDO0NBQ25DLEtBQUssQ0FBQztDQUNOLElBQUkscUJBQXFCLENBQUMseUJBQXlCLEdBQUcsVUFBVSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxFQUFFO0NBQ3pJLFFBQVEsSUFBSSxvQkFBb0IsR0FBRyxtQkFBbUIsQ0FBQztDQUN2RCxRQUFRLElBQUksU0FBUyxHQUFHLFdBQVcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7Q0FDN0M7Q0FDQSxRQUFRLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Q0FDNUMsWUFBWSxPQUFPLENBQUMsV0FBVyxHQUFHLG9CQUFvQixJQUFJLFNBQVMsR0FBRyxvQkFBb0IsR0FBRyxTQUFTO0NBQ3RHLGdCQUFnQixXQUFXLEtBQUssS0FBSyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxRQUFRLENBQUMsRUFBRTtDQUMzRSxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLG1CQUFtQixHQUFHLG9CQUFvQixDQUFDLEdBQUcscUJBQXFCLENBQUMsa0JBQWtCLEVBQUU7Q0FDckgsb0JBQW9CLE9BQU8sbUJBQW1CLENBQUM7Q0FDL0MsaUJBQWlCO0NBQ2pCLGdCQUFnQixvQkFBb0IsSUFBSSxTQUFTLENBQUM7Q0FDbEQsYUFBYTtDQUNiLFlBQVksU0FBUyxHQUFHLENBQUMsU0FBUyxDQUFDO0NBQ25DLFlBQVksV0FBVyxHQUFHLENBQUMsV0FBVyxDQUFDO0NBQ3ZDLFNBQVM7Q0FDVCxRQUFRLE9BQU8sb0JBQW9CLENBQUM7Q0FDcEMsS0FBSyxDQUFDO0NBQ04sSUFBSSxxQkFBcUIsQ0FBQyxpQkFBaUIsR0FBRyxVQUFVLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRTtDQUMxRyxRQUFRLE9BQU8sZ0JBQWdCLEdBQUcscUJBQXFCLENBQUMsa0JBQWtCLElBQUksWUFBWTtDQUMxRixZQUFZLFlBQVksSUFBSSxnQkFBZ0IsR0FBRyxxQkFBcUIsQ0FBQyxrQkFBa0IsQ0FBQztDQUN4RixLQUFLLENBQUM7Q0FDTjtDQUNBO0NBQ0E7Q0FDQTtDQUNBLElBQUkscUJBQXFCLENBQUMsZUFBZSxHQUFHLFVBQVUsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUU7Q0FDcEYsUUFBUSxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO0NBQ3BDLFlBQVksTUFBTSxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztDQUNoRSxTQUFTO0NBQ1QsUUFBUSxJQUFJLGNBQWMsR0FBRyxDQUFDLEtBQUssT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDO0NBQ2hELFFBQVEsSUFBSSxvQkFBb0IsR0FBRyxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxjQUFjLENBQUMsQ0FBQztDQUM1RyxRQUFRLHFCQUFxQixDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQztDQUM3RTtDQUNBLFFBQVEsSUFBSSxhQUFhLEdBQUdPLDBCQUF3QixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQztDQUM3RixRQUFRLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0NBQy9ELFFBQVEsYUFBYSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7Q0FDbkQsUUFBUSxPQUFPLGFBQWEsQ0FBQztDQUM3QixLQUFLLENBQUM7Q0FDTjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLHFCQUFxQixDQUFDLGFBQWEsR0FBRyxVQUFVLFNBQVMsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFO0NBQ3pGLFFBQVEsSUFBSSxRQUFRLElBQUksSUFBSTtDQUM1QixZQUFZLFFBQVEsQ0FBQyxNQUFNLEdBQUcsY0FBYyxHQUFHLENBQUMsR0FBRyxxQkFBcUIsQ0FBQyxVQUFVO0NBQ25GLFlBQVksY0FBYyxHQUFHLENBQUM7Q0FDOUIsWUFBWSxjQUFjLEdBQUcscUJBQXFCLENBQUMsZ0JBQWdCLEVBQUU7Q0FDckU7Q0FDQSxZQUFZLE1BQU0sbUJBQW1CLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLENBQUM7Q0FDcEUsU0FBUztDQUNULFFBQVEsT0FBTyxxQkFBcUIsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxjQUFjLEVBQUUsUUFBUSxDQUFDLENBQUM7Q0FDakcsS0FBSyxDQUFDO0NBQ047Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLHFCQUFxQixDQUFDLG1CQUFtQixHQUFHLFVBQVUsU0FBUyxFQUFFLGNBQWMsRUFBRTtDQUNyRixRQUFRLElBQUksU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Q0FDbEM7Q0FDQTtDQUNBLFlBQVksTUFBTSxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztDQUNoRSxTQUFTO0NBQ1Q7Q0FDQTtDQUNBO0NBQ0EsUUFBUSxJQUFJLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUM3QyxRQUFRLElBQUksaUJBQWlCLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRTtDQUNsRCxZQUFZLE1BQU0saUJBQWlCLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUM7Q0FDaEUsU0FBUztDQUNULFFBQVEsSUFBSSxpQkFBaUIsS0FBSyxDQUFDLEVBQUU7Q0FDckM7Q0FDQSxZQUFZLElBQUksY0FBYyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUU7Q0FDbkQsZ0JBQWdCLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLGNBQWMsQ0FBQztDQUNqRSxhQUFhO0NBQ2IsaUJBQWlCO0NBQ2pCLGdCQUFnQixNQUFNLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0NBQ3BFLGFBQWE7Q0FDYixTQUFTO0NBQ1QsS0FBSyxDQUFDO0NBQ04sSUFBSSxxQkFBcUIsQ0FBQyxzQkFBc0IsR0FBRyxVQUFVLFFBQVEsRUFBRTtDQUN2RSxRQUFRLElBQUksTUFBTSxHQUFHLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ3ZDLFFBQVEsSUFBSSxhQUFhLEdBQUcsQ0FBQyxDQUFDO0NBQzlCLFFBQVEsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7Q0FDbEMsUUFBUSxPQUFPLElBQUksRUFBRTtDQUNyQixZQUFZLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxNQUFNLGFBQWEsRUFBRTtDQUNwRCxnQkFBZ0IsYUFBYSxHQUFHLFFBQVEsR0FBRyxHQUFHLENBQUM7Q0FDL0MsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO0NBQ3BCLGdCQUFnQixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7Q0FDM0Isb0JBQW9CLE1BQU07Q0FDMUIsaUJBQWlCO0NBQ2pCLGFBQWE7Q0FDYixZQUFZLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0NBQ3hCLFlBQVksUUFBUSxLQUFLLENBQUMsQ0FBQztDQUMzQixTQUFTO0NBQ1QsUUFBUSxPQUFPLE1BQU0sQ0FBQztDQUN0QixLQUFLLENBQUM7Q0FDTixJQUFJLHFCQUFxQixDQUFDLHVCQUF1QixHQUFHLFVBQVUsUUFBUSxFQUFFO0NBQ3hFLFFBQVEsSUFBSSxRQUFRLFlBQVksVUFBVSxFQUFFO0NBQzVDLFlBQVksT0FBTyxJQUFJLENBQUMsa0NBQWtDLENBQUMsUUFBUSxDQUFDLENBQUM7Q0FDckUsU0FBUztDQUNULFFBQVEsT0FBTyxJQUFJLENBQUMsOEJBQThCLENBQUMsUUFBUSxDQUFDLENBQUM7Q0FDN0QsS0FBSyxDQUFDO0NBQ04sSUFBSSxxQkFBcUIsQ0FBQyw4QkFBOEIsR0FBRyxVQUFVLFFBQVEsRUFBRTtDQUMvRSxRQUFRLE9BQU8scUJBQXFCLENBQUMsdUJBQXVCLENBQUMscUJBQXFCLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztDQUNySCxLQUFLLENBQUM7Q0FDTixJQUFJLHFCQUFxQixDQUFDLGtDQUFrQyxHQUFHLFVBQVUsY0FBYyxFQUFFO0NBQ3pGLFFBQVEsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0NBQ3ZHLEtBQUssQ0FBQztDQUNOLElBQUkscUJBQXFCLENBQUMsUUFBUSxHQUFHLFVBQVUsYUFBYSxFQUFFO0NBQzlELFFBQVEsSUFBSSxTQUFTLEdBQUcsSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7Q0FDbEQ7Q0FDQSxRQUFRLEtBQUssSUFBSSxHQUFHLFdBQVcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxhQUFhLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFO0NBQ3JFLFlBQVksU0FBUyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUM7Q0FDL0MsWUFBWSxLQUFLLElBQUksTUFBTSxXQUFXLENBQUMsRUFBRSxNQUFNLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRTtDQUN2RixnQkFBZ0IsSUFBSSxZQUFZLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0NBQzlELGdCQUFnQixJQUFJLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO0NBQzFELG9CQUFvQixTQUFTLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztDQUN2RCxpQkFBaUI7Q0FDakIscUJBQXFCO0NBQ3JCLG9CQUFvQixTQUFTLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ3JJLGlCQUFpQjtDQUNqQixhQUFhO0NBQ2IsWUFBWSxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0NBQ25DLFNBQVM7Q0FDVCxRQUFRLE9BQU8sU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0NBQ3BDO0NBQ0EsS0FBSyxDQUFDO0NBQ04sY0FBYyxxQkFBcUIsQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQUM7Q0FDM0QsY0FBYyxxQkFBcUIsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO0NBQ25ELGNBQWMscUJBQXFCLENBQUMsZ0JBQWdCLEdBQUcsR0FBRyxDQUFDO0NBQzNELGNBQWMscUJBQXFCLENBQUMsZUFBZSxHQUFHLElBQUksaUJBQWlCLENBQUMsT0FBTyxFQUFFLENBQUM7Q0FDdEYsSUFBSSxPQUFPLHFCQUFxQixDQUFDO0NBQ2pDLENBQUMsRUFBRSxDQUFDLENBQUM7Q0FDTCxlQUFlLEdBQUcscUJBQXFCLENBQUM7Ozs7O0NDL3JCeEM7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsSUFBSSxRQUFRLEdBQUcsQ0FBQ1AsY0FBSSxJQUFJQSxjQUFJLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxFQUFFO0NBQ3RELElBQUksSUFBSSxDQUFDLEdBQUcsT0FBTyxNQUFNLEtBQUssVUFBVSxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztDQUNsRixJQUFJLElBQUksQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUM1QixJQUFJLElBQUksQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE1BQU0sS0FBSyxRQUFRLEVBQUUsT0FBTztDQUNsRCxRQUFRLElBQUksRUFBRSxZQUFZO0NBQzFCLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO0NBQy9DLFlBQVksT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7Q0FDcEQsU0FBUztDQUNULEtBQUssQ0FBQztDQUNOLElBQUksTUFBTSxJQUFJLFNBQVMsQ0FBQyxDQUFDLEdBQUcseUJBQXlCLEdBQUcsaUNBQWlDLENBQUMsQ0FBQztDQUMzRixDQUFDLENBQUM7Q0FDRixNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztDQUM5RDtDQUNBO0FBQ2tEO0NBQ2xEO0FBQzBEO0NBQzFEO0FBQ3NEO0NBQ3REO0FBQzBEO0NBQzFEO0FBQ29DO0NBQ3BDO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7QUFDK0M7QUFDSjtBQUNpQjtBQUNaO0FBQ3lCO0NBQ3pFO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLFlBQVksa0JBQWtCLFlBQVk7Q0FDOUMsSUFBSSxTQUFTLFlBQVksR0FBRztDQUM1QixLQUFLO0NBQ0w7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQSxJQUFJLFlBQVksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLFVBQVUsS0FBSyxFQUFFLEtBQUssRUFBRTtDQUM1RCxRQUFRLElBQUksS0FBSyxLQUFLLEtBQUssQ0FBQyxFQUFFLEVBQUUsS0FBSyxHQUFHLElBQUksQ0FBQyxFQUFFO0NBQy9DLFFBQVEsSUFBSSxNQUFNLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0NBQzlELFFBQVEsSUFBSSxNQUFNLElBQUksSUFBSSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUU7Q0FDeEUsWUFBWSxNQUFNLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0NBQ3BFLFNBQVM7Q0FDVCxRQUFRLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ3pCLEtBQUssQ0FBQztDQUNOO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsSUFBSSxZQUFZLENBQUMsU0FBUyxDQUFDLGNBQWMsR0FBRyxVQUFVLEtBQUssRUFBRSxLQUFLLEVBQUU7Q0FDcEUsUUFBUSxJQUFJLEtBQUssS0FBSyxLQUFLLENBQUMsRUFBRSxFQUFFLEtBQUssR0FBRyxJQUFJLENBQUMsRUFBRTtDQUMvQyxRQUFRLElBQUk7Q0FDWixZQUFZLE9BQU8sWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0NBQzNELFNBQVM7Q0FDVCxRQUFRLE9BQU8sT0FBTyxFQUFFO0NBQ3hCLFlBQVksSUFBSSxPQUFPLFlBQVksaUJBQWlCLENBQUMsT0FBTyxJQUFJLE9BQU8sWUFBWSxtQkFBbUIsQ0FBQyxPQUFPLEVBQUU7Q0FDaEgsZ0JBQWdCLE1BQU0sbUJBQW1CLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLENBQUM7Q0FDeEUsYUFBYTtDQUNiLFlBQVksTUFBTSxPQUFPLENBQUM7Q0FDMUIsU0FBUztDQUNULEtBQUssQ0FBQztDQUNOO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0EsSUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLFVBQVUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7Q0FDNUQsUUFBUSxJQUFJLEdBQUcsRUFBRSxFQUFFLENBQUM7Q0FDcEIsUUFBUSxJQUFJLE9BQU8sR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO0NBQ2xDLFFBQVEsSUFBSSxjQUFjLEdBQUdHLFlBQVUsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7Q0FDdkYsUUFBUSxJQUFJO0NBQ1osWUFBWSxLQUFLLElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO0NBQzFHLGdCQUFnQixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO0NBQ3RDLGdCQUFnQixJQUFJLGFBQWEsR0FBRyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxFQUFFLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0NBQ3JPLGdCQUFnQixJQUFJLE1BQU0sR0FBRyxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxFQUFFLGFBQWEsQ0FBQyxXQUFXLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLGVBQWUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7Q0FDNUosZ0JBQWdCLE1BQU0sQ0FBQyxXQUFXLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLHNCQUFzQixFQUFFLGFBQWEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0NBQ3BILGdCQUFnQixJQUFJLG9CQUFvQixHQUFHLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztDQUNwRSxnQkFBZ0IsSUFBSSxvQkFBb0IsSUFBSSxJQUFJLEVBQUU7Q0FDbEQsb0JBQW9CLE1BQU0sQ0FBQyxXQUFXLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLG9CQUFvQixDQUFDLENBQUM7Q0FDakgsaUJBQWlCO0NBQ2pCLGdCQUFnQixPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0NBQ3JDLGFBQWE7Q0FDYixTQUFTO0NBQ1QsUUFBUSxPQUFPLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO0NBQ2pELGdCQUFnQjtDQUNoQixZQUFZLElBQUk7Q0FDaEIsZ0JBQWdCLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Q0FDcEUsYUFBYTtDQUNiLG9CQUFvQixFQUFFLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO0NBQ2pELFNBQVM7Q0FDVCxRQUFRLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0NBQ3ZELEtBQUssQ0FBQztDQUNOLElBQUksWUFBWSxDQUFDLFdBQVcsR0FBRyxVQUFVLEVBQUUsRUFBRSxFQUFFLEVBQUU7Q0FDakQsUUFBUSxJQUFJLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLElBQUksRUFBRTtDQUN0QyxZQUFZLE9BQU8sQ0FBQyxDQUFDO0NBQ3JCLFNBQVM7Q0FDVCxRQUFRLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzNELEtBQUssQ0FBQztDQUNOLElBQUksWUFBWSxDQUFDLFdBQVcsR0FBRyxVQUFVLEVBQUUsRUFBRSxFQUFFLEVBQUU7Q0FDakQsUUFBUSxJQUFJLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLElBQUksRUFBRTtDQUN0QyxZQUFZLE9BQU8sU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7Q0FDL0MsU0FBUztDQUNULFFBQVEsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDM0QsS0FBSyxDQUFDO0NBQ04sSUFBSSxZQUFZLENBQUMsbUJBQW1CLEdBQUcsVUFBVSxDQUFDLEVBQUU7Q0FDcEQsUUFBUSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FB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SSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDOUMsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDOUMsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDOUMsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDOUMsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDOUMsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDOUMsS0FBSyxDQUFDLENBQUM7Q0FDUCxJQUFJLFVBQVUsQ0FBQywyQkFBMkIsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO0NBQ3hELFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUN4QyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDeEMsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQ3hDLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUN4QyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDeEMsS0FBSyxDQUFDLENBQUM7Q0FDUDtDQUNBLElBQUksVUFBVSxDQUFDLDRDQUE0QyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7Q0FDekUsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUNyRCxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDcEQsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ3BELFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUNwRCxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDcEQsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ3BELFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDcEQsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUNwRCxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ3BELFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDcEQsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUNwRCxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ3BELFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDcEQsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDcEQsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDcEQsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDcEQsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDcEQsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDcEQsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDcEQsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDcEQsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ3BELFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUNwRCxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDckQsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ3JELFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUNyRCxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDckQsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ3JELFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDckQsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUN0RCxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ3RELFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDdEQsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUN0RCxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ3RELFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDdEQsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7Q0FDdkQsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7Q0FDdkQsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7Q0FDdkQsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7Q0FDdkQsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7Q0FDdkQsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7Q0FDdkQsS0FBSyxDQUFDLENBQUM7Q0FDUDtDQUNBLElBQUksVUFBVSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7Q0FDbEQsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQy9CLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUMvQixRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDL0IsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQy9CLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUMvQixRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDL0IsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQy9CLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUMvQixRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDL0IsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQy9CLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUMvQixRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDL0IsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQy9CLFFBQVEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUMvQixRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDL0IsS0FB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QVEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDM0MsS0FBSyxDQUFDO0NBQ047Q0FDQSxJQUFJLE9BQU8sQ0FBQyxrQkFBa0IsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDO0NBQ2pELFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0NBQ3RFLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0NBQ3RFLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7Q0FDdEUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMs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VUFBVSxHQUFHLE1BQU0sQ0FBQztDQUN0QyxTQUFTO0NBQ1QsUUFBUSxJQUFJLFNBQVMsS0FBSyxJQUFJLEVBQUU7Q0FDaEMsWUFBWSxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztDQUMzQixTQUFTO0NBQ1QsUUFBUSxJQUFJLFNBQVMsS0FBSyxHQUFHLEVBQUU7Q0FDL0IsWUFBWSxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztDQUMxQixTQUFTO0NBQ1QsUUFBUSxJQUFJLEtBQUssQ0FBQyxJQUFJLEdBQUcsS0FBSyxHQUFHLEtBQUssQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDLEdBQUcsR0FBRyxNQUFNLEdBQUcsS0FBSyxDQUFDLFVBQVUsRUFBRTtDQUMzRixZQUFZLE1BQU0sSUFBSSwwQkFBMEIsQ0FBQyxPQUFPLENBQUMsZ0RBQWdELENBQUMsQ0FBQztDQUMzRyxTQUFTO0NBQ1QsUUFBUSxPQUFPLEtBQUssQ0FBQztDQUNyQixLQUFLO0NBQ0w7Q0FDQSxJQUFJLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDLFVBQVUsR0FBRyxFQUFFO0NBQ3BFLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUU7Q0FDNUMsWUFBWSxNQUFNLElBQUksMEJBQTBCLENBQUMsT0FBTyxDQUFDLHNDQUFzQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0NBQ3JHLFNBQVM7Q0FDVCxRQUFRLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztDQUNwQyxRQUFRLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLEtBQUssU0FBUyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsS0FBSyxFQUFFO0NBQ3JFLFlBQVksR0FBRyxHQUFHLElBQUksaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7Q0FDL0MsU0FBUztDQUNULFFBQVEsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFD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S0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRTtDQUNuQyxLQUFLLENBQUM7Q0FDTixJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUM7Q0FDcEIsUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRTtDQUN0QixRQUFRLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRTtDQUNsQyxRQUFRLENBQUM7Q0FDVCxRQUFRLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRTtDQUNsQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUU7Q0FDaEQ7Q0FDQSxLQUFLLENBQUM7Q0FDTixJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUM7Q0FDcEIsUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRTtDQUN0QixRQUFRLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFO0NBQ3RCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFO0NBQ25DLFFBQVEsQ0FBQztDQUNULFFBQVEsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7Q0FDdEIsS0FBSyxDQUFDO0NBQ04sSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDO0NBQ3BCLFFBQVEsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7Q0FDdEIsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUU7Q0FDbkMsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUU7Q0FDbkMsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUU7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O0NBQ2QsUUFBUSxNQUFNO0NBQ2QsUUFBUSxJQUFJO0NBQ1osUUFBUSxJQUFJO0NBQ1osUUFBUSxJQUFJO0NBQ1osUUFBUSxNQUFNO0NBQ2QsUUFBUSxJQUFJO0NBQ1osUUFBUSxJQUFJO0NBQ1osUUFBUSxNQUFNO0NBQ2QsUUFBUSxNQUFNO0NBQ2QsUUFBUSxNQUFNO0NBQ2QsUUFBUSxNQUFNO0NBQ2QsUUFBUSxNQUFNO0NBQ2QsUUFBUSxHQUFHO0NBQ1gsUUFBUSxJQUFJO0NBQ1osUUFBUSxHQUFHO0NBQ1gsUUFBUSxHQUFHO0NBQ1gsUUFBUSxHQUFHO0NBQ1gsUUFBUSxHQUFHO0NBQ1gsUUFBUSxHQUFHO0NBQ1gsUUFBUSxNQUFNO0NBQ2QsS0FBSyxDQUFDO0NBQ04sSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtDQUNoRCxRQUFRLFFBQVEsQ0FBQ0EsZ0JBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztDQUNyRixLQUFLO0NBQ0wsSUFBSSxJQUFJLFVBQVUsR0FBRztDQUNyQixRQUFRLE1BQU07Q0FDZCxRQUFRLElBQUk7Q0FDWixRQUFRLE1BQU07Q0FDZCxRQUFRLE1BQU07Q0FDZCxRQUFRLE1BQU07Q0FDZCxRQUFRLE1BQU07Q0FDZCxRQUFRLEdBQUc7Q0FDWCxRQUFRLElBQUk7Q0FDWixRQUFRLEdBQUc7Q0FDWCxRQUFRLEdBQUc7Q0FDWCxRQUFRLEdBQUc7Q0FDWCxRQUFRLEdBQUc7Q0FDWCxRQUFRLElBQUk7Q0FDWixRQUFRLEdBQUc7Q0FDWCxRQUFRLEdBQUc7Q0FDWCxRQUFRLEdBQUc7Q0FDWCxRQUFRLEdBQUc7Q0FDWCxRQUFRLEdBQUc7Q0FDWCxRQUFRLEdBQUc7Q0FDWCxRQUFRLEdBQUc7Q0FDWCxRQUFRLEdBQUc7Q0FDWCxRQUFRLEdBQUc7Q0FDWCxRQUFR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",!1),w=function(){return new Y},T=function(g){var I=g.constraints,e=g.onError,Q=g.onLoad,B=g.onScan,s=g.resolution,i=U(g,["constraints","onError","onLoad","onScan","resolution"]),c=JSON.stringify(I),A=Object(t.useRef)(null),l=Object(t.useRef)(null),a=Object(t.useRef)(document.createElement("canvas")),r=Object(t.useRef)(null),o=Object(t.useRef)(),d=Object(t.useRef)(!1),u=Object(t.useMemo)(w,[w]);Object(t.useEffect)((function(){return function(){u.terminate()}}),[u]),Object(t.useEffect)((function(){u.onmessage=function(g){B&&B(g.data?n(n({},g.data),{},{canvas:a.current}):null),d.current=!1}}),[B,u]);var y=Object(t.useCallback)((function(){var g=l.current&&l.current.readyState===l.current.HAVE_ENOUGH_DATA;if(!d.current&&g){d.current=!0;var I=l.current.videoWidth,e=l.current.videoHeight,t=s/(I>e?I:e);e*=t,I*=t,a.current.width=I,a.current.height=e,r.current=a.current.getContext("2d"),r.current.drawImage(l.current,0,0,I,e);var C=r.current.getImageData(0,0,I,e);u.postMessage(C)}o.current=requestAnimationFrame(y)}),[s,u]);return Object(t.useEffect)((function(){var g=JSON.parse(c),I=!0;return navigator.mediaDevices.getUserMedia(g).then((function(g){if(!I)return null;A.current=g,l.current.srcObject=g,l.current.setAttribute("playsinline",!0),l.current.play(),Q&&Q(),o.current=requestAnimationFrame(y)})).catch((function(g){return I?e(g):null})),function(){cancelAnimationFrame(o.current),A.current&&A.current.getTracks().forEach((function(g){return g.stop()})),A.current=null,I=!1}}),[y,c,e,Q]),C.a.createElement("video",F({ref:l},i))};T.propTypes={constraints:H.object,onError:H.func.isRequired,onLoad:H.func,onScan:H.func.isRequired,resolution:H.number},T.defaultProps={constraints:{audio:!1,video:!0},resolution:640}},function(g,I,e){"use strict";I.__esModule=!0;var t=I.getUrl=function(){var g={},I=g,e=function(){return I!==g?I:I="undefined"!==typeof window?window.URL||window.webkitURL:g};return e.reset=function(){return I=g},e}(),C=I.getHasBlobSupport=function(){return"undefined"!==typeof window&&"function"===typeof window.Blob&&"function"===typeof t().createObjectURL&&function(){try{return new window.Blob,!0}catch(g){return!1}}()},Q=I.hasBlobSupport=function(){var g=!1,I=function(){return g||(g=C())};return I.reset=function(){return g=!1},I}(),F=I.getLinkHref=function(g){return Q()?t().createObjectURL(new window.Blob([g],{type:"text/css"})):null};I.createGetCachedLinkHref=function(){return function(){var g=null,I=null;return function(e){return e===I?g:g=(I=e)?F(e):null}}()}},function(g,I,e){"use strict";I.__esModule=!0,I.setGlobalOptions=I.getCoalescedOption=I.GLOBAL_OPTIONS=void 0;var t=e(520),C=I.GLOBAL_OPTIONS={hasSourceMap:!t.IS_PRODUCTION,isCompressed:!0,isMinified:t.IS_PRODUCTION,isPrefixed:!0};I.getCoalescedOption=function(g,I){return"boolean"===typeof g[I]?g[I]:C[I]},I.setGlobalOptions=function(g){return Object.keys(g).forEach((function(I){return C.hasOwnProperty(I)&&"boolean"===typeof g[I]&&(C[I]=g[I])}))}},function(g,I,e){"use strict";I.__esModule=!0,I.getRenderedStyles=I.getProcessedStyles=void 0;var t=F(e(559)),C=F(e(560)),Q=e(520);function F(g){return g&&g.__esModule?g:{default:g}}var B=I.getProcessedStyles=function(g,I){var e=I.isCompressed,t=I.isPrefixed;return new C.default({compress:e,global:!1,keyframe:!1,prefix:t})("",g)};I.getRenderedStyles=function(g,I){return I.isMinified?B(g,I):(0,t.default)(B(g,I),Q.BEAUTIFY_OPTIONS)}},,,,function(g,I,e){"use strict";e.r(I);var t=e(423);e.d(I,"default",(function(){return t.a}))},function(g,I,e){"use strict";e.r(I);var t=e(422);e.d(I,"default",(function(){return t.a}))},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=t(e(281)),Q=e(119),F=t(e(1284));var B=function(g,I){return(0,Q.withStyles)(g,(0,C.default)({defaultTheme:F.default},I))};I.default=B},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=(0,t(e(1285)).default)();I.default=C},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;t(e(695));var C=t(e(339)),Q=e(39),F=t(e(1287)),B=t(e(1288)),n=t(e(1289)),U=t(e(1299)),s=t(e(1300)),i=t(e(1301)),c=t(e(1302)),A=t(e(1303)),l=t(e(1304));var a=function(){for(var g=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},I=g.breakpoints,e=void 0===I?{}:I,t=g.mixins,a=void 0===t?{}:t,r=g.palette,o=void 0===r?{}:r,d=g.spacing,u=g.typography,y=void 0===u?{}:u,b=(0,C.default)(g,["breakpoints","mixins","palette","spacing","typography"]),Z=(0,n.default)(o),m=(0,F.default)(e),x=(0,c.default)(d),R=(0,Q.deepmerge)({breakpoints:m,direction:"ltr",mixins:(0,B.default)(m,x,a),overrides:{},palette:Z,props:{},shadows:s.default,typography:(0,U.default)(Z,y),spacing:x,shape:i.default,transitions:A.default,zIndex:l.default},b),S=arguments.length,G=new Array(S>1?S-1:0),L=1;L<S;L++)G[L-1]=arguments[L];return R=G.reduce((function(g,I){return(0,Q.deepmerge)(g,I)}),R)};I.default=a},function(g,I){g.exports=function(g,I){if(null==g)return{};var e,t,C={},Q=Object.keys(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||(C[e]=g[e]);return C}},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=function(g){var I=g.values,e=void 0===I?{xs:0,sm:600,md:960,lg:1280,xl:1920}:I,t=g.unit,B=void 0===t?"px":t,n=g.step,U=void 0===n?5:n,s=(0,Q.default)(g,["values","unit","step"]);function i(g){var I="number"===typeof e[g]?e[g]:g;return"@media (min-width:".concat(I).concat(B,")")}function c(g,I){var t=F.indexOf(I);return t===F.length-1?i(g):"@media (min-width:".concat("number"===typeof e[g]?e[g]:g).concat(B,") and ")+"(max-width:".concat((-1!==t&&"number"===typeof e[F[t+1]]?e[F[t+1]]:I)-U/100).concat(B,")")}return(0,C.default)({keys:F,values:e,up:i,down:function(g){var I=F.indexOf(g)+1,t=e[F[I]];return I===F.length?i("xs"):"@media (max-width:".concat(("number"===typeof t&&I>0?t:g)-U/100).concat(B,")")},between:c,only:function(g){return c(g,g)},width:function(g){return e[g]}},s)},I.keys=void 0;var C=t(e(281)),Q=t(e(339)),F=["xs","sm","md","lg","xl"];I.keys=F},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=function(g,I,e){var t;return(0,Q.default)({gutters:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,Q.default)({paddingLeft:I(2),paddingRight:I(2)},e,(0,C.default)({},g.up("sm"),(0,Q.default)({paddingLeft:I(3),paddingRight:I(3)},e[g.up("sm")])))},toolbar:(t={minHeight:56},(0,C.default)(t,"".concat(g.up("xs")," and (orientation: landscape)"),{minHeight:48}),(0,C.default)(t,g.up("sm"),{minHeight:64}),t)},e)};var C=t(e(695)),Q=t(e(281))},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=function(g){var I=g.primary,e=void 0===I?{light:U.default[300],main:U.default[500],dark:U.default[700]}:I,t=g.secondary,u=void 0===t?{light:s.default.A200,main:s.default.A400,dark:s.default.A700}:t,y=g.error,b=void 0===y?{light:i.default[300],main:i.default[500],dark:i.default[700]}:y,Z=g.warning,m=void 0===Z?{light:c.default[300],main:c.default[500],dark:c.default[700]}:Z,x=g.info,R=void 0===x?{light:A.default[300],main:A.default[500],dark:A.default[700]}:x,S=g.success,G=void 0===S?{light:l.default[300],main:l.default[500],dark:l.default[700]}:S,L=g.type,V=void 0===L?"light":L,h=g.contrastThreshold,D=void 0===h?3:h,p=g.tonalOffset,E=void 0===p?.2:p,N=(0,Q.default)(g,["primary","secondary","error","warning","info","success","type","contrastThreshold","tonalOffset"]);function W(g){return(0,a.getContrastRatio)(g,o.text.primary)>=D?o.text.primary:r.text.primary}var f=function(g){var I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:500,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:300,t=arguments.length>3&&void 0!==arguments[3]?arguments[3]:700;if(!(g=(0,C.default)({},g)).main&&g[I]&&(g.main=g[I]),!g.main)throw new Error((0,F.formatMuiErrorMessage)(4,I));if("string"!==typeof g.main)throw new Error(_formatMuiErrorMessage(5,JSON.stringify(g.main)));return d(g,"light",e,E),d(g,"dark",t,E),g.contrastText||(g.contrastText=W(g.main)),g},X={dark:o,light:r};0;return(0,F.deepmerge)((0,C.default)({common:B.default,type:V,primary:f(e),secondary:f(u,"A400","A200","A700"),error:f(b),warning:f(m),info:f(R),success:f(G),grey:n.default,contrastThreshold:D,getContrastText:W,augmentColor:f,tonalOffset:E},X[V]),N)},I.dark=I.light=void 0;var C=t(e(281)),Q=t(e(339)),F=e(39),B=t(e(1290)),n=t(e(1291)),U=t(e(1292)),s=t(e(1293)),i=t(e(1294)),c=t(e(1295)),A=t(e(1296)),l=t(e(1297)),a=e(1298),r={text:{primary:"rgba(0, 0, 0, 0.87)",secondary:"rgba(0, 0, 0, 0.54)",disabled:"rgba(0, 0, 0, 0.38)",hint:"rgba(0, 0, 0, 0.38)"},divider:"rgba(0, 0, 0, 0.12)",background:{paper:B.default.white,default:n.default[50]},action:{active:"rgba(0, 0, 0, 0.54)",hover:"rgba(0, 0, 0, 0.04)",hoverOpacity:.04,selected:"rgba(0, 0, 0, 0.08)",selectedOpacity:.08,disabled:"rgba(0, 0, 0, 0.26)",disabledBackground:"rgba(0, 0, 0, 0.12)",disabledOpacity:.38,focus:"rgba(0, 0, 0, 0.12)",focusOpacity:.12,activatedOpacity:.12}};I.light=r;var o={text:{primary:B.default.white,secondary:"rgba(255, 255, 255, 0.7)",disabled:"rgba(255, 255, 255, 0.5)",hint:"rgba(255, 255, 255, 0.5)",icon:"rgba(255, 255, 255, 0.5)"},divider:"rgba(255, 255, 255, 0.12)",background:{paper:n.default[800],default:"#303030"},action:{active:B.default.white,hover:"rgba(255, 255, 255, 0.08)",hoverOpacity:.08,selected:"rgba(255, 255, 255, 0.16)",selectedOpacity:.16,disabled:"rgba(255, 255, 255, 0.3)",disabledBackground:"rgba(255, 255, 255, 0.12)",disabledOpacity:.38,focus:"rgba(255, 255, 255, 0.12)",focusOpacity:.12,activatedOpacity:.24}};function d(g,I,e,t){var C=t.light||t,Q=t.dark||1.5*t;g[I]||(g.hasOwnProperty(e)?g[I]=g[e]:"light"===I?g.light=(0,a.lighten)(g.main,C):"dark"===I&&(g.dark=(0,a.darken)(g.main,Q)))}I.dark=o},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var t={black:"#000",white:"#fff"};I.default=t},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var t={50:"#fafafa",100:"#f5f5f5",200:"#eeeeee",300:"#e0e0e0",400:"#bdbdbd",500:"#9e9e9e",600:"#757575",700:"#616161",800:"#424242",900:"#212121",A100:"#d5d5d5",A200:"#aaaaaa",A400:"#303030",A700:"#616161"};I.default=t},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var t={50:"#e8eaf6",100:"#c5cae9",200:"#9fa8da",300:"#7986cb",400:"#5c6bc0",500:"#3f51b5",600:"#3949ab",700:"#303f9f",800:"#283593",900:"#1a237e",A100:"#8c9eff",A200:"#536dfe",A400:"#3d5afe",A700:"#304ffe"};I.default=t},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var t={50:"#fce4ec",100:"#f8bbd0",200:"#f48fb1",300:"#f06292",400:"#ec407a",500:"#e91e63",600:"#d81b60",700:"#c2185b",800:"#ad1457",900:"#880e4f",A100:"#ff80ab",A200:"#ff4081",A400:"#f50057",A700:"#c51162"};I.default=t},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var t={50:"#ffebee",100:"#ffcdd2",200:"#ef9a9a",300:"#e57373",400:"#ef5350",500:"#f44336",600:"#e53935",700:"#d32f2f",800:"#c62828",900:"#b71c1c",A100:"#ff8a80",A200:"#ff5252",A400:"#ff1744",A700:"#d50000"};I.default=t},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var t={50:"#fff3e0",100:"#ffe0b2",200:"#ffcc80",300:"#ffb74d",400:"#ffa726",500:"#ff9800",600:"#fb8c00",700:"#f57c00",800:"#ef6c00",900:"#e65100",A100:"#ffd180",A200:"#ffab40",A400:"#ff9100",A700:"#ff6d00"};I.default=t},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var t={50:"#e3f2fd",100:"#bbdefb",200:"#90caf9",300:"#64b5f6",400:"#42a5f5",500:"#2196f3",600:"#1e88e5",700:"#1976d2",800:"#1565c0",900:"#0d47a1",A100:"#82b1ff",A200:"#448aff",A400:"#2979ff",A700:"#2962ff"};I.default=t},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var t={50:"#e8f5e9",100:"#c8e6c9",200:"#a5d6a7",300:"#81c784",400:"#66bb6a",500:"#4caf50",600:"#43a047",700:"#388e3c",800:"#2e7d32",900:"#1b5e20",A100:"#b9f6ca",A200:"#69f0ae",A400:"#00e676",A700:"#00c853"};I.default=t},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0}),I.hexToRgb=Q,I.rgbToHex=function(g){if(0===g.indexOf("#"))return g;var I=B(g).values;return"#".concat(I.map((function(g){return function(g){var I=g.toString(16);return 1===I.length?"0".concat(I):I}(g)})).join(""))},I.hslToRgb=F,I.decomposeColor=B,I.recomposeColor=n,I.getContrastRatio=function(g,I){var e=U(g),t=U(I);return(Math.max(e,t)+.05)/(Math.min(e,t)+.05)},I.getLuminance=U,I.emphasize=function(g){var I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.15;return U(g)>.5?s(g,I):i(g,I)},I.fade=function(g,I){g=B(g),I=C(I),("rgb"===g.type||"hsl"===g.type)&&(g.type+="a");return g.values[3]=I,n(g)},I.darken=s,I.lighten=i;var t=e(39);function C(g){var I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return Math.min(Math.max(I,g),e)}function Q(g){g=g.substr(1);var I=new RegExp(".{1,".concat(g.length>=6?2:1,"}"),"g"),e=g.match(I);return e&&1===e[0].length&&(e=e.map((function(g){return g+g}))),e?"rgb".concat(4===e.length?"a":"","(").concat(e.map((function(g,I){return I<3?parseInt(g,16):Math.round(parseInt(g,16)/255*1e3)/1e3})).join(", "),")"):""}function F(g){var I=(g=B(g)).values,e=I[0],t=I[1]/100,C=I[2]/100,Q=t*Math.min(C,1-C),F=function(g){var I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(g+e/30)%12;return C-Q*Math.max(Math.min(I-3,9-I,1),-1)},U="rgb",s=[Math.round(255*F(0)),Math.round(255*F(8)),Math.round(255*F(4))];return"hsla"===g.type&&(U+="a",s.push(I[3])),n({type:U,values:s})}function B(g){if(g.type)return g;if("#"===g.charAt(0))return B(Q(g));var I=g.indexOf("("),e=g.substring(0,I);if(-1===["rgb","rgba","hsl","hsla"].indexOf(e))throw new Error((0,t.formatMuiErrorMessage)(3,g));var C=g.substring(I+1,g.length-1).split(",");return{type:e,values:C=C.map((function(g){return parseFloat(g)}))}}function n(g){var I=g.type,e=g.values;return-1!==I.indexOf("rgb")?e=e.map((function(g,I){return I<3?parseInt(g,10):g})):-1!==I.indexOf("hsl")&&(e[1]="".concat(e[1],"%"),e[2]="".concat(e[2],"%")),"".concat(I,"(").concat(e.join(", "),")")}function U(g){var I="hsl"===(g=B(g)).type?B(F(g)).values:g.values;return I=I.map((function(g){return(g/=255)<=.03928?g/12.92:Math.pow((g+.055)/1.055,2.4)})),Number((.2126*I[0]+.7152*I[1]+.0722*I[2]).toFixed(3))}function s(g,I){if(g=B(g),I=C(I),-1!==g.type.indexOf("hsl"))g.values[2]*=1-I;else if(-1!==g.type.indexOf("rgb"))for(var e=0;e<3;e+=1)g.values[e]*=1-I;return n(g)}function i(g,I){if(g=B(g),I=C(I),-1!==g.type.indexOf("hsl"))g.values[2]+=(100-g.values[2])*I;else if(-1!==g.type.indexOf("rgb"))for(var e=0;e<3;e+=1)g.values[e]+=(255-g.values[e])*I;return n(g)}},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=function(g,I){var e="function"===typeof I?I(g):I,t=e.fontFamily,U=void 0===t?'"Roboto", "Helvetica", "Arial", sans-serif':t,s=e.fontSize,i=void 0===s?14:s,c=e.fontWeightLight,A=void 0===c?300:c,l=e.fontWeightRegular,a=void 0===l?400:l,r=e.fontWeightMedium,o=void 0===r?500:r,d=e.fontWeightBold,u=void 0===d?700:d,y=e.htmlFontSize,b=void 0===y?16:y,Z=e.allVariants,m=e.pxToRem,x=(0,Q.default)(e,["fontFamily","fontSize","fontWeightLight","fontWeightRegular","fontWeightMedium","fontWeightBold","htmlFontSize","allVariants","pxToRem"]);0;var R=i/14,S=m||function(g){return"".concat(g/b*R,"rem")},G=function(g,I,e,t,Q){return(0,C.default)({fontFamily:U,fontWeight:g,fontSize:S(I),lineHeight:e},'"Roboto", "Helvetica", "Arial", sans-serif'===U?{letterSpacing:"".concat(B(t/I),"em")}:{},Q,Z)},L={h1:G(A,96,1.167,-1.5),h2:G(A,60,1.2,-.5),h3:G(a,48,1.167,0),h4:G(a,34,1.235,.25),h5:G(a,24,1.334,0),h6:G(o,20,1.6,.15),subtitle1:G(a,16,1.75,.15),subtitle2:G(o,14,1.57,.1),body1:G(a,16,1.5,.15),body2:G(a,14,1.43,.15),button:G(o,14,1.75,.4,n),caption:G(a,12,1.66,.4),overline:G(a,12,2.66,1,n)};return(0,F.deepmerge)((0,C.default)({htmlFontSize:b,pxToRem:S,round:B,fontFamily:U,fontSize:i,fontWeightLight:A,fontWeightRegular:a,fontWeightMedium:o,fontWeightBold:u},L),x,{clone:!1})};var C=t(e(281)),Q=t(e(339)),F=e(39);function B(g){return Math.round(1e5*g)/1e5}var n={textTransform:"uppercase"}},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;function t(){return["".concat(arguments.length<=0?void 0:arguments[0],"px ").concat(arguments.length<=1?void 0:arguments[1],"px ").concat(arguments.length<=2?void 0:arguments[2],"px ").concat(arguments.length<=3?void 0:arguments[3],"px rgba(0,0,0,").concat(.2,")"),"".concat(arguments.length<=4?void 0:arguments[4],"px ").concat(arguments.length<=5?void 0:arguments[5],"px ").concat(arguments.length<=6?void 0:arguments[6],"px ").concat(arguments.length<=7?void 0:arguments[7],"px rgba(0,0,0,").concat(.14,")"),"".concat(arguments.length<=8?void 0:arguments[8],"px ").concat(arguments.length<=9?void 0:arguments[9],"px ").concat(arguments.length<=10?void 0:arguments[10],"px ").concat(arguments.length<=11?void 0:arguments[11],"px rgba(0,0,0,").concat(.12,")")].join(",")}var C=["none",t(0,2,1,-1,0,1,1,0,0,1,3,0),t(0,3,1,-2,0,2,2,0,0,1,5,0),t(0,3,3,-2,0,3,4,0,0,1,8,0),t(0,2,4,-1,0,4,5,0,0,1,10,0),t(0,3,5,-1,0,5,8,0,0,1,14,0),t(0,3,5,-1,0,6,10,0,0,1,18,0),t(0,4,5,-2,0,7,10,1,0,2,16,1),t(0,5,5,-3,0,8,10,1,0,3,14,2),t(0,5,6,-3,0,9,12,1,0,3,16,2),t(0,6,6,-3,0,10,14,1,0,4,18,3),t(0,6,7,-4,0,11,15,1,0,4,20,3),t(0,7,8,-4,0,12,17,2,0,5,22,4),t(0,7,8,-4,0,13,19,2,0,5,24,4),t(0,7,9,-4,0,14,21,2,0,5,26,4),t(0,8,9,-5,0,15,22,2,0,6,28,5),t(0,8,10,-5,0,16,24,2,0,6,30,5),t(0,8,11,-5,0,17,26,2,0,6,32,5),t(0,9,11,-5,0,18,28,2,0,7,34,6),t(0,9,12,-6,0,19,29,2,0,7,36,6),t(0,10,13,-6,0,20,31,3,0,8,38,7),t(0,10,13,-6,0,21,33,3,0,8,40,7),t(0,10,14,-6,0,22,35,3,0,8,42,7),t(0,11,14,-7,0,23,36,3,0,9,44,8),t(0,11,15,-7,0,24,38,3,0,9,46,8)];I.default=C},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var t={borderRadius:4};I.default=t},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0}),I.default=function(){var g=arguments.length>0&&void 0!==arguments[0]?arguments[0]:8;if(g.mui)return g;var I=(0,t.createUnarySpacing)({spacing:g}),e=function(){for(var g=arguments.length,e=new Array(g),t=0;t<g;t++)e[t]=arguments[t];return 0===e.length?I(1):1===e.length?I(e[0]):e.map((function(g){if("string"===typeof g)return g;var e=I(g);return"number"===typeof e?"".concat(e,"px"):e})).join(" ")};return Object.defineProperty(e,"unit",{get:function(){return g}}),e.mui=!0,e};var t=e(521)},function(g,I,e){"use strict";var t=e(24);Object.defineProperty(I,"__esModule",{value:!0}),I.default=I.duration=I.easing=void 0;var C=t(e(339)),Q={easeInOut:"cubic-bezier(0.4, 0, 0.2, 1)",easeOut:"cubic-bezier(0.0, 0, 0.2, 1)",easeIn:"cubic-bezier(0.4, 0, 1, 1)",sharp:"cubic-bezier(0.4, 0, 0.6, 1)"};I.easing=Q;var F={shortest:150,shorter:200,short:250,standard:300,complex:375,enteringScreen:225,leavingScreen:195};function B(g){return"".concat(Math.round(g),"ms")}I.duration=F;var n={easing:Q,duration:F,create:function(){var g=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["all"],I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},e=I.duration,t=void 0===e?F.standard:e,n=I.easing,U=void 0===n?Q.easeInOut:n,s=I.delay,i=void 0===s?0:s;(0,C.default)(I,["duration","easing","delay"]);return(Array.isArray(g)?g:[g]).map((function(g){return"".concat(g," ").concat("string"===typeof t?t:B(t)," ").concat(U," ").concat("string"===typeof i?i:B(i))})).join(",")},getAutoHeightDuration:function(g){if(!g)return 0;var I=g/36;return Math.round(10*(4+15*Math.pow(I,.25)+I/5))}};I.default=n},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var t={mobileStepper:1e3,speedDial:1050,appBar:1100,drawer:1200,modal:1300,snackbar:1400,tooltip:1500};I.default=t},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0}),I.onCut=function(g,I,e,t,C){setTimeout((function(){return U(I,e,t,void 0,C)}),0)},I.onPaste=function(g,I,e,t,C){var Q=(0,F.getSelection)(I);Q&&n(I,Q);U(I,e,t,void 0,C)},I.onChange=function(g,I,e,t,C){U(I,e,t,void 0,C)},I.onKeyDown=function(g,I,e,t,C){var Q=(0,F.getOperation)(g);switch(Q){case"Delete":case"Backspace":g.preventDefault();var B=(0,F.getSelection)(I);return B?(n(I,B),U(I,e,t,void 0,C)):U(I,e,t,Q,C)}};var t=B(e(1306)),C=B(e(697)),Q=B(e(1307)),F=e(1310);function B(g){return g&&g.__esModule?g:{default:g}}function n(g,I){var e=g.value;e=e.slice(0,I.start)+e.slice(I.end),g.value=e,(0,F.setCaretPosition)(g,I.start)}function U(g,I,e,B,n){var U=(0,C.default)(g.value,(0,F.getCaretPosition)(g),I),s=U.value,i=U.caret;if(B){var c=(0,t.default)(s,i,B);s=c.value,i=c.caret}var A=(0,Q.default)(s,i,e),l=A.text;i=A.caret,g.value=l,(0,F.setCaretPosition)(g,i),n(s)}},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0}),I.default=function(g,I,e){switch(e){case"Backspace":I>0&&(g=g.slice(0,I-1)+g.slice(I),I--);break;case"Delete":g=g.slice(0,I)+g.slice(I+1)}return{value:g,caret:I}}},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0}),I.default=function(g,I,e){"string"===typeof e&&(e=(0,Q.default)(e));var t=e(g)||{},C=t.text,F=t.template;void 0===C&&(C=g);if(F)if(void 0===I)I=C.length;else{for(var B=0,n=!1,U=-1;B<C.length&&B<F.length;){if(C[B]!==F[B]){if(0===I){n=!0,I=B;break}U=B,I--}B++}n||(I=U+1)}return{text:C,caret:I}};var t,C=e(1308),Q=(t=C)&&t.__esModule?t:{default:t}},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0}),I.default=function(g){var I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"x",e=arguments[2];if(!g)return function(g){return{text:g}};var t=(0,C.count_occurences)(I,g);return function(C){if(!C)return{text:"",template:g};var Q=0,B="",n=g.split(""),U=Array.isArray(n),s=0;for(n=U?n:n[Symbol.iterator]();;){var i;if(U){if(s>=n.length)break;i=n[s++]}else{if((s=n.next()).done)break;i=s.value}var c=i;if(c===I){if(B+=C[Q],++Q===C.length&&C.length<t)break}else B+=c}return e&&(B=(0,F.default)(B,g)),{text:B,template:g}}};var t,C=e(698),Q=e(1309),F=(t=Q)&&t.__esModule?t:{default:t}},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0}),I.default=function(g,I){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"x",C=arguments.length>3&&void 0!==arguments[3]?arguments[3]:" ",Q=g.length,F=(0,t.count_occurences)("(",g),B=(0,t.count_occurences)(")",g),n=F-B;for(;n>0&&Q<I.length;)g+=I[Q].replace(e,C),")"===I[Q]&&n--,Q++;return g};var t=e(698)},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0}),I.getSelection=function(g){if(g.selectionStart===g.selectionEnd)return;return{start:g.selectionStart,end:g.selectionEnd}},I.getOperation=function(g){switch(g.keyCode){case t.Backspace:return"Backspace";case t.Delete:return"Delete"}},I.getCaretPosition=function(g){return g.selectionStart},I.setCaretPosition=function(g,I){if(void 0===I)return;!function(){if("undefined"!==typeof navigator)return C.test(navigator.userAgent)}()?g.setSelectionRange(I,I):setTimeout((function(){return g.setSelectionRange(I,I)}),0)};var t=I.Keys={Backspace:8,Delete:46};var C=/Android/i},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var t=Q(e(0)),C=Q(e(4));function Q(g){return g&&g.__esModule?g:{default:g}}function F(g){return(F="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"===typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g})(g)}function B(){return(B=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}function n(g,I){if(null==g)return{};var e,t,C=function(g,I){if(null==g)return{};var e,t,C={},Q=Object.keys(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||(C[e]=g[e]);return C}(g,I);if(Object.getOwnPropertySymbols){var Q=Object.getOwnPropertySymbols(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||Object.prototype.propertyIsEnumerable.call(g,e)&&(C[e]=g[e])}return C}function U(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}function s(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}function i(g,I){return(i=Object.setPrototypeOf||function(g,I){return g.__proto__=I,g})(g,I)}function c(g){var I=function(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(g){return!1}}();return function(){var e,t=a(g);if(I){var C=a(this).constructor;e=Reflect.construct(t,arguments,C)}else e=t.apply(this,arguments);return A(this,e)}}function A(g,I){return!I||"object"!==F(I)&&"function"!==typeof I?l(g):I}function l(g){if(void 0===g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return g}function a(g){return(a=Object.setPrototypeOf?Object.getPrototypeOf:function(g){return g.__proto__||Object.getPrototypeOf(g)})(g)}function r(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}var o=function(g){!function(g,I){if("function"!==typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function");g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,writable:!0,configurable:!0}}),I&&i(g,I)}(F,g);var I,e,C,Q=c(F);function F(){for(var g,I=arguments.length,e=new Array(I),C=0;C<I;C++)e[C]=arguments[C];return U(this,F),r(l(g=Q.call.apply(Q,[this].concat(e))),"state",{}),r(l(g),"extractReplaceLinksKeys",(function(I){var e=l(g),t=0;return g.replacedLinks=[],I.replace(/(<a[\s]+([^>]+)>((?:.(?!\<\/a\>))*.)<\/a>)/g,(function(){var g=Array.prototype.slice.call(arguments,1,4);g.key="["+"@".repeat(g[2].length-1)+"="+t+++"]",e.replacedLinks.push(g),I=I.replace(g[0],g.key)})),I})),r(l(g),"restoreReplacedLinks",(function(I){return g.replacedLinks.forEach((function(g){I=I.replace(g.key,g[0])})),g.createMarkup(I)})),r(l(g),"innerText",(function(I){var e=document.createElement("div"),t="innerText"in window.HTMLElement.prototype?"innerText":"textContent",C=I.innerHTML.replace(/\r\n|\r|\n/g," ");e.innerHTML=g.extractReplaceLinksKeys(C);var Q=e[t],F=document.createElement("div");return F.innerHTML="foo<br/>bar","foo\nbar"!==F[t].replace(/\r\n|\r/g,"\n")&&(e.innerHTML=e.innerHTML.replace(/<br.*?[\/]?>/gi,"\n"),Q=e[t]),Q})),r(l(g),"onResize",(function(){g.calcTargetWidth()})),r(l(g),"onTruncate",(function(I){var e=g.props.onTruncate;"function"===typeof e&&(g.timeout=window.requestAnimationFrame((function(){e(I)})))})),r(l(g),"calcTargetWidth",(function(I){var e=l(g),t=e.elements.target,C=e.calcTargetWidth,Q=e.canvasContext,F=e.props.width;if(t){var B=F||Math.floor(t.parentNode.getBoundingClientRect().width);if(!B)return window.requestAnimationFrame((function(){return C(I)}));var n=window.getComputedStyle(t),U=[n["font-weight"],n["font-style"],n["font-size"],n["font-family"]].join(" ");Q.font=U,g.setState({targetWidth:B},I)}})),r(l(g),"measureWidth",(function(I){return g.canvasContext.measureText(I).width})),r(l(g),"ellipsisWidth",(function(g){return g.offsetWidth})),r(l(g),"trimRight",(function(g){return g.replace(/\s+$/,"")})),r(l(g),"createMarkup",(function(g){return t.default.createElement("span",{dangerouslySetInnerHTML:{__html:g}})})),r(l(g),"getLines",(function(){for(var I=l(g),e=I.elements,C=I.props,Q=C.lines,F=C.ellipsis,B=C.trimWhitespace,n=I.state.targetWidth,U=I.innerText,s=I.measureWidth,i=I.onTruncate,c=I.trimRight,A=I.renderLine,a=I.restoreReplacedLinks,r=[],o=U(e.text).split("\n").map((function(g){return g.split(" ")})),d=!0,u=g.ellipsisWidth(g.elements.ellipsis),y=1;y<=Q;y++){var b=o[0];if(0!==b.length){var Z=b.join(" ");if(s(Z)<=n&&1===o.length){d=!1,Z=a(Z),r.push(Z);break}if(y===Q){for(var m=b.join(" "),x=0,R=m.length-1;x<=R;){var S=Math.floor((x+R)/2);s(m.slice(0,S+1))+u<=n?x=S+1:R=S-1}var G=m.slice(0,x);if(B)for(G=c(G);!G.length&&r.length;){G=c(r.pop())}"]["===G.substr(G.length-2)&&(G=G.substring(0,G.length-1)),G=a(G=G.replace(/\[@+$/,"")),Z=t.default.createElement("span",null,G,F)}else{for(var L=0,V=b.length-1;L<=V;){var h=Math.floor((L+V)/2);s(b.slice(0,h+1).join(" "))<=n?L=h+1:V=h-1}if(0===L){y=Q-1;continue}Z=a(Z=b.slice(0,L).join(" ")),o[0].splice(0,L)}r.push(Z)}else r.push(),o.shift(),y--}return i(d),r.map(A)})),r(l(g),"renderLine",(function(g,I,e){if(I===e.length-1)return t.default.createElement("span",{key:I},g);var C=t.default.createElement("br",{key:I+"br"});return g?[t.default.createElement("span",{key:I},g),C]:C})),r(l(g),"styles",{ellipsis:{position:"fixed",visibility:"hidden",top:0,left:0}}),g.elements={},g.replacedLinks=[],g}return I=F,(e=[{key:"componentDidMount",value:function(){var g=this.elements.text,I=this.calcTargetWidth,e=this.onResize,t=document.createElement("canvas");this.canvasContext=t.getContext("2d"),I((function(){g&&g.parentNode.removeChild(g)})),window.addEventListener("resize",e)}},{key:"componentDidUpdate",value:function(g){this.props.children!==g.children&&this.forceUpdate(),this.props.width!==g.width&&this.calcTargetWidth()}},{key:"componentWillUnmount",value:function(){var g=this.elements.ellipsis,I=this.onResize,e=this.timeout;g.parentNode.removeChild(g),window.removeEventListener("resize",I),window.cancelAnimationFrame(e)}},{key:"render",value:function(){var g,I=this,e=this.elements.target,C=this.props,Q=C.children,F=C.ellipsis,U=C.lines,s=n(C,["children","ellipsis","lines"]),i=this.state.targetWidth,c=this.getLines,A=this.onTruncate;return"undefined"!==typeof window&&!(!e||!i)&&(U>0?g=c():(g=Q,A(!1))),delete s.onTruncate,delete s.trimWhitespace,t.default.createElement("span",B({},s,{ref:function(g){I.elements.target=g}}),t.default.createElement("span",null,g),t.default.createElement("span",{ref:function(g){I.elements.text=g}},Q),t.default.createElement("span",{ref:function(g){I.elements.ellipsis=g},style:this.styles.ellipsis},F))}}])&&s(I.prototype,e),C&&s(I,C),F}(t.default.Component);I.default=o,r(o,"propTypes",{children:C.default.node,ellipsis:C.default.node,lines:C.default.oneOfType([C.default.oneOf([!1]),C.default.number]),trimWhitespace:C.default.bool,width:C.default.number,onTruncate:C.default.func}),r(o,"defaultProps",{children:"",ellipsis:"\u2026",lines:1,trimWhitespace:!1,width:0})},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0});var t=function(){function g(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}return function(I,e,t){return e&&g(I.prototype,e),t&&g(I,t),I}}(),C=e(0),Q=B(C),F=B(e(4));function B(g){return g&&g.__esModule?g:{default:g}}var n=function(g){function I(g){!function(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}(this,I);var e=function(g,I){if(!g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!I||"object"!==typeof I&&"function"!==typeof I?g:I}(this,(I.__proto__||Object.getPrototypeOf(I)).call(this,g));return e.scrollListener=e.scrollListener.bind(e),e.eventListenerOptions=e.eventListenerOptions.bind(e),e.mousewheelListener=e.mousewheelListener.bind(e),e}return function(g,I){if("function"!==typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function, not "+typeof I);g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,enumerable:!1,writable:!0,configurable:!0}}),I&&(Object.setPrototypeOf?Object.setPrototypeOf(g,I):g.__proto__=I)}(I,g),t(I,[{key:"componentDidMount",value:function(){this.pageLoaded=this.props.pageStart,this.options=this.eventListenerOptions(),this.attachScrollListener()}},{key:"componentDidUpdate",value:function(){if(this.props.isReverse&&this.loadMore){var g=this.getParentElement(this.scrollComponent);g.scrollTop=g.scrollHeight-this.beforeScrollHeight+this.beforeScrollTop,this.loadMore=!1}this.attachScrollListener()}},{key:"componentWillUnmount",value:function(){this.detachScrollListener(),this.detachMousewheelListener()}},{key:"isPassiveSupported",value:function(){var g=!1,I={get passive(){g=!0}};try{document.addEventListener("test",null,I),document.removeEventListener("test",null,I)}catch(e){}return g}},{key:"eventListenerOptions",value:function(){this.props.useCapture;return this.isPassiveSupported()?{useCapture:this.props.useCapture,passive:!0}:{passive:!1}}},{key:"setDefaultLoader",value:function(g){this.defaultLoader=g}},{key:"detachMousewheelListener",value:function(){var g=window;!1===this.props.useWindow&&(g=this.scrollComponent.parentNode),g.removeEventListener("mousewheel",this.mousewheelListener,this.options?this.options:this.props.useCapture)}},{key:"detachScrollListener",value:function(){var g=window;!1===this.props.useWindow&&(g=this.getParentElement(this.scrollComponent)),g.removeEventListener("scroll",this.scrollListener,this.options?this.options:this.props.useCapture),g.removeEventListener("resize",this.scrollListener,this.options?this.options:this.props.useCapture)}},{key:"getParentElement",value:function(g){var I=this.props.getScrollParent&&this.props.getScrollParent();return null!=I?I:g&&g.parentNode}},{key:"filterProps",value:function(g){return g}},{key:"attachScrollListener",value:function(){var g=this.getParentElement(this.scrollComponent);if(this.props.hasMore&&g){var I=window;!1===this.props.useWindow&&(I=g),I.addEventListener("mousewheel",this.mousewheelListener,this.options?this.options:this.props.useCapture),I.addEventListener("scroll",this.scrollListener,this.options?this.options:this.props.useCapture),I.addEventListener("resize",this.scrollListener,this.options?this.options:this.props.useCapture),this.props.initialLoad&&this.scrollListener()}}},{key:"mousewheelListener",value:function(g){1!==g.deltaY||this.isPassiveSupported()||g.preventDefault()}},{key:"scrollListener",value:function(){var g=this.scrollComponent,I=window,e=this.getParentElement(g),t=void 0;if(this.props.useWindow){var C=document.documentElement||document.body.parentNode||document.body,Q=void 0!==I.pageYOffset?I.pageYOffset:C.scrollTop;t=this.props.isReverse?Q:this.calculateOffset(g,Q)}else t=this.props.isReverse?e.scrollTop:g.scrollHeight-e.scrollTop-e.clientHeight;t<Number(this.props.threshold)&&g&&null!==g.offsetParent&&(this.detachScrollListener(),this.beforeScrollHeight=e.scrollHeight,this.beforeScrollTop=e.scrollTop,"function"===typeof this.props.loadMore&&(this.props.loadMore(this.pageLoaded+=1),this.loadMore=!0))}},{key:"calculateOffset",value:function(g,I){return g?this.calculateTopPosition(g)+(g.offsetHeight-I-window.innerHeight):0}},{key:"calculateTopPosition",value:function(g){return g?g.offsetTop+this.calculateTopPosition(g.offsetParent):0}},{key:"render",value:function(){var g=this,I=this.filterProps(this.props),e=I.children,t=I.element,C=I.hasMore,F=(I.initialLoad,I.isReverse),B=I.loader,n=(I.loadMore,I.pageStart,I.ref),U=(I.threshold,I.useCapture,I.useWindow,I.getScrollParent,function(g,I){var e={};for(var t in g)I.indexOf(t)>=0||Object.prototype.hasOwnProperty.call(g,t)&&(e[t]=g[t]);return e}(I,["children","element","hasMore","initialLoad","isReverse","loader","loadMore","pageStart","ref","threshold","useCapture","useWindow","getScrollParent"]));U.ref=function(I){g.scrollComponent=I,n&&n(I)};var s=[e];return C&&(B?F?s.unshift(B):s.push(B):this.defaultLoader&&(F?s.unshift(this.defaultLoader):s.push(this.defaultLoader))),Q.default.createElement(t,U,s)}}]),I}(C.Component);n.propTypes={children:F.default.node.isRequired,element:F.default.node,hasMore:F.default.bool,initialLoad:F.default.bool,isReverse:F.default.bool,loader:F.default.node,loadMore:F.default.func.isRequired,pageStart:F.default.number,ref:F.default.func,getScrollParent:F.default.func,threshold:F.default.number,useCapture:F.default.bool,useWindow:F.default.bool},n.defaultProps={element:"div",hasMore:!1,initialLoad:!0,pageStart:0,ref:null,threshold:250,useWindow:!0,isReverse:!1,useCapture:!1,loader:null,getScrollParent:null},I.default=n,g.exports=I.default},function(g,I,e){"use strict";I.__esModule=!0;var t="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"===typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g},C=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g},Q=e(0),F=L(Q),B=L(e(4)),n=L(e(42)),U=L(e(1314)),s=L(e(1315)),i=L(e(699)),c=L(e(1317)),A=e(1318),l=L(e(1319)),a=L(e(1321)),r=L(e(1323)),o=L(e(1324)),d=L(e(700)),u=L(e(1325)),y=L(e(1326)),b=L(e(1327)),Z=L(e(1328)),m=L(e(701)),x=L(e(1329)),R=L(e(1330)),S=L(e(1331)),G=L(e(705));function L(g){return g&&g.__esModule?g:{default:g}}var V=void 0!==n.default.createPortal,h=V?n.default.createPortal:n.default.unstable_renderSubtreeIntoContainer;function D(){return{overviewMapControl:!1,streetViewControl:!1,rotateControl:!0,mapTypeControl:!1,styles:[{featureType:"poi",elementType:"labels",stylers:[{visibility:"off"}]}],minZoom:3}}var p=function(g){return(0,x.default)(g)?g:{lat:g[0],lng:g[1]}},E=function(g,I){return I<g?g:I},N=function(g){function I(e){!function(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}(this,I);var Q=function(g,I){if(!g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!I||"object"!==typeof I&&"function"!==typeof I?g:I}(this,g.call(this,e));if(Q._getMinZoom=function(){if(Q.geoService_.getWidth()>0||Q.geoService_.getHeight()>0){var g=Math.ceil(Q.geoService_.getWidth()/256)+2,I=Math.ceil(Q.geoService_.getHeight()/256)+2,e=Math.max(g,I);return Math.ceil((0,u.default)(e))}return 3},Q._computeMinZoom=function(g){return(0,y.default)(g)?Q._getMinZoom():g},Q._mapDomResizeCallback=function(){if(Q.resetSizeOnIdle_=!0,Q.maps_){var g=Q.props.center||Q.props.defaultCenter,I=Q.map_.getCenter();Q.maps_.event.trigger(Q.map_,"resize"),Q.map_.setCenter(Q.props.resetBoundsOnResize?g:I)}},Q._setLayers=function(g){g.forEach((function(g){Q.layers_[g]=new Q.maps_[g],Q.layers_[g].setMap(Q.map_)}))},Q._renderPortal=function(){return F.default.createElement(i.default,{experimental:Q.props.experimental,onChildClick:Q._onChildClick,onChildMouseDown:Q._onChildMouseDown,onChildMouseEnter:Q._onChildMouseEnter,onChildMouseLeave:Q._onChildMouseLeave,geoService:Q.geoService_,insideMapPanes:!0,distanceToMouse:Q.props.distanceToMouse,getHoverDistance:Q._getHoverDistance,dispatcher:Q.markersDispatcher_})},Q._initMap=function(){if(!Q.initialized_){Q.initialized_=!0;var g=p(Q.props.center||Q.props.defaultCenter);Q.geoService_.setView(g,Q.props.zoom||Q.props.defaultZoom,0),Q._onBoundsChanged();var I=C({},Q.props.apiKey&&{key:Q.props.apiKey},Q.props.bootstrapURLKeys);Q.props.googleMapLoader(I,Q.props.heatmapLibrary).then((function(g){if(Q.mounted_){var I=Q.geoService_.getCenter(),e={zoom:Q.props.zoom||Q.props.defaultZoom,center:new g.LatLng(I.lat,I.lng)};Q.props.heatmap.positions&&(Object.assign(Q,{heatmap:(0,A.generateHeatmap)(g,Q.props.heatmap)}),(0,A.optionsHeatmap)(Q.heatmap,Q.props.heatmap));var F=(0,o.default)(g,x.default),B="function"===typeof Q.props.options?Q.props.options(F):Q.props.options,U={overviewMapControl:!1,streetViewControl:!1,rotateControl:!0,mapTypeControl:!1,styles:[{featureType:"poi",elementType:"labels",stylers:[{visibility:"off"}]}],minZoom:3},s=!(0,y.default)(Q.props.draggable)&&{draggable:Q.props.draggable},i=Q._computeMinZoom(B.minZoom);Q.minZoom_=i;var c=C({},U,{minZoom:i},B,e);Q.defaultDraggableOption_=(0,y.default)(c.draggable)?Q.defaultDraggableOption_:c.draggable;var l=C({},c,s);l.minZoom=E(l.minZoom,i);var a=new g.Map(n.default.findDOMNode(Q.googleMapDom_),l);Q.map_=a,Q.maps_=g,Q._setLayers(Q.props.layerTypes);var d=g.version.match(/^3\.(\d+)\./),u=d&&Number(d[1]),b=Q,Z=Object.assign(new g.OverlayView,{onAdd:function(){var I="undefined"!==typeof screen?screen.width+"px":"2000px",e="undefined"!==typeof screen?screen.height+"px":"2000px",C=document.createElement("div");if(C.style.backgroundColor="transparent",C.style.position="absolute",C.style.left="0px",C.style.top="0px",C.style.width=I,C.style.height=e,b.props.overlayViewDivStyle){var Q=b.props.overlayViewDivStyle;"object"===("undefined"===typeof Q?"undefined":t(Q))&&Object.keys(Q).forEach((function(g){C.style[g]=Q[g]}))}this.getPanes().overlayMouseTarget.appendChild(C),b.geoService_.setMapCanvasProjection(g,Z.getProjection()),V?b.setState({overlay:C}):h(b,b._renderPortal(),C,(function(){return b.setState({overlay:C})}))},onRemove:function(){var g=b.state.overlay;g&&!V&&n.default.unmountComponentAtNode(g),b.setState({overlay:null})},draw:function(){if(b.updateCounter_++,b._onBoundsChanged(a,g,!b.props.debounced),b.googleApiLoadedCalled_||(b._onGoogleApiLoaded({map:a,maps:g,ref:b.googleMapDom_}),b.googleApiLoadedCalled_=!0),b.mouse_){var I=b.geoService_.fromContainerPixelToLatLng(b.mouse_);b.mouse_.lat=I.lat,b.mouse_.lng=I.lng}b._onChildMouseMove(),b.markersDispatcher_&&(b.markersDispatcher_.emit("kON_CHANGE"),b.fireMouseEventOnIdle_&&b.markersDispatcher_.emit("kON_MOUSE_POSITION_CHANGE"))}});Q.overlay_=Z,Z.setMap(a),Q.props.heatmap.positions&&Q.heatmap.setMap(a),Q.props.onTilesLoaded&&g.event.addListener(a,"tilesloaded",(function(){b._onTilesLoaded()})),g.event.addListener(a,"zoom_changed",(function(){if(b.geoService_.getZoom()!==a.getZoom()&&(b.zoomAnimationInProgress_||(b.zoomAnimationInProgress_=!0,b._onZoomAnimationStart(a.zoom)),u<32)){(new Date).getTime()-Q.zoomControlClickTime_<300?(0,r.default)((function(){return(0,r.default)((function(){b.updateCounter_++,b._onBoundsChanged(a,g)}))})):(b.updateCounter_++,b._onBoundsChanged(a,g))}})),g.event.addListener(a,"idle",(function(){if(Q.resetSizeOnIdle_){Q._setViewSize();var I=Q._computeMinZoom(Q.props.options.minZoom);I!==Q.minZoom_&&(Q.minZoom_=I,a.setOptions({minZoom:I})),Q.resetSizeOnIdle_=!1}b.zoomAnimationInProgress_&&(b.zoomAnimationInProgress_=!1,b._onZoomAnimationEnd(a.zoom)),b.updateCounter_++,b._onBoundsChanged(a,g),b.dragTime_=0,b.markersDispatcher_&&b.markersDispatcher_.emit("kON_CHANGE")})),g.event.addListener(a,"mouseover",(function(){b.mouseInMap_=!0})),g.event.addListener(a,"click",(function(){b.mouseInMap_=!0})),g.event.addListener(a,"mouseout",(function(){b.mouseInMap_=!1,b.mouse_=null,b.markersDispatcher_.emit("kON_MOUSE_POSITION_CHANGE")})),g.event.addListener(a,"drag",(function(){b.dragTime_=(new Date).getTime(),b._onDrag(a)})),g.event.addListener(a,"dragend",(function(){var I=g.event.addListener(a,"idle",(function(){g.event.removeListener(I),b._onDragEnd(a)}))})),g.event.addListener(a,"maptypeid_changed",(function(){b._onMapTypeIdChange(a.getMapTypeId())}))}})).catch((function(g){throw Q._onGoogleApiLoaded({map:null,maps:null,ref:Q.googleMapDom_}),console.error(g),g}))}},Q._onGoogleApiLoaded=function(){var g;Q.props.onGoogleApiLoaded&&(g=Q.props).onGoogleApiLoaded.apply(g,arguments)},Q._getHoverDistance=function(){return Q.props.hoverDistance},Q._onDrag=function(){var g;return Q.props.onDrag&&(g=Q.props).onDrag.apply(g,arguments)},Q._onDragEnd=function(){var g;return Q.props.onDragEnd&&(g=Q.props).onDragEnd.apply(g,arguments)},Q._onMapTypeIdChange=function(){var g;return Q.props.onMapTypeIdChange&&(g=Q.props).onMapTypeIdChange.apply(g,arguments)},Q._onZoomAnimationStart=function(){var g;return Q.props.onZoomAnimationStart&&(g=Q.props).onZoomAnimationStart.apply(g,arguments)},Q._onZoomAnimationEnd=function(){var g;return Q.props.onZoomAnimationEnd&&(g=Q.props).onZoomAnimationEnd.apply(g,arguments)},Q._onTilesLoaded=function(){return Q.props.onTilesLoaded&&Q.props.onTilesLoaded()},Q._onChildClick=function(){var g;if(Q.props.onChildClick)return(g=Q.props).onChildClick.apply(g,arguments)},Q._onChildMouseDown=function(g,I){Q.childMouseDownArgs_=[g,I],Q.props.onChildMouseDown&&Q.props.onChildMouseDown(g,I,C({},Q.mouse_))},Q._onChildMouseUp=function(){if(Q.childMouseDownArgs_){var g;if(Q.props.onChildMouseUp)(g=Q.props).onChildMouseUp.apply(g,Q.childMouseDownArgs_.concat([C({},Q.mouse_)]));Q.childMouseDownArgs_=null,Q.childMouseUpTime_=(new Date).getTime()}},Q._onChildMouseMove=function(){var g;Q.childMouseDownArgs_&&(Q.props.onChildMouseMove&&(g=Q.props).onChildMouseMove.apply(g,Q.childMouseDownArgs_.concat([C({},Q.mouse_)])))},Q._onChildMouseEnter=function(){var g;if(Q.props.onChildMouseEnter)return(g=Q.props).onChildMouseEnter.apply(g,arguments)},Q._onChildMouseLeave=function(){var g;if(Q.props.onChildMouseLeave)return(g=Q.props).onChildMouseLeave.apply(g,arguments)},Q._setViewSize=function(){if(Q.mounted_){if(document.fullscreen||document.webkitIsFullScreen||document.mozFullScreen||document.msFullscreenElement)Q.geoService_.setViewSize(window.innerWidth,window.innerHeight);else{var g=n.default.findDOMNode(Q.googleMapDom_);Q.geoService_.setViewSize(g.clientWidth,g.clientHeight)}Q._onBoundsChanged()}},Q._onWindowResize=function(){Q.resetSizeOnIdle_=!0},Q._onMapMouseMove=function(g){if(Q.mouseInMap_){var I=(new Date).getTime();I-Q.mouseMoveTime_>50&&(Q.boundingRect_=g.currentTarget.getBoundingClientRect()),Q.mouseMoveTime_=I;var e=g.clientX-Q.boundingRect_.left,t=g.clientY-Q.boundingRect_.top;Q.mouse_||(Q.mouse_={x:0,y:0,lat:0,lng:0}),Q.mouse_.x=e,Q.mouse_.y=t;var C=Q.geoService_.fromContainerPixelToLatLng(Q.mouse_);Q.mouse_.lat=C.lat,Q.mouse_.lng=C.lng,Q._onChildMouseMove(),I-Q.dragTime_<100?Q.fireMouseEventOnIdle_=!0:(Q.markersDispatcher_.emit("kON_MOUSE_POSITION_CHANGE"),Q.fireMouseEventOnIdle_=!1)}},Q._onClick=function(){var g;return Q.props.onClick&&!Q.childMouseDownArgs_&&(new Date).getTime()-Q.childMouseUpTime_>300&&0===Q.dragTime_&&(g=Q.props).onClick.apply(g,arguments)},Q._onMapClick=function(g){Q.markersDispatcher_&&(Q._onMapMouseMove(g),(new Date).getTime()-Q.dragTime_>100&&(Q.mouse_&&Q._onClick(C({},Q.mouse_,{event:g})),Q.markersDispatcher_.emit("kON_CLICK",g)))},Q._onMapMouseDownNative=function(g){Q.mouseInMap_&&Q._onMapMouseDown(g)},Q._onMapMouseDown=function(g){Q.markersDispatcher_&&((new Date).getTime()-Q.dragTime_>100&&(Q._onMapMouseMove(g),Q.markersDispatcher_.emit("kON_MDOWN",g)))},Q._onMapMouseDownCapture=function(){(0,Z.default)().isChrome&&(Q.zoomControlClickTime_=(new Date).getTime())},Q._onKeyDownCapture=function(){(0,Z.default)().isChrome&&(Q.zoomControlClickTime_=(new Date).getTime())},Q._isCenterDefined=function(g){return g&&((0,x.default)(g)&&(0,b.default)(g.lat)&&(0,b.default)(g.lng)||2===g.length&&(0,b.default)(g[0])&&(0,b.default)(g[1]))},Q._onBoundsChanged=function(g,I,e){if(g){var t=g.getCenter();Q.geoService_.setView([t.lat(),t.lng()],g.getZoom(),0)}if((Q.props.onChange||Q.props.onBoundsChange)&&Q.geoService_.canProject()){var F=Q.geoService_.getZoom(),B=Q.geoService_.getBounds(),n=Q.geoService_.getCenter();if(!(0,R.default)(B,Q.prevBounds_,1e-5)&&!1!==e){var U=Q.geoService_.getBounds(Q.props.margin);Q.props.onBoundsChange&&Q.props.onBoundsChange(Q.centerIsObject_?C({},n):[n.lat,n.lng],F,B,U),Q.props.onChange&&Q.props.onChange({center:C({},n),zoom:F,bounds:{nw:{lat:B[0],lng:B[1]},se:{lat:B[2],lng:B[3]},sw:{lat:B[4],lng:B[5]},ne:{lat:B[6],lng:B[7]}},marginBounds:{nw:{lat:U[0],lng:U[1]},se:{lat:U[2],lng:U[3]},sw:{lat:U[4],lng:U[5]},ne:{lat:U[6],lng:U[7]}},size:Q.geoService_.hasSize()?{width:Q.geoService_.getWidth(),height:Q.geoService_.getHeight()}:{width:0,height:0}}),Q.prevBounds_=B}}},Q._registerChild=function(g){Q.googleMapDom_=g},Q.mounted_=!1,Q.initialized_=!1,Q.googleApiLoadedCalled_=!1,Q.map_=null,Q.maps_=null,Q.prevBounds_=null,Q.heatmap=null,Q.layers_={},Q.mouse_=null,Q.mouseMoveTime_=0,Q.boundingRect_=null,Q.mouseInMap_=!0,Q.dragTime_=0,Q.fireMouseEventOnIdle_=!1,Q.updateCounter_=0,Q.markersDispatcher_=new s.default(Q),Q.geoService_=new a.default(256),Q.centerIsObject_=(0,x.default)(Q.props.center),Q.minZoom_=3,Q.defaultDraggableOption_=!0,Q.zoomControlClickTime_=0,Q.childMouseDownArgs_=null,Q.childMouseUpTime_=0,Q.googleMapDom_=null,Q._isCenterDefined(Q.props.center||Q.props.defaultCenter)){var B=p(Q.props.center||Q.props.defaultCenter);Q.geoService_.setView(B,Q.props.zoom||Q.props.defaultZoom,0)}return Q.zoomAnimationInProgress_=!1,Q.state={overlay:null},Q}return function(g,I){if("function"!==typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function, not "+typeof I);g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,enumerable:!1,writable:!0,configurable:!0}}),I&&(Object.setPrototypeOf?Object.setPrototypeOf(g,I):g.__proto__=I)}(I,g),I.prototype.componentDidMount=function(){var g=this;this.mounted_=!0,(0,G.default)(window,"resize",this._onWindowResize,!1),(0,G.default)(window,"keydown",this._onKeyDownCapture,!0);var I=n.default.findDOMNode(this.googleMapDom_);I&&(0,G.default)(I,"mousedown",this._onMapMouseDownNative,!0),(0,G.default)(window,"mouseup",this._onChildMouseUp,!1);var e=C({},this.props.apiKey&&{key:this.props.apiKey},this.props.bootstrapURLKeys);if(this.props.googleMapLoader(e,this.props.heatmapLibrary),setTimeout((function(){g._setViewSize(),g._isCenterDefined(g.props.center||g.props.defaultCenter)&&g._initMap()}),0,this),this.props.resetBoundsOnResize){S.default.addResizeListener(I,this._mapDomResizeCallback)}},I.prototype.UNSAFE_componentWillReceiveProps=function(g){var I=this;if(!this._isCenterDefined(this.props.center)&&this._isCenterDefined(g.center)&&setTimeout((function(){return I._initMap()}),0),this.map_){var e=this.geoService_.getCenter();if(this._isCenterDefined(g.center)){var t=p(g.center),C=this._isCenterDefined(this.props.center)?p(this.props.center):null;(!C||Math.abs(t.lat-C.lat)+Math.abs(t.lng-C.lng)>1e-5)&&Math.abs(t.lat-e.lat)+Math.abs(t.lng-e.lng)>1e-5&&this.map_.panTo({lat:t.lat,lng:t.lng})}if((0,y.default)(g.zoom)||Math.abs(g.zoom-this.props.zoom)>0&&this.map_.setZoom(g.zoom),!(0,y.default)(this.props.draggable)&&(0,y.default)(g.draggable)?this.map_.setOptions({draggable:this.defaultDraggableOption_}):(0,m.default)(this.props.draggable,g.draggable)||this.map_.setOptions({draggable:g.draggable}),!(0,y.default)(g.options)&&!(0,m.default)(this.props.options,g.options)){var Q=(0,o.default)(this.maps_,x.default),F="function"===typeof g.options?g.options(Q):g.options;if("minZoom"in(F=(0,d.default)(F,["zoom","center","draggable"]))){var B=this._computeMinZoom(F.minZoom);F.minZoom=E(F.minZoom,B)}this.map_.setOptions(F)}(0,m.default)(g.layerTypes,this.props.layerTypes)||(Object.keys(this.layers_).forEach((function(g){I.layers_[g].setMap(null),delete I.layers_[g]})),this._setLayers(g.layerTypes)),this.heatmap&&!(0,m.default)(g.heatmap.positions,this.props.heatmap.positions)&&this.heatmap.setData(g.heatmap.positions.map((function(g){return{location:new I.maps_.LatLng(g.lat,g.lng),weight:g.weight}})))}},I.prototype.shouldComponentUpdate=function(g,I){return!(0,m.default)((0,d.default)(this.props,["draggable"]),(0,d.default)(g,["draggable"]))||!(0,m.default)(this.state,I)},I.prototype.componentDidUpdate=function(g){this.markersDispatcher_.emit("kON_CHANGE"),(0,m.default)(this.props.hoverDistance,g.hoverDistance)||this.markersDispatcher_.emit("kON_MOUSE_POSITION_CHANGE")},I.prototype.componentWillUnmount=function(){this.mounted_=!1;var g=n.default.findDOMNode(this.googleMapDom_);g&&g.removeEventListener("mousedown",this._onMapMouseDownNative,!0),window.removeEventListener("resize",this._onWindowResize),window.removeEventListener("keydown",this._onKeyDownCapture),window.removeEventListener("mouseup",this._onChildMouseUp,!1),this.props.resetBoundsOnResize&&S.default.removeResizeListener(g,this._mapDomResizeCallback),this.overlay_&&this.overlay_.setMap(null),this.maps_&&this.map_&&this.props.shouldUnregisterMapOnUnmount&&(this.map_.setOptions({scrollwheel:!1}),this.maps_.event.clearInstanceListeners(this.map_)),this.props.shouldUnregisterMapOnUnmount&&(this.map_=null,this.maps_=null),this.markersDispatcher_.dispose(),this.resetSizeOnIdle_=!1,this.props.shouldUnregisterMapOnUnmount&&(delete this.map_,delete this.markersDispatcher_)},I.prototype.render=function(){var g=this.state.overlay,I=g?null:F.default.createElement(c.default,{experimental:this.props.experimental,onChildClick:this._onChildClick,onChildMouseDown:this._onChildMouseDown,onChildMouseEnter:this._onChildMouseEnter,onChildMouseLeave:this._onChildMouseLeave,geoService:this.geoService_,insideMapPanes:!1,distanceToMouse:this.props.distanceToMouse,getHoverDistance:this._getHoverDistance,dispatcher:this.markersDispatcher_});return F.default.createElement("div",{style:this.props.style,onMouseMove:this._onMapMouseMove,onMouseDownCapture:this._onMapMouseDownCapture,onClick:this._onMapClick},F.default.createElement(U.default,{registerChild:this._registerChild}),V&&g&&h(this._renderPortal(),g),I)},I}(Q.Component);N.propTypes={apiKey:B.default.string,bootstrapURLKeys:B.default.any,defaultCenter:B.default.oneOfType([B.default.array,B.default.shape({lat:B.default.number,lng:B.default.number})]),center:B.default.oneOfType([B.default.array,B.default.shape({lat:B.default.number,lng:B.default.number})]),defaultZoom:B.default.number,zoom:B.default.number,onBoundsChange:B.default.func,onChange:B.default.func,onClick:B.default.func,onChildClick:B.default.func,onChildMouseDown:B.default.func,onChildMouseUp:B.default.func,onChildMouseMove:B.default.func,onChildMouseEnter:B.default.func,onChildMouseLeave:B.default.func,onZoomAnimationStart:B.default.func,onZoomAnimationEnd:B.default.func,onDrag:B.default.func,onDragEnd:B.default.func,onMapTypeIdChange:B.default.func,onTilesLoaded:B.default.func,options:B.default.any,distanceToMouse:B.default.func,hoverDistance:B.default.number,debounced:B.default.bool,margin:B.default.array,googleMapLoader:B.default.any,onGoogleApiLoaded:B.default.func,yesIWantToUseGoogleMapApiInternals:B.default.bool,draggable:B.default.bool,style:B.default.any,resetBoundsOnResize:B.default.bool,layerTypes:B.default.arrayOf(B.default.string),shouldUnregisterMapOnUnmount:B.default.bool},N.defaultProps={distanceToMouse:function(g,I){return Math.sqrt((g.x-I.x)*(g.x-I.x)+(g.y-I.y)*(g.y-I.y))},hoverDistance:30,debounced:!0,options:D,googleMapLoader:l.default,yesIWantToUseGoogleMapApiInternals:!1,style:{width:"100%",height:"100%",margin:0,padding:0,position:"relative"},layerTypes:[],heatmap:{},heatmapLibrary:!1,shouldUnregisterMapOnUnmount:!0},N.googleMapLoader=l.default,I.default=N},function(g,I,e){"use strict";I.__esModule=!0;var t,C=e(0),Q=(t=C)&&t.__esModule?t:{default:t};function F(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}function B(g,I){if(!g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!I||"object"!==typeof I&&"function"!==typeof I?g:I}var n={width:"100%",height:"100%",left:0,top:0,margin:0,padding:0,position:"absolute"},U=function(g){function I(){return F(this,I),B(this,g.apply(this,arguments))}return function(g,I){if("function"!==typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function, not "+typeof I);g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,enumerable:!1,writable:!0,configurable:!0}}),I&&(Object.setPrototypeOf?Object.setPrototypeOf(g,I):g.__proto__=I)}(I,g),I.prototype.shouldComponentUpdate=function(){return!1},I.prototype.render=function(){var g=this.props.registerChild;return Q.default.createElement("div",{ref:g,style:n})},I}(C.Component);I.default=U},function(g,I,e){"use strict";I.__esModule=!0;var t,C=e(1316);var Q=function(g){function I(e){!function(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}(this,I);var t=function(g,I){if(!g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!I||"object"!==typeof I&&"function"!==typeof I?g:I}(this,g.call(this));return t.gmapInstance=e,t}return function(g,I){if("function"!==typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function, not "+typeof I);g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,enumerable:!1,writable:!0,configurable:!0}}),I&&(Object.setPrototypeOf?Object.setPrototypeOf(g,I):g.__proto__=I)}(I,g),I.prototype.getChildren=function(){return this.gmapInstance.props.children},I.prototype.getMousePosition=function(){return this.gmapInstance.mouse_},I.prototype.getUpdateCounter=function(){return this.gmapInstance.updateCounter_},I.prototype.dispose=function(){this.gmapInstance=null,this.removeAllListeners()},I}(((t=C)&&t.__esModule?t:{default:t}).default);I.default=Q},function(g,I,e){"use strict";var t=Object.prototype.hasOwnProperty,C="function"!==typeof Object.create&&"~";function Q(g,I,e){this.fn=g,this.context=I,this.once=e||!1}function F(){}F.prototype._events=void 0,F.prototype.eventNames=function(){var g,I=this._events,e=[];if(!I)return e;for(g in I)t.call(I,g)&&e.push(C?g.slice(1):g);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(I)):e},F.prototype.listeners=function(g,I){var e=C?C+g:g,t=this._events&&this._events[e];if(I)return!!t;if(!t)return[];if(t.fn)return[t.fn];for(var Q=0,F=t.length,B=new Array(F);Q<F;Q++)B[Q]=t[Q].fn;return B},F.prototype.emit=function(g,I,e,t,Q,F){var B=C?C+g:g;if(!this._events||!this._events[B])return!1;var n,U,s=this._events[B],i=arguments.length;if("function"===typeof s.fn){switch(s.once&&this.removeListener(g,s.fn,void 0,!0),i){case 1:return s.fn.call(s.context),!0;case 2:return s.fn.call(s.context,I),!0;case 3:return s.fn.call(s.context,I,e),!0;case 4:return s.fn.call(s.context,I,e,t),!0;case 5:return s.fn.call(s.context,I,e,t,Q),!0;case 6:return s.fn.call(s.context,I,e,t,Q,F),!0}for(U=1,n=new Array(i-1);U<i;U++)n[U-1]=arguments[U];s.fn.apply(s.context,n)}else{var c,A=s.length;for(U=0;U<A;U++)switch(s[U].once&&this.removeListener(g,s[U].fn,void 0,!0),i){case 1:s[U].fn.call(s[U].context);break;case 2:s[U].fn.call(s[U].context,I);break;case 3:s[U].fn.call(s[U].context,I,e);break;default:if(!n)for(c=1,n=new Array(i-1);c<i;c++)n[c-1]=arguments[c];s[U].fn.apply(s[U].context,n)}}return!0},F.prototype.on=function(g,I,e){var t=new Q(I,e||this),F=C?C+g:g;return this._events||(this._events=C?{}:Object.create(null)),this._events[F]?this._events[F].fn?this._events[F]=[this._events[F],t]:this._events[F].push(t):this._events[F]=t,this},F.prototype.once=function(g,I,e){var t=new Q(I,e||this,!0),F=C?C+g:g;return this._events||(this._events=C?{}:Object.create(null)),this._events[F]?this._events[F].fn?this._events[F]=[this._events[F],t]:this._events[F].push(t):this._events[F]=t,this},F.prototype.removeListener=function(g,I,e,t){var Q=C?C+g:g;if(!this._events||!this._events[Q])return this;var F=this._events[Q],B=[];if(I)if(F.fn)(F.fn!==I||t&&!F.once||e&&F.context!==e)&&B.push(F);else for(var n=0,U=F.length;n<U;n++)(F[n].fn!==I||t&&!F[n].once||e&&F[n].context!==e)&&B.push(F[n]);return B.length?this._events[Q]=1===B.length?B[0]:B:delete this._events[Q],this},F.prototype.removeAllListeners=function(g){return this._events?(g?delete this._events[C?C+g:g]:this._events=C?{}:Object.create(null),this):this},F.prototype.off=F.prototype.removeListener,F.prototype.addListener=F.prototype.on,F.prototype.setMaxListeners=function(){return this},F.prefixed=C,g.exports=F},function(g,I,e){"use strict";I.__esModule=!0;var t=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g};I.default=function(g){return C.default.createElement("div",{style:B},C.default.createElement(Q.default,t({},g,{prerender:!0})))};var C=F(e(0)),Q=F(e(699));function F(g){return g&&g.__esModule?g:{default:g}}var B={width:"50%",height:"50%",left:"50%",top:"50%",margin:0,padding:0,position:"absolute"}},function(g,I,e){"use strict";I.__esModule=!0;I.generateHeatmap=function(g,I){var e=I.positions;return new g.visualization.HeatmapLayer({data:e.reduce((function(I,e){var t=e.lat,C=e.lng,Q=e.weight,F=void 0===Q?1:Q;return I.push({location:new g.LatLng(t,C),weight:F}),I}),[])})},I.optionsHeatmap=function(g,I){var e=I.options,t=void 0===e?{}:e;return Object.keys(t).map((function(I){return g.set(I,t[I])}))}},function(g,I,e){"use strict";I.__esModule=!0;var t=null,C=void 0,Q=void 0,F=new Promise((function(g){Q=g}));I.default=function(g,I){return t||(t=e(1320)),g?C||(C=new Promise((function(e,C){if("undefined"!==typeof window)if(window.google&&window.google.maps)e(window.google.maps);else{"undefined"!==typeof window._$_google_map_initialize_$_&&C(new Error("google map initialization error")),window._$_google_map_initialize_$_=function(){delete window._$_google_map_initialize_$_,e(window.google.maps)};var Q,F=Object.keys(g).reduce((function(I,e){return I+"&"+e+"="+g[e]}),""),B=(Q=g.region)&&"cn"===Q.toLowerCase()?"https://maps.google.cn":"https://maps.googleapis.com";t(B+"/maps/api/js?callback=_$_google_map_initialize_$_"+F+(I?"&libraries=visualization":""),(function(){return"undefined"===typeof window.google&&C(new Error("google map initialization error (not loaded)"))}))}else C(new Error("google map cannot be loaded outside browser env"))})),Q(C),C):F}},function(g,I,e){var t,C,Q;Q=function(){var g,I,e=document,t=e.getElementsByTagName("head")[0],C={},Q={},F={},B={};function n(g,I){for(var e=0,t=g.length;e<t;++e)if(!I(g[e]))return!1;return 1}function U(g,I){n(g,(function(g){return I(g),1}))}function s(I,e,t){I=I.push?I:[I];var c=e&&e.call,A=c?e:t,l=c?I.join(""):e,a=I.length;function r(g){return g.call?g():C[g]}function o(){if(!--a)for(var g in C[l]=1,A&&A(),F)n(g.split("|"),r)&&!U(F[g],r)&&(F[g]=[])}return setTimeout((function(){U(I,(function I(e,t){return null===e?o():(t||/^https?:\/\//.test(e)||!g||(e=-1===e.indexOf(".js")?g+e+".js":g+e),B[e]?(l&&(Q[l]=1),2==B[e]?o():setTimeout((function(){I(e,!0)}),0)):(B[e]=1,l&&(Q[l]=1),void i(e,o)))}))}),0),s}function i(g,C){var Q,F=e.createElement("script");F.onload=F.onerror=F.onreadystatechange=function(){F.readyState&&!/^c|loade/.test(F.readyState)||Q||(F.onload=F.onreadystatechange=null,Q=1,B[g]=2,C())},F.async=1,F.src=I?g+(-1===g.indexOf("?")?"?":"&")+I:g,t.insertBefore(F,t.lastChild)}return s.get=i,s.order=function(g,I,e){!function t(C){C=g.shift(),g.length?s(C,t):s(C,I,e)}()},s.path=function(I){g=I},s.urlArgs=function(g){I=g},s.ready=function(g,I,e){g=g.push?g:[g];var t,Q=[];return!U(g,(function(g){C[g]||Q.push(g)}))&&n(g,(function(g){return C[g]}))?I():(t=g.join("|"),F[t]=F[t]||[],F[t].push(I),e&&e(Q)),s},s.done=function(g){s([null],g)},s},g.exports?g.exports=Q():void 0===(C="function"===typeof(t=Q)?t.call(I,e,I,g):t)||(g.exports=C)},function(g,I,e){"use strict";I.__esModule=!0;var t=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g},C=B(e(702)),Q=B(e(703)),F=B(e(1322));function B(g){return g&&g.__esModule?g:{default:g}}var n=function(){function g(I){!function(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}(this,g),this.hasSize_=!1,this.hasView_=!1,this.transform_=new F.default(I||512)}return g.prototype.setView=function(g,I,e){this.transform_.center=Q.default.convert(g),this.transform_.zoom=+I,this.transform_.bearing=+e,this.hasView_=!0},g.prototype.setViewSize=function(g,I){this.transform_.width=g,this.transform_.height=I,this.hasSize_=!0},g.prototype.setMapCanvasProjection=function(g,I){this.maps_=g,this.mapCanvasProjection_=I},g.prototype.canProject=function(){return this.hasSize_&&this.hasView_},g.prototype.hasSize=function(){return this.hasSize_},g.prototype.fromLatLngToCenterPixel=function(g){return this.transform_.locationPoint(Q.default.convert(g))},g.prototype.fromLatLngToDivPixel=function(g){if(this.mapCanvasProjection_){var I=new this.maps_.LatLng(g.lat,g.lng);return this.mapCanvasProjection_.fromLatLngToDivPixel(I)}return this.fromLatLngToCenterPixel(g)},g.prototype.fromLatLngToContainerPixel=function(g){if(this.mapCanvasProjection_){var I=new this.maps_.LatLng(g.lat,g.lng);return this.mapCanvasProjection_.fromLatLngToContainerPixel(I)}var e=this.fromLatLngToCenterPixel(g);return e.x-=this.transform_.worldSize*Math.round(e.x/this.transform_.worldSize),e.x+=this.transform_.width/2,e.y+=this.transform_.height/2,e},g.prototype.fromContainerPixelToLatLng=function(g){if(this.mapCanvasProjection_){var I=this.mapCanvasProjection_.fromContainerPixelToLatLng(g);return{lat:I.lat(),lng:I.lng()}}var e=t({},g);e.x-=this.transform_.width/2,e.y-=this.transform_.height/2;var Q=this.transform_.pointLocation(C.default.convert(e));return Q.lng-=360*Math.round(Q.lng/360),Q},g.prototype.getWidth=function(){return this.transform_.width},g.prototype.getHeight=function(){return this.transform_.height},g.prototype.getZoom=function(){return this.transform_.zoom},g.prototype.getCenter=function(){return this.transform_.pointLocation({x:0,y:0})},g.prototype.getBounds=function(g,I){var e=g&&g[0]||0,t=g&&g[1]||0,Q=g&&g[2]||0,F=g&&g[3]||0;if(this.getWidth()-t-F>0&&this.getHeight()-e-Q>0){var B=this.transform_.pointLocation(C.default.convert({x:F-this.getWidth()/2,y:e-this.getHeight()/2})),n=this.transform_.pointLocation(C.default.convert({x:this.getWidth()/2-t,y:this.getHeight()/2-Q})),U=[B.lat,B.lng,n.lat,n.lng,n.lat,B.lng,B.lat,n.lng];return I&&(U=U.map((function(g){return Math.round(g*I)/I}))),U}return[0,0,0,0]},g}();I.default=n},function(g,I,e){"use strict";I.__esModule=!0;var t=function(){function g(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}return function(I,e,t){return e&&g(I.prototype,e),t&&g(I,t),I}}(),C=B(e(702)),Q=B(e(703)),F=e(704);function B(g){return g&&g.__esModule?g:{default:g}}var n=function(){function g(I,e,t){!function(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}(this,g),this.tileSize=I||512,this._minZoom=e||0,this._maxZoom=t||52,this.latRange=[-85.05113,85.05113],this.width=0,this.height=0,this.zoom=0,this.center=new Q.default(0,0),this.angle=0}return g.prototype.zoomScale=function(g){return Math.pow(2,g)},g.prototype.scaleZoom=function(g){return Math.log(g)/Math.LN2},g.prototype.project=function(g,I){return new C.default(this.lngX(g.lng,I),this.latY(g.lat,I))},g.prototype.unproject=function(g,I){return new Q.default(this.yLat(g.y,I),this.xLng(g.x,I))},g.prototype.lngX=function(g,I){return(180+g)*(I||this.worldSize)/360},g.prototype.latY=function(g,I){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+g*Math.PI/360)))*(I||this.worldSize)/360},g.prototype.xLng=function(g,I){return 360*g/(I||this.worldSize)-180},g.prototype.yLat=function(g,I){var e=180-360*g/(I||this.worldSize);return 360/Math.PI*Math.atan(Math.exp(e*Math.PI/180))-90},g.prototype.locationPoint=function(g){var I=this.project(g);return this.centerPoint._sub(this.point._sub(I)._rotate(this.angle))},g.prototype.pointLocation=function(g){var I=this.centerPoint._sub(g)._rotate(-this.angle);return this.unproject(this.point.sub(I))},t(g,[{key:"minZoom",get:function(){return this._minZoom},set:function(g){this._minZoom=g,this.zoom=Math.max(this.zoom,g)}},{key:"maxZoom",get:function(){return this._maxZoom},set:function(g){this._maxZoom=g,this.zoom=Math.min(this.zoom,g)}},{key:"worldSize",get:function(){return this.tileSize*this.scale}},{key:"centerPoint",get:function(){return new C.default(0,0)}},{key:"size",get:function(){return new C.default(this.width,this.height)}},{key:"bearing",get:function(){return-this.angle/Math.PI*180},set:function(g){this.angle=-(0,F.wrap)(g,-180,180)*Math.PI/180}},{key:"zoom",get:function(){return this._zoom},set:function(g){var I=Math.min(Math.max(g,this.minZoom),this.maxZoom);this._zoom=I,this.scale=this.zoomScale(I),this.tileZoom=Math.floor(I),this.zoomFraction=I-this.tileZoom}},{key:"x",get:function(){return this.lngX(this.center.lng)}},{key:"y",get:function(){return this.latY(this.center.lat)}},{key:"point",get:function(){return new C.default(this.x,this.y)}}]),g}();I.default=n},function(g,I,e){"use strict";I.__esModule=!0,I.default=function(g){if(window.requestAnimationFrame)return window.requestAnimationFrame(g);var I=window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame;return I?I(g):window.setTimeout(g,1e3/60)}},function(g,I,e){"use strict";I.__esModule=!0,I.default=function(g,I){return Object.keys(g).reduce((function(e,t){return I(g[t])&&(e[t]=g[t]),e}),{})}},function(g,I,e){"use strict";I.__esModule=!0;var t=Math.log2?Math.log2:function(g){return Math.log(g)/Math.LN2};I.default=t},function(g,I,e){"use strict";I.__esModule=!0;var t="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"===typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g};I.default=function(g){if(null!==g&&"object"===("undefined"===typeof g?"undefined":t(g))){if(0===Object.keys(g).length)return!0}else if(null===g||void 0===g||""===g)return!0;return!1}},function(g,I,e){"use strict";I.__esModule=!0;var t="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"===typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g};I.default=function(g){return"number"===typeof g||function(g){return!!g&&"object"===("undefined"===typeof g?"undefined":t(g))}(g)&&"[object Number]"===C.call(g)};var C=Object.prototype.toString},function(g,I,e){"use strict";I.__esModule=!0,I.default=function(){if(t)return t;if("undefined"!==typeof navigator){var g=navigator.userAgent.indexOf("MSIE")>-1,I=navigator.userAgent.indexOf("Firefox")>-1,e=navigator.userAgent.toLowerCase().indexOf("op")>-1,C=navigator.userAgent.indexOf("Chrome")>-1,Q=navigator.userAgent.indexOf("Safari")>-1;return C&&Q&&(Q=!1),C&&e&&(C=!1),t={isExplorer:g,isFirefox:I,isOpera:e,isChrome:C,isSafari:Q}}return t={isChrome:!0,isExplorer:!1,isFirefox:!1,isOpera:!1,isSafari:!1}};var t=null},function(g,I,e){"use strict";I.__esModule=!0;var t="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"===typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g};I.default=function(g){if(!g||"object"!==("undefined"===typeof g?"undefined":t(g)))return!1;var I="function"===typeof g.constructor?Object.getPrototypeOf(g):Object.prototype;if(null===I)return!0;var e=I.constructor;return"function"===typeof e&&e instanceof e&&C(e)===C(Object)};var C=function(g){return Function.prototype.toString.call(g)}},function(g,I,e){"use strict";I.__esModule=!0,I.default=function(g,I,e){if(g&&I){for(var t=0;t!==g.length;++t)if(Math.abs(g[t]-I[t])>e)return!1;return!0}return!1}},function(g,I,e){"use strict";var t,C=e(705),Q=(t=C)&&t.__esModule?t:{default:t};var F,B=!("undefined"===typeof window||!window.document||!window.document.createElement);F=B?window:"undefined"!==typeof self?self:void 0;var n="undefined"!==typeof document&&document.attachEvent,U=!1;if(B&&!n){var s=function(){var g=F.requestAnimationFrame||F.mozRequestAnimationFrame||F.webkitRequestAnimationFrame||function(g){return F.setTimeout(g,20)};return function(I){return g(I)}}(),i=function(){var g=F.cancelAnimationFrame||F.mozCancelAnimationFrame||F.webkitCancelAnimationFrame||F.clearTimeout;return function(I){return g(I)}}(),c=function(g){var I=g.__resizeTriggers__,e=I.firstElementChild,t=I.lastElementChild,C=e.firstElementChild;t.scrollLeft=t.scrollWidth,t.scrollTop=t.scrollHeight,C.style.width=e.offsetWidth+1+"px",C.style.height=e.offsetHeight+1+"px",e.scrollLeft=e.scrollWidth,e.scrollTop=e.scrollHeight},A=function(g){var I=this;c(this),this.__resizeRAF__&&i(this.__resizeRAF__),this.__resizeRAF__=s((function(){(function(g){return g.offsetWidth!=g.__resizeLast__.width||g.offsetHeight!=g.__resizeLast__.height})(I)&&(I.__resizeLast__.width=I.offsetWidth,I.__resizeLast__.height=I.offsetHeight,I.__resizeListeners__.forEach((function(e){e.call(I,g)})))}))},l=!1,a="",r="animationstart",o="Webkit Moz O ms".split(" "),d="webkitAnimationStart animationstart oAnimationStart MSAnimationStart".split(" "),u="";if(B){var y=document.createElement("fakeelement");if(void 0!==y.style.animationName&&(l=!0),!1===l)for(var b=0;b<o.length;b++)if(void 0!==y.style[o[b]+"AnimationName"]){(u=o[b])+"Animation",a="-"+u.toLowerCase()+"-",r=d[b],l=!0;break}}var Z="resizeanim",m="@"+a+"keyframes "+Z+" { from { opacity: 0; } to { opacity: 0; } } ",x=a+"animation: 1ms "+Z+"; "}g.exports={addResizeListener:function(g,I){if(void 0===g.parentNode){var e=document.createElement("div");g.parentNode=e}g=g.parentNode,n?g.attachEvent("onresize",I):(g.__resizeTriggers__||("static"==getComputedStyle(g).position&&(g.style.position="relative"),function(){if(!U){var g=(m||"")+".resize-triggers { "+(x||"")+'visibility: hidden; opacity: 0; } .resize-triggers, .resize-triggers > div, .contract-trigger:before { content: " "; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',I=document.head||document.getElementsByTagName("head")[0],e=document.createElement("style");e.type="text/css",e.styleSheet?e.styleSheet.cssText=g:e.appendChild(document.createTextNode(g)),I.appendChild(e),U=!0}}(),g.__resizeLast__={},g.__resizeListeners__=[],(g.__resizeTriggers__=document.createElement("div")).className="resize-triggers",g.__resizeTriggers__.innerHTML='<div class="expand-trigger"><div></div></div><div class="contract-trigger"></div>',g.appendChild(g.__resizeTriggers__),c(g),(0,Q.default)(g,"scroll",A,!0),r&&g.__resizeTriggers__.addEventListener(r,(function(I){I.animationName==Z&&c(g)}))),g.__resizeListeners__.push(I))},removeResizeListener:function(g,I){g=g.parentNode,n?g.detachEvent("onresize",I):(g.__resizeListeners__.splice(g.__resizeListeners__.indexOf(I),1),g.__resizeListeners__.length||(g.removeEventListener("scroll",A),g.__resizeTriggers__=!g.removeChild(g.__resizeTriggers__)))}}},function(g,I,e){var t=e(1333),C=e(1334),Q=e(1335),F=e(1336),B=e(709);function n(g,I){this.typeNumber=g,this.errorCorrectLevel=I,this.modules=null,this.moduleCount=0,this.dataCache=null,this.dataList=[]}var U=n.prototype;U.addData=function(g){var I=new t(g);this.dataList.push(I),this.dataCache=null},U.isDark=function(g,I){if(g<0||this.moduleCount<=g||I<0||this.moduleCount<=I)throw new Error(g+","+I);return this.modules[g][I]},U.getModuleCount=function(){return this.moduleCount},U.make=function(){if(this.typeNumber<1){var g=1;for(g=1;g<40;g++){for(var I=C.getRSBlocks(g,this.errorCorrectLevel),e=new Q,t=0,B=0;B<I.length;B++)t+=I[B].dataCount;for(B=0;B<this.dataList.length;B++){var n=this.dataList[B];e.put(n.mode,4),e.put(n.getLength(),F.getLengthInBits(n.mode,g)),n.write(e)}if(e.getLengthInBits()<=8*t)break}this.typeNumber=g}this.makeImpl(!1,this.getBestMaskPattern())},U.makeImpl=function(g,I){this.moduleCount=4*this.typeNumber+17,this.modules=new Array(this.moduleCount);for(var e=0;e<this.moduleCount;e++){this.modules[e]=new Array(this.moduleCount);for(var t=0;t<this.moduleCount;t++)this.modules[e][t]=null}this.setupPositionProbePattern(0,0),this.setupPositionProbePattern(this.moduleCount-7,0),this.setupPositionProbePattern(0,this.moduleCount-7),this.setupPositionAdjustPattern(),this.setupTimingPattern(),this.setupTypeInfo(g,I),this.typeNumber>=7&&this.setupTypeNumber(g),null==this.dataCache&&(this.dataCache=n.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,I)},U.setupPositionProbePattern=function(g,I){for(var e=-1;e<=7;e++)if(!(g+e<=-1||this.moduleCount<=g+e))for(var t=-1;t<=7;t++)I+t<=-1||this.moduleCount<=I+t||(this.modules[g+e][I+t]=0<=e&&e<=6&&(0==t||6==t)||0<=t&&t<=6&&(0==e||6==e)||2<=e&&e<=4&&2<=t&&t<=4)},U.getBestMaskPattern=function(){for(var g=0,I=0,e=0;e<8;e++){this.makeImpl(!0,e);var t=F.getLostPoint(this);(0==e||g>t)&&(g=t,I=e)}return I},U.createMovieClip=function(g,I,e){var t=g.createEmptyMovieClip(I,e);this.make();for(var C=0;C<this.modules.length;C++)for(var Q=1*C,F=0;F<this.modules[C].length;F++){var B=1*F;this.modules[C][F]&&(t.beginFill(0,100),t.moveTo(B,Q),t.lineTo(B+1,Q),t.lineTo(B+1,Q+1),t.lineTo(B,Q+1),t.endFill())}return t},U.setupTimingPattern=function(){for(var g=8;g<this.moduleCount-8;g++)null==this.modules[g][6]&&(this.modules[g][6]=g%2==0);for(var I=8;I<this.moduleCount-8;I++)null==this.modules[6][I]&&(this.modules[6][I]=I%2==0)},U.setupPositionAdjustPattern=function(){for(var g=F.getPatternPosition(this.typeNumber),I=0;I<g.length;I++)for(var e=0;e<g.length;e++){var t=g[I],C=g[e];if(null==this.modules[t][C])for(var Q=-2;Q<=2;Q++)for(var B=-2;B<=2;B++)this.modules[t+Q][C+B]=-2==Q||2==Q||-2==B||2==B||0==Q&&0==B}},U.setupTypeNumber=function(g){for(var I=F.getBCHTypeNumber(this.typeNumber),e=0;e<18;e++){var t=!g&&1==(I>>e&1);this.modules[Math.floor(e/3)][e%3+this.moduleCount-8-3]=t}for(e=0;e<18;e++){t=!g&&1==(I>>e&1);this.modules[e%3+this.moduleCount-8-3][Math.floor(e/3)]=t}},U.setupTypeInfo=function(g,I){for(var e=this.errorCorrectLevel<<3|I,t=F.getBCHTypeInfo(e),C=0;C<15;C++){var Q=!g&&1==(t>>C&1);C<6?this.modules[C][8]=Q:C<8?this.modules[C+1][8]=Q:this.modules[this.moduleCount-15+C][8]=Q}for(C=0;C<15;C++){Q=!g&&1==(t>>C&1);C<8?this.modules[8][this.moduleCount-C-1]=Q:C<9?this.modules[8][15-C-1+1]=Q:this.modules[8][15-C-1]=Q}this.modules[this.moduleCount-8][8]=!g},U.mapData=function(g,I){for(var e=-1,t=this.moduleCount-1,C=7,Q=0,B=this.moduleCount-1;B>0;B-=2)for(6==B&&B--;;){for(var n=0;n<2;n++)if(null==this.modules[t][B-n]){var U=!1;Q<g.length&&(U=1==(g[Q]>>>C&1)),F.getMask(I,t,B-n)&&(U=!U),this.modules[t][B-n]=U,-1==--C&&(Q++,C=7)}if((t+=e)<0||this.moduleCount<=t){t-=e,e=-e;break}}},n.PAD0=236,n.PAD1=17,n.createData=function(g,I,e){for(var t=C.getRSBlocks(g,I),B=new Q,U=0;U<e.length;U++){var s=e[U];B.put(s.mode,4),B.put(s.getLength(),F.getLengthInBits(s.mode,g)),s.write(B)}var i=0;for(U=0;U<t.length;U++)i+=t[U].dataCount;if(B.getLengthInBits()>8*i)throw new Error("code length overflow. ("+B.getLengthInBits()+">"+8*i+")");for(B.getLengthInBits()+4<=8*i&&B.put(0,4);B.getLengthInBits()%8!=0;)B.putBit(!1);for(;!(B.getLengthInBits()>=8*i)&&(B.put(n.PAD0,8),!(B.getLengthInBits()>=8*i));)B.put(n.PAD1,8);return n.createBytes(B,t)},n.createBytes=function(g,I){for(var e=0,t=0,C=0,Q=new Array(I.length),n=new Array(I.length),U=0;U<I.length;U++){var s=I[U].dataCount,i=I[U].totalCount-s;t=Math.max(t,s),C=Math.max(C,i),Q[U]=new Array(s);for(var c=0;c<Q[U].length;c++)Q[U][c]=255&g.buffer[c+e];e+=s;var A=F.getErrorCorrectPolynomial(i),l=new B(Q[U],A.getLength()-1).mod(A);n[U]=new Array(A.getLength()-1);for(c=0;c<n[U].length;c++){var a=c+l.getLength()-n[U].length;n[U][c]=a>=0?l.get(a):0}}var r=0;for(c=0;c<I.length;c++)r+=I[c].totalCount;var o=new Array(r),d=0;for(c=0;c<t;c++)for(U=0;U<I.length;U++)c<Q[U].length&&(o[d++]=Q[U][c]);for(c=0;c<C;c++)for(U=0;U<I.length;U++)c<n[U].length&&(o[d++]=n[U][c]);return o},g.exports=n},function(g,I,e){var t=e(707);function C(g){this.mode=t.MODE_8BIT_BYTE,this.data=g}C.prototype={getLength:function(g){return this.data.length},write:function(g){for(var I=0;I<this.data.length;I++)g.put(this.data.charCodeAt(I),8)}},g.exports=C},function(g,I,e){var t=e(708);function C(g,I){this.totalCount=g,this.dataCount=I}C.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]],C.getRSBlocks=function(g,I){var e=C.getRsBlockTable(g,I);if(void 0==e)throw new Error("bad rs block @ typeNumber:"+g+"/errorCorrectLevel:"+I);for(var t=e.length/3,Q=new Array,F=0;F<t;F++)for(var B=e[3*F+0],n=e[3*F+1],U=e[3*F+2],s=0;s<B;s++)Q.push(new C(n,U));return Q},C.getRsBlockTable=function(g,I){switch(I){case t.L:return C.RS_BLOCK_TABLE[4*(g-1)+0];case t.M:return C.RS_BLOCK_TABLE[4*(g-1)+1];case t.Q:return C.RS_BLOCK_TABLE[4*(g-1)+2];case t.H:return C.RS_BLOCK_TABLE[4*(g-1)+3];default:return}},g.exports=C},function(g,I){function e(){this.buffer=new Array,this.length=0}e.prototype={get:function(g){var I=Math.floor(g/8);return 1==(this.buffer[I]>>>7-g%8&1)},put:function(g,I){for(var e=0;e<I;e++)this.putBit(1==(g>>>I-e-1&1))},getLengthInBits:function(){return this.length},putBit:function(g){var I=Math.floor(this.length/8);this.buffer.length<=I&&this.buffer.push(0),g&&(this.buffer[I]|=128>>>this.length%8),this.length++}},g.exports=e},function(g,I,e){var t=e(707),C=e(709),Q=e(710),F=0,B=1,n=2,U=3,s=4,i=5,c=6,A=7,l={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],G15:1335,G18:7973,G15_MASK:21522,getBCHTypeInfo:function(g){for(var I=g<<10;l.getBCHDigit(I)-l.getBCHDigit(l.G15)>=0;)I^=l.G15<<l.getBCHDigit(I)-l.getBCHDigit(l.G15);return(g<<10|I)^l.G15_MASK},getBCHTypeNumber:function(g){for(var I=g<<12;l.getBCHDigit(I)-l.getBCHDigit(l.G18)>=0;)I^=l.G18<<l.getBCHDigit(I)-l.getBCHDigit(l.G18);return g<<12|I},getBCHDigit:function(g){for(var I=0;0!=g;)I++,g>>>=1;return I},getPatternPosition:function(g){return l.PATTERN_POSITION_TABLE[g-1]},getMask:function(g,I,e){switch(g){case F:return(I+e)%2==0;case B:return I%2==0;case n:return e%3==0;case U:return(I+e)%3==0;case s:return(Math.floor(I/2)+Math.floor(e/3))%2==0;case i:return I*e%2+I*e%3==0;case c:return(I*e%2+I*e%3)%2==0;case A:return(I*e%3+(I+e)%2)%2==0;default:throw new Error("bad maskPattern:"+g)}},getErrorCorrectPolynomial:function(g){for(var I=new C([1],0),e=0;e<g;e++)I=I.multiply(new C([1,Q.gexp(e)],0));return I},getLengthInBits:function(g,I){if(1<=I&&I<10)switch(g){case t.MODE_NUMBER:return 10;case t.MODE_ALPHA_NUM:return 9;case t.MODE_8BIT_BYTE:case t.MODE_KANJI:return 8;default:throw new Error("mode:"+g)}else if(I<27)switch(g){case t.MODE_NUMBER:return 12;case t.MODE_ALPHA_NUM:return 11;case t.MODE_8BIT_BYTE:return 16;case t.MODE_KANJI:return 10;default:throw new Error("mode:"+g)}else{if(!(I<41))throw new Error("type:"+I);switch(g){case t.MODE_NUMBER:return 14;case t.MODE_ALPHA_NUM:return 13;case t.MODE_8BIT_BYTE:return 16;case t.MODE_KANJI:return 12;default:throw new Error("mode:"+g)}}},getLostPoint:function(g){for(var I=g.getModuleCount(),e=0,t=0;t<I;t++)for(var C=0;C<I;C++){for(var Q=0,F=g.isDark(t,C),B=-1;B<=1;B++)if(!(t+B<0||I<=t+B))for(var n=-1;n<=1;n++)C+n<0||I<=C+n||0==B&&0==n||F==g.isDark(t+B,C+n)&&Q++;Q>5&&(e+=3+Q-5)}for(t=0;t<I-1;t++)for(C=0;C<I-1;C++){var U=0;g.isDark(t,C)&&U++,g.isDark(t+1,C)&&U++,g.isDark(t,C+1)&&U++,g.isDark(t+1,C+1)&&U++,0!=U&&4!=U||(e+=3)}for(t=0;t<I;t++)for(C=0;C<I-6;C++)g.isDark(t,C)&&!g.isDark(t,C+1)&&g.isDark(t,C+2)&&g.isDark(t,C+3)&&g.isDark(t,C+4)&&!g.isDark(t,C+5)&&g.isDark(t,C+6)&&(e+=40);for(C=0;C<I;C++)for(t=0;t<I-6;t++)g.isDark(t,C)&&!g.isDark(t+1,C)&&g.isDark(t+2,C)&&g.isDark(t+3,C)&&g.isDark(t+4,C)&&!g.isDark(t+5,C)&&g.isDark(t+6,C)&&(e+=40);var s=0;for(C=0;C<I;C++)for(t=0;t<I;t++)g.isDark(t,C)&&s++;return e+=10*(Math.abs(100*s/I/I-50)/5)}};g.exports=l},,function(g,I,e){var t,C,Q=e(711),F=e(712),B=0,n=0;g.exports=function(g,I,e){var U=I&&e||0,s=I||[],i=(g=g||{}).node||t,c=void 0!==g.clockseq?g.clockseq:C;if(null==i||null==c){var A=Q();null==i&&(i=t=[1|A[0],A[1],A[2],A[3],A[4],A[5]]),null==c&&(c=C=16383&(A[6]<<8|A[7]))}var l=void 0!==g.msecs?g.msecs:(new Date).getTime(),a=void 0!==g.nsecs?g.nsecs:n+1,r=l-B+(a-n)/1e4;if(r<0&&void 0===g.clockseq&&(c=c+1&16383),(r<0||l>B)&&void 0===g.nsecs&&(a=0),a>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");B=l,n=a,C=c;var o=(1e4*(268435455&(l+=122192928e5))+a)%4294967296;s[U++]=o>>>24&255,s[U++]=o>>>16&255,s[U++]=o>>>8&255,s[U++]=255&o;var d=l/4294967296*1e4&268435455;s[U++]=d>>>8&255,s[U++]=255&d,s[U++]=d>>>24&15|16,s[U++]=d>>>16&255,s[U++]=c>>>8|128,s[U++]=255&c;for(var u=0;u<6;++u)s[U+u]=i[u];return I||F(s)}},function(g,I,e){var t=e(711),C=e(712);g.exports=function(g,I,e){var Q=I&&e||0;"string"==typeof g&&(I="binary"===g?new Array(16):null,g=null);var F=(g=g||{}).random||(g.rng||t)();if(F[6]=15&F[6]|64,F[8]=63&F[8]|128,I)for(var B=0;B<16;++B)I[Q+B]=F[B];return I||C(F)}},,function(g,I,e){var t=e(713),C=e(407)("socket.io-client:url");g.exports=function(g,I){var e=g;I=I||"undefined"!==typeof location&&location,null==g&&(g=I.protocol+"//"+I.host);"string"===typeof g&&("/"===g.charAt(0)&&(g="/"===g.charAt(1)?I.protocol+g:I.host+g),/^(https?|wss?):\/\//.test(g)||(C("protocol-less url %s",g),g="undefined"!==typeof I?I.protocol+"//"+g:"https://"+g),C("parse %s",g),e=t(g));e.port||(/^(http|ws)$/.test(e.protocol)?e.port="80":/^(http|ws)s$/.test(e.protocol)&&(e.port="443"));e.path=e.path||"/";var Q=-1!==e.host.indexOf(":")?"["+e.host+"]":e.host;return e.id=e.protocol+"://"+Q+":"+e.port,e.href=e.protocol+"://"+Q+(I&&I.port===e.port?"":":"+e.port),e}},function(g,I,e){var t=e(714);g.exports=function(g){function I(g){for(var I=0,e=0;e<g.length;e++)I=(I<<5)-I+g.charCodeAt(e),I|=0;return C.colors[Math.abs(I)%C.colors.length]}function C(g){var e;function t(){for(var g=arguments.length,I=new Array(g),Q=0;Q<g;Q++)I[Q]=arguments[Q];if(t.enabled){var F=t,B=Number(new Date),n=B-(e||B);F.diff=n,F.prev=e,F.curr=B,e=B,I[0]=C.coerce(I[0]),"string"!==typeof I[0]&&I.unshift("%O");var U=0;I[0]=I[0].replace(/%([a-zA-Z%])/g,(function(g,e){if("%%"===g)return g;U++;var t=C.formatters[e];if("function"===typeof t){var Q=I[U];g=t.call(F,Q),I.splice(U,1),U--}return g})),C.formatArgs.call(F,I);var s=F.log||C.log;s.apply(F,I)}}return t.namespace=g,t.enabled=C.enabled(g),t.useColors=C.useColors(),t.color=I(g),t.destroy=Q,t.extend=F,"function"===typeof C.init&&C.init(t),C.instances.push(t),t}function Q(){var g=C.instances.indexOf(this);return-1!==g&&(C.instances.splice(g,1),!0)}function F(g,I){var e=C(this.namespace+("undefined"===typeof I?":":I)+g);return e.log=this.log,e}function B(g){return g.toString().substring(2,g.toString().length-2).replace(/\.\*\?$/,"*")}return C.debug=C,C.default=C,C.coerce=function(g){if(g instanceof Error)return g.stack||g.message;return g},C.disable=function(){var g=[].concat(t(C.names.map(B)),t(C.skips.map(B).map((function(g){return"-"+g})))).join(",");return C.enable(""),g},C.enable=function(g){var I;C.save(g),C.names=[],C.skips=[];var e=("string"===typeof g?g:"").split(/[\s,]+/),t=e.length;for(I=0;I<t;I++)e[I]&&("-"===(g=e[I].replace(/\*/g,".*?"))[0]?C.skips.push(new RegExp("^"+g.substr(1)+"$")):C.names.push(new RegExp("^"+g+"$")));for(I=0;I<C.instances.length;I++){var Q=C.instances[I];Q.enabled=C.enabled(Q.namespace)}},C.enabled=function(g){if("*"===g[g.length-1])return!0;var I,e;for(I=0,e=C.skips.length;I<e;I++)if(C.skips[I].test(g))return!1;for(I=0,e=C.names.length;I<e;I++)if(C.names[I].test(g))return!0;return!1},C.humanize=e(715),Object.keys(g).forEach((function(I){C[I]=g[I]})),C.instances=[],C.names=[],C.skips=[],C.formatters={},C.selectColor=I,C.enable(C.load()),C}},function(g,I,e){var t=e(678);g.exports=function(g){if(Array.isArray(g))return t(g)}},function(g,I){g.exports=function(g){if("undefined"!==typeof Symbol&&Symbol.iterator in Object(g))return Array.from(g)}},function(g,I){g.exports=function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}},function(g,I,e){(function(t){function C(){var g;try{g=I.storage.debug}catch(e){}return!g&&"undefined"!==typeof t&&"env"in t&&(g=Object({NODE_ENV:"production",PUBLIC_URL:"",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0}).DEBUG),g}(I=g.exports=e(1347)).log=function(){return"object"===typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)},I.formatArgs=function(g){var e=this.useColors;if(g[0]=(e?"%c":"")+this.namespace+(e?" %c":" ")+g[0]+(e?"%c ":" ")+"+"+I.humanize(this.diff),!e)return;var t="color: "+this.color;g.splice(1,0,t,"color: inherit");var C=0,Q=0;g[0].replace(/%[a-zA-Z%]/g,(function(g){"%%"!==g&&(C++,"%c"===g&&(Q=C))})),g.splice(Q,0,t)},I.save=function(g){try{null==g?I.storage.removeItem("debug"):I.storage.debug=g}catch(e){}},I.load=C,I.useColors=function(){if("undefined"!==typeof window&&window.process&&"renderer"===window.process.type)return!0;if("undefined"!==typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;return"undefined"!==typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!==typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!==typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!==typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},I.storage="undefined"!=typeof chrome&&"undefined"!=typeof chrome.storage?chrome.storage.local:function(){try{return window.localStorage}catch(g){}}(),I.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],I.formatters.j=function(g){try{return JSON.stringify(g)}catch(I){return"[UnexpectedJSONParseError]: "+I.message}},I.enable(C())}).call(this,e(92))},function(g,I,e){function t(g){var e;function t(){if(t.enabled){var g=t,C=+new Date,Q=C-(e||C);g.diff=Q,g.prev=e,g.curr=C,e=C;for(var F=new Array(arguments.length),B=0;B<F.length;B++)F[B]=arguments[B];F[0]=I.coerce(F[0]),"string"!==typeof F[0]&&F.unshift("%O");var n=0;F[0]=F[0].replace(/%([a-zA-Z%])/g,(function(e,t){if("%%"===e)return e;n++;var C=I.formatters[t];if("function"===typeof C){var Q=F[n];e=C.call(g,Q),F.splice(n,1),n--}return e})),I.formatArgs.call(g,F);var U=t.log||I.log||console.log.bind(console);U.apply(g,F)}}return t.namespace=g,t.enabled=I.enabled(g),t.useColors=I.useColors(),t.color=function(g){var e,t=0;for(e in g)t=(t<<5)-t+g.charCodeAt(e),t|=0;return I.colors[Math.abs(t)%I.colors.length]}(g),t.destroy=C,"function"===typeof I.init&&I.init(t),I.instances.push(t),t}function C(){var g=I.instances.indexOf(this);return-1!==g&&(I.instances.splice(g,1),!0)}(I=g.exports=t.debug=t.default=t).coerce=function(g){return g instanceof Error?g.stack||g.message:g},I.disable=function(){I.enable("")},I.enable=function(g){var e;I.save(g),I.names=[],I.skips=[];var t=("string"===typeof g?g:"").split(/[\s,]+/),C=t.length;for(e=0;e<C;e++)t[e]&&("-"===(g=t[e].replace(/\*/g,".*?"))[0]?I.skips.push(new RegExp("^"+g.substr(1)+"$")):I.names.push(new RegExp("^"+g+"$")));for(e=0;e<I.instances.length;e++){var Q=I.instances[e];Q.enabled=I.enabled(Q.namespace)}},I.enabled=function(g){if("*"===g[g.length-1])return!0;var e,t;for(e=0,t=I.skips.length;e<t;e++)if(I.skips[e].test(g))return!1;for(e=0,t=I.names.length;e<t;e++)if(I.names[e].test(g))return!0;return!1},I.humanize=e(1348),I.instances=[],I.names=[],I.skips=[],I.formatters={}},function(g,I){var e=1e3,t=6e4,C=60*t,Q=24*C;function F(g,I,e){if(!(g<I))return g<1.5*I?Math.floor(g/I)+" "+e:Math.ceil(g/I)+" "+e+"s"}g.exports=function(g,I){I=I||{};var B,n=typeof g;if("string"===n&&g.length>0)return function(g){if((g=String(g)).length>100)return;var I=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(g);if(!I)return;var F=parseFloat(I[1]);switch((I[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*F;case"days":case"day":case"d":return F*Q;case"hours":case"hour":case"hrs":case"hr":case"h":return F*C;case"minutes":case"minute":case"mins":case"min":case"m":return F*t;case"seconds":case"second":case"secs":case"sec":case"s":return F*e;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return F;default:return}}(g);if("number"===n&&!1===isNaN(g))return I.long?F(B=g,Q,"day")||F(B,C,"hour")||F(B,t,"minute")||F(B,e,"second")||B+" ms":function(g){if(g>=Q)return Math.round(g/Q)+"d";if(g>=C)return Math.round(g/C)+"h";if(g>=t)return Math.round(g/t)+"m";if(g>=e)return Math.round(g/e)+"s";return g+"ms"}(g);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(g))}},function(g,I,e){function t(g){if(g)return function(g){for(var I in t.prototype)g[I]=t.prototype[I];return g}(g)}g.exports=t,t.prototype.on=t.prototype.addEventListener=function(g,I){return this._callbacks=this._callbacks||{},(this._callbacks["$"+g]=this._callbacks["$"+g]||[]).push(I),this},t.prototype.once=function(g,I){function e(){this.off(g,e),I.apply(this,arguments)}return e.fn=I,this.on(g,e),this},t.prototype.off=t.prototype.removeListener=t.prototype.removeAllListeners=t.prototype.removeEventListener=function(g,I){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var e,t=this._callbacks["$"+g];if(!t)return this;if(1==arguments.length)return delete this._callbacks["$"+g],this;for(var C=0;C<t.length;C++)if((e=t[C])===I||e.fn===I){t.splice(C,1);break}return this},t.prototype.emit=function(g){this._callbacks=this._callbacks||{};var I=[].slice.call(arguments,1),e=this._callbacks["$"+g];if(e)for(var t=0,C=(e=e.slice(0)).length;t<C;++t)e[t].apply(this,I);return this},t.prototype.listeners=function(g){return this._callbacks=this._callbacks||{},this._callbacks["$"+g]||[]},t.prototype.hasListeners=function(g){return!!this.listeners(g).length}},function(g,I,e){var t=e(716),C=e(717),Q=Object.prototype.toString,F="function"===typeof Blob||"undefined"!==typeof Blob&&"[object BlobConstructor]"===Q.call(Blob),B="function"===typeof File||"undefined"!==typeof File&&"[object FileConstructor]"===Q.call(File);I.deconstructPacket=function(g){var I=[],e=g.data,Q=g;return Q.data=function g(I,e){if(!I)return I;if(C(I)){var Q={_placeholder:!0,num:e.length};return e.push(I),Q}if(t(I)){for(var F=new Array(I.length),B=0;B<I.length;B++)F[B]=g(I[B],e);return F}if("object"===typeof I&&!(I instanceof Date)){F={};for(var n in I)F[n]=g(I[n],e);return F}return I}(e,I),Q.attachments=I.length,{packet:Q,buffers:I}},I.reconstructPacket=function(g,I){return g.data=function g(I,e){if(!I)return I;if(I&&I._placeholder)return e[I.num];if(t(I))for(var C=0;C<I.length;C++)I[C]=g(I[C],e);else if("object"===typeof I)for(var Q in I)I[Q]=g(I[Q],e);return I}(g.data,I),g.attachments=void 0,g},I.removeBlobs=function(g,I){var e=0,Q=g;!function g(n,U,s){if(!n)return n;if(F&&n instanceof Blob||B&&n instanceof File){e++;var i=new FileReader;i.onload=function(){s?s[U]=this.result:Q=this.result,--e||I(Q)},i.readAsArrayBuffer(n)}else if(t(n))for(var c=0;c<n.length;c++)g(n[c],c,n);else if("object"===typeof n&&!C(n))for(var A in n)g(n[A],A,n)}(Q),e||I(Q)}},function(g,I,e){"use strict";I.byteLength=function(g){var I=U(g),e=I[0],t=I[1];return 3*(e+t)/4-t},I.toByteArray=function(g){var I,e,t=U(g),F=t[0],B=t[1],n=new Q(function(g,I,e){return 3*(I+e)/4-e}(0,F,B)),s=0,i=B>0?F-4:F;for(e=0;e<i;e+=4)I=C[g.charCodeAt(e)]<<18|C[g.charCodeAt(e+1)]<<12|C[g.charCodeAt(e+2)]<<6|C[g.charCodeAt(e+3)],n[s++]=I>>16&255,n[s++]=I>>8&255,n[s++]=255&I;2===B&&(I=C[g.charCodeAt(e)]<<2|C[g.charCodeAt(e+1)]>>4,n[s++]=255&I);1===B&&(I=C[g.charCodeAt(e)]<<10|C[g.charCodeAt(e+1)]<<4|C[g.charCodeAt(e+2)]>>2,n[s++]=I>>8&255,n[s++]=255&I);return n},I.fromByteArray=function(g){for(var I,e=g.length,C=e%3,Q=[],F=0,B=e-C;F<B;F+=16383)Q.push(s(g,F,F+16383>B?B:F+16383));1===C?(I=g[e-1],Q.push(t[I>>2]+t[I<<4&63]+"==")):2===C&&(I=(g[e-2]<<8)+g[e-1],Q.push(t[I>>10]+t[I>>4&63]+t[I<<2&63]+"="));return Q.join("")};for(var t=[],C=[],Q="undefined"!==typeof Uint8Array?Uint8Array:Array,F="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",B=0,n=F.length;B<n;++B)t[B]=F[B],C[F.charCodeAt(B)]=B;function U(g){var I=g.length;if(I%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var e=g.indexOf("=");return-1===e&&(e=I),[e,e===I?0:4-e%4]}function s(g,I,e){for(var C,Q,F=[],B=I;B<e;B+=3)C=(g[B]<<16&16711680)+(g[B+1]<<8&65280)+(255&g[B+2]),F.push(t[(Q=C)>>18&63]+t[Q>>12&63]+t[Q>>6&63]+t[63&Q]);return F.join("")}C["-".charCodeAt(0)]=62,C["_".charCodeAt(0)]=63},function(g,I){I.read=function(g,I,e,t,C){var Q,F,B=8*C-t-1,n=(1<<B)-1,U=n>>1,s=-7,i=e?C-1:0,c=e?-1:1,A=g[I+i];for(i+=c,Q=A&(1<<-s)-1,A>>=-s,s+=B;s>0;Q=256*Q+g[I+i],i+=c,s-=8);for(F=Q&(1<<-s)-1,Q>>=-s,s+=t;s>0;F=256*F+g[I+i],i+=c,s-=8);if(0===Q)Q=1-U;else{if(Q===n)return F?NaN:1/0*(A?-1:1);F+=Math.pow(2,t),Q-=U}return(A?-1:1)*F*Math.pow(2,Q-t)},I.write=function(g,I,e,t,C,Q){var F,B,n,U=8*Q-C-1,s=(1<<U)-1,i=s>>1,c=23===C?Math.pow(2,-24)-Math.pow(2,-77):0,A=t?0:Q-1,l=t?1:-1,a=I<0||0===I&&1/I<0?1:0;for(I=Math.abs(I),isNaN(I)||I===1/0?(B=isNaN(I)?1:0,F=s):(F=Math.floor(Math.log(I)/Math.LN2),I*(n=Math.pow(2,-F))<1&&(F--,n*=2),(I+=F+i>=1?c/n:c*Math.pow(2,1-i))*n>=2&&(F++,n/=2),F+i>=s?(B=0,F=s):F+i>=1?(B=(I*n-1)*Math.pow(2,C),F+=i):(B=I*Math.pow(2,i-1)*Math.pow(2,C),F=0));C>=8;g[e+A]=255&B,A+=l,B/=256,C-=8);for(F=F<<C|B,U+=C;U>0;g[e+A]=255&F,A+=l,F/=256,U-=8);g[e+A-l]|=128*a}},function(g,I,e){g.exports=e(1354),g.exports.parser=e(285)},function(g,I,e){var t=e(720),C=e(527),Q=e(410)("engine.io-client:socket"),F=e(724),B=e(285),n=e(713),U=e(408);function s(g,I){if(!(this instanceof s))return new s(g,I);I=I||{},g&&"object"===typeof g&&(I=g,g=null),g?(g=n(g),I.hostname=g.host,I.secure="https"===g.protocol||"wss"===g.protocol,I.port=g.port,g.query&&(I.query=g.query)):I.host&&(I.hostname=n(I.host).host),this.secure=null!=I.secure?I.secure:"undefined"!==typeof location&&"https:"===location.protocol,I.hostname&&!I.port&&(I.port=this.secure?"443":"80"),this.agent=I.agent||!1,this.hostname=I.hostname||("undefined"!==typeof location?location.hostname:"localhost"),this.port=I.port||("undefined"!==typeof location&&location.port?location.port:this.secure?443:80),this.query=I.query||{},"string"===typeof this.query&&(this.query=U.decode(this.query)),this.upgrade=!1!==I.upgrade,this.path=(I.path||"/engine.io").replace(/\/$/,"")+"/",this.forceJSONP=!!I.forceJSONP,this.jsonp=!1!==I.jsonp,this.forceBase64=!!I.forceBase64,this.enablesXDR=!!I.enablesXDR,this.withCredentials=!1!==I.withCredentials,this.timestampParam=I.timestampParam||"t",this.timestampRequests=I.timestampRequests,this.transports=I.transports||["polling","websocket"],this.transportOptions=I.transportOptions||{},this.readyState="",this.writeBuffer=[],this.prevBufferLen=0,this.policyPort=I.policyPort||843,this.rememberUpgrade=I.rememberUpgrade||!1,this.binaryType=null,this.onlyBinaryUpgrades=I.onlyBinaryUpgrades,this.perMessageDeflate=!1!==I.perMessageDeflate&&(I.perMessageDeflate||{}),!0===this.perMessageDeflate&&(this.perMessageDeflate={}),this.perMessageDeflate&&null==this.perMessageDeflate.threshold&&(this.perMessageDeflate.threshold=1024),this.pfx=I.pfx||null,this.key=I.key||null,this.passphrase=I.passphrase||null,this.cert=I.cert||null,this.ca=I.ca||null,this.ciphers=I.ciphers||null,this.rejectUnauthorized=void 0===I.rejectUnauthorized||I.rejectUnauthorized,this.forceNode=!!I.forceNode,this.isReactNative="undefined"!==typeof navigator&&"string"===typeof navigator.product&&"reactnative"===navigator.product.toLowerCase(),("undefined"===typeof self||this.isReactNative)&&(I.extraHeaders&&Object.keys(I.extraHeaders).length>0&&(this.extraHeaders=I.extraHeaders),I.localAddress&&(this.localAddress=I.localAddress)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingIntervalTimer=null,this.pingTimeoutTimer=null,this.open()}g.exports=s,s.priorWebsocketSuccess=!1,C(s.prototype),s.protocol=B.protocol,s.Socket=s,s.Transport=e(526),s.transports=e(720),s.parser=e(285),s.prototype.createTransport=function(g){Q('creating transport "%s"',g);var I=function(g){var I={};for(var e in g)g.hasOwnProperty(e)&&(I[e]=g[e]);return I}(this.query);I.EIO=B.protocol,I.transport=g;var e=this.transportOptions[g]||{};return this.id&&(I.sid=this.id),new t[g]({query:I,socket:this,agent:e.agent||this.agent,hostname:e.hostname||this.hostname,port:e.port||this.port,secure:e.secure||this.secure,path:e.path||this.path,forceJSONP:e.forceJSONP||this.forceJSONP,jsonp:e.jsonp||this.jsonp,forceBase64:e.forceBase64||this.forceBase64,enablesXDR:e.enablesXDR||this.enablesXDR,withCredentials:e.withCredentials||this.withCredentials,timestampRequests:e.timestampRequests||this.timestampRequests,timestampParam:e.timestampParam||this.timestampParam,policyPort:e.policyPort||this.policyPort,pfx:e.pfx||this.pfx,key:e.key||this.key,passphrase:e.passphrase||this.passphrase,cert:e.cert||this.cert,ca:e.ca||this.ca,ciphers:e.ciphers||this.ciphers,rejectUnauthorized:e.rejectUnauthorized||this.rejectUnauthorized,perMessageDeflate:e.perMessageDeflate||this.perMessageDeflate,extraHeaders:e.extraHeaders||this.extraHeaders,forceNode:e.forceNode||this.forceNode,localAddress:e.localAddress||this.localAddress,requestTimeout:e.requestTimeout||this.requestTimeout,protocols:e.protocols||void 0,isReactNative:this.isReactNative})},s.prototype.open=function(){var g;if(this.rememberUpgrade&&s.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))g="websocket";else{if(0===this.transports.length){var I=this;return void setTimeout((function(){I.emit("error","No transports available")}),0)}g=this.transports[0]}this.readyState="opening";try{g=this.createTransport(g)}catch(e){return this.transports.shift(),void this.open()}g.open(),this.setTransport(g)},s.prototype.setTransport=function(g){Q("setting transport %s",g.name);var I=this;this.transport&&(Q("clearing existing transport %s",this.transport.name),this.transport.removeAllListeners()),this.transport=g,g.on("drain",(function(){I.onDrain()})).on("packet",(function(g){I.onPacket(g)})).on("error",(function(g){I.onError(g)})).on("close",(function(){I.onClose("transport close")}))},s.prototype.probe=function(g){Q('probing transport "%s"',g);var I=this.createTransport(g,{probe:1}),e=!1,t=this;function C(){if(t.onlyBinaryUpgrades){var C=!this.supportsBinary&&t.transport.supportsBinary;e=e||C}e||(Q('probe transport "%s" opened',g),I.send([{type:"ping",data:"probe"}]),I.once("packet",(function(C){if(!e)if("pong"===C.type&&"probe"===C.data){if(Q('probe transport "%s" pong',g),t.upgrading=!0,t.emit("upgrading",I),!I)return;s.priorWebsocketSuccess="websocket"===I.name,Q('pausing current transport "%s"',t.transport.name),t.transport.pause((function(){e||"closed"!==t.readyState&&(Q("changing transport and sending upgrade packet"),c(),t.setTransport(I),I.send([{type:"upgrade"}]),t.emit("upgrade",I),I=null,t.upgrading=!1,t.flush())}))}else{Q('probe transport "%s" failed',g);var F=new Error("probe error");F.transport=I.name,t.emit("upgradeError",F)}})))}function F(){e||(e=!0,c(),I.close(),I=null)}function B(e){var C=new Error("probe error: "+e);C.transport=I.name,F(),Q('probe transport "%s" failed because of error: %s',g,e),t.emit("upgradeError",C)}function n(){B("transport closed")}function U(){B("socket closed")}function i(g){I&&g.name!==I.name&&(Q('"%s" works - aborting "%s"',g.name,I.name),F())}function c(){I.removeListener("open",C),I.removeListener("error",B),I.removeListener("close",n),t.removeListener("close",U),t.removeListener("upgrading",i)}s.priorWebsocketSuccess=!1,I.once("open",C),I.once("error",B),I.once("close",n),this.once("close",U),this.once("upgrading",i),I.open()},s.prototype.onOpen=function(){if(Q("socket open"),this.readyState="open",s.priorWebsocketSuccess="websocket"===this.transport.name,this.emit("open"),this.flush(),"open"===this.readyState&&this.upgrade&&this.transport.pause){Q("starting upgrade probes");for(var g=0,I=this.upgrades.length;g<I;g++)this.probe(this.upgrades[g])}},s.prototype.onPacket=function(g){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState)switch(Q('socket receive: type "%s", data "%s"',g.type,g.data),this.emit("packet",g),this.emit("heartbeat"),g.type){case"open":this.onHandshake(JSON.parse(g.data));break;case"pong":this.setPing(),this.emit("pong");break;case"error":var I=new Error("server error");I.code=g.data,this.onError(I);break;case"message":this.emit("data",g.data),this.emit("message",g.data)}else Q('packet received with socket readyState "%s"',this.readyState)},s.prototype.onHandshake=function(g){this.emit("handshake",g),this.id=g.sid,this.transport.query.sid=g.sid,this.upgrades=this.filterUpgrades(g.upgrades),this.pingInterval=g.pingInterval,this.pingTimeout=g.pingTimeout,this.onOpen(),"closed"!==this.readyState&&(this.setPing(),this.removeListener("heartbeat",this.onHeartbeat),this.on("heartbeat",this.onHeartbeat))},s.prototype.onHeartbeat=function(g){clearTimeout(this.pingTimeoutTimer);var I=this;I.pingTimeoutTimer=setTimeout((function(){"closed"!==I.readyState&&I.onClose("ping timeout")}),g||I.pingInterval+I.pingTimeout)},s.prototype.setPing=function(){var g=this;clearTimeout(g.pingIntervalTimer),g.pingIntervalTimer=setTimeout((function(){Q("writing ping packet - expecting pong within %sms",g.pingTimeout),g.ping(),g.onHeartbeat(g.pingTimeout)}),g.pingInterval)},s.prototype.ping=function(){var g=this;this.sendPacket("ping",(function(){g.emit("ping")}))},s.prototype.onDrain=function(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,0===this.writeBuffer.length?this.emit("drain"):this.flush()},s.prototype.flush=function(){"closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length&&(Q("flushing %d packets in socket",this.writeBuffer.length),this.transport.send(this.writeBuffer),this.prevBufferLen=this.writeBuffer.length,this.emit("flush"))},s.prototype.write=s.prototype.send=function(g,I,e){return this.sendPacket("message",g,I,e),this},s.prototype.sendPacket=function(g,I,e,t){if("function"===typeof I&&(t=I,I=void 0),"function"===typeof e&&(t=e,e=null),"closing"!==this.readyState&&"closed"!==this.readyState){(e=e||{}).compress=!1!==e.compress;var C={type:g,data:I,options:e};this.emit("packetCreate",C),this.writeBuffer.push(C),t&&this.once("flush",t),this.flush()}},s.prototype.close=function(){if("opening"===this.readyState||"open"===this.readyState){this.readyState="closing";var g=this;this.writeBuffer.length?this.once("drain",(function(){this.upgrading?t():I()})):this.upgrading?t():I()}function I(){g.onClose("forced close"),Q("socket closing - telling transport to close"),g.transport.close()}function e(){g.removeListener("upgrade",e),g.removeListener("upgradeError",e),I()}function t(){g.once("upgrade",e),g.once("upgradeError",e)}return this},s.prototype.onError=function(g){Q("socket error %j",g),s.priorWebsocketSuccess=!1,this.emit("error",g),this.onClose("transport error",g)},s.prototype.onClose=function(g,I){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState){Q('socket close with reason: "%s"',g);clearTimeout(this.pingIntervalTimer),clearTimeout(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),this.readyState="closed",this.id=null,this.emit("close",g,I),this.writeBuffer=[],this.prevBufferLen=0}},s.prototype.filterUpgrades=function(g){for(var I=[],e=0,t=g.length;e<t;e++)~F(this.transports,g[e])&&I.push(g[e]);return I}},function(g,I){try{g.exports="undefined"!==typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(e){g.exports=!1}},function(g,I,e){var t=e(524),C=e(721),Q=e(527),F=e(409),B=e(410)("engine.io-client:polling-xhr"),n=e(525);function U(){}function s(g){if(C.call(this,g),this.requestTimeout=g.requestTimeout,this.extraHeaders=g.extraHeaders,"undefined"!==typeof location){var I="https:"===location.protocol,e=location.port;e||(e=I?443:80),this.xd="undefined"!==typeof location&&g.hostname!==location.hostname||e!==g.port,this.xs=g.secure!==I}}function i(g){this.method=g.method||"GET",this.uri=g.uri,this.xd=!!g.xd,this.xs=!!g.xs,this.async=!1!==g.async,this.data=void 0!==g.data?g.data:null,this.agent=g.agent,this.isBinary=g.isBinary,this.supportsBinary=g.supportsBinary,this.enablesXDR=g.enablesXDR,this.withCredentials=g.withCredentials,this.requestTimeout=g.requestTimeout,this.pfx=g.pfx,this.key=g.key,this.passphrase=g.passphrase,this.cert=g.cert,this.ca=g.ca,this.ciphers=g.ciphers,this.rejectUnauthorized=g.rejectUnauthorized,this.extraHeaders=g.extraHeaders,this.create()}if(g.exports=s,g.exports.Request=i,F(s,C),s.prototype.supportsBinary=!0,s.prototype.request=function(g){return(g=g||{}).uri=this.uri(),g.xd=this.xd,g.xs=this.xs,g.agent=this.agent||!1,g.supportsBinary=this.supportsBinary,g.enablesXDR=this.enablesXDR,g.withCredentials=this.withCredentials,g.pfx=this.pfx,g.key=this.key,g.passphrase=this.passphrase,g.cert=this.cert,g.ca=this.ca,g.ciphers=this.ciphers,g.rejectUnauthorized=this.rejectUnauthorized,g.requestTimeout=this.requestTimeout,g.extraHeaders=this.extraHeaders,new i(g)},s.prototype.doWrite=function(g,I){var e="string"!==typeof g&&void 0!==g,t=this.request({method:"POST",data:g,isBinary:e}),C=this;t.on("success",I),t.on("error",(function(g){C.onError("xhr post error",g)})),this.sendXhr=t},s.prototype.doPoll=function(){B("xhr poll");var g=this.request(),I=this;g.on("data",(function(g){I.onData(g)})),g.on("error",(function(g){I.onError("xhr poll error",g)})),this.pollXhr=g},Q(i.prototype),i.prototype.create=function(){var g={agent:this.agent,xdomain:this.xd,xscheme:this.xs,enablesXDR:this.enablesXDR};g.pfx=this.pfx,g.key=this.key,g.passphrase=this.passphrase,g.cert=this.cert,g.ca=this.ca,g.ciphers=this.ciphers,g.rejectUnauthorized=this.rejectUnauthorized;var I=this.xhr=new t(g),e=this;try{B("xhr open %s: %s",this.method,this.uri),I.open(this.method,this.uri,this.async);try{if(this.extraHeaders)for(var C in I.setDisableHeaderCheck&&I.setDisableHeaderCheck(!0),this.extraHeaders)this.extraHeaders.hasOwnProperty(C)&&I.setRequestHeader(C,this.extraHeaders[C])}catch(Q){}if("POST"===this.method)try{this.isBinary?I.setRequestHeader("Content-type","application/octet-stream"):I.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(Q){}try{I.setRequestHeader("Accept","*/*")}catch(Q){}"withCredentials"in I&&(I.withCredentials=this.withCredentials),this.requestTimeout&&(I.timeout=this.requestTimeout),this.hasXDR()?(I.onload=function(){e.onLoad()},I.onerror=function(){e.onError(I.responseText)}):I.onreadystatechange=function(){if(2===I.readyState)try{var g=I.getResponseHeader("Content-Type");(e.supportsBinary&&"application/octet-stream"===g||"application/octet-stream; charset=UTF-8"===g)&&(I.responseType="arraybuffer")}catch(Q){}4===I.readyState&&(200===I.status||1223===I.status?e.onLoad():setTimeout((function(){e.onError("number"===typeof I.status?I.status:0)}),0))},B("xhr data %s",this.data),I.send(this.data)}catch(Q){return void setTimeout((function(){e.onError(Q)}),0)}"undefined"!==typeof document&&(this.index=i.requestsCount++,i.requests[this.index]=this)},i.prototype.onSuccess=function(){this.emit("success"),this.cleanup()},i.prototype.onData=function(g){this.emit("data",g),this.onSuccess()},i.prototype.onError=function(g){this.emit("error",g),this.cleanup(!0)},i.prototype.cleanup=function(g){if("undefined"!==typeof this.xhr&&null!==this.xhr){if(this.hasXDR()?this.xhr.onload=this.xhr.onerror=U:this.xhr.onreadystatechange=U,g)try{this.xhr.abort()}catch(I){}"undefined"!==typeof document&&delete i.requests[this.index],this.xhr=null}},i.prototype.onLoad=function(){var g;try{var I;try{I=this.xhr.getResponseHeader("Content-Type")}catch(e){}g=("application/octet-stream"===I||"application/octet-stream; charset=UTF-8"===I)&&this.xhr.response||this.xhr.responseText}catch(e){this.onError(e)}null!=g&&this.onData(g)},i.prototype.hasXDR=function(){return"undefined"!==typeof XDomainRequest&&!this.xs&&this.enablesXDR},i.prototype.abort=function(){this.cleanup()},i.requestsCount=0,i.requests={},"undefined"!==typeof document)if("function"===typeof attachEvent)attachEvent("onunload",c);else if("function"===typeof addEventListener){addEventListener("onpagehide"in n?"pagehide":"unload",c,!1)}function c(){for(var g in i.requests)i.requests.hasOwnProperty(g)&&i.requests[g].abort()}},function(g,I){g.exports=Object.keys||function(g){var I=[],e=Object.prototype.hasOwnProperty;for(var t in g)e.call(g,t)&&I.push(t);return I}},function(g,I){var e={}.toString;g.exports=Array.isArray||function(g){return"[object Array]"==e.call(g)}},function(g,I){g.exports=function(g,I,e){var t=g.byteLength;if(I=I||0,e=e||t,g.slice)return g.slice(I,e);if(I<0&&(I+=t),e<0&&(e+=t),e>t&&(e=t),I>=t||I>=e||0===t)return new ArrayBuffer(0);for(var C=new Uint8Array(g),Q=new Uint8Array(e-I),F=I,B=0;F<e;F++,B++)Q[B]=C[F];return Q.buffer}},function(g,I){function e(){}g.exports=function(g,I,t){var C=!1;return t=t||e,Q.count=g,0===g?I():Q;function Q(g,e){if(Q.count<=0)throw new Error("after called too many times");--Q.count,g?(C=!0,I(g),I=t):0!==Q.count||C||I(null,e)}}},function(g,I){var e,t,C,Q=String.fromCharCode;function F(g){for(var I,e,t=[],C=0,Q=g.length;C<Q;)(I=g.charCodeAt(C++))>=55296&&I<=56319&&C<Q?56320==(64512&(e=g.charCodeAt(C++)))?t.push(((1023&I)<<10)+(1023&e)+65536):(t.push(I),C--):t.push(I);return t}function B(g,I){if(g>=55296&&g<=57343){if(I)throw Error("Lone surrogate U+"+g.toString(16).toUpperCase()+" is not a scalar value");return!1}return!0}function n(g,I){return Q(g>>I&63|128)}function U(g,I){if(0==(4294967168&g))return Q(g);var e="";return 0==(4294965248&g)?e=Q(g>>6&31|192):0==(4294901760&g)?(B(g,I)||(g=65533),e=Q(g>>12&15|224),e+=n(g,6)):0==(4292870144&g)&&(e=Q(g>>18&7|240),e+=n(g,12),e+=n(g,6)),e+=Q(63&g|128)}function s(){if(C>=t)throw Error("Invalid byte index");var g=255&e[C];if(C++,128==(192&g))return 63&g;throw Error("Invalid continuation byte")}function i(g){var I,Q;if(C>t)throw Error("Invalid byte index");if(C==t)return!1;if(I=255&e[C],C++,0==(128&I))return I;if(192==(224&I)){if((Q=(31&I)<<6|s())>=128)return Q;throw Error("Invalid continuation byte")}if(224==(240&I)){if((Q=(15&I)<<12|s()<<6|s())>=2048)return B(Q,g)?Q:65533;throw Error("Invalid continuation byte")}if(240==(248&I)&&(Q=(7&I)<<18|s()<<12|s()<<6|s())>=65536&&Q<=1114111)return Q;throw Error("Invalid UTF-8 detected")}g.exports={version:"2.1.2",encode:function(g,I){for(var e=!1!==(I=I||{}).strict,t=F(g),C=t.length,Q=-1,B="";++Q<C;)B+=U(t[Q],e);return B},decode:function(g,I){var B=!1!==(I=I||{}).strict;e=F(g),t=e.length,C=0;for(var n,U=[];!1!==(n=i(B));)U.push(n);return function(g){for(var I,e=g.length,t=-1,C="";++t<e;)(I=g[t])>65535&&(C+=Q((I-=65536)>>>10&1023|55296),I=56320|1023&I),C+=Q(I);return C}(U)}}},function(g,I){!function(){"use strict";for(var g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",e=new Uint8Array(256),t=0;t<g.length;t++)e[g.charCodeAt(t)]=t;I.encode=function(I){var e,t=new Uint8Array(I),C=t.length,Q="";for(e=0;e<C;e+=3)Q+=g[t[e]>>2],Q+=g[(3&t[e])<<4|t[e+1]>>4],Q+=g[(15&t[e+1])<<2|t[e+2]>>6],Q+=g[63&t[e+2]];return C%3===2?Q=Q.substring(0,Q.length-1)+"=":C%3===1&&(Q=Q.substring(0,Q.length-2)+"=="),Q},I.decode=function(g){var I,t,C,Q,F,B=.75*g.length,n=g.length,U=0;"="===g[g.length-1]&&(B--,"="===g[g.length-2]&&B--);var s=new ArrayBuffer(B),i=new Uint8Array(s);for(I=0;I<n;I+=4)t=e[g.charCodeAt(I)],C=e[g.charCodeAt(I+1)],Q=e[g.charCodeAt(I+2)],F=e[g.charCodeAt(I+3)],i[U++]=t<<2|C>>4,i[U++]=(15&C)<<4|Q>>2,i[U++]=(3&Q)<<6|63&F;return s}}()},function(g,I){var e="undefined"!==typeof e?e:"undefined"!==typeof WebKitBlobBuilder?WebKitBlobBuilder:"undefined"!==typeof MSBlobBuilder?MSBlobBuilder:"undefined"!==typeof MozBlobBuilder&&MozBlobBuilder,t=function(){try{return 2===new Blob(["hi"]).size}catch(g){return!1}}(),C=t&&function(){try{return 2===new Blob([new Uint8Array([1,2])]).size}catch(g){return!1}}(),Q=e&&e.prototype.append&&e.prototype.getBlob;function F(g){return g.map((function(g){if(g.buffer instanceof ArrayBuffer){var I=g.buffer;if(g.byteLength!==I.byteLength){var e=new Uint8Array(g.byteLength);e.set(new Uint8Array(I,g.byteOffset,g.byteLength)),I=e.buffer}return I}return g}))}function B(g,I){I=I||{};var t=new e;return F(g).forEach((function(g){t.append(g)})),I.type?t.getBlob(I.type):t.getBlob()}function n(g,I){return new Blob(F(g),I||{})}"undefined"!==typeof Blob&&(B.prototype=Blob.prototype,n.prototype=Blob.prototype),g.exports=t?C?Blob:n:Q?B:void 0},function(g,I,e){var t=e(714);g.exports=function(g){function I(g){for(var I=0,e=0;e<g.length;e++)I=(I<<5)-I+g.charCodeAt(e),I|=0;return C.colors[Math.abs(I)%C.colors.length]}function C(g){var e;function t(){for(var g=arguments.length,I=new Array(g),Q=0;Q<g;Q++)I[Q]=arguments[Q];if(t.enabled){var F=t,B=Number(new Date),n=B-(e||B);F.diff=n,F.prev=e,F.curr=B,e=B,I[0]=C.coerce(I[0]),"string"!==typeof I[0]&&I.unshift("%O");var U=0;I[0]=I[0].replace(/%([a-zA-Z%])/g,(function(g,e){if("%%"===g)return g;U++;var t=C.formatters[e];if("function"===typeof t){var Q=I[U];g=t.call(F,Q),I.splice(U,1),U--}return g})),C.formatArgs.call(F,I);var s=F.log||C.log;s.apply(F,I)}}return t.namespace=g,t.enabled=C.enabled(g),t.useColors=C.useColors(),t.color=I(g),t.destroy=Q,t.extend=F,"function"===typeof C.init&&C.init(t),C.instances.push(t),t}function Q(){var g=C.instances.indexOf(this);return-1!==g&&(C.instances.splice(g,1),!0)}function F(g,I){var e=C(this.namespace+("undefined"===typeof I?":":I)+g);return e.log=this.log,e}function B(g){return g.toString().substring(2,g.toString().length-2).replace(/\.\*\?$/,"*")}return C.debug=C,C.default=C,C.coerce=function(g){if(g instanceof Error)return g.stack||g.message;return g},C.disable=function(){var g=[].concat(t(C.names.map(B)),t(C.skips.map(B).map((function(g){return"-"+g})))).join(",");return C.enable(""),g},C.enable=function(g){var I;C.save(g),C.names=[],C.skips=[];var e=("string"===typeof g?g:"").split(/[\s,]+/),t=e.length;for(I=0;I<t;I++)e[I]&&("-"===(g=e[I].replace(/\*/g,".*?"))[0]?C.skips.push(new RegExp("^"+g.substr(1)+"$")):C.names.push(new RegExp("^"+g+"$")));for(I=0;I<C.instances.length;I++){var Q=C.instances[I];Q.enabled=C.enabled(Q.namespace)}},C.enabled=function(g){if("*"===g[g.length-1])return!0;var I,e;for(I=0,e=C.skips.length;I<e;I++)if(C.skips[I].test(g))return!1;for(I=0,e=C.names.length;I<e;I++)if(C.names[I].test(g))return!0;return!1},C.humanize=e(715),Object.keys(g).forEach((function(I){C[I]=g[I]})),C.instances=[],C.names=[],C.skips=[],C.formatters={},C.selectColor=I,C.enable(C.load()),C}},function(g,I,e){var t=e(721),C=e(409),Q=e(525);g.exports=s;var F,B=/\n/g,n=/\\n/g;function U(){}function s(g){t.call(this,g),this.query=this.query||{},F||(F=Q.___eio=Q.___eio||[]),this.index=F.length;var I=this;F.push((function(g){I.onData(g)})),this.query.j=this.index,"function"===typeof addEventListener&&addEventListener("beforeunload",(function(){I.script&&(I.script.onerror=U)}),!1)}C(s,t),s.prototype.supportsBinary=!1,s.prototype.doClose=function(){this.script&&(this.script.parentNode.removeChild(this.script),this.script=null),this.form&&(this.form.parentNode.removeChild(this.form),this.form=null,this.iframe=null),t.prototype.doClose.call(this)},s.prototype.doPoll=function(){var g=this,I=document.createElement("script");this.script&&(this.script.parentNode.removeChild(this.script),this.script=null),I.async=!0,I.src=this.uri(),I.onerror=function(I){g.onError("jsonp poll error",I)};var e=document.getElementsByTagName("script")[0];e?e.parentNode.insertBefore(I,e):(document.head||document.body).appendChild(I),this.script=I,"undefined"!==typeof navigator&&/gecko/i.test(navigator.userAgent)&&setTimeout((function(){var g=document.createElement("iframe");document.body.appendChild(g),document.body.removeChild(g)}),100)},s.prototype.doWrite=function(g,I){var e=this;if(!this.form){var t,C=document.createElement("form"),Q=document.createElement("textarea"),F=this.iframeId="eio_iframe_"+this.index;C.className="socketio",C.style.position="absolute",C.style.top="-1000px",C.style.left="-1000px",C.target=F,C.method="POST",C.setAttribute("accept-charset","utf-8"),Q.name="d",C.appendChild(Q),document.body.appendChild(C),this.form=C,this.area=Q}function U(){s(),I()}function s(){if(e.iframe)try{e.form.removeChild(e.iframe)}catch(I){e.onError("jsonp polling iframe removal error",I)}try{var g='<iframe src="javascript:0" name="'+e.iframeId+'">';t=document.createElement(g)}catch(I){(t=document.createElement("iframe")).name=e.iframeId,t.src="javascript:0"}t.id=e.iframeId,e.form.appendChild(t),e.iframe=t}this.form.action=this.uri(),s(),g=g.replace(n,"\\\n"),this.area.value=g.replace(B,"\\n");try{this.form.submit()}catch(i){}this.iframe.attachEvent?this.iframe.onreadystatechange=function(){"complete"===e.iframe.readyState&&U()}:this.iframe.onload=U}},function(g,I,e){(function(I){var t,C,Q=e(526),F=e(285),B=e(408),n=e(409),U=e(723),s=e(410)("engine.io-client:websocket");if("undefined"!==typeof WebSocket?t=WebSocket:"undefined"!==typeof self&&(t=self.WebSocket||self.MozWebSocket),"undefined"===typeof window)try{C=e(1367)}catch(A){}var i=t||C;function c(g){g&&g.forceBase64&&(this.supportsBinary=!1),this.perMessageDeflate=g.perMessageDeflate,this.usingBrowserWebSocket=t&&!g.forceNode,this.protocols=g.protocols,this.usingBrowserWebSocket||(i=C),Q.call(this,g)}g.exports=c,n(c,Q),c.prototype.name="websocket",c.prototype.supportsBinary=!0,c.prototype.doOpen=function(){if(this.check()){var g=this.uri(),I=this.protocols,e={};this.isReactNative||(e.agent=this.agent,e.perMessageDeflate=this.perMessageDeflate,e.pfx=this.pfx,e.key=this.key,e.passphrase=this.passphrase,e.cert=this.cert,e.ca=this.ca,e.ciphers=this.ciphers,e.rejectUnauthorized=this.rejectUnauthorized),this.extraHeaders&&(e.headers=this.extraHeaders),this.localAddress&&(e.localAddress=this.localAddress);try{this.ws=this.usingBrowserWebSocket&&!this.isReactNative?I?new i(g,I):new i(g):new i(g,I,e)}catch(t){return this.emit("error",t)}void 0===this.ws.binaryType&&(this.supportsBinary=!1),this.ws.supports&&this.ws.supports.binary?(this.supportsBinary=!0,this.ws.binaryType="nodebuffer"):this.ws.binaryType="arraybuffer",this.addEventListeners()}},c.prototype.addEventListeners=function(){var g=this;this.ws.onopen=function(){g.onOpen()},this.ws.onclose=function(){g.onClose()},this.ws.onmessage=function(I){g.onData(I.data)},this.ws.onerror=function(I){g.onError("websocket error",I)}},c.prototype.write=function(g){var e=this;this.writable=!1;for(var t=g.length,C=0,Q=t;C<Q;C++)!function(g){F.encodePacket(g,e.supportsBinary,(function(C){if(!e.usingBrowserWebSocket){var Q={};if(g.options&&(Q.compress=g.options.compress),e.perMessageDeflate)("string"===typeof C?I.byteLength(C):C.length)<e.perMessageDeflate.threshold&&(Q.compress=!1)}try{e.usingBrowserWebSocket?e.ws.send(C):e.ws.send(C,Q)}catch(A){s("websocket closed before onclose event")}--t||B()}))}(g[C]);function B(){e.emit("flush"),setTimeout((function(){e.writable=!0,e.emit("drain")}),0)}},c.prototype.onClose=function(){Q.prototype.onClose.call(this)},c.prototype.doClose=function(){"undefined"!==typeof this.ws&&this.ws.close()},c.prototype.uri=function(){var g=this.query||{},I=this.secure?"wss":"ws",e="";return this.port&&("wss"===I&&443!==Number(this.port)||"ws"===I&&80!==Number(this.port))&&(e=":"+this.port),this.timestampRequests&&(g[this.timestampParam]=U()),this.supportsBinary||(g.b64=1),(g=B.encode(g)).length&&(g="?"+g),I+"://"+(-1!==this.hostname.indexOf(":")?"["+this.hostname+"]":this.hostname)+e+this.path+g},c.prototype.check=function(){return!!i&&!("__initialize"in i&&this.name===c.prototype.name)}}).call(this,e(103).Buffer)},,function(g,I){g.exports=function(g,I){for(var e=[],t=(I=I||0)||0;t<g.length;t++)e[t-I]=g[t];return e}},function(g,I){function e(g){g=g||{},this.ms=g.min||100,this.max=g.max||1e4,this.factor=g.factor||2,this.jitter=g.jitter>0&&g.jitter<=1?g.jitter:0,this.attempts=0}g.exports=e,e.prototype.duration=function(){var g=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var I=Math.random(),e=Math.floor(I*this.jitter*g);g=0==(1&Math.floor(10*I))?g-e:g+e}return 0|Math.min(g,this.max)},e.prototype.reset=function(){this.attempts=0},e.prototype.setMin=function(g){this.ms=g},e.prototype.setMax=function(g){this.max=g},e.prototype.setJitter=function(g){this.jitter=g}},,,function(g,I,e){var t=e(1373).default;function C(){"use strict";g.exports=C=function(){return I},g.exports.__esModule=!0,g.exports.default=g.exports;var I={},e=Object.prototype,Q=e.hasOwnProperty,F=Object.defineProperty||function(g,I,e){g[I]=e.value},B="function"==typeof Symbol?Symbol:{},n=B.iterator||"@@iterator",U=B.asyncIterator||"@@asyncIterator",s=B.toStringTag||"@@toStringTag";function i(g,I,e){return Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}),g[I]}try{i({},"")}catch(D){i=function(g,I,e){return g[I]=e}}function c(g,I,e,t){var C=I&&I.prototype instanceof a?I:a,Q=Object.create(C.prototype),B=new L(t||[]);return F(Q,"_invoke",{value:x(g,e,B)}),Q}function A(g,I,e){try{return{type:"normal",arg:g.call(I,e)}}catch(D){return{type:"throw",arg:D}}}I.wrap=c;var l={};function a(){}function r(){}function o(){}var d={};i(d,n,(function(){return this}));var u=Object.getPrototypeOf,y=u&&u(u(V([])));y&&y!==e&&Q.call(y,n)&&(d=y);var b=o.prototype=a.prototype=Object.create(d);function Z(g){["next","throw","return"].forEach((function(I){i(g,I,(function(g){return this._invoke(I,g)}))}))}function m(g,I){var e;F(this,"_invoke",{value:function(C,F){function B(){return new I((function(e,B){!function e(C,F,B,n){var U=A(g[C],g,F);if("throw"!==U.type){var s=U.arg,i=s.value;return i&&"object"==t(i)&&Q.call(i,"__await")?I.resolve(i.__await).then((function(g){e("next",g,B,n)}),(function(g){e("throw",g,B,n)})):I.resolve(i).then((function(g){s.value=g,B(s)}),(function(g){return e("throw",g,B,n)}))}n(U.arg)}(C,F,e,B)}))}return e=e?e.then(B,B):B()}})}function x(g,I,e){var t="suspendedStart";return function(C,Q){if("executing"===t)throw new Error("Generator is already running");if("completed"===t){if("throw"===C)throw Q;return h()}for(e.method=C,e.arg=Q;;){var F=e.delegate;if(F){var B=R(F,e);if(B){if(B===l)continue;return B}}if("next"===e.method)e.sent=e._sent=e.arg;else if("throw"===e.method){if("suspendedStart"===t)throw t="completed",e.arg;e.dispatchException(e.arg)}else"return"===e.method&&e.abrupt("return",e.arg);t="executing";var n=A(g,I,e);if("normal"===n.type){if(t=e.done?"completed":"suspendedYield",n.arg===l)continue;return{value:n.arg,done:e.done}}"throw"===n.type&&(t="completed",e.method="throw",e.arg=n.arg)}}}function R(g,I){var e=I.method,t=g.iterator[e];if(void 0===t)return I.delegate=null,"throw"===e&&g.iterator.return&&(I.method="return",I.arg=void 0,R(g,I),"throw"===I.method)||"return"!==e&&(I.method="throw",I.arg=new TypeError("The iterator does not provide a '"+e+"' method")),l;var C=A(t,g.iterator,I.arg);if("throw"===C.type)return I.method="throw",I.arg=C.arg,I.delegate=null,l;var Q=C.arg;return Q?Q.done?(I[g.resultName]=Q.value,I.next=g.nextLoc,"return"!==I.method&&(I.method="next",I.arg=void 0),I.delegate=null,l):Q:(I.method="throw",I.arg=new TypeError("iterator result is not an object"),I.delegate=null,l)}function S(g){var I={tryLoc:g[0]};1 in g&&(I.catchLoc=g[1]),2 in g&&(I.finallyLoc=g[2],I.afterLoc=g[3]),this.tryEntries.push(I)}function G(g){var I=g.completion||{};I.type="normal",delete I.arg,g.completion=I}function L(g){this.tryEntries=[{tryLoc:"root"}],g.forEach(S,this),this.reset(!0)}function V(g){if(g){var I=g[n];if(I)return I.call(g);if("function"==typeof g.next)return g;if(!isNaN(g.length)){var e=-1,t=function I(){for(;++e<g.length;)if(Q.call(g,e))return I.value=g[e],I.done=!1,I;return I.value=void 0,I.done=!0,I};return t.next=t}}return{next:h}}function h(){return{value:void 0,done:!0}}return r.prototype=o,F(b,"constructor",{value:o,configurable:!0}),F(o,"constructor",{value:r,configurable:!0}),r.displayName=i(o,s,"GeneratorFunction"),I.isGeneratorFunction=function(g){var I="function"==typeof g&&g.constructor;return!!I&&(I===r||"GeneratorFunction"===(I.displayName||I.name))},I.mark=function(g){return Object.setPrototypeOf?Object.setPrototypeOf(g,o):(g.__proto__=o,i(g,s,"GeneratorFunction")),g.prototype=Object.create(b),g},I.awrap=function(g){return{__await:g}},Z(m.prototype),i(m.prototype,U,(function(){return this})),I.AsyncIterator=m,I.async=function(g,e,t,C,Q){void 0===Q&&(Q=Promise);var F=new m(c(g,e,t,C),Q);return I.isGeneratorFunction(e)?F:F.next().then((function(g){return g.done?g.value:F.next()}))},Z(b),i(b,s,"Generator"),i(b,n,(function(){return this})),i(b,"toString",(function(){return"[object Generator]"})),I.keys=function(g){var I=Object(g),e=[];for(var t in I)e.push(t);return e.reverse(),function g(){for(;e.length;){var t=e.pop();if(t in I)return g.value=t,g.done=!1,g}return g.done=!0,g}},I.values=V,L.prototype={constructor:L,reset:function(g){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(G),!g)for(var I in this)"t"===I.charAt(0)&&Q.call(this,I)&&!isNaN(+I.slice(1))&&(this[I]=void 0)},stop:function(){this.done=!0;var g=this.tryEntries[0].completion;if("throw"===g.type)throw g.arg;return this.rval},dispatchException:function(g){if(this.done)throw g;var I=this;function e(e,t){return F.type="throw",F.arg=g,I.next=e,t&&(I.method="next",I.arg=void 0),!!t}for(var t=this.tryEntries.length-1;t>=0;--t){var C=this.tryEntries[t],F=C.completion;if("root"===C.tryLoc)return e("end");if(C.tryLoc<=this.prev){var B=Q.call(C,"catchLoc"),n=Q.call(C,"finallyLoc");if(B&&n){if(this.prev<C.catchLoc)return e(C.catchLoc,!0);if(this.prev<C.finallyLoc)return e(C.finallyLoc)}else if(B){if(this.prev<C.catchLoc)return e(C.catchLoc,!0)}else{if(!n)throw new Error("try statement without catch or finally");if(this.prev<C.finallyLoc)return e(C.finallyLoc)}}}},abrupt:function(g,I){for(var e=this.tryEntries.length-1;e>=0;--e){var t=this.tryEntries[e];if(t.tryLoc<=this.prev&&Q.call(t,"finallyLoc")&&this.prev<t.finallyLoc){var C=t;break}}C&&("break"===g||"continue"===g)&&C.tryLoc<=I&&I<=C.finallyLoc&&(C=null);var F=C?C.completion:{};return F.type=g,F.arg=I,C?(this.method="next",this.next=C.finallyLoc,l):this.complete(F)},complete:function(g,I){if("throw"===g.type)throw g.arg;return"break"===g.type||"continue"===g.type?this.next=g.arg:"return"===g.type?(this.rval=this.arg=g.arg,this.method="return",this.next="end"):"normal"===g.type&&I&&(this.next=I),l},finish:function(g){for(var I=this.tryEntries.length-1;I>=0;--I){var e=this.tryEntries[I];if(e.finallyLoc===g)return this.complete(e.completion,e.afterLoc),G(e),l}},catch:function(g){for(var I=this.tryEntries.length-1;I>=0;--I){var e=this.tryEntries[I];if(e.tryLoc===g){var t=e.completion;if("throw"===t.type){var C=t.arg;G(e)}return C}}throw new Error("illegal catch attempt")},delegateYield:function(g,I,e){return this.delegate={iterator:V(g),resultName:I,nextLoc:e},"next"===this.method&&(this.arg=void 0),l}},I}g.exports=C,g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I){function e(I){return g.exports=e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"==typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g},g.exports.__esModule=!0,g.exports.default=g.exports,e(I)}g.exports=e,g.exports.__esModule=!0,g.exports.default=g.exports},,function(g,I,e){"use strict";var t=e(529).Buffer,C=e(1376);g.exports=function(){function g(){!function(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}(this,g),this.head=null,this.tail=null,this.length=0}return g.prototype.push=function(g){var I={data:g,next:null};this.length>0?this.tail.next=I:this.head=I,this.tail=I,++this.length},g.prototype.unshift=function(g){var I={data:g,next:this.head};0===this.length&&(this.tail=I),this.head=I,++this.length},g.prototype.shift=function(){if(0!==this.length){var g=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,g}},g.prototype.clear=function(){this.head=this.tail=null,this.length=0},g.prototype.join=function(g){if(0===this.length)return"";for(var I=this.head,e=""+I.data;I=I.next;)e+=g+I.data;return e},g.prototype.concat=function(g){if(0===this.length)return t.alloc(0);if(1===this.length)return this.head.data;for(var I,e,C,Q=t.allocUnsafe(g>>>0),F=this.head,B=0;F;)I=F.data,e=Q,C=B,I.copy(e,C),B+=F.data.length,F=F.next;return Q},g}(),C&&C.inspect&&C.inspect.custom&&(g.exports.prototype[C.inspect.custom]=function(){var g=C.inspect({length:this.length});return this.constructor.name+" "+g})},,function(g,I,e){(function(g){var t="undefined"!==typeof g&&g||"undefined"!==typeof self&&self||window,C=Function.prototype.apply;function Q(g,I){this._id=g,this._clearFn=I}I.setTimeout=function(){return new Q(C.call(setTimeout,t,arguments),clearTimeout)},I.setInterval=function(){return new Q(C.call(setInterval,t,arguments),clearInterval)},I.clearTimeout=I.clearInterval=function(g){g&&g.close()},Q.prototype.unref=Q.prototype.ref=function(){},Q.prototype.close=function(){this._clearFn.call(t,this._id)},I.enroll=function(g,I){clearTimeout(g._idleTimeoutId),g._idleTimeout=I},I.unenroll=function(g){clearTimeout(g._idleTimeoutId),g._idleTimeout=-1},I._unrefActive=I.active=function(g){clearTimeout(g._idleTimeoutId);var I=g._idleTimeout;I>=0&&(g._idleTimeoutId=setTimeout((function(){g._onTimeout&&g._onTimeout()}),I))},e(1378),I.setImmediate="undefined"!==typeof self&&self.setImmediate||"undefined"!==typeof g&&g.setImmediate||this&&this.setImmediate,I.clearImmediate="undefined"!==typeof self&&self.clearImmediate||"undefined"!==typeof g&&g.clearImmediate||this&&this.clearImmediate}).call(this,e(67))},function(g,I,e){(function(g,I){!function(g,e){"use strict";if(!g.setImmediate){var t,C=1,Q={},F=!1,B=g.document,n=Object.getPrototypeOf&&Object.getPrototypeOf(g);n=n&&n.setTimeout?n:g,"[object process]"==={}.toString.call(g.process)?t=function(g){I.nextTick((function(){s(g)}))}:function(){if(g.postMessage&&!g.importScripts){var I=!0,e=g.onmessage;return g.onmessage=function(){I=!1},g.postMessage("","*"),g.onmessage=e,I}}()?function(){var I="setImmediate$"+Math.random()+"$",e=function(e){e.source===g&&"string"===typeof e.data&&0===e.data.indexOf(I)&&s(+e.data.slice(I.length))};g.addEventListener?g.addEventListener("message",e,!1):g.attachEvent("onmessage",e),t=function(e){g.postMessage(I+e,"*")}}():g.MessageChannel?function(){var g=new MessageChannel;g.port1.onmessage=function(g){s(g.data)},t=function(I){g.port2.postMessage(I)}}():B&&"onreadystatechange"in B.createElement("script")?function(){var g=B.documentElement;t=function(I){var e=B.createElement("script");e.onreadystatechange=function(){s(I),e.onreadystatechange=null,g.removeChild(e),e=null},g.appendChild(e)}}():t=function(g){setTimeout(s,0,g)},n.setImmediate=function(g){"function"!==typeof g&&(g=new Function(""+g));for(var I=new Array(arguments.length-1),e=0;e<I.length;e++)I[e]=arguments[e+1];var F={callback:g,args:I};return Q[C]=F,t(C),C++},n.clearImmediate=U}function U(g){delete Q[g]}function s(g){if(F)setTimeout(s,0,g);else{var I=Q[g];if(I){F=!0;try{!function(g){var I=g.callback,e=g.args;switch(e.length){case 0:I();break;case 1:I(e[0]);break;case 2:I(e[0],e[1]);break;case 3:I(e[0],e[1],e[2]);break;default:I.apply(void 0,e)}}(I)}finally{U(g),F=!1}}}}}("undefined"===typeof self?"undefined"===typeof g?this:g:self)}).call(this,e(67),e(92))},function(g,I,e){(function(I){function e(g){try{if(!I.localStorage)return!1}catch(t){return!1}var e=I.localStorage[g];return null!=e&&"true"===String(e).toLowerCase()}g.exports=function(g,I){if(e("noDeprecation"))return g;var t=!1;return function(){if(!t){if(e("throwDeprecation"))throw new Error(I);e("traceDeprecation")?console.trace(I):console.warn(I),t=!0}return g.apply(this,arguments)}}}).call(this,e(67))},function(g,I,e){var t=e(103),C=t.Buffer;function Q(g,I){for(var e in g)I[e]=g[e]}function F(g,I,e){return C(g,I,e)}C.from&&C.alloc&&C.allocUnsafe&&C.allocUnsafeSlow?g.exports=t:(Q(t,I),I.Buffer=F),F.prototype=Object.create(C.prototype),Q(C,F),F.from=function(g,I,e){if("number"===typeof g)throw new TypeError("Argument must not be a number");return C(g,I,e)},F.alloc=function(g,I,e){if("number"!==typeof g)throw new TypeError("Argument must be a number");var t=C(g);return void 0!==I?"string"===typeof e?t.fill(I,e):t.fill(I):t.fill(0),t},F.allocUnsafe=function(g){if("number"!==typeof g)throw new TypeError("Argument must be a number");return C(g)},F.allocUnsafeSlow=function(g){if("number"!==typeof g)throw new TypeError("Argument must be a number");return t.SlowBuffer(g)}},function(g,I,e){"use strict";g.exports=Q;var t=e(732),C=Object.create(e(340));function Q(g){if(!(this instanceof Q))return new Q(g);t.call(this,g)}C.inherits=e(253),C.inherits(Q,t),Q.prototype._transform=function(g,I,e){e(null,g)}},function(g,I,e){g.exports=e(530)},function(g,I,e){g.exports=e(254)},function(g,I,e){g.exports=e(528).Transform},function(g,I,e){g.exports=e(528).PassThrough},function(g,I){g.exports=function(g){return g&&"object"===typeof g&&"function"===typeof g.copy&&"function"===typeof g.fill&&"function"===typeof g.readUInt8}},function(g,I){"function"===typeof Object.create?g.exports=function(g,I){g.super_=I,g.prototype=Object.create(I.prototype,{constructor:{value:g,enumerable:!1,writable:!0,configurable:!0}})}:g.exports=function(g,I){g.super_=I;var e=function(){};e.prototype=I.prototype,g.prototype=new e,g.prototype.constructor=g}},function(g,I,e){(function(I){var e=I.BlobBuilder||I.WebKitBlobBuilder||I.MSBlobBuilder||I.MozBlobBuilder,t=function(){try{return 2===new Blob(["hi"]).size}catch(g){return!1}}(),C=t&&function(){try{return 2===new Blob([new Uint8Array([1,2])]).size}catch(g){return!1}}(),Q=e&&e.prototype.append&&e.prototype.getBlob;function F(g){for(var I=0;I<g.length;I++){var e=g[I];if(e.buffer instanceof ArrayBuffer){var t=e.buffer;if(e.byteLength!==t.byteLength){var C=new Uint8Array(e.byteLength);C.set(new Uint8Array(t,e.byteOffset,e.byteLength)),t=C.buffer}g[I]=t}}}function B(g,I){I=I||{};var t=new e;F(g);for(var C=0;C<g.length;C++)t.append(g[C]);return I.type?t.getBlob(I.type):t.getBlob()}function n(g,I){return F(g),new Blob(g,I||{})}g.exports=t?C?I.Blob:n:Q?B:void 0}).call(this,e(67))},function(g,I){function e(g,I,e,t,C,Q,F){try{var B=g[Q](F),n=B.value}catch(U){return void e(U)}B.done?I(n):Promise.resolve(n).then(t,C)}g.exports=function(g){return function(){var I=this,t=arguments;return new Promise((function(C,Q){var F=g.apply(I,t);function B(g){e(F,C,Q,B,n,"next",g)}function n(g){e(F,C,Q,B,n,"throw",g)}B(void 0)}))}},g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I){function e(){return g.exports=e=Object.assign?Object.assign.bind():function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g},g.exports.__esModule=!0,g.exports.default=g.exports,e.apply(this,arguments)}g.exports=e,g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I,e){var t=e(1392)();g.exports=t;try{regeneratorRuntime=t}catch(C){"object"===typeof globalThis?globalThis.regeneratorRuntime=t:Function("r","regeneratorRuntime = r")(t)}},function(g,I,e){var t=e(1393).default;function C(){"use strict";g.exports=C=function(){return I},g.exports.__esModule=!0,g.exports.default=g.exports;var I={},e=Object.prototype,Q=e.hasOwnProperty,F=Object.defineProperty||function(g,I,e){g[I]=e.value},B="function"==typeof Symbol?Symbol:{},n=B.iterator||"@@iterator",U=B.asyncIterator||"@@asyncIterator",s=B.toStringTag||"@@toStringTag";function i(g,I,e){return Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}),g[I]}try{i({},"")}catch(D){i=function(g,I,e){return g[I]=e}}function c(g,I,e,t){var C=I&&I.prototype instanceof a?I:a,Q=Object.create(C.prototype),B=new L(t||[]);return F(Q,"_invoke",{value:x(g,e,B)}),Q}function A(g,I,e){try{return{type:"normal",arg:g.call(I,e)}}catch(D){return{type:"throw",arg:D}}}I.wrap=c;var l={};function a(){}function r(){}function o(){}var d={};i(d,n,(function(){return this}));var u=Object.getPrototypeOf,y=u&&u(u(V([])));y&&y!==e&&Q.call(y,n)&&(d=y);var b=o.prototype=a.prototype=Object.create(d);function Z(g){["next","throw","return"].forEach((function(I){i(g,I,(function(g){return this._invoke(I,g)}))}))}function m(g,I){var e;F(this,"_invoke",{value:function(C,F){function B(){return new I((function(e,B){!function e(C,F,B,n){var U=A(g[C],g,F);if("throw"!==U.type){var s=U.arg,i=s.value;return i&&"object"==t(i)&&Q.call(i,"__await")?I.resolve(i.__await).then((function(g){e("next",g,B,n)}),(function(g){e("throw",g,B,n)})):I.resolve(i).then((function(g){s.value=g,B(s)}),(function(g){return e("throw",g,B,n)}))}n(U.arg)}(C,F,e,B)}))}return e=e?e.then(B,B):B()}})}function x(g,I,e){var t="suspendedStart";return function(C,Q){if("executing"===t)throw new Error("Generator is already running");if("completed"===t){if("throw"===C)throw Q;return h()}for(e.method=C,e.arg=Q;;){var F=e.delegate;if(F){var B=R(F,e);if(B){if(B===l)continue;return B}}if("next"===e.method)e.sent=e._sent=e.arg;else if("throw"===e.method){if("suspendedStart"===t)throw t="completed",e.arg;e.dispatchException(e.arg)}else"return"===e.method&&e.abrupt("return",e.arg);t="executing";var n=A(g,I,e);if("normal"===n.type){if(t=e.done?"completed":"suspendedYield",n.arg===l)continue;return{value:n.arg,done:e.done}}"throw"===n.type&&(t="completed",e.method="throw",e.arg=n.arg)}}}function R(g,I){var e=I.method,t=g.iterator[e];if(void 0===t)return I.delegate=null,"throw"===e&&g.iterator.return&&(I.method="return",I.arg=void 0,R(g,I),"throw"===I.method)||"return"!==e&&(I.method="throw",I.arg=new TypeError("The iterator does not provide a '"+e+"' method")),l;var C=A(t,g.iterator,I.arg);if("throw"===C.type)return I.method="throw",I.arg=C.arg,I.delegate=null,l;var Q=C.arg;return Q?Q.done?(I[g.resultName]=Q.value,I.next=g.nextLoc,"return"!==I.method&&(I.method="next",I.arg=void 0),I.delegate=null,l):Q:(I.method="throw",I.arg=new TypeError("iterator result is not an object"),I.delegate=null,l)}function S(g){var I={tryLoc:g[0]};1 in g&&(I.catchLoc=g[1]),2 in g&&(I.finallyLoc=g[2],I.afterLoc=g[3]),this.tryEntries.push(I)}function G(g){var I=g.completion||{};I.type="normal",delete I.arg,g.completion=I}function L(g){this.tryEntries=[{tryLoc:"root"}],g.forEach(S,this),this.reset(!0)}function V(g){if(g){var I=g[n];if(I)return I.call(g);if("function"==typeof g.next)return g;if(!isNaN(g.length)){var e=-1,t=function I(){for(;++e<g.length;)if(Q.call(g,e))return I.value=g[e],I.done=!1,I;return I.value=void 0,I.done=!0,I};return t.next=t}}return{next:h}}function h(){return{value:void 0,done:!0}}return r.prototype=o,F(b,"constructor",{value:o,configurable:!0}),F(o,"constructor",{value:r,configurable:!0}),r.displayName=i(o,s,"GeneratorFunction"),I.isGeneratorFunction=function(g){var I="function"==typeof g&&g.constructor;return!!I&&(I===r||"GeneratorFunction"===(I.displayName||I.name))},I.mark=function(g){return Object.setPrototypeOf?Object.setPrototypeOf(g,o):(g.__proto__=o,i(g,s,"GeneratorFunction")),g.prototype=Object.create(b),g},I.awrap=function(g){return{__await:g}},Z(m.prototype),i(m.prototype,U,(function(){return this})),I.AsyncIterator=m,I.async=function(g,e,t,C,Q){void 0===Q&&(Q=Promise);var F=new m(c(g,e,t,C),Q);return I.isGeneratorFunction(e)?F:F.next().then((function(g){return g.done?g.value:F.next()}))},Z(b),i(b,s,"Generator"),i(b,n,(function(){return this})),i(b,"toString",(function(){return"[object Generator]"})),I.keys=function(g){var I=Object(g),e=[];for(var t in I)e.push(t);return e.reverse(),function g(){for(;e.length;){var t=e.pop();if(t in I)return g.value=t,g.done=!1,g}return g.done=!0,g}},I.values=V,L.prototype={constructor:L,reset:function(g){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(G),!g)for(var I in this)"t"===I.charAt(0)&&Q.call(this,I)&&!isNaN(+I.slice(1))&&(this[I]=void 0)},stop:function(){this.done=!0;var g=this.tryEntries[0].completion;if("throw"===g.type)throw g.arg;return this.rval},dispatchException:function(g){if(this.done)throw g;var I=this;function e(e,t){return F.type="throw",F.arg=g,I.next=e,t&&(I.method="next",I.arg=void 0),!!t}for(var t=this.tryEntries.length-1;t>=0;--t){var C=this.tryEntries[t],F=C.completion;if("root"===C.tryLoc)return e("end");if(C.tryLoc<=this.prev){var B=Q.call(C,"catchLoc"),n=Q.call(C,"finallyLoc");if(B&&n){if(this.prev<C.catchLoc)return e(C.catchLoc,!0);if(this.prev<C.finallyLoc)return e(C.finallyLoc)}else if(B){if(this.prev<C.catchLoc)return e(C.catchLoc,!0)}else{if(!n)throw new Error("try statement without catch or finally");if(this.prev<C.finallyLoc)return e(C.finallyLoc)}}}},abrupt:function(g,I){for(var e=this.tryEntries.length-1;e>=0;--e){var t=this.tryEntries[e];if(t.tryLoc<=this.prev&&Q.call(t,"finallyLoc")&&this.prev<t.finallyLoc){var C=t;break}}C&&("break"===g||"continue"===g)&&C.tryLoc<=I&&I<=C.finallyLoc&&(C=null);var F=C?C.completion:{};return F.type=g,F.arg=I,C?(this.method="next",this.next=C.finallyLoc,l):this.complete(F)},complete:function(g,I){if("throw"===g.type)throw g.arg;return"break"===g.type||"continue"===g.type?this.next=g.arg:"return"===g.type?(this.rval=this.arg=g.arg,this.method="return",this.next="end"):"normal"===g.type&&I&&(this.next=I),l},finish:function(g){for(var I=this.tryEntries.length-1;I>=0;--I){var e=this.tryEntries[I];if(e.finallyLoc===g)return this.complete(e.completion,e.afterLoc),G(e),l}},catch:function(g){for(var I=this.tryEntries.length-1;I>=0;--I){var e=this.tryEntries[I];if(e.tryLoc===g){var t=e.completion;if("throw"===t.type){var C=t.arg;G(e)}return C}}throw new Error("illegal catch attempt")},delegateYield:function(g,I,e){return this.delegate={iterator:V(g),resultName:I,nextLoc:e},"next"===this.method&&(this.arg=void 0),l}},I}g.exports=C,g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I){function e(I){return g.exports=e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"==typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g},g.exports.__esModule=!0,g.exports.default=g.exports,e(I)}g.exports=e,g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I){g.exports=function(g,I){if(null==g)return{};var e,t,C={},Q=Object.keys(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||(C[e]=g[e]);return C},g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I){g.exports=function(g){if("string"!==typeof g)return!1;var I=g.match(e);if(!I)return!1;var Q=I[1];if(!Q)return!1;if(t.test(Q)||C.test(Q))return!0;return!1};var e=/^(?:\w+:)?\/\/(\S+)$/,t=/^localhost[\:?\d]*(?:[^\:?\d]\S*)?$/,C=/^[^\s\.]+\.\S{2,}$/},function(g,I,e){(function(I){(function(){var t,C,Q,F,B={}.hasOwnProperty;F=e(294),t=e(532);try{Q=e(533)}catch(n){}C=function(g){var e;function C(g){null==g&&(g=65536),C.__super__.constructor.apply(this,arguments),this.buffer=new I(g),this.bufferOffset=0,this.pos=0}for(e in function(g,I){for(var e in I)B.call(I,e)&&(g[e]=I[e]);function t(){this.constructor=g}t.prototype=I.prototype,g.prototype=new t,g.__super__=I.prototype}(C,g),I.prototype)"write"===e.slice(0,5)&&function(g){var I;I=+t.TYPES[g.replace(/write|[BL]E/g,"")],C.prototype[g]=function(e){return this.ensure(I),this.buffer[g](e,this.bufferOffset),this.bufferOffset+=I,this.pos+=I}}(e);return C.prototype._read=function(){},C.prototype.ensure=function(g){if(this.bufferOffset+g>this.buffer.length)return this.flush()},C.prototype.flush=function(){if(this.bufferOffset>0)return this.push(new I(this.buffer.slice(0,this.bufferOffset))),this.bufferOffset=0},C.prototype.writeBuffer=function(g){return this.flush(),this.push(g),this.pos+=g.length},C.prototype.writeString=function(g,e){var t,C,F,B,n;switch(null==e&&(e="ascii"),e){case"utf16le":case"ucs2":case"utf8":case"ascii":return this.writeBuffer(new I(g,e));case"utf16be":for(F=B=0,n=(t=new I(g,"utf16le")).length-1;B<n;F=B+=2)C=t[F],t[F]=t[F+1],t[F+1]=C;return this.writeBuffer(t);default:if(Q)return this.writeBuffer(Q.encode(g,e));throw new Error("Install iconv-lite to enable additional string encodings.")}},C.prototype.writeUInt24BE=function(g){return this.ensure(3),this.buffer[this.bufferOffset++]=g>>>16&255,this.buffer[this.bufferOffset++]=g>>>8&255,this.buffer[this.bufferOffset++]=255&g,this.pos+=3},C.prototype.writeUInt24LE=function(g){return this.ensure(3),this.buffer[this.bufferOffset++]=255&g,this.buffer[this.bufferOffset++]=g>>>8&255,this.buffer[this.bufferOffset++]=g>>>16&255,this.pos+=3},C.prototype.writeInt24BE=function(g){return g>=0?this.writeUInt24BE(g):this.writeUInt24BE(g+16777215+1)},C.prototype.writeInt24LE=function(g){return g>=0?this.writeUInt24LE(g):this.writeUInt24LE(g+16777215+1)},C.prototype.fill=function(g,e){var t;return e<this.buffer.length?(this.ensure(e),this.buffer.fill(g,this.bufferOffset,this.bufferOffset+e),this.bufferOffset+=e,this.pos+=e):((t=new I(e)).fill(g),this.writeBuffer(t))},C.prototype.end=function(){return this.flush(),this.push(null)},C}(F.Readable),g.exports=C}).call(this)}).call(this,e(103).Buffer)},function(g,I,e){"use strict";function t(g,I){this.encoder=g,this.addBOM=!0}function C(g,I){this.decoder=g,this.pass=!1,this.options=I||{}}I.PrependBOM=t,t.prototype.write=function(g){return this.addBOM&&(g="\ufeff"+g,this.addBOM=!1),this.encoder.write(g)},t.prototype.end=function(){return this.encoder.end()},I.StripBOM=C,C.prototype.write=function(g){var I=this.decoder.write(g);return this.pass||!I||("\ufeff"===I[0]&&(I=I.slice(1),"function"===typeof this.options.stripBOM&&this.options.stripBOM()),this.pass=!0),I},C.prototype.end=function(){return this.decoder.end()}},function(g,I,e){"use strict";for(var t=[e(1399),e(1400),e(1401),e(1402),e(1403),e(1404),e(1405),e(1406)],C=0;C<t.length;C++){g=t[C];for(var Q in g)Object.prototype.hasOwnProperty.call(g,Q)&&(I[Q]=g[Q])}},function(g,I,e){"use strict";var t=e(286).Buffer;function C(g,I){this.enc=g.encodingName,this.bomAware=g.bomAware,"base64"===this.enc?this.encoder=n:"cesu8"===this.enc&&(this.enc="utf8",this.encoder=U,"\ud83d\udca9"!==t.from("eda0bdedb2a9","hex").toString()&&(this.decoder=s,this.defaultCharUnicode=I.defaultCharUnicode))}g.exports={utf8:{type:"_internal",bomAware:!0},cesu8:{type:"_internal",bomAware:!0},unicode11utf8:"utf8",ucs2:{type:"_internal",bomAware:!0},utf16le:"ucs2",binary:{type:"_internal"},base64:{type:"_internal"},hex:{type:"_internal"},_internal:C},C.prototype.encoder=B,C.prototype.decoder=F;var Q=e(531).StringDecoder;function F(g,I){Q.call(this,I.enc)}function B(g,I){this.enc=I.enc}function n(g,I){this.prevStr=""}function U(g,I){}function s(g,I){this.acc=0,this.contBytes=0,this.accBytes=0,this.defaultCharUnicode=I.defaultCharUnicode}Q.prototype.end||(Q.prototype.end=function(){}),F.prototype=Q.prototype,B.prototype.write=function(g){return t.from(g,this.enc)},B.prototype.end=function(){},n.prototype.write=function(g){var I=(g=this.prevStr+g).length-g.length%4;return this.prevStr=g.slice(I),g=g.slice(0,I),t.from(g,"base64")},n.prototype.end=function(){return t.from(this.prevStr,"base64")},U.prototype.write=function(g){for(var I=t.alloc(3*g.length),e=0,C=0;C<g.length;C++){var Q=g.charCodeAt(C);Q<128?I[e++]=Q:Q<2048?(I[e++]=192+(Q>>>6),I[e++]=128+(63&Q)):(I[e++]=224+(Q>>>12),I[e++]=128+(Q>>>6&63),I[e++]=128+(63&Q))}return I.slice(0,e)},U.prototype.end=function(){},s.prototype.write=function(g){for(var I=this.acc,e=this.contBytes,t=this.accBytes,C="",Q=0;Q<g.length;Q++){var F=g[Q];128!==(192&F)?(e>0&&(C+=this.defaultCharUnicode,e=0),F<128?C+=String.fromCharCode(F):F<224?(I=31&F,e=1,t=1):F<240?(I=15&F,e=2,t=1):C+=this.defaultCharUnicode):e>0?(I=I<<6|63&F,t++,0===--e&&(C+=2===t&&I<128&&I>0||3===t&&I<2048?this.defaultCharUnicode:String.fromCharCode(I))):C+=this.defaultCharUnicode}return this.acc=I,this.contBytes=e,this.accBytes=t,C},s.prototype.end=function(){var g=0;return this.contBytes>0&&(g+=this.defaultCharUnicode),g}},function(g,I,e){"use strict";var t=e(286).Buffer;function C(){}function Q(){}function F(){this.overflowByte=-1}function B(g,I){this.iconv=I}function n(g,I){void 0===(g=g||{}).addBOM&&(g.addBOM=!0),this.encoder=I.iconv.getEncoder("utf-16le",g)}function U(g,I){this.decoder=null,this.initialBytes=[],this.initialBytesLen=0,this.options=g||{},this.iconv=I.iconv}function s(g,I){var e=I||"utf-16le";if(g.length>=2)if(254==g[0]&&255==g[1])e="utf-16be";else if(255==g[0]&&254==g[1])e="utf-16le";else{for(var t=0,C=0,Q=Math.min(g.length-g.length%2,64),F=0;F<Q;F+=2)0===g[F]&&0!==g[F+1]&&C++,0!==g[F]&&0===g[F+1]&&t++;C>t?e="utf-16be":C<t&&(e="utf-16le")}return e}I.utf16be=C,C.prototype.encoder=Q,C.prototype.decoder=F,C.prototype.bomAware=!0,Q.prototype.write=function(g){for(var I=t.from(g,"ucs2"),e=0;e<I.length;e+=2){var C=I[e];I[e]=I[e+1],I[e+1]=C}return I},Q.prototype.end=function(){},F.prototype.write=function(g){if(0==g.length)return"";var I=t.alloc(g.length+1),e=0,C=0;for(-1!==this.overflowByte&&(I[0]=g[0],I[1]=this.overflowByte,e=1,C=2);e<g.length-1;e+=2,C+=2)I[C]=g[e+1],I[C+1]=g[e];return this.overflowByte=e==g.length-1?g[g.length-1]:-1,I.slice(0,C).toString("ucs2")},F.prototype.end=function(){},I.utf16=B,B.prototype.encoder=n,B.prototype.decoder=U,n.prototype.write=function(g){return this.encoder.write(g)},n.prototype.end=function(){return this.encoder.end()},U.prototype.write=function(g){if(!this.decoder){if(this.initialBytes.push(g),this.initialBytesLen+=g.length,this.initialBytesLen<16)return"";var I=s(g=t.concat(this.initialBytes),this.options.defaultEncoding);this.decoder=this.iconv.getDecoder(I,this.options),this.initialBytes.length=this.initialBytesLen=0}return this.decoder.write(g)},U.prototype.end=function(){if(!this.decoder){var g=t.concat(this.initialBytes),I=s(g,this.options.defaultEncoding);this.decoder=this.iconv.getDecoder(I,this.options);var e=this.decoder.write(g),C=this.decoder.end();return C?e+C:e}return this.decoder.end()}},function(g,I,e){"use strict";var t=e(286).Buffer;function C(g,I){this.iconv=I}I.utf7=C,I.unicode11utf7="utf7",C.prototype.encoder=F,C.prototype.decoder=B,C.prototype.bomAware=!0;var Q=/[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g;function F(g,I){this.iconv=I.iconv}function B(g,I){this.iconv=I.iconv,this.inBase64=!1,this.base64Accum=""}F.prototype.write=function(g){return t.from(g.replace(Q,function(g){return"+"+("+"===g?"":this.iconv.encode(g,"utf16-be").toString("base64").replace(/=+$/,""))+"-"}.bind(this)))},F.prototype.end=function(){};for(var n=/[A-Za-z0-9\/+]/,U=[],s=0;s<256;s++)U[s]=n.test(String.fromCharCode(s));var i="+".charCodeAt(0),c="-".charCodeAt(0),A="&".charCodeAt(0);function l(g,I){this.iconv=I}function a(g,I){this.iconv=I.iconv,this.inBase64=!1,this.base64Accum=t.alloc(6),this.base64AccumIdx=0}function r(g,I){this.iconv=I.iconv,this.inBase64=!1,this.base64Accum=""}B.prototype.write=function(g){for(var I="",e=0,C=this.inBase64,Q=this.base64Accum,F=0;F<g.length;F++)if(C){if(!U[g[F]]){if(F==e&&g[F]==c)I+="+";else{var B=Q+g.slice(e,F).toString();I+=this.iconv.decode(t.from(B,"base64"),"utf16-be")}g[F]!=c&&F--,e=F+1,C=!1,Q=""}}else g[F]==i&&(I+=this.iconv.decode(g.slice(e,F),"ascii"),e=F+1,C=!0);if(C){var n=(B=Q+g.slice(e).toString()).length-B.length%8;Q=B.slice(n),B=B.slice(0,n),I+=this.iconv.decode(t.from(B,"base64"),"utf16-be")}else I+=this.iconv.decode(g.slice(e),"ascii");return this.inBase64=C,this.base64Accum=Q,I},B.prototype.end=function(){var g="";return this.inBase64&&this.base64Accum.length>0&&(g=this.iconv.decode(t.from(this.base64Accum,"base64"),"utf16-be")),this.inBase64=!1,this.base64Accum="",g},I.utf7imap=l,l.prototype.encoder=a,l.prototype.decoder=r,l.prototype.bomAware=!0,a.prototype.write=function(g){for(var I=this.inBase64,e=this.base64Accum,C=this.base64AccumIdx,Q=t.alloc(5*g.length+10),F=0,B=0;B<g.length;B++){var n=g.charCodeAt(B);32<=n&&n<=126?(I&&(C>0&&(F+=Q.write(e.slice(0,C).toString("base64").replace(/\//g,",").replace(/=+$/,""),F),C=0),Q[F++]=c,I=!1),I||(Q[F++]=n,n===A&&(Q[F++]=c))):(I||(Q[F++]=A,I=!0),I&&(e[C++]=n>>8,e[C++]=255&n,C==e.length&&(F+=Q.write(e.toString("base64").replace(/\//g,","),F),C=0)))}return this.inBase64=I,this.base64AccumIdx=C,Q.slice(0,F)},a.prototype.end=function(){var g=t.alloc(10),I=0;return this.inBase64&&(this.base64AccumIdx>0&&(I+=g.write(this.base64Accum.slice(0,this.base64AccumIdx).toString("base64").replace(/\//g,",").replace(/=+$/,""),I),this.base64AccumIdx=0),g[I++]=c,this.inBase64=!1),g.slice(0,I)};var o=U.slice();o[",".charCodeAt(0)]=!0,r.prototype.write=function(g){for(var I="",e=0,C=this.inBase64,Q=this.base64Accum,F=0;F<g.length;F++)if(C){if(!o[g[F]]){if(F==e&&g[F]==c)I+="&";else{var B=Q+g.slice(e,F).toString().replace(/,/g,"/");I+=this.iconv.decode(t.from(B,"base64"),"utf16-be")}g[F]!=c&&F--,e=F+1,C=!1,Q=""}}else g[F]==A&&(I+=this.iconv.decode(g.slice(e,F),"ascii"),e=F+1,C=!0);if(C){var n=(B=Q+g.slice(e).toString().replace(/,/g,"/")).length-B.length%8;Q=B.slice(n),B=B.slice(0,n),I+=this.iconv.decode(t.from(B,"base64"),"utf16-be")}else I+=this.iconv.decode(g.slice(e),"ascii");return this.inBase64=C,this.base64Accum=Q,I},r.prototype.end=function(){var g="";return this.inBase64&&this.base64Accum.length>0&&(g=this.iconv.decode(t.from(this.base64Accum,"base64"),"utf16-be")),this.inBase64=!1,this.base64Accum="",g}},function(g,I,e){"use strict";var t=e(286).Buffer;function C(g,I){if(!g)throw new Error("SBCS codec is called without the data.");if(!g.chars||128!==g.chars.length&&256!==g.chars.length)throw new Error("Encoding '"+g.type+"' has incorrect 'chars' (must be of len 128 or 256)");if(128===g.chars.length){for(var e="",C=0;C<128;C++)e+=String.fromCharCode(C);g.chars=e+g.chars}this.decodeBuf=t.from(g.chars,"ucs2");var Q=t.alloc(65536,I.defaultCharSingleByte.charCodeAt(0));for(C=0;C<g.chars.length;C++)Q[g.chars.charCodeAt(C)]=C;this.encodeBuf=Q}function Q(g,I){this.encodeBuf=I.encodeBuf}function F(g,I){this.decodeBuf=I.decodeBuf}I._sbcs=C,C.prototype.encoder=Q,C.prototype.decoder=F,Q.prototype.write=function(g){for(var I=t.alloc(g.length),e=0;e<g.length;e++)I[e]=this.encodeBuf[g.charCodeAt(e)];return I},Q.prototype.end=function(){},F.prototype.write=function(g){for(var I=this.decodeBuf,e=t.alloc(2*g.length),C=0,Q=0,F=0;F<g.length;F++)C=2*g[F],e[Q=2*F]=I[C],e[Q+1]=I[C+1];return e.toString("ucs2")},F.prototype.end=function(){}},function(g,I,e){"use strict";g.exports={10029:"maccenteuro",maccenteuro:{type:"_sbcs",chars:"\xc4\u0100\u0101\xc9\u0104\xd6\xdc\xe1\u0105\u010c\xe4\u010d\u0106\u0107\xe9\u0179\u017a\u010e\xed\u010f\u0112\u0113\u0116\xf3\u0117\xf4\xf6\xf5\xfa\u011a\u011b\xfc\u2020\xb0\u0118\xa3\xa7\u2022\xb6\xdf\xae\xa9\u2122\u0119\xa8\u2260\u0123\u012e\u012f\u012a\u2264\u2265\u012b\u0136\u2202\u2211\u0142\u013b\u013c\u013d\u013e\u0139\u013a\u0145\u0146\u0143\xac\u221a\u0144\u0147\u2206\xab\xbb\u2026\xa0\u0148\u0150\xd5\u0151\u014c\u2013\u2014\u201c\u201d\u2018\u2019\xf7\u25ca\u014d\u0154\u0155\u0158\u2039\u203a\u0159\u0156\u0157\u0160\u201a\u201e\u0161\u015a\u015b\xc1\u0164\u0165\xcd\u017d\u017e\u016a\xd3\xd4\u016b\u016e\xda\u016f\u0170\u0171\u0172\u0173\xdd\xfd\u0137\u017b\u0141\u017c\u0122\u02c7"},808:"cp808",ibm808:"cp808",cp808:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041a\u041b\u041c\u041d\u041e\u041f\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042a\u042b\u042c\u042d\u042e\u042f\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043a\u043b\u043c\u043d\u043e\u043f\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255d\u255c\u255b\u2510\u2514\u2534\u252c\u251c\u2500\u253c\u255e\u255f\u255a\u2554\u2569\u2566\u2560\u2550\u256c\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256b\u256a\u2518\u250c\u2588\u2584\u258c\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044a\u044b\u044c\u044d\u044e\u044f\u0401\u0451\u0404\u0454\u0407\u0457\u040e\u045e\xb0\u2219\xb7\u221a\u2116\u20ac\u25a0\xa0"},mik:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041a\u041b\u041c\u041d\u041e\u041f\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042a\u042b\u042c\u042d\u042e\u042f\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043a\u043b\u043c\u043d\u043e\u043f\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044a\u044b\u044c\u044d\u044e\u044f\u2514\u2534\u252c\u251c\u2500\u253c\u2563\u2551\u255a\u2554\u2569\u2566\u2560\u2550\u256c\u2510\u2591\u2592\u2593\u2502\u2524\u2116\xa7\u2557\u255d\u2518\u250c\u2588\u2584\u258c\u2590\u2580\u03b1\xdf\u0393\u03c0\u03a3\u03c3\xb5\u03c4\u03a6\u0398\u03a9\u03b4\u221e\u03c6\u03b5\u2229\u2261\xb1\u2265\u2264\u2320\u2321\xf7\u2248\xb0\u2219\xb7\u221a\u207f\xb2\u25a0\xa0"},ascii8bit:"ascii",usascii:"ascii",ansix34:"ascii",ansix341968:"ascii",ansix341986:"ascii",csascii:"ascii",cp367:"ascii",ibm367:"ascii",isoir6:"ascii",iso646us:"ascii",iso646irv:"ascii",us:"ascii",latin1:"iso88591",latin2:"iso88592",latin3:"iso88593",latin4:"iso88594",latin5:"iso88599",latin6:"iso885910",latin7:"iso885913",latin8:"iso885914",latin9:"iso885915",latin10:"iso885916",csisolatin1:"iso88591",csisolatin2:"iso88592",csisolatin3:"iso88593",csisolatin4:"iso88594",csisolatincyrillic:"iso88595",csisolatinarabic:"iso88596",csisolatingreek:"iso88597",csisolatinhebrew:"iso88598",csisolatin5:"iso88599",csisolatin6:"iso885910",l1:"iso88591",l2:"iso88592",l3:"iso88593",l4:"iso88594",l5:"iso88599",l6:"iso885910",l7:"iso885913",l8:"iso885914",l9:"iso885915",l10:"iso885916",isoir14:"iso646jp",isoir57:"iso646cn",isoir100:"iso88591",isoir101:"iso88592",isoir109:"iso88593",isoir110:"iso88594",isoir144:"iso88595",isoir127:"iso88596",isoir126:"iso88597",isoir138:"iso88598",isoir148:"iso88599",isoir157:"iso885910",isoir166:"tis620",isoir179:"iso885913",isoir199:"iso885914",isoir203:"iso885915",isoir226:"iso885916",cp819:"iso88591",ibm819:"iso88591",cyrillic:"iso88595",arabic:"iso88596",arabic8:"iso88596",ecma114:"iso88596",asmo708:"iso88596",greek:"iso88597",greek8:"iso88597",ecma118:"iso88597",elot928:"iso88597",hebrew:"iso88598",hebrew8:"iso88598",turkish:"iso88599",turkish8:"iso88599",thai:"iso885911",thai8:"iso885911",celtic:"iso885914",celtic8:"iso885914",isoceltic:"iso885914",tis6200:"tis620",tis62025291:"tis620",tis62025330:"tis620",1e4:"macroman",10006:"macgreek",10007:"maccyrillic",10079:"maciceland",10081:"macturkish",cspc8codepage437:"cp437",cspc775baltic:"cp775",cspc850multilingual:"cp850",cspcp852:"cp852",cspc862latinhebrew:"cp862",cpgr:"cp869",msee:"cp1250",mscyrl:"cp1251",msansi:"cp1252",msgreek:"cp1253",msturk:"cp1254",mshebr:"cp1255",msarab:"cp1256",winbaltrim:"cp1257",cp20866:"koi8r",20866:"koi8r",ibm878:"koi8r",cskoi8r:"koi8r",cp21866:"koi8u",21866:"koi8u",ibm1168:"koi8u",strk10482002:"rk1048",tcvn5712:"tcvn",tcvn57121:"tcvn",gb198880:"iso646cn",cn:"iso646cn",csiso14jisc6220ro:"iso646jp",jisc62201969ro:"iso646jp",jp:"iso646jp",cshproman8:"hproman8",r8:"hproman8",roman8:"hproman8",xroman8:"hproman8",ibm1051:"hproman8",mac:"macintosh",csmacintosh:"macintosh"}},function(g,I,e){"use strict";g.exports={437:"cp437",737:"cp737",775:"cp775",850:"cp850",852:"cp852",855:"cp855",856:"cp856",857:"cp857",858:"cp858",860:"cp860",861:"cp861",862:"cp862",863:"cp863",864:"cp864",865:"cp865",866:"cp866",869:"cp869",874:"windows874",922:"cp922",1046:"cp1046",1124:"cp1124",1125:"cp1125",1129:"cp1129",1133:"cp1133",1161:"cp1161",1162:"cp1162",1163:"cp1163",1250:"windows1250",1251:"windows1251",1252:"windows1252",1253:"windows1253",1254:"windows1254",1255:"windows1255",1256:"windows1256",1257:"windows1257",1258:"windows1258",28591:"iso88591",28592:"iso88592",28593:"iso88593",28594:"iso88594",28595:"iso88595",28596:"iso88596",28597:"iso88597",28598:"iso88598",28599:"iso88599",28600:"iso885910",28601:"iso885911",28603:"iso885913",28604:"iso885914",28605:"iso885915",28606:"iso885916",windows874:{type:"_sbcs",chars:"\u20ac\ufffd\ufffd\ufffd\ufffd\u2026\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u2018\u2019\u201c\u201d\u2022\u2013\u2014\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\xa0\u0e01\u0e02\u0e03\u0e04\u0e05\u0e06\u0e07\u0e08\u0e09\u0e0a\u0e0b\u0e0c\u0e0d\u0e0e\u0e0f\u0e10\u0e11\u0e12\u0e13\u0e14\u0e15\u0e16\u0e17\u0e18\u0e19\u0e1a\u0e1b\u0e1c\u0e1d\u0e1e\u0e1f\u0e20\u0e21\u0e22\u0e23\u0e24\u0e25\u0e26\u0e27\u0e28\u0e29\u0e2a\u0e2b\u0e2c\u0e2d\u0e2e\u0e2f\u0e30\u0e31\u0e32\u0e33\u0e34\u0e35\u0e36\u0e37\u0e38\u0e39\u0e3a\ufffd\ufffd\ufffd\ufffd\u0e3f\u0e40\u0e41\u0e42\u0e43\u0e44\u0e45\u0e46\u0e47\u0e48\u0e49\u0e4a\u0e4b\u0e4c\u0e4d\u0e4e\u0e4f\u0e50\u0e51\u0e52\u0e53\u0e54\u0e55\u0e56\u0e57\u0e58\u0e59\u0e5a\u0e5b\ufffd\ufffd\ufffd\ufffd"},win874:"windows874",cp874:"windows874",windows1250:{type:"_sbcs",chars:"\u20ac\ufffd\u201a\ufffd\u201e\u2026\u2020\u2021\ufffd\u2030\u0160\u2039\u015a\u0164\u017d\u0179\ufffd\u2018\u2019\u201c\u201d\u2022\u2013\u2014\ufffd\u2122\u0161\u203a\u015b\u0165\u017e\u017a\xa0\u02c7\u02d8\u0141\xa4\u0104\xa6\xa7\xa8\xa9\u015e\xab\xac\xad\xae\u017b\xb0\xb1\u02db\u0142\xb4\xb5\xb6\xb7\xb8\u0105\u015f\xbb\u013d\u02dd\u013e\u017c\u0154\xc1\xc2\u0102\xc4\u0139\u0106\xc7\u010c\xc9\u0118\xcb\u011a\xcd\xce\u010e\u0110\u0143\u0147\xd3\xd4\u0150\xd6\xd7\u0158\u016e\xda\u0170\xdc\xdd\u0162\xdf\u0155\xe1\xe2\u0103\xe4\u013a\u0107\xe7\u010d\xe9\u0119\xeb\u011b\xed\xee\u010f\u0111\u0144\u0148\xf3\xf4\u0151\xf6\xf7\u0159\u016f\xfa\u0171\xfc\xfd\u0163\u02d9"},win1250:"windows1250",cp1250:"windows1250",windows1251:{type:"_sbcs",chars:"\u0402\u0403\u201a\u0453\u201e\u2026\u2020\u2021\u20ac\u2030\u0409\u2039\u040a\u040c\u040b\u040f\u0452\u2018\u2019\u201c\u201d\u2022\u2013\u2014\ufffd\u2122\u0459\u203a\u045a\u045c\u045b\u045f\xa0\u040e\u045e\u0408\xa4\u0490\xa6\xa7\u0401\xa9\u0404\xab\xac\xad\xae\u0407\xb0\xb1\u0406\u0456\u0491\xb5\xb6\xb7\u0451\u2116\u0454\xbb\u0458\u0405\u0455\u0457\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041a\u041b\u041c\u041d\u041e\u041f\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042a\u042b\u042c\u042d\u042e\u042f\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043a\u043b\u043c\u043d\u043e\u043f\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044a\u044b\u044c\u044d\u044e\u044f"},win1251:"windows1251",cp1251:"windows1251",windows1252:{type:"_sbcs",chars:"\u20ac\ufffd\u201a\u0192\u201e\u2026\u2020\u2021\u02c6\u2030\u0160\u2039\u0152\ufffd\u017d\ufffd\ufffd\u2018\u2019\u201c\u201d\u2022\u2013\u2014\u02dc\u2122\u0161\u203a\u0153\ufffd\u017e\u0178\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"},win1252:"windows1252",cp1252:"windows1252",windows1253:{type:"_sbcs",chars:"\u20ac\ufffd\u201a\u0192\u201e\u2026\u2020\u2021\ufffd\u2030\ufffd\u2039\ufffd\ufffd\ufffd\ufffd\ufffd\u2018\u2019\u201c\u201d\u2022\u2013\u2014\ufffd\u2122\ufffd\u203a\ufffd\ufffd\ufffd\ufffd\xa0\u0385\u0386\xa3\xa4\xa5\xa6\xa7\xa8\xa9\ufffd\xab\xac\xad\xae\u2015\xb0\xb1\xb2\xb3\u0384\xb5\xb6\xb7\u0388\u0389\u038a\xbb\u038c\xbd\u038e\u038f\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039a\u039b\u039c\u039d\u039e\u039f\u03a0\u03a1\ufffd\u03a3\u03a4\u03a5\u03a6\u03a7\u03a8\u03a9\u03aa\u03ab\u03ac\u03ad\u03ae\u03af\u03b0\u03b1\u03b2\u03b3\u03b4\u03b5\u03b6\u03b7\u03b8\u03b9\u03ba\u03bb\u03bc\u03bd\u03be\u03bf\u03c0\u03c1\u03c2\u03c3\u03c4\u03c5\u03c6\u03c7\u03c8\u03c9\u03ca\u03cb\u03cc\u03cd\u03ce\ufffd"},win1253:"windows1253",cp1253:"windows1253",windows1254:{type:"_sbcs",chars:"\u20ac\ufffd\u201a\u0192\u201e\u2026\u2020\u2021\u02c6\u2030\u0160\u2039\u0152\ufffd\ufffd\ufffd\ufffd\u2018\u2019\u201c\u201d\u2022\u2013\u2014\u02dc\u2122\u0161\u203a\u0153\ufffd\ufffd\u0178\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\u011e\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\u0130\u015e\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\u011f\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\u0131\u015f\xff"},win1254:"windows1254",cp1254:"windows1254",windows1255:{type:"_sbcs",chars:"\u20ac\ufffd\u201a\u0192\u201e\u2026\u2020\u2021\u02c6\u2030\ufffd\u2039\ufffd\ufffd\ufffd\ufffd\ufffd\u2018\u2019\u201c\u201d\u2022\u2013\u2014\u02dc\u2122\ufffd\u203a\ufffd\ufffd\ufffd\ufffd\xa0\xa1\xa2\xa3\u20aa\xa5\xa6\xa7\xa8\xa9\xd7\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xf7\xbb\xbc\xbd\xbe\xbf\u05b0\u05b1\u05b2\u05b3\u05b4\u05b5\u05b6\u05b7\u05b8\u05b9\u05ba\u05bb\u05bc\u05bd\u05be\u05bf\u05c0\u05c1\u05c2\u05c3\u05f0\u05f1\u05f2\u05f3\u05f4\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u05d0\u05d1\u05d2\u05d3\u05d4\u05d5\u05d6\u05d7\u05d8\u05d9\u05da\u05db\u05dc\u05dd\u05de\u05df\u05e0\u05e1\u05e2\u05e3\u05e4\u05e5\u05e6\u05e7\u05e8\u05e9\u05ea\ufffd\ufffd\u200e\u200f\ufffd"},win1255:"windows1255",cp1255:"windows1255",windows1256:{type:"_sbcs",chars:"\u20ac\u067e\u201a\u0192\u201e\u2026\u2020\u2021\u02c6\u2030\u0679\u2039\u0152\u0686\u0698\u0688\u06af\u2018\u2019\u201c\u201d\u2022\u2013\u2014\u06a9\u2122\u0691\u203a\u0153\u200c\u200d\u06ba\xa0\u060c\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\u06be\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\u061b\xbb\xbc\xbd\xbe\u061f\u06c1\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062a\u062b\u062c\u062d\u062e\u062f\u0630\u0631\u0632\u0633\u0634\u0635\u0636\xd7\u0637\u0638\u0639\u063a\u0640\u0641\u0642\u0643\xe0\u0644\xe2\u0645\u0646\u0647\u0648\xe7\xe8\xe9\xea\xeb\u0649\u064a\xee\xef\u064b\u064c\u064d\u064e\xf4\u064f\u0650\xf7\u0651\xf9\u0652\xfb\xfc\u200e\u200f\u06d2"},win1256:"windows1256",cp1256:"windows1256",windows1257:{type:"_sbcs",chars:"\u20ac\ufffd\u201a\ufffd\u201e\u2026\u2020\u2021\ufffd\u2030\ufffd\u2039\ufffd\xa8\u02c7\xb8\ufffd\u2018\u2019\u201c\u201d\u2022\u2013\u2014\ufffd\u2122\ufffd\u203a\ufffd\xaf\u02db\ufffd\xa0\ufffd\xa2\xa3\xa4\ufffd\xa6\xa7\xd8\xa9\u0156\xab\xac\xad\xae\xc6\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xf8\xb9\u0157\xbb\xbc\xbd\xbe\xe6\u0104\u012e\u0100\u0106\xc4\xc5\u0118\u0112\u010c\xc9\u0179\u0116\u0122\u0136\u012a\u013b\u0160\u0143\u0145\xd3\u014c\xd5\xd6\xd7\u0172\u0141\u015a\u016a\xdc\u017b\u017d\xdf\u0105\u012f\u0101\u0107\xe4\xe5\u0119\u0113\u010d\xe9\u017a\u0117\u0123\u0137\u012b\u013c\u0161\u0144\u0146\xf3\u014d\xf5\xf6\xf7\u0173\u0142\u015b\u016b\xfc\u017c\u017e\u02d9"},win1257:"windows1257",cp1257:"windows1257",windows1258:{type:"_sbcs",chars:"\u20ac\ufffd\u201a\u0192\u201e\u2026\u2020\u2021\u02c6\u2030\ufffd\u2039\u0152\ufffd\ufffd\ufffd\ufffd\u2018\u2019\u201c\u201d\u2022\u2013\u2014\u02dc\u2122\ufffd\u203a\u0153\ufffd\ufffd\u0178\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\u0102\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\u0300\xcd\xce\xcf\u0110\xd1\u0309\xd3\xd4\u01a0\xd6\xd7\xd8\xd9\xda\xdb\xdc\u01af\u0303\xdf\xe0\xe1\xe2\u0103\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\u0301\xed\xee\xef\u0111\xf1\u0323\xf3\xf4\u01a1\xf6\xf7\xf8\xf9\xfa\xfb\xfc\u01b0\u20ab\xff"},win1258:"windows1258",cp1258:"windows1258",iso88591:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"},cp28591:"iso88591",iso88592:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\u0104\u02d8\u0141\xa4\u013d\u015a\xa7\xa8\u0160\u015e\u0164\u0179\xad\u017d\u017b\xb0\u0105\u02db\u0142\xb4\u013e\u015b\u02c7\xb8\u0161\u015f\u0165\u017a\u02dd\u017e\u017c\u0154\xc1\xc2\u0102\xc4\u0139\u0106\xc7\u010c\xc9\u0118\xcb\u011a\xcd\xce\u010e\u0110\u0143\u0147\xd3\xd4\u0150\xd6\xd7\u0158\u016e\xda\u0170\xdc\xdd\u0162\xdf\u0155\xe1\xe2\u0103\xe4\u013a\u0107\xe7\u010d\xe9\u0119\xeb\u011b\xed\xee\u010f\u0111\u0144\u0148\xf3\xf4\u0151\xf6\xf7\u0159\u016f\xfa\u0171\xfc\xfd\u0163\u02d9"},cp28592:"iso88592",iso88593:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\u0126\u02d8\xa3\xa4\ufffd\u0124\xa7\xa8\u0130\u015e\u011e\u0134\xad\ufffd\u017b\xb0\u0127\xb2\xb3\xb4\xb5\u0125\xb7\xb8\u0131\u015f\u011f\u0135\xbd\ufffd\u017c\xc0\xc1\xc2\ufffd\xc4\u010a\u0108\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\ufffd\xd1\xd2\xd3\xd4\u0120\xd6\xd7\u011c\xd9\xda\xdb\xdc\u016c\u015c\xdf\xe0\xe1\xe2\ufffd\xe4\u010b\u0109\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\ufffd\xf1\xf2\xf3\xf4\u0121\xf6\xf7\u011d\xf9\xfa\xfb\xfc\u016d\u015d\u02d9"},cp28593:"iso88593",iso88594:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\u0104\u0138\u0156\xa4\u0128\u013b\xa7\xa8\u0160\u0112\u0122\u0166\xad\u017d\xaf\xb0\u0105\u02db\u0157\xb4\u0129\u013c\u02c7\xb8\u0161\u0113\u0123\u0167\u014a\u017e\u014b\u0100\xc1\xc2\xc3\xc4\xc5\xc6\u012e\u010c\xc9\u0118\xcb\u0116\xcd\xce\u012a\u0110\u0145\u014c\u0136\xd4\xd5\xd6\xd7\xd8\u0172\xda\xdb\xdc\u0168\u016a\xdf\u0101\xe1\xe2\xe3\xe4\xe5\xe6\u012f\u010d\xe9\u0119\xeb\u0117\xed\xee\u012b\u0111\u0146\u014d\u0137\xf4\xf5\xf6\xf7\xf8\u0173\xfa\xfb\xfc\u0169\u016b\u02d9"},cp28594:"iso88594",iso88595:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040a\u040b\u040c\xad\u040e\u040f\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041a\u041b\u041c\u041d\u041e\u041f\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042a\u042b\u042c\u042d\u042e\u042f\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043a\u043b\u043c\u043d\u043e\u043f\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044a\u044b\u044c\u044d\u044e\u044f\u2116\u0451\u0452\u0453\u0454\u0455\u0456\u0457\u0458\u0459\u045a\u045b\u045c\xa7\u045e\u045f"},cp28595:"iso88595",iso88596:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\ufffd\ufffd\ufffd\xa4\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u060c\xad\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u061b\ufffd\ufffd\ufffd\u061f\ufffd\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062a\u062b\u062c\u062d\u062e\u062f\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\u0638\u0639\u063a\ufffd\ufffd\ufffd\ufffd\ufffd\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064a\u064b\u064c\u064d\u064e\u064f\u0650\u0651\u0652\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd"},cp28596:"iso88596",iso88597:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\u2018\u2019\xa3\u20ac\u20af\xa6\xa7\xa8\xa9\u037a\xab\xac\xad\ufffd\u2015\xb0\xb1\xb2\xb3\u0384\u0385\u0386\xb7\u0388\u0389\u038a\xbb\u038c\xbd\u038e\u038f\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039a\u039b\u039c\u039d\u039e\u039f\u03a0\u03a1\ufffd\u03a3\u03a4\u03a5\u03a6\u03a7\u03a8\u03a9\u03aa\u03ab\u03ac\u03ad\u03ae\u03af\u03b0\u03b1\u03b2\u03b3\u03b4\u03b5\u03b6\u03b7\u03b8\u03b9\u03ba\u03bb\u03bc\u03bd\u03be\u03bf\u03c0\u03c1\u03c2\u03c3\u03c4\u03c5\u03c6\u03c7\u03c8\u03c9\u03ca\u03cb\u03cc\u03cd\u03ce\ufffd"},cp28597:"iso88597",iso88598:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\ufffd\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xd7\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xf7\xbb\xbc\xbd\xbe\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u2017\u05d0\u05d1\u05d2\u05d3\u05d4\u05d5\u05d6\u05d7\u05d8\u05d9\u05da\u05db\u05dc\u05dd\u05de\u05df\u05e0\u05e1\u05e2\u05e3\u05e4\u05e5\u05e6\u05e7\u05e8\u05e9\u05ea\ufffd\ufffd\u200e\u200f\ufffd"},cp28598:"iso88598",iso88599:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\u011e\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\u0130\u015e\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\u011f\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\u0131\u015f\xff"},cp28599:"iso88599",iso885910:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\u0104\u0112\u0122\u012a\u0128\u0136\xa7\u013b\u0110\u0160\u0166\u017d\xad\u016a\u014a\xb0\u0105\u0113\u0123\u012b\u0129\u0137\xb7\u013c\u0111\u0161\u0167\u017e\u2015\u016b\u014b\u0100\xc1\xc2\xc3\xc4\xc5\xc6\u012e\u010c\xc9\u0118\xcb\u0116\xcd\xce\xcf\xd0\u0145\u014c\xd3\xd4\xd5\xd6\u0168\xd8\u0172\xda\xdb\xdc\xdd\xde\xdf\u0101\xe1\xe2\xe3\xe4\xe5\xe6\u012f\u010d\xe9\u0119\xeb\u0117\xed\xee\xef\xf0\u0146\u014d\xf3\xf4\xf5\xf6\u0169\xf8\u0173\xfa\xfb\xfc\xfd\xfe\u0138"},cp28600:"iso885910",iso885911:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\u0e01\u0e02\u0e03\u0e04\u0e05\u0e06\u0e07\u0e08\u0e09\u0e0a\u0e0b\u0e0c\u0e0d\u0e0e\u0e0f\u0e10\u0e11\u0e12\u0e13\u0e14\u0e15\u0e16\u0e17\u0e18\u0e19\u0e1a\u0e1b\u0e1c\u0e1d\u0e1e\u0e1f\u0e20\u0e21\u0e22\u0e23\u0e24\u0e25\u0e26\u0e27\u0e28\u0e29\u0e2a\u0e2b\u0e2c\u0e2d\u0e2e\u0e2f\u0e30\u0e31\u0e32\u0e33\u0e34\u0e35\u0e36\u0e37\u0e38\u0e39\u0e3a\ufffd\ufffd\ufffd\ufffd\u0e3f\u0e40\u0e41\u0e42\u0e43\u0e44\u0e45\u0e46\u0e47\u0e48\u0e49\u0e4a\u0e4b\u0e4c\u0e4d\u0e4e\u0e4f\u0e50\u0e51\u0e52\u0e53\u0e54\u0e55\u0e56\u0e57\u0e58\u0e59\u0e5a\u0e5b\ufffd\ufffd\ufffd\ufffd"},cp28601:"iso885911",iso885913:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\u201d\xa2\xa3\xa4\u201e\xa6\xa7\xd8\xa9\u0156\xab\xac\xad\xae\xc6\xb0\xb1\xb2\xb3\u201c\xb5\xb6\xb7\xf8\xb9\u0157\xbb\xbc\xbd\xbe\xe6\u0104\u012e\u0100\u0106\xc4\xc5\u0118\u0112\u010c\xc9\u0179\u0116\u0122\u0136\u012a\u013b\u0160\u0143\u0145\xd3\u014c\xd5\xd6\xd7\u0172\u0141\u015a\u016a\xdc\u017b\u017d\xdf\u0105\u012f\u0101\u0107\xe4\xe5\u0119\u0113\u010d\xe9\u017a\u0117\u0123\u0137\u012b\u013c\u0161\u0144\u0146\xf3\u014d\xf5\xf6\xf7\u0173\u0142\u015b\u016b\xfc\u017c\u017e\u2019"},cp28603:"iso885913",iso885914:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\u1e02\u1e03\xa3\u010a\u010b\u1e0a\xa7\u1e80\xa9\u1e82\u1e0b\u1ef2\xad\xae\u0178\u1e1e\u1e1f\u0120\u0121\u1e40\u1e41\xb6\u1e56\u1e81\u1e57\u1e83\u1e60\u1ef3\u1e84\u1e85\u1e61\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\u0174\xd1\xd2\xd3\xd4\xd5\xd6\u1e6a\xd8\xd9\xda\xdb\xdc\xdd\u0176\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\u0175\xf1\xf2\xf3\xf4\xf5\xf6\u1e6b\xf8\xf9\xfa\xfb\xfc\xfd\u0177\xff"},cp28604:"iso885914",iso885915:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\u20ac\xa5\u0160\xa7\u0161\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\u017d\xb5\xb6\xb7\u017e\xb9\xba\xbb\u0152\u0153\u0178\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"},cp28605:"iso885915",iso885916:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\u0104\u0105\u0141\u20ac\u201e\u0160\xa7\u0161\xa9\u0218\xab\u0179\xad\u017a\u017b\xb0\xb1\u010c\u0142\u017d\u201d\xb6\xb7\u017e\u010d\u0219\xbb\u0152\u0153\u0178\u017c\xc0\xc1\xc2\u0102\xc4\u0106\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\u0110\u0143\xd2\xd3\xd4\u0150\xd6\u015a\u0170\xd9\xda\xdb\xdc\u0118\u021a\xdf\xe0\xe1\xe2\u0103\xe4\u0107\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\u0111\u0144\xf2\xf3\xf4\u0151\xf6\u015b\u0171\xf9\xfa\xfb\xfc\u0119\u021b\xff"},cp28606:"iso885916",cp437:{type:"_sbcs",chars:"\xc7\xfc\xe9\xe2\xe4\xe0\xe5\xe7\xea\xeb\xe8\xef\xee\xec\xc4\xc5\xc9\xe6\xc6\xf4\xf6\xf2\xfb\xf9\xff\xd6\xdc\xa2\xa3\xa5\u20a7\u0192\xe1\xed\xf3\xfa\xf1\xd1\xaa\xba\xbf\u2310\xac\xbd\xbc\xa1\xab\xbb\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255d\u255c\u255b\u2510\u2514\u2534\u252c\u251c\u2500\u253c\u255e\u255f\u255a\u2554\u2569\u2566\u2560\u2550\u256c\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256b\u256a\u2518\u250c\u2588\u2584\u258c\u2590\u2580\u03b1\xdf\u0393\u03c0\u03a3\u03c3\xb5\u03c4\u03a6\u0398\u03a9\u03b4\u221e\u03c6\u03b5\u2229\u2261\xb1\u2265\u2264\u2320\u2321\xf7\u2248\xb0\u2219\xb7\u221a\u207f\xb2\u25a0\xa0"},ibm437:"cp437",csibm437:"cp437",cp737:{type:"_sbcs",chars:"\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039a\u039b\u039c\u039d\u039e\u039f\u03a0\u03a1\u03a3\u03a4\u03a5\u03a6\u03a7\u03a8\u03a9\u03b1\u03b2\u03b3\u03b4\u03b5\u03b6\u03b7\u03b8\u03b9\u03ba\u03bb\u03bc\u03bd\u03be\u03bf\u03c0\u03c1\u03c3\u03c2\u03c4\u03c5\u03c6\u03c7\u03c8\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255d\u255c\u255b\u2510\u2514\u2534\u252c\u251c\u2500\u253c\u255e\u255f\u255a\u2554\u2569\u2566\u2560\u2550\u256c\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256b\u256a\u2518\u250c\u2588\u2584\u258c\u2590\u2580\u03c9\u03ac\u03ad\u03ae\u03ca\u03af\u03cc\u03cd\u03cb\u03ce\u0386\u0388\u0389\u038a\u038c\u038e\u038f\xb1\u2265\u2264\u03aa\u03ab\xf7\u2248\xb0\u2219\xb7\u221a\u207f\xb2\u25a0\xa0"},ibm737:"cp737",csibm737:"cp737",cp775:{type:"_sbcs",chars:"\u0106\xfc\xe9\u0101\xe4\u0123\xe5\u0107\u0142\u0113\u0156\u0157\u012b\u0179\xc4\xc5\xc9\xe6\xc6\u014d\xf6\u0122\xa2\u015a\u015b\xd6\xdc\xf8\xa3\xd8\xd7\xa4\u0100\u012a\xf3\u017b\u017c\u017a\u201d\xa6\xa9\xae\xac\xbd\xbc\u0141\xab\xbb\u2591\u2592\u2593\u2502\u2524\u0104\u010c\u0118\u0116\u2563\u2551\u2557\u255d\u012e\u0160\u2510\u2514\u2534\u252c\u251c\u2500\u253c\u0172\u016a\u255a\u2554\u2569\u2566\u2560\u2550\u256c\u017d\u0105\u010d\u0119\u0117\u012f\u0161\u0173\u016b\u017e\u2518\u250c\u2588\u2584\u258c\u2590\u2580\xd3\xdf\u014c\u0143\xf5\xd5\xb5\u0144\u0136\u0137\u013b\u013c\u0146\u0112\u0145\u2019\xad\xb1\u201c\xbe\xb6\xa7\xf7\u201e\xb0\u2219\xb7\xb9\xb3\xb2\u25a0\xa0"},ibm775:"cp775",csibm775:"cp775",cp850:{type:"_sbcs",chars:"\xc7\xfc\xe9\xe2\xe4\xe0\xe5\xe7\xea\xeb\xe8\xef\xee\xec\xc4\xc5\xc9\xe6\xc6\xf4\xf6\xf2\xfb\xf9\xff\xd6\xdc\xf8\xa3\xd8\xd7\u0192\xe1\xed\xf3\xfa\xf1\xd1\xaa\xba\xbf\xae\xac\xbd\xbc\xa1\xab\xbb\u2591\u2592\u2593\u2502\u2524\xc1\xc2\xc0\xa9\u2563\u2551\u2557\u255d\xa2\xa5\u2510\u2514\u2534\u252c\u251c\u2500\u253c\xe3\xc3\u255a\u2554\u2569\u2566\u2560\u2550\u256c\xa4\xf0\xd0\xca\xcb\xc8\u0131\xcd\xce\xcf\u2518\u250c\u2588\u2584\xa6\xcc\u2580\xd3\xdf\xd4\xd2\xf5\xd5\xb5\xfe\xde\xda\xdb\xd9\xfd\xdd\xaf\xb4\xad\xb1\u2017\xbe\xb6\xa7\xf7\xb8\xb0\xa8\xb7\xb9\xb3\xb2\u25a0\xa0"},ibm850:"cp850",csibm850:"cp850",cp852:{type:"_sbcs",chars:"\xc7\xfc\xe9\xe2\xe4\u016f\u0107\xe7\u0142\xeb\u0150\u0151\xee\u0179\xc4\u0106\xc9\u0139\u013a\xf4\xf6\u013d\u013e\u015a\u015b\xd6\xdc\u0164\u0165\u0141\xd7\u010d\xe1\xed\xf3\xfa\u0104\u0105\u017d\u017e\u0118\u0119\xac\u017a\u010c\u015f\xab\xbb\u2591\u2592\u2593\u2502\u2524\xc1\xc2\u011a\u015e\u2563\u2551\u2557\u255d\u017b\u017c\u2510\u2514\u2534\u252c\u251c\u2500\u253c\u0102\u0103\u255a\u2554\u2569\u2566\u2560\u2550\u256c\xa4\u0111\u0110\u010e\xcb\u010f\u0147\xcd\xce\u011b\u2518\u250c\u2588\u2584\u0162\u016e\u2580\xd3\xdf\xd4\u0143\u0144\u0148\u0160\u0161\u0154\xda\u0155\u0170\xfd\xdd\u0163\xb4\xad\u02dd\u02db\u02c7\u02d8\xa7\xf7\xb8\xb0\xa8\u02d9\u0171\u0158\u0159\u25a0\xa0"},ibm852:"cp852",csibm852:"cp852",cp855:{type:"_sbcs",chars:"\u0452\u0402\u0453\u0403\u0451\u0401\u0454\u0404\u0455\u0405\u0456\u0406\u0457\u0407\u0458\u0408\u0459\u0409\u045a\u040a\u045b\u040b\u045c\u040c\u045e\u040e\u045f\u040f\u044e\u042e\u044a\u042a\u0430\u0410\u0431\u0411\u0446\u0426\u0434\u0414\u0435\u0415\u0444\u0424\u0433\u0413\xab\xbb\u2591\u2592\u2593\u2502\u2524\u0445\u0425\u0438\u0418\u2563\u2551\u2557\u255d\u0439\u0419\u2510\u2514\u2534\u252c\u251c\u2500\u253c\u043a\u041a\u255a\u2554\u2569\u2566\u2560\u2550\u256c\xa4\u043b\u041b\u043c\u041c\u043d\u041d\u043e\u041e\u043f\u2518\u250c\u2588\u2584\u041f\u044f\u2580\u042f\u0440\u0420\u0441\u0421\u0442\u0422\u0443\u0423\u0436\u0416\u0432\u0412\u044c\u042c\u2116\xad\u044b\u042b\u0437\u0417\u0448\u0428\u044d\u042d\u0449\u0429\u0447\u0427\xa7\u25a0\xa0"},ibm855:"cp855",csibm855:"cp855",cp856:{type:"_sbcs",chars:"\u05d0\u05d1\u05d2\u05d3\u05d4\u05d5\u05d6\u05d7\u05d8\u05d9\u05da\u05db\u05dc\u05dd\u05de\u05df\u05e0\u05e1\u05e2\u05e3\u05e4\u05e5\u05e6\u05e7\u05e8\u05e9\u05ea\ufffd\xa3\ufffd\xd7\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\xae\xac\xbd\xbc\ufffd\xab\xbb\u2591\u2592\u2593\u2502\u2524\ufffd\ufffd\ufffd\xa9\u2563\u2551\u2557\u255d\xa2\xa5\u2510\u2514\u2534\u252c\u251c\u2500\u253c\ufffd\ufffd\u255a\u2554\u2569\u2566\u2560\u2550\u256c\xa4\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u2518\u250c\u2588\u2584\xa6\ufffd\u2580\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\xb5\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\xaf\xb4\xad\xb1\u2017\xbe\xb6\xa7\xf7\xb8\xb0\xa8\xb7\xb9\xb3\xb2\u25a0\xa0"},ibm856:"cp856",csibm856:"cp856",cp857:{type:"_sbcs",chars:"\xc7\xfc\xe9\xe2\xe4\xe0\xe5\xe7\xea\xeb\xe8\xef\xee\u0131\xc4\xc5\xc9\xe6\xc6\xf4\xf6\xf2\xfb\xf9\u0130\xd6\xdc\xf8\xa3\xd8\u015e\u015f\xe1\xed\xf3\xfa\xf1\xd1\u011e\u011f\xbf\xae\xac\xbd\xbc\xa1\xab\xbb\u2591\u2592\u2593\u2502\u2524\xc1\xc2\xc0\xa9\u2563\u2551\u2557\u255d\xa2\xa5\u2510\u2514\u2534\u252c\u251c\u2500\u253c\xe3\xc3\u255a\u2554\u2569\u2566\u2560\u2550\u256c\xa4\xba\xaa\xca\xcb\xc8\ufffd\xcd\xce\xcf\u2518\u250c\u2588\u2584\xa6\xcc\u2580\xd3\xdf\xd4\xd2\xf5\xd5\xb5\ufffd\xd7\xda\xdb\xd9\xec\xff\xaf\xb4\xad\xb1\ufffd\xbe\xb6\xa7\xf7\xb8\xb0\xa8\xb7\xb9\xb3\xb2\u25a0\xa0"},ibm857:"cp857",csibm857:"cp857",cp858:{type:"_sbcs",chars:"\xc7\xfc\xe9\xe2\xe4\xe0\xe5\xe7\xea\xeb\xe8\xef\xee\xec\xc4\xc5\xc9\xe6\xc6\xf4\xf6\xf2\xfb\xf9\xff\xd6\xdc\xf8\xa3\xd8\xd7\u0192\xe1\xed\xf3\xfa\xf1\xd1\xaa\xba\xbf\xae\xac\xbd\xbc\xa1\xab\xbb\u2591\u2592\u2593\u2502\u2524\xc1\xc2\xc0\xa9\u2563\u2551\u2557\u255d\xa2\xa5\u2510\u2514\u2534\u252c\u251c\u2500\u253c\xe3\xc3\u255a\u2554\u2569\u2566\u2560\u2550\u256c\xa4\xf0\xd0\xca\xcb\xc8\u20ac\xcd\xce\xcf\u2518\u250c\u2588\u2584\xa6\xcc\u2580\xd3\xdf\xd4\xd2\xf5\xd5\xb5\xfe\xde\xda\xdb\xd9\xfd\xdd\xaf\xb4\xad\xb1\u2017\xbe\xb6\xa7\xf7\xb8\xb0\xa8\xb7\xb9\xb3\xb2\u25a0\xa0"},ibm858:"cp858",csibm858:"cp858",cp860:{type:"_sbcs",chars:"\xc7\xfc\xe9\xe2\xe3\xe0\xc1\xe7\xea\xca\xe8\xcd\xd4\xec\xc3\xc2\xc9\xc0\xc8\xf4\xf5\xf2\xda\xf9\xcc\xd5\xdc\xa2\xa3\xd9\u20a7\xd3\xe1\xed\xf3\xfa\xf1\xd1\xaa\xba\xbf\xd2\xac\xbd\xbc\xa1\xab\xbb\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255d\u255c\u255b\u2510\u2514\u2534\u252c\u251c\u2500\u253c\u255e\u255f\u255a\u2554\u2569\u2566\u2560\u2550\u256c\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256b\u256a\u2518\u250c\u2588\u2584\u258c\u2590\u2580\u03b1\xdf\u0393\u03c0\u03a3\u03c3\xb5\u03c4\u03a6\u0398\u03a9\u03b4\u221e\u03c6\u03b5\u2229\u2261\xb1\u2265\u2264\u2320\u2321\xf7\u2248\xb0\u2219\xb7\u221a\u207f\xb2\u25a0\xa0"},ibm860:"cp860",csibm860:"cp860",cp861:{type:"_sbcs",chars:"\xc7\xfc\xe9\xe2\xe4\xe0\xe5\xe7\xea\xeb\xe8\xd0\xf0\xde\xc4\xc5\xc9\xe6\xc6\xf4\xf6\xfe\xfb\xdd\xfd\xd6\xdc\xf8\xa3\xd8\u20a7\u0192\xe1\xed\xf3\xfa\xc1\xcd\xd3\xda\xbf\u2310\xac\xbd\xbc\xa1\xab\xbb\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255d\u255c\u255b\u2510\u2514\u2534\u252c\u251c\u2500\u253c\u255e\u255f\u255a\u2554\u2569\u2566\u2560\u2550\u256c\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256b\u256a\u2518\u250c\u2588\u2584\u258c\u2590\u2580\u03b1\xdf\u0393\u03c0\u03a3\u03c3\xb5\u03c4\u03a6\u0398\u03a9\u03b4\u221e\u03c6\u03b5\u2229\u2261\xb1\u2265\u2264\u2320\u2321\xf7\u2248\xb0\u2219\xb7\u221a\u207f\xb2\u25a0\xa0"},ibm861:"cp861",csibm861:"cp861",cp862:{type:"_sbcs",chars:"\u05d0\u05d1\u05d2\u05d3\u05d4\u05d5\u05d6\u05d7\u05d8\u05d9\u05da\u05db\u05dc\u05dd\u05de\u05df\u05e0\u05e1\u05e2\u05e3\u05e4\u05e5\u05e6\u05e7\u05e8\u05e9\u05ea\xa2\xa3\xa5\u20a7\u0192\xe1\xed\xf3\xfa\xf1\xd1\xaa\xba\xbf\u2310\xac\xbd\xbc\xa1\xab\xbb\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255d\u255c\u255b\u2510\u2514\u2534\u252c\u251c\u2500\u253c\u255e\u255f\u255a\u2554\u2569\u2566\u2560\u2550\u256c\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256b\u256a\u2518\u250c\u2588\u2584\u258c\u2590\u2580\u03b1\xdf\u0393\u03c0\u03a3\u03c3\xb5\u03c4\u03a6\u0398\u03a9\u03b4\u221e\u03c6\u03b5\u2229\u2261\xb1\u2265\u2264\u2320\u2321\xf7\u2248\xb0\u2219\xb7\u221a\u207f\xb2\u25a0\xa0"},ibm862:"cp862",csibm862:"cp862",cp863:{type:"_sbcs",chars:"\xc7\xfc\xe9\xe2\xc2\xe0\xb6\xe7\xea\xeb\xe8\xef\xee\u2017\xc0\xa7\xc9\xc8\xca\xf4\xcb\xcf\xfb\xf9\xa4\xd4\xdc\xa2\xa3\xd9\xdb\u0192\xa6\xb4\xf3\xfa\xa8\xb8\xb3\xaf\xce\u2310\xac\xbd\xbc\xbe\xab\xbb\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255d\u255c\u255b\u2510\u2514\u2534\u252c\u251c\u2500\u253c\u255e\u255f\u255a\u2554\u2569\u2566\u2560\u2550\u256c\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256b\u256a\u2518\u250c\u2588\u2584\u258c\u2590\u2580\u03b1\xdf\u0393\u03c0\u03a3\u03c3\xb5\u03c4\u03a6\u0398\u03a9\u03b4\u221e\u03c6\u03b5\u2229\u2261\xb1\u2265\u2264\u2320\u2321\xf7\u2248\xb0\u2219\xb7\u221a\u207f\xb2\u25a0\xa0"},ibm863:"cp863",csibm863:"cp863",cp864:{type:"_sbcs",chars:"\0\x01\x02\x03\x04\x05\x06\x07\b\t\n\v\f\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$\u066a&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\xb0\xb7\u2219\u221a\u2592\u2500\u2502\u253c\u2524\u252c\u251c\u2534\u2510\u250c\u2514\u2518\u03b2\u221e\u03c6\xb1\xbd\xbc\u2248\xab\xbb\ufef7\ufef8\ufffd\ufffd\ufefb\ufefc\ufffd\xa0\xad\ufe82\xa3\xa4\ufe84\ufffd\ufffd\ufe8e\ufe8f\ufe95\ufe99\u060c\ufe9d\ufea1\ufea5\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\ufed1\u061b\ufeb1\ufeb5\ufeb9\u061f\xa2\ufe80\ufe81\ufe83\ufe85\ufeca\ufe8b\ufe8d\ufe91\ufe93\ufe97\ufe9b\ufe9f\ufea3\ufea7\ufea9\ufeab\ufead\ufeaf\ufeb3\ufeb7\ufebb\ufebf\ufec1\ufec5\ufecb\ufecf\xa6\xac\xf7\xd7\ufec9\u0640\ufed3\ufed7\ufedb\ufedf\ufee3\ufee7\ufeeb\ufeed\ufeef\ufef3\ufebd\ufecc\ufece\ufecd\ufee1\ufe7d\u0651\ufee5\ufee9\ufeec\ufef0\ufef2\ufed0\ufed5\ufef5\ufef6\ufedd\ufed9\ufef1\u25a0\ufffd"},ibm864:"cp864",csibm864:"cp864",cp865:{type:"_sbcs",chars:"\xc7\xfc\xe9\xe2\xe4\xe0\xe5\xe7\xea\xeb\xe8\xef\xee\xec\xc4\xc5\xc9\xe6\xc6\xf4\xf6\xf2\xfb\xf9\xff\xd6\xdc\xf8\xa3\xd8\u20a7\u0192\xe1\xed\xf3\xfa\xf1\xd1\xaa\xba\xbf\u2310\xac\xbd\xbc\xa1\xab\xa4\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255d\u255c\u255b\u2510\u2514\u2534\u252c\u251c\u2500\u253c\u255e\u255f\u255a\u2554\u2569\u2566\u2560\u2550\u256c\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256b\u256a\u2518\u250c\u2588\u2584\u258c\u2590\u2580\u03b1\xdf\u0393\u03c0\u03a3\u03c3\xb5\u03c4\u03a6\u0398\u03a9\u03b4\u221e\u03c6\u03b5\u2229\u2261\xb1\u2265\u2264\u2320\u2321\xf7\u2248\xb0\u2219\xb7\u221a\u207f\xb2\u25a0\xa0"},ibm865:"cp865",csibm865:"cp865",cp866:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041a\u041b\u041c\u041d\u041e\u041f\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042a\u042b\u042c\u042d\u042e\u042f\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043a\u043b\u043c\u043d\u043e\u043f\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255d\u255c\u255b\u2510\u2514\u2534\u252c\u251c\u2500\u253c\u255e\u255f\u255a\u2554\u2569\u2566\u2560\u2550\u256c\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256b\u256a\u2518\u250c\u2588\u2584\u258c\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044a\u044b\u044c\u044d\u044e\u044f\u0401\u0451\u0404\u0454\u0407\u0457\u040e\u045e\xb0\u2219\xb7\u221a\u2116\xa4\u25a0\xa0"},ibm866:"cp866",csibm866:"cp866",cp869:{type:"_sbcs",chars:"\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u0386\ufffd\xb7\xac\xa6\u2018\u2019\u0388\u2015\u0389\u038a\u03aa\u038c\ufffd\ufffd\u038e\u03ab\xa9\u038f\xb2\xb3\u03ac\xa3\u03ad\u03ae\u03af\u03ca\u0390\u03cc\u03cd\u0391\u0392\u0393\u0394\u0395\u0396\u0397\xbd\u0398\u0399\xab\xbb\u2591\u2592\u2593\u2502\u2524\u039a\u039b\u039c\u039d\u2563\u2551\u2557\u255d\u039e\u039f\u2510\u2514\u2534\u252c\u251c\u2500\u253c\u03a0\u03a1\u255a\u2554\u2569\u2566\u2560\u2550\u256c\u03a3\u03a4\u03a5\u03a6\u03a7\u03a8\u03a9\u03b1\u03b2\u03b3\u2518\u250c\u2588\u2584\u03b4\u03b5\u2580\u03b6\u03b7\u03b8\u03b9\u03ba\u03bb\u03bc\u03bd\u03be\u03bf\u03c0\u03c1\u03c3\u03c2\u03c4\u0384\xad\xb1\u03c5\u03c6\u03c7\xa7\u03c8\u0385\xb0\xa8\u03c9\u03cb\u03b0\u03ce\u25a0\xa0"},ibm869:"cp869",csibm869:"cp869",cp922:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\u203e\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\u0160\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\u017d\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\u0161\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\u017e\xff"},ibm922:"cp922",csibm922:"cp922",cp1046:{type:"_sbcs",chars:"\ufe88\xd7\xf7\uf8f6\uf8f5\uf8f4\uf8f7\ufe71\x88\u25a0\u2502\u2500\u2510\u250c\u2514\u2518\ufe79\ufe7b\ufe7d\ufe7f\ufe77\ufe8a\ufef0\ufef3\ufef2\ufece\ufecf\ufed0\ufef6\ufef8\ufefa\ufefc\xa0\uf8fa\uf8f9\uf8f8\xa4\uf8fb\ufe8b\ufe91\ufe97\ufe9b\ufe9f\ufea3\u060c\xad\ufea7\ufeb3\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\ufeb7\u061b\ufebb\ufebf\ufeca\u061f\ufecb\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062a\u062b\u062c\u062d\u062e\u062f\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\ufec7\u0639\u063a\ufecc\ufe82\ufe84\ufe8e\ufed3\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064a\u064b\u064c\u064d\u064e\u064f\u0650\u0651\u0652\ufed7\ufedb\ufedf\uf8fc\ufef5\ufef7\ufef9\ufefb\ufee3\ufee7\ufeec\ufee9\ufffd"},ibm1046:"cp1046",csibm1046:"cp1046",cp1124:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\u0401\u0402\u0490\u0404\u0405\u0406\u0407\u0408\u0409\u040a\u040b\u040c\xad\u040e\u040f\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041a\u041b\u041c\u041d\u041e\u041f\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042a\u042b\u042c\u042d\u042e\u042f\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043a\u043b\u043c\u043d\u043e\u043f\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044a\u044b\u044c\u044d\u044e\u044f\u2116\u0451\u0452\u0491\u0454\u0455\u0456\u0457\u0458\u0459\u045a\u045b\u045c\xa7\u045e\u045f"},ibm1124:"cp1124",csibm1124:"cp1124",cp1125:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041a\u041b\u041c\u041d\u041e\u041f\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042a\u042b\u042c\u042d\u042e\u042f\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043a\u043b\u043c\u043d\u043e\u043f\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255d\u255c\u255b\u2510\u2514\u2534\u252c\u251c\u2500\u253c\u255e\u255f\u255a\u2554\u2569\u2566\u2560\u2550\u256c\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256b\u256a\u2518\u250c\u2588\u2584\u258c\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044a\u044b\u044c\u044d\u044e\u044f\u0401\u0451\u0490\u0491\u0404\u0454\u0406\u0456\u0407\u0457\xb7\u221a\u2116\xa4\u25a0\xa0"},ibm1125:"cp1125",csibm1125:"cp1125",cp1129:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\u0153\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\u0178\xb5\xb6\xb7\u0152\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\u0102\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\u0300\xcd\xce\xcf\u0110\xd1\u0309\xd3\xd4\u01a0\xd6\xd7\xd8\xd9\xda\xdb\xdc\u01af\u0303\xdf\xe0\xe1\xe2\u0103\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\u0301\xed\xee\xef\u0111\xf1\u0323\xf3\xf4\u01a1\xf6\xf7\xf8\xf9\xfa\xfb\xfc\u01b0\u20ab\xff"},ibm1129:"cp1129",csibm1129:"cp1129",cp1133:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\u0e81\u0e82\u0e84\u0e87\u0e88\u0eaa\u0e8a\u0e8d\u0e94\u0e95\u0e96\u0e97\u0e99\u0e9a\u0e9b\u0e9c\u0e9d\u0e9e\u0e9f\u0ea1\u0ea2\u0ea3\u0ea5\u0ea7\u0eab\u0ead\u0eae\ufffd\ufffd\ufffd\u0eaf\u0eb0\u0eb2\u0eb3\u0eb4\u0eb5\u0eb6\u0eb7\u0eb8\u0eb9\u0ebc\u0eb1\u0ebb\u0ebd\ufffd\ufffd\ufffd\u0ec0\u0ec1\u0ec2\u0ec3\u0ec4\u0ec8\u0ec9\u0eca\u0ecb\u0ecc\u0ecd\u0ec6\ufffd\u0edc\u0edd\u20ad\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u0ed0\u0ed1\u0ed2\u0ed3\u0ed4\u0ed5\u0ed6\u0ed7\u0ed8\u0ed9\ufffd\ufffd\xa2\xac\xa6\ufffd"},ibm1133:"cp1133",csibm1133:"cp1133",cp1161:{type:"_sbcs",chars:"\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u0e48\u0e01\u0e02\u0e03\u0e04\u0e05\u0e06\u0e07\u0e08\u0e09\u0e0a\u0e0b\u0e0c\u0e0d\u0e0e\u0e0f\u0e10\u0e11\u0e12\u0e13\u0e14\u0e15\u0e16\u0e17\u0e18\u0e19\u0e1a\u0e1b\u0e1c\u0e1d\u0e1e\u0e1f\u0e20\u0e21\u0e22\u0e23\u0e24\u0e25\u0e26\u0e27\u0e28\u0e29\u0e2a\u0e2b\u0e2c\u0e2d\u0e2e\u0e2f\u0e30\u0e31\u0e32\u0e33\u0e34\u0e35\u0e36\u0e37\u0e38\u0e39\u0e3a\u0e49\u0e4a\u0e4b\u20ac\u0e3f\u0e40\u0e41\u0e42\u0e43\u0e44\u0e45\u0e46\u0e47\u0e48\u0e49\u0e4a\u0e4b\u0e4c\u0e4d\u0e4e\u0e4f\u0e50\u0e51\u0e52\u0e53\u0e54\u0e55\u0e56\u0e57\u0e58\u0e59\u0e5a\u0e5b\xa2\xac\xa6\xa0"},ibm1161:"cp1161",csibm1161:"cp1161",cp1162:{type:"_sbcs",chars:"\u20ac\x81\x82\x83\x84\u2026\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\u2018\u2019\u201c\u201d\u2022\u2013\u2014\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\u0e01\u0e02\u0e03\u0e04\u0e05\u0e06\u0e07\u0e08\u0e09\u0e0a\u0e0b\u0e0c\u0e0d\u0e0e\u0e0f\u0e10\u0e11\u0e12\u0e13\u0e14\u0e15\u0e16\u0e17\u0e18\u0e19\u0e1a\u0e1b\u0e1c\u0e1d\u0e1e\u0e1f\u0e20\u0e21\u0e22\u0e23\u0e24\u0e25\u0e26\u0e27\u0e28\u0e29\u0e2a\u0e2b\u0e2c\u0e2d\u0e2e\u0e2f\u0e30\u0e31\u0e32\u0e33\u0e34\u0e35\u0e36\u0e37\u0e38\u0e39\u0e3a\ufffd\ufffd\ufffd\ufffd\u0e3f\u0e40\u0e41\u0e42\u0e43\u0e44\u0e45\u0e46\u0e47\u0e48\u0e49\u0e4a\u0e4b\u0e4c\u0e4d\u0e4e\u0e4f\u0e50\u0e51\u0e52\u0e53\u0e54\u0e55\u0e56\u0e57\u0e58\u0e59\u0e5a\u0e5b\ufffd\ufffd\ufffd\ufffd"},ibm1162:"cp1162",csibm1162:"cp1162",cp1163:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\u20ac\xa5\xa6\xa7\u0153\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\u0178\xb5\xb6\xb7\u0152\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\u0102\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\u0300\xcd\xce\xcf\u0110\xd1\u0309\xd3\xd4\u01a0\xd6\xd7\xd8\xd9\xda\xdb\xdc\u01af\u0303\xdf\xe0\xe1\xe2\u0103\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\u0301\xed\xee\xef\u0111\xf1\u0323\xf3\xf4\u01a1\xf6\xf7\xf8\xf9\xfa\xfb\xfc\u01b0\u20ab\xff"},ibm1163:"cp1163",csibm1163:"cp1163",maccroatian:{type:"_sbcs",chars:"\xc4\xc5\xc7\xc9\xd1\xd6\xdc\xe1\xe0\xe2\xe4\xe3\xe5\xe7\xe9\xe8\xea\xeb\xed\xec\xee\xef\xf1\xf3\xf2\xf4\xf6\xf5\xfa\xf9\xfb\xfc\u2020\xb0\xa2\xa3\xa7\u2022\xb6\xdf\xae\u0160\u2122\xb4\xa8\u2260\u017d\xd8\u221e\xb1\u2264\u2265\u2206\xb5\u2202\u2211\u220f\u0161\u222b\xaa\xba\u2126\u017e\xf8\xbf\xa1\xac\u221a\u0192\u2248\u0106\xab\u010c\u2026\xa0\xc0\xc3\xd5\u0152\u0153\u0110\u2014\u201c\u201d\u2018\u2019\xf7\u25ca\ufffd\xa9\u2044\xa4\u2039\u203a\xc6\xbb\u2013\xb7\u201a\u201e\u2030\xc2\u0107\xc1\u010d\xc8\xcd\xce\xcf\xcc\xd3\xd4\u0111\xd2\xda\xdb\xd9\u0131\u02c6\u02dc\xaf\u03c0\xcb\u02da\xb8\xca\xe6\u02c7"},maccyrillic:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041a\u041b\u041c\u041d\u041e\u041f\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042a\u042b\u042c\u042d\u042e\u042f\u2020\xb0\xa2\xa3\xa7\u2022\xb6\u0406\xae\xa9\u2122\u0402\u0452\u2260\u0403\u0453\u221e\xb1\u2264\u2265\u0456\xb5\u2202\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040a\u045a\u0458\u0405\xac\u221a\u0192\u2248\u2206\xab\xbb\u2026\xa0\u040b\u045b\u040c\u045c\u0455\u2013\u2014\u201c\u201d\u2018\u2019\xf7\u201e\u040e\u045e\u040f\u045f\u2116\u0401\u0451\u044f\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043a\u043b\u043c\u043d\u043e\u043f\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044a\u044b\u044c\u044d\u044e\xa4"},macgreek:{type:"_sbcs",chars:"\xc4\xb9\xb2\xc9\xb3\xd6\xdc\u0385\xe0\xe2\xe4\u0384\xa8\xe7\xe9\xe8\xea\xeb\xa3\u2122\xee\xef\u2022\xbd\u2030\xf4\xf6\xa6\xad\xf9\xfb\xfc\u2020\u0393\u0394\u0398\u039b\u039e\u03a0\xdf\xae\xa9\u03a3\u03aa\xa7\u2260\xb0\u0387\u0391\xb1\u2264\u2265\xa5\u0392\u0395\u0396\u0397\u0399\u039a\u039c\u03a6\u03ab\u03a8\u03a9\u03ac\u039d\xac\u039f\u03a1\u2248\u03a4\xab\xbb\u2026\xa0\u03a5\u03a7\u0386\u0388\u0153\u2013\u2015\u201c\u201d\u2018\u2019\xf7\u0389\u038a\u038c\u038e\u03ad\u03ae\u03af\u03cc\u038f\u03cd\u03b1\u03b2\u03c8\u03b4\u03b5\u03c6\u03b3\u03b7\u03b9\u03be\u03ba\u03bb\u03bc\u03bd\u03bf\u03c0\u03ce\u03c1\u03c3\u03c4\u03b8\u03c9\u03c2\u03c7\u03c5\u03b6\u03ca\u03cb\u0390\u03b0\ufffd"},maciceland:{type:"_sbcs",chars:"\xc4\xc5\xc7\xc9\xd1\xd6\xdc\xe1\xe0\xe2\xe4\xe3\xe5\xe7\xe9\xe8\xea\xeb\xed\xec\xee\xef\xf1\xf3\xf2\xf4\xf6\xf5\xfa\xf9\xfb\xfc\xdd\xb0\xa2\xa3\xa7\u2022\xb6\xdf\xae\xa9\u2122\xb4\xa8\u2260\xc6\xd8\u221e\xb1\u2264\u2265\xa5\xb5\u2202\u2211\u220f\u03c0\u222b\xaa\xba\u2126\xe6\xf8\xbf\xa1\xac\u221a\u0192\u2248\u2206\xab\xbb\u2026\xa0\xc0\xc3\xd5\u0152\u0153\u2013\u2014\u201c\u201d\u2018\u2019\xf7\u25ca\xff\u0178\u2044\xa4\xd0\xf0\xde\xfe\xfd\xb7\u201a\u201e\u2030\xc2\xca\xc1\xcb\xc8\xcd\xce\xcf\xcc\xd3\xd4\ufffd\xd2\xda\xdb\xd9\u0131\u02c6\u02dc\xaf\u02d8\u02d9\u02da\xb8\u02dd\u02db\u02c7"},macroman:{type:"_sbcs",chars:"\xc4\xc5\xc7\xc9\xd1\xd6\xdc\xe1\xe0\xe2\xe4\xe3\xe5\xe7\xe9\xe8\xea\xeb\xed\xec\xee\xef\xf1\xf3\xf2\xf4\xf6\xf5\xfa\xf9\xfb\xfc\u2020\xb0\xa2\xa3\xa7\u2022\xb6\xdf\xae\xa9\u2122\xb4\xa8\u2260\xc6\xd8\u221e\xb1\u2264\u2265\xa5\xb5\u2202\u2211\u220f\u03c0\u222b\xaa\xba\u2126\xe6\xf8\xbf\xa1\xac\u221a\u0192\u2248\u2206\xab\xbb\u2026\xa0\xc0\xc3\xd5\u0152\u0153\u2013\u2014\u201c\u201d\u2018\u2019\xf7\u25ca\xff\u0178\u2044\xa4\u2039\u203a\ufb01\ufb02\u2021\xb7\u201a\u201e\u2030\xc2\xca\xc1\xcb\xc8\xcd\xce\xcf\xcc\xd3\xd4\ufffd\xd2\xda\xdb\xd9\u0131\u02c6\u02dc\xaf\u02d8\u02d9\u02da\xb8\u02dd\u02db\u02c7"},macromania:{type:"_sbcs",chars:"\xc4\xc5\xc7\xc9\xd1\xd6\xdc\xe1\xe0\xe2\xe4\xe3\xe5\xe7\xe9\xe8\xea\xeb\xed\xec\xee\xef\xf1\xf3\xf2\xf4\xf6\xf5\xfa\xf9\xfb\xfc\u2020\xb0\xa2\xa3\xa7\u2022\xb6\xdf\xae\xa9\u2122\xb4\xa8\u2260\u0102\u015e\u221e\xb1\u2264\u2265\xa5\xb5\u2202\u2211\u220f\u03c0\u222b\xaa\xba\u2126\u0103\u015f\xbf\xa1\xac\u221a\u0192\u2248\u2206\xab\xbb\u2026\xa0\xc0\xc3\xd5\u0152\u0153\u2013\u2014\u201c\u201d\u2018\u2019\xf7\u25ca\xff\u0178\u2044\xa4\u2039\u203a\u0162\u0163\u2021\xb7\u201a\u201e\u2030\xc2\xca\xc1\xcb\xc8\xcd\xce\xcf\xcc\xd3\xd4\ufffd\xd2\xda\xdb\xd9\u0131\u02c6\u02dc\xaf\u02d8\u02d9\u02da\xb8\u02dd\u02db\u02c7"},macthai:{type:"_sbcs",chars:"\xab\xbb\u2026\uf88c\uf88f\uf892\uf895\uf898\uf88b\uf88e\uf891\uf894\uf897\u201c\u201d\uf899\ufffd\u2022\uf884\uf889\uf885\uf886\uf887\uf888\uf88a\uf88d\uf890\uf893\uf896\u2018\u2019\ufffd\xa0\u0e01\u0e02\u0e03\u0e04\u0e05\u0e06\u0e07\u0e08\u0e09\u0e0a\u0e0b\u0e0c\u0e0d\u0e0e\u0e0f\u0e10\u0e11\u0e12\u0e13\u0e14\u0e15\u0e16\u0e17\u0e18\u0e19\u0e1a\u0e1b\u0e1c\u0e1d\u0e1e\u0e1f\u0e20\u0e21\u0e22\u0e23\u0e24\u0e25\u0e26\u0e27\u0e28\u0e29\u0e2a\u0e2b\u0e2c\u0e2d\u0e2e\u0e2f\u0e30\u0e31\u0e32\u0e33\u0e34\u0e35\u0e36\u0e37\u0e38\u0e39\u0e3a\ufeff\u200b\u2013\u2014\u0e3f\u0e40\u0e41\u0e42\u0e43\u0e44\u0e45\u0e46\u0e47\u0e48\u0e49\u0e4a\u0e4b\u0e4c\u0e4d\u2122\u0e4f\u0e50\u0e51\u0e52\u0e53\u0e54\u0e55\u0e56\u0e57\u0e58\u0e59\xae\xa9\ufffd\ufffd\ufffd\ufffd"},macturkish:{type:"_sbcs",chars:"\xc4\xc5\xc7\xc9\xd1\xd6\xdc\xe1\xe0\xe2\xe4\xe3\xe5\xe7\xe9\xe8\xea\xeb\xed\xec\xee\xef\xf1\xf3\xf2\xf4\xf6\xf5\xfa\xf9\xfb\xfc\u2020\xb0\xa2\xa3\xa7\u2022\xb6\xdf\xae\xa9\u2122\xb4\xa8\u2260\xc6\xd8\u221e\xb1\u2264\u2265\xa5\xb5\u2202\u2211\u220f\u03c0\u222b\xaa\xba\u2126\xe6\xf8\xbf\xa1\xac\u221a\u0192\u2248\u2206\xab\xbb\u2026\xa0\xc0\xc3\xd5\u0152\u0153\u2013\u2014\u201c\u201d\u2018\u2019\xf7\u25ca\xff\u0178\u011e\u011f\u0130\u0131\u015e\u015f\u2021\xb7\u201a\u201e\u2030\xc2\xca\xc1\xcb\xc8\xcd\xce\xcf\xcc\xd3\xd4\ufffd\xd2\xda\xdb\xd9\ufffd\u02c6\u02dc\xaf\u02d8\u02d9\u02da\xb8\u02dd\u02db\u02c7"},macukraine:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041a\u041b\u041c\u041d\u041e\u041f\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042a\u042b\u042c\u042d\u042e\u042f\u2020\xb0\u0490\xa3\xa7\u2022\xb6\u0406\xae\xa9\u2122\u0402\u0452\u2260\u0403\u0453\u221e\xb1\u2264\u2265\u0456\xb5\u0491\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040a\u045a\u0458\u0405\xac\u221a\u0192\u2248\u2206\xab\xbb\u2026\xa0\u040b\u045b\u040c\u045c\u0455\u2013\u2014\u201c\u201d\u2018\u2019\xf7\u201e\u040e\u045e\u040f\u045f\u2116\u0401\u0451\u044f\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043a\u043b\u043c\u043d\u043e\u043f\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044a\u044b\u044c\u044d\u044e\xa4"},koi8r:{type:"_sbcs",chars:"\u2500\u2502\u250c\u2510\u2514\u2518\u251c\u2524\u252c\u2534\u253c\u2580\u2584\u2588\u258c\u2590\u2591\u2592\u2593\u2320\u25a0\u2219\u221a\u2248\u2264\u2265\xa0\u2321\xb0\xb2\xb7\xf7\u2550\u2551\u2552\u0451\u2553\u2554\u2555\u2556\u2557\u2558\u2559\u255a\u255b\u255c\u255d\u255e\u255f\u2560\u2561\u0401\u2562\u2563\u2564\u2565\u2566\u2567\u2568\u2569\u256a\u256b\u256c\xa9\u044e\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043a\u043b\u043c\u043d\u043e\u043f\u044f\u0440\u0441\u0442\u0443\u0436\u0432\u044c\u044b\u0437\u0448\u044d\u0449\u0447\u044a\u042e\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041a\u041b\u041c\u041d\u041e\u041f\u042f\u0420\u0421\u0422\u0423\u0416\u0412\u042c\u042b\u0417\u0428\u042d\u0429\u0427\u042a"},koi8u:{type:"_sbcs",chars:"\u2500\u2502\u250c\u2510\u2514\u2518\u251c\u2524\u252c\u2534\u253c\u2580\u2584\u2588\u258c\u2590\u2591\u2592\u2593\u2320\u25a0\u2219\u221a\u2248\u2264\u2265\xa0\u2321\xb0\xb2\xb7\xf7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255a\u255b\u0491\u255d\u255e\u255f\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256a\u0490\u256c\xa9\u044e\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043a\u043b\u043c\u043d\u043e\u043f\u044f\u0440\u0441\u0442\u0443\u0436\u0432\u044c\u044b\u0437\u0448\u044d\u0449\u0447\u044a\u042e\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041a\u041b\u041c\u041d\u041e\u041f\u042f\u0420\u0421\u0422\u0423\u0416\u0412\u042c\u042b\u0417\u0428\u042d\u0429\u0427\u042a"},koi8ru:{type:"_sbcs",chars:"\u2500\u2502\u250c\u2510\u2514\u2518\u251c\u2524\u252c\u2534\u253c\u2580\u2584\u2588\u258c\u2590\u2591\u2592\u2593\u2320\u25a0\u2219\u221a\u2248\u2264\u2265\xa0\u2321\xb0\xb2\xb7\xf7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255a\u255b\u0491\u045e\u255e\u255f\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256a\u0490\u040e\xa9\u044e\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043a\u043b\u043c\u043d\u043e\u043f\u044f\u0440\u0441\u0442\u0443\u0436\u0432\u044c\u044b\u0437\u0448\u044d\u0449\u0447\u044a\u042e\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041a\u041b\u041c\u041d\u041e\u041f\u042f\u0420\u0421\u0422\u0423\u0416\u0412\u042c\u042b\u0417\u0428\u042d\u0429\u0427\u042a"},koi8t:{type:"_sbcs",chars:"\u049b\u0493\u201a\u0492\u201e\u2026\u2020\u2021\ufffd\u2030\u04b3\u2039\u04b2\u04b7\u04b6\ufffd\u049a\u2018\u2019\u201c\u201d\u2022\u2013\u2014\ufffd\u2122\ufffd\u203a\ufffd\ufffd\ufffd\ufffd\ufffd\u04ef\u04ee\u0451\xa4\u04e3\xa6\xa7\ufffd\ufffd\ufffd\xab\xac\xad\xae\ufffd\xb0\xb1\xb2\u0401\ufffd\u04e2\xb6\xb7\ufffd\u2116\ufffd\xbb\ufffd\ufffd\ufffd\xa9\u044e\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043a\u043b\u043c\u043d\u043e\u043f\u044f\u0440\u0441\u0442\u0443\u0436\u0432\u044c\u044b\u0437\u0448\u044d\u0449\u0447\u044a\u042e\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041a\u041b\u041c\u041d\u041e\u041f\u042f\u0420\u0421\u0422\u0423\u0416\u0412\u042c\u042b\u0417\u0428\u042d\u0429\u0427\u042a"},armscii8:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\ufffd\u0587\u0589)(\xbb\xab\u2014.\u055d,-\u058a\u2026\u055c\u055b\u055e\u0531\u0561\u0532\u0562\u0533\u0563\u0534\u0564\u0535\u0565\u0536\u0566\u0537\u0567\u0538\u0568\u0539\u0569\u053a\u056a\u053b\u056b\u053c\u056c\u053d\u056d\u053e\u056e\u053f\u056f\u0540\u0570\u0541\u0571\u0542\u0572\u0543\u0573\u0544\u0574\u0545\u0575\u0546\u0576\u0547\u0577\u0548\u0578\u0549\u0579\u054a\u057a\u054b\u057b\u054c\u057c\u054d\u057d\u054e\u057e\u054f\u057f\u0550\u0580\u0551\u0581\u0552\u0582\u0553\u0583\u0554\u0584\u0555\u0585\u0556\u0586\u055a\ufffd"},rk1048:{type:"_sbcs",chars:"\u0402\u0403\u201a\u0453\u201e\u2026\u2020\u2021\u20ac\u2030\u0409\u2039\u040a\u049a\u04ba\u040f\u0452\u2018\u2019\u201c\u201d\u2022\u2013\u2014\ufffd\u2122\u0459\u203a\u045a\u049b\u04bb\u045f\xa0\u04b0\u04b1\u04d8\xa4\u04e8\xa6\xa7\u0401\xa9\u0492\xab\xac\xad\xae\u04ae\xb0\xb1\u0406\u0456\u04e9\xb5\xb6\xb7\u0451\u2116\u0493\xbb\u04d9\u04a2\u04a3\u04af\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041a\u041b\u041c\u041d\u041e\u041f\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042a\u042b\u042c\u042d\u042e\u042f\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043a\u043b\u043c\u043d\u043e\u043f\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044a\u044b\u044c\u044d\u044e\u044f"},tcvn:{type:"_sbcs",chars:"\0\xda\u1ee4\x03\u1eea\u1eec\u1eee\x07\b\t\n\v\f\r\x0e\x0f\x10\u1ee8\u1ef0\u1ef2\u1ef6\u1ef8\xdd\u1ef4\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\xc0\u1ea2\xc3\xc1\u1ea0\u1eb6\u1eac\xc8\u1eba\u1ebc\xc9\u1eb8\u1ec6\xcc\u1ec8\u0128\xcd\u1eca\xd2\u1ece\xd5\xd3\u1ecc\u1ed8\u1edc\u1ede\u1ee0\u1eda\u1ee2\xd9\u1ee6\u0168\xa0\u0102\xc2\xca\xd4\u01a0\u01af\u0110\u0103\xe2\xea\xf4\u01a1\u01b0\u0111\u1eb0\u0300\u0309\u0303\u0301\u0323\xe0\u1ea3\xe3\xe1\u1ea1\u1eb2\u1eb1\u1eb3\u1eb5\u1eaf\u1eb4\u1eae\u1ea6\u1ea8\u1eaa\u1ea4\u1ec0\u1eb7\u1ea7\u1ea9\u1eab\u1ea5\u1ead\xe8\u1ec2\u1ebb\u1ebd\xe9\u1eb9\u1ec1\u1ec3\u1ec5\u1ebf\u1ec7\xec\u1ec9\u1ec4\u1ebe\u1ed2\u0129\xed\u1ecb\xf2\u1ed4\u1ecf\xf5\xf3\u1ecd\u1ed3\u1ed5\u1ed7\u1ed1\u1ed9\u1edd\u1edf\u1ee1\u1edb\u1ee3\xf9\u1ed6\u1ee7\u0169\xfa\u1ee5\u1eeb\u1eed\u1eef\u1ee9\u1ef1\u1ef3\u1ef7\u1ef9\xfd\u1ef5\u1ed0"},georgianacademy:{type:"_sbcs",chars:"\x80\x81\u201a\u0192\u201e\u2026\u2020\u2021\u02c6\u2030\u0160\u2039\u0152\x8d\x8e\x8f\x90\u2018\u2019\u201c\u201d\u2022\u2013\u2014\u02dc\u2122\u0161\u203a\u0153\x9d\x9e\u0178\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\u10d0\u10d1\u10d2\u10d3\u10d4\u10d5\u10d6\u10d7\u10d8\u10d9\u10da\u10db\u10dc\u10dd\u10de\u10df\u10e0\u10e1\u10e2\u10e3\u10e4\u10e5\u10e6\u10e7\u10e8\u10e9\u10ea\u10eb\u10ec\u10ed\u10ee\u10ef\u10f0\u10f1\u10f2\u10f3\u10f4\u10f5\u10f6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"},georgianps:{type:"_sbcs",chars:"\x80\x81\u201a\u0192\u201e\u2026\u2020\u2021\u02c6\u2030\u0160\u2039\u0152\x8d\x8e\x8f\x90\u2018\u2019\u201c\u201d\u2022\u2013\u2014\u02dc\u2122\u0161\u203a\u0153\x9d\x9e\u0178\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\u10d0\u10d1\u10d2\u10d3\u10d4\u10d5\u10d6\u10f1\u10d7\u10d8\u10d9\u10da\u10db\u10dc\u10f2\u10dd\u10de\u10df\u10e0\u10e1\u10e2\u10f3\u10e3\u10e4\u10e5\u10e6\u10e7\u10e8\u10e9\u10ea\u10eb\u10ec\u10ed\u10ee\u10f4\u10ef\u10f0\u10f5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"},pt154:{type:"_sbcs",chars:"\u0496\u0492\u04ee\u0493\u201e\u2026\u04b6\u04ae\u04b2\u04af\u04a0\u04e2\u04a2\u049a\u04ba\u04b8\u0497\u2018\u2019\u201c\u201d\u2022\u2013\u2014\u04b3\u04b7\u04a1\u04e3\u04a3\u049b\u04bb\u04b9\xa0\u040e\u045e\u0408\u04e8\u0498\u04b0\xa7\u0401\xa9\u04d8\xab\xac\u04ef\xae\u049c\xb0\u04b1\u0406\u0456\u0499\u04e9\xb6\xb7\u0451\u2116\u04d9\xbb\u0458\u04aa\u04ab\u049d\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041a\u041b\u041c\u041d\u041e\u041f\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042a\u042b\u042c\u042d\u042e\u042f\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043a\u043b\u043c\u043d\u043e\u043f\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044a\u044b\u044c\u044d\u044e\u044f"},viscii:{type:"_sbcs",chars:"\0\x01\u1eb2\x03\x04\u1eb4\u1eaa\x07\b\t\n\v\f\r\x0e\x0f\x10\x11\x12\x13\u1ef6\x15\x16\x17\x18\u1ef8\x1a\x1b\x1c\x1d\u1ef4\x1f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\u1ea0\u1eae\u1eb0\u1eb6\u1ea4\u1ea6\u1ea8\u1eac\u1ebc\u1eb8\u1ebe\u1ec0\u1ec2\u1ec4\u1ec6\u1ed0\u1ed2\u1ed4\u1ed6\u1ed8\u1ee2\u1eda\u1edc\u1ede\u1eca\u1ece\u1ecc\u1ec8\u1ee6\u0168\u1ee4\u1ef2\xd5\u1eaf\u1eb1\u1eb7\u1ea5\u1ea7\u1ea9\u1ead\u1ebd\u1eb9\u1ebf\u1ec1\u1ec3\u1ec5\u1ec7\u1ed1\u1ed3\u1ed5\u1ed7\u1ee0\u01a0\u1ed9\u1edd\u1edf\u1ecb\u1ef0\u1ee8\u1eea\u1eec\u01a1\u1edb\u01af\xc0\xc1\xc2\xc3\u1ea2\u0102\u1eb3\u1eb5\xc8\xc9\xca\u1eba\xcc\xcd\u0128\u1ef3\u0110\u1ee9\xd2\xd3\xd4\u1ea1\u1ef7\u1eeb\u1eed\xd9\xda\u1ef9\u1ef5\xdd\u1ee1\u01b0\xe0\xe1\xe2\xe3\u1ea3\u0103\u1eef\u1eab\xe8\xe9\xea\u1ebb\xec\xed\u0129\u1ec9\u0111\u1ef1\xf2\xf3\xf4\xf5\u1ecf\u1ecd\u1ee5\xf9\xfa\u0169\u1ee7\xfd\u1ee3\u1eee"},iso646cn:{type:"_sbcs",chars:"\0\x01\x02\x03\x04\x05\x06\x07\b\t\n\v\f\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#\xa5%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}\u203e\x7f\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd"},iso646jp:{type:"_sbcs",chars:"\0\x01\x02\x03\x04\x05\x06\x07\b\t\n\v\f\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\xa5]^_`abcdefghijklmnopqrstuvwxyz{|}\u203e\x7f\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd"},hproman8:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xc0\xc2\xc8\xca\xcb\xce\xcf\xb4\u02cb\u02c6\xa8\u02dc\xd9\xdb\u20a4\xaf\xdd\xfd\xb0\xc7\xe7\xd1\xf1\xa1\xbf\xa4\xa3\xa5\xa7\u0192\xa2\xe2\xea\xf4\xfb\xe1\xe9\xf3\xfa\xe0\xe8\xf2\xf9\xe4\xeb\xf6\xfc\xc5\xee\xd8\xc6\xe5\xed\xf8\xe6\xc4\xec\xd6\xdc\xc9\xef\xdf\xd4\xc1\xc3\xe3\xd0\xf0\xcd\xcc\xd3\xd2\xd5\xf5\u0160\u0161\xda\u0178\xff\xde\xfe\xb7\xb5\xb6\xbe\u2014\xbc\xbd\xaa\xba\xab\u25a0\xbb\xb1\ufffd"},macintosh:{type:"_sbcs",chars:"\xc4\xc5\xc7\xc9\xd1\xd6\xdc\xe1\xe0\xe2\xe4\xe3\xe5\xe7\xe9\xe8\xea\xeb\xed\xec\xee\xef\xf1\xf3\xf2\xf4\xf6\xf5\xfa\xf9\xfb\xfc\u2020\xb0\xa2\xa3\xa7\u2022\xb6\xdf\xae\xa9\u2122\xb4\xa8\u2260\xc6\xd8\u221e\xb1\u2264\u2265\xa5\xb5\u2202\u2211\u220f\u03c0\u222b\xaa\xba\u2126\xe6\xf8\xbf\xa1\xac\u221a\u0192\u2248\u2206\xab\xbb\u2026\xa0\xc0\xc3\xd5\u0152\u0153\u2013\u2014\u201c\u201d\u2018\u2019\xf7\u25ca\xff\u0178\u2044\xa4\u2039\u203a\ufb01\ufb02\u2021\xb7\u201a\u201e\u2030\xc2\xca\xc1\xcb\xc8\xcd\xce\xcf\xcc\xd3\xd4\ufffd\xd2\xda\xdb\xd9\u0131\u02c6\u02dc\xaf\u02d8\u02d9\u02da\xb8\u02dd\u02db\u02c7"},ascii:{type:"_sbcs",chars:"\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd"},tis620:{type:"_sbcs",chars:"\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u0e01\u0e02\u0e03\u0e04\u0e05\u0e06\u0e07\u0e08\u0e09\u0e0a\u0e0b\u0e0c\u0e0d\u0e0e\u0e0f\u0e10\u0e11\u0e12\u0e13\u0e14\u0e15\u0e16\u0e17\u0e18\u0e19\u0e1a\u0e1b\u0e1c\u0e1d\u0e1e\u0e1f\u0e20\u0e21\u0e22\u0e23\u0e24\u0e25\u0e26\u0e27\u0e28\u0e29\u0e2a\u0e2b\u0e2c\u0e2d\u0e2e\u0e2f\u0e30\u0e31\u0e32\u0e33\u0e34\u0e35\u0e36\u0e37\u0e38\u0e39\u0e3a\ufffd\ufffd\ufffd\ufffd\u0e3f\u0e40\u0e41\u0e42\u0e43\u0e44\u0e45\u0e46\u0e47\u0e48\u0e49\u0e4a\u0e4b\u0e4c\u0e4d\u0e4e\u0e4f\u0e50\u0e51\u0e52\u0e53\u0e54\u0e55\u0e56\u0e57\u0e58\u0e59\u0e5a\u0e5b\ufffd\ufffd\ufffd\ufffd"}}},function(g,I,e){"use strict";var t=e(286).Buffer;I._dbcs=F;for(var C=new Array(256),Q=0;Q<256;Q++)C[Q]=-1;function F(g,I){if(this.encodingName=g.encodingName,!g)throw new Error("DBCS codec is called without the data.");if(!g.table)throw new Error("Encoding '"+this.encodingName+"' has no data.");var e=g.table();this.decodeTables=[],this.decodeTables[0]=C.slice(0),this.decodeTableSeq=[];for(var t=0;t<e.length;t++)this._addDecodeChunk(e[t]);this.defaultCharUnicode=I.defaultCharUnicode,this.encodeTable=[],this.encodeTableSeq=[];var Q={};if(g.encodeSkipVals)for(t=0;t<g.encodeSkipVals.length;t++){var F=g.encodeSkipVals[t];if("number"===typeof F)Q[F]=!0;else for(var B=F.from;B<=F.to;B++)Q[B]=!0}if(this._fillEncodeTable(0,0,Q),g.encodeAdd)for(var n in g.encodeAdd)Object.prototype.hasOwnProperty.call(g.encodeAdd,n)&&this._setEncodeChar(n.charCodeAt(0),g.encodeAdd[n]);if(this.defCharSB=this.encodeTable[0][I.defaultCharSingleByte.charCodeAt(0)],-1===this.defCharSB&&(this.defCharSB=this.encodeTable[0]["?"]),-1===this.defCharSB&&(this.defCharSB="?".charCodeAt(0)),"function"===typeof g.gb18030){this.gb18030=g.gb18030();var U=this.decodeTables.length,s=this.decodeTables[U]=C.slice(0),i=this.decodeTables.length,c=this.decodeTables[i]=C.slice(0);for(t=129;t<=254;t++){var A=-1e3-this.decodeTables[0][t],l=this.decodeTables[A];for(B=48;B<=57;B++)l[B]=-1e3-U}for(t=129;t<=254;t++)s[t]=-1e3-i;for(t=48;t<=57;t++)c[t]=-2}}function B(g,I){this.leadSurrogate=-1,this.seqObj=void 0,this.encodeTable=I.encodeTable,this.encodeTableSeq=I.encodeTableSeq,this.defaultCharSingleByte=I.defCharSB,this.gb18030=I.gb18030}function n(g,I){this.nodeIdx=0,this.prevBuf=t.alloc(0),this.decodeTables=I.decodeTables,this.decodeTableSeq=I.decodeTableSeq,this.defaultCharUnicode=I.defaultCharUnicode,this.gb18030=I.gb18030}function U(g,I){if(g[0]>I)return-1;for(var e=0,t=g.length;e<t-1;){var C=e+Math.floor((t-e+1)/2);g[C]<=I?e=C:t=C}return e}F.prototype.encoder=B,F.prototype.decoder=n,F.prototype._getDecodeTrieNode=function(g){for(var I=[];g>0;g>>=8)I.push(255&g);0==I.length&&I.push(0);for(var e=this.decodeTables[0],t=I.length-1;t>0;t--){var Q=e[I[t]];if(-1==Q)e[I[t]]=-1e3-this.decodeTables.length,this.decodeTables.push(e=C.slice(0));else{if(!(Q<=-1e3))throw new Error("Overwrite byte in "+this.encodingName+", addr: "+g.toString(16));e=this.decodeTables[-1e3-Q]}}return e},F.prototype._addDecodeChunk=function(g){var I=parseInt(g[0],16),e=this._getDecodeTrieNode(I);I&=255;for(var t=1;t<g.length;t++){var C=g[t];if("string"===typeof C)for(var Q=0;Q<C.length;){var F=C.charCodeAt(Q++);if(55296<=F&&F<56320){var B=C.charCodeAt(Q++);if(!(56320<=B&&B<57344))throw new Error("Incorrect surrogate pair in "+this.encodingName+" at chunk "+g[0]);e[I++]=65536+1024*(F-55296)+(B-56320)}else if(4080<F&&F<=4095){for(var n=4095-F+2,U=[],s=0;s<n;s++)U.push(C.charCodeAt(Q++));e[I++]=-10-this.decodeTableSeq.length,this.decodeTableSeq.push(U)}else e[I++]=F}else{if("number"!==typeof C)throw new Error("Incorrect type '"+typeof C+"' given in "+this.encodingName+" at chunk "+g[0]);var i=e[I-1]+1;for(Q=0;Q<C;Q++)e[I++]=i++}}if(I>255)throw new Error("Incorrect chunk in "+this.encodingName+" at addr "+g[0]+": too long"+I)},F.prototype._getEncodeBucket=function(g){var I=g>>8;return void 0===this.encodeTable[I]&&(this.encodeTable[I]=C.slice(0)),this.encodeTable[I]},F.prototype._setEncodeChar=function(g,I){var e=this._getEncodeBucket(g),t=255&g;e[t]<=-10?this.encodeTableSeq[-10-e[t]][-1]=I:-1==e[t]&&(e[t]=I)},F.prototype._setEncodeSequence=function(g,I){var e,t=g[0],C=this._getEncodeBucket(t),Q=255&t;C[Q]<=-10?e=this.encodeTableSeq[-10-C[Q]]:(e={},-1!==C[Q]&&(e[-1]=C[Q]),C[Q]=-10-this.encodeTableSeq.length,this.encodeTableSeq.push(e));for(var F=1;F<g.length-1;F++){var B=e[t];"object"===typeof B?e=B:(e=e[t]={},void 0!==B&&(e[-1]=B))}e[t=g[g.length-1]]=I},F.prototype._fillEncodeTable=function(g,I,e){for(var t=this.decodeTables[g],C=0;C<256;C++){var Q=t[C],F=I+C;e[F]||(Q>=0?this._setEncodeChar(Q,F):Q<=-1e3?this._fillEncodeTable(-1e3-Q,F<<8,e):Q<=-10&&this._setEncodeSequence(this.decodeTableSeq[-10-Q],F))}},B.prototype.write=function(g){for(var I=t.alloc(g.length*(this.gb18030?4:3)),e=this.leadSurrogate,C=this.seqObj,Q=-1,F=0,B=0;;){if(-1===Q){if(F==g.length)break;var n=g.charCodeAt(F++)}else{n=Q;Q=-1}if(55296<=n&&n<57344)if(n<56320){if(-1===e){e=n;continue}e=n,n=-1}else-1!==e?(n=65536+1024*(e-55296)+(n-56320),e=-1):n=-1;else-1!==e&&(Q=n,n=-1,e=-1);var s=-1;if(void 0!==C&&-1!=n){var i=C[n];if("object"===typeof i){C=i;continue}"number"==typeof i?s=i:void 0==i&&void 0!==(i=C[-1])&&(s=i,Q=n),C=void 0}else if(n>=0){var c=this.encodeTable[n>>8];if(void 0!==c&&(s=c[255&n]),s<=-10){C=this.encodeTableSeq[-10-s];continue}if(-1==s&&this.gb18030){var A=U(this.gb18030.uChars,n);if(-1!=A){s=this.gb18030.gbChars[A]+(n-this.gb18030.uChars[A]);I[B++]=129+Math.floor(s/12600),s%=12600,I[B++]=48+Math.floor(s/1260),s%=1260,I[B++]=129+Math.floor(s/10),s%=10,I[B++]=48+s;continue}}}-1===s&&(s=this.defaultCharSingleByte),s<256?I[B++]=s:s<65536?(I[B++]=s>>8,I[B++]=255&s):(I[B++]=s>>16,I[B++]=s>>8&255,I[B++]=255&s)}return this.seqObj=C,this.leadSurrogate=e,I.slice(0,B)},B.prototype.end=function(){if(-1!==this.leadSurrogate||void 0!==this.seqObj){var g=t.alloc(10),I=0;if(this.seqObj){var e=this.seqObj[-1];void 0!==e&&(e<256?g[I++]=e:(g[I++]=e>>8,g[I++]=255&e)),this.seqObj=void 0}return-1!==this.leadSurrogate&&(g[I++]=this.defaultCharSingleByte,this.leadSurrogate=-1),g.slice(0,I)}},B.prototype.findIdx=U,n.prototype.write=function(g){var I=t.alloc(2*g.length),e=this.nodeIdx,C=this.prevBuf,Q=this.prevBuf.length,F=-this.prevBuf.length;Q>0&&(C=t.concat([C,g.slice(0,10)]));for(var B=0,n=0;B<g.length;B++){var s,i=B>=0?g[B]:C[B+Q];if((s=this.decodeTables[e][i])>=0);else if(-1===s)B=F,s=this.defaultCharUnicode.charCodeAt(0);else if(-2===s){var c=F>=0?g.slice(F,B+1):C.slice(F+Q,B+1+Q),A=12600*(c[0]-129)+1260*(c[1]-48)+10*(c[2]-129)+(c[3]-48),l=U(this.gb18030.gbChars,A);s=this.gb18030.uChars[l]+A-this.gb18030.gbChars[l]}else{if(s<=-1e3){e=-1e3-s;continue}if(!(s<=-10))throw new Error("iconv-lite internal error: invalid decoding table value "+s+" at "+e+"/"+i);for(var a=this.decodeTableSeq[-10-s],r=0;r<a.length-1;r++)s=a[r],I[n++]=255&s,I[n++]=s>>8;s=a[a.length-1]}if(s>65535){s-=65536;var o=55296+Math.floor(s/1024);I[n++]=255&o,I[n++]=o>>8,s=56320+s%1024}I[n++]=255&s,I[n++]=s>>8,e=0,F=B+1}return this.nodeIdx=e,this.prevBuf=F>=0?g.slice(F):C.slice(F+Q),I.slice(0,n).toString("ucs2")},n.prototype.end=function(){for(var g="";this.prevBuf.length>0;){g+=this.defaultCharUnicode;var I=this.prevBuf.slice(1);this.prevBuf=t.alloc(0),this.nodeIdx=0,I.length>0&&(g+=this.write(I))}return this.nodeIdx=0,g}},function(g,I,e){"use strict";g.exports={shiftjis:{type:"_dbcs",table:function(){return e(1407)},encodeAdd:{"\xa5":92,"\u203e":126},encodeSkipVals:[{from:60736,to:63808}]},csshiftjis:"shiftjis",mskanji:"shiftjis",sjis:"shiftjis",windows31j:"shiftjis",ms31j:"shiftjis",xsjis:"shiftjis",windows932:"shiftjis",ms932:"shiftjis",932:"shiftjis",cp932:"shiftjis",eucjp:{type:"_dbcs",table:function(){return e(1408)},encodeAdd:{"\xa5":92,"\u203e":126}},gb2312:"cp936",gb231280:"cp936",gb23121980:"cp936",csgb2312:"cp936",csiso58gb231280:"cp936",euccn:"cp936",windows936:"cp936",ms936:"cp936",936:"cp936",cp936:{type:"_dbcs",table:function(){return e(534)}},gbk:{type:"_dbcs",table:function(){return e(534).concat(e(733))}},xgbk:"gbk",isoir58:"gbk",gb18030:{type:"_dbcs",table:function(){return e(534).concat(e(733))},gb18030:function(){return e(1409)},encodeSkipVals:[128],encodeAdd:{"\u20ac":41699}},chinese:"gb18030",windows949:"cp949",ms949:"cp949",949:"cp949",cp949:{type:"_dbcs",table:function(){return e(1410)}},cseuckr:"cp949",csksc56011987:"cp949",euckr:"cp949",isoir149:"cp949",korean:"cp949",ksc56011987:"cp949",ksc56011989:"cp949",ksc5601:"cp949",windows950:"cp950",ms950:"cp950",950:"cp950",cp950:{type:"_dbcs",table:function(){return e(734)}},big5:"big5hkscs",big5hkscs:{type:"_dbcs",table:function(){return e(734).concat(e(1411))},encodeSkipVals:[41676]},cnbig5:"big5hkscs",csbig5:"big5hkscs",xxbig5:"big5hkscs"}},function(g){g.exports=JSON.parse('[["0","\\u0000",128],["a1","\uff61",62],["8140","\u3000\u3001\u3002\uff0c\uff0e\u30fb\uff1a\uff1b\uff1f\uff01\u309b\u309c\xb4\uff40\xa8\uff3e\uffe3\uff3f\u30fd\u30fe\u309d\u309e\u3003\u4edd\u3005\u3006\u3007\u30fc\u2015\u2010\uff0f\uff3c\uff5e\u2225\uff5c\u2026\u2025\u2018\u2019\u201c\u201d\uff08\uff09\u3014\u3015\uff3b\uff3d\uff5b\uff5d\u3008",9,"\uff0b\uff0d\xb1\xd7"],["8180","\xf7\uff1d\u2260\uff1c\uff1e\u2266\u2267\u221e\u2234\u2642\u2640\xb0\u2032\u2033\u2103\uffe5\uff04\uffe0\uffe1\uff05\uff03\uff06\uff0a\uff20\xa7\u2606\u2605\u25cb\u25cf\u25ce\u25c7\u25c6\u25a1\u25a0\u25b3\u25b2\u25bd\u25bc\u203b\u3012\u2192\u2190\u2191\u2193\u3013"],["81b8","\u2208\u220b\u2286\u2287\u2282\u2283\u222a\u2229"],["81c8","\u2227\u2228\uffe2\u21d2\u21d4\u2200\u2203"],["81da","\u2220\u22a5\u2312\u2202\u2207\u2261\u2252\u226a\u226b\u221a\u223d\u221d\u2235\u222b\u222c"],["81f0","\u212b\u2030\u266f\u266d\u266a\u2020\u2021\xb6"],["81fc","\u25ef"],["824f","\uff10",9],["8260","\uff21",25],["8281","\uff41",25],["829f","\u3041",82],["8340","\u30a1",62],["8380","\u30e0",22],["839f","\u0391",16,"\u03a3",6],["83bf","\u03b1",16,"\u03c3",6],["8440","\u0410",5,"\u0401\u0416",25],["8470","\u0430",5,"\u0451\u0436",7],["8480","\u043e",17],["849f","\u2500\u2502\u250c\u2510\u2518\u2514\u251c\u252c\u2524\u2534\u253c\u2501\u2503\u250f\u2513\u251b\u2517\u2523\u2533\u252b\u253b\u254b\u2520\u252f\u2528\u2537\u253f\u251d\u2530\u2525\u2538\u2542"],["8740","\u2460",19,"\u2160",9],["875f","\u3349\u3314\u3322\u334d\u3318\u3327\u3303\u3336\u3351\u3357\u330d\u3326\u3323\u332b\u334a\u333b\u339c\u339d\u339e\u338e\u338f\u33c4\u33a1"],["877e","\u337b"],["8780","\u301d\u301f\u2116\u33cd\u2121\u32a4",4,"\u3231\u3232\u3239\u337e\u337d\u337c\u2252\u2261\u222b\u222e\u2211\u221a\u22a5\u2220\u221f\u22bf\u2235\u2229\u222a"],["889f","\u4e9c\u5516\u5a03\u963f\u54c0\u611b\u6328\u59f6\u9022\u8475\u831c\u7a50\u60aa\u63e1\u6e25\u65ed\u8466\u82a6\u9bf5\u6893\u5727\u65a1\u6271\u5b9b\u59d0\u867b\u98f4\u7d62\u7dbe\u9b8e\u6216\u7c9f\u88b7\u5b89\u5eb5\u6309\u6697\u6848\u95c7\u978d\u674f\u4ee5\u4f0a\u4f4d\u4f9d\u5049\u56f2\u5937\u59d4\u5a01\u5c09\u60df\u610f\u6170\u6613\u6905\u70ba\u754f\u7570\u79fb\u7dad\u7def\u80c3\u840e\u8863\u8b02\u9055\u907a\u533b\u4e95\u4ea5\u57df\u80b2\u90c1\u78ef\u4e00\u58f1\u6ea2\u9038\u7a32\u8328\u828b\u9c2f\u5141\u5370\u54bd\u54e1\u56e0\u59fb\u5f15\u98f2\u6deb\u80e4\u852d"],["8940","\u9662\u9670\u96a0\u97fb\u540b\u53f3\u5b87\u70cf\u7fbd\u8fc2\u96e8\u536f\u9d5c\u7aba\u4e11\u7893\u81fc\u6e26\u5618\u5504\u6b1d\u851a\u9c3b\u59e5\u53a9\u6d66\u74dc\u958f\u5642\u4e91\u904b\u96f2\u834f\u990c\u53e1\u55b6\u5b30\u5f71\u6620\u66f3\u6804\u6c38\u6cf3\u6d29\u745b\u76c8\u7a4e\u9834\u82f1\u885b\u8a60\u92ed\u6db2\u75ab\u76ca\u99c5\u60a6\u8b01\u8d8a\u95b2\u698e\u53ad\u5186"],["8980","\u5712\u5830\u5944\u5bb4\u5ef6\u6028\u63a9\u63f4\u6cbf\u6f14\u708e\u7114\u7159\u71d5\u733f\u7e01\u8276\u82d1\u8597\u9060\u925b\u9d1b\u5869\u65bc\u6c5a\u7525\u51f9\u592e\u5965\u5f80\u5fdc\u62bc\u65fa\u6a2a\u6b27\u6bb4\u738b\u7fc1\u8956\u9d2c\u9d0e\u9ec4\u5ca1\u6c96\u837b\u5104\u5c4b\u61b6\u81c6\u6876\u7261\u4e59\u4ffa\u5378\u6069\u6e29\u7a4f\u97f3\u4e0b\u5316\u4eee\u4f55\u4f3d\u4fa1\u4f73\u52a0\u53ef\u5609\u590f\u5ac1\u5bb6\u5be1\u79d1\u6687\u679c\u67b6\u6b4c\u6cb3\u706b\u73c2\u798d\u79be\u7a3c\u7b87\u82b1\u82db\u8304\u8377\u83ef\u83d3\u8766\u8ab2\u5629\u8ca8\u8fe6\u904e\u971e\u868a\u4fc4\u5ce8\u6211\u7259\u753b\u81e5\u82bd\u86fe\u8cc0\u96c5\u9913\u99d5\u4ecb\u4f1a\u89e3\u56de\u584a\u58ca\u5efb\u5feb\u602a\u6094\u6062\u61d0\u6212\u62d0\u6539"],["8a40","\u9b41\u6666\u68b0\u6d77\u7070\u754c\u7686\u7d75\u82a5\u87f9\u958b\u968e\u8c9d\u51f1\u52be\u5916\u54b3\u5bb3\u5d16\u6168\u6982\u6daf\u788d\u84cb\u8857\u8a72\u93a7\u9ab8\u6d6c\u99a8\u86d9\u57a3\u67ff\u86ce\u920e\u5283\u5687\u5404\u5ed3\u62e1\u64b9\u683c\u6838\u6bbb\u7372\u78ba\u7a6b\u899a\u89d2\u8d6b\u8f03\u90ed\u95a3\u9694\u9769\u5b66\u5cb3\u697d\u984d\u984e\u639b\u7b20\u6a2b"],["8a80","\u6a7f\u68b6\u9c0d\u6f5f\u5272\u559d\u6070\u62ec\u6d3b\u6e07\u6ed1\u845b\u8910\u8f44\u4e14\u9c39\u53f6\u691b\u6a3a\u9784\u682a\u515c\u7ac3\u84b2\u91dc\u938c\u565b\u9d28\u6822\u8305\u8431\u7ca5\u5208\u82c5\u74e6\u4e7e\u4f83\u51a0\u5bd2\u520a\u52d8\u52e7\u5dfb\u559a\u582a\u59e6\u5b8c\u5b98\u5bdb\u5e72\u5e79\u60a3\u611f\u6163\u61be\u63db\u6562\u67d1\u6853\u68fa\u6b3e\u6b53\u6c57\u6f22\u6f97\u6f45\u74b0\u7518\u76e3\u770b\u7aff\u7ba1\u7c21\u7de9\u7f36\u7ff0\u809d\u8266\u839e\u89b3\u8acc\u8cab\u9084\u9451\u9593\u9591\u95a2\u9665\u97d3\u9928\u8218\u4e38\u542b\u5cb8\u5dcc\u73a9\u764c\u773c\u5ca9\u7feb\u8d0b\u96c1\u9811\u9854\u9858\u4f01\u4f0e\u5371\u559c\u5668\u57fa\u5947\u5b09\u5bc4\u5c90\u5e0c\u5e7e\u5fcc\u63ee\u673a\u65d7\u65e2\u671f\u68cb\u68c4"],["8b40","\u6a5f\u5e30\u6bc5\u6c17\u6c7d\u757f\u7948\u5b63\u7a00\u7d00\u5fbd\u898f\u8a18\u8cb4\u8d77\u8ecc\u8f1d\u98e2\u9a0e\u9b3c\u4e80\u507d\u5100\u5993\u5b9c\u622f\u6280\u64ec\u6b3a\u72a0\u7591\u7947\u7fa9\u87fb\u8abc\u8b70\u63ac\u83ca\u97a0\u5409\u5403\u55ab\u6854\u6a58\u8a70\u7827\u6775\u9ecd\u5374\u5ba2\u811a\u8650\u9006\u4e18\u4e45\u4ec7\u4f11\u53ca\u5438\u5bae\u5f13\u6025\u6551"],["8b80","\u673d\u6c42\u6c72\u6ce3\u7078\u7403\u7a76\u7aae\u7b08\u7d1a\u7cfe\u7d66\u65e7\u725b\u53bb\u5c45\u5de8\u62d2\u62e0\u6319\u6e20\u865a\u8a31\u8ddd\u92f8\u6f01\u79a6\u9b5a\u4ea8\u4eab\u4eac\u4f9b\u4fa0\u50d1\u5147\u7af6\u5171\u51f6\u5354\u5321\u537f\u53eb\u55ac\u5883\u5ce1\u5f37\u5f4a\u602f\u6050\u606d\u631f\u6559\u6a4b\u6cc1\u72c2\u72ed\u77ef\u80f8\u8105\u8208\u854e\u90f7\u93e1\u97ff\u9957\u9a5a\u4ef0\u51dd\u5c2d\u6681\u696d\u5c40\u66f2\u6975\u7389\u6850\u7c81\u50c5\u52e4\u5747\u5dfe\u9326\u65a4\u6b23\u6b3d\u7434\u7981\u79bd\u7b4b\u7dca\u82b9\u83cc\u887f\u895f\u8b39\u8fd1\u91d1\u541f\u9280\u4e5d\u5036\u53e5\u533a\u72d7\u7396\u77e9\u82e6\u8eaf\u99c6\u99c8\u99d2\u5177\u611a\u865e\u55b0\u7a7a\u5076\u5bd3\u9047\u9685\u4e32\u6adb\u91e7\u5c51\u5c48"],["8c40","\u6398\u7a9f\u6c93\u9774\u8f61\u7aaa\u718a\u9688\u7c82\u6817\u7e70\u6851\u936c\u52f2\u541b\u85ab\u8a13\u7fa4\u8ecd\u90e1\u5366\u8888\u7941\u4fc2\u50be\u5211\u5144\u5553\u572d\u73ea\u578b\u5951\u5f62\u5f84\u6075\u6176\u6167\u61a9\u63b2\u643a\u656c\u666f\u6842\u6e13\u7566\u7a3d\u7cfb\u7d4c\u7d99\u7e4b\u7f6b\u830e\u834a\u86cd\u8a08\u8a63\u8b66\u8efd\u981a\u9d8f\u82b8\u8fce\u9be8"],["8c80","\u5287\u621f\u6483\u6fc0\u9699\u6841\u5091\u6b20\u6c7a\u6f54\u7a74\u7d50\u8840\u8a23\u6708\u4ef6\u5039\u5026\u5065\u517c\u5238\u5263\u55a7\u570f\u5805\u5acc\u5efa\u61b2\u61f8\u62f3\u6372\u691c\u6a29\u727d\u72ac\u732e\u7814\u786f\u7d79\u770c\u80a9\u898b\u8b19\u8ce2\u8ed2\u9063\u9375\u967a\u9855\u9a13\u9e78\u5143\u539f\u53b3\u5e7b\u5f26\u6e1b\u6e90\u7384\u73fe\u7d43\u8237\u8a00\u8afa\u9650\u4e4e\u500b\u53e4\u547c\u56fa\u59d1\u5b64\u5df1\u5eab\u5f27\u6238\u6545\u67af\u6e56\u72d0\u7cca\u88b4\u80a1\u80e1\u83f0\u864e\u8a87\u8de8\u9237\u96c7\u9867\u9f13\u4e94\u4e92\u4f0d\u5348\u5449\u543e\u5a2f\u5f8c\u5fa1\u609f\u68a7\u6a8e\u745a\u7881\u8a9e\u8aa4\u8b77\u9190\u4e5e\u9bc9\u4ea4\u4f7c\u4faf\u5019\u5016\u5149\u516c\u529f\u52b9\u52fe\u539a\u53e3\u5411"],["8d40","\u540e\u5589\u5751\u57a2\u597d\u5b54\u5b5d\u5b8f\u5de5\u5de7\u5df7\u5e78\u5e83\u5e9a\u5eb7\u5f18\u6052\u614c\u6297\u62d8\u63a7\u653b\u6602\u6643\u66f4\u676d\u6821\u6897\u69cb\u6c5f\u6d2a\u6d69\u6e2f\u6e9d\u7532\u7687\u786c\u7a3f\u7ce0\u7d05\u7d18\u7d5e\u7db1\u8015\u8003\u80af\u80b1\u8154\u818f\u822a\u8352\u884c\u8861\u8b1b\u8ca2\u8cfc\u90ca\u9175\u9271\u783f\u92fc\u95a4\u964d"],["8d80","\u9805\u9999\u9ad8\u9d3b\u525b\u52ab\u53f7\u5408\u58d5\u62f7\u6fe0\u8c6a\u8f5f\u9eb9\u514b\u523b\u544a\u56fd\u7a40\u9177\u9d60\u9ed2\u7344\u6f09\u8170\u7511\u5ffd\u60da\u9aa8\u72db\u8fbc\u6b64\u9803\u4eca\u56f0\u5764\u58be\u5a5a\u6068\u61c7\u660f\u6606\u6839\u68b1\u6df7\u75d5\u7d3a\u826e\u9b42\u4e9b\u4f50\u53c9\u5506\u5d6f\u5de6\u5dee\u67fb\u6c99\u7473\u7802\u8a50\u9396\u88df\u5750\u5ea7\u632b\u50b5\u50ac\u518d\u6700\u54c9\u585e\u59bb\u5bb0\u5f69\u624d\u63a1\u683d\u6b73\u6e08\u707d\u91c7\u7280\u7815\u7826\u796d\u658e\u7d30\u83dc\u88c1\u8f09\u969b\u5264\u5728\u6750\u7f6a\u8ca1\u51b4\u5742\u962a\u583a\u698a\u80b4\u54b2\u5d0e\u57fc\u7895\u9dfa\u4f5c\u524a\u548b\u643e\u6628\u6714\u67f5\u7a84\u7b56\u7d22\u932f\u685c\u9bad\u7b39\u5319\u518a\u5237"],["8e40","\u5bdf\u62f6\u64ae\u64e6\u672d\u6bba\u85a9\u96d1\u7690\u9bd6\u634c\u9306\u9bab\u76bf\u6652\u4e09\u5098\u53c2\u5c71\u60e8\u6492\u6563\u685f\u71e6\u73ca\u7523\u7b97\u7e82\u8695\u8b83\u8cdb\u9178\u9910\u65ac\u66ab\u6b8b\u4ed5\u4ed4\u4f3a\u4f7f\u523a\u53f8\u53f2\u55e3\u56db\u58eb\u59cb\u59c9\u59ff\u5b50\u5c4d\u5e02\u5e2b\u5fd7\u601d\u6307\u652f\u5b5c\u65af\u65bd\u65e8\u679d\u6b62"],["8e80","\u6b7b\u6c0f\u7345\u7949\u79c1\u7cf8\u7d19\u7d2b\u80a2\u8102\u81f3\u8996\u8a5e\u8a69\u8a66\u8a8c\u8aee\u8cc7\u8cdc\u96cc\u98fc\u6b6f\u4e8b\u4f3c\u4f8d\u5150\u5b57\u5bfa\u6148\u6301\u6642\u6b21\u6ecb\u6cbb\u723e\u74bd\u75d4\u78c1\u793a\u800c\u8033\u81ea\u8494\u8f9e\u6c50\u9e7f\u5f0f\u8b58\u9d2b\u7afa\u8ef8\u5b8d\u96eb\u4e03\u53f1\u57f7\u5931\u5ac9\u5ba4\u6089\u6e7f\u6f06\u75be\u8cea\u5b9f\u8500\u7be0\u5072\u67f4\u829d\u5c61\u854a\u7e1e\u820e\u5199\u5c04\u6368\u8d66\u659c\u716e\u793e\u7d17\u8005\u8b1d\u8eca\u906e\u86c7\u90aa\u501f\u52fa\u5c3a\u6753\u707c\u7235\u914c\u91c8\u932b\u82e5\u5bc2\u5f31\u60f9\u4e3b\u53d6\u5b88\u624b\u6731\u6b8a\u72e9\u73e0\u7a2e\u816b\u8da3\u9152\u9996\u5112\u53d7\u546a\u5bff\u6388\u6a39\u7dac\u9700\u56da\u53ce\u5468"],["8f40","\u5b97\u5c31\u5dde\u4fee\u6101\u62fe\u6d32\u79c0\u79cb\u7d42\u7e4d\u7fd2\u81ed\u821f\u8490\u8846\u8972\u8b90\u8e74\u8f2f\u9031\u914b\u916c\u96c6\u919c\u4ec0\u4f4f\u5145\u5341\u5f93\u620e\u67d4\u6c41\u6e0b\u7363\u7e26\u91cd\u9283\u53d4\u5919\u5bbf\u6dd1\u795d\u7e2e\u7c9b\u587e\u719f\u51fa\u8853\u8ff0\u4fca\u5cfb\u6625\u77ac\u7ae3\u821c\u99ff\u51c6\u5faa\u65ec\u696f\u6b89\u6df3"],["8f80","\u6e96\u6f64\u76fe\u7d14\u5de1\u9075\u9187\u9806\u51e6\u521d\u6240\u6691\u66d9\u6e1a\u5eb6\u7dd2\u7f72\u66f8\u85af\u85f7\u8af8\u52a9\u53d9\u5973\u5e8f\u5f90\u6055\u92e4\u9664\u50b7\u511f\u52dd\u5320\u5347\u53ec\u54e8\u5546\u5531\u5617\u5968\u59be\u5a3c\u5bb5\u5c06\u5c0f\u5c11\u5c1a\u5e84\u5e8a\u5ee0\u5f70\u627f\u6284\u62db\u638c\u6377\u6607\u660c\u662d\u6676\u677e\u68a2\u6a1f\u6a35\u6cbc\u6d88\u6e09\u6e58\u713c\u7126\u7167\u75c7\u7701\u785d\u7901\u7965\u79f0\u7ae0\u7b11\u7ca7\u7d39\u8096\u83d6\u848b\u8549\u885d\u88f3\u8a1f\u8a3c\u8a54\u8a73\u8c61\u8cde\u91a4\u9266\u937e\u9418\u969c\u9798\u4e0a\u4e08\u4e1e\u4e57\u5197\u5270\u57ce\u5834\u58cc\u5b22\u5e38\u60c5\u64fe\u6761\u6756\u6d44\u72b6\u7573\u7a63\u84b8\u8b72\u91b8\u9320\u5631\u57f4\u98fe"],["9040","\u62ed\u690d\u6b96\u71ed\u7e54\u8077\u8272\u89e6\u98df\u8755\u8fb1\u5c3b\u4f38\u4fe1\u4fb5\u5507\u5a20\u5bdd\u5be9\u5fc3\u614e\u632f\u65b0\u664b\u68ee\u699b\u6d78\u6df1\u7533\u75b9\u771f\u795e\u79e6\u7d33\u81e3\u82af\u85aa\u89aa\u8a3a\u8eab\u8f9b\u9032\u91dd\u9707\u4eba\u4ec1\u5203\u5875\u58ec\u5c0b\u751a\u5c3d\u814e\u8a0a\u8fc5\u9663\u976d\u7b25\u8acf\u9808\u9162\u56f3\u53a8"],["9080","\u9017\u5439\u5782\u5e25\u63a8\u6c34\u708a\u7761\u7c8b\u7fe0\u8870\u9042\u9154\u9310\u9318\u968f\u745e\u9ac4\u5d07\u5d69\u6570\u67a2\u8da8\u96db\u636e\u6749\u6919\u83c5\u9817\u96c0\u88fe\u6f84\u647a\u5bf8\u4e16\u702c\u755d\u662f\u51c4\u5236\u52e2\u59d3\u5f81\u6027\u6210\u653f\u6574\u661f\u6674\u68f2\u6816\u6b63\u6e05\u7272\u751f\u76db\u7cbe\u8056\u58f0\u88fd\u897f\u8aa0\u8a93\u8acb\u901d\u9192\u9752\u9759\u6589\u7a0e\u8106\u96bb\u5e2d\u60dc\u621a\u65a5\u6614\u6790\u77f3\u7a4d\u7c4d\u7e3e\u810a\u8cac\u8d64\u8de1\u8e5f\u78a9\u5207\u62d9\u63a5\u6442\u6298\u8a2d\u7a83\u7bc0\u8aac\u96ea\u7d76\u820c\u8749\u4ed9\u5148\u5343\u5360\u5ba3\u5c02\u5c16\u5ddd\u6226\u6247\u64b0\u6813\u6834\u6cc9\u6d45\u6d17\u67d3\u6f5c\u714e\u717d\u65cb\u7a7f\u7bad\u7dda"],["9140","\u7e4a\u7fa8\u817a\u821b\u8239\u85a6\u8a6e\u8cce\u8df5\u9078\u9077\u92ad\u9291\u9583\u9bae\u524d\u5584\u6f38\u7136\u5168\u7985\u7e55\u81b3\u7cce\u564c\u5851\u5ca8\u63aa\u66fe\u66fd\u695a\u72d9\u758f\u758e\u790e\u7956\u79df\u7c97\u7d20\u7d44\u8607\u8a34\u963b\u9061\u9f20\u50e7\u5275\u53cc\u53e2\u5009\u55aa\u58ee\u594f\u723d\u5b8b\u5c64\u531d\u60e3\u60f3\u635c\u6383\u633f\u63bb"],["9180","\u64cd\u65e9\u66f9\u5de3\u69cd\u69fd\u6f15\u71e5\u4e89\u75e9\u76f8\u7a93\u7cdf\u7dcf\u7d9c\u8061\u8349\u8358\u846c\u84bc\u85fb\u88c5\u8d70\u9001\u906d\u9397\u971c\u9a12\u50cf\u5897\u618e\u81d3\u8535\u8d08\u9020\u4fc3\u5074\u5247\u5373\u606f\u6349\u675f\u6e2c\u8db3\u901f\u4fd7\u5c5e\u8cca\u65cf\u7d9a\u5352\u8896\u5176\u63c3\u5b58\u5b6b\u5c0a\u640d\u6751\u905c\u4ed6\u591a\u592a\u6c70\u8a51\u553e\u5815\u59a5\u60f0\u6253\u67c1\u8235\u6955\u9640\u99c4\u9a28\u4f53\u5806\u5bfe\u8010\u5cb1\u5e2f\u5f85\u6020\u614b\u6234\u66ff\u6cf0\u6ede\u80ce\u817f\u82d4\u888b\u8cb8\u9000\u902e\u968a\u9edb\u9bdb\u4ee3\u53f0\u5927\u7b2c\u918d\u984c\u9df9\u6edd\u7027\u5353\u5544\u5b85\u6258\u629e\u62d3\u6ca2\u6fef\u7422\u8a17\u9438\u6fc1\u8afe\u8338\u51e7\u86f8\u53ea"],["9240","\u53e9\u4f46\u9054\u8fb0\u596a\u8131\u5dfd\u7aea\u8fbf\u68da\u8c37\u72f8\u9c48\u6a3d\u8ab0\u4e39\u5358\u5606\u5766\u62c5\u63a2\u65e6\u6b4e\u6de1\u6e5b\u70ad\u77ed\u7aef\u7baa\u7dbb\u803d\u80c6\u86cb\u8a95\u935b\u56e3\u58c7\u5f3e\u65ad\u6696\u6a80\u6bb5\u7537\u8ac7\u5024\u77e5\u5730\u5f1b\u6065\u667a\u6c60\u75f4\u7a1a\u7f6e\u81f4\u8718\u9045\u99b3\u7bc9\u755c\u7af9\u7b51\u84c4"],["9280","\u9010\u79e9\u7a92\u8336\u5ae1\u7740\u4e2d\u4ef2\u5b99\u5fe0\u62bd\u663c\u67f1\u6ce8\u866b\u8877\u8a3b\u914e\u92f3\u99d0\u6a17\u7026\u732a\u82e7\u8457\u8caf\u4e01\u5146\u51cb\u558b\u5bf5\u5e16\u5e33\u5e81\u5f14\u5f35\u5f6b\u5fb4\u61f2\u6311\u66a2\u671d\u6f6e\u7252\u753a\u773a\u8074\u8139\u8178\u8776\u8abf\u8adc\u8d85\u8df3\u929a\u9577\u9802\u9ce5\u52c5\u6357\u76f4\u6715\u6c88\u73cd\u8cc3\u93ae\u9673\u6d25\u589c\u690e\u69cc\u8ffd\u939a\u75db\u901a\u585a\u6802\u63b4\u69fb\u4f43\u6f2c\u67d8\u8fbb\u8526\u7db4\u9354\u693f\u6f70\u576a\u58f7\u5b2c\u7d2c\u722a\u540a\u91e3\u9db4\u4ead\u4f4e\u505c\u5075\u5243\u8c9e\u5448\u5824\u5b9a\u5e1d\u5e95\u5ead\u5ef7\u5f1f\u608c\u62b5\u633a\u63d0\u68af\u6c40\u7887\u798e\u7a0b\u7de0\u8247\u8a02\u8ae6\u8e44\u9013"],["9340","\u90b8\u912d\u91d8\u9f0e\u6ce5\u6458\u64e2\u6575\u6ef4\u7684\u7b1b\u9069\u93d1\u6eba\u54f2\u5fb9\u64a4\u8f4d\u8fed\u9244\u5178\u586b\u5929\u5c55\u5e97\u6dfb\u7e8f\u751c\u8cbc\u8ee2\u985b\u70b9\u4f1d\u6bbf\u6fb1\u7530\u96fb\u514e\u5410\u5835\u5857\u59ac\u5c60\u5f92\u6597\u675c\u6e21\u767b\u83df\u8ced\u9014\u90fd\u934d\u7825\u783a\u52aa\u5ea6\u571f\u5974\u6012\u5012\u515a\u51ac"],["9380","\u51cd\u5200\u5510\u5854\u5858\u5957\u5b95\u5cf6\u5d8b\u60bc\u6295\u642d\u6771\u6843\u68bc\u68df\u76d7\u6dd8\u6e6f\u6d9b\u706f\u71c8\u5f53\u75d8\u7977\u7b49\u7b54\u7b52\u7cd6\u7d71\u5230\u8463\u8569\u85e4\u8a0e\u8b04\u8c46\u8e0f\u9003\u900f\u9419\u9676\u982d\u9a30\u95d8\u50cd\u52d5\u540c\u5802\u5c0e\u61a7\u649e\u6d1e\u77b3\u7ae5\u80f4\u8404\u9053\u9285\u5ce0\u9d07\u533f\u5f97\u5fb3\u6d9c\u7279\u7763\u79bf\u7be4\u6bd2\u72ec\u8aad\u6803\u6a61\u51f8\u7a81\u6934\u5c4a\u9cf6\u82eb\u5bc5\u9149\u701e\u5678\u5c6f\u60c7\u6566\u6c8c\u8c5a\u9041\u9813\u5451\u66c7\u920d\u5948\u90a3\u5185\u4e4d\u51ea\u8599\u8b0e\u7058\u637a\u934b\u6962\u99b4\u7e04\u7577\u5357\u6960\u8edf\u96e3\u6c5d\u4e8c\u5c3c\u5f10\u8fe9\u5302\u8cd1\u8089\u8679\u5eff\u65e5\u4e73\u5165"],["9440","\u5982\u5c3f\u97ee\u4efb\u598a\u5fcd\u8a8d\u6fe1\u79b0\u7962\u5be7\u8471\u732b\u71b1\u5e74\u5ff5\u637b\u649a\u71c3\u7c98\u4e43\u5efc\u4e4b\u57dc\u56a2\u60a9\u6fc3\u7d0d\u80fd\u8133\u81bf\u8fb2\u8997\u86a4\u5df4\u628a\u64ad\u8987\u6777\u6ce2\u6d3e\u7436\u7834\u5a46\u7f75\u82ad\u99ac\u4ff3\u5ec3\u62dd\u6392\u6557\u676f\u76c3\u724c\u80cc\u80ba\u8f29\u914d\u500d\u57f9\u5a92\u6885"],["9480","\u6973\u7164\u72fd\u8cb7\u58f2\u8ce0\u966a\u9019\u877f\u79e4\u77e7\u8429\u4f2f\u5265\u535a\u62cd\u67cf\u6cca\u767d\u7b94\u7c95\u8236\u8584\u8feb\u66dd\u6f20\u7206\u7e1b\u83ab\u99c1\u9ea6\u51fd\u7bb1\u7872\u7bb8\u8087\u7b48\u6ae8\u5e61\u808c\u7551\u7560\u516b\u9262\u6e8c\u767a\u9197\u9aea\u4f10\u7f70\u629c\u7b4f\u95a5\u9ce9\u567a\u5859\u86e4\u96bc\u4f34\u5224\u534a\u53cd\u53db\u5e06\u642c\u6591\u677f\u6c3e\u6c4e\u7248\u72af\u73ed\u7554\u7e41\u822c\u85e9\u8ca9\u7bc4\u91c6\u7169\u9812\u98ef\u633d\u6669\u756a\u76e4\u78d0\u8543\u86ee\u532a\u5351\u5426\u5983\u5e87\u5f7c\u60b2\u6249\u6279\u62ab\u6590\u6bd4\u6ccc\u75b2\u76ae\u7891\u79d8\u7dcb\u7f77\u80a5\u88ab\u8ab9\u8cbb\u907f\u975e\u98db\u6a0b\u7c38\u5099\u5c3e\u5fae\u6787\u6bd8\u7435\u7709\u7f8e"],["9540","\u9f3b\u67ca\u7a17\u5339\u758b\u9aed\u5f66\u819d\u83f1\u8098\u5f3c\u5fc5\u7562\u7b46\u903c\u6867\u59eb\u5a9b\u7d10\u767e\u8b2c\u4ff5\u5f6a\u6a19\u6c37\u6f02\u74e2\u7968\u8868\u8a55\u8c79\u5edf\u63cf\u75c5\u79d2\u82d7\u9328\u92f2\u849c\u86ed\u9c2d\u54c1\u5f6c\u658c\u6d5c\u7015\u8ca7\u8cd3\u983b\u654f\u74f6\u4e0d\u4ed8\u57e0\u592b\u5a66\u5bcc\u51a8\u5e03\u5e9c\u6016\u6276\u6577"],["9580","\u65a7\u666e\u6d6e\u7236\u7b26\u8150\u819a\u8299\u8b5c\u8ca0\u8ce6\u8d74\u961c\u9644\u4fae\u64ab\u6b66\u821e\u8461\u856a\u90e8\u5c01\u6953\u98a8\u847a\u8557\u4f0f\u526f\u5fa9\u5e45\u670d\u798f\u8179\u8907\u8986\u6df5\u5f17\u6255\u6cb8\u4ecf\u7269\u9b92\u5206\u543b\u5674\u58b3\u61a4\u626e\u711a\u596e\u7c89\u7cde\u7d1b\u96f0\u6587\u805e\u4e19\u4f75\u5175\u5840\u5e63\u5e73\u5f0a\u67c4\u4e26\u853d\u9589\u965b\u7c73\u9801\u50fb\u58c1\u7656\u78a7\u5225\u77a5\u8511\u7b86\u504f\u5909\u7247\u7bc7\u7de8\u8fba\u8fd4\u904d\u4fbf\u52c9\u5a29\u5f01\u97ad\u4fdd\u8217\u92ea\u5703\u6355\u6b69\u752b\u88dc\u8f14\u7a42\u52df\u5893\u6155\u620a\u66ae\u6bcd\u7c3f\u83e9\u5023\u4ff8\u5305\u5446\u5831\u5949\u5b9d\u5cf0\u5cef\u5d29\u5e96\u62b1\u6367\u653e\u65b9\u670b"],["9640","\u6cd5\u6ce1\u70f9\u7832\u7e2b\u80de\u82b3\u840c\u84ec\u8702\u8912\u8a2a\u8c4a\u90a6\u92d2\u98fd\u9cf3\u9d6c\u4e4f\u4ea1\u508d\u5256\u574a\u59a8\u5e3d\u5fd8\u5fd9\u623f\u66b4\u671b\u67d0\u68d2\u5192\u7d21\u80aa\u81a8\u8b00\u8c8c\u8cbf\u927e\u9632\u5420\u982c\u5317\u50d5\u535c\u58a8\u64b2\u6734\u7267\u7766\u7a46\u91e6\u52c3\u6ca1\u6b86\u5800\u5e4c\u5954\u672c\u7ffb\u51e1\u76c6"],["9680","\u6469\u78e8\u9b54\u9ebb\u57cb\u59b9\u6627\u679a\u6bce\u54e9\u69d9\u5e55\u819c\u6795\u9baa\u67fe\u9c52\u685d\u4ea6\u4fe3\u53c8\u62b9\u672b\u6cab\u8fc4\u4fad\u7e6d\u9ebf\u4e07\u6162\u6e80\u6f2b\u8513\u5473\u672a\u9b45\u5df3\u7b95\u5cac\u5bc6\u871c\u6e4a\u84d1\u7a14\u8108\u5999\u7c8d\u6c11\u7720\u52d9\u5922\u7121\u725f\u77db\u9727\u9d61\u690b\u5a7f\u5a18\u51a5\u540d\u547d\u660e\u76df\u8ff7\u9298\u9cf4\u59ea\u725d\u6ec5\u514d\u68c9\u7dbf\u7dec\u9762\u9eba\u6478\u6a21\u8302\u5984\u5b5f\u6bdb\u731b\u76f2\u7db2\u8017\u8499\u5132\u6728\u9ed9\u76ee\u6762\u52ff\u9905\u5c24\u623b\u7c7e\u8cb0\u554f\u60b6\u7d0b\u9580\u5301\u4e5f\u51b6\u591c\u723a\u8036\u91ce\u5f25\u77e2\u5384\u5f79\u7d04\u85ac\u8a33\u8e8d\u9756\u67f3\u85ae\u9453\u6109\u6108\u6cb9\u7652"],["9740","\u8aed\u8f38\u552f\u4f51\u512a\u52c7\u53cb\u5ba5\u5e7d\u60a0\u6182\u63d6\u6709\u67da\u6e67\u6d8c\u7336\u7337\u7531\u7950\u88d5\u8a98\u904a\u9091\u90f5\u96c4\u878d\u5915\u4e88\u4f59\u4e0e\u8a89\u8f3f\u9810\u50ad\u5e7c\u5996\u5bb9\u5eb8\u63da\u63fa\u64c1\u66dc\u694a\u69d8\u6d0b\u6eb6\u7194\u7528\u7aaf\u7f8a\u8000\u8449\u84c9\u8981\u8b21\u8e0a\u9065\u967d\u990a\u617e\u6291\u6b32"],["9780","\u6c83\u6d74\u7fcc\u7ffc\u6dc0\u7f85\u87ba\u88f8\u6765\u83b1\u983c\u96f7\u6d1b\u7d61\u843d\u916a\u4e71\u5375\u5d50\u6b04\u6feb\u85cd\u862d\u89a7\u5229\u540f\u5c65\u674e\u68a8\u7406\u7483\u75e2\u88cf\u88e1\u91cc\u96e2\u9678\u5f8b\u7387\u7acb\u844e\u63a0\u7565\u5289\u6d41\u6e9c\u7409\u7559\u786b\u7c92\u9686\u7adc\u9f8d\u4fb6\u616e\u65c5\u865c\u4e86\u4eae\u50da\u4e21\u51cc\u5bee\u6599\u6881\u6dbc\u731f\u7642\u77ad\u7a1c\u7ce7\u826f\u8ad2\u907c\u91cf\u9675\u9818\u529b\u7dd1\u502b\u5398\u6797\u6dcb\u71d0\u7433\u81e8\u8f2a\u96a3\u9c57\u9e9f\u7460\u5841\u6d99\u7d2f\u985e\u4ee4\u4f36\u4f8b\u51b7\u52b1\u5dba\u601c\u73b2\u793c\u82d3\u9234\u96b7\u96f6\u970a\u9e97\u9f62\u66a6\u6b74\u5217\u52a3\u70c8\u88c2\u5ec9\u604b\u6190\u6f23\u7149\u7c3e\u7df4\u806f"],["9840","\u84ee\u9023\u932c\u5442\u9b6f\u6ad3\u7089\u8cc2\u8def\u9732\u52b4\u5a41\u5eca\u5f04\u6717\u697c\u6994\u6d6a\u6f0f\u7262\u72fc\u7bed\u8001\u807e\u874b\u90ce\u516d\u9e93\u7984\u808b\u9332\u8ad6\u502d\u548c\u8a71\u6b6a\u8cc4\u8107\u60d1\u67a0\u9df2\u4e99\u4e98\u9c10\u8a6b\u85c1\u8568\u6900\u6e7e\u7897\u8155"],["989f","\u5f0c\u4e10\u4e15\u4e2a\u4e31\u4e36\u4e3c\u4e3f\u4e42\u4e56\u4e58\u4e82\u4e85\u8c6b\u4e8a\u8212\u5f0d\u4e8e\u4e9e\u4e9f\u4ea0\u4ea2\u4eb0\u4eb3\u4eb6\u4ece\u4ecd\u4ec4\u4ec6\u4ec2\u4ed7\u4ede\u4eed\u4edf\u4ef7\u4f09\u4f5a\u4f30\u4f5b\u4f5d\u4f57\u4f47\u4f76\u4f88\u4f8f\u4f98\u4f7b\u4f69\u4f70\u4f91\u4f6f\u4f86\u4f96\u5118\u4fd4\u4fdf\u4fce\u4fd8\u4fdb\u4fd1\u4fda\u4fd0\u4fe4\u4fe5\u501a\u5028\u5014\u502a\u5025\u5005\u4f1c\u4ff6\u5021\u5029\u502c\u4ffe\u4fef\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505a\u5056\u506c\u5078\u5080\u509a\u5085\u50b4\u50b2"],["9940","\u50c9\u50ca\u50b3\u50c2\u50d6\u50de\u50e5\u50ed\u50e3\u50ee\u50f9\u50f5\u5109\u5101\u5102\u5116\u5115\u5114\u511a\u5121\u513a\u5137\u513c\u513b\u513f\u5140\u5152\u514c\u5154\u5162\u7af8\u5169\u516a\u516e\u5180\u5182\u56d8\u518c\u5189\u518f\u5191\u5193\u5195\u5196\u51a4\u51a6\u51a2\u51a9\u51aa\u51ab\u51b3\u51b1\u51b2\u51b0\u51b5\u51bd\u51c5\u51c9\u51db\u51e0\u8655\u51e9\u51ed"],["9980","\u51f0\u51f5\u51fe\u5204\u520b\u5214\u520e\u5227\u522a\u522e\u5233\u5239\u524f\u5244\u524b\u524c\u525e\u5254\u526a\u5274\u5269\u5273\u527f\u527d\u528d\u5294\u5292\u5271\u5288\u5291\u8fa8\u8fa7\u52ac\u52ad\u52bc\u52b5\u52c1\u52cd\u52d7\u52de\u52e3\u52e6\u98ed\u52e0\u52f3\u52f5\u52f8\u52f9\u5306\u5308\u7538\u530d\u5310\u530f\u5315\u531a\u5323\u532f\u5331\u5333\u5338\u5340\u5346\u5345\u4e17\u5349\u534d\u51d6\u535e\u5369\u536e\u5918\u537b\u5377\u5382\u5396\u53a0\u53a6\u53a5\u53ae\u53b0\u53b6\u53c3\u7c12\u96d9\u53df\u66fc\u71ee\u53ee\u53e8\u53ed\u53fa\u5401\u543d\u5440\u542c\u542d\u543c\u542e\u5436\u5429\u541d\u544e\u548f\u5475\u548e\u545f\u5471\u5477\u5470\u5492\u547b\u5480\u5476\u5484\u5490\u5486\u54c7\u54a2\u54b8\u54a5\u54ac\u54c4\u54c8\u54a8"],["9a40","\u54ab\u54c2\u54a4\u54be\u54bc\u54d8\u54e5\u54e6\u550f\u5514\u54fd\u54ee\u54ed\u54fa\u54e2\u5539\u5540\u5563\u554c\u552e\u555c\u5545\u5556\u5557\u5538\u5533\u555d\u5599\u5580\u54af\u558a\u559f\u557b\u557e\u5598\u559e\u55ae\u557c\u5583\u55a9\u5587\u55a8\u55da\u55c5\u55df\u55c4\u55dc\u55e4\u55d4\u5614\u55f7\u5616\u55fe\u55fd\u561b\u55f9\u564e\u5650\u71df\u5634\u5636\u5632\u5638"],["9a80","\u566b\u5664\u562f\u566c\u566a\u5686\u5680\u568a\u56a0\u5694\u568f\u56a5\u56ae\u56b6\u56b4\u56c2\u56bc\u56c1\u56c3\u56c0\u56c8\u56ce\u56d1\u56d3\u56d7\u56ee\u56f9\u5700\u56ff\u5704\u5709\u5708\u570b\u570d\u5713\u5718\u5716\u55c7\u571c\u5726\u5737\u5738\u574e\u573b\u5740\u574f\u5769\u57c0\u5788\u5761\u577f\u5789\u5793\u57a0\u57b3\u57a4\u57aa\u57b0\u57c3\u57c6\u57d4\u57d2\u57d3\u580a\u57d6\u57e3\u580b\u5819\u581d\u5872\u5821\u5862\u584b\u5870\u6bc0\u5852\u583d\u5879\u5885\u58b9\u589f\u58ab\u58ba\u58de\u58bb\u58b8\u58ae\u58c5\u58d3\u58d1\u58d7\u58d9\u58d8\u58e5\u58dc\u58e4\u58df\u58ef\u58fa\u58f9\u58fb\u58fc\u58fd\u5902\u590a\u5910\u591b\u68a6\u5925\u592c\u592d\u5932\u5938\u593e\u7ad2\u5955\u5950\u594e\u595a\u5958\u5962\u5960\u5967\u596c\u5969"],["9b40","\u5978\u5981\u599d\u4f5e\u4fab\u59a3\u59b2\u59c6\u59e8\u59dc\u598d\u59d9\u59da\u5a25\u5a1f\u5a11\u5a1c\u5a09\u5a1a\u5a40\u5a6c\u5a49\u5a35\u5a36\u5a62\u5a6a\u5a9a\u5abc\u5abe\u5acb\u5ac2\u5abd\u5ae3\u5ad7\u5ae6\u5ae9\u5ad6\u5afa\u5afb\u5b0c\u5b0b\u5b16\u5b32\u5ad0\u5b2a\u5b36\u5b3e\u5b43\u5b45\u5b40\u5b51\u5b55\u5b5a\u5b5b\u5b65\u5b69\u5b70\u5b73\u5b75\u5b78\u6588\u5b7a\u5b80"],["9b80","\u5b83\u5ba6\u5bb8\u5bc3\u5bc7\u5bc9\u5bd4\u5bd0\u5be4\u5be6\u5be2\u5bde\u5be5\u5beb\u5bf0\u5bf6\u5bf3\u5c05\u5c07\u5c08\u5c0d\u5c13\u5c20\u5c22\u5c28\u5c38\u5c39\u5c41\u5c46\u5c4e\u5c53\u5c50\u5c4f\u5b71\u5c6c\u5c6e\u4e62\u5c76\u5c79\u5c8c\u5c91\u5c94\u599b\u5cab\u5cbb\u5cb6\u5cbc\u5cb7\u5cc5\u5cbe\u5cc7\u5cd9\u5ce9\u5cfd\u5cfa\u5ced\u5d8c\u5cea\u5d0b\u5d15\u5d17\u5d5c\u5d1f\u5d1b\u5d11\u5d14\u5d22\u5d1a\u5d19\u5d18\u5d4c\u5d52\u5d4e\u5d4b\u5d6c\u5d73\u5d76\u5d87\u5d84\u5d82\u5da2\u5d9d\u5dac\u5dae\u5dbd\u5d90\u5db7\u5dbc\u5dc9\u5dcd\u5dd3\u5dd2\u5dd6\u5ddb\u5deb\u5df2\u5df5\u5e0b\u5e1a\u5e19\u5e11\u5e1b\u5e36\u5e37\u5e44\u5e43\u5e40\u5e4e\u5e57\u5e54\u5e5f\u5e62\u5e64\u5e47\u5e75\u5e76\u5e7a\u9ebc\u5e7f\u5ea0\u5ec1\u5ec2\u5ec8\u5ed0\u5ecf"],["9c40","\u5ed6\u5ee3\u5edd\u5eda\u5edb\u5ee2\u5ee1\u5ee8\u5ee9\u5eec\u5ef1\u5ef3\u5ef0\u5ef4\u5ef8\u5efe\u5f03\u5f09\u5f5d\u5f5c\u5f0b\u5f11\u5f16\u5f29\u5f2d\u5f38\u5f41\u5f48\u5f4c\u5f4e\u5f2f\u5f51\u5f56\u5f57\u5f59\u5f61\u5f6d\u5f73\u5f77\u5f83\u5f82\u5f7f\u5f8a\u5f88\u5f91\u5f87\u5f9e\u5f99\u5f98\u5fa0\u5fa8\u5fad\u5fbc\u5fd6\u5ffb\u5fe4\u5ff8\u5ff1\u5fdd\u60b3\u5fff\u6021\u6060"],["9c80","\u6019\u6010\u6029\u600e\u6031\u601b\u6015\u602b\u6026\u600f\u603a\u605a\u6041\u606a\u6077\u605f\u604a\u6046\u604d\u6063\u6043\u6064\u6042\u606c\u606b\u6059\u6081\u608d\u60e7\u6083\u609a\u6084\u609b\u6096\u6097\u6092\u60a7\u608b\u60e1\u60b8\u60e0\u60d3\u60b4\u5ff0\u60bd\u60c6\u60b5\u60d8\u614d\u6115\u6106\u60f6\u60f7\u6100\u60f4\u60fa\u6103\u6121\u60fb\u60f1\u610d\u610e\u6147\u613e\u6128\u6127\u614a\u613f\u613c\u612c\u6134\u613d\u6142\u6144\u6173\u6177\u6158\u6159\u615a\u616b\u6174\u616f\u6165\u6171\u615f\u615d\u6153\u6175\u6199\u6196\u6187\u61ac\u6194\u619a\u618a\u6191\u61ab\u61ae\u61cc\u61ca\u61c9\u61f7\u61c8\u61c3\u61c6\u61ba\u61cb\u7f79\u61cd\u61e6\u61e3\u61f6\u61fa\u61f4\u61ff\u61fd\u61fc\u61fe\u6200\u6208\u6209\u620d\u620c\u6214\u621b"],["9d40","\u621e\u6221\u622a\u622e\u6230\u6232\u6233\u6241\u624e\u625e\u6263\u625b\u6260\u6268\u627c\u6282\u6289\u627e\u6292\u6293\u6296\u62d4\u6283\u6294\u62d7\u62d1\u62bb\u62cf\u62ff\u62c6\u64d4\u62c8\u62dc\u62cc\u62ca\u62c2\u62c7\u629b\u62c9\u630c\u62ee\u62f1\u6327\u6302\u6308\u62ef\u62f5\u6350\u633e\u634d\u641c\u634f\u6396\u638e\u6380\u63ab\u6376\u63a3\u638f\u6389\u639f\u63b5\u636b"],["9d80","\u6369\u63be\u63e9\u63c0\u63c6\u63e3\u63c9\u63d2\u63f6\u63c4\u6416\u6434\u6406\u6413\u6426\u6436\u651d\u6417\u6428\u640f\u6467\u646f\u6476\u644e\u652a\u6495\u6493\u64a5\u64a9\u6488\u64bc\u64da\u64d2\u64c5\u64c7\u64bb\u64d8\u64c2\u64f1\u64e7\u8209\u64e0\u64e1\u62ac\u64e3\u64ef\u652c\u64f6\u64f4\u64f2\u64fa\u6500\u64fd\u6518\u651c\u6505\u6524\u6523\u652b\u6534\u6535\u6537\u6536\u6538\u754b\u6548\u6556\u6555\u654d\u6558\u655e\u655d\u6572\u6578\u6582\u6583\u8b8a\u659b\u659f\u65ab\u65b7\u65c3\u65c6\u65c1\u65c4\u65cc\u65d2\u65db\u65d9\u65e0\u65e1\u65f1\u6772\u660a\u6603\u65fb\u6773\u6635\u6636\u6634\u661c\u664f\u6644\u6649\u6641\u665e\u665d\u6664\u6667\u6668\u665f\u6662\u6670\u6683\u6688\u668e\u6689\u6684\u6698\u669d\u66c1\u66b9\u66c9\u66be\u66bc"],["9e40","\u66c4\u66b8\u66d6\u66da\u66e0\u663f\u66e6\u66e9\u66f0\u66f5\u66f7\u670f\u6716\u671e\u6726\u6727\u9738\u672e\u673f\u6736\u6741\u6738\u6737\u6746\u675e\u6760\u6759\u6763\u6764\u6789\u6770\u67a9\u677c\u676a\u678c\u678b\u67a6\u67a1\u6785\u67b7\u67ef\u67b4\u67ec\u67b3\u67e9\u67b8\u67e4\u67de\u67dd\u67e2\u67ee\u67b9\u67ce\u67c6\u67e7\u6a9c\u681e\u6846\u6829\u6840\u684d\u6832\u684e"],["9e80","\u68b3\u682b\u6859\u6863\u6877\u687f\u689f\u688f\u68ad\u6894\u689d\u689b\u6883\u6aae\u68b9\u6874\u68b5\u68a0\u68ba\u690f\u688d\u687e\u6901\u68ca\u6908\u68d8\u6922\u6926\u68e1\u690c\u68cd\u68d4\u68e7\u68d5\u6936\u6912\u6904\u68d7\u68e3\u6925\u68f9\u68e0\u68ef\u6928\u692a\u691a\u6923\u6921\u68c6\u6979\u6977\u695c\u6978\u696b\u6954\u697e\u696e\u6939\u6974\u693d\u6959\u6930\u6961\u695e\u695d\u6981\u696a\u69b2\u69ae\u69d0\u69bf\u69c1\u69d3\u69be\u69ce\u5be8\u69ca\u69dd\u69bb\u69c3\u69a7\u6a2e\u6991\u69a0\u699c\u6995\u69b4\u69de\u69e8\u6a02\u6a1b\u69ff\u6b0a\u69f9\u69f2\u69e7\u6a05\u69b1\u6a1e\u69ed\u6a14\u69eb\u6a0a\u6a12\u6ac1\u6a23\u6a13\u6a44\u6a0c\u6a72\u6a36\u6a78\u6a47\u6a62\u6a59\u6a66\u6a48\u6a38\u6a22\u6a90\u6a8d\u6aa0\u6a84\u6aa2\u6aa3"],["9f40","\u6a97\u8617\u6abb\u6ac3\u6ac2\u6ab8\u6ab3\u6aac\u6ade\u6ad1\u6adf\u6aaa\u6ada\u6aea\u6afb\u6b05\u8616\u6afa\u6b12\u6b16\u9b31\u6b1f\u6b38\u6b37\u76dc\u6b39\u98ee\u6b47\u6b43\u6b49\u6b50\u6b59\u6b54\u6b5b\u6b5f\u6b61\u6b78\u6b79\u6b7f\u6b80\u6b84\u6b83\u6b8d\u6b98\u6b95\u6b9e\u6ba4\u6baa\u6bab\u6baf\u6bb2\u6bb1\u6bb3\u6bb7\u6bbc\u6bc6\u6bcb\u6bd3\u6bdf\u6bec\u6beb\u6bf3\u6bef"],["9f80","\u9ebe\u6c08\u6c13\u6c14\u6c1b\u6c24\u6c23\u6c5e\u6c55\u6c62\u6c6a\u6c82\u6c8d\u6c9a\u6c81\u6c9b\u6c7e\u6c68\u6c73\u6c92\u6c90\u6cc4\u6cf1\u6cd3\u6cbd\u6cd7\u6cc5\u6cdd\u6cae\u6cb1\u6cbe\u6cba\u6cdb\u6cef\u6cd9\u6cea\u6d1f\u884d\u6d36\u6d2b\u6d3d\u6d38\u6d19\u6d35\u6d33\u6d12\u6d0c\u6d63\u6d93\u6d64\u6d5a\u6d79\u6d59\u6d8e\u6d95\u6fe4\u6d85\u6df9\u6e15\u6e0a\u6db5\u6dc7\u6de6\u6db8\u6dc6\u6dec\u6dde\u6dcc\u6de8\u6dd2\u6dc5\u6dfa\u6dd9\u6de4\u6dd5\u6dea\u6dee\u6e2d\u6e6e\u6e2e\u6e19\u6e72\u6e5f\u6e3e\u6e23\u6e6b\u6e2b\u6e76\u6e4d\u6e1f\u6e43\u6e3a\u6e4e\u6e24\u6eff\u6e1d\u6e38\u6e82\u6eaa\u6e98\u6ec9\u6eb7\u6ed3\u6ebd\u6eaf\u6ec4\u6eb2\u6ed4\u6ed5\u6e8f\u6ea5\u6ec2\u6e9f\u6f41\u6f11\u704c\u6eec\u6ef8\u6efe\u6f3f\u6ef2\u6f31\u6eef\u6f32\u6ecc"],["e040","\u6f3e\u6f13\u6ef7\u6f86\u6f7a\u6f78\u6f81\u6f80\u6f6f\u6f5b\u6ff3\u6f6d\u6f82\u6f7c\u6f58\u6f8e\u6f91\u6fc2\u6f66\u6fb3\u6fa3\u6fa1\u6fa4\u6fb9\u6fc6\u6faa\u6fdf\u6fd5\u6fec\u6fd4\u6fd8\u6ff1\u6fee\u6fdb\u7009\u700b\u6ffa\u7011\u7001\u700f\u6ffe\u701b\u701a\u6f74\u701d\u7018\u701f\u7030\u703e\u7032\u7051\u7063\u7099\u7092\u70af\u70f1\u70ac\u70b8\u70b3\u70ae\u70df\u70cb\u70dd"],["e080","\u70d9\u7109\u70fd\u711c\u7119\u7165\u7155\u7188\u7166\u7162\u714c\u7156\u716c\u718f\u71fb\u7184\u7195\u71a8\u71ac\u71d7\u71b9\u71be\u71d2\u71c9\u71d4\u71ce\u71e0\u71ec\u71e7\u71f5\u71fc\u71f9\u71ff\u720d\u7210\u721b\u7228\u722d\u722c\u7230\u7232\u723b\u723c\u723f\u7240\u7246\u724b\u7258\u7274\u727e\u7282\u7281\u7287\u7292\u7296\u72a2\u72a7\u72b9\u72b2\u72c3\u72c6\u72c4\u72ce\u72d2\u72e2\u72e0\u72e1\u72f9\u72f7\u500f\u7317\u730a\u731c\u7316\u731d\u7334\u732f\u7329\u7325\u733e\u734e\u734f\u9ed8\u7357\u736a\u7368\u7370\u7378\u7375\u737b\u737a\u73c8\u73b3\u73ce\u73bb\u73c0\u73e5\u73ee\u73de\u74a2\u7405\u746f\u7425\u73f8\u7432\u743a\u7455\u743f\u745f\u7459\u7441\u745c\u7469\u7470\u7463\u746a\u7476\u747e\u748b\u749e\u74a7\u74ca\u74cf\u74d4\u73f1"],["e140","\u74e0\u74e3\u74e7\u74e9\u74ee\u74f2\u74f0\u74f1\u74f8\u74f7\u7504\u7503\u7505\u750c\u750e\u750d\u7515\u7513\u751e\u7526\u752c\u753c\u7544\u754d\u754a\u7549\u755b\u7546\u755a\u7569\u7564\u7567\u756b\u756d\u7578\u7576\u7586\u7587\u7574\u758a\u7589\u7582\u7594\u759a\u759d\u75a5\u75a3\u75c2\u75b3\u75c3\u75b5\u75bd\u75b8\u75bc\u75b1\u75cd\u75ca\u75d2\u75d9\u75e3\u75de\u75fe\u75ff"],["e180","\u75fc\u7601\u75f0\u75fa\u75f2\u75f3\u760b\u760d\u7609\u761f\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763b\u7647\u7648\u7646\u765c\u7658\u7661\u7662\u7668\u7669\u766a\u7667\u766c\u7670\u7672\u7676\u7678\u767c\u7680\u7683\u7688\u768b\u768e\u7696\u7693\u7699\u769a\u76b0\u76b4\u76b8\u76b9\u76ba\u76c2\u76cd\u76d6\u76d2\u76de\u76e1\u76e5\u76e7\u76ea\u862f\u76fb\u7708\u7707\u7704\u7729\u7724\u771e\u7725\u7726\u771b\u7737\u7738\u7747\u775a\u7768\u776b\u775b\u7765\u777f\u777e\u7779\u778e\u778b\u7791\u77a0\u779e\u77b0\u77b6\u77b9\u77bf\u77bc\u77bd\u77bb\u77c7\u77cd\u77d7\u77da\u77dc\u77e3\u77ee\u77fc\u780c\u7812\u7926\u7820\u792a\u7845\u788e\u7874\u7886\u787c\u789a\u788c\u78a3\u78b5\u78aa\u78af\u78d1\u78c6\u78cb\u78d4\u78be\u78bc\u78c5\u78ca\u78ec"],["e240","\u78e7\u78da\u78fd\u78f4\u7907\u7912\u7911\u7919\u792c\u792b\u7940\u7960\u7957\u795f\u795a\u7955\u7953\u797a\u797f\u798a\u799d\u79a7\u9f4b\u79aa\u79ae\u79b3\u79b9\u79ba\u79c9\u79d5\u79e7\u79ec\u79e1\u79e3\u7a08\u7a0d\u7a18\u7a19\u7a20\u7a1f\u7980\u7a31\u7a3b\u7a3e\u7a37\u7a43\u7a57\u7a49\u7a61\u7a62\u7a69\u9f9d\u7a70\u7a79\u7a7d\u7a88\u7a97\u7a95\u7a98\u7a96\u7aa9\u7ac8\u7ab0"],["e280","\u7ab6\u7ac5\u7ac4\u7abf\u9083\u7ac7\u7aca\u7acd\u7acf\u7ad5\u7ad3\u7ad9\u7ada\u7add\u7ae1\u7ae2\u7ae6\u7aed\u7af0\u7b02\u7b0f\u7b0a\u7b06\u7b33\u7b18\u7b19\u7b1e\u7b35\u7b28\u7b36\u7b50\u7b7a\u7b04\u7b4d\u7b0b\u7b4c\u7b45\u7b75\u7b65\u7b74\u7b67\u7b70\u7b71\u7b6c\u7b6e\u7b9d\u7b98\u7b9f\u7b8d\u7b9c\u7b9a\u7b8b\u7b92\u7b8f\u7b5d\u7b99\u7bcb\u7bc1\u7bcc\u7bcf\u7bb4\u7bc6\u7bdd\u7be9\u7c11\u7c14\u7be6\u7be5\u7c60\u7c00\u7c07\u7c13\u7bf3\u7bf7\u7c17\u7c0d\u7bf6\u7c23\u7c27\u7c2a\u7c1f\u7c37\u7c2b\u7c3d\u7c4c\u7c43\u7c54\u7c4f\u7c40\u7c50\u7c58\u7c5f\u7c64\u7c56\u7c65\u7c6c\u7c75\u7c83\u7c90\u7ca4\u7cad\u7ca2\u7cab\u7ca1\u7ca8\u7cb3\u7cb2\u7cb1\u7cae\u7cb9\u7cbd\u7cc0\u7cc5\u7cc2\u7cd8\u7cd2\u7cdc\u7ce2\u9b3b\u7cef\u7cf2\u7cf4\u7cf6\u7cfa\u7d06"],["e340","\u7d02\u7d1c\u7d15\u7d0a\u7d45\u7d4b\u7d2e\u7d32\u7d3f\u7d35\u7d46\u7d73\u7d56\u7d4e\u7d72\u7d68\u7d6e\u7d4f\u7d63\u7d93\u7d89\u7d5b\u7d8f\u7d7d\u7d9b\u7dba\u7dae\u7da3\u7db5\u7dc7\u7dbd\u7dab\u7e3d\u7da2\u7daf\u7ddc\u7db8\u7d9f\u7db0\u7dd8\u7ddd\u7de4\u7dde\u7dfb\u7df2\u7de1\u7e05\u7e0a\u7e23\u7e21\u7e12\u7e31\u7e1f\u7e09\u7e0b\u7e22\u7e46\u7e66\u7e3b\u7e35\u7e39\u7e43\u7e37"],["e380","\u7e32\u7e3a\u7e67\u7e5d\u7e56\u7e5e\u7e59\u7e5a\u7e79\u7e6a\u7e69\u7e7c\u7e7b\u7e83\u7dd5\u7e7d\u8fae\u7e7f\u7e88\u7e89\u7e8c\u7e92\u7e90\u7e93\u7e94\u7e96\u7e8e\u7e9b\u7e9c\u7f38\u7f3a\u7f45\u7f4c\u7f4d\u7f4e\u7f50\u7f51\u7f55\u7f54\u7f58\u7f5f\u7f60\u7f68\u7f69\u7f67\u7f78\u7f82\u7f86\u7f83\u7f88\u7f87\u7f8c\u7f94\u7f9e\u7f9d\u7f9a\u7fa3\u7faf\u7fb2\u7fb9\u7fae\u7fb6\u7fb8\u8b71\u7fc5\u7fc6\u7fca\u7fd5\u7fd4\u7fe1\u7fe6\u7fe9\u7ff3\u7ff9\u98dc\u8006\u8004\u800b\u8012\u8018\u8019\u801c\u8021\u8028\u803f\u803b\u804a\u8046\u8052\u8058\u805a\u805f\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807d\u807f\u8084\u8086\u8085\u809b\u8093\u809a\u80ad\u5190\u80ac\u80db\u80e5\u80d9\u80dd\u80c4\u80da\u80d6\u8109\u80ef\u80f1\u811b\u8129\u8123\u812f\u814b"],["e440","\u968b\u8146\u813e\u8153\u8151\u80fc\u8171\u816e\u8165\u8166\u8174\u8183\u8188\u818a\u8180\u8182\u81a0\u8195\u81a4\u81a3\u815f\u8193\u81a9\u81b0\u81b5\u81be\u81b8\u81bd\u81c0\u81c2\u81ba\u81c9\u81cd\u81d1\u81d9\u81d8\u81c8\u81da\u81df\u81e0\u81e7\u81fa\u81fb\u81fe\u8201\u8202\u8205\u8207\u820a\u820d\u8210\u8216\u8229\u822b\u8238\u8233\u8240\u8259\u8258\u825d\u825a\u825f\u8264"],["e480","\u8262\u8268\u826a\u826b\u822e\u8271\u8277\u8278\u827e\u828d\u8292\u82ab\u829f\u82bb\u82ac\u82e1\u82e3\u82df\u82d2\u82f4\u82f3\u82fa\u8393\u8303\u82fb\u82f9\u82de\u8306\u82dc\u8309\u82d9\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832f\u832b\u8317\u8318\u8385\u839a\u83aa\u839f\u83a2\u8396\u8323\u838e\u8387\u838a\u837c\u83b5\u8373\u8375\u83a0\u8389\u83a8\u83f4\u8413\u83eb\u83ce\u83fd\u8403\u83d8\u840b\u83c1\u83f7\u8407\u83e0\u83f2\u840d\u8422\u8420\u83bd\u8438\u8506\u83fb\u846d\u842a\u843c\u855a\u8484\u8477\u846b\u84ad\u846e\u8482\u8469\u8446\u842c\u846f\u8479\u8435\u84ca\u8462\u84b9\u84bf\u849f\u84d9\u84cd\u84bb\u84da\u84d0\u84c1\u84c6\u84d6\u84a1\u8521\u84ff\u84f4\u8517\u8518\u852c\u851f\u8515\u8514\u84fc\u8540\u8563\u8558\u8548"],["e540","\u8541\u8602\u854b\u8555\u8580\u85a4\u8588\u8591\u858a\u85a8\u856d\u8594\u859b\u85ea\u8587\u859c\u8577\u857e\u8590\u85c9\u85ba\u85cf\u85b9\u85d0\u85d5\u85dd\u85e5\u85dc\u85f9\u860a\u8613\u860b\u85fe\u85fa\u8606\u8622\u861a\u8630\u863f\u864d\u4e55\u8654\u865f\u8667\u8671\u8693\u86a3\u86a9\u86aa\u868b\u868c\u86b6\u86af\u86c4\u86c6\u86b0\u86c9\u8823\u86ab\u86d4\u86de\u86e9\u86ec"],["e580","\u86df\u86db\u86ef\u8712\u8706\u8708\u8700\u8703\u86fb\u8711\u8709\u870d\u86f9\u870a\u8734\u873f\u8737\u873b\u8725\u8729\u871a\u8760\u875f\u8778\u874c\u874e\u8774\u8757\u8768\u876e\u8759\u8753\u8763\u876a\u8805\u87a2\u879f\u8782\u87af\u87cb\u87bd\u87c0\u87d0\u96d6\u87ab\u87c4\u87b3\u87c7\u87c6\u87bb\u87ef\u87f2\u87e0\u880f\u880d\u87fe\u87f6\u87f7\u880e\u87d2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883b\u8844\u8842\u8852\u8859\u885e\u8862\u886b\u8881\u887e\u889e\u8875\u887d\u88b5\u8872\u8882\u8897\u8892\u88ae\u8899\u88a2\u888d\u88a4\u88b0\u88bf\u88b1\u88c3\u88c4\u88d4\u88d8\u88d9\u88dd\u88f9\u8902\u88fc\u88f4\u88e8\u88f2\u8904\u890c\u890a\u8913\u8943\u891e\u8925\u892a\u892b\u8941\u8944\u893b\u8936\u8938\u894c\u891d\u8960\u895e"],["e640","\u8966\u8964\u896d\u896a\u896f\u8974\u8977\u897e\u8983\u8988\u898a\u8993\u8998\u89a1\u89a9\u89a6\u89ac\u89af\u89b2\u89ba\u89bd\u89bf\u89c0\u89da\u89dc\u89dd\u89e7\u89f4\u89f8\u8a03\u8a16\u8a10\u8a0c\u8a1b\u8a1d\u8a25\u8a36\u8a41\u8a5b\u8a52\u8a46\u8a48\u8a7c\u8a6d\u8a6c\u8a62\u8a85\u8a82\u8a84\u8aa8\u8aa1\u8a91\u8aa5\u8aa6\u8a9a\u8aa3\u8ac4\u8acd\u8ac2\u8ada\u8aeb\u8af3\u8ae7"],["e680","\u8ae4\u8af1\u8b14\u8ae0\u8ae2\u8af7\u8ade\u8adb\u8b0c\u8b07\u8b1a\u8ae1\u8b16\u8b10\u8b17\u8b20\u8b33\u97ab\u8b26\u8b2b\u8b3e\u8b28\u8b41\u8b4c\u8b4f\u8b4e\u8b49\u8b56\u8b5b\u8b5a\u8b6b\u8b5f\u8b6c\u8b6f\u8b74\u8b7d\u8b80\u8b8c\u8b8e\u8b92\u8b93\u8b96\u8b99\u8b9a\u8c3a\u8c41\u8c3f\u8c48\u8c4c\u8c4e\u8c50\u8c55\u8c62\u8c6c\u8c78\u8c7a\u8c82\u8c89\u8c85\u8c8a\u8c8d\u8c8e\u8c94\u8c7c\u8c98\u621d\u8cad\u8caa\u8cbd\u8cb2\u8cb3\u8cae\u8cb6\u8cc8\u8cc1\u8ce4\u8ce3\u8cda\u8cfd\u8cfa\u8cfb\u8d04\u8d05\u8d0a\u8d07\u8d0f\u8d0d\u8d10\u9f4e\u8d13\u8ccd\u8d14\u8d16\u8d67\u8d6d\u8d71\u8d73\u8d81\u8d99\u8dc2\u8dbe\u8dba\u8dcf\u8dda\u8dd6\u8dcc\u8ddb\u8dcb\u8dea\u8deb\u8ddf\u8de3\u8dfc\u8e08\u8e09\u8dff\u8e1d\u8e1e\u8e10\u8e1f\u8e42\u8e35\u8e30\u8e34\u8e4a"],["e740","\u8e47\u8e49\u8e4c\u8e50\u8e48\u8e59\u8e64\u8e60\u8e2a\u8e63\u8e55\u8e76\u8e72\u8e7c\u8e81\u8e87\u8e85\u8e84\u8e8b\u8e8a\u8e93\u8e91\u8e94\u8e99\u8eaa\u8ea1\u8eac\u8eb0\u8ec6\u8eb1\u8ebe\u8ec5\u8ec8\u8ecb\u8edb\u8ee3\u8efc\u8efb\u8eeb\u8efe\u8f0a\u8f05\u8f15\u8f12\u8f19\u8f13\u8f1c\u8f1f\u8f1b\u8f0c\u8f26\u8f33\u8f3b\u8f39\u8f45\u8f42\u8f3e\u8f4c\u8f49\u8f46\u8f4e\u8f57\u8f5c"],["e780","\u8f62\u8f63\u8f64\u8f9c\u8f9f\u8fa3\u8fad\u8faf\u8fb7\u8fda\u8fe5\u8fe2\u8fea\u8fef\u9087\u8ff4\u9005\u8ff9\u8ffa\u9011\u9015\u9021\u900d\u901e\u9016\u900b\u9027\u9036\u9035\u9039\u8ff8\u904f\u9050\u9051\u9052\u900e\u9049\u903e\u9056\u9058\u905e\u9068\u906f\u9076\u96a8\u9072\u9082\u907d\u9081\u9080\u908a\u9089\u908f\u90a8\u90af\u90b1\u90b5\u90e2\u90e4\u6248\u90db\u9102\u9112\u9119\u9132\u9130\u914a\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918b\u9189\u9182\u91a2\u91ab\u91af\u91aa\u91b5\u91b4\u91ba\u91c0\u91c1\u91c9\u91cb\u91d0\u91d6\u91df\u91e1\u91db\u91fc\u91f5\u91f6\u921e\u91ff\u9214\u922c\u9215\u9211\u925e\u9257\u9245\u9249\u9264\u9248\u9295\u923f\u924b\u9250\u929c\u9296\u9293\u929b\u925a\u92cf\u92b9\u92b7\u92e9\u930f\u92fa\u9344\u932e"],["e840","\u9319\u9322\u931a\u9323\u933a\u9335\u933b\u935c\u9360\u937c\u936e\u9356\u93b0\u93ac\u93ad\u9394\u93b9\u93d6\u93d7\u93e8\u93e5\u93d8\u93c3\u93dd\u93d0\u93c8\u93e4\u941a\u9414\u9413\u9403\u9407\u9410\u9436\u942b\u9435\u9421\u943a\u9441\u9452\u9444\u945b\u9460\u9462\u945e\u946a\u9229\u9470\u9475\u9477\u947d\u945a\u947c\u947e\u9481\u947f\u9582\u9587\u958a\u9594\u9596\u9598\u9599"],["e880","\u95a0\u95a8\u95a7\u95ad\u95bc\u95bb\u95b9\u95be\u95ca\u6ff6\u95c3\u95cd\u95cc\u95d5\u95d4\u95d6\u95dc\u95e1\u95e5\u95e2\u9621\u9628\u962e\u962f\u9642\u964c\u964f\u964b\u9677\u965c\u965e\u965d\u965f\u9666\u9672\u966c\u968d\u9698\u9695\u9697\u96aa\u96a7\u96b1\u96b2\u96b0\u96b4\u96b6\u96b8\u96b9\u96ce\u96cb\u96c9\u96cd\u894d\u96dc\u970d\u96d5\u96f9\u9704\u9706\u9708\u9713\u970e\u9711\u970f\u9716\u9719\u9724\u972a\u9730\u9739\u973d\u973e\u9744\u9746\u9748\u9742\u9749\u975c\u9760\u9764\u9766\u9768\u52d2\u976b\u9771\u9779\u9785\u977c\u9781\u977a\u9786\u978b\u978f\u9790\u979c\u97a8\u97a6\u97a3\u97b3\u97b4\u97c3\u97c6\u97c8\u97cb\u97dc\u97ed\u9f4f\u97f2\u7adf\u97f6\u97f5\u980f\u980c\u9838\u9824\u9821\u9837\u983d\u9846\u984f\u984b\u986b\u986f\u9870"],["e940","\u9871\u9874\u9873\u98aa\u98af\u98b1\u98b6\u98c4\u98c3\u98c6\u98e9\u98eb\u9903\u9909\u9912\u9914\u9918\u9921\u991d\u991e\u9924\u9920\u992c\u992e\u993d\u993e\u9942\u9949\u9945\u9950\u994b\u9951\u9952\u994c\u9955\u9997\u9998\u99a5\u99ad\u99ae\u99bc\u99df\u99db\u99dd\u99d8\u99d1\u99ed\u99ee\u99f1\u99f2\u99fb\u99f8\u9a01\u9a0f\u9a05\u99e2\u9a19\u9a2b\u9a37\u9a45\u9a42\u9a40\u9a43"],["e980","\u9a3e\u9a55\u9a4d\u9a5b\u9a57\u9a5f\u9a62\u9a65\u9a64\u9a69\u9a6b\u9a6a\u9aad\u9ab0\u9abc\u9ac0\u9acf\u9ad1\u9ad3\u9ad4\u9ade\u9adf\u9ae2\u9ae3\u9ae6\u9aef\u9aeb\u9aee\u9af4\u9af1\u9af7\u9afb\u9b06\u9b18\u9b1a\u9b1f\u9b22\u9b23\u9b25\u9b27\u9b28\u9b29\u9b2a\u9b2e\u9b2f\u9b32\u9b44\u9b43\u9b4f\u9b4d\u9b4e\u9b51\u9b58\u9b74\u9b93\u9b83\u9b91\u9b96\u9b97\u9b9f\u9ba0\u9ba8\u9bb4\u9bc0\u9bca\u9bb9\u9bc6\u9bcf\u9bd1\u9bd2\u9be3\u9be2\u9be4\u9bd4\u9be1\u9c3a\u9bf2\u9bf1\u9bf0\u9c15\u9c14\u9c09\u9c13\u9c0c\u9c06\u9c08\u9c12\u9c0a\u9c04\u9c2e\u9c1b\u9c25\u9c24\u9c21\u9c30\u9c47\u9c32\u9c46\u9c3e\u9c5a\u9c60\u9c67\u9c76\u9c78\u9ce7\u9cec\u9cf0\u9d09\u9d08\u9ceb\u9d03\u9d06\u9d2a\u9d26\u9daf\u9d23\u9d1f\u9d44\u9d15\u9d12\u9d41\u9d3f\u9d3e\u9d46\u9d48"],["ea40","\u9d5d\u9d5e\u9d64\u9d51\u9d50\u9d59\u9d72\u9d89\u9d87\u9dab\u9d6f\u9d7a\u9d9a\u9da4\u9da9\u9db2\u9dc4\u9dc1\u9dbb\u9db8\u9dba\u9dc6\u9dcf\u9dc2\u9dd9\u9dd3\u9df8\u9de6\u9ded\u9def\u9dfd\u9e1a\u9e1b\u9e1e\u9e75\u9e79\u9e7d\u9e81\u9e88\u9e8b\u9e8c\u9e92\u9e95\u9e91\u9e9d\u9ea5\u9ea9\u9eb8\u9eaa\u9ead\u9761\u9ecc\u9ece\u9ecf\u9ed0\u9ed4\u9edc\u9ede\u9edd\u9ee0\u9ee5\u9ee8\u9eef"],["ea80","\u9ef4\u9ef6\u9ef7\u9ef9\u9efb\u9efc\u9efd\u9f07\u9f08\u76b7\u9f15\u9f21\u9f2c\u9f3e\u9f4a\u9f52\u9f54\u9f63\u9f5f\u9f60\u9f61\u9f66\u9f67\u9f6c\u9f6a\u9f77\u9f72\u9f76\u9f95\u9f9c\u9fa0\u582f\u69c7\u9059\u7464\u51dc\u7199"],["ed40","\u7e8a\u891c\u9348\u9288\u84dc\u4fc9\u70bb\u6631\u68c8\u92f9\u66fb\u5f45\u4e28\u4ee1\u4efc\u4f00\u4f03\u4f39\u4f56\u4f92\u4f8a\u4f9a\u4f94\u4fcd\u5040\u5022\u4fff\u501e\u5046\u5070\u5042\u5094\u50f4\u50d8\u514a\u5164\u519d\u51be\u51ec\u5215\u529c\u52a6\u52c0\u52db\u5300\u5307\u5324\u5372\u5393\u53b2\u53dd\ufa0e\u549c\u548a\u54a9\u54ff\u5586\u5759\u5765\u57ac\u57c8\u57c7\ufa0f"],["ed80","\ufa10\u589e\u58b2\u590b\u5953\u595b\u595d\u5963\u59a4\u59ba\u5b56\u5bc0\u752f\u5bd8\u5bec\u5c1e\u5ca6\u5cba\u5cf5\u5d27\u5d53\ufa11\u5d42\u5d6d\u5db8\u5db9\u5dd0\u5f21\u5f34\u5f67\u5fb7\u5fde\u605d\u6085\u608a\u60de\u60d5\u6120\u60f2\u6111\u6137\u6130\u6198\u6213\u62a6\u63f5\u6460\u649d\u64ce\u654e\u6600\u6615\u663b\u6609\u662e\u661e\u6624\u6665\u6657\u6659\ufa12\u6673\u6699\u66a0\u66b2\u66bf\u66fa\u670e\uf929\u6766\u67bb\u6852\u67c0\u6801\u6844\u68cf\ufa13\u6968\ufa14\u6998\u69e2\u6a30\u6a6b\u6a46\u6a73\u6a7e\u6ae2\u6ae4\u6bd6\u6c3f\u6c5c\u6c86\u6c6f\u6cda\u6d04\u6d87\u6d6f\u6d96\u6dac\u6dcf\u6df8\u6df2\u6dfc\u6e39\u6e5c\u6e27\u6e3c\u6ebf\u6f88\u6fb5\u6ff5\u7005\u7007\u7028\u7085\u70ab\u710f\u7104\u715c\u7146\u7147\ufa15\u71c1\u71fe\u72b1"],["ee40","\u72be\u7324\ufa16\u7377\u73bd\u73c9\u73d6\u73e3\u73d2\u7407\u73f5\u7426\u742a\u7429\u742e\u7462\u7489\u749f\u7501\u756f\u7682\u769c\u769e\u769b\u76a6\ufa17\u7746\u52af\u7821\u784e\u7864\u787a\u7930\ufa18\ufa19\ufa1a\u7994\ufa1b\u799b\u7ad1\u7ae7\ufa1c\u7aeb\u7b9e\ufa1d\u7d48\u7d5c\u7db7\u7da0\u7dd6\u7e52\u7f47\u7fa1\ufa1e\u8301\u8362\u837f\u83c7\u83f6\u8448\u84b4\u8553\u8559"],["ee80","\u856b\ufa1f\u85b0\ufa20\ufa21\u8807\u88f5\u8a12\u8a37\u8a79\u8aa7\u8abe\u8adf\ufa22\u8af6\u8b53\u8b7f\u8cf0\u8cf4\u8d12\u8d76\ufa23\u8ecf\ufa24\ufa25\u9067\u90de\ufa26\u9115\u9127\u91da\u91d7\u91de\u91ed\u91ee\u91e4\u91e5\u9206\u9210\u920a\u923a\u9240\u923c\u924e\u9259\u9251\u9239\u9267\u92a7\u9277\u9278\u92e7\u92d7\u92d9\u92d0\ufa27\u92d5\u92e0\u92d3\u9325\u9321\u92fb\ufa28\u931e\u92ff\u931d\u9302\u9370\u9357\u93a4\u93c6\u93de\u93f8\u9431\u9445\u9448\u9592\uf9dc\ufa29\u969d\u96af\u9733\u973b\u9743\u974d\u974f\u9751\u9755\u9857\u9865\ufa2a\ufa2b\u9927\ufa2c\u999e\u9a4e\u9ad9\u9adc\u9b75\u9b72\u9b8f\u9bb1\u9bbb\u9c00\u9d70\u9d6b\ufa2d\u9e19\u9ed1"],["eeef","\u2170",9,"\uffe2\uffe4\uff07\uff02"],["f040","\ue000",62],["f080","\ue03f",124],["f140","\ue0bc",62],["f180","\ue0fb",124],["f240","\ue178",62],["f280","\ue1b7",124],["f340","\ue234",62],["f380","\ue273",124],["f440","\ue2f0",62],["f480","\ue32f",124],["f540","\ue3ac",62],["f580","\ue3eb",124],["f640","\ue468",62],["f680","\ue4a7",124],["f740","\ue524",62],["f780","\ue563",124],["f840","\ue5e0",62],["f880","\ue61f",124],["f940","\ue69c"],["fa40","\u2170",9,"\u2160",9,"\uffe2\uffe4\uff07\uff02\u3231\u2116\u2121\u2235\u7e8a\u891c\u9348\u9288\u84dc\u4fc9\u70bb\u6631\u68c8\u92f9\u66fb\u5f45\u4e28\u4ee1\u4efc\u4f00\u4f03\u4f39\u4f56\u4f92\u4f8a\u4f9a\u4f94\u4fcd\u5040\u5022\u4fff\u501e\u5046\u5070\u5042\u5094\u50f4\u50d8\u514a"],["fa80","\u5164\u519d\u51be\u51ec\u5215\u529c\u52a6\u52c0\u52db\u5300\u5307\u5324\u5372\u5393\u53b2\u53dd\ufa0e\u549c\u548a\u54a9\u54ff\u5586\u5759\u5765\u57ac\u57c8\u57c7\ufa0f\ufa10\u589e\u58b2\u590b\u5953\u595b\u595d\u5963\u59a4\u59ba\u5b56\u5bc0\u752f\u5bd8\u5bec\u5c1e\u5ca6\u5cba\u5cf5\u5d27\u5d53\ufa11\u5d42\u5d6d\u5db8\u5db9\u5dd0\u5f21\u5f34\u5f67\u5fb7\u5fde\u605d\u6085\u608a\u60de\u60d5\u6120\u60f2\u6111\u6137\u6130\u6198\u6213\u62a6\u63f5\u6460\u649d\u64ce\u654e\u6600\u6615\u663b\u6609\u662e\u661e\u6624\u6665\u6657\u6659\ufa12\u6673\u6699\u66a0\u66b2\u66bf\u66fa\u670e\uf929\u6766\u67bb\u6852\u67c0\u6801\u6844\u68cf\ufa13\u6968\ufa14\u6998\u69e2\u6a30\u6a6b\u6a46\u6a73\u6a7e\u6ae2\u6ae4\u6bd6\u6c3f\u6c5c\u6c86\u6c6f\u6cda\u6d04\u6d87\u6d6f"],["fb40","\u6d96\u6dac\u6dcf\u6df8\u6df2\u6dfc\u6e39\u6e5c\u6e27\u6e3c\u6ebf\u6f88\u6fb5\u6ff5\u7005\u7007\u7028\u7085\u70ab\u710f\u7104\u715c\u7146\u7147\ufa15\u71c1\u71fe\u72b1\u72be\u7324\ufa16\u7377\u73bd\u73c9\u73d6\u73e3\u73d2\u7407\u73f5\u7426\u742a\u7429\u742e\u7462\u7489\u749f\u7501\u756f\u7682\u769c\u769e\u769b\u76a6\ufa17\u7746\u52af\u7821\u784e\u7864\u787a\u7930\ufa18\ufa19"],["fb80","\ufa1a\u7994\ufa1b\u799b\u7ad1\u7ae7\ufa1c\u7aeb\u7b9e\ufa1d\u7d48\u7d5c\u7db7\u7da0\u7dd6\u7e52\u7f47\u7fa1\ufa1e\u8301\u8362\u837f\u83c7\u83f6\u8448\u84b4\u8553\u8559\u856b\ufa1f\u85b0\ufa20\ufa21\u8807\u88f5\u8a12\u8a37\u8a79\u8aa7\u8abe\u8adf\ufa22\u8af6\u8b53\u8b7f\u8cf0\u8cf4\u8d12\u8d76\ufa23\u8ecf\ufa24\ufa25\u9067\u90de\ufa26\u9115\u9127\u91da\u91d7\u91de\u91ed\u91ee\u91e4\u91e5\u9206\u9210\u920a\u923a\u9240\u923c\u924e\u9259\u9251\u9239\u9267\u92a7\u9277\u9278\u92e7\u92d7\u92d9\u92d0\ufa27\u92d5\u92e0\u92d3\u9325\u9321\u92fb\ufa28\u931e\u92ff\u931d\u9302\u9370\u9357\u93a4\u93c6\u93de\u93f8\u9431\u9445\u9448\u9592\uf9dc\ufa29\u969d\u96af\u9733\u973b\u9743\u974d\u974f\u9751\u9755\u9857\u9865\ufa2a\ufa2b\u9927\ufa2c\u999e\u9a4e\u9ad9"],["fc40","\u9adc\u9b75\u9b72\u9b8f\u9bb1\u9bbb\u9c00\u9d70\u9d6b\ufa2d\u9e19\u9ed1"]]')},function(g){g.exports=JSON.parse('[["0","\\u0000",127],["8ea1","\uff61",62],["a1a1","\u3000\u3001\u3002\uff0c\uff0e\u30fb\uff1a\uff1b\uff1f\uff01\u309b\u309c\xb4\uff40\xa8\uff3e\uffe3\uff3f\u30fd\u30fe\u309d\u309e\u3003\u4edd\u3005\u3006\u3007\u30fc\u2015\u2010\uff0f\uff3c\uff5e\u2225\uff5c\u2026\u2025\u2018\u2019\u201c\u201d\uff08\uff09\u3014\u3015\uff3b\uff3d\uff5b\uff5d\u3008",9,"\uff0b\uff0d\xb1\xd7\xf7\uff1d\u2260\uff1c\uff1e\u2266\u2267\u221e\u2234\u2642\u2640\xb0\u2032\u2033\u2103\uffe5\uff04\uffe0\uffe1\uff05\uff03\uff06\uff0a\uff20\xa7\u2606\u2605\u25cb\u25cf\u25ce\u25c7"],["a2a1","\u25c6\u25a1\u25a0\u25b3\u25b2\u25bd\u25bc\u203b\u3012\u2192\u2190\u2191\u2193\u3013"],["a2ba","\u2208\u220b\u2286\u2287\u2282\u2283\u222a\u2229"],["a2ca","\u2227\u2228\uffe2\u21d2\u21d4\u2200\u2203"],["a2dc","\u2220\u22a5\u2312\u2202\u2207\u2261\u2252\u226a\u226b\u221a\u223d\u221d\u2235\u222b\u222c"],["a2f2","\u212b\u2030\u266f\u266d\u266a\u2020\u2021\xb6"],["a2fe","\u25ef"],["a3b0","\uff10",9],["a3c1","\uff21",25],["a3e1","\uff41",25],["a4a1","\u3041",82],["a5a1","\u30a1",85],["a6a1","\u0391",16,"\u03a3",6],["a6c1","\u03b1",16,"\u03c3",6],["a7a1","\u0410",5,"\u0401\u0416",25],["a7d1","\u0430",5,"\u0451\u0436",25],["a8a1","\u2500\u2502\u250c\u2510\u2518\u2514\u251c\u252c\u2524\u2534\u253c\u2501\u2503\u250f\u2513\u251b\u2517\u2523\u2533\u252b\u253b\u254b\u2520\u252f\u2528\u2537\u253f\u251d\u2530\u2525\u2538\u2542"],["ada1","\u2460",19,"\u2160",9],["adc0","\u3349\u3314\u3322\u334d\u3318\u3327\u3303\u3336\u3351\u3357\u330d\u3326\u3323\u332b\u334a\u333b\u339c\u339d\u339e\u338e\u338f\u33c4\u33a1"],["addf","\u337b\u301d\u301f\u2116\u33cd\u2121\u32a4",4,"\u3231\u3232\u3239\u337e\u337d\u337c\u2252\u2261\u222b\u222e\u2211\u221a\u22a5\u2220\u221f\u22bf\u2235\u2229\u222a"],["b0a1","\u4e9c\u5516\u5a03\u963f\u54c0\u611b\u6328\u59f6\u9022\u8475\u831c\u7a50\u60aa\u63e1\u6e25\u65ed\u8466\u82a6\u9bf5\u6893\u5727\u65a1\u6271\u5b9b\u59d0\u867b\u98f4\u7d62\u7dbe\u9b8e\u6216\u7c9f\u88b7\u5b89\u5eb5\u6309\u6697\u6848\u95c7\u978d\u674f\u4ee5\u4f0a\u4f4d\u4f9d\u5049\u56f2\u5937\u59d4\u5a01\u5c09\u60df\u610f\u6170\u6613\u6905\u70ba\u754f\u7570\u79fb\u7dad\u7def\u80c3\u840e\u8863\u8b02\u9055\u907a\u533b\u4e95\u4ea5\u57df\u80b2\u90c1\u78ef\u4e00\u58f1\u6ea2\u9038\u7a32\u8328\u828b\u9c2f\u5141\u5370\u54bd\u54e1\u56e0\u59fb\u5f15\u98f2\u6deb\u80e4\u852d"],["b1a1","\u9662\u9670\u96a0\u97fb\u540b\u53f3\u5b87\u70cf\u7fbd\u8fc2\u96e8\u536f\u9d5c\u7aba\u4e11\u7893\u81fc\u6e26\u5618\u5504\u6b1d\u851a\u9c3b\u59e5\u53a9\u6d66\u74dc\u958f\u5642\u4e91\u904b\u96f2\u834f\u990c\u53e1\u55b6\u5b30\u5f71\u6620\u66f3\u6804\u6c38\u6cf3\u6d29\u745b\u76c8\u7a4e\u9834\u82f1\u885b\u8a60\u92ed\u6db2\u75ab\u76ca\u99c5\u60a6\u8b01\u8d8a\u95b2\u698e\u53ad\u5186\u5712\u5830\u5944\u5bb4\u5ef6\u6028\u63a9\u63f4\u6cbf\u6f14\u708e\u7114\u7159\u71d5\u733f\u7e01\u8276\u82d1\u8597\u9060\u925b\u9d1b\u5869\u65bc\u6c5a\u7525\u51f9\u592e\u5965\u5f80\u5fdc"],["b2a1","\u62bc\u65fa\u6a2a\u6b27\u6bb4\u738b\u7fc1\u8956\u9d2c\u9d0e\u9ec4\u5ca1\u6c96\u837b\u5104\u5c4b\u61b6\u81c6\u6876\u7261\u4e59\u4ffa\u5378\u6069\u6e29\u7a4f\u97f3\u4e0b\u5316\u4eee\u4f55\u4f3d\u4fa1\u4f73\u52a0\u53ef\u5609\u590f\u5ac1\u5bb6\u5be1\u79d1\u6687\u679c\u67b6\u6b4c\u6cb3\u706b\u73c2\u798d\u79be\u7a3c\u7b87\u82b1\u82db\u8304\u8377\u83ef\u83d3\u8766\u8ab2\u5629\u8ca8\u8fe6\u904e\u971e\u868a\u4fc4\u5ce8\u6211\u7259\u753b\u81e5\u82bd\u86fe\u8cc0\u96c5\u9913\u99d5\u4ecb\u4f1a\u89e3\u56de\u584a\u58ca\u5efb\u5feb\u602a\u6094\u6062\u61d0\u6212\u62d0\u6539"],["b3a1","\u9b41\u6666\u68b0\u6d77\u7070\u754c\u7686\u7d75\u82a5\u87f9\u958b\u968e\u8c9d\u51f1\u52be\u5916\u54b3\u5bb3\u5d16\u6168\u6982\u6daf\u788d\u84cb\u8857\u8a72\u93a7\u9ab8\u6d6c\u99a8\u86d9\u57a3\u67ff\u86ce\u920e\u5283\u5687\u5404\u5ed3\u62e1\u64b9\u683c\u6838\u6bbb\u7372\u78ba\u7a6b\u899a\u89d2\u8d6b\u8f03\u90ed\u95a3\u9694\u9769\u5b66\u5cb3\u697d\u984d\u984e\u639b\u7b20\u6a2b\u6a7f\u68b6\u9c0d\u6f5f\u5272\u559d\u6070\u62ec\u6d3b\u6e07\u6ed1\u845b\u8910\u8f44\u4e14\u9c39\u53f6\u691b\u6a3a\u9784\u682a\u515c\u7ac3\u84b2\u91dc\u938c\u565b\u9d28\u6822\u8305\u8431"],["b4a1","\u7ca5\u5208\u82c5\u74e6\u4e7e\u4f83\u51a0\u5bd2\u520a\u52d8\u52e7\u5dfb\u559a\u582a\u59e6\u5b8c\u5b98\u5bdb\u5e72\u5e79\u60a3\u611f\u6163\u61be\u63db\u6562\u67d1\u6853\u68fa\u6b3e\u6b53\u6c57\u6f22\u6f97\u6f45\u74b0\u7518\u76e3\u770b\u7aff\u7ba1\u7c21\u7de9\u7f36\u7ff0\u809d\u8266\u839e\u89b3\u8acc\u8cab\u9084\u9451\u9593\u9591\u95a2\u9665\u97d3\u9928\u8218\u4e38\u542b\u5cb8\u5dcc\u73a9\u764c\u773c\u5ca9\u7feb\u8d0b\u96c1\u9811\u9854\u9858\u4f01\u4f0e\u5371\u559c\u5668\u57fa\u5947\u5b09\u5bc4\u5c90\u5e0c\u5e7e\u5fcc\u63ee\u673a\u65d7\u65e2\u671f\u68cb\u68c4"],["b5a1","\u6a5f\u5e30\u6bc5\u6c17\u6c7d\u757f\u7948\u5b63\u7a00\u7d00\u5fbd\u898f\u8a18\u8cb4\u8d77\u8ecc\u8f1d\u98e2\u9a0e\u9b3c\u4e80\u507d\u5100\u5993\u5b9c\u622f\u6280\u64ec\u6b3a\u72a0\u7591\u7947\u7fa9\u87fb\u8abc\u8b70\u63ac\u83ca\u97a0\u5409\u5403\u55ab\u6854\u6a58\u8a70\u7827\u6775\u9ecd\u5374\u5ba2\u811a\u8650\u9006\u4e18\u4e45\u4ec7\u4f11\u53ca\u5438\u5bae\u5f13\u6025\u6551\u673d\u6c42\u6c72\u6ce3\u7078\u7403\u7a76\u7aae\u7b08\u7d1a\u7cfe\u7d66\u65e7\u725b\u53bb\u5c45\u5de8\u62d2\u62e0\u6319\u6e20\u865a\u8a31\u8ddd\u92f8\u6f01\u79a6\u9b5a\u4ea8\u4eab\u4eac"],["b6a1","\u4f9b\u4fa0\u50d1\u5147\u7af6\u5171\u51f6\u5354\u5321\u537f\u53eb\u55ac\u5883\u5ce1\u5f37\u5f4a\u602f\u6050\u606d\u631f\u6559\u6a4b\u6cc1\u72c2\u72ed\u77ef\u80f8\u8105\u8208\u854e\u90f7\u93e1\u97ff\u9957\u9a5a\u4ef0\u51dd\u5c2d\u6681\u696d\u5c40\u66f2\u6975\u7389\u6850\u7c81\u50c5\u52e4\u5747\u5dfe\u9326\u65a4\u6b23\u6b3d\u7434\u7981\u79bd\u7b4b\u7dca\u82b9\u83cc\u887f\u895f\u8b39\u8fd1\u91d1\u541f\u9280\u4e5d\u5036\u53e5\u533a\u72d7\u7396\u77e9\u82e6\u8eaf\u99c6\u99c8\u99d2\u5177\u611a\u865e\u55b0\u7a7a\u5076\u5bd3\u9047\u9685\u4e32\u6adb\u91e7\u5c51\u5c48"],["b7a1","\u6398\u7a9f\u6c93\u9774\u8f61\u7aaa\u718a\u9688\u7c82\u6817\u7e70\u6851\u936c\u52f2\u541b\u85ab\u8a13\u7fa4\u8ecd\u90e1\u5366\u8888\u7941\u4fc2\u50be\u5211\u5144\u5553\u572d\u73ea\u578b\u5951\u5f62\u5f84\u6075\u6176\u6167\u61a9\u63b2\u643a\u656c\u666f\u6842\u6e13\u7566\u7a3d\u7cfb\u7d4c\u7d99\u7e4b\u7f6b\u830e\u834a\u86cd\u8a08\u8a63\u8b66\u8efd\u981a\u9d8f\u82b8\u8fce\u9be8\u5287\u621f\u6483\u6fc0\u9699\u6841\u5091\u6b20\u6c7a\u6f54\u7a74\u7d50\u8840\u8a23\u6708\u4ef6\u5039\u5026\u5065\u517c\u5238\u5263\u55a7\u570f\u5805\u5acc\u5efa\u61b2\u61f8\u62f3\u6372"],["b8a1","\u691c\u6a29\u727d\u72ac\u732e\u7814\u786f\u7d79\u770c\u80a9\u898b\u8b19\u8ce2\u8ed2\u9063\u9375\u967a\u9855\u9a13\u9e78\u5143\u539f\u53b3\u5e7b\u5f26\u6e1b\u6e90\u7384\u73fe\u7d43\u8237\u8a00\u8afa\u9650\u4e4e\u500b\u53e4\u547c\u56fa\u59d1\u5b64\u5df1\u5eab\u5f27\u6238\u6545\u67af\u6e56\u72d0\u7cca\u88b4\u80a1\u80e1\u83f0\u864e\u8a87\u8de8\u9237\u96c7\u9867\u9f13\u4e94\u4e92\u4f0d\u5348\u5449\u543e\u5a2f\u5f8c\u5fa1\u609f\u68a7\u6a8e\u745a\u7881\u8a9e\u8aa4\u8b77\u9190\u4e5e\u9bc9\u4ea4\u4f7c\u4faf\u5019\u5016\u5149\u516c\u529f\u52b9\u52fe\u539a\u53e3\u5411"],["b9a1","\u540e\u5589\u5751\u57a2\u597d\u5b54\u5b5d\u5b8f\u5de5\u5de7\u5df7\u5e78\u5e83\u5e9a\u5eb7\u5f18\u6052\u614c\u6297\u62d8\u63a7\u653b\u6602\u6643\u66f4\u676d\u6821\u6897\u69cb\u6c5f\u6d2a\u6d69\u6e2f\u6e9d\u7532\u7687\u786c\u7a3f\u7ce0\u7d05\u7d18\u7d5e\u7db1\u8015\u8003\u80af\u80b1\u8154\u818f\u822a\u8352\u884c\u8861\u8b1b\u8ca2\u8cfc\u90ca\u9175\u9271\u783f\u92fc\u95a4\u964d\u9805\u9999\u9ad8\u9d3b\u525b\u52ab\u53f7\u5408\u58d5\u62f7\u6fe0\u8c6a\u8f5f\u9eb9\u514b\u523b\u544a\u56fd\u7a40\u9177\u9d60\u9ed2\u7344\u6f09\u8170\u7511\u5ffd\u60da\u9aa8\u72db\u8fbc"],["baa1","\u6b64\u9803\u4eca\u56f0\u5764\u58be\u5a5a\u6068\u61c7\u660f\u6606\u6839\u68b1\u6df7\u75d5\u7d3a\u826e\u9b42\u4e9b\u4f50\u53c9\u5506\u5d6f\u5de6\u5dee\u67fb\u6c99\u7473\u7802\u8a50\u9396\u88df\u5750\u5ea7\u632b\u50b5\u50ac\u518d\u6700\u54c9\u585e\u59bb\u5bb0\u5f69\u624d\u63a1\u683d\u6b73\u6e08\u707d\u91c7\u7280\u7815\u7826\u796d\u658e\u7d30\u83dc\u88c1\u8f09\u969b\u5264\u5728\u6750\u7f6a\u8ca1\u51b4\u5742\u962a\u583a\u698a\u80b4\u54b2\u5d0e\u57fc\u7895\u9dfa\u4f5c\u524a\u548b\u643e\u6628\u6714\u67f5\u7a84\u7b56\u7d22\u932f\u685c\u9bad\u7b39\u5319\u518a\u5237"],["bba1","\u5bdf\u62f6\u64ae\u64e6\u672d\u6bba\u85a9\u96d1\u7690\u9bd6\u634c\u9306\u9bab\u76bf\u6652\u4e09\u5098\u53c2\u5c71\u60e8\u6492\u6563\u685f\u71e6\u73ca\u7523\u7b97\u7e82\u8695\u8b83\u8cdb\u9178\u9910\u65ac\u66ab\u6b8b\u4ed5\u4ed4\u4f3a\u4f7f\u523a\u53f8\u53f2\u55e3\u56db\u58eb\u59cb\u59c9\u59ff\u5b50\u5c4d\u5e02\u5e2b\u5fd7\u601d\u6307\u652f\u5b5c\u65af\u65bd\u65e8\u679d\u6b62\u6b7b\u6c0f\u7345\u7949\u79c1\u7cf8\u7d19\u7d2b\u80a2\u8102\u81f3\u8996\u8a5e\u8a69\u8a66\u8a8c\u8aee\u8cc7\u8cdc\u96cc\u98fc\u6b6f\u4e8b\u4f3c\u4f8d\u5150\u5b57\u5bfa\u6148\u6301\u6642"],["bca1","\u6b21\u6ecb\u6cbb\u723e\u74bd\u75d4\u78c1\u793a\u800c\u8033\u81ea\u8494\u8f9e\u6c50\u9e7f\u5f0f\u8b58\u9d2b\u7afa\u8ef8\u5b8d\u96eb\u4e03\u53f1\u57f7\u5931\u5ac9\u5ba4\u6089\u6e7f\u6f06\u75be\u8cea\u5b9f\u8500\u7be0\u5072\u67f4\u829d\u5c61\u854a\u7e1e\u820e\u5199\u5c04\u6368\u8d66\u659c\u716e\u793e\u7d17\u8005\u8b1d\u8eca\u906e\u86c7\u90aa\u501f\u52fa\u5c3a\u6753\u707c\u7235\u914c\u91c8\u932b\u82e5\u5bc2\u5f31\u60f9\u4e3b\u53d6\u5b88\u624b\u6731\u6b8a\u72e9\u73e0\u7a2e\u816b\u8da3\u9152\u9996\u5112\u53d7\u546a\u5bff\u6388\u6a39\u7dac\u9700\u56da\u53ce\u5468"],["bda1","\u5b97\u5c31\u5dde\u4fee\u6101\u62fe\u6d32\u79c0\u79cb\u7d42\u7e4d\u7fd2\u81ed\u821f\u8490\u8846\u8972\u8b90\u8e74\u8f2f\u9031\u914b\u916c\u96c6\u919c\u4ec0\u4f4f\u5145\u5341\u5f93\u620e\u67d4\u6c41\u6e0b\u7363\u7e26\u91cd\u9283\u53d4\u5919\u5bbf\u6dd1\u795d\u7e2e\u7c9b\u587e\u719f\u51fa\u8853\u8ff0\u4fca\u5cfb\u6625\u77ac\u7ae3\u821c\u99ff\u51c6\u5faa\u65ec\u696f\u6b89\u6df3\u6e96\u6f64\u76fe\u7d14\u5de1\u9075\u9187\u9806\u51e6\u521d\u6240\u6691\u66d9\u6e1a\u5eb6\u7dd2\u7f72\u66f8\u85af\u85f7\u8af8\u52a9\u53d9\u5973\u5e8f\u5f90\u6055\u92e4\u9664\u50b7\u511f"],["bea1","\u52dd\u5320\u5347\u53ec\u54e8\u5546\u5531\u5617\u5968\u59be\u5a3c\u5bb5\u5c06\u5c0f\u5c11\u5c1a\u5e84\u5e8a\u5ee0\u5f70\u627f\u6284\u62db\u638c\u6377\u6607\u660c\u662d\u6676\u677e\u68a2\u6a1f\u6a35\u6cbc\u6d88\u6e09\u6e58\u713c\u7126\u7167\u75c7\u7701\u785d\u7901\u7965\u79f0\u7ae0\u7b11\u7ca7\u7d39\u8096\u83d6\u848b\u8549\u885d\u88f3\u8a1f\u8a3c\u8a54\u8a73\u8c61\u8cde\u91a4\u9266\u937e\u9418\u969c\u9798\u4e0a\u4e08\u4e1e\u4e57\u5197\u5270\u57ce\u5834\u58cc\u5b22\u5e38\u60c5\u64fe\u6761\u6756\u6d44\u72b6\u7573\u7a63\u84b8\u8b72\u91b8\u9320\u5631\u57f4\u98fe"],["bfa1","\u62ed\u690d\u6b96\u71ed\u7e54\u8077\u8272\u89e6\u98df\u8755\u8fb1\u5c3b\u4f38\u4fe1\u4fb5\u5507\u5a20\u5bdd\u5be9\u5fc3\u614e\u632f\u65b0\u664b\u68ee\u699b\u6d78\u6df1\u7533\u75b9\u771f\u795e\u79e6\u7d33\u81e3\u82af\u85aa\u89aa\u8a3a\u8eab\u8f9b\u9032\u91dd\u9707\u4eba\u4ec1\u5203\u5875\u58ec\u5c0b\u751a\u5c3d\u814e\u8a0a\u8fc5\u9663\u976d\u7b25\u8acf\u9808\u9162\u56f3\u53a8\u9017\u5439\u5782\u5e25\u63a8\u6c34\u708a\u7761\u7c8b\u7fe0\u8870\u9042\u9154\u9310\u9318\u968f\u745e\u9ac4\u5d07\u5d69\u6570\u67a2\u8da8\u96db\u636e\u6749\u6919\u83c5\u9817\u96c0\u88fe"],["c0a1","\u6f84\u647a\u5bf8\u4e16\u702c\u755d\u662f\u51c4\u5236\u52e2\u59d3\u5f81\u6027\u6210\u653f\u6574\u661f\u6674\u68f2\u6816\u6b63\u6e05\u7272\u751f\u76db\u7cbe\u8056\u58f0\u88fd\u897f\u8aa0\u8a93\u8acb\u901d\u9192\u9752\u9759\u6589\u7a0e\u8106\u96bb\u5e2d\u60dc\u621a\u65a5\u6614\u6790\u77f3\u7a4d\u7c4d\u7e3e\u810a\u8cac\u8d64\u8de1\u8e5f\u78a9\u5207\u62d9\u63a5\u6442\u6298\u8a2d\u7a83\u7bc0\u8aac\u96ea\u7d76\u820c\u8749\u4ed9\u5148\u5343\u5360\u5ba3\u5c02\u5c16\u5ddd\u6226\u6247\u64b0\u6813\u6834\u6cc9\u6d45\u6d17\u67d3\u6f5c\u714e\u717d\u65cb\u7a7f\u7bad\u7dda"],["c1a1","\u7e4a\u7fa8\u817a\u821b\u8239\u85a6\u8a6e\u8cce\u8df5\u9078\u9077\u92ad\u9291\u9583\u9bae\u524d\u5584\u6f38\u7136\u5168\u7985\u7e55\u81b3\u7cce\u564c\u5851\u5ca8\u63aa\u66fe\u66fd\u695a\u72d9\u758f\u758e\u790e\u7956\u79df\u7c97\u7d20\u7d44\u8607\u8a34\u963b\u9061\u9f20\u50e7\u5275\u53cc\u53e2\u5009\u55aa\u58ee\u594f\u723d\u5b8b\u5c64\u531d\u60e3\u60f3\u635c\u6383\u633f\u63bb\u64cd\u65e9\u66f9\u5de3\u69cd\u69fd\u6f15\u71e5\u4e89\u75e9\u76f8\u7a93\u7cdf\u7dcf\u7d9c\u8061\u8349\u8358\u846c\u84bc\u85fb\u88c5\u8d70\u9001\u906d\u9397\u971c\u9a12\u50cf\u5897\u618e"],["c2a1","\u81d3\u8535\u8d08\u9020\u4fc3\u5074\u5247\u5373\u606f\u6349\u675f\u6e2c\u8db3\u901f\u4fd7\u5c5e\u8cca\u65cf\u7d9a\u5352\u8896\u5176\u63c3\u5b58\u5b6b\u5c0a\u640d\u6751\u905c\u4ed6\u591a\u592a\u6c70\u8a51\u553e\u5815\u59a5\u60f0\u6253\u67c1\u8235\u6955\u9640\u99c4\u9a28\u4f53\u5806\u5bfe\u8010\u5cb1\u5e2f\u5f85\u6020\u614b\u6234\u66ff\u6cf0\u6ede\u80ce\u817f\u82d4\u888b\u8cb8\u9000\u902e\u968a\u9edb\u9bdb\u4ee3\u53f0\u5927\u7b2c\u918d\u984c\u9df9\u6edd\u7027\u5353\u5544\u5b85\u6258\u629e\u62d3\u6ca2\u6fef\u7422\u8a17\u9438\u6fc1\u8afe\u8338\u51e7\u86f8\u53ea"],["c3a1","\u53e9\u4f46\u9054\u8fb0\u596a\u8131\u5dfd\u7aea\u8fbf\u68da\u8c37\u72f8\u9c48\u6a3d\u8ab0\u4e39\u5358\u5606\u5766\u62c5\u63a2\u65e6\u6b4e\u6de1\u6e5b\u70ad\u77ed\u7aef\u7baa\u7dbb\u803d\u80c6\u86cb\u8a95\u935b\u56e3\u58c7\u5f3e\u65ad\u6696\u6a80\u6bb5\u7537\u8ac7\u5024\u77e5\u5730\u5f1b\u6065\u667a\u6c60\u75f4\u7a1a\u7f6e\u81f4\u8718\u9045\u99b3\u7bc9\u755c\u7af9\u7b51\u84c4\u9010\u79e9\u7a92\u8336\u5ae1\u7740\u4e2d\u4ef2\u5b99\u5fe0\u62bd\u663c\u67f1\u6ce8\u866b\u8877\u8a3b\u914e\u92f3\u99d0\u6a17\u7026\u732a\u82e7\u8457\u8caf\u4e01\u5146\u51cb\u558b\u5bf5"],["c4a1","\u5e16\u5e33\u5e81\u5f14\u5f35\u5f6b\u5fb4\u61f2\u6311\u66a2\u671d\u6f6e\u7252\u753a\u773a\u8074\u8139\u8178\u8776\u8abf\u8adc\u8d85\u8df3\u929a\u9577\u9802\u9ce5\u52c5\u6357\u76f4\u6715\u6c88\u73cd\u8cc3\u93ae\u9673\u6d25\u589c\u690e\u69cc\u8ffd\u939a\u75db\u901a\u585a\u6802\u63b4\u69fb\u4f43\u6f2c\u67d8\u8fbb\u8526\u7db4\u9354\u693f\u6f70\u576a\u58f7\u5b2c\u7d2c\u722a\u540a\u91e3\u9db4\u4ead\u4f4e\u505c\u5075\u5243\u8c9e\u5448\u5824\u5b9a\u5e1d\u5e95\u5ead\u5ef7\u5f1f\u608c\u62b5\u633a\u63d0\u68af\u6c40\u7887\u798e\u7a0b\u7de0\u8247\u8a02\u8ae6\u8e44\u9013"],["c5a1","\u90b8\u912d\u91d8\u9f0e\u6ce5\u6458\u64e2\u6575\u6ef4\u7684\u7b1b\u9069\u93d1\u6eba\u54f2\u5fb9\u64a4\u8f4d\u8fed\u9244\u5178\u586b\u5929\u5c55\u5e97\u6dfb\u7e8f\u751c\u8cbc\u8ee2\u985b\u70b9\u4f1d\u6bbf\u6fb1\u7530\u96fb\u514e\u5410\u5835\u5857\u59ac\u5c60\u5f92\u6597\u675c\u6e21\u767b\u83df\u8ced\u9014\u90fd\u934d\u7825\u783a\u52aa\u5ea6\u571f\u5974\u6012\u5012\u515a\u51ac\u51cd\u5200\u5510\u5854\u5858\u5957\u5b95\u5cf6\u5d8b\u60bc\u6295\u642d\u6771\u6843\u68bc\u68df\u76d7\u6dd8\u6e6f\u6d9b\u706f\u71c8\u5f53\u75d8\u7977\u7b49\u7b54\u7b52\u7cd6\u7d71\u5230"],["c6a1","\u8463\u8569\u85e4\u8a0e\u8b04\u8c46\u8e0f\u9003\u900f\u9419\u9676\u982d\u9a30\u95d8\u50cd\u52d5\u540c\u5802\u5c0e\u61a7\u649e\u6d1e\u77b3\u7ae5\u80f4\u8404\u9053\u9285\u5ce0\u9d07\u533f\u5f97\u5fb3\u6d9c\u7279\u7763\u79bf\u7be4\u6bd2\u72ec\u8aad\u6803\u6a61\u51f8\u7a81\u6934\u5c4a\u9cf6\u82eb\u5bc5\u9149\u701e\u5678\u5c6f\u60c7\u6566\u6c8c\u8c5a\u9041\u9813\u5451\u66c7\u920d\u5948\u90a3\u5185\u4e4d\u51ea\u8599\u8b0e\u7058\u637a\u934b\u6962\u99b4\u7e04\u7577\u5357\u6960\u8edf\u96e3\u6c5d\u4e8c\u5c3c\u5f10\u8fe9\u5302\u8cd1\u8089\u8679\u5eff\u65e5\u4e73\u5165"],["c7a1","\u5982\u5c3f\u97ee\u4efb\u598a\u5fcd\u8a8d\u6fe1\u79b0\u7962\u5be7\u8471\u732b\u71b1\u5e74\u5ff5\u637b\u649a\u71c3\u7c98\u4e43\u5efc\u4e4b\u57dc\u56a2\u60a9\u6fc3\u7d0d\u80fd\u8133\u81bf\u8fb2\u8997\u86a4\u5df4\u628a\u64ad\u8987\u6777\u6ce2\u6d3e\u7436\u7834\u5a46\u7f75\u82ad\u99ac\u4ff3\u5ec3\u62dd\u6392\u6557\u676f\u76c3\u724c\u80cc\u80ba\u8f29\u914d\u500d\u57f9\u5a92\u6885\u6973\u7164\u72fd\u8cb7\u58f2\u8ce0\u966a\u9019\u877f\u79e4\u77e7\u8429\u4f2f\u5265\u535a\u62cd\u67cf\u6cca\u767d\u7b94\u7c95\u8236\u8584\u8feb\u66dd\u6f20\u7206\u7e1b\u83ab\u99c1\u9ea6"],["c8a1","\u51fd\u7bb1\u7872\u7bb8\u8087\u7b48\u6ae8\u5e61\u808c\u7551\u7560\u516b\u9262\u6e8c\u767a\u9197\u9aea\u4f10\u7f70\u629c\u7b4f\u95a5\u9ce9\u567a\u5859\u86e4\u96bc\u4f34\u5224\u534a\u53cd\u53db\u5e06\u642c\u6591\u677f\u6c3e\u6c4e\u7248\u72af\u73ed\u7554\u7e41\u822c\u85e9\u8ca9\u7bc4\u91c6\u7169\u9812\u98ef\u633d\u6669\u756a\u76e4\u78d0\u8543\u86ee\u532a\u5351\u5426\u5983\u5e87\u5f7c\u60b2\u6249\u6279\u62ab\u6590\u6bd4\u6ccc\u75b2\u76ae\u7891\u79d8\u7dcb\u7f77\u80a5\u88ab\u8ab9\u8cbb\u907f\u975e\u98db\u6a0b\u7c38\u5099\u5c3e\u5fae\u6787\u6bd8\u7435\u7709\u7f8e"],["c9a1","\u9f3b\u67ca\u7a17\u5339\u758b\u9aed\u5f66\u819d\u83f1\u8098\u5f3c\u5fc5\u7562\u7b46\u903c\u6867\u59eb\u5a9b\u7d10\u767e\u8b2c\u4ff5\u5f6a\u6a19\u6c37\u6f02\u74e2\u7968\u8868\u8a55\u8c79\u5edf\u63cf\u75c5\u79d2\u82d7\u9328\u92f2\u849c\u86ed\u9c2d\u54c1\u5f6c\u658c\u6d5c\u7015\u8ca7\u8cd3\u983b\u654f\u74f6\u4e0d\u4ed8\u57e0\u592b\u5a66\u5bcc\u51a8\u5e03\u5e9c\u6016\u6276\u6577\u65a7\u666e\u6d6e\u7236\u7b26\u8150\u819a\u8299\u8b5c\u8ca0\u8ce6\u8d74\u961c\u9644\u4fae\u64ab\u6b66\u821e\u8461\u856a\u90e8\u5c01\u6953\u98a8\u847a\u8557\u4f0f\u526f\u5fa9\u5e45\u670d"],["caa1","\u798f\u8179\u8907\u8986\u6df5\u5f17\u6255\u6cb8\u4ecf\u7269\u9b92\u5206\u543b\u5674\u58b3\u61a4\u626e\u711a\u596e\u7c89\u7cde\u7d1b\u96f0\u6587\u805e\u4e19\u4f75\u5175\u5840\u5e63\u5e73\u5f0a\u67c4\u4e26\u853d\u9589\u965b\u7c73\u9801\u50fb\u58c1\u7656\u78a7\u5225\u77a5\u8511\u7b86\u504f\u5909\u7247\u7bc7\u7de8\u8fba\u8fd4\u904d\u4fbf\u52c9\u5a29\u5f01\u97ad\u4fdd\u8217\u92ea\u5703\u6355\u6b69\u752b\u88dc\u8f14\u7a42\u52df\u5893\u6155\u620a\u66ae\u6bcd\u7c3f\u83e9\u5023\u4ff8\u5305\u5446\u5831\u5949\u5b9d\u5cf0\u5cef\u5d29\u5e96\u62b1\u6367\u653e\u65b9\u670b"],["cba1","\u6cd5\u6ce1\u70f9\u7832\u7e2b\u80de\u82b3\u840c\u84ec\u8702\u8912\u8a2a\u8c4a\u90a6\u92d2\u98fd\u9cf3\u9d6c\u4e4f\u4ea1\u508d\u5256\u574a\u59a8\u5e3d\u5fd8\u5fd9\u623f\u66b4\u671b\u67d0\u68d2\u5192\u7d21\u80aa\u81a8\u8b00\u8c8c\u8cbf\u927e\u9632\u5420\u982c\u5317\u50d5\u535c\u58a8\u64b2\u6734\u7267\u7766\u7a46\u91e6\u52c3\u6ca1\u6b86\u5800\u5e4c\u5954\u672c\u7ffb\u51e1\u76c6\u6469\u78e8\u9b54\u9ebb\u57cb\u59b9\u6627\u679a\u6bce\u54e9\u69d9\u5e55\u819c\u6795\u9baa\u67fe\u9c52\u685d\u4ea6\u4fe3\u53c8\u62b9\u672b\u6cab\u8fc4\u4fad\u7e6d\u9ebf\u4e07\u6162\u6e80"],["cca1","\u6f2b\u8513\u5473\u672a\u9b45\u5df3\u7b95\u5cac\u5bc6\u871c\u6e4a\u84d1\u7a14\u8108\u5999\u7c8d\u6c11\u7720\u52d9\u5922\u7121\u725f\u77db\u9727\u9d61\u690b\u5a7f\u5a18\u51a5\u540d\u547d\u660e\u76df\u8ff7\u9298\u9cf4\u59ea\u725d\u6ec5\u514d\u68c9\u7dbf\u7dec\u9762\u9eba\u6478\u6a21\u8302\u5984\u5b5f\u6bdb\u731b\u76f2\u7db2\u8017\u8499\u5132\u6728\u9ed9\u76ee\u6762\u52ff\u9905\u5c24\u623b\u7c7e\u8cb0\u554f\u60b6\u7d0b\u9580\u5301\u4e5f\u51b6\u591c\u723a\u8036\u91ce\u5f25\u77e2\u5384\u5f79\u7d04\u85ac\u8a33\u8e8d\u9756\u67f3\u85ae\u9453\u6109\u6108\u6cb9\u7652"],["cda1","\u8aed\u8f38\u552f\u4f51\u512a\u52c7\u53cb\u5ba5\u5e7d\u60a0\u6182\u63d6\u6709\u67da\u6e67\u6d8c\u7336\u7337\u7531\u7950\u88d5\u8a98\u904a\u9091\u90f5\u96c4\u878d\u5915\u4e88\u4f59\u4e0e\u8a89\u8f3f\u9810\u50ad\u5e7c\u5996\u5bb9\u5eb8\u63da\u63fa\u64c1\u66dc\u694a\u69d8\u6d0b\u6eb6\u7194\u7528\u7aaf\u7f8a\u8000\u8449\u84c9\u8981\u8b21\u8e0a\u9065\u967d\u990a\u617e\u6291\u6b32\u6c83\u6d74\u7fcc\u7ffc\u6dc0\u7f85\u87ba\u88f8\u6765\u83b1\u983c\u96f7\u6d1b\u7d61\u843d\u916a\u4e71\u5375\u5d50\u6b04\u6feb\u85cd\u862d\u89a7\u5229\u540f\u5c65\u674e\u68a8\u7406\u7483"],["cea1","\u75e2\u88cf\u88e1\u91cc\u96e2\u9678\u5f8b\u7387\u7acb\u844e\u63a0\u7565\u5289\u6d41\u6e9c\u7409\u7559\u786b\u7c92\u9686\u7adc\u9f8d\u4fb6\u616e\u65c5\u865c\u4e86\u4eae\u50da\u4e21\u51cc\u5bee\u6599\u6881\u6dbc\u731f\u7642\u77ad\u7a1c\u7ce7\u826f\u8ad2\u907c\u91cf\u9675\u9818\u529b\u7dd1\u502b\u5398\u6797\u6dcb\u71d0\u7433\u81e8\u8f2a\u96a3\u9c57\u9e9f\u7460\u5841\u6d99\u7d2f\u985e\u4ee4\u4f36\u4f8b\u51b7\u52b1\u5dba\u601c\u73b2\u793c\u82d3\u9234\u96b7\u96f6\u970a\u9e97\u9f62\u66a6\u6b74\u5217\u52a3\u70c8\u88c2\u5ec9\u604b\u6190\u6f23\u7149\u7c3e\u7df4\u806f"],["cfa1","\u84ee\u9023\u932c\u5442\u9b6f\u6ad3\u7089\u8cc2\u8def\u9732\u52b4\u5a41\u5eca\u5f04\u6717\u697c\u6994\u6d6a\u6f0f\u7262\u72fc\u7bed\u8001\u807e\u874b\u90ce\u516d\u9e93\u7984\u808b\u9332\u8ad6\u502d\u548c\u8a71\u6b6a\u8cc4\u8107\u60d1\u67a0\u9df2\u4e99\u4e98\u9c10\u8a6b\u85c1\u8568\u6900\u6e7e\u7897\u8155"],["d0a1","\u5f0c\u4e10\u4e15\u4e2a\u4e31\u4e36\u4e3c\u4e3f\u4e42\u4e56\u4e58\u4e82\u4e85\u8c6b\u4e8a\u8212\u5f0d\u4e8e\u4e9e\u4e9f\u4ea0\u4ea2\u4eb0\u4eb3\u4eb6\u4ece\u4ecd\u4ec4\u4ec6\u4ec2\u4ed7\u4ede\u4eed\u4edf\u4ef7\u4f09\u4f5a\u4f30\u4f5b\u4f5d\u4f57\u4f47\u4f76\u4f88\u4f8f\u4f98\u4f7b\u4f69\u4f70\u4f91\u4f6f\u4f86\u4f96\u5118\u4fd4\u4fdf\u4fce\u4fd8\u4fdb\u4fd1\u4fda\u4fd0\u4fe4\u4fe5\u501a\u5028\u5014\u502a\u5025\u5005\u4f1c\u4ff6\u5021\u5029\u502c\u4ffe\u4fef\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505a\u5056\u506c\u5078\u5080\u509a\u5085\u50b4\u50b2"],["d1a1","\u50c9\u50ca\u50b3\u50c2\u50d6\u50de\u50e5\u50ed\u50e3\u50ee\u50f9\u50f5\u5109\u5101\u5102\u5116\u5115\u5114\u511a\u5121\u513a\u5137\u513c\u513b\u513f\u5140\u5152\u514c\u5154\u5162\u7af8\u5169\u516a\u516e\u5180\u5182\u56d8\u518c\u5189\u518f\u5191\u5193\u5195\u5196\u51a4\u51a6\u51a2\u51a9\u51aa\u51ab\u51b3\u51b1\u51b2\u51b0\u51b5\u51bd\u51c5\u51c9\u51db\u51e0\u8655\u51e9\u51ed\u51f0\u51f5\u51fe\u5204\u520b\u5214\u520e\u5227\u522a\u522e\u5233\u5239\u524f\u5244\u524b\u524c\u525e\u5254\u526a\u5274\u5269\u5273\u527f\u527d\u528d\u5294\u5292\u5271\u5288\u5291\u8fa8"],["d2a1","\u8fa7\u52ac\u52ad\u52bc\u52b5\u52c1\u52cd\u52d7\u52de\u52e3\u52e6\u98ed\u52e0\u52f3\u52f5\u52f8\u52f9\u5306\u5308\u7538\u530d\u5310\u530f\u5315\u531a\u5323\u532f\u5331\u5333\u5338\u5340\u5346\u5345\u4e17\u5349\u534d\u51d6\u535e\u5369\u536e\u5918\u537b\u5377\u5382\u5396\u53a0\u53a6\u53a5\u53ae\u53b0\u53b6\u53c3\u7c12\u96d9\u53df\u66fc\u71ee\u53ee\u53e8\u53ed\u53fa\u5401\u543d\u5440\u542c\u542d\u543c\u542e\u5436\u5429\u541d\u544e\u548f\u5475\u548e\u545f\u5471\u5477\u5470\u5492\u547b\u5480\u5476\u5484\u5490\u5486\u54c7\u54a2\u54b8\u54a5\u54ac\u54c4\u54c8\u54a8"],["d3a1","\u54ab\u54c2\u54a4\u54be\u54bc\u54d8\u54e5\u54e6\u550f\u5514\u54fd\u54ee\u54ed\u54fa\u54e2\u5539\u5540\u5563\u554c\u552e\u555c\u5545\u5556\u5557\u5538\u5533\u555d\u5599\u5580\u54af\u558a\u559f\u557b\u557e\u5598\u559e\u55ae\u557c\u5583\u55a9\u5587\u55a8\u55da\u55c5\u55df\u55c4\u55dc\u55e4\u55d4\u5614\u55f7\u5616\u55fe\u55fd\u561b\u55f9\u564e\u5650\u71df\u5634\u5636\u5632\u5638\u566b\u5664\u562f\u566c\u566a\u5686\u5680\u568a\u56a0\u5694\u568f\u56a5\u56ae\u56b6\u56b4\u56c2\u56bc\u56c1\u56c3\u56c0\u56c8\u56ce\u56d1\u56d3\u56d7\u56ee\u56f9\u5700\u56ff\u5704\u5709"],["d4a1","\u5708\u570b\u570d\u5713\u5718\u5716\u55c7\u571c\u5726\u5737\u5738\u574e\u573b\u5740\u574f\u5769\u57c0\u5788\u5761\u577f\u5789\u5793\u57a0\u57b3\u57a4\u57aa\u57b0\u57c3\u57c6\u57d4\u57d2\u57d3\u580a\u57d6\u57e3\u580b\u5819\u581d\u5872\u5821\u5862\u584b\u5870\u6bc0\u5852\u583d\u5879\u5885\u58b9\u589f\u58ab\u58ba\u58de\u58bb\u58b8\u58ae\u58c5\u58d3\u58d1\u58d7\u58d9\u58d8\u58e5\u58dc\u58e4\u58df\u58ef\u58fa\u58f9\u58fb\u58fc\u58fd\u5902\u590a\u5910\u591b\u68a6\u5925\u592c\u592d\u5932\u5938\u593e\u7ad2\u5955\u5950\u594e\u595a\u5958\u5962\u5960\u5967\u596c\u5969"],["d5a1","\u5978\u5981\u599d\u4f5e\u4fab\u59a3\u59b2\u59c6\u59e8\u59dc\u598d\u59d9\u59da\u5a25\u5a1f\u5a11\u5a1c\u5a09\u5a1a\u5a40\u5a6c\u5a49\u5a35\u5a36\u5a62\u5a6a\u5a9a\u5abc\u5abe\u5acb\u5ac2\u5abd\u5ae3\u5ad7\u5ae6\u5ae9\u5ad6\u5afa\u5afb\u5b0c\u5b0b\u5b16\u5b32\u5ad0\u5b2a\u5b36\u5b3e\u5b43\u5b45\u5b40\u5b51\u5b55\u5b5a\u5b5b\u5b65\u5b69\u5b70\u5b73\u5b75\u5b78\u6588\u5b7a\u5b80\u5b83\u5ba6\u5bb8\u5bc3\u5bc7\u5bc9\u5bd4\u5bd0\u5be4\u5be6\u5be2\u5bde\u5be5\u5beb\u5bf0\u5bf6\u5bf3\u5c05\u5c07\u5c08\u5c0d\u5c13\u5c20\u5c22\u5c28\u5c38\u5c39\u5c41\u5c46\u5c4e\u5c53"],["d6a1","\u5c50\u5c4f\u5b71\u5c6c\u5c6e\u4e62\u5c76\u5c79\u5c8c\u5c91\u5c94\u599b\u5cab\u5cbb\u5cb6\u5cbc\u5cb7\u5cc5\u5cbe\u5cc7\u5cd9\u5ce9\u5cfd\u5cfa\u5ced\u5d8c\u5cea\u5d0b\u5d15\u5d17\u5d5c\u5d1f\u5d1b\u5d11\u5d14\u5d22\u5d1a\u5d19\u5d18\u5d4c\u5d52\u5d4e\u5d4b\u5d6c\u5d73\u5d76\u5d87\u5d84\u5d82\u5da2\u5d9d\u5dac\u5dae\u5dbd\u5d90\u5db7\u5dbc\u5dc9\u5dcd\u5dd3\u5dd2\u5dd6\u5ddb\u5deb\u5df2\u5df5\u5e0b\u5e1a\u5e19\u5e11\u5e1b\u5e36\u5e37\u5e44\u5e43\u5e40\u5e4e\u5e57\u5e54\u5e5f\u5e62\u5e64\u5e47\u5e75\u5e76\u5e7a\u9ebc\u5e7f\u5ea0\u5ec1\u5ec2\u5ec8\u5ed0\u5ecf"],["d7a1","\u5ed6\u5ee3\u5edd\u5eda\u5edb\u5ee2\u5ee1\u5ee8\u5ee9\u5eec\u5ef1\u5ef3\u5ef0\u5ef4\u5ef8\u5efe\u5f03\u5f09\u5f5d\u5f5c\u5f0b\u5f11\u5f16\u5f29\u5f2d\u5f38\u5f41\u5f48\u5f4c\u5f4e\u5f2f\u5f51\u5f56\u5f57\u5f59\u5f61\u5f6d\u5f73\u5f77\u5f83\u5f82\u5f7f\u5f8a\u5f88\u5f91\u5f87\u5f9e\u5f99\u5f98\u5fa0\u5fa8\u5fad\u5fbc\u5fd6\u5ffb\u5fe4\u5ff8\u5ff1\u5fdd\u60b3\u5fff\u6021\u6060\u6019\u6010\u6029\u600e\u6031\u601b\u6015\u602b\u6026\u600f\u603a\u605a\u6041\u606a\u6077\u605f\u604a\u6046\u604d\u6063\u6043\u6064\u6042\u606c\u606b\u6059\u6081\u608d\u60e7\u6083\u609a"],["d8a1","\u6084\u609b\u6096\u6097\u6092\u60a7\u608b\u60e1\u60b8\u60e0\u60d3\u60b4\u5ff0\u60bd\u60c6\u60b5\u60d8\u614d\u6115\u6106\u60f6\u60f7\u6100\u60f4\u60fa\u6103\u6121\u60fb\u60f1\u610d\u610e\u6147\u613e\u6128\u6127\u614a\u613f\u613c\u612c\u6134\u613d\u6142\u6144\u6173\u6177\u6158\u6159\u615a\u616b\u6174\u616f\u6165\u6171\u615f\u615d\u6153\u6175\u6199\u6196\u6187\u61ac\u6194\u619a\u618a\u6191\u61ab\u61ae\u61cc\u61ca\u61c9\u61f7\u61c8\u61c3\u61c6\u61ba\u61cb\u7f79\u61cd\u61e6\u61e3\u61f6\u61fa\u61f4\u61ff\u61fd\u61fc\u61fe\u6200\u6208\u6209\u620d\u620c\u6214\u621b"],["d9a1","\u621e\u6221\u622a\u622e\u6230\u6232\u6233\u6241\u624e\u625e\u6263\u625b\u6260\u6268\u627c\u6282\u6289\u627e\u6292\u6293\u6296\u62d4\u6283\u6294\u62d7\u62d1\u62bb\u62cf\u62ff\u62c6\u64d4\u62c8\u62dc\u62cc\u62ca\u62c2\u62c7\u629b\u62c9\u630c\u62ee\u62f1\u6327\u6302\u6308\u62ef\u62f5\u6350\u633e\u634d\u641c\u634f\u6396\u638e\u6380\u63ab\u6376\u63a3\u638f\u6389\u639f\u63b5\u636b\u6369\u63be\u63e9\u63c0\u63c6\u63e3\u63c9\u63d2\u63f6\u63c4\u6416\u6434\u6406\u6413\u6426\u6436\u651d\u6417\u6428\u640f\u6467\u646f\u6476\u644e\u652a\u6495\u6493\u64a5\u64a9\u6488\u64bc"],["daa1","\u64da\u64d2\u64c5\u64c7\u64bb\u64d8\u64c2\u64f1\u64e7\u8209\u64e0\u64e1\u62ac\u64e3\u64ef\u652c\u64f6\u64f4\u64f2\u64fa\u6500\u64fd\u6518\u651c\u6505\u6524\u6523\u652b\u6534\u6535\u6537\u6536\u6538\u754b\u6548\u6556\u6555\u654d\u6558\u655e\u655d\u6572\u6578\u6582\u6583\u8b8a\u659b\u659f\u65ab\u65b7\u65c3\u65c6\u65c1\u65c4\u65cc\u65d2\u65db\u65d9\u65e0\u65e1\u65f1\u6772\u660a\u6603\u65fb\u6773\u6635\u6636\u6634\u661c\u664f\u6644\u6649\u6641\u665e\u665d\u6664\u6667\u6668\u665f\u6662\u6670\u6683\u6688\u668e\u6689\u6684\u6698\u669d\u66c1\u66b9\u66c9\u66be\u66bc"],["dba1","\u66c4\u66b8\u66d6\u66da\u66e0\u663f\u66e6\u66e9\u66f0\u66f5\u66f7\u670f\u6716\u671e\u6726\u6727\u9738\u672e\u673f\u6736\u6741\u6738\u6737\u6746\u675e\u6760\u6759\u6763\u6764\u6789\u6770\u67a9\u677c\u676a\u678c\u678b\u67a6\u67a1\u6785\u67b7\u67ef\u67b4\u67ec\u67b3\u67e9\u67b8\u67e4\u67de\u67dd\u67e2\u67ee\u67b9\u67ce\u67c6\u67e7\u6a9c\u681e\u6846\u6829\u6840\u684d\u6832\u684e\u68b3\u682b\u6859\u6863\u6877\u687f\u689f\u688f\u68ad\u6894\u689d\u689b\u6883\u6aae\u68b9\u6874\u68b5\u68a0\u68ba\u690f\u688d\u687e\u6901\u68ca\u6908\u68d8\u6922\u6926\u68e1\u690c\u68cd"],["dca1","\u68d4\u68e7\u68d5\u6936\u6912\u6904\u68d7\u68e3\u6925\u68f9\u68e0\u68ef\u6928\u692a\u691a\u6923\u6921\u68c6\u6979\u6977\u695c\u6978\u696b\u6954\u697e\u696e\u6939\u6974\u693d\u6959\u6930\u6961\u695e\u695d\u6981\u696a\u69b2\u69ae\u69d0\u69bf\u69c1\u69d3\u69be\u69ce\u5be8\u69ca\u69dd\u69bb\u69c3\u69a7\u6a2e\u6991\u69a0\u699c\u6995\u69b4\u69de\u69e8\u6a02\u6a1b\u69ff\u6b0a\u69f9\u69f2\u69e7\u6a05\u69b1\u6a1e\u69ed\u6a14\u69eb\u6a0a\u6a12\u6ac1\u6a23\u6a13\u6a44\u6a0c\u6a72\u6a36\u6a78\u6a47\u6a62\u6a59\u6a66\u6a48\u6a38\u6a22\u6a90\u6a8d\u6aa0\u6a84\u6aa2\u6aa3"],["dda1","\u6a97\u8617\u6abb\u6ac3\u6ac2\u6ab8\u6ab3\u6aac\u6ade\u6ad1\u6adf\u6aaa\u6ada\u6aea\u6afb\u6b05\u8616\u6afa\u6b12\u6b16\u9b31\u6b1f\u6b38\u6b37\u76dc\u6b39\u98ee\u6b47\u6b43\u6b49\u6b50\u6b59\u6b54\u6b5b\u6b5f\u6b61\u6b78\u6b79\u6b7f\u6b80\u6b84\u6b83\u6b8d\u6b98\u6b95\u6b9e\u6ba4\u6baa\u6bab\u6baf\u6bb2\u6bb1\u6bb3\u6bb7\u6bbc\u6bc6\u6bcb\u6bd3\u6bdf\u6bec\u6beb\u6bf3\u6bef\u9ebe\u6c08\u6c13\u6c14\u6c1b\u6c24\u6c23\u6c5e\u6c55\u6c62\u6c6a\u6c82\u6c8d\u6c9a\u6c81\u6c9b\u6c7e\u6c68\u6c73\u6c92\u6c90\u6cc4\u6cf1\u6cd3\u6cbd\u6cd7\u6cc5\u6cdd\u6cae\u6cb1\u6cbe"],["dea1","\u6cba\u6cdb\u6cef\u6cd9\u6cea\u6d1f\u884d\u6d36\u6d2b\u6d3d\u6d38\u6d19\u6d35\u6d33\u6d12\u6d0c\u6d63\u6d93\u6d64\u6d5a\u6d79\u6d59\u6d8e\u6d95\u6fe4\u6d85\u6df9\u6e15\u6e0a\u6db5\u6dc7\u6de6\u6db8\u6dc6\u6dec\u6dde\u6dcc\u6de8\u6dd2\u6dc5\u6dfa\u6dd9\u6de4\u6dd5\u6dea\u6dee\u6e2d\u6e6e\u6e2e\u6e19\u6e72\u6e5f\u6e3e\u6e23\u6e6b\u6e2b\u6e76\u6e4d\u6e1f\u6e43\u6e3a\u6e4e\u6e24\u6eff\u6e1d\u6e38\u6e82\u6eaa\u6e98\u6ec9\u6eb7\u6ed3\u6ebd\u6eaf\u6ec4\u6eb2\u6ed4\u6ed5\u6e8f\u6ea5\u6ec2\u6e9f\u6f41\u6f11\u704c\u6eec\u6ef8\u6efe\u6f3f\u6ef2\u6f31\u6eef\u6f32\u6ecc"],["dfa1","\u6f3e\u6f13\u6ef7\u6f86\u6f7a\u6f78\u6f81\u6f80\u6f6f\u6f5b\u6ff3\u6f6d\u6f82\u6f7c\u6f58\u6f8e\u6f91\u6fc2\u6f66\u6fb3\u6fa3\u6fa1\u6fa4\u6fb9\u6fc6\u6faa\u6fdf\u6fd5\u6fec\u6fd4\u6fd8\u6ff1\u6fee\u6fdb\u7009\u700b\u6ffa\u7011\u7001\u700f\u6ffe\u701b\u701a\u6f74\u701d\u7018\u701f\u7030\u703e\u7032\u7051\u7063\u7099\u7092\u70af\u70f1\u70ac\u70b8\u70b3\u70ae\u70df\u70cb\u70dd\u70d9\u7109\u70fd\u711c\u7119\u7165\u7155\u7188\u7166\u7162\u714c\u7156\u716c\u718f\u71fb\u7184\u7195\u71a8\u71ac\u71d7\u71b9\u71be\u71d2\u71c9\u71d4\u71ce\u71e0\u71ec\u71e7\u71f5\u71fc"],["e0a1","\u71f9\u71ff\u720d\u7210\u721b\u7228\u722d\u722c\u7230\u7232\u723b\u723c\u723f\u7240\u7246\u724b\u7258\u7274\u727e\u7282\u7281\u7287\u7292\u7296\u72a2\u72a7\u72b9\u72b2\u72c3\u72c6\u72c4\u72ce\u72d2\u72e2\u72e0\u72e1\u72f9\u72f7\u500f\u7317\u730a\u731c\u7316\u731d\u7334\u732f\u7329\u7325\u733e\u734e\u734f\u9ed8\u7357\u736a\u7368\u7370\u7378\u7375\u737b\u737a\u73c8\u73b3\u73ce\u73bb\u73c0\u73e5\u73ee\u73de\u74a2\u7405\u746f\u7425\u73f8\u7432\u743a\u7455\u743f\u745f\u7459\u7441\u745c\u7469\u7470\u7463\u746a\u7476\u747e\u748b\u749e\u74a7\u74ca\u74cf\u74d4\u73f1"],["e1a1","\u74e0\u74e3\u74e7\u74e9\u74ee\u74f2\u74f0\u74f1\u74f8\u74f7\u7504\u7503\u7505\u750c\u750e\u750d\u7515\u7513\u751e\u7526\u752c\u753c\u7544\u754d\u754a\u7549\u755b\u7546\u755a\u7569\u7564\u7567\u756b\u756d\u7578\u7576\u7586\u7587\u7574\u758a\u7589\u7582\u7594\u759a\u759d\u75a5\u75a3\u75c2\u75b3\u75c3\u75b5\u75bd\u75b8\u75bc\u75b1\u75cd\u75ca\u75d2\u75d9\u75e3\u75de\u75fe\u75ff\u75fc\u7601\u75f0\u75fa\u75f2\u75f3\u760b\u760d\u7609\u761f\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763b\u7647\u7648\u7646\u765c\u7658\u7661\u7662\u7668\u7669\u766a\u7667\u766c\u7670"],["e2a1","\u7672\u7676\u7678\u767c\u7680\u7683\u7688\u768b\u768e\u7696\u7693\u7699\u769a\u76b0\u76b4\u76b8\u76b9\u76ba\u76c2\u76cd\u76d6\u76d2\u76de\u76e1\u76e5\u76e7\u76ea\u862f\u76fb\u7708\u7707\u7704\u7729\u7724\u771e\u7725\u7726\u771b\u7737\u7738\u7747\u775a\u7768\u776b\u775b\u7765\u777f\u777e\u7779\u778e\u778b\u7791\u77a0\u779e\u77b0\u77b6\u77b9\u77bf\u77bc\u77bd\u77bb\u77c7\u77cd\u77d7\u77da\u77dc\u77e3\u77ee\u77fc\u780c\u7812\u7926\u7820\u792a\u7845\u788e\u7874\u7886\u787c\u789a\u788c\u78a3\u78b5\u78aa\u78af\u78d1\u78c6\u78cb\u78d4\u78be\u78bc\u78c5\u78ca\u78ec"],["e3a1","\u78e7\u78da\u78fd\u78f4\u7907\u7912\u7911\u7919\u792c\u792b\u7940\u7960\u7957\u795f\u795a\u7955\u7953\u797a\u797f\u798a\u799d\u79a7\u9f4b\u79aa\u79ae\u79b3\u79b9\u79ba\u79c9\u79d5\u79e7\u79ec\u79e1\u79e3\u7a08\u7a0d\u7a18\u7a19\u7a20\u7a1f\u7980\u7a31\u7a3b\u7a3e\u7a37\u7a43\u7a57\u7a49\u7a61\u7a62\u7a69\u9f9d\u7a70\u7a79\u7a7d\u7a88\u7a97\u7a95\u7a98\u7a96\u7aa9\u7ac8\u7ab0\u7ab6\u7ac5\u7ac4\u7abf\u9083\u7ac7\u7aca\u7acd\u7acf\u7ad5\u7ad3\u7ad9\u7ada\u7add\u7ae1\u7ae2\u7ae6\u7aed\u7af0\u7b02\u7b0f\u7b0a\u7b06\u7b33\u7b18\u7b19\u7b1e\u7b35\u7b28\u7b36\u7b50"],["e4a1","\u7b7a\u7b04\u7b4d\u7b0b\u7b4c\u7b45\u7b75\u7b65\u7b74\u7b67\u7b70\u7b71\u7b6c\u7b6e\u7b9d\u7b98\u7b9f\u7b8d\u7b9c\u7b9a\u7b8b\u7b92\u7b8f\u7b5d\u7b99\u7bcb\u7bc1\u7bcc\u7bcf\u7bb4\u7bc6\u7bdd\u7be9\u7c11\u7c14\u7be6\u7be5\u7c60\u7c00\u7c07\u7c13\u7bf3\u7bf7\u7c17\u7c0d\u7bf6\u7c23\u7c27\u7c2a\u7c1f\u7c37\u7c2b\u7c3d\u7c4c\u7c43\u7c54\u7c4f\u7c40\u7c50\u7c58\u7c5f\u7c64\u7c56\u7c65\u7c6c\u7c75\u7c83\u7c90\u7ca4\u7cad\u7ca2\u7cab\u7ca1\u7ca8\u7cb3\u7cb2\u7cb1\u7cae\u7cb9\u7cbd\u7cc0\u7cc5\u7cc2\u7cd8\u7cd2\u7cdc\u7ce2\u9b3b\u7cef\u7cf2\u7cf4\u7cf6\u7cfa\u7d06"],["e5a1","\u7d02\u7d1c\u7d15\u7d0a\u7d45\u7d4b\u7d2e\u7d32\u7d3f\u7d35\u7d46\u7d73\u7d56\u7d4e\u7d72\u7d68\u7d6e\u7d4f\u7d63\u7d93\u7d89\u7d5b\u7d8f\u7d7d\u7d9b\u7dba\u7dae\u7da3\u7db5\u7dc7\u7dbd\u7dab\u7e3d\u7da2\u7daf\u7ddc\u7db8\u7d9f\u7db0\u7dd8\u7ddd\u7de4\u7dde\u7dfb\u7df2\u7de1\u7e05\u7e0a\u7e23\u7e21\u7e12\u7e31\u7e1f\u7e09\u7e0b\u7e22\u7e46\u7e66\u7e3b\u7e35\u7e39\u7e43\u7e37\u7e32\u7e3a\u7e67\u7e5d\u7e56\u7e5e\u7e59\u7e5a\u7e79\u7e6a\u7e69\u7e7c\u7e7b\u7e83\u7dd5\u7e7d\u8fae\u7e7f\u7e88\u7e89\u7e8c\u7e92\u7e90\u7e93\u7e94\u7e96\u7e8e\u7e9b\u7e9c\u7f38\u7f3a"],["e6a1","\u7f45\u7f4c\u7f4d\u7f4e\u7f50\u7f51\u7f55\u7f54\u7f58\u7f5f\u7f60\u7f68\u7f69\u7f67\u7f78\u7f82\u7f86\u7f83\u7f88\u7f87\u7f8c\u7f94\u7f9e\u7f9d\u7f9a\u7fa3\u7faf\u7fb2\u7fb9\u7fae\u7fb6\u7fb8\u8b71\u7fc5\u7fc6\u7fca\u7fd5\u7fd4\u7fe1\u7fe6\u7fe9\u7ff3\u7ff9\u98dc\u8006\u8004\u800b\u8012\u8018\u8019\u801c\u8021\u8028\u803f\u803b\u804a\u8046\u8052\u8058\u805a\u805f\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807d\u807f\u8084\u8086\u8085\u809b\u8093\u809a\u80ad\u5190\u80ac\u80db\u80e5\u80d9\u80dd\u80c4\u80da\u80d6\u8109\u80ef\u80f1\u811b\u8129\u8123\u812f\u814b"],["e7a1","\u968b\u8146\u813e\u8153\u8151\u80fc\u8171\u816e\u8165\u8166\u8174\u8183\u8188\u818a\u8180\u8182\u81a0\u8195\u81a4\u81a3\u815f\u8193\u81a9\u81b0\u81b5\u81be\u81b8\u81bd\u81c0\u81c2\u81ba\u81c9\u81cd\u81d1\u81d9\u81d8\u81c8\u81da\u81df\u81e0\u81e7\u81fa\u81fb\u81fe\u8201\u8202\u8205\u8207\u820a\u820d\u8210\u8216\u8229\u822b\u8238\u8233\u8240\u8259\u8258\u825d\u825a\u825f\u8264\u8262\u8268\u826a\u826b\u822e\u8271\u8277\u8278\u827e\u828d\u8292\u82ab\u829f\u82bb\u82ac\u82e1\u82e3\u82df\u82d2\u82f4\u82f3\u82fa\u8393\u8303\u82fb\u82f9\u82de\u8306\u82dc\u8309\u82d9"],["e8a1","\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832f\u832b\u8317\u8318\u8385\u839a\u83aa\u839f\u83a2\u8396\u8323\u838e\u8387\u838a\u837c\u83b5\u8373\u8375\u83a0\u8389\u83a8\u83f4\u8413\u83eb\u83ce\u83fd\u8403\u83d8\u840b\u83c1\u83f7\u8407\u83e0\u83f2\u840d\u8422\u8420\u83bd\u8438\u8506\u83fb\u846d\u842a\u843c\u855a\u8484\u8477\u846b\u84ad\u846e\u8482\u8469\u8446\u842c\u846f\u8479\u8435\u84ca\u8462\u84b9\u84bf\u849f\u84d9\u84cd\u84bb\u84da\u84d0\u84c1\u84c6\u84d6\u84a1\u8521\u84ff\u84f4\u8517\u8518\u852c\u851f\u8515\u8514\u84fc\u8540\u8563\u8558\u8548"],["e9a1","\u8541\u8602\u854b\u8555\u8580\u85a4\u8588\u8591\u858a\u85a8\u856d\u8594\u859b\u85ea\u8587\u859c\u8577\u857e\u8590\u85c9\u85ba\u85cf\u85b9\u85d0\u85d5\u85dd\u85e5\u85dc\u85f9\u860a\u8613\u860b\u85fe\u85fa\u8606\u8622\u861a\u8630\u863f\u864d\u4e55\u8654\u865f\u8667\u8671\u8693\u86a3\u86a9\u86aa\u868b\u868c\u86b6\u86af\u86c4\u86c6\u86b0\u86c9\u8823\u86ab\u86d4\u86de\u86e9\u86ec\u86df\u86db\u86ef\u8712\u8706\u8708\u8700\u8703\u86fb\u8711\u8709\u870d\u86f9\u870a\u8734\u873f\u8737\u873b\u8725\u8729\u871a\u8760\u875f\u8778\u874c\u874e\u8774\u8757\u8768\u876e\u8759"],["eaa1","\u8753\u8763\u876a\u8805\u87a2\u879f\u8782\u87af\u87cb\u87bd\u87c0\u87d0\u96d6\u87ab\u87c4\u87b3\u87c7\u87c6\u87bb\u87ef\u87f2\u87e0\u880f\u880d\u87fe\u87f6\u87f7\u880e\u87d2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883b\u8844\u8842\u8852\u8859\u885e\u8862\u886b\u8881\u887e\u889e\u8875\u887d\u88b5\u8872\u8882\u8897\u8892\u88ae\u8899\u88a2\u888d\u88a4\u88b0\u88bf\u88b1\u88c3\u88c4\u88d4\u88d8\u88d9\u88dd\u88f9\u8902\u88fc\u88f4\u88e8\u88f2\u8904\u890c\u890a\u8913\u8943\u891e\u8925\u892a\u892b\u8941\u8944\u893b\u8936\u8938\u894c\u891d\u8960\u895e"],["eba1","\u8966\u8964\u896d\u896a\u896f\u8974\u8977\u897e\u8983\u8988\u898a\u8993\u8998\u89a1\u89a9\u89a6\u89ac\u89af\u89b2\u89ba\u89bd\u89bf\u89c0\u89da\u89dc\u89dd\u89e7\u89f4\u89f8\u8a03\u8a16\u8a10\u8a0c\u8a1b\u8a1d\u8a25\u8a36\u8a41\u8a5b\u8a52\u8a46\u8a48\u8a7c\u8a6d\u8a6c\u8a62\u8a85\u8a82\u8a84\u8aa8\u8aa1\u8a91\u8aa5\u8aa6\u8a9a\u8aa3\u8ac4\u8acd\u8ac2\u8ada\u8aeb\u8af3\u8ae7\u8ae4\u8af1\u8b14\u8ae0\u8ae2\u8af7\u8ade\u8adb\u8b0c\u8b07\u8b1a\u8ae1\u8b16\u8b10\u8b17\u8b20\u8b33\u97ab\u8b26\u8b2b\u8b3e\u8b28\u8b41\u8b4c\u8b4f\u8b4e\u8b49\u8b56\u8b5b\u8b5a\u8b6b"],["eca1","\u8b5f\u8b6c\u8b6f\u8b74\u8b7d\u8b80\u8b8c\u8b8e\u8b92\u8b93\u8b96\u8b99\u8b9a\u8c3a\u8c41\u8c3f\u8c48\u8c4c\u8c4e\u8c50\u8c55\u8c62\u8c6c\u8c78\u8c7a\u8c82\u8c89\u8c85\u8c8a\u8c8d\u8c8e\u8c94\u8c7c\u8c98\u621d\u8cad\u8caa\u8cbd\u8cb2\u8cb3\u8cae\u8cb6\u8cc8\u8cc1\u8ce4\u8ce3\u8cda\u8cfd\u8cfa\u8cfb\u8d04\u8d05\u8d0a\u8d07\u8d0f\u8d0d\u8d10\u9f4e\u8d13\u8ccd\u8d14\u8d16\u8d67\u8d6d\u8d71\u8d73\u8d81\u8d99\u8dc2\u8dbe\u8dba\u8dcf\u8dda\u8dd6\u8dcc\u8ddb\u8dcb\u8dea\u8deb\u8ddf\u8de3\u8dfc\u8e08\u8e09\u8dff\u8e1d\u8e1e\u8e10\u8e1f\u8e42\u8e35\u8e30\u8e34\u8e4a"],["eda1","\u8e47\u8e49\u8e4c\u8e50\u8e48\u8e59\u8e64\u8e60\u8e2a\u8e63\u8e55\u8e76\u8e72\u8e7c\u8e81\u8e87\u8e85\u8e84\u8e8b\u8e8a\u8e93\u8e91\u8e94\u8e99\u8eaa\u8ea1\u8eac\u8eb0\u8ec6\u8eb1\u8ebe\u8ec5\u8ec8\u8ecb\u8edb\u8ee3\u8efc\u8efb\u8eeb\u8efe\u8f0a\u8f05\u8f15\u8f12\u8f19\u8f13\u8f1c\u8f1f\u8f1b\u8f0c\u8f26\u8f33\u8f3b\u8f39\u8f45\u8f42\u8f3e\u8f4c\u8f49\u8f46\u8f4e\u8f57\u8f5c\u8f62\u8f63\u8f64\u8f9c\u8f9f\u8fa3\u8fad\u8faf\u8fb7\u8fda\u8fe5\u8fe2\u8fea\u8fef\u9087\u8ff4\u9005\u8ff9\u8ffa\u9011\u9015\u9021\u900d\u901e\u9016\u900b\u9027\u9036\u9035\u9039\u8ff8"],["eea1","\u904f\u9050\u9051\u9052\u900e\u9049\u903e\u9056\u9058\u905e\u9068\u906f\u9076\u96a8\u9072\u9082\u907d\u9081\u9080\u908a\u9089\u908f\u90a8\u90af\u90b1\u90b5\u90e2\u90e4\u6248\u90db\u9102\u9112\u9119\u9132\u9130\u914a\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918b\u9189\u9182\u91a2\u91ab\u91af\u91aa\u91b5\u91b4\u91ba\u91c0\u91c1\u91c9\u91cb\u91d0\u91d6\u91df\u91e1\u91db\u91fc\u91f5\u91f6\u921e\u91ff\u9214\u922c\u9215\u9211\u925e\u9257\u9245\u9249\u9264\u9248\u9295\u923f\u924b\u9250\u929c\u9296\u9293\u929b\u925a\u92cf\u92b9\u92b7\u92e9\u930f\u92fa\u9344\u932e"],["efa1","\u9319\u9322\u931a\u9323\u933a\u9335\u933b\u935c\u9360\u937c\u936e\u9356\u93b0\u93ac\u93ad\u9394\u93b9\u93d6\u93d7\u93e8\u93e5\u93d8\u93c3\u93dd\u93d0\u93c8\u93e4\u941a\u9414\u9413\u9403\u9407\u9410\u9436\u942b\u9435\u9421\u943a\u9441\u9452\u9444\u945b\u9460\u9462\u945e\u946a\u9229\u9470\u9475\u9477\u947d\u945a\u947c\u947e\u9481\u947f\u9582\u9587\u958a\u9594\u9596\u9598\u9599\u95a0\u95a8\u95a7\u95ad\u95bc\u95bb\u95b9\u95be\u95ca\u6ff6\u95c3\u95cd\u95cc\u95d5\u95d4\u95d6\u95dc\u95e1\u95e5\u95e2\u9621\u9628\u962e\u962f\u9642\u964c\u964f\u964b\u9677\u965c\u965e"],["f0a1","\u965d\u965f\u9666\u9672\u966c\u968d\u9698\u9695\u9697\u96aa\u96a7\u96b1\u96b2\u96b0\u96b4\u96b6\u96b8\u96b9\u96ce\u96cb\u96c9\u96cd\u894d\u96dc\u970d\u96d5\u96f9\u9704\u9706\u9708\u9713\u970e\u9711\u970f\u9716\u9719\u9724\u972a\u9730\u9739\u973d\u973e\u9744\u9746\u9748\u9742\u9749\u975c\u9760\u9764\u9766\u9768\u52d2\u976b\u9771\u9779\u9785\u977c\u9781\u977a\u9786\u978b\u978f\u9790\u979c\u97a8\u97a6\u97a3\u97b3\u97b4\u97c3\u97c6\u97c8\u97cb\u97dc\u97ed\u9f4f\u97f2\u7adf\u97f6\u97f5\u980f\u980c\u9838\u9824\u9821\u9837\u983d\u9846\u984f\u984b\u986b\u986f\u9870"],["f1a1","\u9871\u9874\u9873\u98aa\u98af\u98b1\u98b6\u98c4\u98c3\u98c6\u98e9\u98eb\u9903\u9909\u9912\u9914\u9918\u9921\u991d\u991e\u9924\u9920\u992c\u992e\u993d\u993e\u9942\u9949\u9945\u9950\u994b\u9951\u9952\u994c\u9955\u9997\u9998\u99a5\u99ad\u99ae\u99bc\u99df\u99db\u99dd\u99d8\u99d1\u99ed\u99ee\u99f1\u99f2\u99fb\u99f8\u9a01\u9a0f\u9a05\u99e2\u9a19\u9a2b\u9a37\u9a45\u9a42\u9a40\u9a43\u9a3e\u9a55\u9a4d\u9a5b\u9a57\u9a5f\u9a62\u9a65\u9a64\u9a69\u9a6b\u9a6a\u9aad\u9ab0\u9abc\u9ac0\u9acf\u9ad1\u9ad3\u9ad4\u9ade\u9adf\u9ae2\u9ae3\u9ae6\u9aef\u9aeb\u9aee\u9af4\u9af1\u9af7"],["f2a1","\u9afb\u9b06\u9b18\u9b1a\u9b1f\u9b22\u9b23\u9b25\u9b27\u9b28\u9b29\u9b2a\u9b2e\u9b2f\u9b32\u9b44\u9b43\u9b4f\u9b4d\u9b4e\u9b51\u9b58\u9b74\u9b93\u9b83\u9b91\u9b96\u9b97\u9b9f\u9ba0\u9ba8\u9bb4\u9bc0\u9bca\u9bb9\u9bc6\u9bcf\u9bd1\u9bd2\u9be3\u9be2\u9be4\u9bd4\u9be1\u9c3a\u9bf2\u9bf1\u9bf0\u9c15\u9c14\u9c09\u9c13\u9c0c\u9c06\u9c08\u9c12\u9c0a\u9c04\u9c2e\u9c1b\u9c25\u9c24\u9c21\u9c30\u9c47\u9c32\u9c46\u9c3e\u9c5a\u9c60\u9c67\u9c76\u9c78\u9ce7\u9cec\u9cf0\u9d09\u9d08\u9ceb\u9d03\u9d06\u9d2a\u9d26\u9daf\u9d23\u9d1f\u9d44\u9d15\u9d12\u9d41\u9d3f\u9d3e\u9d46\u9d48"],["f3a1","\u9d5d\u9d5e\u9d64\u9d51\u9d50\u9d59\u9d72\u9d89\u9d87\u9dab\u9d6f\u9d7a\u9d9a\u9da4\u9da9\u9db2\u9dc4\u9dc1\u9dbb\u9db8\u9dba\u9dc6\u9dcf\u9dc2\u9dd9\u9dd3\u9df8\u9de6\u9ded\u9def\u9dfd\u9e1a\u9e1b\u9e1e\u9e75\u9e79\u9e7d\u9e81\u9e88\u9e8b\u9e8c\u9e92\u9e95\u9e91\u9e9d\u9ea5\u9ea9\u9eb8\u9eaa\u9ead\u9761\u9ecc\u9ece\u9ecf\u9ed0\u9ed4\u9edc\u9ede\u9edd\u9ee0\u9ee5\u9ee8\u9eef\u9ef4\u9ef6\u9ef7\u9ef9\u9efb\u9efc\u9efd\u9f07\u9f08\u76b7\u9f15\u9f21\u9f2c\u9f3e\u9f4a\u9f52\u9f54\u9f63\u9f5f\u9f60\u9f61\u9f66\u9f67\u9f6c\u9f6a\u9f77\u9f72\u9f76\u9f95\u9f9c\u9fa0"],["f4a1","\u582f\u69c7\u9059\u7464\u51dc\u7199"],["f9a1","\u7e8a\u891c\u9348\u9288\u84dc\u4fc9\u70bb\u6631\u68c8\u92f9\u66fb\u5f45\u4e28\u4ee1\u4efc\u4f00\u4f03\u4f39\u4f56\u4f92\u4f8a\u4f9a\u4f94\u4fcd\u5040\u5022\u4fff\u501e\u5046\u5070\u5042\u5094\u50f4\u50d8\u514a\u5164\u519d\u51be\u51ec\u5215\u529c\u52a6\u52c0\u52db\u5300\u5307\u5324\u5372\u5393\u53b2\u53dd\ufa0e\u549c\u548a\u54a9\u54ff\u5586\u5759\u5765\u57ac\u57c8\u57c7\ufa0f\ufa10\u589e\u58b2\u590b\u5953\u595b\u595d\u5963\u59a4\u59ba\u5b56\u5bc0\u752f\u5bd8\u5bec\u5c1e\u5ca6\u5cba\u5cf5\u5d27\u5d53\ufa11\u5d42\u5d6d\u5db8\u5db9\u5dd0\u5f21\u5f34\u5f67\u5fb7"],["faa1","\u5fde\u605d\u6085\u608a\u60de\u60d5\u6120\u60f2\u6111\u6137\u6130\u6198\u6213\u62a6\u63f5\u6460\u649d\u64ce\u654e\u6600\u6615\u663b\u6609\u662e\u661e\u6624\u6665\u6657\u6659\ufa12\u6673\u6699\u66a0\u66b2\u66bf\u66fa\u670e\uf929\u6766\u67bb\u6852\u67c0\u6801\u6844\u68cf\ufa13\u6968\ufa14\u6998\u69e2\u6a30\u6a6b\u6a46\u6a73\u6a7e\u6ae2\u6ae4\u6bd6\u6c3f\u6c5c\u6c86\u6c6f\u6cda\u6d04\u6d87\u6d6f\u6d96\u6dac\u6dcf\u6df8\u6df2\u6dfc\u6e39\u6e5c\u6e27\u6e3c\u6ebf\u6f88\u6fb5\u6ff5\u7005\u7007\u7028\u7085\u70ab\u710f\u7104\u715c\u7146\u7147\ufa15\u71c1\u71fe\u72b1"],["fba1","\u72be\u7324\ufa16\u7377\u73bd\u73c9\u73d6\u73e3\u73d2\u7407\u73f5\u7426\u742a\u7429\u742e\u7462\u7489\u749f\u7501\u756f\u7682\u769c\u769e\u769b\u76a6\ufa17\u7746\u52af\u7821\u784e\u7864\u787a\u7930\ufa18\ufa19\ufa1a\u7994\ufa1b\u799b\u7ad1\u7ae7\ufa1c\u7aeb\u7b9e\ufa1d\u7d48\u7d5c\u7db7\u7da0\u7dd6\u7e52\u7f47\u7fa1\ufa1e\u8301\u8362\u837f\u83c7\u83f6\u8448\u84b4\u8553\u8559\u856b\ufa1f\u85b0\ufa20\ufa21\u8807\u88f5\u8a12\u8a37\u8a79\u8aa7\u8abe\u8adf\ufa22\u8af6\u8b53\u8b7f\u8cf0\u8cf4\u8d12\u8d76\ufa23\u8ecf\ufa24\ufa25\u9067\u90de\ufa26\u9115\u9127\u91da"],["fca1","\u91d7\u91de\u91ed\u91ee\u91e4\u91e5\u9206\u9210\u920a\u923a\u9240\u923c\u924e\u9259\u9251\u9239\u9267\u92a7\u9277\u9278\u92e7\u92d7\u92d9\u92d0\ufa27\u92d5\u92e0\u92d3\u9325\u9321\u92fb\ufa28\u931e\u92ff\u931d\u9302\u9370\u9357\u93a4\u93c6\u93de\u93f8\u9431\u9445\u9448\u9592\uf9dc\ufa29\u969d\u96af\u9733\u973b\u9743\u974d\u974f\u9751\u9755\u9857\u9865\ufa2a\ufa2b\u9927\ufa2c\u999e\u9a4e\u9ad9\u9adc\u9b75\u9b72\u9b8f\u9bb1\u9bbb\u9c00\u9d70\u9d6b\ufa2d\u9e19\u9ed1"],["fcf1","\u2170",9,"\uffe2\uffe4\uff07\uff02"],["8fa2af","\u02d8\u02c7\xb8\u02d9\u02dd\xaf\u02db\u02da\uff5e\u0384\u0385"],["8fa2c2","\xa1\xa6\xbf"],["8fa2eb","\xba\xaa\xa9\xae\u2122\xa4\u2116"],["8fa6e1","\u0386\u0388\u0389\u038a\u03aa"],["8fa6e7","\u038c"],["8fa6e9","\u038e\u03ab"],["8fa6ec","\u038f"],["8fa6f1","\u03ac\u03ad\u03ae\u03af\u03ca\u0390\u03cc\u03c2\u03cd\u03cb\u03b0\u03ce"],["8fa7c2","\u0402",10,"\u040e\u040f"],["8fa7f2","\u0452",10,"\u045e\u045f"],["8fa9a1","\xc6\u0110"],["8fa9a4","\u0126"],["8fa9a6","\u0132"],["8fa9a8","\u0141\u013f"],["8fa9ab","\u014a\xd8\u0152"],["8fa9af","\u0166\xde"],["8fa9c1","\xe6\u0111\xf0\u0127\u0131\u0133\u0138\u0142\u0140\u0149\u014b\xf8\u0153\xdf\u0167\xfe"],["8faaa1","\xc1\xc0\xc4\xc2\u0102\u01cd\u0100\u0104\xc5\xc3\u0106\u0108\u010c\xc7\u010a\u010e\xc9\xc8\xcb\xca\u011a\u0116\u0112\u0118"],["8faaba","\u011c\u011e\u0122\u0120\u0124\xcd\xcc\xcf\xce\u01cf\u0130\u012a\u012e\u0128\u0134\u0136\u0139\u013d\u013b\u0143\u0147\u0145\xd1\xd3\xd2\xd6\xd4\u01d1\u0150\u014c\xd5\u0154\u0158\u0156\u015a\u015c\u0160\u015e\u0164\u0162\xda\xd9\xdc\xdb\u016c\u01d3\u0170\u016a\u0172\u016e\u0168\u01d7\u01db\u01d9\u01d5\u0174\xdd\u0178\u0176\u0179\u017d\u017b"],["8faba1","\xe1\xe0\xe4\xe2\u0103\u01ce\u0101\u0105\xe5\xe3\u0107\u0109\u010d\xe7\u010b\u010f\xe9\xe8\xeb\xea\u011b\u0117\u0113\u0119\u01f5\u011d\u011f"],["8fabbd","\u0121\u0125\xed\xec\xef\xee\u01d0"],["8fabc5","\u012b\u012f\u0129\u0135\u0137\u013a\u013e\u013c\u0144\u0148\u0146\xf1\xf3\xf2\xf6\xf4\u01d2\u0151\u014d\xf5\u0155\u0159\u0157\u015b\u015d\u0161\u015f\u0165\u0163\xfa\xf9\xfc\xfb\u016d\u01d4\u0171\u016b\u0173\u016f\u0169\u01d8\u01dc\u01da\u01d6\u0175\xfd\xff\u0177\u017a\u017e\u017c"],["8fb0a1","\u4e02\u4e04\u4e05\u4e0c\u4e12\u4e1f\u4e23\u4e24\u4e28\u4e2b\u4e2e\u4e2f\u4e30\u4e35\u4e40\u4e41\u4e44\u4e47\u4e51\u4e5a\u4e5c\u4e63\u4e68\u4e69\u4e74\u4e75\u4e79\u4e7f\u4e8d\u4e96\u4e97\u4e9d\u4eaf\u4eb9\u4ec3\u4ed0\u4eda\u4edb\u4ee0\u4ee1\u4ee2\u4ee8\u4eef\u4ef1\u4ef3\u4ef5\u4efd\u4efe\u4eff\u4f00\u4f02\u4f03\u4f08\u4f0b\u4f0c\u4f12\u4f15\u4f16\u4f17\u4f19\u4f2e\u4f31\u4f60\u4f33\u4f35\u4f37\u4f39\u4f3b\u4f3e\u4f40\u4f42\u4f48\u4f49\u4f4b\u4f4c\u4f52\u4f54\u4f56\u4f58\u4f5f\u4f63\u4f6a\u4f6c\u4f6e\u4f71\u4f77\u4f78\u4f79\u4f7a\u4f7d\u4f7e\u4f81\u4f82\u4f84"],["8fb1a1","\u4f85\u4f89\u4f8a\u4f8c\u4f8e\u4f90\u4f92\u4f93\u4f94\u4f97\u4f99\u4f9a\u4f9e\u4f9f\u4fb2\u4fb7\u4fb9\u4fbb\u4fbc\u4fbd\u4fbe\u4fc0\u4fc1\u4fc5\u4fc6\u4fc8\u4fc9\u4fcb\u4fcc\u4fcd\u4fcf\u4fd2\u4fdc\u4fe0\u4fe2\u4ff0\u4ff2\u4ffc\u4ffd\u4fff\u5000\u5001\u5004\u5007\u500a\u500c\u500e\u5010\u5013\u5017\u5018\u501b\u501c\u501d\u501e\u5022\u5027\u502e\u5030\u5032\u5033\u5035\u5040\u5041\u5042\u5045\u5046\u504a\u504c\u504e\u5051\u5052\u5053\u5057\u5059\u505f\u5060\u5062\u5063\u5066\u5067\u506a\u506d\u5070\u5071\u503b\u5081\u5083\u5084\u5086\u508a\u508e\u508f\u5090"],["8fb2a1","\u5092\u5093\u5094\u5096\u509b\u509c\u509e",4,"\u50aa\u50af\u50b0\u50b9\u50ba\u50bd\u50c0\u50c3\u50c4\u50c7\u50cc\u50ce\u50d0\u50d3\u50d4\u50d8\u50dc\u50dd\u50df\u50e2\u50e4\u50e6\u50e8\u50e9\u50ef\u50f1\u50f6\u50fa\u50fe\u5103\u5106\u5107\u5108\u510b\u510c\u510d\u510e\u50f2\u5110\u5117\u5119\u511b\u511c\u511d\u511e\u5123\u5127\u5128\u512c\u512d\u512f\u5131\u5133\u5134\u5135\u5138\u5139\u5142\u514a\u514f\u5153\u5155\u5157\u5158\u515f\u5164\u5166\u517e\u5183\u5184\u518b\u518e\u5198\u519d\u51a1\u51a3\u51ad\u51b8\u51ba\u51bc\u51be\u51bf\u51c2"],["8fb3a1","\u51c8\u51cf\u51d1\u51d2\u51d3\u51d5\u51d8\u51de\u51e2\u51e5\u51ee\u51f2\u51f3\u51f4\u51f7\u5201\u5202\u5205\u5212\u5213\u5215\u5216\u5218\u5222\u5228\u5231\u5232\u5235\u523c\u5245\u5249\u5255\u5257\u5258\u525a\u525c\u525f\u5260\u5261\u5266\u526e\u5277\u5278\u5279\u5280\u5282\u5285\u528a\u528c\u5293\u5295\u5296\u5297\u5298\u529a\u529c\u52a4\u52a5\u52a6\u52a7\u52af\u52b0\u52b6\u52b7\u52b8\u52ba\u52bb\u52bd\u52c0\u52c4\u52c6\u52c8\u52cc\u52cf\u52d1\u52d4\u52d6\u52db\u52dc\u52e1\u52e5\u52e8\u52e9\u52ea\u52ec\u52f0\u52f1\u52f4\u52f6\u52f7\u5300\u5303\u530a\u530b"],["8fb4a1","\u530c\u5311\u5313\u5318\u531b\u531c\u531e\u531f\u5325\u5327\u5328\u5329\u532b\u532c\u532d\u5330\u5332\u5335\u533c\u533d\u533e\u5342\u534c\u534b\u5359\u535b\u5361\u5363\u5365\u536c\u536d\u5372\u5379\u537e\u5383\u5387\u5388\u538e\u5393\u5394\u5399\u539d\u53a1\u53a4\u53aa\u53ab\u53af\u53b2\u53b4\u53b5\u53b7\u53b8\u53ba\u53bd\u53c0\u53c5\u53cf\u53d2\u53d3\u53d5\u53da\u53dd\u53de\u53e0\u53e6\u53e7\u53f5\u5402\u5413\u541a\u5421\u5427\u5428\u542a\u542f\u5431\u5434\u5435\u5443\u5444\u5447\u544d\u544f\u545e\u5462\u5464\u5466\u5467\u5469\u546b\u546d\u546e\u5474\u547f"],["8fb5a1","\u5481\u5483\u5485\u5488\u5489\u548d\u5491\u5495\u5496\u549c\u549f\u54a1\u54a6\u54a7\u54a9\u54aa\u54ad\u54ae\u54b1\u54b7\u54b9\u54ba\u54bb\u54bf\u54c6\u54ca\u54cd\u54ce\u54e0\u54ea\u54ec\u54ef\u54f6\u54fc\u54fe\u54ff\u5500\u5501\u5505\u5508\u5509\u550c\u550d\u550e\u5515\u552a\u552b\u5532\u5535\u5536\u553b\u553c\u553d\u5541\u5547\u5549\u554a\u554d\u5550\u5551\u5558\u555a\u555b\u555e\u5560\u5561\u5564\u5566\u557f\u5581\u5582\u5586\u5588\u558e\u558f\u5591\u5592\u5593\u5594\u5597\u55a3\u55a4\u55ad\u55b2\u55bf\u55c1\u55c3\u55c6\u55c9\u55cb\u55cc\u55ce\u55d1\u55d2"],["8fb6a1","\u55d3\u55d7\u55d8\u55db\u55de\u55e2\u55e9\u55f6\u55ff\u5605\u5608\u560a\u560d",5,"\u5619\u562c\u5630\u5633\u5635\u5637\u5639\u563b\u563c\u563d\u563f\u5640\u5641\u5643\u5644\u5646\u5649\u564b\u564d\u564f\u5654\u565e\u5660\u5661\u5662\u5663\u5666\u5669\u566d\u566f\u5671\u5672\u5675\u5684\u5685\u5688\u568b\u568c\u5695\u5699\u569a\u569d\u569e\u569f\u56a6\u56a7\u56a8\u56a9\u56ab\u56ac\u56ad\u56b1\u56b3\u56b7\u56be\u56c5\u56c9\u56ca\u56cb\u56cf\u56d0\u56cc\u56cd\u56d9\u56dc\u56dd\u56df\u56e1\u56e4",4,"\u56f1\u56eb\u56ed"],["8fb7a1","\u56f6\u56f7\u5701\u5702\u5707\u570a\u570c\u5711\u5715\u571a\u571b\u571d\u5720\u5722\u5723\u5724\u5725\u5729\u572a\u572c\u572e\u572f\u5733\u5734\u573d\u573e\u573f\u5745\u5746\u574c\u574d\u5752\u5762\u5765\u5767\u5768\u576b\u576d",4,"\u5773\u5774\u5775\u5777\u5779\u577a\u577b\u577c\u577e\u5781\u5783\u578c\u5794\u5797\u5799\u579a\u579c\u579d\u579e\u579f\u57a1\u5795\u57a7\u57a8\u57a9\u57ac\u57b8\u57bd\u57c7\u57c8\u57cc\u57cf\u57d5\u57dd\u57de\u57e4\u57e6\u57e7\u57e9\u57ed\u57f0\u57f5\u57f6\u57f8\u57fd\u57fe\u57ff\u5803\u5804\u5808\u5809\u57e1"],["8fb8a1","\u580c\u580d\u581b\u581e\u581f\u5820\u5826\u5827\u582d\u5832\u5839\u583f\u5849\u584c\u584d\u584f\u5850\u5855\u585f\u5861\u5864\u5867\u5868\u5878\u587c\u587f\u5880\u5881\u5887\u5888\u5889\u588a\u588c\u588d\u588f\u5890\u5894\u5896\u589d\u58a0\u58a1\u58a2\u58a6\u58a9\u58b1\u58b2\u58c4\u58bc\u58c2\u58c8\u58cd\u58ce\u58d0\u58d2\u58d4\u58d6\u58da\u58dd\u58e1\u58e2\u58e9\u58f3\u5905\u5906\u590b\u590c\u5912\u5913\u5914\u8641\u591d\u5921\u5923\u5924\u5928\u592f\u5930\u5933\u5935\u5936\u593f\u5943\u5946\u5952\u5953\u5959\u595b\u595d\u595e\u595f\u5961\u5963\u596b\u596d"],["8fb9a1","\u596f\u5972\u5975\u5976\u5979\u597b\u597c\u598b\u598c\u598e\u5992\u5995\u5997\u599f\u59a4\u59a7\u59ad\u59ae\u59af\u59b0\u59b3\u59b7\u59ba\u59bc\u59c1\u59c3\u59c4\u59c8\u59ca\u59cd\u59d2\u59dd\u59de\u59df\u59e3\u59e4\u59e7\u59ee\u59ef\u59f1\u59f2\u59f4\u59f7\u5a00\u5a04\u5a0c\u5a0d\u5a0e\u5a12\u5a13\u5a1e\u5a23\u5a24\u5a27\u5a28\u5a2a\u5a2d\u5a30\u5a44\u5a45\u5a47\u5a48\u5a4c\u5a50\u5a55\u5a5e\u5a63\u5a65\u5a67\u5a6d\u5a77\u5a7a\u5a7b\u5a7e\u5a8b\u5a90\u5a93\u5a96\u5a99\u5a9c\u5a9e\u5a9f\u5aa0\u5aa2\u5aa7\u5aac\u5ab1\u5ab2\u5ab3\u5ab5\u5ab8\u5aba\u5abb\u5abf"],["8fbaa1","\u5ac4\u5ac6\u5ac8\u5acf\u5ada\u5adc\u5ae0\u5ae5\u5aea\u5aee\u5af5\u5af6\u5afd\u5b00\u5b01\u5b08\u5b17\u5b34\u5b19\u5b1b\u5b1d\u5b21\u5b25\u5b2d\u5b38\u5b41\u5b4b\u5b4c\u5b52\u5b56\u5b5e\u5b68\u5b6e\u5b6f\u5b7c\u5b7d\u5b7e\u5b7f\u5b81\u5b84\u5b86\u5b8a\u5b8e\u5b90\u5b91\u5b93\u5b94\u5b96\u5ba8\u5ba9\u5bac\u5bad\u5baf\u5bb1\u5bb2\u5bb7\u5bba\u5bbc\u5bc0\u5bc1\u5bcd\u5bcf\u5bd6",4,"\u5be0\u5bef\u5bf1\u5bf4\u5bfd\u5c0c\u5c17\u5c1e\u5c1f\u5c23\u5c26\u5c29\u5c2b\u5c2c\u5c2e\u5c30\u5c32\u5c35\u5c36\u5c59\u5c5a\u5c5c\u5c62\u5c63\u5c67\u5c68\u5c69"],["8fbba1","\u5c6d\u5c70\u5c74\u5c75\u5c7a\u5c7b\u5c7c\u5c7d\u5c87\u5c88\u5c8a\u5c8f\u5c92\u5c9d\u5c9f\u5ca0\u5ca2\u5ca3\u5ca6\u5caa\u5cb2\u5cb4\u5cb5\u5cba\u5cc9\u5ccb\u5cd2\u5cdd\u5cd7\u5cee\u5cf1\u5cf2\u5cf4\u5d01\u5d06\u5d0d\u5d12\u5d2b\u5d23\u5d24\u5d26\u5d27\u5d31\u5d34\u5d39\u5d3d\u5d3f\u5d42\u5d43\u5d46\u5d48\u5d55\u5d51\u5d59\u5d4a\u5d5f\u5d60\u5d61\u5d62\u5d64\u5d6a\u5d6d\u5d70\u5d79\u5d7a\u5d7e\u5d7f\u5d81\u5d83\u5d88\u5d8a\u5d92\u5d93\u5d94\u5d95\u5d99\u5d9b\u5d9f\u5da0\u5da7\u5dab\u5db0\u5db4\u5db8\u5db9\u5dc3\u5dc7\u5dcb\u5dd0\u5dce\u5dd8\u5dd9\u5de0\u5de4"],["8fbca1","\u5de9\u5df8\u5df9\u5e00\u5e07\u5e0d\u5e12\u5e14\u5e15\u5e18\u5e1f\u5e20\u5e2e\u5e28\u5e32\u5e35\u5e3e\u5e4b\u5e50\u5e49\u5e51\u5e56\u5e58\u5e5b\u5e5c\u5e5e\u5e68\u5e6a",4,"\u5e70\u5e80\u5e8b\u5e8e\u5ea2\u5ea4\u5ea5\u5ea8\u5eaa\u5eac\u5eb1\u5eb3\u5ebd\u5ebe\u5ebf\u5ec6\u5ecc\u5ecb\u5ece\u5ed1\u5ed2\u5ed4\u5ed5\u5edc\u5ede\u5ee5\u5eeb\u5f02\u5f06\u5f07\u5f08\u5f0e\u5f19\u5f1c\u5f1d\u5f21\u5f22\u5f23\u5f24\u5f28\u5f2b\u5f2c\u5f2e\u5f30\u5f34\u5f36\u5f3b\u5f3d\u5f3f\u5f40\u5f44\u5f45\u5f47\u5f4d\u5f50\u5f54\u5f58\u5f5b\u5f60\u5f63\u5f64\u5f67"],["8fbda1","\u5f6f\u5f72\u5f74\u5f75\u5f78\u5f7a\u5f7d\u5f7e\u5f89\u5f8d\u5f8f\u5f96\u5f9c\u5f9d\u5fa2\u5fa7\u5fab\u5fa4\u5fac\u5faf\u5fb0\u5fb1\u5fb8\u5fc4\u5fc7\u5fc8\u5fc9\u5fcb\u5fd0",4,"\u5fde\u5fe1\u5fe2\u5fe8\u5fe9\u5fea\u5fec\u5fed\u5fee\u5fef\u5ff2\u5ff3\u5ff6\u5ffa\u5ffc\u6007\u600a\u600d\u6013\u6014\u6017\u6018\u601a\u601f\u6024\u602d\u6033\u6035\u6040\u6047\u6048\u6049\u604c\u6051\u6054\u6056\u6057\u605d\u6061\u6067\u6071\u607e\u607f\u6082\u6086\u6088\u608a\u608e\u6091\u6093\u6095\u6098\u609d\u609e\u60a2\u60a4\u60a5\u60a8\u60b0\u60b1\u60b7"],["8fbea1","\u60bb\u60be\u60c2\u60c4\u60c8\u60c9\u60ca\u60cb\u60ce\u60cf\u60d4\u60d5\u60d9\u60db\u60dd\u60de\u60e2\u60e5\u60f2\u60f5\u60f8\u60fc\u60fd\u6102\u6107\u610a\u610c\u6110",4,"\u6116\u6117\u6119\u611c\u611e\u6122\u612a\u612b\u6130\u6131\u6135\u6136\u6137\u6139\u6141\u6145\u6146\u6149\u615e\u6160\u616c\u6172\u6178\u617b\u617c\u617f\u6180\u6181\u6183\u6184\u618b\u618d\u6192\u6193\u6197\u6198\u619c\u619d\u619f\u61a0\u61a5\u61a8\u61aa\u61ad\u61b8\u61b9\u61bc\u61c0\u61c1\u61c2\u61ce\u61cf\u61d5\u61dc\u61dd\u61de\u61df\u61e1\u61e2\u61e7\u61e9\u61e5"],["8fbfa1","\u61ec\u61ed\u61ef\u6201\u6203\u6204\u6207\u6213\u6215\u621c\u6220\u6222\u6223\u6227\u6229\u622b\u6239\u623d\u6242\u6243\u6244\u6246\u624c\u6250\u6251\u6252\u6254\u6256\u625a\u625c\u6264\u626d\u626f\u6273\u627a\u627d\u628d\u628e\u628f\u6290\u62a6\u62a8\u62b3\u62b6\u62b7\u62ba\u62be\u62bf\u62c4\u62ce\u62d5\u62d6\u62da\u62ea\u62f2\u62f4\u62fc\u62fd\u6303\u6304\u630a\u630b\u630d\u6310\u6313\u6316\u6318\u6329\u632a\u632d\u6335\u6336\u6339\u633c\u6341\u6342\u6343\u6344\u6346\u634a\u634b\u634e\u6352\u6353\u6354\u6358\u635b\u6365\u6366\u636c\u636d\u6371\u6374\u6375"],["8fc0a1","\u6378\u637c\u637d\u637f\u6382\u6384\u6387\u638a\u6390\u6394\u6395\u6399\u639a\u639e\u63a4\u63a6\u63ad\u63ae\u63af\u63bd\u63c1\u63c5\u63c8\u63ce\u63d1\u63d3\u63d4\u63d5\u63dc\u63e0\u63e5\u63ea\u63ec\u63f2\u63f3\u63f5\u63f8\u63f9\u6409\u640a\u6410\u6412\u6414\u6418\u641e\u6420\u6422\u6424\u6425\u6429\u642a\u642f\u6430\u6435\u643d\u643f\u644b\u644f\u6451\u6452\u6453\u6454\u645a\u645b\u645c\u645d\u645f\u6460\u6461\u6463\u646d\u6473\u6474\u647b\u647d\u6485\u6487\u648f\u6490\u6491\u6498\u6499\u649b\u649d\u649f\u64a1\u64a3\u64a6\u64a8\u64ac\u64b3\u64bd\u64be\u64bf"],["8fc1a1","\u64c4\u64c9\u64ca\u64cb\u64cc\u64ce\u64d0\u64d1\u64d5\u64d7\u64e4\u64e5\u64e9\u64ea\u64ed\u64f0\u64f5\u64f7\u64fb\u64ff\u6501\u6504\u6508\u6509\u650a\u650f\u6513\u6514\u6516\u6519\u651b\u651e\u651f\u6522\u6526\u6529\u652e\u6531\u653a\u653c\u653d\u6543\u6547\u6549\u6550\u6552\u6554\u655f\u6560\u6567\u656b\u657a\u657d\u6581\u6585\u658a\u6592\u6595\u6598\u659d\u65a0\u65a3\u65a6\u65ae\u65b2\u65b3\u65b4\u65bf\u65c2\u65c8\u65c9\u65ce\u65d0\u65d4\u65d6\u65d8\u65df\u65f0\u65f2\u65f4\u65f5\u65f9\u65fe\u65ff\u6600\u6604\u6608\u6609\u660d\u6611\u6612\u6615\u6616\u661d"],["8fc2a1","\u661e\u6621\u6622\u6623\u6624\u6626\u6629\u662a\u662b\u662c\u662e\u6630\u6631\u6633\u6639\u6637\u6640\u6645\u6646\u664a\u664c\u6651\u664e\u6657\u6658\u6659\u665b\u665c\u6660\u6661\u66fb\u666a\u666b\u666c\u667e\u6673\u6675\u667f\u6677\u6678\u6679\u667b\u6680\u667c\u668b\u668c\u668d\u6690\u6692\u6699\u669a\u669b\u669c\u669f\u66a0\u66a4\u66ad\u66b1\u66b2\u66b5\u66bb\u66bf\u66c0\u66c2\u66c3\u66c8\u66cc\u66ce\u66cf\u66d4\u66db\u66df\u66e8\u66eb\u66ec\u66ee\u66fa\u6705\u6707\u670e\u6713\u6719\u671c\u6720\u6722\u6733\u673e\u6745\u6747\u6748\u674c\u6754\u6755\u675d"],["8fc3a1","\u6766\u676c\u676e\u6774\u6776\u677b\u6781\u6784\u678e\u678f\u6791\u6793\u6796\u6798\u6799\u679b\u67b0\u67b1\u67b2\u67b5\u67bb\u67bc\u67bd\u67f9\u67c0\u67c2\u67c3\u67c5\u67c8\u67c9\u67d2\u67d7\u67d9\u67dc\u67e1\u67e6\u67f0\u67f2\u67f6\u67f7\u6852\u6814\u6819\u681d\u681f\u6828\u6827\u682c\u682d\u682f\u6830\u6831\u6833\u683b\u683f\u6844\u6845\u684a\u684c\u6855\u6857\u6858\u685b\u686b\u686e",4,"\u6875\u6879\u687a\u687b\u687c\u6882\u6884\u6886\u6888\u6896\u6898\u689a\u689c\u68a1\u68a3\u68a5\u68a9\u68aa\u68ae\u68b2\u68bb\u68c5\u68c8\u68cc\u68cf"],["8fc4a1","\u68d0\u68d1\u68d3\u68d6\u68d9\u68dc\u68dd\u68e5\u68e8\u68ea\u68eb\u68ec\u68ed\u68f0\u68f1\u68f5\u68f6\u68fb\u68fc\u68fd\u6906\u6909\u690a\u6910\u6911\u6913\u6916\u6917\u6931\u6933\u6935\u6938\u693b\u6942\u6945\u6949\u694e\u6957\u695b\u6963\u6964\u6965\u6966\u6968\u6969\u696c\u6970\u6971\u6972\u697a\u697b\u697f\u6980\u698d\u6992\u6996\u6998\u69a1\u69a5\u69a6\u69a8\u69ab\u69ad\u69af\u69b7\u69b8\u69ba\u69bc\u69c5\u69c8\u69d1\u69d6\u69d7\u69e2\u69e5\u69ee\u69ef\u69f1\u69f3\u69f5\u69fe\u6a00\u6a01\u6a03\u6a0f\u6a11\u6a15\u6a1a\u6a1d\u6a20\u6a24\u6a28\u6a30\u6a32"],["8fc5a1","\u6a34\u6a37\u6a3b\u6a3e\u6a3f\u6a45\u6a46\u6a49\u6a4a\u6a4e\u6a50\u6a51\u6a52\u6a55\u6a56\u6a5b\u6a64\u6a67\u6a6a\u6a71\u6a73\u6a7e\u6a81\u6a83\u6a86\u6a87\u6a89\u6a8b\u6a91\u6a9b\u6a9d\u6a9e\u6a9f\u6aa5\u6aab\u6aaf\u6ab0\u6ab1\u6ab4\u6abd\u6abe\u6abf\u6ac6\u6ac9\u6ac8\u6acc\u6ad0\u6ad4\u6ad5\u6ad6\u6adc\u6add\u6ae4\u6ae7\u6aec\u6af0\u6af1\u6af2\u6afc\u6afd\u6b02\u6b03\u6b06\u6b07\u6b09\u6b0f\u6b10\u6b11\u6b17\u6b1b\u6b1e\u6b24\u6b28\u6b2b\u6b2c\u6b2f\u6b35\u6b36\u6b3b\u6b3f\u6b46\u6b4a\u6b4d\u6b52\u6b56\u6b58\u6b5d\u6b60\u6b67\u6b6b\u6b6e\u6b70\u6b75\u6b7d"],["8fc6a1","\u6b7e\u6b82\u6b85\u6b97\u6b9b\u6b9f\u6ba0\u6ba2\u6ba3\u6ba8\u6ba9\u6bac\u6bad\u6bae\u6bb0\u6bb8\u6bb9\u6bbd\u6bbe\u6bc3\u6bc4\u6bc9\u6bcc\u6bd6\u6bda\u6be1\u6be3\u6be6\u6be7\u6bee\u6bf1\u6bf7\u6bf9\u6bff\u6c02\u6c04\u6c05\u6c09\u6c0d\u6c0e\u6c10\u6c12\u6c19\u6c1f\u6c26\u6c27\u6c28\u6c2c\u6c2e\u6c33\u6c35\u6c36\u6c3a\u6c3b\u6c3f\u6c4a\u6c4b\u6c4d\u6c4f\u6c52\u6c54\u6c59\u6c5b\u6c5c\u6c6b\u6c6d\u6c6f\u6c74\u6c76\u6c78\u6c79\u6c7b\u6c85\u6c86\u6c87\u6c89\u6c94\u6c95\u6c97\u6c98\u6c9c\u6c9f\u6cb0\u6cb2\u6cb4\u6cc2\u6cc6\u6ccd\u6ccf\u6cd0\u6cd1\u6cd2\u6cd4\u6cd6"],["8fc7a1","\u6cda\u6cdc\u6ce0\u6ce7\u6ce9\u6ceb\u6cec\u6cee\u6cf2\u6cf4\u6d04\u6d07\u6d0a\u6d0e\u6d0f\u6d11\u6d13\u6d1a\u6d26\u6d27\u6d28\u6c67\u6d2e\u6d2f\u6d31\u6d39\u6d3c\u6d3f\u6d57\u6d5e\u6d5f\u6d61\u6d65\u6d67\u6d6f\u6d70\u6d7c\u6d82\u6d87\u6d91\u6d92\u6d94\u6d96\u6d97\u6d98\u6daa\u6dac\u6db4\u6db7\u6db9\u6dbd\u6dbf\u6dc4\u6dc8\u6dca\u6dce\u6dcf\u6dd6\u6ddb\u6ddd\u6ddf\u6de0\u6de2\u6de5\u6de9\u6def\u6df0\u6df4\u6df6\u6dfc\u6e00\u6e04\u6e1e\u6e22\u6e27\u6e32\u6e36\u6e39\u6e3b\u6e3c\u6e44\u6e45\u6e48\u6e49\u6e4b\u6e4f\u6e51\u6e52\u6e53\u6e54\u6e57\u6e5c\u6e5d\u6e5e"],["8fc8a1","\u6e62\u6e63\u6e68\u6e73\u6e7b\u6e7d\u6e8d\u6e93\u6e99\u6ea0\u6ea7\u6ead\u6eae\u6eb1\u6eb3\u6ebb\u6ebf\u6ec0\u6ec1\u6ec3\u6ec7\u6ec8\u6eca\u6ecd\u6ece\u6ecf\u6eeb\u6eed\u6eee\u6ef9\u6efb\u6efd\u6f04\u6f08\u6f0a\u6f0c\u6f0d\u6f16\u6f18\u6f1a\u6f1b\u6f26\u6f29\u6f2a\u6f2f\u6f30\u6f33\u6f36\u6f3b\u6f3c\u6f2d\u6f4f\u6f51\u6f52\u6f53\u6f57\u6f59\u6f5a\u6f5d\u6f5e\u6f61\u6f62\u6f68\u6f6c\u6f7d\u6f7e\u6f83\u6f87\u6f88\u6f8b\u6f8c\u6f8d\u6f90\u6f92\u6f93\u6f94\u6f96\u6f9a\u6f9f\u6fa0\u6fa5\u6fa6\u6fa7\u6fa8\u6fae\u6faf\u6fb0\u6fb5\u6fb6\u6fbc\u6fc5\u6fc7\u6fc8\u6fca"],["8fc9a1","\u6fda\u6fde\u6fe8\u6fe9\u6ff0\u6ff5\u6ff9\u6ffc\u6ffd\u7000\u7005\u7006\u7007\u700d\u7017\u7020\u7023\u702f\u7034\u7037\u7039\u703c\u7043\u7044\u7048\u7049\u704a\u704b\u7054\u7055\u705d\u705e\u704e\u7064\u7065\u706c\u706e\u7075\u7076\u707e\u7081\u7085\u7086\u7094",4,"\u709b\u70a4\u70ab\u70b0\u70b1\u70b4\u70b7\u70ca\u70d1\u70d3\u70d4\u70d5\u70d6\u70d8\u70dc\u70e4\u70fa\u7103",4,"\u710b\u710c\u710f\u711e\u7120\u712b\u712d\u712f\u7130\u7131\u7138\u7141\u7145\u7146\u7147\u714a\u714b\u7150\u7152\u7157\u715a\u715c\u715e\u7160"],["8fcaa1","\u7168\u7179\u7180\u7185\u7187\u718c\u7192\u719a\u719b\u71a0\u71a2\u71af\u71b0\u71b2\u71b3\u71ba\u71bf\u71c0\u71c1\u71c4\u71cb\u71cc\u71d3\u71d6\u71d9\u71da\u71dc\u71f8\u71fe\u7200\u7207\u7208\u7209\u7213\u7217\u721a\u721d\u721f\u7224\u722b\u722f\u7234\u7238\u7239\u7241\u7242\u7243\u7245\u724e\u724f\u7250\u7253\u7255\u7256\u725a\u725c\u725e\u7260\u7263\u7268\u726b\u726e\u726f\u7271\u7277\u7278\u727b\u727c\u727f\u7284\u7289\u728d\u728e\u7293\u729b\u72a8\u72ad\u72ae\u72b1\u72b4\u72be\u72c1\u72c7\u72c9\u72cc\u72d5\u72d6\u72d8\u72df\u72e5\u72f3\u72f4\u72fa\u72fb"],["8fcba1","\u72fe\u7302\u7304\u7305\u7307\u730b\u730d\u7312\u7313\u7318\u7319\u731e\u7322\u7324\u7327\u7328\u732c\u7331\u7332\u7335\u733a\u733b\u733d\u7343\u734d\u7350\u7352\u7356\u7358\u735d\u735e\u735f\u7360\u7366\u7367\u7369\u736b\u736c\u736e\u736f\u7371\u7377\u7379\u737c\u7380\u7381\u7383\u7385\u7386\u738e\u7390\u7393\u7395\u7397\u7398\u739c\u739e\u739f\u73a0\u73a2\u73a5\u73a6\u73aa\u73ab\u73ad\u73b5\u73b7\u73b9\u73bc\u73bd\u73bf\u73c5\u73c6\u73c9\u73cb\u73cc\u73cf\u73d2\u73d3\u73d6\u73d9\u73dd\u73e1\u73e3\u73e6\u73e7\u73e9\u73f4\u73f5\u73f7\u73f9\u73fa\u73fb\u73fd"],["8fcca1","\u73ff\u7400\u7401\u7404\u7407\u740a\u7411\u741a\u741b\u7424\u7426\u7428",9,"\u7439\u7440\u7443\u7444\u7446\u7447\u744b\u744d\u7451\u7452\u7457\u745d\u7462\u7466\u7467\u7468\u746b\u746d\u746e\u7471\u7472\u7480\u7481\u7485\u7486\u7487\u7489\u748f\u7490\u7491\u7492\u7498\u7499\u749a\u749c\u749f\u74a0\u74a1\u74a3\u74a6\u74a8\u74a9\u74aa\u74ab\u74ae\u74af\u74b1\u74b2\u74b5\u74b9\u74bb\u74bf\u74c8\u74c9\u74cc\u74d0\u74d3\u74d8\u74da\u74db\u74de\u74df\u74e4\u74e8\u74ea\u74eb\u74ef\u74f4\u74fa\u74fb\u74fc\u74ff\u7506"],["8fcda1","\u7512\u7516\u7517\u7520\u7521\u7524\u7527\u7529\u752a\u752f\u7536\u7539\u753d\u753e\u753f\u7540\u7543\u7547\u7548\u754e\u7550\u7552\u7557\u755e\u755f\u7561\u756f\u7571\u7579",5,"\u7581\u7585\u7590\u7592\u7593\u7595\u7599\u759c\u75a2\u75a4\u75b4\u75ba\u75bf\u75c0\u75c1\u75c4\u75c6\u75cc\u75ce\u75cf\u75d7\u75dc\u75df\u75e0\u75e1\u75e4\u75e7\u75ec\u75ee\u75ef\u75f1\u75f9\u7600\u7602\u7603\u7604\u7607\u7608\u760a\u760c\u760f\u7612\u7613\u7615\u7616\u7619\u761b\u761c\u761d\u761e\u7623\u7625\u7626\u7629\u762d\u7632\u7633\u7635\u7638\u7639"],["8fcea1","\u763a\u763c\u764a\u7640\u7641\u7643\u7644\u7645\u7649\u764b\u7655\u7659\u765f\u7664\u7665\u766d\u766e\u766f\u7671\u7674\u7681\u7685\u768c\u768d\u7695\u769b\u769c\u769d\u769f\u76a0\u76a2",6,"\u76aa\u76ad\u76bd\u76c1\u76c5\u76c9\u76cb\u76cc\u76ce\u76d4\u76d9\u76e0\u76e6\u76e8\u76ec\u76f0\u76f1\u76f6\u76f9\u76fc\u7700\u7706\u770a\u770e\u7712\u7714\u7715\u7717\u7719\u771a\u771c\u7722\u7728\u772d\u772e\u772f\u7734\u7735\u7736\u7739\u773d\u773e\u7742\u7745\u7746\u774a\u774d\u774e\u774f\u7752\u7756\u7757\u775c\u775e\u775f\u7760\u7762"],["8fcfa1","\u7764\u7767\u776a\u776c\u7770\u7772\u7773\u7774\u777a\u777d\u7780\u7784\u778c\u778d\u7794\u7795\u7796\u779a\u779f\u77a2\u77a7\u77aa\u77ae\u77af\u77b1\u77b5\u77be\u77c3\u77c9\u77d1\u77d2\u77d5\u77d9\u77de\u77df\u77e0\u77e4\u77e6\u77ea\u77ec\u77f0\u77f1\u77f4\u77f8\u77fb\u7805\u7806\u7809\u780d\u780e\u7811\u781d\u7821\u7822\u7823\u782d\u782e\u7830\u7835\u7837\u7843\u7844\u7847\u7848\u784c\u784e\u7852\u785c\u785e\u7860\u7861\u7863\u7864\u7868\u786a\u786e\u787a\u787e\u788a\u788f\u7894\u7898\u78a1\u789d\u789e\u789f\u78a4\u78a8\u78ac\u78ad\u78b0\u78b1\u78b2\u78b3"],["8fd0a1","\u78bb\u78bd\u78bf\u78c7\u78c8\u78c9\u78cc\u78ce\u78d2\u78d3\u78d5\u78d6\u78e4\u78db\u78df\u78e0\u78e1\u78e6\u78ea\u78f2\u78f3\u7900\u78f6\u78f7\u78fa\u78fb\u78ff\u7906\u790c\u7910\u791a\u791c\u791e\u791f\u7920\u7925\u7927\u7929\u792d\u7931\u7934\u7935\u793b\u793d\u793f\u7944\u7945\u7946\u794a\u794b\u794f\u7951\u7954\u7958\u795b\u795c\u7967\u7969\u796b\u7972\u7979\u797b\u797c\u797e\u798b\u798c\u7991\u7993\u7994\u7995\u7996\u7998\u799b\u799c\u79a1\u79a8\u79a9\u79ab\u79af\u79b1\u79b4\u79b8\u79bb\u79c2\u79c4\u79c7\u79c8\u79ca\u79cf\u79d4\u79d6\u79da\u79dd\u79de"],["8fd1a1","\u79e0\u79e2\u79e5\u79ea\u79eb\u79ed\u79f1\u79f8\u79fc\u7a02\u7a03\u7a07\u7a09\u7a0a\u7a0c\u7a11\u7a15\u7a1b\u7a1e\u7a21\u7a27\u7a2b\u7a2d\u7a2f\u7a30\u7a34\u7a35\u7a38\u7a39\u7a3a\u7a44\u7a45\u7a47\u7a48\u7a4c\u7a55\u7a56\u7a59\u7a5c\u7a5d\u7a5f\u7a60\u7a65\u7a67\u7a6a\u7a6d\u7a75\u7a78\u7a7e\u7a80\u7a82\u7a85\u7a86\u7a8a\u7a8b\u7a90\u7a91\u7a94\u7a9e\u7aa0\u7aa3\u7aac\u7ab3\u7ab5\u7ab9\u7abb\u7abc\u7ac6\u7ac9\u7acc\u7ace\u7ad1\u7adb\u7ae8\u7ae9\u7aeb\u7aec\u7af1\u7af4\u7afb\u7afd\u7afe\u7b07\u7b14\u7b1f\u7b23\u7b27\u7b29\u7b2a\u7b2b\u7b2d\u7b2e\u7b2f\u7b30"],["8fd2a1","\u7b31\u7b34\u7b3d\u7b3f\u7b40\u7b41\u7b47\u7b4e\u7b55\u7b60\u7b64\u7b66\u7b69\u7b6a\u7b6d\u7b6f\u7b72\u7b73\u7b77\u7b84\u7b89\u7b8e\u7b90\u7b91\u7b96\u7b9b\u7b9e\u7ba0\u7ba5\u7bac\u7baf\u7bb0\u7bb2\u7bb5\u7bb6\u7bba\u7bbb\u7bbc\u7bbd\u7bc2\u7bc5\u7bc8\u7bca\u7bd4\u7bd6\u7bd7\u7bd9\u7bda\u7bdb\u7be8\u7bea\u7bf2\u7bf4\u7bf5\u7bf8\u7bf9\u7bfa\u7bfc\u7bfe\u7c01\u7c02\u7c03\u7c04\u7c06\u7c09\u7c0b\u7c0c\u7c0e\u7c0f\u7c19\u7c1b\u7c20\u7c25\u7c26\u7c28\u7c2c\u7c31\u7c33\u7c34\u7c36\u7c39\u7c3a\u7c46\u7c4a\u7c55\u7c51\u7c52\u7c53\u7c59",5],["8fd3a1","\u7c61\u7c63\u7c67\u7c69\u7c6d\u7c6e\u7c70\u7c72\u7c79\u7c7c\u7c7d\u7c86\u7c87\u7c8f\u7c94\u7c9e\u7ca0\u7ca6\u7cb0\u7cb6\u7cb7\u7cba\u7cbb\u7cbc\u7cbf\u7cc4\u7cc7\u7cc8\u7cc9\u7ccd\u7ccf\u7cd3\u7cd4\u7cd5\u7cd7\u7cd9\u7cda\u7cdd\u7ce6\u7ce9\u7ceb\u7cf5\u7d03\u7d07\u7d08\u7d09\u7d0f\u7d11\u7d12\u7d13\u7d16\u7d1d\u7d1e\u7d23\u7d26\u7d2a\u7d2d\u7d31\u7d3c\u7d3d\u7d3e\u7d40\u7d41\u7d47\u7d48\u7d4d\u7d51\u7d53\u7d57\u7d59\u7d5a\u7d5c\u7d5d\u7d65\u7d67\u7d6a\u7d70\u7d78\u7d7a\u7d7b\u7d7f\u7d81\u7d82\u7d83\u7d85\u7d86\u7d88\u7d8b\u7d8c\u7d8d\u7d91\u7d96\u7d97\u7d9d"],["8fd4a1","\u7d9e\u7da6\u7da7\u7daa\u7db3\u7db6\u7db7\u7db9\u7dc2",4,"\u7dcc\u7dcd\u7dce\u7dd7\u7dd9\u7e00\u7de2\u7de5\u7de6\u7dea\u7deb\u7ded\u7df1\u7df5\u7df6\u7df9\u7dfa\u7e08\u7e10\u7e11\u7e15\u7e17\u7e1c\u7e1d\u7e20\u7e27\u7e28\u7e2c\u7e2d\u7e2f\u7e33\u7e36\u7e3f\u7e44\u7e45\u7e47\u7e4e\u7e50\u7e52\u7e58\u7e5f\u7e61\u7e62\u7e65\u7e6b\u7e6e\u7e6f\u7e73\u7e78\u7e7e\u7e81\u7e86\u7e87\u7e8a\u7e8d\u7e91\u7e95\u7e98\u7e9a\u7e9d\u7e9e\u7f3c\u7f3b\u7f3d\u7f3e\u7f3f\u7f43\u7f44\u7f47\u7f4f\u7f52\u7f53\u7f5b\u7f5c\u7f5d\u7f61\u7f63\u7f64\u7f65\u7f66\u7f6d"],["8fd5a1","\u7f71\u7f7d\u7f7e\u7f7f\u7f80\u7f8b\u7f8d\u7f8f\u7f90\u7f91\u7f96\u7f97\u7f9c\u7fa1\u7fa2\u7fa6\u7faa\u7fad\u7fb4\u7fbc\u7fbf\u7fc0\u7fc3\u7fc8\u7fce\u7fcf\u7fdb\u7fdf\u7fe3\u7fe5\u7fe8\u7fec\u7fee\u7fef\u7ff2\u7ffa\u7ffd\u7ffe\u7fff\u8007\u8008\u800a\u800d\u800e\u800f\u8011\u8013\u8014\u8016\u801d\u801e\u801f\u8020\u8024\u8026\u802c\u802e\u8030\u8034\u8035\u8037\u8039\u803a\u803c\u803e\u8040\u8044\u8060\u8064\u8066\u806d\u8071\u8075\u8081\u8088\u808e\u809c\u809e\u80a6\u80a7\u80ab\u80b8\u80b9\u80c8\u80cd\u80cf\u80d2\u80d4\u80d5\u80d7\u80d8\u80e0\u80ed\u80ee"],["8fd6a1","\u80f0\u80f2\u80f3\u80f6\u80f9\u80fa\u80fe\u8103\u810b\u8116\u8117\u8118\u811c\u811e\u8120\u8124\u8127\u812c\u8130\u8135\u813a\u813c\u8145\u8147\u814a\u814c\u8152\u8157\u8160\u8161\u8167\u8168\u8169\u816d\u816f\u8177\u8181\u8190\u8184\u8185\u8186\u818b\u818e\u8196\u8198\u819b\u819e\u81a2\u81ae\u81b2\u81b4\u81bb\u81cb\u81c3\u81c5\u81ca\u81ce\u81cf\u81d5\u81d7\u81db\u81dd\u81de\u81e1\u81e4\u81eb\u81ec\u81f0\u81f1\u81f2\u81f5\u81f6\u81f8\u81f9\u81fd\u81ff\u8200\u8203\u820f\u8213\u8214\u8219\u821a\u821d\u8221\u8222\u8228\u8232\u8234\u823a\u8243\u8244\u8245\u8246"],["8fd7a1","\u824b\u824e\u824f\u8251\u8256\u825c\u8260\u8263\u8267\u826d\u8274\u827b\u827d\u827f\u8280\u8281\u8283\u8284\u8287\u8289\u828a\u828e\u8291\u8294\u8296\u8298\u829a\u829b\u82a0\u82a1\u82a3\u82a4\u82a7\u82a8\u82a9\u82aa\u82ae\u82b0\u82b2\u82b4\u82b7\u82ba\u82bc\u82be\u82bf\u82c6\u82d0\u82d5\u82da\u82e0\u82e2\u82e4\u82e8\u82ea\u82ed\u82ef\u82f6\u82f7\u82fd\u82fe\u8300\u8301\u8307\u8308\u830a\u830b\u8354\u831b\u831d\u831e\u831f\u8321\u8322\u832c\u832d\u832e\u8330\u8333\u8337\u833a\u833c\u833d\u8342\u8343\u8344\u8347\u834d\u834e\u8351\u8355\u8356\u8357\u8370\u8378"],["8fd8a1","\u837d\u837f\u8380\u8382\u8384\u8386\u838d\u8392\u8394\u8395\u8398\u8399\u839b\u839c\u839d\u83a6\u83a7\u83a9\u83ac\u83be\u83bf\u83c0\u83c7\u83c9\u83cf\u83d0\u83d1\u83d4\u83dd\u8353\u83e8\u83ea\u83f6\u83f8\u83f9\u83fc\u8401\u8406\u840a\u840f\u8411\u8415\u8419\u83ad\u842f\u8439\u8445\u8447\u8448\u844a\u844d\u844f\u8451\u8452\u8456\u8458\u8459\u845a\u845c\u8460\u8464\u8465\u8467\u846a\u8470\u8473\u8474\u8476\u8478\u847c\u847d\u8481\u8485\u8492\u8493\u8495\u849e\u84a6\u84a8\u84a9\u84aa\u84af\u84b1\u84b4\u84ba\u84bd\u84be\u84c0\u84c2\u84c7\u84c8\u84cc\u84cf\u84d3"],["8fd9a1","\u84dc\u84e7\u84ea\u84ef\u84f0\u84f1\u84f2\u84f7\u8532\u84fa\u84fb\u84fd\u8502\u8503\u8507\u850c\u850e\u8510\u851c\u851e\u8522\u8523\u8524\u8525\u8527\u852a\u852b\u852f\u8533\u8534\u8536\u853f\u8546\u854f",4,"\u8556\u8559\u855c",6,"\u8564\u856b\u856f\u8579\u857a\u857b\u857d\u857f\u8581\u8585\u8586\u8589\u858b\u858c\u858f\u8593\u8598\u859d\u859f\u85a0\u85a2\u85a5\u85a7\u85b4\u85b6\u85b7\u85b8\u85bc\u85bd\u85be\u85bf\u85c2\u85c7\u85ca\u85cb\u85ce\u85ad\u85d8\u85da\u85df\u85e0\u85e6\u85e8\u85ed\u85f3\u85f6\u85fc"],["8fdaa1","\u85ff\u8600\u8604\u8605\u860d\u860e\u8610\u8611\u8612\u8618\u8619\u861b\u861e\u8621\u8627\u8629\u8636\u8638\u863a\u863c\u863d\u8640\u8642\u8646\u8652\u8653\u8656\u8657\u8658\u8659\u865d\u8660",4,"\u8669\u866c\u866f\u8675\u8676\u8677\u867a\u868d\u8691\u8696\u8698\u869a\u869c\u86a1\u86a6\u86a7\u86a8\u86ad\u86b1\u86b3\u86b4\u86b5\u86b7\u86b8\u86b9\u86bf\u86c0\u86c1\u86c3\u86c5\u86d1\u86d2\u86d5\u86d7\u86da\u86dc\u86e0\u86e3\u86e5\u86e7\u8688\u86fa\u86fc\u86fd\u8704\u8705\u8707\u870b\u870e\u870f\u8710\u8713\u8714\u8719\u871e\u871f\u8721\u8723"],["8fdba1","\u8728\u872e\u872f\u8731\u8732\u8739\u873a\u873c\u873d\u873e\u8740\u8743\u8745\u874d\u8758\u875d\u8761\u8764\u8765\u876f\u8771\u8772\u877b\u8783",6,"\u878b\u878c\u8790\u8793\u8795\u8797\u8798\u8799\u879e\u87a0\u87a3\u87a7\u87ac\u87ad\u87ae\u87b1\u87b5\u87be\u87bf\u87c1\u87c8\u87c9\u87ca\u87ce\u87d5\u87d6\u87d9\u87da\u87dc\u87df\u87e2\u87e3\u87e4\u87ea\u87eb\u87ed\u87f1\u87f3\u87f8\u87fa\u87ff\u8801\u8803\u8806\u8809\u880a\u880b\u8810\u8819\u8812\u8813\u8814\u8818\u881a\u881b\u881c\u881e\u881f\u8828\u882d\u882e\u8830\u8832\u8835"],["8fdca1","\u883a\u883c\u8841\u8843\u8845\u8848\u8849\u884a\u884b\u884e\u8851\u8855\u8856\u8858\u885a\u885c\u885f\u8860\u8864\u8869\u8871\u8879\u887b\u8880\u8898\u889a\u889b\u889c\u889f\u88a0\u88a8\u88aa\u88ba\u88bd\u88be\u88c0\u88ca",4,"\u88d1\u88d2\u88d3\u88db\u88de\u88e7\u88ef\u88f0\u88f1\u88f5\u88f7\u8901\u8906\u890d\u890e\u890f\u8915\u8916\u8918\u8919\u891a\u891c\u8920\u8926\u8927\u8928\u8930\u8931\u8932\u8935\u8939\u893a\u893e\u8940\u8942\u8945\u8946\u8949\u894f\u8952\u8957\u895a\u895b\u895c\u8961\u8962\u8963\u896b\u896e\u8970\u8973\u8975\u897a"],["8fdda1","\u897b\u897c\u897d\u8989\u898d\u8990\u8994\u8995\u899b\u899c\u899f\u89a0\u89a5\u89b0\u89b4\u89b5\u89b6\u89b7\u89bc\u89d4",4,"\u89e5\u89e9\u89eb\u89ed\u89f1\u89f3\u89f6\u89f9\u89fd\u89ff\u8a04\u8a05\u8a07\u8a0f\u8a11\u8a12\u8a14\u8a15\u8a1e\u8a20\u8a22\u8a24\u8a26\u8a2b\u8a2c\u8a2f\u8a35\u8a37\u8a3d\u8a3e\u8a40\u8a43\u8a45\u8a47\u8a49\u8a4d\u8a4e\u8a53\u8a56\u8a57\u8a58\u8a5c\u8a5d\u8a61\u8a65\u8a67\u8a75\u8a76\u8a77\u8a79\u8a7a\u8a7b\u8a7e\u8a7f\u8a80\u8a83\u8a86\u8a8b\u8a8f\u8a90\u8a92\u8a96\u8a97\u8a99\u8a9f\u8aa7\u8aa9\u8aae\u8aaf\u8ab3"],["8fdea1","\u8ab6\u8ab7\u8abb\u8abe\u8ac3\u8ac6\u8ac8\u8ac9\u8aca\u8ad1\u8ad3\u8ad4\u8ad5\u8ad7\u8add\u8adf\u8aec\u8af0\u8af4\u8af5\u8af6\u8afc\u8aff\u8b05\u8b06\u8b0b\u8b11\u8b1c\u8b1e\u8b1f\u8b0a\u8b2d\u8b30\u8b37\u8b3c\u8b42",4,"\u8b48\u8b52\u8b53\u8b54\u8b59\u8b4d\u8b5e\u8b63\u8b6d\u8b76\u8b78\u8b79\u8b7c\u8b7e\u8b81\u8b84\u8b85\u8b8b\u8b8d\u8b8f\u8b94\u8b95\u8b9c\u8b9e\u8b9f\u8c38\u8c39\u8c3d\u8c3e\u8c45\u8c47\u8c49\u8c4b\u8c4f\u8c51\u8c53\u8c54\u8c57\u8c58\u8c5b\u8c5d\u8c59\u8c63\u8c64\u8c66\u8c68\u8c69\u8c6d\u8c73\u8c75\u8c76\u8c7b\u8c7e\u8c86"],["8fdfa1","\u8c87\u8c8b\u8c90\u8c92\u8c93\u8c99\u8c9b\u8c9c\u8ca4\u8cb9\u8cba\u8cc5\u8cc6\u8cc9\u8ccb\u8ccf\u8cd6\u8cd5\u8cd9\u8cdd\u8ce1\u8ce8\u8cec\u8cef\u8cf0\u8cf2\u8cf5\u8cf7\u8cf8\u8cfe\u8cff\u8d01\u8d03\u8d09\u8d12\u8d17\u8d1b\u8d65\u8d69\u8d6c\u8d6e\u8d7f\u8d82\u8d84\u8d88\u8d8d\u8d90\u8d91\u8d95\u8d9e\u8d9f\u8da0\u8da6\u8dab\u8dac\u8daf\u8db2\u8db5\u8db7\u8db9\u8dbb\u8dc0\u8dc5\u8dc6\u8dc7\u8dc8\u8dca\u8dce\u8dd1\u8dd4\u8dd5\u8dd7\u8dd9\u8de4\u8de5\u8de7\u8dec\u8df0\u8dbc\u8df1\u8df2\u8df4\u8dfd\u8e01\u8e04\u8e05\u8e06\u8e0b\u8e11\u8e14\u8e16\u8e20\u8e21\u8e22"],["8fe0a1","\u8e23\u8e26\u8e27\u8e31\u8e33\u8e36\u8e37\u8e38\u8e39\u8e3d\u8e40\u8e41\u8e4b\u8e4d\u8e4e\u8e4f\u8e54\u8e5b\u8e5c\u8e5d\u8e5e\u8e61\u8e62\u8e69\u8e6c\u8e6d\u8e6f\u8e70\u8e71\u8e79\u8e7a\u8e7b\u8e82\u8e83\u8e89\u8e90\u8e92\u8e95\u8e9a\u8e9b\u8e9d\u8e9e\u8ea2\u8ea7\u8ea9\u8ead\u8eae\u8eb3\u8eb5\u8eba\u8ebb\u8ec0\u8ec1\u8ec3\u8ec4\u8ec7\u8ecf\u8ed1\u8ed4\u8edc\u8ee8\u8eee\u8ef0\u8ef1\u8ef7\u8ef9\u8efa\u8eed\u8f00\u8f02\u8f07\u8f08\u8f0f\u8f10\u8f16\u8f17\u8f18\u8f1e\u8f20\u8f21\u8f23\u8f25\u8f27\u8f28\u8f2c\u8f2d\u8f2e\u8f34\u8f35\u8f36\u8f37\u8f3a\u8f40\u8f41"],["8fe1a1","\u8f43\u8f47\u8f4f\u8f51",4,"\u8f58\u8f5d\u8f5e\u8f65\u8f9d\u8fa0\u8fa1\u8fa4\u8fa5\u8fa6\u8fb5\u8fb6\u8fb8\u8fbe\u8fc0\u8fc1\u8fc6\u8fca\u8fcb\u8fcd\u8fd0\u8fd2\u8fd3\u8fd5\u8fe0\u8fe3\u8fe4\u8fe8\u8fee\u8ff1\u8ff5\u8ff6\u8ffb\u8ffe\u9002\u9004\u9008\u900c\u9018\u901b\u9028\u9029\u902f\u902a\u902c\u902d\u9033\u9034\u9037\u903f\u9043\u9044\u904c\u905b\u905d\u9062\u9066\u9067\u906c\u9070\u9074\u9079\u9085\u9088\u908b\u908c\u908e\u9090\u9095\u9097\u9098\u9099\u909b\u90a0\u90a1\u90a2\u90a5\u90b0\u90b2\u90b3\u90b4\u90b6\u90bd\u90cc\u90be\u90c3"],["8fe2a1","\u90c4\u90c5\u90c7\u90c8\u90d5\u90d7\u90d8\u90d9\u90dc\u90dd\u90df\u90e5\u90d2\u90f6\u90eb\u90ef\u90f0\u90f4\u90fe\u90ff\u9100\u9104\u9105\u9106\u9108\u910d\u9110\u9114\u9116\u9117\u9118\u911a\u911c\u911e\u9120\u9125\u9122\u9123\u9127\u9129\u912e\u912f\u9131\u9134\u9136\u9137\u9139\u913a\u913c\u913d\u9143\u9147\u9148\u914f\u9153\u9157\u9159\u915a\u915b\u9161\u9164\u9167\u916d\u9174\u9179\u917a\u917b\u9181\u9183\u9185\u9186\u918a\u918e\u9191\u9193\u9194\u9195\u9198\u919e\u91a1\u91a6\u91a8\u91ac\u91ad\u91ae\u91b0\u91b1\u91b2\u91b3\u91b6\u91bb\u91bc\u91bd\u91bf"],["8fe3a1","\u91c2\u91c3\u91c5\u91d3\u91d4\u91d7\u91d9\u91da\u91de\u91e4\u91e5\u91e9\u91ea\u91ec",5,"\u91f7\u91f9\u91fb\u91fd\u9200\u9201\u9204\u9205\u9206\u9207\u9209\u920a\u920c\u9210\u9212\u9213\u9216\u9218\u921c\u921d\u9223\u9224\u9225\u9226\u9228\u922e\u922f\u9230\u9233\u9235\u9236\u9238\u9239\u923a\u923c\u923e\u9240\u9242\u9243\u9246\u9247\u924a\u924d\u924e\u924f\u9251\u9258\u9259\u925c\u925d\u9260\u9261\u9265\u9267\u9268\u9269\u926e\u926f\u9270\u9275",4,"\u927b\u927c\u927d\u927f\u9288\u9289\u928a\u928d\u928e\u9292\u9297"],["8fe4a1","\u9299\u929f\u92a0\u92a4\u92a5\u92a7\u92a8\u92ab\u92af\u92b2\u92b6\u92b8\u92ba\u92bb\u92bc\u92bd\u92bf",4,"\u92c5\u92c6\u92c7\u92c8\u92cb\u92cc\u92cd\u92ce\u92d0\u92d3\u92d5\u92d7\u92d8\u92d9\u92dc\u92dd\u92df\u92e0\u92e1\u92e3\u92e5\u92e7\u92e8\u92ec\u92ee\u92f0\u92f9\u92fb\u92ff\u9300\u9302\u9308\u930d\u9311\u9314\u9315\u931c\u931d\u931e\u931f\u9321\u9324\u9325\u9327\u9329\u932a\u9333\u9334\u9336\u9337\u9347\u9348\u9349\u9350\u9351\u9352\u9355\u9357\u9358\u935a\u935e\u9364\u9365\u9367\u9369\u936a\u936d\u936f\u9370\u9371\u9373\u9374\u9376"],["8fe5a1","\u937a\u937d\u937f\u9380\u9381\u9382\u9388\u938a\u938b\u938d\u938f\u9392\u9395\u9398\u939b\u939e\u93a1\u93a3\u93a4\u93a6\u93a8\u93ab\u93b4\u93b5\u93b6\u93ba\u93a9\u93c1\u93c4\u93c5\u93c6\u93c7\u93c9",4,"\u93d3\u93d9\u93dc\u93de\u93df\u93e2\u93e6\u93e7\u93f9\u93f7\u93f8\u93fa\u93fb\u93fd\u9401\u9402\u9404\u9408\u9409\u940d\u940e\u940f\u9415\u9416\u9417\u941f\u942e\u942f\u9431\u9432\u9433\u9434\u943b\u943f\u943d\u9443\u9445\u9448\u944a\u944c\u9455\u9459\u945c\u945f\u9461\u9463\u9468\u946b\u946d\u946e\u946f\u9471\u9472\u9484\u9483\u9578\u9579"],["8fe6a1","\u957e\u9584\u9588\u958c\u958d\u958e\u959d\u959e\u959f\u95a1\u95a6\u95a9\u95ab\u95ac\u95b4\u95b6\u95ba\u95bd\u95bf\u95c6\u95c8\u95c9\u95cb\u95d0\u95d1\u95d2\u95d3\u95d9\u95da\u95dd\u95de\u95df\u95e0\u95e4\u95e6\u961d\u961e\u9622\u9624\u9625\u9626\u962c\u9631\u9633\u9637\u9638\u9639\u963a\u963c\u963d\u9641\u9652\u9654\u9656\u9657\u9658\u9661\u966e\u9674\u967b\u967c\u967e\u967f\u9681\u9682\u9683\u9684\u9689\u9691\u9696\u969a\u969d\u969f\u96a4\u96a5\u96a6\u96a9\u96ae\u96af\u96b3\u96ba\u96ca\u96d2\u5db2\u96d8\u96da\u96dd\u96de\u96df\u96e9\u96ef\u96f1\u96fa\u9702"],["8fe7a1","\u9703\u9705\u9709\u971a\u971b\u971d\u9721\u9722\u9723\u9728\u9731\u9733\u9741\u9743\u974a\u974e\u974f\u9755\u9757\u9758\u975a\u975b\u9763\u9767\u976a\u976e\u9773\u9776\u9777\u9778\u977b\u977d\u977f\u9780\u9789\u9795\u9796\u9797\u9799\u979a\u979e\u979f\u97a2\u97ac\u97ae\u97b1\u97b2\u97b5\u97b6\u97b8\u97b9\u97ba\u97bc\u97be\u97bf\u97c1\u97c4\u97c5\u97c7\u97c9\u97ca\u97cc\u97cd\u97ce\u97d0\u97d1\u97d4\u97d7\u97d8\u97d9\u97dd\u97de\u97e0\u97db\u97e1\u97e4\u97ef\u97f1\u97f4\u97f7\u97f8\u97fa\u9807\u980a\u9819\u980d\u980e\u9814\u9816\u981c\u981e\u9820\u9823\u9826"],["8fe8a1","\u982b\u982e\u982f\u9830\u9832\u9833\u9835\u9825\u983e\u9844\u9847\u984a\u9851\u9852\u9853\u9856\u9857\u9859\u985a\u9862\u9863\u9865\u9866\u986a\u986c\u98ab\u98ad\u98ae\u98b0\u98b4\u98b7\u98b8\u98ba\u98bb\u98bf\u98c2\u98c5\u98c8\u98cc\u98e1\u98e3\u98e5\u98e6\u98e7\u98ea\u98f3\u98f6\u9902\u9907\u9908\u9911\u9915\u9916\u9917\u991a\u991b\u991c\u991f\u9922\u9926\u9927\u992b\u9931",4,"\u9939\u993a\u993b\u993c\u9940\u9941\u9946\u9947\u9948\u994d\u994e\u9954\u9958\u9959\u995b\u995c\u995e\u995f\u9960\u999b\u999d\u999f\u99a6\u99b0\u99b1\u99b2\u99b5"],["8fe9a1","\u99b9\u99ba\u99bd\u99bf\u99c3\u99c9\u99d3\u99d4\u99d9\u99da\u99dc\u99de\u99e7\u99ea\u99eb\u99ec\u99f0\u99f4\u99f5\u99f9\u99fd\u99fe\u9a02\u9a03\u9a04\u9a0b\u9a0c\u9a10\u9a11\u9a16\u9a1e\u9a20\u9a22\u9a23\u9a24\u9a27\u9a2d\u9a2e\u9a33\u9a35\u9a36\u9a38\u9a47\u9a41\u9a44\u9a4a\u9a4b\u9a4c\u9a4e\u9a51\u9a54\u9a56\u9a5d\u9aaa\u9aac\u9aae\u9aaf\u9ab2\u9ab4\u9ab5\u9ab6\u9ab9\u9abb\u9abe\u9abf\u9ac1\u9ac3\u9ac6\u9ac8\u9ace\u9ad0\u9ad2\u9ad5\u9ad6\u9ad7\u9adb\u9adc\u9ae0\u9ae4\u9ae5\u9ae7\u9ae9\u9aec\u9af2\u9af3\u9af5\u9af9\u9afa\u9afd\u9aff",4],["8feaa1","\u9b04\u9b05\u9b08\u9b09\u9b0b\u9b0c\u9b0d\u9b0e\u9b10\u9b12\u9b16\u9b19\u9b1b\u9b1c\u9b20\u9b26\u9b2b\u9b2d\u9b33\u9b34\u9b35\u9b37\u9b39\u9b3a\u9b3d\u9b48\u9b4b\u9b4c\u9b55\u9b56\u9b57\u9b5b\u9b5e\u9b61\u9b63\u9b65\u9b66\u9b68\u9b6a",4,"\u9b73\u9b75\u9b77\u9b78\u9b79\u9b7f\u9b80\u9b84\u9b85\u9b86\u9b87\u9b89\u9b8a\u9b8b\u9b8d\u9b8f\u9b90\u9b94\u9b9a\u9b9d\u9b9e\u9ba6\u9ba7\u9ba9\u9bac\u9bb0\u9bb1\u9bb2\u9bb7\u9bb8\u9bbb\u9bbc\u9bbe\u9bbf\u9bc1\u9bc7\u9bc8\u9bce\u9bd0\u9bd7\u9bd8\u9bdd\u9bdf\u9be5\u9be7\u9bea\u9beb\u9bef\u9bf3\u9bf7\u9bf8"],["8feba1","\u9bf9\u9bfa\u9bfd\u9bff\u9c00\u9c02\u9c0b\u9c0f\u9c11\u9c16\u9c18\u9c19\u9c1a\u9c1c\u9c1e\u9c22\u9c23\u9c26",4,"\u9c31\u9c35\u9c36\u9c37\u9c3d\u9c41\u9c43\u9c44\u9c45\u9c49\u9c4a\u9c4e\u9c4f\u9c50\u9c53\u9c54\u9c56\u9c58\u9c5b\u9c5d\u9c5e\u9c5f\u9c63\u9c69\u9c6a\u9c5c\u9c6b\u9c68\u9c6e\u9c70\u9c72\u9c75\u9c77\u9c7b\u9ce6\u9cf2\u9cf7\u9cf9\u9d0b\u9d02\u9d11\u9d17\u9d18\u9d1c\u9d1d\u9d1e\u9d2f\u9d30\u9d32\u9d33\u9d34\u9d3a\u9d3c\u9d45\u9d3d\u9d42\u9d43\u9d47\u9d4a\u9d53\u9d54\u9d5f\u9d63\u9d62\u9d65\u9d69\u9d6a\u9d6b\u9d70\u9d76\u9d77\u9d7b"],["8feca1","\u9d7c\u9d7e\u9d83\u9d84\u9d86\u9d8a\u9d8d\u9d8e\u9d92\u9d93\u9d95\u9d96\u9d97\u9d98\u9da1\u9daa\u9dac\u9dae\u9db1\u9db5\u9db9\u9dbc\u9dbf\u9dc3\u9dc7\u9dc9\u9dca\u9dd4\u9dd5\u9dd6\u9dd7\u9dda\u9dde\u9ddf\u9de0\u9de5\u9de7\u9de9\u9deb\u9dee\u9df0\u9df3\u9df4\u9dfe\u9e0a\u9e02\u9e07\u9e0e\u9e10\u9e11\u9e12\u9e15\u9e16\u9e19\u9e1c\u9e1d\u9e7a\u9e7b\u9e7c\u9e80\u9e82\u9e83\u9e84\u9e85\u9e87\u9e8e\u9e8f\u9e96\u9e98\u9e9b\u9e9e\u9ea4\u9ea8\u9eac\u9eae\u9eaf\u9eb0\u9eb3\u9eb4\u9eb5\u9ec6\u9ec8\u9ecb\u9ed5\u9edf\u9ee4\u9ee7\u9eec\u9eed\u9eee\u9ef0\u9ef1\u9ef2\u9ef5"],["8feda1","\u9ef8\u9eff\u9f02\u9f03\u9f09\u9f0f\u9f10\u9f11\u9f12\u9f14\u9f16\u9f17\u9f19\u9f1a\u9f1b\u9f1f\u9f22\u9f26\u9f2a\u9f2b\u9f2f\u9f31\u9f32\u9f34\u9f37\u9f39\u9f3a\u9f3c\u9f3d\u9f3f\u9f41\u9f43",4,"\u9f53\u9f55\u9f56\u9f57\u9f58\u9f5a\u9f5d\u9f5e\u9f68\u9f69\u9f6d",4,"\u9f73\u9f75\u9f7a\u9f7d\u9f8f\u9f90\u9f91\u9f92\u9f94\u9f96\u9f97\u9f9e\u9fa1\u9fa2\u9fa3\u9fa5"]]')},function(g){g.exports=JSON.parse('{"uChars":[128,165,169,178,184,216,226,235,238,244,248,251,253,258,276,284,300,325,329,334,364,463,465,467,469,471,473,475,477,506,594,610,712,716,730,930,938,962,970,1026,1104,1106,8209,8215,8218,8222,8231,8241,8244,8246,8252,8365,8452,8454,8458,8471,8482,8556,8570,8596,8602,8713,8720,8722,8726,8731,8737,8740,8742,8748,8751,8760,8766,8777,8781,8787,8802,8808,8816,8854,8858,8870,8896,8979,9322,9372,9548,9588,9616,9622,9634,9652,9662,9672,9676,9680,9702,9735,9738,9793,9795,11906,11909,11913,11917,11928,11944,11947,11951,11956,11960,11964,11979,12284,12292,12312,12319,12330,12351,12436,12447,12535,12543,12586,12842,12850,12964,13200,13215,13218,13253,13263,13267,13270,13384,13428,13727,13839,13851,14617,14703,14801,14816,14964,15183,15471,15585,16471,16736,17208,17325,17330,17374,17623,17997,18018,18212,18218,18301,18318,18760,18811,18814,18820,18823,18844,18848,18872,19576,19620,19738,19887,40870,59244,59336,59367,59413,59417,59423,59431,59437,59443,59452,59460,59478,59493,63789,63866,63894,63976,63986,64016,64018,64021,64025,64034,64037,64042,65074,65093,65107,65112,65127,65132,65375,65510,65536],"gbChars":[0,36,38,45,50,81,89,95,96,100,103,104,105,109,126,133,148,172,175,179,208,306,307,308,309,310,311,312,313,341,428,443,544,545,558,741,742,749,750,805,819,820,7922,7924,7925,7927,7934,7943,7944,7945,7950,8062,8148,8149,8152,8164,8174,8236,8240,8262,8264,8374,8380,8381,8384,8388,8390,8392,8393,8394,8396,8401,8406,8416,8419,8424,8437,8439,8445,8482,8485,8496,8521,8603,8936,8946,9046,9050,9063,9066,9076,9092,9100,9108,9111,9113,9131,9162,9164,9218,9219,11329,11331,11334,11336,11346,11361,11363,11366,11370,11372,11375,11389,11682,11686,11687,11692,11694,11714,11716,11723,11725,11730,11736,11982,11989,12102,12336,12348,12350,12384,12393,12395,12397,12510,12553,12851,12962,12973,13738,13823,13919,13933,14080,14298,14585,14698,15583,15847,16318,16434,16438,16481,16729,17102,17122,17315,17320,17402,17418,17859,17909,17911,17915,17916,17936,17939,17961,18664,18703,18814,18962,19043,33469,33470,33471,33484,33485,33490,33497,33501,33505,33513,33520,33536,33550,37845,37921,37948,38029,38038,38064,38065,38066,38069,38075,38076,38078,39108,39109,39113,39114,39115,39116,39265,39394,189000]}')},function(g){g.exports=JSON.parse('[["0","\\u0000",127],["8141","\uac02\uac03\uac05\uac06\uac0b",4,"\uac18\uac1e\uac1f\uac21\uac22\uac23\uac25",6,"\uac2e\uac32\uac33\uac34"],["8161","\uac35\uac36\uac37\uac3a\uac3b\uac3d\uac3e\uac3f\uac41",9,"\uac4c\uac4e",5,"\uac55"],["8181","\uac56\uac57\uac59\uac5a\uac5b\uac5d",18,"\uac72\uac73\uac75\uac76\uac79\uac7b",4,"\uac82\uac87\uac88\uac8d\uac8e\uac8f\uac91\uac92\uac93\uac95",6,"\uac9e\uaca2",5,"\uacab\uacad\uacae\uacb1",6,"\uacba\uacbe\uacbf\uacc0\uacc2\uacc3\uacc5\uacc6\uacc7\uacc9\uacca\uaccb\uaccd",7,"\uacd6\uacd8",7,"\uace2\uace3\uace5\uace6\uace9\uaceb\uaced\uacee\uacf2\uacf4\uacf7",4,"\uacfe\uacff\uad01\uad02\uad03\uad05\uad07",4,"\uad0e\uad10\uad12\uad13"],["8241","\uad14\uad15\uad16\uad17\uad19\uad1a\uad1b\uad1d\uad1e\uad1f\uad21",7,"\uad2a\uad2b\uad2e",5],["8261","\uad36\uad37\uad39\uad3a\uad3b\uad3d",6,"\uad46\uad48\uad4a",5,"\uad51\uad52\uad53\uad55\uad56\uad57"],["8281","\uad59",7,"\uad62\uad64",7,"\uad6e\uad6f\uad71\uad72\uad77\uad78\uad79\uad7a\uad7e\uad80\uad83",4,"\uad8a\uad8b\uad8d\uad8e\uad8f\uad91",10,"\uad9e",5,"\uada5",17,"\uadb8",7,"\uadc2\uadc3\uadc5\uadc6\uadc7\uadc9",6,"\uadd2\uadd4",7,"\uaddd\uadde\uaddf\uade1\uade2\uade3\uade5",18],["8341","\uadfa\uadfb\uadfd\uadfe\uae02",5,"\uae0a\uae0c\uae0e",5,"\uae15",7],["8361","\uae1d",18,"\uae32\uae33\uae35\uae36\uae39\uae3b\uae3c"],["8381","\uae3d\uae3e\uae3f\uae42\uae44\uae47\uae48\uae49\uae4b\uae4f\uae51\uae52\uae53\uae55\uae57",4,"\uae5e\uae62\uae63\uae64\uae66\uae67\uae6a\uae6b\uae6d\uae6e\uae6f\uae71",6,"\uae7a\uae7e",5,"\uae86",5,"\uae8d",46,"\uaebf\uaec1\uaec2\uaec3\uaec5",6,"\uaece\uaed2",5,"\uaeda\uaedb\uaedd",8],["8441","\uaee6\uaee7\uaee9\uaeea\uaeec\uaeee",5,"\uaef5\uaef6\uaef7\uaef9\uaefa\uaefb\uaefd",8],["8461","\uaf06\uaf09\uaf0a\uaf0b\uaf0c\uaf0e\uaf0f\uaf11",18],["8481","\uaf24",7,"\uaf2e\uaf2f\uaf31\uaf33\uaf35",6,"\uaf3e\uaf40\uaf44\uaf45\uaf46\uaf47\uaf4a",5,"\uaf51",10,"\uaf5e",5,"\uaf66",18,"\uaf7a",5,"\uaf81\uaf82\uaf83\uaf85\uaf86\uaf87\uaf89",6,"\uaf92\uaf93\uaf94\uaf96",5,"\uaf9d",26,"\uafba\uafbb\uafbd\uafbe"],["8541","\uafbf\uafc1",5,"\uafca\uafcc\uafcf",4,"\uafd5",6,"\uafdd",4],["8561","\uafe2",5,"\uafea",5,"\uaff2\uaff3\uaff5\uaff6\uaff7\uaff9",6,"\ub002\ub003"],["8581","\ub005",6,"\ub00d\ub00e\ub00f\ub011\ub012\ub013\ub015",6,"\ub01e",9,"\ub029",26,"\ub046\ub047\ub049\ub04b\ub04d\ub04f\ub050\ub051\ub052\ub056\ub058\ub05a\ub05b\ub05c\ub05e",29,"\ub07e\ub07f\ub081\ub082\ub083\ub085",6,"\ub08e\ub090\ub092",5,"\ub09b\ub09d\ub09e\ub0a3\ub0a4"],["8641","\ub0a5\ub0a6\ub0a7\ub0aa\ub0b0\ub0b2\ub0b6\ub0b7\ub0b9\ub0ba\ub0bb\ub0bd",6,"\ub0c6\ub0ca",5,"\ub0d2"],["8661","\ub0d3\ub0d5\ub0d6\ub0d7\ub0d9",6,"\ub0e1\ub0e2\ub0e3\ub0e4\ub0e6",10],["8681","\ub0f1",22,"\ub10a\ub10d\ub10e\ub10f\ub111\ub114\ub115\ub116\ub117\ub11a\ub11e",4,"\ub126\ub127\ub129\ub12a\ub12b\ub12d",6,"\ub136\ub13a",5,"\ub142\ub143\ub145\ub146\ub147\ub149",6,"\ub152\ub153\ub156\ub157\ub159\ub15a\ub15b\ub15d\ub15e\ub15f\ub161",22,"\ub17a\ub17b\ub17d\ub17e\ub17f\ub181\ub183",4,"\ub18a\ub18c\ub18e\ub18f\ub190\ub191\ub195\ub196\ub197\ub199\ub19a\ub19b\ub19d"],["8741","\ub19e",9,"\ub1a9",15],["8761","\ub1b9",18,"\ub1cd\ub1ce\ub1cf\ub1d1\ub1d2\ub1d3\ub1d5"],["8781","\ub1d6",5,"\ub1de\ub1e0",7,"\ub1ea\ub1eb\ub1ed\ub1ee\ub1ef\ub1f1",7,"\ub1fa\ub1fc\ub1fe",5,"\ub206\ub207\ub209\ub20a\ub20d",6,"\ub216\ub218\ub21a",5,"\ub221",18,"\ub235",6,"\ub23d",26,"\ub259\ub25a\ub25b\ub25d\ub25e\ub25f\ub261",6,"\ub26a",4],["8841","\ub26f",4,"\ub276",5,"\ub27d",6,"\ub286\ub287\ub288\ub28a",4],["8861","\ub28f\ub292\ub293\ub295\ub296\ub297\ub29b",4,"\ub2a2\ub2a4\ub2a7\ub2a8\ub2a9\ub2ab\ub2ad\ub2ae\ub2af\ub2b1\ub2b2\ub2b3\ub2b5\ub2b6\ub2b7"],["8881","\ub2b8",15,"\ub2ca\ub2cb\ub2cd\ub2ce\ub2cf\ub2d1\ub2d3",4,"\ub2da\ub2dc\ub2de\ub2df\ub2e0\ub2e1\ub2e3\ub2e7\ub2e9\ub2ea\ub2f0\ub2f1\ub2f2\ub2f6\ub2fc\ub2fd\ub2fe\ub302\ub303\ub305\ub306\ub307\ub309",6,"\ub312\ub316",5,"\ub31d",54,"\ub357\ub359\ub35a\ub35d\ub360\ub361\ub362\ub363"],["8941","\ub366\ub368\ub36a\ub36c\ub36d\ub36f\ub372\ub373\ub375\ub376\ub377\ub379",6,"\ub382\ub386",5,"\ub38d"],["8961","\ub38e\ub38f\ub391\ub392\ub393\ub395",10,"\ub3a2",5,"\ub3a9\ub3aa\ub3ab\ub3ad"],["8981","\ub3ae",21,"\ub3c6\ub3c7\ub3c9\ub3ca\ub3cd\ub3cf\ub3d1\ub3d2\ub3d3\ub3d6\ub3d8\ub3da\ub3dc\ub3de\ub3df\ub3e1\ub3e2\ub3e3\ub3e5\ub3e6\ub3e7\ub3e9",18,"\ub3fd",18,"\ub411",6,"\ub419\ub41a\ub41b\ub41d\ub41e\ub41f\ub421",6,"\ub42a\ub42c",7,"\ub435",15],["8a41","\ub445",10,"\ub452\ub453\ub455\ub456\ub457\ub459",6,"\ub462\ub464\ub466"],["8a61","\ub467",4,"\ub46d",18,"\ub481\ub482"],["8a81","\ub483",4,"\ub489",19,"\ub49e",5,"\ub4a5\ub4a6\ub4a7\ub4a9\ub4aa\ub4ab\ub4ad",7,"\ub4b6\ub4b8\ub4ba",5,"\ub4c1\ub4c2\ub4c3\ub4c5\ub4c6\ub4c7\ub4c9",6,"\ub4d1\ub4d2\ub4d3\ub4d4\ub4d6",5,"\ub4de\ub4df\ub4e1\ub4e2\ub4e5\ub4e7",4,"\ub4ee\ub4f0\ub4f2",5,"\ub4f9",26,"\ub516\ub517\ub519\ub51a\ub51d"],["8b41","\ub51e",5,"\ub526\ub52b",4,"\ub532\ub533\ub535\ub536\ub537\ub539",6,"\ub542\ub546"],["8b61","\ub547\ub548\ub549\ub54a\ub54e\ub54f\ub551\ub552\ub553\ub555",6,"\ub55e\ub562",8],["8b81","\ub56b",52,"\ub5a2\ub5a3\ub5a5\ub5a6\ub5a7\ub5a9\ub5ac\ub5ad\ub5ae\ub5af\ub5b2\ub5b6",4,"\ub5be\ub5bf\ub5c1\ub5c2\ub5c3\ub5c5",6,"\ub5ce\ub5d2",5,"\ub5d9",18,"\ub5ed",18],["8c41","\ub600",15,"\ub612\ub613\ub615\ub616\ub617\ub619",4],["8c61","\ub61e",6,"\ub626",5,"\ub62d",6,"\ub635",5],["8c81","\ub63b",12,"\ub649",26,"\ub665\ub666\ub667\ub669",50,"\ub69e\ub69f\ub6a1\ub6a2\ub6a3\ub6a5",5,"\ub6ad\ub6ae\ub6af\ub6b0\ub6b2",16],["8d41","\ub6c3",16,"\ub6d5",8],["8d61","\ub6de",17,"\ub6f1\ub6f2\ub6f3\ub6f5\ub6f6\ub6f7\ub6f9\ub6fa"],["8d81","\ub6fb",4,"\ub702\ub703\ub704\ub706",33,"\ub72a\ub72b\ub72d\ub72e\ub731",6,"\ub73a\ub73c",7,"\ub745\ub746\ub747\ub749\ub74a\ub74b\ub74d",6,"\ub756",9,"\ub761\ub762\ub763\ub765\ub766\ub767\ub769",6,"\ub772\ub774\ub776",5,"\ub77e\ub77f\ub781\ub782\ub783\ub785",6,"\ub78e\ub793\ub794\ub795\ub79a\ub79b\ub79d\ub79e"],["8e41","\ub79f\ub7a1",6,"\ub7aa\ub7ae",5,"\ub7b6\ub7b7\ub7b9",8],["8e61","\ub7c2",4,"\ub7c8\ub7ca",19],["8e81","\ub7de",13,"\ub7ee\ub7ef\ub7f1\ub7f2\ub7f3\ub7f5",6,"\ub7fe\ub802",4,"\ub80a\ub80b\ub80d\ub80e\ub80f\ub811",6,"\ub81a\ub81c\ub81e",5,"\ub826\ub827\ub829\ub82a\ub82b\ub82d",6,"\ub836\ub83a",5,"\ub841\ub842\ub843\ub845",11,"\ub852\ub854",7,"\ub85e\ub85f\ub861\ub862\ub863\ub865",6,"\ub86e\ub870\ub872",5,"\ub879\ub87a\ub87b\ub87d",7],["8f41","\ub885",7,"\ub88e",17],["8f61","\ub8a0",7,"\ub8a9",6,"\ub8b1\ub8b2\ub8b3\ub8b5\ub8b6\ub8b7\ub8b9",4],["8f81","\ub8be\ub8bf\ub8c2\ub8c4\ub8c6",5,"\ub8cd\ub8ce\ub8cf\ub8d1\ub8d2\ub8d3\ub8d5",7,"\ub8de\ub8e0\ub8e2",5,"\ub8ea\ub8eb\ub8ed\ub8ee\ub8ef\ub8f1",6,"\ub8fa\ub8fc\ub8fe",5,"\ub905",18,"\ub919",6,"\ub921",26,"\ub93e\ub93f\ub941\ub942\ub943\ub945",6,"\ub94d\ub94e\ub950\ub952",5],["9041","\ub95a\ub95b\ub95d\ub95e\ub95f\ub961",6,"\ub96a\ub96c\ub96e",5,"\ub976\ub977\ub979\ub97a\ub97b\ub97d"],["9061","\ub97e",5,"\ub986\ub988\ub98b\ub98c\ub98f",15],["9081","\ub99f",12,"\ub9ae\ub9af\ub9b1\ub9b2\ub9b3\ub9b5",6,"\ub9be\ub9c0\ub9c2",5,"\ub9ca\ub9cb\ub9cd\ub9d3",4,"\ub9da\ub9dc\ub9df\ub9e0\ub9e2\ub9e6\ub9e7\ub9e9\ub9ea\ub9eb\ub9ed",6,"\ub9f6\ub9fb",4,"\uba02",5,"\uba09",11,"\uba16",33,"\uba3a\uba3b\uba3d\uba3e\uba3f\uba41\uba43\uba44\uba45\uba46"],["9141","\uba47\uba4a\uba4c\uba4f\uba50\uba51\uba52\uba56\uba57\uba59\uba5a\uba5b\uba5d",6,"\uba66\uba6a",5],["9161","\uba72\uba73\uba75\uba76\uba77\uba79",9,"\uba86\uba88\uba89\uba8a\uba8b\uba8d",5],["9181","\uba93",20,"\ubaaa\ubaad\ubaae\ubaaf\ubab1\ubab3",4,"\ubaba\ubabc\ubabe",5,"\ubac5\ubac6\ubac7\ubac9",14,"\ubada",33,"\ubafd\ubafe\ubaff\ubb01\ubb02\ubb03\ubb05",7,"\ubb0e\ubb10\ubb12",5,"\ubb19\ubb1a\ubb1b\ubb1d\ubb1e\ubb1f\ubb21",6],["9241","\ubb28\ubb2a\ubb2c",7,"\ubb37\ubb39\ubb3a\ubb3f",4,"\ubb46\ubb48\ubb4a\ubb4b\ubb4c\ubb4e\ubb51\ubb52"],["9261","\ubb53\ubb55\ubb56\ubb57\ubb59",7,"\ubb62\ubb64",7,"\ubb6d",4],["9281","\ubb72",21,"\ubb89\ubb8a\ubb8b\ubb8d\ubb8e\ubb8f\ubb91",18,"\ubba5\ubba6\ubba7\ubba9\ubbaa\ubbab\ubbad",6,"\ubbb5\ubbb6\ubbb8",7,"\ubbc1\ubbc2\ubbc3\ubbc5\ubbc6\ubbc7\ubbc9",6,"\ubbd1\ubbd2\ubbd4",35,"\ubbfa\ubbfb\ubbfd\ubbfe\ubc01"],["9341","\ubc03",4,"\ubc0a\ubc0e\ubc10\ubc12\ubc13\ubc19\ubc1a\ubc20\ubc21\ubc22\ubc23\ubc26\ubc28\ubc2a\ubc2b\ubc2c\ubc2e\ubc2f\ubc32\ubc33\ubc35"],["9361","\ubc36\ubc37\ubc39",6,"\ubc42\ubc46\ubc47\ubc48\ubc4a\ubc4b\ubc4e\ubc4f\ubc51",8],["9381","\ubc5a\ubc5b\ubc5c\ubc5e",37,"\ubc86\ubc87\ubc89\ubc8a\ubc8d\ubc8f",4,"\ubc96\ubc98\ubc9b",4,"\ubca2\ubca3\ubca5\ubca6\ubca9",6,"\ubcb2\ubcb6",5,"\ubcbe\ubcbf\ubcc1\ubcc2\ubcc3\ubcc5",7,"\ubcce\ubcd2\ubcd3\ubcd4\ubcd6\ubcd7\ubcd9\ubcda\ubcdb\ubcdd",22,"\ubcf7\ubcf9\ubcfa\ubcfb\ubcfd"],["9441","\ubcfe",5,"\ubd06\ubd08\ubd0a",5,"\ubd11\ubd12\ubd13\ubd15",8],["9461","\ubd1e",5,"\ubd25",6,"\ubd2d",12],["9481","\ubd3a",5,"\ubd41",6,"\ubd4a\ubd4b\ubd4d\ubd4e\ubd4f\ubd51",6,"\ubd5a",9,"\ubd65\ubd66\ubd67\ubd69",22,"\ubd82\ubd83\ubd85\ubd86\ubd8b",4,"\ubd92\ubd94\ubd96\ubd97\ubd98\ubd9b\ubd9d",6,"\ubda5",10,"\ubdb1",6,"\ubdb9",24],["9541","\ubdd2\ubdd3\ubdd6\ubdd7\ubdd9\ubdda\ubddb\ubddd",11,"\ubdea",5,"\ubdf1"],["9561","\ubdf2\ubdf3\ubdf5\ubdf6\ubdf7\ubdf9",6,"\ube01\ube02\ube04\ube06",5,"\ube0e\ube0f\ube11\ube12\ube13"],["9581","\ube15",6,"\ube1e\ube20",35,"\ube46\ube47\ube49\ube4a\ube4b\ube4d\ube4f",4,"\ube56\ube58\ube5c\ube5d\ube5e\ube5f\ube62\ube63\ube65\ube66\ube67\ube69\ube6b",4,"\ube72\ube76",4,"\ube7e\ube7f\ube81\ube82\ube83\ube85",6,"\ube8e\ube92",5,"\ube9a",13,"\ubea9",14],["9641","\ubeb8",23,"\ubed2\ubed3"],["9661","\ubed5\ubed6\ubed9",6,"\ubee1\ubee2\ubee6",5,"\ubeed",8],["9681","\ubef6",10,"\ubf02",5,"\ubf0a",13,"\ubf1a\ubf1e",33,"\ubf42\ubf43\ubf45\ubf46\ubf47\ubf49",6,"\ubf52\ubf53\ubf54\ubf56",44],["9741","\ubf83",16,"\ubf95",8],["9761","\ubf9e",17,"\ubfb1",7],["9781","\ubfb9",11,"\ubfc6",5,"\ubfce\ubfcf\ubfd1\ubfd2\ubfd3\ubfd5",6,"\ubfdd\ubfde\ubfe0\ubfe2",89,"\uc03d\uc03e\uc03f"],["9841","\uc040",16,"\uc052",5,"\uc059\uc05a\uc05b"],["9861","\uc05d\uc05e\uc05f\uc061",6,"\uc06a",15],["9881","\uc07a",21,"\uc092\uc093\uc095\uc096\uc097\uc099",6,"\uc0a2\uc0a4\uc0a6",5,"\uc0ae\uc0b1\uc0b2\uc0b7",4,"\uc0be\uc0c2\uc0c3\uc0c4\uc0c6\uc0c7\uc0ca\uc0cb\uc0cd\uc0ce\uc0cf\uc0d1",6,"\uc0da\uc0de",5,"\uc0e6\uc0e7\uc0e9\uc0ea\uc0eb\uc0ed",6,"\uc0f6\uc0f8\uc0fa",5,"\uc101\uc102\uc103\uc105\uc106\uc107\uc109",6,"\uc111\uc112\uc113\uc114\uc116",5,"\uc121\uc122\uc125\uc128\uc129\uc12a\uc12b\uc12e"],["9941","\uc132\uc133\uc134\uc135\uc137\uc13a\uc13b\uc13d\uc13e\uc13f\uc141",6,"\uc14a\uc14e",5,"\uc156\uc157"],["9961","\uc159\uc15a\uc15b\uc15d",6,"\uc166\uc16a",5,"\uc171\uc172\uc173\uc175\uc176\uc177\uc179\uc17a\uc17b"],["9981","\uc17c",8,"\uc186",5,"\uc18f\uc191\uc192\uc193\uc195\uc197",4,"\uc19e\uc1a0\uc1a2\uc1a3\uc1a4\uc1a6\uc1a7\uc1aa\uc1ab\uc1ad\uc1ae\uc1af\uc1b1",11,"\uc1be",5,"\uc1c5\uc1c6\uc1c7\uc1c9\uc1ca\uc1cb\uc1cd",6,"\uc1d5\uc1d6\uc1d9",6,"\uc1e1\uc1e2\uc1e3\uc1e5\uc1e6\uc1e7\uc1e9",6,"\uc1f2\uc1f4",7,"\uc1fe\uc1ff\uc201\uc202\uc203\uc205",6,"\uc20e\uc210\uc212",5,"\uc21a\uc21b\uc21d\uc21e\uc221\uc222\uc223"],["9a41","\uc224\uc225\uc226\uc227\uc22a\uc22c\uc22e\uc230\uc233\uc235",16],["9a61","\uc246\uc247\uc249",6,"\uc252\uc253\uc255\uc256\uc257\uc259",6,"\uc261\uc262\uc263\uc264\uc266"],["9a81","\uc267",4,"\uc26e\uc26f\uc271\uc272\uc273\uc275",6,"\uc27e\uc280\uc282",5,"\uc28a",5,"\uc291",6,"\uc299\uc29a\uc29c\uc29e",5,"\uc2a6\uc2a7\uc2a9\uc2aa\uc2ab\uc2ae",5,"\uc2b6\uc2b8\uc2ba",33,"\uc2de\uc2df\uc2e1\uc2e2\uc2e5",5,"\uc2ee\uc2f0\uc2f2\uc2f3\uc2f4\uc2f5\uc2f7\uc2fa\uc2fd\uc2fe\uc2ff\uc301",6,"\uc30a\uc30b\uc30e\uc30f"],["9b41","\uc310\uc311\uc312\uc316\uc317\uc319\uc31a\uc31b\uc31d",6,"\uc326\uc327\uc32a",8],["9b61","\uc333",17,"\uc346",7],["9b81","\uc34e",25,"\uc36a\uc36b\uc36d\uc36e\uc36f\uc371\uc373",4,"\uc37a\uc37b\uc37e",5,"\uc385\uc386\uc387\uc389\uc38a\uc38b\uc38d",50,"\uc3c1",22,"\uc3da"],["9c41","\uc3db\uc3dd\uc3de\uc3e1\uc3e3",4,"\uc3ea\uc3eb\uc3ec\uc3ee",5,"\uc3f6\uc3f7\uc3f9",5],["9c61","\uc3ff",8,"\uc409",6,"\uc411",9],["9c81","\uc41b",8,"\uc425",6,"\uc42d\uc42e\uc42f\uc431\uc432\uc433\uc435",6,"\uc43e",9,"\uc449",26,"\uc466\uc467\uc469\uc46a\uc46b\uc46d",6,"\uc476\uc477\uc478\uc47a",5,"\uc481",18,"\uc495",6,"\uc49d",12],["9d41","\uc4aa",13,"\uc4b9\uc4ba\uc4bb\uc4bd",8],["9d61","\uc4c6",25],["9d81","\uc4e0",8,"\uc4ea",5,"\uc4f2\uc4f3\uc4f5\uc4f6\uc4f7\uc4f9\uc4fb\uc4fc\uc4fd\uc4fe\uc502",9,"\uc50d\uc50e\uc50f\uc511\uc512\uc513\uc515",6,"\uc51d",10,"\uc52a\uc52b\uc52d\uc52e\uc52f\uc531",6,"\uc53a\uc53c\uc53e",5,"\uc546\uc547\uc54b\uc54f\uc550\uc551\uc552\uc556\uc55a\uc55b\uc55c\uc55f\uc562\uc563\uc565\uc566\uc567\uc569",6,"\uc572\uc576",5,"\uc57e\uc57f\uc581\uc582\uc583\uc585\uc586\uc588\uc589\uc58a\uc58b\uc58e\uc590\uc592\uc593\uc594"],["9e41","\uc596\uc599\uc59a\uc59b\uc59d\uc59e\uc59f\uc5a1",7,"\uc5aa",9,"\uc5b6"],["9e61","\uc5b7\uc5ba\uc5bf",4,"\uc5cb\uc5cd\uc5cf\uc5d2\uc5d3\uc5d5\uc5d6\uc5d7\uc5d9",6,"\uc5e2\uc5e4\uc5e6\uc5e7"],["9e81","\uc5e8\uc5e9\uc5ea\uc5eb\uc5ef\uc5f1\uc5f2\uc5f3\uc5f5\uc5f8\uc5f9\uc5fa\uc5fb\uc602\uc603\uc604\uc609\uc60a\uc60b\uc60d\uc60e\uc60f\uc611",6,"\uc61a\uc61d",6,"\uc626\uc627\uc629\uc62a\uc62b\uc62f\uc631\uc632\uc636\uc638\uc63a\uc63c\uc63d\uc63e\uc63f\uc642\uc643\uc645\uc646\uc647\uc649",6,"\uc652\uc656",5,"\uc65e\uc65f\uc661",10,"\uc66d\uc66e\uc670\uc672",5,"\uc67a\uc67b\uc67d\uc67e\uc67f\uc681",6,"\uc68a\uc68c\uc68e",5,"\uc696\uc697\uc699\uc69a\uc69b\uc69d",6,"\uc6a6"],["9f41","\uc6a8\uc6aa",5,"\uc6b2\uc6b3\uc6b5\uc6b6\uc6b7\uc6bb",4,"\uc6c2\uc6c4\uc6c6",5,"\uc6ce"],["9f61","\uc6cf\uc6d1\uc6d2\uc6d3\uc6d5",6,"\uc6de\uc6df\uc6e2",5,"\uc6ea\uc6eb\uc6ed\uc6ee\uc6ef\uc6f1\uc6f2"],["9f81","\uc6f3",4,"\uc6fa\uc6fb\uc6fc\uc6fe",5,"\uc706\uc707\uc709\uc70a\uc70b\uc70d",6,"\uc716\uc718\uc71a",5,"\uc722\uc723\uc725\uc726\uc727\uc729",6,"\uc732\uc734\uc736\uc738\uc739\uc73a\uc73b\uc73e\uc73f\uc741\uc742\uc743\uc745",4,"\uc74b\uc74e\uc750\uc759\uc75a\uc75b\uc75d\uc75e\uc75f\uc761",6,"\uc769\uc76a\uc76c",7,"\uc776\uc777\uc779\uc77a\uc77b\uc77f\uc780\uc781\uc782\uc786\uc78b\uc78c\uc78d\uc78f\uc792\uc793\uc795\uc799\uc79b",4,"\uc7a2\uc7a7",4,"\uc7ae\uc7af\uc7b1\uc7b2\uc7b3\uc7b5\uc7b6\uc7b7"],["a041","\uc7b8\uc7b9\uc7ba\uc7bb\uc7be\uc7c2",5,"\uc7ca\uc7cb\uc7cd\uc7cf\uc7d1",6,"\uc7d9\uc7da\uc7db\uc7dc"],["a061","\uc7de",5,"\uc7e5\uc7e6\uc7e7\uc7e9\uc7ea\uc7eb\uc7ed",13],["a081","\uc7fb",4,"\uc802\uc803\uc805\uc806\uc807\uc809\uc80b",4,"\uc812\uc814\uc817",4,"\uc81e\uc81f\uc821\uc822\uc823\uc825",6,"\uc82e\uc830\uc832",5,"\uc839\uc83a\uc83b\uc83d\uc83e\uc83f\uc841",6,"\uc84a\uc84b\uc84e",5,"\uc855",26,"\uc872\uc873\uc875\uc876\uc877\uc879\uc87b",4,"\uc882\uc884\uc888\uc889\uc88a\uc88e",5,"\uc895",7,"\uc89e\uc8a0\uc8a2\uc8a3\uc8a4"],["a141","\uc8a5\uc8a6\uc8a7\uc8a9",18,"\uc8be\uc8bf\uc8c0\uc8c1"],["a161","\uc8c2\uc8c3\uc8c5\uc8c6\uc8c7\uc8c9\uc8ca\uc8cb\uc8cd",6,"\uc8d6\uc8d8\uc8da",5,"\uc8e2\uc8e3\uc8e5"],["a181","\uc8e6",14,"\uc8f6",5,"\uc8fe\uc8ff\uc901\uc902\uc903\uc907",4,"\uc90e\u3000\u3001\u3002\xb7\u2025\u2026\xa8\u3003\xad\u2015\u2225\uff3c\u223c\u2018\u2019\u201c\u201d\u3014\u3015\u3008",9,"\xb1\xd7\xf7\u2260\u2264\u2265\u221e\u2234\xb0\u2032\u2033\u2103\u212b\uffe0\uffe1\uffe5\u2642\u2640\u2220\u22a5\u2312\u2202\u2207\u2261\u2252\xa7\u203b\u2606\u2605\u25cb\u25cf\u25ce\u25c7\u25c6\u25a1\u25a0\u25b3\u25b2\u25bd\u25bc\u2192\u2190\u2191\u2193\u2194\u3013\u226a\u226b\u221a\u223d\u221d\u2235\u222b\u222c\u2208\u220b\u2286\u2287\u2282\u2283\u222a\u2229\u2227\u2228\uffe2"],["a241","\uc910\uc912",5,"\uc919",18],["a261","\uc92d",6,"\uc935",18],["a281","\uc948",7,"\uc952\uc953\uc955\uc956\uc957\uc959",6,"\uc962\uc964",7,"\uc96d\uc96e\uc96f\u21d2\u21d4\u2200\u2203\xb4\uff5e\u02c7\u02d8\u02dd\u02da\u02d9\xb8\u02db\xa1\xbf\u02d0\u222e\u2211\u220f\xa4\u2109\u2030\u25c1\u25c0\u25b7\u25b6\u2664\u2660\u2661\u2665\u2667\u2663\u2299\u25c8\u25a3\u25d0\u25d1\u2592\u25a4\u25a5\u25a8\u25a7\u25a6\u25a9\u2668\u260f\u260e\u261c\u261e\xb6\u2020\u2021\u2195\u2197\u2199\u2196\u2198\u266d\u2669\u266a\u266c\u327f\u321c\u2116\u33c7\u2122\u33c2\u33d8\u2121\u20ac\xae"],["a341","\uc971\uc972\uc973\uc975",6,"\uc97d",10,"\uc98a\uc98b\uc98d\uc98e\uc98f"],["a361","\uc991",6,"\uc99a\uc99c\uc99e",16],["a381","\uc9af",16,"\uc9c2\uc9c3\uc9c5\uc9c6\uc9c9\uc9cb",4,"\uc9d2\uc9d4\uc9d7\uc9d8\uc9db\uff01",58,"\uffe6\uff3d",32,"\uffe3"],["a441","\uc9de\uc9df\uc9e1\uc9e3\uc9e5\uc9e6\uc9e8\uc9e9\uc9ea\uc9eb\uc9ee\uc9f2",5,"\uc9fa\uc9fb\uc9fd\uc9fe\uc9ff\uca01\uca02\uca03\uca04"],["a461","\uca05\uca06\uca07\uca0a\uca0e",5,"\uca15\uca16\uca17\uca19",12],["a481","\uca26\uca27\uca28\uca2a",28,"\u3131",93],["a541","\uca47",4,"\uca4e\uca4f\uca51\uca52\uca53\uca55",6,"\uca5e\uca62",5,"\uca69\uca6a"],["a561","\uca6b",17,"\uca7e",5,"\uca85\uca86"],["a581","\uca87",16,"\uca99",14,"\u2170",9],["a5b0","\u2160",9],["a5c1","\u0391",16,"\u03a3",6],["a5e1","\u03b1",16,"\u03c3",6],["a641","\ucaa8",19,"\ucabe\ucabf\ucac1\ucac2\ucac3\ucac5"],["a661","\ucac6",5,"\ucace\ucad0\ucad2\ucad4\ucad5\ucad6\ucad7\ucada",5,"\ucae1",6],["a681","\ucae8\ucae9\ucaea\ucaeb\ucaed",6,"\ucaf5",18,"\ucb09\ucb0a\u2500\u2502\u250c\u2510\u2518\u2514\u251c\u252c\u2524\u2534\u253c\u2501\u2503\u250f\u2513\u251b\u2517\u2523\u2533\u252b\u253b\u254b\u2520\u252f\u2528\u2537\u253f\u251d\u2530\u2525\u2538\u2542\u2512\u2511\u251a\u2519\u2516\u2515\u250e\u250d\u251e\u251f\u2521\u2522\u2526\u2527\u2529\u252a\u252d\u252e\u2531\u2532\u2535\u2536\u2539\u253a\u253d\u253e\u2540\u2541\u2543",7],["a741","\ucb0b",4,"\ucb11\ucb12\ucb13\ucb15\ucb16\ucb17\ucb19",6,"\ucb22",7],["a761","\ucb2a",22,"\ucb42\ucb43\ucb44"],["a781","\ucb45\ucb46\ucb47\ucb4a\ucb4b\ucb4d\ucb4e\ucb4f\ucb51",6,"\ucb5a\ucb5b\ucb5c\ucb5e",5,"\ucb65",7,"\u3395\u3396\u3397\u2113\u3398\u33c4\u33a3\u33a4\u33a5\u33a6\u3399",9,"\u33ca\u338d\u338e\u338f\u33cf\u3388\u3389\u33c8\u33a7\u33a8\u33b0",9,"\u3380",4,"\u33ba",5,"\u3390",4,"\u2126\u33c0\u33c1\u338a\u338b\u338c\u33d6\u33c5\u33ad\u33ae\u33af\u33db\u33a9\u33aa\u33ab\u33ac\u33dd\u33d0\u33d3\u33c3\u33c9\u33dc\u33c6"],["a841","\ucb6d",10,"\ucb7a",14],["a861","\ucb89",18,"\ucb9d",6],["a881","\ucba4",19,"\ucbb9",11,"\xc6\xd0\xaa\u0126"],["a8a6","\u0132"],["a8a8","\u013f\u0141\xd8\u0152\xba\xde\u0166\u014a"],["a8b1","\u3260",27,"\u24d0",25,"\u2460",14,"\xbd\u2153\u2154\xbc\xbe\u215b\u215c\u215d\u215e"],["a941","\ucbc5",14,"\ucbd5",10],["a961","\ucbe0\ucbe1\ucbe2\ucbe3\ucbe5\ucbe6\ucbe8\ucbea",18],["a981","\ucbfd",14,"\ucc0e\ucc0f\ucc11\ucc12\ucc13\ucc15",6,"\ucc1e\ucc1f\ucc20\ucc23\ucc24\xe6\u0111\xf0\u0127\u0131\u0133\u0138\u0140\u0142\xf8\u0153\xdf\xfe\u0167\u014b\u0149\u3200",27,"\u249c",25,"\u2474",14,"\xb9\xb2\xb3\u2074\u207f\u2081\u2082\u2083\u2084"],["aa41","\ucc25\ucc26\ucc2a\ucc2b\ucc2d\ucc2f\ucc31",6,"\ucc3a\ucc3f",4,"\ucc46\ucc47\ucc49\ucc4a\ucc4b\ucc4d\ucc4e"],["aa61","\ucc4f",4,"\ucc56\ucc5a",5,"\ucc61\ucc62\ucc63\ucc65\ucc67\ucc69",6,"\ucc71\ucc72"],["aa81","\ucc73\ucc74\ucc76",29,"\u3041",82],["ab41","\ucc94\ucc95\ucc96\ucc97\ucc9a\ucc9b\ucc9d\ucc9e\ucc9f\ucca1",6,"\uccaa\uccae",5,"\uccb6\uccb7\uccb9"],["ab61","\uccba\uccbb\uccbd",6,"\uccc6\uccc8\uccca",5,"\uccd1\uccd2\uccd3\uccd5",5],["ab81","\uccdb",8,"\ucce5",6,"\ucced\uccee\uccef\uccf1",12,"\u30a1",85],["ac41","\uccfe\uccff\ucd00\ucd02",5,"\ucd0a\ucd0b\ucd0d\ucd0e\ucd0f\ucd11",6,"\ucd1a\ucd1c\ucd1e\ucd1f\ucd20"],["ac61","\ucd21\ucd22\ucd23\ucd25\ucd26\ucd27\ucd29\ucd2a\ucd2b\ucd2d",11,"\ucd3a",4],["ac81","\ucd3f",28,"\ucd5d\ucd5e\ucd5f\u0410",5,"\u0401\u0416",25],["acd1","\u0430",5,"\u0451\u0436",25],["ad41","\ucd61\ucd62\ucd63\ucd65",6,"\ucd6e\ucd70\ucd72",5,"\ucd79",7],["ad61","\ucd81",6,"\ucd89",10,"\ucd96\ucd97\ucd99\ucd9a\ucd9b\ucd9d\ucd9e\ucd9f"],["ad81","\ucda0\ucda1\ucda2\ucda3\ucda6\ucda8\ucdaa",5,"\ucdb1",18,"\ucdc5"],["ae41","\ucdc6",5,"\ucdcd\ucdce\ucdcf\ucdd1",16],["ae61","\ucde2",5,"\ucde9\ucdea\ucdeb\ucded\ucdee\ucdef\ucdf1",6,"\ucdfa\ucdfc\ucdfe",4],["ae81","\uce03\uce05\uce06\uce07\uce09\uce0a\uce0b\uce0d",6,"\uce15\uce16\uce17\uce18\uce1a",5,"\uce22\uce23\uce25\uce26\uce27\uce29\uce2a\uce2b"],["af41","\uce2c\uce2d\uce2e\uce2f\uce32\uce34\uce36",19],["af61","\uce4a",13,"\uce5a\uce5b\uce5d\uce5e\uce62",5,"\uce6a\uce6c"],["af81","\uce6e",5,"\uce76\uce77\uce79\uce7a\uce7b\uce7d",6,"\uce86\uce88\uce8a",5,"\uce92\uce93\uce95\uce96\uce97\uce99"],["b041","\uce9a",5,"\ucea2\ucea6",5,"\uceae",12],["b061","\ucebb",5,"\ucec2",19],["b081","\uced6",13,"\ucee6\ucee7\ucee9\uceea\uceed",6,"\ucef6\ucefa",5,"\uac00\uac01\uac04\uac07\uac08\uac09\uac0a\uac10",7,"\uac19",4,"\uac20\uac24\uac2c\uac2d\uac2f\uac30\uac31\uac38\uac39\uac3c\uac40\uac4b\uac4d\uac54\uac58\uac5c\uac70\uac71\uac74\uac77\uac78\uac7a\uac80\uac81\uac83\uac84\uac85\uac86\uac89\uac8a\uac8b\uac8c\uac90\uac94\uac9c\uac9d\uac9f\uaca0\uaca1\uaca8\uaca9\uacaa\uacac\uacaf\uacb0\uacb8\uacb9\uacbb\uacbc\uacbd\uacc1\uacc4\uacc8\uaccc\uacd5\uacd7\uace0\uace1\uace4\uace7\uace8\uacea\uacec\uacef\uacf0\uacf1\uacf3\uacf5\uacf6\uacfc\uacfd\uad00\uad04\uad06"],["b141","\ucf02\ucf03\ucf05\ucf06\ucf07\ucf09",6,"\ucf12\ucf14\ucf16",5,"\ucf1d\ucf1e\ucf1f\ucf21\ucf22\ucf23"],["b161","\ucf25",6,"\ucf2e\ucf32",5,"\ucf39",11],["b181","\ucf45",14,"\ucf56\ucf57\ucf59\ucf5a\ucf5b\ucf5d",6,"\ucf66\ucf68\ucf6a\ucf6b\ucf6c\uad0c\uad0d\uad0f\uad11\uad18\uad1c\uad20\uad29\uad2c\uad2d\uad34\uad35\uad38\uad3c\uad44\uad45\uad47\uad49\uad50\uad54\uad58\uad61\uad63\uad6c\uad6d\uad70\uad73\uad74\uad75\uad76\uad7b\uad7c\uad7d\uad7f\uad81\uad82\uad88\uad89\uad8c\uad90\uad9c\uad9d\uada4\uadb7\uadc0\uadc1\uadc4\uadc8\uadd0\uadd1\uadd3\uaddc\uade0\uade4\uadf8\uadf9\uadfc\uadff\uae00\uae01\uae08\uae09\uae0b\uae0d\uae14\uae30\uae31\uae34\uae37\uae38\uae3a\uae40\uae41\uae43\uae45\uae46\uae4a\uae4c\uae4d\uae4e\uae50\uae54\uae56\uae5c\uae5d\uae5f\uae60\uae61\uae65\uae68\uae69\uae6c\uae70\uae78"],["b241","\ucf6d\ucf6e\ucf6f\ucf72\ucf73\ucf75\ucf76\ucf77\ucf79",6,"\ucf81\ucf82\ucf83\ucf84\ucf86",5,"\ucf8d"],["b261","\ucf8e",18,"\ucfa2",5,"\ucfa9"],["b281","\ucfaa",5,"\ucfb1",18,"\ucfc5",6,"\uae79\uae7b\uae7c\uae7d\uae84\uae85\uae8c\uaebc\uaebd\uaebe\uaec0\uaec4\uaecc\uaecd\uaecf\uaed0\uaed1\uaed8\uaed9\uaedc\uaee8\uaeeb\uaeed\uaef4\uaef8\uaefc\uaf07\uaf08\uaf0d\uaf10\uaf2c\uaf2d\uaf30\uaf32\uaf34\uaf3c\uaf3d\uaf3f\uaf41\uaf42\uaf43\uaf48\uaf49\uaf50\uaf5c\uaf5d\uaf64\uaf65\uaf79\uaf80\uaf84\uaf88\uaf90\uaf91\uaf95\uaf9c\uafb8\uafb9\uafbc\uafc0\uafc7\uafc8\uafc9\uafcb\uafcd\uafce\uafd4\uafdc\uafe8\uafe9\uaff0\uaff1\uaff4\uaff8\ub000\ub001\ub004\ub00c\ub010\ub014\ub01c\ub01d\ub028\ub044\ub045\ub048\ub04a\ub04c\ub04e\ub053\ub054\ub055\ub057\ub059"],["b341","\ucfcc",19,"\ucfe2\ucfe3\ucfe5\ucfe6\ucfe7\ucfe9"],["b361","\ucfea",5,"\ucff2\ucff4\ucff6",5,"\ucffd\ucffe\ucfff\ud001\ud002\ud003\ud005",5],["b381","\ud00b",5,"\ud012",5,"\ud019",19,"\ub05d\ub07c\ub07d\ub080\ub084\ub08c\ub08d\ub08f\ub091\ub098\ub099\ub09a\ub09c\ub09f\ub0a0\ub0a1\ub0a2\ub0a8\ub0a9\ub0ab",4,"\ub0b1\ub0b3\ub0b4\ub0b5\ub0b8\ub0bc\ub0c4\ub0c5\ub0c7\ub0c8\ub0c9\ub0d0\ub0d1\ub0d4\ub0d8\ub0e0\ub0e5\ub108\ub109\ub10b\ub10c\ub110\ub112\ub113\ub118\ub119\ub11b\ub11c\ub11d\ub123\ub124\ub125\ub128\ub12c\ub134\ub135\ub137\ub138\ub139\ub140\ub141\ub144\ub148\ub150\ub151\ub154\ub155\ub158\ub15c\ub160\ub178\ub179\ub17c\ub180\ub182\ub188\ub189\ub18b\ub18d\ub192\ub193\ub194\ub198\ub19c\ub1a8\ub1cc\ub1d0\ub1d4\ub1dc\ub1dd"],["b441","\ud02e",5,"\ud036\ud037\ud039\ud03a\ud03b\ud03d",6,"\ud046\ud048\ud04a",5],["b461","\ud051\ud052\ud053\ud055\ud056\ud057\ud059",6,"\ud061",10,"\ud06e\ud06f"],["b481","\ud071\ud072\ud073\ud075",6,"\ud07e\ud07f\ud080\ud082",18,"\ub1df\ub1e8\ub1e9\ub1ec\ub1f0\ub1f9\ub1fb\ub1fd\ub204\ub205\ub208\ub20b\ub20c\ub214\ub215\ub217\ub219\ub220\ub234\ub23c\ub258\ub25c\ub260\ub268\ub269\ub274\ub275\ub27c\ub284\ub285\ub289\ub290\ub291\ub294\ub298\ub299\ub29a\ub2a0\ub2a1\ub2a3\ub2a5\ub2a6\ub2aa\ub2ac\ub2b0\ub2b4\ub2c8\ub2c9\ub2cc\ub2d0\ub2d2\ub2d8\ub2d9\ub2db\ub2dd\ub2e2\ub2e4\ub2e5\ub2e6\ub2e8\ub2eb",4,"\ub2f3\ub2f4\ub2f5\ub2f7",4,"\ub2ff\ub300\ub301\ub304\ub308\ub310\ub311\ub313\ub314\ub315\ub31c\ub354\ub355\ub356\ub358\ub35b\ub35c\ub35e\ub35f\ub364\ub365"],["b541","\ud095",14,"\ud0a6\ud0a7\ud0a9\ud0aa\ud0ab\ud0ad",5],["b561","\ud0b3\ud0b6\ud0b8\ud0ba",5,"\ud0c2\ud0c3\ud0c5\ud0c6\ud0c7\ud0ca",5,"\ud0d2\ud0d6",4],["b581","\ud0db\ud0de\ud0df\ud0e1\ud0e2\ud0e3\ud0e5",6,"\ud0ee\ud0f2",5,"\ud0f9",11,"\ub367\ub369\ub36b\ub36e\ub370\ub371\ub374\ub378\ub380\ub381\ub383\ub384\ub385\ub38c\ub390\ub394\ub3a0\ub3a1\ub3a8\ub3ac\ub3c4\ub3c5\ub3c8\ub3cb\ub3cc\ub3ce\ub3d0\ub3d4\ub3d5\ub3d7\ub3d9\ub3db\ub3dd\ub3e0\ub3e4\ub3e8\ub3fc\ub410\ub418\ub41c\ub420\ub428\ub429\ub42b\ub434\ub450\ub451\ub454\ub458\ub460\ub461\ub463\ub465\ub46c\ub480\ub488\ub49d\ub4a4\ub4a8\ub4ac\ub4b5\ub4b7\ub4b9\ub4c0\ub4c4\ub4c8\ub4d0\ub4d5\ub4dc\ub4dd\ub4e0\ub4e3\ub4e4\ub4e6\ub4ec\ub4ed\ub4ef\ub4f1\ub4f8\ub514\ub515\ub518\ub51b\ub51c\ub524\ub525\ub527\ub528\ub529\ub52a\ub530\ub531\ub534\ub538"],["b641","\ud105",7,"\ud10e",17],["b661","\ud120",15,"\ud132\ud133\ud135\ud136\ud137\ud139\ud13b\ud13c\ud13d\ud13e"],["b681","\ud13f\ud142\ud146",5,"\ud14e\ud14f\ud151\ud152\ud153\ud155",6,"\ud15e\ud160\ud162",5,"\ud169\ud16a\ud16b\ud16d\ub540\ub541\ub543\ub544\ub545\ub54b\ub54c\ub54d\ub550\ub554\ub55c\ub55d\ub55f\ub560\ub561\ub5a0\ub5a1\ub5a4\ub5a8\ub5aa\ub5ab\ub5b0\ub5b1\ub5b3\ub5b4\ub5b5\ub5bb\ub5bc\ub5bd\ub5c0\ub5c4\ub5cc\ub5cd\ub5cf\ub5d0\ub5d1\ub5d8\ub5ec\ub610\ub611\ub614\ub618\ub625\ub62c\ub634\ub648\ub664\ub668\ub69c\ub69d\ub6a0\ub6a4\ub6ab\ub6ac\ub6b1\ub6d4\ub6f0\ub6f4\ub6f8\ub700\ub701\ub705\ub728\ub729\ub72c\ub72f\ub730\ub738\ub739\ub73b\ub744\ub748\ub74c\ub754\ub755\ub760\ub764\ub768\ub770\ub771\ub773\ub775\ub77c\ub77d\ub780\ub784\ub78c\ub78d\ub78f\ub790\ub791\ub792\ub796\ub797"],["b741","\ud16e",13,"\ud17d",6,"\ud185\ud186\ud187\ud189\ud18a"],["b761","\ud18b",20,"\ud1a2\ud1a3\ud1a5\ud1a6\ud1a7"],["b781","\ud1a9",6,"\ud1b2\ud1b4\ud1b6\ud1b7\ud1b8\ud1b9\ud1bb\ud1bd\ud1be\ud1bf\ud1c1",14,"\ub798\ub799\ub79c\ub7a0\ub7a8\ub7a9\ub7ab\ub7ac\ub7ad\ub7b4\ub7b5\ub7b8\ub7c7\ub7c9\ub7ec\ub7ed\ub7f0\ub7f4\ub7fc\ub7fd\ub7ff\ub800\ub801\ub807\ub808\ub809\ub80c\ub810\ub818\ub819\ub81b\ub81d\ub824\ub825\ub828\ub82c\ub834\ub835\ub837\ub838\ub839\ub840\ub844\ub851\ub853\ub85c\ub85d\ub860\ub864\ub86c\ub86d\ub86f\ub871\ub878\ub87c\ub88d\ub8a8\ub8b0\ub8b4\ub8b8\ub8c0\ub8c1\ub8c3\ub8c5\ub8cc\ub8d0\ub8d4\ub8dd\ub8df\ub8e1\ub8e8\ub8e9\ub8ec\ub8f0\ub8f8\ub8f9\ub8fb\ub8fd\ub904\ub918\ub920\ub93c\ub93d\ub940\ub944\ub94c\ub94f\ub951\ub958\ub959\ub95c\ub960\ub968\ub969"],["b841","\ud1d0",7,"\ud1d9",17],["b861","\ud1eb",8,"\ud1f5\ud1f6\ud1f7\ud1f9",13],["b881","\ud208\ud20a",5,"\ud211",24,"\ub96b\ub96d\ub974\ub975\ub978\ub97c\ub984\ub985\ub987\ub989\ub98a\ub98d\ub98e\ub9ac\ub9ad\ub9b0\ub9b4\ub9bc\ub9bd\ub9bf\ub9c1\ub9c8\ub9c9\ub9cc\ub9ce",4,"\ub9d8\ub9d9\ub9db\ub9dd\ub9de\ub9e1\ub9e3\ub9e4\ub9e5\ub9e8\ub9ec\ub9f4\ub9f5\ub9f7\ub9f8\ub9f9\ub9fa\uba00\uba01\uba08\uba15\uba38\uba39\uba3c\uba40\uba42\uba48\uba49\uba4b\uba4d\uba4e\uba53\uba54\uba55\uba58\uba5c\uba64\uba65\uba67\uba68\uba69\uba70\uba71\uba74\uba78\uba83\uba84\uba85\uba87\uba8c\ubaa8\ubaa9\ubaab\ubaac\ubab0\ubab2\ubab8\ubab9\ubabb\ubabd\ubac4\ubac8\ubad8\ubad9\ubafc"],["b941","\ud22a\ud22b\ud22e\ud22f\ud231\ud232\ud233\ud235",6,"\ud23e\ud240\ud242",5,"\ud249\ud24a\ud24b\ud24c"],["b961","\ud24d",14,"\ud25d",6,"\ud265\ud266\ud267\ud268"],["b981","\ud269",22,"\ud282\ud283\ud285\ud286\ud287\ud289\ud28a\ud28b\ud28c\ubb00\ubb04\ubb0d\ubb0f\ubb11\ubb18\ubb1c\ubb20\ubb29\ubb2b\ubb34\ubb35\ubb36\ubb38\ubb3b\ubb3c\ubb3d\ubb3e\ubb44\ubb45\ubb47\ubb49\ubb4d\ubb4f\ubb50\ubb54\ubb58\ubb61\ubb63\ubb6c\ubb88\ubb8c\ubb90\ubba4\ubba8\ubbac\ubbb4\ubbb7\ubbc0\ubbc4\ubbc8\ubbd0\ubbd3\ubbf8\ubbf9\ubbfc\ubbff\ubc00\ubc02\ubc08\ubc09\ubc0b\ubc0c\ubc0d\ubc0f\ubc11\ubc14",4,"\ubc1b",4,"\ubc24\ubc25\ubc27\ubc29\ubc2d\ubc30\ubc31\ubc34\ubc38\ubc40\ubc41\ubc43\ubc44\ubc45\ubc49\ubc4c\ubc4d\ubc50\ubc5d\ubc84\ubc85\ubc88\ubc8b\ubc8c\ubc8e\ubc94\ubc95\ubc97"],["ba41","\ud28d\ud28e\ud28f\ud292\ud293\ud294\ud296",5,"\ud29d\ud29e\ud29f\ud2a1\ud2a2\ud2a3\ud2a5",6,"\ud2ad"],["ba61","\ud2ae\ud2af\ud2b0\ud2b2",5,"\ud2ba\ud2bb\ud2bd\ud2be\ud2c1\ud2c3",4,"\ud2ca\ud2cc",5],["ba81","\ud2d2\ud2d3\ud2d5\ud2d6\ud2d7\ud2d9\ud2da\ud2db\ud2dd",6,"\ud2e6",9,"\ud2f2\ud2f3\ud2f5\ud2f6\ud2f7\ud2f9\ud2fa\ubc99\ubc9a\ubca0\ubca1\ubca4\ubca7\ubca8\ubcb0\ubcb1\ubcb3\ubcb4\ubcb5\ubcbc\ubcbd\ubcc0\ubcc4\ubccd\ubccf\ubcd0\ubcd1\ubcd5\ubcd8\ubcdc\ubcf4\ubcf5\ubcf6\ubcf8\ubcfc\ubd04\ubd05\ubd07\ubd09\ubd10\ubd14\ubd24\ubd2c\ubd40\ubd48\ubd49\ubd4c\ubd50\ubd58\ubd59\ubd64\ubd68\ubd80\ubd81\ubd84\ubd87\ubd88\ubd89\ubd8a\ubd90\ubd91\ubd93\ubd95\ubd99\ubd9a\ubd9c\ubda4\ubdb0\ubdb8\ubdd4\ubdd5\ubdd8\ubddc\ubde9\ubdf0\ubdf4\ubdf8\ube00\ube03\ube05\ube0c\ube0d\ube10\ube14\ube1c\ube1d\ube1f\ube44\ube45\ube48\ube4c\ube4e\ube54\ube55\ube57\ube59\ube5a\ube5b\ube60\ube61\ube64"],["bb41","\ud2fb",4,"\ud302\ud304\ud306",5,"\ud30f\ud311\ud312\ud313\ud315\ud317",4,"\ud31e\ud322\ud323"],["bb61","\ud324\ud326\ud327\ud32a\ud32b\ud32d\ud32e\ud32f\ud331",6,"\ud33a\ud33e",5,"\ud346\ud347\ud348\ud349"],["bb81","\ud34a",31,"\ube68\ube6a\ube70\ube71\ube73\ube74\ube75\ube7b\ube7c\ube7d\ube80\ube84\ube8c\ube8d\ube8f\ube90\ube91\ube98\ube99\ubea8\ubed0\ubed1\ubed4\ubed7\ubed8\ubee0\ubee3\ubee4\ubee5\ubeec\ubf01\ubf08\ubf09\ubf18\ubf19\ubf1b\ubf1c\ubf1d\ubf40\ubf41\ubf44\ubf48\ubf50\ubf51\ubf55\ubf94\ubfb0\ubfc5\ubfcc\ubfcd\ubfd0\ubfd4\ubfdc\ubfdf\ubfe1\uc03c\uc051\uc058\uc05c\uc060\uc068\uc069\uc090\uc091\uc094\uc098\uc0a0\uc0a1\uc0a3\uc0a5\uc0ac\uc0ad\uc0af\uc0b0\uc0b3\uc0b4\uc0b5\uc0b6\uc0bc\uc0bd\uc0bf\uc0c0\uc0c1\uc0c5\uc0c8\uc0c9\uc0cc\uc0d0\uc0d8\uc0d9\uc0db\uc0dc\uc0dd\uc0e4"],["bc41","\ud36a",17,"\ud37e\ud37f\ud381\ud382\ud383\ud385\ud386\ud387"],["bc61","\ud388\ud389\ud38a\ud38b\ud38e\ud392",5,"\ud39a\ud39b\ud39d\ud39e\ud39f\ud3a1",6,"\ud3aa\ud3ac\ud3ae"],["bc81","\ud3af",4,"\ud3b5\ud3b6\ud3b7\ud3b9\ud3ba\ud3bb\ud3bd",6,"\ud3c6\ud3c7\ud3ca",5,"\ud3d1",5,"\uc0e5\uc0e8\uc0ec\uc0f4\uc0f5\uc0f7\uc0f9\uc100\uc104\uc108\uc110\uc115\uc11c",4,"\uc123\uc124\uc126\uc127\uc12c\uc12d\uc12f\uc130\uc131\uc136\uc138\uc139\uc13c\uc140\uc148\uc149\uc14b\uc14c\uc14d\uc154\uc155\uc158\uc15c\uc164\uc165\uc167\uc168\uc169\uc170\uc174\uc178\uc185\uc18c\uc18d\uc18e\uc190\uc194\uc196\uc19c\uc19d\uc19f\uc1a1\uc1a5\uc1a8\uc1a9\uc1ac\uc1b0\uc1bd\uc1c4\uc1c8\uc1cc\uc1d4\uc1d7\uc1d8\uc1e0\uc1e4\uc1e8\uc1f0\uc1f1\uc1f3\uc1fc\uc1fd\uc200\uc204\uc20c\uc20d\uc20f\uc211\uc218\uc219\uc21c\uc21f\uc220\uc228\uc229\uc22b\uc22d"],["bd41","\ud3d7\ud3d9",7,"\ud3e2\ud3e4",7,"\ud3ee\ud3ef\ud3f1\ud3f2\ud3f3\ud3f5\ud3f6\ud3f7"],["bd61","\ud3f8\ud3f9\ud3fa\ud3fb\ud3fe\ud400\ud402",5,"\ud409",13],["bd81","\ud417",5,"\ud41e",25,"\uc22f\uc231\uc232\uc234\uc248\uc250\uc251\uc254\uc258\uc260\uc265\uc26c\uc26d\uc270\uc274\uc27c\uc27d\uc27f\uc281\uc288\uc289\uc290\uc298\uc29b\uc29d\uc2a4\uc2a5\uc2a8\uc2ac\uc2ad\uc2b4\uc2b5\uc2b7\uc2b9\uc2dc\uc2dd\uc2e0\uc2e3\uc2e4\uc2eb\uc2ec\uc2ed\uc2ef\uc2f1\uc2f6\uc2f8\uc2f9\uc2fb\uc2fc\uc300\uc308\uc309\uc30c\uc30d\uc313\uc314\uc315\uc318\uc31c\uc324\uc325\uc328\uc329\uc345\uc368\uc369\uc36c\uc370\uc372\uc378\uc379\uc37c\uc37d\uc384\uc388\uc38c\uc3c0\uc3d8\uc3d9\uc3dc\uc3df\uc3e0\uc3e2\uc3e8\uc3e9\uc3ed\uc3f4\uc3f5\uc3f8\uc408\uc410\uc424\uc42c\uc430"],["be41","\ud438",7,"\ud441\ud442\ud443\ud445",14],["be61","\ud454",7,"\ud45d\ud45e\ud45f\ud461\ud462\ud463\ud465",7,"\ud46e\ud470\ud471\ud472"],["be81","\ud473",4,"\ud47a\ud47b\ud47d\ud47e\ud481\ud483",4,"\ud48a\ud48c\ud48e",5,"\ud495",8,"\uc434\uc43c\uc43d\uc448\uc464\uc465\uc468\uc46c\uc474\uc475\uc479\uc480\uc494\uc49c\uc4b8\uc4bc\uc4e9\uc4f0\uc4f1\uc4f4\uc4f8\uc4fa\uc4ff\uc500\uc501\uc50c\uc510\uc514\uc51c\uc528\uc529\uc52c\uc530\uc538\uc539\uc53b\uc53d\uc544\uc545\uc548\uc549\uc54a\uc54c\uc54d\uc54e\uc553\uc554\uc555\uc557\uc558\uc559\uc55d\uc55e\uc560\uc561\uc564\uc568\uc570\uc571\uc573\uc574\uc575\uc57c\uc57d\uc580\uc584\uc587\uc58c\uc58d\uc58f\uc591\uc595\uc597\uc598\uc59c\uc5a0\uc5a9\uc5b4\uc5b5\uc5b8\uc5b9\uc5bb\uc5bc\uc5bd\uc5be\uc5c4",6,"\uc5cc\uc5ce"],["bf41","\ud49e",10,"\ud4aa",14],["bf61","\ud4b9",18,"\ud4cd\ud4ce\ud4cf\ud4d1\ud4d2\ud4d3\ud4d5"],["bf81","\ud4d6",5,"\ud4dd\ud4de\ud4e0",7,"\ud4e9\ud4ea\ud4eb\ud4ed\ud4ee\ud4ef\ud4f1",6,"\ud4f9\ud4fa\ud4fc\uc5d0\uc5d1\uc5d4\uc5d8\uc5e0\uc5e1\uc5e3\uc5e5\uc5ec\uc5ed\uc5ee\uc5f0\uc5f4\uc5f6\uc5f7\uc5fc",5,"\uc605\uc606\uc607\uc608\uc60c\uc610\uc618\uc619\uc61b\uc61c\uc624\uc625\uc628\uc62c\uc62d\uc62e\uc630\uc633\uc634\uc635\uc637\uc639\uc63b\uc640\uc641\uc644\uc648\uc650\uc651\uc653\uc654\uc655\uc65c\uc65d\uc660\uc66c\uc66f\uc671\uc678\uc679\uc67c\uc680\uc688\uc689\uc68b\uc68d\uc694\uc695\uc698\uc69c\uc6a4\uc6a5\uc6a7\uc6a9\uc6b0\uc6b1\uc6b4\uc6b8\uc6b9\uc6ba\uc6c0\uc6c1\uc6c3\uc6c5\uc6cc\uc6cd\uc6d0\uc6d4\uc6dc\uc6dd\uc6e0\uc6e1\uc6e8"],["c041","\ud4fe",5,"\ud505\ud506\ud507\ud509\ud50a\ud50b\ud50d",6,"\ud516\ud518",5],["c061","\ud51e",25],["c081","\ud538\ud539\ud53a\ud53b\ud53e\ud53f\ud541\ud542\ud543\ud545",6,"\ud54e\ud550\ud552",5,"\ud55a\ud55b\ud55d\ud55e\ud55f\ud561\ud562\ud563\uc6e9\uc6ec\uc6f0\uc6f8\uc6f9\uc6fd\uc704\uc705\uc708\uc70c\uc714\uc715\uc717\uc719\uc720\uc721\uc724\uc728\uc730\uc731\uc733\uc735\uc737\uc73c\uc73d\uc740\uc744\uc74a\uc74c\uc74d\uc74f\uc751",7,"\uc75c\uc760\uc768\uc76b\uc774\uc775\uc778\uc77c\uc77d\uc77e\uc783\uc784\uc785\uc787\uc788\uc789\uc78a\uc78e\uc790\uc791\uc794\uc796\uc797\uc798\uc79a\uc7a0\uc7a1\uc7a3\uc7a4\uc7a5\uc7a6\uc7ac\uc7ad\uc7b0\uc7b4\uc7bc\uc7bd\uc7bf\uc7c0\uc7c1\uc7c8\uc7c9\uc7cc\uc7ce\uc7d0\uc7d8\uc7dd\uc7e4\uc7e8\uc7ec\uc800\uc801\uc804\uc808\uc80a"],["c141","\ud564\ud566\ud567\ud56a\ud56c\ud56e",5,"\ud576\ud577\ud579\ud57a\ud57b\ud57d",6,"\ud586\ud58a\ud58b"],["c161","\ud58c\ud58d\ud58e\ud58f\ud591",19,"\ud5a6\ud5a7"],["c181","\ud5a8",31,"\uc810\uc811\uc813\uc815\uc816\uc81c\uc81d\uc820\uc824\uc82c\uc82d\uc82f\uc831\uc838\uc83c\uc840\uc848\uc849\uc84c\uc84d\uc854\uc870\uc871\uc874\uc878\uc87a\uc880\uc881\uc883\uc885\uc886\uc887\uc88b\uc88c\uc88d\uc894\uc89d\uc89f\uc8a1\uc8a8\uc8bc\uc8bd\uc8c4\uc8c8\uc8cc\uc8d4\uc8d5\uc8d7\uc8d9\uc8e0\uc8e1\uc8e4\uc8f5\uc8fc\uc8fd\uc900\uc904\uc905\uc906\uc90c\uc90d\uc90f\uc911\uc918\uc92c\uc934\uc950\uc951\uc954\uc958\uc960\uc961\uc963\uc96c\uc970\uc974\uc97c\uc988\uc989\uc98c\uc990\uc998\uc999\uc99b\uc99d\uc9c0\uc9c1\uc9c4\uc9c7\uc9c8\uc9ca\uc9d0\uc9d1\uc9d3"],["c241","\ud5ca\ud5cb\ud5cd\ud5ce\ud5cf\ud5d1\ud5d3",4,"\ud5da\ud5dc\ud5de",5,"\ud5e6\ud5e7\ud5e9\ud5ea\ud5eb\ud5ed\ud5ee"],["c261","\ud5ef",4,"\ud5f6\ud5f8\ud5fa",5,"\ud602\ud603\ud605\ud606\ud607\ud609",6,"\ud612"],["c281","\ud616",5,"\ud61d\ud61e\ud61f\ud621\ud622\ud623\ud625",7,"\ud62e",9,"\ud63a\ud63b\uc9d5\uc9d6\uc9d9\uc9da\uc9dc\uc9dd\uc9e0\uc9e2\uc9e4\uc9e7\uc9ec\uc9ed\uc9ef\uc9f0\uc9f1\uc9f8\uc9f9\uc9fc\uca00\uca08\uca09\uca0b\uca0c\uca0d\uca14\uca18\uca29\uca4c\uca4d\uca50\uca54\uca5c\uca5d\uca5f\uca60\uca61\uca68\uca7d\uca84\uca98\ucabc\ucabd\ucac0\ucac4\ucacc\ucacd\ucacf\ucad1\ucad3\ucad8\ucad9\ucae0\ucaec\ucaf4\ucb08\ucb10\ucb14\ucb18\ucb20\ucb21\ucb41\ucb48\ucb49\ucb4c\ucb50\ucb58\ucb59\ucb5d\ucb64\ucb78\ucb79\ucb9c\ucbb8\ucbd4\ucbe4\ucbe7\ucbe9\ucc0c\ucc0d\ucc10\ucc14\ucc1c\ucc1d\ucc21\ucc22\ucc27\ucc28\ucc29\ucc2c\ucc2e\ucc30\ucc38\ucc39\ucc3b"],["c341","\ud63d\ud63e\ud63f\ud641\ud642\ud643\ud644\ud646\ud647\ud64a\ud64c\ud64e\ud64f\ud650\ud652\ud653\ud656\ud657\ud659\ud65a\ud65b\ud65d",4],["c361","\ud662",4,"\ud668\ud66a",5,"\ud672\ud673\ud675",11],["c381","\ud681\ud682\ud684\ud686",5,"\ud68e\ud68f\ud691\ud692\ud693\ud695",7,"\ud69e\ud6a0\ud6a2",5,"\ud6a9\ud6aa\ucc3c\ucc3d\ucc3e\ucc44\ucc45\ucc48\ucc4c\ucc54\ucc55\ucc57\ucc58\ucc59\ucc60\ucc64\ucc66\ucc68\ucc70\ucc75\ucc98\ucc99\ucc9c\ucca0\ucca8\ucca9\uccab\uccac\uccad\uccb4\uccb5\uccb8\uccbc\uccc4\uccc5\uccc7\uccc9\uccd0\uccd4\ucce4\uccec\uccf0\ucd01\ucd08\ucd09\ucd0c\ucd10\ucd18\ucd19\ucd1b\ucd1d\ucd24\ucd28\ucd2c\ucd39\ucd5c\ucd60\ucd64\ucd6c\ucd6d\ucd6f\ucd71\ucd78\ucd88\ucd94\ucd95\ucd98\ucd9c\ucda4\ucda5\ucda7\ucda9\ucdb0\ucdc4\ucdcc\ucdd0\ucde8\ucdec\ucdf0\ucdf8\ucdf9\ucdfb\ucdfd\uce04\uce08\uce0c\uce14\uce19\uce20\uce21\uce24\uce28\uce30\uce31\uce33\uce35"],["c441","\ud6ab\ud6ad\ud6ae\ud6af\ud6b1",7,"\ud6ba\ud6bc",7,"\ud6c6\ud6c7\ud6c9\ud6ca\ud6cb"],["c461","\ud6cd\ud6ce\ud6cf\ud6d0\ud6d2\ud6d3\ud6d5\ud6d6\ud6d8\ud6da",5,"\ud6e1\ud6e2\ud6e3\ud6e5\ud6e6\ud6e7\ud6e9",4],["c481","\ud6ee\ud6ef\ud6f1\ud6f2\ud6f3\ud6f4\ud6f6",5,"\ud6fe\ud6ff\ud701\ud702\ud703\ud705",11,"\ud712\ud713\ud714\uce58\uce59\uce5c\uce5f\uce60\uce61\uce68\uce69\uce6b\uce6d\uce74\uce75\uce78\uce7c\uce84\uce85\uce87\uce89\uce90\uce91\uce94\uce98\ucea0\ucea1\ucea3\ucea4\ucea5\uceac\ucead\ucec1\ucee4\ucee5\ucee8\uceeb\uceec\ucef4\ucef5\ucef7\ucef8\ucef9\ucf00\ucf01\ucf04\ucf08\ucf10\ucf11\ucf13\ucf15\ucf1c\ucf20\ucf24\ucf2c\ucf2d\ucf2f\ucf30\ucf31\ucf38\ucf54\ucf55\ucf58\ucf5c\ucf64\ucf65\ucf67\ucf69\ucf70\ucf71\ucf74\ucf78\ucf80\ucf85\ucf8c\ucfa1\ucfa8\ucfb0\ucfc4\ucfe0\ucfe1\ucfe4\ucfe8\ucff0\ucff1\ucff3\ucff5\ucffc\ud000\ud004\ud011\ud018\ud02d\ud034\ud035\ud038\ud03c"],["c541","\ud715\ud716\ud717\ud71a\ud71b\ud71d\ud71e\ud71f\ud721",6,"\ud72a\ud72c\ud72e",5,"\ud736\ud737\ud739"],["c561","\ud73a\ud73b\ud73d",6,"\ud745\ud746\ud748\ud74a",5,"\ud752\ud753\ud755\ud75a",4],["c581","\ud75f\ud762\ud764\ud766\ud767\ud768\ud76a\ud76b\ud76d\ud76e\ud76f\ud771\ud772\ud773\ud775",6,"\ud77e\ud77f\ud780\ud782",5,"\ud78a\ud78b\ud044\ud045\ud047\ud049\ud050\ud054\ud058\ud060\ud06c\ud06d\ud070\ud074\ud07c\ud07d\ud081\ud0a4\ud0a5\ud0a8\ud0ac\ud0b4\ud0b5\ud0b7\ud0b9\ud0c0\ud0c1\ud0c4\ud0c8\ud0c9\ud0d0\ud0d1\ud0d3\ud0d4\ud0d5\ud0dc\ud0dd\ud0e0\ud0e4\ud0ec\ud0ed\ud0ef\ud0f0\ud0f1\ud0f8\ud10d\ud130\ud131\ud134\ud138\ud13a\ud140\ud141\ud143\ud144\ud145\ud14c\ud14d\ud150\ud154\ud15c\ud15d\ud15f\ud161\ud168\ud16c\ud17c\ud184\ud188\ud1a0\ud1a1\ud1a4\ud1a8\ud1b0\ud1b1\ud1b3\ud1b5\ud1ba\ud1bc\ud1c0\ud1d8\ud1f4\ud1f8\ud207\ud209\ud210\ud22c\ud22d\ud230\ud234\ud23c\ud23d\ud23f\ud241\ud248\ud25c"],["c641","\ud78d\ud78e\ud78f\ud791",6,"\ud79a\ud79c\ud79e",5],["c6a1","\ud264\ud280\ud281\ud284\ud288\ud290\ud291\ud295\ud29c\ud2a0\ud2a4\ud2ac\ud2b1\ud2b8\ud2b9\ud2bc\ud2bf\ud2c0\ud2c2\ud2c8\ud2c9\ud2cb\ud2d4\ud2d8\ud2dc\ud2e4\ud2e5\ud2f0\ud2f1\ud2f4\ud2f8\ud300\ud301\ud303\ud305\ud30c\ud30d\ud30e\ud310\ud314\ud316\ud31c\ud31d\ud31f\ud320\ud321\ud325\ud328\ud329\ud32c\ud330\ud338\ud339\ud33b\ud33c\ud33d\ud344\ud345\ud37c\ud37d\ud380\ud384\ud38c\ud38d\ud38f\ud390\ud391\ud398\ud399\ud39c\ud3a0\ud3a8\ud3a9\ud3ab\ud3ad\ud3b4\ud3b8\ud3bc\ud3c4\ud3c5\ud3c8\ud3c9\ud3d0\ud3d8\ud3e1\ud3e3\ud3ec\ud3ed\ud3f0\ud3f4\ud3fc\ud3fd\ud3ff\ud401"],["c7a1","\ud408\ud41d\ud440\ud444\ud45c\ud460\ud464\ud46d\ud46f\ud478\ud479\ud47c\ud47f\ud480\ud482\ud488\ud489\ud48b\ud48d\ud494\ud4a9\ud4cc\ud4d0\ud4d4\ud4dc\ud4df\ud4e8\ud4ec\ud4f0\ud4f8\ud4fb\ud4fd\ud504\ud508\ud50c\ud514\ud515\ud517\ud53c\ud53d\ud540\ud544\ud54c\ud54d\ud54f\ud551\ud558\ud559\ud55c\ud560\ud565\ud568\ud569\ud56b\ud56d\ud574\ud575\ud578\ud57c\ud584\ud585\ud587\ud588\ud589\ud590\ud5a5\ud5c8\ud5c9\ud5cc\ud5d0\ud5d2\ud5d8\ud5d9\ud5db\ud5dd\ud5e4\ud5e5\ud5e8\ud5ec\ud5f4\ud5f5\ud5f7\ud5f9\ud600\ud601\ud604\ud608\ud610\ud611\ud613\ud614\ud615\ud61c\ud620"],["c8a1","\ud624\ud62d\ud638\ud639\ud63c\ud640\ud645\ud648\ud649\ud64b\ud64d\ud651\ud654\ud655\ud658\ud65c\ud667\ud669\ud670\ud671\ud674\ud683\ud685\ud68c\ud68d\ud690\ud694\ud69d\ud69f\ud6a1\ud6a8\ud6ac\ud6b0\ud6b9\ud6bb\ud6c4\ud6c5\ud6c8\ud6cc\ud6d1\ud6d4\ud6d7\ud6d9\ud6e0\ud6e4\ud6e8\ud6f0\ud6f5\ud6fc\ud6fd\ud700\ud704\ud711\ud718\ud719\ud71c\ud720\ud728\ud729\ud72b\ud72d\ud734\ud735\ud738\ud73c\ud744\ud747\ud749\ud750\ud751\ud754\ud756\ud757\ud758\ud759\ud760\ud761\ud763\ud765\ud769\ud76c\ud770\ud774\ud77c\ud77d\ud781\ud788\ud789\ud78c\ud790\ud798\ud799\ud79b\ud79d"],["caa1","\u4f3d\u4f73\u5047\u50f9\u52a0\u53ef\u5475\u54e5\u5609\u5ac1\u5bb6\u6687\u67b6\u67b7\u67ef\u6b4c\u73c2\u75c2\u7a3c\u82db\u8304\u8857\u8888\u8a36\u8cc8\u8dcf\u8efb\u8fe6\u99d5\u523b\u5374\u5404\u606a\u6164\u6bbc\u73cf\u811a\u89ba\u89d2\u95a3\u4f83\u520a\u58be\u5978\u59e6\u5e72\u5e79\u61c7\u63c0\u6746\u67ec\u687f\u6f97\u764e\u770b\u78f5\u7a08\u7aff\u7c21\u809d\u826e\u8271\u8aeb\u9593\u4e6b\u559d\u66f7\u6e34\u78a3\u7aed\u845b\u8910\u874e\u97a8\u52d8\u574e\u582a\u5d4c\u611f\u61be\u6221\u6562\u67d1\u6a44\u6e1b\u7518\u75b3\u76e3\u77b0\u7d3a\u90af\u9451\u9452\u9f95"],["cba1","\u5323\u5cac\u7532\u80db\u9240\u9598\u525b\u5808\u59dc\u5ca1\u5d17\u5eb7\u5f3a\u5f4a\u6177\u6c5f\u757a\u7586\u7ce0\u7d73\u7db1\u7f8c\u8154\u8221\u8591\u8941\u8b1b\u92fc\u964d\u9c47\u4ecb\u4ef7\u500b\u51f1\u584f\u6137\u613e\u6168\u6539\u69ea\u6f11\u75a5\u7686\u76d6\u7b87\u82a5\u84cb\uf900\u93a7\u958b\u5580\u5ba2\u5751\uf901\u7cb3\u7fb9\u91b5\u5028\u53bb\u5c45\u5de8\u62d2\u636e\u64da\u64e7\u6e20\u70ac\u795b\u8ddd\u8e1e\uf902\u907d\u9245\u92f8\u4e7e\u4ef6\u5065\u5dfe\u5efa\u6106\u6957\u8171\u8654\u8e47\u9375\u9a2b\u4e5e\u5091\u6770\u6840\u5109\u528d\u5292\u6aa2"],["cca1","\u77bc\u9210\u9ed4\u52ab\u602f\u8ff2\u5048\u61a9\u63ed\u64ca\u683c\u6a84\u6fc0\u8188\u89a1\u9694\u5805\u727d\u72ac\u7504\u7d79\u7e6d\u80a9\u898b\u8b74\u9063\u9d51\u6289\u6c7a\u6f54\u7d50\u7f3a\u8a23\u517c\u614a\u7b9d\u8b19\u9257\u938c\u4eac\u4fd3\u501e\u50be\u5106\u52c1\u52cd\u537f\u5770\u5883\u5e9a\u5f91\u6176\u61ac\u64ce\u656c\u666f\u66bb\u66f4\u6897\u6d87\u7085\u70f1\u749f\u74a5\u74ca\u75d9\u786c\u78ec\u7adf\u7af6\u7d45\u7d93\u8015\u803f\u811b\u8396\u8b66\u8f15\u9015\u93e1\u9803\u9838\u9a5a\u9be8\u4fc2\u5553\u583a\u5951\u5b63\u5c46\u60b8\u6212\u6842\u68b0"],["cda1","\u68e8\u6eaa\u754c\u7678\u78ce\u7a3d\u7cfb\u7e6b\u7e7c\u8a08\u8aa1\u8c3f\u968e\u9dc4\u53e4\u53e9\u544a\u5471\u56fa\u59d1\u5b64\u5c3b\u5eab\u62f7\u6537\u6545\u6572\u66a0\u67af\u69c1\u6cbd\u75fc\u7690\u777e\u7a3f\u7f94\u8003\u80a1\u818f\u82e6\u82fd\u83f0\u85c1\u8831\u88b4\u8aa5\uf903\u8f9c\u932e\u96c7\u9867\u9ad8\u9f13\u54ed\u659b\u66f2\u688f\u7a40\u8c37\u9d60\u56f0\u5764\u5d11\u6606\u68b1\u68cd\u6efe\u7428\u889e\u9be4\u6c68\uf904\u9aa8\u4f9b\u516c\u5171\u529f\u5b54\u5de5\u6050\u606d\u62f1\u63a7\u653b\u73d9\u7a7a\u86a3\u8ca2\u978f\u4e32\u5be1\u6208\u679c\u74dc"],["cea1","\u79d1\u83d3\u8a87\u8ab2\u8de8\u904e\u934b\u9846\u5ed3\u69e8\u85ff\u90ed\uf905\u51a0\u5b98\u5bec\u6163\u68fa\u6b3e\u704c\u742f\u74d8\u7ba1\u7f50\u83c5\u89c0\u8cab\u95dc\u9928\u522e\u605d\u62ec\u9002\u4f8a\u5149\u5321\u58d9\u5ee3\u66e0\u6d38\u709a\u72c2\u73d6\u7b50\u80f1\u945b\u5366\u639b\u7f6b\u4e56\u5080\u584a\u58de\u602a\u6127\u62d0\u69d0\u9b41\u5b8f\u7d18\u80b1\u8f5f\u4ea4\u50d1\u54ac\u55ac\u5b0c\u5da0\u5de7\u652a\u654e\u6821\u6a4b\u72e1\u768e\u77ef\u7d5e\u7ff9\u81a0\u854e\u86df\u8f03\u8f4e\u90ca\u9903\u9a55\u9bab\u4e18\u4e45\u4e5d\u4ec7\u4ff1\u5177\u52fe"],["cfa1","\u5340\u53e3\u53e5\u548e\u5614\u5775\u57a2\u5bc7\u5d87\u5ed0\u61fc\u62d8\u6551\u67b8\u67e9\u69cb\u6b50\u6bc6\u6bec\u6c42\u6e9d\u7078\u72d7\u7396\u7403\u77bf\u77e9\u7a76\u7d7f\u8009\u81fc\u8205\u820a\u82df\u8862\u8b33\u8cfc\u8ec0\u9011\u90b1\u9264\u92b6\u99d2\u9a45\u9ce9\u9dd7\u9f9c\u570b\u5c40\u83ca\u97a0\u97ab\u9eb4\u541b\u7a98\u7fa4\u88d9\u8ecd\u90e1\u5800\u5c48\u6398\u7a9f\u5bae\u5f13\u7a79\u7aae\u828e\u8eac\u5026\u5238\u52f8\u5377\u5708\u62f3\u6372\u6b0a\u6dc3\u7737\u53a5\u7357\u8568\u8e76\u95d5\u673a\u6ac3\u6f70\u8a6d\u8ecc\u994b\uf906\u6677\u6b78\u8cb4"],["d0a1","\u9b3c\uf907\u53eb\u572d\u594e\u63c6\u69fb\u73ea\u7845\u7aba\u7ac5\u7cfe\u8475\u898f\u8d73\u9035\u95a8\u52fb\u5747\u7547\u7b60\u83cc\u921e\uf908\u6a58\u514b\u524b\u5287\u621f\u68d8\u6975\u9699\u50c5\u52a4\u52e4\u61c3\u65a4\u6839\u69ff\u747e\u7b4b\u82b9\u83eb\u89b2\u8b39\u8fd1\u9949\uf909\u4eca\u5997\u64d2\u6611\u6a8e\u7434\u7981\u79bd\u82a9\u887e\u887f\u895f\uf90a\u9326\u4f0b\u53ca\u6025\u6271\u6c72\u7d1a\u7d66\u4e98\u5162\u77dc\u80af\u4f01\u4f0e\u5176\u5180\u55dc\u5668\u573b\u57fa\u57fc\u5914\u5947\u5993\u5bc4\u5c90\u5d0e\u5df1\u5e7e\u5fcc\u6280\u65d7\u65e3"],["d1a1","\u671e\u671f\u675e\u68cb\u68c4\u6a5f\u6b3a\u6c23\u6c7d\u6c82\u6dc7\u7398\u7426\u742a\u7482\u74a3\u7578\u757f\u7881\u78ef\u7941\u7947\u7948\u797a\u7b95\u7d00\u7dba\u7f88\u8006\u802d\u808c\u8a18\u8b4f\u8c48\u8d77\u9321\u9324\u98e2\u9951\u9a0e\u9a0f\u9a65\u9e92\u7dca\u4f76\u5409\u62ee\u6854\u91d1\u55ab\u513a\uf90b\uf90c\u5a1c\u61e6\uf90d\u62cf\u62ff\uf90e",5,"\u90a3\uf914",4,"\u8afe\uf919\uf91a\uf91b\uf91c\u6696\uf91d\u7156\uf91e\uf91f\u96e3\uf920\u634f\u637a\u5357\uf921\u678f\u6960\u6e73\uf922\u7537\uf923\uf924\uf925"],["d2a1","\u7d0d\uf926\uf927\u8872\u56ca\u5a18\uf928",4,"\u4e43\uf92d\u5167\u5948\u67f0\u8010\uf92e\u5973\u5e74\u649a\u79ca\u5ff5\u606c\u62c8\u637b\u5be7\u5bd7\u52aa\uf92f\u5974\u5f29\u6012\uf930\uf931\uf932\u7459\uf933",5,"\u99d1\uf939",10,"\u6fc3\uf944\uf945\u81bf\u8fb2\u60f1\uf946\uf947\u8166\uf948\uf949\u5c3f\uf94a",7,"\u5ae9\u8a25\u677b\u7d10\uf952",5,"\u80fd\uf958\uf959\u5c3c\u6ce5\u533f\u6eba\u591a\u8336"],["d3a1","\u4e39\u4eb6\u4f46\u55ae\u5718\u58c7\u5f56\u65b7\u65e6\u6a80\u6bb5\u6e4d\u77ed\u7aef\u7c1e\u7dde\u86cb\u8892\u9132\u935b\u64bb\u6fbe\u737a\u75b8\u9054\u5556\u574d\u61ba\u64d4\u66c7\u6de1\u6e5b\u6f6d\u6fb9\u75f0\u8043\u81bd\u8541\u8983\u8ac7\u8b5a\u931f\u6c93\u7553\u7b54\u8e0f\u905d\u5510\u5802\u5858\u5e62\u6207\u649e\u68e0\u7576\u7cd6\u87b3\u9ee8\u4ee3\u5788\u576e\u5927\u5c0d\u5cb1\u5e36\u5f85\u6234\u64e1\u73b3\u81fa\u888b\u8cb8\u968a\u9edb\u5b85\u5fb7\u60b3\u5012\u5200\u5230\u5716\u5835\u5857\u5c0e\u5c60\u5cf6\u5d8b\u5ea6\u5f92\u60bc\u6311\u6389\u6417\u6843"],["d4a1","\u68f9\u6ac2\u6dd8\u6e21\u6ed4\u6fe4\u71fe\u76dc\u7779\u79b1\u7a3b\u8404\u89a9\u8ced\u8df3\u8e48\u9003\u9014\u9053\u90fd\u934d\u9676\u97dc\u6bd2\u7006\u7258\u72a2\u7368\u7763\u79bf\u7be4\u7e9b\u8b80\u58a9\u60c7\u6566\u65fd\u66be\u6c8c\u711e\u71c9\u8c5a\u9813\u4e6d\u7a81\u4edd\u51ac\u51cd\u52d5\u540c\u61a7\u6771\u6850\u68df\u6d1e\u6f7c\u75bc\u77b3\u7ae5\u80f4\u8463\u9285\u515c\u6597\u675c\u6793\u75d8\u7ac7\u8373\uf95a\u8c46\u9017\u982d\u5c6f\u81c0\u829a\u9041\u906f\u920d\u5f97\u5d9d\u6a59\u71c8\u767b\u7b49\u85e4\u8b04\u9127\u9a30\u5587\u61f6\uf95b\u7669\u7f85"],["d5a1","\u863f\u87ba\u88f8\u908f\uf95c\u6d1b\u70d9\u73de\u7d61\u843d\uf95d\u916a\u99f1\uf95e\u4e82\u5375\u6b04\u6b12\u703e\u721b\u862d\u9e1e\u524c\u8fa3\u5d50\u64e5\u652c\u6b16\u6feb\u7c43\u7e9c\u85cd\u8964\u89bd\u62c9\u81d8\u881f\u5eca\u6717\u6d6a\u72fc\u7405\u746f\u8782\u90de\u4f86\u5d0d\u5fa0\u840a\u51b7\u63a0\u7565\u4eae\u5006\u5169\u51c9\u6881\u6a11\u7cae\u7cb1\u7ce7\u826f\u8ad2\u8f1b\u91cf\u4fb6\u5137\u52f5\u5442\u5eec\u616e\u623e\u65c5\u6ada\u6ffe\u792a\u85dc\u8823\u95ad\u9a62\u9a6a\u9e97\u9ece\u529b\u66c6\u6b77\u701d\u792b\u8f62\u9742\u6190\u6200\u6523\u6f23"],["d6a1","\u7149\u7489\u7df4\u806f\u84ee\u8f26\u9023\u934a\u51bd\u5217\u52a3\u6d0c\u70c8\u88c2\u5ec9\u6582\u6bae\u6fc2\u7c3e\u7375\u4ee4\u4f36\u56f9\uf95f\u5cba\u5dba\u601c\u73b2\u7b2d\u7f9a\u7fce\u8046\u901e\u9234\u96f6\u9748\u9818\u9f61\u4f8b\u6fa7\u79ae\u91b4\u96b7\u52de\uf960\u6488\u64c4\u6ad3\u6f5e\u7018\u7210\u76e7\u8001\u8606\u865c\u8def\u8f05\u9732\u9b6f\u9dfa\u9e75\u788c\u797f\u7da0\u83c9\u9304\u9e7f\u9e93\u8ad6\u58df\u5f04\u6727\u7027\u74cf\u7c60\u807e\u5121\u7028\u7262\u78ca\u8cc2\u8cda\u8cf4\u96f7\u4e86\u50da\u5bee\u5ed6\u6599\u71ce\u7642\u77ad\u804a\u84fc"],["d7a1","\u907c\u9b27\u9f8d\u58d8\u5a41\u5c62\u6a13\u6dda\u6f0f\u763b\u7d2f\u7e37\u851e\u8938\u93e4\u964b\u5289\u65d2\u67f3\u69b4\u6d41\u6e9c\u700f\u7409\u7460\u7559\u7624\u786b\u8b2c\u985e\u516d\u622e\u9678\u4f96\u502b\u5d19\u6dea\u7db8\u8f2a\u5f8b\u6144\u6817\uf961\u9686\u52d2\u808b\u51dc\u51cc\u695e\u7a1c\u7dbe\u83f1\u9675\u4fda\u5229\u5398\u540f\u550e\u5c65\u60a7\u674e\u68a8\u6d6c\u7281\u72f8\u7406\u7483\uf962\u75e2\u7c6c\u7f79\u7fb8\u8389\u88cf\u88e1\u91cc\u91d0\u96e2\u9bc9\u541d\u6f7e\u71d0\u7498\u85fa\u8eaa\u96a3\u9c57\u9e9f\u6797\u6dcb\u7433\u81e8\u9716\u782c"],["d8a1","\u7acb\u7b20\u7c92\u6469\u746a\u75f2\u78bc\u78e8\u99ac\u9b54\u9ebb\u5bde\u5e55\u6f20\u819c\u83ab\u9088\u4e07\u534d\u5a29\u5dd2\u5f4e\u6162\u633d\u6669\u66fc\u6eff\u6f2b\u7063\u779e\u842c\u8513\u883b\u8f13\u9945\u9c3b\u551c\u62b9\u672b\u6cab\u8309\u896a\u977a\u4ea1\u5984\u5fd8\u5fd9\u671b\u7db2\u7f54\u8292\u832b\u83bd\u8f1e\u9099\u57cb\u59b9\u5a92\u5bd0\u6627\u679a\u6885\u6bcf\u7164\u7f75\u8cb7\u8ce3\u9081\u9b45\u8108\u8c8a\u964c\u9a40\u9ea5\u5b5f\u6c13\u731b\u76f2\u76df\u840c\u51aa\u8993\u514d\u5195\u52c9\u68c9\u6c94\u7704\u7720\u7dbf\u7dec\u9762\u9eb5\u6ec5"],["d9a1","\u8511\u51a5\u540d\u547d\u660e\u669d\u6927\u6e9f\u76bf\u7791\u8317\u84c2\u879f\u9169\u9298\u9cf4\u8882\u4fae\u5192\u52df\u59c6\u5e3d\u6155\u6478\u6479\u66ae\u67d0\u6a21\u6bcd\u6bdb\u725f\u7261\u7441\u7738\u77db\u8017\u82bc\u8305\u8b00\u8b28\u8c8c\u6728\u6c90\u7267\u76ee\u7766\u7a46\u9da9\u6b7f\u6c92\u5922\u6726\u8499\u536f\u5893\u5999\u5edf\u63cf\u6634\u6773\u6e3a\u732b\u7ad7\u82d7\u9328\u52d9\u5deb\u61ae\u61cb\u620a\u62c7\u64ab\u65e0\u6959\u6b66\u6bcb\u7121\u73f7\u755d\u7e46\u821e\u8302\u856a\u8aa3\u8cbf\u9727\u9d61\u58a8\u9ed8\u5011\u520e\u543b\u554f\u6587"],["daa1","\u6c76\u7d0a\u7d0b\u805e\u868a\u9580\u96ef\u52ff\u6c95\u7269\u5473\u5a9a\u5c3e\u5d4b\u5f4c\u5fae\u672a\u68b6\u6963\u6e3c\u6e44\u7709\u7c73\u7f8e\u8587\u8b0e\u8ff7\u9761\u9ef4\u5cb7\u60b6\u610d\u61ab\u654f\u65fb\u65fc\u6c11\u6cef\u739f\u73c9\u7de1\u9594\u5bc6\u871c\u8b10\u525d\u535a\u62cd\u640f\u64b2\u6734\u6a38\u6cca\u73c0\u749e\u7b94\u7c95\u7e1b\u818a\u8236\u8584\u8feb\u96f9\u99c1\u4f34\u534a\u53cd\u53db\u62cc\u642c\u6500\u6591\u69c3\u6cee\u6f58\u73ed\u7554\u7622\u76e4\u76fc\u78d0\u78fb\u792c\u7d46\u822c\u87e0\u8fd4\u9812\u98ef\u52c3\u62d4\u64a5\u6e24\u6f51"],["dba1","\u767c\u8dcb\u91b1\u9262\u9aee\u9b43\u5023\u508d\u574a\u59a8\u5c28\u5e47\u5f77\u623f\u653e\u65b9\u65c1\u6609\u678b\u699c\u6ec2\u78c5\u7d21\u80aa\u8180\u822b\u82b3\u84a1\u868c\u8a2a\u8b17\u90a6\u9632\u9f90\u500d\u4ff3\uf963\u57f9\u5f98\u62dc\u6392\u676f\u6e43\u7119\u76c3\u80cc\u80da\u88f4\u88f5\u8919\u8ce0\u8f29\u914d\u966a\u4f2f\u4f70\u5e1b\u67cf\u6822\u767d\u767e\u9b44\u5e61\u6a0a\u7169\u71d4\u756a\uf964\u7e41\u8543\u85e9\u98dc\u4f10\u7b4f\u7f70\u95a5\u51e1\u5e06\u68b5\u6c3e\u6c4e\u6cdb\u72af\u7bc4\u8303\u6cd5\u743a\u50fb\u5288\u58c1\u64d8\u6a97\u74a7\u7656"],["dca1","\u78a7\u8617\u95e2\u9739\uf965\u535e\u5f01\u8b8a\u8fa8\u8faf\u908a\u5225\u77a5\u9c49\u9f08\u4e19\u5002\u5175\u5c5b\u5e77\u661e\u663a\u67c4\u68c5\u70b3\u7501\u75c5\u79c9\u7add\u8f27\u9920\u9a08\u4fdd\u5821\u5831\u5bf6\u666e\u6b65\u6d11\u6e7a\u6f7d\u73e4\u752b\u83e9\u88dc\u8913\u8b5c\u8f14\u4f0f\u50d5\u5310\u535c\u5b93\u5fa9\u670d\u798f\u8179\u832f\u8514\u8907\u8986\u8f39\u8f3b\u99a5\u9c12\u672c\u4e76\u4ff8\u5949\u5c01\u5cef\u5cf0\u6367\u68d2\u70fd\u71a2\u742b\u7e2b\u84ec\u8702\u9022\u92d2\u9cf3\u4e0d\u4ed8\u4fef\u5085\u5256\u526f\u5426\u5490\u57e0\u592b\u5a66"],["dda1","\u5b5a\u5b75\u5bcc\u5e9c\uf966\u6276\u6577\u65a7\u6d6e\u6ea5\u7236\u7b26\u7c3f\u7f36\u8150\u8151\u819a\u8240\u8299\u83a9\u8a03\u8ca0\u8ce6\u8cfb\u8d74\u8dba\u90e8\u91dc\u961c\u9644\u99d9\u9ce7\u5317\u5206\u5429\u5674\u58b3\u5954\u596e\u5fff\u61a4\u626e\u6610\u6c7e\u711a\u76c6\u7c89\u7cde\u7d1b\u82ac\u8cc1\u96f0\uf967\u4f5b\u5f17\u5f7f\u62c2\u5d29\u670b\u68da\u787c\u7e43\u9d6c\u4e15\u5099\u5315\u532a\u5351\u5983\u5a62\u5e87\u60b2\u618a\u6249\u6279\u6590\u6787\u69a7\u6bd4\u6bd6\u6bd7\u6bd8\u6cb8\uf968\u7435\u75fa\u7812\u7891\u79d5\u79d8\u7c83\u7dcb\u7fe1\u80a5"],["dea1","\u813e\u81c2\u83f2\u871a\u88e8\u8ab9\u8b6c\u8cbb\u9119\u975e\u98db\u9f3b\u56ac\u5b2a\u5f6c\u658c\u6ab3\u6baf\u6d5c\u6ff1\u7015\u725d\u73ad\u8ca7\u8cd3\u983b\u6191\u6c37\u8058\u9a01\u4e4d\u4e8b\u4e9b\u4ed5\u4f3a\u4f3c\u4f7f\u4fdf\u50ff\u53f2\u53f8\u5506\u55e3\u56db\u58eb\u5962\u5a11\u5beb\u5bfa\u5c04\u5df3\u5e2b\u5f99\u601d\u6368\u659c\u65af\u67f6\u67fb\u68ad\u6b7b\u6c99\u6cd7\u6e23\u7009\u7345\u7802\u793e\u7940\u7960\u79c1\u7be9\u7d17\u7d72\u8086\u820d\u838e\u84d1\u86c7\u88df\u8a50\u8a5e\u8b1d\u8cdc\u8d66\u8fad\u90aa\u98fc\u99df\u9e9d\u524a\uf969\u6714\uf96a"],["dfa1","\u5098\u522a\u5c71\u6563\u6c55\u73ca\u7523\u759d\u7b97\u849c\u9178\u9730\u4e77\u6492\u6bba\u715e\u85a9\u4e09\uf96b\u6749\u68ee\u6e17\u829f\u8518\u886b\u63f7\u6f81\u9212\u98af\u4e0a\u50b7\u50cf\u511f\u5546\u55aa\u5617\u5b40\u5c19\u5ce0\u5e38\u5e8a\u5ea0\u5ec2\u60f3\u6851\u6a61\u6e58\u723d\u7240\u72c0\u76f8\u7965\u7bb1\u7fd4\u88f3\u89f4\u8a73\u8c61\u8cde\u971c\u585e\u74bd\u8cfd\u55c7\uf96c\u7a61\u7d22\u8272\u7272\u751f\u7525\uf96d\u7b19\u5885\u58fb\u5dbc\u5e8f\u5eb6\u5f90\u6055\u6292\u637f\u654d\u6691\u66d9\u66f8\u6816\u68f2\u7280\u745e\u7b6e\u7d6e\u7dd6\u7f72"],["e0a1","\u80e5\u8212\u85af\u897f\u8a93\u901d\u92e4\u9ecd\u9f20\u5915\u596d\u5e2d\u60dc\u6614\u6673\u6790\u6c50\u6dc5\u6f5f\u77f3\u78a9\u84c6\u91cb\u932b\u4ed9\u50ca\u5148\u5584\u5b0b\u5ba3\u6247\u657e\u65cb\u6e32\u717d\u7401\u7444\u7487\u74bf\u766c\u79aa\u7dda\u7e55\u7fa8\u817a\u81b3\u8239\u861a\u87ec\u8a75\u8de3\u9078\u9291\u9425\u994d\u9bae\u5368\u5c51\u6954\u6cc4\u6d29\u6e2b\u820c\u859b\u893b\u8a2d\u8aaa\u96ea\u9f67\u5261\u66b9\u6bb2\u7e96\u87fe\u8d0d\u9583\u965d\u651d\u6d89\u71ee\uf96e\u57ce\u59d3\u5bac\u6027\u60fa\u6210\u661f\u665f\u7329\u73f9\u76db\u7701\u7b6c"],["e1a1","\u8056\u8072\u8165\u8aa0\u9192\u4e16\u52e2\u6b72\u6d17\u7a05\u7b39\u7d30\uf96f\u8cb0\u53ec\u562f\u5851\u5bb5\u5c0f\u5c11\u5de2\u6240\u6383\u6414\u662d\u68b3\u6cbc\u6d88\u6eaf\u701f\u70a4\u71d2\u7526\u758f\u758e\u7619\u7b11\u7be0\u7c2b\u7d20\u7d39\u852c\u856d\u8607\u8a34\u900d\u9061\u90b5\u92b7\u97f6\u9a37\u4fd7\u5c6c\u675f\u6d91\u7c9f\u7e8c\u8b16\u8d16\u901f\u5b6b\u5dfd\u640d\u84c0\u905c\u98e1\u7387\u5b8b\u609a\u677e\u6dde\u8a1f\u8aa6\u9001\u980c\u5237\uf970\u7051\u788e\u9396\u8870\u91d7\u4fee\u53d7\u55fd\u56da\u5782\u58fd\u5ac2\u5b88\u5cab\u5cc0\u5e25\u6101"],["e2a1","\u620d\u624b\u6388\u641c\u6536\u6578\u6a39\u6b8a\u6c34\u6d19\u6f31\u71e7\u72e9\u7378\u7407\u74b2\u7626\u7761\u79c0\u7a57\u7aea\u7cb9\u7d8f\u7dac\u7e61\u7f9e\u8129\u8331\u8490\u84da\u85ea\u8896\u8ab0\u8b90\u8f38\u9042\u9083\u916c\u9296\u92b9\u968b\u96a7\u96a8\u96d6\u9700\u9808\u9996\u9ad3\u9b1a\u53d4\u587e\u5919\u5b70\u5bbf\u6dd1\u6f5a\u719f\u7421\u74b9\u8085\u83fd\u5de1\u5f87\u5faa\u6042\u65ec\u6812\u696f\u6a53\u6b89\u6d35\u6df3\u73e3\u76fe\u77ac\u7b4d\u7d14\u8123\u821c\u8340\u84f4\u8563\u8a62\u8ac4\u9187\u931e\u9806\u99b4\u620c\u8853\u8ff0\u9265\u5d07\u5d27"],["e3a1","\u5d69\u745f\u819d\u8768\u6fd5\u62fe\u7fd2\u8936\u8972\u4e1e\u4e58\u50e7\u52dd\u5347\u627f\u6607\u7e69\u8805\u965e\u4f8d\u5319\u5636\u59cb\u5aa4\u5c38\u5c4e\u5c4d\u5e02\u5f11\u6043\u65bd\u662f\u6642\u67be\u67f4\u731c\u77e2\u793a\u7fc5\u8494\u84cd\u8996\u8a66\u8a69\u8ae1\u8c55\u8c7a\u57f4\u5bd4\u5f0f\u606f\u62ed\u690d\u6b96\u6e5c\u7184\u7bd2\u8755\u8b58\u8efe\u98df\u98fe\u4f38\u4f81\u4fe1\u547b\u5a20\u5bb8\u613c\u65b0\u6668\u71fc\u7533\u795e\u7d33\u814e\u81e3\u8398\u85aa\u85ce\u8703\u8a0a\u8eab\u8f9b\uf971\u8fc5\u5931\u5ba4\u5be6\u6089\u5be9\u5c0b\u5fc3\u6c81"],["e4a1","\uf972\u6df1\u700b\u751a\u82af\u8af6\u4ec0\u5341\uf973\u96d9\u6c0f\u4e9e\u4fc4\u5152\u555e\u5a25\u5ce8\u6211\u7259\u82bd\u83aa\u86fe\u8859\u8a1d\u963f\u96c5\u9913\u9d09\u9d5d\u580a\u5cb3\u5dbd\u5e44\u60e1\u6115\u63e1\u6a02\u6e25\u9102\u9354\u984e\u9c10\u9f77\u5b89\u5cb8\u6309\u664f\u6848\u773c\u96c1\u978d\u9854\u9b9f\u65a1\u8b01\u8ecb\u95bc\u5535\u5ca9\u5dd6\u5eb5\u6697\u764c\u83f4\u95c7\u58d3\u62bc\u72ce\u9d28\u4ef0\u592e\u600f\u663b\u6b83\u79e7\u9d26\u5393\u54c0\u57c3\u5d16\u611b\u66d6\u6daf\u788d\u827e\u9698\u9744\u5384\u627c\u6396\u6db2\u7e0a\u814b\u984d"],["e5a1","\u6afb\u7f4c\u9daf\u9e1a\u4e5f\u503b\u51b6\u591c\u60f9\u63f6\u6930\u723a\u8036\uf974\u91ce\u5f31\uf975\uf976\u7d04\u82e5\u846f\u84bb\u85e5\u8e8d\uf977\u4f6f\uf978\uf979\u58e4\u5b43\u6059\u63da\u6518\u656d\u6698\uf97a\u694a\u6a23\u6d0b\u7001\u716c\u75d2\u760d\u79b3\u7a70\uf97b\u7f8a\uf97c\u8944\uf97d\u8b93\u91c0\u967d\uf97e\u990a\u5704\u5fa1\u65bc\u6f01\u7600\u79a6\u8a9e\u99ad\u9b5a\u9f6c\u5104\u61b6\u6291\u6a8d\u81c6\u5043\u5830\u5f66\u7109\u8a00\u8afa\u5b7c\u8616\u4ffa\u513c\u56b4\u5944\u63a9\u6df9\u5daa\u696d\u5186\u4e88\u4f59\uf97f\uf980\uf981\u5982\uf982"],["e6a1","\uf983\u6b5f\u6c5d\uf984\u74b5\u7916\uf985\u8207\u8245\u8339\u8f3f\u8f5d\uf986\u9918\uf987\uf988\uf989\u4ea6\uf98a\u57df\u5f79\u6613\uf98b\uf98c\u75ab\u7e79\u8b6f\uf98d\u9006\u9a5b\u56a5\u5827\u59f8\u5a1f\u5bb4\uf98e\u5ef6\uf98f\uf990\u6350\u633b\uf991\u693d\u6c87\u6cbf\u6d8e\u6d93\u6df5\u6f14\uf992\u70df\u7136\u7159\uf993\u71c3\u71d5\uf994\u784f\u786f\uf995\u7b75\u7de3\uf996\u7e2f\uf997\u884d\u8edf\uf998\uf999\uf99a\u925b\uf99b\u9cf6\uf99c\uf99d\uf99e\u6085\u6d85\uf99f\u71b1\uf9a0\uf9a1\u95b1\u53ad\uf9a2\uf9a3\uf9a4\u67d3\uf9a5\u708e\u7130\u7430\u8276\u82d2"],["e7a1","\uf9a6\u95bb\u9ae5\u9e7d\u66c4\uf9a7\u71c1\u8449\uf9a8\uf9a9\u584b\uf9aa\uf9ab\u5db8\u5f71\uf9ac\u6620\u668e\u6979\u69ae\u6c38\u6cf3\u6e36\u6f41\u6fda\u701b\u702f\u7150\u71df\u7370\uf9ad\u745b\uf9ae\u74d4\u76c8\u7a4e\u7e93\uf9af\uf9b0\u82f1\u8a60\u8fce\uf9b1\u9348\uf9b2\u9719\uf9b3\uf9b4\u4e42\u502a\uf9b5\u5208\u53e1\u66f3\u6c6d\u6fca\u730a\u777f\u7a62\u82ae\u85dd\u8602\uf9b6\u88d4\u8a63\u8b7d\u8c6b\uf9b7\u92b3\uf9b8\u9713\u9810\u4e94\u4f0d\u4fc9\u50b2\u5348\u543e\u5433\u55da\u5862\u58ba\u5967\u5a1b\u5be4\u609f\uf9b9\u61ca\u6556\u65ff\u6664\u68a7\u6c5a\u6fb3"],["e8a1","\u70cf\u71ac\u7352\u7b7d\u8708\u8aa4\u9c32\u9f07\u5c4b\u6c83\u7344\u7389\u923a\u6eab\u7465\u761f\u7a69\u7e15\u860a\u5140\u58c5\u64c1\u74ee\u7515\u7670\u7fc1\u9095\u96cd\u9954\u6e26\u74e6\u7aa9\u7aaa\u81e5\u86d9\u8778\u8a1b\u5a49\u5b8c\u5b9b\u68a1\u6900\u6d63\u73a9\u7413\u742c\u7897\u7de9\u7feb\u8118\u8155\u839e\u8c4c\u962e\u9811\u66f0\u5f80\u65fa\u6789\u6c6a\u738b\u502d\u5a03\u6b6a\u77ee\u5916\u5d6c\u5dcd\u7325\u754f\uf9ba\uf9bb\u50e5\u51f9\u582f\u592d\u5996\u59da\u5be5\uf9bc\uf9bd\u5da2\u62d7\u6416\u6493\u64fe\uf9be\u66dc\uf9bf\u6a48\uf9c0\u71ff\u7464\uf9c1"],["e9a1","\u7a88\u7aaf\u7e47\u7e5e\u8000\u8170\uf9c2\u87ef\u8981\u8b20\u9059\uf9c3\u9080\u9952\u617e\u6b32\u6d74\u7e1f\u8925\u8fb1\u4fd1\u50ad\u5197\u52c7\u57c7\u5889\u5bb9\u5eb8\u6142\u6995\u6d8c\u6e67\u6eb6\u7194\u7462\u7528\u752c\u8073\u8338\u84c9\u8e0a\u9394\u93de\uf9c4\u4e8e\u4f51\u5076\u512a\u53c8\u53cb\u53f3\u5b87\u5bd3\u5c24\u611a\u6182\u65f4\u725b\u7397\u7440\u76c2\u7950\u7991\u79b9\u7d06\u7fbd\u828b\u85d5\u865e\u8fc2\u9047\u90f5\u91ea\u9685\u96e8\u96e9\u52d6\u5f67\u65ed\u6631\u682f\u715c\u7a36\u90c1\u980a\u4e91\uf9c5\u6a52\u6b9e\u6f90\u7189\u8018\u82b8\u8553"],["eaa1","\u904b\u9695\u96f2\u97fb\u851a\u9b31\u4e90\u718a\u96c4\u5143\u539f\u54e1\u5713\u5712\u57a3\u5a9b\u5ac4\u5bc3\u6028\u613f\u63f4\u6c85\u6d39\u6e72\u6e90\u7230\u733f\u7457\u82d1\u8881\u8f45\u9060\uf9c6\u9662\u9858\u9d1b\u6708\u8d8a\u925e\u4f4d\u5049\u50de\u5371\u570d\u59d4\u5a01\u5c09\u6170\u6690\u6e2d\u7232\u744b\u7def\u80c3\u840e\u8466\u853f\u875f\u885b\u8918\u8b02\u9055\u97cb\u9b4f\u4e73\u4f91\u5112\u516a\uf9c7\u552f\u55a9\u5b7a\u5ba5\u5e7c\u5e7d\u5ebe\u60a0\u60df\u6108\u6109\u63c4\u6538\u6709\uf9c8\u67d4\u67da\uf9c9\u6961\u6962\u6cb9\u6d27\uf9ca\u6e38\uf9cb"],["eba1","\u6fe1\u7336\u7337\uf9cc\u745c\u7531\uf9cd\u7652\uf9ce\uf9cf\u7dad\u81fe\u8438\u88d5\u8a98\u8adb\u8aed\u8e30\u8e42\u904a\u903e\u907a\u9149\u91c9\u936e\uf9d0\uf9d1\u5809\uf9d2\u6bd3\u8089\u80b2\uf9d3\uf9d4\u5141\u596b\u5c39\uf9d5\uf9d6\u6f64\u73a7\u80e4\u8d07\uf9d7\u9217\u958f\uf9d8\uf9d9\uf9da\uf9db\u807f\u620e\u701c\u7d68\u878d\uf9dc\u57a0\u6069\u6147\u6bb7\u8abe\u9280\u96b1\u4e59\u541f\u6deb\u852d\u9670\u97f3\u98ee\u63d6\u6ce3\u9091\u51dd\u61c9\u81ba\u9df9\u4f9d\u501a\u5100\u5b9c\u610f\u61ff\u64ec\u6905\u6bc5\u7591\u77e3\u7fa9\u8264\u858f\u87fb\u8863\u8abc"],["eca1","\u8b70\u91ab\u4e8c\u4ee5\u4f0a\uf9dd\uf9de\u5937\u59e8\uf9df\u5df2\u5f1b\u5f5b\u6021\uf9e0\uf9e1\uf9e2\uf9e3\u723e\u73e5\uf9e4\u7570\u75cd\uf9e5\u79fb\uf9e6\u800c\u8033\u8084\u82e1\u8351\uf9e7\uf9e8\u8cbd\u8cb3\u9087\uf9e9\uf9ea\u98f4\u990c\uf9eb\uf9ec\u7037\u76ca\u7fca\u7fcc\u7ffc\u8b1a\u4eba\u4ec1\u5203\u5370\uf9ed\u54bd\u56e0\u59fb\u5bc5\u5f15\u5fcd\u6e6e\uf9ee\uf9ef\u7d6a\u8335\uf9f0\u8693\u8a8d\uf9f1\u976d\u9777\uf9f2\uf9f3\u4e00\u4f5a\u4f7e\u58f9\u65e5\u6ea2\u9038\u93b0\u99b9\u4efb\u58ec\u598a\u59d9\u6041\uf9f4\uf9f5\u7a14\uf9f6\u834f\u8cc3\u5165\u5344"],["eda1","\uf9f7\uf9f8\uf9f9\u4ecd\u5269\u5b55\u82bf\u4ed4\u523a\u54a8\u59c9\u59ff\u5b50\u5b57\u5b5c\u6063\u6148\u6ecb\u7099\u716e\u7386\u74f7\u75b5\u78c1\u7d2b\u8005\u81ea\u8328\u8517\u85c9\u8aee\u8cc7\u96cc\u4f5c\u52fa\u56bc\u65ab\u6628\u707c\u70b8\u7235\u7dbd\u828d\u914c\u96c0\u9d72\u5b71\u68e7\u6b98\u6f7a\u76de\u5c91\u66ab\u6f5b\u7bb4\u7c2a\u8836\u96dc\u4e08\u4ed7\u5320\u5834\u58bb\u58ef\u596c\u5c07\u5e33\u5e84\u5f35\u638c\u66b2\u6756\u6a1f\u6aa3\u6b0c\u6f3f\u7246\uf9fa\u7350\u748b\u7ae0\u7ca7\u8178\u81df\u81e7\u838a\u846c\u8523\u8594\u85cf\u88dd\u8d13\u91ac\u9577"],["eea1","\u969c\u518d\u54c9\u5728\u5bb0\u624d\u6750\u683d\u6893\u6e3d\u6ed3\u707d\u7e21\u88c1\u8ca1\u8f09\u9f4b\u9f4e\u722d\u7b8f\u8acd\u931a\u4f47\u4f4e\u5132\u5480\u59d0\u5e95\u62b5\u6775\u696e\u6a17\u6cae\u6e1a\u72d9\u732a\u75bd\u7bb8\u7d35\u82e7\u83f9\u8457\u85f7\u8a5b\u8caf\u8e87\u9019\u90b8\u96ce\u9f5f\u52e3\u540a\u5ae1\u5bc2\u6458\u6575\u6ef4\u72c4\uf9fb\u7684\u7a4d\u7b1b\u7c4d\u7e3e\u7fdf\u837b\u8b2b\u8cca\u8d64\u8de1\u8e5f\u8fea\u8ff9\u9069\u93d1\u4f43\u4f7a\u50b3\u5168\u5178\u524d\u526a\u5861\u587c\u5960\u5c08\u5c55\u5edb\u609b\u6230\u6813\u6bbf\u6c08\u6fb1"],["efa1","\u714e\u7420\u7530\u7538\u7551\u7672\u7b4c\u7b8b\u7bad\u7bc6\u7e8f\u8a6e\u8f3e\u8f49\u923f\u9293\u9322\u942b\u96fb\u985a\u986b\u991e\u5207\u622a\u6298\u6d59\u7664\u7aca\u7bc0\u7d76\u5360\u5cbe\u5e97\u6f38\u70b9\u7c98\u9711\u9b8e\u9ede\u63a5\u647a\u8776\u4e01\u4e95\u4ead\u505c\u5075\u5448\u59c3\u5b9a\u5e40\u5ead\u5ef7\u5f81\u60c5\u633a\u653f\u6574\u65cc\u6676\u6678\u67fe\u6968\u6a89\u6b63\u6c40\u6dc0\u6de8\u6e1f\u6e5e\u701e\u70a1\u738e\u73fd\u753a\u775b\u7887\u798e\u7a0b\u7a7d\u7cbe\u7d8e\u8247\u8a02\u8aea\u8c9e\u912d\u914a\u91d8\u9266\u92cc\u9320\u9706\u9756"],["f0a1","\u975c\u9802\u9f0e\u5236\u5291\u557c\u5824\u5e1d\u5f1f\u608c\u63d0\u68af\u6fdf\u796d\u7b2c\u81cd\u85ba\u88fd\u8af8\u8e44\u918d\u9664\u969b\u973d\u984c\u9f4a\u4fce\u5146\u51cb\u52a9\u5632\u5f14\u5f6b\u63aa\u64cd\u65e9\u6641\u66fa\u66f9\u671d\u689d\u68d7\u69fd\u6f15\u6f6e\u7167\u71e5\u722a\u74aa\u773a\u7956\u795a\u79df\u7a20\u7a95\u7c97\u7cdf\u7d44\u7e70\u8087\u85fb\u86a4\u8a54\u8abf\u8d99\u8e81\u9020\u906d\u91e3\u963b\u96d5\u9ce5\u65cf\u7c07\u8db3\u93c3\u5b58\u5c0a\u5352\u62d9\u731d\u5027\u5b97\u5f9e\u60b0\u616b\u68d5\u6dd9\u742e\u7a2e\u7d42\u7d9c\u7e31\u816b"],["f1a1","\u8e2a\u8e35\u937e\u9418\u4f50\u5750\u5de6\u5ea7\u632b\u7f6a\u4e3b\u4f4f\u4f8f\u505a\u59dd\u80c4\u546a\u5468\u55fe\u594f\u5b99\u5dde\u5eda\u665d\u6731\u67f1\u682a\u6ce8\u6d32\u6e4a\u6f8d\u70b7\u73e0\u7587\u7c4c\u7d02\u7d2c\u7da2\u821f\u86db\u8a3b\u8a85\u8d70\u8e8a\u8f33\u9031\u914e\u9152\u9444\u99d0\u7af9\u7ca5\u4fca\u5101\u51c6\u57c8\u5bef\u5cfb\u6659\u6a3d\u6d5a\u6e96\u6fec\u710c\u756f\u7ae3\u8822\u9021\u9075\u96cb\u99ff\u8301\u4e2d\u4ef2\u8846\u91cd\u537d\u6adb\u696b\u6c41\u847a\u589e\u618e\u66fe\u62ef\u70dd\u7511\u75c7\u7e52\u84b8\u8b49\u8d08\u4e4b\u53ea"],["f2a1","\u54ab\u5730\u5740\u5fd7\u6301\u6307\u646f\u652f\u65e8\u667a\u679d\u67b3\u6b62\u6c60\u6c9a\u6f2c\u77e5\u7825\u7949\u7957\u7d19\u80a2\u8102\u81f3\u829d\u82b7\u8718\u8a8c\uf9fc\u8d04\u8dbe\u9072\u76f4\u7a19\u7a37\u7e54\u8077\u5507\u55d4\u5875\u632f\u6422\u6649\u664b\u686d\u699b\u6b84\u6d25\u6eb1\u73cd\u7468\u74a1\u755b\u75b9\u76e1\u771e\u778b\u79e6\u7e09\u7e1d\u81fb\u852f\u8897\u8a3a\u8cd1\u8eeb\u8fb0\u9032\u93ad\u9663\u9673\u9707\u4f84\u53f1\u59ea\u5ac9\u5e19\u684e\u74c6\u75be\u79e9\u7a92\u81a3\u86ed\u8cea\u8dcc\u8fed\u659f\u6715\uf9fd\u57f7\u6f57\u7ddd\u8f2f"],["f3a1","\u93f6\u96c6\u5fb5\u61f2\u6f84\u4e14\u4f98\u501f\u53c9\u55df\u5d6f\u5dee\u6b21\u6b64\u78cb\u7b9a\uf9fe\u8e49\u8eca\u906e\u6349\u643e\u7740\u7a84\u932f\u947f\u9f6a\u64b0\u6faf\u71e6\u74a8\u74da\u7ac4\u7c12\u7e82\u7cb2\u7e98\u8b9a\u8d0a\u947d\u9910\u994c\u5239\u5bdf\u64e6\u672d\u7d2e\u50ed\u53c3\u5879\u6158\u6159\u61fa\u65ac\u7ad9\u8b92\u8b96\u5009\u5021\u5275\u5531\u5a3c\u5ee0\u5f70\u6134\u655e\u660c\u6636\u66a2\u69cd\u6ec4\u6f32\u7316\u7621\u7a93\u8139\u8259\u83d6\u84bc\u50b5\u57f0\u5bc0\u5be8\u5f69\u63a1\u7826\u7db5\u83dc\u8521\u91c7\u91f5\u518a\u67f5\u7b56"],["f4a1","\u8cac\u51c4\u59bb\u60bd\u8655\u501c\uf9ff\u5254\u5c3a\u617d\u621a\u62d3\u64f2\u65a5\u6ecc\u7620\u810a\u8e60\u965f\u96bb\u4edf\u5343\u5598\u5929\u5ddd\u64c5\u6cc9\u6dfa\u7394\u7a7f\u821b\u85a6\u8ce4\u8e10\u9077\u91e7\u95e1\u9621\u97c6\u51f8\u54f2\u5586\u5fb9\u64a4\u6f88\u7db4\u8f1f\u8f4d\u9435\u50c9\u5c16\u6cbe\u6dfb\u751b\u77bb\u7c3d\u7c64\u8a79\u8ac2\u581e\u59be\u5e16\u6377\u7252\u758a\u776b\u8adc\u8cbc\u8f12\u5ef3\u6674\u6df8\u807d\u83c1\u8acb\u9751\u9bd6\ufa00\u5243\u66ff\u6d95\u6eef\u7de0\u8ae6\u902e\u905e\u9ad4\u521d\u527f\u54e8\u6194\u6284\u62db\u68a2"],["f5a1","\u6912\u695a\u6a35\u7092\u7126\u785d\u7901\u790e\u79d2\u7a0d\u8096\u8278\u82d5\u8349\u8549\u8c82\u8d85\u9162\u918b\u91ae\u4fc3\u56d1\u71ed\u77d7\u8700\u89f8\u5bf8\u5fd6\u6751\u90a8\u53e2\u585a\u5bf5\u60a4\u6181\u6460\u7e3d\u8070\u8525\u9283\u64ae\u50ac\u5d14\u6700\u589c\u62bd\u63a8\u690e\u6978\u6a1e\u6e6b\u76ba\u79cb\u82bb\u8429\u8acf\u8da8\u8ffd\u9112\u914b\u919c\u9310\u9318\u939a\u96db\u9a36\u9c0d\u4e11\u755c\u795d\u7afa\u7b51\u7bc9\u7e2e\u84c4\u8e59\u8e74\u8ef8\u9010\u6625\u693f\u7443\u51fa\u672e\u9edc\u5145\u5fe0\u6c96\u87f2\u885d\u8877\u60b4\u81b5\u8403"],["f6a1","\u8d05\u53d6\u5439\u5634\u5a36\u5c31\u708a\u7fe0\u805a\u8106\u81ed\u8da3\u9189\u9a5f\u9df2\u5074\u4ec4\u53a0\u60fb\u6e2c\u5c64\u4f88\u5024\u55e4\u5cd9\u5e5f\u6065\u6894\u6cbb\u6dc4\u71be\u75d4\u75f4\u7661\u7a1a\u7a49\u7dc7\u7dfb\u7f6e\u81f4\u86a9\u8f1c\u96c9\u99b3\u9f52\u5247\u52c5\u98ed\u89aa\u4e03\u67d2\u6f06\u4fb5\u5be2\u6795\u6c88\u6d78\u741b\u7827\u91dd\u937c\u87c4\u79e4\u7a31\u5feb\u4ed6\u54a4\u553e\u58ae\u59a5\u60f0\u6253\u62d6\u6736\u6955\u8235\u9640\u99b1\u99dd\u502c\u5353\u5544\u577c\ufa01\u6258\ufa02\u64e2\u666b\u67dd\u6fc1\u6fef\u7422\u7438\u8a17"],["f7a1","\u9438\u5451\u5606\u5766\u5f48\u619a\u6b4e\u7058\u70ad\u7dbb\u8a95\u596a\u812b\u63a2\u7708\u803d\u8caa\u5854\u642d\u69bb\u5b95\u5e11\u6e6f\ufa03\u8569\u514c\u53f0\u592a\u6020\u614b\u6b86\u6c70\u6cf0\u7b1e\u80ce\u82d4\u8dc6\u90b0\u98b1\ufa04\u64c7\u6fa4\u6491\u6504\u514e\u5410\u571f\u8a0e\u615f\u6876\ufa05\u75db\u7b52\u7d71\u901a\u5806\u69cc\u817f\u892a\u9000\u9839\u5078\u5957\u59ac\u6295\u900f\u9b2a\u615d\u7279\u95d6\u5761\u5a46\u5df4\u628a\u64ad\u64fa\u6777\u6ce2\u6d3e\u722c\u7436\u7834\u7f77\u82ad\u8ddb\u9817\u5224\u5742\u677f\u7248\u74e3\u8ca9\u8fa6\u9211"],["f8a1","\u962a\u516b\u53ed\u634c\u4f69\u5504\u6096\u6557\u6c9b\u6d7f\u724c\u72fd\u7a17\u8987\u8c9d\u5f6d\u6f8e\u70f9\u81a8\u610e\u4fbf\u504f\u6241\u7247\u7bc7\u7de8\u7fe9\u904d\u97ad\u9a19\u8cb6\u576a\u5e73\u67b0\u840d\u8a55\u5420\u5b16\u5e63\u5ee2\u5f0a\u6583\u80ba\u853d\u9589\u965b\u4f48\u5305\u530d\u530f\u5486\u54fa\u5703\u5e03\u6016\u629b\u62b1\u6355\ufa06\u6ce1\u6d66\u75b1\u7832\u80de\u812f\u82de\u8461\u84b2\u888d\u8912\u900b\u92ea\u98fd\u9b91\u5e45\u66b4\u66dd\u7011\u7206\ufa07\u4ff5\u527d\u5f6a\u6153\u6753\u6a19\u6f02\u74e2\u7968\u8868\u8c79\u98c7\u98c4\u9a43"],["f9a1","\u54c1\u7a1f\u6953\u8af7\u8c4a\u98a8\u99ae\u5f7c\u62ab\u75b2\u76ae\u88ab\u907f\u9642\u5339\u5f3c\u5fc5\u6ccc\u73cc\u7562\u758b\u7b46\u82fe\u999d\u4e4f\u903c\u4e0b\u4f55\u53a6\u590f\u5ec8\u6630\u6cb3\u7455\u8377\u8766\u8cc0\u9050\u971e\u9c15\u58d1\u5b78\u8650\u8b14\u9db4\u5bd2\u6068\u608d\u65f1\u6c57\u6f22\u6fa3\u701a\u7f55\u7ff0\u9591\u9592\u9650\u97d3\u5272\u8f44\u51fd\u542b\u54b8\u5563\u558a\u6abb\u6db5\u7dd8\u8266\u929c\u9677\u9e79\u5408\u54c8\u76d2\u86e4\u95a4\u95d4\u965c\u4ea2\u4f09\u59ee\u5ae6\u5df7\u6052\u6297\u676d\u6841\u6c86\u6e2f\u7f38\u809b\u822a"],["faa1","\ufa08\ufa09\u9805\u4ea5\u5055\u54b3\u5793\u595a\u5b69\u5bb3\u61c8\u6977\u6d77\u7023\u87f9\u89e3\u8a72\u8ae7\u9082\u99ed\u9ab8\u52be\u6838\u5016\u5e78\u674f\u8347\u884c\u4eab\u5411\u56ae\u73e6\u9115\u97ff\u9909\u9957\u9999\u5653\u589f\u865b\u8a31\u61b2\u6af6\u737b\u8ed2\u6b47\u96aa\u9a57\u5955\u7200\u8d6b\u9769\u4fd4\u5cf4\u5f26\u61f8\u665b\u6ceb\u70ab\u7384\u73b9\u73fe\u7729\u774d\u7d43\u7d62\u7e23\u8237\u8852\ufa0a\u8ce2\u9249\u986f\u5b51\u7a74\u8840\u9801\u5acc\u4fe0\u5354\u593e\u5cfd\u633e\u6d79\u72f9\u8105\u8107\u83a2\u92cf\u9830\u4ea8\u5144\u5211\u578b"],["fba1","\u5f62\u6cc2\u6ece\u7005\u7050\u70af\u7192\u73e9\u7469\u834a\u87a2\u8861\u9008\u90a2\u93a3\u99a8\u516e\u5f57\u60e0\u6167\u66b3\u8559\u8e4a\u91af\u978b\u4e4e\u4e92\u547c\u58d5\u58fa\u597d\u5cb5\u5f27\u6236\u6248\u660a\u6667\u6beb\u6d69\u6dcf\u6e56\u6ef8\u6f94\u6fe0\u6fe9\u705d\u72d0\u7425\u745a\u74e0\u7693\u795c\u7cca\u7e1e\u80e1\u82a6\u846b\u84bf\u864e\u865f\u8774\u8b77\u8c6a\u93ac\u9800\u9865\u60d1\u6216\u9177\u5a5a\u660f\u6df7\u6e3e\u743f\u9b42\u5ffd\u60da\u7b0f\u54c4\u5f18\u6c5e\u6cd3\u6d2a\u70d8\u7d05\u8679\u8a0c\u9d3b\u5316\u548c\u5b05\u6a3a\u706b\u7575"],["fca1","\u798d\u79be\u82b1\u83ef\u8a71\u8b41\u8ca8\u9774\ufa0b\u64f4\u652b\u78ba\u78bb\u7a6b\u4e38\u559a\u5950\u5ba6\u5e7b\u60a3\u63db\u6b61\u6665\u6853\u6e19\u7165\u74b0\u7d08\u9084\u9a69\u9c25\u6d3b\u6ed1\u733e\u8c41\u95ca\u51f0\u5e4c\u5fa8\u604d\u60f6\u6130\u614c\u6643\u6644\u69a5\u6cc1\u6e5f\u6ec9\u6f62\u714c\u749c\u7687\u7bc1\u7c27\u8352\u8757\u9051\u968d\u9ec3\u532f\u56de\u5efb\u5f8a\u6062\u6094\u61f7\u6666\u6703\u6a9c\u6dee\u6fae\u7070\u736a\u7e6a\u81be\u8334\u86d4\u8aa8\u8cc4\u5283\u7372\u5b96\u6a6b\u9404\u54ee\u5686\u5b5d\u6548\u6585\u66c9\u689f\u6d8d\u6dc6"],["fda1","\u723b\u80b4\u9175\u9a4d\u4faf\u5019\u539a\u540e\u543c\u5589\u55c5\u5e3f\u5f8c\u673d\u7166\u73dd\u9005\u52db\u52f3\u5864\u58ce\u7104\u718f\u71fb\u85b0\u8a13\u6688\u85a8\u55a7\u6684\u714a\u8431\u5349\u5599\u6bc1\u5f59\u5fbd\u63ee\u6689\u7147\u8af1\u8f1d\u9ebe\u4f11\u643a\u70cb\u7566\u8667\u6064\u8b4e\u9df8\u5147\u51f6\u5308\u6d36\u80f8\u9ed1\u6615\u6b23\u7098\u75d5\u5403\u5c79\u7d07\u8a16\u6b20\u6b3d\u6b46\u5438\u6070\u6d3d\u7fd5\u8208\u50d6\u51de\u559c\u566b\u56cd\u59ec\u5b09\u5e0c\u6199\u6198\u6231\u665e\u66e6\u7199\u71b9\u71ba\u72a7\u79a7\u7a00\u7fb2\u8a70"]]')},function(g){g.exports=JSON.parse('[["8740","\u43f0\u4c32\u4603\u45a6\u4578\ud85c\ude67\u4d77\u45b3\ud85f\udcb1\u4ce2\ud85f\udcc5\u3b95\u4736\u4744\u4c47\u4c40\ud850\udebf\ud84d\ude17\ud85c\udf52\ud85b\ude8b\ud85c\udcd2\u4c57\ud868\udf51\u474f\u45da\u4c85\ud85f\udc6c\u4d07\u4aa4\u46a1\ud85a\udf23\u7225\ud856\ude54\ud846\ude63\ud84f\ude06\ud84f\udf61\u664d\u56fb"],["8767","\u7d95\u591d\ud862\udfb9\u3df4\u9734\ud85e\udfef\u5bdb\ud847\udd5e\u5aa4\u3625\ud867\udeb0\u5ad1\u5bb7\u5cfc\u676e\u8593\ud866\udd45\u7461\u749d\u3875\ud847\udd53\ud84d\ude9e\ud858\udc21\u3eec"],["87a1","\ud856\udcde\u3af5\u7afc\u9f97\ud850\udd61\ud862\udd0d\ud84c\uddea\ud842\ude8a\ud84c\ude5e\u430a\u8484\u9f96\u942f\u4930\u8613\u5896\u974a\u9218\u79d0\u7a32\u6660\u6a29\u889d\u744c\u7bc5\u6782\u7a2c\u524f\u9046\u34e6\u73c4\ud857\uddb9\u74c6\u9fc7\u57b3\u492f\u544c\u4131\ud84d\ude8e\u5818\u7a72\ud85e\udf65\u8b8f\u46ae\ud85b\ude88\u4181\ud857\udd99\u7bae\ud849\udcbc\u9fc8\ud849\udcc1\ud849\udcc9\ud849\udccc\u9fc9\u8504\ud84d\uddbb\u40b4\u9fca\u44e1\ud86b\uddff\u62c1\u706e\u9fcb"],["8840","\u31c0",4,"\ud840\udd0c\u31c5\ud840\udcd1\ud840\udccd\u31c6\u31c7\ud840\udccb\ud847\udfe8\u31c8\ud840\udcca\u31c9\u31ca\u31cb\u31cc\ud840\udd0e\u31cd\u31ce\u0100\xc1\u01cd\xc0\u0112\xc9\u011a\xc8\u014c\xd3\u01d1\xd2\u0fff\xca\u0304\u1ebe\u0fff\xca\u030c\u1ec0\xca\u0101\xe1\u01ce\xe0\u0251\u0113\xe9\u011b\xe8\u012b\xed\u01d0\xec\u014d\xf3\u01d2\xf2\u016b\xfa\u01d4\xf9\u01d6\u01d8\u01da"],["88a1","\u01dc\xfc\u0fff\xea\u0304\u1ebf\u0fff\xea\u030c\u1ec1\xea\u0261\u23da\u23db"],["8940","\ud868\udfa9\ud844\udd45"],["8943","\u650a"],["8946","\u4e3d\u6edd\u9d4e\u91df"],["894c","\ud85d\udf35\u6491\u4f1a\u4f28\u4fa8\u5156\u5174\u519c\u51e4\u52a1\u52a8\u533b\u534e\u53d1\u53d8\u56e2\u58f0\u5904\u5907\u5932\u5934\u5b66\u5b9e\u5b9f\u5c9a\u5e86\u603b\u6589\u67fe\u6804\u6865\u6d4e\u70bc\u7535\u7ea4\u7eac\u7eba\u7ec7\u7ecf\u7edf\u7f06\u7f37\u827a\u82cf\u836f\u89c6\u8bbe\u8be2\u8f66\u8f67\u8f6e"],["89a1","\u7411\u7cfc\u7dcd\u6946\u7ac9\u5227"],["89ab","\u918c\u78b8\u915e\u80bc"],["89b0","\u8d0b\u80f6\ud842\udde7"],["89b5","\u809f\u9ec7\u4ccd\u9dc9\u9e0c\u4c3e\ud867\uddf6\ud85c\udc0e\u9e0a\ud868\udd33\u35c1"],["89c1","\u6e9a\u823e\u7519"],["89c5","\u4911\u9a6c\u9a8f\u9f99\u7987\ud861\udc6c\ud847\uddca\ud841\uddd0\ud84a\udee6\u4e24\u4e81\u4e80\u4e87\u4ebf\u4eeb\u4f37\u344c\u4fbd\u3e48\u5003\u5088\u347d\u3493\u34a5\u5186\u5905\u51db\u51fc\u5205\u4e89\u5279\u5290\u5327\u35c7\u53a9\u3551\u53b0\u3553\u53c2\u5423\u356d\u3572\u3681\u5493\u54a3\u54b4\u54b9\u54d0\u54ef\u5518\u5523\u5528\u3598\u553f\u35a5\u35bf\u55d7\u35c5"],["8a40","\ud85f\udd84\u5525"],["8a43","\ud843\udc42\ud843\udd15\ud854\udd2b\u5590\ud84b\udcc6\u39ec\ud840\udf41\u8e46\ud853\uddb8\ud865\udce5\u4053\ud860\udcbe\u777a\ud84b\udc38\u3a34\u47d5\ud860\udd5d\ud85a\uddf2\ud853\uddea\u64dd\ud843\udd7c\ud843\udfb4\ud843\udcd5\ud844\udcf4\u648d\u8e7e\ud843\ude96\ud843\udc0b\ud843\udf64\ud84b\udca9\ud860\ude56\ud851\udcd3"],["8a64","\ud843\udd46\ud866\ude4d\ud860\udce9\u47f4\ud853\udea7\ud84b\udcc2\u9ab2\u3a67\ud865\uddf4\u3fed\u3506\ud854\udec7\ud865\udfd4\ud85e\udcc8\ud84b\udd44\u9d6e\u9815"],["8a76","\u43d9\ud858\udca5\u64b4\u54e3\ud84b\udd4c\ud84a\udfca\ud844\udc77\u39fb\ud844\udc6f"],["8aa1","\ud859\udeda\ud859\udf16\ud85e\udda0\u64ea\ud854\udc52\ud843\udc43\u8e68\ud848\udda1\ud862\udf4c\ud841\udf31"],["8aac","\u480b\ud840\udda9\u3ffa\u5873\ud84b\udd8d"],["8ab2","\ud851\uddc8\ud841\udcfc\ud858\udc97\ud843\udf4c\ud843\udd96\u5579\u40bb\u43ba"],["8abb","\u4ab4\ud84a\ude66\ud844\udc9d\u81aa\u98f5\ud843\udd9c\u6379\u39fe\ud849\udf75\u8dc0\u56a1\u647c\u3e43"],["8ac9","\ud869\ude01\ud843\ude09\ud84a\udecf\ud84b\udcc9"],["8ace","\ud844\udcc8\ud84e\uddc2\u3992\u3a06\ud860\ude9b\u3578\ud857\ude49\ud848\udcc7\u5652\ud843\udf31\ud84b\udcb2\ud865\udf20\u34bc\u6c3d\ud853\ude3b"],["8adf","\ud85d\udd74\ud84b\ude8b\ud848\ude08\ud869\ude5b\ud863\udccd\ud843\ude7a\ud843\udc34\ud85a\udc1c\u7f93\ud844\udccf\ud84a\udc03\ud84a\udd39\u35fb\ud854\udde3\ud843\ude8c\ud843\udf8d\ud843\udeaa\u3f93\ud843\udf30\ud843\udd47\ud844\udd4f\ud843\ude4c"],["8af6","\ud843\udeab\ud842\udfa9\ud843\udd48\ud844\udcc0\ud844\udd3d\u3ff9\ud849\ude96\u6432\ud843\udfad"],["8b40","\ud84c\udff4\ud85d\ude39\ud84a\udfce\ud843\udd7e\ud843\udd7f\ud84b\udc51\ud84b\udc55\u3a18\ud843\ude98\ud844\udcc7\ud843\udf2e\ud869\ude32\ud85a\udf50\ud863\udcd2\ud863\udd99\ud863\udcca\u95aa\u54cc\u82c4\u55b9"],["8b55","\ud867\udec3\u9c26\u9ab6\ud85d\udf5e\ud84b\uddee\u7140\u816d\u80ec\u5c1c\ud859\udd72\u8134\u3797\u535f\ud860\udcbd\u91b6\ud843\udefa\ud843\ude0f\ud843\ude77\ud843\udefb\u35dd\ud853\uddeb\u3609\ud843\udcd6\u56af\ud849\udfb5\ud844\udcc9\ud843\ude10\ud843\ude78\ud844\udc78\ud844\udd48\ud860\ude07\ud845\udc55\ud843\ude79\ud853\ude50\ud84b\udda4\u5a54\ud844\udc1d\ud844\udc1e\ud844\udcf5\ud844\udcf6\u579c\ud843\ude11"],["8ba1","\ud85d\ude94\ud860\udecd\ud843\udfb5\ud843\ude7b\ud854\udd7e\u3703\ud843\udfb6\ud844\udd80\ud854\uded8\ud868\udebd\ud852\uddda\ud846\udc3a\ud850\udd77\ud860\ude7c\u5899\u5268\u361a\ud855\udf3d\u7bb2\u5b68\u4800\u4b2c\u9f27\u49e7\u9c1f\u9b8d\ud856\udf74\ud84c\udd3d\u55fb\u35f2\u5689\u4e28\u5902\ud846\udfc1\ud87e\udc78\u9751\ud840\udc86\u4e5b\u4ebb\u353e\u5c23\u5f51\u5fc4\u38fa\u624c\u6535\u6b7a\u6c35\u6c3a\u706c\u722b\u4e2c\u72ad\ud852\udce9\u7f52\u793b\u7cf9\u7f53\ud858\ude6a\u34c1"],["8bde","\ud858\udf4b\u8002\u8080\ud859\ude12\ud85a\udd51\u535d\u8864\u89c1\ud85e\udcb2\u8ba0\u8d1d\u9485\u9578\u957f\u95e8\ud863\ude0f\u97e6\u9875\u98ce\u98de\u9963\ud866\udc10\u9c7c\u9e1f\u9ec4\u6b6f\uf907\u4e37\ud840\udc87\u961d\u6237\u94a2"],["8c40","\u503b\u6dfe\ud867\udc73\u9fa6\u3dc9\u888f\ud850\udd4e\u7077\u5cf5\u4b20\ud854\uddcd\u3559\ud857\udd30\u6122\ud862\ude32\u8fa7\u91f6\u7191\u6719\u73ba\ud84c\ude81\ud868\udd07\u3c8b\ud846\udd80\u4b10\u78e4\u7402\u51ae\ud861\udf0f\u4009\u6a63\ud868\udeba\u4223\u860f\ud842\ude6f\u7a2a\ud866\udd47\ud862\udeea\u9755\u704d\u5324\ud848\udc7e\u93f4\u76d9\ud862\udde3\u9fa7\u77dd\u4ea3\u4ff0\u50bc\u4e2f\u4f17\u9fa8\u5434\u7d8b\u5892\u58d0\ud847\uddb6\u5e92\u5e99\u5fc2\ud849\udf12\u658b"],["8ca1","\ud84c\udff9\u6919\u6a43\ud84f\udc63\u6cff"],["8ca7","\u7200\ud851\udd05\u738c\u3edb\ud852\ude13\u5b15\u74b9\u8b83\ud857\udca4\ud855\ude95\u7a93\u7bec\u7cc3\u7e6c\u82f8\u8597\u9fa9\u8890\u9faa\u8eb9\u9fab\u8fcf\u855f\u99e0\u9221\u9fac\ud863\uddb9\ud845\udc3f\u4071\u42a2\u5a1a"],["8cc9","\u9868\u676b\u4276\u573d"],["8cce","\u85d6\ud852\udd7b\u82bf\ud85c\udd0d\u4c81\ud85b\udd74\u5d7b\ud85a\udf15\ud85b\udfbe\u9fad\u9fae\u5b96\u9faf\u66e7\u7e5b\u6e57\u79ca\u3d88\u44c3\ud84c\ude56\ud849\udf96\u439a\u4536"],["8ce6","\u5cd5\ud84e\udf1a\u8af9\u5c78\u3d12\ud84d\udd51\u5d78\u9fb2\u7157\u4558\ud850\udcec\ud847\ude23\u4c77\u3978\u344a\ud840\udda4\ud85b\udc41\u8acc\u4fb4\ud840\ude39\u59bf\u816c\u9856\ud866\udcfa\u5f3b"],["8d40","\ud842\udf9f"],["8d42","\ud848\uddc1\ud862\udd6d\u4102\u46bb\ud864\udc79\u3f07\u9fb3\ud868\uddb5\u40f8\u37d6\u46f7\ud85b\udc46\u417c\ud861\udeb2\ud85c\udfff\u456d\u38d4\ud855\udc9a\u4561\u451b\u4d89\u4c7b\u4d76\u45ea\u3fc8\ud852\udf0f\u3661\u44de\u44bd\u41ed\u5d3e\u5d48\u5d56\u3dfc\u380f\u5da4\u5db9\u3820\u3838\u5e42\u5ebd\u5f25\u5f83\u3908\u3914\u393f\u394d\u60d7\u613d\u5ce5\u3989\u61b7\u61b9\u61cf\u39b8\u622c\u6290\u62e5\u6318\u39f8\u56b1"],["8da1","\u3a03\u63e2\u63fb\u6407\u645a\u3a4b\u64c0\u5d15\u5621\u9f9f\u3a97\u6586\u3abd\u65ff\u6653\u3af2\u6692\u3b22\u6716\u3b42\u67a4\u6800\u3b58\u684a\u6884\u3b72\u3b71\u3b7b\u6909\u6943\u725c\u6964\u699f\u6985\u3bbc\u69d6\u3bdd\u6a65\u6a74\u6a71\u6a82\u3bec\u6a99\u3bf2\u6aab\u6ab5\u6ad4\u6af6\u6b81\u6bc1\u6bea\u6c75\u6caa\u3ccb\u6d02\u6d06\u6d26\u6d81\u3cef\u6da4\u6db1\u6e15\u6e18\u6e29\u6e86\ud862\uddc0\u6ebb\u6ee2\u6eda\u9f7f\u6ee8\u6ee9\u6f24\u6f34\u3d46\ud84f\udf41\u6f81\u6fbe\u3d6a\u3d75\u71b7\u5c99\u3d8a\u702c\u3d91\u7050\u7054\u706f\u707f\u7089\ud840\udf25\u43c1\u35f1\ud843\uded8"],["8e40","\ud84f\uded7\u57be\ud85b\uded3\u713e\ud855\udfe0\u364e\u69a2\ud862\udfe9\u5b74\u7a49\ud856\udce1\ud865\udcd9\u7a65\u7a7d\ud856\uddac\u7abb\u7ab0\u7ac2\u7ac3\u71d1\ud859\udc8d\u41ca\u7ada\u7add\u7aea\u41ef\u54b2\ud857\udc01\u7b0b\u7b55\u7b29\ud854\udf0e\ud857\udcfe\u7ba2\u7b6f\u839c\ud856\udfb4\ud85b\udc7f\u7bd0\u8421\u7b92\u7bb8\ud857\udd20\u3dad\ud857\udc65\u8492\u7bfa\u7c06\u7c35\ud857\udcc1\u7c44\u7c83\ud852\udc82\u7ca6\u667d\ud851\udd78\u7cc9\u7cc7\u7ce6\u7c74\u7cf3\u7cf5\u7cce"],["8ea1","\u7e67\u451d\ud85b\ude44\u7d5d\ud85b\uded6\u748d\u7d89\u7dab\u7135\u7db3\u7dd2\ud850\udc57\ud858\udc29\u7de4\u3d13\u7df5\ud845\udff9\u7de5\ud860\udf6d\u7e1d\ud858\udd21\ud858\udd5a\u7e6e\u7e92\u432b\u946c\u7e27\u7f40\u7f41\u7f47\u7936\ud858\uded0\u99e1\u7f97\ud858\udf51\u7fa3\ud845\ude61\ud840\udc68\u455c\ud84d\udf66\u4503\ud860\udf3a\u7ffa\ud859\udc89\u8005\u8008\u801d\u8028\u802f\ud868\udc87\ud85b\udcc3\u803b\u803c\u8061\ud849\udf14\u4989\ud859\ude26\ud84f\udde3\ud859\udee8\u6725\u80a7\ud862\ude48\u8107\u811a\u58b0\ud849\udef6\u6c7f\ud859\udc98\ud853\udfb8\u64e7\ud845\udc8a\u8218\ud846\udc5e\u6a53\ud852\ude65\ud852\ude95\u447a\u8229\ud842\udf0d\ud85a\ude52\ud84f\udd7e\u4ff9\ud845\udcfd\u84e2\u8362\ud85a\udf0a\ud852\udda7\ud84d\udd30\ud845\udf73\ud84f\uddf8\u82aa\u691b\ud87e\udd94\u41db"],["8f40","\u854b\u82d0\u831a\ud843\ude16\ud845\udfb4\u36c1\ud84c\udd7d\ud84d\udd5a\u827b\u82e2\u8318\ud84f\ude8b\ud85b\udda3\ud85a\udf05\ud85a\udf97\ud84d\uddce\u3dbf\u831d\u55ec\u8385\u450b\ud85b\udda5\u83ac\u83c1\u83d3\u347e\ud85b\uded4\u6a57\u855a\u3496\ud85b\ude42\ud84b\udeef\u8458\ud856\udfe4\u8471\u3dd3\u44e4\u6aa7\u844a\ud84f\udcb5\u7958\u84a8\ud85a\udf96\ud85b\ude77\ud85b\ude43\u84de\u840f\u8391\u44a0\u8493\u84e4\ud857\udc91\u4240\ud857\udcc0\u4543\u8534\u5af2\ud85b\ude99\u4527\u8573\u4516\u67bf\u8616"],["8fa1","\ud861\ude25\ud861\ude3b\u85c1\ud85c\udc88\u8602\ud845\udd82\ud85c\udccd\ud87e\uddb2\u456a\u8628\u3648\ud846\udca2\u53f7\ud85c\udf9a\u867e\u8771\ud868\udcf8\u87ee\ud84b\udc27\u87b1\u87da\u880f\u5661\u866c\u6856\u460f\u8845\u8846\ud85d\udde0\ud84f\uddb9\ud85d\udde4\u885e\u889c\u465b\u88b4\u88b5\u63c1\u88c5\u7777\ud85d\udf0f\u8987\u898a\u89a6\u89a9\u89a7\u89bc\ud862\ude25\u89e7\ud85e\udd24\ud85e\udebd\u8a9c\u7793\u91fe\u8a90\ud85e\ude59\u7ae9\ud85e\udf3a\ud84f\udf8f\u4713\ud85e\udf38\u717c\u8b0c\u8b1f\ud855\udc30\ud855\udd65\u8b3f\u8b4c\u8b4d\u8aa9\ud852\ude7a\u8b90\u8b9b\u8aaf\ud845\udedf\u4615\u884f\u8c9b\ud85f\udd54\ud85f\udd8f\ud87e\uddd4\u3725\ud85f\udd53\u8cd6\ud85f\udd98\ud85f\uddbd\u8d12\u8d03\ud846\udd10\u8cdb\u705c\u8d11\ud853\udcc9\u3ed0\u8d77"],["9040","\u8da9\ud860\udc02\ud844\udc14\ud852\udd8a\u3b7c\ud860\uddbc\ud85c\udd0c\u7ae7\u8ead\u8eb6\u8ec3\u92d4\u8f19\u8f2d\ud860\udf65\ud861\udc12\u8fa5\u9303\ud868\ude9f\ud842\ude50\u8fb3\u492a\ud862\uddde\ud861\udd3d\ud84f\uddbb\u5ef8\ud84c\ude62\u8ff9\ud868\udc14\ud861\udebc\ud861\udd01\ud848\udf25\u3980\ud85b\uded7\u9037\ud861\udd3c\ud85e\udebe\u9061\ud861\udd6c\ud861\ude0b\u90a8\ud861\udf13\u90c4\ud861\udee6\u90ae\u90fd\u9167\u3af0\u91a9\u91c4\u7cac\ud862\udd33\ud847\ude89\u920e\u6c9f\u9241\u9262\ud855\uddb9\u92b9\ud862\udec6\ud84f\udc9b\ud862\udf0c\ud855\udddb"],["90a1","\ud843\udd31\u932c\u936b\ud862\udee1\ud862\udfeb\u708f\u5ac3\ud862\udee2\ud862\udee5\u4965\u9244\ud862\udfec\ud863\udc39\ud862\udfff\u9373\u945b\u8ebc\u9585\u95a6\u9426\u95a0\u6ff6\u42b9\ud849\ude7a\ud861\uded8\ud844\ude7c\ud84f\ude2e\u49df\u6c1c\u967b\u9696\u416c\u96a3\ud85b\uded5\u61da\u96b6\u78f5\ud862\udee0\u96bd\u53cc\u49a1\ud85b\udcb8\ud840\ude74\ud859\udc10\ud864\udcaf\ud864\udce5\ud852\uded1\ud846\udd15\ud84c\udf0a\u9731\u8642\u9736\u4a0f\u453d\u4585\ud852\udee9\u7075\u5b41\u971b\u975c\ud864\uddd5\u9757\u5b4a\ud864\uddeb\u975f\u9425\u50d0\ud84c\udcb7\ud84c\udcbc\u9789\u979f\u97b1\u97be\u97c0\u97d2\u97e0\ud855\udc6c\u97ee\u741c\ud865\udc33\u97ff\u97f5\ud865\udc1d\ud85e\udd7a\u4ad1\u9834\u9833\u984b\u9866\u3b0e\ud85c\udd75\u3d51\ud841\ude30\ud850\udd5c"],["9140","\ud855\udf06\u98ca\u98b7\u98c8\u98c7\u4aff\ud85b\udd27\ud845\uded3\u55b0\u98e1\u98e6\u98ec\u9378\u9939\ud852\ude29\u4b72\ud866\udc57\ud866\udd05\u99f5\u9a0c\u9a3b\u9a10\u9a58\ud855\udf25\u36c4\ud864\udcb1\ud866\udfd5\u9ae0\u9ae2\ud866\udf05\u9af4\u4c0e\u9b14\u9b2d\ud861\ude00\u5034\u9b34\ud85a\udda8\u38c3\ud84c\udc7d\u9b50\u9b40\ud867\udd3e\u5a45\ud846\udc63\u9b8e\ud850\ude4b\u9c02\u9bff\u9c0c\ud867\ude68\u9dd4\ud867\udfb7\ud868\udd92\ud868\uddab\ud868\udce1\ud868\udd23\ud868\udddf\u9d7e\u9d83\ud868\udd34\u9e0e\u6888"],["91a1","\u9dc4\ud848\udd5b\ud868\udd93\ud868\ude20\ud846\udd3b\ud868\ude33\u9d39\ud868\udcb9\ud868\udeb4\u9e90\u9e95\u9e9e\u9ea2\u4d34\u9eaa\u9eaf\ud850\udf64\u9ec1\u3b60\u39e5\u3d1d\u4f32\u37be\ud863\udc2b\u9f02\u9f08\u4b96\u9424\ud85b\udda2\u9f17\u9f16\u9f39\u569f\u568a\u9f45\u99b8\ud864\udc8b\u97f2\u847f\u9f62\u9f69\u7adc\u9f8e\u7216\u4bbe\ud852\udd75\ud852\uddbb\u7177\ud852\uddf8\ud850\udf48\ud852\ude51\u739e\ud862\udfda\ud846\udcfa\u799f\ud862\udd7e\ud863\ude36\u9369\u93f3\ud862\ude44\u92ec\u9381\u93cb\ud862\udd6c\ud851\udcb9\u7217\u3eeb\u7772\u7a43\u70d0\ud851\udc73\ud850\udff8\u717e\ud845\udfef\u70a3\ud846\udcbe\ud84d\udd99\u3ec7\ud846\udc85\ud855\udc2f\ud845\udff8\u3722\ud845\udefb\ud846\udc39\u36e1\ud845\udf74\ud846\udcd1\ud857\udf4b\u3723\ud845\udec0\u575b\ud852\ude25\ud844\udffe\ud844\udea8"],["9240","\ud844\udfc6\ud845\udcb6\u8503\ud84d\udea6\u8503\u8455\ud852\udd94\ud85c\udd65\ud84f\ude31\ud855\udd5c\ud84f\udefb\ud85c\udc52\u44f4\ud84d\udeee\ud866\udd9d\ud85b\udf26\u67f9\u3733\u3c15\u3de7\u586c\ud846\udd22\u6810\u4057\ud84d\udf3f\ud850\udce1\ud850\udc8b\ud850\udd0f\ud85b\udc21\u54cb\u569e\ud859\udeb1\u5692\ud843\udfdf\ud842\udfa8\ud843\ude0d\u93c6\ud862\udf13\u939c\u4ef8\u512b\u3819\ud851\udc36\u4ebc\ud841\udc65\ud840\udf7f\u4f4b\u4f8a\ud855\ude51\u5a68\ud840\uddab\ud840\udfcb\u3999\ud840\udf0a\ud841\udc14\u3435\u4f29\ud840\udec0\ud863\udeb3\ud840\ude75\u8ada\ud840\ude0c\u4e98"],["92a1","\u50cd\u510d\u4fa2\u4f03\ud852\ude0e\ud84f\ude8a\u4f42\u502e\u506c\u5081\u4fcc\u4fe5\u5058\u50fc\u5159\u515b\u515d\u515e\u6e76\ud84d\udd95\ud84f\ude39\ud84f\udebf\u6d72\ud846\udc84\ud84f\ude89\u51a8\u51c3\ud841\udde0\u44dd\ud841\udca3\ud841\udc92\ud841\udc91\u8d7a\ud862\ude9c\ud841\udf0e\u5259\u52a4\ud842\udc73\u52e1\u936e\u467a\u718c\ud850\udf8c\ud843\udc20\ud852\uddac\ud844\udce4\u69d1\ud843\ude1d\u7479\u3ede\u7499\u7414\u7456\u7398\u4b8e\ud852\udebc\ud850\udc8d\u53d0\u3584\u720f\ud850\udcc9\u55b4\ud840\udf45\u54cd\ud842\udfc6\u571d\u925d\u96f4\u9366\u57dd\u578d\u577f\u363e\u58cb\u5a99\ud862\ude46\ud845\udefa\ud845\udf6f\ud845\udf10\u5a2c\u59b8\u928f\u5a7e\u5acf\u5a12\ud856\udd46\ud846\uddf3\ud846\udc61\ud850\ude95\u36f5\u6d05\u7443\u5a21\ud857\ude83"],["9340","\u5a81\ud862\udfd7\ud841\udc13\u93e0\u748c\ud844\udf03\u7105\u4972\u9408\ud862\uddfb\u93bd\u37a0\u5c1e\u5c9e\u5e5e\u5e48\ud846\udd96\ud846\udd7c\ud84e\udeee\u5ecd\u5b4f\ud846\udd03\ud846\udd04\u3701\ud846\udca0\u36dd\ud845\udefe\u36d3\u812a\ud862\ude47\ud847\uddba\ud84d\udc72\ud862\udda8\u5f0c\u5f0e\ud846\udd27\ud845\udfab\u5a6b\ud845\udf3b\u5b44\u8614\ud85d\uddfd\u8860\u607e\ud84a\udc60\ud849\ude2b\u5fdb\u3eb8\ud849\uddaf\ud849\uddbe\ud864\udc88\ud85b\udf73\u61c0\ud840\udc3e\ud840\udc46\ud849\ude1b\u6199\u6198\u6075\ud84b\udc9b\ud84b\udd07\ud851\uded4\ud864\udd4d"],["93a1","\u6471\ud851\ude65\ud84a\udf6a\u3a29\ud84a\udf22\ud84d\udc50\ud866\udcea\ud84b\ude78\u6337\ud869\udc5b\u64b6\u6331\u63d1\ud852\udde3\ud84b\udd67\u62a4\ud84b\udca1\u643b\u656b\u6972\u3bf4\ud84c\udc8e\ud84c\udead\ud852\udd89\ud84c\udeab\u550d\ud84c\udee0\ud846\udcd9\ud865\udc3f\u66ce\ud84c\ude89\ud84c\uddb3\u3ae0\u4190\ud855\udd84\ud862\udf22\ud855\udd8f\ud845\udefc\ud855\udd5b\ud855\udc25\u78ee\ud84c\udd03\ud846\udc2a\ud84c\ude34\u3464\ud84c\ude0f\ud84c\udd82\ud850\udec9\u668e\ud85b\udd24\u666b\u4b93\u6630\ud85e\udc70\ud847\uddeb\u6663\ud84c\uded2\ud84c\udee1\u661e\ud856\udc72\u38d1\ud84e\udc3a\ud84d\udfbc\u3b99\ud84d\udfa2\ud84c\udffe\u74d0\u3b96\u678f\ud851\ude2a\u68b6\u681e\u3bc4\u6abe\u3863\ud84d\udfd5\ud851\udc87\u6a33\u6a52\u6ac9\u6b05\ud846\udd12\u6511\u6898\u6a4c\u3bd7\u6a7a\u6b57\ud84f\udfc0\ud84f\udc9a\u93a0\u92f2\ud862\udfea\ud862\udecb"],["9440","\u9289\ud860\udc1e\ud862\udddc\u9467\u6da5\u6f0b\ud852\uddec\u6d67\ud84f\udf7f\u3d8f\u6e04\ud850\udc3c\u5a3d\u6e0a\u5847\u6d24\u7842\u713b\ud850\udf1a\ud850\ude76\u70f1\u7250\u7287\u7294\ud851\udf8f\ud851\udf25\u5179\ud852\udea4\ud841\uddeb\u747a\ud84f\udef8\ud84d\ude5f\ud852\ude4a\ud852\udd17\ud857\udfe1\u3f06\u3eb1\ud852\udedf\ud863\udc23\ud84f\udf35\u60a7\u3ef3\u74cc\u743c\u9387\u7437\u449f\ud85b\uddea\u4551\u7583\u3f63\ud853\udcd9\ud853\udd06\u3f58\u7555\u7673\ud869\uddc6\u3b19\u7468\ud862\udecc\ud852\uddab\ud852\udd8e\u3afb"],["94a1","\u3dcd\ud852\ude4e\u3eff\ud852\uddc5\ud852\udcf3\u91fa\u5732\u9342\ud862\udee3\ud846\udc64\u50df\ud854\ude21\ud854\udde7\u7778\ud84c\ude32\u770e\u770f\u777b\ud851\ude97\ud84d\udf81\u3a5e\ud852\udcf0\u7438\u749b\u3ebf\ud852\udeba\ud852\udec7\u40c8\ud852\ude96\ud858\uddae\u9307\ud855\udd81\u781e\u788d\u7888\u78d2\u73d0\u7959\ud85d\udf41\ud855\udee3\u410e\u799b\u8496\u79a5\u6a2d\ud84f\udefa\u7a3a\u79f4\u416e\ud845\udee6\u4132\u9235\u79f1\ud843\udd4c\ud852\udd8c\ud840\ude99\ud84f\uddba\ud845\udf6e\u3597\u556b\u3570\u36aa\ud840\uddd4\ud843\udc0d\u7ae2\u5a59\ud849\udef5\ud856\udeaf\ud856\ude9c\u5a0d\ud840\ude5b\u78f0\u5a2a\ud856\udfc6\u7afe\u41f9\u7c5d\u7c6d\u4211\ud856\udfb3\ud857\udebc\ud857\udea6\u7ccd\ud852\uddf9\ud845\udfb0\u7c8e\u7c7c\u7cae\u6ab2\u7ddc\u7e07\u7dd3\u7f4e\ud858\ude61"],["9540","\ud858\udd5c\ud85e\udf48\u7d97\ud857\ude82\u426a\ud85a\udf75\ud842\udd16\u67d6\ud840\udc4e\ud84d\uddcf\u57c4\ud859\udc12\ud858\udff8\ud852\udd62\u7fdd\u7b27\ud842\udc2c\ud856\udee9\ud857\udd43\u7b0c\ud857\ude0e\u99e6\u8645\u9a63\u6a1c\ud84d\udc3f\u39e2\ud852\uddf7\ud859\uddad\u9a1f\ud859\udda0\u8480\ud85c\udd27\ud85b\udcd1\u44ea\u8137\u4402\u80c6\u8109\u8142\ud859\udfb4\u98c3\ud85a\ude42\u8262\u8265\ud85a\ude51\u8453\ud85b\udda7\u8610\ud85c\ude1b\u5a86\u417f\ud846\udc40\u5b2b\ud846\udca1\u5ae4\ud846\udcd8\u86a0\ud87e\uddbc\ud84f\udd8f\u882d\ud85d\udc22\u5a02"],["95a1","\u886e\u4f45\u8887\u88bf\u88e6\u8965\u894d\ud855\ude83\u8954\ud85d\udf85\ud85d\udf84\ud862\udff5\ud862\udfd9\ud862\udf9c\ud862\uddf9\u3ead\u84a3\u46f5\u46cf\u37f2\u8a3d\u8a1c\ud865\udc48\u5f4d\u922b\ud850\ude84\u65d4\u7129\u70c4\ud846\udc45\u9d6d\u8c9f\u8ce9\ud85f\udddc\u599a\u77c3\u59f0\u436e\u36d4\u8e2a\u8ea7\ud853\udc09\u8f30\u8f4a\u42f4\u6c58\u6fbb\ud848\udf21\u489b\u6f79\u6e8b\ud845\udfda\u9be9\u36b5\ud852\udd2f\u90bb\u9097\u5571\u4906\u91bb\u9404\ud862\ude4b\u4062\ud862\udefc\u9427\ud863\udc1d\ud863\udc3b\u84e5\u8a2b\u9599\u95a7\u9597\u9596\ud863\udd34\u7445\u3ec2\ud852\udcff\ud852\ude42\ud850\udfea\u3ee7\ud84c\ude25\u968f\ud863\udee7\ud863\ude66\ud863\ude65\u3ecc\ud852\udded\ud852\ude78\ud84f\udfee\u7412\u746b\u3efc\u9741\ud864\udcb0"],["9640","\u6847\u4a1d\ud864\udc93\ud855\udfdf\u975d\u9368\ud862\udd89\ud863\udc26\ud862\udf2f\ud858\udfbe\u92ba\u5b11\u8b69\u493c\u73f9\ud850\ude1b\u979b\u9771\u9938\ud843\udf26\u5dc1\ud862\udfc5\ud852\udeb2\u981f\ud865\udcda\u92f6\ud865\uddd7\u91e5\u44c0\ud862\udf50\ud852\ude67\ud862\udf64\u98dc\ud862\ude45\u3f00\u922a\u4925\u8414\u993b\u994d\ud85e\udf06\u3dfd\u999b\u4b6f\u99aa\u9a5c\ud862\udf65\ud856\udcc8\u6a8f\u9a21\u5afe\u9a2f\ud866\udcf1\u4b90\ud866\udd48\u99bc\u4bbd\u4b97\u937d\u5872\ud844\udf02\u5822\ud852\uddb8"],["96a1","\ud845\udce8\u7844\ud849\udf1f\ud84f\uddb8\u68c5\u3d7d\u9458\u3927\u6150\ud849\udf81\ud84a\udd6b\u6107\u9c4f\u9c53\u9c7b\u9c35\u9c10\u9b7f\u9bcf\ud867\ude2d\u9b9f\ud868\uddf5\ud868\udcfe\u9d21\u4cae\ud850\udd04\u9e18\u4cb0\u9d0c\ud868\uddb4\ud868\udced\ud868\udcf3\ud866\udd2f\u9da5\u84bd\ud85b\ude12\ud85b\udfdf\ud85a\udf82\u85fc\u4533\ud85b\udda4\ud85b\ude84\ud85b\uddf0\u8420\u85ee\ud85b\ude00\ud84d\udfd7\ud858\udc64\u79e2\ud84d\udd9c\ud84d\ude40\u492d\ud852\uddde\u3d62\u93db\u92be\u9348\ud840\udebf\u78b9\u9277\u944d\u4fe4\u3440\u9064\ud855\udd5d\u783d\u7854\u78b6\u784b\ud845\udf57\ud84c\uddc9\ud852\udd41\u369a\u4f72\u6fda\u6fd9\u701e\u701e\u5414\ud850\uddb5\u57bb\u58f3\u578a\u9d16\u57d7\u7134\u34af\ud850\uddac\u71eb\ud85b\udc40\ud853\udf97\u5b28\ud845\udfb5\ud862\ude49"],["9740","\u610c\u5ace\u5a0b\u42bc\ud851\udc88\u372c\u4b7b\ud862\uddfc\u93bb\u93b8\ud846\udcd6\ud843\udf1d\u8472\ud85b\udcc0\ud845\udc13\ud850\udefa\ud84b\udc26\ud850\udfc1\u5994\ud84f\uddb7\ud859\udf41\u7da8\ud858\udd5b\ud858\udca4\ud852\uddb9\ud852\udd8b\ud862\uddfa\u92e5\u73e2\u3ee9\u74b4\ud862\udf63\ud846\udc9f\u3ee1\ud852\udeb3\u6ad8\u73f3\u73fb\u3ed6\ud852\ude3e\ud852\ude94\ud845\udfd9\ud852\ude66\ud840\udfa7\ud845\udc24\ud852\udde5\u7448\ud852\udd16\u70a5\ud852\udd76\u9284\u73e6\u935f\ud841\udcfe\u9331\ud862\udece\ud862\ude16\u9386\ud862\udfe7\ud855\uddd5\u4935\ud862\ude82\u716b"],["97a1","\ud852\udd43\ud843\udcff\u56a4\ud841\ude1a\ud842\udfeb\ud843\udcb8\u5502\u79c4\ud845\udffa\u7dfe\ud845\udec2\ud852\ude50\ud846\udc52\u452e\u9401\u370a\ud862\udec0\ud852\uddad\u59b0\ud846\udcbf\ud846\udc83\ud85d\udc84\u5aa1\u36e2\ud84f\udd5b\u36b0\u925f\u5a79\ud862\ude81\ud846\udc62\u9374\u3ccd\ud842\udeb4\u4a96\u398a\u50f4\u3d69\u3d4c\ud844\udf9c\u7175\u42fb\ud860\ude18\u6e0f\ud864\udce4\u44eb\u6d57\ud85f\ude4f\u7067\u6caf\u3cd6\ud84f\udfed\ud84f\ude2d\u6e02\u6f0c\u3d6f\ud840\udff5\u7551\u36bc\u34c8\u4680\u3eda\u4871\u59c4\u926e\u493e\u8f41\ud863\udc1c\ud85a\udfc0\u5812\u57c8\u36d6\ud845\udc52\u70fe\ud850\udf62\ud852\ude71\ud84b\udfe3\ud844\udeb0\ud848\udfbd\u68b9\u6967\ud844\udf98\ud84d\udce5\ud85e\udff4\ud84d\udedf\ud862\ude83\ud84d\udfd6\ud84c\udffa\ud853\udc9f\u6a1a\ud84d\udead\ud85b\udcb7\u843e\u44df\u44ce"],["9840","\ud85b\udd26\ud85b\udd51\ud85b\udc82\ud85b\udfde\u6f17\ud85c\udd09\u833d\ud845\udf3a\u83ed\ud85b\udc80\ud85c\udc53\ud845\udfdb\u5989\u5a82\ud845\udfb3\u5a61\u5a71\ud846\udd05\ud850\uddfc\u372d\u59ef\ud845\udf3c\u36c7\u718e\u9390\u669a\ud850\udea5\u5a6e\u5a2b\ud850\ude93\u6a2b\ud84f\udef9\ud85d\udf36\ud851\udc5b\ud850\udeca\u711d\ud850\ude59\ud862\udde1\u4fb0\ud85b\udd28\u5cc2\ud851\udcce\ud85f\ude4d\ud850\udfbd\u6a0c\ud850\ude56\ud844\udf04\u70a6\u7133\ud850\udfe9\u3da5\u6cdf\ud87e\udc25\ud852\ude4f\u7e65\u59eb\u5d2f\u3df3\u5f5c\ud852\ude5d\ud845\udfdf\u7da4\u8426"],["98a1","\u5485\ud84e\udefa\ud84c\udf00\ud840\ude14\u577e\ud842\udcd5\ud841\ude19\u3fe5\ud847\udf9e\ud868\udeb6\u7003\ud864\udd5b\u5d70\u738f\u7cd3\ud862\ude59\ud865\udc20\u4fc8\u7fe7\u72cd\u7310\ud85e\udef4\u7338\u7339\ud855\udef6\u7341\u7348\u3ea9\ud85e\udf18\u906c\u71f5\ud852\udcf2\u73e1\u81f6\u3eca\u770c\u3ed1\u6ca2\u56fd\u7419\u741e\u741f\u3ee2\u3ef0\u3ef4\u3efa\u74d3\u3f0e\u3f53\u7542\u756d\u7572\u758d\u3f7c\u75c8\u75dc\u3fc0\u764d\u3fd7\u7674\u3fdc\u767a\ud853\udf5c\u7188\u5623\u8980\u5869\u401d\u7743\u4039\u6761\u4045\u35db\u7798\u406a\u406f\u5c5e\u77be\u77cb\u58f2\u7818\u70b9\u781c\u40a8\u7839\u7847\u7851\u7866\u8448\ud855\udd35\u7933\u6803\u7932\u4103"],["9940","\u4109\u7991\u7999\u8fbb\u7a06\u8fbc\u4167\u7a91\u41b2\u7abc\u8279\u41c4\u7acf\u7adb\u41cf\u4e21\u7b62\u7b6c\u7b7b\u7c12\u7c1b\u4260\u427a\u7c7b\u7c9c\u428c\u7cb8\u4294\u7ced\u8f93\u70c0\ud843\udccf\u7dcf\u7dd4\u7dd0\u7dfd\u7fae\u7fb4\u729f\u4397\u8020\u8025\u7b39\u802e\u8031\u8054\u3dcc\u57b4\u70a0\u80b7\u80e9\u43ed\u810c\u732a\u810e\u8112\u7560\u8114\u4401\u3b39\u8156\u8159\u815a"],["99a1","\u4413\u583a\u817c\u8184\u4425\u8193\u442d\u81a5\u57ef\u81c1\u81e4\u8254\u448f\u82a6\u8276\u82ca\u82d8\u82ff\u44b0\u8357\u9669\u698a\u8405\u70f5\u8464\u60e3\u8488\u4504\u84be\u84e1\u84f8\u8510\u8538\u8552\u453b\u856f\u8570\u85e0\u4577\u8672\u8692\u86b2\u86ef\u9645\u878b\u4606\u4617\u88ae\u88ff\u8924\u8947\u8991\ud85e\udd67\u8a29\u8a38\u8a94\u8ab4\u8c51\u8cd4\u8cf2\u8d1c\u4798\u585f\u8dc3\u47ed\u4eee\u8e3a\u55d8\u5754\u8e71\u55f5\u8eb0\u4837\u8ece\u8ee2\u8ee4\u8eed\u8ef2\u8fb7\u8fc1\u8fca\u8fcc\u9033\u99c4\u48ad\u98e0\u9213\u491e\u9228\u9258\u926b\u92b1\u92ae\u92bf"],["9a40","\u92e3\u92eb\u92f3\u92f4\u92fd\u9343\u9384\u93ad\u4945\u4951\u9ebf\u9417\u5301\u941d\u942d\u943e\u496a\u9454\u9479\u952d\u95a2\u49a7\u95f4\u9633\u49e5\u67a0\u4a24\u9740\u4a35\u97b2\u97c2\u5654\u4ae4\u60e8\u98b9\u4b19\u98f1\u5844\u990e\u9919\u51b4\u991c\u9937\u9942\u995d\u9962\u4b70\u99c5\u4b9d\u9a3c\u9b0f\u7a83\u9b69\u9b81\u9bdd\u9bf1\u9bf4\u4c6d\u9c20\u376f\ud846\udfc2\u9d49\u9c3a"],["9aa1","\u9efe\u5650\u9d93\u9dbd\u9dc0\u9dfc\u94f6\u8fb6\u9e7b\u9eac\u9eb1\u9ebd\u9ec6\u94dc\u9ee2\u9ef1\u9ef8\u7ac8\u9f44\ud840\udc94\ud840\udeb7\ud840\udfa0\u691a\u94c3\u59ac\ud841\udcd7\u5840\u94c1\u37b9\ud841\uddd5\ud841\ude15\ud841\ude76\ud845\udeba\u5757\u7173\ud842\udec2\ud842\udecd\ud842\udfbf\u546a\ud87e\udc3b\ud842\udfcb\u549e\ud842\udffb\ud843\udc3b\ud843\udc53\ud843\udc65\ud843\udc7c\u60e7\ud843\udc8d\u567a\ud843\udcb5\ud843\udcdd\ud843\udced\ud843\udd6f\ud843\uddb2\ud843\uddc8\u6955\u9c2f\u87a5\ud843\ude04\ud843\ude0e\ud843\uded7\ud843\udf90\ud843\udf2d\ud843\ude73\u5c20\ud843\udfbc\u5e0b\ud844\udc5c\ud844\udc4f\ud844\udc76\u671e\ud844\udc7b\ud844\udc88\ud844\udc96\u3647\ud844\udcbf\ud844\udcd3\ud844\udd2f\ud844\udd3b\u5364\u84ad\ud844\udee3\ud844\udf75\ud844\udf36\u8b81\ud845\udd77\ud845\ude19\ud845\udfc3\ud845\udfc7\u4e78\u70bb\ud846\udc2d\ud846\udd6a"],["9b40","\ud846\ude2d\ud846\ude45\ud847\udc2a\ud847\udc70\ud847\udcac\ud847\udec8\u62c3\ud847\uded5\ud847\udf15\u7198\u6855\ud848\udc45\u69e9\u36c8\ud848\ude7c\ud848\udfd7\ud848\udffa\ud849\udf2a\ud84a\udc71\ud84a\udd4f\u82fd\ud84a\udd67\ud84a\udd93\ud84a\uded5\u89a5\ud84a\udee8\u8fa0\ud84a\udf0e\u97b8\ud84a\udf3f\u9847\u9abd\ud84b\udc4c"],["9b62","\ud84b\udc88\ud84b\udcb7\ud856\udfe8\ud84b\udd08\ud84b\udd12\ud84b\uddb7\ud84b\udd95\ud84b\ude42\ud84b\udf74\ud84b\udfcc\ud84c\udc33\ud84c\udc66\ud84c\udf1f\ud84c\udfde\u5fb1\u6648\u66bf\ud85e\ude79\ud84d\udd67\ud84d\uddf3\u7201\ud852\uddba\u77d7\ud84d\ude1a\ud84d\udf16\u7e87\ud840\udf46\u58b5\u670e"],["9ba1","\u6918\ud84e\udea7\ud85d\ude57\ud857\udfe2\ud84f\ude11\ud84f\udeb9\ud85d\uddfe\ud848\udc9a\u48d0\u4ab8\ud850\udd19\ud862\ude9a\ud850\udeee\ud850\udf0d\ud850\udc3b\ud850\udf34\ud850\udf96\ud852\ude45\ud841\uddca\u51d2\ud841\ude11\u599f\ud847\udea8\u3bbe\ud84f\udcff\ud851\udc04\ud851\udcd6\u5788\ud851\ude74\u399b\ud851\udf2f\ud861\udde8\ud866\uddc9\u3762\ud848\uddc3\u8b5e\ud862\udf4e\u99d6\ud852\udc12\ud852\udcfb\ud852\ude15\u7209\ud852\udec0\ud843\udc78\u5965\ud853\udea5\ud853\udf86\ud841\udf79\u8eda\ud854\udc2c\u528f\u573f\u7171\ud854\ude99\ud855\udc19\ud84f\udf4a\ud852\udea7\u55bc\ud855\udc46\ud855\udc6e\ud85a\udf52\u91d4\u3473\ud855\udd3f\ud85d\ude32\ud855\udd5e\u4718\ud855\udd62\ud855\udd66\ud855\udfc7\ud852\udd3f\ud856\udc5d\u5066\u34fb\ud84c\udfcc\u60de\ud856\udd03\u477c\ud862\udd48\ud856\udeae\ud856\udf89\ud857\udc06\ud847\udd90\u57a1\u7151\u6fb6\ud858\udd02\ud85f\udc12\u9056\ud858\uddb2\ud853\udf9a\u8b62\ud859\udc02\ud859\udc4a"],["9c40","\u5d5b\ud85a\udff7\u8f36\ud859\udc84\ud846\udd1c\u8aea\ud852\uddf6\ud859\udc88\ud84f\udfef\ud859\udd12\u4bc0\ud859\uddbf\ud859\udeb5\ud849\udf1b\u9465\ud855\udfe1\u6195\u5a27\ud87e\udccd\u4fbb\u56b9\ud851\udd21\ud859\udefc\u4e6a\ud852\udd34\u9656\u6d8f\ud85b\udcbd\u3618\u8977\ud859\udf99\ud85a\udc6e\ud859\udc11\ud85a\udc5e\u71df\ud85a\udcc7\u7b42\ud864\udcc0\ud842\ude11\ud85a\udd26\u9104\ud85a\udd39\u7a45\u9df0\ud85a\uddfa\u9a26\ud85a\ude2d\u365f\ud859\udc69\ud840\udc21\u7983\ud85a\ude34\ud85a\udf5b\u5d2c\ud84d\udd19\u83cf\ud85a\udf9d\u46d0\ud85b\udca4\u753b\u8865\ud85b\uddae\u58b6"],["9ca1","\u371c\ud849\udd8d\ud85c\udc4b\ud85c\uddcd\u3c54\ud85c\ude80\ud85c\ude85\u9281\ud848\udd7a\ud85c\ude8b\u9330\ud85c\udee6\ud852\uddd0\u6c39\u949f\ud85d\udc50\ud843\udef8\u8827\u88f5\ud84a\udd26\ud861\udc73\ud845\udfb1\u6eb8\ud852\ude2a\ud846\udc20\u39a4\u36b9\u5c10\u79e3\u453f\u66b6\ud867\udcad\ud866\udca4\u8943\ud85d\udfcc\ud85e\udc58\u56d6\u40df\ud845\ude0a\u39a1\ud84d\udf2f\ud860\udce8\ud844\udfc5\u71ad\u8366\ud85e\udddd\ud864\udda8\u5a67\u4cb7\ud85c\udcaf\ud862\uddab\ud85e\uddfd\ud85e\ude0a\ud85e\udf0b\ud85f\udd66\ud850\udd7a\u7b43\u797e\ud860\udc09\u6fb5\ud868\udedf\u6a03\ud860\udf18\u53a2\ud85b\ude07\u93bf\u6836\u975d\ud860\udd6f\ud860\udc23\ud85a\uddb5\ud844\udfed\ud84c\ude2f\ud860\udc48\u5d85\ud863\udc30\ud860\udc83\u5715\u9823\ud862\udd49\u5dab\ud852\udd88\u65be\u69d5\u53d2\ud852\udea5\ud84f\udf81\u3c11\u6736\ud860\udc90\ud860\udcf4\ud860\udd2e\ud847\udfa1\ud860\udd4f"],["9d40","\ud860\udd89\ud860\uddaf\ud860\ude1a\ud860\udf06\ud860\udf2f\ud860\udf8a\u35ca\ud861\udc68\ud861\udeaa\u48fa\u63e6\ud862\udd56\u7808\u9255\ud862\uddb8\u43f2\ud862\udde7\u43df\ud862\udde8\ud862\udf46\ud862\udfd4\u59f8\ud863\udc09\u8f0b\ud863\udfc5\ud864\udcec\u7b51\ud864\udd10\ud864\udd3c\u3df7\ud864\udd5e\ud852\udeca\u8fd0\u728f\u568b\ud865\udce7\ud865\udde9\ud865\uddb0\ud865\uddb8\ud865\udf32\ud866\udcd1\ud866\udd49\ud866\udd6a\ud866\uddc3\ud866\ude28\ud866\udf0e\ud867\udd5a\ud867\udd9b\u7e9f\ud867\udef8\ud867\udf23\u4ca4\u9547\ud868\ude93\u71a2\ud868\udeff\u4d91\u9012\ud869\uddcb\u4d9c\ud843\udc9c\u8fbe\u55c1"],["9da1","\u8fba\ud849\udcb0\u8fb9\ud852\ude93\u4509\u7e7f\u6f56\u6ab1\u4eea\u34e4\ud862\udf2c\ud85e\udc9d\u373a\u8e80\ud845\udff5\ud860\udc24\ud862\udf6c\ud862\udf99\ud85e\ude3e\ud859\udeaf\u3deb\ud85d\ude55\ud84f\udcb7\ud855\ude35\ud856\udd56\u4e9a\ud857\ude81\ud858\ude58\u56bf\ud843\ude6d\u8e0e\u5b6d\ud84f\ude88\ud853\udc9e\u63de\u62d0\ud845\udff6\ud846\udc7b\u6530\u562d\ud857\udc4a\u541a\ud854\udf11\u3dc6\ud867\udd98\u4c7d\u5622\u561e\u7f49\ud857\uded8\u5975\ud84f\udd40\u8770\u4e1c\ud843\udfea\ud843\udd49\ud84d\udeba\u8117\u9d5e\u8d18\u763b\u9c45\u764e\u77b9\u9345\u5432\u8148\u82f7\u5625\u8132\u8418\u80bd\u55ea\u7962\u5643\u5416\ud843\ude9d\u35ce\u5605\u55f1\u66f1\ud860\udee2\u362d\u7534\u55f0\u55ba\u5497\u5572\ud843\udc41\ud843\udc96\u5ed0\ud854\udd48\ud843\ude76\ud84b\udc62"],["9e40","\ud843\udea2\u9eab\u7d5a\u55de\ud844\udc75\u629d\u976d\u5494\u8ccd\u71f6\u9176\u63fc\u63b9\u63fe\u5569\ud84a\udf43\u9c72\ud84b\udeb3\u519a\u34df\ud843\udda7\u51a7\u544d\u551e\u5513\u7666\u8e2d\ud85a\udc8a\u75b1\u80b6\u8804\u8786\u88c7\u81b6\u841c\ud844\udcc1\u44ec\u7304\ud851\udf06\u5b90\u830b\ud85a\udc93\u567b\ud849\udef4\ud85f\udd2f\ud850\udda3\ud85f\udd73\ud85b\uded0\ud85c\udeb6\u9170\ud844\uddd9\u9208\ud84f\udcfc\ud869\udea9\ud843\udeac\ud843\udef9\u7266\ud847\udca2\u474e\ud853\udfc2\ud85f\udff9\ud843\udfeb\u40fa"],["9ea1","\u9c5d\u651f\ud84b\udda0\u48f3\ud851\udfe0\ud867\udd7c\ud843\udfec\ud843\ude0a\u6062\ud85d\udda3\ud843\udfed"],["9ead","\ud858\udc48\ud844\udd87\u71a3\u7e8e\u9d50\u4e1a\u4e04\u3577\u5b0d\u6cb2\u5367\u36ac\u39dc\u537d\u36a5\ud851\ude18\u589a\ud852\udf6e\u822d\u544b\u57aa\ud856\ude95\ud842\udd79"],["9ec5","\u3a52\ud849\udc65\u7374\ud867\udeac\u4d09\u9bed\ud84f\udcfe\ud867\udf30\u4c5b\ud853\udfa9\ud865\udd9e\ud867\udfde\u845c\ud84f\uddb6\ud85c\udeb2\ud859\udfb3\ud84d\udf20\u632e\u7d25\ud84f\udef7\ud84f\ude2c\u3a2a\u9008\u52cc\u3e74\u367a\u45e9\ud841\udc8e\u7640\u5af0\ud843\udeb6\u787a\ud85f\udf2e\u58a7\u40bf\u567c\u9b8b\u5d74\u7654\ud869\udc34\u9e85\u4ce1\u75f9\u37fb\u6119\ud84c\udcda\ud850\udff2"],["9ef5","\u565d\ud844\udea9\u57a7\ud852\udd63\ud867\ude06\u5234\ud85c\udcae\u35ad\u6c4a\u9d7c"],["9f40","\u7c56\u9b39\u57de\ud845\udf6c\u5c53\u64d3\ud865\udcd0\ud858\udf35\ud85c\udd64\u86ad\ud843\udd28\ud85b\udd22\ud852\udee2\ud843\udd71"],["9f4f","\u51fe\ud847\udf0f\u5d8e\u9703\ud847\uddd1\u9e81\u904c\u7b1f\u9b02\u5cd1\u7ba3\u6268\u6335\u9aff\u7bcf\u9b2a\u7c7e\u9b2e\u7c42\u7c86\u9c15\u7bfc\u9b09\u9f17\u9c1b\ud852\udd3e\u9f5a\u5573\u5bc3\u4ffd\u9e98\u4ff2\u5260\u3e06\u52d1\u5767\u5056\u59b7\u5e12\u97c8\u9dab\u8f5c\u5469\u97b4\u9940\u97ba\u532c\u6130"],["9fa1","\u692c\u53da\u9c0a\u9d02\u4c3b\u9641\u6980\u50a6\u7546\ud845\udf6d\u99da\u5273"],["9fae","\u9159\u9681\u915c"],["9fb2","\u9151\ud863\ude97\u637f\ud85b\udd23\u6aca\u5611\u918e\u757a\u6285\ud840\udffc\u734f\u7c70\ud857\udc21\ud84f\udcfd"],["9fc1","\ud852\udd19\u76d6\u9b9d\u4e2a\ud843\udcd4\u83be\u8842"],["9fc9","\u5c4a\u69c0\u50ed\u577a\u521f\u5df5\u4ece\u6c31\ud840\uddf2\u4f39\u549c\u54da\u529a\u8d82\u35fe\u5f0c\u35f3"],["9fdb","\u6b52\u917c\u9fa5\u9b97\u982e\u98b4\u9aba\u9ea8\u9e84\u717a\u7b14"],["9fe7","\u6bfa\u8818\u7f78"],["9feb","\u5620\ud869\ude4a\u8e77\u9f53"],["9ff0","\u8dd4\u8e4f\u9e1c\u8e01\u6282\ud860\udf7d\u8e28\u8e75\u7ad3\ud852\ude77\u7a3e\u78d8\u6cea\u8a67\u7607"],["a040","\ud862\ude5a\u9f26\u6cce\u87d6\u75c3\ud868\udeb2\u7853\ud87e\udc40\u8d0c\u72e2\u7371\u8b2d\u7302\u74f1\u8ceb\ud852\udebb\u862f\u5fba\u88a0\u44b7"],["a055","\ud846\udc3b\ud85b\ude05"],["a058","\u8a7e\ud849\udd1b"],["a05b","\u60fd\u7667\u9ad7\u9d44\u936e\u9b8f\u87f5"],["a063","\u880f\u8cf7\u732c\u9721\u9bb0\u35d6\u72b2\u4c07\u7c51\u994a\ud858\udd59\u6159\u4c04\u9e96\u617d"],["a073","\u575f\u616f\u62a6\u6239\u62ce\u3a5c\u61e2\u53aa\ud84c\udff5\u6364\u6802\u35d2"],["a0a1","\u5d57\ud862\udfc2\u8fda\ud863\ude39"],["a0a6","\u50d9\ud847\udd46\u7906\u5332\u9638\ud843\udf3b\u4065"],["a0ae","\u77fe"],["a0b0","\u7cc2\ud857\udf1a\u7cda\u7a2d\u8066\u8063\u7d4d\u7505\u74f2\u8994\u821a\u670c\u8062\ud85d\udc86\u805b\u74f0\u8103\u7724\u8989\ud859\udfcc\u7553\ud85b\uded1\u87a9\u87ce\u81c8\u878c\u8a49\u8cad\u8b43\u772b\u74f8\u84da\u3635\u69b2\u8da6"],["a0d4","\u89a9\u7468\u6db9\u87c1\ud850\udc11\u74e7\u3ddb\u7176\u60a4\u619c\u3cd1\u7162\u6077"],["a0e2","\u7f71\ud862\udf2d\u7250\u60e9\u4b7e\u5220\u3c18\ud84f\udcc7\ud857\uded7\ud85d\ude56\ud855\udd31\ud846\udd44\ud844\udefe\ud866\udd03\ud85b\udddc\ud85c\udcad\u5cc1\ud858\uddad\ud862\ude0f\ud84d\ude77\ud840\udcee\ud85a\udc46\ud853\udf0e\u4562\u5b1f\ud858\udf4c\u9f50\u9ea6\ud858\ude6b"],["a3c0","\u2400",31,"\u2421"],["c6a1","\u2460",9,"\u2474",9,"\u2170",9,"\u4e36\u4e3f\u4e85\u4ea0\u5182\u5196\u51ab\u52f9\u5338\u5369\u53b6\u590a\u5b80\u5ddb\u2f33\u5e7f\u5ef4\u5f50\u5f61\u6534\u65e0\u7592\u7676\u8fb5\u96b6\xa8\u02c6\u30fd\u30fe\u309d\u309e\u3003\u4edd\u3005\u3006\u3007\u30fc\uff3b\uff3d\u273d\u3041",23],["c740","\u3059",58,"\u30a1\u30a2\u30a3\u30a4"],["c7a1","\u30a5",81,"\u0410",5,"\u0401\u0416",4],["c840","\u041b",26,"\u0451\u0436",25,"\u21e7\u21b8\u21b9\u31cf\ud840\udccc\u4e5a\ud840\udc8a\u5202\u4491"],["c8a1","\u9fb0\u5188\u9fb1\ud85d\ude07"],["c8cd","\uffe2\uffe4\uff07\uff02\u3231\u2116\u2121\u309b\u309c\u2e80\u2e84\u2e86\u2e87\u2e88\u2e8a\u2e8c\u2e8d\u2e95\u2e9c\u2e9d\u2ea5\u2ea7\u2eaa\u2eac\u2eae\u2eb6\u2ebc\u2ebe\u2ec6\u2eca\u2ecc\u2ecd\u2ecf\u2ed6\u2ed7\u2ede\u2ee3"],["c8f5","\u0283\u0250\u025b\u0254\u0275\u0153\xf8\u014b\u028a\u026a"],["f9fe","\uffed"],["fa40","\ud841\udd47\u92db\ud841\udddf\ud84f\udfc5\u854c\u42b5\u73ef\u51b5\u3649\ud852\udd42\ud862\udde4\u9344\ud846\udddb\u82ee\ud84f\udcc8\u783c\u6744\u62df\ud852\udd33\ud862\uddaa\ud840\udea0\ud85a\udfb3\ud844\udf05\u4fab\ud849\udced\u5008\ud85b\udd29\ud85e\ude84\ud84d\ude00\ud852\udeb1\ud849\udd13\u5029\ud840\udf7e\u5fa4\ud840\udf80\ud840\udf47\u6edb\ud841\udc1f\u507d\u5101\u347a\u510e\u986c\u3743\u8416\ud852\udda4\ud841\udc87\u5160\ud84c\udfb4\u516a\ud842\udfff\ud848\udcfc\ud840\udee5\ud849\udd30\ud841\udd8e\ud84c\ude33\ud846\udd83\u5b82\u877d\ud841\uddb3\ud84f\udc99\u51b2\u51b8"],["faa1","\u9d34\u51c9\u51cf\u51d1\u3cdc\u51d3\ud852\udea6\u51b3\u51e2\u5342\u51ed\u83cd\u693e\ud84d\udf2d\u5f7b\u520b\u5226\u523c\u52b5\u5257\u5294\u52b9\u52c5\u7c15\u8542\u52e0\u860d\ud85a\udf13\u5305\ud862\udede\u5549\u6ed9\ud84f\udf80\ud842\udd54\ud84f\udfec\u5333\u5344\ud842\udfe2\u6ccb\ud845\udf26\u681b\u73d5\u604a\u3eaa\u38cc\ud845\udee8\u71dd\u44a2\u536d\u5374\ud861\udeab\u537e\u537f\ud845\udd96\ud845\ude13\u77e6\u5393\ud862\ude9b\u53a0\u53ab\u53ae\u73a7\ud855\udf72\u3f59\u739c\u53c1\u53c5\u6c49\u4e49\u57fe\u53d9\u3aab\ud842\udf8f\u53e0\ud84f\udfeb\ud84b\udda3\u53f6\ud843\udc77\u5413\u7079\u552b\u6657\u6d5b\u546d\ud85a\udf53\ud843\udd74\u555d\u548f\u54a4\u47a6\ud845\udf0d\ud843\udedd\u3db4\ud843\udd4d"],["fb40","\ud862\uddbc\ud849\ude98\u5547\u4ced\u542f\u7417\u5586\u55a9\u5605\ud846\udcd7\ud850\udc3a\u4552\ud851\udc35\u66b3\ud844\udcb4\u5637\u66cd\ud84c\ude8a\u66a4\u66ad\u564d\u564f\u78f1\u56f1\u9787\u53fe\u5700\u56ef\u56ed\ud862\udf66\u3623\ud844\ude4f\u5746\ud850\udda5\u6c6e\u708b\u5742\u36b1\ud85b\udc7e\u57e6\ud845\udc16\u5803\ud845\udc54\ud850\udf63\u5826\ud852\udff5\u585c\u58aa\u3561\u58e0\u58dc\ud844\ude3c\u58fb\u5bff\u5743\ud868\udd50\ud850\ude78\u93d3\u35a1\u591f\u68a6\u36c3\u6e59"],["fba1","\ud845\ude3e\u5a24\u5553\ud845\ude92\u8505\u59c9\ud843\udd4e\ud85b\udc81\ud85b\udd2a\ud845\udfdc\u59d9\ud845\udffb\ud845\udfb2\ud85b\udda6\u6d71\ud846\udc28\ud845\uded5\u59f9\ud85b\ude45\u5aab\u5a63\u36e6\ud852\udda9\u5a77\u3708\u5a96\u7465\u5ad3\ud85b\udfa1\ud849\udd54\u3d85\ud846\udd11\u3732\ud845\udeb8\u5e83\u52d0\u5b76\u6588\u5b7c\ud85e\ude0e\u4004\u485d\ud840\ude04\u5bd5\u6160\ud846\ude34\ud856\uddcc\ud841\udda5\u5bf3\u5b9d\u4d10\u5c05\ud846\udf44\u5c13\u73ce\u5c14\ud847\udca5\ud85a\udf28\u5c49\u48dd\u5c85\u5ce9\u5cef\u5d8b\ud847\uddf9\ud847\ude37\u5d10\u5d18\u5d46\ud847\udea4\u5cba\u5dd7\u82fc\u382d\ud852\udd01\ud848\udc49\ud848\udd73\u8287\u3836\u3bc2\u5e2e\u6a8a\u5e75\u5e7a\ud851\udcbc\ud843\udcd3\u53a6\u4eb7\u5ed0\u53a8\ud845\udf71\u5e09\u5ef4\ud861\udc82"],["fc40","\u5ef9\u5efb\u38a0\u5efc\u683e\u941b\u5f0d\ud840\uddc1\ud87e\udc94\u3ade\u48ae\ud844\udf3a\u5f3a\ud85a\udc88\ud848\udfd0\u5f58\ud849\udc71\u5f63\u97bd\ud85b\ude6e\u5f72\u9340\ud862\ude36\u5fa7\u5db6\u3d5f\ud854\ude50\ud847\udf6a\ud85c\udcf8\ud849\ude68\u91d6\ud840\ude9e\ud862\ude29\u6031\u6685\ud846\udc77\u3963\u3dc7\u3639\u5790\ud849\udfb4\u7971\u3e40\u609e\u60a4\u60b3\ud852\udd82\ud852\udd8f\ud85e\ude53\u74a4\u50e1\u5aa0\u6164\u8424\u6142\ud87e\udca6\ud85b\uded2\u6181\u51f4\ud841\ude56\u6187\u5baa\ud84f\udfb7"],["fca1","\ud84a\udc5f\u61d3\ud862\udf9d\ud866\udd5d\u61d0\u3932\ud84a\udd80\ud84a\udcc1\u6023\u615c\u651e\u638b\ud840\udd18\u62c5\ud845\udf70\u62d5\ud84b\ude0d\u636c\ud852\udddf\u3a17\u6438\u63f8\ud844\udf8e\ud845\udffc\u6490\u6f8a\ud84b\ude36\u9814\ud850\udc8c\ud855\udf1d\u64e1\u64e5\u947b\u3a66\u643a\u3a57\u654d\u6f16\ud852\ude28\ud852\ude23\u6585\u656d\u655f\ud84c\udc7e\u65b5\ud852\udd40\u4b37\u65d1\u40d8\ud846\udc29\u65e0\u65e3\u5fdf\ud84d\udc00\u6618\ud84c\uddf7\ud84c\uddf8\u6644\ud84c\udda4\ud84c\udda5\u664b\ud843\ude75\u6667\ud854\udde6\u6673\u6674\ud847\ude3d\ud84c\ude31\ud861\uddf4\ud84c\uddc8\ud854\udf13\u77c5\ud84a\udcf7\u99a4\u6702\ud850\udf9c\ud852\ude21\u3b2b\u69fa\ud84d\udfc2\u675e\u6767\u6762\ud850\uddcd\ud864\udced\u67d7\u44e9\u6822\u6e50\u923c\u6801\ud84c\udfe6\ud85b\udda0\u685d"],["fd40","\ud84d\udc6f\u69e1\u6a0b\ud862\udedf\u6973\u68c3\ud84d\uddcd\u6901\u6900\u3d32\u3a01\ud84d\ude3c\u3b80\u67ac\u6961\ud862\ude4a\u42fc\u6936\u6998\u3ba1\ud840\udfc9\u8363\u5090\u69f9\ud84d\ude59\ud848\udd2a\u6a45\ud84d\udf03\u6a9d\u3bf3\u67b1\u6ac8\ud864\udd9c\u3c0d\u6b1d\ud842\udd23\u60de\u6b35\u6b74\ud849\udfcd\u6eb5\ud84e\udedb\ud840\udfb5\ud846\udd58\u3740\u5421\ud84e\udf5a\u6be1\ud84f\udefc\u6bdc\u6c37\ud849\udc8b\ud852\udcf1\ud85a\udf51\u6c5a\u8226\u6c79\ud84f\uddbc\u44c5\ud84f\uddbd\ud850\udda4\ud852\udd0c\ud852\udd00"],["fda1","\ud84f\udcc9\u36e5\u3ceb\ud843\udd32\u9b83\ud84c\uddf9\ud849\udc91\u7f8f\u6837\ud85b\udd25\ud85b\udda1\ud85b\uddeb\u6d96\u6d5c\u6e7c\u6f04\ud852\udd7f\ud850\udc85\ud85b\ude72\u8533\ud85b\udf74\u51c7\u6c9c\u6e1d\u842e\ud862\udf21\u6e2f\ud84f\ude2f\u7453\ud84f\udf82\u79cc\u6e4f\u5a91\ud84c\udc4b\u6ff8\u370d\u6f9d\ud84f\ude30\u6efa\ud845\udc97\ud850\udc3d\u4555\u93f0\u6f44\u6f5c\u3d4e\u6f74\ud864\udd70\u3d3b\u6f9f\ud850\udd44\u6fd3\ud850\udc91\ud850\udd55\ud850\udc39\ud84f\udff0\ud84f\udfb4\ud850\udd3f\u51df\ud850\udd56\ud850\udd57\ud850\udd40\ud858\udddd\u704b\u707e\u70a7\u7081\u70cc\u70d5\u70d6\u70df\u4104\u3de8\u71b4\u7196\ud850\ude77\u712b\u7145\u5a88\u714a\u716e\u5c9c\ud850\udf65\u714f\u9362\ud850\udec1\u712c\ud851\udc5a\ud852\ude27\ud852\ude22\u71ba\ud862\udfe8\u70bd\u720e"],["fe40","\u9442\u7215\u5911\u9443\u7224\u9341\ud855\ude05\u722e\u7240\ud852\udd74\u68bd\u7255\u7257\u3e55\ud84c\udc44\u680d\u6f3d\u7282\u732a\u732b\ud852\udc23\ud862\udc2b\u48ed\ud862\udc04\u7328\u732e\u73cf\u73aa\ud843\udc3a\ud85a\ude2e\u73c9\u7449\ud850\udde2\ud845\udee7\ud852\ude24\u6623\u36c5\ud852\uddb7\ud852\udd8d\ud852\uddfb\u73f7\u7415\u6903\ud852\ude26\u7439\ud841\uddc3\u3ed7\u745c\ud84a\udcad\u7460\ud863\udeb2\u7447\u73e4\u7476\u83b9\u746c\u3730\u7474\u93f1\u6a2c\u7482\u4953\ud852\ude8c"],["fea1","\ud850\udd5f\ud852\ude79\ud862\udf8f\u5b46\ud863\udc03\ud846\udc9e\u74c8\ud846\udd88\u750e\u74e9\u751e\ud863\uded9\ud846\ude4b\u5bd7\ud863\udeac\u9385\u754d\u754a\u7567\u756e\ud853\udf82\u3f04\ud853\udd13\u758e\u745d\u759e\u75b4\u7602\u762c\u7651\u764f\u766f\u7676\ud858\udff5\u7690\u81ef\u37f8\ud85a\udd11\ud85a\udd0e\u76a1\u76a5\u76b7\u76cc\ud85b\udf9f\u8462\ud854\udc9d\ud854\udd7d\ud847\ude1c\u771e\u7726\u7740\u64af\ud854\ude20\u7758\ud84c\udeac\u77af\ud862\udd64\ud862\udd68\ud845\udec1\u77f4\u7809\ud844\udf76\ud852\ude12\u68ca\u78af\u78c7\u78d3\u96a5\u792e\ud855\udde0\u78d7\u7934\u78b1\ud85d\ude0c\u8fb8\u8884\ud862\udf2b\ud858\udc83\ud849\ude1c\u7986\u8900\u6902\u7980\ud856\udc57\u799d\ud85e\udf39\u793c\u79a9\u6e2a\ud85c\udd26\u3ea8\u79c6\ud864\udd0d\u79d4"]]')},,,function(g,I,e){(function(){var I,t,C,Q,F,B,n={}.hasOwnProperty;I=e(735),Q=e(287).Number,B=e(180),F=e(413).inspect,C=function(g){function I(){return I.__super__.constructor.apply(this,arguments)}return function(g,I){for(var e in I)n.call(I,e)&&(g[e]=I[e]);function t(){this.constructor=g}t.prototype=I.prototype,g.prototype=new t,g.__super__=I.prototype}(I,g),I.prototype.decode=function(g,I){var e,C,F;return C=g.pos,e=B.resolveLength(this.length,g,I),this.length instanceof Q&&(I={parent:I,_startOffset:C,_currentOffset:0,_length:e}),F=new t(this.type,e,g,I),g.pos+=e*this.type.size(null,I),F},I.prototype.size=function(g,e){return g instanceof t&&(g=g.toArray()),I.__super__.size.call(this,g,e)},I.prototype.encode=function(g,e,C){return e instanceof t&&(e=e.toArray()),I.__super__.encode.call(this,g,e,C)},I}(I),t=function(){function g(g,I,e,t){this.type=g,this.length=I,this.stream=e,this.ctx=t,this.base=this.stream.pos,this.items=[]}return g.prototype.get=function(g){var I;if(!(g<0||g>=this.length))return null==this.items[g]&&(I=this.stream.pos,this.stream.pos=this.base+this.type.size(null,this.ctx)*g,this.items[g]=this.type.decode(this.stream,this.ctx),this.stream.pos=I),this.items[g]},g.prototype.toArray=function(){var g,I,e,t;for(t=[],g=I=0,e=this.length;I<e;g=I+=1)t.push(this.get(g));return t},g.prototype.inspect=function(){return F(this.toArray())},g}(),g.exports=C}).call(this)},function(g,I){(function(){var I;I=function(){function g(g,I){this.type=g,this.flags=null!=I?I:[]}return g.prototype.decode=function(g){var I,e,t,C,Q,F,B;for(C=this.type.decode(g),t={},e=Q=0,F=(B=this.flags).length;Q<F;e=++Q)null!=(I=B[e])&&(t[I]=!!(C&1<<e));return t},g.prototype.size=function(){return this.type.size()},g.prototype.encode=function(g,I){var e,t,C,Q,F,B;for(C=0,t=Q=0,F=(B=this.flags).length;Q<F;t=++Q)null!=(e=B[t])&&I[e]&&(C|=1<<t);return this.type.encode(g,C)},g}(),g.exports=I}).call(this)},function(g,I){(function(){var I;I=function(){function g(g){this.type=g}return g.prototype.decode=function(g,I){return!!this.type.decode(g,I)},g.prototype.size=function(g,I){return this.type.size(g,I)},g.prototype.encode=function(g,I,e){return this.type.encode(g,+I,e)},g}(),g.exports=I}).call(this)},function(g,I,e){(function(){var I,t,C;C=e(180),t=e(287).Number,I=function(){function g(g){this.length=g}return g.prototype.decode=function(g,I){var e;return e=C.resolveLength(this.length,g,I),g.readBuffer(e)},g.prototype.size=function(g,I){return g?g.length:C.resolveLength(this.length,null,I)},g.prototype.encode=function(g,I,e){return this.length instanceof t&&this.length.encode(g,I.length),g.writeBuffer(I)},g}(),g.exports=I}).call(this)},function(g,I){(function(){var I;I=function(){function g(g,I){this.type=g,this.options=null!=I?I:[]}return g.prototype.decode=function(g){var I;return I=this.type.decode(g),this.options[I]||I},g.prototype.size=function(){return this.type.size()},g.prototype.encode=function(g,I){var e;if(-1===(e=this.options.indexOf(I)))throw new Error("Unknown option in enum: "+I);return this.type.encode(g,e)},g}(),g.exports=I}).call(this)},function(g,I){(function(){var I;I=function(){function g(g,I){this.type=g,this.condition=null==I||I}return g.prototype.decode=function(g,I){var e;if("function"===typeof(e=this.condition)&&(e=e.call(I,I)),e)return this.type.decode(g,I)},g.prototype.size=function(g,I){var e;return"function"===typeof(e=this.condition)&&(e=e.call(I,I)),e?this.type.size(g,I):0},g.prototype.encode=function(g,I,e){var t;if("function"===typeof(t=this.condition)&&(t=t.call(e,e)),t)return this.type.encode(g,I,e)},g}(),g.exports=I}).call(this)},function(g,I,e){(function(){var I,t;t=e(180),I=function(){function g(g,I){this.type=g,this.count=null!=I?I:1}return g.prototype.decode=function(g,I){g.pos+=this.size(null,I)},g.prototype.size=function(g,I){var e;return e=t.resolveLength(this.count,null,I),this.type.size()*e},g.prototype.encode=function(g,I,e){return g.fill(0,this.size(I,e))},g}(),g.exports=I}).call(this)},function(g,I,e){(function(I){(function(){var t,C,Q;t=e(287).Number,Q=e(180),C=function(){function g(g,I){this.length=g,this.encoding=null!=I?I:"ascii"}return g.prototype.decode=function(g,I){var e,t,C,F,B;return C=function(){if(null!=this.length)return Q.resolveLength(this.length,g,I);for(e=g.buffer,C=g.length,F=g.pos;F<C&&0!==e[F];)++F;return F-g.pos}.call(this),"function"===typeof(t=this.encoding)&&(t=t.call(I,I)||"ascii"),B=g.readString(C,t),null==this.length&&g.pos<g.length&&g.pos++,B},g.prototype.size=function(g,e){var C,F;return g?("function"===typeof(C=this.encoding)&&(C=C.call(null!=e?e.val:void 0,null!=e?e.val:void 0)||"ascii"),"utf16be"===C&&(C="utf16le"),F=I.byteLength(g,C),this.length instanceof t&&(F+=this.length.size()),null==this.length&&F++,F):Q.resolveLength(this.length,null,e)},g.prototype.encode=function(g,e,C){var Q;if("function"===typeof(Q=this.encoding)&&(Q=Q.call(null!=C?C.val:void 0,null!=C?C.val:void 0)||"ascii"),this.length instanceof t&&this.length.encode(g,I.byteLength(e,Q)),g.writeString(e,Q),null==this.length)return g.writeUInt8(0)},g}(),g.exports=C}).call(this)}).call(this,e(103).Buffer)},function(g,I,e){(function(){var I,t={}.hasOwnProperty;I=function(g){function I(g,I){this.type=g,this.versions=null!=I?I:{},"string"===typeof this.type&&(this.versionGetter=new Function("parent","return parent."+this.type),this.versionSetter=new Function("parent","version","return parent."+this.type+" = version"))}return function(g,I){for(var e in I)t.call(I,e)&&(g[e]=I[e]);function C(){this.constructor=g}C.prototype=I.prototype,g.prototype=new C,g.__super__=I.prototype}(I,g),I.prototype.decode=function(g,e,t){var C,Q,F;if(null==t&&(t=0),Q=this._setup(g,e,t),"string"===typeof this.type?Q.version=this.versionGetter(e):Q.version=this.type.decode(g),this.versions.header&&this._parseFields(g,Q,this.versions.header),null==(C=this.versions[Q.version]))throw new Error("Unknown version "+Q.version);return C instanceof I?C.decode(g,e):(this._parseFields(g,Q,C),null!=(F=this.process)&&F.call(Q,g),Q)},I.prototype.size=function(g,I,e){var t,C,Q,F,B,n;if(null==e&&(e=!0),!g)throw new Error("Not a fixed size");if(t={parent:I,val:g,pointerSize:0},F=0,"string"!==typeof this.type&&(F+=this.type.size(g.version,t)),this.versions.header)for(Q in n=this.versions.header)null!=(B=n[Q]).size&&(F+=B.size(g[Q],t));if(null==(C=this.versions[g.version]))throw new Error("Unknown version "+g.version);for(Q in C)null!=(B=C[Q]).size&&(F+=B.size(g[Q],t));return e&&(F+=t.pointerSize),F},I.prototype.encode=function(g,I,e){var t,C,Q,F,B,n,U,s;if(null!=(U=this.preEncode)&&U.call(I,g),(t={pointers:[],startOffset:g.pos,parent:e,val:I,pointerSize:0}).pointerOffset=g.pos+this.size(I,t,!1),"string"!==typeof this.type&&this.type.encode(g,I.version),this.versions.header)for(F in s=this.versions.header)null!=(n=s[F]).encode&&n.encode(g,I[F],t);for(F in C=this.versions[I.version])null!=(n=C[F]).encode&&n.encode(g,I[F],t);for(Q=0;Q<t.pointers.length;)(B=t.pointers[Q++]).type.encode(g,B.val,B.parent)},I}(e(736)),g.exports=I}).call(this)},function(g,I,e){(function(){var g,t,C;C=e(180),g=function(){function g(g,I,e){var t,C,Q,F;this.offsetType=g,this.type=I,this.options=null!=e?e:{},"void"===this.type&&(this.type=null),null==(t=this.options).type&&(t.type="local"),null==(C=this.options).allowNull&&(C.allowNull=!0),null==(Q=this.options).nullValue&&(Q.nullValue=0),null==(F=this.options).lazy&&(F.lazy=!1),this.options.relativeTo&&(this.relativeToGetter=new Function("ctx","return ctx."+this.options.relativeTo))}return g.prototype.decode=function(g,I){var e,t,Q,F,B,n,U;return(Q=this.offsetType.decode(g,I))===this.options.nullValue&&this.options.allowNull?null:(B=function(){switch(this.options.type){case"local":return I._startOffset;case"immediate":return g.pos-this.offsetType.size();case"parent":return I.parent._startOffset;default:for(e=I;e.parent;)e=e.parent;return e._startOffset||0}}.call(this),this.options.relativeTo&&(B+=this.relativeToGetter(I)),F=Q+B,null!=this.type?(n=null,U=this,t=function(){var e;return null!=n||(e=g.pos,g.pos=F,n=U.type.decode(g,I),g.pos=e),n},this.options.lazy?new C.PropertyDescriptor({get:t}):t()):F)},g.prototype.size=function(g,I){var e,C;switch(e=I,this.options.type){case"local":case"immediate":break;case"parent":I=I.parent;break;default:for(;I.parent;)I=I.parent}if(null==(C=this.type)){if(!(g instanceof t))throw new Error("Must be a VoidPointer");C=g.type,g=g.value}return g&&I&&(I.pointerSize+=C.size(g,e)),this.offsetType.size()},g.prototype.encode=function(g,I,e){var C,Q,F;if(C=e,null!=I){switch(this.options.type){case"local":Q=e.startOffset;break;case"immediate":Q=g.pos+this.offsetType.size(I,C);break;case"parent":Q=(e=e.parent).startOffset;break;default:for(Q=0;e.parent;)e=e.parent}if(this.options.relativeTo&&(Q+=this.relativeToGetter(C.val)),this.offsetType.encode(g,e.pointerOffset-Q),null==(F=this.type)){if(!(I instanceof t))throw new Error("Must be a VoidPointer");F=I.type,I=I.value}return e.pointers.push({type:F,val:I,parent:C}),e.pointerOffset+=F.size(I,C)}this.offsetType.encode(g,this.options.nullValue)},g}(),t=function(g,I){this.type=g,this.value=I},I.Pointer=g,I.VoidPointer=t}).call(this)},function(g,I,e){var t=e(1425);g.exports=function(g,I){if(g){if("string"===typeof g)return t(g,I);var e=Object.prototype.toString.call(g).slice(8,-1);return"Object"===e&&g.constructor&&(e=g.constructor.name),"Map"===e||"Set"===e?Array.from(g):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?t(g,I):void 0}},g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I){g.exports=function(g,I){(null==I||I>g.length)&&(I=g.length);for(var e=0,t=new Array(I);e<I;e++)t[e]=g[e];return t},g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I,e){var t=e(535).default,C=e(1427);g.exports=function(g){var I=C(g,"string");return"symbol"===t(I)?I:String(I)},g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I,e){var t=e(535).default;g.exports=function(g,I){if("object"!==t(g)||null===g)return g;var e=g[Symbol.toPrimitive];if(void 0!==e){var C=e.call(g,I||"default");if("object"!==t(C))return C;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===I?String:Number)(g)},g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I){function e(I,t){return g.exports=e=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(g,I){return g.__proto__=I,g},g.exports.__esModule=!0,g.exports.default=g.exports,e(I,t)}g.exports=e,g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I,e){"use strict";var t;if(!Object.keys){var C=Object.prototype.hasOwnProperty,Q=Object.prototype.toString,F=e(738),B=Object.prototype.propertyIsEnumerable,n=!B.call({toString:null},"toString"),U=B.call((function(){}),"prototype"),s=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],i=function(g){var I=g.constructor;return I&&I.prototype===g},c={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},A=function(){if("undefined"===typeof window)return!1;for(var g in window)try{if(!c["$"+g]&&C.call(window,g)&&null!==window[g]&&"object"===typeof window[g])try{i(window[g])}catch(I){return!0}}catch(I){return!0}return!1}();t=function(g){var I=null!==g&&"object"===typeof g,e="[object Function]"===Q.call(g),t=F(g),B=I&&"[object String]"===Q.call(g),c=[];if(!I&&!e&&!t)throw new TypeError("Object.keys called on a non-object");var l=U&&e;if(B&&g.length>0&&!C.call(g,0))for(var a=0;a<g.length;++a)c.push(String(a));if(t&&g.length>0)for(var r=0;r<g.length;++r)c.push(String(r));else for(var o in g)l&&"prototype"===o||!C.call(g,o)||c.push(String(o));if(n)for(var d=function(g){if("undefined"===typeof window||!A)return i(g);try{return i(g)}catch(I){return!1}}(g),u=0;u<s.length;++u)d&&"constructor"===s[u]||!C.call(g,s[u])||c.push(s[u]);return c}}g.exports=t},function(g,I,e){"use strict";var t="function"===typeof Symbol&&"symbol"===typeof Symbol.toStringTag,C=Object.prototype.toString,Q=function(g){return!(t&&g&&"object"===typeof g&&Symbol.toStringTag in g)&&"[object Arguments]"===C.call(g)},F=function(g){return!!Q(g)||null!==g&&"object"===typeof g&&"number"===typeof g.length&&g.length>=0&&"[object Array]"!==C.call(g)&&"[object Function]"===C.call(g.callee)},B=function(){return Q(arguments)}();Q.isLegacyArguments=F,g.exports=B?Q:F},function(g,I,e){"use strict";var t=e(341),C=e(1432),Q=e(739),F=e(740),B=e(1437),n=C(F(),Object);t(n,{getPolyfill:F,implementation:Q,shim:B}),g.exports=n},function(g,I,e){"use strict";var t=e(342),C=e(1434),Q=C("%Function.prototype.apply%"),F=C("%Function.prototype.call%"),B=C("%Reflect.apply%",!0)||t.call(F,Q),n=C("%Object.defineProperty%",!0);if(n)try{n({},"a",{value:1})}catch(s){n=null}g.exports=function(){return B(t,F,arguments)};var U=function(){return B(t,Q,arguments)};n?n(g.exports,"apply",{value:U}):g.exports.apply=U},function(g,I,e){"use strict";var t="Function.prototype.bind called on incompatible ",C=Array.prototype.slice,Q=Object.prototype.toString;g.exports=function(g){var I=this;if("function"!==typeof I||"[object Function]"!==Q.call(I))throw new TypeError(t+I);for(var e,F=C.call(arguments,1),B=function(){if(this instanceof e){var t=I.apply(this,F.concat(C.call(arguments)));return Object(t)===t?t:this}return I.apply(g,F.concat(C.call(arguments)))},n=Math.max(0,I.length-F.length),U=[],s=0;s<n;s++)U.push("$"+s);if(e=Function("binder","return function ("+U.join(",")+"){ return binder.apply(this,arguments); }")(B),I.prototype){var i=function(){};i.prototype=I.prototype,e.prototype=new i,i.prototype=null}return e}},function(g,I,e){"use strict";var t=SyntaxError,C=Function,Q=TypeError,F=function(g){try{return Function('"use strict"; return ('+g+").constructor;")()}catch(I){}},B=Object.getOwnPropertyDescriptor;if(B)try{B({},"")}catch(G){B=null}var n=function(){throw new Q},U=B?function(){try{return n}catch(g){try{return B(arguments,"callee").get}catch(I){return n}}}():n,s=e(536)(),i=Object.getPrototypeOf||function(g){return g.__proto__},c=F("async function* () {}"),A=c?c.prototype:void 0,l=A?A.prototype:void 0,a="undefined"===typeof Uint8Array?void 0:i(Uint8Array),r={"%AggregateError%":"undefined"===typeof AggregateError?void 0:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"===typeof ArrayBuffer?void 0:ArrayBuffer,"%ArrayIteratorPrototype%":s?i([][Symbol.iterator]()):void 0,"%AsyncFromSyncIteratorPrototype%":void 0,"%AsyncFunction%":F("async function () {}"),"%AsyncGenerator%":A,"%AsyncGeneratorFunction%":c,"%AsyncIteratorPrototype%":l?i(l):void 0,"%Atomics%":"undefined"===typeof Atomics?void 0:Atomics,"%BigInt%":"undefined"===typeof BigInt?void 0:BigInt,"%Boolean%":Boolean,"%DataView%":"undefined"===typeof DataView?void 0:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":"undefined"===typeof Float32Array?void 0:Float32Array,"%Float64Array%":"undefined"===typeof Float64Array?void 0:Float64Array,"%FinalizationRegistry%":"undefined"===typeof FinalizationRegistry?void 0:FinalizationRegistry,"%Function%":C,"%GeneratorFunction%":F("function* () {}"),"%Int8Array%":"undefined"===typeof Int8Array?void 0:Int8Array,"%Int16Array%":"undefined"===typeof Int16Array?void 0:Int16Array,"%Int32Array%":"undefined"===typeof Int32Array?void 0:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":s?i(i([][Symbol.iterator]())):void 0,"%JSON%":"object"===typeof JSON?JSON:void 0,"%Map%":"undefined"===typeof Map?void 0:Map,"%MapIteratorPrototype%":"undefined"!==typeof Map&&s?i((new Map)[Symbol.iterator]()):void 0,"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"===typeof Promise?void 0:Promise,"%Proxy%":"undefined"===typeof Proxy?void 0:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":"undefined"===typeof Reflect?void 0:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"===typeof Set?void 0:Set,"%SetIteratorPrototype%":"undefined"!==typeof Set&&s?i((new Set)[Symbol.iterator]()):void 0,"%SharedArrayBuffer%":"undefined"===typeof SharedArrayBuffer?void 0:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":s?i(""[Symbol.iterator]()):void 0,"%Symbol%":s?Symbol:void 0,"%SyntaxError%":t,"%ThrowTypeError%":U,"%TypedArray%":a,"%TypeError%":Q,"%Uint8Array%":"undefined"===typeof Uint8Array?void 0:Uint8Array,"%Uint8ClampedArray%":"undefined"===typeof Uint8ClampedArray?void 0:Uint8ClampedArray,"%Uint16Array%":"undefined"===typeof Uint16Array?void 0:Uint16Array,"%Uint32Array%":"undefined"===typeof Uint32Array?void 0:Uint32Array,"%URIError%":URIError,"%WeakMap%":"undefined"===typeof WeakMap?void 0:WeakMap,"%WeakRef%":"undefined"===typeof WeakRef?void 0:WeakRef,"%WeakSet%":"undefined"===typeof WeakSet?void 0:WeakSet},o={"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},d=e(342),u=e(1436),y=d.call(Function.call,Array.prototype.concat),b=d.call(Function.apply,Array.prototype.splice),Z=d.call(Function.call,String.prototype.replace),m=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,x=/\\(\\)?/g,R=function(g){var I=[];return Z(g,m,(function(g,e,t,C){I[I.length]=t?Z(C,x,"$1"):e||g})),I},S=function(g,I){var e,C=g;if(u(o,C)&&(C="%"+(e=o[C])[0]+"%"),u(r,C)){var F=r[C];if("undefined"===typeof F&&!I)throw new Q("intrinsic "+g+" exists, but is not available. Please file an issue!");return{alias:e,name:C,value:F}}throw new t("intrinsic "+g+" does not exist!")};g.exports=function(g,I){if("string"!==typeof g||0===g.length)throw new Q("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!==typeof I)throw new Q('"allowMissing" argument must be a boolean');var e=R(g),t=e.length>0?e[0]:"",C=S("%"+t+"%",I),F=C.name,n=C.value,U=!1,s=C.alias;s&&(t=s[0],b(e,y([0,1],s)));for(var i=1,c=!0;i<e.length;i+=1){var A=e[i];if("constructor"!==A&&c||(U=!0),u(r,F="%"+(t+="."+A)+"%"))n=r[F];else if(null!=n){if(B&&i+1>=e.length){var l=B(n,A);if(c=!!l,!I&&!(A in n))throw new Q("base intrinsic for "+g+" exists, but the property is not available.");n=c&&"get"in l&&!("originalValue"in l.get)?l.get:n[A]}else c=u(n,A),n=n[A];c&&!U&&(r[F]=n)}}return n}},function(g,I,e){"use strict";g.exports=function(){if("function"!==typeof Symbol||"function"!==typeof Object.getOwnPropertySymbols)return!1;if("symbol"===typeof Symbol.iterator)return!0;var g={},I=Symbol("test"),e=Object(I);if("string"===typeof I)return!1;if("[object Symbol]"!==Object.prototype.toString.call(I))return!1;if("[object Symbol]"!==Object.prototype.toString.call(e))return!1;for(I in g[I]=42,g)return!1;if("function"===typeof Object.keys&&0!==Object.keys(g).length)return!1;if("function"===typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(g).length)return!1;var t=Object.getOwnPropertySymbols(g);if(1!==t.length||t[0]!==I)return!1;if(!Object.prototype.propertyIsEnumerable.call(g,I))return!1;if("function"===typeof Object.getOwnPropertyDescriptor){var C=Object.getOwnPropertyDescriptor(g,I);if(42!==C.value||!0!==C.enumerable)return!1}return!0}},function(g,I,e){"use strict";var t=e(342);g.exports=t.call(Function.call,Object.prototype.hasOwnProperty)},function(g,I,e){"use strict";var t=e(740),C=e(341);g.exports=function(){var g=t();return C(Object,{is:g},{is:function(){return Object.is!==g}}),g}},function(g,I,e){"use strict";var t,C,Q,F,B=e(536)()&&"symbol"===typeof Symbol.toStringTag;if(B){t=Function.call.bind(Object.prototype.hasOwnProperty),C=Function.call.bind(RegExp.prototype.exec),Q={};var n=function(){throw Q};F={toString:n,valueOf:n},"symbol"===typeof Symbol.toPrimitive&&(F[Symbol.toPrimitive]=n)}var U=Object.prototype.toString,s=Object.getOwnPropertyDescriptor;g.exports=B?function(g){if(!g||"object"!==typeof g)return!1;var I=s(g,"lastIndex");if(!(I&&t(I,"value")))return!1;try{C(g,F)}catch(e){return e===Q}}:function(g){return!(!g||"object"!==typeof g&&"function"!==typeof g)&&"[object RegExp]"===U.call(g)}},function(g,I,e){"use strict";var t=e(341),C=e(1440),Q=e(741),F=e(742),B=e(1442),n=C(Q);t(n,{getPolyfill:F,implementation:Q,shim:B}),g.exports=n},function(g,I,e){"use strict";var t=e(342),C=e(1441),Q=C("%Function.prototype.apply%"),F=C("%Function.prototype.call%"),B=C("%Reflect.apply%",!0)||t.call(F,Q),n=C("%Object.defineProperty%",!0);if(n)try{n({},"a",{value:1})}catch(s){n=null}g.exports=function(){return B(t,F,arguments)};var U=function(){return B(t,Q,arguments)};n?n(g.exports,"apply",{value:U}):g.exports.apply=U},function(g,I,e){"use strict";var t=TypeError,C=Object.getOwnPropertyDescriptor;if(C)try{C({},"")}catch(o){C=null}var Q=function(){throw new t},F=C?function(){try{return Q}catch(g){try{return C(arguments,"callee").get}catch(I){return Q}}}():Q,B=e(536)(),n=Object.getPrototypeOf||function(g){return g.__proto__},U=void 0,s="undefined"===typeof Uint8Array?void 0:n(Uint8Array),i={"%Array%":Array,"%ArrayBuffer%":"undefined"===typeof ArrayBuffer?void 0:ArrayBuffer,"%ArrayBufferPrototype%":"undefined"===typeof ArrayBuffer?void 0:ArrayBuffer.prototype,"%ArrayIteratorPrototype%":B?n([][Symbol.iterator]()):void 0,"%ArrayPrototype%":Array.prototype,"%ArrayProto_entries%":Array.prototype.entries,"%ArrayProto_forEach%":Array.prototype.forEach,"%ArrayProto_keys%":Array.prototype.keys,"%ArrayProto_values%":Array.prototype.values,"%AsyncFromSyncIteratorPrototype%":void 0,"%AsyncFunction%":void 0,"%AsyncFunctionPrototype%":void 0,"%AsyncGenerator%":void 0,"%AsyncGeneratorFunction%":void 0,"%AsyncGeneratorPrototype%":void 0,"%AsyncIteratorPrototype%":U&&B&&Symbol.asyncIterator?U[Symbol.asyncIterator]():void 0,"%Atomics%":"undefined"===typeof Atomics?void 0:Atomics,"%Boolean%":Boolean,"%BooleanPrototype%":Boolean.prototype,"%DataView%":"undefined"===typeof DataView?void 0:DataView,"%DataViewPrototype%":"undefined"===typeof DataView?void 0:DataView.prototype,"%Date%":Date,"%DatePrototype%":Date.prototype,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%ErrorPrototype%":Error.prototype,"%eval%":eval,"%EvalError%":EvalError,"%EvalErrorPrototype%":EvalError.prototype,"%Float32Array%":"undefined"===typeof Float32Array?void 0:Float32Array,"%Float32ArrayPrototype%":"undefined"===typeof Float32Array?void 0:Float32Array.prototype,"%Float64Array%":"undefined"===typeof Float64Array?void 0:Float64Array,"%Float64ArrayPrototype%":"undefined"===typeof Float64Array?void 0:Float64Array.prototype,"%Function%":Function,"%FunctionPrototype%":Function.prototype,"%Generator%":void 0,"%GeneratorFunction%":void 0,"%GeneratorPrototype%":void 0,"%Int8Array%":"undefined"===typeof Int8Array?void 0:Int8Array,"%Int8ArrayPrototype%":"undefined"===typeof Int8Array?void 0:Int8Array.prototype,"%Int16Array%":"undefined"===typeof Int16Array?void 0:Int16Array,"%Int16ArrayPrototype%":"undefined"===typeof Int16Array?void 0:Int8Array.prototype,"%Int32Array%":"undefined"===typeof Int32Array?void 0:Int32Array,"%Int32ArrayPrototype%":"undefined"===typeof Int32Array?void 0:Int32Array.prototype,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":B?n(n([][Symbol.iterator]())):void 0,"%JSON%":"object"===typeof JSON?JSON:void 0,"%JSONParse%":"object"===typeof JSON?JSON.parse:void 0,"%Map%":"undefined"===typeof Map?void 0:Map,"%MapIteratorPrototype%":"undefined"!==typeof Map&&B?n((new Map)[Symbol.iterator]()):void 0,"%MapPrototype%":"undefined"===typeof Map?void 0:Map.prototype,"%Math%":Math,"%Number%":Number,"%NumberPrototype%":Number.prototype,"%Object%":Object,"%ObjectPrototype%":Object.prototype,"%ObjProto_toString%":Object.prototype.toString,"%ObjProto_valueOf%":Object.prototype.valueOf,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"===typeof Promise?void 0:Promise,"%PromisePrototype%":"undefined"===typeof Promise?void 0:Promise.prototype,"%PromiseProto_then%":"undefined"===typeof Promise?void 0:Promise.prototype.then,"%Promise_all%":"undefined"===typeof Promise?void 0:Promise.all,"%Promise_reject%":"undefined"===typeof Promise?void 0:Promise.reject,"%Promise_resolve%":"undefined"===typeof Promise?void 0:Promise.resolve,"%Proxy%":"undefined"===typeof Proxy?void 0:Proxy,"%RangeError%":RangeError,"%RangeErrorPrototype%":RangeError.prototype,"%ReferenceError%":ReferenceError,"%ReferenceErrorPrototype%":ReferenceError.prototype,"%Reflect%":"undefined"===typeof Reflect?void 0:Reflect,"%RegExp%":RegExp,"%RegExpPrototype%":RegExp.prototype,"%Set%":"undefined"===typeof Set?void 0:Set,"%SetIteratorPrototype%":"undefined"!==typeof Set&&B?n((new Set)[Symbol.iterator]()):void 0,"%SetPrototype%":"undefined"===typeof Set?void 0:Set.prototype,"%SharedArrayBuffer%":"undefined"===typeof SharedArrayBuffer?void 0:SharedArrayBuffer,"%SharedArrayBufferPrototype%":"undefined"===typeof SharedArrayBuffer?void 0:SharedArrayBuffer.prototype,"%String%":String,"%StringIteratorPrototype%":B?n(""[Symbol.iterator]()):void 0,"%StringPrototype%":String.prototype,"%Symbol%":B?Symbol:void 0,"%SymbolPrototype%":B?Symbol.prototype:void 0,"%SyntaxError%":SyntaxError,"%SyntaxErrorPrototype%":SyntaxError.prototype,"%ThrowTypeError%":F,"%TypedArray%":s,"%TypedArrayPrototype%":s?s.prototype:void 0,"%TypeError%":t,"%TypeErrorPrototype%":t.prototype,"%Uint8Array%":"undefined"===typeof Uint8Array?void 0:Uint8Array,"%Uint8ArrayPrototype%":"undefined"===typeof Uint8Array?void 0:Uint8Array.prototype,"%Uint8ClampedArray%":"undefined"===typeof Uint8ClampedArray?void 0:Uint8ClampedArray,"%Uint8ClampedArrayPrototype%":"undefined"===typeof Uint8ClampedArray?void 0:Uint8ClampedArray.prototype,"%Uint16Array%":"undefined"===typeof Uint16Array?void 0:Uint16Array,"%Uint16ArrayPrototype%":"undefined"===typeof Uint16Array?void 0:Uint16Array.prototype,"%Uint32Array%":"undefined"===typeof Uint32Array?void 0:Uint32Array,"%Uint32ArrayPrototype%":"undefined"===typeof Uint32Array?void 0:Uint32Array.prototype,"%URIError%":URIError,"%URIErrorPrototype%":URIError.prototype,"%WeakMap%":"undefined"===typeof WeakMap?void 0:WeakMap,"%WeakMapPrototype%":"undefined"===typeof WeakMap?void 0:WeakMap.prototype,"%WeakSet%":"undefined"===typeof WeakSet?void 0:WeakSet,"%WeakSetPrototype%":"undefined"===typeof WeakSet?void 0:WeakSet.prototype},c=e(342).call(Function.call,String.prototype.replace),A=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,l=/\\(\\)?/g,a=function(g){var I=[];return c(g,A,(function(g,e,t,C){I[I.length]=t?c(C,l,"$1"):e||g})),I},r=function(g,I){if(!(g in i))throw new SyntaxError("intrinsic "+g+" does not exist!");if("undefined"===typeof i[g]&&!I)throw new t("intrinsic "+g+" exists, but is not available. Please file an issue!");return i[g]};g.exports=function(g,I){if("string"!==typeof g||0===g.length)throw new TypeError("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!==typeof I)throw new TypeError('"allowMissing" argument must be a boolean');for(var e=a(g),Q=r("%"+(e.length>0?e[0]:"")+"%",I),F=1;F<e.length;F+=1)if(null!=Q)if(C&&F+1>=e.length){var B=C(Q,e[F]);if(!I&&!(e[F]in Q))throw new t("base intrinsic for "+g+" exists, but the property is not available.");Q=B&&"get"in B&&!("originalValue"in B.get)?B.get:Q[e[F]]}else Q=Q[e[F]];return Q}},function(g,I,e){"use strict";var t=e(341).supportsDescriptors,C=e(742),Q=Object.getOwnPropertyDescriptor,F=Object.defineProperty,B=TypeError,n=Object.getPrototypeOf,U=/a/;g.exports=function(){if(!t||!n)throw new B("RegExp.prototype.flags requires a true ES5 environment that supports property descriptors");var g=C(),I=n(U),e=Q(I,"flags");return e&&e.get===g||F(I,"flags",{configurable:!0,enumerable:!1,get:g}),g}},function(g,I,e){"use strict";var t=Date.prototype.getDay,C=Object.prototype.toString,Q="function"===typeof Symbol&&"symbol"===typeof Symbol.toStringTag;g.exports=function(g){return"object"===typeof g&&null!==g&&(Q?function(g){try{return t.call(g),!0}catch(I){return!1}}(g):"[object Date]"===C.call(g))}},function(g,I){g.exports=function(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}},function(g,I){function e(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}g.exports=function(g,I,t){return I&&e(g.prototype,I),t&&e(g,t),g}},function(g,I){var e=18===new Uint8Array(new Uint32Array([305419896]).buffer)[0],t=function(g,I,e){var t=g[I];g[I]=g[e],g[e]=t};g.exports={swap32LE:function(g){e&&function(g){for(var I=g.length,e=0;e<I;e+=4)t(g,e,e+3),t(g,e+1,e+2)}(g)}}},function(g,I,e){var t=e(535).default;function C(){"use strict";g.exports=C=function(){return I},g.exports.__esModule=!0,g.exports.default=g.exports;var I={},e=Object.prototype,Q=e.hasOwnProperty,F=Object.defineProperty||function(g,I,e){g[I]=e.value},B="function"==typeof Symbol?Symbol:{},n=B.iterator||"@@iterator",U=B.asyncIterator||"@@asyncIterator",s=B.toStringTag||"@@toStringTag";function i(g,I,e){return Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}),g[I]}try{i({},"")}catch(D){i=function(g,I,e){return g[I]=e}}function c(g,I,e,t){var C=I&&I.prototype instanceof a?I:a,Q=Object.create(C.prototype),B=new L(t||[]);return F(Q,"_invoke",{value:x(g,e,B)}),Q}function A(g,I,e){try{return{type:"normal",arg:g.call(I,e)}}catch(D){return{type:"throw",arg:D}}}I.wrap=c;var l={};function a(){}function r(){}function o(){}var d={};i(d,n,(function(){return this}));var u=Object.getPrototypeOf,y=u&&u(u(V([])));y&&y!==e&&Q.call(y,n)&&(d=y);var b=o.prototype=a.prototype=Object.create(d);function Z(g){["next","throw","return"].forEach((function(I){i(g,I,(function(g){return this._invoke(I,g)}))}))}function m(g,I){var e;F(this,"_invoke",{value:function(C,F){function B(){return new I((function(e,B){!function e(C,F,B,n){var U=A(g[C],g,F);if("throw"!==U.type){var s=U.arg,i=s.value;return i&&"object"==t(i)&&Q.call(i,"__await")?I.resolve(i.__await).then((function(g){e("next",g,B,n)}),(function(g){e("throw",g,B,n)})):I.resolve(i).then((function(g){s.value=g,B(s)}),(function(g){return e("throw",g,B,n)}))}n(U.arg)}(C,F,e,B)}))}return e=e?e.then(B,B):B()}})}function x(g,I,e){var t="suspendedStart";return function(C,Q){if("executing"===t)throw new Error("Generator is already running");if("completed"===t){if("throw"===C)throw Q;return h()}for(e.method=C,e.arg=Q;;){var F=e.delegate;if(F){var B=R(F,e);if(B){if(B===l)continue;return B}}if("next"===e.method)e.sent=e._sent=e.arg;else if("throw"===e.method){if("suspendedStart"===t)throw t="completed",e.arg;e.dispatchException(e.arg)}else"return"===e.method&&e.abrupt("return",e.arg);t="executing";var n=A(g,I,e);if("normal"===n.type){if(t=e.done?"completed":"suspendedYield",n.arg===l)continue;return{value:n.arg,done:e.done}}"throw"===n.type&&(t="completed",e.method="throw",e.arg=n.arg)}}}function R(g,I){var e=I.method,t=g.iterator[e];if(void 0===t)return I.delegate=null,"throw"===e&&g.iterator.return&&(I.method="return",I.arg=void 0,R(g,I),"throw"===I.method)||"return"!==e&&(I.method="throw",I.arg=new TypeError("The iterator does not provide a '"+e+"' method")),l;var C=A(t,g.iterator,I.arg);if("throw"===C.type)return I.method="throw",I.arg=C.arg,I.delegate=null,l;var Q=C.arg;return Q?Q.done?(I[g.resultName]=Q.value,I.next=g.nextLoc,"return"!==I.method&&(I.method="next",I.arg=void 0),I.delegate=null,l):Q:(I.method="throw",I.arg=new TypeError("iterator result is not an object"),I.delegate=null,l)}function S(g){var I={tryLoc:g[0]};1 in g&&(I.catchLoc=g[1]),2 in g&&(I.finallyLoc=g[2],I.afterLoc=g[3]),this.tryEntries.push(I)}function G(g){var I=g.completion||{};I.type="normal",delete I.arg,g.completion=I}function L(g){this.tryEntries=[{tryLoc:"root"}],g.forEach(S,this),this.reset(!0)}function V(g){if(g){var I=g[n];if(I)return I.call(g);if("function"==typeof g.next)return g;if(!isNaN(g.length)){var e=-1,t=function I(){for(;++e<g.length;)if(Q.call(g,e))return I.value=g[e],I.done=!1,I;return I.value=void 0,I.done=!0,I};return t.next=t}}return{next:h}}function h(){return{value:void 0,done:!0}}return r.prototype=o,F(b,"constructor",{value:o,configurable:!0}),F(o,"constructor",{value:r,configurable:!0}),r.displayName=i(o,s,"GeneratorFunction"),I.isGeneratorFunction=function(g){var I="function"==typeof g&&g.constructor;return!!I&&(I===r||"GeneratorFunction"===(I.displayName||I.name))},I.mark=function(g){return Object.setPrototypeOf?Object.setPrototypeOf(g,o):(g.__proto__=o,i(g,s,"GeneratorFunction")),g.prototype=Object.create(b),g},I.awrap=function(g){return{__await:g}},Z(m.prototype),i(m.prototype,U,(function(){return this})),I.AsyncIterator=m,I.async=function(g,e,t,C,Q){void 0===Q&&(Q=Promise);var F=new m(c(g,e,t,C),Q);return I.isGeneratorFunction(e)?F:F.next().then((function(g){return g.done?g.value:F.next()}))},Z(b),i(b,s,"Generator"),i(b,n,(function(){return this})),i(b,"toString",(function(){return"[object Generator]"})),I.keys=function(g){var I=Object(g),e=[];for(var t in I)e.push(t);return e.reverse(),function g(){for(;e.length;){var t=e.pop();if(t in I)return g.value=t,g.done=!1,g}return g.done=!0,g}},I.values=V,L.prototype={constructor:L,reset:function(g){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(G),!g)for(var I in this)"t"===I.charAt(0)&&Q.call(this,I)&&!isNaN(+I.slice(1))&&(this[I]=void 0)},stop:function(){this.done=!0;var g=this.tryEntries[0].completion;if("throw"===g.type)throw g.arg;return this.rval},dispatchException:function(g){if(this.done)throw g;var I=this;function e(e,t){return F.type="throw",F.arg=g,I.next=e,t&&(I.method="next",I.arg=void 0),!!t}for(var t=this.tryEntries.length-1;t>=0;--t){var C=this.tryEntries[t],F=C.completion;if("root"===C.tryLoc)return e("end");if(C.tryLoc<=this.prev){var B=Q.call(C,"catchLoc"),n=Q.call(C,"finallyLoc");if(B&&n){if(this.prev<C.catchLoc)return e(C.catchLoc,!0);if(this.prev<C.finallyLoc)return e(C.finallyLoc)}else if(B){if(this.prev<C.catchLoc)return e(C.catchLoc,!0)}else{if(!n)throw new Error("try statement without catch or finally");if(this.prev<C.finallyLoc)return e(C.finallyLoc)}}}},abrupt:function(g,I){for(var e=this.tryEntries.length-1;e>=0;--e){var t=this.tryEntries[e];if(t.tryLoc<=this.prev&&Q.call(t,"finallyLoc")&&this.prev<t.finallyLoc){var C=t;break}}C&&("break"===g||"continue"===g)&&C.tryLoc<=I&&I<=C.finallyLoc&&(C=null);var F=C?C.completion:{};return F.type=g,F.arg=I,C?(this.method="next",this.next=C.finallyLoc,l):this.complete(F)},complete:function(g,I){if("throw"===g.type)throw g.arg;return"break"===g.type||"continue"===g.type?this.next=g.arg:"return"===g.type?(this.rval=this.arg=g.arg,this.method="return",this.next="end"):"normal"===g.type&&I&&(this.next=I),l},finish:function(g){for(var I=this.tryEntries.length-1;I>=0;--I){var e=this.tryEntries[I];if(e.finallyLoc===g)return this.complete(e.completion,e.afterLoc),G(e),l}},catch:function(g){for(var I=this.tryEntries.length-1;I>=0;--I){var e=this.tryEntries[I];if(e.tryLoc===g){var t=e.completion;if("throw"===t.type){var C=t.arg;G(e)}return C}}throw new Error("illegal catch attempt")},delegateYield:function(g,I,e){return this.delegate={iterator:V(g),resultName:I,nextLoc:e},"next"===this.method&&(this.arg=void 0),l}},I}g.exports=C,g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I,e){"use strict";var t=e(128).default,C=e(46).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(1450)),B=t(e(1467)),n=t(e(1471)),U=t(e(1472)),s=t(e(1473)),i=t(e(1476)),c=t(e(1477)),A=t(e(1479)),l=t(e(1480)),a=t(e(1481)),r=t(e(1482)),o=t(e(1483)),d=t(e(1484)),u=t(e(748)),y=t(e(751)),b=t(e(1485)),Z=t(e(288)),m=t(e(1486)),x=t(e(289)),R=t(e(414)),S=t(e(756)),G=t(e(1487)),L=function(g){return!(0,u.default)(g)&&!(0,a.default)(g)},V=Q.pathEq(["style","overflow"],"hidden"),h=function(g){return function(I){(0,Z.default)(g,I),I.box&&g.translate(I.box.left,I.box.top);var e=I.children||[],t=D(g);return e.forEach(t),(0,x.default)(g,I),I}},D=function(g){return function(I){return Q.compose((0,x.default)(g),(0,i.default)(g),(0,G.default)(g),Q.when(L,h(g)),Q.when(r.default,(0,m.default)(g)),Q.cond([[u.default,(0,B.default)(g)],[d.default,(0,U.default)(g)],[y.default,(0,s.default)(g)],[b.default,(0,c.default)(g)],[a.default,(0,F.default)(g)],[Q.T,Q.identity]]),(0,A.default)(g),(0,l.default)(g),(0,S.default)(g),Q.when(V,(0,R.default)(g)),(0,Z.default)(g),Q.when(o.default,(0,n.default)(g)))(I)}},p=D;I.default=p},function(g,I){function e(I){return g.exports=e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"==typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g},g.exports.__esModule=!0,g.exports.default=g.exports,e(I)}g.exports=e,g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I,e){"use strict";var t=e(128).default,C=e(46).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=C(e(53)),B=t(e(1451)),n=t(e(1452)),U=t(e(1453)),s=t(e(1454)),i=t(e(1455)),c=t(e(1456)),A=t(e(743)),l=t(e(1458)),a=t(e(745)),r=t(e(1459)),o=t(e(747)),d=t(e(748)),u=t(e(749)),y=t(e(750)),b=t(e(1460)),Z=t(e(751)),m=t(e(1461)),x=t(e(752)),R=t(e(753)),S=t(e(754)),G=t(e(755)),L=t(e(1462)),V=t(e(288)),h=t(e(289)),D=t(e(414)),p=t(e(756)),E=t(e(1463)),N=Q.tap((function(g){console.warn("SVG node of type "+g.type+" is not currenty supported")})),W=function(g,I,e){return Q.pathOr(g,["props",I],e)},f=Q.pathEq(["props","fill","type"],F.LinearGradient),X=Q.pathEq(["props","fill","type"],F.RadialGradient),J=function(g){return Q.tap((function(I){var e=(0,E.default)(I),t=W(null,"fill",I),C=Q.pathOr(0,["props","x1"],t),F=Q.pathOr(0,["props","y1"],t),B=Q.pathOr(1,["props","x2"],t),n=Q.pathOr(0,["props","y2"],t),U=e[2]-e[0],s=e[3]-e[1],i=e[0],c=e[1],A=U*C+i,l=s*F+c,a=U*B+i,r=s*n+c,o=g.linearGradient(A,l,a,r);t.children.forEach((function(g){o.stop(g.props.offset,g.props.stopColor,g.props.stopOpacity)})),g.fill(o)}))},v=function(g){return Q.tap((function(I){var e=(0,E.default)(I),t=W(null,"fill",I),C=Q.pathOr(.5,["props","cx"],t),F=Q.pathOr(.5,["props","cy"],t),B=Q.pathOr(C,["props","fx"],t),n=Q.pathOr(F,["props","fy"],t),U=Q.pathOr(.5,["props","r"],t),s=e[2]-e[0],i=e[3]-e[1],c=e[0],A=e[1],l=U*s,a=s*C+c,r=i*F+A,o=s*B+c,d=i*n+A,u=g.radialGradient(o,d,0,a,r,l);t.children.forEach((function(g){u.stop(g.props.offset,g.props.stopColor,g.props.stopOpacity)})),g.fill(u)}))},k=function(g){return Q.tap((function(I){var e=W(null,"fill",I);e&&g.fillColor(e)}))},H=function(g){return Q.cond([[b.default,Q.identity],[L.default,Q.identity],[o.default,(0,B.default)(g)],[u.default,(0,n.default)(g)],[y.default,(0,U.default)(g)],[m.default,(0,s.default)(g)],[d.default,(0,c.default)(g)],[x.default,(0,i.default)(g)],[Z.default,(0,r.default)(g)],[R.default,(0,A.default)(g)],[S.default,(0,l.default)(g)],[G.default,(0,a.default)(g)],[Q.T,N]])},M=function(g){return Q.compose(function(g){return function(I){var e=Q.propOr({},"props",I);return e.fill&&e.stroke?g.fillAndStroke(e.fillRule):e.fill?g.fill(e.fillRule):e.stroke?g.stroke():(g.save(),g.opacity(0),g.fill(null),g.restore()),I}}(g),H(g),(0,p.default)(g),function(g){return function(I){var e=W(null,"opacity",I);return Q.isNil(e)||g.opacity(e),I}}(g),function(g){return function(I){var e=W(null,"fillOpacity",I);return Q.isNil(e)||g.fillOpacity(e),I}}(g),function(g){return function(I){var e=W(null,"strokeOpacity",I);return Q.isNil(e)||g.strokeOpacity(e),I}}(g),function(g){return Q.cond([[f,J(g)],[X,v(g)],[Q.T,k(g)]])}(g),function(g){return function(I){var e=W(null,"stroke",I);return e&&g.strokeColor(e),I}}(g),function(g){return function(I){var e=W(0,"strokeWidth",I);return e&&g.lineWidth(e),I}}(g),function(g){return function(I){var e=W(null,"strokeLinejoin",I);return e&&g.lineJoin(e),I}}(g),function(g){return function(I){var e=W(null,"strokeDasharray",I);return e&&g.dash(Q.split(",",e)),I}}(g),function(g){return function(I){var e=W(null,"strokeLinecap",I);return e&&g.lineCap(e),I}}(g))},Y=function g(I){return function(e){return Q.compose(Q.map(Q.compose((0,h.default)(I),g(I),M(I),function(g){return function(I){var e=Q.path(["props","clipPath"],I);return e&&Q.compose((function(){return g.clip()}),Q.forEach(H(g)),Q.propOr([],"children"))(e),I}}(I),(0,V.default)(I))),Q.propOr([],"children"))(e)}},w=Q.pathOr(0),T=Q.curryN(2,(function(g,I){return Q.compose((0,h.default)(g),Y(g),function(g){return function(I){var e=I.box,t=e.width,C=e.height,Q=I.props,F=Q.viewBox,B=Q.preserveAspectRatio,n=void 0===B?{}:B,U=n.meetOrSlice,s=void 0===U?"meet":U,i=n.align,c=void 0===i?"xMidYMid":i;if(null==F||null==t||null==C)return I;var A=(null===F||void 0===F?void 0:F.minX)||0,l=(null===F||void 0===F?void 0:F.minY)||0,a=(null===F||void 0===F?void 0:F.maxX)||t,r=(null===F||void 0===F?void 0:F.maxY)||C,o=a/r,d=t/C,u=t/a,y=C/r;if("none"===c)return g.scale(u,y),g.translate(-A,-l),I;if(o<d&&"meet"===s||o>=d&&"slice"===s)switch(g.scale(y,y),c){case"xMinYMin":case"xMinYMid":case"xMinYMax":g.translate(-A,-l);break;case"xMidYMin":case"xMidYMid":case"xMidYMax":g.translate(-A-(a-t*r/C)/2,-l);break;default:g.translate(-A-(a-t*r/C),-l)}else switch(g.scale(u,u),c){case"xMinYMin":case"xMidYMin":case"xMaxYMin":g.translate(-A,-l);break;case"xMinYMid":case"xMidYMid":case"xMaxYMid":g.translate(-A,-l-(r-C*a/t)/2);break;default:g.translate(-A,-l-(r-C*a/t))}return I}}(g),function(g){return function(I){var e=I.box,t=e.top,C=e.left,Q=w("paddingLeft",I.box),F=w("paddingTop",I.box);return g.translate(C+Q,t+F),I}}(g),(0,D.default)(g),(0,V.default)(g))(I),I}));I.default=T},function(g,I,e){"use strict";var t=e(46).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=function(g){return C.tap((function(I){C.path(["props","d"],I)&&g.path(I.props.d)}))};I.default=Q},function(g,I,e){"use strict";var t=e(46).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=(Math.sqrt(2)-1)/3*4,F=function(g,I,e){return C.pathOr(g,["props",I],e)},B=function(g){return function(I){var e=F(0,"x",I),t=F(0,"y",I),C=F(0,"rx",I),B=F(0,"ry",I),n=F(0,"width",I),U=F(0,"height",I);if(!n||!U)return I;if(C&&B){var s=C*Q,i=B*Q;g.moveTo(e+C,t),g.lineTo(e-C+n,t),g.bezierCurveTo(e-C+n+s,t,e+n,t+B-i,e+n,t+B),g.lineTo(e+n,t+U-B),g.bezierCurveTo(e+n,t+U-B+i,e-C+n+s,t+U,e-C+n,t+U),g.lineTo(e+C,t+U),g.bezierCurveTo(e+C-s,t+U,e,t+U-B+i,e,t+U-B),g.lineTo(e,t+B),g.bezierCurveTo(e,t+B-i,e+C-s,t,e+C,t)}else g.moveTo(e,t),g.lineTo(e+n,t),g.lineTo(e+n,t+U),g.lineTo(e,t+U);return g.closePath(),I}};I.default=B},function(g,I,e){"use strict";var t=e(46).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=function(g,I){return C.path(["props",g],I)},F=function(g){return function(I){var e=Q("x1",I),t=Q("y1",I),C=Q("x2",I),F=Q("y2",I);return g.moveTo(e,t),g.lineTo(C,F),I}};I.default=F},function(g,I,e){"use strict";var t=e(46).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=function(){return C.identity};I.default=Q},function(g,I,e){"use strict";var t=e(46).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=e(743),F=function(g,I){return C.path(["props",g],I)},B=C.curryN(2,(function(g,I){var e=F("cx",I),t=F("cy",I),C=F("r",I);return(0,Q.drawEllipse)(g,e,t,C,C),I}));I.default=B},function(g,I,e){"use strict";var t=e(128).default,C=e(46).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(343)),B=t(e(344)),n=t(e(744)),U=function(g,I,e,t){g.save();var C=Q.pathOr(0,["box","x"],I),U=Q.pathOr(0,["box","y"],I),s=Q.pathOr(1,["runs",0,"attributes","font"],I),i=Q.pathOr(1,["runs",0,"attributes","scale"],I),c=(0,B.default)(I),A=s.ascent*i,l=s.xHeight*i,a=s.descent*i,r=s.capHeight*i,o=C,d=U;switch(e){case"middle":o=C-c/2;break;case"end":o=C-c;break;default:o=C}switch(t){case"middle":case"central":d=U+r/2;break;case"hanging":d=U+r;break;case"mathematical":d=U+l;break;case"text-after-edge":d=U+a;break;case"text-before-edge":d=U+A;break;default:d=U}g.translate(o,d),I.runs.forEach((function(I){return function(g,I){var e=(0,F.default)(I),t=I.attributes,C=t.font,Q=t.fontSize,B=t.color,U=t.opacity;if(g.fillColor(B),g.fillOpacity(U),C.sbix||C.COLR&&C.CPAL){g.save(),g.translate(0,-I.ascent);for(var s=0;s<I.glyphs.length;s+=1){var i=I.positions[s],c=I.glyphs[s];g.save(),g.translate(i.xOffset,i.yOffset),c.render(g,Q),g.restore(),g.translate(i.xAdvance,i.yAdvance)}g.restore()}else{g.font("string"===typeof C.name?C.name:C,Q);try{(0,n.default)(g,I.glyphs,I.positions,0,0)}catch(A){console.log(A)}}g.translate(e,0)}(g,I)})),g.restore()},s=function(g){return function(I){return I.children.forEach((function(I){return U(g,I.lines[0],I.props.textAnchor,I.props.dominantBaseline)})),I}};I.default=s},function(g,I){function e(I){return g.exports=e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"==typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g},g.exports.__esModule=!0,g.exports.default=g.exports,e(I)}g.exports=e,g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I,e){"use strict";var t=e(128).default,C=e(46).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(745)),B=function(g){return Q.compose(function(g){return Q.tap((function(){return g.closePath()}))}(g),(0,F.default)(g))};I.default=B},function(g,I,e){"use strict";var t=e(128).default,C=e(46).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(288)),B=t(e(289)),n=Q.curryN(2,(function(g,I){return Q.compose((0,B.default)(g),function(g){return function(I){var e=I.props,t=e.x,C=e.y,Q=I.style,F=Q.width,B=Q.height,n=Q.opacity,U=I.box.paddingLeft||0,s=I.box.paddingLeft||0;return I.image.data&&(0!==F&&0!==B?g.fillOpacity(n||1).image(I.image.data,t+s,C+U,{width:F,height:B}):console.warn("Image with src '"+I.props.href+"' skipped due to invalid dimensions")),I}}(g),(0,F.default)(g))(I),I}));I.default=n},function(g,I,e){"use strict";var t=e(46).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=t(e(53)),F=C.propEq("type",Q.Tspan);I.default=F},function(g,I,e){"use strict";var t=e(46).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=t(e(53)),F=C.propEq("type",Q.G);I.default=F},function(g,I,e){"use strict";var t=e(46).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=t(e(53)),F=C.propEq("type",Q.TextInstance);I.default=F},function(g,I,e){"use strict";var t=e(128).default,C=e(46).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(1464)),B=t(e(1465)),n=t(e(1466)),U=t(e(749)),s=t(e(750)),i=t(e(747)),c=t(e(752)),A=t(e(754)),l=t(e(753)),a=t(e(755)),r=t(e(746)),o=Q.reduce(Q.max,-1/0),d=Q.reduce(Q.min,1/0),u=function(g){var I=Q.compose(r.default,Q.pathOr([],["props","points"]))(g),e=Q.pluck(0,I),t=Q.pluck(1,I);return[d(e),d(t),o(e),o(t)]},y=Q.cond([[U.default,function(g){var I=Q.pathOr(0,["props","x"],g),e=Q.pathOr(0,["props","y"],g);return[I,e,I+Q.pathOr(0,["props","width"],g),e+Q.pathOr(0,["props","height"],g)]}],[s.default,function(g){var I=Q.pathOr(0,["props","x1"],g),e=Q.pathOr(0,["props","y1"],g),t=Q.pathOr(0,["props","x2"],g),C=Q.pathOr(0,["props","y2"],g);return[Q.min(I,t),Q.min(e,C),Q.max(I,t),Q.max(e,C)]}],[i.default,function(g){var I=Q.compose(n.default,F.default,B.default,Q.pathOr("",["props","d"]))(g);if(!I.length)return[0,0,0,0];for(var e=[1/0,1/0,-1/0,-1/0],t=0,C=I.length;t<C;t+=1)for(var U=I[t].slice(1),s=0;s<U.length;s+=2)U[s+0]<e[0]&&(e[0]=U[s+0]),U[s+1]<e[1]&&(e[1]=U[s+1]),U[s+0]>e[2]&&(e[2]=U[s+0]),U[s+1]>e[3]&&(e[3]=U[s+1]);return e}],[c.default,function(g){var I=Q.pathOr(0,["props","r"],g),e=Q.pathOr(0,["props","cx"],g),t=Q.pathOr(0,["props","cy"],g);return[e-I,t-I,e+I,t+I]}],[l.default,function(g){var I=Q.pathOr(0,["props","cx"],g),e=Q.pathOr(0,["props","cy"],g),t=Q.pathOr(0,["props","rx"],g),C=Q.pathOr(0,["props","ry"],g);return[I-t,e-C,I+t,e+C]}],[A.default,u],[a.default,u],[Q.T,Q.always([0,0,0,0])]]);I.default=y},function(g,I){g.exports=function(g){var I=0,e=0,t=0,C=0;return g.map((function(g){var Q=(g=g.slice())[0],F=Q.toUpperCase();if(Q!=F)switch(g[0]=F,Q){case"a":g[6]+=t,g[7]+=C;break;case"v":g[1]+=C;break;case"h":g[1]+=t;break;default:for(var B=1;B<g.length;)g[B++]+=t,g[B++]+=C}switch(F){case"Z":t=I,C=e;break;case"H":t=g[1];break;case"V":C=g[1];break;case"M":t=I=g[1],C=e=g[2];break;default:t=g[g.length-2],C=g[g.length-1]}return g}))}},function(g,I){g.exports=function(g){var I=[];return g.replace(t,(function(g,t,Q){var F=t.toLowerCase();for(Q=function(g){var I=g.match(C);return I?I.map(Number):[]}(Q),"m"==F&&Q.length>2&&(I.push([t].concat(Q.splice(0,2))),F="l",t="m"==t?"l":"L");;){if(Q.length==e[F])return Q.unshift(t),I.push(Q);if(Q.length<e[F])throw new Error("malformed path data");I.push([t].concat(Q.splice(0,e[F])))}})),I};var e={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},t=/([astvzqmhlc])([^astvzqmhlc]*)/gi;var C=/-?[0-9]*\.?[0-9]+(?:e[-+]?\d+)?/gi},function(g,I,e){"use strict";e.r(I),e.d(I,"default",(function(){return C}));var t=e(903);function C(g){for(var I,e=[],C=0,B=0,n=0,U=0,s=null,i=null,c=0,A=0,l=0,a=g.length;l<a;l++){var r=g[l],o=r[0];switch(o){case"M":n=r[1],U=r[2];break;case"A":var d=t({px:c,py:A,cx:r[6],cy:r[7],rx:r[1],ry:r[2],xAxisRotation:r[3],largeArcFlag:r[4],sweepFlag:r[5]});if(!d.length)continue;for(var u,y=0;y<d.length;y++)r=["C",(u=d[y]).x1,u.y1,u.x2,u.y2,u.x,u.y],y<d.length-1&&e.push(r);break;case"S":var b=c,Z=A;"C"!=I&&"S"!=I||(b+=b-C,Z+=Z-B),r=["C",b,Z,r[1],r[2],r[3],r[4]];break;case"T":"Q"==I||"T"==I?(s=2*c-s,i=2*A-i):(s=c,i=A),r=F(c,A,s,i,r[1],r[2]);break;case"Q":s=r[1],i=r[2],r=F(c,A,r[1],r[2],r[3],r[4]);break;case"L":r=Q(c,A,r[1],r[2]);break;case"H":r=Q(c,A,r[1],A);break;case"V":r=Q(c,A,c,r[1]);break;case"Z":r=Q(c,A,n,U)}I=o,c=r[r.length-2],A=r[r.length-1],r.length>4?(C=r[r.length-4],B=r[r.length-3]):(C=c,B=A),e.push(r)}return e}function Q(g,I,e,t){return["C",g,I,e,t,e,t]}function F(g,I,e,t,C,Q){return["C",g/3+2/3*e,I/3+2/3*t,C/3+2/3*e,Q/3+2/3*t,C,Q]}},function(g,I,e){"use strict";var t=e(128).default,C=e(46).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(757)),B=t(e(538)),n=t(e(343)),U=t(e(539)),s=t(e(744)),i=t(e(758)),c=/^#.+/,A=function(g,I){var e=I.xOffset,t=void 0===e?0:e,C=I.yOffset,Q=void 0===C?0:C,F=I.width,B=I.height,n=I.image;g.translate(-F+t,-B+Q),g.image(n,0,0,{fit:[F,B],align:"center",valign:"bottom"})},l=function(g,I,e){var t=I.attributes,C=t.font,U=t.fontSize,l=t.link,a=(0,i.default)(I.attributes.color),r=Q.defaultTo(a.opacity,I.attributes.opacity),o=(0,F.default)(I),d=(0,B.default)(I),u=(0,n.default)(I);if(e.outlineRuns&&g.rect(0,-o,u,o).stroke(),g.fillColor(a.value),g.fillOpacity(r),l&&(l.match(c)?g.goTo(0,-o-d,u,o,l.slice(1)):g.link(0,-o-d,u,o,l)),function(g,I){g.save();for(var e=I.attributes.font,t=e.glyphForCodePoint(32),C=e.glyphForCodePoint(65532),Q=0,F=0;F<I.glyphs.length;F+=1){var B=I.positions[F],n=I.glyphs[F];Q+=B.xAdvance||0,n.id===C.id&&I.attributes.attachment&&(g.translate(Q,B.yOffset||0),A(g,I.attributes.attachment),I.glyphs[F]=t,Q=0)}g.restore()}(g,I),C.sbix||C.COLR&&C.CPAL){g.save(),g.translate(0,-I.ascent);for(var y=0;y<I.glyphs.length;y+=1){var b=I.positions[y],Z=I.glyphs[y];g.save(),g.translate(b.xOffset,b.yOffset),Z.render(g,U),g.restore(),g.translate(b.xAdvance,b.yAdvance)}g.restore()}else{g.font("string"===typeof C.name?C.name:C,U);try{(0,s.default)(g,I.glyphs,I.positions,0,0)}catch(m){console.log(m)}}g.translate(u,0)},a=function(g,I,e){var t=(0,i.default)(e);g.save(),g.fillOpacity(t.opacity),g.rect(I.x,I.y,I.width,I.height),g.fill(t.value),g.restore()},r=function(g,I){if(g.save(),g.lineWidth(I.rect.height),g.strokeOpacity(I.opacity),/dashed/.test(I.style)?g.dash(3*I.rect.height):/dotted/.test(I.style)&&g.dash(I.rect.height),/wavy/.test(I.style)){var e=Math.max(2,I.rect.height),t=1.1*e,C=Math.floor(I.rect.width/(2*t));t+=(I.rect.width-2*C*t)/C/2;var Q=I.rect.y+e,F=I.rect.y-e,B=I.rect.x;g.moveTo(I.rect.x,I.rect.y);for(var n=0;n<C;n+=1)g.bezierCurveTo(B+t,Q,B+t,F,B+2*t,I.rect.y),B+=2*t}else g.moveTo(I.rect.x,I.rect.y),g.lineTo(I.rect.x+I.rect.width,I.rect.y),/double/.test(I.style)&&(g.moveTo(I.rect.x,I.rect.y+2*I.rect.height),g.lineTo(I.rect.x+I.rect.width,I.rect.y+2*I.rect.height));g.stroke(I.color),g.restore()},o=function(g,I,e){I.forEach((function(I){!function(g,I,e){var t=(0,U.default)(I);e.outlineLines&&g.rect(I.box.x,I.box.y,I.box.width,I.box.height).stroke(),g.save(),g.translate(I.box.x,I.box.y+t);for(var C=0;C<I.runs.length;C+=1){var Q=I.runs[C],F=C===I.runs.length-1;if(Q.attributes.backgroundColor){var B=F?I.overflowRight:0,s={x:0,y:-t,height:I.box.height,width:(0,n.default)(Q)-B};a(g,s,Q.attributes.backgroundColor)}l(g,Q,e)}g.restore(),g.save(),g.translate(I.box.x,I.box.y);for(var i=0;i<I.decorationLines.length;i+=1){var c=I.decorationLines[i];r(g,c)}g.restore()}(g,I,e)}))},d=Q.curryN(2,(function(g,I){var e=I.box,t=e.top,C=e.left,F=[I.lines],B=Q.pathOr(0,["box","paddingTop"],I),n=Q.pathOr(0,["box","paddingLeft"],I),U=I.lines[0]?I.lines[0].box.y:0,s=I.alignOffset||0;return g.save(),g.translate(C+n-s,t+B-U),F.forEach((function(I){o(g,I,{})})),g.restore(),I}));I.default=d},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(255)),B=Q.converge(Q.multiply,[F.default,Q.pathOr(0,["attributes","font","lineGap"])]);I.default=B},function(g,I,e){var t=e(759),C=e(760),Q=Object.hasOwnProperty,F=Object.create(null);for(var B in t)Q.call(t,B)&&(F[t[B]]=B);var n=g.exports={to:{},get:{}};function U(g,I,e){return Math.min(Math.max(I,g),e)}function s(g){var I=Math.round(g).toString(16).toUpperCase();return I.length<2?"0"+I:I}n.get=function(g){var I,e;switch(g.substring(0,3).toLowerCase()){case"hsl":I=n.get.hsl(g),e="hsl";break;case"hwb":I=n.get.hwb(g),e="hwb";break;default:I=n.get.rgb(g),e="rgb"}return I?{model:e,value:I}:null},n.get.rgb=function(g){if(!g)return null;var I,e,C,F=[0,0,0,1];if(I=g.match(/^#([a-f0-9]{6})([a-f0-9]{2})?$/i)){for(C=I[2],I=I[1],e=0;e<3;e++){var B=2*e;F[e]=parseInt(I.slice(B,B+2),16)}C&&(F[3]=parseInt(C,16)/255)}else if(I=g.match(/^#([a-f0-9]{3,4})$/i)){for(C=(I=I[1])[3],e=0;e<3;e++)F[e]=parseInt(I[e]+I[e],16);C&&(F[3]=parseInt(C+C,16)/255)}else if(I=g.match(/^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/)){for(e=0;e<3;e++)F[e]=parseInt(I[e+1],0);I[4]&&(I[5]?F[3]=.01*parseFloat(I[4]):F[3]=parseFloat(I[4]))}else{if(!(I=g.match(/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/)))return(I=g.match(/^(\w+)$/))?"transparent"===I[1]?[0,0,0,0]:Q.call(t,I[1])?((F=t[I[1]])[3]=1,F):null:null;for(e=0;e<3;e++)F[e]=Math.round(2.55*parseFloat(I[e+1]));I[4]&&(I[5]?F[3]=.01*parseFloat(I[4]):F[3]=parseFloat(I[4]))}for(e=0;e<3;e++)F[e]=U(F[e],0,255);return F[3]=U(F[3],0,1),F},n.get.hsl=function(g){if(!g)return null;var I=g.match(/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(I){var e=parseFloat(I[4]);return[(parseFloat(I[1])%360+360)%360,U(parseFloat(I[2]),0,100),U(parseFloat(I[3]),0,100),U(isNaN(e)?1:e,0,1)]}return null},n.get.hwb=function(g){if(!g)return null;var I=g.match(/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(I){var e=parseFloat(I[4]);return[(parseFloat(I[1])%360+360)%360,U(parseFloat(I[2]),0,100),U(parseFloat(I[3]),0,100),U(isNaN(e)?1:e,0,1)]}return null},n.to.hex=function(){var g=C(arguments);return"#"+s(g[0])+s(g[1])+s(g[2])+(g[3]<1?s(Math.round(255*g[3])):"")},n.to.rgb=function(){var g=C(arguments);return g.length<4||1===g[3]?"rgb("+Math.round(g[0])+", "+Math.round(g[1])+", "+Math.round(g[2])+")":"rgba("+Math.round(g[0])+", "+Math.round(g[1])+", "+Math.round(g[2])+", "+g[3]+")"},n.to.rgb.percent=function(){var g=C(arguments),I=Math.round(g[0]/255*100),e=Math.round(g[1]/255*100),t=Math.round(g[2]/255*100);return g.length<4||1===g[3]?"rgb("+I+"%, "+e+"%, "+t+"%)":"rgba("+I+"%, "+e+"%, "+t+"%, "+g[3]+")"},n.to.hsl=function(){var g=C(arguments);return g.length<4||1===g[3]?"hsl("+g[0]+", "+g[1]+"%, "+g[2]+"%)":"hsla("+g[0]+", "+g[1]+"%, "+g[2]+"%, "+g[3]+")"},n.to.hwb=function(){var g=C(arguments),I="";return g.length>=4&&1!==g[3]&&(I=", "+g[3]),"hwb("+g[0]+", "+g[1]+"%, "+g[2]+"%"+I+")"},n.to.keyword=function(g){return F[g.slice(0,3)]}},function(g,I){g.exports=function(g){return!(!g||"string"===typeof g)&&(g instanceof Array||Array.isArray(g)||g.length>=0&&(g.splice instanceof Function||Object.getOwnPropertyDescriptor(g,g.length-1)&&"String"!==g.constructor.name))}},function(g,I,e){"use strict";var t=e(46).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)).curryN(2,(function(g,I){var e=I.box,t=e.width,C=e.height;return g.addPage({size:[t,C],margin:0}),I}));I.default=C},function(g,I,e){"use strict";var t=e(46).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)).curryN(2,(function(g,I){var e,t=I.box,C=t.top,Q=t.left,F=(null===I||void 0===I||null===(e=I.children)||void 0===e?void 0:e[0].value)||"";return g.note(Q,C,0,0,F),I}));I.default=C},function(g,I,e){"use strict";var t=e(128).default,C=e(46).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(288)),B=t(e(289)),n=t(e(414)),U=t(e(1474)),s=Q.curryN(2,(function(g,I){return Q.compose((0,B.default)(g),function(g){return function(I){var e,t,C,Q,F=I.box,B=F.left,n=F.top,s=null===(e=I.style)||void 0===e?void 0:e.opacity,i=null===(t=I.style)||void 0===t?void 0:t.objectFit,c=null===(C=I.style)||void 0===C?void 0:C.objectPositionX,A=null===(Q=I.style)||void 0===Q?void 0:Q.objectPositionY,l=I.box.paddingTop||0,a=I.box.paddingRight||0,r=I.box.paddingBottom||0,o=I.box.paddingLeft||0,d=(0,U.default)(i,I.box.width-o-a,I.box.height-l-r,I.image.width,I.image.height,c,A),u=d.width,y=d.height,b=d.xOffset,Z=d.yOffset;return I.image.data&&(0!==u&&0!==y?g.fillOpacity(s||1).image(I.image.data,B+o+b,n+l+Z,{width:u,height:y}):console.warn("Image with src '"+I.props.src+"' skipped due to invalid dimensions")),I}}(g),(0,n.default)(g),(0,F.default)(g))(I),I}));I.default=s},function(g,I,e){"use strict";var t=e(128).default;I.__esModule=!0,I.default=void 0;var C=t(e(1475)),Q=function(g){return!Number.isNaN(parseFloat(g))&&Number.isFinite(g)},F=function(g,I,e,t,F,B){var n=g/I,U=e/t,s=(0,C.default)(F),i=(0,C.default)(B),c=s?s.percent:.5,A=i?i.percent:.5;if(n>U){var l=I,a=l*U,r=Q(B)?B:0;return{width:a,height:l,xOffset:Q(F)?F:(g-a)*c,yOffset:r}}var o=g,d=o/U,u=Q(F)?F:0;return{width:o,height:d,yOffset:Q(B)?B:(I-d)*A,xOffset:u}},B=function(g,I,e,t,F,B){var n=e,U=t,s=(0,C.default)(F),i=(0,C.default)(B),c=s?s.percent:.5,A=i?i.percent:.5;return{width:n,height:U,xOffset:Q(F)?F:(g-n)*c,yOffset:Q(B)?B:(I-U)*A}},n=function(g,I,e,t,n,U,s){switch(void 0===g&&(g="fill"),g){case"contain":return F(I,e,t,n,U,s);case"cover":return function(g,I,e,t,F,B){var n=e/t,U=g/I,s=(0,C.default)(F),i=(0,C.default)(B),c=s?s.percent:.5,A=i?i.percent:.5;if(U>n){var l=g,a=l/n,r=Q(F)?F:0;return{width:l,height:a,yOffset:Q(B)?B:(I-a)*A,xOffset:r}}var o=I*n;return{width:o,height:I,xOffset:Q(F)?F:(g-o)*c,yOffset:Q(B)?B:0}}(I,e,t,n,U,s);case"none":return B(I,e,t,n,U,s);case"scale-down":return function(g,I,e,t,C,Q){var n=F(g,I,e,t,C,Q),U=B(g,I,e,t,C,Q);return n.width<U.width?n:U}(I,e,t,n,U,s);default:return function(g,I,e,t){return{width:g,height:I,xOffset:(0,C.default)(e)?0:e||0,yOffset:(0,C.default)(t)?0:t||0}}(I,e,U,s)}};I.default=n},function(g,I,e){"use strict";I.__esModule=!0,I.default=void 0;var t=function(g){var I=function(g){return/((-)?\d+\.?\d*)%/g.exec(g)}(g);if(I){var e=parseFloat(I[1],10);return{percent:e/100,value:e}}return null};I.default=t},function(g,I,e){"use strict";var t=e(128).default,C=e(46).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(288)),B=t(e(289)),n=Q.pathEq(["props","debug"],!0),U=function(g){return{marginLeft:"auto"===g.marginLeft?0:g.marginLeft,marginTop:"auto"===g.marginTop?0:g.marginTop,marginRight:"auto"===g.marginRight?0:g.marginRight,marginBottom:"auto"===g.marginBottom?0:g.marginBottom}},s=function(g){return Q.tap(Q.when(n,Q.compose((0,B.default)(g),function(g){return function(I){return I.origin&&g.circle(I.origin.left,I.origin.top,3).fill("red").circle(I.origin.left,I.origin.top,5).stroke("red"),I}}(g),function(g){return function(I){var e=I.box,t=e.left,C=e.top,Q=e.width,F=e.height,B=U(I.box),n=B.marginLeft,s=void 0===n?0:n,i=B.marginTop,c=void 0===i?0:i,A=B.marginRight,l=void 0===A?0:A,a=B.marginBottom,r=void 0===a?0:a,o=Math.round(Q+s+l),d=Math.round(F+c+r);return g.fontSize(6).opacity(1).fillColor("black").text(o+" x "+d,t-s,Math.max(C-c-4,1)),I}}(g),function(g){return function(I){var e=I.box,t=e.left,C=e.top,Q=e.width,F=e.height,B=U(I.box),n=B.marginLeft,s=void 0===n?0:n,i=B.marginTop,c=void 0===i?0:i,A=B.marginRight,l=void 0===A?0:A,a=B.marginBottom,r=void 0===a?0:a;return g.fillColor("#f8cca1").opacity(.5),g.rect(t,C-c,Q,c).fill(),g.rect(t-s,C-c,s,F+c+r).fill(),g.rect(t+Q,C-c,l,F+c+r).fill(),g.rect(t,C+F,Q,r).fill(),I}}(g),function(g){return function(I){var e=I.box,t=e.left,C=e.top,Q=e.width,F=e.height,B=e.paddingLeft,n=void 0===B?0:B,U=e.paddingTop,s=void 0===U?0:U,i=e.paddingRight,c=void 0===i?0:i,A=e.paddingBottom,l=void 0===A?0:A,a=e.borderLeftWidth,r=void 0===a?0:a,o=e.borderTopWidth,d=void 0===o?0:o,u=e.borderRightWidth,y=void 0===u?0:u,b=e.borderBottomWidth,Z=void 0===b?0:b;return g.fillColor("#c4deb9").opacity(.5),g.rect(t+n+r,C+d,Q-c-n-r-y,s).fill(),g.rect(t+r,C+d,n,F-d-Z).fill(),g.rect(t+Q-c-y,C+d,c,F-d-Z).fill(),g.rect(t+n+r,C+F-l-Z,Q-c-n-r-y,l).fill(),I}}(g),function(g){return function(I){var e=I.box,t=e.left,C=e.top,Q=e.width,F=e.height,B=e.paddingLeft,n=void 0===B?0:B,U=e.paddingTop,s=void 0===U?0:U,i=e.paddingRight,c=void 0===i?0:i,A=e.paddingBottom,l=void 0===A?0:A,a=e.borderLeftWidth,r=void 0===a?0:a,o=e.borderTopWidth,d=void 0===o?0:o,u=e.borderRightWidth,y=void 0===u?0:u,b=e.borderBottomWidth,Z=void 0===b?0:b;return g.fillColor("#a1c6e7").opacity(.5).rect(t+n+r,C+s+d,Q-n-c-y-r,F-s-l-d-Z).fill(),I}}(g),(0,F.default)(g))))};I.default=s},function(g,I,e){"use strict";var t=e(46).default,C=e(128).default;I.__esModule=!0,I.default=void 0;var Q=C(e(1478)),F=t(e(20)),B=["dash","clip","save","path","fill","font","text","rect","scale","moveTo","lineTo","stroke","rotate","circle","lineCap","opacity","ellipse","polygon","restore","lineJoin","fontSize","fillColor","lineWidth","translate","miterLimit","strokeColor","fillOpacity","roundedRect","fillAndStroke","strokeOpacity","bezierCurveTo","quadraticCurveTo","linearGradient","radialGradient"],n=F.propOr(0),U=F.curryN(2,(function(g,I){var e=I.box,t=e.top,C=e.left,F=e.width,U=e.height,s=n("paddingTop",I.box),i=n("paddingLeft",I.box),c=F-i-n("paddingRight",I.box),A=U-s-n("paddingBottom",I.box);return c&&A||console.warn("Canvas element has null width or height. Please provide valid values via the `style` prop in order to correctly render it."),g.save().translate(C+i,t+s),I.props.paint&&I.props.paint(function(g){var I=B.reduce((function(e,t){var C;return(0,Q.default)({},e,((C={})[t]=function(){return g[t].apply(g,arguments),I},C))}),{});return I}(g),c,A),g.restore(),I}));I.default=U},function(g,I){function e(){return g.exports=e=Object.assign?Object.assign.bind():function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g},g.exports.__esModule=!0,g.exports.default=g.exports,e.apply(this,arguments)}g.exports=e,g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I,e){"use strict";var t=e(46).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=(Math.sqrt(2)-1)/3*4,F=C.curryN(2,(function(g,I){if(!function(g){return g.box&&(g.box.borderTopWidth||g.box.borderRightWidth||g.box.borderBottomWidth||g.box.borderLeftWidth)}(I))return I;var e=I.box,t=e.width,C=e.height,F=e.borderTopWidth,B=e.borderLeftWidth,n=e.borderRightWidth,U=e.borderBottomWidth,s=I.style,i=s.opacity,c=s.borderTopLeftRadius,A=void 0===c?0:c,l=s.borderTopRightRadius,a=void 0===l?0:l,r=s.borderBottomLeftRadius,o=void 0===r?0:r,d=s.borderBottomRightRadius,u=void 0===d?0:d,y=s.borderTopColor,b=void 0===y?"black":y,Z=s.borderTopStyle,m=void 0===Z?"solid":Z,x=s.borderLeftColor,R=void 0===x?"black":x,S=s.borderLeftStyle,G=void 0===S?"solid":S,L=s.borderRightColor,V=void 0===L?"black":L,h=s.borderRightStyle,D=void 0===h?"solid":h,p=s.borderBottomColor,E=void 0===p?"black":p,N=s.borderBottomStyle,W={borderTopColor:b,borderTopWidth:F,borderTopStyle:m,borderLeftColor:R,borderLeftWidth:B,borderLeftStyle:G,borderRightColor:V,borderRightWidth:n,borderRightStyle:D,borderBottomColor:E,borderBottomWidth:U,borderBottomStyle:void 0===N?"solid":N,borderTopLeftRadius:A,borderTopRightRadius:a,borderBottomLeftRadius:o,borderBottomRightRadius:u},f=Math.min(a,.5*t,.5*C),X=Math.min(A,.5*t,.5*C),J=Math.min(u,.5*t,.5*C),v=Math.min(o,.5*t,.5*C);return g.save(),g.strokeOpacity(i),F&&(g.save(),function(g,I,e,t,C){var F=I.top,B=I.left,n=I.width,U=I.height,s=e.borderTopWidth,i=e.borderRightWidth,c=e.borderLeftWidth;g.moveTo(B+C,F),g.lineTo(B+n-t,F);var A=t*(1-Q);g.bezierCurveTo(B+n-A,F,B+n,F+A,B+n,F+t);var l=F+Math.max(s,t);g.lineTo(B+n,l),g.lineTo(B+n-i,l);var a=Math.max(t-i,0),r=Math.max(t-s,0),o=a*(1-Q),d=r*(1-Q);g.bezierCurveTo(B+n-i,F+s+d,B+n-i-o,F+s,B+n-i-a,F+s),g.lineTo(B+Math.max(C,c),F+s);var u=Math.max(C-c,0),y=Math.max(C-s,0),b=u*(1-Q),Z=y*(1-Q),m=F+Math.max(s,C);g.bezierCurveTo(B+c+b,F+s,B+c,F+s+Z,B+c,m),g.lineTo(B,m),g.lineTo(B,F+C);var x=C*(1-Q);if(g.bezierCurveTo(B,F+x,B+x,F,B+C,F),g.closePath(),g.clip(),i){var R=-s/i;g.moveTo(B+n/2,R*(-n/2)+F),g.lineTo(B+n,F),g.lineTo(B,F),g.lineTo(B,F+U),g.closePath(),g.clip()}if(c){var S=-s/c;g.moveTo(B+n/2,S*(-n/2)+F),g.lineTo(B,F),g.lineTo(B+n,F),g.lineTo(B+n,F+U),g.closePath(),g.clip()}}(g,I.box,W,f,X),function(g,I,e,t,C){var F=I.top,B=I.left,n=I.width,U=e.borderTopColor,s=e.borderTopWidth,i=e.borderTopStyle,c=e.borderRightWidth,A=e.borderLeftWidth,l=C*(1-Q),a=t*(1-Q);g.moveTo(B,F+Math.max(C,s)),g.bezierCurveTo(B,F+l,B+l,F,B+C,F),g.lineTo(B+n-t,F),g.bezierCurveTo(B+n-a,F,B+n,F+a,B+n,F+t),g.strokeColor(U),g.lineWidth(2*Math.max(c,s,A)),"dashed"===i?g.dash(2*s,{space:1.2*s}):"dotted"===i&&g.dash(s,{space:1.2*s}),g.stroke(),g.undash()}(g,I.box,W,f,X),g.restore()),n&&(g.save(),function(g,I,e,t,C){var F=I.top,B=I.left,n=I.width,U=I.height,s=e.borderTopWidth,i=e.borderRightWidth,c=e.borderBottomWidth;g.moveTo(B+n,F+t),g.lineTo(B+n,F+U-C);var A=C*(1-Q);g.bezierCurveTo(B+n,F+U-A,B+n-A,F+U,B+n-C,F+U);var l=B+n-Math.max(i,C);g.lineTo(l,F+U),g.lineTo(l,F+U-c);var a=Math.max(C-i,0),r=Math.max(C-c,0),o=a*(1-Q),d=r*(1-Q);g.bezierCurveTo(B+n-i-o,F+U-c,B+n-i,F+U-c-d,B+n-i,F+U-Math.max(C,c)),g.lineTo(B+n-i,F+Math.max(t,s));var u=Math.max(t-i,0),y=Math.max(t-s,0),b=u*(1-Q),Z=y*(1-Q),m=B+n-Math.max(t,i);g.bezierCurveTo(B+n-i,F+s+Z,B+n-i-b,F+s,m,F+s),g.lineTo(m,F),g.lineTo(B+n-t,F);var x=t*(1-Q);if(g.bezierCurveTo(B+n-x,F,B+n,F+x,B+n,F+t),g.closePath(),g.clip(),s){var R=-s/i;g.moveTo(B+n/2,R*(-n/2)+F),g.lineTo(B+n,F),g.lineTo(B+n,F+U),g.lineTo(B,F+U),g.closePath(),g.clip()}if(c){var S=c/i;g.moveTo(B+n/2,S*(-n/2)+F+U),g.lineTo(B+n,F+U),g.lineTo(B+n,F),g.lineTo(B,F),g.closePath(),g.clip()}}(g,I.box,W,f,J),function(g,I,e,t,C){var F=I.top,B=I.left,n=I.width,U=I.height,s=e.borderRightColor,i=e.borderRightStyle,c=e.borderRightWidth,A=e.borderTopWidth,l=e.borderBottomWidth,a=C*(1-Q),r=t*(1-Q);g.moveTo(B+n-t,F),g.bezierCurveTo(B+n-r,F,B+n,F+r,B+n,F+t),g.lineTo(B+n,F+U-C),g.bezierCurveTo(B+n,F+U-a,B+n-a,F+U,B+n-C,F+U),g.strokeColor(s),g.lineWidth(2*Math.max(c,A,l)),"dashed"===i?g.dash(2*c,{space:1.2*c}):"dotted"===i&&g.dash(c,{space:1.2*c}),g.stroke(),g.undash()}(g,I.box,W,f,J),g.restore()),U&&(g.save(),function(g,I,e,t,C){var F=I.top,B=I.left,n=I.width,U=I.height,s=e.borderBottomWidth,i=e.borderRightWidth,c=e.borderLeftWidth;g.moveTo(B+n-C,F+U),g.lineTo(B+t,F+U);var A=t*(1-Q);g.bezierCurveTo(B+A,F+U,B,F+U-A,B,F+U-t);var l=F+U-Math.max(s,t);g.lineTo(B,l),g.lineTo(B+c,l);var a=Math.max(t-c,0),r=Math.max(t-s,0),o=a*(1-Q),d=r*(1-Q);g.bezierCurveTo(B+c,F+U-s-d,B+c+o,F+U-s,B+c+a,F+U-s),g.lineTo(B+n-Math.max(C,i),F+U-s);var u=Math.max(C-i,0),y=Math.max(C-s,0),b=u*(1-Q),Z=y*(1-Q),m=F+U-Math.max(s,C);g.bezierCurveTo(B+n-i-b,F+U-s,B+n-i,F+U-s-Z,B+n-i,m),g.lineTo(B+n,m),g.lineTo(B+n,F+U-C);var x=C*(1-Q);if(g.bezierCurveTo(B+n,F+U-x,B+n-x,F+U,B+n-C,F+U),g.closePath(),g.clip(),i){var R=s/i;g.moveTo(B+n/2,R*(-n/2)+F+U),g.lineTo(B+n,F+U),g.lineTo(B,F+U),g.lineTo(B,F),g.closePath(),g.clip()}if(c){var S=-s/c;g.moveTo(B+n/2,S*(n/2)+F+U),g.lineTo(B,F+U),g.lineTo(B+n,F+U),g.lineTo(B+n,F),g.closePath(),g.clip()}}(g,I.box,W,v,J),function(g,I,e,t,C){var F=I.top,B=I.left,n=I.width,U=I.height,s=e.borderBottomColor,i=e.borderBottomStyle,c=e.borderBottomWidth,A=e.borderRightWidth,l=e.borderLeftWidth,a=t*(1-Q),r=C*(1-Q);g.moveTo(B+n,F+U-C),g.bezierCurveTo(B+n,F+U-r,B+n-r,F+U,B+n-C,F+U),g.lineTo(B+t,F+U),g.bezierCurveTo(B+a,F+U,B,F+U-a,B,F+U-t),g.strokeColor(s),g.lineWidth(2*Math.max(c,A,l)),"dashed"===i?g.dash(2*c,{space:1.2*c}):"dotted"===i&&g.dash(c,{space:1.2*c}),g.stroke(),g.undash()}(g,I.box,W,v,J),g.restore()),B&&(g.save(),function(g,I,e,t,C){var F=I.top,B=I.left,n=I.width,U=I.height,s=e.borderTopWidth,i=e.borderLeftWidth,c=e.borderBottomWidth;g.moveTo(B,F+U-t),g.lineTo(B,F+C);var A=C*(1-Q);g.bezierCurveTo(B,F+A,B+A,F,B+C,F);var l=B+Math.max(i,C);g.lineTo(l,F),g.lineTo(l,F+s);var a=Math.max(C-i,0),r=Math.max(C-s,0),o=a*(1-Q),d=r*(1-Q);g.bezierCurveTo(B+i+o,F+s,B+i,F+s+d,B+i,F+Math.max(C,s)),g.lineTo(B+i,F+U-Math.max(t,c));var u=Math.max(t-i,0),y=Math.max(t-c,0),b=u*(1-Q),Z=y*(1-Q),m=B+Math.max(t,i);g.bezierCurveTo(B+i,F+U-c-Z,B+i+b,F+U-c,m,F+U-c),g.lineTo(m,F+U),g.lineTo(B+t,F+U);var x=t*(1-Q);if(g.bezierCurveTo(B+x,F+U,B,F+U-x,B,F+U-t),g.closePath(),g.clip(),c){var R=-c/i;g.moveTo(B+n/2,R*(n/2)+F+U),g.lineTo(B,F+U),g.lineTo(B,F),g.lineTo(B+n,F),g.closePath(),g.clip()}if(c){var S=-s/i;g.moveTo(B+n/2,S*(-n/2)+F),g.lineTo(B,F),g.lineTo(B,F+U),g.lineTo(B+n,F+U),g.closePath(),g.clip()}}(g,I.box,W,v,X),function(g,I,e,t,C){var F=I.top,B=I.left,n=I.height,U=e.borderLeftColor,s=e.borderLeftStyle,i=e.borderLeftWidth,c=e.borderTopWidth,A=e.borderBottomWidth,l=t*(1-Q),a=C*(1-Q);g.moveTo(B+t,F+n),g.bezierCurveTo(B+l,F+n,B,F+n-l,B,F+n-t),g.lineTo(B,F+C),g.bezierCurveTo(B,F+a,B+a,F,B+C,F),g.strokeColor(U),g.lineWidth(2*Math.max(i,c,A)),"dashed"===s?g.dash(2*i,{space:1.2*i}):"dotted"===s&&g.dash(i,{space:1.2*i}),g.stroke(),g.undash()}(g,I.box,W,v,X),g.restore()),g.restore(),I}));I.default=F},function(g,I,e){"use strict";var t=e(128).default,C=e(46).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(288)),B=t(e(289)),n=t(e(414)),U=t(e(758)),s=Q.curryN(2,(function(g,I){var e;return!!I.box&&!(null===(e=I.style)||void 0===e||!e.backgroundColor)&&((0,F.default)(g,I),(0,n.default)(g,I),function(g,I){if(I.box&&I.style.backgroundColor){var e,t=I.box,C=t.top,F=t.left,B=t.width,n=t.height,s=(0,U.default)(I.style.backgroundColor),i=Q.isNil(null===(e=I.style)||void 0===e?void 0:e.opacity)?1:I.style.opacity,c=Math.min(s.opacity,i);g.fillOpacity(c).fillColor(s.value).rect(F,C,B,n).fill()}}(g,I),(0,B.default)(g,I)),I}));I.default=s},function(g,I,e){"use strict";var t=e(46).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=t(e(53)),F=C.propEq("type",Q.Svg);I.default=F},function(g,I,e){"use strict";var t=e(46).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=t(e(53)),F=C.propEq("type",Q.Link);I.default=F},function(g,I,e){"use strict";var t=e(46).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=t(e(53)),F=C.propEq("type",Q.Page);I.default=F},function(g,I,e){"use strict";var t=e(46).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=t(e(53)),F=C.propEq("type",Q.Note);I.default=F},function(g,I,e){"use strict";var t=e(46).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=t(e(53)),F=C.propEq("type",Q.Canvas);I.default=F},function(g,I,e){"use strict";var t=e(46).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=C.test(/^#.+/),F=C.curryN(2,(function(g,I){var e=I.box,t=e.top,C=e.left,F=e.width,B=e.height,n=function(g){var I=g.props||{};return I.src||I.href}(I);if(n){var U=Q(n),s=U?"goTo":"link",i=U?n.slice(1):n;g[s](C,t,F,B,i)}return I}));I.default=F},function(g,I,e){"use strict";var t=e(46).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)).curryN(2,(function(g,I){var e;return null!==(e=I.props)&&void 0!==e&&e.id&&g.addNamedDestination(I.props.id,"XYZ",null,I.box.top,null),I}));I.default=C},function(g,I,e){"use strict";var t=e(46).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=C.curryN(2,(function(g,I){var e,t=(e=I,function(g,I){return C.pathOr(g,["props",I],e)}),Q=function(g){return function(I,e){e&&(g.info[I]=e)}}(g),F=t(null,"title"),B=t(null,"author"),n=t(null,"subject"),U=t(null,"keywords"),s=t("react-pdf","creator"),i=t("react-pdf","producer");return Q("Title",F),Q("Author",B),Q("Subject",n),Q("Keywords",U),Q("Creator",s),Q("Producer",i),I}));I.default=Q},function(g,I){function e(I,t){return g.exports=e=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(g,I){return g.__proto__=I,g},g.exports.__esModule=!0,g.exports.default=g.exports,e(I,t)}g.exports=e,g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I,e){"use strict";(function(g,t){var C=e(761),Q=e(1491),F=e(1492),B=e(1495),n=e(1498);for(var U in n)I[U]=n[U];I.NONE=0,I.DEFLATE=1,I.INFLATE=2,I.GZIP=3,I.GUNZIP=4,I.DEFLATERAW=5,I.INFLATERAW=6,I.UNZIP=7;function s(g){if("number"!==typeof g||g<I.DEFLATE||g>I.UNZIP)throw new TypeError("Bad argument");this.dictionary=null,this.err=0,this.flush=0,this.init_done=!1,this.level=0,this.memLevel=0,this.mode=g,this.strategy=0,this.windowBits=0,this.write_in_progress=!1,this.pending_close=!1,this.gzip_id_bytes_read=0}s.prototype.close=function(){this.write_in_progress?this.pending_close=!0:(this.pending_close=!1,C(this.init_done,"close before init"),C(this.mode<=I.UNZIP),this.mode===I.DEFLATE||this.mode===I.GZIP||this.mode===I.DEFLATERAW?F.deflateEnd(this.strm):this.mode!==I.INFLATE&&this.mode!==I.GUNZIP&&this.mode!==I.INFLATERAW&&this.mode!==I.UNZIP||B.inflateEnd(this.strm),this.mode=I.NONE,this.dictionary=null)},s.prototype.write=function(g,I,e,t,C,Q,F){return this._write(!0,g,I,e,t,C,Q,F)},s.prototype.writeSync=function(g,I,e,t,C,Q,F){return this._write(!1,g,I,e,t,C,Q,F)},s.prototype._write=function(e,Q,F,B,n,U,s,i){if(C.equal(arguments.length,8),C(this.init_done,"write before init"),C(this.mode!==I.NONE,"already finalized"),C.equal(!1,this.write_in_progress,"write already in progress"),C.equal(!1,this.pending_close,"close is pending"),this.write_in_progress=!0,C.equal(!1,void 0===Q,"must provide flush value"),this.write_in_progress=!0,Q!==I.Z_NO_FLUSH&&Q!==I.Z_PARTIAL_FLUSH&&Q!==I.Z_SYNC_FLUSH&&Q!==I.Z_FULL_FLUSH&&Q!==I.Z_FINISH&&Q!==I.Z_BLOCK)throw new Error("Invalid flush value");if(null==F&&(F=g.alloc(0),n=0,B=0),this.strm.avail_in=n,this.strm.input=F,this.strm.next_in=B,this.strm.avail_out=i,this.strm.output=U,this.strm.next_out=s,this.flush=Q,!e)return this._process(),this._checkError()?this._afterSync():void 0;var c=this;return t.nextTick((function(){c._process(),c._after()})),this},s.prototype._afterSync=function(){var g=this.strm.avail_out,I=this.strm.avail_in;return this.write_in_progress=!1,[I,g]},s.prototype._process=function(){var g=null;switch(this.mode){case I.DEFLATE:case I.GZIP:case I.DEFLATERAW:this.err=F.deflate(this.strm,this.flush);break;case I.UNZIP:switch(this.strm.avail_in>0&&(g=this.strm.next_in),this.gzip_id_bytes_read){case 0:if(null===g)break;if(31!==this.strm.input[g]){this.mode=I.INFLATE;break}if(this.gzip_id_bytes_read=1,g++,1===this.strm.avail_in)break;case 1:if(null===g)break;139===this.strm.input[g]?(this.gzip_id_bytes_read=2,this.mode=I.GUNZIP):this.mode=I.INFLATE;break;default:throw new Error("invalid number of gzip magic number bytes read")}case I.INFLATE:case I.GUNZIP:case I.INFLATERAW:for(this.err=B.inflate(this.strm,this.flush),this.err===I.Z_NEED_DICT&&this.dictionary&&(this.err=B.inflateSetDictionary(this.strm,this.dictionary),this.err===I.Z_OK?this.err=B.inflate(this.strm,this.flush):this.err===I.Z_DATA_ERROR&&(this.err=I.Z_NEED_DICT));this.strm.avail_in>0&&this.mode===I.GUNZIP&&this.err===I.Z_STREAM_END&&0!==this.strm.next_in[0];)this.reset(),this.err=B.inflate(this.strm,this.flush);break;default:throw new Error("Unknown mode "+this.mode)}},s.prototype._checkError=function(){switch(this.err){case I.Z_OK:case I.Z_BUF_ERROR:if(0!==this.strm.avail_out&&this.flush===I.Z_FINISH)return this._error("unexpected end of file"),!1;break;case I.Z_STREAM_END:break;case I.Z_NEED_DICT:return null==this.dictionary?this._error("Missing dictionary"):this._error("Bad dictionary"),!1;default:return this._error("Zlib error"),!1}return!0},s.prototype._after=function(){if(this._checkError()){var g=this.strm.avail_out,I=this.strm.avail_in;this.write_in_progress=!1,this.callback(I,g),this.pending_close&&this.close()}},s.prototype._error=function(g){this.strm.msg&&(g=this.strm.msg),this.onerror(g,this.err),this.write_in_progress=!1,this.pending_close&&this.close()},s.prototype.init=function(g,e,t,Q,F){C(4===arguments.length||5===arguments.length,"init(windowBits, level, memLevel, strategy, [dictionary])"),C(g>=8&&g<=15,"invalid windowBits"),C(e>=-1&&e<=9,"invalid compression level"),C(t>=1&&t<=9,"invalid memlevel"),C(Q===I.Z_FILTERED||Q===I.Z_HUFFMAN_ONLY||Q===I.Z_RLE||Q===I.Z_FIXED||Q===I.Z_DEFAULT_STRATEGY,"invalid strategy"),this._init(e,g,t,Q,F),this._setDictionary()},s.prototype.params=function(){throw new Error("deflateParams Not supported")},s.prototype.reset=function(){this._reset(),this._setDictionary()},s.prototype._init=function(g,e,t,C,n){switch(this.level=g,this.windowBits=e,this.memLevel=t,this.strategy=C,this.flush=I.Z_NO_FLUSH,this.err=I.Z_OK,this.mode!==I.GZIP&&this.mode!==I.GUNZIP||(this.windowBits+=16),this.mode===I.UNZIP&&(this.windowBits+=32),this.mode!==I.DEFLATERAW&&this.mode!==I.INFLATERAW||(this.windowBits=-1*this.windowBits),this.strm=new Q,this.mode){case I.DEFLATE:case I.GZIP:case I.DEFLATERAW:this.err=F.deflateInit2(this.strm,this.level,I.Z_DEFLATED,this.windowBits,this.memLevel,this.strategy);break;case I.INFLATE:case I.GUNZIP:case I.INFLATERAW:case I.UNZIP:this.err=B.inflateInit2(this.strm,this.windowBits);break;default:throw new Error("Unknown mode "+this.mode)}this.err!==I.Z_OK&&this._error("Init error"),this.dictionary=n,this.write_in_progress=!1,this.init_done=!0},s.prototype._setDictionary=function(){if(null!=this.dictionary){switch(this.err=I.Z_OK,this.mode){case I.DEFLATE:case I.DEFLATERAW:this.err=F.deflateSetDictionary(this.strm,this.dictionary)}this.err!==I.Z_OK&&this._error("Failed to set dictionary")}},s.prototype._reset=function(){switch(this.err=I.Z_OK,this.mode){case I.DEFLATE:case I.DEFLATERAW:case I.GZIP:this.err=F.deflateReset(this.strm);break;case I.INFLATE:case I.INFLATERAW:case I.GUNZIP:this.err=B.inflateReset(this.strm)}this.err!==I.Z_OK&&this._error("Failed to reset stream")},I.Zlib=s}).call(this,e(103).Buffer,e(92))},function(g,I,e){"use strict";g.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},function(g,I,e){"use strict";var t,C=e(415),Q=e(1493),F=e(762),B=e(763),n=e(1494);function U(g,I){return g.msg=n[I],I}function s(g){return(g<<1)-(g>4?9:0)}function i(g){for(var I=g.length;--I>=0;)g[I]=0}function c(g){var I=g.state,e=I.pending;e>g.avail_out&&(e=g.avail_out),0!==e&&(C.arraySet(g.output,I.pending_buf,I.pending_out,e,g.next_out),g.next_out+=e,I.pending_out+=e,g.total_out+=e,g.avail_out-=e,I.pending-=e,0===I.pending&&(I.pending_out=0))}function A(g,I){Q._tr_flush_block(g,g.block_start>=0?g.block_start:-1,g.strstart-g.block_start,I),g.block_start=g.strstart,c(g.strm)}function l(g,I){g.pending_buf[g.pending++]=I}function a(g,I){g.pending_buf[g.pending++]=I>>>8&255,g.pending_buf[g.pending++]=255&I}function r(g,I,e,t){var Q=g.avail_in;return Q>t&&(Q=t),0===Q?0:(g.avail_in-=Q,C.arraySet(I,g.input,g.next_in,Q,e),1===g.state.wrap?g.adler=F(g.adler,I,Q,e):2===g.state.wrap&&(g.adler=B(g.adler,I,Q,e)),g.next_in+=Q,g.total_in+=Q,Q)}function o(g,I){var e,t,C=g.max_chain_length,Q=g.strstart,F=g.prev_length,B=g.nice_match,n=g.strstart>g.w_size-262?g.strstart-(g.w_size-262):0,U=g.window,s=g.w_mask,i=g.prev,c=g.strstart+258,A=U[Q+F-1],l=U[Q+F];g.prev_length>=g.good_match&&(C>>=2),B>g.lookahead&&(B=g.lookahead);do{if(U[(e=I)+F]===l&&U[e+F-1]===A&&U[e]===U[Q]&&U[++e]===U[Q+1]){Q+=2,e++;do{}while(U[++Q]===U[++e]&&U[++Q]===U[++e]&&U[++Q]===U[++e]&&U[++Q]===U[++e]&&U[++Q]===U[++e]&&U[++Q]===U[++e]&&U[++Q]===U[++e]&&U[++Q]===U[++e]&&Q<c);if(t=258-(c-Q),Q=c-258,t>F){if(g.match_start=I,F=t,t>=B)break;A=U[Q+F-1],l=U[Q+F]}}}while((I=i[I&s])>n&&0!==--C);return F<=g.lookahead?F:g.lookahead}function d(g){var I,e,t,Q,F,B=g.w_size;do{if(Q=g.window_size-g.lookahead-g.strstart,g.strstart>=B+(B-262)){C.arraySet(g.window,g.window,B,B,0),g.match_start-=B,g.strstart-=B,g.block_start-=B,I=e=g.hash_size;do{t=g.head[--I],g.head[I]=t>=B?t-B:0}while(--e);I=e=B;do{t=g.prev[--I],g.prev[I]=t>=B?t-B:0}while(--e);Q+=B}if(0===g.strm.avail_in)break;if(e=r(g.strm,g.window,g.strstart+g.lookahead,Q),g.lookahead+=e,g.lookahead+g.insert>=3)for(F=g.strstart-g.insert,g.ins_h=g.window[F],g.ins_h=(g.ins_h<<g.hash_shift^g.window[F+1])&g.hash_mask;g.insert&&(g.ins_h=(g.ins_h<<g.hash_shift^g.window[F+3-1])&g.hash_mask,g.prev[F&g.w_mask]=g.head[g.ins_h],g.head[g.ins_h]=F,F++,g.insert--,!(g.lookahead+g.insert<3)););}while(g.lookahead<262&&0!==g.strm.avail_in)}function u(g,I){for(var e,t;;){if(g.lookahead<262){if(d(g),g.lookahead<262&&0===I)return 1;if(0===g.lookahead)break}if(e=0,g.lookahead>=3&&(g.ins_h=(g.ins_h<<g.hash_shift^g.window[g.strstart+3-1])&g.hash_mask,e=g.prev[g.strstart&g.w_mask]=g.head[g.ins_h],g.head[g.ins_h]=g.strstart),0!==e&&g.strstart-e<=g.w_size-262&&(g.match_length=o(g,e)),g.match_length>=3)if(t=Q._tr_tally(g,g.strstart-g.match_start,g.match_length-3),g.lookahead-=g.match_length,g.match_length<=g.max_lazy_match&&g.lookahead>=3){g.match_length--;do{g.strstart++,g.ins_h=(g.ins_h<<g.hash_shift^g.window[g.strstart+3-1])&g.hash_mask,e=g.prev[g.strstart&g.w_mask]=g.head[g.ins_h],g.head[g.ins_h]=g.strstart}while(0!==--g.match_length);g.strstart++}else g.strstart+=g.match_length,g.match_length=0,g.ins_h=g.window[g.strstart],g.ins_h=(g.ins_h<<g.hash_shift^g.window[g.strstart+1])&g.hash_mask;else t=Q._tr_tally(g,0,g.window[g.strstart]),g.lookahead--,g.strstart++;if(t&&(A(g,!1),0===g.strm.avail_out))return 1}return g.insert=g.strstart<2?g.strstart:2,4===I?(A(g,!0),0===g.strm.avail_out?3:4):g.last_lit&&(A(g,!1),0===g.strm.avail_out)?1:2}function y(g,I){for(var e,t,C;;){if(g.lookahead<262){if(d(g),g.lookahead<262&&0===I)return 1;if(0===g.lookahead)break}if(e=0,g.lookahead>=3&&(g.ins_h=(g.ins_h<<g.hash_shift^g.window[g.strstart+3-1])&g.hash_mask,e=g.prev[g.strstart&g.w_mask]=g.head[g.ins_h],g.head[g.ins_h]=g.strstart),g.prev_length=g.match_length,g.prev_match=g.match_start,g.match_length=2,0!==e&&g.prev_length<g.max_lazy_match&&g.strstart-e<=g.w_size-262&&(g.match_length=o(g,e),g.match_length<=5&&(1===g.strategy||3===g.match_length&&g.strstart-g.match_start>4096)&&(g.match_length=2)),g.prev_length>=3&&g.match_length<=g.prev_length){C=g.strstart+g.lookahead-3,t=Q._tr_tally(g,g.strstart-1-g.prev_match,g.prev_length-3),g.lookahead-=g.prev_length-1,g.prev_length-=2;do{++g.strstart<=C&&(g.ins_h=(g.ins_h<<g.hash_shift^g.window[g.strstart+3-1])&g.hash_mask,e=g.prev[g.strstart&g.w_mask]=g.head[g.ins_h],g.head[g.ins_h]=g.strstart)}while(0!==--g.prev_length);if(g.match_available=0,g.match_length=2,g.strstart++,t&&(A(g,!1),0===g.strm.avail_out))return 1}else if(g.match_available){if((t=Q._tr_tally(g,0,g.window[g.strstart-1]))&&A(g,!1),g.strstart++,g.lookahead--,0===g.strm.avail_out)return 1}else g.match_available=1,g.strstart++,g.lookahead--}return g.match_available&&(t=Q._tr_tally(g,0,g.window[g.strstart-1]),g.match_available=0),g.insert=g.strstart<2?g.strstart:2,4===I?(A(g,!0),0===g.strm.avail_out?3:4):g.last_lit&&(A(g,!1),0===g.strm.avail_out)?1:2}function b(g,I,e,t,C){this.good_length=g,this.max_lazy=I,this.nice_length=e,this.max_chain=t,this.func=C}function Z(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=8,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new C.Buf16(1146),this.dyn_dtree=new C.Buf16(122),this.bl_tree=new C.Buf16(78),i(this.dyn_ltree),i(this.dyn_dtree),i(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new C.Buf16(16),this.heap=new C.Buf16(573),i(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new C.Buf16(573),i(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function m(g){var I;return g&&g.state?(g.total_in=g.total_out=0,g.data_type=2,(I=g.state).pending=0,I.pending_out=0,I.wrap<0&&(I.wrap=-I.wrap),I.status=I.wrap?42:113,g.adler=2===I.wrap?0:1,I.last_flush=0,Q._tr_init(I),0):U(g,-2)}function x(g){var I,e=m(g);return 0===e&&((I=g.state).window_size=2*I.w_size,i(I.head),I.max_lazy_match=t[I.level].max_lazy,I.good_match=t[I.level].good_length,I.nice_match=t[I.level].nice_length,I.max_chain_length=t[I.level].max_chain,I.strstart=0,I.block_start=0,I.lookahead=0,I.insert=0,I.match_length=I.prev_length=2,I.match_available=0,I.ins_h=0),e}function R(g,I,e,t,Q,F){if(!g)return-2;var B=1;if(-1===I&&(I=6),t<0?(B=0,t=-t):t>15&&(B=2,t-=16),Q<1||Q>9||8!==e||t<8||t>15||I<0||I>9||F<0||F>4)return U(g,-2);8===t&&(t=9);var n=new Z;return g.state=n,n.strm=g,n.wrap=B,n.gzhead=null,n.w_bits=t,n.w_size=1<<n.w_bits,n.w_mask=n.w_size-1,n.hash_bits=Q+7,n.hash_size=1<<n.hash_bits,n.hash_mask=n.hash_size-1,n.hash_shift=~~((n.hash_bits+3-1)/3),n.window=new C.Buf8(2*n.w_size),n.head=new C.Buf16(n.hash_size),n.prev=new C.Buf16(n.w_size),n.lit_bufsize=1<<Q+6,n.pending_buf_size=4*n.lit_bufsize,n.pending_buf=new C.Buf8(n.pending_buf_size),n.d_buf=1*n.lit_bufsize,n.l_buf=3*n.lit_bufsize,n.level=I,n.strategy=F,n.method=e,x(g)}t=[new b(0,0,0,0,(function(g,I){var e=65535;for(e>g.pending_buf_size-5&&(e=g.pending_buf_size-5);;){if(g.lookahead<=1){if(d(g),0===g.lookahead&&0===I)return 1;if(0===g.lookahead)break}g.strstart+=g.lookahead,g.lookahead=0;var t=g.block_start+e;if((0===g.strstart||g.strstart>=t)&&(g.lookahead=g.strstart-t,g.strstart=t,A(g,!1),0===g.strm.avail_out))return 1;if(g.strstart-g.block_start>=g.w_size-262&&(A(g,!1),0===g.strm.avail_out))return 1}return g.insert=0,4===I?(A(g,!0),0===g.strm.avail_out?3:4):(g.strstart>g.block_start&&(A(g,!1),g.strm.avail_out),1)})),new b(4,4,8,4,u),new b(4,5,16,8,u),new b(4,6,32,32,u),new b(4,4,16,16,y),new b(8,16,32,32,y),new b(8,16,128,128,y),new b(8,32,128,256,y),new b(32,128,258,1024,y),new b(32,258,258,4096,y)],I.deflateInit=function(g,I){return R(g,I,8,15,8,0)},I.deflateInit2=R,I.deflateReset=x,I.deflateResetKeep=m,I.deflateSetHeader=function(g,I){return g&&g.state?2!==g.state.wrap?-2:(g.state.gzhead=I,0):-2},I.deflate=function(g,I){var e,C,F,n;if(!g||!g.state||I>5||I<0)return g?U(g,-2):-2;if(C=g.state,!g.output||!g.input&&0!==g.avail_in||666===C.status&&4!==I)return U(g,0===g.avail_out?-5:-2);if(C.strm=g,e=C.last_flush,C.last_flush=I,42===C.status)if(2===C.wrap)g.adler=0,l(C,31),l(C,139),l(C,8),C.gzhead?(l(C,(C.gzhead.text?1:0)+(C.gzhead.hcrc?2:0)+(C.gzhead.extra?4:0)+(C.gzhead.name?8:0)+(C.gzhead.comment?16:0)),l(C,255&C.gzhead.time),l(C,C.gzhead.time>>8&255),l(C,C.gzhead.time>>16&255),l(C,C.gzhead.time>>24&255),l(C,9===C.level?2:C.strategy>=2||C.level<2?4:0),l(C,255&C.gzhead.os),C.gzhead.extra&&C.gzhead.extra.length&&(l(C,255&C.gzhead.extra.length),l(C,C.gzhead.extra.length>>8&255)),C.gzhead.hcrc&&(g.adler=B(g.adler,C.pending_buf,C.pending,0)),C.gzindex=0,C.status=69):(l(C,0),l(C,0),l(C,0),l(C,0),l(C,0),l(C,9===C.level?2:C.strategy>=2||C.level<2?4:0),l(C,3),C.status=113);else{var r=8+(C.w_bits-8<<4)<<8;r|=(C.strategy>=2||C.level<2?0:C.level<6?1:6===C.level?2:3)<<6,0!==C.strstart&&(r|=32),r+=31-r%31,C.status=113,a(C,r),0!==C.strstart&&(a(C,g.adler>>>16),a(C,65535&g.adler)),g.adler=1}if(69===C.status)if(C.gzhead.extra){for(F=C.pending;C.gzindex<(65535&C.gzhead.extra.length)&&(C.pending!==C.pending_buf_size||(C.gzhead.hcrc&&C.pending>F&&(g.adler=B(g.adler,C.pending_buf,C.pending-F,F)),c(g),F=C.pending,C.pending!==C.pending_buf_size));)l(C,255&C.gzhead.extra[C.gzindex]),C.gzindex++;C.gzhead.hcrc&&C.pending>F&&(g.adler=B(g.adler,C.pending_buf,C.pending-F,F)),C.gzindex===C.gzhead.extra.length&&(C.gzindex=0,C.status=73)}else C.status=73;if(73===C.status)if(C.gzhead.name){F=C.pending;do{if(C.pending===C.pending_buf_size&&(C.gzhead.hcrc&&C.pending>F&&(g.adler=B(g.adler,C.pending_buf,C.pending-F,F)),c(g),F=C.pending,C.pending===C.pending_buf_size)){n=1;break}n=C.gzindex<C.gzhead.name.length?255&C.gzhead.name.charCodeAt(C.gzindex++):0,l(C,n)}while(0!==n);C.gzhead.hcrc&&C.pending>F&&(g.adler=B(g.adler,C.pending_buf,C.pending-F,F)),0===n&&(C.gzindex=0,C.status=91)}else C.status=91;if(91===C.status)if(C.gzhead.comment){F=C.pending;do{if(C.pending===C.pending_buf_size&&(C.gzhead.hcrc&&C.pending>F&&(g.adler=B(g.adler,C.pending_buf,C.pending-F,F)),c(g),F=C.pending,C.pending===C.pending_buf_size)){n=1;break}n=C.gzindex<C.gzhead.comment.length?255&C.gzhead.comment.charCodeAt(C.gzindex++):0,l(C,n)}while(0!==n);C.gzhead.hcrc&&C.pending>F&&(g.adler=B(g.adler,C.pending_buf,C.pending-F,F)),0===n&&(C.status=103)}else C.status=103;if(103===C.status&&(C.gzhead.hcrc?(C.pending+2>C.pending_buf_size&&c(g),C.pending+2<=C.pending_buf_size&&(l(C,255&g.adler),l(C,g.adler>>8&255),g.adler=0,C.status=113)):C.status=113),0!==C.pending){if(c(g),0===g.avail_out)return C.last_flush=-1,0}else if(0===g.avail_in&&s(I)<=s(e)&&4!==I)return U(g,-5);if(666===C.status&&0!==g.avail_in)return U(g,-5);if(0!==g.avail_in||0!==C.lookahead||0!==I&&666!==C.status){var o=2===C.strategy?function(g,I){for(var e;;){if(0===g.lookahead&&(d(g),0===g.lookahead)){if(0===I)return 1;break}if(g.match_length=0,e=Q._tr_tally(g,0,g.window[g.strstart]),g.lookahead--,g.strstart++,e&&(A(g,!1),0===g.strm.avail_out))return 1}return g.insert=0,4===I?(A(g,!0),0===g.strm.avail_out?3:4):g.last_lit&&(A(g,!1),0===g.strm.avail_out)?1:2}(C,I):3===C.strategy?function(g,I){for(var e,t,C,F,B=g.window;;){if(g.lookahead<=258){if(d(g),g.lookahead<=258&&0===I)return 1;if(0===g.lookahead)break}if(g.match_length=0,g.lookahead>=3&&g.strstart>0&&(t=B[C=g.strstart-1])===B[++C]&&t===B[++C]&&t===B[++C]){F=g.strstart+258;do{}while(t===B[++C]&&t===B[++C]&&t===B[++C]&&t===B[++C]&&t===B[++C]&&t===B[++C]&&t===B[++C]&&t===B[++C]&&C<F);g.match_length=258-(F-C),g.match_length>g.lookahead&&(g.match_length=g.lookahead)}if(g.match_length>=3?(e=Q._tr_tally(g,1,g.match_length-3),g.lookahead-=g.match_length,g.strstart+=g.match_length,g.match_length=0):(e=Q._tr_tally(g,0,g.window[g.strstart]),g.lookahead--,g.strstart++),e&&(A(g,!1),0===g.strm.avail_out))return 1}return g.insert=0,4===I?(A(g,!0),0===g.strm.avail_out?3:4):g.last_lit&&(A(g,!1),0===g.strm.avail_out)?1:2}(C,I):t[C.level].func(C,I);if(3!==o&&4!==o||(C.status=666),1===o||3===o)return 0===g.avail_out&&(C.last_flush=-1),0;if(2===o&&(1===I?Q._tr_align(C):5!==I&&(Q._tr_stored_block(C,0,0,!1),3===I&&(i(C.head),0===C.lookahead&&(C.strstart=0,C.block_start=0,C.insert=0))),c(g),0===g.avail_out))return C.last_flush=-1,0}return 4!==I?0:C.wrap<=0?1:(2===C.wrap?(l(C,255&g.adler),l(C,g.adler>>8&255),l(C,g.adler>>16&255),l(C,g.adler>>24&255),l(C,255&g.total_in),l(C,g.total_in>>8&255),l(C,g.total_in>>16&255),l(C,g.total_in>>24&255)):(a(C,g.adler>>>16),a(C,65535&g.adler)),c(g),C.wrap>0&&(C.wrap=-C.wrap),0!==C.pending?0:1)},I.deflateEnd=function(g){var I;return g&&g.state?42!==(I=g.state.status)&&69!==I&&73!==I&&91!==I&&103!==I&&113!==I&&666!==I?U(g,-2):(g.state=null,113===I?U(g,-3):0):-2},I.deflateSetDictionary=function(g,I){var e,t,Q,B,n,U,s,c,A=I.length;if(!g||!g.state)return-2;if(2===(B=(e=g.state).wrap)||1===B&&42!==e.status||e.lookahead)return-2;for(1===B&&(g.adler=F(g.adler,I,A,0)),e.wrap=0,A>=e.w_size&&(0===B&&(i(e.head),e.strstart=0,e.block_start=0,e.insert=0),c=new C.Buf8(e.w_size),C.arraySet(c,I,A-e.w_size,e.w_size,0),I=c,A=e.w_size),n=g.avail_in,U=g.next_in,s=g.input,g.avail_in=A,g.next_in=0,g.input=I,d(e);e.lookahead>=3;){t=e.strstart,Q=e.lookahead-2;do{e.ins_h=(e.ins_h<<e.hash_shift^e.window[t+3-1])&e.hash_mask,e.prev[t&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=t,t++}while(--Q);e.strstart=t,e.lookahead=2,d(e)}return e.strstart+=e.lookahead,e.block_start=e.strstart,e.insert=e.lookahead,e.lookahead=0,e.match_length=e.prev_length=2,e.match_available=0,g.next_in=U,g.input=s,g.avail_in=n,e.wrap=B,0},I.deflateInfo="pako deflate (from Nodeca project)"},function(g,I,e){"use strict";var t=e(415);function C(g){for(var I=g.length;--I>=0;)g[I]=0}var Q=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],F=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],B=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],n=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],U=new Array(576);C(U);var s=new Array(60);C(s);var i=new Array(512);C(i);var c=new Array(256);C(c);var A=new Array(29);C(A);var l,a,r,o=new Array(30);function d(g,I,e,t,C){this.static_tree=g,this.extra_bits=I,this.extra_base=e,this.elems=t,this.max_length=C,this.has_stree=g&&g.length}function u(g,I){this.dyn_tree=g,this.max_code=0,this.stat_desc=I}function y(g){return g<256?i[g]:i[256+(g>>>7)]}function b(g,I){g.pending_buf[g.pending++]=255&I,g.pending_buf[g.pending++]=I>>>8&255}function Z(g,I,e){g.bi_valid>16-e?(g.bi_buf|=I<<g.bi_valid&65535,b(g,g.bi_buf),g.bi_buf=I>>16-g.bi_valid,g.bi_valid+=e-16):(g.bi_buf|=I<<g.bi_valid&65535,g.bi_valid+=e)}function m(g,I,e){Z(g,e[2*I],e[2*I+1])}function x(g,I){var e=0;do{e|=1&g,g>>>=1,e<<=1}while(--I>0);return e>>>1}function R(g,I,e){var t,C,Q=new Array(16),F=0;for(t=1;t<=15;t++)Q[t]=F=F+e[t-1]<<1;for(C=0;C<=I;C++){var B=g[2*C+1];0!==B&&(g[2*C]=x(Q[B]++,B))}}function S(g){var I;for(I=0;I<286;I++)g.dyn_ltree[2*I]=0;for(I=0;I<30;I++)g.dyn_dtree[2*I]=0;for(I=0;I<19;I++)g.bl_tree[2*I]=0;g.dyn_ltree[512]=1,g.opt_len=g.static_len=0,g.last_lit=g.matches=0}function G(g){g.bi_valid>8?b(g,g.bi_buf):g.bi_valid>0&&(g.pending_buf[g.pending++]=g.bi_buf),g.bi_buf=0,g.bi_valid=0}function L(g,I,e,t){var C=2*I,Q=2*e;return g[C]<g[Q]||g[C]===g[Q]&&t[I]<=t[e]}function V(g,I,e){for(var t=g.heap[e],C=e<<1;C<=g.heap_len&&(C<g.heap_len&&L(I,g.heap[C+1],g.heap[C],g.depth)&&C++,!L(I,t,g.heap[C],g.depth));)g.heap[e]=g.heap[C],e=C,C<<=1;g.heap[e]=t}function h(g,I,e){var t,C,B,n,U=0;if(0!==g.last_lit)do{t=g.pending_buf[g.d_buf+2*U]<<8|g.pending_buf[g.d_buf+2*U+1],C=g.pending_buf[g.l_buf+U],U++,0===t?m(g,C,I):(m(g,(B=c[C])+256+1,I),0!==(n=Q[B])&&Z(g,C-=A[B],n),m(g,B=y(--t),e),0!==(n=F[B])&&Z(g,t-=o[B],n))}while(U<g.last_lit);m(g,256,I)}function D(g,I){var e,t,C,Q=I.dyn_tree,F=I.stat_desc.static_tree,B=I.stat_desc.has_stree,n=I.stat_desc.elems,U=-1;for(g.heap_len=0,g.heap_max=573,e=0;e<n;e++)0!==Q[2*e]?(g.heap[++g.heap_len]=U=e,g.depth[e]=0):Q[2*e+1]=0;for(;g.heap_len<2;)Q[2*(C=g.heap[++g.heap_len]=U<2?++U:0)]=1,g.depth[C]=0,g.opt_len--,B&&(g.static_len-=F[2*C+1]);for(I.max_code=U,e=g.heap_len>>1;e>=1;e--)V(g,Q,e);C=n;do{e=g.heap[1],g.heap[1]=g.heap[g.heap_len--],V(g,Q,1),t=g.heap[1],g.heap[--g.heap_max]=e,g.heap[--g.heap_max]=t,Q[2*C]=Q[2*e]+Q[2*t],g.depth[C]=(g.depth[e]>=g.depth[t]?g.depth[e]:g.depth[t])+1,Q[2*e+1]=Q[2*t+1]=C,g.heap[1]=C++,V(g,Q,1)}while(g.heap_len>=2);g.heap[--g.heap_max]=g.heap[1],function(g,I){var e,t,C,Q,F,B,n=I.dyn_tree,U=I.max_code,s=I.stat_desc.static_tree,i=I.stat_desc.has_stree,c=I.stat_desc.extra_bits,A=I.stat_desc.extra_base,l=I.stat_desc.max_length,a=0;for(Q=0;Q<=15;Q++)g.bl_count[Q]=0;for(n[2*g.heap[g.heap_max]+1]=0,e=g.heap_max+1;e<573;e++)(Q=n[2*n[2*(t=g.heap[e])+1]+1]+1)>l&&(Q=l,a++),n[2*t+1]=Q,t>U||(g.bl_count[Q]++,F=0,t>=A&&(F=c[t-A]),B=n[2*t],g.opt_len+=B*(Q+F),i&&(g.static_len+=B*(s[2*t+1]+F)));if(0!==a){do{for(Q=l-1;0===g.bl_count[Q];)Q--;g.bl_count[Q]--,g.bl_count[Q+1]+=2,g.bl_count[l]--,a-=2}while(a>0);for(Q=l;0!==Q;Q--)for(t=g.bl_count[Q];0!==t;)(C=g.heap[--e])>U||(n[2*C+1]!==Q&&(g.opt_len+=(Q-n[2*C+1])*n[2*C],n[2*C+1]=Q),t--)}}(g,I),R(Q,U,g.bl_count)}function p(g,I,e){var t,C,Q=-1,F=I[1],B=0,n=7,U=4;for(0===F&&(n=138,U=3),I[2*(e+1)+1]=65535,t=0;t<=e;t++)C=F,F=I[2*(t+1)+1],++B<n&&C===F||(B<U?g.bl_tree[2*C]+=B:0!==C?(C!==Q&&g.bl_tree[2*C]++,g.bl_tree[32]++):B<=10?g.bl_tree[34]++:g.bl_tree[36]++,B=0,Q=C,0===F?(n=138,U=3):C===F?(n=6,U=3):(n=7,U=4))}function E(g,I,e){var t,C,Q=-1,F=I[1],B=0,n=7,U=4;for(0===F&&(n=138,U=3),t=0;t<=e;t++)if(C=F,F=I[2*(t+1)+1],!(++B<n&&C===F)){if(B<U)do{m(g,C,g.bl_tree)}while(0!==--B);else 0!==C?(C!==Q&&(m(g,C,g.bl_tree),B--),m(g,16,g.bl_tree),Z(g,B-3,2)):B<=10?(m(g,17,g.bl_tree),Z(g,B-3,3)):(m(g,18,g.bl_tree),Z(g,B-11,7));B=0,Q=C,0===F?(n=138,U=3):C===F?(n=6,U=3):(n=7,U=4)}}C(o);var N=!1;function W(g,I,e,C){Z(g,0+(C?1:0),3),function(g,I,e,C){G(g),C&&(b(g,e),b(g,~e)),t.arraySet(g.pending_buf,g.window,I,e,g.pending),g.pending+=e}(g,I,e,!0)}I._tr_init=function(g){N||(!function(){var g,I,e,t,C,n=new Array(16);for(e=0,t=0;t<28;t++)for(A[t]=e,g=0;g<1<<Q[t];g++)c[e++]=t;for(c[e-1]=t,C=0,t=0;t<16;t++)for(o[t]=C,g=0;g<1<<F[t];g++)i[C++]=t;for(C>>=7;t<30;t++)for(o[t]=C<<7,g=0;g<1<<F[t]-7;g++)i[256+C++]=t;for(I=0;I<=15;I++)n[I]=0;for(g=0;g<=143;)U[2*g+1]=8,g++,n[8]++;for(;g<=255;)U[2*g+1]=9,g++,n[9]++;for(;g<=279;)U[2*g+1]=7,g++,n[7]++;for(;g<=287;)U[2*g+1]=8,g++,n[8]++;for(R(U,287,n),g=0;g<30;g++)s[2*g+1]=5,s[2*g]=x(g,5);l=new d(U,Q,257,286,15),a=new d(s,F,0,30,15),r=new d(new Array(0),B,0,19,7)}(),N=!0),g.l_desc=new u(g.dyn_ltree,l),g.d_desc=new u(g.dyn_dtree,a),g.bl_desc=new u(g.bl_tree,r),g.bi_buf=0,g.bi_valid=0,S(g)},I._tr_stored_block=W,I._tr_flush_block=function(g,I,e,t){var C,Q,F=0;g.level>0?(2===g.strm.data_type&&(g.strm.data_type=function(g){var I,e=4093624447;for(I=0;I<=31;I++,e>>>=1)if(1&e&&0!==g.dyn_ltree[2*I])return 0;if(0!==g.dyn_ltree[18]||0!==g.dyn_ltree[20]||0!==g.dyn_ltree[26])return 1;for(I=32;I<256;I++)if(0!==g.dyn_ltree[2*I])return 1;return 0}(g)),D(g,g.l_desc),D(g,g.d_desc),F=function(g){var I;for(p(g,g.dyn_ltree,g.l_desc.max_code),p(g,g.dyn_dtree,g.d_desc.max_code),D(g,g.bl_desc),I=18;I>=3&&0===g.bl_tree[2*n[I]+1];I--);return g.opt_len+=3*(I+1)+5+5+4,I}(g),C=g.opt_len+3+7>>>3,(Q=g.static_len+3+7>>>3)<=C&&(C=Q)):C=Q=e+5,e+4<=C&&-1!==I?W(g,I,e,t):4===g.strategy||Q===C?(Z(g,2+(t?1:0),3),h(g,U,s)):(Z(g,4+(t?1:0),3),function(g,I,e,t){var C;for(Z(g,I-257,5),Z(g,e-1,5),Z(g,t-4,4),C=0;C<t;C++)Z(g,g.bl_tree[2*n[C]+1],3);E(g,g.dyn_ltree,I-1),E(g,g.dyn_dtree,e-1)}(g,g.l_desc.max_code+1,g.d_desc.max_code+1,F+1),h(g,g.dyn_ltree,g.dyn_dtree)),S(g),t&&G(g)},I._tr_tally=function(g,I,e){return g.pending_buf[g.d_buf+2*g.last_lit]=I>>>8&255,g.pending_buf[g.d_buf+2*g.last_lit+1]=255&I,g.pending_buf[g.l_buf+g.last_lit]=255&e,g.last_lit++,0===I?g.dyn_ltree[2*e]++:(g.matches++,I--,g.dyn_ltree[2*(c[e]+256+1)]++,g.dyn_dtree[2*y(I)]++),g.last_lit===g.lit_bufsize-1},I._tr_align=function(g){Z(g,2,3),m(g,256,U),function(g){16===g.bi_valid?(b(g,g.bi_buf),g.bi_buf=0,g.bi_valid=0):g.bi_valid>=8&&(g.pending_buf[g.pending++]=255&g.bi_buf,g.bi_buf>>=8,g.bi_valid-=8)}(g)}},function(g,I,e){"use strict";g.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},function(g,I,e){"use strict";var t=e(415),C=e(762),Q=e(763),F=e(1496),B=e(1497);function n(g){return(g>>>24&255)+(g>>>8&65280)+((65280&g)<<8)+((255&g)<<24)}function U(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new t.Buf16(320),this.work=new t.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function s(g){var I;return g&&g.state?(I=g.state,g.total_in=g.total_out=I.total=0,g.msg="",I.wrap&&(g.adler=1&I.wrap),I.mode=1,I.last=0,I.havedict=0,I.dmax=32768,I.head=null,I.hold=0,I.bits=0,I.lencode=I.lendyn=new t.Buf32(852),I.distcode=I.distdyn=new t.Buf32(592),I.sane=1,I.back=-1,0):-2}function i(g){var I;return g&&g.state?((I=g.state).wsize=0,I.whave=0,I.wnext=0,s(g)):-2}function c(g,I){var e,t;return g&&g.state?(t=g.state,I<0?(e=0,I=-I):(e=1+(I>>4),I<48&&(I&=15)),I&&(I<8||I>15)?-2:(null!==t.window&&t.wbits!==I&&(t.window=null),t.wrap=e,t.wbits=I,i(g))):-2}function A(g,I){var e,t;return g?(t=new U,g.state=t,t.window=null,0!==(e=c(g,I))&&(g.state=null),e):-2}var l,a,r=!0;function o(g){if(r){var I;for(l=new t.Buf32(512),a=new t.Buf32(32),I=0;I<144;)g.lens[I++]=8;for(;I<256;)g.lens[I++]=9;for(;I<280;)g.lens[I++]=7;for(;I<288;)g.lens[I++]=8;for(B(1,g.lens,0,288,l,0,g.work,{bits:9}),I=0;I<32;)g.lens[I++]=5;B(2,g.lens,0,32,a,0,g.work,{bits:5}),r=!1}g.lencode=l,g.lenbits=9,g.distcode=a,g.distbits=5}function d(g,I,e,C){var Q,F=g.state;return null===F.window&&(F.wsize=1<<F.wbits,F.wnext=0,F.whave=0,F.window=new t.Buf8(F.wsize)),C>=F.wsize?(t.arraySet(F.window,I,e-F.wsize,F.wsize,0),F.wnext=0,F.whave=F.wsize):((Q=F.wsize-F.wnext)>C&&(Q=C),t.arraySet(F.window,I,e-C,Q,F.wnext),(C-=Q)?(t.arraySet(F.window,I,e-C,C,0),F.wnext=C,F.whave=F.wsize):(F.wnext+=Q,F.wnext===F.wsize&&(F.wnext=0),F.whave<F.wsize&&(F.whave+=Q))),0}I.inflateReset=i,I.inflateReset2=c,I.inflateResetKeep=s,I.inflateInit=function(g){return A(g,15)},I.inflateInit2=A,I.inflate=function(g,I){var e,U,s,i,c,A,l,a,r,u,y,b,Z,m,x,R,S,G,L,V,h,D,p,E,N=0,W=new t.Buf8(4),f=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!g||!g.state||!g.output||!g.input&&0!==g.avail_in)return-2;12===(e=g.state).mode&&(e.mode=13),c=g.next_out,s=g.output,l=g.avail_out,i=g.next_in,U=g.input,A=g.avail_in,a=e.hold,r=e.bits,u=A,y=l,D=0;g:for(;;)switch(e.mode){case 1:if(0===e.wrap){e.mode=13;break}for(;r<16;){if(0===A)break g;A--,a+=U[i++]<<r,r+=8}if(2&e.wrap&&35615===a){e.check=0,W[0]=255&a,W[1]=a>>>8&255,e.check=Q(e.check,W,2,0),a=0,r=0,e.mode=2;break}if(e.flags=0,e.head&&(e.head.done=!1),!(1&e.wrap)||(((255&a)<<8)+(a>>8))%31){g.msg="incorrect header check",e.mode=30;break}if(8!==(15&a)){g.msg="unknown compression method",e.mode=30;break}if(r-=4,h=8+(15&(a>>>=4)),0===e.wbits)e.wbits=h;else if(h>e.wbits){g.msg="invalid window size",e.mode=30;break}e.dmax=1<<h,g.adler=e.check=1,e.mode=512&a?10:12,a=0,r=0;break;case 2:for(;r<16;){if(0===A)break g;A--,a+=U[i++]<<r,r+=8}if(e.flags=a,8!==(255&e.flags)){g.msg="unknown compression method",e.mode=30;break}if(57344&e.flags){g.msg="unknown header flags set",e.mode=30;break}e.head&&(e.head.text=a>>8&1),512&e.flags&&(W[0]=255&a,W[1]=a>>>8&255,e.check=Q(e.check,W,2,0)),a=0,r=0,e.mode=3;case 3:for(;r<32;){if(0===A)break g;A--,a+=U[i++]<<r,r+=8}e.head&&(e.head.time=a),512&e.flags&&(W[0]=255&a,W[1]=a>>>8&255,W[2]=a>>>16&255,W[3]=a>>>24&255,e.check=Q(e.check,W,4,0)),a=0,r=0,e.mode=4;case 4:for(;r<16;){if(0===A)break g;A--,a+=U[i++]<<r,r+=8}e.head&&(e.head.xflags=255&a,e.head.os=a>>8),512&e.flags&&(W[0]=255&a,W[1]=a>>>8&255,e.check=Q(e.check,W,2,0)),a=0,r=0,e.mode=5;case 5:if(1024&e.flags){for(;r<16;){if(0===A)break g;A--,a+=U[i++]<<r,r+=8}e.length=a,e.head&&(e.head.extra_len=a),512&e.flags&&(W[0]=255&a,W[1]=a>>>8&255,e.check=Q(e.check,W,2,0)),a=0,r=0}else e.head&&(e.head.extra=null);e.mode=6;case 6:if(1024&e.flags&&((b=e.length)>A&&(b=A),b&&(e.head&&(h=e.head.extra_len-e.length,e.head.extra||(e.head.extra=new Array(e.head.extra_len)),t.arraySet(e.head.extra,U,i,b,h)),512&e.flags&&(e.check=Q(e.check,U,b,i)),A-=b,i+=b,e.length-=b),e.length))break g;e.length=0,e.mode=7;case 7:if(2048&e.flags){if(0===A)break g;b=0;do{h=U[i+b++],e.head&&h&&e.length<65536&&(e.head.name+=String.fromCharCode(h))}while(h&&b<A);if(512&e.flags&&(e.check=Q(e.check,U,b,i)),A-=b,i+=b,h)break g}else e.head&&(e.head.name=null);e.length=0,e.mode=8;case 8:if(4096&e.flags){if(0===A)break g;b=0;do{h=U[i+b++],e.head&&h&&e.length<65536&&(e.head.comment+=String.fromCharCode(h))}while(h&&b<A);if(512&e.flags&&(e.check=Q(e.check,U,b,i)),A-=b,i+=b,h)break g}else e.head&&(e.head.comment=null);e.mode=9;case 9:if(512&e.flags){for(;r<16;){if(0===A)break g;A--,a+=U[i++]<<r,r+=8}if(a!==(65535&e.check)){g.msg="header crc mismatch",e.mode=30;break}a=0,r=0}e.head&&(e.head.hcrc=e.flags>>9&1,e.head.done=!0),g.adler=e.check=0,e.mode=12;break;case 10:for(;r<32;){if(0===A)break g;A--,a+=U[i++]<<r,r+=8}g.adler=e.check=n(a),a=0,r=0,e.mode=11;case 11:if(0===e.havedict)return g.next_out=c,g.avail_out=l,g.next_in=i,g.avail_in=A,e.hold=a,e.bits=r,2;g.adler=e.check=1,e.mode=12;case 12:if(5===I||6===I)break g;case 13:if(e.last){a>>>=7&r,r-=7&r,e.mode=27;break}for(;r<3;){if(0===A)break g;A--,a+=U[i++]<<r,r+=8}switch(e.last=1&a,r-=1,3&(a>>>=1)){case 0:e.mode=14;break;case 1:if(o(e),e.mode=20,6===I){a>>>=2,r-=2;break g}break;case 2:e.mode=17;break;case 3:g.msg="invalid block type",e.mode=30}a>>>=2,r-=2;break;case 14:for(a>>>=7&r,r-=7&r;r<32;){if(0===A)break g;A--,a+=U[i++]<<r,r+=8}if((65535&a)!==(a>>>16^65535)){g.msg="invalid stored block lengths",e.mode=30;break}if(e.length=65535&a,a=0,r=0,e.mode=15,6===I)break g;case 15:e.mode=16;case 16:if(b=e.length){if(b>A&&(b=A),b>l&&(b=l),0===b)break g;t.arraySet(s,U,i,b,c),A-=b,i+=b,l-=b,c+=b,e.length-=b;break}e.mode=12;break;case 17:for(;r<14;){if(0===A)break g;A--,a+=U[i++]<<r,r+=8}if(e.nlen=257+(31&a),a>>>=5,r-=5,e.ndist=1+(31&a),a>>>=5,r-=5,e.ncode=4+(15&a),a>>>=4,r-=4,e.nlen>286||e.ndist>30){g.msg="too many length or distance symbols",e.mode=30;break}e.have=0,e.mode=18;case 18:for(;e.have<e.ncode;){for(;r<3;){if(0===A)break g;A--,a+=U[i++]<<r,r+=8}e.lens[f[e.have++]]=7&a,a>>>=3,r-=3}for(;e.have<19;)e.lens[f[e.have++]]=0;if(e.lencode=e.lendyn,e.lenbits=7,p={bits:e.lenbits},D=B(0,e.lens,0,19,e.lencode,0,e.work,p),e.lenbits=p.bits,D){g.msg="invalid code lengths set",e.mode=30;break}e.have=0,e.mode=19;case 19:for(;e.have<e.nlen+e.ndist;){for(;R=(N=e.lencode[a&(1<<e.lenbits)-1])>>>16&255,S=65535&N,!((x=N>>>24)<=r);){if(0===A)break g;A--,a+=U[i++]<<r,r+=8}if(S<16)a>>>=x,r-=x,e.lens[e.have++]=S;else{if(16===S){for(E=x+2;r<E;){if(0===A)break g;A--,a+=U[i++]<<r,r+=8}if(a>>>=x,r-=x,0===e.have){g.msg="invalid bit length repeat",e.mode=30;break}h=e.lens[e.have-1],b=3+(3&a),a>>>=2,r-=2}else if(17===S){for(E=x+3;r<E;){if(0===A)break g;A--,a+=U[i++]<<r,r+=8}r-=x,h=0,b=3+(7&(a>>>=x)),a>>>=3,r-=3}else{for(E=x+7;r<E;){if(0===A)break g;A--,a+=U[i++]<<r,r+=8}r-=x,h=0,b=11+(127&(a>>>=x)),a>>>=7,r-=7}if(e.have+b>e.nlen+e.ndist){g.msg="invalid bit length repeat",e.mode=30;break}for(;b--;)e.lens[e.have++]=h}}if(30===e.mode)break;if(0===e.lens[256]){g.msg="invalid code -- missing end-of-block",e.mode=30;break}if(e.lenbits=9,p={bits:e.lenbits},D=B(1,e.lens,0,e.nlen,e.lencode,0,e.work,p),e.lenbits=p.bits,D){g.msg="invalid literal/lengths set",e.mode=30;break}if(e.distbits=6,e.distcode=e.distdyn,p={bits:e.distbits},D=B(2,e.lens,e.nlen,e.ndist,e.distcode,0,e.work,p),e.distbits=p.bits,D){g.msg="invalid distances set",e.mode=30;break}if(e.mode=20,6===I)break g;case 20:e.mode=21;case 21:if(A>=6&&l>=258){g.next_out=c,g.avail_out=l,g.next_in=i,g.avail_in=A,e.hold=a,e.bits=r,F(g,y),c=g.next_out,s=g.output,l=g.avail_out,i=g.next_in,U=g.input,A=g.avail_in,a=e.hold,r=e.bits,12===e.mode&&(e.back=-1);break}for(e.back=0;R=(N=e.lencode[a&(1<<e.lenbits)-1])>>>16&255,S=65535&N,!((x=N>>>24)<=r);){if(0===A)break g;A--,a+=U[i++]<<r,r+=8}if(R&&0===(240&R)){for(G=x,L=R,V=S;R=(N=e.lencode[V+((a&(1<<G+L)-1)>>G)])>>>16&255,S=65535&N,!(G+(x=N>>>24)<=r);){if(0===A)break g;A--,a+=U[i++]<<r,r+=8}a>>>=G,r-=G,e.back+=G}if(a>>>=x,r-=x,e.back+=x,e.length=S,0===R){e.mode=26;break}if(32&R){e.back=-1,e.mode=12;break}if(64&R){g.msg="invalid literal/length code",e.mode=30;break}e.extra=15&R,e.mode=22;case 22:if(e.extra){for(E=e.extra;r<E;){if(0===A)break g;A--,a+=U[i++]<<r,r+=8}e.length+=a&(1<<e.extra)-1,a>>>=e.extra,r-=e.extra,e.back+=e.extra}e.was=e.length,e.mode=23;case 23:for(;R=(N=e.distcode[a&(1<<e.distbits)-1])>>>16&255,S=65535&N,!((x=N>>>24)<=r);){if(0===A)break g;A--,a+=U[i++]<<r,r+=8}if(0===(240&R)){for(G=x,L=R,V=S;R=(N=e.distcode[V+((a&(1<<G+L)-1)>>G)])>>>16&255,S=65535&N,!(G+(x=N>>>24)<=r);){if(0===A)break g;A--,a+=U[i++]<<r,r+=8}a>>>=G,r-=G,e.back+=G}if(a>>>=x,r-=x,e.back+=x,64&R){g.msg="invalid distance code",e.mode=30;break}e.offset=S,e.extra=15&R,e.mode=24;case 24:if(e.extra){for(E=e.extra;r<E;){if(0===A)break g;A--,a+=U[i++]<<r,r+=8}e.offset+=a&(1<<e.extra)-1,a>>>=e.extra,r-=e.extra,e.back+=e.extra}if(e.offset>e.dmax){g.msg="invalid distance too far back",e.mode=30;break}e.mode=25;case 25:if(0===l)break g;if(b=y-l,e.offset>b){if((b=e.offset-b)>e.whave&&e.sane){g.msg="invalid distance too far back",e.mode=30;break}b>e.wnext?(b-=e.wnext,Z=e.wsize-b):Z=e.wnext-b,b>e.length&&(b=e.length),m=e.window}else m=s,Z=c-e.offset,b=e.length;b>l&&(b=l),l-=b,e.length-=b;do{s[c++]=m[Z++]}while(--b);0===e.length&&(e.mode=21);break;case 26:if(0===l)break g;s[c++]=e.length,l--,e.mode=21;break;case 27:if(e.wrap){for(;r<32;){if(0===A)break g;A--,a|=U[i++]<<r,r+=8}if(y-=l,g.total_out+=y,e.total+=y,y&&(g.adler=e.check=e.flags?Q(e.check,s,y,c-y):C(e.check,s,y,c-y)),y=l,(e.flags?a:n(a))!==e.check){g.msg="incorrect data check",e.mode=30;break}a=0,r=0}e.mode=28;case 28:if(e.wrap&&e.flags){for(;r<32;){if(0===A)break g;A--,a+=U[i++]<<r,r+=8}if(a!==(4294967295&e.total)){g.msg="incorrect length check",e.mode=30;break}a=0,r=0}e.mode=29;case 29:D=1;break g;case 30:D=-3;break g;case 31:return-4;case 32:default:return-2}return g.next_out=c,g.avail_out=l,g.next_in=i,g.avail_in=A,e.hold=a,e.bits=r,(e.wsize||y!==g.avail_out&&e.mode<30&&(e.mode<27||4!==I))&&d(g,g.output,g.next_out,y-g.avail_out)?(e.mode=31,-4):(u-=g.avail_in,y-=g.avail_out,g.total_in+=u,g.total_out+=y,e.total+=y,e.wrap&&y&&(g.adler=e.check=e.flags?Q(e.check,s,y,g.next_out-y):C(e.check,s,y,g.next_out-y)),g.data_type=e.bits+(e.last?64:0)+(12===e.mode?128:0)+(20===e.mode||15===e.mode?256:0),(0===u&&0===y||4===I)&&0===D&&(D=-5),D)},I.inflateEnd=function(g){if(!g||!g.state)return-2;var I=g.state;return I.window&&(I.window=null),g.state=null,0},I.inflateGetHeader=function(g,I){var e;return g&&g.state?0===(2&(e=g.state).wrap)?-2:(e.head=I,I.done=!1,0):-2},I.inflateSetDictionary=function(g,I){var e,t=I.length;return g&&g.state?0!==(e=g.state).wrap&&11!==e.mode?-2:11===e.mode&&C(1,I,t,0)!==e.check?-3:d(g,I,t,t)?(e.mode=31,-4):(e.havedict=1,0):-2},I.inflateInfo="pako inflate (from Nodeca project)"},function(g,I,e){"use strict";g.exports=function(g,I){var e,t,C,Q,F,B,n,U,s,i,c,A,l,a,r,o,d,u,y,b,Z,m,x,R,S;e=g.state,t=g.next_in,R=g.input,C=t+(g.avail_in-5),Q=g.next_out,S=g.output,F=Q-(I-g.avail_out),B=Q+(g.avail_out-257),n=e.dmax,U=e.wsize,s=e.whave,i=e.wnext,c=e.window,A=e.hold,l=e.bits,a=e.lencode,r=e.distcode,o=(1<<e.lenbits)-1,d=(1<<e.distbits)-1;g:do{l<15&&(A+=R[t++]<<l,l+=8,A+=R[t++]<<l,l+=8),u=a[A&o];I:for(;;){if(A>>>=y=u>>>24,l-=y,0===(y=u>>>16&255))S[Q++]=65535&u;else{if(!(16&y)){if(0===(64&y)){u=a[(65535&u)+(A&(1<<y)-1)];continue I}if(32&y){e.mode=12;break g}g.msg="invalid literal/length code",e.mode=30;break g}b=65535&u,(y&=15)&&(l<y&&(A+=R[t++]<<l,l+=8),b+=A&(1<<y)-1,A>>>=y,l-=y),l<15&&(A+=R[t++]<<l,l+=8,A+=R[t++]<<l,l+=8),u=r[A&d];e:for(;;){if(A>>>=y=u>>>24,l-=y,!(16&(y=u>>>16&255))){if(0===(64&y)){u=r[(65535&u)+(A&(1<<y)-1)];continue e}g.msg="invalid distance code",e.mode=30;break g}if(Z=65535&u,l<(y&=15)&&(A+=R[t++]<<l,(l+=8)<y&&(A+=R[t++]<<l,l+=8)),(Z+=A&(1<<y)-1)>n){g.msg="invalid distance too far back",e.mode=30;break g}if(A>>>=y,l-=y,Z>(y=Q-F)){if((y=Z-y)>s&&e.sane){g.msg="invalid distance too far back",e.mode=30;break g}if(m=0,x=c,0===i){if(m+=U-y,y<b){b-=y;do{S[Q++]=c[m++]}while(--y);m=Q-Z,x=S}}else if(i<y){if(m+=U+i-y,(y-=i)<b){b-=y;do{S[Q++]=c[m++]}while(--y);if(m=0,i<b){b-=y=i;do{S[Q++]=c[m++]}while(--y);m=Q-Z,x=S}}}else if(m+=i-y,y<b){b-=y;do{S[Q++]=c[m++]}while(--y);m=Q-Z,x=S}for(;b>2;)S[Q++]=x[m++],S[Q++]=x[m++],S[Q++]=x[m++],b-=3;b&&(S[Q++]=x[m++],b>1&&(S[Q++]=x[m++]))}else{m=Q-Z;do{S[Q++]=S[m++],S[Q++]=S[m++],S[Q++]=S[m++],b-=3}while(b>2);b&&(S[Q++]=S[m++],b>1&&(S[Q++]=S[m++]))}break}}break}}while(t<C&&Q<B);t-=b=l>>3,A&=(1<<(l-=b<<3))-1,g.next_in=t,g.next_out=Q,g.avail_in=t<C?C-t+5:5-(t-C),g.avail_out=Q<B?B-Q+257:257-(Q-B),e.hold=A,e.bits=l}},function(g,I,e){"use strict";var t=e(415),C=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],Q=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],F=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],B=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];g.exports=function(g,I,e,n,U,s,i,c){var A,l,a,r,o,d,u,y,b,Z=c.bits,m=0,x=0,R=0,S=0,G=0,L=0,V=0,h=0,D=0,p=0,E=null,N=0,W=new t.Buf16(16),f=new t.Buf16(16),X=null,J=0;for(m=0;m<=15;m++)W[m]=0;for(x=0;x<n;x++)W[I[e+x]]++;for(G=Z,S=15;S>=1&&0===W[S];S--);if(G>S&&(G=S),0===S)return U[s++]=20971520,U[s++]=20971520,c.bits=1,0;for(R=1;R<S&&0===W[R];R++);for(G<R&&(G=R),h=1,m=1;m<=15;m++)if(h<<=1,(h-=W[m])<0)return-1;if(h>0&&(0===g||1!==S))return-1;for(f[1]=0,m=1;m<15;m++)f[m+1]=f[m]+W[m];for(x=0;x<n;x++)0!==I[e+x]&&(i[f[I[e+x]]++]=x);if(0===g?(E=X=i,d=19):1===g?(E=C,N-=257,X=Q,J-=257,d=256):(E=F,X=B,d=-1),p=0,x=0,m=R,o=s,L=G,V=0,a=-1,r=(D=1<<G)-1,1===g&&D>852||2===g&&D>592)return 1;for(;;){u=m-V,i[x]<d?(y=0,b=i[x]):i[x]>d?(y=X[J+i[x]],b=E[N+i[x]]):(y=96,b=0),A=1<<m-V,R=l=1<<L;do{U[o+(p>>V)+(l-=A)]=u<<24|y<<16|b|0}while(0!==l);for(A=1<<m-1;p&A;)A>>=1;if(0!==A?(p&=A-1,p+=A):p=0,x++,0===--W[m]){if(m===S)break;m=I[e+i[x]]}if(m>G&&(p&r)!==a){for(0===V&&(V=G),o+=R,h=1<<(L=m-V);L+V<S&&!((h-=W[L+V])<=0);)L++,h<<=1;if(D+=1<<L,1===g&&D>852||2===g&&D>592)return 1;U[a=p&r]=G<<24|L<<16|o-s|0}}return 0!==p&&(U[o+p]=m-V<<24|64<<16|0),c.bits=G,0}},function(g,I,e){"use strict";g.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},function(g,I,e){var t=e(1500);g.exports=function(g,I){if(g){if("string"===typeof g)return t(g,I);var e=Object.prototype.toString.call(g).slice(8,-1);return"Object"===e&&g.constructor&&(e=g.constructor.name),"Map"===e||"Set"===e?Array.from(g):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?t(g,I):void 0}},g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I){g.exports=function(g,I){(null==I||I>g.length)&&(I=g.length);for(var e=0,t=new Array(I);e<I;e++)t[e]=g[e];return t},g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I,e){(function(I){g.exports=function(){var g=g||function(g,t){var C;if("undefined"!==typeof window&&window.crypto&&(C=window.crypto),"undefined"!==typeof self&&self.crypto&&(C=self.crypto),"undefined"!==typeof globalThis&&globalThis.crypto&&(C=globalThis.crypto),!C&&"undefined"!==typeof window&&window.msCrypto&&(C=window.msCrypto),!C&&"undefined"!==typeof I&&I.crypto&&(C=I.crypto),!C)try{C=e(1502)}catch(o){}var Q=function(){if(C){if("function"===typeof C.getRandomValues)try{return C.getRandomValues(new Uint32Array(1))[0]}catch(o){}if("function"===typeof C.randomBytes)try{return C.randomBytes(4).readInt32LE()}catch(o){}}throw new Error("Native crypto module could not be used to get secure random number.")},F=Object.create||function(){function g(){}return function(I){var e;return g.prototype=I,e=new g,g.prototype=null,e}}(),B={},n=B.lib={},U=n.Base={extend:function(g){var I=F(this);return g&&I.mixIn(g),I.hasOwnProperty("init")&&this.init!==I.init||(I.init=function(){I.$super.init.apply(this,arguments)}),I.init.prototype=I,I.$super=this,I},create:function(){var g=this.extend();return g.init.apply(g,arguments),g},init:function(){},mixIn:function(g){for(var I in g)g.hasOwnProperty(I)&&(this[I]=g[I]);g.hasOwnProperty("toString")&&(this.toString=g.toString)},clone:function(){return this.init.prototype.extend(this)}},s=n.WordArray=U.extend({init:function(g,I){g=this.words=g||[],this.sigBytes=void 0!=I?I:4*g.length},toString:function(g){return(g||c).stringify(this)},concat:function(g){var I=this.words,e=g.words,t=this.sigBytes,C=g.sigBytes;if(this.clamp(),t%4)for(var Q=0;Q<C;Q++){var F=e[Q>>>2]>>>24-Q%4*8&255;I[t+Q>>>2]|=F<<24-(t+Q)%4*8}else for(var B=0;B<C;B+=4)I[t+B>>>2]=e[B>>>2];return this.sigBytes+=C,this},clamp:function(){var I=this.words,e=this.sigBytes;I[e>>>2]&=4294967295<<32-e%4*8,I.length=g.ceil(e/4)},clone:function(){var g=U.clone.call(this);return g.words=this.words.slice(0),g},random:function(g){for(var I=[],e=0;e<g;e+=4)I.push(Q());return new s.init(I,g)}}),i=B.enc={},c=i.Hex={stringify:function(g){for(var I=g.words,e=g.sigBytes,t=[],C=0;C<e;C++){var Q=I[C>>>2]>>>24-C%4*8&255;t.push((Q>>>4).toString(16)),t.push((15&Q).toString(16))}return t.join("")},parse:function(g){for(var I=g.length,e=[],t=0;t<I;t+=2)e[t>>>3]|=parseInt(g.substr(t,2),16)<<24-t%8*4;return new s.init(e,I/2)}},A=i.Latin1={stringify:function(g){for(var I=g.words,e=g.sigBytes,t=[],C=0;C<e;C++){var Q=I[C>>>2]>>>24-C%4*8&255;t.push(String.fromCharCode(Q))}return t.join("")},parse:function(g){for(var I=g.length,e=[],t=0;t<I;t++)e[t>>>2]|=(255&g.charCodeAt(t))<<24-t%4*8;return new s.init(e,I)}},l=i.Utf8={stringify:function(g){try{return decodeURIComponent(escape(A.stringify(g)))}catch(I){throw new Error("Malformed UTF-8 data")}},parse:function(g){return A.parse(unescape(encodeURIComponent(g)))}},a=n.BufferedBlockAlgorithm=U.extend({reset:function(){this._data=new s.init,this._nDataBytes=0},_append:function(g){"string"==typeof g&&(g=l.parse(g)),this._data.concat(g),this._nDataBytes+=g.sigBytes},_process:function(I){var e,t=this._data,C=t.words,Q=t.sigBytes,F=this.blockSize,B=Q/(4*F),n=(B=I?g.ceil(B):g.max((0|B)-this._minBufferSize,0))*F,U=g.min(4*n,Q);if(n){for(var i=0;i<n;i+=F)this._doProcessBlock(C,i);e=C.splice(0,n),t.sigBytes-=U}return new s.init(e,U)},clone:function(){var g=U.clone.call(this);return g._data=this._data.clone(),g},_minBufferSize:0}),r=(n.Hasher=a.extend({cfg:U.extend(),init:function(g){this.cfg=this.cfg.extend(g),this.reset()},reset:function(){a.reset.call(this),this._doReset()},update:function(g){return this._append(g),this._process(),this},finalize:function(g){return g&&this._append(g),this._doFinalize()},blockSize:16,_createHelper:function(g){return function(I,e){return new g.init(e).finalize(I)}},_createHmacHelper:function(g){return function(I,e){return new r.HMAC.init(g,e).finalize(I)}}}),B.algo={});return B}(Math);return g}()}).call(this,e(67))},,function(g,I,e){"use strict";var t=e(43).default,C=e(37).default;I.__esModule=!0,I.default=void 0;var Q=C(e(417)),F=C(e(418)),B=t(e(20)),n=function(){for(var g=arguments.length,I=new Array(g),e=0;e<g;e++)I[e]=arguments[e];return function(){var g=(0,F.default)(Q.default.mark((function g(e){var t,C,F,n,U,s,i,c=arguments;return Q.default.wrap((function(g){for(;;)switch(g.prev=g.next){case 0:for(t=e,C=B.reverse(I),F=c.length,n=new Array(F>1?F-1:0),U=1;U<F;U++)n[U-1]=c[U];s=0;case 4:if(!(s<C.length)){g.next=12;break}return i=C[s],g.next=8,i.apply(void 0,[t].concat(n));case 8:t=g.sent;case 9:s+=1,g.next=4;break;case 12:return g.abrupt("return",t);case 13:case"end":return g.stop()}}),g)})));return function(I){return g.apply(this,arguments)}}()};I.default=n},function(g,I,e){var t=e(416).default;function C(){"use strict";g.exports=C=function(){return I},g.exports.__esModule=!0,g.exports.default=g.exports;var I={},e=Object.prototype,Q=e.hasOwnProperty,F=Object.defineProperty||function(g,I,e){g[I]=e.value},B="function"==typeof Symbol?Symbol:{},n=B.iterator||"@@iterator",U=B.asyncIterator||"@@asyncIterator",s=B.toStringTag||"@@toStringTag";function i(g,I,e){return Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}),g[I]}try{i({},"")}catch(D){i=function(g,I,e){return g[I]=e}}function c(g,I,e,t){var C=I&&I.prototype instanceof a?I:a,Q=Object.create(C.prototype),B=new L(t||[]);return F(Q,"_invoke",{value:x(g,e,B)}),Q}function A(g,I,e){try{return{type:"normal",arg:g.call(I,e)}}catch(D){return{type:"throw",arg:D}}}I.wrap=c;var l={};function a(){}function r(){}function o(){}var d={};i(d,n,(function(){return this}));var u=Object.getPrototypeOf,y=u&&u(u(V([])));y&&y!==e&&Q.call(y,n)&&(d=y);var b=o.prototype=a.prototype=Object.create(d);function Z(g){["next","throw","return"].forEach((function(I){i(g,I,(function(g){return this._invoke(I,g)}))}))}function m(g,I){var e;F(this,"_invoke",{value:function(C,F){function B(){return new I((function(e,B){!function e(C,F,B,n){var U=A(g[C],g,F);if("throw"!==U.type){var s=U.arg,i=s.value;return i&&"object"==t(i)&&Q.call(i,"__await")?I.resolve(i.__await).then((function(g){e("next",g,B,n)}),(function(g){e("throw",g,B,n)})):I.resolve(i).then((function(g){s.value=g,B(s)}),(function(g){return e("throw",g,B,n)}))}n(U.arg)}(C,F,e,B)}))}return e=e?e.then(B,B):B()}})}function x(g,I,e){var t="suspendedStart";return function(C,Q){if("executing"===t)throw new Error("Generator is already running");if("completed"===t){if("throw"===C)throw Q;return h()}for(e.method=C,e.arg=Q;;){var F=e.delegate;if(F){var B=R(F,e);if(B){if(B===l)continue;return B}}if("next"===e.method)e.sent=e._sent=e.arg;else if("throw"===e.method){if("suspendedStart"===t)throw t="completed",e.arg;e.dispatchException(e.arg)}else"return"===e.method&&e.abrupt("return",e.arg);t="executing";var n=A(g,I,e);if("normal"===n.type){if(t=e.done?"completed":"suspendedYield",n.arg===l)continue;return{value:n.arg,done:e.done}}"throw"===n.type&&(t="completed",e.method="throw",e.arg=n.arg)}}}function R(g,I){var e=I.method,t=g.iterator[e];if(void 0===t)return I.delegate=null,"throw"===e&&g.iterator.return&&(I.method="return",I.arg=void 0,R(g,I),"throw"===I.method)||"return"!==e&&(I.method="throw",I.arg=new TypeError("The iterator does not provide a '"+e+"' method")),l;var C=A(t,g.iterator,I.arg);if("throw"===C.type)return I.method="throw",I.arg=C.arg,I.delegate=null,l;var Q=C.arg;return Q?Q.done?(I[g.resultName]=Q.value,I.next=g.nextLoc,"return"!==I.method&&(I.method="next",I.arg=void 0),I.delegate=null,l):Q:(I.method="throw",I.arg=new TypeError("iterator result is not an object"),I.delegate=null,l)}function S(g){var I={tryLoc:g[0]};1 in g&&(I.catchLoc=g[1]),2 in g&&(I.finallyLoc=g[2],I.afterLoc=g[3]),this.tryEntries.push(I)}function G(g){var I=g.completion||{};I.type="normal",delete I.arg,g.completion=I}function L(g){this.tryEntries=[{tryLoc:"root"}],g.forEach(S,this),this.reset(!0)}function V(g){if(g){var I=g[n];if(I)return I.call(g);if("function"==typeof g.next)return g;if(!isNaN(g.length)){var e=-1,t=function I(){for(;++e<g.length;)if(Q.call(g,e))return I.value=g[e],I.done=!1,I;return I.value=void 0,I.done=!0,I};return t.next=t}}return{next:h}}function h(){return{value:void 0,done:!0}}return r.prototype=o,F(b,"constructor",{value:o,configurable:!0}),F(o,"constructor",{value:r,configurable:!0}),r.displayName=i(o,s,"GeneratorFunction"),I.isGeneratorFunction=function(g){var I="function"==typeof g&&g.constructor;return!!I&&(I===r||"GeneratorFunction"===(I.displayName||I.name))},I.mark=function(g){return Object.setPrototypeOf?Object.setPrototypeOf(g,o):(g.__proto__=o,i(g,s,"GeneratorFunction")),g.prototype=Object.create(b),g},I.awrap=function(g){return{__await:g}},Z(m.prototype),i(m.prototype,U,(function(){return this})),I.AsyncIterator=m,I.async=function(g,e,t,C,Q){void 0===Q&&(Q=Promise);var F=new m(c(g,e,t,C),Q);return I.isGeneratorFunction(e)?F:F.next().then((function(g){return g.done?g.value:F.next()}))},Z(b),i(b,s,"Generator"),i(b,n,(function(){return this})),i(b,"toString",(function(){return"[object Generator]"})),I.keys=function(g){var I=Object(g),e=[];for(var t in I)e.push(t);return e.reverse(),function g(){for(;e.length;){var t=e.pop();if(t in I)return g.value=t,g.done=!1,g}return g.done=!0,g}},I.values=V,L.prototype={constructor:L,reset:function(g){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(G),!g)for(var I in this)"t"===I.charAt(0)&&Q.call(this,I)&&!isNaN(+I.slice(1))&&(this[I]=void 0)},stop:function(){this.done=!0;var g=this.tryEntries[0].completion;if("throw"===g.type)throw g.arg;return this.rval},dispatchException:function(g){if(this.done)throw g;var I=this;function e(e,t){return F.type="throw",F.arg=g,I.next=e,t&&(I.method="next",I.arg=void 0),!!t}for(var t=this.tryEntries.length-1;t>=0;--t){var C=this.tryEntries[t],F=C.completion;if("root"===C.tryLoc)return e("end");if(C.tryLoc<=this.prev){var B=Q.call(C,"catchLoc"),n=Q.call(C,"finallyLoc");if(B&&n){if(this.prev<C.catchLoc)return e(C.catchLoc,!0);if(this.prev<C.finallyLoc)return e(C.finallyLoc)}else if(B){if(this.prev<C.catchLoc)return e(C.catchLoc,!0)}else{if(!n)throw new Error("try statement without catch or finally");if(this.prev<C.finallyLoc)return e(C.finallyLoc)}}}},abrupt:function(g,I){for(var e=this.tryEntries.length-1;e>=0;--e){var t=this.tryEntries[e];if(t.tryLoc<=this.prev&&Q.call(t,"finallyLoc")&&this.prev<t.finallyLoc){var C=t;break}}C&&("break"===g||"continue"===g)&&C.tryLoc<=I&&I<=C.finallyLoc&&(C=null);var F=C?C.completion:{};return F.type=g,F.arg=I,C?(this.method="next",this.next=C.finallyLoc,l):this.complete(F)},complete:function(g,I){if("throw"===g.type)throw g.arg;return"break"===g.type||"continue"===g.type?this.next=g.arg:"return"===g.type?(this.rval=this.arg=g.arg,this.method="return",this.next="end"):"normal"===g.type&&I&&(this.next=I),l},finish:function(g){for(var I=this.tryEntries.length-1;I>=0;--I){var e=this.tryEntries[I];if(e.finallyLoc===g)return this.complete(e.completion,e.afterLoc),G(e),l}},catch:function(g){for(var I=this.tryEntries.length-1;I>=0;--I){var e=this.tryEntries[I];if(e.tryLoc===g){var t=e.completion;if("throw"===t.type){var C=t.arg;G(e)}return C}}throw new Error("illegal catch attempt")},delegateYield:function(g,I,e){return this.delegate={iterator:V(g),resultName:I,nextLoc:e},"next"===this.method&&(this.arg=void 0),l}},I}g.exports=C,g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I,e){"use strict";var t=e(37).default,C=e(43).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=C(e(53)),B=e(764),n=t(e(1530)),U=t(e(1589)),s=t(e(1591)),i=t(e(799)),c=t(e(1592)),A=t(e(291)),l=t(e(1593)),a=["width","height","color","stroke","strokeWidth","opacity","fillOpacity","strokeOpacity","fill","fillRule","clipPath","offset","transform","strokeLinejoin","strokeLinecap","strokeDasharray"],r=["y","y1","y2","height","cy","ry"],o=["x","x1","x2","width","cx","rx"],d=Q.propEq("type"),u=d(F.Svg),y=d(F.Text),b=d(F.TextInstance),Z=function(g){return Q.mapObjIndexed((function(I,e){var t=(0,A.default)(I);return t&&r.includes(e)?t.percent*g.height:t&&o.includes(e)?t.percent*g.width:I}))},m=function(g){var I=(0,A.default)(g);return I?I.percent:parseFloat(g)},x=function(g){var I=g.style||{};return Q.evolve({props:Q.merge(I)},g)},R=Q.evolve({props:Q.map(Q.when(Q.equals("none"),Q.always(null)))}),S=function(g){var I=g.props||{},e=Q.pick(a,I);return Q.evolve({style:Q.merge(e)},g)},G=Q.evolve({props:Q.evolve({width:parseFloat,height:parseFloat,viewBox:i.default,preserveAspectRatio:l.default})}),L=Q.when(y,Q.evolve({children:Q.map(Q.when(b,(function(g){return{type:F.Tspan,props:{},children:[g]}})))})),V=function(g){return Q.compose(function(g){return Q.compose(Q.evolve({props:Q.o(Q.evolve({x:parseFloat,x1:parseFloat,x2:parseFloat,y:parseFloat,y1:parseFloat,y2:parseFloat,r:parseFloat,rx:parseFloat,ry:parseFloat,cx:parseFloat,cy:parseFloat,width:parseFloat,height:parseFloat,offset:m,fill:B.transformColor,opacity:m,stroke:B.transformColor,stopOpacity:m,stopColor:B.transformColor,transform:B.processTransform}),Z(g))}))}(g),L,R,x)},h=function(g){return function(I){var e=(0,s.default)(I);return Q.compose(U.default,function g(I){return function(e){return Q.ifElse(y,(0,n.default)(I),Q.evolve({children:Q.map(g(I))}))(e)}}(g),G,S,c.default,function g(I){return function(e){return Q.evolve({children:Q.map(Q.compose(g(I),V(I)))})(e)}}(e))(I)}},D=function g(I,e){return Q.compose(Q.evolve({children:Q.map((function(I){return g(I,e)}))}),Q.when(u,h(e)))(I)};I.default=D},function(g,I){function e(I){return g.exports=e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"==typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g},g.exports.__esModule=!0,g.exports.default=g.exports,e(I)}g.exports=e,g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I,e){"use strict";var t=e(191).default;I.__esModule=!0,I.default=void 0;var C=t(e(1508)),Q=e(1509),F=t(e(1512)),B=e(1513),n=t(e(1514)),U=t(e(1515)),s={flex:C.default,margin:Q.processMargin,marginHorizontal:Q.processMarginHorizontal,marginVertical:Q.processMarginVertical,marginTop:Q.processMarginSingle,marginRight:Q.processMarginSingle,marginBottom:Q.processMarginSingle,marginLeft:Q.processMarginSingle,padding:B.processPadding,paddingHorizontal:B.processPaddingHorizontal,paddingVertical:B.processPaddingVertical,paddingTop:B.processPaddingSingle,paddingRight:B.processPaddingSingle,paddingBottom:B.processPaddingSingle,paddingLeft:B.processPaddingSingle,border:F.default,borderTop:F.default,borderRight:F.default,borderBottom:F.default,borderLeft:F.default,borderColor:F.default,borderRadius:F.default,borderStyle:F.default,borderWidth:F.default,objectPosition:n.default,transformOrigin:U.default},i=function(g,I){var e;return s[g]?s[g](g,I):((e={})[g]=I,e)},c=function(g){if(!g)return g;for(var I=Object.keys(g),e={},t=0;t<I.length;t+=1)for(var C=I[t],Q=g[C],F=i(C,Q),B=Object.keys(F),n=0;n<B.length;n+=1){var U=B[n],s=F[U];e[U]=s}return e};I.default=c},function(g,I,e){"use strict";I.__esModule=!0,I.default=void 0;var t=[1,1,0],C=function(g,I){var e=(""+I).split(" ");return{flexGrow:e[0]||t[0],flexShrink:e[1]||t[1],flexBasis:e[2]||t[2]}};I.default=C},function(g,I,e){"use strict";var t=e(191).default;I.__esModule=!0,I.processMarginVertical=I.processMarginSingle=I.processMarginHorizontal=I.processMargin=void 0;var C=t(e(765)),Q=(0,C.default)({expandsTo:function(g){return{marginTop:g.first,marginRight:g.second,marginBottom:g.third,marginLeft:g.fourth}},maxValues:4,autoSupported:!0});I.processMargin=Q;var F=(0,C.default)({expandsTo:function(g){return{marginTop:g.first,marginBottom:g.second}},maxValues:2,autoSupported:!0});I.processMarginVertical=F;var B=(0,C.default)({expandsTo:function(g){return{marginRight:g.first,marginLeft:g.second}},maxValues:2,autoSupported:!0});I.processMarginHorizontal=B;var n=(0,C.default)({autoSupported:!0});I.processMarginSingle=n},function(g,I){var e="(".charCodeAt(0),t=")".charCodeAt(0),C="'".charCodeAt(0),Q='"'.charCodeAt(0),F="\\".charCodeAt(0),B="/".charCodeAt(0),n=",".charCodeAt(0),U=":".charCodeAt(0),s="*".charCodeAt(0),i="u".charCodeAt(0),c="U".charCodeAt(0),A="+".charCodeAt(0),l=/^[a-f0-9?-]+$/i;g.exports=function(g){for(var I,a,r,o,d,u,y,b,Z,m=[],x=g,R=0,S=x.charCodeAt(R),G=x.length,L=[{nodes:m}],V=0,h="",D="",p="";R<G;)if(S<=32){I=R;do{I+=1,S=x.charCodeAt(I)}while(S<=32);o=x.slice(R,I),r=m[m.length-1],S===t&&V?p=o:r&&"div"===r.type?r.after=o:S===n||S===U||S===B&&x.charCodeAt(I+1)!==s&&(!Z||Z&&"function"===Z.type&&"calc"!==Z.value)?D=o:m.push({type:"space",sourceIndex:R,value:o}),R=I}else if(S===C||S===Q){I=R,o={type:"string",sourceIndex:R,quote:a=S===C?"'":'"'};do{if(d=!1,~(I=x.indexOf(a,I+1)))for(u=I;x.charCodeAt(u-1)===F;)u-=1,d=!d;else I=(x+=a).length-1,o.unclosed=!0}while(d);o.value=x.slice(R+1,I),m.push(o),R=I+1,S=x.charCodeAt(R)}else if(S===B&&x.charCodeAt(R+1)===s)o={type:"comment",sourceIndex:R},-1===(I=x.indexOf("*/",R))&&(o.unclosed=!0,I=x.length),o.value=x.slice(R+2,I),m.push(o),R=I+2,S=x.charCodeAt(R);else if(S!==B&&S!==s||!Z||"function"!==Z.type||"calc"!==Z.value)if(S===B||S===n||S===U)o=x[R],m.push({type:"div",sourceIndex:R-D.length,value:o,before:D,after:""}),D="",R+=1,S=x.charCodeAt(R);else if(e===S){I=R;do{I+=1,S=x.charCodeAt(I)}while(S<=32);if(b=R,o={type:"function",sourceIndex:R-h.length,value:h,before:x.slice(b+1,I)},R=I,"url"===h&&S!==C&&S!==Q){I-=1;do{if(d=!1,~(I=x.indexOf(")",I+1)))for(u=I;x.charCodeAt(u-1)===F;)u-=1,d=!d;else I=(x+=")").length-1,o.unclosed=!0}while(d);y=I;do{y-=1,S=x.charCodeAt(y)}while(S<=32);b<y?(o.nodes=R!==y+1?[{type:"word",sourceIndex:R,value:x.slice(R,y+1)}]:[],o.unclosed&&y+1!==I?(o.after="",o.nodes.push({type:"space",sourceIndex:y+1,value:x.slice(y+1,I)})):o.after=x.slice(y+1,I)):(o.after="",o.nodes=[]),R=I+1,S=x.charCodeAt(R),m.push(o)}else V+=1,o.after="",m.push(o),L.push(o),m=o.nodes=[],Z=o;h=""}else if(t===S&&V)R+=1,S=x.charCodeAt(R),Z.after=p,p="",V-=1,L.pop(),m=(Z=L[V]).nodes;else{I=R;do{S===F&&(I+=1),I+=1,S=x.charCodeAt(I)}while(I<G&&!(S<=32||S===C||S===Q||S===n||S===U||S===B||S===e||S===s&&Z&&"function"===Z.type&&"calc"===Z.value||S===B&&"function"===Z.type&&"calc"===Z.value||S===t&&V));o=x.slice(R,I),e===S?h=o:i!==o.charCodeAt(0)&&c!==o.charCodeAt(0)||A!==o.charCodeAt(1)||!l.test(o.slice(2))?m.push({type:"word",sourceIndex:R,value:o}):m.push({type:"unicode-range",sourceIndex:R,value:o}),R=I}else o=x[R],m.push({type:"word",sourceIndex:R-D.length,value:o}),R+=1,S=x.charCodeAt(R);for(R=L.length-1;R;R-=1)L[R].unclosed=!0;return L[0].nodes}},function(g,I){var e="-".charCodeAt(0),t="+".charCodeAt(0),C=".".charCodeAt(0),Q="e".charCodeAt(0),F="E".charCodeAt(0);g.exports=function(g){var I,B,n,U=0,s=g.length;if(0===s||!function(g){var I,Q=g.charCodeAt(0);if(Q===t||Q===e){if((I=g.charCodeAt(1))>=48&&I<=57)return!0;var F=g.charCodeAt(2);return I===C&&F>=48&&F<=57}return Q===C?(I=g.charCodeAt(1))>=48&&I<=57:Q>=48&&Q<=57}(g))return!1;for((I=g.charCodeAt(U))!==t&&I!==e||U++;U<s&&!((I=g.charCodeAt(U))<48||I>57);)U+=1;if(I=g.charCodeAt(U),B=g.charCodeAt(U+1),I===C&&B>=48&&B<=57)for(U+=2;U<s&&!((I=g.charCodeAt(U))<48||I>57);)U+=1;if(I=g.charCodeAt(U),B=g.charCodeAt(U+1),n=g.charCodeAt(U+2),(I===Q||I===F)&&(B>=48&&B<=57||(B===t||B===e)&&n>=48&&n<=57))for(U+=B===t||B===e?3:2;U<s&&!((I=g.charCodeAt(U))<48||I>57);)U+=1;return{number:g.slice(0,U),unit:g.slice(U)}}},function(g,I,e){"use strict";var t=e(290).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)).match(/(-?\d+(\.\d+)?(px|in|mm|cm|pt|vw|vh|px)?)\s(\S+)\s(.+)/),Q=function(g,I){var e=C(""+I);if(e){var t,Q=e[5]||I,F=e[4]||I,B=e[1]||I;return g.match(/(Top|Right|Bottom|Left)$/)?((t={})[g+"Color"]=Q,t[g+"Style"]=F,t[g+"Width"]=B,t):g.match(/Color$/)?{borderTopColor:Q,borderRightColor:Q,borderBottomColor:Q,borderLeftColor:Q}:g.match(/Style$/)?{borderTopStyle:F,borderRightStyle:F,borderBottomStyle:F,borderLeftStyle:F}:g.match(/Width$/)?{borderTopWidth:B,borderRightWidth:B,borderBottomWidth:B,borderLeftWidth:B}:g.match(/Radius$/)?{borderTopLeftRadius:I,borderTopRightRadius:I,borderBottomRightRadius:I,borderBottomLeftRadius:I}:{borderTopColor:Q,borderTopStyle:F,borderTopWidth:B,borderRightColor:Q,borderRightStyle:F,borderRightWidth:B,borderBottomColor:Q,borderBottomStyle:F,borderBottomWidth:B,borderLeftColor:Q,borderLeftStyle:F,borderLeftWidth:B}}return I};I.default=Q},function(g,I,e){"use strict";var t=e(191).default;I.__esModule=!0,I.processPaddingVertical=I.processPaddingSingle=I.processPaddingHorizontal=I.processPadding=void 0;var C=t(e(765)),Q=(0,C.default)({expandsTo:function(g){return{paddingTop:g.first,paddingRight:g.second,paddingBottom:g.third,paddingLeft:g.fourth}},maxValues:4});I.processPadding=Q;var F=(0,C.default)({expandsTo:function(g){return{paddingTop:g.first,paddingBottom:g.second}},maxValues:2});I.processPaddingVertical=F;var B=(0,C.default)({expandsTo:function(g){return{paddingRight:g.first,paddingLeft:g.second}},maxValues:2});I.processPaddingHorizontal=B;var n=(0,C.default)();I.processPaddingSingle=n},function(g,I,e){"use strict";I.__esModule=!0,I.default=void 0;var t=function(g,I){var e=(""+I).split(" ");return{objectPositionX:(null===e||void 0===e?void 0:e[0])||I,objectPositionY:(null===e||void 0===e?void 0:e[1])||I}};I.default=t},function(g,I,e){"use strict";I.__esModule=!0,I.default=void 0;var t={top:!0,bottom:!0},C=function(g,I){return t[g]?1:t[I]?-1:0},Q=function(g,I){var e,t=(""+I).split(" "),Q=(e=t)&&0!==e.length?(1===e.length?[e[0],"center"]:e).sort(C):["center","center"];return{transformOriginX:Q[0],transformOriginY:Q[1]}};I.default=Q},function(g,I,e){"use strict";var t=e(191).default;I.__esModule=!0,I.default=void 0;var C=t(e(1517)),Q=t(e(767)),F=t(e(768)),B=t(e(1521)),n=t(e(1522)),U=t(e(1523)),s=t(e(540)),i={transform:F.default,fontWeight:B.default,objectPositionX:n.default,objectPositionY:n.default,transformOriginX:U.default,transformOriginY:U.default},c=function(g,I,e){var t=i[g]?i[g](I):I;return(0,Q.default)((0,C.default)(e,(0,s.default)(t)))},A=function(g){return function(I){if(!I)return I;for(var e=Object.keys(I),t={},C=0;C<e.length;C+=1){var Q=e[C],F=I[Q],B=c(Q,F,g);t[Q]=B}return t}};I.default=A},function(g,I,e){"use strict";I.__esModule=!0,I.default=void 0;var t=function(g,I){var e=function(g){var I=/^(-?\d*\.?\d+)(in|mm|cm|pt|vh|vw|px)?$/g.exec(g);return I?{value:parseFloat(I[1],10),unit:I[2]||"pt"}:{value:g,unit:void 0}}(I);switch(e.unit){case"in":return 72*e.value;case"mm":return e.value*(1/25.4*72);case"cm":return e.value*(1/2.54*72);case"vh":return e.value*(g.height/100);case"vw":return e.value*(g.width/100);default:return e.value}};I.default=t},function(g,I,e){var t=e(1519);function C(g,I){return g>I?I:g}function Q(g,I){return g<I?I:g}g.exports=function(g,I,e){return g=function(g){for(g=Q(g=C(g,1e7),-1e7);g<0;)g+=360;for(;g>359;)g-=360;return g}(g),I=Q(C(I,100),0),e=Q(C(e,100),0),"#"+t(g,I/=100,e/=100).map((function(g){return(256+g).toString(16).substr(-2)})).join("")}},function(g,I){g.exports=function(g,I,e){if(void 0==g)return[0,0,0];var t,C,Q,F=(1-Math.abs(2*e-1))*I,B=g/60,n=F*(1-Math.abs(B%2-1));0===(B=Math.floor(B))?(t=F,C=n,Q=0):1===B?(t=n,C=F,Q=0):2===B?(t=0,C=F,Q=n):3===B?(t=0,C=n,Q=F):4===B?(t=n,C=0,Q=F):5===B&&(t=F,C=0,Q=n);var U=e-F/2;return t+=U,C+=U,Q+=U,[Math.abs(Math.round(255*t)),Math.abs(Math.round(255*C)),Math.abs(Math.round(255*Q))]}},function(g,I,e){var t=e(759),C=e(760),Q=Object.hasOwnProperty,F=Object.create(null);for(var B in t)Q.call(t,B)&&(F[t[B]]=B);var n=g.exports={to:{},get:{}};function U(g,I,e){return Math.min(Math.max(I,g),e)}function s(g){var I=Math.round(g).toString(16).toUpperCase();return I.length<2?"0"+I:I}n.get=function(g){var I,e;switch(g.substring(0,3).toLowerCase()){case"hsl":I=n.get.hsl(g),e="hsl";break;case"hwb":I=n.get.hwb(g),e="hwb";break;default:I=n.get.rgb(g),e="rgb"}return I?{model:e,value:I}:null},n.get.rgb=function(g){if(!g)return null;var I,e,C,F=[0,0,0,1];if(I=g.match(/^#([a-f0-9]{6})([a-f0-9]{2})?$/i)){for(C=I[2],I=I[1],e=0;e<3;e++){var B=2*e;F[e]=parseInt(I.slice(B,B+2),16)}C&&(F[3]=parseInt(C,16)/255)}else if(I=g.match(/^#([a-f0-9]{3,4})$/i)){for(C=(I=I[1])[3],e=0;e<3;e++)F[e]=parseInt(I[e]+I[e],16);C&&(F[3]=parseInt(C+C,16)/255)}else if(I=g.match(/^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/)){for(e=0;e<3;e++)F[e]=parseInt(I[e+1],0);I[4]&&(I[5]?F[3]=.01*parseFloat(I[4]):F[3]=parseFloat(I[4]))}else{if(!(I=g.match(/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/)))return(I=g.match(/^(\w+)$/))?"transparent"===I[1]?[0,0,0,0]:Q.call(t,I[1])?((F=t[I[1]])[3]=1,F):null:null;for(e=0;e<3;e++)F[e]=Math.round(2.55*parseFloat(I[e+1]));I[4]&&(I[5]?F[3]=.01*parseFloat(I[4]):F[3]=parseFloat(I[4]))}for(e=0;e<3;e++)F[e]=U(F[e],0,255);return F[3]=U(F[3],0,1),F},n.get.hsl=function(g){if(!g)return null;var I=g.match(/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(I){var e=parseFloat(I[4]);return[(parseFloat(I[1])%360+360)%360,U(parseFloat(I[2]),0,100),U(parseFloat(I[3]),0,100),U(isNaN(e)?1:e,0,1)]}return null},n.get.hwb=function(g){if(!g)return null;var I=g.match(/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(I){var e=parseFloat(I[4]);return[(parseFloat(I[1])%360+360)%360,U(parseFloat(I[2]),0,100),U(parseFloat(I[3]),0,100),U(isNaN(e)?1:e,0,1)]}return null},n.to.hex=function(){var g=C(arguments);return"#"+s(g[0])+s(g[1])+s(g[2])+(g[3]<1?s(Math.round(255*g[3])):"")},n.to.rgb=function(){var g=C(arguments);return g.length<4||1===g[3]?"rgb("+Math.round(g[0])+", "+Math.round(g[1])+", "+Math.round(g[2])+")":"rgba("+Math.round(g[0])+", "+Math.round(g[1])+", "+Math.round(g[2])+", "+g[3]+")"},n.to.rgb.percent=function(){var g=C(arguments),I=Math.round(g[0]/255*100),e=Math.round(g[1]/255*100),t=Math.round(g[2]/255*100);return g.length<4||1===g[3]?"rgb("+I+"%, "+e+"%, "+t+"%)":"rgba("+I+"%, "+e+"%, "+t+"%, "+g[3]+")"},n.to.hsl=function(){var g=C(arguments);return g.length<4||1===g[3]?"hsl("+g[0]+", "+g[1]+"%, "+g[2]+"%)":"hsla("+g[0]+", "+g[1]+"%, "+g[2]+"%, "+g[3]+")"},n.to.hwb=function(){var g=C(arguments),I="";return g.length>=4&&1!==g[3]&&(I=", "+g[3]),"hwb("+g[0]+", "+g[1]+"%, "+g[2]+"%"+I+")"},n.to.keyword=function(g){return F[g.slice(0,3)]}},function(g,I,e){"use strict";I.__esModule=!0,I.default=void 0;var t={thin:100,hairline:100,ultralight:200,extralight:200,light:300,normal:400,medium:500,semibold:600,demibold:600,bold:700,ultrabold:800,extrabold:800,heavy:900,black:900},C=function(g){if(!g)return t.normal;if("number"===typeof g)return g;var I=g.toLowerCase();return t[I]?t[I]:g};I.default=C},function(g,I,e){"use strict";var t=e(191).default;I.__esModule=!0,I.default=void 0;var C=t(e(540)),Q=t(e(769)),F=function(g){return(0,Q.default)(g)||(0,C.default)(g)};I.default=F},function(g,I,e){"use strict";var t=e(191).default;I.__esModule=!0,I.default=void 0;var C=t(e(540)),Q=t(e(769)),F=function(g){return(0,Q.default)(g)||(0,C.default)(g)};I.default=F},function(g,I,e){"use strict";var t=e(290).default,C=e(191).default;I.__esModule=!0,I.default=void 0;var Q=C(e(1525)),F=t(e(20)),B=C(e(1526)),n=F.curryN(2,(function(g,I){return Object.keys(I).reduce((function(e,t){var C,F;return/@media/.test(t)?(0,Q.default)({},e,(0,B.default)(((F={})[t]=I[t],F),g)):(0,Q.default)({},e,((C={})[t]=I[t],C))}),{})}));I.default=n},function(g,I){function e(){return g.exports=e=Object.assign?Object.assign.bind():function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g},g.exports.__esModule=!0,g.exports.default=g.exports,e.apply(this,arguments)}g.exports=e,g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I,e){var t=e(1527);g.exports=function(g,I){var e={};return Object.keys(g).forEach((function(C){t.parse(C).match(I)&&Object.assign(e,g[C])})),e}},function(g,I,e){var t=e(1528),C=e(1529),Q=/[0-9]/,F=/[a-z|\-]/i,B=/\s/,n=/:/,U=/,/,s=/and$/,i=/@/;g.exports={parse:function(g){return function(g){for(var I=[],e=[];g.length>0;){var Q=g.shift();if("number"!==Q.type&&"literal"!==Q.type){if("operator"===Q.type){if(n.test(Q.value)){Q={type:"query",key:I.pop(),value:g.shift()},I.push(Q);continue}for(;e.length>0;)I.unshift(e.pop());e.push(Q)}}else I.push(Q)}for(;e.length>0;)I.unshift(e.pop());return function g(){var e=I.shift();if("number"===e.type)return parseInt(e.value);if("literal"===e.type)return e.value;if("operator"===e.type){var Q=g(),F=g();return C(e.value,Q,F)}if("query"===e.type){Q=e.key.value,F=e.value.value;return t(Q,F)}}()}(function(g){for(var I=0,e=[];I<g.length;){var t=g[I];if(i.test(t))for(t=g[++I];F.test(t)&&void 0!==t;)t=g[++I];if(B.test(t)||")"===t||"("===t)I++;else if(n.test(t)||U.test(t))I++,e.push({type:"operator",value:t});else if(Q.test(t)){for(var C="";Q.test(t);)C+=t,t=g[++I];e.push({type:"number",value:C})}else{if(!F.test(t))throw new TypeError("Tokenizer: I dont know what this character is: "+t);for(C="";F.test(t)&&void 0!==t;)C+=t,t=g[++I];s.test(C)?e.push({type:"operator",value:C}):e.push({type:"literal",value:C})}}return e}(g))}}},function(g,I){function e(g){this.value=g,this.match=function(g){return this.value>=g.height}}function t(g){this.value=g,this.match=function(g){return this.value<g.height}}function C(g){this.value=g,this.match=function(g){return this.value>=g.width}}function Q(g){this.value=g,this.match=function(g){return this.value<g.width}}function F(g){this.value=g,this.match=function(g){return this.value===g.orientation}}g.exports=function(g,I){switch(g){case"max-height":return new e(I);case"min-height":return new t(I);case"max-width":return new C(I);case"min-width":return new Q(I);case"orientation":return new F(I);default:throw new Error(I)}}},function(g,I){function e(g,I){this.left=g,this.right=I,this.match=function(e){return g.match(e)&&I.match(e)}}function t(g,I){this.left=g,this.right=I,this.match=function(e){return g.match(e)||I.match(e)}}g.exports=function(g,I,C){switch(g){case"and":return new e(I,C);case",":return new t(I,C);default:throw new Error(value)}}},function(g,I,e){"use strict";var t=e(37).default,C=e(43).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=C(e(53)),B=t(e(770)),n=t(e(787)),U=t(e(550)),s=t(e(793)),i=t(e(794)),c=t(e(795)),A=t(e(796)),l=t(e(797)),a=t(e(798)),r=Q.propEq("type",F.TextInstance),o={linebreaker:n.default,justification:s.default,scriptItemizer:i.default,wordHyphenation:c.default,fontSubstitution:a.default,textDecoration:A.default},d=(0,B.default)(o),u=function(g,I){return U.default.fromFragments(function g(I,e){if(!e)return[{string:""}];for(var t=[],C=e.props,Q=C.fill,F=void 0===Q?"black":Q,B=C.fontFamily,n=void 0===B?"Helvetica":B,U=C.fontWeight,s=C.fontStyle,i=C.fontSize,c=void 0===i?18:i,A=C.textDecoration,a=C.textDecorationColor,o=C.textDecorationStyle,d=C.textTransform,u=C.opacity,y=I?I.getFont({fontFamily:n,fontWeight:U,fontStyle:s}):null,b={font:y?y.data:n,opacity:u,fontSize:c,color:F,underlineStyle:o,underline:"underline"===A||"underline line-through"===A||"line-through underline"===A,underlineColor:a||F,strike:"line-through"===A||"underline line-through"===A||"line-through underline"===A,strikeStyle:o,strikeColor:a||F},Z=0;Z<e.children.length;Z+=1){var m=e.children[Z];r(m)?t.push({string:(0,l.default)(m.value,d),attributes:b}):m&&t.push.apply(t,g(m))}return t}(g,I))},y={before:-.5,after:-.5},b=function(g){return function(I){var e=u(g,I),t={x:Q.pathOr(0,["props","x"],I),y:Q.pathOr(0,["props","y"],I),width:999999999999,height:999999999999},C={hyphenationCallback:I.props.hyphenationCallback||(null===g||void 0===g?void 0:g.getHyphenationCallback())||null,shrinkWhitespaceFactor:y},F=Q.compose(Q.reduce(Q.concat,[]),d)(e,t,C);return Q.assoc("lines",F,I)}},Z=Q.curryN(2,(function(g,I){return Q.evolve({children:Q.map(b(g))})(I)}));I.default=Z},function(g,I,e){"use strict";var t=e(31).default,C=e(40).default;I.__esModule=!0,I.default=void 0;var Q=C(e(771)),F=t(e(20)),B=C(e(772)),n=function(g){return[g]},U=F.curryN(3,(function(g,I,e){void 0===g&&(g={}),void 0===I&&(I={});for(var t=[],C=[],F=I.hyphenationCallback||g.wordHyphenation&&g.wordHyphenation(I)||n,U=0;U<e.runs.length;U+=1){for(var s="",i=e.runs[U],c=e.string.slice(i.start,i.end).split(/([ ]+)/g).filter(Boolean),A=0;A<c.length;A+=1){var l=F(c[A]);t.push.apply(t,l),s+=l.join("")}C.push({string:s,attributes:i.attributes})}return(0,Q.default)({},(0,B.default)(C),{syllables:t})}));I.default=U},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(1533)),B=t(e(1534)),n=t(e(1535)),U=t(e(1536)),s=t(e(1537)),i=t(e(1544)),c=t(e(1545)),A=Q.curryN(4,(function(g,I,e,t){for(var C=[],A=[].concat(t),l=(0,i.default)(g,I),a=Q.propOr(1/0,"maxLines",e),r="ellipsis"===e.truncateMode,o=a,d=(0,F.default)(e),u=A.shift();o>0&&u;){var y=l(d,u),b=(0,n.default)(o,y),Z=(0,U.default)(b),m=r&&y.length!==b.length;if(o-=b.length,!(d.height>=Z)){C.push(Q.compose(s.default,(0,c.default)(d.height))(b));break}C.push(Q.when(Q.always(m),s.default)(b)),d=(0,B.default)(Z,d),u=A.shift()}return C}));I.default=A},function(g,I,e){"use strict";var t=e(31).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)).clone;I.default=C},function(g,I,e){"use strict";var t=e(31).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=C.curryN(2,(function(g,I){return C.evolve({y:C.add(g),height:C.subtract(C.__,g)})(I)}));I.default=Q},function(g,I,e){"use strict";var t=e(31).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=function(g,I){return C.slice(0,g,I)};I.default=Q},function(g,I,e){"use strict";var t=e(31).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=C.compose(C.sum,C.map(C.prop("height")),C.pluck("box"));I.default=Q},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(541)),B=t(e(775)),n=String.fromCharCode(8230),U=function(g){var I=Q.propOr([],"runs",Q.last(g)),e=Q.path(["attributes","font"],Q.last(I));if(e){var t=function(g){if(!g.encode)return 8230;var I=g.encode(n)[0];return parseInt(I[0],16)}(e),C=e.glyphForCodePoint(t);return Q.adjust(-1,Q.compose((0,F.default)(C),B.default))(g)}return g};I.default=U},function(g,I,e){"use strict";var t=e(31).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=C.curryN(2,(function(g,I){return C.converge(C.concat,[C.identity,C.converge(C.repeat,[C.either(C.o(C.inc,C.last),C.always(0)),C.always(g)])])(I)}));I.default=Q},function(g,I,e){"use strict";var t=e(31).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=C.curryN(2,(function(g,I){var e=C.pathOr(null,["glyphIndices",g],I);return C.compose(C.length,C.dropWhile(C.gt(e)),C.slice(0,g),C.propOr([],"glyphIndices"))(I)}));I.default=Q},function(g,I,e){"use strict";var t=e(31).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=C.curryN(4,(function(g,I,e,t){if(!t)return[];if(g===I)return[];if(0===g&&I===t.codePoints.length)return[t];var Q=C.slice(g,I,t.codePoints),F=String.fromCodePoint.apply(String,Q);return e?e.layout(F).glyphs:[t]}));I.default=Q},function(g,I,e){"use strict";var t=e(31).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=C.curryN(3,(function(g,I,e){return C.both(C.o(C.gte(e),g),C.o(C.lt(e),I))}));I.default=Q},function(g,I,e){"use strict";var t=e(31).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=C.curryN(2,(function(g,I){return C.evolve({start:C.subtract(C.__,g),end:C.subtract(C.__,g)})(I)}));I.default=Q},function(g,I,e){"use strict";var t=e(31).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=C.curryN(2,(function(g,I){void 0===g&&(g=[]),void 0===I&&(I=[]);var e=I.length-1;return C.addIndex(C.map)((function(I,t){return 0===t?C.head(g)(I,t):t===e?C.last(g)(I,t):(g[1]||g[0])(I,t)}))(I)}));I.default=Q},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(779)),B=t(e(780)),n=Q.when(Q.compose(Q.not,Q.includes("\ufffc"),Q.prop("string")),Q.evolve({runs:Q.map((0,F.default)("attachment"))})),U=function(g,I){return function(e,t){var C=Q.pathOr(0,["runs",0,"attributes","indent"],t);return function(g,I,e){var t=g.y;return Q.addIndex(Q.map)(Q.compose(n,(function(I,C){var F=0===C?e:0,n=Q.pathOr({},["runs",0,"attributes"],I),U=Math.max((0,B.default)(I),n.lineHeight),s={x:g.x+F,y:t,width:g.width-F,height:U};return t+=U,Q.compose(Q.assoc("box",s),Q.omit(["syllables"]))(I)})))(I)}(e,g.linebreaker(I)(t,[e.width-C,e.width]),C)}};I.default=U},function(g,I,e){"use strict";I.__esModule=!0,I.default=void 0;var t=function(g){return function(I){for(var e=[],t=0,C=0;C<I.length;C+=1){var Q=I[C];if(!((t+=Q.box.height)<g))break;e.push(Q)}return e}};I.default=t},function(g,I,e){"use strict";var t=e(31).default,C=e(40).default;I.__esModule=!0,I.default=void 0;var Q=C(e(771)),F=t(e(20)),B=C(e(255)),n=C(e(1547)),U=F.pathOr(0,["attributes","characterSpacing"]),s=function(g){return function(I){var e=I.start,t=I.end,C=I.attributes,s=(void 0===C?{}:C).font;if(!s)return(0,Q.default)({},I,{glyphs:[],glyphIndices:[],positions:[]});var i=g.slice(e,t),c=s.layout(i),A=function(g,I){var e=F.multiply((0,B.default)(g)),t=U(g),C=F.evolve({xAdvance:F.o(F.add(t),e),yAdvance:e,xOffset:e,yOffset:e}),Q=F.evolve({xAdvance:F.subtract(F.__,t)});return F.compose(F.adjust(-1,Q),F.map(C))(I)}(I,c.positions),l=(0,n.default)(c.glyphs);return(0,Q.default)({},I,{positions:A,glyphIndices:l,glyphs:c.glyphs})}},i=function(){return function(g){return F.evolve({runs:F.map(s(g.string))})(g)}};I.default=i},function(g,I,e){"use strict";I.__esModule=!0,I.default=void 0;var t=function(g){return void 0===g&&(g=[]),g.reduce((function(g,I){var e=(null===I||void 0===I?void 0:I.codePoints)||[123];if(0===g.length)return e.map((function(){return 0}));var t=g[g.length-1],C=e.map((function(){return t+1}));return[].concat(g,C)}),[])};I.default=t},function(g,I,e){"use strict";var t=e(31).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=C.pathOr(0,["attributes","yOffset"]),F=C.pathOr(0,["attributes","font","unitsPerEm"]),B=function(g){var I=F(g),e=Q(g)*I;return C.evolve({positions:C.map(C.assoc("yOffset",e))})(g)},n=function(){return C.evolve({runs:C.map(B)})};I.default=n},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(779)),B=t(e(1550)),n=t(e(547)),U=Q.evolve({runs:Q.map((0,F.default)("font"))}),s=function(g,I){return Q.ifElse(Q.isNil,n.default,Q.applySpec({string:Q.prop("string"),runs:Q.compose(B.default,Q.flatten,Q.pluck("runs"),Q.juxt([g.fontSubstitution(I),g.scriptItemizer(I),U]))}))};I.default=s},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(1551)),B=t(e(1552)),n=Q.o(Q.sort((function(g,I){return g[1]-I[1]||g[3]-I[3]})),Q.addIndex(Q.chain)((function(g,I){return[["start",g.start,g.attributes,I],["end",g.end,g.attributes,I]]}))),U=Q.compose(Q.map(Q.reduce(Q.mergeDeepWithKey((function(g,I,e){return"attributes"===g?Q.merge(I,e):e})),{})),Q.groupWith(Q.eqProps("start"))),s=function(g){for(var I=[],e=n(g),t=-1,C={},F=[],B=0;B<e.length;B+=1){var U=e[B],s=U[0],i=U[1],c=U[2];if(-1!==t&&t<i&&I.push({start:t,end:i,attributes:C}),"start"===s)F.push(c),C=Q.merge(C,c);else{C={};for(var A=0;A<F.length;A+=1)F[A]===c?F.splice(A--,1):C=Q.merge(C,F[A])}t=i}return I},i=function(g){return void 0===g&&(g=[]),Q.compose(F.default,Q.apply(Q.useWith(Q.concat,[U,s])),Q.partition(B.default))(g)};I.default=i},function(g,I,e){"use strict";var t=e(31).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)).sort((function(g,I){return g.start-I.start||g.end-I.end}));I.default=C},function(g,I,e){"use strict";var t=e(31).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=C.converge(C.equals,[C.prop("start"),C.prop("end")]);I.default=Q},function(g,I,e){"use strict";var t=e(40).default;I.__esModule=!0,I.default=void 0;var C=t(e(781)),Q=t(e(347)),F=function(){return function(g){for(var I=[],e=0,t=g.string.indexOf("\n")+1;t>0;)I.push((0,Q.default)(e,t,g)),e=t,t=g.string.indexOf("\n",t)+1;return 0===e?I.push(g):e<g.string.length&&I.push((0,Q.default)(e,(0,C.default)(g),g)),I}};I.default=F},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(344)),B=t(e(784)),n=t(e(785)),U=t(e(786)),s={center:.5,right:1},i=Q.when(Q.compose(Q.equals("\n"),Q.last,Q.prop("string")),U.default),c=Q.converge(Q.add,[Q.propOr(0,"overflowLeft"),B.default]),A=Q.converge(Q.add,[Q.propOr(0,"overflowRight"),n.default]),l=function(g){var I=c(g),e=A(g);return Q.compose(Q.assoc("overflowLeft",I),Q.assoc("overflowRight",e),Q.evolve({box:Q.evolve({x:Q.subtract(Q.__,I),width:Q.add(I+e)})}))(g)},a=function(g,I){return void 0===g&&(g={}),function(e,t,C){var B=t===C.length-1,n=Q.pathOr({},["runs",0,"attributes"],e),U=B?n.alignLastLine:n.align;return Q.compose(g.textDecoration(I),function(g,I,e){return function(t){var C=(0,F.default)(t),B=s[e]||0,n=Math.max(0,t.box.width-C),U="justify"===e||C>t.box.width;return Q.compose(Q.when(Q.always(U),g.justification(I)),Q.evolve({box:Q.evolve({x:Q.add(n*B)})}))(t)}}(g,I,U),l,i)(e)}},r=Q.curryN(3,(function(g,I,e){var t=a(g,I);return e.map((function(g){return g.map(t)}))}));I.default=r},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(548)),B=Q.converge(Q.slice(0),[Q.compose(Q.length,Q.takeWhile(F.default),Q.propOr([],"glyphs")),Q.propOr([],"positions")]),n=Q.compose(Q.ifElse(Q.isEmpty,Q.always(0),Q.compose(Q.sum,Q.map(Q.propOr(0,"xAdvance")))),B);I.default=n},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(548)),B=Q.converge(Q.slice(0),[Q.compose(Q.length,Q.takeWhile(F.default),Q.reverse,Q.propOr([],"glyphs")),Q.compose(Q.reverse,Q.propOr([],"positions"))]),n=Q.compose(Q.ifElse(Q.isEmpty,Q.always(0),Q.compose(Q.sum,Q.map(Q.propOr(0,"xAdvance")))),B);I.default=n},function(g,I,e){"use strict";var t=e(40).default;I.__esModule=!0,I.default=void 0;var C=t(e(545)),Q=function(g){return(0,C.default)(0,g.end-g.start-1,g)};I.default=Q},function(g,I,e){"use strict";var t=e(31).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=C.addIndex(C.map),F=C.propOr([],"glyphs"),B=C.pathOr({},["attributes","attachment"]),n=C.o(C.includes(65532),C.propOr([],"codePoints")),U=function(g){var I=F(g),e=B(g),t=C.always(e.width);return C.evolve({positions:Q((function(g,Q){var F=I[Q];return e&&e.width&&n(F)?C.evolve({xAdvance:t},g):C.clone(g)}))})(g)},s=function(){return C.evolve({runs:C.map(U)})};I.default=s},function(g,I,e){"use strict";var t=e(31).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=C.evolve({attributes:function(g){return{align:g.align||"left",alignLastLine:g.alignLastLine||("justify"===g.align?"left":g.align||"left"),attachment:g.attachment||null,backgroundColor:g.backgroundColor||null,bidiLevel:g.bidiLevel||null,bullet:g.bullet||null,characterSpacing:g.characterSpacing||0,color:g.color||"black",features:g.features||[],fill:!1!==g.fill,font:g.font||null,fontSize:g.fontSize||12,hangingPunctuation:g.hangingPunctuation||!1,hyphenationFactor:g.hyphenationFactor||0,indent:g.indent||0,justificationFactor:g.justificationFactor||1,lineHeight:g.lineHeight||null,lineSpacing:g.lineSpacing||0,link:g.link||null,marginLeft:g.marginLeft||g.margin||0,marginRight:g.marginRight||g.margin||0,opacity:g.opacity,paddingTop:g.paddingTop||g.padding||0,paragraphSpacing:g.paragraphSpacing||0,underline:g.underline||!1,underlineColor:g.underlineColor||g.color||"black",underlineStyle:g.underlineStyle||"solid",script:g.script||null,shrinkFactor:g.shrinkFactor||0,strike:g.strike||!1,strikeColor:g.strikeColor||g.color||"black",strikeStyle:g.strikeStyle||"solid",stroke:g.stroke||!1,wordSpacing:g.wordSpacing||0,yOffset:g.yOffset||0}}}),F=function(){return C.applySpec({string:C.propOr("","string"),runs:C.compose(C.map(Q),C.defaultTo([]),C.prop("runs"))})};I.default=F},function(g,I,e){"use strict";I.__esModule=!0,I.default=void 0;var t=function(g,I,e){for(var t=null,C=1/0,Q={width:0,stretch:0,shrink:0},F=I[Math.min(e,I.length-1)],B=function(g){return Q.width<F?Q.stretch-g.stretch>0?(F-Q.width)/Q.stretch:1e4:Q.width>F?Q.shrink-g.shrink>0?(F-Q.width)/Q.shrink:1e4:0},n=0;n<g.length;n+=1){var U=g[n];if("box"===U.type?Q.width+=U.width:"glue"===U.type&&(Q.width+=U.width,Q.stretch+=U.stretch,Q.shrink+=U.shrink),Q.width-Q.shrink>F){if(null===t){for(var s=0===n?n+1:n;s<g.length&&("glue"===g[s].type||"penalty"===g[s].type);)s++;t=s-1}break}if("penalty"===U.type||"glue"===U.type){var i=B(U),c="penalty"===U.type?U.penalty:0,A=100*Math.pow(Math.abs(i),3)+c;C>=A&&(t=n,C=A)}}return Q.width-Q.shrink>F?t:null},C=function(g,I){for(var e=0,C=0,Q=g,F=[{position:0}];Q.length>0;){var B=t(Q,I,C);null!==B?(e+=B,F.push({position:e}),Q=Q.slice(B+1,Q.length),e++,C++):Q=[]}return F};I.default=C},function(g,I,e){"use strict";var t=e(40).default;I.__esModule=!0,I.default=void 0;var C=t(e(1562)),Q=function g(I,e,t){var Q={line:t&&t.demerits&&t.demerits.line||10,flagged:t&&t.demerits&&t.demerits.flagged||100,fitness:t&&t.demerits&&t.demerits.fitness||3e3},F=t&&t.tolerance||3,B=new C.default,n={width:0,stretch:0,shrink:0},U=e,s=[],i={data:{demerits:1/0}};function c(g,I,e,t,C,Q,F){return{position:g,demerits:I,ratio:e,line:t,fitnessClass:C,totals:Q||{width:0,stretch:0,shrink:0},previous:F}}function A(e,t,C,Q){var F=n.width-C.totals.width,B=0,s=0,i=Q<U.length?U[Q-1]:U[U.length-1];return"penalty"===I[t].type&&(F+=I[t].width),F<i?(B=n.stretch-C.totals.stretch)>0?(i-F)/B:g.infinity:F>i?(s=n.shrink-C.totals.shrink)>0?(i-F)/s:g.infinity:0}function l(e){for(var t={width:n.width,stretch:n.stretch,shrink:n.shrink},C=e;C<I.length;C+=1)if("glue"===I[C].type)t.width+=I[C].width,t.stretch+=I[C].stretch,t.shrink+=I[C].shrink;else if("box"===I[C].type||"penalty"===I[C].type&&I[C].penalty===-g.infinity&&C>e)break;return t}function a(I,e,t){for(var n,U,s,i,a,r=B.first(),o=null,d=0,u=0,y=[],b=0,Z=0;null!==r;){for(y=[{demerits:1/0},{demerits:1/0},{demerits:1/0},{demerits:1/0}];null!==r&&(o=r.next,b=r.data.line+1,((d=A(r.data.position,e,r.data,b))<-1||"penalty"===I.type&&I.penalty===-g.infinity)&&B.remove(r),d>=-1&&d<=F&&(n=100*Math.pow(Math.abs(d),3),u="penalty"===I.type&&I.penalty>=0?Math.pow(Q.line+n,2)+Math.pow(I.penalty,2):"penalty"===I.type&&I.penalty!==-g.infinity?Math.pow(Q.line+n,2)-Math.pow(I.penalty,2):Math.pow(Q.line+n,2),"penalty"===I.type&&"penalty"===t[r.data.position].type&&(u+=Q.flagged*I.flagged*t[r.data.position].flagged),Z=d<-.5?0:d<=.5?1:d<=1?2:3,Math.abs(Z-r.data.fitnessClass)>1&&(u+=Q.fitness),(u+=r.data.demerits)<y[Z].demerits&&(y[Z]={active:r,demerits:u,ratio:d})),!(null!==(r=o)&&r.data.line>=b)););for(U=l(e),s=0;s<y.length;s+=1)(i=y[s]).demerits<1/0&&(a=new C.default.Node(c(e,i.demerits,i.ratio,i.active.data.line+1,s,U,i.active)),null!==r?B.insertBefore(r,a):B.push(a))}}if(B.push(new C.default.Node(c(0,0,0,0,0,void 0,null))),I.forEach((function(I,e,t){"box"===I.type?n.width+=I.width:"glue"===I.type?(e>0&&"box"===t[e-1].type&&a(I,e,t),n.width+=I.width,n.stretch+=I.stretch,n.shrink+=I.shrink):"penalty"===I.type&&I.penalty!==g.infinity&&a(I,e,t)})),0!==B.size()){for(B.forEach((function(g){g.data.demerits<i.data.demerits&&(i=g)}));null!==i;)s.push({position:i.data.position,ratio:i.data.ratio}),i=i.data.previous;return s.reverse()}return[]};Q.infinity=1e4,Q.glue=function(g,I,e,t){return{type:"glue",value:I,width:g,stretch:e,shrink:t}},Q.box=function(g,I,e){return void 0===e&&(e=!1),{type:"box",width:g,value:I,hyphenated:e}},Q.penalty=function(g,I,e){return{type:"penalty",width:g,penalty:I,flagged:e}};var F=Q;I.default=F},function(g,I,e){"use strict";I.__esModule=!0,I.default=void 0;var t=function(){function g(g){this.prev=null,this.next=null,this.data=g}return g.prototype.toString=function(){return this.data.toString()},g}(),C=function(){function g(){this.head=null,this.tail=null,this.listSize=0}var I=g.prototype;return I.isLinked=function(g){return!(g&&null===g.prev&&null===g.next&&this.tail!==g&&this.head!==g||this.isEmpty())},I.size=function(){return this.listSize},I.isEmpty=function(){return 0===this.listSize},I.first=function(){return this.head},I.last=function(){return this.last},I.toString=function(){return this.toArray().toString()},I.toArray=function(){for(var g=this.head,I=[];null!==g;)I.push(g),g=g.next;return I},I.forEach=function(g){for(var I=this.head;null!==I;)g(I),I=I.next},I.contains=function(g){var I=this.head;if(!this.isLinked(g))return!1;for(;null!==I;){if(I===g)return!0;I=I.next}return!1},I.at=function(g){var I=this.head,e=0;if(g>=this.listLength||g<0)return null;for(;null!==I;){if(g===e)return I;I=I.next,e+=1}return null},I.insertAfter=function(g,I){return this.isLinked(g)?(I.prev=g,I.next=g.next,null===g.next?this.tail=I:g.next.prev=I,g.next=I,this.listSize+=1,this):this},I.insertBefore=function(g,I){return this.isLinked(g)?(I.prev=g.prev,I.next=g,null===g.prev?this.head=I:g.prev.next=I,g.prev=I,this.listSize+=1,this):this},I.push=function(g){return null===this.head?this.unshift(g):this.insertAfter(this.tail,g),this},I.unshift=function(g){return null===this.head?(this.head=g,this.tail=g,g.prev=null,g.next=null,this.listSize+=1):this.insertBefore(this.head,g),this},I.remove=function(g){return this.isLinked(g)?(null===g.prev?this.head=g.next:g.prev.next=g.next,null===g.next?this.tail=g.prev:g.next.prev=g.prev,this.listSize-=1,this):this},I.pop=function(){var g=this.tail;return this.tail.prev.next=null,this.tail=this.tail.prev,this.listSize-=1,g.prev=null,g.next=null,g},I.shift=function(){var g=this.head;return this.head.next.prev=null,this.head=this.head.next,this.listSize-=1,g.prev=null,g.next=null,g},g}();C.Node=t;var Q=C;I.default=Q},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(346)),B=t(e(545)),n=t(e(1564)),U=t(e(774)),s=t(e(419)),i=t(e(542)),c=t(e(543)),A=Q.curryN(3,(function(g,I,e){var t=(0,s.default)(e);return function(g,I,e){if(!I)return(0,F.default)(e);var t=(0,B.default)(0,g,e),C=(0,B.default)(g,1/0,e);return(0,n.default)((0,U.default)(I,t),C)}(g,(0,i.default)(I)?(0,c.default)(I,t):I,e)}));I.default=A},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(789)),B=t(e(776)),n=Q.flip(Q.merge),U=Q.flip(Q.concat),s=Q.curryN(2,(function(g,I){return Q.evolve({end:Q.add((0,F.default)(I)),glyphs:U(Q.prop("glyphs",I)),positions:U(Q.prop("positions",I)),attributes:n(Q.prop("attributes",I)),glyphIndices:Q.compose(B.default,U(Q.map(Q.compose(Q.inc,Q.add(Q.last(Q.propOr([],"glyphIndices",g))||0)),Q.propOr([],"glyphIndices",I))))})(g)}));I.default=s},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(546)),B=Q.curryN(3,(function(g,I,e){var t=Q.propOr(0,"start",e),C=Math.max(0,(0,F.default)(g-t,e)),B=Math.max(0,(0,F.default)(I-t,e));return Q.compose(Q.reduce(Q.useWith(Q.add,[Q.identity,Q.propOr(0,"xAdvance")]),0),Q.slice(C,B),Q.propOr([],"positions"))(e)}));I.default=B},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(346)),B=Q.evolve({string:Q.identity,syllables:Q.identity,runs:Q.map(F.default)});I.default=B},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(345)),B=t(e(538)),n=(0,F.default)(Q.min,B.default);I.default=n},function(g,I,e){"use strict";var t=e(40).default;I.__esModule=!0,I.default=void 0;var C=t(e(791)),Q=t(e(546)),F=function(g,I){var e=(0,C.default)(g,I),t=(0,Q.default)(g,e);return e.positions[t].xAdvance};I.default=F},function(g,I,e){"use strict";var t=e(31).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=C.curryN(2,(function(g,I){for(var e=0,t=0,Q=C.propOr([],"glyphs",I),F=C.propOr([],"positions",I),B=0;B<F.length;B+=1){var n=F[B].xAdvance;if(e+n>g)return t;e+=n,t+=C.pathOr(0,[B,"codePoints","length"],Q)}return t}));I.default=Q},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(1571)),B=t(e(773)),n=t(e(1572)),U=t(e(544)),s=Q.curryN(2,(function(g,I){var e=Q.propOr([],"codePoints")(g);return Q.evolve({string:Q.concat((0,U.default)(e)),runs:Q.converge(Q.concat,[Q.compose(Q.unapply(Q.identity),(0,n.default)(g),Q.either(Q.head,B.default)),Q.compose(Q.map((0,F.default)(e.length)),Q.tail)])})(I)}));I.default=s},function(g,I,e){"use strict";var t=e(31).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=C.curryN(2,(function(g,I){return C.evolve({start:C.add(g),end:C.add(g)})(I)}));I.default=Q},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(346)),B=t(e(255)),n=t(e(419)),U=t(e(542)),s=t(e(1573)),i=t(e(543)),c=Q.curryN(2,(function(g,I){if(!g)return(0,F.default)(I);var e=(0,n.default)(I);return function(g,I){var e=(0,B.default)(I),t=Q.length(g.codePoints);return Q.evolve({end:Q.add(t),glyphIndices:(0,s.default)(t),glyphs:Q.prepend(g),positions:Q.prepend({xAdvance:g.advanceWidth*e})})(I)}((0,U.default)(g)?(0,i.default)(g,e):g,I)}));I.default=c},function(g,I,e){"use strict";var t=e(31).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=C.curryN(2,(function(g,I){return 0===g?I:C.converge(C.concat,[C.converge(C.repeat,[C.always(0),C.always(g)]),C.map(C.inc)])(I)}));I.default=Q},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(347)),B=t(e(792)),n=Q.curryN(2,(function(g,I){var e=(0,B.default)(g,I);return(0,F.default)(0,e,I)}));I.default=n},function(g,I,e){var t=e(1576);g.exports=function(g,I){var e="undefined"!==typeof Symbol&&g[Symbol.iterator]||g["@@iterator"];if(e)return(e=e.call(g)).next.bind(e);if(Array.isArray(g)||(e=t(g))||I&&g&&"number"===typeof g.length){e&&(g=e);var C=0;return function(){return C>=g.length?{done:!0}:{done:!1,value:g[C++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I,e){var t=e(1577);g.exports=function(g,I){if(g){if("string"===typeof g)return t(g,I);var e=Object.prototype.toString.call(g).slice(8,-1);return"Object"===e&&g.constructor&&(e=g.constructor.name),"Map"===e||"Set"===e?Array.from(g):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?t(g,I):void 0}},g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I){g.exports=function(g,I){(null==I||I>g.length)&&(I=g.length);for(var e=0,t=new Array(I);e<I;e++)t[e]=g[e];return t},g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I,e){"use strict";var t=e(40).default,C=e(31).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(548)),B={before:.5,after:.5,priority:1,unconstrained:!1},n={before:.14453125,after:.14453125,priority:2,unconstrained:!1},U={before:-.04296875,after:-.04296875,priority:1,unconstrained:!1},s={before:-.04296875,after:-.04296875,priority:2,unconstrained:!1},i=function(g,I){return function(e){for(var t=function(g,I){var e=Q.propOr({},"expandCharFactor",I),t=Q.propOr({},"shrinkCharFactor",I);return"GROW"===g?Q.merge(n,e):Q.merge(s,t)}(g,I),C=function(g,I){var e=Q.propOr({},"expandWhitespaceFactor",I),t=Q.propOr({},"shrinkWhitespaceFactor",I);return"GROW"===g?Q.merge(B,e):Q.merge(U,t)}(g,I),i=[],c=0;c<e.length;c+=1){var A=void 0,l=e[c];(0,F.default)(l)?(A=Q.clone(C),c===e.length-1&&(A.before=0,c>0&&(i[c-1].after=0))):l.isMark&&c>0?((A=Q.clone(i[c-1])).before=0,i[c-1].after=0):A=Q.clone(t),i.push(A)}return i}},c=function(g,I,e){var t=i(g>0?"GROW":"SHRINK",e),C=Q.useWith(Q.concat,[Q.identity,Q.compose(t,Q.prop("glyphs"))]);return Q.compose(Q.adjust(-1,Q.assoc("after",0)),Q.adjust(0,Q.assoc("before",0)),Q.reduce(C,[]),Q.prop("runs"))(I)};I.default=c},function(g,I,e){"use strict";I.__esModule=!0,I.default=void 0;var t=function(g,I){for(var e=0,t=[],C=[],Q=0;Q<=3;Q+=1)t[Q]=C[Q]=0;for(var F=0;F<I.length;F+=1){var B=I[F],n=B.before+B.after;e+=n,t[B.priority]+=n,B.unconstrained&&(C[B.priority]+=n)}var U,s=-1,i=0,c=g;for(U=0;U<=3;U+=1){var A=t[U];if(0!==A){if(-1===s&&(s=U,i=A),Math.abs(c)<=Math.abs(A)){t[U]=c/A,C[U]=0,c=0;break}if(t[U]=1,c-=A,0!==C[U]){C[U]=c/C[U],c=0;break}}}for(var l=U+1;l<=3;l+=1)t[l]=0,C[l]=0;c>0&&s>-1&&(t[s]=(i+(g-e))/i);for(var a=[],r=0;r<I.length;r+=1){var o=I[r],d=I[r+1],u=o.after*t[o.priority];d&&(u+=d.before*t[d.priority]),o.unconstrained&&(u+=o.after*C[o.priority],d&&(u+=d.before*C[d.priority])),a.push(u)}return a};I.default=t},function(g,I,e){"use strict";e.r(I),function(g){e.d(I,"default",(function(){return f})),e.d(I,"getCategory",(function(){return Z})),e.d(I,"getCombiningClass",(function(){return m})),e.d(I,"getEastAsianWidth",(function(){return R})),e.d(I,"getNumericValue",(function(){return S})),e.d(I,"getScript",(function(){return x})),e.d(I,"isAlphabetic",(function(){return G})),e.d(I,"isBaseForm",(function(){return N})),e.d(I,"isDigit",(function(){return L})),e.d(I,"isLowerCase",(function(){return h})),e.d(I,"isMark",(function(){return W})),e.d(I,"isPunctuation",(function(){return V})),e.d(I,"isTitleCase",(function(){return p})),e.d(I,"isUpperCase",(function(){return D})),e.d(I,"isWhiteSpace",(function(){return E}));var t=e(319),C=e.n(t),Q={categories:["Cc","Zs","Po","Sc","Ps","Pe","Sm","Pd","Nd","Lu","Sk","Pc","Ll","So","Lo","Pi","Cf","No","Pf","Lt","Lm","Mn","Me","Mc","Nl","Zl","Zp","Cs","Co"],combiningClasses:["Not_Reordered","Above","Above_Right","Below","Attached_Above_Right","Attached_Below","Overlay","Iota_Subscript","Double_Below","Double_Above","Below_Right","Above_Left","CCC10","CCC11","CCC12","CCC13","CCC14","CCC15","CCC16","CCC17","CCC18","CCC19","CCC20","CCC21","CCC22","CCC23","CCC24","CCC25","CCC30","CCC31","CCC32","CCC27","CCC28","CCC29","CCC33","CCC34","CCC35","CCC36","Nukta","Virama","CCC84","CCC91","CCC103","CCC107","CCC118","CCC122","CCC129","CCC130","CCC132","Attached_Above","Below_Left","Left","Kana_Voicing","CCC26","Right"],scripts:["Common","Latin","Bopomofo","Inherited","Greek","Coptic","Cyrillic","Armenian","Hebrew","Arabic","Syriac","Thaana","Nko","Samaritan","Mandaic","Devanagari","Bengali","Gurmukhi","Gujarati","Oriya","Tamil","Telugu","Kannada","Malayalam","Sinhala","Thai","Lao","Tibetan","Myanmar","Georgian","Hangul","Ethiopic","Cherokee","Canadian_Aboriginal","Ogham","Runic","Tagalog","Hanunoo","Buhid","Tagbanwa","Khmer","Mongolian","Limbu","Tai_Le","New_Tai_Lue","Buginese","Tai_Tham","Balinese","Sundanese","Batak","Lepcha","Ol_Chiki","Braille","Glagolitic","Tifinagh","Han","Hiragana","Katakana","Yi","Lisu","Vai","Bamum","Syloti_Nagri","Phags_Pa","Saurashtra","Kayah_Li","Rejang","Javanese","Cham","Tai_Viet","Meetei_Mayek","null","Linear_B","Lycian","Carian","Old_Italic","Gothic","Old_Permic","Ugaritic","Old_Persian","Deseret","Shavian","Osmanya","Osage","Elbasan","Caucasian_Albanian","Linear_A","Cypriot","Imperial_Aramaic","Palmyrene","Nabataean","Hatran","Phoenician","Lydian","Meroitic_Hieroglyphs","Meroitic_Cursive","Kharoshthi","Old_South_Arabian","Old_North_Arabian","Manichaean","Avestan","Inscriptional_Parthian","Inscriptional_Pahlavi","Psalter_Pahlavi","Old_Turkic","Old_Hungarian","Hanifi_Rohingya","Old_Sogdian","Sogdian","Elymaic","Brahmi","Kaithi","Sora_Sompeng","Chakma","Mahajani","Sharada","Khojki","Multani","Khudawadi","Grantha","Newa","Tirhuta","Siddham","Modi","Takri","Ahom","Dogra","Warang_Citi","Nandinagari","Zanabazar_Square","Soyombo","Pau_Cin_Hau","Bhaiksuki","Marchen","Masaram_Gondi","Gunjala_Gondi","Makasar","Cuneiform","Egyptian_Hieroglyphs","Anatolian_Hieroglyphs","Mro","Bassa_Vah","Pahawh_Hmong","Medefaidrin","Miao","Tangut","Nushu","Duployan","SignWriting","Nyiakeng_Puachue_Hmong","Wancho","Mende_Kikakui","Adlam"],eaw:["N","Na","A","W","H","F"]},F="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",B=new Uint8Array(g.from(F,"base64")),n=new C.a(B),U=Math.log2||function(g){return Math.log(g)/Math.LN2},s=function(g){return U(g)+1|0},i=s(Q.categories.length-1),c=s(Q.combiningClasses.length-1),A=s(Q.scripts.length-1),l=s(Q.eaw.length-1),a=c+A+l+10,r=A+l+10,o=l+10,d=(1<<i)-1,u=(1<<c)-1,y=(1<<A)-1,b=(1<<l)-1,Z=function(g){var I=n.get(g);return Q.categories[I>>a&d]},m=function(g){var I=n.get(g);return Q.combiningClasses[I>>r&u]},x=function(g){var I=n.get(g);return Q.scripts[I>>o&y]},R=function(g){var I=n.get(g);return Q.eaw[I>>10&b]},S=function(g){var I=n.get(g),e=1023&I;if(0===e)return null;if(e<=50)return e-1;if(e<480)return((e>>4)-12)/(1+(15&e));if(e<768){I=(e>>5)-14;for(var t=2+(31&e);t>0;)I*=10,t--;return I}I=(e>>2)-191;for(var C=1+(3&e);C>0;)I*=60,C--;return I},G=function(g){var I=Z(g);return"Lu"===I||"Ll"===I||"Lt"===I||"Lm"===I||"Lo"===I||"Nl"===I},L=function(g){return"Nd"===Z(g)},V=function(g){var I=Z(g);return"Pc"===I||"Pd"===I||"Pe"===I||"Pf"===I||"Pi"===I||"Po"===I||"Ps"===I},h=function(g){return"Ll"===Z(g)},D=function(g){return"Lu"===Z(g)},p=function(g){return"Lt"===Z(g)},E=function(g){var I=Z(g);return"Zs"===I||"Zl"===I||"Zp"===I},N=function(g){var I=Z(g);return"Nd"===I||"No"===I||"Nl"===I||"Lu"===I||"Ll"===I||"Lt"===I||"Lm"===I||"Lo"===I||"Me"===I||"Mc"===I},W=function(g){var I=Z(g);return"Mn"===I||"Me"===I||"Mc"===I},f={getCategory:Z,getCombiningClass:m,getScript:x,getEastAsianWidth:R,getNumericValue:S,isAlphabetic:G,isDigit:L,isPunctuation:V,isLowerCase:h,isUpperCase:D,isTitleCase:p,isWhiteSpace:E,isBaseForm:N,isMark:W}}.call(this,e(103).Buffer)},function(g,I,e){g.exports=e(1582)},function(g,I,e){(function(e){var t,C,Q;C=[],void 0===(Q="function"===typeof(t=function(){var g="object"===typeof e?e:"object"===typeof window?window:"object"===typeof this?this:{};function I(g){var I={};for(var e in g)I[e]=g[e];return I}function t(g,I,e){return I in g?g[I]:e}function C(g,I){return g.exceptions.reduce((function(g,e){return g[e.replace(/\-/g,"")]=e.replace(/\-/g,I),g}),{})}function Q(g,I,e,t){for(var C,Q=new Array(g.length+1),F=g.toLocaleLowerCase(),B=[],n=0,U=Q.length;U--;)Q[U]=0;for(;C=I[n++];)for(var s=0,i=!1;!i;){var c=F.indexOf(C.text,s);if(c>-1&&(!C.stickToLeft||0===c)&&(!C.stickToRight||c+C.text.length===g.length))for(B.push(C.pattern+">"+C.levels.join("")),U=0;U<C.levels.length;U++)Q[c+U]=Math.max(C.levels[U],Q[c+U]);c>-1&&C.text.length>0?s=c+C.text.length+1:i=!0}Q[0]=Q[1]=Q[Q.length-1]=Q[Q.length-2]=0;var A="",l="",a="";for(U=0;U<Q.length;U++)A+=(Q[U]%2===1?t:"")+g.charAt(U),a+=(Q[U]%2===1?"-":"")+g.charAt(U),l+=(Q[U]>0?Q[U]:"")+g.charAt(U);return e&&console.log.apply(console,[g,"->"].concat(B).concat(["->"]).concat(Q).concat(["->",l]).concat(["->",a])),A}function F(g){for(var I,e=0,t={pattern:g,text:"",levels:[],stickToLeft:0,stickToRight:0},C=1,Q=2,F=3,B=4;I=g.charAt(e++);){var n="."===I,U=!n&&/\d/.test(I);switch(n?e-1===0?F:B:U?Q:C){case C:!s&&t.levels.push(0),t.text+=I;break;case Q:t.levels.push(parseInt(I));break;case F:t.stickToLeft=!0;break;case B:t.stickToRight=!0}var s=U}return t}return function(e,B){var n=t(B=B||{},"async",!1),U={},s=t(B,"debug",!1),i={},c=t(B,"hyphenChar","\xad"),A=e.patterns.map(F),l=t(B,"minWordLength",5)>>0,a=t(B,"html",!1),r=c+l;if(i[r]=C(e,c),U[r]=I(i[r]),n&&!("Promise"in g))throw new Error("Failed to create hyphenator: Could not find global Promise object, needed for hyphenator to work in async mode");return function(g,F){var B=t(F=F||{},"debug",s),r=t(F,"hyphenChar",c),o=t(F,"minWordLength",l)>>0,d=r+o;return i[d]||(i[d]=C(e,r)),U[d]||(U[d]=I(i[d])),function(g,I,e,t,C,F,B,n){var U,s,i="",c=function(g,I,e,t){var C,Q,F=RegExp.prototype.test.bind(/\s/),B=0,n=1,U=2,s=1,i=2,c=3,A=4;return[function(){var l="";C=void 0;g:for(;B<=g.length;){var a=g.charAt(B++),r=!!a&&!/\s|[\!-\@\[-\`\{-\~\u2013-\u203C]/.test(a),o="<"===a,d=">"===a,u=a===I;do{if(Q===s){d&&(Q=c);break}if(u){C=U,Q=i;break}if(r){Q=i;break}if(Q===i){Q=A,C=C||l.length>=t&&n;break}C=U,Q=c}while(0);switch(o&&Q!==A&&e&&!F(g.charAt(B))&&(C=U,Q=s),Q){case s:case i:l+=a;break;case c:l+=a;break g;case A:B--;break g}}return l||void 0},function(){return C===n}]}(g,C,F,B),A=c[0],l=c[1],a=0,r=0,o=new Date,d=0,u=function(){};function y(){for(var g=new Date;(!n||new Date-g<10)&&(s=A());)U=s.length?"$"+s:"",l()&&(void 0===e[U]&&(e[U]=Q(s,I,t,C)),s!==e[U]&&r++,s=e[U]),i+=s,a++;d+=new Date-g,s?setTimeout(y):(o=new Date-o,u(i),t&&(console.log("----------------\nHyphenation stats: "+a+" text chunks processed, "+r+" words hyphenated"),console.log("Work time: "+d/1e3),console.log("Wait time: "+(o-d)/1e3),console.log("All time: "+o/1e3)))}return n?(setTimeout(y),new Promise((function(g){u=g}))):(y(),i)}(g,A,U[d],B,r,a,o,n)}}})?t.apply(I,C):t)||(g.exports=Q)}).call(this,e(67))},function(g,I,e){var t,C,Q;C=[],void 0===(Q="function"===typeof(t=function(){return{patterns:[" ",".ach4",".ad4der",".af1t",".al3t",".am5at",".an5c",".ang4",".ani5m",".ant4",".an3te",".anti5s",".ar5s",".ar4tie",".ar4ty",".as3c",".as1p",".as1s",".aster5",".atom5",".au1d",".av4i",".awn4",".ba4g",".ba5na",".bas4e",".ber4",".be5ra",".be3sm",".be5sto",".bri2",".but4ti",".cam4pe",".can5c",".capa5b",".car5ol",".ca4t",".ce4la",".ch4",".chill5i",".ci2",".cit5r",".co3e",".co4r",".cor5ner",".de4moi",".de3o",".de3ra",".de3ri",".des4c",".dictio5",".do4t",".du4c",".dumb5",".earth5",".eas3i",".eb4",".eer4",".eg2",".el5d",".el3em",".enam3",".en3g",".en3s",".eq5ui5t",".er4ri",".es3",".eu3",".eye5",".fes3",".for5mer",".ga2",".ge2",".gen3t4",".ge5og",".gi5a",".gi4b",".go4r",".hand5i",".han5k",".he2",".hero5i",".hes3",".het3",".hi3b",".hi3er",".hon5ey",".hon3o",".hov5",".id4l",".idol3",".im3m",".im5pin",".in1",".in3ci",".ine2",".in2k",".in3s",".ir5r",".is4i",".ju3r",".la4cy",".la4m",".lat5er",".lath5",".le2",".leg5e",".len4",".lep5",".lev1",".li4g",".lig5a",".li2n",".li3o",".li4t",".mag5a5",".mal5o",".man5a",".mar5ti",".me2",".mer3c",".me5ter",".mis1",".mist5i",".mon3e",".mo3ro",".mu5ta",".muta5b",".ni4c",".od2",".odd5",".of5te",".or5ato",".or3c",".or1d",".or3t",".os3",".os4tl",".oth3",".out3",".ped5al",".pe5te",".pe5tit",".pi4e",".pio5n",".pi2t",".pre3m",".ra4c",".ran4t",".ratio5na",".ree2",".re5mit",".res2",".re5stat",".ri4g",".rit5u",".ro4q",".ros5t",".row5d",".ru4d",".sci3e",".self5",".sell5",".se2n",".se5rie",".sh2",".si2",".sing4",".st4",".sta5bl",".sy2",".ta4",".te4",".ten5an",".th2",".ti2",".til4",".tim5o5",".ting4",".tin5k",".ton4a",".to4p",".top5i",".tou5s",".trib5ut",".un1a",".un3ce",".under5",".un1e",".un5k",".un5o",".un3u",".up3",".ure3",".us5a",".ven4de",".ve5ra",".wil5i",".ye4","4ab.","a5bal","a5ban","abe2","ab5erd","abi5a","ab5it5ab","ab5lat","ab5o5liz","4abr","ab5rog","ab3ul","a4car","ac5ard","ac5aro","a5ceou","ac1er","a5chet","4a2ci","a3cie","ac1in","a3cio","ac5rob","act5if","ac3ul","ac4um","a2d","ad4din","ad5er.","2adi","a3dia","ad3ica","adi4er","a3dio","a3dit","a5diu","ad4le","ad3ow","ad5ran","ad4su","4adu","a3duc","ad5um","ae4r","aeri4e","a2f","aff4","a4gab","aga4n","ag5ell","age4o","4ageu","ag1i","4ag4l","ag1n","a2go","3agog","ag3oni","a5guer","ag5ul","a4gy","a3ha","a3he","ah4l","a3ho","ai2","a5ia","a3ic.","ai5ly","a4i4n","ain5in","ain5o","ait5en","a1j","ak1en","al5ab","al3ad","a4lar","4aldi","2ale","al3end","a4lenti","a5le5o","al1i","al4ia.","ali4e","al5lev","4allic","4alm","a5log.","a4ly.","4alys","5a5lyst","5alyt","3alyz","4ama","am5ab","am3ag","ama5ra","am5asc","a4matis","a4m5ato","am5era","am3ic","am5if","am5ily","am1in","ami4no","a2mo","a5mon","amor5i","amp5en","a2n","an3age","3analy","a3nar","an3arc","anar4i","a3nati","4and","ande4s","an3dis","an1dl","an4dow","a5nee","a3nen","an5est.","a3neu","2ang","ang5ie","an1gl","a4n1ic","a3nies","an3i3f","an4ime","a5nimi","a5nine","an3io","a3nip","an3ish","an3it","a3niu","an4kli","5anniz","ano4","an5ot","anoth5","an2sa","an4sco","an4sn","an2sp","ans3po","an4st","an4sur","antal4","an4tie","4anto","an2tr","an4tw","an3ua","an3ul","a5nur","4ao","apar4","ap5at","ap5ero","a3pher","4aphi","a4pilla","ap5illar","ap3in","ap3ita","a3pitu","a2pl","apoc5","ap5ola","apor5i","apos3t","aps5es","a3pu","aque5","2a2r","ar3act","a5rade","ar5adis","ar3al","a5ramete","aran4g","ara3p","ar4at","a5ratio","ar5ativ","a5rau","ar5av4","araw4","arbal4","ar4chan","ar5dine","ar4dr","ar5eas","a3ree","ar3ent","a5ress","ar4fi","ar4fl","ar1i","ar5ial","ar3ian","a3riet","ar4im","ar5inat","ar3io","ar2iz","ar2mi","ar5o5d","a5roni","a3roo","ar2p","ar3q","arre4","ar4sa","ar2sh","4as.","as4ab","as3ant","ashi4","a5sia.","a3sib","a3sic","5a5si4t","ask3i","as4l","a4soc","as5ph","as4sh","as3ten","as1tr","asur5a","a2ta","at3abl","at5ac","at3alo","at5ap","ate5c","at5ech","at3ego","at3en.","at3era","ater5n","a5terna","at3est","at5ev","4ath","ath5em","a5then","at4ho","ath5om","4ati.","a5tia","at5i5b","at1ic","at3if","ation5ar","at3itu","a4tog","a2tom","at5omiz","a4top","a4tos","a1tr","at5rop","at4sk","at4tag","at5te","at4th","a2tu","at5ua","at5ue","at3ul","at3ura","a2ty","au4b","augh3","au3gu","au4l2","aun5d","au3r","au5sib","aut5en","au1th","a2va","av3ag","a5van","ave4no","av3era","av5ern","av5ery","av1i","avi4er","av3ig","av5oc","a1vor","3away","aw3i","aw4ly","aws4","ax4ic","ax4id","ay5al","aye4","ays4","azi4er","azz5i","5ba.","bad5ger","ba4ge","bal1a","ban5dag","ban4e","ban3i","barbi5","bari4a","bas4si","1bat","ba4z","2b1b","b2be","b3ber","bbi4na","4b1d","4be.","beak4","beat3","4be2d","be3da","be3de","be3di","be3gi","be5gu","1bel","be1li","be3lo","4be5m","be5nig","be5nu","4bes4","be3sp","be5str","3bet","bet5iz","be5tr","be3tw","be3w","be5yo","2bf","4b3h","bi2b","bi4d","3bie","bi5en","bi4er","2b3if","1bil","bi3liz","bina5r4","bin4d","bi5net","bi3ogr","bi5ou","bi2t","3bi3tio","bi3tr","3bit5ua","b5itz","b1j","bk4","b2l2","blath5","b4le.","blen4","5blesp","b3lis","b4lo","blun4t","4b1m","4b3n","bne5g","3bod","bod3i","bo4e","bol3ic","bom4bi","bon4a","bon5at","3boo","5bor.","4b1ora","bor5d","5bore","5bori","5bos4","b5ota","both5","bo4to","bound3","4bp","4brit","broth3","2b5s2","bsor4","2bt","bt4l","b4to","b3tr","buf4fer","bu4ga","bu3li","bumi4","bu4n","bunt4i","bu3re","bus5ie","buss4e","5bust","4buta","3butio","b5uto","b1v","4b5w","5by.","bys4","1ca","cab3in","ca1bl","cach4","ca5den","4cag4","2c5ah","ca3lat","cal4la","call5in","4calo","can5d","can4e","can4ic","can5is","can3iz","can4ty","cany4","ca5per","car5om","cast5er","cas5tig","4casy","ca4th","4cativ","cav5al","c3c","ccha5","cci4a","ccompa5","ccon4","ccou3t","2ce.","4ced.","4ceden","3cei","5cel.","3cell","1cen","3cenc","2cen4e","4ceni","3cent","3cep","ce5ram","4cesa","3cessi","ces5si5b","ces5t","cet4","c5e4ta","cew4","2ch","4ch.","4ch3ab","5chanic","ch5a5nis","che2","cheap3","4ched","che5lo","3chemi","ch5ene","ch3er.","ch3ers","4ch1in","5chine.","ch5iness","5chini","5chio","3chit","chi2z","3cho2","ch4ti","1ci","3cia","ci2a5b","cia5r","ci5c","4cier","5cific.","4cii","ci4la","3cili","2cim","2cin","c4ina","3cinat","cin3em","c1ing","c5ing.","5cino","cion4","4cipe","ci3ph","4cipic","4cista","4cisti","2c1it","cit3iz","5ciz","ck1","ck3i","1c4l4","4clar","c5laratio","5clare","cle4m","4clic","clim4","cly4","c5n","1co","co5ag","coe2","2cog","co4gr","coi4","co3inc","col5i","5colo","col3or","com5er","con4a","c4one","con3g","con5t","co3pa","cop3ic","co4pl","4corb","coro3n","cos4e","cov1","cove4","cow5a","coz5e","co5zi","c1q","cras5t","5crat.","5cratic","cre3at","5cred","4c3reta","cre4v","cri2","cri5f","c4rin","cris4","5criti","cro4pl","crop5o","cros4e","cru4d","4c3s2","2c1t","cta4b","ct5ang","c5tant","c2te","c3ter","c4ticu","ctim3i","ctu4r","c4tw","cud5","c4uf","c4ui","cu5ity","5culi","cul4tis","3cultu","cu2ma","c3ume","cu4mi","3cun","cu3pi","cu5py","cur5a4b","cu5ria","1cus","cuss4i","3c4ut","cu4tie","4c5utiv","4cutr","1cy","cze4","1d2a","5da.","2d3a4b","dach4","4daf","2dag","da2m2","dan3g","dard5","dark5","4dary","3dat","4dativ","4dato","5dav4","dav5e","5day","d1b","d5c","d1d4","2de.","deaf5","deb5it","de4bon","decan4","de4cil","de5com","2d1ed","4dee.","de5if","deli4e","del5i5q","de5lo","d4em","5dem.","3demic","dem5ic.","de5mil","de4mons","demor5","1den","de4nar","de3no","denti5f","de3nu","de1p","de3pa","depi4","de2pu","d3eq","d4erh","5derm","dern5iz","der5s","des2","d2es.","de1sc","de2s5o","des3ti","de3str","de4su","de1t","de2to","de1v","dev3il","4dey","4d1f","d4ga","d3ge4t","dg1i","d2gy","d1h2","5di.","1d4i3a","dia5b","di4cam","d4ice","3dict","3did","5di3en","d1if","di3ge","di4lato","d1in","1dina","3dine.","5dini","di5niz","1dio","dio5g","di4pl","dir2","di1re","dirt5i","dis1","5disi","d4is3t","d2iti","1di1v","d1j","d5k2","4d5la","3dle.","3dled","3dles.","4dless","2d3lo","4d5lu","2dly","d1m","4d1n4","1do","3do.","do5de","5doe","2d5of","d4og","do4la","doli4","do5lor","dom5iz","do3nat","doni4","doo3d","dop4p","d4or","3dos","4d5out","do4v","3dox","d1p","1dr","drag5on","4drai","dre4","drea5r","5dren","dri4b","dril4","dro4p","4drow","5drupli","4dry","2d1s2","ds4p","d4sw","d4sy","d2th","1du","d1u1a","du2c","d1uca","duc5er","4duct.","4ducts","du5el","du4g","d3ule","dum4be","du4n","4dup","du4pe","d1v","d1w","d2y","5dyn","dy4se","dys5p","e1a4b","e3act","ead1","ead5ie","ea4ge","ea5ger","ea4l","eal5er","eal3ou","eam3er","e5and","ear3a","ear4c","ear5es","ear4ic","ear4il","ear5k","ear2t","eart3e","ea5sp","e3ass","east3","ea2t","eat5en","eath3i","e5atif","e4a3tu","ea2v","eav3en","eav5i","eav5o","2e1b","e4bel.","e4bels","e4ben","e4bit","e3br","e4cad","ecan5c","ecca5","e1ce","ec5essa","ec2i","e4cib","ec5ificat","ec5ifie","ec5ify","ec3im","eci4t","e5cite","e4clam","e4clus","e2col","e4comm","e4compe","e4conc","e2cor","ec3ora","eco5ro","e1cr","e4crem","ec4tan","ec4te","e1cu","e4cul","ec3ula","2e2da","4ed3d","e4d1er","ede4s","4edi","e3dia","ed3ib","ed3ica","ed3im","ed1it","edi5z","4edo","e4dol","edon2","e4dri","e4dul","ed5ulo","ee2c","eed3i","ee2f","eel3i","ee4ly","ee2m","ee4na","ee4p1","ee2s4","eest4","ee4ty","e5ex","e1f","e4f3ere","1eff","e4fic","5efici","efil4","e3fine","ef5i5nite","3efit","efor5es","e4fuse.","4egal","eger4","eg5ib","eg4ic","eg5ing","e5git5","eg5n","e4go.","e4gos","eg1ul","e5gur","5egy","e1h4","eher4","ei2","e5ic","ei5d","eig2","ei5gl","e3imb","e3inf","e1ing","e5inst","eir4d","eit3e","ei3th","e5ity","e1j","e4jud","ej5udi","eki4n","ek4la","e1la","e4la.","e4lac","elan4d","el5ativ","e4law","elaxa4","e3lea","el5ebra","5elec","e4led","el3ega","e5len","e4l1er","e1les","el2f","el2i","e3libe","e4l5ic.","el3ica","e3lier","el5igib","e5lim","e4l3ing","e3lio","e2lis","el5ish","e3liv3","4ella","el4lab","ello4","e5loc","el5og","el3op.","el2sh","el4ta","e5lud","el5ug","e4mac","e4mag","e5man","em5ana","em5b","e1me","e2mel","e4met","em3ica","emi4e","em5igra","em1in2","em5ine","em3i3ni","e4mis","em5ish","e5miss","em3iz","5emniz","emo4g","emoni5o","em3pi","e4mul","em5ula","emu3n","e3my","en5amo","e4nant","ench4er","en3dic","e5nea","e5nee","en3em","en5ero","en5esi","en5est","en3etr","e3new","en5ics","e5nie","e5nil","e3nio","en3ish","en3it","e5niu","5eniz","4enn","4eno","eno4g","e4nos","en3ov","en4sw","ent5age","4enthes","en3ua","en5uf","e3ny.","4en3z","e5of","eo2g","e4oi4","e3ol","eop3ar","e1or","eo3re","eo5rol","eos4","e4ot","eo4to","e5out","e5ow","e2pa","e3pai","ep5anc","e5pel","e3pent","ep5etitio","ephe4","e4pli","e1po","e4prec","ep5reca","e4pred","ep3reh","e3pro","e4prob","ep4sh","ep5ti5b","e4put","ep5uta","e1q","equi3l","e4q3ui3s","er1a","era4b","4erand","er3ar","4erati.","2erb","er4bl","er3ch","er4che","2ere.","e3real","ere5co","ere3in","er5el.","er3emo","er5ena","er5ence","4erene","er3ent","ere4q","er5ess","er3est","eret4","er1h","er1i","e1ria4","5erick","e3rien","eri4er","er3ine","e1rio","4erit","er4iu","eri4v","e4riva","er3m4","er4nis","4ernit","5erniz","er3no","2ero","er5ob","e5roc","ero4r","er1ou","er1s","er3set","ert3er","4ertl","er3tw","4eru","eru4t","5erwau","e1s4a","e4sage.","e4sages","es2c","e2sca","es5can","e3scr","es5cu","e1s2e","e2sec","es5ecr","es5enc","e4sert.","e4serts","e4serva","4esh","e3sha","esh5en","e1si","e2sic","e2sid","es5iden","es5igna","e2s5im","es4i4n","esis4te","esi4u","e5skin","es4mi","e2sol","es3olu","e2son","es5ona","e1sp","es3per","es5pira","es4pre","2ess","es4si4b","estan4","es3tig","es5tim","4es2to","e3ston","2estr","e5stro","estruc5","e2sur","es5urr","es4w","eta4b","eten4d","e3teo","ethod3","et1ic","e5tide","etin4","eti4no","e5tir","e5titio","et5itiv","4etn","et5ona","e3tra","e3tre","et3ric","et5rif","et3rog","et5ros","et3ua","et5ym","et5z","4eu","e5un","e3up","eu3ro","eus4","eute4","euti5l","eu5tr","eva2p5","e2vas","ev5ast","e5vea","ev3ell","evel3o","e5veng","even4i","ev1er","e5verb","e1vi","ev3id","evi4l","e4vin","evi4v","e5voc","e5vu","e1wa","e4wag","e5wee","e3wh","ewil5","ew3ing","e3wit","1exp","5eyc","5eye.","eys4","1fa","fa3bl","fab3r","fa4ce","4fag","fain4","fall5e","4fa4ma","fam5is","5far","far5th","fa3ta","fa3the","4fato","fault5","4f5b","4fd","4fe.","feas4","feath3","fe4b","4feca","5fect","2fed","fe3li","fe4mo","fen2d","fend5e","fer1","5ferr","fev4","4f1f","f4fes","f4fie","f5fin.","f2f5is","f4fly","f2fy","4fh","1fi","fi3a","2f3ic.","4f3ical","f3ican","4ficate","f3icen","fi3cer","fic4i","5ficia","5ficie","4fics","fi3cu","fi5del","fight5","fil5i","fill5in","4fily","2fin","5fina","fin2d5","fi2ne","f1in3g","fin4n","fis4ti","f4l2","f5less","flin4","flo3re","f2ly5","4fm","4fn","1fo","5fon","fon4de","fon4t","fo2r","fo5rat","for5ay","fore5t","for4i","fort5a","fos5","4f5p","fra4t","f5rea","fres5c","fri2","fril4","frol5","2f3s","2ft","f4to","f2ty","3fu","fu5el","4fug","fu4min","fu5ne","fu3ri","fusi4","fus4s","4futa","1fy","1ga","gaf4","5gal.","3gali","ga3lo","2gam","ga5met","g5amo","gan5is","ga3niz","gani5za","4gano","gar5n4","gass4","gath3","4gativ","4gaz","g3b","gd4","2ge.","2ged","geez4","gel4in","ge5lis","ge5liz","4gely","1gen","ge4nat","ge5niz","4geno","4geny","1geo","ge3om","g4ery","5gesi","geth5","4geto","ge4ty","ge4v","4g1g2","g2ge","g3ger","gglu5","ggo4","gh3in","gh5out","gh4to","5gi.","1gi4a","gia5r","g1ic","5gicia","g4ico","gien5","5gies.","gil4","g3imen","3g4in.","gin5ge","5g4ins","5gio","3gir","gir4l","g3isl","gi4u","5giv","3giz","gl2","gla4","glad5i","5glas","1gle","gli4b","g3lig","3glo","glo3r","g1m","g4my","gn4a","g4na.","gnet4t","g1ni","g2nin","g4nio","g1no","g4non","1go","3go.","gob5","5goe","3g4o4g","go3is","gon2","4g3o3na","gondo5","go3ni","5goo","go5riz","gor5ou","5gos.","gov1","g3p","1gr","4grada","g4rai","gran2","5graph.","g5rapher","5graphic","4graphy","4gray","gre4n","4gress.","4grit","g4ro","gruf4","gs2","g5ste","gth3","gu4a","3guard","2gue","5gui5t","3gun","3gus","4gu4t","g3w","1gy","2g5y3n","gy5ra","h3ab4l","hach4","hae4m","hae4t","h5agu","ha3la","hala3m","ha4m","han4ci","han4cy","5hand.","han4g","hang5er","hang5o","h5a5niz","han4k","han4te","hap3l","hap5t","ha3ran","ha5ras","har2d","hard3e","har4le","harp5en","har5ter","has5s","haun4","5haz","haz3a","h1b","1head","3hear","he4can","h5ecat","h4ed","he5do5","he3l4i","hel4lis","hel4ly","h5elo","hem4p","he2n","hena4","hen5at","heo5r","hep5","h4era","hera3p","her4ba","here5a","h3ern","h5erou","h3ery","h1es","he2s5p","he4t","het4ed","heu4","h1f","h1h","hi5an","hi4co","high5","h4il2","himer4","h4ina","hion4e","hi4p","hir4l","hi3ro","hir4p","hir4r","his3el","his4s","hith5er","hi2v","4hk","4h1l4","hlan4","h2lo","hlo3ri","4h1m","hmet4","2h1n","h5odiz","h5ods","ho4g","hoge4","hol5ar","3hol4e","ho4ma","home3","hon4a","ho5ny","3hood","hoon4","hor5at","ho5ris","hort3e","ho5ru","hos4e","ho5sen","hos1p","1hous","house3","hov5el","4h5p","4hr4","hree5","hro5niz","hro3po","4h1s2","h4sh","h4tar","ht1en","ht5es","h4ty","hu4g","hu4min","hun5ke","hun4t","hus3t4","hu4t","h1w","h4wart","hy3pe","hy3ph","hy2s","2i1a","i2al","iam4","iam5ete","i2an","4ianc","ian3i","4ian4t","ia5pe","iass4","i4ativ","ia4tric","i4atu","ibe4","ib3era","ib5ert","ib5ia","ib3in","ib5it.","ib5ite","i1bl","ib3li","i5bo","i1br","i2b5ri","i5bun","4icam","5icap","4icar","i4car.","i4cara","icas5","i4cay","iccu4","4iceo","4ich","2ici","i5cid","ic5ina","i2cip","ic3ipa","i4cly","i2c5oc","4i1cr","5icra","i4cry","ic4te","ictu2","ic4t3ua","ic3ula","ic4um","ic5uo","i3cur","2id","i4dai","id5anc","id5d","ide3al","ide4s","i2di","id5ian","idi4ar","i5die","id3io","idi5ou","id1it","id5iu","i3dle","i4dom","id3ow","i4dr","i2du","id5uo","2ie4","ied4e","5ie5ga","ield3","ien5a4","ien4e","i5enn","i3enti","i1er.","i3esc","i1est","i3et","4if.","if5ero","iff5en","if4fr","4ific.","i3fie","i3fl","4ift","2ig","iga5b","ig3era","ight3i","4igi","i3gib","ig3il","ig3in","ig3it","i4g4l","i2go","ig3or","ig5ot","i5gre","igu5i","ig1ur","i3h","4i5i4","i3j","4ik","i1la","il3a4b","i4lade","i2l5am","ila5ra","i3leg","il1er","ilev4","il5f","il1i","il3ia","il2ib","il3io","il4ist","2ilit","il2iz","ill5ab","4iln","il3oq","il4ty","il5ur","il3v","i4mag","im3age","ima5ry","imenta5r","4imet","im1i","im5ida","imi5le","i5mini","4imit","im4ni","i3mon","i2mu","im3ula","2in.","i4n3au","4inav","incel4","in3cer","4ind","in5dling","2ine","i3nee","iner4ar","i5ness","4inga","4inge","in5gen","4ingi","in5gling","4ingo","4ingu","2ini","i5ni.","i4nia","in3io","in1is","i5nite.","5initio","in3ity","4ink","4inl","2inn","2i1no","i4no4c","ino4s","i4not","2ins","in3se","insur5a","2int.","2in4th","in1u","i5nus","4iny","2io","4io.","ioge4","io2gr","i1ol","io4m","ion3at","ion4ery","ion3i","io5ph","ior3i","i4os","io5th","i5oti","io4to","i4our","2ip","ipe4","iphras4","ip3i","ip4ic","ip4re4","ip3ul","i3qua","iq5uef","iq3uid","iq3ui3t","4ir","i1ra","ira4b","i4rac","ird5e","ire4de","i4ref","i4rel4","i4res","ir5gi","ir1i","iri5de","ir4is","iri3tu","5i5r2iz","ir4min","iro4g","5iron.","ir5ul","2is.","is5ag","is3ar","isas5","2is1c","is3ch","4ise","is3er","3isf","is5han","is3hon","ish5op","is3ib","isi4d","i5sis","is5itiv","4is4k","islan4","4isms","i2so","iso5mer","is1p","is2pi","is4py","4is1s","is4sal","issen4","is4ses","is4ta.","is1te","is1ti","ist4ly","4istral","i2su","is5us","4ita.","ita4bi","i4tag","4ita5m","i3tan","i3tat","2ite","it3era","i5teri","it4es","2ith","i1ti","4itia","4i2tic","it3ica","5i5tick","it3ig","it5ill","i2tim","2itio","4itis","i4tism","i2t5o5m","4iton","i4tram","it5ry","4itt","it3uat","i5tud","it3ul","4itz.","i1u","2iv","iv3ell","iv3en.","i4v3er.","i4vers.","iv5il.","iv5io","iv1it","i5vore","iv3o3ro","i4v3ot","4i5w","ix4o","4iy","4izar","izi4","5izont","5ja","jac4q","ja4p","1je","jer5s","4jestie","4jesty","jew3","jo4p","5judg","3ka.","k3ab","k5ag","kais4","kal4","k1b","k2ed","1kee","ke4g","ke5li","k3en4d","k1er","kes4","k3est.","ke4ty","k3f","kh4","k1i","5ki.","5k2ic","k4ill","kilo5","k4im","k4in.","kin4de","k5iness","kin4g","ki4p","kis4","k5ish","kk4","k1l","4kley","4kly","k1m","k5nes","1k2no","ko5r","kosh4","k3ou","kro5n","4k1s2","k4sc","ks4l","k4sy","k5t","k1w","lab3ic","l4abo","laci4","l4ade","la3dy","lag4n","lam3o","3land","lan4dl","lan5et","lan4te","lar4g","lar3i","las4e","la5tan","4lateli","4lativ","4lav","la4v4a","2l1b","lbin4","4l1c2","lce4","l3ci","2ld","l2de","ld4ere","ld4eri","ldi4","ld5is","l3dr","l4dri","le2a","le4bi","left5","5leg.","5legg","le4mat","lem5atic","4len.","3lenc","5lene.","1lent","le3ph","le4pr","lera5b","ler4e","3lerg","3l4eri","l4ero","les2","le5sco","5lesq","3less","5less.","l3eva","lev4er.","lev4era","lev4ers","3ley","4leye","2lf","l5fr","4l1g4","l5ga","lgar3","l4ges","lgo3","2l3h","li4ag","li2am","liar5iz","li4as","li4ato","li5bi","5licio","li4cor","4lics","4lict.","l4icu","l3icy","l3ida","lid5er","3lidi","lif3er","l4iff","li4fl","5ligate","3ligh","li4gra","3lik","4l4i4l","lim4bl","lim3i","li4mo","l4im4p","l4ina","1l4ine","lin3ea","lin3i","link5er","li5og","4l4iq","lis4p","l1it","l2it.","5litica","l5i5tics","liv3er","l1iz","4lj","lka3","l3kal","lka4t","l1l","l4law","l2le","l5lea","l3lec","l3leg","l3lel","l3le4n","l3le4t","ll2i","l2lin4","l5lina","ll4o","lloqui5","ll5out","l5low","2lm","l5met","lm3ing","l4mod","lmon4","2l1n2","3lo.","lob5al","lo4ci","4lof","3logic","l5ogo","3logu","lom3er","5long","lon4i","l3o3niz","lood5","5lope.","lop3i","l3opm","lora4","lo4rato","lo5rie","lor5ou","5los.","los5et","5losophiz","5losophy","los4t","lo4ta","loun5d","2lout","4lov","2lp","lpa5b","l3pha","l5phi","lp5ing","l3pit","l4pl","l5pr","4l1r","2l1s2","l4sc","l2se","l4sie","4lt","lt5ag","ltane5","l1te","lten4","ltera4","lth3i","l5ties.","ltis4","l1tr","ltu2","ltur3a","lu5a","lu3br","luch4","lu3ci","lu3en","luf4","lu5id","lu4ma","5lumi","l5umn.","5lumnia","lu3o","luo3r","4lup","luss4","lus3te","1lut","l5ven","l5vet4","2l1w","1ly","4lya","4lyb","ly5me","ly3no","2lys4","l5yse","1ma","2mab","ma2ca","ma5chine","ma4cl","mag5in","5magn","2mah","maid5","4mald","ma3lig","ma5lin","mal4li","mal4ty","5mania","man5is","man3iz","4map","ma5rine.","ma5riz","mar4ly","mar3v","ma5sce","mas4e","mas1t","5mate","math3","ma3tis","4matiza","4m1b","mba4t5","m5bil","m4b3ing","mbi4v","4m5c","4me.","2med","4med.","5media","me3die","m5e5dy","me2g","mel5on","mel4t","me2m","mem1o3","1men","men4a","men5ac","men4de","4mene","men4i","mens4","mensu5","3ment","men4te","me5on","m5ersa","2mes","3mesti","me4ta","met3al","me1te","me5thi","m4etr","5metric","me5trie","me3try","me4v","4m1f","2mh","5mi.","mi3a","mid4a","mid4g","mig4","3milia","m5i5lie","m4ill","min4a","3mind","m5inee","m4ingl","min5gli","m5ingly","min4t","m4inu","miot4","m2is","mis4er.","mis5l","mis4ti","m5istry","4mith","m2iz","4mk","4m1l","m1m","mma5ry","4m1n","mn4a","m4nin","mn4o","1mo","4mocr","5mocratiz","mo2d1","mo4go","mois2","moi5se","4mok","mo5lest","mo3me","mon5et","mon5ge","moni3a","mon4ism","mon4ist","mo3niz","monol4","mo3ny.","mo2r","4mora.","mos2","mo5sey","mo3sp","moth3","m5ouf","3mous","mo2v","4m1p","mpara5","mpa5rab","mpar5i","m3pet","mphas4","m2pi","mpi4a","mp5ies","m4p1in","m5pir","mp5is","mpo3ri","mpos5ite","m4pous","mpov5","mp4tr","m2py","4m3r","4m1s2","m4sh","m5si","4mt","1mu","mula5r4","5mult","multi3","3mum","mun2","4mup","mu4u","4mw","1na","2n1a2b","n4abu","4nac.","na4ca","n5act","nag5er.","nak4","na4li","na5lia","4nalt","na5mit","n2an","nanci4","nan4it","nank4","nar3c","4nare","nar3i","nar4l","n5arm","n4as","nas4c","nas5ti","n2at","na3tal","nato5miz","n2au","nau3se","3naut","nav4e","4n1b4","ncar5","n4ces.","n3cha","n5cheo","n5chil","n3chis","nc1in","nc4it","ncour5a","n1cr","n1cu","n4dai","n5dan","n1de","nd5est.","ndi4b","n5d2if","n1dit","n3diz","n5duc","ndu4r","nd2we","2ne.","n3ear","ne2b","neb3u","ne2c","5neck","2ned","ne4gat","neg5ativ","5nege","ne4la","nel5iz","ne5mi","ne4mo","1nen","4nene","3neo","ne4po","ne2q","n1er","nera5b","n4erar","n2ere","n4er5i","ner4r","1nes","2nes.","4nesp","2nest","4nesw","3netic","ne4v","n5eve","ne4w","n3f","n4gab","n3gel","nge4n4e","n5gere","n3geri","ng5ha","n3gib","ng1in","n5git","n4gla","ngov4","ng5sh","n1gu","n4gum","n2gy","4n1h4","nha4","nhab3","nhe4","3n4ia","ni3an","ni4ap","ni3ba","ni4bl","ni4d","ni5di","ni4er","ni2fi","ni5ficat","n5igr","nik4","n1im","ni3miz","n1in","5nine.","nin4g","ni4o","5nis.","nis4ta","n2it","n4ith","3nitio","n3itor","ni3tr","n1j","4nk2","n5kero","n3ket","nk3in","n1kl","4n1l","n5m","nme4","nmet4","4n1n2","nne4","nni3al","nni4v","nob4l","no3ble","n5ocl","4n3o2d","3noe","4nog","noge4","nois5i","no5l4i","5nologis","3nomic","n5o5miz","no4mo","no3my","no4n","non4ag","non5i","n5oniz","4nop","5nop5o5li","nor5ab","no4rary","4nosc","nos4e","nos5t","no5ta","1nou","3noun","nov3el3","nowl3","n1p4","npi4","npre4c","n1q","n1r","nru4","2n1s2","ns5ab","nsati4","ns4c","n2se","n4s3es","nsid1","nsig4","n2sl","ns3m","n4soc","ns4pe","n5spi","nsta5bl","n1t","nta4b","nter3s","nt2i","n5tib","nti4er","nti2f","n3tine","n4t3ing","nti4p","ntrol5li","nt4s","ntu3me","nu1a","nu4d","nu5en","nuf4fe","n3uin","3nu3it","n4um","nu1me","n5umi","3nu4n","n3uo","nu3tr","n1v2","n1w4","nym4","nyp4","4nz","n3za","4oa","oad3","o5a5les","oard3","oas4e","oast5e","oat5i","ob3a3b","o5bar","obe4l","o1bi","o2bin","ob5ing","o3br","ob3ul","o1ce","och4","o3chet","ocif3","o4cil","o4clam","o4cod","oc3rac","oc5ratiz","ocre3","5ocrit","octor5a","oc3ula","o5cure","od5ded","od3ic","odi3o","o2do4","odor3","od5uct.","od5ucts","o4el","o5eng","o3er","oe4ta","o3ev","o2fi","of5ite","ofit4t","o2g5a5r","og5ativ","o4gato","o1ge","o5gene","o5geo","o4ger","o3gie","1o1gis","og3it","o4gl","o5g2ly","3ogniz","o4gro","ogu5i","1ogy","2ogyn","o1h2","ohab5","oi2","oic3es","oi3der","oiff4","oig4","oi5let","o3ing","oint5er","o5ism","oi5son","oist5en","oi3ter","o5j","2ok","o3ken","ok5ie","o1la","o4lan","olass4","ol2d","old1e","ol3er","o3lesc","o3let","ol4fi","ol2i","o3lia","o3lice","ol5id.","o3li4f","o5lil","ol3ing","o5lio","o5lis.","ol3ish","o5lite","o5litio","o5liv","olli4e","ol5ogiz","olo4r","ol5pl","ol2t","ol3ub","ol3ume","ol3un","o5lus","ol2v","o2ly","om5ah","oma5l","om5atiz","om2be","om4bl","o2me","om3ena","om5erse","o4met","om5etry","o3mia","om3ic.","om3ica","o5mid","om1in","o5mini","5ommend","omo4ge","o4mon","om3pi","ompro5","o2n","on1a","on4ac","o3nan","on1c","3oncil","2ond","on5do","o3nen","on5est","on4gu","on1ic","o3nio","on1is","o5niu","on3key","on4odi","on3omy","on3s","onspi4","onspir5a","onsu4","onten4","on3t4i","ontif5","on5um","onva5","oo2","ood5e","ood5i","oo4k","oop3i","o3ord","oost5","o2pa","ope5d","op1er","3opera","4operag","2oph","o5phan","o5pher","op3ing","o3pit","o5pon","o4posi","o1pr","op1u","opy5","o1q","o1ra","o5ra.","o4r3ag","or5aliz","or5ange","ore5a","o5real","or3ei","ore5sh","or5est.","orew4","or4gu","4o5ria","or3ica","o5ril","or1in","o1rio","or3ity","o3riu","or2mi","orn2e","o5rof","or3oug","or5pe","3orrh","or4se","ors5en","orst4","or3thi","or3thy","or4ty","o5rum","o1ry","os3al","os2c","os4ce","o3scop","4oscopi","o5scr","os4i4e","os5itiv","os3ito","os3ity","osi4u","os4l","o2so","os4pa","os4po","os2ta","o5stati","os5til","os5tit","o4tan","otele4g","ot3er.","ot5ers","o4tes","4oth","oth5esi","oth3i4","ot3ic.","ot5ica","o3tice","o3tif","o3tis","oto5s","ou2","ou3bl","ouch5i","ou5et","ou4l","ounc5er","oun2d","ou5v","ov4en","over4ne","over3s","ov4ert","o3vis","oviti4","o5v4ol","ow3der","ow3el","ow5est","ow1i","own5i","o4wo","oy1a","1pa","pa4ca","pa4ce","pac4t","p4ad","5pagan","p3agat","p4ai","pain4","p4al","pan4a","pan3el","pan4ty","pa3ny","pa1p","pa4pu","para5bl","par5age","par5di","3pare","par5el","p4a4ri","par4is","pa2te","pa5ter","5pathic","pa5thy","pa4tric","pav4","3pay","4p1b","pd4","4pe.","3pe4a","pear4l","pe2c","2p2ed","3pede","3pedi","pedia4","ped4ic","p4ee","pee4d","pek4","pe4la","peli4e","pe4nan","p4enc","pen4th","pe5on","p4era.","pera5bl","p4erag","p4eri","peri5st","per4mal","perme5","p4ern","per3o","per3ti","pe5ru","per1v","pe2t","pe5ten","pe5tiz","4pf","4pg","4ph.","phar5i","phe3no","ph4er","ph4es.","ph1ic","5phie","ph5ing","5phisti","3phiz","ph2l","3phob","3phone","5phoni","pho4r","4phs","ph3t","5phu","1phy","pi3a","pian4","pi4cie","pi4cy","p4id","p5ida","pi3de","5pidi","3piec","pi3en","pi4grap","pi3lo","pi2n","p4in.","pind4","p4ino","3pi1o","pion4","p3ith","pi5tha","pi2tu","2p3k2","1p2l2","3plan","plas5t","pli3a","pli5er","4plig","pli4n","ploi4","plu4m","plum4b","4p1m","2p3n","po4c","5pod.","po5em","po3et5","5po4g","poin2","5point","poly5t","po4ni","po4p","1p4or","po4ry","1pos","pos1s","p4ot","po4ta","5poun","4p1p","ppa5ra","p2pe","p4ped","p5pel","p3pen","p3per","p3pet","ppo5site","pr2","pray4e","5preci","pre5co","pre3em","pref5ac","pre4la","pre3r","p3rese","3press","pre5ten","pre3v","5pri4e","prin4t3","pri4s","pris3o","p3roca","prof5it","pro3l","pros3e","pro1t","2p1s2","p2se","ps4h","p4sib","2p1t","pt5a4b","p2te","p2th","pti3m","ptu4r","p4tw","pub3","pue4","puf4","pul3c","pu4m","pu2n","pur4r","5pus","pu2t","5pute","put3er","pu3tr","put4ted","put4tin","p3w","qu2","qua5v","2que.","3quer","3quet","2rab","ra3bi","rach4e","r5acl","raf5fi","raf4t","r2ai","ra4lo","ram3et","r2ami","rane5o","ran4ge","r4ani","ra5no","rap3er","3raphy","rar5c","rare4","rar5ef","4raril","r2as","ration4","rau4t","ra5vai","rav3el","ra5zie","r1b","r4bab","r4bag","rbi2","rbi4f","r2bin","r5bine","rb5ing.","rb4o","r1c","r2ce","rcen4","r3cha","rch4er","r4ci4b","rc4it","rcum3","r4dal","rd2i","rdi4a","rdi4er","rdin4","rd3ing","2re.","re1al","re3an","re5arr","5reav","re4aw","r5ebrat","rec5oll","rec5ompe","re4cre","2r2ed","re1de","re3dis","red5it","re4fac","re2fe","re5fer.","re3fi","re4fy","reg3is","re5it","re1li","re5lu","r4en4ta","ren4te","re1o","re5pin","re4posi","re1pu","r1er4","r4eri","rero4","re5ru","r4es.","re4spi","ress5ib","res2t","re5stal","re3str","re4ter","re4ti4z","re3tri","reu2","re5uti","rev2","re4val","rev3el","r5ev5er.","re5vers","re5vert","re5vil","rev5olu","re4wh","r1f","rfu4","r4fy","rg2","rg3er","r3get","r3gic","rgi4n","rg3ing","r5gis","r5git","r1gl","rgo4n","r3gu","rh4","4rh.","4rhal","ri3a","ria4b","ri4ag","r4ib","rib3a","ric5as","r4ice","4rici","5ricid","ri4cie","r4ico","rid5er","ri3enc","ri3ent","ri1er","ri5et","rig5an","5rigi","ril3iz","5riman","rim5i","3rimo","rim4pe","r2ina","5rina.","rin4d","rin4e","rin4g","ri1o","5riph","riph5e","ri2pl","rip5lic","r4iq","r2is","r4is.","ris4c","r3ish","ris4p","ri3ta3b","r5ited.","rit5er.","rit5ers","rit3ic","ri2tu","rit5ur","riv5el","riv3et","riv3i","r3j","r3ket","rk4le","rk4lin","r1l","rle4","r2led","r4lig","r4lis","rl5ish","r3lo4","r1m","rma5c","r2me","r3men","rm5ers","rm3ing","r4ming.","r4mio","r3mit","r4my","r4nar","r3nel","r4ner","r5net","r3ney","r5nic","r1nis4","r3nit","r3niv","rno4","r4nou","r3nu","rob3l","r2oc","ro3cr","ro4e","ro1fe","ro5fil","rok2","ro5ker","5role.","rom5ete","rom4i","rom4p","ron4al","ron4e","ro5n4is","ron4ta","1room","5root","ro3pel","rop3ic","ror3i","ro5ro","ros5per","ros4s","ro4the","ro4ty","ro4va","rov5el","rox5","r1p","r4pea","r5pent","rp5er.","r3pet","rp4h4","rp3ing","r3po","r1r4","rre4c","rre4f","r4reo","rre4st","rri4o","rri4v","rron4","rros4","rrys4","4rs2","r1sa","rsa5ti","rs4c","r2se","r3sec","rse4cr","rs5er.","rs3es","rse5v2","r1sh","r5sha","r1si","r4si4b","rson3","r1sp","r5sw","rtach4","r4tag","r3teb","rten4d","rte5o","r1ti","rt5ib","rti4d","r4tier","r3tig","rtil3i","rtil4l","r4tily","r4tist","r4tiv","r3tri","rtroph4","rt4sh","ru3a","ru3e4l","ru3en","ru4gl","ru3in","rum3pl","ru2n","runk5","run4ty","r5usc","ruti5n","rv4e","rvel4i","r3ven","rv5er.","r5vest","r3vey","r3vic","rvi4v","r3vo","r1w","ry4c","5rynge","ry3t","sa2","2s1ab","5sack","sac3ri","s3act","5sai","salar4","sal4m","sa5lo","sal4t","3sanc","san4de","s1ap","sa5ta","5sa3tio","sat3u","sau4","sa5vor","5saw","4s5b","scan4t5","sca4p","scav5","s4ced","4scei","s4ces","sch2","s4cho","3s4cie","5scin4d","scle5","s4cli","scof4","4scopy","scour5a","s1cu","4s5d","4se.","se4a","seas4","sea5w","se2c3o","3sect","4s4ed","se4d4e","s5edl","se2g","seg3r","5sei","se1le","5self","5selv","4seme","se4mol","sen5at","4senc","sen4d","s5ened","sen5g","s5enin","4sentd","4sentl","sep3a3","4s1er.","s4erl","ser4o","4servo","s1e4s","se5sh","ses5t","5se5um","5sev","sev3en","sew4i","5sex","4s3f","2s3g","s2h","2sh.","sh1er","5shev","sh1in","sh3io","3ship","shiv5","sho4","sh5old","shon3","shor4","short5","4shw","si1b","s5icc","3side.","5sides","5sidi","si5diz","4signa","sil4e","4sily","2s1in","s2ina","5sine.","s3ing","1sio","5sion","sion5a","si2r","sir5a","1sis","3sitio","5siu","1siv","5siz","sk2","4ske","s3ket","sk5ine","sk5ing","s1l2","s3lat","s2le","slith5","2s1m","s3ma","small3","sman3","smel4","s5men","5smith","smol5d4","s1n4","1so","so4ce","soft3","so4lab","sol3d2","so3lic","5solv","3som","3s4on.","sona4","son4g","s4op","5sophic","s5ophiz","s5ophy","sor5c","sor5d","4sov","so5vi","2spa","5spai","spa4n","spen4d","2s5peo","2sper","s2phe","3spher","spho5","spil4","sp5ing","4spio","s4ply","s4pon","spor4","4spot","squal4l","s1r","2ss","s1sa","ssas3","s2s5c","s3sel","s5seng","s4ses.","s5set","s1si","s4sie","ssi4er","ss5ily","s4sl","ss4li","s4sn","sspend4","ss2t","ssur5a","ss5w","2st.","s2tag","s2tal","stam4i","5stand","s4ta4p","5stat.","s4ted","stern5i","s5tero","ste2w","stew5a","s3the","st2i","s4ti.","s5tia","s1tic","5stick","s4tie","s3tif","st3ing","5stir","s1tle","5stock","stom3a","5stone","s4top","3store","st4r","s4trad","5stratu","s4tray","s4trid","4stry","4st3w","s2ty","1su","su1al","su4b3","su2g3","su5is","suit3","s4ul","su2m","sum3i","su2n","su2r","4sv","sw2","4swo","s4y","4syc","3syl","syn5o","sy5rin","1ta","3ta.","2tab","ta5bles","5taboliz","4taci","ta5do","4taf4","tai5lo","ta2l","ta5la","tal5en","tal3i","4talk","tal4lis","ta5log","ta5mo","tan4de","tanta3","ta5per","ta5pl","tar4a","4tarc","4tare","ta3riz","tas4e","ta5sy","4tatic","ta4tur","taun4","tav4","2taw","tax4is","2t1b","4tc","t4ch","tch5et","4t1d","4te.","tead4i","4teat","tece4","5tect","2t1ed","te5di","1tee","teg4","te5ger","te5gi","3tel.","teli4","5tels","te2ma2","tem3at","3tenan","3tenc","3tend","4tenes","1tent","ten4tag","1teo","te4p","te5pe","ter3c","5ter3d","1teri","ter5ies","ter3is","teri5za","5ternit","ter5v","4tes.","4tess","t3ess.","teth5e","3teu","3tex","4tey","2t1f","4t1g","2th.","than4","th2e","4thea","th3eas","the5at","the3is","3thet","th5ic.","th5ica","4thil","5think","4thl","th5ode","5thodic","4thoo","thor5it","tho5riz","2ths","1tia","ti4ab","ti4ato","2ti2b","4tick","t4ico","t4ic1u","5tidi","3tien","tif2","ti5fy","2tig","5tigu","till5in","1tim","4timp","tim5ul","2t1in","t2ina","3tine.","3tini","1tio","ti5oc","tion5ee","5tiq","ti3sa","3tise","tis4m","ti5so","tis4p","5tistica","ti3tl","ti4u","1tiv","tiv4a","1tiz","ti3za","ti3zen","2tl","t5la","tlan4","3tle.","3tled","3tles.","t5let.","t5lo","4t1m","tme4","2t1n2","1to","to3b","to5crat","4todo","2tof","to2gr","to5ic","to2ma","tom4b","to3my","ton4ali","to3nat","4tono","4tony","to2ra","to3rie","tor5iz","tos2","5tour","4tout","to3war","4t1p","1tra","tra3b","tra5ch","traci4","trac4it","trac4te","tras4","tra5ven","trav5es5","tre5f","tre4m","trem5i","5tria","tri5ces","5tricia","4trics","2trim","tri4v","tro5mi","tron5i","4trony","tro5phe","tro3sp","tro3v","tru5i","trus4","4t1s2","t4sc","tsh4","t4sw","4t3t2","t4tes","t5to","ttu4","1tu","tu1a","tu3ar","tu4bi","tud2","4tue","4tuf4","5tu3i","3tum","tu4nis","2t3up.","3ture","5turi","tur3is","tur5o","tu5ry","3tus","4tv","tw4","4t1wa","twis4","4two","1ty","4tya","2tyl","type3","ty5ph","4tz","tz4e","4uab","uac4","ua5na","uan4i","uar5ant","uar2d","uar3i","uar3t","u1at","uav4","ub4e","u4bel","u3ber","u4bero","u1b4i","u4b5ing","u3ble.","u3ca","uci4b","uc4it","ucle3","u3cr","u3cu","u4cy","ud5d","ud3er","ud5est","udev4","u1dic","ud3ied","ud3ies","ud5is","u5dit","u4don","ud4si","u4du","u4ene","uens4","uen4te","uer4il","3ufa","u3fl","ugh3en","ug5in","2ui2","uil5iz","ui4n","u1ing","uir4m","uita4","uiv3","uiv4er.","u5j","4uk","u1la","ula5b","u5lati","ulch4","5ulche","ul3der","ul4e","u1len","ul4gi","ul2i","u5lia","ul3ing","ul5ish","ul4lar","ul4li4b","ul4lis","4ul3m","u1l4o","4uls","uls5es","ul1ti","ultra3","4ultu","u3lu","ul5ul","ul5v","um5ab","um4bi","um4bly","u1mi","u4m3ing","umor5o","um2p","unat4","u2ne","un4er","u1ni","un4im","u2nin","un5ish","uni3v","un3s4","un4sw","unt3ab","un4ter.","un4tes","unu4","un5y","un5z","u4ors","u5os","u1ou","u1pe","uper5s","u5pia","up3ing","u3pl","up3p","upport5","upt5ib","uptu4","u1ra","4ura.","u4rag","u4ras","ur4be","urc4","ur1d","ure5at","ur4fer","ur4fr","u3rif","uri4fic","ur1in","u3rio","u1rit","ur3iz","ur2l","url5ing.","ur4no","uros4","ur4pe","ur4pi","urs5er","ur5tes","ur3the","urti4","ur4tie","u3ru","2us","u5sad","u5san","us4ap","usc2","us3ci","use5a","u5sia","u3sic","us4lin","us1p","us5sl","us5tere","us1tr","u2su","usur4","uta4b","u3tat","4ute.","4utel","4uten","uten4i","4u1t2i","uti5liz","u3tine","ut3ing","ution5a","u4tis","5u5tiz","u4t1l","ut5of","uto5g","uto5matic","u5ton","u4tou","uts4","u3u","uu4m","u1v2","uxu3","uz4e","1va","5va.","2v1a4b","vac5il","vac3u","vag4","va4ge","va5lie","val5o","val1u","va5mo","va5niz","va5pi","var5ied","3vat","4ve.","4ved","veg3","v3el.","vel3li","ve4lo","v4ely","ven3om","v5enue","v4erd","5vere.","v4erel","v3eren","ver5enc","v4eres","ver3ie","vermi4n","3verse","ver3th","v4e2s","4ves.","ves4te","ve4te","vet3er","ve4ty","vi5ali","5vian","5vide.","5vided","4v3iden","5vides","5vidi","v3if","vi5gn","vik4","2vil","5vilit","v3i3liz","v1in","4vi4na","v2inc","vin5d","4ving","vio3l","v3io4r","vi1ou","vi4p","vi5ro","vis3it","vi3so","vi3su","4viti","vit3r","4vity","3viv","5vo.","voi4","3vok","vo4la","v5ole","5volt","3volv","vom5i","vor5ab","vori4","vo4ry","vo4ta","4votee","4vv4","v4y","w5abl","2wac","wa5ger","wag5o","wait5","w5al.","wam4","war4t","was4t","wa1te","wa5ver","w1b","wea5rie","weath3","wed4n","weet3","wee5v","wel4l","w1er","west3","w3ev","whi4","wi2","wil2","will5in","win4de","win4g","wir4","3wise","with3","wiz5","w4k","wl4es","wl3in","w4no","1wo2","wom1","wo5ven","w5p","wra4","wri4","writa4","w3sh","ws4l","ws4pe","w5s4t","4wt","wy4","x1a","xac5e","x4ago","xam3","x4ap","xas5","x3c2","x1e","xe4cuto","x2ed","xer4i","xe5ro","x1h","xhi2","xhil5","xhu4","x3i","xi5a","xi5c","xi5di","x4ime","xi5miz","x3o","x4ob","x3p","xpan4d","xpecto5","xpe3d","x1t2","x3ti","x1u","xu3a","xx4","y5ac","3yar4","y5at","y1b","y1c","y2ce","yc5er","y3ch","ych4e","ycom4","ycot4","y1d","y5ee","y1er","y4erf","yes4","ye4t","y5gi","4y3h","y1i","y3la","ylla5bl","y3lo","y5lu","ymbol5","yme4","ympa3","yn3chr","yn5d","yn5g","yn5ic","5ynx","y1o4","yo5d","y4o5g","yom4","yo5net","y4ons","y4os","y4ped","yper5","yp3i","y3po","y4poc","yp2ta","y5pu","yra5m","yr5ia","y3ro","yr4r","ys4c","y3s2e","ys3ica","ys3io","3ysis","y4so","yss4","ys1t","ys3ta","ysur4","y3thin","yt3ic","y1w","za1","z5a2b","zar2","4zb","2ze","ze4n","ze4p","z1er","ze3ro","zet4","2z1i","z4il","z4is","5zl","4zm","1zo","zo4m","zo5ol","zte4","4z1z2","z4zy",".con5gr",".de5riva",".dri5v4",".eth1y6l1",".eu4ler",".ev2",".ever5si5b",".ga4s1om1",".ge4ome",".ge5ot1",".he3mo1",".he3p6a",".he3roe",".in5u2t",".kil2n3i",".ko6r1te1",".le6ices",".me4ga1l",".met4ala",".mim5i2c1",".mi1s4ers",".ne6o3f",".noe1th",".non1e2m",".poly1s",".post1am",".pre1am",".rav5en1o",".semi5",".sem4ic",".semid6",".semip4",".semir4",".sem6is4",".semiv4",".sph6in1",".spin1o",".ta5pes1tr",".te3legr",".to6pog",".to2q",".un3at5t",".un5err5",".vi2c3ar",".we2b1l",".re1e4c","a5bolic","a2cabl","af6fish","am1en3ta5b","anal6ys","ano5a2c","ans5gr","ans3v","anti1d","an3ti1n2","anti1re","a4pe5able","ar3che5t","ar2range","as5ymptot","ath3er1o1s","at6tes.","augh4tl","au5li5f","av3iou","back2er.","ba6r1onie","ba1thy","bbi4t","be2vie","bi5d2if","bil2lab","bio5m","bi1orb","bio1rh","b1i3tive","blan2d1","blin2d1","blon2d2","bor1no5","bo2t1u1l","brus4q","bus6i2er","bus6i2es","buss4ing","but2ed.","but4ted","cad5e1m","cat1a1s2","4chs.","chs3hu","chie5vo","cig3a3r","cin2q","cle4ar","co6ph1o3n","cous2ti","cri3tie","croc1o1d","cro5e2co","c2tro3me6c","1cu2r1ance","2d3alone","data1b","dd5a5b","d2d5ib","de4als.","de5clar1","de2c5lina","de3fin3iti","de2mos","des3ic","de2tic","dic1aid","dif5fra","3di1methy","di2ren","di2rer","2d1lead","2d1li2e","3do5word","dren1a5l","drif2t1a","d1ri3pleg5","drom3e5d","d3tab","du2al.","du1op1o1l","ea4n3ies","e3chas","edg1l","ed1uling","eli2t1is","e1loa","en1dix","eo3grap","1e6p3i3neph1","e2r3i4an.","e3spac6i","eth1y6l1ene","5eu2clid1","feb1rua","fermi1o","3fich","fit5ted.","fla1g6el","flow2er.","3fluor","gen2cy.","ge3o1d","ght1we","g1lead","get2ic.","4g1lish","5glo5bin","1g2nac","gnet1ism","gno5mo","g2n1or.","g2noresp","2g1o4n3i1za","graph5er.","griev1","g1utan","hair1s","ha2p3ar5r","hatch1","hex2a3","hite3sid","h3i5pel1a4","hnau3z","ho6r1ic.","h2t1eou","hypo1tha","id4ios","ifac1et","ign4it","ignit1er","i4jk","im3ped3a","infra1s2","i5nitely.","irre6v3oc","i1tesima","ith5i2l","itin5er5ar","janu3a","japan1e2s","je1re1m","1ke6ling","1ki5netic","1kovian","k3sha","la4c3i5e","lai6n3ess","lar5ce1n","l3chai","l3chil6d1","lead6er.","lea4s1a","1lec3ta6b","le3g6en2dre","1le1noid","lith1o5g","ll1fl","l2l3ish","l5mo3nell","lo1bot1o1","lo2ges.","load4ed.","load6er.","l3tea","lth5i2ly","lue1p","1lunk3er","1lum5bia.","3lyg1a1mi","ly5styr","ma1la1p","m2an.","man3u1sc","mar1gin1","medi2c","med3i3cin","medio6c1","me3gran3","m2en.","3mi3da5b","3milita","mil2l1ag","mil5li5li","mi6n3is.","mi1n2ut1er","mi1n2ut1est","m3ma1b","5maph1ro1","5moc1ra1t","mo5e2las","mol1e5c","mon4ey1l","mono3ch","mo4no1en","moro6n5is","mono1s6","moth4et2","m1ou3sin","m5shack2","mu2dro","mul2ti5u","n3ar4chs.","n3ch2es1t","ne3back","2ne1ski","n1dieck","nd3thr","nfi6n3ites","4n5i4an.","nge5nes","ng1ho","ng1spr","nk3rup","n5less","5noc3er1os","nom1a6l","nom5e1no","n1o1mist","non1eq","non1i4so","5nop1oly.","no1vemb","ns5ceiv","ns4moo","ntre1p","obli2g1","o3chas","odel3li","odit1ic","oerst2","oke1st","o3les3ter","oli3gop1o1","o1lo3n4om","o3mecha6","onom1ic","o3norma","o3no2t1o3n","o3nou","op1ism.","or4tho3ni4t","orth1ri","or5tively","o4s3pher","o5test1er","o5tes3tor","oth3e1o1s","ou3ba3do","o6v3i4an.","oxi6d1ic","pal6mat","parag6ra4","par4a1le","param4","para3me","pee2v1","phi2l3ant","phi5lat1e3l","pi2c1a3d","pli2c1ab","pli5nar","poin3ca","1pole.","poly1e","po3lyph1ono","1prema3c","pre1neu","pres2pli","pro2cess","proc3i3ty.","pro2g1e","3pseu2d","pseu3d6o3d2","pseu3d6o3f2","pto3mat4","p5trol3","pu5bes5c","quain2t1e","qu6a3si3","quasir6","quasis6","quin5tes5s","qui3v4ar","r1abolic","3rab1o1loi","ra3chu","r3a3dig","radi1o6g","r2amen","3ra4m5e1triz","ra3mou","ra5n2has","ra1or","r3bin1ge","re2c3i1pr","rec5t6ang","re4t1ribu","r3ial.","riv1o1l","6rk.","rk1ho","r1krau","6rks.","r5le5qu","ro1bot1","ro5e2las","ro5epide1","ro3mesh","ro1tron","r3pau5li","rse1rad1i","r1thou","r1treu","r1veil","rz1sc","sales3c","sales5w","5sa3par5il","sca6p1er","sca2t1ol","s4chitz","schro1ding1","1sci2utt","scrap4er.","scy4th1","sem1a1ph","se3mes1t","se1mi6t5ic","sep3temb","shoe1st","sid2ed.","side5st","side5sw","si5resid","sky1sc","3slova1kia","3s2og1a1my","so2lute","3s2pace","1s2pacin","spe3cio","spher1o","spi2c1il","spokes5w","sports3c","sports3w","s3qui3to","s2s1a3chu1","ss3hat","s2s3i4an.","s5sign5a3b","1s2tamp","s2t1ant5shi","star3tli","sta1ti","st5b","1stor1ab","strat1a1g","strib5ut","st5scr","stu1pi4d1","styl1is","su2per1e6","1sync","1syth3i2","swimm6","5tab1o1lism","ta3gon.","talk1a5","t1a1min","t6ap6ath","5tar2rh","tch1c","tch3i1er","t1cr","teach4er.","tele2g","tele1r6o","3ter1gei","ter2ic.","t3ess2es","tha4l1am","tho3don","th1o5gen1i","tho1k2er","thy4l1an","thy3sc","2t3i4an.","ti2n3o1m","t1li2er","tolo2gy","tot3ic","trai3tor1","tra1vers","travers3a3b","treach1e","tr4ial.","3tro1le1um","trof4ic.","tro3fit","tro1p2is","3trop1o5les","3trop1o5lis","t1ro1pol3it","tsch3ie","ttrib1ut1","turn3ar","t1wh","ty2p5al","ua3drati","uad1ratu","u5do3ny","uea1m","u2r1al.","uri4al.","us2er.","v1ativ","v1oir5du1","va6guer","vaude3v","1verely.","v1er1eig","ves1tite","vi1vip3a3r","voice1p","waste3w6a2","wave1g4","w3c","week1n","wide5sp","wo4k1en","wrap3aro","writ6er.","x1q","xquis3","y5che3d","ym5e5try","y1stro","yes5ter1y","z3ian.","z3o1phr","z2z3w",""],exceptions:["as-so-ciate","as-so-ciates","dec-li-na-tion","oblig-a-tory","phil-an-thropic","present","presents","project","projects","reci-procity","re-cog-ni-zance","ref-or-ma-tion","ret-ri-bu-tion","ta-ble",""]}})?t.apply(I,C):t)||(g.exports=Q)},function(g,I,e){"use strict";I.__esModule=!0,I.default=void 0;var t=function(g){return g?g.replace(/(^|\s)\S/g,(function(g){return g.toUpperCase()})):g};I.default=t},function(g,I,e){"use strict";var t=e(37).default;I.__esModule=!0,I.default=void 0;var C=t(e(1586)),Q=e(568),F=function(){function g(g){this.name=g,this.src=Q.PDFFont.open(null,g)}var I=g.prototype;return I.encode=function(g){return this.src.encode(g)},I.layout=function(g){var I=this,e=this.encode(g),t=e[0],C=e[1];return{positions:C,stringIndices:C.map((function(g,I){return I})),glyphs:t.map((function(g,e){var t=I.getGlyph(parseInt(g,16));return t.advanceWidth=C[e].advanceWidth,t}))}},I.glyphForCodePoint=function(g){var I=this.getGlyph(g);return I.advanceWidth=400,I},I.getGlyph=function(g){return{id:g,_font:this.src,codePoints:[g],isLigature:!1,name:this.src.font.characterToGlyph(g)}},I.hasGlyphForCodePoint=function(g){return".notdef"!==this.src.font.characterToGlyph(g)},(0,C.default)(g,[{key:"ascent",get:function(){return 900}},{key:"capHeight",get:function(){switch(this.name){case"Times-Roman":case"Times-Bold":case"Times-Italic":return 650;case"Courier":case"Courier-Bold":case"Courier-Oblique":return 550;default:return 690}}},{key:"xHeight",get:function(){switch(this.name){case"Times-Roman":case"Times-Bold":case"Times-Italic":return 440;case"Courier":case"Courier-Bold":case"Courier-Oblique":return 390;default:return 490}}},{key:"descent",get:function(){switch(this.name){case"Times-Roman":case"Times-Bold":case"Times-Italic":return-220;case"Courier":case"Courier-Bold":case"Courier-Oblique":return-230;default:return-200}}},{key:"lineGap",get:function(){return 0}},{key:"unitsPerEm",get:function(){return 1e3}}]),g}();I.default=F},function(g,I,e){var t=e(1587);function C(g,I){for(var e=0;e<I.length;e++){var C=I[e];C.enumerable=C.enumerable||!1,C.configurable=!0,"value"in C&&(C.writable=!0),Object.defineProperty(g,t(C.key),C)}}g.exports=function(g,I,e){return I&&C(g.prototype,I),e&&C(g,e),Object.defineProperty(g,"prototype",{writable:!1}),g},g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I,e){var t=e(416).default,C=e(1588);g.exports=function(g){var I=C(g,"string");return"symbol"===t(I)?I:String(I)},g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I,e){var t=e(416).default;g.exports=function(g,I){if("object"!==t(g)||null===g)return g;var e=g[Symbol.toPrimitive];if(void 0!==e){var C=e.call(g,I||"default");if("object"!==t(C))return C;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===I?String:Number)(g)},g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I,e){"use strict";var t=e(37).default,C=e(43).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=C(e(53)),B=t(e(1590)),n=Q.propEq("type",F.Defs),U=Q.complement(n),s=Q.evolve({children:Q.filter(U)}),i=/url\(['"]?#([^'"]+)['"]?\)/,c=function(g){return Q.compose(Q.when(Q.test(i),Q.compose(Q.prop(Q.__,g),Q.prop(1),Q.match(i))),Q.defaultTo(""))},A=function g(I){return function(e){return Q.compose(Q.evolve({props:Q.evolve({fill:c(I),clipPath:c(I)})}),Q.evolve({children:Q.map(g(I))}))(e)}},l=Q.compose(s,(function(g){var I=(0,B.default)(g);return Q.evolve({children:Q.map(A(I))},g)}));I.default=l},function(g,I,e){"use strict";var t=e(43).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=t(e(53)),F=C.propEq("type",Q.Defs),B=C.propOr([],"children"),n=C.path(["props","id"]),U=C.compose(C.map(C.prop(0)),C.groupBy(n),B,C.defaultTo({}),C.find(F),B);I.default=U},function(g,I,e){"use strict";var t=e(37).default;I.__esModule=!0,I.default=void 0;var C=t(e(799)),Q=function(g){var I=(0,C.default)(g.props.viewBox);return I?{width:I.maxX,height:I.maxY}:g.props.width&&g.props.height?{width:parseFloat(g.props.width),height:parseFloat(g.props.height)}:{width:0,height:0}};I.default=Q},function(g,I,e){"use strict";var t=e(43).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=["x","y","clipPath","clipRule","opacity","fill","fillOpacity","fillRule","stroke","strokeLinecap","strokeLinejoin","strokeOpacity","strokeWidth","textAnchor","dominantBaseline","color","fontFamily","fontSize","fontStyle","fontWeight","letterSpacing","opacity","textDecoration","lineHeight","textAlign","visibility","wordSpacing"],F=function g(I){var e=function(g){var I=g.props||{};return C.pick(Q,I)}(I);return C.evolve({children:C.map(C.compose(g,C.evolve({props:C.merge(e)})))})(I)};I.default=F},function(g,I,e){"use strict";I.__esModule=!0,I.default=void 0;var t=function(g){var I=g.replace(/[\s\r\t\n]+/gm," ").replace(/^defer\s/,"").split(" ");return{align:I[0]||"xMidYMid",meetOrSlice:I[1]||"meet"}};I.default=t},function(g,I,e){"use strict";var t=e(43).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=e(53),F=C.path(["style","zIndex"]),B=C.propEq("type"),n=C.anyPass([B(Q.Document),B(Q.Svg)]),U=function(g,I){var e=F(g),t=F(I);return e||t?e?t?t-e:-1:1:0},s=function g(I){return C.compose(C.evolve({children:C.map(g)}),C.unless(n,C.evolve({children:C.sort(U)})))(I)};I.default=s},function(g,I,e){"use strict";var t=e(43).default,C=e(37).default;I.__esModule=!0,I.default=void 0;var Q=C(e(417)),F=C(e(418)),B=t(e(20)),n=t(e(53)),U=C(e(800)),s=C(e(1599)),i=B.propEq("type",n.Image),c=function(g,I){for(var e,t=[],C=(null===(e=I.children)||void 0===e?void 0:e.slice(0))||[],Q=g?g.getEmojiSource():null;C.length>0;){var F,B=C.shift();i(B)&&t.push((0,s.default)(B)),g&&null!==(F=B.style)&&void 0!==F&&F.fontFamily&&t.push(g.load(B.style)),"string"===typeof B&&t.push.apply(t,(0,U.default)(B,Q)),"string"===typeof B.value&&t.push.apply(t,(0,U.default)(B.value,Q)),B.children&&B.children.forEach((function(g){C.push(g)}))}return t},A=function(){var g=(0,F.default)(Q.default.mark((function g(I,e){var t;return Q.default.wrap((function(g){for(;;)switch(g.prev=g.next){case 0:return t=c(e,I),g.next=3,Promise.all(t);case 3:return g.abrupt("return",I);case 4:case"end":return g.stop()}}),g)})));return function(I,e){return g.apply(this,arguments)}}();I.default=A},function(g,I,e){"use strict";g.exports=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g}},function(g,I,e){var t=e(1598).default;function C(){"use strict";g.exports=C=function(){return I},g.exports.__esModule=!0,g.exports.default=g.exports;var I={},e=Object.prototype,Q=e.hasOwnProperty,F=Object.defineProperty||function(g,I,e){g[I]=e.value},B="function"==typeof Symbol?Symbol:{},n=B.iterator||"@@iterator",U=B.asyncIterator||"@@asyncIterator",s=B.toStringTag||"@@toStringTag";function i(g,I,e){return Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}),g[I]}try{i({},"")}catch(D){i=function(g,I,e){return g[I]=e}}function c(g,I,e,t){var C=I&&I.prototype instanceof a?I:a,Q=Object.create(C.prototype),B=new L(t||[]);return F(Q,"_invoke",{value:x(g,e,B)}),Q}function A(g,I,e){try{return{type:"normal",arg:g.call(I,e)}}catch(D){return{type:"throw",arg:D}}}I.wrap=c;var l={};function a(){}function r(){}function o(){}var d={};i(d,n,(function(){return this}));var u=Object.getPrototypeOf,y=u&&u(u(V([])));y&&y!==e&&Q.call(y,n)&&(d=y);var b=o.prototype=a.prototype=Object.create(d);function Z(g){["next","throw","return"].forEach((function(I){i(g,I,(function(g){return this._invoke(I,g)}))}))}function m(g,I){var e;F(this,"_invoke",{value:function(C,F){function B(){return new I((function(e,B){!function e(C,F,B,n){var U=A(g[C],g,F);if("throw"!==U.type){var s=U.arg,i=s.value;return i&&"object"==t(i)&&Q.call(i,"__await")?I.resolve(i.__await).then((function(g){e("next",g,B,n)}),(function(g){e("throw",g,B,n)})):I.resolve(i).then((function(g){s.value=g,B(s)}),(function(g){return e("throw",g,B,n)}))}n(U.arg)}(C,F,e,B)}))}return e=e?e.then(B,B):B()}})}function x(g,I,e){var t="suspendedStart";return function(C,Q){if("executing"===t)throw new Error("Generator is already running");if("completed"===t){if("throw"===C)throw Q;return h()}for(e.method=C,e.arg=Q;;){var F=e.delegate;if(F){var B=R(F,e);if(B){if(B===l)continue;return B}}if("next"===e.method)e.sent=e._sent=e.arg;else if("throw"===e.method){if("suspendedStart"===t)throw t="completed",e.arg;e.dispatchException(e.arg)}else"return"===e.method&&e.abrupt("return",e.arg);t="executing";var n=A(g,I,e);if("normal"===n.type){if(t=e.done?"completed":"suspendedYield",n.arg===l)continue;return{value:n.arg,done:e.done}}"throw"===n.type&&(t="completed",e.method="throw",e.arg=n.arg)}}}function R(g,I){var e=I.method,t=g.iterator[e];if(void 0===t)return I.delegate=null,"throw"===e&&g.iterator.return&&(I.method="return",I.arg=void 0,R(g,I),"throw"===I.method)||"return"!==e&&(I.method="throw",I.arg=new TypeError("The iterator does not provide a '"+e+"' method")),l;var C=A(t,g.iterator,I.arg);if("throw"===C.type)return I.method="throw",I.arg=C.arg,I.delegate=null,l;var Q=C.arg;return Q?Q.done?(I[g.resultName]=Q.value,I.next=g.nextLoc,"return"!==I.method&&(I.method="next",I.arg=void 0),I.delegate=null,l):Q:(I.method="throw",I.arg=new TypeError("iterator result is not an object"),I.delegate=null,l)}function S(g){var I={tryLoc:g[0]};1 in g&&(I.catchLoc=g[1]),2 in g&&(I.finallyLoc=g[2],I.afterLoc=g[3]),this.tryEntries.push(I)}function G(g){var I=g.completion||{};I.type="normal",delete I.arg,g.completion=I}function L(g){this.tryEntries=[{tryLoc:"root"}],g.forEach(S,this),this.reset(!0)}function V(g){if(g){var I=g[n];if(I)return I.call(g);if("function"==typeof g.next)return g;if(!isNaN(g.length)){var e=-1,t=function I(){for(;++e<g.length;)if(Q.call(g,e))return I.value=g[e],I.done=!1,I;return I.value=void 0,I.done=!0,I};return t.next=t}}return{next:h}}function h(){return{value:void 0,done:!0}}return r.prototype=o,F(b,"constructor",{value:o,configurable:!0}),F(o,"constructor",{value:r,configurable:!0}),r.displayName=i(o,s,"GeneratorFunction"),I.isGeneratorFunction=function(g){var I="function"==typeof g&&g.constructor;return!!I&&(I===r||"GeneratorFunction"===(I.displayName||I.name))},I.mark=function(g){return Object.setPrototypeOf?Object.setPrototypeOf(g,o):(g.__proto__=o,i(g,s,"GeneratorFunction")),g.prototype=Object.create(b),g},I.awrap=function(g){return{__await:g}},Z(m.prototype),i(m.prototype,U,(function(){return this})),I.AsyncIterator=m,I.async=function(g,e,t,C,Q){void 0===Q&&(Q=Promise);var F=new m(c(g,e,t,C),Q);return I.isGeneratorFunction(e)?F:F.next().then((function(g){return g.done?g.value:F.next()}))},Z(b),i(b,s,"Generator"),i(b,n,(function(){return this})),i(b,"toString",(function(){return"[object Generator]"})),I.keys=function(g){var I=Object(g),e=[];for(var t in I)e.push(t);return e.reverse(),function g(){for(;e.length;){var t=e.pop();if(t in I)return g.value=t,g.done=!1,g}return g.done=!0,g}},I.values=V,L.prototype={constructor:L,reset:function(g){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(G),!g)for(var I in this)"t"===I.charAt(0)&&Q.call(this,I)&&!isNaN(+I.slice(1))&&(this[I]=void 0)},stop:function(){this.done=!0;var g=this.tryEntries[0].completion;if("throw"===g.type)throw g.arg;return this.rval},dispatchException:function(g){if(this.done)throw g;var I=this;function e(e,t){return F.type="throw",F.arg=g,I.next=e,t&&(I.method="next",I.arg=void 0),!!t}for(var t=this.tryEntries.length-1;t>=0;--t){var C=this.tryEntries[t],F=C.completion;if("root"===C.tryLoc)return e("end");if(C.tryLoc<=this.prev){var B=Q.call(C,"catchLoc"),n=Q.call(C,"finallyLoc");if(B&&n){if(this.prev<C.catchLoc)return e(C.catchLoc,!0);if(this.prev<C.finallyLoc)return e(C.finallyLoc)}else if(B){if(this.prev<C.catchLoc)return e(C.catchLoc,!0)}else{if(!n)throw new Error("try statement without catch or finally");if(this.prev<C.finallyLoc)return e(C.finallyLoc)}}}},abrupt:function(g,I){for(var e=this.tryEntries.length-1;e>=0;--e){var t=this.tryEntries[e];if(t.tryLoc<=this.prev&&Q.call(t,"finallyLoc")&&this.prev<t.finallyLoc){var C=t;break}}C&&("break"===g||"continue"===g)&&C.tryLoc<=I&&I<=C.finallyLoc&&(C=null);var F=C?C.completion:{};return F.type=g,F.arg=I,C?(this.method="next",this.next=C.finallyLoc,l):this.complete(F)},complete:function(g,I){if("throw"===g.type)throw g.arg;return"break"===g.type||"continue"===g.type?this.next=g.arg:"return"===g.type?(this.rval=this.arg=g.arg,this.method="return",this.next="end"):"normal"===g.type&&I&&(this.next=I),l},finish:function(g){for(var I=this.tryEntries.length-1;I>=0;--I){var e=this.tryEntries[I];if(e.finallyLoc===g)return this.complete(e.completion,e.afterLoc),G(e),l}},catch:function(g){for(var I=this.tryEntries.length-1;I>=0;--I){var e=this.tryEntries[I];if(e.tryLoc===g){var t=e.completion;if("throw"===t.type){var C=t.arg;G(e)}return C}}throw new Error("illegal catch attempt")},delegateYield:function(g,I,e){return this.delegate={iterator:V(g),resultName:I,nextLoc:e},"next"===this.method&&(this.arg=void 0),l}},I}g.exports=C,g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I){function e(I){return g.exports=e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"==typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g},g.exports.__esModule=!0,g.exports.default=g.exports,e(I)}g.exports=e,g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I,e){"use strict";var t=e(37).default;I.__esModule=!0,I.default=void 0;var C=t(e(417)),Q=t(e(418)),F=t(e(801)),B=t(e(1600)),n=t(e(1601)),U=function(){var g=(0,Q.default)(C.default.mark((function g(I){var e,t,Q;return C.default.wrap((function(g){for(;;)switch(g.prev=g.next){case 0:if(e=(0,B.default)(I),t=I.props.cache,e){g.next=5;break}return console.warn(!1,'Image should receive either a "src" or "source" prop'),g.abrupt("return");case 5:return g.prev=5,g.next=8,(0,n.default)(e);case 8:if(Q=g.sent){g.next=11;break}throw new Error('Image\'s "src" or "source" prop returned '+Q);case 11:return g.next=13,(0,F.default)(Q,{cache:t});case 13:I.image=g.sent,g.next=20;break;case 16:g.prev=16,g.t0=g.catch(5),I.image={width:0,height:0},console.warn(g.t0.message);case 20:case"end":return g.stop()}}),g,null,[[5,16]])})));return function(I){return g.apply(this,arguments)}}();I.default=U},function(g,I,e){"use strict";I.__esModule=!0,I.default=void 0;var t=function(g){var I,e,t;return(null===(I=g.props)||void 0===I?void 0:I.src)||(null===(e=g.props)||void 0===e?void 0:e.source)||(null===(t=g.props)||void 0===t?void 0:t.href)};I.default=t},function(g,I,e){"use strict";var t=e(37).default;I.__esModule=!0,I.default=void 0;var C=t(e(417)),Q=t(e(418)),F=function(){var g=(0,Q.default)(C.default.mark((function g(I){var e;return C.default.wrap((function(g){for(;;)switch(g.prev=g.next){case 0:if("function"!==typeof I){g.next=6;break}return g.next=3,I();case 3:g.t0=g.sent,g.next=9;break;case 6:return g.next=8,I;case 8:g.t0=g.sent;case 9:return e=g.t0,g.abrupt("return","string"===typeof e?{uri:e}:e);case 11:case"end":return g.stop()}}),g)})));return function(I){return g.apply(this,arguments)}}();I.default=F},function(g,I,e){"use strict";var t=e(37).default,C=e(43).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=C(e(53)),B=t(e(764)),n=Q.propEq("type",F.Link),U={color:"blue",textDecoration:"underline"},s=function g(I){return function(e){return Q.o(Q.when(n,Q.evolve({style:Q.merge(U)})),Q.evolve({style:(0,B.default)(I),children:Q.map(g(I))}))(e)}},i=Q.evolve({children:Q.map((function(g){var I=Q.prop("box",g),e=Q.prop("style",g),t=Q.isEmpty(I)?e:I;return Q.evolve({style:(0,B.default)(t),children:Q.map(s(t))})(g)}))});I.default=i},function(g,I,e){"use strict";var t=e(37).default,C=e(43).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(1604)),B=Q.evolve({children:Q.map((function g(I){return Q.compose(Q.evolve({children:Q.map(g)}),Q.converge(Q.assoc("origin"),[F.default,Q.identity]))(I)}))});I.default=B},function(g,I,e){"use strict";var t=e(37).default,C=e(43).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(291)),B=function(g){return Q.pathOr("50%",["style",g])},n=function(g){if(!g.box)return{};var I=g.box,e=I.left,t=I.top,C=I.width,Q=I.height,n=B("transformOriginX")(g),U=B("transformOriginY")(g),s=(0,F.default)(n),i=(0,F.default)(U);return{left:e+(s?C*s.percent:n),top:t+(i?Q*i.percent:U)}};I.default=n},function(g,I,e){"use strict";var t=e(43).default,C=e(37).default;I.__esModule=!0,I.resolvePageSize=I.default=void 0;var Q=C(e(348)),F=t(e(20)),B=C(e(766)),n=C(e(1606)),U=function(g){var I=(0,n.default)(g),e=(0,B.default)(g.style||{});return(0,Q.default)({},g,{style:(0,Q.default)({},e,I)})};I.resolvePageSize=U;var s=F.evolve({children:F.map(U)});I.default=s},function(g,I,e){"use strict";var t=e(37).default,C=e(43).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(1607)),B={"4A0":[4767.87,6740.79],"2A0":[3370.39,4767.87],A0:[2383.94,3370.39],A1:[1683.78,2383.94],A2:[1190.55,1683.78],A3:[841.89,1190.55],A4:[595.28,841.89],A5:[419.53,595.28],A6:[297.64,419.53],A7:[209.76,297.64],A8:[147.4,209.76],A9:[104.88,147.4],A10:[73.7,104.88],B0:[2834.65,4008.19],B1:[2004.09,2834.65],B2:[1417.32,2004.09],B3:[1000.63,1417.32],B4:[708.66,1000.63],B5:[498.9,708.66],B6:[354.33,498.9],B7:[249.45,354.33],B8:[175.75,249.45],B9:[124.72,175.75],B10:[87.87,124.72],C0:[2599.37,3676.54],C1:[1836.85,2599.37],C2:[1298.27,1836.85],C3:[918.43,1298.27],C4:[649.13,918.43],C5:[459.21,649.13],C6:[323.15,459.21],C7:[229.61,323.15],C8:[161.57,229.61],C9:[113.39,161.57],C10:[79.37,113.39],RA0:[2437.8,3458.27],RA1:[1729.13,2437.8],RA2:[1218.9,1729.13],RA3:[864.57,1218.9],RA4:[609.45,864.57],SRA0:[2551.18,3628.35],SRA1:[1814.17,2551.18],SRA2:[1275.59,1814.17],SRA3:[907.09,1275.59],SRA4:[637.8,907.09],EXECUTIVE:[521.86,756],FOLIO:[612,936],LEGAL:[612,1008],LETTER:[612,792],TABLOID:[792,1224],ID1:[153,243]},n=function(g){return{width:g[0],height:g[1]}},U=function(g){return n(B[g.toUpperCase()])},s=function(g){return n([g])},i=function(g){throw new Error("Invalid Page size: "+JSON.stringify(g))},c=function(g){var I,e,t=(null===(I=g.props)||void 0===I?void 0:I.size)||"A4",C=Q.cond([[Q.is(String),U],[Q.is(Array),n],[Q.is(Number),s],[Q.is(Object),Q.identity],[Q.T,i]])(t);return(0,F.default)(g)?{width:(e=C).height,height:e.width}:C};I.default=c},function(g,I,e){"use strict";var t=e(37).default;I.__esModule=!0,I.default=void 0;var C=t(e(1608)),Q=function(g){return"landscape"===(0,C.default)(g)};I.default=Q},function(g,I,e){"use strict";I.__esModule=!0,I.default=void 0;var t=["portrait","landscape"],C=function(g){var I,e=(null===(I=g.props)||void 0===I?void 0:I.orientation)||"portrait";return t.includes(e)?e:"portrait"};I.default=C},function(g,I,e){"use strict";var t=e(43).default,C=e(37).default;I.__esModule=!0,I.default=void 0;var Q=C(e(348)),F=t(e(20)),B=t(e(53)),n=C(e(1610)),U=C(e(1611)),s=C(e(1614)),i=C(e(802)),c=C(e(1615)),A=C(e(1619)),l=C(e(1620)),a=C(e(1623)),r=C(e(803)),o=C(e(805)),d=e(806),u=F.propEq("type",B.Text),y=F.assoc("children"),b=F.pathOr(0,["box","top"]),Z=F.path(["box","height"]),m=F.propOr([],"children"),x=F.useWith(F.lte,[F.identity,b]),R=F.all(n.default),S=F.hasPath(["props","render"]),G=function(){for(var g=arguments.length,I=new Array(g),e=0;e<g;e++)I[e]=arguments[e];return function(g){for(var e=g,t=F.reverse(I),C=arguments.length,Q=new Array(C>1?C-1:0),B=1;B<C;B++)Q[B-1]=arguments[B];for(var n=0;n<t.length;n+=1){var U=t[n];e=U.apply(void 0,[e].concat(Q))}return e}}(r.default,o.default,d.resolvePageDimensions),L=function(g,I,e){for(var t,C=[],Q=[],B=0;B<e.length;B+=1){var U=e[B],s=e.slice(B+1),c=F.filter(n.default,s),A=b(U),l=Z(U),r=x(g,U),o=(0,a.default)(U,s,g),d=g+.001<A+l,u=(0,i.default)(U),y=l<=I;if((0,n.default)(U))Q.push(U),C.push(U);else if(r){var m=F.evolve({box:{top:F.subtract(F.__,g)}})(U);Q.push(m)}else{if(!y&&!u){C.push(U),Q.push.apply(Q,s),t=U,console.warn("Node of type "+t.type+" can't wrap between pages and it's bigger than available page height");break}if(o){var R=F.evolve({box:{top:F.subtract(F.__,g)},props:F.evolve({wrap:F.always(!0),break:F.always(!1)})})(U);C.push.apply(C,c),Q.push.apply(Q,[R].concat(s));break}if(d){var S=V(U,g,I),G=S[0],L=S[1];G&&C.push(G),L&&Q.push(L)}else C.push(U)}}return[C,Q]},V=F.ifElse(u,U.default,(function(g,I,e){var t=(0,s.default)(g,I),C=t[0],Q=t[1],F=function(g,I,e){var t=m(e),C=g-b(e);return L(C,I,t)}(I,e,g),B=F[0],n=F[1];return[y(B)(C),y(n)(Q)]})),h=function(g,I,e){if(function g(I){var e=I.children||[];return S(I)||e.some(g)}(I)){var t=function g(I,e){var t=S(e);return F.evolve({box:function(g){return t&&u(e)?(0,Q.default)({},g,{height:0}):g},children:function(C){if(void 0===C&&(C=[]),t){var Q=e.props.render(I);return[(0,l.default)(Q)].filter(Boolean)}return C.map((function(e){return g(I,e)}))},lines:function(g){return t?null:g}},e)}(g,I);return G(t,e)}return I},D=function(g,I,e){var t=(0,c.default)(g),C=(0,A.default)(g),Q=F.path(["style","height"],g),B=h({pageNumber:I},g,e),n=L(t,C,B.children),U=n[0],s=n[1],i=function(g){return G(g,e)},l=F.compose(i,y(U),F.assocPath(["box","height"],Q))(g);return F.isEmpty(s)||R(s)?[l,null]:[l,F.compose(i,y(s),F.dissocPath(["box","height"]))(g)]},p=function(g){return g.map((function(I,e){return(0,Q.default)({},I,{subPageNumber:e,subPageTotalPages:g.length})}))},E=function(g){return F.compose(F.dissoc("subPageNumber"),F.dissoc("subPageTotalPages"))(g)},N=function(g,I,e){if(!g)return[];for(var t=D(g,I,e),C=[t[0]],Q=t[1];null!==Q;)t=D(Q,I+C.length,e),C.push(t[0]),Q=t[1];return C},W=function(g,I){for(var e=[],t=1,C=0;C<g.children.length;C+=1){var Q=g.children[C],B=N(Q,t,I);t+=(B=p(B)).length,e=e.concat(B)}return e=e.map(F.compose(E,function(g){return function(I,e,t){var C={totalPages:t.length,pageNumber:e+1,subPageNumber:I.subPageNumber+1,subPageTotalPages:I.subPageTotalPages};return h(C,I,g)}}(I))),y(e,g)};I.default=W},function(g,I,e){"use strict";var t=e(43).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)).pathEq(["props","fixed"],!0);I.default=C},function(g,I,e){"use strict";var t=e(37).default,C=e(43).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(1612)),B=t(e(1613)),n=Q.always(0),U=Q.pathOr(0,["box","top"]),s=Q.pathOr(2,["props","widows"]),i=Q.pathOr(2,["props","orphans"]),c=function(g,I){var e=function(g,I){var e=U(g),t=s(g),C=i(g),Q=g.lines.length,B=(0,F.default)(g,I-e);return 0===B?0:Q<C?Q:B<C||Q<C+t?0:Q===C+t?C:Q-B<t?Q-t:B}(g,I),t=(0,B.default)(g,e),C=g.box.height-t;return[Q.evolve({lines:Q.slice(0,e),style:Q.evolve({marginBottom:n,paddingBottom:n,borderBottomWidth:n,borderBottomLeftRadius:n,borderBottomRightRadius:n}),box:{height:Q.always(t),borderBottomWidth:n}},g),Q.evolve({lines:Q.slice(e,1/0),style:Q.evolve({marginTop:n,paddingTop:n,borderTopWidth:n,borderTopLeftRadius:n,borderTopRightRadius:n}),box:{top:n,height:Q.always(C),borderTopWidth:n}},g)]};I.default=c},function(g,I,e){"use strict";I.__esModule=!0,I.default=void 0;var t=function(g,I){var e=0;if(!g.lines)return 0;for(var t=0;t<g.lines.length;t+=1){var C=g.lines[t];if(e+C.box.height>I)return t;e+=C.box.height}return g.lines.length};I.default=t},function(g,I,e){"use strict";I.__esModule=!0,I.default=void 0;var t=function(g,I){var e=0;if(!g.lines)return e;for(var t=0;t<I;t+=1){var C=g.lines[t];if(!C)break;e+=C.box.height}return e};I.default=t},function(g,I,e){"use strict";var t=e(43).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=C.always(0),F=C.pathOr(0,["box","top"]),B=C.hasPath(["style","height"]),n=function(g,I){if(!g)return[null,null];var e=F(g),t=C.evolve({style:C.evolve({marginBottom:Q,paddingBottom:Q,borderBottomWidth:Q,borderBottomLeftRadius:Q,borderBottomRightRadius:Q}),box:{borderBottomWidth:Q}})(g);t.style.height=I-e;var n=C.ifElse(B,function(g){return C.o(C.subtract(C.__,g),C.path(["box","height"]))}(I-e),C.always(null))(g),U=C.evolve({style:C.evolve({marginTop:Q,paddingTop:Q,borderTopWidth:Q,borderTopLeftRadius:Q,borderTopRightRadius:Q}),box:{top:Q,borderTopWidth:Q}})(g);return n&&(U.style.height=n),[t,U]};I.default=n},function(g,I,e){"use strict";var t=e(37).default;I.__esModule=!0,I.default=void 0;var C=t(e(349)),Q=function(g){var I,e=(0,C.default)(g).paddingBottom;return(null===(I=g.style)||void 0===I?void 0:I.height)-e};I.default=Q},function(g,I,e){"use strict";var t=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g},C=function(){function g(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}return function(I,e,t){return e&&g(I.prototype,e),t&&g(I,t),I}}();function Q(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}function F(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}var B=e(1617),n=function(){function g(I,e,t,C,Q,B){F(this,g),this.left=I,this.right=e,this.top=t,this.bottom=C,this.width=Q,this.height=B}return C(g,[{key:"fromJS",value:function(g){g(this.left,this.right,this.top,this.bottom,this.width,this.height)}},{key:"toString",value:function(){return"<Layout#"+this.left+":"+this.right+";"+this.top+":"+this.bottom+";"+this.width+":"+this.height+">"}}]),g}(),U=function(){function g(I,e){F(this,g),this.width=I,this.height=e}return C(g,null,[{key:"fromJS",value:function(I){return new g(I.width,I.height)}}]),C(g,[{key:"fromJS",value:function(g){g(this.width,this.height)}},{key:"toString",value:function(){return"<Size#"+this.width+"x"+this.height+">"}}]),g}(),s=function(){function g(I,e){F(this,g),this.unit=I,this.value=e}return C(g,[{key:"fromJS",value:function(g){g(this.unit,this.value)}},{key:"toString",value:function(){switch(this.unit){case B.UNIT_POINT:return String(this.value);case B.UNIT_PERCENT:return this.value+"%";case B.UNIT_AUTO:return"auto";default:return this.value+"?"}}},{key:"valueOf",value:function(){return this.value}}]),g}();g.exports=function(g,I){function e(g,I,e){var t=g[I];g[I]=function(){for(var g=arguments.length,I=Array(g),C=0;C<g;C++)I[C]=arguments[C];return e.call.apply(e,[this,t].concat(I))}}for(var C=["setPosition","setMargin","setFlexBasis","setWidth","setHeight","setMinWidth","setMinHeight","setMaxWidth","setMaxHeight","setPadding"],F=function(){var g,t=C[i],F=(Q(g={},B.UNIT_POINT,I.Node.prototype[t]),Q(g,B.UNIT_PERCENT,I.Node.prototype[t+"Percent"]),Q(g,B.UNIT_AUTO,I.Node.prototype[t+"Auto"]),g);e(I.Node.prototype,t,(function(g){for(var I=arguments.length,e=Array(I>1?I-1:0),C=1;C<I;C++)e[C-1]=arguments[C];var Q,n,U=e.pop(),i=void 0,c=void 0;if("auto"===U)i=B.UNIT_AUTO,c=void 0;else if(U instanceof s)i=U.unit,c=U.valueOf();else if(i="string"===typeof U&&U.endsWith("%")?B.UNIT_PERCENT:B.UNIT_POINT,c=parseFloat(U),!Number.isNaN(U)&&Number.isNaN(c))throw new Error("Invalid value "+U+" for "+t);if(!F[i])throw new Error('Failed to execute "'+t+"\": Unsupported unit '"+U+"'");return void 0!==c?(Q=F[i]).call.apply(Q,[this].concat(e,[c])):(n=F[i]).call.apply(n,[this].concat(e))}))},i=0;i<C.length;i++)F();return e(I.Config.prototype,"free",(function(){I.Config.destroy(this)})),e(I.Node,"create",(function(g,e){return e?I.Node.createWithConfig(e):I.Node.createDefault()})),e(I.Node.prototype,"free",(function(){I.Node.destroy(this)})),e(I.Node.prototype,"freeRecursive",(function(){for(var g=0,I=this.getChildCount();g<I;++g)this.getChild(0).freeRecursive();this.free()})),e(I.Node.prototype,"setMeasureFunc",(function(g,I){return I?g.call(this,(function(){return U.fromJS(I.apply(void 0,arguments))})):this.unsetMeasureFunc()})),e(I.Node.prototype,"calculateLayout",(function(g){var I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:NaN,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:NaN,t=arguments.length>3&&void 0!==arguments[3]?arguments[3]:B.DIRECTION_LTR;return g.call(this,I,e,t)})),t({Config:I.Config,Node:I.Node,Layout:g("Layout",n),Size:g("Size",U),Value:g("Value",s),getInstanceCount:function(){return I.getInstanceCount.apply(I,arguments)}},B)}},function(g,I,e){"use strict";g.exports={ALIGN_COUNT:8,ALIGN_AUTO:0,ALIGN_FLEX_START:1,ALIGN_CENTER:2,ALIGN_FLEX_END:3,ALIGN_STRETCH:4,ALIGN_BASELINE:5,ALIGN_SPACE_BETWEEN:6,ALIGN_SPACE_AROUND:7,DIMENSION_COUNT:2,DIMENSION_WIDTH:0,DIMENSION_HEIGHT:1,DIRECTION_COUNT:3,DIRECTION_INHERIT:0,DIRECTION_LTR:1,DIRECTION_RTL:2,DISPLAY_COUNT:2,DISPLAY_FLEX:0,DISPLAY_NONE:1,EDGE_COUNT:9,EDGE_LEFT:0,EDGE_TOP:1,EDGE_RIGHT:2,EDGE_BOTTOM:3,EDGE_START:4,EDGE_END:5,EDGE_HORIZONTAL:6,EDGE_VERTICAL:7,EDGE_ALL:8,EXPERIMENTAL_FEATURE_COUNT:1,EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS:0,FLEX_DIRECTION_COUNT:4,FLEX_DIRECTION_COLUMN:0,FLEX_DIRECTION_COLUMN_REVERSE:1,FLEX_DIRECTION_ROW:2,FLEX_DIRECTION_ROW_REVERSE:3,JUSTIFY_COUNT:6,JUSTIFY_FLEX_START:0,JUSTIFY_CENTER:1,JUSTIFY_FLEX_END:2,JUSTIFY_SPACE_BETWEEN:3,JUSTIFY_SPACE_AROUND:4,JUSTIFY_SPACE_EVENLY:5,LOG_LEVEL_COUNT:6,LOG_LEVEL_ERROR:0,LOG_LEVEL_WARN:1,LOG_LEVEL_INFO:2,LOG_LEVEL_DEBUG:3,LOG_LEVEL_VERBOSE:4,LOG_LEVEL_FATAL:5,MEASURE_MODE_COUNT:3,MEASURE_MODE_UNDEFINED:0,MEASURE_MODE_EXACTLY:1,MEASURE_MODE_AT_MOST:2,NODE_TYPE_COUNT:2,NODE_TYPE_DEFAULT:0,NODE_TYPE_TEXT:1,OVERFLOW_COUNT:3,OVERFLOW_VISIBLE:0,OVERFLOW_HIDDEN:1,OVERFLOW_SCROLL:2,POSITION_TYPE_COUNT:2,POSITION_TYPE_RELATIVE:0,POSITION_TYPE_ABSOLUTE:1,PRINT_OPTIONS_COUNT:3,PRINT_OPTIONS_LAYOUT:1,PRINT_OPTIONS_STYLE:2,PRINT_OPTIONS_CHILDREN:4,UNIT_COUNT:4,UNIT_UNDEFINED:0,UNIT_POINT:1,UNIT_PERCENT:2,UNIT_AUTO:3,WRAP_COUNT:3,WRAP_NO_WRAP:0,WRAP_WRAP:1,WRAP_WRAP_REVERSE:2}},function(module,exports,__webpack_require__){(function(process,Buffer){var __WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__,wrapper;wrapper=function(Module,cb){var Module;"function"==typeof Module&&(cb=Module,Module={}),Module.onRuntimeInitialized=function(g,I){return function(){g&&g.apply(this,arguments);try{Module.ccall("nbind_init")}catch(e){return void I(e)}I(null,{bind:Module._nbind_value,reflect:Module.NBind.reflect,queryType:Module.NBind.queryType,toggleLightGC:Module.toggleLightGC,lib:Module})}}(Module.onRuntimeInitialized,cb),Module||(Module=("undefined"!==typeof Module?Module:null)||{});var moduleOverrides={};for(var key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1,nodeFS,nodePath;if(Module.ENVIRONMENT)if("WEB"===Module.ENVIRONMENT)ENVIRONMENT_IS_WEB=!0;else if("WORKER"===Module.ENVIRONMENT)ENVIRONMENT_IS_WORKER=!0;else if("NODE"===Module.ENVIRONMENT)ENVIRONMENT_IS_NODE=!0;else{if("SHELL"!==Module.ENVIRONMENT)throw new Error("The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.");ENVIRONMENT_IS_SHELL=!0}else ENVIRONMENT_IS_WEB="object"===typeof window,ENVIRONMENT_IS_WORKER="function"===typeof importScripts,ENVIRONMENT_IS_NODE="object"===typeof process&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER,ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(ENVIRONMENT_IS_NODE)Module.print||(Module.print=console.log),Module.printErr||(Module.printErr=console.warn),Module.read=function(g,I){nodeFS||(nodeFS={}("")),nodePath||(nodePath={}("")),g=nodePath.normalize(g);var e=nodeFS.readFileSync(g);return I?e:e.toString()},Module.readBinary=function(g){var I=Module.read(g,!0);return I.buffer||(I=new Uint8Array(I)),assert(I.buffer),I},Module.load=function(g){globalEval(read(g))},Module.thisProgram||(process.argv.length>1?Module.thisProgram=process.argv[1].replace(/\\/g,"/"):Module.thisProgram="unknown-program"),Module.arguments=process.argv.slice(2),module.exports=Module,process.on("uncaughtException",(function(g){if(!(g instanceof ExitStatus))throw g})),Module.inspect=function(){return"[Emscripten Module object]"};else if(ENVIRONMENT_IS_SHELL)Module.print||(Module.print=print),"undefined"!=typeof printErr&&(Module.printErr=printErr),"undefined"!=typeof read?Module.read=read:Module.read=function(){throw"no read() available"},Module.readBinary=function(g){if("function"===typeof readbuffer)return new Uint8Array(readbuffer(g));var I=read(g,"binary");return assert("object"===typeof I),I},"undefined"!=typeof scriptArgs?Module.arguments=scriptArgs:"undefined"!=typeof arguments&&(Module.arguments=arguments),"function"===typeof quit&&(Module.quit=function(g,I){quit(g)});else{if(!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER)throw"Unknown runtime environment. Where are we?";if(Module.read=function(g){var I=new XMLHttpRequest;return I.open("GET",g,!1),I.send(null),I.responseText},ENVIRONMENT_IS_WORKER&&(Module.readBinary=function(g){var I=new XMLHttpRequest;return I.open("GET",g,!1),I.responseType="arraybuffer",I.send(null),new Uint8Array(I.response)}),Module.readAsync=function(g,I,e){var t=new XMLHttpRequest;t.open("GET",g,!0),t.responseType="arraybuffer",t.onload=function(){200==t.status||0==t.status&&t.response?I(t.response):e()},t.onerror=e,t.send(null)},"undefined"!=typeof arguments&&(Module.arguments=arguments),"undefined"!==typeof console)Module.print||(Module.print=function(g){console.log(g)}),Module.printErr||(Module.printErr=function(g){console.warn(g)});else{var TRY_USE_DUMP=!1;Module.print||(Module.print=TRY_USE_DUMP&&"undefined"!==typeof dump?function(g){dump(g)}:function(g){})}ENVIRONMENT_IS_WORKER&&(Module.load=importScripts),"undefined"===typeof Module.setWindowTitle&&(Module.setWindowTitle=function(g){document.title=g})}function globalEval(g){eval.call(null,g)}for(var key in!Module.load&&Module.read&&(Module.load=function(g){globalEval(Module.read(g))}),Module.print||(Module.print=function(){}),Module.printErr||(Module.printErr=Module.print),Module.arguments||(Module.arguments=[]),Module.thisProgram||(Module.thisProgram="./this.program"),Module.quit||(Module.quit=function(g,I){throw I}),Module.print=Module.print,Module.printErr=Module.printErr,Module.preRun=[],Module.postRun=[],moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=void 0;var Runtime={setTempRet0:function(g){return tempRet0=g,g},getTempRet0:function(){return tempRet0},stackSave:function(){return STACKTOP},stackRestore:function(g){STACKTOP=g},getNativeTypeSize:function(g){switch(g){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:if("*"===g[g.length-1])return Runtime.QUANTUM_SIZE;if("i"===g[0]){var I=parseInt(g.substr(1));return assert(I%8===0),I/8}return 0}},getNativeFieldSize:function(g){return Math.max(Runtime.getNativeTypeSize(g),Runtime.QUANTUM_SIZE)},STACK_ALIGN:16,prepVararg:function(g,I){return"double"===I||"i64"===I?7&g&&(assert(4===(7&g)),g+=4):assert(0===(3&g)),g},getAlignSize:function(g,I,e){return e||"i64"!=g&&"double"!=g?g?Math.min(I||(g?Runtime.getNativeFieldSize(g):0),Runtime.QUANTUM_SIZE):Math.min(I,8):8},dynCall:function(g,I,e){return e&&e.length?Module["dynCall_"+g].apply(null,[I].concat(e)):Module["dynCall_"+g].call(null,I)},functionPointers:[],addFunction:function(g){for(var I=0;I<Runtime.functionPointers.length;I++)if(!Runtime.functionPointers[I])return Runtime.functionPointers[I]=g,2*(1+I);throw"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS."},removeFunction:function(g){Runtime.functionPointers[(g-2)/2]=null},warnOnce:function(g){Runtime.warnOnce.shown||(Runtime.warnOnce.shown={}),Runtime.warnOnce.shown[g]||(Runtime.warnOnce.shown[g]=1,Module.printErr(g))},funcWrappers:{},getFuncWrapper:function(g,I){if(g){assert(I),Runtime.funcWrappers[I]||(Runtime.funcWrappers[I]={});var e=Runtime.funcWrappers[I];return e[g]||(1===I.length?e[g]=function(){return Runtime.dynCall(I,g)}:2===I.length?e[g]=function(e){return Runtime.dynCall(I,g,[e])}:e[g]=function(){return Runtime.dynCall(I,g,Array.prototype.slice.call(arguments))}),e[g]}},getCompilerSetting:function(g){throw"You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work"},stackAlloc:function(g){var I=STACKTOP;return STACKTOP=15+(STACKTOP=STACKTOP+g|0)&-16,I},staticAlloc:function(g){var I=STATICTOP;return STATICTOP=15+(STATICTOP=STATICTOP+g|0)&-16,I},dynamicAlloc:function(g){var I=HEAP32[DYNAMICTOP_PTR>>2],e=-16&(I+g+15|0);return HEAP32[DYNAMICTOP_PTR>>2]=e,e>=TOTAL_MEMORY&&!enlargeMemory()?(HEAP32[DYNAMICTOP_PTR>>2]=I,0):I},alignMemory:function(g,I){return g=Math.ceil(g/(I||16))*(I||16)},makeBigInt:function(g,I,e){return e?+(g>>>0)+4294967296*+(I>>>0):+(g>>>0)+4294967296*+(0|I)},GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module.Runtime=Runtime;var ABORT=0,EXITSTATUS=0,cwrap,ccall;function assert(g,I){g||abort("Assertion failed: "+I)}function getCFunc(ident){var func=Module["_"+ident];if(!func)try{func=eval("_"+ident)}catch(e){}return assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)"),func}function setValue(g,I,e,t){switch("*"===(e=e||"i8").charAt(e.length-1)&&(e="i32"),e){case"i1":case"i8":HEAP8[g>>0]=I;break;case"i16":HEAP16[g>>1]=I;break;case"i32":HEAP32[g>>2]=I;break;case"i64":tempI64=[I>>>0,(tempDouble=I,+Math_abs(tempDouble)>=1?tempDouble>0?(0|Math_min(+Math_floor(tempDouble/4294967296),4294967295))>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[g>>2]=tempI64[0],HEAP32[g+4>>2]=tempI64[1];break;case"float":HEAPF32[g>>2]=I;break;case"double":HEAPF64[g>>3]=I;break;default:abort("invalid type for setValue: "+e)}}function getValue(g,I,e){switch("*"===(I=I||"i8").charAt(I.length-1)&&(I="i32"),I){case"i1":case"i8":return HEAP8[g>>0];case"i16":return HEAP16[g>>1];case"i32":case"i64":return HEAP32[g>>2];case"float":return HEAPF32[g>>2];case"double":return HEAPF64[g>>3];default:abort("invalid type for setValue: "+I)}return null}!function(){var JSfuncs={stackSave:function(){Runtime.stackSave()},stackRestore:function(){Runtime.stackRestore()},arrayToC:function(g){var I=Runtime.stackAlloc(g.length);return writeArrayToMemory(g,I),I},stringToC:function(g){var I=0;if(null!==g&&void 0!==g&&0!==g){var e=1+(g.length<<2);stringToUTF8(g,I=Runtime.stackAlloc(e),e)}return I}},toC={string:JSfuncs.stringToC,array:JSfuncs.arrayToC};ccall=function(g,I,e,t,C){var Q=getCFunc(g),F=[],B=0;if(t)for(var n=0;n<t.length;n++){var U=toC[e[n]];U?(0===B&&(B=Runtime.stackSave()),F[n]=U(t[n])):F[n]=t[n]}var s=Q.apply(null,F);if("string"===I&&(s=Pointer_stringify(s)),0!==B){if(C&&C.async)return void EmterpreterAsync.asyncFinalizers.push((function(){Runtime.stackRestore(B)}));Runtime.stackRestore(B)}return s};var sourceRegex=/^function\s*[a-zA-Z$_0-9]*\s*\(([^)]*)\)\s*{\s*([^*]*?)[\s;]*(?:return\s*(.*?)[;\s]*)?}$/;function parseJSFunc(g){var I=g.toString().match(sourceRegex).slice(1);return{arguments:I[0],body:I[1],returnValue:I[2]}}var JSsource=null;function ensureJSsource(){if(!JSsource)for(var g in JSsource={},JSfuncs)JSfuncs.hasOwnProperty(g)&&(JSsource[g]=parseJSFunc(JSfuncs[g]))}cwrap=function cwrap(ident,returnType,argTypes){argTypes=argTypes||[];var cfunc=getCFunc(ident),numericArgs=argTypes.every((function(g){return"number"===g})),numericRet="string"!==returnType;if(numericRet&&numericArgs)return cfunc;var argNames=argTypes.map((function(g,I){return"$"+I})),funcstr="(function("+argNames.join(",")+") {",nargs=argTypes.length;if(!numericArgs){ensureJSsource(),funcstr+="var stack = "+JSsource.stackSave.body+";";for(var i=0;i<nargs;i++){var arg=argNames[i],type=argTypes[i];if("number"!==type){var convertCode=JSsource[type+"ToC"];funcstr+="var "+convertCode.arguments+" = "+arg+";",funcstr+=convertCode.body+";",funcstr+=arg+"=("+convertCode.returnValue+");"}}}var cfuncname=parseJSFunc((function(){return cfunc})).returnValue;if(funcstr+="var ret = "+cfuncname+"("+argNames.join(",")+");",!numericRet){var strgfy=parseJSFunc((function(){return Pointer_stringify})).returnValue;funcstr+="ret = "+strgfy+"(ret);"}return numericArgs||(ensureJSsource(),funcstr+=JSsource.stackRestore.body.replace("()","(stack)")+";"),funcstr+="return ret})",eval(funcstr)}}(),Module.ccall=ccall,Module.cwrap=cwrap,Module.setValue=setValue,Module.getValue=getValue;var ALLOC_NORMAL=0,ALLOC_STACK=1,ALLOC_STATIC=2,ALLOC_DYNAMIC=3,ALLOC_NONE=4;function allocate(g,I,e,t){var C,Q;"number"===typeof g?(C=!0,Q=g):(C=!1,Q=g.length);var F,B="string"===typeof I?I:null;if(F=e==ALLOC_NONE?t:["function"===typeof _malloc?_malloc:Runtime.staticAlloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][void 0===e?ALLOC_STATIC:e](Math.max(Q,B?1:I.length)),C){var n;for(t=F,assert(0==(3&F)),n=F+(-4&Q);t<n;t+=4)HEAP32[t>>2]=0;for(n=F+Q;t<n;)HEAP8[t++>>0]=0;return F}if("i8"===B)return g.subarray||g.slice?HEAPU8.set(g,F):HEAPU8.set(new Uint8Array(g),F),F;for(var U,s,i,c=0;c<Q;){var A=g[c];"function"===typeof A&&(A=Runtime.getFunctionIndex(A)),0!==(U=B||I[c])?("i64"==U&&(U="i32"),setValue(F+c,A,U),i!==U&&(s=Runtime.getNativeTypeSize(U),i=U),c+=s):c++}return F}function getMemory(g){return staticSealed?runtimeInitialized?_malloc(g):Runtime.dynamicAlloc(g):Runtime.staticAlloc(g)}function Pointer_stringify(g,I){if(0===I||!g)return"";for(var e,t=0,C=0;t|=e=HEAPU8[g+C>>0],(0!=e||I)&&(C++,!I||C!=I););I||(I=C);var Q="";if(t<128){for(var F;I>0;)F=String.fromCharCode.apply(String,HEAPU8.subarray(g,g+Math.min(I,1024))),Q=Q?Q+F:F,g+=1024,I-=1024;return Q}return Module.UTF8ToString(g)}function AsciiToString(g){for(var I="";;){var e=HEAP8[g++>>0];if(!e)return I;I+=String.fromCharCode(e)}}function stringToAscii(g,I){return writeAsciiToMemory(g,I,!1)}Module.ALLOC_NORMAL=ALLOC_NORMAL,Module.ALLOC_STACK=ALLOC_STACK,Module.ALLOC_STATIC=ALLOC_STATIC,Module.ALLOC_DYNAMIC=ALLOC_DYNAMIC,Module.ALLOC_NONE=ALLOC_NONE,Module.allocate=allocate,Module.getMemory=getMemory,Module.Pointer_stringify=Pointer_stringify,Module.AsciiToString=AsciiToString,Module.stringToAscii=stringToAscii;var UTF8Decoder="undefined"!==typeof TextDecoder?new TextDecoder("utf8"):void 0;function UTF8ArrayToString(g,I){for(var e=I;g[e];)++e;if(e-I>16&&g.subarray&&UTF8Decoder)return UTF8Decoder.decode(g.subarray(I,e));for(var t,C,Q,F,B,n="";;){if(!(t=g[I++]))return n;if(128&t)if(C=63&g[I++],192!=(224&t))if(Q=63&g[I++],224==(240&t)?t=(15&t)<<12|C<<6|Q:(F=63&g[I++],240==(248&t)?t=(7&t)<<18|C<<12|Q<<6|F:(B=63&g[I++],t=248==(252&t)?(3&t)<<24|C<<18|Q<<12|F<<6|B:(1&t)<<30|C<<24|Q<<18|F<<12|B<<6|63&g[I++])),t<65536)n+=String.fromCharCode(t);else{var U=t-65536;n+=String.fromCharCode(55296|U>>10,56320|1023&U)}else n+=String.fromCharCode((31&t)<<6|C);else n+=String.fromCharCode(t)}}function UTF8ToString(g){return UTF8ArrayToString(HEAPU8,g)}function stringToUTF8Array(g,I,e,t){if(!(t>0))return 0;for(var C=e,Q=e+t-1,F=0;F<g.length;++F){var B=g.charCodeAt(F);if(B>=55296&&B<=57343&&(B=65536+((1023&B)<<10)|1023&g.charCodeAt(++F)),B<=127){if(e>=Q)break;I[e++]=B}else if(B<=2047){if(e+1>=Q)break;I[e++]=192|B>>6,I[e++]=128|63&B}else if(B<=65535){if(e+2>=Q)break;I[e++]=224|B>>12,I[e++]=128|B>>6&63,I[e++]=128|63&B}else if(B<=2097151){if(e+3>=Q)break;I[e++]=240|B>>18,I[e++]=128|B>>12&63,I[e++]=128|B>>6&63,I[e++]=128|63&B}else if(B<=67108863){if(e+4>=Q)break;I[e++]=248|B>>24,I[e++]=128|B>>18&63,I[e++]=128|B>>12&63,I[e++]=128|B>>6&63,I[e++]=128|63&B}else{if(e+5>=Q)break;I[e++]=252|B>>30,I[e++]=128|B>>24&63,I[e++]=128|B>>18&63,I[e++]=128|B>>12&63,I[e++]=128|B>>6&63,I[e++]=128|63&B}}return I[e]=0,e-C}function stringToUTF8(g,I,e){return stringToUTF8Array(g,HEAPU8,I,e)}function lengthBytesUTF8(g){for(var I=0,e=0;e<g.length;++e){var t=g.charCodeAt(e);t>=55296&&t<=57343&&(t=65536+((1023&t)<<10)|1023&g.charCodeAt(++e)),t<=127?++I:I+=t<=2047?2:t<=65535?3:t<=2097151?4:t<=67108863?5:6}return I}Module.UTF8ArrayToString=UTF8ArrayToString,Module.UTF8ToString=UTF8ToString,Module.stringToUTF8Array=stringToUTF8Array,Module.stringToUTF8=stringToUTF8,Module.lengthBytesUTF8=lengthBytesUTF8;var UTF16Decoder="undefined"!==typeof TextDecoder?new TextDecoder("utf-16le"):void 0,HEAP,buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64,STATIC_BASE,STATICTOP,staticSealed,STACK_BASE,STACKTOP,STACK_MAX,DYNAMIC_BASE,DYNAMICTOP_PTR;function demangle(g){var I=Module.___cxa_demangle||Module.__cxa_demangle;if(I){try{var e=g.substr(1),t=lengthBytesUTF8(e)+1,C=_malloc(t);stringToUTF8(e,C,t);var Q=_malloc(4),F=I(C,0,0,Q);if(0===getValue(Q,"i32")&&F)return Pointer_stringify(F)}catch(B){}finally{C&&_free(C),Q&&_free(Q),F&&_free(F)}return g}return Runtime.warnOnce("warning: build with  -s DEMANGLE_SUPPORT=1  to link in libcxxabi demangling"),g}function demangleAll(g){return g.replace(/__Z[\w\d_]+/g,(function(g){var I=demangle(g);return g===I?g:g+" ["+I+"]"}))}function jsStackTrace(){var g=new Error;if(!g.stack){try{throw new Error(0)}catch(I){g=I}if(!g.stack)return"(no stack trace available)"}return g.stack.toString()}function stackTrace(){var g=jsStackTrace();return Module.extraStackTrace&&(g+="\n"+Module.extraStackTrace()),demangleAll(g)}function updateGlobalBufferViews(){Module.HEAP8=HEAP8=new Int8Array(buffer),Module.HEAP16=HEAP16=new Int16Array(buffer),Module.HEAP32=HEAP32=new Int32Array(buffer),Module.HEAPU8=HEAPU8=new Uint8Array(buffer),Module.HEAPU16=HEAPU16=new Uint16Array(buffer),Module.HEAPU32=HEAPU32=new Uint32Array(buffer),Module.HEAPF32=HEAPF32=new Float32Array(buffer),Module.HEAPF64=HEAPF64=new Float64Array(buffer)}function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with  -s TOTAL_MEMORY=X  with X higher than the current value "+TOTAL_MEMORY+", (2) compile with  -s ALLOW_MEMORY_GROWTH=1  which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with  -s ABORTING_MALLOC=0 ")}function enlargeMemory(){abortOnCannotGrowMemory()}Module.stackTrace=stackTrace,STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0,staticSealed=!1;var TOTAL_STACK=Module.TOTAL_STACK||5242880,TOTAL_MEMORY=Module.TOTAL_MEMORY||268435456;function getTotalMemory(){return TOTAL_MEMORY}if(TOTAL_MEMORY<TOTAL_STACK&&Module.printErr("TOTAL_MEMORY should be larger than TOTAL_STACK, was "+TOTAL_MEMORY+"! (TOTAL_STACK="+TOTAL_STACK+")"),buffer=Module.buffer?Module.buffer:new ArrayBuffer(TOTAL_MEMORY),updateGlobalBufferViews(),HEAP32[0]=1668509029,HEAP16[1]=25459,115!==HEAPU8[2]||99!==HEAPU8[3])throw"Runtime error: expected the system to be little-endian!";function callRuntimeCallbacks(g){for(;g.length>0;){var I=g.shift();if("function"!=typeof I){var e=I.func;"number"===typeof e?void 0===I.arg?Module.dynCall_v(e):Module.dynCall_vi(e,I.arg):e(void 0===I.arg?null:I.arg)}else I()}}Module.HEAP=HEAP,Module.buffer=buffer,Module.HEAP8=HEAP8,Module.HEAP16=HEAP16,Module.HEAP32=HEAP32,Module.HEAPU8=HEAPU8,Module.HEAPU16=HEAPU16,Module.HEAPU32=HEAPU32,Module.HEAPF32=HEAPF32,Module.HEAPF64=HEAPF64;var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATEXIT__=[],__ATPOSTRUN__=[],runtimeInitialized=!1,runtimeExited=!1;function preRun(){if(Module.preRun)for("function"==typeof Module.preRun&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){runtimeInitialized||(runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__))}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__),runtimeExited=!0}function postRun(){if(Module.postRun)for("function"==typeof Module.postRun&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(g){__ATPRERUN__.unshift(g)}function addOnInit(g){__ATINIT__.unshift(g)}function addOnPreMain(g){__ATMAIN__.unshift(g)}function addOnExit(g){__ATEXIT__.unshift(g)}function addOnPostRun(g){__ATPOSTRUN__.unshift(g)}function intArrayFromString(g,I,e){var t=e>0?e:lengthBytesUTF8(g)+1,C=new Array(t),Q=stringToUTF8Array(g,C,0,C.length);return I&&(C.length=Q),C}function intArrayToString(g){for(var I=[],e=0;e<g.length;e++){var t=g[e];t>255&&(t&=255),I.push(String.fromCharCode(t))}return I.join("")}function writeStringToMemory(g,I,e){var t,C;Runtime.warnOnce("writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!"),e&&(C=I+lengthBytesUTF8(g),t=HEAP8[C]),stringToUTF8(g,I,1/0),e&&(HEAP8[C]=t)}function writeArrayToMemory(g,I){HEAP8.set(g,I)}function writeAsciiToMemory(g,I,e){for(var t=0;t<g.length;++t)HEAP8[I++>>0]=g.charCodeAt(t);e||(HEAP8[I>>0]=0)}if(Module.addOnPreRun=addOnPreRun,Module.addOnInit=addOnInit,Module.addOnPreMain=addOnPreMain,Module.addOnExit=addOnExit,Module.addOnPostRun=addOnPostRun,Module.intArrayFromString=intArrayFromString,Module.intArrayToString=intArrayToString,Module.writeStringToMemory=writeStringToMemory,Module.writeArrayToMemory=writeArrayToMemory,Module.writeAsciiToMemory=writeAsciiToMemory,Math.imul&&-5===Math.imul(4294967295,5)||(Math.imul=function(g,I){var e=65535&g,t=65535&I;return e*t+((g>>>16)*t+e*(I>>>16)<<16)|0}),Math.imul=Math.imul,!Math.fround){var froundBuffer=new Float32Array(1);Math.fround=function(g){return froundBuffer[0]=g,froundBuffer[0]}}Math.fround=Math.fround,Math.clz32||(Math.clz32=function(g){g>>>=0;for(var I=0;I<32;I++)if(g&1<<31-I)return I;return 32}),Math.clz32=Math.clz32,Math.trunc||(Math.trunc=function(g){return g<0?Math.ceil(g):Math.floor(g)}),Math.trunc=Math.trunc;var Math_abs=Math.abs,Math_cos=Math.cos,Math_sin=Math.sin,Math_tan=Math.tan,Math_acos=Math.acos,Math_asin=Math.asin,Math_atan=Math.atan,Math_atan2=Math.atan2,Math_exp=Math.exp,Math_log=Math.log,Math_sqrt=Math.sqrt,Math_ceil=Math.ceil,Math_floor=Math.floor,Math_pow=Math.pow,Math_imul=Math.imul,Math_fround=Math.fround,Math_round=Math.round,Math_min=Math.min,Math_clz32=Math.clz32,Math_trunc=Math.trunc,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function getUniqueRunDependency(g){return g}function addRunDependency(g){runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}function removeRunDependency(g){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),0==runDependencies&&(null!==runDependencyWatcher&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var I=dependenciesFulfilled;dependenciesFulfilled=null,I()}}Module.addRunDependency=addRunDependency,Module.removeRunDependency=removeRunDependency,Module.preloadedImages={},Module.preloadedAudios={};var ASM_CONSTS=[function(g,I,e,t,C,Q,F,B){return _nbind.callbackSignatureList[g].apply(this,arguments)}];function _emscripten_asm_const_iiiiiiii(g,I,e,t,C,Q,F,B){return ASM_CONSTS[g](I,e,t,C,Q,F,B)}function _emscripten_asm_const_iiiii(g,I,e,t,C){return ASM_CONSTS[g](I,e,t,C)}function _emscripten_asm_const_iiidddddd(g,I,e,t,C,Q,F,B,n){return ASM_CONSTS[g](I,e,t,C,Q,F,B,n)}function _emscripten_asm_const_iiididi(g,I,e,t,C,Q,F){return ASM_CONSTS[g](I,e,t,C,Q,F)}function _emscripten_asm_const_iiii(g,I,e,t){return ASM_CONSTS[g](I,e,t)}function _emscripten_asm_const_iiiid(g,I,e,t,C){return ASM_CONSTS[g](I,e,t,C)}function _emscripten_asm_const_iiiiii(g,I,e,t,C,Q){return ASM_CONSTS[g](I,e,t,C,Q)}STATIC_BASE=Runtime.GLOBAL_BASE,STATICTOP=STATIC_BASE+12800,__ATINIT__.push({func:function(){__GLOBAL__sub_I_Yoga_cpp()}},{func:function(){__GLOBAL__sub_I_nbind_cc()}},{func:function(){__GLOBAL__sub_I_common_cc()}},{func:function(){__GLOBAL__sub_I_Binding_cc()}}),allocate([0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,192,127,0,0,192,127,3,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,3,0,0,0,0,0,192,127,3,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,0,0,128,191,0,0,128,191,0,0,192,127,0,0,0,0,0,0,0,0,0,0,128,63,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,190,12,0,0,200,12,0,0,208,12,0,0,216,12,0,0,230,12,0,0,242,12,0,0,1,0,0,0,3,0,0,0,0,0,0,0,2,0,0,0,0,0,192,127,3,0,0,0,180,45,0,0,181,45,0,0,182,45,0,0,181,45,0,0,182,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,1,0,0,0,4,0,0,0,183,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,184,45,0,0,185,45,0,0,181,45,0,0,181,45,0,0,182,45,0,0,186,45,0,0,185,45,0,0,148,4,0,0,3,0,0,0,187,45,0,0,164,4,0,0,188,45,0,0,2,0,0,0,189,45,0,0,164,4,0,0,188,45,0,0,185,45,0,0,164,4,0,0,185,45,0,0,164,4,0,0,188,45,0,0,181,45,0,0,182,45,0,0,181,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,183,45,0,0,182,45,0,0,181,45,0,0,190,45,0,0,190,45,0,0,182,45,0,0,182,45,0,0,185,45,0,0,181,45,0,0,185,45,0,0,182,45,0,0,181,45,0,0,185,45,0,0,182,45,0,0,185,45,0,0,48,5,0,0,3,0,0,0,56,5,0,0,1,0,0,0,189,45,0,0,185,45,0,0,164,4,0,0,76,5,0,0,2,0,0,0,191,45,0,0,186,45,0,0,182,45,0,0,185,45,0,0,192,45,0,0,185,45,0,0,182,45,0,0,186,45,0,0,185,45,0,0,76,5,0,0,76,5,0,0,136,5,0,0,182,45,0,0,181,45,0,0,2,0,0,0,190,45,0,0,136,5,0,0,56,19,0,0,156,5,0,0,2,0,0,0,184,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,9,0,0,0,1,0,0,0,10,0,0,0,204,5,0,0,181,45,0,0,181,45,0,0,2,0,0,0,180,45,0,0,204,5,0,0,2,0,0,0,195,45,0,0,236,5,0,0,97,19,0,0,198,45,0,0,211,45,0,0,212,45,0,0,213,45,0,0,214,45,0,0,215,45,0,0,188,45,0,0,182,45,0,0,216,45,0,0,217,45,0,0,218,45,0,0,219,45,0,0,192,45,0,0,181,45,0,0,0,0,0,0,185,45,0,0,110,19,0,0,186,45,0,0,115,19,0,0,221,45,0,0,120,19,0,0,148,4,0,0,132,19,0,0,96,6,0,0,145,19,0,0,222,45,0,0,164,19,0,0,223,45,0,0,173,19,0,0,0,0,0,0,3,0,0,0,104,6,0,0,1,0,0,0,187,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,11,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,185,45,0,0,224,45,0,0,164,6,0,0,188,45,0,0,172,6,0,0,180,6,0,0,2,0,0,0,188,6,0,0,7,0,0,0,224,45,0,0,7,0,0,0,164,6,0,0,1,0,0,0,213,45,0,0,185,45,0,0,224,45,0,0,172,6,0,0,185,45,0,0,224,45,0,0,164,6,0,0,185,45,0,0,224,45,0,0,211,45,0,0,211,45,0,0,222,45,0,0,211,45,0,0,224,45,0,0,222,45,0,0,211,45,0,0,224,45,0,0,172,6,0,0,222,45,0,0,211,45,0,0,224,45,0,0,188,45,0,0,222,45,0,0,211,45,0,0,40,7,0,0,188,45,0,0,2,0,0,0,224,45,0,0,185,45,0,0,188,45,0,0,188,45,0,0,188,45,0,0,188,45,0,0,222,45,0,0,224,45,0,0,148,4,0,0,185,45,0,0,148,4,0,0,148,4,0,0,148,4,0,0,148,4,0,0,148,4,0,0,185,45,0,0,164,6,0,0,148,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,14,0,0,0,15,0,0,0,1,0,0,0,16,0,0,0,148,7,0,0,2,0,0,0,225,45,0,0,183,45,0,0,188,45,0,0,168,7,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,234,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,9,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,2,0,0,0,242,45,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,111,117,108,100,32,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,110,111,100,101,0,67,97,110,110,111,116,32,114,101,115,101,116,32,97,32,110,111,100,101,32,119,104,105,99,104,32,115,116,105,108,108,32,104,97,115,32,99,104,105,108,100,114,101,110,32,97,116,116,97,99,104,101,100,0,67,97,110,110,111,116,32,114,101,115,101,116,32,97,32,110,111,100,101,32,115,116,105,108,108,32,97,116,116,97,99,104,101,100,32,116,111,32,97,32,112,97,114,101,110,116,0,67,111,117,108,100,32,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,99,111,110,102,105,103,0,67,97,110,110,111,116,32,115,101,116,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,58,32,78,111,100,101,115,32,119,105,116,104,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,32,99,97,110,110,111,116,32,104,97,118,101,32,99,104,105,108,100,114,101,110,46,0,67,104,105,108,100,32,97,108,114,101,97,100,121,32,104,97,115,32,97,32,112,97,114,101,110,116,44,32,105,116,32,109,117,115,116,32,98,101,32,114,101,109,111,118,101,100,32,102,105,114,115,116,46,0,67,97,110,110,111,116,32,97,100,100,32,99,104,105,108,100,58,32,78,111,100,101,115,32,119,105,116,104,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,32,99,97,110,110,111,116,32,104,97,118,101,32,99,104,105,108,100,114,101,110,46,0,79,110,108,121,32,108,101,97,102,32,110,111,100,101,115,32,119,105,116,104,32,99,117,115,116,111,109,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,115,104,111,117,108,100,32,109,97,110,117,97,108,108,121,32,109,97,114,107,32,116,104,101,109,115,101,108,118,101,115,32,97,115,32,100,105,114,116,121,0,67,97,110,110,111,116,32,103,101,116,32,108,97,121,111,117,116,32,112,114,111,112,101,114,116,105,101,115,32,111,102,32,109,117,108,116,105,45,101,100,103,101,32,115,104,111,114,116,104,97,110,100,115,0,37,115,37,100,46,123,91,115,107,105,112,112,101,100,93,32,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,97,119,58,32,37,102,32,97,104,58,32,37,102,32,61,62,32,100,58,32,40,37,102,44,32,37,102,41,32,37,115,10,0,37,115,37,100,46,123,37,115,0,42,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,97,119,58,32,37,102,32,97,104,58,32,37,102,32,37,115,10,0,37,115,37,100,46,125,37,115,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,100,58,32,40,37,102,44,32,37,102,41,32,37,115,10,0,79,117,116,32,111,102,32,99,97,99,104,101,32,101,110,116,114,105,101,115,33,10,0,83,99,97,108,101,32,102,97,99,116,111,114,32,115,104,111,117,108,100,32,110,111,116,32,98,101,32,108,101,115,115,32,116,104,97,110,32,122,101,114,111,0,105,110,105,116,105,97,108,0,37,115,10,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0,85,78,68,69,70,73,78,69,68,0,69,88,65,67,84,76,89,0,65,84,95,77,79,83,84,0,76,65,89,95,85,78,68,69,70,73,78,69,68,0,76,65,89,95,69,88,65,67,84,76,89,0,76,65,89,95,65,84,95,77,79,83,84,0,97,118,97,105,108,97,98,108,101,87,105,100,116,104,32,105,115,32,105,110,100,101,102,105,110,105,116,101,32,115,111,32,119,105,100,116,104,77,101,97,115,117,114,101,77,111,100,101,32,109,117,115,116,32,98,101,32,89,71,77,101,97,115,117,114,101,77,111,100,101,85,110,100,101,102,105,110,101,100,0,97,118,97,105,108,97,98,108,101,72,101,105,103,104,116,32,105,115,32,105,110,100,101,102,105,110,105,116,101,32,115,111,32,104,101,105,103,104,116,77,101,97,115,117,114,101,77,111,100,101,32,109,117,115,116,32,98,101,32,89,71,77,101,97,115,117,114,101,77,111,100,101,85,110,100,101,102,105,110,101,100,0,102,108,101,120,0,115,116,114,101,116,99,104,0,109,117,108,116,105,108,105,110,101,45,115,116,114,101,116,99,104,0,69,120,112,101,99,116,101,100,32,110,111,100,101,32,116,111,32,104,97,118,101,32,99,117,115,116,111,109,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,0,109,101,97,115,117,114,101,0,69,120,112,101,99,116,32,99,117,115,116,111,109,32,98,97,115,101,108,105,110,101,32,102,117,110,99,116,105,111,110,32,116,111,32,110,111,116,32,114,101,116,117,114,110,32,78,97,78,0,97,98,115,45,109,101,97,115,117,114,101,0,97,98,115,45,108,97,121,111,117,116,0,78,111,100,101,0,99,114,101,97,116,101,68,101,102,97,117,108,116,0,99,114,101,97,116,101,87,105,116,104,67,111,110,102,105,103,0,100,101,115,116,114,111,121,0,114,101,115,101,116,0,99,111,112,121,83,116,121,108,101,0,115,101,116,80,111,115,105,116,105,111,110,84,121,112,101,0,115,101,116,80,111,115,105,116,105,111,110,0,115,101,116,80,111,115,105,116,105,111,110,80,101,114,99,101,110,116,0,115,101,116,65,108,105,103,110,67,111,110,116,101,110,116,0,115,101,116,65,108,105,103,110,73,116,101,109,115,0,115,101,116,65,108,105,103,110,83,101,108,102,0,115,101,116,70,108,101,120,68,105,114,101,99,116,105,111,110,0,115,101,116,70,108,101,120,87,114,97,112,0,115,101,116,74,117,115,116,105,102,121,67,111,110,116,101,110,116,0,115,101,116,77,97,114,103,105,110,0,115,101,116,77,97,114,103,105,110,80,101,114,99,101,110,116,0,115,101,116,77,97,114,103,105,110,65,117,116,111,0,115,101,116,79,118,101,114,102,108,111,119,0,115,101,116,68,105,115,112,108,97,121,0,115,101,116,70,108,101,120,0,115,101,116,70,108,101,120,66,97,115,105,115,0,115,101,116,70,108,101,120,66,97,115,105,115,80,101,114,99,101,110,116,0,115,101,116,70,108,101,120,71,114,111,119,0,115,101,116,70,108,101,120,83,104,114,105,110,107,0,115,101,116,87,105,100,116,104,0,115,101,116,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,87,105,100,116,104,65,117,116,111,0,115,101,116,72,101,105,103,104,116,0,115,101,116,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,72,101,105,103,104,116,65,117,116,111,0,115,101,116,77,105,110,87,105,100,116,104,0,115,101,116,77,105,110,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,77,105,110,72,101,105,103,104,116,0,115,101,116,77,105,110,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,77,97,120,87,105,100,116,104,0,115,101,116,77,97,120,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,77,97,120,72,101,105,103,104,116,0,115,101,116,77,97,120,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,65,115,112,101,99,116,82,97,116,105,111,0,115,101,116,66,111,114,100,101,114,0,115,101,116,80,97,100,100,105,110,103,0,115,101,116,80,97,100,100,105,110,103,80,101,114,99,101,110,116,0,103,101,116,80,111,115,105,116,105,111,110,84,121,112,101,0,103,101,116,80,111,115,105,116,105,111,110,0,103,101,116,65,108,105,103,110,67,111,110,116,101,110,116,0,103,101,116,65,108,105,103,110,73,116,101,109,115,0,103,101,116,65,108,105,103,110,83,101,108,102,0,103,101,116,70,108,101,120,68,105,114,101,99,116,105,111,110,0,103,101,116,70,108,101,120,87,114,97,112,0,103,101,116,74,117,115,116,105,102,121,67,111,110,116,101,110,116,0,103,101,116,77,97,114,103,105,110,0,103,101,116,70,108,101,120,66,97,115,105,115,0,103,101,116,70,108,101,120,71,114,111,119,0,103,101,116,70,108,101,120,83,104,114,105,110,107,0,103,101,116,87,105,100,116,104,0,103,101,116,72,101,105,103,104,116,0,103,101,116,77,105,110,87,105,100,116,104,0,103,101,116,77,105,110,72,101,105,103,104,116,0,103,101,116,77,97,120,87,105,100,116,104,0,103,101,116,77,97,120,72,101,105,103,104,116,0,103,101,116,65,115,112,101,99,116,82,97,116,105,111,0,103,101,116,66,111,114,100,101,114,0,103,101,116,79,118,101,114,102,108,111,119,0,103,101,116,68,105,115,112,108,97,121,0,103,101,116,80,97,100,100,105,110,103,0,105,110,115,101,114,116,67,104,105,108,100,0,114,101,109,111,118,101,67,104,105,108,100,0,103,101,116,67,104,105,108,100,67,111,117,110,116,0,103,101,116,80,97,114,101,110,116,0,103,101,116,67,104,105,108,100,0,115,101,116,77,101,97,115,117,114,101,70,117,110,99,0,117,110,115,101,116,77,101,97,115,117,114,101,70,117,110,99,0,109,97,114,107,68,105,114,116,121,0,105,115,68,105,114,116,121,0,99,97,108,99,117,108,97,116,101,76,97,121,111,117,116,0,103,101,116,67,111,109,112,117,116,101,100,76,101,102,116,0,103,101,116,67,111,109,112,117,116,101,100,82,105,103,104,116,0,103,101,116,67,111,109,112,117,116,101,100,84,111,112,0,103,101,116,67,111,109,112,117,116,101,100,66,111,116,116,111,109,0,103,101,116,67,111,109,112,117,116,101,100,87,105,100,116,104,0,103,101,116,67,111,109,112,117,116,101,100,72,101,105,103,104,116,0,103,101,116,67,111,109,112,117,116,101,100,76,97,121,111,117,116,0,103,101,116,67,111,109,112,117,116,101,100,77,97,114,103,105,110,0,103,101,116,67,111,109,112,117,116,101,100,66,111,114,100,101,114,0,103,101,116,67,111,109,112,117,116,101,100,80,97,100,100,105,110,103,0,67,111,110,102,105,103,0,99,114,101,97,116,101,0,115,101,116,69,120,112,101,114,105,109,101,110,116,97,108,70,101,97,116,117,114,101,69,110,97,98,108,101,100,0,115,101,116,80,111,105,110,116,83,99,97,108,101,70,97,99,116,111,114,0,105,115,69,120,112,101,114,105,109,101,110,116,97,108,70,101,97,116,117,114,101,69,110,97,98,108,101,100,0,86,97,108,117,101,0,76,97,121,111,117,116,0,83,105,122,101,0,103,101,116,73,110,115,116,97,110,99,101,67,111,117,110,116,0,73,110,116,54,52,0,1,1,1,2,2,4,4,4,4,8,8,4,8,118,111,105,100,0,98,111,111,108,0,115,116,100,58,58,115,116,114,105,110,103,0,99,98,70,117,110,99,116,105,111,110,32,38,0,99,111,110,115,116,32,99,98,70,117,110,99,116,105,111,110,32,38,0,69,120,116,101,114,110,97,108,0,66,117,102,102,101,114,0,78,66,105,110,100,73,68,0,78,66,105,110,100,0,98,105,110,100,95,118,97,108,117,101,0,114,101,102,108,101,99,116,0,113,117,101,114,121,84,121,112,101,0,108,97,108,108,111,99,0,108,114,101,115,101,116,0,123,114,101,116,117,114,110,40,95,110,98,105,110,100,46,99,97,108,108,98,97,99,107,83,105,103,110,97,116,117,114,101,76,105,115,116,91,36,48,93,46,97,112,112,108,121,40,116,104,105,115,44,97,114,103,117,109,101,110,116,115,41,41,59,125,0,95,110,98,105,110,100,95,110,101,119,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,46,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE);var tempDoublePtr=STATICTOP;function _atexit(g,I){__ATEXIT__.unshift({func:g,arg:I})}function ___cxa_atexit(){return _atexit.apply(null,arguments)}function _abort(){Module.abort()}function __ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj(){Module.printErr("missing function: _ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj"),abort(-1)}function __decorate(g,I,e,t){var C,Q=arguments.length,F=Q<3?I:null===t?t=Object.getOwnPropertyDescriptor(I,e):t;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)F=Reflect.decorate(g,I,e,t);else for(var B=g.length-1;B>=0;B--)(C=g[B])&&(F=(Q<3?C(F):Q>3?C(I,e,F):C(I,e))||F);return Q>3&&F&&Object.defineProperty(I,e,F),F}function _defineHidden(g){return function(I,e){Object.defineProperty(I,e,{configurable:!1,enumerable:!1,value:g,writable:!0})}}STATICTOP+=16;var _nbind={};function __nbind_free_external(g){_nbind.externalList[g].dereference(g)}function __nbind_reference_external(g){_nbind.externalList[g].reference()}function _llvm_stackrestore(g){var I=_llvm_stacksave,e=I.LLVM_SAVEDSTACKS[g];I.LLVM_SAVEDSTACKS.splice(g,1),Runtime.stackRestore(e)}function __nbind_register_pool(g,I,e,t){_nbind.Pool.pageSize=g,_nbind.Pool.usedPtr=I/4,_nbind.Pool.rootPtr=e,_nbind.Pool.pagePtr=t/4,HEAP32[I/4]=16909060,1==HEAP8[I]&&(_nbind.bigEndian=!0),HEAP32[I/4]=0,_nbind.makeTypeKindTbl=((C={})[1024]=_nbind.PrimitiveType,C[64]=_nbind.Int64Type,C[2048]=_nbind.BindClass,C[3072]=_nbind.BindClassPtr,C[4096]=_nbind.SharedClassPtr,C[5120]=_nbind.ArrayType,C[6144]=_nbind.ArrayType,C[7168]=_nbind.CStringType,C[9216]=_nbind.CallbackType,C[10240]=_nbind.BindType,C),_nbind.makeTypeNameTbl={Buffer:_nbind.BufferType,External:_nbind.ExternalType,Int64:_nbind.Int64Type,_nbind_new:_nbind.CreateValueType,bool:_nbind.BooleanType,"cbFunction &":_nbind.CallbackType,"const cbFunction &":_nbind.CallbackType,"const std::string &":_nbind.StringType,"std::string":_nbind.StringType},Module.toggleLightGC=_nbind.toggleLightGC,_nbind.callUpcast=Module.dynCall_ii;var C,Q=_nbind.makeType(_nbind.constructType,{flags:2048,id:0,name:""});Q.proto=Module,_nbind.BindClass.list.push(Q)}function _emscripten_set_main_loop_timing(g,I){if(Browser.mainLoop.timingMode=g,Browser.mainLoop.timingValue=I,!Browser.mainLoop.func)return 1;if(0==g)Browser.mainLoop.scheduler=function(){var g=0|Math.max(0,Browser.mainLoop.tickStartTime+I-_emscripten_get_now());setTimeout(Browser.mainLoop.runner,g)},Browser.mainLoop.method="timeout";else if(1==g)Browser.mainLoop.scheduler=function(){Browser.requestAnimationFrame(Browser.mainLoop.runner)},Browser.mainLoop.method="rAF";else if(2==g){if(!window.setImmediate){var e=[];window.addEventListener("message",(function(g){g.source===window&&"setimmediate"===g.data&&(g.stopPropagation(),e.shift()())}),!0),window.setImmediate=function(g){e.push(g),ENVIRONMENT_IS_WORKER?(void 0===Module.setImmediates&&(Module.setImmediates=[]),Module.setImmediates.push(g),window.postMessage({target:"setimmediate"})):window.postMessage("setimmediate","*")}}Browser.mainLoop.scheduler=function(){window.setImmediate(Browser.mainLoop.runner)},Browser.mainLoop.method="immediate"}return 0}function _emscripten_get_now(){abort()}function _emscripten_set_main_loop(g,I,e,t,C){var Q;Module.noExitRuntime=!0,assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters."),Browser.mainLoop.func=g,Browser.mainLoop.arg=t,Q="undefined"!==typeof t?function(){Module.dynCall_vi(g,t)}:function(){Module.dynCall_v(g)};var F=Browser.mainLoop.currentlyRunningMainloop;if(Browser.mainLoop.runner=function(){if(!ABORT)if(Browser.mainLoop.queue.length>0){var g=Date.now(),I=Browser.mainLoop.queue.shift();if(I.func(I.arg),Browser.mainLoop.remainingBlockers){var e=Browser.mainLoop.remainingBlockers,t=e%1==0?e-1:Math.floor(e);I.counted?Browser.mainLoop.remainingBlockers=t:(t+=.5,Browser.mainLoop.remainingBlockers=(8*e+t)/9)}if(console.log('main loop blocker "'+I.name+'" took '+(Date.now()-g)+" ms"),Browser.mainLoop.updateStatus(),F<Browser.mainLoop.currentlyRunningMainloop)return;setTimeout(Browser.mainLoop.runner,0)}else F<Browser.mainLoop.currentlyRunningMainloop||(Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0,1==Browser.mainLoop.timingMode&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0?Browser.mainLoop.scheduler():(0==Browser.mainLoop.timingMode&&(Browser.mainLoop.tickStartTime=_emscripten_get_now()),"timeout"===Browser.mainLoop.method&&Module.ctx&&(Module.printErr("Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!"),Browser.mainLoop.method=""),Browser.mainLoop.runIter(Q),F<Browser.mainLoop.currentlyRunningMainloop||("object"===typeof SDL&&SDL.audio&&SDL.audio.queueNewAudioData&&SDL.audio.queueNewAudioData(),Browser.mainLoop.scheduler())))},C||(I&&I>0?_emscripten_set_main_loop_timing(0,1e3/I):_emscripten_set_main_loop_timing(1,1),Browser.mainLoop.scheduler()),e)throw"SimulateInfiniteLoop"}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null,Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var g=Browser.mainLoop.timingMode,I=Browser.mainLoop.timingValue,e=Browser.mainLoop.func;Browser.mainLoop.func=null,_emscripten_set_main_loop(e,0,!1,Browser.mainLoop.arg,!0),_emscripten_set_main_loop_timing(g,I),Browser.mainLoop.scheduler()},updateStatus:function(){if(Module.setStatus){var g=Module.statusMessage||"Please wait...",I=Browser.mainLoop.remainingBlockers,e=Browser.mainLoop.expectedBlockers;I?I<e?Module.setStatus(g+" ("+(e-I)+"/"+e+")"):Module.setStatus(g):Module.setStatus("")}},runIter:function(g){if(!ABORT){if(Module.preMainLoop&&!1===Module.preMainLoop())return;try{g()}catch(I){if(I instanceof ExitStatus)return;throw I&&"object"===typeof I&&I.stack&&Module.printErr("exception thrown: "+[I,I.stack]),I}Module.postMainLoop&&Module.postMainLoop()}}},isFullscreen:!1,pointerLock:!1,moduleContextCreatedCallbacks:[],workers:[],init:function(){if(Module.preloadPlugins||(Module.preloadPlugins=[]),!Browser.initted){Browser.initted=!0;try{new Blob,Browser.hasBlobConstructor=!0}catch(C){Browser.hasBlobConstructor=!1,console.log("warning: no blob constructor, cannot create blobs with mimetypes")}Browser.BlobBuilder="undefined"!=typeof MozBlobBuilder?MozBlobBuilder:"undefined"!=typeof WebKitBlobBuilder?WebKitBlobBuilder:Browser.hasBlobConstructor?null:console.log("warning: no BlobBuilder"),Browser.URLObject="undefined"!=typeof window?window.URL?window.URL:window.webkitURL:void 0,Module.noImageDecoding||"undefined"!==typeof Browser.URLObject||(console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available."),Module.noImageDecoding=!0);var g={canHandle:function(g){return!Module.noImageDecoding&&/\.(jpg|jpeg|png|bmp)$/i.test(g)},handle:function(g,I,e,t){var Q=null;if(Browser.hasBlobConstructor)try{(Q=new Blob([g],{type:Browser.getMimetype(I)})).size!==g.length&&(Q=new Blob([new Uint8Array(g).buffer],{type:Browser.getMimetype(I)}))}catch(C){Runtime.warnOnce("Blob constructor present but fails: "+C+"; falling back to blob builder")}if(!Q){var F=new Browser.BlobBuilder;F.append(new Uint8Array(g).buffer),Q=F.getBlob()}var B=Browser.URLObject.createObjectURL(Q),n=new Image;n.onload=function(){assert(n.complete,"Image "+I+" could not be decoded");var t=document.createElement("canvas");t.width=n.width,t.height=n.height,t.getContext("2d").drawImage(n,0,0),Module.preloadedImages[I]=t,Browser.URLObject.revokeObjectURL(B),e&&e(g)},n.onerror=function(g){console.log("Image "+B+" could not be decoded"),t&&t()},n.src=B}};Module.preloadPlugins.push(g);var I={canHandle:function(g){return!Module.noAudioDecoding&&g.substr(-4)in{".ogg":1,".wav":1,".mp3":1}},handle:function(g,I,e,t){var Q=!1;function F(t){Q||(Q=!0,Module.preloadedAudios[I]=t,e&&e(g))}function B(){Q||(Q=!0,Module.preloadedAudios[I]=new Audio,t&&t())}if(!Browser.hasBlobConstructor)return B();try{var n=new Blob([g],{type:Browser.getMimetype(I)})}catch(C){return B()}var U=Browser.URLObject.createObjectURL(n),s=new Audio;s.addEventListener("canplaythrough",(function(){F(s)}),!1),s.onerror=function(e){Q||(console.log("warning: browser could not fully decode audio "+I+", trying slower base64 approach"),s.src="data:audio/x-"+I.substr(-3)+";base64,"+function(g){for(var I="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",e="",t=0,C=0,Q=0;Q<g.length;Q++)for(t=t<<8|g[Q],C+=8;C>=6;){var F=t>>C-6&63;C-=6,e+=I[F]}return 2==C?(e+=I[(3&t)<<4],e+="=="):4==C&&(e+=I[(15&t)<<2],e+="="),e}(g),F(s))},s.src=U,Browser.safeSetTimeout((function(){F(s)}),1e4)}};Module.preloadPlugins.push(I);var e=Module.canvas;e&&(e.requestPointerLock=e.requestPointerLock||e.mozRequestPointerLock||e.webkitRequestPointerLock||e.msRequestPointerLock||function(){},e.exitPointerLock=document.exitPointerLock||document.mozExitPointerLock||document.webkitExitPointerLock||document.msExitPointerLock||function(){},e.exitPointerLock=e.exitPointerLock.bind(document),document.addEventListener("pointerlockchange",t,!1),document.addEventListener("mozpointerlockchange",t,!1),document.addEventListener("webkitpointerlockchange",t,!1),document.addEventListener("mspointerlockchange",t,!1),Module.elementPointerLock&&e.addEventListener("click",(function(g){!Browser.pointerLock&&Module.canvas.requestPointerLock&&(Module.canvas.requestPointerLock(),g.preventDefault())}),!1))}function t(){Browser.pointerLock=document.pointerLockElement===Module.canvas||document.mozPointerLockElement===Module.canvas||document.webkitPointerLockElement===Module.canvas||document.msPointerLockElement===Module.canvas}},createContext:function(g,I,e,t){if(I&&Module.ctx&&g==Module.canvas)return Module.ctx;var C,Q;if(I){var F={antialias:!1,alpha:!1};if(t)for(var B in t)F[B]=t[B];(Q=GL.createContext(g,F))&&(C=GL.getContext(Q).GLctx)}else C=g.getContext("2d");return C?(e&&(I||assert("undefined"===typeof GLctx,"cannot set in module if GLctx is used, but we are a non-GL context that would replace it"),Module.ctx=C,I&&GL.makeContextCurrent(Q),Module.useWebGL=I,Browser.moduleContextCreatedCallbacks.forEach((function(g){g()})),Browser.init()),C):null},destroyContext:function(g,I,e){},fullscreenHandlersInstalled:!1,lockPointer:void 0,resizeCanvas:void 0,requestFullscreen:function(g,I,e){Browser.lockPointer=g,Browser.resizeCanvas=I,Browser.vrDevice=e,"undefined"===typeof Browser.lockPointer&&(Browser.lockPointer=!0),"undefined"===typeof Browser.resizeCanvas&&(Browser.resizeCanvas=!1),"undefined"===typeof Browser.vrDevice&&(Browser.vrDevice=null);var t=Module.canvas;function C(){Browser.isFullscreen=!1;var g=t.parentNode;(document.fullscreenElement||document.mozFullScreenElement||document.msFullscreenElement||document.webkitFullscreenElement||document.webkitCurrentFullScreenElement)===g?(t.exitFullscreen=document.exitFullscreen||document.cancelFullScreen||document.mozCancelFullScreen||document.msExitFullscreen||document.webkitCancelFullScreen||function(){},t.exitFullscreen=t.exitFullscreen.bind(document),Browser.lockPointer&&t.requestPointerLock(),Browser.isFullscreen=!0,Browser.resizeCanvas&&Browser.setFullscreenCanvasSize()):(g.parentNode.insertBefore(t,g),g.parentNode.removeChild(g),Browser.resizeCanvas&&Browser.setWindowedCanvasSize()),Module.onFullScreen&&Module.onFullScreen(Browser.isFullscreen),Module.onFullscreen&&Module.onFullscreen(Browser.isFullscreen),Browser.updateCanvasDimensions(t)}Browser.fullscreenHandlersInstalled||(Browser.fullscreenHandlersInstalled=!0,document.addEventListener("fullscreenchange",C,!1),document.addEventListener("mozfullscreenchange",C,!1),document.addEventListener("webkitfullscreenchange",C,!1),document.addEventListener("MSFullscreenChange",C,!1));var Q=document.createElement("div");t.parentNode.insertBefore(Q,t),Q.appendChild(t),Q.requestFullscreen=Q.requestFullscreen||Q.mozRequestFullScreen||Q.msRequestFullscreen||(Q.webkitRequestFullscreen?function(){Q.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)}:null)||(Q.webkitRequestFullScreen?function(){Q.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)}:null),e?Q.requestFullscreen({vrDisplay:e}):Q.requestFullscreen()},requestFullScreen:function(g,I,e){return Module.printErr("Browser.requestFullScreen() is deprecated. Please call Browser.requestFullscreen instead."),Browser.requestFullScreen=function(g,I,e){return Browser.requestFullscreen(g,I,e)},Browser.requestFullscreen(g,I,e)},nextRAF:0,fakeRequestAnimationFrame:function(g){var I=Date.now();if(0===Browser.nextRAF)Browser.nextRAF=I+1e3/60;else for(;I+2>=Browser.nextRAF;)Browser.nextRAF+=1e3/60;var e=Math.max(Browser.nextRAF-I,0);setTimeout(g,e)},requestAnimationFrame:function(g){"undefined"===typeof window?Browser.fakeRequestAnimationFrame(g):(window.requestAnimationFrame||(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame||Browser.fakeRequestAnimationFrame),window.requestAnimationFrame(g))},safeCallback:function(g){return function(){if(!ABORT)return g.apply(null,arguments)}},allowAsyncCallbacks:!0,queuedAsyncCallbacks:[],pauseAsyncCallbacks:function(){Browser.allowAsyncCallbacks=!1},resumeAsyncCallbacks:function(){if(Browser.allowAsyncCallbacks=!0,Browser.queuedAsyncCallbacks.length>0){var g=Browser.queuedAsyncCallbacks;Browser.queuedAsyncCallbacks=[],g.forEach((function(g){g()}))}},safeRequestAnimationFrame:function(g){return Browser.requestAnimationFrame((function(){ABORT||(Browser.allowAsyncCallbacks?g():Browser.queuedAsyncCallbacks.push(g))}))},safeSetTimeout:function(g,I){return Module.noExitRuntime=!0,setTimeout((function(){ABORT||(Browser.allowAsyncCallbacks?g():Browser.queuedAsyncCallbacks.push(g))}),I)},safeSetInterval:function(g,I){return Module.noExitRuntime=!0,setInterval((function(){ABORT||Browser.allowAsyncCallbacks&&g()}),I)},getMimetype:function(g){return{jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",bmp:"image/bmp",ogg:"audio/ogg",wav:"audio/wav",mp3:"audio/mpeg"}[g.substr(g.lastIndexOf(".")+1)]},getUserMedia:function(g){window.getUserMedia||(window.getUserMedia=navigator.getUserMedia||navigator.mozGetUserMedia),window.getUserMedia(g)},getMovementX:function(g){return g.movementX||g.mozMovementX||g.webkitMovementX||0},getMovementY:function(g){return g.movementY||g.mozMovementY||g.webkitMovementY||0},getMouseWheelDelta:function(g){var I=0;switch(g.type){case"DOMMouseScroll":I=g.detail;break;case"mousewheel":I=g.wheelDelta;break;case"wheel":I=g.deltaY;break;default:throw"unrecognized mouse wheel event: "+g.type}return I},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(g){if(Browser.pointerLock)"mousemove"!=g.type&&"mozMovementX"in g?Browser.mouseMovementX=Browser.mouseMovementY=0:(Browser.mouseMovementX=Browser.getMovementX(g),Browser.mouseMovementY=Browser.getMovementY(g)),"undefined"!=typeof SDL?(Browser.mouseX=SDL.mouseX+Browser.mouseMovementX,Browser.mouseY=SDL.mouseY+Browser.mouseMovementY):(Browser.mouseX+=Browser.mouseMovementX,Browser.mouseY+=Browser.mouseMovementY);else{var I=Module.canvas.getBoundingClientRect(),e=Module.canvas.width,t=Module.canvas.height,C="undefined"!==typeof window.scrollX?window.scrollX:window.pageXOffset,Q="undefined"!==typeof window.scrollY?window.scrollY:window.pageYOffset;if("touchstart"===g.type||"touchend"===g.type||"touchmove"===g.type){var F=g.touch;if(void 0===F)return;var B=F.pageX-(C+I.left),n=F.pageY-(Q+I.top),U={x:B*=e/I.width,y:n*=t/I.height};if("touchstart"===g.type)Browser.lastTouches[F.identifier]=U,Browser.touches[F.identifier]=U;else if("touchend"===g.type||"touchmove"===g.type){var s=Browser.touches[F.identifier];s||(s=U),Browser.lastTouches[F.identifier]=s,Browser.touches[F.identifier]=U}return}var i=g.pageX-(C+I.left),c=g.pageY-(Q+I.top);i*=e/I.width,c*=t/I.height,Browser.mouseMovementX=i-Browser.mouseX,Browser.mouseMovementY=c-Browser.mouseY,Browser.mouseX=i,Browser.mouseY=c}},asyncLoad:function(g,I,e,t){var C=t?"":getUniqueRunDependency("al "+g);Module.readAsync(g,(function(e){assert(e,'Loading data file "'+g+'" failed (no arrayBuffer).'),I(new Uint8Array(e)),C&&removeRunDependency(C)}),(function(I){if(!e)throw'Loading data file "'+g+'" failed.';e()})),C&&addRunDependency(C)},resizeListeners:[],updateResizeListeners:function(){var g=Module.canvas;Browser.resizeListeners.forEach((function(I){I(g.width,g.height)}))},setCanvasSize:function(g,I,e){var t=Module.canvas;Browser.updateCanvasDimensions(t,g,I),e||Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if("undefined"!=typeof SDL){var g=HEAPU32[SDL.screen+0*Runtime.QUANTUM_SIZE>>2];g|=8388608,HEAP32[SDL.screen+0*Runtime.QUANTUM_SIZE>>2]=g}Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if("undefined"!=typeof SDL){var g=HEAPU32[SDL.screen+0*Runtime.QUANTUM_SIZE>>2];g&=-8388609,HEAP32[SDL.screen+0*Runtime.QUANTUM_SIZE>>2]=g}Browser.updateResizeListeners()},updateCanvasDimensions:function(g,I,e){I&&e?(g.widthNative=I,g.heightNative=e):(I=g.widthNative,e=g.heightNative);var t=I,C=e;if(Module.forcedAspectRatio&&Module.forcedAspectRatio>0&&(t/C<Module.forcedAspectRatio?t=Math.round(C*Module.forcedAspectRatio):C=Math.round(t/Module.forcedAspectRatio)),(document.fullscreenElement||document.mozFullScreenElement||document.msFullscreenElement||document.webkitFullscreenElement||document.webkitCurrentFullScreenElement)===g.parentNode&&"undefined"!=typeof screen){var Q=Math.min(screen.width/t,screen.height/C);t=Math.round(t*Q),C=Math.round(C*Q)}Browser.resizeCanvas?(g.width!=t&&(g.width=t),g.height!=C&&(g.height=C),"undefined"!=typeof g.style&&(g.style.removeProperty("width"),g.style.removeProperty("height"))):(g.width!=I&&(g.width=I),g.height!=e&&(g.height=e),"undefined"!=typeof g.style&&(t!=I||C!=e?(g.style.setProperty("width",t+"px","important"),g.style.setProperty("height",C+"px","important")):(g.style.removeProperty("width"),g.style.removeProperty("height"))))},wgetRequests:{},nextWgetRequestHandle:0,getNextWgetRequestHandle:function(){var g=Browser.nextWgetRequestHandle;return Browser.nextWgetRequestHandle++,g}},SYSCALLS={varargs:0,get:function(g){return SYSCALLS.varargs+=4,HEAP32[SYSCALLS.varargs-4>>2]},getStr:function(){return Pointer_stringify(SYSCALLS.get())},get64:function(){var g=SYSCALLS.get(),I=SYSCALLS.get();return assert(g>=0?0===I:-1===I),g},getZero:function(){assert(0===SYSCALLS.get())}};function ___syscall6(g,I){SYSCALLS.varargs=I;try{var e=SYSCALLS.getStreamFromFD();return FS.close(e),0}catch(t){return"undefined"!==typeof FS&&t instanceof FS.ErrnoError||abort(t),-t.errno}}function ___syscall54(g,I){SYSCALLS.varargs=I;try{return 0}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function _typeModule(g){var I=[[0,1,"X"],[1,1,"const X"],[128,1,"X *"],[256,1,"X &"],[384,1,"X &&"],[512,1,"std::shared_ptr<X>"],[640,1,"std::unique_ptr<X>"],[5120,1,"std::vector<X>"],[6144,2,"std::array<X, Y>"],[9216,-1,"std::function<X (Y)>"]];function e(g,I,e,t,C,Q){if(1==I){var F=896&t;128!=F&&256!=F&&384!=F||(g="X const")}return(Q?e.replace("X",g).replace("Y",C):g.replace("X",e).replace("Y",C)).replace(/([*&]) (?=[*&])/g,"$1")}function t(g,I){var e=I.flags,t=896&e,C=15360&e;return I.name||1024!=C||(1==I.ptrSize?I.name=(16&e?"":(8&e?"un":"")+"signed ")+"char":I.name=(8&e?"u":"")+(32&e?"float":"int")+8*I.ptrSize+"_t"),8!=I.ptrSize||32&e||(C=64),2048==C&&(512==t||640==t?C=4096:t&&(C=3072)),g(C,I)}var C={Type:function(){function g(g){this.id=g.id,this.name=g.name,this.flags=g.flags,this.spec=g}return g.prototype.toString=function(){return this.name},g}(),getComplexType:function g(C,Q,F,B,n,U,s,i){void 0===U&&(U="X"),void 0===i&&(i=1);var c=F(C);if(c)return c;var A,l=B(C),a=l.placeholderFlag,r=I[a];s&&r&&(U=e(s[2],s[0],U,r[0],"?",!0)),0==a&&(A="Unbound"),a>=10&&(A="Corrupt"),i>20&&(A="Deeply nested"),A&&function(g,I,e,t,C){throw new Error(g+" type "+e.replace("X",I+"?")+(t?" with flag "+t:"")+" in "+C)}(A,C,U,a,n||"?");var o,d=g(l.paramList[0],Q,F,B,n,U,r,i+1),u={flags:r[0],id:C,name:"",paramList:[d]},y=[],b="?";switch(l.placeholderFlag){case 1:o=d.spec;break;case 2:if(1024==(15360&d.flags)&&1==d.spec.ptrSize){u.flags=7168;break}case 3:case 6:case 5:o=d.spec,d.flags;break;case 8:b=""+l.paramList[1],u.paramList.push(l.paramList[1]);break;case 9:for(var Z=0,m=l.paramList[1];Z<m.length;Z++){var x=g(m[Z],Q,F,B,n,U,r,i+1);y.push(x.name),u.paramList.push(x)}b=y.join(", ")}if(u.name=e(r[2],r[0],d.name,d.flags,b),o){for(var R=0,S=Object.keys(o);R<S.length;R++){var G=S[R];u[G]=u[G]||o[G]}u.flags|=o.flags}return t(Q,u)},makeType:t,structureList:I};return g.output=C,g.output||C}function __nbind_register_type(g,I){var e={flags:10240,id:g,name:_nbind.readAsciiString(I)};_nbind.makeType(_nbind.constructType,e)}function __nbind_register_callback_signature(g,I){var e=_nbind.readTypeIdList(g,I),t=_nbind.callbackSignatureList.length;return _nbind.callbackSignatureList[t]=_nbind.makeJSCaller(e),t}function __extends(g,I){for(var e in I)I.hasOwnProperty(e)&&(g[e]=I[e]);function t(){this.constructor=g}t.prototype=I.prototype,g.prototype=new t}function __nbind_register_class(g,I,e,t,C,Q,F){var B=_nbind.readAsciiString(F),n=_nbind.readPolicyList(I),U=HEAPU32.subarray(g/4,g/4+2),s={flags:2048|(n.Value?2:0),id:U[0],name:B},i=_nbind.makeType(_nbind.constructType,s);i.ptrType=_nbind.getComplexType(U[1],_nbind.constructType,_nbind.getType,_nbind.queryType),i.destroy=_nbind.makeMethodCaller(i.ptrType,{boundID:s.id,flags:0,name:"destroy",num:0,ptr:Q,title:i.name+".free",typeList:["void","uint32_t","uint32_t"]}),C&&(i.superIdList=Array.prototype.slice.call(HEAPU32.subarray(e/4,e/4+C)),i.upcastList=Array.prototype.slice.call(HEAPU32.subarray(t/4,t/4+C))),Module[i.name]=i.makeBound(n),_nbind.BindClass.list.push(i)}function _removeAccessorPrefix(g){return g.replace(/^[Gg]et_?([A-Z]?([A-Z]?))/,(function(g,I,e){return e?I:I.toLowerCase()}))}function __nbind_register_function(g,I,e,t,C,Q,F,B,n,U){var s,i=_nbind.getType(g),c=_nbind.readPolicyList(I),A=_nbind.readTypeIdList(e,t);if(5==F)s=[{direct:C,name:"__nbindConstructor",ptr:0,title:i.name+" constructor",typeList:["uint32_t"].concat(A.slice(1))},{direct:Q,name:"__nbindValueConstructor",ptr:0,title:i.name+" value constructor",typeList:["void","uint32_t"].concat(A.slice(1))}];else{var l=_nbind.readAsciiString(B),a=(i.name&&i.name+".")+l;3!=F&&4!=F||(l=_removeAccessorPrefix(l)),s=[{boundID:g,direct:Q,name:l,ptr:C,title:a,typeList:A}]}for(var r=0,o=s;r<o.length;r++){var d=o[r];d.signatureType=F,d.policyTbl=c,d.num=n,d.flags=U,i.addMethod(d)}}function _nbind_value(g,I){_nbind.typeNameTbl[g]||_nbind.throwError("Unknown value type "+g),Module.NBind.bind_value(g,I),_defineHidden(_nbind.typeNameTbl[g].proto.prototype.__nbindValueConstructor)(I.prototype,"__nbindValueConstructor")}function __nbind_get_value_object(g,I){var e=_nbind.popValue(g);if(!e.fromJS)throw new Error("Object "+e+" has no fromJS function");e.fromJS((function(){e.__nbindValueConstructor.apply(this,Array.prototype.concat.apply([I],arguments))}))}function _emscripten_memcpy_big(g,I,e){return HEAPU8.set(HEAPU8.subarray(I,I+e),g),g}function __nbind_register_primitive(g,I,e){var t={flags:1024|e,id:g,ptrSize:I};_nbind.makeType(_nbind.constructType,t)}Module._nbind_value=_nbind_value;var cttz_i8=allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0],"i8",ALLOC_STATIC);function ___setErrNo(g){return Module.___errno_location&&(HEAP32[Module.___errno_location()>>2]=g),g}function _llvm_stacksave(){var g=_llvm_stacksave;return g.LLVM_SAVEDSTACKS||(g.LLVM_SAVEDSTACKS=[]),g.LLVM_SAVEDSTACKS.push(Runtime.stackSave()),g.LLVM_SAVEDSTACKS.length-1}function ___syscall140(g,I){SYSCALLS.varargs=I;try{var e=SYSCALLS.getStreamFromFD(),t=(SYSCALLS.get(),SYSCALLS.get()),C=SYSCALLS.get(),Q=SYSCALLS.get(),F=t;return FS.llseek(e,F,Q),HEAP32[C>>2]=e.position,e.getdents&&0===F&&0===Q&&(e.getdents=null),0}catch(B){return"undefined"!==typeof FS&&B instanceof FS.ErrnoError||abort(B),-B.errno}}function ___syscall146(g,I){SYSCALLS.varargs=I;try{var e=SYSCALLS.get(),t=SYSCALLS.get(),C=SYSCALLS.get(),Q=0;___syscall146.buffer||(___syscall146.buffers=[null,[],[]],___syscall146.printChar=function(g,I){var e=___syscall146.buffers[g];assert(e),0===I||10===I?((1===g?Module.print:Module.printErr)(UTF8ArrayToString(e,0)),e.length=0):e.push(I)});for(var F=0;F<C;F++){for(var B=HEAP32[t+8*F>>2],n=HEAP32[t+(8*F+4)>>2],U=0;U<n;U++)___syscall146.printChar(e,HEAPU8[B+U]);Q+=n}return Q}catch(s){return"undefined"!==typeof FS&&s instanceof FS.ErrnoError||abort(s),-s.errno}}function __nbind_finish(){for(var g=0,I=_nbind.BindClass.list;g<I.length;g++)I[g].finish()}var ___dso_handle=STATICTOP;function invoke_viiiii(g,I,e,t,C,Q){try{Module.dynCall_viiiii(g,I,e,t,C,Q)}catch(F){if("number"!==typeof F&&"longjmp"!==F)throw F;Module.setThrew(1,0)}}function invoke_vif(g,I,e){try{Module.dynCall_vif(g,I,e)}catch(t){if("number"!==typeof t&&"longjmp"!==t)throw t;Module.setThrew(1,0)}}function invoke_vid(g,I,e){try{Module.dynCall_vid(g,I,e)}catch(t){if("number"!==typeof t&&"longjmp"!==t)throw t;Module.setThrew(1,0)}}function invoke_fiff(g,I,e,t){try{return Module.dynCall_fiff(g,I,e,t)}catch(C){if("number"!==typeof C&&"longjmp"!==C)throw C;Module.setThrew(1,0)}}function invoke_vi(g,I){try{Module.dynCall_vi(g,I)}catch(e){if("number"!==typeof e&&"longjmp"!==e)throw e;Module.setThrew(1,0)}}function invoke_vii(g,I,e){try{Module.dynCall_vii(g,I,e)}catch(t){if("number"!==typeof t&&"longjmp"!==t)throw t;Module.setThrew(1,0)}}function invoke_ii(g,I){try{return Module.dynCall_ii(g,I)}catch(e){if("number"!==typeof e&&"longjmp"!==e)throw e;Module.setThrew(1,0)}}function invoke_viddi(g,I,e,t,C){try{Module.dynCall_viddi(g,I,e,t,C)}catch(Q){if("number"!==typeof Q&&"longjmp"!==Q)throw Q;Module.setThrew(1,0)}}function invoke_vidd(g,I,e,t){try{Module.dynCall_vidd(g,I,e,t)}catch(C){if("number"!==typeof C&&"longjmp"!==C)throw C;Module.setThrew(1,0)}}function invoke_iiii(g,I,e,t){try{return Module.dynCall_iiii(g,I,e,t)}catch(C){if("number"!==typeof C&&"longjmp"!==C)throw C;Module.setThrew(1,0)}}function invoke_diii(g,I,e,t){try{return Module.dynCall_diii(g,I,e,t)}catch(C){if("number"!==typeof C&&"longjmp"!==C)throw C;Module.setThrew(1,0)}}function invoke_di(g,I){try{return Module.dynCall_di(g,I)}catch(e){if("number"!==typeof e&&"longjmp"!==e)throw e;Module.setThrew(1,0)}}function invoke_iid(g,I,e){try{return Module.dynCall_iid(g,I,e)}catch(t){if("number"!==typeof t&&"longjmp"!==t)throw t;Module.setThrew(1,0)}}function invoke_iii(g,I,e){try{return Module.dynCall_iii(g,I,e)}catch(t){if("number"!==typeof t&&"longjmp"!==t)throw t;Module.setThrew(1,0)}}function invoke_viiddi(g,I,e,t,C,Q){try{Module.dynCall_viiddi(g,I,e,t,C,Q)}catch(F){if("number"!==typeof F&&"longjmp"!==F)throw F;Module.setThrew(1,0)}}function invoke_viiiiii(g,I,e,t,C,Q,F){try{Module.dynCall_viiiiii(g,I,e,t,C,Q,F)}catch(B){if("number"!==typeof B&&"longjmp"!==B)throw B;Module.setThrew(1,0)}}function invoke_dii(g,I,e){try{return Module.dynCall_dii(g,I,e)}catch(t){if("number"!==typeof t&&"longjmp"!==t)throw t;Module.setThrew(1,0)}}function invoke_i(g){try{return Module.dynCall_i(g)}catch(I){if("number"!==typeof I&&"longjmp"!==I)throw I;Module.setThrew(1,0)}}function invoke_iiiiii(g,I,e,t,C,Q){try{return Module.dynCall_iiiiii(g,I,e,t,C,Q)}catch(F){if("number"!==typeof F&&"longjmp"!==F)throw F;Module.setThrew(1,0)}}function invoke_viiid(g,I,e,t,C){try{Module.dynCall_viiid(g,I,e,t,C)}catch(Q){if("number"!==typeof Q&&"longjmp"!==Q)throw Q;Module.setThrew(1,0)}}function invoke_viififi(g,I,e,t,C,Q,F){try{Module.dynCall_viififi(g,I,e,t,C,Q,F)}catch(B){if("number"!==typeof B&&"longjmp"!==B)throw B;Module.setThrew(1,0)}}function invoke_viii(g,I,e,t){try{Module.dynCall_viii(g,I,e,t)}catch(C){if("number"!==typeof C&&"longjmp"!==C)throw C;Module.setThrew(1,0)}}function invoke_v(g){try{Module.dynCall_v(g)}catch(I){if("number"!==typeof I&&"longjmp"!==I)throw I;Module.setThrew(1,0)}}function invoke_viid(g,I,e,t){try{Module.dynCall_viid(g,I,e,t)}catch(C){if("number"!==typeof C&&"longjmp"!==C)throw C;Module.setThrew(1,0)}}function invoke_idd(g,I,e){try{return Module.dynCall_idd(g,I,e)}catch(t){if("number"!==typeof t&&"longjmp"!==t)throw t;Module.setThrew(1,0)}}function invoke_viiii(g,I,e,t,C){try{Module.dynCall_viiii(g,I,e,t,C)}catch(Q){if("number"!==typeof Q&&"longjmp"!==Q)throw Q;Module.setThrew(1,0)}}STATICTOP+=16,function(_nbind){var typeIdTbl={};_nbind.typeNameTbl={};var Pool=function(){function g(){}return g.lalloc=function(I){I=I+7&-8;var e=HEAPU32[g.usedPtr];return I>g.pageSize/2||I>g.pageSize-e?_nbind.typeNameTbl.NBind.proto.lalloc(I):(HEAPU32[g.usedPtr]=e+I,g.rootPtr+e)},g.lreset=function(I,e){HEAPU32[g.pagePtr]?_nbind.typeNameTbl.NBind.proto.lreset(I,e):HEAPU32[g.usedPtr]=I},g}();function constructType(g,I){var e=new(10240==g?_nbind.makeTypeNameTbl[I.name]||_nbind.BindType:_nbind.makeTypeKindTbl[g])(I);return typeIdTbl[I.id]=e,_nbind.typeNameTbl[I.name]=e,e}function getType(g){return typeIdTbl[g]}function queryType(g){var I=HEAPU8[g],e=_nbind.structureList[I][1];g/=4,e<0&&(++g,e=HEAPU32[g]+1);var t=Array.prototype.slice.call(HEAPU32.subarray(g+1,g+1+e));return 9==I&&(t=[t[0],t.slice(1)]),{paramList:t,placeholderFlag:I}}function getTypes(g,I){return g.map((function(g){return"number"==typeof g?_nbind.getComplexType(g,constructType,getType,queryType,I):_nbind.typeNameTbl[g]}))}function readTypeIdList(g,I){return Array.prototype.slice.call(HEAPU32,g/4,g/4+I)}function readAsciiString(g){for(var I=g;HEAPU8[I++];);return String.fromCharCode.apply("",HEAPU8.subarray(g,I-1))}function readPolicyList(g){var I={};if(g)for(;;){var e=HEAPU32[g/4];if(!e)break;I[readAsciiString(e)]=!0,g+=4}return I}function getDynCall(g,I){var e={float32_t:"d",float64_t:"d",int64_t:"d",uint64_t:"d",void:"v"},t=g.map((function(g){return e[g.name]||"i"})).join(""),C=Module["dynCall_"+t];if(!C)throw new Error("dynCall_"+t+" not found for "+I+"("+g.map((function(g){return g.name})).join(", ")+")");return C}function addMethod(g,I,e,t){var C=g[I];g.hasOwnProperty(I)&&C?((C.arity||0===C.arity)&&(C=_nbind.makeOverloader(C,C.arity),g[I]=C),C.addMethod(e,t)):(e.arity=t,g[I]=e)}function throwError(g){throw new Error(g)}_nbind.Pool=Pool,_nbind.constructType=constructType,_nbind.getType=getType,_nbind.queryType=queryType,_nbind.getTypes=getTypes,_nbind.readTypeIdList=readTypeIdList,_nbind.readAsciiString=readAsciiString,_nbind.readPolicyList=readPolicyList,_nbind.getDynCall=getDynCall,_nbind.addMethod=addMethod,_nbind.throwError=throwError,_nbind.bigEndian=!1;var _a=_typeModule(_typeModule);_nbind.Type=_a.Type,_nbind.makeType=_a.makeType,_nbind.getComplexType=_a.getComplexType,_nbind.structureList=_a.structureList;var BindType=function(g){function I(){var I=null!==g&&g.apply(this,arguments)||this;return I.heap=HEAPU32,I.ptrSize=4,I}return __extends(I,g),I.prototype.needsWireRead=function(g){return!!this.wireRead||!!this.makeWireRead},I.prototype.needsWireWrite=function(g){return!!this.wireWrite||!!this.makeWireWrite},I}(_nbind.Type);_nbind.BindType=BindType;var PrimitiveType=function(g){function I(I){var e=g.call(this,I)||this,t=32&I.flags?{32:HEAPF32,64:HEAPF64}:8&I.flags?{8:HEAPU8,16:HEAPU16,32:HEAPU32}:{8:HEAP8,16:HEAP16,32:HEAP32};return e.heap=t[8*I.ptrSize],e.ptrSize=I.ptrSize,e}return __extends(I,g),I.prototype.needsWireWrite=function(g){return!!g&&!!g.Strict},I.prototype.makeWireWrite=function(g,I){return I&&I.Strict&&function(g){if("number"==typeof g)return g;throw new Error("Type mismatch")}},I}(BindType);function pushCString(g,I){if(null===g||void 0===g){if(I&&I.Nullable)return 0;throw new Error("Type mismatch")}if(I&&I.Strict){if("string"!=typeof g)throw new Error("Type mismatch")}else g=g.toString();var e=Module.lengthBytesUTF8(g)+1,t=_nbind.Pool.lalloc(e);return Module.stringToUTF8Array(g,HEAPU8,t,e),t}function popCString(g){return 0===g?null:Module.Pointer_stringify(g)}_nbind.PrimitiveType=PrimitiveType,_nbind.pushCString=pushCString,_nbind.popCString=popCString;var CStringType=function(g){function I(){var I=null!==g&&g.apply(this,arguments)||this;return I.wireRead=popCString,I.wireWrite=pushCString,I.readResources=[_nbind.resources.pool],I.writeResources=[_nbind.resources.pool],I}return __extends(I,g),I.prototype.makeWireWrite=function(g,I){return function(g){return pushCString(g,I)}},I}(BindType);_nbind.CStringType=CStringType;var BooleanType=function(g){function I(){var I=null!==g&&g.apply(this,arguments)||this;return I.wireRead=function(g){return!!g},I}return __extends(I,g),I.prototype.needsWireWrite=function(g){return!!g&&!!g.Strict},I.prototype.makeWireRead=function(g){return"!!("+g+")"},I.prototype.makeWireWrite=function(g,I){return I&&I.Strict&&function(g){if("boolean"==typeof g)return g;throw new Error("Type mismatch")}||g},I}(BindType);_nbind.BooleanType=BooleanType;var Wrapper=function(){function g(){}return g.prototype.persist=function(){this.__nbindState|=1},g}();function makeBound(g,I){var e=function(g){function e(I,t,C,Q){var F=g.call(this)||this;if(!(F instanceof e))return new(Function.prototype.bind.apply(e,Array.prototype.concat.apply([null],arguments)));var B=t,n=C,U=Q;if(I!==_nbind.ptrMarker){var s=F.__nbindConstructor.apply(F,arguments);B=4608,U=HEAPU32[s/4],n=HEAPU32[s/4+1]}var i={configurable:!0,enumerable:!1,value:null,writable:!1},c={__nbindFlags:B,__nbindPtr:n};U&&(c.__nbindShared=U,_nbind.mark(F));for(var A=0,l=Object.keys(c);A<l.length;A++){var a=l[A];i.value=c[a],Object.defineProperty(F,a,i)}return _defineHidden(0)(F,"__nbindState"),F}return __extends(e,g),e.prototype.free=function(){I.destroy.call(this,this.__nbindShared,this.__nbindFlags),this.__nbindState|=2,disableMember(this,"__nbindShared"),disableMember(this,"__nbindPtr")},e}(Wrapper);return __decorate([_defineHidden()],e.prototype,"__nbindConstructor",void 0),__decorate([_defineHidden()],e.prototype,"__nbindValueConstructor",void 0),__decorate([_defineHidden(g)],e.prototype,"__nbindPolicies",void 0),e}function disableMember(g,I){function e(){throw new Error("Accessing deleted object")}Object.defineProperty(g,I,{configurable:!1,enumerable:!1,get:e,set:e})}_nbind.Wrapper=Wrapper,_nbind.makeBound=makeBound,_nbind.ptrMarker={};var BindClass=function(g){function I(I){var e=g.call(this,I)||this;return e.wireRead=function(g){return _nbind.popValue(g,e.ptrType)},e.wireWrite=function(g){return pushPointer(g,e.ptrType,!0)},e.pendingSuperCount=0,e.ready=!1,e.methodTbl={},I.paramList?(e.classType=I.paramList[0].classType,e.proto=e.classType.proto):e.classType=e,e}return __extends(I,g),I.prototype.makeBound=function(g){var I=_nbind.makeBound(g,this);return this.proto=I,this.ptrType.proto=I,I},I.prototype.addMethod=function(g){var I=this.methodTbl[g.name]||[];I.push(g),this.methodTbl[g.name]=I},I.prototype.registerMethods=function(g,I){for(var e,t=0,C=Object.keys(g.methodTbl);t<C.length;t++)for(var Q=C[t],F=0,B=g.methodTbl[Q];F<B.length;F++){var n=B[F],U=void 0,s=void 0;if(U=this.proto.prototype,!I||1==n.signatureType)switch(n.signatureType){case 1:U=this.proto;case 5:s=_nbind.makeCaller(n),_nbind.addMethod(U,n.name,s,n.typeList.length-1);break;case 4:e=_nbind.makeMethodCaller(g.ptrType,n);break;case 3:Object.defineProperty(U,n.name,{configurable:!0,enumerable:!1,get:_nbind.makeMethodCaller(g.ptrType,n),set:e});break;case 2:s=_nbind.makeMethodCaller(g.ptrType,n),_nbind.addMethod(U,n.name,s,n.typeList.length-1)}}},I.prototype.registerSuperMethods=function(g,I,e){if(!e[g.name]){e[g.name]=!0;for(var t,C=0,Q=0,F=g.superIdList||[];Q<F.length;Q++){var B=F[Q],n=_nbind.getType(B);t=C++<I||I<0?-1:0,this.registerSuperMethods(n,t,e)}this.registerMethods(g,I<0)}},I.prototype.finish=function(){if(this.ready)return this;this.ready=!0,this.superList=(this.superIdList||[]).map((function(g){return _nbind.getType(g).finish()}));var g=this.proto;if(this.superList.length){var I=function(){this.constructor=g};I.prototype=this.superList[0].proto.prototype,g.prototype=new I}return g!=Module&&(g.prototype.__nbindType=this),this.registerSuperMethods(this,1,{}),this},I.prototype.upcastStep=function(g,I){if(g==this)return I;for(var e=0;e<this.superList.length;++e){var t=this.superList[e].upcastStep(g,_nbind.callUpcast(this.upcastList[e],I));if(t)return t}return 0},I}(_nbind.BindType);function popPointer(g,I){return g?new I.proto(_nbind.ptrMarker,I.flags,g):null}function pushPointer(g,I,e){if(!(g instanceof _nbind.Wrapper)){if(e)return _nbind.pushValue(g);throw new Error("Type mismatch")}var t=g.__nbindPtr,C=g.__nbindType.classType,Q=I.classType;if(g instanceof I.proto)for(;C!=Q;)t=_nbind.callUpcast(C.upcastList[0],t),C=C.superList[0];else if(!(t=C.upcastStep(Q,t)))throw new Error("Type mismatch");return t}function pushMutablePointer(g,I){var e=pushPointer(g,I);if(1&g.__nbindFlags)throw new Error("Passing a const value as a non-const argument");return e}BindClass.list=[],_nbind.BindClass=BindClass,_nbind.popPointer=popPointer,_nbind.pushPointer=pushPointer;var BindClassPtr=function(g){function I(I){var e=g.call(this,I)||this;e.classType=I.paramList[0].classType,e.proto=e.classType.proto;var t=1&I.flags,C=256==(896&e.flags)&&2&I.flags,Q=t?pushPointer:pushMutablePointer,F=C?_nbind.popValue:popPointer;return e.makeWireWrite=function(g,I){return I.Nullable?function(g){return g?Q(g,e):0}:function(g){return Q(g,e)}},e.wireRead=function(g){return F(g,e)},e.wireWrite=function(g){return Q(g,e)},e}return __extends(I,g),I}(_nbind.BindType);function popShared(g,I){var e=HEAPU32[g/4],t=HEAPU32[g/4+1];return t?new I.proto(_nbind.ptrMarker,I.flags,t,e):null}function pushShared(g,I){if(!(g instanceof I.proto))throw new Error("Type mismatch");return g.__nbindShared}function pushMutableShared(g,I){if(!(g instanceof I.proto))throw new Error("Type mismatch");if(1&g.__nbindFlags)throw new Error("Passing a const value as a non-const argument");return g.__nbindShared}_nbind.BindClassPtr=BindClassPtr,_nbind.popShared=popShared;var SharedClassPtr=function(g){function I(I){var e=g.call(this,I)||this;e.readResources=[_nbind.resources.pool],e.classType=I.paramList[0].classType,e.proto=e.classType.proto;var t=1&I.flags?pushShared:pushMutableShared;return e.wireRead=function(g){return popShared(g,e)},e.wireWrite=function(g){return t(g,e)},e}return __extends(I,g),I}(_nbind.BindType);_nbind.SharedClassPtr=SharedClassPtr,_nbind.externalList=[0];var firstFreeExternal=0,External=function(){function g(g){this.refCount=1,this.data=g}return g.prototype.register=function(){var g=firstFreeExternal;return g?firstFreeExternal=_nbind.externalList[g]:g=_nbind.externalList.length,_nbind.externalList[g]=this,g},g.prototype.reference=function(){++this.refCount},g.prototype.dereference=function(g){0==--this.refCount&&(this.free&&this.free(),_nbind.externalList[g]=firstFreeExternal,firstFreeExternal=g)},g}();function popExternal(g){var I=_nbind.externalList[g];return I.dereference(g),I.data}function pushExternal(g){var I=new External(g);return I.reference(),I.register()}_nbind.External=External;var ExternalType=function(g){function I(){var I=null!==g&&g.apply(this,arguments)||this;return I.wireRead=popExternal,I.wireWrite=pushExternal,I}return __extends(I,g),I}(_nbind.BindType);_nbind.ExternalType=ExternalType,_nbind.callbackSignatureList=[];var CallbackType=function(g){function I(){var I=null!==g&&g.apply(this,arguments)||this;return I.wireWrite=function(g){return"function"!=typeof g&&_nbind.throwError("Type mismatch"),new _nbind.External(g).register()},I}return __extends(I,g),I}(_nbind.BindType);_nbind.CallbackType=CallbackType,_nbind.valueList=[0];var firstFreeValue=0;function pushValue(g){var I=firstFreeValue;return I?firstFreeValue=_nbind.valueList[I]:I=_nbind.valueList.length,_nbind.valueList[I]=g,2*I+1}function popValue(g,I){if(g||_nbind.throwError("Value type JavaScript class is missing or not registered"),1&g){g>>=1;var e=_nbind.valueList[g];return _nbind.valueList[g]=firstFreeValue,firstFreeValue=g,e}if(I)return _nbind.popShared(g,I);throw new Error("Invalid value slot "+g)}_nbind.pushValue=pushValue,_nbind.popValue=popValue;var valueBase=0x10000000000000000;function push64(g){return"number"==typeof g?g:4096*pushValue(g)+valueBase}function pop64(g){return g<valueBase?g:popValue((g-valueBase)/4096)}var CreateValueType=function(g){function I(){return null!==g&&g.apply(this,arguments)||this}return __extends(I,g),I.prototype.makeWireWrite=function(g){return"(_nbind.pushValue(new "+g+"))"},I}(_nbind.BindType);_nbind.CreateValueType=CreateValueType;var Int64Type=function(g){function I(){var I=null!==g&&g.apply(this,arguments)||this;return I.wireWrite=push64,I.wireRead=pop64,I}return __extends(I,g),I}(_nbind.BindType);function pushArray(g,I){if(!g)return 0;var e=g.length;if((I.size||0===I.size)&&e<I.size)throw new Error("Type mismatch");var t=I.memberType.ptrSize,C=_nbind.Pool.lalloc(4+e*t);HEAPU32[C/4]=e;var Q=I.memberType.heap,F=(C+4)/t,B=I.memberType.wireWrite,n=0;if(B)for(;n<e;)Q[F++]=B(g[n++]);else for(;n<e;)Q[F++]=g[n++];return C}function popArray(g,I){if(0===g)return null;var e=HEAPU32[g/4],t=new Array(e),C=I.memberType.heap;g=(g+4)/I.memberType.ptrSize;var Q=I.memberType.wireRead,F=0;if(Q)for(;F<e;)t[F++]=Q(C[g++]);else for(;F<e;)t[F++]=C[g++];return t}_nbind.Int64Type=Int64Type,_nbind.pushArray=pushArray,_nbind.popArray=popArray;var ArrayType=function(g){function I(I){var e=g.call(this,I)||this;return e.wireRead=function(g){return popArray(g,e)},e.wireWrite=function(g){return pushArray(g,e)},e.readResources=[_nbind.resources.pool],e.writeResources=[_nbind.resources.pool],e.memberType=I.paramList[0],I.paramList[1]&&(e.size=I.paramList[1]),e}return __extends(I,g),I}(_nbind.BindType);function pushString(g,I){if(null===g||void 0===g){if(!I||!I.Nullable)throw new Error("Type mismatch");g=""}if(I&&I.Strict){if("string"!=typeof g)throw new Error("Type mismatch")}else g=g.toString();var e=Module.lengthBytesUTF8(g),t=_nbind.Pool.lalloc(4+e+1);return HEAPU32[t/4]=e,Module.stringToUTF8Array(g,HEAPU8,t+4,e+1),t}function popString(g){if(0===g)return null;var I=HEAPU32[g/4];return Module.Pointer_stringify(g+4,I)}_nbind.ArrayType=ArrayType,_nbind.pushString=pushString,_nbind.popString=popString;var StringType=function(g){function I(){var I=null!==g&&g.apply(this,arguments)||this;return I.wireRead=popString,I.wireWrite=pushString,I.readResources=[_nbind.resources.pool],I.writeResources=[_nbind.resources.pool],I}return __extends(I,g),I.prototype.makeWireWrite=function(g,I){return function(g){return pushString(g,I)}},I}(_nbind.BindType);function makeArgList(g){return Array.apply(null,Array(g)).map((function(g,I){return"a"+(I+1)}))}function anyNeedsWireWrite(g,I){return g.reduce((function(g,e){return g||e.needsWireWrite(I)}),!1)}function anyNeedsWireRead(g,I){return g.reduce((function(g,e){return g||!!e.needsWireRead(I)}),!1)}function makeWireRead(g,I,e,t){var C=g.length;return e.makeWireRead?e.makeWireRead(t,g,C):e.wireRead?(g[C]=e.wireRead,"(convertParamList["+C+"]("+t+"))"):t}function makeWireWrite(g,I,e,t){var C,Q=g.length;return(C=e.makeWireWrite?e.makeWireWrite(t,I,g,Q):e.wireWrite)?"string"==typeof C?C:(g[Q]=C,"(convertParamList["+Q+"]("+t+"))"):t}function buildCallerFunction(dynCall,ptrType,ptr,num,policyTbl,needsWireWrite,prefix,returnType,argTypeList,mask,err){var argList=makeArgList(argTypeList.length),convertParamList=[],callExpression=makeWireRead(convertParamList,policyTbl,returnType,"dynCall("+[prefix].concat(argList.map((function(g,I){return makeWireWrite(convertParamList,policyTbl,argTypeList[I],g)}))).join(",")+")"),resourceSet=_nbind.listResources([returnType],argTypeList),sourceCode="function("+argList.join(",")+"){"+(mask?"this.__nbindFlags&mask&&err();":"")+resourceSet.makeOpen()+"var r="+callExpression+";"+resourceSet.makeClose()+"return r;}";return eval("("+sourceCode+")")}function buildJSCallerFunction(returnType,argTypeList){var argList=makeArgList(argTypeList.length),convertParamList=[],callExpression=makeWireWrite(convertParamList,null,returnType,"_nbind.externalList[num].data("+argList.map((function(g,I){return makeWireRead(convertParamList,null,argTypeList[I],g)})).join(",")+")"),resourceSet=_nbind.listResources(argTypeList,[returnType]);resourceSet.remove(_nbind.resources.pool);var sourceCode="function("+["dummy","num"].concat(argList).join(",")+"){"+resourceSet.makeOpen()+"var r="+callExpression+";"+resourceSet.makeClose()+"return r;}";return eval("("+sourceCode+")")}function makeJSCaller(g){var I=g.length-1,e=_nbind.getTypes(g,"callback"),t=e[0],C=e.slice(1),Q=anyNeedsWireRead(C,null);if(!t.needsWireWrite(null)&&!Q)switch(I){case 0:return function(g,I){return _nbind.externalList[I].data()};case 1:return function(g,I,e){return _nbind.externalList[I].data(e)};case 2:return function(g,I,e,t){return _nbind.externalList[I].data(e,t)};case 3:return function(g,I,e,t,C){return _nbind.externalList[I].data(e,t,C)}}return buildJSCallerFunction(t,C)}function makeMethodCaller(g,I){var e=I.typeList.length-1,t=I.typeList.slice(0);t.splice(1,0,"uint32_t",I.boundID);var C=_nbind.getTypes(t,I.title),Q=C[0],F=C.slice(3),B=Q.needsWireRead(I.policyTbl),n=anyNeedsWireWrite(F,I.policyTbl),U=I.ptr,s=I.num,i=_nbind.getDynCall(C,I.title),c=1&~I.flags;function A(){throw new Error("Calling a non-const method on a const object")}if(!B&&!n)switch(e){case 0:return function(){return this.__nbindFlags&c?A():i(U,s,_nbind.pushPointer(this,g))};case 1:return function(I){return this.__nbindFlags&c?A():i(U,s,_nbind.pushPointer(this,g),I)};case 2:return function(I,e){return this.__nbindFlags&c?A():i(U,s,_nbind.pushPointer(this,g),I,e)};case 3:return function(I,e,t){return this.__nbindFlags&c?A():i(U,s,_nbind.pushPointer(this,g),I,e,t)}}return buildCallerFunction(i,g,U,s,I.policyTbl,n,"ptr,num,pushPointer(this,ptrType)",Q,F,c,A)}function makeCaller(g){var I,e=g.typeList.length-1,t=_nbind.getTypes(g.typeList,g.title),C=t[0],Q=t.slice(1),F=C.needsWireRead(g.policyTbl),B=anyNeedsWireWrite(Q,g.policyTbl),n=g.direct,U=g.ptr;if(g.direct&&!F&&!B){var s=_nbind.getDynCall(t,g.title);switch(e){case 0:return function(){return s(n)};case 1:return function(g){return s(n,g)};case 2:return function(g,I){return s(n,g,I)};case 3:return function(g,I,e){return s(n,g,I,e)}}U=0}if(U){var i=g.typeList.slice(0);i.splice(1,0,"uint32_t"),t=_nbind.getTypes(i,g.title),I="ptr,num"}else U=n,I="ptr";return buildCallerFunction(_nbind.getDynCall(t,g.title),null,U,g.num,g.policyTbl,B,I,C,Q)}function makeOverloader(g,I){var e=[];function t(){return e[arguments.length].apply(this,arguments)}return t.addMethod=function(g,I){e[I]=g},t.addMethod(g,I),t}_nbind.StringType=StringType,_nbind.buildJSCallerFunction=buildJSCallerFunction,_nbind.makeJSCaller=makeJSCaller,_nbind.makeMethodCaller=makeMethodCaller,_nbind.makeCaller=makeCaller,_nbind.makeOverloader=makeOverloader;var Resource=function(){function g(g,I){var e=this;this.makeOpen=function(){return Object.keys(e.openTbl).join("")},this.makeClose=function(){return Object.keys(e.closeTbl).join("")},this.openTbl={},this.closeTbl={},g&&(this.openTbl[g]=!0),I&&(this.closeTbl[I]=!0)}return g.prototype.add=function(g){for(var I=0,e=Object.keys(g.openTbl);I<e.length;I++){var t=e[I];this.openTbl[t]=!0}for(var C=0,Q=Object.keys(g.closeTbl);C<Q.length;C++)t=Q[C],this.closeTbl[t]=!0},g.prototype.remove=function(g){for(var I=0,e=Object.keys(g.openTbl);I<e.length;I++){var t=e[I];delete this.openTbl[t]}for(var C=0,Q=Object.keys(g.closeTbl);C<Q.length;C++)t=Q[C],delete this.closeTbl[t]},g}();function listResources(g,I){for(var e=new Resource,t=0,C=g;t<C.length;t++)for(var Q=0,F=C[t].readResources||[];Q<F.length;Q++){var B=F[Q];e.add(B)}for(var n=0,U=I;n<U.length;n++)for(var s=0,i=U[n].writeResources||[];s<i.length;s++)B=i[s],e.add(B);return e}_nbind.Resource=Resource,_nbind.listResources=listResources,_nbind.resources={pool:new Resource("var used=HEAPU32[_nbind.Pool.usedPtr],page=HEAPU32[_nbind.Pool.pagePtr];","_nbind.Pool.lreset(used,page);")};var ExternalBuffer=function(g){function I(I,e){var t=g.call(this,I)||this;return t.ptr=e,t}return __extends(I,g),I.prototype.free=function(){_free(this.ptr)},I}(_nbind.External);function getBuffer(g){return g instanceof ArrayBuffer?new Uint8Array(g):g instanceof DataView?new Uint8Array(g.buffer,g.byteOffset,g.byteLength):g}function pushBuffer(g,I){if(null!==g&&void 0!==g||I&&I.Nullable&&(g=[]),"object"!=typeof g)throw new Error("Type mismatch");var e=g,t=e.byteLength||e.length;if(!t&&0!==t&&0!==e.byteLength)throw new Error("Type mismatch");var C=_nbind.Pool.lalloc(8),Q=_malloc(t),F=C/4;return HEAPU32[F++]=t,HEAPU32[F++]=Q,HEAPU32[F++]=new ExternalBuffer(g,Q).register(),HEAPU8.set(getBuffer(g),Q),C}var BufferType=function(g){function I(){var I=null!==g&&g.apply(this,arguments)||this;return I.wireWrite=pushBuffer,I.readResources=[_nbind.resources.pool],I.writeResources=[_nbind.resources.pool],I}return __extends(I,g),I.prototype.makeWireWrite=function(g,I){return function(g){return pushBuffer(g,I)}},I}(_nbind.BindType);function commitBuffer(g,I,e){var t=_nbind.externalList[g].data,C=Buffer;if("function"!=typeof Buffer&&(C=function(){}),t instanceof Array);else{var Q=HEAPU8.subarray(I,I+e);t instanceof C?("function"==typeof Buffer.from&&Buffer.from.length,Buffer.from(Q)).copy(t):getBuffer(t).set(Q)}}_nbind.BufferType=BufferType,_nbind.commitBuffer=commitBuffer;var dirtyList=[],gcTimer=0;function sweep(){for(var g=0,I=dirtyList;g<I.length;g++){var e=I[g];3&e.__nbindState||e.free()}dirtyList=[],gcTimer=0}function toggleLightGC(g){_nbind.mark=g?function(g){dirtyList.push(g),gcTimer||(gcTimer=setTimeout(sweep,0))}:function(g){}}_nbind.mark=function(g){},_nbind.toggleLightGC=toggleLightGC}(_nbind),Module.requestFullScreen=function(g,I,e){Module.printErr("Module.requestFullScreen is deprecated. Please call Module.requestFullscreen instead."),Module.requestFullScreen=Module.requestFullscreen,Browser.requestFullScreen(g,I,e)},Module.requestFullscreen=function(g,I,e){Browser.requestFullscreen(g,I,e)},Module.requestAnimationFrame=function(g){Browser.requestAnimationFrame(g)},Module.setCanvasSize=function(g,I,e){Browser.setCanvasSize(g,I,e)},Module.pauseMainLoop=function(){Browser.mainLoop.pause()},Module.resumeMainLoop=function(){Browser.mainLoop.resume()},Module.getUserMedia=function(){Browser.getUserMedia()},Module.createContext=function(g,I,e,t){return Browser.createContext(g,I,e,t)},_emscripten_get_now=ENVIRONMENT_IS_NODE?function(){var g=process.hrtime();return 1e3*g[0]+g[1]/1e6}:"undefined"!==typeof dateNow?dateNow:"object"===typeof self&&self.performance&&"function"===typeof self.performance.now?function(){return self.performance.now()}:"object"===typeof performance&&"function"===typeof performance.now?function(){return performance.now()}:Date.now,__ATEXIT__.push((function(){var g=Module._fflush;g&&g(0);var I=___syscall146.printChar;if(I){var e=___syscall146.buffers;e[1].length&&I(1,10),e[2].length&&I(2,10)}})),DYNAMICTOP_PTR=allocate(1,"i32",ALLOC_STATIC),STACK_BASE=STACKTOP=Runtime.alignMemory(STATICTOP),STACK_MAX=STACK_BASE+TOTAL_STACK,DYNAMIC_BASE=Runtime.alignMemory(STACK_MAX),HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE,staticSealed=!0,Module.asmGlobalArg={Math:Math,Int8Array:Int8Array,Int16Array:Int16Array,Int32Array:Int32Array,Uint8Array:Uint8Array,Uint16Array:Uint16Array,Uint32Array:Uint32Array,Float32Array:Float32Array,Float64Array:Float64Array,NaN:NaN,Infinity:1/0},Module.asmLibraryArg={abort:abort,assert:assert,enlargeMemory:enlargeMemory,getTotalMemory:getTotalMemory,abortOnCannotGrowMemory:abortOnCannotGrowMemory,invoke_viiiii:invoke_viiiii,invoke_vif:invoke_vif,invoke_vid:invoke_vid,invoke_fiff:invoke_fiff,invoke_vi:invoke_vi,invoke_vii:invoke_vii,invoke_ii:invoke_ii,invoke_viddi:invoke_viddi,invoke_vidd:invoke_vidd,invoke_iiii:invoke_iiii,invoke_diii:invoke_diii,invoke_di:invoke_di,invoke_iid:invoke_iid,invoke_iii:invoke_iii,invoke_viiddi:invoke_viiddi,invoke_viiiiii:invoke_viiiiii,invoke_dii:invoke_dii,invoke_i:invoke_i,invoke_iiiiii:invoke_iiiiii,invoke_viiid:invoke_viiid,invoke_viififi:invoke_viififi,invoke_viii:invoke_viii,invoke_v:invoke_v,invoke_viid:invoke_viid,invoke_idd:invoke_idd,invoke_viiii:invoke_viiii,_emscripten_asm_const_iiiii:_emscripten_asm_const_iiiii,_emscripten_asm_const_iiidddddd:_emscripten_asm_const_iiidddddd,_emscripten_asm_const_iiiid:_emscripten_asm_const_iiiid,__nbind_reference_external:__nbind_reference_external,_emscripten_asm_const_iiiiiiii:_emscripten_asm_const_iiiiiiii,_removeAccessorPrefix:_removeAccessorPrefix,_typeModule:_typeModule,__nbind_register_pool:__nbind_register_pool,__decorate:__decorate,_llvm_stackrestore:_llvm_stackrestore,___cxa_atexit:___cxa_atexit,__extends:__extends,__nbind_get_value_object:__nbind_get_value_object,__ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj:__ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj,_emscripten_set_main_loop_timing:_emscripten_set_main_loop_timing,__nbind_register_primitive:__nbind_register_primitive,__nbind_register_type:__nbind_register_type,_emscripten_memcpy_big:_emscripten_memcpy_big,__nbind_register_function:__nbind_register_function,___setErrNo:___setErrNo,__nbind_register_class:__nbind_register_class,__nbind_finish:__nbind_finish,_abort:_abort,_nbind_value:_nbind_value,_llvm_stacksave:_llvm_stacksave,___syscall54:___syscall54,_defineHidden:_defineHidden,_emscripten_set_main_loop:_emscripten_set_main_loop,_emscripten_get_now:_emscripten_get_now,__nbind_register_callback_signature:__nbind_register_callback_signature,_emscripten_asm_const_iiiiii:_emscripten_asm_const_iiiiii,__nbind_free_external:__nbind_free_external,_emscripten_asm_const_iiii:_emscripten_asm_const_iiii,_emscripten_asm_const_iiididi:_emscripten_asm_const_iiididi,___syscall6:___syscall6,_atexit:_atexit,___syscall140:___syscall140,___syscall146:___syscall146,DYNAMICTOP_PTR:DYNAMICTOP_PTR,tempDoublePtr:tempDoublePtr,ABORT:ABORT,STACKTOP:STACKTOP,STACK_MAX:STACK_MAX,cttz_i8:cttz_i8,___dso_handle:___dso_handle};var asm=function(g,I,e){"use asm";var t=new g.Int8Array(e);var C=new g.Int16Array(e);var Q=new g.Int32Array(e);var F=new g.Uint8Array(e);var B=new g.Uint16Array(e);var n=new g.Uint32Array(e);var U=new g.Float32Array(e);var s=new g.Float64Array(e);var i=I.DYNAMICTOP_PTR|0;var c=I.tempDoublePtr|0;var A=I.ABORT|0;var l=I.STACKTOP|0;var a=I.STACK_MAX|0;var r=I.cttz_i8|0;var o=I.___dso_handle|0;var d=0;var u=0;var y=0;var b=0;var Z=g.NaN,m=g.Infinity;var x=0,R=0,S=0,G=0,L=0.0;var V=0;var h=g.Math.floor;var D=g.Math.abs;var p=g.Math.sqrt;var E=g.Math.pow;var N=g.Math.cos;var W=g.Math.sin;var f=g.Math.tan;var X=g.Math.acos;var J=g.Math.asin;var v=g.Math.atan;var k=g.Math.atan2;var H=g.Math.exp;var M=g.Math.log;var Y=g.Math.ceil;var w=g.Math.imul;var T=g.Math.min;var z=g.Math.max;var O=g.Math.clz32;var K=g.Math.fround;var j=I.abort;var P=I.assert;var _=I.enlargeMemory;var q=I.getTotalMemory;var $=I.abortOnCannotGrowMemory;var gg=I.invoke_viiiii;var Ig=I.invoke_vif;var eg=I.invoke_vid;var tg=I.invoke_fiff;var Cg=I.invoke_vi;var Qg=I.invoke_vii;var Fg=I.invoke_ii;var Bg=I.invoke_viddi;var ng=I.invoke_vidd;var Ug=I.invoke_iiii;var sg=I.invoke_diii;var ig=I.invoke_di;var cg=I.invoke_iid;var Ag=I.invoke_iii;var lg=I.invoke_viiddi;var ag=I.invoke_viiiiii;var rg=I.invoke_dii;var og=I.invoke_i;var dg=I.invoke_iiiiii;var ug=I.invoke_viiid;var yg=I.invoke_viififi;var bg=I.invoke_viii;var Zg=I.invoke_v;var mg=I.invoke_viid;var xg=I.invoke_idd;var Rg=I.invoke_viiii;var Sg=I._emscripten_asm_const_iiiii;var Gg=I._emscripten_asm_const_iiidddddd;var Lg=I._emscripten_asm_const_iiiid;var Vg=I.__nbind_reference_external;var hg=I._emscripten_asm_const_iiiiiiii;var Dg=I._removeAccessorPrefix;var pg=I._typeModule;var Eg=I.__nbind_register_pool;var Ng=I.__decorate;var Wg=I._llvm_stackrestore;var fg=I.___cxa_atexit;var Xg=I.__extends;var Jg=I.__nbind_get_value_object;var vg=I.__ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj;var kg=I._emscripten_set_main_loop_timing;var Hg=I.__nbind_register_primitive;var Mg=I.__nbind_register_type;var Yg=I._emscripten_memcpy_big;var wg=I.__nbind_register_function;var Tg=I.___setErrNo;var zg=I.__nbind_register_class;var Og=I.__nbind_finish;var Kg=I._abort;var jg=I._nbind_value;var Pg=I._llvm_stacksave;var _g=I.___syscall54;var qg=I._defineHidden;var $g=I._emscripten_set_main_loop;var gI=I._emscripten_get_now;var II=I.__nbind_register_callback_signature;var eI=I._emscripten_asm_const_iiiiii;var tI=I.__nbind_free_external;var CI=I._emscripten_asm_const_iiii;var QI=I._emscripten_asm_const_iiididi;var FI=I.___syscall6;var BI=I._atexit;var nI=I.___syscall140;var UI=I.___syscall146;var sI=K(0);var iI=K(0);function cI(g){g=g|0;var I=0;I=l;l=l+g|0;l=l+15&-16;return I|0}function AI(){return l|0}function lI(g){g=g|0;l=g}function aI(g,I){g=g|0;I=I|0;l=g;a=I}function rI(g,I){g=g|0;I=I|0;if(!d){d=g;u=I}}function oI(g){g=g|0;V=g}function dI(){return V|0}function uI(){var g=0,I=0;tL(8104,8,400)|0;tL(8504,408,540)|0;g=9044;I=g+44|0;do{Q[g>>2]=0;g=g+4|0}while((g|0)<(I|0));t[9088]=0;t[9089]=1;Q[2273]=0;Q[2274]=948;Q[2275]=948;fg(17,8104,o|0)|0;return}function yI(g){g=g|0;TI(g+948|0);return}function bI(g){g=K(g);return((DC(g)|0)&2147483647)>>>0>2139095040|0}function ZI(g,I,e){g=g|0;I=I|0;e=e|0;g:do{if(!(Q[g+(I<<3)+4>>2]|0)){if((I|2|0)==3?Q[g+60>>2]|0:0){g=g+56|0;break}switch(I|0){case 0:case 2:case 4:case 5:{if(Q[g+52>>2]|0){g=g+48|0;break g}break}default:{}}if(!(Q[g+68>>2]|0)){g=(I|1|0)==5?948:e;break}else{g=g+64|0;break}}else g=g+(I<<3)|0}while(0);return g|0}function mI(g){g=g|0;var I=0;I=wS(1e3)|0;xI(g,(I|0)!=0,2456);Q[2276]=(Q[2276]|0)+1;tL(I|0,8104,1e3)|0;if(t[g+2>>0]|0){Q[I+4>>2]=2;Q[I+12>>2]=4}Q[I+976>>2]=g;return I|0}function xI(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0;C=l;l=l+16|0;t=C;if(!I){Q[t>>2]=e;ft(g,5,3197,t)}l=C;return}function RI(){return mI(956)|0}function SI(g){g=g|0;var I=0;I=zG(1e3)|0;GI(I,g);xI(Q[g+976>>2]|0,1,2456);Q[2276]=(Q[2276]|0)+1;Q[I+944>>2]=0;return I|0}function GI(g,I){g=g|0;I=I|0;var e=0;tL(g|0,I|0,948)|0;vt(g+948|0,I+948|0);e=g+960|0;g=I+960|0;I=e+40|0;do{Q[e>>2]=Q[g>>2];e=e+4|0;g=g+4|0}while((e|0)<(I|0));return}function LI(g){g=g|0;var I=0,e=0,t=0,C=0;I=g+944|0;e=Q[I>>2]|0;if(e|0){VI(e+948|0,g)|0;Q[I>>2]=0}e=hI(g)|0;if(e|0){I=0;do{Q[(DI(g,I)|0)+944>>2]=0;I=I+1|0}while((I|0)!=(e|0))}e=g+948|0;t=Q[e>>2]|0;C=g+952|0;I=Q[C>>2]|0;if((I|0)!=(t|0))Q[C>>2]=I+(~((I+-4-t|0)>>>2)<<2);pI(e);TS(g);Q[2276]=(Q[2276]|0)+-1;return}function VI(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0,n=0;t=Q[g>>2]|0;n=g+4|0;e=Q[n>>2]|0;F=e;g:do{if((t|0)==(e|0)){C=t;B=4}else{g=t;while(1){if((Q[g>>2]|0)==(I|0)){C=g;B=4;break g}g=g+4|0;if((g|0)==(e|0)){g=0;break}}}}while(0);if((B|0)==4)if((C|0)!=(e|0)){t=C+4|0;g=F-t|0;I=g>>2;if(I){nL(C|0,t|0,g|0)|0;e=Q[n>>2]|0}g=C+(I<<2)|0;if((e|0)==(g|0))g=1;else{Q[n>>2]=e+(~((e+-4-g|0)>>>2)<<2);g=1}}else g=0;return g|0}function hI(g){g=g|0;return(Q[g+952>>2]|0)-(Q[g+948>>2]|0)>>2|0}function DI(g,I){g=g|0;I=I|0;var e=0;e=Q[g+948>>2]|0;if((Q[g+952>>2]|0)-e>>2>>>0>I>>>0)g=Q[e+(I<<2)>>2]|0;else g=0;return g|0}function pI(g){g=g|0;var I=0,e=0,t=0,C=0;t=l;l=l+32|0;I=t;C=Q[g>>2]|0;e=(Q[g+4>>2]|0)-C|0;if(((Q[g+8>>2]|0)-C|0)>>>0>e>>>0){C=e>>2;pC(I,C,C,g+8|0);EC(g,I);NC(I)}l=t;return}function EI(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0,n=0,U=0,s=0;s=hI(g)|0;do{if(s|0){if((Q[(DI(g,0)|0)+944>>2]|0)==(g|0)){if(!(VI(g+948|0,I)|0))break;tL(I+400|0,8504,540)|0;Q[I+944>>2]=0;wI(g);break}B=Q[(Q[g+976>>2]|0)+12>>2]|0;n=g+948|0;U=(B|0)==0;e=0;F=0;do{t=Q[(Q[n>>2]|0)+(F<<2)>>2]|0;if((t|0)==(I|0))wI(g);else{C=SI(t)|0;Q[(Q[n>>2]|0)+(e<<2)>>2]=C;Q[C+944>>2]=g;if(!U)NV[B&15](t,C,g,e);e=e+1|0}F=F+1|0}while((F|0)!=(s|0));if(e>>>0<s>>>0){U=g+948|0;n=g+952|0;B=e;e=Q[n>>2]|0;do{F=(Q[U>>2]|0)+(B<<2)|0;t=F+4|0;C=e-t|0;I=C>>2;if(!I)C=e;else{nL(F|0,t|0,C|0)|0;e=Q[n>>2]|0;C=e}t=F+(I<<2)|0;if((C|0)!=(t|0)){e=C+(~((C+-4-t|0)>>>2)<<2)|0;Q[n>>2]=e}B=B+1|0}while((B|0)!=(s|0))}}}while(0);return}function NI(g){g=g|0;var I=0,e=0,C=0,F=0;WI(g,(hI(g)|0)==0,2491);WI(g,(Q[g+944>>2]|0)==0,2545);I=g+948|0;e=Q[I>>2]|0;C=g+952|0;F=Q[C>>2]|0;if((F|0)!=(e|0))Q[C>>2]=F+(~((F+-4-e|0)>>>2)<<2);pI(I);I=g+976|0;e=Q[I>>2]|0;tL(g|0,8104,1e3)|0;if(t[e+2>>0]|0){Q[g+4>>2]=2;Q[g+12>>2]=4}Q[I>>2]=e;return}function WI(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0;C=l;l=l+16|0;t=C;if(!I){Q[t>>2]=e;xt(g,5,3197,t)}l=C;return}function fI(){return Q[2276]|0}function XI(){var g=0;g=wS(20)|0;JI((g|0)!=0,2592);Q[2277]=(Q[2277]|0)+1;Q[g>>2]=Q[239];Q[g+4>>2]=Q[240];Q[g+8>>2]=Q[241];Q[g+12>>2]=Q[242];Q[g+16>>2]=Q[243];return g|0}function JI(g,I){g=g|0;I=I|0;var e=0,t=0;t=l;l=l+16|0;e=t;if(!g){Q[e>>2]=I;xt(0,5,3197,e)}l=t;return}function vI(g){g=g|0;TS(g);Q[2277]=(Q[2277]|0)+-1;return}function kI(g,I){g=g|0;I=I|0;var e=0;if(!I){e=0;I=0}else{WI(g,(hI(g)|0)==0,2629);e=1}Q[g+964>>2]=I;Q[g+988>>2]=e;return}function HI(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0;t=l;l=l+16|0;F=t+8|0;C=t+4|0;B=t;Q[C>>2]=I;WI(g,(Q[I+944>>2]|0)==0,2709);WI(g,(Q[g+964>>2]|0)==0,2763);MI(g);I=g+948|0;Q[B>>2]=(Q[I>>2]|0)+(e<<2);Q[F>>2]=Q[B>>2];YI(I,F,C)|0;Q[(Q[C>>2]|0)+944>>2]=g;wI(g);l=t;return}function MI(g){g=g|0;var I=0,e=0,t=0,C=0,F=0,B=0,n=0;e=hI(g)|0;if(e|0?(Q[(DI(g,0)|0)+944>>2]|0)!=(g|0):0){t=Q[(Q[g+976>>2]|0)+12>>2]|0;C=g+948|0;F=(t|0)==0;I=0;do{B=Q[(Q[C>>2]|0)+(I<<2)>>2]|0;n=SI(B)|0;Q[(Q[C>>2]|0)+(I<<2)>>2]=n;Q[n+944>>2]=g;if(!F)NV[t&15](B,n,g,I);I=I+1|0}while((I|0)!=(e|0))}return}function YI(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0,A=0,a=0,r=0,o=0,d=0,u=0;d=l;l=l+64|0;c=d+52|0;n=d+48|0;A=d+28|0;a=d+24|0;r=d+20|0;o=d;t=Q[g>>2]|0;F=t;I=t+((Q[I>>2]|0)-F>>2<<2)|0;t=g+4|0;C=Q[t>>2]|0;B=g+8|0;do{if(C>>>0<(Q[B>>2]|0)>>>0){if((I|0)==(C|0)){Q[I>>2]=Q[e>>2];Q[t>>2]=(Q[t>>2]|0)+4;break}WC(g,I,C,I+4|0);if(I>>>0<=e>>>0)e=(Q[t>>2]|0)>>>0>e>>>0?e+4|0:e;Q[I>>2]=Q[e>>2]}else{t=(C-F>>2)+1|0;C=Mt(g)|0;if(C>>>0<t>>>0)vG(g);i=Q[g>>2]|0;s=(Q[B>>2]|0)-i|0;F=s>>1;pC(o,s>>2>>>0<C>>>1>>>0?F>>>0<t>>>0?t:F:C,I-i>>2,g+8|0);i=o+8|0;t=Q[i>>2]|0;F=o+12|0;s=Q[F>>2]|0;B=s;U=t;do{if((t|0)==(s|0)){s=o+4|0;t=Q[s>>2]|0;u=Q[o>>2]|0;C=u;if(t>>>0<=u>>>0){t=B-C>>1;t=(t|0)==0?1:t;pC(A,t,t>>>2,Q[o+16>>2]|0);Q[a>>2]=Q[s>>2];Q[r>>2]=Q[i>>2];Q[n>>2]=Q[a>>2];Q[c>>2]=Q[r>>2];XC(A,n,c);t=Q[o>>2]|0;Q[o>>2]=Q[A>>2];Q[A>>2]=t;t=A+4|0;u=Q[s>>2]|0;Q[s>>2]=Q[t>>2];Q[t>>2]=u;t=A+8|0;u=Q[i>>2]|0;Q[i>>2]=Q[t>>2];Q[t>>2]=u;t=A+12|0;u=Q[F>>2]|0;Q[F>>2]=Q[t>>2];Q[t>>2]=u;NC(A);t=Q[i>>2]|0;break}F=t;B=((F-C>>2)+1|0)/-2|0;n=t+(B<<2)|0;C=U-F|0;F=C>>2;if(F){nL(n|0,t|0,C|0)|0;t=Q[s>>2]|0}u=n+(F<<2)|0;Q[i>>2]=u;Q[s>>2]=t+(B<<2);t=u}}while(0);Q[t>>2]=Q[e>>2];Q[i>>2]=(Q[i>>2]|0)+4;I=fC(g,o,I)|0;NC(o)}}while(0);l=d;return I|0}function wI(g){g=g|0;var I=0;do{I=g+984|0;if(t[I>>0]|0)break;t[I>>0]=1;U[g+504>>2]=K(Z);g=Q[g+944>>2]|0}while((g|0)!=0);return}function TI(g){g=g|0;var I=0,e=0,t=0;e=Q[g>>2]|0;t=e;if(e|0){g=g+4|0;I=Q[g>>2]|0;if((I|0)!=(e|0))Q[g>>2]=I+(~((I+-4-t|0)>>>2)<<2);KG(e)}return}function zI(g){g=g|0;return Q[g+944>>2]|0}function OI(g){g=g|0;WI(g,(Q[g+964>>2]|0)!=0,2832);wI(g);return}function KI(g){g=g|0;return(t[g+984>>0]|0)!=0|0}function jI(g,I){g=g|0;I=I|0;if(tG(g,I,400)|0){tL(g|0,I|0,400)|0;wI(g)}return}function PI(g){g=g|0;var I=iI;I=K(U[g+44>>2]);g=bI(I)|0;return K(g?K(0.0):I)}function _I(g){g=g|0;var I=iI;I=K(U[g+48>>2]);if(bI(I)|0)I=t[(Q[g+976>>2]|0)+2>>0]|0?K(1.0):K(0.0);return K(I)}function qI(g,I){g=g|0;I=I|0;Q[g+980>>2]=I;return}function $I(g){g=g|0;return Q[g+980>>2]|0}function ge(g,I){g=g|0;I=I|0;var e=0;e=g+4|0;if((Q[e>>2]|0)!=(I|0)){Q[e>>2]=I;wI(g)}return}function Ie(g){g=g|0;return Q[g+4>>2]|0}function ee(g,I){g=g|0;I=I|0;var e=0;e=g+8|0;if((Q[e>>2]|0)!=(I|0)){Q[e>>2]=I;wI(g)}return}function te(g){g=g|0;return Q[g+8>>2]|0}function Ce(g,I){g=g|0;I=I|0;var e=0;e=g+12|0;if((Q[e>>2]|0)!=(I|0)){Q[e>>2]=I;wI(g)}return}function Qe(g){g=g|0;return Q[g+12>>2]|0}function Fe(g,I){g=g|0;I=I|0;var e=0;e=g+16|0;if((Q[e>>2]|0)!=(I|0)){Q[e>>2]=I;wI(g)}return}function Be(g){g=g|0;return Q[g+16>>2]|0}function ne(g,I){g=g|0;I=I|0;var e=0;e=g+20|0;if((Q[e>>2]|0)!=(I|0)){Q[e>>2]=I;wI(g)}return}function Ue(g){g=g|0;return Q[g+20>>2]|0}function se(g,I){g=g|0;I=I|0;var e=0;e=g+24|0;if((Q[e>>2]|0)!=(I|0)){Q[e>>2]=I;wI(g)}return}function ie(g){g=g|0;return Q[g+24>>2]|0}function ce(g,I){g=g|0;I=I|0;var e=0;e=g+28|0;if((Q[e>>2]|0)!=(I|0)){Q[e>>2]=I;wI(g)}return}function Ae(g){g=g|0;return Q[g+28>>2]|0}function le(g,I){g=g|0;I=I|0;var e=0;e=g+32|0;if((Q[e>>2]|0)!=(I|0)){Q[e>>2]=I;wI(g)}return}function ae(g){g=g|0;return Q[g+32>>2]|0}function re(g,I){g=g|0;I=I|0;var e=0;e=g+36|0;if((Q[e>>2]|0)!=(I|0)){Q[e>>2]=I;wI(g)}return}function oe(g){g=g|0;return Q[g+36>>2]|0}function de(g,I){g=g|0;I=K(I);var e=0;e=g+40|0;if(K(U[e>>2])!=I){U[e>>2]=I;wI(g)}return}function ue(g,I){g=g|0;I=K(I);var e=0;e=g+44|0;if(K(U[e>>2])!=I){U[e>>2]=I;wI(g)}return}function ye(g,I){g=g|0;I=K(I);var e=0;e=g+48|0;if(K(U[e>>2])!=I){U[e>>2]=I;wI(g)}return}function be(g,I){g=g|0;I=K(I);var e=0,t=0,C=0,F=0;F=bI(I)|0;e=(F^1)&1;t=g+52|0;C=g+56|0;if(!(F|K(U[t>>2])==I?(Q[C>>2]|0)==(e|0):0)){U[t>>2]=I;Q[C>>2]=e;wI(g)}return}function Ze(g,I){g=g|0;I=K(I);var e=0,t=0;t=g+52|0;e=g+56|0;if(!(!(K(U[t>>2])!=I)?(Q[e>>2]|0)==2:0)){U[t>>2]=I;t=bI(I)|0;Q[e>>2]=t?3:2;wI(g)}return}function me(g,I){g=g|0;I=I|0;var e=0,t=0;t=I+52|0;e=Q[t+4>>2]|0;I=g;Q[I>>2]=Q[t>>2];Q[I+4>>2]=e;return}function xe(g,I,e){g=g|0;I=I|0;e=K(e);var t=0,C=0,F=0;F=bI(e)|0;t=(F^1)&1;C=g+132+(I<<3)|0;I=g+132+(I<<3)+4|0;if(!(F|K(U[C>>2])==e?(Q[I>>2]|0)==(t|0):0)){U[C>>2]=e;Q[I>>2]=t;wI(g)}return}function Re(g,I,e){g=g|0;I=I|0;e=K(e);var t=0,C=0,F=0;F=bI(e)|0;t=F?0:2;C=g+132+(I<<3)|0;I=g+132+(I<<3)+4|0;if(!(F|K(U[C>>2])==e?(Q[I>>2]|0)==(t|0):0)){U[C>>2]=e;Q[I>>2]=t;wI(g)}return}function Se(g,I,e){g=g|0;I=I|0;e=e|0;var t=0;t=I+132+(e<<3)|0;I=Q[t+4>>2]|0;e=g;Q[e>>2]=Q[t>>2];Q[e+4>>2]=I;return}function Ge(g,I,e){g=g|0;I=I|0;e=K(e);var t=0,C=0,F=0;F=bI(e)|0;t=(F^1)&1;C=g+60+(I<<3)|0;I=g+60+(I<<3)+4|0;if(!(F|K(U[C>>2])==e?(Q[I>>2]|0)==(t|0):0)){U[C>>2]=e;Q[I>>2]=t;wI(g)}return}function Le(g,I,e){g=g|0;I=I|0;e=K(e);var t=0,C=0,F=0;F=bI(e)|0;t=F?0:2;C=g+60+(I<<3)|0;I=g+60+(I<<3)+4|0;if(!(F|K(U[C>>2])==e?(Q[I>>2]|0)==(t|0):0)){U[C>>2]=e;Q[I>>2]=t;wI(g)}return}function Ve(g,I,e){g=g|0;I=I|0;e=e|0;var t=0;t=I+60+(e<<3)|0;I=Q[t+4>>2]|0;e=g;Q[e>>2]=Q[t>>2];Q[e+4>>2]=I;return}function he(g,I){g=g|0;I=I|0;var e=0;e=g+60+(I<<3)+4|0;if((Q[e>>2]|0)!=3){U[g+60+(I<<3)>>2]=K(Z);Q[e>>2]=3;wI(g)}return}function De(g,I,e){g=g|0;I=I|0;e=K(e);var t=0,C=0,F=0;F=bI(e)|0;t=(F^1)&1;C=g+204+(I<<3)|0;I=g+204+(I<<3)+4|0;if(!(F|K(U[C>>2])==e?(Q[I>>2]|0)==(t|0):0)){U[C>>2]=e;Q[I>>2]=t;wI(g)}return}function pe(g,I,e){g=g|0;I=I|0;e=K(e);var t=0,C=0,F=0;F=bI(e)|0;t=F?0:2;C=g+204+(I<<3)|0;I=g+204+(I<<3)+4|0;if(!(F|K(U[C>>2])==e?(Q[I>>2]|0)==(t|0):0)){U[C>>2]=e;Q[I>>2]=t;wI(g)}return}function Ee(g,I,e){g=g|0;I=I|0;e=e|0;var t=0;t=I+204+(e<<3)|0;I=Q[t+4>>2]|0;e=g;Q[e>>2]=Q[t>>2];Q[e+4>>2]=I;return}function Ne(g,I,e){g=g|0;I=I|0;e=K(e);var t=0,C=0,F=0;F=bI(e)|0;t=(F^1)&1;C=g+276+(I<<3)|0;I=g+276+(I<<3)+4|0;if(!(F|K(U[C>>2])==e?(Q[I>>2]|0)==(t|0):0)){U[C>>2]=e;Q[I>>2]=t;wI(g)}return}function We(g,I){g=g|0;I=I|0;return K(U[g+276+(I<<3)>>2])}function fe(g,I){g=g|0;I=K(I);var e=0,t=0,C=0,F=0;F=bI(I)|0;e=(F^1)&1;t=g+348|0;C=g+352|0;if(!(F|K(U[t>>2])==I?(Q[C>>2]|0)==(e|0):0)){U[t>>2]=I;Q[C>>2]=e;wI(g)}return}function Xe(g,I){g=g|0;I=K(I);var e=0,t=0;t=g+348|0;e=g+352|0;if(!(!(K(U[t>>2])!=I)?(Q[e>>2]|0)==2:0)){U[t>>2]=I;t=bI(I)|0;Q[e>>2]=t?3:2;wI(g)}return}function Je(g){g=g|0;var I=0;I=g+352|0;if((Q[I>>2]|0)!=3){U[g+348>>2]=K(Z);Q[I>>2]=3;wI(g)}return}function ve(g,I){g=g|0;I=I|0;var e=0,t=0;t=I+348|0;e=Q[t+4>>2]|0;I=g;Q[I>>2]=Q[t>>2];Q[I+4>>2]=e;return}function ke(g,I){g=g|0;I=K(I);var e=0,t=0,C=0,F=0;F=bI(I)|0;e=(F^1)&1;t=g+356|0;C=g+360|0;if(!(F|K(U[t>>2])==I?(Q[C>>2]|0)==(e|0):0)){U[t>>2]=I;Q[C>>2]=e;wI(g)}return}function He(g,I){g=g|0;I=K(I);var e=0,t=0;t=g+356|0;e=g+360|0;if(!(!(K(U[t>>2])!=I)?(Q[e>>2]|0)==2:0)){U[t>>2]=I;t=bI(I)|0;Q[e>>2]=t?3:2;wI(g)}return}function Me(g){g=g|0;var I=0;I=g+360|0;if((Q[I>>2]|0)!=3){U[g+356>>2]=K(Z);Q[I>>2]=3;wI(g)}return}function Ye(g,I){g=g|0;I=I|0;var e=0,t=0;t=I+356|0;e=Q[t+4>>2]|0;I=g;Q[I>>2]=Q[t>>2];Q[I+4>>2]=e;return}function we(g,I){g=g|0;I=K(I);var e=0,t=0,C=0,F=0;F=bI(I)|0;e=(F^1)&1;t=g+364|0;C=g+368|0;if(!(F|K(U[t>>2])==I?(Q[C>>2]|0)==(e|0):0)){U[t>>2]=I;Q[C>>2]=e;wI(g)}return}function Te(g,I){g=g|0;I=K(I);var e=0,t=0,C=0,F=0;F=bI(I)|0;e=F?0:2;t=g+364|0;C=g+368|0;if(!(F|K(U[t>>2])==I?(Q[C>>2]|0)==(e|0):0)){U[t>>2]=I;Q[C>>2]=e;wI(g)}return}function ze(g,I){g=g|0;I=I|0;var e=0,t=0;t=I+364|0;e=Q[t+4>>2]|0;I=g;Q[I>>2]=Q[t>>2];Q[I+4>>2]=e;return}function Oe(g,I){g=g|0;I=K(I);var e=0,t=0,C=0,F=0;F=bI(I)|0;e=(F^1)&1;t=g+372|0;C=g+376|0;if(!(F|K(U[t>>2])==I?(Q[C>>2]|0)==(e|0):0)){U[t>>2]=I;Q[C>>2]=e;wI(g)}return}function Ke(g,I){g=g|0;I=K(I);var e=0,t=0,C=0,F=0;F=bI(I)|0;e=F?0:2;t=g+372|0;C=g+376|0;if(!(F|K(U[t>>2])==I?(Q[C>>2]|0)==(e|0):0)){U[t>>2]=I;Q[C>>2]=e;wI(g)}return}function je(g,I){g=g|0;I=I|0;var e=0,t=0;t=I+372|0;e=Q[t+4>>2]|0;I=g;Q[I>>2]=Q[t>>2];Q[I+4>>2]=e;return}function Pe(g,I){g=g|0;I=K(I);var e=0,t=0,C=0,F=0;F=bI(I)|0;e=(F^1)&1;t=g+380|0;C=g+384|0;if(!(F|K(U[t>>2])==I?(Q[C>>2]|0)==(e|0):0)){U[t>>2]=I;Q[C>>2]=e;wI(g)}return}function _e(g,I){g=g|0;I=K(I);var e=0,t=0,C=0,F=0;F=bI(I)|0;e=F?0:2;t=g+380|0;C=g+384|0;if(!(F|K(U[t>>2])==I?(Q[C>>2]|0)==(e|0):0)){U[t>>2]=I;Q[C>>2]=e;wI(g)}return}function qe(g,I){g=g|0;I=I|0;var e=0,t=0;t=I+380|0;e=Q[t+4>>2]|0;I=g;Q[I>>2]=Q[t>>2];Q[I+4>>2]=e;return}function $e(g,I){g=g|0;I=K(I);var e=0,t=0,C=0,F=0;F=bI(I)|0;e=(F^1)&1;t=g+388|0;C=g+392|0;if(!(F|K(U[t>>2])==I?(Q[C>>2]|0)==(e|0):0)){U[t>>2]=I;Q[C>>2]=e;wI(g)}return}function gt(g,I){g=g|0;I=K(I);var e=0,t=0,C=0,F=0;F=bI(I)|0;e=F?0:2;t=g+388|0;C=g+392|0;if(!(F|K(U[t>>2])==I?(Q[C>>2]|0)==(e|0):0)){U[t>>2]=I;Q[C>>2]=e;wI(g)}return}function It(g,I){g=g|0;I=I|0;var e=0,t=0;t=I+388|0;e=Q[t+4>>2]|0;I=g;Q[I>>2]=Q[t>>2];Q[I+4>>2]=e;return}function et(g,I){g=g|0;I=K(I);var e=0;e=g+396|0;if(K(U[e>>2])!=I){U[e>>2]=I;wI(g)}return}function tt(g){g=g|0;return K(U[g+396>>2])}function Ct(g){g=g|0;return K(U[g+400>>2])}function Qt(g){g=g|0;return K(U[g+404>>2])}function Ft(g){g=g|0;return K(U[g+408>>2])}function Bt(g){g=g|0;return K(U[g+412>>2])}function nt(g){g=g|0;return K(U[g+416>>2])}function Ut(g){g=g|0;return K(U[g+420>>2])}function st(g,I){g=g|0;I=I|0;WI(g,(I|0)<6,2918);switch(I|0){case 0:{I=(Q[g+496>>2]|0)==2?5:4;break}case 2:{I=(Q[g+496>>2]|0)==2?4:5;break}default:{}}return K(U[g+424+(I<<2)>>2])}function it(g,I){g=g|0;I=I|0;WI(g,(I|0)<6,2918);switch(I|0){case 0:{I=(Q[g+496>>2]|0)==2?5:4;break}case 2:{I=(Q[g+496>>2]|0)==2?4:5;break}default:{}}return K(U[g+448+(I<<2)>>2])}function ct(g,I){g=g|0;I=I|0;WI(g,(I|0)<6,2918);switch(I|0){case 0:{I=(Q[g+496>>2]|0)==2?5:4;break}case 2:{I=(Q[g+496>>2]|0)==2?4:5;break}default:{}}return K(U[g+472+(I<<2)>>2])}function At(g,I){g=g|0;I=I|0;var e=0,t=iI;e=Q[g+4>>2]|0;if((e|0)==(Q[I+4>>2]|0)){if(!e)g=1;else{t=K(U[g>>2]);g=K(D(K(t-K(U[I>>2]))))<K(.0000999999974)}}else g=0;return g|0}function lt(g,I){g=K(g);I=K(I);var e=0;if(bI(g)|0)e=bI(I)|0;else e=K(D(K(g-I)))<K(.0000999999974);return e|0}function at(g,I){g=g|0;I=I|0;rt(g,I);return}function rt(g,I){g=g|0;I=I|0;var e=0,C=0;e=l;l=l+16|0;C=e+4|0;Q[C>>2]=0;Q[C+4>>2]=0;Q[C+8>>2]=0;vg(C|0,g|0,I|0,0);xt(g,3,(t[C+11>>0]|0)<0?Q[C>>2]|0:C,e);jG(C);l=e;return}function ot(g,I,e,t){g=K(g);I=K(I);e=e|0;t=t|0;var C=iI;g=K(g*I);C=K(fG(g,K(1.0)));do{if(!(lt(C,K(0.0))|0)){g=K(g-C);if(lt(C,K(1.0))|0){g=K(g+K(1.0));break}if(e){g=K(g+K(1.0));break}if(!t){if(C>K(.5))C=K(1.0);else{t=lt(C,K(.5))|0;C=t?K(1.0):K(0.0)}g=K(g+C)}}else g=K(g-C)}while(0);return K(g/I)}function dt(g,I,e,t,C,Q,F,B,n,s,i,c,A){g=g|0;I=K(I);e=e|0;t=K(t);C=C|0;Q=K(Q);F=F|0;B=K(B);n=K(n);s=K(s);i=K(i);c=K(c);A=A|0;var l=0,a=iI,r=iI,o=iI,d=iI,u=iI,y=iI;if(n<K(0.0)|s<K(0.0))A=0;else{if((A|0)!=0?(a=K(U[A+4>>2]),a!=K(0.0)):0){o=K(ot(I,a,0,0));d=K(ot(t,a,0,0));r=K(ot(Q,a,0,0));a=K(ot(B,a,0,0))}else{r=Q;o=I;a=B;d=t}if((C|0)==(g|0))l=lt(r,o)|0;else l=0;if((F|0)==(e|0))A=lt(a,d)|0;else A=0;if((!l?(u=K(I-i),!(ut(g,u,n)|0)):0)?!(yt(g,u,C,n)|0):0)l=bt(g,u,C,Q,n)|0;else l=1;if((!A?(y=K(t-c),!(ut(e,y,s)|0)):0)?!(yt(e,y,F,s)|0):0)A=bt(e,y,F,B,s)|0;else A=1;A=l&A}return A|0}function ut(g,I,e){g=g|0;I=K(I);e=K(e);if((g|0)==1)g=lt(I,e)|0;else g=0;return g|0}function yt(g,I,e,t){g=g|0;I=K(I);e=e|0;t=K(t);if((g|0)==2&(e|0)==0){if(!(I>=t))g=lt(I,t)|0;else g=1}else g=0;return g|0}function bt(g,I,e,t,C){g=g|0;I=K(I);e=e|0;t=K(t);C=K(C);if((g|0)==2&(e|0)==2&t>I){if(!(C<=I))g=lt(I,C)|0;else g=1}else g=0;return g|0}function Zt(g,I,e,C,F,B,n,i,c,A,a){g=g|0;I=K(I);e=K(e);C=C|0;F=F|0;B=B|0;n=K(n);i=K(i);c=c|0;A=A|0;a=a|0;var r=0,o=0,d=0,u=0,y=iI,b=iI,Z=0,m=0,x=0,R=0,S=0,G=0,L=0,V=0,h=0,D=0,p=0,E=iI,N=iI,W=iI,f=0.0,X=0.0;p=l;l=l+160|0;V=p+152|0;L=p+120|0;G=p+104|0;x=p+72|0;u=p+56|0;S=p+8|0;m=p;R=(Q[2279]|0)+1|0;Q[2279]=R;h=g+984|0;if((t[h>>0]|0)!=0?(Q[g+512>>2]|0)!=(Q[2278]|0):0)Z=4;else if((Q[g+516>>2]|0)==(C|0))D=0;else Z=4;if((Z|0)==4){Q[g+520>>2]=0;Q[g+924>>2]=-1;Q[g+928>>2]=-1;U[g+932>>2]=K(-1.0);U[g+936>>2]=K(-1.0);D=1}g:do{if(!(Q[g+964>>2]|0)){if(c){r=g+916|0;if(!(lt(K(U[r>>2]),I)|0)){Z=21;break}if(!(lt(K(U[g+920>>2]),e)|0)){Z=21;break}if((Q[g+924>>2]|0)!=(F|0)){Z=21;break}r=(Q[g+928>>2]|0)==(B|0)?r:0;Z=22;break}d=Q[g+520>>2]|0;if(!d)Z=21;else{o=0;while(1){r=g+524+(o*24|0)|0;if(((lt(K(U[r>>2]),I)|0?lt(K(U[g+524+(o*24|0)+4>>2]),e)|0:0)?(Q[g+524+(o*24|0)+8>>2]|0)==(F|0):0)?(Q[g+524+(o*24|0)+12>>2]|0)==(B|0):0){Z=22;break g}o=o+1|0;if(o>>>0>=d>>>0){Z=21;break}}}}else{y=K(mt(g,2,n));b=K(mt(g,0,n));r=g+916|0;W=K(U[r>>2]);N=K(U[g+920>>2]);E=K(U[g+932>>2]);if(!(dt(F,I,B,e,Q[g+924>>2]|0,W,Q[g+928>>2]|0,N,E,K(U[g+936>>2]),y,b,a)|0)){d=Q[g+520>>2]|0;if(!d)Z=21;else{o=0;while(1){r=g+524+(o*24|0)|0;E=K(U[r>>2]);N=K(U[g+524+(o*24|0)+4>>2]);W=K(U[g+524+(o*24|0)+16>>2]);if(dt(F,I,B,e,Q[g+524+(o*24|0)+8>>2]|0,E,Q[g+524+(o*24|0)+12>>2]|0,N,W,K(U[g+524+(o*24|0)+20>>2]),y,b,a)|0){Z=22;break g}o=o+1|0;if(o>>>0>=d>>>0){Z=21;break}}}}else Z=22}}while(0);do{if((Z|0)==21){if(!(t[11697]|0)){r=0;Z=31}else{r=0;Z=28}}else if((Z|0)==22){o=(t[11697]|0)!=0;if(!((r|0)!=0&(D^1)))if(o){Z=28;break}else{Z=31;break}u=r+16|0;Q[g+908>>2]=Q[u>>2];d=r+20|0;Q[g+912>>2]=Q[d>>2];if(!((t[11698]|0)==0|o^1)){Q[m>>2]=Rt(R)|0;Q[m+4>>2]=R;xt(g,4,2972,m);o=Q[g+972>>2]|0;if(o|0)AV[o&127](g);F=St(F,c)|0;B=St(B,c)|0;X=+K(U[u>>2]);f=+K(U[d>>2]);Q[S>>2]=F;Q[S+4>>2]=B;s[S+8>>3]=+I;s[S+16>>3]=+e;s[S+24>>3]=X;s[S+32>>3]=f;Q[S+40>>2]=A;xt(g,4,2989,S)}}}while(0);if((Z|0)==28){o=Rt(R)|0;Q[u>>2]=o;Q[u+4>>2]=R;Q[u+8>>2]=D?3047:11699;xt(g,4,3038,u);o=Q[g+972>>2]|0;if(o|0)AV[o&127](g);S=St(F,c)|0;Z=St(B,c)|0;Q[x>>2]=S;Q[x+4>>2]=Z;s[x+8>>3]=+I;s[x+16>>3]=+e;Q[x+24>>2]=A;xt(g,4,3049,x);Z=31}if((Z|0)==31){Gt(g,I,e,C,F,B,n,i,c,a);if(t[11697]|0){o=Q[2279]|0;S=Rt(o)|0;Q[G>>2]=S;Q[G+4>>2]=o;Q[G+8>>2]=D?3047:11699;xt(g,4,3083,G);o=Q[g+972>>2]|0;if(o|0)AV[o&127](g);S=St(F,c)|0;G=St(B,c)|0;f=+K(U[g+908>>2]);X=+K(U[g+912>>2]);Q[L>>2]=S;Q[L+4>>2]=G;s[L+8>>3]=f;s[L+16>>3]=X;Q[L+24>>2]=A;xt(g,4,3092,L)}Q[g+516>>2]=C;if(!r){o=g+520|0;r=Q[o>>2]|0;if((r|0)==16){if(t[11697]|0)xt(g,4,3124,V);Q[o>>2]=0;r=0}if(c)r=g+916|0;else{Q[o>>2]=r+1;r=g+524+(r*24|0)|0}U[r>>2]=I;U[r+4>>2]=e;Q[r+8>>2]=F;Q[r+12>>2]=B;Q[r+16>>2]=Q[g+908>>2];Q[r+20>>2]=Q[g+912>>2];r=0}}if(c){Q[g+416>>2]=Q[g+908>>2];Q[g+420>>2]=Q[g+912>>2];t[g+985>>0]=1;t[h>>0]=0}Q[2279]=(Q[2279]|0)+-1;Q[g+512>>2]=Q[2278];l=p;return D|(r|0)==0|0}function mt(g,I,e){g=g|0;I=I|0;e=K(e);var t=iI;t=K(Yt(g,I,e));return K(t+K(wt(g,I,e)))}function xt(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0,F=0;F=l;l=l+16|0;C=F;Q[C>>2]=t;if(!g)t=0;else t=Q[g+976>>2]|0;Xt(t,g,I,e,C);l=F;return}function Rt(g){g=g|0;return(g>>>0>60?3201:3201+(60-g)|0)|0}function St(g,I){g=g|0;I=I|0;var e=0,t=0,C=0;C=l;l=l+32|0;e=C+12|0;t=C;Q[e>>2]=Q[254];Q[e+4>>2]=Q[255];Q[e+8>>2]=Q[256];Q[t>>2]=Q[257];Q[t+4>>2]=Q[258];Q[t+8>>2]=Q[259];if((g|0)>2)g=11699;else g=Q[(I?t:e)+(g<<2)>>2]|0;l=C;return g|0}function Gt(g,I,e,C,B,n,s,i,A,a){g=g|0;I=K(I);e=K(e);C=C|0;B=B|0;n=n|0;s=K(s);i=K(i);A=A|0;a=a|0;var r=0,o=0,d=0,u=0,y=iI,b=iI,Z=iI,m=iI,x=iI,R=iI,S=iI,G=0,L=0,V=0,h=iI,D=iI,p=0,E=iI,N=0,W=0,f=0,X=0,J=0,v=0,k=0,H=0,M=0,Y=0,w=0,T=0,z=0,O=0,j=0,P=0,_=0,q=0,$=iI,gg=iI,Ig=iI,eg=iI,tg=iI,Cg=0,Qg=0,Fg=0,Bg=0,ng=0,Ug=iI,sg=iI,ig=iI,cg=iI,Ag=iI,lg=iI,ag=0,rg=iI,og=iI,dg=iI,ug=iI,yg=iI,bg=iI,Zg=0,mg=0,xg=iI,Rg=iI,Sg=0,Gg=0,Lg=0,Vg=0,hg=iI,Dg=0,pg=0,Eg=0,Ng=0,Wg=0,fg=0,Xg=0,Jg=iI,vg=0,kg=0;Xg=l;l=l+16|0;Cg=Xg+12|0;Qg=Xg+8|0;Fg=Xg+4|0;Bg=Xg;WI(g,(B|0)==0|(bI(I)|0)^1,3326);WI(g,(n|0)==0|(bI(e)|0)^1,3406);pg=Ot(g,C)|0;Q[g+496>>2]=pg;Wg=Kt(2,pg)|0;fg=Kt(0,pg)|0;U[g+440>>2]=K(Yt(g,Wg,s));U[g+444>>2]=K(wt(g,Wg,s));U[g+428>>2]=K(Yt(g,fg,s));U[g+436>>2]=K(wt(g,fg,s));U[g+464>>2]=K(jt(g,Wg));U[g+468>>2]=K(Pt(g,Wg));U[g+452>>2]=K(jt(g,fg));U[g+460>>2]=K(Pt(g,fg));U[g+488>>2]=K(_t(g,Wg,s));U[g+492>>2]=K(qt(g,Wg,s));U[g+476>>2]=K(_t(g,fg,s));U[g+484>>2]=K(qt(g,fg,s));do{if(!(Q[g+964>>2]|0)){Eg=g+948|0;Ng=(Q[g+952>>2]|0)-(Q[Eg>>2]|0)>>2;if(!Ng){gC(g,I,e,B,n,s,i);break}if(!A?IC(g,I,e,B,n,s,i)|0:0)break;MI(g);P=g+508|0;t[P>>0]=0;Wg=Kt(Q[g+4>>2]|0,pg)|0;fg=eC(Wg,pg)|0;Dg=Tt(Wg)|0;_=Q[g+8>>2]|0;Gg=g+28|0;q=(Q[Gg>>2]|0)!=0;yg=Dg?s:i;xg=Dg?i:s;$=K(tC(g,Wg,s));gg=K(CC(g,Wg,s));y=K(tC(g,fg,s));bg=K(QC(g,Wg,s));Rg=K(QC(g,fg,s));V=Dg?B:n;Sg=Dg?n:B;hg=Dg?bg:Rg;x=Dg?Rg:bg;ug=K(mt(g,2,s));m=K(mt(g,0,s));b=K(K(pt(g+364|0,s))-hg);Z=K(K(pt(g+380|0,s))-hg);R=K(K(pt(g+372|0,i))-x);S=K(K(pt(g+388|0,i))-x);Ig=Dg?b:R;eg=Dg?Z:S;ug=K(I-ug);I=K(ug-hg);if(bI(I)|0)hg=I;else hg=K(pG(K(NG(I,Z)),b));og=K(e-m);I=K(og-x);if(bI(I)|0)dg=I;else dg=K(pG(K(NG(I,S)),R));b=Dg?hg:dg;rg=Dg?dg:hg;g:do{if((V|0)==1){C=0;o=0;while(1){r=DI(g,o)|0;if(!C){if(K(BC(r))>K(0.0)?K(nC(r))>K(0.0):0)C=r;else C=0}else if(FC(r)|0){u=0;break g}o=o+1|0;if(o>>>0>=Ng>>>0){u=C;break}}}else u=0}while(0);G=u+500|0;L=u+504|0;C=0;r=0;I=K(0.0);d=0;do{o=Q[(Q[Eg>>2]|0)+(d<<2)>>2]|0;if((Q[o+36>>2]|0)==1){UC(o);t[o+985>>0]=1;t[o+984>>0]=0}else{ht(o);if(A)Et(o,Ot(o,pg)|0,b,rg,hg);do{if((Q[o+24>>2]|0)!=1){if((o|0)==(u|0)){Q[G>>2]=Q[2278];U[L>>2]=K(0.0);break}else{sC(g,o,hg,B,dg,hg,dg,n,pg,a);break}}else{if(r|0)Q[r+960>>2]=o;Q[o+960>>2]=0;r=o;C=(C|0)==0?o:C}}while(0);lg=K(U[o+504>>2]);I=K(I+K(lg+K(mt(o,Wg,hg))))}d=d+1|0}while((d|0)!=(Ng|0));f=I>b;ag=q&((V|0)==2&f)?1:V;N=(Sg|0)==1;J=N&(A^1);v=(ag|0)==1;k=(ag|0)==2;H=976+(Wg<<2)|0;M=(Sg|2|0)==2;O=N&(q^1);Y=1040+(fg<<2)|0;w=1040+(Wg<<2)|0;T=976+(fg<<2)|0;z=(Sg|0)!=1;f=q&((V|0)!=0&f);W=g+976|0;N=N^1;I=b;p=0;X=0;lg=K(0.0);tg=K(0.0);while(1){g:do{if(p>>>0<Ng>>>0){L=Q[Eg>>2]|0;d=0;S=K(0.0);R=K(0.0);Z=K(0.0);b=K(0.0);o=0;r=0;u=p;while(1){G=Q[L+(u<<2)>>2]|0;if((Q[G+36>>2]|0)!=1?(Q[G+940>>2]=X,(Q[G+24>>2]|0)!=1):0){m=K(mt(G,Wg,hg));j=Q[H>>2]|0;e=K(pt(G+380+(j<<3)|0,yg));x=K(U[G+504>>2]);e=K(NG(e,x));e=K(pG(K(pt(G+364+(j<<3)|0,yg)),e));if(q&(d|0)!=0&K(m+K(R+e))>I){n=d;m=S;V=u;break g}m=K(m+e);e=K(R+m);m=K(S+m);if(FC(G)|0){Z=K(Z+K(BC(G)));b=K(b-K(x*K(nC(G))))}if(r|0)Q[r+960>>2]=G;Q[G+960>>2]=0;d=d+1|0;r=G;o=(o|0)==0?G:o}else{m=S;e=R}u=u+1|0;if(u>>>0<Ng>>>0){S=m;R=e}else{n=d;V=u;break}}}else{n=0;m=K(0.0);Z=K(0.0);b=K(0.0);o=0;V=p}}while(0);j=Z>K(0.0)&Z<K(1.0);h=j?K(1.0):Z;j=b>K(0.0)&b<K(1.0);S=j?K(1.0):b;do{if(!v){if(!(m<Ig&((bI(Ig)|0)^1))){if(!(m>eg&((bI(eg)|0)^1))){if(!(t[(Q[W>>2]|0)+3>>0]|0)){if(!(h==K(0.0))?!(K(BC(g))==K(0.0)):0){j=53;break}I=m;j=53}else j=51}else{I=eg;j=51}}else{I=Ig;j=51}}else j=51}while(0);if((j|0)==51){j=0;if(bI(I)|0)j=53;else{D=K(I-m);E=I}}if((j|0)==53){j=0;if(m<K(0.0)){D=K(-m);E=I}else{D=K(0.0);E=I}}if(!J?(ng=(o|0)==0,!ng):0){d=Q[H>>2]|0;u=D<K(0.0);x=K(D/S);G=D>K(0.0);R=K(D/h);Z=K(0.0);m=K(0.0);I=K(0.0);r=o;do{e=K(pt(r+380+(d<<3)|0,yg));b=K(pt(r+364+(d<<3)|0,yg));b=K(NG(e,K(pG(b,K(U[r+504>>2])))));if(u){e=K(b*K(nC(r)));if(e!=K(-0.0)?(Jg=K(b-K(x*e)),Ug=K(iC(r,Wg,Jg,E,hg)),Jg!=Ug):0){Z=K(Z-K(Ug-b));I=K(I+e)}}else if((G?(sg=K(BC(r)),sg!=K(0.0)):0)?(Jg=K(b+K(R*sg)),ig=K(iC(r,Wg,Jg,E,hg)),Jg!=ig):0){Z=K(Z-K(ig-b));m=K(m-sg)}r=Q[r+960>>2]|0}while((r|0)!=0);I=K(S+I);b=K(D+Z);if(!ng){x=K(h+m);u=Q[H>>2]|0;G=b<K(0.0);L=I==K(0.0);R=K(b/I);d=b>K(0.0);x=K(b/x);I=K(0.0);do{Jg=K(pt(o+380+(u<<3)|0,yg));Z=K(pt(o+364+(u<<3)|0,yg));Z=K(NG(Jg,K(pG(Z,K(U[o+504>>2])))));if(G){Jg=K(Z*K(nC(o)));b=K(-Jg);if(Jg!=K(-0.0)){Jg=K(R*b);b=K(iC(o,Wg,K(Z+(L?b:Jg)),E,hg))}else b=Z}else if(d?(cg=K(BC(o)),cg!=K(0.0)):0)b=K(iC(o,Wg,K(Z+K(x*cg)),E,hg));else b=Z;I=K(I-K(b-Z));m=K(mt(o,Wg,hg));e=K(mt(o,fg,hg));b=K(b+m);U[Qg>>2]=b;Q[Bg>>2]=1;Z=K(U[o+396>>2]);g:do{if(bI(Z)|0){r=bI(rg)|0;do{if(!r){if(f|(Dt(o,fg,rg)|0|N))break;if((cC(g,o)|0)!=4)break;if((Q[(AC(o,fg)|0)+4>>2]|0)==3)break;if((Q[(lC(o,fg)|0)+4>>2]|0)==3)break;U[Cg>>2]=rg;Q[Fg>>2]=1;break g}}while(0);if(Dt(o,fg,rg)|0){r=Q[o+992+(Q[T>>2]<<2)>>2]|0;Jg=K(e+K(pt(r,rg)));U[Cg>>2]=Jg;r=z&(Q[r+4>>2]|0)==2;Q[Fg>>2]=((bI(Jg)|0|r)^1)&1;break}else{U[Cg>>2]=rg;Q[Fg>>2]=r?0:2;break}}else{Jg=K(b-m);h=K(Jg/Z);Jg=K(Z*Jg);Q[Fg>>2]=1;U[Cg>>2]=K(e+(Dg?h:Jg))}}while(0);aC(o,Wg,E,hg,Bg,Qg);aC(o,fg,rg,hg,Fg,Cg);do{if(!(Dt(o,fg,rg)|0)?(cC(g,o)|0)==4:0){if((Q[(AC(o,fg)|0)+4>>2]|0)==3){r=0;break}r=(Q[(lC(o,fg)|0)+4>>2]|0)!=3}else r=0}while(0);Jg=K(U[Qg>>2]);h=K(U[Cg>>2]);vg=Q[Bg>>2]|0;kg=Q[Fg>>2]|0;Zt(o,Dg?Jg:h,Dg?h:Jg,pg,Dg?vg:kg,Dg?kg:vg,hg,dg,A&(r^1),3488,a)|0;t[P>>0]=t[P>>0]|t[o+508>>0];o=Q[o+960>>2]|0}while((o|0)!=0)}else I=K(0.0)}else I=K(0.0);I=K(D+I);kg=I<K(0.0)&1;t[P>>0]=kg|F[P>>0];if(k&I>K(0.0)){r=Q[H>>2]|0;if((Q[g+364+(r<<3)+4>>2]|0)!=0?(Ag=K(pt(g+364+(r<<3)|0,yg)),Ag>=K(0.0)):0)b=K(pG(K(0.0),K(Ag-K(E-I))));else b=K(0.0)}else b=I;G=p>>>0<V>>>0;if(G){u=Q[Eg>>2]|0;d=p;r=0;do{o=Q[u+(d<<2)>>2]|0;if(!(Q[o+24>>2]|0)){r=((Q[(AC(o,Wg)|0)+4>>2]|0)==3&1)+r|0;r=r+((Q[(lC(o,Wg)|0)+4>>2]|0)==3&1)|0}d=d+1|0}while((d|0)!=(V|0));if(r){m=K(0.0);e=K(0.0)}else j=101}else j=101;g:do{if((j|0)==101){j=0;switch(_|0){case 1:{r=0;m=K(b*K(.5));e=K(0.0);break g}case 2:{r=0;m=b;e=K(0.0);break g}case 3:{if(n>>>0<=1){r=0;m=K(0.0);e=K(0.0);break g}e=K((n+-1|0)>>>0);r=0;m=K(0.0);e=K(K(pG(b,K(0.0)))/e);break g}case 5:{e=K(b/K((n+1|0)>>>0));r=0;m=e;break g}case 4:{e=K(b/K(n>>>0));r=0;m=K(e*K(.5));break g}default:{r=0;m=K(0.0);e=K(0.0);break g}}}}while(0);I=K($+m);if(G){Z=K(b/K(r|0));d=Q[Eg>>2]|0;o=p;b=K(0.0);do{r=Q[d+(o<<2)>>2]|0;g:do{if((Q[r+36>>2]|0)!=1){switch(Q[r+24>>2]|0){case 1:{if(rC(r,Wg)|0){if(!A)break g;Jg=K(oC(r,Wg,E));Jg=K(Jg+K(jt(g,Wg)));Jg=K(Jg+K(Yt(r,Wg,hg)));U[r+400+(Q[w>>2]<<2)>>2]=Jg;break g}break}case 0:{kg=(Q[(AC(r,Wg)|0)+4>>2]|0)==3;Jg=K(Z+I);I=kg?Jg:I;if(A){kg=r+400+(Q[w>>2]<<2)|0;U[kg>>2]=K(I+K(U[kg>>2]))}kg=(Q[(lC(r,Wg)|0)+4>>2]|0)==3;Jg=K(Z+I);I=kg?Jg:I;if(J){Jg=K(e+K(mt(r,Wg,hg)));b=rg;I=K(I+K(Jg+K(U[r+504>>2])));break g}else{I=K(I+K(e+K(dC(r,Wg,hg))));b=K(pG(b,K(dC(r,fg,hg))));break g}}default:{}}if(A){Jg=K(m+K(jt(g,Wg)));kg=r+400+(Q[w>>2]<<2)|0;U[kg>>2]=K(Jg+K(U[kg>>2]))}}}while(0);o=o+1|0}while((o|0)!=(V|0))}else b=K(0.0);e=K(gg+I);if(M)m=K(K(iC(g,fg,K(Rg+b),xg,s))-Rg);else m=rg;Z=K(K(iC(g,fg,K(Rg+(O?rg:b)),xg,s))-Rg);if(G&A){o=p;do{d=Q[(Q[Eg>>2]|0)+(o<<2)>>2]|0;do{if((Q[d+36>>2]|0)!=1){if((Q[d+24>>2]|0)==1){if(rC(d,fg)|0){Jg=K(oC(d,fg,rg));Jg=K(Jg+K(jt(g,fg)));Jg=K(Jg+K(Yt(d,fg,hg)));r=Q[Y>>2]|0;U[d+400+(r<<2)>>2]=Jg;if(!(bI(Jg)|0))break}else r=Q[Y>>2]|0;Jg=K(jt(g,fg));U[d+400+(r<<2)>>2]=K(Jg+K(Yt(d,fg,hg)));break}r=cC(g,d)|0;do{if((r|0)==4){if((Q[(AC(d,fg)|0)+4>>2]|0)==3){j=139;break}if((Q[(lC(d,fg)|0)+4>>2]|0)==3){j=139;break}if(Dt(d,fg,rg)|0){I=y;break}vg=Q[d+908+(Q[H>>2]<<2)>>2]|0;Q[Cg>>2]=vg;I=K(U[d+396>>2]);kg=bI(I)|0;b=(Q[c>>2]=vg,K(U[c>>2]));if(kg)I=Z;else{D=K(mt(d,fg,hg));Jg=K(b/I);I=K(I*b);I=K(D+(Dg?Jg:I))}U[Qg>>2]=I;U[Cg>>2]=K(K(mt(d,Wg,hg))+b);Q[Fg>>2]=1;Q[Bg>>2]=1;aC(d,Wg,E,hg,Fg,Cg);aC(d,fg,rg,hg,Bg,Qg);I=K(U[Cg>>2]);D=K(U[Qg>>2]);Jg=Dg?I:D;I=Dg?D:I;kg=((bI(Jg)|0)^1)&1;Zt(d,Jg,I,pg,kg,((bI(I)|0)^1)&1,hg,dg,1,3493,a)|0;I=y}else j=139}while(0);g:do{if((j|0)==139){j=0;I=K(m-K(dC(d,fg,hg)));do{if((Q[(AC(d,fg)|0)+4>>2]|0)==3){if((Q[(lC(d,fg)|0)+4>>2]|0)!=3)break;I=K(y+K(pG(K(0.0),K(I*K(.5)))));break g}}while(0);if((Q[(lC(d,fg)|0)+4>>2]|0)==3){I=y;break}if((Q[(AC(d,fg)|0)+4>>2]|0)==3){I=K(y+K(pG(K(0.0),I)));break}switch(r|0){case 1:{I=y;break g}case 2:{I=K(y+K(I*K(.5)));break g}default:{I=K(y+I);break g}}}}while(0);Jg=K(lg+I);kg=d+400+(Q[Y>>2]<<2)|0;U[kg>>2]=K(Jg+K(U[kg>>2]))}}while(0);o=o+1|0}while((o|0)!=(V|0))}lg=K(lg+Z);tg=K(pG(tg,e));n=X+1|0;if(V>>>0>=Ng>>>0)break;else{I=E;p=V;X=n}}do{if(A){r=n>>>0>1;if(!r?!(uC(g)|0):0)break;if(!(bI(rg)|0)){I=K(rg-lg);g:do{switch(Q[g+12>>2]|0){case 3:{y=K(y+I);R=K(0.0);break}case 2:{y=K(y+K(I*K(.5)));R=K(0.0);break}case 4:{if(rg>lg)R=K(I/K(n>>>0));else R=K(0.0);break}case 7:if(rg>lg){y=K(y+K(I/K(n<<1>>>0)));R=K(I/K(n>>>0));R=r?R:K(0.0);break g}else{y=K(y+K(I*K(.5)));R=K(0.0);break g}case 6:{R=K(I/K(X>>>0));R=rg>lg&r?R:K(0.0);break}default:R=K(0.0)}}while(0);if(n|0){G=1040+(fg<<2)|0;L=976+(fg<<2)|0;u=0;o=0;while(1){g:do{if(o>>>0<Ng>>>0){b=K(0.0);Z=K(0.0);I=K(0.0);d=o;while(1){r=Q[(Q[Eg>>2]|0)+(d<<2)>>2]|0;do{if((Q[r+36>>2]|0)!=1?(Q[r+24>>2]|0)==0:0){if((Q[r+940>>2]|0)!=(u|0))break g;if(yC(r,fg)|0){Jg=K(U[r+908+(Q[L>>2]<<2)>>2]);I=K(pG(I,K(Jg+K(mt(r,fg,hg)))))}if((cC(g,r)|0)!=5)break;Ag=K(bC(r));Ag=K(Ag+K(Yt(r,0,hg)));Jg=K(U[r+912>>2]);Jg=K(K(Jg+K(mt(r,0,hg)))-Ag);Ag=K(pG(Z,Ag));Jg=K(pG(b,Jg));b=Jg;Z=Ag;I=K(pG(I,K(Ag+Jg)))}}while(0);r=d+1|0;if(r>>>0<Ng>>>0)d=r;else{d=r;break}}}else{Z=K(0.0);I=K(0.0);d=o}}while(0);x=K(R+I);e=y;y=K(y+x);if(o>>>0<d>>>0){m=K(e+Z);r=o;do{o=Q[(Q[Eg>>2]|0)+(r<<2)>>2]|0;g:do{if((Q[o+36>>2]|0)!=1?(Q[o+24>>2]|0)==0:0)switch(cC(g,o)|0){case 1:{Jg=K(e+K(Yt(o,fg,hg)));U[o+400+(Q[G>>2]<<2)>>2]=Jg;break g}case 3:{Jg=K(K(y-K(wt(o,fg,hg)))-K(U[o+908+(Q[L>>2]<<2)>>2]));U[o+400+(Q[G>>2]<<2)>>2]=Jg;break g}case 2:{Jg=K(e+K(K(x-K(U[o+908+(Q[L>>2]<<2)>>2]))*K(.5)));U[o+400+(Q[G>>2]<<2)>>2]=Jg;break g}case 4:{Jg=K(e+K(Yt(o,fg,hg)));U[o+400+(Q[G>>2]<<2)>>2]=Jg;if(Dt(o,fg,rg)|0)break g;if(Dg){b=K(U[o+908>>2]);I=K(b+K(mt(o,Wg,hg)));Z=x}else{Z=K(U[o+912>>2]);Z=K(Z+K(mt(o,fg,hg)));I=x;b=K(U[o+908>>2])}if(lt(I,b)|0?lt(Z,K(U[o+912>>2]))|0:0)break g;Zt(o,I,Z,pg,1,1,hg,dg,1,3501,a)|0;break g}case 5:{U[o+404>>2]=K(K(m-K(bC(o)))+K(oC(o,0,rg)));break g}default:break g}}while(0);r=r+1|0}while((r|0)!=(d|0))}u=u+1|0;if((u|0)==(n|0))break;else o=d}}}}}while(0);U[g+908>>2]=K(iC(g,2,ug,s,s));U[g+912>>2]=K(iC(g,0,og,i,s));if((ag|0)!=0?(Zg=Q[g+32>>2]|0,mg=(ag|0)==2,!(mg&(Zg|0)!=2)):0){if(mg&(Zg|0)==2){I=K(bg+E);I=K(pG(K(NG(I,K(ZC(g,Wg,tg,yg)))),bg));j=198}}else{I=K(iC(g,Wg,tg,yg,s));j=198}if((j|0)==198)U[g+908+(Q[976+(Wg<<2)>>2]<<2)>>2]=I;if((Sg|0)!=0?(Lg=Q[g+32>>2]|0,Vg=(Sg|0)==2,!(Vg&(Lg|0)!=2)):0){if(Vg&(Lg|0)==2){I=K(Rg+rg);I=K(pG(K(NG(I,K(ZC(g,fg,K(Rg+lg),xg)))),Rg));j=204}}else{I=K(iC(g,fg,K(Rg+lg),xg,s));j=204}if((j|0)==204)U[g+908+(Q[976+(fg<<2)>>2]<<2)>>2]=I;if(A){if((Q[Gg>>2]|0)==2){o=976+(fg<<2)|0;d=1040+(fg<<2)|0;r=0;do{u=DI(g,r)|0;if(!(Q[u+24>>2]|0)){vg=Q[o>>2]|0;Jg=K(U[g+908+(vg<<2)>>2]);kg=u+400+(Q[d>>2]<<2)|0;Jg=K(Jg-K(U[kg>>2]));U[kg>>2]=K(Jg-K(U[u+908+(vg<<2)>>2]))}r=r+1|0}while((r|0)!=(Ng|0))}if(C|0){r=Dg?ag:B;do{mC(g,C,hg,r,dg,pg,a);C=Q[C+960>>2]|0}while((C|0)!=0)}r=(Wg|2|0)==3;o=(fg|2|0)==3;if(r|o){C=0;do{d=Q[(Q[Eg>>2]|0)+(C<<2)>>2]|0;if((Q[d+36>>2]|0)!=1){if(r)xC(g,d,Wg);if(o)xC(g,d,fg)}C=C+1|0}while((C|0)!=(Ng|0))}}}else $t(g,I,e,B,n,s,i)}while(0);l=Xg;return}function Lt(g,I){g=g|0;I=K(I);var e=0;xI(g,I>=K(0.0),3147);e=I==K(0.0);U[g+4>>2]=e?K(0.0):I;return}function Vt(g,I,e,C){g=g|0;I=K(I);e=K(e);C=C|0;var F=iI,B=iI,n=0,s=0,i=0;Q[2278]=(Q[2278]|0)+1;ht(g);if(!(Dt(g,2,I)|0)){F=K(pt(g+380|0,I));if(!(F>=K(0.0))){i=((bI(I)|0)^1)&1;F=I}else i=2}else{F=K(pt(Q[g+992>>2]|0,I));i=1;F=K(F+K(mt(g,2,I)))}if(!(Dt(g,0,e)|0)){B=K(pt(g+388|0,e));if(!(B>=K(0.0))){s=((bI(e)|0)^1)&1;B=e}else s=2}else{B=K(pt(Q[g+996>>2]|0,e));s=1;B=K(B+K(mt(g,0,I)))}n=g+976|0;if(Zt(g,F,B,C,i,s,I,e,1,3189,Q[n>>2]|0)|0?(Et(g,Q[g+496>>2]|0,I,e,I),Nt(g,K(U[(Q[n>>2]|0)+4>>2]),K(0.0),K(0.0)),t[11696]|0):0)at(g,7);return}function ht(g){g=g|0;var I=0,e=0,t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0;n=l;l=l+32|0;B=n+24|0;F=n+16|0;t=n+8|0;C=n;e=0;do{I=g+380+(e<<3)|0;if(!((Q[g+380+(e<<3)+4>>2]|0)!=0?(U=I,s=Q[U+4>>2]|0,i=t,Q[i>>2]=Q[U>>2],Q[i+4>>2]=s,i=g+364+(e<<3)|0,s=Q[i+4>>2]|0,U=C,Q[U>>2]=Q[i>>2],Q[U+4>>2]=s,Q[F>>2]=Q[t>>2],Q[F+4>>2]=Q[t+4>>2],Q[B>>2]=Q[C>>2],Q[B+4>>2]=Q[C+4>>2],At(F,B)|0):0))I=g+348+(e<<3)|0;Q[g+992+(e<<2)>>2]=I;e=e+1|0}while((e|0)!=2);l=n;return}function Dt(g,I,e){g=g|0;I=I|0;e=K(e);var t=0;g=Q[g+992+(Q[976+(I<<2)>>2]<<2)>>2]|0;switch(Q[g+4>>2]|0){case 0:case 3:{g=0;break}case 1:{if(K(U[g>>2])<K(0.0))g=0;else t=5;break}case 2:{if(K(U[g>>2])<K(0.0))g=0;else g=(bI(e)|0)^1;break}default:t=5}if((t|0)==5)g=1;return g|0}function pt(g,I){g=g|0;I=K(I);switch(Q[g+4>>2]|0){case 2:{I=K(K(K(U[g>>2])*I)/K(100.0));break}case 1:{I=K(U[g>>2]);break}default:I=K(Z)}return K(I)}function Et(g,I,e,t,C){g=g|0;I=I|0;e=K(e);t=K(t);C=K(C);var F=0,B=iI;I=Q[g+944>>2]|0?I:1;F=Kt(Q[g+4>>2]|0,I)|0;I=eC(F,I)|0;e=K(hC(g,F,e));t=K(hC(g,I,t));B=K(e+K(Yt(g,F,C)));U[g+400+(Q[1040+(F<<2)>>2]<<2)>>2]=B;e=K(e+K(wt(g,F,C)));U[g+400+(Q[1e3+(F<<2)>>2]<<2)>>2]=e;e=K(t+K(Yt(g,I,C)));U[g+400+(Q[1040+(I<<2)>>2]<<2)>>2]=e;C=K(t+K(wt(g,I,C)));U[g+400+(Q[1e3+(I<<2)>>2]<<2)>>2]=C;return}function Nt(g,I,e,t){g=g|0;I=K(I);e=K(e);t=K(t);var C=0,F=0,B=iI,n=iI,s=0,i=0,c=iI,A=0,l=iI,a=iI,r=iI,o=iI;if(!(I==K(0.0))){C=g+400|0;o=K(U[C>>2]);F=g+404|0;r=K(U[F>>2]);A=g+416|0;a=K(U[A>>2]);i=g+420|0;B=K(U[i>>2]);l=K(o+e);c=K(r+t);t=K(l+a);n=K(c+B);s=(Q[g+988>>2]|0)==1;U[C>>2]=K(ot(o,I,0,s));U[F>>2]=K(ot(r,I,0,s));e=K(fG(K(a*I),K(1.0)));if(lt(e,K(0.0))|0)F=0;else F=(lt(e,K(1.0))|0)^1;e=K(fG(K(B*I),K(1.0)));if(lt(e,K(0.0))|0)C=0;else C=(lt(e,K(1.0))|0)^1;o=K(ot(t,I,s&F,s&(F^1)));U[A>>2]=K(o-K(ot(l,I,0,s)));o=K(ot(n,I,s&C,s&(C^1)));U[i>>2]=K(o-K(ot(c,I,0,s)));F=(Q[g+952>>2]|0)-(Q[g+948>>2]|0)>>2;if(F|0){C=0;do{Nt(DI(g,C)|0,I,l,c);C=C+1|0}while((C|0)!=(F|0))}}return}function Wt(g,I,e,t,C){g=g|0;I=I|0;e=e|0;t=t|0;C=C|0;switch(e|0){case 5:case 0:{g=CG(Q[489]|0,t,C)|0;break}default:g=JG(t,C)|0}return g|0}function ft(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0,F=0;C=l;l=l+16|0;F=C;Q[F>>2]=t;Xt(g,0,I,e,F);l=C;return}function Xt(g,I,e,t,C){g=g|0;I=I|0;e=e|0;t=t|0;C=C|0;g=g|0?g:956;GV[Q[g+8>>2]&1](g,I,e,t,C)|0;if((e|0)==5)Kg();else return}function Jt(g,I,e){g=g|0;I=I|0;e=e|0;t[g+I>>0]=e&1;return}function vt(g,I){g=g|0;I=I|0;var e=0,t=0;Q[g>>2]=0;Q[g+4>>2]=0;Q[g+8>>2]=0;e=I+4|0;t=(Q[e>>2]|0)-(Q[I>>2]|0)>>2;if(t|0){kt(g,t);Ht(g,Q[I>>2]|0,Q[e>>2]|0,t)}return}function kt(g,I){g=g|0;I=I|0;var e=0;if((Mt(g)|0)>>>0<I>>>0)vG(g);if(I>>>0>1073741823)Kg();else{e=zG(I<<2)|0;Q[g+4>>2]=e;Q[g>>2]=e;Q[g+8>>2]=e+(I<<2);return}}function Ht(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;t=g+4|0;g=e-I|0;if((g|0)>0){tL(Q[t>>2]|0,I|0,g|0)|0;Q[t>>2]=(Q[t>>2]|0)+(g>>>2<<2)}return}function Mt(g){g=g|0;return 1073741823}function Yt(g,I,e){g=g|0;I=I|0;e=K(e);if(Tt(I)|0?(Q[g+96>>2]|0)!=0:0)g=g+92|0;else g=ZI(g+60|0,Q[1040+(I<<2)>>2]|0,992)|0;return K(zt(g,e))}function wt(g,I,e){g=g|0;I=I|0;e=K(e);if(Tt(I)|0?(Q[g+104>>2]|0)!=0:0)g=g+100|0;else g=ZI(g+60|0,Q[1e3+(I<<2)>>2]|0,992)|0;return K(zt(g,e))}function Tt(g){g=g|0;return(g|1|0)==3|0}function zt(g,I){g=g|0;I=K(I);if((Q[g+4>>2]|0)==3)I=K(0.0);else I=K(pt(g,I));return K(I)}function Ot(g,I){g=g|0;I=I|0;g=Q[g>>2]|0;return((g|0)==0?(I|0)>1?I:1:g)|0}function Kt(g,I){g=g|0;I=I|0;var e=0;g:do{if((I|0)==2){switch(g|0){case 2:{g=3;break g}case 3:break;default:{e=4;break g}}g=2}else e=4}while(0);return g|0}function jt(g,I){g=g|0;I=I|0;var e=iI;if(!((Tt(I)|0?(Q[g+312>>2]|0)!=0:0)?(e=K(U[g+308>>2]),e>=K(0.0)):0))e=K(pG(K(U[(ZI(g+276|0,Q[1040+(I<<2)>>2]|0,992)|0)>>2]),K(0.0)));return K(e)}function Pt(g,I){g=g|0;I=I|0;var e=iI;if(!((Tt(I)|0?(Q[g+320>>2]|0)!=0:0)?(e=K(U[g+316>>2]),e>=K(0.0)):0))e=K(pG(K(U[(ZI(g+276|0,Q[1e3+(I<<2)>>2]|0,992)|0)>>2]),K(0.0)));return K(e)}function _t(g,I,e){g=g|0;I=I|0;e=K(e);var t=iI;if(!((Tt(I)|0?(Q[g+240>>2]|0)!=0:0)?(t=K(pt(g+236|0,e)),t>=K(0.0)):0))t=K(pG(K(pt(ZI(g+204|0,Q[1040+(I<<2)>>2]|0,992)|0,e)),K(0.0)));return K(t)}function qt(g,I,e){g=g|0;I=I|0;e=K(e);var t=iI;if(!((Tt(I)|0?(Q[g+248>>2]|0)!=0:0)?(t=K(pt(g+244|0,e)),t>=K(0.0)):0))t=K(pG(K(pt(ZI(g+204|0,Q[1e3+(I<<2)>>2]|0,992)|0,e)),K(0.0)));return K(t)}function $t(g,I,e,t,C,F,B){g=g|0;I=K(I);e=K(e);t=t|0;C=C|0;F=K(F);B=K(B);var n=iI,s=iI,i=iI,c=iI,A=iI,a=iI,r=0,o=0,d=0;d=l;l=l+16|0;r=d;o=g+964|0;WI(g,(Q[o>>2]|0)!=0,3519);n=K(QC(g,2,I));s=K(QC(g,0,I));i=K(mt(g,2,I));c=K(mt(g,0,I));if(bI(I)|0)A=I;else A=K(pG(K(0.0),K(K(I-i)-n)));if(bI(e)|0)a=e;else a=K(pG(K(0.0),K(K(e-c)-s)));if((t|0)==1&(C|0)==1){U[g+908>>2]=K(iC(g,2,K(I-i),F,F));I=K(iC(g,0,K(e-c),B,F))}else{VV[Q[o>>2]&1](r,g,A,t,a,C);A=K(n+K(U[r>>2]));a=K(I-i);U[g+908>>2]=K(iC(g,2,(t|2|0)==2?A:a,F,F));a=K(s+K(U[r+4>>2]));I=K(e-c);I=K(iC(g,0,(C|2|0)==2?a:I,B,F))}U[g+912>>2]=I;l=d;return}function gC(g,I,e,t,C,Q,F){g=g|0;I=K(I);e=K(e);t=t|0;C=C|0;Q=K(Q);F=K(F);var B=iI,n=iI,s=iI,i=iI;s=K(QC(g,2,Q));B=K(QC(g,0,Q));i=K(mt(g,2,Q));n=K(mt(g,0,Q));I=K(I-i);U[g+908>>2]=K(iC(g,2,(t|2|0)==2?s:I,Q,Q));e=K(e-n);U[g+912>>2]=K(iC(g,0,(C|2|0)==2?B:e,F,Q));return}function IC(g,I,e,t,C,Q,F){g=g|0;I=K(I);e=K(e);t=t|0;C=C|0;Q=K(Q);F=K(F);var B=0,n=iI,s=iI;B=(t|0)==2;if((!(I<=K(0.0)&B)?!(e<=K(0.0)&(C|0)==2):0)?!((t|0)==1&(C|0)==1):0)g=0;else{n=K(mt(g,0,Q));s=K(mt(g,2,Q));B=I<K(0.0)&B|(bI(I)|0);I=K(I-s);U[g+908>>2]=K(iC(g,2,B?K(0.0):I,Q,Q));I=K(e-n);B=e<K(0.0)&(C|0)==2|(bI(e)|0);U[g+912>>2]=K(iC(g,0,B?K(0.0):I,F,Q));g=1}return g|0}function eC(g,I){g=g|0;I=I|0;if(RC(g)|0)g=Kt(2,I)|0;else g=0;return g|0}function tC(g,I,e){g=g|0;I=I|0;e=K(e);e=K(_t(g,I,e));return K(e+K(jt(g,I)))}function CC(g,I,e){g=g|0;I=I|0;e=K(e);e=K(qt(g,I,e));return K(e+K(Pt(g,I)))}function QC(g,I,e){g=g|0;I=I|0;e=K(e);var t=iI;t=K(tC(g,I,e));return K(t+K(CC(g,I,e)))}function FC(g){g=g|0;if(!(Q[g+24>>2]|0)){if(K(BC(g))!=K(0.0))g=1;else g=K(nC(g))!=K(0.0)}else g=0;return g|0}function BC(g){g=g|0;var I=iI;if(Q[g+944>>2]|0){I=K(U[g+44>>2]);if(bI(I)|0){I=K(U[g+40>>2]);g=I>K(0.0)&((bI(I)|0)^1);return K(g?I:K(0.0))}}else I=K(0.0);return K(I)}function nC(g){g=g|0;var I=iI,e=0,C=iI;do{if(Q[g+944>>2]|0){I=K(U[g+48>>2]);if(bI(I)|0){e=t[(Q[g+976>>2]|0)+2>>0]|0;if(e<<24>>24==0?(C=K(U[g+40>>2]),C<K(0.0)&((bI(C)|0)^1)):0){I=K(-C);break}I=e<<24>>24?K(1.0):K(0.0)}}else I=K(0.0)}while(0);return K(I)}function UC(g){g=g|0;var I=0,e=0;gL(g+400|0,0,540)|0;t[g+985>>0]=1;MI(g);e=hI(g)|0;if(e|0){I=g+948|0;g=0;do{UC(Q[(Q[I>>2]|0)+(g<<2)>>2]|0);g=g+1|0}while((g|0)!=(e|0))}return}function sC(g,I,e,t,C,F,B,n,s,i){g=g|0;I=I|0;e=K(e);t=t|0;C=K(C);F=K(F);B=K(B);n=n|0;s=s|0;i=i|0;var c=0,A=iI,a=0,r=0,o=iI,d=iI,u=0,y=iI,b=0,m=iI,x=0,R=0,S=0,G=0,L=0,V=0,h=0,D=0,p=0,E=0;p=l;l=l+16|0;S=p+12|0;G=p+8|0;L=p+4|0;V=p;D=Kt(Q[g+4>>2]|0,s)|0;x=Tt(D)|0;A=K(pt(SC(I)|0,x?F:B));R=Dt(I,2,F)|0;h=Dt(I,0,B)|0;do{if(!(bI(A)|0)?!(bI(x?e:C)|0):0){c=I+504|0;if(!(bI(K(U[c>>2]))|0)){if(!(GC(Q[I+976>>2]|0,0)|0))break;if((Q[I+500>>2]|0)==(Q[2278]|0))break}U[c>>2]=K(pG(A,K(QC(I,D,F))))}else a=7}while(0);do{if((a|0)==7){b=x^1;if(!(b|R^1)){B=K(pt(Q[I+992>>2]|0,F));U[I+504>>2]=K(pG(B,K(QC(I,2,F))));break}if(!(x|h^1)){B=K(pt(Q[I+996>>2]|0,B));U[I+504>>2]=K(pG(B,K(QC(I,0,F))));break}U[S>>2]=K(Z);U[G>>2]=K(Z);Q[L>>2]=0;Q[V>>2]=0;y=K(mt(I,2,F));m=K(mt(I,0,F));if(R){o=K(y+K(pt(Q[I+992>>2]|0,F)));U[S>>2]=o;Q[L>>2]=1;r=1}else{r=0;o=K(Z)}if(h){A=K(m+K(pt(Q[I+996>>2]|0,B)));U[G>>2]=A;Q[V>>2]=1;c=1}else{c=0;A=K(Z)}a=Q[g+32>>2]|0;if(!(x&(a|0)==2)){if(bI(o)|0?!(bI(e)|0):0){U[S>>2]=e;Q[L>>2]=2;r=2;o=e}}else a=2;if((!((a|0)==2&b)?bI(A)|0:0)?!(bI(C)|0):0){U[G>>2]=C;Q[V>>2]=2;c=2;A=C}d=K(U[I+396>>2]);u=bI(d)|0;do{if(!u){if((r|0)==1&b){U[G>>2]=K(K(o-y)/d);Q[V>>2]=1;c=1;a=1;break}if(x&(c|0)==1){U[S>>2]=K(d*K(A-m));Q[L>>2]=1;c=1;a=1}else a=r}else a=r}while(0);E=bI(e)|0;r=(cC(g,I)|0)!=4;if(!(x|R|((t|0)!=1|E)|(r|(a|0)==1))?(U[S>>2]=e,Q[L>>2]=1,!u):0){U[G>>2]=K(K(e-y)/d);Q[V>>2]=1;c=1}if(!(h|b|((n|0)!=1|(bI(C)|0))|(r|(c|0)==1))?(U[G>>2]=C,Q[V>>2]=1,!u):0){U[S>>2]=K(d*K(C-m));Q[L>>2]=1}aC(I,2,F,F,L,S);aC(I,0,B,F,V,G);e=K(U[S>>2]);C=K(U[G>>2]);Zt(I,e,C,s,Q[L>>2]|0,Q[V>>2]|0,F,B,0,3565,i)|0;B=K(U[I+908+(Q[976+(D<<2)>>2]<<2)>>2]);U[I+504>>2]=K(pG(B,K(QC(I,D,F))))}}while(0);Q[I+500>>2]=Q[2278];l=p;return}function iC(g,I,e,t,C){g=g|0;I=I|0;e=K(e);t=K(t);C=K(C);t=K(ZC(g,I,e,t));return K(pG(t,K(QC(g,I,C))))}function cC(g,I){g=g|0;I=I|0;I=I+20|0;I=Q[((Q[I>>2]|0)==0?g+16|0:I)>>2]|0;if((I|0)==5?RC(Q[g+4>>2]|0)|0:0)I=1;return I|0}function AC(g,I){g=g|0;I=I|0;if(Tt(I)|0?(Q[g+96>>2]|0)!=0:0)I=4;else I=Q[1040+(I<<2)>>2]|0;return g+60+(I<<3)|0}function lC(g,I){g=g|0;I=I|0;if(Tt(I)|0?(Q[g+104>>2]|0)!=0:0)I=5;else I=Q[1e3+(I<<2)>>2]|0;return g+60+(I<<3)|0}function aC(g,I,e,t,C,F){g=g|0;I=I|0;e=K(e);t=K(t);C=C|0;F=F|0;e=K(pt(g+380+(Q[976+(I<<2)>>2]<<3)|0,e));e=K(e+K(mt(g,I,t)));switch(Q[C>>2]|0){case 2:case 1:{C=bI(e)|0;t=K(U[F>>2]);U[F>>2]=C|t<e?t:e;break}case 0:{if(!(bI(e)|0)){Q[C>>2]=2;U[F>>2]=e}break}default:{}}return}function rC(g,I){g=g|0;I=I|0;g=g+132|0;if(Tt(I)|0?(Q[(ZI(g,4,948)|0)+4>>2]|0)!=0:0)g=1;else g=(Q[(ZI(g,Q[1040+(I<<2)>>2]|0,948)|0)+4>>2]|0)!=0;return g|0}function oC(g,I,e){g=g|0;I=I|0;e=K(e);var t=0,C=0;g=g+132|0;if(Tt(I)|0?(t=ZI(g,4,948)|0,(Q[t+4>>2]|0)!=0):0)C=4;else{t=ZI(g,Q[1040+(I<<2)>>2]|0,948)|0;if(!(Q[t+4>>2]|0))e=K(0.0);else C=4}if((C|0)==4)e=K(pt(t,e));return K(e)}function dC(g,I,e){g=g|0;I=I|0;e=K(e);var t=iI;t=K(U[g+908+(Q[976+(I<<2)>>2]<<2)>>2]);t=K(t+K(Yt(g,I,e)));return K(t+K(wt(g,I,e)))}function uC(g){g=g|0;var I=0,e=0,t=0;g:do{if(!(RC(Q[g+4>>2]|0)|0)){if((Q[g+16>>2]|0)!=5){e=hI(g)|0;if(!e)I=0;else{I=0;while(1){t=DI(g,I)|0;if((Q[t+24>>2]|0)==0?(Q[t+20>>2]|0)==5:0){I=1;break g}I=I+1|0;if(I>>>0>=e>>>0){I=0;break}}}}else I=1}else I=0}while(0);return I|0}function yC(g,I){g=g|0;I=I|0;var e=iI;e=K(U[g+908+(Q[976+(I<<2)>>2]<<2)>>2]);return e>=K(0.0)&((bI(e)|0)^1)|0}function bC(g){g=g|0;var I=iI,e=0,t=0,C=0,F=0,B=0,n=0,s=iI;e=Q[g+968>>2]|0;if(!e){F=hI(g)|0;do{if(F|0){e=0;C=0;while(1){t=DI(g,C)|0;if(Q[t+940>>2]|0){B=8;break}if((Q[t+24>>2]|0)!=1){n=(cC(g,t)|0)==5;if(n){e=t;break}else e=(e|0)==0?t:e}C=C+1|0;if(C>>>0>=F>>>0){B=8;break}}if((B|0)==8)if(!e)break;I=K(bC(e));return K(I+K(U[e+404>>2]))}}while(0);I=K(U[g+912>>2])}else{s=K(U[g+908>>2]);I=K(U[g+912>>2]);I=K(cV[e&0](g,s,I));WI(g,(bI(I)|0)^1,3573)}return K(I)}function ZC(g,I,e,t){g=g|0;I=I|0;e=K(e);t=K(t);var C=iI,Q=0;if(!(RC(I)|0)){if(Tt(I)|0){I=0;Q=3}else{t=K(Z);C=K(Z)}}else{I=1;Q=3}if((Q|0)==3){C=K(pt(g+364+(I<<3)|0,t));t=K(pt(g+380+(I<<3)|0,t))}Q=t<e&(t>=K(0.0)&((bI(t)|0)^1));e=Q?t:e;Q=C>=K(0.0)&((bI(C)|0)^1)&e<C;return K(Q?C:e)}function mC(g,I,e,t,C,F,B){g=g|0;I=I|0;e=K(e);t=t|0;C=K(C);F=F|0;B=B|0;var n=iI,s=iI,i=0,c=0,A=iI,l=iI,a=iI,r=0,o=0,d=0,u=0,y=iI,b=0;d=Kt(Q[g+4>>2]|0,F)|0;r=eC(d,F)|0;o=Tt(d)|0;A=K(mt(I,2,e));l=K(mt(I,0,e));if(!(Dt(I,2,e)|0)){if(rC(I,2)|0?LC(I,2)|0:0){n=K(U[g+908>>2]);s=K(jt(g,2));s=K(n-K(s+K(Pt(g,2))));n=K(oC(I,2,e));n=K(iC(I,2,K(s-K(n+K(VC(I,2,e)))),e,e))}else n=K(Z)}else n=K(A+K(pt(Q[I+992>>2]|0,e)));if(!(Dt(I,0,C)|0)){if(rC(I,0)|0?LC(I,0)|0:0){s=K(U[g+912>>2]);y=K(jt(g,0));y=K(s-K(y+K(Pt(g,0))));s=K(oC(I,0,C));s=K(iC(I,0,K(y-K(s+K(VC(I,0,C)))),C,e))}else s=K(Z)}else s=K(l+K(pt(Q[I+996>>2]|0,C)));i=bI(n)|0;c=bI(s)|0;do{if(i^c?(a=K(U[I+396>>2]),!(bI(a)|0)):0)if(i){n=K(A+K(K(s-l)*a));break}else{y=K(l+K(K(n-A)/a));s=c?y:s;break}}while(0);c=bI(n)|0;i=bI(s)|0;if(c|i){b=(c^1)&1;t=e>K(0.0)&((t|0)!=0&c);n=o?n:t?e:n;Zt(I,n,s,F,o?b:t?2:b,c&(i^1)&1,n,s,0,3623,B)|0;n=K(U[I+908>>2]);n=K(n+K(mt(I,2,e)));s=K(U[I+912>>2]);s=K(s+K(mt(I,0,e)))}Zt(I,n,s,F,1,1,n,s,1,3635,B)|0;if(LC(I,d)|0?!(rC(I,d)|0):0){b=Q[976+(d<<2)>>2]|0;y=K(U[g+908+(b<<2)>>2]);y=K(y-K(U[I+908+(b<<2)>>2]));y=K(y-K(Pt(g,d)));y=K(y-K(wt(I,d,e)));y=K(y-K(VC(I,d,o?e:C)));U[I+400+(Q[1040+(d<<2)>>2]<<2)>>2]=y}else u=21;do{if((u|0)==21){if(!(rC(I,d)|0)?(Q[g+8>>2]|0)==1:0){b=Q[976+(d<<2)>>2]|0;y=K(U[g+908+(b<<2)>>2]);y=K(K(y-K(U[I+908+(b<<2)>>2]))*K(.5));U[I+400+(Q[1040+(d<<2)>>2]<<2)>>2]=y;break}if(!(rC(I,d)|0)?(Q[g+8>>2]|0)==2:0){b=Q[976+(d<<2)>>2]|0;y=K(U[g+908+(b<<2)>>2]);y=K(y-K(U[I+908+(b<<2)>>2]));U[I+400+(Q[1040+(d<<2)>>2]<<2)>>2]=y}}}while(0);if(LC(I,r)|0?!(rC(I,r)|0):0){b=Q[976+(r<<2)>>2]|0;y=K(U[g+908+(b<<2)>>2]);y=K(y-K(U[I+908+(b<<2)>>2]));y=K(y-K(Pt(g,r)));y=K(y-K(wt(I,r,e)));y=K(y-K(VC(I,r,o?C:e)));U[I+400+(Q[1040+(r<<2)>>2]<<2)>>2]=y}else u=30;do{if((u|0)==30?!(rC(I,r)|0):0){if((cC(g,I)|0)==2){b=Q[976+(r<<2)>>2]|0;y=K(U[g+908+(b<<2)>>2]);y=K(K(y-K(U[I+908+(b<<2)>>2]))*K(.5));U[I+400+(Q[1040+(r<<2)>>2]<<2)>>2]=y;break}b=(cC(g,I)|0)==3;if(b^(Q[g+28>>2]|0)==2){b=Q[976+(r<<2)>>2]|0;y=K(U[g+908+(b<<2)>>2]);y=K(y-K(U[I+908+(b<<2)>>2]));U[I+400+(Q[1040+(r<<2)>>2]<<2)>>2]=y}}}while(0);return}function xC(g,I,e){g=g|0;I=I|0;e=e|0;var t=iI,C=0;C=Q[976+(e<<2)>>2]|0;t=K(U[I+908+(C<<2)>>2]);t=K(K(U[g+908+(C<<2)>>2])-t);t=K(t-K(U[I+400+(Q[1040+(e<<2)>>2]<<2)>>2]));U[I+400+(Q[1e3+(e<<2)>>2]<<2)>>2]=t;return}function RC(g){g=g|0;return(g|1|0)==1|0}function SC(g){g=g|0;var I=iI;switch(Q[g+56>>2]|0){case 0:case 3:{I=K(U[g+40>>2]);if(I>K(0.0)&((bI(I)|0)^1))g=t[(Q[g+976>>2]|0)+2>>0]|0?1056:992;else g=1056;break}default:g=g+52|0}return g|0}function GC(g,I){g=g|0;I=I|0;return(t[g+I>>0]|0)!=0|0}function LC(g,I){g=g|0;I=I|0;g=g+132|0;if(Tt(I)|0?(Q[(ZI(g,5,948)|0)+4>>2]|0)!=0:0)g=1;else g=(Q[(ZI(g,Q[1e3+(I<<2)>>2]|0,948)|0)+4>>2]|0)!=0;return g|0}function VC(g,I,e){g=g|0;I=I|0;e=K(e);var t=0,C=0;g=g+132|0;if(Tt(I)|0?(t=ZI(g,5,948)|0,(Q[t+4>>2]|0)!=0):0)C=4;else{t=ZI(g,Q[1e3+(I<<2)>>2]|0,948)|0;if(!(Q[t+4>>2]|0))e=K(0.0);else C=4}if((C|0)==4)e=K(pt(t,e));return K(e)}function hC(g,I,e){g=g|0;I=I|0;e=K(e);if(rC(g,I)|0)e=K(oC(g,I,e));else e=K(-K(VC(g,I,e)));return K(e)}function DC(g){g=K(g);return(U[c>>2]=g,Q[c>>2]|0)|0}function pC(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0;Q[g+12>>2]=0;Q[g+16>>2]=t;do{if(I){if(I>>>0>1073741823)Kg();else{C=zG(I<<2)|0;break}}else C=0}while(0);Q[g>>2]=C;t=C+(e<<2)|0;Q[g+8>>2]=t;Q[g+4>>2]=t;Q[g+12>>2]=C+(I<<2);return}function EC(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0;t=Q[g>>2]|0;B=g+4|0;F=I+4|0;C=(Q[B>>2]|0)-t|0;e=(Q[F>>2]|0)+(0-(C>>2)<<2)|0;Q[F>>2]=e;if((C|0)>0){tL(e|0,t|0,C|0)|0;t=F;e=Q[F>>2]|0}else t=F;F=Q[g>>2]|0;Q[g>>2]=e;Q[t>>2]=F;F=I+8|0;C=Q[B>>2]|0;Q[B>>2]=Q[F>>2];Q[F>>2]=C;F=g+8|0;B=I+12|0;g=Q[F>>2]|0;Q[F>>2]=Q[B>>2];Q[B>>2]=g;Q[I>>2]=Q[t>>2];return}function NC(g){g=g|0;var I=0,e=0,t=0;I=Q[g+4>>2]|0;e=g+8|0;t=Q[e>>2]|0;if((t|0)!=(I|0))Q[e>>2]=t+(~((t+-4-I|0)>>>2)<<2);g=Q[g>>2]|0;if(g|0)KG(g);return}function WC(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0,F=0,B=0,n=0;B=g+4|0;n=Q[B>>2]|0;C=n-t|0;F=C>>2;g=I+(F<<2)|0;if(g>>>0<e>>>0){t=n;do{Q[t>>2]=Q[g>>2];g=g+4|0;t=(Q[B>>2]|0)+4|0;Q[B>>2]=t}while(g>>>0<e>>>0)}if(F|0)nL(n+(0-F<<2)|0,I|0,C|0)|0;return}function fC(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0,U=0;n=I+4|0;U=Q[n>>2]|0;C=Q[g>>2]|0;B=e;F=B-C|0;t=U+(0-(F>>2)<<2)|0;Q[n>>2]=t;if((F|0)>0)tL(t|0,C|0,F|0)|0;C=g+4|0;F=I+8|0;t=(Q[C>>2]|0)-B|0;if((t|0)>0){tL(Q[F>>2]|0,e|0,t|0)|0;Q[F>>2]=(Q[F>>2]|0)+(t>>>2<<2)}B=Q[g>>2]|0;Q[g>>2]=Q[n>>2];Q[n>>2]=B;B=Q[C>>2]|0;Q[C>>2]=Q[F>>2];Q[F>>2]=B;B=g+8|0;e=I+12|0;g=Q[B>>2]|0;Q[B>>2]=Q[e>>2];Q[e>>2]=g;Q[I>>2]=Q[n>>2];return U|0}function XC(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0;B=Q[I>>2]|0;F=Q[e>>2]|0;if((B|0)!=(F|0)){C=g+8|0;e=((F+-4-B|0)>>>2)+1|0;g=B;t=Q[C>>2]|0;do{Q[t>>2]=Q[g>>2];t=(Q[C>>2]|0)+4|0;Q[C>>2]=t;g=g+4|0}while((g|0)!=(F|0));Q[I>>2]=B+(e<<2)}return}function JC(){uI();return}function vC(){var g=0;g=zG(4)|0;kC(g);return g|0}function kC(g){g=g|0;Q[g>>2]=XI()|0;return}function HC(g){g=g|0;if(g|0){MC(g);KG(g)}return}function MC(g){g=g|0;vI(Q[g>>2]|0);return}function YC(g,I,e){g=g|0;I=I|0;e=e|0;Jt(Q[g>>2]|0,I,e);return}function wC(g,I){g=g|0;I=K(I);Lt(Q[g>>2]|0,I);return}function TC(g,I){g=g|0;I=I|0;return GC(Q[g>>2]|0,I)|0}function zC(){var g=0;g=zG(8)|0;OC(g,0);return g|0}function OC(g,I){g=g|0;I=I|0;if(!I)I=RI()|0;else I=mI(Q[I>>2]|0)|0;Q[g>>2]=I;Q[g+4>>2]=0;qI(I,g);return}function KC(g){g=g|0;var I=0;I=zG(8)|0;OC(I,g);return I|0}function jC(g){g=g|0;if(g|0){PC(g);KG(g)}return}function PC(g){g=g|0;var I=0;LI(Q[g>>2]|0);I=g+4|0;g=Q[I>>2]|0;Q[I>>2]=0;if(g|0){_C(g);KG(g)}return}function _C(g){g=g|0;qC(g);return}function qC(g){g=g|0;g=Q[g>>2]|0;if(g|0)tI(g|0);return}function $C(g){g=g|0;return $I(g)|0}function gQ(g){g=g|0;var I=0,e=0;e=g+4|0;I=Q[e>>2]|0;Q[e>>2]=0;if(I|0){_C(I);KG(I)}NI(Q[g>>2]|0);return}function IQ(g,I){g=g|0;I=I|0;jI(Q[g>>2]|0,Q[I>>2]|0);return}function eQ(g,I){g=g|0;I=I|0;se(Q[g>>2]|0,I);return}function tQ(g,I,e){g=g|0;I=I|0;e=+e;xe(Q[g>>2]|0,I,K(e));return}function CQ(g,I,e){g=g|0;I=I|0;e=+e;Re(Q[g>>2]|0,I,K(e));return}function QQ(g,I){g=g|0;I=I|0;Ce(Q[g>>2]|0,I);return}function FQ(g,I){g=g|0;I=I|0;Fe(Q[g>>2]|0,I);return}function BQ(g,I){g=g|0;I=I|0;ne(Q[g>>2]|0,I);return}function nQ(g,I){g=g|0;I=I|0;ge(Q[g>>2]|0,I);return}function UQ(g,I){g=g|0;I=I|0;ce(Q[g>>2]|0,I);return}function sQ(g,I){g=g|0;I=I|0;ee(Q[g>>2]|0,I);return}function iQ(g,I,e){g=g|0;I=I|0;e=+e;Ge(Q[g>>2]|0,I,K(e));return}function cQ(g,I,e){g=g|0;I=I|0;e=+e;Le(Q[g>>2]|0,I,K(e));return}function AQ(g,I){g=g|0;I=I|0;he(Q[g>>2]|0,I);return}function lQ(g,I){g=g|0;I=I|0;le(Q[g>>2]|0,I);return}function aQ(g,I){g=g|0;I=I|0;re(Q[g>>2]|0,I);return}function rQ(g,I){g=g|0;I=+I;de(Q[g>>2]|0,K(I));return}function oQ(g,I){g=g|0;I=+I;be(Q[g>>2]|0,K(I));return}function dQ(g,I){g=g|0;I=+I;Ze(Q[g>>2]|0,K(I));return}function uQ(g,I){g=g|0;I=+I;ue(Q[g>>2]|0,K(I));return}function yQ(g,I){g=g|0;I=+I;ye(Q[g>>2]|0,K(I));return}function bQ(g,I){g=g|0;I=+I;fe(Q[g>>2]|0,K(I));return}function ZQ(g,I){g=g|0;I=+I;Xe(Q[g>>2]|0,K(I));return}function mQ(g){g=g|0;Je(Q[g>>2]|0);return}function xQ(g,I){g=g|0;I=+I;ke(Q[g>>2]|0,K(I));return}function RQ(g,I){g=g|0;I=+I;He(Q[g>>2]|0,K(I));return}function SQ(g){g=g|0;Me(Q[g>>2]|0);return}function GQ(g,I){g=g|0;I=+I;we(Q[g>>2]|0,K(I));return}function LQ(g,I){g=g|0;I=+I;Te(Q[g>>2]|0,K(I));return}function VQ(g,I){g=g|0;I=+I;Oe(Q[g>>2]|0,K(I));return}function hQ(g,I){g=g|0;I=+I;Ke(Q[g>>2]|0,K(I));return}function DQ(g,I){g=g|0;I=+I;Pe(Q[g>>2]|0,K(I));return}function pQ(g,I){g=g|0;I=+I;_e(Q[g>>2]|0,K(I));return}function EQ(g,I){g=g|0;I=+I;$e(Q[g>>2]|0,K(I));return}function NQ(g,I){g=g|0;I=+I;gt(Q[g>>2]|0,K(I));return}function WQ(g,I){g=g|0;I=+I;et(Q[g>>2]|0,K(I));return}function fQ(g,I,e){g=g|0;I=I|0;e=+e;Ne(Q[g>>2]|0,I,K(e));return}function XQ(g,I,e){g=g|0;I=I|0;e=+e;De(Q[g>>2]|0,I,K(e));return}function JQ(g,I,e){g=g|0;I=I|0;e=+e;pe(Q[g>>2]|0,I,K(e));return}function vQ(g){g=g|0;return ie(Q[g>>2]|0)|0}function kQ(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0;t=l;l=l+16|0;C=t;Se(C,Q[I>>2]|0,e);HQ(g,C);l=t;return}function HQ(g,I){g=g|0;I=I|0;MQ(g,Q[I+4>>2]|0,+K(U[I>>2]));return}function MQ(g,I,e){g=g|0;I=I|0;e=+e;Q[g>>2]=I;s[g+8>>3]=e;return}function YQ(g){g=g|0;return Qe(Q[g>>2]|0)|0}function wQ(g){g=g|0;return Be(Q[g>>2]|0)|0}function TQ(g){g=g|0;return Ue(Q[g>>2]|0)|0}function zQ(g){g=g|0;return Ie(Q[g>>2]|0)|0}function OQ(g){g=g|0;return Ae(Q[g>>2]|0)|0}function KQ(g){g=g|0;return te(Q[g>>2]|0)|0}function jQ(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0;t=l;l=l+16|0;C=t;Ve(C,Q[I>>2]|0,e);HQ(g,C);l=t;return}function PQ(g){g=g|0;return ae(Q[g>>2]|0)|0}function _Q(g){g=g|0;return oe(Q[g>>2]|0)|0}function qQ(g,I){g=g|0;I=I|0;var e=0,t=0;e=l;l=l+16|0;t=e;me(t,Q[I>>2]|0);HQ(g,t);l=e;return}function $Q(g){g=g|0;return+ +K(PI(Q[g>>2]|0))}function gF(g){g=g|0;return+ +K(_I(Q[g>>2]|0))}function IF(g,I){g=g|0;I=I|0;var e=0,t=0;e=l;l=l+16|0;t=e;ve(t,Q[I>>2]|0);HQ(g,t);l=e;return}function eF(g,I){g=g|0;I=I|0;var e=0,t=0;e=l;l=l+16|0;t=e;Ye(t,Q[I>>2]|0);HQ(g,t);l=e;return}function tF(g,I){g=g|0;I=I|0;var e=0,t=0;e=l;l=l+16|0;t=e;ze(t,Q[I>>2]|0);HQ(g,t);l=e;return}function CF(g,I){g=g|0;I=I|0;var e=0,t=0;e=l;l=l+16|0;t=e;je(t,Q[I>>2]|0);HQ(g,t);l=e;return}function QF(g,I){g=g|0;I=I|0;var e=0,t=0;e=l;l=l+16|0;t=e;qe(t,Q[I>>2]|0);HQ(g,t);l=e;return}function FF(g,I){g=g|0;I=I|0;var e=0,t=0;e=l;l=l+16|0;t=e;It(t,Q[I>>2]|0);HQ(g,t);l=e;return}function BF(g){g=g|0;return+ +K(tt(Q[g>>2]|0))}function nF(g,I){g=g|0;I=I|0;return+ +K(We(Q[g>>2]|0,I))}function UF(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0;t=l;l=l+16|0;C=t;Ee(C,Q[I>>2]|0,e);HQ(g,C);l=t;return}function sF(g,I,e){g=g|0;I=I|0;e=e|0;HI(Q[g>>2]|0,Q[I>>2]|0,e);return}function iF(g,I){g=g|0;I=I|0;EI(Q[g>>2]|0,Q[I>>2]|0);return}function cF(g){g=g|0;return hI(Q[g>>2]|0)|0}function AF(g){g=g|0;g=zI(Q[g>>2]|0)|0;if(!g)g=0;else g=$C(g)|0;return g|0}function lF(g,I){g=g|0;I=I|0;g=DI(Q[g>>2]|0,I)|0;if(!g)g=0;else g=$C(g)|0;return g|0}function aF(g,I){g=g|0;I=I|0;var e=0,t=0;t=zG(4)|0;rF(t,I);e=g+4|0;I=Q[e>>2]|0;Q[e>>2]=t;if(I|0){_C(I);KG(I)}kI(Q[g>>2]|0,1);return}function rF(g,I){g=g|0;I=I|0;fF(g,I);return}function oF(g,I,e,t,C,Q){g=g|0;I=I|0;e=K(e);t=t|0;C=K(C);Q=Q|0;var F=0,B=0;F=l;l=l+16|0;B=F;dF(B,$I(I)|0,+e,t,+C,Q);U[g>>2]=K(+s[B>>3]);U[g+4>>2]=K(+s[B+8>>3]);l=F;return}function dF(g,I,e,t,C,F){g=g|0;I=I|0;e=+e;t=t|0;C=+C;F=F|0;var B=0,n=0,U=0,i=0,c=0;B=l;l=l+32|0;c=B+8|0;i=B+20|0;U=B;n=B+16|0;s[c>>3]=e;Q[i>>2]=t;s[U>>3]=C;Q[n>>2]=F;uF(g,Q[I+4>>2]|0,c,i,U,n);l=B;return}function uF(g,I,e,t,C,F){g=g|0;I=I|0;e=e|0;t=t|0;C=C|0;F=F|0;var B=0,n=0;B=l;l=l+16|0;n=B;ZS(n);I=yF(I)|0;bF(g,I,+s[e>>3],Q[t>>2]|0,+s[C>>3],Q[F>>2]|0);xS(n);l=B;return}function yF(g){g=g|0;return Q[g>>2]|0}function bF(g,I,e,t,C,Q){g=g|0;I=I|0;e=+e;t=t|0;C=+C;Q=Q|0;var F=0;F=mF(ZF()|0)|0;e=+xF(e);t=RF(t)|0;C=+xF(C);SF(g,QI(0,F|0,I|0,+e,t|0,+C,RF(Q)|0)|0);return}function ZF(){var g=0;if(!(t[7608]|0)){EF(9120);g=7608;Q[g>>2]=1;Q[g+4>>2]=0}return 9120}function mF(g){g=g|0;return Q[g+8>>2]|0}function xF(g){g=+g;return+ +pF(g)}function RF(g){g=g|0;return DF(g)|0}function SF(g,I){g=g|0;I=I|0;var e=0,t=0,C=0;C=l;l=l+32|0;e=C;t=I;if(!(t&1)){Q[g>>2]=Q[I>>2];Q[g+4>>2]=Q[I+4>>2];Q[g+8>>2]=Q[I+8>>2];Q[g+12>>2]=Q[I+12>>2]}else{GF(e,0);Jg(t|0,e|0)|0;LF(g,e);VF(e)}l=C;return}function GF(g,I){g=g|0;I=I|0;hF(g,I);Q[g+8>>2]=0;t[g+24>>0]=0;return}function LF(g,I){g=g|0;I=I|0;I=I+8|0;Q[g>>2]=Q[I>>2];Q[g+4>>2]=Q[I+4>>2];Q[g+8>>2]=Q[I+8>>2];Q[g+12>>2]=Q[I+12>>2];return}function VF(g){g=g|0;t[g+24>>0]=0;return}function hF(g,I){g=g|0;I=I|0;Q[g>>2]=I;return}function DF(g){g=g|0;return g|0}function pF(g){g=+g;return+g}function EF(g){g=g|0;WF(g,NF()|0,4);return}function NF(){return 1064}function WF(g,I,e){g=g|0;I=I|0;e=e|0;Q[g>>2]=I;Q[g+4>>2]=e;Q[g+8>>2]=II(I|0,e+1|0)|0;return}function fF(g,I){g=g|0;I=I|0;I=Q[I>>2]|0;Q[g>>2]=I;Vg(I|0);return}function XF(g){g=g|0;var I=0,e=0;e=g+4|0;I=Q[e>>2]|0;Q[e>>2]=0;if(I|0){_C(I);KG(I)}kI(Q[g>>2]|0,0);return}function JF(g){g=g|0;OI(Q[g>>2]|0);return}function vF(g){g=g|0;return KI(Q[g>>2]|0)|0}function kF(g,I,e,t){g=g|0;I=+I;e=+e;t=t|0;Vt(Q[g>>2]|0,K(I),K(e),t);return}function HF(g){g=g|0;return+ +K(Ct(Q[g>>2]|0))}function MF(g){g=g|0;return+ +K(Ft(Q[g>>2]|0))}function YF(g){g=g|0;return+ +K(Qt(Q[g>>2]|0))}function wF(g){g=g|0;return+ +K(Bt(Q[g>>2]|0))}function TF(g){g=g|0;return+ +K(nt(Q[g>>2]|0))}function zF(g){g=g|0;return+ +K(Ut(Q[g>>2]|0))}function OF(g,I){g=g|0;I=I|0;s[g>>3]=+K(Ct(Q[I>>2]|0));s[g+8>>3]=+K(Ft(Q[I>>2]|0));s[g+16>>3]=+K(Qt(Q[I>>2]|0));s[g+24>>3]=+K(Bt(Q[I>>2]|0));s[g+32>>3]=+K(nt(Q[I>>2]|0));s[g+40>>3]=+K(Ut(Q[I>>2]|0));return}function KF(g,I){g=g|0;I=I|0;return+ +K(st(Q[g>>2]|0,I))}function jF(g,I){g=g|0;I=I|0;return+ +K(it(Q[g>>2]|0,I))}function PF(g,I){g=g|0;I=I|0;return+ +K(ct(Q[g>>2]|0,I))}function _F(){return fI()|0}function qF(){$F();gB();IB();eB();tB();CB();return}function $F(){ky(11713,4938,1);return}function gB(){gy(10448);return}function IB(){Nu(10408);return}function eB(){_d(10324);return}function tB(){Yr(10096);return}function CB(){QB(9132);return}function QB(g){g=g|0;var I=0,e=0,t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0,A=0,a=0,r=0,o=0,d=0,u=0,y=0,b=0,Z=0,m=0,x=0,R=0,S=0,G=0,L=0,V=0,h=0,D=0,p=0,E=0,N=0,W=0,f=0,X=0,J=0,v=0,k=0,H=0,M=0,Y=0,w=0,T=0,z=0,O=0,K=0,j=0,P=0,_=0,q=0,$=0,gg=0,Ig=0,eg=0,tg=0,Cg=0,Qg=0,Fg=0,Bg=0,ng=0,Ug=0,sg=0,ig=0,cg=0,Ag=0,lg=0,ag=0,rg=0,og=0,dg=0,ug=0,yg=0,bg=0,Zg=0,mg=0,xg=0,Rg=0,Sg=0,Gg=0,Lg=0,Vg=0,hg=0,Dg=0,pg=0;I=l;l=l+672|0;e=I+656|0;pg=I+648|0;Dg=I+640|0;hg=I+632|0;Vg=I+624|0;Lg=I+616|0;Gg=I+608|0;Sg=I+600|0;Rg=I+592|0;xg=I+584|0;mg=I+576|0;Zg=I+568|0;bg=I+560|0;yg=I+552|0;ug=I+544|0;dg=I+536|0;og=I+528|0;rg=I+520|0;ag=I+512|0;lg=I+504|0;Ag=I+496|0;cg=I+488|0;ig=I+480|0;sg=I+472|0;Ug=I+464|0;ng=I+456|0;Bg=I+448|0;Fg=I+440|0;Qg=I+432|0;Cg=I+424|0;tg=I+416|0;eg=I+408|0;Ig=I+400|0;gg=I+392|0;$=I+384|0;q=I+376|0;_=I+368|0;P=I+360|0;j=I+352|0;K=I+344|0;O=I+336|0;z=I+328|0;T=I+320|0;w=I+312|0;Y=I+304|0;M=I+296|0;H=I+288|0;k=I+280|0;v=I+272|0;J=I+264|0;X=I+256|0;f=I+248|0;W=I+240|0;N=I+232|0;E=I+224|0;p=I+216|0;D=I+208|0;h=I+200|0;V=I+192|0;L=I+184|0;G=I+176|0;S=I+168|0;R=I+160|0;x=I+152|0;m=I+144|0;Z=I+136|0;b=I+128|0;y=I+120|0;u=I+112|0;d=I+104|0;o=I+96|0;r=I+88|0;a=I+80|0;A=I+72|0;c=I+64|0;i=I+56|0;s=I+48|0;U=I+40|0;n=I+32|0;B=I+24|0;F=I+16|0;C=I+8|0;t=I;FB(g,3646);BB(g,3651,2)|0;nB(g,3665,2)|0;UB(g,3682,18)|0;Q[pg>>2]=19;Q[pg+4>>2]=0;Q[e>>2]=Q[pg>>2];Q[e+4>>2]=Q[pg+4>>2];sB(g,3690,e)|0;Q[Dg>>2]=1;Q[Dg+4>>2]=0;Q[e>>2]=Q[Dg>>2];Q[e+4>>2]=Q[Dg+4>>2];iB(g,3696,e)|0;Q[hg>>2]=2;Q[hg+4>>2]=0;Q[e>>2]=Q[hg>>2];Q[e+4>>2]=Q[hg+4>>2];cB(g,3706,e)|0;Q[Vg>>2]=1;Q[Vg+4>>2]=0;Q[e>>2]=Q[Vg>>2];Q[e+4>>2]=Q[Vg+4>>2];AB(g,3722,e)|0;Q[Lg>>2]=2;Q[Lg+4>>2]=0;Q[e>>2]=Q[Lg>>2];Q[e+4>>2]=Q[Lg+4>>2];AB(g,3734,e)|0;Q[Gg>>2]=3;Q[Gg+4>>2]=0;Q[e>>2]=Q[Gg>>2];Q[e+4>>2]=Q[Gg+4>>2];cB(g,3753,e)|0;Q[Sg>>2]=4;Q[Sg+4>>2]=0;Q[e>>2]=Q[Sg>>2];Q[e+4>>2]=Q[Sg+4>>2];cB(g,3769,e)|0;Q[Rg>>2]=5;Q[Rg+4>>2]=0;Q[e>>2]=Q[Rg>>2];Q[e+4>>2]=Q[Rg+4>>2];cB(g,3783,e)|0;Q[xg>>2]=6;Q[xg+4>>2]=0;Q[e>>2]=Q[xg>>2];Q[e+4>>2]=Q[xg+4>>2];cB(g,3796,e)|0;Q[mg>>2]=7;Q[mg+4>>2]=0;Q[e>>2]=Q[mg>>2];Q[e+4>>2]=Q[mg+4>>2];cB(g,3813,e)|0;Q[Zg>>2]=8;Q[Zg+4>>2]=0;Q[e>>2]=Q[Zg>>2];Q[e+4>>2]=Q[Zg+4>>2];cB(g,3825,e)|0;Q[bg>>2]=3;Q[bg+4>>2]=0;Q[e>>2]=Q[bg>>2];Q[e+4>>2]=Q[bg+4>>2];AB(g,3843,e)|0;Q[yg>>2]=4;Q[yg+4>>2]=0;Q[e>>2]=Q[yg>>2];Q[e+4>>2]=Q[yg+4>>2];AB(g,3853,e)|0;Q[ug>>2]=9;Q[ug+4>>2]=0;Q[e>>2]=Q[ug>>2];Q[e+4>>2]=Q[ug+4>>2];cB(g,3870,e)|0;Q[dg>>2]=10;Q[dg+4>>2]=0;Q[e>>2]=Q[dg>>2];Q[e+4>>2]=Q[dg+4>>2];cB(g,3884,e)|0;Q[og>>2]=11;Q[og+4>>2]=0;Q[e>>2]=Q[og>>2];Q[e+4>>2]=Q[og+4>>2];cB(g,3896,e)|0;Q[rg>>2]=1;Q[rg+4>>2]=0;Q[e>>2]=Q[rg>>2];Q[e+4>>2]=Q[rg+4>>2];lB(g,3907,e)|0;Q[ag>>2]=2;Q[ag+4>>2]=0;Q[e>>2]=Q[ag>>2];Q[e+4>>2]=Q[ag+4>>2];lB(g,3915,e)|0;Q[lg>>2]=3;Q[lg+4>>2]=0;Q[e>>2]=Q[lg>>2];Q[e+4>>2]=Q[lg+4>>2];lB(g,3928,e)|0;Q[Ag>>2]=4;Q[Ag+4>>2]=0;Q[e>>2]=Q[Ag>>2];Q[e+4>>2]=Q[Ag+4>>2];lB(g,3948,e)|0;Q[cg>>2]=5;Q[cg+4>>2]=0;Q[e>>2]=Q[cg>>2];Q[e+4>>2]=Q[cg+4>>2];lB(g,3960,e)|0;Q[ig>>2]=6;Q[ig+4>>2]=0;Q[e>>2]=Q[ig>>2];Q[e+4>>2]=Q[ig+4>>2];lB(g,3974,e)|0;Q[sg>>2]=7;Q[sg+4>>2]=0;Q[e>>2]=Q[sg>>2];Q[e+4>>2]=Q[sg+4>>2];lB(g,3983,e)|0;Q[Ug>>2]=20;Q[Ug+4>>2]=0;Q[e>>2]=Q[Ug>>2];Q[e+4>>2]=Q[Ug+4>>2];sB(g,3999,e)|0;Q[ng>>2]=8;Q[ng+4>>2]=0;Q[e>>2]=Q[ng>>2];Q[e+4>>2]=Q[ng+4>>2];lB(g,4012,e)|0;Q[Bg>>2]=9;Q[Bg+4>>2]=0;Q[e>>2]=Q[Bg>>2];Q[e+4>>2]=Q[Bg+4>>2];lB(g,4022,e)|0;Q[Fg>>2]=21;Q[Fg+4>>2]=0;Q[e>>2]=Q[Fg>>2];Q[e+4>>2]=Q[Fg+4>>2];sB(g,4039,e)|0;Q[Qg>>2]=10;Q[Qg+4>>2]=0;Q[e>>2]=Q[Qg>>2];Q[e+4>>2]=Q[Qg+4>>2];lB(g,4053,e)|0;Q[Cg>>2]=11;Q[Cg+4>>2]=0;Q[e>>2]=Q[Cg>>2];Q[e+4>>2]=Q[Cg+4>>2];lB(g,4065,e)|0;Q[tg>>2]=12;Q[tg+4>>2]=0;Q[e>>2]=Q[tg>>2];Q[e+4>>2]=Q[tg+4>>2];lB(g,4084,e)|0;Q[eg>>2]=13;Q[eg+4>>2]=0;Q[e>>2]=Q[eg>>2];Q[e+4>>2]=Q[eg+4>>2];lB(g,4097,e)|0;Q[Ig>>2]=14;Q[Ig+4>>2]=0;Q[e>>2]=Q[Ig>>2];Q[e+4>>2]=Q[Ig+4>>2];lB(g,4117,e)|0;Q[gg>>2]=15;Q[gg+4>>2]=0;Q[e>>2]=Q[gg>>2];Q[e+4>>2]=Q[gg+4>>2];lB(g,4129,e)|0;Q[$>>2]=16;Q[$+4>>2]=0;Q[e>>2]=Q[$>>2];Q[e+4>>2]=Q[$+4>>2];lB(g,4148,e)|0;Q[q>>2]=17;Q[q+4>>2]=0;Q[e>>2]=Q[q>>2];Q[e+4>>2]=Q[q+4>>2];lB(g,4161,e)|0;Q[_>>2]=18;Q[_+4>>2]=0;Q[e>>2]=Q[_>>2];Q[e+4>>2]=Q[_+4>>2];lB(g,4181,e)|0;Q[P>>2]=5;Q[P+4>>2]=0;Q[e>>2]=Q[P>>2];Q[e+4>>2]=Q[P+4>>2];AB(g,4196,e)|0;Q[j>>2]=6;Q[j+4>>2]=0;Q[e>>2]=Q[j>>2];Q[e+4>>2]=Q[j+4>>2];AB(g,4206,e)|0;Q[K>>2]=7;Q[K+4>>2]=0;Q[e>>2]=Q[K>>2];Q[e+4>>2]=Q[K+4>>2];AB(g,4217,e)|0;Q[O>>2]=3;Q[O+4>>2]=0;Q[e>>2]=Q[O>>2];Q[e+4>>2]=Q[O+4>>2];aB(g,4235,e)|0;Q[z>>2]=1;Q[z+4>>2]=0;Q[e>>2]=Q[z>>2];Q[e+4>>2]=Q[z+4>>2];rB(g,4251,e)|0;Q[T>>2]=4;Q[T+4>>2]=0;Q[e>>2]=Q[T>>2];Q[e+4>>2]=Q[T+4>>2];aB(g,4263,e)|0;Q[w>>2]=5;Q[w+4>>2]=0;Q[e>>2]=Q[w>>2];Q[e+4>>2]=Q[w+4>>2];aB(g,4279,e)|0;Q[Y>>2]=6;Q[Y+4>>2]=0;Q[e>>2]=Q[Y>>2];Q[e+4>>2]=Q[Y+4>>2];aB(g,4293,e)|0;Q[M>>2]=7;Q[M+4>>2]=0;Q[e>>2]=Q[M>>2];Q[e+4>>2]=Q[M+4>>2];aB(g,4306,e)|0;Q[H>>2]=8;Q[H+4>>2]=0;Q[e>>2]=Q[H>>2];Q[e+4>>2]=Q[H+4>>2];aB(g,4323,e)|0;Q[k>>2]=9;Q[k+4>>2]=0;Q[e>>2]=Q[k>>2];Q[e+4>>2]=Q[k+4>>2];aB(g,4335,e)|0;Q[v>>2]=2;Q[v+4>>2]=0;Q[e>>2]=Q[v>>2];Q[e+4>>2]=Q[v+4>>2];rB(g,4353,e)|0;Q[J>>2]=12;Q[J+4>>2]=0;Q[e>>2]=Q[J>>2];Q[e+4>>2]=Q[J+4>>2];oB(g,4363,e)|0;Q[X>>2]=1;Q[X+4>>2]=0;Q[e>>2]=Q[X>>2];Q[e+4>>2]=Q[X+4>>2];dB(g,4376,e)|0;Q[f>>2]=2;Q[f+4>>2]=0;Q[e>>2]=Q[f>>2];Q[e+4>>2]=Q[f+4>>2];dB(g,4388,e)|0;Q[W>>2]=13;Q[W+4>>2]=0;Q[e>>2]=Q[W>>2];Q[e+4>>2]=Q[W+4>>2];oB(g,4402,e)|0;Q[N>>2]=14;Q[N+4>>2]=0;Q[e>>2]=Q[N>>2];Q[e+4>>2]=Q[N+4>>2];oB(g,4411,e)|0;Q[E>>2]=15;Q[E+4>>2]=0;Q[e>>2]=Q[E>>2];Q[e+4>>2]=Q[E+4>>2];oB(g,4421,e)|0;Q[p>>2]=16;Q[p+4>>2]=0;Q[e>>2]=Q[p>>2];Q[e+4>>2]=Q[p+4>>2];oB(g,4433,e)|0;Q[D>>2]=17;Q[D+4>>2]=0;Q[e>>2]=Q[D>>2];Q[e+4>>2]=Q[D+4>>2];oB(g,4446,e)|0;Q[h>>2]=18;Q[h+4>>2]=0;Q[e>>2]=Q[h>>2];Q[e+4>>2]=Q[h+4>>2];oB(g,4458,e)|0;Q[V>>2]=3;Q[V+4>>2]=0;Q[e>>2]=Q[V>>2];Q[e+4>>2]=Q[V+4>>2];dB(g,4471,e)|0;Q[L>>2]=1;Q[L+4>>2]=0;Q[e>>2]=Q[L>>2];Q[e+4>>2]=Q[L+4>>2];uB(g,4486,e)|0;Q[G>>2]=10;Q[G+4>>2]=0;Q[e>>2]=Q[G>>2];Q[e+4>>2]=Q[G+4>>2];aB(g,4496,e)|0;Q[S>>2]=11;Q[S+4>>2]=0;Q[e>>2]=Q[S>>2];Q[e+4>>2]=Q[S+4>>2];aB(g,4508,e)|0;Q[R>>2]=3;Q[R+4>>2]=0;Q[e>>2]=Q[R>>2];Q[e+4>>2]=Q[R+4>>2];rB(g,4519,e)|0;Q[x>>2]=4;Q[x+4>>2]=0;Q[e>>2]=Q[x>>2];Q[e+4>>2]=Q[x+4>>2];yB(g,4530,e)|0;Q[m>>2]=19;Q[m+4>>2]=0;Q[e>>2]=Q[m>>2];Q[e+4>>2]=Q[m+4>>2];bB(g,4542,e)|0;Q[Z>>2]=12;Q[Z+4>>2]=0;Q[e>>2]=Q[Z>>2];Q[e+4>>2]=Q[Z+4>>2];ZB(g,4554,e)|0;Q[b>>2]=13;Q[b+4>>2]=0;Q[e>>2]=Q[b>>2];Q[e+4>>2]=Q[b+4>>2];mB(g,4568,e)|0;Q[y>>2]=2;Q[y+4>>2]=0;Q[e>>2]=Q[y>>2];Q[e+4>>2]=Q[y+4>>2];xB(g,4578,e)|0;Q[u>>2]=20;Q[u+4>>2]=0;Q[e>>2]=Q[u>>2];Q[e+4>>2]=Q[u+4>>2];RB(g,4587,e)|0;Q[d>>2]=22;Q[d+4>>2]=0;Q[e>>2]=Q[d>>2];Q[e+4>>2]=Q[d+4>>2];sB(g,4602,e)|0;Q[o>>2]=23;Q[o+4>>2]=0;Q[e>>2]=Q[o>>2];Q[e+4>>2]=Q[o+4>>2];sB(g,4619,e)|0;Q[r>>2]=14;Q[r+4>>2]=0;Q[e>>2]=Q[r>>2];Q[e+4>>2]=Q[r+4>>2];SB(g,4629,e)|0;Q[a>>2]=1;Q[a+4>>2]=0;Q[e>>2]=Q[a>>2];Q[e+4>>2]=Q[a+4>>2];GB(g,4637,e)|0;Q[A>>2]=4;Q[A+4>>2]=0;Q[e>>2]=Q[A>>2];Q[e+4>>2]=Q[A+4>>2];dB(g,4653,e)|0;Q[c>>2]=5;Q[c+4>>2]=0;Q[e>>2]=Q[c>>2];Q[e+4>>2]=Q[c+4>>2];dB(g,4669,e)|0;Q[i>>2]=6;Q[i+4>>2]=0;Q[e>>2]=Q[i>>2];Q[e+4>>2]=Q[i+4>>2];dB(g,4686,e)|0;Q[s>>2]=7;Q[s+4>>2]=0;Q[e>>2]=Q[s>>2];Q[e+4>>2]=Q[s+4>>2];dB(g,4701,e)|0;Q[U>>2]=8;Q[U+4>>2]=0;Q[e>>2]=Q[U>>2];Q[e+4>>2]=Q[U+4>>2];dB(g,4719,e)|0;Q[n>>2]=9;Q[n+4>>2]=0;Q[e>>2]=Q[n>>2];Q[e+4>>2]=Q[n+4>>2];dB(g,4736,e)|0;Q[B>>2]=21;Q[B+4>>2]=0;Q[e>>2]=Q[B>>2];Q[e+4>>2]=Q[B+4>>2];LB(g,4754,e)|0;Q[F>>2]=2;Q[F+4>>2]=0;Q[e>>2]=Q[F>>2];Q[e+4>>2]=Q[F+4>>2];uB(g,4772,e)|0;Q[C>>2]=3;Q[C+4>>2]=0;Q[e>>2]=Q[C>>2];Q[e+4>>2]=Q[C+4>>2];uB(g,4790,e)|0;Q[t>>2]=4;Q[t+4>>2]=0;Q[e>>2]=Q[t>>2];Q[e+4>>2]=Q[t+4>>2];uB(g,4808,e)|0;l=I;return}function FB(g,I){g=g|0;I=I|0;var e=0;e=pr()|0;Q[g>>2]=e;Er(e,I);Ub(Q[g>>2]|0);return}function BB(g,I,e){g=g|0;I=I|0;e=e|0;ar(g,hB(I)|0,e,0);return g|0}function nB(g,I,e){g=g|0;I=I|0;e=e|0;Ka(g,hB(I)|0,e,0);return g|0}function UB(g,I,e){g=g|0;I=I|0;e=e|0;Da(g,hB(I)|0,e,0);return g|0}function sB(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0;t=l;l=l+16|0;C=t+8|0;F=t;B=Q[e+4>>2]|0;Q[F>>2]=Q[e>>2];Q[F+4>>2]=B;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];ca(g,I,C);l=t;return g|0}function iB(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0;t=l;l=l+16|0;C=t+8|0;F=t;B=Q[e+4>>2]|0;Q[F>>2]=Q[e>>2];Q[F+4>>2]=B;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];wl(g,I,C);l=t;return g|0}function cB(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0;t=l;l=l+16|0;C=t+8|0;F=t;B=Q[e+4>>2]|0;Q[F>>2]=Q[e>>2];Q[F+4>>2]=B;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];Rl(g,I,C);l=t;return g|0}function AB(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0;t=l;l=l+16|0;C=t+8|0;F=t;B=Q[e+4>>2]|0;Q[F>>2]=Q[e>>2];Q[F+4>>2]=B;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];Fl(g,I,C);l=t;return g|0}function lB(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0;t=l;l=l+16|0;C=t+8|0;F=t;B=Q[e+4>>2]|0;Q[F>>2]=Q[e>>2];Q[F+4>>2]=B;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];HA(g,I,C);l=t;return g|0}function aB(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0;t=l;l=l+16|0;C=t+8|0;F=t;B=Q[e+4>>2]|0;Q[F>>2]=Q[e>>2];Q[F+4>>2]=B;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];ZA(g,I,C);l=t;return g|0}function rB(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0;t=l;l=l+16|0;C=t+8|0;F=t;B=Q[e+4>>2]|0;Q[F>>2]=Q[e>>2];Q[F+4>>2]=B;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];tA(g,I,C);l=t;return g|0}function oB(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0;t=l;l=l+16|0;C=t+8|0;F=t;B=Q[e+4>>2]|0;Q[F>>2]=Q[e>>2];Q[F+4>>2]=B;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];mc(g,I,C);l=t;return g|0}function dB(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0;t=l;l=l+16|0;C=t+8|0;F=t;B=Q[e+4>>2]|0;Q[F>>2]=Q[e>>2];Q[F+4>>2]=B;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];Cc(g,I,C);l=t;return g|0}function uB(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0;t=l;l=l+16|0;C=t+8|0;F=t;B=Q[e+4>>2]|0;Q[F>>2]=Q[e>>2];Q[F+4>>2]=B;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];vi(g,I,C);l=t;return g|0}function yB(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0;t=l;l=l+16|0;C=t+8|0;F=t;B=Q[e+4>>2]|0;Q[F>>2]=Q[e>>2];Q[F+4>>2]=B;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];yi(g,I,C);l=t;return g|0}function bB(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0;t=l;l=l+16|0;C=t+8|0;F=t;B=Q[e+4>>2]|0;Q[F>>2]=Q[e>>2];Q[F+4>>2]=B;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];qs(g,I,C);l=t;return g|0}function ZB(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0;t=l;l=l+16|0;C=t+8|0;F=t;B=Q[e+4>>2]|0;Q[F>>2]=Q[e>>2];Q[F+4>>2]=B;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];ps(g,I,C);l=t;return g|0}function mB(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0;t=l;l=l+16|0;C=t+8|0;F=t;B=Q[e+4>>2]|0;Q[F>>2]=Q[e>>2];Q[F+4>>2]=B;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];As(g,I,C);l=t;return g|0}function xB(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0;t=l;l=l+16|0;C=t+8|0;F=t;B=Q[e+4>>2]|0;Q[F>>2]=Q[e>>2];Q[F+4>>2]=B;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];wU(g,I,C);l=t;return g|0}function RB(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0;t=l;l=l+16|0;C=t+8|0;F=t;B=Q[e+4>>2]|0;Q[F>>2]=Q[e>>2];Q[F+4>>2]=B;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];yU(g,I,C);l=t;return g|0}function SB(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0;t=l;l=l+16|0;C=t+8|0;F=t;B=Q[e+4>>2]|0;Q[F>>2]=Q[e>>2];Q[F+4>>2]=B;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];gU(g,I,C);l=t;return g|0}function GB(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0;t=l;l=l+16|0;C=t+8|0;F=t;B=Q[e+4>>2]|0;Q[F>>2]=Q[e>>2];Q[F+4>>2]=B;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];Vn(g,I,C);l=t;return g|0}function LB(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0;t=l;l=l+16|0;C=t+8|0;F=t;B=Q[e+4>>2]|0;Q[F>>2]=Q[e>>2];Q[F+4>>2]=B;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];VB(g,I,C);l=t;return g|0}function VB(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0;t=l;l=l+16|0;C=t+8|0;F=t;n=Q[e>>2]|0;B=Q[e+4>>2]|0;e=hB(I)|0;Q[F>>2]=n;Q[F+4>>2]=B;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];DB(g,e,C,1);l=t;return}function hB(g){g=g|0;return g|0}function DB(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0,F=0,B=0,n=0,U=0,s=0,i=0;C=l;l=l+32|0;F=C+16|0;i=C+8|0;n=C;s=Q[e>>2]|0;U=Q[e+4>>2]|0;B=Q[g>>2]|0;g=pB()|0;Q[i>>2]=s;Q[i+4>>2]=U;Q[F>>2]=Q[i>>2];Q[F+4>>2]=Q[i+4>>2];e=EB(F)|0;Q[n>>2]=s;Q[n+4>>2]=U;Q[F>>2]=Q[n>>2];Q[F+4>>2]=Q[n+4>>2];WB(B,I,g,e,NB(F,t)|0,t);l=C;return}function pB(){var g=0,I=0;if(!(t[7616]|0)){zB(9136);fg(24,9136,o|0)|0;I=7616;Q[I>>2]=1;Q[I+4>>2]=0}if(!(KB(9136)|0)){g=9136;I=g+36|0;do{Q[g>>2]=0;g=g+4|0}while((g|0)<(I|0));zB(9136)}return 9136}function EB(g){g=g|0;return 0}function NB(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0;i=l;l=l+32|0;C=i+24|0;B=i+16|0;n=i;U=i+8|0;F=Q[g>>2]|0;t=Q[g+4>>2]|0;Q[n>>2]=F;Q[n+4>>2]=t;c=pB()|0;s=c+24|0;g=vB(I,4)|0;Q[U>>2]=g;I=c+28|0;e=Q[I>>2]|0;if(e>>>0<(Q[c+32>>2]|0)>>>0){Q[B>>2]=F;Q[B+4>>2]=t;Q[C>>2]=Q[B>>2];Q[C+4>>2]=Q[B+4>>2];kB(e,C,g);g=(Q[I>>2]|0)+12|0;Q[I>>2]=g}else{HB(s,n,U);g=Q[I>>2]|0}l=i;return((g-(Q[s>>2]|0)|0)/12|0)+-1|0}function WB(g,I,e,t,C,F){g=g|0;I=I|0;e=e|0;t=t|0;C=C|0;F=F|0;var B=0,n=0,U=0,s=0,i=0,c=0,A=0,a=0;B=l;l=l+32|0;A=B+24|0;c=B+20|0;U=B+16|0;i=B+12|0;s=B+8|0;n=B+4|0;a=B;Q[c>>2]=I;Q[U>>2]=e;Q[i>>2]=t;Q[s>>2]=C;Q[n>>2]=F;F=g+28|0;Q[a>>2]=Q[F>>2];Q[A>>2]=Q[a>>2];fB(g+24|0,A,c,i,s,U,n)|0;Q[F>>2]=Q[Q[F>>2]>>2];l=B;return}function fB(g,I,e,t,C,F,B){g=g|0;I=I|0;e=e|0;t=t|0;C=C|0;F=F|0;B=B|0;g=XB(I)|0;I=zG(24)|0;JB(I+4|0,Q[e>>2]|0,Q[t>>2]|0,Q[C>>2]|0,Q[F>>2]|0,Q[B>>2]|0);Q[I>>2]=Q[g>>2];Q[g>>2]=I;return I|0}function XB(g){g=g|0;return Q[g>>2]|0}function JB(g,I,e,t,C,F){g=g|0;I=I|0;e=e|0;t=t|0;C=C|0;F=F|0;Q[g>>2]=I;Q[g+4>>2]=e;Q[g+8>>2]=t;Q[g+12>>2]=C;Q[g+16>>2]=F;return}function vB(g,I){g=g|0;I=I|0;return I|g|0}function kB(g,I,e){g=g|0;I=I|0;e=e|0;var t=0;t=Q[I+4>>2]|0;Q[g>>2]=Q[I>>2];Q[g+4>>2]=t;Q[g+8>>2]=e;return}function HB(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0,A=0;s=l;l=l+48|0;t=s+32|0;B=s+24|0;n=s;U=g+4|0;C=(((Q[U>>2]|0)-(Q[g>>2]|0)|0)/12|0)+1|0;F=MB(g)|0;if(F>>>0<C>>>0)vG(g);else{i=Q[g>>2]|0;A=((Q[g+8>>2]|0)-i|0)/12|0;c=A<<1;YB(n,A>>>0<F>>>1>>>0?c>>>0<C>>>0?C:c:F,((Q[U>>2]|0)-i|0)/12|0,g+8|0);U=n+8|0;F=Q[U>>2]|0;C=Q[I+4>>2]|0;e=Q[e>>2]|0;Q[B>>2]=Q[I>>2];Q[B+4>>2]=C;Q[t>>2]=Q[B>>2];Q[t+4>>2]=Q[B+4>>2];kB(F,t,e);Q[U>>2]=(Q[U>>2]|0)+12;wB(g,n);TB(n);l=s;return}}function MB(g){g=g|0;return 357913941}function YB(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0;Q[g+12>>2]=0;Q[g+16>>2]=t;do{if(I){if(I>>>0>357913941)Kg();else{C=zG(I*12|0)|0;break}}else C=0}while(0);Q[g>>2]=C;t=C+(e*12|0)|0;Q[g+8>>2]=t;Q[g+4>>2]=t;Q[g+12>>2]=C+(I*12|0);return}function wB(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0;t=Q[g>>2]|0;B=g+4|0;F=I+4|0;C=(Q[B>>2]|0)-t|0;e=(Q[F>>2]|0)+(((C|0)/-12|0)*12|0)|0;Q[F>>2]=e;if((C|0)>0){tL(e|0,t|0,C|0)|0;t=F;e=Q[F>>2]|0}else t=F;F=Q[g>>2]|0;Q[g>>2]=e;Q[t>>2]=F;F=I+8|0;C=Q[B>>2]|0;Q[B>>2]=Q[F>>2];Q[F>>2]=C;F=g+8|0;B=I+12|0;g=Q[F>>2]|0;Q[F>>2]=Q[B>>2];Q[B>>2]=g;Q[I>>2]=Q[t>>2];return}function TB(g){g=g|0;var I=0,e=0,t=0;I=Q[g+4>>2]|0;e=g+8|0;t=Q[e>>2]|0;if((t|0)!=(I|0))Q[e>>2]=t+(~(((t+-12-I|0)>>>0)/12|0)*12|0);g=Q[g>>2]|0;if(g|0)KG(g);return}function zB(g){g=g|0;PB(g);return}function OB(g){g=g|0;jB(g+24|0);return}function KB(g){g=g|0;return Q[g>>2]|0}function jB(g){g=g|0;var I=0,e=0,t=0;e=Q[g>>2]|0;t=e;if(e|0){g=g+4|0;I=Q[g>>2]|0;if((I|0)!=(e|0))Q[g>>2]=I+(~(((I+-12-t|0)>>>0)/12|0)*12|0);KG(e)}return}function PB(g){g=g|0;var I=0;I=_B()|0;gn(g,2,3,I,qB()|0,0);Q[g+24>>2]=0;Q[g+28>>2]=0;Q[g+32>>2]=0;return}function _B(){return 9228}function qB(){return 1140}function $B(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0;e=l;l=l+16|0;t=e+8|0;C=e;F=In(g)|0;g=Q[F+4>>2]|0;Q[C>>2]=Q[F>>2];Q[C+4>>2]=g;Q[t>>2]=Q[C>>2];Q[t+4>>2]=Q[C+4>>2];I=en(I,t)|0;l=e;return I|0}function gn(g,I,e,t,C,F){g=g|0;I=I|0;e=e|0;t=t|0;C=C|0;F=F|0;Q[g>>2]=I;Q[g+4>>2]=e;Q[g+8>>2]=t;Q[g+12>>2]=C;Q[g+16>>2]=F;return}function In(g){g=g|0;return(Q[(pB()|0)+24>>2]|0)+(g*12|0)|0}function en(g,I){g=g|0;I=I|0;var e=0,t=0,C=0;C=l;l=l+48|0;t=C;e=Q[I>>2]|0;I=Q[I+4>>2]|0;g=g+(I>>1)|0;if(I&1)e=Q[(Q[g>>2]|0)+e>>2]|0;lV[e&31](t,g);t=tn(t)|0;l=C;return t|0}function tn(g){g=g|0;var I=0,e=0,t=0,C=0;C=l;l=l+32|0;I=C+12|0;e=C;t=Qn(Cn()|0)|0;if(!t)g=sn(g)|0;else{Fn(I,t);Bn(e,I);nn(g,e);g=Un(I)|0}l=C;return g|0}function Cn(){var g=0;if(!(t[7632]|0)){Zn(9184);fg(25,9184,o|0)|0;g=7632;Q[g>>2]=1;Q[g+4>>2]=0}return 9184}function Qn(g){g=g|0;return Q[g+36>>2]|0}function Fn(g,I){g=g|0;I=I|0;Q[g>>2]=I;Q[g+4>>2]=g;Q[g+8>>2]=0;return}function Bn(g,I){g=g|0;I=I|0;Q[g>>2]=Q[I>>2];Q[g+4>>2]=Q[I+4>>2];Q[g+8>>2]=0;return}function nn(g,I){g=g|0;I=I|0;rn(I,g,g+8|0,g+16|0,g+24|0,g+32|0,g+40|0)|0;return}function Un(g){g=g|0;return Q[(Q[g+4>>2]|0)+8>>2]|0}function sn(g){g=g|0;var I=0,e=0,t=0,C=0,F=0,B=0,n=0,U=0;U=l;l=l+16|0;e=U+4|0;t=U;C=vm(8)|0;F=C;B=zG(48)|0;n=B;I=n+48|0;do{Q[n>>2]=Q[g>>2];n=n+4|0;g=g+4|0}while((n|0)<(I|0));I=F+4|0;Q[I>>2]=B;n=zG(8)|0;B=Q[I>>2]|0;Q[t>>2]=0;Q[e>>2]=Q[t>>2];cn(n,B,e);Q[C>>2]=n;l=U;return F|0}function cn(g,I,e){g=g|0;I=I|0;e=e|0;Q[g>>2]=I;e=zG(16)|0;Q[e+4>>2]=0;Q[e+8>>2]=0;Q[e>>2]=1092;Q[e+12>>2]=I;Q[g+4>>2]=e;return}function An(g){g=g|0;kG(g);KG(g);return}function ln(g){g=g|0;g=Q[g+12>>2]|0;if(g|0)KG(g);return}function an(g){g=g|0;KG(g);return}function rn(g,I,e,t,C,F,B){g=g|0;I=I|0;e=e|0;t=t|0;C=C|0;F=F|0;B=B|0;F=on(Q[g>>2]|0,I,e,t,C,F,B)|0;B=g+4|0;Q[(Q[B>>2]|0)+8>>2]=F;return Q[(Q[B>>2]|0)+8>>2]|0}function on(g,I,e,t,C,Q,F){g=g|0;I=I|0;e=e|0;t=t|0;C=C|0;Q=Q|0;F=F|0;var B=0,n=0;B=l;l=l+16|0;n=B;ZS(n);g=yF(g)|0;F=dn(g,+s[I>>3],+s[e>>3],+s[t>>3],+s[C>>3],+s[Q>>3],+s[F>>3])|0;xS(n);l=B;return F|0}function dn(g,I,e,t,C,Q,F){g=g|0;I=+I;e=+e;t=+t;C=+C;Q=+Q;F=+F;var B=0;B=mF(un()|0)|0;I=+xF(I);e=+xF(e);t=+xF(t);C=+xF(C);Q=+xF(Q);return Gg(0,B|0,g|0,+I,+e,+t,+C,+Q,+ +xF(F))|0}function un(){var g=0;if(!(t[7624]|0)){yn(9172);g=7624;Q[g>>2]=1;Q[g+4>>2]=0}return 9172}function yn(g){g=g|0;WF(g,bn()|0,6);return}function bn(){return 1112}function Zn(g){g=g|0;Ln(g);return}function mn(g){g=g|0;xn(g+24|0);Rn(g+16|0);return}function xn(g){g=g|0;Gn(g);return}function Rn(g){g=g|0;Sn(g);return}function Sn(g){g=g|0;var I=0,e=0;I=Q[g>>2]|0;if(I|0)do{e=I;I=Q[I>>2]|0;KG(e)}while((I|0)!=0);Q[g>>2]=0;return}function Gn(g){g=g|0;var I=0,e=0;I=Q[g>>2]|0;if(I|0)do{e=I;I=Q[I>>2]|0;KG(e)}while((I|0)!=0);Q[g>>2]=0;return}function Ln(g){g=g|0;var I=0;Q[g+16>>2]=0;Q[g+20>>2]=0;I=g+24|0;Q[I>>2]=0;Q[g+28>>2]=I;Q[g+36>>2]=0;t[g+40>>0]=0;t[g+41>>0]=0;return}function Vn(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0;t=l;l=l+16|0;C=t+8|0;F=t;n=Q[e>>2]|0;B=Q[e+4>>2]|0;e=hB(I)|0;Q[F>>2]=n;Q[F+4>>2]=B;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];hn(g,e,C,0);l=t;return}function hn(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0,F=0,B=0,n=0,U=0,s=0,i=0;C=l;l=l+32|0;F=C+16|0;i=C+8|0;n=C;s=Q[e>>2]|0;U=Q[e+4>>2]|0;B=Q[g>>2]|0;g=Dn()|0;Q[i>>2]=s;Q[i+4>>2]=U;Q[F>>2]=Q[i>>2];Q[F+4>>2]=Q[i+4>>2];e=pn(F)|0;Q[n>>2]=s;Q[n+4>>2]=U;Q[F>>2]=Q[n>>2];Q[F+4>>2]=Q[n+4>>2];WB(B,I,g,e,En(F,t)|0,t);l=C;return}function Dn(){var g=0,I=0;if(!(t[7640]|0)){kn(9232);fg(26,9232,o|0)|0;I=7640;Q[I>>2]=1;Q[I+4>>2]=0}if(!(KB(9232)|0)){g=9232;I=g+36|0;do{Q[g>>2]=0;g=g+4|0}while((g|0)<(I|0));kn(9232)}return 9232}function pn(g){g=g|0;return 0}function En(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0;i=l;l=l+32|0;C=i+24|0;B=i+16|0;n=i;U=i+8|0;F=Q[g>>2]|0;t=Q[g+4>>2]|0;Q[n>>2]=F;Q[n+4>>2]=t;c=Dn()|0;s=c+24|0;g=vB(I,4)|0;Q[U>>2]=g;I=c+28|0;e=Q[I>>2]|0;if(e>>>0<(Q[c+32>>2]|0)>>>0){Q[B>>2]=F;Q[B+4>>2]=t;Q[C>>2]=Q[B>>2];Q[C+4>>2]=Q[B+4>>2];Nn(e,C,g);g=(Q[I>>2]|0)+12|0;Q[I>>2]=g}else{Wn(s,n,U);g=Q[I>>2]|0}l=i;return((g-(Q[s>>2]|0)|0)/12|0)+-1|0}function Nn(g,I,e){g=g|0;I=I|0;e=e|0;var t=0;t=Q[I+4>>2]|0;Q[g>>2]=Q[I>>2];Q[g+4>>2]=t;Q[g+8>>2]=e;return}function Wn(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0,A=0;s=l;l=l+48|0;t=s+32|0;B=s+24|0;n=s;U=g+4|0;C=(((Q[U>>2]|0)-(Q[g>>2]|0)|0)/12|0)+1|0;F=fn(g)|0;if(F>>>0<C>>>0)vG(g);else{i=Q[g>>2]|0;A=((Q[g+8>>2]|0)-i|0)/12|0;c=A<<1;Xn(n,A>>>0<F>>>1>>>0?c>>>0<C>>>0?C:c:F,((Q[U>>2]|0)-i|0)/12|0,g+8|0);U=n+8|0;F=Q[U>>2]|0;C=Q[I+4>>2]|0;e=Q[e>>2]|0;Q[B>>2]=Q[I>>2];Q[B+4>>2]=C;Q[t>>2]=Q[B>>2];Q[t+4>>2]=Q[B+4>>2];Nn(F,t,e);Q[U>>2]=(Q[U>>2]|0)+12;Jn(g,n);vn(n);l=s;return}}function fn(g){g=g|0;return 357913941}function Xn(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0;Q[g+12>>2]=0;Q[g+16>>2]=t;do{if(I){if(I>>>0>357913941)Kg();else{C=zG(I*12|0)|0;break}}else C=0}while(0);Q[g>>2]=C;t=C+(e*12|0)|0;Q[g+8>>2]=t;Q[g+4>>2]=t;Q[g+12>>2]=C+(I*12|0);return}function Jn(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0;t=Q[g>>2]|0;B=g+4|0;F=I+4|0;C=(Q[B>>2]|0)-t|0;e=(Q[F>>2]|0)+(((C|0)/-12|0)*12|0)|0;Q[F>>2]=e;if((C|0)>0){tL(e|0,t|0,C|0)|0;t=F;e=Q[F>>2]|0}else t=F;F=Q[g>>2]|0;Q[g>>2]=e;Q[t>>2]=F;F=I+8|0;C=Q[B>>2]|0;Q[B>>2]=Q[F>>2];Q[F>>2]=C;F=g+8|0;B=I+12|0;g=Q[F>>2]|0;Q[F>>2]=Q[B>>2];Q[B>>2]=g;Q[I>>2]=Q[t>>2];return}function vn(g){g=g|0;var I=0,e=0,t=0;I=Q[g+4>>2]|0;e=g+8|0;t=Q[e>>2]|0;if((t|0)!=(I|0))Q[e>>2]=t+(~(((t+-12-I|0)>>>0)/12|0)*12|0);g=Q[g>>2]|0;if(g|0)KG(g);return}function kn(g){g=g|0;Yn(g);return}function Hn(g){g=g|0;Mn(g+24|0);return}function Mn(g){g=g|0;var I=0,e=0,t=0;e=Q[g>>2]|0;t=e;if(e|0){g=g+4|0;I=Q[g>>2]|0;if((I|0)!=(e|0))Q[g>>2]=I+(~(((I+-12-t|0)>>>0)/12|0)*12|0);KG(e)}return}function Yn(g){g=g|0;var I=0;I=_B()|0;gn(g,2,1,I,wn()|0,3);Q[g+24>>2]=0;Q[g+28>>2]=0;Q[g+32>>2]=0;return}function wn(){return 1144}function Tn(g,I,e,t,C){g=g|0;I=I|0;e=+e;t=+t;C=C|0;var F=0,B=0,n=0,U=0;F=l;l=l+16|0;B=F+8|0;n=F;U=zn(g)|0;g=Q[U+4>>2]|0;Q[n>>2]=Q[U>>2];Q[n+4>>2]=g;Q[B>>2]=Q[n>>2];Q[B+4>>2]=Q[n+4>>2];On(I,B,e,t,C);l=F;return}function zn(g){g=g|0;return(Q[(Dn()|0)+24>>2]|0)+(g*12|0)|0}function On(g,I,e,t,C){g=g|0;I=I|0;e=+e;t=+t;C=C|0;var F=0,B=0,n=0,U=0,s=0;s=l;l=l+16|0;B=s+2|0;n=s+1|0;U=s;F=Q[I>>2]|0;I=Q[I+4>>2]|0;g=g+(I>>1)|0;if(I&1)F=Q[(Q[g>>2]|0)+F>>2]|0;Kn(B,e);e=+jn(B,e);Kn(n,t);t=+jn(n,t);Pn(U,C);U=_n(U,C)|0;rV[F&1](g,e,t,U);l=s;return}function Kn(g,I){g=g|0;I=+I;return}function jn(g,I){g=g|0;I=+I;return+ +$n(I)}function Pn(g,I){g=g|0;I=I|0;return}function _n(g,I){g=g|0;I=I|0;return qn(I)|0}function qn(g){g=g|0;return g|0}function $n(g){g=+g;return+g}function gU(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0;t=l;l=l+16|0;C=t+8|0;F=t;n=Q[e>>2]|0;B=Q[e+4>>2]|0;e=hB(I)|0;Q[F>>2]=n;Q[F+4>>2]=B;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];IU(g,e,C,1);l=t;return}function IU(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0,F=0,B=0,n=0,U=0,s=0,i=0;C=l;l=l+32|0;F=C+16|0;i=C+8|0;n=C;s=Q[e>>2]|0;U=Q[e+4>>2]|0;B=Q[g>>2]|0;g=eU()|0;Q[i>>2]=s;Q[i+4>>2]=U;Q[F>>2]=Q[i>>2];Q[F+4>>2]=Q[i+4>>2];e=tU(F)|0;Q[n>>2]=s;Q[n+4>>2]=U;Q[F>>2]=Q[n>>2];Q[F+4>>2]=Q[n+4>>2];WB(B,I,g,e,CU(F,t)|0,t);l=C;return}function eU(){var g=0,I=0;if(!(t[7648]|0)){iU(9268);fg(27,9268,o|0)|0;I=7648;Q[I>>2]=1;Q[I+4>>2]=0}if(!(KB(9268)|0)){g=9268;I=g+36|0;do{Q[g>>2]=0;g=g+4|0}while((g|0)<(I|0));iU(9268)}return 9268}function tU(g){g=g|0;return 0}function CU(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0;i=l;l=l+32|0;C=i+24|0;B=i+16|0;n=i;U=i+8|0;F=Q[g>>2]|0;t=Q[g+4>>2]|0;Q[n>>2]=F;Q[n+4>>2]=t;c=eU()|0;s=c+24|0;g=vB(I,4)|0;Q[U>>2]=g;I=c+28|0;e=Q[I>>2]|0;if(e>>>0<(Q[c+32>>2]|0)>>>0){Q[B>>2]=F;Q[B+4>>2]=t;Q[C>>2]=Q[B>>2];Q[C+4>>2]=Q[B+4>>2];QU(e,C,g);g=(Q[I>>2]|0)+12|0;Q[I>>2]=g}else{FU(s,n,U);g=Q[I>>2]|0}l=i;return((g-(Q[s>>2]|0)|0)/12|0)+-1|0}function QU(g,I,e){g=g|0;I=I|0;e=e|0;var t=0;t=Q[I+4>>2]|0;Q[g>>2]=Q[I>>2];Q[g+4>>2]=t;Q[g+8>>2]=e;return}function FU(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0,A=0;s=l;l=l+48|0;t=s+32|0;B=s+24|0;n=s;U=g+4|0;C=(((Q[U>>2]|0)-(Q[g>>2]|0)|0)/12|0)+1|0;F=BU(g)|0;if(F>>>0<C>>>0)vG(g);else{i=Q[g>>2]|0;A=((Q[g+8>>2]|0)-i|0)/12|0;c=A<<1;nU(n,A>>>0<F>>>1>>>0?c>>>0<C>>>0?C:c:F,((Q[U>>2]|0)-i|0)/12|0,g+8|0);U=n+8|0;F=Q[U>>2]|0;C=Q[I+4>>2]|0;e=Q[e>>2]|0;Q[B>>2]=Q[I>>2];Q[B+4>>2]=C;Q[t>>2]=Q[B>>2];Q[t+4>>2]=Q[B+4>>2];QU(F,t,e);Q[U>>2]=(Q[U>>2]|0)+12;UU(g,n);sU(n);l=s;return}}function BU(g){g=g|0;return 357913941}function nU(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0;Q[g+12>>2]=0;Q[g+16>>2]=t;do{if(I){if(I>>>0>357913941)Kg();else{C=zG(I*12|0)|0;break}}else C=0}while(0);Q[g>>2]=C;t=C+(e*12|0)|0;Q[g+8>>2]=t;Q[g+4>>2]=t;Q[g+12>>2]=C+(I*12|0);return}function UU(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0;t=Q[g>>2]|0;B=g+4|0;F=I+4|0;C=(Q[B>>2]|0)-t|0;e=(Q[F>>2]|0)+(((C|0)/-12|0)*12|0)|0;Q[F>>2]=e;if((C|0)>0){tL(e|0,t|0,C|0)|0;t=F;e=Q[F>>2]|0}else t=F;F=Q[g>>2]|0;Q[g>>2]=e;Q[t>>2]=F;F=I+8|0;C=Q[B>>2]|0;Q[B>>2]=Q[F>>2];Q[F>>2]=C;F=g+8|0;B=I+12|0;g=Q[F>>2]|0;Q[F>>2]=Q[B>>2];Q[B>>2]=g;Q[I>>2]=Q[t>>2];return}function sU(g){g=g|0;var I=0,e=0,t=0;I=Q[g+4>>2]|0;e=g+8|0;t=Q[e>>2]|0;if((t|0)!=(I|0))Q[e>>2]=t+(~(((t+-12-I|0)>>>0)/12|0)*12|0);g=Q[g>>2]|0;if(g|0)KG(g);return}function iU(g){g=g|0;lU(g);return}function cU(g){g=g|0;AU(g+24|0);return}function AU(g){g=g|0;var I=0,e=0,t=0;e=Q[g>>2]|0;t=e;if(e|0){g=g+4|0;I=Q[g>>2]|0;if((I|0)!=(e|0))Q[g>>2]=I+(~(((I+-12-t|0)>>>0)/12|0)*12|0);KG(e)}return}function lU(g){g=g|0;var I=0;I=_B()|0;gn(g,2,4,I,aU()|0,0);Q[g+24>>2]=0;Q[g+28>>2]=0;Q[g+32>>2]=0;return}function aU(){return 1160}function rU(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0;e=l;l=l+16|0;t=e+8|0;C=e;F=oU(g)|0;g=Q[F+4>>2]|0;Q[C>>2]=Q[F>>2];Q[C+4>>2]=g;Q[t>>2]=Q[C>>2];Q[t+4>>2]=Q[C+4>>2];I=dU(I,t)|0;l=e;return I|0}function oU(g){g=g|0;return(Q[(eU()|0)+24>>2]|0)+(g*12|0)|0}function dU(g,I){g=g|0;I=I|0;var e=0;e=Q[I>>2]|0;I=Q[I+4>>2]|0;g=g+(I>>1)|0;if(I&1)e=Q[(Q[g>>2]|0)+e>>2]|0;return uU(aV[e&31](g)|0)|0}function uU(g){g=g|0;return g&1|0}function yU(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0;t=l;l=l+16|0;C=t+8|0;F=t;n=Q[e>>2]|0;B=Q[e+4>>2]|0;e=hB(I)|0;Q[F>>2]=n;Q[F+4>>2]=B;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];bU(g,e,C,0);l=t;return}function bU(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0,F=0,B=0,n=0,U=0,s=0,i=0;C=l;l=l+32|0;F=C+16|0;i=C+8|0;n=C;s=Q[e>>2]|0;U=Q[e+4>>2]|0;B=Q[g>>2]|0;g=ZU()|0;Q[i>>2]=s;Q[i+4>>2]=U;Q[F>>2]=Q[i>>2];Q[F+4>>2]=Q[i+4>>2];e=mU(F)|0;Q[n>>2]=s;Q[n+4>>2]=U;Q[F>>2]=Q[n>>2];Q[F+4>>2]=Q[n+4>>2];WB(B,I,g,e,xU(F,t)|0,t);l=C;return}function ZU(){var g=0,I=0;if(!(t[7656]|0)){DU(9304);fg(28,9304,o|0)|0;I=7656;Q[I>>2]=1;Q[I+4>>2]=0}if(!(KB(9304)|0)){g=9304;I=g+36|0;do{Q[g>>2]=0;g=g+4|0}while((g|0)<(I|0));DU(9304)}return 9304}function mU(g){g=g|0;return 0}function xU(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0;i=l;l=l+32|0;C=i+24|0;B=i+16|0;n=i;U=i+8|0;F=Q[g>>2]|0;t=Q[g+4>>2]|0;Q[n>>2]=F;Q[n+4>>2]=t;c=ZU()|0;s=c+24|0;g=vB(I,4)|0;Q[U>>2]=g;I=c+28|0;e=Q[I>>2]|0;if(e>>>0<(Q[c+32>>2]|0)>>>0){Q[B>>2]=F;Q[B+4>>2]=t;Q[C>>2]=Q[B>>2];Q[C+4>>2]=Q[B+4>>2];RU(e,C,g);g=(Q[I>>2]|0)+12|0;Q[I>>2]=g}else{SU(s,n,U);g=Q[I>>2]|0}l=i;return((g-(Q[s>>2]|0)|0)/12|0)+-1|0}function RU(g,I,e){g=g|0;I=I|0;e=e|0;var t=0;t=Q[I+4>>2]|0;Q[g>>2]=Q[I>>2];Q[g+4>>2]=t;Q[g+8>>2]=e;return}function SU(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0,A=0;s=l;l=l+48|0;t=s+32|0;B=s+24|0;n=s;U=g+4|0;C=(((Q[U>>2]|0)-(Q[g>>2]|0)|0)/12|0)+1|0;F=GU(g)|0;if(F>>>0<C>>>0)vG(g);else{i=Q[g>>2]|0;A=((Q[g+8>>2]|0)-i|0)/12|0;c=A<<1;LU(n,A>>>0<F>>>1>>>0?c>>>0<C>>>0?C:c:F,((Q[U>>2]|0)-i|0)/12|0,g+8|0);U=n+8|0;F=Q[U>>2]|0;C=Q[I+4>>2]|0;e=Q[e>>2]|0;Q[B>>2]=Q[I>>2];Q[B+4>>2]=C;Q[t>>2]=Q[B>>2];Q[t+4>>2]=Q[B+4>>2];RU(F,t,e);Q[U>>2]=(Q[U>>2]|0)+12;VU(g,n);hU(n);l=s;return}}function GU(g){g=g|0;return 357913941}function LU(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0;Q[g+12>>2]=0;Q[g+16>>2]=t;do{if(I){if(I>>>0>357913941)Kg();else{C=zG(I*12|0)|0;break}}else C=0}while(0);Q[g>>2]=C;t=C+(e*12|0)|0;Q[g+8>>2]=t;Q[g+4>>2]=t;Q[g+12>>2]=C+(I*12|0);return}function VU(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0;t=Q[g>>2]|0;B=g+4|0;F=I+4|0;C=(Q[B>>2]|0)-t|0;e=(Q[F>>2]|0)+(((C|0)/-12|0)*12|0)|0;Q[F>>2]=e;if((C|0)>0){tL(e|0,t|0,C|0)|0;t=F;e=Q[F>>2]|0}else t=F;F=Q[g>>2]|0;Q[g>>2]=e;Q[t>>2]=F;F=I+8|0;C=Q[B>>2]|0;Q[B>>2]=Q[F>>2];Q[F>>2]=C;F=g+8|0;B=I+12|0;g=Q[F>>2]|0;Q[F>>2]=Q[B>>2];Q[B>>2]=g;Q[I>>2]=Q[t>>2];return}function hU(g){g=g|0;var I=0,e=0,t=0;I=Q[g+4>>2]|0;e=g+8|0;t=Q[e>>2]|0;if((t|0)!=(I|0))Q[e>>2]=t+(~(((t+-12-I|0)>>>0)/12|0)*12|0);g=Q[g>>2]|0;if(g|0)KG(g);return}function DU(g){g=g|0;NU(g);return}function pU(g){g=g|0;EU(g+24|0);return}function EU(g){g=g|0;var I=0,e=0,t=0;e=Q[g>>2]|0;t=e;if(e|0){g=g+4|0;I=Q[g>>2]|0;if((I|0)!=(e|0))Q[g>>2]=I+(~(((I+-12-t|0)>>>0)/12|0)*12|0);KG(e)}return}function NU(g){g=g|0;var I=0;I=_B()|0;gn(g,2,5,I,WU()|0,1);Q[g+24>>2]=0;Q[g+28>>2]=0;Q[g+32>>2]=0;return}function WU(){return 1164}function fU(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0;t=l;l=l+16|0;C=t+8|0;F=t;B=XU(g)|0;g=Q[B+4>>2]|0;Q[F>>2]=Q[B>>2];Q[F+4>>2]=g;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];JU(I,C,e);l=t;return}function XU(g){g=g|0;return(Q[(ZU()|0)+24>>2]|0)+(g*12|0)|0}function JU(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0;F=l;l=l+16|0;C=F;t=Q[I>>2]|0;I=Q[I+4>>2]|0;g=g+(I>>1)|0;if(I&1)t=Q[(Q[g>>2]|0)+t>>2]|0;vU(C,e);e=kU(C,e)|0;lV[t&31](g,e);HU(C);l=F;return}function vU(g,I){g=g|0;I=I|0;MU(g,I);return}function kU(g,I){g=g|0;I=I|0;return g|0}function HU(g){g=g|0;_C(g);return}function MU(g,I){g=g|0;I=I|0;YU(g,I);return}function YU(g,I){g=g|0;I=I|0;Q[g>>2]=I;return}function wU(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0;t=l;l=l+16|0;C=t+8|0;F=t;n=Q[e>>2]|0;B=Q[e+4>>2]|0;e=hB(I)|0;Q[F>>2]=n;Q[F+4>>2]=B;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];TU(g,e,C,0);l=t;return}function TU(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0,F=0,B=0,n=0,U=0,s=0,i=0;C=l;l=l+32|0;F=C+16|0;i=C+8|0;n=C;s=Q[e>>2]|0;U=Q[e+4>>2]|0;B=Q[g>>2]|0;g=zU()|0;Q[i>>2]=s;Q[i+4>>2]=U;Q[F>>2]=Q[i>>2];Q[F+4>>2]=Q[i+4>>2];e=OU(F)|0;Q[n>>2]=s;Q[n+4>>2]=U;Q[F>>2]=Q[n>>2];Q[F+4>>2]=Q[n+4>>2];WB(B,I,g,e,KU(F,t)|0,t);l=C;return}function zU(){var g=0,I=0;if(!(t[7664]|0)){Is(9340);fg(29,9340,o|0)|0;I=7664;Q[I>>2]=1;Q[I+4>>2]=0}if(!(KB(9340)|0)){g=9340;I=g+36|0;do{Q[g>>2]=0;g=g+4|0}while((g|0)<(I|0));Is(9340)}return 9340}function OU(g){g=g|0;return 0}function KU(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0;i=l;l=l+32|0;C=i+24|0;B=i+16|0;n=i;U=i+8|0;F=Q[g>>2]|0;t=Q[g+4>>2]|0;Q[n>>2]=F;Q[n+4>>2]=t;c=zU()|0;s=c+24|0;g=vB(I,4)|0;Q[U>>2]=g;I=c+28|0;e=Q[I>>2]|0;if(e>>>0<(Q[c+32>>2]|0)>>>0){Q[B>>2]=F;Q[B+4>>2]=t;Q[C>>2]=Q[B>>2];Q[C+4>>2]=Q[B+4>>2];jU(e,C,g);g=(Q[I>>2]|0)+12|0;Q[I>>2]=g}else{PU(s,n,U);g=Q[I>>2]|0}l=i;return((g-(Q[s>>2]|0)|0)/12|0)+-1|0}function jU(g,I,e){g=g|0;I=I|0;e=e|0;var t=0;t=Q[I+4>>2]|0;Q[g>>2]=Q[I>>2];Q[g+4>>2]=t;Q[g+8>>2]=e;return}function PU(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0,A=0;s=l;l=l+48|0;t=s+32|0;B=s+24|0;n=s;U=g+4|0;C=(((Q[U>>2]|0)-(Q[g>>2]|0)|0)/12|0)+1|0;F=_U(g)|0;if(F>>>0<C>>>0)vG(g);else{i=Q[g>>2]|0;A=((Q[g+8>>2]|0)-i|0)/12|0;c=A<<1;qU(n,A>>>0<F>>>1>>>0?c>>>0<C>>>0?C:c:F,((Q[U>>2]|0)-i|0)/12|0,g+8|0);U=n+8|0;F=Q[U>>2]|0;C=Q[I+4>>2]|0;e=Q[e>>2]|0;Q[B>>2]=Q[I>>2];Q[B+4>>2]=C;Q[t>>2]=Q[B>>2];Q[t+4>>2]=Q[B+4>>2];jU(F,t,e);Q[U>>2]=(Q[U>>2]|0)+12;$U(g,n);gs(n);l=s;return}}function _U(g){g=g|0;return 357913941}function qU(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0;Q[g+12>>2]=0;Q[g+16>>2]=t;do{if(I){if(I>>>0>357913941)Kg();else{C=zG(I*12|0)|0;break}}else C=0}while(0);Q[g>>2]=C;t=C+(e*12|0)|0;Q[g+8>>2]=t;Q[g+4>>2]=t;Q[g+12>>2]=C+(I*12|0);return}function $U(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0;t=Q[g>>2]|0;B=g+4|0;F=I+4|0;C=(Q[B>>2]|0)-t|0;e=(Q[F>>2]|0)+(((C|0)/-12|0)*12|0)|0;Q[F>>2]=e;if((C|0)>0){tL(e|0,t|0,C|0)|0;t=F;e=Q[F>>2]|0}else t=F;F=Q[g>>2]|0;Q[g>>2]=e;Q[t>>2]=F;F=I+8|0;C=Q[B>>2]|0;Q[B>>2]=Q[F>>2];Q[F>>2]=C;F=g+8|0;B=I+12|0;g=Q[F>>2]|0;Q[F>>2]=Q[B>>2];Q[B>>2]=g;Q[I>>2]=Q[t>>2];return}function gs(g){g=g|0;var I=0,e=0,t=0;I=Q[g+4>>2]|0;e=g+8|0;t=Q[e>>2]|0;if((t|0)!=(I|0))Q[e>>2]=t+(~(((t+-12-I|0)>>>0)/12|0)*12|0);g=Q[g>>2]|0;if(g|0)KG(g);return}function Is(g){g=g|0;Cs(g);return}function es(g){g=g|0;ts(g+24|0);return}function ts(g){g=g|0;var I=0,e=0,t=0;e=Q[g>>2]|0;t=e;if(e|0){g=g+4|0;I=Q[g>>2]|0;if((I|0)!=(e|0))Q[g>>2]=I+(~(((I+-12-t|0)>>>0)/12|0)*12|0);KG(e)}return}function Cs(g){g=g|0;var I=0;I=_B()|0;gn(g,2,4,I,Qs()|0,1);Q[g+24>>2]=0;Q[g+28>>2]=0;Q[g+32>>2]=0;return}function Qs(){return 1180}function Fs(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0;t=l;l=l+16|0;C=t+8|0;F=t;B=Bs(g)|0;g=Q[B+4>>2]|0;Q[F>>2]=Q[B>>2];Q[F+4>>2]=g;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];e=ns(I,C,e)|0;l=t;return e|0}function Bs(g){g=g|0;return(Q[(zU()|0)+24>>2]|0)+(g*12|0)|0}function ns(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0;F=l;l=l+16|0;C=F;t=Q[I>>2]|0;I=Q[I+4>>2]|0;g=g+(I>>1)|0;if(I&1)t=Q[(Q[g>>2]|0)+t>>2]|0;Us(C,e);C=ss(C,e)|0;C=is(ZV[t&15](g,C)|0)|0;l=F;return C|0}function Us(g,I){g=g|0;I=I|0;return}function ss(g,I){g=g|0;I=I|0;return cs(I)|0}function is(g){g=g|0;return g|0}function cs(g){g=g|0;return g|0}function As(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0;t=l;l=l+16|0;C=t+8|0;F=t;n=Q[e>>2]|0;B=Q[e+4>>2]|0;e=hB(I)|0;Q[F>>2]=n;Q[F+4>>2]=B;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];ls(g,e,C,0);l=t;return}function ls(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0,F=0,B=0,n=0,U=0,s=0,i=0;C=l;l=l+32|0;F=C+16|0;i=C+8|0;n=C;s=Q[e>>2]|0;U=Q[e+4>>2]|0;B=Q[g>>2]|0;g=as()|0;Q[i>>2]=s;Q[i+4>>2]=U;Q[F>>2]=Q[i>>2];Q[F+4>>2]=Q[i+4>>2];e=rs(F)|0;Q[n>>2]=s;Q[n+4>>2]=U;Q[F>>2]=Q[n>>2];Q[F+4>>2]=Q[n+4>>2];WB(B,I,g,e,os(F,t)|0,t);l=C;return}function as(){var g=0,I=0;if(!(t[7672]|0)){xs(9376);fg(30,9376,o|0)|0;I=7672;Q[I>>2]=1;Q[I+4>>2]=0}if(!(KB(9376)|0)){g=9376;I=g+36|0;do{Q[g>>2]=0;g=g+4|0}while((g|0)<(I|0));xs(9376)}return 9376}function rs(g){g=g|0;return 0}function os(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0;i=l;l=l+32|0;C=i+24|0;B=i+16|0;n=i;U=i+8|0;F=Q[g>>2]|0;t=Q[g+4>>2]|0;Q[n>>2]=F;Q[n+4>>2]=t;c=as()|0;s=c+24|0;g=vB(I,4)|0;Q[U>>2]=g;I=c+28|0;e=Q[I>>2]|0;if(e>>>0<(Q[c+32>>2]|0)>>>0){Q[B>>2]=F;Q[B+4>>2]=t;Q[C>>2]=Q[B>>2];Q[C+4>>2]=Q[B+4>>2];ds(e,C,g);g=(Q[I>>2]|0)+12|0;Q[I>>2]=g}else{us(s,n,U);g=Q[I>>2]|0}l=i;return((g-(Q[s>>2]|0)|0)/12|0)+-1|0}function ds(g,I,e){g=g|0;I=I|0;e=e|0;var t=0;t=Q[I+4>>2]|0;Q[g>>2]=Q[I>>2];Q[g+4>>2]=t;Q[g+8>>2]=e;return}function us(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0,A=0;s=l;l=l+48|0;t=s+32|0;B=s+24|0;n=s;U=g+4|0;C=(((Q[U>>2]|0)-(Q[g>>2]|0)|0)/12|0)+1|0;F=ys(g)|0;if(F>>>0<C>>>0)vG(g);else{i=Q[g>>2]|0;A=((Q[g+8>>2]|0)-i|0)/12|0;c=A<<1;bs(n,A>>>0<F>>>1>>>0?c>>>0<C>>>0?C:c:F,((Q[U>>2]|0)-i|0)/12|0,g+8|0);U=n+8|0;F=Q[U>>2]|0;C=Q[I+4>>2]|0;e=Q[e>>2]|0;Q[B>>2]=Q[I>>2];Q[B+4>>2]=C;Q[t>>2]=Q[B>>2];Q[t+4>>2]=Q[B+4>>2];ds(F,t,e);Q[U>>2]=(Q[U>>2]|0)+12;Zs(g,n);ms(n);l=s;return}}function ys(g){g=g|0;return 357913941}function bs(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0;Q[g+12>>2]=0;Q[g+16>>2]=t;do{if(I){if(I>>>0>357913941)Kg();else{C=zG(I*12|0)|0;break}}else C=0}while(0);Q[g>>2]=C;t=C+(e*12|0)|0;Q[g+8>>2]=t;Q[g+4>>2]=t;Q[g+12>>2]=C+(I*12|0);return}function Zs(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0;t=Q[g>>2]|0;B=g+4|0;F=I+4|0;C=(Q[B>>2]|0)-t|0;e=(Q[F>>2]|0)+(((C|0)/-12|0)*12|0)|0;Q[F>>2]=e;if((C|0)>0){tL(e|0,t|0,C|0)|0;t=F;e=Q[F>>2]|0}else t=F;F=Q[g>>2]|0;Q[g>>2]=e;Q[t>>2]=F;F=I+8|0;C=Q[B>>2]|0;Q[B>>2]=Q[F>>2];Q[F>>2]=C;F=g+8|0;B=I+12|0;g=Q[F>>2]|0;Q[F>>2]=Q[B>>2];Q[B>>2]=g;Q[I>>2]=Q[t>>2];return}function ms(g){g=g|0;var I=0,e=0,t=0;I=Q[g+4>>2]|0;e=g+8|0;t=Q[e>>2]|0;if((t|0)!=(I|0))Q[e>>2]=t+(~(((t+-12-I|0)>>>0)/12|0)*12|0);g=Q[g>>2]|0;if(g|0)KG(g);return}function xs(g){g=g|0;Gs(g);return}function Rs(g){g=g|0;Ss(g+24|0);return}function Ss(g){g=g|0;var I=0,e=0,t=0;e=Q[g>>2]|0;t=e;if(e|0){g=g+4|0;I=Q[g>>2]|0;if((I|0)!=(e|0))Q[g>>2]=I+(~(((I+-12-t|0)>>>0)/12|0)*12|0);KG(e)}return}function Gs(g){g=g|0;var I=0;I=_B()|0;gn(g,2,5,I,Ls()|0,0);Q[g+24>>2]=0;Q[g+28>>2]=0;Q[g+32>>2]=0;return}function Ls(){return 1196}function Vs(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0;e=l;l=l+16|0;t=e+8|0;C=e;F=hs(g)|0;g=Q[F+4>>2]|0;Q[C>>2]=Q[F>>2];Q[C+4>>2]=g;Q[t>>2]=Q[C>>2];Q[t+4>>2]=Q[C+4>>2];I=Ds(I,t)|0;l=e;return I|0}function hs(g){g=g|0;return(Q[(as()|0)+24>>2]|0)+(g*12|0)|0}function Ds(g,I){g=g|0;I=I|0;var e=0;e=Q[I>>2]|0;I=Q[I+4>>2]|0;g=g+(I>>1)|0;if(I&1)e=Q[(Q[g>>2]|0)+e>>2]|0;return is(aV[e&31](g)|0)|0}function ps(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0;t=l;l=l+16|0;C=t+8|0;F=t;n=Q[e>>2]|0;B=Q[e+4>>2]|0;e=hB(I)|0;Q[F>>2]=n;Q[F+4>>2]=B;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];Es(g,e,C,1);l=t;return}function Es(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0,F=0,B=0,n=0,U=0,s=0,i=0;C=l;l=l+32|0;F=C+16|0;i=C+8|0;n=C;s=Q[e>>2]|0;U=Q[e+4>>2]|0;B=Q[g>>2]|0;g=Ns()|0;Q[i>>2]=s;Q[i+4>>2]=U;Q[F>>2]=Q[i>>2];Q[F+4>>2]=Q[i+4>>2];e=Ws(F)|0;Q[n>>2]=s;Q[n+4>>2]=U;Q[F>>2]=Q[n>>2];Q[F+4>>2]=Q[n+4>>2];WB(B,I,g,e,fs(F,t)|0,t);l=C;return}function Ns(){var g=0,I=0;if(!(t[7680]|0)){Ys(9412);fg(31,9412,o|0)|0;I=7680;Q[I>>2]=1;Q[I+4>>2]=0}if(!(KB(9412)|0)){g=9412;I=g+36|0;do{Q[g>>2]=0;g=g+4|0}while((g|0)<(I|0));Ys(9412)}return 9412}function Ws(g){g=g|0;return 0}function fs(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0;i=l;l=l+32|0;C=i+24|0;B=i+16|0;n=i;U=i+8|0;F=Q[g>>2]|0;t=Q[g+4>>2]|0;Q[n>>2]=F;Q[n+4>>2]=t;c=Ns()|0;s=c+24|0;g=vB(I,4)|0;Q[U>>2]=g;I=c+28|0;e=Q[I>>2]|0;if(e>>>0<(Q[c+32>>2]|0)>>>0){Q[B>>2]=F;Q[B+4>>2]=t;Q[C>>2]=Q[B>>2];Q[C+4>>2]=Q[B+4>>2];Xs(e,C,g);g=(Q[I>>2]|0)+12|0;Q[I>>2]=g}else{Js(s,n,U);g=Q[I>>2]|0}l=i;return((g-(Q[s>>2]|0)|0)/12|0)+-1|0}function Xs(g,I,e){g=g|0;I=I|0;e=e|0;var t=0;t=Q[I+4>>2]|0;Q[g>>2]=Q[I>>2];Q[g+4>>2]=t;Q[g+8>>2]=e;return}function Js(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0,A=0;s=l;l=l+48|0;t=s+32|0;B=s+24|0;n=s;U=g+4|0;C=(((Q[U>>2]|0)-(Q[g>>2]|0)|0)/12|0)+1|0;F=vs(g)|0;if(F>>>0<C>>>0)vG(g);else{i=Q[g>>2]|0;A=((Q[g+8>>2]|0)-i|0)/12|0;c=A<<1;ks(n,A>>>0<F>>>1>>>0?c>>>0<C>>>0?C:c:F,((Q[U>>2]|0)-i|0)/12|0,g+8|0);U=n+8|0;F=Q[U>>2]|0;C=Q[I+4>>2]|0;e=Q[e>>2]|0;Q[B>>2]=Q[I>>2];Q[B+4>>2]=C;Q[t>>2]=Q[B>>2];Q[t+4>>2]=Q[B+4>>2];Xs(F,t,e);Q[U>>2]=(Q[U>>2]|0)+12;Hs(g,n);Ms(n);l=s;return}}function vs(g){g=g|0;return 357913941}function ks(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0;Q[g+12>>2]=0;Q[g+16>>2]=t;do{if(I){if(I>>>0>357913941)Kg();else{C=zG(I*12|0)|0;break}}else C=0}while(0);Q[g>>2]=C;t=C+(e*12|0)|0;Q[g+8>>2]=t;Q[g+4>>2]=t;Q[g+12>>2]=C+(I*12|0);return}function Hs(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0;t=Q[g>>2]|0;B=g+4|0;F=I+4|0;C=(Q[B>>2]|0)-t|0;e=(Q[F>>2]|0)+(((C|0)/-12|0)*12|0)|0;Q[F>>2]=e;if((C|0)>0){tL(e|0,t|0,C|0)|0;t=F;e=Q[F>>2]|0}else t=F;F=Q[g>>2]|0;Q[g>>2]=e;Q[t>>2]=F;F=I+8|0;C=Q[B>>2]|0;Q[B>>2]=Q[F>>2];Q[F>>2]=C;F=g+8|0;B=I+12|0;g=Q[F>>2]|0;Q[F>>2]=Q[B>>2];Q[B>>2]=g;Q[I>>2]=Q[t>>2];return}function Ms(g){g=g|0;var I=0,e=0,t=0;I=Q[g+4>>2]|0;e=g+8|0;t=Q[e>>2]|0;if((t|0)!=(I|0))Q[e>>2]=t+(~(((t+-12-I|0)>>>0)/12|0)*12|0);g=Q[g>>2]|0;if(g|0)KG(g);return}function Ys(g){g=g|0;zs(g);return}function ws(g){g=g|0;Ts(g+24|0);return}function Ts(g){g=g|0;var I=0,e=0,t=0;e=Q[g>>2]|0;t=e;if(e|0){g=g+4|0;I=Q[g>>2]|0;if((I|0)!=(e|0))Q[g>>2]=I+(~(((I+-12-t|0)>>>0)/12|0)*12|0);KG(e)}return}function zs(g){g=g|0;var I=0;I=_B()|0;gn(g,2,6,I,Os()|0,0);Q[g+24>>2]=0;Q[g+28>>2]=0;Q[g+32>>2]=0;return}function Os(){return 1200}function Ks(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0;e=l;l=l+16|0;t=e+8|0;C=e;F=js(g)|0;g=Q[F+4>>2]|0;Q[C>>2]=Q[F>>2];Q[C+4>>2]=g;Q[t>>2]=Q[C>>2];Q[t+4>>2]=Q[C+4>>2];I=Ps(I,t)|0;l=e;return I|0}function js(g){g=g|0;return(Q[(Ns()|0)+24>>2]|0)+(g*12|0)|0}function Ps(g,I){g=g|0;I=I|0;var e=0;e=Q[I>>2]|0;I=Q[I+4>>2]|0;g=g+(I>>1)|0;if(I&1)e=Q[(Q[g>>2]|0)+e>>2]|0;return _s(aV[e&31](g)|0)|0}function _s(g){g=g|0;return g|0}function qs(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0;t=l;l=l+16|0;C=t+8|0;F=t;n=Q[e>>2]|0;B=Q[e+4>>2]|0;e=hB(I)|0;Q[F>>2]=n;Q[F+4>>2]=B;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];$s(g,e,C,0);l=t;return}function $s(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0,F=0,B=0,n=0,U=0,s=0,i=0;C=l;l=l+32|0;F=C+16|0;i=C+8|0;n=C;s=Q[e>>2]|0;U=Q[e+4>>2]|0;B=Q[g>>2]|0;g=gi()|0;Q[i>>2]=s;Q[i+4>>2]=U;Q[F>>2]=Q[i>>2];Q[F+4>>2]=Q[i+4>>2];e=Ii(F)|0;Q[n>>2]=s;Q[n+4>>2]=U;Q[F>>2]=Q[n>>2];Q[F+4>>2]=Q[n+4>>2];WB(B,I,g,e,ei(F,t)|0,t);l=C;return}function gi(){var g=0,I=0;if(!(t[7688]|0)){Ui(9448);fg(32,9448,o|0)|0;I=7688;Q[I>>2]=1;Q[I+4>>2]=0}if(!(KB(9448)|0)){g=9448;I=g+36|0;do{Q[g>>2]=0;g=g+4|0}while((g|0)<(I|0));Ui(9448)}return 9448}function Ii(g){g=g|0;return 0}function ei(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0;i=l;l=l+32|0;C=i+24|0;B=i+16|0;n=i;U=i+8|0;F=Q[g>>2]|0;t=Q[g+4>>2]|0;Q[n>>2]=F;Q[n+4>>2]=t;c=gi()|0;s=c+24|0;g=vB(I,4)|0;Q[U>>2]=g;I=c+28|0;e=Q[I>>2]|0;if(e>>>0<(Q[c+32>>2]|0)>>>0){Q[B>>2]=F;Q[B+4>>2]=t;Q[C>>2]=Q[B>>2];Q[C+4>>2]=Q[B+4>>2];ti(e,C,g);g=(Q[I>>2]|0)+12|0;Q[I>>2]=g}else{Ci(s,n,U);g=Q[I>>2]|0}l=i;return((g-(Q[s>>2]|0)|0)/12|0)+-1|0}function ti(g,I,e){g=g|0;I=I|0;e=e|0;var t=0;t=Q[I+4>>2]|0;Q[g>>2]=Q[I>>2];Q[g+4>>2]=t;Q[g+8>>2]=e;return}function Ci(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0,A=0;s=l;l=l+48|0;t=s+32|0;B=s+24|0;n=s;U=g+4|0;C=(((Q[U>>2]|0)-(Q[g>>2]|0)|0)/12|0)+1|0;F=Qi(g)|0;if(F>>>0<C>>>0)vG(g);else{i=Q[g>>2]|0;A=((Q[g+8>>2]|0)-i|0)/12|0;c=A<<1;Fi(n,A>>>0<F>>>1>>>0?c>>>0<C>>>0?C:c:F,((Q[U>>2]|0)-i|0)/12|0,g+8|0);U=n+8|0;F=Q[U>>2]|0;C=Q[I+4>>2]|0;e=Q[e>>2]|0;Q[B>>2]=Q[I>>2];Q[B+4>>2]=C;Q[t>>2]=Q[B>>2];Q[t+4>>2]=Q[B+4>>2];ti(F,t,e);Q[U>>2]=(Q[U>>2]|0)+12;Bi(g,n);ni(n);l=s;return}}function Qi(g){g=g|0;return 357913941}function Fi(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0;Q[g+12>>2]=0;Q[g+16>>2]=t;do{if(I){if(I>>>0>357913941)Kg();else{C=zG(I*12|0)|0;break}}else C=0}while(0);Q[g>>2]=C;t=C+(e*12|0)|0;Q[g+8>>2]=t;Q[g+4>>2]=t;Q[g+12>>2]=C+(I*12|0);return}function Bi(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0;t=Q[g>>2]|0;B=g+4|0;F=I+4|0;C=(Q[B>>2]|0)-t|0;e=(Q[F>>2]|0)+(((C|0)/-12|0)*12|0)|0;Q[F>>2]=e;if((C|0)>0){tL(e|0,t|0,C|0)|0;t=F;e=Q[F>>2]|0}else t=F;F=Q[g>>2]|0;Q[g>>2]=e;Q[t>>2]=F;F=I+8|0;C=Q[B>>2]|0;Q[B>>2]=Q[F>>2];Q[F>>2]=C;F=g+8|0;B=I+12|0;g=Q[F>>2]|0;Q[F>>2]=Q[B>>2];Q[B>>2]=g;Q[I>>2]=Q[t>>2];return}function ni(g){g=g|0;var I=0,e=0,t=0;I=Q[g+4>>2]|0;e=g+8|0;t=Q[e>>2]|0;if((t|0)!=(I|0))Q[e>>2]=t+(~(((t+-12-I|0)>>>0)/12|0)*12|0);g=Q[g>>2]|0;if(g|0)KG(g);return}function Ui(g){g=g|0;ci(g);return}function si(g){g=g|0;ii(g+24|0);return}function ii(g){g=g|0;var I=0,e=0,t=0;e=Q[g>>2]|0;t=e;if(e|0){g=g+4|0;I=Q[g>>2]|0;if((I|0)!=(e|0))Q[g>>2]=I+(~(((I+-12-t|0)>>>0)/12|0)*12|0);KG(e)}return}function ci(g){g=g|0;var I=0;I=_B()|0;gn(g,2,6,I,Ai()|0,1);Q[g+24>>2]=0;Q[g+28>>2]=0;Q[g+32>>2]=0;return}function Ai(){return 1204}function li(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0;t=l;l=l+16|0;C=t+8|0;F=t;B=ai(g)|0;g=Q[B+4>>2]|0;Q[F>>2]=Q[B>>2];Q[F+4>>2]=g;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];ri(I,C,e);l=t;return}function ai(g){g=g|0;return(Q[(gi()|0)+24>>2]|0)+(g*12|0)|0}function ri(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0;F=l;l=l+16|0;C=F;t=Q[I>>2]|0;I=Q[I+4>>2]|0;g=g+(I>>1)|0;if(I&1)t=Q[(Q[g>>2]|0)+t>>2]|0;oi(C,e);C=di(C,e)|0;lV[t&31](g,C);l=F;return}function oi(g,I){g=g|0;I=I|0;return}function di(g,I){g=g|0;I=I|0;return ui(I)|0}function ui(g){g=g|0;return g|0}function yi(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0;t=l;l=l+16|0;C=t+8|0;F=t;n=Q[e>>2]|0;B=Q[e+4>>2]|0;e=hB(I)|0;Q[F>>2]=n;Q[F+4>>2]=B;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];bi(g,e,C,0);l=t;return}function bi(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0,F=0,B=0,n=0,U=0,s=0,i=0;C=l;l=l+32|0;F=C+16|0;i=C+8|0;n=C;s=Q[e>>2]|0;U=Q[e+4>>2]|0;B=Q[g>>2]|0;g=Zi()|0;Q[i>>2]=s;Q[i+4>>2]=U;Q[F>>2]=Q[i>>2];Q[F+4>>2]=Q[i+4>>2];e=mi(F)|0;Q[n>>2]=s;Q[n+4>>2]=U;Q[F>>2]=Q[n>>2];Q[F+4>>2]=Q[n+4>>2];WB(B,I,g,e,xi(F,t)|0,t);l=C;return}function Zi(){var g=0,I=0;if(!(t[7696]|0)){Di(9484);fg(33,9484,o|0)|0;I=7696;Q[I>>2]=1;Q[I+4>>2]=0}if(!(KB(9484)|0)){g=9484;I=g+36|0;do{Q[g>>2]=0;g=g+4|0}while((g|0)<(I|0));Di(9484)}return 9484}function mi(g){g=g|0;return 0}function xi(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0;i=l;l=l+32|0;C=i+24|0;B=i+16|0;n=i;U=i+8|0;F=Q[g>>2]|0;t=Q[g+4>>2]|0;Q[n>>2]=F;Q[n+4>>2]=t;c=Zi()|0;s=c+24|0;g=vB(I,4)|0;Q[U>>2]=g;I=c+28|0;e=Q[I>>2]|0;if(e>>>0<(Q[c+32>>2]|0)>>>0){Q[B>>2]=F;Q[B+4>>2]=t;Q[C>>2]=Q[B>>2];Q[C+4>>2]=Q[B+4>>2];Ri(e,C,g);g=(Q[I>>2]|0)+12|0;Q[I>>2]=g}else{Si(s,n,U);g=Q[I>>2]|0}l=i;return((g-(Q[s>>2]|0)|0)/12|0)+-1|0}function Ri(g,I,e){g=g|0;I=I|0;e=e|0;var t=0;t=Q[I+4>>2]|0;Q[g>>2]=Q[I>>2];Q[g+4>>2]=t;Q[g+8>>2]=e;return}function Si(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0,A=0;s=l;l=l+48|0;t=s+32|0;B=s+24|0;n=s;U=g+4|0;C=(((Q[U>>2]|0)-(Q[g>>2]|0)|0)/12|0)+1|0;F=Gi(g)|0;if(F>>>0<C>>>0)vG(g);else{i=Q[g>>2]|0;A=((Q[g+8>>2]|0)-i|0)/12|0;c=A<<1;Li(n,A>>>0<F>>>1>>>0?c>>>0<C>>>0?C:c:F,((Q[U>>2]|0)-i|0)/12|0,g+8|0);U=n+8|0;F=Q[U>>2]|0;C=Q[I+4>>2]|0;e=Q[e>>2]|0;Q[B>>2]=Q[I>>2];Q[B+4>>2]=C;Q[t>>2]=Q[B>>2];Q[t+4>>2]=Q[B+4>>2];Ri(F,t,e);Q[U>>2]=(Q[U>>2]|0)+12;Vi(g,n);hi(n);l=s;return}}function Gi(g){g=g|0;return 357913941}function Li(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0;Q[g+12>>2]=0;Q[g+16>>2]=t;do{if(I){if(I>>>0>357913941)Kg();else{C=zG(I*12|0)|0;break}}else C=0}while(0);Q[g>>2]=C;t=C+(e*12|0)|0;Q[g+8>>2]=t;Q[g+4>>2]=t;Q[g+12>>2]=C+(I*12|0);return}function Vi(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0;t=Q[g>>2]|0;B=g+4|0;F=I+4|0;C=(Q[B>>2]|0)-t|0;e=(Q[F>>2]|0)+(((C|0)/-12|0)*12|0)|0;Q[F>>2]=e;if((C|0)>0){tL(e|0,t|0,C|0)|0;t=F;e=Q[F>>2]|0}else t=F;F=Q[g>>2]|0;Q[g>>2]=e;Q[t>>2]=F;F=I+8|0;C=Q[B>>2]|0;Q[B>>2]=Q[F>>2];Q[F>>2]=C;F=g+8|0;B=I+12|0;g=Q[F>>2]|0;Q[F>>2]=Q[B>>2];Q[B>>2]=g;Q[I>>2]=Q[t>>2];return}function hi(g){g=g|0;var I=0,e=0,t=0;I=Q[g+4>>2]|0;e=g+8|0;t=Q[e>>2]|0;if((t|0)!=(I|0))Q[e>>2]=t+(~(((t+-12-I|0)>>>0)/12|0)*12|0);g=Q[g>>2]|0;if(g|0)KG(g);return}function Di(g){g=g|0;Ni(g);return}function pi(g){g=g|0;Ei(g+24|0);return}function Ei(g){g=g|0;var I=0,e=0,t=0;e=Q[g>>2]|0;t=e;if(e|0){g=g+4|0;I=Q[g>>2]|0;if((I|0)!=(e|0))Q[g>>2]=I+(~(((I+-12-t|0)>>>0)/12|0)*12|0);KG(e)}return}function Ni(g){g=g|0;var I=0;I=_B()|0;gn(g,2,1,I,Wi()|0,2);Q[g+24>>2]=0;Q[g+28>>2]=0;Q[g+32>>2]=0;return}function Wi(){return 1212}function fi(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0,F=0,B=0,n=0;C=l;l=l+16|0;F=C+8|0;B=C;n=Xi(g)|0;g=Q[n+4>>2]|0;Q[B>>2]=Q[n>>2];Q[B+4>>2]=g;Q[F>>2]=Q[B>>2];Q[F+4>>2]=Q[B+4>>2];Ji(I,F,e,t);l=C;return}function Xi(g){g=g|0;return(Q[(Zi()|0)+24>>2]|0)+(g*12|0)|0}function Ji(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0,F=0,B=0,n=0;n=l;l=l+16|0;F=n+1|0;B=n;C=Q[I>>2]|0;I=Q[I+4>>2]|0;g=g+(I>>1)|0;if(I&1)C=Q[(Q[g>>2]|0)+C>>2]|0;oi(F,e);F=di(F,e)|0;Us(B,t);B=ss(B,t)|0;hV[C&15](g,F,B);l=n;return}function vi(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0;t=l;l=l+16|0;C=t+8|0;F=t;n=Q[e>>2]|0;B=Q[e+4>>2]|0;e=hB(I)|0;Q[F>>2]=n;Q[F+4>>2]=B;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];ki(g,e,C,1);l=t;return}function ki(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0,F=0,B=0,n=0,U=0,s=0,i=0;C=l;l=l+32|0;F=C+16|0;i=C+8|0;n=C;s=Q[e>>2]|0;U=Q[e+4>>2]|0;B=Q[g>>2]|0;g=Hi()|0;Q[i>>2]=s;Q[i+4>>2]=U;Q[F>>2]=Q[i>>2];Q[F+4>>2]=Q[i+4>>2];e=Mi(F)|0;Q[n>>2]=s;Q[n+4>>2]=U;Q[F>>2]=Q[n>>2];Q[F+4>>2]=Q[n+4>>2];WB(B,I,g,e,Yi(F,t)|0,t);l=C;return}function Hi(){var g=0,I=0;if(!(t[7704]|0)){Pi(9520);fg(34,9520,o|0)|0;I=7704;Q[I>>2]=1;Q[I+4>>2]=0}if(!(KB(9520)|0)){g=9520;I=g+36|0;do{Q[g>>2]=0;g=g+4|0}while((g|0)<(I|0));Pi(9520)}return 9520}function Mi(g){g=g|0;return 0}function Yi(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0;i=l;l=l+32|0;C=i+24|0;B=i+16|0;n=i;U=i+8|0;F=Q[g>>2]|0;t=Q[g+4>>2]|0;Q[n>>2]=F;Q[n+4>>2]=t;c=Hi()|0;s=c+24|0;g=vB(I,4)|0;Q[U>>2]=g;I=c+28|0;e=Q[I>>2]|0;if(e>>>0<(Q[c+32>>2]|0)>>>0){Q[B>>2]=F;Q[B+4>>2]=t;Q[C>>2]=Q[B>>2];Q[C+4>>2]=Q[B+4>>2];wi(e,C,g);g=(Q[I>>2]|0)+12|0;Q[I>>2]=g}else{Ti(s,n,U);g=Q[I>>2]|0}l=i;return((g-(Q[s>>2]|0)|0)/12|0)+-1|0}function wi(g,I,e){g=g|0;I=I|0;e=e|0;var t=0;t=Q[I+4>>2]|0;Q[g>>2]=Q[I>>2];Q[g+4>>2]=t;Q[g+8>>2]=e;return}function Ti(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0,A=0;s=l;l=l+48|0;t=s+32|0;B=s+24|0;n=s;U=g+4|0;C=(((Q[U>>2]|0)-(Q[g>>2]|0)|0)/12|0)+1|0;F=zi(g)|0;if(F>>>0<C>>>0)vG(g);else{i=Q[g>>2]|0;A=((Q[g+8>>2]|0)-i|0)/12|0;c=A<<1;Oi(n,A>>>0<F>>>1>>>0?c>>>0<C>>>0?C:c:F,((Q[U>>2]|0)-i|0)/12|0,g+8|0);U=n+8|0;F=Q[U>>2]|0;C=Q[I+4>>2]|0;e=Q[e>>2]|0;Q[B>>2]=Q[I>>2];Q[B+4>>2]=C;Q[t>>2]=Q[B>>2];Q[t+4>>2]=Q[B+4>>2];wi(F,t,e);Q[U>>2]=(Q[U>>2]|0)+12;Ki(g,n);ji(n);l=s;return}}function zi(g){g=g|0;return 357913941}function Oi(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0;Q[g+12>>2]=0;Q[g+16>>2]=t;do{if(I){if(I>>>0>357913941)Kg();else{C=zG(I*12|0)|0;break}}else C=0}while(0);Q[g>>2]=C;t=C+(e*12|0)|0;Q[g+8>>2]=t;Q[g+4>>2]=t;Q[g+12>>2]=C+(I*12|0);return}function Ki(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0;t=Q[g>>2]|0;B=g+4|0;F=I+4|0;C=(Q[B>>2]|0)-t|0;e=(Q[F>>2]|0)+(((C|0)/-12|0)*12|0)|0;Q[F>>2]=e;if((C|0)>0){tL(e|0,t|0,C|0)|0;t=F;e=Q[F>>2]|0}else t=F;F=Q[g>>2]|0;Q[g>>2]=e;Q[t>>2]=F;F=I+8|0;C=Q[B>>2]|0;Q[B>>2]=Q[F>>2];Q[F>>2]=C;F=g+8|0;B=I+12|0;g=Q[F>>2]|0;Q[F>>2]=Q[B>>2];Q[B>>2]=g;Q[I>>2]=Q[t>>2];return}function ji(g){g=g|0;var I=0,e=0,t=0;I=Q[g+4>>2]|0;e=g+8|0;t=Q[e>>2]|0;if((t|0)!=(I|0))Q[e>>2]=t+(~(((t+-12-I|0)>>>0)/12|0)*12|0);g=Q[g>>2]|0;if(g|0)KG(g);return}function Pi(g){g=g|0;$i(g);return}function _i(g){g=g|0;qi(g+24|0);return}function qi(g){g=g|0;var I=0,e=0,t=0;e=Q[g>>2]|0;t=e;if(e|0){g=g+4|0;I=Q[g>>2]|0;if((I|0)!=(e|0))Q[g>>2]=I+(~(((I+-12-t|0)>>>0)/12|0)*12|0);KG(e)}return}function $i(g){g=g|0;var I=0;I=_B()|0;gn(g,2,1,I,gc()|0,1);Q[g+24>>2]=0;Q[g+28>>2]=0;Q[g+32>>2]=0;return}function gc(){return 1224}function Ic(g,I,e){g=g|0;I=I|0;e=e|0;var t=0.0,C=0,F=0,B=0,n=0;C=l;l=l+16|0;F=C+8|0;B=C;n=ec(g)|0;g=Q[n+4>>2]|0;Q[B>>2]=Q[n>>2];Q[B+4>>2]=g;Q[F>>2]=Q[B>>2];Q[F+4>>2]=Q[B+4>>2];t=+tc(I,F,e);l=C;return+t}function ec(g){g=g|0;return(Q[(Hi()|0)+24>>2]|0)+(g*12|0)|0}function tc(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0.0;F=l;l=l+16|0;C=F;t=Q[I>>2]|0;I=Q[I+4>>2]|0;g=g+(I>>1)|0;if(I&1)t=Q[(Q[g>>2]|0)+t>>2]|0;Pn(C,e);C=_n(C,e)|0;B=+pF(+RV[t&7](g,C));l=F;return+B}function Cc(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0;t=l;l=l+16|0;C=t+8|0;F=t;n=Q[e>>2]|0;B=Q[e+4>>2]|0;e=hB(I)|0;Q[F>>2]=n;Q[F+4>>2]=B;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];Qc(g,e,C,1);l=t;return}function Qc(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0,F=0,B=0,n=0,U=0,s=0,i=0;C=l;l=l+32|0;F=C+16|0;i=C+8|0;n=C;s=Q[e>>2]|0;U=Q[e+4>>2]|0;B=Q[g>>2]|0;g=Fc()|0;Q[i>>2]=s;Q[i+4>>2]=U;Q[F>>2]=Q[i>>2];Q[F+4>>2]=Q[i+4>>2];e=Bc(F)|0;Q[n>>2]=s;Q[n+4>>2]=U;Q[F>>2]=Q[n>>2];Q[F+4>>2]=Q[n+4>>2];WB(B,I,g,e,nc(F,t)|0,t);l=C;return}function Fc(){var g=0,I=0;if(!(t[7712]|0)){ac(9556);fg(35,9556,o|0)|0;I=7712;Q[I>>2]=1;Q[I+4>>2]=0}if(!(KB(9556)|0)){g=9556;I=g+36|0;do{Q[g>>2]=0;g=g+4|0}while((g|0)<(I|0));ac(9556)}return 9556}function Bc(g){g=g|0;return 0}function nc(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0;i=l;l=l+32|0;C=i+24|0;B=i+16|0;n=i;U=i+8|0;F=Q[g>>2]|0;t=Q[g+4>>2]|0;Q[n>>2]=F;Q[n+4>>2]=t;c=Fc()|0;s=c+24|0;g=vB(I,4)|0;Q[U>>2]=g;I=c+28|0;e=Q[I>>2]|0;if(e>>>0<(Q[c+32>>2]|0)>>>0){Q[B>>2]=F;Q[B+4>>2]=t;Q[C>>2]=Q[B>>2];Q[C+4>>2]=Q[B+4>>2];Uc(e,C,g);g=(Q[I>>2]|0)+12|0;Q[I>>2]=g}else{sc(s,n,U);g=Q[I>>2]|0}l=i;return((g-(Q[s>>2]|0)|0)/12|0)+-1|0}function Uc(g,I,e){g=g|0;I=I|0;e=e|0;var t=0;t=Q[I+4>>2]|0;Q[g>>2]=Q[I>>2];Q[g+4>>2]=t;Q[g+8>>2]=e;return}function sc(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0,A=0;s=l;l=l+48|0;t=s+32|0;B=s+24|0;n=s;U=g+4|0;C=(((Q[U>>2]|0)-(Q[g>>2]|0)|0)/12|0)+1|0;F=ic(g)|0;if(F>>>0<C>>>0)vG(g);else{i=Q[g>>2]|0;A=((Q[g+8>>2]|0)-i|0)/12|0;c=A<<1;cc(n,A>>>0<F>>>1>>>0?c>>>0<C>>>0?C:c:F,((Q[U>>2]|0)-i|0)/12|0,g+8|0);U=n+8|0;F=Q[U>>2]|0;C=Q[I+4>>2]|0;e=Q[e>>2]|0;Q[B>>2]=Q[I>>2];Q[B+4>>2]=C;Q[t>>2]=Q[B>>2];Q[t+4>>2]=Q[B+4>>2];Uc(F,t,e);Q[U>>2]=(Q[U>>2]|0)+12;Ac(g,n);lc(n);l=s;return}}function ic(g){g=g|0;return 357913941}function cc(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0;Q[g+12>>2]=0;Q[g+16>>2]=t;do{if(I){if(I>>>0>357913941)Kg();else{C=zG(I*12|0)|0;break}}else C=0}while(0);Q[g>>2]=C;t=C+(e*12|0)|0;Q[g+8>>2]=t;Q[g+4>>2]=t;Q[g+12>>2]=C+(I*12|0);return}function Ac(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0;t=Q[g>>2]|0;B=g+4|0;F=I+4|0;C=(Q[B>>2]|0)-t|0;e=(Q[F>>2]|0)+(((C|0)/-12|0)*12|0)|0;Q[F>>2]=e;if((C|0)>0){tL(e|0,t|0,C|0)|0;t=F;e=Q[F>>2]|0}else t=F;F=Q[g>>2]|0;Q[g>>2]=e;Q[t>>2]=F;F=I+8|0;C=Q[B>>2]|0;Q[B>>2]=Q[F>>2];Q[F>>2]=C;F=g+8|0;B=I+12|0;g=Q[F>>2]|0;Q[F>>2]=Q[B>>2];Q[B>>2]=g;Q[I>>2]=Q[t>>2];return}function lc(g){g=g|0;var I=0,e=0,t=0;I=Q[g+4>>2]|0;e=g+8|0;t=Q[e>>2]|0;if((t|0)!=(I|0))Q[e>>2]=t+(~(((t+-12-I|0)>>>0)/12|0)*12|0);g=Q[g>>2]|0;if(g|0)KG(g);return}function ac(g){g=g|0;dc(g);return}function rc(g){g=g|0;oc(g+24|0);return}function oc(g){g=g|0;var I=0,e=0,t=0;e=Q[g>>2]|0;t=e;if(e|0){g=g+4|0;I=Q[g>>2]|0;if((I|0)!=(e|0))Q[g>>2]=I+(~(((I+-12-t|0)>>>0)/12|0)*12|0);KG(e)}return}function dc(g){g=g|0;var I=0;I=_B()|0;gn(g,2,5,I,uc()|0,0);Q[g+24>>2]=0;Q[g+28>>2]=0;Q[g+32>>2]=0;return}function uc(){return 1232}function yc(g,I){g=g|0;I=I|0;var e=0.0,t=0,C=0,F=0,B=0;t=l;l=l+16|0;C=t+8|0;F=t;B=bc(g)|0;g=Q[B+4>>2]|0;Q[F>>2]=Q[B>>2];Q[F+4>>2]=g;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];e=+Zc(I,C);l=t;return+e}function bc(g){g=g|0;return(Q[(Fc()|0)+24>>2]|0)+(g*12|0)|0}function Zc(g,I){g=g|0;I=I|0;var e=0;e=Q[I>>2]|0;I=Q[I+4>>2]|0;g=g+(I>>1)|0;if(I&1)e=Q[(Q[g>>2]|0)+e>>2]|0;return+ +pF(+yV[e&15](g))}function mc(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0;t=l;l=l+16|0;C=t+8|0;F=t;n=Q[e>>2]|0;B=Q[e+4>>2]|0;e=hB(I)|0;Q[F>>2]=n;Q[F+4>>2]=B;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];xc(g,e,C,1);l=t;return}function xc(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0,F=0,B=0,n=0,U=0,s=0,i=0;C=l;l=l+32|0;F=C+16|0;i=C+8|0;n=C;s=Q[e>>2]|0;U=Q[e+4>>2]|0;B=Q[g>>2]|0;g=Rc()|0;Q[i>>2]=s;Q[i+4>>2]=U;Q[F>>2]=Q[i>>2];Q[F+4>>2]=Q[i+4>>2];e=Sc(F)|0;Q[n>>2]=s;Q[n+4>>2]=U;Q[F>>2]=Q[n>>2];Q[F+4>>2]=Q[n+4>>2];WB(B,I,g,e,Gc(F,t)|0,t);l=C;return}function Rc(){var g=0,I=0;if(!(t[7720]|0)){Nc(9592);fg(36,9592,o|0)|0;I=7720;Q[I>>2]=1;Q[I+4>>2]=0}if(!(KB(9592)|0)){g=9592;I=g+36|0;do{Q[g>>2]=0;g=g+4|0}while((g|0)<(I|0));Nc(9592)}return 9592}function Sc(g){g=g|0;return 0}function Gc(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0;i=l;l=l+32|0;C=i+24|0;B=i+16|0;n=i;U=i+8|0;F=Q[g>>2]|0;t=Q[g+4>>2]|0;Q[n>>2]=F;Q[n+4>>2]=t;c=Rc()|0;s=c+24|0;g=vB(I,4)|0;Q[U>>2]=g;I=c+28|0;e=Q[I>>2]|0;if(e>>>0<(Q[c+32>>2]|0)>>>0){Q[B>>2]=F;Q[B+4>>2]=t;Q[C>>2]=Q[B>>2];Q[C+4>>2]=Q[B+4>>2];Lc(e,C,g);g=(Q[I>>2]|0)+12|0;Q[I>>2]=g}else{Vc(s,n,U);g=Q[I>>2]|0}l=i;return((g-(Q[s>>2]|0)|0)/12|0)+-1|0}function Lc(g,I,e){g=g|0;I=I|0;e=e|0;var t=0;t=Q[I+4>>2]|0;Q[g>>2]=Q[I>>2];Q[g+4>>2]=t;Q[g+8>>2]=e;return}function Vc(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0,A=0;s=l;l=l+48|0;t=s+32|0;B=s+24|0;n=s;U=g+4|0;C=(((Q[U>>2]|0)-(Q[g>>2]|0)|0)/12|0)+1|0;F=hc(g)|0;if(F>>>0<C>>>0)vG(g);else{i=Q[g>>2]|0;A=((Q[g+8>>2]|0)-i|0)/12|0;c=A<<1;Dc(n,A>>>0<F>>>1>>>0?c>>>0<C>>>0?C:c:F,((Q[U>>2]|0)-i|0)/12|0,g+8|0);U=n+8|0;F=Q[U>>2]|0;C=Q[I+4>>2]|0;e=Q[e>>2]|0;Q[B>>2]=Q[I>>2];Q[B+4>>2]=C;Q[t>>2]=Q[B>>2];Q[t+4>>2]=Q[B+4>>2];Lc(F,t,e);Q[U>>2]=(Q[U>>2]|0)+12;pc(g,n);Ec(n);l=s;return}}function hc(g){g=g|0;return 357913941}function Dc(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0;Q[g+12>>2]=0;Q[g+16>>2]=t;do{if(I){if(I>>>0>357913941)Kg();else{C=zG(I*12|0)|0;break}}else C=0}while(0);Q[g>>2]=C;t=C+(e*12|0)|0;Q[g+8>>2]=t;Q[g+4>>2]=t;Q[g+12>>2]=C+(I*12|0);return}function pc(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0;t=Q[g>>2]|0;B=g+4|0;F=I+4|0;C=(Q[B>>2]|0)-t|0;e=(Q[F>>2]|0)+(((C|0)/-12|0)*12|0)|0;Q[F>>2]=e;if((C|0)>0){tL(e|0,t|0,C|0)|0;t=F;e=Q[F>>2]|0}else t=F;F=Q[g>>2]|0;Q[g>>2]=e;Q[t>>2]=F;F=I+8|0;C=Q[B>>2]|0;Q[B>>2]=Q[F>>2];Q[F>>2]=C;F=g+8|0;B=I+12|0;g=Q[F>>2]|0;Q[F>>2]=Q[B>>2];Q[B>>2]=g;Q[I>>2]=Q[t>>2];return}function Ec(g){g=g|0;var I=0,e=0,t=0;I=Q[g+4>>2]|0;e=g+8|0;t=Q[e>>2]|0;if((t|0)!=(I|0))Q[e>>2]=t+(~(((t+-12-I|0)>>>0)/12|0)*12|0);g=Q[g>>2]|0;if(g|0)KG(g);return}function Nc(g){g=g|0;Xc(g);return}function Wc(g){g=g|0;fc(g+24|0);return}function fc(g){g=g|0;var I=0,e=0,t=0;e=Q[g>>2]|0;t=e;if(e|0){g=g+4|0;I=Q[g>>2]|0;if((I|0)!=(e|0))Q[g>>2]=I+(~(((I+-12-t|0)>>>0)/12|0)*12|0);KG(e)}return}function Xc(g){g=g|0;var I=0;I=_B()|0;gn(g,2,7,I,Jc()|0,0);Q[g+24>>2]=0;Q[g+28>>2]=0;Q[g+32>>2]=0;return}function Jc(){return 1276}function vc(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0;e=l;l=l+16|0;t=e+8|0;C=e;F=kc(g)|0;g=Q[F+4>>2]|0;Q[C>>2]=Q[F>>2];Q[C+4>>2]=g;Q[t>>2]=Q[C>>2];Q[t+4>>2]=Q[C+4>>2];I=Hc(I,t)|0;l=e;return I|0}function kc(g){g=g|0;return(Q[(Rc()|0)+24>>2]|0)+(g*12|0)|0}function Hc(g,I){g=g|0;I=I|0;var e=0,t=0,C=0;C=l;l=l+16|0;t=C;e=Q[I>>2]|0;I=Q[I+4>>2]|0;g=g+(I>>1)|0;if(I&1)e=Q[(Q[g>>2]|0)+e>>2]|0;lV[e&31](t,g);t=Mc(t)|0;l=C;return t|0}function Mc(g){g=g|0;var I=0,e=0,t=0,C=0;C=l;l=l+32|0;I=C+12|0;e=C;t=Qn(Yc()|0)|0;if(!t)g=Tc(g)|0;else{Fn(I,t);Bn(e,I);wc(g,e);g=Un(I)|0}l=C;return g|0}function Yc(){var g=0;if(!(t[7736]|0)){eA(9640);fg(25,9640,o|0)|0;g=7736;Q[g>>2]=1;Q[g+4>>2]=0}return 9640}function wc(g,I){g=g|0;I=I|0;Pc(I,g,g+8|0)|0;return}function Tc(g){g=g|0;var I=0,e=0,t=0,C=0,F=0,B=0,n=0;e=l;l=l+16|0;C=e+4|0;B=e;t=vm(8)|0;I=t;n=zG(16)|0;Q[n>>2]=Q[g>>2];Q[n+4>>2]=Q[g+4>>2];Q[n+8>>2]=Q[g+8>>2];Q[n+12>>2]=Q[g+12>>2];F=I+4|0;Q[F>>2]=n;g=zG(8)|0;F=Q[F>>2]|0;Q[B>>2]=0;Q[C>>2]=Q[B>>2];zc(g,F,C);Q[t>>2]=g;l=e;return I|0}function zc(g,I,e){g=g|0;I=I|0;e=e|0;Q[g>>2]=I;e=zG(16)|0;Q[e+4>>2]=0;Q[e+8>>2]=0;Q[e>>2]=1244;Q[e+12>>2]=I;Q[g+4>>2]=e;return}function Oc(g){g=g|0;kG(g);KG(g);return}function Kc(g){g=g|0;g=Q[g+12>>2]|0;if(g|0)KG(g);return}function jc(g){g=g|0;KG(g);return}function Pc(g,I,e){g=g|0;I=I|0;e=e|0;I=_c(Q[g>>2]|0,I,e)|0;e=g+4|0;Q[(Q[e>>2]|0)+8>>2]=I;return Q[(Q[e>>2]|0)+8>>2]|0}function _c(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0;t=l;l=l+16|0;C=t;ZS(C);g=yF(g)|0;e=qc(g,Q[I>>2]|0,+s[e>>3])|0;xS(C);l=t;return e|0}function qc(g,I,e){g=g|0;I=I|0;e=+e;var t=0;t=mF($c()|0)|0;I=RF(I)|0;return Lg(0,t|0,g|0,I|0,+ +xF(e))|0}function $c(){var g=0;if(!(t[7728]|0)){gA(9628);g=7728;Q[g>>2]=1;Q[g+4>>2]=0}return 9628}function gA(g){g=g|0;WF(g,IA()|0,2);return}function IA(){return 1264}function eA(g){g=g|0;Ln(g);return}function tA(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0;t=l;l=l+16|0;C=t+8|0;F=t;n=Q[e>>2]|0;B=Q[e+4>>2]|0;e=hB(I)|0;Q[F>>2]=n;Q[F+4>>2]=B;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];CA(g,e,C,1);l=t;return}function CA(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0,F=0,B=0,n=0,U=0,s=0,i=0;C=l;l=l+32|0;F=C+16|0;i=C+8|0;n=C;s=Q[e>>2]|0;U=Q[e+4>>2]|0;B=Q[g>>2]|0;g=QA()|0;Q[i>>2]=s;Q[i+4>>2]=U;Q[F>>2]=Q[i>>2];Q[F+4>>2]=Q[i+4>>2];e=FA(F)|0;Q[n>>2]=s;Q[n+4>>2]=U;Q[F>>2]=Q[n>>2];Q[F+4>>2]=Q[n+4>>2];WB(B,I,g,e,BA(F,t)|0,t);l=C;return}function QA(){var g=0,I=0;if(!(t[7744]|0)){lA(9684);fg(37,9684,o|0)|0;I=7744;Q[I>>2]=1;Q[I+4>>2]=0}if(!(KB(9684)|0)){g=9684;I=g+36|0;do{Q[g>>2]=0;g=g+4|0}while((g|0)<(I|0));lA(9684)}return 9684}function FA(g){g=g|0;return 0}function BA(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0;i=l;l=l+32|0;C=i+24|0;B=i+16|0;n=i;U=i+8|0;F=Q[g>>2]|0;t=Q[g+4>>2]|0;Q[n>>2]=F;Q[n+4>>2]=t;c=QA()|0;s=c+24|0;g=vB(I,4)|0;Q[U>>2]=g;I=c+28|0;e=Q[I>>2]|0;if(e>>>0<(Q[c+32>>2]|0)>>>0){Q[B>>2]=F;Q[B+4>>2]=t;Q[C>>2]=Q[B>>2];Q[C+4>>2]=Q[B+4>>2];nA(e,C,g);g=(Q[I>>2]|0)+12|0;Q[I>>2]=g}else{UA(s,n,U);g=Q[I>>2]|0}l=i;return((g-(Q[s>>2]|0)|0)/12|0)+-1|0}function nA(g,I,e){g=g|0;I=I|0;e=e|0;var t=0;t=Q[I+4>>2]|0;Q[g>>2]=Q[I>>2];Q[g+4>>2]=t;Q[g+8>>2]=e;return}function UA(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0,A=0;s=l;l=l+48|0;t=s+32|0;B=s+24|0;n=s;U=g+4|0;C=(((Q[U>>2]|0)-(Q[g>>2]|0)|0)/12|0)+1|0;F=sA(g)|0;if(F>>>0<C>>>0)vG(g);else{i=Q[g>>2]|0;A=((Q[g+8>>2]|0)-i|0)/12|0;c=A<<1;iA(n,A>>>0<F>>>1>>>0?c>>>0<C>>>0?C:c:F,((Q[U>>2]|0)-i|0)/12|0,g+8|0);U=n+8|0;F=Q[U>>2]|0;C=Q[I+4>>2]|0;e=Q[e>>2]|0;Q[B>>2]=Q[I>>2];Q[B+4>>2]=C;Q[t>>2]=Q[B>>2];Q[t+4>>2]=Q[B+4>>2];nA(F,t,e);Q[U>>2]=(Q[U>>2]|0)+12;cA(g,n);AA(n);l=s;return}}function sA(g){g=g|0;return 357913941}function iA(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0;Q[g+12>>2]=0;Q[g+16>>2]=t;do{if(I){if(I>>>0>357913941)Kg();else{C=zG(I*12|0)|0;break}}else C=0}while(0);Q[g>>2]=C;t=C+(e*12|0)|0;Q[g+8>>2]=t;Q[g+4>>2]=t;Q[g+12>>2]=C+(I*12|0);return}function cA(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0;t=Q[g>>2]|0;B=g+4|0;F=I+4|0;C=(Q[B>>2]|0)-t|0;e=(Q[F>>2]|0)+(((C|0)/-12|0)*12|0)|0;Q[F>>2]=e;if((C|0)>0){tL(e|0,t|0,C|0)|0;t=F;e=Q[F>>2]|0}else t=F;F=Q[g>>2]|0;Q[g>>2]=e;Q[t>>2]=F;F=I+8|0;C=Q[B>>2]|0;Q[B>>2]=Q[F>>2];Q[F>>2]=C;F=g+8|0;B=I+12|0;g=Q[F>>2]|0;Q[F>>2]=Q[B>>2];Q[B>>2]=g;Q[I>>2]=Q[t>>2];return}function AA(g){g=g|0;var I=0,e=0,t=0;I=Q[g+4>>2]|0;e=g+8|0;t=Q[e>>2]|0;if((t|0)!=(I|0))Q[e>>2]=t+(~(((t+-12-I|0)>>>0)/12|0)*12|0);g=Q[g>>2]|0;if(g|0)KG(g);return}function lA(g){g=g|0;oA(g);return}function aA(g){g=g|0;rA(g+24|0);return}function rA(g){g=g|0;var I=0,e=0,t=0;e=Q[g>>2]|0;t=e;if(e|0){g=g+4|0;I=Q[g>>2]|0;if((I|0)!=(e|0))Q[g>>2]=I+(~(((I+-12-t|0)>>>0)/12|0)*12|0);KG(e)}return}function oA(g){g=g|0;var I=0;I=_B()|0;gn(g,2,5,I,dA()|0,1);Q[g+24>>2]=0;Q[g+28>>2]=0;Q[g+32>>2]=0;return}function dA(){return 1280}function uA(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0;t=l;l=l+16|0;C=t+8|0;F=t;B=yA(g)|0;g=Q[B+4>>2]|0;Q[F>>2]=Q[B>>2];Q[F+4>>2]=g;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];e=bA(I,C,e)|0;l=t;return e|0}function yA(g){g=g|0;return(Q[(QA()|0)+24>>2]|0)+(g*12|0)|0}function bA(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0;B=l;l=l+32|0;C=B;F=B+16|0;t=Q[I>>2]|0;I=Q[I+4>>2]|0;g=g+(I>>1)|0;if(I&1)t=Q[(Q[g>>2]|0)+t>>2]|0;Pn(F,e);F=_n(F,e)|0;hV[t&15](C,g,F);F=Mc(C)|0;l=B;return F|0}function ZA(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0;t=l;l=l+16|0;C=t+8|0;F=t;n=Q[e>>2]|0;B=Q[e+4>>2]|0;e=hB(I)|0;Q[F>>2]=n;Q[F+4>>2]=B;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];mA(g,e,C,1);l=t;return}function mA(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0,F=0,B=0,n=0,U=0,s=0,i=0;C=l;l=l+32|0;F=C+16|0;i=C+8|0;n=C;s=Q[e>>2]|0;U=Q[e+4>>2]|0;B=Q[g>>2]|0;g=xA()|0;Q[i>>2]=s;Q[i+4>>2]=U;Q[F>>2]=Q[i>>2];Q[F+4>>2]=Q[i+4>>2];e=RA(F)|0;Q[n>>2]=s;Q[n+4>>2]=U;Q[F>>2]=Q[n>>2];Q[F+4>>2]=Q[n+4>>2];WB(B,I,g,e,SA(F,t)|0,t);l=C;return}function xA(){var g=0,I=0;if(!(t[7752]|0)){EA(9720);fg(38,9720,o|0)|0;I=7752;Q[I>>2]=1;Q[I+4>>2]=0}if(!(KB(9720)|0)){g=9720;I=g+36|0;do{Q[g>>2]=0;g=g+4|0}while((g|0)<(I|0));EA(9720)}return 9720}function RA(g){g=g|0;return 0}function SA(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0;i=l;l=l+32|0;C=i+24|0;B=i+16|0;n=i;U=i+8|0;F=Q[g>>2]|0;t=Q[g+4>>2]|0;Q[n>>2]=F;Q[n+4>>2]=t;c=xA()|0;s=c+24|0;g=vB(I,4)|0;Q[U>>2]=g;I=c+28|0;e=Q[I>>2]|0;if(e>>>0<(Q[c+32>>2]|0)>>>0){Q[B>>2]=F;Q[B+4>>2]=t;Q[C>>2]=Q[B>>2];Q[C+4>>2]=Q[B+4>>2];GA(e,C,g);g=(Q[I>>2]|0)+12|0;Q[I>>2]=g}else{LA(s,n,U);g=Q[I>>2]|0}l=i;return((g-(Q[s>>2]|0)|0)/12|0)+-1|0}function GA(g,I,e){g=g|0;I=I|0;e=e|0;var t=0;t=Q[I+4>>2]|0;Q[g>>2]=Q[I>>2];Q[g+4>>2]=t;Q[g+8>>2]=e;return}function LA(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0,A=0;s=l;l=l+48|0;t=s+32|0;B=s+24|0;n=s;U=g+4|0;C=(((Q[U>>2]|0)-(Q[g>>2]|0)|0)/12|0)+1|0;F=VA(g)|0;if(F>>>0<C>>>0)vG(g);else{i=Q[g>>2]|0;A=((Q[g+8>>2]|0)-i|0)/12|0;c=A<<1;hA(n,A>>>0<F>>>1>>>0?c>>>0<C>>>0?C:c:F,((Q[U>>2]|0)-i|0)/12|0,g+8|0);U=n+8|0;F=Q[U>>2]|0;C=Q[I+4>>2]|0;e=Q[e>>2]|0;Q[B>>2]=Q[I>>2];Q[B+4>>2]=C;Q[t>>2]=Q[B>>2];Q[t+4>>2]=Q[B+4>>2];GA(F,t,e);Q[U>>2]=(Q[U>>2]|0)+12;DA(g,n);pA(n);l=s;return}}function VA(g){g=g|0;return 357913941}function hA(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0;Q[g+12>>2]=0;Q[g+16>>2]=t;do{if(I){if(I>>>0>357913941)Kg();else{C=zG(I*12|0)|0;break}}else C=0}while(0);Q[g>>2]=C;t=C+(e*12|0)|0;Q[g+8>>2]=t;Q[g+4>>2]=t;Q[g+12>>2]=C+(I*12|0);return}function DA(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0;t=Q[g>>2]|0;B=g+4|0;F=I+4|0;C=(Q[B>>2]|0)-t|0;e=(Q[F>>2]|0)+(((C|0)/-12|0)*12|0)|0;Q[F>>2]=e;if((C|0)>0){tL(e|0,t|0,C|0)|0;t=F;e=Q[F>>2]|0}else t=F;F=Q[g>>2]|0;Q[g>>2]=e;Q[t>>2]=F;F=I+8|0;C=Q[B>>2]|0;Q[B>>2]=Q[F>>2];Q[F>>2]=C;F=g+8|0;B=I+12|0;g=Q[F>>2]|0;Q[F>>2]=Q[B>>2];Q[B>>2]=g;Q[I>>2]=Q[t>>2];return}function pA(g){g=g|0;var I=0,e=0,t=0;I=Q[g+4>>2]|0;e=g+8|0;t=Q[e>>2]|0;if((t|0)!=(I|0))Q[e>>2]=t+(~(((t+-12-I|0)>>>0)/12|0)*12|0);g=Q[g>>2]|0;if(g|0)KG(g);return}function EA(g){g=g|0;fA(g);return}function NA(g){g=g|0;WA(g+24|0);return}function WA(g){g=g|0;var I=0,e=0,t=0;e=Q[g>>2]|0;t=e;if(e|0){g=g+4|0;I=Q[g>>2]|0;if((I|0)!=(e|0))Q[g>>2]=I+(~(((I+-12-t|0)>>>0)/12|0)*12|0);KG(e)}return}function fA(g){g=g|0;var I=0;I=_B()|0;gn(g,2,8,I,XA()|0,0);Q[g+24>>2]=0;Q[g+28>>2]=0;Q[g+32>>2]=0;return}function XA(){return 1288}function JA(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0;e=l;l=l+16|0;t=e+8|0;C=e;F=vA(g)|0;g=Q[F+4>>2]|0;Q[C>>2]=Q[F>>2];Q[C+4>>2]=g;Q[t>>2]=Q[C>>2];Q[t+4>>2]=Q[C+4>>2];I=kA(I,t)|0;l=e;return I|0}function vA(g){g=g|0;return(Q[(xA()|0)+24>>2]|0)+(g*12|0)|0}function kA(g,I){g=g|0;I=I|0;var e=0;e=Q[I>>2]|0;I=Q[I+4>>2]|0;g=g+(I>>1)|0;if(I&1)e=Q[(Q[g>>2]|0)+e>>2]|0;return DF(aV[e&31](g)|0)|0}function HA(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0;t=l;l=l+16|0;C=t+8|0;F=t;n=Q[e>>2]|0;B=Q[e+4>>2]|0;e=hB(I)|0;Q[F>>2]=n;Q[F+4>>2]=B;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];MA(g,e,C,0);l=t;return}function MA(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0,F=0,B=0,n=0,U=0,s=0,i=0;C=l;l=l+32|0;F=C+16|0;i=C+8|0;n=C;s=Q[e>>2]|0;U=Q[e+4>>2]|0;B=Q[g>>2]|0;g=YA()|0;Q[i>>2]=s;Q[i+4>>2]=U;Q[F>>2]=Q[i>>2];Q[F+4>>2]=Q[i+4>>2];e=wA(F)|0;Q[n>>2]=s;Q[n+4>>2]=U;Q[F>>2]=Q[n>>2];Q[F+4>>2]=Q[n+4>>2];WB(B,I,g,e,TA(F,t)|0,t);l=C;return}function YA(){var g=0,I=0;if(!(t[7760]|0)){qA(9756);fg(39,9756,o|0)|0;I=7760;Q[I>>2]=1;Q[I+4>>2]=0}if(!(KB(9756)|0)){g=9756;I=g+36|0;do{Q[g>>2]=0;g=g+4|0}while((g|0)<(I|0));qA(9756)}return 9756}function wA(g){g=g|0;return 0}function TA(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0;i=l;l=l+32|0;C=i+24|0;B=i+16|0;n=i;U=i+8|0;F=Q[g>>2]|0;t=Q[g+4>>2]|0;Q[n>>2]=F;Q[n+4>>2]=t;c=YA()|0;s=c+24|0;g=vB(I,4)|0;Q[U>>2]=g;I=c+28|0;e=Q[I>>2]|0;if(e>>>0<(Q[c+32>>2]|0)>>>0){Q[B>>2]=F;Q[B+4>>2]=t;Q[C>>2]=Q[B>>2];Q[C+4>>2]=Q[B+4>>2];zA(e,C,g);g=(Q[I>>2]|0)+12|0;Q[I>>2]=g}else{OA(s,n,U);g=Q[I>>2]|0}l=i;return((g-(Q[s>>2]|0)|0)/12|0)+-1|0}function zA(g,I,e){g=g|0;I=I|0;e=e|0;var t=0;t=Q[I+4>>2]|0;Q[g>>2]=Q[I>>2];Q[g+4>>2]=t;Q[g+8>>2]=e;return}function OA(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0,A=0;s=l;l=l+48|0;t=s+32|0;B=s+24|0;n=s;U=g+4|0;C=(((Q[U>>2]|0)-(Q[g>>2]|0)|0)/12|0)+1|0;F=KA(g)|0;if(F>>>0<C>>>0)vG(g);else{i=Q[g>>2]|0;A=((Q[g+8>>2]|0)-i|0)/12|0;c=A<<1;jA(n,A>>>0<F>>>1>>>0?c>>>0<C>>>0?C:c:F,((Q[U>>2]|0)-i|0)/12|0,g+8|0);U=n+8|0;F=Q[U>>2]|0;C=Q[I+4>>2]|0;e=Q[e>>2]|0;Q[B>>2]=Q[I>>2];Q[B+4>>2]=C;Q[t>>2]=Q[B>>2];Q[t+4>>2]=Q[B+4>>2];zA(F,t,e);Q[U>>2]=(Q[U>>2]|0)+12;PA(g,n);_A(n);l=s;return}}function KA(g){g=g|0;return 357913941}function jA(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0;Q[g+12>>2]=0;Q[g+16>>2]=t;do{if(I){if(I>>>0>357913941)Kg();else{C=zG(I*12|0)|0;break}}else C=0}while(0);Q[g>>2]=C;t=C+(e*12|0)|0;Q[g+8>>2]=t;Q[g+4>>2]=t;Q[g+12>>2]=C+(I*12|0);return}function PA(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0;t=Q[g>>2]|0;B=g+4|0;F=I+4|0;C=(Q[B>>2]|0)-t|0;e=(Q[F>>2]|0)+(((C|0)/-12|0)*12|0)|0;Q[F>>2]=e;if((C|0)>0){tL(e|0,t|0,C|0)|0;t=F;e=Q[F>>2]|0}else t=F;F=Q[g>>2]|0;Q[g>>2]=e;Q[t>>2]=F;F=I+8|0;C=Q[B>>2]|0;Q[B>>2]=Q[F>>2];Q[F>>2]=C;F=g+8|0;B=I+12|0;g=Q[F>>2]|0;Q[F>>2]=Q[B>>2];Q[B>>2]=g;Q[I>>2]=Q[t>>2];return}function _A(g){g=g|0;var I=0,e=0,t=0;I=Q[g+4>>2]|0;e=g+8|0;t=Q[e>>2]|0;if((t|0)!=(I|0))Q[e>>2]=t+(~(((t+-12-I|0)>>>0)/12|0)*12|0);g=Q[g>>2]|0;if(g|0)KG(g);return}function qA(g){g=g|0;Il(g);return}function $A(g){g=g|0;gl(g+24|0);return}function gl(g){g=g|0;var I=0,e=0,t=0;e=Q[g>>2]|0;t=e;if(e|0){g=g+4|0;I=Q[g>>2]|0;if((I|0)!=(e|0))Q[g>>2]=I+(~(((I+-12-t|0)>>>0)/12|0)*12|0);KG(e)}return}function Il(g){g=g|0;var I=0;I=_B()|0;gn(g,2,8,I,el()|0,1);Q[g+24>>2]=0;Q[g+28>>2]=0;Q[g+32>>2]=0;return}function el(){return 1292}function tl(g,I,e){g=g|0;I=I|0;e=+e;var t=0,C=0,F=0,B=0;t=l;l=l+16|0;C=t+8|0;F=t;B=Cl(g)|0;g=Q[B+4>>2]|0;Q[F>>2]=Q[B>>2];Q[F+4>>2]=g;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];Ql(I,C,e);l=t;return}function Cl(g){g=g|0;return(Q[(YA()|0)+24>>2]|0)+(g*12|0)|0}function Ql(g,I,e){g=g|0;I=I|0;e=+e;var t=0,C=0,F=0;F=l;l=l+16|0;C=F;t=Q[I>>2]|0;I=Q[I+4>>2]|0;g=g+(I>>1)|0;if(I&1)t=Q[(Q[g>>2]|0)+t>>2]|0;Kn(C,e);e=+jn(C,e);iV[t&31](g,e);l=F;return}function Fl(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0;t=l;l=l+16|0;C=t+8|0;F=t;n=Q[e>>2]|0;B=Q[e+4>>2]|0;e=hB(I)|0;Q[F>>2]=n;Q[F+4>>2]=B;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];Bl(g,e,C,0);l=t;return}function Bl(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0,F=0,B=0,n=0,U=0,s=0,i=0;C=l;l=l+32|0;F=C+16|0;i=C+8|0;n=C;s=Q[e>>2]|0;U=Q[e+4>>2]|0;B=Q[g>>2]|0;g=nl()|0;Q[i>>2]=s;Q[i+4>>2]=U;Q[F>>2]=Q[i>>2];Q[F+4>>2]=Q[i+4>>2];e=Ul(F)|0;Q[n>>2]=s;Q[n+4>>2]=U;Q[F>>2]=Q[n>>2];Q[F+4>>2]=Q[n+4>>2];WB(B,I,g,e,sl(F,t)|0,t);l=C;return}function nl(){var g=0,I=0;if(!(t[7768]|0)){ol(9792);fg(40,9792,o|0)|0;I=7768;Q[I>>2]=1;Q[I+4>>2]=0}if(!(KB(9792)|0)){g=9792;I=g+36|0;do{Q[g>>2]=0;g=g+4|0}while((g|0)<(I|0));ol(9792)}return 9792}function Ul(g){g=g|0;return 0}function sl(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0;i=l;l=l+32|0;C=i+24|0;B=i+16|0;n=i;U=i+8|0;F=Q[g>>2]|0;t=Q[g+4>>2]|0;Q[n>>2]=F;Q[n+4>>2]=t;c=nl()|0;s=c+24|0;g=vB(I,4)|0;Q[U>>2]=g;I=c+28|0;e=Q[I>>2]|0;if(e>>>0<(Q[c+32>>2]|0)>>>0){Q[B>>2]=F;Q[B+4>>2]=t;Q[C>>2]=Q[B>>2];Q[C+4>>2]=Q[B+4>>2];il(e,C,g);g=(Q[I>>2]|0)+12|0;Q[I>>2]=g}else{cl(s,n,U);g=Q[I>>2]|0}l=i;return((g-(Q[s>>2]|0)|0)/12|0)+-1|0}function il(g,I,e){g=g|0;I=I|0;e=e|0;var t=0;t=Q[I+4>>2]|0;Q[g>>2]=Q[I>>2];Q[g+4>>2]=t;Q[g+8>>2]=e;return}function cl(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0,A=0;s=l;l=l+48|0;t=s+32|0;B=s+24|0;n=s;U=g+4|0;C=(((Q[U>>2]|0)-(Q[g>>2]|0)|0)/12|0)+1|0;F=Al(g)|0;if(F>>>0<C>>>0)vG(g);else{i=Q[g>>2]|0;A=((Q[g+8>>2]|0)-i|0)/12|0;c=A<<1;ll(n,A>>>0<F>>>1>>>0?c>>>0<C>>>0?C:c:F,((Q[U>>2]|0)-i|0)/12|0,g+8|0);U=n+8|0;F=Q[U>>2]|0;C=Q[I+4>>2]|0;e=Q[e>>2]|0;Q[B>>2]=Q[I>>2];Q[B+4>>2]=C;Q[t>>2]=Q[B>>2];Q[t+4>>2]=Q[B+4>>2];il(F,t,e);Q[U>>2]=(Q[U>>2]|0)+12;al(g,n);rl(n);l=s;return}}function Al(g){g=g|0;return 357913941}function ll(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0;Q[g+12>>2]=0;Q[g+16>>2]=t;do{if(I){if(I>>>0>357913941)Kg();else{C=zG(I*12|0)|0;break}}else C=0}while(0);Q[g>>2]=C;t=C+(e*12|0)|0;Q[g+8>>2]=t;Q[g+4>>2]=t;Q[g+12>>2]=C+(I*12|0);return}function al(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0;t=Q[g>>2]|0;B=g+4|0;F=I+4|0;C=(Q[B>>2]|0)-t|0;e=(Q[F>>2]|0)+(((C|0)/-12|0)*12|0)|0;Q[F>>2]=e;if((C|0)>0){tL(e|0,t|0,C|0)|0;t=F;e=Q[F>>2]|0}else t=F;F=Q[g>>2]|0;Q[g>>2]=e;Q[t>>2]=F;F=I+8|0;C=Q[B>>2]|0;Q[B>>2]=Q[F>>2];Q[F>>2]=C;F=g+8|0;B=I+12|0;g=Q[F>>2]|0;Q[F>>2]=Q[B>>2];Q[B>>2]=g;Q[I>>2]=Q[t>>2];return}function rl(g){g=g|0;var I=0,e=0,t=0;I=Q[g+4>>2]|0;e=g+8|0;t=Q[e>>2]|0;if((t|0)!=(I|0))Q[e>>2]=t+(~(((t+-12-I|0)>>>0)/12|0)*12|0);g=Q[g>>2]|0;if(g|0)KG(g);return}function ol(g){g=g|0;yl(g);return}function dl(g){g=g|0;ul(g+24|0);return}function ul(g){g=g|0;var I=0,e=0,t=0;e=Q[g>>2]|0;t=e;if(e|0){g=g+4|0;I=Q[g>>2]|0;if((I|0)!=(e|0))Q[g>>2]=I+(~(((I+-12-t|0)>>>0)/12|0)*12|0);KG(e)}return}function yl(g){g=g|0;var I=0;I=_B()|0;gn(g,2,1,I,bl()|0,2);Q[g+24>>2]=0;Q[g+28>>2]=0;Q[g+32>>2]=0;return}function bl(){return 1300}function Zl(g,I,e,t){g=g|0;I=I|0;e=e|0;t=+t;var C=0,F=0,B=0,n=0;C=l;l=l+16|0;F=C+8|0;B=C;n=ml(g)|0;g=Q[n+4>>2]|0;Q[B>>2]=Q[n>>2];Q[B+4>>2]=g;Q[F>>2]=Q[B>>2];Q[F+4>>2]=Q[B+4>>2];xl(I,F,e,t);l=C;return}function ml(g){g=g|0;return(Q[(nl()|0)+24>>2]|0)+(g*12|0)|0}function xl(g,I,e,t){g=g|0;I=I|0;e=e|0;t=+t;var C=0,F=0,B=0,n=0;n=l;l=l+16|0;F=n+1|0;B=n;C=Q[I>>2]|0;I=Q[I+4>>2]|0;g=g+(I>>1)|0;if(I&1)C=Q[(Q[g>>2]|0)+C>>2]|0;Pn(F,e);F=_n(F,e)|0;Kn(B,t);t=+jn(B,t);pV[C&15](g,F,t);l=n;return}function Rl(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0;t=l;l=l+16|0;C=t+8|0;F=t;n=Q[e>>2]|0;B=Q[e+4>>2]|0;e=hB(I)|0;Q[F>>2]=n;Q[F+4>>2]=B;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];Sl(g,e,C,0);l=t;return}function Sl(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0,F=0,B=0,n=0,U=0,s=0,i=0;C=l;l=l+32|0;F=C+16|0;i=C+8|0;n=C;s=Q[e>>2]|0;U=Q[e+4>>2]|0;B=Q[g>>2]|0;g=Gl()|0;Q[i>>2]=s;Q[i+4>>2]=U;Q[F>>2]=Q[i>>2];Q[F+4>>2]=Q[i+4>>2];e=Ll(F)|0;Q[n>>2]=s;Q[n+4>>2]=U;Q[F>>2]=Q[n>>2];Q[F+4>>2]=Q[n+4>>2];WB(B,I,g,e,Vl(F,t)|0,t);l=C;return}function Gl(){var g=0,I=0;if(!(t[7776]|0)){fl(9828);fg(41,9828,o|0)|0;I=7776;Q[I>>2]=1;Q[I+4>>2]=0}if(!(KB(9828)|0)){g=9828;I=g+36|0;do{Q[g>>2]=0;g=g+4|0}while((g|0)<(I|0));fl(9828)}return 9828}function Ll(g){g=g|0;return 0}function Vl(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0;i=l;l=l+32|0;C=i+24|0;B=i+16|0;n=i;U=i+8|0;F=Q[g>>2]|0;t=Q[g+4>>2]|0;Q[n>>2]=F;Q[n+4>>2]=t;c=Gl()|0;s=c+24|0;g=vB(I,4)|0;Q[U>>2]=g;I=c+28|0;e=Q[I>>2]|0;if(e>>>0<(Q[c+32>>2]|0)>>>0){Q[B>>2]=F;Q[B+4>>2]=t;Q[C>>2]=Q[B>>2];Q[C+4>>2]=Q[B+4>>2];hl(e,C,g);g=(Q[I>>2]|0)+12|0;Q[I>>2]=g}else{Dl(s,n,U);g=Q[I>>2]|0}l=i;return((g-(Q[s>>2]|0)|0)/12|0)+-1|0}function hl(g,I,e){g=g|0;I=I|0;e=e|0;var t=0;t=Q[I+4>>2]|0;Q[g>>2]=Q[I>>2];Q[g+4>>2]=t;Q[g+8>>2]=e;return}function Dl(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0,A=0;s=l;l=l+48|0;t=s+32|0;B=s+24|0;n=s;U=g+4|0;C=(((Q[U>>2]|0)-(Q[g>>2]|0)|0)/12|0)+1|0;F=pl(g)|0;if(F>>>0<C>>>0)vG(g);else{i=Q[g>>2]|0;A=((Q[g+8>>2]|0)-i|0)/12|0;c=A<<1;El(n,A>>>0<F>>>1>>>0?c>>>0<C>>>0?C:c:F,((Q[U>>2]|0)-i|0)/12|0,g+8|0);U=n+8|0;F=Q[U>>2]|0;C=Q[I+4>>2]|0;e=Q[e>>2]|0;Q[B>>2]=Q[I>>2];Q[B+4>>2]=C;Q[t>>2]=Q[B>>2];Q[t+4>>2]=Q[B+4>>2];hl(F,t,e);Q[U>>2]=(Q[U>>2]|0)+12;Nl(g,n);Wl(n);l=s;return}}function pl(g){g=g|0;return 357913941}function El(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0;Q[g+12>>2]=0;Q[g+16>>2]=t;do{if(I){if(I>>>0>357913941)Kg();else{C=zG(I*12|0)|0;break}}else C=0}while(0);Q[g>>2]=C;t=C+(e*12|0)|0;Q[g+8>>2]=t;Q[g+4>>2]=t;Q[g+12>>2]=C+(I*12|0);return}function Nl(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0;t=Q[g>>2]|0;B=g+4|0;F=I+4|0;C=(Q[B>>2]|0)-t|0;e=(Q[F>>2]|0)+(((C|0)/-12|0)*12|0)|0;Q[F>>2]=e;if((C|0)>0){tL(e|0,t|0,C|0)|0;t=F;e=Q[F>>2]|0}else t=F;F=Q[g>>2]|0;Q[g>>2]=e;Q[t>>2]=F;F=I+8|0;C=Q[B>>2]|0;Q[B>>2]=Q[F>>2];Q[F>>2]=C;F=g+8|0;B=I+12|0;g=Q[F>>2]|0;Q[F>>2]=Q[B>>2];Q[B>>2]=g;Q[I>>2]=Q[t>>2];return}function Wl(g){g=g|0;var I=0,e=0,t=0;I=Q[g+4>>2]|0;e=g+8|0;t=Q[e>>2]|0;if((t|0)!=(I|0))Q[e>>2]=t+(~(((t+-12-I|0)>>>0)/12|0)*12|0);g=Q[g>>2]|0;if(g|0)KG(g);return}function fl(g){g=g|0;vl(g);return}function Xl(g){g=g|0;Jl(g+24|0);return}function Jl(g){g=g|0;var I=0,e=0,t=0;e=Q[g>>2]|0;t=e;if(e|0){g=g+4|0;I=Q[g>>2]|0;if((I|0)!=(e|0))Q[g>>2]=I+(~(((I+-12-t|0)>>>0)/12|0)*12|0);KG(e)}return}function vl(g){g=g|0;var I=0;I=_B()|0;gn(g,2,7,I,kl()|0,1);Q[g+24>>2]=0;Q[g+28>>2]=0;Q[g+32>>2]=0;return}function kl(){return 1312}function Hl(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0;t=l;l=l+16|0;C=t+8|0;F=t;B=Ml(g)|0;g=Q[B+4>>2]|0;Q[F>>2]=Q[B>>2];Q[F+4>>2]=g;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];Yl(I,C,e);l=t;return}function Ml(g){g=g|0;return(Q[(Gl()|0)+24>>2]|0)+(g*12|0)|0}function Yl(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0;F=l;l=l+16|0;C=F;t=Q[I>>2]|0;I=Q[I+4>>2]|0;g=g+(I>>1)|0;if(I&1)t=Q[(Q[g>>2]|0)+t>>2]|0;Pn(C,e);C=_n(C,e)|0;lV[t&31](g,C);l=F;return}function wl(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0;t=l;l=l+16|0;C=t+8|0;F=t;n=Q[e>>2]|0;B=Q[e+4>>2]|0;e=hB(I)|0;Q[F>>2]=n;Q[F+4>>2]=B;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];Tl(g,e,C,0);l=t;return}function Tl(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0,F=0,B=0,n=0,U=0,s=0,i=0;C=l;l=l+32|0;F=C+16|0;i=C+8|0;n=C;s=Q[e>>2]|0;U=Q[e+4>>2]|0;B=Q[g>>2]|0;g=zl()|0;Q[i>>2]=s;Q[i+4>>2]=U;Q[F>>2]=Q[i>>2];Q[F+4>>2]=Q[i+4>>2];e=Ol(F)|0;Q[n>>2]=s;Q[n+4>>2]=U;Q[F>>2]=Q[n>>2];Q[F+4>>2]=Q[n+4>>2];WB(B,I,g,e,Kl(F,t)|0,t);l=C;return}function zl(){var g=0,I=0;if(!(t[7784]|0)){Ia(9864);fg(42,9864,o|0)|0;I=7784;Q[I>>2]=1;Q[I+4>>2]=0}if(!(KB(9864)|0)){g=9864;I=g+36|0;do{Q[g>>2]=0;g=g+4|0}while((g|0)<(I|0));Ia(9864)}return 9864}function Ol(g){g=g|0;return 0}function Kl(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0;i=l;l=l+32|0;C=i+24|0;B=i+16|0;n=i;U=i+8|0;F=Q[g>>2]|0;t=Q[g+4>>2]|0;Q[n>>2]=F;Q[n+4>>2]=t;c=zl()|0;s=c+24|0;g=vB(I,4)|0;Q[U>>2]=g;I=c+28|0;e=Q[I>>2]|0;if(e>>>0<(Q[c+32>>2]|0)>>>0){Q[B>>2]=F;Q[B+4>>2]=t;Q[C>>2]=Q[B>>2];Q[C+4>>2]=Q[B+4>>2];jl(e,C,g);g=(Q[I>>2]|0)+12|0;Q[I>>2]=g}else{Pl(s,n,U);g=Q[I>>2]|0}l=i;return((g-(Q[s>>2]|0)|0)/12|0)+-1|0}function jl(g,I,e){g=g|0;I=I|0;e=e|0;var t=0;t=Q[I+4>>2]|0;Q[g>>2]=Q[I>>2];Q[g+4>>2]=t;Q[g+8>>2]=e;return}function Pl(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0,A=0;s=l;l=l+48|0;t=s+32|0;B=s+24|0;n=s;U=g+4|0;C=(((Q[U>>2]|0)-(Q[g>>2]|0)|0)/12|0)+1|0;F=_l(g)|0;if(F>>>0<C>>>0)vG(g);else{i=Q[g>>2]|0;A=((Q[g+8>>2]|0)-i|0)/12|0;c=A<<1;ql(n,A>>>0<F>>>1>>>0?c>>>0<C>>>0?C:c:F,((Q[U>>2]|0)-i|0)/12|0,g+8|0);U=n+8|0;F=Q[U>>2]|0;C=Q[I+4>>2]|0;e=Q[e>>2]|0;Q[B>>2]=Q[I>>2];Q[B+4>>2]=C;Q[t>>2]=Q[B>>2];Q[t+4>>2]=Q[B+4>>2];jl(F,t,e);Q[U>>2]=(Q[U>>2]|0)+12;$l(g,n);ga(n);l=s;return}}function _l(g){g=g|0;return 357913941}function ql(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0;Q[g+12>>2]=0;Q[g+16>>2]=t;do{if(I){if(I>>>0>357913941)Kg();else{C=zG(I*12|0)|0;break}}else C=0}while(0);Q[g>>2]=C;t=C+(e*12|0)|0;Q[g+8>>2]=t;Q[g+4>>2]=t;Q[g+12>>2]=C+(I*12|0);return}function $l(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0;t=Q[g>>2]|0;B=g+4|0;F=I+4|0;C=(Q[B>>2]|0)-t|0;e=(Q[F>>2]|0)+(((C|0)/-12|0)*12|0)|0;Q[F>>2]=e;if((C|0)>0){tL(e|0,t|0,C|0)|0;t=F;e=Q[F>>2]|0}else t=F;F=Q[g>>2]|0;Q[g>>2]=e;Q[t>>2]=F;F=I+8|0;C=Q[B>>2]|0;Q[B>>2]=Q[F>>2];Q[F>>2]=C;F=g+8|0;B=I+12|0;g=Q[F>>2]|0;Q[F>>2]=Q[B>>2];Q[B>>2]=g;Q[I>>2]=Q[t>>2];return}function ga(g){g=g|0;var I=0,e=0,t=0;I=Q[g+4>>2]|0;e=g+8|0;t=Q[e>>2]|0;if((t|0)!=(I|0))Q[e>>2]=t+(~(((t+-12-I|0)>>>0)/12|0)*12|0);g=Q[g>>2]|0;if(g|0)KG(g);return}function Ia(g){g=g|0;Ca(g);return}function ea(g){g=g|0;ta(g+24|0);return}function ta(g){g=g|0;var I=0,e=0,t=0;e=Q[g>>2]|0;t=e;if(e|0){g=g+4|0;I=Q[g>>2]|0;if((I|0)!=(e|0))Q[g>>2]=I+(~(((I+-12-t|0)>>>0)/12|0)*12|0);KG(e)}return}function Ca(g){g=g|0;var I=0;I=_B()|0;gn(g,2,8,I,Qa()|0,1);Q[g+24>>2]=0;Q[g+28>>2]=0;Q[g+32>>2]=0;return}function Qa(){return 1320}function Fa(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0;t=l;l=l+16|0;C=t+8|0;F=t;B=Ba(g)|0;g=Q[B+4>>2]|0;Q[F>>2]=Q[B>>2];Q[F+4>>2]=g;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];na(I,C,e);l=t;return}function Ba(g){g=g|0;return(Q[(zl()|0)+24>>2]|0)+(g*12|0)|0}function na(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0;F=l;l=l+16|0;C=F;t=Q[I>>2]|0;I=Q[I+4>>2]|0;g=g+(I>>1)|0;if(I&1)t=Q[(Q[g>>2]|0)+t>>2]|0;Ua(C,e);C=sa(C,e)|0;lV[t&31](g,C);l=F;return}function Ua(g,I){g=g|0;I=I|0;return}function sa(g,I){g=g|0;I=I|0;return ia(I)|0}function ia(g){g=g|0;return g|0}function ca(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0;t=l;l=l+16|0;C=t+8|0;F=t;n=Q[e>>2]|0;B=Q[e+4>>2]|0;e=hB(I)|0;Q[F>>2]=n;Q[F+4>>2]=B;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];Aa(g,e,C,0);l=t;return}function Aa(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0,F=0,B=0,n=0,U=0,s=0,i=0;C=l;l=l+32|0;F=C+16|0;i=C+8|0;n=C;s=Q[e>>2]|0;U=Q[e+4>>2]|0;B=Q[g>>2]|0;g=la()|0;Q[i>>2]=s;Q[i+4>>2]=U;Q[F>>2]=Q[i>>2];Q[F+4>>2]=Q[i+4>>2];e=aa(F)|0;Q[n>>2]=s;Q[n+4>>2]=U;Q[F>>2]=Q[n>>2];Q[F+4>>2]=Q[n+4>>2];WB(B,I,g,e,ra(F,t)|0,t);l=C;return}function la(){var g=0,I=0;if(!(t[7792]|0)){ma(9900);fg(43,9900,o|0)|0;I=7792;Q[I>>2]=1;Q[I+4>>2]=0}if(!(KB(9900)|0)){g=9900;I=g+36|0;do{Q[g>>2]=0;g=g+4|0}while((g|0)<(I|0));ma(9900)}return 9900}function aa(g){g=g|0;return 0}function ra(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0;i=l;l=l+32|0;C=i+24|0;B=i+16|0;n=i;U=i+8|0;F=Q[g>>2]|0;t=Q[g+4>>2]|0;Q[n>>2]=F;Q[n+4>>2]=t;c=la()|0;s=c+24|0;g=vB(I,4)|0;Q[U>>2]=g;I=c+28|0;e=Q[I>>2]|0;if(e>>>0<(Q[c+32>>2]|0)>>>0){Q[B>>2]=F;Q[B+4>>2]=t;Q[C>>2]=Q[B>>2];Q[C+4>>2]=Q[B+4>>2];oa(e,C,g);g=(Q[I>>2]|0)+12|0;Q[I>>2]=g}else{da(s,n,U);g=Q[I>>2]|0}l=i;return((g-(Q[s>>2]|0)|0)/12|0)+-1|0}function oa(g,I,e){g=g|0;I=I|0;e=e|0;var t=0;t=Q[I+4>>2]|0;Q[g>>2]=Q[I>>2];Q[g+4>>2]=t;Q[g+8>>2]=e;return}function da(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0,A=0;s=l;l=l+48|0;t=s+32|0;B=s+24|0;n=s;U=g+4|0;C=(((Q[U>>2]|0)-(Q[g>>2]|0)|0)/12|0)+1|0;F=ua(g)|0;if(F>>>0<C>>>0)vG(g);else{i=Q[g>>2]|0;A=((Q[g+8>>2]|0)-i|0)/12|0;c=A<<1;ya(n,A>>>0<F>>>1>>>0?c>>>0<C>>>0?C:c:F,((Q[U>>2]|0)-i|0)/12|0,g+8|0);U=n+8|0;F=Q[U>>2]|0;C=Q[I+4>>2]|0;e=Q[e>>2]|0;Q[B>>2]=Q[I>>2];Q[B+4>>2]=C;Q[t>>2]=Q[B>>2];Q[t+4>>2]=Q[B+4>>2];oa(F,t,e);Q[U>>2]=(Q[U>>2]|0)+12;ba(g,n);Za(n);l=s;return}}function ua(g){g=g|0;return 357913941}function ya(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0;Q[g+12>>2]=0;Q[g+16>>2]=t;do{if(I){if(I>>>0>357913941)Kg();else{C=zG(I*12|0)|0;break}}else C=0}while(0);Q[g>>2]=C;t=C+(e*12|0)|0;Q[g+8>>2]=t;Q[g+4>>2]=t;Q[g+12>>2]=C+(I*12|0);return}function ba(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0;t=Q[g>>2]|0;B=g+4|0;F=I+4|0;C=(Q[B>>2]|0)-t|0;e=(Q[F>>2]|0)+(((C|0)/-12|0)*12|0)|0;Q[F>>2]=e;if((C|0)>0){tL(e|0,t|0,C|0)|0;t=F;e=Q[F>>2]|0}else t=F;F=Q[g>>2]|0;Q[g>>2]=e;Q[t>>2]=F;F=I+8|0;C=Q[B>>2]|0;Q[B>>2]=Q[F>>2];Q[F>>2]=C;F=g+8|0;B=I+12|0;g=Q[F>>2]|0;Q[F>>2]=Q[B>>2];Q[B>>2]=g;Q[I>>2]=Q[t>>2];return}function Za(g){g=g|0;var I=0,e=0,t=0;I=Q[g+4>>2]|0;e=g+8|0;t=Q[e>>2]|0;if((t|0)!=(I|0))Q[e>>2]=t+(~(((t+-12-I|0)>>>0)/12|0)*12|0);g=Q[g>>2]|0;if(g|0)KG(g);return}function ma(g){g=g|0;Sa(g);return}function xa(g){g=g|0;Ra(g+24|0);return}function Ra(g){g=g|0;var I=0,e=0,t=0;e=Q[g>>2]|0;t=e;if(e|0){g=g+4|0;I=Q[g>>2]|0;if((I|0)!=(e|0))Q[g>>2]=I+(~(((I+-12-t|0)>>>0)/12|0)*12|0);KG(e)}return}function Sa(g){g=g|0;var I=0;I=_B()|0;gn(g,2,22,I,Ga()|0,0);Q[g+24>>2]=0;Q[g+28>>2]=0;Q[g+32>>2]=0;return}function Ga(){return 1344}function La(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0;e=l;l=l+16|0;t=e+8|0;C=e;F=Va(g)|0;g=Q[F+4>>2]|0;Q[C>>2]=Q[F>>2];Q[C+4>>2]=g;Q[t>>2]=Q[C>>2];Q[t+4>>2]=Q[C+4>>2];ha(I,t);l=e;return}function Va(g){g=g|0;return(Q[(la()|0)+24>>2]|0)+(g*12|0)|0}function ha(g,I){g=g|0;I=I|0;var e=0;e=Q[I>>2]|0;I=Q[I+4>>2]|0;g=g+(I>>1)|0;if(I&1)e=Q[(Q[g>>2]|0)+e>>2]|0;AV[e&127](g);return}function Da(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0,F=0;F=Q[g>>2]|0;C=pa()|0;g=Ea(e)|0;WB(F,I,C,g,Na(e,t)|0,t);return}function pa(){var g=0,I=0;if(!(t[7800]|0)){Ha(9936);fg(44,9936,o|0)|0;I=7800;Q[I>>2]=1;Q[I+4>>2]=0}if(!(KB(9936)|0)){g=9936;I=g+36|0;do{Q[g>>2]=0;g=g+4|0}while((g|0)<(I|0));Ha(9936)}return 9936}function Ea(g){g=g|0;return g|0}function Na(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0,n=0,U=0;n=l;l=l+16|0;C=n;F=n+4|0;Q[C>>2]=g;U=pa()|0;B=U+24|0;I=vB(I,4)|0;Q[F>>2]=I;e=U+28|0;t=Q[e>>2]|0;if(t>>>0<(Q[U+32>>2]|0)>>>0){Wa(t,g,I);I=(Q[e>>2]|0)+8|0;Q[e>>2]=I}else{fa(B,C,F);I=Q[e>>2]|0}l=n;return(I-(Q[B>>2]|0)>>3)+-1|0}function Wa(g,I,e){g=g|0;I=I|0;e=e|0;Q[g>>2]=I;Q[g+4>>2]=e;return}function fa(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0;n=l;l=l+32|0;C=n;F=g+4|0;B=((Q[F>>2]|0)-(Q[g>>2]|0)>>3)+1|0;t=Xa(g)|0;if(t>>>0<B>>>0)vG(g);else{U=Q[g>>2]|0;i=(Q[g+8>>2]|0)-U|0;s=i>>2;Ja(C,i>>3>>>0<t>>>1>>>0?s>>>0<B>>>0?B:s:t,(Q[F>>2]|0)-U>>3,g+8|0);B=C+8|0;Wa(Q[B>>2]|0,Q[I>>2]|0,Q[e>>2]|0);Q[B>>2]=(Q[B>>2]|0)+8;va(g,C);ka(C);l=n;return}}function Xa(g){g=g|0;return 536870911}function Ja(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0;Q[g+12>>2]=0;Q[g+16>>2]=t;do{if(I){if(I>>>0>536870911)Kg();else{C=zG(I<<3)|0;break}}else C=0}while(0);Q[g>>2]=C;t=C+(e<<3)|0;Q[g+8>>2]=t;Q[g+4>>2]=t;Q[g+12>>2]=C+(I<<3);return}function va(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0;t=Q[g>>2]|0;B=g+4|0;F=I+4|0;C=(Q[B>>2]|0)-t|0;e=(Q[F>>2]|0)+(0-(C>>3)<<3)|0;Q[F>>2]=e;if((C|0)>0){tL(e|0,t|0,C|0)|0;t=F;e=Q[F>>2]|0}else t=F;F=Q[g>>2]|0;Q[g>>2]=e;Q[t>>2]=F;F=I+8|0;C=Q[B>>2]|0;Q[B>>2]=Q[F>>2];Q[F>>2]=C;F=g+8|0;B=I+12|0;g=Q[F>>2]|0;Q[F>>2]=Q[B>>2];Q[B>>2]=g;Q[I>>2]=Q[t>>2];return}function ka(g){g=g|0;var I=0,e=0,t=0;I=Q[g+4>>2]|0;e=g+8|0;t=Q[e>>2]|0;if((t|0)!=(I|0))Q[e>>2]=t+(~((t+-8-I|0)>>>3)<<3);g=Q[g>>2]|0;if(g|0)KG(g);return}function Ha(g){g=g|0;wa(g);return}function Ma(g){g=g|0;Ya(g+24|0);return}function Ya(g){g=g|0;var I=0,e=0,t=0;e=Q[g>>2]|0;t=e;if(e|0){g=g+4|0;I=Q[g>>2]|0;if((I|0)!=(e|0))Q[g>>2]=I+(~((I+-8-t|0)>>>3)<<3);KG(e)}return}function wa(g){g=g|0;var I=0;I=_B()|0;gn(g,1,23,I,Ai()|0,1);Q[g+24>>2]=0;Q[g+28>>2]=0;Q[g+32>>2]=0;return}function Ta(g,I){g=g|0;I=I|0;Oa(Q[(za(g)|0)>>2]|0,I);return}function za(g){g=g|0;return(Q[(pa()|0)+24>>2]|0)+(g<<3)|0}function Oa(g,I){g=g|0;I=I|0;var e=0,t=0;e=l;l=l+16|0;t=e;oi(t,I);I=di(t,I)|0;AV[g&127](I);l=e;return}function Ka(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0,F=0;F=Q[g>>2]|0;C=ja()|0;g=Pa(e)|0;WB(F,I,C,g,_a(e,t)|0,t);return}function ja(){var g=0,I=0;if(!(t[7808]|0)){Cr(9972);fg(45,9972,o|0)|0;I=7808;Q[I>>2]=1;Q[I+4>>2]=0}if(!(KB(9972)|0)){g=9972;I=g+36|0;do{Q[g>>2]=0;g=g+4|0}while((g|0)<(I|0));Cr(9972)}return 9972}function Pa(g){g=g|0;return g|0}function _a(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0,n=0,U=0;n=l;l=l+16|0;C=n;F=n+4|0;Q[C>>2]=g;U=ja()|0;B=U+24|0;I=vB(I,4)|0;Q[F>>2]=I;e=U+28|0;t=Q[e>>2]|0;if(t>>>0<(Q[U+32>>2]|0)>>>0){qa(t,g,I);I=(Q[e>>2]|0)+8|0;Q[e>>2]=I}else{$a(B,C,F);I=Q[e>>2]|0}l=n;return(I-(Q[B>>2]|0)>>3)+-1|0}function qa(g,I,e){g=g|0;I=I|0;e=e|0;Q[g>>2]=I;Q[g+4>>2]=e;return}function $a(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0;n=l;l=l+32|0;C=n;F=g+4|0;B=((Q[F>>2]|0)-(Q[g>>2]|0)>>3)+1|0;t=gr(g)|0;if(t>>>0<B>>>0)vG(g);else{U=Q[g>>2]|0;i=(Q[g+8>>2]|0)-U|0;s=i>>2;Ir(C,i>>3>>>0<t>>>1>>>0?s>>>0<B>>>0?B:s:t,(Q[F>>2]|0)-U>>3,g+8|0);B=C+8|0;qa(Q[B>>2]|0,Q[I>>2]|0,Q[e>>2]|0);Q[B>>2]=(Q[B>>2]|0)+8;er(g,C);tr(C);l=n;return}}function gr(g){g=g|0;return 536870911}function Ir(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0;Q[g+12>>2]=0;Q[g+16>>2]=t;do{if(I){if(I>>>0>536870911)Kg();else{C=zG(I<<3)|0;break}}else C=0}while(0);Q[g>>2]=C;t=C+(e<<3)|0;Q[g+8>>2]=t;Q[g+4>>2]=t;Q[g+12>>2]=C+(I<<3);return}function er(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0;t=Q[g>>2]|0;B=g+4|0;F=I+4|0;C=(Q[B>>2]|0)-t|0;e=(Q[F>>2]|0)+(0-(C>>3)<<3)|0;Q[F>>2]=e;if((C|0)>0){tL(e|0,t|0,C|0)|0;t=F;e=Q[F>>2]|0}else t=F;F=Q[g>>2]|0;Q[g>>2]=e;Q[t>>2]=F;F=I+8|0;C=Q[B>>2]|0;Q[B>>2]=Q[F>>2];Q[F>>2]=C;F=g+8|0;B=I+12|0;g=Q[F>>2]|0;Q[F>>2]=Q[B>>2];Q[B>>2]=g;Q[I>>2]=Q[t>>2];return}function tr(g){g=g|0;var I=0,e=0,t=0;I=Q[g+4>>2]|0;e=g+8|0;t=Q[e>>2]|0;if((t|0)!=(I|0))Q[e>>2]=t+(~((t+-8-I|0)>>>3)<<3);g=Q[g>>2]|0;if(g|0)KG(g);return}function Cr(g){g=g|0;Br(g);return}function Qr(g){g=g|0;Fr(g+24|0);return}function Fr(g){g=g|0;var I=0,e=0,t=0;e=Q[g>>2]|0;t=e;if(e|0){g=g+4|0;I=Q[g>>2]|0;if((I|0)!=(e|0))Q[g>>2]=I+(~((I+-8-t|0)>>>3)<<3);KG(e)}return}function Br(g){g=g|0;var I=0;I=_B()|0;gn(g,1,9,I,nr()|0,1);Q[g+24>>2]=0;Q[g+28>>2]=0;Q[g+32>>2]=0;return}function nr(){return 1348}function Ur(g,I){g=g|0;I=I|0;return ir(Q[(sr(g)|0)>>2]|0,I)|0}function sr(g){g=g|0;return(Q[(ja()|0)+24>>2]|0)+(g<<3)|0}function ir(g,I){g=g|0;I=I|0;var e=0,t=0;e=l;l=l+16|0;t=e;cr(t,I);I=Ar(t,I)|0;I=is(aV[g&31](I)|0)|0;l=e;return I|0}function cr(g,I){g=g|0;I=I|0;return}function Ar(g,I){g=g|0;I=I|0;return lr(I)|0}function lr(g){g=g|0;return g|0}function ar(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0,F=0;F=Q[g>>2]|0;C=rr()|0;g=or(e)|0;WB(F,I,C,g,dr(e,t)|0,t);return}function rr(){var g=0,I=0;if(!(t[7816]|0)){Rr(10008);fg(46,10008,o|0)|0;I=7816;Q[I>>2]=1;Q[I+4>>2]=0}if(!(KB(10008)|0)){g=10008;I=g+36|0;do{Q[g>>2]=0;g=g+4|0}while((g|0)<(I|0));Rr(10008)}return 10008}function or(g){g=g|0;return g|0}function dr(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0,n=0,U=0;n=l;l=l+16|0;C=n;F=n+4|0;Q[C>>2]=g;U=rr()|0;B=U+24|0;I=vB(I,4)|0;Q[F>>2]=I;e=U+28|0;t=Q[e>>2]|0;if(t>>>0<(Q[U+32>>2]|0)>>>0){ur(t,g,I);I=(Q[e>>2]|0)+8|0;Q[e>>2]=I}else{yr(B,C,F);I=Q[e>>2]|0}l=n;return(I-(Q[B>>2]|0)>>3)+-1|0}function ur(g,I,e){g=g|0;I=I|0;e=e|0;Q[g>>2]=I;Q[g+4>>2]=e;return}function yr(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0;n=l;l=l+32|0;C=n;F=g+4|0;B=((Q[F>>2]|0)-(Q[g>>2]|0)>>3)+1|0;t=br(g)|0;if(t>>>0<B>>>0)vG(g);else{U=Q[g>>2]|0;i=(Q[g+8>>2]|0)-U|0;s=i>>2;Zr(C,i>>3>>>0<t>>>1>>>0?s>>>0<B>>>0?B:s:t,(Q[F>>2]|0)-U>>3,g+8|0);B=C+8|0;ur(Q[B>>2]|0,Q[I>>2]|0,Q[e>>2]|0);Q[B>>2]=(Q[B>>2]|0)+8;mr(g,C);xr(C);l=n;return}}function br(g){g=g|0;return 536870911}function Zr(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0;Q[g+12>>2]=0;Q[g+16>>2]=t;do{if(I){if(I>>>0>536870911)Kg();else{C=zG(I<<3)|0;break}}else C=0}while(0);Q[g>>2]=C;t=C+(e<<3)|0;Q[g+8>>2]=t;Q[g+4>>2]=t;Q[g+12>>2]=C+(I<<3);return}function mr(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0;t=Q[g>>2]|0;B=g+4|0;F=I+4|0;C=(Q[B>>2]|0)-t|0;e=(Q[F>>2]|0)+(0-(C>>3)<<3)|0;Q[F>>2]=e;if((C|0)>0){tL(e|0,t|0,C|0)|0;t=F;e=Q[F>>2]|0}else t=F;F=Q[g>>2]|0;Q[g>>2]=e;Q[t>>2]=F;F=I+8|0;C=Q[B>>2]|0;Q[B>>2]=Q[F>>2];Q[F>>2]=C;F=g+8|0;B=I+12|0;g=Q[F>>2]|0;Q[F>>2]=Q[B>>2];Q[B>>2]=g;Q[I>>2]=Q[t>>2];return}function xr(g){g=g|0;var I=0,e=0,t=0;I=Q[g+4>>2]|0;e=g+8|0;t=Q[e>>2]|0;if((t|0)!=(I|0))Q[e>>2]=t+(~((t+-8-I|0)>>>3)<<3);g=Q[g>>2]|0;if(g|0)KG(g);return}function Rr(g){g=g|0;Lr(g);return}function Sr(g){g=g|0;Gr(g+24|0);return}function Gr(g){g=g|0;var I=0,e=0,t=0;e=Q[g>>2]|0;t=e;if(e|0){g=g+4|0;I=Q[g>>2]|0;if((I|0)!=(e|0))Q[g>>2]=I+(~((I+-8-t|0)>>>3)<<3);KG(e)}return}function Lr(g){g=g|0;var I=0;I=_B()|0;gn(g,1,15,I,Ls()|0,0);Q[g+24>>2]=0;Q[g+28>>2]=0;Q[g+32>>2]=0;return}function Vr(g){g=g|0;return Dr(Q[(hr(g)|0)>>2]|0)|0}function hr(g){g=g|0;return(Q[(rr()|0)+24>>2]|0)+(g<<3)|0}function Dr(g){g=g|0;return is(SV[g&7]()|0)|0}function pr(){var g=0;if(!(t[7832]|0)){Mr(10052);fg(25,10052,o|0)|0;g=7832;Q[g>>2]=1;Q[g+4>>2]=0}return 10052}function Er(g,I){g=g|0;I=I|0;Q[g>>2]=Nr()|0;Q[g+4>>2]=Wr()|0;Q[g+12>>2]=I;Q[g+8>>2]=fr()|0;Q[g+32>>2]=2;return}function Nr(){return 11709}function Wr(){return 1188}function fr(){return kr()|0}function Xr(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;if((Jr(t,896)|0)==512){if(e|0){vr(e);KG(e)}}else if(I|0){PC(I);KG(I)}return}function Jr(g,I){g=g|0;I=I|0;return I&g|0}function vr(g){g=g|0;g=Q[g+4>>2]|0;if(g|0)wG(g);return}function kr(){var g=0;if(!(t[7824]|0)){Q[2511]=Hr()|0;Q[2512]=0;g=7824;Q[g>>2]=1;Q[g+4>>2]=0}return 10044}function Hr(){return 0}function Mr(g){g=g|0;Ln(g);return}function Yr(g){g=g|0;var I=0,e=0,t=0,C=0,F=0;I=l;l=l+32|0;e=I+24|0;F=I+16|0;C=I+8|0;t=I;wr(g,4827);Tr(g,4834,3)|0;zr(g,3682,47)|0;Q[F>>2]=9;Q[F+4>>2]=0;Q[e>>2]=Q[F>>2];Q[e+4>>2]=Q[F+4>>2];Or(g,4841,e)|0;Q[C>>2]=1;Q[C+4>>2]=0;Q[e>>2]=Q[C>>2];Q[e+4>>2]=Q[C+4>>2];Kr(g,4871,e)|0;Q[t>>2]=10;Q[t+4>>2]=0;Q[e>>2]=Q[t>>2];Q[e+4>>2]=Q[t+4>>2];jr(g,4891,e)|0;l=I;return}function wr(g,I){g=g|0;I=I|0;var e=0;e=Yd()|0;Q[g>>2]=e;wd(e,I);Ub(Q[g>>2]|0);return}function Tr(g,I,e){g=g|0;I=I|0;e=e|0;xd(g,hB(I)|0,e,0);return g|0}function zr(g,I,e){g=g|0;I=I|0;e=e|0;Fd(g,hB(I)|0,e,0);return g|0}function Or(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0;t=l;l=l+16|0;C=t+8|0;F=t;B=Q[e+4>>2]|0;Q[F>>2]=Q[e>>2];Q[F+4>>2]=B;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];Jo(g,I,C);l=t;return g|0}function Kr(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0;t=l;l=l+16|0;C=t+8|0;F=t;B=Q[e+4>>2]|0;Q[F>>2]=Q[e>>2];Q[F+4>>2]=B;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];ao(g,I,C);l=t;return g|0}function jr(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0;t=l;l=l+16|0;C=t+8|0;F=t;B=Q[e+4>>2]|0;Q[F>>2]=Q[e>>2];Q[F+4>>2]=B;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];Pr(g,I,C);l=t;return g|0}function Pr(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0;t=l;l=l+16|0;C=t+8|0;F=t;n=Q[e>>2]|0;B=Q[e+4>>2]|0;e=hB(I)|0;Q[F>>2]=n;Q[F+4>>2]=B;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];_r(g,e,C,1);l=t;return}function _r(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0,F=0,B=0,n=0,U=0,s=0,i=0;C=l;l=l+32|0;F=C+16|0;i=C+8|0;n=C;s=Q[e>>2]|0;U=Q[e+4>>2]|0;B=Q[g>>2]|0;g=qr()|0;Q[i>>2]=s;Q[i+4>>2]=U;Q[F>>2]=Q[i>>2];Q[F+4>>2]=Q[i+4>>2];e=$r(F)|0;Q[n>>2]=s;Q[n+4>>2]=U;Q[F>>2]=Q[n>>2];Q[F+4>>2]=Q[n+4>>2];WB(B,I,g,e,go(F,t)|0,t);l=C;return}function qr(){var g=0,I=0;if(!(t[7840]|0)){Bo(10100);fg(48,10100,o|0)|0;I=7840;Q[I>>2]=1;Q[I+4>>2]=0}if(!(KB(10100)|0)){g=10100;I=g+36|0;do{Q[g>>2]=0;g=g+4|0}while((g|0)<(I|0));Bo(10100)}return 10100}function $r(g){g=g|0;return 0}function go(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0;i=l;l=l+32|0;C=i+24|0;B=i+16|0;n=i;U=i+8|0;F=Q[g>>2]|0;t=Q[g+4>>2]|0;Q[n>>2]=F;Q[n+4>>2]=t;c=qr()|0;s=c+24|0;g=vB(I,4)|0;Q[U>>2]=g;I=c+28|0;e=Q[I>>2]|0;if(e>>>0<(Q[c+32>>2]|0)>>>0){Q[B>>2]=F;Q[B+4>>2]=t;Q[C>>2]=Q[B>>2];Q[C+4>>2]=Q[B+4>>2];Io(e,C,g);g=(Q[I>>2]|0)+12|0;Q[I>>2]=g}else{eo(s,n,U);g=Q[I>>2]|0}l=i;return((g-(Q[s>>2]|0)|0)/12|0)+-1|0}function Io(g,I,e){g=g|0;I=I|0;e=e|0;var t=0;t=Q[I+4>>2]|0;Q[g>>2]=Q[I>>2];Q[g+4>>2]=t;Q[g+8>>2]=e;return}function eo(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0,A=0;s=l;l=l+48|0;t=s+32|0;B=s+24|0;n=s;U=g+4|0;C=(((Q[U>>2]|0)-(Q[g>>2]|0)|0)/12|0)+1|0;F=to(g)|0;if(F>>>0<C>>>0)vG(g);else{i=Q[g>>2]|0;A=((Q[g+8>>2]|0)-i|0)/12|0;c=A<<1;Co(n,A>>>0<F>>>1>>>0?c>>>0<C>>>0?C:c:F,((Q[U>>2]|0)-i|0)/12|0,g+8|0);U=n+8|0;F=Q[U>>2]|0;C=Q[I+4>>2]|0;e=Q[e>>2]|0;Q[B>>2]=Q[I>>2];Q[B+4>>2]=C;Q[t>>2]=Q[B>>2];Q[t+4>>2]=Q[B+4>>2];Io(F,t,e);Q[U>>2]=(Q[U>>2]|0)+12;Qo(g,n);Fo(n);l=s;return}}function to(g){g=g|0;return 357913941}function Co(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0;Q[g+12>>2]=0;Q[g+16>>2]=t;do{if(I){if(I>>>0>357913941)Kg();else{C=zG(I*12|0)|0;break}}else C=0}while(0);Q[g>>2]=C;t=C+(e*12|0)|0;Q[g+8>>2]=t;Q[g+4>>2]=t;Q[g+12>>2]=C+(I*12|0);return}function Qo(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0;t=Q[g>>2]|0;B=g+4|0;F=I+4|0;C=(Q[B>>2]|0)-t|0;e=(Q[F>>2]|0)+(((C|0)/-12|0)*12|0)|0;Q[F>>2]=e;if((C|0)>0){tL(e|0,t|0,C|0)|0;t=F;e=Q[F>>2]|0}else t=F;F=Q[g>>2]|0;Q[g>>2]=e;Q[t>>2]=F;F=I+8|0;C=Q[B>>2]|0;Q[B>>2]=Q[F>>2];Q[F>>2]=C;F=g+8|0;B=I+12|0;g=Q[F>>2]|0;Q[F>>2]=Q[B>>2];Q[B>>2]=g;Q[I>>2]=Q[t>>2];return}function Fo(g){g=g|0;var I=0,e=0,t=0;I=Q[g+4>>2]|0;e=g+8|0;t=Q[e>>2]|0;if((t|0)!=(I|0))Q[e>>2]=t+(~(((t+-12-I|0)>>>0)/12|0)*12|0);g=Q[g>>2]|0;if(g|0)KG(g);return}function Bo(g){g=g|0;so(g);return}function no(g){g=g|0;Uo(g+24|0);return}function Uo(g){g=g|0;var I=0,e=0,t=0;e=Q[g>>2]|0;t=e;if(e|0){g=g+4|0;I=Q[g>>2]|0;if((I|0)!=(e|0))Q[g>>2]=I+(~(((I+-12-t|0)>>>0)/12|0)*12|0);KG(e)}return}function so(g){g=g|0;var I=0;I=_B()|0;gn(g,2,6,I,io()|0,1);Q[g+24>>2]=0;Q[g+28>>2]=0;Q[g+32>>2]=0;return}function io(){return 1364}function co(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0;t=l;l=l+16|0;C=t+8|0;F=t;B=Ao(g)|0;g=Q[B+4>>2]|0;Q[F>>2]=Q[B>>2];Q[F+4>>2]=g;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];e=lo(I,C,e)|0;l=t;return e|0}function Ao(g){g=g|0;return(Q[(qr()|0)+24>>2]|0)+(g*12|0)|0}function lo(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0;F=l;l=l+16|0;C=F;t=Q[I>>2]|0;I=Q[I+4>>2]|0;g=g+(I>>1)|0;if(I&1)t=Q[(Q[g>>2]|0)+t>>2]|0;Pn(C,e);C=_n(C,e)|0;C=uU(ZV[t&15](g,C)|0)|0;l=F;return C|0}function ao(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0;t=l;l=l+16|0;C=t+8|0;F=t;n=Q[e>>2]|0;B=Q[e+4>>2]|0;e=hB(I)|0;Q[F>>2]=n;Q[F+4>>2]=B;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];ro(g,e,C,0);l=t;return}function ro(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0,F=0,B=0,n=0,U=0,s=0,i=0;C=l;l=l+32|0;F=C+16|0;i=C+8|0;n=C;s=Q[e>>2]|0;U=Q[e+4>>2]|0;B=Q[g>>2]|0;g=oo()|0;Q[i>>2]=s;Q[i+4>>2]=U;Q[F>>2]=Q[i>>2];Q[F+4>>2]=Q[i+4>>2];e=uo(F)|0;Q[n>>2]=s;Q[n+4>>2]=U;Q[F>>2]=Q[n>>2];Q[F+4>>2]=Q[n+4>>2];WB(B,I,g,e,yo(F,t)|0,t);l=C;return}function oo(){var g=0,I=0;if(!(t[7848]|0)){Go(10136);fg(49,10136,o|0)|0;I=7848;Q[I>>2]=1;Q[I+4>>2]=0}if(!(KB(10136)|0)){g=10136;I=g+36|0;do{Q[g>>2]=0;g=g+4|0}while((g|0)<(I|0));Go(10136)}return 10136}function uo(g){g=g|0;return 0}function yo(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0;i=l;l=l+32|0;C=i+24|0;B=i+16|0;n=i;U=i+8|0;F=Q[g>>2]|0;t=Q[g+4>>2]|0;Q[n>>2]=F;Q[n+4>>2]=t;c=oo()|0;s=c+24|0;g=vB(I,4)|0;Q[U>>2]=g;I=c+28|0;e=Q[I>>2]|0;if(e>>>0<(Q[c+32>>2]|0)>>>0){Q[B>>2]=F;Q[B+4>>2]=t;Q[C>>2]=Q[B>>2];Q[C+4>>2]=Q[B+4>>2];bo(e,C,g);g=(Q[I>>2]|0)+12|0;Q[I>>2]=g}else{Zo(s,n,U);g=Q[I>>2]|0}l=i;return((g-(Q[s>>2]|0)|0)/12|0)+-1|0}function bo(g,I,e){g=g|0;I=I|0;e=e|0;var t=0;t=Q[I+4>>2]|0;Q[g>>2]=Q[I>>2];Q[g+4>>2]=t;Q[g+8>>2]=e;return}function Zo(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0,A=0;s=l;l=l+48|0;t=s+32|0;B=s+24|0;n=s;U=g+4|0;C=(((Q[U>>2]|0)-(Q[g>>2]|0)|0)/12|0)+1|0;F=mo(g)|0;if(F>>>0<C>>>0)vG(g);else{i=Q[g>>2]|0;A=((Q[g+8>>2]|0)-i|0)/12|0;c=A<<1;xo(n,A>>>0<F>>>1>>>0?c>>>0<C>>>0?C:c:F,((Q[U>>2]|0)-i|0)/12|0,g+8|0);U=n+8|0;F=Q[U>>2]|0;C=Q[I+4>>2]|0;e=Q[e>>2]|0;Q[B>>2]=Q[I>>2];Q[B+4>>2]=C;Q[t>>2]=Q[B>>2];Q[t+4>>2]=Q[B+4>>2];bo(F,t,e);Q[U>>2]=(Q[U>>2]|0)+12;Ro(g,n);So(n);l=s;return}}function mo(g){g=g|0;return 357913941}function xo(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0;Q[g+12>>2]=0;Q[g+16>>2]=t;do{if(I){if(I>>>0>357913941)Kg();else{C=zG(I*12|0)|0;break}}else C=0}while(0);Q[g>>2]=C;t=C+(e*12|0)|0;Q[g+8>>2]=t;Q[g+4>>2]=t;Q[g+12>>2]=C+(I*12|0);return}function Ro(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0;t=Q[g>>2]|0;B=g+4|0;F=I+4|0;C=(Q[B>>2]|0)-t|0;e=(Q[F>>2]|0)+(((C|0)/-12|0)*12|0)|0;Q[F>>2]=e;if((C|0)>0){tL(e|0,t|0,C|0)|0;t=F;e=Q[F>>2]|0}else t=F;F=Q[g>>2]|0;Q[g>>2]=e;Q[t>>2]=F;F=I+8|0;C=Q[B>>2]|0;Q[B>>2]=Q[F>>2];Q[F>>2]=C;F=g+8|0;B=I+12|0;g=Q[F>>2]|0;Q[F>>2]=Q[B>>2];Q[B>>2]=g;Q[I>>2]=Q[t>>2];return}function So(g){g=g|0;var I=0,e=0,t=0;I=Q[g+4>>2]|0;e=g+8|0;t=Q[e>>2]|0;if((t|0)!=(I|0))Q[e>>2]=t+(~(((t+-12-I|0)>>>0)/12|0)*12|0);g=Q[g>>2]|0;if(g|0)KG(g);return}function Go(g){g=g|0;ho(g);return}function Lo(g){g=g|0;Vo(g+24|0);return}function Vo(g){g=g|0;var I=0,e=0,t=0;e=Q[g>>2]|0;t=e;if(e|0){g=g+4|0;I=Q[g>>2]|0;if((I|0)!=(e|0))Q[g>>2]=I+(~(((I+-12-t|0)>>>0)/12|0)*12|0);KG(e)}return}function ho(g){g=g|0;var I=0;I=_B()|0;gn(g,2,9,I,Do()|0,1);Q[g+24>>2]=0;Q[g+28>>2]=0;Q[g+32>>2]=0;return}function Do(){return 1372}function po(g,I,e){g=g|0;I=I|0;e=+e;var t=0,C=0,F=0,B=0;t=l;l=l+16|0;C=t+8|0;F=t;B=Eo(g)|0;g=Q[B+4>>2]|0;Q[F>>2]=Q[B>>2];Q[F+4>>2]=g;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];No(I,C,e);l=t;return}function Eo(g){g=g|0;return(Q[(oo()|0)+24>>2]|0)+(g*12|0)|0}function No(g,I,e){g=g|0;I=I|0;e=+e;var t=0,C=0,F=0,B=iI;F=l;l=l+16|0;C=F;t=Q[I>>2]|0;I=Q[I+4>>2]|0;g=g+(I>>1)|0;if(I&1)t=Q[(Q[g>>2]|0)+t>>2]|0;Wo(C,e);B=K(fo(C,e));sV[t&1](g,B);l=F;return}function Wo(g,I){g=g|0;I=+I;return}function fo(g,I){g=g|0;I=+I;return K(Xo(I))}function Xo(g){g=+g;return K(g)}function Jo(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0;t=l;l=l+16|0;C=t+8|0;F=t;n=Q[e>>2]|0;B=Q[e+4>>2]|0;e=hB(I)|0;Q[F>>2]=n;Q[F+4>>2]=B;Q[C>>2]=Q[F>>2];Q[C+4>>2]=Q[F+4>>2];vo(g,e,C,0);l=t;return}function vo(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0,F=0,B=0,n=0,U=0,s=0,i=0;C=l;l=l+32|0;F=C+16|0;i=C+8|0;n=C;s=Q[e>>2]|0;U=Q[e+4>>2]|0;B=Q[g>>2]|0;g=ko()|0;Q[i>>2]=s;Q[i+4>>2]=U;Q[F>>2]=Q[i>>2];Q[F+4>>2]=Q[i+4>>2];e=Ho(F)|0;Q[n>>2]=s;Q[n+4>>2]=U;Q[F>>2]=Q[n>>2];Q[F+4>>2]=Q[n+4>>2];WB(B,I,g,e,Mo(F,t)|0,t);l=C;return}function ko(){var g=0,I=0;if(!(t[7856]|0)){jo(10172);fg(50,10172,o|0)|0;I=7856;Q[I>>2]=1;Q[I+4>>2]=0}if(!(KB(10172)|0)){g=10172;I=g+36|0;do{Q[g>>2]=0;g=g+4|0}while((g|0)<(I|0));jo(10172)}return 10172}function Ho(g){g=g|0;return 0}function Mo(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0;i=l;l=l+32|0;C=i+24|0;B=i+16|0;n=i;U=i+8|0;F=Q[g>>2]|0;t=Q[g+4>>2]|0;Q[n>>2]=F;Q[n+4>>2]=t;c=ko()|0;s=c+24|0;g=vB(I,4)|0;Q[U>>2]=g;I=c+28|0;e=Q[I>>2]|0;if(e>>>0<(Q[c+32>>2]|0)>>>0){Q[B>>2]=F;Q[B+4>>2]=t;Q[C>>2]=Q[B>>2];Q[C+4>>2]=Q[B+4>>2];Yo(e,C,g);g=(Q[I>>2]|0)+12|0;Q[I>>2]=g}else{wo(s,n,U);g=Q[I>>2]|0}l=i;return((g-(Q[s>>2]|0)|0)/12|0)+-1|0}function Yo(g,I,e){g=g|0;I=I|0;e=e|0;var t=0;t=Q[I+4>>2]|0;Q[g>>2]=Q[I>>2];Q[g+4>>2]=t;Q[g+8>>2]=e;return}function wo(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0,A=0;s=l;l=l+48|0;t=s+32|0;B=s+24|0;n=s;U=g+4|0;C=(((Q[U>>2]|0)-(Q[g>>2]|0)|0)/12|0)+1|0;F=To(g)|0;if(F>>>0<C>>>0)vG(g);else{i=Q[g>>2]|0;A=((Q[g+8>>2]|0)-i|0)/12|0;c=A<<1;zo(n,A>>>0<F>>>1>>>0?c>>>0<C>>>0?C:c:F,((Q[U>>2]|0)-i|0)/12|0,g+8|0);U=n+8|0;F=Q[U>>2]|0;C=Q[I+4>>2]|0;e=Q[e>>2]|0;Q[B>>2]=Q[I>>2];Q[B+4>>2]=C;Q[t>>2]=Q[B>>2];Q[t+4>>2]=Q[B+4>>2];Yo(F,t,e);Q[U>>2]=(Q[U>>2]|0)+12;Oo(g,n);Ko(n);l=s;return}}function To(g){g=g|0;return 357913941}function zo(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0;Q[g+12>>2]=0;Q[g+16>>2]=t;do{if(I){if(I>>>0>357913941)Kg();else{C=zG(I*12|0)|0;break}}else C=0}while(0);Q[g>>2]=C;t=C+(e*12|0)|0;Q[g+8>>2]=t;Q[g+4>>2]=t;Q[g+12>>2]=C+(I*12|0);return}function Oo(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0;t=Q[g>>2]|0;B=g+4|0;F=I+4|0;C=(Q[B>>2]|0)-t|0;e=(Q[F>>2]|0)+(((C|0)/-12|0)*12|0)|0;Q[F>>2]=e;if((C|0)>0){tL(e|0,t|0,C|0)|0;t=F;e=Q[F>>2]|0}else t=F;F=Q[g>>2]|0;Q[g>>2]=e;Q[t>>2]=F;F=I+8|0;C=Q[B>>2]|0;Q[B>>2]=Q[F>>2];Q[F>>2]=C;F=g+8|0;B=I+12|0;g=Q[F>>2]|0;Q[F>>2]=Q[B>>2];Q[B>>2]=g;Q[I>>2]=Q[t>>2];return}function Ko(g){g=g|0;var I=0,e=0,t=0;I=Q[g+4>>2]|0;e=g+8|0;t=Q[e>>2]|0;if((t|0)!=(I|0))Q[e>>2]=t+(~(((t+-12-I|0)>>>0)/12|0)*12|0);g=Q[g>>2]|0;if(g|0)KG(g);return}function jo(g){g=g|0;qo(g);return}function Po(g){g=g|0;_o(g+24|0);return}function _o(g){g=g|0;var I=0,e=0,t=0;e=Q[g>>2]|0;t=e;if(e|0){g=g+4|0;I=Q[g>>2]|0;if((I|0)!=(e|0))Q[g>>2]=I+(~(((I+-12-t|0)>>>0)/12|0)*12|0);KG(e)}return}function qo(g){g=g|0;var I=0;I=_B()|0;gn(g,2,3,I,$o()|0,2);Q[g+24>>2]=0;Q[g+28>>2]=0;Q[g+32>>2]=0;return}function $o(){return 1380}function gd(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0,F=0,B=0,n=0;C=l;l=l+16|0;F=C+8|0;B=C;n=Id(g)|0;g=Q[n+4>>2]|0;Q[B>>2]=Q[n>>2];Q[B+4>>2]=g;Q[F>>2]=Q[B>>2];Q[F+4>>2]=Q[B+4>>2];ed(I,F,e,t);l=C;return}function Id(g){g=g|0;return(Q[(ko()|0)+24>>2]|0)+(g*12|0)|0}function ed(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0,F=0,B=0,n=0;n=l;l=l+16|0;F=n+1|0;B=n;C=Q[I>>2]|0;I=Q[I+4>>2]|0;g=g+(I>>1)|0;if(I&1)C=Q[(Q[g>>2]|0)+C>>2]|0;Pn(F,e);F=_n(F,e)|0;td(B,t);B=Cd(B,t)|0;hV[C&15](g,F,B);l=n;return}function td(g,I){g=g|0;I=I|0;return}function Cd(g,I){g=g|0;I=I|0;return Qd(I)|0}function Qd(g){g=g|0;return(g|0)!=0|0}function Fd(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0,F=0;F=Q[g>>2]|0;C=Bd()|0;g=nd(e)|0;WB(F,I,C,g,Ud(e,t)|0,t);return}function Bd(){var g=0,I=0;if(!(t[7864]|0)){rd(10208);fg(51,10208,o|0)|0;I=7864;Q[I>>2]=1;Q[I+4>>2]=0}if(!(KB(10208)|0)){g=10208;I=g+36|0;do{Q[g>>2]=0;g=g+4|0}while((g|0)<(I|0));rd(10208)}return 10208}function nd(g){g=g|0;return g|0}function Ud(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0,n=0,U=0;n=l;l=l+16|0;C=n;F=n+4|0;Q[C>>2]=g;U=Bd()|0;B=U+24|0;I=vB(I,4)|0;Q[F>>2]=I;e=U+28|0;t=Q[e>>2]|0;if(t>>>0<(Q[U+32>>2]|0)>>>0){sd(t,g,I);I=(Q[e>>2]|0)+8|0;Q[e>>2]=I}else{id(B,C,F);I=Q[e>>2]|0}l=n;return(I-(Q[B>>2]|0)>>3)+-1|0}function sd(g,I,e){g=g|0;I=I|0;e=e|0;Q[g>>2]=I;Q[g+4>>2]=e;return}function id(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0;n=l;l=l+32|0;C=n;F=g+4|0;B=((Q[F>>2]|0)-(Q[g>>2]|0)>>3)+1|0;t=cd(g)|0;if(t>>>0<B>>>0)vG(g);else{U=Q[g>>2]|0;i=(Q[g+8>>2]|0)-U|0;s=i>>2;Ad(C,i>>3>>>0<t>>>1>>>0?s>>>0<B>>>0?B:s:t,(Q[F>>2]|0)-U>>3,g+8|0);B=C+8|0;sd(Q[B>>2]|0,Q[I>>2]|0,Q[e>>2]|0);Q[B>>2]=(Q[B>>2]|0)+8;ld(g,C);ad(C);l=n;return}}function cd(g){g=g|0;return 536870911}function Ad(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0;Q[g+12>>2]=0;Q[g+16>>2]=t;do{if(I){if(I>>>0>536870911)Kg();else{C=zG(I<<3)|0;break}}else C=0}while(0);Q[g>>2]=C;t=C+(e<<3)|0;Q[g+8>>2]=t;Q[g+4>>2]=t;Q[g+12>>2]=C+(I<<3);return}function ld(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0;t=Q[g>>2]|0;B=g+4|0;F=I+4|0;C=(Q[B>>2]|0)-t|0;e=(Q[F>>2]|0)+(0-(C>>3)<<3)|0;Q[F>>2]=e;if((C|0)>0){tL(e|0,t|0,C|0)|0;t=F;e=Q[F>>2]|0}else t=F;F=Q[g>>2]|0;Q[g>>2]=e;Q[t>>2]=F;F=I+8|0;C=Q[B>>2]|0;Q[B>>2]=Q[F>>2];Q[F>>2]=C;F=g+8|0;B=I+12|0;g=Q[F>>2]|0;Q[F>>2]=Q[B>>2];Q[B>>2]=g;Q[I>>2]=Q[t>>2];return}function ad(g){g=g|0;var I=0,e=0,t=0;I=Q[g+4>>2]|0;e=g+8|0;t=Q[e>>2]|0;if((t|0)!=(I|0))Q[e>>2]=t+(~((t+-8-I|0)>>>3)<<3);g=Q[g>>2]|0;if(g|0)KG(g);return}function rd(g){g=g|0;ud(g);return}function od(g){g=g|0;dd(g+24|0);return}function dd(g){g=g|0;var I=0,e=0,t=0;e=Q[g>>2]|0;t=e;if(e|0){g=g+4|0;I=Q[g>>2]|0;if((I|0)!=(e|0))Q[g>>2]=I+(~((I+-8-t|0)>>>3)<<3);KG(e)}return}function ud(g){g=g|0;var I=0;I=_B()|0;gn(g,1,24,I,yd()|0,1);Q[g+24>>2]=0;Q[g+28>>2]=0;Q[g+32>>2]=0;return}function yd(){return 1392}function bd(g,I){g=g|0;I=I|0;md(Q[(Zd(g)|0)>>2]|0,I);return}function Zd(g){g=g|0;return(Q[(Bd()|0)+24>>2]|0)+(g<<3)|0}function md(g,I){g=g|0;I=I|0;var e=0,t=0;e=l;l=l+16|0;t=e;cr(t,I);I=Ar(t,I)|0;AV[g&127](I);l=e;return}function xd(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0,F=0;F=Q[g>>2]|0;C=Rd()|0;g=Sd(e)|0;WB(F,I,C,g,Gd(e,t)|0,t);return}function Rd(){var g=0,I=0;if(!(t[7872]|0)){Nd(10244);fg(52,10244,o|0)|0;I=7872;Q[I>>2]=1;Q[I+4>>2]=0}if(!(KB(10244)|0)){g=10244;I=g+36|0;do{Q[g>>2]=0;g=g+4|0}while((g|0)<(I|0));Nd(10244)}return 10244}function Sd(g){g=g|0;return g|0}function Gd(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0,n=0,U=0;n=l;l=l+16|0;C=n;F=n+4|0;Q[C>>2]=g;U=Rd()|0;B=U+24|0;I=vB(I,4)|0;Q[F>>2]=I;e=U+28|0;t=Q[e>>2]|0;if(t>>>0<(Q[U+32>>2]|0)>>>0){Ld(t,g,I);I=(Q[e>>2]|0)+8|0;Q[e>>2]=I}else{Vd(B,C,F);I=Q[e>>2]|0}l=n;return(I-(Q[B>>2]|0)>>3)+-1|0}function Ld(g,I,e){g=g|0;I=I|0;e=e|0;Q[g>>2]=I;Q[g+4>>2]=e;return}function Vd(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0;n=l;l=l+32|0;C=n;F=g+4|0;B=((Q[F>>2]|0)-(Q[g>>2]|0)>>3)+1|0;t=hd(g)|0;if(t>>>0<B>>>0)vG(g);else{U=Q[g>>2]|0;i=(Q[g+8>>2]|0)-U|0;s=i>>2;Dd(C,i>>3>>>0<t>>>1>>>0?s>>>0<B>>>0?B:s:t,(Q[F>>2]|0)-U>>3,g+8|0);B=C+8|0;Ld(Q[B>>2]|0,Q[I>>2]|0,Q[e>>2]|0);Q[B>>2]=(Q[B>>2]|0)+8;pd(g,C);Ed(C);l=n;return}}function hd(g){g=g|0;return 536870911}function Dd(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0;Q[g+12>>2]=0;Q[g+16>>2]=t;do{if(I){if(I>>>0>536870911)Kg();else{C=zG(I<<3)|0;break}}else C=0}while(0);Q[g>>2]=C;t=C+(e<<3)|0;Q[g+8>>2]=t;Q[g+4>>2]=t;Q[g+12>>2]=C+(I<<3);return}function pd(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0;t=Q[g>>2]|0;B=g+4|0;F=I+4|0;C=(Q[B>>2]|0)-t|0;e=(Q[F>>2]|0)+(0-(C>>3)<<3)|0;Q[F>>2]=e;if((C|0)>0){tL(e|0,t|0,C|0)|0;t=F;e=Q[F>>2]|0}else t=F;F=Q[g>>2]|0;Q[g>>2]=e;Q[t>>2]=F;F=I+8|0;C=Q[B>>2]|0;Q[B>>2]=Q[F>>2];Q[F>>2]=C;F=g+8|0;B=I+12|0;g=Q[F>>2]|0;Q[F>>2]=Q[B>>2];Q[B>>2]=g;Q[I>>2]=Q[t>>2];return}function Ed(g){g=g|0;var I=0,e=0,t=0;I=Q[g+4>>2]|0;e=g+8|0;t=Q[e>>2]|0;if((t|0)!=(I|0))Q[e>>2]=t+(~((t+-8-I|0)>>>3)<<3);g=Q[g>>2]|0;if(g|0)KG(g);return}function Nd(g){g=g|0;Xd(g);return}function Wd(g){g=g|0;fd(g+24|0);return}function fd(g){g=g|0;var I=0,e=0,t=0;e=Q[g>>2]|0;t=e;if(e|0){g=g+4|0;I=Q[g>>2]|0;if((I|0)!=(e|0))Q[g>>2]=I+(~((I+-8-t|0)>>>3)<<3);KG(e)}return}function Xd(g){g=g|0;var I=0;I=_B()|0;gn(g,1,16,I,Jd()|0,0);Q[g+24>>2]=0;Q[g+28>>2]=0;Q[g+32>>2]=0;return}function Jd(){return 1400}function vd(g){g=g|0;return Hd(Q[(kd(g)|0)>>2]|0)|0}function kd(g){g=g|0;return(Q[(Rd()|0)+24>>2]|0)+(g<<3)|0}function Hd(g){g=g|0;return Md(SV[g&7]()|0)|0}function Md(g){g=g|0;return g|0}function Yd(){var g=0;if(!(t[7880]|0)){Pd(10280);fg(25,10280,o|0)|0;g=7880;Q[g>>2]=1;Q[g+4>>2]=0}return 10280}function wd(g,I){g=g|0;I=I|0;Q[g>>2]=Td()|0;Q[g+4>>2]=zd()|0;Q[g+12>>2]=I;Q[g+8>>2]=Od()|0;Q[g+32>>2]=4;return}function Td(){return 11711}function zd(){return 1356}function Od(){return kr()|0}function Kd(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;if((Jr(t,896)|0)==512){if(e|0){jd(e);KG(e)}}else if(I|0){MC(I);KG(I)}return}function jd(g){g=g|0;g=Q[g+4>>2]|0;if(g|0)wG(g);return}function Pd(g){g=g|0;Ln(g);return}function _d(g){g=g|0;qd(g,4920);$d(g)|0;gu(g)|0;return}function qd(g,I){g=g|0;I=I|0;var e=0;e=Yc()|0;Q[g>>2]=e;Su(e,I);Ub(Q[g>>2]|0);return}function $d(g){g=g|0;var I=0;I=Q[g>>2]|0;eu(I,lu()|0);return g|0}function gu(g){g=g|0;var I=0;I=Q[g>>2]|0;eu(I,Iu()|0);return g|0}function Iu(){var g=0;if(!(t[7888]|0)){tu(10328);fg(53,10328,o|0)|0;g=7888;Q[g>>2]=1;Q[g+4>>2]=0}if(!(KB(10328)|0))tu(10328);return 10328}function eu(g,I){g=g|0;I=I|0;WB(g,0,I,0,0,0);return}function tu(g){g=g|0;Fu(g);nu(g,10);return}function Cu(g){g=g|0;Qu(g+24|0);return}function Qu(g){g=g|0;var I=0,e=0,t=0;e=Q[g>>2]|0;t=e;if(e|0){g=g+4|0;I=Q[g>>2]|0;if((I|0)!=(e|0))Q[g>>2]=I+(~((I+-8-t|0)>>>3)<<3);KG(e)}return}function Fu(g){g=g|0;var I=0;I=_B()|0;gn(g,5,1,I,iu()|0,2);Q[g+24>>2]=0;Q[g+28>>2]=0;Q[g+32>>2]=0;return}function Bu(g,I,e){g=g|0;I=I|0;e=+e;Uu(g,I,e);return}function nu(g,I){g=g|0;I=I|0;Q[g+20>>2]=I;return}function Uu(g,I,e){g=g|0;I=I|0;e=+e;var t=0,C=0,F=0,B=0,n=0;t=l;l=l+16|0;F=t+8|0;n=t+13|0;C=t;B=t+12|0;Pn(n,I);Q[F>>2]=_n(n,I)|0;Kn(B,e);s[C>>3]=+jn(B,e);su(g,F,C);l=t;return}function su(g,I,e){g=g|0;I=I|0;e=e|0;MQ(g+8|0,Q[I>>2]|0,+s[e>>3]);t[g+24>>0]=1;return}function iu(){return 1404}function cu(g,I){g=g|0;I=+I;return Au(g,I)|0}function Au(g,I){g=g|0;I=+I;var e=0,t=0,C=0,F=0,B=0,n=0,U=0;t=l;l=l+16|0;F=t+4|0;B=t+8|0;n=t;C=vm(8)|0;e=C;U=zG(16)|0;Pn(F,g);g=_n(F,g)|0;Kn(B,I);MQ(U,g,+jn(B,I));B=e+4|0;Q[B>>2]=U;g=zG(8)|0;B=Q[B>>2]|0;Q[n>>2]=0;Q[F>>2]=Q[n>>2];zc(g,B,F);Q[C>>2]=g;l=t;return e|0}function lu(){var g=0;if(!(t[7896]|0)){au(10364);fg(54,10364,o|0)|0;g=7896;Q[g>>2]=1;Q[g+4>>2]=0}if(!(KB(10364)|0))au(10364);return 10364}function au(g){g=g|0;du(g);nu(g,55);return}function ru(g){g=g|0;ou(g+24|0);return}function ou(g){g=g|0;var I=0,e=0,t=0;e=Q[g>>2]|0;t=e;if(e|0){g=g+4|0;I=Q[g>>2]|0;if((I|0)!=(e|0))Q[g>>2]=I+(~((I+-8-t|0)>>>3)<<3);KG(e)}return}function du(g){g=g|0;var I=0;I=_B()|0;gn(g,5,4,I,mu()|0,0);Q[g+24>>2]=0;Q[g+28>>2]=0;Q[g+32>>2]=0;return}function uu(g){g=g|0;yu(g);return}function yu(g){g=g|0;bu(g);return}function bu(g){g=g|0;Zu(g+8|0);t[g+24>>0]=1;return}function Zu(g){g=g|0;Q[g>>2]=0;s[g+8>>3]=0.0;return}function mu(){return 1424}function xu(){return Ru()|0}function Ru(){var g=0,I=0,e=0,t=0,C=0,F=0,B=0;I=l;l=l+16|0;C=I+4|0;B=I;e=vm(8)|0;g=e;t=zG(16)|0;Zu(t);F=g+4|0;Q[F>>2]=t;t=zG(8)|0;F=Q[F>>2]|0;Q[B>>2]=0;Q[C>>2]=Q[B>>2];zc(t,F,C);Q[e>>2]=t;l=I;return g|0}function Su(g,I){g=g|0;I=I|0;Q[g>>2]=Gu()|0;Q[g+4>>2]=Lu()|0;Q[g+12>>2]=I;Q[g+8>>2]=Vu()|0;Q[g+32>>2]=5;return}function Gu(){return 11710}function Lu(){return 1416}function Vu(){return pu()|0}function hu(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;if((Jr(t,896)|0)==512){if(e|0){Du(e);KG(e)}}else if(I|0)KG(I);return}function Du(g){g=g|0;g=Q[g+4>>2]|0;if(g|0)wG(g);return}function pu(){var g=0;if(!(t[7904]|0)){Q[2600]=Eu()|0;Q[2601]=0;g=7904;Q[g>>2]=1;Q[g+4>>2]=0}return 10400}function Eu(){return Q[357]|0}function Nu(g){g=g|0;Wu(g,4926);fu(g)|0;return}function Wu(g,I){g=g|0;I=I|0;var e=0;e=Cn()|0;Q[g>>2]=e;Ku(e,I);Ub(Q[g>>2]|0);return}function fu(g){g=g|0;var I=0;I=Q[g>>2]|0;eu(I,Xu()|0);return g|0}function Xu(){var g=0;if(!(t[7912]|0)){Ju(10412);fg(56,10412,o|0)|0;g=7912;Q[g>>2]=1;Q[g+4>>2]=0}if(!(KB(10412)|0))Ju(10412);return 10412}function Ju(g){g=g|0;Hu(g);nu(g,57);return}function vu(g){g=g|0;ku(g+24|0);return}function ku(g){g=g|0;var I=0,e=0,t=0;e=Q[g>>2]|0;t=e;if(e|0){g=g+4|0;I=Q[g>>2]|0;if((I|0)!=(e|0))Q[g>>2]=I+(~((I+-8-t|0)>>>3)<<3);KG(e)}return}function Hu(g){g=g|0;var I=0;I=_B()|0;gn(g,5,5,I,Tu()|0,0);Q[g+24>>2]=0;Q[g+28>>2]=0;Q[g+32>>2]=0;return}function Mu(g){g=g|0;Yu(g);return}function Yu(g){g=g|0;wu(g);return}function wu(g){g=g|0;var I=0,e=0;I=g+8|0;e=I+48|0;do{Q[I>>2]=0;I=I+4|0}while((I|0)<(e|0));t[g+56>>0]=1;return}function Tu(){return 1432}function zu(){return Ou()|0}function Ou(){var g=0,I=0,e=0,t=0,C=0,F=0,B=0,n=0;B=l;l=l+16|0;g=B+4|0;I=B;e=vm(8)|0;t=e;C=zG(48)|0;F=C;n=F+48|0;do{Q[F>>2]=0;F=F+4|0}while((F|0)<(n|0));F=t+4|0;Q[F>>2]=C;n=zG(8)|0;F=Q[F>>2]|0;Q[I>>2]=0;Q[g>>2]=Q[I>>2];cn(n,F,g);Q[e>>2]=n;l=B;return t|0}function Ku(g,I){g=g|0;I=I|0;Q[g>>2]=ju()|0;Q[g+4>>2]=Pu()|0;Q[g+12>>2]=I;Q[g+8>>2]=_u()|0;Q[g+32>>2]=6;return}function ju(){return 11704}function Pu(){return 1436}function _u(){return pu()|0}function qu(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;if((Jr(t,896)|0)==512){if(e|0){$u(e);KG(e)}}else if(I|0)KG(I);return}function $u(g){g=g|0;g=Q[g+4>>2]|0;if(g|0)wG(g);return}function gy(g){g=g|0;Iy(g,4933);ey(g)|0;ty(g)|0;return}function Iy(g,I){g=g|0;I=I|0;var e=0;e=py()|0;Q[g>>2]=e;Ey(e,I);Ub(Q[g>>2]|0);return}function ey(g){g=g|0;var I=0;I=Q[g>>2]|0;eu(I,yy()|0);return g|0}function ty(g){g=g|0;var I=0;I=Q[g>>2]|0;eu(I,Cy()|0);return g|0}function Cy(){var g=0;if(!(t[7920]|0)){Qy(10452);fg(58,10452,o|0)|0;g=7920;Q[g>>2]=1;Q[g+4>>2]=0}if(!(KB(10452)|0))Qy(10452);return 10452}function Qy(g){g=g|0;ny(g);nu(g,1);return}function Fy(g){g=g|0;By(g+24|0);return}function By(g){g=g|0;var I=0,e=0,t=0;e=Q[g>>2]|0;t=e;if(e|0){g=g+4|0;I=Q[g>>2]|0;if((I|0)!=(e|0))Q[g>>2]=I+(~((I+-8-t|0)>>>3)<<3);KG(e)}return}function ny(g){g=g|0;var I=0;I=_B()|0;gn(g,5,1,I,Ay()|0,2);Q[g+24>>2]=0;Q[g+28>>2]=0;Q[g+32>>2]=0;return}function Uy(g,I,e){g=g|0;I=+I;e=+e;sy(g,I,e);return}function sy(g,I,e){g=g|0;I=+I;e=+e;var t=0,C=0,Q=0,F=0,B=0;t=l;l=l+32|0;Q=t+8|0;B=t+17|0;C=t;F=t+16|0;Kn(B,I);s[Q>>3]=+jn(B,I);Kn(F,e);s[C>>3]=+jn(F,e);iy(g,Q,C);l=t;return}function iy(g,I,e){g=g|0;I=I|0;e=e|0;cy(g+8|0,+s[I>>3],+s[e>>3]);t[g+24>>0]=1;return}function cy(g,I,e){g=g|0;I=+I;e=+e;s[g>>3]=I;s[g+8>>3]=e;return}function Ay(){return 1472}function ly(g,I){g=+g;I=+I;return ay(g,I)|0}function ay(g,I){g=+g;I=+I;var e=0,t=0,C=0,F=0,B=0,n=0,U=0;t=l;l=l+16|0;B=t+4|0;n=t+8|0;U=t;C=vm(8)|0;e=C;F=zG(16)|0;Kn(B,g);g=+jn(B,g);Kn(n,I);cy(F,g,+jn(n,I));n=e+4|0;Q[n>>2]=F;F=zG(8)|0;n=Q[n>>2]|0;Q[U>>2]=0;Q[B>>2]=Q[U>>2];ry(F,n,B);Q[C>>2]=F;l=t;return e|0}function ry(g,I,e){g=g|0;I=I|0;e=e|0;Q[g>>2]=I;e=zG(16)|0;Q[e+4>>2]=0;Q[e+8>>2]=0;Q[e>>2]=1452;Q[e+12>>2]=I;Q[g+4>>2]=e;return}function oy(g){g=g|0;kG(g);KG(g);return}function dy(g){g=g|0;g=Q[g+12>>2]|0;if(g|0)KG(g);return}function uy(g){g=g|0;KG(g);return}function yy(){var g=0;if(!(t[7928]|0)){by(10488);fg(59,10488,o|0)|0;g=7928;Q[g>>2]=1;Q[g+4>>2]=0}if(!(KB(10488)|0))by(10488);return 10488}function by(g){g=g|0;xy(g);nu(g,60);return}function Zy(g){g=g|0;my(g+24|0);return}function my(g){g=g|0;var I=0,e=0,t=0;e=Q[g>>2]|0;t=e;if(e|0){g=g+4|0;I=Q[g>>2]|0;if((I|0)!=(e|0))Q[g>>2]=I+(~((I+-8-t|0)>>>3)<<3);KG(e)}return}function xy(g){g=g|0;var I=0;I=_B()|0;gn(g,5,6,I,Vy()|0,0);Q[g+24>>2]=0;Q[g+28>>2]=0;Q[g+32>>2]=0;return}function Ry(g){g=g|0;Sy(g);return}function Sy(g){g=g|0;Gy(g);return}function Gy(g){g=g|0;Ly(g+8|0);t[g+24>>0]=1;return}function Ly(g){g=g|0;Q[g>>2]=0;Q[g+4>>2]=0;Q[g+8>>2]=0;Q[g+12>>2]=0;return}function Vy(){return 1492}function hy(){return Dy()|0}function Dy(){var g=0,I=0,e=0,t=0,C=0,F=0,B=0;I=l;l=l+16|0;C=I+4|0;B=I;e=vm(8)|0;g=e;t=zG(16)|0;Ly(t);F=g+4|0;Q[F>>2]=t;t=zG(8)|0;F=Q[F>>2]|0;Q[B>>2]=0;Q[C>>2]=Q[B>>2];ry(t,F,C);Q[e>>2]=t;l=I;return g|0}function py(){var g=0;if(!(t[7936]|0)){vy(10524);fg(25,10524,o|0)|0;g=7936;Q[g>>2]=1;Q[g+4>>2]=0}return 10524}function Ey(g,I){g=g|0;I=I|0;Q[g>>2]=Ny()|0;Q[g+4>>2]=Wy()|0;Q[g+12>>2]=I;Q[g+8>>2]=fy()|0;Q[g+32>>2]=7;return}function Ny(){return 11700}function Wy(){return 1484}function fy(){return pu()|0}function Xy(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;if((Jr(t,896)|0)==512){if(e|0){Jy(e);KG(e)}}else if(I|0)KG(I);return}function Jy(g){g=g|0;g=Q[g+4>>2]|0;if(g|0)wG(g);return}function vy(g){g=g|0;Ln(g);return}function ky(g,I,e){g=g|0;I=I|0;e=e|0;g=hB(I)|0;I=Hy(e)|0;e=My(e,0)|0;Gb(g,I,e,Yy()|0,0);return}function Hy(g){g=g|0;return g|0}function My(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0,n=0,U=0;n=l;l=l+16|0;C=n;F=n+4|0;Q[C>>2]=g;U=Yy()|0;B=U+24|0;I=vB(I,4)|0;Q[F>>2]=I;e=U+28|0;t=Q[e>>2]|0;if(t>>>0<(Q[U+32>>2]|0)>>>0){_y(t,g,I);I=(Q[e>>2]|0)+8|0;Q[e>>2]=I}else{qy(B,C,F);I=Q[e>>2]|0}l=n;return(I-(Q[B>>2]|0)>>3)+-1|0}function Yy(){var g=0,I=0;if(!(t[7944]|0)){wy(10568);fg(61,10568,o|0)|0;I=7944;Q[I>>2]=1;Q[I+4>>2]=0}if(!(KB(10568)|0)){g=10568;I=g+36|0;do{Q[g>>2]=0;g=g+4|0}while((g|0)<(I|0));wy(10568)}return 10568}function wy(g){g=g|0;Oy(g);return}function Ty(g){g=g|0;zy(g+24|0);return}function zy(g){g=g|0;var I=0,e=0,t=0;e=Q[g>>2]|0;t=e;if(e|0){g=g+4|0;I=Q[g>>2]|0;if((I|0)!=(e|0))Q[g>>2]=I+(~((I+-8-t|0)>>>3)<<3);KG(e)}return}function Oy(g){g=g|0;var I=0;I=_B()|0;gn(g,1,17,I,Os()|0,0);Q[g+24>>2]=0;Q[g+28>>2]=0;Q[g+32>>2]=0;return}function Ky(g){g=g|0;return Py(Q[(jy(g)|0)>>2]|0)|0}function jy(g){g=g|0;return(Q[(Yy()|0)+24>>2]|0)+(g<<3)|0}function Py(g){g=g|0;return _s(SV[g&7]()|0)|0}function _y(g,I,e){g=g|0;I=I|0;e=e|0;Q[g>>2]=I;Q[g+4>>2]=e;return}function qy(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0;n=l;l=l+32|0;C=n;F=g+4|0;B=((Q[F>>2]|0)-(Q[g>>2]|0)>>3)+1|0;t=$y(g)|0;if(t>>>0<B>>>0)vG(g);else{U=Q[g>>2]|0;i=(Q[g+8>>2]|0)-U|0;s=i>>2;gb(C,i>>3>>>0<t>>>1>>>0?s>>>0<B>>>0?B:s:t,(Q[F>>2]|0)-U>>3,g+8|0);B=C+8|0;_y(Q[B>>2]|0,Q[I>>2]|0,Q[e>>2]|0);Q[B>>2]=(Q[B>>2]|0)+8;Ib(g,C);eb(C);l=n;return}}function $y(g){g=g|0;return 536870911}function gb(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0;Q[g+12>>2]=0;Q[g+16>>2]=t;do{if(I){if(I>>>0>536870911)Kg();else{C=zG(I<<3)|0;break}}else C=0}while(0);Q[g>>2]=C;t=C+(e<<3)|0;Q[g+8>>2]=t;Q[g+4>>2]=t;Q[g+12>>2]=C+(I<<3);return}function Ib(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0;t=Q[g>>2]|0;B=g+4|0;F=I+4|0;C=(Q[B>>2]|0)-t|0;e=(Q[F>>2]|0)+(0-(C>>3)<<3)|0;Q[F>>2]=e;if((C|0)>0){tL(e|0,t|0,C|0)|0;t=F;e=Q[F>>2]|0}else t=F;F=Q[g>>2]|0;Q[g>>2]=e;Q[t>>2]=F;F=I+8|0;C=Q[B>>2]|0;Q[B>>2]=Q[F>>2];Q[F>>2]=C;F=g+8|0;B=I+12|0;g=Q[F>>2]|0;Q[F>>2]=Q[B>>2];Q[B>>2]=g;Q[I>>2]=Q[t>>2];return}function eb(g){g=g|0;var I=0,e=0,t=0;I=Q[g+4>>2]|0;e=g+8|0;t=Q[e>>2]|0;if((t|0)!=(I|0))Q[e>>2]=t+(~((t+-8-I|0)>>>3)<<3);g=Q[g>>2]|0;if(g|0)KG(g);return}function tb(){Cb();return}function Cb(){Qb(10604);return}function Qb(g){g=g|0;Fb(g,4955);return}function Fb(g,I){g=g|0;I=I|0;var e=0;e=Bb()|0;Q[g>>2]=e;nb(e,I);Ub(Q[g>>2]|0);return}function Bb(){var g=0;if(!(t[7952]|0)){ub(10612);fg(25,10612,o|0)|0;g=7952;Q[g>>2]=1;Q[g+4>>2]=0}return 10612}function nb(g,I){g=g|0;I=I|0;Q[g>>2]=lb()|0;Q[g+4>>2]=ab()|0;Q[g+12>>2]=I;Q[g+8>>2]=rb()|0;Q[g+32>>2]=8;return}function Ub(g){g=g|0;var I=0,e=0;I=l;l=l+16|0;e=I;sb()|0;Q[e>>2]=g;ib(10608,e);l=I;return}function sb(){if(!(t[11714]|0)){Q[2652]=0;fg(62,10608,o|0)|0;t[11714]=1}return 10608}function ib(g,I){g=g|0;I=I|0;var e=0;e=zG(8)|0;Q[e+4>>2]=Q[I>>2];Q[e>>2]=Q[g>>2];Q[g>>2]=e;return}function cb(g){g=g|0;Ab(g);return}function Ab(g){g=g|0;var I=0,e=0;I=Q[g>>2]|0;if(I|0)do{e=I;I=Q[I>>2]|0;KG(e)}while((I|0)!=0);Q[g>>2]=0;return}function lb(){return 11715}function ab(){return 1496}function rb(){return kr()|0}function ob(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;if((Jr(t,896)|0)==512){if(e|0){db(e);KG(e)}}else if(I|0)KG(I);return}function db(g){g=g|0;g=Q[g+4>>2]|0;if(g|0)wG(g);return}function ub(g){g=g|0;Ln(g);return}function yb(g,I){g=g|0;I=I|0;var e=0,t=0;sb()|0;e=Q[2652]|0;g:do{if(e|0){while(1){t=Q[e+4>>2]|0;if(t|0?(eG(bb(t)|0,g)|0)==0:0)break;e=Q[e>>2]|0;if(!e)break g}Zb(t,I)}}while(0);return}function bb(g){g=g|0;return Q[g+12>>2]|0}function Zb(g,I){g=g|0;I=I|0;var e=0;g=g+36|0;e=Q[g>>2]|0;if(e|0){_C(e);KG(e)}e=zG(4)|0;rF(e,I);Q[g>>2]=e;return}function mb(){if(!(t[11716]|0)){Q[2664]=0;fg(63,10656,o|0)|0;t[11716]=1}return 10656}function xb(){var g=0;if(!(t[11717]|0)){Rb();Q[2665]=1504;t[11717]=1;g=1504}else g=Q[2665]|0;return g|0}function Rb(){if(!(t[11740]|0)){t[11718]=vB(vB(8,0)|0,0)|0;t[11719]=vB(vB(0,0)|0,0)|0;t[11720]=vB(vB(0,16)|0,0)|0;t[11721]=vB(vB(8,0)|0,0)|0;t[11722]=vB(vB(0,0)|0,0)|0;t[11723]=vB(vB(8,0)|0,0)|0;t[11724]=vB(vB(0,0)|0,0)|0;t[11725]=vB(vB(8,0)|0,0)|0;t[11726]=vB(vB(0,0)|0,0)|0;t[11727]=vB(vB(8,0)|0,0)|0;t[11728]=vB(vB(0,0)|0,0)|0;t[11729]=vB(vB(0,0)|0,32)|0;t[11730]=vB(vB(0,0)|0,32)|0;t[11740]=1}return}function Sb(){return 1572}function Gb(g,I,e,t,C){g=g|0;I=I|0;e=e|0;t=t|0;C=C|0;var F=0,B=0,n=0,U=0,s=0,i=0;F=l;l=l+32|0;i=F+16|0;s=F+12|0;U=F+8|0;n=F+4|0;B=F;Q[i>>2]=g;Q[s>>2]=I;Q[U>>2]=e;Q[n>>2]=t;Q[B>>2]=C;mb()|0;Lb(10656,i,s,U,n,B);l=F;return}function Lb(g,I,e,t,C,F){g=g|0;I=I|0;e=e|0;t=t|0;C=C|0;F=F|0;var B=0;B=zG(24)|0;JB(B+4|0,Q[I>>2]|0,Q[e>>2]|0,Q[t>>2]|0,Q[C>>2]|0,Q[F>>2]|0);Q[B>>2]=Q[g>>2];Q[g>>2]=B;return}function Vb(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0,A=0,a=0,r=0,o=0,d=0,u=0,y=0;y=l;l=l+32|0;r=y+20|0;o=y+8|0;d=y+4|0;u=y;I=Q[I>>2]|0;if(I|0){a=r+4|0;U=r+8|0;s=o+4|0;i=o+8|0;c=o+8|0;A=r+8|0;do{B=I+4|0;n=hb(B)|0;if(n|0){C=Db(n)|0;Q[r>>2]=0;Q[a>>2]=0;Q[U>>2]=0;t=(pb(n)|0)+1|0;Eb(r,t);if(t|0)while(1){t=t+-1|0;rS(o,Q[C>>2]|0);F=Q[a>>2]|0;if(F>>>0<(Q[A>>2]|0)>>>0){Q[F>>2]=Q[o>>2];Q[a>>2]=(Q[a>>2]|0)+4}else Nb(r,o);if(!t)break;else C=C+4|0}t=Wb(n)|0;Q[o>>2]=0;Q[s>>2]=0;Q[i>>2]=0;g:do{if(Q[t>>2]|0){C=0;F=0;while(1){if((C|0)==(F|0))fb(o,t);else{Q[C>>2]=Q[t>>2];Q[s>>2]=(Q[s>>2]|0)+4}t=t+4|0;if(!(Q[t>>2]|0))break g;C=Q[s>>2]|0;F=Q[c>>2]|0}}}while(0);Q[d>>2]=Xb(B)|0;Q[u>>2]=KB(n)|0;Jb(e,g,d,u,r,o);vb(o);kb(r)}I=Q[I>>2]|0}while((I|0)!=0)}l=y;return}function hb(g){g=g|0;return Q[g+12>>2]|0}function Db(g){g=g|0;return Q[g+12>>2]|0}function pb(g){g=g|0;return Q[g+16>>2]|0}function Eb(g,I){g=g|0;I=I|0;var e=0,t=0,C=0;C=l;l=l+32|0;e=C;t=Q[g>>2]|0;if((Q[g+8>>2]|0)-t>>2>>>0<I>>>0){uZ(e,I,(Q[g+4>>2]|0)-t>>2,g+8|0);yZ(g,e);bZ(e)}l=C;return}function Nb(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0,n=0,U=0,s=0;B=l;l=l+32|0;e=B;t=g+4|0;C=((Q[t>>2]|0)-(Q[g>>2]|0)>>2)+1|0;F=aZ(g)|0;if(F>>>0<C>>>0)vG(g);else{n=Q[g>>2]|0;s=(Q[g+8>>2]|0)-n|0;U=s>>1;uZ(e,s>>2>>>0<F>>>1>>>0?U>>>0<C>>>0?C:U:F,(Q[t>>2]|0)-n>>2,g+8|0);F=e+8|0;Q[Q[F>>2]>>2]=Q[I>>2];Q[F>>2]=(Q[F>>2]|0)+4;yZ(g,e);bZ(e);l=B;return}}function Wb(g){g=g|0;return Q[g+8>>2]|0}function fb(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0,n=0,U=0,s=0;B=l;l=l+32|0;e=B;t=g+4|0;C=((Q[t>>2]|0)-(Q[g>>2]|0)>>2)+1|0;F=cZ(g)|0;if(F>>>0<C>>>0)vG(g);else{n=Q[g>>2]|0;s=(Q[g+8>>2]|0)-n|0;U=s>>1;rZ(e,s>>2>>>0<F>>>1>>>0?U>>>0<C>>>0?C:U:F,(Q[t>>2]|0)-n>>2,g+8|0);F=e+8|0;Q[Q[F>>2]>>2]=Q[I>>2];Q[F>>2]=(Q[F>>2]|0)+4;oZ(g,e);dZ(e);l=B;return}}function Xb(g){g=g|0;return Q[g>>2]|0}function Jb(g,I,e,t,C,Q){g=g|0;I=I|0;e=e|0;t=t|0;C=C|0;Q=Q|0;Hb(g,I,e,t,C,Q);return}function vb(g){g=g|0;var I=0,e=0,t=0;e=Q[g>>2]|0;t=e;if(e|0){g=g+4|0;I=Q[g>>2]|0;if((I|0)!=(e|0))Q[g>>2]=I+(~((I+-4-t|0)>>>2)<<2);KG(e)}return}function kb(g){g=g|0;var I=0,e=0,t=0;e=Q[g>>2]|0;t=e;if(e|0){g=g+4|0;I=Q[g>>2]|0;if((I|0)!=(e|0))Q[g>>2]=I+(~((I+-4-t|0)>>>2)<<2);KG(e)}return}function Hb(g,I,e,t,C,F){g=g|0;I=I|0;e=e|0;t=t|0;C=C|0;F=F|0;var B=0,n=0,U=0,s=0,i=0,c=0;B=l;l=l+48|0;i=B+40|0;n=B+32|0;c=B+24|0;U=B+12|0;s=B;ZS(n);g=yF(g)|0;Q[c>>2]=Q[I>>2];e=Q[e>>2]|0;t=Q[t>>2]|0;Mb(U,C);Yb(s,F);Q[i>>2]=Q[c>>2];wb(g,i,e,t,U,s);vb(s);kb(U);xS(n);l=B;return}function Mb(g,I){g=g|0;I=I|0;var e=0,t=0;Q[g>>2]=0;Q[g+4>>2]=0;Q[g+8>>2]=0;e=I+4|0;t=(Q[e>>2]|0)-(Q[I>>2]|0)>>2;if(t|0){AZ(g,t);lZ(g,Q[I>>2]|0,Q[e>>2]|0,t)}return}function Yb(g,I){g=g|0;I=I|0;var e=0,t=0;Q[g>>2]=0;Q[g+4>>2]=0;Q[g+8>>2]=0;e=I+4|0;t=(Q[e>>2]|0)-(Q[I>>2]|0)>>2;if(t|0){sZ(g,t);iZ(g,Q[I>>2]|0,Q[e>>2]|0,t)}return}function wb(g,I,e,t,C,F){g=g|0;I=I|0;e=e|0;t=t|0;C=C|0;F=F|0;var B=0,n=0,U=0,s=0,i=0,c=0;B=l;l=l+32|0;i=B+28|0;c=B+24|0;n=B+12|0;U=B;s=mF(Tb()|0)|0;Q[c>>2]=Q[I>>2];Q[i>>2]=Q[c>>2];I=zb(i)|0;e=Ob(e)|0;t=Kb(t)|0;Q[n>>2]=Q[C>>2];i=C+4|0;Q[n+4>>2]=Q[i>>2];c=C+8|0;Q[n+8>>2]=Q[c>>2];Q[c>>2]=0;Q[i>>2]=0;Q[C>>2]=0;C=jb(n)|0;Q[U>>2]=Q[F>>2];i=F+4|0;Q[U+4>>2]=Q[i>>2];c=F+8|0;Q[U+8>>2]=Q[c>>2];Q[c>>2]=0;Q[i>>2]=0;Q[F>>2]=0;hg(0,s|0,g|0,I|0,e|0,t|0,C|0,Pb(U)|0)|0;vb(U);kb(n);l=B;return}function Tb(){var g=0;if(!(t[7968]|0)){nZ(10708);g=7968;Q[g>>2]=1;Q[g+4>>2]=0}return 10708}function zb(g){g=g|0;return gZ(g)|0}function Ob(g){g=g|0;return qb(g)|0}function Kb(g){g=g|0;return _s(g)|0}function jb(g){g=g|0;return $b(g)|0}function Pb(g){g=g|0;return _b(g)|0}function _b(g){g=g|0;var I=0,e=0,t=0;t=(Q[g+4>>2]|0)-(Q[g>>2]|0)|0;e=t>>2;t=vm(t+4|0)|0;Q[t>>2]=e;if(e|0){I=0;do{Q[t+4+(I<<2)>>2]=qb(Q[(Q[g>>2]|0)+(I<<2)>>2]|0)|0;I=I+1|0}while((I|0)!=(e|0))}return t|0}function qb(g){g=g|0;return g|0}function $b(g){g=g|0;var I=0,e=0,t=0;t=(Q[g+4>>2]|0)-(Q[g>>2]|0)|0;e=t>>2;t=vm(t+4|0)|0;Q[t>>2]=e;if(e|0){I=0;do{Q[t+4+(I<<2)>>2]=gZ((Q[g>>2]|0)+(I<<2)|0)|0;I=I+1|0}while((I|0)!=(e|0))}return t|0}function gZ(g){g=g|0;var I=0,e=0,t=0,C=0;C=l;l=l+32|0;I=C+12|0;e=C;t=Qn(IZ()|0)|0;if(!t)g=eZ(g)|0;else{Fn(I,t);Bn(e,I);uS(g,e);g=Un(I)|0}l=C;return g|0}function IZ(){var g=0;if(!(t[7960]|0)){BZ(10664);fg(25,10664,o|0)|0;g=7960;Q[g>>2]=1;Q[g+4>>2]=0}return 10664}function eZ(g){g=g|0;var I=0,e=0,t=0,C=0,F=0,B=0,n=0;e=l;l=l+16|0;C=e+4|0;B=e;t=vm(8)|0;I=t;n=zG(4)|0;Q[n>>2]=Q[g>>2];F=I+4|0;Q[F>>2]=n;g=zG(8)|0;F=Q[F>>2]|0;Q[B>>2]=0;Q[C>>2]=Q[B>>2];tZ(g,F,C);Q[t>>2]=g;l=e;return I|0}function tZ(g,I,e){g=g|0;I=I|0;e=e|0;Q[g>>2]=I;e=zG(16)|0;Q[e+4>>2]=0;Q[e+8>>2]=0;Q[e>>2]=1656;Q[e+12>>2]=I;Q[g+4>>2]=e;return}function CZ(g){g=g|0;kG(g);KG(g);return}function QZ(g){g=g|0;g=Q[g+12>>2]|0;if(g|0)KG(g);return}function FZ(g){g=g|0;KG(g);return}function BZ(g){g=g|0;Ln(g);return}function nZ(g){g=g|0;WF(g,UZ()|0,5);return}function UZ(){return 1676}function sZ(g,I){g=g|0;I=I|0;var e=0;if((cZ(g)|0)>>>0<I>>>0)vG(g);if(I>>>0>1073741823)Kg();else{e=zG(I<<2)|0;Q[g+4>>2]=e;Q[g>>2]=e;Q[g+8>>2]=e+(I<<2);return}}function iZ(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;t=g+4|0;g=e-I|0;if((g|0)>0){tL(Q[t>>2]|0,I|0,g|0)|0;Q[t>>2]=(Q[t>>2]|0)+(g>>>2<<2)}return}function cZ(g){g=g|0;return 1073741823}function AZ(g,I){g=g|0;I=I|0;var e=0;if((aZ(g)|0)>>>0<I>>>0)vG(g);if(I>>>0>1073741823)Kg();else{e=zG(I<<2)|0;Q[g+4>>2]=e;Q[g>>2]=e;Q[g+8>>2]=e+(I<<2);return}}function lZ(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;t=g+4|0;g=e-I|0;if((g|0)>0){tL(Q[t>>2]|0,I|0,g|0)|0;Q[t>>2]=(Q[t>>2]|0)+(g>>>2<<2)}return}function aZ(g){g=g|0;return 1073741823}function rZ(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0;Q[g+12>>2]=0;Q[g+16>>2]=t;do{if(I){if(I>>>0>1073741823)Kg();else{C=zG(I<<2)|0;break}}else C=0}while(0);Q[g>>2]=C;t=C+(e<<2)|0;Q[g+8>>2]=t;Q[g+4>>2]=t;Q[g+12>>2]=C+(I<<2);return}function oZ(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0;t=Q[g>>2]|0;B=g+4|0;F=I+4|0;C=(Q[B>>2]|0)-t|0;e=(Q[F>>2]|0)+(0-(C>>2)<<2)|0;Q[F>>2]=e;if((C|0)>0){tL(e|0,t|0,C|0)|0;t=F;e=Q[F>>2]|0}else t=F;F=Q[g>>2]|0;Q[g>>2]=e;Q[t>>2]=F;F=I+8|0;C=Q[B>>2]|0;Q[B>>2]=Q[F>>2];Q[F>>2]=C;F=g+8|0;B=I+12|0;g=Q[F>>2]|0;Q[F>>2]=Q[B>>2];Q[B>>2]=g;Q[I>>2]=Q[t>>2];return}function dZ(g){g=g|0;var I=0,e=0,t=0;I=Q[g+4>>2]|0;e=g+8|0;t=Q[e>>2]|0;if((t|0)!=(I|0))Q[e>>2]=t+(~((t+-4-I|0)>>>2)<<2);g=Q[g>>2]|0;if(g|0)KG(g);return}function uZ(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0;Q[g+12>>2]=0;Q[g+16>>2]=t;do{if(I){if(I>>>0>1073741823)Kg();else{C=zG(I<<2)|0;break}}else C=0}while(0);Q[g>>2]=C;t=C+(e<<2)|0;Q[g+8>>2]=t;Q[g+4>>2]=t;Q[g+12>>2]=C+(I<<2);return}function yZ(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0;t=Q[g>>2]|0;B=g+4|0;F=I+4|0;C=(Q[B>>2]|0)-t|0;e=(Q[F>>2]|0)+(0-(C>>2)<<2)|0;Q[F>>2]=e;if((C|0)>0){tL(e|0,t|0,C|0)|0;t=F;e=Q[F>>2]|0}else t=F;F=Q[g>>2]|0;Q[g>>2]=e;Q[t>>2]=F;F=I+8|0;C=Q[B>>2]|0;Q[B>>2]=Q[F>>2];Q[F>>2]=C;F=g+8|0;B=I+12|0;g=Q[F>>2]|0;Q[F>>2]=Q[B>>2];Q[B>>2]=g;Q[I>>2]=Q[t>>2];return}function bZ(g){g=g|0;var I=0,e=0,t=0;I=Q[g+4>>2]|0;e=g+8|0;t=Q[e>>2]|0;if((t|0)!=(I|0))Q[e>>2]=t+(~((t+-4-I|0)>>>2)<<2);g=Q[g>>2]|0;if(g|0)KG(g);return}function ZZ(g,I,e,t,C){g=g|0;I=I|0;e=e|0;t=t|0;C=C|0;var F=0,B=0,n=0,U=0,s=0,i=0,c=0,A=0,a=0,r=0,o=0;o=l;l=l+32|0;i=o+20|0;c=o+12|0;s=o+16|0;A=o+4|0;a=o;r=o+8|0;n=xb()|0;F=Q[n>>2]|0;B=Q[F>>2]|0;if(B|0){U=Q[n+8>>2]|0;n=Q[n+4>>2]|0;while(1){rS(i,B);mZ(g,i,n,U);F=F+4|0;B=Q[F>>2]|0;if(!B)break;else{U=U+1|0;n=n+1|0}}}F=Sb()|0;B=Q[F>>2]|0;if(B|0)do{rS(i,B);Q[c>>2]=Q[F+4>>2];xZ(I,i,c);F=F+8|0;B=Q[F>>2]|0}while((B|0)!=0);F=Q[(sb()|0)>>2]|0;if(F|0)do{I=Q[F+4>>2]|0;rS(i,Q[(RZ(I)|0)>>2]|0);Q[c>>2]=bb(I)|0;SZ(e,i,c);F=Q[F>>2]|0}while((F|0)!=0);rS(s,0);F=mb()|0;Q[i>>2]=Q[s>>2];Vb(i,F,C);F=Q[(sb()|0)>>2]|0;if(F|0){g=i+4|0;I=i+8|0;e=i+8|0;do{U=Q[F+4>>2]|0;rS(c,Q[(RZ(U)|0)>>2]|0);LZ(A,GZ(U)|0);B=Q[A>>2]|0;if(B|0){Q[i>>2]=0;Q[g>>2]=0;Q[I>>2]=0;do{rS(a,Q[(RZ(Q[B+4>>2]|0)|0)>>2]|0);n=Q[g>>2]|0;if(n>>>0<(Q[e>>2]|0)>>>0){Q[n>>2]=Q[a>>2];Q[g>>2]=(Q[g>>2]|0)+4}else Nb(i,a);B=Q[B>>2]|0}while((B|0)!=0);VZ(t,c,i);kb(i)}Q[r>>2]=Q[c>>2];s=hZ(U)|0;Q[i>>2]=Q[r>>2];Vb(i,s,C);Rn(A);F=Q[F>>2]|0}while((F|0)!=0)}l=o;return}function mZ(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;wZ(g,I,e,t);return}function xZ(g,I,e){g=g|0;I=I|0;e=e|0;YZ(g,I,e);return}function RZ(g){g=g|0;return g|0}function SZ(g,I,e){g=g|0;I=I|0;e=e|0;JZ(g,I,e);return}function GZ(g){g=g|0;return g+16|0}function LZ(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0,n=0,U=0;F=l;l=l+16|0;C=F+8|0;e=F;Q[g>>2]=0;t=Q[I>>2]|0;Q[C>>2]=t;Q[e>>2]=g;e=fZ(e)|0;if(t|0){t=zG(12)|0;B=(XZ(C)|0)+4|0;g=Q[B+4>>2]|0;I=t+4|0;Q[I>>2]=Q[B>>2];Q[I+4>>2]=g;I=Q[Q[C>>2]>>2]|0;Q[C>>2]=I;if(!I)g=t;else{I=t;while(1){g=zG(12)|0;U=(XZ(C)|0)+4|0;n=Q[U+4>>2]|0;B=g+4|0;Q[B>>2]=Q[U>>2];Q[B+4>>2]=n;Q[I>>2]=g;B=Q[Q[C>>2]>>2]|0;Q[C>>2]=B;if(!B)break;else I=g}}Q[g>>2]=Q[e>>2];Q[e>>2]=t}l=F;return}function VZ(g,I,e){g=g|0;I=I|0;e=e|0;DZ(g,I,e);return}function hZ(g){g=g|0;return g+24|0}function DZ(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0;t=l;l=l+32|0;B=t+24|0;C=t+16|0;n=t+12|0;F=t;ZS(C);g=yF(g)|0;Q[n>>2]=Q[I>>2];Mb(F,e);Q[B>>2]=Q[n>>2];pZ(g,B,F);kb(F);xS(C);l=t;return}function pZ(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0;t=l;l=l+32|0;B=t+16|0;n=t+12|0;C=t;F=mF(EZ()|0)|0;Q[n>>2]=Q[I>>2];Q[B>>2]=Q[n>>2];I=zb(B)|0;Q[C>>2]=Q[e>>2];B=e+4|0;Q[C+4>>2]=Q[B>>2];n=e+8|0;Q[C+8>>2]=Q[n>>2];Q[n>>2]=0;Q[B>>2]=0;Q[e>>2]=0;Sg(0,F|0,g|0,I|0,jb(C)|0)|0;kb(C);l=t;return}function EZ(){var g=0;if(!(t[7976]|0)){NZ(10720);g=7976;Q[g>>2]=1;Q[g+4>>2]=0}return 10720}function NZ(g){g=g|0;WF(g,WZ()|0,2);return}function WZ(){return 1732}function fZ(g){g=g|0;return Q[g>>2]|0}function XZ(g){g=g|0;return Q[g>>2]|0}function JZ(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0;t=l;l=l+32|0;F=t+16|0;C=t+8|0;B=t;ZS(C);g=yF(g)|0;Q[B>>2]=Q[I>>2];e=Q[e>>2]|0;Q[F>>2]=Q[B>>2];vZ(g,F,e);xS(C);l=t;return}function vZ(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0;t=l;l=l+16|0;F=t+4|0;B=t;C=mF(kZ()|0)|0;Q[B>>2]=Q[I>>2];Q[F>>2]=Q[B>>2];I=zb(F)|0;Sg(0,C|0,g|0,I|0,Ob(e)|0)|0;l=t;return}function kZ(){var g=0;if(!(t[7984]|0)){HZ(10732);g=7984;Q[g>>2]=1;Q[g+4>>2]=0}return 10732}function HZ(g){g=g|0;WF(g,MZ()|0,2);return}function MZ(){return 1744}function YZ(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0;t=l;l=l+32|0;F=t+16|0;C=t+8|0;B=t;ZS(C);g=yF(g)|0;Q[B>>2]=Q[I>>2];e=Q[e>>2]|0;Q[F>>2]=Q[B>>2];vZ(g,F,e);xS(C);l=t;return}function wZ(g,I,e,C){g=g|0;I=I|0;e=e|0;C=C|0;var F=0,B=0,n=0,U=0;F=l;l=l+32|0;n=F+16|0;B=F+8|0;U=F;ZS(B);g=yF(g)|0;Q[U>>2]=Q[I>>2];e=t[e>>0]|0;C=t[C>>0]|0;Q[n>>2]=Q[U>>2];TZ(g,n,e,C);xS(B);l=F;return}function TZ(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0,F=0,B=0,n=0;C=l;l=l+16|0;B=C+4|0;n=C;F=mF(zZ()|0)|0;Q[n>>2]=Q[I>>2];Q[B>>2]=Q[n>>2];I=zb(B)|0;e=OZ(e)|0;eI(0,F|0,g|0,I|0,e|0,OZ(t)|0)|0;l=C;return}function zZ(){var g=0;if(!(t[7992]|0)){jZ(10744);g=7992;Q[g>>2]=1;Q[g+4>>2]=0}return 10744}function OZ(g){g=g|0;return KZ(g)|0}function KZ(g){g=g|0;return g&255|0}function jZ(g){g=g|0;WF(g,PZ()|0,3);return}function PZ(){return 1756}function _Z(g,I,e){g=g|0;I=I|0;e=e|0;var C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0,A=0,a=0;a=l;l=l+32|0;U=a+8|0;s=a+4|0;i=a+20|0;c=a;YU(g,0);C=dS(I)|0;Q[U>>2]=0;A=U+4|0;Q[A>>2]=0;Q[U+8>>2]=0;switch(C<<24>>24){case 0:{t[i>>0]=0;qZ(s,e,i);$Z(g,s)|0;qC(s);break}case 8:{A=oS(I)|0;t[i>>0]=8;rS(c,Q[A+4>>2]|0);gm(s,e,i,c,A+8|0);$Z(g,s)|0;qC(s);break}case 9:{B=oS(I)|0;I=Q[B+4>>2]|0;if(I|0){n=U+8|0;F=B+12|0;while(1){I=I+-1|0;rS(s,Q[F>>2]|0);C=Q[A>>2]|0;if(C>>>0<(Q[n>>2]|0)>>>0){Q[C>>2]=Q[s>>2];Q[A>>2]=(Q[A>>2]|0)+4}else Nb(U,s);if(!I)break;else F=F+4|0}}t[i>>0]=9;rS(c,Q[B+8>>2]|0);Im(s,e,i,c,U);$Z(g,s)|0;qC(s);break}default:{A=oS(I)|0;t[i>>0]=C;rS(c,Q[A+4>>2]|0);em(s,e,i,c);$Z(g,s)|0;qC(s)}}kb(U);l=a;return}function qZ(g,I,e){g=g|0;I=I|0;e=e|0;var C=0,Q=0;C=l;l=l+16|0;Q=C;ZS(Q);I=yF(I)|0;rm(g,I,t[e>>0]|0);xS(Q);l=C;return}function $Z(g,I){g=g|0;I=I|0;var e=0;e=Q[g>>2]|0;if(e|0)tI(e|0);Q[g>>2]=Q[I>>2];Q[I>>2]=0;return g|0}function gm(g,I,e,C,F){g=g|0;I=I|0;e=e|0;C=C|0;F=F|0;var B=0,n=0,U=0,s=0;B=l;l=l+32|0;U=B+16|0;n=B+8|0;s=B;ZS(n);I=yF(I)|0;e=t[e>>0]|0;Q[s>>2]=Q[C>>2];F=Q[F>>2]|0;Q[U>>2]=Q[s>>2];cm(g,I,e,U,F);xS(n);l=B;return}function Im(g,I,e,C,F){g=g|0;I=I|0;e=e|0;C=C|0;F=F|0;var B=0,n=0,U=0,s=0,i=0;B=l;l=l+32|0;s=B+24|0;n=B+16|0;i=B+12|0;U=B;ZS(n);I=yF(I)|0;e=t[e>>0]|0;Q[i>>2]=Q[C>>2];Mb(U,F);Q[s>>2]=Q[i>>2];nm(g,I,e,s,U);kb(U);xS(n);l=B;return}function em(g,I,e,C){g=g|0;I=I|0;e=e|0;C=C|0;var F=0,B=0,n=0,U=0;F=l;l=l+32|0;n=F+16|0;B=F+8|0;U=F;ZS(B);I=yF(I)|0;e=t[e>>0]|0;Q[U>>2]=Q[C>>2];Q[n>>2]=Q[U>>2];tm(g,I,e,n);xS(B);l=F;return}function tm(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0,F=0,B=0,n=0;C=l;l=l+16|0;F=C+4|0;n=C;B=mF(Cm()|0)|0;e=OZ(e)|0;Q[n>>2]=Q[t>>2];Q[F>>2]=Q[n>>2];Qm(g,Sg(0,B|0,I|0,e|0,zb(F)|0)|0);l=C;return}function Cm(){var g=0;if(!(t[8e3]|0)){Fm(10756);g=8e3;Q[g>>2]=1;Q[g+4>>2]=0}return 10756}function Qm(g,I){g=g|0;I=I|0;YU(g,I);return}function Fm(g){g=g|0;WF(g,Bm()|0,2);return}function Bm(){return 1772}function nm(g,I,e,t,C){g=g|0;I=I|0;e=e|0;t=t|0;C=C|0;var F=0,B=0,n=0,U=0,s=0;F=l;l=l+32|0;U=F+16|0;s=F+12|0;B=F;n=mF(Um()|0)|0;e=OZ(e)|0;Q[s>>2]=Q[t>>2];Q[U>>2]=Q[s>>2];t=zb(U)|0;Q[B>>2]=Q[C>>2];U=C+4|0;Q[B+4>>2]=Q[U>>2];s=C+8|0;Q[B+8>>2]=Q[s>>2];Q[s>>2]=0;Q[U>>2]=0;Q[C>>2]=0;Qm(g,eI(0,n|0,I|0,e|0,t|0,jb(B)|0)|0);kb(B);l=F;return}function Um(){var g=0;if(!(t[8008]|0)){sm(10768);g=8008;Q[g>>2]=1;Q[g+4>>2]=0}return 10768}function sm(g){g=g|0;WF(g,im()|0,3);return}function im(){return 1784}function cm(g,I,e,t,C){g=g|0;I=I|0;e=e|0;t=t|0;C=C|0;var F=0,B=0,n=0,U=0;F=l;l=l+16|0;n=F+4|0;U=F;B=mF(Am()|0)|0;e=OZ(e)|0;Q[U>>2]=Q[t>>2];Q[n>>2]=Q[U>>2];t=zb(n)|0;Qm(g,eI(0,B|0,I|0,e|0,t|0,Kb(C)|0)|0);l=F;return}function Am(){var g=0;if(!(t[8016]|0)){lm(10780);g=8016;Q[g>>2]=1;Q[g+4>>2]=0}return 10780}function lm(g){g=g|0;WF(g,am()|0,3);return}function am(){return 1800}function rm(g,I,e){g=g|0;I=I|0;e=e|0;var t=0;t=mF(om()|0)|0;Qm(g,CI(0,t|0,I|0,OZ(e)|0)|0);return}function om(){var g=0;if(!(t[8024]|0)){dm(10792);g=8024;Q[g>>2]=1;Q[g+4>>2]=0}return 10792}function dm(g){g=g|0;WF(g,um()|0,1);return}function um(){return 1816}function ym(){bm();Zm();mm();return}function bm(){Q[2702]=OG(65536)|0;return}function Zm(){zm(10856);return}function mm(){xm(10816);return}function xm(g){g=g|0;Rm(g,5044);Sm(g)|0;return}function Rm(g,I){g=g|0;I=I|0;var e=0;e=IZ()|0;Q[g>>2]=e;km(e,I);Ub(Q[g>>2]|0);return}function Sm(g){g=g|0;var I=0;I=Q[g>>2]|0;eu(I,Gm()|0);return g|0}function Gm(){var g=0;if(!(t[8032]|0)){Lm(10820);fg(64,10820,o|0)|0;g=8032;Q[g>>2]=1;Q[g+4>>2]=0}if(!(KB(10820)|0))Lm(10820);return 10820}function Lm(g){g=g|0;Dm(g);nu(g,25);return}function Vm(g){g=g|0;hm(g+24|0);return}function hm(g){g=g|0;var I=0,e=0,t=0;e=Q[g>>2]|0;t=e;if(e|0){g=g+4|0;I=Q[g>>2]|0;if((I|0)!=(e|0))Q[g>>2]=I+(~((I+-8-t|0)>>>3)<<3);KG(e)}return}function Dm(g){g=g|0;var I=0;I=_B()|0;gn(g,5,18,I,fm()|0,1);Q[g+24>>2]=0;Q[g+28>>2]=0;Q[g+32>>2]=0;return}function pm(g,I){g=g|0;I=I|0;Em(g,I);return}function Em(g,I){g=g|0;I=I|0;var e=0,t=0,C=0;e=l;l=l+16|0;t=e;C=e+4|0;Us(C,I);Q[t>>2]=ss(C,I)|0;Nm(g,t);l=e;return}function Nm(g,I){g=g|0;I=I|0;Wm(g+4|0,Q[I>>2]|0);t[g+8>>0]=1;return}function Wm(g,I){g=g|0;I=I|0;Q[g>>2]=I;return}function fm(){return 1824}function Xm(g){g=g|0;return Jm(g)|0}function Jm(g){g=g|0;var I=0,e=0,t=0,C=0,F=0,B=0,n=0;e=l;l=l+16|0;C=e+4|0;B=e;t=vm(8)|0;I=t;n=zG(4)|0;Us(C,g);Wm(n,ss(C,g)|0);F=I+4|0;Q[F>>2]=n;g=zG(8)|0;F=Q[F>>2]|0;Q[B>>2]=0;Q[C>>2]=Q[B>>2];tZ(g,F,C);Q[t>>2]=g;l=e;return I|0}function vm(g){g=g|0;var I=0,e=0;g=g+7&-8;if(g>>>0<=32768?(I=Q[2701]|0,g>>>0<=(65536-I|0)>>>0):0){e=(Q[2702]|0)+I|0;Q[2701]=I+g;g=e}else{g=OG(g+8|0)|0;Q[g>>2]=Q[2703];Q[2703]=g;g=g+8|0}return g|0}function km(g,I){g=g|0;I=I|0;Q[g>>2]=Hm()|0;Q[g+4>>2]=Mm()|0;Q[g+12>>2]=I;Q[g+8>>2]=Ym()|0;Q[g+32>>2]=9;return}function Hm(){return 11744}function Mm(){return 1832}function Ym(){return pu()|0}function wm(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;if((Jr(t,896)|0)==512){if(e|0){Tm(e);KG(e)}}else if(I|0)KG(I);return}function Tm(g){g=g|0;g=Q[g+4>>2]|0;if(g|0)wG(g);return}function zm(g){g=g|0;Om(g,5052);Km(g)|0;jm(g,5058,26)|0;Pm(g,5069,1)|0;_m(g,5077,10)|0;qm(g,5087,19)|0;gx(g,5094,27)|0;return}function Om(g,I){g=g|0;I=I|0;var e=0;e=nS()|0;Q[g>>2]=e;US(e,I);Ub(Q[g>>2]|0);return}function Km(g){g=g|0;var I=0;I=Q[g>>2]|0;eu(I,OR()|0);return g|0}function jm(g,I,e){g=g|0;I=I|0;e=e|0;SR(g,hB(I)|0,e,0);return g|0}function Pm(g,I,e){g=g|0;I=I|0;e=e|0;nR(g,hB(I)|0,e,0);return g|0}function _m(g,I,e){g=g|0;I=I|0;e=e|0;Xx(g,hB(I)|0,e,0);return g|0}function qm(g,I,e){g=g|0;I=I|0;e=e|0;ux(g,hB(I)|0,e,0);return g|0}function $m(g,I){g=g|0;I=I|0;var e=0,t=0;g:while(1){e=Q[2703]|0;while(1){if((e|0)==(I|0))break g;t=Q[e>>2]|0;Q[2703]=t;if(!e)e=t;else break}KG(e)}Q[2701]=g;return}function gx(g,I,e){g=g|0;I=I|0;e=e|0;Ix(g,hB(I)|0,e,0);return g|0}function Ix(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0,F=0;F=Q[g>>2]|0;C=ex()|0;g=tx(e)|0;WB(F,I,C,g,Cx(e,t)|0,t);return}function ex(){var g=0,I=0;if(!(t[8040]|0)){ix(10860);fg(65,10860,o|0)|0;I=8040;Q[I>>2]=1;Q[I+4>>2]=0}if(!(KB(10860)|0)){g=10860;I=g+36|0;do{Q[g>>2]=0;g=g+4|0}while((g|0)<(I|0));ix(10860)}return 10860}function tx(g){g=g|0;return g|0}function Cx(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0,n=0,U=0;n=l;l=l+16|0;C=n;F=n+4|0;Q[C>>2]=g;U=ex()|0;B=U+24|0;I=vB(I,4)|0;Q[F>>2]=I;e=U+28|0;t=Q[e>>2]|0;if(t>>>0<(Q[U+32>>2]|0)>>>0){Qx(t,g,I);I=(Q[e>>2]|0)+8|0;Q[e>>2]=I}else{Fx(B,C,F);I=Q[e>>2]|0}l=n;return(I-(Q[B>>2]|0)>>3)+-1|0}function Qx(g,I,e){g=g|0;I=I|0;e=e|0;Q[g>>2]=I;Q[g+4>>2]=e;return}function Fx(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0;n=l;l=l+32|0;C=n;F=g+4|0;B=((Q[F>>2]|0)-(Q[g>>2]|0)>>3)+1|0;t=Bx(g)|0;if(t>>>0<B>>>0)vG(g);else{U=Q[g>>2]|0;i=(Q[g+8>>2]|0)-U|0;s=i>>2;nx(C,i>>3>>>0<t>>>1>>>0?s>>>0<B>>>0?B:s:t,(Q[F>>2]|0)-U>>3,g+8|0);B=C+8|0;Qx(Q[B>>2]|0,Q[I>>2]|0,Q[e>>2]|0);Q[B>>2]=(Q[B>>2]|0)+8;Ux(g,C);sx(C);l=n;return}}function Bx(g){g=g|0;return 536870911}function nx(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0;Q[g+12>>2]=0;Q[g+16>>2]=t;do{if(I){if(I>>>0>536870911)Kg();else{C=zG(I<<3)|0;break}}else C=0}while(0);Q[g>>2]=C;t=C+(e<<3)|0;Q[g+8>>2]=t;Q[g+4>>2]=t;Q[g+12>>2]=C+(I<<3);return}function Ux(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0;t=Q[g>>2]|0;B=g+4|0;F=I+4|0;C=(Q[B>>2]|0)-t|0;e=(Q[F>>2]|0)+(0-(C>>3)<<3)|0;Q[F>>2]=e;if((C|0)>0){tL(e|0,t|0,C|0)|0;t=F;e=Q[F>>2]|0}else t=F;F=Q[g>>2]|0;Q[g>>2]=e;Q[t>>2]=F;F=I+8|0;C=Q[B>>2]|0;Q[B>>2]=Q[F>>2];Q[F>>2]=C;F=g+8|0;B=I+12|0;g=Q[F>>2]|0;Q[F>>2]=Q[B>>2];Q[B>>2]=g;Q[I>>2]=Q[t>>2];return}function sx(g){g=g|0;var I=0,e=0,t=0;I=Q[g+4>>2]|0;e=g+8|0;t=Q[e>>2]|0;if((t|0)!=(I|0))Q[e>>2]=t+(~((t+-8-I|0)>>>3)<<3);g=Q[g>>2]|0;if(g|0)KG(g);return}function ix(g){g=g|0;lx(g);return}function cx(g){g=g|0;Ax(g+24|0);return}function Ax(g){g=g|0;var I=0,e=0,t=0;e=Q[g>>2]|0;t=e;if(e|0){g=g+4|0;I=Q[g>>2]|0;if((I|0)!=(e|0))Q[g>>2]=I+(~((I+-8-t|0)>>>3)<<3);KG(e)}return}function lx(g){g=g|0;var I=0;I=_B()|0;gn(g,1,11,I,ax()|0,2);Q[g+24>>2]=0;Q[g+28>>2]=0;Q[g+32>>2]=0;return}function ax(){return 1840}function rx(g,I,e){g=g|0;I=I|0;e=e|0;dx(Q[(ox(g)|0)>>2]|0,I,e);return}function ox(g){g=g|0;return(Q[(ex()|0)+24>>2]|0)+(g<<3)|0}function dx(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,Q=0;t=l;l=l+16|0;Q=t+1|0;C=t;Us(Q,I);I=ss(Q,I)|0;Us(C,e);e=ss(C,e)|0;lV[g&31](I,e);l=t;return}function ux(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0,F=0;F=Q[g>>2]|0;C=yx()|0;g=bx(e)|0;WB(F,I,C,g,Zx(e,t)|0,t);return}function yx(){var g=0,I=0;if(!(t[8048]|0)){Vx(10896);fg(66,10896,o|0)|0;I=8048;Q[I>>2]=1;Q[I+4>>2]=0}if(!(KB(10896)|0)){g=10896;I=g+36|0;do{Q[g>>2]=0;g=g+4|0}while((g|0)<(I|0));Vx(10896)}return 10896}function bx(g){g=g|0;return g|0}function Zx(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0,n=0,U=0;n=l;l=l+16|0;C=n;F=n+4|0;Q[C>>2]=g;U=yx()|0;B=U+24|0;I=vB(I,4)|0;Q[F>>2]=I;e=U+28|0;t=Q[e>>2]|0;if(t>>>0<(Q[U+32>>2]|0)>>>0){mx(t,g,I);I=(Q[e>>2]|0)+8|0;Q[e>>2]=I}else{xx(B,C,F);I=Q[e>>2]|0}l=n;return(I-(Q[B>>2]|0)>>3)+-1|0}function mx(g,I,e){g=g|0;I=I|0;e=e|0;Q[g>>2]=I;Q[g+4>>2]=e;return}function xx(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0;n=l;l=l+32|0;C=n;F=g+4|0;B=((Q[F>>2]|0)-(Q[g>>2]|0)>>3)+1|0;t=Rx(g)|0;if(t>>>0<B>>>0)vG(g);else{U=Q[g>>2]|0;i=(Q[g+8>>2]|0)-U|0;s=i>>2;Sx(C,i>>3>>>0<t>>>1>>>0?s>>>0<B>>>0?B:s:t,(Q[F>>2]|0)-U>>3,g+8|0);B=C+8|0;mx(Q[B>>2]|0,Q[I>>2]|0,Q[e>>2]|0);Q[B>>2]=(Q[B>>2]|0)+8;Gx(g,C);Lx(C);l=n;return}}function Rx(g){g=g|0;return 536870911}function Sx(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0;Q[g+12>>2]=0;Q[g+16>>2]=t;do{if(I){if(I>>>0>536870911)Kg();else{C=zG(I<<3)|0;break}}else C=0}while(0);Q[g>>2]=C;t=C+(e<<3)|0;Q[g+8>>2]=t;Q[g+4>>2]=t;Q[g+12>>2]=C+(I<<3);return}function Gx(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0;t=Q[g>>2]|0;B=g+4|0;F=I+4|0;C=(Q[B>>2]|0)-t|0;e=(Q[F>>2]|0)+(0-(C>>3)<<3)|0;Q[F>>2]=e;if((C|0)>0){tL(e|0,t|0,C|0)|0;t=F;e=Q[F>>2]|0}else t=F;F=Q[g>>2]|0;Q[g>>2]=e;Q[t>>2]=F;F=I+8|0;C=Q[B>>2]|0;Q[B>>2]=Q[F>>2];Q[F>>2]=C;F=g+8|0;B=I+12|0;g=Q[F>>2]|0;Q[F>>2]=Q[B>>2];Q[B>>2]=g;Q[I>>2]=Q[t>>2];return}function Lx(g){g=g|0;var I=0,e=0,t=0;I=Q[g+4>>2]|0;e=g+8|0;t=Q[e>>2]|0;if((t|0)!=(I|0))Q[e>>2]=t+(~((t+-8-I|0)>>>3)<<3);g=Q[g>>2]|0;if(g|0)KG(g);return}function Vx(g){g=g|0;px(g);return}function hx(g){g=g|0;Dx(g+24|0);return}function Dx(g){g=g|0;var I=0,e=0,t=0;e=Q[g>>2]|0;t=e;if(e|0){g=g+4|0;I=Q[g>>2]|0;if((I|0)!=(e|0))Q[g>>2]=I+(~((I+-8-t|0)>>>3)<<3);KG(e)}return}function px(g){g=g|0;var I=0;I=_B()|0;gn(g,1,11,I,Ex()|0,1);Q[g+24>>2]=0;Q[g+28>>2]=0;Q[g+32>>2]=0;return}function Ex(){return 1852}function Nx(g,I){g=g|0;I=I|0;return fx(Q[(Wx(g)|0)>>2]|0,I)|0}function Wx(g){g=g|0;return(Q[(yx()|0)+24>>2]|0)+(g<<3)|0}function fx(g,I){g=g|0;I=I|0;var e=0,t=0;e=l;l=l+16|0;t=e;Us(t,I);I=ss(t,I)|0;I=_s(aV[g&31](I)|0)|0;l=e;return I|0}function Xx(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0,F=0;F=Q[g>>2]|0;C=Jx()|0;g=vx(e)|0;WB(F,I,C,g,kx(e,t)|0,t);return}function Jx(){var g=0,I=0;if(!(t[8056]|0)){Ox(10932);fg(67,10932,o|0)|0;I=8056;Q[I>>2]=1;Q[I+4>>2]=0}if(!(KB(10932)|0)){g=10932;I=g+36|0;do{Q[g>>2]=0;g=g+4|0}while((g|0)<(I|0));Ox(10932)}return 10932}function vx(g){g=g|0;return g|0}function kx(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0,n=0,U=0;n=l;l=l+16|0;C=n;F=n+4|0;Q[C>>2]=g;U=Jx()|0;B=U+24|0;I=vB(I,4)|0;Q[F>>2]=I;e=U+28|0;t=Q[e>>2]|0;if(t>>>0<(Q[U+32>>2]|0)>>>0){Hx(t,g,I);I=(Q[e>>2]|0)+8|0;Q[e>>2]=I}else{Mx(B,C,F);I=Q[e>>2]|0}l=n;return(I-(Q[B>>2]|0)>>3)+-1|0}function Hx(g,I,e){g=g|0;I=I|0;e=e|0;Q[g>>2]=I;Q[g+4>>2]=e;return}function Mx(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0;n=l;l=l+32|0;C=n;F=g+4|0;B=((Q[F>>2]|0)-(Q[g>>2]|0)>>3)+1|0;t=Yx(g)|0;if(t>>>0<B>>>0)vG(g);else{U=Q[g>>2]|0;i=(Q[g+8>>2]|0)-U|0;s=i>>2;wx(C,i>>3>>>0<t>>>1>>>0?s>>>0<B>>>0?B:s:t,(Q[F>>2]|0)-U>>3,g+8|0);B=C+8|0;Hx(Q[B>>2]|0,Q[I>>2]|0,Q[e>>2]|0);Q[B>>2]=(Q[B>>2]|0)+8;Tx(g,C);zx(C);l=n;return}}function Yx(g){g=g|0;return 536870911}function wx(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0;Q[g+12>>2]=0;Q[g+16>>2]=t;do{if(I){if(I>>>0>536870911)Kg();else{C=zG(I<<3)|0;break}}else C=0}while(0);Q[g>>2]=C;t=C+(e<<3)|0;Q[g+8>>2]=t;Q[g+4>>2]=t;Q[g+12>>2]=C+(I<<3);return}function Tx(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0;t=Q[g>>2]|0;B=g+4|0;F=I+4|0;C=(Q[B>>2]|0)-t|0;e=(Q[F>>2]|0)+(0-(C>>3)<<3)|0;Q[F>>2]=e;if((C|0)>0){tL(e|0,t|0,C|0)|0;t=F;e=Q[F>>2]|0}else t=F;F=Q[g>>2]|0;Q[g>>2]=e;Q[t>>2]=F;F=I+8|0;C=Q[B>>2]|0;Q[B>>2]=Q[F>>2];Q[F>>2]=C;F=g+8|0;B=I+12|0;g=Q[F>>2]|0;Q[F>>2]=Q[B>>2];Q[B>>2]=g;Q[I>>2]=Q[t>>2];return}function zx(g){g=g|0;var I=0,e=0,t=0;I=Q[g+4>>2]|0;e=g+8|0;t=Q[e>>2]|0;if((t|0)!=(I|0))Q[e>>2]=t+(~((t+-8-I|0)>>>3)<<3);g=Q[g>>2]|0;if(g|0)KG(g);return}function Ox(g){g=g|0;Px(g);return}function Kx(g){g=g|0;jx(g+24|0);return}function jx(g){g=g|0;var I=0,e=0,t=0;e=Q[g>>2]|0;t=e;if(e|0){g=g+4|0;I=Q[g>>2]|0;if((I|0)!=(e|0))Q[g>>2]=I+(~((I+-8-t|0)>>>3)<<3);KG(e)}return}function Px(g){g=g|0;var I=0;I=_B()|0;gn(g,1,7,I,_x()|0,2);Q[g+24>>2]=0;Q[g+28>>2]=0;Q[g+32>>2]=0;return}function _x(){return 1860}function qx(g,I,e){g=g|0;I=I|0;e=e|0;return gR(Q[($x(g)|0)>>2]|0,I,e)|0}function $x(g){g=g|0;return(Q[(Jx()|0)+24>>2]|0)+(g<<3)|0}function gR(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0,U=0;t=l;l=l+32|0;B=t+12|0;F=t+8|0;n=t;U=t+16|0;C=t+4|0;IR(U,I);eR(n,U,I);vU(C,e);e=kU(C,e)|0;Q[B>>2]=Q[n>>2];hV[g&15](F,B,e);e=tR(F)|0;qC(F);HU(C);l=t;return e|0}function IR(g,I){g=g|0;I=I|0;return}function eR(g,I,e){g=g|0;I=I|0;e=e|0;CR(g,e);return}function tR(g){g=g|0;return yF(g)|0}function CR(g,I){g=g|0;I=I|0;var e=0,t=0,C=0;C=l;l=l+16|0;e=C;t=I;if(!(t&1))Q[g>>2]=Q[I>>2];else{QR(e,0);Jg(t|0,e|0)|0;FR(g,e);BR(e)}l=C;return}function QR(g,I){g=g|0;I=I|0;hF(g,I);Q[g+4>>2]=0;t[g+8>>0]=0;return}function FR(g,I){g=g|0;I=I|0;Q[g>>2]=Q[I+4>>2];return}function BR(g){g=g|0;t[g+8>>0]=0;return}function nR(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0,F=0;F=Q[g>>2]|0;C=UR()|0;g=sR(e)|0;WB(F,I,C,g,iR(e,t)|0,t);return}function UR(){var g=0,I=0;if(!(t[8064]|0)){dR(10968);fg(68,10968,o|0)|0;I=8064;Q[I>>2]=1;Q[I+4>>2]=0}if(!(KB(10968)|0)){g=10968;I=g+36|0;do{Q[g>>2]=0;g=g+4|0}while((g|0)<(I|0));dR(10968)}return 10968}function sR(g){g=g|0;return g|0}function iR(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0,n=0,U=0;n=l;l=l+16|0;C=n;F=n+4|0;Q[C>>2]=g;U=UR()|0;B=U+24|0;I=vB(I,4)|0;Q[F>>2]=I;e=U+28|0;t=Q[e>>2]|0;if(t>>>0<(Q[U+32>>2]|0)>>>0){cR(t,g,I);I=(Q[e>>2]|0)+8|0;Q[e>>2]=I}else{AR(B,C,F);I=Q[e>>2]|0}l=n;return(I-(Q[B>>2]|0)>>3)+-1|0}function cR(g,I,e){g=g|0;I=I|0;e=e|0;Q[g>>2]=I;Q[g+4>>2]=e;return}function AR(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0;n=l;l=l+32|0;C=n;F=g+4|0;B=((Q[F>>2]|0)-(Q[g>>2]|0)>>3)+1|0;t=lR(g)|0;if(t>>>0<B>>>0)vG(g);else{U=Q[g>>2]|0;i=(Q[g+8>>2]|0)-U|0;s=i>>2;aR(C,i>>3>>>0<t>>>1>>>0?s>>>0<B>>>0?B:s:t,(Q[F>>2]|0)-U>>3,g+8|0);B=C+8|0;cR(Q[B>>2]|0,Q[I>>2]|0,Q[e>>2]|0);Q[B>>2]=(Q[B>>2]|0)+8;rR(g,C);oR(C);l=n;return}}function lR(g){g=g|0;return 536870911}function aR(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0;Q[g+12>>2]=0;Q[g+16>>2]=t;do{if(I){if(I>>>0>536870911)Kg();else{C=zG(I<<3)|0;break}}else C=0}while(0);Q[g>>2]=C;t=C+(e<<3)|0;Q[g+8>>2]=t;Q[g+4>>2]=t;Q[g+12>>2]=C+(I<<3);return}function rR(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0;t=Q[g>>2]|0;B=g+4|0;F=I+4|0;C=(Q[B>>2]|0)-t|0;e=(Q[F>>2]|0)+(0-(C>>3)<<3)|0;Q[F>>2]=e;if((C|0)>0){tL(e|0,t|0,C|0)|0;t=F;e=Q[F>>2]|0}else t=F;F=Q[g>>2]|0;Q[g>>2]=e;Q[t>>2]=F;F=I+8|0;C=Q[B>>2]|0;Q[B>>2]=Q[F>>2];Q[F>>2]=C;F=g+8|0;B=I+12|0;g=Q[F>>2]|0;Q[F>>2]=Q[B>>2];Q[B>>2]=g;Q[I>>2]=Q[t>>2];return}function oR(g){g=g|0;var I=0,e=0,t=0;I=Q[g+4>>2]|0;e=g+8|0;t=Q[e>>2]|0;if((t|0)!=(I|0))Q[e>>2]=t+(~((t+-8-I|0)>>>3)<<3);g=Q[g>>2]|0;if(g|0)KG(g);return}function dR(g){g=g|0;bR(g);return}function uR(g){g=g|0;yR(g+24|0);return}function yR(g){g=g|0;var I=0,e=0,t=0;e=Q[g>>2]|0;t=e;if(e|0){g=g+4|0;I=Q[g>>2]|0;if((I|0)!=(e|0))Q[g>>2]=I+(~((I+-8-t|0)>>>3)<<3);KG(e)}return}function bR(g){g=g|0;var I=0;I=_B()|0;gn(g,1,1,I,ZR()|0,5);Q[g+24>>2]=0;Q[g+28>>2]=0;Q[g+32>>2]=0;return}function ZR(){return 1872}function mR(g,I,e,t,C,F){g=g|0;I=I|0;e=e|0;t=t|0;C=C|0;F=F|0;RR(Q[(xR(g)|0)>>2]|0,I,e,t,C,F);return}function xR(g){g=g|0;return(Q[(UR()|0)+24>>2]|0)+(g<<3)|0}function RR(g,I,e,t,C,Q){g=g|0;I=I|0;e=e|0;t=t|0;C=C|0;Q=Q|0;var F=0,B=0,n=0,U=0,s=0,i=0;F=l;l=l+32|0;B=F+16|0;n=F+12|0;U=F+8|0;s=F+4|0;i=F;vU(B,I);I=kU(B,I)|0;vU(n,e);e=kU(n,e)|0;vU(U,t);t=kU(U,t)|0;vU(s,C);C=kU(s,C)|0;vU(i,Q);Q=kU(i,Q)|0;UV[g&1](I,e,t,C,Q);HU(i);HU(s);HU(U);HU(n);HU(B);l=F;return}function SR(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0,F=0;F=Q[g>>2]|0;C=GR()|0;g=LR(e)|0;WB(F,I,C,g,VR(e,t)|0,t);return}function GR(){var g=0,I=0;if(!(t[8072]|0)){fR(11004);fg(69,11004,o|0)|0;I=8072;Q[I>>2]=1;Q[I+4>>2]=0}if(!(KB(11004)|0)){g=11004;I=g+36|0;do{Q[g>>2]=0;g=g+4|0}while((g|0)<(I|0));fR(11004)}return 11004}function LR(g){g=g|0;return g|0}function VR(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0,n=0,U=0;n=l;l=l+16|0;C=n;F=n+4|0;Q[C>>2]=g;U=GR()|0;B=U+24|0;I=vB(I,4)|0;Q[F>>2]=I;e=U+28|0;t=Q[e>>2]|0;if(t>>>0<(Q[U+32>>2]|0)>>>0){hR(t,g,I);I=(Q[e>>2]|0)+8|0;Q[e>>2]=I}else{DR(B,C,F);I=Q[e>>2]|0}l=n;return(I-(Q[B>>2]|0)>>3)+-1|0}function hR(g,I,e){g=g|0;I=I|0;e=e|0;Q[g>>2]=I;Q[g+4>>2]=e;return}function DR(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0;n=l;l=l+32|0;C=n;F=g+4|0;B=((Q[F>>2]|0)-(Q[g>>2]|0)>>3)+1|0;t=pR(g)|0;if(t>>>0<B>>>0)vG(g);else{U=Q[g>>2]|0;i=(Q[g+8>>2]|0)-U|0;s=i>>2;ER(C,i>>3>>>0<t>>>1>>>0?s>>>0<B>>>0?B:s:t,(Q[F>>2]|0)-U>>3,g+8|0);B=C+8|0;hR(Q[B>>2]|0,Q[I>>2]|0,Q[e>>2]|0);Q[B>>2]=(Q[B>>2]|0)+8;NR(g,C);WR(C);l=n;return}}function pR(g){g=g|0;return 536870911}function ER(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0;Q[g+12>>2]=0;Q[g+16>>2]=t;do{if(I){if(I>>>0>536870911)Kg();else{C=zG(I<<3)|0;break}}else C=0}while(0);Q[g>>2]=C;t=C+(e<<3)|0;Q[g+8>>2]=t;Q[g+4>>2]=t;Q[g+12>>2]=C+(I<<3);return}function NR(g,I){g=g|0;I=I|0;var e=0,t=0,C=0,F=0,B=0;t=Q[g>>2]|0;B=g+4|0;F=I+4|0;C=(Q[B>>2]|0)-t|0;e=(Q[F>>2]|0)+(0-(C>>3)<<3)|0;Q[F>>2]=e;if((C|0)>0){tL(e|0,t|0,C|0)|0;t=F;e=Q[F>>2]|0}else t=F;F=Q[g>>2]|0;Q[g>>2]=e;Q[t>>2]=F;F=I+8|0;C=Q[B>>2]|0;Q[B>>2]=Q[F>>2];Q[F>>2]=C;F=g+8|0;B=I+12|0;g=Q[F>>2]|0;Q[F>>2]=Q[B>>2];Q[B>>2]=g;Q[I>>2]=Q[t>>2];return}function WR(g){g=g|0;var I=0,e=0,t=0;I=Q[g+4>>2]|0;e=g+8|0;t=Q[e>>2]|0;if((t|0)!=(I|0))Q[e>>2]=t+(~((t+-8-I|0)>>>3)<<3);g=Q[g>>2]|0;if(g|0)KG(g);return}function fR(g){g=g|0;vR(g);return}function XR(g){g=g|0;JR(g+24|0);return}function JR(g){g=g|0;var I=0,e=0,t=0;e=Q[g>>2]|0;t=e;if(e|0){g=g+4|0;I=Q[g>>2]|0;if((I|0)!=(e|0))Q[g>>2]=I+(~((I+-8-t|0)>>>3)<<3);KG(e)}return}function vR(g){g=g|0;var I=0;I=_B()|0;gn(g,1,12,I,kR()|0,2);Q[g+24>>2]=0;Q[g+28>>2]=0;Q[g+32>>2]=0;return}function kR(){return 1896}function HR(g,I,e){g=g|0;I=I|0;e=e|0;YR(Q[(MR(g)|0)>>2]|0,I,e);return}function MR(g){g=g|0;return(Q[(GR()|0)+24>>2]|0)+(g<<3)|0}function YR(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,Q=0;t=l;l=l+16|0;Q=t+4|0;C=t;wR(Q,I);I=TR(Q,I)|0;vU(C,e);e=kU(C,e)|0;lV[g&31](I,e);HU(C);l=t;return}function wR(g,I){g=g|0;I=I|0;return}function TR(g,I){g=g|0;I=I|0;return zR(I)|0}function zR(g){g=g|0;return g|0}function OR(){var g=0;if(!(t[8080]|0)){KR(11040);fg(70,11040,o|0)|0;g=8080;Q[g>>2]=1;Q[g+4>>2]=0}if(!(KB(11040)|0))KR(11040);return 11040}function KR(g){g=g|0;_R(g);nu(g,71);return}function jR(g){g=g|0;PR(g+24|0);return}function PR(g){g=g|0;var I=0,e=0,t=0;e=Q[g>>2]|0;t=e;if(e|0){g=g+4|0;I=Q[g>>2]|0;if((I|0)!=(e|0))Q[g>>2]=I+(~((I+-8-t|0)>>>3)<<3);KG(e)}return}function _R(g){g=g|0;var I=0;I=_B()|0;gn(g,5,7,I,IS()|0,0);Q[g+24>>2]=0;Q[g+28>>2]=0;Q[g+32>>2]=0;return}function qR(g){g=g|0;$R(g);return}function $R(g){g=g|0;gS(g);return}function gS(g){g=g|0;t[g+8>>0]=1;return}function IS(){return 1936}function eS(){return tS()|0}function tS(){var g=0,I=0,e=0,t=0,C=0,F=0,B=0;I=l;l=l+16|0;C=I+4|0;B=I;e=vm(8)|0;g=e;F=g+4|0;Q[F>>2]=zG(1)|0;t=zG(8)|0;F=Q[F>>2]|0;Q[B>>2]=0;Q[C>>2]=Q[B>>2];CS(t,F,C);Q[e>>2]=t;l=I;return g|0}function CS(g,I,e){g=g|0;I=I|0;e=e|0;Q[g>>2]=I;e=zG(16)|0;Q[e+4>>2]=0;Q[e+8>>2]=0;Q[e>>2]=1916;Q[e+12>>2]=I;Q[g+4>>2]=e;return}function QS(g){g=g|0;kG(g);KG(g);return}function FS(g){g=g|0;g=Q[g+12>>2]|0;if(g|0)KG(g);return}function BS(g){g=g|0;KG(g);return}function nS(){var g=0;if(!(t[8088]|0)){aS(11076);fg(25,11076,o|0)|0;g=8088;Q[g>>2]=1;Q[g+4>>2]=0}return 11076}function US(g,I){g=g|0;I=I|0;Q[g>>2]=sS()|0;Q[g+4>>2]=iS()|0;Q[g+12>>2]=I;Q[g+8>>2]=cS()|0;Q[g+32>>2]=10;return}function sS(){return 11745}function iS(){return 1940}function cS(){return kr()|0}function AS(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;if((Jr(t,896)|0)==512){if(e|0){lS(e);KG(e)}}else if(I|0)KG(I);return}function lS(g){g=g|0;g=Q[g+4>>2]|0;if(g|0)wG(g);return}function aS(g){g=g|0;Ln(g);return}function rS(g,I){g=g|0;I=I|0;Q[g>>2]=I;return}function oS(g){g=g|0;return Q[g>>2]|0}function dS(g){g=g|0;return t[Q[g>>2]>>0]|0}function uS(g,I){g=g|0;I=I|0;var e=0,t=0;e=l;l=l+16|0;t=e;Q[t>>2]=Q[g>>2];yS(I,t)|0;l=e;return}function yS(g,I){g=g|0;I=I|0;var e=0;e=bS(Q[g>>2]|0,I)|0;I=g+4|0;Q[(Q[I>>2]|0)+8>>2]=e;return Q[(Q[I>>2]|0)+8>>2]|0}function bS(g,I){g=g|0;I=I|0;var e=0,t=0;e=l;l=l+16|0;t=e;ZS(t);g=yF(g)|0;I=mS(g,Q[I>>2]|0)|0;xS(t);l=e;return I|0}function ZS(g){g=g|0;Q[g>>2]=Q[2701];Q[g+4>>2]=Q[2703];return}function mS(g,I){g=g|0;I=I|0;var e=0;e=mF(RS()|0)|0;return CI(0,e|0,g|0,Kb(I)|0)|0}function xS(g){g=g|0;$m(Q[g>>2]|0,Q[g+4>>2]|0);return}function RS(){var g=0;if(!(t[8096]|0)){SS(11120);g=8096;Q[g>>2]=1;Q[g+4>>2]=0}return 11120}function SS(g){g=g|0;WF(g,GS()|0,1);return}function GS(){return 1948}function LS(){VS();return}function VS(){var g=0,I=0,e=0,C=0,B=0,n=0,U=0,s=0,i=0,c=0,A=0,a=0,r=0,o=0,d=0,u=0;d=l;l=l+16|0;A=d+4|0;a=d;Eg(65536,10804,Q[2702]|0,10812);e=xb()|0;I=Q[e>>2]|0;g=Q[I>>2]|0;if(g|0){C=Q[e+8>>2]|0;e=Q[e+4>>2]|0;while(1){Hg(g|0,F[e>>0]|0|0,t[C>>0]|0);I=I+4|0;g=Q[I>>2]|0;if(!g)break;else{C=C+1|0;e=e+1|0}}}g=Sb()|0;I=Q[g>>2]|0;if(I|0)do{Mg(I|0,Q[g+4>>2]|0);g=g+8|0;I=Q[g>>2]|0}while((I|0)!=0);Mg(hS()|0,5167);c=sb()|0;g=Q[c>>2]|0;g:do{if(g|0){do{DS(Q[g+4>>2]|0);g=Q[g>>2]|0}while((g|0)!=0);g=Q[c>>2]|0;if(g|0){i=c;do{while(1){B=g;g=Q[g>>2]|0;B=Q[B+4>>2]|0;if(!(pS(B)|0))break;Q[a>>2]=i;Q[A>>2]=Q[a>>2];ES(c,A)|0;if(!g)break g}NS(B);i=Q[i>>2]|0;I=WS(B)|0;n=Pg()|0;U=l;l=l+((1*(I<<2)|0)+15&-16)|0;s=l;l=l+((1*(I<<2)|0)+15&-16)|0;I=Q[(GZ(B)|0)>>2]|0;if(I|0){e=U;C=s;while(1){Q[e>>2]=Q[(RZ(Q[I+4>>2]|0)|0)>>2];Q[C>>2]=Q[I+8>>2];I=Q[I>>2]|0;if(!I)break;else{e=e+4|0;C=C+4|0}}}u=RZ(B)|0;I=fS(B)|0;e=WS(B)|0;C=XS(B)|0;zg(u|0,I|0,U|0,s|0,e|0,C|0,bb(B)|0);Wg(n|0)}while((g|0)!=0)}}}while(0);g=Q[(mb()|0)>>2]|0;if(g|0)do{u=g+4|0;c=hb(u)|0;B=Wb(c)|0;n=Db(c)|0;U=(pb(c)|0)+1|0;s=JS(c)|0;i=vS(u)|0;c=KB(c)|0;A=Xb(u)|0;a=kS(u)|0;wg(0,B|0,n|0,U|0,s|0,i|0,c|0,A|0,a|0,HS(u)|0);g=Q[g>>2]|0}while((g|0)!=0);g=Q[(sb()|0)>>2]|0;g:do{if(g|0){I:while(1){I=Q[g+4>>2]|0;if(I|0?(r=Q[(RZ(I)|0)>>2]|0,o=Q[(hZ(I)|0)>>2]|0,o|0):0){e=o;do{I=e+4|0;C=hb(I)|0;e:do{if(C|0)switch(KB(C)|0){case 0:break I;case 4:case 3:case 2:{s=Wb(C)|0;i=Db(C)|0;c=(pb(C)|0)+1|0;A=JS(C)|0;a=KB(C)|0;u=Xb(I)|0;wg(r|0,s|0,i|0,c|0,A|0,0,a|0,u|0,kS(I)|0,HS(I)|0);break e}case 1:{U=Wb(C)|0;s=Db(C)|0;i=(pb(C)|0)+1|0;c=JS(C)|0;A=vS(I)|0;a=KB(C)|0;u=Xb(I)|0;wg(r|0,U|0,s|0,i|0,c|0,A|0,a|0,u|0,kS(I)|0,HS(I)|0);break e}case 5:{c=Wb(C)|0;A=Db(C)|0;a=(pb(C)|0)+1|0;u=JS(C)|0;wg(r|0,c|0,A|0,a|0,u|0,MS(C)|0,KB(C)|0,0,0,0);break e}default:break e}}while(0);e=Q[e>>2]|0}while((e|0)!=0)}g=Q[g>>2]|0;if(!g)break g}Kg()}}while(0);Og();l=d;return}function hS(){return 11703}function DS(g){g=g|0;t[g+40>>0]=0;return}function pS(g){g=g|0;return(t[g+40>>0]|0)!=0|0}function ES(g,I){g=g|0;I=I|0;I=YS(I)|0;g=Q[I>>2]|0;Q[I>>2]=Q[g>>2];KG(g);return Q[I>>2]|0}function NS(g){g=g|0;t[g+40>>0]=1;return}function WS(g){g=g|0;return Q[g+20>>2]|0}function fS(g){g=g|0;return Q[g+8>>2]|0}function XS(g){g=g|0;return Q[g+32>>2]|0}function JS(g){g=g|0;return Q[g+4>>2]|0}function vS(g){g=g|0;return Q[g+4>>2]|0}function kS(g){g=g|0;return Q[g+8>>2]|0}function HS(g){g=g|0;return Q[g+16>>2]|0}function MS(g){g=g|0;return Q[g+20>>2]|0}function YS(g){g=g|0;return Q[g>>2]|0}function wS(g){g=g|0;var I=0,e=0,t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0,A=0,a=0,r=0,o=0,d=0,u=0,y=0,b=0,Z=0,m=0;m=l;l=l+16|0;A=m;do{if(g>>>0<245){s=g>>>0<11?16:g+11&-8;g=s>>>3;c=Q[2783]|0;e=c>>>g;if(e&3|0){I=(e&1^1)+g|0;g=11172+(I<<1<<2)|0;e=g+8|0;t=Q[e>>2]|0;C=t+8|0;F=Q[C>>2]|0;if((g|0)==(F|0))Q[2783]=c&~(1<<I);else{Q[F+12>>2]=g;Q[e>>2]=F}Z=I<<3;Q[t+4>>2]=Z|3;Z=t+Z+4|0;Q[Z>>2]=Q[Z>>2]|1;Z=C;l=m;return Z|0}i=Q[2785]|0;if(s>>>0>i>>>0){if(e|0){I=2<<g;I=e<<g&(I|0-I);I=(I&0-I)+-1|0;B=I>>>12&16;I=I>>>B;e=I>>>5&8;I=I>>>e;C=I>>>2&4;I=I>>>C;g=I>>>1&2;I=I>>>g;t=I>>>1&1;t=(e|B|C|g|t)+(I>>>t)|0;I=11172+(t<<1<<2)|0;g=I+8|0;C=Q[g>>2]|0;B=C+8|0;e=Q[B>>2]|0;if((I|0)==(e|0)){g=c&~(1<<t);Q[2783]=g}else{Q[e+12>>2]=I;Q[g>>2]=e;g=c}F=(t<<3)-s|0;Q[C+4>>2]=s|3;t=C+s|0;Q[t+4>>2]=F|1;Q[t+F>>2]=F;if(i|0){C=Q[2788]|0;I=i>>>3;e=11172+(I<<1<<2)|0;I=1<<I;if(!(g&I)){Q[2783]=g|I;I=e;g=e+8|0}else{g=e+8|0;I=Q[g>>2]|0}Q[g>>2]=C;Q[I+12>>2]=C;Q[C+8>>2]=I;Q[C+12>>2]=e}Q[2785]=F;Q[2788]=t;Z=B;l=m;return Z|0}n=Q[2784]|0;if(n){e=(n&0-n)+-1|0;B=e>>>12&16;e=e>>>B;F=e>>>5&8;e=e>>>F;U=e>>>2&4;e=e>>>U;t=e>>>1&2;e=e>>>t;g=e>>>1&1;g=Q[11436+((F|B|U|t|g)+(e>>>g)<<2)>>2]|0;e=(Q[g+4>>2]&-8)-s|0;t=Q[g+16+(((Q[g+16>>2]|0)==0&1)<<2)>>2]|0;if(!t){U=g;F=e}else{do{B=(Q[t+4>>2]&-8)-s|0;U=B>>>0<e>>>0;e=U?B:e;g=U?t:g;t=Q[t+16+(((Q[t+16>>2]|0)==0&1)<<2)>>2]|0}while((t|0)!=0);U=g;F=e}B=U+s|0;if(U>>>0<B>>>0){C=Q[U+24>>2]|0;I=Q[U+12>>2]|0;do{if((I|0)==(U|0)){g=U+20|0;I=Q[g>>2]|0;if(!I){g=U+16|0;I=Q[g>>2]|0;if(!I){e=0;break}}while(1){e=I+20|0;t=Q[e>>2]|0;if(t|0){I=t;g=e;continue}e=I+16|0;t=Q[e>>2]|0;if(!t)break;else{I=t;g=e}}Q[g>>2]=0;e=I}else{e=Q[U+8>>2]|0;Q[e+12>>2]=I;Q[I+8>>2]=e;e=I}}while(0);do{if(C|0){I=Q[U+28>>2]|0;g=11436+(I<<2)|0;if((U|0)==(Q[g>>2]|0)){Q[g>>2]=e;if(!e){Q[2784]=n&~(1<<I);break}}else{Q[C+16+(((Q[C+16>>2]|0)!=(U|0)&1)<<2)>>2]=e;if(!e)break}Q[e+24>>2]=C;I=Q[U+16>>2]|0;if(I|0){Q[e+16>>2]=I;Q[I+24>>2]=e}I=Q[U+20>>2]|0;if(I|0){Q[e+20>>2]=I;Q[I+24>>2]=e}}}while(0);if(F>>>0<16){Z=F+s|0;Q[U+4>>2]=Z|3;Z=U+Z+4|0;Q[Z>>2]=Q[Z>>2]|1}else{Q[U+4>>2]=s|3;Q[B+4>>2]=F|1;Q[B+F>>2]=F;if(i|0){t=Q[2788]|0;I=i>>>3;e=11172+(I<<1<<2)|0;I=1<<I;if(!(c&I)){Q[2783]=c|I;I=e;g=e+8|0}else{g=e+8|0;I=Q[g>>2]|0}Q[g>>2]=t;Q[I+12>>2]=t;Q[t+8>>2]=I;Q[t+12>>2]=e}Q[2785]=F;Q[2788]=B}Z=U+8|0;l=m;return Z|0}else c=s}else c=s}else c=s}else if(g>>>0<=4294967231){g=g+11|0;s=g&-8;U=Q[2784]|0;if(U){t=0-s|0;g=g>>>8;if(g){if(s>>>0>16777215)n=31;else{c=(g+1048320|0)>>>16&8;b=g<<c;i=(b+520192|0)>>>16&4;b=b<<i;n=(b+245760|0)>>>16&2;n=14-(i|c|n)+(b<<n>>>15)|0;n=s>>>(n+7|0)&1|n<<1}}else n=0;e=Q[11436+(n<<2)>>2]|0;g:do{if(!e){e=0;g=0;b=57}else{g=0;B=s<<((n|0)==31?0:25-(n>>>1)|0);F=0;while(1){C=(Q[e+4>>2]&-8)-s|0;if(C>>>0<t>>>0)if(!C){g=e;t=0;C=e;b=61;break g}else{g=e;t=C}C=Q[e+20>>2]|0;e=Q[e+16+(B>>>31<<2)>>2]|0;F=(C|0)==0|(C|0)==(e|0)?F:C;C=(e|0)==0;if(C){e=F;b=57;break}else B=B<<((C^1)&1)}}}while(0);if((b|0)==57){if((e|0)==0&(g|0)==0){g=2<<n;g=U&(g|0-g);if(!g){c=s;break}c=(g&0-g)+-1|0;B=c>>>12&16;c=c>>>B;F=c>>>5&8;c=c>>>F;n=c>>>2&4;c=c>>>n;i=c>>>1&2;c=c>>>i;e=c>>>1&1;g=0;e=Q[11436+((F|B|n|i|e)+(c>>>e)<<2)>>2]|0}if(!e){n=g;B=t}else{C=e;b=61}}if((b|0)==61)while(1){b=0;e=(Q[C+4>>2]&-8)-s|0;c=e>>>0<t>>>0;e=c?e:t;g=c?C:g;C=Q[C+16+(((Q[C+16>>2]|0)==0&1)<<2)>>2]|0;if(!C){n=g;B=e;break}else{t=e;b=61}}if((n|0)!=0?B>>>0<((Q[2785]|0)-s|0)>>>0:0){F=n+s|0;if(n>>>0>=F>>>0){Z=0;l=m;return Z|0}C=Q[n+24>>2]|0;I=Q[n+12>>2]|0;do{if((I|0)==(n|0)){g=n+20|0;I=Q[g>>2]|0;if(!I){g=n+16|0;I=Q[g>>2]|0;if(!I){I=0;break}}while(1){e=I+20|0;t=Q[e>>2]|0;if(t|0){I=t;g=e;continue}e=I+16|0;t=Q[e>>2]|0;if(!t)break;else{I=t;g=e}}Q[g>>2]=0}else{Z=Q[n+8>>2]|0;Q[Z+12>>2]=I;Q[I+8>>2]=Z}}while(0);do{if(C){g=Q[n+28>>2]|0;e=11436+(g<<2)|0;if((n|0)==(Q[e>>2]|0)){Q[e>>2]=I;if(!I){t=U&~(1<<g);Q[2784]=t;break}}else{Q[C+16+(((Q[C+16>>2]|0)!=(n|0)&1)<<2)>>2]=I;if(!I){t=U;break}}Q[I+24>>2]=C;g=Q[n+16>>2]|0;if(g|0){Q[I+16>>2]=g;Q[g+24>>2]=I}g=Q[n+20>>2]|0;if(g){Q[I+20>>2]=g;Q[g+24>>2]=I;t=U}else t=U}else t=U}while(0);do{if(B>>>0>=16){Q[n+4>>2]=s|3;Q[F+4>>2]=B|1;Q[F+B>>2]=B;I=B>>>3;if(B>>>0<256){e=11172+(I<<1<<2)|0;g=Q[2783]|0;I=1<<I;if(!(g&I)){Q[2783]=g|I;I=e;g=e+8|0}else{g=e+8|0;I=Q[g>>2]|0}Q[g>>2]=F;Q[I+12>>2]=F;Q[F+8>>2]=I;Q[F+12>>2]=e;break}I=B>>>8;if(I){if(B>>>0>16777215)I=31;else{b=(I+1048320|0)>>>16&8;Z=I<<b;y=(Z+520192|0)>>>16&4;Z=Z<<y;I=(Z+245760|0)>>>16&2;I=14-(y|b|I)+(Z<<I>>>15)|0;I=B>>>(I+7|0)&1|I<<1}}else I=0;e=11436+(I<<2)|0;Q[F+28>>2]=I;g=F+16|0;Q[g+4>>2]=0;Q[g>>2]=0;g=1<<I;if(!(t&g)){Q[2784]=t|g;Q[e>>2]=F;Q[F+24>>2]=e;Q[F+12>>2]=F;Q[F+8>>2]=F;break}g=B<<((I|0)==31?0:25-(I>>>1)|0);e=Q[e>>2]|0;while(1){if((Q[e+4>>2]&-8|0)==(B|0)){b=97;break}t=e+16+(g>>>31<<2)|0;I=Q[t>>2]|0;if(!I){b=96;break}else{g=g<<1;e=I}}if((b|0)==96){Q[t>>2]=F;Q[F+24>>2]=e;Q[F+12>>2]=F;Q[F+8>>2]=F;break}else if((b|0)==97){b=e+8|0;Z=Q[b>>2]|0;Q[Z+12>>2]=F;Q[b>>2]=F;Q[F+8>>2]=Z;Q[F+12>>2]=e;Q[F+24>>2]=0;break}}else{Z=B+s|0;Q[n+4>>2]=Z|3;Z=n+Z+4|0;Q[Z>>2]=Q[Z>>2]|1}}while(0);Z=n+8|0;l=m;return Z|0}else c=s}else c=s}else c=-1}while(0);e=Q[2785]|0;if(e>>>0>=c>>>0){I=e-c|0;g=Q[2788]|0;if(I>>>0>15){Z=g+c|0;Q[2788]=Z;Q[2785]=I;Q[Z+4>>2]=I|1;Q[Z+I>>2]=I;Q[g+4>>2]=c|3}else{Q[2785]=0;Q[2788]=0;Q[g+4>>2]=e|3;Z=g+e+4|0;Q[Z>>2]=Q[Z>>2]|1}Z=g+8|0;l=m;return Z|0}B=Q[2786]|0;if(B>>>0>c>>>0){y=B-c|0;Q[2786]=y;Z=Q[2789]|0;b=Z+c|0;Q[2789]=b;Q[b+4>>2]=y|1;Q[Z+4>>2]=c|3;Z=Z+8|0;l=m;return Z|0}if(!(Q[2901]|0)){Q[2903]=4096;Q[2902]=4096;Q[2904]=-1;Q[2905]=-1;Q[2906]=0;Q[2894]=0;g=A&-16^1431655768;Q[A>>2]=g;Q[2901]=g;g=4096}else g=Q[2903]|0;n=c+48|0;U=c+47|0;F=g+U|0;C=0-g|0;s=F&C;if(s>>>0<=c>>>0){Z=0;l=m;return Z|0}g=Q[2893]|0;if(g|0?(i=Q[2891]|0,A=i+s|0,A>>>0<=i>>>0|A>>>0>g>>>0):0){Z=0;l=m;return Z|0}g:do{if(!(Q[2894]&4)){e=Q[2789]|0;I:do{if(e){t=11580;while(1){g=Q[t>>2]|0;if(g>>>0<=e>>>0?(o=t+4|0,(g+(Q[o>>2]|0)|0)>>>0>e>>>0):0)break;g=Q[t+8>>2]|0;if(!g){b=118;break I}else t=g}I=F-B&C;if(I>>>0<2147483647){g=BL(I|0)|0;if((g|0)==((Q[t>>2]|0)+(Q[o>>2]|0)|0)){if((g|0)!=(-1|0)){B=I;F=g;b=135;break g}}else{t=g;b=126}}else I=0}else b=118}while(0);do{if((b|0)==118){e=BL(0)|0;if((e|0)!=(-1|0)?(I=e,a=Q[2902]|0,r=a+-1|0,I=((r&I|0)==0?0:(r+I&0-a)-I|0)+s|0,a=Q[2891]|0,r=I+a|0,I>>>0>c>>>0&I>>>0<2147483647):0){o=Q[2893]|0;if(o|0?r>>>0<=a>>>0|r>>>0>o>>>0:0){I=0;break}g=BL(I|0)|0;if((g|0)==(e|0)){B=I;F=e;b=135;break g}else{t=g;b=126}}else I=0}}while(0);do{if((b|0)==126){e=0-I|0;if(!(n>>>0>I>>>0&(I>>>0<2147483647&(t|0)!=(-1|0))))if((t|0)==(-1|0)){I=0;break}else{B=I;F=t;b=135;break g}g=Q[2903]|0;g=U-I+g&0-g;if(g>>>0>=2147483647){B=I;F=t;b=135;break g}if((BL(g|0)|0)==(-1|0)){BL(e|0)|0;I=0;break}else{B=g+I|0;F=t;b=135;break g}}}while(0);Q[2894]=Q[2894]|4;b=133}else{I=0;b=133}}while(0);if(((b|0)==133?s>>>0<2147483647:0)?(y=BL(s|0)|0,o=BL(0)|0,d=o-y|0,u=d>>>0>(c+40|0)>>>0,!((y|0)==(-1|0)|u^1|y>>>0<o>>>0&((y|0)!=(-1|0)&(o|0)!=(-1|0))^1)):0){B=u?d:I;F=y;b=135}if((b|0)==135){I=(Q[2891]|0)+B|0;Q[2891]=I;if(I>>>0>(Q[2892]|0)>>>0)Q[2892]=I;U=Q[2789]|0;do{if(U){I=11580;while(1){g=Q[I>>2]|0;e=I+4|0;t=Q[e>>2]|0;if((F|0)==(g+t|0)){b=145;break}C=Q[I+8>>2]|0;if(!C)break;else I=C}if(((b|0)==145?(Q[I+12>>2]&8|0)==0:0)?U>>>0<F>>>0&U>>>0>=g>>>0:0){Q[e>>2]=t+B;Z=U+8|0;Z=(Z&7|0)==0?0:0-Z&7;b=U+Z|0;Z=(Q[2786]|0)+(B-Z)|0;Q[2789]=b;Q[2786]=Z;Q[b+4>>2]=Z|1;Q[b+Z+4>>2]=40;Q[2790]=Q[2905];break}if(F>>>0<(Q[2787]|0)>>>0)Q[2787]=F;e=F+B|0;I=11580;while(1){if((Q[I>>2]|0)==(e|0)){b=153;break}g=Q[I+8>>2]|0;if(!g)break;else I=g}if((b|0)==153?(Q[I+12>>2]&8|0)==0:0){Q[I>>2]=F;i=I+4|0;Q[i>>2]=(Q[i>>2]|0)+B;i=F+8|0;i=F+((i&7|0)==0?0:0-i&7)|0;I=e+8|0;I=e+((I&7|0)==0?0:0-I&7)|0;s=i+c|0;n=I-i-c|0;Q[i+4>>2]=c|3;do{if((I|0)!=(U|0)){if((I|0)==(Q[2788]|0)){Z=(Q[2785]|0)+n|0;Q[2785]=Z;Q[2788]=s;Q[s+4>>2]=Z|1;Q[s+Z>>2]=Z;break}g=Q[I+4>>2]|0;if((g&3|0)==1){B=g&-8;t=g>>>3;g:do{if(g>>>0<256){g=Q[I+8>>2]|0;e=Q[I+12>>2]|0;if((e|0)==(g|0)){Q[2783]=Q[2783]&~(1<<t);break}else{Q[g+12>>2]=e;Q[e+8>>2]=g;break}}else{F=Q[I+24>>2]|0;g=Q[I+12>>2]|0;do{if((g|0)==(I|0)){t=I+16|0;e=t+4|0;g=Q[e>>2]|0;if(!g){g=Q[t>>2]|0;if(!g){g=0;break}else e=t}while(1){t=g+20|0;C=Q[t>>2]|0;if(C|0){g=C;e=t;continue}t=g+16|0;C=Q[t>>2]|0;if(!C)break;else{g=C;e=t}}Q[e>>2]=0}else{Z=Q[I+8>>2]|0;Q[Z+12>>2]=g;Q[g+8>>2]=Z}}while(0);if(!F)break;e=Q[I+28>>2]|0;t=11436+(e<<2)|0;do{if((I|0)!=(Q[t>>2]|0)){Q[F+16+(((Q[F+16>>2]|0)!=(I|0)&1)<<2)>>2]=g;if(!g)break g}else{Q[t>>2]=g;if(g|0)break;Q[2784]=Q[2784]&~(1<<e);break g}}while(0);Q[g+24>>2]=F;e=I+16|0;t=Q[e>>2]|0;if(t|0){Q[g+16>>2]=t;Q[t+24>>2]=g}e=Q[e+4>>2]|0;if(!e)break;Q[g+20>>2]=e;Q[e+24>>2]=g}}while(0);I=I+B|0;C=B+n|0}else C=n;I=I+4|0;Q[I>>2]=Q[I>>2]&-2;Q[s+4>>2]=C|1;Q[s+C>>2]=C;I=C>>>3;if(C>>>0<256){e=11172+(I<<1<<2)|0;g=Q[2783]|0;I=1<<I;if(!(g&I)){Q[2783]=g|I;I=e;g=e+8|0}else{g=e+8|0;I=Q[g>>2]|0}Q[g>>2]=s;Q[I+12>>2]=s;Q[s+8>>2]=I;Q[s+12>>2]=e;break}I=C>>>8;do{if(!I)I=0;else{if(C>>>0>16777215){I=31;break}b=(I+1048320|0)>>>16&8;Z=I<<b;y=(Z+520192|0)>>>16&4;Z=Z<<y;I=(Z+245760|0)>>>16&2;I=14-(y|b|I)+(Z<<I>>>15)|0;I=C>>>(I+7|0)&1|I<<1}}while(0);t=11436+(I<<2)|0;Q[s+28>>2]=I;g=s+16|0;Q[g+4>>2]=0;Q[g>>2]=0;g=Q[2784]|0;e=1<<I;if(!(g&e)){Q[2784]=g|e;Q[t>>2]=s;Q[s+24>>2]=t;Q[s+12>>2]=s;Q[s+8>>2]=s;break}g=C<<((I|0)==31?0:25-(I>>>1)|0);e=Q[t>>2]|0;while(1){if((Q[e+4>>2]&-8|0)==(C|0)){b=194;break}t=e+16+(g>>>31<<2)|0;I=Q[t>>2]|0;if(!I){b=193;break}else{g=g<<1;e=I}}if((b|0)==193){Q[t>>2]=s;Q[s+24>>2]=e;Q[s+12>>2]=s;Q[s+8>>2]=s;break}else if((b|0)==194){b=e+8|0;Z=Q[b>>2]|0;Q[Z+12>>2]=s;Q[b>>2]=s;Q[s+8>>2]=Z;Q[s+12>>2]=e;Q[s+24>>2]=0;break}}else{Z=(Q[2786]|0)+n|0;Q[2786]=Z;Q[2789]=s;Q[s+4>>2]=Z|1}}while(0);Z=i+8|0;l=m;return Z|0}I=11580;while(1){g=Q[I>>2]|0;if(g>>>0<=U>>>0?(Z=g+(Q[I+4>>2]|0)|0,Z>>>0>U>>>0):0)break;I=Q[I+8>>2]|0}C=Z+-47|0;g=C+8|0;g=C+((g&7|0)==0?0:0-g&7)|0;C=U+16|0;g=g>>>0<C>>>0?U:g;I=g+8|0;e=F+8|0;e=(e&7|0)==0?0:0-e&7;b=F+e|0;e=B+-40-e|0;Q[2789]=b;Q[2786]=e;Q[b+4>>2]=e|1;Q[b+e+4>>2]=40;Q[2790]=Q[2905];e=g+4|0;Q[e>>2]=27;Q[I>>2]=Q[2895];Q[I+4>>2]=Q[2896];Q[I+8>>2]=Q[2897];Q[I+12>>2]=Q[2898];Q[2895]=F;Q[2896]=B;Q[2898]=0;Q[2897]=I;I=g+24|0;do{b=I;I=I+4|0;Q[I>>2]=7}while((b+8|0)>>>0<Z>>>0);if((g|0)!=(U|0)){F=g-U|0;Q[e>>2]=Q[e>>2]&-2;Q[U+4>>2]=F|1;Q[g>>2]=F;I=F>>>3;if(F>>>0<256){e=11172+(I<<1<<2)|0;g=Q[2783]|0;I=1<<I;if(!(g&I)){Q[2783]=g|I;I=e;g=e+8|0}else{g=e+8|0;I=Q[g>>2]|0}Q[g>>2]=U;Q[I+12>>2]=U;Q[U+8>>2]=I;Q[U+12>>2]=e;break}I=F>>>8;if(I){if(F>>>0>16777215)e=31;else{b=(I+1048320|0)>>>16&8;Z=I<<b;y=(Z+520192|0)>>>16&4;Z=Z<<y;e=(Z+245760|0)>>>16&2;e=14-(y|b|e)+(Z<<e>>>15)|0;e=F>>>(e+7|0)&1|e<<1}}else e=0;t=11436+(e<<2)|0;Q[U+28>>2]=e;Q[U+20>>2]=0;Q[C>>2]=0;I=Q[2784]|0;g=1<<e;if(!(I&g)){Q[2784]=I|g;Q[t>>2]=U;Q[U+24>>2]=t;Q[U+12>>2]=U;Q[U+8>>2]=U;break}g=F<<((e|0)==31?0:25-(e>>>1)|0);e=Q[t>>2]|0;while(1){if((Q[e+4>>2]&-8|0)==(F|0)){b=216;break}t=e+16+(g>>>31<<2)|0;I=Q[t>>2]|0;if(!I){b=215;break}else{g=g<<1;e=I}}if((b|0)==215){Q[t>>2]=U;Q[U+24>>2]=e;Q[U+12>>2]=U;Q[U+8>>2]=U;break}else if((b|0)==216){b=e+8|0;Z=Q[b>>2]|0;Q[Z+12>>2]=U;Q[b>>2]=U;Q[U+8>>2]=Z;Q[U+12>>2]=e;Q[U+24>>2]=0;break}}}else{Z=Q[2787]|0;if((Z|0)==0|F>>>0<Z>>>0)Q[2787]=F;Q[2895]=F;Q[2896]=B;Q[2898]=0;Q[2792]=Q[2901];Q[2791]=-1;I=0;do{Z=11172+(I<<1<<2)|0;Q[Z+12>>2]=Z;Q[Z+8>>2]=Z;I=I+1|0}while((I|0)!=32);Z=F+8|0;Z=(Z&7|0)==0?0:0-Z&7;b=F+Z|0;Z=B+-40-Z|0;Q[2789]=b;Q[2786]=Z;Q[b+4>>2]=Z|1;Q[b+Z+4>>2]=40;Q[2790]=Q[2905]}}while(0);I=Q[2786]|0;if(I>>>0>c>>>0){y=I-c|0;Q[2786]=y;Z=Q[2789]|0;b=Z+c|0;Q[2789]=b;Q[b+4>>2]=y|1;Q[Z+4>>2]=c|3;Z=Z+8|0;l=m;return Z|0}}Q[(_S()|0)>>2]=12;Z=0;l=m;return Z|0}function TS(g){g=g|0;var I=0,e=0,t=0,C=0,F=0,B=0,n=0,U=0;if(!g)return;e=g+-8|0;C=Q[2787]|0;g=Q[g+-4>>2]|0;I=g&-8;U=e+I|0;do{if(!(g&1)){t=Q[e>>2]|0;if(!(g&3))return;B=e+(0-t)|0;F=t+I|0;if(B>>>0<C>>>0)return;if((B|0)==(Q[2788]|0)){g=U+4|0;I=Q[g>>2]|0;if((I&3|0)!=3){n=B;I=F;break}Q[2785]=F;Q[g>>2]=I&-2;Q[B+4>>2]=F|1;Q[B+F>>2]=F;return}e=t>>>3;if(t>>>0<256){g=Q[B+8>>2]|0;I=Q[B+12>>2]|0;if((I|0)==(g|0)){Q[2783]=Q[2783]&~(1<<e);n=B;I=F;break}else{Q[g+12>>2]=I;Q[I+8>>2]=g;n=B;I=F;break}}C=Q[B+24>>2]|0;g=Q[B+12>>2]|0;do{if((g|0)==(B|0)){e=B+16|0;I=e+4|0;g=Q[I>>2]|0;if(!g){g=Q[e>>2]|0;if(!g){g=0;break}else I=e}while(1){e=g+20|0;t=Q[e>>2]|0;if(t|0){g=t;I=e;continue}e=g+16|0;t=Q[e>>2]|0;if(!t)break;else{g=t;I=e}}Q[I>>2]=0}else{n=Q[B+8>>2]|0;Q[n+12>>2]=g;Q[g+8>>2]=n}}while(0);if(C){I=Q[B+28>>2]|0;e=11436+(I<<2)|0;if((B|0)==(Q[e>>2]|0)){Q[e>>2]=g;if(!g){Q[2784]=Q[2784]&~(1<<I);n=B;I=F;break}}else{Q[C+16+(((Q[C+16>>2]|0)!=(B|0)&1)<<2)>>2]=g;if(!g){n=B;I=F;break}}Q[g+24>>2]=C;I=B+16|0;e=Q[I>>2]|0;if(e|0){Q[g+16>>2]=e;Q[e+24>>2]=g}I=Q[I+4>>2]|0;if(I){Q[g+20>>2]=I;Q[I+24>>2]=g;n=B;I=F}else{n=B;I=F}}else{n=B;I=F}}else{n=e;B=e}}while(0);if(B>>>0>=U>>>0)return;g=U+4|0;t=Q[g>>2]|0;if(!(t&1))return;if(!(t&2)){g=Q[2788]|0;if((U|0)==(Q[2789]|0)){U=(Q[2786]|0)+I|0;Q[2786]=U;Q[2789]=n;Q[n+4>>2]=U|1;if((n|0)!=(g|0))return;Q[2788]=0;Q[2785]=0;return}if((U|0)==(g|0)){U=(Q[2785]|0)+I|0;Q[2785]=U;Q[2788]=B;Q[n+4>>2]=U|1;Q[B+U>>2]=U;return}C=(t&-8)+I|0;e=t>>>3;do{if(t>>>0<256){I=Q[U+8>>2]|0;g=Q[U+12>>2]|0;if((g|0)==(I|0)){Q[2783]=Q[2783]&~(1<<e);break}else{Q[I+12>>2]=g;Q[g+8>>2]=I;break}}else{F=Q[U+24>>2]|0;g=Q[U+12>>2]|0;do{if((g|0)==(U|0)){e=U+16|0;I=e+4|0;g=Q[I>>2]|0;if(!g){g=Q[e>>2]|0;if(!g){e=0;break}else I=e}while(1){e=g+20|0;t=Q[e>>2]|0;if(t|0){g=t;I=e;continue}e=g+16|0;t=Q[e>>2]|0;if(!t)break;else{g=t;I=e}}Q[I>>2]=0;e=g}else{e=Q[U+8>>2]|0;Q[e+12>>2]=g;Q[g+8>>2]=e;e=g}}while(0);if(F|0){g=Q[U+28>>2]|0;I=11436+(g<<2)|0;if((U|0)==(Q[I>>2]|0)){Q[I>>2]=e;if(!e){Q[2784]=Q[2784]&~(1<<g);break}}else{Q[F+16+(((Q[F+16>>2]|0)!=(U|0)&1)<<2)>>2]=e;if(!e)break}Q[e+24>>2]=F;g=U+16|0;I=Q[g>>2]|0;if(I|0){Q[e+16>>2]=I;Q[I+24>>2]=e}g=Q[g+4>>2]|0;if(g|0){Q[e+20>>2]=g;Q[g+24>>2]=e}}}}while(0);Q[n+4>>2]=C|1;Q[B+C>>2]=C;if((n|0)==(Q[2788]|0)){Q[2785]=C;return}}else{Q[g>>2]=t&-2;Q[n+4>>2]=I|1;Q[B+I>>2]=I;C=I}g=C>>>3;if(C>>>0<256){e=11172+(g<<1<<2)|0;I=Q[2783]|0;g=1<<g;if(!(I&g)){Q[2783]=I|g;g=e;I=e+8|0}else{I=e+8|0;g=Q[I>>2]|0}Q[I>>2]=n;Q[g+12>>2]=n;Q[n+8>>2]=g;Q[n+12>>2]=e;return}g=C>>>8;if(g){if(C>>>0>16777215)g=31;else{B=(g+1048320|0)>>>16&8;U=g<<B;F=(U+520192|0)>>>16&4;U=U<<F;g=(U+245760|0)>>>16&2;g=14-(F|B|g)+(U<<g>>>15)|0;g=C>>>(g+7|0)&1|g<<1}}else g=0;t=11436+(g<<2)|0;Q[n+28>>2]=g;Q[n+20>>2]=0;Q[n+16>>2]=0;I=Q[2784]|0;e=1<<g;do{if(I&e){I=C<<((g|0)==31?0:25-(g>>>1)|0);e=Q[t>>2]|0;while(1){if((Q[e+4>>2]&-8|0)==(C|0)){g=73;break}t=e+16+(I>>>31<<2)|0;g=Q[t>>2]|0;if(!g){g=72;break}else{I=I<<1;e=g}}if((g|0)==72){Q[t>>2]=n;Q[n+24>>2]=e;Q[n+12>>2]=n;Q[n+8>>2]=n;break}else if((g|0)==73){B=e+8|0;U=Q[B>>2]|0;Q[U+12>>2]=n;Q[B>>2]=n;Q[n+8>>2]=U;Q[n+12>>2]=e;Q[n+24>>2]=0;break}}else{Q[2784]=I|e;Q[t>>2]=n;Q[n+24>>2]=t;Q[n+12>>2]=n;Q[n+8>>2]=n}}while(0);U=(Q[2791]|0)+-1|0;Q[2791]=U;if(!U)g=11588;else return;while(1){g=Q[g>>2]|0;if(!g)break;else g=g+8|0}Q[2791]=-1;return}function zS(){return 11628}function OS(g){g=g|0;var I=0,e=0;I=l;l=l+16|0;e=I;Q[e>>2]=gG(Q[g+60>>2]|0)|0;g=PS(FI(6,e|0)|0)|0;l=I;return g|0}function KS(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0,A=0,a=0;c=l;l=l+48|0;s=c+16|0;F=c;C=c+32|0;n=g+28|0;t=Q[n>>2]|0;Q[C>>2]=t;U=g+20|0;t=(Q[U>>2]|0)-t|0;Q[C+4>>2]=t;Q[C+8>>2]=I;Q[C+12>>2]=e;t=t+e|0;B=g+60|0;Q[F>>2]=Q[B>>2];Q[F+4>>2]=C;Q[F+8>>2]=2;F=PS(UI(146,F|0)|0)|0;g:do{if((t|0)!=(F|0)){I=2;while(1){if((F|0)<0)break;t=t-F|0;a=Q[C+4>>2]|0;A=F>>>0>a>>>0;C=A?C+8|0:C;I=(A<<31>>31)+I|0;a=F-(A?a:0)|0;Q[C>>2]=(Q[C>>2]|0)+a;A=C+4|0;Q[A>>2]=(Q[A>>2]|0)-a;Q[s>>2]=Q[B>>2];Q[s+4>>2]=C;Q[s+8>>2]=I;F=PS(UI(146,s|0)|0)|0;if((t|0)==(F|0)){i=3;break g}}Q[g+16>>2]=0;Q[n>>2]=0;Q[U>>2]=0;Q[g>>2]=Q[g>>2]|32;if((I|0)==2)e=0;else e=e-(Q[C+4>>2]|0)|0}else i=3}while(0);if((i|0)==3){a=Q[g+44>>2]|0;Q[g+16>>2]=a+(Q[g+48>>2]|0);Q[n>>2]=a;Q[U>>2]=a}l=c;return e|0}function jS(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0;C=l;l=l+32|0;F=C;t=C+20|0;Q[F>>2]=Q[g+60>>2];Q[F+4>>2]=0;Q[F+8>>2]=I;Q[F+12>>2]=t;Q[F+16>>2]=e;if((PS(nI(140,F|0)|0)|0)<0){Q[t>>2]=-1;g=-1}else g=Q[t>>2]|0;l=C;return g|0}function PS(g){g=g|0;if(g>>>0>4294963200){Q[(_S()|0)>>2]=0-g;g=-1}return g|0}function _S(){return(qS()|0)+64|0}function qS(){return $S()|0}function $S(){return 2084}function gG(g){g=g|0;return g|0}function IG(g,I,e){g=g|0;I=I|0;e=e|0;var C=0,F=0;F=l;l=l+32|0;C=F;Q[g+36>>2]=1;if((Q[g>>2]&64|0)==0?(Q[C>>2]=Q[g+60>>2],Q[C+4>>2]=21523,Q[C+8>>2]=F+16,_g(54,C|0)|0):0)t[g+75>>0]=-1;C=KS(g,I,e)|0;l=F;return C|0}function eG(g,I){g=g|0;I=I|0;var e=0,C=0;e=t[g>>0]|0;C=t[I>>0]|0;if(e<<24>>24==0?1:e<<24>>24!=C<<24>>24)g=C;else{do{g=g+1|0;I=I+1|0;e=t[g>>0]|0;C=t[I>>0]|0}while(!(e<<24>>24==0?1:e<<24>>24!=C<<24>>24));g=C}return(e&255)-(g&255)|0}function tG(g,I,e){g=g|0;I=I|0;e=e|0;var C=0,Q=0;g:do{if(!e)g=0;else{while(1){C=t[g>>0]|0;Q=t[I>>0]|0;if(C<<24>>24!=Q<<24>>24)break;e=e+-1|0;if(!e){g=0;break g}else{g=g+1|0;I=I+1|0}}g=(C&255)-(Q&255)|0}}while(0);return g|0}function CG(g,I,e){g=g|0;I=I|0;e=e|0;var C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0,A=0,a=0,r=0,o=0,d=0;d=l;l=l+224|0;c=d+120|0;A=d+80|0;r=d;o=d+136|0;C=A;F=C+40|0;do{Q[C>>2]=0;C=C+4|0}while((C|0)<(F|0));Q[c>>2]=Q[e>>2];if((QG(0,I,c,r,A)|0)<0)e=-1;else{if((Q[g+76>>2]|0)>-1)a=FG(g)|0;else a=0;e=Q[g>>2]|0;i=e&32;if((t[g+74>>0]|0)<1)Q[g>>2]=e&-33;C=g+48|0;if(!(Q[C>>2]|0)){F=g+44|0;B=Q[F>>2]|0;Q[F>>2]=o;n=g+28|0;Q[n>>2]=o;U=g+20|0;Q[U>>2]=o;Q[C>>2]=80;s=g+16|0;Q[s>>2]=o+80;e=QG(g,I,c,r,A)|0;if(B){dV[Q[g+36>>2]&7](g,0,0)|0;e=(Q[U>>2]|0)==0?-1:e;Q[F>>2]=B;Q[C>>2]=0;Q[s>>2]=0;Q[n>>2]=0;Q[U>>2]=0}}else e=QG(g,I,c,r,A)|0;C=Q[g>>2]|0;Q[g>>2]=C|i;if(a|0)BG(g);e=(C&32|0)==0?e:-1}l=d;return e|0}function QG(g,I,e,F,B){g=g|0;I=I|0;e=e|0;F=F|0;B=B|0;var n=0,U=0,i=0,c=0,A=0,a=0,r=0,o=0,d=0,u=0,y=0,b=0,Z=0,m=0,x=0,R=0,S=0,G=0,L=0,h=0,D=0,p=0,E=0;E=l;l=l+64|0;L=E+16|0;h=E;S=E+24|0;D=E+8|0;p=E+20|0;Q[L>>2]=I;m=(g|0)!=0;x=S+40|0;R=x;S=S+39|0;G=D+4|0;U=0;n=0;a=0;g:while(1){do{if((n|0)>-1)if((U|0)>(2147483647-n|0)){Q[(_S()|0)>>2]=75;n=-1;break}else{n=U+n|0;break}}while(0);U=t[I>>0]|0;if(!(U<<24>>24)){Z=87;break}else i=I;I:while(1){switch(U<<24>>24){case 37:{U=i;Z=9;break I}case 0:{U=i;break I}default:{}}b=i+1|0;Q[L>>2]=b;U=t[b>>0]|0;i=b}I:do{if((Z|0)==9)while(1){Z=0;if((t[i+1>>0]|0)!=37)break I;U=U+1|0;i=i+2|0;Q[L>>2]=i;if((t[i>>0]|0)==37)Z=9;else break}}while(0);U=U-I|0;if(m)nG(g,I,U);if(U|0){I=i;continue}c=i+1|0;U=(t[c>>0]|0)+-48|0;if(U>>>0<10){b=(t[i+2>>0]|0)==36;y=b?U:-1;a=b?1:a;c=b?i+3|0:c}else y=-1;Q[L>>2]=c;U=t[c>>0]|0;i=(U<<24>>24)+-32|0;I:do{if(i>>>0<32){A=0;r=U;while(1){U=1<<i;if(!(U&75913)){U=r;break I}A=U|A;c=c+1|0;Q[L>>2]=c;U=t[c>>0]|0;i=(U<<24>>24)+-32|0;if(i>>>0>=32)break;else r=U}}else A=0}while(0);if(U<<24>>24==42){i=c+1|0;U=(t[i>>0]|0)+-48|0;if(U>>>0<10?(t[c+2>>0]|0)==36:0){Q[B+(U<<2)>>2]=10;U=Q[F+((t[i>>0]|0)+-48<<3)>>2]|0;a=1;c=c+3|0}else{if(a|0){n=-1;break}if(m){a=(Q[e>>2]|0)+(4-1)&~(4-1);U=Q[a>>2]|0;Q[e>>2]=a+4;a=0;c=i}else{U=0;a=0;c=i}}Q[L>>2]=c;b=(U|0)<0;U=b?0-U|0:U;A=b?A|8192:A}else{U=UG(L)|0;if((U|0)<0){n=-1;break}c=Q[L>>2]|0}do{if((t[c>>0]|0)==46){if((t[c+1>>0]|0)!=42){Q[L>>2]=c+1;i=UG(L)|0;c=Q[L>>2]|0;break}r=c+2|0;i=(t[r>>0]|0)+-48|0;if(i>>>0<10?(t[c+3>>0]|0)==36:0){Q[B+(i<<2)>>2]=10;i=Q[F+((t[r>>0]|0)+-48<<3)>>2]|0;c=c+4|0;Q[L>>2]=c;break}if(a|0){n=-1;break g}if(m){b=(Q[e>>2]|0)+(4-1)&~(4-1);i=Q[b>>2]|0;Q[e>>2]=b+4}else i=0;Q[L>>2]=r;c=r}else i=-1}while(0);u=0;while(1){if(((t[c>>0]|0)+-65|0)>>>0>57){n=-1;break g}b=c+1|0;Q[L>>2]=b;r=t[(t[c>>0]|0)+-65+(5178+(u*58|0))>>0]|0;o=r&255;if((o+-1|0)>>>0<8){u=o;c=b}else break}if(!(r<<24>>24)){n=-1;break}d=(y|0)>-1;do{if(r<<24>>24==19){if(d){n=-1;break g}else Z=49}else{if(d){Q[B+(y<<2)>>2]=o;d=F+(y<<3)|0;y=Q[d+4>>2]|0;Z=h;Q[Z>>2]=Q[d>>2];Q[Z+4>>2]=y;Z=49;break}if(!m){n=0;break g}sG(h,o,e)}}while(0);if((Z|0)==49?(Z=0,!m):0){U=0;I=b;continue}c=t[c>>0]|0;c=(u|0)!=0&(c&15|0)==3?c&-33:c;d=A&-65537;y=(A&8192|0)==0?A:d;I:do{switch(c|0){case 110:switch((u&255)<<24>>24){case 0:{Q[Q[h>>2]>>2]=n;U=0;I=b;continue g}case 1:{Q[Q[h>>2]>>2]=n;U=0;I=b;continue g}case 2:{U=Q[h>>2]|0;Q[U>>2]=n;Q[U+4>>2]=((n|0)<0)<<31>>31;U=0;I=b;continue g}case 3:{C[Q[h>>2]>>1]=n;U=0;I=b;continue g}case 4:{t[Q[h>>2]>>0]=n;U=0;I=b;continue g}case 6:{Q[Q[h>>2]>>2]=n;U=0;I=b;continue g}case 7:{U=Q[h>>2]|0;Q[U>>2]=n;Q[U+4>>2]=((n|0)<0)<<31>>31;U=0;I=b;continue g}default:{U=0;I=b;continue g}}case 112:{c=120;i=i>>>0>8?i:8;I=y|8;Z=61;break}case 88:case 120:{I=y;Z=61;break}case 111:{c=h;I=Q[c>>2]|0;c=Q[c+4>>2]|0;o=cG(I,c,x)|0;d=R-o|0;A=0;r=5642;i=(y&8|0)==0|(i|0)>(d|0)?i:d+1|0;d=y;Z=67;break}case 105:case 100:{c=h;I=Q[c>>2]|0;c=Q[c+4>>2]|0;if((c|0)<0){I=qG(0,0,I|0,c|0)|0;c=V;A=h;Q[A>>2]=I;Q[A+4>>2]=c;A=1;r=5642;Z=66;break I}else{A=(y&2049|0)!=0&1;r=(y&2048|0)==0?(y&1|0)==0?5642:5644:5643;Z=66;break I}}case 117:{c=h;A=0;r=5642;I=Q[c>>2]|0;c=Q[c+4>>2]|0;Z=66;break}case 99:{t[S>>0]=Q[h>>2];I=S;A=0;r=5642;o=x;c=1;i=d;break}case 109:{c=lG(Q[(_S()|0)>>2]|0)|0;Z=71;break}case 115:{c=Q[h>>2]|0;c=c|0?c:5652;Z=71;break}case 67:{Q[D>>2]=Q[h>>2];Q[G>>2]=0;Q[h>>2]=D;o=-1;c=D;Z=75;break}case 83:{I=Q[h>>2]|0;if(!i){rG(g,32,U,0,y);I=0;Z=84}else{o=i;c=I;Z=75}break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{U=dG(g,+s[h>>3],U,i,y,c)|0;I=b;continue g}default:{A=0;r=5642;o=x;c=i;i=y}}}while(0);I:do{if((Z|0)==61){y=h;u=Q[y>>2]|0;y=Q[y+4>>2]|0;o=iG(u,y,x,c&32)|0;r=(I&8|0)==0|(u|0)==0&(y|0)==0;A=r?0:2;r=r?5642:5642+(c>>4)|0;d=I;I=u;c=y;Z=67}else if((Z|0)==66){o=AG(I,c,x)|0;d=y;Z=67}else if((Z|0)==71){Z=0;y=aG(c,0,i)|0;u=(y|0)==0;I=c;A=0;r=5642;o=u?c+i|0:y;c=u?i:y-c|0;i=d}else if((Z|0)==75){Z=0;r=c;I=0;i=0;while(1){A=Q[r>>2]|0;if(!A)break;i=oG(p,A)|0;if((i|0)<0|i>>>0>(o-I|0)>>>0)break;I=i+I|0;if(o>>>0>I>>>0)r=r+4|0;else break}if((i|0)<0){n=-1;break g}rG(g,32,U,I,y);if(!I){I=0;Z=84}else{A=0;while(1){i=Q[c>>2]|0;if(!i){Z=84;break I}i=oG(p,i)|0;A=i+A|0;if((A|0)>(I|0)){Z=84;break I}nG(g,p,i);if(A>>>0>=I>>>0){Z=84;break}else c=c+4|0}}}}while(0);if((Z|0)==67){Z=0;c=(I|0)!=0|(c|0)!=0;y=(i|0)!=0|c;c=((c^1)&1)+(R-o)|0;I=y?o:x;o=x;c=y?(i|0)>(c|0)?i:c:i;i=(i|0)>-1?d&-65537:d}else if((Z|0)==84){Z=0;rG(g,32,U,I,y^8192);U=(U|0)>(I|0)?U:I;I=b;continue}u=o-I|0;d=(c|0)<(u|0)?u:c;y=d+A|0;U=(U|0)<(y|0)?y:U;rG(g,32,U,y,i);nG(g,r,A);rG(g,48,U,y,i^65536);rG(g,48,d,u,0);nG(g,I,u);rG(g,32,U,y,i^8192);I=b}g:do{if((Z|0)==87)if(!g)if(!a)n=0;else{n=1;while(1){I=Q[B+(n<<2)>>2]|0;if(!I)break;sG(F+(n<<3)|0,I,e);n=n+1|0;if((n|0)>=10){n=1;break g}}while(1){if(Q[B+(n<<2)>>2]|0){n=-1;break g}n=n+1|0;if((n|0)>=10){n=1;break}}}}while(0);l=E;return n|0}function FG(g){g=g|0;return 0}function BG(g){g=g|0;return}function nG(g,I,e){g=g|0;I=I|0;e=e|0;if(!(Q[g>>2]&32))hG(I,e,g)|0;return}function UG(g){g=g|0;var I=0,e=0,C=0;e=Q[g>>2]|0;C=(t[e>>0]|0)+-48|0;if(C>>>0<10){I=0;do{I=C+(I*10|0)|0;e=e+1|0;Q[g>>2]=e;C=(t[e>>0]|0)+-48|0}while(C>>>0<10)}else I=0;return I|0}function sG(g,I,e){g=g|0;I=I|0;e=e|0;var t=0,C=0,F=0.0;g:do{if(I>>>0<=20)do{switch(I|0){case 9:{t=(Q[e>>2]|0)+(4-1)&~(4-1);I=Q[t>>2]|0;Q[e>>2]=t+4;Q[g>>2]=I;break g}case 10:{t=(Q[e>>2]|0)+(4-1)&~(4-1);I=Q[t>>2]|0;Q[e>>2]=t+4;t=g;Q[t>>2]=I;Q[t+4>>2]=((I|0)<0)<<31>>31;break g}case 11:{t=(Q[e>>2]|0)+(4-1)&~(4-1);I=Q[t>>2]|0;Q[e>>2]=t+4;t=g;Q[t>>2]=I;Q[t+4>>2]=0;break g}case 12:{t=(Q[e>>2]|0)+(8-1)&~(8-1);I=t;C=Q[I>>2]|0;I=Q[I+4>>2]|0;Q[e>>2]=t+8;t=g;Q[t>>2]=C;Q[t+4>>2]=I;break g}case 13:{C=(Q[e>>2]|0)+(4-1)&~(4-1);t=Q[C>>2]|0;Q[e>>2]=C+4;t=(t&65535)<<16>>16;C=g;Q[C>>2]=t;Q[C+4>>2]=((t|0)<0)<<31>>31;break g}case 14:{C=(Q[e>>2]|0)+(4-1)&~(4-1);t=Q[C>>2]|0;Q[e>>2]=C+4;C=g;Q[C>>2]=t&65535;Q[C+4>>2]=0;break g}case 15:{C=(Q[e>>2]|0)+(4-1)&~(4-1);t=Q[C>>2]|0;Q[e>>2]=C+4;t=(t&255)<<24>>24;C=g;Q[C>>2]=t;Q[C+4>>2]=((t|0)<0)<<31>>31;break g}case 16:{C=(Q[e>>2]|0)+(4-1)&~(4-1);t=Q[C>>2]|0;Q[e>>2]=C+4;C=g;Q[C>>2]=t&255;Q[C+4>>2]=0;break g}case 17:{C=(Q[e>>2]|0)+(8-1)&~(8-1);F=+s[C>>3];Q[e>>2]=C+8;s[g>>3]=F;break g}case 18:{C=(Q[e>>2]|0)+(8-1)&~(8-1);F=+s[C>>3];Q[e>>2]=C+8;s[g>>3]=F;break g}default:break g}}while(0)}while(0);return}function iG(g,I,e,C){g=g|0;I=I|0;e=e|0;C=C|0;if(!((g|0)==0&(I|0)==0))do{e=e+-1|0;t[e>>0]=F[5694+(g&15)>>0]|0|C;g=eL(g|0,I|0,4)|0;I=V}while(!((g|0)==0&(I|0)==0));return e|0}function cG(g,I,e){g=g|0;I=I|0;e=e|0;if(!((g|0)==0&(I|0)==0))do{e=e+-1|0;t[e>>0]=g&7|48;g=eL(g|0,I|0,3)|0;I=V}while(!((g|0)==0&(I|0)==0));return e|0}function AG(g,I,e){g=g|0;I=I|0;e=e|0;var C=0;if(I>>>0>0|(I|0)==0&g>>>0>4294967295){while(1){C=UL(g|0,I|0,10,0)|0;e=e+-1|0;t[e>>0]=C&255|48;C=g;g=FL(g|0,I|0,10,0)|0;if(!(I>>>0>9|(I|0)==9&C>>>0>4294967295))break;else I=V}I=g}else I=g;if(I)while(1){e=e+-1|0;t[e>>0]=(I>>>0)%10|0|48;if(I>>>0<10)break;else I=(I>>>0)/10|0}return e|0}function lG(g){g=g|0;return RG(g,Q[(xG()|0)+188>>2]|0)|0}function aG(g,I,e){g=g|0;I=I|0;e=e|0;var C=0,F=0,B=0,n=0;B=I&255;C=(e|0)!=0;g:do{if(C&(g&3|0)!=0){F=I&255;while(1){if((t[g>>0]|0)==F<<24>>24){n=6;break g}g=g+1|0;e=e+-1|0;C=(e|0)!=0;if(!(C&(g&3|0)!=0)){n=5;break}}}else n=5}while(0);if((n|0)==5)if(C)n=6;else e=0;g:do{if((n|0)==6){F=I&255;if((t[g>>0]|0)!=F<<24>>24){C=w(B,16843009)|0;I:do{if(e>>>0>3)while(1){B=Q[g>>2]^C;if((B&-2139062144^-2139062144)&B+-16843009|0)break;g=g+4|0;e=e+-4|0;if(e>>>0<=3){n=11;break I}}else n=11}while(0);if((n|0)==11)if(!e){e=0;break}while(1){if((t[g>>0]|0)==F<<24>>24)break g;g=g+1|0;e=e+-1|0;if(!e){e=0;break}}}}}while(0);return(e|0?g:0)|0}function rG(g,I,e,t,C){g=g|0;I=I|0;e=e|0;t=t|0;C=C|0;var Q=0,F=0;F=l;l=l+256|0;Q=F;if((e|0)>(t|0)&(C&73728|0)==0){C=e-t|0;gL(Q|0,I|0,(C>>>0<256?C:256)|0)|0;if(C>>>0>255){I=e-t|0;do{nG(g,Q,256);C=C+-256|0}while(C>>>0>255);C=I&255}nG(g,Q,C)}l=F;return}function oG(g,I){g=g|0;I=I|0;if(!g)g=0;else g=ZG(g,I,0)|0;return g|0}function dG(g,I,e,C,B,n){g=g|0;I=+I;e=e|0;C=C|0;B=B|0;n=n|0;var U=0,s=0,i=0,c=0,A=0,a=0,r=0,o=0.0,d=0,u=0,y=0,b=0,Z=0,m=0,x=0,R=0,S=0,G=0,L=0,h=0,D=0,p=0,E=0;E=l;l=l+560|0;i=E+8|0;y=E;p=E+524|0;D=p;c=E+512|0;Q[y>>2]=0;h=c+12|0;uG(I)|0;if((V|0)<0){I=-I;G=1;S=5659}else{G=(B&2049|0)!=0&1;S=(B&2048|0)==0?(B&1|0)==0?5660:5665:5662}uG(I)|0;L=V&2146435072;do{if(L>>>0<2146435072|(L|0)==2146435072&0<0){o=+yG(I,y)*2.0;U=o!=0.0;if(U)Q[y>>2]=(Q[y>>2]|0)+-1;Z=n|32;if((Z|0)==97){d=n&32;r=(d|0)==0?S:S+9|0;a=G|2;U=12-C|0;do{if(!(C>>>0>11|(U|0)==0)){I=8.0;do{U=U+-1|0;I=I*16.0}while((U|0)!=0);if((t[r>>0]|0)==45){I=-(I+(-o-I));break}else{I=o+I-I;break}}else I=o}while(0);s=Q[y>>2]|0;U=(s|0)<0?0-s|0:s;U=AG(U,((U|0)<0)<<31>>31,h)|0;if((U|0)==(h|0)){U=c+11|0;t[U>>0]=48}t[U+-1>>0]=(s>>31&2)+43;A=U+-2|0;t[A>>0]=n+15;c=(C|0)<1;i=(B&8|0)==0;U=p;do{L=~~I;s=U+1|0;t[U>>0]=F[5694+L>>0]|d;I=(I-+(L|0))*16.0;if((s-D|0)==1?!(i&(c&I==0.0)):0){t[s>>0]=46;U=U+2|0}else U=s}while(I!=0.0);L=U-D|0;D=h-A|0;h=(C|0)!=0&(L+-2|0)<(C|0)?C+2|0:L;U=D+a+h|0;rG(g,32,e,U,B);nG(g,r,a);rG(g,48,e,U,B^65536);nG(g,p,L);rG(g,48,h-L|0,0,0);nG(g,A,D);rG(g,32,e,U,B^8192);break}s=(C|0)<0?6:C;if(U){U=(Q[y>>2]|0)+-28|0;Q[y>>2]=U;I=o*268435456.0}else{I=o;U=Q[y>>2]|0}L=(U|0)<0?i:i+288|0;i=L;do{x=~~I>>>0;Q[i>>2]=x;i=i+4|0;I=(I-+(x>>>0))*1.0e9}while(I!=0.0);if((U|0)>0){c=L;a=i;while(1){A=(U|0)<29?U:29;U=a+-4|0;if(U>>>0>=c>>>0){i=0;do{m=IL(Q[U>>2]|0,0,A|0)|0;m=$G(m|0,V|0,i|0,0)|0;x=V;b=UL(m|0,x|0,1e9,0)|0;Q[U>>2]=b;i=FL(m|0,x|0,1e9,0)|0;U=U+-4|0}while(U>>>0>=c>>>0);if(i){c=c+-4|0;Q[c>>2]=i}}i=a;while(1){if(i>>>0<=c>>>0)break;U=i+-4|0;if(!(Q[U>>2]|0))i=U;else break}U=(Q[y>>2]|0)-A|0;Q[y>>2]=U;if((U|0)>0)a=i;else break}}else c=L;if((U|0)<0){C=((s+25|0)/9|0)+1|0;u=(Z|0)==102;do{d=0-U|0;d=(d|0)<9?d:9;if(c>>>0<i>>>0){A=(1<<d)+-1|0;a=1e9>>>d;r=0;U=c;do{x=Q[U>>2]|0;Q[U>>2]=(x>>>d)+r;r=w(x&A,a)|0;U=U+4|0}while(U>>>0<i>>>0);U=(Q[c>>2]|0)==0?c+4|0:c;if(!r){c=U;U=i}else{Q[i>>2]=r;c=U;U=i+4|0}}else{c=(Q[c>>2]|0)==0?c+4|0:c;U=i}i=u?L:c;i=(U-i>>2|0)>(C|0)?i+(C<<2)|0:U;U=(Q[y>>2]|0)+d|0;Q[y>>2]=U}while((U|0)<0);U=c;C=i}else{U=c;C=i}x=L;if(U>>>0<C>>>0){i=(x-U>>2)*9|0;A=Q[U>>2]|0;if(A>>>0>=10){c=10;do{c=c*10|0;i=i+1|0}while(A>>>0>=c>>>0)}}else i=0;u=(Z|0)==103;b=(s|0)!=0;c=s-((Z|0)!=102?i:0)+((b&u)<<31>>31)|0;if((c|0)<(((C-x>>2)*9|0)+-9|0)){c=c+9216|0;d=L+4+(((c|0)/9|0)+-1024<<2)|0;c=((c|0)%9|0)+1|0;if((c|0)<9){A=10;do{A=A*10|0;c=c+1|0}while((c|0)!=9)}else A=10;a=Q[d>>2]|0;r=(a>>>0)%(A>>>0)|0;c=(d+4|0)==(C|0);if(!(c&(r|0)==0)){o=(((a>>>0)/(A>>>0)|0)&1|0)==0?9007199254740992.0:9007199254740994.0;m=(A|0)/2|0;I=r>>>0<m>>>0?.5:c&(r|0)==(m|0)?1.0:1.5;if(G){m=(t[S>>0]|0)==45;I=m?-I:I;o=m?-o:o}c=a-r|0;Q[d>>2]=c;if(o+I!=o){m=c+A|0;Q[d>>2]=m;if(m>>>0>999999999){i=d;while(1){c=i+-4|0;Q[i>>2]=0;if(c>>>0<U>>>0){U=U+-4|0;Q[U>>2]=0}m=(Q[c>>2]|0)+1|0;Q[c>>2]=m;if(m>>>0>999999999)i=c;else break}}else c=d;i=(x-U>>2)*9|0;a=Q[U>>2]|0;if(a>>>0>=10){A=10;do{A=A*10|0;i=i+1|0}while(a>>>0>=A>>>0)}}else c=d}else c=d;c=c+4|0;c=C>>>0>c>>>0?c:C;m=U}else{c=C;m=U}Z=c;while(1){if(Z>>>0<=m>>>0){y=0;break}U=Z+-4|0;if(!(Q[U>>2]|0))Z=U;else{y=1;break}}C=0-i|0;do{if(u){U=((b^1)&1)+s|0;if((U|0)>(i|0)&(i|0)>-5){A=n+-1|0;s=U+-1-i|0}else{A=n+-2|0;s=U+-1|0}U=B&8;if(!U){if(y?(R=Q[Z+-4>>2]|0,(R|0)!=0):0){if(!((R>>>0)%10|0)){c=0;U=10;do{U=U*10|0;c=c+1|0}while(!((R>>>0)%(U>>>0)|0|0))}else c=0}else c=9;U=((Z-x>>2)*9|0)+-9|0;if((A|32|0)==102){d=U-c|0;d=(d|0)>0?d:0;s=(s|0)<(d|0)?s:d;d=0;break}else{d=U+i-c|0;d=(d|0)>0?d:0;s=(s|0)<(d|0)?s:d;d=0;break}}else d=U}else{A=n;d=B&8}}while(0);u=s|d;a=(u|0)!=0&1;r=(A|32|0)==102;if(r){b=0;U=(i|0)>0?i:0}else{U=(i|0)<0?C:i;U=AG(U,((U|0)<0)<<31>>31,h)|0;c=h;if((c-U|0)<2)do{U=U+-1|0;t[U>>0]=48}while((c-U|0)<2);t[U+-1>>0]=(i>>31&2)+43;U=U+-2|0;t[U>>0]=A;b=U;U=c-U|0}U=G+1+s+a+U|0;rG(g,32,e,U,B);nG(g,S,G);rG(g,48,e,U,B^65536);if(r){A=m>>>0>L>>>0?L:m;d=p+9|0;a=d;r=p+8|0;c=A;do{i=AG(Q[c>>2]|0,0,d)|0;if((c|0)==(A|0)){if((i|0)==(d|0)){t[r>>0]=48;i=r}}else if(i>>>0>p>>>0){gL(p|0,48,i-D|0)|0;do{i=i+-1|0}while(i>>>0>p>>>0)}nG(g,i,a-i|0);c=c+4|0}while(c>>>0<=L>>>0);if(u|0)nG(g,5710,1);if(c>>>0<Z>>>0&(s|0)>0)while(1){i=AG(Q[c>>2]|0,0,d)|0;if(i>>>0>p>>>0){gL(p|0,48,i-D|0)|0;do{i=i+-1|0}while(i>>>0>p>>>0)}nG(g,i,(s|0)<9?s:9);c=c+4|0;i=s+-9|0;if(!(c>>>0<Z>>>0&(s|0)>9)){s=i;break}else s=i}rG(g,48,s+9|0,9,0)}else{u=y?Z:m+4|0;if((s|0)>-1){y=p+9|0;d=(d|0)==0;C=y;a=0-D|0;r=p+8|0;A=m;do{i=AG(Q[A>>2]|0,0,y)|0;if((i|0)==(y|0)){t[r>>0]=48;i=r}do{if((A|0)==(m|0)){c=i+1|0;nG(g,i,1);if(d&(s|0)<1){i=c;break}nG(g,5710,1);i=c}else{if(i>>>0<=p>>>0)break;gL(p|0,48,i+a|0)|0;do{i=i+-1|0}while(i>>>0>p>>>0)}}while(0);D=C-i|0;nG(g,i,(s|0)>(D|0)?D:s);s=s-D|0;A=A+4|0}while(A>>>0<u>>>0&(s|0)>-1)}rG(g,48,s+18|0,18,0);nG(g,b,h-b|0)}rG(g,32,e,U,B^8192)}else{p=(n&32|0)!=0;U=G+3|0;rG(g,32,e,U,B&-65537);nG(g,S,G);nG(g,I!=I|0.0!=0.0?p?5686:5690:p?5678:5682,3);rG(g,32,e,U,B^8192)}}while(0);l=E;return((U|0)<(e|0)?e:U)|0}function uG(g){g=+g;var I=0;s[c>>3]=g;I=Q[c>>2]|0;V=Q[c+4>>2]|0;return I|0}function yG(g,I){g=+g;I=I|0;return+ +bG(g,I)}function bG(g,I){g=+g;I=I|0;var e=0,t=0,C=0;s[c>>3]=g;e=Q[c>>2]|0;t=Q[c+4>>2]|0;C=eL(e|0,t|0,52)|0;switch(C&2047){case 0:{if(g!=0.0){g=+bG(g*18446744073709551616.0,I);e=(Q[I>>2]|0)+-64|0}else e=0;Q[I>>2]=e;break}case 2047:break;default:{Q[I>>2]=(C&2047)+-1022;Q[c>>2]=e;Q[c+4>>2]=t&-2146435073|1071644672;g=+s[c>>3]}}return+g}function ZG(g,I,e){g=g|0;I=I|0;e=e|0;do{if(g){if(I>>>0<128){t[g>>0]=I;g=1;break}if(!(Q[Q[(mG()|0)+188>>2]>>2]|0))if((I&-128|0)==57216){t[g>>0]=I;g=1;break}else{Q[(_S()|0)>>2]=84;g=-1;break}if(I>>>0<2048){t[g>>0]=I>>>6|192;t[g+1>>0]=I&63|128;g=2;break}if(I>>>0<55296|(I&-8192|0)==57344){t[g>>0]=I>>>12|224;t[g+1>>0]=I>>>6&63|128;t[g+2>>0]=I&63|128;g=3;break}if((I+-65536|0)>>>0<1048576){t[g>>0]=I>>>18|240;t[g+1>>0]=I>>>12&63|128;t[g+2>>0]=I>>>6&63|128;t[g+3>>0]=I&63|128;g=4;break}else{Q[(_S()|0)>>2]=84;g=-1;break}}else g=1}while(0);return g|0}function mG(){return $S()|0}function xG(){return $S()|0}function RG(g,I){g=g|0;I=I|0;var e=0,C=0;C=0;while(1){if((F[5712+C>>0]|0)==(g|0)){g=2;break}e=C+1|0;if((e|0)==87){e=5800;C=87;g=5;break}else C=e}if((g|0)==2)if(!C)e=5800;else{e=5800;g=5}if((g|0)==5)while(1){do{g=e;e=e+1|0}while((t[g>>0]|0)!=0);C=C+-1|0;if(!C)break;else g=5}return SG(e,Q[I+20>>2]|0)|0}function SG(g,I){g=g|0;I=I|0;return GG(g,I)|0}function GG(g,I){g=g|0;I=I|0;if(!I)I=0;else I=LG(Q[I>>2]|0,Q[I+4>>2]|0,g)|0;return(I|0?I:g)|0}function LG(g,I,e){g=g|0;I=I|0;e=e|0;var C=0,F=0,B=0,n=0,U=0,s=0,i=0,c=0,A=0,l=0;l=(Q[g>>2]|0)+1794895138|0;B=VG(Q[g+8>>2]|0,l)|0;C=VG(Q[g+12>>2]|0,l)|0;F=VG(Q[g+16>>2]|0,l)|0;g:do{if((B>>>0<I>>>2>>>0?(A=I-(B<<2)|0,C>>>0<A>>>0&F>>>0<A>>>0):0)?((F|C)&3|0)==0:0){A=C>>>2;c=F>>>2;i=0;while(1){U=B>>>1;s=i+U|0;n=s<<1;F=n+A|0;C=VG(Q[g+(F<<2)>>2]|0,l)|0;F=VG(Q[g+(F+1<<2)>>2]|0,l)|0;if(!(F>>>0<I>>>0&C>>>0<(I-F|0)>>>0)){C=0;break g}if(t[g+(F+C)>>0]|0){C=0;break g}C=eG(e,g+F|0)|0;if(!C)break;C=(C|0)<0;if((B|0)==1){C=0;break g}else{i=C?i:s;B=C?U:B-U|0}}C=n+c|0;F=VG(Q[g+(C<<2)>>2]|0,l)|0;C=VG(Q[g+(C+1<<2)>>2]|0,l)|0;if(C>>>0<I>>>0&F>>>0<(I-C|0)>>>0)C=(t[g+(C+F)>>0]|0)==0?g+C|0:0;else C=0}else C=0}while(0);return C|0}function VG(g,I){g=g|0;I=I|0;var e=0;e=sL(g|0)|0;return((I|0)==0?g:e)|0}function hG(g,I,e){g=g|0;I=I|0;e=e|0;var C=0,F=0,B=0,n=0,U=0;C=e+16|0;F=Q[C>>2]|0;if(!F){if(!(DG(e)|0)){F=Q[C>>2]|0;B=5}else C=0}else B=5;g:do{if((B|0)==5){U=e+20|0;n=Q[U>>2]|0;C=n;if((F-n|0)>>>0<I>>>0){C=dV[Q[e+36>>2]&7](e,g,I)|0;break}I:do{if((t[e+75>>0]|0)>-1){n=I;while(1){if(!n){B=0;F=g;break I}F=n+-1|0;if((t[g+F>>0]|0)==10)break;else n=F}C=dV[Q[e+36>>2]&7](e,g,n)|0;if(C>>>0<n>>>0)break g;B=n;F=g+n|0;I=I-n|0;C=Q[U>>2]|0}else{B=0;F=g}}while(0);tL(C|0,F|0,I|0)|0;Q[U>>2]=(Q[U>>2]|0)+I;C=B+I|0}}while(0);return C|0}function DG(g){g=g|0;var I=0,e=0;I=g+74|0;e=t[I>>0]|0;t[I>>0]=e+255|e;I=Q[g>>2]|0;if(!(I&8)){Q[g+8>>2]=0;Q[g+4>>2]=0;e=Q[g+44>>2]|0;Q[g+28>>2]=e;Q[g+20>>2]=e;Q[g+16>>2]=e+(Q[g+48>>2]|0);g=0}else{Q[g>>2]=I|32;g=-1}return g|0}function pG(g,I){g=K(g);I=K(I);var e=0,t=0;e=EG(g)|0;do{if((e&2147483647)>>>0<=2139095040){t=EG(I)|0;if((t&2147483647)>>>0<=2139095040)if((t^e|0)<0){g=(e|0)<0?I:g;break}else{g=g<I?I:g;break}}else g=I}while(0);return K(g)}function EG(g){g=K(g);return(U[c>>2]=g,Q[c>>2]|0)|0}function NG(g,I){g=K(g);I=K(I);var e=0,t=0;e=WG(g)|0;do{if((e&2147483647)>>>0<=2139095040){t=WG(I)|0;if((t&2147483647)>>>0<=2139095040)if((t^e|0)<0){g=(e|0)<0?g:I;break}else{g=g<I?g:I;break}}else g=I}while(0);return K(g)}function WG(g){g=K(g);return(U[c>>2]=g,Q[c>>2]|0)|0}function fG(g,I){g=K(g);I=K(I);var e=0,t=0,C=0,F=0,B=0,n=0,s=0,i=0;F=(U[c>>2]=g,Q[c>>2]|0);n=(U[c>>2]=I,Q[c>>2]|0);e=F>>>23&255;B=n>>>23&255;s=F&-2147483648;C=n<<1;g:do{if((C|0)!=0?!((e|0)==255|((XG(I)|0)&2147483647)>>>0>2139095040):0){t=F<<1;if(t>>>0<=C>>>0){I=K(g*K(0.0));return K((t|0)==(C|0)?I:g)}if(!e){e=F<<9;if((e|0)>-1){t=e;e=0;do{e=e+-1|0;t=t<<1}while((t|0)>-1)}else e=0;t=F<<1-e}else t=F&8388607|8388608;if(!B){F=n<<9;if((F|0)>-1){C=0;do{C=C+-1|0;F=F<<1}while((F|0)>-1)}else C=0;B=C;n=n<<1-C}else n=n&8388607|8388608;C=t-n|0;F=(C|0)>-1;I:do{if((e|0)>(B|0)){while(1){if(F)if(!C)break;else t=C;t=t<<1;e=e+-1|0;C=t-n|0;F=(C|0)>-1;if((e|0)<=(B|0))break I}I=K(g*K(0.0));break g}}while(0);if(F)if(!C){I=K(g*K(0.0));break}else t=C;if(t>>>0<8388608)do{t=t<<1;e=e+-1|0}while(t>>>0<8388608);if((e|0)>0)e=t+-8388608|e<<23;else e=t>>>(1-e|0);I=(Q[c>>2]=e|s,K(U[c>>2]))}else i=3}while(0);if((i|0)==3){I=K(g*I);I=K(I/I)}return K(I)}function XG(g){g=K(g);return(U[c>>2]=g,Q[c>>2]|0)|0}function JG(g,I){g=g|0;I=I|0;return CG(Q[582]|0,g,I)|0}function vG(g){g=g|0;Kg()}function kG(g){g=g|0;return}function HG(g,I){g=g|0;I=I|0;return 0}function MG(g){g=g|0;if((YG(g+4|0)|0)==-1){AV[Q[(Q[g>>2]|0)+8>>2]&127](g);g=1}else g=0;return g|0}function YG(g){g=g|0;var I=0;I=Q[g>>2]|0;Q[g>>2]=I+-1;return I+-1|0}function wG(g){g=g|0;if(MG(g)|0)TG(g);return}function TG(g){g=g|0;var I=0;I=g+8|0;if(!((Q[I>>2]|0)!=0?(YG(I)|0)!=-1:0))AV[Q[(Q[g>>2]|0)+16>>2]&127](g);return}function zG(g){g=g|0;var I=0;I=(g|0)==0?1:g;while(1){g=wS(I)|0;if(g|0)break;g=PG()|0;if(!g){g=0;break}DV[g&0]()}return g|0}function OG(g){g=g|0;return zG(g)|0}function KG(g){g=g|0;TS(g);return}function jG(g){g=g|0;if((t[g+11>>0]|0)<0)KG(Q[g>>2]|0);return}function PG(){var g=0;g=Q[2923]|0;Q[2923]=g+0;return g|0}function _G(){}function qG(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;t=I-t-(e>>>0>g>>>0|0)>>>0;return(V=t,g-e>>>0|0)|0}function $G(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;e=g+e>>>0;return(V=I+t+(e>>>0<g>>>0|0)>>>0,e|0)|0}function gL(g,I,e){g=g|0;I=I|0;e=e|0;var C=0,F=0,B=0,n=0;B=g+e|0;I=I&255;if((e|0)>=67){while(g&3){t[g>>0]=I;g=g+1|0}C=B&-4|0;F=C-64|0;n=I|I<<8|I<<16|I<<24;while((g|0)<=(F|0)){Q[g>>2]=n;Q[g+4>>2]=n;Q[g+8>>2]=n;Q[g+12>>2]=n;Q[g+16>>2]=n;Q[g+20>>2]=n;Q[g+24>>2]=n;Q[g+28>>2]=n;Q[g+32>>2]=n;Q[g+36>>2]=n;Q[g+40>>2]=n;Q[g+44>>2]=n;Q[g+48>>2]=n;Q[g+52>>2]=n;Q[g+56>>2]=n;Q[g+60>>2]=n;g=g+64|0}while((g|0)<(C|0)){Q[g>>2]=n;g=g+4|0}}while((g|0)<(B|0)){t[g>>0]=I;g=g+1|0}return B-e|0}function IL(g,I,e){g=g|0;I=I|0;e=e|0;if((e|0)<32){V=I<<e|(g&(1<<e)-1<<32-e)>>>32-e;return g<<e}V=g<<e-32;return 0}function eL(g,I,e){g=g|0;I=I|0;e=e|0;if((e|0)<32){V=I>>>e;return g>>>e|(I&(1<<e)-1)<<32-e}V=0;return I>>>e-32|0}function tL(g,I,e){g=g|0;I=I|0;e=e|0;var C=0,F=0,B=0;if((e|0)>=8192)return Yg(g|0,I|0,e|0)|0;B=g|0;F=g+e|0;if((g&3)==(I&3)){while(g&3){if(!e)return B|0;t[g>>0]=t[I>>0]|0;g=g+1|0;I=I+1|0;e=e-1|0}e=F&-4|0;C=e-64|0;while((g|0)<=(C|0)){Q[g>>2]=Q[I>>2];Q[g+4>>2]=Q[I+4>>2];Q[g+8>>2]=Q[I+8>>2];Q[g+12>>2]=Q[I+12>>2];Q[g+16>>2]=Q[I+16>>2];Q[g+20>>2]=Q[I+20>>2];Q[g+24>>2]=Q[I+24>>2];Q[g+28>>2]=Q[I+28>>2];Q[g+32>>2]=Q[I+32>>2];Q[g+36>>2]=Q[I+36>>2];Q[g+40>>2]=Q[I+40>>2];Q[g+44>>2]=Q[I+44>>2];Q[g+48>>2]=Q[I+48>>2];Q[g+52>>2]=Q[I+52>>2];Q[g+56>>2]=Q[I+56>>2];Q[g+60>>2]=Q[I+60>>2];g=g+64|0;I=I+64|0}while((g|0)<(e|0)){Q[g>>2]=Q[I>>2];g=g+4|0;I=I+4|0}}else{e=F-4|0;while((g|0)<(e|0)){t[g>>0]=t[I>>0]|0;t[g+1>>0]=t[I+1>>0]|0;t[g+2>>0]=t[I+2>>0]|0;t[g+3>>0]=t[I+3>>0]|0;g=g+4|0;I=I+4|0}}while((g|0)<(F|0)){t[g>>0]=t[I>>0]|0;g=g+1|0;I=I+1|0}return B|0}function CL(g){g=g|0;var I=0;I=t[r+(g&255)>>0]|0;if((I|0)<8)return I|0;I=t[r+(g>>8&255)>>0]|0;if((I|0)<8)return I+8|0;I=t[r+(g>>16&255)>>0]|0;if((I|0)<8)return I+16|0;return(t[r+(g>>>24)>>0]|0)+24|0}function QL(g,I,e,t,C){g=g|0;I=I|0;e=e|0;t=t|0;C=C|0;var F=0,B=0,n=0,U=0,s=0,i=0,c=0,A=0,l=0,a=0;i=g;U=I;s=U;B=e;A=t;n=A;if(!s){F=(C|0)!=0;if(!n){if(F){Q[C>>2]=(i>>>0)%(B>>>0);Q[C+4>>2]=0}A=0;C=(i>>>0)/(B>>>0)>>>0;return(V=A,C)|0}else{if(!F){A=0;C=0;return(V=A,C)|0}Q[C>>2]=g|0;Q[C+4>>2]=I&0;A=0;C=0;return(V=A,C)|0}}F=(n|0)==0;do{if(B){if(!F){F=(O(n|0)|0)-(O(s|0)|0)|0;if(F>>>0<=31){c=F+1|0;n=31-F|0;I=F-31>>31;B=c;g=i>>>(c>>>0)&I|s<<n;I=s>>>(c>>>0)&I;F=0;n=i<<n;break}if(!C){A=0;C=0;return(V=A,C)|0}Q[C>>2]=g|0;Q[C+4>>2]=U|I&0;A=0;C=0;return(V=A,C)|0}F=B-1|0;if(F&B|0){n=(O(B|0)|0)+33-(O(s|0)|0)|0;a=64-n|0;c=32-n|0;U=c>>31;l=n-32|0;I=l>>31;B=n;g=c-1>>31&s>>>(l>>>0)|(s<<c|i>>>(n>>>0))&I;I=I&s>>>(n>>>0);F=i<<a&U;n=(s<<a|i>>>(l>>>0))&U|i<<c&n-33>>31;break}if(C|0){Q[C>>2]=F&i;Q[C+4>>2]=0}if((B|0)==1){l=U|I&0;a=g|0|0;return(V=l,a)|0}else{a=CL(B|0)|0;l=s>>>(a>>>0)|0;a=s<<32-a|i>>>(a>>>0)|0;return(V=l,a)|0}}else{if(F){if(C|0){Q[C>>2]=(s>>>0)%(B>>>0);Q[C+4>>2]=0}l=0;a=(s>>>0)/(B>>>0)>>>0;return(V=l,a)|0}if(!i){if(C|0){Q[C>>2]=0;Q[C+4>>2]=(s>>>0)%(n>>>0)}l=0;a=(s>>>0)/(n>>>0)>>>0;return(V=l,a)|0}F=n-1|0;if(!(F&n)){if(C|0){Q[C>>2]=g|0;Q[C+4>>2]=F&s|I&0}l=0;a=s>>>((CL(n|0)|0)>>>0);return(V=l,a)|0}F=(O(n|0)|0)-(O(s|0)|0)|0;if(F>>>0<=30){I=F+1|0;n=31-F|0;B=I;g=s<<n|i>>>(I>>>0);I=s>>>(I>>>0);F=0;n=i<<n;break}if(!C){l=0;a=0;return(V=l,a)|0}Q[C>>2]=g|0;Q[C+4>>2]=U|I&0;l=0;a=0;return(V=l,a)|0}}while(0);if(!B){s=n;U=0;n=0}else{c=e|0|0;i=A|t&0;s=$G(c|0,i|0,-1,-1)|0;e=V;U=n;n=0;do{t=U;U=F>>>31|U<<1;F=n|F<<1;t=g<<1|t>>>31|0;A=g>>>31|I<<1|0;qG(s|0,e|0,t|0,A|0)|0;a=V;l=a>>31|((a|0)<0?-1:0)<<1;n=l&1;g=qG(t|0,A|0,l&c|0,(((a|0)<0?-1:0)>>31|((a|0)<0?-1:0)<<1)&i|0)|0;I=V;B=B-1|0}while((B|0)!=0);s=U;U=0}B=0;if(C|0){Q[C>>2]=g;Q[C+4>>2]=I}l=(F|0)>>>31|(s|B)<<1|(B<<1|F>>>31)&0|U;a=(F<<1|0>>>31)&-2|n;return(V=l,a)|0}function FL(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;return QL(g,I,e,t,0)|0}function BL(g){g=g|0;var I=0,e=0;e=g+15&-16|0;I=Q[i>>2]|0;g=I+e|0;if((e|0)>0&(g|0)<(I|0)|(g|0)<0){$()|0;Tg(12);return-1}Q[i>>2]=g;if((g|0)>(q()|0)?(_()|0)==0:0){Q[i>>2]=I;Tg(12);return-1}return I|0}function nL(g,I,e){g=g|0;I=I|0;e=e|0;var C=0;if((I|0)<(g|0)&(g|0)<(I+e|0)){C=g;I=I+e|0;g=g+e|0;while((e|0)>0){g=g-1|0;I=I-1|0;e=e-1|0;t[g>>0]=t[I>>0]|0}g=C}else tL(g,I,e)|0;return g|0}function UL(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;var C=0,F=0;F=l;l=l+16|0;C=F|0;QL(g,I,e,t,C)|0;l=F;return(V=Q[C+4>>2]|0,Q[C>>2]|0)|0}function sL(g){g=g|0;return(g&255)<<24|(g>>8&255)<<16|(g>>16&255)<<8|g>>>24|0}function iL(g,I,e,t,C,Q){g=g|0;I=I|0;e=e|0;t=t|0;C=C|0;Q=Q|0;UV[g&1](I|0,e|0,t|0,C|0,Q|0)}function cL(g,I,e){g=g|0;I=I|0;e=K(e);sV[g&1](I|0,K(e))}function AL(g,I,e){g=g|0;I=I|0;e=+e;iV[g&31](I|0,+e)}function lL(g,I,e,t){g=g|0;I=I|0;e=K(e);t=K(t);return K(cV[g&0](I|0,K(e),K(t)))}function aL(g,I){g=g|0;I=I|0;AV[g&127](I|0)}function rL(g,I,e){g=g|0;I=I|0;e=e|0;lV[g&31](I|0,e|0)}function oL(g,I){g=g|0;I=I|0;return aV[g&31](I|0)|0}function dL(g,I,e,t,C){g=g|0;I=I|0;e=+e;t=+t;C=C|0;rV[g&1](I|0,+e,+t,C|0)}function uL(g,I,e,t){g=g|0;I=I|0;e=+e;t=+t;oV[g&1](I|0,+e,+t)}function yL(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;return dV[g&7](I|0,e|0,t|0)|0}function bL(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;return+uV[g&1](I|0,e|0,t|0)}function ZL(g,I){g=g|0;I=I|0;return+yV[g&15](I|0)}function mL(g,I,e){g=g|0;I=I|0;e=+e;return bV[g&1](I|0,+e)|0}function xL(g,I,e){g=g|0;I=I|0;e=e|0;return ZV[g&15](I|0,e|0)|0}function RL(g,I,e,t,C,Q){g=g|0;I=I|0;e=e|0;t=+t;C=+C;Q=Q|0;mV[g&1](I|0,e|0,+t,+C,Q|0)}function SL(g,I,e,t,C,Q,F){g=g|0;I=I|0;e=e|0;t=t|0;C=C|0;Q=Q|0;F=F|0;xV[g&1](I|0,e|0,t|0,C|0,Q|0,F|0)}function GL(g,I,e){g=g|0;I=I|0;e=e|0;return+RV[g&7](I|0,e|0)}function LL(g){g=g|0;return SV[g&7]()|0}function VL(g,I,e,t,C,Q){g=g|0;I=I|0;e=e|0;t=t|0;C=C|0;Q=Q|0;return GV[g&1](I|0,e|0,t|0,C|0,Q|0)|0}function hL(g,I,e,t,C){g=g|0;I=I|0;e=e|0;t=t|0;C=+C;LV[g&1](I|0,e|0,t|0,+C)}function DL(g,I,e,t,C,Q,F){g=g|0;I=I|0;e=e|0;t=K(t);C=C|0;Q=K(Q);F=F|0;VV[g&1](I|0,e|0,K(t),C|0,K(Q),F|0)}function pL(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;hV[g&15](I|0,e|0,t|0)}function EL(g){g=g|0;DV[g&0]()}function NL(g,I,e,t){g=g|0;I=I|0;e=e|0;t=+t;pV[g&15](I|0,e|0,+t)}function WL(g,I,e){g=g|0;I=+I;e=+e;return EV[g&1](+I,+e)|0}function fL(g,I,e,t,C){g=g|0;I=I|0;e=e|0;t=t|0;C=C|0;NV[g&15](I|0,e|0,t|0,C|0)}function XL(g,I,e,t,C){g=g|0;I=I|0;e=e|0;t=t|0;C=C|0;j(0)}function JL(g,I){g=g|0;I=K(I);j(1)}function vL(g,I){g=g|0;I=+I;j(2)}function kL(g,I,e){g=g|0;I=K(I);e=K(e);j(3);return iI}function HL(g){g=g|0;j(4)}function ML(g,I){g=g|0;I=I|0;j(5)}function YL(g){g=g|0;j(6);return 0}function wL(g,I,e,t){g=g|0;I=+I;e=+e;t=t|0;j(7)}function TL(g,I,e){g=g|0;I=+I;e=+e;j(8)}function zL(g,I,e){g=g|0;I=I|0;e=e|0;j(9);return 0}function OL(g,I,e){g=g|0;I=I|0;e=e|0;j(10);return 0.0}function KL(g){g=g|0;j(11);return 0.0}function jL(g,I){g=g|0;I=+I;j(12);return 0}function PL(g,I){g=g|0;I=I|0;j(13);return 0}function _L(g,I,e,t,C){g=g|0;I=I|0;e=+e;t=+t;C=C|0;j(14)}function qL(g,I,e,t,C,Q){g=g|0;I=I|0;e=e|0;t=t|0;C=C|0;Q=Q|0;j(15)}function $L(g,I){g=g|0;I=I|0;j(16);return 0.0}function gV(){j(17);return 0}function IV(g,I,e,t,C){g=g|0;I=I|0;e=e|0;t=t|0;C=C|0;j(18);return 0}function eV(g,I,e,t){g=g|0;I=I|0;e=e|0;t=+t;j(19)}function tV(g,I,e,t,C,Q){g=g|0;I=I|0;e=K(e);t=t|0;C=K(C);Q=Q|0;j(20)}function CV(g,I,e){g=g|0;I=I|0;e=e|0;j(21)}function QV(){j(22)}function FV(g,I,e){g=g|0;I=I|0;e=+e;j(23)}function BV(g,I){g=+g;I=+I;j(24);return 0}function nV(g,I,e,t){g=g|0;I=I|0;e=e|0;t=t|0;j(25)}var UV=[XL,ZZ];var sV=[JL,wC];var iV=[vL,rQ,oQ,dQ,uQ,yQ,bQ,ZQ,xQ,RQ,GQ,LQ,VQ,hQ,DQ,pQ,EQ,NQ,WQ,vL,vL,vL,vL,vL,vL,vL,vL,vL,vL,vL,vL,vL];var cV=[kL];var AV=[HL,kG,An,ln,an,Oc,Kc,jc,oy,dy,uy,CZ,QZ,FZ,QS,FS,BS,yI,jC,gQ,mQ,SQ,XF,JF,OB,mn,Hn,cU,pU,es,Rs,ws,si,pi,_i,rc,Wc,aA,NA,$A,dl,Xl,ea,xa,Ma,Qr,Sr,HC,no,Lo,Po,od,Wd,Cu,ru,uu,vu,Mu,Fy,Zy,Ry,Ty,cb,xn,Vm,cx,hx,Kx,uR,XR,jR,qR,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL,HL];var lV=[ML,IQ,eQ,QQ,FQ,BQ,nQ,UQ,sQ,AQ,lQ,aQ,qQ,IF,eF,tF,CF,QF,FF,iF,aF,OF,La,Ta,bd,pm,yb,$m,ML,ML,ML,ML];var aV=[YL,OS,KC,vQ,YQ,wQ,TQ,zQ,OQ,KQ,PQ,_Q,cF,AF,vF,Vr,vd,Ky,Xm,vm,YL,YL,YL,YL,YL,YL,YL,YL,YL,YL,YL,YL];var rV=[wL,kF];var oV=[TL,Uy];var dV=[zL,KS,jS,IG,Fs,uA,co,qx];var uV=[OL,Ic];var yV=[KL,$Q,gF,BF,HF,MF,YF,wF,TF,zF,KL,KL,KL,KL,KL,KL];var bV=[jL,cu];var ZV=[PL,HG,lF,$B,rU,Vs,Ks,vc,JA,Ur,TC,Nx,PL,PL,PL,PL];var mV=[_L,Tn];var xV=[qL,mR];var RV=[$L,nF,KF,jF,PF,yc,$L,$L];var SV=[gV,_F,zC,vC,xu,zu,hy,eS];var GV=[IV,Wt];var LV=[eV,Zl];var VV=[tV,oF];var hV=[CV,kQ,jQ,UF,sF,fU,li,Hl,Fa,YC,_Z,rx,HR,CV,CV,CV];var DV=[QV];var pV=[FV,tQ,CQ,iQ,cQ,fQ,XQ,JQ,tl,po,Bu,FV,FV,FV,FV,FV];var EV=[BV,ly];var NV=[nV,fi,Xr,gd,Kd,hu,qu,Xy,ob,wm,AS,nV,nV,nV,nV,nV];return{_llvm_bswap_i32:sL,dynCall_idd:WL,dynCall_i:LL,_i64Subtract:qG,___udivdi3:FL,dynCall_vif:cL,setThrew:rI,dynCall_viii:pL,_bitshift64Lshr:eL,_bitshift64Shl:IL,dynCall_vi:aL,dynCall_viiddi:RL,dynCall_diii:bL,dynCall_iii:xL,_memset:gL,_sbrk:BL,_memcpy:tL,__GLOBAL__sub_I_Yoga_cpp:JC,dynCall_vii:rL,___uremdi3:UL,dynCall_vid:AL,stackAlloc:cI,_nbind_init:LS,getTempRet0:dI,dynCall_di:ZL,dynCall_iid:mL,setTempRet0:oI,_i64Add:$G,dynCall_fiff:lL,dynCall_iiii:yL,_emscripten_get_global_libc:zS,dynCall_viid:NL,dynCall_viiid:hL,dynCall_viififi:DL,dynCall_ii:oL,__GLOBAL__sub_I_Binding_cc:ym,dynCall_viiii:fL,dynCall_iiiiii:VL,stackSave:AI,dynCall_viiiii:iL,__GLOBAL__sub_I_nbind_cc:qF,dynCall_vidd:uL,_free:TS,runPostSets:_G,dynCall_viiiiii:SL,establishStackSpace:aI,_memmove:nL,stackRestore:lI,_malloc:wS,__GLOBAL__sub_I_common_cc:tb,dynCall_viddi:dL,dynCall_dii:GL,dynCall_v:EL}}(Module.asmGlobalArg,Module.asmLibraryArg,buffer),_llvm_bswap_i32=Module._llvm_bswap_i32=asm._llvm_bswap_i32,getTempRet0=Module.getTempRet0=asm.getTempRet0,___udivdi3=Module.___udivdi3=asm.___udivdi3,setThrew=Module.setThrew=asm.setThrew,_bitshift64Lshr=Module._bitshift64Lshr=asm._bitshift64Lshr,_bitshift64Shl=Module._bitshift64Shl=asm._bitshift64Shl,_memset=Module._memset=asm._memset,_sbrk=Module._sbrk=asm._sbrk,_memcpy=Module._memcpy=asm._memcpy,stackAlloc=Module.stackAlloc=asm.stackAlloc,___uremdi3=Module.___uremdi3=asm.___uremdi3,_nbind_init=Module._nbind_init=asm._nbind_init,_i64Subtract=Module._i64Subtract=asm._i64Subtract,setTempRet0=Module.setTempRet0=asm.setTempRet0,_i64Add=Module._i64Add=asm._i64Add,_emscripten_get_global_libc=Module._emscripten_get_global_libc=asm._emscripten_get_global_libc,__GLOBAL__sub_I_Yoga_cpp=Module.__GLOBAL__sub_I_Yoga_cpp=asm.__GLOBAL__sub_I_Yoga_cpp,__GLOBAL__sub_I_Binding_cc=Module.__GLOBAL__sub_I_Binding_cc=asm.__GLOBAL__sub_I_Binding_cc,stackSave=Module.stackSave=asm.stackSave,__GLOBAL__sub_I_nbind_cc=Module.__GLOBAL__sub_I_nbind_cc=asm.__GLOBAL__sub_I_nbind_cc,_free=Module._free=asm._free,runPostSets=Module.runPostSets=asm.runPostSets,establishStackSpace=Module.establishStackSpace=asm.establishStackSpace,_memmove=Module._memmove=asm._memmove,stackRestore=Module.stackRestore=asm.stackRestore,_malloc=Module._malloc=asm._malloc,__GLOBAL__sub_I_common_cc=Module.__GLOBAL__sub_I_common_cc=asm.__GLOBAL__sub_I_common_cc,dynCall_viiiii=Module.dynCall_viiiii=asm.dynCall_viiiii,dynCall_vif=Module.dynCall_vif=asm.dynCall_vif,dynCall_vid=Module.dynCall_vid=asm.dynCall_vid,dynCall_fiff=Module.dynCall_fiff=asm.dynCall_fiff,dynCall_vi=Module.dynCall_vi=asm.dynCall_vi,dynCall_vii=Module.dynCall_vii=asm.dynCall_vii,dynCall_ii=Module.dynCall_ii=asm.dynCall_ii,dynCall_viddi=Module.dynCall_viddi=asm.dynCall_viddi,dynCall_vidd=Module.dynCall_vidd=asm.dynCall_vidd,dynCall_iiii=Module.dynCall_iiii=asm.dynCall_iiii,dynCall_diii=Module.dynCall_diii=asm.dynCall_diii,dynCall_di=Module.dynCall_di=asm.dynCall_di,dynCall_iid=Module.dynCall_iid=asm.dynCall_iid,dynCall_iii=Module.dynCall_iii=asm.dynCall_iii,dynCall_viiddi=Module.dynCall_viiddi=asm.dynCall_viiddi,dynCall_viiiiii=Module.dynCall_viiiiii=asm.dynCall_viiiiii,dynCall_dii=Module.dynCall_dii=asm.dynCall_dii,dynCall_i=Module.dynCall_i=asm.dynCall_i,dynCall_iiiiii=Module.dynCall_iiiiii=asm.dynCall_iiiiii,dynCall_viiid=Module.dynCall_viiid=asm.dynCall_viiid,dynCall_viififi=Module.dynCall_viififi=asm.dynCall_viififi,dynCall_viii=Module.dynCall_viii=asm.dynCall_viii,dynCall_v=Module.dynCall_v=asm.dynCall_v,dynCall_viid=Module.dynCall_viid=asm.dynCall_viid,dynCall_idd=Module.dynCall_idd=asm.dynCall_idd,dynCall_viiii=Module.dynCall_viiii=asm.dynCall_viiii,initialStackTop;function ExitStatus(g){this.name="ExitStatus",this.message="Program terminated with exit("+g+")",this.status=g}Runtime.stackAlloc=Module.stackAlloc,Runtime.stackSave=Module.stackSave,Runtime.stackRestore=Module.stackRestore,Runtime.establishStackSpace=Module.establishStackSpace,Runtime.setTempRet0=Module.setTempRet0,Runtime.getTempRet0=Module.getTempRet0,Module.asm=asm,ExitStatus.prototype=new Error,ExitStatus.prototype.constructor=ExitStatus;var preloadStartTime=null,calledMain=!1;function run(g){function I(){Module.calledRun||(Module.calledRun=!0,ABORT||(ensureInitRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),Module._main&&shouldRunNow&&Module.callMain(g),postRun()))}g=g||Module.arguments,null===preloadStartTime&&(preloadStartTime=Date.now()),runDependencies>0||(preRun(),runDependencies>0||Module.calledRun||(Module.setStatus?(Module.setStatus("Running..."),setTimeout((function(){setTimeout((function(){Module.setStatus("")}),1),I()}),1)):I()))}function exit(g,I){I&&Module.noExitRuntime||(Module.noExitRuntime||(ABORT=!0,EXITSTATUS=g,STACKTOP=initialStackTop,exitRuntime(),Module.onExit&&Module.onExit(g)),ENVIRONMENT_IS_NODE&&process.exit(g),Module.quit(g,new ExitStatus(g)))}dependenciesFulfilled=function g(){Module.calledRun||run(),Module.calledRun||(dependenciesFulfilled=g)},Module.callMain=Module.callMain=function(g){g=g||[],ensureInitRuntime();var I=g.length+1;function e(){for(var g=0;g<3;g++)t.push(0)}var t=[allocate(intArrayFromString(Module.thisProgram),"i8",ALLOC_NORMAL)];e();for(var C=0;C<I-1;C+=1)t.push(allocate(intArrayFromString(g[C]),"i8",ALLOC_NORMAL)),e();t.push(0),t=allocate(t,"i32",ALLOC_NORMAL);try{exit(Module._main(I,t,0),!0)}catch(F){if(F instanceof ExitStatus)return;if("SimulateInfiniteLoop"==F)return void(Module.noExitRuntime=!0);var Q=F;F&&"object"===typeof F&&F.stack&&(Q=[F,F.stack]),Module.printErr("exception thrown: "+Q),Module.quit(1,F)}finally{calledMain=!0}},Module.run=Module.run=run,Module.exit=Module.exit=exit;var abortDecorators=[];function abort(g){Module.onAbort&&Module.onAbort(g),void 0!==g?(Module.print(g),Module.printErr(g),g=JSON.stringify(g)):g="",ABORT=!0,EXITSTATUS=1;var I="abort("+g+") at "+stackTrace()+"\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.";throw abortDecorators&&abortDecorators.forEach((function(e){I=e(I,g)})),I}if(Module.abort=Module.abort=abort,Module.preInit)for("function"==typeof Module.preInit&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();var shouldRunNow=!0;Module.noInitialRun&&(shouldRunNow=!1),run()},void 0===(__WEBPACK_AMD_DEFINE_RESULT__=function(){return wrapper}.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__=[]))||(module.exports=__WEBPACK_AMD_DEFINE_RESULT__)}).call(this,__webpack_require__(92),__webpack_require__(103).Buffer)},function(g,I,e){"use strict";var t=e(37).default;I.__esModule=!0,I.default=void 0;var C=t(e(349)),Q=function(g){var I,e=null===(I=g.style)||void 0===I?void 0:I.height,t=(0,C.default)(g),Q=t.paddingTop;return e-t.paddingBottom-Q};I.default=Q},function(g,I,e){"use strict";var t=e(37).default,C=e(43).default;I.__esModule=!0,I.default=void 0;var Q=t(e(1621)),F=C(e(20)),B=e(53),n=t(e(1622)),U=["style","children"],s=F.is(String),i=F.is(Number),c=F.complement(s),A=function g(I){if(!I)return null;if(s(I)||i(I))return{type:B.TextInstance,value:""+I};if(c(I.type))return g(I.type(I.props));var e=I.type,t=I.props,C=t.style,A=void 0===C?{}:C,l=t.children,a=void 0===l?[]:l;return{type:e,style:A,props:(0,Q.default)(t,U),box:{},children:F.compose(F.map(g),n.default)(a)}};I.default=A},function(g,I){g.exports=function(g,I){if(null==g)return{};var e,t,C={},Q=Object.keys(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||(C[e]=g[e]);return C},g.exports.__esModule=!0,g.exports.default=g.exports},function(g,I,e){"use strict";var t=e(43).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=C.complement(C.is(Array)),F=C.when(Q,(function(g){return[g]}));I.default=F},function(g,I,e){"use strict";var t=e(37).default,C=e(43).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(802)),B=t(e(1624)),n=Q.pathOr(!1,["props","break"]),U=Q.path(["props","minPresenceAhead"]),s=function(g){return function(I){return Math.min(g.box.height,I)}},i=function(g,I,e){var t=U(g),C=function(g,I){for(var e=0,t=0;t<g.length;t+=1){var C=g[t];if(C.box){var Q=I>C.box.top,F=C.props.presenceAhead||s(C);C&&Q&&(e+=F(I-C.box.top))}}return e}(I,e),Q=(0,B.default)(I),i=e<g.box.top+g.box.height,c=(0,F.default)(g);return n(g)||!c&&i||t<Q&&C<t};I.default=i},function(g,I,e){"use strict";var t=e(43).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=function(g){var I=0,e=1/0;if(C.isEmpty(g))return 0;for(var t=0;t<g.length;t+=1){var Q=g[t];e=Math.min(e,Q.box.top),I=Math.max(I,Q.box.top+Q.box.height)}return I-e};I.default=Q},function(g,I,e){"use strict";var t=e(43).default,C=e(37).default;I.__esModule=!0,I.default=void 0;var Q=C(e(348)),F=t(e(20)),B=t(e(53)),n=C(e(550)),U=e(800),s=C(e(1626)),i=C(e(797)),c=[s.default,U.embedEmojis],A=F.propEq("type"),l=A(B.Image),a=A(B.TextInstance),r=F.curryN(2,(function(g,I){var e=function g(I,e,t,C){var F,B;if(void 0===C&&(C=0),!e)return[{string:""}];for(var n=[],U=e.style,s=U.color,A=void 0===s?"black":s,r=U.fontFamily,o=void 0===r?"Helvetica":r,d=U.fontWeight,u=U.fontStyle,y=U.fontSize,b=void 0===y?18:y,Z=U.textAlign,m=void 0===Z?"left":Z,x=U.lineHeight,R=U.textDecoration,S=U.textDecorationColor,G=U.textDecorationStyle,L=U.textTransform,V=U.letterSpacing,h=U.textIndent,D=U.opacity,p={fontFamily:o,fontWeight:d,fontStyle:u},E=I?I.getFont(p):null,N={font:E?E.data:o,color:A,opacity:D,fontSize:b,backgroundColor:0===C?null:e.style.backgroundColor,align:m,indent:h,characterSpacing:V,strikeStyle:G,underlineStyle:G,underline:"underline"===R||"underline line-through"===R||"line-through underline"===R,strike:"line-through"===R||"underline line-through"===R||"line-through underline"===R,strikeColor:S||A,underlineColor:S||A,link:t||(null===(F=e.props)||void 0===F?void 0:F.src)||(null===(B=e.props)||void 0===B?void 0:B.href),lineHeight:x?x*b:null},W=0;W<e.children.length;W+=1){var f=e.children[W];if(l(f))n.push({string:String.fromCharCode(65532),attributes:(0,Q.default)({},N,{attachment:{width:f.style.width||b,height:f.style.height||b,image:f.image.data}})});else if(a(f))n.push({string:(0,i.default)(f.value,L),attributes:N});else if(f){var X;(X=n).push.apply(X,g(I,f,N.link,C+1))}}for(var J=0;J<c.length;J+=1){n=(0,c[J])(n)}return n}(g,I);return n.default.fromFragments(e)}));I.default=r},function(g,I,e){"use strict";I.__esModule=!0,I.default=void 0;var t=[8232,8233],C=function(g){return g.map((function(g){var I,e=(I=g.attributes.font,t.reduce((function(g,e){return I&&I.hasGlyphForCodePoint&&I.hasGlyphForCodePoint(e)?g:[].concat(g,[String.fromCharCode(e)])}),[])),C=new RegExp(e.join("|"));return{string:g.string.replace(C,""),attributes:g.attributes}}))};I.default=C},function(g,I,e){"use strict";I.__esModule=!0,I.default=void 0;var t=function(g){var I=g._yogaNode;return{top:(null===I||void 0===I?void 0:I.getComputedTop())||0,right:(null===I||void 0===I?void 0:I.getComputedRight())||0,bottom:(null===I||void 0===I?void 0:I.getComputedBottom())||0,left:(null===I||void 0===I?void 0:I.getComputedLeft())||0}};I.default=t},function(g,I,e){"use strict";I.__esModule=!0,I.default=void 0;var t={width:0,height:0},C=function(g){var I=g._yogaNode;return I?{width:I.getComputedWidth(),height:I.getComputedHeight()}:t};I.default=C},function(g,I,e){"use strict";var t=e(37).default;I.__esModule=!0,I.default=void 0;var C=t(e(104)),Q=function(g,I){return g?g.getComputedBorder(I):0},F=function(g){var I=g._yogaNode;return{borderTopWidth:Q(I,C.default.EDGE_TOP),borderRightWidth:Q(I,C.default.EDGE_RIGHT),borderBottomWidth:Q(I,C.default.EDGE_BOTTOM),borderLeftWidth:Q(I,C.default.EDGE_LEFT)}};I.default=F},function(g,I,e){"use strict";var t=e(37).default;I.__esModule=!0,I.default=void 0;var C=t(e(104)),Q=function(g){return function(I){var e=I._yogaNode;return e&&e.setDisplay("none"===g?C.default.DISPLAY_NONE:C.default.DISPLAY_FLEX),I}};I.default=Q},function(g,I,e){"use strict";var t=e(37).default,C=e(43).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(104)),B=function(g){return function(I){var e=I._yogaNode;if(!Q.isNil(g)&&e){var t=Q.cond([[Q.equals("hidden"),Q.always(F.default.OVERFLOW_HIDDEN)],[Q.equals("scroll"),Q.always(F.default.OVERFLOW_SCROLL)],[Q.T,Q.always(F.default.OVERFLOW_VISIBLE)]])(g);e.setOverflow(t)}return I}};I.default=B},function(g,I,e){"use strict";var t=e(37).default,C=e(43).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(104)),B=function(g){return function(I){var e=I._yogaNode;if(e){var t=Q.cond([[Q.equals("wrap"),Q.always(F.default.WRAP_WRAP)],[Q.equals("wrap-reverse"),Q.always(F.default.WRAP_WRAP_REVERSE)],[Q.T,Q.always(F.default.WRAP_NO_WRAP)]])(g);e.setFlexWrap(t)}return I}};I.default=B},function(g,I,e){"use strict";var t=e(37).default,C=e(43).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(236)),B=Q.compose((0,F.default)("flexGrow"),Q.defaultTo(0));I.default=B},function(g,I,e){"use strict";var t=e(37).default;I.__esModule=!0,I.default=void 0;var C=(0,t(e(236)).default)("flexBasis");I.default=C},function(g,I,e){"use strict";var t=e(37).default;I.__esModule=!0,I.default=void 0;var C=(0,t(e(553)).default)("self");I.default=C},function(g,I,e){"use strict";var t=e(37).default;I.__esModule=!0,I.default=void 0;var C=(0,t(e(553)).default)("items");I.default=C},function(g,I,e){"use strict";var t=e(37).default,C=e(43).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(236)),B=Q.compose((0,F.default)("flexShrink"),Q.defaultTo(1));I.default=B},function(g,I,e){"use strict";var t=e(43).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=function(g){return function(I){var e=I._yogaNode;return!C.isNil(g)&&e&&e.setAspectRatio(g),I}};I.default=Q},function(g,I,e){"use strict";var t=e(37).default;I.__esModule=!0,I.default=void 0;var C=(0,t(e(553)).default)("content");I.default=C},function(g,I,e){"use strict";var t=e(37).default,C=e(43).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(104)),B=function(g){return function(I){var e=I._yogaNode;return!Q.isNil(g)&&e&&e.setPositionType("absolute"===g?F.default.POSITION_TYPE_ABSOLUTE:F.default.POSITION_TYPE_RELATIVE),I}};I.default=B},function(g,I,e){"use strict";var t=e(37).default,C=e(43).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(104)),B=Q.equals("row"),n=Q.equals("row-reverse"),U=Q.equals("column-reverse"),s=function(g){return Q.tap((function(I){var e=I._yogaNode;if(e){var t=Q.cond([[B,Q.always(F.default.FLEX_DIRECTION_ROW)],[n,Q.always(F.default.FLEX_DIRECTION_ROW_REVERSE)],[U,Q.always(F.default.FLEX_DIRECTION_COLUMN_REVERSE)],[Q.T,Q.always(F.default.FLEX_DIRECTION_COLUMN)]])(g);e.setFlexDirection(t)}}))};I.default=s},function(g,I,e){"use strict";var t=e(37).default,C=e(43).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(104)),B=function(g){return function(I){var e=I._yogaNode;if(!Q.isNil(g)&&e){var t=Q.cond([[Q.equals("center"),Q.always(F.default.JUSTIFY_CENTER)],[Q.equals("flex-end"),Q.always(F.default.JUSTIFY_FLEX_END)],[Q.equals("space-between"),Q.always(F.default.JUSTIFY_SPACE_BETWEEN)],[Q.equals("space-around"),Q.always(F.default.JUSTIFY_SPACE_AROUND)],[Q.equals("space-evenly"),Q.always(F.default.JUSTIFY_SPACE_EVENLY)],[Q.T,Q.always(F.default.JUSTIFY_FLEX_START)]])(g);e.setJustifyContent(t)}return I}};I.default=B},function(g,I,e){"use strict";var t=e(37).default;I.__esModule=!0,I.setMarginTop=I.setMarginRight=I.setMarginLeft=I.setMarginBottom=I.setMargin=I.default=void 0;var C=t(e(104)),Q=t(e(236)),F=(0,Q.default)("margin",C.default.EDGE_TOP);I.setMarginTop=F;var B=(0,Q.default)("margin",C.default.EDGE_RIGHT);I.setMarginRight=B;var n=(0,Q.default)("margin",C.default.EDGE_BOTTOM);I.setMarginBottom=n;var U=(0,Q.default)("margin",C.default.EDGE_LEFT);I.setMarginLeft=U;var s=function(g){return function(I){return F(g)(I),B(g)(I),n(g)(I),U(g)(I),I}};I.setMargin=s;var i=s;I.default=i},function(g,I,e){"use strict";var t=e(37).default;I.__esModule=!0,I.setPaddingTop=I.setPaddingRight=I.setPaddingLeft=I.setPaddingBottom=I.setPadding=I.default=void 0;var C=t(e(104)),Q=t(e(236)),F=(0,Q.default)("padding",C.default.EDGE_TOP);I.setPaddingTop=F;var B=(0,Q.default)("padding",C.default.EDGE_RIGHT);I.setPaddingRight=B;var n=(0,Q.default)("padding",C.default.EDGE_BOTTOM);I.setPaddingBottom=n;var U=(0,Q.default)("padding",C.default.EDGE_LEFT);I.setPaddingLeft=U;var s=function(g){return function(I){return F(g)(I),B(g)(I),n(g)(I),U(g)(I),I}};I.setPadding=s;var i=s;I.default=i},function(g,I,e){"use strict";var t=e(37).default;I.__esModule=!0,I.setBorderTop=I.setBorderRight=I.setBorderLeft=I.setBorderBottom=I.setBorder=I.default=void 0;var C=t(e(104)),Q=t(e(236)),F=(0,Q.default)("border",C.default.EDGE_TOP);I.setBorderTop=F;var B=(0,Q.default)("border",C.default.EDGE_RIGHT);I.setBorderRight=B;var n=(0,Q.default)("border",C.default.EDGE_BOTTOM);I.setBorderBottom=n;var U=(0,Q.default)("border",C.default.EDGE_LEFT);I.setBorderLeft=U;var s=function(g){return function(I){return F(g)(I),B(g)(I),n(g)(I),U(g)(I),I}};I.setBorder=s;var i=s;I.default=i},function(g,I,e){"use strict";var t=e(37).default;I.__esModule=!0,I.setPositionTop=I.setPositionRight=I.setPositionLeft=I.setPositionBottom=I.setPosition=I.default=void 0;var C=t(e(104)),Q=t(e(236)),F=(0,Q.default)("position",C.default.EDGE_TOP);I.setPositionTop=F;var B=(0,Q.default)("position",C.default.EDGE_RIGHT);I.setPositionRight=B;var n=(0,Q.default)("position",C.default.EDGE_BOTTOM);I.setPositionBottom=n;var U=(0,Q.default)("position",C.default.EDGE_LEFT);I.setPositionLeft=U;var s=function(g){return function(I){return F(g)(I),B(g)(I),n(g)(I),U(g)(I),I}};I.setPosition=s;var i=s;I.default=i},function(g,I,e){"use strict";var t=e(37).default;I.__esModule=!0,I.setWidth=I.setMinWidth=I.setMinHeight=I.setMaxWidth=I.setMaxHeight=I.setHeight=void 0;var C=t(e(236)),Q=(0,C.default)("width");I.setWidth=Q;var F=(0,C.default)("minWidth");I.setMinWidth=F;var B=(0,C.default)("maxWidth");I.setMaxWidth=B;var n=(0,C.default)("height");I.setHeight=n;var U=(0,C.default)("minHeight");I.setMinHeight=U;var s=(0,C.default)("maxHeight");I.setMaxHeight=s},function(g,I,e){"use strict";var t=e(37).default,C=e(43).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(104)),B=Q.curryN(6,(function(g,I,e,t,C,Q){var B,n=((B=I.props.viewBox)?(B.maxX-B.minX)/(B.maxY-B.minY):null)||1;return t===F.default.MEASURE_MODE_EXACTLY||t===F.default.MEASURE_MODE_AT_MOST?{width:e,height:e/n}:Q===F.default.MEASURE_MODE_EXACTLY?{width:C*n}:{}}));I.default=B},function(g,I,e){"use strict";var t=e(37).default,C=e(43).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(104)),B=t(e(804)),n=t(e(1650)),U=t(e(1651)),s={center:.5,right:1},i=Q.curryN(7,(function(g,I,e,t,C,Q){if(C===F.default.MEASURE_MODE_EXACTLY)return I.lines||(I.lines=(0,B.default)(I,t,Q,e)),{height:(0,U.default)(I)};if(C===F.default.MEASURE_MODE_AT_MOST){var i,c=s[null===(i=I.style)||void 0===i?void 0:i.textAlign]||0;return I.lines||(I.lines=(0,B.default)(I,t,Q,e),I.alignOffset=(t-(0,n.default)(I))*c),{height:(0,U.default)(I),width:Math.min(t,(0,n.default)(I))}}return{}}));I.default=i},function(g,I,e){"use strict";var t=e(37).default;I.__esModule=!0,I.default=void 0;var C=t(e(550)),Q=function(g){return g.lines?Math.max.apply(Math,g.lines.map((function(g){return C.default.advanceWidth(g)}))):-1};I.default=Q},function(g,I,e){"use strict";I.__esModule=!0,I.default=void 0;var t=function(g){return g.lines?g.lines.reduce((function(g,I){return g+I.box.height}),0):-1};I.default=t},function(g,I,e){"use strict";var t=e(37).default,C=e(43).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(104)),B=t(e(1653)),n=t(e(552)),U=t(e(349)),s=t(e(807)),i=Q.curryN(6,(function(g,I,e,t,C,Q){var i=(0,B.default)(I),c=(0,n.default)(I),A=(0,U.default)(g),l=(0,s.default)(g)?1/0:g.box.height-A.paddingTop-A.paddingBottom-c.marginTop-c.marginBottom-10;if(!I.image)return{width:0,height:0};if(t===F.default.MEASURE_MODE_EXACTLY&&Q===F.default.MEASURE_MODE_UNDEFINED){var a=e/i;return{height:Math.min(l,a)}}if(Q===F.default.MEASURE_MODE_EXACTLY&&(t===F.default.MEASURE_MODE_AT_MOST||t===F.default.MEASURE_MODE_UNDEFINED))return{width:Math.min(C*i,e)};if(t===F.default.MEASURE_MODE_EXACTLY&&Q===F.default.MEASURE_MODE_AT_MOST){var r=e/i;return{height:Math.min(C,l,r)}}return t===F.default.MEASURE_MODE_AT_MOST&&Q===F.default.MEASURE_MODE_AT_MOST?i>1?{width:e,height:Math.min(e/i,C)}:{height:C,width:Math.min(C*i,e)}:{height:C,width:e}}));I.default=i},function(g,I,e){"use strict";I.__esModule=!0,I.default=void 0;var t=function(g){var I;return null!==(I=g.image)&&void 0!==I&&I.data?g.image.width/g.image.height:1};I.default=t},function(g,I,e){"use strict";var t=e(37).default,C=e(43).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(552)),B=t(e(349)),n=t(e(807)),U=Q.reduce(Q.max,-1/0),s=Q.curryN(6,(function(g,I){var e=(0,F.default)(I),t=(0,B.default)(g),C=(0,n.default)(g)?1/0:g.box.height-t.paddingTop-t.paddingBottom-e.marginTop-e.marginBottom-10,s=function(){var g={},I=[],e=function(){return g},t=function(g,e){return I.push([g,e])},C=Q.compose(e,t),F=function(I,e,C,Q){return t(I,e),t(I+C,e),t(I,e+Q),t(I+C,e+Q),g},B=function(I,e,C,Q){return t(I-C,e-(Q=Q||C)),t(I+C,e-Q),t(I+C,e+Q),t(I-C,e+Q),g};return g.rect=F,g.moveTo=C,g.lineTo=C,g.circle=B,g.polygon=function(){return I.push.apply(I,arguments),e()},g.ellipse=B,g.roundedRect=F,g.text=e,g.path=e,g.lineWidth=e,g.bezierCurveTo=e,g.quadraticCurveTo=e,g.scale=e,g.rotate=e,g.translate=e,g.dash=e,g.clip=e,g.save=e,g.fill=e,g.font=e,g.stroke=e,g.lineCap=e,g.opacity=e,g.restore=e,g.lineJoin=e,g.fontSize=e,g.fillColor=e,g.miterLimit=e,g.strokeColor=e,g.fillOpacity=e,g.strokeOpacity=e,g.linearGradient=e,g.radialGradient=e,g.getWidth=function(){return Q.compose(U,Q.pluck(0))(I)},g.getHeight=function(){return Q.compose(U,Q.pluck(1))(I)},g}();I.props.paint(s);var i=s.getWidth();return{height:Math.min(C,s.getHeight()),width:i}}));I.default=s},function(g,I,e){"use strict";var t=e(37).default,C=e(43).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(291)),B=function(g){return function(I){var e=(0,F.default)(I);return e?e.percent*g.width:I}},n=function(g){return function(I){var e=(0,F.default)(I);return e?e.percent*g.height:I}},U=Q.evolve({children:Q.map((function(g){var I=g.style;return Q.evolve({style:Q.evolve({paddingTop:n(I),paddingLeft:B(I),paddingRight:B(I),paddingBottom:n(I)})})(g)}))});I.default=U},function(g,I,e){"use strict";var t=e(37).default,C=e(43).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(291)),B=function(g){return function(I){var e=(0,F.default)(I);return e?e.percent*Math.min(g.width,g.height):I}},n=function g(I){return Q.evolve({children:Q.map(g),style:Q.evolve({borderTopLeftRadius:B(I.box),borderTopRightRadius:B(I.box),borderBottomRightRadius:B(I.box),borderBottomLeftRadius:B(I.box)})})(I)};I.default=n},function(g,I,e){"use strict";var t=e(37).default,C=e(43).default;I.__esModule=!0,I.default=void 0;var Q=C(e(20)),F=t(e(291)),B=function(g){return function(I){var e=(0,F.default)(I);return e?e.percent*g:I}},n=Q.hasPath(["style","height"]),U=function(g){return function(I){if(n(g)){var e=function(g){return Q.path(["style","height"],g)-Q.pathOr(0,["style","paddingTop"],g)-Q.pathOr(0,["style","paddingBottom"],g)}(g);return Q.evolve({style:{height:B(e)}})(I)}return I}},s=Q.evolve({children:Q.map((function(g){return Q.evolve({children:Q.map(U(g))})(g)}))});I.default=s},function(g,I,e){"use strict";var t=e(43).default;I.__esModule=!0,I.default=void 0;var C=t(e(20)),Q=t(e(53)),F=C.propEq("type"),B=F(Q.Link),n=F(Q.Text),U=F(Q.TextInstance),s=C.hasPath(["props","render"]),i=C.either(n,U),c=function(g){return B(g)?s(g)?C.assoc("type",Q.Text,g):function(g){var I=g.children||[];return!!I.every(U)||!I.every(n)&&I.every(i)}(g)?function(g){var I={type:Q.Text,props:{},style:{},box:{},children:g.children};return C.assoc("children",[I],g)}(g):g:g},A=function g(I){var e=C.compose(c,g);return C.evolve({children:C.map(e)})(I)};I.default=A},function(g,I,e){g.exports=function I(t){"use strict";var C=e(139),Q=e(0),F=e(462);function B(g){for(var I="https://reactjs.org/docs/error-decoder.html?invariant="+g,e=1;e<arguments.length;e++)I+="&args[]="+encodeURIComponent(arguments[e]);return"Minified React error #"+g+"; visit "+I+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var n=Q.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;n.hasOwnProperty("ReactCurrentDispatcher")||(n.ReactCurrentDispatcher={current:null}),n.hasOwnProperty("ReactCurrentBatchConfig")||(n.ReactCurrentBatchConfig={suspense:null});var U="function"===typeof Symbol&&Symbol.for,s=U?Symbol.for("react.element"):60103,i=U?Symbol.for("react.portal"):60106,c=U?Symbol.for("react.fragment"):60107,A=U?Symbol.for("react.strict_mode"):60108,l=U?Symbol.for("react.profiler"):60114,a=U?Symbol.for("react.provider"):60109,r=U?Symbol.for("react.context"):60110,o=U?Symbol.for("react.concurrent_mode"):60111,d=U?Symbol.for("react.forward_ref"):60112,u=U?Symbol.for("react.suspense"):60113,y=U?Symbol.for("react.suspense_list"):60120,b=U?Symbol.for("react.memo"):60115,Z=U?Symbol.for("react.lazy"):60116;U&&Symbol.for("react.fundamental"),U&&Symbol.for("react.responder"),U&&Symbol.for("react.scope");var m="function"===typeof Symbol&&Symbol.iterator;function x(g){return null===g||"object"!==typeof g?null:"function"===typeof(g=m&&g[m]||g["@@iterator"])?g:null}function R(g){if(null==g)return null;if("function"===typeof g)return g.displayName||g.name||null;if("string"===typeof g)return g;switch(g){case c:return"Fragment";case i:return"Portal";case l:return"Profiler";case A:return"StrictMode";case u:return"Suspense";case y:return"SuspenseList"}if("object"===typeof g)switch(g.$$typeof){case r:return"Context.Consumer";case a:return"Context.Provider";case d:var I=g.render;return I=I.displayName||I.name||"",g.displayName||(""!==I?"ForwardRef("+I+")":"ForwardRef");case b:return R(g.type);case Z:if(g=1===g._status?g._result:null)return R(g)}return null}function S(g){var I=g,e=g;if(g.alternate)for(;I.return;)I=I.return;else{g=I;do{0!==(1026&(I=g).effectTag)&&(e=I.return),g=I.return}while(g)}return 3===I.tag?e:null}function G(g){if(S(g)!==g)throw Error(B(188))}function L(g){var I=g.alternate;if(!I){if(null===(I=S(g)))throw Error(B(188));return I!==g?null:g}for(var e=g,t=I;;){var C=e.return;if(null===C)break;var Q=C.alternate;if(null===Q){if(null!==(t=C.return)){e=t;continue}break}if(C.child===Q.child){for(Q=C.child;Q;){if(Q===e)return G(C),g;if(Q===t)return G(C),I;Q=Q.sibling}throw Error(B(188))}if(e.return!==t.return)e=C,t=Q;else{for(var F=!1,n=C.child;n;){if(n===e){F=!0,e=C,t=Q;break}if(n===t){F=!0,t=C,e=Q;break}n=n.sibling}if(!F){for(n=Q.child;n;){if(n===e){F=!0,e=Q,t=C;break}if(n===t){F=!0,t=Q,e=C;break}n=n.sibling}if(!F)throw Error(B(189))}}if(e.alternate!==t)throw Error(B(190))}if(3!==e.tag)throw Error(B(188));return e.stateNode.current===e?g:I}function V(g){if(!(g=L(g)))return null;for(var I=g;;){if(5===I.tag||6===I.tag)return I;if(I.child)I.child.return=I,I=I.child;else{if(I===g)break;for(;!I.sibling;){if(!I.return||I.return===g)return null;I=I.return}I.sibling.return=I.return,I=I.sibling}}return null}var h=t.getPublicInstance,D=t.getRootHostContext,p=t.getChildHostContext,E=t.prepareForCommit,N=t.resetAfterCommit,W=t.createInstance,f=t.appendInitialChild,X=t.finalizeInitialChildren,J=t.prepareUpdate,v=t.shouldSetTextContent,k=t.shouldDeprioritizeSubtree,H=t.createTextInstance,M=t.setTimeout,Y=t.clearTimeout,w=t.noTimeout,T=t.isPrimaryRenderer,z=t.supportsMutation,O=t.supportsPersistence,K=t.supportsHydration,j=t.appendChild,P=t.appendChildToContainer,_=t.commitTextUpdate,q=t.commitMount,$=t.commitUpdate,gg=t.insertBefore,Ig=t.insertInContainerBefore,eg=t.removeChild,tg=t.removeChildFromContainer,Cg=t.resetTextContent,Qg=t.hideInstance,Fg=t.hideTextInstance,Bg=t.unhideInstance,ng=t.unhideTextInstance,Ug=t.cloneInstance,sg=t.createContainerChildSet,ig=t.appendChildToContainerChildSet,cg=t.finalizeContainerChildren,Ag=t.replaceContainerChildren,lg=t.cloneHiddenInstance,ag=t.cloneHiddenTextInstance,rg=t.canHydrateInstance,og=t.canHydrateTextInstance,dg=t.isSuspenseInstancePending,ug=t.isSuspenseInstanceFallback,yg=t.getNextHydratableSibling,bg=t.getFirstHydratableChild,Zg=t.hydrateInstance,mg=t.hydrateTextInstance,xg=t.getNextHydratableInstanceAfterSuspenseInstance,Rg=t.commitHydratedContainer,Sg=t.commitHydratedSuspenseInstance,Gg=/^(.*)[\\\/]/;function Lg(g){var I="";do{g:switch(g.tag){case 3:case 4:case 6:case 7:case 10:case 9:var e="";break g;default:var t=g._debugOwner,C=g._debugSource,Q=R(g.type);e=null,t&&(e=R(t.type)),t=Q,Q="",C?Q=" (at "+C.fileName.replace(Gg,"")+":"+C.lineNumber+")":e&&(Q=" (created by "+e+")"),e="\n    in "+(t||"Unknown")+Q}I+=e,g=g.return}while(g);return I}new Set;var Vg=[],hg=-1;function Dg(g){0>hg||(g.current=Vg[hg],Vg[hg]=null,hg--)}function pg(g,I){hg++,Vg[hg]=g.current,g.current=I}var Eg={},Ng={current:Eg},Wg={current:!1},fg=Eg;function Xg(g,I){var e=g.type.contextTypes;if(!e)return Eg;var t=g.stateNode;if(t&&t.__reactInternalMemoizedUnmaskedChildContext===I)return t.__reactInternalMemoizedMaskedChildContext;var C,Q={};for(C in e)Q[C]=I[C];return t&&((g=g.stateNode).__reactInternalMemoizedUnmaskedChildContext=I,g.__reactInternalMemoizedMaskedChildContext=Q),Q}function Jg(g){return null!==(g=g.childContextTypes)&&void 0!==g}function vg(g){Dg(Wg),Dg(Ng)}function kg(g){Dg(Wg),Dg(Ng)}function Hg(g,I,e){if(Ng.current!==Eg)throw Error(B(168));pg(Ng,I),pg(Wg,e)}function Mg(g,I,e){var t=g.stateNode;if(g=I.childContextTypes,"function"!==typeof t.getChildContext)return e;for(var Q in t=t.getChildContext())if(!(Q in g))throw Error(B(108,R(I)||"Unknown",Q));return C({},e,{},t)}function Yg(g){var I=g.stateNode;return I=I&&I.__reactInternalMemoizedMergedChildContext||Eg,fg=Ng.current,pg(Ng,I),pg(Wg,Wg.current),!0}function wg(g,I,e){var t=g.stateNode;if(!t)throw Error(B(169));e?(I=Mg(g,I,fg),t.__reactInternalMemoizedMergedChildContext=I,Dg(Wg),Dg(Ng),pg(Ng,I)):Dg(Wg),pg(Wg,e)}var Tg=F.unstable_runWithPriority,zg=F.unstable_scheduleCallback,Og=F.unstable_cancelCallback,Kg=F.unstable_shouldYield,jg=F.unstable_requestPaint,Pg=F.unstable_now,_g=F.unstable_getCurrentPriorityLevel,qg=F.unstable_ImmediatePriority,$g=F.unstable_UserBlockingPriority,gI=F.unstable_NormalPriority,II=F.unstable_LowPriority,eI=F.unstable_IdlePriority,tI={},CI=void 0!==jg?jg:function(){},QI=null,FI=null,BI=!1,nI=Pg(),UI=1e4>nI?Pg:function(){return Pg()-nI};function sI(){switch(_g()){case qg:return 99;case $g:return 98;case gI:return 97;case II:return 96;case eI:return 95;default:throw Error(B(332))}}function iI(g){switch(g){case 99:return qg;case 98:return $g;case 97:return gI;case 96:return II;case 95:return eI;default:throw Error(B(332))}}function cI(g,I){return g=iI(g),Tg(g,I)}function AI(g,I,e){return g=iI(g),zg(g,I,e)}function lI(g){return null===QI?(QI=[g],FI=zg(qg,rI)):QI.push(g),tI}function aI(){if(null!==FI){var g=FI;FI=null,Og(g)}rI()}function rI(){if(!BI&&null!==QI){BI=!0;var g=0;try{var I=QI;cI(99,(function(){for(;g<I.length;g++){var e=I[g];do{e=e(!0)}while(null!==e)}})),QI=null}catch(e){throw null!==QI&&(QI=QI.slice(g+1)),zg(qg,aI),e}finally{BI=!1}}}var oI=3;function dI(g,I,e){return 1073741821-(1+((1073741821-g+I/10)/(e/=10)|0))*e}var uI="function"===typeof Object.is?Object.is:function(g,I){return g===I&&(0!==g||1/g===1/I)||g!==g&&I!==I},yI=Object.prototype.hasOwnProperty;function bI(g,I){if(uI(g,I))return!0;if("object"!==typeof g||null===g||"object"!==typeof I||null===I)return!1;var e=Object.keys(g),t=Object.keys(I);if(e.length!==t.length)return!1;for(t=0;t<e.length;t++)if(!yI.call(I,e[t])||!uI(g[e[t]],I[e[t]]))return!1;return!0}function ZI(g,I){if(g&&g.defaultProps)for(var e in I=C({},I),g=g.defaultProps)void 0===I[e]&&(I[e]=g[e]);return I}var mI={current:null},xI=null,RI=null,SI=null;function GI(){SI=RI=xI=null}function LI(g,I){var e=g.type._context;T?(pg(mI,e._currentValue),e._currentValue=I):(pg(mI,e._currentValue2),e._currentValue2=I)}function VI(g){var I=mI.current;Dg(mI),g=g.type._context,T?g._currentValue=I:g._currentValue2=I}function hI(g,I){for(;null!==g;){var e=g.alternate;if(g.childExpirationTime<I)g.childExpirationTime=I,null!==e&&e.childExpirationTime<I&&(e.childExpirationTime=I);else{if(!(null!==e&&e.childExpirationTime<I))break;e.childExpirationTime=I}g=g.return}}function DI(g,I){xI=g,SI=RI=null,null!==(g=g.dependencies)&&null!==g.firstContext&&(g.expirationTime>=I&&(it=!0),g.firstContext=null)}function pI(g,I){if(SI!==g&&!1!==I&&0!==I)if("number"===typeof I&&1073741823!==I||(SI=g,I=1073741823),I={context:g,observedBits:I,next:null},null===RI){if(null===xI)throw Error(B(308));RI=I,xI.dependencies={expirationTime:0,firstContext:I,responders:null}}else RI=RI.next=I;return T?g._currentValue:g._currentValue2}var EI=!1;function NI(g){return{baseState:g,firstUpdate:null,lastUpdate:null,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function WI(g){return{baseState:g.baseState,firstUpdate:g.firstUpdate,lastUpdate:g.lastUpdate,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function fI(g,I){return{expirationTime:g,suspenseConfig:I,tag:0,payload:null,callback:null,next:null,nextEffect:null}}function XI(g,I){null===g.lastUpdate?g.firstUpdate=g.lastUpdate=I:(g.lastUpdate.next=I,g.lastUpdate=I)}function JI(g,I){var e=g.alternate;if(null===e){var t=g.updateQueue,C=null;null===t&&(t=g.updateQueue=NI(g.memoizedState))}else t=g.updateQueue,C=e.updateQueue,null===t?null===C?(t=g.updateQueue=NI(g.memoizedState),C=e.updateQueue=NI(e.memoizedState)):t=g.updateQueue=WI(C):null===C&&(C=e.updateQueue=WI(t));null===C||t===C?XI(t,I):null===t.lastUpdate||null===C.lastUpdate?(XI(t,I),XI(C,I)):(XI(t,I),C.lastUpdate=I)}function vI(g,I){var e=g.updateQueue;null===(e=null===e?g.updateQueue=NI(g.memoizedState):kI(g,e)).lastCapturedUpdate?e.firstCapturedUpdate=e.lastCapturedUpdate=I:(e.lastCapturedUpdate.next=I,e.lastCapturedUpdate=I)}function kI(g,I){var e=g.alternate;return null!==e&&I===e.updateQueue&&(I=g.updateQueue=WI(I)),I}function HI(g,I,e,t,Q,F){switch(e.tag){case 1:return"function"===typeof(g=e.payload)?g.call(F,t,Q):g;case 3:g.effectTag=-4097&g.effectTag|64;case 0:if(null===(Q="function"===typeof(g=e.payload)?g.call(F,t,Q):g)||void 0===Q)break;return C({},t,Q);case 2:EI=!0}return t}function MI(g,I,e,t,C){EI=!1;for(var Q=(I=kI(g,I)).baseState,F=null,B=0,n=I.firstUpdate,U=Q;null!==n;){var s=n.expirationTime;s<C?(null===F&&(F=n,Q=U),B<s&&(B=s)):(JC(s,n.suspenseConfig),U=HI(g,0,n,U,e,t),null!==n.callback&&(g.effectTag|=32,n.nextEffect=null,null===I.lastEffect?I.firstEffect=I.lastEffect=n:(I.lastEffect.nextEffect=n,I.lastEffect=n))),n=n.next}for(s=null,n=I.firstCapturedUpdate;null!==n;){var i=n.expirationTime;i<C?(null===s&&(s=n,null===F&&(Q=U)),B<i&&(B=i)):(U=HI(g,0,n,U,e,t),null!==n.callback&&(g.effectTag|=32,n.nextEffect=null,null===I.lastCapturedEffect?I.firstCapturedEffect=I.lastCapturedEffect=n:(I.lastCapturedEffect.nextEffect=n,I.lastCapturedEffect=n))),n=n.next}null===F&&(I.lastUpdate=null),null===s?I.lastCapturedUpdate=null:g.effectTag|=32,null===F&&null===s&&(Q=U),I.baseState=Q,I.firstUpdate=F,I.firstCapturedUpdate=s,vC(B),g.expirationTime=B,g.memoizedState=U}function YI(g,I,e){null!==I.firstCapturedUpdate&&(null!==I.lastUpdate&&(I.lastUpdate.next=I.firstCapturedUpdate,I.lastUpdate=I.lastCapturedUpdate),I.firstCapturedUpdate=I.lastCapturedUpdate=null),wI(I.firstEffect,e),I.firstEffect=I.lastEffect=null,wI(I.firstCapturedEffect,e),I.firstCapturedEffect=I.lastCapturedEffect=null}function wI(g,I){for(;null!==g;){var e=g.callback;if(null!==e){g.callback=null;var t=I;if("function"!==typeof e)throw Error(B(191,e));e.call(t)}g=g.nextEffect}}var TI=n.ReactCurrentBatchConfig,zI=(new Q.Component).refs;function OI(g,I,e,t){e=null===(e=e(t,I=g.memoizedState))||void 0===e?I:C({},I,e),g.memoizedState=e,null!==(t=g.updateQueue)&&0===g.expirationTime&&(t.baseState=e)}var KI={isMounted:function(g){return!!(g=g._reactInternalFiber)&&S(g)===g},enqueueSetState:function(g,I,e){g=g._reactInternalFiber;var t=SC(),C=TI.suspense;(C=fI(t=GC(t,g,C),C)).payload=I,void 0!==e&&null!==e&&(C.callback=e),JI(g,C),LC(g,t)},enqueueReplaceState:function(g,I,e){g=g._reactInternalFiber;var t=SC(),C=TI.suspense;(C=fI(t=GC(t,g,C),C)).tag=1,C.payload=I,void 0!==e&&null!==e&&(C.callback=e),JI(g,C),LC(g,t)},enqueueForceUpdate:function(g,I){g=g._reactInternalFiber;var e=SC(),t=TI.suspense;(t=fI(e=GC(e,g,t),t)).tag=2,void 0!==I&&null!==I&&(t.callback=I),JI(g,t),LC(g,e)}};function jI(g,I,e,t,C,Q,F){return"function"===typeof(g=g.stateNode).shouldComponentUpdate?g.shouldComponentUpdate(t,Q,F):!I.prototype||!I.prototype.isPureReactComponent||(!bI(e,t)||!bI(C,Q))}function PI(g,I,e){var t=!1,C=Eg,Q=I.contextType;return"object"===typeof Q&&null!==Q?Q=pI(Q):(C=Jg(I)?fg:Ng.current,Q=(t=null!==(t=I.contextTypes)&&void 0!==t)?Xg(g,C):Eg),I=new I(e,Q),g.memoizedState=null!==I.state&&void 0!==I.state?I.state:null,I.updater=KI,g.stateNode=I,I._reactInternalFiber=g,t&&((g=g.stateNode).__reactInternalMemoizedUnmaskedChildContext=C,g.__reactInternalMemoizedMaskedChildContext=Q),I}function _I(g,I,e,t){g=I.state,"function"===typeof I.componentWillReceiveProps&&I.componentWillReceiveProps(e,t),"function"===typeof I.UNSAFE_componentWillReceiveProps&&I.UNSAFE_componentWillReceiveProps(e,t),I.state!==g&&KI.enqueueReplaceState(I,I.state,null)}function qI(g,I,e,t){var C=g.stateNode;C.props=e,C.state=g.memoizedState,C.refs=zI;var Q=I.contextType;"object"===typeof Q&&null!==Q?C.context=pI(Q):(Q=Jg(I)?fg:Ng.current,C.context=Xg(g,Q)),null!==(Q=g.updateQueue)&&(MI(g,Q,e,C,t),C.state=g.memoizedState),"function"===typeof(Q=I.getDerivedStateFromProps)&&(OI(g,I,Q,e),C.state=g.memoizedState),"function"===typeof I.getDerivedStateFromProps||"function"===typeof C.getSnapshotBeforeUpdate||"function"!==typeof C.UNSAFE_componentWillMount&&"function"!==typeof C.componentWillMount||(I=C.state,"function"===typeof C.componentWillMount&&C.componentWillMount(),"function"===typeof C.UNSAFE_componentWillMount&&C.UNSAFE_componentWillMount(),I!==C.state&&KI.enqueueReplaceState(C,C.state,null),null!==(Q=g.updateQueue)&&(MI(g,Q,e,C,t),C.state=g.memoizedState)),"function"===typeof C.componentDidMount&&(g.effectTag|=4)}var $I=Array.isArray;function ge(g,I,e){if(null!==(g=e.ref)&&"function"!==typeof g&&"object"!==typeof g){if(e._owner){if(e=e._owner){if(1!==e.tag)throw Error(B(309));var t=e.stateNode}if(!t)throw Error(B(147,g));var C=""+g;return null!==I&&null!==I.ref&&"function"===typeof I.ref&&I.ref._stringRef===C?I.ref:((I=function(g){var I=t.refs;I===zI&&(I=t.refs={}),null===g?delete I[C]:I[C]=g})._stringRef=C,I)}if("string"!==typeof g)throw Error(B(284));if(!e._owner)throw Error(B(290,g))}return g}function Ie(g,I){if("textarea"!==g.type)throw Error(B(31,"[object Object]"===Object.prototype.toString.call(I)?"object with keys {"+Object.keys(I).join(", ")+"}":I,""))}function ee(g){function I(I,e){if(g){var t=I.lastEffect;null!==t?(t.nextEffect=e,I.lastEffect=e):I.firstEffect=I.lastEffect=e,e.nextEffect=null,e.effectTag=8}}function e(e,t){if(!g)return null;for(;null!==t;)I(e,t),t=t.sibling;return null}function t(g,I){for(g=new Map;null!==I;)null!==I.key?g.set(I.key,I):g.set(I.index,I),I=I.sibling;return g}function C(g,I,e){return(g=QQ(g,I)).index=0,g.sibling=null,g}function Q(I,e,t){return I.index=t,g?null!==(t=I.alternate)?(t=t.index)<e?(I.effectTag=2,e):t:(I.effectTag=2,e):e}function F(I){return g&&null===I.alternate&&(I.effectTag=2),I}function n(g,I,e,t){return null===I||6!==I.tag?((I=nQ(e,g.mode,t)).return=g,I):((I=C(I,e)).return=g,I)}function U(g,I,e,t){return null!==I&&I.elementType===e.type?((t=C(I,e.props)).ref=ge(g,I,e),t.return=g,t):((t=FQ(e.type,e.key,e.props,null,g.mode,t)).ref=ge(g,I,e),t.return=g,t)}function A(g,I,e,t){return null===I||4!==I.tag||I.stateNode.containerInfo!==e.containerInfo||I.stateNode.implementation!==e.implementation?((I=UQ(e,g.mode,t)).return=g,I):((I=C(I,e.children||[])).return=g,I)}function l(g,I,e,t,Q){return null===I||7!==I.tag?((I=BQ(e,g.mode,t,Q)).return=g,I):((I=C(I,e)).return=g,I)}function a(g,I,e){if("string"===typeof I||"number"===typeof I)return(I=nQ(""+I,g.mode,e)).return=g,I;if("object"===typeof I&&null!==I){switch(I.$$typeof){case s:return(e=FQ(I.type,I.key,I.props,null,g.mode,e)).ref=ge(g,null,I),e.return=g,e;case i:return(I=UQ(I,g.mode,e)).return=g,I}if($I(I)||x(I))return(I=BQ(I,g.mode,e,null)).return=g,I;Ie(g,I)}return null}function r(g,I,e,t){var C=null!==I?I.key:null;if("string"===typeof e||"number"===typeof e)return null!==C?null:n(g,I,""+e,t);if("object"===typeof e&&null!==e){switch(e.$$typeof){case s:return e.key===C?e.type===c?l(g,I,e.props.children,t,C):U(g,I,e,t):null;case i:return e.key===C?A(g,I,e,t):null}if($I(e)||x(e))return null!==C?null:l(g,I,e,t,null);Ie(g,e)}return null}function o(g,I,e,t,C){if("string"===typeof t||"number"===typeof t)return n(I,g=g.get(e)||null,""+t,C);if("object"===typeof t&&null!==t){switch(t.$$typeof){case s:return g=g.get(null===t.key?e:t.key)||null,t.type===c?l(I,g,t.props.children,C,t.key):U(I,g,t,C);case i:return A(I,g=g.get(null===t.key?e:t.key)||null,t,C)}if($I(t)||x(t))return l(I,g=g.get(e)||null,t,C,null);Ie(I,t)}return null}function d(C,F,B,n){for(var U=null,s=null,i=F,c=F=0,A=null;null!==i&&c<B.length;c++){i.index>c?(A=i,i=null):A=i.sibling;var l=r(C,i,B[c],n);if(null===l){null===i&&(i=A);break}g&&i&&null===l.alternate&&I(C,i),F=Q(l,F,c),null===s?U=l:s.sibling=l,s=l,i=A}if(c===B.length)return e(C,i),U;if(null===i){for(;c<B.length;c++)null!==(i=a(C,B[c],n))&&(F=Q(i,F,c),null===s?U=i:s.sibling=i,s=i);return U}for(i=t(C,i);c<B.length;c++)null!==(A=o(i,C,c,B[c],n))&&(g&&null!==A.alternate&&i.delete(null===A.key?c:A.key),F=Q(A,F,c),null===s?U=A:s.sibling=A,s=A);return g&&i.forEach((function(g){return I(C,g)})),U}function u(C,F,n,U){var s=x(n);if("function"!==typeof s)throw Error(B(150));if(null==(n=s.call(n)))throw Error(B(151));for(var i=s=null,c=F,A=F=0,l=null,d=n.next();null!==c&&!d.done;A++,d=n.next()){c.index>A?(l=c,c=null):l=c.sibling;var u=r(C,c,d.value,U);if(null===u){null===c&&(c=l);break}g&&c&&null===u.alternate&&I(C,c),F=Q(u,F,A),null===i?s=u:i.sibling=u,i=u,c=l}if(d.done)return e(C,c),s;if(null===c){for(;!d.done;A++,d=n.next())null!==(d=a(C,d.value,U))&&(F=Q(d,F,A),null===i?s=d:i.sibling=d,i=d);return s}for(c=t(C,c);!d.done;A++,d=n.next())null!==(d=o(c,C,A,d.value,U))&&(g&&null!==d.alternate&&c.delete(null===d.key?A:d.key),F=Q(d,F,A),null===i?s=d:i.sibling=d,i=d);return g&&c.forEach((function(g){return I(C,g)})),s}return function(g,t,Q,n){var U="object"===typeof Q&&null!==Q&&Q.type===c&&null===Q.key;U&&(Q=Q.props.children);var A="object"===typeof Q&&null!==Q;if(A)switch(Q.$$typeof){case s:g:{for(A=Q.key,U=t;null!==U;){if(U.key===A){if(7===U.tag?Q.type===c:U.elementType===Q.type){e(g,U.sibling),(t=C(U,Q.type===c?Q.props.children:Q.props)).ref=ge(g,U,Q),t.return=g,g=t;break g}e(g,U);break}I(g,U),U=U.sibling}Q.type===c?((t=BQ(Q.props.children,g.mode,n,Q.key)).return=g,g=t):((n=FQ(Q.type,Q.key,Q.props,null,g.mode,n)).ref=ge(g,t,Q),n.return=g,g=n)}return F(g);case i:g:{for(U=Q.key;null!==t;){if(t.key===U){if(4===t.tag&&t.stateNode.containerInfo===Q.containerInfo&&t.stateNode.implementation===Q.implementation){e(g,t.sibling),(t=C(t,Q.children||[])).return=g,g=t;break g}e(g,t);break}I(g,t),t=t.sibling}(t=UQ(Q,g.mode,n)).return=g,g=t}return F(g)}if("string"===typeof Q||"number"===typeof Q)return Q=""+Q,null!==t&&6===t.tag?(e(g,t.sibling),(t=C(t,Q)).return=g,g=t):(e(g,t),(t=nQ(Q,g.mode,n)).return=g,g=t),F(g);if($I(Q))return d(g,t,Q,n);if(x(Q))return u(g,t,Q,n);if(A&&Ie(g,Q),"undefined"===typeof Q&&!U)switch(g.tag){case 1:case 0:throw g=g.type,Error(B(152,g.displayName||g.name||"Component"))}return e(g,t)}}var te=ee(!0),Ce=ee(!1),Qe={},Fe={current:Qe},Be={current:Qe},ne={current:Qe};function Ue(g){if(g===Qe)throw Error(B(174));return g}function se(g,I){pg(ne,I),pg(Be,g),pg(Fe,Qe),I=D(I),Dg(Fe),pg(Fe,I)}function ie(g){Dg(Fe),Dg(Be),Dg(ne)}function ce(g){var I=Ue(ne.current),e=Ue(Fe.current);e!==(I=p(e,g.type,I))&&(pg(Be,g),pg(Fe,I))}function Ae(g){Be.current===g&&(Dg(Fe),Dg(Be))}var le={current:0};function ae(g){for(var I=g;null!==I;){if(13===I.tag){var e=I.memoizedState;if(null!==e&&(null===(e=e.dehydrated)||dg(e)||ug(e)))return I}else if(19===I.tag&&void 0!==I.memoizedProps.revealOrder){if(0!==(64&I.effectTag))return I}else if(null!==I.child){I.child.return=I,I=I.child;continue}if(I===g)break;for(;null===I.sibling;){if(null===I.return||I.return===g)return null;I=I.return}I.sibling.return=I.return,I=I.sibling}return null}function re(g,I){return{responder:g,props:I}}var oe=n.ReactCurrentDispatcher,de=n.ReactCurrentBatchConfig,ue=0,ye=null,be=null,Ze=null,me=null,xe=null,Re=null,Se=0,Ge=null,Le=0,Ve=!1,he=null,De=0;function pe(){throw Error(B(321))}function Ee(g,I){if(null===I)return!1;for(var e=0;e<I.length&&e<g.length;e++)if(!uI(g[e],I[e]))return!1;return!0}function Ne(g,I,e,t,C,Q){if(ue=Q,ye=I,Ze=null!==g?g.memoizedState:null,oe.current=null===Ze?$e:gt,I=e(t,C),Ve){do{Ve=!1,De+=1,Ze=null!==g?g.memoizedState:null,Re=me,Ge=xe=be=null,oe.current=gt,I=e(t,C)}while(Ve);he=null,De=0}if(oe.current=qe,(g=ye).memoizedState=me,g.expirationTime=Se,g.updateQueue=Ge,g.effectTag|=Le,g=null!==be&&null!==be.next,ue=0,Re=xe=me=Ze=be=ye=null,Se=0,Ge=null,Le=0,g)throw Error(B(300));return I}function We(){oe.current=qe,ue=0,Re=xe=me=Ze=be=ye=null,Se=0,Ge=null,Le=0,Ve=!1,he=null,De=0}function fe(){var g={memoizedState:null,baseState:null,queue:null,baseUpdate:null,next:null};return null===xe?me=xe=g:xe=xe.next=g,xe}function Xe(){if(null!==Re)Re=(xe=Re).next,Ze=null!==(be=Ze)?be.next:null;else{if(null===Ze)throw Error(B(310));var g={memoizedState:(be=Ze).memoizedState,baseState:be.baseState,queue:be.queue,baseUpdate:be.baseUpdate,next:null};xe=null===xe?me=g:xe.next=g,Ze=be.next}return xe}function Je(g,I){return"function"===typeof I?I(g):I}function ve(g){var I=Xe(),e=I.queue;if(null===e)throw Error(B(311));if(e.lastRenderedReducer=g,0<De){var t=e.dispatch;if(null!==he){var C=he.get(e);if(void 0!==C){he.delete(e);var Q=I.memoizedState;do{Q=g(Q,C.action),C=C.next}while(null!==C);return uI(Q,I.memoizedState)||(it=!0),I.memoizedState=Q,I.baseUpdate===e.last&&(I.baseState=Q),e.lastRenderedState=Q,[Q,t]}}return[I.memoizedState,t]}t=e.last;var F=I.baseUpdate;if(Q=I.baseState,null!==F?(null!==t&&(t.next=null),t=F.next):t=null!==t?t.next:null,null!==t){var n=C=null,U=t,s=!1;do{var i=U.expirationTime;i<ue?(s||(s=!0,n=F,C=Q),i>Se&&vC(Se=i)):(JC(i,U.suspenseConfig),Q=U.eagerReducer===g?U.eagerState:g(Q,U.action)),F=U,U=U.next}while(null!==U&&U!==t);s||(n=F,C=Q),uI(Q,I.memoizedState)||(it=!0),I.memoizedState=Q,I.baseUpdate=n,I.baseState=C,e.lastRenderedState=Q}return[I.memoizedState,e.dispatch]}function ke(g){var I=fe();return"function"===typeof g&&(g=g()),I.memoizedState=I.baseState=g,g=(g=I.queue={last:null,dispatch:null,lastRenderedReducer:Je,lastRenderedState:g}).dispatch=_e.bind(null,ye,g),[I.memoizedState,g]}function He(g){return ve(Je)}function Me(g,I,e,t){return g={tag:g,create:I,destroy:e,deps:t,next:null},null===Ge?(Ge={lastEffect:null}).lastEffect=g.next=g:null===(I=Ge.lastEffect)?Ge.lastEffect=g.next=g:(e=I.next,I.next=g,g.next=e,Ge.lastEffect=g),g}function Ye(g,I,e,t){var C=fe();Le|=g,C.memoizedState=Me(I,e,void 0,void 0===t?null:t)}function we(g,I,e,t){var C=Xe();t=void 0===t?null:t;var Q=void 0;if(null!==be){var F=be.memoizedState;if(Q=F.destroy,null!==t&&Ee(t,F.deps))return void Me(0,e,Q,t)}Le|=g,C.memoizedState=Me(I,e,Q,t)}function Te(g,I){return Ye(516,192,g,I)}function ze(g,I){return we(516,192,g,I)}function Oe(g,I){return"function"===typeof I?(g=g(),I(g),function(){I(null)}):null!==I&&void 0!==I?(g=g(),I.current=g,function(){I.current=null}):void 0}function Ke(){}function je(g,I){return fe().memoizedState=[g,void 0===I?null:I],g}function Pe(g,I){var e=Xe();I=void 0===I?null:I;var t=e.memoizedState;return null!==t&&null!==I&&Ee(I,t[1])?t[0]:(e.memoizedState=[g,I],g)}function _e(g,I,e){if(!(25>De))throw Error(B(301));var t=g.alternate;if(g===ye||null!==t&&t===ye)if(Ve=!0,g={expirationTime:ue,suspenseConfig:null,action:e,eagerReducer:null,eagerState:null,next:null},null===he&&(he=new Map),void 0===(e=he.get(I)))he.set(I,g);else{for(I=e;null!==I.next;)I=I.next;I.next=g}else{var C=SC(),Q=TI.suspense;Q={expirationTime:C=GC(C,g,Q),suspenseConfig:Q,action:e,eagerReducer:null,eagerState:null,next:null};var F=I.last;if(null===F)Q.next=Q;else{var n=F.next;null!==n&&(Q.next=n),F.next=Q}if(I.last=Q,0===g.expirationTime&&(null===t||0===t.expirationTime)&&null!==(t=I.lastRenderedReducer))try{var U=I.lastRenderedState,s=t(U,e);if(Q.eagerReducer=t,Q.eagerState=s,uI(s,U))return}catch(i){}LC(g,C)}}var qe={readContext:pI,useCallback:pe,useContext:pe,useEffect:pe,useImperativeHandle:pe,useLayoutEffect:pe,useMemo:pe,useReducer:pe,useRef:pe,useState:pe,useDebugValue:pe,useResponder:pe,useDeferredValue:pe,useTransition:pe},$e={readContext:pI,useCallback:je,useContext:pI,useEffect:Te,useImperativeHandle:function(g,I,e){return e=null!==e&&void 0!==e?e.concat([g]):null,Ye(4,36,Oe.bind(null,I,g),e)},useLayoutEffect:function(g,I){return Ye(4,36,g,I)},useMemo:function(g,I){var e=fe();return I=void 0===I?null:I,g=g(),e.memoizedState=[g,I],g},useReducer:function(g,I,e){var t=fe();return I=void 0!==e?e(I):I,t.memoizedState=t.baseState=I,g=(g=t.queue={last:null,dispatch:null,lastRenderedReducer:g,lastRenderedState:I}).dispatch=_e.bind(null,ye,g),[t.memoizedState,g]},useRef:function(g){return g={current:g},fe().memoizedState=g},useState:ke,useDebugValue:Ke,useResponder:re,useDeferredValue:function(g,I){var e=ke(g),t=e[0],C=e[1];return Te((function(){F.unstable_next((function(){var e=de.suspense;de.suspense=void 0===I?null:I;try{C(g)}finally{de.suspense=e}}))}),[g,I]),t},useTransition:function(g){var I=ke(!1),e=I[0],t=I[1];return[je((function(I){t(!0),F.unstable_next((function(){var e=de.suspense;de.suspense=void 0===g?null:g;try{t(!1),I()}finally{de.suspense=e}}))}),[g,e]),e]}},gt={readContext:pI,useCallback:Pe,useContext:pI,useEffect:ze,useImperativeHandle:function(g,I,e){return e=null!==e&&void 0!==e?e.concat([g]):null,we(4,36,Oe.bind(null,I,g),e)},useLayoutEffect:function(g,I){return we(4,36,g,I)},useMemo:function(g,I){var e=Xe();I=void 0===I?null:I;var t=e.memoizedState;return null!==t&&null!==I&&Ee(I,t[1])?t[0]:(g=g(),e.memoizedState=[g,I],g)},useReducer:ve,useRef:function(){return Xe().memoizedState},useState:He,useDebugValue:Ke,useResponder:re,useDeferredValue:function(g,I){var e=He(),t=e[0],C=e[1];return ze((function(){F.unstable_next((function(){var e=de.suspense;de.suspense=void 0===I?null:I;try{C(g)}finally{de.suspense=e}}))}),[g,I]),t},useTransition:function(g){var I=He(),e=I[0],t=I[1];return[Pe((function(I){t(!0),F.unstable_next((function(){var e=de.suspense;de.suspense=void 0===g?null:g;try{t(!1),I()}finally{de.suspense=e}}))}),[g,e]),e]}},It=null,et=null,tt=!1;function Ct(g,I){var e=tQ(5,null,null,0);e.elementType="DELETED",e.type="DELETED",e.stateNode=I,e.return=g,e.effectTag=8,null!==g.lastEffect?(g.lastEffect.nextEffect=e,g.lastEffect=e):g.firstEffect=g.lastEffect=e}function Qt(g,I){switch(g.tag){case 5:return null!==(I=rg(I,g.type,g.pendingProps))&&(g.stateNode=I,!0);case 6:return null!==(I=og(I,g.pendingProps))&&(g.stateNode=I,!0);case 13:default:return!1}}function Ft(g){if(tt){var I=et;if(I){var e=I;if(!Qt(g,I)){if(!(I=yg(e))||!Qt(g,I))return g.effectTag=-1025&g.effectTag|2,tt=!1,void(It=g);Ct(It,e)}It=g,et=bg(I)}else g.effectTag=-1025&g.effectTag|2,tt=!1,It=g}}function Bt(g){for(g=g.return;null!==g&&5!==g.tag&&3!==g.tag&&13!==g.tag;)g=g.return;It=g}function nt(g){if(!K||g!==It)return!1;if(!tt)return Bt(g),tt=!0,!1;var I=g.type;if(5!==g.tag||"head"!==I&&"body"!==I&&!v(I,g.memoizedProps))for(I=et;I;)Ct(g,I),I=yg(I);if(Bt(g),13===g.tag){if(!K)throw Error(B(316));if(!(g=null!==(g=g.memoizedState)?g.dehydrated:null))throw Error(B(317));et=xg(g)}else et=It?yg(g.stateNode):null;return!0}function Ut(){K&&(et=It=null,tt=!1)}var st=n.ReactCurrentOwner,it=!1;function ct(g,I,e,t){I.child=null===g?Ce(I,null,e,t):te(I,g.child,e,t)}function At(g,I,e,t,C){e=e.render;var Q=I.ref;return DI(I,C),t=Ne(g,I,e,t,Q,C),null===g||it?(I.effectTag|=1,ct(g,I,t,C),I.child):(I.updateQueue=g.updateQueue,I.effectTag&=-517,g.expirationTime<=C&&(g.expirationTime=0),ht(g,I,C))}function lt(g,I,e,t,C,Q){if(null===g){var F=e.type;return"function"!==typeof F||CQ(F)||void 0!==F.defaultProps||null!==e.compare||void 0!==e.defaultProps?((g=FQ(e.type,null,t,null,I.mode,Q)).ref=I.ref,g.return=I,I.child=g):(I.tag=15,I.type=F,at(g,I,F,t,C,Q))}return F=g.child,C<Q&&(C=F.memoizedProps,(e=null!==(e=e.compare)?e:bI)(C,t)&&g.ref===I.ref)?ht(g,I,Q):(I.effectTag|=1,(g=QQ(F,t)).ref=I.ref,g.return=I,I.child=g)}function at(g,I,e,t,C,Q){return null!==g&&bI(g.memoizedProps,t)&&g.ref===I.ref&&(it=!1,C<Q)?ht(g,I,Q):ot(g,I,e,t,Q)}function rt(g,I){var e=I.ref;(null===g&&null!==e||null!==g&&g.ref!==e)&&(I.effectTag|=128)}function ot(g,I,e,t,C){var Q=Jg(e)?fg:Ng.current;return Q=Xg(I,Q),DI(I,C),e=Ne(g,I,e,t,Q,C),null===g||it?(I.effectTag|=1,ct(g,I,e,C),I.child):(I.updateQueue=g.updateQueue,I.effectTag&=-517,g.expirationTime<=C&&(g.expirationTime=0),ht(g,I,C))}function dt(g,I,e,t,C){if(Jg(e)){var Q=!0;Yg(I)}else Q=!1;if(DI(I,C),null===I.stateNode)null!==g&&(g.alternate=null,I.alternate=null,I.effectTag|=2),PI(I,e,t),qI(I,e,t,C),t=!0;else if(null===g){var F=I.stateNode,B=I.memoizedProps;F.props=B;var n=F.context,U=e.contextType;"object"===typeof U&&null!==U?U=pI(U):U=Xg(I,U=Jg(e)?fg:Ng.current);var s=e.getDerivedStateFromProps,i="function"===typeof s||"function"===typeof F.getSnapshotBeforeUpdate;i||"function"!==typeof F.UNSAFE_componentWillReceiveProps&&"function"!==typeof F.componentWillReceiveProps||(B!==t||n!==U)&&_I(I,F,t,U),EI=!1;var c=I.memoizedState;n=F.state=c;var A=I.updateQueue;null!==A&&(MI(I,A,t,F,C),n=I.memoizedState),B!==t||c!==n||Wg.current||EI?("function"===typeof s&&(OI(I,e,s,t),n=I.memoizedState),(B=EI||jI(I,e,B,t,c,n,U))?(i||"function"!==typeof F.UNSAFE_componentWillMount&&"function"!==typeof F.componentWillMount||("function"===typeof F.componentWillMount&&F.componentWillMount(),"function"===typeof F.UNSAFE_componentWillMount&&F.UNSAFE_componentWillMount()),"function"===typeof F.componentDidMount&&(I.effectTag|=4)):("function"===typeof F.componentDidMount&&(I.effectTag|=4),I.memoizedProps=t,I.memoizedState=n),F.props=t,F.state=n,F.context=U,t=B):("function"===typeof F.componentDidMount&&(I.effectTag|=4),t=!1)}else F=I.stateNode,B=I.memoizedProps,F.props=I.type===I.elementType?B:ZI(I.type,B),n=F.context,"object"===typeof(U=e.contextType)&&null!==U?U=pI(U):U=Xg(I,U=Jg(e)?fg:Ng.current),(i="function"===typeof(s=e.getDerivedStateFromProps)||"function"===typeof F.getSnapshotBeforeUpdate)||"function"!==typeof F.UNSAFE_componentWillReceiveProps&&"function"!==typeof F.componentWillReceiveProps||(B!==t||n!==U)&&_I(I,F,t,U),EI=!1,n=I.memoizedState,c=F.state=n,null!==(A=I.updateQueue)&&(MI(I,A,t,F,C),c=I.memoizedState),B!==t||n!==c||Wg.current||EI?("function"===typeof s&&(OI(I,e,s,t),c=I.memoizedState),(s=EI||jI(I,e,B,t,n,c,U))?(i||"function"!==typeof F.UNSAFE_componentWillUpdate&&"function"!==typeof F.componentWillUpdate||("function"===typeof F.componentWillUpdate&&F.componentWillUpdate(t,c,U),"function"===typeof F.UNSAFE_componentWillUpdate&&F.UNSAFE_componentWillUpdate(t,c,U)),"function"===typeof F.componentDidUpdate&&(I.effectTag|=4),"function"===typeof F.getSnapshotBeforeUpdate&&(I.effectTag|=256)):("function"!==typeof F.componentDidUpdate||B===g.memoizedProps&&n===g.memoizedState||(I.effectTag|=4),"function"!==typeof F.getSnapshotBeforeUpdate||B===g.memoizedProps&&n===g.memoizedState||(I.effectTag|=256),I.memoizedProps=t,I.memoizedState=c),F.props=t,F.state=c,F.context=U,t=s):("function"!==typeof F.componentDidUpdate||B===g.memoizedProps&&n===g.memoizedState||(I.effectTag|=4),"function"!==typeof F.getSnapshotBeforeUpdate||B===g.memoizedProps&&n===g.memoizedState||(I.effectTag|=256),t=!1);return ut(g,I,e,t,Q,C)}function ut(g,I,e,t,C,Q){rt(g,I);var F=0!==(64&I.effectTag);if(!t&&!F)return C&&wg(I,e,!1),ht(g,I,Q);t=I.stateNode,st.current=I;var B=F&&"function"!==typeof e.getDerivedStateFromError?null:t.render();return I.effectTag|=1,null!==g&&F?(I.child=te(I,g.child,null,Q),I.child=te(I,null,B,Q)):ct(g,I,B,Q),I.memoizedState=t.state,C&&wg(I,e,!0),I.child}function yt(g){var I=g.stateNode;I.pendingContext?Hg(0,I.pendingContext,I.pendingContext!==I.context):I.context&&Hg(0,I.context,!1),se(g,I.containerInfo)}var bt,Zt,mt,xt,Rt={dehydrated:null,retryTime:0};function St(g,I,e){var t,C=I.mode,Q=I.pendingProps,F=le.current,B=!1;if((t=0!==(64&I.effectTag))||(t=0!==(2&F)&&(null===g||null!==g.memoizedState)),t?(B=!0,I.effectTag&=-65):null!==g&&null===g.memoizedState||void 0===Q.fallback||!0===Q.unstable_avoidThisFallback||(F|=1),pg(le,1&F),null===g){if(void 0!==Q.fallback&&Ft(I),B){if(B=Q.fallback,(Q=BQ(null,C,0,null)).return=I,0===(2&I.mode))for(g=null!==I.memoizedState?I.child.child:I.child,Q.child=g;null!==g;)g.return=Q,g=g.sibling;return(e=BQ(B,C,e,null)).return=I,Q.sibling=e,I.memoizedState=Rt,I.child=Q,e}return C=Q.children,I.memoizedState=null,I.child=Ce(I,null,C,e)}if(null!==g.memoizedState){if(C=(g=g.child).sibling,B){if(Q=Q.fallback,(e=QQ(g,g.pendingProps)).return=I,0===(2&I.mode)&&(B=null!==I.memoizedState?I.child.child:I.child)!==g.child)for(e.child=B;null!==B;)B.return=e,B=B.sibling;return(C=QQ(C,Q,C.expirationTime)).return=I,e.sibling=C,e.childExpirationTime=0,I.memoizedState=Rt,I.child=e,C}return e=te(I,g.child,Q.children,e),I.memoizedState=null,I.child=e}if(g=g.child,B){if(B=Q.fallback,(Q=BQ(null,C,0,null)).return=I,Q.child=g,null!==g&&(g.return=Q),0===(2&I.mode))for(g=null!==I.memoizedState?I.child.child:I.child,Q.child=g;null!==g;)g.return=Q,g=g.sibling;return(e=BQ(B,C,e,null)).return=I,Q.sibling=e,e.effectTag|=2,Q.childExpirationTime=0,I.memoizedState=Rt,I.child=Q,e}return I.memoizedState=null,I.child=te(I,g,Q.children,e)}function Gt(g,I){g.expirationTime<I&&(g.expirationTime=I);var e=g.alternate;null!==e&&e.expirationTime<I&&(e.expirationTime=I),hI(g.return,I)}function Lt(g,I,e,t,C,Q){var F=g.memoizedState;null===F?g.memoizedState={isBackwards:I,rendering:null,last:t,tail:e,tailExpiration:0,tailMode:C,lastEffect:Q}:(F.isBackwards=I,F.rendering=null,F.last=t,F.tail=e,F.tailExpiration=0,F.tailMode=C,F.lastEffect=Q)}function Vt(g,I,e){var t=I.pendingProps,C=t.revealOrder,Q=t.tail;if(ct(g,I,t.children,e),0!==(2&(t=le.current)))t=1&t|2,I.effectTag|=64;else{if(null!==g&&0!==(64&g.effectTag))g:for(g=I.child;null!==g;){if(13===g.tag)null!==g.memoizedState&&Gt(g,e);else if(19===g.tag)Gt(g,e);else if(null!==g.child){g.child.return=g,g=g.child;continue}if(g===I)break g;for(;null===g.sibling;){if(null===g.return||g.return===I)break g;g=g.return}g.sibling.return=g.return,g=g.sibling}t&=1}if(pg(le,t),0===(2&I.mode))I.memoizedState=null;else switch(C){case"forwards":for(e=I.child,C=null;null!==e;)null!==(g=e.alternate)&&null===ae(g)&&(C=e),e=e.sibling;null===(e=C)?(C=I.child,I.child=null):(C=e.sibling,e.sibling=null),Lt(I,!1,C,e,Q,I.lastEffect);break;case"backwards":for(e=null,C=I.child,I.child=null;null!==C;){if(null!==(g=C.alternate)&&null===ae(g)){I.child=C;break}g=C.sibling,C.sibling=e,e=C,C=g}Lt(I,!0,e,null,Q,I.lastEffect);break;case"together":Lt(I,!1,null,null,void 0,I.lastEffect);break;default:I.memoizedState=null}return I.child}function ht(g,I,e){null!==g&&(I.dependencies=g.dependencies);var t=I.expirationTime;if(0!==t&&vC(t),I.childExpirationTime<e)return null;if(null!==g&&I.child!==g.child)throw Error(B(153));if(null!==I.child){for(e=QQ(g=I.child,g.pendingProps,g.expirationTime),I.child=e,e.return=I;null!==g.sibling;)g=g.sibling,(e=e.sibling=QQ(g,g.pendingProps,g.expirationTime)).return=I;e.sibling=null}return I.child}function Dt(g){g.effectTag|=4}if(z)bt=function(g,I){for(var e=I.child;null!==e;){if(5===e.tag||6===e.tag)f(g,e.stateNode);else if(4!==e.tag&&null!==e.child){e.child.return=e,e=e.child;continue}if(e===I)break;for(;null===e.sibling;){if(null===e.return||e.return===I)return;e=e.return}e.sibling.return=e.return,e=e.sibling}},Zt=function(){},mt=function(g,I,e,t,C){if((g=g.memoizedProps)!==t){var Q=I.stateNode,F=Ue(Fe.current);e=J(Q,e,g,t,C,F),(I.updateQueue=e)&&Dt(I)}},xt=function(g,I,e,t){e!==t&&Dt(I)};else if(O){bt=function(g,I,e,t){for(var C=I.child;null!==C;){if(5===C.tag){var Q=C.stateNode;e&&t&&(Q=lg(Q,C.type,C.memoizedProps,C)),f(g,Q)}else if(6===C.tag)Q=C.stateNode,e&&t&&(Q=ag(Q,C.memoizedProps,C)),f(g,Q);else if(4!==C.tag){if(13===C.tag&&0!==(4&C.effectTag)&&(Q=null!==C.memoizedState)){var F=C.child;if(null!==F&&(null!==F.child&&(F.child.return=F,bt(g,F,!0,Q)),null!==(Q=F.sibling))){Q.return=C,C=Q;continue}}if(null!==C.child){C.child.return=C,C=C.child;continue}}if(C===I)break;for(;null===C.sibling;){if(null===C.return||C.return===I)return;C=C.return}C.sibling.return=C.return,C=C.sibling}};Zt=function(g){var I=g.stateNode;if(null!==g.firstEffect){var e=I.containerInfo,t=sg(e);!function g(I,e,t,C){for(var Q=e.child;null!==Q;){if(5===Q.tag){var F=Q.stateNode;t&&C&&(F=lg(F,Q.type,Q.memoizedProps,Q)),ig(I,F)}else if(6===Q.tag)F=Q.stateNode,t&&C&&(F=ag(F,Q.memoizedProps,Q)),ig(I,F);else if(4!==Q.tag){if(13===Q.tag&&0!==(4&Q.effectTag)&&(F=null!==Q.memoizedState)){var B=Q.child;if(null!==B&&(null!==B.child&&(B.child.return=B,g(I,B,!0,F)),null!==(F=B.sibling))){F.return=Q,Q=F;continue}}if(null!==Q.child){Q.child.return=Q,Q=Q.child;continue}}if(Q===e)break;for(;null===Q.sibling;){if(null===Q.return||Q.return===e)return;Q=Q.return}Q.sibling.return=Q.return,Q=Q.sibling}}(t,g,!1,!1),I.pendingChildren=t,Dt(g),cg(e,t)}},mt=function(g,I,e,t,C){var Q=g.stateNode,F=g.memoizedProps;if((g=null===I.firstEffect)&&F===t)I.stateNode=Q;else{var B=I.stateNode,n=Ue(Fe.current),U=null;F!==t&&(U=J(B,e,F,t,C,n)),g&&null===U?I.stateNode=Q:(Q=Ug(Q,U,e,F,t,I,g,B),X(Q,e,t,C,n)&&Dt(I),I.stateNode=Q,g?Dt(I):bt(Q,I,!1,!1))}},xt=function(g,I,e,t){e!==t&&(g=Ue(ne.current),e=Ue(Fe.current),I.stateNode=H(t,g,e,I),Dt(I))}}else Zt=function(){},mt=function(){},xt=function(){};function pt(g,I){switch(g.tailMode){case"hidden":I=g.tail;for(var e=null;null!==I;)null!==I.alternate&&(e=I),I=I.sibling;null===e?g.tail=null:e.sibling=null;break;case"collapsed":e=g.tail;for(var t=null;null!==e;)null!==e.alternate&&(t=e),e=e.sibling;null===t?I||null===g.tail?g.tail=null:g.tail.sibling=null:t.sibling=null}}function Et(g){switch(g.tag){case 1:Jg(g.type)&&vg();var I=g.effectTag;return 4096&I?(g.effectTag=-4097&I|64,g):null;case 3:if(ie(),kg(),0!==(64&(I=g.effectTag)))throw Error(B(285));return g.effectTag=-4097&I|64,g;case 5:return Ae(g),null;case 13:return Dg(le),4096&(I=g.effectTag)?(g.effectTag=-4097&I|64,g):null;case 19:return Dg(le),null;case 4:return ie(),null;case 10:return VI(g),null;default:return null}}function Nt(g,I){return{value:g,source:I,stack:Lg(I)}}var Wt="function"===typeof WeakSet?WeakSet:Set;function ft(g,I){var e=I.source,t=I.stack;null===t&&null!==e&&(t=Lg(e)),null!==e&&R(e.type),I=I.value,null!==g&&1===g.tag&&R(g.type);try{console.error(I)}catch(C){setTimeout((function(){throw C}))}}function Xt(g){var I=g.ref;if(null!==I)if("function"===typeof I)try{I(null)}catch(e){_C(g,e)}else I.current=null}function Jt(g,I){switch(I.tag){case 0:case 11:case 15:vt(2,0,I);break;case 1:if(256&I.effectTag&&null!==g){var e=g.memoizedProps,t=g.memoizedState;I=(g=I.stateNode).getSnapshotBeforeUpdate(I.elementType===I.type?e:ZI(I.type,e),t),g.__reactInternalSnapshotBeforeUpdate=I}break;case 3:case 5:case 6:case 4:case 17:break;default:throw Error(B(163))}}function vt(g,I,e){if(null!==(e=null!==(e=e.updateQueue)?e.lastEffect:null)){var t=e=e.next;do{if(0!==(t.tag&g)){var C=t.destroy;t.destroy=void 0,void 0!==C&&C()}0!==(t.tag&I)&&(C=t.create,t.destroy=C()),t=t.next}while(t!==e)}}function kt(g,I,e){switch("function"===typeof IQ&&IQ(I),I.tag){case 0:case 11:case 14:case 15:if(null!==(g=I.updateQueue)&&null!==(g=g.lastEffect)){var t=g.next;cI(97<e?97:e,(function(){var g=t;do{var e=g.destroy;if(void 0!==e){var C=I;try{e()}catch(Q){_C(C,Q)}}g=g.next}while(g!==t)}))}break;case 1:Xt(I),"function"===typeof(e=I.stateNode).componentWillUnmount&&function(g,I){try{I.props=g.memoizedProps,I.state=g.memoizedState,I.componentWillUnmount()}catch(e){_C(g,e)}}(I,e);break;case 5:Xt(I);break;case 4:z?Tt(g,I,e):O&&function(g){if(O){g=g.stateNode.containerInfo;var I=sg(g);Ag(g,I)}}(I)}}function Ht(g,I,e){for(var t=I;;)if(kt(g,t,e),null===t.child||z&&4===t.tag){if(t===I)break;for(;null===t.sibling;){if(null===t.return||t.return===I)return;t=t.return}t.sibling.return=t.return,t=t.sibling}else t.child.return=t,t=t.child}function Mt(g){var I=g.alternate;g.return=null,g.child=null,g.memoizedState=null,g.updateQueue=null,g.dependencies=null,g.alternate=null,g.firstEffect=null,g.lastEffect=null,g.pendingProps=null,g.memoizedProps=null,null!==I&&Mt(I)}function Yt(g){return 5===g.tag||3===g.tag||4===g.tag}function wt(g){if(z){g:{for(var I=g.return;null!==I;){if(Yt(I)){var e=I;break g}I=I.return}throw Error(B(160))}switch(I=e.stateNode,e.tag){case 5:var t=!1;break;case 3:case 4:I=I.containerInfo,t=!0;break;default:throw Error(B(161))}16&e.effectTag&&(Cg(I),e.effectTag&=-17);g:I:for(e=g;;){for(;null===e.sibling;){if(null===e.return||Yt(e.return)){e=null;break g}e=e.return}for(e.sibling.return=e.return,e=e.sibling;5!==e.tag&&6!==e.tag&&18!==e.tag;){if(2&e.effectTag)continue I;if(null===e.child||4===e.tag)continue I;e.child.return=e,e=e.child}if(!(2&e.effectTag)){e=e.stateNode;break g}}for(var C=g;;){var Q=5===C.tag||6===C.tag;if(Q)Q=Q?C.stateNode:C.stateNode.instance,e?t?Ig(I,Q,e):gg(I,Q,e):t?P(I,Q):j(I,Q);else if(4!==C.tag&&null!==C.child){C.child.return=C,C=C.child;continue}if(C===g)break;for(;null===C.sibling;){if(null===C.return||C.return===g)return;C=C.return}C.sibling.return=C.return,C=C.sibling}}}function Tt(g,I,e){for(var t,C,Q=I,F=!1;;){if(!F){F=Q.return;g:for(;;){if(null===F)throw Error(B(160));switch(t=F.stateNode,F.tag){case 5:C=!1;break g;case 3:case 4:t=t.containerInfo,C=!0;break g}F=F.return}F=!0}if(5===Q.tag||6===Q.tag)Ht(g,Q,e),C?tg(t,Q.stateNode):eg(t,Q.stateNode);else if(4===Q.tag){if(null!==Q.child){t=Q.stateNode.containerInfo,C=!0,Q.child.return=Q,Q=Q.child;continue}}else if(kt(g,Q,e),null!==Q.child){Q.child.return=Q,Q=Q.child;continue}if(Q===I)break;for(;null===Q.sibling;){if(null===Q.return||Q.return===I)return;4===(Q=Q.return).tag&&(F=!1)}Q.sibling.return=Q.return,Q=Q.sibling}}function zt(g,I){if(z)switch(I.tag){case 0:case 11:case 14:case 15:vt(4,8,I);break;case 1:break;case 5:var e=I.stateNode;if(null!=e){var t=I.memoizedProps;g=null!==g?g.memoizedProps:t;var C=I.type,Q=I.updateQueue;I.updateQueue=null,null!==Q&&$(e,Q,C,g,t,I)}break;case 6:if(null===I.stateNode)throw Error(B(162));e=I.memoizedProps,_(I.stateNode,null!==g?g.memoizedProps:e,e);break;case 3:K&&((I=I.stateNode).hydrate&&(I.hydrate=!1,Rg(I.containerInfo)));break;case 12:break;case 13:Ot(I),Kt(I);break;case 19:Kt(I);break;case 17:case 20:case 21:break;default:throw Error(B(163))}else{switch(I.tag){case 0:case 11:case 14:case 15:return void vt(4,8,I);case 12:return;case 13:return Ot(I),void Kt(I);case 19:return void Kt(I);case 3:K&&((e=I.stateNode).hydrate&&(e.hydrate=!1,Rg(e.containerInfo)))}g:if(O)switch(I.tag){case 1:case 5:case 6:case 20:break g;case 3:case 4:I=I.stateNode,Ag(I.containerInfo,I.pendingChildren);break g;default:throw Error(B(163))}}}function Ot(g){var I=g;if(null===g.memoizedState)var e=!1;else e=!0,I=g.child,lC=UI();if(z&&null!==I)g:if(g=I,z)for(I=g;;){if(5===I.tag){var t=I.stateNode;e?Qg(t):Bg(I.stateNode,I.memoizedProps)}else if(6===I.tag)t=I.stateNode,e?Fg(t):ng(t,I.memoizedProps);else{if(13===I.tag&&null!==I.memoizedState&&null===I.memoizedState.dehydrated){(t=I.child.sibling).return=I,I=t;continue}if(null!==I.child){I.child.return=I,I=I.child;continue}}if(I===g)break g;for(;null===I.sibling;){if(null===I.return||I.return===g)break g;I=I.return}I.sibling.return=I.return,I=I.sibling}}function Kt(g){var I=g.updateQueue;if(null!==I){g.updateQueue=null;var e=g.stateNode;null===e&&(e=g.stateNode=new Wt),I.forEach((function(I){var t=$C.bind(null,g,I);e.has(I)||(e.add(I),I.then(t,t))}))}}var jt="function"===typeof WeakMap?WeakMap:Map;function Pt(g,I,e){(e=fI(e,null)).tag=3,e.payload={element:null};var t=I.value;return e.callback=function(){rC||(rC=!0,oC=t),ft(g,I)},e}function _t(g,I,e){(e=fI(e,null)).tag=3;var t=g.type.getDerivedStateFromError;if("function"===typeof t){var C=I.value;e.payload=function(){return ft(g,I),t(C)}}var Q=g.stateNode;return null!==Q&&"function"===typeof Q.componentDidCatch&&(e.callback=function(){"function"!==typeof t&&(null===dC?dC=new Set([this]):dC.add(this),ft(g,I));var e=I.stack;this.componentDidCatch(I.value,{componentStack:null!==e?e:""})}),e}var qt,$t=Math.ceil,gC=n.ReactCurrentDispatcher,IC=n.ReactCurrentOwner,eC=16,tC=0,CC=null,QC=null,FC=0,BC=0,nC=null,UC=1073741823,sC=1073741823,iC=null,cC=0,AC=!1,lC=0,aC=null,rC=!1,oC=null,dC=null,uC=!1,yC=null,bC=90,ZC=null,mC=0,xC=null,RC=0;function SC(){return 0!==(48&tC)?1073741821-(UI()/10|0):0!==RC?RC:RC=1073741821-(UI()/10|0)}function GC(g,I,e){if(0===(2&(I=I.mode)))return 1073741823;var t=sI();if(0===(4&I))return 99===t?1073741823:1073741822;if(0!==(tC&eC))return FC;if(null!==e)g=dI(g,0|e.timeoutMs||5e3,250);else switch(t){case 99:g=1073741823;break;case 98:g=dI(g,150,100);break;case 97:case 96:g=dI(g,5e3,250);break;case 95:g=2;break;default:throw Error(B(326))}return null!==CC&&g===FC&&--g,g}function LC(g,I){if(50<mC)throw mC=0,xC=null,Error(B(185));if(null!==(g=VC(g,I))){var e=sI();1073741823===I?0!==(8&tC)&&0===(48&tC)?EC(g):(DC(g),0===tC&&aI()):DC(g),0===(4&tC)||98!==e&&99!==e||(null===ZC?ZC=new Map([[g,I]]):(void 0===(e=ZC.get(g))||e>I)&&ZC.set(g,I))}}function VC(g,I){g.expirationTime<I&&(g.expirationTime=I);var e=g.alternate;null!==e&&e.expirationTime<I&&(e.expirationTime=I);var t=g.return,C=null;if(null===t&&3===g.tag)C=g.stateNode;else for(;null!==t;){if(e=t.alternate,t.childExpirationTime<I&&(t.childExpirationTime=I),null!==e&&e.childExpirationTime<I&&(e.childExpirationTime=I),null===t.return&&3===t.tag){C=t.stateNode;break}t=t.return}return null!==C&&(CC===C&&(vC(I),4===BC&&cQ(C,FC)),AQ(C,I)),C}function hC(g){var I=g.lastExpiredTime;return 0!==I?I:iQ(g,I=g.firstPendingTime)?(I=g.lastPingedTime)>(g=g.nextKnownPendingLevel)?I:g:I}function DC(g){if(0!==g.lastExpiredTime)g.callbackExpirationTime=1073741823,g.callbackPriority=99,g.callbackNode=lI(EC.bind(null,g));else{var I=hC(g),e=g.callbackNode;if(0===I)null!==e&&(g.callbackNode=null,g.callbackExpirationTime=0,g.callbackPriority=90);else{var t=SC();if(1073741823===I?t=99:1===I||2===I?t=95:t=0>=(t=10*(1073741821-I)-10*(1073741821-t))?99:250>=t?98:5250>=t?97:95,null!==e){var C=g.callbackPriority;if(g.callbackExpirationTime===I&&C>=t)return;e!==tI&&Og(e)}g.callbackExpirationTime=I,g.callbackPriority=t,I=1073741823===I?lI(EC.bind(null,g)):AI(t,pC.bind(null,g),{timeout:10*(1073741821-I)-UI()}),g.callbackNode=I}}}function pC(g,I){if(RC=0,I)return lQ(g,I=SC()),DC(g),null;var e=hC(g);if(0!==e){if(I=g.callbackNode,0!==(48&tC))throw Error(B(327));if(KC(),g===CC&&e===FC||WC(g,e),null!==QC){var t=tC;tC|=eC;for(var C=XC();;)try{HC();break}catch(n){fC(g,n)}if(GI(),tC=t,gC.current=C,1===BC)throw I=nC,WC(g,e),cQ(g,e),DC(g),I;if(null===QC)switch(C=g.finishedWork=g.current.alternate,g.finishedExpirationTime=e,t=BC,CC=null,t){case 0:case 1:throw Error(B(345));case 2:lQ(g,2<e?2:e);break;case 3:if(cQ(g,e),e===(t=g.lastSuspendedTime)&&(g.nextKnownPendingLevel=wC(C)),1073741823===UC&&10<(C=lC+500-UI())){if(AC){var Q=g.lastPingedTime;if(0===Q||Q>=e){g.lastPingedTime=e,WC(g,e);break}}if(0!==(Q=hC(g))&&Q!==e)break;if(0!==t&&t!==e){g.lastPingedTime=t;break}g.timeoutHandle=M(TC.bind(null,g),C);break}TC(g);break;case 4:if(cQ(g,e),e===(t=g.lastSuspendedTime)&&(g.nextKnownPendingLevel=wC(C)),AC&&(0===(C=g.lastPingedTime)||C>=e)){g.lastPingedTime=e,WC(g,e);break}if(0!==(C=hC(g))&&C!==e)break;if(0!==t&&t!==e){g.lastPingedTime=t;break}if(1073741823!==sC?t=10*(1073741821-sC)-UI():1073741823===UC?t=0:(t=10*(1073741821-UC)-5e3,0>(t=(C=UI())-t)&&(t=0),(e=10*(1073741821-e)-C)<(t=(120>t?120:480>t?480:1080>t?1080:1920>t?1920:3e3>t?3e3:4320>t?4320:1960*$t(t/1960))-t)&&(t=e)),10<t){g.timeoutHandle=M(TC.bind(null,g),t);break}TC(g);break;case 5:if(1073741823!==UC&&null!==iC){Q=UC;var F=iC;if(0>=(t=0|F.busyMinDurationMs)?t=0:(C=0|F.busyDelayMs,t=(Q=UI()-(10*(1073741821-Q)-(0|F.timeoutMs||5e3)))<=C?0:C+t-Q),10<t){cQ(g,e),g.timeoutHandle=M(TC.bind(null,g),t);break}}TC(g);break;default:throw Error(B(329))}if(DC(g),g.callbackNode===I)return pC.bind(null,g)}}return null}function EC(g){var I=g.lastExpiredTime;if(I=0!==I?I:1073741823,g.finishedExpirationTime===I)TC(g);else{if(0!==(48&tC))throw Error(B(327));if(KC(),g===CC&&I===FC||WC(g,I),null!==QC){var e=tC;tC|=eC;for(var t=XC();;)try{kC();break}catch(C){fC(g,C)}if(GI(),tC=e,gC.current=t,1===BC)throw e=nC,WC(g,I),cQ(g,I),DC(g),e;if(null!==QC)throw Error(B(261));g.finishedWork=g.current.alternate,g.finishedExpirationTime=I,CC=null,TC(g),DC(g)}}return null}function NC(g,I){if(0!==(48&tC))throw Error(B(187));var e=tC;tC|=1;try{return cI(99,g.bind(null,I))}finally{tC=e,aI()}}function WC(g,I){g.finishedWork=null,g.finishedExpirationTime=0;var e=g.timeoutHandle;if(e!==w&&(g.timeoutHandle=w,Y(e)),null!==QC)for(e=QC.return;null!==e;){var t=e;switch(t.tag){case 1:var C=t.type.childContextTypes;null!==C&&void 0!==C&&vg();break;case 3:ie(),kg();break;case 5:Ae(t);break;case 4:ie();break;case 13:case 19:Dg(le);break;case 10:VI(t)}e=e.return}CC=g,QC=QQ(g.current,null),FC=I,BC=0,nC=null,sC=UC=1073741823,iC=null,cC=0,AC=!1}function fC(g,I){for(;;){try{if(GI(),We(),null===QC||null===QC.return)return BC=1,nC=I,null;g:{var e=g,t=QC.return,C=QC,Q=I;if(I=FC,C.effectTag|=2048,C.firstEffect=C.lastEffect=null,null!==Q&&"object"===typeof Q&&"function"===typeof Q.then){var F=Q,B=0!==(1&le.current),n=t;do{var U;if(U=13===n.tag){var s=n.memoizedState;if(null!==s)U=null!==s.dehydrated;else{var i=n.memoizedProps;U=void 0!==i.fallback&&(!0!==i.unstable_avoidThisFallback||!B)}}if(U){var c=n.updateQueue;if(null===c){var A=new Set;A.add(F),n.updateQueue=A}else c.add(F);if(0===(2&n.mode)){if(n.effectTag|=64,C.effectTag&=-2981,1===C.tag)if(null===C.alternate)C.tag=17;else{var l=fI(1073741823,null);l.tag=2,JI(C,l)}C.expirationTime=1073741823;break g}Q=void 0,C=I;var a=e.pingCache;if(null===a?(a=e.pingCache=new jt,Q=new Set,a.set(F,Q)):void 0===(Q=a.get(F))&&(Q=new Set,a.set(F,Q)),!Q.has(C)){Q.add(C);var r=qC.bind(null,e,F,C);F.then(r,r)}n.effectTag|=4096,n.expirationTime=I;break g}n=n.return}while(null!==n);Q=Error((R(C.type)||"A React component")+" suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display."+Lg(C))}5!==BC&&(BC=2),Q=Nt(Q,C),n=t;do{switch(n.tag){case 3:F=Q,n.effectTag|=4096,n.expirationTime=I,vI(n,Pt(n,F,I));break g;case 1:F=Q;var o=n.type,d=n.stateNode;if(0===(64&n.effectTag)&&("function"===typeof o.getDerivedStateFromError||null!==d&&"function"===typeof d.componentDidCatch&&(null===dC||!dC.has(d)))){n.effectTag|=4096,n.expirationTime=I,vI(n,_t(n,F,I));break g}}n=n.return}while(null!==n)}QC=YC(QC)}catch(u){I=u;continue}break}}function XC(){var g=gC.current;return gC.current=qe,null===g?qe:g}function JC(g,I){g<UC&&2<g&&(UC=g),null!==I&&g<sC&&2<g&&(sC=g,iC=I)}function vC(g){g>cC&&(cC=g)}function kC(){for(;null!==QC;)QC=MC(QC)}function HC(){for(;null!==QC&&!Kg();)QC=MC(QC)}function MC(g){var I=qt(g.alternate,g,FC);return g.memoizedProps=g.pendingProps,null===I&&(I=YC(g)),IC.current=null,I}function YC(g){QC=g;do{var I=QC.alternate;if(g=QC.return,0===(2048&QC.effectTag)){g:{var e=I,t=FC,C=(I=QC).pendingProps;switch(I.tag){case 2:case 16:break;case 15:case 0:break;case 1:Jg(I.type)&&vg();break;case 3:ie(),kg(),(C=I.stateNode).pendingContext&&(C.context=C.pendingContext,C.pendingContext=null),(null===e||null===e.child)&&nt(I)&&Dt(I),Zt(I);break;case 5:Ae(I);var Q=Ue(ne.current);if(t=I.type,null!==e&&null!=I.stateNode)mt(e,I,t,C,Q),e.ref!==I.ref&&(I.effectTag|=128);else if(C){if(e=Ue(Fe.current),nt(I)){if(C=I,!K)throw Error(B(175));e=Zg(C.stateNode,C.type,C.memoizedProps,Q,e,C),C.updateQueue=e,(e=null!==e)&&Dt(I)}else{var F=W(t,C,Q,e,I);bt(F,I,!1,!1),I.stateNode=F,X(F,t,C,Q,e)&&Dt(I)}null!==I.ref&&(I.effectTag|=128)}else if(null===I.stateNode)throw Error(B(166));break;case 6:if(e&&null!=I.stateNode)xt(e,I,e.memoizedProps,C);else{if("string"!==typeof C&&null===I.stateNode)throw Error(B(166));if(e=Ue(ne.current),Q=Ue(Fe.current),nt(I)){if(e=I,!K)throw Error(B(176));(e=mg(e.stateNode,e.memoizedProps,e))&&Dt(I)}else I.stateNode=H(C,e,Q,I)}break;case 11:break;case 13:if(Dg(le),C=I.memoizedState,0!==(64&I.effectTag)){I.expirationTime=t;break g}C=null!==C,Q=!1,null===e?void 0!==I.memoizedProps.fallback&&nt(I):(Q=null!==(t=e.memoizedState),C||null===t||null!==(t=e.child.sibling)&&(null!==(F=I.firstEffect)?(I.firstEffect=t,t.nextEffect=F):(I.firstEffect=I.lastEffect=t,t.nextEffect=null),t.effectTag=8)),C&&!Q&&0!==(2&I.mode)&&(null===e&&!0!==I.memoizedProps.unstable_avoidThisFallback||0!==(1&le.current)?0===BC&&(BC=3):(0!==BC&&3!==BC||(BC=4),0!==cC&&null!==CC&&(cQ(CC,FC),AQ(CC,cC)))),O&&C&&(I.effectTag|=4),z&&(C||Q)&&(I.effectTag|=4);break;case 7:case 8:case 12:break;case 4:ie(),Zt(I);break;case 10:VI(I);break;case 9:case 14:break;case 17:Jg(I.type)&&vg();break;case 19:if(Dg(le),null===(C=I.memoizedState))break;if(Q=0!==(64&I.effectTag),null===(F=C.rendering)){if(Q)pt(C,!1);else if(0!==BC||null!==e&&0!==(64&e.effectTag))for(e=I.child;null!==e;){if(null!==(F=ae(e))){for(I.effectTag|=64,pt(C,!1),null!==(e=F.updateQueue)&&(I.updateQueue=e,I.effectTag|=4),null===C.lastEffect&&(I.firstEffect=null),I.lastEffect=C.lastEffect,e=t,C=I.child;null!==C;)t=e,(Q=C).effectTag&=2,Q.nextEffect=null,Q.firstEffect=null,Q.lastEffect=null,null===(F=Q.alternate)?(Q.childExpirationTime=0,Q.expirationTime=t,Q.child=null,Q.memoizedProps=null,Q.memoizedState=null,Q.updateQueue=null,Q.dependencies=null):(Q.childExpirationTime=F.childExpirationTime,Q.expirationTime=F.expirationTime,Q.child=F.child,Q.memoizedProps=F.memoizedProps,Q.memoizedState=F.memoizedState,Q.updateQueue=F.updateQueue,t=F.dependencies,Q.dependencies=null===t?null:{expirationTime:t.expirationTime,firstContext:t.firstContext,responders:t.responders}),C=C.sibling;pg(le,1&le.current|2),I=I.child;break g}e=e.sibling}}else{if(!Q)if(null!==(e=ae(F))){if(I.effectTag|=64,Q=!0,null!==(e=e.updateQueue)&&(I.updateQueue=e,I.effectTag|=4),pt(C,!0),null===C.tail&&"hidden"===C.tailMode){null!==(I=I.lastEffect=C.lastEffect)&&(I.nextEffect=null);break}}else UI()>C.tailExpiration&&1<t&&(I.effectTag|=64,Q=!0,pt(C,!1),I.expirationTime=I.childExpirationTime=t-1);C.isBackwards?(F.sibling=I.child,I.child=F):(null!==(e=C.last)?e.sibling=F:I.child=F,C.last=F)}if(null!==C.tail){0===C.tailExpiration&&(C.tailExpiration=UI()+500),e=C.tail,C.rendering=e,C.tail=e.sibling,C.lastEffect=I.lastEffect,e.sibling=null,C=le.current,pg(le,C=Q?1&C|2:1&C),I=e;break g}break;case 20:case 21:break;default:throw Error(B(156,I.tag))}I=null}if(e=QC,1===FC||1!==e.childExpirationTime){for(C=0,Q=e.child;null!==Q;)(t=Q.expirationTime)>C&&(C=t),(F=Q.childExpirationTime)>C&&(C=F),Q=Q.sibling;e.childExpirationTime=C}if(null!==I)return I;null!==g&&0===(2048&g.effectTag)&&(null===g.firstEffect&&(g.firstEffect=QC.firstEffect),null!==QC.lastEffect&&(null!==g.lastEffect&&(g.lastEffect.nextEffect=QC.firstEffect),g.lastEffect=QC.lastEffect),1<QC.effectTag&&(null!==g.lastEffect?g.lastEffect.nextEffect=QC:g.firstEffect=QC,g.lastEffect=QC))}else{if(null!==(I=Et(QC)))return I.effectTag&=2047,I;null!==g&&(g.firstEffect=g.lastEffect=null,g.effectTag|=2048)}if(null!==(I=QC.sibling))return I;QC=g}while(null!==QC);return 0===BC&&(BC=5),null}function wC(g){var I=g.expirationTime;return I>(g=g.childExpirationTime)?I:g}function TC(g){var I=sI();return cI(99,zC.bind(null,g,I)),null}function zC(g,I){if(KC(),0!==(48&tC))throw Error(B(327));var e=g.finishedWork,t=g.finishedExpirationTime;if(null===e)return null;if(g.finishedWork=null,g.finishedExpirationTime=0,e===g.current)throw Error(B(177));g.callbackNode=null,g.callbackExpirationTime=0,g.callbackPriority=90,g.nextKnownPendingLevel=0;var C=wC(e);if(g.firstPendingTime=C,t<=g.lastSuspendedTime?g.firstSuspendedTime=g.lastSuspendedTime=g.nextKnownPendingLevel=0:t<=g.firstSuspendedTime&&(g.firstSuspendedTime=t-1),t<=g.lastPingedTime&&(g.lastPingedTime=0),t<=g.lastExpiredTime&&(g.lastExpiredTime=0),g===CC&&(QC=CC=null,FC=0),1<e.effectTag?null!==e.lastEffect?(e.lastEffect.nextEffect=e,C=e.firstEffect):C=e:C=e.firstEffect,null!==C){var Q=tC;tC|=32,IC.current=null,E(g.containerInfo),aC=C;do{try{OC()}catch(G){if(null===aC)throw Error(B(330));_C(aC,G),aC=aC.nextEffect}}while(null!==aC);aC=C;do{try{for(var F=g,n=I;null!==aC;){var U=aC.effectTag;if(16&U&&z&&Cg(aC.stateNode),128&U){var s=aC.alternate;if(null!==s){var i=s.ref;null!==i&&("function"===typeof i?i(null):i.current=null)}}switch(1038&U){case 2:wt(aC),aC.effectTag&=-3;break;case 6:wt(aC),aC.effectTag&=-3,zt(aC.alternate,aC);break;case 1024:aC.effectTag&=-1025;break;case 1028:aC.effectTag&=-1025,zt(aC.alternate,aC);break;case 4:zt(aC.alternate,aC);break;case 8:var c=F,A=aC,l=n;z?Tt(c,A,l):Ht(c,A,l),Mt(A)}aC=aC.nextEffect}}catch(G){if(null===aC)throw Error(B(330));_C(aC,G),aC=aC.nextEffect}}while(null!==aC);N(g.containerInfo),g.current=e,aC=C;do{try{for(U=t;null!==aC;){var a=aC.effectTag;if(36&a){var r=aC.alternate;switch(i=U,(s=aC).tag){case 0:case 11:case 15:vt(16,32,s);break;case 1:var o=s.stateNode;if(4&s.effectTag)if(null===r)o.componentDidMount();else{var d=s.elementType===s.type?r.memoizedProps:ZI(s.type,r.memoizedProps);o.componentDidUpdate(d,r.memoizedState,o.__reactInternalSnapshotBeforeUpdate)}var u=s.updateQueue;null!==u&&YI(0,u,o);break;case 3:var y=s.updateQueue;if(null!==y){if(F=null,null!==s.child)switch(s.child.tag){case 5:F=h(s.child.stateNode);break;case 1:F=s.child.stateNode}YI(0,y,F)}break;case 5:var b=s.stateNode;null===r&&4&s.effectTag&&q(b,s.type,s.memoizedProps,s);break;case 6:case 4:case 12:break;case 13:if(K&&null===s.memoizedState){var Z=s.alternate;if(null!==Z){var m=Z.memoizedState;if(null!==m){var x=m.dehydrated;null!==x&&Sg(x)}}}break;case 19:case 17:case 20:case 21:break;default:throw Error(B(163))}}if(128&a){s=void 0;var R=aC.ref;if(null!==R){var S=aC.stateNode;switch(aC.tag){case 5:s=h(S);break;default:s=S}"function"===typeof R?R(s):R.current=s}}aC=aC.nextEffect}}catch(G){if(null===aC)throw Error(B(330));_C(aC,G),aC=aC.nextEffect}}while(null!==aC);aC=null,CI(),tC=Q}else g.current=e;if(uC)uC=!1,yC=g,bC=I;else for(aC=C;null!==aC;)I=aC.nextEffect,aC.nextEffect=null,aC=I;if(0===(I=g.firstPendingTime)&&(dC=null),1073741823===I?g===xC?mC++:(mC=0,xC=g):mC=0,"function"===typeof gQ&&gQ(e.stateNode,t),DC(g),rC)throw rC=!1,g=oC,oC=null,g;return 0!==(8&tC)||aI(),null}function OC(){for(;null!==aC;){var g=aC.effectTag;0!==(256&g)&&Jt(aC.alternate,aC),0===(512&g)||uC||(uC=!0,AI(97,(function(){return KC(),null}))),aC=aC.nextEffect}}function KC(){if(90!==bC){var g=97<bC?97:bC;return bC=90,cI(g,jC)}}function jC(){if(null===yC)return!1;var g=yC;if(yC=null,0!==(48&tC))throw Error(B(331));var I=tC;for(tC|=32,g=g.current.firstEffect;null!==g;){try{var e=g;if(0!==(512&e.effectTag))switch(e.tag){case 0:case 11:case 15:vt(128,0,e),vt(0,64,e)}}catch(t){if(null===g)throw Error(B(330));_C(g,t)}e=g.nextEffect,g.nextEffect=null,g=e}return tC=I,aI(),!0}function PC(g,I,e){JI(g,I=Pt(g,I=Nt(e,I),1073741823)),null!==(g=VC(g,1073741823))&&DC(g)}function _C(g,I){if(3===g.tag)PC(g,g,I);else for(var e=g.return;null!==e;){if(3===e.tag){PC(e,g,I);break}if(1===e.tag){var t=e.stateNode;if("function"===typeof e.type.getDerivedStateFromError||"function"===typeof t.componentDidCatch&&(null===dC||!dC.has(t))){JI(e,g=_t(e,g=Nt(I,g),1073741823)),null!==(e=VC(e,1073741823))&&DC(e);break}}e=e.return}}function qC(g,I,e){var t=g.pingCache;null!==t&&t.delete(I),CC===g&&FC===e?4===BC||3===BC&&1073741823===UC&&UI()-lC<500?WC(g,FC):AC=!0:iQ(g,e)&&(0!==(I=g.lastPingedTime)&&I<e||(g.lastPingedTime=e,g.finishedExpirationTime===e&&(g.finishedExpirationTime=0,g.finishedWork=null),DC(g)))}function $C(g,I){var e=g.stateNode;null!==e&&e.delete(I),0===(I=0)&&(I=GC(I=SC(),g,null)),null!==(g=VC(g,I))&&DC(g)}qt=function(g,I,e){var t=I.expirationTime;if(null!==g){var C=I.pendingProps;if(g.memoizedProps!==C||Wg.current)it=!0;else{if(t<e){switch(it=!1,I.tag){case 3:yt(I),Ut();break;case 5:if(ce(I),4&I.mode&&1!==e&&k(I.type,C))return I.expirationTime=I.childExpirationTime=1,null;break;case 1:Jg(I.type)&&Yg(I);break;case 4:se(I,I.stateNode.containerInfo);break;case 10:LI(I,I.memoizedProps.value);break;case 13:if(null!==I.memoizedState)return 0!==(t=I.child.childExpirationTime)&&t>=e?St(g,I,e):(pg(le,1&le.current),null!==(I=ht(g,I,e))?I.sibling:null);pg(le,1&le.current);break;case 19:if(t=I.childExpirationTime>=e,0!==(64&g.effectTag)){if(t)return Vt(g,I,e);I.effectTag|=64}if(null!==(C=I.memoizedState)&&(C.rendering=null,C.tail=null),pg(le,le.current),!t)return null}return ht(g,I,e)}it=!1}}else it=!1;switch(I.expirationTime=0,I.tag){case 2:if(t=I.type,null!==g&&(g.alternate=null,I.alternate=null,I.effectTag|=2),g=I.pendingProps,C=Xg(I,Ng.current),DI(I,e),C=Ne(null,I,t,g,C,e),I.effectTag|=1,"object"===typeof C&&null!==C&&"function"===typeof C.render&&void 0===C.$$typeof){if(I.tag=1,We(),Jg(t)){var Q=!0;Yg(I)}else Q=!1;I.memoizedState=null!==C.state&&void 0!==C.state?C.state:null;var F=t.getDerivedStateFromProps;"function"===typeof F&&OI(I,t,F,g),C.updater=KI,I.stateNode=C,C._reactInternalFiber=I,qI(I,t,g,e),I=ut(null,I,t,!0,Q,e)}else I.tag=0,ct(null,I,C,e),I=I.child;return I;case 16:if(C=I.elementType,null!==g&&(g.alternate=null,I.alternate=null,I.effectTag|=2),g=I.pendingProps,function(g){if(-1===g._status){g._status=0;var I=g._ctor;I=I(),g._result=I,I.then((function(I){0===g._status&&(I=I.default,g._status=1,g._result=I)}),(function(I){0===g._status&&(g._status=2,g._result=I)}))}}(C),1!==C._status)throw C._result;switch(C=C._result,I.type=C,Q=I.tag=function(g){if("function"===typeof g)return CQ(g)?1:0;if(void 0!==g&&null!==g){if((g=g.$$typeof)===d)return 11;if(g===b)return 14}return 2}(C),g=ZI(C,g),Q){case 0:I=ot(null,I,C,g,e);break;case 1:I=dt(null,I,C,g,e);break;case 11:I=At(null,I,C,g,e);break;case 14:I=lt(null,I,C,ZI(C.type,g),t,e);break;default:throw Error(B(306,C,""))}return I;case 0:return t=I.type,C=I.pendingProps,ot(g,I,t,C=I.elementType===t?C:ZI(t,C),e);case 1:return t=I.type,C=I.pendingProps,dt(g,I,t,C=I.elementType===t?C:ZI(t,C),e);case 3:if(yt(I),null===(t=I.updateQueue))throw Error(B(282));if(C=null!==(C=I.memoizedState)?C.element:null,MI(I,t,I.pendingProps,null,e),(t=I.memoizedState.element)===C)Ut(),I=ht(g,I,e);else{if((C=I.stateNode.hydrate)&&(K?(et=bg(I.stateNode.containerInfo),It=I,C=tt=!0):C=!1),C)for(e=Ce(I,null,t,e),I.child=e;e;)e.effectTag=-3&e.effectTag|1024,e=e.sibling;else ct(g,I,t,e),Ut();I=I.child}return I;case 5:return ce(I),null===g&&Ft(I),t=I.type,C=I.pendingProps,Q=null!==g?g.memoizedProps:null,F=C.children,v(t,C)?F=null:null!==Q&&v(t,Q)&&(I.effectTag|=16),rt(g,I),4&I.mode&&1!==e&&k(t,C)?(I.expirationTime=I.childExpirationTime=1,I=null):(ct(g,I,F,e),I=I.child),I;case 6:return null===g&&Ft(I),null;case 13:return St(g,I,e);case 4:return se(I,I.stateNode.containerInfo),t=I.pendingProps,null===g?I.child=te(I,null,t,e):ct(g,I,t,e),I.child;case 11:return t=I.type,C=I.pendingProps,At(g,I,t,C=I.elementType===t?C:ZI(t,C),e);case 7:return ct(g,I,I.pendingProps,e),I.child;case 8:case 12:return ct(g,I,I.pendingProps.children,e),I.child;case 10:g:{if(t=I.type._context,C=I.pendingProps,F=I.memoizedProps,LI(I,Q=C.value),null!==F){var n=F.value;if(0===(Q=uI(n,Q)?0:0|("function"===typeof t._calculateChangedBits?t._calculateChangedBits(n,Q):1073741823))){if(F.children===C.children&&!Wg.current){I=ht(g,I,e);break g}}else for(null!==(n=I.child)&&(n.return=I);null!==n;){var U=n.dependencies;if(null!==U){F=n.child;for(var s=U.firstContext;null!==s;){if(s.context===t&&0!==(s.observedBits&Q)){1===n.tag&&((s=fI(e,null)).tag=2,JI(n,s)),n.expirationTime<e&&(n.expirationTime=e),null!==(s=n.alternate)&&s.expirationTime<e&&(s.expirationTime=e),hI(n.return,e),U.expirationTime<e&&(U.expirationTime=e);break}s=s.next}}else F=10===n.tag&&n.type===I.type?null:n.child;if(null!==F)F.return=n;else for(F=n;null!==F;){if(F===I){F=null;break}if(null!==(n=F.sibling)){n.return=F.return,F=n;break}F=F.return}n=F}}ct(g,I,C.children,e),I=I.child}return I;case 9:return C=I.type,t=(Q=I.pendingProps).children,DI(I,e),t=t(C=pI(C,Q.unstable_observedBits)),I.effectTag|=1,ct(g,I,t,e),I.child;case 14:return Q=ZI(C=I.type,I.pendingProps),lt(g,I,C,Q=ZI(C.type,Q),t,e);case 15:return at(g,I,I.type,I.pendingProps,t,e);case 17:return t=I.type,C=I.pendingProps,C=I.elementType===t?C:ZI(t,C),null!==g&&(g.alternate=null,I.alternate=null,I.effectTag|=2),I.tag=1,Jg(t)?(g=!0,Yg(I)):g=!1,DI(I,e),PI(I,t,C),qI(I,t,C,e),ut(null,I,t,!0,g,e);case 19:return Vt(g,I,e)}throw Error(B(156,I.tag))};var gQ=null,IQ=null;function eQ(g,I,e,t){this.tag=g,this.key=e,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=I,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=t,this.effectTag=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childExpirationTime=this.expirationTime=0,this.alternate=null}function tQ(g,I,e,t){return new eQ(g,I,e,t)}function CQ(g){return!(!(g=g.prototype)||!g.isReactComponent)}function QQ(g,I){var e=g.alternate;return null===e?((e=tQ(g.tag,I,g.key,g.mode)).elementType=g.elementType,e.type=g.type,e.stateNode=g.stateNode,e.alternate=g,g.alternate=e):(e.pendingProps=I,e.effectTag=0,e.nextEffect=null,e.firstEffect=null,e.lastEffect=null),e.childExpirationTime=g.childExpirationTime,e.expirationTime=g.expirationTime,e.child=g.child,e.memoizedProps=g.memoizedProps,e.memoizedState=g.memoizedState,e.updateQueue=g.updateQueue,I=g.dependencies,e.dependencies=null===I?null:{expirationTime:I.expirationTime,firstContext:I.firstContext,responders:I.responders},e.sibling=g.sibling,e.index=g.index,e.ref=g.ref,e}function FQ(g,I,e,t,C,Q){var F=2;if(t=g,"function"===typeof g)CQ(g)&&(F=1);else if("string"===typeof g)F=5;else g:switch(g){case c:return BQ(e.children,C,Q,I);case o:F=8,C|=7;break;case A:F=8,C|=1;break;case l:return(g=tQ(12,e,I,8|C)).elementType=l,g.type=l,g.expirationTime=Q,g;case u:return(g=tQ(13,e,I,C)).type=u,g.elementType=u,g.expirationTime=Q,g;case y:return(g=tQ(19,e,I,C)).elementType=y,g.expirationTime=Q,g;default:if("object"===typeof g&&null!==g)switch(g.$$typeof){case a:F=10;break g;case r:F=9;break g;case d:F=11;break g;case b:F=14;break g;case Z:F=16,t=null;break g}throw Error(B(130,null==g?g:typeof g,""))}return(I=tQ(F,e,I,C)).elementType=g,I.type=t,I.expirationTime=Q,I}function BQ(g,I,e,t){return(g=tQ(7,g,t,I)).expirationTime=e,g}function nQ(g,I,e){return(g=tQ(6,g,null,I)).expirationTime=e,g}function UQ(g,I,e){return(I=tQ(4,null!==g.children?g.children:[],g.key,I)).expirationTime=e,I.stateNode={containerInfo:g.containerInfo,pendingChildren:null,implementation:g.implementation},I}function sQ(g,I,e){this.tag=I,this.current=null,this.containerInfo=g,this.pingCache=this.pendingChildren=null,this.finishedExpirationTime=0,this.finishedWork=null,this.timeoutHandle=w,this.pendingContext=this.context=null,this.hydrate=e,this.callbackNode=null,this.callbackPriority=90,this.lastExpiredTime=this.lastPingedTime=this.nextKnownPendingLevel=this.lastSuspendedTime=this.firstSuspendedTime=this.firstPendingTime=0}function iQ(g,I){var e=g.firstSuspendedTime;return g=g.lastSuspendedTime,0!==e&&e>=I&&g<=I}function cQ(g,I){var e=g.firstSuspendedTime,t=g.lastSuspendedTime;e<I&&(g.firstSuspendedTime=I),(t>I||0===e)&&(g.lastSuspendedTime=I),I<=g.lastPingedTime&&(g.lastPingedTime=0),I<=g.lastExpiredTime&&(g.lastExpiredTime=0)}function AQ(g,I){I>g.firstPendingTime&&(g.firstPendingTime=I);var e=g.firstSuspendedTime;0!==e&&(I>=e?g.firstSuspendedTime=g.lastSuspendedTime=g.nextKnownPendingLevel=0:I>=g.lastSuspendedTime&&(g.lastSuspendedTime=I+1),I>g.nextKnownPendingLevel&&(g.nextKnownPendingLevel=I))}function lQ(g,I){var e=g.lastExpiredTime;(0===e||e>I)&&(g.lastExpiredTime=I)}function aQ(g){var I=g._reactInternalFiber;if(void 0===I){if("function"===typeof g.render)throw Error(B(188));throw Error(B(268,Object.keys(g)))}return null===(g=V(I))?null:g.stateNode}function rQ(g,I){null!==(g=g.memoizedState)&&null!==g.dehydrated&&g.retryTime<I&&(g.retryTime=I)}function oQ(g,I){rQ(g,I),(g=g.alternate)&&rQ(g,I)}var dQ={createContainer:function(g,I,e){return g=new sQ(g,I,e),I=tQ(3,null,null,2===I?7:1===I?3:0),g.current=I,I.stateNode=g},updateContainer:function(g,I,e,t){var C=I.current,Q=SC(),F=TI.suspense;Q=GC(Q,C,F);g:if(e){I:{if(S(e=e._reactInternalFiber)!==e||1!==e.tag)throw Error(B(170));var n=e;do{switch(n.tag){case 3:n=n.stateNode.context;break I;case 1:if(Jg(n.type)){n=n.stateNode.__reactInternalMemoizedMergedChildContext;break I}}n=n.return}while(null!==n);throw Error(B(171))}if(1===e.tag){var U=e.type;if(Jg(U)){e=Mg(e,U,n);break g}}e=n}else e=Eg;return null===I.context?I.context=e:I.pendingContext=e,(I=fI(Q,F)).payload={element:g},null!==(t=void 0===t?null:t)&&(I.callback=t),JI(C,I),LC(C,Q),Q},batchedEventUpdates:function(g,I){var e=tC;tC|=2;try{return g(I)}finally{0===(tC=e)&&aI()}},batchedUpdates:function(g,I){var e=tC;tC|=1;try{return g(I)}finally{0===(tC=e)&&aI()}},unbatchedUpdates:function(g,I){var e=tC;tC&=-2,tC|=8;try{return g(I)}finally{0===(tC=e)&&aI()}},deferredUpdates:function(g){return cI(97,g)},syncUpdates:function(g,I,e,t){return cI(99,g.bind(null,I,e,t))},discreteUpdates:function(g,I,e,t){var C=tC;tC|=4;try{return cI(98,g.bind(null,I,e,t))}finally{0===(tC=C)&&aI()}},flushDiscreteUpdates:function(){0===(49&tC)&&(function(){if(null!==ZC){var g=ZC;ZC=null,g.forEach((function(g,I){lQ(I,g),DC(I)})),aI()}}(),KC())},flushControlled:function(g){var I=tC;tC|=1;try{cI(99,g)}finally{0===(tC=I)&&aI()}},flushSync:NC,flushPassiveEffects:KC,IsThisRendererActing:{current:!1},getPublicRootInstance:function(g){if(!(g=g.current).child)return null;switch(g.child.tag){case 5:return h(g.child.stateNode);default:return g.child.stateNode}},attemptSynchronousHydration:function(g){switch(g.tag){case 3:var I=g.stateNode;I.hydrate&&function(g,I){lQ(g,I),DC(g),0===(48&tC)&&aI()}(I,I.firstPendingTime);break;case 13:NC((function(){return LC(g,1073741823)})),I=dI(SC(),150,100),oQ(g,I)}},attemptUserBlockingHydration:function(g){if(13===g.tag){var I=dI(SC(),150,100);LC(g,I),oQ(g,I)}},attemptContinuousHydration:function(g){if(13===g.tag){SC();var I=oI++;LC(g,I),oQ(g,I)}},attemptHydrationAtCurrentPriority:function(g){if(13===g.tag){var I=SC();LC(g,I=GC(I,g,null)),oQ(g,I)}},findHostInstance:aQ,findHostInstanceWithWarning:function(g){return aQ(g)},findHostInstanceWithNoPortals:function(g){return null===(g=function(g){if(!(g=L(g)))return null;for(var I=g;;){if(5===I.tag||6===I.tag)return I;if(I.child&&4!==I.tag)I.child.return=I,I=I.child;else{if(I===g)break;for(;!I.sibling;){if(!I.return||I.return===g)return null;I=I.return}I.sibling.return=I.return,I=I.sibling}}return null}(g))?null:20===g.tag?g.stateNode.instance:g.stateNode},shouldSuspend:function(){return!1},injectIntoDevTools:function(g){var I=g.findFiberByHostInstance;return function(g){if("undefined"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var I=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(I.isDisabled||!I.supportsFiber)return!0;try{var e=I.inject(g);gQ=function(g){try{I.onCommitFiberRoot(e,g,void 0,64===(64&g.current.effectTag))}catch(t){}},IQ=function(g){try{I.onCommitFiberUnmount(e,g)}catch(t){}}}catch(t){}return!0}(C({},g,{overrideHookState:null,overrideProps:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:n.ReactCurrentDispatcher,findHostInstanceByFiber:function(g){return null===(g=V(g))?null:g.stateNode},findFiberByHostInstance:function(g){return I?I(g):null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null}))}};g.exports=dQ.default||dQ;var uQ=g.exports;return g.exports=I,uQ}},function(g,I,e){"use strict";var t,C,Q,F,B;if(Object.defineProperty(I,"__esModule",{value:!0}),"undefined"===typeof window||"function"!==typeof MessageChannel){var n=null,U=null,s=function g(){if(null!==n)try{var e=I.unstable_now();n(!0,e),n=null}catch(t){throw setTimeout(g,0),t}},i=Date.now();I.unstable_now=function(){return Date.now()-i},t=function(g){null!==n?setTimeout(t,0,g):(n=g,setTimeout(s,0))},C=function(g,I){U=setTimeout(g,I)},Q=function(){clearTimeout(U)},F=function(){return!1},B=I.unstable_forceFrameRate=function(){}}else{var c=window.performance,A=window.Date,l=window.setTimeout,a=window.clearTimeout,r=window.requestAnimationFrame,o=window.cancelAnimationFrame;if("undefined"!==typeof console&&("function"!==typeof r&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"),"function"!==typeof o&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills")),"object"===typeof c&&"function"===typeof c.now)I.unstable_now=function(){return c.now()};else{var d=A.now();I.unstable_now=function(){return A.now()-d}}var u=!1,y=null,b=-1,Z=5,m=0;F=function(){return I.unstable_now()>=m},B=function(){},I.unstable_forceFrameRate=function(g){0>g||125<g?console.error("forceFrameRate takes a positive int between 0 and 125, forcing framerates higher than 125 fps is not unsupported"):Z=0<g?Math.floor(1e3/g):33.33};var x=new MessageChannel,R=x.port2;x.port1.onmessage=function(){if(null!==y){var g=I.unstable_now();m=g+Z;try{y(!0,g)?R.postMessage(null):(u=!1,y=null)}catch(e){throw R.postMessage(null),e}}else u=!1},t=function(g){y=g,u||(u=!0,R.postMessage(null))},C=function(g,e){b=l((function(){g(I.unstable_now())}),e)},Q=function(){a(b),b=-1}}function S(g,I){var e=g.length;g.push(I);g:for(;;){var t=Math.floor((e-1)/2),C=g[t];if(!(void 0!==C&&0<V(C,I)))break g;g[t]=I,g[e]=C,e=t}}function G(g){return void 0===(g=g[0])?null:g}function L(g){var I=g[0];if(void 0!==I){var e=g.pop();if(e!==I){g[0]=e;g:for(var t=0,C=g.length;t<C;){var Q=2*(t+1)-1,F=g[Q],B=Q+1,n=g[B];if(void 0!==F&&0>V(F,e))void 0!==n&&0>V(n,F)?(g[t]=n,g[B]=e,t=B):(g[t]=F,g[Q]=e,t=Q);else{if(!(void 0!==n&&0>V(n,e)))break g;g[t]=n,g[B]=e,t=B}}}return I}return null}function V(g,I){var e=g.sortIndex-I.sortIndex;return 0!==e?e:g.id-I.id}var h=[],D=[],p=1,E=null,N=3,W=!1,f=!1,X=!1;function J(g){for(var I=G(D);null!==I;){if(null===I.callback)L(D);else{if(!(I.startTime<=g))break;L(D),I.sortIndex=I.expirationTime,S(h,I)}I=G(D)}}function v(g){if(X=!1,J(g),!f)if(null!==G(h))f=!0,t(k);else{var I=G(D);null!==I&&C(v,I.startTime-g)}}function k(g,e){f=!1,X&&(X=!1,Q()),W=!0;var t=N;try{for(J(e),E=G(h);null!==E&&(!(E.expirationTime>e)||g&&!F());){var B=E.callback;if(null!==B){E.callback=null,N=E.priorityLevel;var n=B(E.expirationTime<=e);e=I.unstable_now(),"function"===typeof n?E.callback=n:E===G(h)&&L(h),J(e)}else L(h);E=G(h)}if(null!==E)var U=!0;else{var s=G(D);null!==s&&C(v,s.startTime-e),U=!1}return U}finally{E=null,N=t,W=!1}}function H(g){switch(g){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1e4;default:return 5e3}}var M=B;I.unstable_ImmediatePriority=1,I.unstable_UserBlockingPriority=2,I.unstable_NormalPriority=3,I.unstable_IdlePriority=5,I.unstable_LowPriority=4,I.unstable_runWithPriority=function(g,I){switch(g){case 1:case 2:case 3:case 4:case 5:break;default:g=3}var e=N;N=g;try{return I()}finally{N=e}},I.unstable_next=function(g){switch(N){case 1:case 2:case 3:var I=3;break;default:I=N}var e=N;N=I;try{return g()}finally{N=e}},I.unstable_scheduleCallback=function(g,e,F){var B=I.unstable_now();if("object"===typeof F&&null!==F){var n=F.delay;n="number"===typeof n&&0<n?B+n:B,F="number"===typeof F.timeout?F.timeout:H(g)}else F=H(g),n=B;return g={id:p++,callback:e,priorityLevel:g,startTime:n,expirationTime:F=n+F,sortIndex:-1},n>B?(g.sortIndex=n,S(D,g),null===G(h)&&g===G(D)&&(X?Q():X=!0,C(v,n-B))):(g.sortIndex=F,S(h,g),f||W||(f=!0,t(k))),g},I.unstable_cancelCallback=function(g){g.callback=null},I.unstable_wrapCallback=function(g){var I=N;return function(){var e=N;N=I;try{return g.apply(this,arguments)}finally{N=e}}},I.unstable_getCurrentPriorityLevel=function(){return N},I.unstable_shouldYield=function(){var g=I.unstable_now();J(g);var e=G(h);return e!==E&&null!==E&&null!==e&&null!==e.callback&&e.startTime<=g&&e.expirationTime<E.expirationTime||F()},I.unstable_requestPaint=M,I.unstable_continueExecution=function(){f||W||(f=!0,t(k))},I.unstable_pauseExecution=function(){},I.unstable_getFirstCallbackNode=function(){return G(h)},I.unstable_Profiling=null},,function(g,I,e){},function(g,I,e){"use strict";function t(g){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"==typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g})(g)}Object.defineProperty(I,"__esModule",{value:!0}),Object.defineProperty(I,"DraggableCore",{enumerable:!0,get:function(){return i.default}}),I.default=void 0;var C=function(g,I){if(!I&&g&&g.__esModule)return g;if(null===g||"object"!==t(g)&&"function"!==typeof g)return{default:g};var e=a(I);if(e&&e.has(g))return e.get(g);var C={},Q=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var F in g)if("default"!==F&&Object.prototype.hasOwnProperty.call(g,F)){var B=Q?Object.getOwnPropertyDescriptor(g,F):null;B&&(B.get||B.set)?Object.defineProperty(C,F,B):C[F]=g[F]}C.default=g,e&&e.set(g,C);return C}(e(0)),Q=l(e(809)),F=l(e(42)),B=l(e(1666)),n=e(554),U=e(810),s=e(420),i=l(e(1668)),c=l(e(811)),A=["axis","bounds","children","defaultPosition","defaultClassName","defaultClassNameDragging","defaultClassNameDragged","position","positionOffset","scale"];function l(g){return g&&g.__esModule?g:{default:g}}function a(g){if("function"!==typeof WeakMap)return null;var I=new WeakMap,e=new WeakMap;return(a=function(g){return g?e:I})(g)}function r(){return(r=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}function o(g,I){if(null==g)return{};var e,t,C=function(g,I){if(null==g)return{};var e,t,C={},Q=Object.keys(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||(C[e]=g[e]);return C}(g,I);if(Object.getOwnPropertySymbols){var Q=Object.getOwnPropertySymbols(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||Object.prototype.propertyIsEnumerable.call(g,e)&&(C[e]=g[e])}return C}function d(g,I){var e=Object.keys(g);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(g);I&&(t=t.filter((function(I){return Object.getOwnPropertyDescriptor(g,I).enumerable}))),e.push.apply(e,t)}return e}function u(g){for(var I=1;I<arguments.length;I++){var e=null!=arguments[I]?arguments[I]:{};I%2?d(Object(e),!0).forEach((function(I){L(g,I,e[I])})):Object.getOwnPropertyDescriptors?Object.defineProperties(g,Object.getOwnPropertyDescriptors(e)):d(Object(e)).forEach((function(I){Object.defineProperty(g,I,Object.getOwnPropertyDescriptor(e,I))}))}return g}function y(g,I){return function(g){if(Array.isArray(g))return g}(g)||function(g,I){var e=null==g?null:"undefined"!==typeof Symbol&&g[Symbol.iterator]||g["@@iterator"];if(null==e)return;var t,C,Q=[],F=!0,B=!1;try{for(e=e.call(g);!(F=(t=e.next()).done)&&(Q.push(t.value),!I||Q.length!==I);F=!0);}catch(n){B=!0,C=n}finally{try{F||null==e.return||e.return()}finally{if(B)throw C}}return Q}(g,I)||function(g,I){if(!g)return;if("string"===typeof g)return b(g,I);var e=Object.prototype.toString.call(g).slice(8,-1);"Object"===e&&g.constructor&&(e=g.constructor.name);if("Map"===e||"Set"===e)return Array.from(g);if("Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e))return b(g,I)}(g,I)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function b(g,I){(null==I||I>g.length)&&(I=g.length);for(var e=0,t=new Array(I);e<I;e++)t[e]=g[e];return t}function Z(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}function m(g,I){return(m=Object.setPrototypeOf||function(g,I){return g.__proto__=I,g})(g,I)}function x(g){var I=function(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(g){return!1}}();return function(){var e,t=G(g);if(I){var C=G(this).constructor;e=Reflect.construct(t,arguments,C)}else e=t.apply(this,arguments);return R(this,e)}}function R(g,I){if(I&&("object"===t(I)||"function"===typeof I))return I;if(void 0!==I)throw new TypeError("Derived constructors may only return object or undefined");return S(g)}function S(g){if(void 0===g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return g}function G(g){return(G=Object.setPrototypeOf?Object.getPrototypeOf:function(g){return g.__proto__||Object.getPrototypeOf(g)})(g)}function L(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}var V=function(g){!function(g,I){if("function"!==typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function");g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,writable:!0,configurable:!0}}),Object.defineProperty(g,"prototype",{writable:!1}),I&&m(g,I)}(s,g);var I,e,t,Q=x(s);function s(g){var I;return function(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}(this,s),L(S(I=Q.call(this,g)),"onDragStart",(function(g,e){if((0,c.default)("Draggable: onDragStart: %j",e),!1===I.props.onStart(g,(0,U.createDraggableData)(S(I),e)))return!1;I.setState({dragging:!0,dragged:!0})})),L(S(I),"onDrag",(function(g,e){if(!I.state.dragging)return!1;(0,c.default)("Draggable: onDrag: %j",e);var t=(0,U.createDraggableData)(S(I),e),C={x:t.x,y:t.y};if(I.props.bounds){var Q=C.x,F=C.y;C.x+=I.state.slackX,C.y+=I.state.slackY;var B=y((0,U.getBoundPosition)(S(I),C.x,C.y),2),n=B[0],s=B[1];C.x=n,C.y=s,C.slackX=I.state.slackX+(Q-C.x),C.slackY=I.state.slackY+(F-C.y),t.x=C.x,t.y=C.y,t.deltaX=C.x-I.state.x,t.deltaY=C.y-I.state.y}if(!1===I.props.onDrag(g,t))return!1;I.setState(C)})),L(S(I),"onDragStop",(function(g,e){if(!I.state.dragging)return!1;if(!1===I.props.onStop(g,(0,U.createDraggableData)(S(I),e)))return!1;(0,c.default)("Draggable: onDragStop: %j",e);var t={dragging:!1,slackX:0,slackY:0};if(Boolean(I.props.position)){var C=I.props.position,Q=C.x,F=C.y;t.x=Q,t.y=F}I.setState(t)})),I.state={dragging:!1,dragged:!1,x:g.position?g.position.x:g.defaultPosition.x,y:g.position?g.position.y:g.defaultPosition.y,prevPropsPosition:u({},g.position),slackX:0,slackY:0,isElementSVG:!1},!g.position||g.onDrag||g.onStop||console.warn("A `position` was applied to this <Draggable>, without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element."),I}return I=s,t=[{key:"getDerivedStateFromProps",value:function(g,I){var e=g.position,t=I.prevPropsPosition;return!e||t&&e.x===t.x&&e.y===t.y?null:((0,c.default)("Draggable: getDerivedStateFromProps %j",{position:e,prevPropsPosition:t}),{x:e.x,y:e.y,prevPropsPosition:u({},e)})}}],(e=[{key:"componentDidMount",value:function(){"undefined"!==typeof window.SVGElement&&this.findDOMNode()instanceof window.SVGElement&&this.setState({isElementSVG:!0})}},{key:"componentWillUnmount",value:function(){this.setState({dragging:!1})}},{key:"findDOMNode",value:function(){var g,I,e;return null!==(g=null===(I=this.props)||void 0===I||null===(e=I.nodeRef)||void 0===e?void 0:e.current)&&void 0!==g?g:F.default.findDOMNode(this)}},{key:"render",value:function(){var g,I=this.props,e=(I.axis,I.bounds,I.children),t=I.defaultPosition,Q=I.defaultClassName,F=I.defaultClassNameDragging,s=I.defaultClassNameDragged,c=I.position,l=I.positionOffset,a=(I.scale,o(I,A)),d={},y=null,b=!Boolean(c)||this.state.dragging,Z=c||t,m={x:(0,U.canDragX)(this)&&b?this.state.x:Z.x,y:(0,U.canDragY)(this)&&b?this.state.y:Z.y};this.state.isElementSVG?y=(0,n.createSVGTransform)(m,l):d=(0,n.createCSSTransform)(m,l);var x=(0,B.default)(e.props.className||"",Q,(L(g={},F,this.state.dragging),L(g,s,this.state.dragged),g));return C.createElement(i.default,r({},a,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),C.cloneElement(C.Children.only(e),{className:x,style:u(u({},e.props.style),d),transform:y}))}}])&&Z(I.prototype,e),t&&Z(I,t),Object.defineProperty(I,"prototype",{writable:!1}),s}(C.Component);I.default=V,L(V,"displayName","Draggable"),L(V,"propTypes",u(u({},i.default.propTypes),{},{axis:Q.default.oneOf(["both","x","y","none"]),bounds:Q.default.oneOfType([Q.default.shape({left:Q.default.number,right:Q.default.number,top:Q.default.number,bottom:Q.default.number}),Q.default.string,Q.default.oneOf([!1])]),defaultClassName:Q.default.string,defaultClassNameDragging:Q.default.string,defaultClassNameDragged:Q.default.string,defaultPosition:Q.default.shape({x:Q.default.number,y:Q.default.number}),positionOffset:Q.default.shape({x:Q.default.oneOfType([Q.default.number,Q.default.string]),y:Q.default.oneOfType([Q.default.number,Q.default.string])}),position:Q.default.shape({x:Q.default.number,y:Q.default.number}),className:s.dontSetMe,style:s.dontSetMe,transform:s.dontSetMe})),L(V,"defaultProps",u(u({},i.default.defaultProps),{},{axis:"both",bounds:!1,defaultClassName:"react-draggable",defaultClassNameDragging:"react-draggable-dragging",defaultClassNameDragged:"react-draggable-dragged",defaultPosition:{x:0,y:0},scale:1}))},function(g,I,e){"use strict";var t=e(1665);function C(){}function Q(){}Q.resetWarningCache=C,g.exports=function(){function g(g,I,e,C,Q,F){if(F!==t){var B=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw B.name="Invariant Violation",B}}function I(){return g}g.isRequired=g;var e={array:g,bigint:g,bool:g,func:g,number:g,object:g,string:g,symbol:g,any:g,arrayOf:I,element:g,elementType:g,instanceOf:I,node:g,objectOf:I,oneOf:I,oneOfType:I,shape:I,exact:I,checkPropTypes:Q,resetWarningCache:C};return e.PropTypes=e,e}},function(g,I,e){"use strict";g.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(g,I,e){"use strict";function t(g){var I,e,C="";if("string"==typeof g||"number"==typeof g)C+=g;else if("object"==typeof g)if(Array.isArray(g))for(I=0;I<g.length;I++)g[I]&&(e=t(g[I]))&&(C&&(C+=" "),C+=e);else for(I in g)g[I]&&(C&&(C+=" "),C+=I);return C}function C(){for(var g,I,e=0,C="";e<arguments.length;)(g=arguments[e++])&&(I=t(g))&&(C&&(C+=" "),C+=I);return C}e.r(I),e.d(I,"clsx",(function(){return C})),I.default=C},function(g,I,e){"use strict";Object.defineProperty(I,"__esModule",{value:!0}),I.browserPrefixToKey=Q,I.browserPrefixToStyle=function(g,I){return I?"-".concat(I.toLowerCase(),"-").concat(g):g},I.default=void 0,I.getPrefix=C;var t=["Moz","Webkit","O","ms"];function C(){var g,I,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"transform";if("undefined"===typeof window)return"";var C=null===(g=window.document)||void 0===g||null===(I=g.documentElement)||void 0===I?void 0:I.style;if(!C)return"";if(e in C)return"";for(var F=0;F<t.length;F++)if(Q(e,t[F])in C)return t[F];return""}function Q(g,I){return I?"".concat(I).concat(function(g){for(var I="",e=!0,t=0;t<g.length;t++)e?(I+=g[t].toUpperCase(),e=!1):"-"===g[t]?e=!0:I+=g[t];return I}(g)):g}var F=C();I.default=F},function(g,I,e){"use strict";function t(g){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"==typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g})(g)}Object.defineProperty(I,"__esModule",{value:!0}),I.default=void 0;var C=function(g,I){if(!I&&g&&g.__esModule)return g;if(null===g||"object"!==t(g)&&"function"!==typeof g)return{default:g};var e=c(I);if(e&&e.has(g))return e.get(g);var C={},Q=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var F in g)if("default"!==F&&Object.prototype.hasOwnProperty.call(g,F)){var B=Q?Object.getOwnPropertyDescriptor(g,F):null;B&&(B.get||B.set)?Object.defineProperty(C,F,B):C[F]=g[F]}C.default=g,e&&e.set(g,C);return C}(e(0)),Q=i(e(809)),F=i(e(42)),B=e(554),n=e(810),U=e(420),s=i(e(811));function i(g){return g&&g.__esModule?g:{default:g}}function c(g){if("function"!==typeof WeakMap)return null;var I=new WeakMap,e=new WeakMap;return(c=function(g){return g?e:I})(g)}function A(g,I){return function(g){if(Array.isArray(g))return g}(g)||function(g,I){var e=null==g?null:"undefined"!==typeof Symbol&&g[Symbol.iterator]||g["@@iterator"];if(null==e)return;var t,C,Q=[],F=!0,B=!1;try{for(e=e.call(g);!(F=(t=e.next()).done)&&(Q.push(t.value),!I||Q.length!==I);F=!0);}catch(n){B=!0,C=n}finally{try{F||null==e.return||e.return()}finally{if(B)throw C}}return Q}(g,I)||function(g,I){if(!g)return;if("string"===typeof g)return l(g,I);var e=Object.prototype.toString.call(g).slice(8,-1);"Object"===e&&g.constructor&&(e=g.constructor.name);if("Map"===e||"Set"===e)return Array.from(g);if("Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e))return l(g,I)}(g,I)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function l(g,I){(null==I||I>g.length)&&(I=g.length);for(var e=0,t=new Array(I);e<I;e++)t[e]=g[e];return t}function a(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}function r(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}function o(g,I){return(o=Object.setPrototypeOf||function(g,I){return g.__proto__=I,g})(g,I)}function d(g){var I=function(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(g){return!1}}();return function(){var e,t=b(g);if(I){var C=b(this).constructor;e=Reflect.construct(t,arguments,C)}else e=t.apply(this,arguments);return u(this,e)}}function u(g,I){if(I&&("object"===t(I)||"function"===typeof I))return I;if(void 0!==I)throw new TypeError("Derived constructors may only return object or undefined");return y(g)}function y(g){if(void 0===g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return g}function b(g){return(b=Object.setPrototypeOf?Object.getPrototypeOf:function(g){return g.__proto__||Object.getPrototypeOf(g)})(g)}function Z(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}var m={start:"touchstart",move:"touchmove",stop:"touchend"},x={start:"mousedown",move:"mousemove",stop:"mouseup"},R=x,S=function(g){!function(g,I){if("function"!==typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function");g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,writable:!0,configurable:!0}}),Object.defineProperty(g,"prototype",{writable:!1}),I&&o(g,I)}(U,g);var I,e,t,Q=d(U);function U(){var g;a(this,U);for(var I=arguments.length,e=new Array(I),t=0;t<I;t++)e[t]=arguments[t];return Z(y(g=Q.call.apply(Q,[this].concat(e))),"state",{dragging:!1,lastX:NaN,lastY:NaN,touchIdentifier:null}),Z(y(g),"mounted",!1),Z(y(g),"handleDragStart",(function(I){if(g.props.onMouseDown(I),!g.props.allowAnyClick&&"number"===typeof I.button&&0!==I.button)return!1;var e=g.findDOMNode();if(!e||!e.ownerDocument||!e.ownerDocument.body)throw new Error("<DraggableCore> not mounted on DragStart!");var t=e.ownerDocument;if(!(g.props.disabled||!(I.target instanceof t.defaultView.Node)||g.props.handle&&!(0,B.matchesSelectorAndParentsTo)(I.target,g.props.handle,e)||g.props.cancel&&(0,B.matchesSelectorAndParentsTo)(I.target,g.props.cancel,e))){"touchstart"===I.type&&I.preventDefault();var C=(0,B.getTouchIdentifier)(I);g.setState({touchIdentifier:C});var Q=(0,n.getControlPosition)(I,C,y(g));if(null!=Q){var F=Q.x,U=Q.y,i=(0,n.createCoreData)(y(g),F,U);(0,s.default)("DraggableCore: handleDragStart: %j",i),(0,s.default)("calling",g.props.onStart),!1!==g.props.onStart(I,i)&&!1!==g.mounted&&(g.props.enableUserSelectHack&&(0,B.addUserSelectStyles)(t),g.setState({dragging:!0,lastX:F,lastY:U}),(0,B.addEvent)(t,R.move,g.handleDrag),(0,B.addEvent)(t,R.stop,g.handleDragStop))}}})),Z(y(g),"handleDrag",(function(I){var e=(0,n.getControlPosition)(I,g.state.touchIdentifier,y(g));if(null!=e){var t=e.x,C=e.y;if(Array.isArray(g.props.grid)){var Q=t-g.state.lastX,F=C-g.state.lastY,B=A((0,n.snapToGrid)(g.props.grid,Q,F),2);if(Q=B[0],F=B[1],!Q&&!F)return;t=g.state.lastX+Q,C=g.state.lastY+F}var U=(0,n.createCoreData)(y(g),t,C);if((0,s.default)("DraggableCore: handleDrag: %j",U),!1!==g.props.onDrag(I,U)&&!1!==g.mounted)g.setState({lastX:t,lastY:C});else try{g.handleDragStop(new MouseEvent("mouseup"))}catch(c){var i=document.createEvent("MouseEvents");i.initMouseEvent("mouseup",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),g.handleDragStop(i)}}})),Z(y(g),"handleDragStop",(function(I){if(g.state.dragging){var e=(0,n.getControlPosition)(I,g.state.touchIdentifier,y(g));if(null!=e){var t=e.x,C=e.y;if(Array.isArray(g.props.grid)){var Q=t-g.state.lastX||0,F=C-g.state.lastY||0,U=A((0,n.snapToGrid)(g.props.grid,Q,F),2);Q=U[0],F=U[1],t=g.state.lastX+Q,C=g.state.lastY+F}var i=(0,n.createCoreData)(y(g),t,C);if(!1===g.props.onStop(I,i)||!1===g.mounted)return!1;var c=g.findDOMNode();c&&g.props.enableUserSelectHack&&(0,B.removeUserSelectStyles)(c.ownerDocument),(0,s.default)("DraggableCore: handleDragStop: %j",i),g.setState({dragging:!1,lastX:NaN,lastY:NaN}),c&&((0,s.default)("DraggableCore: Removing handlers"),(0,B.removeEvent)(c.ownerDocument,R.move,g.handleDrag),(0,B.removeEvent)(c.ownerDocument,R.stop,g.handleDragStop))}}})),Z(y(g),"onMouseDown",(function(I){return R=x,g.handleDragStart(I)})),Z(y(g),"onMouseUp",(function(I){return R=x,g.handleDragStop(I)})),Z(y(g),"onTouchStart",(function(I){return R=m,g.handleDragStart(I)})),Z(y(g),"onTouchEnd",(function(I){return R=m,g.handleDragStop(I)})),g}return I=U,(e=[{key:"componentDidMount",value:function(){this.mounted=!0;var g=this.findDOMNode();g&&(0,B.addEvent)(g,m.start,this.onTouchStart,{passive:!1})}},{key:"componentWillUnmount",value:function(){this.mounted=!1;var g=this.findDOMNode();if(g){var I=g.ownerDocument;(0,B.removeEvent)(I,x.move,this.handleDrag),(0,B.removeEvent)(I,m.move,this.handleDrag),(0,B.removeEvent)(I,x.stop,this.handleDragStop),(0,B.removeEvent)(I,m.stop,this.handleDragStop),(0,B.removeEvent)(g,m.start,this.onTouchStart,{passive:!1}),this.props.enableUserSelectHack&&(0,B.removeUserSelectStyles)(I)}}},{key:"findDOMNode",value:function(){var g,I,e;return null!==(g=this.props)&&void 0!==g&&g.nodeRef?null===(I=this.props)||void 0===I||null===(e=I.nodeRef)||void 0===e?void 0:e.current:F.default.findDOMNode(this)}},{key:"render",value:function(){return C.cloneElement(C.Children.only(this.props.children),{onMouseDown:this.onMouseDown,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}}])&&r(I.prototype,e),t&&r(I,t),Object.defineProperty(I,"prototype",{writable:!1}),U}(C.Component);I.default=S,Z(S,"displayName","DraggableCore"),Z(S,"propTypes",{allowAnyClick:Q.default.bool,disabled:Q.default.bool,enableUserSelectHack:Q.default.bool,offsetParent:function(g,I){if(g[I]&&1!==g[I].nodeType)throw new Error("Draggable's offsetParent must be a DOM Node.")},grid:Q.default.arrayOf(Q.default.number),handle:Q.default.string,cancel:Q.default.string,nodeRef:Q.default.object,onStart:Q.default.func,onDrag:Q.default.func,onStop:Q.default.func,onMouseDown:Q.default.func,scale:Q.default.number,className:U.dontSetMe,style:U.dontSetMe,transform:U.dontSetMe}),Z(S,"defaultProps",{allowAnyClick:!1,disabled:!1,enableUserSelectHack:!0,onStart:function(){},onDrag:function(){},onStop:function(){},onMouseDown:function(){},scale:1})},function(g,I,e){},function(g,I,e){"use strict";function t(g){if(null===g||!0===g||!1===g)return NaN;var I=Number(g);return isNaN(I)?I:I<0?Math.ceil(I):Math.floor(I)}function C(g,I){if(I.length<g)throw new TypeError(g+" argument"+g>1?"s":" required, but only "+I.length+" present")}function Q(g){C(1,arguments);var I=Object.prototype.toString.call(g);return g instanceof Date||"object"===typeof g&&"[object Date]"===I?new Date(g.getTime()):"number"===typeof g||"[object Number]"===I?new Date(g):("string"!==typeof g&&"[object String]"!==I||"undefined"===typeof console||(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule"),console.warn((new Error).stack)),new Date(NaN))}function F(g,I){C(2,arguments);var e=Q(g),F=t(I);return e.setDate(e.getDate()+F),e}function B(g){C(1,arguments);var I=Q(g),e=I.getFullYear(),t=I.getMonth(),F=new Date(0);return F.setFullYear(e,t+1,0),F.setHours(0,0,0,0),F.getDate()}function n(g,I){C(2,arguments);var e=Q(g),F=t(I),n=e.getMonth()+F,U=new Date(0);U.setFullYear(e.getFullYear(),n,1),U.setHours(0,0,0,0);var s=B(U);return e.setMonth(n,Math.min(s,e.getDate())),e}function U(g,I){C(2,arguments);var e=t(I);return n(g,12*e)}function s(g){C(1,arguments);var I=Q(g);return I.setHours(23,59,59,999),I}function i(g,I){C(1,arguments);var e=I||{},F=e.locale,B=F&&F.options&&F.options.weekStartsOn,n=null==B?0:t(B),U=null==e.weekStartsOn?n:t(e.weekStartsOn);if(!(U>=0&&U<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var s=Q(g),i=s.getDay(),c=6+(i<U?-7:0)-(i-U);return s.setDate(s.getDate()+c),s.setHours(23,59,59,999),s}function c(g){C(1,arguments);var I=Q(g),e=I.getFullYear();return I.setFullYear(e+1,0,0),I.setHours(23,59,59,999),I}function A(g){C(1,arguments);var I=Q(g);return!isNaN(I)}var l={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}};function a(g){return function(I){var e=I||{},t=e.width?String(e.width):g.defaultWidth;return g.formats[t]||g.formats[g.defaultWidth]}}var r={date:a({formats:{full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},defaultWidth:"full"}),time:a({formats:{full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},defaultWidth:"full"}),dateTime:a({formats:{full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},o={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"};function d(g){return function(I,e){var t,C=e||{};if("formatting"===(C.context?String(C.context):"standalone")&&g.formattingValues){var Q=g.defaultFormattingWidth||g.defaultWidth,F=C.width?String(C.width):Q;t=g.formattingValues[F]||g.formattingValues[Q]}else{var B=g.defaultWidth,n=C.width?String(C.width):g.defaultWidth;t=g.values[n]||g.values[B]}return t[g.argumentCallback?g.argumentCallback(I):I]}}function u(g){return function(I,e){var t=String(I),C=e||{},Q=C.width,F=Q&&g.matchPatterns[Q]||g.matchPatterns[g.defaultMatchWidth],B=t.match(F);if(!B)return null;var n,U=B[0],s=Q&&g.parsePatterns[Q]||g.parsePatterns[g.defaultParseWidth];return n="[object Array]"===Object.prototype.toString.call(s)?function(g,I){for(var e=0;e<g.length;e++)if(I(g[e]))return e}(s,(function(g){return g.test(t)})):function(g,I){for(var e in g)if(g.hasOwnProperty(e)&&I(g[e]))return e}(s,(function(g){return g.test(t)})),n=g.valueCallback?g.valueCallback(n):n,{value:n=C.valueCallback?C.valueCallback(n):n,rest:t.slice(U.length)}}}var y,b={code:"en-US",formatDistance:function(g,I,e){var t;return e=e||{},t="string"===typeof l[g]?l[g]:1===I?l[g].one:l[g].other.replace("{{count}}",I),e.addSuffix?e.comparison>0?"in "+t:t+" ago":t},formatLong:r,formatRelative:function(g,I,e,t){return o[g]},localize:{ordinalNumber:function(g,I){var e=Number(g),t=e%100;if(t>20||t<10)switch(t%10){case 1:return e+"st";case 2:return e+"nd";case 3:return e+"rd"}return e+"th"},era:d({values:{narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},defaultWidth:"wide"}),quarter:d({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},defaultWidth:"wide",argumentCallback:function(g){return Number(g)-1}}),month:d({values:{narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},defaultWidth:"wide"}),day:d({values:{narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},defaultWidth:"wide"}),dayPeriod:d({values:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},defaultWidth:"wide",formattingValues:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:(y={matchPattern:/^(\d+)(th|st|nd|rd)?/i,parsePattern:/\d+/i,valueCallback:function(g){return parseInt(g,10)}},function(g,I){var e=String(g),t=I||{},C=e.match(y.matchPattern);if(!C)return null;var Q=C[0],F=e.match(y.parsePattern);if(!F)return null;var B=y.valueCallback?y.valueCallback(F[0]):F[0];return{value:B=t.valueCallback?t.valueCallback(B):B,rest:e.slice(Q.length)}}),era:u({matchPatterns:{narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^b/i,/^(a|c)/i]},defaultParseWidth:"any"}),quarter:u({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:function(g){return g+1}}),month:u({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:u({matchPatterns:{narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:u({matchPatterns:{narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},defaultParseWidth:"any"})},options:{weekStartsOn:0,firstWeekContainsDate:1}};function Z(g,I){C(2,arguments);var e=Q(g).getTime(),F=t(I);return new Date(e+F)}function m(g,I){C(2,arguments);var e=t(I);return Z(g,-e)}function x(g,I){for(var e=g<0?"-":"",t=Math.abs(g).toString();t.length<I;)t="0"+t;return e+t}var R={y:function(g,I){var e=g.getUTCFullYear(),t=e>0?e:1-e;return x("yy"===I?t%100:t,I.length)},M:function(g,I){var e=g.getUTCMonth();return"M"===I?String(e+1):x(e+1,2)},d:function(g,I){return x(g.getUTCDate(),I.length)},a:function(g,I){var e=g.getUTCHours()/12>=1?"pm":"am";switch(I){case"a":case"aa":case"aaa":return e.toUpperCase();case"aaaaa":return e[0];case"aaaa":default:return"am"===e?"a.m.":"p.m."}},h:function(g,I){return x(g.getUTCHours()%12||12,I.length)},H:function(g,I){return x(g.getUTCHours(),I.length)},m:function(g,I){return x(g.getUTCMinutes(),I.length)},s:function(g,I){return x(g.getUTCSeconds(),I.length)},S:function(g,I){var e=I.length,t=g.getUTCMilliseconds();return x(Math.floor(t*Math.pow(10,e-3)),I.length)}};function S(g){C(1,arguments);var I=1,e=Q(g),t=e.getUTCDay(),F=(t<I?7:0)+t-I;return e.setUTCDate(e.getUTCDate()-F),e.setUTCHours(0,0,0,0),e}function G(g){C(1,arguments);var I=Q(g),e=I.getUTCFullYear(),t=new Date(0);t.setUTCFullYear(e+1,0,4),t.setUTCHours(0,0,0,0);var F=S(t),B=new Date(0);B.setUTCFullYear(e,0,4),B.setUTCHours(0,0,0,0);var n=S(B);return I.getTime()>=F.getTime()?e+1:I.getTime()>=n.getTime()?e:e-1}function L(g){C(1,arguments);var I=G(g),e=new Date(0);e.setUTCFullYear(I,0,4),e.setUTCHours(0,0,0,0);var t=S(e);return t}function V(g){C(1,arguments);var I=Q(g),e=S(I).getTime()-L(I).getTime();return Math.round(e/6048e5)+1}function h(g,I){C(1,arguments);var e=I||{},F=e.locale,B=F&&F.options&&F.options.weekStartsOn,n=null==B?0:t(B),U=null==e.weekStartsOn?n:t(e.weekStartsOn);if(!(U>=0&&U<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var s=Q(g),i=s.getUTCDay(),c=(i<U?7:0)+i-U;return s.setUTCDate(s.getUTCDate()-c),s.setUTCHours(0,0,0,0),s}function D(g,I){C(1,arguments);var e=Q(g,I),F=e.getUTCFullYear(),B=I||{},n=B.locale,U=n&&n.options&&n.options.firstWeekContainsDate,s=null==U?1:t(U),i=null==B.firstWeekContainsDate?s:t(B.firstWeekContainsDate);if(!(i>=1&&i<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var c=new Date(0);c.setUTCFullYear(F+1,0,i),c.setUTCHours(0,0,0,0);var A=h(c,I),l=new Date(0);l.setUTCFullYear(F,0,i),l.setUTCHours(0,0,0,0);var a=h(l,I);return e.getTime()>=A.getTime()?F+1:e.getTime()>=a.getTime()?F:F-1}function p(g,I){C(1,arguments);var e=I||{},Q=e.locale,F=Q&&Q.options&&Q.options.firstWeekContainsDate,B=null==F?1:t(F),n=null==e.firstWeekContainsDate?B:t(e.firstWeekContainsDate),U=D(g,I),s=new Date(0);s.setUTCFullYear(U,0,n),s.setUTCHours(0,0,0,0);var i=h(s,I);return i}function E(g,I){C(1,arguments);var e=Q(g),t=h(e,I).getTime()-p(e,I).getTime();return Math.round(t/6048e5)+1}var N="midnight",W="noon",f="morning",X="afternoon",J="evening",v="night";function k(g,I){var e=g>0?"-":"+",t=Math.abs(g),C=Math.floor(t/60),Q=t%60;if(0===Q)return e+String(C);var F=I||"";return e+String(C)+F+x(Q,2)}function H(g,I){return g%60===0?(g>0?"-":"+")+x(Math.abs(g)/60,2):M(g,I)}function M(g,I){var e=I||"",t=g>0?"-":"+",C=Math.abs(g);return t+x(Math.floor(C/60),2)+e+x(C%60,2)}var Y={G:function(g,I,e){var t=g.getUTCFullYear()>0?1:0;switch(I){case"G":case"GG":case"GGG":return e.era(t,{width:"abbreviated"});case"GGGGG":return e.era(t,{width:"narrow"});case"GGGG":default:return e.era(t,{width:"wide"})}},y:function(g,I,e){if("yo"===I){var t=g.getUTCFullYear(),C=t>0?t:1-t;return e.ordinalNumber(C,{unit:"year"})}return R.y(g,I)},Y:function(g,I,e,t){var C=D(g,t),Q=C>0?C:1-C;return"YY"===I?x(Q%100,2):"Yo"===I?e.ordinalNumber(Q,{unit:"year"}):x(Q,I.length)},R:function(g,I){return x(G(g),I.length)},u:function(g,I){return x(g.getUTCFullYear(),I.length)},Q:function(g,I,e){var t=Math.ceil((g.getUTCMonth()+1)/3);switch(I){case"Q":return String(t);case"QQ":return x(t,2);case"Qo":return e.ordinalNumber(t,{unit:"quarter"});case"QQQ":return e.quarter(t,{width:"abbreviated",context:"formatting"});case"QQQQQ":return e.quarter(t,{width:"narrow",context:"formatting"});case"QQQQ":default:return e.quarter(t,{width:"wide",context:"formatting"})}},q:function(g,I,e){var t=Math.ceil((g.getUTCMonth()+1)/3);switch(I){case"q":return String(t);case"qq":return x(t,2);case"qo":return e.ordinalNumber(t,{unit:"quarter"});case"qqq":return e.quarter(t,{width:"abbreviated",context:"standalone"});case"qqqqq":return e.quarter(t,{width:"narrow",context:"standalone"});case"qqqq":default:return e.quarter(t,{width:"wide",context:"standalone"})}},M:function(g,I,e){var t=g.getUTCMonth();switch(I){case"M":case"MM":return R.M(g,I);case"Mo":return e.ordinalNumber(t+1,{unit:"month"});case"MMM":return e.month(t,{width:"abbreviated",context:"formatting"});case"MMMMM":return e.month(t,{width:"narrow",context:"formatting"});case"MMMM":default:return e.month(t,{width:"wide",context:"formatting"})}},L:function(g,I,e){var t=g.getUTCMonth();switch(I){case"L":return String(t+1);case"LL":return x(t+1,2);case"Lo":return e.ordinalNumber(t+1,{unit:"month"});case"LLL":return e.month(t,{width:"abbreviated",context:"standalone"});case"LLLLL":return e.month(t,{width:"narrow",context:"standalone"});case"LLLL":default:return e.month(t,{width:"wide",context:"standalone"})}},w:function(g,I,e,t){var C=E(g,t);return"wo"===I?e.ordinalNumber(C,{unit:"week"}):x(C,I.length)},I:function(g,I,e){var t=V(g);return"Io"===I?e.ordinalNumber(t,{unit:"week"}):x(t,I.length)},d:function(g,I,e){return"do"===I?e.ordinalNumber(g.getUTCDate(),{unit:"date"}):R.d(g,I)},D:function(g,I,e){var t=function(g){C(1,arguments);var I=Q(g),e=I.getTime();I.setUTCMonth(0,1),I.setUTCHours(0,0,0,0);var t=I.getTime(),F=e-t;return Math.floor(F/864e5)+1}(g);return"Do"===I?e.ordinalNumber(t,{unit:"dayOfYear"}):x(t,I.length)},E:function(g,I,e){var t=g.getUTCDay();switch(I){case"E":case"EE":case"EEE":return e.day(t,{width:"abbreviated",context:"formatting"});case"EEEEE":return e.day(t,{width:"narrow",context:"formatting"});case"EEEEEE":return e.day(t,{width:"short",context:"formatting"});case"EEEE":default:return e.day(t,{width:"wide",context:"formatting"})}},e:function(g,I,e,t){var C=g.getUTCDay(),Q=(C-t.weekStartsOn+8)%7||7;switch(I){case"e":return String(Q);case"ee":return x(Q,2);case"eo":return e.ordinalNumber(Q,{unit:"day"});case"eee":return e.day(C,{width:"abbreviated",context:"formatting"});case"eeeee":return e.day(C,{width:"narrow",context:"formatting"});case"eeeeee":return e.day(C,{width:"short",context:"formatting"});case"eeee":default:return e.day(C,{width:"wide",context:"formatting"})}},c:function(g,I,e,t){var C=g.getUTCDay(),Q=(C-t.weekStartsOn+8)%7||7;switch(I){case"c":return String(Q);case"cc":return x(Q,I.length);case"co":return e.ordinalNumber(Q,{unit:"day"});case"ccc":return e.day(C,{width:"abbreviated",context:"standalone"});case"ccccc":return e.day(C,{width:"narrow",context:"standalone"});case"cccccc":return e.day(C,{width:"short",context:"standalone"});case"cccc":default:return e.day(C,{width:"wide",context:"standalone"})}},i:function(g,I,e){var t=g.getUTCDay(),C=0===t?7:t;switch(I){case"i":return String(C);case"ii":return x(C,I.length);case"io":return e.ordinalNumber(C,{unit:"day"});case"iii":return e.day(t,{width:"abbreviated",context:"formatting"});case"iiiii":return e.day(t,{width:"narrow",context:"formatting"});case"iiiiii":return e.day(t,{width:"short",context:"formatting"});case"iiii":default:return e.day(t,{width:"wide",context:"formatting"})}},a:function(g,I,e){var t=g.getUTCHours()/12>=1?"pm":"am";switch(I){case"a":case"aa":case"aaa":return e.dayPeriod(t,{width:"abbreviated",context:"formatting"});case"aaaaa":return e.dayPeriod(t,{width:"narrow",context:"formatting"});case"aaaa":default:return e.dayPeriod(t,{width:"wide",context:"formatting"})}},b:function(g,I,e){var t,C=g.getUTCHours();switch(t=12===C?W:0===C?N:C/12>=1?"pm":"am",I){case"b":case"bb":case"bbb":return e.dayPeriod(t,{width:"abbreviated",context:"formatting"});case"bbbbb":return e.dayPeriod(t,{width:"narrow",context:"formatting"});case"bbbb":default:return e.dayPeriod(t,{width:"wide",context:"formatting"})}},B:function(g,I,e){var t,C=g.getUTCHours();switch(t=C>=17?J:C>=12?X:C>=4?f:v,I){case"B":case"BB":case"BBB":return e.dayPeriod(t,{width:"abbreviated",context:"formatting"});case"BBBBB":return e.dayPeriod(t,{width:"narrow",context:"formatting"});case"BBBB":default:return e.dayPeriod(t,{width:"wide",context:"formatting"})}},h:function(g,I,e){if("ho"===I){var t=g.getUTCHours()%12;return 0===t&&(t=12),e.ordinalNumber(t,{unit:"hour"})}return R.h(g,I)},H:function(g,I,e){return"Ho"===I?e.ordinalNumber(g.getUTCHours(),{unit:"hour"}):R.H(g,I)},K:function(g,I,e){var t=g.getUTCHours()%12;return"Ko"===I?e.ordinalNumber(t,{unit:"hour"}):x(t,I.length)},k:function(g,I,e){var t=g.getUTCHours();return 0===t&&(t=24),"ko"===I?e.ordinalNumber(t,{unit:"hour"}):x(t,I.length)},m:function(g,I,e){return"mo"===I?e.ordinalNumber(g.getUTCMinutes(),{unit:"minute"}):R.m(g,I)},s:function(g,I,e){return"so"===I?e.ordinalNumber(g.getUTCSeconds(),{unit:"second"}):R.s(g,I)},S:function(g,I){return R.S(g,I)},X:function(g,I,e,t){var C=(t._originalDate||g).getTimezoneOffset();if(0===C)return"Z";switch(I){case"X":return H(C);case"XXXX":case"XX":return M(C);case"XXXXX":case"XXX":default:return M(C,":")}},x:function(g,I,e,t){var C=(t._originalDate||g).getTimezoneOffset();switch(I){case"x":return H(C);case"xxxx":case"xx":return M(C);case"xxxxx":case"xxx":default:return M(C,":")}},O:function(g,I,e,t){var C=(t._originalDate||g).getTimezoneOffset();switch(I){case"O":case"OO":case"OOO":return"GMT"+k(C,":");case"OOOO":default:return"GMT"+M(C,":")}},z:function(g,I,e,t){var C=(t._originalDate||g).getTimezoneOffset();switch(I){case"z":case"zz":case"zzz":return"GMT"+k(C,":");case"zzzz":default:return"GMT"+M(C,":")}},t:function(g,I,e,t){var C=t._originalDate||g;return x(Math.floor(C.getTime()/1e3),I.length)},T:function(g,I,e,t){return x((t._originalDate||g).getTime(),I.length)}};function w(g,I){switch(g){case"P":return I.date({width:"short"});case"PP":return I.date({width:"medium"});case"PPP":return I.date({width:"long"});case"PPPP":default:return I.date({width:"full"})}}function T(g,I){switch(g){case"p":return I.time({width:"short"});case"pp":return I.time({width:"medium"});case"ppp":return I.time({width:"long"});case"pppp":default:return I.time({width:"full"})}}var z={p:T,P:function(g,I){var e,t=g.match(/(P+)(p+)?/),C=t[1],Q=t[2];if(!Q)return w(g,I);switch(C){case"P":e=I.dateTime({width:"short"});break;case"PP":e=I.dateTime({width:"medium"});break;case"PPP":e=I.dateTime({width:"long"});break;case"PPPP":default:e=I.dateTime({width:"full"})}return e.replace("{{date}}",w(C,I)).replace("{{time}}",T(Q,I))}};function O(g){var I=new Date(g.getTime()),e=Math.ceil(I.getTimezoneOffset());return I.setSeconds(0,0),6e4*e+I.getTime()%6e4}var K=["D","DD"],j=["YY","YYYY"];function P(g){return-1!==K.indexOf(g)}function _(g){return-1!==j.indexOf(g)}function q(g){if("YYYY"===g)throw new RangeError("Use `yyyy` instead of `YYYY` for formatting years; see: https://git.io/fxCyr");if("YY"===g)throw new RangeError("Use `yy` instead of `YY` for formatting years; see: https://git.io/fxCyr");if("D"===g)throw new RangeError("Use `d` instead of `D` for formatting days of the month; see: https://git.io/fxCyr");if("DD"===g)throw new RangeError("Use `dd` instead of `DD` for formatting days of the month; see: https://git.io/fxCyr")}var $=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,gg=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,Ig=/^'([^]*?)'?$/,eg=/''/g,tg=/[a-zA-Z]/;function Cg(g){return g.match(Ig)[1].replace(eg,"'")}function Qg(g,I){C(2,arguments);var e=Q(g),t=Q(I);return e.getTime()>t.getTime()}function Fg(g,I){C(2,arguments);var e=Q(g),t=Q(I);return e.getTime()<t.getTime()}function Bg(g){C(1,arguments);var I=Q(g);return I.setHours(0,0,0,0),I}function ng(g){C(1,arguments);var I=Q(g);return I.setMinutes(0,0,0),I}function Ug(g,I){if(null==g)throw new TypeError("assign requires that input parameter not be null or undefined");for(var e in I=I||{})I.hasOwnProperty(e)&&(g[e]=I[e]);return g}function sg(g,I,e){C(2,arguments);var F=e||{},B=F.locale,n=B&&B.options&&B.options.weekStartsOn,U=null==n?0:t(n),s=null==F.weekStartsOn?U:t(F.weekStartsOn);if(!(s>=0&&s<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var i=Q(g),c=t(I),A=i.getUTCDay(),l=c%7,a=(l+7)%7,r=(a<s?7:0)+c-A;return i.setUTCDate(i.getUTCDate()+r),i}var ig=/^(1[0-2]|0?\d)/,cg=/^(3[0-1]|[0-2]?\d)/,Ag=/^(36[0-6]|3[0-5]\d|[0-2]?\d?\d)/,lg=/^(5[0-3]|[0-4]?\d)/,ag=/^(2[0-3]|[0-1]?\d)/,rg=/^(2[0-4]|[0-1]?\d)/,og=/^(1[0-1]|0?\d)/,dg=/^(1[0-2]|0?\d)/,ug=/^[0-5]?\d/,yg=/^[0-5]?\d/,bg=/^\d/,Zg=/^\d{1,2}/,mg=/^\d{1,3}/,xg=/^\d{1,4}/,Rg=/^-?\d+/,Sg=/^-?\d/,Gg=/^-?\d{1,2}/,Lg=/^-?\d{1,3}/,Vg=/^-?\d{1,4}/,hg=/^([+-])(\d{2})(\d{2})?|Z/,Dg=/^([+-])(\d{2})(\d{2})|Z/,pg=/^([+-])(\d{2})(\d{2})((\d{2}))?|Z/,Eg=/^([+-])(\d{2}):(\d{2})|Z/,Ng=/^([+-])(\d{2}):(\d{2})(:(\d{2}))?|Z/;function Wg(g,I,e){var t=I.match(g);if(!t)return null;var C=parseInt(t[0],10);return{value:e?e(C):C,rest:I.slice(t[0].length)}}function fg(g,I){var e=I.match(g);return e?"Z"===e[0]?{value:0,rest:I.slice(1)}:{value:("+"===e[1]?1:-1)*(36e5*(e[2]?parseInt(e[2],10):0)+6e4*(e[3]?parseInt(e[3],10):0)+1e3*(e[5]?parseInt(e[5],10):0)),rest:I.slice(e[0].length)}:null}function Xg(g,I){return Wg(Rg,g,I)}function Jg(g,I,e){switch(g){case 1:return Wg(bg,I,e);case 2:return Wg(Zg,I,e);case 3:return Wg(mg,I,e);case 4:return Wg(xg,I,e);default:return Wg(new RegExp("^\\d{1,"+g+"}"),I,e)}}function vg(g,I,e){switch(g){case 1:return Wg(Sg,I,e);case 2:return Wg(Gg,I,e);case 3:return Wg(Lg,I,e);case 4:return Wg(Vg,I,e);default:return Wg(new RegExp("^-?\\d{1,"+g+"}"),I,e)}}function kg(g){switch(g){case"morning":return 4;case"evening":return 17;case"pm":case"noon":case"afternoon":return 12;case"am":case"midnight":case"night":default:return 0}}function Hg(g,I){var e,t=I>0,C=t?I:1-I;if(C<=50)e=g||100;else{var Q=C+50;e=g+100*Math.floor(Q/100)-(g>=Q%100?100:0)}return t?e:1-e}var Mg=[31,28,31,30,31,30,31,31,30,31,30,31],Yg=[31,29,31,30,31,30,31,31,30,31,30,31];function wg(g){return g%400===0||g%4===0&&g%100!==0}var Tg={G:{priority:140,parse:function(g,I,e,t){switch(I){case"G":case"GG":case"GGG":return e.era(g,{width:"abbreviated"})||e.era(g,{width:"narrow"});case"GGGGG":return e.era(g,{width:"narrow"});case"GGGG":default:return e.era(g,{width:"wide"})||e.era(g,{width:"abbreviated"})||e.era(g,{width:"narrow"})}},set:function(g,I,e,t){return I.era=e,g.setUTCFullYear(e,0,1),g.setUTCHours(0,0,0,0),g},incompatibleTokens:["R","u","t","T"]},y:{priority:130,parse:function(g,I,e,t){var C=function(g){return{year:g,isTwoDigitYear:"yy"===I}};switch(I){case"y":return Jg(4,g,C);case"yo":return e.ordinalNumber(g,{unit:"year",valueCallback:C});default:return Jg(I.length,g,C)}},validate:function(g,I,e){return I.isTwoDigitYear||I.year>0},set:function(g,I,e,t){var C=g.getUTCFullYear();if(e.isTwoDigitYear){var Q=Hg(e.year,C);return g.setUTCFullYear(Q,0,1),g.setUTCHours(0,0,0,0),g}var F="era"in I&&1!==I.era?1-e.year:e.year;return g.setUTCFullYear(F,0,1),g.setUTCHours(0,0,0,0),g},incompatibleTokens:["Y","R","u","w","I","i","e","c","t","T"]},Y:{priority:130,parse:function(g,I,e,t){var C=function(g){return{year:g,isTwoDigitYear:"YY"===I}};switch(I){case"Y":return Jg(4,g,C);case"Yo":return e.ordinalNumber(g,{unit:"year",valueCallback:C});default:return Jg(I.length,g,C)}},validate:function(g,I,e){return I.isTwoDigitYear||I.year>0},set:function(g,I,e,t){var C=D(g,t);if(e.isTwoDigitYear){var Q=Hg(e.year,C);return g.setUTCFullYear(Q,0,t.firstWeekContainsDate),g.setUTCHours(0,0,0,0),h(g,t)}var F="era"in I&&1!==I.era?1-e.year:e.year;return g.setUTCFullYear(F,0,t.firstWeekContainsDate),g.setUTCHours(0,0,0,0),h(g,t)},incompatibleTokens:["y","R","u","Q","q","M","L","I","d","D","i","t","T"]},R:{priority:130,parse:function(g,I,e,t){return vg("R"===I?4:I.length,g)},set:function(g,I,e,t){var C=new Date(0);return C.setUTCFullYear(e,0,4),C.setUTCHours(0,0,0,0),S(C)},incompatibleTokens:["G","y","Y","u","Q","q","M","L","w","d","D","e","c","t","T"]},u:{priority:130,parse:function(g,I,e,t){return vg("u"===I?4:I.length,g)},set:function(g,I,e,t){return g.setUTCFullYear(e,0,1),g.setUTCHours(0,0,0,0),g},incompatibleTokens:["G","y","Y","R","w","I","i","e","c","t","T"]},Q:{priority:120,parse:function(g,I,e,t){switch(I){case"Q":case"QQ":return Jg(I.length,g);case"Qo":return e.ordinalNumber(g,{unit:"quarter"});case"QQQ":return e.quarter(g,{width:"abbreviated",context:"formatting"})||e.quarter(g,{width:"narrow",context:"formatting"});case"QQQQQ":return e.quarter(g,{width:"narrow",context:"formatting"});case"QQQQ":default:return e.quarter(g,{width:"wide",context:"formatting"})||e.quarter(g,{width:"abbreviated",context:"formatting"})||e.quarter(g,{width:"narrow",context:"formatting"})}},validate:function(g,I,e){return I>=1&&I<=4},set:function(g,I,e,t){return g.setUTCMonth(3*(e-1),1),g.setUTCHours(0,0,0,0),g},incompatibleTokens:["Y","R","q","M","L","w","I","d","D","i","e","c","t","T"]},q:{priority:120,parse:function(g,I,e,t){switch(I){case"q":case"qq":return Jg(I.length,g);case"qo":return e.ordinalNumber(g,{unit:"quarter"});case"qqq":return e.quarter(g,{width:"abbreviated",context:"standalone"})||e.quarter(g,{width:"narrow",context:"standalone"});case"qqqqq":return e.quarter(g,{width:"narrow",context:"standalone"});case"qqqq":default:return e.quarter(g,{width:"wide",context:"standalone"})||e.quarter(g,{width:"abbreviated",context:"standalone"})||e.quarter(g,{width:"narrow",context:"standalone"})}},validate:function(g,I,e){return I>=1&&I<=4},set:function(g,I,e,t){return g.setUTCMonth(3*(e-1),1),g.setUTCHours(0,0,0,0),g},incompatibleTokens:["Y","R","Q","M","L","w","I","d","D","i","e","c","t","T"]},M:{priority:110,parse:function(g,I,e,t){var C=function(g){return g-1};switch(I){case"M":return Wg(ig,g,C);case"MM":return Jg(2,g,C);case"Mo":return e.ordinalNumber(g,{unit:"month",valueCallback:C});case"MMM":return e.month(g,{width:"abbreviated",context:"formatting"})||e.month(g,{width:"narrow",context:"formatting"});case"MMMMM":return e.month(g,{width:"narrow",context:"formatting"});case"MMMM":default:return e.month(g,{width:"wide",context:"formatting"})||e.month(g,{width:"abbreviated",context:"formatting"})||e.month(g,{width:"narrow",context:"formatting"})}},validate:function(g,I,e){return I>=0&&I<=11},set:function(g,I,e,t){return g.setUTCMonth(e,1),g.setUTCHours(0,0,0,0),g},incompatibleTokens:["Y","R","q","Q","L","w","I","D","i","e","c","t","T"]},L:{priority:110,parse:function(g,I,e,t){var C=function(g){return g-1};switch(I){case"L":return Wg(ig,g,C);case"LL":return Jg(2,g,C);case"Lo":return e.ordinalNumber(g,{unit:"month",valueCallback:C});case"LLL":return e.month(g,{width:"abbreviated",context:"standalone"})||e.month(g,{width:"narrow",context:"standalone"});case"LLLLL":return e.month(g,{width:"narrow",context:"standalone"});case"LLLL":default:return e.month(g,{width:"wide",context:"standalone"})||e.month(g,{width:"abbreviated",context:"standalone"})||e.month(g,{width:"narrow",context:"standalone"})}},validate:function(g,I,e){return I>=0&&I<=11},set:function(g,I,e,t){return g.setUTCMonth(e,1),g.setUTCHours(0,0,0,0),g},incompatibleTokens:["Y","R","q","Q","M","w","I","D","i","e","c","t","T"]},w:{priority:100,parse:function(g,I,e,t){switch(I){case"w":return Wg(lg,g);case"wo":return e.ordinalNumber(g,{unit:"week"});default:return Jg(I.length,g)}},validate:function(g,I,e){return I>=1&&I<=53},set:function(g,I,e,F){return h(function(g,I,e){C(2,arguments);var F=Q(g),B=t(I),n=E(F,e)-B;return F.setUTCDate(F.getUTCDate()-7*n),F}(g,e,F),F)},incompatibleTokens:["y","R","u","q","Q","M","L","I","d","D","i","t","T"]},I:{priority:100,parse:function(g,I,e,t){switch(I){case"I":return Wg(lg,g);case"Io":return e.ordinalNumber(g,{unit:"week"});default:return Jg(I.length,g)}},validate:function(g,I,e){return I>=1&&I<=53},set:function(g,I,e,F){return S(function(g,I){C(2,arguments);var e=Q(g),F=t(I),B=V(e)-F;return e.setUTCDate(e.getUTCDate()-7*B),e}(g,e,F),F)},incompatibleTokens:["y","Y","u","q","Q","M","L","w","d","D","e","c","t","T"]},d:{priority:90,parse:function(g,I,e,t){switch(I){case"d":return Wg(cg,g);case"do":return e.ordinalNumber(g,{unit:"date"});default:return Jg(I.length,g)}},validate:function(g,I,e){var t=wg(g.getUTCFullYear()),C=g.getUTCMonth();return t?I>=1&&I<=Yg[C]:I>=1&&I<=Mg[C]},set:function(g,I,e,t){return g.setUTCDate(e),g.setUTCHours(0,0,0,0),g},incompatibleTokens:["Y","R","q","Q","w","I","D","i","e","c","t","T"]},D:{priority:90,parse:function(g,I,e,t){switch(I){case"D":case"DD":return Wg(Ag,g);case"Do":return e.ordinalNumber(g,{unit:"date"});default:return Jg(I.length,g)}},validate:function(g,I,e){return wg(g.getUTCFullYear())?I>=1&&I<=366:I>=1&&I<=365},set:function(g,I,e,t){return g.setUTCMonth(0,e),g.setUTCHours(0,0,0,0),g},incompatibleTokens:["Y","R","q","Q","M","L","w","I","d","E","i","e","c","t","T"]},E:{priority:90,parse:function(g,I,e,t){switch(I){case"E":case"EE":case"EEE":return e.day(g,{width:"abbreviated",context:"formatting"})||e.day(g,{width:"short",context:"formatting"})||e.day(g,{width:"narrow",context:"formatting"});case"EEEEE":return e.day(g,{width:"narrow",context:"formatting"});case"EEEEEE":return e.day(g,{width:"short",context:"formatting"})||e.day(g,{width:"narrow",context:"formatting"});case"EEEE":default:return e.day(g,{width:"wide",context:"formatting"})||e.day(g,{width:"abbreviated",context:"formatting"})||e.day(g,{width:"short",context:"formatting"})||e.day(g,{width:"narrow",context:"formatting"})}},validate:function(g,I,e){return I>=0&&I<=6},set:function(g,I,e,t){return(g=sg(g,e,t)).setUTCHours(0,0,0,0),g},incompatibleTokens:["D","i","e","c","t","T"]},e:{priority:90,parse:function(g,I,e,t){var C=function(g){var I=7*Math.floor((g-1)/7);return(g+t.weekStartsOn+6)%7+I};switch(I){case"e":case"ee":return Jg(I.length,g,C);case"eo":return e.ordinalNumber(g,{unit:"day",valueCallback:C});case"eee":return e.day(g,{width:"abbreviated",context:"formatting"})||e.day(g,{width:"short",context:"formatting"})||e.day(g,{width:"narrow",context:"formatting"});case"eeeee":return e.day(g,{width:"narrow",context:"formatting"});case"eeeeee":return e.day(g,{width:"short",context:"formatting"})||e.day(g,{width:"narrow",context:"formatting"});case"eeee":default:return e.day(g,{width:"wide",context:"formatting"})||e.day(g,{width:"abbreviated",context:"formatting"})||e.day(g,{width:"short",context:"formatting"})||e.day(g,{width:"narrow",context:"formatting"})}},validate:function(g,I,e){return I>=0&&I<=6},set:function(g,I,e,t){return(g=sg(g,e,t)).setUTCHours(0,0,0,0),g},incompatibleTokens:["y","R","u","q","Q","M","L","I","d","D","E","i","c","t","T"]},c:{priority:90,parse:function(g,I,e,t){var C=function(g){var I=7*Math.floor((g-1)/7);return(g+t.weekStartsOn+6)%7+I};switch(I){case"c":case"cc":return Jg(I.length,g,C);case"co":return e.ordinalNumber(g,{unit:"day",valueCallback:C});case"ccc":return e.day(g,{width:"abbreviated",context:"standalone"})||e.day(g,{width:"short",context:"standalone"})||e.day(g,{width:"narrow",context:"standalone"});case"ccccc":return e.day(g,{width:"narrow",context:"standalone"});case"cccccc":return e.day(g,{width:"short",context:"standalone"})||e.day(g,{width:"narrow",context:"standalone"});case"cccc":default:return e.day(g,{width:"wide",context:"standalone"})||e.day(g,{width:"abbreviated",context:"standalone"})||e.day(g,{width:"short",context:"standalone"})||e.day(g,{width:"narrow",context:"standalone"})}},validate:function(g,I,e){return I>=0&&I<=6},set:function(g,I,e,t){return(g=sg(g,e,t)).setUTCHours(0,0,0,0),g},incompatibleTokens:["y","R","u","q","Q","M","L","I","d","D","E","i","e","t","T"]},i:{priority:90,parse:function(g,I,e,t){var C=function(g){return 0===g?7:g};switch(I){case"i":case"ii":return Jg(I.length,g);case"io":return e.ordinalNumber(g,{unit:"day"});case"iii":return e.day(g,{width:"abbreviated",context:"formatting",valueCallback:C})||e.day(g,{width:"short",context:"formatting",valueCallback:C})||e.day(g,{width:"narrow",context:"formatting",valueCallback:C});case"iiiii":return e.day(g,{width:"narrow",context:"formatting",valueCallback:C});case"iiiiii":return e.day(g,{width:"short",context:"formatting",valueCallback:C})||e.day(g,{width:"narrow",context:"formatting",valueCallback:C});case"iiii":default:return e.day(g,{width:"wide",context:"formatting",valueCallback:C})||e.day(g,{width:"abbreviated",context:"formatting",valueCallback:C})||e.day(g,{width:"short",context:"formatting",valueCallback:C})||e.day(g,{width:"narrow",context:"formatting",valueCallback:C})}},validate:function(g,I,e){return I>=1&&I<=7},set:function(g,I,e,F){return(g=function(g,I){C(2,arguments);var e=t(I);e%7===0&&(e-=7);var F=1,B=Q(g),n=B.getUTCDay(),U=e%7,s=(U+7)%7,i=(s<F?7:0)+e-n;return B.setUTCDate(B.getUTCDate()+i),B}(g,e,F)).setUTCHours(0,0,0,0),g},incompatibleTokens:["y","Y","u","q","Q","M","L","w","d","D","E","e","c","t","T"]},a:{priority:80,parse:function(g,I,e,t){switch(I){case"a":case"aa":case"aaa":return e.dayPeriod(g,{width:"abbreviated",context:"formatting"})||e.dayPeriod(g,{width:"narrow",context:"formatting"});case"aaaaa":return e.dayPeriod(g,{width:"narrow",context:"formatting"});case"aaaa":default:return e.dayPeriod(g,{width:"wide",context:"formatting"})||e.dayPeriod(g,{width:"abbreviated",context:"formatting"})||e.dayPeriod(g,{width:"narrow",context:"formatting"})}},set:function(g,I,e,t){return g.setUTCHours(kg(e),0,0,0),g},incompatibleTokens:["b","B","H","K","k","t","T"]},b:{priority:80,parse:function(g,I,e,t){switch(I){case"b":case"bb":case"bbb":return e.dayPeriod(g,{width:"abbreviated",context:"formatting"})||e.dayPeriod(g,{width:"narrow",context:"formatting"});case"bbbbb":return e.dayPeriod(g,{width:"narrow",context:"formatting"});case"bbbb":default:return e.dayPeriod(g,{width:"wide",context:"formatting"})||e.dayPeriod(g,{width:"abbreviated",context:"formatting"})||e.dayPeriod(g,{width:"narrow",context:"formatting"})}},set:function(g,I,e,t){return g.setUTCHours(kg(e),0,0,0),g},incompatibleTokens:["a","B","H","K","k","t","T"]},B:{priority:80,parse:function(g,I,e,t){switch(I){case"B":case"BB":case"BBB":return e.dayPeriod(g,{width:"abbreviated",context:"formatting"})||e.dayPeriod(g,{width:"narrow",context:"formatting"});case"BBBBB":return e.dayPeriod(g,{width:"narrow",context:"formatting"});case"BBBB":default:return e.dayPeriod(g,{width:"wide",context:"formatting"})||e.dayPeriod(g,{width:"abbreviated",context:"formatting"})||e.dayPeriod(g,{width:"narrow",context:"formatting"})}},set:function(g,I,e,t){return g.setUTCHours(kg(e),0,0,0),g},incompatibleTokens:["a","b","t","T"]},h:{priority:70,parse:function(g,I,e,t){switch(I){case"h":return Wg(dg,g);case"ho":return e.ordinalNumber(g,{unit:"hour"});default:return Jg(I.length,g)}},validate:function(g,I,e){return I>=1&&I<=12},set:function(g,I,e,t){var C=g.getUTCHours()>=12;return C&&e<12?g.setUTCHours(e+12,0,0,0):C||12!==e?g.setUTCHours(e,0,0,0):g.setUTCHours(0,0,0,0),g},incompatibleTokens:["H","K","k","t","T"]},H:{priority:70,parse:function(g,I,e,t){switch(I){case"H":return Wg(ag,g);case"Ho":return e.ordinalNumber(g,{unit:"hour"});default:return Jg(I.length,g)}},validate:function(g,I,e){return I>=0&&I<=23},set:function(g,I,e,t){return g.setUTCHours(e,0,0,0),g},incompatibleTokens:["a","b","h","K","k","t","T"]},K:{priority:70,parse:function(g,I,e,t){switch(I){case"K":return Wg(og,g);case"Ko":return e.ordinalNumber(g,{unit:"hour"});default:return Jg(I.length,g)}},validate:function(g,I,e){return I>=0&&I<=11},set:function(g,I,e,t){return g.getUTCHours()>=12&&e<12?g.setUTCHours(e+12,0,0,0):g.setUTCHours(e,0,0,0),g},incompatibleTokens:["a","b","h","H","k","t","T"]},k:{priority:70,parse:function(g,I,e,t){switch(I){case"k":return Wg(rg,g);case"ko":return e.ordinalNumber(g,{unit:"hour"});default:return Jg(I.length,g)}},validate:function(g,I,e){return I>=1&&I<=24},set:function(g,I,e,t){var C=e<=24?e%24:e;return g.setUTCHours(C,0,0,0),g},incompatibleTokens:["a","b","h","H","K","t","T"]},m:{priority:60,parse:function(g,I,e,t){switch(I){case"m":return Wg(ug,g);case"mo":return e.ordinalNumber(g,{unit:"minute"});default:return Jg(I.length,g)}},validate:function(g,I,e){return I>=0&&I<=59},set:function(g,I,e,t){return g.setUTCMinutes(e,0,0),g},incompatibleTokens:["t","T"]},s:{priority:50,parse:function(g,I,e,t){switch(I){case"s":return Wg(yg,g);case"so":return e.ordinalNumber(g,{unit:"second"});default:return Jg(I.length,g)}},validate:function(g,I,e){return I>=0&&I<=59},set:function(g,I,e,t){return g.setUTCSeconds(e,0),g},incompatibleTokens:["t","T"]},S:{priority:30,parse:function(g,I,e,t){return Jg(I.length,g,(function(g){return Math.floor(g*Math.pow(10,3-I.length))}))},set:function(g,I,e,t){return g.setUTCMilliseconds(e),g},incompatibleTokens:["t","T"]},X:{priority:10,parse:function(g,I,e,t){switch(I){case"X":return fg(hg,g);case"XX":return fg(Dg,g);case"XXXX":return fg(pg,g);case"XXXXX":return fg(Ng,g);case"XXX":default:return fg(Eg,g)}},set:function(g,I,e,t){return I.timestampIsSet?g:new Date(g.getTime()-e)},incompatibleTokens:["t","T","x"]},x:{priority:10,parse:function(g,I,e,t){switch(I){case"x":return fg(hg,g);case"xx":return fg(Dg,g);case"xxxx":return fg(pg,g);case"xxxxx":return fg(Ng,g);case"xxx":default:return fg(Eg,g)}},set:function(g,I,e,t){return I.timestampIsSet?g:new Date(g.getTime()-e)},incompatibleTokens:["t","T","X"]},t:{priority:40,parse:function(g,I,e,t){return Xg(g)},set:function(g,I,e,t){return[new Date(1e3*e),{timestampIsSet:!0}]},incompatibleTokens:"*"},T:{priority:20,parse:function(g,I,e,t){return Xg(g)},set:function(g,I,e,t){return[new Date(e),{timestampIsSet:!0}]},incompatibleTokens:"*"}},zg=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,Og=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,Kg=/^'([^]*?)'?$/,jg=/''/g,Pg=/\S/,_g=/[a-zA-Z]/;function qg(g,I){if(I.timestampIsSet)return g;var e=new Date(0);return e.setFullYear(g.getUTCFullYear(),g.getUTCMonth(),g.getUTCDate()),e.setHours(g.getUTCHours(),g.getUTCMinutes(),g.getUTCSeconds(),g.getUTCMilliseconds()),e}function $g(g){return g.match(Kg)[1].replace(jg,"'")}function gI(g){C(1,arguments);var I=Q(g);return I.setDate(1),I.setHours(0,0,0,0),I}function II(g){C(1,arguments);var I=Q(g),e=I.getMonth();return I.setFullYear(I.getFullYear(),e+1,0),I.setHours(23,59,59,999),I}function eI(g,I){C(1,arguments);var e=I||{},F=e.locale,B=F&&F.options&&F.options.weekStartsOn,n=null==B?0:t(B),U=null==e.weekStartsOn?n:t(e.weekStartsOn);if(!(U>=0&&U<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var s=Q(g),i=s.getDay(),c=(i<U?7:0)+i-U;return s.setDate(s.getDate()-c),s.setHours(0,0,0,0),s}function tI(g){C(1,arguments);var I=Q(g),e=new Date(0);return e.setFullYear(I.getFullYear(),0,1),e.setHours(0,0,0,0),e}!function(){function g(g){var I=(void 0===g?{}:g).locale;this.yearFormat="yyyy",this.yearMonthFormat="MMMM yyyy",this.dateTime12hFormat="MMMM do hh:mm aaaa",this.dateTime24hFormat="MMMM do HH:mm",this.time12hFormat="hh:mm a",this.time24hFormat="HH:mm",this.dateFormat="MMMM do",this.locale=I}g.prototype.addDays=function(g,I){return F(g,I)},g.prototype.isValid=function(g){return A(this.date(g))},g.prototype.getDiff=function(g,I){return function(g,I){C(2,arguments);var e=Q(g),t=Q(I);return e.getTime()-t.getTime()}(g,this.date(I))},g.prototype.isAfter=function(g,I){return Qg(g,I)},g.prototype.isBefore=function(g,I){return Fg(g,I)},g.prototype.startOfDay=function(g){return Bg(g)},g.prototype.endOfDay=function(g){return s(g)},g.prototype.getHours=function(g){return function(g){C(1,arguments);var I=Q(g),e=I.getHours();return e}(g)},g.prototype.setHours=function(g,I){return function(g,I){C(2,arguments);var e=Q(g),F=t(I);return e.setHours(F),e}(g,I)},g.prototype.setMinutes=function(g,I){return function(g,I){C(2,arguments);var e=Q(g),F=t(I);return e.setMinutes(F),e}(g,I)},g.prototype.getSeconds=function(g){return function(g){C(1,arguments);var I=Q(g),e=I.getSeconds();return e}(g)},g.prototype.setSeconds=function(g,I){return function(g,I){C(2,arguments);var e=Q(g),F=t(I);return e.setSeconds(F),e}(g,I)},g.prototype.isSameDay=function(g,I){return function(g,I){C(2,arguments);var e=Bg(g),t=Bg(I);return e.getTime()===t.getTime()}(g,I)},g.prototype.isSameMonth=function(g,I){return function(g,I){C(2,arguments);var e=Q(g),t=Q(I);return e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()}(g,I)},g.prototype.isSameYear=function(g,I){return function(g,I){C(2,arguments);var e=Q(g),t=Q(I);return e.getFullYear()===t.getFullYear()}(g,I)},g.prototype.isSameHour=function(g,I){return function(g,I){C(2,arguments);var e=ng(g),t=ng(I);return e.getTime()===t.getTime()}(g,I)},g.prototype.startOfMonth=function(g){return gI(g)},g.prototype.endOfMonth=function(g){return II(g)},g.prototype.getYear=function(g){return function(g){C(1,arguments);var I=Q(g),e=I.getFullYear();return e}(g)},g.prototype.setYear=function(g,I){return function(g,I){C(2,arguments);var e=Q(g),F=t(I);return isNaN(e)?new Date(NaN):(e.setFullYear(F),e)}(g,I)},g.prototype.date=function(g){return"undefined"===typeof g?new Date:null===g?null:new Date(g)},g.prototype.parse=function(g,I){return""===g?null:function(g,I,e,F){C(3,arguments);var B=String(g),n=String(I),U=F||{},s=U.locale||b;if(!s.match)throw new RangeError("locale must contain match property");var i=s.options&&s.options.firstWeekContainsDate,c=null==i?1:t(i),A=null==U.firstWeekContainsDate?c:t(U.firstWeekContainsDate);if(!(A>=1&&A<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var l=s.options&&s.options.weekStartsOn,a=null==l?0:t(l),r=null==U.weekStartsOn?a:t(U.weekStartsOn);if(!(r>=0&&r<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");if(""===n)return""===B?Q(e):new Date(NaN);var o,d={firstWeekContainsDate:A,weekStartsOn:r,locale:s},u=[{priority:10,set:qg,index:0}],y=n.match(Og).map((function(g){var I=g[0];return"p"===I||"P"===I?(0,z[I])(g,s.formatLong,d):g})).join("").match(zg),Z=[];for(o=0;o<y.length;o++){var x=y[o];!U.useAdditionalWeekYearTokens&&_(x)&&q(x),!U.useAdditionalDayOfYearTokens&&P(x)&&q(x);var R=x[0],S=Tg[R];if(S){var G=S.incompatibleTokens;if(Array.isArray(G)){for(var L=void 0,V=0;V<Z.length;V++){var h=Z[V].token;if(-1!==G.indexOf(h)||h===R){L=Z[V];break}}if(L)throw new RangeError("The format string mustn't contain `".concat(L.fullToken,"` and `").concat(x,"` at the same time"))}else if("*"===S.incompatibleTokens&&Z.length)throw new RangeError("The format string mustn't contain `".concat(x,"` and any other token at the same time"));Z.push({token:R,fullToken:x});var D=S.parse(B,x,s.match,d);if(!D)return new Date(NaN);u.push({priority:S.priority,set:S.set,validate:S.validate,value:D.value,index:u.length}),B=D.rest}else{if(R.match(_g))throw new RangeError("Format string contains an unescaped latin alphabet character `"+R+"`");if("''"===x?x="'":"'"===R&&(x=$g(x)),0!==B.indexOf(x))return new Date(NaN);B=B.slice(x.length)}}if(B.length>0&&Pg.test(B))return new Date(NaN);var p=u.map((function(g){return g.priority})).sort((function(g,I){return I-g})).filter((function(g,I,e){return e.indexOf(g)===I})).map((function(g){return u.filter((function(I){return I.priority===g})).reverse()})).map((function(g){return g[0]})),E=Q(e);if(isNaN(E))return new Date(NaN);var N=m(E,O(E)),W={};for(o=0;o<p.length;o++){var f=p[o];if(f.validate&&!f.validate(N,f.value,d))return new Date(NaN);var X=f.set(N,W,f.value,d);X[0]?(N=X[0],Ug(W,X[1])):N=X}return N}(g,I,new Date,{locale:this.locale})},g.prototype.format=function(g,I){return function(g,I,e){C(2,arguments);var F=String(I),B=e||{},n=B.locale||b,U=n.options&&n.options.firstWeekContainsDate,s=null==U?1:t(U),i=null==B.firstWeekContainsDate?s:t(B.firstWeekContainsDate);if(!(i>=1&&i<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var c=n.options&&n.options.weekStartsOn,l=null==c?0:t(c),a=null==B.weekStartsOn?l:t(B.weekStartsOn);if(!(a>=0&&a<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");if(!n.localize)throw new RangeError("locale must contain localize property");if(!n.formatLong)throw new RangeError("locale must contain formatLong property");var r=Q(g);if(!A(r))throw new RangeError("Invalid time value");var o=O(r),d=m(r,o),u={firstWeekContainsDate:i,weekStartsOn:a,locale:n,_originalDate:r},y=F.match(gg).map((function(g){var I=g[0];return"p"===I||"P"===I?(0,z[I])(g,n.formatLong,u):g})).join("").match($).map((function(g){if("''"===g)return"'";var I=g[0];if("'"===I)return Cg(g);var e=Y[I];if(e)return!B.useAdditionalWeekYearTokens&&_(g)&&q(g),!B.useAdditionalDayOfYearTokens&&P(g)&&q(g),e(d,g,n.localize,u);if(I.match(tg))throw new RangeError("Format string contains an unescaped latin alphabet character `"+I+"`");return g})).join("");return y}(g,I,{locale:this.locale})},g.prototype.isEqual=function(g,I){return null===g&&null===I||function(g,I){C(2,arguments);var e=Q(g),t=Q(I);return e.getTime()===t.getTime()}(g,I)},g.prototype.isNull=function(g){return null===g},g.prototype.isAfterDay=function(g,I){return Qg(g,s(I))},g.prototype.isBeforeDay=function(g,I){return Fg(g,Bg(I))},g.prototype.isBeforeYear=function(g,I){return Fg(g,tI(I))},g.prototype.isAfterYear=function(g,I){return Qg(g,c(I))},g.prototype.formatNumber=function(g){return g},g.prototype.getMinutes=function(g){return g.getMinutes()},g.prototype.getMonth=function(g){return g.getMonth()},g.prototype.setMonth=function(g,I){return function(g,I){C(2,arguments);var e=Q(g),F=t(I),n=e.getFullYear(),U=e.getDate(),s=new Date(0);s.setFullYear(n,F,15),s.setHours(0,0,0,0);var i=B(s);return e.setMonth(F,Math.min(U,i)),e}(g,I)},g.prototype.getMeridiemText=function(g){return"am"===g?"AM":"PM"},g.prototype.getNextMonth=function(g){return n(g,1)},g.prototype.getPreviousMonth=function(g){return n(g,-1)},g.prototype.getMonthArray=function(g){for(var I=[tI(g)];I.length<12;){var e=I[I.length-1];I.push(this.getNextMonth(e))}return I},g.prototype.mergeDateAndTime=function(g,I){return this.setMinutes(this.setHours(g,this.getHours(I)),this.getMinutes(I))},g.prototype.getWeekdays=function(){var g=this,I=new Date;return function(g,I){C(1,arguments);var e=g||{},t=Q(e.start),F=Q(e.end),B=F.getTime();if(!(t.getTime()<=B))throw new RangeError("Invalid interval");var n=[],U=t;U.setHours(0,0,0,0);var s=I&&"step"in I?Number(I.step):1;if(s<1||isNaN(s))throw new RangeError("`options.step` must be a number greater than 1");for(;U.getTime()<=B;)n.push(Q(U)),U.setDate(U.getDate()+s),U.setHours(0,0,0,0);return n}({start:eI(I,{locale:this.locale}),end:i(I,{locale:this.locale})}).map((function(I){return g.format(I,"EEEEEE")}))},g.prototype.getWeekArray=function(g){for(var I=eI(gI(g),{locale:this.locale}),e=i(II(g),{locale:this.locale}),t=0,C=I,Q=[];Fg(C,e);){var B=Math.floor(t/7);Q[B]=Q[B]||[],Q[B].push(C),C=F(C,1),t+=1}return Q},g.prototype.getYearRange=function(g,I){for(var e=tI(g),t=c(I),C=[],Q=e;Fg(Q,t);)C.push(Q),Q=U(Q,1);return C},g.prototype.getCalendarHeaderText=function(g){return this.format(g,this.yearMonthFormat)},g.prototype.getYearText=function(g){return this.format(g,"yyyy")},g.prototype.getDatePickerHeaderText=function(g){return this.format(g,"EEE, MMM d")},g.prototype.getDateTimePickerHeaderText=function(g){return this.format(g,"MMM d")},g.prototype.getMonthText=function(g){return this.format(g,"MMMM")},g.prototype.getDayText=function(g){return this.format(g,"d")},g.prototype.getHourText=function(g,I){return this.format(g,I?"hh":"HH")},g.prototype.getMinuteText=function(g){return this.format(g,"mm")},g.prototype.getSecondText=function(g){return this.format(g,"ss")}}()},function(g,I,e){"use strict";var t=e(0),C=e.n(t),Q={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0};t.createContext&&t.createContext(Q);C.a.createContext({})},function(g,I,e){"use strict";e.r(I),e.d(I,"default",(function(){return l}));var t=e(301),C=e(203);function Q(g,I){return(Q=Object.setPrototypeOf||function(g,I){return g.__proto__=I,g})(g,I)}var F=e(181),B=e(366);function n(g,I){return!I||"object"!==Object(F.a)(I)&&"function"!==typeof I?Object(B.a)(g):I}function U(g){return(U=Object.setPrototypeOf?Object.getPrototypeOf:function(g){return g.__proto__||Object.getPrototypeOf(g)})(g)}var s=e(0),i=e(42),c=(e(4),e(160));function A(g){var I=function(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(g){return!1}}();return function(){var e,t=U(g);if(I){var C=U(this).constructor;e=Reflect.construct(t,arguments,C)}else e=t.apply(this,arguments);return n(this,e)}}var l=function(g){!function(g,I){if("function"!==typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function");g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,writable:!0,configurable:!0}}),I&&Q(g,I)}(e,g);var I=A(e);function e(){return Object(t.a)(this,e),I.apply(this,arguments)}return Object(C.a)(e,[{key:"componentDidMount",value:function(){this.ref=i.findDOMNode(this),Object(c.a)(this.props.rootRef,this.ref)}},{key:"componentDidUpdate",value:function(g){var I=i.findDOMNode(this);g.rootRef===this.props.rootRef&&this.ref===I||(g.rootRef!==this.props.rootRef&&Object(c.a)(g.rootRef,null),this.ref=I,Object(c.a)(this.props.rootRef,this.ref))}},{key:"componentWillUnmount",value:function(){this.ref=null,Object(c.a)(this.props.rootRef,null)}},{key:"render",value:function(){return this.props.children}}]),e}(s.Component)},function(g,I,e){"use strict";function t(){return(t=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}e.r(I),e.d(I,"withContentRect",(function(){return i}));var C=e(63),Q=e(4),F=e.n(Q),B=e(821),n=["client","offset","scroll","bounds","margin"];function U(g){var I=[];return n.forEach((function(e){g[e]&&I.push(e)})),I}function s(g,I){var e={};if(I.indexOf("client")>-1&&(e.client={top:g.clientTop,left:g.clientLeft,width:g.clientWidth,height:g.clientHeight}),I.indexOf("offset")>-1&&(e.offset={top:g.offsetTop,left:g.offsetLeft,width:g.offsetWidth,height:g.offsetHeight}),I.indexOf("scroll")>-1&&(e.scroll={top:g.scrollTop,left:g.scrollLeft,width:g.scrollWidth,height:g.scrollHeight}),I.indexOf("bounds")>-1){var t=g.getBoundingClientRect();e.bounds={top:t.top,right:t.right,bottom:t.bottom,left:t.left,width:t.width,height:t.height}}if(I.indexOf("margin")>-1){var C=getComputedStyle(g);e.margin={top:C?parseInt(C.marginTop):0,right:C?parseInt(C.marginRight):0,bottom:C?parseInt(C.marginBottom):0,left:C?parseInt(C.marginLeft):0}}return e}function i(g){return function(I){var e,Q;return Q=e=function(e){var Q,F;function n(){for(var I,t=arguments.length,C=new Array(t),Q=0;Q<t;Q++)C[Q]=arguments[Q];return(I=e.call.apply(e,[this].concat(C))||this).state={contentRect:{entry:{},client:{},offset:{},scroll:{},bounds:{},margin:{}}},I._animationFrameID=null,I._resizeObserver=null,I._node=null,I.measure=function(e){var t=s(I._node,g||U(I.props));e&&(t.entry=e[0].contentRect),I._animationFrameID=window.requestAnimationFrame((function(){null!==I._resizeObserver&&(I.setState({contentRect:t}),"function"===typeof I.props.onResize&&I.props.onResize(t))}))},I._handleRef=function(g){null!==I._resizeObserver&&null!==I._node&&I._resizeObserver.unobserve(I._node),I._node=g,null!==I._resizeObserver&&null!==I._node&&I._resizeObserver.observe(I._node);var e=I.props.innerRef;e&&("function"===typeof e?e(I._node):e.current=I._node)},I}F=e,(Q=n).prototype=Object.create(F.prototype),Q.prototype.constructor=Q,Q.__proto__=F;var i=n.prototype;return i.componentDidMount=function(){this._resizeObserver=new B.a(this.measure),null!==this._node&&(this._resizeObserver.observe(this._node),"function"===typeof this.props.onResize&&this.props.onResize(s(this._node,g||U(this.props))))},i.componentWillUnmount=function(){null!==this._resizeObserver&&(this._resizeObserver.disconnect(),this._resizeObserver=null),window.cancelAnimationFrame(this._animationFrameID)},i.render=function(){var g=this.props,e=(g.innerRef,g.onResize,function(g,I){if(null==g)return{};var e,t,C={},Q=Object.keys(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||(C[e]=g[e]);return C}(g,["innerRef","onResize"]));return Object(C.createElement)(I,t({},e,{measureRef:this._handleRef,measure:this.measure,contentRect:this.state.contentRect}))},n}(C.Component),e.propTypes={client:F.a.bool,offset:F.a.bool,scroll:F.a.bool,bounds:F.a.bool,margin:F.a.bool,innerRef:F.a.oneOfType([F.a.object,F.a.func]),onResize:F.a.func},Q}}var c=i()((function(g){var I=g.measure,e=g.measureRef,t=g.contentRect;return(0,g.children)({measure:I,measureRef:e,contentRect:t})}));c.displayName="Measure",c.propTypes.children=F.a.func;I.default=c},,function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=e.n(Q),B=(e(4),e(129)),n=e.n(B),U=e(599),s=e(1676),i=e(470);I.a=function(g){var I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return function(e){var Q=I.defaultTheme,B=I.withTheme,c=void 0!==B&&B,A=I.name,l=Object(C.a)(I,["defaultTheme","withTheme","name"]);var a=A,r=Object(U.a)(g,Object(t.a)({defaultTheme:Q,Component:e,name:A||e.displayName,classNamePrefix:a},l)),o=F.a.forwardRef((function(g,I){g.classes;var B,n=g.innerRef,U=Object(C.a)(g,["classes","innerRef"]),l=r(Object(t.a)(Object(t.a)({},e.defaultProps),g)),a=U;return("string"===typeof A||c)&&(B=Object(i.a)()||Q,A&&(a=Object(s.a)({theme:B,name:A,props:U})),c&&!a.theme&&(a.theme=B)),F.a.createElement(e,Object(t.a)({ref:n||I,classes:l},a))}));return n()(o,e),o}}},function(g,I,e){"use strict";function t(g){var I=g.theme,e=g.name,t=g.props;if(!I||!I.props||!I.props[e])return t;var C,Q=I.props[e];for(C in Q)void 0===t[C]&&(t[C]=Q[C]);return t}e.d(I,"a",(function(){return t}))},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(4),e(14)),B=e(929),n=e(21),U=Q.forwardRef((function(g,I){var e=g.disableUnderline,n=g.classes,U=g.fullWidth,s=void 0!==U&&U,i=g.inputComponent,c=void 0===i?"input":i,A=g.multiline,l=void 0!==A&&A,a=g.type,r=void 0===a?"text":a,o=Object(C.a)(g,["disableUnderline","classes","fullWidth","inputComponent","multiline","type"]);return Q.createElement(B.a,Object(t.a)({classes:Object(t.a)({},n,{root:Object(F.default)(n.root,!e&&n.underline),underline:null}),fullWidth:s,inputComponent:c,multiline:l,ref:I,type:r},o))}));U.muiName="Input",I.a=Object(n.a)((function(g){var I="light"===g.palette.type?"rgba(0, 0, 0, 0.42)":"rgba(255, 255, 255, 0.7)";return{root:{position:"relative"},formControl:{"label + &":{marginTop:16}},focused:{},disabled:{},colorSecondary:{"&$underline:after":{borderBottomColor:g.palette.secondary.main}},underline:{"&:after":{borderBottom:"2px solid ".concat(g.palette.primary.main),left:0,bottom:0,content:'""',position:"absolute",right:0,transform:"scaleX(0)",transition:g.transitions.create("transform",{duration:g.transitions.duration.shorter,easing:g.transitions.easing.easeOut}),pointerEvents:"none"},"&$focused:after":{transform:"scaleX(1)"},"&$error:after":{borderBottomColor:g.palette.error.main,transform:"scaleX(1)"},"&:before":{borderBottom:"1px solid ".concat(I),left:0,bottom:0,content:'"\\00a0"',position:"absolute",right:0,transition:g.transitions.create("border-bottom-color",{duration:g.transitions.duration.shorter}),pointerEvents:"none"},"&:hover:not($disabled):before":{borderBottom:"2px solid ".concat(g.palette.text.primary),"@media (hover: none)":{borderBottom:"1px solid ".concat(I)}},"&$disabled:before":{borderBottomStyle:"dotted"}},error:{},marginDense:{},multiline:{},fullWidth:{},input:{},inputMarginDense:{},inputMultiline:{},inputTypeSearch:{}}}),{name:"MuiInput"})(U)},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(4),e(42)),B=e(183),n=e(14),U=e(73),s=e(302),i=e(204),c=e(21),A=e(600),l=e(1679),a=e(321);function r(g,I){var e=0;return"number"===typeof I?e=I:"center"===I?e=g.height/2:"bottom"===I&&(e=g.height),e}function o(g,I){var e=0;return"number"===typeof I?e=I:"center"===I?e=g.width/2:"right"===I&&(e=g.width),e}function d(g){return[g.horizontal,g.vertical].map((function(g){return"number"===typeof g?"".concat(g,"px"):g})).join(" ")}function u(g){return"function"===typeof g?g():g}var y=Q.forwardRef((function(g,I){var e=g.action,c=g.anchorEl,y=g.anchorOrigin,b=void 0===y?{vertical:"top",horizontal:"left"}:y,Z=g.anchorPosition,m=g.anchorReference,x=void 0===m?"anchorEl":m,R=g.children,S=g.classes,G=g.className,L=g.container,V=g.elevation,h=void 0===V?8:V,D=g.getContentAnchorEl,p=g.marginThreshold,E=void 0===p?16:p,N=g.onEnter,W=g.onEntered,f=g.onEntering,X=g.onExit,J=g.onExited,v=g.onExiting,k=g.open,H=g.PaperProps,M=void 0===H?{}:H,Y=g.transformOrigin,w=void 0===Y?{vertical:"top",horizontal:"left"}:Y,T=g.TransitionComponent,z=void 0===T?l.a:T,O=g.transitionDuration,K=void 0===O?"auto":O,j=g.TransitionProps,P=void 0===j?{}:j,_=Object(C.a)(g,["action","anchorEl","anchorOrigin","anchorPosition","anchorReference","children","classes","className","container","elevation","getContentAnchorEl","marginThreshold","onEnter","onEntered","onEntering","onExit","onExited","onExiting","open","PaperProps","transformOrigin","TransitionComponent","transitionDuration","TransitionProps"]),q=Q.useRef(),$=Q.useCallback((function(g){if("anchorPosition"===x)return Z;var I=u(c),e=(I&&1===I.nodeType?I:Object(U.a)(q.current).body).getBoundingClientRect(),t=0===g?b.vertical:"center";return{top:e.top+r(e,t),left:e.left+o(e,b.horizontal)}}),[c,b.horizontal,b.vertical,Z,x]),gg=Q.useCallback((function(g){var I=0;if(D&&"anchorEl"===x){var e=D(g);if(e&&g.contains(e)){var t=function(g,I){for(var e=I,t=0;e&&e!==g;)t+=(e=e.parentElement).scrollTop;return t}(g,e);I=e.offsetTop+e.clientHeight/2-t||0}0}return I}),[b.vertical,x,D]),Ig=Q.useCallback((function(g){var I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return{vertical:r(g,w.vertical)+I,horizontal:o(g,w.horizontal)}}),[w.horizontal,w.vertical]),eg=Q.useCallback((function(g){var I=gg(g),e={width:g.offsetWidth,height:g.offsetHeight},t=Ig(e,I);if("none"===x)return{top:null,left:null,transformOrigin:d(t)};var C=$(I),Q=C.top-t.vertical,F=C.left-t.horizontal,B=Q+e.height,n=F+e.width,U=Object(s.a)(u(c)),i=U.innerHeight-E,A=U.innerWidth-E;if(Q<E){var l=Q-E;Q-=l,t.vertical+=l}else if(B>i){var a=B-i;Q-=a,t.vertical+=a}if(F<E){var r=F-E;F-=r,t.horizontal+=r}else if(n>A){var o=n-A;F-=o,t.horizontal+=o}return{top:"".concat(Math.round(Q),"px"),left:"".concat(Math.round(F),"px"),transformOrigin:d(t)}}),[c,x,$,gg,Ig,E]),tg=Q.useCallback((function(){var g=q.current;if(g){var I=eg(g);null!==I.top&&(g.style.top=I.top),null!==I.left&&(g.style.left=I.left),g.style.transformOrigin=I.transformOrigin}}),[eg]),Cg=Q.useCallback((function(g){q.current=F.findDOMNode(g)}),[]);Q.useEffect((function(){k&&tg()})),Q.useImperativeHandle(e,(function(){return k?{updatePosition:function(){tg()}}:null}),[k,tg]),Q.useEffect((function(){if(k){var g=Object(B.a)((function(){tg()}));return window.addEventListener("resize",g),function(){g.clear(),window.removeEventListener("resize",g)}}}),[k,tg]);var Qg=K;"auto"!==K||z.muiSupportAuto||(Qg=void 0);var Fg=L||(c?Object(U.a)(u(c)).body:void 0);return Q.createElement(A.a,Object(t.a)({container:Fg,open:k,ref:I,BackdropProps:{invisible:!0},className:Object(n.default)(S.root,G)},_),Q.createElement(z,Object(t.a)({appear:!0,in:k,onEnter:N,onEntered:W,onExit:X,onExited:J,onExiting:v,timeout:Qg},P,{onEntering:Object(i.a)((function(g,I){f&&f(g,I),tg()}),P.onEntering)}),Q.createElement(a.a,Object(t.a)({elevation:h,ref:Cg},M,{className:Object(n.default)(S.paper,M.className)}),R)))}));I.a=Object(c.a)({root:{},paper:{position:"absolute",overflowY:"auto",overflowX:"hidden",minWidth:16,minHeight:16,maxWidth:"calc(100% - 32px)",maxHeight:"calc(100% - 32px)",outline:0}},{name:"MuiPopover"})(y)},function(g,I,e){"use strict";var t=e(5),C=e(99),Q=e(16),F=e(0),B=(e(4),e(473)),n=e(77),U=e(120),s=e(49);function i(g){return"scale(".concat(g,", ").concat(Math.pow(g,2),")")}var c={entering:{opacity:1,transform:i(1)},entered:{opacity:1,transform:"none"}},A=F.forwardRef((function(g,I){var e=g.children,A=g.disableStrictModeCompat,l=void 0!==A&&A,a=g.in,r=g.onEnter,o=g.onEntered,d=g.onEntering,u=g.onExit,y=g.onExited,b=g.onExiting,Z=g.style,m=g.timeout,x=void 0===m?"auto":m,R=g.TransitionComponent,S=void 0===R?B.a:R,G=Object(Q.a)(g,["children","disableStrictModeCompat","in","onEnter","onEntered","onEntering","onExit","onExited","onExiting","style","timeout","TransitionComponent"]),L=F.useRef(),V=F.useRef(),h=Object(n.a)(),D=h.unstable_strictMode&&!l,p=F.useRef(null),E=Object(s.a)(e.ref,I),N=Object(s.a)(D?p:void 0,E),W=function(g){return function(I,e){if(g){var t=D?[p.current,I]:[I,e],Q=Object(C.a)(t,2),F=Q[0],B=Q[1];void 0===B?g(F):g(F,B)}}},f=W(d),X=W((function(g,I){Object(U.b)(g);var e,t=Object(U.a)({style:Z,timeout:x},{mode:"enter"}),C=t.duration,Q=t.delay;"auto"===x?(e=h.transitions.getAutoHeightDuration(g.clientHeight),V.current=e):e=C,g.style.transition=[h.transitions.create("opacity",{duration:e,delay:Q}),h.transitions.create("transform",{duration:.666*e,delay:Q})].join(","),r&&r(g,I)})),J=W(o),v=W(b),k=W((function(g){var I,e=Object(U.a)({style:Z,timeout:x},{mode:"exit"}),t=e.duration,C=e.delay;"auto"===x?(I=h.transitions.getAutoHeightDuration(g.clientHeight),V.current=I):I=t,g.style.transition=[h.transitions.create("opacity",{duration:I,delay:C}),h.transitions.create("transform",{duration:.666*I,delay:C||.333*I})].join(","),g.style.opacity="0",g.style.transform=i(.75),u&&u(g)})),H=W(y);return F.useEffect((function(){return function(){clearTimeout(L.current)}}),[]),F.createElement(S,Object(t.a)({appear:!0,in:a,nodeRef:D?p:void 0,onEnter:X,onEntered:J,onEntering:f,onExit:k,onExited:H,onExiting:v,addEndListener:function(g,I){var e=D?g:I;"auto"===x&&(L.current=setTimeout(e,V.current||0))},timeout:"auto"===x?null:x},G),(function(g,I){return F.cloneElement(e,Object(t.a)({style:Object(t.a)({opacity:0,transform:i(.75),visibility:"exited"!==g||a?void 0:"hidden"},c[g],Z,e.props.style),ref:N},I))}))}));A.muiSupportAuto=!0,I.a=A},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(122),e(4),e(42)),B=e(73),n=e(1681),U=e(438),s=e(49);function i(g,I,e){return g===I?g.firstChild:I&&I.nextElementSibling?I.nextElementSibling:e?null:g.firstChild}function c(g,I,e){return g===I?e?g.firstChild:g.lastChild:I&&I.previousElementSibling?I.previousElementSibling:e?null:g.lastChild}function A(g,I){if(void 0===I)return!0;var e=g.innerText;return void 0===e&&(e=g.textContent),0!==(e=e.trim().toLowerCase()).length&&(I.repeating?e[0]===I.keys[0]:0===e.indexOf(I.keys.join("")))}function l(g,I,e,t,C,Q){for(var F=!1,B=C(g,I,!!I&&e);B;){if(B===g.firstChild){if(F)return;F=!0}var n=!t&&(B.disabled||"true"===B.getAttribute("aria-disabled"));if(B.hasAttribute("tabindex")&&A(B,Q)&&!n)return void B.focus();B=C(g,B,e)}}var a="undefined"===typeof window?Q.useEffect:Q.useLayoutEffect,r=Q.forwardRef((function(g,I){var e=g.actions,r=g.autoFocus,o=void 0!==r&&r,d=g.autoFocusItem,u=void 0!==d&&d,y=g.children,b=g.className,Z=g.disabledItemsFocusable,m=void 0!==Z&&Z,x=g.disableListWrap,R=void 0!==x&&x,S=g.onKeyDown,G=g.variant,L=void 0===G?"selectedMenu":G,V=Object(C.a)(g,["actions","autoFocus","autoFocusItem","children","className","disabledItemsFocusable","disableListWrap","onKeyDown","variant"]),h=Q.useRef(null),D=Q.useRef({keys:[],repeating:!0,previousKeyMatched:!0,lastTime:null});a((function(){o&&h.current.focus()}),[o]),Q.useImperativeHandle(e,(function(){return{adjustStyleForScrollbar:function(g,I){var e=!h.current.style.width;if(g.clientHeight<h.current.clientHeight&&e){var t="".concat(Object(U.a)(!0),"px");h.current.style["rtl"===I.direction?"paddingLeft":"paddingRight"]=t,h.current.style.width="calc(100% + ".concat(t,")")}return h.current}}}),[]);var p=Q.useCallback((function(g){h.current=F.findDOMNode(g)}),[]),E=Object(s.a)(p,I),N=-1;Q.Children.forEach(y,(function(g,I){Q.isValidElement(g)&&(g.props.disabled||("selectedMenu"===L&&g.props.selected||-1===N)&&(N=I))}));var W=Q.Children.map(y,(function(g,I){if(I===N){var e={};return u&&(e.autoFocus=!0),void 0===g.props.tabIndex&&"selectedMenu"===L&&(e.tabIndex=0),Q.cloneElement(g,e)}return g}));return Q.createElement(n.a,Object(t.a)({role:"menu",ref:E,className:b,onKeyDown:function(g){var I=h.current,e=g.key,t=Object(B.a)(I).activeElement;if("ArrowDown"===e)g.preventDefault(),l(I,t,R,m,i);else if("ArrowUp"===e)g.preventDefault(),l(I,t,R,m,c);else if("Home"===e)g.preventDefault(),l(I,null,R,m,i);else if("End"===e)g.preventDefault(),l(I,null,R,m,c);else if(1===e.length){var C=D.current,Q=e.toLowerCase(),F=performance.now();C.keys.length>0&&(F-C.lastTime>500?(C.keys=[],C.repeating=!0,C.previousKeyMatched=!0):C.repeating&&Q!==C.keys[0]&&(C.repeating=!1)),C.lastTime=F,C.keys.push(Q);var n=t&&!C.repeating&&A(t,C);C.previousKeyMatched&&(n||l(I,t,!1,m,i,C))?g.preventDefault():C.previousKeyMatched=!1}S&&S(g)},tabIndex:o?0:-1},V),W)}));I.a=r},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(4),e(14)),B=e(21),n=e(170),U=Q.forwardRef((function(g,I){var e=g.children,B=g.classes,U=g.className,s=g.component,i=void 0===s?"ul":s,c=g.dense,A=void 0!==c&&c,l=g.disablePadding,a=void 0!==l&&l,r=g.subheader,o=Object(C.a)(g,["children","classes","className","component","dense","disablePadding","subheader"]),d=Q.useMemo((function(){return{dense:A}}),[A]);return Q.createElement(n.a.Provider,{value:d},Q.createElement(i,Object(t.a)({className:Object(F.default)(B.root,U,A&&B.dense,!a&&B.padding,r&&B.subheader),ref:I},o),r,e))}));I.a=Object(B.a)({root:{listStyle:"none",margin:0,padding:0,position:"relative"},padding:{paddingTop:8,paddingBottom:8},dense:{},subheader:{paddingTop:0}},{name:"MuiList"})(U)},function(g,I,e){"use strict";function t(g){return g}e.d(I,"a",(function(){return t}))},function(g,I,e){"use strict";e.d(I,"a",(function(){return c}));var t=e(5),C=e(16),Q=e(0),F=e.n(Q),B=e(14),n=(e(4),e(129)),U=e.n(n),s=e(599);function i(g,I){var e={};return Object.keys(g).forEach((function(t){-1===I.indexOf(t)&&(e[t]=g[t])})),e}function c(g){return function(I){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},Q=e.name,n=Object(C.a)(e,["name"]);var c,A=Q,l="function"===typeof I?function(g){return{root:function(e){return I(Object(t.a)({theme:g},e))}}}:{root:I},a=Object(s.a)(l,Object(t.a)({Component:g,name:Q||g.displayName,classNamePrefix:A},n));I.filterProps&&(c=I.filterProps,delete I.filterProps),I.propTypes&&(I.propTypes,delete I.propTypes);var r=F.a.forwardRef((function(I,e){var Q=I.children,n=I.className,U=I.clone,s=I.component,A=Object(C.a)(I,["children","className","clone","component"]),l=a(I),r=Object(B.default)(l.root,n),o=A;if(c&&(o=i(o,c)),U)return F.a.cloneElement(Q,Object(t.a)({className:Object(B.default)(Q.props.className,r)},o));if("function"===typeof Q)return Q(Object(t.a)({className:r},o));var d=s||g;return F.a.createElement(d,Object(t.a)({ref:e,className:r},o),Q)}));return U()(r,g),r}}},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(4),e(14)),B=e(21),n=Q.forwardRef((function(g,I){var e=g.active,B=g.alternativeLabel,n=void 0!==B&&B,U=g.classes,s=g.className,i=g.completed,c=g.disabled,A=(g.index,g.orientation),l=void 0===A?"horizontal":A,a=Object(C.a)(g,["active","alternativeLabel","classes","className","completed","disabled","index","orientation"]);return Q.createElement("div",Object(t.a)({className:Object(F.default)(U.root,U[l],s,n&&U.alternativeLabel,e&&U.active,i&&U.completed,c&&U.disabled),ref:I},a),Q.createElement("span",{className:Object(F.default)(U.line,{horizontal:U.lineHorizontal,vertical:U.lineVertical}[l])}))}));I.a=Object(B.a)((function(g){return{root:{flex:"1 1 auto"},horizontal:{},vertical:{marginLeft:12,padding:"0 0 8px"},alternativeLabel:{position:"absolute",top:12,left:"calc(-50% + 20px)",right:"calc(50% + 20px)"},active:{},completed:{},disabled:{},line:{display:"block",borderColor:"light"===g.palette.type?g.palette.grey[400]:g.palette.grey[600]},lineHorizontal:{borderTopStyle:"solid",borderTopWidth:1},lineVertical:{borderLeftStyle:"solid",borderLeftWidth:1,minHeight:24}}}),{name:"MuiStepConnector"})(n)},function(g,I,e){"use strict";e.d(I,"a",(function(){return a})),e.d(I,"b",(function(){return r})),e.d(I,"c",(function(){return o}));e(18);var t=e(0),C=e.n(t),Q=(e(42),e(158));function F(g){function I(I,e){var F=g(I).current,B=F.instance,n=F.context;return Object(t.useImperativeHandle)(e,(function(){return B})),null==I.children?null:C.a.createElement(Q.b,{value:n},I.children)}return Object(t.forwardRef)(I)}function B(g){function I(I,e){var C=g(I).current.instance;return Object(t.useImperativeHandle)(e,(function(){return C})),null}return Object(t.forwardRef)(I)}function n(g,I){return null==I?function(I,e){return Object(t.useRef)(g(I,e))}:function(e,C){var Q=Object(t.useRef)(g(e,C)),F=Object(t.useRef)(e),B=Q.current.instance;return Object(t.useEffect)((function(){F.current!==e&&(I(B,e,F.current),F.current=e)}),[B,e,C]),Q}}function U(g,I){var e=Object(t.useRef)(I);Object(t.useEffect)((function(){I!==e.current&&null!=g.attributionControl&&(null!=e.current&&g.attributionControl.removeAttribution(e.current),null!=I&&g.attributionControl.addAttribution(I)),e.current=I}),[g,I])}function s(g,I){var e=Object(t.useRef)();Object(t.useEffect)((function(){return null!=I&&g.instance.on(I),e.current=I,function(){null!=e.current&&g.instance.off(e.current),e.current=null}}),[g,I])}var i=e(311);function c(g,I){Object(t.useEffect)((function(){var e;return(null!==(e=I.layerContainer)&&void 0!==e?e:I.map).addLayer(g.instance),function(){var e;null==(e=I.layersControl)||e.removeLayer(g.instance),I.map.removeLayer(g.instance)}}),[I,g])}function A(g){return function(I){var e=Object(Q.c)(),t=g(Object(i.a)(I,e),e);return U(e.map,I.attribution),s(t.current,I.eventHandlers),c(t.current,e),t}}function l(g){return function(I){var e=Object(Q.c)(),C=g(Object(i.a)(I,e),e);return s(C.current,I.eventHandlers),c(C.current,e),function(g,I){var e=Object(t.useRef)();Object(t.useEffect)((function(){if(I.pathOptions!==e.current){var t,C=null!==(t=I.pathOptions)&&void 0!==t?t:{};g.instance.setStyle(C),e.current=C}}),[g,I])}(C.current,I),C}}function a(g,I){return F(A(n(g,I)))}function r(g,I){return F(l(n(g,I)))}function o(g,I){return B(A(n(g,I)))}},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(4),e(14)),B=e(78),n=Object(B.a)(Q.createElement("path",{d:"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z"}),"Cancel"),U=e(21),s=e(38),i=e(49),c=e(30),A=e(271);function l(g){return"Backspace"===g.key||"Delete"===g.key}var a=Q.forwardRef((function(g,I){var e=g.avatar,B=g.classes,U=g.className,s=g.clickable,a=g.color,r=void 0===a?"default":a,o=g.component,d=g.deleteIcon,u=g.disabled,y=void 0!==u&&u,b=g.icon,Z=g.label,m=g.onClick,x=g.onDelete,R=g.onKeyDown,S=g.onKeyUp,G=g.size,L=void 0===G?"medium":G,V=g.variant,h=void 0===V?"default":V,D=Object(C.a)(g,["avatar","classes","className","clickable","color","component","deleteIcon","disabled","icon","label","onClick","onDelete","onKeyDown","onKeyUp","size","variant"]),p=Q.useRef(null),E=Object(i.a)(p,I),N=function(g){g.stopPropagation(),x&&x(g)},W=!(!1===s||!m)||s,f="small"===L,X=o||(W?A.a:"div"),J=X===A.a?{component:"div"}:{},v=null;if(x){var k=Object(F.default)("default"!==r&&("default"===h?B["deleteIconColor".concat(Object(c.a)(r))]:B["deleteIconOutlinedColor".concat(Object(c.a)(r))]),f&&B.deleteIconSmall);v=d&&Q.isValidElement(d)?Q.cloneElement(d,{className:Object(F.default)(d.props.className,B.deleteIcon,k),onClick:N}):Q.createElement(n,{className:Object(F.default)(B.deleteIcon,k),onClick:N})}var H=null;e&&Q.isValidElement(e)&&(H=Q.cloneElement(e,{className:Object(F.default)(B.avatar,e.props.className,f&&B.avatarSmall,"default"!==r&&B["avatarColor".concat(Object(c.a)(r))])}));var M=null;return b&&Q.isValidElement(b)&&(M=Q.cloneElement(b,{className:Object(F.default)(B.icon,b.props.className,f&&B.iconSmall,"default"!==r&&B["iconColor".concat(Object(c.a)(r))])})),Q.createElement(X,Object(t.a)({role:W||x?"button":void 0,className:Object(F.default)(B.root,U,"default"!==r&&[B["color".concat(Object(c.a)(r))],W&&B["clickableColor".concat(Object(c.a)(r))],x&&B["deletableColor".concat(Object(c.a)(r))]],"default"!==h&&[B.outlined,{primary:B.outlinedPrimary,secondary:B.outlinedSecondary}[r]],y&&B.disabled,f&&B.sizeSmall,W&&B.clickable,x&&B.deletable),"aria-disabled":!!y||void 0,tabIndex:W||x?0:void 0,onClick:m,onKeyDown:function(g){g.currentTarget===g.target&&l(g)&&g.preventDefault(),R&&R(g)},onKeyUp:function(g){g.currentTarget===g.target&&(x&&l(g)?x(g):"Escape"===g.key&&p.current&&p.current.blur()),S&&S(g)},ref:E},J,D),H||M,Q.createElement("span",{className:Object(F.default)(B.label,f&&B.labelSmall)},Z),v)}));I.a=Object(U.a)((function(g){var I="light"===g.palette.type?g.palette.grey[300]:g.palette.grey[700],e=Object(s.d)(g.palette.text.primary,.26);return{root:{fontFamily:g.typography.fontFamily,fontSize:g.typography.pxToRem(13),display:"inline-flex",alignItems:"center",justifyContent:"center",height:32,color:g.palette.getContrastText(I),backgroundColor:I,borderRadius:16,whiteSpace:"nowrap",transition:g.transitions.create(["background-color","box-shadow"]),cursor:"default",outline:0,textDecoration:"none",border:"none",padding:0,verticalAlign:"middle",boxSizing:"border-box","&$disabled":{opacity:.5,pointerEvents:"none"},"& $avatar":{marginLeft:5,marginRight:-6,width:24,height:24,color:"light"===g.palette.type?g.palette.grey[700]:g.palette.grey[300],fontSize:g.typography.pxToRem(12)},"& $avatarColorPrimary":{color:g.palette.primary.contrastText,backgroundColor:g.palette.primary.dark},"& $avatarColorSecondary":{color:g.palette.secondary.contrastText,backgroundColor:g.palette.secondary.dark},"& $avatarSmall":{marginLeft:4,marginRight:-4,width:18,height:18,fontSize:g.typography.pxToRem(10)}},sizeSmall:{height:24},colorPrimary:{backgroundColor:g.palette.primary.main,color:g.palette.primary.contrastText},colorSecondary:{backgroundColor:g.palette.secondary.main,color:g.palette.secondary.contrastText},disabled:{},clickable:{userSelect:"none",WebkitTapHighlightColor:"transparent",cursor:"pointer","&:hover, &:focus":{backgroundColor:Object(s.c)(I,.08)},"&:active":{boxShadow:g.shadows[1]}},clickableColorPrimary:{"&:hover, &:focus":{backgroundColor:Object(s.c)(g.palette.primary.main,.08)}},clickableColorSecondary:{"&:hover, &:focus":{backgroundColor:Object(s.c)(g.palette.secondary.main,.08)}},deletable:{"&:focus":{backgroundColor:Object(s.c)(I,.08)}},deletableColorPrimary:{"&:focus":{backgroundColor:Object(s.c)(g.palette.primary.main,.2)}},deletableColorSecondary:{"&:focus":{backgroundColor:Object(s.c)(g.palette.secondary.main,.2)}},outlined:{backgroundColor:"transparent",border:"1px solid ".concat("light"===g.palette.type?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)"),"$clickable&:hover, $clickable&:focus, $deletable&:focus":{backgroundColor:Object(s.d)(g.palette.text.primary,g.palette.action.hoverOpacity)},"& $avatar":{marginLeft:4},"& $avatarSmall":{marginLeft:2},"& $icon":{marginLeft:4},"& $iconSmall":{marginLeft:2},"& $deleteIcon":{marginRight:5},"& $deleteIconSmall":{marginRight:3}},outlinedPrimary:{color:g.palette.primary.main,border:"1px solid ".concat(g.palette.primary.main),"$clickable&:hover, $clickable&:focus, $deletable&:focus":{backgroundColor:Object(s.d)(g.palette.primary.main,g.palette.action.hoverOpacity)}},outlinedSecondary:{color:g.palette.secondary.main,border:"1px solid ".concat(g.palette.secondary.main),"$clickable&:hover, $clickable&:focus, $deletable&:focus":{backgroundColor:Object(s.d)(g.palette.secondary.main,g.palette.action.hoverOpacity)}},avatar:{},avatarSmall:{},avatarColorPrimary:{},avatarColorSecondary:{},icon:{color:"light"===g.palette.type?g.palette.grey[700]:g.palette.grey[300],marginLeft:5,marginRight:-6},iconSmall:{width:18,height:18,marginLeft:4,marginRight:-4},iconColorPrimary:{color:"inherit"},iconColorSecondary:{color:"inherit"},label:{overflow:"hidden",textOverflow:"ellipsis",paddingLeft:12,paddingRight:12,whiteSpace:"nowrap"},labelSmall:{paddingLeft:8,paddingRight:8},deleteIcon:{WebkitTapHighlightColor:"transparent",color:e,height:22,width:22,cursor:"pointer",margin:"0 5px 0 -6px","&:hover":{color:Object(s.d)(e,.4)}},deleteIconSmall:{height:16,width:16,marginRight:4,marginLeft:-4},deleteIconColorPrimary:{color:Object(s.d)(g.palette.primary.contrastText,.7),"&:hover, &:active":{color:g.palette.primary.contrastText}},deleteIconColorSecondary:{color:Object(s.d)(g.palette.secondary.contrastText,.7),"&:hover, &:active":{color:g.palette.secondary.contrastText}},deleteIconOutlinedColorPrimary:{color:Object(s.d)(g.palette.primary.main,.7),"&:hover, &:active":{color:g.palette.primary.main}},deleteIconOutlinedColorSecondary:{color:Object(s.d)(g.palette.secondary.main,.7),"&:hover, &:active":{color:g.palette.secondary.main}}}}),{name:"MuiChip"})(a)},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(g,I,e){"use strict";e.d(I,"a",(function(){return C}));var t=e(5);function C(){var g=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},I=g.baseClasses,e=g.newClasses;g.Component;if(!e)return I;var C=Object(t.a)({},I);return Object.keys(e).forEach((function(g){e[g]&&(C[g]="".concat(I[g]," ").concat(e[g]))})),C}},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(4),e(14)),B=e(263),n=e(21),U=e(30),s=e(315),i=e(205),c=Q.forwardRef((function(g,I){var e=g.children,n=g.classes,c=g.className,A=g.color,l=void 0===A?"primary":A,a=g.component,r=void 0===a?"div":a,o=g.disabled,d=void 0!==o&&o,u=g.error,y=void 0!==u&&u,b=g.fullWidth,Z=void 0!==b&&b,m=g.focused,x=g.hiddenLabel,R=void 0!==x&&x,S=g.margin,G=void 0===S?"none":S,L=g.required,V=void 0!==L&&L,h=g.size,D=g.variant,p=void 0===D?"standard":D,E=Object(C.a)(g,["children","classes","className","color","component","disabled","error","fullWidth","focused","hiddenLabel","margin","required","size","variant"]),N=Q.useState((function(){var g=!1;return e&&Q.Children.forEach(e,(function(I){if(Object(s.a)(I,["Input","Select"])){var e=Object(s.a)(I,["Select"])?I.props.input:I;e&&Object(B.a)(e.props)&&(g=!0)}})),g})),W=N[0],f=N[1],X=Q.useState((function(){var g=!1;return e&&Q.Children.forEach(e,(function(I){Object(s.a)(I,["Input","Select"])&&Object(B.b)(I.props,!0)&&(g=!0)})),g})),J=X[0],v=X[1],k=Q.useState(!1),H=k[0],M=k[1],Y=void 0!==m?m:H;d&&Y&&M(!1);var w=Q.useCallback((function(){v(!0)}),[]),T={adornedStart:W,setAdornedStart:f,color:l,disabled:d,error:y,filled:J,focused:Y,fullWidth:Z,hiddenLabel:R,margin:("small"===h?"dense":void 0)||G,onBlur:function(){M(!1)},onEmpty:Q.useCallback((function(){v(!1)}),[]),onFilled:w,onFocus:function(){M(!0)},registerEffect:void 0,required:V,variant:p};return Q.createElement(i.a.Provider,{value:T},Q.createElement(r,Object(t.a)({className:Object(F.default)(n.root,c,"none"!==G&&n["margin".concat(Object(U.a)(G))],Z&&n.fullWidth),ref:I},E),e))}));I.a=Object(n.a)({root:{display:"inline-flex",flexDirection:"column",position:"relative",minWidth:0,padding:0,margin:0,border:0,verticalAlign:"top"},marginNormal:{marginTop:16,marginBottom:8},marginDense:{marginTop:8,marginBottom:4},fullWidth:{width:"100%"}},{name:"MuiFormControl"})(c)},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(4),e(14)),B=e(929),n=e(21),U=Q.forwardRef((function(g,I){var e=g.disableUnderline,n=g.classes,U=g.fullWidth,s=void 0!==U&&U,i=g.inputComponent,c=void 0===i?"input":i,A=g.multiline,l=void 0!==A&&A,a=g.type,r=void 0===a?"text":a,o=Object(C.a)(g,["disableUnderline","classes","fullWidth","inputComponent","multiline","type"]);return Q.createElement(B.a,Object(t.a)({classes:Object(t.a)({},n,{root:Object(F.default)(n.root,!e&&n.underline),underline:null}),fullWidth:s,inputComponent:c,multiline:l,ref:I,type:r},o))}));U.muiName="Input",I.a=Object(n.a)((function(g){var I="light"===g.palette.type,e=I?"rgba(0, 0, 0, 0.42)":"rgba(255, 255, 255, 0.7)",t=I?"rgba(0, 0, 0, 0.09)":"rgba(255, 255, 255, 0.09)";return{root:{position:"relative",backgroundColor:t,borderTopLeftRadius:g.shape.borderRadius,borderTopRightRadius:g.shape.borderRadius,transition:g.transitions.create("background-color",{duration:g.transitions.duration.shorter,easing:g.transitions.easing.easeOut}),"&:hover":{backgroundColor:I?"rgba(0, 0, 0, 0.13)":"rgba(255, 255, 255, 0.13)","@media (hover: none)":{backgroundColor:t}},"&$focused":{backgroundColor:I?"rgba(0, 0, 0, 0.09)":"rgba(255, 255, 255, 0.09)"},"&$disabled":{backgroundColor:I?"rgba(0, 0, 0, 0.12)":"rgba(255, 255, 255, 0.12)"}},colorSecondary:{"&$underline:after":{borderBottomColor:g.palette.secondary.main}},underline:{"&:after":{borderBottom:"2px solid ".concat(g.palette.primary.main),left:0,bottom:0,content:'""',position:"absolute",right:0,transform:"scaleX(0)",transition:g.transitions.create("transform",{duration:g.transitions.duration.shorter,easing:g.transitions.easing.easeOut}),pointerEvents:"none"},"&$focused:after":{transform:"scaleX(1)"},"&$error:after":{borderBottomColor:g.palette.error.main,transform:"scaleX(1)"},"&:before":{borderBottom:"1px solid ".concat(e),left:0,bottom:0,content:'"\\00a0"',position:"absolute",right:0,transition:g.transitions.create("border-bottom-color",{duration:g.transitions.duration.shorter}),pointerEvents:"none"},"&:hover:before":{borderBottom:"1px solid ".concat(g.palette.text.primary)},"&$disabled:before":{borderBottomStyle:"dotted"}},focused:{},disabled:{},adornedStart:{paddingLeft:12},adornedEnd:{paddingRight:12},error:{},marginDense:{},multiline:{padding:"27px 12px 10px","&$marginDense":{paddingTop:23,paddingBottom:6}},input:{padding:"27px 12px 10px","&:-webkit-autofill":{WebkitBoxShadow:"light"===g.palette.type?null:"0 0 0 100px #266798 inset",WebkitTextFillColor:"light"===g.palette.type?null:"#fff",caretColor:"light"===g.palette.type?null:"#fff",borderTopLeftRadius:"inherit",borderTopRightRadius:"inherit"}},inputMarginDense:{paddingTop:23,paddingBottom:6},inputHiddenLabel:{paddingTop:18,paddingBottom:19,"&$inputMarginDense":{paddingTop:10,paddingBottom:11}},inputMultiline:{padding:0},inputAdornedStart:{paddingLeft:0},inputAdornedEnd:{paddingRight:0}}}),{name:"MuiFilledInput"})(U)},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(4),e(14)),B=e(30),n=e(21),U=e(38),s=e(77),i=Q.forwardRef((function(g,I){var e=g.classes,n=g.className,U=g.color,i=void 0===U?"primary":U,c=g.value,A=g.valueBuffer,l=g.variant,a=void 0===l?"indeterminate":l,r=Object(C.a)(g,["classes","className","color","value","valueBuffer","variant"]),o=Object(s.a)(),d={},u={bar1:{},bar2:{}};if("determinate"===a||"buffer"===a)if(void 0!==c){d["aria-valuenow"]=Math.round(c),d["aria-valuemin"]=0,d["aria-valuemax"]=100;var y=c-100;"rtl"===o.direction&&(y=-y),u.bar1.transform="translateX(".concat(y,"%)")}else 0;if("buffer"===a)if(void 0!==A){var b=(A||0)-100;"rtl"===o.direction&&(b=-b),u.bar2.transform="translateX(".concat(b,"%)")}else 0;return Q.createElement("div",Object(t.a)({className:Object(F.default)(e.root,e["color".concat(Object(B.a)(i))],n,{determinate:e.determinate,indeterminate:e.indeterminate,buffer:e.buffer,query:e.query}[a]),role:"progressbar"},d,{ref:I},r),"buffer"===a?Q.createElement("div",{className:Object(F.default)(e.dashed,e["dashedColor".concat(Object(B.a)(i))])}):null,Q.createElement("div",{className:Object(F.default)(e.bar,e["barColor".concat(Object(B.a)(i))],("indeterminate"===a||"query"===a)&&e.bar1Indeterminate,{determinate:e.bar1Determinate,buffer:e.bar1Buffer}[a]),style:u.bar1}),"determinate"===a?null:Q.createElement("div",{className:Object(F.default)(e.bar,("indeterminate"===a||"query"===a)&&e.bar2Indeterminate,"buffer"===a?[e["color".concat(Object(B.a)(i))],e.bar2Buffer]:e["barColor".concat(Object(B.a)(i))]),style:u.bar2}))}));I.a=Object(n.a)((function(g){var I=function(I){return"light"===g.palette.type?Object(U.i)(I,.62):Object(U.a)(I,.5)},e=I(g.palette.primary.main),t=I(g.palette.secondary.main);return{root:{position:"relative",overflow:"hidden",height:4,"@media print":{colorAdjust:"exact"}},colorPrimary:{backgroundColor:e},colorSecondary:{backgroundColor:t},determinate:{},indeterminate:{},buffer:{backgroundColor:"transparent"},query:{transform:"rotate(180deg)"},dashed:{position:"absolute",marginTop:0,height:"100%",width:"100%",animation:"$buffer 3s infinite linear"},dashedColorPrimary:{backgroundImage:"radial-gradient(".concat(e," 0%, ").concat(e," 16%, transparent 42%)"),backgroundSize:"10px 10px",backgroundPosition:"0 -23px"},dashedColorSecondary:{backgroundImage:"radial-gradient(".concat(t," 0%, ").concat(t," 16%, transparent 42%)"),backgroundSize:"10px 10px",backgroundPosition:"0 -23px"},bar:{width:"100%",position:"absolute",left:0,bottom:0,top:0,transition:"transform 0.2s linear",transformOrigin:"left"},barColorPrimary:{backgroundColor:g.palette.primary.main},barColorSecondary:{backgroundColor:g.palette.secondary.main},bar1Indeterminate:{width:"auto",animation:"$indeterminate1 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite"},bar1Determinate:{transition:"transform .".concat(4,"s linear")},bar1Buffer:{zIndex:1,transition:"transform .".concat(4,"s linear")},bar2Indeterminate:{width:"auto",animation:"$indeterminate2 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) 1.15s infinite"},bar2Buffer:{transition:"transform .".concat(4,"s linear")},"@keyframes indeterminate1":{"0%":{left:"-35%",right:"100%"},"60%":{left:"100%",right:"-90%"},"100%":{left:"100%",right:"-90%"}},"@keyframes indeterminate2":{"0%":{left:"-200%",right:"100%"},"60%":{left:"107%",right:"-8%"},"100%":{left:"107%",right:"-8%"}},"@keyframes buffer":{"0%":{opacity:1,backgroundPosition:"0 -23px"},"50%":{opacity:0,backgroundPosition:"0 -23px"},"100%":{opacity:1,backgroundPosition:"-200px -23px"}}}}),{name:"MuiLinearProgress"})(i)},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(4),e(14)),B=e(21),n=e(30);function U(g){return g=function(g,I,e){return(Math.min(Math.max(I,g),e)-I)/(e-I)}(g,0,1),g=(g-=1)*g*g+1}var s=Q.forwardRef((function(g,I){var e,B=g.classes,s=g.className,i=g.color,c=void 0===i?"primary":i,A=g.disableShrink,l=void 0!==A&&A,a=g.size,r=void 0===a?40:a,o=g.style,d=g.thickness,u=void 0===d?3.6:d,y=g.value,b=void 0===y?0:y,Z=g.variant,m=void 0===Z?"indeterminate":Z,x=Object(C.a)(g,["classes","className","color","disableShrink","size","style","thickness","value","variant"]),R={},S={},G={};if("determinate"===m||"static"===m){var L=2*Math.PI*((44-u)/2);R.strokeDasharray=L.toFixed(3),G["aria-valuenow"]=Math.round(b),"static"===m?(R.strokeDashoffset="".concat(((100-b)/100*L).toFixed(3),"px"),S.transform="rotate(-90deg)"):(R.strokeDashoffset="".concat((e=(100-b)/100,e*e*L).toFixed(3),"px"),S.transform="rotate(".concat((270*U(b/70)).toFixed(3),"deg)"))}return Q.createElement("div",Object(t.a)({className:Object(F.default)(B.root,s,"inherit"!==c&&B["color".concat(Object(n.a)(c))],{indeterminate:B.indeterminate,static:B.static}[m]),style:Object(t.a)({width:r,height:r},S,o),ref:I,role:"progressbar"},G,x),Q.createElement("svg",{className:B.svg,viewBox:"".concat(22," ").concat(22," ").concat(44," ").concat(44)},Q.createElement("circle",{className:Object(F.default)(B.circle,l&&B.circleDisableShrink,{indeterminate:B.circleIndeterminate,static:B.circleStatic}[m]),style:R,cx:44,cy:44,r:(44-u)/2,fill:"none",strokeWidth:u})))}));I.a=Object(B.a)((function(g){return{root:{display:"inline-block"},static:{transition:g.transitions.create("transform")},indeterminate:{animation:"$circular-rotate 1.4s linear infinite"},colorPrimary:{color:g.palette.primary.main},colorSecondary:{color:g.palette.secondary.main},svg:{display:"block"},circle:{stroke:"currentColor"},circleStatic:{transition:g.transitions.create("stroke-dashoffset")},circleIndeterminate:{animation:"$circular-dash 1.4s ease-in-out infinite",strokeDasharray:"80px, 200px",strokeDashoffset:"0px"},"@keyframes circular-rotate":{"0%":{transformOrigin:"50% 50%"},"100%":{transform:"rotate(360deg)"}},"@keyframes circular-dash":{"0%":{strokeDasharray:"1px, 200px",strokeDashoffset:"0px"},"50%":{strokeDasharray:"100px, 200px",strokeDashoffset:"-15px"},"100%":{strokeDasharray:"100px, 200px",strokeDashoffset:"-125px"}},circleDisableShrink:{animation:"none"}}}),{name:"MuiCircularProgress",flip:!1})(s)},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(122),e(4),e(14)),B=e(30),n=e(38),U=e(21);e(173).a.styles;var s=Q.forwardRef((function(g,I){var e=g.children,n=g.classes,U=g.className,s=g.color,i=void 0===s?"default":s,c=g.component,A=void 0===c?"div":c,l=g.disabled,a=void 0!==l&&l,r=g.disableElevation,o=void 0!==r&&r,d=g.disableFocusRipple,u=void 0!==d&&d,y=g.disableRipple,b=void 0!==y&&y,Z=g.fullWidth,m=void 0!==Z&&Z,x=g.orientation,R=void 0===x?"horizontal":x,S=g.size,G=void 0===S?"medium":S,L=g.variant,V=void 0===L?"outlined":L,h=Object(C.a)(g,["children","classes","className","color","component","disabled","disableElevation","disableFocusRipple","disableRipple","fullWidth","orientation","size","variant"]),D=Object(F.default)(n.grouped,n["grouped".concat(Object(B.a)(R))],n["grouped".concat(Object(B.a)(V))],n["grouped".concat(Object(B.a)(V)).concat(Object(B.a)(R))],n["grouped".concat(Object(B.a)(V)).concat("default"!==i?Object(B.a)(i):"")],a&&n.disabled);return Q.createElement(A,Object(t.a)({role:"group",className:Object(F.default)(n.root,U,m&&n.fullWidth,o&&n.disableElevation,"contained"===V&&n.contained,"vertical"===R&&n.vertical),ref:I},h),Q.Children.map(e,(function(g){return Q.isValidElement(g)?Q.cloneElement(g,{className:Object(F.default)(D,g.props.className),color:g.props.color||i,disabled:g.props.disabled||a,disableElevation:g.props.disableElevation||o,disableFocusRipple:u,disableRipple:b,fullWidth:m,size:g.props.size||G,variant:g.props.variant||V}):null})))}));I.a=Object(U.a)((function(g){return{root:{display:"inline-flex",borderRadius:g.shape.borderRadius},contained:{boxShadow:g.shadows[2]},disableElevation:{boxShadow:"none"},disabled:{},fullWidth:{width:"100%"},vertical:{flexDirection:"column"},grouped:{minWidth:40},groupedHorizontal:{"&:not(:first-child)":{borderTopLeftRadius:0,borderBottomLeftRadius:0},"&:not(:last-child)":{borderTopRightRadius:0,borderBottomRightRadius:0}},groupedVertical:{"&:not(:first-child)":{borderTopRightRadius:0,borderTopLeftRadius:0},"&:not(:last-child)":{borderBottomRightRadius:0,borderBottomLeftRadius:0}},groupedText:{},groupedTextHorizontal:{"&:not(:last-child)":{borderRight:"1px solid ".concat("light"===g.palette.type?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)")}},groupedTextVertical:{"&:not(:last-child)":{borderBottom:"1px solid ".concat("light"===g.palette.type?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)")}},groupedTextPrimary:{"&:not(:last-child)":{borderColor:Object(n.d)(g.palette.primary.main,.5)}},groupedTextSecondary:{"&:not(:last-child)":{borderColor:Object(n.d)(g.palette.secondary.main,.5)}},groupedOutlined:{},groupedOutlinedHorizontal:{"&:not(:first-child)":{marginLeft:-1},"&:not(:last-child)":{borderRightColor:"transparent"}},groupedOutlinedVertical:{"&:not(:first-child)":{marginTop:-1},"&:not(:last-child)":{borderBottomColor:"transparent"}},groupedOutlinedPrimary:{"&:hover":{borderColor:g.palette.primary.main}},groupedOutlinedSecondary:{"&:hover":{borderColor:g.palette.secondary.main}},groupedContained:{boxShadow:"none"},groupedContainedHorizontal:{"&:not(:last-child)":{borderRight:"1px solid ".concat(g.palette.grey[400]),"&$disabled":{borderRight:"1px solid ".concat(g.palette.action.disabled)}}},groupedContainedVertical:{"&:not(:last-child)":{borderBottom:"1px solid ".concat(g.palette.grey[400]),"&$disabled":{borderBottom:"1px solid ".concat(g.palette.action.disabled)}}},groupedContainedPrimary:{"&:not(:last-child)":{borderColor:g.palette.primary.dark}},groupedContainedSecondary:{"&:not(:last-child)":{borderColor:g.palette.secondary.dark}}}}),{name:"MuiButtonGroup"})(s)},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(4),e(14)),B=e(21),n=e(248),U=e(170),s=Q.forwardRef((function(g,I){var e=g.children,B=g.classes,s=g.className,i=g.disableTypography,c=void 0!==i&&i,A=g.inset,l=void 0!==A&&A,a=g.primary,r=g.primaryTypographyProps,o=g.secondary,d=g.secondaryTypographyProps,u=Object(C.a)(g,["children","classes","className","disableTypography","inset","primary","primaryTypographyProps","secondary","secondaryTypographyProps"]),y=Q.useContext(U.a).dense,b=null!=a?a:e;null==b||b.type===n.a||c||(b=Q.createElement(n.a,Object(t.a)({variant:y?"body2":"body1",className:B.primary,component:"span",display:"block"},r),b));var Z=o;return null==Z||Z.type===n.a||c||(Z=Q.createElement(n.a,Object(t.a)({variant:"body2",className:B.secondary,color:"textSecondary",display:"block"},d),Z)),Q.createElement("div",Object(t.a)({className:Object(F.default)(B.root,s,y&&B.dense,l&&B.inset,b&&Z&&B.multiline),ref:I},u),b,Z)}));I.a=Object(B.a)({root:{flex:"1 1 auto",minWidth:0,marginTop:4,marginBottom:4},multiline:{marginTop:6,marginBottom:6},dense:{},inset:{paddingLeft:56},primary:{},secondary:{}},{name:"MuiListItemText"})(s)},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(4),e(14)),B=e(21),n=Q.forwardRef((function(g,I){var e=g.classes,B=g.className,n=Object(C.a)(g,["classes","className"]);return Q.createElement("div",Object(t.a)({className:Object(F.default)(e.root,B),ref:I},n))}));n.muiName="ListItemSecondaryAction",I.a=Object(B.a)({root:{position:"absolute",right:16,top:"50%",transform:"translateY(-50%)"}},{name:"MuiListItemSecondaryAction"})(n)},function(g,I,e){"use strict";e.d(I,"a",(function(){return i}));var t=e(5),C=e(301),Q=e(203),F=e(0),B=e.n(F),n=e(112),U=e(350),s=e(924),i=function(){function g(){var I=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};Object(C.a)(this,g),this.options=I}return Object(Q.a)(g,[{key:"collect",value:function(g){var I=new Map;this.sheetsRegistry=new n.b;var e=Object(s.a)();return B.a.createElement(U.b,Object(t.a)({sheetsManager:I,serverGenerateClassName:e,sheetsRegistry:this.sheetsRegistry},this.options),g)}},{key:"toString",value:function(){return this.sheetsRegistry?this.sheetsRegistry.toString():""}},{key:"getStyleElement",value:function(g){return B.a.createElement("style",Object(t.a)({id:"jss-server-side",key:"jss-server-side",dangerouslySetInnerHTML:{__html:this.toString()}},g))}}]),g}()},function(g,I,e){"use strict";var t=e(5),C=e(0),Q=e.n(C),F=(e(4),e(428)),B=e(470),n=e(430);I.a=function(g){var I=g.children,e=g.theme,C=Object(B.a)(),U=Q.a.useMemo((function(){var g=null===C?e:function(g,I){return"function"===typeof I?I(g):Object(t.a)(Object(t.a)({},g),I)}(C,e);return null!=g&&(g[n.a]=null!==C),g}),[e,C]);return Q.a.createElement(F.a.Provider,{value:U},I)}},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(4),e(14)),B=e(21),n=e(170),U=Q.forwardRef((function(g,I){var e=g.classes,B=g.className,U=Object(C.a)(g,["classes","className"]),s=Q.useContext(n.a);return Q.createElement("div",Object(t.a)({className:Object(F.default)(e.root,B,"flex-start"===s.alignItems&&e.alignItemsFlexStart),ref:I},U))}));I.a=Object(B.a)({root:{minWidth:56,flexShrink:0},alignItemsFlexStart:{marginTop:8}},{name:"MuiListItemAvatar"})(U)},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(4),e(14)),B=e(21),n=e(170),U=Q.forwardRef((function(g,I){var e=g.classes,B=g.className,U=Object(C.a)(g,["classes","className"]),s=Q.useContext(n.a);return Q.createElement("div",Object(t.a)({className:Object(F.default)(e.root,B,"flex-start"===s.alignItems&&e.alignItemsFlexStart),ref:I},U))}));I.a=Object(B.a)((function(g){return{root:{minWidth:56,color:g.palette.action.active,flexShrink:0,display:"inline-flex"},alignItemsFlexStart:{marginTop:8}}}),{name:"MuiListItemIcon"})(U)},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(4),e(14)),B=e(21),n=e(30),U=Q.forwardRef((function(g,I){var e=g.anchorOrigin,B=void 0===e?{vertical:"top",horizontal:"right"}:e,U=g.badgeContent,s=g.children,i=g.classes,c=g.className,A=g.color,l=void 0===A?"default":A,a=g.component,r=void 0===a?"span":a,o=g.invisible,d=g.max,u=void 0===d?99:d,y=g.overlap,b=void 0===y?"rectangle":y,Z=g.showZero,m=void 0!==Z&&Z,x=g.variant,R=void 0===x?"standard":x,S=Object(C.a)(g,["anchorOrigin","badgeContent","children","classes","className","color","component","invisible","max","overlap","showZero","variant"]),G=o;null==o&&(0===U&&!m||null==U&&"dot"!==R)&&(G=!0);var L="";return"dot"!==R&&(L=U>u?"".concat(u,"+"):U),Q.createElement(r,Object(t.a)({className:Object(F.default)(i.root,c),ref:I},S),s,Q.createElement("span",{className:Object(F.default)(i.badge,i["".concat(B.horizontal).concat(Object(n.a)(B.vertical),"}")],i["anchorOrigin".concat(Object(n.a)(B.vertical)).concat(Object(n.a)(B.horizontal)).concat(Object(n.a)(b))],"default"!==l&&i["color".concat(Object(n.a)(l))],G&&i.invisible,"dot"===R&&i.dot)},L))}));I.a=Object(B.a)((function(g){return{root:{position:"relative",display:"inline-flex",verticalAlign:"middle",flexShrink:0},badge:{display:"flex",flexDirection:"row",flexWrap:"wrap",justifyContent:"center",alignContent:"center",alignItems:"center",position:"absolute",boxSizing:"border-box",fontFamily:g.typography.fontFamily,fontWeight:g.typography.fontWeightMedium,fontSize:g.typography.pxToRem(12),minWidth:20,lineHeight:1,padding:"0 6px",height:20,borderRadius:10,zIndex:1,transition:g.transitions.create("transform",{easing:g.transitions.easing.easeInOut,duration:g.transitions.duration.enteringScreen})},colorPrimary:{backgroundColor:g.palette.primary.main,color:g.palette.primary.contrastText},colorSecondary:{backgroundColor:g.palette.secondary.main,color:g.palette.secondary.contrastText},colorError:{backgroundColor:g.palette.error.main,color:g.palette.error.contrastText},dot:{borderRadius:4,height:8,minWidth:8,padding:0},anchorOriginTopRightRectangle:{top:0,right:0,transform:"scale(1) translate(50%, -50%)",transformOrigin:"100% 0%","&$invisible":{transform:"scale(0) translate(50%, -50%)"}},anchorOriginBottomRightRectangle:{bottom:0,right:0,transform:"scale(1) translate(50%, 50%)",transformOrigin:"100% 100%","&$invisible":{transform:"scale(0) translate(50%, 50%)"}},anchorOriginTopLeftRectangle:{top:0,left:0,transform:"scale(1) translate(-50%, -50%)",transformOrigin:"0% 0%","&$invisible":{transform:"scale(0) translate(-50%, -50%)"}},anchorOriginBottomLeftRectangle:{bottom:0,left:0,transform:"scale(1) translate(-50%, 50%)",transformOrigin:"0% 100%","&$invisible":{transform:"scale(0) translate(-50%, 50%)"}},anchorOriginTopRightCircle:{top:"14%",right:"14%",transform:"scale(1) translate(50%, -50%)",transformOrigin:"100% 0%","&$invisible":{transform:"scale(0) translate(50%, -50%)"}},anchorOriginBottomRightCircle:{bottom:"14%",right:"14%",transform:"scale(1) translate(50%, 50%)",transformOrigin:"100% 100%","&$invisible":{transform:"scale(0) translate(50%, 50%)"}},anchorOriginTopLeftCircle:{top:"14%",left:"14%",transform:"scale(1) translate(-50%, -50%)",transformOrigin:"0% 0%","&$invisible":{transform:"scale(0) translate(-50%, -50%)"}},anchorOriginBottomLeftCircle:{bottom:"14%",left:"14%",transform:"scale(1) translate(-50%, 50%)",transformOrigin:"0% 100%","&$invisible":{transform:"scale(0) translate(-50%, 50%)"}},invisible:{transition:g.transitions.create("transform",{easing:g.transitions.easing.easeInOut,duration:g.transitions.duration.leavingScreen})}}}),{name:"MuiBadge"})(U)},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=e.n(Q),B=e(14),n=(e(4),e(21)),U=F.a.forwardRef((function(g,I){var e=g.animation,Q=void 0===e?"pulse":e,n=g.classes,U=g.className,s=g.component,i=void 0===s?"span":s,c=g.height,A=g.variant,l=void 0===A?"text":A,a=g.width,r=Object(C.a)(g,["animation","classes","className","component","height","variant","width"]);return F.a.createElement(i,Object(t.a)({ref:I,className:Object(B.default)(n.root,n[l],U,!1!==Q&&n[Q])},r,{style:Object(t.a)({width:a,height:c},r.style)}))}));I.a=Object(n.a)((function(g){return{root:{display:"block",backgroundColor:g.palette.action.hover,height:"1.2em"},text:{marginTop:0,marginBottom:0,height:"auto",transformOrigin:"0 60%",transform:"scale(1, 0.60)",borderRadius:g.shape.borderRadius,"&:empty:before":{content:'"\\00a0"'}},rect:{},circle:{borderRadius:"50%"},pulse:{animation:"$pulse 1.5s ease-in-out 0.5s infinite"},"@keyframes pulse":{"0%":{opacity:1},"50%":{opacity:.4},"100%":{opacity:1}},wave:{position:"relative",overflow:"hidden","&::after":{animation:"$wave 1.6s linear 0.5s infinite",background:"linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.6), transparent)",content:'""',position:"absolute",transform:"translateX(-100%)",bottom:0,left:0,right:0,top:0,zIndex:1}},"@keyframes wave":{"0%":{transform:"translateX(-100%)"},"60%":{transform:"translateX(100%)"},"100%":{transform:"translateX(100%)"}}}}),{name:"MuiSkeleton"})(U)},function(g,I,e){"use strict";var t=e(5),C=e(452),Q=e(99),F=e(16),B=e(0),n=(e(122),e(4),e(14)),U=e(598),s=e(321),i=e(21),c=e(453),A=e(165),l=B.forwardRef((function(g,I){var e=g.children,i=g.classes,l=g.className,a=g.defaultExpanded,r=void 0!==a&&a,o=g.disabled,d=void 0!==o&&o,u=g.expanded,y=g.onChange,b=g.square,Z=void 0!==b&&b,m=g.TransitionComponent,x=void 0===m?U.a:m,R=g.TransitionProps,S=Object(F.a)(g,["children","classes","className","defaultExpanded","disabled","expanded","onChange","square","TransitionComponent","TransitionProps"]),G=Object(A.a)({controlled:u,default:r,name:"Accordion",state:"expanded"}),L=Object(Q.a)(G,2),V=L[0],h=L[1],D=B.useCallback((function(g){h(!V),y&&y(g,!V)}),[V,y,h]),p=B.Children.toArray(e),E=Object(C.a)(p),N=E[0],W=E.slice(1),f=B.useMemo((function(){return{expanded:V,disabled:d,toggle:D}}),[V,d,D]);return B.createElement(s.a,Object(t.a)({className:Object(n.default)(i.root,l,V&&i.expanded,d&&i.disabled,!Z&&i.rounded),ref:I,square:Z},S),B.createElement(c.a.Provider,{value:f},N),B.createElement(x,Object(t.a)({in:V,timeout:"auto"},R),B.createElement("div",{"aria-labelledby":N.props.id,id:N.props["aria-controls"],role:"region"},W)))}));I.a=Object(i.a)((function(g){var I={duration:g.transitions.duration.shortest};return{root:{position:"relative",transition:g.transitions.create(["margin"],I),"&:before":{position:"absolute",left:0,top:-1,right:0,height:1,content:'""',opacity:1,backgroundColor:g.palette.divider,transition:g.transitions.create(["opacity","background-color"],I)},"&:first-child":{"&:before":{display:"none"}},"&$expanded":{margin:"16px 0","&:first-child":{marginTop:0},"&:last-child":{marginBottom:0},"&:before":{opacity:0}},"&$expanded + &":{"&:before":{display:"none"}},"&$disabled":{backgroundColor:g.palette.action.disabledBackground}},rounded:{borderRadius:0,"&:first-child":{borderTopLeftRadius:g.shape.borderRadius,borderTopRightRadius:g.shape.borderRadius},"&:last-child":{borderBottomLeftRadius:g.shape.borderRadius,borderBottomRightRadius:g.shape.borderRadius,"@supports (-ms-ime-align: auto)":{borderBottomLeftRadius:0,borderBottomRightRadius:0}}},expanded:{},disabled:{}}}),{name:"MuiAccordion"})(l)},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(4),e(14)),B=e(271),n=e(368),U=e(21),s=e(453),i=Q.forwardRef((function(g,I){var e=g.children,U=g.classes,i=g.className,c=g.expandIcon,A=g.IconButtonProps,l=g.onBlur,a=g.onClick,r=g.onFocusVisible,o=Object(C.a)(g,["children","classes","className","expandIcon","IconButtonProps","onBlur","onClick","onFocusVisible"]),d=Q.useState(!1),u=d[0],y=d[1],b=Q.useContext(s.a),Z=b.disabled,m=void 0!==Z&&Z,x=b.expanded,R=b.toggle;return Q.createElement(B.a,Object(t.a)({focusRipple:!1,disableRipple:!0,disabled:m,component:"div","aria-expanded":x,className:Object(F.default)(U.root,i,m&&U.disabled,x&&U.expanded,u&&U.focused),onFocusVisible:function(g){y(!0),r&&r(g)},onBlur:function(g){y(!1),l&&l(g)},onClick:function(g){R&&R(g),a&&a(g)},ref:I},o),Q.createElement("div",{className:Object(F.default)(U.content,x&&U.expanded)},e),c&&Q.createElement(n.a,Object(t.a)({className:Object(F.default)(U.expandIcon,x&&U.expanded),edge:"end",component:"div",tabIndex:null,role:null,"aria-hidden":!0},A),c))}));I.a=Object(U.a)((function(g){var I={duration:g.transitions.duration.shortest};return{root:{display:"flex",minHeight:48,transition:g.transitions.create(["min-height","background-color"],I),padding:g.spacing(0,2),"&:hover:not($disabled)":{cursor:"pointer"},"&$expanded":{minHeight:64},"&$focused":{backgroundColor:g.palette.action.focus},"&$disabled":{opacity:g.palette.action.disabledOpacity}},expanded:{},focused:{},disabled:{},content:{display:"flex",flexGrow:1,transition:g.transitions.create(["margin"],I),margin:"12px 0","&$expanded":{margin:"20px 0"}},expandIcon:{transform:"rotate(0deg)",transition:g.transitions.create("transform",I),"&:hover":{backgroundColor:"transparent"},"&$expanded":{transform:"rotate(180deg)"}}}}),{name:"MuiAccordionSummary"})(i)},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(4),e(14)),B=e(21),n=Q.forwardRef((function(g,I){var e=g.classes,B=g.className,n=Object(C.a)(g,["classes","className"]);return Q.createElement("div",Object(t.a)({className:Object(F.default)(e.root,B),ref:I},n))}));I.a=Object(B.a)((function(g){return{root:{display:"flex",padding:g.spacing(1,2,2)}}}),{name:"MuiAccordionDetails"})(n)},function(g,I,e){"use strict";var t=e(16),C=e(5),Q=e(0),F=(e(4),e(14)),B=e(164),n=e(153),U=e(21),s=Q.forwardRef((function(g,I){var e=g.children,U=g.classes,s=g.className,i=g.component,c=void 0===i?"p":i,A=(g.disabled,g.error,g.filled,g.focused,g.margin,g.required,g.variant,Object(t.a)(g,["children","classes","className","component","disabled","error","filled","focused","margin","required","variant"])),l=Object(n.a)(),a=Object(B.a)({props:g,muiFormControl:l,states:["variant","margin","disabled","error","filled","focused","required"]});return Q.createElement(c,Object(C.a)({className:Object(F.default)(U.root,("filled"===a.variant||"outlined"===a.variant)&&U.contained,s,a.disabled&&U.disabled,a.error&&U.error,a.filled&&U.filled,a.focused&&U.focused,a.required&&U.required,"dense"===a.margin&&U.marginDense),ref:I},A)," "===e?Q.createElement("span",{dangerouslySetInnerHTML:{__html:"&#8203;"}}):e)}));I.a=Object(U.a)((function(g){return{root:Object(C.a)({color:g.palette.text.secondary},g.typography.caption,{textAlign:"left",marginTop:3,margin:0,"&$disabled":{color:g.palette.text.disabled},"&$error":{color:g.palette.error.main}}),error:{},disabled:{},marginDense:{marginTop:4},contained:{marginLeft:14,marginRight:14},focused:{},filled:{},required:{}}}),{name:"MuiFormHelperText"})(s)},function(g,I,e){"use strict";var t=e(0),C=e.n(t),Q=e(86);I.a=Object(Q.a)(C.a.createElement("path",{d:"M19 13H5v-2h14v2z"}),"Remove")},function(g,I,e){"use strict";var t=e(0),C=e.n(t),Q=e(86);I.a=Object(Q.a)(C.a.createElement("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"}),"Add")},function(g,I,e){"use strict";var t=e(0),C=e.n(t),Q=e(86);I.a=Object(Q.a)(C.a.createElement("path",{d:"M7 11v2h10v-2H7zm5-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"}),"RemoveCircleOutline")},function(g,I,e){"use strict";var t=e(0),C=e.n(t),Q=e(86);I.a=Object(Q.a)(C.a.createElement("path",{d:"M13 7h-2v4H7v2h4v4h2v-4h4v-2h-4V7zm-1-5C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"}),"AddCircleOutline")},function(g,I,e){"use strict";var t,C;e.d(I,"a",(function(){return t})),function(g){g.Ok="ok",g.Exited="exited",g.Crashed="crashed",g.Abnormal="abnormal"}(t||(t={})),function(g){g.Ok="ok",g.Errored="errored",g.Crashed="crashed"}(C||(C={}))},function(g,I,e){"use strict";var t=e(5),C=e(452),Q=e(99),F=e(16),B=e(0),n=(e(122),e(4),e(14)),U=e(598),s=e(321),i=e(21),c=e(458),A=e(165),l=B.forwardRef((function(g,I){var e=g.children,i=g.classes,l=g.className,a=g.defaultExpanded,r=void 0!==a&&a,o=g.disabled,d=void 0!==o&&o,u=g.expanded,y=g.onChange,b=g.square,Z=void 0!==b&&b,m=g.TransitionComponent,x=void 0===m?U.a:m,R=g.TransitionProps,S=Object(F.a)(g,["children","classes","className","defaultExpanded","disabled","expanded","onChange","square","TransitionComponent","TransitionProps"]),G=Object(A.a)({controlled:u,default:r,name:"ExpansionPanel",state:"expanded"}),L=Object(Q.a)(G,2),V=L[0],h=L[1],D=B.useCallback((function(g){h(!V),y&&y(g,!V)}),[V,y,h]),p=B.Children.toArray(e),E=Object(C.a)(p),N=E[0],W=E.slice(1),f=B.useMemo((function(){return{expanded:V,disabled:d,toggle:D}}),[V,d,D]);return B.createElement(s.a,Object(t.a)({className:Object(n.default)(i.root,l,V&&i.expanded,d&&i.disabled,!Z&&i.rounded),ref:I,square:Z},S),B.createElement(c.a.Provider,{value:f},N),B.createElement(x,Object(t.a)({in:V,timeout:"auto"},R),B.createElement("div",{"aria-labelledby":N.props.id,id:N.props["aria-controls"],role:"region"},W)))}));I.a=Object(i.a)((function(g){var I={duration:g.transitions.duration.shortest};return{root:{position:"relative",transition:g.transitions.create(["margin"],I),"&:before":{position:"absolute",left:0,top:-1,right:0,height:1,content:'""',opacity:1,backgroundColor:g.palette.divider,transition:g.transitions.create(["opacity","background-color"],I)},"&:first-child":{"&:before":{display:"none"}},"&$expanded":{margin:"16px 0","&:first-child":{marginTop:0},"&:last-child":{marginBottom:0},"&:before":{opacity:0}},"&$expanded + &":{"&:before":{display:"none"}},"&$disabled":{backgroundColor:g.palette.action.disabledBackground}},rounded:{borderRadius:0,"&:first-child":{borderTopLeftRadius:g.shape.borderRadius,borderTopRightRadius:g.shape.borderRadius},"&:last-child":{borderBottomLeftRadius:g.shape.borderRadius,borderBottomRightRadius:g.shape.borderRadius,"@supports (-ms-ime-align: auto)":{borderBottomLeftRadius:0,borderBottomRightRadius:0}}},expanded:{},disabled:{}}}),{name:"MuiExpansionPanel"})(l)},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(4),e(14)),B=e(271),n=e(368),U=e(21),s=e(458),i=Q.forwardRef((function(g,I){var e=g.children,U=g.classes,i=g.className,c=g.expandIcon,A=g.IconButtonProps,l=g.onBlur,a=g.onClick,r=g.onFocusVisible,o=Object(C.a)(g,["children","classes","className","expandIcon","IconButtonProps","onBlur","onClick","onFocusVisible"]),d=Q.useState(!1),u=d[0],y=d[1],b=Q.useContext(s.a),Z=b.disabled,m=void 0!==Z&&Z,x=b.expanded,R=b.toggle;return Q.createElement(B.a,Object(t.a)({focusRipple:!1,disableRipple:!0,disabled:m,component:"div","aria-expanded":x,className:Object(F.default)(U.root,i,m&&U.disabled,x&&U.expanded,u&&U.focused),onFocusVisible:function(g){y(!0),r&&r(g)},onBlur:function(g){y(!1),l&&l(g)},onClick:function(g){R&&R(g),a&&a(g)},ref:I},o),Q.createElement("div",{className:Object(F.default)(U.content,x&&U.expanded)},e),c&&Q.createElement(n.a,Object(t.a)({className:Object(F.default)(U.expandIcon,x&&U.expanded),edge:"end",component:"div",tabIndex:null,role:null,"aria-hidden":!0},A),c))}));I.a=Object(U.a)((function(g){var I={duration:g.transitions.duration.shortest};return{root:{display:"flex",minHeight:48,transition:g.transitions.create(["min-height","background-color"],I),padding:g.spacing(0,2),"&:hover:not($disabled)":{cursor:"pointer"},"&$expanded":{minHeight:64},"&$focused":{backgroundColor:g.palette.action.focus},"&$disabled":{opacity:g.palette.action.disabledOpacity}},expanded:{},focused:{},disabled:{},content:{display:"flex",flexGrow:1,transition:g.transitions.create(["margin"],I),margin:"12px 0","&$expanded":{margin:"20px 0"}},expandIcon:{transform:"rotate(0deg)",transition:g.transitions.create("transform",I),"&:hover":{backgroundColor:"transparent"},"&$expanded":{transform:"rotate(180deg)"}}}}),{name:"MuiExpansionPanelSummary"})(i)},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(4),e(14)),B=e(21),n=Q.forwardRef((function(g,I){var e=g.classes,B=g.className,n=Object(C.a)(g,["classes","className"]);return Q.createElement("div",Object(t.a)({className:Object(F.default)(e.root,B),ref:I},n))}));I.a=Object(B.a)((function(g){return{root:{display:"flex",padding:g.spacing(1,2,2)}}}),{name:"MuiExpansionPanelDetails"})(n)},function(g,I,e){"use strict";e.d(I,"a",(function(){return s}));var t=e(100),C=e(18),Q=e(158),F=e(71),B=e(0),n=e.n(B);function U(){return(U=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}function s(g){var I=g.children,e=g.className,s=g.id,i=g.placeholder,c=g.style,A=g.whenCreated,l=Object(t.a)(g,["children","className","id","placeholder","style","whenCreated"]),a=Object(B.useRef)(null),r=function(g,I){var e=Object(B.useState)(null),t=Object(C.a)(e,2),Q=t[0],n=t[1];return Object(B.useEffect)((function(){if(null!==g.current&&null===Q){var e=new F.Map(g.current,I);null!=I.center&&null!=I.zoom?e.setView(I.center,I.zoom):null!=I.bounds&&e.fitBounds(I.bounds,I.boundsOptions),null!=I.whenReady&&e.whenReady(I.whenReady),n(e)}}),[g,Q,I]),Q}(a,l),o=Object(B.useRef)(!1);Object(B.useEffect)((function(){null!=r&&!1===o.current&&null!=A&&(o.current=!0,A(r))}),[r,A]);var d=Object(B.useState)({className:e,id:s,style:c}),u=Object(C.a)(d,1)[0],y=Object(B.useMemo)((function(){return r?{__version:Q.a,map:r}:null}),[r]),b=y?n.a.createElement(Q.b,{value:y},I):null!=i?i:null;return n.a.createElement("div",U({},u,{ref:a}),b)}},function(g,I,e){"use strict";e.d(I,"a",(function(){return B}));var t=e(2),C=e(100),Q=e(1685),F=e(71),B=Object(Q.a)((function(g,I){var e=g.position,Q=Object(C.a)(g,["position"]),B=new F.Marker(e,Q);return{instance:B,context:Object(t.a)(Object(t.a)({},I),{},{overlayContainer:B})}}),(function(g,I,e){I.position!==e.position&&g.setLatLng(I.position),null!=I.icon&&I.icon!==e.icon&&g.setIcon(I.icon),null!=I.zIndexOffset&&I.zIndexOffset!==e.zIndexOffset&&g.setZIndexOffset(I.zIndexOffset),null!=I.opacity&&I.opacity!==e.opacity&&g.setOpacity(I.opacity),null!=g.dragging&&I.draggable!==e.draggable&&(!0===I.draggable?g.dragging.enable():g.dragging.disable())}))},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(4),e(14)),B=e(21),n=e(38),U=e(30),s=e(305),i=Q.forwardRef((function(g,I){var e=g.classes,B=g.className,n=g.color,i=void 0===n?"secondary":n,c=g.edge,A=void 0!==c&&c,l=g.size,a=void 0===l?"medium":l,r=Object(C.a)(g,["classes","className","color","edge","size"]),o=Q.createElement("span",{className:e.thumb});return Q.createElement("span",{className:Object(F.default)(e.root,B,{start:e.edgeStart,end:e.edgeEnd}[A],"small"===a&&e["size".concat(Object(U.a)(a))])},Q.createElement(s.a,Object(t.a)({type:"checkbox",icon:o,checkedIcon:o,classes:{root:Object(F.default)(e.switchBase,e["color".concat(Object(U.a)(i))]),input:e.input,checked:e.checked,disabled:e.disabled},ref:I},r)),Q.createElement("span",{className:e.track}))}));I.a=Object(B.a)((function(g){return{root:{display:"inline-flex",width:58,height:38,overflow:"hidden",padding:12,boxSizing:"border-box",position:"relative",flexShrink:0,zIndex:0,verticalAlign:"middle","@media print":{colorAdjust:"exact"}},edgeStart:{marginLeft:-8},edgeEnd:{marginRight:-8},switchBase:{position:"absolute",top:0,left:0,zIndex:1,color:"light"===g.palette.type?g.palette.grey[50]:g.palette.grey[400],transition:g.transitions.create(["left","transform"],{duration:g.transitions.duration.shortest}),"&$checked":{transform:"translateX(20px)"},"&$disabled":{color:"light"===g.palette.type?g.palette.grey[400]:g.palette.grey[800]},"&$checked + $track":{opacity:.5},"&$disabled + $track":{opacity:"light"===g.palette.type?.12:.1}},colorPrimary:{"&$checked":{color:g.palette.primary.main,"&:hover":{backgroundColor:Object(n.d)(g.palette.primary.main,g.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},"&$disabled":{color:"light"===g.palette.type?g.palette.grey[400]:g.palette.grey[800]},"&$checked + $track":{backgroundColor:g.palette.primary.main},"&$disabled + $track":{backgroundColor:"light"===g.palette.type?g.palette.common.black:g.palette.common.white}},colorSecondary:{"&$checked":{color:g.palette.secondary.main,"&:hover":{backgroundColor:Object(n.d)(g.palette.secondary.main,g.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},"&$disabled":{color:"light"===g.palette.type?g.palette.grey[400]:g.palette.grey[800]},"&$checked + $track":{backgroundColor:g.palette.secondary.main},"&$disabled + $track":{backgroundColor:"light"===g.palette.type?g.palette.common.black:g.palette.common.white}},sizeSmall:{width:40,height:24,padding:7,"& $thumb":{width:16,height:16},"& $switchBase":{padding:4,"&$checked":{transform:"translateX(16px)"}}},checked:{},disabled:{},input:{left:"-100%",width:"300%"},thumb:{boxShadow:g.shadows[1],backgroundColor:"currentColor",width:20,height:20,borderRadius:"50%"},track:{height:"100%",width:"100%",borderRadius:7,zIndex:-1,transition:g.transitions.create(["opacity","background-color"],{duration:g.transitions.duration.shortest}),backgroundColor:"light"===g.palette.type?g.palette.common.black:g.palette.common.white,opacity:"light"===g.palette.type?.38:.3}}}),{name:"MuiSwitch"})(i)},function(g,I,e){"use strict";var t=e(0),C=e.n(t),Q=e(86);I.a=Object(Q.a)(C.a.createElement("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}),"RadioButtonUnchecked")},function(g,I,e){"use strict";var t=e(0),C=e.n(t),Q=e(86);I.a=Object(Q.a)(C.a.createElement("path",{d:"M16.59 7.58L10 14.17l-3.59-3.58L5 12l5 5 8-8zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}),"CheckCircleOutline")},function(g,I,e){"use strict";var t=e(0),C=e.n(t),Q=e(86);I.a=Object(Q.a)(C.a.createElement("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z"}),"Info")},function(g,I,e){"use strict";var t=e(0),C=e.n(t),Q=e(86);I.a=Object(Q.a)(C.a.createElement("path",{d:"M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z"}),"GetApp")},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(4),e(14)),B=e(153),n=e(21),U=e(248),s=e(30),i=Q.forwardRef((function(g,I){g.checked;var e=g.classes,n=g.className,i=g.control,c=g.disabled,A=(g.inputRef,g.label),l=g.labelPlacement,a=void 0===l?"end":l,r=(g.name,g.onChange,g.value,Object(C.a)(g,["checked","classes","className","control","disabled","inputRef","label","labelPlacement","name","onChange","value"])),o=Object(B.a)(),d=c;"undefined"===typeof d&&"undefined"!==typeof i.props.disabled&&(d=i.props.disabled),"undefined"===typeof d&&o&&(d=o.disabled);var u={disabled:d};return["checked","name","onChange","value","inputRef"].forEach((function(I){"undefined"===typeof i.props[I]&&"undefined"!==typeof g[I]&&(u[I]=g[I])})),Q.createElement("label",Object(t.a)({className:Object(F.default)(e.root,n,"end"!==a&&e["labelPlacement".concat(Object(s.a)(a))],d&&e.disabled),ref:I},r),Q.cloneElement(i,u),Q.createElement(U.a,{component:"span",className:Object(F.default)(e.label,d&&e.disabled)},A))}));I.a=Object(n.a)((function(g){return{root:{display:"inline-flex",alignItems:"center",cursor:"pointer",verticalAlign:"middle",WebkitTapHighlightColor:"transparent",marginLeft:-11,marginRight:16,"&$disabled":{cursor:"default"}},labelPlacementStart:{flexDirection:"row-reverse",marginLeft:16,marginRight:-11},labelPlacementTop:{flexDirection:"column-reverse",marginLeft:16},labelPlacementBottom:{flexDirection:"column",marginLeft:16},disabled:{},label:{"&$disabled":{color:g.palette.text.disabled}}}}),{name:"MuiFormControlLabel"})(i)},function(g,I,e){"use strict";var t=e(561),C=e(105),Q=e(351),F=e(562),B=e(352),n=e(353),U=e(355),s=e(354),i=e(563),c=e(356),A=e(358),l=e(357),a=e(424),r=Object(t.a)(Object(C.a)(Q.h,F.a,B.d,n.a,U.b,s.c,i.a,c.b,A.b,l.a)),o=Object(a.a)("div")(r,{name:"MuiBox"});I.a=o},function(g,I,e){"use strict";var t=e(0),C=e.n(t),Q=e(86);I.a=Object(Q.a)(C.a.createElement("path",{d:"M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z"}),"Favorite")},function(g,I,e){"use strict";e.d(I,"a",(function(){return C}));var t=e(158);e(0);function C(){return Object(t.c)().map}},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(4),e(14)),B=e(21),n=e(321),U=e(1684),s=Q.createElement(U.a,null),i=Q.forwardRef((function(g,I){var e=g.activeStep,B=void 0===e?0:e,U=g.alternativeLabel,i=void 0!==U&&U,c=g.children,A=g.classes,l=g.className,a=g.connector,r=void 0===a?s:a,o=g.nonLinear,d=void 0!==o&&o,u=g.orientation,y=void 0===u?"horizontal":u,b=Object(C.a)(g,["activeStep","alternativeLabel","children","classes","className","connector","nonLinear","orientation"]),Z=Q.isValidElement(r)?Q.cloneElement(r,{orientation:y}):null,m=Q.Children.toArray(c),x=m.map((function(g,I){var e={index:I,active:!1,completed:!1,disabled:!1};return B===I?e.active=!0:!d&&B>I?e.completed=!0:!d&&B<I&&(e.disabled=!0),Q.cloneElement(g,Object(t.a)({alternativeLabel:i,connector:Z,last:I+1===m.length,orientation:y},e,g.props))}));return Q.createElement(n.a,Object(t.a)({square:!0,elevation:0,className:Object(F.default)(A.root,A[y],l,i&&A.alternativeLabel),ref:I},b),x)}));I.a=Object(B.a)({root:{display:"flex",padding:24},horizontal:{flexDirection:"row",alignItems:"center"},vertical:{flexDirection:"column"},alternativeLabel:{alignItems:"flex-start"}},{name:"MuiStepper"})(i)},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(122),e(4),e(14)),B=e(21),n=Q.forwardRef((function(g,I){var e=g.active,B=void 0!==e&&e,n=g.alternativeLabel,U=g.children,s=g.classes,i=g.className,c=g.completed,A=void 0!==c&&c,l=g.connector,a=g.disabled,r=void 0!==a&&a,o=g.expanded,d=void 0!==o&&o,u=g.index,y=g.last,b=g.orientation,Z=Object(C.a)(g,["active","alternativeLabel","children","classes","className","completed","connector","disabled","expanded","index","last","orientation"]),m=l?Q.cloneElement(l,{orientation:b,alternativeLabel:n,index:u,active:B,completed:A,disabled:r}):null,x=Q.createElement("div",Object(t.a)({className:Object(F.default)(s.root,s[b],i,n&&s.alternativeLabel,A&&s.completed),ref:I},Z),m&&n&&0!==u?m:null,Q.Children.map(U,(function(g){return Q.isValidElement(g)?Q.cloneElement(g,Object(t.a)({active:B,alternativeLabel:n,completed:A,disabled:r,expanded:d,last:y,icon:u+1,orientation:b},g.props)):null})));return m&&!n&&0!==u?Q.createElement(Q.Fragment,null,m,x):x}));I.a=Object(B.a)({root:{},horizontal:{paddingLeft:8,paddingRight:8},vertical:{},alternativeLabel:{flex:1,position:"relative"},completed:{}},{name:"MuiStep"})(n)},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(4),e(14)),B=e(598),n=e(21),U=Q.forwardRef((function(g,I){var e=g.active,n=(g.alternativeLabel,g.children),U=g.classes,s=g.className,i=(g.completed,g.expanded),c=g.last,A=(g.optional,g.orientation,g.TransitionComponent),l=void 0===A?B.a:A,a=g.transitionDuration,r=void 0===a?"auto":a,o=g.TransitionProps,d=Object(C.a)(g,["active","alternativeLabel","children","classes","className","completed","expanded","last","optional","orientation","TransitionComponent","transitionDuration","TransitionProps"]);var u=r;return"auto"!==r||l.muiSupportAuto||(u=void 0),Q.createElement("div",Object(t.a)({className:Object(F.default)(U.root,s,c&&U.last),ref:I},d),Q.createElement(l,Object(t.a)({in:e||i,className:U.transition,timeout:u,unmountOnExit:!0},o),n))}));I.a=Object(n.a)((function(g){return{root:{marginTop:8,marginLeft:12,paddingLeft:20,paddingRight:8,borderLeft:"1px solid ".concat("light"===g.palette.type?g.palette.grey[400]:g.palette.grey[600])},last:{borderLeft:"none"},transition:{}}}),{name:"MuiStepContent"})(U)},function(g,I,e){"use strict";var t=e(16),C=e(5),Q=e(0),F=(e(4),e(14)),B=e(21),n=e(271),U=e(30),s=Q.forwardRef((function(g,I){var e=g.children,B=g.classes,s=g.className,i=g.color,c=void 0===i?"default":i,A=g.component,l=void 0===A?"button":A,a=g.disabled,r=void 0!==a&&a,o=g.disableFocusRipple,d=void 0!==o&&o,u=g.focusVisibleClassName,y=g.size,b=void 0===y?"large":y,Z=g.variant,m=void 0===Z?"round":Z,x=Object(t.a)(g,["children","classes","className","color","component","disabled","disableFocusRipple","focusVisibleClassName","size","variant"]);return Q.createElement(n.a,Object(C.a)({className:Object(F.default)(B.root,s,"round"!==m&&B.extended,"large"!==b&&B["size".concat(Object(U.a)(b))],r&&B.disabled,{primary:B.primary,secondary:B.secondary,inherit:B.colorInherit}[c]),component:l,disabled:r,focusRipple:!d,focusVisibleClassName:Object(F.default)(B.focusVisible,u),ref:I},x),Q.createElement("span",{className:B.label},e))}));I.a=Object(B.a)((function(g){return{root:Object(C.a)({},g.typography.button,{boxSizing:"border-box",minHeight:36,transition:g.transitions.create(["background-color","box-shadow","border"],{duration:g.transitions.duration.short}),borderRadius:"50%",padding:0,minWidth:0,width:56,height:56,boxShadow:g.shadows[6],"&:active":{boxShadow:g.shadows[12]},color:g.palette.getContrastText(g.palette.grey[300]),backgroundColor:g.palette.grey[300],"&:hover":{backgroundColor:g.palette.grey.A100,"@media (hover: none)":{backgroundColor:g.palette.grey[300]},"&$disabled":{backgroundColor:g.palette.action.disabledBackground},textDecoration:"none"},"&$focusVisible":{boxShadow:g.shadows[6]},"&$disabled":{color:g.palette.action.disabled,boxShadow:g.shadows[0],backgroundColor:g.palette.action.disabledBackground}}),label:{width:"100%",display:"inherit",alignItems:"inherit",justifyContent:"inherit"},primary:{color:g.palette.primary.contrastText,backgroundColor:g.palette.primary.main,"&:hover":{backgroundColor:g.palette.primary.dark,"@media (hover: none)":{backgroundColor:g.palette.primary.main}}},secondary:{color:g.palette.secondary.contrastText,backgroundColor:g.palette.secondary.main,"&:hover":{backgroundColor:g.palette.secondary.dark,"@media (hover: none)":{backgroundColor:g.palette.secondary.main}}},extended:{borderRadius:24,padding:"0 16px",width:"auto",minHeight:"auto",minWidth:48,height:48,"&$sizeSmall":{width:"auto",padding:"0 8px",borderRadius:17,minWidth:34,height:34},"&$sizeMedium":{width:"auto",padding:"0 16px",borderRadius:20,minWidth:40,height:40}},focusVisible:{},disabled:{},colorInherit:{color:"inherit"},sizeSmall:{width:40,height:40},sizeMedium:{width:48,height:48}}}),{name:"MuiFab"})(s)},function(g,I,e){"use strict";var t=e(16),C=e(48),Q=e(5),F=e(0),B=(e(4),e(14)),n=e(21),U=e(271),s=e(30),i=F.forwardRef((function(g,I){var e=g.classes,C=g.className,n=g.disabled,i=void 0!==n&&n,c=g.disableFocusRipple,A=void 0!==c&&c,l=g.fullWidth,a=g.icon,r=g.indicator,o=g.label,d=g.onChange,u=g.onClick,y=g.onFocus,b=g.selected,Z=g.selectionFollowsFocus,m=g.textColor,x=void 0===m?"inherit":m,R=g.value,S=g.wrapped,G=void 0!==S&&S,L=Object(t.a)(g,["classes","className","disabled","disableFocusRipple","fullWidth","icon","indicator","label","onChange","onClick","onFocus","selected","selectionFollowsFocus","textColor","value","wrapped"]);return F.createElement(U.a,Object(Q.a)({focusRipple:!A,className:Object(B.default)(e.root,e["textColor".concat(Object(s.a)(x))],C,i&&e.disabled,b&&e.selected,o&&a&&e.labelIcon,l&&e.fullWidth,G&&e.wrapped),ref:I,role:"tab","aria-selected":b,disabled:i,onClick:function(g){d&&d(g,R),u&&u(g)},onFocus:function(g){Z&&!b&&d&&d(g,R),y&&y(g)},tabIndex:b?0:-1},L),F.createElement("span",{className:e.wrapper},a,o),r)}));I.a=Object(n.a)((function(g){var I;return{root:Object(Q.a)({},g.typography.button,(I={maxWidth:264,minWidth:72,position:"relative",boxSizing:"border-box",minHeight:48,flexShrink:0,padding:"6px 12px"},Object(C.a)(I,g.breakpoints.up("sm"),{padding:"6px 24px"}),Object(C.a)(I,"overflow","hidden"),Object(C.a)(I,"whiteSpace","normal"),Object(C.a)(I,"textAlign","center"),Object(C.a)(I,g.breakpoints.up("sm"),{minWidth:160}),I)),labelIcon:{minHeight:72,paddingTop:9,"& $wrapper > *:first-child":{marginBottom:6}},textColorInherit:{color:"inherit",opacity:.7,"&$selected":{opacity:1},"&$disabled":{opacity:.5}},textColorPrimary:{color:g.palette.text.secondary,"&$selected":{color:g.palette.primary.main},"&$disabled":{color:g.palette.text.disabled}},textColorSecondary:{color:g.palette.text.secondary,"&$selected":{color:g.palette.secondary.main},"&$disabled":{color:g.palette.text.disabled}},selected:{},disabled:{},fullWidth:{flexShrink:1,flexGrow:1,flexBasis:0,maxWidth:"none"},wrapped:{fontSize:g.typography.pxToRem(12),lineHeight:1.5},wrapper:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:"100%",flexDirection:"column"}}}),{name:"MuiTab"})(i)},function(g,I,e){"use strict";var t=e(0),C=e.n(t),Q=e(86);I.a=Object(Q.a)(C.a.createElement(C.a.Fragment,null,C.a.createElement("path",{d:"M21 5c-1.11-.35-2.33-.5-3.5-.5-1.95 0-4.05.4-5.5 1.5-1.45-1.1-3.55-1.5-5.5-1.5S2.45 4.9 1 6v14.65c0 .25.25.5.5.5.1 0 .15-.05.25-.05C3.1 20.45 5.05 20 6.5 20c1.95 0 4.05.4 5.5 1.5 1.35-.85 3.8-1.5 5.5-1.5 1.65 0 3.35.3 4.75 1.05.1.05.15.05.25.05.25 0 .5-.25.5-.5V6c-.6-.45-1.25-.75-2-1zm0 13.5c-1.1-.35-2.3-.5-3.5-.5-1.7 0-4.15.65-5.5 1.5V8c1.35-.85 3.8-1.5 5.5-1.5 1.2 0 2.4.15 3.5.5v11.5z"}),C.a.createElement("path",{d:"M17.5 10.5c.88 0 1.73.09 2.5.26V9.24c-.79-.15-1.64-.24-2.5-.24-1.7 0-3.24.29-4.5.83v1.66c1.13-.64 2.7-.99 4.5-.99zM13 12.49v1.66c1.13-.64 2.7-.99 4.5-.99.88 0 1.73.09 2.5.26V11.9c-.79-.15-1.64-.24-2.5-.24-1.7 0-3.24.3-4.5.83zM17.5 14.33c-1.7 0-3.24.29-4.5.83v1.66c1.13-.64 2.7-.99 4.5-.99.88 0 1.73.09 2.5.26v-1.52c-.79-.16-1.64-.24-2.5-.24z"})),"MenuBook")},function(g,I,e){"use strict";var t=e(0),C=e.n(t),Q=e(86);I.a=Object(Q.a)(C.a.createElement(C.a.Fragment,null,C.a.createElement("path",{d:"M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z"}),C.a.createElement("path",{fill:"none",d:"M0 0h24v24H0z"})),"Star")},function(g,I,e){"use strict";var t=e(0),C=e.n(t),Q=e(86);I.a=Object(Q.a)(C.a.createElement("path",{d:"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"}),"Person")},function(g,I,e){"use strict";function t(g,I,e){return I in g?Object.defineProperty(g,I,{value:e,enumerable:!0,configurable:!0,writable:!0}):g[I]=e,g}e.d(I,"a",(function(){return wI}));var C=e(0),Q=e.n(C),F=e(4),B=e(124);function n(g){var I,e,t="";if(g)if("object"===typeof g)if(g.push)for(I=0;I<g.length;I++)g[I]&&(e=n(g[I]))&&(t&&(t+=" "),t+=e);else for(I in g)g[I]&&(e=n(I))&&(t&&(t+=" "),t+=e);else"boolean"===typeof g||g.call||(t&&(t+=" "),t+=g);return t}var U=function(){for(var g,I=0,e="";I<arguments.length;)(g=n(arguments[I++]))&&(e&&(e+=" "),e+=g);return e};function s(){return(s=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}function i(g,I){if(null==g)return{};var e,t,C=function(g,I){if(null==g)return{};var e,t,C={},Q=Object.keys(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||(C[e]=g[e]);return C}(g,I);if(Object.getOwnPropertySymbols){var Q=Object.getOwnPropertySymbols(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||Object.prototype.propertyIsEnumerable.call(g,e)&&(C[e]=g[e])}return C}var c=e(677),A=e(248),l=e(38),a=e(676),r=e(21),o=e(173),d=e(5),u=e(16),y=e(48),b=e(14),Z=C.forwardRef((function(g,I){var e=g.classes,t=g.className,Q=g.component,F=void 0===Q?"div":Q,B=g.disableGutters,n=void 0!==B&&B,U=g.variant,s=void 0===U?"regular":U,i=Object(u.a)(g,["classes","className","component","disableGutters","variant"]);return C.createElement(F,Object(d.a)({className:Object(b.default)(e.root,e[s],t,!n&&e.gutters),ref:I},i))})),m=Object(r.a)((function(g){return{root:{position:"relative",display:"flex",alignItems:"center"},gutters:Object(y.a)({paddingLeft:g.spacing(2),paddingRight:g.spacing(2)},g.breakpoints.up("sm"),{paddingLeft:g.spacing(3),paddingRight:g.spacing(3)}),regular:g.mixins.toolbar,dense:{minHeight:48}}}),{name:"MuiToolbar"})(Z),x=e(596),R=e(595),S=e(593),G=e(1678);function L(g,I){return Array.isArray(I)?I.every((function(I){return-1!==g.indexOf(I)})):-1!==g.indexOf(I)}var V=Object(c.a)((function(g){return{staticWrapperRoot:{overflow:"hidden",minWidth:310,display:"flex",flexDirection:"column",backgroundColor:g.palette.background.paper}}}),{name:"MuiPickersStaticWrapper"}),h=function(g){var I=g.children,e=V();return Object(C.createElement)("div",{className:e.staticWrapperRoot,children:I})},D=function(g){var I=g.children,e=g.classes,t=g.onAccept,Q=g.onDismiss,F=g.onClear,B=g.onSetToday,n=g.okLabel,c=g.cancelLabel,A=g.clearLabel,l=g.todayLabel,a=g.clearable,r=g.showTodayButton,d=(g.showTabs,g.wider),u=i(g,["children","classes","onAccept","onDismiss","onClear","onSetToday","okLabel","cancelLabel","clearLabel","todayLabel","clearable","showTodayButton","showTabs","wider"]);return Object(C.createElement)(S.a,s({role:"dialog",onClose:Q,classes:{paper:U(e.dialogRoot,d&&e.dialogRootWider)}},u),Object(C.createElement)(R.a,{children:I,className:e.dialog}),Object(C.createElement)(x.a,{classes:{root:U((a||r)&&e.withAdditionalAction)}},a&&Object(C.createElement)(o.a,{color:"primary",onClick:F},A),r&&Object(C.createElement)(o.a,{color:"primary",onClick:B},l),c&&Object(C.createElement)(o.a,{color:"primary",onClick:Q},c),n&&Object(C.createElement)(o.a,{color:"primary",onClick:t},n)))};D.displayName="ModalDialog";var p=Object(a.a)({dialogRoot:{minWidth:310},dialogRootWider:{minWidth:325},dialog:{"&:first-child":{padding:0}},withAdditionalAction:{justifyContent:"flex-start","& > *:first-child":{marginRight:"auto"}}}),E=Object(r.a)(p,{name:"MuiPickersModal"})(D),N="undefined"===typeof window?C.useEffect:C.useLayoutEffect;function W(g,I){var e=I[g.key];e&&(e(),g.preventDefault())}function f(g,I){var e=Object(C.useRef)(I);e.current=I,N((function(){if(g){var I=function(g){W(g,e.current)};return window.addEventListener("keydown",I),function(){window.removeEventListener("keydown",I)}}}),[g])}var X=function(g){var I=g.open,e=g.children,t=g.okLabel,Q=g.cancelLabel,F=g.clearLabel,B=g.todayLabel,n=g.showTodayButton,U=g.clearable,c=g.DialogProps,A=g.showTabs,l=g.wider,a=g.InputComponent,r=g.DateInputProps,o=g.onClear,d=g.onAccept,u=g.onDismiss,y=g.onSetToday,b=i(g,["open","children","okLabel","cancelLabel","clearLabel","todayLabel","showTodayButton","clearable","DialogProps","showTabs","wider","InputComponent","DateInputProps","onClear","onAccept","onDismiss","onSetToday"]);return f(I,{Enter:d}),Object(C.createElement)(C.Fragment,null,Object(C.createElement)(a,s({},b,r)),Object(C.createElement)(E,s({wider:l,showTabs:A,open:I,onClear:o,onAccept:d,onDismiss:u,onSetToday:y,clearLabel:F,todayLabel:B,okLabel:t,cancelLabel:Q,clearable:U,showTodayButton:n,children:e},c)))};X.defaultProps={okLabel:"OK",cancelLabel:"Cancel",clearLabel:"Clear",todayLabel:"Today",clearable:!1,showTodayButton:!1};var J=function(g){var I=g.open,e=(g.wider,g.children),t=g.PopoverProps,Q=(g.onClear,g.onDismiss),F=(g.onSetToday,g.onAccept),B=(g.showTabs,g.DateInputProps),n=g.InputComponent,U=i(g,["open","wider","children","PopoverProps","onClear","onDismiss","onSetToday","onAccept","showTabs","DateInputProps","InputComponent"]),c=Object(C.useRef)();return f(I,{Enter:F}),Object(C.createElement)(C.Fragment,null,Object(C.createElement)(n,s({},U,B,{inputRef:c})),Object(C.createElement)(G.a,s({open:I,onClose:Q,anchorEl:c.current,anchorOrigin:{vertical:"bottom",horizontal:"center"},transformOrigin:{vertical:"top",horizontal:"center"},children:e},t)))};var v=Object(C.createContext)(null),k=function(g){var I=g.variant,e=i(g,["variant"]),t=function(g){switch(g){case"inline":return J;case"static":return h;default:return X}}(I);return Object(C.createElement)(v.Provider,{value:I||"dialog"},Object(C.createElement)(t,e))},H=e(812),M=e(368),Y=e(689),w=e(365),T=function(g){function I(I){var e;return(e=g.call(this,I)||this)._state=null,e._del=!1,e._handleChange=function(g){var I=e.state.value,t=g.target.value,C=g.target,Q=t.length>I.length,F=e._del,B=I===e.props.format(t);e.setState({value:t,local:!0},(function(){var g=C.selectionStart,n=e.props.refuse||/[^\d]+/g,U=t.substr(0,g).replace(n,"");if(e._state={input:C,before:U,op:Q,di:F&&B,del:F},e.props.replace&&e.props.replace(I)&&Q&&!B){for(var s=-1,i=0;i!==U.length;++i)s=Math.max(s,t.toLowerCase().indexOf(U[i].toLowerCase(),s+1));var c=t.substr(s+1).replace(n,"")[0];s=t.indexOf(c,s+1),t=""+t.substr(0,s)+t.substr(s+1)}var A=e.props.format(t);I===A?e.setState({value:t}):e.props.onChange(A)}))},e._hKD=function(g){"Delete"===g.code&&(e._del=!0)},e._hKU=function(g){"Delete"===g.code&&(e._del=!1)},e.state={value:I.value,local:!0},e}Object(w.a)(I,g),I.getDerivedStateFromProps=function(g,I){return{value:I.local?I.value:g.value,local:!1}};var e=I.prototype;return e.render=function(){var g=this._handleChange,I=this.state.value;return(0,this.props.children)({value:I,onChange:g})},e.componentWillUnmount=function(){document.removeEventListener("keydown",this._hKD),document.removeEventListener("keyup",this._hKU)},e.componentDidMount=function(){document.addEventListener("keydown",this._hKD),document.addEventListener("keyup",this._hKU)},e.componentDidUpdate=function(){var g=this._state;if(g){for(var I=this.state.value,e=-1,t=0;t!==g.before.length;++t)e=Math.max(e,I.toLowerCase().indexOf(g.before[t].toLowerCase(),e+1));if(this.props.replace&&(g.op||g.del&&!g.di))for(;I[e+1]&&(this.props.refuse||/[^\d]+/).test(I[e+1]);)e+=1;g.input.selectionStart=g.input.selectionEnd=e+1+(g.di?1:0)}this._state=null},I}(C.Component),z=e(247);function O(g,I){return function(g){if(Array.isArray(g))return g}(g)||function(g,I){if(Symbol.iterator in Object(g)||"[object Arguments]"===Object.prototype.toString.call(g)){var e=[],t=!0,C=!1,Q=void 0;try{for(var F,B=g[Symbol.iterator]();!(t=(F=B.next()).done)&&(e.push(F.value),!I||e.length!==I);t=!0);}catch(n){C=!0,Q=n}finally{try{t||null==B.return||B.return()}finally{if(C)throw Q}}return e}}(g,I)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}var K=e(77);function j(g,I){if(!(g instanceof I))throw new TypeError("Cannot call a class as a function")}function P(g,I){for(var e=0;e<I.length;e++){var t=I[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(g,t.key,t)}}function _(g,I,e){return I&&P(g.prototype,I),e&&P(g,e),g}function q(g){return(q="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"===typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g})(g)}function $(g,I){return!I||"object"!==q(I)&&"function"!==typeof I?function(g){if(void 0===g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return g}(g):I}function gg(g){return(gg=Object.setPrototypeOf?Object.getPrototypeOf:function(g){return g.__proto__||Object.getPrototypeOf(g)})(g)}function Ig(g,I){return(Ig=Object.setPrototypeOf||function(g,I){return g.__proto__=I,g})(g,I)}function eg(g,I){if("function"!==typeof I&&null!==I)throw new TypeError("Super expression must either be null or a function");g.prototype=Object.create(I&&I.prototype,{constructor:{value:g,writable:!0,configurable:!0}}),I&&Ig(g,I)}var tg=Object(c.a)((function(g){return{day:{width:36,height:36,fontSize:g.typography.caption.fontSize,margin:"0 2px",color:g.palette.text.primary,fontWeight:g.typography.fontWeightMedium,padding:0},hidden:{opacity:0,pointerEvents:"none"},current:{color:g.palette.primary.main,fontWeight:600},daySelected:{color:g.palette.primary.contrastText,backgroundColor:g.palette.primary.main,fontWeight:g.typography.fontWeightMedium,"&:hover":{backgroundColor:g.palette.primary.main}},dayDisabled:{pointerEvents:"none",color:g.palette.text.hint}}}),{name:"MuiPickersDay"}),Cg=function(g){var I=g.children,e=g.disabled,t=g.hidden,Q=g.current,F=g.selected,B=i(g,["children","disabled","hidden","current","selected"]),n=tg(),c=U(n.day,t&&n.hidden,Q&&n.current,F&&n.daySelected,e&&n.dayDisabled);return Object(C.createElement)(M.a,s({className:c,tabIndex:t||e?-1:0},B),Object(C.createElement)(A.a,{variant:"body2",color:"inherit"},I))};Cg.displayName="Day",Cg.defaultProps={disabled:!1,hidden:!1,current:!1,selected:!1};var Qg=Cg;function Fg(g,I){if(null==g)return{};var e,t,C={},Q=Object.keys(g);for(t=0;t<Q.length;t++)e=Q[t],I.indexOf(e)>=0||(C[e]=g[e]);return C}function Bg(){return(Bg=Object.assign||function(g){for(var I=1;I<arguments.length;I++){var e=arguments[I];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(g[t]=e[t])}return g}).apply(this,arguments)}function ng(g,I){g.prototype=Object.create(I.prototype),g.prototype.constructor=g,g.__proto__=I}function Ug(g){if(void 0===g)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return g}var sg=Q.a.createContext(null);function ig(g,I){var e=Object.create(null);return g&&C.Children.map(g,(function(g){return g})).forEach((function(g){e[g.key]=function(g){return I&&Object(C.isValidElement)(g)?I(g):g}(g)})),e}function cg(g,I,e){return null!=e[I]?e[I]:g.props[I]}function Ag(g,I,e){var t=ig(g.children),Q=function(g,I){function e(e){return e in I?I[e]:g[e]}g=g||{},I=I||{};var t,C=Object.create(null),Q=[];for(var F in g)F in I?Q.length&&(C[F]=Q,Q=[]):Q.push(F);var B={};for(var n in I){if(C[n])for(t=0;t<C[n].length;t++){var U=C[n][t];B[C[n][t]]=e(U)}B[n]=e(n)}for(t=0;t<Q.length;t++)B[Q[t]]=e(Q[t]);return B}(I,t);return Object.keys(Q).forEach((function(F){var B=Q[F];if(Object(C.isValidElement)(B)){var n=F in I,U=F in t,s=I[F],i=Object(C.isValidElement)(s)&&!s.props.in;!U||n&&!i?U||!n||i?U&&n&&Object(C.isValidElement)(s)&&(Q[F]=Object(C.cloneElement)(B,{onExited:e.bind(null,B),in:s.props.in,exit:cg(B,"exit",g),enter:cg(B,"enter",g)})):Q[F]=Object(C.cloneElement)(B,{in:!1}):Q[F]=Object(C.cloneElement)(B,{onExited:e.bind(null,B),in:!0,exit:cg(B,"exit",g),enter:cg(B,"enter",g)})}})),Q}var lg=Object.values||function(g){return Object.keys(g).map((function(I){return g[I]}))},ag=function(g){function I(I,e){var t,C=(t=g.call(this,I,e)||this).handleExited.bind(Ug(Ug(t)));return t.state={contextValue:{isMounting:!0},handleExited:C,firstRender:!0},t}ng(I,g);var e=I.prototype;return e.componentDidMount=function(){this.mounted=!0,this.setState({contextValue:{isMounting:!1}})},e.componentWillUnmount=function(){this.mounted=!1},I.getDerivedStateFromProps=function(g,I){var e,t,Q=I.children,F=I.handleExited;return{children:I.firstRender?(e=g,t=F,ig(e.children,(function(g){return Object(C.cloneElement)(g,{onExited:t.bind(null,g),in:!0,appear:cg(g,"appear",e),enter:cg(g,"enter",e),exit:cg(g,"exit",e)})}))):Ag(g,Q,F),firstRender:!1}},e.handleExited=function(g,I){var e=ig(this.props.children);g.key in e||(g.props.onExited&&g.props.onExited(I),this.mounted&&this.setState((function(I){var e=Bg({},I.children);return delete e[g.key],{children:e}})))},e.render=function(){var g=this.props,I=g.component,e=g.childFactory,t=Fg(g,["component","childFactory"]),C=this.state.contextValue,F=lg(this.state.children).map(e);return delete t.appear,delete t.enter,delete t.exit,null===I?Q.a.createElement(sg.Provider,{value:C},F):Q.a.createElement(sg.Provider,{value:C},Q.a.createElement(I,t,F))},I}(Q.a.Component);ag.propTypes={},ag.defaultProps={component:"div",childFactory:function(g){return g}};var rg=ag;function og(g,I){return g.replace(new RegExp("(^|\\s)"+I+"(?:\\s|$)","g"),"$1").replace(/\s+/g," ").replace(/^\s*|\s*$/g,"")}var dg=e(42),ug=e.n(dg),yg=!1,bg=function(g){function I(I,e){var t;t=g.call(this,I,e)||this;var C,Q=e&&!e.isMounting?I.enter:I.appear;return t.appearStatus=null,I.in?Q?(C="exited",t.appearStatus="entering"):C="entered":C=I.unmountOnExit||I.mountOnEnter?"unmounted":"exited",t.state={status:C},t.nextCallback=null,t}ng(I,g),I.getDerivedStateFromProps=function(g,I){return g.in&&"unmounted"===I.status?{status:"exited"}:null};var e=I.prototype;return e.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},e.componentDidUpdate=function(g){var I=null;if(g!==this.props){var e=this.state.status;this.props.in?"entering"!==e&&"entered"!==e&&(I="entering"):"entering"!==e&&"entered"!==e||(I="exiting")}this.updateStatus(!1,I)},e.componentWillUnmount=function(){this.cancelNextCallback()},e.getTimeouts=function(){var g,I,e,t=this.props.timeout;return g=I=e=t,null!=t&&"number"!==typeof t&&(g=t.exit,I=t.enter,e=void 0!==t.appear?t.appear:I),{exit:g,enter:I,appear:e}},e.updateStatus=function(g,I){if(void 0===g&&(g=!1),null!==I){this.cancelNextCallback();var e=ug.a.findDOMNode(this);"entering"===I?this.performEnter(e,g):this.performExit(e)}else this.props.unmountOnExit&&"exited"===this.state.status&&this.setState({status:"unmounted"})},e.performEnter=function(g,I){var e=this,t=this.props.enter,C=this.context?this.context.isMounting:I,Q=this.getTimeouts(),F=C?Q.appear:Q.enter;!I&&!t||yg?this.safeSetState({status:"entered"},(function(){e.props.onEntered(g)})):(this.props.onEnter(g,C),this.safeSetState({status:"entering"},(function(){e.props.onEntering(g,C),e.onTransitionEnd(g,F,(function(){e.safeSetState({status:"entered"},(function(){e.props.onEntered(g,C)}))}))})))},e.performExit=function(g){var I=this,e=this.props.exit,t=this.getTimeouts();e&&!yg?(this.props.onExit(g),this.safeSetState({status:"exiting"},(function(){I.props.onExiting(g),I.onTransitionEnd(g,t.exit,(function(){I.safeSetState({status:"exited"},(function(){I.props.onExited(g)}))}))}))):this.safeSetState({status:"exited"},(function(){I.props.onExited(g)}))},e.cancelNextCallback=function(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},e.safeSetState=function(g,I){I=this.setNextCallback(I),this.setState(g,I)},e.setNextCallback=function(g){var I=this,e=!0;return this.nextCallback=function(t){e&&(e=!1,I.nextCallback=null,g(t))},this.nextCallback.cancel=function(){e=!1},this.nextCallback},e.onTransitionEnd=function(g,I,e){this.setNextCallback(e);var t=null==I&&!this.props.addEndListener;g&&!t?(this.props.addEndListener&&this.props.addEndListener(g,this.nextCallback),null!=I&&setTimeout(this.nextCallback,I)):setTimeout(this.nextCallback,0)},e.render=function(){var g=this.state.status;if("unmounted"===g)return null;var I=this.props,e=I.children,t=Fg(I,["children"]);if(delete t.in,delete t.mountOnEnter,delete t.unmountOnExit,delete t.appear,delete t.enter,delete t.exit,delete t.timeout,delete t.addEndListener,delete t.onEnter,delete t.onEntering,delete t.onEntered,delete t.onExit,delete t.onExiting,delete t.onExited,"function"===typeof e)return Q.a.createElement(sg.Provider,{value:null},e(g,t));var C=Q.a.Children.only(e);return Q.a.createElement(sg.Provider,{value:null},Q.a.cloneElement(C,t))},I}(Q.a.Component);function Zg(){}bg.contextType=sg,bg.propTypes={},bg.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:Zg,onEntering:Zg,onEntered:Zg,onExit:Zg,onExiting:Zg,onExited:Zg},bg.UNMOUNTED=0,bg.EXITED=1,bg.ENTERING=2,bg.ENTERED=3,bg.EXITING=4;var mg=bg,xg=function(g,I){return g&&I&&I.split(" ").forEach((function(I){return t=I,void((e=g).classList?e.classList.remove(t):"string"===typeof e.className?e.className=og(e.className,t):e.setAttribute("class",og(e.className&&e.className.baseVal||"",t)));var e,t}))},Rg=function(g){function I(){for(var I,e=arguments.length,t=new Array(e),C=0;C<e;C++)t[C]=arguments[C];return(I=g.call.apply(g,[this].concat(t))||this).appliedClasses={appear:{},enter:{},exit:{}},I.onEnter=function(g,e){I.removeClasses(g,"exit"),I.addClass(g,e?"appear":"enter","base"),I.props.onEnter&&I.props.onEnter(g,e)},I.onEntering=function(g,e){var t=e?"appear":"enter";I.addClass(g,t,"active"),I.props.onEntering&&I.props.onEntering(g,e)},I.onEntered=function(g,e){var t=e?"appear":"enter";I.removeClasses(g,t),I.addClass(g,t,"done"),I.props.onEntered&&I.props.onEntered(g,e)},I.onExit=function(g){I.removeClasses(g,"appear"),I.removeClasses(g,"enter"),I.addClass(g,"exit","base"),I.props.onExit&&I.props.onExit(g)},I.onExiting=function(g){I.addClass(g,"exit","active"),I.props.onExiting&&I.props.onExiting(g)},I.onExited=function(g){I.removeClasses(g,"exit"),I.addClass(g,"exit","done"),I.props.onExited&&I.props.onExited(g)},I.getClassNames=function(g){var e=I.props.classNames,t="string"===typeof e,C=t?""+(t&&e?e+"-":"")+g:e[g];return{baseClassName:C,activeClassName:t?C+"-active":e[g+"Active"],doneClassName:t?C+"-done":e[g+"Done"]}},I}ng(I,g);var e=I.prototype;return e.addClass=function(g,I,e){var t=this.getClassNames(I)[e+"ClassName"];"appear"===I&&"done"===e&&(t+=" "+this.getClassNames("enter").doneClassName),"active"===e&&g&&g.scrollTop,this.appliedClasses[I][e]=t,function(g,I){g&&I&&I.split(" ").forEach((function(I){return t=I,void((e=g).classList?e.classList.add(t):function(g,I){return g.classList?!!I&&g.classList.contains(I):-1!==(" "+(g.className.baseVal||g.className)+" ").indexOf(" "+I+" ")}(e,t)||("string"===typeof e.className?e.className=e.className+" "+t:e.setAttribute("class",(e.className&&e.className.baseVal||"")+" "+t)));var e,t}))}(g,t)},e.removeClasses=function(g,I){var e=this.appliedClasses[I],t=e.base,C=e.active,Q=e.done;this.appliedClasses[I]={},t&&xg(g,t),C&&xg(g,C),Q&&xg(g,Q)},e.render=function(){var g=this.props,I=(g.classNames,Fg(g,["classNames"]));return Q.a.createElement(mg,Bg({},I,{onEnter:this.onEnter,onEntered:this.onEntered,onEntering:this.onEntering,onExit:this.onExit,onExiting:this.onExiting,onExited:this.onExited}))},I}(Q.a.Component);Rg.defaultProps={classNames:""},Rg.propTypes={};var Sg=Rg,Gg=e(1731),Lg=function(g){return 1===g.length&&"year"===g[0]},Vg=function(g){return 2===g.length&&L(g,"month")&&L(g,"year")},hg=function(g){var I=g.children,e=g.value,t=g.disabled,Q=g.onSelect,F=g.dayInCurrentMonth,B=i(g,["children","value","disabled","onSelect","dayInCurrentMonth"]),n=Object(C.useCallback)((function(){return Q(e)}),[Q,e]);return Object(C.createElement)("div",s({role:"presentation",onClick:F&&!t?n:void 0,onKeyPress:F&&!t?n:void 0},B),I)},Dg=Object(c.a)((function(g){var I=g.transitions.create("transform",{duration:350,easing:"cubic-bezier(0.35, 0.8, 0.4, 1)"});return{transitionContainer:{display:"block",position:"relative","& > *":{position:"absolute",top:0,right:0,left:0}},"slideEnter-left":{willChange:"transform",transform:"translate(100%)"},"slideEnter-right":{willChange:"transform",transform:"translate(-100%)"},slideEnterActive:{transform:"translate(0%)",transition:I},slideExit:{transform:"translate(0%)"},"slideExitActiveLeft-left":{willChange:"transform",transform:"translate(-200%)",transition:I},"slideExitActiveLeft-right":{willChange:"transform",transform:"translate(200%)",transition:I}}}),{name:"MuiPickersSlideTransition"}),pg=function(g){var I=g.children,e=g.transKey,t=g.slideDirection,Q=g.className,F=void 0===Q?null:Q,B=Dg(),n={exit:B.slideExit,enterActive:B.slideEnterActive,enter:B["slideEnter-"+t],exitActive:B["slideExitActiveLeft-"+t]};return Object(C.createElement)(rg,{className:U(B.transitionContainer,F),childFactory:function(g){return Object(C.cloneElement)(g,{classNames:n})}},Object(C.createElement)(Sg,{mountOnEnter:!0,unmountOnExit:!0,key:e+t,timeout:350,classNames:n,children:I}))},Eg=Object(c.a)((function(g){return{switchHeader:{display:"flex",justifyContent:"space-between",alignItems:"center",marginTop:g.spacing(.5),marginBottom:g.spacing(1)},transitionContainer:{width:"100%",overflow:"hidden",height:23},iconButton:{zIndex:1,backgroundColor:g.palette.background.paper},daysHeader:{display:"flex",justifyContent:"center",alignItems:"center",maxHeight:16},dayLabel:{width:36,margin:"0 2px",textAlign:"center",color:g.palette.text.hint}}}),{name:"MuiPickersCalendarHeader"}),Ng=function(g){var I=g.currentMonth,e=g.onMonthChange,t=g.leftArrowIcon,Q=g.rightArrowIcon,F=g.leftArrowButtonProps,n=g.rightArrowButtonProps,U=g.disablePrevMonth,i=g.disableNextMonth,c=g.slideDirection,l=Object(B.b)(),a=Eg(),r="rtl"===Object(K.a)().direction;return Object(C.createElement)("div",null,Object(C.createElement)("div",{className:a.switchHeader},Object(C.createElement)(M.a,s({},F,{disabled:U,onClick:function(){return e(l.getPreviousMonth(I),"right")},className:a.iconButton}),r?Q:t),Object(C.createElement)(pg,{slideDirection:c,transKey:I.toString(),className:a.transitionContainer},Object(C.createElement)(A.a,{align:"center",variant:"body1"},l.getCalendarHeaderText(I))),Object(C.createElement)(M.a,s({},n,{disabled:i,onClick:function(){return e(l.getNextMonth(I),"left")},className:a.iconButton}),r?t:Q)),Object(C.createElement)("div",{className:a.daysHeader},l.getWeekdays().map((function(g,I){return Object(C.createElement)(A.a,{key:I,variant:"caption",className:a.dayLabel},g)}))))};Ng.displayName="CalendarHeader",Ng.defaultProps={leftArrowIcon:Object(C.createElement)((function(g){return Q.a.createElement(z.a,g,Q.a.createElement("path",{d:"M15.41 16.59L10.83 12l4.58-4.59L14 6l-6 6 6 6 1.41-1.41z"}),Q.a.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}))}),null),rightArrowIcon:Object(C.createElement)((function(g){return Q.a.createElement(z.a,g,Q.a.createElement("path",{d:"M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z"}),Q.a.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}))}),null),disablePrevMonth:!1,disableNextMonth:!1};var Wg=function(g){var I=g.onKeyDown;return Object(C.useEffect)((function(){return window.addEventListener("keydown",I),function(){window.removeEventListener("keydown",I)}}),[I]),null},fg=function(g){function I(){var g,e;j(this,I);for(var t=arguments.length,Q=new Array(t),F=0;F<t;F++)Q[F]=arguments[F];return(e=$(this,(g=gg(I)).call.apply(g,[this].concat(Q)))).state={slideDirection:"left",currentMonth:e.props.utils.startOfMonth(e.props.date),loadingQueue:0},e.pushToLoadingQueue=function(){var g=e.state.loadingQueue+1;e.setState({loadingQueue:g})},e.popFromLoadingQueue=function(){var g=e.state.loadingQueue;g=g<=0?0:g-1,e.setState({loadingQueue:g})},e.handleChangeMonth=function(g,I){if(e.setState({currentMonth:g,slideDirection:I}),e.props.onMonthChange){var t=e.props.onMonthChange(g);t&&(e.pushToLoadingQueue(),t.then((function(){e.popFromLoadingQueue()})))}},e.validateMinMaxDate=function(g){var I=e.props,t=I.minDate,C=I.maxDate,Q=I.utils,F=I.disableFuture,B=I.disablePast,n=Q.date();return Boolean(F&&Q.isAfterDay(g,n)||B&&Q.isBeforeDay(g,n)||t&&Q.isBeforeDay(g,Q.date(t))||C&&Q.isAfterDay(g,Q.date(C)))},e.shouldDisablePrevMonth=function(){var g=e.props,I=g.utils,t=g.disablePast,C=g.minDate,Q=I.date(),F=I.startOfMonth(t&&I.isAfter(Q,I.date(C))?Q:I.date(C));return!I.isBefore(F,e.state.currentMonth)},e.shouldDisableNextMonth=function(){var g=e.props,I=g.utils,t=g.disableFuture,C=g.maxDate,Q=I.date(),F=I.startOfMonth(t&&I.isBefore(Q,I.date(C))?Q:I.date(C));return!I.isAfter(F,e.state.currentMonth)},e.shouldDisableDate=function(g){var I=e.props.shouldDisableDate;return e.validateMinMaxDate(g)||Boolean(I&&I(g))},e.handleDaySelect=function(g){var I=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],t=e.props,C=t.date,Q=t.utils;e.props.onChange(Q.mergeDateAndTime(g,C),I)},e.moveToDay=function(g){var I=e.props.utils;g&&!e.shouldDisableDate(g)&&(I.getMonth(g)!==I.getMonth(e.state.currentMonth)&&e.handleChangeMonth(I.startOfMonth(g),"left"),e.handleDaySelect(g,!1))},e.handleKeyDown=function(g){var I=e.props,t=I.theme,C=I.date,Q=I.utils;W(g,{ArrowUp:function(){return e.moveToDay(Q.addDays(C,-7))},ArrowDown:function(){return e.moveToDay(Q.addDays(C,7))},ArrowLeft:function(){return e.moveToDay(Q.addDays(C,"ltr"===t.direction?-1:1))},ArrowRight:function(){return e.moveToDay(Q.addDays(C,"ltr"===t.direction?1:-1))}})},e.renderWeeks=function(){var g=e.props,I=g.utils,t=g.classes;return I.getWeekArray(e.state.currentMonth).map((function(g){return Object(C.createElement)("div",{key:"week-".concat(g[0].toString()),className:t.week},e.renderDays(g))}))},e.renderDays=function(g){var I=e.props,t=I.date,Q=I.renderDay,F=I.utils,B=F.date(),n=F.startOfDay(t),U=F.getMonth(e.state.currentMonth);return g.map((function(g){var I=e.shouldDisableDate(g),t=F.getMonth(g)===U,s=Object(C.createElement)(Qg,{disabled:I,current:F.isSameDay(g,B),hidden:!t,selected:F.isSameDay(n,g)},F.getDayText(g));return Q&&(s=Q(g,n,t,s)),Object(C.createElement)(hg,{value:g,key:g.toString(),disabled:I,dayInCurrentMonth:t,onSelect:e.handleDaySelect},s)}))},e}return eg(I,g),_(I,[{key:"componentDidMount",value:function(){var g=this.props,I=g.date,e=g.minDate,t=g.maxDate,C=g.utils,Q=g.disablePast,F=g.disableFuture;if(this.shouldDisableDate(I)){var B=function(g){var I=g.date,e=g.utils,t=g.minDate,C=g.maxDate,Q=g.disableFuture,F=g.disablePast,B=g.shouldDisableDate,n=e.startOfDay(e.date());F&&e.isBefore(t,n)&&(t=n),Q&&e.isAfter(C,n)&&(C=n);var U=I,s=I;for(e.isBefore(I,t)&&(U=e.date(t),s=null),e.isAfter(I,C)&&(s&&(s=e.date(C)),U=null);U||s;){if(U&&e.isAfter(U,C)&&(U=null),s&&e.isBefore(s,t)&&(s=null),U){if(!B(U))return U;U=e.addDays(U,1)}if(s){if(!B(s))return s;s=e.addDays(s,-1)}}return e.date()}({date:I,utils:C,minDate:C.date(e),maxDate:C.date(t),disablePast:Boolean(Q),disableFuture:Boolean(F),shouldDisableDate:this.shouldDisableDate});this.handleDaySelect(B,!1)}}},{key:"render",value:function(){var g=this.state,I=g.currentMonth,e=g.slideDirection,t=this.props,Q=t.classes,F=t.allowKeyboardControl,B=t.leftArrowButtonProps,n=t.leftArrowIcon,U=t.rightArrowButtonProps,s=t.rightArrowIcon,i=t.loadingIndicator,c=i||Object(C.createElement)(Gg.a,null);return Object(C.createElement)(C.Fragment,null,F&&"static"!==this.context&&Object(C.createElement)(Wg,{onKeyDown:this.handleKeyDown}),Object(C.createElement)(Ng,{currentMonth:I,slideDirection:e,onMonthChange:this.handleChangeMonth,leftArrowIcon:n,leftArrowButtonProps:B,rightArrowIcon:s,rightArrowButtonProps:U,disablePrevMonth:this.shouldDisablePrevMonth(),disableNextMonth:this.shouldDisableNextMonth()}),Object(C.createElement)(pg,{slideDirection:e,transKey:I.toString(),className:Q.transitionContainer},Object(C.createElement)(C.Fragment,null,this.state.loadingQueue>0&&Object(C.createElement)("div",{className:Q.progressContainer},c)||Object(C.createElement)("div",null,this.renderWeeks()))))}}],[{key:"getDerivedStateFromProps",value:function(g,I){var e=g.utils,t=g.date;if(!e.isEqual(t,I.lastDate)){var C=e.getMonth(t),Q=I.lastDate||t,F=e.getMonth(Q);return{lastDate:t,currentMonth:g.utils.startOfMonth(t),slideDirection:C===F?I.slideDirection:e.isAfterDay(t,Q)?"left":"right"}}return null}}]),I}(C.Component);fg.contextType=v,fg.defaultProps={minDate:new Date("1900-01-01"),maxDate:new Date("2100-01-01"),disablePast:!1,disableFuture:!1,allowKeyboardControl:!0};var Xg,Jg=Object(r.a)((function(g){return{transitionContainer:{minHeight:216,marginTop:g.spacing(1.5)},progressContainer:{width:"100%",height:"100%",display:"flex",justifyContent:"center",alignItems:"center"},week:{display:"flex",justifyContent:"center"}}}),{name:"MuiPickersCalendar",withTheme:!0})(function(g){var I=function(I){var e=Object(B.b)();return Object(C.createElement)(g,s({utils:e},I))};return I.displayName="WithUtils(".concat(g.displayName||g.name,")"),I}(fg));!function(g){g.HOURS="hours",g.MINUTES="minutes",g.SECONDS="seconds"}(Xg||(Xg={}));var vg=Xg,kg=function(g){function I(){var g,e;j(this,I);for(var t=arguments.length,C=new Array(t),Q=0;Q<t;Q++)C[Q]=arguments[Q];return(e=$(this,(g=gg(I)).call.apply(g,[this].concat(C)))).state={toAnimateTransform:!1,previousType:void 0},e.getAngleStyle=function(){var g=e.props,I=g.value,t=g.isInner,C=g.type,Q=360/(C===vg.HOURS?12:60)*I;return C===vg.HOURS&&I>12&&(Q-=360),{height:t?"26%":"40%",transform:"rotateZ(".concat(Q,"deg)")}},e}return eg(I,g),_(I,[{key:"render",value:function(){var g=this.props,I=g.classes,e=g.hasSelected;return Object(C.createElement)("div",{style:this.getAngleStyle(),className:U(I.pointer,this.state.toAnimateTransform&&I.animateTransform)},Object(C.createElement)("div",{className:U(I.thumb,e&&I.noPoint)}))}}]),I}(C.Component);kg.getDerivedStateFromProps=function(g,I){return g.type!==I.previousType?{toAnimateTransform:!0,previousType:g.type}:{toAnimateTransform:!1,previousType:g.type}};var Hg=Object(r.a)((function(g){return Object(a.a)({pointer:{width:2,backgroundColor:g.palette.primary.main,position:"absolute",left:"calc(50% - 1px)",bottom:"50%",transformOrigin:"center bottom 0px"},animateTransform:{transition:g.transitions.create(["transform","height"])},thumb:{width:4,height:4,backgroundColor:g.palette.primary.contrastText,borderRadius:"100%",position:"absolute",top:-21,left:-15,border:"14px solid ".concat(g.palette.primary.main),boxSizing:"content-box"},noPoint:{backgroundColor:g.palette.primary.main}})}),{name:"MuiPickersClockPointer"})(kg),Mg={x:130,y:130},Yg=Mg.x-Mg.x,wg=0-Mg.y,Tg=function(g,I,e){var t=I-Mg.x,C=e-Mg.y,Q=Math.atan2(Yg,wg)-Math.atan2(t,C),F=57.29577951308232*Q;F=Math.round(F/g)*g,F%=360;var B=Math.floor(F/g)||0,n=Math.pow(t,2)+Math.pow(C,2);return{value:B,distance:Math.sqrt(n)}},zg=function(g,I,e){var t=Tg(30,g,I),C=t.value,Q=t.distance;return C=C||12,e?C%=12:Q<90&&(C+=12,C%=24),C},Og=function(g,I){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,t=6*e,C=Tg(t,g,I),Q=C.value;return Q=Q*e%60},Kg=function(g){function I(){var g,e;j(this,I);for(var t=arguments.length,C=new Array(t),Q=0;Q<t;Q++)C[Q]=arguments[Q];return(e=$(this,(g=gg(I)).call.apply(g,[this].concat(C)))).isMoving=!1,e.handleTouchMove=function(g){e.isMoving=!0,e.setTime(g)},e.handleTouchEnd=function(g){e.isMoving&&(e.setTime(g,!0),e.isMoving=!1)},e.handleMove=function(g){g.preventDefault(),g.stopPropagation(),("undefined"===typeof g.buttons?1===g.nativeEvent.which:1===g.buttons)&&e.setTime(g.nativeEvent,!1)},e.handleMouseUp=function(g){e.isMoving&&(e.isMoving=!1),e.setTime(g.nativeEvent,!0)},e.hasSelected=function(){var g=e.props,I=g.type,t=g.value;return I===vg.HOURS||t%5===0},e}return eg(I,g),_(I,[{key:"setTime",value:function(g){var I=arguments.length>1&&void 0!==arguments[1]&&arguments[1],e=g.offsetX,t=g.offsetY;if("undefined"===typeof e){var C=g.target.getBoundingClientRect();e=g.changedTouches[0].clientX-C.left,t=g.changedTouches[0].clientY-C.top}var Q=this.props.type===vg.SECONDS||this.props.type===vg.MINUTES?Og(e,t,this.props.minutesStep):zg(e,t,Boolean(this.props.ampm));this.props.onChange(Q,I)}},{key:"render",value:function(){var g=this.props,I=g.classes,e=g.value,t=g.children,Q=g.type,F=!g.ampm&&Q===vg.HOURS&&(e<1||e>12);return Object(C.createElement)("div",{className:I.container},Object(C.createElement)("div",{className:I.clock},Object(C.createElement)("div",{role:"menu",tabIndex:-1,className:I.squareMask,onTouchMove:this.handleTouchMove,onTouchEnd:this.handleTouchEnd,onMouseUp:this.handleMouseUp,onMouseMove:this.handleMove}),Object(C.createElement)("div",{className:I.pin}),Object(C.createElement)(Hg,{type:Q,value:e,isInner:F,hasSelected:this.hasSelected()}),t))}}]),I}(C.Component);Kg.defaultProps={ampm:!1,minutesStep:1};var jg=Object(r.a)((function(g){return Object(a.a)({container:{display:"flex",justifyContent:"center",alignItems:"flex-end",margin:"".concat(g.spacing(2),"px 0 ").concat(g.spacing(1),"px")},clock:{backgroundColor:"rgba(0,0,0,.07)",borderRadius:"50%",height:260,width:260,position:"relative",pointerEvents:"none"},squareMask:{width:"100%",height:"100%",position:"absolute",pointerEvents:"auto",outline:"none",touchActions:"none",userSelect:"none","&:active":{cursor:"move"}},pin:{width:6,height:6,borderRadius:"50%",backgroundColor:g.palette.primary.main,position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)"}})}),{name:"MuiPickersClock"})(Kg),Pg={0:[0,40],1:[55,19.6],2:[94.4,59.5],3:[109,114],4:[94.4,168.5],5:[54.5,208.4],6:[0,223],7:[-54.5,208.4],8:[-94.4,168.5],9:[-109,114],10:[-94.4,59.5],11:[-54.5,19.6],12:[0,5],13:[36.9,49.9],14:[64,77],15:[74,114],16:[64,151],17:[37,178],18:[0,188],19:[-37,178],20:[-64,151],21:[-74,114],22:[-64,77],23:[-37,50]},_g=Object(c.a)((function(g){var I=g.spacing(4);return{clockNumber:{width:I,height:32,userSelect:"none",position:"absolute",left:"calc((100% - ".concat("number"===typeof I?"".concat(I,"px"):I,") / 2)"),display:"inline-flex",justifyContent:"center",alignItems:"center",borderRadius:"50%",color:"light"===g.palette.type?g.palette.text.primary:g.palette.text.hint},clockNumberSelected:{color:g.palette.primary.contrastText}}}),{name:"MuiPickersClockNumber"}),qg=function(g){var I=g.selected,e=g.label,t=g.index,Q=g.isInner,F=_g(),B=U(F.clockNumber,I&&F.clockNumberSelected),n=Object(C.useMemo)((function(){var g=Pg[t];return{transform:"translate(".concat(g[0],"px, ").concat(g[1],"px")}}),[t]);return Object(C.createElement)(A.a,{component:"span",className:B,variant:Q?"body2":"body1",style:n,children:e})},$g=function(g){for(var I=g.ampm,e=g.utils,t=g.date,Q=e.getHours(t),F=[],B=I?12:23,n=function(g){return I?12===g?12===Q||0===Q:Q===g||Q-12===g:Q===g},U=I?1:0;U<=B;U+=1){var i=U.toString();0===U&&(i="00");var c={index:U,label:e.formatNumber(i),selected:n(U),isInner:!I&&(0===U||U>12)};F.push(Object(C.createElement)(qg,s({key:U},c)))}return F},gI=function(g){var I=g.value,e=g.utils.formatNumber;return[Object(C.createElement)(qg,{label:e("00"),selected:0===I,index:12,key:12}),Object(C.createElement)(qg,{label:e("05"),selected:5===I,index:1,key:1}),Object(C.createElement)(qg,{label:e("10"),selected:10===I,index:2,key:2}),Object(C.createElement)(qg,{label:e("15"),selected:15===I,index:3,key:3}),Object(C.createElement)(qg,{label:e("20"),selected:20===I,index:4,key:4}),Object(C.createElement)(qg,{label:e("25"),selected:25===I,index:5,key:5}),Object(C.createElement)(qg,{label:e("30"),selected:30===I,index:6,key:6}),Object(C.createElement)(qg,{label:e("35"),selected:35===I,index:7,key:7}),Object(C.createElement)(qg,{label:e("40"),selected:40===I,index:8,key:8}),Object(C.createElement)(qg,{label:e("45"),selected:45===I,index:9,key:9}),Object(C.createElement)(qg,{label:e("50"),selected:50===I,index:10,key:10}),Object(C.createElement)(qg,{label:e("55"),selected:55===I,index:11,key:11})]},II=function(g){var I=g.type,e=g.onHourChange,t=g.onMinutesChange,Q=g.onSecondsChange,F=g.ampm,n=g.date,U=g.minutesStep,i=Object(B.b)(),c=Object(C.useMemo)((function(){switch(I){case vg.HOURS:return{value:i.getHours(n),children:$g({date:n,utils:i,ampm:Boolean(F)}),onChange:function(g,I){var t=function(g,I){return I.getHours(g)>=12?"pm":"am"}(n,i),C=function(g,I,e,t){if(e&&(t.getHours(g)>=12?"pm":"am")!==I){var C="am"===I?t.getHours(g)-12:t.getHours(g)+12;return t.setHours(g,C)}return g}(i.setHours(n,g),t,Boolean(F),i);e(C,I)}};case vg.MINUTES:var g=i.getMinutes(n);return{value:g,children:gI({value:g,utils:i}),onChange:function(g,I){var e=i.setMinutes(n,g);t(e,I)}};case vg.SECONDS:var C=i.getSeconds(n);return{value:C,children:gI({value:C,utils:i}),onChange:function(g,I){var e=i.setSeconds(n,g);Q(e,I)}};default:throw new Error("You must provide the type for TimePickerView")}}),[F,n,e,t,Q,I,i]);return Object(C.createElement)(jg,s({type:I,ampm:F,minutesStep:U},c))};II.displayName="TimePickerView",II.defaultProps={ampm:!0,minutesStep:1};Object(C.memo)(II);function eI(g,I){var e=Object.keys(g);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(g);I&&(t=t.filter((function(I){return Object.getOwnPropertyDescriptor(g,I).enumerable}))),e.push.apply(e,t)}return e}Object(F.oneOfType)([F.object,F.string,F.number,Object(F.instanceOf)(Date)]),Object(F.oneOf)(["year","month","day"]);var tI={minDate:new Date("1900-01-01"),maxDate:new Date("2100-01-01"),invalidDateMessage:"Invalid Date Format",minDateMessage:"Date should not be before minimal date",maxDateMessage:"Date should not be after maximal date",allowKeyboardControl:!0};!function(g){for(var I=1;I<arguments.length;I++){var e=null!=arguments[I]?arguments[I]:{};I%2?eI(e,!0).forEach((function(I){t(g,I,e[I])})):Object.getOwnPropertyDescriptors?Object.defineProperties(g,Object.getOwnPropertyDescriptors(e)):eI(e).forEach((function(I){Object.defineProperty(g,I,Object.getOwnPropertyDescriptor(e,I))}))}}({},{ampm:!0,invalidDateMessage:"Invalid Time Format"},{},tI,{showTabs:!0});var CI=Object(c.a)((function(g){return{root:{height:40,display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer",outline:"none","&:focus":{color:g.palette.primary.main,fontWeight:g.typography.fontWeightMedium}},yearSelected:{margin:"10px 0",fontWeight:g.typography.fontWeightMedium},yearDisabled:{pointerEvents:"none",color:g.palette.text.hint}}}),{name:"MuiPickersYear"}),QI=function(g){var I=g.onSelect,e=g.forwardedRef,t=g.value,Q=g.selected,F=g.disabled,B=g.children,n=i(g,["onSelect","forwardedRef","value","selected","disabled","children"]),c=CI(),l=Object(C.useCallback)((function(){return I(t)}),[I,t]);return Object(C.createElement)(A.a,s({role:"button",component:"div",tabIndex:F?-1:0,onClick:l,onKeyPress:l,color:Q?"primary":void 0,variant:Q?"h5":"subtitle1",children:B,ref:e,className:U(c.root,Q&&c.yearSelected,F&&c.yearDisabled)},n))};QI.displayName="Year";var FI=Object(C.forwardRef)((function(g,I){return Object(C.createElement)(QI,s({},g,{forwardedRef:I}))})),BI=Object(c.a)({container:{height:300,overflowY:"auto"}},{name:"MuiPickersYearSelection"}),nI=function(g){var I=g.date,e=g.onChange,t=g.onYearChange,Q=g.minDate,F=g.maxDate,n=g.disablePast,U=g.disableFuture,s=g.animateYearScrolling,i=Object(B.b)(),c=BI(),A=Object(C.useContext)(v),l=Object(C.useRef)(null);Object(C.useEffect)((function(){if(l.current&&l.current.scrollIntoView)try{l.current.scrollIntoView({block:"static"===A?"nearest":"center",behavior:s?"smooth":"auto"})}catch(g){l.current.scrollIntoView()}}),[]);var a=i.getYear(I),r=Object(C.useCallback)((function(g){var C=i.setYear(I,g);t&&t(C),e(C,!0)}),[I,e,t,i]);return Object(C.createElement)("div",{className:c.container},i.getYearRange(Q,F).map((function(g){var I=i.getYear(g),e=I===a;return Object(C.createElement)(FI,{key:i.getYearText(g),selected:e,value:I,onSelect:r,ref:e?l:void 0,disabled:Boolean(n&&i.isBeforeYear(g,i.date())||U&&i.isAfterYear(g,i.date()))},i.getYearText(g))})))},UI=Object(c.a)((function(g){return{root:{flex:"1 0 33.33%",display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer",outline:"none",height:75,transition:g.transitions.create("font-size",{duration:"100ms"}),"&:focus":{color:g.palette.primary.main,fontWeight:g.typography.fontWeightMedium}},monthSelected:{color:g.palette.primary.main,fontWeight:g.typography.fontWeightMedium},monthDisabled:{pointerEvents:"none",color:g.palette.text.hint}}}),{name:"MuiPickersMonth"}),sI=function(g){var I=g.selected,e=g.onSelect,t=g.disabled,Q=g.value,F=g.children,B=i(g,["selected","onSelect","disabled","value","children"]),n=UI(),c=Object(C.useCallback)((function(){e(Q)}),[e,Q]);return Object(C.createElement)(A.a,s({role:"button",component:"div",className:U(n.root,I&&n.monthSelected,t&&n.monthDisabled),tabIndex:t?-1:0,onClick:c,onKeyPress:c,color:I?"primary":void 0,variant:I?"h5":"subtitle1",children:F},B))};sI.displayName="Month";var iI=Object(c.a)({container:{width:310,display:"flex",flexWrap:"wrap",alignContent:"stretch"}},{name:"MuiPickersMonthSelection"}),cI=function(g){var I=g.disablePast,e=g.disableFuture,t=g.minDate,Q=g.maxDate,F=g.date,n=g.onMonthChange,U=g.onChange,s=Object(B.b)(),i=iI(),c=s.getMonth(F),A=function(g){var C=s.date(),F=s.date(t),B=s.date(Q),n=s.startOfMonth(I&&s.isAfter(C,F)?C:F),U=s.startOfMonth(e&&s.isBefore(C,B)?C:B),i=s.isBefore(g,n),c=s.isAfter(g,U);return i||c},l=Object(C.useCallback)((function(g){var I=s.setMonth(F,g);U(I,!0),n&&n(I)}),[F,U,n,s]);return Object(C.createElement)("div",{className:i.container},s.getMonthArray(F).map((function(g){var I=s.getMonth(g),e=s.format(g,"MMM");return Object(C.createElement)(sI,{key:e,value:I,selected:I===c,onSelect:l,disabled:A(g)},e)})))},AI=function(){return"undefined"===typeof window?"portrait":window.screen&&window.screen.orientation&&window.screen.orientation.angle?90===Math.abs(window.screen.orientation.angle)?"landscape":"portrait":window.orientation&&90===Math.abs(Number(window.orientation))?"landscape":"portrait"};function lI(g,I){var e=Object.keys(g);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(g);I&&(t=t.filter((function(I){return Object.getOwnPropertyDescriptor(g,I).enumerable}))),e.push.apply(e,t)}return e}var aI={year:nI,month:cI,date:Jg,hours:II,minutes:II,seconds:II},rI=Object(c.a)({container:{display:"flex",flexDirection:"column"},containerLandscape:{flexDirection:"row"},pickerView:{overflowX:"hidden",minHeight:305,minWidth:310,maxWidth:325,display:"flex",flexDirection:"column",justifyContent:"center"},pickerViewLandscape:{padding:"0 8px"}},{name:"MuiPickersBasePicker"}),oI=function(g){var I=g.date,e=g.views,t=g.disableToolbar,Q=g.onChange,F=g.openTo,n=g.minDate,c=g.maxDate,A=g.ToolbarComponent,l=g.orientation,a=i(g,["date","views","disableToolbar","onChange","openTo","minDate","maxDate","ToolbarComponent","orientation"]),r=Object(B.b)(),o=rI(),d=function(g){var I=O(Object(C.useState)(AI()),2),e=I[0],t=I[1],Q=Object(C.useCallback)((function(){return t(AI())}),[]);return N((function(){return window.addEventListener("orientationchange",Q),function(){return window.removeEventListener("orientationchange",Q)}}),[Q]),"landscape"===(g||e)}(l),u=function(g,I,e){var t=O(Object(C.useState)(I&&L(g,I)?I:g[0]),2),Q=t[0],F=t[1];return{handleChangeAndOpenNext:Object(C.useCallback)((function(I,t){var C=g[g.indexOf(Q)+1];if(t&&C)return e(I,!1),void F(C);e(I,Boolean(t))}),[e,Q,g]),openView:Q,setOpenView:F}}(e,F,Q),y=u.openView,b=u.setOpenView,Z=u.handleChangeAndOpenNext,m=Object(C.useMemo)((function(){return r.date(n)}),[n,r]),x=Object(C.useMemo)((function(){return r.date(c)}),[c,r]);return Object(C.createElement)("div",{className:U(o.container,d&&o.containerLandscape)},!t&&Object(C.createElement)(A,s({},a,{views:e,isLandscape:d,date:I,onChange:Q,setOpenView:b,openView:y})),Object(C.createElement)("div",{className:U(o.pickerView,d&&o.pickerViewLandscape)},"year"===y&&Object(C.createElement)(nI,s({},a,{date:I,onChange:Z,minDate:m,maxDate:x})),"month"===y&&Object(C.createElement)(cI,s({},a,{date:I,onChange:Z,minDate:m,maxDate:x})),"date"===y&&Object(C.createElement)(Jg,s({},a,{date:I,onChange:Z,minDate:m,maxDate:x})),("hours"===y||"minutes"===y||"seconds"===y)&&Object(C.createElement)(II,s({},a,{date:I,type:y,onHourChange:Z,onMinutesChange:Z,onSecondsChange:Z}))))};oI.defaultProps=function(g){for(var I=1;I<arguments.length;I++){var e=null!=arguments[I]?arguments[I]:{};I%2?lI(e,!0).forEach((function(I){t(g,I,e[I])})):Object.getOwnPropertyDescriptors?Object.defineProperties(g,Object.getOwnPropertyDescriptors(e)):lI(e).forEach((function(I){Object.defineProperty(g,I,Object.getOwnPropertyDescriptor(e,I))}))}return g}({},tI,{views:Object.keys(aI)});var dI=Object(c.a)((function(g){var I="light"===g.palette.type?g.palette.primary.contrastText:g.palette.getContrastText(g.palette.background.default);return{toolbarTxt:{color:Object(l.d)(I,.54)},toolbarBtnSelected:{color:I}}}),{name:"MuiPickersToolbarText"}),uI=function(g){var I=g.selected,e=g.label,t=g.className,Q=void 0===t?null:t,F=i(g,["selected","label","className"]),B=dI();return Object(C.createElement)(A.a,s({children:e,className:U(B.toolbarTxt,Q,I&&B.toolbarBtnSelected)},F))},yI=function(g){var I=g.classes,e=g.className,t=void 0===e?null:e,Q=g.label,F=g.selected,B=g.variant,n=g.align,c=g.typographyClassName,A=i(g,["classes","className","label","selected","variant","align","typographyClassName"]);return Object(C.createElement)(o.a,s({variant:"text",className:U(I.toolbarBtn,t)},A),Object(C.createElement)(uI,{align:n,className:c,variant:B,label:Q,selected:F}))};yI.defaultProps={className:""};var bI=Object(a.a)({toolbarBtn:{padding:0,minWidth:"16px",textTransform:"none"}}),ZI=Object(r.a)(bI,{name:"MuiPickersToolbarButton"})(yI),mI=Object(c.a)((function(g){return{toolbar:{display:"flex",flexDirection:"row",alignItems:"center",justifyContent:"center",height:100,backgroundColor:"light"===g.palette.type?g.palette.primary.main:g.palette.background.default},toolbarLandscape:{height:"auto",maxWidth:150,padding:8,justifyContent:"flex-start"}}}),{name:"MuiPickersToolbar"}),xI=function(g){var I=g.children,e=g.isLandscape,t=g.className,Q=void 0===t?null:t,F=i(g,["children","isLandscape","className"]),B=mI();return Object(C.createElement)(m,s({className:U(B.toolbar,Q,e&&B.toolbarLandscape)},F),I)};function RI(g,I){var e=Object.keys(g);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(g);I&&(t=t.filter((function(I){return Object.getOwnPropertyDescriptor(g,I).enumerable}))),e.push.apply(e,t)}return e}var SI=function(g){var I=g.inputValue,e=g.inputVariant,Q=g.validationError,F=g.InputProps,B=g.openPicker,n=g.TextFieldComponent,U=void 0===n?H.a:n,c=i(g,["inputValue","inputVariant","validationError","InputProps","openPicker","TextFieldComponent"]),A=Object(C.useMemo)((function(){return function(g){for(var I=1;I<arguments.length;I++){var e=null!=arguments[I]?arguments[I]:{};I%2?RI(e,!0).forEach((function(I){t(g,I,e[I])})):Object.getOwnPropertyDescriptors?Object.defineProperties(g,Object.getOwnPropertyDescriptors(e)):RI(e).forEach((function(I){Object.defineProperty(g,I,Object.getOwnPropertyDescriptor(e,I))}))}return g}({},F,{readOnly:!0})}),[F]);return Object(C.createElement)(U,s({error:Boolean(Q),helperText:Q},c,{onClick:B,value:I,variant:e,InputProps:A,onKeyDown:function(g){32===g.keyCode&&(g.stopPropagation(),B())}}))};SI.displayName="PureDateInput";var GI=function(g,I,e,t,C){var Q=C.invalidLabel,F=C.emptyLabel,B=C.labelFunc,n=e.date(g);return B?B(t?null:n,Q):t?F||"":e.isValid(n)?e.format(n,I):Q},LI=function(g,I,e){return I?e:g.endOfDay(e)},VI=function(g,I,e){return I?e:g.startOfDay(e)};function hI(g,I){var e=Object.keys(g);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(g);I&&(t=t.filter((function(I){return Object.getOwnPropertyDescriptor(g,I).enumerable}))),e.push.apply(e,t)}return e}function DI(g){for(var I=1;I<arguments.length;I++){var e=null!=arguments[I]?arguments[I]:{};I%2?hI(e,!0).forEach((function(I){t(g,I,e[I])})):Object.getOwnPropertyDescriptors?Object.defineProperties(g,Object.getOwnPropertyDescriptors(e)):hI(e).forEach((function(I){Object.defineProperty(g,I,Object.getOwnPropertyDescriptor(e,I))}))}return g}var pI=function(g){var I=g.inputValue,e=g.inputVariant,Q=g.validationError,F=g.KeyboardButtonProps,B=g.InputAdornmentProps,n=g.openPicker,U=g.onChange,c=g.InputProps,A=g.mask,l=g.maskChar,a=void 0===l?"_":l,r=g.refuse,o=void 0===r?/[^\d]+/gi:r,d=g.format,u=g.keyboardIcon,y=g.disabled,b=g.rifmFormatter,Z=g.TextFieldComponent,m=void 0===Z?H.a:Z,x=i(g,["inputValue","inputVariant","validationError","KeyboardButtonProps","InputAdornmentProps","openPicker","onChange","InputProps","mask","maskChar","refuse","format","keyboardIcon","disabled","rifmFormatter","TextFieldComponent"]),R=A||function(g,I){return g.replace(/[a-z]/gi,I)}(d,a),S=Object(C.useMemo)((function(){return function(g,I,e){return function(t){var C="",Q=t.replace(e,"");if(""===Q)return Q;for(var F=0,B=0;F<g.length;){var n=g[F];if(n===I&&B<Q.length)C+=Q[B],B+=1;else C+=n;F+=1}return C}}(R,a,o)}),[R,a,o]),G=B&&B.position?B.position:"end";return Object(C.createElement)(T,{key:R,value:I,onChange:function(g){U(""===g||g===R?null:g)},refuse:o,format:b||S},(function(g){var I=g.onChange,U=g.value;return Object(C.createElement)(m,s({disabled:y,error:Boolean(Q),helperText:Q},x,{value:U,onChange:I,variant:e,InputProps:DI({},c,t({},"".concat(G,"Adornment"),Object(C.createElement)(Y.a,s({position:G},B),Object(C.createElement)(M.a,s({disabled:y},F,{onClick:n}),u))))}))}))};pI.defaultProps={keyboardIcon:Object(C.createElement)((function(g){return Q.a.createElement(z.a,g,Q.a.createElement("path",{d:"M17 12h-5v5h5v-5zM16 1v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2h-1V1h-2zm3 18H5V8h14v11z"}),Q.a.createElement("path",{fill:"none",d:"M0 0h24v24H0z"}))}),null)};function EI(g,I){return{date:function(g,I){var e=I.value,t=I.initialFocusedDate,Q=Object(C.useRef)(g.date()),F=g.date(e||t||Q.current);return F&&g.isValid(F)?F:Q.current}(Object(B.b)(),g),format:g.format||I.getDefaultFormat()}}function NI(g,I){var e=g.autoOk,t=g.disabled,Q=g.readOnly,F=g.onAccept,n=g.onChange,U=g.onError,s=g.value,i=g.variant,c=Object(B.b)(),A=function(g){var I=g.open,e=g.onOpen,t=g.onClose,Q=null;if(void 0===I||null===I){var F=O(Object(C.useState)(!1),2);I=F[0],Q=F[1]}return{isOpen:I,setIsOpen:Object(C.useCallback)((function(g){return Q&&Q(g),g?e&&e():t&&t()}),[e,t,Q])}}(g),l=A.isOpen,a=A.setIsOpen,r=EI(g,I),o=r.date,d=r.format,u=O(Object(C.useState)(o),2),y=u[0],b=u[1];Object(C.useEffect)((function(){l||c.isEqual(y,o)||b(o)}),[o,l,y,c]);var Z=Object(C.useCallback)((function(g){n(g),F&&F(g),a(!1)}),[F,n,a]),m=Object(C.useMemo)((function(){return{format:d,open:l,onClear:function(){return Z(null)},onAccept:function(){return Z(y)},onSetToday:function(){return b(c.date())},onDismiss:function(){a(!1)}}}),[Z,d,l,y,a,c]),x=Object(C.useMemo)((function(){return{date:y,onChange:function(g){var I=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];b(g),I&&e?Z(g):"inline"!==i&&"static"!==i||(n(g),F&&F(g))}}}),[Z,e,F,n,y,i]),R=function(g,I,e){var t=e.maxDate,C=e.minDate,Q=e.disablePast,F=e.disableFuture,B=e.maxDateMessage,n=e.minDateMessage,U=e.invalidDateMessage,s=e.strictCompareDates,i=I.date(g);return null===g?"":I.isValid(g)?t&&I.isAfter(i,LI(I,!!s,I.date(t)))||F&&I.isAfter(i,LI(I,!!s,I.date()))?B:C&&I.isBefore(i,VI(I,!!s,I.date(C)))||Q&&I.isBefore(i,VI(I,!!s,I.date()))?n:"":U}(s,c,g);Object(C.useEffect)((function(){U&&U(R,s)}),[U,R,s]);var S=GI(o,d,c,null===s,g),G={pickerProps:x,inputProps:Object(C.useMemo)((function(){return{inputValue:S,validationError:R,openPicker:function(){return!Q&&!t&&a(!0)}}}),[t,S,Q,a,R]),wrapperProps:m};return Object(C.useDebugValue)(G),G}function WI(g,I){var e=Object.keys(g);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(g);I&&(t=t.filter((function(I){return Object.getOwnPropertyDescriptor(g,I).enumerable}))),e.push.apply(e,t)}return e}function fI(g){for(var I=1;I<arguments.length;I++){var e=null!=arguments[I]?arguments[I]:{};I%2?WI(e,!0).forEach((function(I){t(g,I,e[I])})):Object.getOwnPropertyDescriptors?Object.defineProperties(g,Object.getOwnPropertyDescriptors(e)):WI(e).forEach((function(I){Object.defineProperty(g,I,Object.getOwnPropertyDescriptor(e,I))}))}return g}function XI(g){var I=g.Input,e=g.useState,t=g.useOptions,Q=g.getCustomProps,F=g.DefaultToolbarComponent;return function(g){var B=g.allowKeyboardControl,n=g.ampm,U=g.animateYearScrolling,c=(g.autoOk,g.dateRangeIcon),A=g.disableFuture,l=g.disablePast,a=g.disableToolbar,r=(g.emptyLabel,g.format,g.forwardedRef,g.hideTabs),o=(g.initialFocusedDate,g.invalidDateMessage,g.invalidLabel,g.labelFunc,g.leftArrowButtonProps),d=g.leftArrowIcon,u=g.loadingIndicator,y=g.maxDate,b=(g.maxDateMessage,g.minDate),Z=(g.minDateMessage,g.minutesStep),m=(g.onAccept,g.onChange,g.onClose,g.onMonthChange),x=(g.onOpen,g.onYearChange),R=g.openTo,S=g.orientation,G=g.renderDay,L=g.rightArrowButtonProps,V=g.rightArrowIcon,h=g.shouldDisableDate,D=g.strictCompareDates,p=g.timeIcon,E=g.ToolbarComponent,N=void 0===E?F:E,W=(g.value,g.variant),f=g.views,X=i(g,["allowKeyboardControl","ampm","animateYearScrolling","autoOk","dateRangeIcon","disableFuture","disablePast","disableToolbar","emptyLabel","format","forwardedRef","hideTabs","initialFocusedDate","invalidDateMessage","invalidLabel","labelFunc","leftArrowButtonProps","leftArrowIcon","loadingIndicator","maxDate","maxDateMessage","minDate","minDateMessage","minutesStep","onAccept","onChange","onClose","onMonthChange","onOpen","onYearChange","openTo","orientation","renderDay","rightArrowButtonProps","rightArrowIcon","shouldDisableDate","strictCompareDates","timeIcon","ToolbarComponent","value","variant","views"]),J=Q?Q(g):{},v=t(g),H=e(g,v),M=H.pickerProps,Y=H.inputProps,w=H.wrapperProps;return Object(C.createElement)(k,s({variant:W,InputComponent:I,DateInputProps:Y},J,w,X),Object(C.createElement)(oI,s({},M,{allowKeyboardControl:B,ampm:n,animateYearScrolling:U,dateRangeIcon:c,disableFuture:A,disablePast:l,disableToolbar:a,hideTabs:r,leftArrowButtonProps:o,leftArrowIcon:d,loadingIndicator:u,maxDate:y,minDate:b,minutesStep:Z,onMonthChange:m,onYearChange:x,openTo:R,orientation:S,renderDay:G,rightArrowButtonProps:L,rightArrowIcon:V,shouldDisableDate:h,strictCompareDates:D,timeIcon:p,ToolbarComponent:N,views:f})))}}var JI=Object(c.a)({toolbar:{flexDirection:"column",alignItems:"flex-start"},toolbarLandscape:{padding:16},dateLandscape:{marginRight:16}},{name:"MuiPickersDatePickerRoot"}),vI=function(g){var I=g.date,e=g.views,t=g.setOpenView,Q=g.isLandscape,F=g.openView,n=Object(B.b)(),s=JI(),i=Object(C.useMemo)((function(){return Lg(e)}),[e]),c=Object(C.useMemo)((function(){return Vg(e)}),[e]);return Object(C.createElement)(xI,{isLandscape:Q,className:U(!i&&s.toolbar,Q&&s.toolbarLandscape)},Object(C.createElement)(ZI,{variant:i?"h3":"subtitle1",onClick:function(){return t("year")},selected:"year"===F,label:n.getYearText(I)}),!i&&!c&&Object(C.createElement)(ZI,{variant:"h4",selected:"date"===F,onClick:function(){return t("date")},align:Q?"left":"center",label:n.getDatePickerHeaderText(I),className:U(Q&&s.dateLandscape)}),c&&Object(C.createElement)(ZI,{variant:"h4",onClick:function(){return t("month")},selected:"month"===F,label:n.getMonthText(I)}))};function kI(g,I){var e=Object.keys(g);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(g);I&&(t=t.filter((function(I){return Object.getOwnPropertyDescriptor(g,I).enumerable}))),e.push.apply(e,t)}return e}var HI=function(g){for(var I=1;I<arguments.length;I++){var e=null!=arguments[I]?arguments[I]:{};I%2?kI(e,!0).forEach((function(I){t(g,I,e[I])})):Object.getOwnPropertyDescriptors?Object.defineProperties(g,Object.getOwnPropertyDescriptors(e)):kI(e).forEach((function(I){Object.defineProperty(g,I,Object.getOwnPropertyDescriptor(e,I))}))}return g}({},tI,{openTo:"date",views:["year","date"]});function MI(g){var I=Object(B.b)();return{getDefaultFormat:function(){return function(g,I){return Lg(g)?I.yearFormat:Vg(g)?I.yearMonthFormat:I.dateFormat}(g.views,I)}}}var YI=XI({useOptions:MI,Input:SI,useState:NI,DefaultToolbarComponent:vI}),wI=XI({useOptions:MI,Input:pI,useState:function(g,I){var e=g.format,t=void 0===e?I.getDefaultFormat():e,Q=g.inputValue,F=g.onChange,n=g.value,U=Object(B.b)(),s=GI(n,t,U,null===n,g),i=O(Object(C.useState)(s),2),c=i[0],A=i[1],l=Q?function(g,I,e){try{return I.parse(g,e)}catch(t){return null}}(Q,U,t):n;Object(C.useEffect)((function(){(null===n||U.isValid(n))&&A(s)}),[s,A,U,n]);var a=NI(fI({},g,{value:l,onChange:Object(C.useCallback)((function(g){F(g,null===g?null:U.format(g,t))}),[t,F,U])}),I),r=a.inputProps,o=a.wrapperProps,d=a.pickerProps;return{inputProps:Object(C.useMemo)((function(){return fI({},r,{format:o.format,inputValue:Q||c,onChange:function(g){A(g||"");var I=null===g?null:U.parse(g,o.format);F(I,g)}})}),[r,c,Q,F,U,o.format]),wrapperProps:o,pickerProps:d}},DefaultToolbarComponent:vI});YI.defaultProps=HI,wI.defaultProps=HI},function(g,I,e){"use strict";e.d(I,"a",(function(){return mg}));var t={};e.r(t),e.d(t,"FunctionToString",(function(){return F})),e.d(t,"InboundFilters",(function(){return A}));var C,Q=e(11),F=function(){function g(){this.name=g.id}return g.prototype.setupOnce=function(){C=Function.prototype.toString,Function.prototype.toString=function(){for(var g=[],I=0;I<arguments.length;I++)g[I]=arguments[I];var e=this.__sentry_original__||this;return C.apply(e,g)}},g.id="FunctionToString",g}(),B=e(466),n=e(272),U=e(66),s=e(108),i=e(267),c=[/^Script error\.?$/,/^Javascript error: Script error\.? on line 0$/],A=function(){function g(I){void 0===I&&(I={}),this._options=I,this.name=g.id}return g.prototype.setupOnce=function(){Object(B.b)((function(I){var e=Object(n.b)();if(!e)return I;var t=e.getIntegration(g);if(t){var C=e.getClient(),Q=C?C.getOptions():{},F="function"===typeof t._mergeOptions?t._mergeOptions(Q):{};return"function"!==typeof t._shouldDropEvent?I:t._shouldDropEvent(I,F)?null:I}return I}))},g.prototype._shouldDropEvent=function(g,I){return this._isSentryError(g,I)?(U.a.warn("Event dropped due to being internal Sentry Error.\nEvent: "+Object(s.d)(g)),!0):this._isIgnoredError(g,I)?(U.a.warn("Event dropped due to being matched by `ignoreErrors` option.\nEvent: "+Object(s.d)(g)),!0):this._isDeniedUrl(g,I)?(U.a.warn("Event dropped due to being matched by `denyUrls` option.\nEvent: "+Object(s.d)(g)+".\nUrl: "+this._getEventFilterUrl(g)),!0):!this._isAllowedUrl(g,I)&&(U.a.warn("Event dropped due to not being matched by `allowUrls` option.\nEvent: "+Object(s.d)(g)+".\nUrl: "+this._getEventFilterUrl(g)),!0)},g.prototype._isSentryError=function(g,I){if(!I.ignoreInternal)return!1;try{return g&&g.exception&&g.exception.values&&g.exception.values[0]&&"SentryError"===g.exception.values[0].type||!1}catch(e){return!1}},g.prototype._isIgnoredError=function(g,I){return!(!I.ignoreErrors||!I.ignoreErrors.length)&&this._getPossibleEventMessages(g).some((function(g){return I.ignoreErrors.some((function(I){return Object(i.a)(g,I)}))}))},g.prototype._isDeniedUrl=function(g,I){if(!I.denyUrls||!I.denyUrls.length)return!1;var e=this._getEventFilterUrl(g);return!!e&&I.denyUrls.some((function(g){return Object(i.a)(e,g)}))},g.prototype._isAllowedUrl=function(g,I){if(!I.allowUrls||!I.allowUrls.length)return!0;var e=this._getEventFilterUrl(g);return!e||I.allowUrls.some((function(g){return Object(i.a)(e,g)}))},g.prototype._mergeOptions=function(g){return void 0===g&&(g={}),{allowUrls:Object(Q.e)(this._options.whitelistUrls||[],this._options.allowUrls||[],g.whitelistUrls||[],g.allowUrls||[]),denyUrls:Object(Q.e)(this._options.blacklistUrls||[],this._options.denyUrls||[],g.blacklistUrls||[],g.denyUrls||[]),ignoreErrors:Object(Q.e)(this._options.ignoreErrors||[],g.ignoreErrors||[],c),ignoreInternal:"undefined"===typeof this._options.ignoreInternal||this._options.ignoreInternal}},g.prototype._getPossibleEventMessages=function(g){if(g.message)return[g.message];if(g.exception)try{var I=g.exception.values&&g.exception.values[0]||{},e=I.type,t=void 0===e?"":e,C=I.value,Q=void 0===C?"":C;return[""+Q,t+": "+Q]}catch(F){return U.a.error("Cannot extract message for event "+Object(s.d)(g)),[]}return[]},g.prototype._getEventFilterUrl=function(g){try{if(g.stacktrace){var I=g.stacktrace.frames;return I&&I[I.length-1].filename||null}if(g.exception){var e=g.exception.values&&g.exception.values[0].stacktrace&&g.exception.values[0].stacktrace.frames;return e&&e[e.length-1].filename||null}return null}catch(t){return U.a.error("Cannot extract url for event "+Object(s.d)(g)),null}},g.id="InboundFilters",g}();var l=e(371),a=e(927),r=e(1749),o=Object.setPrototypeOf||({__proto__:[]}instanceof Array?function(g,I){return g.__proto__=I,g}:function(g,I){for(var e in I)g.hasOwnProperty(e)||(g[e]=I[e]);return g});var d=function(g){function I(I){var e=this.constructor,t=g.call(this,I)||this;return t.message=I,t.name=e.prototype.constructor.name,o(t,e.prototype),t}return Object(Q.b)(I,g),I}(Error),u=/^(?:(\w+):)\/\/(?:(\w+)(?::(\w+))?@)([\w.-]+)(?::(\d+))?\/(.+)/,y=function(){function g(g){"string"===typeof g?this._fromString(g):this._fromComponents(g),this._validate()}return g.prototype.toString=function(g){void 0===g&&(g=!1);var I=this,e=I.host,t=I.path,C=I.pass,Q=I.port,F=I.projectId;return I.protocol+"://"+I.publicKey+(g&&C?":"+C:"")+"@"+e+(Q?":"+Q:"")+"/"+(t?t+"/":t)+F},g.prototype._fromString=function(g){var I=u.exec(g);if(!I)throw new d("Invalid Dsn");var e=Object(Q.c)(I.slice(1),6),t=e[0],C=e[1],F=e[2],B=void 0===F?"":F,n=e[3],U=e[4],s=void 0===U?"":U,i="",c=e[5],A=c.split("/");if(A.length>1&&(i=A.slice(0,-1).join("/"),c=A.pop()),c){var l=c.match(/^\d+/);l&&(c=l[0])}this._fromComponents({host:n,pass:B,path:i,projectId:c,port:s,protocol:t,publicKey:C})},g.prototype._fromComponents=function(g){"user"in g&&!("publicKey"in g)&&(g.publicKey=g.user),this.user=g.publicKey||"",this.protocol=g.protocol,this.publicKey=g.publicKey||"",this.pass=g.pass||"",this.host=g.host,this.port=g.port||"",this.path=g.path||"",this.projectId=g.projectId},g.prototype._validate=function(){var g=this;if(["protocol","publicKey","host","projectId"].forEach((function(I){if(!g[I])throw new d("Invalid Dsn: "+I+" missing")})),!this.projectId.match(/^\d+$/))throw new d("Invalid Dsn: Invalid projectId "+this.projectId);if("http"!==this.protocol&&"https"!==this.protocol)throw new d("Invalid Dsn: Invalid protocol "+this.protocol);if(this.port&&isNaN(parseInt(this.port,10)))throw new d("Invalid Dsn: Invalid port "+this.port)},g}(),b=e(75),Z=e(322),m=e(143),x=[];function R(g){return g.reduce((function(g,I){return g.every((function(g){return I.name!==g.name}))&&g.push(I),g}),[])}function S(g){var I={};return function(g){var I=g.defaultIntegrations&&Object(Q.e)(g.defaultIntegrations)||[],e=g.integrations,t=Object(Q.e)(R(I));Array.isArray(e)?t=Object(Q.e)(t.filter((function(g){return e.every((function(I){return I.name!==g.name}))})),R(e)):"function"===typeof e&&(t=e(t),t=Array.isArray(t)?t:[t]);var C=t.map((function(g){return g.name}));return-1!==C.indexOf("Debug")&&t.push.apply(t,Object(Q.e)(t.splice(C.indexOf("Debug"),1))),t}(g).forEach((function(g){I[g.name]=g,function(g){-1===x.indexOf(g.name)&&(g.setupOnce(B.b,n.b),x.push(g.name),U.a.log("Integration installed: "+g.name))}(g)})),I}var G,L=function(){function g(g,I){this._integrations={},this._numProcessing=0,this._backend=new g(I),this._options=I,I.dsn&&(this._dsn=new y(I.dsn))}return g.prototype.captureException=function(g,I,e){var t=this,C=I&&I.event_id;return this._process(this._getBackend().eventFromException(g,I).then((function(g){return t._captureEvent(g,I,e)})).then((function(g){C=g}))),C},g.prototype.captureMessage=function(g,I,e,t){var C=this,Q=e&&e.event_id,F=Object(b.i)(g)?this._getBackend().eventFromMessage(String(g),I,e):this._getBackend().eventFromException(g,e);return this._process(F.then((function(g){return C._captureEvent(g,e,t)})).then((function(g){Q=g}))),Q},g.prototype.captureEvent=function(g,I,e){var t=I&&I.event_id;return this._process(this._captureEvent(g,I,e).then((function(g){t=g}))),t},g.prototype.captureSession=function(g){this._isEnabled()?"string"!==typeof g.release?U.a.warn("Discarded session because of missing or non-string release"):(this._sendSession(g),g.update({init:!1})):U.a.warn("SDK not enabled, will not capture session.")},g.prototype.getDsn=function(){return this._dsn},g.prototype.getOptions=function(){return this._options},g.prototype.flush=function(g){var I=this;return this._isClientDoneProcessing(g).then((function(e){return I._getBackend().getTransport().close(g).then((function(g){return e&&g}))}))},g.prototype.close=function(g){var I=this;return this.flush(g).then((function(g){return I.getOptions().enabled=!1,g}))},g.prototype.setupIntegrations=function(){this._isEnabled()&&(this._integrations=S(this._options))},g.prototype.getIntegration=function(g){try{return this._integrations[g.id]||null}catch(I){return U.a.warn("Cannot retrieve integration "+g.id+" from the current Client"),null}},g.prototype._updateSessionFromEvent=function(g,I){var e,t,C=!1,F=!1,B=I.exception&&I.exception.values;if(B){F=!0;try{for(var n=Object(Q.g)(B),U=n.next();!U.done;U=n.next()){var s=U.value.mechanism;if(s&&!1===s.handled){C=!0;break}}}catch(c){e={error:c}}finally{try{U&&!U.done&&(t=n.return)&&t.call(n)}finally{if(e)throw e.error}}}var i=g.status===r.a.Ok;(i&&0===g.errors||i&&C)&&(g.update(Object(Q.a)(Object(Q.a)({},C&&{status:r.a.Crashed}),{errors:g.errors||Number(F||C)})),this.captureSession(g))},g.prototype._sendSession=function(g){this._getBackend().sendSession(g)},g.prototype._isClientDoneProcessing=function(g){var I=this;return new l.a((function(e){var t=0,C=setInterval((function(){0==I._numProcessing?(clearInterval(C),e(!0)):(t+=1,g&&t>=g&&(clearInterval(C),e(!1)))}),1)}))},g.prototype._getBackend=function(){return this._backend},g.prototype._isEnabled=function(){return!1!==this.getOptions().enabled&&void 0!==this._dsn},g.prototype._prepareEvent=function(g,I,e){var t=this,C=this.getOptions().normalizeDepth,F=void 0===C?3:C,n=Object(Q.a)(Object(Q.a)({},g),{event_id:g.event_id||(e&&e.event_id?e.event_id:Object(s.i)()),timestamp:g.timestamp||Object(Z.b)()});this._applyClientOptions(n),this._applyIntegrationsMetadata(n);var U=I;e&&e.captureContext&&(U=B.a.clone(U).update(e.captureContext));var i=l.a.resolve(n);return U&&(i=U.applyToEvent(n,e)),i.then((function(g){return"number"===typeof F&&F>0?t._normalizeEvent(g,F):g}))},g.prototype._normalizeEvent=function(g,I){if(!g)return null;var e=Object(Q.a)(Object(Q.a)(Object(Q.a)(Object(Q.a)(Object(Q.a)({},g),g.breadcrumbs&&{breadcrumbs:g.breadcrumbs.map((function(g){return Object(Q.a)(Object(Q.a)({},g),g.data&&{data:Object(m.d)(g.data,I)})}))}),g.user&&{user:Object(m.d)(g.user,I)}),g.contexts&&{contexts:Object(m.d)(g.contexts,I)}),g.extra&&{extra:Object(m.d)(g.extra,I)});g.contexts&&g.contexts.trace&&(e.contexts.trace=g.contexts.trace);var t=this.getOptions()._experiments;return(void 0===t?{}:t).ensureNoCircularStructures?Object(m.d)(e):e},g.prototype._applyClientOptions=function(g){var I=this.getOptions(),e=I.environment,t=I.release,C=I.dist,Q=I.maxValueLength,F=void 0===Q?250:Q;"environment"in g||(g.environment="environment"in I?e:"production"),void 0===g.release&&void 0!==t&&(g.release=t),void 0===g.dist&&void 0!==C&&(g.dist=C),g.message&&(g.message=Object(i.d)(g.message,F));var B=g.exception&&g.exception.values&&g.exception.values[0];B&&B.value&&(B.value=Object(i.d)(B.value,F));var n=g.request;n&&n.url&&(n.url=Object(i.d)(n.url,F))},g.prototype._applyIntegrationsMetadata=function(g){var I=Object.keys(this._integrations);I.length>0&&(g.sdk=g.sdk||{},g.sdk.integrations=Object(Q.e)(g.sdk.integrations||[],I))},g.prototype._sendEvent=function(g){this._getBackend().sendEvent(g)},g.prototype._captureEvent=function(g,I,e){return this._processEvent(g,I,e).then((function(g){return g.event_id}),(function(g){U.a.error(g)}))},g.prototype._processEvent=function(g,I,e){var t=this,C=this.getOptions(),Q=C.beforeSend,F=C.sampleRate;if(!this._isEnabled())return l.a.reject(new d("SDK not enabled, will not capture event."));var B="transaction"===g.type;return!B&&"number"===typeof F&&Math.random()>F?l.a.reject(new d("Discarding event because it's not included in the random sample (sampling rate = "+F+")")):this._prepareEvent(g,e,I).then((function(g){if(null===g)throw new d("An event processor returned null, will not send event.");if(I&&I.data&&!0===I.data.__sentry__||B||!Q)return g;var e=Q(g,I);return t._ensureBeforeSendRv(e)})).then((function(g){if(null===g)throw new d("`beforeSend` returned `null`, will not send event.");var I=e&&e.getSession&&e.getSession();return!B&&I&&t._updateSessionFromEvent(I,g),t._sendEvent(g),g})).then(null,(function(g){if(g instanceof d)throw g;throw t.captureException(g,{data:{__sentry__:!0},originalException:g}),new d("Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\nReason: "+g)}))},g.prototype._process=function(g){var I=this;this._numProcessing+=1,g.then((function(g){return I._numProcessing-=1,g}),(function(g){return I._numProcessing-=1,g}))},g.prototype._ensureBeforeSendRv=function(g){var I="`beforeSend` method has to return `null` or a valid event.";if(Object(b.m)(g))return g.then((function(g){if(!Object(b.h)(g)&&null!==g)throw new d(I);return g}),(function(g){throw new d("beforeSend rejected with "+g)}));if(!Object(b.h)(g)&&null!==g)throw new d(I);return g},g}();!function(g){g.Unknown="unknown",g.Skipped="skipped",g.Success="success",g.RateLimit="rate_limit",g.Invalid="invalid",g.Failed="failed"}(G||(G={})),function(g){g.fromHttpCode=function(I){return I>=200&&I<300?g.Success:429===I?g.RateLimit:I>=400&&I<500?g.Invalid:I>=500?g.Failed:g.Unknown}}(G||(G={}));var V,h=function(){function g(){}return g.prototype.sendEvent=function(g){return l.a.resolve({reason:"NoopTransport: Event has been skipped because no Dsn is configured.",status:G.Skipped})},g.prototype.close=function(g){return l.a.resolve(!0)},g}(),D=function(){function g(g){this._options=g,this._options.dsn||U.a.warn("No DSN provided, backend will not do anything."),this._transport=this._setupTransport()}return g.prototype.eventFromException=function(g,I){throw new d("Backend has to implement `eventFromException` method")},g.prototype.eventFromMessage=function(g,I,e){throw new d("Backend has to implement `eventFromMessage` method")},g.prototype.sendEvent=function(g){this._transport.sendEvent(g).then(null,(function(g){U.a.error("Error while sending event: "+g)}))},g.prototype.sendSession=function(g){this._transport.sendSession?this._transport.sendSession(g).then(null,(function(g){U.a.error("Error while sending session: "+g)})):U.a.warn("Dropping session because custom transport doesn't implement sendSession")},g.prototype.getTransport=function(){return this._transport},g.prototype._setupTransport=function(){return new h},g}();!function(g){g.Fatal="fatal",g.Error="error",g.Warning="warning",g.Log="log",g.Info="info",g.Debug="debug",g.Critical="critical"}(V||(V={})),function(g){g.fromString=function(I){switch(I){case"debug":return g.Debug;case"info":return g.Info;case"warn":case"warning":return g.Warning;case"error":return g.Error;case"fatal":return g.Fatal;case"critical":return g.Critical;case"log":default:return g.Log}}}(V||(V={}));var p=e(592),E=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|address|native|eval|webpack|<anonymous>|[-a-z]+:|.*bundle|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,N=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension|capacitor).*?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,W=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,f=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,X=/\((\S*)(?::(\d+))(?::(\d+))\)/,J=/Minified React error #\d+;/i;function v(g){var I=null,e=0;g&&("number"===typeof g.framesToPop?e=g.framesToPop:J.test(g.message)&&(e=1));try{if(I=function(g){if(!g||!g.stacktrace)return null;for(var I,e=g.stacktrace,t=/ line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i,C=/ line (\d+), column (\d+)\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\((.*)\))? in (.*):\s*$/i,Q=e.split("\n"),F=[],B=0;B<Q.length;B+=2){var n=null;(I=t.exec(Q[B]))?n={url:I[2],func:I[3],args:[],line:+I[1],column:null}:(I=C.exec(Q[B]))&&(n={url:I[6],func:I[3]||I[4],args:I[5]?I[5].split(","):[],line:+I[1],column:+I[2]}),n&&(!n.func&&n.line&&(n.func="?"),F.push(n))}if(!F.length)return null;return{message:H(g),name:g.name,stack:F}}(g))return k(I,e)}catch(t){}try{if(I=function(g){if(!g||!g.stack)return null;for(var I,e,t,C=[],Q=g.stack.split("\n"),F=0;F<Q.length;++F){if(e=E.exec(Q[F])){var B=e[2]&&0===e[2].indexOf("native");e[2]&&0===e[2].indexOf("eval")&&(I=X.exec(e[2]))&&(e[2]=I[1],e[3]=I[2],e[4]=I[3]);var n=e[2]&&0===e[2].indexOf("address at ")?e[2].substr("address at ".length):e[2],U=e[1]||"?",s=-1!==U.indexOf("safari-extension"),i=-1!==U.indexOf("safari-web-extension");(s||i)&&(U=-1!==U.indexOf("@")?U.split("@")[0]:"?",n=s?"safari-extension:"+n:"safari-web-extension:"+n),t={url:n,func:U,args:B?[e[2]]:[],line:e[3]?+e[3]:null,column:e[4]?+e[4]:null}}else if(e=W.exec(Q[F]))t={url:e[2],func:e[1]||"?",args:[],line:+e[3],column:e[4]?+e[4]:null};else{if(!(e=N.exec(Q[F])))continue;e[3]&&e[3].indexOf(" > eval")>-1&&(I=f.exec(e[3]))?(e[1]=e[1]||"eval",e[3]=I[1],e[4]=I[2],e[5]=""):0!==F||e[5]||void 0===g.columnNumber||(C[0].column=g.columnNumber+1),t={url:e[3],func:e[1]||"?",args:e[2]?e[2].split(","):[],line:e[4]?+e[4]:null,column:e[5]?+e[5]:null}}!t.func&&t.line&&(t.func="?"),C.push(t)}if(!C.length)return null;return{message:H(g),name:g.name,stack:C}}(g))return k(I,e)}catch(t){}return{message:H(g),name:g&&g.name,stack:[],failed:!0}}function k(g,I){try{return Object(Q.a)(Object(Q.a)({},g),{stack:g.stack.slice(I)})}catch(e){return g}}function H(g){var I=g&&g.message;return I?I.error&&"string"===typeof I.error.message?I.error.message:I:"No error message"}function M(g){var I=w(g.stack),e={type:g.name,value:g.message};return I&&I.length&&(e.stacktrace={frames:I}),void 0===e.type&&""===e.value&&(e.value="Unrecoverable error caught"),e}function Y(g){return{exception:{values:[M(g)]}}}function w(g){if(!g||!g.length)return[];var I=g,e=I[0].func||"",t=I[I.length-1].func||"";return-1===e.indexOf("captureMessage")&&-1===e.indexOf("captureException")||(I=I.slice(1)),-1!==t.indexOf("sentryWrapped")&&(I=I.slice(0,-1)),I.slice(0,50).map((function(g){return{colno:null===g.column?void 0:g.column,filename:g.url||I[0].url,function:g.func||"?",in_app:!0,lineno:null===g.line?void 0:g.line}})).reverse()}function T(g,I,e){var t;if(void 0===e&&(e={}),Object(b.e)(g)&&g.error)return t=Y(v(g=g.error));if(Object(b.a)(g)||Object(b.b)(g)){var C=g,F=C.name||(Object(b.a)(C)?"DOMError":"DOMException"),B=C.message?F+": "+C.message:F;return t=z(B,I,e),Object(s.b)(t,B),"code"in C&&(t.tags=Object(Q.a)(Object(Q.a)({},t.tags),{"DOMException.code":""+C.code})),t}return Object(b.d)(g)?t=Y(v(g)):Object(b.h)(g)||Object(b.f)(g)?(t=function(g,I,e){var t={exception:{values:[{type:Object(b.f)(g)?g.constructor.name:e?"UnhandledRejection":"Error",value:"Non-Error "+(e?"promise rejection":"exception")+" captured with keys: "+Object(m.b)(g)}]},extra:{__serialized__:Object(m.e)(g)}};if(I){var C=w(v(I).stack);t.stacktrace={frames:C}}return t}(g,I,e.rejection),Object(s.a)(t,{synthetic:!0}),t):(t=z(g,I,e),Object(s.b)(t,""+g,void 0),Object(s.a)(t,{synthetic:!0}),t)}function z(g,I,e){void 0===e&&(e={});var t={message:g};if(e.attachStacktrace&&I){var C=w(v(I).stack);t.stacktrace={frames:C}}return t}function O(g){if(g.metadata&&g.metadata.sdk){var I=g.metadata.sdk;return{name:I.name,version:I.version}}}function K(g,I){return I?(g.sdk=g.sdk||{},g.sdk.name=g.sdk.name||I.name,g.sdk.version=g.sdk.version||I.version,g.sdk.integrations=Object(Q.e)(g.sdk.integrations||[],I.integrations||[]),g.sdk.packages=Object(Q.e)(g.sdk.packages||[],I.packages||[]),g):g}function j(g,I){var e=O(I),t="aggregates"in g?"sessions":"session";return{body:JSON.stringify(Object(Q.a)(Object(Q.a)({sent_at:(new Date).toISOString()},e&&{sdk:e}),I.forceEnvelope()&&{dsn:I.getDsn().toString()}))+"\n"+JSON.stringify({type:t})+"\n"+JSON.stringify(g),type:t,url:I.getEnvelopeEndpointWithUrlEncodedAuth()}}function P(g,I){var e=O(I),t=g.type||"event",C="transaction"===t||I.forceEnvelope(),F=g.debug_meta||{},B=F.transactionSampling,n=Object(Q.d)(F,["transactionSampling"]),U=B||{},s=U.method,i=U.rate;0===Object.keys(n).length?delete g.debug_meta:g.debug_meta=n;var c={body:JSON.stringify(e?K(g,I.metadata.sdk):g),type:t,url:C?I.getEnvelopeEndpointWithUrlEncodedAuth():I.getStoreEndpointWithUrlEncodedAuth()};if(C){var A=JSON.stringify(Object(Q.a)(Object(Q.a)({event_id:g.event_id,sent_at:(new Date).toISOString()},e&&{sdk:e}),I.forceEnvelope()&&{dsn:I.getDsn().toString()}))+"\n"+JSON.stringify({type:t,sample_rates:[{id:s,rate:i}]})+"\n"+c.body;c.body=A}return c}var _=function(){function g(g,I,e){void 0===I&&(I={}),this.dsn=g,this._dsnObject=new y(g),this.metadata=I,this._tunnel=e}return g.prototype.getDsn=function(){return this._dsnObject},g.prototype.forceEnvelope=function(){return!!this._tunnel},g.prototype.getBaseApiEndpoint=function(){var g=this.getDsn(),I=g.protocol?g.protocol+":":"",e=g.port?":"+g.port:"";return I+"//"+g.host+e+(g.path?"/"+g.path:"")+"/api/"},g.prototype.getStoreEndpoint=function(){return this._getIngestEndpoint("store")},g.prototype.getStoreEndpointWithUrlEncodedAuth=function(){return this.getStoreEndpoint()+"?"+this._encodedAuth()},g.prototype.getEnvelopeEndpointWithUrlEncodedAuth=function(){return this.forceEnvelope()?this._tunnel:this._getEnvelopeEndpoint()+"?"+this._encodedAuth()},g.prototype.getStoreEndpointPath=function(){var g=this.getDsn();return(g.path?"/"+g.path:"")+"/api/"+g.projectId+"/store/"},g.prototype.getRequestHeaders=function(g,I){var e=this.getDsn(),t=["Sentry sentry_version=7"];return t.push("sentry_client="+g+"/"+I),t.push("sentry_key="+e.publicKey),e.pass&&t.push("sentry_secret="+e.pass),{"Content-Type":"application/json","X-Sentry-Auth":t.join(", ")}},g.prototype.getReportDialogEndpoint=function(g){void 0===g&&(g={});var I=this.getDsn(),e=this.getBaseApiEndpoint()+"embed/error-page/",t=[];for(var C in t.push("dsn="+I.toString()),g)if("dsn"!==C)if("user"===C){if(!g.user)continue;g.user.name&&t.push("name="+encodeURIComponent(g.user.name)),g.user.email&&t.push("email="+encodeURIComponent(g.user.email))}else t.push(encodeURIComponent(C)+"="+encodeURIComponent(g[C]));return t.length?e+"?"+t.join("&"):e},g.prototype._getEnvelopeEndpoint=function(){return this._getIngestEndpoint("envelope")},g.prototype._getIngestEndpoint=function(g){return this._tunnel?this._tunnel:""+this.getBaseApiEndpoint()+this.getDsn().projectId+"/"+g+"/"},g.prototype._encodedAuth=function(){var g={sentry_key:this.getDsn().publicKey,sentry_version:"7"};return Object(m.f)(g)},g}(),q=function(){function g(g){this._limit=g,this._buffer=[]}return g.prototype.isReady=function(){return void 0===this._limit||this.length()<this._limit},g.prototype.add=function(g){var I=this;if(!this.isReady())return l.a.reject(new d("Not adding Promise due to buffer limit reached."));var e=g();return-1===this._buffer.indexOf(e)&&this._buffer.push(e),e.then((function(){return I.remove(e)})).then(null,(function(){return I.remove(e).then(null,(function(){}))})),e},g.prototype.remove=function(g){return this._buffer.splice(this._buffer.indexOf(g),1)[0]},g.prototype.length=function(){return this._buffer.length},g.prototype.drain=function(g){var I=this;return new l.a((function(e){var t=setTimeout((function(){g&&g>0&&e(!1)}),g);l.a.all(I._buffer).then((function(){clearTimeout(t),e(!0)})).then(null,(function(){e(!0)}))}))},g}(),$={event:"error",transaction:"transaction",session:"session",attachment:"attachment"},gg=function(){function g(g){this.options=g,this._buffer=new q(30),this._rateLimits={},this._api=new _(g.dsn,g._metadata,g.tunnel),this.url=this._api.getStoreEndpointWithUrlEncodedAuth()}return g.prototype.sendEvent=function(g){throw new d("Transport Class has to implement `sendEvent` method")},g.prototype.close=function(g){return this._buffer.drain(g)},g.prototype._handleResponse=function(g){var I=g.requestType,e=g.response,t=g.headers,C=g.resolve,Q=g.reject,F=G.fromHttpCode(e.status);this._handleRateLimit(t)&&U.a.warn("Too many "+I+" requests, backing off until: "+this._disabledUntil(I)),F!==G.Success?Q(e):C({status:F})},g.prototype._disabledUntil=function(g){var I=$[g];return this._rateLimits[I]||this._rateLimits.all},g.prototype._isRateLimited=function(g){return this._disabledUntil(g)>new Date(Date.now())},g.prototype._handleRateLimit=function(g){var I,e,t,C,F=Date.now(),B=g["x-sentry-rate-limits"],n=g["retry-after"];if(B){try{for(var U=Object(Q.g)(B.trim().split(",")),i=U.next();!i.done;i=U.next()){var c=i.value.split(":",2),A=parseInt(c[0],10),l=1e3*(isNaN(A)?60:A);try{for(var a=(t=void 0,Object(Q.g)(c[1].split(";"))),r=a.next();!r.done;r=a.next()){var o=r.value;this._rateLimits[o||"all"]=new Date(F+l)}}catch(d){t={error:d}}finally{try{r&&!r.done&&(C=a.return)&&C.call(a)}finally{if(t)throw t.error}}}}catch(u){I={error:u}}finally{try{i&&!i.done&&(e=U.return)&&e.call(U)}finally{if(I)throw I.error}}return!0}return!!n&&(this._rateLimits.all=new Date(F+Object(s.g)(F,n)),!0)},g}();var Ig=function(g){function I(I,e){void 0===e&&(e=function(){var g,I,e=Object(s.e)();if(Object(p.a)(e.fetch))return e.fetch.bind(e);var t=e.document,C=e.fetch;if("function"===typeof(null===(g=t)||void 0===g?void 0:g.createElement))try{var Q=t.createElement("iframe");Q.hidden=!0,t.head.appendChild(Q),(null===(I=Q.contentWindow)||void 0===I?void 0:I.fetch)&&(C=Q.contentWindow.fetch),t.head.removeChild(Q)}catch(F){U.a.warn("Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ",F)}return C.bind(e)}());var t=g.call(this,I)||this;return t._fetch=e,t}return Object(Q.b)(I,g),I.prototype.sendEvent=function(g){return this._sendRequest(P(g,this._api),g)},I.prototype.sendSession=function(g){return this._sendRequest(j(g,this._api),g)},I.prototype._sendRequest=function(g,I){var e=this;if(this._isRateLimited(g.type))return Promise.reject({event:I,type:g.type,reason:"Transport for "+g.type+" requests locked till "+this._disabledUntil(g.type)+" due to too many requests.",status:429});var t={body:g.body,method:"POST",referrerPolicy:Object(p.e)()?"origin":""};return void 0!==this.options.fetchParameters&&Object.assign(t,this.options.fetchParameters),void 0!==this.options.headers&&(t.headers=this.options.headers),this._buffer.add((function(){return new l.a((function(I,C){e._fetch(g.url,t).then((function(t){var Q={"x-sentry-rate-limits":t.headers.get("X-Sentry-Rate-Limits"),"retry-after":t.headers.get("Retry-After")};e._handleResponse({requestType:g.type,response:t,headers:Q,resolve:I,reject:C})})).catch(C)}))}))},I}(gg),eg=function(g){function I(){return null!==g&&g.apply(this,arguments)||this}return Object(Q.b)(I,g),I.prototype.sendEvent=function(g){return this._sendRequest(P(g,this._api),g)},I.prototype.sendSession=function(g){return this._sendRequest(j(g,this._api),g)},I.prototype._sendRequest=function(g,I){var e=this;return this._isRateLimited(g.type)?Promise.reject({event:I,type:g.type,reason:"Transport for "+g.type+" requests locked till "+this._disabledUntil(g.type)+" due to too many requests.",status:429}):this._buffer.add((function(){return new l.a((function(I,t){var C=new XMLHttpRequest;for(var Q in C.onreadystatechange=function(){if(4===C.readyState){var Q={"x-sentry-rate-limits":C.getResponseHeader("X-Sentry-Rate-Limits"),"retry-after":C.getResponseHeader("Retry-After")};e._handleResponse({requestType:g.type,response:C,headers:Q,resolve:I,reject:t})}},C.open("POST",g.url),e.options.headers)e.options.headers.hasOwnProperty(Q)&&C.setRequestHeader(Q,e.options.headers[Q]);C.send(g.body)}))}))},I}(gg),tg=function(g){function I(){return null!==g&&g.apply(this,arguments)||this}return Object(Q.b)(I,g),I.prototype.eventFromException=function(g,I){return function(g,I,e){var t=T(I,e&&e.syntheticException||void 0,{attachStacktrace:g.attachStacktrace});return Object(s.a)(t,{handled:!0,type:"generic"}),t.level=V.Error,e&&e.event_id&&(t.event_id=e.event_id),l.a.resolve(t)}(this._options,g,I)},I.prototype.eventFromMessage=function(g,I,e){return void 0===I&&(I=V.Info),function(g,I,e,t){void 0===e&&(e=V.Info);var C=z(I,t&&t.syntheticException||void 0,{attachStacktrace:g.attachStacktrace});return C.level=e,t&&t.event_id&&(C.event_id=t.event_id),l.a.resolve(C)}(this._options,g,I,e)},I.prototype._setupTransport=function(){if(!this._options.dsn)return g.prototype._setupTransport.call(this);var I=Object(Q.a)(Object(Q.a)({},this._options.transportOptions),{dsn:this._options.dsn,tunnel:this._options.tunnel,_metadata:this._options._metadata});return this._options.transport?new this._options.transport(I):Object(p.b)()?new Ig(I):new eg(I)},I}(D),Cg=e(138),Qg=0;function Fg(){return Qg>0}function Bg(){Qg+=1,setTimeout((function(){Qg-=1}))}function ng(g,I,e){if(void 0===I&&(I={}),"function"!==typeof g)return g;try{if(g.__sentry__)return g;if(g.__sentry_wrapped__)return g.__sentry_wrapped__}catch(F){return g}var t=function(){var t=Array.prototype.slice.call(arguments);try{e&&"function"===typeof e&&e.apply(this,arguments);var C=t.map((function(g){return ng(g,I)}));return g.handleEvent?g.handleEvent.apply(this,C):g.apply(this,C)}catch(F){throw Bg(),Object(Cg.b)((function(g){g.addEventProcessor((function(g){var e=Object(Q.a)({},g);return I.mechanism&&(Object(s.b)(e,void 0,void 0),Object(s.a)(e,I.mechanism)),e.extra=Object(Q.a)(Object(Q.a)({},e.extra),{arguments:t}),e})),Object(Cg.a)(F)})),F}};try{for(var C in g)Object.prototype.hasOwnProperty.call(g,C)&&(t[C]=g[C])}catch(B){}g.prototype=g.prototype||{},t.prototype=g.prototype,Object.defineProperty(g,"__sentry_wrapped__",{enumerable:!1,value:t}),Object.defineProperties(t,{__sentry__:{enumerable:!1,value:!0},__sentry_original__:{enumerable:!1,value:g}});try{Object.getOwnPropertyDescriptor(t,"name").configurable&&Object.defineProperty(t,"name",{get:function(){return g.name}})}catch(B){}return t}function Ug(g){if(void 0===g&&(g={}),g.eventId)if(g.dsn){var I=document.createElement("script");I.async=!0,I.src=new _(g.dsn).getReportDialogEndpoint(g),g.onLoad&&(I.onload=g.onLoad),(document.head||document.body).appendChild(I)}else U.a.error("Missing dsn option in showReportDialog call");else U.a.error("Missing eventId option in showReportDialog call")}var sg=e(582),ig=function(){function g(I){this.name=g.id,this._options=Object(Q.a)({console:!0,dom:!0,fetch:!0,history:!0,sentry:!0,xhr:!0},I)}return g.prototype.addSentryBreadcrumb=function(g){this._options.sentry&&Object(n.b)().addBreadcrumb({category:"sentry."+("transaction"===g.type?"transaction":"event"),event_id:g.event_id,level:g.level,message:Object(s.d)(g)},{event:g})},g.prototype.setupOnce=function(){var g=this;this._options.console&&Object(a.a)({callback:function(){for(var I=[],e=0;e<arguments.length;e++)I[e]=arguments[e];g._consoleBreadcrumb.apply(g,Object(Q.e)(I))},type:"console"}),this._options.dom&&Object(a.a)({callback:function(){for(var I=[],e=0;e<arguments.length;e++)I[e]=arguments[e];g._domBreadcrumb.apply(g,Object(Q.e)(I))},type:"dom"}),this._options.xhr&&Object(a.a)({callback:function(){for(var I=[],e=0;e<arguments.length;e++)I[e]=arguments[e];g._xhrBreadcrumb.apply(g,Object(Q.e)(I))},type:"xhr"}),this._options.fetch&&Object(a.a)({callback:function(){for(var I=[],e=0;e<arguments.length;e++)I[e]=arguments[e];g._fetchBreadcrumb.apply(g,Object(Q.e)(I))},type:"fetch"}),this._options.history&&Object(a.a)({callback:function(){for(var I=[],e=0;e<arguments.length;e++)I[e]=arguments[e];g._historyBreadcrumb.apply(g,Object(Q.e)(I))},type:"history"})},g.prototype._consoleBreadcrumb=function(g){var I={category:"console",data:{arguments:g.args,logger:"console"},level:V.fromString(g.level),message:Object(i.b)(g.args," ")};if("assert"===g.level){if(!1!==g.args[0])return;I.message="Assertion failed: "+(Object(i.b)(g.args.slice(1)," ")||"console.assert"),I.data.arguments=g.args.slice(1)}Object(n.b)().addBreadcrumb(I,{input:g.args,level:g.level})},g.prototype._domBreadcrumb=function(g){var I,e="object"===typeof this._options.dom?this._options.dom.serializeAttribute:void 0;"string"===typeof e&&(e=[e]);try{I=g.event.target?Object(sg.a)(g.event.target,e):Object(sg.a)(g.event,e)}catch(t){I="<unknown>"}0!==I.length&&Object(n.b)().addBreadcrumb({category:"ui."+g.name,message:I},{event:g.event,name:g.name,global:g.global})},g.prototype._xhrBreadcrumb=function(g){if(g.endTimestamp){if(g.xhr.__sentry_own_request__)return;var I=g.xhr.__sentry_xhr__||{},e=I.method,t=I.url,C=I.status_code,Q=I.body;Object(n.b)().addBreadcrumb({category:"xhr",data:{method:e,url:t,status_code:C},type:"http"},{xhr:g.xhr,input:Q})}else;},g.prototype._fetchBreadcrumb=function(g){g.endTimestamp&&(g.fetchData.url.match(/sentry_key/)&&"POST"===g.fetchData.method||(g.error?Object(n.b)().addBreadcrumb({category:"fetch",data:g.fetchData,level:V.Error,type:"http"},{data:g.error,input:g.args}):Object(n.b)().addBreadcrumb({category:"fetch",data:Object(Q.a)(Object(Q.a)({},g.fetchData),{status_code:g.response.status}),type:"http"},{input:g.args,response:g.response})))},g.prototype._historyBreadcrumb=function(g){var I=Object(s.e)(),e=g.from,t=g.to,C=Object(s.h)(I.location.href),Q=Object(s.h)(e),F=Object(s.h)(t);Q.path||(Q=C),C.protocol===F.protocol&&C.host===F.host&&(t=F.relative),C.protocol===Q.protocol&&C.host===Q.host&&(e=Q.relative),Object(n.b)().addBreadcrumb({category:"navigation",data:{from:e,to:t}})},g.id="Breadcrumbs",g}(),cg=function(g){function I(I){void 0===I&&(I={});return I._metadata=I._metadata||{},I._metadata.sdk=I._metadata.sdk||{name:"sentry.javascript.browser",packages:[{name:"npm:@sentry/browser",version:"6.9.0"}],version:"6.9.0"},g.call(this,tg,I)||this}return Object(Q.b)(I,g),I.prototype.showReportDialog=function(g){void 0===g&&(g={}),Object(s.e)().document&&(this._isEnabled()?Ug(Object(Q.a)(Object(Q.a)({},g),{dsn:g.dsn||this.getDsn()})):U.a.error("Trying to call showReportDialog with Sentry Client disabled"))},I.prototype._prepareEvent=function(I,e,t){return I.platform=I.platform||"javascript",g.prototype._prepareEvent.call(this,I,e,t)},I.prototype._sendEvent=function(I){var e=this.getIntegration(ig);e&&e.addSentryBreadcrumb(I),g.prototype._sendEvent.call(this,I)},I}(L),Ag=e(457),lg=["EventTarget","Window","Node","ApplicationCache","AudioTrackList","ChannelMergerNode","CryptoOperation","EventSource","FileReader","HTMLUnknownElement","IDBDatabase","IDBRequest","IDBTransaction","KeyOperation","MediaController","MessagePort","ModalWindow","Notification","SVGElementInstance","Screen","TextTrack","TextTrackCue","TextTrackList","WebSocket","WebSocketWorker","Worker","XMLHttpRequest","XMLHttpRequestEventTarget","XMLHttpRequestUpload"],ag=function(){function g(I){this.name=g.id,this._options=Object(Q.a)({XMLHttpRequest:!0,eventTarget:!0,requestAnimationFrame:!0,setInterval:!0,setTimeout:!0},I)}return g.prototype.setupOnce=function(){var g=Object(s.e)();(this._options.setTimeout&&Object(m.c)(g,"setTimeout",this._wrapTimeFunction.bind(this)),this._options.setInterval&&Object(m.c)(g,"setInterval",this._wrapTimeFunction.bind(this)),this._options.requestAnimationFrame&&Object(m.c)(g,"requestAnimationFrame",this._wrapRAF.bind(this)),this._options.XMLHttpRequest&&"XMLHttpRequest"in g&&Object(m.c)(XMLHttpRequest.prototype,"send",this._wrapXHR.bind(this)),this._options.eventTarget)&&(Array.isArray(this._options.eventTarget)?this._options.eventTarget:lg).forEach(this._wrapEventTarget.bind(this))},g.prototype._wrapTimeFunction=function(g){return function(){for(var I=[],e=0;e<arguments.length;e++)I[e]=arguments[e];var t=I[0];return I[0]=ng(t,{mechanism:{data:{function:Object(Ag.a)(g)},handled:!0,type:"instrument"}}),g.apply(this,I)}},g.prototype._wrapRAF=function(g){return function(I){return g.call(this,ng(I,{mechanism:{data:{function:"requestAnimationFrame",handler:Object(Ag.a)(g)},handled:!0,type:"instrument"}}))}},g.prototype._wrapEventTarget=function(g){var I=Object(s.e)(),e=I[g]&&I[g].prototype;e&&e.hasOwnProperty&&e.hasOwnProperty("addEventListener")&&(Object(m.c)(e,"addEventListener",(function(I){return function(e,t,C){try{"function"===typeof t.handleEvent&&(t.handleEvent=ng(t.handleEvent.bind(t),{mechanism:{data:{function:"handleEvent",handler:Object(Ag.a)(t),target:g},handled:!0,type:"instrument"}}))}catch(Q){}return I.call(this,e,ng(t,{mechanism:{data:{function:"addEventListener",handler:Object(Ag.a)(t),target:g},handled:!0,type:"instrument"}}),C)}})),Object(m.c)(e,"removeEventListener",(function(g){return function(I,e,t){var C,Q=e;try{var F=null===(C=Q)||void 0===C?void 0:C.__sentry_wrapped__;F&&g.call(this,I,F,t)}catch(B){}return g.call(this,I,Q,t)}})))},g.prototype._wrapXHR=function(g){return function(){for(var I=[],e=0;e<arguments.length;e++)I[e]=arguments[e];var t=this,C=["onload","onerror","onprogress","onreadystatechange"];return C.forEach((function(g){g in t&&"function"===typeof t[g]&&Object(m.c)(t,g,(function(I){var e={mechanism:{data:{function:g,handler:Object(Ag.a)(I)},handled:!0,type:"instrument"}};return I.__sentry_original__&&(e.mechanism.data.handler=Object(Ag.a)(I.__sentry_original__)),ng(I,e)}))})),g.apply(this,I)}},g.id="TryCatch",g}(),rg=function(){function g(I){this.name=g.id,this._onErrorHandlerInstalled=!1,this._onUnhandledRejectionHandlerInstalled=!1,this._options=Object(Q.a)({onerror:!0,onunhandledrejection:!0},I)}return g.prototype.setupOnce=function(){Error.stackTraceLimit=50,this._options.onerror&&(U.a.log("Global Handler attached: onerror"),this._installGlobalOnErrorHandler()),this._options.onunhandledrejection&&(U.a.log("Global Handler attached: onunhandledrejection"),this._installGlobalOnUnhandledRejectionHandler())},g.prototype._installGlobalOnErrorHandler=function(){var I=this;this._onErrorHandlerInstalled||(Object(a.a)({callback:function(e){var t=e.error,C=Object(n.b)(),Q=C.getIntegration(g),F=t&&!0===t.__sentry_own_request__;if(Q&&!Fg()&&!F){var B=C.getClient(),U=void 0===t&&Object(b.k)(e.msg)?I._eventFromIncompleteOnError(e.msg,e.url,e.line,e.column):I._enhanceEventWithInitialFrame(T(t||e.msg,void 0,{attachStacktrace:B&&B.getOptions().attachStacktrace,rejection:!1}),e.url,e.line,e.column);Object(s.a)(U,{handled:!1,type:"onerror"}),C.captureEvent(U,{originalException:t})}},type:"error"}),this._onErrorHandlerInstalled=!0)},g.prototype._installGlobalOnUnhandledRejectionHandler=function(){var I=this;this._onUnhandledRejectionHandlerInstalled||(Object(a.a)({callback:function(e){var t=e;try{"reason"in e?t=e.reason:"detail"in e&&"reason"in e.detail&&(t=e.detail.reason)}catch(i){}var C=Object(n.b)(),Q=C.getIntegration(g),F=t&&!0===t.__sentry_own_request__;if(!Q||Fg()||F)return!0;var B=C.getClient(),U=Object(b.i)(t)?I._eventFromRejectionWithPrimitive(t):T(t,void 0,{attachStacktrace:B&&B.getOptions().attachStacktrace,rejection:!0});U.level=V.Error,Object(s.a)(U,{handled:!1,type:"onunhandledrejection"}),C.captureEvent(U,{originalException:t})},type:"unhandledrejection"}),this._onUnhandledRejectionHandlerInstalled=!0)},g.prototype._eventFromIncompleteOnError=function(g,I,e,t){var C,Q=Object(b.e)(g)?g.message:g,F=Q.match(/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i);F&&(C=F[1],Q=F[2]);var B={exception:{values:[{type:C||"Error",value:Q}]}};return this._enhanceEventWithInitialFrame(B,I,e,t)},g.prototype._eventFromRejectionWithPrimitive=function(g){return{exception:{values:[{type:"UnhandledRejection",value:"Non-Error promise rejection captured with value: "+String(g)}]}}},g.prototype._enhanceEventWithInitialFrame=function(g,I,e,t){g.exception=g.exception||{},g.exception.values=g.exception.values||[],g.exception.values[0]=g.exception.values[0]||{},g.exception.values[0].stacktrace=g.exception.values[0].stacktrace||{},g.exception.values[0].stacktrace.frames=g.exception.values[0].stacktrace.frames||[];var C=isNaN(parseInt(t,10))?void 0:t,Q=isNaN(parseInt(e,10))?void 0:e,F=Object(b.k)(I)&&I.length>0?I:Object(s.f)();return 0===g.exception.values[0].stacktrace.frames.length&&g.exception.values[0].stacktrace.frames.push({colno:C,filename:F,function:"?",in_app:!0,lineno:Q}),g},g.id="GlobalHandlers",g}(),og=function(){function g(I){void 0===I&&(I={}),this.name=g.id,this._key=I.key||"cause",this._limit=I.limit||5}return g.prototype.setupOnce=function(){Object(B.b)((function(I,e){var t=Object(n.b)().getIntegration(g);return t?t._handler(I,e):I}))},g.prototype._handler=function(g,I){if(!g.exception||!g.exception.values||!I||!Object(b.g)(I.originalException,Error))return g;var e=this._walkErrorTree(I.originalException,this._key);return g.exception.values=Object(Q.e)(e,g.exception.values),g},g.prototype._walkErrorTree=function(g,I,e){if(void 0===e&&(e=[]),!Object(b.g)(g[I],Error)||e.length+1>=this._limit)return e;var t=M(v(g[I]));return this._walkErrorTree(g[I],I,Object(Q.e)([t],e))},g.id="LinkedErrors",g}(),dg=function(){function g(){this.name=g.id}return g.prototype.setupOnce=function(I,e){I((function(I){var t=e().getIntegration(g);if(t){try{if(t._shouldDropEvent(I,t._previousEvent))return null}catch(C){return t._previousEvent=I}return t._previousEvent=I}return I}))},g.prototype._shouldDropEvent=function(g,I){return!!I&&(!!this._isSameMessageEvent(g,I)||!!this._isSameExceptionEvent(g,I))},g.prototype._isSameMessageEvent=function(g,I){var e=g.message,t=I.message;return!(!e&&!t)&&(!(e&&!t||!e&&t)&&(e===t&&(!!this._isSameFingerprint(g,I)&&!!this._isSameStacktrace(g,I))))},g.prototype._getFramesFromEvent=function(g){var I=g.exception;if(I)try{return I.values[0].stacktrace.frames}catch(e){return}else if(g.stacktrace)return g.stacktrace.frames},g.prototype._isSameStacktrace=function(g,I){var e=this._getFramesFromEvent(g),t=this._getFramesFromEvent(I);if(!e&&!t)return!0;if(e&&!t||!e&&t)return!1;if(e=e,(t=t).length!==e.length)return!1;for(var C=0;C<t.length;C++){var Q=t[C],F=e[C];if(Q.filename!==F.filename||Q.lineno!==F.lineno||Q.colno!==F.colno||Q.function!==F.function)return!1}return!0},g.prototype._getExceptionFromEvent=function(g){return g.exception&&g.exception.values&&g.exception.values[0]},g.prototype._isSameExceptionEvent=function(g,I){var e=this._getExceptionFromEvent(I),t=this._getExceptionFromEvent(g);return!(!e||!t)&&(e.type===t.type&&e.value===t.value&&(!!this._isSameFingerprint(g,I)&&!!this._isSameStacktrace(g,I)))},g.prototype._isSameFingerprint=function(g,I){var e=g.fingerprint,t=I.fingerprint;if(!e&&!t)return!0;if(e&&!t||!e&&t)return!1;e=e,t=t;try{return!(e.join("")!==t.join(""))}catch(C){return!1}},g.id="Dedupe",g}(),ug=Object(s.e)(),yg=function(){function g(){this.name=g.id}return g.prototype.setupOnce=function(){Object(B.b)((function(I){var e,t,C;if(Object(n.b)().getIntegration(g)){if(!ug.navigator&&!ug.location&&!ug.document)return I;var F=(null===(e=I.request)||void 0===e?void 0:e.url)||(null===(t=ug.location)||void 0===t?void 0:t.href),B=(ug.document||{}).referrer,U=(ug.navigator||{}).userAgent,s=Object(Q.a)(Object(Q.a)(Object(Q.a)({},null===(C=I.request)||void 0===C?void 0:C.headers),B&&{Referer:B}),U&&{"User-Agent":U}),i=Object(Q.a)(Object(Q.a)({},F&&{url:F}),{headers:s});return Object(Q.a)(Object(Q.a)({},I),{request:i})}return I}))},g.id="UserAgent",g}(),bg=[new t.InboundFilters,new t.FunctionToString,new ag,new ig,new rg,new og,new dg,new yg];function Zg(g){if(void 0===g&&(g={}),void 0===g.defaultIntegrations&&(g.defaultIntegrations=bg),void 0===g.release){var I=Object(s.e)();I.SENTRY_RELEASE&&I.SENTRY_RELEASE.id&&(g.release=I.SENTRY_RELEASE.id)}void 0===g.autoSessionTracking&&(g.autoSessionTracking=!0),function(g,I){var e;!0===I.debug&&U.a.enable();var t=Object(n.b)();null===(e=t.getScope())||void 0===e||e.update(I.initialScope);var C=new g(I);t.bindClient(C)}(cg,g),g.autoSessionTracking&&function(){if("undefined"===typeof Object(s.e)().document)return void U.a.warn("Session tracking in non-browser environment with @sentry/browser is not supported.");var g=Object(n.b)();if("function"!==typeof g.startSession||"function"!==typeof g.captureSession)return;g.startSession({ignoreDuration:!0}),g.captureSession(),Object(a.a)({callback:function(I){var e=I.from,t=I.to;void 0!==e&&e!==t&&(g.startSession({ignoreDuration:!0}),g.captureSession())},type:"history"})}()}function mg(g){g._metadata=g._metadata||{},g._metadata.sdk=g._metadata.sdk||{name:"sentry.javascript.react",packages:[{name:"npm:@sentry/react",version:"6.9.0"}],version:"6.9.0"},Zg(g)}},function(g,I,e){"use strict";var t,C=e(5),Q=e(16),F=e(48),B=e(0),n=(e(122),e(4),e(14)),U=e(183),s=e(302);function i(){if(t)return t;var g=document.createElement("div");return g.appendChild(document.createTextNode("ABCD")),g.dir="rtl",g.style.fontSize="14px",g.style.width="4px",g.style.height="1px",g.style.position="absolute",g.style.top="-1000px",g.style.overflow="scroll",document.body.appendChild(g),t="reverse",g.scrollLeft>0?t="default":(g.scrollLeft=1,0===g.scrollLeft&&(t="negative")),document.body.removeChild(g),t}function c(g,I){var e=g.scrollLeft;if("rtl"!==I)return e;switch(i()){case"negative":return g.scrollWidth-g.clientWidth+e;case"reverse":return g.scrollWidth-g.clientWidth-e;default:return e}}function A(g){return(1+Math.sin(Math.PI*g-Math.PI/2))/2}var l={width:99,height:99,position:"absolute",top:-9999,overflow:"scroll"};function a(g){var I=g.onChange,e=Object(Q.a)(g,["onChange"]),t=B.useRef(),F=B.useRef(null),n=function(){t.current=F.current.offsetHeight-F.current.clientHeight};return B.useEffect((function(){var g=Object(U.a)((function(){var g=t.current;n(),g!==t.current&&I(t.current)}));return window.addEventListener("resize",g),function(){g.clear(),window.removeEventListener("resize",g)}}),[I]),B.useEffect((function(){n(),I(t.current)}),[I]),B.createElement("div",Object(C.a)({style:l,ref:F},e))}var r=e(21),o=e(30),d=B.forwardRef((function(g,I){var e=g.classes,t=g.className,F=g.color,U=g.orientation,s=Object(Q.a)(g,["classes","className","color","orientation"]);return B.createElement("span",Object(C.a)({className:Object(n.default)(e.root,e["color".concat(Object(o.a)(F))],t,"vertical"===U&&e.vertical),ref:I},s))})),u=Object(r.a)((function(g){return{root:{position:"absolute",height:2,bottom:0,width:"100%",transition:g.transitions.create()},colorPrimary:{backgroundColor:g.palette.primary.main},colorSecondary:{backgroundColor:g.palette.secondary.main},vertical:{height:"100%",width:2,right:0}}}),{name:"PrivateTabIndicator"})(d),y=e(78),b=Object(y.a)(B.createElement("path",{d:"M15.41 16.09l-4.58-4.59 4.58-4.59L14 5.5l-6 6 6 6z"}),"KeyboardArrowLeft"),Z=Object(y.a)(B.createElement("path",{d:"M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z"}),"KeyboardArrowRight"),m=e(271),x=B.createElement(b,{fontSize:"small"}),R=B.createElement(Z,{fontSize:"small"}),S=B.forwardRef((function(g,I){var e=g.classes,t=g.className,F=g.direction,U=g.orientation,s=g.disabled,i=Object(Q.a)(g,["classes","className","direction","orientation","disabled"]);return B.createElement(m.a,Object(C.a)({component:"div",className:Object(n.default)(e.root,t,s&&e.disabled,"vertical"===U&&e.vertical),ref:I,role:null,tabIndex:null},i),"left"===F?x:R)})),G=Object(r.a)({root:{width:40,flexShrink:0,opacity:.8,"&$disabled":{opacity:0}},vertical:{width:"100%",height:40,"& svg":{transform:"rotate(90deg)"}},disabled:{}},{name:"MuiTabScrollButton"})(S),L=e(59),V=e(77),h=B.forwardRef((function(g,I){var e=g["aria-label"],t=g["aria-labelledby"],l=g.action,r=g.centered,o=void 0!==r&&r,d=g.children,y=g.classes,b=g.className,Z=g.component,m=void 0===Z?"div":Z,x=g.indicatorColor,R=void 0===x?"secondary":x,S=g.onChange,h=g.orientation,D=void 0===h?"horizontal":h,p=g.ScrollButtonComponent,E=void 0===p?G:p,N=g.scrollButtons,W=void 0===N?"auto":N,f=g.selectionFollowsFocus,X=g.TabIndicatorProps,J=void 0===X?{}:X,v=g.TabScrollButtonProps,k=g.textColor,H=void 0===k?"inherit":k,M=g.value,Y=g.variant,w=void 0===Y?"standard":Y,T=Object(Q.a)(g,["aria-label","aria-labelledby","action","centered","children","classes","className","component","indicatorColor","onChange","orientation","ScrollButtonComponent","scrollButtons","selectionFollowsFocus","TabIndicatorProps","TabScrollButtonProps","textColor","value","variant"]),z=Object(V.a)(),O="scrollable"===w,K="rtl"===z.direction,j="vertical"===D,P=j?"scrollTop":"scrollLeft",_=j?"top":"left",q=j?"bottom":"right",$=j?"clientHeight":"clientWidth",gg=j?"height":"width";var Ig=B.useState(!1),eg=Ig[0],tg=Ig[1],Cg=B.useState({}),Qg=Cg[0],Fg=Cg[1],Bg=B.useState({start:!1,end:!1}),ng=Bg[0],Ug=Bg[1],sg=B.useState({overflow:"hidden",marginBottom:null}),ig=sg[0],cg=sg[1],Ag=new Map,lg=B.useRef(null),ag=B.useRef(null),rg=function(){var g,I,e=lg.current;if(e){var t=e.getBoundingClientRect();g={clientWidth:e.clientWidth,scrollLeft:e.scrollLeft,scrollTop:e.scrollTop,scrollLeftNormalized:c(e,z.direction),scrollWidth:e.scrollWidth,top:t.top,bottom:t.bottom,left:t.left,right:t.right}}if(e&&!1!==M){var C=ag.current.children;if(C.length>0){var Q=C[Ag.get(M)];0,I=Q?Q.getBoundingClientRect():null}}return{tabsMeta:g,tabMeta:I}},og=Object(L.a)((function(){var g,I=rg(),e=I.tabsMeta,t=I.tabMeta,C=0;if(t&&e)if(j)C=t.top-e.top+e.scrollTop;else{var Q=K?e.scrollLeftNormalized+e.clientWidth-e.scrollWidth:e.scrollLeft;C=t.left-e.left+Q}var B=(g={},Object(F.a)(g,_,C),Object(F.a)(g,gg,t?t[gg]:0),g);if(isNaN(Qg[_])||isNaN(Qg[gg]))Fg(B);else{var n=Math.abs(Qg[_]-B[_]),U=Math.abs(Qg[gg]-B[gg]);(n>=1||U>=1)&&Fg(B)}})),dg=function(g){!function(g,I,e){var t=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},C=arguments.length>4&&void 0!==arguments[4]?arguments[4]:function(){},Q=t.ease,F=void 0===Q?A:Q,B=t.duration,n=void 0===B?300:B,U=null,s=I[g],i=!1,c=function(){i=!0},l=function t(Q){if(i)C(new Error("Animation cancelled"));else{null===U&&(U=Q);var B=Math.min(1,(Q-U)/n);I[g]=F(B)*(e-s)+s,B>=1?requestAnimationFrame((function(){C(null)})):requestAnimationFrame(t)}};s===e?C(new Error("Element already at target position")):requestAnimationFrame(l)}(P,lg.current,g)},ug=function(g){var I=lg.current[P];j?I+=g:(I+=g*(K?-1:1),I*=K&&"reverse"===i()?-1:1),dg(I)},yg=function(){ug(-lg.current[$])},bg=function(){ug(lg.current[$])},Zg=B.useCallback((function(g){cg({overflow:null,marginBottom:-g})}),[]),mg=Object(L.a)((function(){var g=rg(),I=g.tabsMeta,e=g.tabMeta;if(e&&I)if(e[_]<I[_]){var t=I[P]+(e[_]-I[_]);dg(t)}else if(e[q]>I[q]){var C=I[P]+(e[q]-I[q]);dg(C)}})),xg=Object(L.a)((function(){if(O&&"off"!==W){var g,I,e=lg.current,t=e.scrollTop,C=e.scrollHeight,Q=e.clientHeight,F=e.scrollWidth,B=e.clientWidth;if(j)g=t>1,I=t<C-Q-1;else{var n=c(lg.current,z.direction);g=K?n<F-B-1:n>1,I=K?n>1:n<F-B-1}g===ng.start&&I===ng.end||Ug({start:g,end:I})}}));B.useEffect((function(){var g=Object(U.a)((function(){og(),xg()})),I=Object(s.a)(lg.current);return I.addEventListener("resize",g),function(){g.clear(),I.removeEventListener("resize",g)}}),[og,xg]);var Rg=B.useCallback(Object(U.a)((function(){xg()})));B.useEffect((function(){return function(){Rg.clear()}}),[Rg]),B.useEffect((function(){tg(!0)}),[]),B.useEffect((function(){og(),xg()})),B.useEffect((function(){mg()}),[mg,Qg]),B.useImperativeHandle(l,(function(){return{updateIndicator:og,updateScrollButtons:xg}}),[og,xg]);var Sg=B.createElement(u,Object(C.a)({className:y.indicator,orientation:D,color:R},J,{style:Object(C.a)({},Qg,J.style)})),Gg=0,Lg=B.Children.map(d,(function(g){if(!B.isValidElement(g))return null;var I=void 0===g.props.value?Gg:g.props.value;Ag.set(I,Gg);var e=I===M;return Gg+=1,B.cloneElement(g,{fullWidth:"fullWidth"===w,indicator:e&&!eg&&Sg,selected:e,selectionFollowsFocus:f,onChange:S,textColor:H,value:I})})),Vg=function(){var g={};g.scrollbarSizeListener=O?B.createElement(a,{className:y.scrollable,onChange:Zg}):null;var I=ng.start||ng.end,e=O&&("auto"===W&&I||"desktop"===W||"on"===W);return g.scrollButtonStart=e?B.createElement(E,Object(C.a)({orientation:D,direction:K?"right":"left",onClick:yg,disabled:!ng.start,className:Object(n.default)(y.scrollButtons,"on"!==W&&y.scrollButtonsDesktop)},v)):null,g.scrollButtonEnd=e?B.createElement(E,Object(C.a)({orientation:D,direction:K?"left":"right",onClick:bg,disabled:!ng.end,className:Object(n.default)(y.scrollButtons,"on"!==W&&y.scrollButtonsDesktop)},v)):null,g}();return B.createElement(m,Object(C.a)({className:Object(n.default)(y.root,b,j&&y.vertical),ref:I},T),Vg.scrollButtonStart,Vg.scrollbarSizeListener,B.createElement("div",{className:Object(n.default)(y.scroller,O?y.scrollable:y.fixed),style:ig,ref:lg,onScroll:Rg},B.createElement("div",{"aria-label":e,"aria-labelledby":t,className:Object(n.default)(y.flexContainer,j&&y.flexContainerVertical,o&&!O&&y.centered),onKeyDown:function(g){var I=g.target;if("tab"===I.getAttribute("role")){var e=null,t="vertical"!==D?"ArrowLeft":"ArrowUp",C="vertical"!==D?"ArrowRight":"ArrowDown";switch("vertical"!==D&&"rtl"===z.direction&&(t="ArrowRight",C="ArrowLeft"),g.key){case t:e=I.previousElementSibling||ag.current.lastChild;break;case C:e=I.nextElementSibling||ag.current.firstChild;break;case"Home":e=ag.current.firstChild;break;case"End":e=ag.current.lastChild}null!==e&&(e.focus(),g.preventDefault())}},ref:ag,role:"tablist"},Lg),eg&&Sg),Vg.scrollButtonEnd)}));I.a=Object(r.a)((function(g){return{root:{overflow:"hidden",minHeight:48,WebkitOverflowScrolling:"touch",display:"flex"},vertical:{flexDirection:"column"},flexContainer:{display:"flex"},flexContainerVertical:{flexDirection:"column"},centered:{justifyContent:"center"},scroller:{position:"relative",display:"inline-block",flex:"1 1 auto",whiteSpace:"nowrap"},fixed:{overflowX:"hidden",width:"100%"},scrollable:{overflowX:"scroll",scrollbarWidth:"none","&::-webkit-scrollbar":{display:"none"}},scrollButtons:{},scrollButtonsDesktop:Object(F.a)({},g.breakpoints.down("xs"),{display:"none"}),indicator:{}}}),{name:"MuiTabs"})(h)},function(g,I,e){"use strict";var t=e(16),C=e(5),Q=e(0),F=e.n(Q),B=(e(4),e(14)),n=e(38),U=e(21),s=e(321),i=e(166),c=Object(i.a)(F.a.createElement("path",{d:"M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C12.76,4 13.5,4.11 14.2, 4.31L15.77,2.74C14.61,2.26 13.34,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0, 0 22,12M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z"}),"SuccessOutlined"),A=Object(i.a)(F.a.createElement("path",{d:"M12 5.99L19.53 19H4.47L12 5.99M12 2L1 21h22L12 2zm1 14h-2v2h2v-2zm0-6h-2v4h2v-4z"}),"ReportProblemOutlined"),l=Object(i.a)(F.a.createElement("path",{d:"M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}),"ErrorOutline"),a=Object(i.a)(F.a.createElement("path",{d:"M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20, 12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10, 10 0 0,0 12,2M11,17H13V11H11V17Z"}),"InfoOutlined"),r=Object(i.a)(F.a.createElement("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Close"),o=e(368),d=e(30),u={success:F.a.createElement(c,{fontSize:"inherit"}),warning:F.a.createElement(A,{fontSize:"inherit"}),error:F.a.createElement(l,{fontSize:"inherit"}),info:F.a.createElement(a,{fontSize:"inherit"})},y=F.a.createElement(r,{fontSize:"small"}),b=F.a.forwardRef((function(g,I){var e=g.action,Q=g.children,n=g.classes,U=g.className,i=g.closeText,c=void 0===i?"Close":i,A=g.color,l=g.icon,a=g.iconMapping,r=void 0===a?u:a,b=g.onClose,Z=g.role,m=void 0===Z?"alert":Z,x=g.severity,R=void 0===x?"success":x,S=g.variant,G=void 0===S?"standard":S,L=Object(t.a)(g,["action","children","classes","className","closeText","color","icon","iconMapping","onClose","role","severity","variant"]);return F.a.createElement(s.a,Object(C.a)({role:m,square:!0,elevation:0,className:Object(B.default)(n.root,n["".concat(G).concat(Object(d.a)(A||R))],U),ref:I},L),!1!==l?F.a.createElement("div",{className:n.icon},l||r[R]||u[R]):null,F.a.createElement("div",{className:n.message},Q),null!=e?F.a.createElement("div",{className:n.action},e):null,null==e&&b?F.a.createElement("div",{className:n.action},F.a.createElement(o.a,{size:"small","aria-label":c,title:c,color:"inherit",onClick:b},y)):null)}));I.a=Object(U.a)((function(g){var I="light"===g.palette.type?n.a:n.i,e="light"===g.palette.type?n.i:n.a;return{root:Object(C.a)({},g.typography.body2,{borderRadius:g.shape.borderRadius,backgroundColor:"transparent",display:"flex",padding:"6px 16px"}),standardSuccess:{color:I(g.palette.success.main,.6),backgroundColor:e(g.palette.success.main,.9),"& $icon":{color:g.palette.success.main}},standardInfo:{color:I(g.palette.info.main,.6),backgroundColor:e(g.palette.info.main,.9),"& $icon":{color:g.palette.info.main}},standardWarning:{color:I(g.palette.warning.main,.6),backgroundColor:e(g.palette.warning.main,.9),"& $icon":{color:g.palette.warning.main}},standardError:{color:I(g.palette.error.main,.6),backgroundColor:e(g.palette.error.main,.9),"& $icon":{color:g.palette.error.main}},outlinedSuccess:{color:I(g.palette.success.main,.6),border:"1px solid ".concat(g.palette.success.main),"& $icon":{color:g.palette.success.main}},outlinedInfo:{color:I(g.palette.info.main,.6),border:"1px solid ".concat(g.palette.info.main),"& $icon":{color:g.palette.info.main}},outlinedWarning:{color:I(g.palette.warning.main,.6),border:"1px solid ".concat(g.palette.warning.main),"& $icon":{color:g.palette.warning.main}},outlinedError:{color:I(g.palette.error.main,.6),border:"1px solid ".concat(g.palette.error.main),"& $icon":{color:g.palette.error.main}},filledSuccess:{color:"#fff",fontWeight:g.typography.fontWeightMedium,backgroundColor:g.palette.success.main},filledInfo:{color:"#fff",fontWeight:g.typography.fontWeightMedium,backgroundColor:g.palette.info.main},filledWarning:{color:"#fff",fontWeight:g.typography.fontWeightMedium,backgroundColor:g.palette.warning.main},filledError:{color:"#fff",fontWeight:g.typography.fontWeightMedium,backgroundColor:g.palette.error.main},icon:{marginRight:12,padding:"7px 0",display:"flex",fontSize:22,opacity:.9},message:{padding:"8px 0",display:"flex",flexDirection:"column",justifyContent:"center"},action:{display:"flex",alignItems:"center",marginLeft:"auto",paddingLeft:16,marginRight:-8}}}),{name:"MuiAlert"})(b)},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(4),e(14)),B=e(305),n=e(78),U=Object(n.a)(Q.createElement("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}),"RadioButtonUnchecked"),s=Object(n.a)(Q.createElement("path",{d:"M8.465 8.465C9.37 7.56 10.62 7 12 7C14.76 7 17 9.24 17 12C17 13.38 16.44 14.63 15.535 15.535C14.63 16.44 13.38 17 12 17C9.24 17 7 14.76 7 12C7 10.62 7.56 9.37 8.465 8.465Z"}),"RadioButtonChecked"),i=e(21);var c=Object(i.a)((function(g){return{root:{position:"relative",display:"flex","&$checked $layer":{transform:"scale(1)",transition:g.transitions.create("transform",{easing:g.transitions.easing.easeOut,duration:g.transitions.duration.shortest})}},layer:{left:0,position:"absolute",transform:"scale(0)",transition:g.transitions.create("transform",{easing:g.transitions.easing.easeIn,duration:g.transitions.duration.shortest})},checked:{}}}),{name:"PrivateRadioButtonIcon"})((function(g){var I=g.checked,e=g.classes,t=g.fontSize;return Q.createElement("div",{className:Object(F.default)(e.root,I&&e.checked)},Q.createElement(U,{fontSize:t}),Q.createElement(s,{fontSize:t,className:e.layer}))})),A=e(38),l=e(30),a=e(204),r=e(444);var o=Q.createElement(c,{checked:!0}),d=Q.createElement(c,null),u=Q.forwardRef((function(g,I){var e=g.checked,n=g.classes,U=g.color,s=void 0===U?"secondary":U,i=g.name,c=g.onChange,A=g.size,u=void 0===A?"medium":A,y=Object(C.a)(g,["checked","classes","color","name","onChange","size"]),b=Q.useContext(r.a),Z=e,m=Object(a.a)(c,b&&b.onChange),x=i;return b&&("undefined"===typeof Z&&(Z=b.value===g.value),"undefined"===typeof x&&(x=b.name)),Q.createElement(B.a,Object(t.a)({color:s,type:"radio",icon:Q.cloneElement(d,{fontSize:"small"===u?"small":"default"}),checkedIcon:Q.cloneElement(o,{fontSize:"small"===u?"small":"default"}),classes:{root:Object(F.default)(n.root,n["color".concat(Object(l.a)(s))]),checked:n.checked,disabled:n.disabled},name:x,checked:Z,onChange:m,ref:I},y))}));I.a=Object(i.a)((function(g){return{root:{color:g.palette.text.secondary},checked:{},disabled:{},colorPrimary:{"&$checked":{color:g.palette.primary.main,"&:hover":{backgroundColor:Object(A.d)(g.palette.primary.main,g.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},"&$disabled":{color:g.palette.action.disabled}},colorSecondary:{"&$checked":{color:g.palette.secondary.main,"&:hover":{backgroundColor:Object(A.d)(g.palette.secondary.main,g.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},"&$disabled":{color:g.palette.action.disabled}}}}),{name:"MuiRadio"})(u)},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(4),e(14)),B=e(305),n=e(78),U=Object(n.a)(Q.createElement("path",{d:"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"}),"CheckBoxOutlineBlank"),s=Object(n.a)(Q.createElement("path",{d:"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"}),"CheckBox"),i=e(38),c=Object(n.a)(Q.createElement("path",{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z"}),"IndeterminateCheckBox"),A=e(30),l=e(21),a=Q.createElement(s,null),r=Q.createElement(U,null),o=Q.createElement(c,null),d=Q.forwardRef((function(g,I){var e=g.checkedIcon,n=void 0===e?a:e,U=g.classes,s=g.color,i=void 0===s?"secondary":s,c=g.icon,l=void 0===c?r:c,d=g.indeterminate,u=void 0!==d&&d,y=g.indeterminateIcon,b=void 0===y?o:y,Z=g.inputProps,m=g.size,x=void 0===m?"medium":m,R=Object(C.a)(g,["checkedIcon","classes","color","icon","indeterminate","indeterminateIcon","inputProps","size"]),S=u?b:l,G=u?b:n;return Q.createElement(B.a,Object(t.a)({type:"checkbox",classes:{root:Object(F.default)(U.root,U["color".concat(Object(A.a)(i))],u&&U.indeterminate),checked:U.checked,disabled:U.disabled},color:i,inputProps:Object(t.a)({"data-indeterminate":u},Z),icon:Q.cloneElement(S,{fontSize:void 0===S.props.fontSize&&"small"===x?x:S.props.fontSize}),checkedIcon:Q.cloneElement(G,{fontSize:void 0===G.props.fontSize&&"small"===x?x:G.props.fontSize}),ref:I},R))}));I.a=Object(l.a)((function(g){return{root:{color:g.palette.text.secondary},checked:{},disabled:{},indeterminate:{},colorPrimary:{"&$checked":{color:g.palette.primary.main,"&:hover":{backgroundColor:Object(i.d)(g.palette.primary.main,g.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},"&$disabled":{color:g.palette.action.disabled}},colorSecondary:{"&$checked":{color:g.palette.secondary.main,"&:hover":{backgroundColor:Object(i.d)(g.palette.secondary.main,g.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},"&$disabled":{color:g.palette.action.disabled}}}}),{name:"MuiCheckbox"})(d)},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(4),e(14)),B=e(21),n=e(248),U=e(78),s=Object(U.a)(Q.createElement("path",{d:"M12 0a12 12 0 1 0 0 24 12 12 0 0 0 0-24zm-2 17l-5-5 1.4-1.4 3.6 3.6 7.6-7.6L19 8l-9 9z"}),"CheckCircle"),i=Object(U.a)(Q.createElement("path",{d:"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z"}),"Warning"),c=e(247),A=Q.createElement("circle",{cx:"12",cy:"12",r:"12"}),l=Q.forwardRef((function(g,I){var e=g.completed,t=void 0!==e&&e,C=g.icon,B=g.active,n=void 0!==B&&B,U=g.error,l=void 0!==U&&U,a=g.classes;if("number"===typeof C||"string"===typeof C){var r=Object(F.default)(a.root,n&&a.active,l&&a.error,t&&a.completed);return l?Q.createElement(i,{className:r,ref:I}):t?Q.createElement(s,{className:r,ref:I}):Q.createElement(c.a,{className:r,ref:I},A,Q.createElement("text",{className:a.text,x:"12",y:"16",textAnchor:"middle"},C))}return C})),a=Object(B.a)((function(g){return{root:{display:"block",color:g.palette.text.disabled,"&$completed":{color:g.palette.primary.main},"&$active":{color:g.palette.primary.main},"&$error":{color:g.palette.error.main}},text:{fill:g.palette.primary.contrastText,fontSize:g.typography.caption.fontSize,fontFamily:g.typography.fontFamily},active:{},completed:{},error:{}}}),{name:"MuiStepIcon"})(l),r=Q.forwardRef((function(g,I){var e=g.active,B=void 0!==e&&e,U=g.alternativeLabel,s=void 0!==U&&U,i=g.children,c=g.classes,A=g.className,l=g.completed,r=void 0!==l&&l,o=g.disabled,d=void 0!==o&&o,u=g.error,y=void 0!==u&&u,b=(g.expanded,g.icon),Z=(g.last,g.optional),m=g.orientation,x=void 0===m?"horizontal":m,R=g.StepIconComponent,S=g.StepIconProps,G=Object(C.a)(g,["active","alternativeLabel","children","classes","className","completed","disabled","error","expanded","icon","last","optional","orientation","StepIconComponent","StepIconProps"]),L=R;return b&&!L&&(L=a),Q.createElement("span",Object(t.a)({className:Object(F.default)(c.root,c[x],A,d&&c.disabled,s&&c.alternativeLabel,y&&c.error),ref:I},G),b||L?Q.createElement("span",{className:Object(F.default)(c.iconContainer,s&&c.alternativeLabel)},Q.createElement(L,Object(t.a)({completed:r,active:B,error:y,icon:b},S))):null,Q.createElement("span",{className:c.labelContainer},i?Q.createElement(n.a,{variant:"body2",component:"span",display:"block",className:Object(F.default)(c.label,s&&c.alternativeLabel,r&&c.completed,B&&c.active,y&&c.error)},i):null,Z))}));r.muiName="StepLabel";I.a=Object(B.a)((function(g){return{root:{display:"flex",alignItems:"center","&$alternativeLabel":{flexDirection:"column"},"&$disabled":{cursor:"default"}},horizontal:{},vertical:{},label:{color:g.palette.text.secondary,"&$active":{color:g.palette.text.primary,fontWeight:500},"&$completed":{color:g.palette.text.primary,fontWeight:500},"&$alternativeLabel":{textAlign:"center",marginTop:16},"&$error":{color:g.palette.error.main}},active:{},completed:{},error:{},disabled:{},iconContainer:{flexShrink:0,display:"flex",paddingRight:8,"&$alternativeLabel":{paddingRight:0}},alternativeLabel:{},labelContainer:{width:"100%"}}}),{name:"MuiStepLabel"})(r)},function(g,I,e){"use strict";var t=e(16),C=e(48),Q=e(5),F=e(0),B=(e(4),e(14)),n=e(21),U=e(87),s=e(42),i=e(73),c=e(49),A=e(59);function l(g){return g.substring(2).toLowerCase()}var a=function(g){var I=g.children,e=g.disableReactTree,t=void 0!==e&&e,C=g.mouseEvent,Q=void 0===C?"onClick":C,B=g.onClickAway,n=g.touchEvent,U=void 0===n?"onTouchEnd":n,a=F.useRef(!1),r=F.useRef(null),o=F.useRef(!1),d=F.useRef(!1);F.useEffect((function(){return o.current=!0,function(){o.current=!1}}),[]);var u=F.useCallback((function(g){r.current=s.findDOMNode(g)}),[]),y=Object(c.a)(I.ref,u),b=Object(A.a)((function(g){var I=d.current;if(d.current=!1,o.current&&r.current&&!function(g){return document.documentElement.clientWidth<g.clientX||document.documentElement.clientHeight<g.clientY}(g))if(a.current)a.current=!1;else{var e;if(g.composedPath)e=g.composedPath().indexOf(r.current)>-1;else e=!Object(i.a)(r.current).documentElement.contains(g.target)||r.current.contains(g.target);e||!t&&I||B(g)}})),Z=function(g){return function(e){d.current=!0;var t=I.props[g];t&&t(e)}},m={ref:y};return!1!==U&&(m[U]=Z(U)),F.useEffect((function(){if(!1!==U){var g=l(U),I=Object(i.a)(r.current),e=function(){a.current=!0};return I.addEventListener(g,b),I.addEventListener("touchmove",e),function(){I.removeEventListener(g,b),I.removeEventListener("touchmove",e)}}}),[b,U]),!1!==Q&&(m[Q]=Z(Q)),F.useEffect((function(){if(!1!==Q){var g=l(Q),I=Object(i.a)(r.current);return I.addEventListener(g,b),function(){I.removeEventListener(g,b)}}}),[b,Q]),F.createElement(F.Fragment,null,F.cloneElement(I,m))},r=e(30),o=e(204),d=e(1679),u=e(321),y=e(38),b=F.forwardRef((function(g,I){var e=g.action,C=g.classes,n=g.className,U=g.message,s=g.role,i=void 0===s?"alert":s,c=Object(t.a)(g,["action","classes","className","message","role"]);return F.createElement(u.a,Object(Q.a)({role:i,square:!0,elevation:6,className:Object(B.default)(C.root,n),ref:I},c),F.createElement("div",{className:C.message},U),e?F.createElement("div",{className:C.action},e):null)})),Z=Object(n.a)((function(g){var I="light"===g.palette.type?.8:.98,e=Object(y.c)(g.palette.background.default,I);return{root:Object(Q.a)({},g.typography.body2,Object(C.a)({color:g.palette.getContrastText(e),backgroundColor:e,display:"flex",alignItems:"center",flexWrap:"wrap",padding:"6px 16px",borderRadius:g.shape.borderRadius,flexGrow:1},g.breakpoints.up("sm"),{flexGrow:"initial",minWidth:288})),message:{padding:"8px 0"},action:{display:"flex",alignItems:"center",marginLeft:"auto",paddingLeft:16,marginRight:-8}}}),{name:"MuiSnackbarContent"})(b),m=F.forwardRef((function(g,I){var e=g.action,C=g.anchorOrigin,n=(C=void 0===C?{vertical:"bottom",horizontal:"center"}:C).vertical,s=C.horizontal,i=g.autoHideDuration,c=void 0===i?null:i,l=g.children,u=g.classes,y=g.className,b=g.ClickAwayListenerProps,m=g.ContentProps,x=g.disableWindowBlurListener,R=void 0!==x&&x,S=g.message,G=g.onClose,L=g.onEnter,V=g.onEntered,h=g.onEntering,D=g.onExit,p=g.onExited,E=g.onExiting,N=g.onMouseEnter,W=g.onMouseLeave,f=g.open,X=g.resumeHideDuration,J=g.TransitionComponent,v=void 0===J?d.a:J,k=g.transitionDuration,H=void 0===k?{enter:U.b.enteringScreen,exit:U.b.leavingScreen}:k,M=g.TransitionProps,Y=Object(t.a)(g,["action","anchorOrigin","autoHideDuration","children","classes","className","ClickAwayListenerProps","ContentProps","disableWindowBlurListener","message","onClose","onEnter","onEntered","onEntering","onExit","onExited","onExiting","onMouseEnter","onMouseLeave","open","resumeHideDuration","TransitionComponent","transitionDuration","TransitionProps"]),w=F.useRef(),T=F.useState(!0),z=T[0],O=T[1],K=Object(A.a)((function(){G&&G.apply(void 0,arguments)})),j=Object(A.a)((function(g){G&&null!=g&&(clearTimeout(w.current),w.current=setTimeout((function(){K(null,"timeout")}),g))}));F.useEffect((function(){return f&&j(c),function(){clearTimeout(w.current)}}),[f,c,j]);var P=function(){clearTimeout(w.current)},_=F.useCallback((function(){null!=c&&j(null!=X?X:.5*c)}),[c,X,j]);return F.useEffect((function(){if(!R&&f)return window.addEventListener("focus",_),window.addEventListener("blur",P),function(){window.removeEventListener("focus",_),window.removeEventListener("blur",P)}}),[R,_,f]),!f&&z?null:F.createElement(a,Object(Q.a)({onClickAway:function(g){G&&G(g,"clickaway")}},b),F.createElement("div",Object(Q.a)({className:Object(B.default)(u.root,u["anchorOrigin".concat(Object(r.a)(n)).concat(Object(r.a)(s))],y),onMouseEnter:function(g){N&&N(g),P()},onMouseLeave:function(g){W&&W(g),_()},ref:I},Y),F.createElement(v,Object(Q.a)({appear:!0,in:f,onEnter:Object(o.a)((function(){O(!1)}),L),onEntered:V,onEntering:h,onExit:D,onExited:Object(o.a)((function(){O(!0)}),p),onExiting:E,timeout:H,direction:"top"===n?"down":"up"},M),l||F.createElement(Z,Object(Q.a)({message:S,action:e},m)))))}));I.a=Object(n.a)((function(g){var I={top:8},e={bottom:8},t={justifyContent:"flex-end"},F={justifyContent:"flex-start"},B={top:24},n={bottom:24},U={right:24},s={left:24},i={left:"50%",right:"auto",transform:"translateX(-50%)"};return{root:{zIndex:g.zIndex.snackbar,position:"fixed",display:"flex",left:8,right:8,justifyContent:"center",alignItems:"center"},anchorOriginTopCenter:Object(Q.a)({},I,Object(C.a)({},g.breakpoints.up("sm"),Object(Q.a)({},B,i))),anchorOriginBottomCenter:Object(Q.a)({},e,Object(C.a)({},g.breakpoints.up("sm"),Object(Q.a)({},n,i))),anchorOriginTopRight:Object(Q.a)({},I,t,Object(C.a)({},g.breakpoints.up("sm"),Object(Q.a)({left:"auto"},B,U))),anchorOriginBottomRight:Object(Q.a)({},e,t,Object(C.a)({},g.breakpoints.up("sm"),Object(Q.a)({left:"auto"},n,U))),anchorOriginTopLeft:Object(Q.a)({},I,F,Object(C.a)({},g.breakpoints.up("sm"),Object(Q.a)({right:"auto"},B,s))),anchorOriginBottomLeft:Object(Q.a)({},e,F,Object(C.a)({},g.breakpoints.up("sm"),Object(Q.a)({right:"auto"},n,s)))}}),{flip:!1,name:"MuiSnackbar"})(m)},function(g,I,e){"use strict";var t=e(5),C=e(99),Q=e(16),F=e(0),B=(e(4),e(14)),n=e(21),U=F.forwardRef((function(g,I){var e=g.classes,C=g.className,n=g.row,U=void 0!==n&&n,s=Object(Q.a)(g,["classes","className","row"]);return F.createElement("div",Object(t.a)({className:Object(B.default)(e.root,C,U&&e.row),ref:I},s))})),s=Object(n.a)({root:{display:"flex",flexDirection:"column",flexWrap:"wrap"},row:{flexDirection:"row"}},{name:"MuiFormGroup"})(U),i=e(49),c=e(165),A=e(444);var l=F.forwardRef((function(g,I){var e=g.actions,B=g.children,n=g.name,U=g.value,l=g.onChange,a=Object(Q.a)(g,["actions","children","name","value","onChange"]),r=F.useRef(null),o=Object(c.a)({controlled:U,default:g.defaultValue,name:"RadioGroup"}),d=Object(C.a)(o,2),u=d[0],y=d[1];F.useImperativeHandle(e,(function(){return{focus:function(){var g=r.current.querySelector("input:not(:disabled):checked");g||(g=r.current.querySelector("input:not(:disabled)")),g&&g.focus()}}}),[]);var b=Object(i.a)(I,r),Z=function(g){var I=F.useState(g),e=I[0],t=I[1],C=g||e;return F.useEffect((function(){null==e&&t("mui-".concat(Math.round(1e5*Math.random())))}),[e]),C}(n);return F.createElement(A.a.Provider,{value:{name:Z,onChange:function(g){y(g.target.value),l&&l(g,g.target.value)},value:u}},F.createElement(s,Object(t.a)({role:"radiogroup",ref:b},a),B))}));I.a=l},function(g,I,e){"use strict";var t=e(16),C=e(5),Q=e(0),F=(e(4),e(42)),B=e(1676),n=e(174),U=e(73),s=e(59),i=e(87),c=e(77),A=e(120),l="undefined"!==typeof window?Q.useLayoutEffect:Q.useEffect;var a=function(g){var I=g.children,e=g.defer,t=void 0!==e&&e,C=g.fallback,F=void 0===C?null:C,B=Q.useState(!1),n=B[0],U=B[1];return l((function(){t||U(!0)}),[t]),Q.useEffect((function(){t&&U(!0)}),[t]),Q.createElement(Q.Fragment,null,n?I:F)},r=e(48),o=e(14),d=e(21),u=e(30),y=Q.forwardRef((function(g,I){var e=g.anchor,F=g.classes,B=g.className,U=g.width,s=Object(t.a)(g,["anchor","classes","className","width"]);return Q.createElement("div",Object(C.a)({className:Object(o.default)(F.root,F["anchor".concat(Object(u.a)(e))],B),ref:I,style:Object(r.a)({},Object(n.c)(e)?"width":"height",U)},s))})),b=Object(d.a)((function(g){return{root:{position:"fixed",top:0,left:0,bottom:0,zIndex:g.zIndex.drawer-1},anchorLeft:{right:"auto"},anchorRight:{left:"auto",right:0},anchorTop:{bottom:"auto",right:0},anchorBottom:{top:"auto",bottom:0,right:0}}}),{name:"PrivateSwipeArea"})(y),Z=null;function m(g,I){return"right"===g?document.body.offsetWidth-I[0].pageX:I[0].pageX}function x(g,I){return"bottom"===g?window.innerHeight-I[0].clientY:I[0].clientY}function R(g,I){return g?I.clientWidth:I.clientHeight}function S(g,I,e,t){return Math.min(Math.max(e?I-g:t+I-g,0),t)}var G="undefined"!==typeof navigator&&/iPad|iPhone|iPod/.test(navigator.userAgent),L={enter:i.b.enteringScreen,exit:i.b.leavingScreen},V="undefined"!==typeof window?Q.useLayoutEffect:Q.useEffect,h=Q.forwardRef((function(g,I){var e=Object(c.a)(),i=Object(B.a)({name:"MuiSwipeableDrawer",props:Object(C.a)({},g),theme:e}),l=i.anchor,r=void 0===l?"left":l,o=i.disableBackdropTransition,d=void 0!==o&&o,u=i.disableDiscovery,y=void 0!==u&&u,h=i.disableSwipeToOpen,D=void 0===h?G:h,p=i.hideBackdrop,E=i.hysteresis,N=void 0===E?.52:E,W=i.minFlingVelocity,f=void 0===W?450:W,X=i.ModalProps,J=(X=void 0===X?{}:X).BackdropProps,v=Object(t.a)(X,["BackdropProps"]),k=i.onClose,H=i.onOpen,M=i.open,Y=i.PaperProps,w=void 0===Y?{}:Y,T=i.SwipeAreaProps,z=i.swipeAreaWidth,O=void 0===z?20:z,K=i.transitionDuration,j=void 0===K?L:K,P=i.variant,_=void 0===P?"temporary":P,q=Object(t.a)(i,["anchor","disableBackdropTransition","disableDiscovery","disableSwipeToOpen","hideBackdrop","hysteresis","minFlingVelocity","ModalProps","onClose","onOpen","open","PaperProps","SwipeAreaProps","swipeAreaWidth","transitionDuration","variant"]),$=Q.useState(!1),gg=$[0],Ig=$[1],eg=Q.useRef({isSwiping:null}),tg=Q.useRef(),Cg=Q.useRef(),Qg=Q.useRef(),Fg=Q.useRef(!1),Bg=Q.useRef();V((function(){Bg.current=null}),[M]);var ng=Q.useCallback((function(g){var I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=I.mode,C=void 0===t?null:t,Q=I.changeTransition,F=void 0===Q||Q,B=Object(n.b)(e,r),U=-1!==["right","bottom"].indexOf(B)?1:-1,s=Object(n.c)(r),i=s?"translate(".concat(U*g,"px, 0)"):"translate(0, ".concat(U*g,"px)"),c=Qg.current.style;c.webkitTransform=i,c.transform=i;var l="";if(C&&(l=e.transitions.create("all",Object(A.a)({timeout:j},{mode:C}))),F&&(c.webkitTransition=l,c.transition=l),!d&&!p){var a=Cg.current.style;a.opacity=1-g/R(s,Qg.current),F&&(a.webkitTransition=l,a.transition=l)}}),[r,d,p,e,j]),Ug=Object(s.a)((function(g){if(Fg.current)if(Z=null,Fg.current=!1,Ig(!1),eg.current.isSwiping){eg.current.isSwiping=null;var I,t=Object(n.b)(e,r),C=Object(n.c)(r);I=C?m(t,g.changedTouches):x(t,g.changedTouches);var Q=C?eg.current.startX:eg.current.startY,F=R(C,Qg.current),B=S(I,Q,M,F),U=B/F;Math.abs(eg.current.velocity)>f&&(Bg.current=1e3*Math.abs((F-B)/eg.current.velocity)),M?eg.current.velocity>f||U>N?k():ng(0,{mode:"exit"}):eg.current.velocity<-f||1-U>N?H():ng(R(C,Qg.current),{mode:"enter"})}else eg.current.isSwiping=null})),sg=Object(s.a)((function(g){if(Qg.current&&Fg.current&&(null==Z||Z===eg.current)){var I=Object(n.b)(e,r),t=Object(n.c)(r),C=m(I,g.touches),Q=x(I,g.touches);if(M&&Qg.current.contains(g.target)&&null==Z){var F=function(g){var I=g.domTreeShapes,e=g.start,t=g.current,C=g.anchor,Q={x:"scrollLeft",y:"scrollTop"},F={x:"scrollWidth",y:"scrollHeight"},B={x:"clientWidth",y:"clientHeight"};return I.some((function(g){var I=t>=e;"top"!==C&&"left"!==C||(I=!I);var n="left"===C||"right"===C?"x":"y",U=g[Q[n]],s=U>0,i=U+g[B[n]]<g[F[n]];return I&&i||!I&&s?g:null}))}({domTreeShapes:function(g,I){for(var e=[];g&&g!==I;){var t=window.getComputedStyle(g);"absolute"===t.getPropertyValue("position")||"hidden"===t.getPropertyValue("overflow-x")?e=[]:(g.clientWidth>0&&g.scrollWidth>g.clientWidth||g.clientHeight>0&&g.scrollHeight>g.clientHeight)&&e.push(g),g=g.parentElement}return e}(g.target,Qg.current),start:t?eg.current.startX:eg.current.startY,current:t?C:Q,anchor:r});if(F)return void(Z=F);Z=eg.current}if(null==eg.current.isSwiping){var B=Math.abs(C-eg.current.startX),U=Math.abs(Q-eg.current.startY);B>U&&g.cancelable&&g.preventDefault();var s=t?B>U&&B>3:U>B&&U>3;if(!0===s||(t?U>3:B>3)){if(eg.current.isSwiping=s,!s)return void Ug(g);eg.current.startX=C,eg.current.startY=Q,y||M||(t?eg.current.startX-=O:eg.current.startY-=O)}}if(eg.current.isSwiping){var i=R(t,Qg.current),c=t?eg.current.startX:eg.current.startY;M&&!eg.current.paperHit&&(c=Math.min(c,i));var A=S(t?C:Q,c,M,i);if(M)if(eg.current.paperHit)0===A&&(eg.current.startX=C,eg.current.startY=Q);else{if(!(t?C<i:Q<i))return;eg.current.paperHit=!0,eg.current.startX=C,eg.current.startY=Q}null===eg.current.lastTranslate&&(eg.current.lastTranslate=A,eg.current.lastTime=performance.now()+1);var l=(A-eg.current.lastTranslate)/(performance.now()-eg.current.lastTime)*1e3;eg.current.velocity=.4*eg.current.velocity+.6*l,eg.current.lastTranslate=A,eg.current.lastTime=performance.now(),g.cancelable&&g.preventDefault(),ng(A)}}})),ig=Object(s.a)((function(g){if(!g.defaultPrevented&&!g.muiHandled&&(!M||Cg.current.contains(g.target)||Qg.current.contains(g.target))){var I=Object(n.b)(e,r),t=Object(n.c)(r),C=m(I,g.touches),Q=x(I,g.touches);if(!M){if(D||g.target!==tg.current)return;if(t){if(C>O)return}else if(Q>O)return}g.muiHandled=!0,Z=null,eg.current.startX=C,eg.current.startY=Q,Ig(!0),!M&&Qg.current&&ng(R(t,Qg.current)+(y?20:-O),{changeTransition:!1}),eg.current.velocity=0,eg.current.lastTime=null,eg.current.lastTranslate=null,eg.current.paperHit=!1,Fg.current=!0}}));Q.useEffect((function(){if("temporary"===_){var g=Object(U.a)(Qg.current);return g.addEventListener("touchstart",ig),g.addEventListener("touchmove",sg,{passive:!1}),g.addEventListener("touchend",Ug),function(){g.removeEventListener("touchstart",ig),g.removeEventListener("touchmove",sg,{passive:!1}),g.removeEventListener("touchend",Ug)}}}),[_,ig,sg,Ug]),Q.useEffect((function(){return function(){Z===eg.current&&(Z=null)}}),[]),Q.useEffect((function(){M||Ig(!1)}),[M]);var cg=Q.useCallback((function(g){Cg.current=F.findDOMNode(g)}),[]);return Q.createElement(Q.Fragment,null,Q.createElement(n.a,Object(C.a)({open:!("temporary"!==_||!gg)||M,variant:_,ModalProps:Object(C.a)({BackdropProps:Object(C.a)({},J,{ref:cg})},v),PaperProps:Object(C.a)({},w,{style:Object(C.a)({pointerEvents:"temporary"!==_||M?"":"none"},w.style),ref:Qg}),anchor:r,transitionDuration:Bg.current||j,onClose:k,ref:I},q)),!D&&"temporary"===_&&Q.createElement(a,null,Q.createElement(b,Object(C.a)({anchor:r,ref:tg,width:O},T))))}));I.a=h},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(4),e(1727)),B=e(99),n=e(181),U=e(427),s=(e(122),e(14)),i=e(73),c=e(30),A=e(423),l=e(263),a=e(49),r=e(165);function o(g,I){return"object"===Object(n.a)(I)&&null!==I?g===I:String(g)===String(I)}var d=Q.forwardRef((function(g,I){var e=g["aria-label"],F=g.autoFocus,n=g.autoWidth,d=g.children,u=g.classes,y=g.className,b=g.defaultValue,Z=g.disabled,m=g.displayEmpty,x=g.IconComponent,R=g.inputRef,S=g.labelId,G=g.MenuProps,L=void 0===G?{}:G,V=g.multiple,h=g.name,D=g.onBlur,p=g.onChange,E=g.onClose,N=g.onFocus,W=g.onOpen,f=g.open,X=g.readOnly,J=g.renderValue,v=g.SelectDisplayProps,k=void 0===v?{}:v,H=g.tabIndex,M=(g.type,g.value),Y=g.variant,w=void 0===Y?"standard":Y,T=Object(C.a)(g,["aria-label","autoFocus","autoWidth","children","classes","className","defaultValue","disabled","displayEmpty","IconComponent","inputRef","labelId","MenuProps","multiple","name","onBlur","onChange","onClose","onFocus","onOpen","open","readOnly","renderValue","SelectDisplayProps","tabIndex","type","value","variant"]),z=Object(r.a)({controlled:M,default:b,name:"Select"}),O=Object(B.a)(z,2),K=O[0],j=O[1],P=Q.useRef(null),_=Q.useState(null),q=_[0],$=_[1],gg=Q.useRef(null!=f).current,Ig=Q.useState(),eg=Ig[0],tg=Ig[1],Cg=Q.useState(!1),Qg=Cg[0],Fg=Cg[1],Bg=Object(a.a)(I,R);Q.useImperativeHandle(Bg,(function(){return{focus:function(){q.focus()},node:P.current,value:K}}),[q,K]),Q.useEffect((function(){F&&q&&q.focus()}),[F,q]),Q.useEffect((function(){if(q){var g=Object(i.a)(q).getElementById(S);if(g){var I=function(){getSelection().isCollapsed&&q.focus()};return g.addEventListener("click",I),function(){g.removeEventListener("click",I)}}}}),[S,q]);var ng,Ug,sg=function(g,I){g?W&&W(I):E&&E(I),gg||(tg(n?null:q.clientWidth),Fg(g))},ig=Q.Children.toArray(d),cg=function(g){return function(I){var e;if(V||sg(!1,I),V){e=Array.isArray(K)?K.slice():[];var t=K.indexOf(g.props.value);-1===t?e.push(g.props.value):e.splice(t,1)}else e=g.props.value;g.props.onClick&&g.props.onClick(I),K!==e&&(j(e),p&&(I.persist(),Object.defineProperty(I,"target",{writable:!0,value:{value:e,name:h}}),p(I,g)))}},Ag=null!==q&&(gg?f:Qg);delete T["aria-invalid"];var lg=[],ag=!1;(Object(l.b)({value:K})||m)&&(J?ng=J(K):ag=!0);var rg=ig.map((function(g){if(!Q.isValidElement(g))return null;var I;if(V){if(!Array.isArray(K))throw new Error(Object(U.a)(2));(I=K.some((function(I){return o(I,g.props.value)})))&&ag&&lg.push(g.props.children)}else(I=o(K,g.props.value))&&ag&&(Ug=g.props.children);return I&&!0,Q.cloneElement(g,{"aria-selected":I?"true":void 0,onClick:cg(g),onKeyUp:function(I){" "===I.key&&I.preventDefault(),g.props.onKeyUp&&g.props.onKeyUp(I)},role:"option",selected:I,value:void 0,"data-value":g.props.value})}));ag&&(ng=V?lg.join(", "):Ug);var og,dg=eg;!n&&gg&&q&&(dg=q.clientWidth),og="undefined"!==typeof H?H:Z?null:0;var ug=k.id||(h?"mui-component-select-".concat(h):void 0);return Q.createElement(Q.Fragment,null,Q.createElement("div",Object(t.a)({className:Object(s.default)(u.root,u.select,u.selectMenu,u[w],y,Z&&u.disabled),ref:$,tabIndex:og,role:"button","aria-disabled":Z?"true":void 0,"aria-expanded":Ag?"true":void 0,"aria-haspopup":"listbox","aria-label":e,"aria-labelledby":[S,ug].filter(Boolean).join(" ")||void 0,onKeyDown:function(g){if(!X){-1!==[" ","ArrowUp","ArrowDown","Enter"].indexOf(g.key)&&(g.preventDefault(),sg(!0,g))}},onMouseDown:Z||X?null:function(g){0===g.button&&(g.preventDefault(),q.focus(),sg(!0,g))},onBlur:function(g){!Ag&&D&&(g.persist(),Object.defineProperty(g,"target",{writable:!0,value:{value:K,name:h}}),D(g))},onFocus:N},k,{id:ug}),function(g){return null==g||"string"===typeof g&&!g.trim()}(ng)?Q.createElement("span",{dangerouslySetInnerHTML:{__html:"&#8203;"}}):ng),Q.createElement("input",Object(t.a)({value:Array.isArray(K)?K.join(","):K,name:h,ref:P,"aria-hidden":!0,onChange:function(g){var I=ig.map((function(g){return g.props.value})).indexOf(g.target.value);if(-1!==I){var e=ig[I];j(e.props.value),p&&p(g,e)}},tabIndex:-1,className:u.nativeInput,autoFocus:F},T)),Q.createElement(x,{className:Object(s.default)(u.icon,u["icon".concat(Object(c.a)(w))],Ag&&u.iconOpen,Z&&u.disabled)}),Q.createElement(A.a,Object(t.a)({id:"menu-".concat(h||""),anchorEl:q,open:Ag,onClose:function(g){sg(!1,g)}},L,{MenuListProps:Object(t.a)({"aria-labelledby":S,role:"listbox",disableListWrap:!0},L.MenuListProps),PaperProps:Object(t.a)({},L.PaperProps,{style:Object(t.a)({minWidth:dg},null!=L.PaperProps?L.PaperProps.style:null)})}),rg))})),u=e(164),y=e(153),b=e(21),Z=e(439),m=e(1677),x=e(422),R=e(440),S=e(1729),G=e(1783),L=x.b,V=Q.createElement(m.a,null),h=Q.createElement(S.a,null),D=Q.forwardRef((function g(I,e){var B=I.autoWidth,n=void 0!==B&&B,U=I.children,s=I.classes,i=I.displayEmpty,c=void 0!==i&&i,A=I.IconComponent,l=void 0===A?Z.a:A,a=I.id,r=I.input,o=I.inputProps,b=I.label,m=I.labelId,x=I.labelWidth,S=void 0===x?0:x,L=I.MenuProps,D=I.multiple,p=void 0!==D&&D,E=I.native,N=void 0!==E&&E,W=I.onClose,f=I.onOpen,X=I.open,J=I.renderValue,v=I.SelectDisplayProps,k=I.variant,H=void 0===k?"standard":k,M=Object(C.a)(I,["autoWidth","children","classes","displayEmpty","IconComponent","id","input","inputProps","label","labelId","labelWidth","MenuProps","multiple","native","onClose","onOpen","open","renderValue","SelectDisplayProps","variant"]),Y=N?R.a:d,w=Object(y.a)(),T=Object(u.a)({props:I,muiFormControl:w,states:["variant"]}).variant||H,z=r||{standard:V,outlined:Q.createElement(G.a,{label:b,labelWidth:S}),filled:h}[T];return Q.cloneElement(z,Object(t.a)({inputComponent:Y,inputProps:Object(t.a)({children:U,IconComponent:l,variant:T,type:void 0,multiple:p},N?{id:a}:{autoWidth:n,displayEmpty:c,labelId:m,MenuProps:L,onClose:W,onOpen:f,open:X,renderValue:J,SelectDisplayProps:Object(t.a)({id:a},v)},o,{classes:o?Object(F.a)({baseClasses:s,newClasses:o.classes,Component:g}):s},r?r.props.inputProps:{}),ref:e},M))}));D.muiName="Select";I.a=Object(b.a)(L,{name:"MuiSelect"})(D)},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(4),e(14)),B=e(929),n=e(48),U=e(21),s=e(77),i=e(30),c=Q.forwardRef((function(g,I){g.children;var e=g.classes,B=g.className,U=g.label,c=g.labelWidth,A=g.notched,l=g.style,a=Object(C.a)(g,["children","classes","className","label","labelWidth","notched","style"]),r="rtl"===Object(s.a)().direction?"right":"left";if(void 0!==U)return Q.createElement("fieldset",Object(t.a)({"aria-hidden":!0,className:Object(F.default)(e.root,B),ref:I,style:l},a),Q.createElement("legend",{className:Object(F.default)(e.legendLabelled,A&&e.legendNotched)},U?Q.createElement("span",null,U):Q.createElement("span",{dangerouslySetInnerHTML:{__html:"&#8203;"}})));var o=c>0?.75*c+8:.01;return Q.createElement("fieldset",Object(t.a)({"aria-hidden":!0,style:Object(t.a)(Object(n.a)({},"padding".concat(Object(i.a)(r)),8),l),className:Object(F.default)(e.root,B),ref:I},a),Q.createElement("legend",{className:e.legend,style:{width:A?o:.01}},Q.createElement("span",{dangerouslySetInnerHTML:{__html:"&#8203;"}})))})),A=Object(U.a)((function(g){return{root:{position:"absolute",bottom:0,right:0,top:-5,left:0,margin:0,padding:"0 8px",pointerEvents:"none",borderRadius:"inherit",borderStyle:"solid",borderWidth:1,overflow:"hidden"},legend:{textAlign:"left",padding:0,lineHeight:"11px",transition:g.transitions.create("width",{duration:150,easing:g.transitions.easing.easeOut})},legendLabelled:{display:"block",width:"auto",textAlign:"left",padding:0,height:11,fontSize:"0.75em",visibility:"hidden",maxWidth:.01,transition:g.transitions.create("max-width",{duration:50,easing:g.transitions.easing.easeOut}),"& > span":{paddingLeft:5,paddingRight:5,display:"inline-block"}},legendNotched:{maxWidth:1e3,transition:g.transitions.create("max-width",{duration:100,easing:g.transitions.easing.easeOut,delay:50})}}}),{name:"PrivateNotchedOutline"})(c),l=Q.forwardRef((function(g,I){var e=g.classes,n=g.fullWidth,U=void 0!==n&&n,s=g.inputComponent,i=void 0===s?"input":s,c=g.label,l=g.labelWidth,a=void 0===l?0:l,r=g.multiline,o=void 0!==r&&r,d=g.notched,u=g.type,y=void 0===u?"text":u,b=Object(C.a)(g,["classes","fullWidth","inputComponent","label","labelWidth","multiline","notched","type"]);return Q.createElement(B.a,Object(t.a)({renderSuffix:function(g){return Q.createElement(A,{className:e.notchedOutline,label:c,labelWidth:a,notched:"undefined"!==typeof d?d:Boolean(g.startAdornment||g.filled||g.focused)})},classes:Object(t.a)({},e,{root:Object(F.default)(e.root,e.underline),notchedOutline:null}),fullWidth:U,inputComponent:i,multiline:o,ref:I,type:y},b))}));l.muiName="Input";I.a=Object(U.a)((function(g){var I="light"===g.palette.type?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)";return{root:{position:"relative",borderRadius:g.shape.borderRadius,"&:hover $notchedOutline":{borderColor:g.palette.text.primary},"@media (hover: none)":{"&:hover $notchedOutline":{borderColor:I}},"&$focused $notchedOutline":{borderColor:g.palette.primary.main,borderWidth:2},"&$error $notchedOutline":{borderColor:g.palette.error.main},"&$disabled $notchedOutline":{borderColor:g.palette.action.disabled}},colorSecondary:{"&$focused $notchedOutline":{borderColor:g.palette.secondary.main}},focused:{},disabled:{},adornedStart:{paddingLeft:14},adornedEnd:{paddingRight:14},error:{},marginDense:{},multiline:{padding:"18.5px 14px","&$marginDense":{paddingTop:10.5,paddingBottom:10.5}},notchedOutline:{borderColor:I},input:{padding:"18.5px 14px","&:-webkit-autofill":{WebkitBoxShadow:"light"===g.palette.type?null:"0 0 0 100px #266798 inset",WebkitTextFillColor:"light"===g.palette.type?null:"#fff",caretColor:"light"===g.palette.type?null:"#fff",borderRadius:"inherit"}},inputMarginDense:{paddingTop:10.5,paddingBottom:10.5},inputMultiline:{padding:0},inputAdornedStart:{paddingLeft:0},inputAdornedEnd:{paddingRight:0}}}),{name:"MuiOutlinedInput"})(l)},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=(e(4),e(14)),B=e(21),n=e(78),U=Object(n.a)(Q.createElement("path",{d:"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"}),"Person");var s=Q.forwardRef((function(g,I){var e=g.alt,B=g.children,n=g.classes,s=g.className,i=g.component,c=void 0===i?"div":i,A=g.imgProps,l=g.sizes,a=g.src,r=g.srcSet,o=g.variant,d=void 0===o?"circle":o,u=Object(C.a)(g,["alt","children","classes","className","component","imgProps","sizes","src","srcSet","variant"]),y=null,b=function(g){var I=g.src,e=g.srcSet,t=Q.useState(!1),C=t[0],F=t[1];return Q.useEffect((function(){if(I||e){F(!1);var g=!0,t=new Image;return t.src=I,t.srcSet=e,t.onload=function(){g&&F("loaded")},t.onerror=function(){g&&F("error")},function(){g=!1}}}),[I,e]),C}({src:a,srcSet:r}),Z=a||r,m=Z&&"error"!==b;return y=m?Q.createElement("img",Object(t.a)({alt:e,src:a,srcSet:r,sizes:l,className:n.img},A)):null!=B?B:Z&&e?e[0]:Q.createElement(U,{className:n.fallback}),Q.createElement(c,Object(t.a)({className:Object(F.default)(n.root,n.system,n[d],s,!m&&n.colorDefault),ref:I},u),y)}));I.a=Object(B.a)((function(g){return{root:{position:"relative",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0,width:40,height:40,fontFamily:g.typography.fontFamily,fontSize:g.typography.pxToRem(20),lineHeight:1,borderRadius:"50%",overflow:"hidden",userSelect:"none"},colorDefault:{color:g.palette.background.default,backgroundColor:"light"===g.palette.type?g.palette.grey[400]:g.palette.grey[600]},circle:{},rounded:{borderRadius:g.shape.borderRadius},square:{borderRadius:0},img:{width:"100%",height:"100%",textAlign:"center",objectFit:"cover",color:"transparent",textIndent:1e4},fallback:{width:"75%",height:"75%"}}}),{name:"MuiAvatar"})(s)},function(g,I,e){"use strict";var t=e(168),C=e(99),Q=e(16),F=e(5),B=e(0),n=(e(4),e(14)),U=e(21),s=e(77),i=e(38),c=e(434),A=e(73),l=e(59),a=e(49),r=e(30),o=e(165);var d=Object(U.a)((function(g){return{thumb:{"&$open":{"& $offset":{transform:"scale(1) translateY(-10px)"}}},open:{},offset:Object(F.a)({zIndex:1},g.typography.body2,{fontSize:g.typography.pxToRem(12),lineHeight:1.2,transition:g.transitions.create(["transform"],{duration:g.transitions.duration.shortest}),top:-34,transformOrigin:"bottom center",transform:"scale(0)",position:"absolute"}),circle:{display:"flex",alignItems:"center",justifyContent:"center",width:32,height:32,borderRadius:"50% 50% 50% 0",backgroundColor:"currentColor",transform:"rotate(-45deg)"},label:{color:g.palette.primary.contrastText,transform:"rotate(45deg)"}}}),{name:"PrivateValueLabel"})((function(g){var I=g.children,e=g.classes,t=g.className,C=g.open,Q=g.value,F=g.valueLabelDisplay;return"off"===F?I:B.cloneElement(I,{className:Object(n.default)(I.props.className,(C||"on"===F)&&e.open,e.thumb)},B.createElement("span",{className:Object(n.default)(e.offset,t)},B.createElement("span",{className:e.circle},B.createElement("span",{className:e.label},Q))))}));function u(g,I){return g-I}function y(g,I,e){return Math.min(Math.max(I,g),e)}function b(g,I){return g.reduce((function(g,e,t){var C=Math.abs(I-e);return null===g||C<g.distance||C===g.distance?{distance:C,index:t}:g}),null).index}function Z(g,I){if(void 0!==I.current&&g.changedTouches){for(var e=0;e<g.changedTouches.length;e+=1){var t=g.changedTouches[e];if(t.identifier===I.current)return{x:t.clientX,y:t.clientY}}return!1}return{x:g.clientX,y:g.clientY}}function m(g,I,e){return 100*(g-I)/(e-I)}function x(g,I,e){var t=Math.round((g-e)/I)*I+e;return Number(t.toFixed(function(g){if(Math.abs(g)<1){var I=g.toExponential().split("e-"),e=I[0].split(".")[1];return(e?e.length:0)+parseInt(I[1],10)}var t=g.toString().split(".")[1];return t?t.length:0}(I)))}function R(g){var I=g.values,e=g.source,t=g.newValue,C=g.index;if(I[C]===t)return e;var Q=I.slice();return Q[C]=t,Q}function S(g){var I=g.sliderRef,e=g.activeIndex,t=g.setActive;I.current.contains(document.activeElement)&&Number(document.activeElement.getAttribute("data-index"))===e||I.current.querySelector('[role="slider"][data-index="'.concat(e,'"]')).focus(),t&&t(e)}var G={horizontal:{offset:function(g){return{left:"".concat(g,"%")}},leap:function(g){return{width:"".concat(g,"%")}}},"horizontal-reverse":{offset:function(g){return{right:"".concat(g,"%")}},leap:function(g){return{width:"".concat(g,"%")}}},vertical:{offset:function(g){return{bottom:"".concat(g,"%")}},leap:function(g){return{height:"".concat(g,"%")}}}},L=function(g){return g},V=B.forwardRef((function(g,I){var e=g["aria-label"],U=g["aria-labelledby"],i=g["aria-valuetext"],V=g.classes,h=g.className,D=g.color,p=void 0===D?"primary":D,E=g.component,N=void 0===E?"span":E,W=g.defaultValue,f=g.disabled,X=void 0!==f&&f,J=g.getAriaLabel,v=g.getAriaValueText,k=g.marks,H=void 0!==k&&k,M=g.max,Y=void 0===M?100:M,w=g.min,T=void 0===w?0:w,z=g.name,O=g.onChange,K=g.onChangeCommitted,j=g.onMouseDown,P=g.orientation,_=void 0===P?"horizontal":P,q=g.scale,$=void 0===q?L:q,gg=g.step,Ig=void 0===gg?1:gg,eg=g.ThumbComponent,tg=void 0===eg?"span":eg,Cg=g.track,Qg=void 0===Cg?"normal":Cg,Fg=g.value,Bg=g.ValueLabelComponent,ng=void 0===Bg?d:Bg,Ug=g.valueLabelDisplay,sg=void 0===Ug?"off":Ug,ig=g.valueLabelFormat,cg=void 0===ig?L:ig,Ag=Object(Q.a)(g,["aria-label","aria-labelledby","aria-valuetext","classes","className","color","component","defaultValue","disabled","getAriaLabel","getAriaValueText","marks","max","min","name","onChange","onChangeCommitted","onMouseDown","orientation","scale","step","ThumbComponent","track","value","ValueLabelComponent","valueLabelDisplay","valueLabelFormat"]),lg=Object(s.a)(),ag=B.useRef(),rg=B.useState(-1),og=rg[0],dg=rg[1],ug=B.useState(-1),yg=ug[0],bg=ug[1],Zg=Object(o.a)({controlled:Fg,default:W,name:"Slider"}),mg=Object(C.a)(Zg,2),xg=mg[0],Rg=mg[1],Sg=Array.isArray(xg),Gg=Sg?xg.slice().sort(u):[xg];Gg=Gg.map((function(g){return y(g,T,Y)}));var Lg=!0===H&&null!==Ig?Object(t.a)(Array(Math.floor((Y-T)/Ig)+1)).map((function(g,I){return{value:T+Ig*I}})):H||[],Vg=Object(c.a)(),hg=Vg.isFocusVisible,Dg=Vg.onBlurVisible,pg=Vg.ref,Eg=B.useState(-1),Ng=Eg[0],Wg=Eg[1],fg=B.useRef(),Xg=Object(a.a)(pg,fg),Jg=Object(a.a)(I,Xg),vg=Object(l.a)((function(g){var I=Number(g.currentTarget.getAttribute("data-index"));hg(g)&&Wg(I),bg(I)})),kg=Object(l.a)((function(){-1!==Ng&&(Wg(-1),Dg()),bg(-1)})),Hg=Object(l.a)((function(g){var I=Number(g.currentTarget.getAttribute("data-index"));bg(I)})),Mg=Object(l.a)((function(){bg(-1)})),Yg="rtl"===lg.direction,wg=Object(l.a)((function(g){var I,e=Number(g.currentTarget.getAttribute("data-index")),t=Gg[e],C=(Y-T)/10,Q=Lg.map((function(g){return g.value})),F=Q.indexOf(t),B=Yg?"ArrowLeft":"ArrowRight",n=Yg?"ArrowRight":"ArrowLeft";switch(g.key){case"Home":I=T;break;case"End":I=Y;break;case"PageUp":Ig&&(I=t+C);break;case"PageDown":Ig&&(I=t-C);break;case B:case"ArrowUp":I=Ig?t+Ig:Q[F+1]||Q[Q.length-1];break;case n:case"ArrowDown":I=Ig?t-Ig:Q[F-1]||Q[0];break;default:return}if(g.preventDefault(),Ig&&(I=x(I,Ig,T)),I=y(I,T,Y),Sg){var U=I;I=R({values:Gg,source:xg,newValue:I,index:e}).sort(u),S({sliderRef:fg,activeIndex:I.indexOf(U)})}Rg(I),Wg(e),O&&O(g,I),K&&K(g,I)})),Tg=B.useRef(),zg=_;Yg&&"vertical"!==_&&(zg+="-reverse");var Og=function(g){var I,e,t=g.finger,C=g.move,Q=void 0!==C&&C,F=g.values,B=g.source,n=fg.current.getBoundingClientRect(),U=n.width,s=n.height,i=n.bottom,c=n.left;if(I=0===zg.indexOf("vertical")?(i-t.y)/s:(t.x-c)/U,-1!==zg.indexOf("-reverse")&&(I=1-I),e=function(g,I,e){return(e-I)*g+I}(I,T,Y),Ig)e=x(e,Ig,T);else{var A=Lg.map((function(g){return g.value}));e=A[b(A,e)]}e=y(e,T,Y);var l=0;if(Sg){var a=e;l=(e=R({values:F,source:B,newValue:e,index:l=Q?Tg.current:b(F,e)}).sort(u)).indexOf(a),Tg.current=l}return{newValue:e,activeIndex:l}},Kg=Object(l.a)((function(g){var I=Z(g,ag);if(I){var e=Og({finger:I,move:!0,values:Gg,source:xg}),t=e.newValue,C=e.activeIndex;S({sliderRef:fg,activeIndex:C,setActive:dg}),Rg(t),O&&O(g,t)}})),jg=Object(l.a)((function(g){var I=Z(g,ag);if(I){var e=Og({finger:I,values:Gg,source:xg}).newValue;dg(-1),"touchend"===g.type&&bg(-1),K&&K(g,e),ag.current=void 0;var t=Object(A.a)(fg.current);t.removeEventListener("mousemove",Kg),t.removeEventListener("mouseup",jg),t.removeEventListener("touchmove",Kg),t.removeEventListener("touchend",jg)}})),Pg=Object(l.a)((function(g){g.preventDefault();var I=g.changedTouches[0];null!=I&&(ag.current=I.identifier);var e=Z(g,ag),t=Og({finger:e,values:Gg,source:xg}),C=t.newValue,Q=t.activeIndex;S({sliderRef:fg,activeIndex:Q,setActive:dg}),Rg(C),O&&O(g,C);var F=Object(A.a)(fg.current);F.addEventListener("touchmove",Kg),F.addEventListener("touchend",jg)}));B.useEffect((function(){var g=fg.current;g.addEventListener("touchstart",Pg);var I=Object(A.a)(g);return function(){g.removeEventListener("touchstart",Pg),I.removeEventListener("mousemove",Kg),I.removeEventListener("mouseup",jg),I.removeEventListener("touchmove",Kg),I.removeEventListener("touchend",jg)}}),[jg,Kg,Pg]);var _g=Object(l.a)((function(g){j&&j(g),g.preventDefault();var I=Z(g,ag),e=Og({finger:I,values:Gg,source:xg}),t=e.newValue,C=e.activeIndex;S({sliderRef:fg,activeIndex:C,setActive:dg}),Rg(t),O&&O(g,t);var Q=Object(A.a)(fg.current);Q.addEventListener("mousemove",Kg),Q.addEventListener("mouseup",jg)})),qg=m(Sg?Gg[0]:T,T,Y),$g=m(Gg[Gg.length-1],T,Y)-qg,gI=Object(F.a)({},G[zg].offset(qg),G[zg].leap($g));return B.createElement(N,Object(F.a)({ref:Jg,className:Object(n.default)(V.root,V["color".concat(Object(r.a)(p))],h,X&&V.disabled,Lg.length>0&&Lg.some((function(g){return g.label}))&&V.marked,!1===Qg&&V.trackFalse,"vertical"===_&&V.vertical,"inverted"===Qg&&V.trackInverted),onMouseDown:_g},Ag),B.createElement("span",{className:V.rail}),B.createElement("span",{className:V.track,style:gI}),B.createElement("input",{value:Gg.join(","),name:z,type:"hidden"}),Lg.map((function(g,I){var e,t=m(g.value,T,Y),C=G[zg].offset(t);return e=!1===Qg?-1!==Gg.indexOf(g.value):"normal"===Qg&&(Sg?g.value>=Gg[0]&&g.value<=Gg[Gg.length-1]:g.value<=Gg[0])||"inverted"===Qg&&(Sg?g.value<=Gg[0]||g.value>=Gg[Gg.length-1]:g.value>=Gg[0]),B.createElement(B.Fragment,{key:g.value},B.createElement("span",{style:C,"data-index":I,className:Object(n.default)(V.mark,e&&V.markActive)}),null!=g.label?B.createElement("span",{"aria-hidden":!0,"data-index":I,style:C,className:Object(n.default)(V.markLabel,e&&V.markLabelActive)},g.label):null)})),Gg.map((function(g,I){var t=m(g,T,Y),C=G[zg].offset(t);return B.createElement(ng,{key:I,valueLabelFormat:cg,valueLabelDisplay:sg,className:V.valueLabel,value:"function"===typeof cg?cg($(g),I):cg,index:I,open:yg===I||og===I||"on"===sg,disabled:X},B.createElement(tg,{className:Object(n.default)(V.thumb,V["thumbColor".concat(Object(r.a)(p))],og===I&&V.active,X&&V.disabled,Ng===I&&V.focusVisible),tabIndex:X?null:0,role:"slider",style:C,"data-index":I,"aria-label":J?J(I):e,"aria-labelledby":U,"aria-orientation":_,"aria-valuemax":$(Y),"aria-valuemin":$(T),"aria-valuenow":$(g),"aria-valuetext":v?v($(g),I):i,onKeyDown:wg,onFocus:vg,onBlur:kg,onMouseOver:Hg,onMouseLeave:Mg}))})))}));I.a=Object(U.a)((function(g){return{root:{height:2,width:"100%",boxSizing:"content-box",padding:"13px 0",display:"inline-block",position:"relative",cursor:"pointer",touchAction:"none",color:g.palette.primary.main,WebkitTapHighlightColor:"transparent","&$disabled":{pointerEvents:"none",cursor:"default",color:g.palette.grey[400]},"&$vertical":{width:2,height:"100%",padding:"0 13px"},"@media (pointer: coarse)":{padding:"20px 0","&$vertical":{padding:"0 20px"}},"@media print":{colorAdjust:"exact"}},colorPrimary:{},colorSecondary:{color:g.palette.secondary.main},marked:{marginBottom:20,"&$vertical":{marginBottom:"auto",marginRight:20}},vertical:{},disabled:{},rail:{display:"block",position:"absolute",width:"100%",height:2,borderRadius:1,backgroundColor:"currentColor",opacity:.38,"$vertical &":{height:"100%",width:2}},track:{display:"block",position:"absolute",height:2,borderRadius:1,backgroundColor:"currentColor","$vertical &":{width:2}},trackFalse:{"& $track":{display:"none"}},trackInverted:{"& $track":{backgroundColor:"light"===g.palette.type?Object(i.i)(g.palette.primary.main,.62):Object(i.a)(g.palette.primary.main,.5)},"& $rail":{opacity:1}},thumb:{position:"absolute",width:12,height:12,marginLeft:-6,marginTop:-5,boxSizing:"border-box",borderRadius:"50%",outline:0,backgroundColor:"currentColor",display:"flex",alignItems:"center",justifyContent:"center",transition:g.transitions.create(["box-shadow"],{duration:g.transitions.duration.shortest}),"&::after":{position:"absolute",content:'""',borderRadius:"50%",left:-15,top:-15,right:-15,bottom:-15},"&$focusVisible,&:hover":{boxShadow:"0px 0px 0px 8px ".concat(Object(i.d)(g.palette.primary.main,.16)),"@media (hover: none)":{boxShadow:"none"}},"&$active":{boxShadow:"0px 0px 0px 14px ".concat(Object(i.d)(g.palette.primary.main,.16))},"&$disabled":{width:8,height:8,marginLeft:-4,marginTop:-3,"&:hover":{boxShadow:"none"}},"$vertical &":{marginLeft:-5,marginBottom:-6},"$vertical &$disabled":{marginLeft:-3,marginBottom:-4}},thumbColorPrimary:{},thumbColorSecondary:{"&$focusVisible,&:hover":{boxShadow:"0px 0px 0px 8px ".concat(Object(i.d)(g.palette.secondary.main,.16))},"&$active":{boxShadow:"0px 0px 0px 14px ".concat(Object(i.d)(g.palette.secondary.main,.16))}},active:{},focusVisible:{},valueLabel:{left:"calc(-50% - 4px)"},mark:{position:"absolute",width:2,height:2,borderRadius:1,backgroundColor:"currentColor"},markActive:{backgroundColor:g.palette.background.paper,opacity:.8},markLabel:Object(F.a)({},g.typography.body2,{color:g.palette.text.secondary,position:"absolute",top:26,transform:"translateX(-50%)",whiteSpace:"nowrap","$vertical &":{top:"auto",left:26,transform:"translateY(50%)"},"@media (pointer: coarse)":{top:40,"$vertical &":{left:31}}}),markLabelActive:{color:g.palette.text.primary}}}),{name:"MuiSlider"})(V)},function(g,I,e){"use strict";var t=e(5),C=e(16),Q=e(0),F=e.n(Q),B=(e(4),e(14)),n=e(77),U=e(21),s=e(434),i=e(49),c=e(30),A=e(166),l=Object(A.a)(F.a.createElement("path",{d:"M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z"}),"Star");function a(g,I){if(null==g)return g;var e=Math.round(g/I)*I;return Number(e.toFixed(function(g){var I=g.toString().split(".")[1];return I?I.length:0}(I)))}function r(g){g.value;var I=Object(C.a)(g,["value"]);return F.a.createElement("span",I)}var o=F.a.createElement(l,{fontSize:"inherit"});function d(g){return"".concat(g," Star").concat(1!==g?"s":"")}var u=F.a.forwardRef((function(g,I){var e=g.classes,Q=g.className,U=g.defaultValue,A=void 0===U?null:U,l=g.disabled,u=void 0!==l&&l,y=g.emptyIcon,b=g.emptyLabelText,Z=void 0===b?"Empty":b,m=g.getLabelText,x=void 0===m?d:m,R=g.icon,S=void 0===R?o:R,G=g.IconContainerComponent,L=void 0===G?r:G,V=g.max,h=void 0===V?5:V,D=g.name,p=g.onChange,E=g.onChangeActive,N=g.onMouseLeave,W=g.onMouseMove,f=g.precision,X=void 0===f?1:f,J=g.readOnly,v=void 0!==J&&J,k=g.size,H=void 0===k?"medium":k,M=g.value,Y=Object(C.a)(g,["classes","className","defaultValue","disabled","emptyIcon","emptyLabelText","getLabelText","icon","IconContainerComponent","max","name","onChange","onChangeActive","onMouseLeave","onMouseMove","precision","readOnly","size","value"]),w=F.a.useState(),T=w[0],z=w[1],O=D||T;F.a.useEffect((function(){z("mui-rating-".concat(Math.round(1e5*Math.random())))}),[]);var K=F.a.useRef(void 0!==M).current,j=F.a.useState(A),P=j[0],_=j[1];var q=a(K?M:P,X),$=Object(n.a)(),gg=F.a.useState({hover:-1,focus:-1}),Ig=gg[0],eg=Ig.hover,tg=Ig.focus,Cg=gg[1],Qg=q;-1!==eg&&(Qg=eg),-1!==tg&&(Qg=tg);var Fg=Object(s.a)(),Bg=Fg.isFocusVisible,ng=Fg.onBlurVisible,Ug=Fg.ref,sg=F.a.useState(!1),ig=sg[0],cg=sg[1],Ag=F.a.useRef(),lg=Object(i.a)(Ug,Ag),ag=Object(i.a)(lg,I),rg=function(g){var I=parseFloat(g.target.value);K||_(I),p&&p(g,I)},og=function(g){0===g.clientX&&0===g.clientY||(Cg({hover:-1,focus:-1}),K||_(null),p&&parseFloat(g.target.value)===q&&p(g,null))},dg=function(g){Bg(g)&&cg(!0);var I=parseFloat(g.target.value);Cg((function(g){return{hover:g.hover,focus:I}})),E&&tg!==I&&E(g,I)},ug=function(g){if(-1===eg){!1!==ig&&(cg(!1),ng());Cg((function(g){return{hover:g.hover,focus:-1}})),E&&-1!==tg&&E(g,-1)}},yg=function(g,I){var C="".concat(O,"-").concat(String(g.value).replace(".","-")),Q=F.a.createElement(L,{value:g.value,className:Object(B.default)(e.icon,g.filled?e.iconFilled:e.iconEmpty,g.hover&&e.iconHover,g.focus&&e.iconFocus,g.active&&e.iconActive)},y&&!g.filled?y:S);return v?F.a.createElement("span",Object(t.a)({key:g.value},I),Q):F.a.createElement(F.a.Fragment,{key:g.value},F.a.createElement("label",Object(t.a)({className:e.label,htmlFor:C},I),Q,F.a.createElement("span",{className:e.visuallyhidden},x(g.value))),F.a.createElement("input",{onFocus:dg,onBlur:ug,onChange:rg,onClick:og,disabled:u,value:g.value,id:C,type:"radio",name:O,checked:g.checked,className:e.visuallyhidden}))};return F.a.createElement("span",Object(t.a)({ref:ag,onMouseMove:function(g){W&&W(g);var I,e=Ag.current,t=e.getBoundingClientRect(),C=t.right,Q=t.left,F=e.firstChild.getBoundingClientRect().width;I="rtl"===$.direction?(C-g.clientX)/(F*h):(g.clientX-Q)/(F*h);var B=a(h*I+X/2,X);B=function(g,I,e){return g<I?I:g>e?e:g}(B,X,h),Cg((function(g){return g.hover===B&&g.focus===B?g:{hover:B,focus:B}})),cg(!1),E&&eg!==B&&E(g,B)},onMouseLeave:function(g){N&&N(g);Cg({hover:-1,focus:-1}),E&&-1!==eg&&E(g,-1)},className:Object(B.default)(e.root,Q,"medium"!==H&&e["size".concat(Object(c.a)(H))],u&&e.disabled,ig&&e.focusVisible,v&&e.readOnly),role:v?"img":null,"aria-label":v?x(Qg):null},Y),Array.from(new Array(h)).map((function(g,I){var t=I+1;if(X<1){var C=Array.from(new Array(1/X));return F.a.createElement("span",{key:t,className:Object(B.default)(e.decimal,t===Math.ceil(Qg)&&(-1!==eg||-1!==tg)&&e.iconActive)},C.map((function(g,I){var e=a(t-1+(I+1)*X,X);return yg({value:e,filled:e<=Qg,hover:e<=eg,focus:e<=tg,checked:e===q},{style:C.length-1===I?{}:{width:e===Qg?"".concat((I+1)*X*100,"%"):"0%",overflow:"hidden",zIndex:1,position:"absolute"}})})))}return yg({value:t,active:t===Qg&&(-1!==eg||-1!==tg),filled:t<=Qg,hover:t<=eg,focus:t<=tg,checked:t===q})})),!v&&!u&&null==q&&F.a.createElement(F.a.Fragment,null,F.a.createElement("input",{value:"",id:"".concat(O,"-empty"),type:"radio",name:O,defaultChecked:!0,className:e.visuallyhidden}),F.a.createElement("label",{className:e.pristine,htmlFor:"".concat(O,"-empty")},F.a.createElement("span",{className:e.visuallyhidden},Z))))}));I.a=Object(U.a)((function(g){return{root:{display:"inline-flex",position:"relative",fontSize:g.typography.pxToRem(24),color:"#ffb400",cursor:"pointer",WebkitTapHighlightColor:"transparent","&$disabled":{opacity:.5,pointerEvents:"none"},"&$focusVisible $iconActive":{outline:"1px solid #999"}},sizeSmall:{fontSize:g.typography.pxToRem(18)},sizeLarge:{fontSize:g.typography.pxToRem(30)},readOnly:{pointerEvents:"none"},disabled:{},focusVisible:{},visuallyhidden:{border:0,clip:"rect(0 0 0 0)",height:1,margin:-1,color:"#000",overflow:"hidden",padding:0,position:"absolute",top:20,width:1},pristine:{"input:focus + &":{top:0,bottom:0,position:"absolute",outline:"1px solid #999",width:"100%"}},label:{cursor:"inherit"},icon:{display:"flex",transition:g.transitions.create("transform",{duration:g.transitions.duration.shortest}),pointerEvents:"none"},iconEmpty:{color:g.palette.action.disabled},iconFilled:{},iconHover:{},iconFocus:{},iconActive:{transform:"scale(1.2)"},decimal:{position:"relative"}}}),{name:"MuiRating"})(u)},function(g,I,e){"use strict";e.d(I,"a",(function(){return B}));var t=e(100),C=e(1685),Q=e(311);var F=e(71),B=Object(C.c)((function(g,I){var e=g.url,C=Object(t.a)(g,["url"]);return{instance:new F.TileLayer(e,Object(Q.a)(C,I)),context:I}}),(function(g,I,e){var t=I.opacity,C=I.zIndex;null!=t&&t!==e.opacity&&g.setOpacity(t),null!=C&&C!==e.zIndex&&g.setZIndex(C)}))},function(g,I,e){"use strict";e.d(I,"a",(function(){return B}));var t=e(2),C=e(100),Q=e(1685);var F=e(71),B=Object(Q.b)((function(g,I){var e=g.center,Q=(g.children,Object(C.a)(g,["center","children"])),B=new F.Circle(e,Q);return{instance:B,context:Object(t.a)(Object(t.a)({},I),{},{overlayContainer:B})}}),(function(g,I,e){I.center!==e.center&&g.setLatLng(I.center),null!=I.radius&&I.radius!==e.radius&&g.setRadius(I.radius)}))}]]);
//# sourceMappingURL=2.9ab1863c.chunk.js.map